video_info 2.7.1 → 3.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (246) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/unit_test.yml +42 -0
  3. data/Guardfile +1 -1
  4. data/README.md +8 -19
  5. data/lib/video_info/provider.rb +11 -2
  6. data/lib/video_info/providers/vimeo_api.rb +9 -3
  7. data/lib/video_info/providers/vimeo_scraper.rb +12 -2
  8. data/lib/video_info/providers/youtube.rb +8 -0
  9. data/lib/video_info/providers/youtube_api.rb +1 -2
  10. data/lib/video_info/providers/youtube_scraper.rb +43 -25
  11. data/lib/video_info/providers/youtubeplaylist_api.rb +15 -1
  12. data/lib/video_info/version.rb +1 -1
  13. data/lib/video_info.rb +3 -3
  14. data/tmp/rspec_guard_result +25 -0
  15. data/video_info.gemspec +5 -6
  16. metadata +16 -472
  17. data/.travis.yml +0 -21
  18. data/lib/video_info/providers/vkontakte.rb +0 -212
  19. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/_available_/with_invalid_video_url/_available_/1_2_2_1_1.yml +0 -93
  20. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/_available_/with_valid_video/_available_/1_2_1_1_1.yml +0 -96
  21. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_author/1_3_7_1.yml +0 -100
  22. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_author_thumbnail/1_3_9_1.yml +0 -100
  23. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_author_url/1_3_8_1.yml +0 -100
  24. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_date/should_show_correct_date.yml +0 -100
  25. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_description/1_3_10_1.yml +0 -100
  26. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_duration/1_3_12_1.yml +0 -100
  27. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_keywords/1_3_11_1.yml +0 -100
  28. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_thumbnail/1_3_19_1.yml +0 -100
  29. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_thumbnail_large/1_3_18_1.yml +0 -100
  30. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_thumbnail_medium/1_3_17_1.yml +0 -100
  31. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_thumbnail_small/1_3_16_1.yml +0 -100
  32. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_title/1_3_6_1.yml +0 -100
  33. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_view_count/1_3_20_1.yml +0 -100
  34. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_password_required_video/_available_/1_2_3_1_1.yml +0 -150
  35. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_password_required_video/_available_/2_2_3_1_1.yml +0 -65
  36. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_this_video_does_not_exist_video/_available_/1_2_2_1_1.yml +0 -124
  37. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_this_video_does_not_exist_video/_available_/2_2_2_1_1.yml +0 -67
  38. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_valid_video/_available_/1_2_1_1_1.yml +0 -150
  39. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_valid_video/_available_/2_2_1_1_1.yml +0 -67
  40. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/author/1_13_2_1.yml +0 -128
  41. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/author_thumbnail/1_13_3_1.yml +0 -128
  42. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/author_url/1_13_4_1.yml +0 -128
  43. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/available_/1_13_1_1.yml +0 -128
  44. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/date/1_13_7_1.yml +0 -128
  45. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/description/1_13_6_1.yml +0 -128
  46. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/duration/1_13_8_1.yml +0 -128
  47. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/height/1_13_10_1.yml +0 -128
  48. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/keywords/1_13_9_1.yml +0 -128
  49. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/thumbnail_large/1_13_14_1.yml +0 -128
  50. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/thumbnail_medium/1_13_13_1.yml +0 -128
  51. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/thumbnail_small/1_13_12_1.yml +0 -128
  52. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/title/1_13_5_1.yml +0 -128
  53. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/view_count/1_13_15_1.yml +0 -128
  54. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/width/1_13_11_1.yml +0 -128
  55. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author/1_3_18_1.yml +0 -150
  56. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author/2_3_18_1.yml +0 -79
  57. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author_thumbnail/1_3_17_1.yml +0 -150
  58. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author_thumbnail/2_3_17_1.yml +0 -79
  59. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author_url/1_3_19_1.yml +0 -150
  60. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author_url/2_3_19_1.yml +0 -79
  61. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_date/should_have_correct_upload_date.yml +0 -226
  62. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_description/1_3_7_1.yml +0 -150
  63. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_description/2_3_7_1.yml +0 -79
  64. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_duration/1_3_9_1.yml +0 -150
  65. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_duration/2_3_9_1.yml +0 -79
  66. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_height/1_3_11_1.yml +0 -150
  67. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_height/2_3_11_1.yml +0 -79
  68. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_keywords/should_return_a_string_list_of_keywords.yml +0 -226
  69. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail/1_3_16_1.yml +0 -222
  70. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail/2_3_16_1.yml +0 -79
  71. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_large/1_3_15_1.yml +0 -222
  72. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_large/2_3_15_1.yml +0 -79
  73. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_medium/1_3_14_1.yml +0 -222
  74. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_medium/2_3_14_1.yml +0 -79
  75. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_small/1_3_13_1.yml +0 -222
  76. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_small/2_3_13_1.yml +0 -79
  77. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_title/1_3_6_1.yml +0 -150
  78. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_title/2_3_6_1.yml +0 -79
  79. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_view_count/1_3_20_1.yml +0 -150
  80. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_view_count/2_3_20_1.yml +0 -79
  81. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_width/1_3_10_1.yml +0 -150
  82. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_width/2_3_10_1.yml +0 -79
  83. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_193970014/thumbnail/1_12_1_1.yml +0 -222
  84. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_193970014/thumbnail/2_12_1_1.yml +0 -75
  85. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_193970014/thumbnail_large/1_12_2_1.yml +0 -222
  86. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_193970014/thumbnail_large/2_12_2_1.yml +0 -75
  87. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_193970014/thumbnail_medium/1_12_3_1.yml +0 -222
  88. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_193970014/thumbnail_medium/2_12_3_1.yml +0 -75
  89. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_193970014/thumbnail_small/1_12_4_1.yml +0 -222
  90. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_193970014/thumbnail_small/2_12_4_1.yml +0 -75
  91. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/_available_/with_hashes/available_/1_2_6_1_1.yml +0 -86
  92. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/_available_/with_invalid_video/available_/1_2_2_1_1.yml +0 -50
  93. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/_available_/with_private_video/available_/1_2_3_1_1.yml +0 -132
  94. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/_available_/with_redirect/available_/1_2_4_1_1.yml +0 -134
  95. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/_available_/with_redirect_to_main_page_for_auth/available_/1_2_5_1_1.yml +0 -85
  96. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/_available_/with_valid_video/available_/1_2_1_1_1.yml +0 -87
  97. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/author/1_5_14_1.yml +0 -48
  98. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/author_thumbnail/1_5_15_1.yml +0 -48
  99. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/author_url/1_5_16_1.yml +0 -48
  100. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/description/1_5_8_1.yml +0 -48
  101. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/duration/1_5_10_1.yml +0 -48
  102. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/embed_code/1_5_6_1.yml +0 -48
  103. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/embed_url/1_5_5_1.yml +0 -48
  104. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/height/1_5_12_1.yml +0 -48
  105. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/thumbnail_small/1_5_18_1.yml +0 -48
  106. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/title/1_5_7_1.yml +0 -48
  107. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/view_count/1_5_13_1.yml +0 -48
  108. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/width/1_5_11_1.yml +0 -50
  109. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_https_/vk_com/id44052340_z_video61291456_159590018_2F2521d92730a272a9ea/author/1_3_7_1.yml +0 -48
  110. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_https_/vk_com/id44052340_z_video61291456_159590018_2F2521d92730a272a9ea/embed_code/1_3_6_1.yml +0 -48
  111. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_https_/vk_com/id44052340_z_video61291456_159590018_2F2521d92730a272a9ea/embed_url/1_3_5_1.yml +0 -48
  112. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_https_/vk_com/id44052340_z_video61291456_159590018_2F2521d92730a272a9ea/title/1_3_4_1.yml +0 -48
  113. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video-54799401_165822734/title/1_7_4_1.yml +0 -48
  114. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video3552522_171340713/embed_url/1_10_1_1.yml +0 -48
  115. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_161598544/description/1_6_8_1.yml +0 -48
  116. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_161598544/duration/1_6_10_1.yml +0 -48
  117. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_161598544/embed_code/1_6_6_1.yml +0 -48
  118. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_161598544/embed_url/1_6_5_1.yml +0 -48
  119. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_161598544/height/1_6_12_1.yml +0 -48
  120. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_161598544/title/1_6_7_1.yml +0 -48
  121. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_161598544/view_count/1_6_13_1.yml +0 -48
  122. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_161598544/width/1_6_11_1.yml +0 -48
  123. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_videos43640822_/video43640822_168790809/author/1_4_5_1.yml +0 -48
  124. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_videos43640822_/video43640822_168790809/author_thumbnail/1_4_6_1.yml +0 -48
  125. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_videos43640822_/video43640822_168790809/author_url/1_4_7_1.yml +0 -48
  126. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_videos43640822_/video43640822_168790809/title/1_4_4_1.yml +0 -48
  127. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/_available_/with_invalid_video/_available_/1_2_2_1_1.yml +0 -67
  128. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/_available_/with_valid_video/_available_/1_2_1_1_1.yml +0 -69
  129. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_duration/1_4_7_1.yml +0 -77
  130. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_height/1_4_9_1.yml +0 -77
  131. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_thumbnail_large/1_4_12_1.yml +0 -77
  132. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_thumbnail_medium/1_4_11_1.yml +0 -77
  133. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_thumbnail_small/1_4_10_1.yml +0 -77
  134. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_title/1_4_6_1.yml +0 -77
  135. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_width/1_4_8_1.yml +0 -77
  136. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_duration/1_3_7_1.yml +0 -77
  137. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_height/1_3_9_1.yml +0 -77
  138. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_thumbnail/1_3_13_1.yml +0 -77
  139. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_thumbnail_large/1_3_12_1.yml +0 -77
  140. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_thumbnail_medium/1_3_11_1.yml +0 -77
  141. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_thumbnail_small/1_3_10_1.yml +0 -77
  142. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_title/1_3_6_1.yml +0 -77
  143. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_width/1_3_8_1.yml +0 -77
  144. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/foo/_available/1_2_2_1_1.yml +0 -1447
  145. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/foo/_available/2_2_2_1_1.yml +0 -156
  146. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_available_/1_2_2_1_1.yml +0 -481
  147. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_available_/1_2_3_1_1.yml +0 -485
  148. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_available_/2_2_2_1_1.yml +0 -54
  149. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_available_/2_2_3_1_1.yml +0 -54
  150. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_date/1_2_2_11_1.yml +0 -481
  151. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_date/1_2_3_11_1.yml +0 -481
  152. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_date/2_2_2_11_1.yml +0 -54
  153. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_date/2_2_3_11_1.yml +0 -54
  154. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_description/1_2_2_8_1.yml +0 -483
  155. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_description/1_2_3_8_1.yml +0 -483
  156. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_description/2_2_2_8_1.yml +0 -54
  157. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_description/2_2_3_8_1.yml +0 -54
  158. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_duration/1_2_2_10_1.yml +0 -485
  159. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_duration/1_2_3_10_1.yml +0 -484
  160. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_duration/2_2_2_10_1.yml +0 -54
  161. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_duration/2_2_3_10_1.yml +0 -54
  162. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_keywords/1_2_2_9_1.yml +0 -485
  163. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_keywords/1_2_3_9_1.yml +0 -484
  164. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_keywords/2_2_2_9_1.yml +0 -54
  165. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_keywords/2_2_3_9_1.yml +0 -54
  166. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_title/1_2_2_7_1.yml +0 -481
  167. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_title/1_2_3_7_1.yml +0 -484
  168. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_title/2_2_2_7_1.yml +0 -54
  169. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_title/2_2_3_7_1.yml +0 -54
  170. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_view_count/1_2_2_17_1.yml +0 -485
  171. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_view_count/1_2_3_17_1.yml +0 -485
  172. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_view_count/2_2_2_17_1.yml +0 -54
  173. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_view_count/2_2_3_17_1.yml +0 -54
  174. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_valid_video/_available_/1_2_1_1_1.yml +0 -56
  175. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_valid_video/_available_/2_2_1_1_1.yml +0 -125
  176. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_video_removed_because_of_copyright_claim/_available_/1_2_3_1_1.yml +0 -483
  177. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_video_removed_because_of_copyright_claim/_available_/1_2_4_1_1.yml +0 -484
  178. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_video_removed_because_of_copyright_claim/_available_/2_2_3_1_1.yml +0 -54
  179. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_video_removed_because_of_copyright_claim/_available_/2_2_4_1_1.yml +0 -54
  180. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_date/should_return_date_video_was_posted.yml +0 -178
  181. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_description/1_17_7_1.yml +0 -56
  182. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_description/2_17_7_1.yml +0 -125
  183. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_duration/1_17_9_1.yml +0 -56
  184. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_duration/2_17_9_1.yml +0 -125
  185. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_keywords/1_17_8_1.yml +0 -56
  186. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_keywords/2_17_8_1.yml +0 -125
  187. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_title/1_17_6_1.yml +0 -56
  188. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_title/2_17_6_1.yml +0 -125
  189. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_view_count/1_17_16_1.yml +0 -56
  190. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_view_count/2_17_16_1.yml +0 -125
  191. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author/1_3_6_1.yml +0 -56
  192. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author/2_3_6_1.yml +0 -125
  193. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author_thumbnail/1_3_7_1.yml +0 -56
  194. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author_thumbnail/2_3_7_1.yml +0 -208
  195. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author_url/1_3_8_1.yml +0 -56
  196. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author_url/2_3_8_1.yml +0 -208
  197. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_date/should_return_date_video_was_posted.yml +0 -178
  198. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_description/1_3_10_1.yml +0 -56
  199. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_description/2_3_10_1.yml +0 -125
  200. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_duration/1_3_12_1.yml +0 -56
  201. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_duration/2_3_12_1.yml +0 -125
  202. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_keywords/1_3_11_1.yml +0 -56
  203. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_keywords/2_3_11_1.yml +0 -125
  204. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_title/1_3_9_1.yml +0 -56
  205. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_title/2_3_9_1.yml +0 -125
  206. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_view_count/1_3_20_1.yml +0 -56
  207. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_view_count/2_3_20_1.yml +0 -125
  208. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/_available_/with_invalid_playlist/_available_/1_2_2_1_1.yml +0 -60
  209. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/_available_/with_invalid_playlist/_available_/2_2_2_1_1.yml +0 -60
  210. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/_available_/with_list_url/_available_/1_2_3_1_1.yml +0 -94
  211. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/_available_/with_list_url/_available_/2_2_3_1_1.yml +0 -94
  212. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/_available_/with_valid_playlist/_available_/1_2_1_1_1.yml +0 -94
  213. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/_available_/with_valid_playlist/_available_/2_2_1_1_1.yml +0 -94
  214. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author/1_3_19_1.yml +0 -105
  215. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author/2_3_19_1.yml +0 -105
  216. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author_thumbnail/1_3_20_1.yml +0 -189
  217. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author_thumbnail/2_3_20_1.yml +0 -189
  218. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author_url/1_3_21_1.yml +0 -189
  219. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author_url/2_3_21_1.yml +0 -189
  220. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_description/1_3_7_1.yml +0 -105
  221. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_description/2_3_7_1.yml +0 -105
  222. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_keywords/1_3_8_1.yml +0 -105
  223. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_keywords/2_3_8_1.yml +0 -105
  224. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail/1_3_16_1.yml +0 -105
  225. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail/2_3_16_1.yml +0 -105
  226. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_large/1_3_15_1.yml +0 -105
  227. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_large/2_3_15_1.yml +0 -105
  228. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_medium/1_3_14_1.yml +0 -105
  229. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_medium/2_3_14_1.yml +0 -105
  230. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_small/1_3_13_1.yml +0 -105
  231. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_small/2_3_13_1.yml +0 -105
  232. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_title/1_3_6_1.yml +0 -105
  233. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_title/2_3_6_1.yml +0 -105
  234. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_videos/returns_list_of_videos_in_playlist.yml +0 -265
  235. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_that_does_not_exist_in_embed_path/_videos/1_4_2_1.yml +0 -54
  236. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_that_does_not_exist_in_embed_path/_videos/2_4_2_1.yml +0 -54
  237. data/spec/lib/video_info/provider_spec.rb +0 -80
  238. data/spec/lib/video_info/providers/dailymotion_spec.rb +0 -194
  239. data/spec/lib/video_info/providers/vimeo_spec.rb +0 -328
  240. data/spec/lib/video_info/providers/vkontakte_spec.rb +0 -236
  241. data/spec/lib/video_info/providers/wistia_spec.rb +0 -197
  242. data/spec/lib/video_info/providers/youtube_playlist_spec.rb +0 -236
  243. data/spec/lib/video_info/providers/youtube_scraper_spec.rb +0 -12
  244. data/spec/lib/video_info/providers/youtube_spec.rb +0 -575
  245. data/spec/lib/video_info_spec.rb +0 -106
  246. data/spec/spec_helper.rb +0 -26
