video_info 2.6.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (195) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/unit_test.yml +39 -0
  3. data/.gitignore +0 -1
  4. data/.rubocop.yml +242 -1
  5. data/CONTRIBUTING.md +11 -0
  6. data/Gemfile +1 -1
  7. data/Guardfile +2 -2
  8. data/README.md +29 -7
  9. data/lib/video_info.rb +25 -28
  10. data/lib/video_info/provider.rb +25 -12
  11. data/lib/video_info/providers/dailymotion.rb +19 -3
  12. data/lib/video_info/providers/vimeo.rb +3 -3
  13. data/lib/video_info/providers/vimeo_api.rb +20 -11
  14. data/lib/video_info/providers/vimeo_scraper.rb +93 -23
  15. data/lib/video_info/providers/wistia.rb +2 -1
  16. data/lib/video_info/providers/youtube.rb +16 -2
  17. data/lib/video_info/providers/youtube_api.rb +42 -8
  18. data/lib/video_info/providers/youtube_scraper.rb +64 -31
  19. data/lib/video_info/providers/youtubeplaylist.rb +5 -2
  20. data/lib/video_info/providers/youtubeplaylist_api.rb +22 -1
  21. data/lib/video_info/providers/youtubeplaylist_scraper.rb +16 -3
  22. data/lib/video_info/version.rb +1 -1
  23. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/_available_/with_invalid_video_url/_available_/1_2_2_1_1.yml +82 -0
  24. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/_available_/with_valid_video/_available_/1_2_1_1_1.yml +87 -0
  25. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_author/1_3_7_1.yml +91 -0
  26. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_author_thumbnail/1_3_9_1.yml +91 -0
  27. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_author_url/1_3_8_1.yml +91 -0
  28. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_date/should_show_correct_date.yml +91 -0
  29. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_description/1_3_10_1.yml +91 -0
  30. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_duration/1_3_12_1.yml +91 -0
  31. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_keywords/1_3_11_1.yml +91 -0
  32. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_thumbnail/1_3_21_1.yml +91 -0
  33. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_thumbnail_large/1_3_18_1.yml +91 -0
  34. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_thumbnail_medium/1_3_17_1.yml +91 -0
  35. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_thumbnail_small/1_3_16_1.yml +91 -0
  36. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_title/1_3_6_1.yml +91 -0
  37. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_view_count/1_3_22_1.yml +91 -0
  38. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_password_required_video/_available_/1_2_3_1_1.yml +151 -0
  39. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_password_required_video/_available_/2_2_3_1_1.yml +68 -0
  40. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_this_video_does_not_exist_video/_available_/1_2_2_1_1.yml +127 -0
  41. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_this_video_does_not_exist_video/_available_/2_2_2_1_1.yml +70 -0
  42. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_valid_video/_available_/1_2_1_1_1.yml +158 -0
  43. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_valid_video/_available_/2_2_1_1_1.yml +68 -0
  44. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/author/1_13_2_1.yml +130 -0
  45. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/author_thumbnail/1_13_3_1.yml +130 -0
  46. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/author_url/1_13_4_1.yml +132 -0
  47. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/available_/1_13_1_1.yml +130 -0
  48. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/date/1_13_7_1.yml +128 -0
  49. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/description/1_13_6_1.yml +131 -0
  50. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/duration/1_13_8_1.yml +130 -0
  51. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/height/1_13_10_1.yml +131 -0
  52. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/keywords/1_13_9_1.yml +128 -0
  53. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/thumbnail_large/1_13_14_1.yml +129 -0
  54. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/thumbnail_medium/1_13_13_1.yml +129 -0
  55. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/thumbnail_small/1_13_12_1.yml +129 -0
  56. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/title/1_13_5_1.yml +130 -0
  57. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/view_count/1_13_15_1.yml +129 -0
  58. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/width/1_13_11_1.yml +129 -0
  59. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author/1_3_20_1.yml +158 -0
  60. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author/2_3_20_1.yml +80 -0
  61. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author_thumbnail/1_3_19_1.yml +158 -0
  62. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author_thumbnail/2_3_19_1.yml +85 -0
  63. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author_url/1_3_21_1.yml +159 -0
  64. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author_url/2_3_21_1.yml +80 -0
  65. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_date/should_have_correct_upload_date.yml +240 -0
  66. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_description/1_3_7_1.yml +160 -0
  67. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_description/2_3_7_1.yml +80 -0
  68. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_duration/1_3_9_1.yml +158 -0
  69. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_duration/2_3_9_1.yml +85 -0
  70. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_height/1_3_11_1.yml +158 -0
  71. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_height/2_3_11_1.yml +80 -0
  72. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_keywords/should_return_a_string_list_of_keywords.yml +240 -0
  73. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail/1_3_18_1.yml +236 -0
  74. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail/2_3_18_1.yml +82 -0
  75. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_large/1_3_15_1.yml +236 -0
  76. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_large/2_3_15_1.yml +82 -0
  77. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_medium/1_3_14_1.yml +235 -0
  78. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_medium/2_3_14_1.yml +84 -0
  79. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_small/1_3_13_1.yml +236 -0
  80. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_small/2_3_13_1.yml +84 -0
  81. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_title/1_3_6_1.yml +159 -0
  82. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_title/2_3_6_1.yml +85 -0
  83. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_view_count/1_3_22_1.yml +158 -0
  84. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_view_count/2_3_22_1.yml +84 -0
  85. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_width/1_3_10_1.yml +156 -0
  86. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_width/2_3_10_1.yml +82 -0
  87. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail/1_12_1_1.yml +234 -0
  88. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail/2_12_1_1.yml +78 -0
  89. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail_large/1_12_2_1.yml +233 -0
  90. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail_large/2_12_2_1.yml +78 -0
  91. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail_medium/1_12_3_1.yml +235 -0
  92. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail_medium/2_12_3_1.yml +73 -0
  93. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail_small/1_12_4_1.yml +234 -0
  94. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail_small/2_12_4_1.yml +77 -0
  95. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/_available_/with_invalid_video/_available_/1_2_2_1_1.yml +75 -0
  96. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/_available_/with_valid_video/_available_/1_2_1_1_1.yml +79 -0
  97. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_duration/1_4_7_1.yml +85 -0
  98. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_height/1_4_9_1.yml +85 -0
  99. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_thumbnail_large/1_4_12_1.yml +86 -0
  100. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_thumbnail_medium/1_4_11_1.yml +86 -0
  101. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_thumbnail_small/1_4_10_1.yml +85 -0
  102. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_title/1_4_6_1.yml +86 -0
  103. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_width/1_4_8_1.yml +86 -0
  104. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_duration/1_3_7_1.yml +85 -0
  105. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_height/1_3_9_1.yml +87 -0
  106. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_thumbnail/1_3_15_1.yml +87 -0
  107. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_thumbnail_large/1_3_12_1.yml +87 -0
  108. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_thumbnail_medium/1_3_11_1.yml +87 -0
  109. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_thumbnail_small/1_3_10_1.yml +85 -0
  110. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_title/1_3_6_1.yml +85 -0
  111. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_width/1_3_8_1.yml +87 -0
  112. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_available_/1_2_2_1_1.yml +59 -0
  113. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_available_/2_2_2_1_1.yml +114 -0
  114. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_date/1_2_2_11_1.yml +59 -0
  115. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_date/2_2_2_11_1.yml +114 -0
  116. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_description/1_2_2_8_1.yml +59 -0
  117. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_description/2_2_2_8_1.yml +114 -0
  118. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_duration/1_2_2_10_1.yml +59 -0
  119. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_duration/2_2_2_10_1.yml +114 -0
  120. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_keywords/1_2_2_9_1.yml +59 -0
  121. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_keywords/2_2_2_9_1.yml +114 -0
  122. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_title/1_2_2_7_1.yml +59 -0
  123. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_title/2_2_2_7_1.yml +114 -0
  124. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_view_count/1_2_2_18_1.yml +59 -0
  125. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_view_count/2_2_2_18_1.yml +114 -0
  126. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_valid_video/_available_/1_2_1_1_1.yml +59 -0
  127. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_valid_video/_available_/2_2_1_1_1.yml +187 -0
  128. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_video_removed_because_of_copyright_claim/_available_/1_2_3_1_1.yml +59 -0
  129. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_video_removed_because_of_copyright_claim/_available_/2_2_3_1_1.yml +114 -0
  130. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_a_video_without_description/_description/1_1_1_1.yml +59 -0
  131. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_date/should_return_date_video_was_posted.yml +249 -0
  132. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_description/1_17_7_1.yml +59 -0
  133. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_description/2_17_7_1.yml +187 -0
  134. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_duration/1_17_9_1.yml +59 -0
  135. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_duration/2_17_9_1.yml +187 -0
  136. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_keywords/1_17_8_1.yml +59 -0
  137. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_keywords/2_17_8_1.yml +187 -0
  138. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_title/1_17_6_1.yml +59 -0
  139. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_title/2_17_6_1.yml +187 -0
  140. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_view_count/1_17_17_1.yml +59 -0
  141. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_view_count/2_17_17_1.yml +187 -0
  142. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author/1_3_6_1.yml +115 -0
  143. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author/2_3_6_1.yml +187 -0
  144. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author_thumbnail/1_3_7_1.yml +115 -0
  145. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author_thumbnail/2_3_7_1.yml +335 -0
  146. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author_url/1_3_8_1.yml +59 -0
  147. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author_url/2_3_8_1.yml +335 -0
  148. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author_url/can_be_called_twice_and_receive_the_same_value.yml +391 -0
  149. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_date/should_return_date_video_was_posted.yml +243 -0
  150. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_description/1_3_10_1.yml +60 -0
  151. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_description/2_3_10_1.yml +187 -0
  152. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_duration/1_3_12_1.yml +59 -0
  153. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_duration/2_3_12_1.yml +187 -0
  154. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_keywords/1_3_11_1.yml +59 -0
  155. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_keywords/2_3_11_1.yml +187 -0
  156. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_title/1_3_9_1.yml +59 -0
  157. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_title/2_3_9_1.yml +187 -0
  158. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_view_count/1_3_21_1.yml +59 -0
  159. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_view_count/2_3_21_1.yml +187 -0
  160. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/_available_/with_invalid_playlist/_available_/1_2_2_1_1.yml +120 -0
  161. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/_available_/with_list_url/_available_/1_2_3_1_1.yml +154 -0
  162. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/_available_/with_valid_playlist/_available_/1_2_1_1_1.yml +154 -0
  163. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author/1_3_21_1.yml +165 -0
  164. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author_thumbnail/1_3_22_1.yml +274 -0
  165. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author_url/1_3_23_1.yml +274 -0
  166. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_description/1_3_7_1.yml +165 -0
  167. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_keywords/1_3_8_1.yml +165 -0
  168. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail/1_3_18_1.yml +165 -0
  169. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_large/1_3_15_1.yml +165 -0
  170. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_large_2x/1_3_16_1.yml +165 -0
  171. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_maxres/1_3_17_1.yml +165 -0
  172. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_medium/1_3_14_1.yml +165 -0
  173. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_small/1_3_13_1.yml +165 -0
  174. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_title/1_3_6_1.yml +165 -0
  175. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_videos/returns_list_of_videos_in_playlist.yml +112 -0
  176. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_that_does_not_exist_in_embed_path/_videos/1_4_2_1.yml +114 -0
  177. data/spec/lib/video_info/provider_spec.rb +42 -22
  178. data/spec/lib/video_info/providers/dailymotion_spec.rb +75 -27
  179. data/spec/lib/video_info/providers/vimeo_spec.rb +270 -174
  180. data/spec/lib/video_info/providers/wistia_spec.rb +59 -20
  181. data/spec/lib/video_info/providers/youtube_playlist_spec.rb +97 -41
  182. data/spec/lib/video_info/providers/youtube_scraper_spec.rb +14 -0
  183. data/spec/lib/video_info/providers/youtube_spec.rb +441 -384
  184. data/spec/lib/video_info_spec.rb +27 -25
  185. data/spec/spec_helper.rb +6 -1
  186. data/tmp/rspec_guard_result +25 -0
  187. data/video_info.gemspec +11 -14
  188. metadata +358 -100
  189. data/.travis.yml +0 -13
  190. data/foo.txt +0 -33
  191. data/lib/video_info/providers/vkontakte.rb +0 -170
  192. data/spec/lib/video_info/providers/vimeo_api_spec.rb +0 -242
  193. data/spec/lib/video_info/providers/vkontakte_spec.rb +0 -173
  194. data/spec/lib/video_info/providers/youtube_api_spec.rb +0 -476
  195. data/spec/lib/video_info/providers/youtube_playlist_api_spec.rb +0 -187
@@ -0,0 +1,127 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: head
5
+ uri: https://vimeo.com/59312311
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - VideoInfo/2.8.0
12
+ Accept:
13
+ - "*/*"
14
+ response:
15
+ status:
16
+ code: 451
17
+ message: Unavailable For Legal Reasons
18
+ headers:
19
+ Connection:
20
+ - keep-alive
21
+ Content-Length:
22
+ - '149725'
23
+ Server:
24
+ - nginx
25
+ Content-Type:
26
+ - text/html; charset=UTF-8
27
+ Expires:
28
+ - Tue, 27 Oct 2020 06:22:02 GMT
29
+ X-Frame-Options:
30
+ - sameorigin
31
+ X-Bapp-Server:
32
+ - pweb-v4875-q7wg5
33
+ Accept-Ranges:
34
+ - bytes
35
+ - bytes
36
+ Age:
37
+ - '0'
38
+ Via:
39
+ - 1.1 varnish
40
+ - 1.1 varnish, 1.1 varnish
41
+ Cache-Control:
42
+ - no-store, no-cache, must-revalidate, post-check=0, pre-check=0
43
+ X-Varnish-Cache:
44
+ - '0'
45
+ X-Vserver:
46
+ - infra-webproxy-a-12
47
+ X-Vimeo-Dc:
48
+ - ge
49
+ Date:
50
+ - Tue, 27 Oct 2020 18:22:02 GMT
51
+ X-Served-By:
52
+ - cache-bwi5144-BWI, cache-cwb20527-CWB
53
+ X-Cache:
54
+ - MISS, MISS
55
+ X-Cache-Hits:
56
+ - 0, 0
57
+ X-Timer:
58
+ - S1603822922.041668,VS0,VE385
59
+ body:
60
+ encoding: UTF-8
61
+ string: ''
62
+ http_version:
63
+ recorded_at: Tue, 27 Oct 2020 18:22:02 GMT
64
+ - request:
65
+ method: get
66
+ uri: https://vimeo.com/59312311
67
+ body:
68
+ encoding: US-ASCII
69
+ string: ''
70
+ headers:
71
+ Accept-Encoding:
72
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
73
+ Accept:
74
+ - "*/*"
75
+ User-Agent:
76
+ - Ruby
77
+ response:
78
+ status:
79
+ code: 451
80
+ message: Unavailable For Legal Reasons
81
+ headers:
82
+ Connection:
83
+ - keep-alive
84
+ Content-Length:
85
+ - '149670'
86
+ Server:
87
+ - nginx
88
+ Content-Type:
89
+ - text/html; charset=UTF-8
90
+ Expires:
91
+ - Tue, 27 Oct 2020 06:22:02 GMT
92
+ X-Frame-Options:
93
+ - sameorigin
94
+ X-Bapp-Server:
95
+ - pweb-v4875-xkcw5
96
+ Accept-Ranges:
97
+ - bytes
98
+ - bytes
99
+ Age:
100
+ - '0'
101
+ Via:
102
+ - 1.1 varnish, 1.1 varnish, 1.1 varnish
103
+ Cache-Control:
104
+ - no-store, no-cache, must-revalidate, post-check=0, pre-check=0
105
+ X-Varnish-Cache:
106
+ - '0'
107
+ X-Vserver:
108
+ - infra-webproxy-a-12
109
+ X-Vimeo-Dc:
110
+ - ge
111
+ Date:
112
+ - Tue, 27 Oct 2020 18:22:02 GMT
113
+ X-Served-By:
114
+ - cache-bwi5126-BWI, cache-cwb20521-CWB
115
+ X-Cache:
116
+ - MISS, MISS
117
+ X-Cache-Hits:
118
+ - 0, 0
119
+ X-Timer:
120
+ - S1603822923.679992,VS0,VE234
121
+ body:
122
+ encoding: ASCII-8BIT
123
+ string: !binary |-
124
+ PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICAgIDxoZWFkPgogICAgICAgIAo8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CjxtZXRhIHByb3BlcnR5PSJmYjphcHBfaWQiIGNvbnRlbnQ9IjE5ODg0MDI4OTYzIj4KPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPgo8bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Ii8vcGxheWVyLnZpbWVvLmNvbSI+CjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iLy9pLnZpbWVvY2RuLmNvbSI+CjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iLy9mLnZpbWVvY2RuLmNvbSI+CjxsaW5rIHJlbD0ic2VhcmNoIiB0eXBlPSJhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sIiBocmVmPSIvc2VhcmNoL29wZW5zZWFyY2gueG1sIiB0aXRsZT0iVmltZW8iPgo8bGluayByZWw9ImxvZ28iIHR5cGU9ImltYWdlL3N2ZyIgaHJlZj0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9sb2dvLnN2ZyI+CgoKICAgICAgICAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCxpbml0aWFsLXNjYWxlPTEuMCxtYXhpbXVtLXNjYWxlPTUuMCx1c2VyLXNjYWxhYmxlPXllcyI+CiAgICAKCiAgICAgICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IlNvcnJ5LCB0aGlzIHZpZGVvIGlzIHVuYXZhaWxhYmxlIj4KICAgICAgICA8bWV0YSBuYW1lPSJyb2JvdHMiIGNvbnRlbnQ9Im5vaW5kZXgiPgoKCgoKICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbi1wcmVjb21wb3NlZCIgaHJlZj0iaHR0cHM6Ly9pLnZpbWVvY2RuLmNvbS9mYXZpY29uL21haW4tdG91Y2hfMTgwIj4KCjxsaW5rIHJlbD0ibWFzay1pY29uIiBocmVmPSJodHRwczovL2YudmltZW9jZG4uY29tL3N2Zy9sZWdhY3lfdmlld19zdXBwb3J0L2lyaXNfaWNvbl92XzY0LnN2Zz9lMTAxM2RlYjZlODQ0NzBjNzVkMDc1Zjg2ZGIzY2Q0ZDk0ZDIxODE2IiBjb2xvcj0iIzE3MjcyZSI+CgogICAgPGxpbmsgcmVsPSJzaG9ydGN1dCBpY29uIiBocmVmPSJodHRwczovL2YudmltZW9jZG4uY29tL2ltYWdlc192Ni9mYXZpY29uLmljbz9lMTAxM2RlYjZlODQ0NzBjNzVkMDc1Zjg2ZGIzY2Q0ZDk0ZDIxODE2IiBkYXRhLXBsYXk9Imh0dHBzOi8vaS52aW1lb2Nkbi5jb20vZmF2aWNvbi9wbGF5XzMyIiBkYXRhLXBhdXNlPSJodHRwczovL2kudmltZW9jZG4uY29tL2Zhdmljb24vcGF1c2VfMzIiPgoKPG1ldGEgbmFtZT0ibXNhcHBsaWNhdGlvbi1UaWxlSW1hZ2UiIGNvbnRlbnQ9Imh0dHBzOi8vaS52aW1lb2Nkbi5jb20vZmF2aWNvbi9tYWluLXRvdWNoXzE0NCI+CjxtZXRhIG5hbWU9Im1zYXBwbGljYXRpb24tVGlsZUNvbG9yIiBjb250ZW50PSIjMDBhZGVmIj4KICAgICAgICA8dGl0bGU+VmltZVVoT2g8L3RpdGxlPgogICAgICAgIDxzY3JpcHQ+CiAgICAgICAgICAgIC8vIEZpcnN0IElucHV0IERlbGF5IHRyYWNraW5nLiBIaWdoIHByaW9yaXR5IGxvYWRpbmcgdG8gbm90IG1pc3MgZXZlbnQKICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL0dvb2dsZUNocm9tZUxhYnMvZmlyc3QtaW5wdXQtZGVsYXkvYmxvYi9tYXN0ZXIvZGlzdC9maXJzdC1pbnB1dC1kZWxheS5taW4uanMKICAgICAgICAgICAgIWZ1bmN0aW9uKG4sZSl7dmFyIHQsbyxpLGM9W10sZj17cGFzc2l2ZTohMCxjYXB0dXJlOiEwfSxyPW5ldyBEYXRlLGE9InBvaW50ZXJ1cCIsdT0icG9pbnRlcmNhbmNlbCI7ZnVuY3Rpb24gcChuLGMpe3R8fCh0PWMsbz1uLGk9bmV3IERhdGUsdyhlKSxzKCkpfWZ1bmN0aW9uIHMoKXtvPj0wJiZvPGktciYmKGMuZm9yRWFjaChmdW5jdGlvbihuKXtuKG8sdCl9KSxjPVtdKX1mdW5jdGlvbiBsKHQpe2lmKHQuY2FuY2VsYWJsZSl7dmFyIG89KHQudGltZVN0YW1wPjFlMTI/bmV3IERhdGU6cGVyZm9ybWFuY2Uubm93KCkpLXQudGltZVN0YW1wOyJwb2ludGVyZG93biI9PXQudHlwZT9mdW5jdGlvbih0LG8pe2Z1bmN0aW9uIGkoKXtwKHQsbykscigpfWZ1bmN0aW9uIGMoKXtyKCl9ZnVuY3Rpb24gcigpe2UoYSxpLGYpLGUodSxjLGYpfW4oYSxpLGYpLG4odSxjLGYpfShvLHQpOnAobyx0KX19ZnVuY3Rpb24gdyhuKXtbImNsaWNrIiwibW91c2Vkb3duIiwia2V5ZG93biIsInRvdWNoc3RhcnQiLCJwb2ludGVyZG93biJdLmZvckVhY2goZnVuY3Rpb24oZSl7bihlLGwsZil9KX13KG4pLHNlbGYucGVyZk1ldHJpY3M9c2VsZi5wZXJmTWV0cmljc3x8e30sc2VsZi5wZXJmTWV0cmljcy5vbkZpcnN0SW5wdXREZWxheT1mdW5jdGlvbihuKXtjLnB1c2gobikscygpfX0oYWRkRXZlbnRMaXN0ZW5lcixyZW1vdmVFdmVudExpc3RlbmVyKTsKICAgICAgICA8L3NjcmlwdD4KICAgICAgICA8c2NyaXB0PgogICAgICAgICAgLy8gQ3JlYXRlIFBlcmZvcm1hbmNlT2JzZXJ2ZXIgZm9yIHRyYWNraW5nIFRUSQogICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL0dvb2dsZUNocm9tZUxhYnMvdHRpLXBvbHlmaWxsCiAgICAgICAgICAhZnVuY3Rpb24oKXtpZignUGVyZm9ybWFuY2VMb25nVGFza1RpbWluZycgaW4gd2luZG93KXt2YXIgZz13aW5kb3cuX190dGk9e2U6W119OwogICAgICAgICAgZy5vPW5ldyBQZXJmb3JtYW5jZU9ic2VydmVyKGZ1bmN0aW9uKGwpe2cuZT1nLmUuY29uY2F0KGwuZ2V0RW50cmllcygpKX0pOwogICAgICAgICAgZy5vLm9ic2VydmUoe2VudHJ5VHlwZXM6Wydsb25ndGFzayddfSl9fSgpOwogICAgICAgIDwvc2NyaXB0PgogICAgICAgIDxzY3JpcHQ+CiAgICAgICAgICAvLyBOZXcgUmVsaWMgQWdlbnQKICAgICAgICAgIDt3aW5kb3cuTlJFVU18fChOUkVVTT17fSk7TlJFVU0uaW5pdD17ZGlzdHJpYnV0ZWRfdHJhY2luZzp7ZW5hYmxlZDp0cnVlfSxwcml2YWN5Ontjb29raWVzX2VuYWJsZWQ6dHJ1ZX19OwogICAgICAgICAgd2luZG93Lk5SRVVNfHwoTlJFVU09e30pLF9fbnJfcmVxdWlyZT1mdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcihuKXtpZighZVtuXSl7dmFyIG89ZVtuXT17ZXhwb3J0czp7fX07dFtuXVswXS5jYWxsKG8uZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbz10W25dWzFdW2VdO3JldHVybiByKG98fGUpfSxvLG8uZXhwb3J0cyl9cmV0dXJuIGVbbl0uZXhwb3J0c31pZigiZnVuY3Rpb24iPT10eXBlb2YgX19ucl9yZXF1aXJlKXJldHVybiBfX25yX3JlcXVpcmU7Zm9yKHZhciBvPTA7bzxuLmxlbmd0aDtvKyspcihuW29dKTtyZXR1cm4gcn0oezE6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQpe3RyeXtzLmNvbnNvbGUmJmNvbnNvbGUubG9nKHQpfWNhdGNoKGUpe319dmFyIG8saT10KCJlZSIpLGE9dCgyNSkscz17fTt0cnl7bz1sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgiX19ucl9mbGFncyIpLnNwbGl0KCIsIiksY29uc29sZSYmImZ1bmN0aW9uIj09dHlwZW9mIGNvbnNvbGUubG9nJiYocy5jb25zb2xlPSEwLG8uaW5kZXhPZigiZGV2IikhPT0tMSYmKHMuZGV2PSEwKSxvLmluZGV4T2YoIm5yX2RldiIpIT09LTEmJihzLm5yRGV2PSEwKSl9Y2F0Y2goYyl7fXMubnJEZXYmJmkub24oImludGVybmFsLWVycm9yIixmdW5jdGlvbih0KXtyKHQuc3RhY2spfSkscy5kZXYmJmkub24oImZuLWVyciIsZnVuY3Rpb24odCxlLG4pe3Iobi5zdGFjayl9KSxzLmRldiYmKHIoIk5SIEFHRU5UIElOIERFVkVMT1BNRU5UIE1PREUiKSxyKCJmbGFnczogIithKHMsZnVuY3Rpb24odCxlKXtyZXR1cm4gdH0pLmpvaW4oIiwgIikpKX0se31dLDI6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQsZSxuLHIscyl7dHJ5e2w/bC09MTpvKHN8fG5ldyBVbmNhdWdodEV4Y2VwdGlvbih0LGUsbiksITApfWNhdGNoKGYpe3RyeXtpKCJpZXJyIixbZixjLm5vdygpLCEwXSl9Y2F0Y2goZCl7fX1yZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdSYmdS5hcHBseSh0aGlzLGEoYXJndW1lbnRzKSl9ZnVuY3Rpb24gVW5jYXVnaHRFeGNlcHRpb24odCxlLG4pe3RoaXMubWVzc2FnZT10fHwiVW5jYXVnaHQgZXJyb3Igd2l0aCBubyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIix0aGlzLnNvdXJjZVVSTD1lLHRoaXMubGluZT1ufWZ1bmN0aW9uIG8odCxlKXt2YXIgbj1lP251bGw6Yy5ub3coKTtpKCJlcnIiLFt0LG5dKX12YXIgaT10KCJoYW5kbGUiKSxhPXQoMjYpLHM9dCgiZWUiKSxjPXQoImxvYWRlciIpLGY9dCgiZ29zIiksdT13aW5kb3cub25lcnJvcixkPSExLHA9Im5yQHNlZW5FcnJvciIsbD0wO2MuZmVhdHVyZXMuZXJyPSEwLHQoMSksd2luZG93Lm9uZXJyb3I9cjt0cnl7dGhyb3cgbmV3IEVycm9yfWNhdGNoKGgpeyJzdGFjayJpbiBoJiYodCgxMyksdCgxMiksImFkZEV2ZW50TGlzdGVuZXIiaW4gd2luZG93JiZ0KDYpLGMueGhyV3JhcHBhYmxlJiZ0KDE0KSxkPSEwKX1zLm9uKCJmbi1zdGFydCIsZnVuY3Rpb24odCxlLG4pe2QmJihsKz0xKX0pLHMub24oImZuLWVyciIsZnVuY3Rpb24odCxlLG4pe2QmJiFuW3BdJiYoZihuLHAsZnVuY3Rpb24oKXtyZXR1cm4hMH0pLHRoaXMudGhyb3duPSEwLG8obikpfSkscy5vbigiZm4tZW5kIixmdW5jdGlvbigpe2QmJiF0aGlzLnRocm93biYmbD4wJiYobC09MSl9KSxzLm9uKCJpbnRlcm5hbC1lcnJvciIsZnVuY3Rpb24odCl7aSgiaWVyciIsW3QsYy5ub3coKSwhMF0pfSl9LHt9XSwzOltmdW5jdGlvbih0LGUsbil7dCgibG9hZGVyIikuZmVhdHVyZXMuaW5zPSEwfSx7fV0sNDpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIoKXtMKyssQz1nLmhhc2gsdGhpc1t1XT15Lm5vdygpfWZ1bmN0aW9uIG8oKXtMLS0sZy5oYXNoIT09QyYmaSgwLCEwKTt2YXIgdD15Lm5vdygpO3RoaXNbaF09fn50aGlzW2hdK3QtdGhpc1t1XSx0aGlzW2RdPXR9ZnVuY3Rpb24gaSh0LGUpe0UuZW1pdCgibmV3VVJMIixbIiIrZyxlXSl9ZnVuY3Rpb24gYSh0LGUpe3Qub24oZSxmdW5jdGlvbigpe3RoaXNbZV09eS5ub3coKX0pfXZhciBzPSItc3RhcnQiLGM9Ii1lbmQiLGY9Ii1ib2R5Iix1PSJmbiIrcyxkPSJmbiIrYyxwPSJjYiIrcyxsPSJjYiIrYyxoPSJqc1RpbWUiLG09ImZldGNoIix2PSJhZGRFdmVudExpc3RlbmVyIix3PXdpbmRvdyxnPXcubG9jYXRpb24seT10KCJsb2FkZXIiKTtpZih3W3ZdJiZ5LnhocldyYXBwYWJsZSl7dmFyIHg9dCgxMCksYj10KDExKSxFPXQoOCksTz10KDYpLFI9dCgxMyksUD10KDcpLFQ9dCgxNCksTj10KDkpLE09dCgiZWUiKSxTPU0uZ2V0KCJ0cmFjZXIiKTt0KDE2KSx5LmZlYXR1cmVzLnNwYT0hMDt2YXIgQyxMPTA7TS5vbih1LHIpLE0ub24ocCxyKSxNLm9uKGQsbyksTS5vbihsLG8pLE0uYnVmZmVyKFt1LGQsInhoci1kb25lIiwieGhyLXJlc29sdmVkIl0pLE8uYnVmZmVyKFt1XSksUi5idWZmZXIoWyJzZXRUaW1lb3V0IitjLCJjbGVhclRpbWVvdXQiK3MsdV0pLFQuYnVmZmVyKFt1LCJuZXcteGhyIiwic2VuZC14aHIiK3NdKSxQLmJ1ZmZlcihbbStzLG0rIi1kb25lIixtK2YrcyxtK2YrY10pLEUuYnVmZmVyKFsibmV3VVJMIl0pLHguYnVmZmVyKFt1XSksYi5idWZmZXIoWyJwcm9wYWdhdGUiLHAsbCwiZXhlY3V0b3ItZXJyIiwicmVzb2x2ZSIrc10pLFMuYnVmZmVyKFt1LCJuby0iK3VdKSxOLmJ1ZmZlcihbIm5ldy1qc29ucCIsImNiLXN0YXJ0IiwianNvbnAtZXJyb3IiLCJqc29ucC1lbmQiXSksYShULCJzZW5kLXhociIrcyksYShNLCJ4aHItcmVzb2x2ZWQiKSxhKE0sInhoci1kb25lIiksYShQLG0rcyksYShQLG0rIi1kb25lIiksYShOLCJuZXctanNvbnAiKSxhKE4sImpzb25wLWVuZCIpLGEoTiwiY2Itc3RhcnQiKSxFLm9uKCJwdXNoU3RhdGUtZW5kIixpKSxFLm9uKCJyZXBsYWNlU3RhdGUtZW5kIixpKSx3W3ZdKCJoYXNoY2hhbmdlIixpLCEwKSx3W3ZdKCJsb2FkIixpLCEwKSx3W3ZdKCJwb3BzdGF0ZSIsZnVuY3Rpb24oKXtpKDAsTD4xKX0sITApfX0se31dLDU6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQpe31pZih3aW5kb3cucGVyZm9ybWFuY2UmJndpbmRvdy5wZXJmb3JtYW5jZS50aW1pbmcmJndpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKXt2YXIgbz10KCJlZSIpLGk9dCgiaGFuZGxlIiksYT10KDEzKSxzPXQoMTIpLGM9ImxlYXJSZXNvdXJjZVRpbWluZ3MiLGY9ImFkZEV2ZW50TGlzdGVuZXIiLHU9InJlc291cmNldGltaW5nYnVmZmVyZnVsbCIsZD0iYnN0UmVzb3VyY2UiLHA9InJlc291cmNlIixsPSItc3RhcnQiLGg9Ii1lbmQiLG09ImZuIitsLHY9ImZuIitoLHc9ImJzdFRpbWVyIixnPSJwdXNoU3RhdGUiLHk9dCgibG9hZGVyIik7eS5mZWF0dXJlcy5zdG49ITAsdCg4KSwiYWRkRXZlbnRMaXN0ZW5lciJpbiB3aW5kb3cmJnQoNik7dmFyIHg9TlJFVU0uby5FVjtvLm9uKG0sZnVuY3Rpb24odCxlKXt2YXIgbj10WzBdO24gaW5zdGFuY2VvZiB4JiYodGhpcy5ic3RTdGFydD15Lm5vdygpKX0pLG8ub24odixmdW5jdGlvbih0LGUpe3ZhciBuPXRbMF07biBpbnN0YW5jZW9mIHgmJmkoImJzdCIsW24sZSx0aGlzLmJzdFN0YXJ0LHkubm93KCldKX0pLGEub24obSxmdW5jdGlvbih0LGUsbil7dGhpcy5ic3RTdGFydD15Lm5vdygpLHRoaXMuYnN0VHlwZT1ufSksYS5vbih2LGZ1bmN0aW9uKHQsZSl7aSh3LFtlLHRoaXMuYnN0U3RhcnQseS5ub3coKSx0aGlzLmJzdFR5cGVdKX0pLHMub24obSxmdW5jdGlvbigpe3RoaXMuYnN0U3RhcnQ9eS5ub3coKX0pLHMub24odixmdW5jdGlvbih0LGUpe2kodyxbZSx0aGlzLmJzdFN0YXJ0LHkubm93KCksInJlcXVlc3RBbmltYXRpb25GcmFtZSJdKX0pLG8ub24oZytsLGZ1bmN0aW9uKHQpe3RoaXMudGltZT15Lm5vdygpLHRoaXMuc3RhcnRQYXRoPWxvY2F0aW9uLnBhdGhuYW1lK2xvY2F0aW9uLmhhc2h9KSxvLm9uKGcraCxmdW5jdGlvbih0KXtpKCJic3RIaXN0IixbbG9jYXRpb24ucGF0aG5hbWUrbG9jYXRpb24uaGFzaCx0aGlzLnN0YXJ0UGF0aCx0aGlzLnRpbWVdKX0pLGYgaW4gd2luZG93LnBlcmZvcm1hbmNlJiYod2luZG93LnBlcmZvcm1hbmNlWyJjIitjXT93aW5kb3cucGVyZm9ybWFuY2VbZl0odSxmdW5jdGlvbih0KXtpKGQsW3dpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKHApXSksd2luZG93LnBlcmZvcm1hbmNlWyJjIitjXSgpfSwhMSk6d2luZG93LnBlcmZvcm1hbmNlW2ZdKCJ3ZWJraXQiK3UsZnVuY3Rpb24odCl7aShkLFt3aW5kb3cucGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZShwKV0pLHdpbmRvdy5wZXJmb3JtYW5jZVsid2Via2l0QyIrY10oKX0sITEpKSxkb2N1bWVudFtmXSgic2Nyb2xsIixyLHtwYXNzaXZlOiEwfSksZG9jdW1lbnRbZl0oImtleXByZXNzIixyLCExKSxkb2N1bWVudFtmXSgiY2xpY2siLHIsITEpfX0se31dLDY6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQpe2Zvcih2YXIgZT10O2UmJiFlLmhhc093blByb3BlcnR5KHUpOyllPU9iamVjdC5nZXRQcm90b3R5cGVPZihlKTtlJiZvKGUpfWZ1bmN0aW9uIG8odCl7cy5pblBsYWNlKHQsW3UsZF0sIi0iLGkpfWZ1bmN0aW9uIGkodCxlKXtyZXR1cm4gdFsxXX12YXIgYT10KCJlZSIpLmdldCgiZXZlbnRzIikscz10KCJ3cmFwLWZ1bmN0aW9uIikoYSwhMCksYz10KCJnb3MiKSxmPVhNTEh0dHBSZXF1ZXN0LHU9ImFkZEV2ZW50TGlzdGVuZXIiLGQ9InJlbW92ZUV2ZW50TGlzdGVuZXIiO2UuZXhwb3J0cz1hLCJnZXRQcm90b3R5cGVPZiJpbiBPYmplY3Q/KHIoZG9jdW1lbnQpLHIod2luZG93KSxyKGYucHJvdG90eXBlKSk6Zi5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkodSkmJihvKHdpbmRvdyksbyhmLnByb3RvdHlwZSkpLGEub24odSsiLXN0YXJ0IixmdW5jdGlvbih0LGUpe3ZhciBuPXRbMV0scj1jKG4sIm5yQHdyYXBwZWQiLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBuLmhhbmRsZUV2ZW50KXJldHVybiBuLmhhbmRsZUV2ZW50LmFwcGx5KG4sYXJndW1lbnRzKX12YXIgZT17b2JqZWN0OnQsImZ1bmN0aW9uIjpufVt0eXBlb2Ygbl07cmV0dXJuIGU/cyhlLCJmbi0iLG51bGwsZS5uYW1lfHwiYW5vbnltb3VzIik6bn0pO3RoaXMud3JhcHBlZD10WzFdPXJ9KSxhLm9uKGQrIi1zdGFydCIsZnVuY3Rpb24odCl7dFsxXT10aGlzLndyYXBwZWR8fHRbMV19KX0se31dLDc6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQsZSxuKXt2YXIgcj10W2VdOyJmdW5jdGlvbiI9PXR5cGVvZiByJiYodFtlXT1mdW5jdGlvbigpe3ZhciB0PWkoYXJndW1lbnRzKSxlPXt9O28uZW1pdChuKyJiZWZvcmUtc3RhcnQiLFt0XSxlKTt2YXIgYTtlW21dJiZlW21dLmR0JiYoYT1lW21dLmR0KTt2YXIgcz1yLmFwcGx5KHRoaXMsdCk7cmV0dXJuIG8uZW1pdChuKyJzdGFydCIsW3QsYV0scykscy50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiBvLmVtaXQobisiZW5kIixbbnVsbCx0XSxzKSx0fSxmdW5jdGlvbih0KXt0aHJvdyBvLmVtaXQobisiZW5kIixbdF0scyksdH0pfSl9dmFyIG89dCgiZWUiKS5nZXQoImZldGNoIiksaT10KDI2KSxhPXQoMjUpO2UuZXhwb3J0cz1vO3ZhciBzPXdpbmRvdyxjPSJmZXRjaC0iLGY9YysiYm9keS0iLHU9WyJhcnJheUJ1ZmZlciIsImJsb2IiLCJqc29uIiwidGV4dCIsImZvcm1EYXRhIl0sZD1zLlJlcXVlc3QscD1zLlJlc3BvbnNlLGw9cy5mZXRjaCxoPSJwcm90b3R5cGUiLG09Im5yQGNvbnRleHQiO2QmJnAmJmwmJihhKHUsZnVuY3Rpb24odCxlKXtyKGRbaF0sZSxmKSxyKHBbaF0sZSxmKX0pLHIocywiZmV0Y2giLGMpLG8ub24oYysiZW5kIixmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7aWYoZSl7dmFyIHI9ZS5oZWFkZXJzLmdldCgiY29udGVudC1sZW5ndGgiKTtudWxsIT09ciYmKG4ucnhTaXplPXIpLG8uZW1pdChjKyJkb25lIixbbnVsbCxlXSxuKX1lbHNlIG8uZW1pdChjKyJkb25lIixbdF0sbil9KSl9LHt9XSw4OltmdW5jdGlvbih0LGUsbil7dmFyIHI9dCgiZWUiKS5nZXQoImhpc3RvcnkiKSxvPXQoIndyYXAtZnVuY3Rpb24iKShyKTtlLmV4cG9ydHM9cjt2YXIgaT13aW5kb3cuaGlzdG9yeSYmd2luZG93Lmhpc3RvcnkuY29uc3RydWN0b3ImJndpbmRvdy5oaXN0b3J5LmNvbnN0cnVjdG9yLnByb3RvdHlwZSxhPXdpbmRvdy5oaXN0b3J5O2kmJmkucHVzaFN0YXRlJiZpLnJlcGxhY2VTdGF0ZSYmKGE9aSksby5pblBsYWNlKGEsWyJwdXNoU3RhdGUiLCJyZXBsYWNlU3RhdGUiXSwiLSIpfSx7fV0sOTpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCl7ZnVuY3Rpb24gZSgpe2MuZW1pdCgianNvbnAtZW5kIixbXSxwKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLGUsITEpLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZXJyb3IiLG4sITEpfWZ1bmN0aW9uIG4oKXtjLmVtaXQoImpzb25wLWVycm9yIixbXSxwKSxjLmVtaXQoImpzb25wLWVuZCIsW10scCksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixlLCExKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImVycm9yIixuLCExKX12YXIgcj10JiYic3RyaW5nIj09dHlwZW9mIHQubm9kZU5hbWUmJiJzY3JpcHQiPT09dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO2lmKHIpe3ZhciBvPSJmdW5jdGlvbiI9PXR5cGVvZiB0LmFkZEV2ZW50TGlzdGVuZXI7aWYobyl7dmFyIGE9aSh0LnNyYyk7aWYoYSl7dmFyIHU9cyhhKSxkPSJmdW5jdGlvbiI9PXR5cGVvZiB1LnBhcmVudFt1LmtleV07aWYoZCl7dmFyIHA9e307Zi5pblBsYWNlKHUucGFyZW50LFt1LmtleV0sImNiLSIscCksdC5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixlLCExKSx0LmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIixuLCExKSxjLmVtaXQoIm5ldy1qc29ucCIsW3Quc3JjXSxwKX19fX19ZnVuY3Rpb24gbygpe3JldHVybiJhZGRFdmVudExpc3RlbmVyImluIHdpbmRvd31mdW5jdGlvbiBpKHQpe3ZhciBlPXQubWF0Y2godSk7cmV0dXJuIGU/ZVsxXTpudWxsfWZ1bmN0aW9uIGEodCxlKXt2YXIgbj10Lm1hdGNoKHApLHI9blsxXSxvPW5bM107cmV0dXJuIG8/YShvLGVbcl0pOmVbcl19ZnVuY3Rpb24gcyh0KXt2YXIgZT10Lm1hdGNoKGQpO3JldHVybiBlJiZlLmxlbmd0aD49Mz97a2V5OmVbMl0scGFyZW50OmEoZVsxXSx3aW5kb3cpfTp7a2V5OnQscGFyZW50OndpbmRvd319dmFyIGM9dCgiZWUiKS5nZXQoImpzb25wIiksZj10KCJ3cmFwLWZ1bmN0aW9uIikoYyk7aWYoZS5leHBvcnRzPWMsbygpKXt2YXIgdT0vWz8mXSg/OmNhbGxiYWNrfGNiKT0oW14mI10rKS8sZD0vKC4qKVwuKFteLl0rKS8scD0vXihcdyspKFwufCQpKC4qKSQvLGw9WyJhcHBlbmRDaGlsZCIsImluc2VydEJlZm9yZSIsInJlcGxhY2VDaGlsZCJdO05vZGUmJk5vZGUucHJvdG90eXBlJiZOb2RlLnByb3RvdHlwZS5hcHBlbmRDaGlsZD9mLmluUGxhY2UoTm9kZS5wcm90b3R5cGUsbCwiZG9tLSIpOihmLmluUGxhY2UoSFRNTEVsZW1lbnQucHJvdG90eXBlLGwsImRvbS0iKSxmLmluUGxhY2UoSFRNTEhlYWRFbGVtZW50LnByb3RvdHlwZSxsLCJkb20tIiksZi5pblBsYWNlKEhUTUxCb2R5RWxlbWVudC5wcm90b3R5cGUsbCwiZG9tLSIpKSxjLm9uKCJkb20tc3RhcnQiLGZ1bmN0aW9uKHQpe3IodFswXSl9KX19LHt9XSwxMDpbZnVuY3Rpb24odCxlLG4pe3ZhciByPXQoImVlIikuZ2V0KCJtdXRhdGlvbiIpLG89dCgid3JhcC1mdW5jdGlvbiIpKHIpLGk9TlJFVU0uby5NTztlLmV4cG9ydHM9cixpJiYod2luZG93Lk11dGF0aW9uT2JzZXJ2ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBpP25ldyBpKG8odCwiZm4tIikpOmkuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxNdXRhdGlvbk9ic2VydmVyLnByb3RvdHlwZT1pLnByb3RvdHlwZSl9LHt9XSwxMTpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCl7dmFyIGU9YS5jb250ZXh0KCksbj1zKHQsImV4ZWN1dG9yLSIsZSkscj1uZXcgZihuKTtyZXR1cm4gYS5jb250ZXh0KHIpLmdldEN0eD1mdW5jdGlvbigpe3JldHVybiBlfSxhLmVtaXQoIm5ldy1wcm9taXNlIixbcixlXSxlKSxyfWZ1bmN0aW9uIG8odCxlKXtyZXR1cm4gZX12YXIgaT10KCJ3cmFwLWZ1bmN0aW9uIiksYT10KCJlZSIpLmdldCgicHJvbWlzZSIpLHM9aShhKSxjPXQoMjUpLGY9TlJFVU0uby5QUjtlLmV4cG9ydHM9YSxmJiYod2luZG93LlByb21pc2U9cixbImFsbCIsInJhY2UiXS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPWZbdF07Zlt0XT1mdW5jdGlvbihuKXtmdW5jdGlvbiByKHQpe3JldHVybiBmdW5jdGlvbigpe2EuZW1pdCgicHJvcGFnYXRlIixbbnVsbCwhb10saSksbz1vfHwhdH19dmFyIG89ITE7YyhuLGZ1bmN0aW9uKGUsbil7UHJvbWlzZS5yZXNvbHZlKG4pLnRoZW4ocigiYWxsIj09PXQpLHIoITEpKX0pO3ZhciBpPWUuYXBwbHkoZixhcmd1bWVudHMpLHM9Zi5yZXNvbHZlKGkpO3JldHVybiBzfX0pLFsicmVzb2x2ZSIsInJlamVjdCJdLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGU9Zlt0XTtmW3RdPWZ1bmN0aW9uKHQpe3ZhciBuPWUuYXBwbHkoZixhcmd1bWVudHMpO3JldHVybiB0IT09biYmYS5lbWl0KCJwcm9wYWdhdGUiLFt0LCEwXSxuKSxufX0pLGYucHJvdG90eXBlWyJjYXRjaCJdPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnRoZW4obnVsbCx0KX0sZi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShmLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnJ9fSksYyhPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhmKSxmdW5jdGlvbih0LGUpe3RyeXtyW2VdPWZbZV19Y2F0Y2gobil7fX0pLGEub24oImV4ZWN1dG9yLXN0YXJ0IixmdW5jdGlvbih0KXt0WzBdPXModFswXSwicmVzb2x2ZS0iLHRoaXMpLHRbMV09cyh0WzFdLCJyZXNvbHZlLSIsdGhpcyl9KSxhLm9uKCJleGVjdXRvci1lcnIiLGZ1bmN0aW9uKHQsZSxuKXt0WzFdKG4pfSkscy5pblBsYWNlKGYucHJvdG90eXBlLFsidGhlbiJdLCJ0aGVuLSIsbyksYS5vbigidGhlbi1zdGFydCIsZnVuY3Rpb24odCxlKXt0aGlzLnByb21pc2U9ZSx0WzBdPXModFswXSwiY2ItIix0aGlzKSx0WzFdPXModFsxXSwiY2ItIix0aGlzKX0pLGEub24oInRoZW4tZW5kIixmdW5jdGlvbih0LGUsbil7dGhpcy5uZXh0UHJvbWlzZT1uO3ZhciByPXRoaXMucHJvbWlzZTthLmVtaXQoInByb3BhZ2F0ZSIsW3IsITBdLG4pfSksYS5vbigiY2ItZW5kIixmdW5jdGlvbih0LGUsbil7YS5lbWl0KCJwcm9wYWdhdGUiLFtuLCEwXSx0aGlzLm5leHRQcm9taXNlKX0pLGEub24oInByb3BhZ2F0ZSIsZnVuY3Rpb24odCxlLG4pe3RoaXMuZ2V0Q3R4JiYhZXx8KHRoaXMuZ2V0Q3R4PWZ1bmN0aW9uKCl7aWYodCBpbnN0YW5jZW9mIFByb21pc2UpdmFyIGU9YS5jb250ZXh0KHQpO3JldHVybiBlJiZlLmdldEN0eD9lLmdldEN0eCgpOnRoaXN9KX0pLHIudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iIitmfSl9LHt9XSwxMjpbZnVuY3Rpb24odCxlLG4pe3ZhciByPXQoImVlIikuZ2V0KCJyYWYiKSxvPXQoIndyYXAtZnVuY3Rpb24iKShyKSxpPSJlcXVlc3RBbmltYXRpb25GcmFtZSI7ZS5leHBvcnRzPXIsby5pblBsYWNlKHdpbmRvdyxbInIiK2ksIm1velIiK2ksIndlYmtpdFIiK2ksIm1zUiIraV0sInJhZi0iKSxyLm9uKCJyYWYtc3RhcnQiLGZ1bmN0aW9uKHQpe3RbMF09byh0WzBdLCJmbi0iKX0pfSx7fV0sMTM6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQsZSxuKXt0WzBdPWEodFswXSwiZm4tIixudWxsLG4pfWZ1bmN0aW9uIG8odCxlLG4pe3RoaXMubWV0aG9kPW4sdGhpcy50aW1lckR1cmF0aW9uPWlzTmFOKHRbMV0pPzA6K3RbMV0sdFswXT1hKHRbMF0sImZuLSIsdGhpcyxuKX12YXIgaT10KCJlZSIpLmdldCgidGltZXIiKSxhPXQoIndyYXAtZnVuY3Rpb24iKShpKSxzPSJzZXRUaW1lb3V0IixjPSJzZXRJbnRlcnZhbCIsZj0iY2xlYXJUaW1lb3V0Iix1PSItc3RhcnQiLGQ9Ii0iO2UuZXhwb3J0cz1pLGEuaW5QbGFjZSh3aW5kb3csW3MsInNldEltbWVkaWF0ZSJdLHMrZCksYS5pblBsYWNlKHdpbmRvdyxbY10sYytkKSxhLmluUGxhY2Uod2luZG93LFtmLCJjbGVhckltbWVkaWF0ZSJdLGYrZCksaS5vbihjK3UsciksaS5vbihzK3Usbyl9LHt9XSwxNDpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCxlKXtkLmluUGxhY2UoZSxbIm9ucmVhZHlzdGF0ZWNoYW5nZSJdLCJmbi0iLHMpfWZ1bmN0aW9uIG8oKXt2YXIgdD10aGlzLGU9dS5jb250ZXh0KHQpO3QucmVhZHlTdGF0ZT4zJiYhZS5yZXNvbHZlZCYmKGUucmVzb2x2ZWQ9ITAsdS5lbWl0KCJ4aHItcmVzb2x2ZWQiLFtdLHQpKSxkLmluUGxhY2UodCxnLCJmbi0iLHMpfWZ1bmN0aW9uIGkodCl7eS5wdXNoKHQpLGgmJihiP2IudGhlbihhKTp2P3YoYSk6KEU9LUUsTy5kYXRhPUUpKX1mdW5jdGlvbiBhKCl7Zm9yKHZhciB0PTA7dDx5Lmxlbmd0aDt0KyspcihbXSx5W3RdKTt5Lmxlbmd0aCYmKHk9W10pfWZ1bmN0aW9uIHModCxlKXtyZXR1cm4gZX1mdW5jdGlvbiBjKHQsZSl7Zm9yKHZhciBuIGluIHQpZVtuXT10W25dO3JldHVybiBlfXQoNik7dmFyIGY9dCgiZWUiKSx1PWYuZ2V0KCJ4aHIiKSxkPXQoIndyYXAtZnVuY3Rpb24iKSh1KSxwPU5SRVVNLm8sbD1wLlhIUixoPXAuTU8sbT1wLlBSLHY9cC5TSSx3PSJyZWFkeXN0YXRlY2hhbmdlIixnPVsib25sb2FkIiwib25lcnJvciIsIm9uYWJvcnQiLCJvbmxvYWRzdGFydCIsIm9ubG9hZGVuZCIsIm9ucHJvZ3Jlc3MiLCJvbnRpbWVvdXQiXSx5PVtdO2UuZXhwb3J0cz11O3ZhciB4PXdpbmRvdy5YTUxIdHRwUmVxdWVzdD1mdW5jdGlvbih0KXt2YXIgZT1uZXcgbCh0KTt0cnl7dS5lbWl0KCJuZXcteGhyIixbZV0sZSksZS5hZGRFdmVudExpc3RlbmVyKHcsbywhMSl9Y2F0Y2gobil7dHJ5e3UuZW1pdCgiaW50ZXJuYWwtZXJyb3IiLFtuXSl9Y2F0Y2gocil7fX1yZXR1cm4gZX07aWYoYyhsLHgpLHgucHJvdG90eXBlPWwucHJvdG90eXBlLGQuaW5QbGFjZSh4LnByb3RvdHlwZSxbIm9wZW4iLCJzZW5kIl0sIi14aHItIixzKSx1Lm9uKCJzZW5kLXhoci1zdGFydCIsZnVuY3Rpb24odCxlKXtyKHQsZSksaShlKX0pLHUub24oIm9wZW4teGhyLXN0YXJ0IixyKSxoKXt2YXIgYj1tJiZtLnJlc29sdmUoKTtpZighdiYmIW0pe3ZhciBFPTEsTz1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShFKTtuZXcgaChhKS5vYnNlcnZlKE8se2NoYXJhY3RlckRhdGE6ITB9KX19ZWxzZSBmLm9uKCJmbi1lbmQiLGZ1bmN0aW9uKHQpe3RbMF0mJnRbMF0udHlwZT09PXd8fGEoKX0pfSx7fV0sMTU6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQpe2lmKCFpKHQpKXJldHVybiBudWxsO3ZhciBlPXdpbmRvdy5OUkVVTTtpZighZS5sb2FkZXJfY29uZmlnKXJldHVybiBudWxsO3ZhciBuPShlLmxvYWRlcl9jb25maWcuYWNjb3VudElEfHwiIikudG9TdHJpbmcoKXx8bnVsbCxyPShlLmxvYWRlcl9jb25maWcuYWdlbnRJRHx8IiIpLnRvU3RyaW5nKCl8fG51bGwscz0oZS5sb2FkZXJfY29uZmlnLnRydXN0S2V5fHwiIikudG9TdHJpbmcoKXx8bnVsbDtpZighbnx8IXIpcmV0dXJuIG51bGw7dmFyIGM9YS5nZW5lcmF0ZUNhdElkKCksZj1hLmdlbmVyYXRlQ2F0SWQoKSx1PURhdGUubm93KCksZD1vKGMsZix1LG4scixzKTtyZXR1cm57aGVhZGVyOmQsZ3VpZDpjLHRyYWNlSWQ6Zix0aW1lc3RhbXA6dX19ZnVuY3Rpb24gbyh0LGUsbixyLG8saSl7dmFyIGE9ImJ0b2EiaW4gd2luZG93JiYiZnVuY3Rpb24iPT10eXBlb2Ygd2luZG93LmJ0b2E7aWYoIWEpcmV0dXJuIG51bGw7dmFyIHM9e3Y6WzAsMV0sZDp7dHk6IkJyb3dzZXIiLGFjOnIsYXA6byxpZDp0LHRyOmUsdGk6bn19O3JldHVybiBpJiZyIT09aSYmKHMuZC50az1pKSxidG9hKEpTT04uc3RyaW5naWZ5KHMpKX1mdW5jdGlvbiBpKHQpe3ZhciBlPSExLG49ITEscj17fTtpZigiaW5pdCJpbiBOUkVVTSYmImRpc3RyaWJ1dGVkX3RyYWNpbmciaW4gTlJFVU0uaW5pdCYmKHI9TlJFVU0uaW5pdC5kaXN0cmlidXRlZF90cmFjaW5nLG49ISFyLmVuYWJsZWQpLG4paWYodC5zYW1lT3JpZ2luKWU9ITA7ZWxzZSBpZihyLmFsbG93ZWRfb3JpZ2lucyBpbnN0YW5jZW9mIEFycmF5KWZvcih2YXIgbz0wO288ci5hbGxvd2VkX29yaWdpbnMubGVuZ3RoO28rKyl7dmFyIGk9cyhyLmFsbG93ZWRfb3JpZ2luc1tvXSk7aWYodC5ob3N0bmFtZT09PWkuaG9zdG5hbWUmJnQucHJvdG9jb2w9PT1pLnByb3RvY29sJiZ0LnBvcnQ9PT1pLnBvcnQpe2U9ITA7YnJlYWt9fXJldHVybiBuJiZlfXZhciBhPXQoMjMpLHM9dCgxNyk7ZS5leHBvcnRzPXtnZW5lcmF0ZVRyYWNlUGF5bG9hZDpyLHNob3VsZEdlbmVyYXRlVHJhY2U6aX19LHt9XSwxNjpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCl7dmFyIGU9dGhpcy5wYXJhbXMsbj10aGlzLm1ldHJpY3M7aWYoIXRoaXMuZW5kZWQpe3RoaXMuZW5kZWQ9ITA7Zm9yKHZhciByPTA7cjxwO3IrKyl0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZFtyXSx0aGlzLmxpc3RlbmVyLCExKTtlLmFib3J0ZWR8fChuLmR1cmF0aW9uPWEubm93KCktdGhpcy5zdGFydFRpbWUsdGhpcy5sb2FkQ2FwdHVyZUNhbGxlZHx8NCE9PXQucmVhZHlTdGF0ZT9udWxsPT1lLnN0YXR1cyYmKGUuc3RhdHVzPTApOmkodGhpcyx0KSxuLmNiVGltZT10aGlzLmNiVGltZSx1LmVtaXQoInhoci1kb25lIixbdF0sdCkscygieGhyIixbZSxuLHRoaXMuc3RhcnRUaW1lXSkpfX1mdW5jdGlvbiBvKHQsZSl7dmFyIG49YyhlKSxyPXQucGFyYW1zO3IuaG9zdD1uLmhvc3RuYW1lKyI6IituLnBvcnQsci5wYXRobmFtZT1uLnBhdGhuYW1lLHQucGFyc2VkT3JpZ2luPWMoZSksdC5zYW1lT3JpZ2luPXQucGFyc2VkT3JpZ2luLnNhbWVPcmlnaW59ZnVuY3Rpb24gaSh0LGUpe3QucGFyYW1zLnN0YXR1cz1lLnN0YXR1czt2YXIgbj12KGUsdC5sYXN0U2l6ZSk7aWYobiYmKHQubWV0cmljcy5yeFNpemU9biksdC5zYW1lT3JpZ2luKXt2YXIgcj1lLmdldFJlc3BvbnNlSGVhZGVyKCJYLU5ld1JlbGljLUFwcC1EYXRhIik7ciYmKHQucGFyYW1zLmNhdD1yLnNwbGl0KCIsICIpLnBvcCgpKX10LmxvYWRDYXB0dXJlQ2FsbGVkPSEwfXZhciBhPXQoImxvYWRlciIpO2lmKGEueGhyV3JhcHBhYmxlKXt2YXIgcz10KCJoYW5kbGUiKSxjPXQoMTcpLGY9dCgxNSkuZ2VuZXJhdGVUcmFjZVBheWxvYWQsdT10KCJlZSIpLGQ9WyJsb2FkIiwiZXJyb3IiLCJhYm9ydCIsInRpbWVvdXQiXSxwPWQubGVuZ3RoLGw9dCgiaWQiKSxoPXQoMjEpLG09dCgyMCksdj10KDE4KSx3PXdpbmRvdy5YTUxIdHRwUmVxdWVzdDthLmZlYXR1cmVzLnhocj0hMCx0KDE0KSx0KDcpLHUub24oIm5ldy14aHIiLGZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7ZS50b3RhbENicz0wLGUuY2FsbGVkPTAsZS5jYlRpbWU9MCxlLmVuZD1yLGUuZW5kZWQ9ITEsZS54aHJHdWlkcz17fSxlLmxhc3RTaXplPW51bGwsZS5sb2FkQ2FwdHVyZUNhbGxlZD0hMSx0LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGZ1bmN0aW9uKG4pe2koZSx0KX0sITEpLGgmJihoPjM0fHxoPDEwKXx8d2luZG93Lm9wZXJhfHx0LmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixmdW5jdGlvbih0KXtlLmxhc3RTaXplPXQubG9hZGVkfSwhMSl9KSx1Lm9uKCJvcGVuLXhoci1zdGFydCIsZnVuY3Rpb24odCl7dGhpcy5wYXJhbXM9e21ldGhvZDp0WzBdfSxvKHRoaXMsdFsxXSksdGhpcy5tZXRyaWNzPXt9fSksdS5vbigib3Blbi14aHItZW5kIixmdW5jdGlvbih0LGUpeyJsb2FkZXJfY29uZmlnImluIE5SRVVNJiYieHBpZCJpbiBOUkVVTS5sb2FkZXJfY29uZmlnJiZ0aGlzLnNhbWVPcmlnaW4mJmUuc2V0UmVxdWVzdEhlYWRlcigiWC1OZXdSZWxpYy1JRCIsTlJFVU0ubG9hZGVyX2NvbmZpZy54cGlkKTt2YXIgbj1mKHRoaXMucGFyc2VkT3JpZ2luKTtuJiZuLmhlYWRlciYmKGUuc2V0UmVxdWVzdEhlYWRlcigibmV3cmVsaWMiLG4uaGVhZGVyKSx0aGlzLmR0PW4pfSksdS5vbigic2VuZC14aHItc3RhcnQiLGZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5tZXRyaWNzLHI9dFswXSxvPXRoaXM7aWYobiYmcil7dmFyIGk9bShyKTtpJiYobi50eFNpemU9aSl9dGhpcy5zdGFydFRpbWU9YS5ub3coKSx0aGlzLmxpc3RlbmVyPWZ1bmN0aW9uKHQpe3RyeXsiYWJvcnQiIT09dC50eXBlfHxvLmxvYWRDYXB0dXJlQ2FsbGVkfHwoby5wYXJhbXMuYWJvcnRlZD0hMCksKCJsb2FkIiE9PXQudHlwZXx8by5jYWxsZWQ9PT1vLnRvdGFsQ2JzJiYoby5vbmxvYWRDYWxsZWR8fCJmdW5jdGlvbiIhPXR5cGVvZiBlLm9ubG9hZCkpJiZvLmVuZChlKX1jYXRjaChuKXt0cnl7dS5lbWl0KCJpbnRlcm5hbC1lcnJvciIsW25dKX1jYXRjaChyKXt9fX07Zm9yKHZhciBzPTA7czxwO3MrKyllLmFkZEV2ZW50TGlzdGVuZXIoZFtzXSx0aGlzLmxpc3RlbmVyLCExKX0pLHUub24oInhoci1jYi10aW1lIixmdW5jdGlvbih0LGUsbil7dGhpcy5jYlRpbWUrPXQsZT90aGlzLm9ubG9hZENhbGxlZD0hMDp0aGlzLmNhbGxlZCs9MSx0aGlzLmNhbGxlZCE9PXRoaXMudG90YWxDYnN8fCF0aGlzLm9ubG9hZENhbGxlZCYmImZ1bmN0aW9uIj09dHlwZW9mIG4ub25sb2FkfHx0aGlzLmVuZChuKX0pLHUub24oInhoci1sb2FkLWFkZGVkIixmdW5jdGlvbih0LGUpe3ZhciBuPSIiK2wodCkrISFlO3RoaXMueGhyR3VpZHMmJiF0aGlzLnhockd1aWRzW25dJiYodGhpcy54aHJHdWlkc1tuXT0hMCx0aGlzLnRvdGFsQ2JzKz0xKX0pLHUub24oInhoci1sb2FkLXJlbW92ZWQiLGZ1bmN0aW9uKHQsZSl7dmFyIG49IiIrbCh0KSshIWU7dGhpcy54aHJHdWlkcyYmdGhpcy54aHJHdWlkc1tuXSYmKGRlbGV0ZSB0aGlzLnhockd1aWRzW25dLHRoaXMudG90YWxDYnMtPTEpfSksdS5vbigiYWRkRXZlbnRMaXN0ZW5lci1lbmQiLGZ1bmN0aW9uKHQsZSl7ZSBpbnN0YW5jZW9mIHcmJiJsb2FkIj09PXRbMF0mJnUuZW1pdCgieGhyLWxvYWQtYWRkZWQiLFt0WzFdLHRbMl1dLGUpfSksdS5vbigicmVtb3ZlRXZlbnRMaXN0ZW5lci1lbmQiLGZ1bmN0aW9uKHQsZSl7ZSBpbnN0YW5jZW9mIHcmJiJsb2FkIj09PXRbMF0mJnUuZW1pdCgieGhyLWxvYWQtcmVtb3ZlZCIsW3RbMV0sdFsyXV0sZSl9KSx1Lm9uKCJmbi1zdGFydCIsZnVuY3Rpb24odCxlLG4pe2UgaW5zdGFuY2VvZiB3JiYoIm9ubG9hZCI9PT1uJiYodGhpcy5vbmxvYWQ9ITApLCgibG9hZCI9PT0odFswXSYmdFswXS50eXBlKXx8dGhpcy5vbmxvYWQpJiYodGhpcy54aHJDYlN0YXJ0PWEubm93KCkpKX0pLHUub24oImZuLWVuZCIsZnVuY3Rpb24odCxlKXt0aGlzLnhockNiU3RhcnQmJnUuZW1pdCgieGhyLWNiLXRpbWUiLFthLm5vdygpLXRoaXMueGhyQ2JTdGFydCx0aGlzLm9ubG9hZCxlXSxlKX0pLHUub24oImZldGNoLWJlZm9yZS1zdGFydCIsZnVuY3Rpb24odCl7dmFyIGUsbj10WzFdfHx7fTsic3RyaW5nIj09dHlwZW9mIHRbMF0/ZT10WzBdOnRbMF0mJnRbMF0udXJsJiYoZT10WzBdLnVybCksZSYmKHRoaXMucGFyc2VkT3JpZ2luPWMoZSksdGhpcy5zYW1lT3JpZ2luPXRoaXMucGFyc2VkT3JpZ2luLnNhbWVPcmlnaW4pO3ZhciByPWYodGhpcy5wYXJzZWRPcmlnaW4pO2lmKHImJnIuaGVhZGVyKXt2YXIgbz1yLmhlYWRlcjtpZigic3RyaW5nIj09dHlwZW9mIHRbMF0pe3ZhciBpPXt9O2Zvcih2YXIgYSBpbiBuKWlbYV09blthXTtpLmhlYWRlcnM9bmV3IEhlYWRlcnMobi5oZWFkZXJzfHx7fSksaS5oZWFkZXJzLnNldCgibmV3cmVsaWMiLG8pLHRoaXMuZHQ9cix0Lmxlbmd0aD4xP3RbMV09aTp0LnB1c2goaSl9ZWxzZSB0WzBdJiZ0WzBdLmhlYWRlcnMmJih0WzBdLmhlYWRlcnMuYXBwZW5kKCJuZXdyZWxpYyIsbyksdGhpcy5kdD1yKX19KX19LHt9XSwxNzpbZnVuY3Rpb24odCxlLG4pe3ZhciByPXt9O2UuZXhwb3J0cz1mdW5jdGlvbih0KXtpZih0IGluIHIpcmV0dXJuIHJbdF07dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpLG49d2luZG93LmxvY2F0aW9uLG89e307ZS5ocmVmPXQsby5wb3J0PWUucG9ydDt2YXIgaT1lLmhyZWYuc3BsaXQoIjovLyIpOyFvLnBvcnQmJmlbMV0mJihvLnBvcnQ9aVsxXS5zcGxpdCgiLyIpWzBdLnNwbGl0KCJAIikucG9wKCkuc3BsaXQoIjoiKVsxXSksby5wb3J0JiYiMCIhPT1vLnBvcnR8fChvLnBvcnQ9Imh0dHBzIj09PWlbMF0/IjQ0MyI6IjgwIiksby5ob3N0bmFtZT1lLmhvc3RuYW1lfHxuLmhvc3RuYW1lLG8ucGF0aG5hbWU9ZS5wYXRobmFtZSxvLnByb3RvY29sPWlbMF0sIi8iIT09by5wYXRobmFtZS5jaGFyQXQoMCkmJihvLnBhdGhuYW1lPSIvIitvLnBhdGhuYW1lKTt2YXIgYT0hZS5wcm90b2NvbHx8IjoiPT09ZS5wcm90b2NvbHx8ZS5wcm90b2NvbD09PW4ucHJvdG9jb2wscz1lLmhvc3RuYW1lPT09ZG9jdW1lbnQuZG9tYWluJiZlLnBvcnQ9PT1uLnBvcnQ7cmV0dXJuIG8uc2FtZU9yaWdpbj1hJiYoIWUuaG9zdG5hbWV8fHMpLCIvIj09PW8ucGF0aG5hbWUmJihyW3RdPW8pLG99fSx7fV0sMTg6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQsZSl7dmFyIG49dC5yZXNwb25zZVR5cGU7cmV0dXJuImpzb24iPT09biYmbnVsbCE9PWU/ZToiYXJyYXlidWZmZXIiPT09bnx8ImJsb2IiPT09bnx8Impzb24iPT09bj9vKHQucmVzcG9uc2UpOiJ0ZXh0Ij09PW58fCIiPT09bnx8dm9pZCAwPT09bj9vKHQucmVzcG9uc2VUZXh0KTp2b2lkIDB9dmFyIG89dCgyMCk7ZS5leHBvcnRzPXJ9LHt9XSwxOTpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIoKXt9ZnVuY3Rpb24gbyh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGkodCxbZi5ub3coKV0uY29uY2F0KHMoYXJndW1lbnRzKSksZT9udWxsOnRoaXMsbiksZT92b2lkIDA6dGhpc319dmFyIGk9dCgiaGFuZGxlIiksYT10KDI1KSxzPXQoMjYpLGM9dCgiZWUiKS5nZXQoInRyYWNlciIpLGY9dCgibG9hZGVyIiksdT1OUkVVTTsidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvdy5uZXdyZWxpYyYmKG5ld3JlbGljPXUpO3ZhciBkPVsic2V0UGFnZVZpZXdOYW1lIiwic2V0Q3VzdG9tQXR0cmlidXRlIiwic2V0RXJyb3JIYW5kbGVyIiwiZmluaXNoZWQiLCJhZGRUb1RyYWNlIiwiaW5saW5lSGl0IiwiYWRkUmVsZWFzZSJdLHA9ImFwaS0iLGw9cCsiaXhuLSI7YShkLGZ1bmN0aW9uKHQsZSl7dVtlXT1vKHArZSwhMCwiYXBpIil9KSx1LmFkZFBhZ2VBY3Rpb249byhwKyJhZGRQYWdlQWN0aW9uIiwhMCksdS5zZXRDdXJyZW50Um91dGVOYW1lPW8ocCsicm91dGVOYW1lIiwhMCksZS5leHBvcnRzPW5ld3JlbGljLHUuaW50ZXJhY3Rpb249ZnVuY3Rpb24oKXtyZXR1cm4obmV3IHIpLmdldCgpfTt2YXIgaD1yLnByb3RvdHlwZT17Y3JlYXRlVHJhY2VyOmZ1bmN0aW9uKHQsZSl7dmFyIG49e30scj10aGlzLG89ImZ1bmN0aW9uIj09dHlwZW9mIGU7cmV0dXJuIGkobCsidHJhY2VyIixbZi5ub3coKSx0LG5dLHIpLGZ1bmN0aW9uKCl7aWYoYy5lbWl0KChvPyIiOiJuby0iKSsiZm4tc3RhcnQiLFtmLm5vdygpLHIsb10sbiksbyl0cnl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfWNhdGNoKHQpe3Rocm93IGMuZW1pdCgiZm4tZXJyIixbYXJndW1lbnRzLHRoaXMsdF0sbiksdH1maW5hbGx5e2MuZW1pdCgiZm4tZW5kIixbZi5ub3coKV0sbil9fX19O2EoImFjdGlvblRleHQsc2V0TmFtZSxzZXRBdHRyaWJ1dGUsc2F2ZSxpZ25vcmUsb25FbmQsZ2V0Q29udGV4dCxlbmQsZ2V0Ii5zcGxpdCgiLCIpLGZ1bmN0aW9uKHQsZSl7aFtlXT1vKGwrZSl9KSxuZXdyZWxpYy5ub3RpY2VFcnJvcj1mdW5jdGlvbih0LGUpeyJzdHJpbmciPT10eXBlb2YgdCYmKHQ9bmV3IEVycm9yKHQpKSxpKCJlcnIiLFt0LGYubm93KCksITEsZV0pfX0se31dLDIwOltmdW5jdGlvbih0LGUsbil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdCYmdC5sZW5ndGgpcmV0dXJuIHQubGVuZ3RoO2lmKCJvYmplY3QiPT10eXBlb2YgdCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmdCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyJiZ0LmJ5dGVMZW5ndGgpcmV0dXJuIHQuYnl0ZUxlbmd0aDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEJsb2ImJnQgaW5zdGFuY2VvZiBCbG9iJiZ0LnNpemUpcmV0dXJuIHQuc2l6ZTtpZighKCJ1bmRlZmluZWQiIT10eXBlb2YgRm9ybURhdGEmJnQgaW5zdGFuY2VvZiBGb3JtRGF0YSkpdHJ5e3JldHVybiBKU09OLnN0cmluZ2lmeSh0KS5sZW5ndGh9Y2F0Y2goZSl7cmV0dXJufX19fSx7fV0sMjE6W2Z1bmN0aW9uKHQsZSxuKXt2YXIgcj0wLG89bmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvRmlyZWZveFtcL1xzXShcZCtcLlxkKykvKTtvJiYocj0rb1sxXSksZS5leHBvcnRzPXJ9LHt9XSwyMjpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCxlKXt2YXIgbj10LmdldEVudHJpZXMoKTtuLmZvckVhY2goZnVuY3Rpb24odCl7ImZpcnN0LXBhaW50Ij09PXQubmFtZT9jKCJ0aW1pbmciLFsiZnAiLE1hdGguZmxvb3IodC5zdGFydFRpbWUpXSk6ImZpcnN0LWNvbnRlbnRmdWwtcGFpbnQiPT09dC5uYW1lJiZjKCJ0aW1pbmciLFsiZmNwIixNYXRoLmZsb29yKHQuc3RhcnRUaW1lKV0pfSl9ZnVuY3Rpb24gbyh0LGUpe3ZhciBuPXQuZ2V0RW50cmllcygpO24ubGVuZ3RoPjAmJmMoImxjcCIsW25bbi5sZW5ndGgtMV1dKX1mdW5jdGlvbiBpKHQpe2lmKHQgaW5zdGFuY2VvZiB1JiYhcCl7dmFyIGUsbj1NYXRoLnJvdW5kKHQudGltZVN0YW1wKTtlPW4+MWUxMj9EYXRlLm5vdygpLW46Zi5ub3coKS1uLHA9ITAsYygidGltaW5nIixbImZpIixuLHt0eXBlOnQudHlwZSxmaWQ6ZX1dKX19aWYoISgiaW5pdCJpbiBOUkVVTSYmInBhZ2Vfdmlld190aW1pbmciaW4gTlJFVU0uaW5pdCYmImVuYWJsZWQiaW4gTlJFVU0uaW5pdC5wYWdlX3ZpZXdfdGltaW5nJiZOUkVVTS5pbml0LnBhZ2Vfdmlld190aW1pbmcuZW5hYmxlZD09PSExKSl7dmFyIGEscyxjPXQoImhhbmRsZSIpLGY9dCgibG9hZGVyIiksdT1OUkVVTS5vLkVWO2lmKCJQZXJmb3JtYW5jZU9ic2VydmVyImluIHdpbmRvdyYmImZ1bmN0aW9uIj09dHlwZW9mIHdpbmRvdy5QZXJmb3JtYW5jZU9ic2VydmVyKXthPW5ldyBQZXJmb3JtYW5jZU9ic2VydmVyKHIpLHM9bmV3IFBlcmZvcm1hbmNlT2JzZXJ2ZXIobyk7dHJ5e2Eub2JzZXJ2ZSh7ZW50cnlUeXBlczpbInBhaW50Il19KSxzLm9ic2VydmUoe2VudHJ5VHlwZXM6WyJsYXJnZXN0LWNvbnRlbnRmdWwtcGFpbnQiXX0pfWNhdGNoKGQpe319aWYoImFkZEV2ZW50TGlzdGVuZXIiaW4gZG9jdW1lbnQpe3ZhciBwPSExLGw9WyJjbGljayIsImtleWRvd24iLCJtb3VzZWRvd24iLCJwb2ludGVyZG93biIsInRvdWNoc3RhcnQiXTtsLmZvckVhY2goZnVuY3Rpb24odCl7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcih0LGksITEpfSl9fX0se31dLDIzOltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcigpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gZT8xNSZlW24rK106MTYqTWF0aC5yYW5kb20oKXwwfXZhciBlPW51bGwsbj0wLHI9d2luZG93LmNyeXB0b3x8d2luZG93Lm1zQ3J5cHRvO3ImJnIuZ2V0UmFuZG9tVmFsdWVzJiYoZT1yLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheSgzMSkpKTtmb3IodmFyIG8saT0ieHh4eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4IixhPSIiLHM9MDtzPGkubGVuZ3RoO3MrKylvPWlbc10sIngiPT09bz9hKz10KCkudG9TdHJpbmcoMTYpOiJ5Ij09PW8/KG89MyZ0KCl8OCxhKz1vLnRvU3RyaW5nKDE2KSk6YSs9bztyZXR1cm4gYX1mdW5jdGlvbiBvKCl7ZnVuY3Rpb24gdCgpe3JldHVybiBlPzE1JmVbbisrXToxNipNYXRoLnJhbmRvbSgpfDB9dmFyIGU9bnVsbCxuPTAscj13aW5kb3cuY3J5cHRvfHx3aW5kb3cubXNDcnlwdG87ciYmci5nZXRSYW5kb21WYWx1ZXMmJlVpbnQ4QXJyYXkmJihlPXIuZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50OEFycmF5KDMxKSkpO2Zvcih2YXIgbz1bXSxpPTA7aTwxNjtpKyspby5wdXNoKHQoKS50b1N0cmluZygxNikpO3JldHVybiBvLmpvaW4oIiIpfWUuZXhwb3J0cz17Z2VuZXJhdGVVdWlkOnIsZ2VuZXJhdGVDYXRJZDpvfX0se31dLDI0OltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0LGUpe2lmKCFvKXJldHVybiExO2lmKHQhPT1vKXJldHVybiExO2lmKCFlKXJldHVybiEwO2lmKCFpKXJldHVybiExO2Zvcih2YXIgbj1pLnNwbGl0KCIuIikscj1lLnNwbGl0KCIuIiksYT0wO2E8ci5sZW5ndGg7YSsrKWlmKHJbYV0hPT1uW2FdKXJldHVybiExO3JldHVybiEwfXZhciBvPW51bGwsaT1udWxsLGE9L1ZlcnNpb25cLyhcUyspXHMrU2FmYXJpLztpZihuYXZpZ2F0b3IudXNlckFnZW50KXt2YXIgcz1uYXZpZ2F0b3IudXNlckFnZW50LGM9cy5tYXRjaChhKTtjJiZzLmluZGV4T2YoIkNocm9tZSIpPT09LTEmJnMuaW5kZXhPZigiQ2hyb21pdW0iKT09PS0xJiYobz0iU2FmYXJpIixpPWNbMV0pfWUuZXhwb3J0cz17YWdlbnQ6byx2ZXJzaW9uOmksbWF0Y2g6cn19LHt9XSwyNTpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCxlKXt2YXIgbj1bXSxyPSIiLGk9MDtmb3IociBpbiB0KW8uY2FsbCh0LHIpJiYobltpXT1lKHIsdFtyXSksaSs9MSk7cmV0dXJuIG59dmFyIG89T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtlLmV4cG9ydHM9cn0se31dLDI2OltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0LGUsbil7ZXx8KGU9MCksInVuZGVmaW5lZCI9PXR5cGVvZiBuJiYobj10P3QubGVuZ3RoOjApO2Zvcih2YXIgcj0tMSxvPW4tZXx8MCxpPUFycmF5KG88MD8wOm8pOysrcjxvOylpW3JdPXRbZStyXTtyZXR1cm4gaX1lLmV4cG9ydHM9cn0se31dLDI3OltmdW5jdGlvbih0LGUsbil7ZS5leHBvcnRzPXtleGlzdHM6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cucGVyZm9ybWFuY2UmJndpbmRvdy5wZXJmb3JtYW5jZS50aW1pbmcmJiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93LnBlcmZvcm1hbmNlLnRpbWluZy5uYXZpZ2F0aW9uU3RhcnR9fSx7fV0sZWU6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKCl7fWZ1bmN0aW9uIG8odCl7ZnVuY3Rpb24gZSh0KXtyZXR1cm4gdCYmdCBpbnN0YW5jZW9mIHI/dDp0P2ModCxzLGkpOmkoKX1mdW5jdGlvbiBuKG4scixvLGkpe2lmKCFwLmFib3J0ZWR8fGkpe3QmJnQobixyLG8pO2Zvcih2YXIgYT1lKG8pLHM9bShuKSxjPXMubGVuZ3RoLGY9MDtmPGM7ZisrKXNbZl0uYXBwbHkoYSxyKTt2YXIgZD11W3lbbl1dO3JldHVybiBkJiZkLnB1c2goW3gsbixyLGFdKSxhfX1mdW5jdGlvbiBsKHQsZSl7Z1t0XT1tKHQpLmNvbmNhdChlKX1mdW5jdGlvbiBoKHQsZSl7dmFyIG49Z1t0XTtpZihuKWZvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisrKW5bcl09PT1lJiZuLnNwbGljZShyLDEpfWZ1bmN0aW9uIG0odCl7cmV0dXJuIGdbdF18fFtdfWZ1bmN0aW9uIHYodCl7cmV0dXJuIGRbdF09ZFt0XXx8byhuKX1mdW5jdGlvbiB3KHQsZSl7Zih0LGZ1bmN0aW9uKHQsbil7ZT1lfHwiZmVhdHVyZSIseVtuXT1lLGUgaW4gdXx8KHVbZV09W10pfSl9dmFyIGc9e30seT17fSx4PXtvbjpsLGFkZEV2ZW50TGlzdGVuZXI6bCxyZW1vdmVFdmVudExpc3RlbmVyOmgsZW1pdDpuLGdldDp2LGxpc3RlbmVyczptLGNvbnRleHQ6ZSxidWZmZXI6dyxhYm9ydDphLGFib3J0ZWQ6ITF9O3JldHVybiB4fWZ1bmN0aW9uIGkoKXtyZXR1cm4gbmV3IHJ9ZnVuY3Rpb24gYSgpeyh1LmFwaXx8dS5mZWF0dXJlKSYmKHAuYWJvcnRlZD0hMCx1PXAuYmFja2xvZz17fSl9dmFyIHM9Im5yQGNvbnRleHQiLGM9dCgiZ29zIiksZj10KDI1KSx1PXt9LGQ9e30scD1lLmV4cG9ydHM9bygpO3AuYmFja2xvZz11fSx7fV0sZ29zOltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0LGUsbil7aWYoby5jYWxsKHQsZSkpcmV0dXJuIHRbZV07dmFyIHI9bigpO2lmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSYmT2JqZWN0LmtleXMpdHJ5e3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpyLHdyaXRhYmxlOiEwLGVudW1lcmFibGU6ITF9KSxyfWNhdGNoKGkpe31yZXR1cm4gdFtlXT1yLHJ9dmFyIG89T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtlLmV4cG9ydHM9cn0se31dLGhhbmRsZTpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCxlLG4scil7by5idWZmZXIoW3RdLHIpLG8uZW1pdCh0LGUsbil9dmFyIG89dCgiZWUiKS5nZXQoImhhbmRsZSIpO2UuZXhwb3J0cz1yLHIuZWU9b30se31dLGlkOltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4hdHx8Im9iamVjdCIhPT1lJiYiZnVuY3Rpb24iIT09ZT8tMTp0PT09d2luZG93PzA6YSh0LGksZnVuY3Rpb24oKXtyZXR1cm4gbysrfSl9dmFyIG89MSxpPSJuckBpZCIsYT10KCJnb3MiKTtlLmV4cG9ydHM9cn0se31dLGxvYWRlcjpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIoKXtpZighRSsrKXt2YXIgdD1iLmluZm89TlJFVU0uaW5mbyxlPWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpWzBdO2lmKHNldFRpbWVvdXQodS5hYm9ydCwzZTQpLCEodCYmdC5saWNlbnNlS2V5JiZ0LmFwcGxpY2F0aW9uSUQmJmUpKXJldHVybiB1LmFib3J0KCk7Zih5LGZ1bmN0aW9uKGUsbil7dFtlXXx8KHRbZV09bil9KSxjKCJtYXJrIixbIm9ubG9hZCIsYSgpK2Iub2Zmc2V0XSxudWxsLCJhcGkiKTt2YXIgbj1sLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO24uc3JjPSJodHRwczovLyIrdC5hZ2VudCxlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG4sZSl9fWZ1bmN0aW9uIG8oKXsiY29tcGxldGUiPT09bC5yZWFkeVN0YXRlJiZpKCl9ZnVuY3Rpb24gaSgpe2MoIm1hcmsiLFsiZG9tQ29udGVudCIsYSgpK2Iub2Zmc2V0XSxudWxsLCJhcGkiKX1mdW5jdGlvbiBhKCl7cmV0dXJuIE8uZXhpc3RzJiZwZXJmb3JtYW5jZS5ub3c/TWF0aC5yb3VuZChwZXJmb3JtYW5jZS5ub3coKSk6KHM9TWF0aC5tYXgoKG5ldyBEYXRlKS5nZXRUaW1lKCkscykpLWIub2Zmc2V0fXZhciBzPShuZXcgRGF0ZSkuZ2V0VGltZSgpLGM9dCgiaGFuZGxlIiksZj10KDI1KSx1PXQoImVlIiksZD10KDI0KSxwPXdpbmRvdyxsPXAuZG9jdW1lbnQsaD0iYWRkRXZlbnRMaXN0ZW5lciIsbT0iYXR0YWNoRXZlbnQiLHY9cC5YTUxIdHRwUmVxdWVzdCx3PXYmJnYucHJvdG90eXBlO05SRVVNLm89e1NUOnNldFRpbWVvdXQsU0k6cC5zZXRJbW1lZGlhdGUsQ1Q6Y2xlYXJUaW1lb3V0LFhIUjp2LFJFUTpwLlJlcXVlc3QsRVY6cC5FdmVudCxQUjpwLlByb21pc2UsTU86cC5NdXRhdGlvbk9ic2VydmVyfTt2YXIgZz0iIitsb2NhdGlvbix5PXtiZWFjb246ImJhbS5uci1kYXRhLm5ldCIsZXJyb3JCZWFjb246ImJhbS5uci1kYXRhLm5ldCIsYWdlbnQ6ImpzLWFnZW50Lm5ld3JlbGljLmNvbS9uci1zcGEtMTE2OS5taW4uanMifSx4PXYmJncmJndbaF0mJiEvQ3JpT1MvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCksYj1lLmV4cG9ydHM9e29mZnNldDpzLG5vdzphLG9yaWdpbjpnLGZlYXR1cmVzOnt9LHhocldyYXBwYWJsZTp4LHVzZXJBZ2VudDpkfTt0KDE5KSx0KDIyKSxsW2hdPyhsW2hdKCJET01Db250ZW50TG9hZGVkIixpLCExKSxwW2hdKCJsb2FkIixyLCExKSk6KGxbbV0oIm9ucmVhZHlzdGF0ZWNoYW5nZSIsbykscFttXSgib25sb2FkIixyKSksYygibWFyayIsWyJmaXJzdGJ5dGUiLHNdLG51bGwsImFwaSIpO3ZhciBFPTAsTz10KDI3KX0se31dLCJ3cmFwLWZ1bmN0aW9uIjpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCl7cmV0dXJuISh0JiZ0IGluc3RhbmNlb2YgRnVuY3Rpb24mJnQuYXBwbHkmJiF0W2FdKX12YXIgbz10KCJlZSIpLGk9dCgyNiksYT0ibnJAb3JpZ2luYWwiLHM9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxjPSExO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4odCxlLG4sbyl7ZnVuY3Rpb24gbnJXcmFwcGVyKCl7dmFyIHIsYSxzLGM7dHJ5e2E9dGhpcyxyPWkoYXJndW1lbnRzKSxzPSJmdW5jdGlvbiI9PXR5cGVvZiBuP24ocixhKTpufHx7fX1jYXRjaChmKXtwKFtmLCIiLFtyLGEsb10sc10pfXUoZSsic3RhcnQiLFtyLGEsb10scyk7dHJ5e3JldHVybiBjPXQuYXBwbHkoYSxyKX1jYXRjaChkKXt0aHJvdyB1KGUrImVyciIsW3IsYSxkXSxzKSxkfWZpbmFsbHl7dShlKyJlbmQiLFtyLGEsY10scyl9fXJldHVybiByKHQpP3Q6KGV8fChlPSIiKSxucldyYXBwZXJbYV09dCxkKHQsbnJXcmFwcGVyKSxucldyYXBwZXIpfWZ1bmN0aW9uIGYodCxlLG8saSl7b3x8KG89IiIpO3ZhciBhLHMsYyxmPSItIj09PW8uY2hhckF0KDApO2ZvcihjPTA7YzxlLmxlbmd0aDtjKyspcz1lW2NdLGE9dFtzXSxyKGEpfHwodFtzXT1uKGEsZj9zK286byxpLHMpKX1mdW5jdGlvbiB1KG4scixvKXtpZighY3x8ZSl7dmFyIGk9YztjPSEwO3RyeXt0LmVtaXQobixyLG8sZSl9Y2F0Y2goYSl7cChbYSxuLHIsb10pfWM9aX19ZnVuY3Rpb24gZCh0LGUpe2lmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSYmT2JqZWN0LmtleXMpdHJ5e3ZhciBuPU9iamVjdC5rZXlzKHQpO3JldHVybiBuLmZvckVhY2goZnVuY3Rpb24obil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19LHNldDpmdW5jdGlvbihlKXtyZXR1cm4gdFtuXT1lLGV9fSl9KSxlfWNhdGNoKHIpe3AoW3JdKX1mb3IodmFyIG8gaW4gdClzLmNhbGwodCxvKSYmKGVbb109dFtvXSk7cmV0dXJuIGV9ZnVuY3Rpb24gcChlKXt0cnl7dC5lbWl0KCJpbnRlcm5hbC1lcnJvciIsZSl9Y2F0Y2gobil7fX1yZXR1cm4gdHx8KHQ9byksbi5pblBsYWNlPWYsbi5mbGFnPWEsbn19LHt9XX0se30sWyJsb2FkZXIiLDIsMTYsNSwzLDRdKTsKICAgICAgICAgIDtOUkVVTS5sb2FkZXJfY29uZmlnPXthY2NvdW50SUQ6IjM5Mjg0Iix0cnVzdEtleToiMzkyODQiLGFnZW50SUQ6Ijc0NDc0NjgiLGxpY2Vuc2VLZXk6IjY4OWQ1YjQ1NjIiLGFwcGxpY2F0aW9uSUQ6IjIwMTEyMjQifQogICAgICAgICAgO05SRVVNLmluZm89e2JlYWNvbjoiYmFtLm5yLWRhdGEubmV0IixlcnJvckJlYWNvbjoiYmFtLm5yLWRhdGEubmV0IixsaWNlbnNlS2V5OiI2ODlkNWI0NTYyIixhcHBsaWNhdGlvbklEOiIyMDExMjI0IixzYToxfQogICAgICAgIDwvc2NyaXB0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2YudmltZW9jZG4uY29tL3N0eWxlcy9jc3Nfb3B0L2dsb2JhbC9pY29uX2ZvbnRzLm1pbi5jc3M/ZTEwMTNkZWI2ZTg0NDcwYzc1ZDA3NWY4NmRiM2NkNGQ5NGQyMTgxNiI+CgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2YudmltZW9jZG4uY29tL3N0eWxlcy9jc3Nfb3B0L2V4Y2VwdGlvbl9jb21iaW5lZC5taW4uY3NzPzRhNThiM2I3Ij4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9zdHlsZXMvY3NzX29wdC90b3BuYXZfY2FydF9idXR0b25fY29tYmluZWQubWluLmNzcz9hMjBhNzU2NiI+CgoKCiAgICAgICAgPHNjcmlwdD4KICAgICAgICAKICAgICAgICB2YXIgcGxheWVyQXNzZXRVcmxzID0geyJiYXJlYm9uZV9qcyI6Imh0dHBzOlwvXC9mLnZpbWVvY2RuLmNvbVwvcFwvMy4yMy4wXC9qc1wvYmFyZWJvbmUuanMiLCJqcyI6Imh0dHBzOlwvXC9mLnZpbWVvY2RuLmNvbVwvcFwvMy4yMy4wXC9qc1wvcGxheWVyLmpzIiwiY2hyb21lbGVzc19jc3MiOiJodHRwczpcL1wvZi52aW1lb2Nkbi5jb21cL3BcLzMuMjMuMFwvY3NzXC9jaHJvbWVsZXNzLmNzcyIsImNocm9tZWxlc3NfanMiOiJodHRwczpcL1wvZi52aW1lb2Nkbi5jb21cL3BcLzMuMjMuMFwvanNcL2Nocm9tZWxlc3MuanMiLCJjc3MiOiJodHRwczpcL1wvZi52aW1lb2Nkbi5jb21cL3BcLzMuMjMuMFwvY3NzXC9wbGF5ZXIuY3NzIiwicGxheWVyX3VybCI6InBsYXllci52aW1lby5jb20ifTsKCiAgICAgICAgdmFyIF9leHRlbmQgPSBmdW5jdGlvbigpe2Zvcih2YXIgcj1hcmd1bWVudHNbMF0sbj0xLGU9YXJndW1lbnRzLmxlbmd0aDtlPm47bisrKXt2YXIgdD1hcmd1bWVudHNbbl07Zm9yKHZhciBhIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShhKSYmKHJbYV09dFthXSl9cmV0dXJuIHJ9OwoKICAgICAgICAgICAgd2luZG93ID0gX2V4dGVuZCh3aW5kb3csIHsidmltZW9fZXNpIjp7ImNvbmZpZyI6eyJyb3V0ZSI6IlZpbWVvXFxDb250cm9sbGVyXFxDbGlwQ29udHJvbGxlcjptYWluIiwiY29udHJvbGxlciI6IlZpbWVvXFxDb250cm9sbGVyXFxDbGlwQ29udHJvbGxlciIsImF1dG9jb21wbGV0ZV9lbmFibGVkIjp0cnVlLCJvbnNpdGVfcmVmZXJyZXIiOmZhbHNlfX0sImFibGluY29sbl9jb25maWciOltdLCJ2aW1lbyI6eyJjb25maWciOnsiY2FydCI6eyJjYXJ0X2NvbnRlbnQiOnsic3RvY2siOnsic3RvcmUiOiJzdG9jayIsInZlcnNpb24iOjEsInF1YW50aXRpZXMiOltdLCJpdGVtcyI6W10sImF0dHJpYnV0ZXMiOltdLCJjdXJyZW5jeSI6IkJSTCIsIml0ZW1zX3NvcnRlZF9ieV9pbmRleCI6W10sIml0ZW1zX2NvdW50IjowfX19fX19KTsKPC9zY3JpcHQ+CgogICAgICAgICAgICAgICAgCiAgICA8c2NyaXB0PgogICAgICAgIHZhciBhYmxpbmNvbG5fY29uZmlnID0gYWJsaW5jb2xuX2NvbmZpZyB8fCB7fTsKICAgICAgICBhYmxpbmNvbG5fY29uZmlnLnRlc3RzID0geyJKUy5PbW5pc2VhcmNoIjp7ImlkIjo1MjcsIm5hbWUiOiJKUy5PbW5pc2VhcmNoIiwiYnVja2V0cyI6MTAwMCwiaW5wdXQiOiJjdWlkIiwidXJsIjoiXC8iLCJleHBlcmltZW50cyI6W3siaWQiOjE0NTIsIm5hbWUiOiJwaGFzZTEiLCJidWNrZXRzIjoxMDAsInN0YXRlIjoxLCJwdWJsaXNoZWRfb24iOiIyMDIwLTEwLTIyIDEzOjQ2OjUxIiwicGF1c2VkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInN0b3BwZWRfb24iOiIwMDAwLTAwLTAwIDAwOjAwOjAwIiwicGFyYW1ldGVycyI6W3siaWQiOjI1NDUsIm5hbWUiOiJvbW5pc2VhcmNoX2VuYWJsZWQiLCJjaG9pY2UiOiJ0cnVlIiwid2VpZ2h0IjoxfSx7ImlkIjoyNTQ2LCJuYW1lIjoib21uaXNlYXJjaF9lbmFibGVkIiwiY2hvaWNlIjoiZmFsc2UiLCJ3ZWlnaHQiOjF9XSwic2VnbWVudHMiOltdfSx7ImlkIjoxNDU0LCJuYW1lIjoicGhhc2UyIiwiYnVja2V0cyI6MjAwLCJzdGF0ZSI6MSwicHVibGlzaGVkX29uIjoiMjAyMC0xMC0yMyAwODoxNjo1NSIsInBhdXNlZF9vbiI6IjAwMDAtMDAtMDAgMDA6MDA6MDAiLCJzdG9wcGVkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInBhcmFtZXRlcnMiOlt7ImlkIjoyNTUxLCJuYW1lIjoib21uaXNlYXJjaF9lbmFibGVkIiwiY2hvaWNlIjoidHJ1ZSIsIndlaWdodCI6MX0seyJpZCI6MjU1MiwibmFtZSI6Im9tbmlzZWFyY2hfZW5hYmxlZCIsImNob2ljZSI6ImZhbHNlIiwid2VpZ2h0IjoxfV0sInNlZ21lbnRzIjpbXX0seyJpZCI6MTQ1OCwibmFtZSI6InBoYXNlMyIsImJ1Y2tldHMiOjMwMCwic3RhdGUiOjEsInB1Ymxpc2hlZF9vbiI6IjIwMjAtMTAtMjYgMDg6NTQ6NDgiLCJwYXVzZWRfb24iOiIwMDAwLTAwLTAwIDAwOjAwOjAwIiwic3RvcHBlZF9vbiI6IjAwMDAtMDAtMDAgMDA6MDA6MDAiLCJwYXJhbWV0ZXJzIjpbeyJpZCI6MjU1NywibmFtZSI6Im9tbmlzZWFyY2hfZW5hYmxlZCIsImNob2ljZSI6InRydWUiLCJ3ZWlnaHQiOjF9LHsiaWQiOjI1NTgsIm5hbWUiOiJvbW5pc2VhcmNoX2VuYWJsZWQiLCJjaG9pY2UiOiJmYWxzZSIsIndlaWdodCI6MX1dLCJzZWdtZW50cyI6W119LHsiaWQiOjE0NjEsIm5hbWUiOiJwaGFzZTQiLCJidWNrZXRzIjo0MDAsInN0YXRlIjoxLCJwdWJsaXNoZWRfb24iOiIyMDIwLTEwLTI3IDA4OjQ2OjU2IiwicGF1c2VkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInN0b3BwZWRfb24iOiIwMDAwLTAwLTAwIDAwOjAwOjAwIiwicGFyYW1ldGVycyI6W3siaWQiOjI1NjUsIm5hbWUiOiJvbW5pc2VhcmNoX2VuYWJsZWQiLCJjaG9pY2UiOiJ0cnVlIiwid2VpZ2h0IjoxfSx7ImlkIjoyNTY2LCJuYW1lIjoib21uaXNlYXJjaF9lbmFibGVkIiwiY2hvaWNlIjoiZmFsc2UiLCJ3ZWlnaHQiOjF9XSwic2VnbWVudHMiOltdfV19LCJKUy5Ub3BOYXYuQ3JlYXRlIjp7ImlkIjo0NTIsIm5hbWUiOiJKUy5Ub3BOYXYuQ3JlYXRlIiwiYnVja2V0cyI6MTAwMCwiaW5wdXQiOiJ2dWlkIiwidXJsIjoiOmFsbCIsImV4cGVyaW1lbnRzIjpbeyJpZCI6MTIzNSwibmFtZSI6IiogTG9nZ2VkIG91dCBKb2luIE1vZGFsIiwiYnVja2V0cyI6MTAwLCJzdGF0ZSI6MywicHVibGlzaGVkX29uIjoiMjAyMC0wNi0xNSAxNjoxNzoxNSIsInBhdXNlZF9vbiI6IjAwMDAtMDAtMDAgMDA6MDA6MDAiLCJzdG9wcGVkX29uIjoiMjAyMC0xMC0xNSAwNjo1MzoyNSIsInBhcmFtZXRlcnMiOlt7ImlkIjoyMTUwLCJuYW1lIjoidG9wX25hdl9jcmVhdGUiLCJjaG9pY2UiOiJjb250cm9sIiwid2VpZ2h0IjoxfSx7ImlkIjoyMTUxLCJuYW1lIjoidG9wX25hdl9jcmVhdGUiLCJjaG9pY2UiOiJqb2luX3dpdGhvdXRfZGVzaWduIiwid2VpZ2h0IjoxfSx7ImlkIjoyMTUyLCJuYW1lIjoidG9wX25hdl9jcmVhdGUiLCJjaG9pY2UiOiJqb2luX3dpdGhfZGVzaWduIiwid2VpZ2h0IjoxfV0sInNlZ21lbnRzIjpbXX0seyJpZCI6MTMxMSwibmFtZSI6IiogKiBMb2dnZWQgb3V0IEpvaW4gTW9kYWwiLCJidWNrZXRzIjo5MDAsInN0YXRlIjozLCJwdWJsaXNoZWRfb24iOiIyMDIwLTA2LTIzIDE1OjAxOjUyIiwicGF1c2VkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInN0b3BwZWRfb24iOiIyMDIwLTEwLTE1IDA2OjUzOjM1IiwicGFyYW1ldGVycyI6W3siaWQiOjIyNzUsIm5hbWUiOiJ0b3BfbmF2X2NyZWF0ZSIsImNob2ljZSI6ImNvbnRyb2wiLCJ3ZWlnaHQiOjF9LHsiaWQiOjIyNzYsIm5hbWUiOiJ0b3BfbmF2X2NyZWF0ZSIsImNob2ljZSI6ImpvaW5fd2l0aG91dF9kZXNpZ24iLCJ3ZWlnaHQiOjF9LHsiaWQiOjIyNzcsIm5hbWUiOiJ0b3BfbmF2X2NyZWF0ZSIsImNob2ljZSI6ImpvaW5fd2l0aF9kZXNpZ24iLCJ3ZWlnaHQiOjF9XSwic2VnbWVudHMiOltdfV19LCJKUy5VcHNlbGwuUmV2aWV3Ijp7ImlkIjo0NDQsIm5hbWUiOiJKUy5VcHNlbGwuUmV2aWV3IiwiYnVja2V0cyI6MTAwMCwiaW5wdXQiOiJ2dWlkIiwidXJsIjoiXC8iLCJleHBlcmltZW50cyI6W119LCJUb3BOYXYuTmV3VmlkZW8uU2NyZWVuUmVjb3JkRm9yQWxsIjp7ImlkIjo1NDEsIm5hbWUiOiJUb3BOYXYuTmV3VmlkZW8uU2NyZWVuUmVjb3JkRm9yQWxsIiwiYnVja2V0cyI6MTAwMCwiaW5wdXQiOiJ2dWlkIiwidXJsIjoiXC8iLCJleHBlcmltZW50cyI6W3siaWQiOjE0MTgsIm5hbWUiOiJTaG93IHJlY29yZGVyIGxpbmsgZm9yIGFsbCIsImJ1Y2tldHMiOjEwMCwic3RhdGUiOjMsInB1Ymxpc2hlZF9vbiI6IjIwMjAtMTAtMDUgMTQ6MzA6NDAiLCJwYXVzZWRfb24iOiIwMDAwLTAwLTAwIDAwOjAwOjAwIiwic3RvcHBlZF9vbiI6IjIwMjAtMTAtMjEgMDM6Mjg6NDMiLCJwYXJhbWV0ZXJzIjpbeyJpZCI6MjQ3NywibmFtZSI6InNob3dfcmVjb3JkZXJfZm9yX2FsbCIsImNob2ljZSI6ImNvbnRyb2wiLCJ3ZWlnaHQiOjF9LHsiaWQiOjI0NzgsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJ2YXJpYW50X3NjcmVlbiIsIndlaWdodCI6MX1dLCJzZWdtZW50cyI6W119LHsiaWQiOjE0NTAsIm5hbWUiOiIqIFNob3cgcmVjb3JkZXIgbGluayBmb3IgYWxsIiwiYnVja2V0cyI6MCwic3RhdGUiOjMsInB1Ymxpc2hlZF9vbiI6IjIwMjAtMTAtMjIgMTc6MTc6MTEiLCJwYXVzZWRfb24iOiIyMDIwLTEwLTIyIDE3OjE3OjI3Iiwic3RvcHBlZF9vbiI6IjIwMjAtMTAtMjIgMTc6MTc6NDAiLCJwYXJhbWV0ZXJzIjpbeyJpZCI6MjU0MCwibmFtZSI6InNob3dfcmVjb3JkZXJfZm9yX2FsbCIsImNob2ljZSI6ImNvbnRyb2wiLCJ3ZWlnaHQiOjF9LHsiaWQiOjI1NDEsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJ2YXJpYW50X3NjcmVlbiIsIndlaWdodCI6MX0seyJpZCI6MjU0MiwibmFtZSI6InNob3dfcmVjb3JkZXJfZm9yX2FsbCIsImNob2ljZSI6InZhcmlhbnRfc2NyZWVuX2FuaW1hdGlvbiIsIndlaWdodCI6MX1dLCJzZWdtZW50cyI6W119LHsiaWQiOjE0NTMsIm5hbWUiOiIqICogU2hvdyByZWNvcmRlciBsaW5rIGZvciBhbGwiLCJidWNrZXRzIjo1MCwic3RhdGUiOjMsInB1Ymxpc2hlZF9vbiI6IjIwMjAtMTAtMjIgMTc6MzY6NDEiLCJwYXVzZWRfb24iOiIyMDIwLTEwLTI2IDE1OjA3OjI4Iiwic3RvcHBlZF9vbiI6IjIwMjAtMTAtMjYgMTU6MDc6NTYiLCJwYXJhbWV0ZXJzIjpbeyJpZCI6MjU0NywibmFtZSI6InNob3dfcmVjb3JkZXJfZm9yX2FsbCIsImNob2ljZSI6ImNvbnRyb2wiLCJ3ZWlnaHQiOjF9LHsiaWQiOjI1NDgsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJ2YXJpYW50X3NjcmVlbiIsIndlaWdodCI6MX0seyJpZCI6MjU0OSwibmFtZSI6InNob3dfcmVjb3JkZXJfZm9yX2FsbCIsImNob2ljZSI6InZhcmlhbnRfc2NyZWVuX2FuaW1hdGlvbiIsIndlaWdodCI6MX1dLCJzZWdtZW50cyI6W119LHsiaWQiOjE0NjAsIm5hbWUiOiIqICogKiBTaG93IHJlY29yZGVyIGxpbmsgZm9yIGFsbCIsImJ1Y2tldHMiOjEwMCwic3RhdGUiOjMsInB1Ymxpc2hlZF9vbiI6IjIwMjAtMTAtMjYgMTU6MDg6NTQiLCJwYXVzZWRfb24iOiIwMDAwLTAwLTAwIDAwOjAwOjAwIiwic3RvcHBlZF9vbiI6IjIwMjAtMTAtMjcgMTA6MDI6NTQiLCJwYXJhbWV0ZXJzIjpbeyJpZCI6MjU2MiwibmFtZSI6InNob3dfcmVjb3JkZXJfZm9yX2FsbCIsImNob2ljZSI6ImNvbnRyb2wiLCJ3ZWlnaHQiOjF9LHsiaWQiOjI1NjMsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJ2YXJpYW50X3NjcmVlbiIsIndlaWdodCI6MX0seyJpZCI6MjU2NCwibmFtZSI6InNob3dfcmVjb3JkZXJfZm9yX2FsbCIsImNob2ljZSI6InZhcmlhbnRfc2NyZWVuX2FuaW1hdGlvbiIsIndlaWdodCI6MX1dLCJzZWdtZW50cyI6W119LHsiaWQiOjE0NjIsIm5hbWUiOiIqICogKiAqIFNob3cgcmVjb3JkZXIgbGluayBmb3IgYWxsIiwiYnVja2V0cyI6MTAwMCwic3RhdGUiOjEsInB1Ymxpc2hlZF9vbiI6IjIwMjAtMTAtMjcgMTA6MDQ6MTAiLCJwYXVzZWRfb24iOiIwMDAwLTAwLTAwIDAwOjAwOjAwIiwic3RvcHBlZF9vbiI6IjAwMDAtMDAtMDAgMDA6MDA6MDAiLCJwYXJhbWV0ZXJzIjpbeyJpZCI6MjU2NywibmFtZSI6InNob3dfcmVjb3JkZXJfZm9yX2FsbCIsImNob2ljZSI6ImNvbnRyb2wiLCJ3ZWlnaHQiOjV9LHsiaWQiOjI1NjgsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJ2YXJpYW50X3NjcmVlbiIsIndlaWdodCI6OTB9LHsiaWQiOjI1NjksIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJ2YXJpYW50X3NjcmVlbl9hbmltYXRpb24iLCJ3ZWlnaHQiOjV9XSwic2VnbWVudHMiOltdfV19fTsKICAgIDwvc2NyaXB0Pgo8c2NyaXB0PgooZnVuY3Rpb24oKSB7CiAgICB3aW5kb3cuX2d0bSA9IFt7ImV4Y2VwdGlvbl9odHRwX2NvZGUiOiJIVFRQXC8xLjEgNDUxIFVuYXZhaWxhYmxlIEZvciBMZWdhbCBSZWFzb25zIiwibGFuZ3VhZ2UiOiJlbiIsInVzZXJfc3RhdHVzIjoibG9nZ2VkX291dCIsInVzZXJfdHlwZSI6Im5vbmUiLCJnYV91bml2ZXJzYWxfaWQiOiJVQS03NjY0MS04IiwiY29tc2NvcmVfc2l0ZV9pZCI6MTAzNDgyODl9XTsKCiAgICAgICAgdmFyIGdkcHJDb29raWUgPSAoZG9jdW1lbnQuY29va2llLm1hdGNoKC9eKD86Lio7KT9ccyp2aW1lb19nZHByX29wdGluXHMqPVxzKihbXjtdKykoPzouKik/JC8pfHxbLG51bGxdKVsxXTsKICAgIGlmIChnZHByQ29va2llID09PSAnLTEnKSB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICAgICB3aW5kb3cuX2d0bS5wdXNoKHsKICAgICAgICAndnVpZCc6IGRvY3VtZW50LmNvb2tpZS5yZXBsYWNlKC8oPzooPzpefC4qO1xzKil2dWlkXHMqXD1ccyooW147XSopLiokKXxeLiokLywgIiQxIiksCiAgICAgICAgJ2d0bS5zdGFydCc6IG5ldyBEYXRlKCkuZ2V0VGltZSgpLAogICAgICAgICdldmVudCc6ICdndG0uanMnCiAgICB9KTsKICAgIHZhciBndG1zID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0JyksCiAgICAgICAgbm9kZTsKICAgIGd0bXMuYXN5bmMgPSB0cnVlOwogICAgZ3Rtcy50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7CiAgICBndG1zLnNyYyA9ICcvL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndG0uanM/aWQ9R1RNLVJCS0smbD1fZ3RtJzsKICAgIG5vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2NyaXB0JylbMF07CiAgICBub2RlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGd0bXMsIG5vZGUpOwp9KSgpOwo8L3NjcmlwdD4KPHNjcmlwdD4KICAgIHZhciBnb29nbGV0YWcgPSBnb29nbGV0YWcgfHwge30sCiAgICAgICAgZ3B0YWRzbG90cyA9IFtdLAogICAgICAgIGxhbmd1YWdlLAogICAgICAgIGhhc191cGxvYWRlZCwKICAgICAgICBjb2hvcnQ7CiAgICBnb29nbGV0YWcuY21kID0gZ29vZ2xldGFnLmNtZCB8fCBbXTsKCiAgICAoZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGdkcHJDb29raWUgPSAoZG9jdW1lbnQuY29va2llLm1hdGNoKC9eKD86Lio7KT9ccyp2aW1lb19nZHByX29wdGluXHMqPVxzKihbXjtdKykoPzouKik/JC8pfHxbLG51bGxdKVsxXTsKICAgICAgICBpZiAoZ2RwckNvb2tpZSA9PT0gJy0xJykgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIHZhciBnYWRzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0JyksCiAgICAgICAgICAgIHVzZVNTTCA9ICdodHRwczonID09IGRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sLAogICAgICAgICAgICBub2RlOwogICAgICAgIGdhZHMuYXN5bmMgPSB0cnVlOwogICAgICAgIGdhZHMudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnOwogICAgICAgIGdhZHMuc3JjID0gKHVzZVNTTCA/ICdodHRwczonIDogJ2h0dHA6JykgKyAnLy93d3cuZ29vZ2xldGFnc2VydmljZXMuY29tL3RhZy9qcy9ncHQuanMnOwogICAgICAgIG5vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2NyaXB0JylbMF07CiAgICAgICAgbm9kZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShnYWRzLCBub2RlKTsKICAgIH0pKCk7CgogICAgZ29vZ2xldGFnLmNtZC5wdXNoKGZ1bmN0aW9uKCkgewogICAgICAgIAogICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlID0gZG9jdW1lbnQuY29va2llLnJlcGxhY2UoLyg/Oig/Ol58Lio7XHMqKWxhbmd1YWdlXHMqXD1ccyooW147XSopLiokKXxeLiokLywgIiQxIik7CiAgICAgICAgICAgIGhhc191cGxvYWRlZCA9IChkb2N1bWVudC5jb29raWUucmVwbGFjZSgvKD86KD86XnwuKjtccyopaGFzX3VwbG9hZGVkXHMqXD1ccyooW147XSopLiokKXxeLiokLywgIiQxIikpID8gJ1knIDogJ04nOwogICAgICAgICAgICBjb25zZW50ID0gKGRvY3VtZW50LmNvb2tpZS5yZXBsYWNlKC8oPzooPzpefC4qO1xzKil2aW1lb19nZHByX29wdGluXHMqXD1ccyooW147XSopLiokKXxeLiokLywgIiQxIikpID09PSAnLTEnID8gMSA6IDA7CiAgICAgICAgICAgIGNvaG9ydCA9ICdBJzsKICAgICAgICAKICAgICAgICBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdsYW5ndWFnZScsIFtsYW5ndWFnZV0pOwogICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoJ2lzX3VwbG9hZGVyJywgW2hhc191cGxvYWRlZF0pOwogICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoJ2NvaG9ydCcsIFtjb2hvcnRdKTsKICAgICAgICBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdjb2hvcnRfYScsIFsoY29ob3J0ID09PSAnQScpID8gJ1knIDogJ04nXSk7CiAgICAgICAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnY29ob3J0X2InLCBbKGNvaG9ydCA9PT0gJ0InKSA/ICdZJyA6ICdOJ10pOwogICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoJ3Byb2R1Y3QnLCBbJyddKTsKICAgICAgICBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdzdG9yYWdlJywgWydOJ10pOwoKICAgICAgICAgICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoJ3NlYycsIFsnZmFsc2UnXSk7CgogICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoJ2xvZ2dlZF9pbicsIFsnZmFsc2UnXSk7CgogICAgICAgICAgICAgICAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygncnB2JywgKE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoxMDApKzEpLnRvU3RyaW5nKCkpOwoKICAgICAgICBnb29nbGV0YWcucHViYWRzKCkuc2V0UmVxdWVzdE5vblBlcnNvbmFsaXplZEFkcyhjb25zZW50KTsKICAgICAgICBnb29nbGV0YWcucHViYWRzKCkuZW5hYmxlQXN5bmNSZW5kZXJpbmcoKTsKICAgICAgICBnb29nbGV0YWcucHViYWRzKCkuZGlzYWJsZUluaXRpYWxMb2FkKCk7CiAgICAgICAgZ29vZ2xldGFnLmVuYWJsZVNlcnZpY2VzKCk7CiAgICB9KTsKPC9zY3JpcHQ+CgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vanNfb3B0L2xvZ2dpbmdfY29tYmluZWQubWluLmpzPzk3NDIxM2QxIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2YudmltZW9jZG4uY29tL2pzX29wdC9hYmxpbmNvbG5fY29tYmluZWQubWluLmpzPzZjNGFjYjU3Ij48L3NjcmlwdD4KCgoKICAgIDwvaGVhZD4KICAgIDxib2R5IGNsYXNzPSJvbnNpdGUgIj4KICAgICAgICA8ZGl2IGlkPSJ3cmFwIiBjbGFzcz0ib3V0ZXJfd3JhcCI+CiAgICAgICAgICAgIDxkaXYgaWQ9InRvcG5hdl9vdXRlcl93cmFwIj4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImNyZWF0ZS1mYWNlYm9vay1oZWFkZXIiPjwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJWaW1lb0JyYW5kX0NvbG9yUmliYm9uICI+PC9kaXY+CgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKCjxzdHlsZT4KICAgIEAtd2Via2l0LWtleWZyYW1lcyByZWNvcmRfYW5pbWF0aW9uIHsKICAgICAgICAwJSwgMjAlLCA1MCUsIDgwJSwgMTAwJSB7CiAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgfQogICAgICAgIDQwJSB7CiAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDJweCk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgycHgpOwogICAgICAgIH0KICAgICAgICA2MCUgewogICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgzcHgpOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoM3B4KTsKICAgICAgICB9CiAgICB9CgogICAgQGtleWZyYW1lcyByZWNvcmRfYW5pbWF0aW9uIHsKICAgICAgICAwJSwgMjAlLCA1MCUsIDgwJSwgMTAwJSB7CiAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgfQogICAgICAgIDQwJSB7CiAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDJweCk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgycHgpOwogICAgICAgIH0KICAgICAgICA2MCUgewogICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgzcHgpOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoM3B4KTsKICAgICAgICB9CiAgICB9CgogICAgLmxvZ2dlZF9vdXRfcmVjb3JkX2FuaW1hdGlvbiB7CiAgICAgICAgYW5pbWF0aW9uOiByZWNvcmRfYW5pbWF0aW9uIDEuNXMgLjI1cyA1OwogICAgfQoKICAgIC5sb2dnZWRfaW5fcmVjb3JkX2FuaW1hdGlvbiB7CiAgICAgICAgYW5pbWF0aW9uOiByZWNvcmRfYW5pbWF0aW9uIDEuNXMgLjI1cyBpbmZpbml0ZTsKICAgIH0KCiAgICAucmVjb3JkZXJfbmV3X2xhYmVsIHsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMxMTQwQzY7CiAgICAgICAgY29sb3I6ICNmZmY7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgICAgIGhlaWdodDogMjBweDsKICAgICAgICBsaW5lLWhlaWdodDogMjBweDsKICAgICAgICBtYXJnaW4tbGVmdDogMTRweDsKICAgICAgICBmb250LXNpemU6IDEwcHg7CiAgICAgICAgd2lkdGg6IDQwcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICB9Cjwvc3R5bGU+Cgo8c2NyaXB0PgogICAgd2luZG93LnZpbWVvID0gd2luZG93LnZpbWVvIHx8IHt9Owo8L3NjcmlwdD4KCjxkaXYgaWQ9InRvcG5hdl9kZXNrdG9wIiBjbGFzcz0idG9wbmF2X2Rlc2t0b3AgIiByb2xlPSJiYW5uZXIiPgogICAgPGRpdiBjbGFzcz0idG9wbmF2X2Rlc2t0b3Bfd3JhcHBlciI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9InRvcG5hdl9kZXNrdG9wX2xvZ28iIGhyZWY9Ii8vdmltZW8uY29tIiBhbHQ9IkdvIHRvIFZpbWVvIGhvbWUgcGFnZSIgdGl0bGU9IkdvIHRvIFZpbWVvIGhvbWUgcGFnZSIgYXJpYS1sYWJlbD0iR28gdG8gVmltZW8gaG9tZSBwYWdlIiBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDp2aW1lb19ob21lIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9ob21lX2NsaWNrIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBhbHQ9IlZpbWVvIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjQwIj48cGF0aCBkPSJNMjIuNDQ4IDE0LjU3NWMtLjEwNCAyLjE3LTEuNjE4IDUuMTQ2LTQuNTQ0IDguOTEyLTMuMDMgMy45NDItNS41OSA1LjkxMi03LjY4NiA1LjkxMi0xLjI5NyAwLTIuMzk3LTEuMjA0LTMuMy0zLjYtLjYtMi4yLTEuMjAyLTQuMzk4LTEuNzk0LTYuNTk4LS42NjQtMi4zOTYtMS4zOC0zLjYtMi4xNDctMy42LS4xNjYgMC0uNzQ3LjM1NC0xLjc1MyAxLjA1bC0xLjA0OC0xLjM1YzEuMS0uOTY1IDIuMTktMS45MyAzLjI1Ny0yLjkwNSAxLjQ2My0xLjI2NSAyLjU3My0xLjk0IDMuMy0yLjAwMiAxLjczMi0uMTY2IDIuOCAxLjAxNyAzLjIwNSAzLjU1OC40MzUgMi43NC43MzYgNC40NC45MDIgNS4xMTUuNDk4IDIuMjcgMS4wNDggMy40MDIgMS42NSAzLjQwMi40NjYgMCAxLjE3Mi0uNzM3IDIuMTA1LTIuMjEuOTM0LTEuNDczIDEuNDMyLTIuNTkzIDEuNTA0LTMuMzcuMTMzLTEuMjc3LS4zNjUtMS45MS0xLjUwNi0xLjkxLS41MyAwLTEuMDguMTI1LTEuNjUuMzY0IDEuMS0zLjU5IDMuMTg2LTUuMzMzIDYuMjc3LTUuMjMgMi4yNzMuMDczIDMuMzUgMS41NTYgMy4yMjcgNC40Nm0xMy43NTUgNy4wMzRjLS45MzMgMS43NjQtMi4yMiAzLjM3LTMuODYgNC44MDMtMi4yNCAxLjkzLTQuNDcgMi45MDUtNi43IDIuOTA1LTEuMDM3LjAwMi0xLjgyNi0uMzMtMi4zNzYtLjk5NC0uNTUtLjY2My0uODEtMS41MzUtLjc3Ny0yLjYwMy4wMy0xLjEuMzcyLTIuOCAxLjAyNS01LjEwNC42NTQtMi4zMDMuOTc2LTMuNTM3Ljk3Ni0zLjcwMyAwLS44Ni0uMy0xLjI5Ny0uOTAyLTEuMjk3LS4xOTggMC0uNzcuMzUzLTEuNzAyIDEuMDQ4bC0xLjE1Mi0xLjM1YzEuMDctLjk2MiAyLjEzNy0xLjkyNyAzLjIwNi0yLjkwMiAxLjQzLTEuMjY2IDIuNS0xLjk0IDMuMjA1LTIuMDAyIDEuMS0uMTAzIDEuOTEuMjMgMi40MjguOTc2LjUxOC43NDcuNzA1IDEuNzIyLjU4IDIuOTE1LS40MzUgMi4wMzQtLjkwMiA0LjYwNy0xLjQgNy43My0uMDMgMS40My40ODggMi4xNDYgMS41NTYgMi4xNDYuNDY3IDAgMS4yOTctLjQ5OCAyLjUtMS40ODMuOTk2LS44MiAxLjgxNS0xLjU5OCAyLjQ1LTIuMzI0bC45NDIgMS4yNDRtLTQuMzU3LTE3LjhjLS4wMy44My0uNDQ2IDEuNjI4LTEuMjU1IDIuMzk1LS45Ljg2LTEuOTcgMS4yOTYtMy4yMDQgMS4yOTYtMS45IDAtMi44MjItLjgzLTIuNzUtMi40OS4wMzItLjg2LjU0LTEuNjkgMS41MjYtMi40OS45ODUtLjc5NyAyLjA3NC0xLjE5IDMuMjc4LTEuMTkuNzA1IDAgMS4yODYuMjcgMS43NTMuODIuNDY3LjU0LjY4NCAxLjEuNjUzIDEuNjZtMzUuNjEyIDE3LjhjLS45MzMgMS43NjMtMi4yMiAzLjM3LTMuODYgNC44MDItMi4yNCAxLjkzLTQuNDcgMi45MDQtNi43IDIuOTA0LTIuMTY4LjAwMi0zLjIxNi0xLjIwMi0zLjE1My0zLjU5OC4wMy0xLjA3LjIzOC0yLjM1NS42MjItMy44NS4zODQtMS41MDMuNTktMi42NjUuNjIzLTMuNTA1LjAzLTEuMjY1LS4zNTMtMS44OTgtMS4xNTItMS44OTgtLjg3IDAtMS45MSAxLjAzNi0zLjExMiAzLjEtMS4yNzYgMi4xNjgtMS45NiA0LjI3NC0yLjA2NCA2LjMwOC0uMDczIDEuNDMuMDcyIDIuNTQuNDI1IDMuMjk4LTIuMzI0LjA2NC0zLjk2My0uMzItNC44ODYtMS4xNS0uODMtLjczNy0xLjIxMi0xLjk1LTEuMTUtMy42NTIuMDMtMS4wNjguMTk4LTIuMTM3LjQ4OC0zLjIwNS4yOS0xLjA3LjQ1Ny0yLjAyMy40ODgtMi44NTMuMDYyLTEuMjM0LS4zODQtMS44NTctMS4zNS0xLjg1Ny0uODQgMC0xLjc0Ljk1NS0yLjcwNiAyLjg1My0uOTY2IDEuOS0xLjUwNSAzLjg5LTEuNjEgNS45NTYtLjA2IDEuODY3LjA1MyAzLjE3NC4zNjQgMy45LTIuMjkzLjA2Mi0zLjkyLS40MTUtNC44NzYtMS40NTItLjc5OC0uODYtMS4xNi0yLjE4LTEuMS0zLjk0Mi4wMzItLjg2LjE4OC0yLjA3NS40NTctMy42Mi4yOC0xLjU0Ni40MjUtMi43NS40NTctMy42Mi4wNjItLjYwMy0uMDgzLS45MDMtLjQ0Ni0uOTAzLS4xOTcgMC0uNzY4LjM0LTEuNzAyIDEuMDE1bC0xLjIwMy0xLjM0OGMuMTY4LS4xMzUgMS4yMTYtMS4xIDMuMTU2LTIuOTA1IDEuNC0xLjI5NyAyLjM1NC0xLjk3IDIuODUyLTIuMDAyLjg3Mi0uMDczIDEuNTY3LjI5IDIuMTA2IDEuMDguNTMuNzg3LjggMS42OS44IDIuNzI3IDAgLjMzMi0uMDMyLjY1NC0uMTA1Ljk1NC40OTctLjc2NiAxLjA4LTEuNDMgMS43NTItMiAxLjUzNy0xLjM0IDMuMjYtMi4wODYgNS4xNTctMi4yNTIgMS42NC0uMTM1IDIuOC4yNSAzLjUwNSAxLjE1Mi41Ny43MzYuODMgMS43ODQuOCAzLjE1My4yMzctLjE5OC40ODYtLjQxNi43NDYtLjY1NC43NjctLjkwMyAxLjUxNC0xLjYyIDIuMjUtMi4xNDggMS4yMzUtLjkwMiAyLjUyLTEuNCAzLjg2LTEuNTA0IDEuNTk3LS4xMzUgMi43NS4yNSAzLjQ1NCAxLjE1Mi42MDIuNzI2Ljg3IDEuNzc0LjggMy4xNDMtLjAzMi45MzMtLjI2IDIuMjgtLjY3NSA0LjA2NS0uNDE2IDEuNzczLS42MjQgMi44LS42MjQgMy4wNy0uMDMuNjk1LjAzIDEuMTgyLjE5NyAxLjQ0Mi4xNjYuMjcuNTcuMzk0IDEuMjAzLjM5NC40NjcgMCAxLjI5Ny0uNDk3IDIuNS0xLjQ4Mi45OTYtLjgyIDEuODE2LTEuNTk4IDIuNDUtMi4zMjRsLjk2MyAxLjI1NG0xOC43NjUtLjA1MmMtLjk2NSAxLjU5OC0yLjg3NCAzLjE5NS01LjcwNiA0Ljc5My0zLjUzOCAyLjAzMi03LjEyNyAzLjA1LTEwLjc1OCAzLjA1LTIuNzA2IDAtNC42MzYtLjkwNC01LjgwOC0yLjctLjgzLTEuMjMzLTEuMjM0LTIuNjk2LTEuMjAzLTQuNDA3LjAzLTIuNjk4IDEuMjM0LTUuMjcgMy42LTcuNzEgMi42MDMtMi42NjUgNS42NzQtNC4wMDMgOS4yMS00LjAwMyAzLjI3IDAgNSAxLjMyOCA1LjIwOCAzLjk5NC4xMzUgMS43MDItLjc5OCAzLjQ0NS0yLjggNS4yNC0yLjEzNyAxLjk2LTQuODI0IDMuMjE1LTguMDYgMy43NDQuNi44MyAxLjUwNCAxLjI0NSAyLjcwNyAxLjI0NSAyLjM5NiAwIDUuMDItLjYxMyA3Ljg2My0xLjgzNyAyLjAzMy0uODYgMy42My0xLjc1MyA0LjgwMy0yLjY3NmwuOTQ1IDEuMjY1bS0xMS4zNi01LjIyOGMuMDMyLS44OTItLjMzLTEuMzUtMS4xLTEuMzUtLjk5NCAwLTIuMDEuNjg2LTMuMDQ4IDIuMDY2LTEuMDM4IDEuMzgtMS41NjcgMi42OTctMS41OTggMy45NjItLjAyIDAtLjAyLjIxOCAwIC42NDMgMS42My0uNiAzLjA1LTEuNTE0IDQuMjQyLTIuNzM4Ljk2Ni0xLjA1OCAxLjQ2My0xLjkyIDEuNTA1LTIuNTgzbTI0Ljk0NiAxLjg2OGMtLjEzNSAzLjA3Mi0xLjI2NSA1LjcxNy0zLjQwMiA3Ljk0Ny0yLjEzNSAyLjIzLTQuNzkgMy4zNS03Ljk1NSAzLjM1LTIuNjM1IDAtNC42MzctLjg1LTYuMDA2LTIuNTUtLjk5Ny0xLjI2Ny0xLjU1Ny0yLjg1NC0xLjY1LTQuNzUyLS4xNjYtMi44NjMuODYtNS40OTggMy4xLTcuODk0IDIuNDA4LTIuNjY1IDUuNDI3LTMuOTkzIDkuMDU3LTMuOTkzIDIuMzM0IDAgNC4wOTguNzg4IDUuMyAyLjM0NCAxLjEzMiAxLjQ0MyAxLjY1IDMuMjkgMS41NTcgNS41NW0tNS42NjQtLjE4NWMuMDMtLjkwMy0uMDk0LTEuNzMzLS4zNzQtMi40OC0uMjgtLjc0Ny0uNjk1LTEuMTMtMS4yMjQtMS4xMy0xLjcwMiAwLTMuMTAyLjkyMy00LjIwMiAyLjc2LS45MzMgMS41MDMtMS40MyAzLjExLTEuNTA0IDQuODEyLS4wMy44NC4xMTQgMS41NzcuNDQ2IDIuMjEuMzY0LjczNi44ODIgMS4xIDEuNTU2IDEuMSAxLjUwNSAwIDIuNzktLjg4MyAzLjg2LTIuNjU2Ljg5Mi0xLjQ3MiAxLjM4LTMuMDA4IDEuNDQtNC42MTVoLjAwMnoiIGZpbGw9IiMxMTIyMzMiLz48L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9InRvcG5hdl9zdG9ja19sb2dvIiBocmVmPSIvc3RvY2siPgogICAgICAgICAgICAgICAgPHN2ZyBhbHQ9IlZpbWVvIiB3aWR0aD0iMTcwIiBoZWlnaHQ9IjQwIiBkYXRhLW5hbWU9IkxheWVyIDEiIHZpZXdCb3g9IjAgMCA3ODAgMTIwIj48cGF0aCBkPSJNNDcxLjkgNzAuMzFjLTEyLjE0LTIuNzQtMjQuMjgtMy45LTI0LjI4LTEyIDAtNi41IDguODItNy42NiAxMy41OS03LjY2IDcuMjIgMCAxMy43MyAyLjE3IDE1LjE3IDEwaDE3LjJjLTItMTYuNjItMTUuOS0yMy0zMS4yMi0yMy0xMy41OCAwLTMxLjIxIDUuMDUtMzEuMjEgMjEuMzggMCAxNS4xNyAxMS44NSAxOS41MSAyNCAyMi4xMXMyNCAzLjc2IDI0LjQyIDEyLjQzYy40MyA4LjUyLTEwLjQgOS44Mi0xNi42MiA5LjgyLTguODEgMC0xNi0zLjQ2LTE2LjktMTNoLTE2LjQ5Yy4yOSAxNy42MyAxNC4zMSAyNiAzMy4wOSAyNiAxNS40NiAwIDMzLjM4LTYuNSAzMy4zOC0yNC4yOC0uMDMtMTQuNzItMTIuMTQtMTkuMDUtMjQuMTMtMjEuOHpNNTI1LjY2IDE3LjI4aC0xNi40OHYyMi40aC0xMi40MlY1MmgxMi40MnY0NGMuMjkgMTIuNDMgMy40NyAxOS4wOCAyMC42NyAxOS4wOCAzLjYxIDAgNy4wOC0uNTggMTAuNjktLjg3di0xMi42OGEyOC41MiAyOC41MiAwIDAgMS02Ljk0LjU3Yy03LjM3IDAtNy45NC0zLjQ3LTcuOTQtMTAuMjZWNTJoMTQuODhWMzkuNjhoLTE0Ljg4ek01ODAuODUgMzcuNjZjLTI0IDAtMzcuNzEgMTYuNDctMzcuNzEgMzkuMyAwIDIzIDEzLjczIDM5LjQ1IDM3LjcxIDM5LjQ1UzYxOC41NyA5OS45NCA2MTguNTcgNzdjMC0yMi44Ny0xMy43My0zOS4zNC0zNy43Mi0zOS4zNHptMCA2NS43NGMtMTQuNzMgMC0yMS4yNC0xMy40LTIxLjI0LTI2LjRzNi41MS0yNi4zIDIxLjI0LTI2LjNTNjAyLjEgNjQuMSA2MDIuMSA3N3MtNi41MSAyNi40LTIxLjI1IDI2LjR6TTY2Mi43OSA1MC42NmM5LjEgMCAxNS43NSA0LjkxIDE3LjA1IDE0aDE2LjQ3Yy0xLjU5LTE4LjM1LTE2LjMzLTI3LTMzLjY3LTI3LTI0LjU2IDAtMzYuODUgMTcuNjMtMzYuODUgNDAuMTcgMCAyMiAxMi44NiAzOC41OCAzNi4yNyAzOC41OCAxOS4yMiAwIDMxLjIyLTEwLjY5IDM0LjI1LTMwLjA2aC0xNi40N2MtMS41OSAxMC43LTguMjQgMTcuMDUtMTcuNzggMTcuMDUtMTQuMyAwLTE5Ljc5LTEzLjE1LTE5Ljc5LTI1LjU3IDAtMjIuNjkgMTEuOTktMjcuMTcgMjAuNTItMjcuMTd6TTc0Mi4yNiA2Ny4xM2wyOC42MS0yNy40NWgtMjAuMjNsLTI5Ljc2IDMwLjJWMTEuMjFINzA0LjR2MTAzLjE4aDE2LjQ4Vjg3LjY1bDkuODItOS41MyAyMi44MyAzNi4yN2gyMC4wOWwtMzEuMzYtNDcuMjZ6IiBmaWxsPSIjZmZmIj48L3BhdGg+PHBhdGggZD0iTTExNy4yNSAyNi43MmExOC4zNyAxOC4zNyAwIDAgMCAxMy4xNC01LjMxcTQuOTItNC42OSA1LjEzLTkuOGE5LjYyIDkuNjIgMCAwIDAtMi42Ny02Ljg0IDkuMDggOS4wOCAwIDAgMC03LjE4LTMuMzcgMjAuOTEgMjAuOTEgMCAwIDAtMTMuNDUgNC45cS02LjA2IDQuOTEtNi4yNiAxMC4yMS0uNCAxMC4yMiAxMS4yOSAxMC4yMXpNMzg2LjEyIDM4LjI1cS0yMi4zOCAwLTM3LjE1IDE2LjM5UTMzNS4yIDY5LjQgMzM2LjI0IDg3Yy4wNS44Ni4xMiAxLjcuMjIgMi41M2wtMS41NC42OHEtMTcuNDYgNy41Mi0zMi4yMyA3LjUxLTcuNCAwLTExLjA5LTUuMTIgMTkuOS0zLjI3IDMzLTE1LjM1IDEyLjQtMTEuMDMgMTEuNTQtMjEuNDctMS4yMy0xNi4zNy0yMS4zNC0xNi4zOC0yMS44IDAtMzcuOCAxNi40Mi0xNC41NiAxNS0xNC43NyAzMS42YTM3LjU3IDM3LjU3IDAgMCAwIC4yNyA1LjM3Yy0yLjI5IDEuNTEtNCAyLjI3LTUuMiAyLjI3cS0zLjkgMC00LjkyLTEuNjNjLS42OS0xLjA5LTEtMy4wNi0uODMtNS45M3EwLTEuNjQgMi41Ny0xMi41N3QyLjc3LTE2LjY3cS40LTguMzctMy4yOC0xMi44OC00LjMyLTUuNTItMTQuMTctNC43YTMwLjQyIDMwLjQyIDAgMCAwLTE1LjggNi4xNiA1NC41NyA1NC41NyAwIDAgMC05LjIzIDguODJjLTEuMSAxLTIuMTIgMS44Ni0zLjA4IDIuNjdxLjE5LTguNDEtMy4yOC0xMi45My00LjMyLTUuNTMtMTQuMzgtNC43MmEzNi40NiAzNi40NiAwIDAgMC0yMS4xMyA5LjI0IDM3LjY3IDM3LjY3IDAgMCAwLTcuMTkgOC4yMSAxOC4xNSAxOC4xNSAwIDAgMCAuNDEtMy45QTE5LjQyIDE5LjQyIDAgMCAwIDE2Mi41IDQzcS0zLjI4LTQuODItOC42Mi00LjQxLTMuMDcuMjEtMTEuNjkgOC4yMS0xMS45MSAxMS4wOC0xMi45MyAxMS45bDQuOTIgNS41NGMzLjgzLTIuNzYgNi4xNi00LjE1IDctNC4xNXEyLjI1IDAgMS44NSAzLjY4YTExNC4xMSAxMTQuMTEgMCAwIDEtMS44OSAxNC44NGMtLjcgMy45NC0xLjIgNy4zMy0xLjUyIDEwLjE5bC0uMTguMTVxLTcuMzkgNi4wOC0xMC4yNiA2LjA3Yy00LjM4IDAtNi41LTIuOTItNi4zNy04Ljc5cTMuMDgtMTkuMjIgNS43Ni0zMS42OS44MS03LjM2LTIuMzctMTJ0LTEwLTRxLTQuMzIuNC0xMy4xNCA4LjIxTDk3IDUyLjM5Yy0uNDEtOS42OC00LjgyLTE0LjY2LTEzLjI4LTE0LjkxcS0xOS0uNi0yNS43NCAyMS40NmExNy4xOSAxNy4xOSAwIDAgMSA2Ljc2LTEuNXE3IDAgNi4xNiA3Ljg0LS40NiA0LjcyLTYuMiAxMy44MXQtOC42MiA5LjA2cS0zLjY5IDAtNi43Ny0xNC0xLTQuMTEtMy42OS0yMS0yLjQ3LTE1LjU0LTEzLjE0LTE0LjUyUTI4IDM5IDE4Ljk0IDQ2Ljg0cS02LjU3IDYtMTMuMzQgMTEuOWw0LjMgNS41NFExNi4wNSA2MCAxNy4wNyA2MHE0LjcxIDAgOC44MSAxNC43Nmw3LjM4IDI3LjA2cTUuNTIgMTQuNzYgMTMuNTEgMTQuNzYgMTIuOTIgMCAzMS41NS0yNC4yNCAxMy4xLTE2Ljg0IDE3LTI4LjVjMy40NC0yLjU1IDUuNTctMy44NCA2LjM1LTMuODRxMy42OSAwIDMuNjkgNS4zMyAwIDEtNCAxNS4xOHQtNC4yIDIwLjkycS0uMjEgNi41NyAzLjE4IDEwLjY2YzIuMjUgMi43NCA1LjUxIDQuMTEgOS43NSA0LjExcTEzLjc1IDAgMjcuNS0xMS45Yy44Mi0uNzEgMS42MS0xLjQ0IDIuMzktMi4xOGExNi41MSAxNi41MSAwIDAgMCAzLjc3IDcuNTZxNS45MyA2LjM0IDIwIDUuOTMtMS44OS00LjUyLTEuNDctMTZhNTkuNyA1OS43IDAgMCAxIDYuNTctMjQuNDNxNi0xMS42OCAxMS4xLTExLjcgNiAwIDUuNTUgNy41OWE1My4xMyA1My4xMyAwIDAgMS0yIDExLjcxIDU1LjIzIDU1LjIzIDAgMCAwLTIgMTMuMTNxLS40MSAxMC40NyA0LjcxIDE1IDUuNzMgNS4xMyAyMC4wNSA0LjcyLTIuMTMtNC43MS0xLjcyLTEzLjU0LjYtMTIuNTIgOC40NC0yNS44NiA3LjQxLTEyLjcyIDEyLjc2LTEyLjczIDUgMCA0Ljc0IDcuOGE3NC45NCA3NC45NCAwIDAgMS0yLjU2IDE0LjM2IDc0LjYxIDc0LjYxIDAgMCAwLTIuNTcgMTUuNzlxLS40MSAxNC43OCAxMi45NCAxNC43NyAxMy43NCAwIDI3LjUtMTEuOWwuNDQtLjRjLjMyLjU0LjY0IDEuMDggMSAxLjZxNy4xOSAxMS4wOCAyMy44MSAxMS4wOCAyMi4zNiAwIDQ0LjEzLTEyLjVjMS42My0uOTIgMy4xNy0xLjgzIDQuNjUtMi43NWEyOS40MyAyOS40MyAwIDAgMCAzLjI0IDUuMThxOC40MiAxMC40NSAyNC42MyAxMC40NSAxOS41IDAgMzIuNjQtMTMuNzNhNDguNzkgNDguNzkgMCAwIDAgMTQtMzIuNThxLjYxLTEzLjkzLTYuMzYtMjIuNzUtNy40OS05LjY1LTIxLjg1LTkuNjd6bS05Ny43NiA0Ni41NmExMS4xMiAxMS4xMiAwIDAgMSAwLTIuNjZxLjE5LTcuNzUgNi41NS0xNi4yM3QxMi41LTguNDhjMy4xNSAwIDQuNjUgMS44NSA0LjUxIDUuNTJxLS4xOSA0LjA4LTYuMTQgMTAuNjJhNDYuMjUgNDYuMjUgMCAwIDEtMTcuNDIgMTEuMjN6TTM5MSA2OS44NWEzOSAzOSAwIDAgMS02IDE4LjkycS02LjU3IDEwLjkxLTE1LjgxIDEwLjktNC4xMSAwLTYuMzYtNC41MmExNy42NiAxNy42NiAwIDAgMS0xLjg1LTkuMDUgMzkuODEgMzkuODEgMCAwIDEgNi4xNi0xOS43NHE2Ljg2LTExLjMxIDE3LjMzLTExLjMxYzIuMTkgMCAzLjg2IDEuNTQgNSA0LjYzQTI1LjgyIDI1LjgyIDAgMCAxIDM5MSA2OS44NXoiIGZpbGw9IiMwMGFkZWYiPjwvcGF0aD48L3N2Zz4KICAgICAgICAgICAgPC9hPgogICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hdiBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudSIgcm9sZT0ibmF2aWdhdGlvbiIgYXJpYS1sYWJlbD0iTWFpbiBtZW51Ij4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0idG9wbmF2X21lbnVfZGVza3RvcF9tYWluIiByb2xlPSJtZW51YmFyIj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zIiBkYXRhLW1lbnUtaWQ9ImpvaW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9InRvcG5hdl9tZW51X2pvaW4ganMtdG9wbmF2X21lbnVfYXV0aCIgb25jbGljaz0iZXZlbnQucHJldmVudERlZmF1bHQoKTt2aW1lby5Nb2RhbC5jcmVhdGUoe3NpemU6J3hzbWFsbCcsY29udGVudDonL2pvaW4/bW9kYWw9bmV3J30pLnRoZW4oY29tcGxldGVVc2VyTG9naW4pIiBkYXRhLWdhLWV2ZW50LWNsaWNrPSJ0b3BfbmF2fGpvaW4iIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OmpvaW4iIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2pvaW5fY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL2pvaW4iIHRpdGxlPSJCZWNvbWUgYSBWaW1lbyBtZW1iZXIiIHJlbD0idG9nZ2xlIiByb2xlPSJidXR0b24iIGFyaWEtb3ducz0idG9wbmF2X2pvaW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpvaW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXMiIGRhdGEtbWVudS1pZD0ibG9naW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImpzLXRvcG5hdl9tZW51X2F1dGgiIG9uY2xpY2s9ImV2ZW50LnByZXZlbnREZWZhdWx0KCk7dmltZW8uTW9kYWwuY3JlYXRlKHtzaXplOid4c21hbGwnLGNvbnRlbnQ6Jy9sb2dfaW4/bW9kYWw9bmV3J30pLnRoZW4oY29tcGxldGVVc2VyTG9naW4pIiBkYXRhLWdhLWV2ZW50LWNsaWNrPSJ0b3BfbmF2fGxvZ2luIiBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpsb2dpbiIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfbG9naW5fY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL2xvZ19pbiIgdGl0bGU9IkxvZyBpbiB0byB5b3VyIGFjY291bnQiIHJlbD0idG9nZ2xlIiByb2xlPSJidXR0b24iIGFyaWEtb3ducz0idG9wbmF2X2xvZ2luIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2cgaW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXMiIGRhdGEtbWVudS1pZD0icHJpY2luZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpwcmljaW5nIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9wcmljaW5nX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS91cGdyYWRlIiB0aXRsZT0iUHJpY2luZyIgcmVsPSJ0b2dnbGUiIHJvbGU9ImJ1dHRvbiIgYXJpYS1vd25zPSJ0b3BuYXZfcHJpY2luZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpY2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtcyIgZGF0YS1tZW51LWlkPSJwcm9kdWN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIG9uY2xpY2s9ImV2ZW50LnByZXZlbnREZWZhdWx0KCk7ZXZlbnQudGFyZ2V0LmJsdXIoKTsiIGNsYXNzPSJ0b3BuYXZfbWVudV9ub19saW5rIHRvcG5hdl9oYXNfZHJvcGRvd24gdG9wbmF2X2ljb25fY2hldnJvbl9hIiBocmVmPSIjIiB0aXRsZT0iUHJvZHVjdCIgcmVsPSJ0b2dnbGUiIHJvbGU9ImJ1dHRvbiIgYXJpYS1vd25zPSJ0b3BuYXZfcHJvZHVjdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvZHVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bi0td3JhcHBlciIgcm9sZT0ibWVudSIgYXJpYS1oaWRkZW49InRydWUiIGlkPSJ0b3BuYXZfcHJvZHVjdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9zb2x1dGlvbnMtLWZlYXR1cmVzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duLS1sYWJlbHMiPkZFQVRVUkVTPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2xpc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpwcm9kdWN0fGtleXdvcmQ6dmlkZW9fcGxheWVyIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9wcm9kdWN0X3ZpZGVvX3BsYXllciIgaHJlZj0iLy92aW1lby5jb20vZmVhdHVyZXMvdmlkZW8tcGxheWVyIiB0aXRsZT0iVmlkZW8gcGxheWVyIj5WaWRlbyBwbGF5ZXI8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnByb2R1Y3R8a2V5d29yZDpzY3JlZW5fcmVjb3JkZXIiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3Byb2R1Y3Rfc2NyZWVuX3JlY29yZGVyIiBocmVmPSIvL3ZpbWVvLmNvbS9mZWF0dXJlcy9zY3JlZW4tcmVjb3JkZXIiIHRpdGxlPSJTY3JlZW4gcmVjb3JkZXIiPlNjcmVlbiByZWNvcmRlcjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6cHJvZHVjdHxrZXl3b3JkOmxpdmVfc3RyZWFtaW5nIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9wcm9kdWN0X2xpdmVfc3RyZWFtaW5nIiBocmVmPSIvL3ZpbWVvLmNvbS9saXZlIiB0aXRsZT0iTGl2ZSBzdHJlYW1pbmciPkxpdmUgc3RyZWFtaW5nPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpwcm9kdWN0fGtleXdvcmQ6cHJpdmFjeSIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfcHJvZHVjdF9wcml2YWN5IiBocmVmPSIvL3ZpbWVvLmNvbS9mZWF0dXJlcy92aWRlby1wcml2YWN5IiB0aXRsZT0iUHJpdmFjeSI+UHJpdmFjeTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6cHJvZHVjdHxrZXl3b3JkOmNvbGxhYm9yYXRpb24iIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3Byb2R1Y3RfY29sbGFib3JhdGlvbiIgaHJlZj0iLy92aW1lby5jb20vZmVhdHVyZXMvdmlkZW8tY29sbGFib3JhdGlvbiIgdGl0bGU9IkNvbGxhYm9yYXRpb24iPkNvbGxhYm9yYXRpb248L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnByb2R1Y3R8a2V5d29yZDpkaXN0cmlidXRpb24iIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3Byb2R1Y3RfZGlzdHJpYnV0aW9uIiBocmVmPSIvL3ZpbWVvLmNvbS9mZWF0dXJlcy92aWRlby1tYXJrZXRpbmciIHRpdGxlPSJEaXN0cmlidXRpb24gYW5kIG1hcmtldGluZyI+RGlzdHJpYnV0aW9uICYgbWFya2V0aW5nPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpwcm9kdWN0fGtleXdvcmQ6bW9uZXRpemF0aW9uIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9wcm9kdWN0X21vbmV0aXphdGlvbiIgaHJlZj0iLy92aW1lby5jb20vZmVhdHVyZXMvdmlkZW8tbW9uZXRpemF0aW9uIiB0aXRsZT0iTW9uZXRpemF0aW9uIj5Nb25ldGl6YXRpb248L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnByb2R1Y3R8a2V5d29yZDphbmFseXRpY3MiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3Byb2R1Y3RfYW5hbHl0aWNzIiBocmVmPSIvL3ZpbWVvLmNvbS9mZWF0dXJlcy92aWRlby1hbmFseXRpY3MiIHRpdGxlPSJBbmFseXRpY3MiPkFuYWx5dGljczwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6cHJvZHVjdHxrZXl3b3JkOmhvc3RpbmciIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3Byb2R1Y3RfaG9zdGluZyIgaHJlZj0iLy92aW1lby5jb20vZmVhdHVyZXMvb25saW5lLXZpZGVvLWhvc3RpbmciIHRpdGxlPSJIb3N0aW5nIGFuZCBtYW5hZ2VtZW50Ij5Ib3N0aW5nICYgbWFuYWdlbWVudDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL3VwZ3JhZGUiIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duLS1jb21wYXJlX3BsYW5zIiBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpwcm9kdWN0fGtleXdvcmQ6Y29tcGFyZV9wbGFuc3x0YXJnZXQ6L3VwZ3JhZGV8dHlwZTpjbGljayI+Q29tcGFyZSBQbGFuczwvYT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wbmF2X2Rlc2t0b3Bfc29sdXRpb25zLS1zZXJ2aWNlcyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bi0tbGFiZWxzIj5TRVJWSUNFUzwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvcG5hdl9kZXNrdG9wX3NvbHV0aW9ucy0tc2VydmljZXNfY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlcnZpY2VzX3dyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOmNyZWF0ZXx0YXJnZXQ6L2NyZWF0ZXx0eXBlOmNsaWNrIiBjbGFzcz0idG9wbmF2X2Rlc2t0b3Bfc29sdXRpb25zLS1zZXJ2aWNlc19ibG9jayIgaHJlZj0iLy92aW1lby5jb20vY3JlYXRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPk1ha2Ugc29jaWFsIHZpZGVvcyBpbiBhbiBpbnN0YW50OiB1c2UgY3VzdG9tIHRlbXBsYXRlcyB0byB0ZWxsIHRoZSByaWdodCBzdG9yeSBmb3IgeW91ciBidXNpbmVzcy48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZXJ2aWNlc193cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpzb2x1dGlvbnN8a2V5d29yZDpmb3JfaGlyZXx0YXJnZXQ6L2Zvci1oaXJlfHR5cGU6Y2xpY2siIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9zb2x1dGlvbnMtLXNlcnZpY2VzX2Jsb2NrIiBocmVmPSIvL3ZpbWVvLmNvbS9mb3ItaGlyZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBIaXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlBvc3Qgam9icywgZmluZCBwcm9zLCBhbmQgY29sbGFib3JhdGUgY29tbWlzc2lvbi1mcmVlIGluIG91ciBwcm9mZXNzaW9uYWwgbWFya2V0cGxhY2UuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VydmljZXNfd3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6c29sdXRpb25zfGtleXdvcmQ6ZW50ZXJwcmlzZXx0YXJnZXQ6L2VudGVycHJpc2V8dHlwZTpjbGljayIgY2xhc3M9InRvcG5hdl9kZXNrdG9wX3NvbHV0aW9ucy0tc2VydmljZXNfYmxvY2siIGhyZWY9Ii8vdmltZW8uY29tL2VudGVycHJpc2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnRlcnByaXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPkdldCB5b3VyIHRlYW0gYWxpZ25lZCB3aXRoIGFsbCB0aGUgdG9vbHMgeW91IG5lZWQgb24gb25lIHNlY3VyZSwgcmVsaWFibGUgdmlkZW8gcGxhdGZvcm0uPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VydmljZXNfd3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6c29sdXRpb25zfGtleXdvcmQ6c3RvY2t8dGFyZ2V0Oi9zdG9ja3x0eXBlOmNsaWNrIiBjbGFzcz0idG9wbmF2X2Rlc2t0b3Bfc29sdXRpb25zLS1zZXJ2aWNlc19ibG9jayIgaHJlZj0iLy92aW1lby5jb20vc3RvY2siPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdG9jayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2gzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5Ccm93c2UgYW5kIGJ1eSBleGNlcHRpb25hbCwgcm95YWx0eS1mcmVlIHN0b2NrIGNsaXBzLCBoYW5kcGlja2VkIGJ5IHRoZSBiZXN0LjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtcyIgZGF0YS1tZW51LWlkPSJzb2x1dGlvbnMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9InRvcG5hdl9oYXNfZHJvcGRvd24gdG9wbmF2X2ljb25fY2hldnJvbl9hIiBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpzb2x1dGlvbnN8a2V5d29yZDpzb2x1dGlvbnMiIGhyZWY9IiMiIHRpdGxlPSJTb2x1dGlvbnMiIHJlbD0idG9nZ2xlIiByb2xlPSJidXR0b24iIGFyaWEtb3ducz0idG9wbmF2X3NvbHV0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29sdXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd24iIHJvbGU9Im1lbnUiIGFyaWEtaGlkZGVuPSJ0cnVlIiBpZD0idG9wbmF2X3NvbHV0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOmNyZWF0aXZlX3Byb2Zlc3Npb25hbHMiIGhyZWY9Ii8vdmltZW8uY29tL3NvbHV0aW9ucy9jcmVhdGl2ZS1wcm9mZXNzaW9uYWxzLXNvbHV0aW9ucyIgdGl0bGU9IkFsbCB5b3UgbmVlZCB0byBtYWtlIGdyZWF0IHZpZGVvLiI+Q3JlYXRpdmUgUHJvZmVzc2lvbmFsczwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpzb2x1dGlvbnN8a2V5d29yZDpzbWFsbF9idXNpbmVzcyIgaHJlZj0iLy92aW1lby5jb20vc29sdXRpb25zL3NtYWxsLWJ1c2luZXNzLXNvbHV0aW9ucyIgdGl0bGU9IkNhcHR1cmUgeW91ciBjdXN0b21lcnPigJkgYXR0ZW50aW9uIHdpdGggdmlkZW8uIj5TbWFsbCBCdXNpbmVzczwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpzb2x1dGlvbnN8a2V5d29yZDplbnRlcnByaXNlIiBocmVmPSIvL3ZpbWVvLmNvbS9lbnRlcnByaXNlIiB0aXRsZT0iRW50ZXJwcmlzZSI+RW50ZXJwcmlzZTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpzb2x1dGlvbnN8a2V5d29yZDplZHVjYXRpb24iIGhyZWY9Ii8vdmltZW8uY29tL3NvbHV0aW9ucy9lZHVjYXRpb24tc29sdXRpb25zIiB0aXRsZT0iU2hhcmUga25vd2xlZGdlIHdpdGggdmlkZW8uIj5FZHVjYXRpb248L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6c29sdXRpb25zfGtleXdvcmQ6Zml0bmVzcyIgaHJlZj0iLy92aW1lby5jb20vc29sdXRpb25zL2ZpdG5lc3Mtc29sdXRpb25zIiB0aXRsZT0iR2V0IHlvdXIgZml0bmVzcyBzdHVkaW8gb25saW5lLiI+Rml0bmVzczwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpzb2x1dGlvbnN8a2V5d29yZDpmYWl0aCIgaHJlZj0iLy92aW1lby5jb20vc29sdXRpb25zL2ZhaXRoLXNvbHV0aW9ucyIgdGl0bGU9IktlZXAgeW91ciBjb21tdW5pdHkgY29ubmVjdGVkLiI+RmFpdGg8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXMiIGRhdGEtbWVudS1pZD0iaW5zcGlyYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgb25jbGljaz0iZXZlbnQucHJldmVudERlZmF1bHQoKTtldmVudC50YXJnZXQuYmx1cigpOyIgY2xhc3M9InRvcG5hdl9tZW51X25vX2xpbmsgdG9wbmF2X2hhc19kcm9wZG93biB0b3BuYXZfaWNvbl9jaGV2cm9uX2EiIGhyZWY9IiMiIHRpdGxlPSJXYXRjaCIgcmVsPSJ0b2dnbGUiIHJvbGU9ImJ1dHRvbiIgYXJpYS1vd25zPSJ0b3BuYXZfaW5zcGlyYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdhdGNoICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd24iIHJvbGU9Im1lbnUiIGFyaWEtaGlkZGVuPSJ0cnVlIiBpZD0idG9wbmF2X2luc3BpcmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6d2F0Y2h8a2V5d29yZDp3YXRjaCIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfd2F0Y2hfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL3dhdGNoIiB0aXRsZT0iRXhwbG9yZSI+RXhwbG9yZTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDp3YXRjaHxrZXl3b3JkOnN0YWZmX3BpY2tzIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl93YXRjaF9zdGFmZl9waWNrc19jbGljayIgaHJlZj0iLy92aW1lby5jb20vY2hhbm5lbHMvc3RhZmZwaWNrcyIgdGl0bGU9IlRoZSBiZXN0IHZpZGVvcyBvbiBWaW1lbywgY3VyYXRlZCBkYWlseSBieSBvdXIgdGVhbSI+U3RhZmYgUGlja3M8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6bWFuYWdlX3ZpZGVvc3xrZXl3b3JkOnZpZGVvX3NjaG9vbCIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfY3JlYXRlX3ZpZGVvX3NjaG9vbF9jbGljayIgaHJlZj0iLy92aW1lby5jb20vdmlkZW9zY2hvb2wiIHRpdGxlPSJMZWFybiBob3cgdG8gbWFrZSBiZXR0ZXIgdmlkZW9zIj5WaWRlbyBTY2hvb2w8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9uYXY+PCEtLSAvLnRvcG5hdl9kZXNrdG9wX21lbnUgLS0+CiAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJ0b3BuYXZfbWVudV9zZWFyY2hfb21uaXNlYXJjaCIgY2xhc3M9InRvcG5hdl9tZW51X3NlYXJjaCIgZGF0YS1xdWVyeT0iIiBkYXRhLXBsYWNlaG9sZGVyPSJTZWFyY2ggdmlkZW9zLCBwZW9wbGUsIGFuZCBtb3JlIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfbWVudV9yaWdodCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InJlY29yZF90aXBfd3JhcHBlciIgY2xhc3M9InRvcG5hdl9kZXNrdG9wX3ZpZGVvX3BvcG92ZXIiIG9uTW91c2VlbnRlcj0idHJhY2tOZXdWaWRlb0Ryb3Bkb3duSW1wcmVzc2lvbignJykiPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD0ibmV3X3ZpZGVvX2Ryb3Bkb3duX2J1dHRvbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF92aWRlb19wb3BvdmVyX2J1dHRvbiBpcmlzX2J0bi0tcHJpbWFyeSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50Om5ld192aWRlbyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uY2xpY2s9ImhhbmRsZU5ld1ZpZGVvQ2xpY2soKSIKICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRvcG5hdl9kZXNrdG9wX3ZpZGVvX3BvcG92ZXJfc3Bhbl93cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcgdmlkZW8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPSJyZWNvcmRfYW5pbWF0aW9uX3dyYXBwZXIiIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF92aWRlb19wb3BvdmVyX3NwYW5fdmFyaWFudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD0iTTEyIDE1LjVhMSAxIDAgMCAxLS42Ny0uMjZsLTUtNC41IDEuMzQtMS40OEwxMiAxMy4xNWw0LjMzLTMuOSAxLjM0IDEuNDktNSA0LjVhMSAxIDAgMCAxLS42Ny4yNnoiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD0iI2ZmZmZmZiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGlkPSJuZXdfdmlkZW9fZHJvcGRvd25fdmFyaWFudCIgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd24gdG9wbmF2X2Rlc2t0b3BfdmlkZW9fcG9wb3Zlcl9kcm9wZG93bl92YXJpYW50IiByb2xlPSJtZW51IiBhcmlhLWhpZGRlbj0idHJ1ZSIgc3R5bGU9InBhZGRpbmc6IHVuc2V0OyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtX3ZhcmlhbnQiIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgb25jbGljaz0iKGZ1bmN0aW9uKGV2ZW50KSB7IGlmICh3aW5kb3cuaGFuZGxlVXBsb2FkQnV0dG9uQ2xpY2spIHsgaGFuZGxlVXBsb2FkQnV0dG9uQ2xpY2soZXZlbnQpOyB9fSkoZXZlbnQpIiBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpuZXdfdmlkZW98a2V5d29yZDp7J2FjdGlvbic6J3VwbG9hZCd9fHRhcmdldDovdXBsb2FkfHR5cGU6Y2xpY2siIGlkPSJ0b3BuYXZfZGVza3RvcF91cGxvYWRfYnV0dG9uIiBocmVmPSIvL3ZpbWVvLmNvbS91cGxvYWQiID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhbGlnbl90b3BuYXZfZHJvcGRvd25faWNvbnMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idG9wbmF2X2Ryb3Bkb3duX2ljb25zIj48c3ZnIHZpZXdCb3g9IjAgMCAyMCAyMCIgd2lkdGg9IjI0cHgiIGhlaWdodD0iMjRweCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9Ik0xOCA4LjQ4YTcuMTYgNy4xNiAwIDAgMC0xLjg0LTQuNzZBNS44MSA1LjgxIDAgMCAwIDYuOTIgNWE1LjI0IDUuMjQgMCAwIDAtNC42OSAzLjg1QTQuOTEgNC45MSAwIDAgMCAwIDEzYTUuMTMgNS4xMyAwIDAgMCA1IDVoMTBhNS4xIDUuMSAwIDAgMCA1LTQuOTQgNS44OSA1Ljg5IDAgMCAwLTItNC41OHpNMTUgMTZoLTR2LTMuNTlsMS4yOSAxLjI5IDEuNDEtMS40MS0zLjctMy43LTMuNzEgMy43TDcuNyAxMy43IDkgMTIuNDFWMTZINWEzLjE2IDMuMTYgMCAwIDEtMy0zIDIuOTEgMi45MSAwIDAgMSAxLjUyLTIuNThsLjQtLjIuMDgtLjQ0QTMuMzggMy4zOCAwIDAgMSA3LjU5IDdoLjdsLjI0LS42NkEzLjY5IDMuNjkgMCAwIDEgMTIgNGEzLjczIDMuNzMgMCAwIDEgMi43MiAxLjEyQTUuNDUgNS40NSAwIDAgMSAxNiA5di41NGwuNDUuM0EzLjc5IDMuNzkgMCAwIDEgMTggMTMuMDYgMy4wOSAzLjA5IDAgMCAxIDE1IDE2eiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPSIjMWEyZTNiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVcGxvYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbV92YXJpYW50IiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIG9uY2xpY2s9ImhhbmRsZUNyZWF0ZVZpZGVvQ2xpY2soZXZlbnQpIiBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpuZXdfdmlkZW98a2V5d29yZDp7J2FjdGlvbic6J2NyZWF0ZSd9fHRhcmdldDovY3JlYXRlL3ZpZGVvLW1ha2VyfHR5cGU6Y2xpY2siIGlkPSJ0b3BuYXZfZGVza3RvcF9jcmVhdGVfdmlkZW9fYnV0dG9uIiBocmVmPSIvL3ZpbWVvLmNvbS9jcmVhdGUvdmlkZW8tbWFrZXIiID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhbGlnbl90b3BuYXZfZHJvcGRvd25faWNvbnMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idG9wbmF2X2Ryb3Bkb3duX2ljb25zIj48c3ZnIHZpZXdCb3g9IjAgMCAyMCAyMCIgd2lkdGg9IjI0cHgiIGhlaWdodD0iMjRweCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPSJNMy4yIDE2LjhsMy44LTEgMTAtMTBjLjItLjIuMi0uNSAwLS43TDE0LjkgM2MtLjItLjItLjUtLjItLjcgMGwtMi4xIDIuMSAyLjggMi44TDEzLjggOSAxMSA2LjIgNC4yIDEzbC0xIDMuOHptOS45LTE0LjljLjgtLjggMi0uOCAyLjggMEwxOC4xIDRjLjguOC44IDIgMCAyLjhMNy44IDE3LjJsLTUuNiAxLjVjLS41LjEtLjktLjItLjctLjdsMS40LTUuN0wxMy4xIDEuOXoiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPSIjMWEyZTNiIgogICAgICAgICAgICAgICAgICAgICAgICAvPgogICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlIGEgdmlkZW8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJjYXJ0X3RvcF9uYXYiIGNsYXNzPSJ0b3BuYXZfY2FydF9idXR0b24iPjwvZGl2PgoKICAgICAgICAgICAgPC9kaXY+PCEtLSAvLnRvcG5hdl9tZW51X3JpZ2h0IC0tPgogICAgICAgICAgICA8L2Rpdj48IS0tIC8udG9wbmF2X2Rlc2t0b3Bfd3JhcHBlciAtLT4KPC9kaXY+CgogICAgPHNjcmlwdD4KICAgICAgICB2YXIgaXNNb2JpbGUgPSAvaXBob25lfGlwb2R8YW5kcm9pZHx3ZWJvc3xibGFja2JlcnJ5fHdpbmRvd3MgcGhvbmUvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSk7CgogICAgICAgIC8vIERPIE5PVCBSRU1PVkUuIFRoaXMgaXMgYSBjYWxsYmFjayBmb3IgdGhlIGxvZ2luICYgam9pbiBidXR0b25zIGluIFRvcE5hdkJ1aWxkZXIuCiAgICAgICAgZnVuY3Rpb24gY29tcGxldGVVc2VyTG9naW4ocmVzcG9uc2UpIHsKICAgICAgICAgICAgaWYgKHJlc3BvbnNlICYmICFyZXNwb25zZS5zaWdudXApIHsKICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBmdW5jdGlvbiBoYW5kbGVVcGxvYWRCdXR0b25DbGljayhldmVudCkgewogICAgICAgICAgICAvLyBPcGVucyB0aGUgYXV0aCBtb2RhbCBmb3IgbG9nZ2VkIG91dCB1c2VycwogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgIHdpbmRvdy52aW1lbwogICAgICAgICAgICAgICAmJiB3aW5kb3cudmltZW8uY29uZmlnCiAgICAgICAgICAgICAgICYmIHdpbmRvdy52aW1lby5Nb2RhbAogICAgICAgICAgICAgICAmJiAhd2luZG93LnZpbWVvLmN1cl91c2VyCiAgICAgICAgICAgICl7CiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgaXNNb2JpbGUgPyB3aW5kb3cubG9jYXRpb24uaHJlZj0iL3VwbG9hZCIgOiB2aW1lby5Nb2RhbC5jcmVhdGUoewogICAgICAgICAgICAgICAgICAgIHNpemU6ICd4c21hbGwnLAogICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcvam9pbj9tb2RhbD1uZXcmcmVkaXJlY3Q9L3VwbG9hZCcsCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgPC9zY3JpcHQ+Cgo8c2NyaXB0PgogICAgdmFyIHNlcnZpY2VFbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5zZXJ2aWNlc193cmFwcGVyJyk7CiAgICB2YXIgaGlkZGVuU2VydmljZUVsZW1lbnRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnNlcnZpY2VzX3dyYXBwZXIuaGlkZScpOwogICAgdmFyIGNvdW50ID0gc2VydmljZUVsZW1lbnRzLmxlbmd0aCAtIGhpZGRlblNlcnZpY2VFbGVtZW50cy5sZW5ndGg7CiAgICBpZiAoY291bnQgPiAyKSB7CiAgICAgICAgdmFyIHNlcnZpY2VDb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcudG9wbmF2X2Rlc2t0b3Bfc29sdXRpb25zLS1zZXJ2aWNlc19jb250YWluZXInKTsKICAgICAgICBpZiAoc2VydmljZUNvbnRhaW5lcikgewogICAgICAgICAgICBzZXJ2aWNlQ29udGFpbmVyLnN0eWxlLndpZHRoID0gJzQ1MHB4JzsKICAgICAgICB9CiAgICB9Cjwvc2NyaXB0PgoKPHNjcmlwdD4KICAgIGZ1bmN0aW9uIGhhbmRsZU5ld1ZpZGVvQ2xpY2soKSB7CiAgICAgICAgaWYgKHdpbmRvdy52aW1lbyAmJiB3aW5kb3cudmltZW8uY3VyX3VzZXIpIHsKICAgICAgICAgICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSAhPT0gJy91cGxvYWQnKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvdXBsb2FkJzsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHdpbmRvdy52aW1lby5Nb2RhbC5jcmVhdGUoeyBzaXplOiAneHNtYWxsJywgY29udGVudDogJy9qb2luP21vZGFsPW5ldyZyZWRpcmVjdD0vdXBsb2FkJyB9KQogICAgICAgICAgICAgICAgLnRoZW4oY29tcGxldGVVc2VyTG9naW4pOwogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBoYW5kbGVDcmVhdGVWaWRlb0NsaWNrKGUsIGlzUmVjb3JkU2NyZWVuID0gZmFsc2UpIHsKICAgICAgICBpZiAod2luZG93LnZpbWVvICYmICF3aW5kb3cudmltZW8uY3VyX3VzZXIpIHsKICAgICAgICAgICAgaWYgKCFpc1JlY29yZFNjcmVlbikgewogICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwoKICAgICAgICAgICAgICAgIHdpbmRvdy52aW1lby5Nb2RhbC5jcmVhdGUoewogICAgICAgICAgICAgICAgICAgIHNpemU6ICd4c21hbGwnLAogICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcvam9pbj9tb2RhbD1uZXcmcmVkaXJlY3Q9L2NyZWF0ZS92aWRlby1tYWtlcicKICAgICAgICAgICAgICAgIH0pLnRoZW4oY29tcGxldGVVc2VyTG9naW4pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIHRyYWNrTmV3VmlkZW9Ecm9wZG93bkltcHJlc3Npb24ocmVjb3JkT3B0aW9uKSB7CiAgICAgICAgaWYgKHdpbmRvdy5fX2ZhKSB7CiAgICAgICAgICAgIHdpbmRvdy5fX2ZhLnB1c2goWyd0cmFja0V2ZW50JywgewogICAgICAgICAgICAgICAgdHlwZTogJ2ltcHJlc3Npb24nLAogICAgICAgICAgICAgICAgY29udGFpbmVyOiAndG9wX25hdicsCiAgICAgICAgICAgICAgICBjb21wb25lbnQ6ICduZXdfdmlkZW8nLAogICAgICAgICAgICB9XSk7CgogICAgICAgICAgICBpZiAocmVjb3JkT3B0aW9uKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cuX19mYS5wdXNoKFsndHJhY2tFdmVudCcsIHsKICAgICAgICAgICAgICAgICAgICB0eXBlOiAnaW1wcmVzc2lvbicsCiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyOiAndG9wX25hdicsCiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50OiAncmVjb3JkJywKICAgICAgICAgICAgICAgICAgICBrZXl3b3JkOiByZWNvcmRPcHRpb24sCiAgICAgICAgICAgICAgICB9XSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cjwvc2NyaXB0PgoKPHNjcmlwdD4KICAgIC8qKgogICAgICogVGhpcyBpcyBwYXJ0IG9mIGFuIEFCIEV4cGVyaW1lbnQKICAgICAqIEV4cGVyaW1lbnQgbGluazogaHR0cHM6Ly92aW1lby5jb20vbW9kd29ybGQvYWJsaW5jb2xuLzUyOAogICAgICogRXhwZXJpbWVudCBwYXJhbTogc2hvd19teV9kcmFmdHMKICAgICAqLwogICAgdmFyIHNob3dWYXJpYW50ID0gZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBzaG93TXlEcmFmdHM7CiAgICAgICAgaWYgKHdpbmRvdy5BQkxpbmNvbG4gJiYgd2luZG93LkFCTGluY29sbi5nZXRUZXN0KCdKUy5Ub3BuYXYuTXlEcmFmdHMnKS5nZXQoJ3Nob3dfbXlfZHJhZnRzJywgJ2NvbnRyb2wnKSA9PT0gJ3ZhcmlhbnQnKSB7CiAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5qcy10b3BuYXYtbWFuYWdlLWRyYWZ0cycpLmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGUnKTsKICAgICAgICB9CiAgICB9OwogICAgc2hvd1ZhcmlhbnQoKTsKPC9zY3JpcHQ+CgogICAgPHNjcmlwdD4KICAgICAgICB2YXIgYXJyb3cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVjb3JkX2FuaW1hdGlvbl93cmFwcGVyJyk7CiAgICAgICAgdmFyIG5ld1ZpZGVvQnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlY29yZF90aXBfd3JhcHBlcicpOwoKICAgICAgICBpZiAoYXJyb3cpIHsKICAgICAgICAgICAgYXJyb3cuY2xhc3NMaXN0LmFkZCgnbm9fYW5pbWF0aW9uJyk7CiAgICAgICAgfQoKICAgICAgICB2YXIgaXNIb3ZlcmVkID0gZmFsc2U7CgogICAgICAgIGlmIChuZXdWaWRlb0J0biAmJiBmYWxzZSkgewogICAgICAgICAgICBuZXdWaWRlb0J0bi5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBpZiAoaXNIb3ZlcmVkKSByZXR1cm47CgogICAgICAgICAgICAgICAgaXNIb3ZlcmVkID0gdHJ1ZTsKCiAgICAgICAgICAgICAgICBpZiAoYXJyb3cpIHsKICAgICAgICAgICAgICAgICAgICBhcnJvdy5jbGFzc0xpc3QucmVtb3ZlKCdub19hbmltYXRpb24nKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBzdG9yZV9yZWNvcmRfdGlwX3NldHRpbmdzKDEpOwoKICAgICAgICAgICAgfSwgZmFsc2UpOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gc3RvcmVfcmVjb3JkX3RpcF9zZXR0aW5ncyh2YWx1ZSkgewogICAgICAgICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CgogICAgICAgICAgICB4aHIub3BlbignUE9TVCcsICcvc2V0dGluZ3MvbmF2X3JlY29yZGVyX3RpcCcpOwogICAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcignWC1SZXF1ZXN0ZWQtV2l0aCcsICdYTUxIdHRwUmVxdWVzdCcpOwogICAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcignQ29udGVudC10eXBlJywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpOwogICAgICAgICAgICB4aHIuc2VuZCgncmVjb3JkX3NjcmVlbl90aXBfc3RhdGU9JyArIHZhbHVlICsgJyZ0b2tlbj0nICsgdmltZW8ueHNyZnQpOwoKICAgICAgICAgICAgLy8gTm90aGluZyB0byBoYW5kbGUuIFdlIGhvcGUgZm9yIHRoZSBiZXN0IGluIHRoaXMgY2FzZQogICAgICAgICAgICB4aHIub25sb2FkID0gZnVuY3Rpb24gKCkge307CiAgICAgICAgfTsKICAgIDwvc2NyaXB0PgoKCiAgICAKPCEtLSBSZXNwb25zaXZlIFRvcCBOYXYgKEV4cGxvcmUsIExPSFAsIFdhdGNoLCB0YykgLS0+CjxuYXYgaWQ9InRvcG5hdl9tb2JpbGUiIGNsYXNzPSJ0b3BuYXZfbW9iaWxlICAgIG5hdl9iYXItLWxpIiByb2xlPSJiYW5uZXIiPgoKICAgIDxkaXYgY2xhc3M9InRvcG5hdl9tb2JpbGVfYmFyIj4KICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGRhdGEtYWN0aW9uPSJtZW51Lm9wZW4iIGNsYXNzPSJuYXZiYXJfaGFtYnVyZ2VyIG5hdl9iYXJfaWNvbiB0b3BuYXZfbW9iaWxlX2J1dHRvbiB0b3BuYXZfbW9iaWxlX3B1bGxfbGVmdCBqcy10b3BuYXZfbW9iaWxlX2hlYWRlcl9sb2dvIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiI+CiAgICAgICAgICAgICAgICA8dGl0bGU+TWVudTwvdGl0bGU+CiAgICAgICAgICAgICAgICA8cGF0aCBpZD0iUmVjdGFuZ2xlLTQiIGQ9Ik03LDhIMjVhMSwxLDAsMCwxLDEsMWgwYTEsMSwwLDAsMS0xLDFIN0ExLDEsMCwwLDEsNiw5SDZBMSwxLDAsMCwxLDcsOFoiIC8+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNywxNUgyNWExLDEsMCwwLDEsMSwxaDBhMSwxLDAsMCwxLTEsMUg3YTEsMSwwLDAsMS0xLTFINkExLDEsMCwwLDEsNywxNVoiLz4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik03LDIySDI1YTEsMSwwLDAsMSwxLDFoMGExLDEsMCwwLDEtMSwxSDdhMSwxLDAsMCwxLTEtMUg2QTEsMSwwLDAsMSw3LDIyWiIvPgogICAgICAgICAgICA8L3N2Zz4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvcG5hdl9hY3Rpb25fYnV0dG9ucyI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIvL3ZpbWVvLmNvbS9zZWFyY2giIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX2J1dHRvbiB0b3BuYXZfbW9iaWxlX3B1bGxfcmlnaHQgdG9wbmF2X21vYmlsZV9oZWFkZXJfc2VhcmNoIj4KICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJuYXZfYmFyX3NlYXJjaF9pY29uIG5hdl9iYXJfaWNvbiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMzIgMzIiPgogICAgICAgICAgICAgICAgICAgICAgICA8dGl0bGU+U2VhcmNoPC90aXRsZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljc0LDI1LjMybC00LjUzLTQuNTNhMSwxLDAsMCwwLS4yMS0uMTRBOSw5LDAsMSwwLDIwLjY1LDIyYTEsMSwwLDAsMCwuMTQuMjFsNC41Myw0LjUzYTEsMSwwLDAsMCwxLjQxLTEuNDFaTTE1LDIyYTcsNywwLDEsMSw3LTdBNyw3LDAsMCwxLDE1LDIyWiIvPgogICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImNhcnRfdG9wX25hdl9tb2JpbGUiIGNsYXNzPSJ0b3BuYXZfY2FydF9idXR0b24iPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPCEtLSBWaW1lbyBMb2dvIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZfYmFyX3RpdGxlIGpzLW5hdl9iYXJfdGl0bGUiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly92aW1lby5jb20iIGd0bS1kYXRhLWNsaWNrPSJtb2JpbGVfbmF2X2hvbWVfbG9nb19jbGljayI+CiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDQ0MSAxMjQuNjgyIiB3aWR0aD0iODZweCIgaGVpZ2h0PSIyN3B4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIwLjQ4MSwyNy4zMjZjNS40NjIsMCwxMC4xODgtMS45MSwxNC4xNzQtNS43MjhjMy41NDctMy4zNzksNS4zOTItNi45MDYsNS41NC0xMC41ODNjMC4xNDMtMi40OTItMC44MTUtNC45NTEtMi44OC03LjM3OEMxMzUuMjQ0LDEuMjE3LDEzMi42NjIsMCwxMjkuNTYyLDBjLTUuMzIsMC0xMC4xNTUsMS43NjctMTQuNTExLDUuMjg4Yy00LjM1NiwzLjUyNy02LjYwOCw3LjIwNC02Ljc1LDExLjAyMkMxMDguMDAyLDIzLjY1NiwxMTIuMDY3LDI3LjMyNiwxMjAuNDgxLDI3LjMyNnoiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik00MzQuMDc5LDUwLjE2Yy01LjMxOS02LjkyNS0xMy4xNDUtMTAuMzk1LTIzLjQ3NS0xMC4zOTVjLTE2LjA5NywwLTI5LjQ1NSw1Ljg5Ni00MC4wODMsMTcuNjg4Yy05LjkwMiwxMC42MTQtMTQuNDc4LDIyLjI2NS0xMy43MzMsMzQuOTQ0YzAuMDQ5LDAuOTMyLDAuMTMyLDEuODQsMC4yMjksMi43MzhjLTAuNTU0LDAuMjQxLTEuMDkzLDAuNDgzLTEuNjYyLDAuNzI0Yy0xMi41NTYsNS40MTEtMjQuMTQ3LDguMTEtMzQuNzc1LDguMTFjLTUuMzIsMC05LjMwNy0xLjgzOS0xMS45Ni01LjUyMWMxNC4zMTYtMi4zNTUsMjYuMjA2LTcuODc2LDM1LjY2Mi0xNi41NjhjOC44NTQtNy45NTUsMTIuOTg5LTE1LjY4OSwxMi40LTIzLjE5N2MtMC44ODctMTEuNzgtOC41NjItMTcuNjc2LTIzLjAzNC0xNy42NzZjLTE1LjY1LDAtMjkuMjM1LDUuOTA5LTQwLjc1LDE3LjcxNGMtMTAuNDg0LDEwLjc4My0xNS44MDUsMjIuMTQ4LTE1Ljk0NywzNC4xMDNjLTAuMDQsMi4wMDUsMC4wNjYsMy45MzIsMC4zLDUuNzg5Yy0yLjQ3NywxLjYzMi00LjM1MiwyLjQ1Ni01LjYxMywyLjQ1NmMtMi44MSwwLTQuNTc2LTAuNTgyLTUuMzE0LTEuNzZjLTAuNzM3LTEuMTc4LTEuMDM1LTMuMzA4LTAuODg3LTYuNDAxYzAtMS4xNzgsMC45MTktNS42OTUsMi43NzEtMTMuNTY1YzEuODQ1LTcuODcsMi44NDEtMTMuODY0LDIuOTktMTcuOTg3YzAuMjkxLTYuMDI1LTAuODk0LTEwLjY2LTMuNTQ3LTEzLjg5NmMtMy4xMDEtMy45NzQtOC4xOTQtNS42NjMtMTUuMjgxLTUuMDc0Yy01LjkwMiwwLjQ0Ny0xMS41OTIsMi42Ni0xNy4wNTQsNi42NDdjLTMuMjQ5LDIuMzYzLTYuNTY5LDUuNTM0LTkuOTYxLDkuNTIxYy0xLjE4NSwxLjAzNi0yLjI5MSwyLTMuMzI3LDIuODhjMC4xNDMtNi4wNTEtMS4wMzYtMTAuNzA1LTMuNTQtMTMuOTU0Yy0zLjEwNy0zLjk4Ny04LjI3Mi01LjY4My0xNS41MDgtNS4wOTRjLTguNDE1LDAuNzM4LTE2LjAyLDQuMDY1LTIyLjgwOSw5Ljk2N2MtMi45NTgsMi41MTEtNS41NCw1LjQ2OS03Ljc1Myw4Ljg2MWMwLjI5MS0xLjMyNywwLjQ0LTIuNzMxLDAuNDQtNC4yMDdjMC00LjU3Ni0xLjE4NS04LjYwMi0zLjU0Ny0xMi4wNzFzLTUuNDYyLTUuMDU1LTkuMzAxLTQuNzU3Yy0yLjIxMywwLjE0OS02LjQyLDMuMTAxLTEyLjYyMSw4Ljg1NGMtOC41NjksNy45NzQtMTMuMjE2LDEyLjI1OS0xMy45NTQsMTIuODQxbDUuMzEzLDUuOThjNC4xMzYtMi45ODQsNi42NDctNC40NzksNy41MzQtNC40NzljMS42MTgsMCwyLjI4NSwxLjMyNywxLjk5NCwzLjk3NWMtMC4xNDMsMy44MzEtMC44MjIsOS4xNjQtMi4wMzksMTYuMDEyYy0wLjc1NCw0LjI0My0xLjI5OCw3LjkwNC0xLjYzOCwxMC45ODhjLTAuMDY2LDAuMDU1LTAuMTI5LDAuMTA5LTAuMTk2LDAuMTY0Yy01LjMyLDQuMzc1LTkuMDA5LDYuNTU2LTExLjA3NCw2LjU1NmMtNC43MjUsMC03LjAxNi0zLjE1OC02Ljg2Ny05LjQ4OGMyLjIxMy0xMy44MjQsNC4yODUtMjUuMjIyLDYuMjA3LTM0LjE5OWMwLjU4My01LjI5NC0wLjI2Ni05LjU5Mi0yLjU1LTEyLjkwNmMtMi4yOTEtMy4zMTQtNS44Ny00Ljc0NC0xMC43MzctNC4zMDRjLTMuMTA3LDAuMjk4LTcuODMyLDMuMjQ5LTE0LjE4MSw4Ljg2Yy0yLjIwNSwyLTQuNDEsMy45OTYtNi42MTUsNS45OTNjLTAuNDM3LTEwLjQ0Ny01LjIwNC0xNS44MjItMTQuMzI5LTE2LjA5Yy0xMy42NjktMC40NC0yMi45MzEsNy4yNzUtMjcuNzc5LDIzLjE1OGMyLjUwNC0xLjA3NCw0LjkzOC0xLjYxOCw3LjMwMS0xLjYxOGM1LjAxNiwwLDcuMjI5LDIuODIyLDYuNjQsOC40NTNjLTAuMjk3LDMuNDExLTIuNTExLDguMzc1LTYuNjQsMTQuODk5Yy00LjEzNiw2LjUyMy03LjIzNiw5Ljc4Ni05LjMwMSw5Ljc4NmMtMi42NiwwLTUuMDk0LTUuMDIzLTcuMzA3LTE1LjA4MWMtMC43NDUtMi45NTEtMi4wNzEtMTAuNDkxLTMuOTg3LTIyLjYxNGMtMS43NzMtMTEuMjM2LTYuNDk5LTE2LjQ4NS0xNC4xNzQtMTUuNzQ3Yy0zLjI0OSwwLjI5OC04LjEyMywzLjI0OS0xNC42MTQsOC44NkM5LjY2OSw1My4zMTgsNC44NjcsNTcuNTk3LDAsNjEuODc1bDQuNjQxLDUuOThjNC40Mi0zLjA5NCw3LjAwMy00LjY0Nyw3Ljc0MS00LjY0N2MzLjM4NSwwLDYuNTUsNS4zMTMsOS41MDEsMTUuOTI5YzIuNjUzLDkuNzMzLDUuMzA3LDE5LjQ2OCw3Ljk2MSwyOS4yMDJjMy45NzQsMTAuNjIxLDguODQxLDE1LjkyOSwxNC41ODgsMTUuOTI5YzkuMjgxLDAsMjAuNjI3LTguNzE5LDM0LjAzOC0yNi4xNTRDODcuODkyLDg1Ljk4Nyw5My45OSw3NS43NCw5Ni44LDY3LjM1NGMzLjcyLTIuNzQ4LDYuMDE4LTQuMTQ2LDYuODUzLTQuMTQ2YzIuNjUzLDAsMy45ODcsMS45MjIsMy45ODcsNS43NTRjMCwwLjczOC0xLjQ0Myw2LjItNC4zMjQsMTYuMzgxYy0yLjg4LDEwLjE4Mi00LjM5NSwxNy43MDktNC41MzcsMjIuNTc1Yy0wLjE0OSw0LjcyNiwwLjk5Nyw4LjU1NywzLjQzLDExLjUwOGMyLjQzNCwyLjk1Miw1Ljk0MSw0LjQyOCwxMC41MjQsNC40MjhjOS44OSwwLDE5Ljc3OS00LjI3OCwyOS42NzUtMTIuODM1YzAuODgxLTAuNzcyLDEuNzM4LTEuNTU3LDIuNTczLTIuMzUyYzAuNzgzLDMuMzEyLDIuMTI0LDYuMDQ1LDQuMDcsOC4xNWM0LjI1OSw0LjU2OSwxMS40NTYsNi43MDYsMjEuNTkyLDYuNDA4Yy0xLjM1My0zLjI0OS0xLjg4NC05LjAwMy0xLjU4Ni0xNy4yNzRjMC40NC05LjE1MiwyLjgwOS0xNy45NDEsNy4wOTQtMjYuMzU1czguMjc4LTEyLjYyNywxMS45OC0xMi42MjdjNC4yODUsMCw2LjI4NSwyLjczMSw1Ljk4Nyw4LjE5M2MtMC4xNDksMy42OTYtMC44NzQsNy45MDMtMi4xNzUsMTIuNjI4Yy0xLjMwNyw0LjcyNS0yLjAzMiw5LjQ0OS0yLjE3NCwxNC4xNzRjLTAuMjk4LDcuNTM0LDEuMzkyLDEyLjkxOSw1LjA4MSwxNi4xNjhjNC4xMTYsMy42ODksMTEuMzM0LDUuMzkyLDIxLjYzOCw1LjA5NGMtMS41NDEtMy4zOTItMi4xNjItOC4yNjYtMS44NjQtMTQuNjIxYzAuNDQtOS4wMDMsMy40ODItMTguMzA0LDkuMTEzLTI3LjkwMmM1LjMzMy05LjE1MSw5LjkyMi0xMy43MzMsMTMuNzcyLTEzLjczM2MzLjU2LDAsNS4yNjMsMi44MDksNS4xMTMsOC40MTRjLTAuMTQ4LDMuNjg4LTEuMDc0LDguODU0LTIuNzcxLDE1LjQ5NGMtMS42OTUsNi42NDEtMi42MjEsMTIuMzE2LTIuNzY0LDE3LjA0MWMtMC4yOTcsMTAuNjI4LDQuMzUsMTUuOTM2LDEzLjk1NSwxNS45MzZjOS44ODksMCwxOS43NzktNC4yNzgsMjkuNjc1LTEyLjgzNWMwLjE2NC0wLjE0NCwwLjMxNi0wLjI5MywwLjQ3OS0wLjQzOGMwLjM0LDAuNTg2LDAuNjg4LDEuMTY4LDEuMDY4LDEuNzMyYzUuMTY1LDcuOTY3LDEzLjczNCwxMS45NTQsMjUuNjk1LDExLjk1NGMxNi4wOSwwLDMxLjk2Ni00LjQ5Miw0Ny42MTYtMTMuNDg4YzEuNzU2LTAuOTksMy40MjItMS45NzksNS4wMTctMi45N2MwLjk4NiwxLjk5MSwyLjEzOCwzLjg2NiwzLjUwMiw1LjU5MWM2LjA1Miw3LjUyMSwxNC45MTIsMTEuMjgxLDI2LjU3NSwxMS4yODFjMTQuMDI1LDAsMjUuNzY3LTQuOTM4LDM1LjIxNi0xNC44MTVjOS40NDktOS44NzYsMTQuNDY2LTIxLjU5OCwxNS4wNjEtMzUuMTYzQzQ0MS4zODcsNjQuNjg0LDQzOS4xMDIsNTYuNTAzLDQzNC4wNzksNTAuMTZ6IE0zMDUuMTE4LDkwLjAwM2MtMC4wODQtMS45MDktMC4wODQtMi44NjcsMC0yLjg2N2MwLjE0My01LjU3OSwyLjUwNS0xMS40MTcsNy4wNzQtMTcuNTE0czkuMDYyLTkuMTQ2LDEzLjQ4OC05LjE0NmMzLjM5MiwwLDUuMDEsMS45ODcsNC44NjcsNS45NDhjLTAuMTQ5LDIuOTM4LTIuMzYyLDYuNzY0LTYuNjM0LDExLjQ2MkMzMTguNjA2LDgzLjMyNCwzMTIuMzQxLDg3LjM2MiwzMDUuMTE4LDkwLjAwM3ogTTQxNS45MTgsNzMuODY4Yy0wLjI5Nyw3LjEtMi40MzQsMTMuOTAyLTYuNDIsMjAuNDEzYy00LjcyNSw3Ljg0NS0xMC40MTQsMTEuNzYtMTcuMDU1LDExLjc2Yy0yLjk1OCwwLTUuMjQ5LTEuNjI0LTYuODY3LTQuODhjLTEuNDc2LTIuODA5LTIuMTQyLTYuMDY0LTEuOTkzLTkuNzY3YzAuMjkxLTcuNTQsMi41MDUtMTQuNjQsNi42NDctMjEuM2M0Ljg2Ni04LjEzNiwxMS4wNjctMTIuMjA3LDE4LjYwMS0xMi4yMDdjMi4zNTYsMCw0LjE2OCwxLjY3LDUuNDI0LDQuOTk3UzQxNi4wNjcsNjkuODc1LDQxNS45MTgsNzMuODY4eiIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0idG9wbmF2X21vYmlsZV9tZW51IGpzLXRvcG5hdl9tb2JpbGVfbWVudV9tYWluIj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfbW9iaWxlX2JhciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBkYXRhLWFjdGlvbj0ibWVudS5jbG9zZSIgZGF0YS1ndG0tY2xpY2s9Im1vYmlsZV9uYXZfbWVudV9jbG9zZV9jbGljayIgY2xhc3M9Im1lbnVfY2xvc2UgcHVsbF9sZWZ0IGpzLXRvcG5hdl9tb2JpbGVfaGVhZGVyX2Nsb3NlIj4KICAgICAgICAgICAgICAgIDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjEwLjQ5cHgiCiAgICAgICAgICAgICAgICAJIGhlaWdodD0iMTAuNDlweCIgdmlld0JveD0iMCAwIDEwLjQ5IDEwLjQ5IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxMC40OSAxMC40OTsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgPGcgaWQ9ImNsb3NlXzFfIj4KICAgICAgICAgICAgICAgIAk8Zz4KICAgICAgICAgICAgICAgIAkJPGcgaWQ9Ikdyb3VwXzFfIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2LjUwMDAwMCwgNi41MDAwMDApIj4KICAgICAgICAgICAgICAgIAkJCTxwYXRoIGlkPSJSZWN0YW5nbGUtNF8xXyIgc3R5bGU9ImZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I0ZGRkZGRjsiIGQ9Ik0zLjY5LTYuMjFMMy42OS02LjIxYzAuMzksMC4zOSwwLjM5LDEuMDIsMCwxLjQxbC04LjQ5LDguNDkKICAgICAgICAgICAgICAgIAkJCQljLTAuMzksMC4zOS0xLjAyLDAuMzktMS40MSwwbDAsMGMtMC4zOS0wLjM5LTAuMzktMS4wMiwwLTEuNDFsOC40OS04LjQ5QzIuNjctNi42LDMuMy02LjYsMy42OS02LjIxeiIvPgogICAgICAgICAgICAgICAgCQkJPHBhdGggc3R5bGU9ImZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I0ZGRkZGRjsiIGQ9Ik0tNi4yMS02LjIxTC02LjIxLTYuMjFjMC4zOS0wLjM5LDEuMDItMC4zOSwxLjQxLDBsOC40OSw4LjQ5YzAuMzksMC4zOSwwLjM5LDEuMDIsMCwxLjQxbDAsMAogICAgICAgICAgICAgICAgCQkJCWMtMC4zOSwwLjM5LTEuMDIsMC4zOS0xLjQxLDBsLTguNDktOC40OUMtNi42LTUuMTgtNi42LTUuODItNi4yMS02LjIxeiIvPgogICAgICAgICAgICAgICAgCQk8L2c+CiAgICAgICAgICAgICAgICAJPC9nPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgIDwvYnV0dG9uPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbgogICAgICAgICAgICAgICAgZGF0YS1hY3Rpb249Im1lbnUuc2V0dGluZ3Mub3BlbiIKICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJtb2JpbGVfbmF2X3NldHRpbmdzX2NsaWNrIgogICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6c2V0dGluZ3MiCiAgICAgICAgICAgICAgICBjbGFzcz0ibWVudV9zZXR0aW5ncyBwdWxsX3JpZ2h0IGpzLXRvcG5hdl9tb2JpbGVfaGVhZGVyX3NldHRpbmdzIgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIxOC44NnB4IgogICAgICAgICAgICAgICAgCSBoZWlnaHQ9IjIwcHgiIHZpZXdCb3g9IjAgMCAxOC44NiAyMCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMTguODYgMjA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KICAgICAgICAgICAgICAgIDxnIGlkPSJnZWFyXzFfIj4KICAgICAgICAgICAgICAgIAk8Zz4KICAgICAgICAgICAgICAgIAkJPGcgaWQ9Ikljb25fMV8iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUuMDAwMDAwLCA1LjAwMDAwMCkiPgogICAgICAgICAgICAgICAgCQkJPGcgaWQ9Ikdyb3VwLTEwXzFfIj4KICAgICAgICAgICAgICAgIAkJCTwvZz4KICAgICAgICAgICAgICAgIAkJPC9nPgogICAgICAgICAgICAgICAgCQk8cGF0aCBpZD0iQ29tYmluZWQtU2hhcGVfMV8iIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjI7IiBkPSJNMTIsNC41OGwtMC41Ny0wLjI3VjEuOTljMC0wLjU0LTAuNDUtMC45OS0xLTAuOTloLTJjLTAuNTUsMC0xLDAuNDUtMSwwLjk5djIuMzEKICAgICAgICAgICAgICAgIAkJCUw2Ljg2LDQuNThjLTAuMjksMC4xNC0wLjU3LDAuMy0wLjg0LDAuNDhMNS41LDUuNDJMMy40OSw0LjI2QzMuMDIsMy45OSwyLjQxLDQuMTYsMi4xNCw0LjYzbC0xLDEuNzQKICAgICAgICAgICAgICAgIAkJCUMwLjg2LDYuODQsMS4wMiw3LjQ2LDEuNDksNy43M0wzLjUsOC44OUwzLjQ1LDkuNTJDMy40NCw5LjY4LDMuNDMsOS44NCwzLjQzLDEwczAuMDEsMC4zMiwwLjAyLDAuNDhsMC4wNSwwLjYzbC0yLjAxLDEuMTYKICAgICAgICAgICAgICAgIAkJCWMtMC40NywwLjI3LTAuNjMsMC44OC0wLjM2LDEuMzZsMSwxLjc0YzAuMjcsMC40OCwwLjg5LDAuNjQsMS4zNiwwLjM3bDIuMDEtMS4xNmwwLjUyLDAuMzZjMC4yNywwLjE4LDAuNTUsMC4zNSwwLjg0LDAuNDgKICAgICAgICAgICAgICAgIAkJCWwwLjU3LDAuMjd2Mi4zMWMwLDAuNTQsMC40NSwwLjk5LDEsMC45OWgyYzAuNTUsMCwxLTAuNDUsMS0wLjk5di0yLjMxTDEyLDE1LjQyYzAuMjktMC4xNCwwLjU3LTAuMywwLjg0LTAuNDhsMC41Mi0wLjM2CiAgICAgICAgICAgICAgICAJCQlsMi4wMSwxLjE2YzAuNDcsMC4yNywxLjA4LDAuMTEsMS4zNi0wLjM3bDEtMS43NGMwLjI3LTAuNDgsMC4xMS0xLjA5LTAuMzYtMS4zNmwtMi4wMS0xLjE2bDAuMDUtMC42MwogICAgICAgICAgICAgICAgCQkJYzAuMDEtMC4xNiwwLjAyLTAuMzIsMC4wMi0wLjQ4cy0wLjAxLTAuMzItMC4wMi0wLjQ4bC0wLjA1LTAuNjNsMi4wMS0xLjE2YzAuNDctMC4yNywwLjYzLTAuODgsMC4zNi0xLjM2bC0xLTEuNzQKICAgICAgICAgICAgICAgIAkJCWMtMC4yNy0wLjQ4LTAuODktMC42NC0xLjM2LTAuMzdsLTIuMDEsMS4xNmwtMC41Mi0wLjM2QzEyLjU3LDQuODgsMTIuMjksNC43MiwxMiw0LjU4eiIvPgogICAgICAgICAgICAgICAgCQk8Y2lyY2xlIGlkPSJPdmFsXzFfIiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyOyIgY3g9IjkuNDMiIGN5PSIxMCIgcj0iMiIvPgogICAgICAgICAgICAgICAgCTwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICA8dWwgaWQ9Im1lbnVfbGlzdCIgY2xhc3M9Im1lbnVfbGlzdF9sb2dnZWRfb3V0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1icmVlemUtaWdub3JlIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OmpvaW4iIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2pvaW5fY2xpY2siIGlkPSJqcy1qb2luLWxpbmsiIGhyZWY9Ii8vdmltZW8uY29tL2pvaW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ibWVudV9pY29uX2pvaW4iIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIxNnB4IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIyMHB4IiB2aWV3Qm94PSIwIDAgMTYgMjAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDE2IDIwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9ImpvaW4tbG9nLWluXzFfIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLThfMV8iIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjI7IiBjeD0iOCIgY3k9IjUiIHI9IjQiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPSJSZWN0YW5nbGUtMjVfMV8iIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjI7IiBkPSJNMSwxOWgxNHYtM2MwLTIuMjEtMS43OS00LTQtNEg1Yy0yLjIxLDAtNCwxLjc5LTQsNFYxOXoiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKb2luIG9yIGxvZyBpbiAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGEgIGlkPSJqcy1mZWF0dXJlcy1saW5rIiBjbGFzcz0iZmVhdHVyZXMtbGFiZWwiIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJtZW51X2ljb25faG9zdCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjIwcHgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjIwcHgiIHZpZXdCb3g9IjAgMCAyMCAyMCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMjAgMjA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iZmVhdHVyZXNfMV8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJHcm91cC0yXzFfIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyLjAwMDAwMCwgMi4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD0iUmVjdGFuZ2xlLThfMV8iIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjI7IiBkPSJNMS0xaDEwYzEuMSwwLDIsMC45LDIsMnYxMGMwLDEuMS0wLjksMi0yLDJIMWMtMS4xLDAtMi0wLjktMi0yVjFDLTEtMC4xLTAuMS0xLDEtMXoiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD0iUGF0aC01XzFfIiBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDojRkZGRkZGOyIgZD0iTTMuNiwzLjUxYzAtMC41NSwwLjM5LTAuNzcsMC44Ni0wLjVsNC4yOCwyLjVjMC40NywwLjI4LDAuNDgsMC43MywwLDEuMDFMNC40Niw5LjA4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEMzLjk4LDkuMzYsMy42LDkuMTUsMy42LDguNTlMMy42LDMuNTF6Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwXzFfIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzLjAwMDAwMCwgMy4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9IlBhZ2UtMV8xXyIgc3R5bGU9ImZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I0ZGRkZGRjsiIGQ9Ik0xMSwxNWMyLjIxLDAsNC0xLjc5LDQtNFYwYzAtMS4xMS0wLjktMi0yLTJ2MTNjMCwxLjEtMC45LDItMiwySC0yYzAsMS4xLDAuODksMiwyLDJIMTF6IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmVhdHVyZXMgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtYnJlZXplLWlnbm9yZSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpmZWF0dXJlc3xrZXl3b3JkOnZpZGVvX3BsYXllciIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfZmVhdHVyZXNfdmlkZW9fcGxheWVyIiBocmVmPSIvL3ZpbWVvLmNvbS9mZWF0dXJlcy92aWRlby1wbGF5ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ibWVudV9pY29uX3VwbG9hZCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjIwcHgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjE2cHgiIHZpZXdCb3g9IjAgMCAyMCAxNiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMjAgMTY7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaWRlbyBwbGF5ZXIgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtYnJlZXplLWlnbm9yZSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpmZWF0dXJlc3xrZXl3b3JkOmxpdmVfc3RyZWFtaW5nIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9mZWF0dXJlc19saXZlX3N0cmVhbWluZyIgaHJlZj0iLy92aW1lby5jb20vZmVhdHVyZXMvbGl2ZXN0cmVhbWluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJtZW51X2ljb25fdXBsb2FkIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDIwIDE2IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAxNjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpdmUgc3RyZWFtaW5nICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWFjdGlvbj0ibWVudS5jbG9zZSIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6c3RvY2siICIgaHJlZj0iLy92aW1lby5jb20vc3RvY2siPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ibWVudV9pY29uX3VwbG9hZCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjIwcHgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjE2cHgiIHZpZXdCb3g9IjAgMCAyMCAxNiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMjAgMTY7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdG9jayB2aWRlb3MgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtYnJlZXplLWlnbm9yZSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpmZWF0dXJlc3xrZXl3b3JkOnByaXZhY3kiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2ZlYXR1cmVzX3ByaXZhY3kiIGhyZWY9Ii8vdmltZW8uY29tL2ZlYXR1cmVzL3ZpZGVvLXByaXZhY3kiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ibWVudV9pY29uX3VwbG9hZCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjIwcHgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjE2cHgiIHZpZXdCb3g9IjAgMCAyMCAxNiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMjAgMTY7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpdmFjeSAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1icmVlemUtaWdub3JlIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OmZlYXR1cmVzfGtleXdvcmQ6ZGlzdHJpYnV0aW9uIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9mZWF0dXJlc19kaXN0cmlidXRpb24iIGhyZWY9Ii8vdmltZW8uY29tL2ZlYXR1cmVzL3ZpZGVvLW1hcmtldGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJtZW51X2ljb25fdXBsb2FkIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDIwIDE2IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAxNjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpc3RyaWJ1dGlvbiAmIE1hcmtldGluZyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1icmVlemUtaWdub3JlIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OmZlYXR1cmVzfGtleXdvcmQ6aG9zdGluZyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfZmVhdHVyZXNfaG9zdGluZyIgaHJlZj0iLy92aW1lby5jb20vZmVhdHVyZXMvb25saW5lLXZpZGVvLWhvc3RpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ibWVudV9pY29uX3VwbG9hZCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjIwcHgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjE2cHgiIHZpZXdCb3g9IjAgMCAyMCAxNiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMjAgMTY7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3N0aW5nICYgTWFuYWdlbWVudCAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1icmVlemUtaWdub3JlIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50Omluc3BpcmF0aW9ufGtleXdvcmQ6d2F0Y2giIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2luc3BpcmF0aW9uX3dhdGNoIiBpZD0ianMtaW5zcGlyYXRpb24tbGluayIgIGhyZWY9Ii8vdmltZW8uY29tL3dhdGNoIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im1lbnVfaWNvbl93YXRjaCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjIwcHgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjE0cHgiIHZpZXdCb3g9IjAgMCAyMCAxNCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMjAgMTQ7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iaW5zcGlyYXRpb25fMV8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJHcm91cF8xXyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMy4wMDAwMDAsIDYuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9Ik92YWxfMV8iIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjI7c3Ryb2tlLWxpbmVqb2luOnJvdW5kOyIgZD0iTTcsN2MzLjMxLDAsNi4zMS0yLDktNmMtMi42OS00LTUuNjktNi05LTZTMC42OS0zLTIsMUMwLjY5LDUsMy42OSw3LDcsN3oiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTJfMV8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOiNGRkZGRkY7IiBjeD0iNyIgY3k9IjEiIHI9IjMiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnNwaXJhdGlvbiAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1icmVlemUtaWdub3JlIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8a2V5d29yZDp1cGxvYWQiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3VwbG9hZF9jbGljayIgaWQ9ImpzLXVwbG9hZC1saW5rIiBocmVmPSIvL3ZpbWVvLmNvbS91cGxvYWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ibWVudV9pY29uX3VwbG9hZCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjIwcHgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjE2cHgiIHZpZXdCb3g9IjAgMCAyMCAxNiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMjAgMTY7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0idXBsb2FkXzFfIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS4wMDAwMDAsIDEuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD0iQ29tYmluZWQtU2hhcGVfMV8iIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjI7IiBkPSJNMCwxMGMwLDIuMTcsMS45Niw0LDQsNGgxMGMyLjA0LDAsNC0xLjc2LDQtMy45NGMwLTEuNzktMC44LTMuMjgtMS45OS00LjA3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQzE2LjAxLDEuNzksMTMuNDksMCwxMSwwQzkuMDgsMCw3LjI0LDEuMTksNi41OSwzQzMuODIsMy4wMSwyLjU3LDQuNzEsMi4wNyw2LjUyQzEuMDgsNy4wMiwwLDguMjYsMCwxMHoiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJSZWN0YW5nbGVfMV8iIHg9IjgiIHk9IjgiIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOiNGRkZGRkY7IiB3aWR0aD0iMiIgaGVpZ2h0PSI2Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cG9seWxpbmUgaWQ9IlBhdGgtMTNfMV8iIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjI7IiBwb2ludHM9IjYsMTAgOSw3IDEyLDEwICAgICAgICIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVwbG9hZCAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnVwZ3JhZGUiIGRhdGEtZ3RtLWNsaWNrPSJtb2JpbGVfbmF2X3VwZ3JhZGVfY2xpY2siIGlkPSAianMtdXBncmFkZS1saW5rIiBjbGFzcz0iIiBocmVmPSIvL3ZpbWVvLmNvbS91cGdyYWRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im1lbnVfaWNvbl91cGdyYWRlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiIgd2lkdGg9IjMycHgiIGhlaWdodD0iMzJweCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjQsN0gxNVY5aDYuNThMNy4yOSwyMy4yOWwxLjQxLDEuNDFMMjMsMTAuNDFWMTdoMlY4QTEsMSwwLDAsMCwyNCw3WiIgZmlsbD0iI2ZmZmZmZiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXBncmFkZSAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgPC9kaXY+CgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX21lbnUgdG9wbmF2X21vYmlsZV9tZW51X3NldHRpbmdzIGpzLXRvcG5hdl9tb2JpbGVfbWVudV9zZXR0aW5ncyI+CiAgICAgICAgPGRpdiBjbGFzcz0idG9wbmF2X21vYmlsZV9iYXIgc3VibWVudSI+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InRvcG5hdl9tb2JpbGVfYnV0dG9uIHRvcG5hdl9tb2JpbGVfcHVsbF9sZWZ0IGpzLXRvcG5hdl9tb2JpbGVfaGVhZGVyX3NldHRpbnNfY2xvc2UgdG9wbmF2X2ljb25fbW9iaWxlX2Fycm93bGVmdF9iIj4gPC9idXR0b24+CiAgICAgICAgICAgIDxoMSBjbGFzcz0idG9wbmF2X21vYmlsZV9oZWFkZXJfdGl0bGUgc3VibWVudSI+TW9yZSBzdHVmZjwvaDE+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDx1bCBjbGFzcz0ibWVudV9saXN0X3NldHRpbmdzX2xvZ2dlZF9vdXQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBjbGFzcz0iICIgaHJlZj0iLy92aW1lby5jb20vdGVybXMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVybXMgb2YgU2VydmljZSAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBjbGFzcz0iICIgaHJlZj0iLy92aW1lby5jb20vcHJpdmFjeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcml2YWN5IFBvbGljeSAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBjbGFzcz0iICIgaHJlZj0iLy92aW1lby5jb20vZG1jYSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWFjdGlvbj0ibWVudS5jbG9zZSIgY2xhc3M9IiAiIGhyZWY9Ii8vdmltZW8uY29tL2Nvb2tpZV9wb2xpY3kiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29va2llcyAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtYWN0aW9uPSJkZXNrdG9wIiBvbmNsaWNrPSJ2aW1lby5tb2JpbGUuZGVza3RvcF9zaGFyZWQuX3MyZHMoKTsgcmV0dXJuIGZhbHNlIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVza3RvcCBzaXRlICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgbGFuZ3VhZ2UgaHJlZj0iIyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3Qgb25jaGFuZ2U9InZpbWVvLm1vYmlsZS5kZXNrdG9wX3NoYXJlZC5fczJsKHRoaXMpIiB0aXRsZT0iQ2hvb3NlIGEgZGlmZmVyZW50IGxhbmd1YWdlIiBjbGFzcz0idG9wbmF2X21vYmlsZV9tZW51X3NldHRpbmdzX2xhbmd1YWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gY2xhc3M9InNlbGVjdGVkIiBzZWxlY3RlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSJlbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5nbGlzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT0iZXMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9InNlbGVjdF9sYW5ndWFnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVzcGHDsW9sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSJkZS1ERSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV1dHNjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT0iZnItRlIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9InNlbGVjdF9sYW5ndWFnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW7Dp2FpcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT0iamEtSlAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9InNlbGVjdF9sYW5ndWFnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOaXpeacrOiqniAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT0icHQtQlIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9InNlbGVjdF9sYW5ndWFnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvcnR1Z3XDqnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9ImtvLUtSIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPSJzZWxlY3RfbGFuZ3VhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDtlZzqta3slrQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSIgIiBocmVmPSIvL3ZpbWVvLmNvbS9mYXEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFRICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSIgIiBocmVmPSIvL3ZpbWVvLmNvbWhlbHAudmltZW8uY29tL2hjIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhlbHAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgoKCiAgICAgICAgPGRpdiBjbGFzcz0idG9wbmF2X21vYmlsZV9tZW51X2NvcHlyaWdodCI+VE0gKyDCqSAyMDIwIFZpbWVvLCBJbmMuPC9kaXY+CiAgICA8L3NlY3Rpb24+CgoKICAgICAgICA8L25hdj4KCjxzY3JpcHQ+CihmdW5jdGlvbih3aW5kb3csIGRvY3VtZW50KXsKCiAgICAvLyBHbG9iYWwgdmFsdWVzCiAgICB3aW5kb3cudmltZW8gPSB3aW5kb3cudmltZW8gfHwge307CiAgICB2aW1lby5tb2JpbGUgPSB2aW1lby5tb2JpbGUgfHwge307CiAgICBWaW1lbyA9IHZpbWVvLm1vYmlsZSB8fCB7fTsKICAgIFZpbWVvLmRlc2t0b3Bfc2hhcmVkID0gVmltZW8uZGVza3RvcF9zaGFyZWQgfHwge307CgogICAgLy8gREVTS1RPUCBIQU5ETEVSUwoKICAgIHZhciBkZXNrdG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RvcG5hdl9kZXNrdG9wJyk7CgogICAgLy8gUHJldmVudCB0b3VjaCBkZXZpY2UgdG8gaGlndGxpZ2h0IHRoZSBhcmVhIHRhcHBlZAogICAgZGVza3RvcC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgZnVuY3Rpb24oZSl7CiAgICAgICAgLy8gVGFrZSBpbnRvIGNvbnNpZGVyYXRpb24gYXZhdGFyIGltZwogICAgICAgIHZhciB0YXJnZXQgPSAoZS50YXJnZXQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnaW1nJykgPyBlLnRhcmdldC5wYXJlbnROb2RlIDogZS50YXJnZXQ7CgogICAgICAgIGlmICh0YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCd0b3BuYXZfaGFzX2Ryb3Bkb3duJykpIHsKICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgIH0KICAgIH0sIGZhbHNlKTsKCiAgICAvLyBBZGQgbGFzdF9wYWdlIGNvb2tpZQogICAgdmFyIGxpc3RlbiA9ICdvbnRvdWNoc3RhcnQnIGluIHdpbmRvdyA/ICd0b3VjaHN0YXJ0JyA6IHdpbmRvdy5Qb2ludGVyRXZlbnQgPyAncG9pbnRlcmRvd24nIDogd2luZG93Lk1TUG9pbnRlckV2ZW50ID8gJ01TUG9pbnRlckRvd24nIDogJ2NsaWNrJzsKICAgIGRlc2t0b3AuYWRkRXZlbnRMaXN0ZW5lcihsaXN0ZW4sIGZ1bmN0aW9uKGUpewogICAgICAgIGlmIChlLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ2pzLXRvcG5hdl9tZW51X2F1dGgnKSkgewogICAgICAgICAgICBkb2N1bWVudC5jb29raWUgPSAnbGFzdF9wYWdlPScgKyBlbmNvZGVVUklDb21wb25lbnQod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKSArICc7cGF0aD1cJy9cJzttYXgtYWdlPTE4MDA7JzsKICAgICAgICB9CiAgICB9LCBmYWxzZSk7CgogICAgLy8gTU9CSUxFIEhBTkRMRVJTCgogICAgLy8gVHJpZ2dlciBpT1MgVXBsb2FkIGZsb3cKICAgIFZpbWVvLmRlc2t0b3Bfc2hhcmVkLl91cGxvYWQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgLy8gc2hvdyBpVHVuZXMgb25seSBpZiB3ZSBhcmUgaW4gaU9TIHdvcmxkCiAgICAgICAgaWYgKC9pUGFkfGlQaG9uZXxpUG9kLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpKXsKICAgICAgICAgICAgdmFyIGRlZXBsaW5rID0gJ3ZpbWVvOi8vYXBwLnZpbWVvLmNvbS91cGxvYWQ/cmVmPW1vYmlsZXdlYicsCiAgICAgICAgICAgICAgICBmYWxsYmFjayA9ICcvdXBsb2FkJywKICAgICAgICAgICAgICAgIHdlYmtpdEhpZGRlbkNhbGxiYWNrLAogICAgICAgICAgICAgICAgaGl0Q2FsbGJhY2s7CgogICAgICAgICAgICAvLyBDYWxsYmFja3MKICAgICAgICAgICAgd2Via2l0SGlkZGVuQ2FsbGJhY2sgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIC8vIElmIHRoZSB1c2VyIGlzIHN0aWxsIGhlcmUgb3BlbiB0aGUgdXJsIHBhZ2UuCiAgICAgICAgICAgICAgICBpZiAoIWRvY3VtZW50LndlYmtpdEhpZGRlbikgewogICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9IGZhbGxiYWNrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9OwoKICAgICAgICAgICAgLy8gVHJ5IHRvIG9wZW4gdGhlIFZpbWVvIEFwcAogICAgICAgICAgICBoaXRDYWxsYmFjayA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gZGVlcGxpbms7CiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHdlYmtpdEhpZGRlbkNhbGxiYWNrLCAyNSk7CiAgICAgICAgICAgIH07CgogICAgICAgICAgICBoaXRDYWxsYmFjaygpOwoKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgd2luZG93LmxvY2F0aW9uID0gZS5ocmVmOwoKICAgIH0KCgovLyBBRlRFUiBNT0JJTEUgTkFWIFRFU1QgUkVDT05DSUxFIFdJVEggVEhFIGBtb2JpbGVfbWVudV9zY3JpcHQucGh0bWxgCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIC8vIFN3aXRjaCB0byBkZXNrdG9wIHNpdGUKICAgIFZpbWVvLmRlc2t0b3Bfc2hhcmVkLl9zMmRzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgZG9jdW1lbnQuY29va2llPSdvcHRfb3V0X21vYmlsZT0xO2V4cGlyZXM9RnJpLCAzMSBEZWMgOTk5OSAyMzo1OTo1OSBHTVQ7ZG9tYWluPScgKyB2aW1lby5kb21haW47CiAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpOwogICAgfTsKCiAgICAvLyBTd2l0Y2ggdG8gbGFuZ3VhZ2UKICAgIFZpbWVvLmRlc2t0b3Bfc2hhcmVkLl9zMmwgPSBmdW5jdGlvbihzZWwpIHsKICAgICAgICB2YXIgbGFuZyA9IHNlbC52YWx1ZSwKICAgICAgICAgICAgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CgogICAgICAgIHhoci5vcGVuKCdQT1NUJywgJy9zZXR0aW5ncy9sb2NhbGUnKTsKICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcignWC1SZXF1ZXN0ZWQtV2l0aCcsICdYTUxIdHRwUmVxdWVzdCcpOwogICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdDb250ZW50LXR5cGUnLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyk7CiAgICAgICAgeGhyLnNlbmQoJ2xvY2FsZT0nICsgbGFuZyArICcmdG9rZW49JyArIHZpbWVvLnhzcmZ0KTsKICAgICAgICB4aHIub25sb2FkID0gZnVuY3Rpb24gcG9zdCgpIHsKICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDIwMCkgewogICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpOwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgIH07CgogICAgdmFyIG1vYmlsZU1lbnVFbGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuanMtdG9wbmF2X21vYmlsZV9oZWFkZXJfbG9nbycpOwogICAgaWYgKG1vYmlsZU1lbnVFbGUpIHsKICAgICAgICBtb2JpbGVNZW51RWxlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgewoKICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAvLyBPcGVuIE1lbnUKICAgICAgICAgICAgdmFyIG1vYmlsZV9tZW51X21haW4gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuanMtdG9wbmF2X21vYmlsZV9tZW51X21haW4nKTsKICAgICAgICAgICAgbW9iaWxlX21lbnVfbWFpbi5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKCiAgICAgICAgICAgIC8vIENsb3NlIE1lbnUKICAgICAgICAgICAgdmFyIG1vYmlsZV9oZWFkZXJfY2xvc2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuanMtdG9wbmF2X21vYmlsZV9oZWFkZXJfY2xvc2UnKTsKICAgICAgICAgICAgbW9iaWxlX2hlYWRlcl9jbG9zZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICBtb2JpbGVfbWVudV9tYWluLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgLy8gVG9nZ2xlIFNldHRpbmdzCiAgICAgICAgICAgIHZhciBtb2JpbGVfbWVudV9zZXR0aW5ncyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5qcy10b3BuYXZfbW9iaWxlX21lbnVfc2V0dGluZ3MnKTsKICAgICAgICAgICAgdmFyIHRvcG5hdjIwMTVfbW9iaWxlX2hlYWRlcl9zZXR0aW5ncyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5qcy10b3BuYXZfbW9iaWxlX2hlYWRlcl9zZXR0aW5ncycpOwogICAgICAgICAgICB0b3BuYXYyMDE1X21vYmlsZV9oZWFkZXJfc2V0dGluZ3MuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgbW9iaWxlX21lbnVfc2V0dGluZ3Muc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAgICAgICAgICBtb2JpbGVfbWVudV9tYWluLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgICAgICB2YXIgdG9wbmF2MjAxNV9tb2JpbGVfaGVhZGVyX3NldHRpbmdzX2Nsb3NlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLXRvcG5hdl9tb2JpbGVfaGVhZGVyX3NldHRpbnNfY2xvc2UnKTsKICAgICAgICAgICAgICAgIHRvcG5hdjIwMTVfbW9iaWxlX2hlYWRlcl9zZXR0aW5nc19jbG9zZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICBtb2JpbGVfbWVudV9zZXR0aW5ncy5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICAgICAgICAgIG1vYmlsZV9tZW51X21haW4uc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSk7CgogICAgICAgIH0sIGZhbHNlKTsKICAgIH07CgogICAgdmFyIG1vYmlsZUFsYnVtc0VsZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5qcy10b3BuYXZfbW9iaWxlX2hlYWRlcl9hbGJ1bXMnKTsKICAgIGlmIChtb2JpbGVBbGJ1bXNFbGUpIHsKICAgICAgICBtb2JpbGVBbGJ1bXNFbGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgdmFyIG1vYmlsZV9tZW51X2FsYnVtcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5qcy10b3BuYXZfbW9iaWxlX2FsYnVtX2xpc3QnKTsKICAgICAgICAgICAgbW9iaWxlX21lbnVfYWxidW1zLmNsYXNzTGlzdC5hZGQoJ29wZW4nKTsKCiAgICAgICAgICAgIC8vIENsb3NlCiAgICAgICAgICAgIHZhciBtb2JpbGVfYWxidW1zX2Nsb3NlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLXRvcG5hdl9tb2JpbGVfYWxidW1fbGlzdF9jbG9zZScpOwogICAgICAgICAgICBpZiAobW9iaWxlX2FsYnVtc19jbG9zZSkgewogICAgICAgICAgICAgICAgbW9iaWxlX2FsYnVtc19jbG9zZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICBtb2JpbGVfbWVudV9hbGJ1bXMuY2xhc3NMaXN0LnJlbW92ZSgnb3BlbicpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICB9LCBmYWxzZSk7CiAgICB9OwoKCgovLyBeXl5eXl5eXl5eXl5eXl5eXl5eXgovLyBBRlRFUiBNT0JJTEUgTkFWIFRFU1QgUkVDT05DSUxFIFdJVEggVEhFIGBtb2JpbGVfbWVudV9zY3JpcHQucGh0bWxgCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiAgICAvLyBVU0VSIE1FU1NBR0UKCiAgICAvLyBTaG93IG5vdGlmaWNhdGlvbiBpZiBpdCBpcyB0aGUgY2FzZQogICAgLy8gV2Ugd3JhcCB0aGlzIGluIGEgc2V0VGltZW91dCBzaW5jZSB0aGUgbm90aWZpY2F0aW9ucyBzaG91bGQKICAgIC8vIGhhdmUgYSBsb3dlciBwcmlvcml0eSBpbiB0ZXJtcyBvZiB2aXN1YWwgY29tcGFyZWQgdG8gb3RoZXIKICAgIC8vIGl0ZW1zIG9uIHRoZSBwYWdlLgogICAgc2V0VGltZW91dChmdW5jdGlvbigpewogICAgICAgICAvLyBET00gRWxlbWVudHMKICAgICAgICB2YXIgYXZhdGFyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RvcG5hdl9tZW51X2F2YXRhcicpOwogICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGF2YXRhciB0aGVuIHN0b3AgaXQKICAgICAgICBpZiAoIWF2YXRhcikgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICB2YXIgYnViYmxlID0gYXZhdGFyLnF1ZXJ5U2VsZWN0b3IoJy50b3BuYXZfbWVudV9hdmF0YXJfYnViYmxlJyk7CiAgICAgICAgdmFyIGRyb3Bkb3duID0gYXZhdGFyLnF1ZXJ5U2VsZWN0b3IoJyN0b3BuYXZfdXNlcl9kcm9wZG93bicpOwogICAgICAgIC8vdmFyIG1lc3NhZ2UgPSBhdmF0YXIucXVlcnlTZWxlY3RvcignLnRvcG5hdl91c2VyX21lbnVfbWVzc2FnZScpOwogICAgICAgIC8vdmFyIGNsb3NlID0gYXZhdGFyLnF1ZXJ5U2VsZWN0b3IoJy50b3BuYXZfdXNlcl9tZW51X21lc3NhZ2VfY2xvc2UnKTsKICAgICAgICB2YXIgb25faG92ZXIgPSBmYWxzZTsKCiAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gYnViYmxlIHRoZW4gc3RvcCBpdAogICAgICAgIGlmIChidWJibGUpIHsKICAgICAgICAgICAgYnViYmxlLmNsYXNzTGlzdC5hZGQoJ29uJyk7CiAgICAgICAgfQoKICAgICAgICAvLyBBbmQgd2UgYXR0YWNoIGhpZGUgdGhlIGJ1YmJsZQogICAgICAgIGF2YXRhci5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW92ZXInLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgaWYgKG9uX2hvdmVyKSByZXR1cm47CgogICAgICAgICAgICBvbl9ob3ZlciA9IHRydWU7CgogICAgICAgICAgICBpZiAoYnViYmxlKSB7CiAgICAgICAgICAgICAgICBidWJibGUuY2xhc3NMaXN0LnJlbW92ZSgnb24nKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gU2F2ZSByZW1vdmVkIHN0YXRlIFsxIG1lYW5zIHRoZSB1c2VyIG9wZW4gdGhlIGRyb3Bkb3duXQogICAgICAgICAgICBzdG9yZV91c2VyX21lc3NhZ2Vfc2V0dGluZ3MoMSk7CgogICAgICAgIH0sIGZhbHNlKTsKCiAgICAgICAgLy8gU3RvcmUgc3RhdHVzIG9mIHVzZXIgbmF2IG1lc3NhZ2UgKGJ1YmJsZSBjbG9zZWQgWzFdLCBtZXNzYWdlIGhpZGRlbiBbMl0pCiAgICAgICAgZnVuY3Rpb24gc3RvcmVfdXNlcl9tZXNzYWdlX3NldHRpbmdzKHZhbHVlKSB7CiAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgIHhoci5vcGVuKCdQT1NUJywgJy9zZXR0aW5ncy9uYXYnKTsKICAgICAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoJ1gtUmVxdWVzdGVkLVdpdGgnLCAnWE1MSHR0cFJlcXVlc3QnKTsKICAgICAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtdHlwZScsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKTsKICAgICAgICAgICAgeGhyLnNlbmQoJ21lc3NhZ2Vfc3RhdGU9JyArIHZhbHVlICsgJyZ0b2tlbj0nICsgdmltZW8ueHNyZnQpOwoKICAgICAgICAgICAgLy8gTm90aGluZyB0byBoYW5kbGUuIFdlIGhvcGUgZm9yIHRoZSBiZXN0IGluIHRoaXMgY2FzZQogICAgICAgICAgICB4aHIub25sb2FkID0gZnVuY3Rpb24gKCkge307CiAgICAgICAgfTsKCiAgICB9LCAxMDAwKTsKfSkod2luZG93LCBkb2N1bWVudCk7Cjwvc2NyaXB0PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IndyYXBfY29udGVudCB2YXJpYW50LXYyIj4KICAgICAgICAgICAgICAgIAoKCgo8ZGl2IGNsYXNzPSJleGNlcHRpb25fY29udGFpbmVyIj4KICAgIDxkaXYgY2xhc3M9ImV4Y2VwdGlvbl9zZWN0aW9uIGV4Y2VwdGlvbl9zZWN0aW9uLS1pbmZvIj4KICAgICAgICA8aDEgY2xhc3M9ImV4Y2VwdGlvbl90aXRsZSBpcmlzX2hlYWRlciI+U29ycnksIHRoaXMgdmlkZW8gaXMgdW5hdmFpbGFibGU8L2gxPgoKICAgICAgICA8ZGl2IGNsYXNzPSJleGNlcHRpb25fY29udGVudCI+CiAgICAgICAgICAgIDxwIGNsYXNzPSJleGNlcHRpb25fbWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJleGNlcHRpb25fbm90aWZpY2F0aW9uIGlyaXNfbm90aWZpY2F0aW9uIGlyaXNfbm90aWZpY2F0aW9uLS13YXJuaW5nIj4KICAgIDxkaXYgY2xhc3M9ImlyaXNfbm90aWZpY2F0aW9uLS13YXJuaW5nLWljb24iPgogICAgICAgIDxzcGFuIGNsYXNzPSJpcmlzX2ljIGlzLS0xNiI+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjI5OCAzODkgMTYgMTQiPjxwYXRoIGQ9Ik0zMTMuNyA0MDBsLTYtMTBjLS40LS42LTEtMS0xLjctMXMtMS40LjQtMS43IDFsLTYgMTBjLS4yLjMtLjMuNi0uMyAxIDAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTIgMC0uNC0uMS0uNy0uMy0xem0tNi43IDFoLTJ2LTJoMnYyem0wLTNoLTJ2LTVoMnY1eiIvPjwvc3ZnPgo8L3NwYW4+CiAgICA8L2Rpdj4KCiAgICA8cD5WaW1lbyBoYXMgcmVtb3ZlZCBvciBkaXNhYmxlZCBhY2Nlc3MgdG8gdGhlIHZpZGVvIDxzdHJvbmc+VGhlIE1lYW4gV29ybGQgU3luZHJvbWUgY3Ugc3ViPC9zdHJvbmc+IGFzIGEgcmVzdWx0IG9mIGEgdGhpcmQtcGFydHkgbm90aWZpY2F0aW9uIGJ5IDxzdHJvbmc+TWVkaWEgRWR1Y2F0aW9uIEZvdW5kYXRpb248L3N0cm9uZz4gdGhhdCBjbGFpbXMgdGhpcyBtYXRlcmlhbCBpcyBpbmZyaW5naW5nIG9uIHRoZWlyIGNvcHlyaWdodC48L3A+CgogICAgCiAgICA8ZGl2IGNsYXNzPSJpcmlzX25vdGlmaWNhdGlvbi1hZGRlbmR1bS0td2FybmluZyI+CiAgICAgICAgVGhpcyB2aWRlbyB3YXMgcmVtb3ZlZCBvbiBXZWRuZXNkYXksIEF1Z3VzdCAxNCwgMjAxMyBBdCAxOjEwIFBNLiAgICAgICAgICAgIDwvZGl2Pgo8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBjbGFzcz0iZXhjZXB0aW9uX3NlYXJjaCIgYWN0aW9uPSIvc2VhcmNoIiBtZXRob2Q9ImdldCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZXhjZXB0aW9uX3NlYXJjaC1pbnB1dC13cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJleGNlcHRpb25fc2VhcmNoLWlucHV0IGlyaXNfaW5wdXQgaXJpc19pbnB1dC0tc2VhcmNoIGpzLXNlYXJjaF9hdXRvY29tcGxldGUiIHR5cGU9InRleHQiIG5hbWU9InEiIHBsYWNlaG9sZGVyPSJTZWFyY2ggdmlkZW9zLCBwZW9wbGUsIGFuZCBtb3JlIiBhdXRvY29tcGxldGU9Im9mZiIgLz4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJleGNlcHRpb25fc2VhcmNoLWJ1dHRvbiBpcmlzX2J0biBpcmlzX2J0bi0tcHJpbWFyeSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpcmlzX2J0bi1jb250ZW50Ij5TZWFyY2g8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJleGNlcHRpb25fYXV4aWxpYXJ5Ij48L2Rpdj4KPC9kaXY+CgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8Zm9vdGVyIGNsYXNzPSJmb290ZXJfdjIgZm9vdGVyX3YyLS1yZXNwb25zaXZlIj4KICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0iZm9vdGVyX3YyX19zaXRlbWFwIj4KICAgIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9fbGlua3MiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJmb290ZXJfdjJfX2xpbmsgZm9vdGVyX3YyX2FjY29yZGlvbiI+CiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fY2hlY2siIHR5cGU9ImNoZWNrYm94Ij4KICAgICAgICAgICAgPGg0IGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyLXRleHQiPlZJTUVPPC9zcGFuPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fcmV2ZWFsIj4KICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJpcmlzX2ljIGlzLS0xMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgOCA4Ij48cGF0aCBkPSJNNy43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDBMNCA0LjU4NiAxLjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMC0uMzkuMzktLjM5IDEuMDI0IDAgMS40MTRsMyAzYy4zOS4zOSAxLjAyNC4zOSAxLjQxNCAwbDMtM2MuMzktLjM5LjM5LTEuMDI0IDAtMS40MTR6Ii8+PC9zdmc+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9oND4KICAgICAgICAgICAgPHVsIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstbGlzdCBmb290ZXJfdjJfYWNjb3JkaW9uX19tZW51Ij4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii91cGdyYWRlIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfcHJpY2luZyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDp2aW1lb3xrZXl3b3JkOnByaWNpbmciCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBQcmljaW5nICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL3VwbG9hZCIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3VwbG9hZF9jbGljayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDp2aW1lb3xrZXl3b3JkOnVwbG9hZCIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFVwbG9hZCAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9jaGFubmVscy9zdGFmZnBpY2tzIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfc3RhZmZfcGlja3MiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6dmltZW98a2V5d29yZDpzdGFmZl9waWNrcyIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFN0YWZmIFBpY2tzICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL29uZGVtYW5kIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfb25fZGVtYW5kX2NsaWNrIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnZpbWVvfGtleXdvcmQ6b25fZGVtYW5kIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgT24gRGVtYW5kICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly92aW1lby5jb20vb3R0IgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdmltZW9fb3R0IgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnZpbWVvfGtleXdvcmQ6b3R0IgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgVmltZW8gT1RUICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL3NpdGVfbWFwIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfc2l0ZV9tYXBfY2xpY2siCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6dmltZW98a2V5d29yZDpzaXRlX21hcCIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFNpdGUgbWFwICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgIDwvc2VjdGlvbj4KCiAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImZvb3Rlcl92Ml9fbGluayBmb290ZXJfdjJfYWNjb3JkaW9uIj4KICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19jaGVjayIgdHlwZT0iY2hlY2tib3giPgogICAgICAgICAgICA8aDQgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXIiPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXItdGV4dCI+U09MVVRJT05TPC9zcGFuPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fcmV2ZWFsIj4KICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJpcmlzX2ljIGlzLS0xMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgOCA4Ij48cGF0aCBkPSJNNy43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDBMNCA0LjU4NiAxLjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMC0uMzkuMzktLjM5IDEuMDI0IDAgMS40MTRsMyAzYy4zOS4zOSAxLjAyNC4zOSAxLjQxNCAwbDMtM2MuMzktLjM5LjM5LTEuMDI0IDAtMS40MTR6Ii8+PC9zdmc+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9oND4KICAgICAgICAgICAgPHVsIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstbGlzdCBmb290ZXJfdjJfYWNjb3JkaW9uX19tZW51Ij4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9mZWF0dXJlcy92aWRlby1wbGF5ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua192aWRlb19wbGF5ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6ZmVhdHVyZXN8a2V5d29yZDp2aWRlb19wbGF5ZXIiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBWaWRlbyBQbGF5ZXIgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvY3JlYXRlIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfY3JlYXRpb24iCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6c29sdXRpb25zfGtleXdvcmQ6Y3JlYXRlIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2ZlYXR1cmVzL3ZpZGVvLXByaXZhY3kiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19wcml2YWN5IgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OmZlYXR1cmVzfGtleXdvcmQ6cHJpdmFjeSIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFByaXZhY3kgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvZmVhdHVyZXMvdmlkZW8tY29sbGFib3JhdGlvbiIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX2NvbGxhYm9yYXRpb24iCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6ZmVhdHVyZXN8a2V5d29yZDpjb2xsYWJvcmF0aW9uIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGFib3JhdGlvbiAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9mZWF0dXJlcy92aWRlby1tYXJrZXRpbmciCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19kaXN0cmlidXRpb24iCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6ZmVhdHVyZXN8a2V5d29yZDpkaXN0cmlidXRpb24iCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBEaXN0cmlidXRpb24gJiBtYXJrZXRpbmcgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvZmVhdHVyZXMvdmlkZW8tbW9uZXRpemF0aW9uIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfbW9uZXRpemF0aW9uIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OmZlYXR1cmVzfGtleXdvcmQ6bW9uZXRpemF0aW9uIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgTW9uZXRpemF0aW9uICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2xpdmUiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19saXZlX3N0cmVhbWluZyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpmZWF0dXJlc3xrZXl3b3JkOmxpdmVfc3RyZWFtaW5nIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgTGl2ZSBzdHJlYW1pbmcgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvZmVhdHVyZXMvdmlkZW8tYW5hbHl0aWNzIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfYW5hbHl0aWNzIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OmZlYXR1cmVzfGtleXdvcmQ6YW5hbHl0aWNzIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgQW5hbHl0aWNzICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2ZlYXR1cmVzL29ubGluZS12aWRlby1ob3N0aW5nIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfaG9zdGluZyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpmZWF0dXJlc3xrZXl3b3JkOmhvc3RpbmciCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBIb3N0aW5nICYgbWFuYWdlbWVudCAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9lbnRlcnByaXNlIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfZW50ZXJwcmlzZSIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpzb2x1dGlvbnN8a2V5d29yZDplbnRlcnByaXNlIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgRW50ZXJwcmlzZSAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9mb3ItaGlyZSIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX2Zvcl9oaXJlIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOmZvcl9oaXJlIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgRm9yIEhpcmUgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvc3RvY2siCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19zdG9jayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpzb2x1dGlvbnN8a2V5d29yZDpzdG9jayIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFN0b2NrICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgIDwvc2VjdGlvbj4KCiAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImZvb3Rlcl92Ml9fbGluayBmb290ZXJfdjJfYWNjb3JkaW9uIj4KICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19jaGVjayIgdHlwZT0iY2hlY2tib3giPgogICAgICAgICAgICA8aDQgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXIiPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXItdGV4dCI+QVBQUzwvc3Bhbj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX3JldmVhbCI+CiAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0iaXJpc19pYyBpcy0tMTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDggOCI+PHBhdGggZD0iTTcuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwTDQgNC41ODYgMS43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDAtLjM5LjM5LS4zOSAxLjAyNCAwIDEuNDE0bDMgM2MuMzkuMzkgMS4wMjQuMzkgMS40MTQgMGwzLTNjLjM5LS4zOS4zOS0xLjAyNCAwLTEuNDE0eiIvPjwvc3ZnPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvaDQ+CiAgICAgICAgICAgIDx1bCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWxpc3QgZm9vdGVyX3YyX2FjY29yZGlvbl9fbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vYXBwcy5hcHBsZS5jb20vYXBwL2FwcGxlLXN0b3JlL2lkMTM1NjY4Njc2Mz9wdD00MTc3MzEmYW1wO2N0PWxvaHAmYW1wO210PTgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OmFwcHN8a2V5d29yZDptYWNvcyIKICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmltZW8gZm9yIG1hY09TICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vaXR1bmVzLmFwcGxlLmNvbS9hcHAvdmltZW8vaWQ0MjUxOTQ3NTk/bXQ9OCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6YXBwc3xrZXl3b3JkOmlvcyIKICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmltZW8gZm9yIGlPUyAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL3BsYXkuZ29vZ2xlLmNvbS9zdG9yZS9hcHBzL2RldGFpbHM/aWQ9Y29tLnZpbWVvLmFuZHJvaWQudmlkZW9hcHAmYW1wO3JlZmVycmVyPXV0bV9zb3VyY2UlM0Rmb290ZXIlMjZ1dG1fbWVkaXVtJTNEbG9ocCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6YXBwc3xrZXl3b3JkOmFuZHJvaWQiCiAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpbWVvIGZvciBBbmRyb2lkICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vYXBwcy5hcHBsZS5jb20vdXMvYXBwL3ZpbWVvLWNyZWF0ZS9pZDE0OTE3OTE1MTMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OmFwcHN8a2V5d29yZDpjcmVhdGVfaW9zIgogICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaW1lbyBDcmVhdGUgZm9yIGlPUyAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL3BsYXkuZ29vZ2xlLmNvbS9zdG9yZS9hcHBzL2RldGFpbHM/aWQ9Y29tLnZpbWVvY3JlYXRlLnZpZGVvZWRpdG9yLm1vdmllbWFrZXImYW1wO3JlZmVycmVyPXV0bV9zb3VyY2UlM0Rmb290ZXIlMjZ1dG1fbWVkaXVtJTNEbG9ocCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6YXBwc3xrZXl3b3JkOmNyZWF0ZV9hbmRyb2lkIgogICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaW1lbyBDcmVhdGUgZm9yIEFuZHJvaWQgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9tYWdpc3RvLmNvbSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6YXBwc3xrZXl3b3JkOm1hZ2lzdG8iCiAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hZ2lzdG8gICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9zZWN0aW9uPgoKICAgICAgICA8c2VjdGlvbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rIGZvb3Rlcl92Ml9hY2NvcmRpb24iPgogICAgICAgICAgICA8aW5wdXQgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX2NoZWNrIiB0eXBlPSJjaGVja2JveCI+CiAgICAgICAgICAgIDxoNCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlciI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlci10ZXh0Ij5SRVNPVVJDRVM8L3NwYW4+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19yZXZlYWwiPgogICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9ImlyaXNfaWMgaXMtLTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA4IDgiPjxwYXRoIGQ9Ik03LjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMEw0IDQuNTg2IDEuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwLS4zOS4zOS0uMzkgMS4wMjQgMCAxLjQxNGwzIDNjLjM5LjM5IDEuMDI0LjM5IDEuNDE0IDBsMy0zYy4zOS0uMzkuMzktMS4wMjQgMC0xLjQxNHoiLz48L3N2Zz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2g0PgogICAgICAgICAgICA8dWwgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1saXN0IGZvb3Rlcl92Ml9hY2NvcmRpb25fX21lbnUiPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9oZWxwIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfaGVscF9jZW50ZXJfY2xpY2siCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6cmVzb3VyY2VzfGtleXdvcmQ6aGVscF9jZW50ZXIiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBIZWxwIENlbnRlciAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9ibG9nIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdmltZW9fYmxvZ19jbGljayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpyZXNvdXJjZXN8a2V5d29yZDp2aW1lb19ibG9nIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgQmxvZyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9ibG9nL2NhdGVnb3J5L3ZpZGVvLXNjaG9vbCIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3ZpZGVvX3NjaG9vbF9jbGljayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpyZXNvdXJjZXN8a2V5d29yZDp2aWRlb19zY2hvb2wiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBWaWRlbyBTY2hvb2wgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL3ZpbWVvLmNvbS9vdHQvcmVzb3VyY2VzIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfb3R0X3Jlc291cmNlcyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpyZXNvdXJjZXN8a2V5d29yZDpvdHRfcmVzb3VyY2VzIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgT1RUIFJlc291cmNlcyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLnZpbWVvLmNvbSIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX2RldmVsb3BlcnNfY2xpY2siCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6cmVzb3VyY2VzfGtleXdvcmQ6ZGV2ZWxvcGVycyIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIERldmVsb3BlcnMgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvc3R1ZGVudHMiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19zdHVkZW50cyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpyZXNvdXJjZXN8a2V5d29yZDpzdHVkZW50cyIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFN0dWRlbnRzICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2hlbHAvZ3VpZGVsaW5lcyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3ZpbWVvX2d1aWRlbGluZXNfY2xpY2siCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6cmVzb3VyY2VzfGtleXdvcmQ6dmltZW9fZ3VpZGVsaW5lcyIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIEd1aWRlbGluZXMgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9zZWN0aW9uPgoKICAgICAgICA8c2VjdGlvbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rIGZvb3Rlcl92Ml9hY2NvcmRpb24iPgogICAgICAgICAgICA8aW5wdXQgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX2NoZWNrIiB0eXBlPSJjaGVja2JveCI+CiAgICAgICAgICAgIDxoNCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlciI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlci10ZXh0Ij5VUEdSQURFPC9zcGFuPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fcmV2ZWFsIj4KICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJpcmlzX2ljIGlzLS0xMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgOCA4Ij48cGF0aCBkPSJNNy43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDBMNCA0LjU4NiAxLjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMC0uMzkuMzktLjM5IDEuMDI0IDAgMS40MTRsMyAzYy4zOS4zOSAxLjAyNC4zOSAxLjQxNCAwbDMtM2MuMzktLjM5LjM5LTEuMDI0IDAtMS40MTR6Ii8+PC9zdmc+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9oND4KICAgICAgICAgICAgPHVsIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstbGlzdCBmb290ZXJfdjJfYWNjb3JkaW9uX19tZW51Ij4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9zdG9yZS9wbHVzIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdXBncmFkZV9wbHVzIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnVwZ3JhZGVfbGlua3xrZXl3b3JkOnBsdXMiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBWaW1lbyBQbHVzICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL3N0b3JlL3BybyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3VwZ3JhZGVfcHJvIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnVwZ3JhZGVfbGlua3xrZXl3b3JkOnBybyIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFZpbWVvIFBSTyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9zdG9yZS9idXNpbmVzcyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3VwZ3JhZGVfYnVzaW5lc3MiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6dXBncmFkZV9saW5rfGtleXdvcmQ6YnVzaW5lc3MiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBWaW1lbyBCdXNpbmVzcyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9zdG9yZS9wcmVtaXVtIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdXBncmFkZV9wcmVtaXVtIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnVwZ3JhZGVfbGlua3xrZXl3b3JkOnByZW1pdW0iCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBWaW1lbyBQcmVtaXVtICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2VudGVycHJpc2UiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua191cGdyYWRlX2VudGVycHJpc2UiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6dXBncmFkZV9saW5rfGtleXdvcmQ6ZW50ZXJwcmlzZSIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFZpbWVvIEVudGVycHJpc2UgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSJodHRwOi8vdmltZW8uZXh0b2xlLmNvbS93ZWJzaXRlX2Zvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3VwZ3JhZGVfcmVmX2ZyaWVuZCIKICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PSJfYmxhbmsiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6dXBncmFkZV9saW5rfGtleXdvcmQ6cmVmZXJfYV9mcmllbmQiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBSZWZlciBhIGZyaWVuZCAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICA8L3NlY3Rpb24+CgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJmb290ZXJfdjJfX2xpbmsgZm9vdGVyX3YyX2FjY29yZGlvbiI+CiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fY2hlY2siIHR5cGU9ImNoZWNrYm94Ij4KICAgICAgICAgICAgPGg0IGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyLXRleHQiPkNPTVBBTlk8L3NwYW4+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19yZXZlYWwiPgogICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9ImlyaXNfaWMgaXMtLTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA4IDgiPjxwYXRoIGQ9Ik03LjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMEw0IDQuNTg2IDEuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwLS4zOS4zOS0uMzkgMS4wMjQgMCAxLjQxNGwzIDNjLjM5LjM5IDEuMDI0LjM5IDEuNDE0IDBsMy0zYy4zOS0uMzkuMzktMS4wMjQgMC0xLjQxNHoiLz48L3N2Zz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2g0PgogICAgICAgICAgICA8dWwgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1saXN0IGZvb3Rlcl92Ml9hY2NvcmRpb25fX21lbnUiPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2Fib3V0IgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfYWJvdXRfY2xpY2siCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6Y29tcGFueXxrZXl3b3JkOmFib3V0X3ZpbWVvIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgQWJvdXQgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvam9icyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX2pvYnMiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6Y29tcGFueXxrZXl3b3JkOmpvYnMiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBKb2JzICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgIDwvc2VjdGlvbj4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxhc2lkZSBpZD0iZm9vdGVyX3RpcCIgY2xhc3M9ImZvb3Rlcl92Ml9fdGlwIiBhcmlhLWxpdmU9InBvbGl0ZSI+CiAgICAgICAgICAgIDxoNCBjbGFzcz0iZm9vdGVyX3YyX190aXAtaGVhZGVyIj5EaWQgeW91IGtub3c/PC9oND4KICAgICAgICAgICAgPHAgY2xhc3M9ImFjdGl2ZSBmb290ZXJfdjJfX3RpcC1jb250ZW50Ij5IZXkgZGV2ZWxvcGVycy4gPGEgaHJlZj0iaHR0cDovL2RldmVsb3Blci52aW1lby5jb20vIiBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpkaWRfeW91X2tub3dfYm94fGNvbXBvbmVudDpwcm9kdWN0Ij5XZSBjYW4gbWVldCB5b3VyIGRlc2lyZXM8L2E+IHdpdGggb3VyIEFQSSBmb3IgYWxsIHlvdXIgYXBwLWJ1aWxkaW5nIG5lZWRzLjwvcD4KICAgICAgICA8L2FzaWRlPgogICAgPC9zZWN0aW9uPgogICAgCiAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImZvb3Rlcl92Ml9fYXV4aWxpYXJ5ICI+CgogICAgPGRpdiBjbGFzcz0iZm9vdGVyX3YyX19sZWdhbCI+CiAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyX3YyX19hdXhpbGlhcnktY29udGVudCI+CiAgICAgICAgICAgIDxwPlRNICsgJmNvcHk7IDIwMjAgVmltZW8sIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC48L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPHVsIGNsYXNzPSJmb290ZXJfdjJfX2xlZ2FsLWxpc3QiPgogICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGVnYWwtbGlzdC1pdGVtIj4KICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTQiIGhyZWY9Ii90ZXJtcyIgdGl0bGU9IlRlcm1zICZhbXA7IENvbmRpdGlvbnMiPgogICAgICAgICAgICAgICAgICAgIFRlcm1zICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xlZ2FsLWxpc3QtaXRlbSI+CiAgICAgICAgICAgICAgICA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS00IiBocmVmPSIvcHJpdmFjeSIgdGl0bGU9IlByaXZhY3kgUG9saWN5Ij4KICAgICAgICAgICAgICAgICAgICBQcml2YWN5ICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xlZ2FsLWxpc3QtaXRlbSI+CiAgICAgICAgICAgICAgICA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS00IiBocmVmPSIvcHJpdmFjeS9jYWxpZm9ybmlhLXByaXZhY3kiIHRpdGxlPSJDQSBQcml2YWN5Ij4KICAgICAgICAgICAgICAgICAgICBDQSBQcml2YWN5ICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xlZ2FsLWxpc3QtaXRlbSI+CiAgICAgICAgICAgICAgICA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS00IiBocmVmPSIvZG1jYSIgdGl0bGU9IkNvcHlyaWdodCBJbmZvcm1hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0ICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xlZ2FsLWxpc3QtaXRlbSI+CiAgICAgICAgICAgICAgICA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS00IiBocmVmPSIvY29va2llX3BvbGljeSIgdGl0bGU9IkxlYXJuIG1vcmUgYWJvdXQgaG93IFZpbWVvIHVzZXMgY29va2llcyI+CiAgICAgICAgICAgICAgICAgICAgQ29va2llcyAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgPC91bD4KICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfX2F1eGlsaWFyeS1jb250ZW50IGZvb3Rlcl92Ml9fd2l0aGxvdmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFkZSB3aXRoIDxzdmcgY2xhc3M9ImlyaXNfaWMgaXMtLTEyIGZvb3Rlcl92Ml9fbG92ZWhlYXJ0IGZvb3Rlcl92Ml9fYXV4aWxpYXJ5LWljb24iIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDEyIDEyIj48cGF0aCBkPSJNOSAyQzcuMzEyIDIgNiAzLjUgNiAzLjVTNC42ODcgMiAzIDJDMS4zMTIgMiAwIDMuMzEyIDAgNWMwIDMuMTg4IDMuNzUgMy4wMTIgNiA2IDIuMjUtMi45ODggNi0yLjgxMiA2LTYgMC0xLjY4OC0xLjMxMy0zLTMtM3oiLz48L3N2Zz4gaW4gTllDLiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfX2ZpbHRlcnMgZm9vdGVyX3YyX19hdXhpbGlhcnktY29udGVudCI+CiAgICAgICAgPHNwYW4gY2xhc3M9Imxhbmd1YWdlIj4KICAgICAgICAgICAgTGFuZ3VhZ2U6CiAgICAgICAgICAgIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTQiIGhyZWY9IiNsYW5ndWFnZSIgb25jbGljaz0idmltZW8uTW9kYWwuY3JlYXRlKHtjb250ZW50OiAnL3NldHRpbmdzL2xvY2FsZScsIHNpemU6ICdzbWFsbCd9KTsgcmV0dXJuIGZhbHNlOyIgdGl0bGU9IkNob29zZSBhIGRpZmZlcmVudCBsYW5ndWFnZSI+RW5nbGlzaDwvYT4KICAgICAgICA8L3NwYW4+CgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmb290ZXJfdjJfX2ZpbHRlciI+TWF0dXJlIGNvbnRlbnQgZmlsdGVyOiA8L3NwYW4+PGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktNCBmb290ZXJfdjJfX2ZpbHRlcnNfX2xhbmcgY29udGVudGZpbHRlciBqcy1mb290ZXJfY29udGVudGZpbHRlcl9saW5rIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIG9uY2xpY2s9InZpbWVvLk1vZGFsLmNyZWF0ZSh7Y29udGVudDogJy9zZXR0aW5ncy9jb250ZW50cmF0aW5nJ30pIiB0aXRsZT0iQ2hhbmdlIHlvdXIgbWF0dXJlIGNvbnRlbnQgZmlsdGVyIj5Ob25lPC9hPgogICAgICAgICAgICA8L2Rpdj4KCjwvc2VjdGlvbj4KPC9mb290ZXI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKPHNjcmlwdD4KICAgIHZhciBfX2ZhID0gX19mYSB8fCBbXTsKICAgIC8qKgogICAgICogQmVjYXVzZSBzaW5nbGUgcGFnZSBhcHBsaWNhdGlvbnMgc3VjaCBhcyB0aGUgYXBwIHNoZWxsIHdpbGwgYmUgdHJhY2tpbmcKICAgICAqIEZhdGFsIEF0dHJhY3Rpb24gcGFnZSB2aWV3cyBvbiBSZWFjdCBsaWZlY3ljbGUgaG9va3MgKGNvbXBvbmVudERpZE1vdW50KQogICAgICogd2Ugd2FudCB0byBhdm9pZCBkaXNwYXRjaGluZyB0aGUgcGFnZXZpZXcgZXZlbnQgZnJvbSB0aGUgUEhQIHRlbXBsYXRlCiAgICAgKiBhbmQgZGVmZXIgdGhpcyBzb3J0IG9mIHRyYWNraW5nIGxvZ2ljIHRvIHRoZSBmcm9udCBlbmQuCiAgICAgKgogICAgICogVGhpcyBjaGVjayBhbGxvd3MgdXMgdG8gZGVjbGFyZSBpbiBhIGNvbnRyb2xsZXIgd2hldGhlciBvciBub3Qgd2UKICAgICAqIHdhbnQgdG8gZGlzcGF0Y2ggdGhhdCBwcmVsaW1pbmFyeSBwYWdldmlldy4KICAgICAqCiAgICAgKiBUaGUgcHJvcGVydHkgaXMgYWRkaXRpdmUgb25seSwgYXMgdG8gbm90IGFmZmVjdCBleGlzdGluZyBwYWdldmlld3MuCiAgICAgKi8KICAgICAgICAgICAgX19mYS5wdXNoKFsndHJhY2tQYWdldmlldyddKTsKICAgIAogICAgLyoqCiAgICAgKiBBZGQgc2VydmVyIHNpZGUgQUJMaW5jb2xuIGV4cGVyaW1lbnRzIHRvIEdUTSBkYXRhIGxheWVyLgogICAgICovCiAgICAKICAgICAgICB2YXIgX2V4dGVuZCA9IGZ1bmN0aW9uKCl7Zm9yKHZhciByPWFyZ3VtZW50c1swXSxuPTEsZT1hcmd1bWVudHMubGVuZ3RoO2U+bjtuKyspe3ZhciB0PWFyZ3VtZW50c1tuXTtmb3IodmFyIGEgaW4gdCl0Lmhhc093blByb3BlcnR5KGEpJiYoclthXT10W2FdKX1yZXR1cm4gcn07CgogICAgICAgIHZhciBDU1NfRElSID0gJ2h0dHBzOi8vZi52aW1lb2Nkbi5jb20vc3R5bGVzL2Nzc19vcHQvJywKICAgICAgICBKU19ESVIgPSAnaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvJywKICAgICAgICBJTUFHRV9ESVIgPSAnaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9pbWFnZXNfdjYvJywKICAgICAgICBGT05UX0RJUiA9ICdodHRwczovL2YudmltZW9jZG4uY29tL2ZvbnRzLycsCiAgICAgICAgU1ZHX0RJUiA9ICdodHRwczovL2YudmltZW9jZG4uY29tL3N2Zy8nLAogICAgICAgICAgICAgICAgQlVJTERfSEFTSCA9ICc2YWViZSc7CgogICAgCiAgICAgICAgdmFyIHZpbWVvID0gX2V4dGVuZCgod2luZG93LnZpbWVvIHx8IHt9KSwgeyJhcHBfdmVyc2lvbiI6InY2IiwiZG9tYWluIjoidmltZW8uY29tIiwidXJsIjoidmltZW8uY29tIiwiY3VyX3VzZXIiOmZhbHNlLCJvcmlnaW5fdXNlcl9pZCI6bnVsbCwib3JpZ2luX3VzZXIiOmZhbHNlLCJpc19tb2JpbGUiOmZhbHNlfSk7CiAgICB2aW1lby5jb25maWcgPSBfZXh0ZW5kKCh2aW1lby5jb25maWcgfHwge30pLCB7InN0aWNreV90b3BuYXYiOnsiZXhjbHVkZWRfcGFnZXMiOlsiVmltZW9cXENvbnRyb2xsZXJcXEFib3V0Q29udHJvbGxlcjptYWluIiwiVmltZW9cXENvbnRyb2xsZXJcXEFib3V0Q29udHJvbGxlcjpwcm9mZXNzaW9uYWxzIiwiVmltZW9cXENvbnRyb2xsZXJcXEFib3V0Q29udHJvbGxlcjpldmVyeW9uZSIsIlZpbWVvXFxDb250cm9sbGVyXFxIb21lQ29udHJvbGxlcjp1cGdyYWRlIiwiVmltZW9cXENvbnRyb2xsZXJcXFN0b3JlQ29udHJvbGxlcjptYWluIiwiVmltZW9cXENvbnRyb2xsZXJcXFVzZXJcXFNldHRpbmdzMkNvbnRyb2xsZXI6bWFpbiIsIlZpbWVvXFxDb250cm9sbGVyXFxVc2VyXFxTZXR0aW5nczJDb250cm9sbGVyOnRlYW1fbWVtYmVycyIsIlZpbWVvXFxDb250cm9sbGVyXFxVc2VyXFxTZXR0aW5nczJDb250cm9sbGVyOnBhc3N3b3JkIiwiVmltZW9cXENvbnRyb2xsZXJcXFByb2ZpbGVDb250cm9sbGVyOm1haW4iLCJWaW1lb1xcQ29udHJvbGxlclxcQ2xpcFN0YXRzQ29udHJvbGxlcjptYWluIiwiVmltZW9cXENvbnRyb2xsZXJcXENsaXBcXFNldHRpbmdzXFxFbWJlZENvbnRyb2xsZXI6ZW1iZWQiLCJWaW1lb1xcQ29udHJvbGxlclxcVmlkZW9NYW5hZ2VyQ29udHJvbGxlciIsIlZpbWVvXFxDb250cm9sbGVyXFxWaWRlb1Jldmlld0NvbnRyb2xsZXIiLCJWaW1lb1xcQ29udHJvbGxlclxcTWVzc2FnZXNDb250cm9sbGVyIiwiVmltZW9cXENvbnRyb2xsZXJcXFN0YXRzQ29udHJvbGxlciIsIlZpbWVvXFxDb250cm9sbGVyXFxVcGxvYWRDb250cm9sbGVyIiwiVmltZW9cXENvbnRyb2xsZXJcXE9uRGVtYW5kXFxTZXR0aW5nc0NvbnRyb2xsZXIiLCJWaW1lb1xcQ29udHJvbGxlclxcQ2xpcFxcU2V0dGluZ3NDb250cm9sbGVyIl0sInN0aWNreV9pbmNsdWRlZF9wYWdlcyI6WyJWaW1lb1xcQ29udHJvbGxlclxcU3RvY2tcXFN0b2NrSG9tZVBhZ2VDb250cm9sbGVyIiwiVmltZW9cXENvbnRyb2xsZXJcXFN0b2NrXFxTdG9ja0Zvb3RhZ2VDb250cm9sbGVyIiwiVmltZW9cXENvbnRyb2xsZXJcXFN0b2NrXFxTdG9ja1NlYXJjaENvbnRyb2xsZXIiLCJWaW1lb1xcQ29udHJvbGxlclxcU3RvY2tcXFN0b2NrQ29sbGVjdGlvbnNDb250cm9sbGVyIiwiVmltZW9cXENvbnRyb2xsZXJcXEFsYnVtQ29udHJvbGxlciJdLCJ0b3BuYXZfd3JhcF9zZWxlY3RvciI6IiN0b3BuYXZfb3V0ZXJfd3JhcCIsImNvbnRlbnRfd3JhcF9zZWxlY3RvciI6Ii53cmFwX2NvbnRlbnQifSwibG9jYWxlIjoiZW4iLCJvbW5pc2VhcmNoX2VuYWJsZWQiOmZhbHNlLCJvbW5pc2VhcmNoX2Rpc2FibGVkIjpudWxsLCJvbW5pc2VhcmNoX2p3dCI6ImV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSklVekkxTmlKOS5leUpsZUhBaU9qRTJNRE00TWpNNE9EQXNJblZ6WlhKZmFXUWlPbTUxYkd3c0ltRndjRjlwWkNJNk5UZzBOemtzSW5OamIzQmxjeUk2SW5CMVlteHBZeUJ3Y21sMllYUmxJR1JsYkdWMFpTSXNJblJsWVcxZmRYTmxjbDlwWkNJNmJuVnNiSDAuM0R1V21qSjFXZVdDM19VYTdaRFdLbGF5OGpZaEtneUY4N0Uwdkhra0doVSIsIm9tbmlzZWFyY2hfdXNlciI6bnVsbCwiYXBpX3VybCI6ImFwaS52aW1lby5jb20iLCJzaG93X29tbmlzZWFyY2hfdGlwIjpmYWxzZX0pOwoKICAgICAgICB2YXIgX19pMThuTG9jYWxlID0gJ2VuJzsKICAgIHZhciBsb2NhbGVDb25maWcgPSB7CiAgICAgICAgbGFuZzogJ2VuJywKICAgICAgICAnRGF0ZSc6IHsKICAgICAgICAgICAgbW9udGhzOiBbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sCiAgICAgICAgICAgIG1vbnRoc19hYmJyOiBbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLAogICAgICAgICAgICBkYXlzOiBbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sCiAgICAgICAgICAgIGRheXNfYWJicjogWyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSwKCiAgICAgICAgICAgIC8vIEN1bHR1cmUncyBkYXRlIG9yZGVyOiBNTS9ERC9ZWVlZCiAgICAgICAgICAgIGRhdGVPcmRlcjogWydkYXRlJywgJ21vbnRoJywgJ3llYXInXSwKICAgICAgICAgICAgc2hvcnREYXRlOiAnJWQvJW0vJVknLAogICAgICAgICAgICBzaG9ydFRpbWU6ICclSTolTSVwJywKICAgICAgICAgICAgQU06ICdBTScsCiAgICAgICAgICAgIFBNOiAnUE0nLAogICAgICAgICAgICBmaXJzdERheU9mV2VlazogMCwKCiAgICAgICAgICAgIC8vIERhdGUuRXh0cmFzCiAgICAgICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uKGRheU9mTW9udGgpewogICAgICAgICAgICAgICAgcmV0dXJuIGRheU9mTW9udGg7CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICdEYXRlUGlja2VyJzogewogICAgICAgICAgICBzZWxlY3RfYV90aW1lOiAiU2VsZWN0IGEgdGltZSIsCiAgICAgICAgICAgIHVzZV9tb3VzZV93aGVlbDogIlVzZSB0aGUgbW91c2Ugd2hlZWwgdG8gcXVpY2tseSBjaGFuZ2UgdmFsdWUiLAogICAgICAgICAgICB0aW1lX2NvbmZpcm1fYnV0dG9uOiAiT0siLAogICAgICAgICAgICBhcHBseV9yYW5nZTogIkFwcGx5IiwKICAgICAgICAgICAgY2FuY2VsOiAiQ2FuY2VsIiwKICAgICAgICAgICAgd2VlazogIldrIiAgICAgICAgfSwKICAgICAgICAgICAgICAgICdOdW1iZXInOiB7CiAgICAgICAgICAgIGRlY2ltYWw6ICcuJywKICAgICAgICAgICAgZ3JvdXA6ICcsJywKICAgICAgICAgICAgY3VycmVuY3k6IHsKICAgICAgICAgICAgICAgIHByZWZpeDogJyQnCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICdGb3JtVmFsaWRhdG9yJzogeyJyZXF1aXJlZCI6IlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIiwicmVxdWlyZWRDaGsiOiJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiJ9ICAgIH07CgogICAgdmFyIGZ1bGxMb2NhbGUgPSAnJzsKCiAgICAKICAgICAgICB2YXIgQ29weSA9IHt0cmFuc2xhdGU6ZnVuY3Rpb24odCxpLHUpe3ZhciBlPSdvYmplY3QnIT10eXBlb2YgdGhpcy5kaWN0W3RdP3RoaXMuZGljdFt0XTppP3RoaXMuZGljdFt0XS5wbHVyYWw6dGhpcy5kaWN0W3RdLnNpbmd1bGFyO3JldHVybidvYmplY3QnPT10eXBlb2YgdSYmKGU9dGhpcy5zdWJzdGl0dXRlKGUsdSkpLGV9LHN1YnN0aXR1dGU6ZnVuY3Rpb24odCxpKXtyZXR1cm4gdm9pZCAwIT09dC5zdWJzdGl0dXRlP3Quc3Vic3RpdHV0ZShpKTp0LnJlcGxhY2UoL1xcP1x7KFtee31dKylcfS9nLGZ1bmN0aW9uKHQsdSl7cmV0dXJuJ1xcJz09dC5jaGFyQXQoMCk/dC5zbGljZSgxKTpudWxsIT1pW3VdP2lbdV06Jyd9KX0sZGljdDp7fX07CiAgICBDb3B5LmRpY3QgPSB7ImRpZF95b3VfbWVhbl9lbWFpbCI6IkRpZCB5b3UgbWVhbiA8ZW0+e1NVR0dFU1R9PFwvZW0+PyIsImVtYWlsX3Bhc3N3b3JkX21pc21hdGNoIjoiRW1haWwgYW5kIHBhc3N3b3JkIGRvIG5vdCBtYXRjaCIsIm9vcHNfdHJ5X2FnYWluIjoiT29wcyEgU29tZXRoaW5nIHdlbnQgd3JvbmcuIFBsZWFzZSB0cnkgYWdhaW4uIiwianVzdF9ub3ciOiJqdXN0IG5vdyIsInNlY29uZHNfYWdvIjp7InNpbmd1bGFyIjoie0NPVU5UfSBzZWNvbmQgYWdvIiwicGx1cmFsIjoie0NPVU5UfSBzZWNvbmRzIGFnbyJ9LCJtaW51dGVzX2FnbyI6eyJzaW5ndWxhciI6IntDT1VOVH0gbWludXRlIGFnbyIsInBsdXJhbCI6IntDT1VOVH0gbWludXRlcyBhZ28ifSwiaG91cnNfYWdvIjp7InNpbmd1bGFyIjoie0NPVU5UfSBob3VyIGFnbyIsInBsdXJhbCI6IntDT1VOVH0gaG91cnMgYWdvIn0sIm9wZW5fY29tbWVudF9ib3giOiJBZGQgbmV3IGNvbW1lbnQgaW5zdGVhZCAmcmFxdW87IiwidXJsX3VuYXZhaWxhYmxlIjoiU29ycnksIHRoaXMgdXJsIGlzIHVuYXZhaWxhYmxlLiIsInVuc2F2ZWRfY2hhbmdlc19nZW5lcmljIjoiWW91IGhhdmUgdW5zYXZlZCBjaGFuZ2VzLCBhcmUgeW91IHN1cmUgeW91IHdpc2ggdG8gbGVhdmU/IiwiYWRkIjoiQWRkIiwicmVtb3ZlIjoiUmVtb3ZlIiwic2VsZWN0IjoiU2VsZWN0Iiwibm9fZm9sbG93ZXJzX2Zvcl9sZXR0ZXIiOiJZb3UgZG9uJnJzcXVvO3QgZm9sbG93IGFueW9uZSB0aGF0IGJlZ2luIHdpdGggdGhlIGxldHRlciAmbGRxdW87e1BBR0VfTEVUVEVSfSZyZHF1bzsiLCJzaGFyZV9saW1pdF9yZWFjaGVkIjoiWW91IGhhdmUgcmVhY2hlZCB0aGUgbWF4aW11bSBudW1iZXIgb2YgdXNlcnMgdG8gc2hhcmUgd2l0aC4iLCJhdF9sZWFzdF9vbmUiOiJUaGVyZSBtdXN0IGJlIGF0IGxlYXN0IG9uZSB1c2VyLiIsImF2YWlsYWJsZSI6IkF2YWlsYWJsZSIsInVuYXZhaWxhYmxlIjoiVW5hdmFpbGFibGUiLCJicm93c2VfZXJyb3JfZ2VuZXJpYyI6IlNvcnJ5LCB0aGVyZSB3YXMgYW4gZXJyb3IiLCJicm93c2VfZXJyb3Jfbm9fdmlkZW9zIjoiU29ycnksIG5vIHZpZGVvcyBmb3VuZCIsImZvbGxvdyI6IkZvbGxvdyIsImZvbGxvd2luZyI6IkZvbGxvd2luZyIsInVuZm9sbG93IjoiVW5mb2xsb3ciLCJ1bmZvbGxvd2luZyI6IlVuZm9sbG93aW5nIiwiY291bnRfY29tbWVudHMiOnsic2luZ3VsYXIiOiJ7Q09VTlR9IGNvbW1lbnQiLCJwbHVyYWwiOiJ7Q09VTlR9IGNvbW1lbnRzIn0sImZpcnN0X2NvbW1lbnQiOiJCZSB0aGUgZmlyc3QgdG8gY29tbWVudFx1MjAyNiIsIm5vX2NvbW1lbnRzX2Zvcl95b3UiOiJGb3JiaWRkZW4uIFlvdSBjYW5ub3QgcG9zdCBjb21tZW50cyBvbiB0aGlzIHBhZ2UuIiwib29wcyI6Ik9vcHMhIiwicGxheWVyX3RyeV9hZ2FpbiI6IlRoYXQgd2Fzbid0IHN1cHBvc2VkIHRvIGhhcHBlbi4gUGxlYXNlIHRyeSBhZ2FpbiBpbiBhIGZldyBtaW51dGVzLiIsImR1cmF0aW9uX2lucHV0X21pbl9kdXJhdGlvbiI6IlRoZSBkdXJhdGlvbiBjYW5ub3QgYmUgbGVzcyB0aGFuIHtNSU5fRFVSQVRJT059LiIsImR1cmF0aW9uX2lucHV0X21heF9kdXJhdGlvbiI6IlRoZSBkdXJhdGlvbiBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuIHtNQVhfRFVSQVRJT059LiIsImR1cmF0aW9uX2lucHV0X2ludmFsaWRfY2hhcmFjdGVycyI6IjAtOSBhbmQgOiBhcmUgdGhlIG9ubHkgYWNjZXB0YWJsZSBpbnB1dHMuIiwiY2xvc2UiOiJDbG9zZSIsImV4cGFuZCI6IkV4cGFuZCIsImxvYWRpbmciOiJMb2FkaW5nLi4uIiwidG9wIjoidG9wIiwiYWR2YW5jZWRfc2VhcmNoIjoiQWR2YW5jZWQgU2VhcmNoIiwibm9fc3VnZ2VzdGlvbnMiOiJObyBzdWdnZXN0aW9ucyIsInJlY2VudF9zZWFyY2hlcyI6IlJlY2VudCBTZWFyY2hlcyIsInNlYXJjaF9hbGwiOiJTZWFyY2ggQWxsIG9mIFZpbWVvIiwiZW1haWxfYW5kX3Bhc3N3b3JkIjoiUGxlYXNlIGVudGVyIHlvdXIgZW1haWwgYW5kIHBhc3N3b3JkIiwiZW1haWxfYWRkcmVzcyI6IlBsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3MiLCJuYW1lX2VtYWlsX2FuZF9wYXNzd29yZCI6IlBsZWFzZSBlbnRlciB5b3VyIG5hbWUsIGVtYWlsLCBhbmQgcGFzc3dvcmQifTsKPC9zY3JpcHQ+CgoKICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2YudmltZW9jZG4uY29tL2pzX29wdC9zdGlja3lfdG9wbmF2X2NvbWJpbmVkLm1pbi5qcz81ZmZkNmQ0ZSI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvcmVhY3RfcHJvZF9jb21iaW5lZC5taW4uanM/MDMxNzc1YTQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vanNfb3B0L2V4Y2VwdGlvbl9jb21iaW5lZC5taW4uanM/MmEyZjI2MTMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vanNfb3B0L3RvcG5hdl9jYXJ0X2J1dHRvbl9jb21iaW5lZC5taW4uanM/NDQ4OGMwOTIiPjwvc2NyaXB0PgoKICAgIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL2YudmltZW9jZG4uY29tL2pzX29wdC9fYnVuZGxlcy9jcmVhdGVfZmFjZWJvb2tfaGVhZGVyLmJ1bmRsZS5taW4uanM/OTU0YzQ2MDAiPjwvc2NyaXB0PgogICAgPHNjcmlwdD4KICAgICAgICBmdW5jdGlvbiBvblZpbWVvRG9tUmVhZHkoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgd2luZG93LnZpbWVvID0gd2luZG93LnZpbWVvIHx8IHt9OwogICAgICB3aW5kb3cudmltZW8uZXhjZXB0aW9uX2RhdGEgPSB7InRpdGxlIjoiU29ycnksIHRoaXMgdmlkZW8gaXMgdW5hdmFpbGFibGUiLCJtZXNzYWdlIjoiIiwibm90aWZpY2F0aW9uIjoiPGRpdiBjbGFzcz1cImV4Y2VwdGlvbl9ub3RpZmljYXRpb24gaXJpc19ub3RpZmljYXRpb24gaXJpc19ub3RpZmljYXRpb24tLXdhcm5pbmdcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaXJpc19ub3RpZmljYXRpb24tLXdhcm5pbmctaWNvblwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImlyaXNfaWMgaXMtLTE2XCI+PHN2ZyB4bWxucz1cImh0dHA6XC9cL3d3dy53My5vcmdcLzIwMDBcL3N2Z1wiIHZpZXdCb3g9XCIyOTggMzg5IDE2IDE0XCI+PHBhdGggZD1cIk0zMTMuNyA0MDBsLTYtMTBjLS40LS42LTEtMS0xLjctMXMtMS40LjQtMS43IDFsLTYgMTBjLS4yLjMtLjMuNi0uMyAxIDAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTIgMC0uNC0uMS0uNy0uMy0xem0tNi43IDFoLTJ2LTJoMnYyem0wLTNoLTJ2LTVoMnY1elwiXC8+PFwvc3ZnPlxuPFwvc3Bhbj5cbiAgICA8XC9kaXY+XG5cbiAgICA8cD5WaW1lbyBoYXMgcmVtb3ZlZCBvciBkaXNhYmxlZCBhY2Nlc3MgdG8gdGhlIHZpZGVvIDxzdHJvbmc+VGhlIE1lYW4gV29ybGQgU3luZHJvbWUgY3Ugc3ViPFwvc3Ryb25nPiBhcyBhIHJlc3VsdCBvZiBhIHRoaXJkLXBhcnR5IG5vdGlmaWNhdGlvbiBieSA8c3Ryb25nPk1lZGlhIEVkdWNhdGlvbiBGb3VuZGF0aW9uPFwvc3Ryb25nPiB0aGF0IGNsYWltcyB0aGlzIG1hdGVyaWFsIGlzIGluZnJpbmdpbmcgb24gdGhlaXIgY29weXJpZ2h0LjxcL3A+XG5cbiAgICBcbiAgICA8ZGl2IGNsYXNzPVwiaXJpc19ub3RpZmljYXRpb24tYWRkZW5kdW0tLXdhcm5pbmdcIj5cbiAgICAgICAgVGhpcyB2aWRlbyB3YXMgcmVtb3ZlZCBvbiBXZWRuZXNkYXksIEF1Z3VzdCAxNCwgMjAxMyBBdCAxOjEwIFBNLiAgICAgICAgICAgIDxcL2Rpdj5cbjxcL2Rpdj5cbiIsInNlYXJjaCI6dHJ1ZSwidmlkZW9zIjpudWxsLCJhZF9jb25maWciOnsiaG91c2VfYWRzX2VuYWJsZWQiOmZhbHNlfSwicGFnZV90eXBlIjoiZXhjZXB0aW9uIiwibW9kdWxlX3R5cGUiOiJzdGFuZGFyZF9tdWx0aSJ9OwoKICAgICAgbmV3IHdpbmRvdy5FeGNlcHRpb24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLnJlYWR5KG9uVmltZW9Eb21SZWFkeSk7CiAgICAgICAgICAgIDwvc2NyaXB0PgoKCiAgICA8L2JvZHk+CjwvaHRtbD4K
125
+ http_version:
126
+ recorded_at: Tue, 27 Oct 2020 18:22:03 GMT
127
+ recorded_with: VCR 3.0.3
@@ -0,0 +1,70 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: head
5
+ uri: https://api.vimeo.com/videos/59312311
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - VideoInfo/2.8.0
12
+ Authorization:
13
+ - bearer vimeo_access_token
14
+ Accept:
15
+ - application/vnd.vimeo.*+json;version=3.2
16
+ response:
17
+ status:
18
+ code: 404
19
+ message: Not Found
20
+ headers:
21
+ Connection:
22
+ - keep-alive
23
+ Content-Length:
24
+ - '50'
25
+ Server:
26
+ - nginx
27
+ Content-Type:
28
+ - application/vnd.vimeo.error+json
29
+ Cache-Control:
30
+ - private, no-store, no-cache
31
+ Strict-Transport-Security:
32
+ - max-age=31536000; includeSubDomains; preload
33
+ X-Ratelimit-Limit:
34
+ - '50'
35
+ X-Ratelimit-Remaining:
36
+ - '46'
37
+ X-Ratelimit-Reset:
38
+ - '2020-10-27T18:24:07+00:00'
39
+ Request-Hash:
40
+ - 1970d9aa
41
+ X-Bapp-Server:
42
+ - api-v4924-k5d6n
43
+ X-Vimeo-Dc:
44
+ - ge
45
+ Accept-Ranges:
46
+ - bytes
47
+ - bytes
48
+ Via:
49
+ - 1.1 varnish
50
+ - 1.1 varnish
51
+ Date:
52
+ - Tue, 27 Oct 2020 18:23:08 GMT
53
+ Age:
54
+ - '0'
55
+ X-Served-By:
56
+ - cache-bwi5145-BWI, cache-cwb20525-CWB
57
+ X-Cache:
58
+ - MISS, MISS
59
+ X-Cache-Hits:
60
+ - 0, 0
61
+ X-Timer:
62
+ - S1603822988.400409,VS0,VE175
63
+ Vary:
64
+ - Accept,Vimeo-Client-Id
65
+ body:
66
+ encoding: UTF-8
67
+ string: ''
68
+ http_version:
69
+ recorded_at: Tue, 27 Oct 2020 18:23:08 GMT
70
+ recorded_with: VCR 3.0.3
@@ -0,0 +1,158 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: head
5
+ uri: https://vimeo.com/98605382
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - VideoInfo/2.8.0
12
+ Accept:
13
+ - "*/*"
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ Connection:
20
+ - keep-alive
21
+ Content-Length:
22
+ - '171694'
23
+ Server:
24
+ - nginx
25
+ Content-Type:
26
+ - text/html; charset=UTF-8
27
+ Expires:
28
+ - Tue, 27 Oct 2020 18:32:00 GMT
29
+ Set-Cookie:
30
+ - vuid=1802576841.1036939760; expires=Fri, 25-Oct-2030 18:22:00 GMT; Max-Age=315360000;
31
+ path=/; domain=.vimeo.com; secure; SameSite=None
32
+ X-Ua-Compatible:
33
+ - IE=edge
34
+ X-Xss-Protection:
35
+ - 1; mode=block
36
+ X-Content-Type-Options:
37
+ - nosniff
38
+ X-Frame-Options:
39
+ - sameorigin
40
+ Strict-Transport-Security:
41
+ - max-age=31536000; includeSubDomains; preload
42
+ Content-Security-Policy-Report-Only:
43
+ - 'default-src https: data: blob: wss: ''unsafe-inline'' ''unsafe-eval''; report-uri
44
+ /_csp'
45
+ X-Bapp-Server:
46
+ - pweb-v4874-qqxbn
47
+ Via:
48
+ - 1.1 varnish
49
+ - 1.1 varnish, 1.1 varnish
50
+ Cache-Control:
51
+ - no-store, no-cache, must-revalidate, post-check=0, pre-check=0
52
+ X-Varnish-Cache:
53
+ - '0'
54
+ X-Vserver:
55
+ - infra-webproxy-a-14
56
+ X-Vimeo-Dc:
57
+ - ge
58
+ Accept-Ranges:
59
+ - bytes
60
+ Date:
61
+ - Tue, 27 Oct 2020 18:22:00 GMT
62
+ Age:
63
+ - '0'
64
+ X-Served-By:
65
+ - cache-bwi5121-BWI, cache-cwb20524-CWB
66
+ X-Cache:
67
+ - MISS, MISS
68
+ X-Cache-Hits:
69
+ - 0, 0
70
+ X-Timer:
71
+ - S1603822920.133493,VS0,VE388
72
+ Vary:
73
+ - User-Agent,Accept-Encoding
74
+ body:
75
+ encoding: UTF-8
76
+ string: ''
77
+ http_version:
78
+ recorded_at: Tue, 27 Oct 2020 18:22:00 GMT
79
+ - request:
80
+ method: get
81
+ uri: https://vimeo.com/98605382
82
+ body:
83
+ encoding: US-ASCII
84
+ string: ''
85
+ headers:
86
+ Accept-Encoding:
87
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
88
+ Accept:
89
+ - "*/*"
90
+ User-Agent:
91
+ - Ruby
92
+ response:
93
+ status:
94
+ code: 200
95
+ message: OK
96
+ headers:
97
+ Connection:
98
+ - keep-alive
99
+ Content-Length:
100
+ - '40745'
101
+ Server:
102
+ - nginx
103
+ Content-Type:
104
+ - text/html; charset=UTF-8
105
+ Expires:
106
+ - Tue, 27 Oct 2020 18:32:01 GMT
107
+ Set-Cookie:
108
+ - vuid=1454548141.1503048180; expires=Fri, 25-Oct-2030 18:22:00 GMT; Max-Age=315359999;
109
+ path=/; domain=.vimeo.com; secure; SameSite=None
110
+ X-Ua-Compatible:
111
+ - IE=edge
112
+ X-Xss-Protection:
113
+ - 1; mode=block
114
+ X-Content-Type-Options:
115
+ - nosniff
116
+ X-Frame-Options:
117
+ - sameorigin
118
+ Strict-Transport-Security:
119
+ - max-age=31536000; includeSubDomains; preload
120
+ Content-Security-Policy-Report-Only:
121
+ - 'default-src https: data: blob: wss: ''unsafe-inline'' ''unsafe-eval''; report-uri
122
+ /_csp'
123
+ X-Bapp-Server:
124
+ - pweb-v4874-gskcx
125
+ Via:
126
+ - 1.1 varnish
127
+ - 1.1 varnish, 1.1 varnish
128
+ Cache-Control:
129
+ - no-store, no-cache, must-revalidate, post-check=0, pre-check=0
130
+ X-Varnish-Cache:
131
+ - '0'
132
+ X-Vserver:
133
+ - infra-webproxy-a-17
134
+ X-Vimeo-Dc:
135
+ - ge
136
+ Accept-Ranges:
137
+ - bytes
138
+ Date:
139
+ - Tue, 27 Oct 2020 18:22:01 GMT
140
+ Age:
141
+ - '0'
142
+ X-Served-By:
143
+ - cache-bwi5128-BWI, cache-cwb20526-CWB
144
+ X-Cache:
145
+ - MISS, MISS
146
+ X-Cache-Hits:
147
+ - 0, 0
148
+ X-Timer:
149
+ - S1603822921.769926,VS0,VE793
150
+ Vary:
151
+ - User-Agent,Accept-Encoding
152
+ body:
153
+ encoding: ASCII-8BIT
154
+ string: !binary |-
155
+ PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICAgIDxoZWFkPgogICAgICAgIAo8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CjxtZXRhIHByb3BlcnR5PSJmYjphcHBfaWQiIGNvbnRlbnQ9IjE5ODg0MDI4OTYzIj4KPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPgo8bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Ii8vcGxheWVyLnZpbWVvLmNvbSI+CjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iLy9pLnZpbWVvY2RuLmNvbSI+CjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iLy9mLnZpbWVvY2RuLmNvbSI+CjxsaW5rIHJlbD0ic2VhcmNoIiB0eXBlPSJhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sIiBocmVmPSIvc2VhcmNoL29wZW5zZWFyY2gueG1sIiB0aXRsZT0iVmltZW8iPgo8bGluayByZWw9ImxvZ28iIHR5cGU9ImltYWdlL3N2ZyIgaHJlZj0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9sb2dvLnN2ZyI+CgoKICAgICAgICAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCxpbml0aWFsLXNjYWxlPTEuMCxtYXhpbXVtLXNjYWxlPTUuMCx1c2VyLXNjYWxhYmxlPXllcyI+CiAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgcHJvcGVydHk9Im9nOnNpdGVfbmFtZSIgY29udGVudD0iVmltZW8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIHByb3BlcnR5PSJvZzp1cmwiIGNvbnRlbnQ9Imh0dHBzOi8vdmltZW8uY29tLzk4NjA1MzgyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6dHlwZSIgY29udGVudD0idmlkZW8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIHByb3BlcnR5PSJvZzp0aXRsZSIgY29udGVudD0iRGVhZmhlYXZlbiAtIFRoZSBQZWNhbiBUcmVlIChMaXZlKSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgcHJvcGVydHk9Im9nOmRlc2NyaXB0aW9uIiBjb250ZW50PSJUaGlzIHZpZGVvIHRha2VuIGxpdmUgZnJvbSBEZWFmaGVhdmVuIGxpdmUgaW4gSmFrYXJ0YSBvbiBNYXkgOHRoIDIwMTQgYXQgVGhlIEJhc2VtZW50IENhZmUsIEtlbWFuZyBSYXlhLCBKYWthcnRhLiAgRGVhZmhlYXZlbiBpcyBhbiBBbWVyaWNhbiBwb3N0LWJsYWNrIG1ldGFsIGJhbmQmaGVsbGlwOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgcHJvcGVydHk9Im9nOnVwZGF0ZWRfdGltZSIgY29udGVudD0iMjAyMC0wNy0zMFQyMjozMzoxMy0wNDowMCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgcHJvcGVydHk9Im9nOmltYWdlIiBjb250ZW50PSJodHRwczovL2kudmltZW9jZG4uY29tL2ZpbHRlci9vdmVybGF5P3NyYzA9aHR0cHMlM0ElMkYlMkZpLnZpbWVvY2RuLmNvbSUyRnZpZGVvJTJGNDc5Mzk5OTI3XzEyODB4NzIwLmpwZyZzcmMxPWh0dHBzJTNBJTJGJTJGZi52aW1lb2Nkbi5jb20lMkZpbWFnZXNfdjYlMkZzaGFyZSUyRnBsYXlfaWNvbl9vdmVybGF5LnBuZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgcHJvcGVydHk9Im9nOmltYWdlOnNlY3VyZV91cmwiIGNvbnRlbnQ9Imh0dHBzOi8vaS52aW1lb2Nkbi5jb20vZmlsdGVyL292ZXJsYXk/c3JjMD1odHRwcyUzQSUyRiUyRmkudmltZW9jZG4uY29tJTJGdmlkZW8lMkY0NzkzOTk5MjdfMTI4MHg3MjAuanBnJnNyYzE9aHR0cHMlM0ElMkYlMkZmLnZpbWVvY2RuLmNvbSUyRmltYWdlc192NiUyRnNoYXJlJTJGcGxheV9pY29uX292ZXJsYXkucG5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6aW1hZ2U6dHlwZSIgY29udGVudD0iaW1hZ2UvanBnIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6aW1hZ2U6d2lkdGgiIGNvbnRlbnQ9IjEyODAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIHByb3BlcnR5PSJvZzppbWFnZTpoZWlnaHQiIGNvbnRlbnQ9IjcyMCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgcHJvcGVydHk9ImFsOmlvczphcHBfbmFtZSIgY29udGVudD0iVmltZW8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIHByb3BlcnR5PSJhbDppb3M6YXBwX3N0b3JlX2lkIiBjb250ZW50PSI0MjUxOTQ3NTkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIHByb3BlcnR5PSJhbDppb3M6dXJsIiBjb250ZW50PSJ2aW1lbzovL2FwcC52aW1lby5jb20vdmlkZW9zLzk4NjA1MzgyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWV0YSBwcm9wZXJ0eT0iYWw6YW5kcm9pZDphcHBfbmFtZSIgY29udGVudD0iVmltZW8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIHByb3BlcnR5PSJhbDphbmRyb2lkOnBhY2thZ2UiIGNvbnRlbnQ9ImNvbS52aW1lby5hbmRyb2lkLnZpZGVvYXBwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWV0YSBwcm9wZXJ0eT0iYWw6YW5kcm9pZDp1cmwiIGNvbnRlbnQ9InZpbWVvOi8vYXBwLnZpbWVvLmNvbS92aWRlb3MvOTg2MDUzODIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIHByb3BlcnR5PSJhbDp3ZWI6c2hvdWxkX2ZhbGxiYWNrIiBjb250ZW50PSJ0cnVlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWV0YSBwcm9wZXJ0eT0idmlkZW86dGFnIiBjb250ZW50PSJEZWFmaGVhdmVuIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWV0YSBwcm9wZXJ0eT0idmlkZW86dGFnIiBjb250ZW50PSJEZWF0aHdpc2giPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIHByb3BlcnR5PSJ2aWRlbzp0YWciIGNvbnRlbnQ9IkRlYXRod2lzaGluYyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgcHJvcGVydHk9InZpZGVvOnRhZyIgY29udGVudD0iVG91ciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgcHJvcGVydHk9InZpZGVvOnRhZyIgY29udGVudD0iTGl2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgcHJvcGVydHk9InZpZGVvOnRhZyIgY29udGVudD0iSmFrYXJ0YSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgcHJvcGVydHk9InZpZGVvOnRhZyIgY29udGVudD0iSW5kb25lc2lhIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWV0YSBwcm9wZXJ0eT0idmlkZW86dGFnIiBjb250ZW50PSJwb3N0LWJsYWNrIG1ldGFsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWV0YSBwcm9wZXJ0eT0idmlkZW86dGFnIiBjb250ZW50PSJCYW5kIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWV0YSBwcm9wZXJ0eT0idmlkZW86dGFnIiBjb250ZW50PSJBbWVyaWNhIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWV0YSBwcm9wZXJ0eT0idmlkZW86dGFnIiBjb250ZW50PSIyMDE0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWV0YSBwcm9wZXJ0eT0idmlkZW86dGFnIiBjb250ZW50PSJWaW1lbyBTdGFmZiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgcHJvcGVydHk9InZpZGVvOnRhZyIgY29udGVudD0iVmltZW8iPgogICAgICAgICAgICAKICAgICAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iVGhpcyB2aWRlbyB0YWtlbiBsaXZlIGZyb20gRGVhZmhlYXZlbiBsaXZlIGluIEpha2FydGEgb24gTWF5IDh0aCAyMDE0IGF0IFRoZSBCYXNlbWVudCBDYWZlLCBLZW1hbmcgUmF5YSwgSmFrYXJ0YS4gIERlYWZoZWF2ZW4gaXMgYW4gQW1lcmljYW4gcG9zdC1ibGFjayBtZXRhbCBiYW5kJmhlbGxpcDsiPgogICAgICAgIDxtZXRhIG5hbWU9InR3aXR0ZXI6Y2FyZCIgY29udGVudD0icGxheWVyIj4KICAgICAgICA8bWV0YSBuYW1lPSJ0d2l0dGVyOnNpdGUiIGNvbnRlbnQ9IkB2aW1lbyI+CiAgICAgICAgPG1ldGEgbmFtZT0idHdpdHRlcjp0aXRsZSIgY29udGVudD0iRGVhZmhlYXZlbiAtIFRoZSBQZWNhbiBUcmVlIChMaXZlKSI+CiAgICAgICAgPG1ldGEgbmFtZT0idHdpdHRlcjpkZXNjcmlwdGlvbiIgY29udGVudD0iVGhpcyB2aWRlbyB0YWtlbiBsaXZlIGZyb20gRGVhZmhlYXZlbiBsaXZlIGluIEpha2FydGEgb24gTWF5IDh0aCAyMDE0IGF0IFRoZSBCYXNlbWVudCBDYWZlLCBLZW1hbmcgUmF5YSwgSmFrYXJ0YS4gIERlYWZoZWF2ZW4gaXMgYW4gQW1lcmljYW4gcG9zdC1ibGFjayBtZXRhbCBiYW5kJmhlbGxpcDsiPgogICAgICAgIDxtZXRhIG5hbWU9InR3aXR0ZXI6aW1hZ2UiIGNvbnRlbnQ9Imh0dHBzOi8vaS52aW1lb2Nkbi5jb20vZmlsdGVyL292ZXJsYXk/c3JjMD1odHRwcyUzQSUyRiUyRmkudmltZW9jZG4uY29tJTJGdmlkZW8lMkY0NzkzOTk5MjdfMTI4MHg3MjAuanBnJmFtcDtzcmMxPWh0dHBzJTNBJTJGJTJGZi52aW1lb2Nkbi5jb20lMkZpbWFnZXNfdjYlMkZzaGFyZSUyRnBsYXlfaWNvbl9vdmVybGF5LnBuZyI+CiAgICAgICAgPG1ldGEgbmFtZT0idHdpdHRlcjpwbGF5ZXIiIGNvbnRlbnQ9Imh0dHBzOi8vcGxheWVyLnZpbWVvLmNvbS92aWRlby85ODYwNTM4MiI+CiAgICAgICAgPG1ldGEgbmFtZT0idHdpdHRlcjpwbGF5ZXI6d2lkdGgiIGNvbnRlbnQ9IjEyODAiPgogICAgICAgIDxtZXRhIG5hbWU9InR3aXR0ZXI6cGxheWVyOmhlaWdodCIgY29udGVudD0iNzIwIj4KICAgICAgICA8bWV0YSBuYW1lPSJ0d2l0dGVyOnNpdGUiIGNvbnRlbnQ9IkB2aW1lbyI+CiAgICAgICAgPG1ldGEgbmFtZT0idHdpdHRlcjphcHA6bmFtZTppcGhvbmUiIGNvbnRlbnQ9IlZpbWVvIj4KICAgICAgICA8bWV0YSBuYW1lPSJ0d2l0dGVyOmFwcDppZDppcGhvbmUiIGNvbnRlbnQ9IjQyNTE5NDc1OSI+CiAgICAgICAgPG1ldGEgbmFtZT0idHdpdHRlcjphcHA6dXJsOmlwaG9uZSIgY29udGVudD0idmltZW86Ly9hcHAudmltZW8uY29tL3ZpZGVvcy85ODYwNTM4MiI+CiAgICAgICAgPG1ldGEgbmFtZT0idHdpdHRlcjphcHA6bmFtZTppcGFkIiBjb250ZW50PSJWaW1lbyI+CiAgICAgICAgPG1ldGEgbmFtZT0idHdpdHRlcjphcHA6aWQ6aXBhZCIgY29udGVudD0iNDI1MTk0NzU5Ij4KICAgICAgICA8bWV0YSBuYW1lPSJ0d2l0dGVyOmFwcDp1cmw6aXBhZCIgY29udGVudD0idmltZW86Ly9hcHAudmltZW8uY29tL3ZpZGVvcy85ODYwNTM4MiI+CiAgICAgICAgPG1ldGEgbmFtZT0idHdpdHRlcjphcHA6bmFtZTpnb29nbGVwbGF5IiBjb250ZW50PSJWaW1lbyI+CiAgICAgICAgPG1ldGEgbmFtZT0idHdpdHRlcjphcHA6aWQ6Z29vZ2xlcGxheSIgY29udGVudD0iY29tLnZpbWVvLmFuZHJvaWQudmlkZW9hcHAiPgogICAgICAgIDxtZXRhIG5hbWU9InR3aXR0ZXI6YXBwOnVybDpnb29nbGVwbGF5IiBjb250ZW50PSJ2aW1lbzovL2FwcC52aW1lby5jb20vdmlkZW9zLzk4NjA1MzgyIj4KICAgICAgICA8bWV0YSBuYW1lPSJ0d2l0dGVyOmNyZWF0b3IiIGNvbnRlbnQ9Im1lZ2FsYXVtYW4iPgogICAgICAgIDxtZXRhIG5hbWU9InR3aXR0ZXI6Y3JlYXRvcjppZCIgY29udGVudD0iMTEzNTgzMzQ2Ij4KCgoKCiAgICAgICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJhbHRlcm5hdGUiIGhyZWY9Imh0dHBzOi8vdmltZW8uY29tL2FwaS9vZW1iZWQuanNvbj91cmw9aHR0cHMlM0ElMkYlMkZ2aW1lby5jb20lMkY5ODYwNTM4MiIgdHlwZT0iYXBwbGljYXRpb24vanNvbitvZW1iZWQiIHRpdGxlPSJEZWFmaGVhdmVuIC0gVGhlIFBlY2FuIFRyZWUgKExpdmUpIj4KICAgICAgICAgICAgICAgIDxsaW5rIHJlbD0iYWx0ZXJuYXRlIiBocmVmPSJodHRwczovL3ZpbWVvLmNvbS9hcGkvb2VtYmVkLnhtbD91cmw9aHR0cHMlM0ElMkYlMkZ2aW1lby5jb20lMkY5ODYwNTM4MiIgdHlwZT0idGV4dC94bWwrb2VtYmVkIiB0aXRsZT0iRGVhZmhlYXZlbiAtIFRoZSBQZWNhbiBUcmVlIChMaXZlKSI+CiAgICAgICAgICAgICAgICA8bGluayByZWw9InBpbmdiYWNrIiBocmVmPSJodHRwczovL3ZpbWVvLmNvbS9fcGluZ2JhY2siPgogICAgICAgICAgICAgICAgPGxpbmsgYWJvdXQ9Imh0dHBzOi8vaS52aW1lb2Nkbi5jb20vZmlsdGVyL292ZXJsYXk/c3JjMD1odHRwcyUzQSUyRiUyRmkudmltZW9jZG4uY29tJTJGdmlkZW8lMkY0NzkzOTk5MjdfMTI4MHg3MjAuanBnJmFtcDtzcmMxPWh0dHBzJTNBJTJGJTJGZi52aW1lb2Nkbi5jb20lMkZpbWFnZXNfdjYlMkZzaGFyZSUyRnBsYXlfaWNvbl9vdmVybGF5LnBuZyIgcmVsPSJsaWNlbnNlIiBocmVmPSJodHRwczovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnkvMy4wLyI+CiAgICAgICAgICAgICAgICA8bGluayByZWw9ImNhbm9uaWNhbCIgaHJlZj0iaHR0cHM6Ly92aW1lby5jb20vOTg2MDUzODIiPgogICAgICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbi1wcmVjb21wb3NlZCIgaHJlZj0iaHR0cHM6Ly9pLnZpbWVvY2RuLmNvbS9mYXZpY29uL21haW4tdG91Y2hfMTgwIj4KCjxsaW5rIHJlbD0ibWFzay1pY29uIiBocmVmPSJodHRwczovL2YudmltZW9jZG4uY29tL3N2Zy9sZWdhY3lfdmlld19zdXBwb3J0L2lyaXNfaWNvbl92XzY0LnN2Zz9lMTAxM2RlYjZlODQ0NzBjNzVkMDc1Zjg2ZGIzY2Q0ZDk0ZDIxODE2IiBjb2xvcj0iIzE3MjcyZSI+CgogICAgPGxpbmsgcmVsPSJzaG9ydGN1dCBpY29uIiBocmVmPSJodHRwczovL2YudmltZW9jZG4uY29tL2ltYWdlc192Ni9mYXZpY29uLmljbz9lMTAxM2RlYjZlODQ0NzBjNzVkMDc1Zjg2ZGIzY2Q0ZDk0ZDIxODE2IiBkYXRhLXBsYXk9Imh0dHBzOi8vaS52aW1lb2Nkbi5jb20vZmF2aWNvbi9wbGF5XzMyIiBkYXRhLXBhdXNlPSJodHRwczovL2kudmltZW9jZG4uY29tL2Zhdmljb24vcGF1c2VfMzIiPgoKPG1ldGEgbmFtZT0ibXNhcHBsaWNhdGlvbi1UaWxlSW1hZ2UiIGNvbnRlbnQ9Imh0dHBzOi8vaS52aW1lb2Nkbi5jb20vZmF2aWNvbi9tYWluLXRvdWNoXzE0NCI+CjxtZXRhIG5hbWU9Im1zYXBwbGljYXRpb24tVGlsZUNvbG9yIiBjb250ZW50PSIjMDBhZGVmIj4KICAgICAgICA8dGl0bGU+RGVhZmhlYXZlbiAtIFRoZSBQZWNhbiBUcmVlIChMaXZlKSBvbiBWaW1lbzwvdGl0bGU+CiAgICAgICAgPHNjcmlwdD4KICAgICAgICAgICAgLy8gRmlyc3QgSW5wdXQgRGVsYXkgdHJhY2tpbmcuIEhpZ2ggcHJpb3JpdHkgbG9hZGluZyB0byBub3QgbWlzcyBldmVudAogICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vR29vZ2xlQ2hyb21lTGFicy9maXJzdC1pbnB1dC1kZWxheS9ibG9iL21hc3Rlci9kaXN0L2ZpcnN0LWlucHV0LWRlbGF5Lm1pbi5qcwogICAgICAgICAgICAhZnVuY3Rpb24obixlKXt2YXIgdCxvLGksYz1bXSxmPXtwYXNzaXZlOiEwLGNhcHR1cmU6ITB9LHI9bmV3IERhdGUsYT0icG9pbnRlcnVwIix1PSJwb2ludGVyY2FuY2VsIjtmdW5jdGlvbiBwKG4sYyl7dHx8KHQ9YyxvPW4saT1uZXcgRGF0ZSx3KGUpLHMoKSl9ZnVuY3Rpb24gcygpe28+PTAmJm88aS1yJiYoYy5mb3JFYWNoKGZ1bmN0aW9uKG4pe24obyx0KX0pLGM9W10pfWZ1bmN0aW9uIGwodCl7aWYodC5jYW5jZWxhYmxlKXt2YXIgbz0odC50aW1lU3RhbXA+MWUxMj9uZXcgRGF0ZTpwZXJmb3JtYW5jZS5ub3coKSktdC50aW1lU3RhbXA7InBvaW50ZXJkb3duIj09dC50eXBlP2Z1bmN0aW9uKHQsbyl7ZnVuY3Rpb24gaSgpe3AodCxvKSxyKCl9ZnVuY3Rpb24gYygpe3IoKX1mdW5jdGlvbiByKCl7ZShhLGksZiksZSh1LGMsZil9bihhLGksZiksbih1LGMsZil9KG8sdCk6cChvLHQpfX1mdW5jdGlvbiB3KG4pe1siY2xpY2siLCJtb3VzZWRvd24iLCJrZXlkb3duIiwidG91Y2hzdGFydCIsInBvaW50ZXJkb3duIl0uZm9yRWFjaChmdW5jdGlvbihlKXtuKGUsbCxmKX0pfXcobiksc2VsZi5wZXJmTWV0cmljcz1zZWxmLnBlcmZNZXRyaWNzfHx7fSxzZWxmLnBlcmZNZXRyaWNzLm9uRmlyc3RJbnB1dERlbGF5PWZ1bmN0aW9uKG4pe2MucHVzaChuKSxzKCl9fShhZGRFdmVudExpc3RlbmVyLHJlbW92ZUV2ZW50TGlzdGVuZXIpOwogICAgICAgIDwvc2NyaXB0PgogICAgICAgIDxzY3JpcHQ+CiAgICAgICAgICAvLyBDcmVhdGUgUGVyZm9ybWFuY2VPYnNlcnZlciBmb3IgdHJhY2tpbmcgVFRJCiAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vR29vZ2xlQ2hyb21lTGFicy90dGktcG9seWZpbGwKICAgICAgICAgICFmdW5jdGlvbigpe2lmKCdQZXJmb3JtYW5jZUxvbmdUYXNrVGltaW5nJyBpbiB3aW5kb3cpe3ZhciBnPXdpbmRvdy5fX3R0aT17ZTpbXX07CiAgICAgICAgICBnLm89bmV3IFBlcmZvcm1hbmNlT2JzZXJ2ZXIoZnVuY3Rpb24obCl7Zy5lPWcuZS5jb25jYXQobC5nZXRFbnRyaWVzKCkpfSk7CiAgICAgICAgICBnLm8ub2JzZXJ2ZSh7ZW50cnlUeXBlczpbJ2xvbmd0YXNrJ119KX19KCk7CiAgICAgICAgPC9zY3JpcHQ+CiAgICAgICAgPHNjcmlwdD4KICAgICAgICAgIC8vIE5ldyBSZWxpYyBBZ2VudAogICAgICAgICAgO3dpbmRvdy5OUkVVTXx8KE5SRVVNPXt9KTtOUkVVTS5pbml0PXtkaXN0cmlidXRlZF90cmFjaW5nOntlbmFibGVkOnRydWV9LHByaXZhY3k6e2Nvb2tpZXNfZW5hYmxlZDp0cnVlfX07CiAgICAgICAgICB3aW5kb3cuTlJFVU18fChOUkVVTT17fSksX19ucl9yZXF1aXJlPWZ1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKG4pe2lmKCFlW25dKXt2YXIgbz1lW25dPXtleHBvcnRzOnt9fTt0W25dWzBdLmNhbGwoby5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBvPXRbbl1bMV1bZV07cmV0dXJuIHIob3x8ZSl9LG8sby5leHBvcnRzKX1yZXR1cm4gZVtuXS5leHBvcnRzfWlmKCJmdW5jdGlvbiI9PXR5cGVvZiBfX25yX3JlcXVpcmUpcmV0dXJuIF9fbnJfcmVxdWlyZTtmb3IodmFyIG89MDtvPG4ubGVuZ3RoO28rKylyKG5bb10pO3JldHVybiByfSh7MTpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCl7dHJ5e3MuY29uc29sZSYmY29uc29sZS5sb2codCl9Y2F0Y2goZSl7fX12YXIgbyxpPXQoImVlIiksYT10KDI1KSxzPXt9O3RyeXtvPWxvY2FsU3RvcmFnZS5nZXRJdGVtKCJfX25yX2ZsYWdzIikuc3BsaXQoIiwiKSxjb25zb2xlJiYiZnVuY3Rpb24iPT10eXBlb2YgY29uc29sZS5sb2cmJihzLmNvbnNvbGU9ITAsby5pbmRleE9mKCJkZXYiKSE9PS0xJiYocy5kZXY9ITApLG8uaW5kZXhPZigibnJfZGV2IikhPT0tMSYmKHMubnJEZXY9ITApKX1jYXRjaChjKXt9cy5uckRldiYmaS5vbigiaW50ZXJuYWwtZXJyb3IiLGZ1bmN0aW9uKHQpe3IodC5zdGFjayl9KSxzLmRldiYmaS5vbigiZm4tZXJyIixmdW5jdGlvbih0LGUsbil7cihuLnN0YWNrKX0pLHMuZGV2JiYocigiTlIgQUdFTlQgSU4gREVWRUxPUE1FTlQgTU9ERSIpLHIoImZsYWdzOiAiK2EocyxmdW5jdGlvbih0LGUpe3JldHVybiB0fSkuam9pbigiLCAiKSkpfSx7fV0sMjpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCxlLG4scixzKXt0cnl7bD9sLT0xOm8oc3x8bmV3IFVuY2F1Z2h0RXhjZXB0aW9uKHQsZSxuKSwhMCl9Y2F0Y2goZil7dHJ5e2koImllcnIiLFtmLGMubm93KCksITBdKX1jYXRjaChkKXt9fXJldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB1JiZ1LmFwcGx5KHRoaXMsYShhcmd1bWVudHMpKX1mdW5jdGlvbiBVbmNhdWdodEV4Y2VwdGlvbih0LGUsbil7dGhpcy5tZXNzYWdlPXR8fCJVbmNhdWdodCBlcnJvciB3aXRoIG5vIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24iLHRoaXMuc291cmNlVVJMPWUsdGhpcy5saW5lPW59ZnVuY3Rpb24gbyh0LGUpe3ZhciBuPWU/bnVsbDpjLm5vdygpO2koImVyciIsW3Qsbl0pfXZhciBpPXQoImhhbmRsZSIpLGE9dCgyNikscz10KCJlZSIpLGM9dCgibG9hZGVyIiksZj10KCJnb3MiKSx1PXdpbmRvdy5vbmVycm9yLGQ9ITEscD0ibnJAc2VlbkVycm9yIixsPTA7Yy5mZWF0dXJlcy5lcnI9ITAsdCgxKSx3aW5kb3cub25lcnJvcj1yO3RyeXt0aHJvdyBuZXcgRXJyb3J9Y2F0Y2goaCl7InN0YWNrImluIGgmJih0KDEzKSx0KDEyKSwiYWRkRXZlbnRMaXN0ZW5lciJpbiB3aW5kb3cmJnQoNiksYy54aHJXcmFwcGFibGUmJnQoMTQpLGQ9ITApfXMub24oImZuLXN0YXJ0IixmdW5jdGlvbih0LGUsbil7ZCYmKGwrPTEpfSkscy5vbigiZm4tZXJyIixmdW5jdGlvbih0LGUsbil7ZCYmIW5bcF0mJihmKG4scCxmdW5jdGlvbigpe3JldHVybiEwfSksdGhpcy50aHJvd249ITAsbyhuKSl9KSxzLm9uKCJmbi1lbmQiLGZ1bmN0aW9uKCl7ZCYmIXRoaXMudGhyb3duJiZsPjAmJihsLT0xKX0pLHMub24oImludGVybmFsLWVycm9yIixmdW5jdGlvbih0KXtpKCJpZXJyIixbdCxjLm5vdygpLCEwXSl9KX0se31dLDM6W2Z1bmN0aW9uKHQsZSxuKXt0KCJsb2FkZXIiKS5mZWF0dXJlcy5pbnM9ITB9LHt9XSw0OltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcigpe0wrKyxDPWcuaGFzaCx0aGlzW3VdPXkubm93KCl9ZnVuY3Rpb24gbygpe0wtLSxnLmhhc2ghPT1DJiZpKDAsITApO3ZhciB0PXkubm93KCk7dGhpc1toXT1+fnRoaXNbaF0rdC10aGlzW3VdLHRoaXNbZF09dH1mdW5jdGlvbiBpKHQsZSl7RS5lbWl0KCJuZXdVUkwiLFsiIitnLGVdKX1mdW5jdGlvbiBhKHQsZSl7dC5vbihlLGZ1bmN0aW9uKCl7dGhpc1tlXT15Lm5vdygpfSl9dmFyIHM9Ii1zdGFydCIsYz0iLWVuZCIsZj0iLWJvZHkiLHU9ImZuIitzLGQ9ImZuIitjLHA9ImNiIitzLGw9ImNiIitjLGg9ImpzVGltZSIsbT0iZmV0Y2giLHY9ImFkZEV2ZW50TGlzdGVuZXIiLHc9d2luZG93LGc9dy5sb2NhdGlvbix5PXQoImxvYWRlciIpO2lmKHdbdl0mJnkueGhyV3JhcHBhYmxlKXt2YXIgeD10KDEwKSxiPXQoMTEpLEU9dCg4KSxPPXQoNiksUj10KDEzKSxQPXQoNyksVD10KDE0KSxOPXQoOSksTT10KCJlZSIpLFM9TS5nZXQoInRyYWNlciIpO3QoMTYpLHkuZmVhdHVyZXMuc3BhPSEwO3ZhciBDLEw9MDtNLm9uKHUsciksTS5vbihwLHIpLE0ub24oZCxvKSxNLm9uKGwsbyksTS5idWZmZXIoW3UsZCwieGhyLWRvbmUiLCJ4aHItcmVzb2x2ZWQiXSksTy5idWZmZXIoW3VdKSxSLmJ1ZmZlcihbInNldFRpbWVvdXQiK2MsImNsZWFyVGltZW91dCIrcyx1XSksVC5idWZmZXIoW3UsIm5ldy14aHIiLCJzZW5kLXhociIrc10pLFAuYnVmZmVyKFttK3MsbSsiLWRvbmUiLG0rZitzLG0rZitjXSksRS5idWZmZXIoWyJuZXdVUkwiXSkseC5idWZmZXIoW3VdKSxiLmJ1ZmZlcihbInByb3BhZ2F0ZSIscCxsLCJleGVjdXRvci1lcnIiLCJyZXNvbHZlIitzXSksUy5idWZmZXIoW3UsIm5vLSIrdV0pLE4uYnVmZmVyKFsibmV3LWpzb25wIiwiY2Itc3RhcnQiLCJqc29ucC1lcnJvciIsImpzb25wLWVuZCJdKSxhKFQsInNlbmQteGhyIitzKSxhKE0sInhoci1yZXNvbHZlZCIpLGEoTSwieGhyLWRvbmUiKSxhKFAsbStzKSxhKFAsbSsiLWRvbmUiKSxhKE4sIm5ldy1qc29ucCIpLGEoTiwianNvbnAtZW5kIiksYShOLCJjYi1zdGFydCIpLEUub24oInB1c2hTdGF0ZS1lbmQiLGkpLEUub24oInJlcGxhY2VTdGF0ZS1lbmQiLGkpLHdbdl0oImhhc2hjaGFuZ2UiLGksITApLHdbdl0oImxvYWQiLGksITApLHdbdl0oInBvcHN0YXRlIixmdW5jdGlvbigpe2koMCxMPjEpfSwhMCl9fSx7fV0sNTpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCl7fWlmKHdpbmRvdy5wZXJmb3JtYW5jZSYmd2luZG93LnBlcmZvcm1hbmNlLnRpbWluZyYmd2luZG93LnBlcmZvcm1hbmNlLmdldEVudHJpZXNCeVR5cGUpe3ZhciBvPXQoImVlIiksaT10KCJoYW5kbGUiKSxhPXQoMTMpLHM9dCgxMiksYz0ibGVhclJlc291cmNlVGltaW5ncyIsZj0iYWRkRXZlbnRMaXN0ZW5lciIsdT0icmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsIixkPSJic3RSZXNvdXJjZSIscD0icmVzb3VyY2UiLGw9Ii1zdGFydCIsaD0iLWVuZCIsbT0iZm4iK2wsdj0iZm4iK2gsdz0iYnN0VGltZXIiLGc9InB1c2hTdGF0ZSIseT10KCJsb2FkZXIiKTt5LmZlYXR1cmVzLnN0bj0hMCx0KDgpLCJhZGRFdmVudExpc3RlbmVyImluIHdpbmRvdyYmdCg2KTt2YXIgeD1OUkVVTS5vLkVWO28ub24obSxmdW5jdGlvbih0LGUpe3ZhciBuPXRbMF07biBpbnN0YW5jZW9mIHgmJih0aGlzLmJzdFN0YXJ0PXkubm93KCkpfSksby5vbih2LGZ1bmN0aW9uKHQsZSl7dmFyIG49dFswXTtuIGluc3RhbmNlb2YgeCYmaSgiYnN0IixbbixlLHRoaXMuYnN0U3RhcnQseS5ub3coKV0pfSksYS5vbihtLGZ1bmN0aW9uKHQsZSxuKXt0aGlzLmJzdFN0YXJ0PXkubm93KCksdGhpcy5ic3RUeXBlPW59KSxhLm9uKHYsZnVuY3Rpb24odCxlKXtpKHcsW2UsdGhpcy5ic3RTdGFydCx5Lm5vdygpLHRoaXMuYnN0VHlwZV0pfSkscy5vbihtLGZ1bmN0aW9uKCl7dGhpcy5ic3RTdGFydD15Lm5vdygpfSkscy5vbih2LGZ1bmN0aW9uKHQsZSl7aSh3LFtlLHRoaXMuYnN0U3RhcnQseS5ub3coKSwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIl0pfSksby5vbihnK2wsZnVuY3Rpb24odCl7dGhpcy50aW1lPXkubm93KCksdGhpcy5zdGFydFBhdGg9bG9jYXRpb24ucGF0aG5hbWUrbG9jYXRpb24uaGFzaH0pLG8ub24oZytoLGZ1bmN0aW9uKHQpe2koImJzdEhpc3QiLFtsb2NhdGlvbi5wYXRobmFtZStsb2NhdGlvbi5oYXNoLHRoaXMuc3RhcnRQYXRoLHRoaXMudGltZV0pfSksZiBpbiB3aW5kb3cucGVyZm9ybWFuY2UmJih3aW5kb3cucGVyZm9ybWFuY2VbImMiK2NdP3dpbmRvdy5wZXJmb3JtYW5jZVtmXSh1LGZ1bmN0aW9uKHQpe2koZCxbd2luZG93LnBlcmZvcm1hbmNlLmdldEVudHJpZXNCeVR5cGUocCldKSx3aW5kb3cucGVyZm9ybWFuY2VbImMiK2NdKCl9LCExKTp3aW5kb3cucGVyZm9ybWFuY2VbZl0oIndlYmtpdCIrdSxmdW5jdGlvbih0KXtpKGQsW3dpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKHApXSksd2luZG93LnBlcmZvcm1hbmNlWyJ3ZWJraXRDIitjXSgpfSwhMSkpLGRvY3VtZW50W2ZdKCJzY3JvbGwiLHIse3Bhc3NpdmU6ITB9KSxkb2N1bWVudFtmXSgia2V5cHJlc3MiLHIsITEpLGRvY3VtZW50W2ZdKCJjbGljayIsciwhMSl9fSx7fV0sNjpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCl7Zm9yKHZhciBlPXQ7ZSYmIWUuaGFzT3duUHJvcGVydHkodSk7KWU9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO2UmJm8oZSl9ZnVuY3Rpb24gbyh0KXtzLmluUGxhY2UodCxbdSxkXSwiLSIsaSl9ZnVuY3Rpb24gaSh0LGUpe3JldHVybiB0WzFdfXZhciBhPXQoImVlIikuZ2V0KCJldmVudHMiKSxzPXQoIndyYXAtZnVuY3Rpb24iKShhLCEwKSxjPXQoImdvcyIpLGY9WE1MSHR0cFJlcXVlc3QsdT0iYWRkRXZlbnRMaXN0ZW5lciIsZD0icmVtb3ZlRXZlbnRMaXN0ZW5lciI7ZS5leHBvcnRzPWEsImdldFByb3RvdHlwZU9mImluIE9iamVjdD8ocihkb2N1bWVudCkscih3aW5kb3cpLHIoZi5wcm90b3R5cGUpKTpmLnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSh1KSYmKG8od2luZG93KSxvKGYucHJvdG90eXBlKSksYS5vbih1KyItc3RhcnQiLGZ1bmN0aW9uKHQsZSl7dmFyIG49dFsxXSxyPWMobiwibnJAd3JhcHBlZCIsZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIG4uaGFuZGxlRXZlbnQpcmV0dXJuIG4uaGFuZGxlRXZlbnQuYXBwbHkobixhcmd1bWVudHMpfXZhciBlPXtvYmplY3Q6dCwiZnVuY3Rpb24iOm59W3R5cGVvZiBuXTtyZXR1cm4gZT9zKGUsImZuLSIsbnVsbCxlLm5hbWV8fCJhbm9ueW1vdXMiKTpufSk7dGhpcy53cmFwcGVkPXRbMV09cn0pLGEub24oZCsiLXN0YXJ0IixmdW5jdGlvbih0KXt0WzFdPXRoaXMud3JhcHBlZHx8dFsxXX0pfSx7fV0sNzpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCxlLG4pe3ZhciByPXRbZV07ImZ1bmN0aW9uIj09dHlwZW9mIHImJih0W2VdPWZ1bmN0aW9uKCl7dmFyIHQ9aShhcmd1bWVudHMpLGU9e307by5lbWl0KG4rImJlZm9yZS1zdGFydCIsW3RdLGUpO3ZhciBhO2VbbV0mJmVbbV0uZHQmJihhPWVbbV0uZHQpO3ZhciBzPXIuYXBwbHkodGhpcyx0KTtyZXR1cm4gby5lbWl0KG4rInN0YXJ0IixbdCxhXSxzKSxzLnRoZW4oZnVuY3Rpb24odCl7cmV0dXJuIG8uZW1pdChuKyJlbmQiLFtudWxsLHRdLHMpLHR9LGZ1bmN0aW9uKHQpe3Rocm93IG8uZW1pdChuKyJlbmQiLFt0XSxzKSx0fSl9KX12YXIgbz10KCJlZSIpLmdldCgiZmV0Y2giKSxpPXQoMjYpLGE9dCgyNSk7ZS5leHBvcnRzPW87dmFyIHM9d2luZG93LGM9ImZldGNoLSIsZj1jKyJib2R5LSIsdT1bImFycmF5QnVmZmVyIiwiYmxvYiIsImpzb24iLCJ0ZXh0IiwiZm9ybURhdGEiXSxkPXMuUmVxdWVzdCxwPXMuUmVzcG9uc2UsbD1zLmZldGNoLGg9InByb3RvdHlwZSIsbT0ibnJAY29udGV4dCI7ZCYmcCYmbCYmKGEodSxmdW5jdGlvbih0LGUpe3IoZFtoXSxlLGYpLHIocFtoXSxlLGYpfSkscihzLCJmZXRjaCIsYyksby5vbihjKyJlbmQiLGZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztpZihlKXt2YXIgcj1lLmhlYWRlcnMuZ2V0KCJjb250ZW50LWxlbmd0aCIpO251bGwhPT1yJiYobi5yeFNpemU9ciksby5lbWl0KGMrImRvbmUiLFtudWxsLGVdLG4pfWVsc2Ugby5lbWl0KGMrImRvbmUiLFt0XSxuKX0pKX0se31dLDg6W2Z1bmN0aW9uKHQsZSxuKXt2YXIgcj10KCJlZSIpLmdldCgiaGlzdG9yeSIpLG89dCgid3JhcC1mdW5jdGlvbiIpKHIpO2UuZXhwb3J0cz1yO3ZhciBpPXdpbmRvdy5oaXN0b3J5JiZ3aW5kb3cuaGlzdG9yeS5jb25zdHJ1Y3RvciYmd2luZG93Lmhpc3RvcnkuY29uc3RydWN0b3IucHJvdG90eXBlLGE9d2luZG93Lmhpc3Rvcnk7aSYmaS5wdXNoU3RhdGUmJmkucmVwbGFjZVN0YXRlJiYoYT1pKSxvLmluUGxhY2UoYSxbInB1c2hTdGF0ZSIsInJlcGxhY2VTdGF0ZSJdLCItIil9LHt9XSw5OltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0KXtmdW5jdGlvbiBlKCl7Yy5lbWl0KCJqc29ucC1lbmQiLFtdLHApLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsZSwhMSksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsbiwhMSl9ZnVuY3Rpb24gbigpe2MuZW1pdCgianNvbnAtZXJyb3IiLFtdLHApLGMuZW1pdCgianNvbnAtZW5kIixbXSxwKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLGUsITEpLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZXJyb3IiLG4sITEpfXZhciByPXQmJiJzdHJpbmciPT10eXBlb2YgdC5ub2RlTmFtZSYmInNjcmlwdCI9PT10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7aWYocil7dmFyIG89ImZ1bmN0aW9uIj09dHlwZW9mIHQuYWRkRXZlbnRMaXN0ZW5lcjtpZihvKXt2YXIgYT1pKHQuc3JjKTtpZihhKXt2YXIgdT1zKGEpLGQ9ImZ1bmN0aW9uIj09dHlwZW9mIHUucGFyZW50W3Uua2V5XTtpZihkKXt2YXIgcD17fTtmLmluUGxhY2UodS5wYXJlbnQsW3Uua2V5XSwiY2ItIixwKSx0LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGUsITEpLHQuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLG4sITEpLGMuZW1pdCgibmV3LWpzb25wIixbdC5zcmNdLHApfX19fX1mdW5jdGlvbiBvKCl7cmV0dXJuImFkZEV2ZW50TGlzdGVuZXIiaW4gd2luZG93fWZ1bmN0aW9uIGkodCl7dmFyIGU9dC5tYXRjaCh1KTtyZXR1cm4gZT9lWzFdOm51bGx9ZnVuY3Rpb24gYSh0LGUpe3ZhciBuPXQubWF0Y2gocCkscj1uWzFdLG89blszXTtyZXR1cm4gbz9hKG8sZVtyXSk6ZVtyXX1mdW5jdGlvbiBzKHQpe3ZhciBlPXQubWF0Y2goZCk7cmV0dXJuIGUmJmUubGVuZ3RoPj0zP3trZXk6ZVsyXSxwYXJlbnQ6YShlWzFdLHdpbmRvdyl9OntrZXk6dCxwYXJlbnQ6d2luZG93fX12YXIgYz10KCJlZSIpLmdldCgianNvbnAiKSxmPXQoIndyYXAtZnVuY3Rpb24iKShjKTtpZihlLmV4cG9ydHM9YyxvKCkpe3ZhciB1PS9bPyZdKD86Y2FsbGJhY2t8Y2IpPShbXiYjXSspLyxkPS8oLiopXC4oW14uXSspLyxwPS9eKFx3KykoXC58JCkoLiopJC8sbD1bImFwcGVuZENoaWxkIiwiaW5zZXJ0QmVmb3JlIiwicmVwbGFjZUNoaWxkIl07Tm9kZSYmTm9kZS5wcm90b3R5cGUmJk5vZGUucHJvdG90eXBlLmFwcGVuZENoaWxkP2YuaW5QbGFjZShOb2RlLnByb3RvdHlwZSxsLCJkb20tIik6KGYuaW5QbGFjZShIVE1MRWxlbWVudC5wcm90b3R5cGUsbCwiZG9tLSIpLGYuaW5QbGFjZShIVE1MSGVhZEVsZW1lbnQucHJvdG90eXBlLGwsImRvbS0iKSxmLmluUGxhY2UoSFRNTEJvZHlFbGVtZW50LnByb3RvdHlwZSxsLCJkb20tIikpLGMub24oImRvbS1zdGFydCIsZnVuY3Rpb24odCl7cih0WzBdKX0pfX0se31dLDEwOltmdW5jdGlvbih0LGUsbil7dmFyIHI9dCgiZWUiKS5nZXQoIm11dGF0aW9uIiksbz10KCJ3cmFwLWZ1bmN0aW9uIikociksaT1OUkVVTS5vLk1PO2UuZXhwb3J0cz1yLGkmJih3aW5kb3cuTXV0YXRpb25PYnNlcnZlcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGk/bmV3IGkobyh0LCJmbi0iKSk6aS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LE11dGF0aW9uT2JzZXJ2ZXIucHJvdG90eXBlPWkucHJvdG90eXBlKX0se31dLDExOltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0KXt2YXIgZT1hLmNvbnRleHQoKSxuPXModCwiZXhlY3V0b3ItIixlKSxyPW5ldyBmKG4pO3JldHVybiBhLmNvbnRleHQocikuZ2V0Q3R4PWZ1bmN0aW9uKCl7cmV0dXJuIGV9LGEuZW1pdCgibmV3LXByb21pc2UiLFtyLGVdLGUpLHJ9ZnVuY3Rpb24gbyh0LGUpe3JldHVybiBlfXZhciBpPXQoIndyYXAtZnVuY3Rpb24iKSxhPXQoImVlIikuZ2V0KCJwcm9taXNlIikscz1pKGEpLGM9dCgyNSksZj1OUkVVTS5vLlBSO2UuZXhwb3J0cz1hLGYmJih3aW5kb3cuUHJvbWlzZT1yLFsiYWxsIiwicmFjZSJdLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGU9Zlt0XTtmW3RdPWZ1bmN0aW9uKG4pe2Z1bmN0aW9uIHIodCl7cmV0dXJuIGZ1bmN0aW9uKCl7YS5lbWl0KCJwcm9wYWdhdGUiLFtudWxsLCFvXSxpKSxvPW98fCF0fX12YXIgbz0hMTtjKG4sZnVuY3Rpb24oZSxuKXtQcm9taXNlLnJlc29sdmUobikudGhlbihyKCJhbGwiPT09dCkscighMSkpfSk7dmFyIGk9ZS5hcHBseShmLGFyZ3VtZW50cykscz1mLnJlc29sdmUoaSk7cmV0dXJuIHN9fSksWyJyZXNvbHZlIiwicmVqZWN0Il0uZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT1mW3RdO2ZbdF09ZnVuY3Rpb24odCl7dmFyIG49ZS5hcHBseShmLGFyZ3VtZW50cyk7cmV0dXJuIHQhPT1uJiZhLmVtaXQoInByb3BhZ2F0ZSIsW3QsITBdLG4pLG59fSksZi5wcm90b3R5cGVbImNhdGNoIl09ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudGhlbihudWxsLHQpfSxmLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGYucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6cn19KSxjKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGYpLGZ1bmN0aW9uKHQsZSl7dHJ5e3JbZV09ZltlXX1jYXRjaChuKXt9fSksYS5vbigiZXhlY3V0b3Itc3RhcnQiLGZ1bmN0aW9uKHQpe3RbMF09cyh0WzBdLCJyZXNvbHZlLSIsdGhpcyksdFsxXT1zKHRbMV0sInJlc29sdmUtIix0aGlzKX0pLGEub24oImV4ZWN1dG9yLWVyciIsZnVuY3Rpb24odCxlLG4pe3RbMV0obil9KSxzLmluUGxhY2UoZi5wcm90b3R5cGUsWyJ0aGVuIl0sInRoZW4tIixvKSxhLm9uKCJ0aGVuLXN0YXJ0IixmdW5jdGlvbih0LGUpe3RoaXMucHJvbWlzZT1lLHRbMF09cyh0WzBdLCJjYi0iLHRoaXMpLHRbMV09cyh0WzFdLCJjYi0iLHRoaXMpfSksYS5vbigidGhlbi1lbmQiLGZ1bmN0aW9uKHQsZSxuKXt0aGlzLm5leHRQcm9taXNlPW47dmFyIHI9dGhpcy5wcm9taXNlO2EuZW1pdCgicHJvcGFnYXRlIixbciwhMF0sbil9KSxhLm9uKCJjYi1lbmQiLGZ1bmN0aW9uKHQsZSxuKXthLmVtaXQoInByb3BhZ2F0ZSIsW24sITBdLHRoaXMubmV4dFByb21pc2UpfSksYS5vbigicHJvcGFnYXRlIixmdW5jdGlvbih0LGUsbil7dGhpcy5nZXRDdHgmJiFlfHwodGhpcy5nZXRDdHg9ZnVuY3Rpb24oKXtpZih0IGluc3RhbmNlb2YgUHJvbWlzZSl2YXIgZT1hLmNvbnRleHQodCk7cmV0dXJuIGUmJmUuZ2V0Q3R4P2UuZ2V0Q3R4KCk6dGhpc30pfSksci50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiIiK2Z9KX0se31dLDEyOltmdW5jdGlvbih0LGUsbil7dmFyIHI9dCgiZWUiKS5nZXQoInJhZiIpLG89dCgid3JhcC1mdW5jdGlvbiIpKHIpLGk9ImVxdWVzdEFuaW1hdGlvbkZyYW1lIjtlLmV4cG9ydHM9cixvLmluUGxhY2Uod2luZG93LFsiciIraSwibW96UiIraSwid2Via2l0UiIraSwibXNSIitpXSwicmFmLSIpLHIub24oInJhZi1zdGFydCIsZnVuY3Rpb24odCl7dFswXT1vKHRbMF0sImZuLSIpfSl9LHt9XSwxMzpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCxlLG4pe3RbMF09YSh0WzBdLCJmbi0iLG51bGwsbil9ZnVuY3Rpb24gbyh0LGUsbil7dGhpcy5tZXRob2Q9bix0aGlzLnRpbWVyRHVyYXRpb249aXNOYU4odFsxXSk/MDordFsxXSx0WzBdPWEodFswXSwiZm4tIix0aGlzLG4pfXZhciBpPXQoImVlIikuZ2V0KCJ0aW1lciIpLGE9dCgid3JhcC1mdW5jdGlvbiIpKGkpLHM9InNldFRpbWVvdXQiLGM9InNldEludGVydmFsIixmPSJjbGVhclRpbWVvdXQiLHU9Ii1zdGFydCIsZD0iLSI7ZS5leHBvcnRzPWksYS5pblBsYWNlKHdpbmRvdyxbcywic2V0SW1tZWRpYXRlIl0scytkKSxhLmluUGxhY2Uod2luZG93LFtjXSxjK2QpLGEuaW5QbGFjZSh3aW5kb3csW2YsImNsZWFySW1tZWRpYXRlIl0sZitkKSxpLm9uKGMrdSxyKSxpLm9uKHMrdSxvKX0se31dLDE0OltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0LGUpe2QuaW5QbGFjZShlLFsib25yZWFkeXN0YXRlY2hhbmdlIl0sImZuLSIscyl9ZnVuY3Rpb24gbygpe3ZhciB0PXRoaXMsZT11LmNvbnRleHQodCk7dC5yZWFkeVN0YXRlPjMmJiFlLnJlc29sdmVkJiYoZS5yZXNvbHZlZD0hMCx1LmVtaXQoInhoci1yZXNvbHZlZCIsW10sdCkpLGQuaW5QbGFjZSh0LGcsImZuLSIscyl9ZnVuY3Rpb24gaSh0KXt5LnB1c2godCksaCYmKGI/Yi50aGVuKGEpOnY/dihhKTooRT0tRSxPLmRhdGE9RSkpfWZ1bmN0aW9uIGEoKXtmb3IodmFyIHQ9MDt0PHkubGVuZ3RoO3QrKylyKFtdLHlbdF0pO3kubGVuZ3RoJiYoeT1bXSl9ZnVuY3Rpb24gcyh0LGUpe3JldHVybiBlfWZ1bmN0aW9uIGModCxlKXtmb3IodmFyIG4gaW4gdCllW25dPXRbbl07cmV0dXJuIGV9dCg2KTt2YXIgZj10KCJlZSIpLHU9Zi5nZXQoInhociIpLGQ9dCgid3JhcC1mdW5jdGlvbiIpKHUpLHA9TlJFVU0ubyxsPXAuWEhSLGg9cC5NTyxtPXAuUFIsdj1wLlNJLHc9InJlYWR5c3RhdGVjaGFuZ2UiLGc9WyJvbmxvYWQiLCJvbmVycm9yIiwib25hYm9ydCIsIm9ubG9hZHN0YXJ0Iiwib25sb2FkZW5kIiwib25wcm9ncmVzcyIsIm9udGltZW91dCJdLHk9W107ZS5leHBvcnRzPXU7dmFyIHg9d2luZG93LlhNTEh0dHBSZXF1ZXN0PWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBsKHQpO3RyeXt1LmVtaXQoIm5ldy14aHIiLFtlXSxlKSxlLmFkZEV2ZW50TGlzdGVuZXIodyxvLCExKX1jYXRjaChuKXt0cnl7dS5lbWl0KCJpbnRlcm5hbC1lcnJvciIsW25dKX1jYXRjaChyKXt9fXJldHVybiBlfTtpZihjKGwseCkseC5wcm90b3R5cGU9bC5wcm90b3R5cGUsZC5pblBsYWNlKHgucHJvdG90eXBlLFsib3BlbiIsInNlbmQiXSwiLXhoci0iLHMpLHUub24oInNlbmQteGhyLXN0YXJ0IixmdW5jdGlvbih0LGUpe3IodCxlKSxpKGUpfSksdS5vbigib3Blbi14aHItc3RhcnQiLHIpLGgpe3ZhciBiPW0mJm0ucmVzb2x2ZSgpO2lmKCF2JiYhbSl7dmFyIEU9MSxPPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKEUpO25ldyBoKGEpLm9ic2VydmUoTyx7Y2hhcmFjdGVyRGF0YTohMH0pfX1lbHNlIGYub24oImZuLWVuZCIsZnVuY3Rpb24odCl7dFswXSYmdFswXS50eXBlPT09d3x8YSgpfSl9LHt9XSwxNTpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCl7aWYoIWkodCkpcmV0dXJuIG51bGw7dmFyIGU9d2luZG93Lk5SRVVNO2lmKCFlLmxvYWRlcl9jb25maWcpcmV0dXJuIG51bGw7dmFyIG49KGUubG9hZGVyX2NvbmZpZy5hY2NvdW50SUR8fCIiKS50b1N0cmluZygpfHxudWxsLHI9KGUubG9hZGVyX2NvbmZpZy5hZ2VudElEfHwiIikudG9TdHJpbmcoKXx8bnVsbCxzPShlLmxvYWRlcl9jb25maWcudHJ1c3RLZXl8fCIiKS50b1N0cmluZygpfHxudWxsO2lmKCFufHwhcilyZXR1cm4gbnVsbDt2YXIgYz1hLmdlbmVyYXRlQ2F0SWQoKSxmPWEuZ2VuZXJhdGVDYXRJZCgpLHU9RGF0ZS5ub3coKSxkPW8oYyxmLHUsbixyLHMpO3JldHVybntoZWFkZXI6ZCxndWlkOmMsdHJhY2VJZDpmLHRpbWVzdGFtcDp1fX1mdW5jdGlvbiBvKHQsZSxuLHIsbyxpKXt2YXIgYT0iYnRvYSJpbiB3aW5kb3cmJiJmdW5jdGlvbiI9PXR5cGVvZiB3aW5kb3cuYnRvYTtpZighYSlyZXR1cm4gbnVsbDt2YXIgcz17djpbMCwxXSxkOnt0eToiQnJvd3NlciIsYWM6cixhcDpvLGlkOnQsdHI6ZSx0aTpufX07cmV0dXJuIGkmJnIhPT1pJiYocy5kLnRrPWkpLGJ0b2EoSlNPTi5zdHJpbmdpZnkocykpfWZ1bmN0aW9uIGkodCl7dmFyIGU9ITEsbj0hMSxyPXt9O2lmKCJpbml0ImluIE5SRVVNJiYiZGlzdHJpYnV0ZWRfdHJhY2luZyJpbiBOUkVVTS5pbml0JiYocj1OUkVVTS5pbml0LmRpc3RyaWJ1dGVkX3RyYWNpbmcsbj0hIXIuZW5hYmxlZCksbilpZih0LnNhbWVPcmlnaW4pZT0hMDtlbHNlIGlmKHIuYWxsb3dlZF9vcmlnaW5zIGluc3RhbmNlb2YgQXJyYXkpZm9yKHZhciBvPTA7bzxyLmFsbG93ZWRfb3JpZ2lucy5sZW5ndGg7bysrKXt2YXIgaT1zKHIuYWxsb3dlZF9vcmlnaW5zW29dKTtpZih0Lmhvc3RuYW1lPT09aS5ob3N0bmFtZSYmdC5wcm90b2NvbD09PWkucHJvdG9jb2wmJnQucG9ydD09PWkucG9ydCl7ZT0hMDticmVha319cmV0dXJuIG4mJmV9dmFyIGE9dCgyMykscz10KDE3KTtlLmV4cG9ydHM9e2dlbmVyYXRlVHJhY2VQYXlsb2FkOnIsc2hvdWxkR2VuZXJhdGVUcmFjZTppfX0se31dLDE2OltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0KXt2YXIgZT10aGlzLnBhcmFtcyxuPXRoaXMubWV0cmljcztpZighdGhpcy5lbmRlZCl7dGhpcy5lbmRlZD0hMDtmb3IodmFyIHI9MDtyPHA7cisrKXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihkW3JdLHRoaXMubGlzdGVuZXIsITEpO2UuYWJvcnRlZHx8KG4uZHVyYXRpb249YS5ub3coKS10aGlzLnN0YXJ0VGltZSx0aGlzLmxvYWRDYXB0dXJlQ2FsbGVkfHw0IT09dC5yZWFkeVN0YXRlP251bGw9PWUuc3RhdHVzJiYoZS5zdGF0dXM9MCk6aSh0aGlzLHQpLG4uY2JUaW1lPXRoaXMuY2JUaW1lLHUuZW1pdCgieGhyLWRvbmUiLFt0XSx0KSxzKCJ4aHIiLFtlLG4sdGhpcy5zdGFydFRpbWVdKSl9fWZ1bmN0aW9uIG8odCxlKXt2YXIgbj1jKGUpLHI9dC5wYXJhbXM7ci5ob3N0PW4uaG9zdG5hbWUrIjoiK24ucG9ydCxyLnBhdGhuYW1lPW4ucGF0aG5hbWUsdC5wYXJzZWRPcmlnaW49YyhlKSx0LnNhbWVPcmlnaW49dC5wYXJzZWRPcmlnaW4uc2FtZU9yaWdpbn1mdW5jdGlvbiBpKHQsZSl7dC5wYXJhbXMuc3RhdHVzPWUuc3RhdHVzO3ZhciBuPXYoZSx0Lmxhc3RTaXplKTtpZihuJiYodC5tZXRyaWNzLnJ4U2l6ZT1uKSx0LnNhbWVPcmlnaW4pe3ZhciByPWUuZ2V0UmVzcG9uc2VIZWFkZXIoIlgtTmV3UmVsaWMtQXBwLURhdGEiKTtyJiYodC5wYXJhbXMuY2F0PXIuc3BsaXQoIiwgIikucG9wKCkpfXQubG9hZENhcHR1cmVDYWxsZWQ9ITB9dmFyIGE9dCgibG9hZGVyIik7aWYoYS54aHJXcmFwcGFibGUpe3ZhciBzPXQoImhhbmRsZSIpLGM9dCgxNyksZj10KDE1KS5nZW5lcmF0ZVRyYWNlUGF5bG9hZCx1PXQoImVlIiksZD1bImxvYWQiLCJlcnJvciIsImFib3J0IiwidGltZW91dCJdLHA9ZC5sZW5ndGgsbD10KCJpZCIpLGg9dCgyMSksbT10KDIwKSx2PXQoMTgpLHc9d2luZG93LlhNTEh0dHBSZXF1ZXN0O2EuZmVhdHVyZXMueGhyPSEwLHQoMTQpLHQoNyksdS5vbigibmV3LXhociIsZnVuY3Rpb24odCl7dmFyIGU9dGhpcztlLnRvdGFsQ2JzPTAsZS5jYWxsZWQ9MCxlLmNiVGltZT0wLGUuZW5kPXIsZS5lbmRlZD0hMSxlLnhockd1aWRzPXt9LGUubGFzdFNpemU9bnVsbCxlLmxvYWRDYXB0dXJlQ2FsbGVkPSExLHQuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsZnVuY3Rpb24obil7aShlLHQpfSwhMSksaCYmKGg+MzR8fGg8MTApfHx3aW5kb3cub3BlcmF8fHQuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLGZ1bmN0aW9uKHQpe2UubGFzdFNpemU9dC5sb2FkZWR9LCExKX0pLHUub24oIm9wZW4teGhyLXN0YXJ0IixmdW5jdGlvbih0KXt0aGlzLnBhcmFtcz17bWV0aG9kOnRbMF19LG8odGhpcyx0WzFdKSx0aGlzLm1ldHJpY3M9e319KSx1Lm9uKCJvcGVuLXhoci1lbmQiLGZ1bmN0aW9uKHQsZSl7ImxvYWRlcl9jb25maWciaW4gTlJFVU0mJiJ4cGlkImluIE5SRVVNLmxvYWRlcl9jb25maWcmJnRoaXMuc2FtZU9yaWdpbiYmZS5zZXRSZXF1ZXN0SGVhZGVyKCJYLU5ld1JlbGljLUlEIixOUkVVTS5sb2FkZXJfY29uZmlnLnhwaWQpO3ZhciBuPWYodGhpcy5wYXJzZWRPcmlnaW4pO24mJm4uaGVhZGVyJiYoZS5zZXRSZXF1ZXN0SGVhZGVyKCJuZXdyZWxpYyIsbi5oZWFkZXIpLHRoaXMuZHQ9bil9KSx1Lm9uKCJzZW5kLXhoci1zdGFydCIsZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLm1ldHJpY3Mscj10WzBdLG89dGhpcztpZihuJiZyKXt2YXIgaT1tKHIpO2kmJihuLnR4U2l6ZT1pKX10aGlzLnN0YXJ0VGltZT1hLm5vdygpLHRoaXMubGlzdGVuZXI9ZnVuY3Rpb24odCl7dHJ5eyJhYm9ydCIhPT10LnR5cGV8fG8ubG9hZENhcHR1cmVDYWxsZWR8fChvLnBhcmFtcy5hYm9ydGVkPSEwKSwoImxvYWQiIT09dC50eXBlfHxvLmNhbGxlZD09PW8udG90YWxDYnMmJihvLm9ubG9hZENhbGxlZHx8ImZ1bmN0aW9uIiE9dHlwZW9mIGUub25sb2FkKSkmJm8uZW5kKGUpfWNhdGNoKG4pe3RyeXt1LmVtaXQoImludGVybmFsLWVycm9yIixbbl0pfWNhdGNoKHIpe319fTtmb3IodmFyIHM9MDtzPHA7cysrKWUuYWRkRXZlbnRMaXN0ZW5lcihkW3NdLHRoaXMubGlzdGVuZXIsITEpfSksdS5vbigieGhyLWNiLXRpbWUiLGZ1bmN0aW9uKHQsZSxuKXt0aGlzLmNiVGltZSs9dCxlP3RoaXMub25sb2FkQ2FsbGVkPSEwOnRoaXMuY2FsbGVkKz0xLHRoaXMuY2FsbGVkIT09dGhpcy50b3RhbENic3x8IXRoaXMub25sb2FkQ2FsbGVkJiYiZnVuY3Rpb24iPT10eXBlb2Ygbi5vbmxvYWR8fHRoaXMuZW5kKG4pfSksdS5vbigieGhyLWxvYWQtYWRkZWQiLGZ1bmN0aW9uKHQsZSl7dmFyIG49IiIrbCh0KSshIWU7dGhpcy54aHJHdWlkcyYmIXRoaXMueGhyR3VpZHNbbl0mJih0aGlzLnhockd1aWRzW25dPSEwLHRoaXMudG90YWxDYnMrPTEpfSksdS5vbigieGhyLWxvYWQtcmVtb3ZlZCIsZnVuY3Rpb24odCxlKXt2YXIgbj0iIitsKHQpKyEhZTt0aGlzLnhockd1aWRzJiZ0aGlzLnhockd1aWRzW25dJiYoZGVsZXRlIHRoaXMueGhyR3VpZHNbbl0sdGhpcy50b3RhbENicy09MSl9KSx1Lm9uKCJhZGRFdmVudExpc3RlbmVyLWVuZCIsZnVuY3Rpb24odCxlKXtlIGluc3RhbmNlb2YgdyYmImxvYWQiPT09dFswXSYmdS5lbWl0KCJ4aHItbG9hZC1hZGRlZCIsW3RbMV0sdFsyXV0sZSl9KSx1Lm9uKCJyZW1vdmVFdmVudExpc3RlbmVyLWVuZCIsZnVuY3Rpb24odCxlKXtlIGluc3RhbmNlb2YgdyYmImxvYWQiPT09dFswXSYmdS5lbWl0KCJ4aHItbG9hZC1yZW1vdmVkIixbdFsxXSx0WzJdXSxlKX0pLHUub24oImZuLXN0YXJ0IixmdW5jdGlvbih0LGUsbil7ZSBpbnN0YW5jZW9mIHcmJigib25sb2FkIj09PW4mJih0aGlzLm9ubG9hZD0hMCksKCJsb2FkIj09PSh0WzBdJiZ0WzBdLnR5cGUpfHx0aGlzLm9ubG9hZCkmJih0aGlzLnhockNiU3RhcnQ9YS5ub3coKSkpfSksdS5vbigiZm4tZW5kIixmdW5jdGlvbih0LGUpe3RoaXMueGhyQ2JTdGFydCYmdS5lbWl0KCJ4aHItY2ItdGltZSIsW2Eubm93KCktdGhpcy54aHJDYlN0YXJ0LHRoaXMub25sb2FkLGVdLGUpfSksdS5vbigiZmV0Y2gtYmVmb3JlLXN0YXJ0IixmdW5jdGlvbih0KXt2YXIgZSxuPXRbMV18fHt9OyJzdHJpbmciPT10eXBlb2YgdFswXT9lPXRbMF06dFswXSYmdFswXS51cmwmJihlPXRbMF0udXJsKSxlJiYodGhpcy5wYXJzZWRPcmlnaW49YyhlKSx0aGlzLnNhbWVPcmlnaW49dGhpcy5wYXJzZWRPcmlnaW4uc2FtZU9yaWdpbik7dmFyIHI9Zih0aGlzLnBhcnNlZE9yaWdpbik7aWYociYmci5oZWFkZXIpe3ZhciBvPXIuaGVhZGVyO2lmKCJzdHJpbmciPT10eXBlb2YgdFswXSl7dmFyIGk9e307Zm9yKHZhciBhIGluIG4paVthXT1uW2FdO2kuaGVhZGVycz1uZXcgSGVhZGVycyhuLmhlYWRlcnN8fHt9KSxpLmhlYWRlcnMuc2V0KCJuZXdyZWxpYyIsbyksdGhpcy5kdD1yLHQubGVuZ3RoPjE/dFsxXT1pOnQucHVzaChpKX1lbHNlIHRbMF0mJnRbMF0uaGVhZGVycyYmKHRbMF0uaGVhZGVycy5hcHBlbmQoIm5ld3JlbGljIixvKSx0aGlzLmR0PXIpfX0pfX0se31dLDE3OltmdW5jdGlvbih0LGUsbil7dmFyIHI9e307ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKHQgaW4gcilyZXR1cm4gclt0XTt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIiksbj13aW5kb3cubG9jYXRpb24sbz17fTtlLmhyZWY9dCxvLnBvcnQ9ZS5wb3J0O3ZhciBpPWUuaHJlZi5zcGxpdCgiOi8vIik7IW8ucG9ydCYmaVsxXSYmKG8ucG9ydD1pWzFdLnNwbGl0KCIvIilbMF0uc3BsaXQoIkAiKS5wb3AoKS5zcGxpdCgiOiIpWzFdKSxvLnBvcnQmJiIwIiE9PW8ucG9ydHx8KG8ucG9ydD0iaHR0cHMiPT09aVswXT8iNDQzIjoiODAiKSxvLmhvc3RuYW1lPWUuaG9zdG5hbWV8fG4uaG9zdG5hbWUsby5wYXRobmFtZT1lLnBhdGhuYW1lLG8ucHJvdG9jb2w9aVswXSwiLyIhPT1vLnBhdGhuYW1lLmNoYXJBdCgwKSYmKG8ucGF0aG5hbWU9Ii8iK28ucGF0aG5hbWUpO3ZhciBhPSFlLnByb3RvY29sfHwiOiI9PT1lLnByb3RvY29sfHxlLnByb3RvY29sPT09bi5wcm90b2NvbCxzPWUuaG9zdG5hbWU9PT1kb2N1bWVudC5kb21haW4mJmUucG9ydD09PW4ucG9ydDtyZXR1cm4gby5zYW1lT3JpZ2luPWEmJighZS5ob3N0bmFtZXx8cyksIi8iPT09by5wYXRobmFtZSYmKHJbdF09byksb319LHt9XSwxODpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCxlKXt2YXIgbj10LnJlc3BvbnNlVHlwZTtyZXR1cm4ianNvbiI9PT1uJiZudWxsIT09ZT9lOiJhcnJheWJ1ZmZlciI9PT1ufHwiYmxvYiI9PT1ufHwianNvbiI9PT1uP28odC5yZXNwb25zZSk6InRleHQiPT09bnx8IiI9PT1ufHx2b2lkIDA9PT1uP28odC5yZXNwb25zZVRleHQpOnZvaWQgMH12YXIgbz10KDIwKTtlLmV4cG9ydHM9cn0se31dLDE5OltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcigpe31mdW5jdGlvbiBvKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gaSh0LFtmLm5vdygpXS5jb25jYXQocyhhcmd1bWVudHMpKSxlP251bGw6dGhpcyxuKSxlP3ZvaWQgMDp0aGlzfX12YXIgaT10KCJoYW5kbGUiKSxhPXQoMjUpLHM9dCgyNiksYz10KCJlZSIpLmdldCgidHJhY2VyIiksZj10KCJsb2FkZXIiKSx1PU5SRVVNOyJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93Lm5ld3JlbGljJiYobmV3cmVsaWM9dSk7dmFyIGQ9WyJzZXRQYWdlVmlld05hbWUiLCJzZXRDdXN0b21BdHRyaWJ1dGUiLCJzZXRFcnJvckhhbmRsZXIiLCJmaW5pc2hlZCIsImFkZFRvVHJhY2UiLCJpbmxpbmVIaXQiLCJhZGRSZWxlYXNlIl0scD0iYXBpLSIsbD1wKyJpeG4tIjthKGQsZnVuY3Rpb24odCxlKXt1W2VdPW8ocCtlLCEwLCJhcGkiKX0pLHUuYWRkUGFnZUFjdGlvbj1vKHArImFkZFBhZ2VBY3Rpb24iLCEwKSx1LnNldEN1cnJlbnRSb3V0ZU5hbWU9byhwKyJyb3V0ZU5hbWUiLCEwKSxlLmV4cG9ydHM9bmV3cmVsaWMsdS5pbnRlcmFjdGlvbj1mdW5jdGlvbigpe3JldHVybihuZXcgcikuZ2V0KCl9O3ZhciBoPXIucHJvdG90eXBlPXtjcmVhdGVUcmFjZXI6ZnVuY3Rpb24odCxlKXt2YXIgbj17fSxyPXRoaXMsbz0iZnVuY3Rpb24iPT10eXBlb2YgZTtyZXR1cm4gaShsKyJ0cmFjZXIiLFtmLm5vdygpLHQsbl0sciksZnVuY3Rpb24oKXtpZihjLmVtaXQoKG8/IiI6Im5vLSIpKyJmbi1zdGFydCIsW2Yubm93KCkscixvXSxuKSxvKXRyeXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9Y2F0Y2godCl7dGhyb3cgYy5lbWl0KCJmbi1lcnIiLFthcmd1bWVudHMsdGhpcyx0XSxuKSx0fWZpbmFsbHl7Yy5lbWl0KCJmbi1lbmQiLFtmLm5vdygpXSxuKX19fX07YSgiYWN0aW9uVGV4dCxzZXROYW1lLHNldEF0dHJpYnV0ZSxzYXZlLGlnbm9yZSxvbkVuZCxnZXRDb250ZXh0LGVuZCxnZXQiLnNwbGl0KCIsIiksZnVuY3Rpb24odCxlKXtoW2VdPW8obCtlKX0pLG5ld3JlbGljLm5vdGljZUVycm9yPWZ1bmN0aW9uKHQsZSl7InN0cmluZyI9PXR5cGVvZiB0JiYodD1uZXcgRXJyb3IodCkpLGkoImVyciIsW3QsZi5ub3coKSwhMSxlXSl9fSx7fV0sMjA6W2Z1bmN0aW9uKHQsZSxuKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoInN0cmluZyI9PXR5cGVvZiB0JiZ0Lmxlbmd0aClyZXR1cm4gdC5sZW5ndGg7aWYoIm9iamVjdCI9PXR5cGVvZiB0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZ0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXImJnQuYnl0ZUxlbmd0aClyZXR1cm4gdC5ieXRlTGVuZ3RoO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgQmxvYiYmdCBpbnN0YW5jZW9mIEJsb2ImJnQuc2l6ZSlyZXR1cm4gdC5zaXplO2lmKCEoInVuZGVmaW5lZCIhPXR5cGVvZiBGb3JtRGF0YSYmdCBpbnN0YW5jZW9mIEZvcm1EYXRhKSl0cnl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHQpLmxlbmd0aH1jYXRjaChlKXtyZXR1cm59fX19LHt9XSwyMTpbZnVuY3Rpb24odCxlLG4pe3ZhciByPTAsbz1uYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9GaXJlZm94W1wvXHNdKFxkK1wuXGQrKS8pO28mJihyPStvWzFdKSxlLmV4cG9ydHM9cn0se31dLDIyOltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0LGUpe3ZhciBuPXQuZ2V0RW50cmllcygpO24uZm9yRWFjaChmdW5jdGlvbih0KXsiZmlyc3QtcGFpbnQiPT09dC5uYW1lP2MoInRpbWluZyIsWyJmcCIsTWF0aC5mbG9vcih0LnN0YXJ0VGltZSldKToiZmlyc3QtY29udGVudGZ1bC1wYWludCI9PT10Lm5hbWUmJmMoInRpbWluZyIsWyJmY3AiLE1hdGguZmxvb3IodC5zdGFydFRpbWUpXSl9KX1mdW5jdGlvbiBvKHQsZSl7dmFyIG49dC5nZXRFbnRyaWVzKCk7bi5sZW5ndGg+MCYmYygibGNwIixbbltuLmxlbmd0aC0xXV0pfWZ1bmN0aW9uIGkodCl7aWYodCBpbnN0YW5jZW9mIHUmJiFwKXt2YXIgZSxuPU1hdGgucm91bmQodC50aW1lU3RhbXApO2U9bj4xZTEyP0RhdGUubm93KCktbjpmLm5vdygpLW4scD0hMCxjKCJ0aW1pbmciLFsiZmkiLG4se3R5cGU6dC50eXBlLGZpZDplfV0pfX1pZighKCJpbml0ImluIE5SRVVNJiYicGFnZV92aWV3X3RpbWluZyJpbiBOUkVVTS5pbml0JiYiZW5hYmxlZCJpbiBOUkVVTS5pbml0LnBhZ2Vfdmlld190aW1pbmcmJk5SRVVNLmluaXQucGFnZV92aWV3X3RpbWluZy5lbmFibGVkPT09ITEpKXt2YXIgYSxzLGM9dCgiaGFuZGxlIiksZj10KCJsb2FkZXIiKSx1PU5SRVVNLm8uRVY7aWYoIlBlcmZvcm1hbmNlT2JzZXJ2ZXIiaW4gd2luZG93JiYiZnVuY3Rpb24iPT10eXBlb2Ygd2luZG93LlBlcmZvcm1hbmNlT2JzZXJ2ZXIpe2E9bmV3IFBlcmZvcm1hbmNlT2JzZXJ2ZXIocikscz1uZXcgUGVyZm9ybWFuY2VPYnNlcnZlcihvKTt0cnl7YS5vYnNlcnZlKHtlbnRyeVR5cGVzOlsicGFpbnQiXX0pLHMub2JzZXJ2ZSh7ZW50cnlUeXBlczpbImxhcmdlc3QtY29udGVudGZ1bC1wYWludCJdfSl9Y2F0Y2goZCl7fX1pZigiYWRkRXZlbnRMaXN0ZW5lciJpbiBkb2N1bWVudCl7dmFyIHA9ITEsbD1bImNsaWNrIiwia2V5ZG93biIsIm1vdXNlZG93biIsInBvaW50ZXJkb3duIiwidG91Y2hzdGFydCJdO2wuZm9yRWFjaChmdW5jdGlvbih0KXtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKHQsaSwhMSl9KX19fSx7fV0sMjM6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKCl7ZnVuY3Rpb24gdCgpe3JldHVybiBlPzE1JmVbbisrXToxNipNYXRoLnJhbmRvbSgpfDB9dmFyIGU9bnVsbCxuPTAscj13aW5kb3cuY3J5cHRvfHx3aW5kb3cubXNDcnlwdG87ciYmci5nZXRSYW5kb21WYWx1ZXMmJihlPXIuZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50OEFycmF5KDMxKSkpO2Zvcih2YXIgbyxpPSJ4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHgiLGE9IiIscz0wO3M8aS5sZW5ndGg7cysrKW89aVtzXSwieCI9PT1vP2ErPXQoKS50b1N0cmluZygxNik6InkiPT09bz8obz0zJnQoKXw4LGErPW8udG9TdHJpbmcoMTYpKTphKz1vO3JldHVybiBhfWZ1bmN0aW9uIG8oKXtmdW5jdGlvbiB0KCl7cmV0dXJuIGU/MTUmZVtuKytdOjE2Kk1hdGgucmFuZG9tKCl8MH12YXIgZT1udWxsLG49MCxyPXdpbmRvdy5jcnlwdG98fHdpbmRvdy5tc0NyeXB0bztyJiZyLmdldFJhbmRvbVZhbHVlcyYmVWludDhBcnJheSYmKGU9ci5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoMzEpKSk7Zm9yKHZhciBvPVtdLGk9MDtpPDE2O2krKylvLnB1c2godCgpLnRvU3RyaW5nKDE2KSk7cmV0dXJuIG8uam9pbigiIil9ZS5leHBvcnRzPXtnZW5lcmF0ZVV1aWQ6cixnZW5lcmF0ZUNhdElkOm99fSx7fV0sMjQ6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQsZSl7aWYoIW8pcmV0dXJuITE7aWYodCE9PW8pcmV0dXJuITE7aWYoIWUpcmV0dXJuITA7aWYoIWkpcmV0dXJuITE7Zm9yKHZhciBuPWkuc3BsaXQoIi4iKSxyPWUuc3BsaXQoIi4iKSxhPTA7YTxyLmxlbmd0aDthKyspaWYoclthXSE9PW5bYV0pcmV0dXJuITE7cmV0dXJuITB9dmFyIG89bnVsbCxpPW51bGwsYT0vVmVyc2lvblwvKFxTKylccytTYWZhcmkvO2lmKG5hdmlnYXRvci51c2VyQWdlbnQpe3ZhciBzPW5hdmlnYXRvci51c2VyQWdlbnQsYz1zLm1hdGNoKGEpO2MmJnMuaW5kZXhPZigiQ2hyb21lIik9PT0tMSYmcy5pbmRleE9mKCJDaHJvbWl1bSIpPT09LTEmJihvPSJTYWZhcmkiLGk9Y1sxXSl9ZS5leHBvcnRzPXthZ2VudDpvLHZlcnNpb246aSxtYXRjaDpyfX0se31dLDI1OltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0LGUpe3ZhciBuPVtdLHI9IiIsaT0wO2ZvcihyIGluIHQpby5jYWxsKHQscikmJihuW2ldPWUocix0W3JdKSxpKz0xKTtyZXR1cm4gbn12YXIgbz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2UuZXhwb3J0cz1yfSx7fV0sMjY6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQsZSxuKXtlfHwoZT0wKSwidW5kZWZpbmVkIj09dHlwZW9mIG4mJihuPXQ/dC5sZW5ndGg6MCk7Zm9yKHZhciByPS0xLG89bi1lfHwwLGk9QXJyYXkobzwwPzA6byk7KytyPG87KWlbcl09dFtlK3JdO3JldHVybiBpfWUuZXhwb3J0cz1yfSx7fV0sMjc6W2Z1bmN0aW9uKHQsZSxuKXtlLmV4cG9ydHM9e2V4aXN0czoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdy5wZXJmb3JtYW5jZSYmd2luZG93LnBlcmZvcm1hbmNlLnRpbWluZyYmInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cucGVyZm9ybWFuY2UudGltaW5nLm5hdmlnYXRpb25TdGFydH19LHt9XSxlZTpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIoKXt9ZnVuY3Rpb24gbyh0KXtmdW5jdGlvbiBlKHQpe3JldHVybiB0JiZ0IGluc3RhbmNlb2Ygcj90OnQ/Yyh0LHMsaSk6aSgpfWZ1bmN0aW9uIG4obixyLG8saSl7aWYoIXAuYWJvcnRlZHx8aSl7dCYmdChuLHIsbyk7Zm9yKHZhciBhPWUobykscz1tKG4pLGM9cy5sZW5ndGgsZj0wO2Y8YztmKyspc1tmXS5hcHBseShhLHIpO3ZhciBkPXVbeVtuXV07cmV0dXJuIGQmJmQucHVzaChbeCxuLHIsYV0pLGF9fWZ1bmN0aW9uIGwodCxlKXtnW3RdPW0odCkuY29uY2F0KGUpfWZ1bmN0aW9uIGgodCxlKXt2YXIgbj1nW3RdO2lmKG4pZm9yKHZhciByPTA7cjxuLmxlbmd0aDtyKyspbltyXT09PWUmJm4uc3BsaWNlKHIsMSl9ZnVuY3Rpb24gbSh0KXtyZXR1cm4gZ1t0XXx8W119ZnVuY3Rpb24gdih0KXtyZXR1cm4gZFt0XT1kW3RdfHxvKG4pfWZ1bmN0aW9uIHcodCxlKXtmKHQsZnVuY3Rpb24odCxuKXtlPWV8fCJmZWF0dXJlIix5W25dPWUsZSBpbiB1fHwodVtlXT1bXSl9KX12YXIgZz17fSx5PXt9LHg9e29uOmwsYWRkRXZlbnRMaXN0ZW5lcjpsLHJlbW92ZUV2ZW50TGlzdGVuZXI6aCxlbWl0Om4sZ2V0OnYsbGlzdGVuZXJzOm0sY29udGV4dDplLGJ1ZmZlcjp3LGFib3J0OmEsYWJvcnRlZDohMX07cmV0dXJuIHh9ZnVuY3Rpb24gaSgpe3JldHVybiBuZXcgcn1mdW5jdGlvbiBhKCl7KHUuYXBpfHx1LmZlYXR1cmUpJiYocC5hYm9ydGVkPSEwLHU9cC5iYWNrbG9nPXt9KX12YXIgcz0ibnJAY29udGV4dCIsYz10KCJnb3MiKSxmPXQoMjUpLHU9e30sZD17fSxwPWUuZXhwb3J0cz1vKCk7cC5iYWNrbG9nPXV9LHt9XSxnb3M6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQsZSxuKXtpZihvLmNhbGwodCxlKSlyZXR1cm4gdFtlXTt2YXIgcj1uKCk7aWYoT2JqZWN0LmRlZmluZVByb3BlcnR5JiZPYmplY3Qua2V5cyl0cnl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOnIsd3JpdGFibGU6ITAsZW51bWVyYWJsZTohMX0pLHJ9Y2F0Y2goaSl7fXJldHVybiB0W2VdPXIscn12YXIgbz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2UuZXhwb3J0cz1yfSx7fV0saGFuZGxlOltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0LGUsbixyKXtvLmJ1ZmZlcihbdF0sciksby5lbWl0KHQsZSxuKX12YXIgbz10KCJlZSIpLmdldCgiaGFuZGxlIik7ZS5leHBvcnRzPXIsci5lZT1vfSx7fV0saWQ6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQpe3ZhciBlPXR5cGVvZiB0O3JldHVybiF0fHwib2JqZWN0IiE9PWUmJiJmdW5jdGlvbiIhPT1lPy0xOnQ9PT13aW5kb3c/MDphKHQsaSxmdW5jdGlvbigpe3JldHVybiBvKyt9KX12YXIgbz0xLGk9Im5yQGlkIixhPXQoImdvcyIpO2UuZXhwb3J0cz1yfSx7fV0sbG9hZGVyOltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcigpe2lmKCFFKyspe3ZhciB0PWIuaW5mbz1OUkVVTS5pbmZvLGU9bC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IilbMF07aWYoc2V0VGltZW91dCh1LmFib3J0LDNlNCksISh0JiZ0LmxpY2Vuc2VLZXkmJnQuYXBwbGljYXRpb25JRCYmZSkpcmV0dXJuIHUuYWJvcnQoKTtmKHksZnVuY3Rpb24oZSxuKXt0W2VdfHwodFtlXT1uKX0pLGMoIm1hcmsiLFsib25sb2FkIixhKCkrYi5vZmZzZXRdLG51bGwsImFwaSIpO3ZhciBuPWwuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7bi5zcmM9Imh0dHBzOi8vIit0LmFnZW50LGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobixlKX19ZnVuY3Rpb24gbygpeyJjb21wbGV0ZSI9PT1sLnJlYWR5U3RhdGUmJmkoKX1mdW5jdGlvbiBpKCl7YygibWFyayIsWyJkb21Db250ZW50IixhKCkrYi5vZmZzZXRdLG51bGwsImFwaSIpfWZ1bmN0aW9uIGEoKXtyZXR1cm4gTy5leGlzdHMmJnBlcmZvcm1hbmNlLm5vdz9NYXRoLnJvdW5kKHBlcmZvcm1hbmNlLm5vdygpKToocz1NYXRoLm1heCgobmV3IERhdGUpLmdldFRpbWUoKSxzKSktYi5vZmZzZXR9dmFyIHM9KG5ldyBEYXRlKS5nZXRUaW1lKCksYz10KCJoYW5kbGUiKSxmPXQoMjUpLHU9dCgiZWUiKSxkPXQoMjQpLHA9d2luZG93LGw9cC5kb2N1bWVudCxoPSJhZGRFdmVudExpc3RlbmVyIixtPSJhdHRhY2hFdmVudCIsdj1wLlhNTEh0dHBSZXF1ZXN0LHc9diYmdi5wcm90b3R5cGU7TlJFVU0ubz17U1Q6c2V0VGltZW91dCxTSTpwLnNldEltbWVkaWF0ZSxDVDpjbGVhclRpbWVvdXQsWEhSOnYsUkVROnAuUmVxdWVzdCxFVjpwLkV2ZW50LFBSOnAuUHJvbWlzZSxNTzpwLk11dGF0aW9uT2JzZXJ2ZXJ9O3ZhciBnPSIiK2xvY2F0aW9uLHk9e2JlYWNvbjoiYmFtLm5yLWRhdGEubmV0IixlcnJvckJlYWNvbjoiYmFtLm5yLWRhdGEubmV0IixhZ2VudDoianMtYWdlbnQubmV3cmVsaWMuY29tL25yLXNwYS0xMTY5Lm1pbi5qcyJ9LHg9diYmdyYmd1toXSYmIS9DcmlPUy8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSxiPWUuZXhwb3J0cz17b2Zmc2V0OnMsbm93OmEsb3JpZ2luOmcsZmVhdHVyZXM6e30seGhyV3JhcHBhYmxlOngsdXNlckFnZW50OmR9O3QoMTkpLHQoMjIpLGxbaF0/KGxbaF0oIkRPTUNvbnRlbnRMb2FkZWQiLGksITEpLHBbaF0oImxvYWQiLHIsITEpKToobFttXSgib25yZWFkeXN0YXRlY2hhbmdlIixvKSxwW21dKCJvbmxvYWQiLHIpKSxjKCJtYXJrIixbImZpcnN0Ynl0ZSIsc10sbnVsbCwiYXBpIik7dmFyIEU9MCxPPXQoMjcpfSx7fV0sIndyYXAtZnVuY3Rpb24iOltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0KXtyZXR1cm4hKHQmJnQgaW5zdGFuY2VvZiBGdW5jdGlvbiYmdC5hcHBseSYmIXRbYV0pfXZhciBvPXQoImVlIiksaT10KDI2KSxhPSJuckBvcmlnaW5hbCIscz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGM9ITE7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbih0LGUsbixvKXtmdW5jdGlvbiBucldyYXBwZXIoKXt2YXIgcixhLHMsYzt0cnl7YT10aGlzLHI9aShhcmd1bWVudHMpLHM9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bihyLGEpOm58fHt9fWNhdGNoKGYpe3AoW2YsIiIsW3IsYSxvXSxzXSl9dShlKyJzdGFydCIsW3IsYSxvXSxzKTt0cnl7cmV0dXJuIGM9dC5hcHBseShhLHIpfWNhdGNoKGQpe3Rocm93IHUoZSsiZXJyIixbcixhLGRdLHMpLGR9ZmluYWxseXt1KGUrImVuZCIsW3IsYSxjXSxzKX19cmV0dXJuIHIodCk/dDooZXx8KGU9IiIpLG5yV3JhcHBlclthXT10LGQodCxucldyYXBwZXIpLG5yV3JhcHBlcil9ZnVuY3Rpb24gZih0LGUsbyxpKXtvfHwobz0iIik7dmFyIGEscyxjLGY9Ii0iPT09by5jaGFyQXQoMCk7Zm9yKGM9MDtjPGUubGVuZ3RoO2MrKylzPWVbY10sYT10W3NdLHIoYSl8fCh0W3NdPW4oYSxmP3MrbzpvLGkscykpfWZ1bmN0aW9uIHUobixyLG8pe2lmKCFjfHxlKXt2YXIgaT1jO2M9ITA7dHJ5e3QuZW1pdChuLHIsbyxlKX1jYXRjaChhKXtwKFthLG4scixvXSl9Yz1pfX1mdW5jdGlvbiBkKHQsZSl7aWYoT2JqZWN0LmRlZmluZVByb3BlcnR5JiZPYmplY3Qua2V5cyl0cnl7dmFyIG49T2JqZWN0LmtleXModCk7cmV0dXJuIG4uZm9yRWFjaChmdW5jdGlvbihuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX0sc2V0OmZ1bmN0aW9uKGUpe3JldHVybiB0W25dPWUsZX19KX0pLGV9Y2F0Y2gocil7cChbcl0pfWZvcih2YXIgbyBpbiB0KXMuY2FsbCh0LG8pJiYoZVtvXT10W29dKTtyZXR1cm4gZX1mdW5jdGlvbiBwKGUpe3RyeXt0LmVtaXQoImludGVybmFsLWVycm9yIixlKX1jYXRjaChuKXt9fXJldHVybiB0fHwodD1vKSxuLmluUGxhY2U9ZixuLmZsYWc9YSxufX0se31dfSx7fSxbImxvYWRlciIsMiwxNiw1LDMsNF0pOwogICAgICAgICAgO05SRVVNLmxvYWRlcl9jb25maWc9e2FjY291bnRJRDoiMzkyODQiLHRydXN0S2V5OiIzOTI4NCIsYWdlbnRJRDoiNzQ0NzQ2OCIsbGljZW5zZUtleToiNjg5ZDViNDU2MiIsYXBwbGljYXRpb25JRDoiMjAxMTIyNCJ9CiAgICAgICAgICA7TlJFVU0uaW5mbz17YmVhY29uOiJiYW0ubnItZGF0YS5uZXQiLGVycm9yQmVhY29uOiJiYW0ubnItZGF0YS5uZXQiLGxpY2Vuc2VLZXk6IjY4OWQ1YjQ1NjIiLGFwcGxpY2F0aW9uSUQ6IjIwMTEyMjQiLHNhOjF9CiAgICAgICAgPC9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vc3R5bGVzL2Nzc19vcHQvZ2xvYmFsL2ljb25fZm9udHMubWluLmNzcz9lMTAxM2RlYjZlODQ0NzBjNzVkMDc1Zjg2ZGIzY2Q0ZDk0ZDIxODE2Ij4KCiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vc3R5bGVzL2Nzc19vcHQvY2xpcF9iZXRhX2NvbWJpbmVkLm1pbi5jc3M/NGIxOTJlYzAiPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2YudmltZW9jZG4uY29tL3N0eWxlcy9jc3Nfb3B0L3RvcG5hdl9jYXJ0X2J1dHRvbl9jb21iaW5lZC5taW4uY3NzP2EyMGE3NTY2Ij4KCgoKICAgICAgICA8c2NyaXB0PgogICAgICAgIAogICAgICAgIHZhciBwbGF5ZXJBc3NldFVybHMgPSB7ImJhcmVib25lX2pzIjoiaHR0cHM6XC9cL2YudmltZW9jZG4uY29tXC9wXC8zLjIzLjBcL2pzXC9iYXJlYm9uZS5qcyIsImpzIjoiaHR0cHM6XC9cL2YudmltZW9jZG4uY29tXC9wXC8zLjIzLjBcL2pzXC9wbGF5ZXIuanMiLCJjaHJvbWVsZXNzX2NzcyI6Imh0dHBzOlwvXC9mLnZpbWVvY2RuLmNvbVwvcFwvMy4yMy4wXC9jc3NcL2Nocm9tZWxlc3MuY3NzIiwiY2hyb21lbGVzc19qcyI6Imh0dHBzOlwvXC9mLnZpbWVvY2RuLmNvbVwvcFwvMy4yMy4wXC9qc1wvY2hyb21lbGVzcy5qcyIsImNzcyI6Imh0dHBzOlwvXC9mLnZpbWVvY2RuLmNvbVwvcFwvMy4yMy4wXC9jc3NcL3BsYXllci5jc3MiLCJwbGF5ZXJfdXJsIjoicGxheWVyLnZpbWVvLmNvbSJ9OwoKICAgICAgICB2YXIgX2V4dGVuZCA9IGZ1bmN0aW9uKCl7Zm9yKHZhciByPWFyZ3VtZW50c1swXSxuPTEsZT1hcmd1bWVudHMubGVuZ3RoO2U+bjtuKyspe3ZhciB0PWFyZ3VtZW50c1tuXTtmb3IodmFyIGEgaW4gdCl0Lmhhc093blByb3BlcnR5KGEpJiYoclthXT10W2FdKX1yZXR1cm4gcn07CgogICAgICAgICAgICB3aW5kb3cgPSBfZXh0ZW5kKHdpbmRvdywgeyJ2aW1lb19lc2kiOnsiY29uZmlnIjp7InJvdXRlIjoiVmltZW9cXENvbnRyb2xsZXJcXENsaXBDb250cm9sbGVyOm1haW4iLCJjb250cm9sbGVyIjoiVmltZW9cXENvbnRyb2xsZXJcXENsaXBDb250cm9sbGVyIiwiYXV0b2NvbXBsZXRlX2VuYWJsZWQiOnRydWUsIm9uc2l0ZV9yZWZlcnJlciI6ZmFsc2V9fSwiYWJsaW5jb2xuX2NvbmZpZyI6W10sInZpbWVvIjp7ImNvbmZpZyI6eyJjYXJ0Ijp7ImNhcnRfY29udGVudCI6eyJzdG9jayI6eyJzdG9yZSI6InN0b2NrIiwidmVyc2lvbiI6MSwicXVhbnRpdGllcyI6W10sIml0ZW1zIjpbXSwiYXR0cmlidXRlcyI6W10sImN1cnJlbmN5IjoiQlJMIiwiaXRlbXNfc29ydGVkX2J5X2luZGV4IjpbXSwiaXRlbXNfY291bnQiOjB9fX19fX0pOwo8L3NjcmlwdD4KCiAgICAgICAgICAgICAgICAKICAgIDxzY3JpcHQ+CiAgICAgICAgdmFyIGFibGluY29sbl9jb25maWcgPSBhYmxpbmNvbG5fY29uZmlnIHx8IHt9OwogICAgICAgIGFibGluY29sbl9jb25maWcudGVzdHMgPSB7IkpTLk9tbmlzZWFyY2giOnsiaWQiOjUyNywibmFtZSI6IkpTLk9tbmlzZWFyY2giLCJidWNrZXRzIjoxMDAwLCJpbnB1dCI6ImN1aWQiLCJ1cmwiOiJcLyIsImV4cGVyaW1lbnRzIjpbeyJpZCI6MTQ1MiwibmFtZSI6InBoYXNlMSIsImJ1Y2tldHMiOjEwMCwic3RhdGUiOjEsInB1Ymxpc2hlZF9vbiI6IjIwMjAtMTAtMjIgMTM6NDY6NTEiLCJwYXVzZWRfb24iOiIwMDAwLTAwLTAwIDAwOjAwOjAwIiwic3RvcHBlZF9vbiI6IjAwMDAtMDAtMDAgMDA6MDA6MDAiLCJwYXJhbWV0ZXJzIjpbeyJpZCI6MjU0NSwibmFtZSI6Im9tbmlzZWFyY2hfZW5hYmxlZCIsImNob2ljZSI6InRydWUiLCJ3ZWlnaHQiOjF9LHsiaWQiOjI1NDYsIm5hbWUiOiJvbW5pc2VhcmNoX2VuYWJsZWQiLCJjaG9pY2UiOiJmYWxzZSIsIndlaWdodCI6MX1dLCJzZWdtZW50cyI6W119LHsiaWQiOjE0NTQsIm5hbWUiOiJwaGFzZTIiLCJidWNrZXRzIjoyMDAsInN0YXRlIjoxLCJwdWJsaXNoZWRfb24iOiIyMDIwLTEwLTIzIDA4OjE2OjU1IiwicGF1c2VkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInN0b3BwZWRfb24iOiIwMDAwLTAwLTAwIDAwOjAwOjAwIiwicGFyYW1ldGVycyI6W3siaWQiOjI1NTEsIm5hbWUiOiJvbW5pc2VhcmNoX2VuYWJsZWQiLCJjaG9pY2UiOiJ0cnVlIiwid2VpZ2h0IjoxfSx7ImlkIjoyNTUyLCJuYW1lIjoib21uaXNlYXJjaF9lbmFibGVkIiwiY2hvaWNlIjoiZmFsc2UiLCJ3ZWlnaHQiOjF9XSwic2VnbWVudHMiOltdfSx7ImlkIjoxNDU4LCJuYW1lIjoicGhhc2UzIiwiYnVja2V0cyI6MzAwLCJzdGF0ZSI6MSwicHVibGlzaGVkX29uIjoiMjAyMC0xMC0yNiAwODo1NDo0OCIsInBhdXNlZF9vbiI6IjAwMDAtMDAtMDAgMDA6MDA6MDAiLCJzdG9wcGVkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInBhcmFtZXRlcnMiOlt7ImlkIjoyNTU3LCJuYW1lIjoib21uaXNlYXJjaF9lbmFibGVkIiwiY2hvaWNlIjoidHJ1ZSIsIndlaWdodCI6MX0seyJpZCI6MjU1OCwibmFtZSI6Im9tbmlzZWFyY2hfZW5hYmxlZCIsImNob2ljZSI6ImZhbHNlIiwid2VpZ2h0IjoxfV0sInNlZ21lbnRzIjpbXX0seyJpZCI6MTQ2MSwibmFtZSI6InBoYXNlNCIsImJ1Y2tldHMiOjQwMCwic3RhdGUiOjEsInB1Ymxpc2hlZF9vbiI6IjIwMjAtMTAtMjcgMDg6NDY6NTYiLCJwYXVzZWRfb24iOiIwMDAwLTAwLTAwIDAwOjAwOjAwIiwic3RvcHBlZF9vbiI6IjAwMDAtMDAtMDAgMDA6MDA6MDAiLCJwYXJhbWV0ZXJzIjpbeyJpZCI6MjU2NSwibmFtZSI6Im9tbmlzZWFyY2hfZW5hYmxlZCIsImNob2ljZSI6InRydWUiLCJ3ZWlnaHQiOjF9LHsiaWQiOjI1NjYsIm5hbWUiOiJvbW5pc2VhcmNoX2VuYWJsZWQiLCJjaG9pY2UiOiJmYWxzZSIsIndlaWdodCI6MX1dLCJzZWdtZW50cyI6W119XX0sIkpTLlRvcE5hdi5DcmVhdGUiOnsiaWQiOjQ1MiwibmFtZSI6IkpTLlRvcE5hdi5DcmVhdGUiLCJidWNrZXRzIjoxMDAwLCJpbnB1dCI6InZ1aWQiLCJ1cmwiOiI6YWxsIiwiZXhwZXJpbWVudHMiOlt7ImlkIjoxMjM1LCJuYW1lIjoiKiBMb2dnZWQgb3V0IEpvaW4gTW9kYWwiLCJidWNrZXRzIjoxMDAsInN0YXRlIjozLCJwdWJsaXNoZWRfb24iOiIyMDIwLTA2LTE1IDE2OjE3OjE1IiwicGF1c2VkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInN0b3BwZWRfb24iOiIyMDIwLTEwLTE1IDA2OjUzOjI1IiwicGFyYW1ldGVycyI6W3siaWQiOjIxNTAsIm5hbWUiOiJ0b3BfbmF2X2NyZWF0ZSIsImNob2ljZSI6ImNvbnRyb2wiLCJ3ZWlnaHQiOjF9LHsiaWQiOjIxNTEsIm5hbWUiOiJ0b3BfbmF2X2NyZWF0ZSIsImNob2ljZSI6ImpvaW5fd2l0aG91dF9kZXNpZ24iLCJ3ZWlnaHQiOjF9LHsiaWQiOjIxNTIsIm5hbWUiOiJ0b3BfbmF2X2NyZWF0ZSIsImNob2ljZSI6ImpvaW5fd2l0aF9kZXNpZ24iLCJ3ZWlnaHQiOjF9XSwic2VnbWVudHMiOltdfSx7ImlkIjoxMzExLCJuYW1lIjoiKiAqIExvZ2dlZCBvdXQgSm9pbiBNb2RhbCIsImJ1Y2tldHMiOjkwMCwic3RhdGUiOjMsInB1Ymxpc2hlZF9vbiI6IjIwMjAtMDYtMjMgMTU6MDE6NTIiLCJwYXVzZWRfb24iOiIwMDAwLTAwLTAwIDAwOjAwOjAwIiwic3RvcHBlZF9vbiI6IjIwMjAtMTAtMTUgMDY6NTM6MzUiLCJwYXJhbWV0ZXJzIjpbeyJpZCI6MjI3NSwibmFtZSI6InRvcF9uYXZfY3JlYXRlIiwiY2hvaWNlIjoiY29udHJvbCIsIndlaWdodCI6MX0seyJpZCI6MjI3NiwibmFtZSI6InRvcF9uYXZfY3JlYXRlIiwiY2hvaWNlIjoiam9pbl93aXRob3V0X2Rlc2lnbiIsIndlaWdodCI6MX0seyJpZCI6MjI3NywibmFtZSI6InRvcF9uYXZfY3JlYXRlIiwiY2hvaWNlIjoiam9pbl93aXRoX2Rlc2lnbiIsIndlaWdodCI6MX1dLCJzZWdtZW50cyI6W119XX0sIkpTLlVwc2VsbC5SZXZpZXciOnsiaWQiOjQ0NCwibmFtZSI6IkpTLlVwc2VsbC5SZXZpZXciLCJidWNrZXRzIjoxMDAwLCJpbnB1dCI6InZ1aWQiLCJ1cmwiOiJcLyIsImV4cGVyaW1lbnRzIjpbXX0sIlRvcE5hdi5OZXdWaWRlby5TY3JlZW5SZWNvcmRGb3JBbGwiOnsiaWQiOjU0MSwibmFtZSI6IlRvcE5hdi5OZXdWaWRlby5TY3JlZW5SZWNvcmRGb3JBbGwiLCJidWNrZXRzIjoxMDAwLCJpbnB1dCI6InZ1aWQiLCJ1cmwiOiJcLyIsImV4cGVyaW1lbnRzIjpbeyJpZCI6MTQxOCwibmFtZSI6IlNob3cgcmVjb3JkZXIgbGluayBmb3IgYWxsIiwiYnVja2V0cyI6MTAwLCJzdGF0ZSI6MywicHVibGlzaGVkX29uIjoiMjAyMC0xMC0wNSAxNDozMDo0MCIsInBhdXNlZF9vbiI6IjAwMDAtMDAtMDAgMDA6MDA6MDAiLCJzdG9wcGVkX29uIjoiMjAyMC0xMC0yMSAwMzoyODo0MyIsInBhcmFtZXRlcnMiOlt7ImlkIjoyNDc3LCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoiY29udHJvbCIsIndlaWdodCI6MX0seyJpZCI6MjQ3OCwibmFtZSI6InNob3dfcmVjb3JkZXJfZm9yX2FsbCIsImNob2ljZSI6InZhcmlhbnRfc2NyZWVuIiwid2VpZ2h0IjoxfV0sInNlZ21lbnRzIjpbXX0seyJpZCI6MTQ1MCwibmFtZSI6IiogU2hvdyByZWNvcmRlciBsaW5rIGZvciBhbGwiLCJidWNrZXRzIjowLCJzdGF0ZSI6MywicHVibGlzaGVkX29uIjoiMjAyMC0xMC0yMiAxNzoxNzoxMSIsInBhdXNlZF9vbiI6IjIwMjAtMTAtMjIgMTc6MTc6MjciLCJzdG9wcGVkX29uIjoiMjAyMC0xMC0yMiAxNzoxNzo0MCIsInBhcmFtZXRlcnMiOlt7ImlkIjoyNTQwLCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoiY29udHJvbCIsIndlaWdodCI6MX0seyJpZCI6MjU0MSwibmFtZSI6InNob3dfcmVjb3JkZXJfZm9yX2FsbCIsImNob2ljZSI6InZhcmlhbnRfc2NyZWVuIiwid2VpZ2h0IjoxfSx7ImlkIjoyNTQyLCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoidmFyaWFudF9zY3JlZW5fYW5pbWF0aW9uIiwid2VpZ2h0IjoxfV0sInNlZ21lbnRzIjpbXX0seyJpZCI6MTQ1MywibmFtZSI6IiogKiBTaG93IHJlY29yZGVyIGxpbmsgZm9yIGFsbCIsImJ1Y2tldHMiOjUwLCJzdGF0ZSI6MywicHVibGlzaGVkX29uIjoiMjAyMC0xMC0yMiAxNzozNjo0MSIsInBhdXNlZF9vbiI6IjIwMjAtMTAtMjYgMTU6MDc6MjgiLCJzdG9wcGVkX29uIjoiMjAyMC0xMC0yNiAxNTowNzo1NiIsInBhcmFtZXRlcnMiOlt7ImlkIjoyNTQ3LCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoiY29udHJvbCIsIndlaWdodCI6MX0seyJpZCI6MjU0OCwibmFtZSI6InNob3dfcmVjb3JkZXJfZm9yX2FsbCIsImNob2ljZSI6InZhcmlhbnRfc2NyZWVuIiwid2VpZ2h0IjoxfSx7ImlkIjoyNTQ5LCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoidmFyaWFudF9zY3JlZW5fYW5pbWF0aW9uIiwid2VpZ2h0IjoxfV0sInNlZ21lbnRzIjpbXX0seyJpZCI6MTQ2MCwibmFtZSI6IiogKiAqIFNob3cgcmVjb3JkZXIgbGluayBmb3IgYWxsIiwiYnVja2V0cyI6MTAwLCJzdGF0ZSI6MywicHVibGlzaGVkX29uIjoiMjAyMC0xMC0yNiAxNTowODo1NCIsInBhdXNlZF9vbiI6IjAwMDAtMDAtMDAgMDA6MDA6MDAiLCJzdG9wcGVkX29uIjoiMjAyMC0xMC0yNyAxMDowMjo1NCIsInBhcmFtZXRlcnMiOlt7ImlkIjoyNTYyLCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoiY29udHJvbCIsIndlaWdodCI6MX0seyJpZCI6MjU2MywibmFtZSI6InNob3dfcmVjb3JkZXJfZm9yX2FsbCIsImNob2ljZSI6InZhcmlhbnRfc2NyZWVuIiwid2VpZ2h0IjoxfSx7ImlkIjoyNTY0LCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoidmFyaWFudF9zY3JlZW5fYW5pbWF0aW9uIiwid2VpZ2h0IjoxfV0sInNlZ21lbnRzIjpbXX0seyJpZCI6MTQ2MiwibmFtZSI6IiogKiAqICogU2hvdyByZWNvcmRlciBsaW5rIGZvciBhbGwiLCJidWNrZXRzIjoxMDAwLCJzdGF0ZSI6MSwicHVibGlzaGVkX29uIjoiMjAyMC0xMC0yNyAxMDowNDoxMCIsInBhdXNlZF9vbiI6IjAwMDAtMDAtMDAgMDA6MDA6MDAiLCJzdG9wcGVkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInBhcmFtZXRlcnMiOlt7ImlkIjoyNTY3LCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoiY29udHJvbCIsIndlaWdodCI6NX0seyJpZCI6MjU2OCwibmFtZSI6InNob3dfcmVjb3JkZXJfZm9yX2FsbCIsImNob2ljZSI6InZhcmlhbnRfc2NyZWVuIiwid2VpZ2h0Ijo5MH0seyJpZCI6MjU2OSwibmFtZSI6InNob3dfcmVjb3JkZXJfZm9yX2FsbCIsImNob2ljZSI6InZhcmlhbnRfc2NyZWVuX2FuaW1hdGlvbiIsIndlaWdodCI6NX1dLCJzZWdtZW50cyI6W119XX0sIkpTLkNyZWF0ZUFwcEJhbm5lciI6eyJpZCI6NDYxLCJuYW1lIjoiSlMuQ3JlYXRlQXBwQmFubmVyIiwiYnVja2V0cyI6MTAwMCwiaW5wdXQiOiJ2dWlkIiwidXJsIjoiXC86Y2xpcElkIiwiZXhwZXJpbWVudHMiOlt7ImlkIjoxMTU3LCJuYW1lIjoiU2hvdyBjcmVhdGUgYmFubmVyIiwiYnVja2V0cyI6MTAwLCJzdGF0ZSI6MywicHVibGlzaGVkX29uIjoiMjAyMC0wNC0wMSAwODo0ODozMiIsInBhdXNlZF9vbiI6IjAwMDAtMDAtMDAgMDA6MDA6MDAiLCJzdG9wcGVkX29uIjoiMjAyMC0wNy0xNiAxNjoxMToyNyIsInBhcmFtZXRlcnMiOlt7ImlkIjoyMDI0LCJuYW1lIjoic2hvd19jcmVhdGVfYmFubmVyIiwiY2hvaWNlIjoiY29udHJvbCIsIndlaWdodCI6MX0seyJpZCI6MjAyNSwibmFtZSI6InNob3dfY3JlYXRlX2Jhbm5lciIsImNob2ljZSI6InZhcmlhbnQiLCJ3ZWlnaHQiOjF9XSwic2VnbWVudHMiOltdfSx7ImlkIjoxMTc4LCJuYW1lIjoiKzQwJSBTaG93IGNyZWF0ZSBiYW5uZXIiLCJidWNrZXRzIjo0MDAsInN0YXRlIjozLCJwdWJsaXNoZWRfb24iOiIyMDIwLTA0LTAzIDE2OjE1OjQ3IiwicGF1c2VkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInN0b3BwZWRfb24iOiIyMDIwLTA3LTE2IDE2OjExOjMzIiwicGFyYW1ldGVycyI6W3siaWQiOjIwNTgsIm5hbWUiOiJzaG93X2NyZWF0ZV9iYW5uZXIiLCJjaG9pY2UiOiJjb250cm9sIiwid2VpZ2h0IjoxfSx7ImlkIjoyMDU5LCJuYW1lIjoic2hvd19jcmVhdGVfYmFubmVyIiwiY2hvaWNlIjoidmFyaWFudCIsIndlaWdodCI6MX1dLCJzZWdtZW50cyI6W119XX0sIkpTLkNsaXAuQmFubmVyRnJlcXVlbmN5Ijp7ImlkIjo1NDMsIm5hbWUiOiJKUy5DbGlwLkJhbm5lckZyZXF1ZW5jeSIsImJ1Y2tldHMiOjEwMDAsImlucHV0IjoidnVpZCIsInVybCI6IlwvKiIsImV4cGVyaW1lbnRzIjpbeyJpZCI6MTQyMiwibmFtZSI6IkNsaXAgQmFubmVyIEZyZXF1ZW5jeSBUZXN0IiwiYnVja2V0cyI6MTAwLCJzdGF0ZSI6MSwicHVibGlzaGVkX29uIjoiMjAyMC0xMC0wNyAxMzowMDozOCIsInBhdXNlZF9vbiI6IjAwMDAtMDAtMDAgMDA6MDA6MDAiLCJzdG9wcGVkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInBhcmFtZXRlcnMiOlt7ImlkIjoyNDg0LCJuYW1lIjoiYmFubmVyX2ZyZXF1ZW5jeSIsImNob2ljZSI6ImNvbnRyb2wiLCJ3ZWlnaHQiOjF9LHsiaWQiOjI0ODUsIm5hbWUiOiJiYW5uZXJfZnJlcXVlbmN5IiwiY2hvaWNlIjoidmFyaWFudCIsIndlaWdodCI6MX1dLCJzZWdtZW50cyI6W119XX19OwogICAgPC9zY3JpcHQ+CjxzY3JpcHQ+CihmdW5jdGlvbigpIHsKICAgIHdpbmRvdy5fZ3RtID0gW3siY2xpcF9pZCI6OTg2MDUzODIsInBhZ2VfcGF0aCI6IlwvOTg2MDUzODIiLCJjcmVhdG9yX2lkIjo5NjI3MjgzLCJjcmVhdG9yX3VzZXJfdHlwZSI6ImJhc2ljIiwidmlkZW9fY2F0ZWdvcmllcyI6IiIsInByaXZhY3kiOiJhbnlib2R5Iiwic3RhZmZfcGljayI6Im5vIiwidXNlcl9pZCI6bnVsbCwicGFnZV90eXBlIjoiVmlkZW8iLCJsYW5ndWFnZSI6ImVuIiwidXNlcl9zdGF0dXMiOiJsb2dnZWRfb3V0IiwidXNlcl90eXBlIjoibm9uZSIsImdhX3VuaXZlcnNhbF9pZCI6IlVBLTc2NjQxLTgiLCJjb21zY29yZV9zaXRlX2lkIjoxMDM0ODI4OX1dOwoKICAgICAgICB2YXIgZ2RwckNvb2tpZSA9IChkb2N1bWVudC5jb29raWUubWF0Y2goL14oPzouKjspP1xzKnZpbWVvX2dkcHJfb3B0aW5ccyo9XHMqKFteO10rKSg/Oi4qKT8kLyl8fFssbnVsbF0pWzFdOwogICAgaWYgKGdkcHJDb29raWUgPT09ICctMScpIHsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgICAgIHdpbmRvdy5fZ3RtLnB1c2goewogICAgICAgICd2dWlkJzogZG9jdW1lbnQuY29va2llLnJlcGxhY2UoLyg/Oig/Ol58Lio7XHMqKXZ1aWRccypcPVxzKihbXjtdKikuKiQpfF4uKiQvLCAiJDEiKSwKICAgICAgICAnZ3RtLnN0YXJ0JzogbmV3IERhdGUoKS5nZXRUaW1lKCksCiAgICAgICAgJ2V2ZW50JzogJ2d0bS5qcycKICAgIH0pOwogICAgdmFyIGd0bXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKSwKICAgICAgICBub2RlOwogICAgZ3Rtcy5hc3luYyA9IHRydWU7CiAgICBndG1zLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsKICAgIGd0bXMuc3JjID0gJy8vd3d3Lmdvb2dsZXRhZ21hbmFnZXIuY29tL2d0bS5qcz9pZD1HVE0tUkJLSyZsPV9ndG0nOwogICAgbm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTsKICAgIG5vZGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZ3Rtcywgbm9kZSk7Cn0pKCk7Cjwvc2NyaXB0Pgo8c2NyaXB0PgogICAgdmFyIGdvb2dsZXRhZyA9IGdvb2dsZXRhZyB8fCB7fSwKICAgICAgICBncHRhZHNsb3RzID0gW10sCiAgICAgICAgbGFuZ3VhZ2UsCiAgICAgICAgaGFzX3VwbG9hZGVkLAogICAgICAgIGNvaG9ydDsKICAgIGdvb2dsZXRhZy5jbWQgPSBnb29nbGV0YWcuY21kIHx8IFtdOwoKICAgIChmdW5jdGlvbigpIHsKICAgICAgICB2YXIgZ2RwckNvb2tpZSA9IChkb2N1bWVudC5jb29raWUubWF0Y2goL14oPzouKjspP1xzKnZpbWVvX2dkcHJfb3B0aW5ccyo9XHMqKFteO10rKSg/Oi4qKT8kLyl8fFssbnVsbF0pWzFdOwogICAgICAgIGlmIChnZHByQ29va2llID09PSAnLTEnKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgdmFyIGdhZHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKSwKICAgICAgICAgICAgdXNlU1NMID0gJ2h0dHBzOicgPT0gZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2wsCiAgICAgICAgICAgIG5vZGU7CiAgICAgICAgZ2Fkcy5hc3luYyA9IHRydWU7CiAgICAgICAgZ2Fkcy50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7CiAgICAgICAgZ2Fkcy5zcmMgPSAodXNlU1NMID8gJ2h0dHBzOicgOiAnaHR0cDonKSArICcvL3d3dy5nb29nbGV0YWdzZXJ2aWNlcy5jb20vdGFnL2pzL2dwdC5qcyc7CiAgICAgICAgbm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTsKICAgICAgICBub2RlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGdhZHMsIG5vZGUpOwogICAgfSkoKTsKCiAgICBnb29nbGV0YWcuY21kLnB1c2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncHRhZHNsb3RzWzBdID0gZ29vZ2xldGFnLmRlZmluZVNsb3QoJy8vNTQ1NDk1NDQvY2xpcHMnLCBbWzk3MCwyNTBdLFs3MjgsOTBdLFszMDAsMjUwXSwiZmx1aWQiXSwgJ2Rpdi1ncHQtYWQtNjMxNDg4MDk5Jykuc2V0VGFyZ2V0aW5nKCdwJywgWydCVEYnXSk7CgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBncHRhZHNsb3RzWzBdLmFkZFNlcnZpY2UoZ29vZ2xldGFnLnB1YmFkcygpKTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZSA9IGRvY3VtZW50LmNvb2tpZS5yZXBsYWNlKC8oPzooPzpefC4qO1xzKilsYW5ndWFnZVxzKlw9XHMqKFteO10qKS4qJCl8Xi4qJC8sICIkMSIpOwogICAgICAgICAgICBoYXNfdXBsb2FkZWQgPSAoZG9jdW1lbnQuY29va2llLnJlcGxhY2UoLyg/Oig/Ol58Lio7XHMqKWhhc191cGxvYWRlZFxzKlw9XHMqKFteO10qKS4qJCl8Xi4qJC8sICIkMSIpKSA/ICdZJyA6ICdOJzsKICAgICAgICAgICAgY29uc2VudCA9IChkb2N1bWVudC5jb29raWUucmVwbGFjZSgvKD86KD86XnwuKjtccyopdmltZW9fZ2Rwcl9vcHRpblxzKlw9XHMqKFteO10qKS4qJCl8Xi4qJC8sICIkMSIpKSA9PT0gJy0xJyA/IDEgOiAwOwogICAgICAgICAgICBjb2hvcnQgPSAnQSc7CiAgICAgICAgCiAgICAgICAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnbGFuZ3VhZ2UnLCBbbGFuZ3VhZ2VdKTsKICAgICAgICBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdpc191cGxvYWRlcicsIFtoYXNfdXBsb2FkZWRdKTsKICAgICAgICBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdjb2hvcnQnLCBbY29ob3J0XSk7CiAgICAgICAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnY29ob3J0X2EnLCBbKGNvaG9ydCA9PT0gJ0EnKSA/ICdZJyA6ICdOJ10pOwogICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoJ2NvaG9ydF9iJywgWyhjb2hvcnQgPT09ICdCJykgPyAnWScgOiAnTiddKTsKICAgICAgICBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdwcm9kdWN0JywgWycnXSk7CiAgICAgICAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnc3RvcmFnZScsIFsnTiddKTsKCiAgICAgICAgICAgICAgICBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdzZWMnLCBbJ2ZhbHNlJ10pOwoKICAgICAgICBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdsb2dnZWRfaW4nLCBbJ2ZhbHNlJ10pOwoKICAgICAgICAgICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoJ3JwdicsIChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMTAwKSsxKS50b1N0cmluZygpKTsKCiAgICAgICAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFJlcXVlc3ROb25QZXJzb25hbGl6ZWRBZHMoY29uc2VudCk7CiAgICAgICAgZ29vZ2xldGFnLnB1YmFkcygpLmVuYWJsZUFzeW5jUmVuZGVyaW5nKCk7CiAgICAgICAgZ29vZ2xldGFnLnB1YmFkcygpLmRpc2FibGVJbml0aWFsTG9hZCgpOwogICAgICAgIGdvb2dsZXRhZy5lbmFibGVTZXJ2aWNlcygpOwogICAgfSk7Cjwvc2NyaXB0PgoKICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2YudmltZW9jZG4uY29tL2pzX29wdC9sb2dnaW5nX2NvbWJpbmVkLm1pbi5qcz85NzQyMTNkMSI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvYWJsaW5jb2xuX2NvbWJpbmVkLm1pbi5qcz82YzRhY2I1NyI+PC9zY3JpcHQ+CgoKCiAgICA8L2hlYWQ+CiAgICA8Ym9keSBjbGFzcz0ib25zaXRlICI+CiAgICAgICAgPGRpdiBpZD0id3JhcCIgY2xhc3M9Im91dGVyX3dyYXAiPgogICAgICAgICAgICA8ZGl2IGlkPSJ0b3BuYXZfb3V0ZXJfd3JhcCI+CiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJjcmVhdGUtZmFjZWJvb2staGVhZGVyIj48L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iVmltZW9CcmFuZF9Db2xvclJpYmJvbiAiPjwvZGl2PgoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCgo8c3R5bGU+CiAgICBALXdlYmtpdC1rZXlmcmFtZXMgcmVjb3JkX2FuaW1hdGlvbiB7CiAgICAgICAgMCUsIDIwJSwgNTAlLCA4MCUsIDEwMCUgewogICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgICAgIH0KICAgICAgICA0MCUgewogICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgycHgpOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMnB4KTsKICAgICAgICB9CiAgICAgICAgNjAlIHsKICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoM3B4KTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDNweCk7CiAgICAgICAgfQogICAgfQoKICAgIEBrZXlmcmFtZXMgcmVjb3JkX2FuaW1hdGlvbiB7CiAgICAgICAgMCUsIDIwJSwgNTAlLCA4MCUsIDEwMCUgewogICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgICAgIH0KICAgICAgICA0MCUgewogICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgycHgpOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMnB4KTsKICAgICAgICB9CiAgICAgICAgNjAlIHsKICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoM3B4KTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDNweCk7CiAgICAgICAgfQogICAgfQoKICAgIC5sb2dnZWRfb3V0X3JlY29yZF9hbmltYXRpb24gewogICAgICAgIGFuaW1hdGlvbjogcmVjb3JkX2FuaW1hdGlvbiAxLjVzIC4yNXMgNTsKICAgIH0KCiAgICAubG9nZ2VkX2luX3JlY29yZF9hbmltYXRpb24gewogICAgICAgIGFuaW1hdGlvbjogcmVjb3JkX2FuaW1hdGlvbiAxLjVzIC4yNXMgaW5maW5pdGU7CiAgICB9CgogICAgLnJlY29yZGVyX25ld19sYWJlbCB7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTE0MEM2OwogICAgICAgIGNvbG9yOiAjZmZmOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsKICAgICAgICBoZWlnaHQ6IDIwcHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDE0cHg7CiAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIHdpZHRoOiA0MHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgfQo8L3N0eWxlPgoKPHNjcmlwdD4KICAgIHdpbmRvdy52aW1lbyA9IHdpbmRvdy52aW1lbyB8fCB7fTsKPC9zY3JpcHQ+Cgo8ZGl2IGlkPSJ0b3BuYXZfZGVza3RvcCIgY2xhc3M9InRvcG5hdl9kZXNrdG9wICIgcm9sZT0iYmFubmVyIj4KICAgIDxkaXYgY2xhc3M9InRvcG5hdl9kZXNrdG9wX3dyYXBwZXIiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9sb2dvIiBocmVmPSIvL3ZpbWVvLmNvbSIgYWx0PSJHbyB0byBWaW1lbyBob21lIHBhZ2UiIHRpdGxlPSJHbyB0byBWaW1lbyBob21lIHBhZ2UiIGFyaWEtbGFiZWw9IkdvIHRvIFZpbWVvIGhvbWUgcGFnZSIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6dmltZW9faG9tZSIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfaG9tZV9jbGljayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgYWx0PSJWaW1lbyIgd2lkdGg9IjEwMCIgaGVpZ2h0PSI0MCI+PHBhdGggZD0iTTIyLjQ0OCAxNC41NzVjLS4xMDQgMi4xNy0xLjYxOCA1LjE0Ni00LjU0NCA4LjkxMi0zLjAzIDMuOTQyLTUuNTkgNS45MTItNy42ODYgNS45MTItMS4yOTcgMC0yLjM5Ny0xLjIwNC0zLjMtMy42LS42LTIuMi0xLjIwMi00LjM5OC0xLjc5NC02LjU5OC0uNjY0LTIuMzk2LTEuMzgtMy42LTIuMTQ3LTMuNi0uMTY2IDAtLjc0Ny4zNTQtMS43NTMgMS4wNWwtMS4wNDgtMS4zNWMxLjEtLjk2NSAyLjE5LTEuOTMgMy4yNTctMi45MDUgMS40NjMtMS4yNjUgMi41NzMtMS45NCAzLjMtMi4wMDIgMS43MzItLjE2NiAyLjggMS4wMTcgMy4yMDUgMy41NTguNDM1IDIuNzQuNzM2IDQuNDQuOTAyIDUuMTE1LjQ5OCAyLjI3IDEuMDQ4IDMuNDAyIDEuNjUgMy40MDIuNDY2IDAgMS4xNzItLjczNyAyLjEwNS0yLjIxLjkzNC0xLjQ3MyAxLjQzMi0yLjU5MyAxLjUwNC0zLjM3LjEzMy0xLjI3Ny0uMzY1LTEuOTEtMS41MDYtMS45MS0uNTMgMC0xLjA4LjEyNS0xLjY1LjM2NCAxLjEtMy41OSAzLjE4Ni01LjMzMyA2LjI3Ny01LjIzIDIuMjczLjA3MyAzLjM1IDEuNTU2IDMuMjI3IDQuNDZtMTMuNzU1IDcuMDM0Yy0uOTMzIDEuNzY0LTIuMjIgMy4zNy0zLjg2IDQuODAzLTIuMjQgMS45My00LjQ3IDIuOTA1LTYuNyAyLjkwNS0xLjAzNy4wMDItMS44MjYtLjMzLTIuMzc2LS45OTQtLjU1LS42NjMtLjgxLTEuNTM1LS43NzctMi42MDMuMDMtMS4xLjM3Mi0yLjggMS4wMjUtNS4xMDQuNjU0LTIuMzAzLjk3Ni0zLjUzNy45NzYtMy43MDMgMC0uODYtLjMtMS4yOTctLjkwMi0xLjI5Ny0uMTk4IDAtLjc3LjM1My0xLjcwMiAxLjA0OGwtMS4xNTItMS4zNWMxLjA3LS45NjIgMi4xMzctMS45MjcgMy4yMDYtMi45MDIgMS40My0xLjI2NiAyLjUtMS45NCAzLjIwNS0yLjAwMiAxLjEtLjEwMyAxLjkxLjIzIDIuNDI4Ljk3Ni41MTguNzQ3LjcwNSAxLjcyMi41OCAyLjkxNS0uNDM1IDIuMDM0LS45MDIgNC42MDctMS40IDcuNzMtLjAzIDEuNDMuNDg4IDIuMTQ2IDEuNTU2IDIuMTQ2LjQ2NyAwIDEuMjk3LS40OTggMi41LTEuNDgzLjk5Ni0uODIgMS44MTUtMS41OTggMi40NS0yLjMyNGwuOTQyIDEuMjQ0bS00LjM1Ny0xNy44Yy0uMDMuODMtLjQ0NiAxLjYyOC0xLjI1NSAyLjM5NS0uOS44Ni0xLjk3IDEuMjk2LTMuMjA0IDEuMjk2LTEuOSAwLTIuODIyLS44My0yLjc1LTIuNDkuMDMyLS44Ni41NC0xLjY5IDEuNTI2LTIuNDkuOTg1LS43OTcgMi4wNzQtMS4xOSAzLjI3OC0xLjE5LjcwNSAwIDEuMjg2LjI3IDEuNzUzLjgyLjQ2Ny41NC42ODQgMS4xLjY1MyAxLjY2bTM1LjYxMiAxNy44Yy0uOTMzIDEuNzYzLTIuMjIgMy4zNy0zLjg2IDQuODAyLTIuMjQgMS45My00LjQ3IDIuOTA0LTYuNyAyLjkwNC0yLjE2OC4wMDItMy4yMTYtMS4yMDItMy4xNTMtMy41OTguMDMtMS4wNy4yMzgtMi4zNTUuNjIyLTMuODUuMzg0LTEuNTAzLjU5LTIuNjY1LjYyMy0zLjUwNS4wMy0xLjI2NS0uMzUzLTEuODk4LTEuMTUyLTEuODk4LS44NyAwLTEuOTEgMS4wMzYtMy4xMTIgMy4xLTEuMjc2IDIuMTY4LTEuOTYgNC4yNzQtMi4wNjQgNi4zMDgtLjA3MyAxLjQzLjA3MiAyLjU0LjQyNSAzLjI5OC0yLjMyNC4wNjQtMy45NjMtLjMyLTQuODg2LTEuMTUtLjgzLS43MzctMS4yMTItMS45NS0xLjE1LTMuNjUyLjAzLTEuMDY4LjE5OC0yLjEzNy40ODgtMy4yMDUuMjktMS4wNy40NTctMi4wMjMuNDg4LTIuODUzLjA2Mi0xLjIzNC0uMzg0LTEuODU3LTEuMzUtMS44NTctLjg0IDAtMS43NC45NTUtMi43MDYgMi44NTMtLjk2NiAxLjktMS41MDUgMy44OS0xLjYxIDUuOTU2LS4wNiAxLjg2Ny4wNTMgMy4xNzQuMzY0IDMuOS0yLjI5My4wNjItMy45Mi0uNDE1LTQuODc2LTEuNDUyLS43OTgtLjg2LTEuMTYtMi4xOC0xLjEtMy45NDIuMDMyLS44Ni4xODgtMi4wNzUuNDU3LTMuNjIuMjgtMS41NDYuNDI1LTIuNzUuNDU3LTMuNjIuMDYyLS42MDMtLjA4My0uOTAzLS40NDYtLjkwMy0uMTk3IDAtLjc2OC4zNC0xLjcwMiAxLjAxNWwtMS4yMDMtMS4zNDhjLjE2OC0uMTM1IDEuMjE2LTEuMSAzLjE1Ni0yLjkwNSAxLjQtMS4yOTcgMi4zNTQtMS45NyAyLjg1Mi0yLjAwMi44NzItLjA3MyAxLjU2Ny4yOSAyLjEwNiAxLjA4LjUzLjc4Ny44IDEuNjkuOCAyLjcyNyAwIC4zMzItLjAzMi42NTQtLjEwNS45NTQuNDk3LS43NjYgMS4wOC0xLjQzIDEuNzUyLTIgMS41MzctMS4zNCAzLjI2LTIuMDg2IDUuMTU3LTIuMjUyIDEuNjQtLjEzNSAyLjguMjUgMy41MDUgMS4xNTIuNTcuNzM2LjgzIDEuNzg0LjggMy4xNTMuMjM3LS4xOTguNDg2LS40MTYuNzQ2LS42NTQuNzY3LS45MDMgMS41MTQtMS42MiAyLjI1LTIuMTQ4IDEuMjM1LS45MDIgMi41Mi0xLjQgMy44Ni0xLjUwNCAxLjU5Ny0uMTM1IDIuNzUuMjUgMy40NTQgMS4xNTIuNjAyLjcyNi44NyAxLjc3NC44IDMuMTQzLS4wMzIuOTMzLS4yNiAyLjI4LS42NzUgNC4wNjUtLjQxNiAxLjc3My0uNjI0IDIuOC0uNjI0IDMuMDctLjAzLjY5NS4wMyAxLjE4Mi4xOTcgMS40NDIuMTY2LjI3LjU3LjM5NCAxLjIwMy4zOTQuNDY3IDAgMS4yOTctLjQ5NyAyLjUtMS40ODIuOTk2LS44MiAxLjgxNi0xLjU5OCAyLjQ1LTIuMzI0bC45NjMgMS4yNTRtMTguNzY1LS4wNTJjLS45NjUgMS41OTgtMi44NzQgMy4xOTUtNS43MDYgNC43OTMtMy41MzggMi4wMzItNy4xMjcgMy4wNS0xMC43NTggMy4wNS0yLjcwNiAwLTQuNjM2LS45MDQtNS44MDgtMi43LS44My0xLjIzMy0xLjIzNC0yLjY5Ni0xLjIwMy00LjQwNy4wMy0yLjY5OCAxLjIzNC01LjI3IDMuNi03LjcxIDIuNjAzLTIuNjY1IDUuNjc0LTQuMDAzIDkuMjEtNC4wMDMgMy4yNyAwIDUgMS4zMjggNS4yMDggMy45OTQuMTM1IDEuNzAyLS43OTggMy40NDUtMi44IDUuMjQtMi4xMzcgMS45Ni00LjgyNCAzLjIxNS04LjA2IDMuNzQ0LjYuODMgMS41MDQgMS4yNDUgMi43MDcgMS4yNDUgMi4zOTYgMCA1LjAyLS42MTMgNy44NjMtMS44MzcgMi4wMzMtLjg2IDMuNjMtMS43NTMgNC44MDMtMi42NzZsLjk0NSAxLjI2NW0tMTEuMzYtNS4yMjhjLjAzMi0uODkyLS4zMy0xLjM1LTEuMS0xLjM1LS45OTQgMC0yLjAxLjY4Ni0zLjA0OCAyLjA2Ni0xLjAzOCAxLjM4LTEuNTY3IDIuNjk3LTEuNTk4IDMuOTYyLS4wMiAwLS4wMi4yMTggMCAuNjQzIDEuNjMtLjYgMy4wNS0xLjUxNCA0LjI0Mi0yLjczOC45NjYtMS4wNTggMS40NjMtMS45MiAxLjUwNS0yLjU4M20yNC45NDYgMS44NjhjLS4xMzUgMy4wNzItMS4yNjUgNS43MTctMy40MDIgNy45NDctMi4xMzUgMi4yMy00Ljc5IDMuMzUtNy45NTUgMy4zNS0yLjYzNSAwLTQuNjM3LS44NS02LjAwNi0yLjU1LS45OTctMS4yNjctMS41NTctMi44NTQtMS42NS00Ljc1Mi0uMTY2LTIuODYzLjg2LTUuNDk4IDMuMS03Ljg5NCAyLjQwOC0yLjY2NSA1LjQyNy0zLjk5MyA5LjA1Ny0zLjk5MyAyLjMzNCAwIDQuMDk4Ljc4OCA1LjMgMi4zNDQgMS4xMzIgMS40NDMgMS42NSAzLjI5IDEuNTU3IDUuNTVtLTUuNjY0LS4xODVjLjAzLS45MDMtLjA5NC0xLjczMy0uMzc0LTIuNDgtLjI4LS43NDctLjY5NS0xLjEzLTEuMjI0LTEuMTMtMS43MDIgMC0zLjEwMi45MjMtNC4yMDIgMi43Ni0uOTMzIDEuNTAzLTEuNDMgMy4xMS0xLjUwNCA0LjgxMi0uMDMuODQuMTE0IDEuNTc3LjQ0NiAyLjIxLjM2NC43MzYuODgyIDEuMSAxLjU1NiAxLjEgMS41MDUgMCAyLjc5LS44ODMgMy44Ni0yLjY1Ni44OTItMS40NzIgMS4zOC0zLjAwOCAxLjQ0LTQuNjE1aC4wMDJ6IiBmaWxsPSIjMTEyMjMzIi8+PC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDxhIGNsYXNzPSJ0b3BuYXZfc3RvY2tfbG9nbyIgaHJlZj0iL3N0b2NrIj4KICAgICAgICAgICAgICAgIDxzdmcgYWx0PSJWaW1lbyIgd2lkdGg9IjE3MCIgaGVpZ2h0PSI0MCIgZGF0YS1uYW1lPSJMYXllciAxIiB2aWV3Qm94PSIwIDAgNzgwIDEyMCI+PHBhdGggZD0iTTQ3MS45IDcwLjMxYy0xMi4xNC0yLjc0LTI0LjI4LTMuOS0yNC4yOC0xMiAwLTYuNSA4LjgyLTcuNjYgMTMuNTktNy42NiA3LjIyIDAgMTMuNzMgMi4xNyAxNS4xNyAxMGgxNy4yYy0yLTE2LjYyLTE1LjktMjMtMzEuMjItMjMtMTMuNTggMC0zMS4yMSA1LjA1LTMxLjIxIDIxLjM4IDAgMTUuMTcgMTEuODUgMTkuNTEgMjQgMjIuMTFzMjQgMy43NiAyNC40MiAxMi40M2MuNDMgOC41Mi0xMC40IDkuODItMTYuNjIgOS44Mi04LjgxIDAtMTYtMy40Ni0xNi45LTEzaC0xNi40OWMuMjkgMTcuNjMgMTQuMzEgMjYgMzMuMDkgMjYgMTUuNDYgMCAzMy4zOC02LjUgMzMuMzgtMjQuMjgtLjAzLTE0LjcyLTEyLjE0LTE5LjA1LTI0LjEzLTIxLjh6TTUyNS42NiAxNy4yOGgtMTYuNDh2MjIuNGgtMTIuNDJWNTJoMTIuNDJ2NDRjLjI5IDEyLjQzIDMuNDcgMTkuMDggMjAuNjcgMTkuMDggMy42MSAwIDcuMDgtLjU4IDEwLjY5LS44N3YtMTIuNjhhMjguNTIgMjguNTIgMCAwIDEtNi45NC41N2MtNy4zNyAwLTcuOTQtMy40Ny03Ljk0LTEwLjI2VjUyaDE0Ljg4VjM5LjY4aC0xNC44OHpNNTgwLjg1IDM3LjY2Yy0yNCAwLTM3LjcxIDE2LjQ3LTM3LjcxIDM5LjMgMCAyMyAxMy43MyAzOS40NSAzNy43MSAzOS40NVM2MTguNTcgOTkuOTQgNjE4LjU3IDc3YzAtMjIuODctMTMuNzMtMzkuMzQtMzcuNzItMzkuMzR6bTAgNjUuNzRjLTE0LjczIDAtMjEuMjQtMTMuNC0yMS4yNC0yNi40czYuNTEtMjYuMyAyMS4yNC0yNi4zUzYwMi4xIDY0LjEgNjAyLjEgNzdzLTYuNTEgMjYuNC0yMS4yNSAyNi40ek02NjIuNzkgNTAuNjZjOS4xIDAgMTUuNzUgNC45MSAxNy4wNSAxNGgxNi40N2MtMS41OS0xOC4zNS0xNi4zMy0yNy0zMy42Ny0yNy0yNC41NiAwLTM2Ljg1IDE3LjYzLTM2Ljg1IDQwLjE3IDAgMjIgMTIuODYgMzguNTggMzYuMjcgMzguNTggMTkuMjIgMCAzMS4yMi0xMC42OSAzNC4yNS0zMC4wNmgtMTYuNDdjLTEuNTkgMTAuNy04LjI0IDE3LjA1LTE3Ljc4IDE3LjA1LTE0LjMgMC0xOS43OS0xMy4xNS0xOS43OS0yNS41NyAwLTIyLjY5IDExLjk5LTI3LjE3IDIwLjUyLTI3LjE3ek03NDIuMjYgNjcuMTNsMjguNjEtMjcuNDVoLTIwLjIzbC0yOS43NiAzMC4yVjExLjIxSDcwNC40djEwMy4xOGgxNi40OFY4Ny42NWw5LjgyLTkuNTMgMjIuODMgMzYuMjdoMjAuMDlsLTMxLjM2LTQ3LjI2eiIgZmlsbD0iI2ZmZiI+PC9wYXRoPjxwYXRoIGQ9Ik0xMTcuMjUgMjYuNzJhMTguMzcgMTguMzcgMCAwIDAgMTMuMTQtNS4zMXE0LjkyLTQuNjkgNS4xMy05LjhhOS42MiA5LjYyIDAgMCAwLTIuNjctNi44NCA5LjA4IDkuMDggMCAwIDAtNy4xOC0zLjM3IDIwLjkxIDIwLjkxIDAgMCAwLTEzLjQ1IDQuOXEtNi4wNiA0LjkxLTYuMjYgMTAuMjEtLjQgMTAuMjIgMTEuMjkgMTAuMjF6TTM4Ni4xMiAzOC4yNXEtMjIuMzggMC0zNy4xNSAxNi4zOVEzMzUuMiA2OS40IDMzNi4yNCA4N2MuMDUuODYuMTIgMS43LjIyIDIuNTNsLTEuNTQuNjhxLTE3LjQ2IDcuNTItMzIuMjMgNy41MS03LjQgMC0xMS4wOS01LjEyIDE5LjktMy4yNyAzMy0xNS4zNSAxMi40LTExLjAzIDExLjU0LTIxLjQ3LTEuMjMtMTYuMzctMjEuMzQtMTYuMzgtMjEuOCAwLTM3LjggMTYuNDItMTQuNTYgMTUtMTQuNzcgMzEuNmEzNy41NyAzNy41NyAwIDAgMCAuMjcgNS4zN2MtMi4yOSAxLjUxLTQgMi4yNy01LjIgMi4yN3EtMy45IDAtNC45Mi0xLjYzYy0uNjktMS4wOS0xLTMuMDYtLjgzLTUuOTNxMC0xLjY0IDIuNTctMTIuNTd0Mi43Ny0xNi42N3EuNC04LjM3LTMuMjgtMTIuODgtNC4zMi01LjUyLTE0LjE3LTQuN2EzMC40MiAzMC40MiAwIDAgMC0xNS44IDYuMTYgNTQuNTcgNTQuNTcgMCAwIDAtOS4yMyA4LjgyYy0xLjEgMS0yLjEyIDEuODYtMy4wOCAyLjY3cS4xOS04LjQxLTMuMjgtMTIuOTMtNC4zMi01LjUzLTE0LjM4LTQuNzJhMzYuNDYgMzYuNDYgMCAwIDAtMjEuMTMgOS4yNCAzNy42NyAzNy42NyAwIDAgMC03LjE5IDguMjEgMTguMTUgMTguMTUgMCAwIDAgLjQxLTMuOUExOS40MiAxOS40MiAwIDAgMCAxNjIuNSA0M3EtMy4yOC00LjgyLTguNjItNC40MS0zLjA3LjIxLTExLjY5IDguMjEtMTEuOTEgMTEuMDgtMTIuOTMgMTEuOWw0LjkyIDUuNTRjMy44My0yLjc2IDYuMTYtNC4xNSA3LTQuMTVxMi4yNSAwIDEuODUgMy42OGExMTQuMTEgMTE0LjExIDAgMCAxLTEuODkgMTQuODRjLS43IDMuOTQtMS4yIDcuMzMtMS41MiAxMC4xOWwtLjE4LjE1cS03LjM5IDYuMDgtMTAuMjYgNi4wN2MtNC4zOCAwLTYuNS0yLjkyLTYuMzctOC43OXEzLjA4LTE5LjIyIDUuNzYtMzEuNjkuODEtNy4zNi0yLjM3LTEydC0xMC00cS00LjMyLjQtMTMuMTQgOC4yMUw5NyA1Mi4zOWMtLjQxLTkuNjgtNC44Mi0xNC42Ni0xMy4yOC0xNC45MXEtMTktLjYtMjUuNzQgMjEuNDZhMTcuMTkgMTcuMTkgMCAwIDEgNi43Ni0xLjVxNyAwIDYuMTYgNy44NC0uNDYgNC43Mi02LjIgMTMuODF0LTguNjIgOS4wNnEtMy42OSAwLTYuNzctMTQtMS00LjExLTMuNjktMjEtMi40Ny0xNS41NC0xMy4xNC0xNC41MlEyOCAzOSAxOC45NCA0Ni44NHEtNi41NyA2LTEzLjM0IDExLjlsNC4zIDUuNTRRMTYuMDUgNjAgMTcuMDcgNjBxNC43MSAwIDguODEgMTQuNzZsNy4zOCAyNy4wNnE1LjUyIDE0Ljc2IDEzLjUxIDE0Ljc2IDEyLjkyIDAgMzEuNTUtMjQuMjQgMTMuMS0xNi44NCAxNy0yOC41YzMuNDQtMi41NSA1LjU3LTMuODQgNi4zNS0zLjg0cTMuNjkgMCAzLjY5IDUuMzMgMCAxLTQgMTUuMTh0LTQuMiAyMC45MnEtLjIxIDYuNTcgMy4xOCAxMC42NmMyLjI1IDIuNzQgNS41MSA0LjExIDkuNzUgNC4xMXExMy43NSAwIDI3LjUtMTEuOWMuODItLjcxIDEuNjEtMS40NCAyLjM5LTIuMThhMTYuNTEgMTYuNTEgMCAwIDAgMy43NyA3LjU2cTUuOTMgNi4zNCAyMCA1LjkzLTEuODktNC41Mi0xLjQ3LTE2YTU5LjcgNTkuNyAwIDAgMSA2LjU3LTI0LjQzcTYtMTEuNjggMTEuMS0xMS43IDYgMCA1LjU1IDcuNTlhNTMuMTMgNTMuMTMgMCAwIDEtMiAxMS43MSA1NS4yMyA1NS4yMyAwIDAgMC0yIDEzLjEzcS0uNDEgMTAuNDcgNC43MSAxNSA1LjczIDUuMTMgMjAuMDUgNC43Mi0yLjEzLTQuNzEtMS43Mi0xMy41NC42LTEyLjUyIDguNDQtMjUuODYgNy40MS0xMi43MiAxMi43Ni0xMi43MyA1IDAgNC43NCA3LjhhNzQuOTQgNzQuOTQgMCAwIDEtMi41NiAxNC4zNiA3NC42MSA3NC42MSAwIDAgMC0yLjU3IDE1Ljc5cS0uNDEgMTQuNzggMTIuOTQgMTQuNzcgMTMuNzQgMCAyNy41LTExLjlsLjQ0LS40Yy4zMi41NC42NCAxLjA4IDEgMS42cTcuMTkgMTEuMDggMjMuODEgMTEuMDggMjIuMzYgMCA0NC4xMy0xMi41YzEuNjMtLjkyIDMuMTctMS44MyA0LjY1LTIuNzVhMjkuNDMgMjkuNDMgMCAwIDAgMy4yNCA1LjE4cTguNDIgMTAuNDUgMjQuNjMgMTAuNDUgMTkuNSAwIDMyLjY0LTEzLjczYTQ4Ljc5IDQ4Ljc5IDAgMCAwIDE0LTMyLjU4cS42MS0xMy45My02LjM2LTIyLjc1LTcuNDktOS42NS0yMS44NS05LjY3em0tOTcuNzYgNDYuNTZhMTEuMTIgMTEuMTIgMCAwIDEgMC0yLjY2cS4xOS03Ljc1IDYuNTUtMTYuMjN0MTIuNS04LjQ4YzMuMTUgMCA0LjY1IDEuODUgNC41MSA1LjUycS0uMTkgNC4wOC02LjE0IDEwLjYyYTQ2LjI1IDQ2LjI1IDAgMCAxLTE3LjQyIDExLjIzek0zOTEgNjkuODVhMzkgMzkgMCAwIDEtNiAxOC45MnEtNi41NyAxMC45MS0xNS44MSAxMC45LTQuMTEgMC02LjM2LTQuNTJhMTcuNjYgMTcuNjYgMCAwIDEtMS44NS05LjA1IDM5LjgxIDM5LjgxIDAgMCAxIDYuMTYtMTkuNzRxNi44Ni0xMS4zMSAxNy4zMy0xMS4zMWMyLjE5IDAgMy44NiAxLjU0IDUgNC42M0EyNS44MiAyNS44MiAwIDAgMSAzOTEgNjkuODV6IiBmaWxsPSIjMDBhZGVmIj48L3BhdGg+PC9zdmc+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYXYgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnUiIHJvbGU9Im5hdmlnYXRpb24iIGFyaWEtbGFiZWw9Ik1haW4gbWVudSI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9InRvcG5hdl9tZW51X2Rlc2t0b3BfbWFpbiIgcm9sZT0ibWVudWJhciI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtcyIgZGF0YS1tZW51LWlkPSJqb2luIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJ0b3BuYXZfbWVudV9qb2luIGpzLXRvcG5hdl9tZW51X2F1dGgiIG9uY2xpY2s9ImV2ZW50LnByZXZlbnREZWZhdWx0KCk7dmltZW8uTW9kYWwuY3JlYXRlKHtzaXplOid4c21hbGwnLGNvbnRlbnQ6Jy9qb2luP21vZGFsPW5ldyd9KS50aGVuKGNvbXBsZXRlVXNlckxvZ2luKSIgZGF0YS1nYS1ldmVudC1jbGljaz0idG9wX25hdnxqb2luIiBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpqb2luIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9qb2luX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9qb2luIiB0aXRsZT0iQmVjb21lIGEgVmltZW8gbWVtYmVyIiByZWw9InRvZ2dsZSIgcm9sZT0iYnV0dG9uIiBhcmlhLW93bnM9InRvcG5hdl9qb2luIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKb2luICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zIiBkYXRhLW1lbnUtaWQ9ImxvZ2luIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJqcy10b3BuYXZfbWVudV9hdXRoIiBvbmNsaWNrPSJldmVudC5wcmV2ZW50RGVmYXVsdCgpO3ZpbWVvLk1vZGFsLmNyZWF0ZSh7c2l6ZToneHNtYWxsJyxjb250ZW50OicvbG9nX2luP21vZGFsPW5ldyd9KS50aGVuKGNvbXBsZXRlVXNlckxvZ2luKSIgZGF0YS1nYS1ldmVudC1jbGljaz0idG9wX25hdnxsb2dpbiIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6bG9naW4iIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2xvZ2luX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9sb2dfaW4iIHRpdGxlPSJMb2cgaW4gdG8geW91ciBhY2NvdW50IiByZWw9InRvZ2dsZSIgcm9sZT0iYnV0dG9uIiBhcmlhLW93bnM9InRvcG5hdl9sb2dpbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nIGluICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zIiBkYXRhLW1lbnUtaWQ9InByaWNpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6cHJpY2luZyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfcHJpY2luZ19jbGljayIgaHJlZj0iLy92aW1lby5jb20vdXBncmFkZSIgdGl0bGU9IlByaWNpbmciIHJlbD0idG9nZ2xlIiByb2xlPSJidXR0b24iIGFyaWEtb3ducz0idG9wbmF2X3ByaWNpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaWNpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXMiIGRhdGEtbWVudS1pZD0icHJvZHVjdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBvbmNsaWNrPSJldmVudC5wcmV2ZW50RGVmYXVsdCgpO2V2ZW50LnRhcmdldC5ibHVyKCk7IiBjbGFzcz0idG9wbmF2X21lbnVfbm9fbGluayB0b3BuYXZfaGFzX2Ryb3Bkb3duIHRvcG5hdl9pY29uX2NoZXZyb25fYSIgaHJlZj0iIyIgdGl0bGU9IlByb2R1Y3QiIHJlbD0idG9nZ2xlIiByb2xlPSJidXR0b24iIGFyaWEtb3ducz0idG9wbmF2X3Byb2R1Y3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2R1Y3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd24tLXdyYXBwZXIiIHJvbGU9Im1lbnUiIGFyaWEtaGlkZGVuPSJ0cnVlIiBpZD0idG9wbmF2X3Byb2R1Y3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wbmF2X2Rlc2t0b3Bfc29sdXRpb25zLS1mZWF0dXJlcyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bi0tbGFiZWxzIj5GRUFUVVJFUzwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19saXN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6cHJvZHVjdHxrZXl3b3JkOnZpZGVvX3BsYXllciIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfcHJvZHVjdF92aWRlb19wbGF5ZXIiIGhyZWY9Ii8vdmltZW8uY29tL2ZlYXR1cmVzL3ZpZGVvLXBsYXllciIgdGl0bGU9IlZpZGVvIHBsYXllciI+VmlkZW8gcGxheWVyPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpwcm9kdWN0fGtleXdvcmQ6c2NyZWVuX3JlY29yZGVyIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9wcm9kdWN0X3NjcmVlbl9yZWNvcmRlciIgaHJlZj0iLy92aW1lby5jb20vZmVhdHVyZXMvc2NyZWVuLXJlY29yZGVyIiB0aXRsZT0iU2NyZWVuIHJlY29yZGVyIj5TY3JlZW4gcmVjb3JkZXI8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnByb2R1Y3R8a2V5d29yZDpsaXZlX3N0cmVhbWluZyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfcHJvZHVjdF9saXZlX3N0cmVhbWluZyIgaHJlZj0iLy92aW1lby5jb20vbGl2ZSIgdGl0bGU9IkxpdmUgc3RyZWFtaW5nIj5MaXZlIHN0cmVhbWluZzwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6cHJvZHVjdHxrZXl3b3JkOnByaXZhY3kiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3Byb2R1Y3RfcHJpdmFjeSIgaHJlZj0iLy92aW1lby5jb20vZmVhdHVyZXMvdmlkZW8tcHJpdmFjeSIgdGl0bGU9IlByaXZhY3kiPlByaXZhY3k8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnByb2R1Y3R8a2V5d29yZDpjb2xsYWJvcmF0aW9uIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9wcm9kdWN0X2NvbGxhYm9yYXRpb24iIGhyZWY9Ii8vdmltZW8uY29tL2ZlYXR1cmVzL3ZpZGVvLWNvbGxhYm9yYXRpb24iIHRpdGxlPSJDb2xsYWJvcmF0aW9uIj5Db2xsYWJvcmF0aW9uPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpwcm9kdWN0fGtleXdvcmQ6ZGlzdHJpYnV0aW9uIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9wcm9kdWN0X2Rpc3RyaWJ1dGlvbiIgaHJlZj0iLy92aW1lby5jb20vZmVhdHVyZXMvdmlkZW8tbWFya2V0aW5nIiB0aXRsZT0iRGlzdHJpYnV0aW9uIGFuZCBtYXJrZXRpbmciPkRpc3RyaWJ1dGlvbiAmIG1hcmtldGluZzwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6cHJvZHVjdHxrZXl3b3JkOm1vbmV0aXphdGlvbiIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfcHJvZHVjdF9tb25ldGl6YXRpb24iIGhyZWY9Ii8vdmltZW8uY29tL2ZlYXR1cmVzL3ZpZGVvLW1vbmV0aXphdGlvbiIgdGl0bGU9Ik1vbmV0aXphdGlvbiI+TW9uZXRpemF0aW9uPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpwcm9kdWN0fGtleXdvcmQ6YW5hbHl0aWNzIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9wcm9kdWN0X2FuYWx5dGljcyIgaHJlZj0iLy92aW1lby5jb20vZmVhdHVyZXMvdmlkZW8tYW5hbHl0aWNzIiB0aXRsZT0iQW5hbHl0aWNzIj5BbmFseXRpY3M8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnByb2R1Y3R8a2V5d29yZDpob3N0aW5nIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9wcm9kdWN0X2hvc3RpbmciIGhyZWY9Ii8vdmltZW8uY29tL2ZlYXR1cmVzL29ubGluZS12aWRlby1ob3N0aW5nIiB0aXRsZT0iSG9zdGluZyBhbmQgbWFuYWdlbWVudCI+SG9zdGluZyAmIG1hbmFnZW1lbnQ8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii91cGdyYWRlIiBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bi0tY29tcGFyZV9wbGFucyIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6cHJvZHVjdHxrZXl3b3JkOmNvbXBhcmVfcGxhbnN8dGFyZ2V0Oi91cGdyYWRlfHR5cGU6Y2xpY2siPkNvbXBhcmUgUGxhbnM8L2E+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvcG5hdl9kZXNrdG9wX3NvbHV0aW9ucy0tc2VydmljZXMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd24tLWxhYmVscyI+U0VSVklDRVM8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9zb2x1dGlvbnMtLXNlcnZpY2VzX2NvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZXJ2aWNlc193cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpzb2x1dGlvbnN8a2V5d29yZDpjcmVhdGV8dGFyZ2V0Oi9jcmVhdGV8dHlwZTpjbGljayIgY2xhc3M9InRvcG5hdl9kZXNrdG9wX3NvbHV0aW9ucy0tc2VydmljZXNfYmxvY2siIGhyZWY9Ii8vdmltZW8uY29tL2NyZWF0ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2gzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5NYWtlIHNvY2lhbCB2aWRlb3MgaW4gYW4gaW5zdGFudDogdXNlIGN1c3RvbSB0ZW1wbGF0ZXMgdG8gdGVsbCB0aGUgcmlnaHQgc3RvcnkgZm9yIHlvdXIgYnVzaW5lc3MuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VydmljZXNfd3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6c29sdXRpb25zfGtleXdvcmQ6Zm9yX2hpcmV8dGFyZ2V0Oi9mb3ItaGlyZXx0eXBlOmNsaWNrIiBjbGFzcz0idG9wbmF2X2Rlc2t0b3Bfc29sdXRpb25zLS1zZXJ2aWNlc19ibG9jayIgaHJlZj0iLy92aW1lby5jb20vZm9yLWhpcmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgSGlyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2gzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5Qb3N0IGpvYnMsIGZpbmQgcHJvcywgYW5kIGNvbGxhYm9yYXRlIGNvbW1pc3Npb24tZnJlZSBpbiBvdXIgcHJvZmVzc2lvbmFsIG1hcmtldHBsYWNlLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlcnZpY2VzX3dyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOmVudGVycHJpc2V8dGFyZ2V0Oi9lbnRlcnByaXNlfHR5cGU6Y2xpY2siIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9zb2x1dGlvbnMtLXNlcnZpY2VzX2Jsb2NrIiBocmVmPSIvL3ZpbWVvLmNvbS9lbnRlcnByaXNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW50ZXJwcmlzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2gzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5HZXQgeW91ciB0ZWFtIGFsaWduZWQgd2l0aCBhbGwgdGhlIHRvb2xzIHlvdSBuZWVkIG9uIG9uZSBzZWN1cmUsIHJlbGlhYmxlIHZpZGVvIHBsYXRmb3JtLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlcnZpY2VzX3dyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOnN0b2NrfHRhcmdldDovc3RvY2t8dHlwZTpjbGljayIgY2xhc3M9InRvcG5hdl9kZXNrdG9wX3NvbHV0aW9ucy0tc2VydmljZXNfYmxvY2siIGhyZWY9Ii8vdmltZW8uY29tL3N0b2NrIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+QnJvd3NlIGFuZCBidXkgZXhjZXB0aW9uYWwsIHJveWFsdHktZnJlZSBzdG9jayBjbGlwcywgaGFuZHBpY2tlZCBieSB0aGUgYmVzdC48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXMiIGRhdGEtbWVudS1pZD0ic29sdXRpb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJ0b3BuYXZfaGFzX2Ryb3Bkb3duIHRvcG5hdl9pY29uX2NoZXZyb25fYSIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6c29sdXRpb25zfGtleXdvcmQ6c29sdXRpb25zIiBocmVmPSIjIiB0aXRsZT0iU29sdXRpb25zIiByZWw9InRvZ2dsZSIgcm9sZT0iYnV0dG9uIiBhcmlhLW93bnM9InRvcG5hdl9zb2x1dGlvbnMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbHV0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duIiByb2xlPSJtZW51IiBhcmlhLWhpZGRlbj0idHJ1ZSIgaWQ9InRvcG5hdl9zb2x1dGlvbnMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpzb2x1dGlvbnN8a2V5d29yZDpjcmVhdGl2ZV9wcm9mZXNzaW9uYWxzIiBocmVmPSIvL3ZpbWVvLmNvbS9zb2x1dGlvbnMvY3JlYXRpdmUtcHJvZmVzc2lvbmFscy1zb2x1dGlvbnMiIHRpdGxlPSJBbGwgeW91IG5lZWQgdG8gbWFrZSBncmVhdCB2aWRlby4iPkNyZWF0aXZlIFByb2Zlc3Npb25hbHM8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6c29sdXRpb25zfGtleXdvcmQ6c21hbGxfYnVzaW5lc3MiIGhyZWY9Ii8vdmltZW8uY29tL3NvbHV0aW9ucy9zbWFsbC1idXNpbmVzcy1zb2x1dGlvbnMiIHRpdGxlPSJDYXB0dXJlIHlvdXIgY3VzdG9tZXJz4oCZIGF0dGVudGlvbiB3aXRoIHZpZGVvLiI+U21hbGwgQnVzaW5lc3M8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6c29sdXRpb25zfGtleXdvcmQ6ZW50ZXJwcmlzZSIgaHJlZj0iLy92aW1lby5jb20vZW50ZXJwcmlzZSIgdGl0bGU9IkVudGVycHJpc2UiPkVudGVycHJpc2U8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6c29sdXRpb25zfGtleXdvcmQ6ZWR1Y2F0aW9uIiBocmVmPSIvL3ZpbWVvLmNvbS9zb2x1dGlvbnMvZWR1Y2F0aW9uLXNvbHV0aW9ucyIgdGl0bGU9IlNoYXJlIGtub3dsZWRnZSB3aXRoIHZpZGVvLiI+RWR1Y2F0aW9uPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOmZpdG5lc3MiIGhyZWY9Ii8vdmltZW8uY29tL3NvbHV0aW9ucy9maXRuZXNzLXNvbHV0aW9ucyIgdGl0bGU9IkdldCB5b3VyIGZpdG5lc3Mgc3R1ZGlvIG9ubGluZS4iPkZpdG5lc3M8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6c29sdXRpb25zfGtleXdvcmQ6ZmFpdGgiIGhyZWY9Ii8vdmltZW8uY29tL3NvbHV0aW9ucy9mYWl0aC1zb2x1dGlvbnMiIHRpdGxlPSJLZWVwIHlvdXIgY29tbXVuaXR5IGNvbm5lY3RlZC4iPkZhaXRoPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zIiBkYXRhLW1lbnUtaWQ9Imluc3BpcmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIG9uY2xpY2s9ImV2ZW50LnByZXZlbnREZWZhdWx0KCk7ZXZlbnQudGFyZ2V0LmJsdXIoKTsiIGNsYXNzPSJ0b3BuYXZfbWVudV9ub19saW5rIHRvcG5hdl9oYXNfZHJvcGRvd24gdG9wbmF2X2ljb25fY2hldnJvbl9hIiBocmVmPSIjIiB0aXRsZT0iV2F0Y2giIHJlbD0idG9nZ2xlIiByb2xlPSJidXR0b24iIGFyaWEtb3ducz0idG9wbmF2X2luc3BpcmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXYXRjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duIiByb2xlPSJtZW51IiBhcmlhLWhpZGRlbj0idHJ1ZSIgaWQ9InRvcG5hdl9pbnNwaXJhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OndhdGNofGtleXdvcmQ6d2F0Y2giIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3dhdGNoX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS93YXRjaCIgdGl0bGU9IkV4cGxvcmUiPkV4cGxvcmU8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6d2F0Y2h8a2V5d29yZDpzdGFmZl9waWNrcyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfd2F0Y2hfc3RhZmZfcGlja3NfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL2NoYW5uZWxzL3N0YWZmcGlja3MiIHRpdGxlPSJUaGUgYmVzdCB2aWRlb3Mgb24gVmltZW8sIGN1cmF0ZWQgZGFpbHkgYnkgb3VyIHRlYW0iPlN0YWZmIFBpY2tzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50Om1hbmFnZV92aWRlb3N8a2V5d29yZDp2aWRlb19zY2hvb2wiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2NyZWF0ZV92aWRlb19zY2hvb2xfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL3ZpZGVvc2Nob29sIiB0aXRsZT0iTGVhcm4gaG93IHRvIG1ha2UgYmV0dGVyIHZpZGVvcyI+VmlkZW8gU2Nob29sPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvbmF2PjwhLS0gLy50b3BuYXZfZGVza3RvcF9tZW51IC0tPgogICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0idG9wbmF2X21lbnVfc2VhcmNoX29tbmlzZWFyY2giIGNsYXNzPSJ0b3BuYXZfbWVudV9zZWFyY2giIGRhdGEtcXVlcnk9IiIgZGF0YS1wbGFjZWhvbGRlcj0iU2VhcmNoIHZpZGVvcywgcGVvcGxlLCBhbmQgbW9yZSI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wbmF2X21lbnVfcmlnaHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJyZWNvcmRfdGlwX3dyYXBwZXIiIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF92aWRlb19wb3BvdmVyIiBvbk1vdXNlZW50ZXI9InRyYWNrTmV3VmlkZW9Ecm9wZG93bkltcHJlc3Npb24oJycpIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9Im5ld192aWRlb19kcm9wZG93bl9idXR0b24iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfdmlkZW9fcG9wb3Zlcl9idXR0b24gaXJpc19idG4tLXByaW1hcnkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpuZXdfdmlkZW8iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmNsaWNrPSJoYW5kbGVOZXdWaWRlb0NsaWNrKCkiCiAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF92aWRlb19wb3BvdmVyX3NwYW5fd3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3IHZpZGVvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD0icmVjb3JkX2FuaW1hdGlvbl93cmFwcGVyIiBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfdmlkZW9fcG9wb3Zlcl9zcGFuX3ZhcmlhbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0cHgiIGhlaWdodD0iMjRweCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9Ik0xMiAxNS41YTEgMSAwIDAgMS0uNjctLjI2bC01LTQuNSAxLjM0LTEuNDhMMTIgMTMuMTVsNC4zMy0zLjkgMS4zNCAxLjQ5LTUgNC41YTEgMSAwIDAgMS0uNjcuMjZ6IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9IiNmZmZmZmYiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBpZD0ibmV3X3ZpZGVvX2Ryb3Bkb3duX3ZhcmlhbnQiIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duIHRvcG5hdl9kZXNrdG9wX3ZpZGVvX3BvcG92ZXJfZHJvcGRvd25fdmFyaWFudCIgcm9sZT0ibWVudSIgYXJpYS1oaWRkZW49InRydWUiIHN0eWxlPSJwYWRkaW5nOiB1bnNldDsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbV92YXJpYW50IiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIG9uY2xpY2s9IihmdW5jdGlvbihldmVudCkgeyBpZiAod2luZG93LmhhbmRsZVVwbG9hZEJ1dHRvbkNsaWNrKSB7IGhhbmRsZVVwbG9hZEJ1dHRvbkNsaWNrKGV2ZW50KTsgfX0pKGV2ZW50KSIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6bmV3X3ZpZGVvfGtleXdvcmQ6eydhY3Rpb24nOid1cGxvYWQnfXx0YXJnZXQ6L3VwbG9hZHx0eXBlOmNsaWNrIiBpZD0idG9wbmF2X2Rlc2t0b3BfdXBsb2FkX2J1dHRvbiIgaHJlZj0iLy92aW1lby5jb20vdXBsb2FkIiA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWxpZ25fdG9wbmF2X2Ryb3Bkb3duX2ljb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRvcG5hdl9kcm9wZG93bl9pY29ucyI+PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMjAiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPSJNMTggOC40OGE3LjE2IDcuMTYgMCAwIDAtMS44NC00Ljc2QTUuODEgNS44MSAwIDAgMCA2LjkyIDVhNS4yNCA1LjI0IDAgMCAwLTQuNjkgMy44NUE0LjkxIDQuOTEgMCAwIDAgMCAxM2E1LjEzIDUuMTMgMCAwIDAgNSA1aDEwYTUuMSA1LjEgMCAwIDAgNS00Ljk0IDUuODkgNS44OSAwIDAgMC0yLTQuNTh6TTE1IDE2aC00di0zLjU5bDEuMjkgMS4yOSAxLjQxLTEuNDEtMy43LTMuNy0zLjcxIDMuN0w3LjcgMTMuNyA5IDEyLjQxVjE2SDVhMy4xNiAzLjE2IDAgMCAxLTMtMyAyLjkxIDIuOTEgMCAwIDEgMS41Mi0yLjU4bC40LS4yLjA4LS40NEEzLjM4IDMuMzggMCAwIDEgNy41OSA3aC43bC4yNC0uNjZBMy42OSAzLjY5IDAgMCAxIDEyIDRhMy43MyAzLjczIDAgMCAxIDIuNzIgMS4xMkE1LjQ1IDUuNDUgMCAwIDEgMTYgOXYuNTRsLjQ1LjNBMy43OSAzLjc5IDAgMCAxIDE4IDEzLjA2IDMuMDkgMy4wOSAwIDAgMSAxNSAxNnoiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD0iIzFhMmUzYiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXBsb2FkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW1fdmFyaWFudCIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBvbmNsaWNrPSJoYW5kbGVDcmVhdGVWaWRlb0NsaWNrKGV2ZW50KSIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6bmV3X3ZpZGVvfGtleXdvcmQ6eydhY3Rpb24nOidjcmVhdGUnfXx0YXJnZXQ6L2NyZWF0ZS92aWRlby1tYWtlcnx0eXBlOmNsaWNrIiBpZD0idG9wbmF2X2Rlc2t0b3BfY3JlYXRlX3ZpZGVvX2J1dHRvbiIgaHJlZj0iLy92aW1lby5jb20vY3JlYXRlL3ZpZGVvLW1ha2VyIiA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWxpZ25fdG9wbmF2X2Ryb3Bkb3duX2ljb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRvcG5hdl9kcm9wZG93bl9pY29ucyI+PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMjAiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiPgogICAgICAgICAgICAgICAgICAgICAgICA8cGF0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZD0iTTMuMiAxNi44bDMuOC0xIDEwLTEwYy4yLS4yLjItLjUgMC0uN0wxNC45IDNjLS4yLS4yLS41LS4yLS43IDBsLTIuMSAyLjEgMi44IDIuOEwxMy44IDkgMTEgNi4yIDQuMiAxM2wtMSAzLjh6bTkuOS0xNC45Yy44LS44IDItLjggMi44IDBMMTguMSA0Yy44LjguOCAyIDAgMi44TDcuOCAxNy4ybC01LjYgMS41Yy0uNS4xLS45LS4yLS43LS43bDEuNC01LjdMMTMuMSAxLjl6IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD0iIzFhMmUzYiIKICAgICAgICAgICAgICAgICAgICAgICAgLz4KICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZSBhIHZpZGVvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBpZD0iY2FydF90b3BfbmF2IiBjbGFzcz0idG9wbmF2X2NhcnRfYnV0dG9uIj48L2Rpdj4KCiAgICAgICAgICAgIDwvZGl2PjwhLS0gLy50b3BuYXZfbWVudV9yaWdodCAtLT4KICAgICAgICAgICAgPC9kaXY+PCEtLSAvLnRvcG5hdl9kZXNrdG9wX3dyYXBwZXIgLS0+CjwvZGl2PgoKICAgIDxzY3JpcHQ+CiAgICAgICAgdmFyIGlzTW9iaWxlID0gL2lwaG9uZXxpcG9kfGFuZHJvaWR8d2Vib3N8YmxhY2tiZXJyeXx3aW5kb3dzIHBob25lL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkpOwoKICAgICAgICAvLyBETyBOT1QgUkVNT1ZFLiBUaGlzIGlzIGEgY2FsbGJhY2sgZm9yIHRoZSBsb2dpbiAmIGpvaW4gYnV0dG9ucyBpbiBUb3BOYXZCdWlsZGVyLgogICAgICAgIGZ1bmN0aW9uIGNvbXBsZXRlVXNlckxvZ2luKHJlc3BvbnNlKSB7CiAgICAgICAgICAgIGlmIChyZXNwb25zZSAmJiAhcmVzcG9uc2Uuc2lnbnVwKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gaGFuZGxlVXBsb2FkQnV0dG9uQ2xpY2soZXZlbnQpIHsKICAgICAgICAgICAgLy8gT3BlbnMgdGhlIGF1dGggbW9kYWwgZm9yIGxvZ2dlZCBvdXQgdXNlcnMKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICB3aW5kb3cudmltZW8KICAgICAgICAgICAgICAgJiYgd2luZG93LnZpbWVvLmNvbmZpZwogICAgICAgICAgICAgICAmJiB3aW5kb3cudmltZW8uTW9kYWwKICAgICAgICAgICAgICAgJiYgIXdpbmRvdy52aW1lby5jdXJfdXNlcgogICAgICAgICAgICApewogICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgIGlzTW9iaWxlID8gd2luZG93LmxvY2F0aW9uLmhyZWY9Ii91cGxvYWQiIDogdmltZW8uTW9kYWwuY3JlYXRlKHsKICAgICAgICAgICAgICAgICAgICBzaXplOiAneHNtYWxsJywKICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAnL2pvaW4/bW9kYWw9bmV3JnJlZGlyZWN0PS91cGxvYWQnLAogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgIDwvc2NyaXB0PgoKPHNjcmlwdD4KICAgIHZhciBzZXJ2aWNlRWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuc2VydmljZXNfd3JhcHBlcicpOwogICAgdmFyIGhpZGRlblNlcnZpY2VFbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5zZXJ2aWNlc193cmFwcGVyLmhpZGUnKTsKICAgIHZhciBjb3VudCA9IHNlcnZpY2VFbGVtZW50cy5sZW5ndGggLSBoaWRkZW5TZXJ2aWNlRWxlbWVudHMubGVuZ3RoOwogICAgaWYgKGNvdW50ID4gMikgewogICAgICAgIHZhciBzZXJ2aWNlQ29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnRvcG5hdl9kZXNrdG9wX3NvbHV0aW9ucy0tc2VydmljZXNfY29udGFpbmVyJyk7CiAgICAgICAgaWYgKHNlcnZpY2VDb250YWluZXIpIHsKICAgICAgICAgICAgc2VydmljZUNvbnRhaW5lci5zdHlsZS53aWR0aCA9ICc0NTBweCc7CiAgICAgICAgfQogICAgfQo8L3NjcmlwdD4KCjxzY3JpcHQ+CiAgICBmdW5jdGlvbiBoYW5kbGVOZXdWaWRlb0NsaWNrKCkgewogICAgICAgIGlmICh3aW5kb3cudmltZW8gJiYgd2luZG93LnZpbWVvLmN1cl91c2VyKSB7CiAgICAgICAgICAgIGlmICh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgIT09ICcvdXBsb2FkJykgewogICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL3VwbG9hZCc7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB3aW5kb3cudmltZW8uTW9kYWwuY3JlYXRlKHsgc2l6ZTogJ3hzbWFsbCcsIGNvbnRlbnQ6ICcvam9pbj9tb2RhbD1uZXcmcmVkaXJlY3Q9L3VwbG9hZCcgfSkKICAgICAgICAgICAgICAgIC50aGVuKGNvbXBsZXRlVXNlckxvZ2luKTsKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gaGFuZGxlQ3JlYXRlVmlkZW9DbGljayhlLCBpc1JlY29yZFNjcmVlbiA9IGZhbHNlKSB7CiAgICAgICAgaWYgKHdpbmRvdy52aW1lbyAmJiAhd2luZG93LnZpbWVvLmN1cl91c2VyKSB7CiAgICAgICAgICAgIGlmICghaXNSZWNvcmRTY3JlZW4pIHsKICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKCiAgICAgICAgICAgICAgICB3aW5kb3cudmltZW8uTW9kYWwuY3JlYXRlKHsKICAgICAgICAgICAgICAgICAgICBzaXplOiAneHNtYWxsJywKICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAnL2pvaW4/bW9kYWw9bmV3JnJlZGlyZWN0PS9jcmVhdGUvdmlkZW8tbWFrZXInCiAgICAgICAgICAgICAgICB9KS50aGVuKGNvbXBsZXRlVXNlckxvZ2luKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiB0cmFja05ld1ZpZGVvRHJvcGRvd25JbXByZXNzaW9uKHJlY29yZE9wdGlvbikgewogICAgICAgIGlmICh3aW5kb3cuX19mYSkgewogICAgICAgICAgICB3aW5kb3cuX19mYS5wdXNoKFsndHJhY2tFdmVudCcsIHsKICAgICAgICAgICAgICAgIHR5cGU6ICdpbXByZXNzaW9uJywKICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogJ3RvcF9uYXYnLAogICAgICAgICAgICAgICAgY29tcG9uZW50OiAnbmV3X3ZpZGVvJywKICAgICAgICAgICAgfV0pOwoKICAgICAgICAgICAgaWYgKHJlY29yZE9wdGlvbikgewogICAgICAgICAgICAgICAgd2luZG93Ll9fZmEucHVzaChbJ3RyYWNrRXZlbnQnLCB7CiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2ltcHJlc3Npb24nLAogICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogJ3RvcF9uYXYnLAogICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogJ3JlY29yZCcsCiAgICAgICAgICAgICAgICAgICAga2V5d29yZDogcmVjb3JkT3B0aW9uLAogICAgICAgICAgICAgICAgfV0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQo8L3NjcmlwdD4KCjxzY3JpcHQ+CiAgICAvKioKICAgICAqIFRoaXMgaXMgcGFydCBvZiBhbiBBQiBFeHBlcmltZW50CiAgICAgKiBFeHBlcmltZW50IGxpbms6IGh0dHBzOi8vdmltZW8uY29tL21vZHdvcmxkL2FibGluY29sbi81MjgKICAgICAqIEV4cGVyaW1lbnQgcGFyYW06IHNob3dfbXlfZHJhZnRzCiAgICAgKi8KICAgIHZhciBzaG93VmFyaWFudCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIgc2hvd015RHJhZnRzOwogICAgICAgIGlmICh3aW5kb3cuQUJMaW5jb2xuICYmIHdpbmRvdy5BQkxpbmNvbG4uZ2V0VGVzdCgnSlMuVG9wbmF2Lk15RHJhZnRzJykuZ2V0KCdzaG93X215X2RyYWZ0cycsICdjb250cm9sJykgPT09ICd2YXJpYW50JykgewogICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuanMtdG9wbmF2LW1hbmFnZS1kcmFmdHMnKS5jbGFzc0xpc3QucmVtb3ZlKCdoaWRlJyk7CiAgICAgICAgfQogICAgfTsKICAgIHNob3dWYXJpYW50KCk7Cjwvc2NyaXB0PgoKICAgIDxzY3JpcHQ+CiAgICAgICAgdmFyIGFycm93ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlY29yZF9hbmltYXRpb25fd3JhcHBlcicpOwogICAgICAgIHZhciBuZXdWaWRlb0J0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWNvcmRfdGlwX3dyYXBwZXInKTsKCiAgICAgICAgaWYgKGFycm93KSB7CiAgICAgICAgICAgIGFycm93LmNsYXNzTGlzdC5hZGQoJ25vX2FuaW1hdGlvbicpOwogICAgICAgIH0KCiAgICAgICAgdmFyIGlzSG92ZXJlZCA9IGZhbHNlOwoKICAgICAgICBpZiAobmV3VmlkZW9CdG4gJiYgZmFsc2UpIHsKICAgICAgICAgICAgbmV3VmlkZW9CdG4uYWRkRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaWYgKGlzSG92ZXJlZCkgcmV0dXJuOwoKICAgICAgICAgICAgICAgIGlzSG92ZXJlZCA9IHRydWU7CgogICAgICAgICAgICAgICAgaWYgKGFycm93KSB7CiAgICAgICAgICAgICAgICAgICAgYXJyb3cuY2xhc3NMaXN0LnJlbW92ZSgnbm9fYW5pbWF0aW9uJyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgc3RvcmVfcmVjb3JkX3RpcF9zZXR0aW5ncygxKTsKCiAgICAgICAgICAgIH0sIGZhbHNlKTsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHN0b3JlX3JlY29yZF90aXBfc2V0dGluZ3ModmFsdWUpIHsKICAgICAgICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwoKICAgICAgICAgICAgeGhyLm9wZW4oJ1BPU1QnLCAnL3NldHRpbmdzL25hdl9yZWNvcmRlcl90aXAnKTsKICAgICAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoJ1gtUmVxdWVzdGVkLVdpdGgnLCAnWE1MSHR0cFJlcXVlc3QnKTsKICAgICAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtdHlwZScsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKTsKICAgICAgICAgICAgeGhyLnNlbmQoJ3JlY29yZF9zY3JlZW5fdGlwX3N0YXRlPScgKyB2YWx1ZSArICcmdG9rZW49JyArIHZpbWVvLnhzcmZ0KTsKCiAgICAgICAgICAgIC8vIE5vdGhpbmcgdG8gaGFuZGxlLiBXZSBob3BlIGZvciB0aGUgYmVzdCBpbiB0aGlzIGNhc2UKICAgICAgICAgICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHt9OwogICAgICAgIH07CiAgICA8L3NjcmlwdD4KCgogICAgCjwhLS0gUmVzcG9uc2l2ZSBUb3AgTmF2IChFeHBsb3JlLCBMT0hQLCBXYXRjaCwgdGMpIC0tPgo8bmF2IGlkPSJ0b3BuYXZfbW9iaWxlIiBjbGFzcz0idG9wbmF2X21vYmlsZSAgICBuYXZfYmFyLS1saSIgcm9sZT0iYmFubmVyIj4KCiAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfbW9iaWxlX2JhciI+CiAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBkYXRhLWFjdGlvbj0ibWVudS5vcGVuIiBjbGFzcz0ibmF2YmFyX2hhbWJ1cmdlciBuYXZfYmFyX2ljb24gdG9wbmF2X21vYmlsZV9idXR0b24gdG9wbmF2X21vYmlsZV9wdWxsX2xlZnQganMtdG9wbmF2X21vYmlsZV9oZWFkZXJfbG9nbyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMzIgMzIiPgogICAgICAgICAgICAgICAgPHRpdGxlPk1lbnU8L3RpdGxlPgogICAgICAgICAgICAgICAgPHBhdGggaWQ9IlJlY3RhbmdsZS00IiBkPSJNNyw4SDI1YTEsMSwwLDAsMSwxLDFoMGExLDEsMCwwLDEtMSwxSDdBMSwxLDAsMCwxLDYsOUg2QTEsMSwwLDAsMSw3LDhaIiAvPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTcsMTVIMjVhMSwxLDAsMCwxLDEsMWgwYTEsMSwwLDAsMS0xLDFIN2ExLDEsMCwwLDEtMS0xSDZBMSwxLDAsMCwxLDcsMTVaIi8+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNywyMkgyNWExLDEsMCwwLDEsMSwxaDBhMSwxLDAsMCwxLTEsMUg3YTEsMSwwLDAsMS0xLTFINkExLDEsMCwwLDEsNywyMloiLz4KICAgICAgICAgICAgPC9zdmc+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfYWN0aW9uX2J1dHRvbnMiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iLy92aW1lby5jb20vc2VhcmNoIiBjbGFzcz0idG9wbmF2X21vYmlsZV9idXR0b24gdG9wbmF2X21vYmlsZV9wdWxsX3JpZ2h0IHRvcG5hdl9tb2JpbGVfaGVhZGVyX3NlYXJjaCI+CiAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ibmF2X2Jhcl9zZWFyY2hfaWNvbiBuYXZfYmFyX2ljb24iIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMyIDMyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRpdGxlPlNlYXJjaDwvdGl0bGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi43NCwyNS4zMmwtNC41My00LjUzYTEsMSwwLDAsMC0uMjEtLjE0QTksOSwwLDEsMCwyMC42NSwyMmExLDEsMCwwLDAsLjE0LjIxbDQuNTMsNC41M2ExLDEsMCwwLDAsMS40MS0xLjQxWk0xNSwyMmE3LDcsMCwxLDEsNy03QTcsNywwLDAsMSwxNSwyMloiLz4KICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJjYXJ0X3RvcF9uYXZfbW9iaWxlIiBjbGFzcz0idG9wbmF2X2NhcnRfYnV0dG9uIj48L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwhLS0gVmltZW8gTG9nbyAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2X2Jhcl90aXRsZSBqcy1uYXZfYmFyX3RpdGxlIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vdmltZW8uY29tIiBndG0tZGF0YS1jbGljaz0ibW9iaWxlX25hdl9ob21lX2xvZ29fY2xpY2siPgogICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCA0NDEgMTI0LjY4MiIgd2lkdGg9Ijg2cHgiIGhlaWdodD0iMjdweCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEyMC40ODEsMjcuMzI2YzUuNDYyLDAsMTAuMTg4LTEuOTEsMTQuMTc0LTUuNzI4YzMuNTQ3LTMuMzc5LDUuMzkyLTYuOTA2LDUuNTQtMTAuNTgzYzAuMTQzLTIuNDkyLTAuODE1LTQuOTUxLTIuODgtNy4zNzhDMTM1LjI0NCwxLjIxNywxMzIuNjYyLDAsMTI5LjU2MiwwYy01LjMyLDAtMTAuMTU1LDEuNzY3LTE0LjUxMSw1LjI4OGMtNC4zNTYsMy41MjctNi42MDgsNy4yMDQtNi43NSwxMS4wMjJDMTA4LjAwMiwyMy42NTYsMTEyLjA2NywyNy4zMjYsMTIwLjQ4MSwyNy4zMjZ6Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDM0LjA3OSw1MC4xNmMtNS4zMTktNi45MjUtMTMuMTQ1LTEwLjM5NS0yMy40NzUtMTAuMzk1Yy0xNi4wOTcsMC0yOS40NTUsNS44OTYtNDAuMDgzLDE3LjY4OGMtOS45MDIsMTAuNjE0LTE0LjQ3OCwyMi4yNjUtMTMuNzMzLDM0Ljk0NGMwLjA0OSwwLjkzMiwwLjEzMiwxLjg0LDAuMjI5LDIuNzM4Yy0wLjU1NCwwLjI0MS0xLjA5MywwLjQ4My0xLjY2MiwwLjcyNGMtMTIuNTU2LDUuNDExLTI0LjE0Nyw4LjExLTM0Ljc3NSw4LjExYy01LjMyLDAtOS4zMDctMS44MzktMTEuOTYtNS41MjFjMTQuMzE2LTIuMzU1LDI2LjIwNi03Ljg3NiwzNS42NjItMTYuNTY4YzguODU0LTcuOTU1LDEyLjk4OS0xNS42ODksMTIuNC0yMy4xOTdjLTAuODg3LTExLjc4LTguNTYyLTE3LjY3Ni0yMy4wMzQtMTcuNjc2Yy0xNS42NSwwLTI5LjIzNSw1LjkwOS00MC43NSwxNy43MTRjLTEwLjQ4NCwxMC43ODMtMTUuODA1LDIyLjE0OC0xNS45NDcsMzQuMTAzYy0wLjA0LDIuMDA1LDAuMDY2LDMuOTMyLDAuMyw1Ljc4OWMtMi40NzcsMS42MzItNC4zNTIsMi40NTYtNS42MTMsMi40NTZjLTIuODEsMC00LjU3Ni0wLjU4Mi01LjMxNC0xLjc2Yy0wLjczNy0xLjE3OC0xLjAzNS0zLjMwOC0wLjg4Ny02LjQwMWMwLTEuMTc4LDAuOTE5LTUuNjk1LDIuNzcxLTEzLjU2NWMxLjg0NS03Ljg3LDIuODQxLTEzLjg2NCwyLjk5LTE3Ljk4N2MwLjI5MS02LjAyNS0wLjg5NC0xMC42Ni0zLjU0Ny0xMy44OTZjLTMuMTAxLTMuOTc0LTguMTk0LTUuNjYzLTE1LjI4MS01LjA3NGMtNS45MDIsMC40NDctMTEuNTkyLDIuNjYtMTcuMDU0LDYuNjQ3Yy0zLjI0OSwyLjM2My02LjU2OSw1LjUzNC05Ljk2MSw5LjUyMWMtMS4xODUsMS4wMzYtMi4yOTEsMi0zLjMyNywyLjg4YzAuMTQzLTYuMDUxLTEuMDM2LTEwLjcwNS0zLjU0LTEzLjk1NGMtMy4xMDctMy45ODctOC4yNzItNS42ODMtMTUuNTA4LTUuMDk0Yy04LjQxNSwwLjczOC0xNi4wMiw0LjA2NS0yMi44MDksOS45NjdjLTIuOTU4LDIuNTExLTUuNTQsNS40NjktNy43NTMsOC44NjFjMC4yOTEtMS4zMjcsMC40NC0yLjczMSwwLjQ0LTQuMjA3YzAtNC41NzYtMS4xODUtOC42MDItMy41NDctMTIuMDcxcy01LjQ2Mi01LjA1NS05LjMwMS00Ljc1N2MtMi4yMTMsMC4xNDktNi40MiwzLjEwMS0xMi42MjEsOC44NTRjLTguNTY5LDcuOTc0LTEzLjIxNiwxMi4yNTktMTMuOTU0LDEyLjg0MWw1LjMxMyw1Ljk4YzQuMTM2LTIuOTg0LDYuNjQ3LTQuNDc5LDcuNTM0LTQuNDc5YzEuNjE4LDAsMi4yODUsMS4zMjcsMS45OTQsMy45NzVjLTAuMTQzLDMuODMxLTAuODIyLDkuMTY0LTIuMDM5LDE2LjAxMmMtMC43NTQsNC4yNDMtMS4yOTgsNy45MDQtMS42MzgsMTAuOTg4Yy0wLjA2NiwwLjA1NS0wLjEyOSwwLjEwOS0wLjE5NiwwLjE2NGMtNS4zMiw0LjM3NS05LjAwOSw2LjU1Ni0xMS4wNzQsNi41NTZjLTQuNzI1LDAtNy4wMTYtMy4xNTgtNi44NjctOS40ODhjMi4yMTMtMTMuODI0LDQuMjg1LTI1LjIyMiw2LjIwNy0zNC4xOTljMC41ODMtNS4yOTQtMC4yNjYtOS41OTItMi41NS0xMi45MDZjLTIuMjkxLTMuMzE0LTUuODctNC43NDQtMTAuNzM3LTQuMzA0Yy0zLjEwNywwLjI5OC03LjgzMiwzLjI0OS0xNC4xODEsOC44NmMtMi4yMDUsMi00LjQxLDMuOTk2LTYuNjE1LDUuOTkzYy0wLjQzNy0xMC40NDctNS4yMDQtMTUuODIyLTE0LjMyOS0xNi4wOWMtMTMuNjY5LTAuNDQtMjIuOTMxLDcuMjc1LTI3Ljc3OSwyMy4xNThjMi41MDQtMS4wNzQsNC45MzgtMS42MTgsNy4zMDEtMS42MThjNS4wMTYsMCw3LjIyOSwyLjgyMiw2LjY0LDguNDUzYy0wLjI5NywzLjQxMS0yLjUxMSw4LjM3NS02LjY0LDE0Ljg5OWMtNC4xMzYsNi41MjMtNy4yMzYsOS43ODYtOS4zMDEsOS43ODZjLTIuNjYsMC01LjA5NC01LjAyMy03LjMwNy0xNS4wODFjLTAuNzQ1LTIuOTUxLTIuMDcxLTEwLjQ5MS0zLjk4Ny0yMi42MTRjLTEuNzczLTExLjIzNi02LjQ5OS0xNi40ODUtMTQuMTc0LTE1Ljc0N2MtMy4yNDksMC4yOTgtOC4xMjMsMy4yNDktMTQuNjE0LDguODZDOS42NjksNTMuMzE4LDQuODY3LDU3LjU5NywwLDYxLjg3NWw0LjY0MSw1Ljk4YzQuNDItMy4wOTQsNy4wMDMtNC42NDcsNy43NDEtNC42NDdjMy4zODUsMCw2LjU1LDUuMzEzLDkuNTAxLDE1LjkyOWMyLjY1Myw5LjczMyw1LjMwNywxOS40NjgsNy45NjEsMjkuMjAyYzMuOTc0LDEwLjYyMSw4Ljg0MSwxNS45MjksMTQuNTg4LDE1LjkyOWM5LjI4MSwwLDIwLjYyNy04LjcxOSwzNC4wMzgtMjYuMTU0Qzg3Ljg5Miw4NS45ODcsOTMuOTksNzUuNzQsOTYuOCw2Ny4zNTRjMy43Mi0yLjc0OCw2LjAxOC00LjE0Niw2Ljg1My00LjE0NmMyLjY1MywwLDMuOTg3LDEuOTIyLDMuOTg3LDUuNzU0YzAsMC43MzgtMS40NDMsNi4yLTQuMzI0LDE2LjM4MWMtMi44OCwxMC4xODItNC4zOTUsMTcuNzA5LTQuNTM3LDIyLjU3NWMtMC4xNDksNC43MjYsMC45OTcsOC41NTcsMy40MywxMS41MDhjMi40MzQsMi45NTIsNS45NDEsNC40MjgsMTAuNTI0LDQuNDI4YzkuODksMCwxOS43NzktNC4yNzgsMjkuNjc1LTEyLjgzNWMwLjg4MS0wLjc3MiwxLjczOC0xLjU1NywyLjU3My0yLjM1MmMwLjc4MywzLjMxMiwyLjEyNCw2LjA0NSw0LjA3LDguMTVjNC4yNTksNC41NjksMTEuNDU2LDYuNzA2LDIxLjU5Miw2LjQwOGMtMS4zNTMtMy4yNDktMS44ODQtOS4wMDMtMS41ODYtMTcuMjc0YzAuNDQtOS4xNTIsMi44MDktMTcuOTQxLDcuMDk0LTI2LjM1NXM4LjI3OC0xMi42MjcsMTEuOTgtMTIuNjI3YzQuMjg1LDAsNi4yODUsMi43MzEsNS45ODcsOC4xOTNjLTAuMTQ5LDMuNjk2LTAuODc0LDcuOTAzLTIuMTc1LDEyLjYyOGMtMS4zMDcsNC43MjUtMi4wMzIsOS40NDktMi4xNzQsMTQuMTc0Yy0wLjI5OCw3LjUzNCwxLjM5MiwxMi45MTksNS4wODEsMTYuMTY4YzQuMTE2LDMuNjg5LDExLjMzNCw1LjM5MiwyMS42MzgsNS4wOTRjLTEuNTQxLTMuMzkyLTIuMTYyLTguMjY2LTEuODY0LTE0LjYyMWMwLjQ0LTkuMDAzLDMuNDgyLTE4LjMwNCw5LjExMy0yNy45MDJjNS4zMzMtOS4xNTEsOS45MjItMTMuNzMzLDEzLjc3Mi0xMy43MzNjMy41NiwwLDUuMjYzLDIuODA5LDUuMTEzLDguNDE0Yy0wLjE0OCwzLjY4OC0xLjA3NCw4Ljg1NC0yLjc3MSwxNS40OTRjLTEuNjk1LDYuNjQxLTIuNjIxLDEyLjMxNi0yLjc2NCwxNy4wNDFjLTAuMjk3LDEwLjYyOCw0LjM1LDE1LjkzNiwxMy45NTUsMTUuOTM2YzkuODg5LDAsMTkuNzc5LTQuMjc4LDI5LjY3NS0xMi44MzVjMC4xNjQtMC4xNDQsMC4zMTYtMC4yOTMsMC40NzktMC40MzhjMC4zNCwwLjU4NiwwLjY4OCwxLjE2OCwxLjA2OCwxLjczMmM1LjE2NSw3Ljk2NywxMy43MzQsMTEuOTU0LDI1LjY5NSwxMS45NTRjMTYuMDksMCwzMS45NjYtNC40OTIsNDcuNjE2LTEzLjQ4OGMxLjc1Ni0wLjk5LDMuNDIyLTEuOTc5LDUuMDE3LTIuOTdjMC45ODYsMS45OTEsMi4xMzgsMy44NjYsMy41MDIsNS41OTFjNi4wNTIsNy41MjEsMTQuOTEyLDExLjI4MSwyNi41NzUsMTEuMjgxYzE0LjAyNSwwLDI1Ljc2Ny00LjkzOCwzNS4yMTYtMTQuODE1YzkuNDQ5LTkuODc2LDE0LjQ2Ni0yMS41OTgsMTUuMDYxLTM1LjE2M0M0NDEuMzg3LDY0LjY4NCw0MzkuMTAyLDU2LjUwMyw0MzQuMDc5LDUwLjE2eiBNMzA1LjExOCw5MC4wMDNjLTAuMDg0LTEuOTA5LTAuMDg0LTIuODY3LDAtMi44NjdjMC4xNDMtNS41NzksMi41MDUtMTEuNDE3LDcuMDc0LTE3LjUxNHM5LjA2Mi05LjE0NiwxMy40ODgtOS4xNDZjMy4zOTIsMCw1LjAxLDEuOTg3LDQuODY3LDUuOTQ4Yy0wLjE0OSwyLjkzOC0yLjM2Miw2Ljc2NC02LjYzNCwxMS40NjJDMzE4LjYwNiw4My4zMjQsMzEyLjM0MSw4Ny4zNjIsMzA1LjExOCw5MC4wMDN6IE00MTUuOTE4LDczLjg2OGMtMC4yOTcsNy4xLTIuNDM0LDEzLjkwMi02LjQyLDIwLjQxM2MtNC43MjUsNy44NDUtMTAuNDE0LDExLjc2LTE3LjA1NSwxMS43NmMtMi45NTgsMC01LjI0OS0xLjYyNC02Ljg2Ny00Ljg4Yy0xLjQ3Ni0yLjgwOS0yLjE0Mi02LjA2NC0xLjk5My05Ljc2N2MwLjI5MS03LjU0LDIuNTA1LTE0LjY0LDYuNjQ3LTIxLjNjNC44NjYtOC4xMzYsMTEuMDY3LTEyLjIwNywxOC42MDEtMTIuMjA3YzIuMzU2LDAsNC4xNjgsMS42Nyw1LjQyNCw0Ljk5N1M0MTYuMDY3LDY5Ljg3NSw0MTUuOTE4LDczLjg2OHoiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9InRvcG5hdl9tb2JpbGVfbWVudSBqcy10b3BuYXZfbW9iaWxlX21lbnVfbWFpbiI+CiAgICAgICAgPGRpdiBjbGFzcz0idG9wbmF2X21vYmlsZV9iYXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGRhdGEtZ3RtLWNsaWNrPSJtb2JpbGVfbmF2X21lbnVfY2xvc2VfY2xpY2siIGNsYXNzPSJtZW51X2Nsb3NlIHB1bGxfbGVmdCBqcy10b3BuYXZfbW9iaWxlX2hlYWRlcl9jbG9zZSI+CiAgICAgICAgICAgICAgICA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIxMC40OXB4IgogICAgICAgICAgICAgICAgCSBoZWlnaHQ9IjEwLjQ5cHgiIHZpZXdCb3g9IjAgMCAxMC40OSAxMC40OSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMTAuNDkgMTAuNDk7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KICAgICAgICAgICAgICAgIDxnIGlkPSJjbG9zZV8xXyI+CiAgICAgICAgICAgICAgICAJPGc+CiAgICAgICAgICAgICAgICAJCTxnIGlkPSJHcm91cF8xXyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNi41MDAwMDAsIDYuNTAwMDAwKSI+CiAgICAgICAgICAgICAgICAJCQk8cGF0aCBpZD0iUmVjdGFuZ2xlLTRfMV8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOiNGRkZGRkY7IiBkPSJNMy42OS02LjIxTDMuNjktNi4yMWMwLjM5LDAuMzksMC4zOSwxLjAyLDAsMS40MWwtOC40OSw4LjQ5CiAgICAgICAgICAgICAgICAJCQkJYy0wLjM5LDAuMzktMS4wMiwwLjM5LTEuNDEsMGwwLDBjLTAuMzktMC4zOS0wLjM5LTEuMDIsMC0xLjQxbDguNDktOC40OUMyLjY3LTYuNiwzLjMtNi42LDMuNjktNi4yMXoiLz4KICAgICAgICAgICAgICAgIAkJCTxwYXRoIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOiNGRkZGRkY7IiBkPSJNLTYuMjEtNi4yMUwtNi4yMS02LjIxYzAuMzktMC4zOSwxLjAyLTAuMzksMS40MSwwbDguNDksOC40OWMwLjM5LDAuMzksMC4zOSwxLjAyLDAsMS40MWwwLDAKICAgICAgICAgICAgICAgIAkJCQljLTAuMzksMC4zOS0xLjAyLDAuMzktMS40MSwwbC04LjQ5LTguNDlDLTYuNi01LjE4LTYuNi01LjgyLTYuMjEtNi4yMXoiLz4KICAgICAgICAgICAgICAgIAkJPC9nPgogICAgICAgICAgICAgICAgCTwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICA8L2J1dHRvbj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24KICAgICAgICAgICAgICAgIGRhdGEtYWN0aW9uPSJtZW51LnNldHRpbmdzLm9wZW4iCiAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0ibW9iaWxlX25hdl9zZXR0aW5nc19jbGljayIKICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnNldHRpbmdzIgogICAgICAgICAgICAgICAgY2xhc3M9Im1lbnVfc2V0dGluZ3MgcHVsbF9yaWdodCBqcy10b3BuYXZfbW9iaWxlX2hlYWRlcl9zZXR0aW5ncyIKICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMTguODZweCIKICAgICAgICAgICAgICAgIAkgaGVpZ2h0PSIyMHB4IiB2aWV3Qm94PSIwIDAgMTguODYgMjAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDE4Ljg2IDIwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CiAgICAgICAgICAgICAgICA8ZyBpZD0iZ2Vhcl8xXyI+CiAgICAgICAgICAgICAgICAJPGc+CiAgICAgICAgICAgICAgICAJCTxnIGlkPSJJY29uXzFfIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1LjAwMDAwMCwgNS4wMDAwMDApIj4KICAgICAgICAgICAgICAgIAkJCTxnIGlkPSJHcm91cC0xMF8xXyI+CiAgICAgICAgICAgICAgICAJCQk8L2c+CiAgICAgICAgICAgICAgICAJCTwvZz4KICAgICAgICAgICAgICAgIAkJPHBhdGggaWQ9IkNvbWJpbmVkLVNoYXBlXzFfIiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyOyIgZD0iTTEyLDQuNThsLTAuNTctMC4yN1YxLjk5YzAtMC41NC0wLjQ1LTAuOTktMS0wLjk5aC0yYy0wLjU1LDAtMSwwLjQ1LTEsMC45OXYyLjMxCiAgICAgICAgICAgICAgICAJCQlMNi44Niw0LjU4Yy0wLjI5LDAuMTQtMC41NywwLjMtMC44NCwwLjQ4TDUuNSw1LjQyTDMuNDksNC4yNkMzLjAyLDMuOTksMi40MSw0LjE2LDIuMTQsNC42M2wtMSwxLjc0CiAgICAgICAgICAgICAgICAJCQlDMC44Niw2Ljg0LDEuMDIsNy40NiwxLjQ5LDcuNzNMMy41LDguODlMMy40NSw5LjUyQzMuNDQsOS42OCwzLjQzLDkuODQsMy40MywxMHMwLjAxLDAuMzIsMC4wMiwwLjQ4bDAuMDUsMC42M2wtMi4wMSwxLjE2CiAgICAgICAgICAgICAgICAJCQljLTAuNDcsMC4yNy0wLjYzLDAuODgtMC4zNiwxLjM2bDEsMS43NGMwLjI3LDAuNDgsMC44OSwwLjY0LDEuMzYsMC4zN2wyLjAxLTEuMTZsMC41MiwwLjM2YzAuMjcsMC4xOCwwLjU1LDAuMzUsMC44NCwwLjQ4CiAgICAgICAgICAgICAgICAJCQlsMC41NywwLjI3djIuMzFjMCwwLjU0LDAuNDUsMC45OSwxLDAuOTloMmMwLjU1LDAsMS0wLjQ1LDEtMC45OXYtMi4zMUwxMiwxNS40MmMwLjI5LTAuMTQsMC41Ny0wLjMsMC44NC0wLjQ4bDAuNTItMC4zNgogICAgICAgICAgICAgICAgCQkJbDIuMDEsMS4xNmMwLjQ3LDAuMjcsMS4wOCwwLjExLDEuMzYtMC4zN2wxLTEuNzRjMC4yNy0wLjQ4LDAuMTEtMS4wOS0wLjM2LTEuMzZsLTIuMDEtMS4xNmwwLjA1LTAuNjMKICAgICAgICAgICAgICAgIAkJCWMwLjAxLTAuMTYsMC4wMi0wLjMyLDAuMDItMC40OHMtMC4wMS0wLjMyLTAuMDItMC40OGwtMC4wNS0wLjYzbDIuMDEtMS4xNmMwLjQ3LTAuMjcsMC42My0wLjg4LDAuMzYtMS4zNmwtMS0xLjc0CiAgICAgICAgICAgICAgICAJCQljLTAuMjctMC40OC0wLjg5LTAuNjQtMS4zNi0wLjM3bC0yLjAxLDEuMTZsLTAuNTItMC4zNkMxMi41Nyw0Ljg4LDEyLjI5LDQuNzIsMTIsNC41OHoiLz4KICAgICAgICAgICAgICAgIAkJPGNpcmNsZSBpZD0iT3ZhbF8xXyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MjsiIGN4PSI5LjQzIiBjeT0iMTAiIHI9IjIiLz4KICAgICAgICAgICAgICAgIAk8L2c+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgPHVsIGlkPSJtZW51X2xpc3QiIGNsYXNzPSJtZW51X2xpc3RfbG9nZ2VkX291dCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtYnJlZXplLWlnbm9yZSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpqb2luIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9qb2luX2NsaWNrIiBpZD0ianMtam9pbi1saW5rIiBocmVmPSIvL3ZpbWVvLmNvbS9qb2luIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im1lbnVfaWNvbl9qb2luIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMTZweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAwIDE2IDIwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxNiAyMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJqb2luLWxvZy1pbl8xXyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC04XzFfIiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyOyIgY3g9IjgiIGN5PSI1IiByPSI0Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD0iUmVjdGFuZ2xlLTI1XzFfIiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyOyIgZD0iTTEsMTloMTR2LTNjMC0yLjIxLTEuNzktNC00LTRINWMtMi4yMSwwLTQsMS43OS00LDRWMTl6Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSm9pbiBvciBsb2cgaW4gICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgIDxhICBpZD0ianMtZmVhdHVyZXMtbGluayIgY2xhc3M9ImZlYXR1cmVzLWxhYmVsIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ibWVudV9pY29uX2hvc3QiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyMHB4IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIyMHB4IiB2aWV3Qm94PSIwIDAgMjAgMjAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDIwIDIwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9ImZlYXR1cmVzXzFfIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iR3JvdXAtMl8xXyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMi4wMDAwMDAsIDIuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9IlJlY3RhbmdsZS04XzFfIiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyOyIgZD0iTTEtMWgxMGMxLjEsMCwyLDAuOSwyLDJ2MTBjMCwxLjEtMC45LDItMiwySDFjLTEuMSwwLTItMC45LTItMlYxQy0xLTAuMS0wLjEtMSwxLTF6Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9IlBhdGgtNV8xXyIgc3R5bGU9ImZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I0ZGRkZGRjsiIGQ9Ik0zLjYsMy41MWMwLTAuNTUsMC4zOS0wLjc3LDAuODYtMC41bDQuMjgsMi41YzAuNDcsMC4yOCwwLjQ4LDAuNzMsMCwxLjAxTDQuNDYsOS4wOAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDMy45OCw5LjM2LDMuNiw5LjE1LDMuNiw4LjU5TDMuNiwzLjUxeiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJHcm91cF8xXyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMy4wMDAwMDAsIDMuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPSJQYWdlLTFfMV8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOiNGRkZGRkY7IiBkPSJNMTEsMTVjMi4yMSwwLDQtMS43OSw0LTRWMGMwLTEuMTEtMC45LTItMi0ydjEzYzAsMS4xLTAuOSwyLTIsMkgtMmMwLDEuMSwwLjg5LDIsMiwySDExeiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZlYXR1cmVzICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWJyZWV6ZS1pZ25vcmUgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6ZmVhdHVyZXN8a2V5d29yZDp2aWRlb19wbGF5ZXIiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2ZlYXR1cmVzX3ZpZGVvX3BsYXllciIgaHJlZj0iLy92aW1lby5jb20vZmVhdHVyZXMvdmlkZW8tcGxheWVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im1lbnVfaWNvbl91cGxvYWQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyMHB4IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxNnB4IiB2aWV3Qm94PSIwIDAgMjAgMTYiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDIwIDE2OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlkZW8gcGxheWVyICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWJyZWV6ZS1pZ25vcmUgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6ZmVhdHVyZXN8a2V5d29yZDpsaXZlX3N0cmVhbWluZyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfZmVhdHVyZXNfbGl2ZV9zdHJlYW1pbmciIGhyZWY9Ii8vdmltZW8uY29tL2ZlYXR1cmVzL2xpdmVzdHJlYW1pbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ibWVudV9pY29uX3VwbG9hZCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjIwcHgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjE2cHgiIHZpZXdCb3g9IjAgMCAyMCAxNiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMjAgMTY7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXZlIHN0cmVhbWluZyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnN0b2NrIiAiIGhyZWY9Ii8vdmltZW8uY29tL3N0b2NrIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im1lbnVfaWNvbl91cGxvYWQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyMHB4IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxNnB4IiB2aWV3Qm94PSIwIDAgMjAgMTYiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDIwIDE2OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvY2sgdmlkZW9zICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWJyZWV6ZS1pZ25vcmUgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6ZmVhdHVyZXN8a2V5d29yZDpwcml2YWN5IiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9mZWF0dXJlc19wcml2YWN5IiBocmVmPSIvL3ZpbWVvLmNvbS9mZWF0dXJlcy92aWRlby1wcml2YWN5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im1lbnVfaWNvbl91cGxvYWQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyMHB4IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxNnB4IiB2aWV3Qm94PSIwIDAgMjAgMTYiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDIwIDE2OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaXZhY3kgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtYnJlZXplLWlnbm9yZSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpmZWF0dXJlc3xrZXl3b3JkOmRpc3RyaWJ1dGlvbiIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfZmVhdHVyZXNfZGlzdHJpYnV0aW9uIiBocmVmPSIvL3ZpbWVvLmNvbS9mZWF0dXJlcy92aWRlby1tYXJrZXRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ibWVudV9pY29uX3VwbG9hZCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjIwcHgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjE2cHgiIHZpZXdCb3g9IjAgMCAyMCAxNiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMjAgMTY7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaXN0cmlidXRpb24gJiBNYXJrZXRpbmcgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtYnJlZXplLWlnbm9yZSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpmZWF0dXJlc3xrZXl3b3JkOmhvc3RpbmciIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2ZlYXR1cmVzX2hvc3RpbmciIGhyZWY9Ii8vdmltZW8uY29tL2ZlYXR1cmVzL29ubGluZS12aWRlby1ob3N0aW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im1lbnVfaWNvbl91cGxvYWQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyMHB4IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxNnB4IiB2aWV3Qm94PSIwIDAgMjAgMTYiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDIwIDE2OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSG9zdGluZyAmIE1hbmFnZW1lbnQgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtYnJlZXplLWlnbm9yZSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDppbnNwaXJhdGlvbnxrZXl3b3JkOndhdGNoIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9pbnNwaXJhdGlvbl93YXRjaCIgaWQ9ImpzLWluc3BpcmF0aW9uLWxpbmsiICBocmVmPSIvL3ZpbWVvLmNvbS93YXRjaCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJtZW51X2ljb25fd2F0Y2giIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyMHB4IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxNHB4IiB2aWV3Qm94PSIwIDAgMjAgMTQiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDIwIDE0OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9Imluc3BpcmF0aW9uXzFfIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iR3JvdXBfMV8iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMuMDAwMDAwLCA2LjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPSJPdmFsXzFfIiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyO3N0cm9rZS1saW5lam9pbjpyb3VuZDsiIGQ9Ik03LDdjMy4zMSwwLDYuMzEtMiw5LTZjLTIuNjktNC01LjY5LTYtOS02UzAuNjktMy0yLDFDMC42OSw1LDMuNjksNyw3LDd6Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0yXzFfIiBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDojRkZGRkZGOyIgY3g9IjciIGN5PSIxIiByPSIzIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGlyYXRpb24gICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtYnJlZXplLWlnbm9yZSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGtleXdvcmQ6dXBsb2FkIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl91cGxvYWRfY2xpY2siIGlkPSJqcy11cGxvYWQtbGluayIgaHJlZj0iLy92aW1lby5jb20vdXBsb2FkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im1lbnVfaWNvbl91cGxvYWQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyMHB4IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxNnB4IiB2aWV3Qm94PSIwIDAgMjAgMTYiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDIwIDE2OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InVwbG9hZF8xXyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEuMDAwMDAwLCAxLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9IkNvbWJpbmVkLVNoYXBlXzFfIiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyOyIgZD0iTTAsMTBjMCwyLjE3LDEuOTYsNCw0LDRoMTBjMi4wNCwwLDQtMS43Niw0LTMuOTRjMC0xLjc5LTAuOC0zLjI4LTEuOTktNC4wNwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEMxNi4wMSwxLjc5LDEzLjQ5LDAsMTEsMEM5LjA4LDAsNy4yNCwxLjE5LDYuNTksM0MzLjgyLDMuMDEsMi41Nyw0LjcxLDIuMDcsNi41MkMxLjA4LDcuMDIsMCw4LjI2LDAsMTB6Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD0iUmVjdGFuZ2xlXzFfIiB4PSI4IiB5PSI4IiBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDojRkZGRkZGOyIgd2lkdGg9IjIiIGhlaWdodD0iNiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBvbHlsaW5lIGlkPSJQYXRoLTEzXzFfIiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyOyIgcG9pbnRzPSI2LDEwIDksNyAxMiwxMCAgICAgICAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVcGxvYWQgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDp1cGdyYWRlIiBkYXRhLWd0bS1jbGljaz0ibW9iaWxlX25hdl91cGdyYWRlX2NsaWNrIiBpZD0gImpzLXVwZ3JhZGUtbGluayIgY2xhc3M9IiIgaHJlZj0iLy92aW1lby5jb20vdXBncmFkZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJtZW51X2ljb25fdXBncmFkZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMzIgMzIiIHdpZHRoPSIzMnB4IiBoZWlnaHQ9IjMycHgiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTI0LDdIMTVWOWg2LjU4TDcuMjksMjMuMjlsMS40MSwxLjQxTDIzLDEwLjQxVjE3aDJWOEExLDEsMCwwLDAsMjQsN1oiIGZpbGw9IiNmZmZmZmYiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVwZ3JhZGUgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgIDwvZGl2PgoKICAgICAgICA8c2VjdGlvbiBjbGFzcz0idG9wbmF2X21vYmlsZV9tZW51IHRvcG5hdl9tb2JpbGVfbWVudV9zZXR0aW5ncyBqcy10b3BuYXZfbW9iaWxlX21lbnVfc2V0dGluZ3MiPgogICAgICAgIDxkaXYgY2xhc3M9InRvcG5hdl9tb2JpbGVfYmFyIHN1Ym1lbnUiPgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX2J1dHRvbiB0b3BuYXZfbW9iaWxlX3B1bGxfbGVmdCBqcy10b3BuYXZfbW9iaWxlX2hlYWRlcl9zZXR0aW5zX2Nsb3NlIHRvcG5hdl9pY29uX21vYmlsZV9hcnJvd2xlZnRfYiI+IDwvYnV0dG9uPgogICAgICAgICAgICA8aDEgY2xhc3M9InRvcG5hdl9tb2JpbGVfaGVhZGVyX3RpdGxlIHN1Ym1lbnUiPk1vcmUgc3R1ZmY8L2gxPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8dWwgY2xhc3M9Im1lbnVfbGlzdF9zZXR0aW5nc19sb2dnZWRfb3V0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWFjdGlvbj0ibWVudS5jbG9zZSIgY2xhc3M9IiAiIGhyZWY9Ii8vdmltZW8uY29tL3Rlcm1zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlcm1zIG9mIFNlcnZpY2UgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWFjdGlvbj0ibWVudS5jbG9zZSIgY2xhc3M9IiAiIGhyZWY9Ii8vdmltZW8uY29tL3ByaXZhY3kiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpdmFjeSBQb2xpY3kgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWFjdGlvbj0ibWVudS5jbG9zZSIgY2xhc3M9IiAiIGhyZWY9Ii8vdmltZW8uY29tL2RtY2EiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0ICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSIgIiBocmVmPSIvL3ZpbWVvLmNvbS9jb29raWVfcG9saWN5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvb2tpZXMgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWFjdGlvbj0iZGVza3RvcCIgb25jbGljaz0idmltZW8ubW9iaWxlLmRlc2t0b3Bfc2hhcmVkLl9zMmRzKCk7IHJldHVybiBmYWxzZSIgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2t0b3Agc2l0ZSAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGxhbmd1YWdlIGhyZWY9IiMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IG9uY2hhbmdlPSJ2aW1lby5tb2JpbGUuZGVza3RvcF9zaGFyZWQuX3MybCh0aGlzKSIgdGl0bGU9IkNob29zZSBhIGRpZmZlcmVudCBsYW5ndWFnZSIgY2xhc3M9InRvcG5hdl9tb2JpbGVfbWVudV9zZXR0aW5nc19sYW5ndWFnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIGNsYXNzPSJzZWxlY3RlZCIgc2VsZWN0ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT0iZW4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9InNlbGVjdF9sYW5ndWFnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZ2xpc2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9ImVzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPSJzZWxlY3RfbGFuZ3VhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFc3Bhw7FvbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT0iZGUtREUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9InNlbGVjdF9sYW5ndWFnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERldXRzY2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9ImZyLUZSIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPSJzZWxlY3RfbGFuZ3VhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFuw6dhaXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9ImphLUpQIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPSJzZWxlY3RfbGFuZ3VhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDml6XmnKzoqp4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9InB0LUJSIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPSJzZWxlY3RfbGFuZ3VhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb3J0dWd1w6pzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSJrby1LUiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg7ZWc6rWt7Ja0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBjbGFzcz0iICIgaHJlZj0iLy92aW1lby5jb20vZmFxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBUSAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBjbGFzcz0iICIgaHJlZj0iLy92aW1lby5jb21oZWxwLnZpbWVvLmNvbS9oYyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBIZWxwICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KCgogICAgICAgIDxkaXYgY2xhc3M9InRvcG5hdl9tb2JpbGVfbWVudV9jb3B5cmlnaHQiPlRNICsgwqkgMjAyMCBWaW1lbywgSW5jLjwvZGl2PgogICAgPC9zZWN0aW9uPgoKCiAgICAgICAgPC9uYXY+Cgo8c2NyaXB0PgooZnVuY3Rpb24od2luZG93LCBkb2N1bWVudCl7CgogICAgLy8gR2xvYmFsIHZhbHVlcwogICAgd2luZG93LnZpbWVvID0gd2luZG93LnZpbWVvIHx8IHt9OwogICAgdmltZW8ubW9iaWxlID0gdmltZW8ubW9iaWxlIHx8IHt9OwogICAgVmltZW8gPSB2aW1lby5tb2JpbGUgfHwge307CiAgICBWaW1lby5kZXNrdG9wX3NoYXJlZCA9IFZpbWVvLmRlc2t0b3Bfc2hhcmVkIHx8IHt9OwoKICAgIC8vIERFU0tUT1AgSEFORExFUlMKCiAgICB2YXIgZGVza3RvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b3BuYXZfZGVza3RvcCcpOwoKICAgIC8vIFByZXZlbnQgdG91Y2ggZGV2aWNlIHRvIGhpZ3RsaWdodCB0aGUgYXJlYSB0YXBwZWQKICAgIGRlc2t0b3AuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIGZ1bmN0aW9uKGUpewogICAgICAgIC8vIFRha2UgaW50byBjb25zaWRlcmF0aW9uIGF2YXRhciBpbWcKICAgICAgICB2YXIgdGFyZ2V0ID0gKGUudGFyZ2V0LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2ltZycpID8gZS50YXJnZXQucGFyZW50Tm9kZSA6IGUudGFyZ2V0OwoKICAgICAgICBpZiAodGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygndG9wbmF2X2hhc19kcm9wZG93bicpKSB7CiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICB9CiAgICB9LCBmYWxzZSk7CgogICAgLy8gQWRkIGxhc3RfcGFnZSBjb29raWUKICAgIHZhciBsaXN0ZW4gPSAnb250b3VjaHN0YXJ0JyBpbiB3aW5kb3cgPyAndG91Y2hzdGFydCcgOiB3aW5kb3cuUG9pbnRlckV2ZW50ID8gJ3BvaW50ZXJkb3duJyA6IHdpbmRvdy5NU1BvaW50ZXJFdmVudCA/ICdNU1BvaW50ZXJEb3duJyA6ICdjbGljayc7CiAgICBkZXNrdG9wLmFkZEV2ZW50TGlzdGVuZXIobGlzdGVuLCBmdW5jdGlvbihlKXsKICAgICAgICBpZiAoZS50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdqcy10b3BuYXZfbWVudV9hdXRoJykpIHsKICAgICAgICAgICAgZG9jdW1lbnQuY29va2llID0gJ2xhc3RfcGFnZT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkgKyAnO3BhdGg9XCcvXCc7bWF4LWFnZT0xODAwOyc7CiAgICAgICAgfQogICAgfSwgZmFsc2UpOwoKICAgIC8vIE1PQklMRSBIQU5ETEVSUwoKICAgIC8vIFRyaWdnZXIgaU9TIFVwbG9hZCBmbG93CiAgICBWaW1lby5kZXNrdG9wX3NoYXJlZC5fdXBsb2FkID0gZnVuY3Rpb24oZSkgewogICAgICAgIC8vIHNob3cgaVR1bmVzIG9ubHkgaWYgd2UgYXJlIGluIGlPUyB3b3JsZAogICAgICAgIGlmICgvaVBhZHxpUGhvbmV8aVBvZC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSl7CiAgICAgICAgICAgIHZhciBkZWVwbGluayA9ICd2aW1lbzovL2FwcC52aW1lby5jb20vdXBsb2FkP3JlZj1tb2JpbGV3ZWInLAogICAgICAgICAgICAgICAgZmFsbGJhY2sgPSAnL3VwbG9hZCcsCiAgICAgICAgICAgICAgICB3ZWJraXRIaWRkZW5DYWxsYmFjaywKICAgICAgICAgICAgICAgIGhpdENhbGxiYWNrOwoKICAgICAgICAgICAgLy8gQ2FsbGJhY2tzCiAgICAgICAgICAgIHdlYmtpdEhpZGRlbkNhbGxiYWNrID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgdXNlciBpcyBzdGlsbCBoZXJlIG9wZW4gdGhlIHVybCBwYWdlLgogICAgICAgICAgICAgICAgaWYgKCFkb2N1bWVudC53ZWJraXRIaWRkZW4pIHsKICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSBmYWxsYmFjazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIC8vIFRyeSB0byBvcGVuIHRoZSBWaW1lbyBBcHAKICAgICAgICAgICAgaGl0Q2FsbGJhY2sgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9IGRlZXBsaW5rOwogICAgICAgICAgICAgICAgc2V0VGltZW91dCh3ZWJraXRIaWRkZW5DYWxsYmFjaywgMjUpOwogICAgICAgICAgICB9OwoKICAgICAgICAgICAgaGl0Q2FsbGJhY2soKTsKCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9IGUuaHJlZjsKCiAgICB9CgoKLy8gQUZURVIgTU9CSUxFIE5BViBURVNUIFJFQ09OQ0lMRSBXSVRIIFRIRSBgbW9iaWxlX21lbnVfc2NyaXB0LnBodG1sYAovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAvLyBTd2l0Y2ggdG8gZGVza3RvcCBzaXRlCiAgICBWaW1lby5kZXNrdG9wX3NoYXJlZC5fczJkcyA9IGZ1bmN0aW9uKCkgewogICAgICAgIGRvY3VtZW50LmNvb2tpZT0nb3B0X291dF9tb2JpbGU9MTtleHBpcmVzPUZyaSwgMzEgRGVjIDk5OTkgMjM6NTk6NTkgR01UO2RvbWFpbj0nICsgdmltZW8uZG9tYWluOwogICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTsKICAgIH07CgogICAgLy8gU3dpdGNoIHRvIGxhbmd1YWdlCiAgICBWaW1lby5kZXNrdG9wX3NoYXJlZC5fczJsID0gZnVuY3Rpb24oc2VsKSB7CiAgICAgICAgdmFyIGxhbmcgPSBzZWwudmFsdWUsCiAgICAgICAgICAgIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwoKICAgICAgICB4aHIub3BlbignUE9TVCcsICcvc2V0dGluZ3MvbG9jYWxlJyk7CiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoJ1gtUmVxdWVzdGVkLVdpdGgnLCAnWE1MSHR0cFJlcXVlc3QnKTsKICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcignQ29udGVudC10eXBlJywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpOwogICAgICAgIHhoci5zZW5kKCdsb2NhbGU9JyArIGxhbmcgKyAnJnRva2VuPScgKyB2aW1lby54c3JmdCk7CiAgICAgICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uIHBvc3QoKSB7CiAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzID09PSAyMDApIHsKICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTsKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICB9OwoKICAgIHZhciBtb2JpbGVNZW51RWxlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLXRvcG5hdl9tb2JpbGVfaGVhZGVyX2xvZ28nKTsKICAgIGlmIChtb2JpbGVNZW51RWxlKSB7CiAgICAgICAgbW9iaWxlTWVudUVsZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKCiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgLy8gT3BlbiBNZW51CiAgICAgICAgICAgIHZhciBtb2JpbGVfbWVudV9tYWluID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLXRvcG5hdl9tb2JpbGVfbWVudV9tYWluJyk7CiAgICAgICAgICAgIG1vYmlsZV9tZW51X21haW4uc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CgogICAgICAgICAgICAvLyBDbG9zZSBNZW51CiAgICAgICAgICAgIHZhciBtb2JpbGVfaGVhZGVyX2Nsb3NlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLXRvcG5hdl9tb2JpbGVfaGVhZGVyX2Nsb3NlJyk7CiAgICAgICAgICAgIG1vYmlsZV9oZWFkZXJfY2xvc2UuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgbW9iaWxlX21lbnVfbWFpbi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIC8vIFRvZ2dsZSBTZXR0aW5ncwogICAgICAgICAgICB2YXIgbW9iaWxlX21lbnVfc2V0dGluZ3MgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuanMtdG9wbmF2X21vYmlsZV9tZW51X3NldHRpbmdzJyk7CiAgICAgICAgICAgIHZhciB0b3BuYXYyMDE1X21vYmlsZV9oZWFkZXJfc2V0dGluZ3MgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuanMtdG9wbmF2X21vYmlsZV9oZWFkZXJfc2V0dGluZ3MnKTsKICAgICAgICAgICAgdG9wbmF2MjAxNV9tb2JpbGVfaGVhZGVyX3NldHRpbmdzLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgIG1vYmlsZV9tZW51X3NldHRpbmdzLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwogICAgICAgICAgICAgICAgbW9iaWxlX21lbnVfbWFpbi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICAgICAgdmFyIHRvcG5hdjIwMTVfbW9iaWxlX2hlYWRlcl9zZXR0aW5nc19jbG9zZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5qcy10b3BuYXZfbW9iaWxlX2hlYWRlcl9zZXR0aW5zX2Nsb3NlJyk7CiAgICAgICAgICAgICAgICB0b3BuYXYyMDE1X21vYmlsZV9oZWFkZXJfc2V0dGluZ3NfY2xvc2UuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgbW9iaWxlX21lbnVfc2V0dGluZ3Muc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgICAgICAgICAgICBtb2JpbGVfbWVudV9tYWluLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICB9LCBmYWxzZSk7CiAgICB9OwoKICAgIHZhciBtb2JpbGVBbGJ1bXNFbGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuanMtdG9wbmF2X21vYmlsZV9oZWFkZXJfYWxidW1zJyk7CiAgICBpZiAobW9iaWxlQWxidW1zRWxlKSB7CiAgICAgICAgbW9iaWxlQWxidW1zRWxlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIHZhciBtb2JpbGVfbWVudV9hbGJ1bXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuanMtdG9wbmF2X21vYmlsZV9hbGJ1bV9saXN0Jyk7CiAgICAgICAgICAgIG1vYmlsZV9tZW51X2FsYnVtcy5jbGFzc0xpc3QuYWRkKCdvcGVuJyk7CgogICAgICAgICAgICAvLyBDbG9zZQogICAgICAgICAgICB2YXIgbW9iaWxlX2FsYnVtc19jbG9zZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5qcy10b3BuYXZfbW9iaWxlX2FsYnVtX2xpc3RfY2xvc2UnKTsKICAgICAgICAgICAgaWYgKG1vYmlsZV9hbGJ1bXNfY2xvc2UpIHsKICAgICAgICAgICAgICAgIG1vYmlsZV9hbGJ1bXNfY2xvc2UuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgbW9iaWxlX21lbnVfYWxidW1zLmNsYXNzTGlzdC5yZW1vdmUoJ29wZW4nKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgfSwgZmFsc2UpOwogICAgfTsKCgoKLy8gXl5eXl5eXl5eXl5eXl5eXl5eXl4KLy8gQUZURVIgTU9CSUxFIE5BViBURVNUIFJFQ09OQ0lMRSBXSVRIIFRIRSBgbW9iaWxlX21lbnVfc2NyaXB0LnBodG1sYAovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgogICAgLy8gVVNFUiBNRVNTQUdFCgogICAgLy8gU2hvdyBub3RpZmljYXRpb24gaWYgaXQgaXMgdGhlIGNhc2UKICAgIC8vIFdlIHdyYXAgdGhpcyBpbiBhIHNldFRpbWVvdXQgc2luY2UgdGhlIG5vdGlmaWNhdGlvbnMgc2hvdWxkCiAgICAvLyBoYXZlIGEgbG93ZXIgcHJpb3JpdHkgaW4gdGVybXMgb2YgdmlzdWFsIGNvbXBhcmVkIHRvIG90aGVyCiAgICAvLyBpdGVtcyBvbiB0aGUgcGFnZS4KICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKICAgICAgICAgLy8gRE9NIEVsZW1lbnRzCiAgICAgICAgdmFyIGF2YXRhciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b3BuYXZfbWVudV9hdmF0YXInKTsKICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBhdmF0YXIgdGhlbiBzdG9wIGl0CiAgICAgICAgaWYgKCFhdmF0YXIpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgdmFyIGJ1YmJsZSA9IGF2YXRhci5xdWVyeVNlbGVjdG9yKCcudG9wbmF2X21lbnVfYXZhdGFyX2J1YmJsZScpOwogICAgICAgIHZhciBkcm9wZG93biA9IGF2YXRhci5xdWVyeVNlbGVjdG9yKCcjdG9wbmF2X3VzZXJfZHJvcGRvd24nKTsKICAgICAgICAvL3ZhciBtZXNzYWdlID0gYXZhdGFyLnF1ZXJ5U2VsZWN0b3IoJy50b3BuYXZfdXNlcl9tZW51X21lc3NhZ2UnKTsKICAgICAgICAvL3ZhciBjbG9zZSA9IGF2YXRhci5xdWVyeVNlbGVjdG9yKCcudG9wbmF2X3VzZXJfbWVudV9tZXNzYWdlX2Nsb3NlJyk7CiAgICAgICAgdmFyIG9uX2hvdmVyID0gZmFsc2U7CgogICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGJ1YmJsZSB0aGVuIHN0b3AgaXQKICAgICAgICBpZiAoYnViYmxlKSB7CiAgICAgICAgICAgIGJ1YmJsZS5jbGFzc0xpc3QuYWRkKCdvbicpOwogICAgICAgIH0KCiAgICAgICAgLy8gQW5kIHdlIGF0dGFjaCBoaWRlIHRoZSBidWJibGUKICAgICAgICBhdmF0YXIuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdmVyJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmIChvbl9ob3ZlcikgcmV0dXJuOwoKICAgICAgICAgICAgb25faG92ZXIgPSB0cnVlOwoKICAgICAgICAgICAgaWYgKGJ1YmJsZSkgewogICAgICAgICAgICAgICAgYnViYmxlLmNsYXNzTGlzdC5yZW1vdmUoJ29uJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIFNhdmUgcmVtb3ZlZCBzdGF0ZSBbMSBtZWFucyB0aGUgdXNlciBvcGVuIHRoZSBkcm9wZG93bl0KICAgICAgICAgICAgc3RvcmVfdXNlcl9tZXNzYWdlX3NldHRpbmdzKDEpOwoKICAgICAgICB9LCBmYWxzZSk7CgogICAgICAgIC8vIFN0b3JlIHN0YXR1cyBvZiB1c2VyIG5hdiBtZXNzYWdlIChidWJibGUgY2xvc2VkIFsxXSwgbWVzc2FnZSBoaWRkZW4gWzJdKQogICAgICAgIGZ1bmN0aW9uIHN0b3JlX3VzZXJfbWVzc2FnZV9zZXR0aW5ncyh2YWx1ZSkgewogICAgICAgICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CgogICAgICAgICAgICB4aHIub3BlbignUE9TVCcsICcvc2V0dGluZ3MvbmF2Jyk7CiAgICAgICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdYLVJlcXVlc3RlZC1XaXRoJywgJ1hNTEh0dHBSZXF1ZXN0Jyk7CiAgICAgICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdDb250ZW50LXR5cGUnLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyk7CiAgICAgICAgICAgIHhoci5zZW5kKCdtZXNzYWdlX3N0YXRlPScgKyB2YWx1ZSArICcmdG9rZW49JyArIHZpbWVvLnhzcmZ0KTsKCiAgICAgICAgICAgIC8vIE5vdGhpbmcgdG8gaGFuZGxlLiBXZSBob3BlIGZvciB0aGUgYmVzdCBpbiB0aGlzIGNhc2UKICAgICAgICAgICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHt9OwogICAgICAgIH07CgogICAgfSwgMTAwMCk7Cn0pKHdpbmRvdywgZG9jdW1lbnQpOwo8L3NjcmlwdD4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3cmFwX2NvbnRlbnQgdmFyaWFudC12MiI+CiAgICAgICAgICAgICAgICAKICAgIAogICAgCiAgICAgICAgCjxkaXYgY2xhc3M9ImFwcF9iYW5uZXJfY29udGFpbmVyIj4KCiAgICA8ZGl2IGNsYXNzPSJhcHBfYmFubmVyIGhpZGUganMtYXBwX2Jhbm5lciBqcy1kZWVwbGluay1icmFuY2giPgoKICAgICAgICA8YnV0dG9uIGNsYXNzPSJhcHBfYmFubmVyX2Nsb3NlIGpzLWFwcF9iYW5uZXJfY2xvc2UiPiZ0aW1lczs8L2J1dHRvbj4KCiAgICAgICAgPGRpdiBjbGFzcz0iYXBwX2Jhbm5lcl9pY29uX3dyYXBwZXIiPgogICAgICAgICAgICA8c3ZnIGNsYXNzPSJhcHBfYmFubmVyX2ljb24iIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0cHgiIGhlaWdodD0iMjRweCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjQgNi42NDNDMjQgMTEuMjg2IDE1IDIyIDEwLjg3NSAyMiA2IDIyIDYgNy43MTQgMy4wMTMgNy43MTRjLS4zODggMC0xLjg4MyAxLjA3LTEuODgzIDEuMDdMMCA3LjM1OHM1LjI1LTUgNy41LTVjNC41IDAgMyAxMi41IDUuNjI1IDEyLjUgMS41IDAgNi43NS03Ljg1NyAyLjI1LTcuODU3LS43NSAwLTEuNS4zNTctMS41LjM1N0MxNSAzLjc4NyAxNy4yNSAyIDIwLjYyNSAyIDIyLjg3NSAyIDI0IDMuNzg2IDI0IDYuNjQzeiIvPjwvc3ZnPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJhcHBfYmFubmVyX2N0YSI+CiAgICAgICAgICAgIFdhdGNoIGluIG91ciBhcHAgICAgICAgIDwvZGl2PgoKICAgICAgICA8YQogICAgICAgICAgICBjbGFzcz0iYXBwX2Jhbm5lcl9idXR0b24ganMtYXBwX2Jhbm5lcl9vcGVuX2FwcCIKICAgICAgICAgICAgZGF0YS1kZWVwLWxpbms9InZpZGVvcy85ODYwNTM4MiIgICAgICAgICAgICBkYXRhLXNvdXJjZS1jb250ZXh0PSJjbGlwIiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iYXBwX2Jhbm5lcl9idXR0b25fdGV4dCI+T3BlbiBpbiBhcHA8L3NwYW4+CiAgICAgICAgPC9hPgoKICAgIDwvZGl2PgoKPC9kaXY+CgogICAgICAgIAogICAgICAgIAoKPHNjcmlwdD4KICAgIHdpbmRvdy52aW1lbyA9IHdpbmRvdy52aW1lbyB8fCB7fTsKCiAgICAKICAgIHdpbmRvdy52aW1lby5jbGlwX3BhZ2VfY29uZmlnID0geyJjbGlwIjp7ImlkIjo5ODYwNTM4MiwidGl0bGUiOiJEZWFmaGVhdmVuIC0gVGhlIFBlY2FuIFRyZWUgKExpdmUpIiwiZGVzY3JpcHRpb24iOiI8cCBjbGFzcz1cImZpcnN0XCI+VGhpcyB2aWRlbyB0YWtlbiBsaXZlIGZyb20gRGVhZmhlYXZlbiBsaXZlIGluIEpha2FydGEgb24gTWF5IDh0aCAyMDE0IGF0IFRoZSBCYXNlbWVudCBDYWZlLCBLZW1hbmcgUmF5YSwgSmFrYXJ0YS48XC9wPlxuPHA+RGVhZmhlYXZlbiBpcyBhbiBBbWVyaWNhbiBwb3N0LWJsYWNrIG1ldGFsIGJhbmQgdGhhdCBmb3JtZWQgaW4gMjAxMCBpbiBTYW4gRnJhbmNpc2NvLCBDYWxpZm9ybmlhLCBVbml0ZWQgU3RhdGVzLiBUaGUgZ3JvdXAgYmVnYW4gYXMgYSB0d28tcGllY2Ugd2l0aCBHZW9yZ2UgQ2xhcmtlIGFuZCBLZXJyeSBNY0NveSB3aG8gcmVjb3JkZWQgYW5kIHNlbGYtcmVsZWFzZWQgYSBkZW1vIGFsYnVtIHRvZ2V0aGVyLiBBZnRlciBhIHdhcm0gcmVjZXB0aW9uLCBEZWFmaGVhdmVuIHJlY3J1aXRlZCB0aHJlZSBuZXcgbWVtYmVycyBhbmQgYmVnYW4gdG8gdG91ci4gQmVmb3JlIHRoZSBjbG9zZSBvZiAyMDEwLCB0aGUgYmFuZCBzaWduZWQgdG8gRGVhdGh3aXNoIEluYy4gYW5kIGxhdGVyIHJlbGVhc2VkIHRoZWlyIGRlYnV0IGFsYnVtIFJvYWRzIHRvIEp1ZGFoIGluIEFwcmlsIDIwMTEuIFRoZSBmb2xsb3ctdXAgYWxidW0sIFN1bmJhdGhlciwgd2FzIHJlbGVhc2VkIG9uIEp1bmUgMTEsIDIwMTMuIEFmdGVyIGFub3RoZXIgbGluZXVwIGNoYW5nZSwgdGhlIGJhbmQgdG91cmVkIGZvciB0aGUgYWxidW0gZXh0ZW5zaXZlbHkgYW5kIGFyZSBzdGlsbCBvbiBhIG1hc3NpdmUgaW50ZXJuYXRpb25hbCB0b3VyLjxcL3A+XG48cD5EZWFmaGVhdmVuIGZvcm1lZCBpbiBGZWJydWFyeSAyMDEwIGluIFNhbiBGcmFuY2lzY28gd2l0aCB2b2NhbGlzdCBHZW9yZ2UgQ2xhcmtlIGFuZCBndWl0YXJpc3QgS2VycnkgTWNDb3ksIHdobyBwcmV2aW91c2x5IHBlcmZvcm1lZCBpbiBhIGdyaW5kY29yZSBiYW5kIHRvZ2V0aGVyLiBDbGFya2UgaXNuJiMwMzk7dCBzdXJlIGhvdyBoZSBhcnJpdmVkIG9uIHRoZSBuYW1lIERlYWZoZWF2ZW4sIHRob3VnaCBoZSBpcyBhd2FyZSBvZiBpdHMgYXBwZWFyYW5jZSBpbiBXaWxsaWFtIFNoYWtlc3BlYXJlJiMwMzk7cyBTb25uZXQgMjkuIFRoZSB0d28gd29yZHMgJiMwMzk7ZGVhZiYjMDM5OyBhbmQgJiMwMzk7aGVhdmVuJiMwMzk7IHdlcmUgY29tYmluZWQgYXMgYW4gaG9tYWdlIHRvIFNsb3dkaXZlLjxcL3A+XG48cD5DbGFya2UgYW5kIE1jQ295IHJlY29yZGVkIHRoZSBEZW1vIGFsYnVtIGluIEFwcmlsIDIwMTAgYXQgQXRvbWljIEdhcmRlbiBTdHVkaW9zLCB3aGljaCB3YXMgcmVsZWFzZWQgYm90aCBvbiBjYXNzZXR0ZSB0YXBlIGluIGxpbWl0ZWQgcXVhbnRpdGllcyBhbmQgZGlnaXRhbGx5LiBUaGUgdW50aXRsZWQgZGVtbyBmZWF0dXJlZCBmb3VyIHNvbmdzIHRoYXQgY29tYmluZWQgdHJhZGl0aW9uYWwgc2NyZWFtbyB3aXRoIGJsYWNrIG1ldGFsIGFuZCBwb3N0LXJvY2suIE9yaWdpbmFsbHksIERlYWZoZWF2ZW4gZGlkbiYjMDM5O3QgaW50ZW5kIHRvIHJlbGVhc2UgdGhlIG1hdGVyaWFsLCBidXQgdGhleSBsYXRlciBzZW50IGl0IG91dCB0byBhIGZldyBvZiB0aGVpciBmYXZvcml0ZSBibG9ncy48XC9wPlxuPHA+QWZ0ZXIgdGhlIGRlbW8gaGFkIGJlZW4gcG9zaXRpdmVseSByZWNlaXZlZCwgQ2xhcmtlIGFuZCBNY0NveSByZWNydWl0ZWQgdGhyZWUgYWRkaXRpb25hbCBtdXNpY2lhbnMgLSBiYXNzaXN0IERlcmVrIFByaW5lLCBndWl0YXJpc3QgTmljayBCYXNzZXR0IG9mIHRoZSBzaG9lZ2F6ZSBiYW5kcyBXaGlyciAoZm9ybWVybHkgV2hpcmwpIGFuZCBOb3RoaW5nLCBhbmQgZHJ1bW1lciBUcmV2b3IgRGVzY2hyeXZlciwgd2hvIHJlc3BvbmRlZCB0byBhbiBhZCBvbiBDcmFpZ3NsaXN0IC0gdG8gZm9ybSBhIGZpdmUtcGllY2UgZ3JvdXAsIGFuZCBzdGFydGVkIHBsYXlpbmcgdGhlaXIgZmlyc3Qgc2hvd3MgaW4gSnVseSAyMDEwLjxcL3A+XG48cD5GaWxtZWQgYnkgbWVnYWxhdW1hbjxicj5cbnNvdW5kIHJlY29yZGVkIGJ5IFpvb20gSDRuPGJyPlxuRWRpdGVkIGJ5IG1lZ2FsYXVtYW48XC9wPiIsInVwbG9hZGVkX29uIjoiMjAxNC0wNi0xOCAyMjozMzo0MSIsInVwbG9hZGVkX29uX3JlbGF0aXZlIjoiNiB5ZWFycyBhZ28iLCJ1cGxvYWRlZF9vbl9mdWxsIjoiV2VkbmVzZGF5LCBKdW5lIDE4LCAyMDE0IGF0IDEwOjMzIFBNIEVTVCIsImlzX3NwYXRpYWwiOmZhbHNlLCJpc19oZHIiOmZhbHNlLCJwcml2YWN5Ijp7ImlzX3B1YmxpYyI6dHJ1ZSwidHlwZSI6ImFueWJvZHkiLCJkZXNjcmlwdGlvbiI6IlB1YmxpYyJ9LCJkdXJhdGlvbiI6eyJyYXciOjc1MywiZm9ybWF0dGVkIjoiMTI6MzMifSwiaXNfbGlrZWQiOmZhbHNlLCJpc191bmF2YWlsYWJsZSI6ZmFsc2UsImxpa2VzX3VybCI6IlwvOTg2MDUzODJcL2xpa2VzIiwiaXNfbGl2ZSI6ZmFsc2UsInVubGlzdGVkX2hhc2giOm51bGx9LCJvd25lciI6eyJpZCI6OTYyNzI4MywiZGlzcGxheV9uYW1lIjoibWVnYWxhdW1hbiIsImhhc19hZHZhbmNlZF9zdGF0cyI6ZmFsc2UsImlzX3Byb19sYXBzZWQiOmZhbHNlLCJpc19wYWlkIjpmYWxzZSwiYmFkZ2UiOm51bGwsInBvcnRyYWl0Ijp7InNyYyI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzc4NTkxMTVfNzV4NzUiLCJzcmNfMngiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC83ODU5MTE1XzE1MHgxNTAifSwiaXNfbW9kIjpmYWxzZSwidXJsIjoiXC9tZWdhbGF1bWFuIiwidmVyaWZpZWQiOnRydWUsImlzX2ZvbGxvd2luZyI6ZmFsc2UsImlzX2F2YWlsYWJsZV9mb3JfaGlyZSI6bnVsbH0sIm9uZGVtYW5kIjpudWxsLCJicmFuZF9jaGFubmVsIjpudWxsLCJhcGlfdXJsIjoiYXBpLnZpbWVvLmNvbSIsImp3dCI6ImV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSklVekkxTmlKOS5leUpsZUhBaU9qRTJNRE01TURrek9EQXNJblZ6WlhKZmFXUWlPbTUxYkd3c0ltRndjRjlwWkNJNk5UZzBOemtzSW5OamIzQmxjeUk2SW5CMVlteHBZeUJ6ZEdGMGN5SXNJblJsWVcxZmRYTmxjbDlwWkNJNmJuVnNiSDAuTmkycHlKWmt4cnBzOGFMdEFnQnU0ZVZWakNQblB3WkZTTVpOR1JRcTRiSSIsImNoYXQiOm51bGwsImN1cl91c2VyIjpudWxsLCJzdGF0dXMiOnsic3RhdGUiOiJyZWFkeSJ9LCJjb3B5cmlnaHRfc3RhdHVzIjp7ImlzX2Jsb2NrZWQiOmZhbHNlfSwiY29udGVudF9ibG9ja19zdGF0dXMiOnsiaXNfYmxvY2tlZCI6ZmFsc2UsIm1lc3NhZ2UiOm51bGwsImNvbnRpbnVvdXNfcGxheV9lbmFibGVkIjpmYWxzZSwiYWxsb3dCeXBhc3MiOnRydWV9LCJwbGF5ZXIiOnsiY29uZmlnX3VybCI6Imh0dHBzOlwvXC9wbGF5ZXIudmltZW8uY29tXC92aWRlb1wvOTg2MDUzODJcL2NvbmZpZz9hdXRvcGF1c2U9MSZieWxpbmU9MCZjb2xsZWN0aW9ucz0xJmNvbnRleHQ9VmltZW8lNUNDb250cm9sbGVyJTVDQ2xpcENvbnRyb2xsZXIubWFpbiZkZWZhdWx0X3RvX2hkPTEmb3V0cm89bm90aGluZyZwb3J0cmFpdD0wJnNoYXJlPTEmdGl0bGU9MCZ3YXRjaF90cmFpbGVyPTAmcz02MGQ4MjBkZjYyM2FhN2IwNjJlY2YzNzViODVlYTIyN2Y3M2I4ZWM1XzE2MDM5MjM3MjEiLCJwbGF5ZXJfdXJsIjoicGxheWVyLnZpbWVvLmNvbSIsImRpbWVuc2lvbnMiOnsiaGVpZ2h0Ijo1NDAsIndpZHRoIjo5NjB9LCJwb3N0ZXIiOnsidXJsIjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNDc5Mzk5OTI3LmpwZz9tdz0yMDAwJm1oPTEwODAmcT03MCJ9fSwic2hhcmVfZW5hYmxlZCI6dHJ1ZSwiY29udGludW91c19wbGF5X2VuYWJsZWQiOnRydWUsInNlbmRfdG9fd2lwc3Rlcl9lbmFibGVkIjpmYWxzZSwidGh1bWJuYWlsIjp7InNyYyI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzQ3OTM5OTkyN18xOTB4MTA3LmpwZyIsInNyY18yeCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzQ3OTM5OTkyN18zODB4MjE0LmpwZyIsIndpZHRoIjoxOTAsImhlaWdodCI6MTA3LCJpZCI6NDc5Mzk5OTI3fSwiYWRzIjp7ImhvdXNlX2Fkc19lbmFibGVkIjp0cnVlLCJ0aGlyZF9wYXJ0eV9hZHNfZW5hYmxlZCI6ZmFsc2V9LCJjb250ZW50X3JhdGluZyI6bnVsbCwibm90aWZpY2F0aW9ucyI6W10sImNhdGVnb3JpZXNfY29uZmlnIjp7ImNhdGVnb3JpZXMiOltdLCJ0b3RhbF9jYXRlZ29yaWVzIjowfSwibXVzaWNfdHJhY2siOm51bGwsImNjX2xpY2Vuc2UiOiJieSIsImNyZWRpdHMiOnsidG90YWxfY3JlZGl0cyI6eyJyYXciOjAsImZvcm1hdHRlZCI6IjAifSwiZGlzcGxheWVkX2NyZWRpdHMiOltdfSwic3RyZWFtIjp7ImlkIjpudWxsLCJwb3MiOjB9LCJjb2xsZWN0aW9uX2FkZGVyIjp7ImVuYWJsZWQiOnRydWV9LCJyZWNhcHRjaGFfc2l0ZV9rZXkiOiI2TGVSQ0x3U0FBQUFBT0oxYmFfeHFkM05CT2xWNVBfWFJXSlZFUGR3IiwiY2xpcF9zdGF0cyI6eyJlbmFibGVkIjpmYWxzZX0sImRvd25sb2FkX2NvbmZpZyI6W10sImhhc19yZXZpZXdfbW9kZXMiOmZhbHNlLCJzdXJ2ZXlfdXJsIjoiaHR0cHM6XC9cL3d3dy5tYXJrZXRpbmdyZXNlYXJjaHJlc291cmNlcy5jb21cL2ltYWdlc1wvb3ZtMDA1MTZcL21yci5hc3A/SS5Vc2VyMT1PJnVzZXI9bG9nZ2Vkb3V0JmNsaXA9OTg2MDUzODImdnVpZD0iLCJkYXRhX2xheWVyIjp7ImNsaXBfaWQiOjk4NjA1MzgyLCJwYWdlX3BhdGgiOiJcLzk4NjA1MzgyIiwiY3JlYXRvcl9pZCI6OTYyNzI4MywiY3JlYXRvcl91c2VyX3R5cGUiOiJiYXNpYyIsInZpZGVvX2NhdGVnb3JpZXMiOiIiLCJwcml2YWN5IjoiYW55Ym9keSIsInN0YWZmX3BpY2siOiJubyIsInVzZXJfaWQiOm51bGwsInBhZ2VfdHlwZSI6IlZpZGVvIn0sInByZWZfdGlwcyI6eyJmaWxlX3RyYW5zZmVyX3RvdXJfcG9pbnQiOnsia2V5IjoidnN0cGZ0IiwidmFsdWUiOmZhbHNlfX19OwoKICAgIC8vIEF1dG9wbGF5IHRlc3QgZm9yIG9uc2l0ZSByZWZlcnJhbHMgdG8gY2xpcCBwYWdlCiAgICAoZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBjbGlwID0gd2luZG93LnZpbWVvLmNsaXBfcGFnZV9jb25maWc7CiAgICAgICAgdmFyIGlzT3duZXIgPSBjbGlwLmN1cl91c2VyID8gY2xpcC5jdXJfdXNlci5pZCA9PT0gY2xpcC5vd25lci5pZCA6IGZhbHNlOwogICAgICAgIHZhciBoYXNBdXRvcGxheVBhcmFtID0gLyhcP3wmKWF1dG9wbGF5PTEoJnwkKS8udGVzdCh3aW5kb3cubG9jYXRpb24uaHJlZik7CiAgICAgICAgdmFyIGhhc09uc2l0ZVJlZmVycmVyID0gd2luZG93LnZpbWVvX2VzaS5jb25maWcub25zaXRlX3JlZmVycmVyOwoKICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIGF1dG9wbGF5IHJlZnJlc2hlcyBhbmQgaGlzdG9yeSB0cmF2ZXJzYWxzCiAgICAgICAgdmFyIGlzTmV3UGFnZSA9IHdpbmRvdy5wZXJmb3JtYW5jZS5uYXZpZ2F0aW9uLnR5cGUgPT09IDA7CgogICAgICAgIC8vIElmIHdlIHBhc3MgYWxsIHRoZSBjb25kaXRpb25zIG92ZXJyaWRlIHBsYXllciBjb25maWcgd2l0aCBuZXcgb25lIGluY2x1ZGluZyBhdXRvcGxheSBwYXJhbQogICAgICAgIGlmIChpc05ld1BhZ2UgJiYgaGFzT25zaXRlUmVmZXJyZXIgJiYgIWhhc0F1dG9wbGF5UGFyYW0gJiYgIWlzT3duZXIpIHsKICAgICAgICAgICAgd2luZG93LnZpbWVvLmNsaXBfcGFnZV9jb25maWcucGxheWVyID0geyJjb25maWdfdXJsIjoiaHR0cHM6XC9cL3BsYXllci52aW1lby5jb21cL3ZpZGVvXC85ODYwNTM4MlwvY29uZmlnP2F1dG9wYXVzZT0xJmF1dG9wbGF5PTEmYnlsaW5lPTAmY29sbGVjdGlvbnM9MSZjb250ZXh0PVZpbWVvJTVDQ29udHJvbGxlciU1Q0NsaXBDb250cm9sbGVyLm1haW4mZGVmYXVsdF90b19oZD0xJm91dHJvPW5vdGhpbmcmcG9ydHJhaXQ9MCZzaGFyZT0xJnRpdGxlPTAmd2F0Y2hfdHJhaWxlcj0wJnM9NjU0OTMzYmE1NzM3NTkwN2Y2Y2Q3ODdhODlhMmU2NjlmNzBlNzQ4M18xNjAzOTIzNzIxIiwicGxheWVyX3VybCI6InBsYXllci52aW1lby5jb20iLCJkaW1lbnNpb25zIjp7ImhlaWdodCI6NTQwLCJ3aWR0aCI6OTYwfSwicG9zdGVyIjp7InVybCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzQ3OTM5OTkyNy5qcGc/bXc9MjAwMCZtaD0xMDgwJnE9NzAifX07CiAgICAgICAgfQogICAgfSgpKTsKPC9zY3JpcHQ+CgogICAgPHNjcmlwdD4KICAgICAgICBpZiAodHlwZW9mIHdpbmRvdy52aW1lbyA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIHdpbmRvdy52aW1lby5jbGlwcyA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgd2luZG93LnZpbWVvID0gd2luZG93LnZpbWVvIHx8IHt9OwogICAgICAgICAgICB3aW5kb3cudmltZW8uY2xpcHMgPSB3aW5kb3cudmltZW8uY2xpcHMgfHwge307CiAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKICAgICAgICAgICAgeGhyLm9wZW4oJ0dFVCcsIHdpbmRvdy52aW1lby5jbGlwX3BhZ2VfY29uZmlnLnBsYXllci5jb25maWdfdXJsICwgdHJ1ZSk7CiAgICAgICAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHdpbmRvdy52aW1lby5jbGlwc1snOTg2MDUzODInXSA9IEpTT04ucGFyc2UoeGhyLnJlc3BvbnNlVGV4dCk7CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHhoci53aXRoQ3JlZGVudGlhbHMgPSB0cnVlOwogICAgICAgICAgICB4aHIuc2VuZCgpOwogICAgICAgIH0KICAgIDwvc2NyaXB0PgoKPCEtLVtpZiBsdGUgSUUgOV0+CiAgICA8c2NyaXB0PndpbmRvdy5sb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbiArICc/bGl0ZT0xJzs8L3NjcmlwdD4KPCFbZW5kaWZdLS0+Cgo8ZGl2IGlkPSJvbmJvYXJkaW5nX21vdW50Ij48L2Rpdj4KCjxtYWluIGlkPSJtYWluIiBjbGFzcz0iaXNfbG9hZGluZyI+CiAgICA8ZGl2IGNsYXNzPSJpcmlzX2dyaWQgaXJpc19ncmlkX2ZwOTYwIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjbGlwX21haW4iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwbGF5ZXJfYXJlYSI+CiAgICAgICAgICAgICAgICA8bm9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vaS52aW1lb2Nkbi5jb20vdmlkZW8vNDc5Mzk5OTI3LmpwZz9tdz0xOTIwJmFtcDttaD0xMDgwJmFtcDtxPTcwIiBhbHQ9IiIgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyBtYXJnaW46IDAgYXV0bzsgbWF4LWhlaWdodDogNTQwcHg7IiAvPgogICAgICAgICAgICAgICAgPC9ub3NjcmlwdD4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8bm9zY3JpcHQ+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjbGlwX21haW4tY29udGVudCBpcmlzX2dyaWQtd3JhcHBlci0tY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXJpc19ncmlkLWNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3cgdS1jb2xsYXBzZSBjbGlwLW5vdGlmaWNhdGlvbiIgc3R5bGU9Im1hcmdpbi10b3A6IDFlbTsgbWFyZ2luLWJvdHRvbTogMS41ZW07Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlyaXNfbm90aWZpY2F0aW9uIGlyaXNfbm90aWZpY2F0aW9uLWNsaXAgaXJpc19ub3RpZmljYXRpb24tY2xpcC0tY2F1dGlvbiBpcmlzX25vdGlmaWNhdGlvbi0tbm8tY2xvc2UgY2xlYXJmaXgiIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+UGxlYXNlIGVuYWJsZSBKYXZhU2NyaXB0IHRvIGV4cGVyaWVuY2UgVmltZW8gaW4gYWxsIG9mIGl0cyBnbG9yeS48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpcmlzX2dyaWQtY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjbGlwX2luZm8td3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2xpcF9pbmZvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxIGNsYXNzPSJjbGlwX2luZm8taGVhZGVyIj5EZWFmaGVhdmVuIC0gVGhlIFBlY2FuIFRyZWUgKExpdmUpPC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjbGlwX2luZm8tc3VibGluZS0td2F0Y2ggY2xpcF9pbmZvLXN1YmxpbmUtLWlubGluZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ1c2VyYnlsaW5lLXN1YmxpbmUgdXNlcmJ5bGluZS1zdWJsaW5lLS1sZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5mcm9tPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InVzZXJsaW5rIHVzZXJsaW5rLS1tZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL21lZ2FsYXVtYW4iPm1lZ2FsYXVtYW48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjbGlwX2luZm8tdGltZSI+PHRpbWUgZGF0ZXRpbWU9IjIwMTQtMDYtMThUMjI6MzM6NDEtMDQ6MDAiIHRpdGxlPSJXZWRuZXNkYXksIEp1bmUgMTgsIDIwMTQgYXQgMTA6MzMgUE0iPjYgeWVhcnMgYWdvPC90aW1lPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2xpcF9kZXRhaWxzIGlyaXNfZGl2aWRlci0tZGFyayBpcmlzX2RpdmlkZXItdG9wIGlyaXNfZGl2aWRlci10b3AtLW0gaXJpc19kaXZpZGVyLWJvdCBpcmlzX2RpdmlkZXItYm90LS1tIHUtY29sbGFwc2UgY2xlYXJmaXgiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpcmlzX2dyaWQtY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjbGlwX2RldGFpbHMtZGVzY3JpcHRpb24gZGVzY3JpcHRpb24td3JhcHBlciBpcmlzX2Rlc2MiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJmaXJzdCI+VGhpcyB2aWRlbyB0YWtlbiBsaXZlIGZyb20gRGVhZmhlYXZlbiBsaXZlIGluIEpha2FydGEgb24gTWF5IDh0aCAyMDE0IGF0IFRoZSBCYXNlbWVudCBDYWZlLCBLZW1hbmcgUmF5YSwgSmFrYXJ0YS48L3A+CjxwPkRlYWZoZWF2ZW4gaXMgYW4gQW1lcmljYW4gcG9zdC1ibGFjayBtZXRhbCBiYW5kIHRoYXQgZm9ybWVkIGluIDIwMTAgaW4gU2FuIEZyYW5jaXNjbywgQ2FsaWZvcm5pYSwgVW5pdGVkIFN0YXRlcy4gVGhlIGdyb3VwIGJlZ2FuIGFzIGEgdHdvLXBpZWNlIHdpdGggR2VvcmdlIENsYXJrZSBhbmQgS2VycnkgTWNDb3kgd2hvIHJlY29yZGVkIGFuZCBzZWxmLXJlbGVhc2VkIGEgZGVtbyBhbGJ1bSB0b2dldGhlci4gQWZ0ZXIgYSB3YXJtIHJlY2VwdGlvbiwgRGVhZmhlYXZlbiByZWNydWl0ZWQgdGhyZWUgbmV3IG1lbWJlcnMgYW5kIGJlZ2FuIHRvIHRvdXIuIEJlZm9yZSB0aGUgY2xvc2Ugb2YgMjAxMCwgdGhlIGJhbmQgc2lnbmVkIHRvIERlYXRod2lzaCBJbmMuIGFuZCBsYXRlciByZWxlYXNlZCB0aGVpciBkZWJ1dCBhbGJ1bSBSb2FkcyB0byBKdWRhaCBpbiBBcHJpbCAyMDExLiBUaGUgZm9sbG93LXVwIGFsYnVtLCBTdW5iYXRoZXIsIHdhcyByZWxlYXNlZCBvbiBKdW5lIDExLCAyMDEzLiBBZnRlciBhbm90aGVyIGxpbmV1cCBjaGFuZ2UsIHRoZSBiYW5kIHRvdXJlZCBmb3IgdGhlIGFsYnVtIGV4dGVuc2l2ZWx5IGFuZCBhcmUgc3RpbGwgb24gYSBtYXNzaXZlIGludGVybmF0aW9uYWwgdG91ci48L3A+CjxwPkRlYWZoZWF2ZW4gZm9ybWVkIGluIEZlYnJ1YXJ5IDIwMTAgaW4gU2FuIEZyYW5jaXNjbyB3aXRoIHZvY2FsaXN0IEdlb3JnZSBDbGFya2UgYW5kIGd1aXRhcmlzdCBLZXJyeSBNY0NveSwgd2hvIHByZXZpb3VzbHkgcGVyZm9ybWVkIGluIGEgZ3JpbmRjb3JlIGJhbmQgdG9nZXRoZXIuIENsYXJrZSBpc24mIzAzOTt0IHN1cmUgaG93IGhlIGFycml2ZWQgb24gdGhlIG5hbWUgRGVhZmhlYXZlbiwgdGhvdWdoIGhlIGlzIGF3YXJlIG9mIGl0cyBhcHBlYXJhbmNlIGluIFdpbGxpYW0gU2hha2VzcGVhcmUmIzAzOTtzIFNvbm5ldCAyOS4gVGhlIHR3byB3b3JkcyAmIzAzOTtkZWFmJiMwMzk7IGFuZCAmIzAzOTtoZWF2ZW4mIzAzOTsgd2VyZSBjb21iaW5lZCBhcyBhbiBob21hZ2UgdG8gU2xvd2RpdmUuPC9wPgo8cD5DbGFya2UgYW5kIE1jQ295IHJlY29yZGVkIHRoZSBEZW1vIGFsYnVtIGluIEFwcmlsIDIwMTAgYXQgQXRvbWljIEdhcmRlbiBTdHVkaW9zLCB3aGljaCB3YXMgcmVsZWFzZWQgYm90aCBvbiBjYXNzZXR0ZSB0YXBlIGluIGxpbWl0ZWQgcXVhbnRpdGllcyBhbmQgZGlnaXRhbGx5LiBUaGUgdW50aXRsZWQgZGVtbyBmZWF0dXJlZCBmb3VyIHNvbmdzIHRoYXQgY29tYmluZWQgdHJhZGl0aW9uYWwgc2NyZWFtbyB3aXRoIGJsYWNrIG1ldGFsIGFuZCBwb3N0LXJvY2suIE9yaWdpbmFsbHksIERlYWZoZWF2ZW4gZGlkbiYjMDM5O3QgaW50ZW5kIHRvIHJlbGVhc2UgdGhlIG1hdGVyaWFsLCBidXQgdGhleSBsYXRlciBzZW50IGl0IG91dCB0byBhIGZldyBvZiB0aGVpciBmYXZvcml0ZSBibG9ncy48L3A+CjxwPkFmdGVyIHRoZSBkZW1vIGhhZCBiZWVuIHBvc2l0aXZlbHkgcmVjZWl2ZWQsIENsYXJrZSBhbmQgTWNDb3kgcmVjcnVpdGVkIHRocmVlIGFkZGl0aW9uYWwgbXVzaWNpYW5zIC0gYmFzc2lzdCBEZXJlayBQcmluZSwgZ3VpdGFyaXN0IE5pY2sgQmFzc2V0dCBvZiB0aGUgc2hvZWdhemUgYmFuZHMgV2hpcnIgKGZvcm1lcmx5IFdoaXJsKSBhbmQgTm90aGluZywgYW5kIGRydW1tZXIgVHJldm9yIERlc2Nocnl2ZXIsIHdobyByZXNwb25kZWQgdG8gYW4gYWQgb24gQ3JhaWdzbGlzdCAtIHRvIGZvcm0gYSBmaXZlLXBpZWNlIGdyb3VwLCBhbmQgc3RhcnRlZCBwbGF5aW5nIHRoZWlyIGZpcnN0IHNob3dzIGluIEp1bHkgMjAxMC48L3A+CjxwPkZpbG1lZCBieSBtZWdhbGF1bWFuPGJyPgpzb3VuZCByZWNvcmRlZCBieSBab29tIEg0bjxicj4KRWRpdGVkIGJ5IG1lZ2FsYXVtYW48L3A+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L25vc2NyaXB0PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CjwvbWFpbj4KCjxzY3JpcHQ+CiAgICB3aW5kb3cuY2FuX3ByZWxvYWQgPSB0cnVlOwoKICAgIDwvc2NyaXB0PgoKICAgIDxkaXYgY2xhc3M9ImhpZGUiPgogICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIGdwdF9hZCIgcm9sZT0iY29tcGxlbWVudGFyeSI+CiAgICAKICAgIDxkaXYgaWQ9ImRpdi1ncHQtYWQtNjMxNDg4MDk5Ij48L2Rpdj4KPC9kaXY+CiAgICA8L2Rpdj4KCjxzY3JpcHQ+CmNvbnNvbGUubG9nKCclYyBcblwK4o6cICAgICAgIEBAQCYgICAgICAgQEBAQEBAXG5cCuKOnCAgICAjQEBAQEBAQCAgICAmQEBAQEBAQEAgICAgICAgQnVpbHQgdXNpbmc6XG5cCuKOnCAgI0BAQEBAQEBAQC4gICUlJkBAQEBAQEAgICAgICAgIOKAoiBSZWFjdCArIEZsdXhcblwK4o6cICAgICAgJkBAQEBAJSAgICAgKEBAQEBAKCAgICAgICDigKIgRVM2XG5cCuKOnCAgICAgICBAQEBAQEAgICAgIEBAQEBAQCAgICAgICAg4oCiIEZldGNoIEFQSVxuXArijpwgICAgICAgJUBAQEBAKCAgLkBAQEBAKCAgICAgICAgIOKAoiBGbGV4Ym94XG5cCuKOnCAgICAgICAgQEBAQEBAKEBAQEBAQFxuXArijpwgICAgICAgIC9AQEBAQEBAQEBAJSAgICAgICAgICAgIExpa2UgcGxheWluZyB3aXRoIG5ldyB0ZWNobm9sb2d5LCB0b28/XG5cCuKOnCAgICAgICAgICZAQEBAQEBAJSAgICAgICAgICAgICAgaHR0cHM6Ly92aW1lby5jb20vam9ic1xuXArijpwgICAgICAgICAgQEBAQEAjXG5cClxuXAonLCAnY29sb3I6ICMwMGFkZWY7Jyk7Cjwvc2NyaXB0PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8Zm9vdGVyIGNsYXNzPSJmb290ZXJfdjIgZm9vdGVyX3YyLS1yZXNwb25zaXZlIj4KICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0iZm9vdGVyX3YyX19zaXRlbWFwIj4KICAgIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9fbGlua3MiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJmb290ZXJfdjJfX2xpbmsgZm9vdGVyX3YyX2FjY29yZGlvbiI+CiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fY2hlY2siIHR5cGU9ImNoZWNrYm94Ij4KICAgICAgICAgICAgPGg0IGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyLXRleHQiPlZJTUVPPC9zcGFuPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fcmV2ZWFsIj4KICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJpcmlzX2ljIGlzLS0xMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgOCA4Ij48cGF0aCBkPSJNNy43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDBMNCA0LjU4NiAxLjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMC0uMzkuMzktLjM5IDEuMDI0IDAgMS40MTRsMyAzYy4zOS4zOSAxLjAyNC4zOSAxLjQxNCAwbDMtM2MuMzktLjM5LjM5LTEuMDI0IDAtMS40MTR6Ii8+PC9zdmc+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9oND4KICAgICAgICAgICAgPHVsIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstbGlzdCBmb290ZXJfdjJfYWNjb3JkaW9uX19tZW51Ij4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii91cGdyYWRlIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfcHJpY2luZyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDp2aW1lb3xrZXl3b3JkOnByaWNpbmciCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBQcmljaW5nICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL3VwbG9hZCIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3VwbG9hZF9jbGljayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDp2aW1lb3xrZXl3b3JkOnVwbG9hZCIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFVwbG9hZCAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9jaGFubmVscy9zdGFmZnBpY2tzIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfc3RhZmZfcGlja3MiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6dmltZW98a2V5d29yZDpzdGFmZl9waWNrcyIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFN0YWZmIFBpY2tzICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL29uZGVtYW5kIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfb25fZGVtYW5kX2NsaWNrIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnZpbWVvfGtleXdvcmQ6b25fZGVtYW5kIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgT24gRGVtYW5kICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly92aW1lby5jb20vb3R0IgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdmltZW9fb3R0IgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnZpbWVvfGtleXdvcmQ6b3R0IgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgVmltZW8gT1RUICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL3NpdGVfbWFwIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfc2l0ZV9tYXBfY2xpY2siCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6dmltZW98a2V5d29yZDpzaXRlX21hcCIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFNpdGUgbWFwICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgIDwvc2VjdGlvbj4KCiAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImZvb3Rlcl92Ml9fbGluayBmb290ZXJfdjJfYWNjb3JkaW9uIj4KICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19jaGVjayIgdHlwZT0iY2hlY2tib3giPgogICAgICAgICAgICA8aDQgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXIiPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXItdGV4dCI+U09MVVRJT05TPC9zcGFuPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fcmV2ZWFsIj4KICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJpcmlzX2ljIGlzLS0xMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgOCA4Ij48cGF0aCBkPSJNNy43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDBMNCA0LjU4NiAxLjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMC0uMzkuMzktLjM5IDEuMDI0IDAgMS40MTRsMyAzYy4zOS4zOSAxLjAyNC4zOSAxLjQxNCAwbDMtM2MuMzktLjM5LjM5LTEuMDI0IDAtMS40MTR6Ii8+PC9zdmc+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9oND4KICAgICAgICAgICAgPHVsIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstbGlzdCBmb290ZXJfdjJfYWNjb3JkaW9uX19tZW51Ij4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9mZWF0dXJlcy92aWRlby1wbGF5ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua192aWRlb19wbGF5ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6ZmVhdHVyZXN8a2V5d29yZDp2aWRlb19wbGF5ZXIiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBWaWRlbyBQbGF5ZXIgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvY3JlYXRlIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfY3JlYXRpb24iCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6c29sdXRpb25zfGtleXdvcmQ6Y3JlYXRlIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2ZlYXR1cmVzL3ZpZGVvLXByaXZhY3kiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19wcml2YWN5IgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OmZlYXR1cmVzfGtleXdvcmQ6cHJpdmFjeSIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFByaXZhY3kgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvZmVhdHVyZXMvdmlkZW8tY29sbGFib3JhdGlvbiIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX2NvbGxhYm9yYXRpb24iCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6ZmVhdHVyZXN8a2V5d29yZDpjb2xsYWJvcmF0aW9uIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGFib3JhdGlvbiAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9mZWF0dXJlcy92aWRlby1tYXJrZXRpbmciCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19kaXN0cmlidXRpb24iCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6ZmVhdHVyZXN8a2V5d29yZDpkaXN0cmlidXRpb24iCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBEaXN0cmlidXRpb24gJiBtYXJrZXRpbmcgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvZmVhdHVyZXMvdmlkZW8tbW9uZXRpemF0aW9uIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfbW9uZXRpemF0aW9uIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OmZlYXR1cmVzfGtleXdvcmQ6bW9uZXRpemF0aW9uIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgTW9uZXRpemF0aW9uICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2xpdmUiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19saXZlX3N0cmVhbWluZyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpmZWF0dXJlc3xrZXl3b3JkOmxpdmVfc3RyZWFtaW5nIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgTGl2ZSBzdHJlYW1pbmcgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvZmVhdHVyZXMvdmlkZW8tYW5hbHl0aWNzIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfYW5hbHl0aWNzIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OmZlYXR1cmVzfGtleXdvcmQ6YW5hbHl0aWNzIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgQW5hbHl0aWNzICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2ZlYXR1cmVzL29ubGluZS12aWRlby1ob3N0aW5nIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfaG9zdGluZyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpmZWF0dXJlc3xrZXl3b3JkOmhvc3RpbmciCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBIb3N0aW5nICYgbWFuYWdlbWVudCAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9lbnRlcnByaXNlIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfZW50ZXJwcmlzZSIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpzb2x1dGlvbnN8a2V5d29yZDplbnRlcnByaXNlIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgRW50ZXJwcmlzZSAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9mb3ItaGlyZSIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX2Zvcl9oaXJlIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOmZvcl9oaXJlIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgRm9yIEhpcmUgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvc3RvY2siCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19zdG9jayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpzb2x1dGlvbnN8a2V5d29yZDpzdG9jayIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFN0b2NrICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgIDwvc2VjdGlvbj4KCiAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImZvb3Rlcl92Ml9fbGluayBmb290ZXJfdjJfYWNjb3JkaW9uIj4KICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19jaGVjayIgdHlwZT0iY2hlY2tib3giPgogICAgICAgICAgICA8aDQgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXIiPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXItdGV4dCI+QVBQUzwvc3Bhbj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX3JldmVhbCI+CiAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0iaXJpc19pYyBpcy0tMTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDggOCI+PHBhdGggZD0iTTcuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwTDQgNC41ODYgMS43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDAtLjM5LjM5LS4zOSAxLjAyNCAwIDEuNDE0bDMgM2MuMzkuMzkgMS4wMjQuMzkgMS40MTQgMGwzLTNjLjM5LS4zOS4zOS0xLjAyNCAwLTEuNDE0eiIvPjwvc3ZnPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvaDQ+CiAgICAgICAgICAgIDx1bCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWxpc3QgZm9vdGVyX3YyX2FjY29yZGlvbl9fbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vYXBwcy5hcHBsZS5jb20vYXBwL2FwcGxlLXN0b3JlL2lkMTM1NjY4Njc2Mz9wdD00MTc3MzEmYW1wO2N0PWxvaHAmYW1wO210PTgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OmFwcHN8a2V5d29yZDptYWNvcyIKICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmltZW8gZm9yIG1hY09TICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vaXR1bmVzLmFwcGxlLmNvbS9hcHAvdmltZW8vaWQ0MjUxOTQ3NTk/bXQ9OCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6YXBwc3xrZXl3b3JkOmlvcyIKICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmltZW8gZm9yIGlPUyAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL3BsYXkuZ29vZ2xlLmNvbS9zdG9yZS9hcHBzL2RldGFpbHM/aWQ9Y29tLnZpbWVvLmFuZHJvaWQudmlkZW9hcHAmYW1wO3JlZmVycmVyPXV0bV9zb3VyY2UlM0Rmb290ZXIlMjZ1dG1fbWVkaXVtJTNEbG9ocCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6YXBwc3xrZXl3b3JkOmFuZHJvaWQiCiAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpbWVvIGZvciBBbmRyb2lkICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vYXBwcy5hcHBsZS5jb20vdXMvYXBwL3ZpbWVvLWNyZWF0ZS9pZDE0OTE3OTE1MTMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OmFwcHN8a2V5d29yZDpjcmVhdGVfaW9zIgogICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaW1lbyBDcmVhdGUgZm9yIGlPUyAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL3BsYXkuZ29vZ2xlLmNvbS9zdG9yZS9hcHBzL2RldGFpbHM/aWQ9Y29tLnZpbWVvY3JlYXRlLnZpZGVvZWRpdG9yLm1vdmllbWFrZXImYW1wO3JlZmVycmVyPXV0bV9zb3VyY2UlM0Rmb290ZXIlMjZ1dG1fbWVkaXVtJTNEbG9ocCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6YXBwc3xrZXl3b3JkOmNyZWF0ZV9hbmRyb2lkIgogICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaW1lbyBDcmVhdGUgZm9yIEFuZHJvaWQgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9tYWdpc3RvLmNvbSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6YXBwc3xrZXl3b3JkOm1hZ2lzdG8iCiAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hZ2lzdG8gICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9zZWN0aW9uPgoKICAgICAgICA8c2VjdGlvbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rIGZvb3Rlcl92Ml9hY2NvcmRpb24iPgogICAgICAgICAgICA8aW5wdXQgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX2NoZWNrIiB0eXBlPSJjaGVja2JveCI+CiAgICAgICAgICAgIDxoNCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlciI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlci10ZXh0Ij5SRVNPVVJDRVM8L3NwYW4+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19yZXZlYWwiPgogICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9ImlyaXNfaWMgaXMtLTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA4IDgiPjxwYXRoIGQ9Ik03LjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMEw0IDQuNTg2IDEuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwLS4zOS4zOS0uMzkgMS4wMjQgMCAxLjQxNGwzIDNjLjM5LjM5IDEuMDI0LjM5IDEuNDE0IDBsMy0zYy4zOS0uMzkuMzktMS4wMjQgMC0xLjQxNHoiLz48L3N2Zz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2g0PgogICAgICAgICAgICA8dWwgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1saXN0IGZvb3Rlcl92Ml9hY2NvcmRpb25fX21lbnUiPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9oZWxwIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfaGVscF9jZW50ZXJfY2xpY2siCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6cmVzb3VyY2VzfGtleXdvcmQ6aGVscF9jZW50ZXIiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBIZWxwIENlbnRlciAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9ibG9nIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdmltZW9fYmxvZ19jbGljayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpyZXNvdXJjZXN8a2V5d29yZDp2aW1lb19ibG9nIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgQmxvZyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9ibG9nL2NhdGVnb3J5L3ZpZGVvLXNjaG9vbCIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3ZpZGVvX3NjaG9vbF9jbGljayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpyZXNvdXJjZXN8a2V5d29yZDp2aWRlb19zY2hvb2wiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBWaWRlbyBTY2hvb2wgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL3ZpbWVvLmNvbS9vdHQvcmVzb3VyY2VzIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfb3R0X3Jlc291cmNlcyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpyZXNvdXJjZXN8a2V5d29yZDpvdHRfcmVzb3VyY2VzIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgT1RUIFJlc291cmNlcyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLnZpbWVvLmNvbSIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX2RldmVsb3BlcnNfY2xpY2siCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6cmVzb3VyY2VzfGtleXdvcmQ6ZGV2ZWxvcGVycyIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIERldmVsb3BlcnMgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvc3R1ZGVudHMiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19zdHVkZW50cyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpyZXNvdXJjZXN8a2V5d29yZDpzdHVkZW50cyIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFN0dWRlbnRzICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2hlbHAvZ3VpZGVsaW5lcyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3ZpbWVvX2d1aWRlbGluZXNfY2xpY2siCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6cmVzb3VyY2VzfGtleXdvcmQ6dmltZW9fZ3VpZGVsaW5lcyIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIEd1aWRlbGluZXMgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9zZWN0aW9uPgoKICAgICAgICA8c2VjdGlvbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rIGZvb3Rlcl92Ml9hY2NvcmRpb24iPgogICAgICAgICAgICA8aW5wdXQgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX2NoZWNrIiB0eXBlPSJjaGVja2JveCI+CiAgICAgICAgICAgIDxoNCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlciI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlci10ZXh0Ij5VUEdSQURFPC9zcGFuPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fcmV2ZWFsIj4KICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJpcmlzX2ljIGlzLS0xMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgOCA4Ij48cGF0aCBkPSJNNy43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDBMNCA0LjU4NiAxLjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMC0uMzkuMzktLjM5IDEuMDI0IDAgMS40MTRsMyAzYy4zOS4zOSAxLjAyNC4zOSAxLjQxNCAwbDMtM2MuMzktLjM5LjM5LTEuMDI0IDAtMS40MTR6Ii8+PC9zdmc+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9oND4KICAgICAgICAgICAgPHVsIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstbGlzdCBmb290ZXJfdjJfYWNjb3JkaW9uX19tZW51Ij4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9zdG9yZS9wbHVzIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdXBncmFkZV9wbHVzIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnVwZ3JhZGVfbGlua3xrZXl3b3JkOnBsdXMiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBWaW1lbyBQbHVzICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL3N0b3JlL3BybyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3VwZ3JhZGVfcHJvIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnVwZ3JhZGVfbGlua3xrZXl3b3JkOnBybyIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFZpbWVvIFBSTyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9zdG9yZS9idXNpbmVzcyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3VwZ3JhZGVfYnVzaW5lc3MiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6dXBncmFkZV9saW5rfGtleXdvcmQ6YnVzaW5lc3MiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBWaW1lbyBCdXNpbmVzcyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9zdG9yZS9wcmVtaXVtIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdXBncmFkZV9wcmVtaXVtIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnVwZ3JhZGVfbGlua3xrZXl3b3JkOnByZW1pdW0iCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBWaW1lbyBQcmVtaXVtICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2VudGVycHJpc2UiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua191cGdyYWRlX2VudGVycHJpc2UiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6dXBncmFkZV9saW5rfGtleXdvcmQ6ZW50ZXJwcmlzZSIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFZpbWVvIEVudGVycHJpc2UgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSJodHRwOi8vdmltZW8uZXh0b2xlLmNvbS93ZWJzaXRlX2Zvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3VwZ3JhZGVfcmVmX2ZyaWVuZCIKICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PSJfYmxhbmsiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6dXBncmFkZV9saW5rfGtleXdvcmQ6cmVmZXJfYV9mcmllbmQiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBSZWZlciBhIGZyaWVuZCAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICA8L3NlY3Rpb24+CgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJmb290ZXJfdjJfX2xpbmsgZm9vdGVyX3YyX2FjY29yZGlvbiI+CiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fY2hlY2siIHR5cGU9ImNoZWNrYm94Ij4KICAgICAgICAgICAgPGg0IGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyLXRleHQiPkNPTVBBTlk8L3NwYW4+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19yZXZlYWwiPgogICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9ImlyaXNfaWMgaXMtLTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA4IDgiPjxwYXRoIGQ9Ik03LjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMEw0IDQuNTg2IDEuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwLS4zOS4zOS0uMzkgMS4wMjQgMCAxLjQxNGwzIDNjLjM5LjM5IDEuMDI0LjM5IDEuNDE0IDBsMy0zYy4zOS0uMzkuMzktMS4wMjQgMC0xLjQxNHoiLz48L3N2Zz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2g0PgogICAgICAgICAgICA8dWwgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1saXN0IGZvb3Rlcl92Ml9hY2NvcmRpb25fX21lbnUiPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2Fib3V0IgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfYWJvdXRfY2xpY2siCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6Y29tcGFueXxrZXl3b3JkOmFib3V0X3ZpbWVvIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgQWJvdXQgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvam9icyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX2pvYnMiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6Y29tcGFueXxrZXl3b3JkOmpvYnMiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBKb2JzICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgIDwvc2VjdGlvbj4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxhc2lkZSBpZD0iZm9vdGVyX3RpcCIgY2xhc3M9ImZvb3Rlcl92Ml9fdGlwIiBhcmlhLWxpdmU9InBvbGl0ZSI+CiAgICAgICAgICAgIDxoNCBjbGFzcz0iZm9vdGVyX3YyX190aXAtaGVhZGVyIj5EaWQgeW91IGtub3c/PC9oND4KICAgICAgICAgICAgPHAgY2xhc3M9ImFjdGl2ZSBmb290ZXJfdjJfX3RpcC1jb250ZW50Ij5VcGdyYWRlIHlvdXIgdXBsb2FkaW5nIGJ5IGZvbGxvd2luZyBvdXIgPGEgaHJlZj0iL2hlbHAvY29tcHJlc3Npb24iIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmRpZF95b3Vfa25vd19ib3h8Y29tcG9uZW50OmhlbHAiPnJlY29tbWVuZGVkIHZpZGVvIGNvbXByZXNzaW9uPC9hPiBzZXR0aW5ncy48L3A+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvc2VjdGlvbj4KICAgIAogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJmb290ZXJfdjJfX2F1eGlsaWFyeSAiPgoKICAgIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9fbGVnYWwiPgogICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9fYXV4aWxpYXJ5LWNvbnRlbnQiPgogICAgICAgICAgICA8cD5UTSArICZjb3B5OyAyMDIwIFZpbWVvLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIDx1bCBjbGFzcz0iZm9vdGVyX3YyX19sZWdhbC1saXN0Ij4KICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xlZ2FsLWxpc3QtaXRlbSI+CiAgICAgICAgICAgICAgICA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS00IiBocmVmPSIvdGVybXMiIHRpdGxlPSJUZXJtcyAmYW1wOyBDb25kaXRpb25zIj4KICAgICAgICAgICAgICAgICAgICBUZXJtcyAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19sZWdhbC1saXN0LWl0ZW0iPgogICAgICAgICAgICAgICAgPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktNCIgaHJlZj0iL3ByaXZhY3kiIHRpdGxlPSJQcml2YWN5IFBvbGljeSI+CiAgICAgICAgICAgICAgICAgICAgUHJpdmFjeSAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19sZWdhbC1saXN0LWl0ZW0iPgogICAgICAgICAgICAgICAgPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktNCIgaHJlZj0iL3ByaXZhY3kvY2FsaWZvcm5pYS1wcml2YWN5IiB0aXRsZT0iQ0EgUHJpdmFjeSI+CiAgICAgICAgICAgICAgICAgICAgQ0EgUHJpdmFjeSAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19sZWdhbC1saXN0LWl0ZW0iPgogICAgICAgICAgICAgICAgPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktNCIgaHJlZj0iL2RtY2EiIHRpdGxlPSJDb3B5cmlnaHQgSW5mb3JtYXRpb24iPgogICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19sZWdhbC1saXN0LWl0ZW0iPgogICAgICAgICAgICAgICAgPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktNCIgaHJlZj0iL2Nvb2tpZV9wb2xpY3kiIHRpdGxlPSJMZWFybiBtb3JlIGFib3V0IGhvdyBWaW1lbyB1c2VzIGNvb2tpZXMiPgogICAgICAgICAgICAgICAgICAgIENvb2tpZXMgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgIDwvdWw+CiAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyX3YyX19hdXhpbGlhcnktY29udGVudCBmb290ZXJfdjJfX3dpdGhsb3ZlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hZGUgd2l0aCA8c3ZnIGNsYXNzPSJpcmlzX2ljIGlzLS0xMiBmb290ZXJfdjJfX2xvdmVoZWFydCBmb290ZXJfdjJfX2F1eGlsaWFyeS1pY29uIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMiAxMiI+PHBhdGggZD0iTTkgMkM3LjMxMiAyIDYgMy41IDYgMy41UzQuNjg3IDIgMyAyQzEuMzEyIDIgMCAzLjMxMiAwIDVjMCAzLjE4OCAzLjc1IDMuMDEyIDYgNiAyLjI1LTIuOTg4IDYtMi44MTIgNi02IDAtMS42ODgtMS4zMTMtMy0zLTN6Ii8+PC9zdmc+IGluIE5ZQy4gICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iZm9vdGVyX3YyX19maWx0ZXJzIGZvb3Rlcl92Ml9fYXV4aWxpYXJ5LWNvbnRlbnQiPgogICAgICAgIDxzcGFuIGNsYXNzPSJsYW5ndWFnZSI+CiAgICAgICAgICAgIExhbmd1YWdlOgogICAgICAgICAgICA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS00IiBocmVmPSIjbGFuZ3VhZ2UiIG9uY2xpY2s9InZpbWVvLk1vZGFsLmNyZWF0ZSh7Y29udGVudDogJy9zZXR0aW5ncy9sb2NhbGUnLCBzaXplOiAnc21hbGwnfSk7IHJldHVybiBmYWxzZTsiIHRpdGxlPSJDaG9vc2UgYSBkaWZmZXJlbnQgbGFuZ3VhZ2UiPkVuZ2xpc2g8L2E+CiAgICAgICAgPC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZm9vdGVyX3YyX19maWx0ZXIiPk1hdHVyZSBjb250ZW50IGZpbHRlcjogPC9zcGFuPjxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTQgZm9vdGVyX3YyX19maWx0ZXJzX19sYW5nIGNvbnRlbnRmaWx0ZXIganMtZm9vdGVyX2NvbnRlbnRmaWx0ZXJfbGluayIgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNsaWNrPSJ2aW1lby5Nb2RhbC5jcmVhdGUoe2NvbnRlbnQ6ICcvc2V0dGluZ3MvY29udGVudHJhdGluZyd9KSIgdGl0bGU9IkNoYW5nZSB5b3VyIG1hdHVyZSBjb250ZW50IGZpbHRlciI+Tm9uZTwvYT4KICAgICAgICAgICAgPC9kaXY+Cgo8L3NlY3Rpb24+CjwvZm9vdGVyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIDxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vbGQranNvbiI+CiAgICAgICAgW3sidXJsIjoiaHR0cHM6Ly92aW1lby5jb20vOTg2MDUzODIiLCJ0aHVtYm5haWxVcmwiOiJodHRwczovL2kudmltZW9jZG4uY29tL2ZpbHRlci9vdmVybGF5P3NyYzA9aHR0cHMlM0ElMkYlMkZpLnZpbWVvY2RuLmNvbSUyRnZpZGVvJTJGNDc5Mzk5OTI3XzEyODB4NzIwLmpwZyZzcmMxPWh0dHBzJTNBJTJGJTJGZi52aW1lb2Nkbi5jb20lMkZpbWFnZXNfdjYlMkZzaGFyZSUyRnBsYXlfaWNvbl9vdmVybGF5LnBuZyIsImVtYmVkVXJsIjoiaHR0cHM6Ly9wbGF5ZXIudmltZW8uY29tL3ZpZGVvLzk4NjA1MzgyIiwibmFtZSI6IkRlYWZoZWF2ZW4gLSBUaGUgUGVjYW4gVHJlZSAoTGl2ZSkiLCJkZXNjcmlwdGlvbiI6IlRoaXMgdmlkZW8gdGFrZW4gbGl2ZSBmcm9tIERlYWZoZWF2ZW4gbGl2ZSBpbiBKYWthcnRhIG9uIE1heSA4dGggMjAxNCBhdCBUaGUgQmFzZW1lbnQgQ2FmZSwgS2VtYW5nIFJheWEsIEpha2FydGEuICBEZWFmaGVhdmVuIGlzIGFuIEFtZXJpY2FuIHBvc3QtYmxhY2sgbWV0YWwgYmFuZCZoZWxsaXA7IiwiaGVpZ2h0Ijo3MjAsIndpZHRoIjoxMjgwLCJwbGF5ZXJUeXBlIjoiSFRNTDUgRmxhc2giLCJ2aWRlb1F1YWxpdHkiOiJIRCIsImR1cmF0aW9uIjoiUFQwMEgxMk0zM1MiLCJ1cGxvYWREYXRlIjoiMjAxNC0wNi0xOFQyMjozMzo0MS0wNDowMCIsImRhdGVNb2RpZmllZCI6IjIwMjAtMDctMzBUMjI6MzM6MTMtMDQ6MDAiLCJ0aHVtYm5haWwiOnsiQHR5cGUiOiJJbWFnZU9iamVjdCIsInVybCI6Imh0dHBzOi8vaS52aW1lb2Nkbi5jb20vZmlsdGVyL292ZXJsYXk/c3JjMD1odHRwcyUzQSUyRiUyRmkudmltZW9jZG4uY29tJTJGdmlkZW8lMkY0NzkzOTk5MjdfMTI4MHg3MjAuanBnJnNyYzE9aHR0cHMlM0ElMkYlMkZmLnZpbWVvY2RuLmNvbSUyRmltYWdlc192NiUyRnNoYXJlJTJGcGxheV9pY29uX292ZXJsYXkucG5nIiwid2lkdGgiOjEyODAsImhlaWdodCI6NzIwfSwiYXV0aG9yIjp7IkB0eXBlIjoiUGVyc29uIiwibmFtZSI6Im1lZ2FsYXVtYW4iLCJ1cmwiOiJodHRwczovL3ZpbWVvLmNvbS9tZWdhbGF1bWFuIn0sInBvdGVudGlhbEFjdGlvbiI6eyJAdHlwZSI6IlZpZXdBY3Rpb24iLCJ0YXJnZXQiOiJ2aW1lbzovL2FwcC52aW1lby5jb20vdmlkZW9zLzk4NjA1MzgyIn0sImludGVyYWN0aW9uU3RhdGlzdGljIjpbeyJAdHlwZSI6IkludGVyYWN0aW9uQ291bnRlciIsImludGVyYWN0aW9uVHlwZSI6Imh0dHA6Ly9zY2hlbWEub3JnL0NvbW1lbnRBY3Rpb24iLCJ1c2VySW50ZXJhY3Rpb25Db3VudCI6MH0seyJAdHlwZSI6IkludGVyYWN0aW9uQ291bnRlciIsImludGVyYWN0aW9uVHlwZSI6Imh0dHA6Ly9zY2hlbWEub3JnL0xpa2VBY3Rpb24iLCJ1c2VySW50ZXJhY3Rpb25Db3VudCI6MX0seyJAdHlwZSI6IkludGVyYWN0aW9uQ291bnRlciIsImludGVyYWN0aW9uVHlwZSI6Imh0dHA6Ly9zY2hlbWEub3JnL1dhdGNoQWN0aW9uIiwidXNlckludGVyYWN0aW9uQ291bnQiOjIzNX1dLCJrZXl3b3JkcyI6IltEZWFmaGVhdmVuLERlYXRod2lzaCxEZWF0aHdpc2hpbmMsVG91cixMaXZlLEpha2FydGEsSW5kb25lc2lhLHBvc3QtYmxhY2sgbWV0YWwsQmFuZCxBbWVyaWNhLDIwMTQsVmltZW8gU3RhZmYsVmltZW9dIiwiQHR5cGUiOiJWaWRlb09iamVjdCIsIkBjb250ZXh0IjoiaHR0cDovL3NjaGVtYS5vcmcifSx7Iml0ZW1MaXN0RWxlbWVudCI6W3siQHR5cGUiOiJMaXN0SXRlbSIsInBvc2l0aW9uIjoxLCJpdGVtIjp7IkBpZCI6Imh0dHBzOi8vdmltZW8uY29tL21lZ2FsYXVtYW4iLCJuYW1lIjoibWVnYWxhdW1hbiJ9fSx7IkB0eXBlIjoiTGlzdEl0ZW0iLCJwb3NpdGlvbiI6MiwiaXRlbSI6eyJAaWQiOiJodHRwczovL3ZpbWVvLmNvbS9tZWdhbGF1bWFuL3ZpZGVvcyIsIm5hbWUiOiJWaWRlb3MifX1dLCJAdHlwZSI6IkJyZWFkY3J1bWJMaXN0IiwiQGNvbnRleHQiOiJodHRwOi8vc2NoZW1hLm9yZyJ9XSAgICA8L3NjcmlwdD4KCjxzY3JpcHQ+CiAgICB2YXIgX19mYSA9IF9fZmEgfHwgW107CiAgICAvKioKICAgICAqIEJlY2F1c2Ugc2luZ2xlIHBhZ2UgYXBwbGljYXRpb25zIHN1Y2ggYXMgdGhlIGFwcCBzaGVsbCB3aWxsIGJlIHRyYWNraW5nCiAgICAgKiBGYXRhbCBBdHRyYWN0aW9uIHBhZ2Ugdmlld3Mgb24gUmVhY3QgbGlmZWN5Y2xlIGhvb2tzIChjb21wb25lbnREaWRNb3VudCkKICAgICAqIHdlIHdhbnQgdG8gYXZvaWQgZGlzcGF0Y2hpbmcgdGhlIHBhZ2V2aWV3IGV2ZW50IGZyb20gdGhlIFBIUCB0ZW1wbGF0ZQogICAgICogYW5kIGRlZmVyIHRoaXMgc29ydCBvZiB0cmFja2luZyBsb2dpYyB0byB0aGUgZnJvbnQgZW5kLgogICAgICoKICAgICAqIFRoaXMgY2hlY2sgYWxsb3dzIHVzIHRvIGRlY2xhcmUgaW4gYSBjb250cm9sbGVyIHdoZXRoZXIgb3Igbm90IHdlCiAgICAgKiB3YW50IHRvIGRpc3BhdGNoIHRoYXQgcHJlbGltaW5hcnkgcGFnZXZpZXcuCiAgICAgKgogICAgICogVGhlIHByb3BlcnR5IGlzIGFkZGl0aXZlIG9ubHksIGFzIHRvIG5vdCBhZmZlY3QgZXhpc3RpbmcgcGFnZXZpZXdzLgogICAgICovCiAgICAgICAgICAgIF9fZmEucHVzaChbJ3RyYWNrUGFnZXZpZXcnXSk7CiAgICAKICAgIC8qKgogICAgICogQWRkIHNlcnZlciBzaWRlIEFCTGluY29sbiBleHBlcmltZW50cyB0byBHVE0gZGF0YSBsYXllci4KICAgICAqLwogICAgCiAgICAgICAgdmFyIF9leHRlbmQgPSBmdW5jdGlvbigpe2Zvcih2YXIgcj1hcmd1bWVudHNbMF0sbj0xLGU9YXJndW1lbnRzLmxlbmd0aDtlPm47bisrKXt2YXIgdD1hcmd1bWVudHNbbl07Zm9yKHZhciBhIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShhKSYmKHJbYV09dFthXSl9cmV0dXJuIHJ9OwoKICAgICAgICB2YXIgQ1NTX0RJUiA9ICdodHRwczovL2YudmltZW9jZG4uY29tL3N0eWxlcy9jc3Nfb3B0LycsCiAgICAgICAgSlNfRElSID0gJ2h0dHBzOi8vZi52aW1lb2Nkbi5jb20vanNfb3B0LycsCiAgICAgICAgSU1BR0VfRElSID0gJ2h0dHBzOi8vZi52aW1lb2Nkbi5jb20vaW1hZ2VzX3Y2LycsCiAgICAgICAgRk9OVF9ESVIgPSAnaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9mb250cy8nLAogICAgICAgIFNWR19ESVIgPSAnaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9zdmcvJywKICAgICAgICAgICAgICAgIEJVSUxEX0hBU0ggPSAnNmFlYmUnOwoKICAgIAogICAgICAgIHZhciB2aW1lbyA9IF9leHRlbmQoKHdpbmRvdy52aW1lbyB8fCB7fSksIHsiYXBwX3ZlcnNpb24iOiJ2NiIsImRvbWFpbiI6InZpbWVvLmNvbSIsInVybCI6InZpbWVvLmNvbSIsImN1cl91c2VyIjpmYWxzZSwib3JpZ2luX3VzZXJfaWQiOm51bGwsIm9yaWdpbl91c2VyIjpmYWxzZSwiaXNfbW9iaWxlIjpmYWxzZX0pOwogICAgdmltZW8uY29uZmlnID0gX2V4dGVuZCgodmltZW8uY29uZmlnIHx8IHt9KSwgeyJzdGlja3lfdG9wbmF2Ijp7ImV4Y2x1ZGVkX3BhZ2VzIjpbIlZpbWVvXFxDb250cm9sbGVyXFxBYm91dENvbnRyb2xsZXI6bWFpbiIsIlZpbWVvXFxDb250cm9sbGVyXFxBYm91dENvbnRyb2xsZXI6cHJvZmVzc2lvbmFscyIsIlZpbWVvXFxDb250cm9sbGVyXFxBYm91dENvbnRyb2xsZXI6ZXZlcnlvbmUiLCJWaW1lb1xcQ29udHJvbGxlclxcSG9tZUNvbnRyb2xsZXI6dXBncmFkZSIsIlZpbWVvXFxDb250cm9sbGVyXFxTdG9yZUNvbnRyb2xsZXI6bWFpbiIsIlZpbWVvXFxDb250cm9sbGVyXFxVc2VyXFxTZXR0aW5nczJDb250cm9sbGVyOm1haW4iLCJWaW1lb1xcQ29udHJvbGxlclxcVXNlclxcU2V0dGluZ3MyQ29udHJvbGxlcjp0ZWFtX21lbWJlcnMiLCJWaW1lb1xcQ29udHJvbGxlclxcVXNlclxcU2V0dGluZ3MyQ29udHJvbGxlcjpwYXNzd29yZCIsIlZpbWVvXFxDb250cm9sbGVyXFxQcm9maWxlQ29udHJvbGxlcjptYWluIiwiVmltZW9cXENvbnRyb2xsZXJcXENsaXBTdGF0c0NvbnRyb2xsZXI6bWFpbiIsIlZpbWVvXFxDb250cm9sbGVyXFxDbGlwXFxTZXR0aW5nc1xcRW1iZWRDb250cm9sbGVyOmVtYmVkIiwiVmltZW9cXENvbnRyb2xsZXJcXFZpZGVvTWFuYWdlckNvbnRyb2xsZXIiLCJWaW1lb1xcQ29udHJvbGxlclxcVmlkZW9SZXZpZXdDb250cm9sbGVyIiwiVmltZW9cXENvbnRyb2xsZXJcXE1lc3NhZ2VzQ29udHJvbGxlciIsIlZpbWVvXFxDb250cm9sbGVyXFxTdGF0c0NvbnRyb2xsZXIiLCJWaW1lb1xcQ29udHJvbGxlclxcVXBsb2FkQ29udHJvbGxlciIsIlZpbWVvXFxDb250cm9sbGVyXFxPbkRlbWFuZFxcU2V0dGluZ3NDb250cm9sbGVyIiwiVmltZW9cXENvbnRyb2xsZXJcXENsaXBcXFNldHRpbmdzQ29udHJvbGxlciJdLCJzdGlja3lfaW5jbHVkZWRfcGFnZXMiOlsiVmltZW9cXENvbnRyb2xsZXJcXFN0b2NrXFxTdG9ja0hvbWVQYWdlQ29udHJvbGxlciIsIlZpbWVvXFxDb250cm9sbGVyXFxTdG9ja1xcU3RvY2tGb290YWdlQ29udHJvbGxlciIsIlZpbWVvXFxDb250cm9sbGVyXFxTdG9ja1xcU3RvY2tTZWFyY2hDb250cm9sbGVyIiwiVmltZW9cXENvbnRyb2xsZXJcXFN0b2NrXFxTdG9ja0NvbGxlY3Rpb25zQ29udHJvbGxlciIsIlZpbWVvXFxDb250cm9sbGVyXFxBbGJ1bUNvbnRyb2xsZXIiXSwidG9wbmF2X3dyYXBfc2VsZWN0b3IiOiIjdG9wbmF2X291dGVyX3dyYXAiLCJjb250ZW50X3dyYXBfc2VsZWN0b3IiOiIud3JhcF9jb250ZW50In0sImxvY2FsZSI6ImVuIiwib21uaXNlYXJjaF9lbmFibGVkIjpmYWxzZSwib21uaXNlYXJjaF9kaXNhYmxlZCI6bnVsbCwib21uaXNlYXJjaF9qd3QiOiJleUowZVhBaU9pSktWMVFpTENKaGJHY2lPaUpJVXpJMU5pSjkuZXlKbGVIQWlPakUyTURNNE1qTTRPREFzSW5WelpYSmZhV1FpT201MWJHd3NJbUZ3Y0Y5cFpDSTZOVGcwTnprc0luTmpiM0JsY3lJNkluQjFZbXhwWXlCd2NtbDJZWFJsSUdSbGJHVjBaU0lzSW5SbFlXMWZkWE5sY2w5cFpDSTZiblZzYkgwLjNEdVdtakoxV2VXQzNfVWE3WkRXS2xheThqWWhLZ3lGODdFMHZIa2tHaFUiLCJvbW5pc2VhcmNoX3VzZXIiOm51bGwsImFwaV91cmwiOiJhcGkudmltZW8uY29tIiwic2hvd19vbW5pc2VhcmNoX3RpcCI6ZmFsc2V9KTsKCiAgICAgICAgdmFyIF9faTE4bkxvY2FsZSA9ICdlbic7CiAgICB2YXIgbG9jYWxlQ29uZmlnID0gewogICAgICAgIGxhbmc6ICdlbicsCiAgICAgICAgJ0RhdGUnOiB7CiAgICAgICAgICAgIG1vbnRoczogWyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLAogICAgICAgICAgICBtb250aHNfYWJicjogWyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXSwKICAgICAgICAgICAgZGF5czogWyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLAogICAgICAgICAgICBkYXlzX2FiYnI6IFsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sCgogICAgICAgICAgICAvLyBDdWx0dXJlJ3MgZGF0ZSBvcmRlcjogTU0vREQvWVlZWQogICAgICAgICAgICBkYXRlT3JkZXI6IFsnZGF0ZScsICdtb250aCcsICd5ZWFyJ10sCiAgICAgICAgICAgIHNob3J0RGF0ZTogJyVkLyVtLyVZJywKICAgICAgICAgICAgc2hvcnRUaW1lOiAnJUk6JU0lcCcsCiAgICAgICAgICAgIEFNOiAnQU0nLAogICAgICAgICAgICBQTTogJ1BNJywKICAgICAgICAgICAgZmlyc3REYXlPZldlZWs6IDAsCgogICAgICAgICAgICAvLyBEYXRlLkV4dHJhcwogICAgICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbihkYXlPZk1vbnRoKXsKICAgICAgICAgICAgICAgIHJldHVybiBkYXlPZk1vbnRoOwogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAnRGF0ZVBpY2tlcic6IHsKICAgICAgICAgICAgc2VsZWN0X2FfdGltZTogIlNlbGVjdCBhIHRpbWUiLAogICAgICAgICAgICB1c2VfbW91c2Vfd2hlZWw6ICJVc2UgdGhlIG1vdXNlIHdoZWVsIHRvIHF1aWNrbHkgY2hhbmdlIHZhbHVlIiwKICAgICAgICAgICAgdGltZV9jb25maXJtX2J1dHRvbjogIk9LIiwKICAgICAgICAgICAgYXBwbHlfcmFuZ2U6ICJBcHBseSIsCiAgICAgICAgICAgIGNhbmNlbDogIkNhbmNlbCIsCiAgICAgICAgICAgIHdlZWs6ICJXayIgICAgICAgIH0sCiAgICAgICAgICAgICAgICAnTnVtYmVyJzogewogICAgICAgICAgICBkZWNpbWFsOiAnLicsCiAgICAgICAgICAgIGdyb3VwOiAnLCcsCiAgICAgICAgICAgIGN1cnJlbmN5OiB7CiAgICAgICAgICAgICAgICBwcmVmaXg6ICckJwogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAnRm9ybVZhbGlkYXRvcic6IHsicmVxdWlyZWQiOiJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIsInJlcXVpcmVkQ2hrIjoiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4ifSAgICB9OwoKICAgIHZhciBmdWxsTG9jYWxlID0gJyc7CgogICAgCiAgICAgICAgdmFyIENvcHkgPSB7dHJhbnNsYXRlOmZ1bmN0aW9uKHQsaSx1KXt2YXIgZT0nb2JqZWN0JyE9dHlwZW9mIHRoaXMuZGljdFt0XT90aGlzLmRpY3RbdF06aT90aGlzLmRpY3RbdF0ucGx1cmFsOnRoaXMuZGljdFt0XS5zaW5ndWxhcjtyZXR1cm4nb2JqZWN0Jz09dHlwZW9mIHUmJihlPXRoaXMuc3Vic3RpdHV0ZShlLHUpKSxlfSxzdWJzdGl0dXRlOmZ1bmN0aW9uKHQsaSl7cmV0dXJuIHZvaWQgMCE9PXQuc3Vic3RpdHV0ZT90LnN1YnN0aXR1dGUoaSk6dC5yZXBsYWNlKC9cXD9ceyhbXnt9XSspXH0vZyxmdW5jdGlvbih0LHUpe3JldHVybidcXCc9PXQuY2hhckF0KDApP3Quc2xpY2UoMSk6bnVsbCE9aVt1XT9pW3VdOicnfSl9LGRpY3Q6e319OwogICAgQ29weS5kaWN0ID0geyJkaWRfeW91X21lYW5fZW1haWwiOiJEaWQgeW91IG1lYW4gPGVtPntTVUdHRVNUfTxcL2VtPj8iLCJlbWFpbF9wYXNzd29yZF9taXNtYXRjaCI6IkVtYWlsIGFuZCBwYXNzd29yZCBkbyBub3QgbWF0Y2giLCJvb3BzX3RyeV9hZ2FpbiI6Ik9vcHMhIFNvbWV0aGluZyB3ZW50IHdyb25nLiBQbGVhc2UgdHJ5IGFnYWluLiIsImp1c3Rfbm93IjoianVzdCBub3ciLCJzZWNvbmRzX2FnbyI6eyJzaW5ndWxhciI6IntDT1VOVH0gc2Vjb25kIGFnbyIsInBsdXJhbCI6IntDT1VOVH0gc2Vjb25kcyBhZ28ifSwibWludXRlc19hZ28iOnsic2luZ3VsYXIiOiJ7Q09VTlR9IG1pbnV0ZSBhZ28iLCJwbHVyYWwiOiJ7Q09VTlR9IG1pbnV0ZXMgYWdvIn0sImhvdXJzX2FnbyI6eyJzaW5ndWxhciI6IntDT1VOVH0gaG91ciBhZ28iLCJwbHVyYWwiOiJ7Q09VTlR9IGhvdXJzIGFnbyJ9LCJvcGVuX2NvbW1lbnRfYm94IjoiQWRkIG5ldyBjb21tZW50IGluc3RlYWQgJnJhcXVvOyIsInVybF91bmF2YWlsYWJsZSI6IlNvcnJ5LCB0aGlzIHVybCBpcyB1bmF2YWlsYWJsZS4iLCJ1bnNhdmVkX2NoYW5nZXNfZ2VuZXJpYyI6IllvdSBoYXZlIHVuc2F2ZWQgY2hhbmdlcywgYXJlIHlvdSBzdXJlIHlvdSB3aXNoIHRvIGxlYXZlPyIsImFkZCI6IkFkZCIsInJlbW92ZSI6IlJlbW92ZSIsInNlbGVjdCI6IlNlbGVjdCIsIm5vX2ZvbGxvd2Vyc19mb3JfbGV0dGVyIjoiWW91IGRvbiZyc3F1bzt0IGZvbGxvdyBhbnlvbmUgdGhhdCBiZWdpbiB3aXRoIHRoZSBsZXR0ZXIgJmxkcXVvO3tQQUdFX0xFVFRFUn0mcmRxdW87Iiwic2hhcmVfbGltaXRfcmVhY2hlZCI6IllvdSBoYXZlIHJlYWNoZWQgdGhlIG1heGltdW0gbnVtYmVyIG9mIHVzZXJzIHRvIHNoYXJlIHdpdGguIiwiYXRfbGVhc3Rfb25lIjoiVGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgdXNlci4iLCJhdmFpbGFibGUiOiJBdmFpbGFibGUiLCJ1bmF2YWlsYWJsZSI6IlVuYXZhaWxhYmxlIiwiYnJvd3NlX2Vycm9yX2dlbmVyaWMiOiJTb3JyeSwgdGhlcmUgd2FzIGFuIGVycm9yIiwiYnJvd3NlX2Vycm9yX25vX3ZpZGVvcyI6IlNvcnJ5LCBubyB2aWRlb3MgZm91bmQiLCJmb2xsb3ciOiJGb2xsb3ciLCJmb2xsb3dpbmciOiJGb2xsb3dpbmciLCJ1bmZvbGxvdyI6IlVuZm9sbG93IiwidW5mb2xsb3dpbmciOiJVbmZvbGxvd2luZyIsImNvdW50X2NvbW1lbnRzIjp7InNpbmd1bGFyIjoie0NPVU5UfSBjb21tZW50IiwicGx1cmFsIjoie0NPVU5UfSBjb21tZW50cyJ9LCJmaXJzdF9jb21tZW50IjoiQmUgdGhlIGZpcnN0IHRvIGNvbW1lbnRcdTIwMjYiLCJub19jb21tZW50c19mb3JfeW91IjoiRm9yYmlkZGVuLiBZb3UgY2Fubm90IHBvc3QgY29tbWVudHMgb24gdGhpcyBwYWdlLiIsIm9vcHMiOiJPb3BzISIsInBsYXllcl90cnlfYWdhaW4iOiJUaGF0IHdhc24ndCBzdXBwb3NlZCB0byBoYXBwZW4uIFBsZWFzZSB0cnkgYWdhaW4gaW4gYSBmZXcgbWludXRlcy4iLCJkdXJhdGlvbl9pbnB1dF9taW5fZHVyYXRpb24iOiJUaGUgZHVyYXRpb24gY2Fubm90IGJlIGxlc3MgdGhhbiB7TUlOX0RVUkFUSU9OfS4iLCJkdXJhdGlvbl9pbnB1dF9tYXhfZHVyYXRpb24iOiJUaGUgZHVyYXRpb24gY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiB7TUFYX0RVUkFUSU9OfS4iLCJkdXJhdGlvbl9pbnB1dF9pbnZhbGlkX2NoYXJhY3RlcnMiOiIwLTkgYW5kIDogYXJlIHRoZSBvbmx5IGFjY2VwdGFibGUgaW5wdXRzLiIsImNsb3NlIjoiQ2xvc2UiLCJleHBhbmQiOiJFeHBhbmQiLCJsb2FkaW5nIjoiTG9hZGluZy4uLiIsInRvcCI6InRvcCIsImFkdmFuY2VkX3NlYXJjaCI6IkFkdmFuY2VkIFNlYXJjaCIsIm5vX3N1Z2dlc3Rpb25zIjoiTm8gc3VnZ2VzdGlvbnMiLCJyZWNlbnRfc2VhcmNoZXMiOiJSZWNlbnQgU2VhcmNoZXMiLCJzZWFyY2hfYWxsIjoiU2VhcmNoIEFsbCBvZiBWaW1lbyIsImVtYWlsX2FuZF9wYXNzd29yZCI6IlBsZWFzZSBlbnRlciB5b3VyIGVtYWlsIGFuZCBwYXNzd29yZCIsImVtYWlsX2FkZHJlc3MiOiJQbGVhc2UgZW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzIiwibmFtZV9lbWFpbF9hbmRfcGFzc3dvcmQiOiJQbGVhc2UgZW50ZXIgeW91ciBuYW1lLCBlbWFpbCwgYW5kIHBhc3N3b3JkIn07Cjwvc2NyaXB0PgoKICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2YudmltZW9jZG4uY29tL2pzX29wdC9nbG9iYWwvcGxheWVyX21hbmFnZXIubWluLmpzPzcxOGIxMGY1Ij48L3NjcmlwdD4KICAgIDxzY3JpcHQ+CiAgICAgICAgaWYgKHR5cGVvZiBwbGF5ZXJBc3NldFVybHMgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQbGF5ZXJNYW5hZ2VyLnJ1bihwbGF5ZXJBc3NldFVybHMpOwogICAgICAgICAgICAgICAgICAgIH0KICAgIDwvc2NyaXB0PgoKICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2YudmltZW9jZG4uY29tL2pzX29wdC9zdGlja3lfdG9wbmF2X2NvbWJpbmVkLm1pbi5qcz81ZmZkNmQ0ZSI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvcmVhY3RfcHJvZF9jb21iaW5lZC5taW4uanM/MDMxNzc1YTQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vanNfb3B0L2NsaXBfY29tYmluZWQubWluLmpzPzg1ODJlM2E1Ij48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2YudmltZW9jZG4uY29tL2pzX29wdC90b3BuYXZfY2FydF9idXR0b25fY29tYmluZWQubWluLmpzPzQ0ODhjMDkyIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2YudmltZW9jZG4uY29tL2pzX29wdC9fYnVuZGxlcy9jbGlwLmJ1bmRsZS5taW4uanM/YTE1ZTU2MDQiPjwvc2NyaXB0PgoKICAgIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL2YudmltZW9jZG4uY29tL2pzX29wdC9jbGlwX2JldGFfbGlic19hc3luY19jb21iaW5lZC5taW4uanM/NWNjNDZmZmIiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBhc3luYyBzcmM9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vanNfb3B0L19idW5kbGVzL2NyZWF0ZV9mYWNlYm9va19oZWFkZXIuYnVuZGxlLm1pbi5qcz85NTRjNDYwMCI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0PgogICAgICAgIGZ1bmN0aW9uIG9uVmltZW9Eb21SZWFkeShlKSB7CiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXZpbWVvLmJ5cGFzc19wbGF5ZXJfcmVzcG9uc2l2ZV9kZWxlZ2F0ZXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmltZW8ucGxheWVyX3Jlc3BvbnNpdmVfZGVsZWdhdGVzID0gdmltZW8ucGxheWVyX3Jlc3BvbnNpdmVfZGVsZWdhdGVzIHx8IHt9OwogICAgICAgICAgICAgICAgICAgICAgICB2aW1lby5wbGF5ZXJfcmVzcG9uc2l2ZV9kZWxlZ2F0ZXMud2lsbE9wZW5TaGFyZU92ZXJsYXkgPSB2aW1lby5wbGF5ZXJfcmVzcG9uc2l2ZV9kZWxlZ2F0ZXMud2lsbE9wZW5TaGFyZU92ZXJsYXkgfHwgZnVuY3Rpb24oaWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQbGF5ZXJNYW5hZ2VyLnBhdXNlQWxsUGxheWVycygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpbWVvLnNoYXJlLlBvcHVwKGlkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgICAgICAgICAgdmltZW8ucGxheWVyX3Jlc3BvbnNpdmVfZGVsZWdhdGVzLndpbGxPcGVuTG9naW5Gb3JtID0gdmltZW8ucGxheWVyX3Jlc3BvbnNpdmVfZGVsZWdhdGVzLndpbGxPcGVuTG9naW5Gb3JtIHx8IGZ1bmN0aW9uKGlkLCBjb250ZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZpbWVvLk1vZGFsICE9PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBsYXllck1hbmFnZXIucGF1c2VBbGxQbGF5ZXJzKCk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpbWVvLlNlc3Npb24uY3JlYXRlKHsgcGxheWVyOiAxLCBjbGlwX2lkOiBpZCwgY29udGV4dDogY29udGV4dCB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpbWVvLlNlc3Npb24uY3JlYXRlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoUGxheWVyTWFuYWdlcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgUGxheWVyTWFuYWdlci5zZXREZWZhdWx0RGVsZWdhdGUodmltZW8ucGxheWVyX3Jlc3BvbnNpdmVfZGVsZWdhdGVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgaWYgKFBsYXllck1hbmFnZXIpIHsKICAgICAgICAgICAgICAgICAgICBQbGF5ZXJNYW5hZ2VyLmRpc3BhdGNoUmVhZHlTaWduYWxzKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkucmVhZHkob25WaW1lb0RvbVJlYWR5KTsKICAgICAgICAgICAgPC9zY3JpcHQ+CgoKICAgIDwvYm9keT4KPC9odG1sPgo=
156
+ http_version:
157
+ recorded_at: Tue, 27 Oct 2020 18:22:01 GMT
158
+ recorded_with: VCR 3.0.3
@@ -0,0 +1,68 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: head
5
+ uri: https://api.vimeo.com/videos/98605382
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - VideoInfo/2.8.0
12
+ Authorization:
13
+ - bearer vimeo_access_token
14
+ Accept:
15
+ - application/vnd.vimeo.*+json;version=3.2
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Connection:
22
+ - keep-alive
23
+ Server:
24
+ - nginx
25
+ Content-Type:
26
+ - application/vnd.vimeo.video+json
27
+ Cache-Control:
28
+ - private, no-store, no-cache
29
+ Strict-Transport-Security:
30
+ - max-age=31536000; includeSubDomains; preload
31
+ X-Ratelimit-Limit:
32
+ - '50'
33
+ X-Ratelimit-Remaining:
34
+ - '48'
35
+ X-Ratelimit-Reset:
36
+ - '2020-10-27T18:24:07+00:00'
37
+ Request-Hash:
38
+ - 12385b1f
39
+ X-Bapp-Server:
40
+ - api-v4924-dv6rv
41
+ X-Vimeo-Dc:
42
+ - ge
43
+ Accept-Ranges:
44
+ - bytes
45
+ - bytes
46
+ Via:
47
+ - 1.1 varnish
48
+ - 1.1 varnish
49
+ Date:
50
+ - Tue, 27 Oct 2020 18:23:08 GMT
51
+ Age:
52
+ - '0'
53
+ X-Served-By:
54
+ - cache-bwi5124-BWI, cache-cwb20525-CWB
55
+ X-Cache:
56
+ - MISS, MISS
57
+ X-Cache-Hits:
58
+ - 0, 0
59
+ X-Timer:
60
+ - S1603822988.720412,VS0,VE397
61
+ Vary:
62
+ - Accept,Vimeo-Client-Id
63
+ body:
64
+ encoding: UTF-8
65
+ string: ''
66
+ http_version:
67
+ recorded_at: Tue, 27 Oct 2020 18:23:08 GMT
68
+ recorded_with: VCR 3.0.3
@@ -0,0 +1,130 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: head
5
+ uri: https://vimeo.com/0812455
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - VideoInfo/2.8.0
12
+ Accept:
13
+ - "*/*"
14
+ response:
15
+ status:
16
+ code: 404
17
+ message: Not Found
18
+ headers:
19
+ Connection:
20
+ - keep-alive
21
+ Content-Length:
22
+ - '149729'
23
+ Server:
24
+ - nginx
25
+ Content-Type:
26
+ - text/html; charset=UTF-8
27
+ Expires:
28
+ - Tue, 27 Oct 2020 06:22:45 GMT
29
+ X-Frame-Options:
30
+ - sameorigin
31
+ X-Bapp-Server:
32
+ - pweb-v4874-b2nhn
33
+ Via:
34
+ - 1.1 varnish, 1.1 varnish, 1.1 varnish
35
+ Cache-Control:
36
+ - no-store, no-cache, must-revalidate, post-check=0, pre-check=0
37
+ X-Varnish-Cache:
38
+ - '0'
39
+ X-Vserver:
40
+ - infra-webproxy-a-3
41
+ X-Vimeo-Dc:
42
+ - ge
43
+ Accept-Ranges:
44
+ - bytes
45
+ Date:
46
+ - Tue, 27 Oct 2020 18:22:45 GMT
47
+ Age:
48
+ - '0'
49
+ X-Served-By:
50
+ - cache-bwi5133-BWI, cache-cwb20521-CWB
51
+ X-Cache:
52
+ - MISS, MISS
53
+ X-Cache-Hits:
54
+ - 0, 0
55
+ X-Timer:
56
+ - S1603822965.997893,VS0,VE424
57
+ Vary:
58
+ - Accept-Encoding
59
+ body:
60
+ encoding: UTF-8
61
+ string: ''
62
+ http_version:
63
+ recorded_at: Tue, 27 Oct 2020 18:22:45 GMT
64
+ - request:
65
+ method: get
66
+ uri: https://vimeo.com/0812455
67
+ body:
68
+ encoding: US-ASCII
69
+ string: ''
70
+ headers:
71
+ Accept-Encoding:
72
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
73
+ Accept:
74
+ - "*/*"
75
+ User-Agent:
76
+ - Ruby
77
+ response:
78
+ status:
79
+ code: 404
80
+ message: Not Found
81
+ headers:
82
+ Connection:
83
+ - keep-alive
84
+ Content-Length:
85
+ - '35173'
86
+ Server:
87
+ - nginx
88
+ Content-Type:
89
+ - text/html; charset=UTF-8
90
+ Expires:
91
+ - Tue, 27 Oct 2020 06:22:45 GMT
92
+ X-Frame-Options:
93
+ - sameorigin
94
+ X-Bapp-Server:
95
+ - pweb-v4874-bdnd6
96
+ Via:
97
+ - 1.1 varnish
98
+ - 1.1 varnish
99
+ - 1.1 varnish
100
+ Cache-Control:
101
+ - no-store, no-cache, must-revalidate, post-check=0, pre-check=0
102
+ X-Varnish-Cache:
103
+ - '0'
104
+ X-Vserver:
105
+ - infra-webproxy-a-3
106
+ X-Vimeo-Dc:
107
+ - ge
108
+ Accept-Ranges:
109
+ - bytes
110
+ Date:
111
+ - Tue, 27 Oct 2020 18:22:46 GMT
112
+ Age:
113
+ - '0'
114
+ X-Served-By:
115
+ - cache-bwi5126-BWI, cache-cwb20523-CWB
116
+ X-Cache:
117
+ - MISS, MISS
118
+ X-Cache-Hits:
119
+ - 0, 0
120
+ X-Timer:
121
+ - S1603822966.796251,VS0,VE287
122
+ Vary:
123
+ - Accept-Encoding
124
+ body:
125
+ encoding: ASCII-8BIT
126
+ string: !binary |-
127
+ PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICAgIDxoZWFkPgogICAgICAgIAo8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CjxtZXRhIHByb3BlcnR5PSJmYjphcHBfaWQiIGNvbnRlbnQ9IjE5ODg0MDI4OTYzIj4KPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPgo8bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Ii8vcGxheWVyLnZpbWVvLmNvbSI+CjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iLy9pLnZpbWVvY2RuLmNvbSI+CjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iLy9mLnZpbWVvY2RuLmNvbSI+CjxsaW5rIHJlbD0ic2VhcmNoIiB0eXBlPSJhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sIiBocmVmPSIvc2VhcmNoL29wZW5zZWFyY2gueG1sIiB0aXRsZT0iVmltZW8iPgo8bGluayByZWw9ImxvZ28iIHR5cGU9ImltYWdlL3N2ZyIgaHJlZj0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9sb2dvLnN2ZyI+CgoKICAgICAgICAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCxpbml0aWFsLXNjYWxlPTEuMCxtYXhpbXVtLXNjYWxlPTUuMCx1c2VyLXNjYWxhYmxlPXllcyI+CiAgICAKCiAgICAgICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IlNvcnJ5LCB3ZSBjb3VsZG4mcnNxdW87dCBmaW5kIHRoYXQgcGFnZSI+CiAgICAgICAgPG1ldGEgbmFtZT0icm9ib3RzIiBjb250ZW50PSJub2luZGV4Ij4KCgoKCiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24tcHJlY29tcG9zZWQiIGhyZWY9Imh0dHBzOi8vaS52aW1lb2Nkbi5jb20vZmF2aWNvbi9tYWluLXRvdWNoXzE4MCI+Cgo8bGluayByZWw9Im1hc2staWNvbiIgaHJlZj0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9zdmcvbGVnYWN5X3ZpZXdfc3VwcG9ydC9pcmlzX2ljb25fdl82NC5zdmc/ZTEwMTNkZWI2ZTg0NDcwYzc1ZDA3NWY4NmRiM2NkNGQ5NGQyMTgxNiIgY29sb3I9IiMxNzI3MmUiPgoKICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9pbWFnZXNfdjYvZmF2aWNvbi5pY28/ZTEwMTNkZWI2ZTg0NDcwYzc1ZDA3NWY4NmRiM2NkNGQ5NGQyMTgxNiIgZGF0YS1wbGF5PSJodHRwczovL2kudmltZW9jZG4uY29tL2Zhdmljb24vcGxheV8zMiIgZGF0YS1wYXVzZT0iaHR0cHM6Ly9pLnZpbWVvY2RuLmNvbS9mYXZpY29uL3BhdXNlXzMyIj4KCjxtZXRhIG5hbWU9Im1zYXBwbGljYXRpb24tVGlsZUltYWdlIiBjb250ZW50PSJodHRwczovL2kudmltZW9jZG4uY29tL2Zhdmljb24vbWFpbi10b3VjaF8xNDQiPgo8bWV0YSBuYW1lPSJtc2FwcGxpY2F0aW9uLVRpbGVDb2xvciIgY29udGVudD0iIzAwYWRlZiI+CiAgICAgICAgPHRpdGxlPlZpbWVVaE9oPC90aXRsZT4KICAgICAgICA8c2NyaXB0PgogICAgICAgICAgICAvLyBGaXJzdCBJbnB1dCBEZWxheSB0cmFja2luZy4gSGlnaCBwcmlvcml0eSBsb2FkaW5nIHRvIG5vdCBtaXNzIGV2ZW50CiAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Hb29nbGVDaHJvbWVMYWJzL2ZpcnN0LWlucHV0LWRlbGF5L2Jsb2IvbWFzdGVyL2Rpc3QvZmlyc3QtaW5wdXQtZGVsYXkubWluLmpzCiAgICAgICAgICAgICFmdW5jdGlvbihuLGUpe3ZhciB0LG8saSxjPVtdLGY9e3Bhc3NpdmU6ITAsY2FwdHVyZTohMH0scj1uZXcgRGF0ZSxhPSJwb2ludGVydXAiLHU9InBvaW50ZXJjYW5jZWwiO2Z1bmN0aW9uIHAobixjKXt0fHwodD1jLG89bixpPW5ldyBEYXRlLHcoZSkscygpKX1mdW5jdGlvbiBzKCl7bz49MCYmbzxpLXImJihjLmZvckVhY2goZnVuY3Rpb24obil7bihvLHQpfSksYz1bXSl9ZnVuY3Rpb24gbCh0KXtpZih0LmNhbmNlbGFibGUpe3ZhciBvPSh0LnRpbWVTdGFtcD4xZTEyP25ldyBEYXRlOnBlcmZvcm1hbmNlLm5vdygpKS10LnRpbWVTdGFtcDsicG9pbnRlcmRvd24iPT10LnR5cGU/ZnVuY3Rpb24odCxvKXtmdW5jdGlvbiBpKCl7cCh0LG8pLHIoKX1mdW5jdGlvbiBjKCl7cigpfWZ1bmN0aW9uIHIoKXtlKGEsaSxmKSxlKHUsYyxmKX1uKGEsaSxmKSxuKHUsYyxmKX0obyx0KTpwKG8sdCl9fWZ1bmN0aW9uIHcobil7WyJjbGljayIsIm1vdXNlZG93biIsImtleWRvd24iLCJ0b3VjaHN0YXJ0IiwicG9pbnRlcmRvd24iXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe24oZSxsLGYpfSl9dyhuKSxzZWxmLnBlcmZNZXRyaWNzPXNlbGYucGVyZk1ldHJpY3N8fHt9LHNlbGYucGVyZk1ldHJpY3Mub25GaXJzdElucHV0RGVsYXk9ZnVuY3Rpb24obil7Yy5wdXNoKG4pLHMoKX19KGFkZEV2ZW50TGlzdGVuZXIscmVtb3ZlRXZlbnRMaXN0ZW5lcik7CiAgICAgICAgPC9zY3JpcHQ+CiAgICAgICAgPHNjcmlwdD4KICAgICAgICAgIC8vIENyZWF0ZSBQZXJmb3JtYW5jZU9ic2VydmVyIGZvciB0cmFja2luZyBUVEkKICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Hb29nbGVDaHJvbWVMYWJzL3R0aS1wb2x5ZmlsbAogICAgICAgICAgIWZ1bmN0aW9uKCl7aWYoJ1BlcmZvcm1hbmNlTG9uZ1Rhc2tUaW1pbmcnIGluIHdpbmRvdyl7dmFyIGc9d2luZG93Ll9fdHRpPXtlOltdfTsKICAgICAgICAgIGcubz1uZXcgUGVyZm9ybWFuY2VPYnNlcnZlcihmdW5jdGlvbihsKXtnLmU9Zy5lLmNvbmNhdChsLmdldEVudHJpZXMoKSl9KTsKICAgICAgICAgIGcuby5vYnNlcnZlKHtlbnRyeVR5cGVzOlsnbG9uZ3Rhc2snXX0pfX0oKTsKICAgICAgICA8L3NjcmlwdD4KICAgICAgICA8c2NyaXB0PgogICAgICAgICAgLy8gTmV3IFJlbGljIEFnZW50CiAgICAgICAgICA7d2luZG93Lk5SRVVNfHwoTlJFVU09e30pO05SRVVNLmluaXQ9e2Rpc3RyaWJ1dGVkX3RyYWNpbmc6e2VuYWJsZWQ6dHJ1ZX0scHJpdmFjeTp7Y29va2llc19lbmFibGVkOnRydWV9fTsKICAgICAgICAgIHdpbmRvdy5OUkVVTXx8KE5SRVVNPXt9KSxfX25yX3JlcXVpcmU9ZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIobil7aWYoIWVbbl0pe3ZhciBvPWVbbl09e2V4cG9ydHM6e319O3Rbbl1bMF0uY2FsbChvLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG89dFtuXVsxXVtlXTtyZXR1cm4gcihvfHxlKX0sbyxvLmV4cG9ydHMpfXJldHVybiBlW25dLmV4cG9ydHN9aWYoImZ1bmN0aW9uIj09dHlwZW9mIF9fbnJfcmVxdWlyZSlyZXR1cm4gX19ucl9yZXF1aXJlO2Zvcih2YXIgbz0wO288bi5sZW5ndGg7bysrKXIobltvXSk7cmV0dXJuIHJ9KHsxOltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0KXt0cnl7cy5jb25zb2xlJiZjb25zb2xlLmxvZyh0KX1jYXRjaChlKXt9fXZhciBvLGk9dCgiZWUiKSxhPXQoMjUpLHM9e307dHJ5e289bG9jYWxTdG9yYWdlLmdldEl0ZW0oIl9fbnJfZmxhZ3MiKS5zcGxpdCgiLCIpLGNvbnNvbGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBjb25zb2xlLmxvZyYmKHMuY29uc29sZT0hMCxvLmluZGV4T2YoImRldiIpIT09LTEmJihzLmRldj0hMCksby5pbmRleE9mKCJucl9kZXYiKSE9PS0xJiYocy5uckRldj0hMCkpfWNhdGNoKGMpe31zLm5yRGV2JiZpLm9uKCJpbnRlcm5hbC1lcnJvciIsZnVuY3Rpb24odCl7cih0LnN0YWNrKX0pLHMuZGV2JiZpLm9uKCJmbi1lcnIiLGZ1bmN0aW9uKHQsZSxuKXtyKG4uc3RhY2spfSkscy5kZXYmJihyKCJOUiBBR0VOVCBJTiBERVZFTE9QTUVOVCBNT0RFIikscigiZmxhZ3M6ICIrYShzLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHR9KS5qb2luKCIsICIpKSl9LHt9XSwyOltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0LGUsbixyLHMpe3RyeXtsP2wtPTE6byhzfHxuZXcgVW5jYXVnaHRFeGNlcHRpb24odCxlLG4pLCEwKX1jYXRjaChmKXt0cnl7aSgiaWVyciIsW2YsYy5ub3coKSwhMF0pfWNhdGNoKGQpe319cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHUmJnUuYXBwbHkodGhpcyxhKGFyZ3VtZW50cykpfWZ1bmN0aW9uIFVuY2F1Z2h0RXhjZXB0aW9uKHQsZSxuKXt0aGlzLm1lc3NhZ2U9dHx8IlVuY2F1Z2h0IGVycm9yIHdpdGggbm8gYWRkaXRpb25hbCBpbmZvcm1hdGlvbiIsdGhpcy5zb3VyY2VVUkw9ZSx0aGlzLmxpbmU9bn1mdW5jdGlvbiBvKHQsZSl7dmFyIG49ZT9udWxsOmMubm93KCk7aSgiZXJyIixbdCxuXSl9dmFyIGk9dCgiaGFuZGxlIiksYT10KDI2KSxzPXQoImVlIiksYz10KCJsb2FkZXIiKSxmPXQoImdvcyIpLHU9d2luZG93Lm9uZXJyb3IsZD0hMSxwPSJuckBzZWVuRXJyb3IiLGw9MDtjLmZlYXR1cmVzLmVycj0hMCx0KDEpLHdpbmRvdy5vbmVycm9yPXI7dHJ5e3Rocm93IG5ldyBFcnJvcn1jYXRjaChoKXsic3RhY2siaW4gaCYmKHQoMTMpLHQoMTIpLCJhZGRFdmVudExpc3RlbmVyImluIHdpbmRvdyYmdCg2KSxjLnhocldyYXBwYWJsZSYmdCgxNCksZD0hMCl9cy5vbigiZm4tc3RhcnQiLGZ1bmN0aW9uKHQsZSxuKXtkJiYobCs9MSl9KSxzLm9uKCJmbi1lcnIiLGZ1bmN0aW9uKHQsZSxuKXtkJiYhbltwXSYmKGYobixwLGZ1bmN0aW9uKCl7cmV0dXJuITB9KSx0aGlzLnRocm93bj0hMCxvKG4pKX0pLHMub24oImZuLWVuZCIsZnVuY3Rpb24oKXtkJiYhdGhpcy50aHJvd24mJmw+MCYmKGwtPTEpfSkscy5vbigiaW50ZXJuYWwtZXJyb3IiLGZ1bmN0aW9uKHQpe2koImllcnIiLFt0LGMubm93KCksITBdKX0pfSx7fV0sMzpbZnVuY3Rpb24odCxlLG4pe3QoImxvYWRlciIpLmZlYXR1cmVzLmlucz0hMH0se31dLDQ6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKCl7TCsrLEM9Zy5oYXNoLHRoaXNbdV09eS5ub3coKX1mdW5jdGlvbiBvKCl7TC0tLGcuaGFzaCE9PUMmJmkoMCwhMCk7dmFyIHQ9eS5ub3coKTt0aGlzW2hdPX5+dGhpc1toXSt0LXRoaXNbdV0sdGhpc1tkXT10fWZ1bmN0aW9uIGkodCxlKXtFLmVtaXQoIm5ld1VSTCIsWyIiK2csZV0pfWZ1bmN0aW9uIGEodCxlKXt0Lm9uKGUsZnVuY3Rpb24oKXt0aGlzW2VdPXkubm93KCl9KX12YXIgcz0iLXN0YXJ0IixjPSItZW5kIixmPSItYm9keSIsdT0iZm4iK3MsZD0iZm4iK2MscD0iY2IiK3MsbD0iY2IiK2MsaD0ianNUaW1lIixtPSJmZXRjaCIsdj0iYWRkRXZlbnRMaXN0ZW5lciIsdz13aW5kb3csZz13LmxvY2F0aW9uLHk9dCgibG9hZGVyIik7aWYod1t2XSYmeS54aHJXcmFwcGFibGUpe3ZhciB4PXQoMTApLGI9dCgxMSksRT10KDgpLE89dCg2KSxSPXQoMTMpLFA9dCg3KSxUPXQoMTQpLE49dCg5KSxNPXQoImVlIiksUz1NLmdldCgidHJhY2VyIik7dCgxNikseS5mZWF0dXJlcy5zcGE9ITA7dmFyIEMsTD0wO00ub24odSxyKSxNLm9uKHAsciksTS5vbihkLG8pLE0ub24obCxvKSxNLmJ1ZmZlcihbdSxkLCJ4aHItZG9uZSIsInhoci1yZXNvbHZlZCJdKSxPLmJ1ZmZlcihbdV0pLFIuYnVmZmVyKFsic2V0VGltZW91dCIrYywiY2xlYXJUaW1lb3V0IitzLHVdKSxULmJ1ZmZlcihbdSwibmV3LXhociIsInNlbmQteGhyIitzXSksUC5idWZmZXIoW20rcyxtKyItZG9uZSIsbStmK3MsbStmK2NdKSxFLmJ1ZmZlcihbIm5ld1VSTCJdKSx4LmJ1ZmZlcihbdV0pLGIuYnVmZmVyKFsicHJvcGFnYXRlIixwLGwsImV4ZWN1dG9yLWVyciIsInJlc29sdmUiK3NdKSxTLmJ1ZmZlcihbdSwibm8tIit1XSksTi5idWZmZXIoWyJuZXctanNvbnAiLCJjYi1zdGFydCIsImpzb25wLWVycm9yIiwianNvbnAtZW5kIl0pLGEoVCwic2VuZC14aHIiK3MpLGEoTSwieGhyLXJlc29sdmVkIiksYShNLCJ4aHItZG9uZSIpLGEoUCxtK3MpLGEoUCxtKyItZG9uZSIpLGEoTiwibmV3LWpzb25wIiksYShOLCJqc29ucC1lbmQiKSxhKE4sImNiLXN0YXJ0IiksRS5vbigicHVzaFN0YXRlLWVuZCIsaSksRS5vbigicmVwbGFjZVN0YXRlLWVuZCIsaSksd1t2XSgiaGFzaGNoYW5nZSIsaSwhMCksd1t2XSgibG9hZCIsaSwhMCksd1t2XSgicG9wc3RhdGUiLGZ1bmN0aW9uKCl7aSgwLEw+MSl9LCEwKX19LHt9XSw1OltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0KXt9aWYod2luZG93LnBlcmZvcm1hbmNlJiZ3aW5kb3cucGVyZm9ybWFuY2UudGltaW5nJiZ3aW5kb3cucGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZSl7dmFyIG89dCgiZWUiKSxpPXQoImhhbmRsZSIpLGE9dCgxMykscz10KDEyKSxjPSJsZWFyUmVzb3VyY2VUaW1pbmdzIixmPSJhZGRFdmVudExpc3RlbmVyIix1PSJyZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGwiLGQ9ImJzdFJlc291cmNlIixwPSJyZXNvdXJjZSIsbD0iLXN0YXJ0IixoPSItZW5kIixtPSJmbiIrbCx2PSJmbiIraCx3PSJic3RUaW1lciIsZz0icHVzaFN0YXRlIix5PXQoImxvYWRlciIpO3kuZmVhdHVyZXMuc3RuPSEwLHQoOCksImFkZEV2ZW50TGlzdGVuZXIiaW4gd2luZG93JiZ0KDYpO3ZhciB4PU5SRVVNLm8uRVY7by5vbihtLGZ1bmN0aW9uKHQsZSl7dmFyIG49dFswXTtuIGluc3RhbmNlb2YgeCYmKHRoaXMuYnN0U3RhcnQ9eS5ub3coKSl9KSxvLm9uKHYsZnVuY3Rpb24odCxlKXt2YXIgbj10WzBdO24gaW5zdGFuY2VvZiB4JiZpKCJic3QiLFtuLGUsdGhpcy5ic3RTdGFydCx5Lm5vdygpXSl9KSxhLm9uKG0sZnVuY3Rpb24odCxlLG4pe3RoaXMuYnN0U3RhcnQ9eS5ub3coKSx0aGlzLmJzdFR5cGU9bn0pLGEub24odixmdW5jdGlvbih0LGUpe2kodyxbZSx0aGlzLmJzdFN0YXJ0LHkubm93KCksdGhpcy5ic3RUeXBlXSl9KSxzLm9uKG0sZnVuY3Rpb24oKXt0aGlzLmJzdFN0YXJ0PXkubm93KCl9KSxzLm9uKHYsZnVuY3Rpb24odCxlKXtpKHcsW2UsdGhpcy5ic3RTdGFydCx5Lm5vdygpLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiXSl9KSxvLm9uKGcrbCxmdW5jdGlvbih0KXt0aGlzLnRpbWU9eS5ub3coKSx0aGlzLnN0YXJ0UGF0aD1sb2NhdGlvbi5wYXRobmFtZStsb2NhdGlvbi5oYXNofSksby5vbihnK2gsZnVuY3Rpb24odCl7aSgiYnN0SGlzdCIsW2xvY2F0aW9uLnBhdGhuYW1lK2xvY2F0aW9uLmhhc2gsdGhpcy5zdGFydFBhdGgsdGhpcy50aW1lXSl9KSxmIGluIHdpbmRvdy5wZXJmb3JtYW5jZSYmKHdpbmRvdy5wZXJmb3JtYW5jZVsiYyIrY10/d2luZG93LnBlcmZvcm1hbmNlW2ZdKHUsZnVuY3Rpb24odCl7aShkLFt3aW5kb3cucGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZShwKV0pLHdpbmRvdy5wZXJmb3JtYW5jZVsiYyIrY10oKX0sITEpOndpbmRvdy5wZXJmb3JtYW5jZVtmXSgid2Via2l0Iit1LGZ1bmN0aW9uKHQpe2koZCxbd2luZG93LnBlcmZvcm1hbmNlLmdldEVudHJpZXNCeVR5cGUocCldKSx3aW5kb3cucGVyZm9ybWFuY2VbIndlYmtpdEMiK2NdKCl9LCExKSksZG9jdW1lbnRbZl0oInNjcm9sbCIscix7cGFzc2l2ZTohMH0pLGRvY3VtZW50W2ZdKCJrZXlwcmVzcyIsciwhMSksZG9jdW1lbnRbZl0oImNsaWNrIixyLCExKX19LHt9XSw2OltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0KXtmb3IodmFyIGU9dDtlJiYhZS5oYXNPd25Qcm9wZXJ0eSh1KTspZT1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7ZSYmbyhlKX1mdW5jdGlvbiBvKHQpe3MuaW5QbGFjZSh0LFt1LGRdLCItIixpKX1mdW5jdGlvbiBpKHQsZSl7cmV0dXJuIHRbMV19dmFyIGE9dCgiZWUiKS5nZXQoImV2ZW50cyIpLHM9dCgid3JhcC1mdW5jdGlvbiIpKGEsITApLGM9dCgiZ29zIiksZj1YTUxIdHRwUmVxdWVzdCx1PSJhZGRFdmVudExpc3RlbmVyIixkPSJyZW1vdmVFdmVudExpc3RlbmVyIjtlLmV4cG9ydHM9YSwiZ2V0UHJvdG90eXBlT2YiaW4gT2JqZWN0PyhyKGRvY3VtZW50KSxyKHdpbmRvdykscihmLnByb3RvdHlwZSkpOmYucHJvdG90eXBlLmhhc093blByb3BlcnR5KHUpJiYobyh3aW5kb3cpLG8oZi5wcm90b3R5cGUpKSxhLm9uKHUrIi1zdGFydCIsZnVuY3Rpb24odCxlKXt2YXIgbj10WzFdLHI9YyhuLCJuckB3cmFwcGVkIixmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXtpZigiZnVuY3Rpb24iPT10eXBlb2Ygbi5oYW5kbGVFdmVudClyZXR1cm4gbi5oYW5kbGVFdmVudC5hcHBseShuLGFyZ3VtZW50cyl9dmFyIGU9e29iamVjdDp0LCJmdW5jdGlvbiI6bn1bdHlwZW9mIG5dO3JldHVybiBlP3MoZSwiZm4tIixudWxsLGUubmFtZXx8ImFub255bW91cyIpOm59KTt0aGlzLndyYXBwZWQ9dFsxXT1yfSksYS5vbihkKyItc3RhcnQiLGZ1bmN0aW9uKHQpe3RbMV09dGhpcy53cmFwcGVkfHx0WzFdfSl9LHt9XSw3OltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0LGUsbil7dmFyIHI9dFtlXTsiZnVuY3Rpb24iPT10eXBlb2YgciYmKHRbZV09ZnVuY3Rpb24oKXt2YXIgdD1pKGFyZ3VtZW50cyksZT17fTtvLmVtaXQobisiYmVmb3JlLXN0YXJ0IixbdF0sZSk7dmFyIGE7ZVttXSYmZVttXS5kdCYmKGE9ZVttXS5kdCk7dmFyIHM9ci5hcHBseSh0aGlzLHQpO3JldHVybiBvLmVtaXQobisic3RhcnQiLFt0LGFdLHMpLHMudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gby5lbWl0KG4rImVuZCIsW251bGwsdF0scyksdH0sZnVuY3Rpb24odCl7dGhyb3cgby5lbWl0KG4rImVuZCIsW3RdLHMpLHR9KX0pfXZhciBvPXQoImVlIikuZ2V0KCJmZXRjaCIpLGk9dCgyNiksYT10KDI1KTtlLmV4cG9ydHM9bzt2YXIgcz13aW5kb3csYz0iZmV0Y2gtIixmPWMrImJvZHktIix1PVsiYXJyYXlCdWZmZXIiLCJibG9iIiwianNvbiIsInRleHQiLCJmb3JtRGF0YSJdLGQ9cy5SZXF1ZXN0LHA9cy5SZXNwb25zZSxsPXMuZmV0Y2gsaD0icHJvdG90eXBlIixtPSJuckBjb250ZXh0IjtkJiZwJiZsJiYoYSh1LGZ1bmN0aW9uKHQsZSl7cihkW2hdLGUsZikscihwW2hdLGUsZil9KSxyKHMsImZldGNoIixjKSxvLm9uKGMrImVuZCIsZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO2lmKGUpe3ZhciByPWUuaGVhZGVycy5nZXQoImNvbnRlbnQtbGVuZ3RoIik7bnVsbCE9PXImJihuLnJ4U2l6ZT1yKSxvLmVtaXQoYysiZG9uZSIsW251bGwsZV0sbil9ZWxzZSBvLmVtaXQoYysiZG9uZSIsW3RdLG4pfSkpfSx7fV0sODpbZnVuY3Rpb24odCxlLG4pe3ZhciByPXQoImVlIikuZ2V0KCJoaXN0b3J5Iiksbz10KCJ3cmFwLWZ1bmN0aW9uIikocik7ZS5leHBvcnRzPXI7dmFyIGk9d2luZG93Lmhpc3RvcnkmJndpbmRvdy5oaXN0b3J5LmNvbnN0cnVjdG9yJiZ3aW5kb3cuaGlzdG9yeS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsYT13aW5kb3cuaGlzdG9yeTtpJiZpLnB1c2hTdGF0ZSYmaS5yZXBsYWNlU3RhdGUmJihhPWkpLG8uaW5QbGFjZShhLFsicHVzaFN0YXRlIiwicmVwbGFjZVN0YXRlIl0sIi0iKX0se31dLDk6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQpe2Z1bmN0aW9uIGUoKXtjLmVtaXQoImpzb25wLWVuZCIsW10scCksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixlLCExKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImVycm9yIixuLCExKX1mdW5jdGlvbiBuKCl7Yy5lbWl0KCJqc29ucC1lcnJvciIsW10scCksYy5lbWl0KCJqc29ucC1lbmQiLFtdLHApLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsZSwhMSksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsbiwhMSl9dmFyIHI9dCYmInN0cmluZyI9PXR5cGVvZiB0Lm5vZGVOYW1lJiYic2NyaXB0Ij09PXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZihyKXt2YXIgbz0iZnVuY3Rpb24iPT10eXBlb2YgdC5hZGRFdmVudExpc3RlbmVyO2lmKG8pe3ZhciBhPWkodC5zcmMpO2lmKGEpe3ZhciB1PXMoYSksZD0iZnVuY3Rpb24iPT10eXBlb2YgdS5wYXJlbnRbdS5rZXldO2lmKGQpe3ZhciBwPXt9O2YuaW5QbGFjZSh1LnBhcmVudCxbdS5rZXldLCJjYi0iLHApLHQuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsZSwhMSksdC5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsbiwhMSksYy5lbWl0KCJuZXctanNvbnAiLFt0LnNyY10scCl9fX19fWZ1bmN0aW9uIG8oKXtyZXR1cm4iYWRkRXZlbnRMaXN0ZW5lciJpbiB3aW5kb3d9ZnVuY3Rpb24gaSh0KXt2YXIgZT10Lm1hdGNoKHUpO3JldHVybiBlP2VbMV06bnVsbH1mdW5jdGlvbiBhKHQsZSl7dmFyIG49dC5tYXRjaChwKSxyPW5bMV0sbz1uWzNdO3JldHVybiBvP2EobyxlW3JdKTplW3JdfWZ1bmN0aW9uIHModCl7dmFyIGU9dC5tYXRjaChkKTtyZXR1cm4gZSYmZS5sZW5ndGg+PTM/e2tleTplWzJdLHBhcmVudDphKGVbMV0sd2luZG93KX06e2tleTp0LHBhcmVudDp3aW5kb3d9fXZhciBjPXQoImVlIikuZ2V0KCJqc29ucCIpLGY9dCgid3JhcC1mdW5jdGlvbiIpKGMpO2lmKGUuZXhwb3J0cz1jLG8oKSl7dmFyIHU9L1s/Jl0oPzpjYWxsYmFja3xjYik9KFteJiNdKykvLGQ9LyguKilcLihbXi5dKykvLHA9L14oXHcrKShcLnwkKSguKikkLyxsPVsiYXBwZW5kQ2hpbGQiLCJpbnNlcnRCZWZvcmUiLCJyZXBsYWNlQ2hpbGQiXTtOb2RlJiZOb2RlLnByb3RvdHlwZSYmTm9kZS5wcm90b3R5cGUuYXBwZW5kQ2hpbGQ/Zi5pblBsYWNlKE5vZGUucHJvdG90eXBlLGwsImRvbS0iKTooZi5pblBsYWNlKEhUTUxFbGVtZW50LnByb3RvdHlwZSxsLCJkb20tIiksZi5pblBsYWNlKEhUTUxIZWFkRWxlbWVudC5wcm90b3R5cGUsbCwiZG9tLSIpLGYuaW5QbGFjZShIVE1MQm9keUVsZW1lbnQucHJvdG90eXBlLGwsImRvbS0iKSksYy5vbigiZG9tLXN0YXJ0IixmdW5jdGlvbih0KXtyKHRbMF0pfSl9fSx7fV0sMTA6W2Z1bmN0aW9uKHQsZSxuKXt2YXIgcj10KCJlZSIpLmdldCgibXV0YXRpb24iKSxvPXQoIndyYXAtZnVuY3Rpb24iKShyKSxpPU5SRVVNLm8uTU87ZS5leHBvcnRzPXIsaSYmKHdpbmRvdy5NdXRhdGlvbk9ic2VydmVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgaT9uZXcgaShvKHQsImZuLSIpKTppLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sTXV0YXRpb25PYnNlcnZlci5wcm90b3R5cGU9aS5wcm90b3R5cGUpfSx7fV0sMTE6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQpe3ZhciBlPWEuY29udGV4dCgpLG49cyh0LCJleGVjdXRvci0iLGUpLHI9bmV3IGYobik7cmV0dXJuIGEuY29udGV4dChyKS5nZXRDdHg9ZnVuY3Rpb24oKXtyZXR1cm4gZX0sYS5lbWl0KCJuZXctcHJvbWlzZSIsW3IsZV0sZSkscn1mdW5jdGlvbiBvKHQsZSl7cmV0dXJuIGV9dmFyIGk9dCgid3JhcC1mdW5jdGlvbiIpLGE9dCgiZWUiKS5nZXQoInByb21pc2UiKSxzPWkoYSksYz10KDI1KSxmPU5SRVVNLm8uUFI7ZS5leHBvcnRzPWEsZiYmKHdpbmRvdy5Qcm9taXNlPXIsWyJhbGwiLCJyYWNlIl0uZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT1mW3RdO2ZbdF09ZnVuY3Rpb24obil7ZnVuY3Rpb24gcih0KXtyZXR1cm4gZnVuY3Rpb24oKXthLmVtaXQoInByb3BhZ2F0ZSIsW251bGwsIW9dLGkpLG89b3x8IXR9fXZhciBvPSExO2MobixmdW5jdGlvbihlLG4pe1Byb21pc2UucmVzb2x2ZShuKS50aGVuKHIoImFsbCI9PT10KSxyKCExKSl9KTt2YXIgaT1lLmFwcGx5KGYsYXJndW1lbnRzKSxzPWYucmVzb2x2ZShpKTtyZXR1cm4gc319KSxbInJlc29sdmUiLCJyZWplY3QiXS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPWZbdF07Zlt0XT1mdW5jdGlvbih0KXt2YXIgbj1lLmFwcGx5KGYsYXJndW1lbnRzKTtyZXR1cm4gdCE9PW4mJmEuZW1pdCgicHJvcGFnYXRlIixbdCwhMF0sbiksbn19KSxmLnByb3RvdHlwZVsiY2F0Y2giXT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50aGVuKG51bGwsdCl9LGYucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZi5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpyfX0pLGMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZiksZnVuY3Rpb24odCxlKXt0cnl7cltlXT1mW2VdfWNhdGNoKG4pe319KSxhLm9uKCJleGVjdXRvci1zdGFydCIsZnVuY3Rpb24odCl7dFswXT1zKHRbMF0sInJlc29sdmUtIix0aGlzKSx0WzFdPXModFsxXSwicmVzb2x2ZS0iLHRoaXMpfSksYS5vbigiZXhlY3V0b3ItZXJyIixmdW5jdGlvbih0LGUsbil7dFsxXShuKX0pLHMuaW5QbGFjZShmLnByb3RvdHlwZSxbInRoZW4iXSwidGhlbi0iLG8pLGEub24oInRoZW4tc3RhcnQiLGZ1bmN0aW9uKHQsZSl7dGhpcy5wcm9taXNlPWUsdFswXT1zKHRbMF0sImNiLSIsdGhpcyksdFsxXT1zKHRbMV0sImNiLSIsdGhpcyl9KSxhLm9uKCJ0aGVuLWVuZCIsZnVuY3Rpb24odCxlLG4pe3RoaXMubmV4dFByb21pc2U9bjt2YXIgcj10aGlzLnByb21pc2U7YS5lbWl0KCJwcm9wYWdhdGUiLFtyLCEwXSxuKX0pLGEub24oImNiLWVuZCIsZnVuY3Rpb24odCxlLG4pe2EuZW1pdCgicHJvcGFnYXRlIixbbiwhMF0sdGhpcy5uZXh0UHJvbWlzZSl9KSxhLm9uKCJwcm9wYWdhdGUiLGZ1bmN0aW9uKHQsZSxuKXt0aGlzLmdldEN0eCYmIWV8fCh0aGlzLmdldEN0eD1mdW5jdGlvbigpe2lmKHQgaW5zdGFuY2VvZiBQcm9taXNlKXZhciBlPWEuY29udGV4dCh0KTtyZXR1cm4gZSYmZS5nZXRDdHg/ZS5nZXRDdHgoKTp0aGlzfSl9KSxyLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIiIrZn0pfSx7fV0sMTI6W2Z1bmN0aW9uKHQsZSxuKXt2YXIgcj10KCJlZSIpLmdldCgicmFmIiksbz10KCJ3cmFwLWZ1bmN0aW9uIikociksaT0iZXF1ZXN0QW5pbWF0aW9uRnJhbWUiO2UuZXhwb3J0cz1yLG8uaW5QbGFjZSh3aW5kb3csWyJyIitpLCJtb3pSIitpLCJ3ZWJraXRSIitpLCJtc1IiK2ldLCJyYWYtIiksci5vbigicmFmLXN0YXJ0IixmdW5jdGlvbih0KXt0WzBdPW8odFswXSwiZm4tIil9KX0se31dLDEzOltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0LGUsbil7dFswXT1hKHRbMF0sImZuLSIsbnVsbCxuKX1mdW5jdGlvbiBvKHQsZSxuKXt0aGlzLm1ldGhvZD1uLHRoaXMudGltZXJEdXJhdGlvbj1pc05hTih0WzFdKT8wOit0WzFdLHRbMF09YSh0WzBdLCJmbi0iLHRoaXMsbil9dmFyIGk9dCgiZWUiKS5nZXQoInRpbWVyIiksYT10KCJ3cmFwLWZ1bmN0aW9uIikoaSkscz0ic2V0VGltZW91dCIsYz0ic2V0SW50ZXJ2YWwiLGY9ImNsZWFyVGltZW91dCIsdT0iLXN0YXJ0IixkPSItIjtlLmV4cG9ydHM9aSxhLmluUGxhY2Uod2luZG93LFtzLCJzZXRJbW1lZGlhdGUiXSxzK2QpLGEuaW5QbGFjZSh3aW5kb3csW2NdLGMrZCksYS5pblBsYWNlKHdpbmRvdyxbZiwiY2xlYXJJbW1lZGlhdGUiXSxmK2QpLGkub24oYyt1LHIpLGkub24ocyt1LG8pfSx7fV0sMTQ6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQsZSl7ZC5pblBsYWNlKGUsWyJvbnJlYWR5c3RhdGVjaGFuZ2UiXSwiZm4tIixzKX1mdW5jdGlvbiBvKCl7dmFyIHQ9dGhpcyxlPXUuY29udGV4dCh0KTt0LnJlYWR5U3RhdGU+MyYmIWUucmVzb2x2ZWQmJihlLnJlc29sdmVkPSEwLHUuZW1pdCgieGhyLXJlc29sdmVkIixbXSx0KSksZC5pblBsYWNlKHQsZywiZm4tIixzKX1mdW5jdGlvbiBpKHQpe3kucHVzaCh0KSxoJiYoYj9iLnRoZW4oYSk6dj92KGEpOihFPS1FLE8uZGF0YT1FKSl9ZnVuY3Rpb24gYSgpe2Zvcih2YXIgdD0wO3Q8eS5sZW5ndGg7dCsrKXIoW10seVt0XSk7eS5sZW5ndGgmJih5PVtdKX1mdW5jdGlvbiBzKHQsZSl7cmV0dXJuIGV9ZnVuY3Rpb24gYyh0LGUpe2Zvcih2YXIgbiBpbiB0KWVbbl09dFtuXTtyZXR1cm4gZX10KDYpO3ZhciBmPXQoImVlIiksdT1mLmdldCgieGhyIiksZD10KCJ3cmFwLWZ1bmN0aW9uIikodSkscD1OUkVVTS5vLGw9cC5YSFIsaD1wLk1PLG09cC5QUix2PXAuU0ksdz0icmVhZHlzdGF0ZWNoYW5nZSIsZz1bIm9ubG9hZCIsIm9uZXJyb3IiLCJvbmFib3J0Iiwib25sb2Fkc3RhcnQiLCJvbmxvYWRlbmQiLCJvbnByb2dyZXNzIiwib250aW1lb3V0Il0seT1bXTtlLmV4cG9ydHM9dTt2YXIgeD13aW5kb3cuWE1MSHR0cFJlcXVlc3Q9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IGwodCk7dHJ5e3UuZW1pdCgibmV3LXhociIsW2VdLGUpLGUuYWRkRXZlbnRMaXN0ZW5lcih3LG8sITEpfWNhdGNoKG4pe3RyeXt1LmVtaXQoImludGVybmFsLWVycm9yIixbbl0pfWNhdGNoKHIpe319cmV0dXJuIGV9O2lmKGMobCx4KSx4LnByb3RvdHlwZT1sLnByb3RvdHlwZSxkLmluUGxhY2UoeC5wcm90b3R5cGUsWyJvcGVuIiwic2VuZCJdLCIteGhyLSIscyksdS5vbigic2VuZC14aHItc3RhcnQiLGZ1bmN0aW9uKHQsZSl7cih0LGUpLGkoZSl9KSx1Lm9uKCJvcGVuLXhoci1zdGFydCIsciksaCl7dmFyIGI9bSYmbS5yZXNvbHZlKCk7aWYoIXYmJiFtKXt2YXIgRT0xLE89ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoRSk7bmV3IGgoYSkub2JzZXJ2ZShPLHtjaGFyYWN0ZXJEYXRhOiEwfSl9fWVsc2UgZi5vbigiZm4tZW5kIixmdW5jdGlvbih0KXt0WzBdJiZ0WzBdLnR5cGU9PT13fHxhKCl9KX0se31dLDE1OltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0KXtpZighaSh0KSlyZXR1cm4gbnVsbDt2YXIgZT13aW5kb3cuTlJFVU07aWYoIWUubG9hZGVyX2NvbmZpZylyZXR1cm4gbnVsbDt2YXIgbj0oZS5sb2FkZXJfY29uZmlnLmFjY291bnRJRHx8IiIpLnRvU3RyaW5nKCl8fG51bGwscj0oZS5sb2FkZXJfY29uZmlnLmFnZW50SUR8fCIiKS50b1N0cmluZygpfHxudWxsLHM9KGUubG9hZGVyX2NvbmZpZy50cnVzdEtleXx8IiIpLnRvU3RyaW5nKCl8fG51bGw7aWYoIW58fCFyKXJldHVybiBudWxsO3ZhciBjPWEuZ2VuZXJhdGVDYXRJZCgpLGY9YS5nZW5lcmF0ZUNhdElkKCksdT1EYXRlLm5vdygpLGQ9byhjLGYsdSxuLHIscyk7cmV0dXJue2hlYWRlcjpkLGd1aWQ6Yyx0cmFjZUlkOmYsdGltZXN0YW1wOnV9fWZ1bmN0aW9uIG8odCxlLG4scixvLGkpe3ZhciBhPSJidG9hImluIHdpbmRvdyYmImZ1bmN0aW9uIj09dHlwZW9mIHdpbmRvdy5idG9hO2lmKCFhKXJldHVybiBudWxsO3ZhciBzPXt2OlswLDFdLGQ6e3R5OiJCcm93c2VyIixhYzpyLGFwOm8saWQ6dCx0cjplLHRpOm59fTtyZXR1cm4gaSYmciE9PWkmJihzLmQudGs9aSksYnRvYShKU09OLnN0cmluZ2lmeShzKSl9ZnVuY3Rpb24gaSh0KXt2YXIgZT0hMSxuPSExLHI9e307aWYoImluaXQiaW4gTlJFVU0mJiJkaXN0cmlidXRlZF90cmFjaW5nImluIE5SRVVNLmluaXQmJihyPU5SRVVNLmluaXQuZGlzdHJpYnV0ZWRfdHJhY2luZyxuPSEhci5lbmFibGVkKSxuKWlmKHQuc2FtZU9yaWdpbillPSEwO2Vsc2UgaWYoci5hbGxvd2VkX29yaWdpbnMgaW5zdGFuY2VvZiBBcnJheSlmb3IodmFyIG89MDtvPHIuYWxsb3dlZF9vcmlnaW5zLmxlbmd0aDtvKyspe3ZhciBpPXMoci5hbGxvd2VkX29yaWdpbnNbb10pO2lmKHQuaG9zdG5hbWU9PT1pLmhvc3RuYW1lJiZ0LnByb3RvY29sPT09aS5wcm90b2NvbCYmdC5wb3J0PT09aS5wb3J0KXtlPSEwO2JyZWFrfX1yZXR1cm4gbiYmZX12YXIgYT10KDIzKSxzPXQoMTcpO2UuZXhwb3J0cz17Z2VuZXJhdGVUcmFjZVBheWxvYWQ6cixzaG91bGRHZW5lcmF0ZVRyYWNlOml9fSx7fV0sMTY6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQpe3ZhciBlPXRoaXMucGFyYW1zLG49dGhpcy5tZXRyaWNzO2lmKCF0aGlzLmVuZGVkKXt0aGlzLmVuZGVkPSEwO2Zvcih2YXIgcj0wO3I8cDtyKyspdC5yZW1vdmVFdmVudExpc3RlbmVyKGRbcl0sdGhpcy5saXN0ZW5lciwhMSk7ZS5hYm9ydGVkfHwobi5kdXJhdGlvbj1hLm5vdygpLXRoaXMuc3RhcnRUaW1lLHRoaXMubG9hZENhcHR1cmVDYWxsZWR8fDQhPT10LnJlYWR5U3RhdGU/bnVsbD09ZS5zdGF0dXMmJihlLnN0YXR1cz0wKTppKHRoaXMsdCksbi5jYlRpbWU9dGhpcy5jYlRpbWUsdS5lbWl0KCJ4aHItZG9uZSIsW3RdLHQpLHMoInhociIsW2Usbix0aGlzLnN0YXJ0VGltZV0pKX19ZnVuY3Rpb24gbyh0LGUpe3ZhciBuPWMoZSkscj10LnBhcmFtcztyLmhvc3Q9bi5ob3N0bmFtZSsiOiIrbi5wb3J0LHIucGF0aG5hbWU9bi5wYXRobmFtZSx0LnBhcnNlZE9yaWdpbj1jKGUpLHQuc2FtZU9yaWdpbj10LnBhcnNlZE9yaWdpbi5zYW1lT3JpZ2lufWZ1bmN0aW9uIGkodCxlKXt0LnBhcmFtcy5zdGF0dXM9ZS5zdGF0dXM7dmFyIG49dihlLHQubGFzdFNpemUpO2lmKG4mJih0Lm1ldHJpY3MucnhTaXplPW4pLHQuc2FtZU9yaWdpbil7dmFyIHI9ZS5nZXRSZXNwb25zZUhlYWRlcigiWC1OZXdSZWxpYy1BcHAtRGF0YSIpO3ImJih0LnBhcmFtcy5jYXQ9ci5zcGxpdCgiLCAiKS5wb3AoKSl9dC5sb2FkQ2FwdHVyZUNhbGxlZD0hMH12YXIgYT10KCJsb2FkZXIiKTtpZihhLnhocldyYXBwYWJsZSl7dmFyIHM9dCgiaGFuZGxlIiksYz10KDE3KSxmPXQoMTUpLmdlbmVyYXRlVHJhY2VQYXlsb2FkLHU9dCgiZWUiKSxkPVsibG9hZCIsImVycm9yIiwiYWJvcnQiLCJ0aW1lb3V0Il0scD1kLmxlbmd0aCxsPXQoImlkIiksaD10KDIxKSxtPXQoMjApLHY9dCgxOCksdz13aW5kb3cuWE1MSHR0cFJlcXVlc3Q7YS5mZWF0dXJlcy54aHI9ITAsdCgxNCksdCg3KSx1Lm9uKCJuZXcteGhyIixmdW5jdGlvbih0KXt2YXIgZT10aGlzO2UudG90YWxDYnM9MCxlLmNhbGxlZD0wLGUuY2JUaW1lPTAsZS5lbmQ9cixlLmVuZGVkPSExLGUueGhyR3VpZHM9e30sZS5sYXN0U2l6ZT1udWxsLGUubG9hZENhcHR1cmVDYWxsZWQ9ITEsdC5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixmdW5jdGlvbihuKXtpKGUsdCl9LCExKSxoJiYoaD4zNHx8aDwxMCl8fHdpbmRvdy5vcGVyYXx8dC5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsZnVuY3Rpb24odCl7ZS5sYXN0U2l6ZT10LmxvYWRlZH0sITEpfSksdS5vbigib3Blbi14aHItc3RhcnQiLGZ1bmN0aW9uKHQpe3RoaXMucGFyYW1zPXttZXRob2Q6dFswXX0sbyh0aGlzLHRbMV0pLHRoaXMubWV0cmljcz17fX0pLHUub24oIm9wZW4teGhyLWVuZCIsZnVuY3Rpb24odCxlKXsibG9hZGVyX2NvbmZpZyJpbiBOUkVVTSYmInhwaWQiaW4gTlJFVU0ubG9hZGVyX2NvbmZpZyYmdGhpcy5zYW1lT3JpZ2luJiZlLnNldFJlcXVlc3RIZWFkZXIoIlgtTmV3UmVsaWMtSUQiLE5SRVVNLmxvYWRlcl9jb25maWcueHBpZCk7dmFyIG49Zih0aGlzLnBhcnNlZE9yaWdpbik7biYmbi5oZWFkZXImJihlLnNldFJlcXVlc3RIZWFkZXIoIm5ld3JlbGljIixuLmhlYWRlciksdGhpcy5kdD1uKX0pLHUub24oInNlbmQteGhyLXN0YXJ0IixmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMubWV0cmljcyxyPXRbMF0sbz10aGlzO2lmKG4mJnIpe3ZhciBpPW0ocik7aSYmKG4udHhTaXplPWkpfXRoaXMuc3RhcnRUaW1lPWEubm93KCksdGhpcy5saXN0ZW5lcj1mdW5jdGlvbih0KXt0cnl7ImFib3J0IiE9PXQudHlwZXx8by5sb2FkQ2FwdHVyZUNhbGxlZHx8KG8ucGFyYW1zLmFib3J0ZWQ9ITApLCgibG9hZCIhPT10LnR5cGV8fG8uY2FsbGVkPT09by50b3RhbENicyYmKG8ub25sb2FkQ2FsbGVkfHwiZnVuY3Rpb24iIT10eXBlb2YgZS5vbmxvYWQpKSYmby5lbmQoZSl9Y2F0Y2gobil7dHJ5e3UuZW1pdCgiaW50ZXJuYWwtZXJyb3IiLFtuXSl9Y2F0Y2gocil7fX19O2Zvcih2YXIgcz0wO3M8cDtzKyspZS5hZGRFdmVudExpc3RlbmVyKGRbc10sdGhpcy5saXN0ZW5lciwhMSl9KSx1Lm9uKCJ4aHItY2ItdGltZSIsZnVuY3Rpb24odCxlLG4pe3RoaXMuY2JUaW1lKz10LGU/dGhpcy5vbmxvYWRDYWxsZWQ9ITA6dGhpcy5jYWxsZWQrPTEsdGhpcy5jYWxsZWQhPT10aGlzLnRvdGFsQ2JzfHwhdGhpcy5vbmxvYWRDYWxsZWQmJiJmdW5jdGlvbiI9PXR5cGVvZiBuLm9ubG9hZHx8dGhpcy5lbmQobil9KSx1Lm9uKCJ4aHItbG9hZC1hZGRlZCIsZnVuY3Rpb24odCxlKXt2YXIgbj0iIitsKHQpKyEhZTt0aGlzLnhockd1aWRzJiYhdGhpcy54aHJHdWlkc1tuXSYmKHRoaXMueGhyR3VpZHNbbl09ITAsdGhpcy50b3RhbENicys9MSl9KSx1Lm9uKCJ4aHItbG9hZC1yZW1vdmVkIixmdW5jdGlvbih0LGUpe3ZhciBuPSIiK2wodCkrISFlO3RoaXMueGhyR3VpZHMmJnRoaXMueGhyR3VpZHNbbl0mJihkZWxldGUgdGhpcy54aHJHdWlkc1tuXSx0aGlzLnRvdGFsQ2JzLT0xKX0pLHUub24oImFkZEV2ZW50TGlzdGVuZXItZW5kIixmdW5jdGlvbih0LGUpe2UgaW5zdGFuY2VvZiB3JiYibG9hZCI9PT10WzBdJiZ1LmVtaXQoInhoci1sb2FkLWFkZGVkIixbdFsxXSx0WzJdXSxlKX0pLHUub24oInJlbW92ZUV2ZW50TGlzdGVuZXItZW5kIixmdW5jdGlvbih0LGUpe2UgaW5zdGFuY2VvZiB3JiYibG9hZCI9PT10WzBdJiZ1LmVtaXQoInhoci1sb2FkLXJlbW92ZWQiLFt0WzFdLHRbMl1dLGUpfSksdS5vbigiZm4tc3RhcnQiLGZ1bmN0aW9uKHQsZSxuKXtlIGluc3RhbmNlb2YgdyYmKCJvbmxvYWQiPT09biYmKHRoaXMub25sb2FkPSEwKSwoImxvYWQiPT09KHRbMF0mJnRbMF0udHlwZSl8fHRoaXMub25sb2FkKSYmKHRoaXMueGhyQ2JTdGFydD1hLm5vdygpKSl9KSx1Lm9uKCJmbi1lbmQiLGZ1bmN0aW9uKHQsZSl7dGhpcy54aHJDYlN0YXJ0JiZ1LmVtaXQoInhoci1jYi10aW1lIixbYS5ub3coKS10aGlzLnhockNiU3RhcnQsdGhpcy5vbmxvYWQsZV0sZSl9KSx1Lm9uKCJmZXRjaC1iZWZvcmUtc3RhcnQiLGZ1bmN0aW9uKHQpe3ZhciBlLG49dFsxXXx8e307InN0cmluZyI9PXR5cGVvZiB0WzBdP2U9dFswXTp0WzBdJiZ0WzBdLnVybCYmKGU9dFswXS51cmwpLGUmJih0aGlzLnBhcnNlZE9yaWdpbj1jKGUpLHRoaXMuc2FtZU9yaWdpbj10aGlzLnBhcnNlZE9yaWdpbi5zYW1lT3JpZ2luKTt2YXIgcj1mKHRoaXMucGFyc2VkT3JpZ2luKTtpZihyJiZyLmhlYWRlcil7dmFyIG89ci5oZWFkZXI7aWYoInN0cmluZyI9PXR5cGVvZiB0WzBdKXt2YXIgaT17fTtmb3IodmFyIGEgaW4gbilpW2FdPW5bYV07aS5oZWFkZXJzPW5ldyBIZWFkZXJzKG4uaGVhZGVyc3x8e30pLGkuaGVhZGVycy5zZXQoIm5ld3JlbGljIixvKSx0aGlzLmR0PXIsdC5sZW5ndGg+MT90WzFdPWk6dC5wdXNoKGkpfWVsc2UgdFswXSYmdFswXS5oZWFkZXJzJiYodFswXS5oZWFkZXJzLmFwcGVuZCgibmV3cmVsaWMiLG8pLHRoaXMuZHQ9cil9fSl9fSx7fV0sMTc6W2Z1bmN0aW9uKHQsZSxuKXt2YXIgcj17fTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYodCBpbiByKXJldHVybiByW3RdO3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSxuPXdpbmRvdy5sb2NhdGlvbixvPXt9O2UuaHJlZj10LG8ucG9ydD1lLnBvcnQ7dmFyIGk9ZS5ocmVmLnNwbGl0KCI6Ly8iKTshby5wb3J0JiZpWzFdJiYoby5wb3J0PWlbMV0uc3BsaXQoIi8iKVswXS5zcGxpdCgiQCIpLnBvcCgpLnNwbGl0KCI6IilbMV0pLG8ucG9ydCYmIjAiIT09by5wb3J0fHwoby5wb3J0PSJodHRwcyI9PT1pWzBdPyI0NDMiOiI4MCIpLG8uaG9zdG5hbWU9ZS5ob3N0bmFtZXx8bi5ob3N0bmFtZSxvLnBhdGhuYW1lPWUucGF0aG5hbWUsby5wcm90b2NvbD1pWzBdLCIvIiE9PW8ucGF0aG5hbWUuY2hhckF0KDApJiYoby5wYXRobmFtZT0iLyIrby5wYXRobmFtZSk7dmFyIGE9IWUucHJvdG9jb2x8fCI6Ij09PWUucHJvdG9jb2x8fGUucHJvdG9jb2w9PT1uLnByb3RvY29sLHM9ZS5ob3N0bmFtZT09PWRvY3VtZW50LmRvbWFpbiYmZS5wb3J0PT09bi5wb3J0O3JldHVybiBvLnNhbWVPcmlnaW49YSYmKCFlLmhvc3RuYW1lfHxzKSwiLyI9PT1vLnBhdGhuYW1lJiYoclt0XT1vKSxvfX0se31dLDE4OltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0LGUpe3ZhciBuPXQucmVzcG9uc2VUeXBlO3JldHVybiJqc29uIj09PW4mJm51bGwhPT1lP2U6ImFycmF5YnVmZmVyIj09PW58fCJibG9iIj09PW58fCJqc29uIj09PW4/byh0LnJlc3BvbnNlKToidGV4dCI9PT1ufHwiIj09PW58fHZvaWQgMD09PW4/byh0LnJlc3BvbnNlVGV4dCk6dm9pZCAwfXZhciBvPXQoMjApO2UuZXhwb3J0cz1yfSx7fV0sMTk6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKCl7fWZ1bmN0aW9uIG8odCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBpKHQsW2Yubm93KCldLmNvbmNhdChzKGFyZ3VtZW50cykpLGU/bnVsbDp0aGlzLG4pLGU/dm9pZCAwOnRoaXN9fXZhciBpPXQoImhhbmRsZSIpLGE9dCgyNSkscz10KDI2KSxjPXQoImVlIikuZ2V0KCJ0cmFjZXIiKSxmPXQoImxvYWRlciIpLHU9TlJFVU07InVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3cubmV3cmVsaWMmJihuZXdyZWxpYz11KTt2YXIgZD1bInNldFBhZ2VWaWV3TmFtZSIsInNldEN1c3RvbUF0dHJpYnV0ZSIsInNldEVycm9ySGFuZGxlciIsImZpbmlzaGVkIiwiYWRkVG9UcmFjZSIsImlubGluZUhpdCIsImFkZFJlbGVhc2UiXSxwPSJhcGktIixsPXArIml4bi0iO2EoZCxmdW5jdGlvbih0LGUpe3VbZV09byhwK2UsITAsImFwaSIpfSksdS5hZGRQYWdlQWN0aW9uPW8ocCsiYWRkUGFnZUFjdGlvbiIsITApLHUuc2V0Q3VycmVudFJvdXRlTmFtZT1vKHArInJvdXRlTmFtZSIsITApLGUuZXhwb3J0cz1uZXdyZWxpYyx1LmludGVyYWN0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuKG5ldyByKS5nZXQoKX07dmFyIGg9ci5wcm90b3R5cGU9e2NyZWF0ZVRyYWNlcjpmdW5jdGlvbih0LGUpe3ZhciBuPXt9LHI9dGhpcyxvPSJmdW5jdGlvbiI9PXR5cGVvZiBlO3JldHVybiBpKGwrInRyYWNlciIsW2Yubm93KCksdCxuXSxyKSxmdW5jdGlvbigpe2lmKGMuZW1pdCgobz8iIjoibm8tIikrImZuLXN0YXJ0IixbZi5ub3coKSxyLG9dLG4pLG8pdHJ5e3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1jYXRjaCh0KXt0aHJvdyBjLmVtaXQoImZuLWVyciIsW2FyZ3VtZW50cyx0aGlzLHRdLG4pLHR9ZmluYWxseXtjLmVtaXQoImZuLWVuZCIsW2Yubm93KCldLG4pfX19fTthKCJhY3Rpb25UZXh0LHNldE5hbWUsc2V0QXR0cmlidXRlLHNhdmUsaWdub3JlLG9uRW5kLGdldENvbnRleHQsZW5kLGdldCIuc3BsaXQoIiwiKSxmdW5jdGlvbih0LGUpe2hbZV09byhsK2UpfSksbmV3cmVsaWMubm90aWNlRXJyb3I9ZnVuY3Rpb24odCxlKXsic3RyaW5nIj09dHlwZW9mIHQmJih0PW5ldyBFcnJvcih0KSksaSgiZXJyIixbdCxmLm5vdygpLCExLGVdKX19LHt9XSwyMDpbZnVuY3Rpb24odCxlLG4pe2UuZXhwb3J0cz1mdW5jdGlvbih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQmJnQubGVuZ3RoKXJldHVybiB0Lmxlbmd0aDtpZigib2JqZWN0Ij09dHlwZW9mIHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJnQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmdC5ieXRlTGVuZ3RoKXJldHVybiB0LmJ5dGVMZW5ndGg7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBCbG9iJiZ0IGluc3RhbmNlb2YgQmxvYiYmdC5zaXplKXJldHVybiB0LnNpemU7aWYoISgidW5kZWZpbmVkIiE9dHlwZW9mIEZvcm1EYXRhJiZ0IGluc3RhbmNlb2YgRm9ybURhdGEpKXRyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCkubGVuZ3RofWNhdGNoKGUpe3JldHVybn19fX0se31dLDIxOltmdW5jdGlvbih0LGUsbil7dmFyIHI9MCxvPW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0ZpcmVmb3hbXC9cc10oXGQrXC5cZCspLyk7byYmKHI9K29bMV0pLGUuZXhwb3J0cz1yfSx7fV0sMjI6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQsZSl7dmFyIG49dC5nZXRFbnRyaWVzKCk7bi5mb3JFYWNoKGZ1bmN0aW9uKHQpeyJmaXJzdC1wYWludCI9PT10Lm5hbWU/YygidGltaW5nIixbImZwIixNYXRoLmZsb29yKHQuc3RhcnRUaW1lKV0pOiJmaXJzdC1jb250ZW50ZnVsLXBhaW50Ij09PXQubmFtZSYmYygidGltaW5nIixbImZjcCIsTWF0aC5mbG9vcih0LnN0YXJ0VGltZSldKX0pfWZ1bmN0aW9uIG8odCxlKXt2YXIgbj10LmdldEVudHJpZXMoKTtuLmxlbmd0aD4wJiZjKCJsY3AiLFtuW24ubGVuZ3RoLTFdXSl9ZnVuY3Rpb24gaSh0KXtpZih0IGluc3RhbmNlb2YgdSYmIXApe3ZhciBlLG49TWF0aC5yb3VuZCh0LnRpbWVTdGFtcCk7ZT1uPjFlMTI/RGF0ZS5ub3coKS1uOmYubm93KCktbixwPSEwLGMoInRpbWluZyIsWyJmaSIsbix7dHlwZTp0LnR5cGUsZmlkOmV9XSl9fWlmKCEoImluaXQiaW4gTlJFVU0mJiJwYWdlX3ZpZXdfdGltaW5nImluIE5SRVVNLmluaXQmJiJlbmFibGVkImluIE5SRVVNLmluaXQucGFnZV92aWV3X3RpbWluZyYmTlJFVU0uaW5pdC5wYWdlX3ZpZXdfdGltaW5nLmVuYWJsZWQ9PT0hMSkpe3ZhciBhLHMsYz10KCJoYW5kbGUiKSxmPXQoImxvYWRlciIpLHU9TlJFVU0uby5FVjtpZigiUGVyZm9ybWFuY2VPYnNlcnZlciJpbiB3aW5kb3cmJiJmdW5jdGlvbiI9PXR5cGVvZiB3aW5kb3cuUGVyZm9ybWFuY2VPYnNlcnZlcil7YT1uZXcgUGVyZm9ybWFuY2VPYnNlcnZlcihyKSxzPW5ldyBQZXJmb3JtYW5jZU9ic2VydmVyKG8pO3RyeXthLm9ic2VydmUoe2VudHJ5VHlwZXM6WyJwYWludCJdfSkscy5vYnNlcnZlKHtlbnRyeVR5cGVzOlsibGFyZ2VzdC1jb250ZW50ZnVsLXBhaW50Il19KX1jYXRjaChkKXt9fWlmKCJhZGRFdmVudExpc3RlbmVyImluIGRvY3VtZW50KXt2YXIgcD0hMSxsPVsiY2xpY2siLCJrZXlkb3duIiwibW91c2Vkb3duIiwicG9pbnRlcmRvd24iLCJ0b3VjaHN0YXJ0Il07bC5mb3JFYWNoKGZ1bmN0aW9uKHQpe2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIodCxpLCExKX0pfX19LHt9XSwyMzpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIoKXtmdW5jdGlvbiB0KCl7cmV0dXJuIGU/MTUmZVtuKytdOjE2Kk1hdGgucmFuZG9tKCl8MH12YXIgZT1udWxsLG49MCxyPXdpbmRvdy5jcnlwdG98fHdpbmRvdy5tc0NyeXB0bztyJiZyLmdldFJhbmRvbVZhbHVlcyYmKGU9ci5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoMzEpKSk7Zm9yKHZhciBvLGk9Inh4eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eCIsYT0iIixzPTA7czxpLmxlbmd0aDtzKyspbz1pW3NdLCJ4Ij09PW8/YSs9dCgpLnRvU3RyaW5nKDE2KToieSI9PT1vPyhvPTMmdCgpfDgsYSs9by50b1N0cmluZygxNikpOmErPW87cmV0dXJuIGF9ZnVuY3Rpb24gbygpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gZT8xNSZlW24rK106MTYqTWF0aC5yYW5kb20oKXwwfXZhciBlPW51bGwsbj0wLHI9d2luZG93LmNyeXB0b3x8d2luZG93Lm1zQ3J5cHRvO3ImJnIuZ2V0UmFuZG9tVmFsdWVzJiZVaW50OEFycmF5JiYoZT1yLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheSgzMSkpKTtmb3IodmFyIG89W10saT0wO2k8MTY7aSsrKW8ucHVzaCh0KCkudG9TdHJpbmcoMTYpKTtyZXR1cm4gby5qb2luKCIiKX1lLmV4cG9ydHM9e2dlbmVyYXRlVXVpZDpyLGdlbmVyYXRlQ2F0SWQ6b319LHt9XSwyNDpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCxlKXtpZighbylyZXR1cm4hMTtpZih0IT09bylyZXR1cm4hMTtpZighZSlyZXR1cm4hMDtpZighaSlyZXR1cm4hMTtmb3IodmFyIG49aS5zcGxpdCgiLiIpLHI9ZS5zcGxpdCgiLiIpLGE9MDthPHIubGVuZ3RoO2ErKylpZihyW2FdIT09blthXSlyZXR1cm4hMTtyZXR1cm4hMH12YXIgbz1udWxsLGk9bnVsbCxhPS9WZXJzaW9uXC8oXFMrKVxzK1NhZmFyaS87aWYobmF2aWdhdG9yLnVzZXJBZ2VudCl7dmFyIHM9bmF2aWdhdG9yLnVzZXJBZ2VudCxjPXMubWF0Y2goYSk7YyYmcy5pbmRleE9mKCJDaHJvbWUiKT09PS0xJiZzLmluZGV4T2YoIkNocm9taXVtIik9PT0tMSYmKG89IlNhZmFyaSIsaT1jWzFdKX1lLmV4cG9ydHM9e2FnZW50Om8sdmVyc2lvbjppLG1hdGNoOnJ9fSx7fV0sMjU6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQsZSl7dmFyIG49W10scj0iIixpPTA7Zm9yKHIgaW4gdClvLmNhbGwodCxyKSYmKG5baV09ZShyLHRbcl0pLGkrPTEpO3JldHVybiBufXZhciBvPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZS5leHBvcnRzPXJ9LHt9XSwyNjpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCxlLG4pe2V8fChlPTApLCJ1bmRlZmluZWQiPT10eXBlb2YgbiYmKG49dD90Lmxlbmd0aDowKTtmb3IodmFyIHI9LTEsbz1uLWV8fDAsaT1BcnJheShvPDA/MDpvKTsrK3I8bzspaVtyXT10W2Urcl07cmV0dXJuIGl9ZS5leHBvcnRzPXJ9LHt9XSwyNzpbZnVuY3Rpb24odCxlLG4pe2UuZXhwb3J0cz17ZXhpc3RzOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93LnBlcmZvcm1hbmNlJiZ3aW5kb3cucGVyZm9ybWFuY2UudGltaW5nJiYidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdy5wZXJmb3JtYW5jZS50aW1pbmcubmF2aWdhdGlvblN0YXJ0fX0se31dLGVlOltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcigpe31mdW5jdGlvbiBvKHQpe2Z1bmN0aW9uIGUodCl7cmV0dXJuIHQmJnQgaW5zdGFuY2VvZiByP3Q6dD9jKHQscyxpKTppKCl9ZnVuY3Rpb24gbihuLHIsbyxpKXtpZighcC5hYm9ydGVkfHxpKXt0JiZ0KG4scixvKTtmb3IodmFyIGE9ZShvKSxzPW0obiksYz1zLmxlbmd0aCxmPTA7ZjxjO2YrKylzW2ZdLmFwcGx5KGEscik7dmFyIGQ9dVt5W25dXTtyZXR1cm4gZCYmZC5wdXNoKFt4LG4scixhXSksYX19ZnVuY3Rpb24gbCh0LGUpe2dbdF09bSh0KS5jb25jYXQoZSl9ZnVuY3Rpb24gaCh0LGUpe3ZhciBuPWdbdF07aWYobilmb3IodmFyIHI9MDtyPG4ubGVuZ3RoO3IrKyluW3JdPT09ZSYmbi5zcGxpY2UociwxKX1mdW5jdGlvbiBtKHQpe3JldHVybiBnW3RdfHxbXX1mdW5jdGlvbiB2KHQpe3JldHVybiBkW3RdPWRbdF18fG8obil9ZnVuY3Rpb24gdyh0LGUpe2YodCxmdW5jdGlvbih0LG4pe2U9ZXx8ImZlYXR1cmUiLHlbbl09ZSxlIGluIHV8fCh1W2VdPVtdKX0pfXZhciBnPXt9LHk9e30seD17b246bCxhZGRFdmVudExpc3RlbmVyOmwscmVtb3ZlRXZlbnRMaXN0ZW5lcjpoLGVtaXQ6bixnZXQ6dixsaXN0ZW5lcnM6bSxjb250ZXh0OmUsYnVmZmVyOncsYWJvcnQ6YSxhYm9ydGVkOiExfTtyZXR1cm4geH1mdW5jdGlvbiBpKCl7cmV0dXJuIG5ldyByfWZ1bmN0aW9uIGEoKXsodS5hcGl8fHUuZmVhdHVyZSkmJihwLmFib3J0ZWQ9ITAsdT1wLmJhY2tsb2c9e30pfXZhciBzPSJuckBjb250ZXh0IixjPXQoImdvcyIpLGY9dCgyNSksdT17fSxkPXt9LHA9ZS5leHBvcnRzPW8oKTtwLmJhY2tsb2c9dX0se31dLGdvczpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCxlLG4pe2lmKG8uY2FsbCh0LGUpKXJldHVybiB0W2VdO3ZhciByPW4oKTtpZihPYmplY3QuZGVmaW5lUHJvcGVydHkmJk9iamVjdC5rZXlzKXRyeXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6cix3cml0YWJsZTohMCxlbnVtZXJhYmxlOiExfSkscn1jYXRjaChpKXt9cmV0dXJuIHRbZV09cixyfXZhciBvPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZS5leHBvcnRzPXJ9LHt9XSxoYW5kbGU6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQsZSxuLHIpe28uYnVmZmVyKFt0XSxyKSxvLmVtaXQodCxlLG4pfXZhciBvPXQoImVlIikuZ2V0KCJoYW5kbGUiKTtlLmV4cG9ydHM9cixyLmVlPW99LHt9XSxpZDpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIXR8fCJvYmplY3QiIT09ZSYmImZ1bmN0aW9uIiE9PWU/LTE6dD09PXdpbmRvdz8wOmEodCxpLGZ1bmN0aW9uKCl7cmV0dXJuIG8rK30pfXZhciBvPTEsaT0ibnJAaWQiLGE9dCgiZ29zIik7ZS5leHBvcnRzPXJ9LHt9XSxsb2FkZXI6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKCl7aWYoIUUrKyl7dmFyIHQ9Yi5pbmZvPU5SRVVNLmluZm8sZT1sLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKVswXTtpZihzZXRUaW1lb3V0KHUuYWJvcnQsM2U0KSwhKHQmJnQubGljZW5zZUtleSYmdC5hcHBsaWNhdGlvbklEJiZlKSlyZXR1cm4gdS5hYm9ydCgpO2YoeSxmdW5jdGlvbihlLG4pe3RbZV18fCh0W2VdPW4pfSksYygibWFyayIsWyJvbmxvYWQiLGEoKStiLm9mZnNldF0sbnVsbCwiYXBpIik7dmFyIG49bC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtuLnNyYz0iaHR0cHM6Ly8iK3QuYWdlbnQsZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShuLGUpfX1mdW5jdGlvbiBvKCl7ImNvbXBsZXRlIj09PWwucmVhZHlTdGF0ZSYmaSgpfWZ1bmN0aW9uIGkoKXtjKCJtYXJrIixbImRvbUNvbnRlbnQiLGEoKStiLm9mZnNldF0sbnVsbCwiYXBpIil9ZnVuY3Rpb24gYSgpe3JldHVybiBPLmV4aXN0cyYmcGVyZm9ybWFuY2Uubm93P01hdGgucm91bmQocGVyZm9ybWFuY2Uubm93KCkpOihzPU1hdGgubWF4KChuZXcgRGF0ZSkuZ2V0VGltZSgpLHMpKS1iLm9mZnNldH12YXIgcz0obmV3IERhdGUpLmdldFRpbWUoKSxjPXQoImhhbmRsZSIpLGY9dCgyNSksdT10KCJlZSIpLGQ9dCgyNCkscD13aW5kb3csbD1wLmRvY3VtZW50LGg9ImFkZEV2ZW50TGlzdGVuZXIiLG09ImF0dGFjaEV2ZW50Iix2PXAuWE1MSHR0cFJlcXVlc3Qsdz12JiZ2LnByb3RvdHlwZTtOUkVVTS5vPXtTVDpzZXRUaW1lb3V0LFNJOnAuc2V0SW1tZWRpYXRlLENUOmNsZWFyVGltZW91dCxYSFI6dixSRVE6cC5SZXF1ZXN0LEVWOnAuRXZlbnQsUFI6cC5Qcm9taXNlLE1POnAuTXV0YXRpb25PYnNlcnZlcn07dmFyIGc9IiIrbG9jYXRpb24seT17YmVhY29uOiJiYW0ubnItZGF0YS5uZXQiLGVycm9yQmVhY29uOiJiYW0ubnItZGF0YS5uZXQiLGFnZW50OiJqcy1hZ2VudC5uZXdyZWxpYy5jb20vbnItc3BhLTExNjkubWluLmpzIn0seD12JiZ3JiZ3W2hdJiYhL0NyaU9TLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLGI9ZS5leHBvcnRzPXtvZmZzZXQ6cyxub3c6YSxvcmlnaW46ZyxmZWF0dXJlczp7fSx4aHJXcmFwcGFibGU6eCx1c2VyQWdlbnQ6ZH07dCgxOSksdCgyMiksbFtoXT8obFtoXSgiRE9NQ29udGVudExvYWRlZCIsaSwhMSkscFtoXSgibG9hZCIsciwhMSkpOihsW21dKCJvbnJlYWR5c3RhdGVjaGFuZ2UiLG8pLHBbbV0oIm9ubG9hZCIscikpLGMoIm1hcmsiLFsiZmlyc3RieXRlIixzXSxudWxsLCJhcGkiKTt2YXIgRT0wLE89dCgyNyl9LHt9XSwid3JhcC1mdW5jdGlvbiI6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQpe3JldHVybiEodCYmdCBpbnN0YW5jZW9mIEZ1bmN0aW9uJiZ0LmFwcGx5JiYhdFthXSl9dmFyIG89dCgiZWUiKSxpPXQoMjYpLGE9Im5yQG9yaWdpbmFsIixzPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksYz0hMTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQsZSxuLG8pe2Z1bmN0aW9uIG5yV3JhcHBlcigpe3ZhciByLGEscyxjO3RyeXthPXRoaXMscj1pKGFyZ3VtZW50cykscz0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uKHIsYSk6bnx8e319Y2F0Y2goZil7cChbZiwiIixbcixhLG9dLHNdKX11KGUrInN0YXJ0IixbcixhLG9dLHMpO3RyeXtyZXR1cm4gYz10LmFwcGx5KGEscil9Y2F0Y2goZCl7dGhyb3cgdShlKyJlcnIiLFtyLGEsZF0scyksZH1maW5hbGx5e3UoZSsiZW5kIixbcixhLGNdLHMpfX1yZXR1cm4gcih0KT90OihlfHwoZT0iIiksbnJXcmFwcGVyW2FdPXQsZCh0LG5yV3JhcHBlciksbnJXcmFwcGVyKX1mdW5jdGlvbiBmKHQsZSxvLGkpe298fChvPSIiKTt2YXIgYSxzLGMsZj0iLSI9PT1vLmNoYXJBdCgwKTtmb3IoYz0wO2M8ZS5sZW5ndGg7YysrKXM9ZVtjXSxhPXRbc10scihhKXx8KHRbc109bihhLGY/cytvOm8saSxzKSl9ZnVuY3Rpb24gdShuLHIsbyl7aWYoIWN8fGUpe3ZhciBpPWM7Yz0hMDt0cnl7dC5lbWl0KG4scixvLGUpfWNhdGNoKGEpe3AoW2EsbixyLG9dKX1jPWl9fWZ1bmN0aW9uIGQodCxlKXtpZihPYmplY3QuZGVmaW5lUHJvcGVydHkmJk9iamVjdC5rZXlzKXRyeXt2YXIgbj1PYmplY3Qua2V5cyh0KTtyZXR1cm4gbi5mb3JFYWNoKGZ1bmN0aW9uKG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4se2dldDpmdW5jdGlvbigpe3JldHVybiB0W25dfSxzZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHRbbl09ZSxlfX0pfSksZX1jYXRjaChyKXtwKFtyXSl9Zm9yKHZhciBvIGluIHQpcy5jYWxsKHQsbykmJihlW29dPXRbb10pO3JldHVybiBlfWZ1bmN0aW9uIHAoZSl7dHJ5e3QuZW1pdCgiaW50ZXJuYWwtZXJyb3IiLGUpfWNhdGNoKG4pe319cmV0dXJuIHR8fCh0PW8pLG4uaW5QbGFjZT1mLG4uZmxhZz1hLG59fSx7fV19LHt9LFsibG9hZGVyIiwyLDE2LDUsMyw0XSk7CiAgICAgICAgICA7TlJFVU0ubG9hZGVyX2NvbmZpZz17YWNjb3VudElEOiIzOTI4NCIsdHJ1c3RLZXk6IjM5Mjg0IixhZ2VudElEOiI3NDQ3NDY4IixsaWNlbnNlS2V5OiI2ODlkNWI0NTYyIixhcHBsaWNhdGlvbklEOiIyMDExMjI0In0KICAgICAgICAgIDtOUkVVTS5pbmZvPXtiZWFjb246ImJhbS5uci1kYXRhLm5ldCIsZXJyb3JCZWFjb246ImJhbS5uci1kYXRhLm5ldCIsbGljZW5zZUtleToiNjg5ZDViNDU2MiIsYXBwbGljYXRpb25JRDoiMjAxMTIyNCIsc2E6MX0KICAgICAgICA8L3NjcmlwdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9zdHlsZXMvY3NzX29wdC9nbG9iYWwvaWNvbl9mb250cy5taW4uY3NzP2UxMDEzZGViNmU4NDQ3MGM3NWQwNzVmODZkYjNjZDRkOTRkMjE4MTYiPgoKICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9zdHlsZXMvY3NzX29wdC9leGNlcHRpb25fY29tYmluZWQubWluLmNzcz80YTU4YjNiNyI+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vc3R5bGVzL2Nzc19vcHQvdG9wbmF2X2NhcnRfYnV0dG9uX2NvbWJpbmVkLm1pbi5jc3M/YTIwYTc1NjYiPgoKCgogICAgICAgIDxzY3JpcHQ+CiAgICAgICAgCiAgICAgICAgdmFyIHBsYXllckFzc2V0VXJscyA9IHsiYmFyZWJvbmVfanMiOiJodHRwczpcL1wvZi52aW1lb2Nkbi5jb21cL3BcLzMuMjMuMFwvanNcL2JhcmVib25lLmpzIiwianMiOiJodHRwczpcL1wvZi52aW1lb2Nkbi5jb21cL3BcLzMuMjMuMFwvanNcL3BsYXllci5qcyIsImNocm9tZWxlc3NfY3NzIjoiaHR0cHM6XC9cL2YudmltZW9jZG4uY29tXC9wXC8zLjIzLjBcL2Nzc1wvY2hyb21lbGVzcy5jc3MiLCJjaHJvbWVsZXNzX2pzIjoiaHR0cHM6XC9cL2YudmltZW9jZG4uY29tXC9wXC8zLjIzLjBcL2pzXC9jaHJvbWVsZXNzLmpzIiwiY3NzIjoiaHR0cHM6XC9cL2YudmltZW9jZG4uY29tXC9wXC8zLjIzLjBcL2Nzc1wvcGxheWVyLmNzcyIsInBsYXllcl91cmwiOiJwbGF5ZXIudmltZW8uY29tIn07CgogICAgICAgIHZhciBfZXh0ZW5kID0gZnVuY3Rpb24oKXtmb3IodmFyIHI9YXJndW1lbnRzWzBdLG49MSxlPWFyZ3VtZW50cy5sZW5ndGg7ZT5uO24rKyl7dmFyIHQ9YXJndW1lbnRzW25dO2Zvcih2YXIgYSBpbiB0KXQuaGFzT3duUHJvcGVydHkoYSkmJihyW2FdPXRbYV0pfXJldHVybiByfTsKCiAgICAgICAgICAgIHdpbmRvdyA9IF9leHRlbmQod2luZG93LCB7InZpbWVvX2VzaSI6eyJjb25maWciOnsicm91dGUiOiJWaW1lb1xcQ29udHJvbGxlclxcQ2xpcENvbnRyb2xsZXI6bWFpbiIsImNvbnRyb2xsZXIiOiJWaW1lb1xcQ29udHJvbGxlclxcQ2xpcENvbnRyb2xsZXIiLCJhdXRvY29tcGxldGVfZW5hYmxlZCI6dHJ1ZSwib25zaXRlX3JlZmVycmVyIjpmYWxzZX19LCJhYmxpbmNvbG5fY29uZmlnIjpbXSwidmltZW8iOnsiY29uZmlnIjp7ImNhcnQiOnsiY2FydF9jb250ZW50Ijp7InN0b2NrIjp7InN0b3JlIjoic3RvY2siLCJ2ZXJzaW9uIjoxLCJxdWFudGl0aWVzIjpbXSwiaXRlbXMiOltdLCJhdHRyaWJ1dGVzIjpbXSwiY3VycmVuY3kiOiJCUkwiLCJpdGVtc19zb3J0ZWRfYnlfaW5kZXgiOltdLCJpdGVtc19jb3VudCI6MH19fX19fSk7Cjwvc2NyaXB0PgoKICAgICAgICAgICAgICAgIAogICAgPHNjcmlwdD4KICAgICAgICB2YXIgYWJsaW5jb2xuX2NvbmZpZyA9IGFibGluY29sbl9jb25maWcgfHwge307CiAgICAgICAgYWJsaW5jb2xuX2NvbmZpZy50ZXN0cyA9IHsiSlMuT21uaXNlYXJjaCI6eyJpZCI6NTI3LCJuYW1lIjoiSlMuT21uaXNlYXJjaCIsImJ1Y2tldHMiOjEwMDAsImlucHV0IjoiY3VpZCIsInVybCI6IlwvIiwiZXhwZXJpbWVudHMiOlt7ImlkIjoxNDUyLCJuYW1lIjoicGhhc2UxIiwiYnVja2V0cyI6MTAwLCJzdGF0ZSI6MSwicHVibGlzaGVkX29uIjoiMjAyMC0xMC0yMiAxMzo0Njo1MSIsInBhdXNlZF9vbiI6IjAwMDAtMDAtMDAgMDA6MDA6MDAiLCJzdG9wcGVkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInBhcmFtZXRlcnMiOlt7ImlkIjoyNTQ1LCJuYW1lIjoib21uaXNlYXJjaF9lbmFibGVkIiwiY2hvaWNlIjoidHJ1ZSIsIndlaWdodCI6MX0seyJpZCI6MjU0NiwibmFtZSI6Im9tbmlzZWFyY2hfZW5hYmxlZCIsImNob2ljZSI6ImZhbHNlIiwid2VpZ2h0IjoxfV0sInNlZ21lbnRzIjpbXX0seyJpZCI6MTQ1NCwibmFtZSI6InBoYXNlMiIsImJ1Y2tldHMiOjIwMCwic3RhdGUiOjEsInB1Ymxpc2hlZF9vbiI6IjIwMjAtMTAtMjMgMDg6MTY6NTUiLCJwYXVzZWRfb24iOiIwMDAwLTAwLTAwIDAwOjAwOjAwIiwic3RvcHBlZF9vbiI6IjAwMDAtMDAtMDAgMDA6MDA6MDAiLCJwYXJhbWV0ZXJzIjpbeyJpZCI6MjU1MSwibmFtZSI6Im9tbmlzZWFyY2hfZW5hYmxlZCIsImNob2ljZSI6InRydWUiLCJ3ZWlnaHQiOjF9LHsiaWQiOjI1NTIsIm5hbWUiOiJvbW5pc2VhcmNoX2VuYWJsZWQiLCJjaG9pY2UiOiJmYWxzZSIsIndlaWdodCI6MX1dLCJzZWdtZW50cyI6W119LHsiaWQiOjE0NTgsIm5hbWUiOiJwaGFzZTMiLCJidWNrZXRzIjozMDAsInN0YXRlIjoxLCJwdWJsaXNoZWRfb24iOiIyMDIwLTEwLTI2IDA4OjU0OjQ4IiwicGF1c2VkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInN0b3BwZWRfb24iOiIwMDAwLTAwLTAwIDAwOjAwOjAwIiwicGFyYW1ldGVycyI6W3siaWQiOjI1NTcsIm5hbWUiOiJvbW5pc2VhcmNoX2VuYWJsZWQiLCJjaG9pY2UiOiJ0cnVlIiwid2VpZ2h0IjoxfSx7ImlkIjoyNTU4LCJuYW1lIjoib21uaXNlYXJjaF9lbmFibGVkIiwiY2hvaWNlIjoiZmFsc2UiLCJ3ZWlnaHQiOjF9XSwic2VnbWVudHMiOltdfSx7ImlkIjoxNDYxLCJuYW1lIjoicGhhc2U0IiwiYnVja2V0cyI6NDAwLCJzdGF0ZSI6MSwicHVibGlzaGVkX29uIjoiMjAyMC0xMC0yNyAwODo0Njo1NiIsInBhdXNlZF9vbiI6IjAwMDAtMDAtMDAgMDA6MDA6MDAiLCJzdG9wcGVkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInBhcmFtZXRlcnMiOlt7ImlkIjoyNTY1LCJuYW1lIjoib21uaXNlYXJjaF9lbmFibGVkIiwiY2hvaWNlIjoidHJ1ZSIsIndlaWdodCI6MX0seyJpZCI6MjU2NiwibmFtZSI6Im9tbmlzZWFyY2hfZW5hYmxlZCIsImNob2ljZSI6ImZhbHNlIiwid2VpZ2h0IjoxfV0sInNlZ21lbnRzIjpbXX1dfSwiSlMuVG9wTmF2LkNyZWF0ZSI6eyJpZCI6NDUyLCJuYW1lIjoiSlMuVG9wTmF2LkNyZWF0ZSIsImJ1Y2tldHMiOjEwMDAsImlucHV0IjoidnVpZCIsInVybCI6IjphbGwiLCJleHBlcmltZW50cyI6W3siaWQiOjEyMzUsIm5hbWUiOiIqIExvZ2dlZCBvdXQgSm9pbiBNb2RhbCIsImJ1Y2tldHMiOjEwMCwic3RhdGUiOjMsInB1Ymxpc2hlZF9vbiI6IjIwMjAtMDYtMTUgMTY6MTc6MTUiLCJwYXVzZWRfb24iOiIwMDAwLTAwLTAwIDAwOjAwOjAwIiwic3RvcHBlZF9vbiI6IjIwMjAtMTAtMTUgMDY6NTM6MjUiLCJwYXJhbWV0ZXJzIjpbeyJpZCI6MjE1MCwibmFtZSI6InRvcF9uYXZfY3JlYXRlIiwiY2hvaWNlIjoiY29udHJvbCIsIndlaWdodCI6MX0seyJpZCI6MjE1MSwibmFtZSI6InRvcF9uYXZfY3JlYXRlIiwiY2hvaWNlIjoiam9pbl93aXRob3V0X2Rlc2lnbiIsIndlaWdodCI6MX0seyJpZCI6MjE1MiwibmFtZSI6InRvcF9uYXZfY3JlYXRlIiwiY2hvaWNlIjoiam9pbl93aXRoX2Rlc2lnbiIsIndlaWdodCI6MX1dLCJzZWdtZW50cyI6W119LHsiaWQiOjEzMTEsIm5hbWUiOiIqICogTG9nZ2VkIG91dCBKb2luIE1vZGFsIiwiYnVja2V0cyI6OTAwLCJzdGF0ZSI6MywicHVibGlzaGVkX29uIjoiMjAyMC0wNi0yMyAxNTowMTo1MiIsInBhdXNlZF9vbiI6IjAwMDAtMDAtMDAgMDA6MDA6MDAiLCJzdG9wcGVkX29uIjoiMjAyMC0xMC0xNSAwNjo1MzozNSIsInBhcmFtZXRlcnMiOlt7ImlkIjoyMjc1LCJuYW1lIjoidG9wX25hdl9jcmVhdGUiLCJjaG9pY2UiOiJjb250cm9sIiwid2VpZ2h0IjoxfSx7ImlkIjoyMjc2LCJuYW1lIjoidG9wX25hdl9jcmVhdGUiLCJjaG9pY2UiOiJqb2luX3dpdGhvdXRfZGVzaWduIiwid2VpZ2h0IjoxfSx7ImlkIjoyMjc3LCJuYW1lIjoidG9wX25hdl9jcmVhdGUiLCJjaG9pY2UiOiJqb2luX3dpdGhfZGVzaWduIiwid2VpZ2h0IjoxfV0sInNlZ21lbnRzIjpbXX1dfSwiSlMuVXBzZWxsLlJldmlldyI6eyJpZCI6NDQ0LCJuYW1lIjoiSlMuVXBzZWxsLlJldmlldyIsImJ1Y2tldHMiOjEwMDAsImlucHV0IjoidnVpZCIsInVybCI6IlwvIiwiZXhwZXJpbWVudHMiOltdfSwiVG9wTmF2Lk5ld1ZpZGVvLlNjcmVlblJlY29yZEZvckFsbCI6eyJpZCI6NTQxLCJuYW1lIjoiVG9wTmF2Lk5ld1ZpZGVvLlNjcmVlblJlY29yZEZvckFsbCIsImJ1Y2tldHMiOjEwMDAsImlucHV0IjoidnVpZCIsInVybCI6IlwvIiwiZXhwZXJpbWVudHMiOlt7ImlkIjoxNDE4LCJuYW1lIjoiU2hvdyByZWNvcmRlciBsaW5rIGZvciBhbGwiLCJidWNrZXRzIjoxMDAsInN0YXRlIjozLCJwdWJsaXNoZWRfb24iOiIyMDIwLTEwLTA1IDE0OjMwOjQwIiwicGF1c2VkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInN0b3BwZWRfb24iOiIyMDIwLTEwLTIxIDAzOjI4OjQzIiwicGFyYW1ldGVycyI6W3siaWQiOjI0NzcsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJjb250cm9sIiwid2VpZ2h0IjoxfSx7ImlkIjoyNDc4LCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoidmFyaWFudF9zY3JlZW4iLCJ3ZWlnaHQiOjF9XSwic2VnbWVudHMiOltdfSx7ImlkIjoxNDUwLCJuYW1lIjoiKiBTaG93IHJlY29yZGVyIGxpbmsgZm9yIGFsbCIsImJ1Y2tldHMiOjAsInN0YXRlIjozLCJwdWJsaXNoZWRfb24iOiIyMDIwLTEwLTIyIDE3OjE3OjExIiwicGF1c2VkX29uIjoiMjAyMC0xMC0yMiAxNzoxNzoyNyIsInN0b3BwZWRfb24iOiIyMDIwLTEwLTIyIDE3OjE3OjQwIiwicGFyYW1ldGVycyI6W3siaWQiOjI1NDAsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJjb250cm9sIiwid2VpZ2h0IjoxfSx7ImlkIjoyNTQxLCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoidmFyaWFudF9zY3JlZW4iLCJ3ZWlnaHQiOjF9LHsiaWQiOjI1NDIsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJ2YXJpYW50X3NjcmVlbl9hbmltYXRpb24iLCJ3ZWlnaHQiOjF9XSwic2VnbWVudHMiOltdfSx7ImlkIjoxNDUzLCJuYW1lIjoiKiAqIFNob3cgcmVjb3JkZXIgbGluayBmb3IgYWxsIiwiYnVja2V0cyI6NTAsInN0YXRlIjozLCJwdWJsaXNoZWRfb24iOiIyMDIwLTEwLTIyIDE3OjM2OjQxIiwicGF1c2VkX29uIjoiMjAyMC0xMC0yNiAxNTowNzoyOCIsInN0b3BwZWRfb24iOiIyMDIwLTEwLTI2IDE1OjA3OjU2IiwicGFyYW1ldGVycyI6W3siaWQiOjI1NDcsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJjb250cm9sIiwid2VpZ2h0IjoxfSx7ImlkIjoyNTQ4LCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoidmFyaWFudF9zY3JlZW4iLCJ3ZWlnaHQiOjF9LHsiaWQiOjI1NDksIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJ2YXJpYW50X3NjcmVlbl9hbmltYXRpb24iLCJ3ZWlnaHQiOjF9XSwic2VnbWVudHMiOltdfSx7ImlkIjoxNDYwLCJuYW1lIjoiKiAqICogU2hvdyByZWNvcmRlciBsaW5rIGZvciBhbGwiLCJidWNrZXRzIjoxMDAsInN0YXRlIjozLCJwdWJsaXNoZWRfb24iOiIyMDIwLTEwLTI2IDE1OjA4OjU0IiwicGF1c2VkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInN0b3BwZWRfb24iOiIyMDIwLTEwLTI3IDEwOjAyOjU0IiwicGFyYW1ldGVycyI6W3siaWQiOjI1NjIsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJjb250cm9sIiwid2VpZ2h0IjoxfSx7ImlkIjoyNTYzLCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoidmFyaWFudF9zY3JlZW4iLCJ3ZWlnaHQiOjF9LHsiaWQiOjI1NjQsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJ2YXJpYW50X3NjcmVlbl9hbmltYXRpb24iLCJ3ZWlnaHQiOjF9XSwic2VnbWVudHMiOltdfSx7ImlkIjoxNDYyLCJuYW1lIjoiKiAqICogKiBTaG93IHJlY29yZGVyIGxpbmsgZm9yIGFsbCIsImJ1Y2tldHMiOjEwMDAsInN0YXRlIjoxLCJwdWJsaXNoZWRfb24iOiIyMDIwLTEwLTI3IDEwOjA0OjEwIiwicGF1c2VkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInN0b3BwZWRfb24iOiIwMDAwLTAwLTAwIDAwOjAwOjAwIiwicGFyYW1ldGVycyI6W3siaWQiOjI1NjcsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJjb250cm9sIiwid2VpZ2h0Ijo1fSx7ImlkIjoyNTY4LCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoidmFyaWFudF9zY3JlZW4iLCJ3ZWlnaHQiOjkwfSx7ImlkIjoyNTY5LCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoidmFyaWFudF9zY3JlZW5fYW5pbWF0aW9uIiwid2VpZ2h0Ijo1fV0sInNlZ21lbnRzIjpbXX1dfX07CiAgICA8L3NjcmlwdD4KPHNjcmlwdD4KKGZ1bmN0aW9uKCkgewogICAgd2luZG93Ll9ndG0gPSBbeyJleGNlcHRpb25faHR0cF9jb2RlIjoiSFRUUFwvMS4xIDQwNCBOb3QgRm91bmQiLCJsYW5ndWFnZSI6ImVuIiwidXNlcl9zdGF0dXMiOiJsb2dnZWRfb3V0IiwidXNlcl90eXBlIjoibm9uZSIsImdhX3VuaXZlcnNhbF9pZCI6IlVBLTc2NjQxLTgiLCJjb21zY29yZV9zaXRlX2lkIjoxMDM0ODI4OX1dOwoKICAgICAgICB2YXIgZ2RwckNvb2tpZSA9IChkb2N1bWVudC5jb29raWUubWF0Y2goL14oPzouKjspP1xzKnZpbWVvX2dkcHJfb3B0aW5ccyo9XHMqKFteO10rKSg/Oi4qKT8kLyl8fFssbnVsbF0pWzFdOwogICAgaWYgKGdkcHJDb29raWUgPT09ICctMScpIHsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgICAgIHdpbmRvdy5fZ3RtLnB1c2goewogICAgICAgICd2dWlkJzogZG9jdW1lbnQuY29va2llLnJlcGxhY2UoLyg/Oig/Ol58Lio7XHMqKXZ1aWRccypcPVxzKihbXjtdKikuKiQpfF4uKiQvLCAiJDEiKSwKICAgICAgICAnZ3RtLnN0YXJ0JzogbmV3IERhdGUoKS5nZXRUaW1lKCksCiAgICAgICAgJ2V2ZW50JzogJ2d0bS5qcycKICAgIH0pOwogICAgdmFyIGd0bXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKSwKICAgICAgICBub2RlOwogICAgZ3Rtcy5hc3luYyA9IHRydWU7CiAgICBndG1zLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsKICAgIGd0bXMuc3JjID0gJy8vd3d3Lmdvb2dsZXRhZ21hbmFnZXIuY29tL2d0bS5qcz9pZD1HVE0tUkJLSyZsPV9ndG0nOwogICAgbm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTsKICAgIG5vZGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZ3Rtcywgbm9kZSk7Cn0pKCk7Cjwvc2NyaXB0Pgo8c2NyaXB0PgogICAgdmFyIGdvb2dsZXRhZyA9IGdvb2dsZXRhZyB8fCB7fSwKICAgICAgICBncHRhZHNsb3RzID0gW10sCiAgICAgICAgbGFuZ3VhZ2UsCiAgICAgICAgaGFzX3VwbG9hZGVkLAogICAgICAgIGNvaG9ydDsKICAgIGdvb2dsZXRhZy5jbWQgPSBnb29nbGV0YWcuY21kIHx8IFtdOwoKICAgIChmdW5jdGlvbigpIHsKICAgICAgICB2YXIgZ2RwckNvb2tpZSA9IChkb2N1bWVudC5jb29raWUubWF0Y2goL14oPzouKjspP1xzKnZpbWVvX2dkcHJfb3B0aW5ccyo9XHMqKFteO10rKSg/Oi4qKT8kLyl8fFssbnVsbF0pWzFdOwogICAgICAgIGlmIChnZHByQ29va2llID09PSAnLTEnKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgdmFyIGdhZHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKSwKICAgICAgICAgICAgdXNlU1NMID0gJ2h0dHBzOicgPT0gZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2wsCiAgICAgICAgICAgIG5vZGU7CiAgICAgICAgZ2Fkcy5hc3luYyA9IHRydWU7CiAgICAgICAgZ2Fkcy50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7CiAgICAgICAgZ2Fkcy5zcmMgPSAodXNlU1NMID8gJ2h0dHBzOicgOiAnaHR0cDonKSArICcvL3d3dy5nb29nbGV0YWdzZXJ2aWNlcy5jb20vdGFnL2pzL2dwdC5qcyc7CiAgICAgICAgbm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTsKICAgICAgICBub2RlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGdhZHMsIG5vZGUpOwogICAgfSkoKTsKCiAgICBnb29nbGV0YWcuY21kLnB1c2goZnVuY3Rpb24oKSB7CiAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2UgPSBkb2N1bWVudC5jb29raWUucmVwbGFjZSgvKD86KD86XnwuKjtccyopbGFuZ3VhZ2VccypcPVxzKihbXjtdKikuKiQpfF4uKiQvLCAiJDEiKTsKICAgICAgICAgICAgaGFzX3VwbG9hZGVkID0gKGRvY3VtZW50LmNvb2tpZS5yZXBsYWNlKC8oPzooPzpefC4qO1xzKiloYXNfdXBsb2FkZWRccypcPVxzKihbXjtdKikuKiQpfF4uKiQvLCAiJDEiKSkgPyAnWScgOiAnTic7CiAgICAgICAgICAgIGNvbnNlbnQgPSAoZG9jdW1lbnQuY29va2llLnJlcGxhY2UoLyg/Oig/Ol58Lio7XHMqKXZpbWVvX2dkcHJfb3B0aW5ccypcPVxzKihbXjtdKikuKiQpfF4uKiQvLCAiJDEiKSkgPT09ICctMScgPyAxIDogMDsKICAgICAgICAgICAgY29ob3J0ID0gJ0EnOwogICAgICAgIAogICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoJ2xhbmd1YWdlJywgW2xhbmd1YWdlXSk7CiAgICAgICAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnaXNfdXBsb2FkZXInLCBbaGFzX3VwbG9hZGVkXSk7CiAgICAgICAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnY29ob3J0JywgW2NvaG9ydF0pOwogICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoJ2NvaG9ydF9hJywgWyhjb2hvcnQgPT09ICdBJykgPyAnWScgOiAnTiddKTsKICAgICAgICBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdjb2hvcnRfYicsIFsoY29ob3J0ID09PSAnQicpID8gJ1knIDogJ04nXSk7CiAgICAgICAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygncHJvZHVjdCcsIFsnJ10pOwogICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoJ3N0b3JhZ2UnLCBbJ04nXSk7CgogICAgICAgICAgICAgICAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnc2VjJywgWydmYWxzZSddKTsKCiAgICAgICAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnbG9nZ2VkX2luJywgWydmYWxzZSddKTsKCiAgICAgICAgICAgICAgICBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdycHYnLCAoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjEwMCkrMSkudG9TdHJpbmcoKSk7CgogICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRSZXF1ZXN0Tm9uUGVyc29uYWxpemVkQWRzKGNvbnNlbnQpOwogICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5lbmFibGVBc3luY1JlbmRlcmluZygpOwogICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5kaXNhYmxlSW5pdGlhbExvYWQoKTsKICAgICAgICBnb29nbGV0YWcuZW5hYmxlU2VydmljZXMoKTsKICAgIH0pOwo8L3NjcmlwdD4KCiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvbG9nZ2luZ19jb21iaW5lZC5taW4uanM/OTc0MjEzZDEiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vanNfb3B0L2FibGluY29sbl9jb21iaW5lZC5taW4uanM/NmM0YWNiNTciPjwvc2NyaXB0PgoKCgogICAgPC9oZWFkPgogICAgPGJvZHkgY2xhc3M9Im9uc2l0ZSAiPgogICAgICAgIDxkaXYgaWQ9IndyYXAiIGNsYXNzPSJvdXRlcl93cmFwIj4KICAgICAgICAgICAgPGRpdiBpZD0idG9wbmF2X291dGVyX3dyYXAiPgogICAgICAgICAgICAgICAgPGRpdiBpZD0iY3JlYXRlLWZhY2Vib29rLWhlYWRlciI+PC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlZpbWVvQnJhbmRfQ29sb3JSaWJib24gIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAoKPHN0eWxlPgogICAgQC13ZWJraXQta2V5ZnJhbWVzIHJlY29yZF9hbmltYXRpb24gewogICAgICAgIDAlLCAyMCUsIDUwJSwgODAlLCAxMDAlIHsKICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICB9CiAgICAgICAgNDAlIHsKICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMnB4KTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDJweCk7CiAgICAgICAgfQogICAgICAgIDYwJSB7CiAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDNweCk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgzcHgpOwogICAgICAgIH0KICAgIH0KCiAgICBAa2V5ZnJhbWVzIHJlY29yZF9hbmltYXRpb24gewogICAgICAgIDAlLCAyMCUsIDUwJSwgODAlLCAxMDAlIHsKICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICB9CiAgICAgICAgNDAlIHsKICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMnB4KTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDJweCk7CiAgICAgICAgfQogICAgICAgIDYwJSB7CiAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDNweCk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgzcHgpOwogICAgICAgIH0KICAgIH0KCiAgICAubG9nZ2VkX291dF9yZWNvcmRfYW5pbWF0aW9uIHsKICAgICAgICBhbmltYXRpb246IHJlY29yZF9hbmltYXRpb24gMS41cyAuMjVzIDU7CiAgICB9CgogICAgLmxvZ2dlZF9pbl9yZWNvcmRfYW5pbWF0aW9uIHsKICAgICAgICBhbmltYXRpb246IHJlY29yZF9hbmltYXRpb24gMS41cyAuMjVzIGluZmluaXRlOwogICAgfQoKICAgIC5yZWNvcmRlcl9uZXdfbGFiZWwgewogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzExNDBDNjsKICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAgICAgaGVpZ2h0OiAyMHB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwogICAgICAgIG1hcmdpbi1sZWZ0OiAxNHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgICB3aWR0aDogNDBweDsKICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIH0KPC9zdHlsZT4KCjxzY3JpcHQ+CiAgICB3aW5kb3cudmltZW8gPSB3aW5kb3cudmltZW8gfHwge307Cjwvc2NyaXB0PgoKPGRpdiBpZD0idG9wbmF2X2Rlc2t0b3AiIGNsYXNzPSJ0b3BuYXZfZGVza3RvcCAiIHJvbGU9ImJhbm5lciI+CiAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfZGVza3RvcF93cmFwcGVyIj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbG9nbyIgaHJlZj0iLy92aW1lby5jb20iIGFsdD0iR28gdG8gVmltZW8gaG9tZSBwYWdlIiB0aXRsZT0iR28gdG8gVmltZW8gaG9tZSBwYWdlIiBhcmlhLWxhYmVsPSJHbyB0byBWaW1lbyBob21lIHBhZ2UiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnZpbWVvX2hvbWUiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2hvbWVfY2xpY2siPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGFsdD0iVmltZW8iIHdpZHRoPSIxMDAiIGhlaWdodD0iNDAiPjxwYXRoIGQ9Ik0yMi40NDggMTQuNTc1Yy0uMTA0IDIuMTctMS42MTggNS4xNDYtNC41NDQgOC45MTItMy4wMyAzLjk0Mi01LjU5IDUuOTEyLTcuNjg2IDUuOTEyLTEuMjk3IDAtMi4zOTctMS4yMDQtMy4zLTMuNi0uNi0yLjItMS4yMDItNC4zOTgtMS43OTQtNi41OTgtLjY2NC0yLjM5Ni0xLjM4LTMuNi0yLjE0Ny0zLjYtLjE2NiAwLS43NDcuMzU0LTEuNzUzIDEuMDVsLTEuMDQ4LTEuMzVjMS4xLS45NjUgMi4xOS0xLjkzIDMuMjU3LTIuOTA1IDEuNDYzLTEuMjY1IDIuNTczLTEuOTQgMy4zLTIuMDAyIDEuNzMyLS4xNjYgMi44IDEuMDE3IDMuMjA1IDMuNTU4LjQzNSAyLjc0LjczNiA0LjQ0LjkwMiA1LjExNS40OTggMi4yNyAxLjA0OCAzLjQwMiAxLjY1IDMuNDAyLjQ2NiAwIDEuMTcyLS43MzcgMi4xMDUtMi4yMS45MzQtMS40NzMgMS40MzItMi41OTMgMS41MDQtMy4zNy4xMzMtMS4yNzctLjM2NS0xLjkxLTEuNTA2LTEuOTEtLjUzIDAtMS4wOC4xMjUtMS42NS4zNjQgMS4xLTMuNTkgMy4xODYtNS4zMzMgNi4yNzctNS4yMyAyLjI3My4wNzMgMy4zNSAxLjU1NiAzLjIyNyA0LjQ2bTEzLjc1NSA3LjAzNGMtLjkzMyAxLjc2NC0yLjIyIDMuMzctMy44NiA0LjgwMy0yLjI0IDEuOTMtNC40NyAyLjkwNS02LjcgMi45MDUtMS4wMzcuMDAyLTEuODI2LS4zMy0yLjM3Ni0uOTk0LS41NS0uNjYzLS44MS0xLjUzNS0uNzc3LTIuNjAzLjAzLTEuMS4zNzItMi44IDEuMDI1LTUuMTA0LjY1NC0yLjMwMy45NzYtMy41MzcuOTc2LTMuNzAzIDAtLjg2LS4zLTEuMjk3LS45MDItMS4yOTctLjE5OCAwLS43Ny4zNTMtMS43MDIgMS4wNDhsLTEuMTUyLTEuMzVjMS4wNy0uOTYyIDIuMTM3LTEuOTI3IDMuMjA2LTIuOTAyIDEuNDMtMS4yNjYgMi41LTEuOTQgMy4yMDUtMi4wMDIgMS4xLS4xMDMgMS45MS4yMyAyLjQyOC45NzYuNTE4Ljc0Ny43MDUgMS43MjIuNTggMi45MTUtLjQzNSAyLjAzNC0uOTAyIDQuNjA3LTEuNCA3LjczLS4wMyAxLjQzLjQ4OCAyLjE0NiAxLjU1NiAyLjE0Ni40NjcgMCAxLjI5Ny0uNDk4IDIuNS0xLjQ4My45OTYtLjgyIDEuODE1LTEuNTk4IDIuNDUtMi4zMjRsLjk0MiAxLjI0NG0tNC4zNTctMTcuOGMtLjAzLjgzLS40NDYgMS42MjgtMS4yNTUgMi4zOTUtLjkuODYtMS45NyAxLjI5Ni0zLjIwNCAxLjI5Ni0xLjkgMC0yLjgyMi0uODMtMi43NS0yLjQ5LjAzMi0uODYuNTQtMS42OSAxLjUyNi0yLjQ5Ljk4NS0uNzk3IDIuMDc0LTEuMTkgMy4yNzgtMS4xOS43MDUgMCAxLjI4Ni4yNyAxLjc1My44Mi40NjcuNTQuNjg0IDEuMS42NTMgMS42Nm0zNS42MTIgMTcuOGMtLjkzMyAxLjc2My0yLjIyIDMuMzctMy44NiA0LjgwMi0yLjI0IDEuOTMtNC40NyAyLjkwNC02LjcgMi45MDQtMi4xNjguMDAyLTMuMjE2LTEuMjAyLTMuMTUzLTMuNTk4LjAzLTEuMDcuMjM4LTIuMzU1LjYyMi0zLjg1LjM4NC0xLjUwMy41OS0yLjY2NS42MjMtMy41MDUuMDMtMS4yNjUtLjM1My0xLjg5OC0xLjE1Mi0xLjg5OC0uODcgMC0xLjkxIDEuMDM2LTMuMTEyIDMuMS0xLjI3NiAyLjE2OC0xLjk2IDQuMjc0LTIuMDY0IDYuMzA4LS4wNzMgMS40My4wNzIgMi41NC40MjUgMy4yOTgtMi4zMjQuMDY0LTMuOTYzLS4zMi00Ljg4Ni0xLjE1LS44My0uNzM3LTEuMjEyLTEuOTUtMS4xNS0zLjY1Mi4wMy0xLjA2OC4xOTgtMi4xMzcuNDg4LTMuMjA1LjI5LTEuMDcuNDU3LTIuMDIzLjQ4OC0yLjg1My4wNjItMS4yMzQtLjM4NC0xLjg1Ny0xLjM1LTEuODU3LS44NCAwLTEuNzQuOTU1LTIuNzA2IDIuODUzLS45NjYgMS45LTEuNTA1IDMuODktMS42MSA1Ljk1Ni0uMDYgMS44NjcuMDUzIDMuMTc0LjM2NCAzLjktMi4yOTMuMDYyLTMuOTItLjQxNS00Ljg3Ni0xLjQ1Mi0uNzk4LS44Ni0xLjE2LTIuMTgtMS4xLTMuOTQyLjAzMi0uODYuMTg4LTIuMDc1LjQ1Ny0zLjYyLjI4LTEuNTQ2LjQyNS0yLjc1LjQ1Ny0zLjYyLjA2Mi0uNjAzLS4wODMtLjkwMy0uNDQ2LS45MDMtLjE5NyAwLS43NjguMzQtMS43MDIgMS4wMTVsLTEuMjAzLTEuMzQ4Yy4xNjgtLjEzNSAxLjIxNi0xLjEgMy4xNTYtMi45MDUgMS40LTEuMjk3IDIuMzU0LTEuOTcgMi44NTItMi4wMDIuODcyLS4wNzMgMS41NjcuMjkgMi4xMDYgMS4wOC41My43ODcuOCAxLjY5LjggMi43MjcgMCAuMzMyLS4wMzIuNjU0LS4xMDUuOTU0LjQ5Ny0uNzY2IDEuMDgtMS40MyAxLjc1Mi0yIDEuNTM3LTEuMzQgMy4yNi0yLjA4NiA1LjE1Ny0yLjI1MiAxLjY0LS4xMzUgMi44LjI1IDMuNTA1IDEuMTUyLjU3LjczNi44MyAxLjc4NC44IDMuMTUzLjIzNy0uMTk4LjQ4Ni0uNDE2Ljc0Ni0uNjU0Ljc2Ny0uOTAzIDEuNTE0LTEuNjIgMi4yNS0yLjE0OCAxLjIzNS0uOTAyIDIuNTItMS40IDMuODYtMS41MDQgMS41OTctLjEzNSAyLjc1LjI1IDMuNDU0IDEuMTUyLjYwMi43MjYuODcgMS43NzQuOCAzLjE0My0uMDMyLjkzMy0uMjYgMi4yOC0uNjc1IDQuMDY1LS40MTYgMS43NzMtLjYyNCAyLjgtLjYyNCAzLjA3LS4wMy42OTUuMDMgMS4xODIuMTk3IDEuNDQyLjE2Ni4yNy41Ny4zOTQgMS4yMDMuMzk0LjQ2NyAwIDEuMjk3LS40OTcgMi41LTEuNDgyLjk5Ni0uODIgMS44MTYtMS41OTggMi40NS0yLjMyNGwuOTYzIDEuMjU0bTE4Ljc2NS0uMDUyYy0uOTY1IDEuNTk4LTIuODc0IDMuMTk1LTUuNzA2IDQuNzkzLTMuNTM4IDIuMDMyLTcuMTI3IDMuMDUtMTAuNzU4IDMuMDUtMi43MDYgMC00LjYzNi0uOTA0LTUuODA4LTIuNy0uODMtMS4yMzMtMS4yMzQtMi42OTYtMS4yMDMtNC40MDcuMDMtMi42OTggMS4yMzQtNS4yNyAzLjYtNy43MSAyLjYwMy0yLjY2NSA1LjY3NC00LjAwMyA5LjIxLTQuMDAzIDMuMjcgMCA1IDEuMzI4IDUuMjA4IDMuOTk0LjEzNSAxLjcwMi0uNzk4IDMuNDQ1LTIuOCA1LjI0LTIuMTM3IDEuOTYtNC44MjQgMy4yMTUtOC4wNiAzLjc0NC42LjgzIDEuNTA0IDEuMjQ1IDIuNzA3IDEuMjQ1IDIuMzk2IDAgNS4wMi0uNjEzIDcuODYzLTEuODM3IDIuMDMzLS44NiAzLjYzLTEuNzUzIDQuODAzLTIuNjc2bC45NDUgMS4yNjVtLTExLjM2LTUuMjI4Yy4wMzItLjg5Mi0uMzMtMS4zNS0xLjEtMS4zNS0uOTk0IDAtMi4wMS42ODYtMy4wNDggMi4wNjYtMS4wMzggMS4zOC0xLjU2NyAyLjY5Ny0xLjU5OCAzLjk2Mi0uMDIgMC0uMDIuMjE4IDAgLjY0MyAxLjYzLS42IDMuMDUtMS41MTQgNC4yNDItMi43MzguOTY2LTEuMDU4IDEuNDYzLTEuOTIgMS41MDUtMi41ODNtMjQuOTQ2IDEuODY4Yy0uMTM1IDMuMDcyLTEuMjY1IDUuNzE3LTMuNDAyIDcuOTQ3LTIuMTM1IDIuMjMtNC43OSAzLjM1LTcuOTU1IDMuMzUtMi42MzUgMC00LjYzNy0uODUtNi4wMDYtMi41NS0uOTk3LTEuMjY3LTEuNTU3LTIuODU0LTEuNjUtNC43NTItLjE2Ni0yLjg2My44Ni01LjQ5OCAzLjEtNy44OTQgMi40MDgtMi42NjUgNS40MjctMy45OTMgOS4wNTctMy45OTMgMi4zMzQgMCA0LjA5OC43ODggNS4zIDIuMzQ0IDEuMTMyIDEuNDQzIDEuNjUgMy4yOSAxLjU1NyA1LjU1bS01LjY2NC0uMTg1Yy4wMy0uOTAzLS4wOTQtMS43MzMtLjM3NC0yLjQ4LS4yOC0uNzQ3LS42OTUtMS4xMy0xLjIyNC0xLjEzLTEuNzAyIDAtMy4xMDIuOTIzLTQuMjAyIDIuNzYtLjkzMyAxLjUwMy0xLjQzIDMuMTEtMS41MDQgNC44MTItLjAzLjg0LjExNCAxLjU3Ny40NDYgMi4yMS4zNjQuNzM2Ljg4MiAxLjEgMS41NTYgMS4xIDEuNTA1IDAgMi43OS0uODgzIDMuODYtMi42NTYuODkyLTEuNDcyIDEuMzgtMy4wMDggMS40NC00LjYxNWguMDAyeiIgZmlsbD0iIzExMjIzMyIvPjwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8YSBjbGFzcz0idG9wbmF2X3N0b2NrX2xvZ28iIGhyZWY9Ii9zdG9jayI+CiAgICAgICAgICAgICAgICA8c3ZnIGFsdD0iVmltZW8iIHdpZHRoPSIxNzAiIGhlaWdodD0iNDAiIGRhdGEtbmFtZT0iTGF5ZXIgMSIgdmlld0JveD0iMCAwIDc4MCAxMjAiPjxwYXRoIGQ9Ik00NzEuOSA3MC4zMWMtMTIuMTQtMi43NC0yNC4yOC0zLjktMjQuMjgtMTIgMC02LjUgOC44Mi03LjY2IDEzLjU5LTcuNjYgNy4yMiAwIDEzLjczIDIuMTcgMTUuMTcgMTBoMTcuMmMtMi0xNi42Mi0xNS45LTIzLTMxLjIyLTIzLTEzLjU4IDAtMzEuMjEgNS4wNS0zMS4yMSAyMS4zOCAwIDE1LjE3IDExLjg1IDE5LjUxIDI0IDIyLjExczI0IDMuNzYgMjQuNDIgMTIuNDNjLjQzIDguNTItMTAuNCA5LjgyLTE2LjYyIDkuODItOC44MSAwLTE2LTMuNDYtMTYuOS0xM2gtMTYuNDljLjI5IDE3LjYzIDE0LjMxIDI2IDMzLjA5IDI2IDE1LjQ2IDAgMzMuMzgtNi41IDMzLjM4LTI0LjI4LS4wMy0xNC43Mi0xMi4xNC0xOS4wNS0yNC4xMy0yMS44ek01MjUuNjYgMTcuMjhoLTE2LjQ4djIyLjRoLTEyLjQyVjUyaDEyLjQydjQ0Yy4yOSAxMi40MyAzLjQ3IDE5LjA4IDIwLjY3IDE5LjA4IDMuNjEgMCA3LjA4LS41OCAxMC42OS0uODd2LTEyLjY4YTI4LjUyIDI4LjUyIDAgMCAxLTYuOTQuNTdjLTcuMzcgMC03Ljk0LTMuNDctNy45NC0xMC4yNlY1MmgxNC44OFYzOS42OGgtMTQuODh6TTU4MC44NSAzNy42NmMtMjQgMC0zNy43MSAxNi40Ny0zNy43MSAzOS4zIDAgMjMgMTMuNzMgMzkuNDUgMzcuNzEgMzkuNDVTNjE4LjU3IDk5Ljk0IDYxOC41NyA3N2MwLTIyLjg3LTEzLjczLTM5LjM0LTM3LjcyLTM5LjM0em0wIDY1Ljc0Yy0xNC43MyAwLTIxLjI0LTEzLjQtMjEuMjQtMjYuNHM2LjUxLTI2LjMgMjEuMjQtMjYuM1M2MDIuMSA2NC4xIDYwMi4xIDc3cy02LjUxIDI2LjQtMjEuMjUgMjYuNHpNNjYyLjc5IDUwLjY2YzkuMSAwIDE1Ljc1IDQuOTEgMTcuMDUgMTRoMTYuNDdjLTEuNTktMTguMzUtMTYuMzMtMjctMzMuNjctMjctMjQuNTYgMC0zNi44NSAxNy42My0zNi44NSA0MC4xNyAwIDIyIDEyLjg2IDM4LjU4IDM2LjI3IDM4LjU4IDE5LjIyIDAgMzEuMjItMTAuNjkgMzQuMjUtMzAuMDZoLTE2LjQ3Yy0xLjU5IDEwLjctOC4yNCAxNy4wNS0xNy43OCAxNy4wNS0xNC4zIDAtMTkuNzktMTMuMTUtMTkuNzktMjUuNTcgMC0yMi42OSAxMS45OS0yNy4xNyAyMC41Mi0yNy4xN3pNNzQyLjI2IDY3LjEzbDI4LjYxLTI3LjQ1aC0yMC4yM2wtMjkuNzYgMzAuMlYxMS4yMUg3MDQuNHYxMDMuMThoMTYuNDhWODcuNjVsOS44Mi05LjUzIDIyLjgzIDM2LjI3aDIwLjA5bC0zMS4zNi00Ny4yNnoiIGZpbGw9IiNmZmYiPjwvcGF0aD48cGF0aCBkPSJNMTE3LjI1IDI2LjcyYTE4LjM3IDE4LjM3IDAgMCAwIDEzLjE0LTUuMzFxNC45Mi00LjY5IDUuMTMtOS44YTkuNjIgOS42MiAwIDAgMC0yLjY3LTYuODQgOS4wOCA5LjA4IDAgMCAwLTcuMTgtMy4zNyAyMC45MSAyMC45MSAwIDAgMC0xMy40NSA0LjlxLTYuMDYgNC45MS02LjI2IDEwLjIxLS40IDEwLjIyIDExLjI5IDEwLjIxek0zODYuMTIgMzguMjVxLTIyLjM4IDAtMzcuMTUgMTYuMzlRMzM1LjIgNjkuNCAzMzYuMjQgODdjLjA1Ljg2LjEyIDEuNy4yMiAyLjUzbC0xLjU0LjY4cS0xNy40NiA3LjUyLTMyLjIzIDcuNTEtNy40IDAtMTEuMDktNS4xMiAxOS45LTMuMjcgMzMtMTUuMzUgMTIuNC0xMS4wMyAxMS41NC0yMS40Ny0xLjIzLTE2LjM3LTIxLjM0LTE2LjM4LTIxLjggMC0zNy44IDE2LjQyLTE0LjU2IDE1LTE0Ljc3IDMxLjZhMzcuNTcgMzcuNTcgMCAwIDAgLjI3IDUuMzdjLTIuMjkgMS41MS00IDIuMjctNS4yIDIuMjdxLTMuOSAwLTQuOTItMS42M2MtLjY5LTEuMDktMS0zLjA2LS44My01LjkzcTAtMS42NCAyLjU3LTEyLjU3dDIuNzctMTYuNjdxLjQtOC4zNy0zLjI4LTEyLjg4LTQuMzItNS41Mi0xNC4xNy00LjdhMzAuNDIgMzAuNDIgMCAwIDAtMTUuOCA2LjE2IDU0LjU3IDU0LjU3IDAgMCAwLTkuMjMgOC44MmMtMS4xIDEtMi4xMiAxLjg2LTMuMDggMi42N3EuMTktOC40MS0zLjI4LTEyLjkzLTQuMzItNS41My0xNC4zOC00LjcyYTM2LjQ2IDM2LjQ2IDAgMCAwLTIxLjEzIDkuMjQgMzcuNjcgMzcuNjcgMCAwIDAtNy4xOSA4LjIxIDE4LjE1IDE4LjE1IDAgMCAwIC40MS0zLjlBMTkuNDIgMTkuNDIgMCAwIDAgMTYyLjUgNDNxLTMuMjgtNC44Mi04LjYyLTQuNDEtMy4wNy4yMS0xMS42OSA4LjIxLTExLjkxIDExLjA4LTEyLjkzIDExLjlsNC45MiA1LjU0YzMuODMtMi43NiA2LjE2LTQuMTUgNy00LjE1cTIuMjUgMCAxLjg1IDMuNjhhMTE0LjExIDExNC4xMSAwIDAgMS0xLjg5IDE0Ljg0Yy0uNyAzLjk0LTEuMiA3LjMzLTEuNTIgMTAuMTlsLS4xOC4xNXEtNy4zOSA2LjA4LTEwLjI2IDYuMDdjLTQuMzggMC02LjUtMi45Mi02LjM3LTguNzlxMy4wOC0xOS4yMiA1Ljc2LTMxLjY5LjgxLTcuMzYtMi4zNy0xMnQtMTAtNHEtNC4zMi40LTEzLjE0IDguMjFMOTcgNTIuMzljLS40MS05LjY4LTQuODItMTQuNjYtMTMuMjgtMTQuOTFxLTE5LS42LTI1Ljc0IDIxLjQ2YTE3LjE5IDE3LjE5IDAgMCAxIDYuNzYtMS41cTcgMCA2LjE2IDcuODQtLjQ2IDQuNzItNi4yIDEzLjgxdC04LjYyIDkuMDZxLTMuNjkgMC02Ljc3LTE0LTEtNC4xMS0zLjY5LTIxLTIuNDctMTUuNTQtMTMuMTQtMTQuNTJRMjggMzkgMTguOTQgNDYuODRxLTYuNTcgNi0xMy4zNCAxMS45bDQuMyA1LjU0UTE2LjA1IDYwIDE3LjA3IDYwcTQuNzEgMCA4LjgxIDE0Ljc2bDcuMzggMjcuMDZxNS41MiAxNC43NiAxMy41MSAxNC43NiAxMi45MiAwIDMxLjU1LTI0LjI0IDEzLjEtMTYuODQgMTctMjguNWMzLjQ0LTIuNTUgNS41Ny0zLjg0IDYuMzUtMy44NHEzLjY5IDAgMy42OSA1LjMzIDAgMS00IDE1LjE4dC00LjIgMjAuOTJxLS4yMSA2LjU3IDMuMTggMTAuNjZjMi4yNSAyLjc0IDUuNTEgNC4xMSA5Ljc1IDQuMTFxMTMuNzUgMCAyNy41LTExLjljLjgyLS43MSAxLjYxLTEuNDQgMi4zOS0yLjE4YTE2LjUxIDE2LjUxIDAgMCAwIDMuNzcgNy41NnE1LjkzIDYuMzQgMjAgNS45My0xLjg5LTQuNTItMS40Ny0xNmE1OS43IDU5LjcgMCAwIDEgNi41Ny0yNC40M3E2LTExLjY4IDExLjEtMTEuNyA2IDAgNS41NSA3LjU5YTUzLjEzIDUzLjEzIDAgMCAxLTIgMTEuNzEgNTUuMjMgNTUuMjMgMCAwIDAtMiAxMy4xM3EtLjQxIDEwLjQ3IDQuNzEgMTUgNS43MyA1LjEzIDIwLjA1IDQuNzItMi4xMy00LjcxLTEuNzItMTMuNTQuNi0xMi41MiA4LjQ0LTI1Ljg2IDcuNDEtMTIuNzIgMTIuNzYtMTIuNzMgNSAwIDQuNzQgNy44YTc0Ljk0IDc0Ljk0IDAgMCAxLTIuNTYgMTQuMzYgNzQuNjEgNzQuNjEgMCAwIDAtMi41NyAxNS43OXEtLjQxIDE0Ljc4IDEyLjk0IDE0Ljc3IDEzLjc0IDAgMjcuNS0xMS45bC40NC0uNGMuMzIuNTQuNjQgMS4wOCAxIDEuNnE3LjE5IDExLjA4IDIzLjgxIDExLjA4IDIyLjM2IDAgNDQuMTMtMTIuNWMxLjYzLS45MiAzLjE3LTEuODMgNC42NS0yLjc1YTI5LjQzIDI5LjQzIDAgMCAwIDMuMjQgNS4xOHE4LjQyIDEwLjQ1IDI0LjYzIDEwLjQ1IDE5LjUgMCAzMi42NC0xMy43M2E0OC43OSA0OC43OSAwIDAgMCAxNC0zMi41OHEuNjEtMTMuOTMtNi4zNi0yMi43NS03LjQ5LTkuNjUtMjEuODUtOS42N3ptLTk3Ljc2IDQ2LjU2YTExLjEyIDExLjEyIDAgMCAxIDAtMi42NnEuMTktNy43NSA2LjU1LTE2LjIzdDEyLjUtOC40OGMzLjE1IDAgNC42NSAxLjg1IDQuNTEgNS41MnEtLjE5IDQuMDgtNi4xNCAxMC42MmE0Ni4yNSA0Ni4yNSAwIDAgMS0xNy40MiAxMS4yM3pNMzkxIDY5Ljg1YTM5IDM5IDAgMCAxLTYgMTguOTJxLTYuNTcgMTAuOTEtMTUuODEgMTAuOS00LjExIDAtNi4zNi00LjUyYTE3LjY2IDE3LjY2IDAgMCAxLTEuODUtOS4wNSAzOS44MSAzOS44MSAwIDAgMSA2LjE2LTE5Ljc0cTYuODYtMTEuMzEgMTcuMzMtMTEuMzFjMi4xOSAwIDMuODYgMS41NCA1IDQuNjNBMjUuODIgMjUuODIgMCAwIDEgMzkxIDY5Ljg1eiIgZmlsbD0iIzAwYWRlZiI+PC9wYXRoPjwvc3ZnPgogICAgICAgICAgICA8L2E+CiAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmF2IGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51IiByb2xlPSJuYXZpZ2F0aW9uIiBhcmlhLWxhYmVsPSJNYWluIG1lbnUiPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJ0b3BuYXZfbWVudV9kZXNrdG9wX21haW4iIHJvbGU9Im1lbnViYXIiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXMiIGRhdGEtbWVudS1pZD0iam9pbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0idG9wbmF2X21lbnVfam9pbiBqcy10b3BuYXZfbWVudV9hdXRoIiBvbmNsaWNrPSJldmVudC5wcmV2ZW50RGVmYXVsdCgpO3ZpbWVvLk1vZGFsLmNyZWF0ZSh7c2l6ZToneHNtYWxsJyxjb250ZW50Oicvam9pbj9tb2RhbD1uZXcnfSkudGhlbihjb21wbGV0ZVVzZXJMb2dpbikiIGRhdGEtZ2EtZXZlbnQtY2xpY2s9InRvcF9uYXZ8am9pbiIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6am9pbiIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfam9pbl9jbGljayIgaHJlZj0iLy92aW1lby5jb20vam9pbiIgdGl0bGU9IkJlY29tZSBhIFZpbWVvIG1lbWJlciIgcmVsPSJ0b2dnbGUiIHJvbGU9ImJ1dHRvbiIgYXJpYS1vd25zPSJ0b3BuYXZfam9pbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSm9pbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtcyIgZGF0YS1tZW51LWlkPSJsb2dpbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0ianMtdG9wbmF2X21lbnVfYXV0aCIgb25jbGljaz0iZXZlbnQucHJldmVudERlZmF1bHQoKTt2aW1lby5Nb2RhbC5jcmVhdGUoe3NpemU6J3hzbWFsbCcsY29udGVudDonL2xvZ19pbj9tb2RhbD1uZXcnfSkudGhlbihjb21wbGV0ZVVzZXJMb2dpbikiIGRhdGEtZ2EtZXZlbnQtY2xpY2s9InRvcF9uYXZ8bG9naW4iIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OmxvZ2luIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9sb2dpbl9jbGljayIgaHJlZj0iLy92aW1lby5jb20vbG9nX2luIiB0aXRsZT0iTG9nIGluIHRvIHlvdXIgYWNjb3VudCIgcmVsPSJ0b2dnbGUiIHJvbGU9ImJ1dHRvbiIgYXJpYS1vd25zPSJ0b3BuYXZfbG9naW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZyBpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtcyIgZGF0YS1tZW51LWlkPSJwcmljaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnByaWNpbmciIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3ByaWNpbmdfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL3VwZ3JhZGUiIHRpdGxlPSJQcmljaW5nIiByZWw9InRvZ2dsZSIgcm9sZT0iYnV0dG9uIiBhcmlhLW93bnM9InRvcG5hdl9wcmljaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmljaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zIiBkYXRhLW1lbnUtaWQ9InByb2R1Y3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgb25jbGljaz0iZXZlbnQucHJldmVudERlZmF1bHQoKTtldmVudC50YXJnZXQuYmx1cigpOyIgY2xhc3M9InRvcG5hdl9tZW51X25vX2xpbmsgdG9wbmF2X2hhc19kcm9wZG93biB0b3BuYXZfaWNvbl9jaGV2cm9uX2EiIGhyZWY9IiMiIHRpdGxlPSJQcm9kdWN0IiByZWw9InRvZ2dsZSIgcm9sZT0iYnV0dG9uIiBhcmlhLW93bnM9InRvcG5hdl9wcm9kdWN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9kdWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duLS13cmFwcGVyIiByb2xlPSJtZW51IiBhcmlhLWhpZGRlbj0idHJ1ZSIgaWQ9InRvcG5hdl9wcm9kdWN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvcG5hdl9kZXNrdG9wX3NvbHV0aW9ucy0tZmVhdHVyZXMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd24tLWxhYmVscyI+RkVBVFVSRVM8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfbGlzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnByb2R1Y3R8a2V5d29yZDp2aWRlb19wbGF5ZXIiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3Byb2R1Y3RfdmlkZW9fcGxheWVyIiBocmVmPSIvL3ZpbWVvLmNvbS9mZWF0dXJlcy92aWRlby1wbGF5ZXIiIHRpdGxlPSJWaWRlbyBwbGF5ZXIiPlZpZGVvIHBsYXllcjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6cHJvZHVjdHxrZXl3b3JkOnNjcmVlbl9yZWNvcmRlciIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfcHJvZHVjdF9zY3JlZW5fcmVjb3JkZXIiIGhyZWY9Ii8vdmltZW8uY29tL2ZlYXR1cmVzL3NjcmVlbi1yZWNvcmRlciIgdGl0bGU9IlNjcmVlbiByZWNvcmRlciI+U2NyZWVuIHJlY29yZGVyPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpwcm9kdWN0fGtleXdvcmQ6bGl2ZV9zdHJlYW1pbmciIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3Byb2R1Y3RfbGl2ZV9zdHJlYW1pbmciIGhyZWY9Ii8vdmltZW8uY29tL2xpdmUiIHRpdGxlPSJMaXZlIHN0cmVhbWluZyI+TGl2ZSBzdHJlYW1pbmc8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnByb2R1Y3R8a2V5d29yZDpwcml2YWN5IiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9wcm9kdWN0X3ByaXZhY3kiIGhyZWY9Ii8vdmltZW8uY29tL2ZlYXR1cmVzL3ZpZGVvLXByaXZhY3kiIHRpdGxlPSJQcml2YWN5Ij5Qcml2YWN5PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpwcm9kdWN0fGtleXdvcmQ6Y29sbGFib3JhdGlvbiIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfcHJvZHVjdF9jb2xsYWJvcmF0aW9uIiBocmVmPSIvL3ZpbWVvLmNvbS9mZWF0dXJlcy92aWRlby1jb2xsYWJvcmF0aW9uIiB0aXRsZT0iQ29sbGFib3JhdGlvbiI+Q29sbGFib3JhdGlvbjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6cHJvZHVjdHxrZXl3b3JkOmRpc3RyaWJ1dGlvbiIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfcHJvZHVjdF9kaXN0cmlidXRpb24iIGhyZWY9Ii8vdmltZW8uY29tL2ZlYXR1cmVzL3ZpZGVvLW1hcmtldGluZyIgdGl0bGU9IkRpc3RyaWJ1dGlvbiBhbmQgbWFya2V0aW5nIj5EaXN0cmlidXRpb24gJiBtYXJrZXRpbmc8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnByb2R1Y3R8a2V5d29yZDptb25ldGl6YXRpb24iIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3Byb2R1Y3RfbW9uZXRpemF0aW9uIiBocmVmPSIvL3ZpbWVvLmNvbS9mZWF0dXJlcy92aWRlby1tb25ldGl6YXRpb24iIHRpdGxlPSJNb25ldGl6YXRpb24iPk1vbmV0aXphdGlvbjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6cHJvZHVjdHxrZXl3b3JkOmFuYWx5dGljcyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfcHJvZHVjdF9hbmFseXRpY3MiIGhyZWY9Ii8vdmltZW8uY29tL2ZlYXR1cmVzL3ZpZGVvLWFuYWx5dGljcyIgdGl0bGU9IkFuYWx5dGljcyI+QW5hbHl0aWNzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpwcm9kdWN0fGtleXdvcmQ6aG9zdGluZyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfcHJvZHVjdF9ob3N0aW5nIiBocmVmPSIvL3ZpbWVvLmNvbS9mZWF0dXJlcy9vbmxpbmUtdmlkZW8taG9zdGluZyIgdGl0bGU9Ikhvc3RpbmcgYW5kIG1hbmFnZW1lbnQiPkhvc3RpbmcgJiBtYW5hZ2VtZW50PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvdXBncmFkZSIgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd24tLWNvbXBhcmVfcGxhbnMiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnByb2R1Y3R8a2V5d29yZDpjb21wYXJlX3BsYW5zfHRhcmdldDovdXBncmFkZXx0eXBlOmNsaWNrIj5Db21wYXJlIFBsYW5zPC9hPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9zb2x1dGlvbnMtLXNlcnZpY2VzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duLS1sYWJlbHMiPlNFUlZJQ0VTPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wbmF2X2Rlc2t0b3Bfc29sdXRpb25zLS1zZXJ2aWNlc19jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VydmljZXNfd3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6c29sdXRpb25zfGtleXdvcmQ6Y3JlYXRlfHRhcmdldDovY3JlYXRlfHR5cGU6Y2xpY2siIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9zb2x1dGlvbnMtLXNlcnZpY2VzX2Jsb2NrIiBocmVmPSIvL3ZpbWVvLmNvbS9jcmVhdGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+TWFrZSBzb2NpYWwgdmlkZW9zIGluIGFuIGluc3RhbnQ6IHVzZSBjdXN0b20gdGVtcGxhdGVzIHRvIHRlbGwgdGhlIHJpZ2h0IHN0b3J5IGZvciB5b3VyIGJ1c2luZXNzLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlcnZpY2VzX3dyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOmZvcl9oaXJlfHRhcmdldDovZm9yLWhpcmV8dHlwZTpjbGljayIgY2xhc3M9InRvcG5hdl9kZXNrdG9wX3NvbHV0aW9ucy0tc2VydmljZXNfYmxvY2siIGhyZWY9Ii8vdmltZW8uY29tL2Zvci1oaXJlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIEhpcmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+UG9zdCBqb2JzLCBmaW5kIHByb3MsIGFuZCBjb2xsYWJvcmF0ZSBjb21taXNzaW9uLWZyZWUgaW4gb3VyIHByb2Zlc3Npb25hbCBtYXJrZXRwbGFjZS48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZXJ2aWNlc193cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpzb2x1dGlvbnN8a2V5d29yZDplbnRlcnByaXNlfHRhcmdldDovZW50ZXJwcmlzZXx0eXBlOmNsaWNrIiBjbGFzcz0idG9wbmF2X2Rlc2t0b3Bfc29sdXRpb25zLS1zZXJ2aWNlc19ibG9jayIgaHJlZj0iLy92aW1lby5jb20vZW50ZXJwcmlzZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudGVycHJpc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+R2V0IHlvdXIgdGVhbSBhbGlnbmVkIHdpdGggYWxsIHRoZSB0b29scyB5b3UgbmVlZCBvbiBvbmUgc2VjdXJlLCByZWxpYWJsZSB2aWRlbyBwbGF0Zm9ybS48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZXJ2aWNlc193cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpzb2x1dGlvbnN8a2V5d29yZDpzdG9ja3x0YXJnZXQ6L3N0b2NrfHR5cGU6Y2xpY2siIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9zb2x1dGlvbnMtLXNlcnZpY2VzX2Jsb2NrIiBocmVmPSIvL3ZpbWVvLmNvbS9zdG9jayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b2NrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPkJyb3dzZSBhbmQgYnV5IGV4Y2VwdGlvbmFsLCByb3lhbHR5LWZyZWUgc3RvY2sgY2xpcHMsIGhhbmRwaWNrZWQgYnkgdGhlIGJlc3QuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zIiBkYXRhLW1lbnUtaWQ9InNvbHV0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0idG9wbmF2X2hhc19kcm9wZG93biB0b3BuYXZfaWNvbl9jaGV2cm9uX2EiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOnNvbHV0aW9ucyIgaHJlZj0iIyIgdGl0bGU9IlNvbHV0aW9ucyIgcmVsPSJ0b2dnbGUiIHJvbGU9ImJ1dHRvbiIgYXJpYS1vd25zPSJ0b3BuYXZfc29sdXRpb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb2x1dGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93biIgcm9sZT0ibWVudSIgYXJpYS1oaWRkZW49InRydWUiIGlkPSJ0b3BuYXZfc29sdXRpb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6c29sdXRpb25zfGtleXdvcmQ6Y3JlYXRpdmVfcHJvZmVzc2lvbmFscyIgaHJlZj0iLy92aW1lby5jb20vc29sdXRpb25zL2NyZWF0aXZlLXByb2Zlc3Npb25hbHMtc29sdXRpb25zIiB0aXRsZT0iQWxsIHlvdSBuZWVkIHRvIG1ha2UgZ3JlYXQgdmlkZW8uIj5DcmVhdGl2ZSBQcm9mZXNzaW9uYWxzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOnNtYWxsX2J1c2luZXNzIiBocmVmPSIvL3ZpbWVvLmNvbS9zb2x1dGlvbnMvc21hbGwtYnVzaW5lc3Mtc29sdXRpb25zIiB0aXRsZT0iQ2FwdHVyZSB5b3VyIGN1c3RvbWVyc+KAmSBhdHRlbnRpb24gd2l0aCB2aWRlby4iPlNtYWxsIEJ1c2luZXNzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOmVudGVycHJpc2UiIGhyZWY9Ii8vdmltZW8uY29tL2VudGVycHJpc2UiIHRpdGxlPSJFbnRlcnByaXNlIj5FbnRlcnByaXNlPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOmVkdWNhdGlvbiIgaHJlZj0iLy92aW1lby5jb20vc29sdXRpb25zL2VkdWNhdGlvbi1zb2x1dGlvbnMiIHRpdGxlPSJTaGFyZSBrbm93bGVkZ2Ugd2l0aCB2aWRlby4iPkVkdWNhdGlvbjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpzb2x1dGlvbnN8a2V5d29yZDpmaXRuZXNzIiBocmVmPSIvL3ZpbWVvLmNvbS9zb2x1dGlvbnMvZml0bmVzcy1zb2x1dGlvbnMiIHRpdGxlPSJHZXQgeW91ciBmaXRuZXNzIHN0dWRpbyBvbmxpbmUuIj5GaXRuZXNzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOmZhaXRoIiBocmVmPSIvL3ZpbWVvLmNvbS9zb2x1dGlvbnMvZmFpdGgtc29sdXRpb25zIiB0aXRsZT0iS2VlcCB5b3VyIGNvbW11bml0eSBjb25uZWN0ZWQuIj5GYWl0aDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtcyIgZGF0YS1tZW51LWlkPSJpbnNwaXJhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBvbmNsaWNrPSJldmVudC5wcmV2ZW50RGVmYXVsdCgpO2V2ZW50LnRhcmdldC5ibHVyKCk7IiBjbGFzcz0idG9wbmF2X21lbnVfbm9fbGluayB0b3BuYXZfaGFzX2Ryb3Bkb3duIHRvcG5hdl9pY29uX2NoZXZyb25fYSIgaHJlZj0iIyIgdGl0bGU9IldhdGNoIiByZWw9InRvZ2dsZSIgcm9sZT0iYnV0dG9uIiBhcmlhLW93bnM9InRvcG5hdl9pbnNwaXJhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2F0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93biIgcm9sZT0ibWVudSIgYXJpYS1oaWRkZW49InRydWUiIGlkPSJ0b3BuYXZfaW5zcGlyYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDp3YXRjaHxrZXl3b3JkOndhdGNoIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl93YXRjaF9jbGljayIgaHJlZj0iLy92aW1lby5jb20vd2F0Y2giIHRpdGxlPSJFeHBsb3JlIj5FeHBsb3JlPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OndhdGNofGtleXdvcmQ6c3RhZmZfcGlja3MiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3dhdGNoX3N0YWZmX3BpY2tzX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9jaGFubmVscy9zdGFmZnBpY2tzIiB0aXRsZT0iVGhlIGJlc3QgdmlkZW9zIG9uIFZpbWVvLCBjdXJhdGVkIGRhaWx5IGJ5IG91ciB0ZWFtIj5TdGFmZiBQaWNrczwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDptYW5hZ2VfdmlkZW9zfGtleXdvcmQ6dmlkZW9fc2Nob29sIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9jcmVhdGVfdmlkZW9fc2Nob29sX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS92aWRlb3NjaG9vbCIgdGl0bGU9IkxlYXJuIGhvdyB0byBtYWtlIGJldHRlciB2aWRlb3MiPlZpZGVvIFNjaG9vbDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L25hdj48IS0tIC8udG9wbmF2X2Rlc2t0b3BfbWVudSAtLT4KICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InRvcG5hdl9tZW51X3NlYXJjaF9vbW5pc2VhcmNoIiBjbGFzcz0idG9wbmF2X21lbnVfc2VhcmNoIiBkYXRhLXF1ZXJ5PSIiIGRhdGEtcGxhY2Vob2xkZXI9IlNlYXJjaCB2aWRlb3MsIHBlb3BsZSwgYW5kIG1vcmUiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvcG5hdl9tZW51X3JpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0icmVjb3JkX3RpcF93cmFwcGVyIiBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfdmlkZW9fcG9wb3ZlciIgb25Nb3VzZWVudGVyPSJ0cmFja05ld1ZpZGVvRHJvcGRvd25JbXByZXNzaW9uKCcnKSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPSJuZXdfdmlkZW9fZHJvcGRvd25fYnV0dG9uIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9InRvcG5hdl9kZXNrdG9wX3ZpZGVvX3BvcG92ZXJfYnV0dG9uIGlyaXNfYnRuLS1wcmltYXJ5IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6bmV3X3ZpZGVvIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgb25jbGljaz0iaGFuZGxlTmV3VmlkZW9DbGljaygpIgogICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfdmlkZW9fcG9wb3Zlcl9zcGFuX3dyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldyB2aWRlbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9InJlY29yZF9hbmltYXRpb25fd3JhcHBlciIgY2xhc3M9InRvcG5hdl9kZXNrdG9wX3ZpZGVvX3BvcG92ZXJfc3Bhbl92YXJpYW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPSJNMTIgMTUuNWExIDEgMCAwIDEtLjY3LS4yNmwtNS00LjUgMS4zNC0xLjQ4TDEyIDEzLjE1bDQuMzMtMy45IDEuMzQgMS40OS01IDQuNWExIDEgMCAwIDEtLjY3LjI2eiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPSIjZmZmZmZmIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgaWQ9Im5ld192aWRlb19kcm9wZG93bl92YXJpYW50IiBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93biB0b3BuYXZfZGVza3RvcF92aWRlb19wb3BvdmVyX2Ryb3Bkb3duX3ZhcmlhbnQiIHJvbGU9Im1lbnUiIGFyaWEtaGlkZGVuPSJ0cnVlIiBzdHlsZT0icGFkZGluZzogdW5zZXQ7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW1fdmFyaWFudCIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBvbmNsaWNrPSIoZnVuY3Rpb24oZXZlbnQpIHsgaWYgKHdpbmRvdy5oYW5kbGVVcGxvYWRCdXR0b25DbGljaykgeyBoYW5kbGVVcGxvYWRCdXR0b25DbGljayhldmVudCk7IH19KShldmVudCkiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50Om5ld192aWRlb3xrZXl3b3JkOnsnYWN0aW9uJzondXBsb2FkJ318dGFyZ2V0Oi91cGxvYWR8dHlwZTpjbGljayIgaWQ9InRvcG5hdl9kZXNrdG9wX3VwbG9hZF9idXR0b24iIGhyZWY9Ii8vdmltZW8uY29tL3VwbG9hZCIgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFsaWduX3RvcG5hdl9kcm9wZG93bl9pY29ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0b3BuYXZfZHJvcGRvd25faWNvbnMiPjxzdmcgdmlld0JveD0iMCAwIDIwIDIwIiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD0iTTE4IDguNDhhNy4xNiA3LjE2IDAgMCAwLTEuODQtNC43NkE1LjgxIDUuODEgMCAwIDAgNi45MiA1YTUuMjQgNS4yNCAwIDAgMC00LjY5IDMuODVBNC45MSA0LjkxIDAgMCAwIDAgMTNhNS4xMyA1LjEzIDAgMCAwIDUgNWgxMGE1LjEgNS4xIDAgMCAwIDUtNC45NCA1Ljg5IDUuODkgMCAwIDAtMi00LjU4ek0xNSAxNmgtNHYtMy41OWwxLjI5IDEuMjkgMS40MS0xLjQxLTMuNy0zLjctMy43MSAzLjdMNy43IDEzLjcgOSAxMi40MVYxNkg1YTMuMTYgMy4xNiAwIDAgMS0zLTMgMi45MSAyLjkxIDAgMCAxIDEuNTItMi41OGwuNC0uMi4wOC0uNDRBMy4zOCAzLjM4IDAgMCAxIDcuNTkgN2guN2wuMjQtLjY2QTMuNjkgMy42OSAwIDAgMSAxMiA0YTMuNzMgMy43MyAwIDAgMSAyLjcyIDEuMTJBNS40NSA1LjQ1IDAgMCAxIDE2IDl2LjU0bC40NS4zQTMuNzkgMy43OSAwIDAgMSAxOCAxMy4wNiAzLjA5IDMuMDkgMCAwIDEgMTUgMTZ6IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9IiMxYTJlM2IiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPgogICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVwbG9hZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtX3ZhcmlhbnQiIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgb25jbGljaz0iaGFuZGxlQ3JlYXRlVmlkZW9DbGljayhldmVudCkiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50Om5ld192aWRlb3xrZXl3b3JkOnsnYWN0aW9uJzonY3JlYXRlJ318dGFyZ2V0Oi9jcmVhdGUvdmlkZW8tbWFrZXJ8dHlwZTpjbGljayIgaWQ9InRvcG5hdl9kZXNrdG9wX2NyZWF0ZV92aWRlb19idXR0b24iIGhyZWY9Ii8vdmltZW8uY29tL2NyZWF0ZS92aWRlby1tYWtlciIgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFsaWduX3RvcG5hdl9kcm9wZG93bl9pY29ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0b3BuYXZfZHJvcGRvd25faWNvbnMiPjxzdmcgdmlld0JveD0iMCAwIDIwIDIwIiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9Ik0zLjIgMTYuOGwzLjgtMSAxMC0xMGMuMi0uMi4yLS41IDAtLjdMMTQuOSAzYy0uMi0uMi0uNS0uMi0uNyAwbC0yLjEgMi4xIDIuOCAyLjhMMTMuOCA5IDExIDYuMiA0LjIgMTNsLTEgMy44em05LjktMTQuOWMuOC0uOCAyLS44IDIuOCAwTDE4LjEgNGMuOC44LjggMiAwIDIuOEw3LjggMTcuMmwtNS42IDEuNWMtLjUuMS0uOS0uMi0uNy0uN2wxLjQtNS43TDEzLjEgMS45eiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9IiMxYTJlM2IiCiAgICAgICAgICAgICAgICAgICAgICAgIC8+CiAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGUgYSB2aWRlbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImNhcnRfdG9wX25hdiIgY2xhc3M9InRvcG5hdl9jYXJ0X2J1dHRvbiI+PC9kaXY+CgogICAgICAgICAgICA8L2Rpdj48IS0tIC8udG9wbmF2X21lbnVfcmlnaHQgLS0+CiAgICAgICAgICAgIDwvZGl2PjwhLS0gLy50b3BuYXZfZGVza3RvcF93cmFwcGVyIC0tPgo8L2Rpdj4KCiAgICA8c2NyaXB0PgogICAgICAgIHZhciBpc01vYmlsZSA9IC9pcGhvbmV8aXBvZHxhbmRyb2lkfHdlYm9zfGJsYWNrYmVycnl8d2luZG93cyBwaG9uZS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKTsKCiAgICAgICAgLy8gRE8gTk9UIFJFTU9WRS4gVGhpcyBpcyBhIGNhbGxiYWNrIGZvciB0aGUgbG9naW4gJiBqb2luIGJ1dHRvbnMgaW4gVG9wTmF2QnVpbGRlci4KICAgICAgICBmdW5jdGlvbiBjb21wbGV0ZVVzZXJMb2dpbihyZXNwb25zZSkgewogICAgICAgICAgICBpZiAocmVzcG9uc2UgJiYgIXJlc3BvbnNlLnNpZ251cCkgewogICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIGhhbmRsZVVwbG9hZEJ1dHRvbkNsaWNrKGV2ZW50KSB7CiAgICAgICAgICAgIC8vIE9wZW5zIHRoZSBhdXRoIG1vZGFsIGZvciBsb2dnZWQgb3V0IHVzZXJzCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgd2luZG93LnZpbWVvCiAgICAgICAgICAgICAgICYmIHdpbmRvdy52aW1lby5jb25maWcKICAgICAgICAgICAgICAgJiYgd2luZG93LnZpbWVvLk1vZGFsCiAgICAgICAgICAgICAgICYmICF3aW5kb3cudmltZW8uY3VyX3VzZXIKICAgICAgICAgICAgKXsKICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICBpc01vYmlsZSA/IHdpbmRvdy5sb2NhdGlvbi5ocmVmPSIvdXBsb2FkIiA6IHZpbWVvLk1vZGFsLmNyZWF0ZSh7CiAgICAgICAgICAgICAgICAgICAgc2l6ZTogJ3hzbWFsbCcsCiAgICAgICAgICAgICAgICAgICAgY29udGVudDogJy9qb2luP21vZGFsPW5ldyZyZWRpcmVjdD0vdXBsb2FkJywKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICA8L3NjcmlwdD4KCjxzY3JpcHQ+CiAgICB2YXIgc2VydmljZUVsZW1lbnRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnNlcnZpY2VzX3dyYXBwZXInKTsKICAgIHZhciBoaWRkZW5TZXJ2aWNlRWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuc2VydmljZXNfd3JhcHBlci5oaWRlJyk7CiAgICB2YXIgY291bnQgPSBzZXJ2aWNlRWxlbWVudHMubGVuZ3RoIC0gaGlkZGVuU2VydmljZUVsZW1lbnRzLmxlbmd0aDsKICAgIGlmIChjb3VudCA+IDIpIHsKICAgICAgICB2YXIgc2VydmljZUNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy50b3BuYXZfZGVza3RvcF9zb2x1dGlvbnMtLXNlcnZpY2VzX2NvbnRhaW5lcicpOwogICAgICAgIGlmIChzZXJ2aWNlQ29udGFpbmVyKSB7CiAgICAgICAgICAgIHNlcnZpY2VDb250YWluZXIuc3R5bGUud2lkdGggPSAnNDUwcHgnOwogICAgICAgIH0KICAgIH0KPC9zY3JpcHQ+Cgo8c2NyaXB0PgogICAgZnVuY3Rpb24gaGFuZGxlTmV3VmlkZW9DbGljaygpIHsKICAgICAgICBpZiAod2luZG93LnZpbWVvICYmIHdpbmRvdy52aW1lby5jdXJfdXNlcikgewogICAgICAgICAgICBpZiAod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lICE9PSAnL3VwbG9hZCcpIHsKICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy91cGxvYWQnOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgd2luZG93LnZpbWVvLk1vZGFsLmNyZWF0ZSh7IHNpemU6ICd4c21hbGwnLCBjb250ZW50OiAnL2pvaW4/bW9kYWw9bmV3JnJlZGlyZWN0PS91cGxvYWQnIH0pCiAgICAgICAgICAgICAgICAudGhlbihjb21wbGV0ZVVzZXJMb2dpbik7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGhhbmRsZUNyZWF0ZVZpZGVvQ2xpY2soZSwgaXNSZWNvcmRTY3JlZW4gPSBmYWxzZSkgewogICAgICAgIGlmICh3aW5kb3cudmltZW8gJiYgIXdpbmRvdy52aW1lby5jdXJfdXNlcikgewogICAgICAgICAgICBpZiAoIWlzUmVjb3JkU2NyZWVuKSB7CiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CgogICAgICAgICAgICAgICAgd2luZG93LnZpbWVvLk1vZGFsLmNyZWF0ZSh7CiAgICAgICAgICAgICAgICAgICAgc2l6ZTogJ3hzbWFsbCcsCiAgICAgICAgICAgICAgICAgICAgY29udGVudDogJy9qb2luP21vZGFsPW5ldyZyZWRpcmVjdD0vY3JlYXRlL3ZpZGVvLW1ha2VyJwogICAgICAgICAgICAgICAgfSkudGhlbihjb21wbGV0ZVVzZXJMb2dpbik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gdHJhY2tOZXdWaWRlb0Ryb3Bkb3duSW1wcmVzc2lvbihyZWNvcmRPcHRpb24pIHsKICAgICAgICBpZiAod2luZG93Ll9fZmEpIHsKICAgICAgICAgICAgd2luZG93Ll9fZmEucHVzaChbJ3RyYWNrRXZlbnQnLCB7CiAgICAgICAgICAgICAgICB0eXBlOiAnaW1wcmVzc2lvbicsCiAgICAgICAgICAgICAgICBjb250YWluZXI6ICd0b3BfbmF2JywKICAgICAgICAgICAgICAgIGNvbXBvbmVudDogJ25ld192aWRlbycsCiAgICAgICAgICAgIH1dKTsKCiAgICAgICAgICAgIGlmIChyZWNvcmRPcHRpb24pIHsKICAgICAgICAgICAgICAgIHdpbmRvdy5fX2ZhLnB1c2goWyd0cmFja0V2ZW50JywgewogICAgICAgICAgICAgICAgICAgIHR5cGU6ICdpbXByZXNzaW9uJywKICAgICAgICAgICAgICAgICAgICBjb250YWluZXI6ICd0b3BfbmF2JywKICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6ICdyZWNvcmQnLAogICAgICAgICAgICAgICAgICAgIGtleXdvcmQ6IHJlY29yZE9wdGlvbiwKICAgICAgICAgICAgICAgIH1dKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KPC9zY3JpcHQ+Cgo8c2NyaXB0PgogICAgLyoqCiAgICAgKiBUaGlzIGlzIHBhcnQgb2YgYW4gQUIgRXhwZXJpbWVudAogICAgICogRXhwZXJpbWVudCBsaW5rOiBodHRwczovL3ZpbWVvLmNvbS9tb2R3b3JsZC9hYmxpbmNvbG4vNTI4CiAgICAgKiBFeHBlcmltZW50IHBhcmFtOiBzaG93X215X2RyYWZ0cwogICAgICovCiAgICB2YXIgc2hvd1ZhcmlhbnQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIHNob3dNeURyYWZ0czsKICAgICAgICBpZiAod2luZG93LkFCTGluY29sbiAmJiB3aW5kb3cuQUJMaW5jb2xuLmdldFRlc3QoJ0pTLlRvcG5hdi5NeURyYWZ0cycpLmdldCgnc2hvd19teV9kcmFmdHMnLCAnY29udHJvbCcpID09PSAndmFyaWFudCcpIHsKICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLXRvcG5hdi1tYW5hZ2UtZHJhZnRzJykuY2xhc3NMaXN0LnJlbW92ZSgnaGlkZScpOwogICAgICAgIH0KICAgIH07CiAgICBzaG93VmFyaWFudCgpOwo8L3NjcmlwdD4KCiAgICA8c2NyaXB0PgogICAgICAgIHZhciBhcnJvdyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWNvcmRfYW5pbWF0aW9uX3dyYXBwZXInKTsKICAgICAgICB2YXIgbmV3VmlkZW9CdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVjb3JkX3RpcF93cmFwcGVyJyk7CgogICAgICAgIGlmIChhcnJvdykgewogICAgICAgICAgICBhcnJvdy5jbGFzc0xpc3QuYWRkKCdub19hbmltYXRpb24nKTsKICAgICAgICB9CgogICAgICAgIHZhciBpc0hvdmVyZWQgPSBmYWxzZTsKCiAgICAgICAgaWYgKG5ld1ZpZGVvQnRuICYmIGZhbHNlKSB7CiAgICAgICAgICAgIG5ld1ZpZGVvQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlmIChpc0hvdmVyZWQpIHJldHVybjsKCiAgICAgICAgICAgICAgICBpc0hvdmVyZWQgPSB0cnVlOwoKICAgICAgICAgICAgICAgIGlmIChhcnJvdykgewogICAgICAgICAgICAgICAgICAgIGFycm93LmNsYXNzTGlzdC5yZW1vdmUoJ25vX2FuaW1hdGlvbicpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHN0b3JlX3JlY29yZF90aXBfc2V0dGluZ3MoMSk7CgogICAgICAgICAgICB9LCBmYWxzZSk7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBzdG9yZV9yZWNvcmRfdGlwX3NldHRpbmdzKHZhbHVlKSB7CiAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgIHhoci5vcGVuKCdQT1NUJywgJy9zZXR0aW5ncy9uYXZfcmVjb3JkZXJfdGlwJyk7CiAgICAgICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdYLVJlcXVlc3RlZC1XaXRoJywgJ1hNTEh0dHBSZXF1ZXN0Jyk7CiAgICAgICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdDb250ZW50LXR5cGUnLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyk7CiAgICAgICAgICAgIHhoci5zZW5kKCdyZWNvcmRfc2NyZWVuX3RpcF9zdGF0ZT0nICsgdmFsdWUgKyAnJnRva2VuPScgKyB2aW1lby54c3JmdCk7CgogICAgICAgICAgICAvLyBOb3RoaW5nIHRvIGhhbmRsZS4gV2UgaG9wZSBmb3IgdGhlIGJlc3QgaW4gdGhpcyBjYXNlCiAgICAgICAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7fTsKICAgICAgICB9OwogICAgPC9zY3JpcHQ+CgoKICAgIAo8IS0tIFJlc3BvbnNpdmUgVG9wIE5hdiAoRXhwbG9yZSwgTE9IUCwgV2F0Y2gsIHRjKSAtLT4KPG5hdiBpZD0idG9wbmF2X21vYmlsZSIgY2xhc3M9InRvcG5hdl9tb2JpbGUgICAgbmF2X2Jhci0tbGkiIHJvbGU9ImJhbm5lciI+CgogICAgPGRpdiBjbGFzcz0idG9wbmF2X21vYmlsZV9iYXIiPgogICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgZGF0YS1hY3Rpb249Im1lbnUub3BlbiIgY2xhc3M9Im5hdmJhcl9oYW1idXJnZXIgbmF2X2Jhcl9pY29uIHRvcG5hdl9tb2JpbGVfYnV0dG9uIHRvcG5hdl9tb2JpbGVfcHVsbF9sZWZ0IGpzLXRvcG5hdl9tb2JpbGVfaGVhZGVyX2xvZ28iIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMyIDMyIj4KICAgICAgICAgICAgICAgIDx0aXRsZT5NZW51PC90aXRsZT4KICAgICAgICAgICAgICAgIDxwYXRoIGlkPSJSZWN0YW5nbGUtNCIgZD0iTTcsOEgyNWExLDEsMCwwLDEsMSwxaDBhMSwxLDAsMCwxLTEsMUg3QTEsMSwwLDAsMSw2LDlINkExLDEsMCwwLDEsNyw4WiIgLz4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik03LDE1SDI1YTEsMSwwLDAsMSwxLDFoMGExLDEsMCwwLDEtMSwxSDdhMSwxLDAsMCwxLTEtMUg2QTEsMSwwLDAsMSw3LDE1WiIvPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTcsMjJIMjVhMSwxLDAsMCwxLDEsMWgwYTEsMSwwLDAsMS0xLDFIN2ExLDEsMCwwLDEtMS0xSDZBMSwxLDAsMCwxLDcsMjJaIi8+CiAgICAgICAgICAgIDwvc3ZnPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wbmF2X2FjdGlvbl9idXR0b25zIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii8vdmltZW8uY29tL3NlYXJjaCIgY2xhc3M9InRvcG5hdl9tb2JpbGVfYnV0dG9uIHRvcG5hdl9tb2JpbGVfcHVsbF9yaWdodCB0b3BuYXZfbW9iaWxlX2hlYWRlcl9zZWFyY2giPgogICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im5hdl9iYXJfc2VhcmNoX2ljb24gbmF2X2Jhcl9pY29uIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aXRsZT5TZWFyY2g8L3RpdGxlPgogICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjYuNzQsMjUuMzJsLTQuNTMtNC41M2ExLDEsMCwwLDAtLjIxLS4xNEE5LDksMCwxLDAsMjAuNjUsMjJhMSwxLDAsMCwwLC4xNC4yMWw0LjUzLDQuNTNhMSwxLDAsMCwwLDEuNDEtMS40MVpNMTUsMjJhNyw3LDAsMSwxLDctN0E3LDcsMCwwLDEsMTUsMjJaIi8+CiAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iY2FydF90b3BfbmF2X21vYmlsZSIgY2xhc3M9InRvcG5hdl9jYXJ0X2J1dHRvbiI+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8IS0tIFZpbWVvIExvZ28gLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdl9iYXJfdGl0bGUganMtbmF2X2Jhcl90aXRsZSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3ZpbWVvLmNvbSIgZ3RtLWRhdGEtY2xpY2s9Im1vYmlsZV9uYXZfaG9tZV9sb2dvX2NsaWNrIj4KICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgNDQxIDEyNC42ODIiIHdpZHRoPSI4NnB4IiBoZWlnaHQ9IjI3cHgiPgogICAgICAgICAgICAgICAgICAgICAgICA8Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMjAuNDgxLDI3LjMyNmM1LjQ2MiwwLDEwLjE4OC0xLjkxLDE0LjE3NC01LjcyOGMzLjU0Ny0zLjM3OSw1LjM5Mi02LjkwNiw1LjU0LTEwLjU4M2MwLjE0My0yLjQ5Mi0wLjgxNS00Ljk1MS0yLjg4LTcuMzc4QzEzNS4yNDQsMS4yMTcsMTMyLjY2MiwwLDEyOS41NjIsMGMtNS4zMiwwLTEwLjE1NSwxLjc2Ny0xNC41MTEsNS4yODhjLTQuMzU2LDMuNTI3LTYuNjA4LDcuMjA0LTYuNzUsMTEuMDIyQzEwOC4wMDIsMjMuNjU2LDExMi4wNjcsMjcuMzI2LDEyMC40ODEsMjcuMzI2eiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQzNC4wNzksNTAuMTZjLTUuMzE5LTYuOTI1LTEzLjE0NS0xMC4zOTUtMjMuNDc1LTEwLjM5NWMtMTYuMDk3LDAtMjkuNDU1LDUuODk2LTQwLjA4MywxNy42ODhjLTkuOTAyLDEwLjYxNC0xNC40NzgsMjIuMjY1LTEzLjczMywzNC45NDRjMC4wNDksMC45MzIsMC4xMzIsMS44NCwwLjIyOSwyLjczOGMtMC41NTQsMC4yNDEtMS4wOTMsMC40ODMtMS42NjIsMC43MjRjLTEyLjU1Niw1LjQxMS0yNC4xNDcsOC4xMS0zNC43NzUsOC4xMWMtNS4zMiwwLTkuMzA3LTEuODM5LTExLjk2LTUuNTIxYzE0LjMxNi0yLjM1NSwyNi4yMDYtNy44NzYsMzUuNjYyLTE2LjU2OGM4Ljg1NC03Ljk1NSwxMi45ODktMTUuNjg5LDEyLjQtMjMuMTk3Yy0wLjg4Ny0xMS43OC04LjU2Mi0xNy42NzYtMjMuMDM0LTE3LjY3NmMtMTUuNjUsMC0yOS4yMzUsNS45MDktNDAuNzUsMTcuNzE0Yy0xMC40ODQsMTAuNzgzLTE1LjgwNSwyMi4xNDgtMTUuOTQ3LDM0LjEwM2MtMC4wNCwyLjAwNSwwLjA2NiwzLjkzMiwwLjMsNS43ODljLTIuNDc3LDEuNjMyLTQuMzUyLDIuNDU2LTUuNjEzLDIuNDU2Yy0yLjgxLDAtNC41NzYtMC41ODItNS4zMTQtMS43NmMtMC43MzctMS4xNzgtMS4wMzUtMy4zMDgtMC44ODctNi40MDFjMC0xLjE3OCwwLjkxOS01LjY5NSwyLjc3MS0xMy41NjVjMS44NDUtNy44NywyLjg0MS0xMy44NjQsMi45OS0xNy45ODdjMC4yOTEtNi4wMjUtMC44OTQtMTAuNjYtMy41NDctMTMuODk2Yy0zLjEwMS0zLjk3NC04LjE5NC01LjY2My0xNS4yODEtNS4wNzRjLTUuOTAyLDAuNDQ3LTExLjU5MiwyLjY2LTE3LjA1NCw2LjY0N2MtMy4yNDksMi4zNjMtNi41NjksNS41MzQtOS45NjEsOS41MjFjLTEuMTg1LDEuMDM2LTIuMjkxLDItMy4zMjcsMi44OGMwLjE0My02LjA1MS0xLjAzNi0xMC43MDUtMy41NC0xMy45NTRjLTMuMTA3LTMuOTg3LTguMjcyLTUuNjgzLTE1LjUwOC01LjA5NGMtOC40MTUsMC43MzgtMTYuMDIsNC4wNjUtMjIuODA5LDkuOTY3Yy0yLjk1OCwyLjUxMS01LjU0LDUuNDY5LTcuNzUzLDguODYxYzAuMjkxLTEuMzI3LDAuNDQtMi43MzEsMC40NC00LjIwN2MwLTQuNTc2LTEuMTg1LTguNjAyLTMuNTQ3LTEyLjA3MXMtNS40NjItNS4wNTUtOS4zMDEtNC43NTdjLTIuMjEzLDAuMTQ5LTYuNDIsMy4xMDEtMTIuNjIxLDguODU0Yy04LjU2OSw3Ljk3NC0xMy4yMTYsMTIuMjU5LTEzLjk1NCwxMi44NDFsNS4zMTMsNS45OGM0LjEzNi0yLjk4NCw2LjY0Ny00LjQ3OSw3LjUzNC00LjQ3OWMxLjYxOCwwLDIuMjg1LDEuMzI3LDEuOTk0LDMuOTc1Yy0wLjE0MywzLjgzMS0wLjgyMiw5LjE2NC0yLjAzOSwxNi4wMTJjLTAuNzU0LDQuMjQzLTEuMjk4LDcuOTA0LTEuNjM4LDEwLjk4OGMtMC4wNjYsMC4wNTUtMC4xMjksMC4xMDktMC4xOTYsMC4xNjRjLTUuMzIsNC4zNzUtOS4wMDksNi41NTYtMTEuMDc0LDYuNTU2Yy00LjcyNSwwLTcuMDE2LTMuMTU4LTYuODY3LTkuNDg4YzIuMjEzLTEzLjgyNCw0LjI4NS0yNS4yMjIsNi4yMDctMzQuMTk5YzAuNTgzLTUuMjk0LTAuMjY2LTkuNTkyLTIuNTUtMTIuOTA2Yy0yLjI5MS0zLjMxNC01Ljg3LTQuNzQ0LTEwLjczNy00LjMwNGMtMy4xMDcsMC4yOTgtNy44MzIsMy4yNDktMTQuMTgxLDguODZjLTIuMjA1LDItNC40MSwzLjk5Ni02LjYxNSw1Ljk5M2MtMC40MzctMTAuNDQ3LTUuMjA0LTE1LjgyMi0xNC4zMjktMTYuMDljLTEzLjY2OS0wLjQ0LTIyLjkzMSw3LjI3NS0yNy43NzksMjMuMTU4YzIuNTA0LTEuMDc0LDQuOTM4LTEuNjE4LDcuMzAxLTEuNjE4YzUuMDE2LDAsNy4yMjksMi44MjIsNi42NCw4LjQ1M2MtMC4yOTcsMy40MTEtMi41MTEsOC4zNzUtNi42NCwxNC44OTljLTQuMTM2LDYuNTIzLTcuMjM2LDkuNzg2LTkuMzAxLDkuNzg2Yy0yLjY2LDAtNS4wOTQtNS4wMjMtNy4zMDctMTUuMDgxYy0wLjc0NS0yLjk1MS0yLjA3MS0xMC40OTEtMy45ODctMjIuNjE0Yy0xLjc3My0xMS4yMzYtNi40OTktMTYuNDg1LTE0LjE3NC0xNS43NDdjLTMuMjQ5LDAuMjk4LTguMTIzLDMuMjQ5LTE0LjYxNCw4Ljg2QzkuNjY5LDUzLjMxOCw0Ljg2Nyw1Ny41OTcsMCw2MS44NzVsNC42NDEsNS45OGM0LjQyLTMuMDk0LDcuMDAzLTQuNjQ3LDcuNzQxLTQuNjQ3YzMuMzg1LDAsNi41NSw1LjMxMyw5LjUwMSwxNS45MjljMi42NTMsOS43MzMsNS4zMDcsMTkuNDY4LDcuOTYxLDI5LjIwMmMzLjk3NCwxMC42MjEsOC44NDEsMTUuOTI5LDE0LjU4OCwxNS45MjljOS4yODEsMCwyMC42MjctOC43MTksMzQuMDM4LTI2LjE1NEM4Ny44OTIsODUuOTg3LDkzLjk5LDc1Ljc0LDk2LjgsNjcuMzU0YzMuNzItMi43NDgsNi4wMTgtNC4xNDYsNi44NTMtNC4xNDZjMi42NTMsMCwzLjk4NywxLjkyMiwzLjk4Nyw1Ljc1NGMwLDAuNzM4LTEuNDQzLDYuMi00LjMyNCwxNi4zODFjLTIuODgsMTAuMTgyLTQuMzk1LDE3LjcwOS00LjUzNywyMi41NzVjLTAuMTQ5LDQuNzI2LDAuOTk3LDguNTU3LDMuNDMsMTEuNTA4YzIuNDM0LDIuOTUyLDUuOTQxLDQuNDI4LDEwLjUyNCw0LjQyOGM5Ljg5LDAsMTkuNzc5LTQuMjc4LDI5LjY3NS0xMi44MzVjMC44ODEtMC43NzIsMS43MzgtMS41NTcsMi41NzMtMi4zNTJjMC43ODMsMy4zMTIsMi4xMjQsNi4wNDUsNC4wNyw4LjE1YzQuMjU5LDQuNTY5LDExLjQ1Niw2LjcwNiwyMS41OTIsNi40MDhjLTEuMzUzLTMuMjQ5LTEuODg0LTkuMDAzLTEuNTg2LTE3LjI3NGMwLjQ0LTkuMTUyLDIuODA5LTE3Ljk0MSw3LjA5NC0yNi4zNTVzOC4yNzgtMTIuNjI3LDExLjk4LTEyLjYyN2M0LjI4NSwwLDYuMjg1LDIuNzMxLDUuOTg3LDguMTkzYy0wLjE0OSwzLjY5Ni0wLjg3NCw3LjkwMy0yLjE3NSwxMi42MjhjLTEuMzA3LDQuNzI1LTIuMDMyLDkuNDQ5LTIuMTc0LDE0LjE3NGMtMC4yOTgsNy41MzQsMS4zOTIsMTIuOTE5LDUuMDgxLDE2LjE2OGM0LjExNiwzLjY4OSwxMS4zMzQsNS4zOTIsMjEuNjM4LDUuMDk0Yy0xLjU0MS0zLjM5Mi0yLjE2Mi04LjI2Ni0xLjg2NC0xNC42MjFjMC40NC05LjAwMywzLjQ4Mi0xOC4zMDQsOS4xMTMtMjcuOTAyYzUuMzMzLTkuMTUxLDkuOTIyLTEzLjczMywxMy43NzItMTMuNzMzYzMuNTYsMCw1LjI2MywyLjgwOSw1LjExMyw4LjQxNGMtMC4xNDgsMy42ODgtMS4wNzQsOC44NTQtMi43NzEsMTUuNDk0Yy0xLjY5NSw2LjY0MS0yLjYyMSwxMi4zMTYtMi43NjQsMTcuMDQxYy0wLjI5NywxMC42MjgsNC4zNSwxNS45MzYsMTMuOTU1LDE1LjkzNmM5Ljg4OSwwLDE5Ljc3OS00LjI3OCwyOS42NzUtMTIuODM1YzAuMTY0LTAuMTQ0LDAuMzE2LTAuMjkzLDAuNDc5LTAuNDM4YzAuMzQsMC41ODYsMC42ODgsMS4xNjgsMS4wNjgsMS43MzJjNS4xNjUsNy45NjcsMTMuNzM0LDExLjk1NCwyNS42OTUsMTEuOTU0YzE2LjA5LDAsMzEuOTY2LTQuNDkyLDQ3LjYxNi0xMy40ODhjMS43NTYtMC45OSwzLjQyMi0xLjk3OSw1LjAxNy0yLjk3YzAuOTg2LDEuOTkxLDIuMTM4LDMuODY2LDMuNTAyLDUuNTkxYzYuMDUyLDcuNTIxLDE0LjkxMiwxMS4yODEsMjYuNTc1LDExLjI4MWMxNC4wMjUsMCwyNS43NjctNC45MzgsMzUuMjE2LTE0LjgxNWM5LjQ0OS05Ljg3NiwxNC40NjYtMjEuNTk4LDE1LjA2MS0zNS4xNjNDNDQxLjM4Nyw2NC42ODQsNDM5LjEwMiw1Ni41MDMsNDM0LjA3OSw1MC4xNnogTTMwNS4xMTgsOTAuMDAzYy0wLjA4NC0xLjkwOS0wLjA4NC0yLjg2NywwLTIuODY3YzAuMTQzLTUuNTc5LDIuNTA1LTExLjQxNyw3LjA3NC0xNy41MTRzOS4wNjItOS4xNDYsMTMuNDg4LTkuMTQ2YzMuMzkyLDAsNS4wMSwxLjk4Nyw0Ljg2Nyw1Ljk0OGMtMC4xNDksMi45MzgtMi4zNjIsNi43NjQtNi42MzQsMTEuNDYyQzMxOC42MDYsODMuMzI0LDMxMi4zNDEsODcuMzYyLDMwNS4xMTgsOTAuMDAzeiBNNDE1LjkxOCw3My44NjhjLTAuMjk3LDcuMS0yLjQzNCwxMy45MDItNi40MiwyMC40MTNjLTQuNzI1LDcuODQ1LTEwLjQxNCwxMS43Ni0xNy4wNTUsMTEuNzZjLTIuOTU4LDAtNS4yNDktMS42MjQtNi44NjctNC44OGMtMS40NzYtMi44MDktMi4xNDItNi4wNjQtMS45OTMtOS43NjdjMC4yOTEtNy41NCwyLjUwNS0xNC42NCw2LjY0Ny0yMS4zYzQuODY2LTguMTM2LDExLjA2Ny0xMi4yMDcsMTguNjAxLTEyLjIwN2MyLjM1NiwwLDQuMTY4LDEuNjcsNS40MjQsNC45OTdTNDE2LjA2Nyw2OS44NzUsNDE1LjkxOCw3My44Njh6Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfbW9iaWxlX21lbnUganMtdG9wbmF2X21vYmlsZV9tZW51X21haW4iPgogICAgICAgIDxkaXYgY2xhc3M9InRvcG5hdl9tb2JpbGVfYmFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBkYXRhLWd0bS1jbGljaz0ibW9iaWxlX25hdl9tZW51X2Nsb3NlX2NsaWNrIiBjbGFzcz0ibWVudV9jbG9zZSBwdWxsX2xlZnQganMtdG9wbmF2X21vYmlsZV9oZWFkZXJfY2xvc2UiPgogICAgICAgICAgICAgICAgPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMTAuNDlweCIKICAgICAgICAgICAgICAgIAkgaGVpZ2h0PSIxMC40OXB4IiB2aWV3Qm94PSIwIDAgMTAuNDkgMTAuNDkiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDEwLjQ5IDEwLjQ5OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CiAgICAgICAgICAgICAgICA8ZyBpZD0iY2xvc2VfMV8iPgogICAgICAgICAgICAgICAgCTxnPgogICAgICAgICAgICAgICAgCQk8ZyBpZD0iR3JvdXBfMV8iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYuNTAwMDAwLCA2LjUwMDAwMCkiPgogICAgICAgICAgICAgICAgCQkJPHBhdGggaWQ9IlJlY3RhbmdsZS00XzFfIiBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDojRkZGRkZGOyIgZD0iTTMuNjktNi4yMUwzLjY5LTYuMjFjMC4zOSwwLjM5LDAuMzksMS4wMiwwLDEuNDFsLTguNDksOC40OQogICAgICAgICAgICAgICAgCQkJCWMtMC4zOSwwLjM5LTEuMDIsMC4zOS0xLjQxLDBsMCwwYy0wLjM5LTAuMzktMC4zOS0xLjAyLDAtMS40MWw4LjQ5LTguNDlDMi42Ny02LjYsMy4zLTYuNiwzLjY5LTYuMjF6Ii8+CiAgICAgICAgICAgICAgICAJCQk8cGF0aCBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDojRkZGRkZGOyIgZD0iTS02LjIxLTYuMjFMLTYuMjEtNi4yMWMwLjM5LTAuMzksMS4wMi0wLjM5LDEuNDEsMGw4LjQ5LDguNDljMC4zOSwwLjM5LDAuMzksMS4wMiwwLDEuNDFsMCwwCiAgICAgICAgICAgICAgICAJCQkJYy0wLjM5LDAuMzktMS4wMiwwLjM5LTEuNDEsMGwtOC40OS04LjQ5Qy02LjYtNS4xOC02LjYtNS44Mi02LjIxLTYuMjF6Ii8+CiAgICAgICAgICAgICAgICAJCTwvZz4KICAgICAgICAgICAgICAgIAk8L2c+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgPC9idXR0b24+CgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uCiAgICAgICAgICAgICAgICBkYXRhLWFjdGlvbj0ibWVudS5zZXR0aW5ncy5vcGVuIgogICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9Im1vYmlsZV9uYXZfc2V0dGluZ3NfY2xpY2siCiAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpzZXR0aW5ncyIKICAgICAgICAgICAgICAgIGNsYXNzPSJtZW51X3NldHRpbmdzIHB1bGxfcmlnaHQganMtdG9wbmF2X21vYmlsZV9oZWFkZXJfc2V0dGluZ3MiCiAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjE4Ljg2cHgiCiAgICAgICAgICAgICAgICAJIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAwIDE4Ljg2IDIwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxOC44NiAyMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgPGcgaWQ9ImdlYXJfMV8iPgogICAgICAgICAgICAgICAgCTxnPgogICAgICAgICAgICAgICAgCQk8ZyBpZD0iSWNvbl8xXyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNS4wMDAwMDAsIDUuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAJCQk8ZyBpZD0iR3JvdXAtMTBfMV8iPgogICAgICAgICAgICAgICAgCQkJPC9nPgogICAgICAgICAgICAgICAgCQk8L2c+CiAgICAgICAgICAgICAgICAJCTxwYXRoIGlkPSJDb21iaW5lZC1TaGFwZV8xXyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MjsiIGQ9Ik0xMiw0LjU4bC0wLjU3LTAuMjdWMS45OWMwLTAuNTQtMC40NS0wLjk5LTEtMC45OWgtMmMtMC41NSwwLTEsMC40NS0xLDAuOTl2Mi4zMQogICAgICAgICAgICAgICAgCQkJTDYuODYsNC41OGMtMC4yOSwwLjE0LTAuNTcsMC4zLTAuODQsMC40OEw1LjUsNS40MkwzLjQ5LDQuMjZDMy4wMiwzLjk5LDIuNDEsNC4xNiwyLjE0LDQuNjNsLTEsMS43NAogICAgICAgICAgICAgICAgCQkJQzAuODYsNi44NCwxLjAyLDcuNDYsMS40OSw3LjczTDMuNSw4Ljg5TDMuNDUsOS41MkMzLjQ0LDkuNjgsMy40Myw5Ljg0LDMuNDMsMTBzMC4wMSwwLjMyLDAuMDIsMC40OGwwLjA1LDAuNjNsLTIuMDEsMS4xNgogICAgICAgICAgICAgICAgCQkJYy0wLjQ3LDAuMjctMC42MywwLjg4LTAuMzYsMS4zNmwxLDEuNzRjMC4yNywwLjQ4LDAuODksMC42NCwxLjM2LDAuMzdsMi4wMS0xLjE2bDAuNTIsMC4zNmMwLjI3LDAuMTgsMC41NSwwLjM1LDAuODQsMC40OAogICAgICAgICAgICAgICAgCQkJbDAuNTcsMC4yN3YyLjMxYzAsMC41NCwwLjQ1LDAuOTksMSwwLjk5aDJjMC41NSwwLDEtMC40NSwxLTAuOTl2LTIuMzFMMTIsMTUuNDJjMC4yOS0wLjE0LDAuNTctMC4zLDAuODQtMC40OGwwLjUyLTAuMzYKICAgICAgICAgICAgICAgIAkJCWwyLjAxLDEuMTZjMC40NywwLjI3LDEuMDgsMC4xMSwxLjM2LTAuMzdsMS0xLjc0YzAuMjctMC40OCwwLjExLTEuMDktMC4zNi0xLjM2bC0yLjAxLTEuMTZsMC4wNS0wLjYzCiAgICAgICAgICAgICAgICAJCQljMC4wMS0wLjE2LDAuMDItMC4zMiwwLjAyLTAuNDhzLTAuMDEtMC4zMi0wLjAyLTAuNDhsLTAuMDUtMC42M2wyLjAxLTEuMTZjMC40Ny0wLjI3LDAuNjMtMC44OCwwLjM2LTEuMzZsLTEtMS43NAogICAgICAgICAgICAgICAgCQkJYy0wLjI3LTAuNDgtMC44OS0wLjY0LTEuMzYtMC4zN2wtMi4wMSwxLjE2bC0wLjUyLTAuMzZDMTIuNTcsNC44OCwxMi4yOSw0LjcyLDEyLDQuNTh6Ii8+CiAgICAgICAgICAgICAgICAJCTxjaXJjbGUgaWQ9Ik92YWxfMV8iIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjI7IiBjeD0iOS40MyIgY3k9IjEwIiByPSIyIi8+CiAgICAgICAgICAgICAgICAJPC9nPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgIDx1bCBpZD0ibWVudV9saXN0IiBjbGFzcz0ibWVudV9saXN0X2xvZ2dlZF9vdXQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWJyZWV6ZS1pZ25vcmUgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6am9pbiIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfam9pbl9jbGljayIgaWQ9ImpzLWpvaW4tbGluayIgaHJlZj0iLy92aW1lby5jb20vam9pbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJtZW51X2ljb25fam9pbiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjE2cHgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjIwcHgiIHZpZXdCb3g9IjAgMCAxNiAyMCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMTYgMjA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iam9pbi1sb2ctaW5fMV8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtOF8xXyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MjsiIGN4PSI4IiBjeT0iNSIgcj0iNCIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9IlJlY3RhbmdsZS0yNV8xXyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MjsiIGQ9Ik0xLDE5aDE0di0zYzAtMi4yMS0xLjc5LTQtNC00SDVjLTIuMjEsMC00LDEuNzktNCw0VjE5eiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpvaW4gb3IgbG9nIGluICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSAgaWQ9ImpzLWZlYXR1cmVzLWxpbmsiIGNsYXNzPSJmZWF0dXJlcy1sYWJlbCIgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im1lbnVfaWNvbl9ob3N0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAwIDIwIDIwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAyMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJmZWF0dXJlc18xXyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwLTJfMV8iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIuMDAwMDAwLCAyLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPSJSZWN0YW5nbGUtOF8xXyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MjsiIGQ9Ik0xLTFoMTBjMS4xLDAsMiwwLjksMiwydjEwYzAsMS4xLTAuOSwyLTIsMkgxYy0xLjEsMC0yLTAuOS0yLTJWMUMtMS0wLjEtMC4xLTEsMS0xeiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPSJQYXRoLTVfMV8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOiNGRkZGRkY7IiBkPSJNMy42LDMuNTFjMC0wLjU1LDAuMzktMC43NywwLjg2LTAuNWw0LjI4LDIuNWMwLjQ3LDAuMjgsMC40OCwwLjczLDAsMS4wMUw0LjQ2LDkuMDgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQzMuOTgsOS4zNiwzLjYsOS4xNSwzLjYsOC41OUwzLjYsMy41MXoiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iR3JvdXBfMV8iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMuMDAwMDAwLCAzLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD0iUGFnZS0xXzFfIiBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDojRkZGRkZGOyIgZD0iTTExLDE1YzIuMjEsMCw0LTEuNzksNC00VjBjMC0xLjExLTAuOS0yLTItMnYxM2MwLDEuMS0wLjksMi0yLDJILTJjMCwxLjEsMC44OSwyLDIsMkgxMXoiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGZWF0dXJlcyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1icmVlemUtaWdub3JlIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OmZlYXR1cmVzfGtleXdvcmQ6dmlkZW9fcGxheWVyIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9mZWF0dXJlc192aWRlb19wbGF5ZXIiIGhyZWY9Ii8vdmltZW8uY29tL2ZlYXR1cmVzL3ZpZGVvLXBsYXllciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJtZW51X2ljb25fdXBsb2FkIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDIwIDE2IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAxNjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpZGVvIHBsYXllciAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1icmVlemUtaWdub3JlIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OmZlYXR1cmVzfGtleXdvcmQ6bGl2ZV9zdHJlYW1pbmciIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2ZlYXR1cmVzX2xpdmVfc3RyZWFtaW5nIiBocmVmPSIvL3ZpbWVvLmNvbS9mZWF0dXJlcy9saXZlc3RyZWFtaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im1lbnVfaWNvbl91cGxvYWQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyMHB4IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxNnB4IiB2aWV3Qm94PSIwIDAgMjAgMTYiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDIwIDE2OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGl2ZSBzdHJlYW1pbmcgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpzdG9jayIgIiBocmVmPSIvL3ZpbWVvLmNvbS9zdG9jayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJtZW51X2ljb25fdXBsb2FkIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDIwIDE2IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAxNjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b2NrIHZpZGVvcyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1icmVlemUtaWdub3JlIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OmZlYXR1cmVzfGtleXdvcmQ6cHJpdmFjeSIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfZmVhdHVyZXNfcHJpdmFjeSIgaHJlZj0iLy92aW1lby5jb20vZmVhdHVyZXMvdmlkZW8tcHJpdmFjeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJtZW51X2ljb25fdXBsb2FkIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDIwIDE2IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAxNjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcml2YWN5ICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWJyZWV6ZS1pZ25vcmUgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6ZmVhdHVyZXN8a2V5d29yZDpkaXN0cmlidXRpb24iIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2ZlYXR1cmVzX2Rpc3RyaWJ1dGlvbiIgaHJlZj0iLy92aW1lby5jb20vZmVhdHVyZXMvdmlkZW8tbWFya2V0aW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im1lbnVfaWNvbl91cGxvYWQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyMHB4IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxNnB4IiB2aWV3Qm94PSIwIDAgMjAgMTYiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDIwIDE2OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlzdHJpYnV0aW9uICYgTWFya2V0aW5nICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWJyZWV6ZS1pZ25vcmUgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6ZmVhdHVyZXN8a2V5d29yZDpob3N0aW5nIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9mZWF0dXJlc19ob3N0aW5nIiBocmVmPSIvL3ZpbWVvLmNvbS9mZWF0dXJlcy9vbmxpbmUtdmlkZW8taG9zdGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJtZW51X2ljb25fdXBsb2FkIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDIwIDE2IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAxNjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvc3RpbmcgJiBNYW5hZ2VtZW50ICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWJyZWV6ZS1pZ25vcmUgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6aW5zcGlyYXRpb258a2V5d29yZDp3YXRjaCIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfaW5zcGlyYXRpb25fd2F0Y2giIGlkPSJqcy1pbnNwaXJhdGlvbi1saW5rIiAgaHJlZj0iLy92aW1lby5jb20vd2F0Y2giPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ibWVudV9pY29uX3dhdGNoIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTRweCIgdmlld0JveD0iMCAwIDIwIDE0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAxNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJpbnNwaXJhdGlvbl8xXyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwXzFfIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzLjAwMDAwMCwgNi4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD0iT3ZhbF8xXyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MjtzdHJva2UtbGluZWpvaW46cm91bmQ7IiBkPSJNNyw3YzMuMzEsMCw2LjMxLTIsOS02Yy0yLjY5LTQtNS42OS02LTktNlMwLjY5LTMtMiwxQzAuNjksNSwzLjY5LDcsNyw3eiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMl8xXyIgc3R5bGU9ImZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I0ZGRkZGRjsiIGN4PSI3IiBjeT0iMSIgcj0iMyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3BpcmF0aW9uICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWJyZWV6ZS1pZ25vcmUgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxrZXl3b3JkOnVwbG9hZCIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfdXBsb2FkX2NsaWNrIiBpZD0ianMtdXBsb2FkLWxpbmsiIGhyZWY9Ii8vdmltZW8uY29tL3VwbG9hZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJtZW51X2ljb25fdXBsb2FkIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDIwIDE2IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAxNjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJ1cGxvYWRfMV8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxLjAwMDAwMCwgMS4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPSJDb21iaW5lZC1TaGFwZV8xXyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MjsiIGQ9Ik0wLDEwYzAsMi4xNywxLjk2LDQsNCw0aDEwYzIuMDQsMCw0LTEuNzYsNC0zLjk0YzAtMS43OS0wLjgtMy4yOC0xLjk5LTQuMDcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDMTYuMDEsMS43OSwxMy40OSwwLDExLDBDOS4wOCwwLDcuMjQsMS4xOSw2LjU5LDNDMy44MiwzLjAxLDIuNTcsNC43MSwyLjA3LDYuNTJDMS4wOCw3LjAyLDAsOC4yNiwwLDEweiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9IlJlY3RhbmdsZV8xXyIgeD0iOCIgeT0iOCIgc3R5bGU9ImZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I0ZGRkZGRjsiIHdpZHRoPSIyIiBoZWlnaHQ9IjYiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwb2x5bGluZSBpZD0iUGF0aC0xM18xXyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MjsiIHBvaW50cz0iNiwxMCA5LDcgMTIsMTAgICAgICAgIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXBsb2FkICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWFjdGlvbj0ibWVudS5jbG9zZSIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6dXBncmFkZSIgZGF0YS1ndG0tY2xpY2s9Im1vYmlsZV9uYXZfdXBncmFkZV9jbGljayIgaWQ9ICJqcy11cGdyYWRlLWxpbmsiIGNsYXNzPSIiIGhyZWY9Ii8vdmltZW8uY29tL3VwZ3JhZGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ibWVudV9pY29uX3VwZ3JhZGUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMyIDMyIiB3aWR0aD0iMzJweCIgaGVpZ2h0PSIzMnB4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNCw3SDE1VjloNi41OEw3LjI5LDIzLjI5bDEuNDEsMS40MUwyMywxMC40MVYxN2gyVjhBMSwxLDAsMCwwLDI0LDdaIiBmaWxsPSIjZmZmZmZmIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVcGdyYWRlICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICA8L2Rpdj4KCiAgICAgICAgPHNlY3Rpb24gY2xhc3M9InRvcG5hdl9tb2JpbGVfbWVudSB0b3BuYXZfbW9iaWxlX21lbnVfc2V0dGluZ3MganMtdG9wbmF2X21vYmlsZV9tZW51X3NldHRpbmdzIj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfbW9iaWxlX2JhciBzdWJtZW51Ij4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idG9wbmF2X21vYmlsZV9idXR0b24gdG9wbmF2X21vYmlsZV9wdWxsX2xlZnQganMtdG9wbmF2X21vYmlsZV9oZWFkZXJfc2V0dGluc19jbG9zZSB0b3BuYXZfaWNvbl9tb2JpbGVfYXJyb3dsZWZ0X2IiPiA8L2J1dHRvbj4KICAgICAgICAgICAgPGgxIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX2hlYWRlcl90aXRsZSBzdWJtZW51Ij5Nb3JlIHN0dWZmPC9oMT4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPHVsIGNsYXNzPSJtZW51X2xpc3Rfc2V0dGluZ3NfbG9nZ2VkX291dCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSIgIiBocmVmPSIvL3ZpbWVvLmNvbS90ZXJtcyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXJtcyBvZiBTZXJ2aWNlICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSIgIiBocmVmPSIvL3ZpbWVvLmNvbS9wcml2YWN5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaXZhY3kgUG9saWN5ICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSIgIiBocmVmPSIvL3ZpbWVvLmNvbS9kbWNhIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBjbGFzcz0iICIgaHJlZj0iLy92aW1lby5jb20vY29va2llX3BvbGljeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb29raWVzICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1hY3Rpb249ImRlc2t0b3AiIG9uY2xpY2s9InZpbWVvLm1vYmlsZS5kZXNrdG9wX3NoYXJlZC5fczJkcygpOyByZXR1cm4gZmFsc2UiIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNrdG9wIHNpdGUgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBsYW5ndWFnZSBocmVmPSIjIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBvbmNoYW5nZT0idmltZW8ubW9iaWxlLmRlc2t0b3Bfc2hhcmVkLl9zMmwodGhpcykiIHRpdGxlPSJDaG9vc2UgYSBkaWZmZXJlbnQgbGFuZ3VhZ2UiIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX21lbnVfc2V0dGluZ3NfbGFuZ3VhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBjbGFzcz0ic2VsZWN0ZWQiIHNlbGVjdGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9ImVuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPSJzZWxlY3RfbGFuZ3VhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmdsaXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSJlcyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXNwYcOxb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9ImRlLURFIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPSJzZWxlY3RfbGFuZ3VhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXV0c2NoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSJmci1GUiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbsOnYWlzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSJqYS1KUCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg5pel5pys6KqeICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSJwdC1CUiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9ydHVndcOqcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT0ia28tS1IiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9InNlbGVjdF9sYW5ndWFnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIO2VnOq1reyWtCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWFjdGlvbj0ibWVudS5jbG9zZSIgY2xhc3M9IiAiIGhyZWY9Ii8vdmltZW8uY29tL2ZhcSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQVEgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWFjdGlvbj0ibWVudS5jbG9zZSIgY2xhc3M9IiAiIGhyZWY9Ii8vdmltZW8uY29taGVscC52aW1lby5jb20vaGMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgSGVscCAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CgoKICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfbW9iaWxlX21lbnVfY29weXJpZ2h0Ij5UTSArIMKpIDIwMjAgVmltZW8sIEluYy48L2Rpdj4KICAgIDwvc2VjdGlvbj4KCgogICAgICAgIDwvbmF2PgoKPHNjcmlwdD4KKGZ1bmN0aW9uKHdpbmRvdywgZG9jdW1lbnQpewoKICAgIC8vIEdsb2JhbCB2YWx1ZXMKICAgIHdpbmRvdy52aW1lbyA9IHdpbmRvdy52aW1lbyB8fCB7fTsKICAgIHZpbWVvLm1vYmlsZSA9IHZpbWVvLm1vYmlsZSB8fCB7fTsKICAgIFZpbWVvID0gdmltZW8ubW9iaWxlIHx8IHt9OwogICAgVmltZW8uZGVza3RvcF9zaGFyZWQgPSBWaW1lby5kZXNrdG9wX3NoYXJlZCB8fCB7fTsKCiAgICAvLyBERVNLVE9QIEhBTkRMRVJTCgogICAgdmFyIGRlc2t0b3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9wbmF2X2Rlc2t0b3AnKTsKCiAgICAvLyBQcmV2ZW50IHRvdWNoIGRldmljZSB0byBoaWd0bGlnaHQgdGhlIGFyZWEgdGFwcGVkCiAgICBkZXNrdG9wLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBmdW5jdGlvbihlKXsKICAgICAgICAvLyBUYWtlIGludG8gY29uc2lkZXJhdGlvbiBhdmF0YXIgaW1nCiAgICAgICAgdmFyIHRhcmdldCA9IChlLnRhcmdldC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpbWcnKSA/IGUudGFyZ2V0LnBhcmVudE5vZGUgOiBlLnRhcmdldDsKCiAgICAgICAgaWYgKHRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ3RvcG5hdl9oYXNfZHJvcGRvd24nKSkgewogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgfQogICAgfSwgZmFsc2UpOwoKICAgIC8vIEFkZCBsYXN0X3BhZ2UgY29va2llCiAgICB2YXIgbGlzdGVuID0gJ29udG91Y2hzdGFydCcgaW4gd2luZG93ID8gJ3RvdWNoc3RhcnQnIDogd2luZG93LlBvaW50ZXJFdmVudCA/ICdwb2ludGVyZG93bicgOiB3aW5kb3cuTVNQb2ludGVyRXZlbnQgPyAnTVNQb2ludGVyRG93bicgOiAnY2xpY2snOwogICAgZGVza3RvcC5hZGRFdmVudExpc3RlbmVyKGxpc3RlbiwgZnVuY3Rpb24oZSl7CiAgICAgICAgaWYgKGUudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygnanMtdG9wbmF2X21lbnVfYXV0aCcpKSB7CiAgICAgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9ICdsYXN0X3BhZ2U9JyArIGVuY29kZVVSSUNvbXBvbmVudCh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpICsgJztwYXRoPVwnL1wnO21heC1hZ2U9MTgwMDsnOwogICAgICAgIH0KICAgIH0sIGZhbHNlKTsKCiAgICAvLyBNT0JJTEUgSEFORExFUlMKCiAgICAvLyBUcmlnZ2VyIGlPUyBVcGxvYWQgZmxvdwogICAgVmltZW8uZGVza3RvcF9zaGFyZWQuX3VwbG9hZCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAvLyBzaG93IGlUdW5lcyBvbmx5IGlmIHdlIGFyZSBpbiBpT1Mgd29ybGQKICAgICAgICBpZiAoL2lQYWR8aVBob25lfGlQb2QvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpewogICAgICAgICAgICB2YXIgZGVlcGxpbmsgPSAndmltZW86Ly9hcHAudmltZW8uY29tL3VwbG9hZD9yZWY9bW9iaWxld2ViJywKICAgICAgICAgICAgICAgIGZhbGxiYWNrID0gJy91cGxvYWQnLAogICAgICAgICAgICAgICAgd2Via2l0SGlkZGVuQ2FsbGJhY2ssCiAgICAgICAgICAgICAgICBoaXRDYWxsYmFjazsKCiAgICAgICAgICAgIC8vIENhbGxiYWNrcwogICAgICAgICAgICB3ZWJraXRIaWRkZW5DYWxsYmFjayA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgLy8gSWYgdGhlIHVzZXIgaXMgc3RpbGwgaGVyZSBvcGVuIHRoZSB1cmwgcGFnZS4KICAgICAgICAgICAgICAgIGlmICghZG9jdW1lbnQud2Via2l0SGlkZGVuKSB7CiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gZmFsbGJhY2s7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CgogICAgICAgICAgICAvLyBUcnkgdG8gb3BlbiB0aGUgVmltZW8gQXBwCiAgICAgICAgICAgIGhpdENhbGxiYWNrID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSBkZWVwbGluazsKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQod2Via2l0SGlkZGVuQ2FsbGJhY2ssIDI1KTsKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIGhpdENhbGxiYWNrKCk7CgogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICB3aW5kb3cubG9jYXRpb24gPSBlLmhyZWY7CgogICAgfQoKCi8vIEFGVEVSIE1PQklMRSBOQVYgVEVTVCBSRUNPTkNJTEUgV0lUSCBUSEUgYG1vYmlsZV9tZW51X3NjcmlwdC5waHRtbGAKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgLy8gU3dpdGNoIHRvIGRlc2t0b3Agc2l0ZQogICAgVmltZW8uZGVza3RvcF9zaGFyZWQuX3MyZHMgPSBmdW5jdGlvbigpIHsKICAgICAgICBkb2N1bWVudC5jb29raWU9J29wdF9vdXRfbW9iaWxlPTE7ZXhwaXJlcz1GcmksIDMxIERlYyA5OTk5IDIzOjU5OjU5IEdNVDtkb21haW49JyArIHZpbWVvLmRvbWFpbjsKICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7CiAgICB9OwoKICAgIC8vIFN3aXRjaCB0byBsYW5ndWFnZQogICAgVmltZW8uZGVza3RvcF9zaGFyZWQuX3MybCA9IGZ1bmN0aW9uKHNlbCkgewogICAgICAgIHZhciBsYW5nID0gc2VsLnZhbHVlLAogICAgICAgICAgICB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgeGhyLm9wZW4oJ1BPU1QnLCAnL3NldHRpbmdzL2xvY2FsZScpOwogICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdYLVJlcXVlc3RlZC1XaXRoJywgJ1hNTEh0dHBSZXF1ZXN0Jyk7CiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtdHlwZScsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKTsKICAgICAgICB4aHIuc2VuZCgnbG9jYWxlPScgKyBsYW5nICsgJyZ0b2tlbj0nICsgdmltZW8ueHNyZnQpOwogICAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiBwb3N0KCkgewogICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA9PT0gMjAwKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgfTsKCiAgICB2YXIgbW9iaWxlTWVudUVsZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5qcy10b3BuYXZfbW9iaWxlX2hlYWRlcl9sb2dvJyk7CiAgICBpZiAobW9iaWxlTWVudUVsZSkgewogICAgICAgIG1vYmlsZU1lbnVFbGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKSB7CgogICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIC8vIE9wZW4gTWVudQogICAgICAgICAgICB2YXIgbW9iaWxlX21lbnVfbWFpbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5qcy10b3BuYXZfbW9iaWxlX21lbnVfbWFpbicpOwogICAgICAgICAgICBtb2JpbGVfbWVudV9tYWluLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwoKICAgICAgICAgICAgLy8gQ2xvc2UgTWVudQogICAgICAgICAgICB2YXIgbW9iaWxlX2hlYWRlcl9jbG9zZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5qcy10b3BuYXZfbW9iaWxlX2hlYWRlcl9jbG9zZScpOwogICAgICAgICAgICBtb2JpbGVfaGVhZGVyX2Nsb3NlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgIG1vYmlsZV9tZW51X21haW4uc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAvLyBUb2dnbGUgU2V0dGluZ3MKICAgICAgICAgICAgdmFyIG1vYmlsZV9tZW51X3NldHRpbmdzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLXRvcG5hdl9tb2JpbGVfbWVudV9zZXR0aW5ncycpOwogICAgICAgICAgICB2YXIgdG9wbmF2MjAxNV9tb2JpbGVfaGVhZGVyX3NldHRpbmdzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLXRvcG5hdl9tb2JpbGVfaGVhZGVyX3NldHRpbmdzJyk7CiAgICAgICAgICAgIHRvcG5hdjIwMTVfbW9iaWxlX2hlYWRlcl9zZXR0aW5ncy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICBtb2JpbGVfbWVudV9zZXR0aW5ncy5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgICAgICAgICAgICAgIG1vYmlsZV9tZW51X21haW4uc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgICAgICAgIHZhciB0b3BuYXYyMDE1X21vYmlsZV9oZWFkZXJfc2V0dGluZ3NfY2xvc2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuanMtdG9wbmF2X21vYmlsZV9oZWFkZXJfc2V0dGluc19jbG9zZScpOwogICAgICAgICAgICAgICAgdG9wbmF2MjAxNV9tb2JpbGVfaGVhZGVyX3NldHRpbmdzX2Nsb3NlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgIG1vYmlsZV9tZW51X3NldHRpbmdzLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgICAgICAgICAgbW9iaWxlX21lbnVfbWFpbi5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9KTsKCiAgICAgICAgfSwgZmFsc2UpOwogICAgfTsKCiAgICB2YXIgbW9iaWxlQWxidW1zRWxlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLXRvcG5hdl9tb2JpbGVfaGVhZGVyX2FsYnVtcycpOwogICAgaWYgKG1vYmlsZUFsYnVtc0VsZSkgewogICAgICAgIG1vYmlsZUFsYnVtc0VsZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICB2YXIgbW9iaWxlX21lbnVfYWxidW1zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLXRvcG5hdl9tb2JpbGVfYWxidW1fbGlzdCcpOwogICAgICAgICAgICBtb2JpbGVfbWVudV9hbGJ1bXMuY2xhc3NMaXN0LmFkZCgnb3BlbicpOwoKICAgICAgICAgICAgLy8gQ2xvc2UKICAgICAgICAgICAgdmFyIG1vYmlsZV9hbGJ1bXNfY2xvc2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuanMtdG9wbmF2X21vYmlsZV9hbGJ1bV9saXN0X2Nsb3NlJyk7CiAgICAgICAgICAgIGlmIChtb2JpbGVfYWxidW1zX2Nsb3NlKSB7CiAgICAgICAgICAgICAgICBtb2JpbGVfYWxidW1zX2Nsb3NlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgIG1vYmlsZV9tZW51X2FsYnVtcy5jbGFzc0xpc3QucmVtb3ZlKCdvcGVuJyk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgIH0sIGZhbHNlKTsKICAgIH07CgoKCi8vIF5eXl5eXl5eXl5eXl5eXl5eXl5eCi8vIEFGVEVSIE1PQklMRSBOQVYgVEVTVCBSRUNPTkNJTEUgV0lUSCBUSEUgYG1vYmlsZV9tZW51X3NjcmlwdC5waHRtbGAKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKICAgIC8vIFVTRVIgTUVTU0FHRQoKICAgIC8vIFNob3cgbm90aWZpY2F0aW9uIGlmIGl0IGlzIHRoZSBjYXNlCiAgICAvLyBXZSB3cmFwIHRoaXMgaW4gYSBzZXRUaW1lb3V0IHNpbmNlIHRoZSBub3RpZmljYXRpb25zIHNob3VsZAogICAgLy8gaGF2ZSBhIGxvd2VyIHByaW9yaXR5IGluIHRlcm1zIG9mIHZpc3VhbCBjb21wYXJlZCB0byBvdGhlcgogICAgLy8gaXRlbXMgb24gdGhlIHBhZ2UuCiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgIC8vIERPTSBFbGVtZW50cwogICAgICAgIHZhciBhdmF0YXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9wbmF2X21lbnVfYXZhdGFyJyk7CiAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gYXZhdGFyIHRoZW4gc3RvcCBpdAogICAgICAgIGlmICghYXZhdGFyKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHZhciBidWJibGUgPSBhdmF0YXIucXVlcnlTZWxlY3RvcignLnRvcG5hdl9tZW51X2F2YXRhcl9idWJibGUnKTsKICAgICAgICB2YXIgZHJvcGRvd24gPSBhdmF0YXIucXVlcnlTZWxlY3RvcignI3RvcG5hdl91c2VyX2Ryb3Bkb3duJyk7CiAgICAgICAgLy92YXIgbWVzc2FnZSA9IGF2YXRhci5xdWVyeVNlbGVjdG9yKCcudG9wbmF2X3VzZXJfbWVudV9tZXNzYWdlJyk7CiAgICAgICAgLy92YXIgY2xvc2UgPSBhdmF0YXIucXVlcnlTZWxlY3RvcignLnRvcG5hdl91c2VyX21lbnVfbWVzc2FnZV9jbG9zZScpOwogICAgICAgIHZhciBvbl9ob3ZlciA9IGZhbHNlOwoKICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBidWJibGUgdGhlbiBzdG9wIGl0CiAgICAgICAgaWYgKGJ1YmJsZSkgewogICAgICAgICAgICBidWJibGUuY2xhc3NMaXN0LmFkZCgnb24nKTsKICAgICAgICB9CgogICAgICAgIC8vIEFuZCB3ZSBhdHRhY2ggaGlkZSB0aGUgYnViYmxlCiAgICAgICAgYXZhdGFyLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAob25faG92ZXIpIHJldHVybjsKCiAgICAgICAgICAgIG9uX2hvdmVyID0gdHJ1ZTsKCiAgICAgICAgICAgIGlmIChidWJibGUpIHsKICAgICAgICAgICAgICAgIGJ1YmJsZS5jbGFzc0xpc3QucmVtb3ZlKCdvbicpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBTYXZlIHJlbW92ZWQgc3RhdGUgWzEgbWVhbnMgdGhlIHVzZXIgb3BlbiB0aGUgZHJvcGRvd25dCiAgICAgICAgICAgIHN0b3JlX3VzZXJfbWVzc2FnZV9zZXR0aW5ncygxKTsKCiAgICAgICAgfSwgZmFsc2UpOwoKICAgICAgICAvLyBTdG9yZSBzdGF0dXMgb2YgdXNlciBuYXYgbWVzc2FnZSAoYnViYmxlIGNsb3NlZCBbMV0sIG1lc3NhZ2UgaGlkZGVuIFsyXSkKICAgICAgICBmdW5jdGlvbiBzdG9yZV91c2VyX21lc3NhZ2Vfc2V0dGluZ3ModmFsdWUpIHsKICAgICAgICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwoKICAgICAgICAgICAgeGhyLm9wZW4oJ1BPU1QnLCAnL3NldHRpbmdzL25hdicpOwogICAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcignWC1SZXF1ZXN0ZWQtV2l0aCcsICdYTUxIdHRwUmVxdWVzdCcpOwogICAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcignQ29udGVudC10eXBlJywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpOwogICAgICAgICAgICB4aHIuc2VuZCgnbWVzc2FnZV9zdGF0ZT0nICsgdmFsdWUgKyAnJnRva2VuPScgKyB2aW1lby54c3JmdCk7CgogICAgICAgICAgICAvLyBOb3RoaW5nIHRvIGhhbmRsZS4gV2UgaG9wZSBmb3IgdGhlIGJlc3QgaW4gdGhpcyBjYXNlCiAgICAgICAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7fTsKICAgICAgICB9OwoKICAgIH0sIDEwMDApOwp9KSh3aW5kb3csIGRvY3VtZW50KTsKPC9zY3JpcHQ+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0id3JhcF9jb250ZW50IHZhcmlhbnQtdjIiPgogICAgICAgICAgICAgICAgCgoKCjxkaXYgY2xhc3M9ImV4Y2VwdGlvbl9jb250YWluZXIiPgogICAgPGRpdiBjbGFzcz0iZXhjZXB0aW9uX3NlY3Rpb24gZXhjZXB0aW9uX3NlY3Rpb24tLWluZm8iPgogICAgICAgIDxoMSBjbGFzcz0iZXhjZXB0aW9uX3RpdGxlIGlyaXNfaGVhZGVyIj5Tb3JyeSwgd2UgY291bGRu4oCZdCBmaW5kIHRoYXQgcGFnZTwvaDE+CgogICAgICAgIDxkaXYgY2xhc3M9ImV4Y2VwdGlvbl9jb250ZW50Ij4KICAgICAgICAgICAgPHAgY2xhc3M9ImV4Y2VwdGlvbl9tZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImV4Y2VwdGlvbl9ub3RpZmljYXRpb24gaXJpc19ub3RpZmljYXRpb24gaXJpc19ub3RpZmljYXRpb24tLXVwc2VsbCI+CiAgICAgPGRpdiBjbGFzcz0iaXJpc19ub3RpZmljYXRpb24tLXVwc2VsbC1pY29uIj4KICAgICAgICAgPHNwYW4gY2xhc3M9ImlyaXNfaWMgaXMtLTE2Ij48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE2IDE2Ij48cGF0aCBkPSJNOCAxNmM0LjQxOCAwIDgtMy41ODIgOC04cy0zLjU4Mi04LTgtOC04IDMuNTgyLTggOCAzLjU4MiA4IDggOHpNNyA0aDJ2Mkg3VjR6bTAgM2gydjVIN1Y3eiIvPjwvc3ZnPjwvc3Bhbj4KICAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJpcmlzX25vdGlmaWNhdGlvbi1oZWFkZXIiPgogICAgICAgIDxzdHJvbmc+UmVhc29ucyB5b3UgbWlnaHQgYmUgc2VlaW5nIHRoaXMgcGFnZTwvc3Ryb25nPgogICAgPC9kaXY+CgogICAgPHVsIGNsYXNzPSJpcmlzX25vdGlmaWNhdGlvbi1saXN0Ij4KICAgICAgICAgICAgICAgICAgICA8bGk+SXQgZXhpc3RzLCBidXQgeW91IGRvbuKAmXQgaGF2ZSBwZXJtaXNzaW9uIHRvIHNlZSBpdCwgb3IgeW91IG5lZWQgdG8gPGEgb25jbGljaz0idmltZW8uU2Vzc2lvbi5jcmVhdGUoKSI+bG9nIGluPC9hPi48L2xpPgogICAgICAgICAgICAgICAgPGxpPk5vdGhpbmcgaGFzIGV2ZXIgZXhpc3RlZCBoZXJlLiBTcG9va3kuPC9saT4KICAgICAgICA8bGk+U29tZXRoaW5nIG9uY2UgbGl2ZWQgaGVyZSwgYnV0IGhhcyBiZWVuIGRlbGV0ZWQuPC9saT4KICAgIDwvdWw+CjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGNsYXNzPSJleGNlcHRpb25fc2VhcmNoIiBhY3Rpb249Ii9zZWFyY2giIG1ldGhvZD0iZ2V0Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJleGNlcHRpb25fc2VhcmNoLWlucHV0LXdyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9ImV4Y2VwdGlvbl9zZWFyY2gtaW5wdXQgaXJpc19pbnB1dCBpcmlzX2lucHV0LS1zZWFyY2gganMtc2VhcmNoX2F1dG9jb21wbGV0ZSIgdHlwZT0idGV4dCIgbmFtZT0icSIgcGxhY2Vob2xkZXI9IlNlYXJjaCB2aWRlb3MsIHBlb3BsZSwgYW5kIG1vcmUiIGF1dG9jb21wbGV0ZT0ib2ZmIiAvPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImV4Y2VwdGlvbl9zZWFyY2gtYnV0dG9uIGlyaXNfYnRuIGlyaXNfYnRuLS1wcmltYXJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImlyaXNfYnRuLWNvbnRlbnQiPlNlYXJjaDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImV4Y2VwdGlvbl9hdXhpbGlhcnkiPjwvZGl2Pgo8L2Rpdj4KCiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCjxmb290ZXIgY2xhc3M9ImZvb3Rlcl92MiBmb290ZXJfdjItLXJlc3BvbnNpdmUiPgogICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJmb290ZXJfdjJfX3NpdGVtYXAiPgogICAgPGRpdiBjbGFzcz0iZm9vdGVyX3YyX19saW5rcyI+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImZvb3Rlcl92Ml9fbGluayBmb290ZXJfdjJfYWNjb3JkaW9uIj4KICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19jaGVjayIgdHlwZT0iY2hlY2tib3giPgogICAgICAgICAgICA8aDQgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXIiPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXItdGV4dCI+VklNRU88L3NwYW4+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19yZXZlYWwiPgogICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9ImlyaXNfaWMgaXMtLTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA4IDgiPjxwYXRoIGQ9Ik03LjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMEw0IDQuNTg2IDEuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwLS4zOS4zOS0uMzkgMS4wMjQgMCAxLjQxNGwzIDNjLjM5LjM5IDEuMDI0LjM5IDEuNDE0IDBsMy0zYy4zOS0uMzkuMzktMS4wMjQgMC0xLjQxNHoiLz48L3N2Zz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2g0PgogICAgICAgICAgICA8dWwgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1saXN0IGZvb3Rlcl92Ml9hY2NvcmRpb25fX21lbnUiPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL3VwZ3JhZGUiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19wcmljaW5nIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnZpbWVvfGtleXdvcmQ6cHJpY2luZyIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFByaWNpbmcgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvdXBsb2FkIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdXBsb2FkX2NsaWNrIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnZpbWVvfGtleXdvcmQ6dXBsb2FkIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgVXBsb2FkICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2NoYW5uZWxzL3N0YWZmcGlja3MiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19zdGFmZl9waWNrcyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDp2aW1lb3xrZXl3b3JkOnN0YWZmX3BpY2tzIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgU3RhZmYgUGlja3MgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvb25kZW1hbmQiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19vbl9kZW1hbmRfY2xpY2siCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6dmltZW98a2V5d29yZDpvbl9kZW1hbmQiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBPbiBEZW1hbmQgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL3ZpbWVvLmNvbS9vdHQiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua192aW1lb19vdHQiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6dmltZW98a2V5d29yZDpvdHQiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBWaW1lbyBPVFQgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvc2l0ZV9tYXAiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19zaXRlX21hcF9jbGljayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDp2aW1lb3xrZXl3b3JkOnNpdGVfbWFwIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgU2l0ZSBtYXAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9zZWN0aW9uPgoKICAgICAgICA8c2VjdGlvbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rIGZvb3Rlcl92Ml9hY2NvcmRpb24iPgogICAgICAgICAgICA8aW5wdXQgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX2NoZWNrIiB0eXBlPSJjaGVja2JveCI+CiAgICAgICAgICAgIDxoNCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlciI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlci10ZXh0Ij5TT0xVVElPTlM8L3NwYW4+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19yZXZlYWwiPgogICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9ImlyaXNfaWMgaXMtLTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA4IDgiPjxwYXRoIGQ9Ik03LjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMEw0IDQuNTg2IDEuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwLS4zOS4zOS0uMzkgMS4wMjQgMCAxLjQxNGwzIDNjLjM5LjM5IDEuMDI0LjM5IDEuNDE0IDBsMy0zYy4zOS0uMzkuMzktMS4wMjQgMC0xLjQxNHoiLz48L3N2Zz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2g0PgogICAgICAgICAgICA8dWwgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1saXN0IGZvb3Rlcl92Ml9hY2NvcmRpb25fX21lbnUiPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2ZlYXR1cmVzL3ZpZGVvLXBsYXllciIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3ZpZGVvX3BsYXllciIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpmZWF0dXJlc3xrZXl3b3JkOnZpZGVvX3BsYXllciIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFZpZGVvIFBsYXllciAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9jcmVhdGUiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19jcmVhdGlvbiIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpzb2x1dGlvbnN8a2V5d29yZDpjcmVhdGUiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGUgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvZmVhdHVyZXMvdmlkZW8tcHJpdmFjeSIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3ByaXZhY3kiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6ZmVhdHVyZXN8a2V5d29yZDpwcml2YWN5IgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgUHJpdmFjeSAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9mZWF0dXJlcy92aWRlby1jb2xsYWJvcmF0aW9uIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfY29sbGFib3JhdGlvbiIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpmZWF0dXJlc3xrZXl3b3JkOmNvbGxhYm9yYXRpb24iCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBDb2xsYWJvcmF0aW9uICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2ZlYXR1cmVzL3ZpZGVvLW1hcmtldGluZyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX2Rpc3RyaWJ1dGlvbiIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpmZWF0dXJlc3xrZXl3b3JkOmRpc3RyaWJ1dGlvbiIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIERpc3RyaWJ1dGlvbiAmIG1hcmtldGluZyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9mZWF0dXJlcy92aWRlby1tb25ldGl6YXRpb24iCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19tb25ldGl6YXRpb24iCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6ZmVhdHVyZXN8a2V5d29yZDptb25ldGl6YXRpb24iCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBNb25ldGl6YXRpb24gICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvbGl2ZSIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX2xpdmVfc3RyZWFtaW5nIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OmZlYXR1cmVzfGtleXdvcmQ6bGl2ZV9zdHJlYW1pbmciCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBMaXZlIHN0cmVhbWluZyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9mZWF0dXJlcy92aWRlby1hbmFseXRpY3MiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19hbmFseXRpY3MiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6ZmVhdHVyZXN8a2V5d29yZDphbmFseXRpY3MiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBBbmFseXRpY3MgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvZmVhdHVyZXMvb25saW5lLXZpZGVvLWhvc3RpbmciCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19ob3N0aW5nIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OmZlYXR1cmVzfGtleXdvcmQ6aG9zdGluZyIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIEhvc3RpbmcgJiBtYW5hZ2VtZW50ICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2VudGVycHJpc2UiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19lbnRlcnByaXNlIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOmVudGVycHJpc2UiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBFbnRlcnByaXNlICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2Zvci1oaXJlIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfZm9yX2hpcmUiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6c29sdXRpb25zfGtleXdvcmQ6Zm9yX2hpcmUiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBGb3IgSGlyZSAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9zdG9jayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3N0b2NrIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOnN0b2NrIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgU3RvY2sgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9zZWN0aW9uPgoKICAgICAgICA8c2VjdGlvbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rIGZvb3Rlcl92Ml9hY2NvcmRpb24iPgogICAgICAgICAgICA8aW5wdXQgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX2NoZWNrIiB0eXBlPSJjaGVja2JveCI+CiAgICAgICAgICAgIDxoNCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlciI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlci10ZXh0Ij5BUFBTPC9zcGFuPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fcmV2ZWFsIj4KICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJpcmlzX2ljIGlzLS0xMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgOCA4Ij48cGF0aCBkPSJNNy43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDBMNCA0LjU4NiAxLjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMC0uMzkuMzktLjM5IDEuMDI0IDAgMS40MTRsMyAzYy4zOS4zOSAxLjAyNC4zOSAxLjQxNCAwbDMtM2MuMzktLjM5LjM5LTEuMDI0IDAtMS40MTR6Ii8+PC9zdmc+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9oND4KICAgICAgICAgICAgPHVsIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstbGlzdCBmb290ZXJfdjJfYWNjb3JkaW9uX19tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9hcHBzLmFwcGxlLmNvbS9hcHAvYXBwbGUtc3RvcmUvaWQxMzU2Njg2NzYzP3B0PTQxNzczMSZhbXA7Y3Q9bG9ocCZhbXA7bXQ9OCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6YXBwc3xrZXl3b3JkOm1hY29zIgogICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaW1lbyBmb3IgbWFjT1MgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9pdHVuZXMuYXBwbGUuY29tL2FwcC92aW1lby9pZDQyNTE5NDc1OT9tdD04IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDphcHBzfGtleXdvcmQ6aW9zIgogICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaW1lbyBmb3IgaU9TICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vcGxheS5nb29nbGUuY29tL3N0b3JlL2FwcHMvZGV0YWlscz9pZD1jb20udmltZW8uYW5kcm9pZC52aWRlb2FwcCZhbXA7cmVmZXJyZXI9dXRtX3NvdXJjZSUzRGZvb3RlciUyNnV0bV9tZWRpdW0lM0Rsb2hwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDphcHBzfGtleXdvcmQ6YW5kcm9pZCIKICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmltZW8gZm9yIEFuZHJvaWQgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9hcHBzLmFwcGxlLmNvbS91cy9hcHAvdmltZW8tY3JlYXRlL2lkMTQ5MTc5MTUxMyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6YXBwc3xrZXl3b3JkOmNyZWF0ZV9pb3MiCiAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpbWVvIENyZWF0ZSBmb3IgaU9TICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vcGxheS5nb29nbGUuY29tL3N0b3JlL2FwcHMvZGV0YWlscz9pZD1jb20udmltZW9jcmVhdGUudmlkZW9lZGl0b3IubW92aWVtYWtlciZhbXA7cmVmZXJyZXI9dXRtX3NvdXJjZSUzRGZvb3RlciUyNnV0bV9tZWRpdW0lM0Rsb2hwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDphcHBzfGtleXdvcmQ6Y3JlYXRlX2FuZHJvaWQiCiAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpbWVvIENyZWF0ZSBmb3IgQW5kcm9pZCAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL21hZ2lzdG8uY29tIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDphcHBzfGtleXdvcmQ6bWFnaXN0byIKICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFnaXN0byAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICA8L3NlY3Rpb24+CgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJmb290ZXJfdjJfX2xpbmsgZm9vdGVyX3YyX2FjY29yZGlvbiI+CiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fY2hlY2siIHR5cGU9ImNoZWNrYm94Ij4KICAgICAgICAgICAgPGg0IGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyLXRleHQiPlJFU09VUkNFUzwvc3Bhbj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX3JldmVhbCI+CiAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0iaXJpc19pYyBpcy0tMTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDggOCI+PHBhdGggZD0iTTcuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwTDQgNC41ODYgMS43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDAtLjM5LjM5LS4zOSAxLjAyNCAwIDEuNDE0bDMgM2MuMzkuMzkgMS4wMjQuMzkgMS40MTQgMGwzLTNjLjM5LS4zOS4zOS0xLjAyNCAwLTEuNDE0eiIvPjwvc3ZnPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvaDQ+CiAgICAgICAgICAgIDx1bCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWxpc3QgZm9vdGVyX3YyX2FjY29yZGlvbl9fbWVudSI+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2hlbHAiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19oZWxwX2NlbnRlcl9jbGljayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpyZXNvdXJjZXN8a2V5d29yZDpoZWxwX2NlbnRlciIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIEhlbHAgQ2VudGVyICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2Jsb2ciCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua192aW1lb19ibG9nX2NsaWNrIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnJlc291cmNlc3xrZXl3b3JkOnZpbWVvX2Jsb2ciCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBCbG9nICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2Jsb2cvY2F0ZWdvcnkvdmlkZW8tc2Nob29sIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdmlkZW9fc2Nob29sX2NsaWNrIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnJlc291cmNlc3xrZXl3b3JkOnZpZGVvX3NjaG9vbCIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFZpZGVvIFNjaG9vbCAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vdmltZW8uY29tL290dC9yZXNvdXJjZXMiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19vdHRfcmVzb3VyY2VzIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnJlc291cmNlc3xrZXl3b3JkOm90dF9yZXNvdXJjZXMiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBPVFQgUmVzb3VyY2VzICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIudmltZW8uY29tIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfZGV2ZWxvcGVyc19jbGljayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpyZXNvdXJjZXN8a2V5d29yZDpkZXZlbG9wZXJzIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgRGV2ZWxvcGVycyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9zdHVkZW50cyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3N0dWRlbnRzIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnJlc291cmNlc3xrZXl3b3JkOnN0dWRlbnRzIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgU3R1ZGVudHMgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvaGVscC9ndWlkZWxpbmVzIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdmltZW9fZ3VpZGVsaW5lc19jbGljayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpyZXNvdXJjZXN8a2V5d29yZDp2aW1lb19ndWlkZWxpbmVzIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgR3VpZGVsaW5lcyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICA8L3NlY3Rpb24+CgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJmb290ZXJfdjJfX2xpbmsgZm9vdGVyX3YyX2FjY29yZGlvbiI+CiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fY2hlY2siIHR5cGU9ImNoZWNrYm94Ij4KICAgICAgICAgICAgPGg0IGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyLXRleHQiPlVQR1JBREU8L3NwYW4+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19yZXZlYWwiPgogICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9ImlyaXNfaWMgaXMtLTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA4IDgiPjxwYXRoIGQ9Ik03LjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMEw0IDQuNTg2IDEuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwLS4zOS4zOS0uMzkgMS4wMjQgMCAxLjQxNGwzIDNjLjM5LjM5IDEuMDI0LjM5IDEuNDE0IDBsMy0zYy4zOS0uMzkuMzktMS4wMjQgMC0xLjQxNHoiLz48L3N2Zz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2g0PgogICAgICAgICAgICA8dWwgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1saXN0IGZvb3Rlcl92Ml9hY2NvcmRpb25fX21lbnUiPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL3N0b3JlL3BsdXMiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua191cGdyYWRlX3BsdXMiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6dXBncmFkZV9saW5rfGtleXdvcmQ6cGx1cyIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFZpbWVvIFBsdXMgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvc3RvcmUvcHJvIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdXBncmFkZV9wcm8iCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6dXBncmFkZV9saW5rfGtleXdvcmQ6cHJvIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgVmltZW8gUFJPICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL3N0b3JlL2J1c2luZXNzIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdXBncmFkZV9idXNpbmVzcyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDp1cGdyYWRlX2xpbmt8a2V5d29yZDpidXNpbmVzcyIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFZpbWVvIEJ1c2luZXNzICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL3N0b3JlL3ByZW1pdW0iCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua191cGdyYWRlX3ByZW1pdW0iCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6dXBncmFkZV9saW5rfGtleXdvcmQ6cHJlbWl1bSIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFZpbWVvIFByZW1pdW0gICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvZW50ZXJwcmlzZSIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3VwZ3JhZGVfZW50ZXJwcmlzZSIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDp1cGdyYWRlX2xpbmt8a2V5d29yZDplbnRlcnByaXNlIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgVmltZW8gRW50ZXJwcmlzZSAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHA6Ly92aW1lby5leHRvbGUuY29tL3dlYnNpdGVfZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdXBncmFkZV9yZWZfZnJpZW5kIgogICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9Il9ibGFuayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDp1cGdyYWRlX2xpbmt8a2V5d29yZDpyZWZlcl9hX2ZyaWVuZCIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFJlZmVyIGEgZnJpZW5kICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgIDwvc2VjdGlvbj4KCiAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImZvb3Rlcl92Ml9fbGluayBmb290ZXJfdjJfYWNjb3JkaW9uIj4KICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19jaGVjayIgdHlwZT0iY2hlY2tib3giPgogICAgICAgICAgICA8aDQgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXIiPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXItdGV4dCI+Q09NUEFOWTwvc3Bhbj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX3JldmVhbCI+CiAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0iaXJpc19pYyBpcy0tMTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDggOCI+PHBhdGggZD0iTTcuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwTDQgNC41ODYgMS43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDAtLjM5LjM5LS4zOSAxLjAyNCAwIDEuNDE0bDMgM2MuMzkuMzkgMS4wMjQuMzkgMS40MTQgMGwzLTNjLjM5LS4zOS4zOS0xLjAyNCAwLTEuNDE0eiIvPjwvc3ZnPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvaDQ+CiAgICAgICAgICAgIDx1bCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWxpc3QgZm9vdGVyX3YyX2FjY29yZGlvbl9fbWVudSI+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvYWJvdXQiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19hYm91dF9jbGljayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpjb21wYW55fGtleXdvcmQ6YWJvdXRfdmltZW8iCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBBYm91dCAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9qb2JzIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfam9icyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpjb21wYW55fGtleXdvcmQ6am9icyIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIEpvYnMgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9zZWN0aW9uPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGFzaWRlIGlkPSJmb290ZXJfdGlwIiBjbGFzcz0iZm9vdGVyX3YyX190aXAiIGFyaWEtbGl2ZT0icG9saXRlIj4KICAgICAgICAgICAgPGg0IGNsYXNzPSJmb290ZXJfdjJfX3RpcC1oZWFkZXIiPkRpZCB5b3Uga25vdz88L2g0PgogICAgICAgICAgICA8cCBjbGFzcz0iYWN0aXZlIGZvb3Rlcl92Ml9fdGlwLWNvbnRlbnQiPlBheSBhIHZpc2l0IHRvIHlvdXIgPGEgaHJlZj0iaHR0cHM6Ly9qb2luLnZpbWVvLmNvbS92aWRlby1hbmFseXRpY3MvIiBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpkaWRfeW91X2tub3dfYm94fGNvbXBvbmVudDp1cGdyYWRlX2xpbmsiPnN0YXRzIGRhc2hib2FyZDwvYT4gdG8gZ2V0IHBvd2VyZnVsIGluc2lnaHRzIGludG8gaG93IHlvdXIgdmlkZW9zIGFyZSBwZXJmb3JtaW5nLjwvcD4KICAgICAgICA8L2FzaWRlPgogICAgPC9zZWN0aW9uPgogICAgCiAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImZvb3Rlcl92Ml9fYXV4aWxpYXJ5ICI+CgogICAgPGRpdiBjbGFzcz0iZm9vdGVyX3YyX19sZWdhbCI+CiAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyX3YyX19hdXhpbGlhcnktY29udGVudCI+CiAgICAgICAgICAgIDxwPlRNICsgJmNvcHk7IDIwMjAgVmltZW8sIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC48L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPHVsIGNsYXNzPSJmb290ZXJfdjJfX2xlZ2FsLWxpc3QiPgogICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGVnYWwtbGlzdC1pdGVtIj4KICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTQiIGhyZWY9Ii90ZXJtcyIgdGl0bGU9IlRlcm1zICZhbXA7IENvbmRpdGlvbnMiPgogICAgICAgICAgICAgICAgICAgIFRlcm1zICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xlZ2FsLWxpc3QtaXRlbSI+CiAgICAgICAgICAgICAgICA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS00IiBocmVmPSIvcHJpdmFjeSIgdGl0bGU9IlByaXZhY3kgUG9saWN5Ij4KICAgICAgICAgICAgICAgICAgICBQcml2YWN5ICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xlZ2FsLWxpc3QtaXRlbSI+CiAgICAgICAgICAgICAgICA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS00IiBocmVmPSIvcHJpdmFjeS9jYWxpZm9ybmlhLXByaXZhY3kiIHRpdGxlPSJDQSBQcml2YWN5Ij4KICAgICAgICAgICAgICAgICAgICBDQSBQcml2YWN5ICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xlZ2FsLWxpc3QtaXRlbSI+CiAgICAgICAgICAgICAgICA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS00IiBocmVmPSIvZG1jYSIgdGl0bGU9IkNvcHlyaWdodCBJbmZvcm1hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0ICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xlZ2FsLWxpc3QtaXRlbSI+CiAgICAgICAgICAgICAgICA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS00IiBocmVmPSIvY29va2llX3BvbGljeSIgdGl0bGU9IkxlYXJuIG1vcmUgYWJvdXQgaG93IFZpbWVvIHVzZXMgY29va2llcyI+CiAgICAgICAgICAgICAgICAgICAgQ29va2llcyAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgPC91bD4KICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfX2F1eGlsaWFyeS1jb250ZW50IGZvb3Rlcl92Ml9fd2l0aGxvdmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFkZSB3aXRoIDxzdmcgY2xhc3M9ImlyaXNfaWMgaXMtLTEyIGZvb3Rlcl92Ml9fbG92ZWhlYXJ0IGZvb3Rlcl92Ml9fYXV4aWxpYXJ5LWljb24iIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDEyIDEyIj48cGF0aCBkPSJNOSAyQzcuMzEyIDIgNiAzLjUgNiAzLjVTNC42ODcgMiAzIDJDMS4zMTIgMiAwIDMuMzEyIDAgNWMwIDMuMTg4IDMuNzUgMy4wMTIgNiA2IDIuMjUtMi45ODggNi0yLjgxMiA2LTYgMC0xLjY4OC0xLjMxMy0zLTMtM3oiLz48L3N2Zz4gaW4gTllDLiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfX2ZpbHRlcnMgZm9vdGVyX3YyX19hdXhpbGlhcnktY29udGVudCI+CiAgICAgICAgPHNwYW4gY2xhc3M9Imxhbmd1YWdlIj4KICAgICAgICAgICAgTGFuZ3VhZ2U6CiAgICAgICAgICAgIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTQiIGhyZWY9IiNsYW5ndWFnZSIgb25jbGljaz0idmltZW8uTW9kYWwuY3JlYXRlKHtjb250ZW50OiAnL3NldHRpbmdzL2xvY2FsZScsIHNpemU6ICdzbWFsbCd9KTsgcmV0dXJuIGZhbHNlOyIgdGl0bGU9IkNob29zZSBhIGRpZmZlcmVudCBsYW5ndWFnZSI+RW5nbGlzaDwvYT4KICAgICAgICA8L3NwYW4+CgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmb290ZXJfdjJfX2ZpbHRlciI+TWF0dXJlIGNvbnRlbnQgZmlsdGVyOiA8L3NwYW4+PGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktNCBmb290ZXJfdjJfX2ZpbHRlcnNfX2xhbmcgY29udGVudGZpbHRlciBqcy1mb290ZXJfY29udGVudGZpbHRlcl9saW5rIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIG9uY2xpY2s9InZpbWVvLk1vZGFsLmNyZWF0ZSh7Y29udGVudDogJy9zZXR0aW5ncy9jb250ZW50cmF0aW5nJ30pIiB0aXRsZT0iQ2hhbmdlIHlvdXIgbWF0dXJlIGNvbnRlbnQgZmlsdGVyIj5Ob25lPC9hPgogICAgICAgICAgICA8L2Rpdj4KCjwvc2VjdGlvbj4KPC9mb290ZXI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKPHNjcmlwdD4KICAgIHZhciBfX2ZhID0gX19mYSB8fCBbXTsKICAgIC8qKgogICAgICogQmVjYXVzZSBzaW5nbGUgcGFnZSBhcHBsaWNhdGlvbnMgc3VjaCBhcyB0aGUgYXBwIHNoZWxsIHdpbGwgYmUgdHJhY2tpbmcKICAgICAqIEZhdGFsIEF0dHJhY3Rpb24gcGFnZSB2aWV3cyBvbiBSZWFjdCBsaWZlY3ljbGUgaG9va3MgKGNvbXBvbmVudERpZE1vdW50KQogICAgICogd2Ugd2FudCB0byBhdm9pZCBkaXNwYXRjaGluZyB0aGUgcGFnZXZpZXcgZXZlbnQgZnJvbSB0aGUgUEhQIHRlbXBsYXRlCiAgICAgKiBhbmQgZGVmZXIgdGhpcyBzb3J0IG9mIHRyYWNraW5nIGxvZ2ljIHRvIHRoZSBmcm9udCBlbmQuCiAgICAgKgogICAgICogVGhpcyBjaGVjayBhbGxvd3MgdXMgdG8gZGVjbGFyZSBpbiBhIGNvbnRyb2xsZXIgd2hldGhlciBvciBub3Qgd2UKICAgICAqIHdhbnQgdG8gZGlzcGF0Y2ggdGhhdCBwcmVsaW1pbmFyeSBwYWdldmlldy4KICAgICAqCiAgICAgKiBUaGUgcHJvcGVydHkgaXMgYWRkaXRpdmUgb25seSwgYXMgdG8gbm90IGFmZmVjdCBleGlzdGluZyBwYWdldmlld3MuCiAgICAgKi8KICAgICAgICAgICAgX19mYS5wdXNoKFsndHJhY2tQYWdldmlldyddKTsKICAgIAogICAgLyoqCiAgICAgKiBBZGQgc2VydmVyIHNpZGUgQUJMaW5jb2xuIGV4cGVyaW1lbnRzIHRvIEdUTSBkYXRhIGxheWVyLgogICAgICovCiAgICAKICAgICAgICB2YXIgX2V4dGVuZCA9IGZ1bmN0aW9uKCl7Zm9yKHZhciByPWFyZ3VtZW50c1swXSxuPTEsZT1hcmd1bWVudHMubGVuZ3RoO2U+bjtuKyspe3ZhciB0PWFyZ3VtZW50c1tuXTtmb3IodmFyIGEgaW4gdCl0Lmhhc093blByb3BlcnR5KGEpJiYoclthXT10W2FdKX1yZXR1cm4gcn07CgogICAgICAgIHZhciBDU1NfRElSID0gJ2h0dHBzOi8vZi52aW1lb2Nkbi5jb20vc3R5bGVzL2Nzc19vcHQvJywKICAgICAgICBKU19ESVIgPSAnaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvJywKICAgICAgICBJTUFHRV9ESVIgPSAnaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9pbWFnZXNfdjYvJywKICAgICAgICBGT05UX0RJUiA9ICdodHRwczovL2YudmltZW9jZG4uY29tL2ZvbnRzLycsCiAgICAgICAgU1ZHX0RJUiA9ICdodHRwczovL2YudmltZW9jZG4uY29tL3N2Zy8nLAogICAgICAgICAgICAgICAgQlVJTERfSEFTSCA9ICc2YWViZSc7CgogICAgCiAgICAgICAgdmFyIHZpbWVvID0gX2V4dGVuZCgod2luZG93LnZpbWVvIHx8IHt9KSwgeyJhcHBfdmVyc2lvbiI6InY2IiwiZG9tYWluIjoidmltZW8uY29tIiwidXJsIjoidmltZW8uY29tIiwiY3VyX3VzZXIiOmZhbHNlLCJvcmlnaW5fdXNlcl9pZCI6bnVsbCwib3JpZ2luX3VzZXIiOmZhbHNlLCJpc19tb2JpbGUiOmZhbHNlfSk7CiAgICB2aW1lby5jb25maWcgPSBfZXh0ZW5kKCh2aW1lby5jb25maWcgfHwge30pLCB7InN0aWNreV90b3BuYXYiOnsiZXhjbHVkZWRfcGFnZXMiOlsiVmltZW9cXENvbnRyb2xsZXJcXEFib3V0Q29udHJvbGxlcjptYWluIiwiVmltZW9cXENvbnRyb2xsZXJcXEFib3V0Q29udHJvbGxlcjpwcm9mZXNzaW9uYWxzIiwiVmltZW9cXENvbnRyb2xsZXJcXEFib3V0Q29udHJvbGxlcjpldmVyeW9uZSIsIlZpbWVvXFxDb250cm9sbGVyXFxIb21lQ29udHJvbGxlcjp1cGdyYWRlIiwiVmltZW9cXENvbnRyb2xsZXJcXFN0b3JlQ29udHJvbGxlcjptYWluIiwiVmltZW9cXENvbnRyb2xsZXJcXFVzZXJcXFNldHRpbmdzMkNvbnRyb2xsZXI6bWFpbiIsIlZpbWVvXFxDb250cm9sbGVyXFxVc2VyXFxTZXR0aW5nczJDb250cm9sbGVyOnRlYW1fbWVtYmVycyIsIlZpbWVvXFxDb250cm9sbGVyXFxVc2VyXFxTZXR0aW5nczJDb250cm9sbGVyOnBhc3N3b3JkIiwiVmltZW9cXENvbnRyb2xsZXJcXFByb2ZpbGVDb250cm9sbGVyOm1haW4iLCJWaW1lb1xcQ29udHJvbGxlclxcQ2xpcFN0YXRzQ29udHJvbGxlcjptYWluIiwiVmltZW9cXENvbnRyb2xsZXJcXENsaXBcXFNldHRpbmdzXFxFbWJlZENvbnRyb2xsZXI6ZW1iZWQiLCJWaW1lb1xcQ29udHJvbGxlclxcVmlkZW9NYW5hZ2VyQ29udHJvbGxlciIsIlZpbWVvXFxDb250cm9sbGVyXFxWaWRlb1Jldmlld0NvbnRyb2xsZXIiLCJWaW1lb1xcQ29udHJvbGxlclxcTWVzc2FnZXNDb250cm9sbGVyIiwiVmltZW9cXENvbnRyb2xsZXJcXFN0YXRzQ29udHJvbGxlciIsIlZpbWVvXFxDb250cm9sbGVyXFxVcGxvYWRDb250cm9sbGVyIiwiVmltZW9cXENvbnRyb2xsZXJcXE9uRGVtYW5kXFxTZXR0aW5nc0NvbnRyb2xsZXIiLCJWaW1lb1xcQ29udHJvbGxlclxcQ2xpcFxcU2V0dGluZ3NDb250cm9sbGVyIl0sInN0aWNreV9pbmNsdWRlZF9wYWdlcyI6WyJWaW1lb1xcQ29udHJvbGxlclxcU3RvY2tcXFN0b2NrSG9tZVBhZ2VDb250cm9sbGVyIiwiVmltZW9cXENvbnRyb2xsZXJcXFN0b2NrXFxTdG9ja0Zvb3RhZ2VDb250cm9sbGVyIiwiVmltZW9cXENvbnRyb2xsZXJcXFN0b2NrXFxTdG9ja1NlYXJjaENvbnRyb2xsZXIiLCJWaW1lb1xcQ29udHJvbGxlclxcU3RvY2tcXFN0b2NrQ29sbGVjdGlvbnNDb250cm9sbGVyIiwiVmltZW9cXENvbnRyb2xsZXJcXEFsYnVtQ29udHJvbGxlciJdLCJ0b3BuYXZfd3JhcF9zZWxlY3RvciI6IiN0b3BuYXZfb3V0ZXJfd3JhcCIsImNvbnRlbnRfd3JhcF9zZWxlY3RvciI6Ii53cmFwX2NvbnRlbnQifSwibG9jYWxlIjoiZW4iLCJvbW5pc2VhcmNoX2VuYWJsZWQiOmZhbHNlLCJvbW5pc2VhcmNoX2Rpc2FibGVkIjpudWxsLCJvbW5pc2VhcmNoX2p3dCI6ImV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSklVekkxTmlKOS5leUpsZUhBaU9qRTJNRE00TWpNNE9EQXNJblZ6WlhKZmFXUWlPbTUxYkd3c0ltRndjRjlwWkNJNk5UZzBOemtzSW5OamIzQmxjeUk2SW5CMVlteHBZeUJ3Y21sMllYUmxJR1JsYkdWMFpTSXNJblJsWVcxZmRYTmxjbDlwWkNJNmJuVnNiSDAuM0R1V21qSjFXZVdDM19VYTdaRFdLbGF5OGpZaEtneUY4N0Uwdkhra0doVSIsIm9tbmlzZWFyY2hfdXNlciI6bnVsbCwiYXBpX3VybCI6ImFwaS52aW1lby5jb20iLCJzaG93X29tbmlzZWFyY2hfdGlwIjpmYWxzZX0pOwoKICAgICAgICB2YXIgX19pMThuTG9jYWxlID0gJ2VuJzsKICAgIHZhciBsb2NhbGVDb25maWcgPSB7CiAgICAgICAgbGFuZzogJ2VuJywKICAgICAgICAnRGF0ZSc6IHsKICAgICAgICAgICAgbW9udGhzOiBbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sCiAgICAgICAgICAgIG1vbnRoc19hYmJyOiBbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLAogICAgICAgICAgICBkYXlzOiBbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sCiAgICAgICAgICAgIGRheXNfYWJicjogWyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSwKCiAgICAgICAgICAgIC8vIEN1bHR1cmUncyBkYXRlIG9yZGVyOiBNTS9ERC9ZWVlZCiAgICAgICAgICAgIGRhdGVPcmRlcjogWydkYXRlJywgJ21vbnRoJywgJ3llYXInXSwKICAgICAgICAgICAgc2hvcnREYXRlOiAnJWQvJW0vJVknLAogICAgICAgICAgICBzaG9ydFRpbWU6ICclSTolTSVwJywKICAgICAgICAgICAgQU06ICdBTScsCiAgICAgICAgICAgIFBNOiAnUE0nLAogICAgICAgICAgICBmaXJzdERheU9mV2VlazogMCwKCiAgICAgICAgICAgIC8vIERhdGUuRXh0cmFzCiAgICAgICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uKGRheU9mTW9udGgpewogICAgICAgICAgICAgICAgcmV0dXJuIGRheU9mTW9udGg7CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICdEYXRlUGlja2VyJzogewogICAgICAgICAgICBzZWxlY3RfYV90aW1lOiAiU2VsZWN0IGEgdGltZSIsCiAgICAgICAgICAgIHVzZV9tb3VzZV93aGVlbDogIlVzZSB0aGUgbW91c2Ugd2hlZWwgdG8gcXVpY2tseSBjaGFuZ2UgdmFsdWUiLAogICAgICAgICAgICB0aW1lX2NvbmZpcm1fYnV0dG9uOiAiT0siLAogICAgICAgICAgICBhcHBseV9yYW5nZTogIkFwcGx5IiwKICAgICAgICAgICAgY2FuY2VsOiAiQ2FuY2VsIiwKICAgICAgICAgICAgd2VlazogIldrIiAgICAgICAgfSwKICAgICAgICAgICAgICAgICdOdW1iZXInOiB7CiAgICAgICAgICAgIGRlY2ltYWw6ICcuJywKICAgICAgICAgICAgZ3JvdXA6ICcsJywKICAgICAgICAgICAgY3VycmVuY3k6IHsKICAgICAgICAgICAgICAgIHByZWZpeDogJyQnCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICdGb3JtVmFsaWRhdG9yJzogeyJyZXF1aXJlZCI6IlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIiwicmVxdWlyZWRDaGsiOiJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiJ9ICAgIH07CgogICAgdmFyIGZ1bGxMb2NhbGUgPSAnJzsKCiAgICAKICAgICAgICB2YXIgQ29weSA9IHt0cmFuc2xhdGU6ZnVuY3Rpb24odCxpLHUpe3ZhciBlPSdvYmplY3QnIT10eXBlb2YgdGhpcy5kaWN0W3RdP3RoaXMuZGljdFt0XTppP3RoaXMuZGljdFt0XS5wbHVyYWw6dGhpcy5kaWN0W3RdLnNpbmd1bGFyO3JldHVybidvYmplY3QnPT10eXBlb2YgdSYmKGU9dGhpcy5zdWJzdGl0dXRlKGUsdSkpLGV9LHN1YnN0aXR1dGU6ZnVuY3Rpb24odCxpKXtyZXR1cm4gdm9pZCAwIT09dC5zdWJzdGl0dXRlP3Quc3Vic3RpdHV0ZShpKTp0LnJlcGxhY2UoL1xcP1x7KFtee31dKylcfS9nLGZ1bmN0aW9uKHQsdSl7cmV0dXJuJ1xcJz09dC5jaGFyQXQoMCk/dC5zbGljZSgxKTpudWxsIT1pW3VdP2lbdV06Jyd9KX0sZGljdDp7fX07CiAgICBDb3B5LmRpY3QgPSB7ImRpZF95b3VfbWVhbl9lbWFpbCI6IkRpZCB5b3UgbWVhbiA8ZW0+e1NVR0dFU1R9PFwvZW0+PyIsImVtYWlsX3Bhc3N3b3JkX21pc21hdGNoIjoiRW1haWwgYW5kIHBhc3N3b3JkIGRvIG5vdCBtYXRjaCIsIm9vcHNfdHJ5X2FnYWluIjoiT29wcyEgU29tZXRoaW5nIHdlbnQgd3JvbmcuIFBsZWFzZSB0cnkgYWdhaW4uIiwianVzdF9ub3ciOiJqdXN0IG5vdyIsInNlY29uZHNfYWdvIjp7InNpbmd1bGFyIjoie0NPVU5UfSBzZWNvbmQgYWdvIiwicGx1cmFsIjoie0NPVU5UfSBzZWNvbmRzIGFnbyJ9LCJtaW51dGVzX2FnbyI6eyJzaW5ndWxhciI6IntDT1VOVH0gbWludXRlIGFnbyIsInBsdXJhbCI6IntDT1VOVH0gbWludXRlcyBhZ28ifSwiaG91cnNfYWdvIjp7InNpbmd1bGFyIjoie0NPVU5UfSBob3VyIGFnbyIsInBsdXJhbCI6IntDT1VOVH0gaG91cnMgYWdvIn0sIm9wZW5fY29tbWVudF9ib3giOiJBZGQgbmV3IGNvbW1lbnQgaW5zdGVhZCAmcmFxdW87IiwidXJsX3VuYXZhaWxhYmxlIjoiU29ycnksIHRoaXMgdXJsIGlzIHVuYXZhaWxhYmxlLiIsInVuc2F2ZWRfY2hhbmdlc19nZW5lcmljIjoiWW91IGhhdmUgdW5zYXZlZCBjaGFuZ2VzLCBhcmUgeW91IHN1cmUgeW91IHdpc2ggdG8gbGVhdmU/IiwiYWRkIjoiQWRkIiwicmVtb3ZlIjoiUmVtb3ZlIiwic2VsZWN0IjoiU2VsZWN0Iiwibm9fZm9sbG93ZXJzX2Zvcl9sZXR0ZXIiOiJZb3UgZG9uJnJzcXVvO3QgZm9sbG93IGFueW9uZSB0aGF0IGJlZ2luIHdpdGggdGhlIGxldHRlciAmbGRxdW87e1BBR0VfTEVUVEVSfSZyZHF1bzsiLCJzaGFyZV9saW1pdF9yZWFjaGVkIjoiWW91IGhhdmUgcmVhY2hlZCB0aGUgbWF4aW11bSBudW1iZXIgb2YgdXNlcnMgdG8gc2hhcmUgd2l0aC4iLCJhdF9sZWFzdF9vbmUiOiJUaGVyZSBtdXN0IGJlIGF0IGxlYXN0IG9uZSB1c2VyLiIsImF2YWlsYWJsZSI6IkF2YWlsYWJsZSIsInVuYXZhaWxhYmxlIjoiVW5hdmFpbGFibGUiLCJicm93c2VfZXJyb3JfZ2VuZXJpYyI6IlNvcnJ5LCB0aGVyZSB3YXMgYW4gZXJyb3IiLCJicm93c2VfZXJyb3Jfbm9fdmlkZW9zIjoiU29ycnksIG5vIHZpZGVvcyBmb3VuZCIsImZvbGxvdyI6IkZvbGxvdyIsImZvbGxvd2luZyI6IkZvbGxvd2luZyIsInVuZm9sbG93IjoiVW5mb2xsb3ciLCJ1bmZvbGxvd2luZyI6IlVuZm9sbG93aW5nIiwiY291bnRfY29tbWVudHMiOnsic2luZ3VsYXIiOiJ7Q09VTlR9IGNvbW1lbnQiLCJwbHVyYWwiOiJ7Q09VTlR9IGNvbW1lbnRzIn0sImZpcnN0X2NvbW1lbnQiOiJCZSB0aGUgZmlyc3QgdG8gY29tbWVudFx1MjAyNiIsIm5vX2NvbW1lbnRzX2Zvcl95b3UiOiJGb3JiaWRkZW4uIFlvdSBjYW5ub3QgcG9zdCBjb21tZW50cyBvbiB0aGlzIHBhZ2UuIiwib29wcyI6Ik9vcHMhIiwicGxheWVyX3RyeV9hZ2FpbiI6IlRoYXQgd2Fzbid0IHN1cHBvc2VkIHRvIGhhcHBlbi4gUGxlYXNlIHRyeSBhZ2FpbiBpbiBhIGZldyBtaW51dGVzLiIsImR1cmF0aW9uX2lucHV0X21pbl9kdXJhdGlvbiI6IlRoZSBkdXJhdGlvbiBjYW5ub3QgYmUgbGVzcyB0aGFuIHtNSU5fRFVSQVRJT059LiIsImR1cmF0aW9uX2lucHV0X21heF9kdXJhdGlvbiI6IlRoZSBkdXJhdGlvbiBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuIHtNQVhfRFVSQVRJT059LiIsImR1cmF0aW9uX2lucHV0X2ludmFsaWRfY2hhcmFjdGVycyI6IjAtOSBhbmQgOiBhcmUgdGhlIG9ubHkgYWNjZXB0YWJsZSBpbnB1dHMuIiwiY2xvc2UiOiJDbG9zZSIsImV4cGFuZCI6IkV4cGFuZCIsImxvYWRpbmciOiJMb2FkaW5nLi4uIiwidG9wIjoidG9wIiwiYWR2YW5jZWRfc2VhcmNoIjoiQWR2YW5jZWQgU2VhcmNoIiwibm9fc3VnZ2VzdGlvbnMiOiJObyBzdWdnZXN0aW9ucyIsInJlY2VudF9zZWFyY2hlcyI6IlJlY2VudCBTZWFyY2hlcyIsInNlYXJjaF9hbGwiOiJTZWFyY2ggQWxsIG9mIFZpbWVvIiwiZW1haWxfYW5kX3Bhc3N3b3JkIjoiUGxlYXNlIGVudGVyIHlvdXIgZW1haWwgYW5kIHBhc3N3b3JkIiwiZW1haWxfYWRkcmVzcyI6IlBsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3MiLCJuYW1lX2VtYWlsX2FuZF9wYXNzd29yZCI6IlBsZWFzZSBlbnRlciB5b3VyIG5hbWUsIGVtYWlsLCBhbmQgcGFzc3dvcmQifTsKPC9zY3JpcHQ+CgoKICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2YudmltZW9jZG4uY29tL2pzX29wdC9zdGlja3lfdG9wbmF2X2NvbWJpbmVkLm1pbi5qcz81ZmZkNmQ0ZSI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvcmVhY3RfcHJvZF9jb21iaW5lZC5taW4uanM/MDMxNzc1YTQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vanNfb3B0L2V4Y2VwdGlvbl9jb21iaW5lZC5taW4uanM/MmEyZjI2MTMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vanNfb3B0L3RvcG5hdl9jYXJ0X2J1dHRvbl9jb21iaW5lZC5taW4uanM/NDQ4OGMwOTIiPjwvc2NyaXB0PgoKICAgIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL2YudmltZW9jZG4uY29tL2pzX29wdC9fYnVuZGxlcy9jcmVhdGVfZmFjZWJvb2tfaGVhZGVyLmJ1bmRsZS5taW4uanM/OTU0YzQ2MDAiPjwvc2NyaXB0PgogICAgPHNjcmlwdD4KICAgICAgICBmdW5jdGlvbiBvblZpbWVvRG9tUmVhZHkoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgd2luZG93LnZpbWVvID0gd2luZG93LnZpbWVvIHx8IHt9OwogICAgICB3aW5kb3cudmltZW8uZXhjZXB0aW9uX2RhdGEgPSB7InRpdGxlIjoiU29ycnksIHdlIGNvdWxkblx1MjAxOXQgZmluZCB0aGF0IHBhZ2UiLCJtZXNzYWdlIjoiIiwibm90aWZpY2F0aW9uIjoiPGRpdiBjbGFzcz1cImV4Y2VwdGlvbl9ub3RpZmljYXRpb24gaXJpc19ub3RpZmljYXRpb24gaXJpc19ub3RpZmljYXRpb24tLXVwc2VsbFwiPlxuICAgICA8ZGl2IGNsYXNzPVwiaXJpc19ub3RpZmljYXRpb24tLXVwc2VsbC1pY29uXCI+XG4gICAgICAgICA8c3BhbiBjbGFzcz1cImlyaXNfaWMgaXMtLTE2XCI+PHN2ZyB4bWxucz1cImh0dHA6XC9cL3d3dy53My5vcmdcLzIwMDBcL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIj48cGF0aCBkPVwiTTggMTZjNC40MTggMCA4LTMuNTgyIDgtOHMtMy41ODItOC04LTgtOCAzLjU4Mi04IDggMy41ODIgOCA4IDh6TTcgNGgydjJIN1Y0em0wIDNoMnY1SDdWN3pcIlwvPjxcL3N2Zz48XC9zcGFuPlxuICAgICA8XC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiaXJpc19ub3RpZmljYXRpb24taGVhZGVyXCI+XG4gICAgICAgIDxzdHJvbmc+UmVhc29ucyB5b3UgbWlnaHQgYmUgc2VlaW5nIHRoaXMgcGFnZTxcL3N0cm9uZz5cbiAgICA8XC9kaXY+XG5cbiAgICA8dWwgY2xhc3M9XCJpcmlzX25vdGlmaWNhdGlvbi1saXN0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxsaT5JdCBleGlzdHMsIGJ1dCB5b3UgZG9uXHUyMDE5dCBoYXZlIHBlcm1pc3Npb24gdG8gc2VlIGl0LCBvciB5b3UgbmVlZCB0byA8YSBvbmNsaWNrPVwidmltZW8uU2Vzc2lvbi5jcmVhdGUoKVwiPmxvZyBpbjxcL2E+LjxcL2xpPlxuICAgICAgICAgICAgICAgIDxsaT5Ob3RoaW5nIGhhcyBldmVyIGV4aXN0ZWQgaGVyZS4gU3Bvb2t5LjxcL2xpPlxuICAgICAgICA8bGk+U29tZXRoaW5nIG9uY2UgbGl2ZWQgaGVyZSwgYnV0IGhhcyBiZWVuIGRlbGV0ZWQuPFwvbGk+XG4gICAgPFwvdWw+XG48XC9kaXY+XG4iLCJzZWFyY2giOnRydWUsInZpZGVvcyI6bnVsbCwiYWRfY29uZmlnIjp7ImhvdXNlX2Fkc19lbmFibGVkIjpmYWxzZX0sInBhZ2VfdHlwZSI6ImV4Y2VwdGlvbiIsIm1vZHVsZV90eXBlIjoic3RhbmRhcmRfbXVsdGkifTsKCiAgICAgIG5ldyB3aW5kb3cuRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShvblZpbWVvRG9tUmVhZHkpOwogICAgICAgICAgICA8L3NjcmlwdD4KCgogICAgPC9ib2R5Pgo8L2h0bWw+Cg==
128
+ http_version:
129
+ recorded_at: Tue, 27 Oct 2020 18:22:46 GMT
130
+ recorded_with: VCR 3.0.3