@@ -1,150 +0,0 @@
1
- ---
2
- http_interactions:
3
- - request:
4
- method: head
5
- uri: https://vimeo.com/74636562
6
- body:
7
- encoding: US-ASCII
8
- string: ''
9
- headers:
10
- User-Agent:
11
- - VideoInfo/2.7
12
- Accept:
13
- - "*/*"
14
- response:
15
- status:
16
- code: 200
17
- message: OK
18
- headers:
19
- Server:
20
- - nginx
21
- Content-Type:
22
- - text/html; charset=UTF-8
23
- Expires:
24
- - Mon, 27 Mar 2017 09:00:51 GMT
25
- X-Ua-Compatible:
26
- - IE=edge
27
- X-Xss-Protection:
28
- - 1; mode=block
29
- X-Content-Type-Options:
30
- - nosniff
31
- X-Frame-Options:
32
- - sameorigin
33
- Strict-Transport-Security:
34
- - max-age=15552000; includeSubDomains; preload
35
- Content-Security-Policy-Report-Only:
36
- - 'default-src https: data: blob: ''unsafe-inline'' ''unsafe-eval''; report-uri
37
- /_csp'
38
- Via:
39
- - 1.1 varnish
40
- - 1.1 varnish
41
- - 1.1 varnish
42
- Cache-Control:
43
- - no-store, no-cache, must-revalidate, post-check=0, pre-check=0
44
- X-Varnish-Cache:
45
- - '0'
46
- X-Vserver:
47
- - dfvimeowebproxy2
48
- Fastly-Debug-Digest:
49
- - 3702aaafc8fce1a3bfac9e8d1e1644df6949cd53e32cfec002615540e9fa3e5e
50
- Content-Length:
51
- - '44084'
52
- Accept-Ranges:
53
- - bytes
54
- Date:
55
- - Mon, 27 Mar 2017 21:00:51 GMT
56
- Age:
57
- - '0'
58
- Connection:
59
- - keep-alive
60
- X-Served-By:
61
- - cache-iad2142-IAD, cache-lax8643-LAX
62
- X-Cache:
63
- - MISS, MISS
64
- X-Cache-Hits:
65
- - 0, 0
66
- X-Timer:
67
- - S1490648451.245824,VS0,VE150
68
- Vary:
69
- - User-Agent,Accept-Encoding
70
- body:
71
- encoding: UTF-8
72
- string: ''
73
- http_version:
74
- recorded_at: Mon, 27 Mar 2017 21:00:51 GMT
75
- - request:
76
- method: get
77
- uri: https://vimeo.com/74636562
78
- body:
79
- encoding: US-ASCII
80
- string: ''
81
- headers:
82
- Accept-Encoding:
83
- - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
84
- Accept:
85
- - "*/*"
86
- User-Agent:
87
- - Ruby
88
- response:
89
- status:
90
- code: 200
91
- message: OK
92
- headers:
93
- Server:
94
- - nginx
95
- Content-Type:
96
- - text/html; charset=UTF-8
97
- Expires:
98
- - Mon, 27 Mar 2017 09:00:51 GMT
99
- X-Ua-Compatible:
100
- - IE=edge
101
- X-Xss-Protection:
102
- - 1; mode=block
103
- X-Content-Type-Options:
104
- - nosniff
105
- X-Frame-Options:
106
- - sameorigin
107
- Strict-Transport-Security:
108
- - max-age=15552000; includeSubDomains; preload
109
- Content-Security-Policy-Report-Only:
110
- - 'default-src https: data: blob: ''unsafe-inline'' ''unsafe-eval''; report-uri
111
- /_csp'
112
- Via:
113
- - 1.1 varnish
114
- - 1.1 varnish
115
- - 1.1 varnish
116
- Cache-Control:
117
- - no-store, no-cache, must-revalidate, post-check=0, pre-check=0
118
- X-Varnish-Cache:
119
- - '0'
120
- X-Vserver:
121
- - dfvimeowebproxy2
122
- Fastly-Debug-Digest:
123
- - 3702aaafc8fce1a3bfac9e8d1e1644df6949cd53e32cfec002615540e9fa3e5e
124
- Content-Length:
125
- - '16714'
126
- Accept-Ranges:
127
- - bytes
128
- Date:
129
- - Mon, 27 Mar 2017 21:00:51 GMT
130
- Age:
131
- - '0'
132
- Connection:
133
- - keep-alive
134
- X-Served-By:
135
- - cache-iad2140-IAD, cache-lax8647-LAX
136
- X-Cache:
137
- - MISS, MISS
138
- X-Cache-Hits:
139
- - 0, 0
140
- X-Timer:
141
- - S1490648451.422835,VS0,VE150
142
- Vary:
143
- - User-Agent,Accept-Encoding
144
- body:
145
- encoding: ASCII-8BIT
146
- string: !binary |-
147
- PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KIDxoZWFkPgogPG1ldGEgY2hhcnNldD0idXRmLTgiPgoKCiAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCxpbml0aWFsLXNjYWxlPTEuMCxtYXhpbXVtLXNjYWxlPTEuMCx1c2VyLXNjYWxhYmxlPW5vIj4KIAo8bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Ii8vcGxheWVyLnZpbWVvLmNvbSI+CjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iLy9pLnZpbWVvY2RuLmNvbSI+CjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iLy9mLnZpbWVvY2RuLmNvbSI+CjxtZXRhIHByb3BlcnR5PSJmYjphcHBfaWQiIGNvbnRlbnQ9IjE5ODg0MDI4OTYzIj4KCgogIDxtZXRhIG5hbWU9InJvYm90cyIgY29udGVudD0ibm9pbmRleCwgbm9mb2xsb3ciPgoKIDxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJKb2luIHRoZSB3ZWLigJlzIG1vc3Qgc3VwcG9ydGl2ZSBjb21tdW5pdHkgb2YgY3JlYXRvcnMgYW5kIGdldCBoaWdoLXF1YWxpdHkgdG9vbHMgZm9yIGhvc3RpbmcsIHNoYXJpbmcsIGFuZCBzdHJlYW1pbmcgdmlkZW9zIGluIGdvcmdlb3VzIEhEIHdpdGggbm8gYWRzLiI+CgoKCiA8bGluayByZWw9ImNhbm9uaWNhbCIgaHJlZj0iLzc0NjM2NTYyIj4KCiA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24tcHJlY29tcG9zZWQiIGhyZWY9Imh0dHBzOi8vaS52aW1lb2Nkbi5jb20vZmF2aWNvbi9tYWluLXRvdWNoXzE4MCI+Cgo8bGluayByZWw9Im1hc2staWNvbiIgaHJlZj0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9zdmcvbGVnYWN5X3ZpZXdfc3VwcG9ydC9pcmlzX2ljb25fdl82NC5zdmciIGNvbG9yPSIjMTcyNzJlIj4KPGxpbmsgcmVsPSJzaG9ydGN1dCBpY29uIiBocmVmPSJodHRwczovL2YudmltZW9jZG4uY29tL2ltYWdlc192Ni9mYXZpY29uLmljbyIgZGF0YS1wbGF5PSJodHRwczovL2kudmltZW9jZG4uY29tL2Zhdmljb24vcGxheV8zMiIgZGF0YS1wYXVzZT0iaHR0cHM6Ly9pLnZpbWVvY2RuLmNvbS9mYXZpY29uL3BhdXNlXzMyIj4KCjxtZXRhIG5hbWU9Im1zYXBwbGljYXRpb24tVGlsZUltYWdlIiBjb250ZW50PSJodHRwczovL2kudmltZW9jZG4uY29tL2Zhdmljb24vbWFpbi10b3VjaF8xNDQiPgo8bWV0YSBuYW1lPSJtc2FwcGxpY2F0aW9uLVRpbGVDb2xvciIgY29udGVudD0iIzAwYWRlZiI+Cgo8bGluayByZWw9InNlYXJjaCIgdHlwZT0iYXBwbGljYXRpb24vb3BlbnNlYXJjaGRlc2NyaXB0aW9uK3htbCIgaHJlZj0iL3NlYXJjaC9vcGVuc2VhcmNoLnhtbCIgdGl0bGU9IlZpbWVvIHNlYXJjaCI+CjxsaW5rIHJlbD0ibG9nbyIgdHlwZT0iaW1hZ2Uvc3ZnIiBocmVmPSJodHRwczovL2YudmltZW9jZG4uY29tL2xvZ28uc3ZnIj4KIDx0aXRsZT5Qcml2YXRlIHZpZGVvIG9uIFZpbWVvPC90aXRsZT4KICAgCiAgIAogCiAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9zdHlsZXMvY3NzX29wdC9nbG9iYWwvaWNvbl9mb250cy5taW4uY3NzP0RFViI+CgogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2YudmltZW9jZG4uY29tL3N0eWxlcy9jc3Nfb3B0L2dsb2JhbF9tYWluX2NvbWJpbmVkLm1pbi5jc3M/YmQwODk5ZGYiPgogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2YudmltZW9jZG4uY29tL3N0eWxlcy9jc3Nfb3B0L2dsb2JhbF9jb21iaW5lZC5taW4uY3NzP2I3M2NjNTU1Ij4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9zdHlsZXMvY3NzX29wdC9tb2Rlcm4vaXJpcy9wYWdlcy9leGNlcHRpb24vZXhjZXB0aW9uLm1pbi5jc3M/ZDljNTFjMDEiPgoKCgogPHNjcmlwdD4KICAKICB2YXIgcGxheWVyQXNzZXRVcmxzID0geyJqcyI6Imh0dHBzOlwvXC9mLnZpbWVvY2RuLmNvbVwvcFwvMi41My4xMFwvanNcL3BsYXllci5qcyIsIm1vb2ciOiJodHRwczpcL1wvZi52aW1lb2Nkbi5jb21cL3BcL2ZsYXNoXC9tb29nYWxvb3BcLzYuNC41XC9tb29nYWxvb3Auc3dmIiwiY2hyb21lbGVzc19jc3MiOiJodHRwczpcL1wvZi52aW1lb2Nkbi5jb21cL3BcLzIuNTMuMTBcL2Nzc1wvY2hyb21lbGVzcy5jc3MiLCJjaHJvbWVsZXNzX2pzIjoiaHR0cHM6XC9cL2YudmltZW9jZG4uY29tXC9wXC8yLjUzLjEwXC9qc1wvY2hyb21lbGVzcy5qcyIsIm1vb2dfanMiOiJodHRwczpcL1wvZi52aW1lb2Nkbi5jb21cL3BcLzIuNTMuMTBcL2pzXC9tb29nYWxvb3AuanMiLCJjc3MiOiJodHRwczpcL1wvZi52aW1lb2Nkbi5jb21cL3BcLzIuNTMuMTBcL2Nzc1wvcGxheWVyLmNzcyIsInBsYXllcl91cmwiOiJwbGF5ZXIudmltZW8uY29tIn07CgogIHZhciBfZXh0ZW5kID0gZnVuY3Rpb24oKXtmb3IodmFyIHI9YXJndW1lbnRzWzBdLG49MSxlPWFyZ3VtZW50cy5sZW5ndGg7ZT5uO24rKyl7dmFyIHQ9YXJndW1lbnRzW25dO2Zvcih2YXIgYSBpbiB0KXQuaGFzT3duUHJvcGVydHkoYSkmJihyW2FdPXRbYV0pfXJldHVybiByfTsKCiAgd2luZG93ID0gX2V4dGVuZCh3aW5kb3csIHsidmltZW9fZXNpIjp7ImNvbmZpZyI6eyJhdXRvY29tcGxldGVfZW5hYmxlZCI6dHJ1ZX19LCJnbG9iYWxfbm90aWZpY2F0aW9ucyI6W119KTsKPC9zY3JpcHQ+CgogPHN0eWxlIGlkPSJlc2lfcmliYm9uIj4KIC5lc2lfcmliYm9uIHsKIGJhY2tncm91bmQ6IHVybChkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0NzdmclMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUyMHdpZHRoJTNEJTIyNTAwJTIyJTNFJTNDcmVjdCUyMHglM0QlMjIwJTIyJTIwd2lkdGglM0QlMjIxNiUyMiUyMGhlaWdodCUzRCUyMjEwMCUyNSUyMiUyMHN0eWxlJTNEJTIyZmlsbCUzQSUyMzI4YTFkOCUyMiUyRiUzRSUzQ3JlY3QlMjB4JTNEJTIyMTYlMjIlMjB3aWR0aCUzRCUyMjI3JTIyJTIwaGVpZ2h0JTNEJTIyMTAwJTI1JTIyJTIwc3R5bGUlM0QlMjJmaWxsJTNBJTIzMjQ4YmM3JTIyJTJGJTNFJTNDcmVjdCUyMHglM0QlMjI0MyUyMiUyMHdpZHRoJTNEJTIyNSUyMiUyMGhlaWdodCUzRCUyMjEwMCUyNSUyMiUyMHN0eWxlJTNEJTIyZmlsbCUzQSUyMzFlMzk1NSUyMiUyRiUzRSUzQ3JlY3QlMjB4JTNEJTIyNDglMjIlMjB3aWR0aCUzRCUyMjUwJTIyJTIwaGVpZ2h0JTNEJTIyMTAwJTI1JTIyJTIwc3R5bGUlM0QlMjJmaWxsJTNBJTIzMmY1MTMyJTIyJTJGJTNFJTNDcmVjdCUyMHglM0QlMjI5OCUyMiUyMHdpZHRoJTNEJTIyMjQlMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjM0MTY4MjglMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjEyMiUyMiUyMHdpZHRoJTNEJTIyNDclMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjM3ZWFhMjklMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjE2OSUyMiUyMHdpZHRoJTNEJTIyMjElMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjNkY2JkNDIlMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjE5MCUyMiUyMHdpZHRoJTNEJTIyMyUyMiUyMGhlaWdodCUzRCUyMjEwMCUyNSUyMiUyMHN0eWxlJTNEJTIyZmlsbCUzQSUyM2RjYWQyNyUyMiUyRiUzRSUzQ3JlY3QlMjB4JTNEJTIyMTkzJTIyJTIwd2lkdGglM0QlMjI2MyUyMiUyMGhlaWdodCUzRCUyMjEwMCUyNSUyMiUyMHN0eWxlJTNEJTIyZmlsbCUzQSUyM2UzOWEyMyUyMiUyRiUzRSUzQ3JlY3QlMjB4JTNEJTIyMjU2JTIyJTIwd2lkdGglM0QlMjI0NSUyMiUyMGhlaWdodCUzRCUyMjEwMCUyNSUyMiUyMHN0eWxlJTNEJTIyZmlsbCUzQSUyM2NjNTU0YyUyMiUyRiUzRSUzQ3JlY3QlMjB4JTNEJTIyMzAxJTIyJTIwd2lkdGglM0QlMjI0OCUyMiUyMGhlaWdodCUzRCUyMjEwMCUyNSUyMiUyMHN0eWxlJTNEJTIyZmlsbCUzQSUyM2NhNDczZiUyMiUyRiUzRSUzQ3JlY3QlMjB4JTNEJTIyMzQ5JTIyJTIwd2lkdGglM0QlMjIyNCUyMiUyMGhlaWdodCUzRCUyMjEwMCUyNSUyMiUyMHN0eWxlJTNEJTIyZmlsbCUzQSUyM2E3MjgzNCUyMiUyRiUzRSUzQ3JlY3QlMjB4JTNEJTIyMzczJTIyJTIwd2lkdGglM0QlMjIxNCUyMiUyMGhlaWdodCUzRCUyMjEwMCUyNSUyMiUyMHN0eWxlJTNEJTIyZmlsbCUzQSUyMzczNTY3NSUyMiUyRiUzRSUzQ3JlY3QlMjB4JTNEJTIyMzg3JTIyJTIwd2lkdGglM0QlMjI2MCUyMiUyMGhlaWdodCUzRCUyMjEwMCUyNSUyMiUyMHN0eWxlJTNEJTIyZmlsbCUzQSUyMzY1M2U2NiUyMiUyRiUzRSUzQ3JlY3QlMjB4JTNEJTIyNDQ3JTIyJTIwd2lkdGglM0QlMjI1MyUyMiUyMGhlaWdodCUzRCUyMjEwMCUyNSUyMiUyMHN0eWxlJTNEJTIyZmlsbCUzQSUyMzNiMzE1YiUyMiUyRiUzRSUzQyUyRnN2ZyUzRSUwQSkgdG9wIGxlZnQvNTAwcHggMTAwJSByZXBlYXQteCAhaW1wb3J0YW50OwogfQogPC9zdHlsZT4KIAogPHNjcmlwdD4KIHZhciBhYmxpbmNvbG5fY29uZmlnID0gYWJsaW5jb2xuX2NvbmZpZyB8fCB7fTsKIGFibGluY29sbl9jb25maWcudGVzdHMgPSB7IkRGUEFkQ29ob3J0cyI6eyJpZCI6NjksIm5hbWUiOiJERlBBZENvaG9ydHMiLCJidWNrZXRzIjoxMDAwLCJpbnB1dCI6InZ1aWQiLCJ1cmwiOm51bGwsImV4cGVyaW1lbnRzIjpbXX0sIkV4cGxvcmUiOnsiaWQiOjY0LCJuYW1lIjoiRXhwbG9yZSIsImJ1Y2tldHMiOjEwMDAsImlucHV0IjoidnVpZCIsInVybCI6IlwvIiwiZXhwZXJpbWVudHMiOltdfSwiVG9wTmF2QUIiOnsiaWQiOjY3LCJuYW1lIjoiVG9wTmF2QUIiLCJidWNrZXRzIjoxMDAwLCJpbnB1dCI6InZ1aWQiLCJ1cmwiOiJcLyIsImV4cGVyaW1lbnRzIjpbXX0sIlRvcE5hdkNvcHlUZXN0Ijp7ImlkIjo3NywibmFtZSI6IlRvcE5hdkNvcHlUZXN0IiwiYnVja2V0cyI6MTAwMCwiaW5wdXQiOiJ2dWlkIiwidXJsIjoiXC9hYm91dCIsImV4cGVyaW1lbnRzIjpbXX0sIlRvcE5hdi5Ib3N0VmlkZW9zTGluayI6eyJpZCI6MTAzLCJuYW1lIjoiVG9wTmF2Lkhvc3RWaWRlb3NMaW5rIiwiYnVja2V0cyI6MTAwMCwiaW5wdXQiOiJ2dWlkIiwidXJsIjpudWxsLCJleHBlcmltZW50cyI6W119fTsKIDwvc2NyaXB0PgoKCiA8c2NyaXB0Pgp3aW5kb3cuTlJFVU18fChOUkVVTT17fSksX19ucl9yZXF1aXJlPWZ1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKG4pe2lmKCFlW25dKXt2YXIgbz1lW25dPXtleHBvcnRzOnt9fTt0W25dWzBdLmNhbGwoby5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBvPXRbbl1bMV1bZV07cmV0dXJuIHIobz9vOmUpfSxvLG8uZXhwb3J0cyl9cmV0dXJuIGVbbl0uZXhwb3J0c31pZigiZnVuY3Rpb24iPT10eXBlb2YgX19ucl9yZXF1aXJlKXJldHVybiBfX25yX3JlcXVpcmU7Zm9yKHZhciBvPTA7bzxuLmxlbmd0aDtvKyspcihuW29dKTtyZXR1cm4gcn0oe1FKZjNheDpbZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQpe2Z1bmN0aW9uIGUoZSxuLGEpe3QmJnQoZSxuLGEpLGF8fChhPXt9KTtmb3IodmFyIGM9cyhlKSxmPWMubGVuZ3RoLHU9aShhLG8sciksZD0wO2Y+ZDtkKyspY1tkXS5hcHBseSh1LG4pO3JldHVybiB1fWZ1bmN0aW9uIGEodCxlKXtmW3RdPXModCkuY29uY2F0KGUpfWZ1bmN0aW9uIHModCl7cmV0dXJuIGZbdF18fFtdfWZ1bmN0aW9uIGMoKXtyZXR1cm4gbihlKX12YXIgZj17fTtyZXR1cm57b246YSxlbWl0OmUsY3JlYXRlOmMsbGlzdGVuZXJzOnMsX2V2ZW50czpmfX1mdW5jdGlvbiByKCl7cmV0dXJue319dmFyIG89Im5yQGNvbnRleHQiLGk9dCgiZ29zIik7ZS5leHBvcnRzPW4oKX0se2dvczoiN2VTREZoIn1dLGVlOltmdW5jdGlvbih0LGUpe2UuZXhwb3J0cz10KCJRSmYzYXgiKX0se31dLDM6W2Z1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCxlLG4saSxzKXt0cnl7Yz9jLT0xOnIoImVyciIsW3N8fG5ldyBVbmNhdWdodEV4Y2VwdGlvbih0LGUsbildKX1jYXRjaChmKXt0cnl7cigiaWVyciIsW2YsKG5ldyBEYXRlKS5nZXRUaW1lKCksITBdKX1jYXRjaCh1KXt9fXJldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBhP2EuYXBwbHkodGhpcyxvKGFyZ3VtZW50cykpOiExfWZ1bmN0aW9uIFVuY2F1Z2h0RXhjZXB0aW9uKHQsZSxuKXt0aGlzLm1lc3NhZ2U9dHx8IlVuY2F1Z2h0IGVycm9yIHdpdGggbm8gYWRkaXRpb25hbCBpbmZvcm1hdGlvbiIsdGhpcy5zb3VyY2VVUkw9ZSx0aGlzLmxpbmU9bn1mdW5jdGlvbiBuKHQpe3IoImVyciIsW3QsKG5ldyBEYXRlKS5nZXRUaW1lKCldKX12YXIgcj10KCJoYW5kbGUiKSxvPXQoNSksaT10KCJlZSIpLGE9d2luZG93Lm9uZXJyb3Iscz0hMSxjPTA7dCgibG9hZGVyIikuZmVhdHVyZXMuZXJyPSEwLHdpbmRvdy5vbmVycm9yPWUsTlJFVU0ubm90aWNlRXJyb3I9bjt0cnl7dGhyb3cgbmV3IEVycm9yfWNhdGNoKGYpeyJzdGFjayJpbiBmJiYodCgxKSx0KDQpLCJhZGRFdmVudExpc3RlbmVyImluIHdpbmRvdyYmdCgyKSx3aW5kb3cuWE1MSHR0cFJlcXVlc3QmJlhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZSYmWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXImJnQoMykscz0hMCl9aS5vbigiZm4tc3RhcnQiLGZ1bmN0aW9uKCl7cyYmKGMrPTEpfSksaS5vbigiZm4tZXJyIixmdW5jdGlvbih0LGUscil7cyYmKHRoaXMudGhyb3duPSEwLG4ocikpfSksaS5vbigiZm4tZW5kIixmdW5jdGlvbigpe3MmJiF0aGlzLnRocm93biYmYz4wJiYoYy09MSl9KSxpLm9uKCJpbnRlcm5hbC1lcnJvciIsZnVuY3Rpb24odCl7cigiaWVyciIsW3QsKG5ldyBEYXRlKS5nZXRUaW1lKCksITBdKX0pfSx7MTo4LDI6NSwzOjksNDo3LDU6MjAsZWU6IlFKZjNheCIsaGFuZGxlOiJENUR1TFAiLGxvYWRlcjoiRzl6MEJsIn1dLDQ6W2Z1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt9aWYod2luZG93LnBlcmZvcm1hbmNlJiZ3aW5kb3cucGVyZm9ybWFuY2UudGltaW5nJiZ3aW5kb3cucGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZSl7dmFyIG49dCgiZWUiKSxyPXQoImhhbmRsZSIpLG89dCgyKTt0KCJsb2FkZXIiKS5mZWF0dXJlcy5zdG49ITAsdCgxKSxuLm9uKCJmbi1zdGFydCIsZnVuY3Rpb24odCl7dmFyIGU9dFswXTtlIGluc3RhbmNlb2YgRXZlbnQmJih0aGlzLmJzdFN0YXJ0PURhdGUubm93KCkpfSksbi5vbigiZm4tZW5kIixmdW5jdGlvbih0LGUpe3ZhciBuPXRbMF07biBpbnN0YW5jZW9mIEV2ZW50JiZyKCJic3QiLFtuLGUsdGhpcy5ic3RTdGFydCxEYXRlLm5vdygpXSl9KSxvLm9uKCJmbi1zdGFydCIsZnVuY3Rpb24odCxlLG4pe3RoaXMuYnN0U3RhcnQ9RGF0ZS5ub3coKSx0aGlzLmJzdFR5cGU9bn0pLG8ub24oImZuLWVuZCIsZnVuY3Rpb24odCxlKXtyKCJic3RUaW1lciIsW2UsdGhpcy5ic3RTdGFydCxEYXRlLm5vdygpLHRoaXMuYnN0VHlwZV0pfSksbi5vbigicHVzaFN0YXRlLXN0YXJ0IixmdW5jdGlvbigpe3RoaXMudGltZT1EYXRlLm5vdygpLHRoaXMuc3RhcnRQYXRoPWxvY2F0aW9uLnBhdGhuYW1lK2xvY2F0aW9uLmhhc2h9KSxuLm9uKCJwdXNoU3RhdGUtZW5kIixmdW5jdGlvbigpe3IoImJzdEhpc3QiLFtsb2NhdGlvbi5wYXRobmFtZStsb2NhdGlvbi5oYXNoLHRoaXMuc3RhcnRQYXRoLHRoaXMudGltZV0pfSksImFkZEV2ZW50TGlzdGVuZXIiaW4gd2luZG93LnBlcmZvcm1hbmNlJiYod2luZG93LnBlcmZvcm1hbmNlLmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdHJlc291cmNldGltaW5nYnVmZmVyZnVsbCIsZnVuY3Rpb24oKXtyKCJic3RSZXNvdXJjZSIsW3dpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKCJyZXNvdXJjZSIpXSksd2luZG93LnBlcmZvcm1hbmNlLndlYmtpdENsZWFyUmVzb3VyY2VUaW1pbmdzKCl9LCExKSx3aW5kb3cucGVyZm9ybWFuY2UuYWRkRXZlbnRMaXN0ZW5lcigicmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsIixmdW5jdGlvbigpe3IoImJzdFJlc291cmNlIixbd2luZG93LnBlcmZvcm1hbmNlLmdldEVudHJpZXNCeVR5cGUoInJlc291cmNlIildKSx3aW5kb3cucGVyZm9ybWFuY2UuY2xlYXJSZXNvdXJjZVRpbWluZ3MoKX0sITEpKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLGUsITEpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleXByZXNzIixlLCExKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZSwhMSl9fSx7MTo2LDI6OCxlZToiUUpmM2F4IixoYW5kbGU6IkQ1RHVMUCIsbG9hZGVyOiJHOXowQmwifV0sNTpbZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQpe2kuaW5QbGFjZSh0LFsiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiXSwiLSIscil9ZnVuY3Rpb24gcih0KXtyZXR1cm4gdFsxXX12YXIgbz0odCgxKSx0KCJlZSIpLmNyZWF0ZSgpKSxpPXQoMikobyksYT10KCJnb3MiKTtpZihlLmV4cG9ydHM9byxuKHdpbmRvdyksImdldFByb3RvdHlwZU9mImluIE9iamVjdCl7Zm9yKHZhciBzPWRvY3VtZW50O3MmJiFzLmhhc093blByb3BlcnR5KCJhZGRFdmVudExpc3RlbmVyIik7KXM9T2JqZWN0LmdldFByb3RvdHlwZU9mKHMpO3MmJm4ocyk7Zm9yKHZhciBjPVhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZTtjJiYhYy5oYXNPd25Qcm9wZXJ0eSgiYWRkRXZlbnRMaXN0ZW5lciIpOyljPU9iamVjdC5nZXRQcm90b3R5cGVPZihjKTtjJiZuKGMpfWVsc2UgWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLmhhc093blByb3BlcnR5KCJhZGRFdmVudExpc3RlbmVyIikmJm4oWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlKTtvLm9uKCJhZGRFdmVudExpc3RlbmVyLXN0YXJ0IixmdW5jdGlvbih0KXtpZih0WzFdKXt2YXIgZT10WzFdOyJmdW5jdGlvbiI9PXR5cGVvZiBlP3RoaXMud3JhcHBlZD10WzFdPWEoZSwibnJAd3JhcHBlZCIsZnVuY3Rpb24oKXtyZXR1cm4gaShlLCJmbi0iLG51bGwsZS5uYW1lfHwiYW5vbnltb3VzIil9KToiZnVuY3Rpb24iPT10eXBlb2YgZS5oYW5kbGVFdmVudCYmaS5pblBsYWNlKGUsWyJoYW5kbGVFdmVudCJdLCJmbi0iKX19KSxvLm9uKCJyZW1vdmVFdmVudExpc3RlbmVyLXN0YXJ0IixmdW5jdGlvbih0KXt2YXIgZT10aGlzLndyYXBwZWQ7ZSYmKHRbMV09ZSl9KX0sezE6MjAsMjoyMSxlZToiUUpmM2F4Iixnb3M6IjdlU0RGaCJ9XSw2OltmdW5jdGlvbih0LGUpe3ZhciBuPSh0KDIpLHQoImVlIikuY3JlYXRlKCkpLHI9dCgxKShuKTtlLmV4cG9ydHM9bixyLmluUGxhY2Uod2luZG93Lmhpc3RvcnksWyJwdXNoU3RhdGUiXSwiLSIpfSx7MToyMSwyOjIwLGVlOiJRSmYzYXgifV0sNzpbZnVuY3Rpb24odCxlKXt2YXIgbj0odCgyKSx0KCJlZSIpLmNyZWF0ZSgpKSxyPXQoMSkobik7ZS5leHBvcnRzPW4sci5pblBsYWNlKHdpbmRvdyxbInJlcXVlc3RBbmltYXRpb25GcmFtZSIsIm1velJlcXVlc3RBbmltYXRpb25GcmFtZSIsIndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZSIsIm1zUmVxdWVzdEFuaW1hdGlvbkZyYW1lIl0sInJhZi0iKSxuLm9uKCJyYWYtc3RhcnQiLGZ1bmN0aW9uKHQpe3RbMF09cih0WzBdLCJmbi0iKX0pfSx7MToyMSwyOjIwLGVlOiJRSmYzYXgifV0sODpbZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQsZSxuKXt2YXIgcj10WzBdOyJzdHJpbmciPT10eXBlb2YgciYmKHI9bmV3IEZ1bmN0aW9uKHIpKSx0WzBdPW8ociwiZm4tIixudWxsLG4pfXZhciByPSh0KDIpLHQoImVlIikuY3JlYXRlKCkpLG89dCgxKShyKTtlLmV4cG9ydHM9cixvLmluUGxhY2Uod2luZG93LFsic2V0VGltZW91dCIsInNldEludGVydmFsIiwic2V0SW1tZWRpYXRlIl0sInNldFRpbWVyLSIpLHIub24oInNldFRpbWVyLXN0YXJ0IixuKX0sezE6MjEsMjoyMCxlZToiUUpmM2F4In1dLDk6W2Z1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbigpe2MuaW5QbGFjZSh0aGlzLGQsImZuLSIpfWZ1bmN0aW9uIHIodCxlKXtjLmluUGxhY2UoZSxbIm9ucmVhZHlzdGF0ZWNoYW5nZSJdLCJmbi0iKX1mdW5jdGlvbiBvKHQsZSl7cmV0dXJuIGV9dmFyIGk9dCgiZWUiKS5jcmVhdGUoKSxhPXQoMSkscz10KDIpLGM9cyhpKSxmPXMoYSksdT13aW5kb3cuWE1MSHR0cFJlcXVlc3QsZD1bIm9ubG9hZCIsIm9uZXJyb3IiLCJvbmFib3J0Iiwib25sb2Fkc3RhcnQiLCJvbmxvYWRlbmQiLCJvbnByb2dyZXNzIiwib250aW1lb3V0Il07ZS5leHBvcnRzPWksd2luZG93LlhNTEh0dHBSZXF1ZXN0PWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyB1KHQpO3RyeXtpLmVtaXQoIm5ldy14aHIiLFtdLGUpLGYuaW5QbGFjZShlLFsiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiXSwiLSIsZnVuY3Rpb24odCxlKXtyZXR1cm4gZX0pLGUuYWRkRXZlbnRMaXN0ZW5lcigicmVhZHlzdGF0ZWNoYW5nZSIsbiwhMSl9Y2F0Y2gocil7dHJ5e2kuZW1pdCgiaW50ZXJuYWwtZXJyb3IiLFtyXSl9Y2F0Y2gobyl7fX1yZXR1cm4gZX0sd2luZG93LlhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZT11LnByb3RvdHlwZSxjLmluUGxhY2UoWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLFsib3BlbiIsInNlbmQiXSwiLXhoci0iLG8pLGkub24oInNlbmQteGhyLXN0YXJ0IixyKSxpLm9uKCJvcGVuLXhoci1zdGFydCIscil9LHsxOjUsMjoyMSxlZToiUUpmM2F4In1dLDEwOltmdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdCYmdC5sZW5ndGgpcmV0dXJuIHQubGVuZ3RoO2lmKCJvYmplY3QiIT10eXBlb2YgdClyZXR1cm4gdm9pZCAwO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJnQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmdC5ieXRlTGVuZ3RoKXJldHVybiB0LmJ5dGVMZW5ndGg7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBCbG9iJiZ0IGluc3RhbmNlb2YgQmxvYiYmdC5zaXplKXJldHVybiB0LnNpemU7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBGb3JtRGF0YSYmdCBpbnN0YW5jZW9mIEZvcm1EYXRhKXJldHVybiB2b2lkIDA7dHJ5e3JldHVybiBKU09OLnN0cmluZ2lmeSh0KS5sZW5ndGh9Y2F0Y2goZSl7cmV0dXJuIHZvaWQgMH19ZnVuY3Rpb24gbih0KXt2YXIgbj10aGlzLnBhcmFtcyxyPXRoaXMubWV0cmljcztpZighdGhpcy5lbmRlZCl7dGhpcy5lbmRlZD0hMDtmb3IodmFyIGk9MDtjPmk7aSsrKXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihzW2ldLHRoaXMubGlzdGVuZXIsITEpO2lmKCFuLmFib3J0ZWQpe2lmKHIuZHVyYXRpb249KG5ldyBEYXRlKS5nZXRUaW1lKCktdGhpcy5zdGFydFRpbWUsND09PXQucmVhZHlTdGF0ZSl7bi5zdGF0dXM9dC5zdGF0dXM7dmFyIGE9dC5yZXNwb25zZVR5cGUsZj0iYXJyYXlidWZmZXIiPT09YXx8ImJsb2IiPT09YXx8Impzb24iPT09YT90LnJlc3BvbnNlOnQucmVzcG9uc2VUZXh0LHU9ZShmKTtpZih1JiYoci5yeFNpemU9dSksdGhpcy5zYW1lT3JpZ2luKXt2YXIgZD10LmdldFJlc3BvbnNlSGVhZGVyKCJYLU5ld1JlbGljLUFwcC1EYXRhIik7ZCYmKG4uY2F0PWQuc3BsaXQoIiwgIikucG9wKCkpfX1lbHNlIG4uc3RhdHVzPTA7ci5jYlRpbWU9dGhpcy5jYlRpbWUsbygieGhyIixbbixyLHRoaXMuc3RhcnRUaW1lXSl9fX1mdW5jdGlvbiByKHQsZSl7dmFyIG49aShlKSxyPXQucGFyYW1zO3IuaG9zdD1uLmhvc3RuYW1lKyI6IituLnBvcnQsci5wYXRobmFtZT1uLnBhdGhuYW1lLHQuc2FtZU9yaWdpbj1uLnNhbWVPcmlnaW59aWYod2luZG93LlhNTEh0dHBSZXF1ZXN0JiZYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUmJlhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyJiYhL0NyaU9TLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpKXt0KCJsb2FkZXIiKS5mZWF0dXJlcy54aHI9ITA7dmFyIG89dCgiaGFuZGxlIiksaT10KDIpLGE9dCgiZWUiKSxzPVsibG9hZCIsImVycm9yIiwiYWJvcnQiLCJ0aW1lb3V0Il0sYz1zLmxlbmd0aCxmPXQoMSk7dCg0KSx0KDMpLGEub24oIm5ldy14aHIiLGZ1bmN0aW9uKCl7dGhpcy50b3RhbENicz0wLHRoaXMuY2FsbGVkPTAsdGhpcy5jYlRpbWU9MCx0aGlzLmVuZD1uLHRoaXMuZW5kZWQ9ITEsdGhpcy54aHJHdWlkcz17fX0pLGEub24oIm9wZW4teGhyLXN0YXJ0IixmdW5jdGlvbih0KXt0aGlzLnBhcmFtcz17bWV0aG9kOnRbMF19LHIodGhpcyx0WzFdKSx0aGlzLm1ldHJpY3M9e319KSxhLm9uKCJvcGVuLXhoci1lbmQiLGZ1bmN0aW9uKHQsZSl7ImxvYWRlcl9jb25maWciaW4gTlJFVU0mJiJ4cGlkImluIE5SRVVNLmxvYWRlcl9jb25maWcmJnRoaXMuc2FtZU9yaWdpbiYmZS5zZXRSZXF1ZXN0SGVhZGVyKCJYLU5ld1JlbGljLUlEIixOUkVVTS5sb2FkZXJfY29uZmlnLnhwaWQpfSksYS5vbigic2VuZC14aHItc3RhcnQiLGZ1bmN0aW9uKHQsbil7dmFyIHI9dGhpcy5tZXRyaWNzLG89dFswXSxpPXRoaXM7aWYociYmbyl7dmFyIGY9ZShvKTtmJiYoci50eFNpemU9Zil9dGhpcy5zdGFydFRpbWU9KG5ldyBEYXRlKS5nZXRUaW1lKCksdGhpcy5saXN0ZW5lcj1mdW5jdGlvbih0KXt0cnl7ImFib3J0Ij09PXQudHlwZSYmKGkucGFyYW1zLmFib3J0ZWQ9ITApLCgibG9hZCIhPT10LnR5cGV8fGkuY2FsbGVkPT09aS50b3RhbENicyYmKGkub25sb2FkQ2FsbGVkfHwiZnVuY3Rpb24iIT10eXBlb2Ygbi5vbmxvYWQpKSYmaS5lbmQobil9Y2F0Y2goZSl7dHJ5e2EuZW1pdCgiaW50ZXJuYWwtZXJyb3IiLFtlXSl9Y2F0Y2gocil7fX19O2Zvcih2YXIgdT0wO2M+dTt1Kyspbi5hZGRFdmVudExpc3RlbmVyKHNbdV0sdGhpcy5saXN0ZW5lciwhMSl9KSxhLm9uKCJ4aHItY2ItdGltZSIsZnVuY3Rpb24odCxlLG4pe3RoaXMuY2JUaW1lKz10LGU/dGhpcy5vbmxvYWRDYWxsZWQ9ITA6dGhpcy5jYWxsZWQrPTEsdGhpcy5jYWxsZWQhPT10aGlzLnRvdGFsQ2JzfHwhdGhpcy5vbmxvYWRDYWxsZWQmJiJmdW5jdGlvbiI9PXR5cGVvZiBuLm9ubG9hZHx8dGhpcy5lbmQobil9KSxhLm9uKCJ4aHItbG9hZC1hZGRlZCIsZnVuY3Rpb24odCxlKXt2YXIgbj0iIitmKHQpKyEhZTt0aGlzLnhockd1aWRzJiYhdGhpcy54aHJHdWlkc1tuXSYmKHRoaXMueGhyR3VpZHNbbl09ITAsdGhpcy50b3RhbENicys9MSl9KSxhLm9uKCJ4aHItbG9hZC1yZW1vdmVkIixmdW5jdGlvbih0LGUpe3ZhciBuPSIiK2YodCkrISFlO3RoaXMueGhyR3VpZHMmJnRoaXMueGhyR3VpZHNbbl0mJihkZWxldGUgdGhpcy54aHJHdWlkc1tuXSx0aGlzLnRvdGFsQ2JzLT0xKX0pLGEub24oImFkZEV2ZW50TGlzdGVuZXItZW5kIixmdW5jdGlvbih0LGUpe2UgaW5zdGFuY2VvZiBYTUxIdHRwUmVxdWVzdCYmImxvYWQiPT09dFswXSYmYS5lbWl0KCJ4aHItbG9hZC1hZGRlZCIsW3RbMV0sdFsyXV0sZSl9KSxhLm9uKCJyZW1vdmVFdmVudExpc3RlbmVyLWVuZCIsZnVuY3Rpb24odCxlKXtlIGluc3RhbmNlb2YgWE1MSHR0cFJlcXVlc3QmJiJsb2FkIj09PXRbMF0mJmEuZW1pdCgieGhyLWxvYWQtcmVtb3ZlZCIsW3RbMV0sdFsyXV0sZSl9KSxhLm9uKCJmbi1zdGFydCIsZnVuY3Rpb24odCxlLG4pe2UgaW5zdGFuY2VvZiBYTUxIdHRwUmVxdWVzdCYmKCJvbmxvYWQiPT09biYmKHRoaXMub25sb2FkPSEwKSwoImxvYWQiPT09KHRbMF0mJnRbMF0udHlwZSl8fHRoaXMub25sb2FkKSYmKHRoaXMueGhyQ2JTdGFydD0obmV3IERhdGUpLmdldFRpbWUoKSkpfSksYS5vbigiZm4tZW5kIixmdW5jdGlvbih0LGUpe3RoaXMueGhyQ2JTdGFydCYmYS5lbWl0KCJ4aHItY2ItdGltZSIsWyhuZXcgRGF0ZSkuZ2V0VGltZSgpLXRoaXMueGhyQ2JTdGFydCx0aGlzLm9ubG9hZCxlXSxlKX0pfX0sezE6IlhMN0hCSSIsMjoxMSwzOjksNDo1LGVlOiJRSmYzYXgiLGhhbmRsZToiRDVEdUxQIixsb2FkZXI6Ikc5ejBCbCJ9XSwxMTpbZnVuY3Rpb24odCxlKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpLG49d2luZG93LmxvY2F0aW9uLHI9e307ZS5ocmVmPXQsci5wb3J0PWUucG9ydDt2YXIgbz1lLmhyZWYuc3BsaXQoIjovLyIpO3JldHVybiFyLnBvcnQmJm9bMV0mJihyLnBvcnQ9b1sxXS5zcGxpdCgiLyIpWzBdLnNwbGl0KCI6IilbMV0pLHIucG9ydCYmIjAiIT09ci5wb3J0fHwoci5wb3J0PSJodHRwcyI9PT1vWzBdPyI0NDMiOiI4MCIpLHIuaG9zdG5hbWU9ZS5ob3N0bmFtZXx8bi5ob3N0bmFtZSxyLnBhdGhuYW1lPWUucGF0aG5hbWUsIi8iIT09ci5wYXRobmFtZS5jaGFyQXQoMCkmJihyLnBhdGhuYW1lPSIvIityLnBhdGhuYW1lKSxyLnNhbWVPcmlnaW49IWUuaG9zdG5hbWV8fGUuaG9zdG5hbWU9PT1kb2N1bWVudC5kb21haW4mJmUucG9ydD09PW4ucG9ydCYmZS5wcm90b2NvbD09PW4ucHJvdG9jb2wscn19LHt9XSxnb3M6W2Z1bmN0aW9uKHQsZSl7ZS5leHBvcnRzPXQoIjdlU0RGaCIpfSx7fV0sIjdlU0RGaCI6W2Z1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbih0LGUsbil7aWYoci5jYWxsKHQsZSkpcmV0dXJuIHRbZV07dmFyIG89bigpO2lmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSYmT2JqZWN0LmtleXMpdHJ5e3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpvLHdyaXRhYmxlOiEwLGVudW1lcmFibGU6ITF9KSxvfWNhdGNoKGkpe31yZXR1cm4gdFtlXT1vLG99dmFyIHI9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtlLmV4cG9ydHM9bn0se31dLEQ1RHVMUDpbZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQsZSxuKXtyZXR1cm4gci5saXN0ZW5lcnModCkubGVuZ3RoP3IuZW1pdCh0LGUsbik6KG9bdF18fChvW3RdPVtdKSx2b2lkIG9bdF0ucHVzaChlKSl9dmFyIHI9dCgiZWUiKS5jcmVhdGUoKSxvPXt9O2UuZXhwb3J0cz1uLG4uZWU9cixyLnE9b30se2VlOiJRSmYzYXgifV0saGFuZGxlOltmdW5jdGlvbih0LGUpe2UuZXhwb3J0cz10KCJENUR1TFAiKX0se31dLFhMN0hCSTpbZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQpe3ZhciBlPXR5cGVvZiB0O3JldHVybiF0fHwib2JqZWN0IiE9PWUmJiJmdW5jdGlvbiIhPT1lPy0xOnQ9PT13aW5kb3c/MDppKHQsbyxmdW5jdGlvbigpe3JldHVybiByKyt9KX12YXIgcj0xLG89Im5yQGlkIixpPXQoImdvcyIpO2UuZXhwb3J0cz1ufSx7Z29zOiI3ZVNERmgifV0saWQ6W2Z1bmN0aW9uKHQsZSl7ZS5leHBvcnRzPXQoIlhMN0hCSSIpfSx7fV0sbG9hZGVyOltmdW5jdGlvbih0LGUpe2UuZXhwb3J0cz10KCJHOXowQmwiKX0se31dLEc5ejBCbDpbZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKCl7dmFyIHQ9cC5pbmZvPU5SRVVNLmluZm87aWYodCYmdC5hZ2VudCYmdC5saWNlbnNlS2V5JiZ0LmFwcGxpY2F0aW9uSUQmJmMmJmMuYm9keSl7cC5wcm90bz0iaHR0cHMiPT09ZC5zcGxpdCgiOiIpWzBdfHx0LnNzbEZvckh0dHA/Imh0dHBzOi8vIjoiaHR0cDovLyIsYSgibWFyayIsWyJvbmxvYWQiLGkoKV0pO3ZhciBlPWMuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7ZS5zcmM9cC5wcm90byt0LmFnZW50LGMuYm9keS5hcHBlbmRDaGlsZChlKX19ZnVuY3Rpb24gcigpeyJjb21wbGV0ZSI9PT1jLnJlYWR5U3RhdGUmJm8oKX1mdW5jdGlvbiBvKCl7YSgibWFyayIsWyJkb21Db250ZW50IixpKCldKX1mdW5jdGlvbiBpKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCl9dmFyIGE9dCgiaGFuZGxlIikscz13aW5kb3csYz1zLmRvY3VtZW50LGY9ImFkZEV2ZW50TGlzdGVuZXIiLHU9ImF0dGFjaEV2ZW50IixkPSgiIitsb2NhdGlvbikuc3BsaXQoIj8iKVswXSxwPWUuZXhwb3J0cz17b2Zmc2V0OmkoKSxvcmlnaW46ZCxmZWF0dXJlczp7fX07Y1tmXT8oY1tmXSgiRE9NQ29udGVudExvYWRlZCIsbywhMSksc1tmXSgibG9hZCIsbiwhMSkpOihjW3VdKCJvbnJlYWR5c3RhdGVjaGFuZ2UiLHIpLHNbdV0oIm9ubG9hZCIsbikpLGEoIm1hcmsiLFsiZmlyc3RieXRlIixpKCldKX0se2hhbmRsZToiRDVEdUxQIn1dLDIwOltmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4odCxlLG4pe2V8fChlPTApLCJ1bmRlZmluZWQiPT10eXBlb2YgbiYmKG49dD90Lmxlbmd0aDowKTtmb3IodmFyIHI9LTEsbz1uLWV8fDAsaT1BcnJheSgwPm8/MDpvKTsrK3I8bzspaVtyXT10W2Urcl07cmV0dXJuIGl9ZS5leHBvcnRzPW59LHt9XSwyMTpbZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQpe3JldHVybiEodCYmImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuYXBwbHkmJiF0W2ldKX12YXIgcj10KCJlZSIpLG89dCgxKSxpPSJuckB3cmFwcGVyIixhPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCxlLHIsYSl7ZnVuY3Rpb24gbnJXcmFwcGVyKCl7dmFyIG4saSxzLGY7dHJ5e2k9dGhpcyxuPW8oYXJndW1lbnRzKSxzPXImJnIobixpKXx8e319Y2F0Y2goZCl7dShbZCwiIixbbixpLGFdLHNdKX1jKGUrInN0YXJ0IixbbixpLGFdLHMpO3RyeXtyZXR1cm4gZj10LmFwcGx5KGksbil9Y2F0Y2gocCl7dGhyb3cgYyhlKyJlcnIiLFtuLGkscF0scykscH1maW5hbGx5e2MoZSsiZW5kIixbbixpLGZdLHMpfX1yZXR1cm4gbih0KT90OihlfHwoZT0iIiksbnJXcmFwcGVyW2ldPSEwLGYodCxucldyYXBwZXIpLG5yV3JhcHBlcil9ZnVuY3Rpb24gcyh0LHIsbyxpKXtvfHwobz0iIik7dmFyIGEscyxjLGY9Ii0iPT09by5jaGFyQXQoMCk7Zm9yKGM9MDtjPHIubGVuZ3RoO2MrKylzPXJbY10sYT10W3NdLG4oYSl8fCh0W3NdPWUoYSxmP3MrbzpvLGkscyx0KSl9ZnVuY3Rpb24gYyhlLG4scil7dHJ5e3QuZW1pdChlLG4scil9Y2F0Y2gobyl7dShbbyxlLG4scl0pfX1mdW5jdGlvbiBmKHQsZSl7aWYoT2JqZWN0LmRlZmluZVByb3BlcnR5JiZPYmplY3Qua2V5cyl0cnl7dmFyIG49T2JqZWN0LmtleXModCk7cmV0dXJuIG4uZm9yRWFjaChmdW5jdGlvbihuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX0sc2V0OmZ1bmN0aW9uKGUpe3JldHVybiB0W25dPWUsZX19KX0pLGV9Y2F0Y2gocil7dShbcl0pfWZvcih2YXIgbyBpbiB0KWEuY2FsbCh0LG8pJiYoZVtvXT10W29dKTtyZXR1cm4gZX1mdW5jdGlvbiB1KGUpe3RyeXt0LmVtaXQoImludGVybmFsLWVycm9yIixlKX1jYXRjaChuKXt9fXJldHVybiB0fHwodD1yKSxlLmluUGxhY2U9cyxlLmZsYWc9aSxlfX0sezE6MjAsZWU6IlFKZjNheCJ9XX0se30sWyJHOXowQmwiLDMsMTAsNF0pOwo7TlJFVU0uaW5mbz17YmVhY29uOiJiYW0ubnItZGF0YS5uZXQiLGVycm9yQmVhY29uOiJiYW0ubnItZGF0YS5uZXQiLGxpY2Vuc2VLZXk6IjY4OWQ1YjQ1NjIiLGFwcGxpY2F0aW9uSUQ6IjIwMTEyMjQiLHNhOjEsYWdlbnQ6ImpzLWFnZW50Lm5ld3JlbGljLmNvbS9uci00NzYubWluLmpzIn0KPC9zY3JpcHQ+CgogPHNjcmlwdD4KIHZhciBnb29nbGV0YWcgPSBnb29nbGV0YWcgfHwge30sCiBncHRhZHNsb3RzID0gW10sCiBsYW5ndWFnZSwKIGhhc191cGxvYWRlZCwKIGNvaG9ydDsKIGdvb2dsZXRhZy5jbWQgPSBnb29nbGV0YWcuY21kIHx8IFtdOwoKIChmdW5jdGlvbigpIHsKIHZhciBnYWRzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0JyksCiB1c2VTU0wgPSAnaHR0cHM6JyA9PSBkb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbCwKIG5vZGU7CiBnYWRzLmFzeW5jID0gdHJ1ZTsKIGdhZHMudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnOwogZ2Fkcy5zcmMgPSAodXNlU1NMID8gJ2h0dHBzOicgOiAnaHR0cDonKSArICcvL3d3dy5nb29nbGV0YWdzZXJ2aWNlcy5jb20vdGFnL2pzL2dwdC5qcyc7CiBub2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpWzBdOwogbm9kZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShnYWRzLCBub2RlKTsKIH0pKCk7CgogZ29vZ2xldGFnLmNtZC5wdXNoKGZ1bmN0aW9uKCkgewogCiAgbGFuZ3VhZ2UgPSBkb2N1bWVudC5jb29raWUucmVwbGFjZSgvKD86KD86XnwuKjtccyopbGFuZ3VhZ2VccypcPVxzKihbXjtdKikuKiQpfF4uKiQvLCAiJDEiKTsKIGhhc191cGxvYWRlZCA9IChkb2N1bWVudC5jb29raWUucmVwbGFjZSgvKD86KD86XnwuKjtccyopaGFzX3VwbG9hZGVkXHMqXD1ccyooW147XSopLiokKXxeLiokLywgIiQxIikpID8gJ1knIDogJ04nOwogCiBjb2hvcnQgPSAod2luZG93LkFCTGluY29sbikgPyB3aW5kb3cuQUJMaW5jb2xuLmdldFRlc3QoJ0RGUEFkQ29ob3J0cycpLmdldCgnY29ob3J0JywgJ0EnKSA6ICdBJzsKCiBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdsYW5ndWFnZScsIFtsYW5ndWFnZV0pOwogZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnaXNfdXBsb2FkZXInLCBbaGFzX3VwbG9hZGVkXSk7CiBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdjb2hvcnQnLCBbY29ob3J0XSk7CiBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdjb2hvcnRfYScsIFsoY29ob3J0ID09PSAnQScpID8gJ1knIDogJ04nXSk7CiBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdjb2hvcnRfYicsIFsoY29ob3J0ID09PSAnQicpID8gJ1knIDogJ04nXSk7CgogIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoJ3NlYycsIFsnZmFsc2UnXSk7CgogZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnbG9nZ2VkX2luJywgWydmYWxzZSddKTsKCiAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygncnB2JywgKE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoxMDApKzEpLnRvU3RyaW5nKCkpOwoKIGdvb2dsZXRhZy5wdWJhZHMoKS5lbmFibGVBc3luY1JlbmRlcmluZygpOwogZ29vZ2xldGFnLmVuYWJsZVNlcnZpY2VzKCk7CiB9KTsKIDwvc2NyaXB0PgoKPHNjcmlwdD4KIWZ1bmN0aW9uKCl7dmFyIGU9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OmV4cG9ydHMscj1bXTtpZihlLnBlcmZvcm1hbmNlfHwoZS5wZXJmb3JtYW5jZT17fSksZS5wZXJmb3JtYW5jZS5ub3d8fChlLnBlcmZvcm1hbmNlLm5vdz1wZXJmb3JtYW5jZS5ub3d8fHBlcmZvcm1hbmNlLndlYmtpdE5vd3x8cGVyZm9ybWFuY2UubXNOb3d8fHBlcmZvcm1hbmNlLm1vek5vdyksIWUucGVyZm9ybWFuY2Uubm93KXt2YXIgbj1EYXRlLm5vdz9EYXRlLm5vdygpOituZXcgRGF0ZTtwZXJmb3JtYW5jZS50aW1pbmcmJnBlcmZvcm1hbmNlLnRpbWluZyYmKG49cGVyZm9ybWFuY2UudGltaW5nLm5hdmlnYXRpb25TdGFydCksZS5wZXJmb3JtYW5jZS5ub3c9ZnVuY3Rpb24oKXt2YXIgZT1EYXRlLm5vdz9EYXRlLm5vdygpOituZXcgRGF0ZTtyZXR1cm4gZS1ufX1lLnBlcmZvcm1hbmNlLm1hcmt8fChlLnBlcmZvcm1hbmNlLm1hcms9ZS5wZXJmb3JtYW5jZS53ZWJraXRNYXJrP2UucGVyZm9ybWFuY2Uud2Via2l0TWFyazpmdW5jdGlvbihuKXtyLmZvckVhY2goZnVuY3Rpb24oZSxyLGEpe2UubmFtZT09PW4mJmEuc3BsaWNlKHIsMSl9KSxyLnB1c2goe25hbWU6bixlbnRyeVR5cGU6Im1hcmsiLHN0YXJ0VGltZTplLnBlcmZvcm1hbmNlLm5vdygpLGR1cmF0aW9uOjB9KX0pLGUucGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZXx8KGUucGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZT1lLnBlcmZvcm1hbmNlLndlYmtpdEdldEVudHJpZXNCeVR5cGU/ZS5wZXJmb3JtYW5jZS53ZWJraXRHZXRFbnRyaWVzQnlUeXBlOmZ1bmN0aW9uKGUpe3ZhciBuPWZ1bmN0aW9uKHIpe3JldHVybiByLmVudHJ5VHlwZT09PWV9O3JldHVybi0xIT09WyJtYXJrIiwibWVhc3VyZSJdLmluZGV4T2YoZSk/ci5maWx0ZXIobik6dm9pZCAwfSksZS5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlOYW1lfHwoZS5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlOYW1lPWUucGVyZm9ybWFuY2Uud2Via2l0R2V0RW50cmllc0J5TmFtZT9lLnBlcmZvcm1hbmNlLndlYmtpdEdldEVudHJpZXNCeU5hbWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHIuZmlsdGVyKGZ1bmN0aW9uKHIpe3JldHVybiByLm5hbWU9PT1lfSl9KSxlLnBlcmZvcm1hbmNlLmNsZWFyTWVhc3VyZXN8fChlLnBlcmZvcm1hbmNlLmNsZWFyTWVhc3VyZXM9ZS5wZXJmb3JtYW5jZS53ZWJraXRDbGVhck1lYXN1cmVzP2UucGVyZm9ybWFuY2Uud2Via2l0Q2xlYXJNZWFzdXJlczpmdW5jdGlvbigpe3IuZm9yRWFjaChmdW5jdGlvbihlLHIsbil7Im1lYXN1cmUiPT09ZS5lbnRyeVR5cGUmJm4uc3BsaWNlKHIsMSl9KSxyPVtdfSksZS5wZXJmb3JtYW5jZS5jbGVhck1hcmtzfHwoZS5wZXJmb3JtYW5jZS5jbGVhck1hcmtzPWUucGVyZm9ybWFuY2Uud2Via2l0Q2xlYXJNYXJrcz9lLnBlcmZvcm1hbmNlLndlYmtpdENsZWFyTWFya3M6ZnVuY3Rpb24oKXtyLmZvckVhY2goZnVuY3Rpb24oZSxyLG4peyJtYXJrIj09PWUuZW50cnlUeXBlJiZuLnNwbGljZShyLDEpfSkscj1bXX0pLGUucGVyZm9ybWFuY2UubWVhc3VyZXx8KGUucGVyZm9ybWFuY2UubWVhc3VyZT1lLnBlcmZvcm1hbmNlLndlYmtpdE1lYXN1cmU/ZS5wZXJmb3JtYW5jZS53ZWJraXRNZWFzdXJlOmZ1bmN0aW9uKGUsbixhKXt2YXIgdD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHIubmFtZT09PWUmJiJtYXJrIj09PXIuZW50cnlUeXBlfX0sbz1yLmZpbHRlcih0KG4pKVswXSxtPXIuZmlsdGVyKHQoYSkpWzBdLGk9bS5zdGFydFRpbWUtby5zdGFydFRpbWU7ci5wdXNoKHtuYW1lOmUsZW50cnlUeXBlOiJtZWFzdXJlIixzdGFydFRpbWU6by5zdGFydFRpbWUsZHVyYXRpb246aX0pfSl9KCksd2luZG93Lm1hcmtVc2VyVGltZT1mdW5jdGlvbihlKXt2YXIgcj13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lfHxmdW5jdGlvbihlKXtzZXRUaW1lb3V0KGUsMCl9O3IoZnVuY3Rpb24oKXt3aW5kb3cucGVyZm9ybWFuY2UubWFyayhlKSx3aW5kb3cuY29uc29sZSYmY29uc29sZS50aW1lU3RhbXAmJmNvbnNvbGUudGltZVN0YW1wKGUpfSl9OwoKKGZ1bmN0aW9uKCkgewogd2luZG93Lm1hcmtVc2VyVGltZSA9IGZ1bmN0aW9uKGxhYmVsKSB7CiB3aW5kb3cuX2d0bSA9IHdpbmRvdy5fZ3RtIHx8IFtdOwoKIC8vIEV4aXQgZWFybHkgaWYgdGhlIGJyb3dzZXIgY2FuJ3QgaGFuZGxlIG5ldyB0aGluZ3MKIGlmICh0eXBlb2YgcGVyZm9ybWFuY2UgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiBwZXJmb3JtYW5jZS5tYXJrICE9PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlOYW1lICE9PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiBwZXJmb3JtYW5jZS5jbGVhck1hcmtzICE9PSAnZnVuY3Rpb24nKSB7CiByZXR1cm47CiB9CgogdmFyIHVpZCA9IHBhcnNlSW50KE1hdGgucmFuZG9tKCkudG9TdHJpbmcoKS5zcGxpdCgnMC4nKVsxXSkgKyBuZXcgRGF0ZSgpLmdldFRpbWUoKSwKIG1hcmtfbmFtZSA9IGxhYmVsICsgJ18nICsgdWlkLAogcGFydHMgPSBsYWJlbC5zcGxpdCgnfCcpLAogY2F0ZWdvcnkgPSBwYXJ0c1swXSwKIHZhcmlhYmxlID0gcGFydHNbMV0sCiBsYWJlbCA9IHBhcnRzWzJdLAogbWFya190aW1lLAogbWFya19lbnRyaWVzOwoKIHBlcmZvcm1hbmNlLm1hcmsobWFya19uYW1lKTsKIG1hcmtfZW50cmllcyA9IHBlcmZvcm1hbmNlLmdldEVudHJpZXNCeU5hbWUobWFya19uYW1lKTsKCiBpZiAobWFya19lbnRyaWVzLmxlbmd0aCkgewogbWFya190aW1lID0gbWFya19lbnRyaWVzWzBdLnN0YXJ0VGltZTsKIHdpbmRvdy5fZ3RtLnB1c2goewogJ2V2ZW50JzogJ3BlcmZvcm1hbmNlX3RpbWluZycsCiAncGVyZm9ybWFuY2VfdGltaW5nLmNhdGVnb3J5JzogY2F0ZWdvcnksCiAncGVyZm9ybWFuY2VfdGltaW5nLnZhcmlhYmxlJzogdmFyaWFibGUsCiAncGVyZm9ybWFuY2VfdGltaW5nLnRpbWUnOiBtYXJrX3RpbWUgLyAxMDAwLAogJ3BlcmZvcm1hbmNlX3RpbWluZy5sYWJlbCc6IGxhYmVsCiB9KTsKIH0KIH07Cn0oKSk7Cjwvc2NyaXB0PgoKIDxzY3JpcHQgc3JjPSJodHRwczovL2YudmltZW9jZG4uY29tL2pzX29wdC9hYmxpbmNvbG5fY29tYmluZWQubWluLmpzPzQ2NDIzMGYwIj48L3NjcmlwdD4KCgoKIDwvaGVhZD4KIDxib2R5IGNsYXNzPSJvbnNpdGUgIj4KIDxkaXYgaWQ9IndyYXAiIGNsYXNzPSJvdXRlcl93cmFwIj4KIAogPGRpdiBjbGFzcz0iYm9keV9yaWJib24gZXNpX3JpYmJvbiI+PC9kaXY+CgogCiAKPHNjcmlwdD4KIHdpbmRvdy52aW1lbyA9IHdpbmRvdy52aW1lbyB8fCB7fTsKPC9zY3JpcHQ+CjxkaXYgaWQ9InRvcG5hdl9kZXNrdG9wIiBjbGFzcz0idG9wbmF2X2Rlc2t0b3AgIiByb2xlPSJiYW5uZXIiPgogPGRpdiBjbGFzcz0idG9wbmF2X2Rlc2t0b3Bfd3JhcHBlciI+CgogICA8YSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbG9nbyIgaHJlZj0iLy92aW1lby5jb20iIGFsdD0iR28gdG8gVmltZW8gaG9tZSBwYWdlIiB0aXRsZT0iR28gdG8gVmltZW8gaG9tZSBwYWdlIiBhcmlhLWxhYmVsPSJHbyB0byBWaW1lbyBob21lIHBhZ2UiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnZpbWVvX2hvbWUiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2hvbWVfY2xpY2siPgogIDxzdmcgYWx0PSJWaW1lbyIgd2lkdGg9IjEwMCIgaGVpZ2h0PSI0MCI+PHBhdGggZD0iTTIyLjQ0OCAxNC41NzVjLS4xMDQgMi4xNy0xLjYxOCA1LjE0Ni00LjU0NCA4LjkxMi0zLjAzIDMuOTQyLTUuNTkgNS45MTItNy42ODYgNS45MTItMS4yOTcgMC0yLjM5Ny0xLjIwNC0zLjMtMy42LS42LTIuMi0xLjIwMi00LjM5OC0xLjc5NC02LjU5OC0uNjY0LTIuMzk2LTEuMzgtMy42LTIuMTQ3LTMuNi0uMTY2IDAtLjc0Ny4zNTQtMS43NTMgMS4wNWwtMS4wNDgtMS4zNWMxLjEtLjk2NSAyLjE5LTEuOTMgMy4yNTctMi45MDUgMS40NjMtMS4yNjUgMi41NzMtMS45NCAzLjMtMi4wMDIgMS43MzItLjE2NiAyLjggMS4wMTcgMy4yMDUgMy41NTguNDM1IDIuNzQuNzM2IDQuNDQuOTAyIDUuMTE1LjQ5OCAyLjI3IDEuMDQ4IDMuNDAyIDEuNjUgMy40MDIuNDY2IDAgMS4xNzItLjczNyAyLjEwNS0yLjIxLjkzNC0xLjQ3MyAxLjQzMi0yLjU5MyAxLjUwNC0zLjM3LjEzMy0xLjI3Ny0uMzY1LTEuOTEtMS41MDYtMS45MS0uNTMgMC0xLjA4LjEyNS0xLjY1LjM2NCAxLjEtMy41OSAzLjE4Ni01LjMzMyA2LjI3Ny01LjIzIDIuMjczLjA3MyAzLjM1IDEuNTU2IDMuMjI3IDQuNDZtMTMuNzU1IDcuMDM0Yy0uOTMzIDEuNzY0LTIuMjIgMy4zNy0zLjg2IDQuODAzLTIuMjQgMS45My00LjQ3IDIuOTA1LTYuNyAyLjkwNS0xLjAzNy4wMDItMS44MjYtLjMzLTIuMzc2LS45OTQtLjU1LS42NjMtLjgxLTEuNTM1LS43NzctMi42MDMuMDMtMS4xLjM3Mi0yLjggMS4wMjUtNS4xMDQuNjU0LTIuMzAzLjk3Ni0zLjUzNy45NzYtMy43MDMgMC0uODYtLjMtMS4yOTctLjkwMi0xLjI5Ny0uMTk4IDAtLjc3LjM1My0xLjcwMiAxLjA0OGwtMS4xNTItMS4zNWMxLjA3LS45NjIgMi4xMzctMS45MjcgMy4yMDYtMi45MDIgMS40My0xLjI2NiAyLjUtMS45NCAzLjIwNS0yLjAwMiAxLjEtLjEwMyAxLjkxLjIzIDIuNDI4Ljk3Ni41MTguNzQ3LjcwNSAxLjcyMi41OCAyLjkxNS0uNDM1IDIuMDM0LS45MDIgNC42MDctMS40IDcuNzMtLjAzIDEuNDMuNDg4IDIuMTQ2IDEuNTU2IDIuMTQ2LjQ2NyAwIDEuMjk3LS40OTggMi41LTEuNDgzLjk5Ni0uODIgMS44MTUtMS41OTggMi40NS0yLjMyNGwuOTQyIDEuMjQ0bS00LjM1Ny0xNy44Yy0uMDMuODMtLjQ0NiAxLjYyOC0xLjI1NSAyLjM5NS0uOS44Ni0xLjk3IDEuMjk2LTMuMjA0IDEuMjk2LTEuOSAwLTIuODIyLS44My0yLjc1LTIuNDkuMDMyLS44Ni41NC0xLjY5IDEuNTI2LTIuNDkuOTg1LS43OTcgMi4wNzQtMS4xOSAzLjI3OC0xLjE5LjcwNSAwIDEuMjg2LjI3IDEuNzUzLjgyLjQ2Ny41NC42ODQgMS4xLjY1MyAxLjY2bTM1LjYxMiAxNy44Yy0uOTMzIDEuNzYzLTIuMjIgMy4zNy0zLjg2IDQuODAyLTIuMjQgMS45My00LjQ3IDIuOTA0LTYuNyAyLjkwNC0yLjE2OC4wMDItMy4yMTYtMS4yMDItMy4xNTMtMy41OTguMDMtMS4wNy4yMzgtMi4zNTUuNjIyLTMuODUuMzg0LTEuNTAzLjU5LTIuNjY1LjYyMy0zLjUwNS4wMy0xLjI2NS0uMzUzLTEuODk4LTEuMTUyLTEuODk4LS44NyAwLTEuOTEgMS4wMzYtMy4xMTIgMy4xLTEuMjc2IDIuMTY4LTEuOTYgNC4yNzQtMi4wNjQgNi4zMDgtLjA3MyAxLjQzLjA3MiAyLjU0LjQyNSAzLjI5OC0yLjMyNC4wNjQtMy45NjMtLjMyLTQuODg2LTEuMTUtLjgzLS43MzctMS4yMTItMS45NS0xLjE1LTMuNjUyLjAzLTEuMDY4LjE5OC0yLjEzNy40ODgtMy4yMDUuMjktMS4wNy40NTctMi4wMjMuNDg4LTIuODUzLjA2Mi0xLjIzNC0uMzg0LTEuODU3LTEuMzUtMS44NTctLjg0IDAtMS43NC45NTUtMi43MDYgMi44NTMtLjk2NiAxLjktMS41MDUgMy44OS0xLjYxIDUuOTU2LS4wNiAxLjg2Ny4wNTMgMy4xNzQuMzY0IDMuOS0yLjI5My4wNjItMy45Mi0uNDE1LTQuODc2LTEuNDUyLS43OTgtLjg2LTEuMTYtMi4xOC0xLjEtMy45NDIuMDMyLS44Ni4xODgtMi4wNzUuNDU3LTMuNjIuMjgtMS41NDYuNDI1LTIuNzUuNDU3LTMuNjIuMDYyLS42MDMtLjA4My0uOTAzLS40NDYtLjkwMy0uMTk3IDAtLjc2OC4zNC0xLjcwMiAxLjAxNWwtMS4yMDMtMS4zNDhjLjE2OC0uMTM1IDEuMjE2LTEuMSAzLjE1Ni0yLjkwNSAxLjQtMS4yOTcgMi4zNTQtMS45NyAyLjg1Mi0yLjAwMi44NzItLjA3MyAxLjU2Ny4yOSAyLjEwNiAxLjA4LjUzLjc4Ny44IDEuNjkuOCAyLjcyNyAwIC4zMzItLjAzMi42NTQtLjEwNS45NTQuNDk3LS43NjYgMS4wOC0xLjQzIDEuNzUyLTIgMS41MzctMS4zNCAzLjI2LTIuMDg2IDUuMTU3LTIuMjUyIDEuNjQtLjEzNSAyLjguMjUgMy41MDUgMS4xNTIuNTcuNzM2LjgzIDEuNzg0LjggMy4xNTMuMjM3LS4xOTguNDg2LS40MTYuNzQ2LS42NTQuNzY3LS45MDMgMS41MTQtMS42MiAyLjI1LTIuMTQ4IDEuMjM1LS45MDIgMi41Mi0xLjQgMy44Ni0xLjUwNCAxLjU5Ny0uMTM1IDIuNzUuMjUgMy40NTQgMS4xNTIuNjAyLjcyNi44NyAxLjc3NC44IDMuMTQzLS4wMzIuOTMzLS4yNiAyLjI4LS42NzUgNC4wNjUtLjQxNiAxLjc3My0uNjI0IDIuOC0uNjI0IDMuMDctLjAzLjY5NS4wMyAxLjE4Mi4xOTcgMS40NDIuMTY2LjI3LjU3LjM5NCAxLjIwMy4zOTQuNDY3IDAgMS4yOTctLjQ5NyAyLjUtMS40ODIuOTk2LS44MiAxLjgxNi0xLjU5OCAyLjQ1LTIuMzI0bC45NjMgMS4yNTRtMTguNzY1LS4wNTJjLS45NjUgMS41OTgtMi44NzQgMy4xOTUtNS43MDYgNC43OTMtMy41MzggMi4wMzItNy4xMjcgMy4wNS0xMC43NTggMy4wNS0yLjcwNiAwLTQuNjM2LS45MDQtNS44MDgtMi43LS44My0xLjIzMy0xLjIzNC0yLjY5Ni0xLjIwMy00LjQwNy4wMy0yLjY5OCAxLjIzNC01LjI3IDMuNi03LjcxIDIuNjAzLTIuNjY1IDUuNjc0LTQuMDAzIDkuMjEtNC4wMDMgMy4yNyAwIDUgMS4zMjggNS4yMDggMy45OTQuMTM1IDEuNzAyLS43OTggMy40NDUtMi44IDUuMjQtMi4xMzcgMS45Ni00LjgyNCAzLjIxNS04LjA2IDMuNzQ0LjYuODMgMS41MDQgMS4yNDUgMi43MDcgMS4yNDUgMi4zOTYgMCA1LjAyLS42MTMgNy44NjMtMS44MzcgMi4wMzMtLjg2IDMuNjMtMS43NTMgNC44MDMtMi42NzZsLjk0NSAxLjI2NW0tMTEuMzYtNS4yMjhjLjAzMi0uODkyLS4zMy0xLjM1LTEuMS0xLjM1LS45OTQgMC0yLjAxLjY4Ni0zLjA0OCAyLjA2Ni0xLjAzOCAxLjM4LTEuNTY3IDIuNjk3LTEuNTk4IDMuOTYyLS4wMiAwLS4wMi4yMTggMCAuNjQzIDEuNjMtLjYgMy4wNS0xLjUxNCA0LjI0Mi0yLjczOC45NjYtMS4wNTggMS40NjMtMS45MiAxLjUwNS0yLjU4M20yNC45NDYgMS44NjhjLS4xMzUgMy4wNzItMS4yNjUgNS43MTctMy40MDIgNy45NDctMi4xMzUgMi4yMy00Ljc5IDMuMzUtNy45NTUgMy4zNS0yLjYzNSAwLTQuNjM3LS44NS02LjAwNi0yLjU1LS45OTctMS4yNjctMS41NTctMi44NTQtMS42NS00Ljc1Mi0uMTY2LTIuODYzLjg2LTUuNDk4IDMuMS03Ljg5NCAyLjQwOC0yLjY2NSA1LjQyNy0zLjk5MyA5LjA1Ny0zLjk5MyAyLjMzNCAwIDQuMDk4Ljc4OCA1LjMgMi4zNDQgMS4xMzIgMS40NDMgMS42NSAzLjI5IDEuNTU3IDUuNTVtLTUuNjY0LS4xODVjLjAzLS45MDMtLjA5NC0xLjczMy0uMzc0LTIuNDgtLjI4LS43NDctLjY5NS0xLjEzLTEuMjI0LTEuMTMtMS43MDIgMC0zLjEwMi45MjMtNC4yMDIgMi43Ni0uOTMzIDEuNTAzLTEuNDMgMy4xMS0xLjUwNCA0LjgxMi0uMDMuODQuMTE0IDEuNTc3LjQ0NiAyLjIxLjM2NC43MzYuODgyIDEuMSAxLjU1NiAxLjEgMS41MDUgMCAyLjc5LS44ODMgMy44Ni0yLjY1Ni44OTItMS40NzIgMS4zOC0zLjAwOCAxLjQ0LTQuNjE1aC4wMDJ6IiBmaWxsPSIjMTEyMjMzIi8+PC9zdmc+CiAgPC9hPgogCiAgIDxuYXYgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnUiIHJvbGU9Im5hdmlnYXRpb24iIGFyaWEtbGFiZWw9Ik1haW4gbWVudSI+CiA8dWwgY2xhc3M9InRvcG5hdl9tZW51X2Rlc2t0b3BfbWFpbiIgcm9sZT0ibWVudWJhciI+CgogIAogCiA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXMiIGRhdGEtbWVudS1pZD0iam9pbiI+CiA8YSBjbGFzcz0idG9wbmF2X21lbnVfam9pbiBqcy10b3BuYXZfbWVudV9hdXRoIiBvbmNsaWNrPSJldmVudC5wcmV2ZW50RGVmYXVsdCgpO3ZpbWVvLk1vZGFsLmNyZWF0ZSh7c2l6ZToneHNtYWxsJyxjb250ZW50Oicvam9pbj9tb2RhbD1uZXcnfSkiIGRhdGEtZ2EtZXZlbnQtY2xpY2s9InRvcF9uYXZ8am9pbiIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6am9pbiIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfam9pbl9jbGljayIgaHJlZj0iLy92aW1lby5jb20vam9pbiIgdGl0bGU9IkJlY29tZSBhIFZpbWVvIG1lbWJlciIgdGFiaW5kZXg9IjAiIHJlbD0idG9nZ2xlIiByb2xlPSJidXR0b24iIGFyaWEtb3ducz0idG9wbmF2X2pvaW4iPgogSm9pbiA8L2E+CgogICA8L2xpPgogCiAKIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtcyIgZGF0YS1tZW51LWlkPSJsb2dpbiI+CiA8YSBjbGFzcz0ianMtdG9wbmF2X21lbnVfYXV0aCIgb25jbGljaz0iZXZlbnQucHJldmVudERlZmF1bHQoKTt2aW1lby5TZXNzaW9uLmNyZWF0ZSgncmVnJywgbnVsbCwgdHJ1ZSk7IiBkYXRhLWdhLWV2ZW50LWNsaWNrPSJ0b3BfbmF2fGxvZ2luIiBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpsb2dpbiIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfbG9naW5fY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL2xvZ19pbiIgdGl0bGU9IkxvZyBpbiB0byB5b3VyIGFjY291bnQiIHRhYmluZGV4PSIwIiByZWw9InRvZ2dsZSIgcm9sZT0iYnV0dG9uIiBhcmlhLW93bnM9InRvcG5hdl9sb2dpbiI+CiBMb2cgaW4gPC9hPgoKICAgPC9saT4KIAogCiA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXMiIGRhdGEtbWVudS1pZD0iY3JlYXRlIj4KIDxhIGNsYXNzPSJqcy10b3BuYXYtY3JlYXRlIHRvcG5hdl9oYXNfZHJvcGRvd24gdG9wbmF2X2ljb25fY2hldnJvbl9hIiBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDptYW5hZ2VfdmlkZW9zfGtleXdvcmQ6aG9zdF92aWRlb3MiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2NyZWF0ZV9jbGljayIgaHJlZj0iLy92aW1lby5jb20vY3JlYXRlIiB0aXRsZT0iIiB0YWJpbmRleD0iMCIgcmVsPSJ0b2dnbGUiIHJvbGU9ImJ1dHRvbiIgYXJpYS1vd25zPSJ0b3BuYXZfY3JlYXRlIj4KIEhvc3QgdmlkZW9zIDwvYT4KCiAgIDx1bCBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93biIgcm9sZT0ibWVudSIgYXJpYS1oaWRkZW49InRydWUiIGlkPSJ0b3BuYXZfY3JlYXRlIj4KICAKICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpob3N0X3ZpZGVvc3xrZXl3b3JkOmNvbXBhcmVfcGxhbnMiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2NyZWF0ZV9tZW1iZXJzaGlwX29wdGlvbnNfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL3VwZ3JhZGUiIHRpdGxlPSJVcGdyYWRlIG9yIGNvbXBhcmUgb3VyIHBsYW5zIj5Db21wYXJlIHBsYW5zPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6aG9zdF92aWRlb3N8a2V5d29yZDpwcm9mZXNzaW9uYWxzIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9jcmVhdGVfbWVtYmVyc2hpcF9vcHRpb25zX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9wcm9mZXNzaW9uYWxzIiB0aXRsZT0iR2V0IHByb2Zlc3Npb25hbCB2aWRlbyBob3N0aW5nIHRvb2xzIj5Qcm9mZXNzaW9uYWxzPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6aG9zdF92aWRlb3N8a2V5d29yZDpidXNpbmVzc2VzIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9jcmVhdGVfbWVtYmVyc2hpcF9vcHRpb25zX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9idXNpbmVzcyIgdGl0bGU9IkdldCBwb3dlcmZ1bCB2aWRlbyBtYXJrZXRpbmcgdG9vbHMiPkJ1c2luZXNzZXM8L2E+CiA8L2xpPgogICAKICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpob3N0X3ZpZGVvc3xrZXl3b3JkOnZpZGVvX2xvdmVycyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfY3JlYXRlX21lbWJlcnNoaXBfb3B0aW9uc19jbGljayIgaHJlZj0iLy92aW1lby5jb20vZXZlcnlvbmUiIHRpdGxlPSJVcGxvYWQgYW5kIHNoYXJlIHlvdXIgdmlkZW9zIj5WaWRlbyBsb3ZlcnM8L2E+CiA8L2xpPgogICAKICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpob3N0X3ZpZGVvc3xrZXl3b3JkOnZpZGVvX3NjaG9vbCIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfY3JlYXRlX3ZpZGVvX3NjaG9vbF9jbGljayIgaHJlZj0iLy92aW1lby5jb20vdmlkZW9zY2hvb2wiIHRpdGxlPSJMZWFybiBob3cgdG8gbWFrZSBiZXR0ZXIgdmlkZW9zIj5WaWRlbyBTY2hvb2w8L2E+CiA8L2xpPgogICA8L3VsPgogIDwvbGk+CiAKIAogPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zIiBkYXRhLW1lbnUtaWQ9IndhdGNoIj4KIDxhIGNsYXNzPSJ0b3BuYXZfaGFzX2Ryb3Bkb3duIHRvcG5hdl9pY29uX2NoZXZyb25fYSIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6d2F0Y2h8a2V5d29yZDp3YXRjaCIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfd2F0Y2hfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL3dhdGNoIiB0aXRsZT0iIiB0YWJpbmRleD0iMCIgcmVsPSJ0b2dnbGUiIHJvbGU9ImJ1dHRvbiIgYXJpYS1vd25zPSJ0b3BuYXZfd2F0Y2giPgogV2F0Y2ggPC9hPgoKICAgPHVsIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duIiByb2xlPSJtZW51IiBhcmlhLWhpZGRlbj0idHJ1ZSIgaWQ9InRvcG5hdl93YXRjaCI+CiAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6d2F0Y2h8a2V5d29yZDpzdGFmZl9waWNrcyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfd2F0Y2hfc3RhZmZfcGlja3NfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL2NoYW5uZWxzL3N0YWZmcGlja3MiIHRpdGxlPSJUaGUgYmVzdCB2aWRlb3Mgb24gVmltZW8sIGN1cmF0ZWQgZGFpbHkgYnkgb3VyIHRlYW0iPlN0YWZmIFBpY2tzPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6d2F0Y2h8a2V5d29yZDpjYXRlZ29yaWVzIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl93YXRjaF9jYXRlZ29yaWVzX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9jYXRlZ29yaWVzIiB0aXRsZT0iQnJvd3NlIHZpZGVvcyBieSBpbnRlcmVzdCwgZ2VucmUsIGFuZCBtb3JlIj5DYXRlZ29yaWVzPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6d2F0Y2h8a2V5d29yZDpjaGFubmVscyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfd2F0Y2hfY2hhbm5lbHNfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL2NoYW5uZWxzIiB0aXRsZT0iVmlldyB2aWRlbyBwbGF5bGlzdHMgY3JlYXRlZCBhbmQgY3VyYXRlZCBieSBvdGhlciBtZW1iZXJzIj5DaGFubmVsczwvYT4KIDwvbGk+CiAgIAogIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OndhdGNofGtleXdvcmQ6Z3JvdXBzIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl93YXRjaF9ncm91cHNfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL2dyb3VwcyIgdGl0bGU9IldhdGNoIGFuZCBkaXNjdXNzIHZpZGVvcyB3aXRoIG90aGVycyI+R3JvdXBzPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6d2F0Y2h8a2V5d29yZDphcHAiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3dhdGNoX2FwcHNfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL2V2ZXJ5d2hlcmUiIHRpdGxlPSJXYXRjaCBWaW1lbyB2aWRlb3Mgb24gVFZzLCBwaG9uZXMsIHRhYmxldHMsIGFuZCBtb3JlIj5BcHBzPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6d2F0Y2h8a2V5d29yZDptb3JlIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl93YXRjaF9tb3JlX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS93YXRjaCIgdGl0bGU9IkRpc2NvdmVyIG1vcmUgd2F5cyB0byB3YXRjaCBvbiBWaW1lbyI+TW9yZeKApjwvYT4KIDwvbGk+CiAgIDwvdWw+CiAgPC9saT4KIAogCiA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXMiIGRhdGEtbWVudS1pZD0ib25kZW1hbmQiPgogPGEgY2xhc3M9InRvcG5hdl9oYXNfZHJvcGRvd24gdG9wbmF2X2lzX29uZGVtYW5kIHRvcG5hdl9pY29uX2NoZXZyb25fYSIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6b25fZGVtYW5kfGtleXdvcmQ6b25fZGVtYW5kIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9vbmRlbWFuZF9jbGljayIgaHJlZj0iLy92aW1lby5jb20vb25kZW1hbmQiIHRpdGxlPSJXYXRjaCBtb3ZpZXMsIHNlcmllcywgYW5kIG1vcmUiIHRhYmluZGV4PSIwIiByZWw9InRvZ2dsZSIgcm9sZT0iYnV0dG9uIiBhcmlhLW93bnM9InRvcG5hdl9vbmRlbWFuZCI+CiBPbiBEZW1hbmQgPC9hPgoKICAgPHVsIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duIiByb2xlPSJtZW51IiBhcmlhLWhpZGRlbj0idHJ1ZSIgaWQ9InRvcG5hdl9vbmRlbWFuZCI+CiAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6b25fZGVtYW5kfGtleXdvcmQ6d2hhdHNfbmV3IiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9vbmRlbWFuZF93aGF0c19uZXdfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL29uZGVtYW5kIiB0aXRsZT0iU2VlIG5ldyBhbmQgbm90ZXdvcnRoeSB0aXRsZXMgYWRkZWQgdG8gT24gRGVtYW5kIj5XaGF04oCZcyBuZXc8L2E+CiA8L2xpPgogICAKICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpvbl9kZW1hbmR8a2V5d29yZDpkaXNjb3ZlciIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfb25kZW1hbmRfZGlzY292ZXJfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL29uZGVtYW5kL2Rpc2NvdmVyIiB0aXRsZT0iRGlzY292ZXIgdGl0bGVzIG91ciB0ZWFtIHJlY29tbWVuZHMiPkRpc2NvdmVyPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6b25fZGVtYW5kfGtleXdvcmQ6Z2VucmVzIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9vbmRlbWFuZF9nZW5yZXNfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL29uZGVtYW5kL2Jyb3dzZSIgdGl0bGU9IkJyb3dzZSB0aXRsZXMgYnkgZ2VucmUiPkdlbnJlczwvYT4KIDwvbGk+CiAgIAogIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50Om9uX2RlbWFuZHxrZXl3b3JkOnR2X3NlcmllcyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfb25kZW1hbmRfdHZfc2VyaWVzX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9vbmRlbWFuZC9icm93c2UvdHYrc2VyaWVzIiB0aXRsZT0iQnJvd3NlIHNlcmllcyBhbmQgVFYgc2hvd3MiPlRWICsgU2VyaWVzPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6b25fZGVtYW5kfGtleXdvcmQ6c3RhcnRfc2VsbGluZyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfb25kZW1hbmRfc2VsbF9jbGljayIgaHJlZj0iLy92aW1lby5jb20vb25kZW1hbmQvc3RhcnRzZWxsaW5nIiB0aXRsZT0iU2VsbCBkaXJlY3RseSB0byB5b3VyIGZhbnMgd2l0aCBWaW1lbyBPbiBEZW1hbmQiPlN0YXJ0IHNlbGxpbmc8L2E+CiA8L2xpPgogICA8L3VsPgogIDwvbGk+CiAKIDwvdWw+CiA8L25hdj48IS0tIC8udG9wbmF2X2Rlc2t0b3BfbWVudSAtLT4KIAogICA8ZGl2IGNsYXNzPSJ0b3BuYXZfbWVudV9yaWdodCI+CgogICA8Zm9ybSBjbGFzcz0idG9wbmF2X21lbnVfc2VhcmNoIiBhY3Rpb249Ii8vdmltZW8uY29tL3NlYXJjaCIgbWV0aG9kPSJnZXQiIHJvbGU9InNlYXJjaCIgZGF0YS1kcy1wcm90ZWN0aW9uPgogPGlucHV0IGNsYXNzPSJ0b3BuYXZfbWVudV9zZWFyY2hfaW5wdXQganMtdG9wbmF2X21lbnVfc2VhcmNoX2lucHV0IGpzLXNlYXJjaF9hdXRvY29tcGxldGUiICB0eXBlPSJ0ZXh0IiBuYW1lPSJxIiB0aXRsZT0iU2VhcmNoIHZpZGVvcywgcGVvcGxlLCBhbmQgbW9yZSIgdmFsdWU9IiIgYXJpYS1sYWJlbD0iU2VhcmNoIHZpZGVvcywgcGVvcGxlLCBhbmQgbW9yZSIgcGxhY2Vob2xkZXI9IlNlYXJjaCB2aWRlb3MsIHBlb3BsZSwgYW5kIG1vcmUiIGF1dG9jb21wbGV0ZT0ib2ZmIj48YnV0dG9uIGNsYXNzPSJ0b3BuYXZfbWVudV9zZWFyY2hfc3VibWl0IHRvcG5hdl9pY29uX3NlYXJjaF9iIiB0eXBlPSJzdWJtaXQiIGFyaWEtbGFiZWw9IlNlYXJjaCI+PC9idXR0b24+CiA8L2Zvcm0+CiAKICAKICAKICAgPGEgY2xhc3M9InRvcG5hdl9kZXNrdG9wX3VwbG9hZCB0b3BuYXZfaWNvbl91cGxvYWRfYiIgaHJlZj0iL3VwbG9hZCIgdGl0bGU9IlVwbG9hZCB5b3VyIHZpZGVvcyIgcm9sZT0iYnV0dG9uIiBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbXBvbmVudDp0b3BfbmF2fGtleXdvcmQ6dXBsb2FkIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl91cGxvYWRfY2xpY2siPjxzcGFuPlVwbG9hZDwvc3Bhbj48L2E+CiAgPC9kaXY+PCEtLSAvLnRvcG5hdl9tZW51X3JpZ2h0IC0tPgogIDwvZGl2PjwhLS0gLy50b3BuYXZfZGVza3RvcF93cmFwcGVyIC0tPgo8L2Rpdj4KCiA8bmF2IGlkPSJ0b3BuYXZfbW9iaWxlIiBjbGFzcz0idG9wbmF2X21vYmlsZSAiIHJvbGU9ImJhbm5lciI+CgogPGRpdiBjbGFzcz0idG9wbmF2X21vYmlsZV9iYXIiPgogIDxidXR0b24gY2xhc3M9InRvcG5hdl9tb2JpbGVfYnV0dG9uIHRvcG5hdl9tb2JpbGVfcHVsbF9sZWZ0IHRvcG5hdl9tb2JpbGVfaGVhZGVyX2xvZ28ganMtdG9wbmF2X21vYmlsZV9oZWFkZXJfbG9nbyB0b3BuYXZfaWNvbl9tb2JpbGVfdmxvZ29fYiI+CiAgPC9idXR0b24+CiA8YSBocmVmPSIvL3ZpbWVvLmNvbS9zZWFyY2giIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX2J1dHRvbiB0b3BuYXZfbW9iaWxlX3B1bGxfcmlnaHQgdG9wbmF2X21vYmlsZV9oZWFkZXJfc2VhcmNoIHRvcG5hdl9pY29uX21vYmlsZV9zZWFyY2hfYiI+IDwvYT4KIDxzcGFuIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX2hlYWRlcl90aXRsZSI+PC9zcGFuPgogPC9kaXY+CgogIDxzZWN0aW9uIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX21lbnUganMtdG9wbmF2X21vYmlsZV9tZW51X21haW4iPgogPGRpdiBjbGFzcz0idG9wbmF2X21vYmlsZV9iYXIiPgogPGJ1dHRvbiBjbGFzcz0idG9wbmF2X21vYmlsZV9idXR0b24gdG9wbmF2X21vYmlsZV9wdWxsX2xlZnQganMtdG9wbmF2X21vYmlsZV9oZWFkZXJfY2xvc2UgdG9wbmF2X2ljb25fbW9iaWxlX3hfYiI+IDwvYnV0dG9uPgogPGJ1dHRvbiBjbGFzcz0idG9wbmF2X21vYmlsZV9idXR0b24gdG9wbmF2X21vYmlsZV9wdWxsX3JpZ2h0IGpzLXRvcG5hdl9tb2JpbGVfaGVhZGVyX3NldHRpbmdzIHRvcG5hdl9pY29uX21vYmlsZV9nZWFyX2IiPiA8L2J1dHRvbj4KIDwvZGl2PgoKIDx1bD4KICAgPGxpPgogPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSJ0b3BuYXZfaWNvbl9tb2JpbGVfY2hhbm5lbF9iICIgaHJlZj0iLy92aW1lby5jb20vIj4KIFN0YWZmIFBpY2tzIDwvYT4KIDwvbGk+CiAgIDxsaT4KIDxhIGRhdGEtYWN0aW9uPSJsYXN0X3BhZ2UiIGRhdGEtYnJlZXplLWlnbm9yZSBjbGFzcz0idG9wbmF2X2ljb25fbW9iaWxlX2F2YXRhcl9iICIgaHJlZj0iL2xvZ19pbiI+CiA8c3BhbiBjbGFzcz0ibWVudV9hdXRoIj5Kb2luIG9yIGxvZyBpbjwvc3Bhbj4gPC9hPgogPC9saT4KICAgPGxpPgogPGEgZGF0YS1icmVlemUtaWdub3JlIGNsYXNzPSJ0b3BuYXZfaWNvbl9tb2JpbGVfc3Rhcl9iIiBocmVmPSIvL3ZpbWVvLmNvbS93YXRjaCI+CiBXYXRjaCA8L2E+CiA8L2xpPgogICA8bGk+CiA8YSBvbmNsaWNrPSJ2aW1lby5tb2JpbGUuZGVza3RvcF9zaGFyZWQuX3VwbG9hZCh0aGlzKTsgcmV0dXJuIGZhbHNlOyIgZGF0YS1icmVlemUtaWdub3JlIGNsYXNzPSJ0b3BuYXZfaWNvbl9tb2JpbGVfdXBsb2FkX2IiIGhyZWY9Ii8vdmltZW8uY29tL3VwbG9hZCI+CiBVcGxvYWQgPC9hPgogPC9saT4KICAgPGxpPgogPGEgZGF0YS1icmVlemUtaWdub3JlIGNsYXNzPSJ0b3BuYXZfaWNvbl9tb2JpbGVfdm9kX2IgIiBocmVmPSIvL3ZpbWVvLmNvbS9vbmRlbWFuZCI+CiBPbiBEZW1hbmQgPC9hPgogPC9saT4KICAgPGxpPgogPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSJ0b3BuYXZfaWNvbl9tb2JpbGVfZm9yZ290X2IgIiBocmVmPSJodHRwczovL2hlbHAudmltZW8uY29tL2hjL2VuLXVzIj4KIEhlbHAgPC9hPgogPC9saT4KICA8L3VsPgogPC9zZWN0aW9uPgoKICA8c2VjdGlvbiBjbGFzcz0idG9wbmF2X21vYmlsZV9tZW51IHRvcG5hdl9tb2JpbGVfbWVudV9zZXR0aW5ncyBqcy10b3BuYXZfbW9iaWxlX21lbnVfc2V0dGluZ3MiPgogPGRpdiBjbGFzcz0idG9wbmF2X21vYmlsZV9iYXIiPgogPGJ1dHRvbiBjbGFzcz0idG9wbmF2X21vYmlsZV9idXR0b24gdG9wbmF2X21vYmlsZV9wdWxsX2xlZnQganMtdG9wbmF2X21vYmlsZV9oZWFkZXJfc2V0dGluc19jbG9zZSB0b3BuYXZfaWNvbl9tb2JpbGVfYXJyb3dsZWZ0X2IiPiA8L2J1dHRvbj4KIDxzcGFuIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX2hlYWRlcl90aXRsZSI+TW9yZSBzdHVmZjwvc3Bhbj4KIDwvZGl2PgoKIDx1bD4KICA8bGk+CiAgPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSIgIiBocmVmPSIvL3ZpbWVvLmNvbS90ZXJtcyI+CiBUZXJtcyBvZiBTZXJ2aWNlIDwvYT4KICAgPC9saT4KICA8bGk+CiAgPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSIgIiBocmVmPSIvL3ZpbWVvLmNvbS9wcml2YWN5Ij4KIFByaXZhY3kgUG9saWN5IDwvYT4KICAgPC9saT4KICA8bGk+CiAgPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSIgIiBocmVmPSIvL3ZpbWVvLmNvbS9kbWNhIj4KIENvcHlyaWdodCA8L2E+CiAgIDwvbGk+CiAgPGxpPgogIDxhIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBjbGFzcz0iICIgaHJlZj0iLy92aW1lby5jb20vY29va2llX3BvbGljeSI+CiBDb29raWVzIDwvYT4KICAgPC9saT4KICA8bGk+CiAgPGEgZGF0YS1hY3Rpb249ImRlc2t0b3AiIG9uY2xpY2s9InZpbWVvLm1vYmlsZS5kZXNrdG9wX3NoYXJlZC5fczJkcygpOyByZXR1cm4gZmFsc2UiIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSI+CiBEZXNrdG9wIHNpdGUgPC9hPgogICA8L2xpPgogIDxsaT4KICA8YSBsYW5ndWFnZSBocmVmPSIjIj4KIExhbmd1YWdlIDwvYT4KICAgPHNlbGVjdCBvbmNoYW5nZT0idmltZW8ubW9iaWxlLmRlc2t0b3Bfc2hhcmVkLl9zMmwodGhpcykiIHRpdGxlPSJDaG9vc2UgYSBkaWZmZXJlbnQgbGFuZ3VhZ2UiIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX21lbnVfc2V0dGluZ3NfbGFuZ3VhZ2UiPgogICA8b3B0aW9uIGNsYXNzPSJzZWxlY3RlZCIgc2VsZWN0ZWQgdmFsdWU9ImVuIgogbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KIEVuZ2xpc2ggPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iZXMiCiBuYW1lPSJzZWxlY3RfbGFuZ3VhZ2UiPgogRXNwYcOxb2wgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iZGUtREUiCiBuYW1lPSJzZWxlY3RfbGFuZ3VhZ2UiPgogRGV1dHNjaCA8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJmci1GUiIKIG5hbWU9InNlbGVjdF9sYW5ndWFnZSI+CiBGcmFuw6dhaXMgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iamEtSlAiCiBuYW1lPSJzZWxlY3RfbGFuZ3VhZ2UiPgog5pel5pys6KqeIDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9InB0LUJSIgogbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KIFBvcnR1Z3XDqnMgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0ia28tS1IiCiBuYW1lPSJzZWxlY3RfbGFuZ3VhZ2UiPgog7ZWc6rWt7Ja0IDwvb3B0aW9uPgogIDwvc2VsZWN0PgogIDwvbGk+CiAgPGxpPgogIDxhIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBjbGFzcz0iICIgaHJlZj0iLy92aW1lby5jb20vZmFxIj4KIEZBUSA8L2E+CiAgIDwvbGk+CiAgPC91bD4KCiA8ZGl2IGNsYXNzPSJ0b3BuYXZfbW9iaWxlX21lbnVfY29weXJpZ2h0Ij5UTSArIMKpIDIwMTcgVmltZW8sIEluYy48L2Rpdj4KIDwvc2VjdGlvbj4KPC9uYXY+Cgo8c2NyaXB0PgohZnVuY3Rpb24oYSxiKXthLnZpbWVvPWEudmltZW98fHt9LHZpbWVvLm1vYmlsZT12aW1lby5tb2JpbGV8fHt9LFZpbWVvPXZpbWVvLm1vYmlsZXx8e30sVmltZW8uZGVza3RvcF9zaGFyZWQ9VmltZW8uZGVza3RvcF9zaGFyZWR8fHt9O3ZhciBjPWIuZ2V0RWxlbWVudEJ5SWQoInRvcG5hdl9kZXNrdG9wIiksZD0ib250b3VjaHN0YXJ0ImluIGE/InRvdWNoc3RhcnQiOmEuUG9pbnRlckV2ZW50PyJwb2ludGVyZG93biI6YS5NU1BvaW50ZXJFdmVudD8iTVNQb2ludGVyRG93biI6ImNsaWNrIjsiY2xpY2siIT09ZCYmYy5hZGRFdmVudExpc3RlbmVyKGQsZnVuY3Rpb24oYSl7dmFyIGI9ImltZyI9PT1hLnRhcmdldC50YWdOYW1lLnRvTG93ZXJDYXNlKCk/YS50YXJnZXQucGFyZW50Tm9kZTphLnRhcmdldDtiLmNsYXNzTGlzdC5jb250YWlucygidG9wbmF2X2hhc19kcm9wZG93biIpJiYoYS5wcmV2ZW50RGVmYXVsdCgpLGEuc3RvcFByb3BhZ2F0aW9uKCkpfSwhMSksYy5hZGRFdmVudExpc3RlbmVyKGQsZnVuY3Rpb24oYyl7Yy50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCJqcy10b3BuYXZfbWVudV9hdXRoIikmJihiLmNvb2tpZT0ibGFzdF9wYWdlPSIrZW5jb2RlVVJJQ29tcG9uZW50KGEubG9jYXRpb24ucGF0aG5hbWUpKyI7cGF0aD0nLyc7bWF4LWFnZT0xODAwOyIpfSwhMSksVmltZW8uZGVza3RvcF9zaGFyZWQuX3VwbG9hZD1mdW5jdGlvbihjKXtpZigvaVBhZHxpUGhvbmV8aVBvZC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSl7dmFyIGYsZyxkPSJ2aW1lbzovL2FwcC52aW1lby5jb20vdXBsb2FkP3JlZj1tb2JpbGV3ZWIiLGU9Ii91cGxvYWQiO3JldHVybiBmPWZ1bmN0aW9uKCl7Yi53ZWJraXRIaWRkZW58fChhLmxvY2F0aW9uPWUpfSxnPWZ1bmN0aW9uKCl7YS5sb2NhdGlvbj1kLHNldFRpbWVvdXQoZiwyNSl9LGcoKSwhMX1hLmxvY2F0aW9uPWMuaHJlZn0sVmltZW8uZGVza3RvcF9zaGFyZWQuX3MyZHM9ZnVuY3Rpb24oKXtiLmNvb2tpZT0ib3B0X291dF9tb2JpbGU9MTtleHBpcmVzPUZyaSwgMzEgRGVjIDk5OTkgMjM6NTk6NTkgR01UO2RvbWFpbj0iK3ZpbWVvLmRvbWFpbixhLmxvY2F0aW9uLnJlbG9hZCgpfSxWaW1lby5kZXNrdG9wX3NoYXJlZC5fczJsPWZ1bmN0aW9uKGIpe3ZhciBjPWIudmFsdWUsZD1uZXcgWE1MSHR0cFJlcXVlc3Q7ZC5vcGVuKCJQT1NUIiwiL3NldHRpbmdzL2xvY2FsZSIpLGQuc2V0UmVxdWVzdEhlYWRlcigiWC1SZXF1ZXN0ZWQtV2l0aCIsIlhNTEh0dHBSZXF1ZXN0IiksZC5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LXR5cGUiLCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSxkLnNlbmQoImxvY2FsZT0iK2MrIiZ0b2tlbj0iK3ZpbWVvLnhzcmZ0KSxkLm9ubG9hZD1mdW5jdGlvbigpezIwMD09PWQuc3RhdHVzJiZhLmxvY2F0aW9uLnJlbG9hZCgpfX07dmFyIGU9ImNsaWNrIixmPSJibG9jayIsZz0ibm9uZSIsaD1iLnF1ZXJ5U2VsZWN0b3IoIi5qcy10b3BuYXZfbW9iaWxlX2hlYWRlcl9sb2dvIik7aCYmaC5hZGRFdmVudExpc3RlbmVyKGUsZnVuY3Rpb24oYSl7YS5zdG9wUHJvcGFnYXRpb24oKSxhLnByZXZlbnREZWZhdWx0KCk7dmFyIGM9Yi5xdWVyeVNlbGVjdG9yKCIuanMtdG9wbmF2X21vYmlsZV9tZW51X21haW4iKTtjLnN0eWxlLmRpc3BsYXk9Zjt2YXIgZD1iLnF1ZXJ5U2VsZWN0b3IoIi5qcy10b3BuYXZfbW9iaWxlX2hlYWRlcl9jbG9zZSIpO2QuYWRkRXZlbnRMaXN0ZW5lcihlLGZ1bmN0aW9uKGEpe2Euc3RvcFByb3BhZ2F0aW9uKCksYS5wcmV2ZW50RGVmYXVsdCgpLGMuc3R5bGUuZGlzcGxheT1nfSk7dmFyIGg9Yi5xdWVyeVNlbGVjdG9yKCIuanMtdG9wbmF2X21vYmlsZV9tZW51X3NldHRpbmdzIiksaT1iLnF1ZXJ5U2VsZWN0b3IoIi5qcy10b3BuYXZfbW9iaWxlX2hlYWRlcl9zZXR0aW5ncyIpO2kuYWRkRXZlbnRMaXN0ZW5lcihlLGZ1bmN0aW9uKGEpe2Euc3RvcFByb3BhZ2F0aW9uKCksYS5wcmV2ZW50RGVmYXVsdCgpLGguc3R5bGUuZGlzcGxheT1mLGMuc3R5bGUuZGlzcGxheT1nO3ZhciBkPWIucXVlcnlTZWxlY3RvcigiLmpzLXRvcG5hdl9tb2JpbGVfaGVhZGVyX3NldHRpbnNfY2xvc2UiKTtkLmFkZEV2ZW50TGlzdGVuZXIoZSxmdW5jdGlvbihhKXthLnN0b3BQcm9wYWdhdGlvbigpLGEucHJldmVudERlZmF1bHQoKSxoLnN0eWxlLmRpc3BsYXk9ZyxjLnN0eWxlLmRpc3BsYXk9Zn0pfSl9LCExKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZihhKXt2YXIgYj1uZXcgWE1MSHR0cFJlcXVlc3Q7Yi5vcGVuKCJQT1NUIiwiL3NldHRpbmdzL25hdiIpLGIuc2V0UmVxdWVzdEhlYWRlcigiWC1SZXF1ZXN0ZWQtV2l0aCIsIlhNTEh0dHBSZXF1ZXN0IiksYi5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LXR5cGUiLCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSxiLnNlbmQoIm1lc3NhZ2Vfc3RhdGU9IithKyImdG9rZW49Iit2aW1lby54c3JmdCksYi5vbmxvYWQ9ZnVuY3Rpb24oKXt9fXZhciBhPWIuZ2V0RWxlbWVudEJ5SWQoInRvcG5hdl9tZW51X2F2YXRhciIpO2lmKGEpe3ZhciBjPWEucXVlcnlTZWxlY3RvcigiLnRvcG5hdl9tZW51X2F2YXRhcl9idWJibGUiKSxlPShhLnF1ZXJ5U2VsZWN0b3IoIiN0b3BuYXZfdXNlcl9kcm9wZG93biIpLCExKTtjJiZjLmNsYXNzTGlzdC5hZGQoIm9uIiksYS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKCl7ZXx8KGU9ITAsYyYmYy5jbGFzc0xpc3QucmVtb3ZlKCJvbiIpLGYoMSkpfSwhMSl9fSwxZTMpfSh3aW5kb3csZG9jdW1lbnQpOwo8L3NjcmlwdD4KCiA8ZGl2IGNsYXNzPSJ3cmFwX2NvbnRlbnQiPgogCjxkaXYgY2xhc3M9ImV4Y2VwdGlvbl9jb250YWluZXIiPgogPGRpdiBjbGFzcz0iZXhjZXB0aW9uX3NlY3Rpb24tLXBhc3N3b3JkIj4KIDxoMSBjbGFzcz0iZXhjZXB0aW9uX3RpdGxlLS1wYXNzd29yZCBpcmlzX2hlYWRlciI+VGhpcyB2aWRlbyBpcyBwcml2YXRlPC9oMT4KCiA8ZGl2IGNsYXNzPSJleGNlcHRpb25fY29udGVudCI+CiA8Zm9ybSBpZD0icHdfZm9ybSIgY2xhc3M9ImV4Y2VwdGlvbl9wYXNzd29yZCIgYWN0aW9uPSIvNzQ2MzY1NjIvcGFzc3dvcmQiIG1ldGhvZD0icG9zdCI+CiA8aW5wdXQgdHlwZT0icGFzc3dvcmQiIGlkPSJwYXNzd29yZCIgY2xhc3M9ImV4Y2VwdGlvbl9wYXNzd29yZC1pbnB1dCBpcmlzX2lucHV0IiBuYW1lPSJwYXNzd29yZCIgcGxhY2Vob2xkZXI9IkVudGVyIHBhc3N3b3JkIiBjbGFzcz0icGFzc3dvcmQgaXJpc19mb3JtX3RleHQiIGF1dG9jb21wbGV0ZT0ib2ZmIiBkYXRhLXZhbGlkYXRvcnM9InJlcXVpcmVkIj4KIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzX3JldmlldyIgdmFsdWU9IiI+CiA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iU3VibWl0IiBjbGFzcz0iaXJpc19idG4gaXJpc19idG4tLXByaW1hcnkiPgoKICA8L2Zvcm0+CgogIDwvZGl2PgogPC9kaXY+CjwvZGl2PgogPC9kaXY+CgogIAo8Zm9vdGVyIGNsYXNzPSJmb290ZXJfdjIgZm9vdGVyX3YyLS1yZXNwb25zaXZlIj4KICAgIDxzZWN0aW9uIGNsYXNzPSJmb290ZXJfdjJfX3NpdGVtYXAiPgogPGRpdiBjbGFzcz0iZm9vdGVyX3YyX19saW5rcyI+CgogPHNlY3Rpb24gY2xhc3M9ImZvb3Rlcl92Ml9fbGluayBmb290ZXJfdjJfYWNjb3JkaW9uIj4KIDxpbnB1dCBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fY2hlY2siIHR5cGU9ImNoZWNrYm94Ij4KIDxoNCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlciI+CiA8c3BhbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlci10ZXh0Ij5WaW1lbzwvc3Bhbj4KIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX3JldmVhbCI+CiA8c3ZnIGNsYXNzPSJpcmlzX2ljIGlzLS0xMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgOCA4Ij48cGF0aCBkPSJNNy43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDBMNCA0LjU4NiAxLjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMC0uMzkuMzktLjM5IDEuMDI0IDAgMS40MTRsMyAzYy4zOS4zOSAxLjAyNC4zOSAxLjQxNCAwbDMtM2MuMzktLjM5LjM5LTEuMDI0IDAtMS40MTR6Ii8+PC9zdmc+CiA8L2Rpdj4KIDwvaDQ+CiA8dWwgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1saXN0IGZvb3Rlcl92Ml9hY2NvcmRpb25fX21lbnUiPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvYWJvdXQiIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19hYm91dF9jbGljayI+CiBBYm91dCBWaW1lbyA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvYmxvZyIgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3ZpbWVvX2Jsb2dfY2xpY2siPgogVmltZW8gQmxvZyA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvaGVscC9ndWlkZWxpbmVzIiBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdmltZW9fZ3VpZGVsaW5lc19jbGljayI+CiBWaW1lbyBHdWlkZWxpbmVzIDwvYT4KIDwvbGk+CiA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLnZpbWVvLmNvbSIgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX2RldmVsb3BlcnNfY2xpY2siPgogRGV2ZWxvcGVycyA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvam9icyI+CiBKb2JzIDwvYT4KIDwvbGk+CiA8L3VsPgogPC9zZWN0aW9uPgoKIDxzZWN0aW9uIGNsYXNzPSJmb290ZXJfdjJfX2xpbmsgZm9vdGVyX3YyX2FjY29yZGlvbiI+CiA8aW5wdXQgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX2NoZWNrIiB0eXBlPSJjaGVja2JveCI+CiA8aDQgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXIiPgogPHNwYW4gY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXItdGV4dCI+SGVscDwvc3Bhbj4KIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX3JldmVhbCI+CiA8c3ZnIGNsYXNzPSJpcmlzX2ljIGlzLS0xMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgOCA4Ij48cGF0aCBkPSJNNy43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDBMNCA0LjU4NiAxLjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMC0uMzkuMzktLjM5IDEuMDI0IDAgMS40MTRsMyAzYy4zOS4zOSAxLjAyNC4zOSAxLjQxNCAwbDMtM2MuMzktLjM5LjM5LTEuMDI0IDAtMS40MTR6Ii8+PC9zdmc+CiA8L2Rpdj4KIDwvaDQ+CiA8dWwgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1saXN0IGZvb3Rlcl92Ml9hY2NvcmRpb25fX21lbnUiPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvaGVscCIgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX2hlbHBfY2VudGVyX2NsaWNrIj4KIEhlbHAgQ2VudGVyIDwvYT4KIDwvbGk+CiA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiIGhyZWY9Ii92aWRlb3NjaG9vbCIgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3ZpZGVvX3NjaG9vbF9jbGljayI+CiBWaWRlbyBTY2hvb2wgPC9hPgogPC9saT4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIgaHJlZj0iL2hlbHAvZmFxIiBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfZmFxX2NsaWNrIj4KIEZBUSA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvZm9ydW1zIiBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfZm9ydW1zX2NsaWNrIj4KIEZvcnVtcyA8L2E+CiA8L2xpPgogPC91bD4KIDwvc2VjdGlvbj4KCiA8c2VjdGlvbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rIGZvb3Rlcl92Ml9hY2NvcmRpb24iPgogPGlucHV0IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19jaGVjayIgdHlwZT0iY2hlY2tib3giPgogPGg0IGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyIj4KIDxzcGFuIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyLXRleHQiPk1vcmU8L3NwYW4+CiA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19yZXZlYWwiPgogPHN2ZyBjbGFzcz0iaXJpc19pYyBpcy0tMTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDggOCI+PHBhdGggZD0iTTcuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwTDQgNC41ODYgMS43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDAtLjM5LjM5LS4zOSAxLjAyNCAwIDEuNDE0bDMgM2MuMzkuMzkgMS4wMjQuMzkgMS40MTQgMGwzLTNjLjM5LS4zOS4zOS0xLjAyNCAwLTEuNDE0eiIvPjwvc3ZnPgogPC9kaXY+CiA8L2g0PgogPHVsIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstbGlzdCBmb290ZXJfdjJfYWNjb3JkaW9uX19tZW51Ij4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIgaHJlZj0iL29uZGVtYW5kIiBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfb25fZGVtYW5kX2NsaWNrIj4KIE9uIERlbWFuZCA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvZXZlcnl3aGVyZSIgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX2V2ZXJ5d2hlcmVfY2xpY2siPgogRXZlcnl3aGVyZSA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvdXBsb2FkIiBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdXBsb2FkX2NsaWNrIj4KIFVwbG9hZCA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvc2l0ZV9tYXAiIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19zaXRlX21hcF9jbGljayI+CiBTaXRlIE1hcCA8L2E+CiA8L2xpPgogPC91bD4KIDwvc2VjdGlvbj4KCiA8c2VjdGlvbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rIGZvb3Rlcl92Ml9hY2NvcmRpb24iPgogPGlucHV0IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19jaGVjayIgdHlwZT0iY2hlY2tib3giPgogPGg0IGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyIj4KIDxzcGFuIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyLXRleHQiPlVwZ3JhZGU8L3NwYW4+CiA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19yZXZlYWwiPgogPHN2ZyBjbGFzcz0iaXJpc19pYyBpcy0tMTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDggOCI+PHBhdGggZD0iTTcuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwTDQgNC41ODYgMS43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDAtLjM5LjM5LS4zOSAxLjAyNCAwIDEuNDE0bDMgM2MuMzkuMzkgMS4wMjQuMzkgMS40MTQgMGwzLTNjLjM5LS4zOS4zOS0xLjAyNCAwLTEuNDE0eiIvPjwvc3ZnPgogPC9kaXY+CiA8L2g0PgogPHVsIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstbGlzdCBmb290ZXJfdjJfYWNjb3JkaW9uX19tZW51Ij4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIgaHJlZj0iL3BsdXM/dj1mb290ZXIiPgogVmltZW8gUGx1cyA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvcHJvP3Y9Zm9vdGVyIj4KIFZpbWVvIFBSTyA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvYnVzaW5lc3MiPgogVmltZW8gQnVzaW5lc3MgPC9hPgogPC9saT4KIDwvdWw+CiA8L3NlY3Rpb24+CiA8L2Rpdj4KCiAgIDxhc2lkZSBpZD0iZm9vdGVyX3RpcCIgY2xhc3M9ImZvb3Rlcl92Ml9fdGlwIiBhcmlhLWxpdmU9InBvbGl0ZSI+CiA8aDQgY2xhc3M9ImZvb3Rlcl92Ml9fdGlwLWhlYWRlciI+RGlkIHlvdSBrbm93PzwvaDQ+CiA8cCBjbGFzcz0iYWN0aXZlIGZvb3Rlcl92Ml9fdGlwLWNvbnRlbnQiPlVwZGF0ZSBhIHZpZGVvIHdpdGhvdXQgbG9zaW5nIHlvdXIgVVJMIG9yIHN0YXRzLiBIb3c/IDxhIGhyZWY9Imh0dHBzOi8vaGVscC52aW1lby5jb20vaGMvZW4tdXMvYXJ0aWNsZXMvMjI0ODE4MDQ3LVZpZGVvLXNldHRpbmdzLW92ZXJ2aWV3Ij5SZXBsYWNlIHlvdXIgdmlkZW8gZmlsZTwvYT4gcXVpY2tseSBhbmQgZWFzaWx5LjwvcD4KIDwvYXNpZGU+CiA8L3NlY3Rpb24+CiAKICA8c2VjdGlvbiBjbGFzcz0iZm9vdGVyX3YyX19hdXhpbGlhcnkgIj4KCiA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfX2xlZ2FsIj4KIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9fYXV4aWxpYXJ5LWNvbnRlbnQiPgogPHA+VE0gKyAmY29weTsgMjAxNyBWaW1lbywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvcD4KIDwvZGl2PgogPHVsIGNsYXNzPSJmb290ZXJfdjJfX2xlZ2FsLWxpc3QiPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xlZ2FsLWxpc3QtaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS00IiBocmVmPSIvdGVybXMiIHRpdGxlPSJUZXJtcyAmYW1wOyBDb25kaXRpb25zIj4KIFRlcm1zIDwvYT4KIDwvbGk+CiA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGVnYWwtbGlzdC1pdGVtIj4KIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTQiIGhyZWY9Ii9wcml2YWN5IiB0aXRsZT0iUHJpdmFjeSBQb2xpY3kiPgogUHJpdmFjeSA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xlZ2FsLWxpc3QtaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS00IiBocmVmPSIvZG1jYSIgdGl0bGU9IkNvcHlyaWdodCBJbmZvcm1hdGlvbiI+CiBDb3B5cmlnaHQgPC9hPgogPC9saT4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19sZWdhbC1saXN0LWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktNCIgaHJlZj0iL2Nvb2tpZV9wb2xpY3kiIHRpdGxlPSJMZWFybiBtb3JlIGFib3V0IGhvdyBWaW1lbyB1c2VzIGNvb2tpZXMiPgogQ29va2llcyA8L2E+CiA8L2xpPgogPC91bD4KIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9fYXV4aWxpYXJ5LWNvbnRlbnQgZm9vdGVyX3YyX193aXRobG92ZSI+CiBNYWRlIHdpdGggPGEgaHJlZj0iaHR0cHM6Ly92aW1lby5jb20vbG92ZSI+PHN2ZyBjbGFzcz0iaXJpc19pYyBpcy0tMTIgZm9vdGVyX3YyX19sb3ZlaGVhcnQgZm9vdGVyX3YyX19hdXhpbGlhcnktaWNvbiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTIgMTIiPjxwYXRoIGQ9Ik05IDJDNy4zMTIgMiA2IDMuNSA2IDMuNVM0LjY4NyAyIDMgMkMxLjMxMiAyIDAgMy4zMTIgMCA1YzAgMy4xODggMy43NSAzLjAxMiA2IDYgMi4yNS0yLjk4OCA2LTIuODEyIDYtNiAwLTEuNjg4LTEuMzEzLTMtMy0zeiIvPjwvc3ZnPjwvYT4gaW4gTllDLiA8L2Rpdj4KIDwvZGl2PgoKIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9fZmlsdGVycyBmb290ZXJfdjJfX2F1eGlsaWFyeS1jb250ZW50Ij4KIDxzcGFuIGNsYXNzPSJsYW5ndWFnZSI+CiBMYW5ndWFnZToKIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTQiIGhyZWY9IiNsYW5ndWFnZSIgb25jbGljaz0idmltZW8uTW9kYWwuY3JlYXRlKHtjb250ZW50OiAnL3NldHRpbmdzL2xvY2FsZScsIHNpemU6ICdzbWFsbCd9KTsgcmV0dXJuIGZhbHNlOyIgdGl0bGU9IkNob29zZSBhIGRpZmZlcmVudCBsYW5ndWFnZSI+RW5nbGlzaDwvYT4KIDwvc3Bhbj4KCiAgPHNwYW4gY2xhc3M9ImZvb3Rlcl92Ml9fZmlsdGVyIj5NYXR1cmUgY29udGVudCBmaWx0ZXI6IDwvc3Bhbj48YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS00IGZvb3Rlcl92Ml9fZmlsdGVyc19fbGFuZyBjb250ZW50ZmlsdGVyIGpzLWZvb3Rlcl9jb250ZW50ZmlsdGVyX2xpbmsiIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0idmltZW8uTW9kYWwuY3JlYXRlKHtjb250ZW50OiAnL3NldHRpbmdzL2NvbnRlbnRyYXRpbmcnfSkiIHRpdGxlPSJDaGFuZ2UgeW91ciBtYXR1cmUgY29udGVudCBmaWx0ZXIiPk5vbmU8L2E+CiAgPC9kaXY+Cgo8L3NlY3Rpb24+CjwvZm9vdGVyPgogCiA8L2Rpdj4KCiAKIAogCiAKPHNjcmlwdD4KIHZhciBfX2ZhID0gX19mYSB8fCBbXTsKIF9fZmEucHVzaChbJ3RyYWNrUGFnZXZpZXcnXSk7CgogIC8vIEFuYWx5dGljcyBTZXR1cAogdmFyIF9ndG0gPSBfZ3RtIHx8IFtdLAogX2luaXRpYWxfZ3RtX3N0YXRlID0geyJsYW5ndWFnZSI6ImVuIiwidXNlcl9zdGF0dXMiOiJsb2dnZWRfb3V0IiwidXNlcl90eXBlIjoibm9uZSIsImdhX3VuaXZlcnNhbF9pZCI6IlVBLTc2NjQxLTgiLCJjb21zY29yZV9zaXRlX2lkIjoxMDM0ODI4OX07CgogX2luaXRpYWxfZ3RtX3N0YXRlWyd2dWlkJ10gPSBkb2N1bWVudC5jb29raWUucmVwbGFjZSgvKD86KD86XnwuKjtccyopdnVpZFxzKlw9XHMqKFteO10qKS4qJCl8Xi4qJC8sICIkMSIpOwogX2luaXRpYWxfZ3RtX3N0YXRlWydndG0uc3RhcnQnXSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpOwogX2luaXRpYWxfZ3RtX3N0YXRlWydldmVudCddID0gJ2d0bS5qcyc7CiBfZ3RtLnB1c2goX2luaXRpYWxfZ3RtX3N0YXRlKTsKIAogLyoqCiAqIElmIHRoZSBjdXJyZW50IHJlcXVlc3Qgd2FzIGJ1Y2tldGVkIGluIGFuIEFCTGluY29sbiBleHBlcmltZW50LAogKiBzZW5kIHRoZSBzZWxlY3RlZCB0cmVhdG1lbnQgYmFjayBmcm9tIHRoZSBjbGllbnQsIHRvIGZpbHRlciBhYiB0ZXN0CiAqIGRhdGEgZG93biB0byBub24tcm9ib3QgdXNlcnMgdGhhdCBydW4gSmF2YVNjcmlwdC4KICovCiBpZiAoIkFCTGluY29sbiIgaW4gd2luZG93KSB7CiAoZnVuY3Rpb24gKCkgewogICB9KSgpOwogfQoKICB2YXIgX2V4dGVuZCA9IGZ1bmN0aW9uKCl7Zm9yKHZhciByPWFyZ3VtZW50c1swXSxuPTEsZT1hcmd1bWVudHMubGVuZ3RoO2U+bjtuKyspe3ZhciB0PWFyZ3VtZW50c1tuXTtmb3IodmFyIGEgaW4gdCl0Lmhhc093blByb3BlcnR5KGEpJiYoclthXT10W2FdKX1yZXR1cm4gcn07CgogIHZhciBDU1NfRElSID0gJ2h0dHBzOi8vZi52aW1lb2Nkbi5jb20vc3R5bGVzL2Nzc19vcHQvJywKIEpTX0RJUiA9ICdodHRwczovL2YudmltZW9jZG4uY29tL2pzX29wdC8nLAogSU1BR0VfRElSID0gJ2h0dHBzOi8vZi52aW1lb2Nkbi5jb20vaW1hZ2VzX3Y2LycsCiBTVkdfRElSID0gJ2h0dHBzOi8vZi52aW1lb2Nkbi5jb20vc3ZnLycsCiAgQlVJTERfSEFTSCA9ICc3MjQ1NCc7CgogIHZhciB2aW1lbyA9IF9leHRlbmQoKHdpbmRvdy52aW1lbyB8fCB7fSksIHsiYXBwX3ZlcnNpb24iOiJ2NiIsImRvbWFpbiI6InZpbWVvLmNvbSIsInVybCI6InZpbWVvLmNvbSIsImN1cl91c2VyIjpmYWxzZSwiaXNfbW9iaWxlIjpmYWxzZX0pOwogdmltZW8uY29uZmlnID0gX2V4dGVuZCgodmltZW8uY29uZmlnIHx8IHt9KSwgeyJsb2NhbGUiOiJlbiJ9KTsKCiAgdmFyIGxvY2FsZUNvbmZpZyA9IHsKIGxhbmc6ICdlbicsCiAnRGF0ZSc6IHsKIG1vbnRoczogWyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLAogbW9udGhzX2FiYnI6IFsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl0sCiBkYXlzOiBbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sCiBkYXlzX2FiYnI6IFsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sCgogLy8gQ3VsdHVyZSdzIGRhdGUgb3JkZXI6IE1NL0REL1lZWVkKIGRhdGVPcmRlcjogWydkYXRlJywgJ21vbnRoJywgJ3llYXInXSwKIHNob3J0RGF0ZTogJyVkLyVtLyVZJywKIHNob3J0VGltZTogJyVJOiVNJXAnLAogQU06ICdBTScsCiBQTTogJ1BNJywKIGZpcnN0RGF5T2ZXZWVrOiAwLAoKIC8vIERhdGUuRXh0cmFzCiBvcmRpbmFsOiBmdW5jdGlvbihkYXlPZk1vbnRoKXsKIHJldHVybiBkYXlPZk1vbnRoOwogfQogfSwKICdEYXRlUGlja2VyJzogewogc2VsZWN0X2FfdGltZTogIlNlbGVjdCBhIHRpbWUiLAogdXNlX21vdXNlX3doZWVsOiAiVXNlIHRoZSBtb3VzZSB3aGVlbCB0byBxdWlja2x5IGNoYW5nZSB2YWx1ZSIsCiB0aW1lX2NvbmZpcm1fYnV0dG9uOiAiT0siLAogYXBwbHlfcmFuZ2U6ICJBcHBseSIsCiBjYW5jZWw6ICJDYW5jZWwiLAogd2VlazogIldrIiB9LAogICdOdW1iZXInOiB7CiBkZWNpbWFsOiAnLicsCiBncm91cDogJywnLAogY3VycmVuY3k6IHsKIHByZWZpeDogJyQnCiB9CiB9LAogJ0Zvcm1WYWxpZGF0b3InOiB7InJlcXVpcmVkIjoiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iLCJyZXF1aXJlZENoayI6IlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIn0gfTsKCiB2YXIgZnVsbExvY2FsZSA9ICcnOwoKIAogIHZhciBDb3B5ID0ge3RyYW5zbGF0ZTpmdW5jdGlvbih0LGksdSl7dmFyIGU9J29iamVjdCchPXR5cGVvZiB0aGlzLmRpY3RbdF0/dGhpcy5kaWN0W3RdOmk/dGhpcy5kaWN0W3RdLnBsdXJhbDp0aGlzLmRpY3RbdF0uc2luZ3VsYXI7cmV0dXJuJ29iamVjdCc9PXR5cGVvZiB1JiYoZT10aGlzLnN1YnN0aXR1dGUoZSx1KSksZX0sc3Vic3RpdHV0ZTpmdW5jdGlvbih0LGkpe3JldHVybiB2b2lkIDAhPT10LnN1YnN0aXR1dGU/dC5zdWJzdGl0dXRlKGkpOnQucmVwbGFjZSgvXFw/XHsoW157fV0rKVx9L2csZnVuY3Rpb24odCx1KXtyZXR1cm4nXFwnPT10LmNoYXJBdCgwKT90LnNsaWNlKDEpOm51bGwhPWlbdV0/aVt1XTonJ30pfSxkaWN0Ont9fTsKIENvcHkuZGljdCA9IHsiZGlkX3lvdV9tZWFuX2VtYWlsIjoiRGlkIHlvdSBtZWFuIDxlbT57U1VHR0VTVH08XC9lbT4/IiwiZW1haWxfcGFzc3dvcmRfbWlzbWF0Y2giOiJFbWFpbCBhbmQgcGFzc3dvcmQgZG8gbm90IG1hdGNoIiwianVzdF9ub3ciOiJqdXN0IG5vdyIsInNlY29uZHNfYWdvIjp7InNpbmd1bGFyIjoie0NPVU5UfSBzZWNvbmQgYWdvIiwicGx1cmFsIjoie0NPVU5UfSBzZWNvbmRzIGFnbyJ9LCJtaW51dGVzX2FnbyI6eyJzaW5ndWxhciI6IntDT1VOVH0gbWludXRlIGFnbyIsInBsdXJhbCI6IntDT1VOVH0gbWludXRlcyBhZ28ifSwiaG91cnNfYWdvIjp7InNpbmd1bGFyIjoie0NPVU5UfSBob3VyIGFnbyIsInBsdXJhbCI6IntDT1VOVH0gaG91cnMgYWdvIn0sIm9wZW5fY29tbWVudF9ib3giOiJBZGQgbmV3IGNvbW1lbnQgaW5zdGVhZCAmcmFxdW87IiwidXJsX3VuYXZhaWxhYmxlIjoiU29ycnksIHRoaXMgdXJsIGlzIHVuYXZhaWxhYmxlLiIsInVuc2F2ZWRfY2hhbmdlc19nZW5lcmljIjoiWW91IGhhdmUgdW5zYXZlZCBjaGFuZ2VzLCBhcmUgeW91IHN1cmUgeW91IHdpc2ggdG8gbGVhdmU/IiwiYWRkIjoiQWRkIiwicmVtb3ZlIjoiUmVtb3ZlIiwic2VsZWN0IjoiU2VsZWN0Iiwibm9fZm9sbG93ZXJzX2Zvcl9sZXR0ZXIiOiJZb3UgZG9uJnJzcXVvO3QgZm9sbG93IGFueW9uZSB0aGF0IGJlZ2luIHdpdGggdGhlIGxldHRlciAmbGRxdW87e1BBR0VfTEVUVEVSfSZyZHF1bzsiLCJzaGFyZV9saW1pdF9yZWFjaGVkIjoiWW91IGhhdmUgcmVhY2hlZCB0aGUgbWF4aW11bSBudW1iZXIgb2YgdXNlcnMgdG8gc2hhcmUgd2l0aC4iLCJhdF9sZWFzdF9vbmUiOiJUaGVyZSBtdXN0IGJlIGF0IGxlYXN0IG9uZSB1c2VyLiIsImF2YWlsYWJsZSI6IkF2YWlsYWJsZSIsInVuYXZhaWxhYmxlIjoiVW5hdmFpbGFibGUiLCJicm93c2VfZXJyb3JfZ2VuZXJpYyI6IlNvcnJ5LCB0aGVyZSB3YXMgYW4gZXJyb3IiLCJicm93c2VfZXJyb3Jfbm9fdmlkZW9zIjoiU29ycnksIG5vIHZpZGVvcyBmb3VuZCIsImZvbGxvdyI6IkZvbGxvdyIsImZvbGxvd2luZyI6IkZvbGxvd2luZyIsInVuZm9sbG93IjoiVW5mb2xsb3ciLCJ1bmZvbGxvd2luZyI6IlVuZm9sbG93aW5nIiwiY291bnRfY29tbWVudHMiOnsic2luZ3VsYXIiOiJ7Q09VTlR9IGNvbW1lbnQiLCJwbHVyYWwiOiJ7Q09VTlR9IGNvbW1lbnRzIn0sImZpcnN0X2NvbW1lbnQiOiJCZSB0aGUgZmlyc3QgdG8gY29tbWVudFx1MjAyNiIsIm5vX2NvbW1lbnRzX2Zvcl95b3UiOiJGb3JiaWRkZW4uIFlvdSBjYW5ub3QgcG9zdCBjb21tZW50cyBvbiB0aGlzIHBhZ2UuIiwib29wcyI6Ik9vcHMhIiwicGxheWVyX3RyeV9hZ2FpbiI6IlRoYXQgd2Fzbid0IHN1cHBvc2VkIHRvIGhhcHBlbi4gUGxlYXNlIHRyeSBhZ2FpbiBpbiBhIGZldyBtaW51dGVzLiIsImR1cmF0aW9uX2lucHV0X21pbl9kdXJhdGlvbiI6IlRoZSBkdXJhdGlvbiBjYW5ub3QgYmUgbGVzcyB0aGFuIHtNSU5fRFVSQVRJT059LiIsImR1cmF0aW9uX2lucHV0X21heF9kdXJhdGlvbiI6IlRoZSBkdXJhdGlvbiBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuIHtNQVhfRFVSQVRJT059LiIsImR1cmF0aW9uX2lucHV0X2ludmFsaWRfY2hhcmFjdGVycyI6IjAtOSBhbmQgOiBhcmUgdGhlIG9ubHkgYWNjZXB0YWJsZSBpbnB1dHMuIiwiY2xvc2UiOiJDbG9zZSIsImV4cGFuZCI6IkV4cGFuZCIsImxvYWRpbmciOiJMb2FkaW5nLi4uIiwidG9wIjoidG9wIiwiYWR2YW5jZWRfc2VhcmNoIjoiQWR2YW5jZWQgU2VhcmNoIiwibm9fc3VnZ2VzdGlvbnMiOiJObyBzdWdnZXN0aW9ucyIsInJlY2VudF9zZWFyY2hlcyI6IlJlY2VudCBTZWFyY2hlcyIsInNlYXJjaF9hbGwiOiJTZWFyY2ggQWxsIG9mIFZpbWVvIiwiZW1haWxfYW5kX3Bhc3N3b3JkIjoiUGxlYXNlIGVudGVyIHlvdXIgZW1haWwgYW5kIHBhc3N3b3JkIiwiZW1haWxfYWRkcmVzcyI6IlBsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3MiLCJuYW1lX2VtYWlsX2FuZF9wYXNzd29yZCI6IlBsZWFzZSBlbnRlciB5b3VyIG5hbWUsIGVtYWlsLCBhbmQgcGFzc3dvcmQiLCJyZXF1aXJlZF9maWVsZCI6IlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIiwiQWN0aXZpdHkiOiJBY3Rpdml0eSIsIkZvbGxvdyI6IkZvbGxvdyIsIkZvbGxvd2luZyI6IkZvbGxvd2luZyIsIkxvYWRpbmciOiJMb2FkaW5nIiwiTm8gYWN0aXZpdHkgaW4gdGhlIHBhc3QgMzAgZGF5cyI6Ik5vIGFjdGl2aXR5IGluIHRoZSBwYXN0IDMwIGRheXMiLCJTZWUgYWxsIjoiU2VlIGFsbCIsIlVuZm9sbG93IjoiVW5mb2xsb3ciLCJWaWV3IG1lc3NhZ2UiOiJWaWV3IG1lc3NhZ2UiLCJXZSdsbCBhbGVydCB5b3Ugb25jZSBzb21ldGhpbmcgY29vbCBoYXBwZW5zLiI6IldlJ2xsIGFsZXJ0IHlvdSBvbmNlIHNvbWV0aGluZyBjb29sIGhhcHBlbnMuIn07Cjwvc2NyaXB0PgoKIDxzY3JpcHQgc3JjPSJodHRwczovL2YudmltZW9jZG4uY29tL2pzX29wdC91dGlscy9wbGF5ZXJfbWFuYWdlci9wbGF5ZXJfbWFuYWdlci5taW4uanM/NTVhYjcwODMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIGlmICh0eXBlb2YgcGxheWVyQXNzZXRVcmxzICE9PSAndW5kZWZpbmVkJykgewogIFBsYXllck1hbmFnZXIucnVuKHBsYXllckFzc2V0VXJscyk7CiAgfQogPC9zY3JpcHQ+CgogPHNjcmlwdCBzcmM9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vanNfb3B0L3JlYWN0X3Byb2RfY29tYmluZWQubWluLmpzP2I2ZWU3YTRlIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJodHRwczovL2YudmltZW9jZG4uY29tL2pzX29wdC9nbG9iYWxfbGliX2NvbWJpbmVkLm1pbi5qcz8wZGI2YjRiNyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvZ2xvYmFsX2NvbWJpbmVkLm1pbi5qcz9kZTY0MzQwMiI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvYWN0aXZpdHlfdG9wbmF2X2NvbWJpbmVkLm1pbi5qcz81MzliNmM4MyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvbW9kdWxlcy9nbG9iYWwvYWJsaW5jb2xuL2hvc3RfdmlkZW9zLm1pbi5qcz82NWRjNDUxYSI+PC9zY3JpcHQ+CgogPHNjcmlwdCBhc3luYyBzcmM9Ii8vd3d3Lmdvb2dsZXRhZ21hbmFnZXIuY29tL2d0bS5qcz9pZD1HVE0tUkJLSyZsPV9ndG0iPjwvc2NyaXB0PgogPHNjcmlwdD4KIGZ1bmN0aW9uIG9uVmltZW9Eb21SZWFkeShlKSB7CiAKICAgaWYgKCF2aW1lby5ieXBhc3NfcGxheWVyX3Jlc3BvbnNpdmVfZGVsZWdhdGVzKSB7CiB2aW1lby5wbGF5ZXJfcmVzcG9uc2l2ZV9kZWxlZ2F0ZXMgPSB2aW1lby5wbGF5ZXJfcmVzcG9uc2l2ZV9kZWxlZ2F0ZXMgfHwge307CiB2aW1lby5wbGF5ZXJfcmVzcG9uc2l2ZV9kZWxlZ2F0ZXMud2lsbE9wZW5TaGFyZU92ZXJsYXkgPSB2aW1lby5wbGF5ZXJfcmVzcG9uc2l2ZV9kZWxlZ2F0ZXMud2lsbE9wZW5TaGFyZU92ZXJsYXkgfHwgZnVuY3Rpb24oaWQpIHsKIFBsYXllck1hbmFnZXIucGF1c2VBbGxQbGF5ZXJzKCk7CiB2aW1lby5zaGFyZS5Qb3B1cChpZCk7CiByZXR1cm4gZmFsc2U7CiB9OwoKIHZpbWVvLnBsYXllcl9yZXNwb25zaXZlX2RlbGVnYXRlcy53aWxsT3BlbkxvZ2luRm9ybSA9IHZpbWVvLnBsYXllcl9yZXNwb25zaXZlX2RlbGVnYXRlcy53aWxsT3BlbkxvZ2luRm9ybSB8fCBmdW5jdGlvbihpZCwgY29udGV4dCkgewogaWYgKHR5cGVvZiB2aW1lby5Nb2RhbCAhPT0gJ3VuZGVmaW5lZCcpIHsKIFBsYXllck1hbmFnZXIucGF1c2VBbGxQbGF5ZXJzKCk7CgogaWYgKGNvbnRleHQpIHsKIHZpbWVvLlNlc3Npb24uY3JlYXRlKHsgcGxheWVyOiAxLCBjbGlwX2lkOiBpZCwgY29udGV4dDogY29udGV4dCB9KTsKIH0KIGVsc2UgewogdmltZW8uU2Vzc2lvbi5jcmVhdGUoKTsKIH0KCiByZXR1cm4gZmFsc2U7CiB9CiB9OwoKIGlmIChQbGF5ZXJNYW5hZ2VyKSB7CiBQbGF5ZXJNYW5hZ2VyLnNldERlZmF1bHREZWxlZ2F0ZSh2aW1lby5wbGF5ZXJfcmVzcG9uc2l2ZV9kZWxlZ2F0ZXMpOwogfQogfQogCiBpZiAoUGxheWVyTWFuYWdlcikgewogUGxheWVyTWFuYWdlci5kaXNwYXRjaFJlYWR5U2lnbmFscygpOwogfQogCiAgfQoKICAkKGRvY3VtZW50KS5yZWFkeShvblZpbWVvRG9tUmVhZHkpOwogIDwvc2NyaXB0PgoKCiA8L2JvZHk+CjwvaHRtbD4K
148
- http_version:
149
- recorded_at: Mon, 27 Mar 2017 21:00:51 GMT
150
- recorded_with: VCR 3.0.3
@@ -1,65 +0,0 @@
1
- ---
2
- http_interactions:
3
- - request:
4
- method: head
5
- uri: https://api.vimeo.com/videos/74636562
6
- body:
7
- encoding: US-ASCII
8
- string: ''
9
- headers:
10
- User-Agent:
11
- - VideoInfo/2.7
12
- Authorization:
13
- - bearer 6b66b015a3504793b4f541d878f46ff6
14
- Accept:
15
- - application/vnd.vimeo.*+json;version=3.2
16
- response:
17
- status:
18
- code: 403
19
- message: Forbidden
20
- headers:
21
- Server:
22
- - nginx
23
- Content-Type:
24
- - application/vnd.vimeo.error+json
25
- Cache-Control:
26
- - no-cache, max-age=315360000
27
- Strict-Transport-Security:
28
- - max-age=15552000; includeSubDomains; preload
29
- X-Ratelimit-Limit:
30
- - '500'
31
- X-Ratelimit-Remaining:
32
- - '497'
33
- X-Ratelimit-Reset:
34
- - '2017-03-27T21:16:13+00:00'
35
- Expires:
36
- - Thu, 25 Mar 2027 21:01:13 GMT
37
- Via:
38
- - 1.1 varnish
39
- - 1.1 varnish
40
- Fastly-Debug-Digest:
41
- - 8a3883348689ddeb91a29864d5887cd8b059e3d8249182ea55e4d501f3d81f7b
42
- Content-Length:
43
- - '257'
44
- Accept-Ranges:
45
- - bytes
46
- Date:
47
- - Mon, 27 Mar 2017 21:01:13 GMT
48
- Connection:
49
- - keep-alive
50
- X-Served-By:
51
- - cache-iad2123-IAD, cache-lax8640-LAX
52
- X-Cache:
53
- - MISS, MISS
54
- X-Cache-Hits:
55
- - 0, 0
56
- X-Timer:
57
- - S1490648473.538216,VS0,VE110
58
- Vary:
59
- - Accept,Vimeo-Client-Id,Accept-Encoding
60
- body:
61
- encoding: UTF-8
62
- string: ''
63
- http_version:
64
- recorded_at: Mon, 27 Mar 2017 21:01:13 GMT
65
- recorded_with: VCR 3.0.3