briard 2.8.1 → 2.8.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (513) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/lib/briard/metadata.rb +21 -20
  4. data/lib/briard/readers/crossref_json_reader.rb +6 -5
  5. data/lib/briard/utils.rb +6 -2
  6. data/lib/briard/version.rb +1 -1
  7. data/spec/cli_spec.rb +64 -3
  8. data/spec/find_from_format_spec.rb +27 -0
  9. data/spec/fixtures/vcr_cassettes/Briard_CLI/convert_file/crossref_json/default.yml +51 -0
  10. data/spec/fixtures/vcr_cassettes/Briard_CLI/convert_file/crossref_json/to_bibtex.yml +51 -0
  11. data/spec/fixtures/vcr_cassettes/Briard_CLI/convert_file/crossref_json/to_crossref.yml +51 -0
  12. data/spec/fixtures/vcr_cassettes/Briard_CLI/convert_file/crossref_json/to_datacite.yml +51 -0
  13. data/spec/fixtures/vcr_cassettes/Briard_CLI/convert_file/crossref_json/to_schema_org.yml +51 -0
  14. data/spec/fixtures/vcr_cassettes/Briard_CLI/convert_from_id/crossref/default.yml +9 -9
  15. data/spec/fixtures/vcr_cassettes/Briard_CLI/convert_from_id/crossref/to_bibtex.yml +9 -9
  16. data/spec/fixtures/vcr_cassettes/Briard_CLI/convert_from_id/crossref/to_citation.yml +9 -9
  17. data/spec/fixtures/vcr_cassettes/Briard_CLI/convert_from_id/crossref/to_crossref.yml +9 -9
  18. data/spec/fixtures/vcr_cassettes/Briard_CLI/convert_from_id/crossref/to_datacite.yml +9 -9
  19. data/spec/fixtures/vcr_cassettes/Briard_CLI/convert_from_id/crossref/to_jats.yml +9 -9
  20. data/spec/fixtures/vcr_cassettes/Briard_CLI/convert_from_id/crossref/to_schema_org.yml +9 -9
  21. data/spec/fixtures/vcr_cassettes/Briard_CLI/convert_from_id/crossref_json/default.yml +120 -0
  22. data/spec/fixtures/vcr_cassettes/Briard_CLI/convert_from_id/crossref_json/to_bibtex.yml +112 -0
  23. data/spec/fixtures/vcr_cassettes/Briard_CLI/convert_from_id/crossref_json/to_citation.yml +112 -0
  24. data/spec/fixtures/vcr_cassettes/Briard_CLI/convert_from_id/crossref_json/to_crossref.yml +112 -0
  25. data/spec/fixtures/vcr_cassettes/Briard_CLI/convert_from_id/crossref_json/to_datacite.yml +112 -0
  26. data/spec/fixtures/vcr_cassettes/Briard_CLI/convert_from_id/crossref_json/to_schema_org.yml +112 -0
  27. data/spec/fixtures/vcr_cassettes/Briard_CLI/convert_from_id/datacite/default.yml +10 -10
  28. data/spec/fixtures/vcr_cassettes/Briard_CLI/convert_from_id/datacite/to_bibtex.yml +10 -10
  29. data/spec/fixtures/vcr_cassettes/Briard_CLI/convert_from_id/datacite/to_citation.yml +10 -10
  30. data/spec/fixtures/vcr_cassettes/Briard_CLI/convert_from_id/datacite/to_datacite.yml +10 -10
  31. data/spec/fixtures/vcr_cassettes/Briard_CLI/convert_from_id/datacite/to_datacite_json.yml +10 -10
  32. data/spec/fixtures/vcr_cassettes/Briard_CLI/convert_from_id/datacite/to_jats.yml +10 -10
  33. data/spec/fixtures/vcr_cassettes/Briard_CLI/convert_from_id/datacite/to_schema_org.yml +10 -10
  34. data/spec/fixtures/vcr_cassettes/Briard_CLI/convert_from_id/schema_org/default.yml +5 -5
  35. data/spec/fixtures/vcr_cassettes/Briard_CLI/convert_from_id/schema_org/to_datacite.yml +5 -5
  36. data/spec/fixtures/vcr_cassettes/Briard_CLI/convert_from_id/schema_org/to_schema_org.yml +7 -9
  37. data/spec/fixtures/vcr_cassettes/Briard_CLI/find_from_format_by_id/crossref.yml +4 -4
  38. data/spec/fixtures/vcr_cassettes/Briard_CLI/find_from_format_by_id/datacite.yml +4 -4
  39. data/spec/fixtures/vcr_cassettes/Briard_CLI/find_from_format_by_id/jalc.yml +4 -4
  40. data/spec/fixtures/vcr_cassettes/Briard_CLI/find_from_format_by_id/kisti.yml +4 -4
  41. data/spec/fixtures/vcr_cassettes/Briard_CLI/find_from_format_by_id/medra.yml +4 -4
  42. data/spec/fixtures/vcr_cassettes/Briard_CLI/find_from_format_by_id/op.yml +4 -4
  43. data/spec/fixtures/vcr_cassettes/Briard_Metadata/authors_as_string/author.yml +6 -6
  44. data/spec/fixtures/vcr_cassettes/Briard_Metadata/authors_as_string/no_author.yml +5 -5
  45. data/spec/fixtures/vcr_cassettes/Briard_Metadata/authors_as_string/single_author.yml +5 -5
  46. data/spec/fixtures/vcr_cassettes/Briard_Metadata/authors_as_string/with_organization.yml +5 -5
  47. data/spec/fixtures/vcr_cassettes/Briard_Metadata/change_datacite_metadata/change_state.yml +10 -10
  48. data/spec/fixtures/vcr_cassettes/Briard_Metadata/change_datacite_metadata/change_title.yml +10 -10
  49. data/spec/fixtures/vcr_cassettes/Briard_Metadata/change_metadata_as_datacite_xml/change_description.yml +5 -5
  50. data/spec/fixtures/vcr_cassettes/Briard_Metadata/change_metadata_as_datacite_xml/change_identifiers.yml +5 -5
  51. data/spec/fixtures/vcr_cassettes/Briard_Metadata/change_metadata_as_datacite_xml/change_license.yml +5 -5
  52. data/spec/fixtures/vcr_cassettes/Briard_Metadata/change_metadata_as_datacite_xml/change_license_name.yml +5 -5
  53. data/spec/fixtures/vcr_cassettes/Briard_Metadata/change_metadata_as_datacite_xml/change_license_url.yml +5 -5
  54. data/spec/fixtures/vcr_cassettes/Briard_Metadata/change_metadata_as_datacite_xml/change_state.yml +5 -5
  55. data/spec/fixtures/vcr_cassettes/Briard_Metadata/change_metadata_as_datacite_xml/validates_against_schema.yml +5 -5
  56. data/spec/fixtures/vcr_cassettes/Briard_Metadata/change_metadata_as_datacite_xml/with_data_citation.yml +5 -5
  57. data/spec/fixtures/vcr_cassettes/Briard_Metadata/datacite_api_url/doi.yml +5 -5
  58. data/spec/fixtures/vcr_cassettes/Briard_Metadata/datacite_api_url/doi_with_protocol.yml +6 -6
  59. data/spec/fixtures/vcr_cassettes/Briard_Metadata/datacite_api_url/dx_doi_org_url.yml +5 -5
  60. data/spec/fixtures/vcr_cassettes/Briard_Metadata/datacite_api_url/force_test_resolver.yml +6 -6
  61. data/spec/fixtures/vcr_cassettes/Briard_Metadata/datacite_api_url/https_url.yml +6 -6
  62. data/spec/fixtures/vcr_cassettes/Briard_Metadata/datacite_api_url/test_resolver.yml +5 -5
  63. data/spec/fixtures/vcr_cassettes/Briard_Metadata/datacite_api_url/test_resolver_http.yml +6 -6
  64. data/spec/fixtures/vcr_cassettes/Briard_Metadata/doi_from_url/doi.yml +6 -6
  65. data/spec/fixtures/vcr_cassettes/Briard_Metadata/doi_from_url/doi_with_special_characters.yml +6 -6
  66. data/spec/fixtures/vcr_cassettes/Briard_Metadata/doi_from_url/not_a_doi.yml +5 -5
  67. data/spec/fixtures/vcr_cassettes/Briard_Metadata/doi_from_url/sandbox_url.yml +6 -6
  68. data/spec/fixtures/vcr_cassettes/Briard_Metadata/doi_from_url/url.yml +6 -6
  69. data/spec/fixtures/vcr_cassettes/Briard_Metadata/doi_registration_agency/crossref.yml +10 -10
  70. data/spec/fixtures/vcr_cassettes/Briard_Metadata/doi_registration_agency/datacite.yml +9 -9
  71. data/spec/fixtures/vcr_cassettes/Briard_Metadata/doi_registration_agency/jalc.yml +9 -9
  72. data/spec/fixtures/vcr_cassettes/Briard_Metadata/doi_registration_agency/kisti.yml +9 -9
  73. data/spec/fixtures/vcr_cassettes/Briard_Metadata/doi_registration_agency/medra.yml +9 -9
  74. data/spec/fixtures/vcr_cassettes/Briard_Metadata/doi_registration_agency/not_a_valid_prefix.yml +6 -6
  75. data/spec/fixtures/vcr_cassettes/Briard_Metadata/doi_registration_agency/not_found.yml +9 -9
  76. data/spec/fixtures/vcr_cassettes/Briard_Metadata/doi_registration_agency/op.yml +10 -10
  77. data/spec/fixtures/vcr_cassettes/Briard_Metadata/doi_resolver/doi.yml +5 -5
  78. data/spec/fixtures/vcr_cassettes/Briard_Metadata/doi_resolver/doi_with_protocol.yml +5 -5
  79. data/spec/fixtures/vcr_cassettes/Briard_Metadata/doi_resolver/dx_doi_org_url.yml +5 -5
  80. data/spec/fixtures/vcr_cassettes/Briard_Metadata/doi_resolver/force_stage_resolver.yml +6 -6
  81. data/spec/fixtures/vcr_cassettes/Briard_Metadata/doi_resolver/https_url.yml +5 -5
  82. data/spec/fixtures/vcr_cassettes/Briard_Metadata/doi_resolver/stage_resolver.yml +6 -6
  83. data/spec/fixtures/vcr_cassettes/Briard_Metadata/doi_resolver/stage_resolver_http.yml +5 -5
  84. data/spec/fixtures/vcr_cassettes/Briard_Metadata/find_from_format_by_ID/crossref.yml +14 -14
  85. data/spec/fixtures/vcr_cassettes/Briard_Metadata/find_from_format_by_ID/crossref_doi_not_url.yml +14 -14
  86. data/spec/fixtures/vcr_cassettes/Briard_Metadata/find_from_format_by_ID/datacite.yml +14 -14
  87. data/spec/fixtures/vcr_cassettes/Briard_Metadata/find_from_format_by_ID/datacite_doi_http.yml +14 -14
  88. data/spec/fixtures/vcr_cassettes/Briard_Metadata/find_from_format_by_ID/github.yml +10 -10
  89. data/spec/fixtures/vcr_cassettes/Briard_Metadata/find_from_format_by_ID/orcid.yml +10 -10
  90. data/spec/fixtures/vcr_cassettes/Briard_Metadata/find_from_format_by_ID/schema_org.yml +10 -10
  91. data/spec/fixtures/vcr_cassettes/Briard_Metadata/find_from_format_by_ID/unknown_DOI_registration_agency.yml +14 -14
  92. data/spec/fixtures/vcr_cassettes/Briard_Metadata/find_from_format_from_file/bibtex.yml +10 -10
  93. data/spec/fixtures/vcr_cassettes/Briard_Metadata/find_from_format_from_file/citeproc.yml +10 -10
  94. data/spec/fixtures/vcr_cassettes/Briard_Metadata/find_from_format_from_file/codemeta.yml +10 -10
  95. data/spec/fixtures/vcr_cassettes/Briard_Metadata/find_from_format_from_file/crosscite.yml +10 -10
  96. data/spec/fixtures/vcr_cassettes/Briard_Metadata/find_from_format_from_file/crossref.yml +10 -10
  97. data/spec/fixtures/vcr_cassettes/Briard_Metadata/find_from_format_from_file/crossref_json.yml +121 -0
  98. data/spec/fixtures/vcr_cassettes/Briard_Metadata/find_from_format_from_file/datacite.yml +10 -10
  99. data/spec/fixtures/vcr_cassettes/Briard_Metadata/find_from_format_from_file/datacite_json.yml +10 -10
  100. data/spec/fixtures/vcr_cassettes/Briard_Metadata/find_from_format_from_file/ris.yml +10 -10
  101. data/spec/fixtures/vcr_cassettes/Briard_Metadata/find_from_format_from_file/schema_org.yml +10 -10
  102. data/spec/fixtures/vcr_cassettes/Briard_Metadata/find_from_format_from_string/crosscite.yml +10 -10
  103. data/spec/fixtures/vcr_cassettes/Briard_Metadata/find_from_format_from_string/crossref.yml +121 -0
  104. data/spec/fixtures/vcr_cassettes/Briard_Metadata/find_from_format_from_string/crossref_json.yml +121 -0
  105. data/spec/fixtures/vcr_cassettes/Briard_Metadata/find_from_format_from_string/datacite.yml +121 -0
  106. data/spec/fixtures/vcr_cassettes/Briard_Metadata/fos/hsh_to_fos_for_match.yml +6 -6
  107. data/spec/fixtures/vcr_cassettes/Briard_Metadata/fos/hsh_to_fos_for_with_schemeUri_in_hash.yml +6 -6
  108. data/spec/fixtures/vcr_cassettes/Briard_Metadata/fos/hsh_to_fos_match.yml +6 -6
  109. data/spec/fixtures/vcr_cassettes/Briard_Metadata/fos/hsh_to_fos_no_match.yml +6 -6
  110. data/spec/fixtures/vcr_cassettes/Briard_Metadata/fos/name_to_fos_for_match.yml +6 -6
  111. data/spec/fixtures/vcr_cassettes/Briard_Metadata/fos/name_to_fos_match.yml +5 -5
  112. data/spec/fixtures/vcr_cassettes/Briard_Metadata/fos/name_to_fos_no_match.yml +5 -5
  113. data/spec/fixtures/vcr_cassettes/Briard_Metadata/from_schema_org/with_id.yml +6 -6
  114. data/spec/fixtures/vcr_cassettes/Briard_Metadata/from_schema_org_creators/with_affiliation.yml +6 -6
  115. data/spec/fixtures/vcr_cassettes/Briard_Metadata/from_schema_org_creators/without_affiliation.yml +5 -5
  116. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_cff_metadata/cff-converter-python.yml +7 -7
  117. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_cff_metadata/ruby-cff.yml +10 -10
  118. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_cff_metadata/ruby-cff_repository_url.yml +8 -8
  119. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_codemeta_metadata/maremma.yml +8 -8
  120. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_codemeta_metadata/metadata_reports.yml +7 -7
  121. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/DOI_with_ORCID_ID.yml +9 -9
  122. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/DOI_with_SICI_DOI.yml +9 -9
  123. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/DOI_with_data_citation.yml +4 -65
  124. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/JaLC.yml +9 -9
  125. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/KISTI.yml +9 -9
  126. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/OP.yml +9 -9
  127. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/affiliation_is_space.yml +9 -9
  128. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/another_book.yml +9 -9
  129. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/another_book_chapter.yml +9 -9
  130. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/article_id_as_page_number.yml +9 -9
  131. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/author_literal.yml +11 -11
  132. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/book.yml +9 -9
  133. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/book_chapter.yml +9 -9
  134. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/book_chapter_with_RDF_for_container.yml +9 -9
  135. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/book_oup.yml +9 -9
  136. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/component.yml +9 -9
  137. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/dataset.yml +9 -9
  138. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/dataset_usda.yml +9 -9
  139. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/date_in_future.yml +9 -9
  140. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/dissertation.yml +9 -9
  141. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/empty_given_name.yml +9 -9
  142. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/invalid_date.yml +9 -9
  143. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/journal_article.yml +9 -9
  144. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/journal_article_original_language_title.yml +9 -9
  145. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/journal_article_with.yml +9 -9
  146. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/journal_article_with_RDF_for_container.yml +9 -9
  147. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/journal_article_with_funding.yml +9 -9
  148. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/journal_issue.yml +9 -9
  149. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/mEDRA.yml +9 -9
  150. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/markup.yml +9 -9
  151. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/missing_creator.yml +9 -9
  152. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/multiple_issn.yml +9 -9
  153. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/multiple_titles.yml +9 -9
  154. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/multiple_titles_with_missing.yml +9 -9
  155. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/not_found_error.yml +9 -9
  156. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/peer_review.yml +9 -9
  157. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/posted_content.yml +9 -9
  158. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/posted_content_copernicus.yml +9 -9
  159. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/report_osti.yml +11 -11
  160. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/vor_with_url.yml +9 -9
  161. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/yet_another_book.yml +9 -9
  162. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_metadata/yet_another_book_chapter.yml +9 -9
  163. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_json_raw/journal_article.yml +51 -0
  164. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/DOI_with_ORCID_ID.yml +9 -9
  165. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/DOI_with_SICI_DOI.yml +9 -9
  166. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/DOI_with_data_citation.yml +9 -9
  167. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/JaLC.yml +9 -9
  168. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/KISTI.yml +9 -9
  169. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/OP.yml +9 -9
  170. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/affiliation_is_space.yml +9 -9
  171. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/another_book.yml +9 -9
  172. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/another_book_chapter.yml +9 -9
  173. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/article_id_as_page_number.yml +9 -9
  174. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/author_literal.yml +10 -10
  175. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/book.yml +9 -9
  176. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/book_chapter.yml +10 -10
  177. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/book_chapter_with_RDF_for_container.yml +9 -9
  178. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/book_oup.yml +9 -9
  179. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/component.yml +9 -9
  180. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/dataset.yml +9 -9
  181. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/dataset_usda.yml +9 -9
  182. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/date_in_future.yml +9 -9
  183. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/dissertation.yml +9 -9
  184. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/empty_given_name.yml +9 -9
  185. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/invalid_date.yml +9 -9
  186. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/journal_article.yml +9 -9
  187. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/journal_article_original_language_title.yml +9 -9
  188. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/journal_article_with.yml +9 -9
  189. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/journal_article_with_RDF_for_container.yml +9 -9
  190. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/journal_article_with_funding.yml +9 -9
  191. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/journal_issue.yml +9 -9
  192. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/mEDRA.yml +9 -9
  193. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/markup.yml +9 -9
  194. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/missing_creator.yml +9 -9
  195. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/multiple_issn.yml +9 -9
  196. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/multiple_titles.yml +9 -9
  197. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/multiple_titles_with_missing.yml +9 -9
  198. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/not_found_error.yml +9 -9
  199. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/peer_review.yml +9 -9
  200. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/posted_content.yml +9 -9
  201. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/posted_content_copernicus.yml +9 -9
  202. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/report_osti.yml +10 -10
  203. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/vor_with_url.yml +9 -9
  204. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/yet_another_book.yml +9 -9
  205. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_crossref_metadata/yet_another_book_chapter.yml +11 -11
  206. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datacite_json_metadata/metadata_from_api.yml +10 -10
  207. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datacite_metadata/BlogPosting.yml +10 -10
  208. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datacite_metadata/DOI_in_staging_system.yml +10 -10
  209. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datacite_metadata/DOI_in_staging_system_schema_3.yml +10 -10
  210. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datacite_metadata/DOI_in_with_related_id_system.yml +10 -10
  211. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datacite_metadata/DOI_not_found.yml +9 -9
  212. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datacite_metadata/Dataset.yml +10 -10
  213. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datacite_metadata/Funding.yml +10 -10
  214. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datacite_metadata/Funding_empty_awardTitle.yml +10 -10
  215. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datacite_metadata/Funding_schema_version_4.yml +10 -10
  216. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datacite_metadata/Referee_report_in_staging_system.yml +10 -10
  217. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datacite_metadata/Schema_org_type.yml +10 -10
  218. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datacite_metadata/author_only_full_name.yml +10 -10
  219. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datacite_metadata/author_with_scheme.yml +10 -10
  220. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datacite_metadata/author_with_wrong_orcid_scheme.yml +10 -10
  221. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datacite_metadata/cc-by_3_0_us.yml +10 -10
  222. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datacite_metadata/content_url.yml +10 -10
  223. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datacite_metadata/date.yml +10 -10
  224. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datacite_metadata/dissertation.yml +10 -10
  225. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datacite_metadata/doi_with_sign.yml +10 -10
  226. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datacite_metadata/empty_subject.yml +10 -10
  227. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datacite_metadata/even_more_subject_scheme_FOR.yml +10 -10
  228. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datacite_metadata/funding_references.yml +10 -10
  229. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datacite_metadata/funding_schema_version_3.yml +10 -10
  230. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datacite_metadata/is_identical_to.yml +10 -10
  231. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datacite_metadata/keywords_with_attributes.yml +10 -10
  232. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datacite_metadata/leading_and_trailing_whitespace.yml +10 -10
  233. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datacite_metadata/more_subject_scheme_FOR.yml +10 -10
  234. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datacite_metadata/multiple_author_names_in_one_creatorsName.yml +10 -10
  235. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datacite_metadata/multiple_licenses.yml +10 -10
  236. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datacite_metadata/series-information.yml +10 -10
  237. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datacite_metadata/subject_scheme.yml +10 -10
  238. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datacite_metadata/subject_scheme_FOR.yml +10 -10
  239. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_date/publication_date.yml +6 -6
  240. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_date_from_date_parts/date.yml +5 -5
  241. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_date_from_date_parts/year-month.yml +6 -6
  242. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_date_from_date_parts/year.yml +5 -5
  243. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_date_from_parts/date.yml +5 -5
  244. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_date_from_parts/year-month.yml +5 -5
  245. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_date_from_parts/year.yml +6 -6
  246. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_date_parts/date.yml +5 -5
  247. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_date_parts/year-month.yml +5 -5
  248. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_date_parts/year.yml +5 -5
  249. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datetime_from_time/future.yml +6 -6
  250. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datetime_from_time/invalid.yml +5 -5
  251. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datetime_from_time/nil.yml +6 -6
  252. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datetime_from_time/past.yml +5 -5
  253. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_datetime_from_time/present.yml +5 -5
  254. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_one_author/has_familyName.yml +6 -6
  255. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_one_author/has_name_in_Thai.yml +6 -6
  256. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_one_author/has_name_in_display-order.yml +6 -6
  257. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_one_author/has_name_in_display-order_with_ORCID.yml +6 -6
  258. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_one_author/has_name_in_sort-order.yml +6 -6
  259. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_one_author/hyper-authorship.yml +6 -6
  260. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_one_author/is_organization.yml +6 -6
  261. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_one_author/multiple_author_names_in_one_field.yml +6 -6
  262. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_one_author/multiple_name_identifier.yml +6 -6
  263. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_one_author/name_with_affiliation.yml +6 -6
  264. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_one_author/name_with_affiliation_crossref.yml +9 -9
  265. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_one_author/name_with_role.yml +6 -6
  266. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_one_author/only_familyName_and_givenName.yml +2 -2
  267. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_schema_org_metadata/BlogPosting.yml +16 -16
  268. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_schema_org_metadata/BlogPosting_with_new_DOI.yml +16 -16
  269. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_schema_org_metadata/get_schema_org_metadata_front_matter/BlogPosting.yml +16 -16
  270. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_schema_org_metadata/harvard_dataverse.yml +6 -6
  271. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_schema_org_metadata/pangaea.yml +2 -2
  272. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_schema_org_metadata/zenodo.yml +9 -9
  273. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_series_information/only_title.yml +6 -6
  274. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_series_information/title_and_pages.yml +5 -5
  275. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_series_information/title_volume_and_pages.yml +5 -5
  276. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_series_information/title_volume_issue_and_pages.yml +6 -6
  277. data/spec/fixtures/vcr_cassettes/Briard_Metadata/github/github_as_cff_url.yml +6 -6
  278. data/spec/fixtures/vcr_cassettes/Briard_Metadata/github/github_as_codemeta_url.yml +6 -6
  279. data/spec/fixtures/vcr_cassettes/Briard_Metadata/github/github_from_url.yml +6 -6
  280. data/spec/fixtures/vcr_cassettes/Briard_Metadata/github/github_from_url_cff_file.yml +5 -5
  281. data/spec/fixtures/vcr_cassettes/Briard_Metadata/github/github_from_url_file.yml +5 -5
  282. data/spec/fixtures/vcr_cassettes/Briard_Metadata/handle_input/DOI_RA_not_Crossref_or_DataCite.yml +4 -4
  283. data/spec/fixtures/vcr_cassettes/Briard_Metadata/handle_input/unknown_DOI_prefix.yml +4 -4
  284. data/spec/fixtures/vcr_cassettes/Briard_Metadata/insert_contributors/none.yml +6 -6
  285. data/spec/fixtures/vcr_cassettes/Briard_Metadata/insert_creators/insert.yml +6 -6
  286. data/spec/fixtures/vcr_cassettes/Briard_Metadata/insert_dates/insert.yml +6 -6
  287. data/spec/fixtures/vcr_cassettes/Briard_Metadata/insert_descriptions/insert.yml +6 -6
  288. data/spec/fixtures/vcr_cassettes/Briard_Metadata/insert_identifier/doi.yml +6 -6
  289. data/spec/fixtures/vcr_cassettes/Briard_Metadata/insert_language/insert.yml +6 -6
  290. data/spec/fixtures/vcr_cassettes/Briard_Metadata/insert_person/creator_only_name.yml +6 -6
  291. data/spec/fixtures/vcr_cassettes/Briard_Metadata/insert_publication_year/insert.yml +6 -6
  292. data/spec/fixtures/vcr_cassettes/Briard_Metadata/insert_publisher/insert.yml +6 -6
  293. data/spec/fixtures/vcr_cassettes/Briard_Metadata/insert_related_identifiers/insert.yml +6 -6
  294. data/spec/fixtures/vcr_cassettes/Briard_Metadata/insert_related_identifiers/related_identifier.yml +6 -6
  295. data/spec/fixtures/vcr_cassettes/Briard_Metadata/insert_resource_type/insert.yml +6 -6
  296. data/spec/fixtures/vcr_cassettes/Briard_Metadata/insert_rights_list/insert.yml +6 -6
  297. data/spec/fixtures/vcr_cassettes/Briard_Metadata/insert_sizes/insert.yml +6 -6
  298. data/spec/fixtures/vcr_cassettes/Briard_Metadata/insert_subjects/insert.yml +6 -6
  299. data/spec/fixtures/vcr_cassettes/Briard_Metadata/insert_titles/insert.yml +6 -6
  300. data/spec/fixtures/vcr_cassettes/Briard_Metadata/insert_version/insert.yml +6 -6
  301. data/spec/fixtures/vcr_cassettes/Briard_Metadata/is_personal_name_/has_comma.yml +6 -6
  302. data/spec/fixtures/vcr_cassettes/Briard_Metadata/is_personal_name_/has_family_name.yml +6 -6
  303. data/spec/fixtures/vcr_cassettes/Briard_Metadata/is_personal_name_/has_id.yml +5 -5
  304. data/spec/fixtures/vcr_cassettes/Briard_Metadata/is_personal_name_/has_known_given_name.yml +5 -5
  305. data/spec/fixtures/vcr_cassettes/Briard_Metadata/is_personal_name_/has_no_info.yml +5 -5
  306. data/spec/fixtures/vcr_cassettes/Briard_Metadata/is_personal_name_/has_orcid_id.yml +5 -5
  307. data/spec/fixtures/vcr_cassettes/Briard_Metadata/is_personal_name_/has_type_organization.yml +5 -5
  308. data/spec/fixtures/vcr_cassettes/Briard_Metadata/jsonlint/missing_comma.yml +10 -10
  309. data/spec/fixtures/vcr_cassettes/Briard_Metadata/jsonlint/nil.yml +10 -10
  310. data/spec/fixtures/vcr_cassettes/Briard_Metadata/jsonlint/overlapping_keys.yml +10 -10
  311. data/spec/fixtures/vcr_cassettes/Briard_Metadata/jsonlint/valid.yml +10 -10
  312. data/spec/fixtures/vcr_cassettes/Briard_Metadata/normalize_cc_url/not_found.yml +5 -5
  313. data/spec/fixtures/vcr_cassettes/Briard_Metadata/normalize_cc_url/with_trailing_slash.yml +5 -5
  314. data/spec/fixtures/vcr_cassettes/Briard_Metadata/normalize_cc_url/with_trailing_slash_and_to_https.yml +6 -6
  315. data/spec/fixtures/vcr_cassettes/Briard_Metadata/normalize_doi/SICI_doi.yml +5 -5
  316. data/spec/fixtures/vcr_cassettes/Briard_Metadata/normalize_doi/doi.yml +6 -6
  317. data/spec/fixtures/vcr_cassettes/Briard_Metadata/normalize_doi/doi_force_datacite_sandbox.yml +5 -5
  318. data/spec/fixtures/vcr_cassettes/Briard_Metadata/normalize_doi/doi_from_datacite_sandbox.yml +6 -6
  319. data/spec/fixtures/vcr_cassettes/Briard_Metadata/normalize_doi/doi_from_url_without_doi_proxy.yml +5 -5
  320. data/spec/fixtures/vcr_cassettes/Briard_Metadata/normalize_doi/doi_prefix_too_long.yml +5 -5
  321. data/spec/fixtures/vcr_cassettes/Briard_Metadata/normalize_doi/doi_prefix_with_string.yml +5 -5
  322. data/spec/fixtures/vcr_cassettes/Briard_Metadata/normalize_doi/doi_with_protocol.yml +5 -5
  323. data/spec/fixtures/vcr_cassettes/Briard_Metadata/normalize_doi/dx_doi_org_url.yml +5 -5
  324. data/spec/fixtures/vcr_cassettes/Briard_Metadata/normalize_doi/https_url.yml +6 -6
  325. data/spec/fixtures/vcr_cassettes/Briard_Metadata/normalize_doi/not_valid_doi_prefix.yml +6 -6
  326. data/spec/fixtures/vcr_cassettes/Briard_Metadata/normalize_doi/url_with_one_slash.yml +6 -6
  327. data/spec/fixtures/vcr_cassettes/Briard_Metadata/normalize_id/doi.yml +6 -6
  328. data/spec/fixtures/vcr_cassettes/Briard_Metadata/normalize_id/doi_as_url.yml +6 -6
  329. data/spec/fixtures/vcr_cassettes/Briard_Metadata/normalize_id/filename.yml +65 -0
  330. data/spec/fixtures/vcr_cassettes/Briard_Metadata/normalize_id/ftp.yml +5 -5
  331. data/spec/fixtures/vcr_cassettes/Briard_Metadata/normalize_id/invalid_url.yml +5 -5
  332. data/spec/fixtures/vcr_cassettes/Briard_Metadata/normalize_id/sandbox_via_options.yml +5 -5
  333. data/spec/fixtures/vcr_cassettes/Briard_Metadata/normalize_id/sandbox_via_url.yml +6 -6
  334. data/spec/fixtures/vcr_cassettes/Briard_Metadata/normalize_id/string.yml +5 -5
  335. data/spec/fixtures/vcr_cassettes/Briard_Metadata/normalize_id/url.yml +5 -5
  336. data/spec/fixtures/vcr_cassettes/Briard_Metadata/normalize_id/url_with_utf-8.yml +5 -5
  337. data/spec/fixtures/vcr_cassettes/Briard_Metadata/normalize_ids/doi.yml +6 -6
  338. data/spec/fixtures/vcr_cassettes/Briard_Metadata/normalize_ids/url.yml +5 -5
  339. data/spec/fixtures/vcr_cassettes/Briard_Metadata/normalize_issn/from_array.yml +5 -5
  340. data/spec/fixtures/vcr_cassettes/Briard_Metadata/normalize_issn/from_empty_array.yml +5 -5
  341. data/spec/fixtures/vcr_cassettes/Briard_Metadata/normalize_issn/from_hash.yml +5 -5
  342. data/spec/fixtures/vcr_cassettes/Briard_Metadata/normalize_issn/from_string.yml +5 -5
  343. data/spec/fixtures/vcr_cassettes/Briard_Metadata/normalize_url/uri.yml +6 -6
  344. data/spec/fixtures/vcr_cassettes/Briard_Metadata/normalize_url/with_trailing_slash.yml +5 -5
  345. data/spec/fixtures/vcr_cassettes/Briard_Metadata/normalize_url/with_trailing_slash_and_to_https.yml +6 -6
  346. data/spec/fixtures/vcr_cassettes/Briard_Metadata/parse_attributes/array.yml +5 -5
  347. data/spec/fixtures/vcr_cassettes/Briard_Metadata/parse_attributes/array_of_strings.yml +6 -6
  348. data/spec/fixtures/vcr_cassettes/Briard_Metadata/parse_attributes/first.yml +6 -6
  349. data/spec/fixtures/vcr_cassettes/Briard_Metadata/parse_attributes/hash.yml +5 -5
  350. data/spec/fixtures/vcr_cassettes/Briard_Metadata/parse_attributes/nil.yml +5 -5
  351. data/spec/fixtures/vcr_cassettes/Briard_Metadata/parse_attributes/string.yml +5 -5
  352. data/spec/fixtures/vcr_cassettes/Briard_Metadata/random_doi/decode_anothe_doi.yml +6 -6
  353. data/spec/fixtures/vcr_cassettes/Briard_Metadata/random_doi/decode_doi.yml +5 -5
  354. data/spec/fixtures/vcr_cassettes/Briard_Metadata/random_doi/encode_doi.yml +5 -5
  355. data/spec/fixtures/vcr_cassettes/Briard_Metadata/sanitize/onlies_keep_specific_tags.yml +5 -5
  356. data/spec/fixtures/vcr_cassettes/Briard_Metadata/sanitize/removes_a_tags.yml +5 -5
  357. data/spec/fixtures/vcr_cassettes/Briard_Metadata/spdx/hsh_to_spdx_id.yml +6 -6
  358. data/spec/fixtures/vcr_cassettes/Briard_Metadata/spdx/hsh_to_spdx_not_found.yml +5 -5
  359. data/spec/fixtures/vcr_cassettes/Briard_Metadata/spdx/hsh_to_spdx_url.yml +6 -6
  360. data/spec/fixtures/vcr_cassettes/Briard_Metadata/spdx/name_to_spdx_exists.yml +6 -6
  361. data/spec/fixtures/vcr_cassettes/Briard_Metadata/spdx/name_to_spdx_id.yml +6 -6
  362. data/spec/fixtures/vcr_cassettes/Briard_Metadata/to_schema_org/with_id.yml +6 -6
  363. data/spec/fixtures/vcr_cassettes/Briard_Metadata/to_schema_org_identifiers/with_identifiers.yml +6 -6
  364. data/spec/fixtures/vcr_cassettes/Briard_Metadata/validate_doi/doi.yml +6 -6
  365. data/spec/fixtures/vcr_cassettes/Briard_Metadata/validate_funder_doi/1_7_10.yml +6 -6
  366. data/spec/fixtures/vcr_cassettes/Briard_Metadata/validate_funder_doi/1_7_11.yml +5 -5
  367. data/spec/fixtures/vcr_cassettes/Briard_Metadata/validate_funder_doi/1_7_12.yml +6 -6
  368. data/spec/fixtures/vcr_cassettes/Briard_Metadata/validate_funder_doi/1_7_13.yml +5 -5
  369. data/spec/fixtures/vcr_cassettes/Briard_Metadata/validate_funder_doi/1_7_14.yml +5 -5
  370. data/spec/fixtures/vcr_cassettes/Briard_Metadata/validate_funder_doi/1_7_4.yml +5 -5
  371. data/spec/fixtures/vcr_cassettes/Briard_Metadata/validate_funder_doi/1_7_5.yml +5 -5
  372. data/spec/fixtures/vcr_cassettes/Briard_Metadata/validate_funder_doi/1_7_6.yml +5 -5
  373. data/spec/fixtures/vcr_cassettes/Briard_Metadata/validate_funder_doi/1_7_7.yml +6 -6
  374. data/spec/fixtures/vcr_cassettes/Briard_Metadata/validate_funder_doi/1_7_8.yml +5 -5
  375. data/spec/fixtures/vcr_cassettes/Briard_Metadata/validate_funder_doi/1_7_9.yml +5 -5
  376. data/spec/fixtures/vcr_cassettes/Briard_Metadata/validate_funder_doi/funder_doi.yml +5 -5
  377. data/spec/fixtures/vcr_cassettes/Briard_Metadata/validate_funder_doi/funder_doi_without_prefix.yml +5 -5
  378. data/spec/fixtures/vcr_cassettes/Briard_Metadata/validate_funder_doi/non-funder_doi.yml +5 -5
  379. data/spec/fixtures/vcr_cassettes/Briard_Metadata/validate_orcid/validate_orcid.yml +5 -5
  380. data/spec/fixtures/vcr_cassettes/Briard_Metadata/validate_orcid/validate_orcid_https.yml +5 -5
  381. data/spec/fixtures/vcr_cassettes/Briard_Metadata/validate_orcid/validate_orcid_id.yml +6 -6
  382. data/spec/fixtures/vcr_cassettes/Briard_Metadata/validate_orcid/validate_orcid_sandbox.yml +5 -5
  383. data/spec/fixtures/vcr_cassettes/Briard_Metadata/validate_orcid/validate_orcid_sandbox_https.yml +6 -6
  384. data/spec/fixtures/vcr_cassettes/Briard_Metadata/validate_orcid/validate_orcid_with_spaces.yml +5 -5
  385. data/spec/fixtures/vcr_cassettes/Briard_Metadata/validate_orcid/validate_orcid_wrong_id.yml +6 -6
  386. data/spec/fixtures/vcr_cassettes/Briard_Metadata/validate_orcid/validate_orcid_www.yml +5 -5
  387. data/spec/fixtures/vcr_cassettes/Briard_Metadata/validate_orcid_scheme/validate_orcid_scheme.yml +5 -5
  388. data/spec/fixtures/vcr_cassettes/Briard_Metadata/validate_orcid_scheme/validate_orcid_scheme_https.yml +5 -5
  389. data/spec/fixtures/vcr_cassettes/Briard_Metadata/validate_orcid_scheme/validate_orcid_scheme_trailing_slash.yml +6 -6
  390. data/spec/fixtures/vcr_cassettes/Briard_Metadata/validate_orcid_scheme/validate_orcid_scheme_www.yml +5 -5
  391. data/spec/fixtures/vcr_cassettes/Briard_Metadata/validate_prefix/doi.yml +5 -5
  392. data/spec/fixtures/vcr_cassettes/Briard_Metadata/validate_prefix/doi_as_url.yml +5 -5
  393. data/spec/fixtures/vcr_cassettes/Briard_Metadata/validate_prefix/doi_with_protocol.yml +6 -6
  394. data/spec/fixtures/vcr_cassettes/Briard_Metadata/validate_prefix/only_prefix.yml +5 -5
  395. data/spec/fixtures/vcr_cassettes/Briard_Metadata/validate_url/DOI.yml +5 -5
  396. data/spec/fixtures/vcr_cassettes/Briard_Metadata/validate_url/ISSN.yml +5 -5
  397. data/spec/fixtures/vcr_cassettes/Briard_Metadata/validate_url/URL.yml +5 -5
  398. data/spec/fixtures/vcr_cassettes/Briard_Metadata/validate_url/string.yml +5 -5
  399. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_bibtex/BlogPosting.yml +6 -6
  400. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_bibtex/Dataset.yml +6 -6
  401. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_bibtex/authors_with_affiliations.yml +5 -5
  402. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_bibtex/climate_data.yml +6 -6
  403. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_bibtex/from_schema_org.yml +16 -16
  404. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_bibtex/keywords_subject_scheme.yml +6 -6
  405. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_bibtex/maremma.yml +8 -8
  406. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_bibtex/text.yml +6 -6
  407. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_bibtex/with_data_citation.yml +5 -5
  408. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_bibtex/with_pages.yml +5 -5
  409. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_cff/Collection_of_Jupyter_notebooks.yml +6 -6
  410. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_cff/SoftwareSourceCode_Zenodo.yml +6 -6
  411. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_cff/SoftwareSourceCode_also_Zenodo.yml +6 -6
  412. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_cff/ruby-cff.yml +10 -10
  413. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_citation/Dataset.yml +6 -6
  414. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_citation/Journal_article.yml +5 -5
  415. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_citation/Journal_article_vancouver_style.yml +5 -5
  416. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_citation/Missing_author.yml +5 -5
  417. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_citation/interactive_resource_without_dates.yml +6 -6
  418. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_citation/software_w/version.yml +6 -6
  419. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_citeproc/Another_dataset.yml +6 -6
  420. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_citeproc/BlogPosting.yml +6 -6
  421. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_citeproc/BlogPosting_schema_org.yml +16 -16
  422. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_citeproc/Dataset.yml +6 -6
  423. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_citeproc/container_title.yml +6 -6
  424. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_citeproc/interactive_resource_without_dates.yml +6 -6
  425. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_citeproc/journal_article.yml +5 -5
  426. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_citeproc/keywords_subject_scheme.yml +6 -6
  427. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_citeproc/maremma.yml +8 -8
  428. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_citeproc/missing_creator.yml +5 -5
  429. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_citeproc/multiple_abstracts.yml +6 -6
  430. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_citeproc/organization_author.yml +7 -7
  431. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_citeproc/software.yml +6 -6
  432. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_citeproc/software_w/version.yml +6 -6
  433. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_citeproc/with_only_first_page.yml +5 -5
  434. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_citeproc/with_pages.yml +5 -5
  435. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_codemeta/SoftwareSourceCode_DataCite.yml +6 -6
  436. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_codemeta/SoftwareSourceCode_DataCite_check_codemeta_v2.yml +6 -6
  437. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_crosscite/datacite_database_attributes.yml +6 -6
  438. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_crosscite/maremma.yml +10 -10
  439. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_crosscite/with_ORCID_ID.yml +7 -7
  440. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_crosscite/with_data_citation.yml +5 -5
  441. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_crossref/another_schema_org_from_front-matter.yml +14 -14
  442. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_crossref/journal_article_from_datacite.yml +6 -6
  443. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_crossref/posted_content.yml +9 -9
  444. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_crossref/schema_org_from_another_science_blog.yml +10 -10
  445. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_crossref/schema_org_from_front_matter.yml +16 -16
  446. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_csv/climate_data.yml +6 -6
  447. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_csv/maremma.yml +8 -8
  448. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_csv/text.yml +6 -6
  449. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_csv/with_data_citation.yml +5 -5
  450. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_csv/with_pages.yml +7 -7
  451. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_datacite_json/from_schema_org.yml +16 -16
  452. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_datacite_json/maremma.yml +8 -8
  453. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_datacite_json/with_ORCID_ID.yml +7 -7
  454. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_datacite_json/with_data_citation.yml +5 -5
  455. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_datacite_xml/DOI_not_found.yml +5 -5
  456. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_datacite_xml/Dataset_in_schema_4_0.yml +6 -6
  457. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_datacite_xml/Text_pass-thru.yml +6 -6
  458. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_datacite_xml/Text_pass-thru_with_doi_in_options.yml +6 -6
  459. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_datacite_xml/maremma.yml +8 -8
  460. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_datacite_xml/with_ORCID_ID.yml +7 -7
  461. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_datacite_xml/with_data_citation.yml +5 -5
  462. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_datacite_xml/with_editor.yml +5 -5
  463. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_datacite_xml/with_version.yml +6 -6
  464. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_jats_xml/Dataset_in_schema_4_0.yml +6 -6
  465. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_jats_xml/Text_pass-thru.yml +6 -6
  466. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_jats_xml/book_chapter.yml +5 -5
  467. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_jats_xml/from_schema_org.yml +16 -16
  468. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_jats_xml/interactive_resource_without_dates.yml +6 -6
  469. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_jats_xml/maremma.yml +8 -8
  470. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_jats_xml/with_ORCID_ID.yml +5 -5
  471. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_jats_xml/with_data_citation.yml +5 -5
  472. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_jats_xml/with_editor.yml +5 -5
  473. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_rdf_xml/BlogPosting.yml +6 -6
  474. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_rdf_xml/BlogPosting_schema_org.yml +16 -16
  475. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_rdf_xml/journal_article.yml +5 -5
  476. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_rdf_xml/maremma.yml +8 -8
  477. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_rdf_xml/with_pages.yml +7 -7
  478. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_ris/BlogPosting.yml +6 -6
  479. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_ris/BlogPosting_schema_org.yml +16 -16
  480. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_ris/Dataset.yml +6 -6
  481. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_ris/alternate_name.yml +6 -6
  482. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_ris/journal_article.yml +5 -5
  483. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_ris/keywords_with_subject_scheme.yml +6 -6
  484. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_ris/maremma.yml +10 -10
  485. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_ris/with_pages.yml +5 -5
  486. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_schema_org/Another_Schema_org_JSON.yml +6 -6
  487. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_schema_org/Funding.yml +10 -10
  488. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_schema_org/Funding_OpenAIRE.yml +10 -10
  489. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_schema_org/Schema_org_JSON.yml +6 -6
  490. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_schema_org/Schema_org_JSON_Cyark.yml +10 -10
  491. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_schema_org/Schema_org_JSON_IsSupplementTo.yml +10 -10
  492. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_schema_org/alternate_identifiers.yml +6 -6
  493. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_schema_org/data_catalog.yml +6 -6
  494. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_schema_org/geo_location_box.yml +6 -6
  495. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_schema_org/interactive_resource_without_dates.yml +6 -6
  496. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_schema_org/journal_article.yml +5 -5
  497. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_schema_org/maremma_schema_org_JSON.yml +10 -10
  498. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_schema_org/series_information.yml +6 -6
  499. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_schema_org/subject_scheme.yml +6 -6
  500. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_schema_org/subject_scheme_multiple_keywords.yml +6 -6
  501. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_turtle/BlogPosting.yml +6 -6
  502. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_turtle/BlogPosting_schema_org.yml +16 -16
  503. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_turtle/Dataset.yml +6 -6
  504. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_turtle/journal_article.yml +5 -5
  505. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_turtle/with_pages.yml +7 -7
  506. data/spec/metadata_spec.rb +26 -0
  507. data/spec/readers/crossref_json_reader_spec.rb +2 -4
  508. data/spec/readers/crossref_reader_spec.rb +2 -2
  509. data/spec/utils_spec.rb +6 -0
  510. metadata +19 -5
  511. data/spec/fixtures/vcr_cassettes/Briard_Metadata/doi_from_url/crossref_api_url.yml +0 -65
  512. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_one_author/name_with_affiliation_and_country.yml +0 -66
  513. data/spec/fixtures/vcr_cassettes/Briard_Metadata/is_personal_name_/has_family_name_crossref.yml +0 -65
@@ -19,15 +19,15 @@ http_interactions:
19
19
  message: OK
20
20
  headers:
21
21
  Date:
22
- - Mon, 21 Nov 2022 12:34:31 GMT
22
+ - Wed, 23 Nov 2022 08:33:14 GMT
23
23
  Content-Type:
24
24
  - text/html;charset=UTF-8
25
25
  Connection:
26
26
  - keep-alive
27
27
  Set-Cookie:
28
- - AWSALB=wP/ch5I4kJOFzhyFWU/I42QQ9JorViPeKYt+RNbOLqsgZn1mduNonI5R66+kAlj9aqOwL6MHS5qItN9XuxdlTuLQcxiANdUY4murfrFImDiiudund3GJ+NZmopkz;
29
- Expires=Mon, 28 Nov 2022 12:34:30 GMT; Path=/, AWSALBCORS=wP/ch5I4kJOFzhyFWU/I42QQ9JorViPeKYt+RNbOLqsgZn1mduNonI5R66+kAlj9aqOwL6MHS5qItN9XuxdlTuLQcxiANdUY4murfrFImDiiudund3GJ+NZmopkz;
30
- Expires=Mon, 28 Nov 2022 12:34:30 GMT; Path=/; SameSite=None; Secure, JSESSIONID=a2ed1da72407748ebc477abac46a;
28
+ - AWSALB=ANfIx7enPUJzIogDzrO4kIO0QsBvM2NYl8gT1LrXzJSq/frro8LUulT3k8MOcmG8OoC0dRqbhZ+AhO47uNc9orSYodIoY54QyAF8Y1dE1DyElD2jE64IfU6bzH24;
29
+ Expires=Wed, 30 Nov 2022 08:33:13 GMT; Path=/, AWSALBCORS=ANfIx7enPUJzIogDzrO4kIO0QsBvM2NYl8gT1LrXzJSq/frro8LUulT3k8MOcmG8OoC0dRqbhZ+AhO47uNc9orSYodIoY54QyAF8Y1dE1DyElD2jE64IfU6bzH24;
30
+ Expires=Wed, 30 Nov 2022 08:33:13 GMT; Path=/; SameSite=None; Secure, JSESSIONID=39ea26116182b79068f66f4911ce;
31
31
  Path=/; Secure; HttpOnly
32
32
  Server:
33
33
  - Apache
@@ -36,7 +36,7 @@ http_interactions:
36
36
  body:
37
37
  encoding: ASCII-8BIT
38
38
  string: !binary |-
39
- PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnID8+CjwhRE9DVFlQRSBodG1sPgo8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+PGhlYWQgaWQ9ImpfaWR0MTkiPjwhLS0gR2xvYmFsIHNpdGUgdGFnIChndGFnLmpzKSAtIEdvb2dsZSBBbmFseXRpY3MgLS0+CjxzY3JpcHQgYXN5bmM9ImFzeW5jIiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZXRhZ21hbmFnZXIuY29tL2d0YWcvanM/aWQ9VUEtNjE3NTMzMzQtMSI+PC9zY3JpcHQ+CjxzY3JpcHQ+CiAgLy88IVtDREFUQVsKICB3aW5kb3cuZGF0YUxheWVyID0gd2luZG93LmRhdGFMYXllciB8fCBbXTsKICBmdW5jdGlvbiBndGFnKCl7ZGF0YUxheWVyLnB1c2goYXJndW1lbnRzKTt9CiAgZ3RhZygnanMnLCBuZXcgRGF0ZSgpKTsgZ3RhZygnY29uZmlnJywgJ1VBLTYxNzUzMzM0LTEnKTsKCiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBlbmFibGVBbmFseXRpY3NFdmVudENhcHR1cmUsIGZhbHNlKTsKCiAgZnVuY3Rpb24gZW5hYmxlQW5hbHl0aWNzRXZlbnRDYXB0dXJlKCkgewogICAgLy8gRG93bmxvYWQgYnV0dG9uCiAgICAkKGRvY3VtZW50KS5vbigiY2xpY2siLCAiLmJ0bi1kb3dubG9hZCwgLmJ0bi1kb3dubG9hZC5kcm9wZG93bi10b2dnbGUgKyB1bC5kcm9wZG93bi1tZW51IGxpIGEiLCBmdW5jdGlvbigpIHsKICAgICAgdmFyIGNhdGVnb3J5ID0gc3RyaXBTaXplKCQodGhpcykudGV4dCgpKTsKICAgICAgdmFyIGxhYmVsID0gZ2V0RmlsZUlkKCQodGhpcykpOwogICAgICBndGFnKCdldmVudCcsICdEb3dubG9hZCcseydldmVudF9jYXRlZ29yeScgOiBjYXRlZ29yeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXZlbnRfbGFiZWwnIDogbGFiZWx9KTsKICAgIH0pOwoKICAgIC8vIFJlcXVlc3QgQWNjZXNzIGJ1dHRvbgogICAgJChkb2N1bWVudCkub24oImNsaWNrIiwgIi5idG4tcmVxdWVzdCIsIGZ1bmN0aW9uKCkgewogICAgICB2YXIgY2F0ZWdvcnkgPSAkKHRoaXMpLnRleHQoKTsKICAgICAgdmFyIGxhYmVsID0gZ2V0RmlsZUlkKCQodGhpcykpOwogICAgICBndGFnKCdldmVudCcsICdSZXF1ZXN0IEFjY2VzcycsIHsnZXZlbnRfY2F0ZWdvcnknIDogY2F0ZWdvcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXZlbnRfbGFiZWwnIDogbGFiZWx9KTsKICAgIH0pOwoKICAgIC8vIEV4cGxvcmUgYnV0dG9uCiAgICAkKGRvY3VtZW50KS5vbigiY2xpY2siLCAiLmJ0bi1leHBsb3JlLCAuYnRuLWV4cGxvcmUuZHJvcGRvd24tdG9nZ2xlICsgdWwuZHJvcGRvd24tbWVudSBsaSBhIiwgZnVuY3Rpb24oKSB7CiAgICAgIHZhciBjYXRlZ29yeSA9ICQodGhpcykudGV4dCgpOwogICAgICB2YXIgbGFiZWwgPSBnZXRGaWxlSWQoJCh0aGlzKSk7CiAgICAgIGd0YWcoJ2V2ZW50JywgJ0V4cGxvcmUnLCB7J2V2ZW50X2NhdGVnb3J5JyA6IGNhdGVnb3J5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdldmVudF9sYWJlbCcgOiBsYWJlbH0pOwogICAgfSk7CgogICAgLy8gQ29tcHV0ZSBidXR0b24KICAgICQoZG9jdW1lbnQpLm9uKCJjbGljayIsICIuYnRuLWNvbXB1dGUsIC5idG4tY29tcHV0ZS5kcm9wZG93bi10b2dnbGUgKyB1bC5kcm9wZG93bi1tZW51IGxpIGEiLCBmdW5jdGlvbigpIHsKICAgICAgdmFyIGNhdGVnb3J5ID0gJCh0aGlzKS50ZXh0KCk7CiAgICAgIHZhciBsYWJlbCA9IGdldEZpbGVJZCgkKHRoaXMpKTsKICAgICAgZ3RhZygnZXZlbnQnLCAnQ29tcHV0ZScsIHsnZXZlbnRfY2F0ZWdvcnknIDogY2F0ZWdvcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V2ZW50X2xhYmVsJyA6IGxhYmVsfSk7CiAgICB9KTsKCiAgICAvLyBQcmV2aWV3IGJ1dHRvbgogICAgJChkb2N1bWVudCkub24oImNsaWNrIiwgIi5idG4tcHJldmlldywgLmJ0bi1wcmV2aWV3LmRyb3Bkb3duLXRvZ2dsZSArIHVsLmRyb3Bkb3duLW1lbnUgbGkgYSIsIGZ1bmN0aW9uKCkgewogICAgICB2YXIgY2F0ZWdvcnkgPSAkKHRoaXMpLnRleHQoKTsKICAgICAgdmFyIGxhYmVsID0gZ2V0RmlsZUlkKCQodGhpcykpOwogICAgICBndGFnKCdldmVudCcsICdQcmV2aWV3JywgeydldmVudF9jYXRlZ29yeScgOiBjYXRlZ29yeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXZlbnRfbGFiZWwnIDogbGFiZWx9KTsKICAgIH0pOwoKICAgIC8vIENpdGUgYnV0dG9uCiAgICAkKGRvY3VtZW50KS5vbigiY2xpY2siLCAiLmRvd25sb2FkQ2l0YXRpb24gKyB1bC5kcm9wZG93bi1tZW51IGxpIGEiLCBmdW5jdGlvbigpIHsKICAgICAgdmFyIGNhdGVnb3J5ID0gJCh0aGlzKS50ZXh0KCk7CiAgICAgIHZhciBsYWJlbCA9ICdVbmtub3duJzsKICAgICAgaWYoJCgnI2ZpbGVGb3JtJykubGVuZ3RoID4gMCkgewogICAgICAgIGxhYmVsID0gc3RyaXBJZCgkKCcjZmlsZUZvcm0nKS5hdHRyKCdhY3Rpb24nKSk7CiAgICAgIH0gZWxzZSBpZigkKCcjZGF0YXNldEZvcm0nKS5sZW5ndGggPiAwKSB7CiAgICAgICAgbGFiZWwgPSBzdHJpcElkKCQoJyNkYXRhc2V0Rm9ybScpLmF0dHIoJ2FjdGlvbicpKTsKICAgICAgfQogICAgICBndGFnKCdldmVudCcsICdEb3dubG9hZCBDaXRhdGlvbicsIHsnZXZlbnRfY2F0ZWdvcnknIDogY2F0ZWdvcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXZlbnRfbGFiZWwnIDogbGFiZWx9KTsKICAgIH0pOwoKICAgIC8vIEV4cG9ydCBNZXRhZGF0YSBidXR0b24KICAgICQoZG9jdW1lbnQpLm9uKCJjbGljayIsICIuYnRuLWV4cG9ydCArIHVsLmRyb3Bkb3duLW1lbnUgbGkgYSIsIGZ1bmN0aW9uKCkgewogICAgICB2YXIgY2F0ZWdvcnkgPSAkKHRoaXMpLnRleHQoKTsKICAgICAgdmFyIGxhYmVsID0gJ1Vua25vd24nOwogICAgICBpZigkKCcjZmlsZUZvcm0nKS5sZW5ndGggPiAwKSB7CiAgICAgICAgbGFiZWwgPSBzdHJpcElkKCQoJyNmaWxlRm9ybScpLmF0dHIoJ2FjdGlvbicpKTsKICAgICAgfSBlbHNlIGlmKCQoJyNkYXRhc2V0Rm9ybScpLmxlbmd0aCA+IDApIHsKICAgICAgICBsYWJlbCA9IHN0cmlwSWQoJCgnI2RhdGFzZXRGb3JtJykuYXR0cignYWN0aW9uJykpOwogICAgICB9CiAgICAgIGd0YWcoJ2V2ZW50JywgJ0V4cG9ydCBNZXRhZGF0YScsIHsnZXZlbnRfY2F0ZWdvcnknIDogY2F0ZWdvcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXZlbnRfbGFiZWwnIDogbGFiZWx9KTsKICAgIH0pOwoKICAgIC8vIENvbnRhY3QgYnV0dG9uCiAgICAkKGRvY3VtZW50KS5vbigiY2xpY2siLCAiLmJ0bi1jb250YWN0IiwgZnVuY3Rpb24oKSB7CiAgICAgIHZhciBjYXRlZ29yeSA9ICQodGhpcykudGV4dCgpOwogICAgICB2YXIgbGFiZWwgPSAnVW5rbm93bic7CiAgICAgIGlmKCQoJyNmaWxlRm9ybScpLmxlbmd0aCA+IDApIHsKICAgICAgICBsYWJlbCA9IHN0cmlwSWQoJCgnI2ZpbGVGb3JtJykuYXR0cignYWN0aW9uJykpOwogICAgICB9IGVsc2UgaWYoJCgnI2RhdGFzZXRGb3JtJykubGVuZ3RoID4gMCkgewogICAgICAgIGxhYmVsID0gc3RyaXBJZCgkKCcjZGF0YXNldEZvcm0nKS5hdHRyKCdhY3Rpb24nKSk7CiAgICAgIH0gZWxzZSBpZigkKCcjZGF0YXZlcnNlRm9ybScpLmxlbmd0aCA+IDApIHsKICAgICAgICBsYWJlbCA9IHN0cmlwQWxpYXMoJCgnI2RhdGF2ZXJzZUZvcm0nKS5hdHRyKCdhY3Rpb24nKSk7CiAgICAgIH0KICAgICAgZ3RhZygnZXZlbnQnLCAnQ29udGFjdCcsIHsnZXZlbnRfY2F0ZWdvcnknIDogY2F0ZWdvcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V2ZW50X2xhYmVsJyA6IGxhYmVsfSk7CiAgICB9KTsKCiAgICAvLyBTaGFyZSBidXR0b24KICAgICQoZG9jdW1lbnQpLm9uKCJjbGljayIsICdkaXZbaWQkPSJzaGFyZURpYWxvZyJdIGFbY2xhc3NePSJzaGFycnJlIl0nLCBmdW5jdGlvbigpIHsKICAgICAgdmFyIHNoYXJycmVWYWwgPSAkKHRoaXMpLmF0dHIoJ2NsYXNzJyk7CiAgICAgIHZhciBjYXRlZ29yeSA9IHNoYXJycmVWYWwuc3Vic3RyaW5nKHNoYXJycmVWYWwuaW5kZXhPZignLScpICsgMSkgOwogICAgICB2YXIgbGFiZWwgPSAnVW5rbm93bic7CiAgICAgIGlmKCQoJyNmaWxlRm9ybScpLmxlbmd0aCA+IDApIHsKICAgICAgICBsYWJlbCA9IHN0cmlwSWQoJCgnI2ZpbGVGb3JtJykuYXR0cignYWN0aW9uJykpOwogICAgICB9IGVsc2UgaWYoJCgnI2RhdGFzZXRGb3JtJykubGVuZ3RoID4gMCkgewogICAgICAgIGxhYmVsID0gc3RyaXBJZCgkKCcjZGF0YXNldEZvcm0nKS5hdHRyKCdhY3Rpb24nKSk7CiAgICAgIH0gZWxzZSBpZigkKCcjZGF0YXZlcnNlRm9ybScpLmxlbmd0aCA+IDApIHsKICAgICAgICBsYWJlbCA9IHN0cmlwQWxpYXMoJCgnI2RhdGF2ZXJzZUZvcm0nKS5hdHRyKCdhY3Rpb24nKSk7CiAgICAgIH0KICAgICAgZ3RhZygnZXZlbnQnLCAnU2hhcmUnLCB7J2V2ZW50X2NhdGVnb3J5JyA6IGNhdGVnb3J5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXZlbnRfbGFiZWwnIDogbGFiZWx9KTsKICAgIH0pOwoKICB9CgogIGZ1bmN0aW9uIGdldEZpbGVJZCh0YXJnZXQpIHsKICAgIHZhciBsYWJlbCA9ICdVbmtub3duJzsKICAgIGlmKHRhcmdldC5wYXJlbnRzKCd0aCwgI2FjdGlvbkJ1dHRvbkJsb2NrIC5idG4tYWNjZXNzLWRhdGFzZXQgKyB1bC5kcm9wZG93bi1tZW51JykubGVuZ3RoPjApIHsKICAgICAgLy9TcGVjaWFsIGNhc2UgLSB0aGUgRG93bmxvYWQgYnV0dG9uIHRoYXQgZG93bmxvYWRzIGFsbCBzZWxlY3RlZCBmaWxlcyBpbiB0aGUgZGF0YXNldAogICAgICBsYWJlbCA9ICdmaWxlKHMpIGZyb20gJyArIHN0cmlwSWQoJCgnI2RhdGFzZXRGb3JtJykuYXR0cignYWN0aW9uJykpOwogICAgfSBlbHNlIHsKICAgICAgdmFyIHJvdyA9IHRhcmdldC5wYXJlbnRzKCd0cicpWzBdOwogICAgICBpZihyb3cgIT0gbnVsbCkgewogICAgICAgIC8vZmluZHMgdGhlIGZpbGUgaWQvRE9JIGluIHRoZSBEYXRhc2V0IHBhZ2UKICAgICAgICBsYWJlbCA9ICQocm93KS5maW5kKCd0ZC5jb2wtZmlsZS1tZXRhZGF0YSAgYScpLmF0dHIoJ2hyZWYnKTsKICAgICAgfSBlbHNlIHsKICAgICAgICAvL2ZpbmRzIHRoZSBmaWxlIGlkL0RPSSBpbiB0aGUgZmlsZSBwYWdlCiAgICAgICAgbGFiZWwgPSAkKCcjZmlsZUZvcm0nKS5hdHRyKCdhY3Rpb24nKTsKICAgICAgfQogICAgICBsYWJlbCA9IHN0cmlwSWQobGFiZWwpOwogICAgfQogICAgcmV0dXJuIGxhYmVsOwogIH0KCgogIGZ1bmN0aW9uIHN0cmlwSWQobGFiZWwpIHsKICAgIHZhciBpbmRleCA9IGxhYmVsLmluZGV4T2YoJyYnKTsKICAgIGlmKGluZGV4ID09IC0xKSBpbmRleCA9IGxhYmVsLmxlbmd0aDsKICAgIGlmKGxhYmVsLmluZGV4T2YoJ3BlcnNpc3RlbnRJZD0nKSA+PSAwKSB7CiAgICAgIGxhYmVsID0gbGFiZWwuc3Vic3RyaW5nKGxhYmVsLmluZGV4T2YoJ3BlcnNpc3RlbnRJZD0nKSArIDEzLCBpbmRleCk7CiAgICB9CiAgICBpZihsYWJlbC5pbmRleE9mKCdmaWxlSWQ9JykgPj0gMCkgewogICAgICBsYWJlbCA9IGxhYmVsLnN1YnN0cmluZyhsYWJlbC5pbmRleE9mKCdmaWxlSWQ9JykgKyA3LCBpbmRleCk7CiAgICB9CiAgICByZXR1cm4obGFiZWwpOwogIH0KCiAgZnVuY3Rpb24gc3RyaXBBbGlhcyhsYWJlbCkgewogICAgdmFyIGluZGV4ID0gbGFiZWwubGVuZ3RoOwogICAgbGFiZWwgPSBsYWJlbC5zdWJzdHJpbmcobGFiZWwuaW5kZXhPZignL2RhdGF2ZXJzZS8nKSArIDExLCBpbmRleCkuc3BsaXQoL1s/I10vKVswXTsKICAgIHJldHVybihsYWJlbCk7CiAgfQoKICBmdW5jdGlvbiBzdHJpcFNpemUoY2F0ZWdvcnkpIHsKICAgIHZhciBpbmRleCA9IGNhdGVnb3J5LmluZGV4T2YoJ1pJUCAoJyk7CiAgICBpZihpbmRleCA+PSAwKSB7CiAgICAgIGNhdGVnb3J5ID0gY2F0ZWdvcnkuc3Vic3RyaW5nKDAsIGluZGV4ICsgMyk7CiAgICB9CiAgICByZXR1cm4oY2F0ZWdvcnkpOwogIH0KICAvL11dPgo8L3NjcmlwdD4KCiAgICAgICAgICAgIDx0aXRsZT5TdW1tYXJ5IGRhdGEgYW5reWxvc2luZyBzcG9uZHlsaXRpcyBHV0FTIC0gSGFydmFyZCBEYXRhdmVyc2U8L3RpdGxlPgoJICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiAvPgogICAgICAgICAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiIC8+CiAgICAgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9ZWRnZSIgLz4KICAgICAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iU3VtbWFyeSBvZiBhc3NvY2lhdGlvbiB0ZXN0cyBmb3IgTmF0dXJlIEdlbmV0aWNzIHB1YmxpY2F0aW9uICZxdW90O0lkZW50aWZpY2F0aW9uIG9mIG11bHRpcGxlIHJpc2sgdmFyaWFudHMgZm9yIGFua3lsb3Npbmcgc3BvbmR5bGl0aXMgdGhyb3VnaCBoaWdoLWRlbnNpdHkgZ2Vub3R5cGluZyBvZiBpbW11bmUtcmVsYXRlZCBsb2NpJnF1b3Q7LiIgLz4KICAgICAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJEQy5pZGVudGlmaWVyIiBjb250ZW50PSJkb2k6MTAuNzkxMC9EVk4vTko3WFNPIiAvPgogICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9IkRDLnR5cGUiIGNvbnRlbnQ9IkRhdGFzZXQiIC8+CiAgICAgICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0iREMudGl0bGUiIGNvbnRlbnQ9IlN1bW1hcnkgZGF0YSBhbmt5bG9zaW5nIHNwb25keWxpdGlzIEdXQVMiIC8+CiAgICAgICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0iREMuZGF0ZSIgY29udGVudD0iMjAxNy0wOS0zMCIgLz4KICAgICAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJEQy5wdWJsaXNoZXIiIGNvbnRlbnQ9IkhhcnZhcmQgRGF0YXZlcnNlIiAvPgogICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9IkRDLmRlc2NyaXB0aW9uIiBjb250ZW50PSJTdW1tYXJ5IG9mIGFzc29jaWF0aW9uIHRlc3RzIGZvciBOYXR1cmUgR2VuZXRpY3MgcHVibGljYXRpb24gJnF1b3Q7SWRlbnRpZmljYXRpb24gb2YgbXVsdGlwbGUgcmlzayB2YXJpYW50cyBmb3IgYW5reWxvc2luZyBzcG9uZHlsaXRpcyB0aHJvdWdoIGhpZ2gtZGVuc2l0eSBnZW5vdHlwaW5nIG9mIGltbXVuZS1yZWxhdGVkIGxvY2kmcXVvdDsuIiAvPgogICAgICAgICAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJEQy5jcmVhdG9yIiBjb250ZW50PSJJbnRlcm5hdGlvbmFsIEdlbmV0aWNzIG9mIEFua3lsb3NpbmcgU3BvbmR5bGl0aXMgQ29uc29ydGl1bSAoSUdBUykiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9IkRDLnN1YmplY3QiIGNvbnRlbnQ9Ik1lZGljaW5lLCBIZWFsdGggYW5kIExpZmUgU2NpZW5jZXMiIC8+CiAgICAgICAgICAgICAgICAgICAgPG1ldGEgcHJvcGVydHk9Im9nOnRpdGxlIiBjb250ZW50PSJTdW1tYXJ5IGRhdGEgYW5reWxvc2luZyBzcG9uZHlsaXRpcyBHV0FTIiAvPgogICAgICAgICAgICAgICAgICAgIDxtZXRhIHByb3BlcnR5PSJvZzp0eXBlIiBjb250ZW50PSJhcnRpY2xlIiAvPgogICAgICAgICAgICAgICAgICAgIDxtZXRhIHByb3BlcnR5PSJvZzp1cmwiIGNvbnRlbnQ9Imh0dHBzOi8vZGF0YXZlcnNlLmhhcnZhcmQuZWR1L2RhdGFzZXQueGh0bWw/cGVyc2lzdGVudElkPWRvaToxMC43OTEwL0RWTi9OSjdYU08iIC8+CiAgICAgICAgICAgICAgICAgICAgPG1ldGEgcHJvcGVydHk9Im9nOmltYWdlIiBjb250ZW50PSJodHRwczovL2RhdGF2ZXJzZS5oYXJ2YXJkLmVkdS9qYXZheC5mYWNlcy5yZXNvdXJjZS9pbWFnZXMvZGF0YXZlcnNlLWljb24tMTIwMC5wbmcueGh0bWw7anNlc3Npb25pZD1hMmVkMWRhNzI0MDc3NDhlYmM0NzdhYmFjNDZhIiAvPgogICAgICAgICAgICAgICAgICAgIDxtZXRhIHByb3BlcnR5PSJvZzpzaXRlX25hbWUiIGNvbnRlbnQ9IkhhcnZhcmQgRGF0YXZlcnNlIiAvPgogICAgICAgICAgICAgICAgICAgIDxtZXRhIHByb3BlcnR5PSJvZzpkZXNjcmlwdGlvbiIgY29udGVudD0iU3VtbWFyeSBvZiBhc3NvY2lhdGlvbiB0ZXN0cyBmb3IgTmF0dXJlIEdlbmV0aWNzIHB1YmxpY2F0aW9uICZxdW90O0lkZW50aWZpY2F0aW9uIG9mIG11bHRpcGxlIHJpc2sgdmFyaWFudHMgZm9yIGFua3lsb3Npbmcgc3BvbmR5bGl0aXMgdGhyb3VnaCBoaWdoLWRlbnMuLi4iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIHByb3BlcnR5PSJhcnRpY2xlOmF1dGhvciIgY29udGVudD0iSW50ZXJuYXRpb25hbCBHZW5ldGljcyBvZiBBbmt5bG9zaW5nIFNwb25keWxpdGlzIENvbnNvcnRpdW0gKElHQVMpIiAvPgogICAgICAgICAgICAgICAgICAgIDxtZXRhIHByb3BlcnR5PSJhcnRpY2xlOnB1Ymxpc2hlZF90aW1lIiBjb250ZW50PSIyMDE3LTA5LTMwIiAvPgogICAgICAgICAgICAgICAgICAgIDxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vbGQranNvbiI+eyJAY29udGV4dCI6Imh0dHA6Ly9zY2hlbWEub3JnIiwiQHR5cGUiOiJEYXRhc2V0IiwiQGlkIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjc5MTAvRFZOL05KN1hTTyIsImlkZW50aWZpZXIiOiJodHRwczovL2RvaS5vcmcvMTAuNzkxMC9EVk4vTko3WFNPIiwibmFtZSI6IlN1bW1hcnkgZGF0YSBhbmt5bG9zaW5nIHNwb25keWxpdGlzIEdXQVMiLCJjcmVhdG9yIjpbeyJuYW1lIjoiSW50ZXJuYXRpb25hbCBHZW5ldGljcyBvZiBBbmt5bG9zaW5nIFNwb25keWxpdGlzIENvbnNvcnRpdW0gKElHQVMpIn1dLCJhdXRob3IiOlt7Im5hbWUiOiJJbnRlcm5hdGlvbmFsIEdlbmV0aWNzIG9mIEFua3lsb3NpbmcgU3BvbmR5bGl0aXMgQ29uc29ydGl1bSAoSUdBUykifV0sImRhdGVQdWJsaXNoZWQiOiIyMDE3LTA5LTMwIiwiZGF0ZU1vZGlmaWVkIjoiMjAxNy0wOS0zMCIsInZlcnNpb24iOiIxIiwiZGVzY3JpcHRpb24iOlsiU3VtbWFyeSBvZiBhc3NvY2lhdGlvbiB0ZXN0cyBmb3IgTmF0dXJlIEdlbmV0aWNzIHB1YmxpY2F0aW9uIFwiSWRlbnRpZmljYXRpb24gb2YgbXVsdGlwbGUgcmlzayB2YXJpYW50cyBmb3IgYW5reWxvc2luZyBzcG9uZHlsaXRpcyB0aHJvdWdoIGhpZ2gtZGVuc2l0eSBnZW5vdHlwaW5nIG9mIGltbXVuZS1yZWxhdGVkIGxvY2lcIi4iXSwia2V5d29yZHMiOlsiTWVkaWNpbmUsIEhlYWx0aCBhbmQgTGlmZSBTY2llbmNlcyIsIiBHZW5vbWUtV2lkZSBBc3NvY2lhdGlvbiBTdHVkaWVzIiwiQW5reWxvc2luZyBzcG9uZHlsaXRpcyJdLCJjaXRhdGlvbiI6W3siQHR5cGUiOiJDcmVhdGl2ZVdvcmsiLCJ0ZXh0IjoiMTAuMTAzOC9uZy4yNjY3In1dLCJsaWNlbnNlIjoiaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wIiwiaW5jbHVkZWRJbkRhdGFDYXRhbG9nIjp7IkB0eXBlIjoiRGF0YUNhdGFsb2ciLCJuYW1lIjoiSGFydmFyZCBEYXRhdmVyc2UiLCJ1cmwiOiJodHRwczovL2RhdGF2ZXJzZS5oYXJ2YXJkLmVkdSJ9LCJwdWJsaXNoZXIiOnsiQHR5cGUiOiJPcmdhbml6YXRpb24iLCJuYW1lIjoiSGFydmFyZCBEYXRhdmVyc2UifSwicHJvdmlkZXIiOnsiQHR5cGUiOiJPcmdhbml6YXRpb24iLCJuYW1lIjoiSGFydmFyZCBEYXRhdmVyc2UifSwiZGlzdHJpYnV0aW9uIjpbeyJAdHlwZSI6IkRhdGFEb3dubG9hZCIsIm5hbWUiOiJBc2lhbl9DYXNlX0NvbnRyb2xfUmVzdWx0cy50eHQiLCJmaWxlRm9ybWF0IjoidGV4dC9wbGFpbiIsImNvbnRlbnRTaXplIjoxMTU3MjQxMiwiZGVzY3JpcHRpb24iOiJTdW1tYXJ5IGRhdGEgZm9yIEFzaWFuIGNvaG9ydCIsIkBpZCI6Imh0dHBzOi8vZG9pLm9yZy8xMC43OTEwL0RWTi9OSjdYU08vSzNOUk1PIiwiaWRlbnRpZmllciI6Imh0dHBzOi8vZG9pLm9yZy8xMC43OTEwL0RWTi9OSjdYU08vSzNOUk1PIiwiY29udGVudFVybCI6Imh0dHBzOi8vZGF0YXZlcnNlLmhhcnZhcmQuZWR1L2FwaS9hY2Nlc3MvZGF0YWZpbGUvMzA1NTQyNCJ9LHsiQHR5cGUiOiJEYXRhRG93bmxvYWQiLCJuYW1lIjoiRXVyb3BlYW5fQXNpYW5fQ2FzZV9Db250cm9sX1Jlc3VsdHMudHh0IiwiZmlsZUZvcm1hdCI6InRleHQvcGxhaW4iLCJjb250ZW50U2l6ZSI6MTEyNDU0OTYsImRlc2NyaXB0aW9uIjoiU3VtbWFyeSBkYXRhIGZvciBjb21iaW5lZCBjb2hvcnQiLCJAaWQiOiJodHRwczovL2RvaS5vcmcvMTAuNzkxMC9EVk4vTko3WFNPL0hBMlNWUiIsImlkZW50aWZpZXIiOiJodHRwczovL2RvaS5vcmcvMTAuNzkxMC9EVk4vTko3WFNPL0hBMlNWUiIsImNvbnRlbnRVcmwiOiJodHRwczovL2RhdGF2ZXJzZS5oYXJ2YXJkLmVkdS9hcGkvYWNjZXNzL2RhdGFmaWxlLzMwNTU0MjUifSx7IkB0eXBlIjoiRGF0YURvd25sb2FkIiwibmFtZSI6IkV1cm9wZWFuX0Nhc2VfQ29udHJvbF9SZXN1bHRzLnR4dCIsImZpbGVGb3JtYXQiOiJ0ZXh0L3BsYWluIiwiY29udGVudFNpemUiOjEzMzM3MTgzLCJkZXNjcmlwdGlvbiI6IlN1bW1hcnkgZGF0YSBmb3IgRXVyb3BlYW4gY29ob3J0IiwiQGlkIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjc5MTAvRFZOL05KN1hTTy9JTjQ1R1oiLCJpZGVudGlmaWVyIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjc5MTAvRFZOL05KN1hTTy9JTjQ1R1oiLCJjb250ZW50VXJsIjoiaHR0cHM6Ly9kYXRhdmVyc2UuaGFydmFyZC5lZHUvYXBpL2FjY2Vzcy9kYXRhZmlsZS8zMDU1NDI2In1dfQoKICAgICAgICAgICAgICAgICAgICA8L3NjcmlwdD48bGluayB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvamF2YXguZmFjZXMucmVzb3VyY2UvdGhlbWUuY3NzLnhodG1sO2pzZXNzaW9uaWQ9YTJlZDFkYTcyNDA3NzQ4ZWJjNDc3YWJhYzQ2YT9sbj1wcmltZWZhY2VzLWJvb3RzdHJhcCZhbXA7dj0xMS4wLjAiIC8+PGxpbmsgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2phdmF4LmZhY2VzLnJlc291cmNlL3ByaW1laWNvbnMvcHJpbWVpY29ucy5jc3MueGh0bWw7anNlc3Npb25pZD1hMmVkMWRhNzI0MDc3NDhlYmM0NzdhYmFjNDZhP2xuPXByaW1lZmFjZXMmYW1wO3Y9MTEuMC4wIiAvPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9qYXZheC5mYWNlcy5yZXNvdXJjZS9vbW5pZmFjZXMuanMueGh0bWw7anNlc3Npb25pZD1hMmVkMWRhNzI0MDc3NDhlYmM0NzdhYmFjNDZhP2xuPW9tbmlmYWNlcyZhbXA7dj0zLjgiPjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9qYXZheC5mYWNlcy5yZXNvdXJjZS9qcXVlcnkvanF1ZXJ5LmpzLnhodG1sO2pzZXNzaW9uaWQ9YTJlZDFkYTcyNDA3NzQ4ZWJjNDc3YWJhYzQ2YT9sbj1wcmltZWZhY2VzJmFtcDt2PTExLjAuMCI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2phdmF4LmZhY2VzLnJlc291cmNlL2pxdWVyeS9qcXVlcnktcGx1Z2lucy5qcy54aHRtbDtqc2Vzc2lvbmlkPWEyZWQxZGE3MjQwNzc0OGViYzQ3N2FiYWM0NmE/bG49cHJpbWVmYWNlcyZhbXA7dj0xMS4wLjAiPjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9qYXZheC5mYWNlcy5yZXNvdXJjZS9jb3JlLmpzLnhodG1sO2pzZXNzaW9uaWQ9YTJlZDFkYTcyNDA3NzQ4ZWJjNDc3YWJhYzQ2YT9sbj1wcmltZWZhY2VzJmFtcDt2PTExLjAuMCI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2phdmF4LmZhY2VzLnJlc291cmNlL2NvbXBvbmVudHMuanMueGh0bWw7anNlc3Npb25pZD1hMmVkMWRhNzI0MDc3NDhlYmM0NzdhYmFjNDZhP2xuPXByaW1lZmFjZXMmYW1wO3Y9MTEuMC4wIj48L3NjcmlwdD48bGluayB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvamF2YXguZmFjZXMucmVzb3VyY2UvY29tcG9uZW50cy5jc3MueGh0bWw7anNlc3Npb25pZD1hMmVkMWRhNzI0MDc3NDhlYmM0NzdhYmFjNDZhP2xuPXByaW1lZmFjZXMmYW1wO3Y9MTEuMC4wIiAvPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9qYXZheC5mYWNlcy5yZXNvdXJjZS93YXRlcm1hcmsvd2F0ZXJtYXJrLmpzLnhodG1sO2pzZXNzaW9uaWQ9YTJlZDFkYTcyNDA3NzQ4ZWJjNDc3YWJhYzQ2YT9sbj1wcmltZWZhY2VzJmFtcDt2PTExLjAuMCI+PC9zY3JpcHQ+PGxpbmsgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2phdmF4LmZhY2VzLnJlc291cmNlL2ZpbGV1cGxvYWQvZmlsZXVwbG9hZC5jc3MueGh0bWw7anNlc3Npb25pZD1hMmVkMWRhNzI0MDc3NDhlYmM0NzdhYmFjNDZhP2xuPXByaW1lZmFjZXMmYW1wO3Y9MTEuMC4wIiAvPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9qYXZheC5mYWNlcy5yZXNvdXJjZS9maWxldXBsb2FkL2ZpbGV1cGxvYWQuanMueGh0bWw7anNlc3Npb25pZD1hMmVkMWRhNzI0MDc3NDhlYmM0NzdhYmFjNDZhP2xuPXByaW1lZmFjZXMmYW1wO3Y9MTEuMC4wIj48L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvamF2YXguZmFjZXMucmVzb3VyY2UvdG91Y2gvdG91Y2hzd2lwZS5qcy54aHRtbDtqc2Vzc2lvbmlkPWEyZWQxZGE3MjQwNzc0OGViYzQ3N2FiYWM0NmE/bG49cHJpbWVmYWNlcyZhbXA7dj0xMS4wLjAiPjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9qYXZheC5mYWNlcy5yZXNvdXJjZS9pbnB1dG1hc2svaW5wdXRtYXNrLmpzLnhodG1sO2pzZXNzaW9uaWQ9YTJlZDFkYTcyNDA3NzQ4ZWJjNDc3YWJhYzQ2YT9sbj1wcmltZWZhY2VzJmFtcDt2PTExLjAuMCI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2phdmF4LmZhY2VzLnJlc291cmNlL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5qcy54aHRtbDtqc2Vzc2lvbmlkPWEyZWQxZGE3MjQwNzc0OGViYzQ3N2FiYWM0NmE/bG49cHJpbWVmYWNlcyZhbXA7dj0xMS4wLjAiPjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5pZih3aW5kb3cuUHJpbWVGYWNlcyl7UHJpbWVGYWNlcy5zZXR0aW5ncy5sb2NhbGU9J2VuJztQcmltZUZhY2VzLnNldHRpbmdzLnZpZXdJZD0nL2RhdGFzZXQueGh0bWwnO1ByaW1lRmFjZXMuc2V0dGluZ3MuY29udGV4dFBhdGg9Jyc7UHJpbWVGYWNlcy5zZXR0aW5ncy5jb29raWVzU2VjdXJlPWZhbHNlO308L3NjcmlwdD4KICAgICAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIHNpemVzPSIxODB4MTgwIiBocmVmPSIvamF2YXguZmFjZXMucmVzb3VyY2UvaW1hZ2VzL2Zhdi9hcHBsZS10b3VjaC1pY29uLnBuZy54aHRtbDtqc2Vzc2lvbmlkPWEyZWQxZGE3MjQwNzc0OGViYzQ3N2FiYWM0NmEiIC8+CiAgICAgICAgPGxpbmsgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS9wbmciIHNpemVzPSIxNngxNiIgaHJlZj0iL2phdmF4LmZhY2VzLnJlc291cmNlL2ltYWdlcy9mYXYvZmF2aWNvbi0xNngxNi5wbmcueGh0bWw7anNlc3Npb25pZD1hMmVkMWRhNzI0MDc3NDhlYmM0NzdhYmFjNDZhIiAvPgogICAgICAgIDxsaW5rIHJlbD0iaWNvbiIgdHlwZT0iaW1hZ2UvcG5nIiBzaXplcz0iMzJ4MzIiIGhyZWY9Ii9qYXZheC5mYWNlcy5yZXNvdXJjZS9pbWFnZXMvZmF2L2Zhdmljb24tMzJ4MzIucG5nLnhodG1sO2pzZXNzaW9uaWQ9YTJlZDFkYTcyNDA3NzQ4ZWJjNDc3YWJhYzQ2YSIgLz4KICAgICAgICA8bGluayByZWw9Im1hbmlmZXN0IiBocmVmPSIvamF2YXguZmFjZXMucmVzb3VyY2UvaW1hZ2VzL2Zhdi9zaXRlLndlYm1hbmlmZXN0LnhodG1sO2pzZXNzaW9uaWQ9YTJlZDFkYTcyNDA3NzQ4ZWJjNDc3YWJhYzQ2YSIgLz4KICAgICAgICA8bGluayByZWw9Im1hc2staWNvbiIgaHJlZj0iL2phdmF4LmZhY2VzLnJlc291cmNlL2ltYWdlcy9mYXYvc2FmYXJpLXBpbm5lZC10YWIuc3ZnLnhodG1sO2pzZXNzaW9uaWQ9YTJlZDFkYTcyNDA3NzQ4ZWJjNDc3YWJhYzQ2YSIgY29sb3I9IiNkYTUzMmMiIC8+CiAgICAgICAgPG1ldGEgbmFtZT0ibXNhcHBsaWNhdGlvbi1UaWxlQ29sb3IiIGNvbnRlbnQ9IiNkYTUzMmMiIC8+CiAgICAgICAgPG1ldGEgbmFtZT0idGhlbWUtY29sb3IiIGNvbnRlbnQ9IiNmZmZmZmYiIC8+CiAgICAgICAgPGxpbmsgdHlwZT0iaW1hZ2UvcG5nIiByZWw9ImltYWdlX3NyYyIgaHJlZj0iL2phdmF4LmZhY2VzLnJlc291cmNlL2ltYWdlcy9kYXRhdmVyc2Vwcm9qZWN0LnBuZy54aHRtbDtqc2Vzc2lvbmlkPWEyZWQxZGE3MjQwNzc0OGViYzQ3N2FiYWM0NmEiIC8+CiAgICAgICAgPGxpbmsgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2phdmF4LmZhY2VzLnJlc291cmNlL2JzL2Nzcy9ib290c3RyYXAubWluLmNzcy54aHRtbDtqc2Vzc2lvbmlkPWEyZWQxZGE3MjQwNzc0OGViYzQ3N2FiYWM0NmE/dmVyc2lvbj01LjEyIiAvPgogICAgICAgIDxsaW5rIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9qYXZheC5mYWNlcy5yZXNvdXJjZS9icy9jc3MvYm9vdHN0cmFwLXRoZW1lLm1pbi5jc3MueGh0bWw7anNlc3Npb25pZD1hMmVkMWRhNzI0MDc3NDhlYmM0NzdhYmFjNDZhP3ZlcnNpb249NS4xMiIgLz4KICAgICAgICA8bGluayB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvamF2YXguZmFjZXMucmVzb3VyY2UvY3NzL2llLWNvbXBhdC5jc3MueGh0bWw7anNlc3Npb25pZD1hMmVkMWRhNzI0MDc3NDhlYmM0NzdhYmFjNDZhP3ZlcnNpb249NS4xMiIgLz4KICAgICAgICA8bGluayB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvamF2YXguZmFjZXMucmVzb3VyY2UvY3NzL293bC5jYXJvdXNlbC5jc3MueGh0bWw7anNlc3Npb25pZD1hMmVkMWRhNzI0MDc3NDhlYmM0NzdhYmFjNDZhP3ZlcnNpb249NS4xMiIgLz4KICAgICAgICA8bGluayB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvamF2YXguZmFjZXMucmVzb3VyY2UvY3NzL2ZvbnRjdXN0b20uY3NzLnhodG1sO2pzZXNzaW9uaWQ9YTJlZDFkYTcyNDA3NzQ4ZWJjNDc3YWJhYzQ2YT92ZXJzaW9uPTUuMTIiIC8+CiAgICAgICAgPGxpbmsgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2phdmF4LmZhY2VzLnJlc291cmNlL2Nzcy9zb2NpY29uLmNzcy54aHRtbDtqc2Vzc2lvbmlkPWEyZWQxZGE3MjQwNzc0OGViYzQ3N2FiYWM0NmE/dmVyc2lvbj01LjEyIiAvPgogICAgICAgIDxsaW5rIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9qYXZheC5mYWNlcy5yZXNvdXJjZS9jc3Mvc3RydWN0dXJlLmNzcy54aHRtbDtqc2Vzc2lvbmlkPWEyZWQxZGE3MjQwNzc0OGViYzQ3N2FiYWM0NmE/dmVyc2lvbj01LjEyIiAvPgogICAgICAgICAgICA8c3R5bGU+CiAgICAgICAgICAgICAgICAvKiBDdXN0b20gQ1NTICovCiAgICAgICAgICAgICAgICAjbmF2YmFyRml4ZWQgZGl2Lm5hdmJhci1oZWFkZXIgaW1nLm5hdmJhci1icmFuZC5jdXN0b20tbG9nbyB7aGVpZ2h0OjUwcHggIWltcG9ydGFudDt9CiNkYXRhdmVyc2VEZXNjIHNwYW4gPiBzcGFuID4gc3BhbiA+IGgzIHtmb250LXdlaWdodDogMzAwICFpbXBvcnRhbnQ7fQoKbmF2Lm5hdmJhci5uYXZiYXItZGVmYXVsdCB7YmFja2dyb3VuZDogI2VjZWNlYyAhaW1wb3J0YW50O30KLyogI2Zvb3RlciB7YmFja2dyb3VuZDogI2VjZWNlYyAhaW1wb3J0YW50OyBwYWRkaW5nLXRvcDoxLjI1ZW07fSAqLwoKICAgICAgICAgICAgPC9zdHlsZT48L2hlYWQ+PGJvZHk+Cgk8YSBocmVmPSIjY29udGVudCIgY2xhc3M9InNyLW9ubHkiPlNraXAgdG8gbWFpbiBjb250ZW50PC9hPgoKICAgIDxuYXYgaWQ9ImRhdGF2ZXJzZS1oZWFkZXItYmxvY2siPjxkaXYgaWQ9Im5hdmJhckZpeGVkIiBjbGFzcz0ibmF2YmFyIG5hdmJhci1kZWZhdWx0IG5hdmJhci1maXhlZC10b3AiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2YmFyLWhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJuYXZiYXItdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjdG9wTmF2QmFyIiBhcmlhLXByZXNzZWQ9ImZhbHNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNyLW9ubHkiPlRvZ2dsZSBuYXZpZ2F0aW9uPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaWNvbi1iYXIiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Imljb24tYmFyIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpY29uLWJhciI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii8iPjxpbWcgc3JjPSIvbG9nb3MvbmF2YmFyL2xvZ28ucG5nO2pzZXNzaW9uaWQ9YTJlZDFkYTcyNDA3NzQ4ZWJjNDc3YWJhYzQ2YSIgYWx0PSJIYXJ2YXJkIERhdGF2ZXJzZSBob21lcGFnZSIgY2xhc3M9Im5hdmJhci1icmFuZCBjdXN0b20tbG9nbyIgLz4KICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbGxhcHNlIG5hdmJhci1jb2xsYXBzZSIgaWQ9InRvcE5hdkJhciI+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJuYXYgbmF2YmFyLW5hdiBuYXZiYXItcmlnaHQiPjxsaSBjbGFzcz0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj5BZGQgRGF0YSA8YiBjbGFzcz0iY2FyZXQiPjwvYj48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPjxsaT48YSBocmVmPSIvZGF0YXNldC54aHRtbDtqc2Vzc2lvbmlkPWEyZWQxZGE3MjQwNzc0OGViYzQ3N2FiYWM0NmE/b3duZXJJZD0xIj5OZXcgRGF0YXNldDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+U2VhcmNoIDxiIGNsYXNzPSJjYXJldCI+PC9iPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSBuYXZiYXItc2VhcmNoIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGNsYXNzPSJmb3JtLWlubGluZSIgcm9sZT0ic2VhcmNoIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBpZD0ic2VhcmNoTmF2TGFiZWwiIGNsYXNzPSJzci1vbmx5IiBmb3I9Im5hdmJhcnNlYXJjaCI+U2VhcmNoPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9Im5hdmJhcnNlYXJjaCIgdHlwZT0idGV4dCIgY2xhc3M9ImZvcm0tY29udHJvbCIgc2l6ZT0iMjgiIHZhbHVlPSIiIHBsYWNlaG9sZGVyPSJTZWFyY2ggYWxsIGRhdGF2ZXJzZXMuLi4iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImlucHV0LWdyb3VwLWJ0biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiB0aXRsZT0iRmluZCIgY2xhc3M9ImJ0biBidG4tZGVmYXVsdCBib290c3RyYXAtYnV0dG9uLXRvb2x0aXAiIGFyaWEtbGFiZWxsZWRieT0ic2VhcmNoTmF2TGFiZWwiIG9uY2xpY2s9IndpbmRvdy5sb2NhdGlvbj0nL2RhdGF2ZXJzZS9oYXJ2YXJkP3E9JyArIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduYXZiYXJzZWFyY2gnKS52YWx1ZTtyZXR1cm4gZmFsc2U7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXNlYXJjaCBuby10ZXh0Ij48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vc3VwcG9ydC5kYXRhdmVyc2UuaGFydmFyZC5lZHUvIiByZWw9Im5vb3BlbmVyIiB0YXJnZXQ9Il9ibGFuayI+QWJvdXQ8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ3VpZGVzLmRhdGF2ZXJzZS5vcmcvZW4vNS4xMi91c2VyIiByZWw9Im5vb3BlbmVyIiB0YXJnZXQ9Il9ibGFuayI+VXNlciBHdWlkZTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KPGZvcm0gaWQ9ImpfaWR0NzgiIG5hbWU9ImpfaWR0NzgiIG1ldGhvZD0icG9zdCIgYWN0aW9uPSIvZGF0YXNldC54aHRtbDtqc2Vzc2lvbmlkPWEyZWQxZGE3MjQwNzc0OGViYzQ3N2FiYWM0NmE/cGVyc2lzdGVudElkPWRvaSUzQTEwLjc5MTAlMkZEVk4lMkZOSjdYU08iIGNsYXNzPSJuYXZiYXItZm9ybSBuYXZiYXItbGVmdCBuYXZiYXItZm9ybS1saW5rIiBlbmN0eXBlPSJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiIGRhdGEtcGFydGlhbHN1Ym1pdD0idHJ1ZSI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImpfaWR0NzgiIHZhbHVlPSJqX2lkdDc4IiAvPgo8YSBpZD0ial9pZHQ3ODpoZWFkZXJTdXBwb3J0TGluayIgaHJlZj0iIyIgY2xhc3M9InVpLWNvbW1hbmRsaW5rIHVpLXdpZGdldCIgb25jbGljaz0iUHJpbWVGYWNlcy5hYih7czomcXVvdDtqX2lkdDc4OmhlYWRlclN1cHBvcnRMaW5rJnF1b3Q7LGY6JnF1b3Q7al9pZHQ3OCZxdW90Oyx1OiZxdW90O2NvbnRhY3REaWFsb2cmcXVvdDssb25jbzpmdW5jdGlvbih4aHIsc3RhdHVzLGFyZ3MsZGF0YSl7UEYoJ2NvbnRhY3RGb3JtJykuc2hvdygpO319KTtyZXR1cm4gZmFsc2U7Ij5TdXBwb3J0PC9hPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImphdmF4LmZhY2VzLlZpZXdTdGF0ZSIgaWQ9ImpfaWQxOmphdmF4LmZhY2VzLlZpZXdTdGF0ZTowIiB2YWx1ZT0iMTY0MTUwODY5MzI3NTE2ODkxOi0yNTQ1MDI2MTM3MTMwOTQ3NzAzIiBhdXRvY29tcGxldGU9Im9mZiIgLz4KPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIvZGF0YXZlcnNldXNlci54aHRtbDtqc2Vzc2lvbmlkPWEyZWQxZGE3MjQwNzc0OGViYzQ3N2FiYWM0NmE/ZWRpdE1vZGU9Q1JFQVRFJmFtcDtyZWRpcmVjdFBhZ2U9JTJGZGF0YXNldC54aHRtbCUzRnBlcnNpc3RlbnRJZCUzRGRvaSUzQTEwLjc5MTAlMkZEVk4lMkZOSjdYU08iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaWduIFVwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIvbG9naW5wYWdlLnhodG1sO2pzZXNzaW9uaWQ9YTJlZDFkYTcyNDA3NzQ4ZWJjNDc3YWJhYzQ2YT9yZWRpcmVjdFBhZ2U9JTJGZGF0YXNldC54aHRtbCUzRnBlcnNpc3RlbnRJZCUzRGRvaSUzQTEwLjc5MTAlMkZEVk4lMkZOSjdYU08iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2cgSW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+PC9kaXY+CiAgICAgICAgCiAgICAgICAgPG5vc2NyaXB0PgogICAgICAgICAgICA8ZGl2IGlkPSJub3NjcmlwdC1hbGVydCIgY2xhc3M9ImJnLWRhbmdlciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhbGVydCBjb250YWluZXIgdGV4dC1kYW5nZXIgbm8tbWFyZ2luLWJvdHRvbSI+UGxlYXNlIGVuYWJsZSBKYXZhU2NyaXB0IGluIHlvdXIgYnJvd3Nlci4gSXQgaXMgcmVxdWlyZWQgdG8gdXNlIG1vc3Qgb2YgdGhlIGZlYXR1cmVzIG9mIERhdGF2ZXJzZS4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L25vc2NyaXB0Pgo8Zm9ybSBpZD0ial9pZHQxMzIiIG5hbWU9ImpfaWR0MTMyIiBtZXRob2Q9InBvc3QiIGFjdGlvbj0iL2RhdGFzZXQueGh0bWw7anNlc3Npb25pZD1hMmVkMWRhNzI0MDc3NDhlYmM0NzdhYmFjNDZhP3BlcnNpc3RlbnRJZD1kb2klM0ExMC43OTEwJTJGRFZOJTJGTko3WFNPIiBjbGFzcz0iZm9ybS1pbmxpbmUiIGVuY3R5cGU9ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIgZGF0YS1wYXJ0aWFsc3VibWl0PSJ0cnVlIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ial9pZHQxMzIiIHZhbHVlPSJqX2lkdDEzMiIgLz4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iamF2YXguZmFjZXMuVmlld1N0YXRlIiBpZD0ial9pZDE6amF2YXguZmFjZXMuVmlld1N0YXRlOjEiIHZhbHVlPSIxNjQxNTA4NjkzMjc1MTY4OTE6LTI1NDUwMjYxMzcxMzA5NDc3MDMiIGF1dG9jb21wbGV0ZT0ib2ZmIiAvPgo8L2Zvcm0+PGRpdiBpZD0iYnJlYWRDcnVtYlBhbmVsIj48ZGl2IGlkPSJicmVhZGNydW1iTmF2QmxvY2siIGNsYXNzPSJjb250YWluZXIiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYnJlYWRjcnVtYkJsb2NrIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGlkPSJicmVhZGNydW1iTG5rMCIgaHJlZj0iL2RhdGF2ZXJzZS9oYXJ2YXJkIj5IYXJ2YXJkIERhdGF2ZXJzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9kaXY+PHNwYW4gY2xhc3M9ImJyZWFkY3J1bWJDYXJyb3QiPiAmZ3Q7IDwvc3Bhbj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJyZWFkY3J1bWJCbG9jayI+CiAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGlkPSJtZXNzYWdlUGFuZWwiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIgbWVzc2FnZVBhbmVsIj4KICAgICAgICAgICAgPC9kaXY+PC9kaXY+CiAgICA8L25hdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiIGlkPSJjb250ZW50IiByb2xlPSJtYWluIj4KPGZvcm0gaWQ9ImRhdGFzZXRGb3JtIiBuYW1lPSJkYXRhc2V0Rm9ybSIgbWV0aG9kPSJwb3N0IiBhY3Rpb249Ii9kYXRhc2V0LnhodG1sO2pzZXNzaW9uaWQ9YTJlZDFkYTcyNDA3NzQ4ZWJjNDc3YWJhYzQ2YT9wZXJzaXN0ZW50SWQ9ZG9pJTNBMTAuNzkxMCUyRkRWTiUyRk5KN1hTTyIgZW5jdHlwZT0iYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGF0YXNldEZvcm0iIHZhbHVlPSJkYXRhc2V0Rm9ybSIgLz4KPGlucHV0IGlkPSJkYXRhc2V0Rm9ybTp2YWxpZGF0ZUZpbGVzT3V0Y29tZSIgdHlwZT0iaGlkZGVuIiBuYW1lPSJkYXRhc2V0Rm9ybTp2YWxpZGF0ZUZpbGVzT3V0Y29tZSIgLz48aW5wdXQgaWQ9ImRhdGFzZXRGb3JtOnZhbGlkVGVybXNvZkFjY2VzcyIgdHlwZT0iaGlkZGVuIiBuYW1lPSJkYXRhc2V0Rm9ybTp2YWxpZFRlcm1zb2ZBY2Nlc3MiIHZhbHVlPSJ0cnVlIiAvPjxkaXYgaWQ9ImRhdGFzZXRGb3JtOnRvcERhdGFzZXRCbG9ja0ZyYWdtZW50Ij48ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzLTEyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJkYXRhc2V0VmVyc2lvbkJsb2NrIiBjbGFzcz0icm93Ij48ZGl2IGlkPSJ0aXRsZS1ibG9jayIgY2xhc3M9ImNvbC14cy0xMiBtYXJnaW4tYm90dG9tLWhhbGYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxIGlkPSJ0aXRsZSI+IFN1bW1hcnkgZGF0YSBhbmt5bG9zaW5nIHNwb25keWxpdGlzIEdXQVM8L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0idGl0bGUtbGFiZWwtYmxvY2siIGNsYXNzPSJtYXJnaW4tdG9wLWhhbGYiPjxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1kZWZhdWx0Ij5WZXJzaW9uIDEuMDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJkYXRhc2V0Q2l0YXRpb25BY3Rpb25TdW1tYXJ5QmxvY2siIGNsYXNzPSJyb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wteHMtMTIgY29sLXNtLTEyIGNvbC1tZC04IGNvbC1sZy05Ij4KICAgIDxkaXYgY2xhc3M9ImNpdGF0aW9uLWJsb2NrIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjbGVhcmZpeCBhbGVydCBhbGVydC1pbmZvIGJnLWNpdGF0aW9uIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2l0YXRpb24gbWFyZ2luLWJvdHRvbSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwdWxsLWxlZnQgcHJldmlldy1pY29uLWJsb2NrIj48c3BhbiBjbGFzcz0iaWNvbi1kYXRhc2V0Ij48L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjaXRhdGlvbi1zZWxlY3QiIG9uY2xpY2s9ImlmIChldmVudC50YXJnZXQpIHsgc2VsZWN0VGV4dChldmVudC50YXJnZXQpOyB9IGVsc2V7IHNlbGVjdFRleHQodGhpcyk7IH0iPkludGVybmF0aW9uYWwgR2VuZXRpY3Mgb2YgQW5reWxvc2luZyBTcG9uZHlsaXRpcyBDb25zb3J0aXVtIChJR0FTKSwgMjAxNywgIlN1bW1hcnkgZGF0YSBhbmt5bG9zaW5nIHNwb25keWxpdGlzIEdXQVMiLCA8YSBocmVmPSJodHRwczovL2RvaS5vcmcvMTAuNzkxMC9EVk4vTko3WFNPIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9kb2kub3JnLzEwLjc5MTAvRFZOL05KN1hTTzwvYT4sIEhhcnZhcmQgRGF0YXZlcnNlLCBWMQogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2Rpdj48ZGl2IGNsYXNzPSJwdWxsLWxlZnQgcm93IGNvbC1zbS05IHBhZGRpbmctbm9uZSI+PGRpdiBjbGFzcz0iY29sLXNtLTMgY29sLW1kLTQgY29sLWxnLTMgYnRuLWdyb3VwIG1hcmdpbi1ib3R0b20gY2l0YXRpb24tZG93bmxvYWQiPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1saW5rIGRyb3Bkb3duLXRvZ2dsZSBwYWRkaW5nLW5vbmUgZG93bmxvYWRDaXRhdGlvbiIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgQ2l0ZSBEYXRhc2V0IDxzcGFuIGNsYXNzPSJjYXJldCI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvamF2YXguZmFjZXMucmVzb3VyY2UvanNmLmpzLnhodG1sO2pzZXNzaW9uaWQ9YTJlZDFkYTcyNDA3NzQ4ZWJjNDc3YWJhYzQ2YT9sbj1qYXZheC5mYWNlcyI+PC9zY3JpcHQ+PGEgaWQ9ImRhdGFzZXRGb3JtOmVuZE5vdGVMaW5rIiBocmVmPSIjIiBvbmNsaWNrPSJtb2phcnJhLmpzZmNsanMoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RhdGFzZXRGb3JtJykseydkYXRhc2V0Rm9ybTplbmROb3RlTGluayc6J2RhdGFzZXRGb3JtOmVuZE5vdGVMaW5rJ30sJycpO3JldHVybiBmYWxzZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5kTm90ZSBYTUwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGlkPSJkYXRhc2V0Rm9ybTpyaXNMaW5rIiBocmVmPSIjIiBvbmNsaWNrPSJtb2phcnJhLmpzZmNsanMoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RhdGFzZXRGb3JtJykseydkYXRhc2V0Rm9ybTpyaXNMaW5rJzonZGF0YXNldEZvcm06cmlzTGluayd9LCcnKTtyZXR1cm4gZmFsc2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJJUwogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaWQ9ImRhdGFzZXRGb3JtOmJpYkxpbmsiIGhyZWY9IiMiIG9uY2xpY2s9Im1vamFycmEuanNmY2xqcyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGF0YXNldEZvcm0nKSx7J2RhdGFzZXRGb3JtOmJpYkxpbmsnOidkYXRhc2V0Rm9ybTpiaWJMaW5rJ30sJ19ibGFuaycpO3JldHVybiBmYWxzZSIgdGFyZ2V0PSJfYmxhbmsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpYlRlWAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+PC9kaXY+PGRpdiBjbGFzcz0iY29sLXNtLTkgY29sLW1kLTggY29sLWxnLTkgdGV4dC1tdXRlZCBtYXJnaW4tYm90dG9tIGNpdGF0aW9uLXN0YW5kYXJkcyI+TGVhcm4gYWJvdXQgPGEgaHJlZj0iaHR0cHM6Ly9kYXRhdmVyc2Uub3JnL2Jlc3QtcHJhY3RpY2VzL2RhdGEtY2l0YXRpb24iIHRpdGxlPSJEYXRhIENpdGF0aW9uIC0gRGF0YXZlcnNlLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPkRhdGEgQ2l0YXRpb24gU3RhbmRhcmRzPC9hPi48L2Rpdj48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzLTEyIGNvbC1zbS0xMiBjb2wtbWQtNCBjb2wtbGctMyBwdWxsLXJpZ2h0IG1hcmdpbi1ib3R0b20iPjxkaXYgaWQ9ImFjdGlvbkJ1dHRvbkJsb2NrIj48ZGl2IGNsYXNzPSJidG4tZ3JvdXAgYnRuLWdyb3VwLWp1c3RpZmllZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ0bi1ncm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSBidG4tYWNjZXNzLWRhdGFzZXQgZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iIGFyaWEtaGFzcG9wdXA9InRydWUiIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY2Nlc3MgRGF0YXNldCA8c3BhbiBjbGFzcz0iY2FyZXQiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51IHB1bGwtcmlnaHQgdGV4dC1sZWZ0IiBzdHlsZT0icGFkZGluZy1sZWZ0OjFlbTsgcGFkZGluZy1yaWdodDoxZW07Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24taGVhZGVyIj5Eb3dubG9hZCBPcHRpb25zIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvbGk+PGxpPjxhIGlkPSJkYXRhc2V0Rm9ybTpqX2lkdDI2NCIgaHJlZj0iIyIgY2xhc3M9InVpLWNvbW1hbmRsaW5rIHVpLXdpZGdldCBidG4tZG93bmxvYWQiIG9uY2xpY2s9IlByaW1lRmFjZXMuYWIoe3M6JnF1b3Q7ZGF0YXNldEZvcm06al9pZHQyNjQmcXVvdDssZjomcXVvdDtkYXRhc2V0Rm9ybSZxdW90Oyx1OiZxdW90O2RhdGFzZXRGb3JtJnF1b3Q7LG9uY286ZnVuY3Rpb24oeGhyLHN0YXR1cyxhcmdzLGRhdGEpe3Nob3dQb3B1cCgpOzt9LGZwOiZxdW90O2RhdGFzZXRGb3JtOnRvcERhdGFzZXRCbG9ja0ZyYWdtZW50JnF1b3Q7fSk7cmV0dXJuIGZhbHNlOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWklQICgzNC41IE1CKTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ0bi1ncm91cCBidG4tZ3JvdXAtanVzdGlmaWVkIj48YSBpZD0iZGF0YXNldEZvcm06al9pZHQ0MDAiIGhyZWY9IiMiIGNsYXNzPSJ1aS1jb21tYW5kbGluayB1aS13aWRnZXQgYnRuIGJ0bi1kZWZhdWx0IGJ0bi14cyBidG4tY29udGFjdCIgb25jbGljaz0iUHJpbWVGYWNlcy5hYih7czomcXVvdDtkYXRhc2V0Rm9ybTpqX2lkdDQwMCZxdW90OyxmOiZxdW90O2RhdGFzZXRGb3JtJnF1b3Q7LHU6JnF1b3Q7Y29udGFjdERpYWxvZyZxdW90OyxvbmNvOmZ1bmN0aW9uKHhocixzdGF0dXMsYXJncyxkYXRhKXtQRignY29udGFjdEZvcm0nKS5zaG93KCk7fSxmcDomcXVvdDtkYXRhc2V0Rm9ybTp0b3BEYXRhc2V0QmxvY2tGcmFnbWVudCZxdW90O30pO3JldHVybiBmYWxzZTsiIHRpdGxlPSJDb250YWN0IERhdGFzZXQgT3duZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGFjdCBPd25lcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+PGEgaWQ9ImRhdGFzZXRGb3JtOmpfaWR0NDAyIiBocmVmPSIjIiBjbGFzcz0idWktY29tbWFuZGxpbmsgdWktd2lkZ2V0IGJ0biBidG4tZGVmYXVsdCBidG4teHMgYnRuLXNoYXJlIiBvbmNsaWNrPSJQcmltZUZhY2VzLmFiKHtzOiZxdW90O2RhdGFzZXRGb3JtOmpfaWR0NDAyJnF1b3Q7LGY6JnF1b3Q7ZGF0YXNldEZvcm0mcXVvdDssb25jbzpmdW5jdGlvbih4aHIsc3RhdHVzLGFyZ3MsZGF0YSl7UEYoJ3NoYXJlRGlhbG9nJykuc2hvdygpO3NoYXJycmUoKTs7fSxmcDomcXVvdDtkYXRhc2V0Rm9ybTp0b3BEYXRhc2V0QmxvY2tGcmFnbWVudCZxdW90O30pO3JldHVybiBmYWxzZTsiIHRpdGxlPSJTaGFyZSBEYXRhc2V0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYXJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48ZGl2IHN0eWxlPSJjbGVhcjpyaWdodDsiIGNsYXNzPSJjb2wteHMtMTIgY29sLXNtLTEyIGNvbC1tZC00IGNvbC1sZy0zIHB1bGwtcmlnaHQgbWFyZ2luLWJvdHRvbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Im1ldHJpY3MtYmxvY2siPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Im1ldHJpY3MtaGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFzZXQgTWV0cmljcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXF1ZXN0aW9uLXNpZ24gdG9vbHRpcC1pY29uIiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9ImF1dG8gdG9wIiBkYXRhLXRyaWdnZXI9ImhvdmVyIiBkYXRhLW9yaWdpbmFsLXRpdGxlPSJBZ2dyZWdhdGVkIG1ldHJpY3MgZm9yIHRoaXMgZGF0YXNldC4iPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJtZXRyaWNzLWJvZHkiPjxkaXYgY2xhc3M9Im1ldHJpY3MtY291bnQtYmxvY2siPjIxNCBEb3dubG9hZHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXF1ZXN0aW9uLXNpZ24gdG9vbHRpcC1pY29uIiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9ImF1dG8gdG9wIiBkYXRhLW9yaWdpbmFsLXRpdGxlPSJUb3RhbCBhZ2dyZWdhdGVkIGRvd25sb2FkcyBvZiBmaWxlcyBpbiB0aGlzIGRhdGFzZXQuIj48L3NwYW4+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJkYXRhc2V0LWNvbG9yZGVyLWJsb2NrIiBjbGFzcz0idmlzaWJsZS1tZC1ibG9jayB2aXNpYmxlLWxnLWJsb2NrIGNvbC1tZC04IGNvbC1sZy05Ij48L2Rpdj48ZGl2IGlkPSJkYXRhc2V0LXN1bW1hcnktbWV0YWRhdGEiIGNsYXNzPSJjb2wteHMtMTIgY29sLXNtLTEyIGNvbC1tZC04IGNvbC1sZy05IG1ldGFkYXRhLWNvbnRhaW5lciBwYWRkaW5nLW5vbmUgbWFyZ2luLWJvdHRvbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9Im1ldGFkYXRhIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+PHRyIGlkPSJkc0Rlc2NyaXB0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9InJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXF1ZXN0aW9uLXNpZ24gdG9vbHRpcC1pY29uIiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9ImF1dG8gcmlnaHQiIGRhdGEtb3JpZ2luYWwtdGl0bGU9IkEgc3VtbWFyeSBkZXNjcmliaW5nIHRoZSBwdXJwb3NlLCBuYXR1cmUsIGFuZCBzY29wZSBvZiB0aGUgRGF0YXNldCI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+PHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+U3VtbWFyeSBvZiBhc3NvY2lhdGlvbiB0ZXN0cyBmb3IgTmF0dXJlIEdlbmV0aWNzIHB1YmxpY2F0aW9uICJJZGVudGlmaWNhdGlvbiBvZiBtdWx0aXBsZSByaXNrIHZhcmlhbnRzIGZvciBhbmt5bG9zaW5nIHNwb25keWxpdGlzIHRocm91Z2ggaGlnaC1kZW5zaXR5IGdlbm90eXBpbmcgb2YgaW1tdW5lLXJlbGF0ZWQgbG9jaSIuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC90ZD48L3RyPjx0ciBpZD0ic3ViamVjdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPSJyb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdWJqZWN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXF1ZXN0aW9uLXNpZ24gdG9vbHRpcC1pY29uIiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9ImF1dG8gcmlnaHQiIGRhdGEtb3JpZ2luYWwtdGl0bGU9IlRoZSBhcmVhIG9mIHN0dWR5IHJlbGV2YW50IHRvIHRoZSBEYXRhc2V0Ij48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD48dGQ+TWVkaWNpbmUsIEhlYWx0aCBhbmQgTGlmZSBTY2llbmNlczwvdGQ+PC90cj48dHIgaWQ9ImtleXdvcmRzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9InJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtleXdvcmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tcXVlc3Rpb24tc2lnbiB0b29sdGlwLWljb24iIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0iYXV0byByaWdodCIgZGF0YS1vcmlnaW5hbC10aXRsZT0iQSBrZXkgdGVybSB0aGF0IGRlc2NyaWJlcyBhbiBpbXBvcnRhbnQgYXNwZWN0IG9mIHRoZSBEYXRhc2V0IGFuZCBpbmZvcm1hdGlvbiBhYm91dCBhbnkgY29udHJvbGxlZCB2b2NhYnVsYXJ5IHVzZWQiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4gR2Vub21lLVdpZGUgQXNzb2NpYXRpb24gU3R1ZGllcywgQW5reWxvc2luZyBzcG9uZHlsaXRpczwvdGQ+PC90cj48dHIgaWQ9InB1YmxpY2F0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9InJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0ZWQgUHVibGljYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tcXVlc3Rpb24tc2lnbiB0b29sdGlwLWljb24iIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0iYXV0byByaWdodCIgZGF0YS1vcmlnaW5hbC10aXRsZT0iVGhlIGFydGljbGUgb3IgcmVwb3J0IHRoYXQgdXNlcyB0aGUgZGF0YSBpbiB0aGUgRGF0YXNldC4gVGhlIGZ1bGwgbGlzdCBvZiByZWxhdGVkIHB1YmxpY2F0aW9ucyB3aWxsIGJlIGRpc3BsYXllZCBvbiB0aGUgbWV0YWRhdGEgdGFiIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD48dGQ+MTAuMTAzOC9uZy4yNjY3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIj48L2E+PC90ZD48L3RyPjx0ciBpZD0ibm90ZXNUZXh0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9InJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXF1ZXN0aW9uLXNpZ24gdG9vbHRpcC1pY29uIiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9ImF1dG8gcmlnaHQiIGRhdGEtb3JpZ2luYWwtdGl0bGU9IkFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIERhdGFzZXQiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPjx0ZD5FdXJvcGVhbl9DYXNlX0NvbnRyb2xfUmVzdWx0cy50eHQ6IHN1bW1hcnkgZGF0YSBmb3IgRXVyb3BlYW4gY29ob3J0IEFzaWFuX0Nhc2VfQ29udHJvbF9SZXN1bHRzLnR4dDogc3VtbWFyeSBkYXRhIGZvciBBc2lhbiBjb2hvcnQgRXVyb3BlYW5fQXNpYW5fQ2FzZV9Db250cm9sX1Jlc3VsdHMudHh0OiBzdW1tYXJ5IGRhdGEgZm9yIGNvbWJpbmVkIGNvaG9ydDwvdGQ+PC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPSJyb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpY2Vuc2UvRGF0YSBVc2UgQWdyZWVtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9saWNlbnNlYnV0dG9ucy5uZXQvcC96ZXJvLzEuMC84OHgzMS5wbmciIHRpdGxlPSJDcmVhdGl2ZSBDb21tb25zIENDMCAxLjAgVW5pdmVyc2FsIFB1YmxpYyBEb21haW4gRGVkaWNhdGlvbi4iIHN0eWxlPSJkaXNwbGF5Om5vbmUiIG9ubG9hZD0idGhpcy5zdHlsZS5kaXNwbGF5PSdpbmxpbmUnIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAiIHRpdGxlPSJDcmVhdGl2ZSBDb21tb25zIENDMCAxLjAgVW5pdmVyc2FsIFB1YmxpYyBEb21haW4gRGVkaWNhdGlvbi4iIHRhcmdldD0iX2JsYW5rIj5DQzAgMS4wPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBpZD0iY29udGVudFRhYnMiPjxkaXYgaWQ9ImRhdGFzZXRGb3JtOnBhZ2VSZWZyZXNoRnJhZ21lbnQiPjxpbnB1dCBpZD0iZGF0YXNldEZvcm06ZGF0YXNldExvY2tlZEZvckFueVJlYXNvblZhcmlhYmxlIiB0eXBlPSJoaWRkZW4iIG5hbWU9ImRhdGFzZXRGb3JtOmRhdGFzZXRMb2NrZWRGb3JBbnlSZWFzb25WYXJpYWJsZSIgdmFsdWU9ImZhbHNlIiAvPjxpbnB1dCBpZD0iZGF0YXNldEZvcm06ZGF0YXNldFN0YXRlQ2hhbmdlZFZhcmlhYmxlIiB0eXBlPSJoaWRkZW4iIG5hbWU9ImRhdGFzZXRGb3JtOmRhdGFzZXRTdGF0ZUNoYW5nZWRWYXJpYWJsZSIgdmFsdWU9ImZhbHNlIiAvPjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmpfaWR0NjcxIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPnJlZnJlc2hBbGxMb2Nrc0NvbW1hbmQgPSBmdW5jdGlvbigpIHtyZXR1cm4gUHJpbWVGYWNlcy5hYih7czoiZGF0YXNldEZvcm06al9pZHQ2NzEiLGY6ImRhdGFzZXRGb3JtIixwOiJkYXRhc2V0Rm9ybTpqX2lkdDY3MSIsdToiZGF0YXNldEZvcm06cGFnZVJlZnJlc2hGcmFnbWVudCBtZXNzYWdlUGFuZWwiLHBhOmFyZ3VtZW50c1swXSxmcDoiZGF0YXNldEZvcm06cGFnZVJlZnJlc2hGcmFnbWVudCJ9KTt9PC9zY3JpcHQ+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06al9pZHQ2NzIiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+cmVmcmVzaEFsbENvbW1hbmQgPSBmdW5jdGlvbigpIHtyZXR1cm4gUHJpbWVGYWNlcy5hYih7czoiZGF0YXNldEZvcm06al9pZHQ2NzIiLGY6ImRhdGFzZXRGb3JtIixwOiJkYXRhc2V0Rm9ybTpqX2lkdDY3MiIsdToiZGF0YXNldEZvcm06dG9wRGF0YXNldEJsb2NrRnJhZ21lbnQgZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlIG1lc3NhZ2VQYW5lbCIscGE6YXJndW1lbnRzWzBdLGZwOiJkYXRhc2V0Rm9ybTpwYWdlUmVmcmVzaEZyYWdtZW50In0pO308L3NjcmlwdD48YnV0dG9uIGlkPSJkYXRhc2V0Rm9ybTpyZWZyZXNoQnV0dG9uIiBuYW1lPSJkYXRhc2V0Rm9ybTpyZWZyZXNoQnV0dG9uIiBjbGFzcz0iIiBvbmNsaWNrPSJQcmltZUZhY2VzLmFiKHtzOiZxdW90O2RhdGFzZXRGb3JtOnJlZnJlc2hCdXR0b24mcXVvdDssZjomcXVvdDtkYXRhc2V0Rm9ybSZxdW90OyxwOiZxdW90O2RhdGFzZXRGb3JtOnJlZnJlc2hCdXR0b24mcXVvdDssdTomcXVvdDtkYXRhc2V0Rm9ybTp0b3BEYXRhc2V0QmxvY2tGcmFnbWVudCBkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGUmcXVvdDssZnA6JnF1b3Q7ZGF0YXNldEZvcm06cGFnZVJlZnJlc2hGcmFnbWVudCZxdW90O30pO3JldHVybiBmYWxzZTsiIHN0eWxlPSJkaXNwbGF5Om5vbmUiIHR5cGU9InN1Ym1pdCI+PHNwYW4gY2xhc3M9InVpLWJ1dHRvbi10ZXh0IHVpLWMiPnVpLWJ1dHRvbjwvc3Bhbj48L2J1dHRvbj48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpyZWZyZXNoQnV0dG9uX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIkNvbW1hbmRCdXR0b24iLCJyZWZyZXNoQnV0dG9uIix7aWQ6ImRhdGFzZXRGb3JtOnJlZnJlc2hCdXR0b24ifSk7fSk7PC9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NyaXB0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPCFbQ0RBVEFbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gamF2YXNjcmlwdCBmb3IgcmVmcmVzaGluZyBwYWdlIHdoZW4gbG9ja3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnJlYWR5KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaElmU3RpbGxMb2NrZWQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiByZWZyZXNoSWZTdGlsbExvY2tlZCgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQoJ2lucHV0W2lkJD0iZGF0YXNldExvY2tlZEZvckFueVJlYXNvblZhcmlhYmxlIl0nKS52YWwoKSA9PT0gJ3RydWUnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBkYXRhc2V0IGlzIGxvY2tlZCwgaW5zdHJ1Y3QgdGhlIHBhZ2UgdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdhaXQgYW5kIGNoZWNrIGFnYWluOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FpdEFuZENoZWNrTG9ja0FnYWluKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBub3QgbG9ja2VkLCBoYXMgaXQganVzdCBiZWVuIHVubG9ja2VkPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQoJ2lucHV0W2lkJD0iZGF0YXNldFN0YXRlQ2hhbmdlZFZhcmlhYmxlIl0nKS52YWwoKSA9PT0gJ3RydWUnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRm9yIHdoYXRldmVyIHVua25vd24gUHJpbWVGYWNlcyByZWFzb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcGFnZSBuZWVkcyB0byBiZSByZWZyZXNoZWQgdHdpY2UsIGZvciBhbGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcHVsbCBkb3duIG1lbnVzIHRvIHVwZGF0ZSBwcm9wZXJseToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoQWxsQ29tbWFuZCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFlvdSBjYW4ndCBqdXN0IHJ1biAyIHJlZnJlc2hBbGxDb21tYW5kKClzIGluIGEgcm93CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWl0aGVyOyBiZWNhdXNlIHRoZSBjb21tYW5kIGhhcyBhbiAidXBkYXRlPUBhbGwiIG9uIGl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNvIEkgZ3Vlc3MgaWYgeW91IHRyeSB0byBleGVjdXRlIHRoZSAybmQgb25lIHJpZ2h0IGFmdGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGZpcnN0IG9uZSwgdGhpcyBmcmFnbWVudCBpcyBzdGlsbCBnb2luZyB0byBiZSBsb2FkaW5nIC0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzbyB0aGVyZSB3b3VsZCBub3QgeWV0IGJlIGEgY29tbWFuZCB0byBydW4hIChpdCBuZWVkcyB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJlIHJlbmRlcmVkLCBiZWZvcmUgeW91IGNhbiBleGVjdXRlIGl0LCB0aGF0IGlzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGJ1dHRvbiBkb2Vzbid0IGRvIGFueXRoaW5nLCBidXQgaXQgaGFzIGFuIHVwZGF0ZT0iQGFsbCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXR0cmlidXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCdidXR0b25baWQkPSJyZWZyZXNoQnV0dG9uIl0nKS50cmlnZ2VyKCdjbGljaycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3JlZnJlc2hBbGxDb21tYW5kKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTUwMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gd2FpdEFuZENoZWNrTG9ja0FnYWluKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZnJlc2ggdGhlIGxvY2sgaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiYWNraW5nIGJlYW47IGkuZS4sIGNoZWNrLCBpZiB0aGUgaW5nZXN0IGhhcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxyZWFkeSBjb21wbGV0ZWQgaW4gdGhlIGJhY2tncm91bmQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyQoJ2J1dHRvbltpZCQ9InJlZnJlc2hCdXR0b24iXScpLnRyaWdnZXIoJ2NsaWNrJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3JlZnJlc2hMb2NrQ29tbWFuZCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaEFsbExvY2tzQ29tbWFuZCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDAwMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vXV0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NjcmlwdD48L2Rpdj48ZGl2IGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3IiBjbGFzcz0idWktdGFicyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1oaWRkZW4tY29udGFpbmVyIHVpLXRhYnMtdG9wIiBkYXRhLXdpZGdldD0iY29udGVudCI+PHVsIGNsYXNzPSJ1aS10YWJzLW5hdiB1aS1oZWxwZXItcmVzZXQgdWktd2lkZ2V0LWhlYWRlciB1aS1jb3JuZXItYWxsIiByb2xlPSJ0YWJsaXN0Ij48bGkgY2xhc3M9InVpLXRhYnMtaGVhZGVyIHVpLXN0YXRlLWRlZmF1bHQgdWktdGFicy1zZWxlY3RlZCB1aS1zdGF0ZS1hY3RpdmUgdWktY29ybmVyLXRvcCIgcm9sZT0idGFiIiBhcmlhLWV4cGFuZGVkPSJ0cnVlIiBhcmlhLXNlbGVjdGVkPSJ0cnVlIiBkYXRhLWluZGV4PSIwIj48YSBocmVmPSIjZGF0YXNldEZvcm06dGFiVmlldzpkYXRhRmlsZXNUYWIiIHRhYmluZGV4PSItMSI+RmlsZXM8L2E+PC9saT48bGkgY2xhc3M9InVpLXRhYnMtaGVhZGVyIHVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLXRvcCIgcm9sZT0idGFiIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSIgYXJpYS1zZWxlY3RlZD0iZmFsc2UiIGRhdGEtaW5kZXg9IjEiPjxhIGhyZWY9IiNkYXRhc2V0Rm9ybTp0YWJWaWV3Om1ldGFkYXRhTWFwVGFiIiB0YWJpbmRleD0iLTEiPk1ldGFkYXRhPC9hPjwvbGk+PGxpIGNsYXNzPSJ1aS10YWJzLWhlYWRlciB1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci10b3AiIHJvbGU9InRhYiIgYXJpYS1leHBhbmRlZD0iZmFsc2UiIGFyaWEtc2VsZWN0ZWQ9ImZhbHNlIiBkYXRhLWluZGV4PSIyIj48YSBocmVmPSIjZGF0YXNldEZvcm06dGFiVmlldzp0ZXJtc1RhYiIgdGFiaW5kZXg9Ii0xIj5UZXJtczwvYT48L2xpPjxsaSBjbGFzcz0idWktdGFicy1oZWFkZXIgdWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItdG9wIiByb2xlPSJ0YWIiIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIiBhcmlhLXNlbGVjdGVkPSJmYWxzZSIgZGF0YS1pbmRleD0iMyI+PGEgaHJlZj0iI2RhdGFzZXRGb3JtOnRhYlZpZXc6dmVyc2lvbnNUYWIiIHRhYmluZGV4PSItMSI+VmVyc2lvbnM8L2E+PC9saT48L3VsPjxkaXYgY2xhc3M9InVpLXRhYnMtcGFuZWxzIj48ZGl2IGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OmRhdGFGaWxlc1RhYiIgY2xhc3M9InVpLXRhYnMtcGFuZWwgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWJvdHRvbSIgcm9sZT0idGFicGFuZWwiIGFyaWEtaGlkZGVuPSJmYWxzZSIgZGF0YS1pbmRleD0iMCI+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpqX2lkdDEwNTYiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+cmVmcmVzaFBhZ2luYXRvciA9IGZ1bmN0aW9uKCkge3JldHVybiBQcmltZUZhY2VzLmFiKHtzOiJkYXRhc2V0Rm9ybTp0YWJWaWV3OmpfaWR0MTA1NiIsZjoiZGF0YXNldEZvcm0iLHA6ImRhdGFzZXRGb3JtOnRhYlZpZXc6al9pZHQxMDU2Iix1OiJkYXRhc2V0Rm9ybSIscGE6YXJndW1lbnRzWzBdfSk7fTwvc2NyaXB0PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOnRhYlZpZXc6al9pZHQxMDYxIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPnJlYmluZENvbW1hbmQgPSBmdW5jdGlvbigpIHtyZXR1cm4gUHJpbWVGYWNlcy5hYih7czoiZGF0YXNldEZvcm06dGFiVmlldzpqX2lkdDEwNjEiLGY6ImRhdGFzZXRGb3JtIixwOiJkYXRhc2V0Rm9ybTp0YWJWaWV3OmpfaWR0MTA2MSIsdToiZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlIixwYTphcmd1bWVudHNbMF19KTt9PC9zY3JpcHQ+PGRpdiBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlIiBjbGFzcz0idWktZGF0YXRhYmxlIHVpLXdpZGdldCIgc3R5bGU9Im1hcmdpbi1yaWdodDoxcHg7Ij48ZGl2IGNsYXNzPSJ1aS1kYXRhdGFibGUtaGVhZGVyIHVpLXdpZGdldC1oZWFkZXIgdWktY29ybmVyLXRvcCI+PGRpdiBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOmZpbGVzSGVhZGVyQmxvY2siIGNsYXNzPSJyb3ciPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzLTUiPjxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIj48bGFiZWwgZm9yPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6c2VhcmNoRmlsZXMiIGlkPSJzZWFyY2hMYWJlbCIgY2xhc3M9InNyLW9ubHkiPlNlYXJjaDwvbGFiZWw+PGlucHV0IGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6c2VhcmNoRmlsZXMiIG5hbWU9ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZTpzZWFyY2hGaWxlcyIgdHlwZT0idGV4dCIgdmFsdWU9IiIgY2xhc3M9InVpLWlucHV0ZmllbGQgdWktaW5wdXR0ZXh0IHVpLXdpZGdldCB1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwgZm9ybS1jb250cm9sIiB0aXRsZT0iU2VhcmNoIiBvbmtleXByZXNzPSJpZiAoZXZlbnQua2V5Q29kZSA9PSAxMykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VibWl0c2VhcmNoKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0iIGFyaWEtbGFiZWxsZWRieT0ic2VhcmNoTGFiZWwiIC8+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOnNlYXJjaEZpbGVzX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIklucHV0VGV4dCIsImlucHV0U2VhcmNoVGVybSIse2lkOiJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6c2VhcmNoRmlsZXMifSk7fSk7PC9zY3JpcHQ+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOmpfaWR0MTA3Ml9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJXYXRlcm1hcmsiLCJ3aWRnZXRfZGF0YXNldEZvcm1fdGFiVmlld19maWxlc1RhYmxlX2pfaWR0MTA3MiIse2lkOiJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6al9pZHQxMDcyIix2YWx1ZToiU2VhcmNoIHRoaXMgZGF0YXNldC4uLiIsdGFyZ2V0OiJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6c2VhcmNoRmlsZXMifSk7fSk7PC9zY3JpcHQ+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOmpfaWR0MTA3MyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5zdWJtaXRzZWFyY2ggPSBmdW5jdGlvbigpIHtyZXR1cm4gUHJpbWVGYWNlcy5hYih7czoiZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOmpfaWR0MTA3MyIsZjoiZGF0YXNldEZvcm0iLHA6ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZTpqX2lkdDEwNzMgQHdpZGdldFZhcihpbnB1dFNlYXJjaFRlcm0pIix1OiJkYXRhc2V0Rm9ybSIscHM6dHJ1ZSxwYTphcmd1bWVudHNbMF19KTt9PC9zY3JpcHQ+CgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaW5wdXQtZ3JvdXAtYnRuIj48YSBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOmpfaWR0MTA3NSIgaHJlZj0iIyIgY2xhc3M9InVpLWNvbW1hbmRsaW5rIHVpLXdpZGdldCBidG4gYnRuLWRlZmF1bHQgYm9vdHN0cmFwLWJ1dHRvbi10b29sdGlwIiBvbmNsaWNrPSJQcmltZUZhY2VzLmFiKHtzOiZxdW90O2RhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZTpqX2lkdDEwNzUmcXVvdDssZjomcXVvdDtkYXRhc2V0Rm9ybSZxdW90OyxwOiZxdW90O2RhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZTpqX2lkdDEwNzUgQHdpZGdldFZhcihpbnB1dFNlYXJjaFRlcm0pJnF1b3Q7LHU6JnF1b3Q7ZGF0YXNldEZvcm0mcXVvdDsscHM6dHJ1ZX0pO3JldHVybiBmYWxzZTsiIHRpdGxlPSJGaW5kIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1zZWFyY2ggbm8tdGV4dCI+PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wteHMtNyB0ZXh0LXJpZ2h0Ij4KICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206MTBweDsiIGNsYXNzPSJyb3ciPjxkaXYgY2xhc3M9ImNvbC14cy05IHRleHQtbGVmdCI+PGRpdiBzdHlsZT0iZm9udC13ZWlnaHQ6bm9ybWFsOyIgY2xhc3M9InRleHQtbXV0ZWQgc21hbGwiPkZpbHRlciBieTwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbi1yaWdodDoyMHB4OyIgY2xhc3M9ImJ0bi1ncm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1saW5rIGRyb3Bkb3duLXRvZ2dsZSIgc3R5bGU9InBhZGRpbmc6MDsiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biIgYXJpYS1oYXNwb3B1cD0idHJ1ZSIgYXJpYS1leHBhbmRlZD0iZmFsc2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZSBUeXBlOiA8c3BhbiBjbGFzcz0iIj5BbGw8L3NwYW4+IDxzcGFuIGNsYXNzPSJjYXJldCI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii9kYXRhc2V0LnhodG1sO2pzZXNzaW9uaWQ9YTJlZDFkYTcyNDA3NzQ4ZWJjNDc3YWJhYzQ2YT9wZXJzaXN0ZW50SWQ9ZG9pJTNBMTAuNzkxMCUyRkRWTiUyRk5KN1hTTyZhbXA7dmVyc2lvbj0mYW1wO3E9JmFtcDtmaWxlQWNjZXNzPSZhbXA7ZmlsZVRhZz0mYW1wO2ZpbGVTb3J0RmllbGQ9JmFtcDtmaWxlU29ydE9yZGVyPSI+PHNwYW4gY2xhc3M9ImhpZ2hsaWdodEJvbGQiPkFsbDwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSByb2xlPSJzZXBhcmF0b3IiIGNsYXNzPSJkaXZpZGVyIj48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIvZGF0YXNldC54aHRtbDtqc2Vzc2lvbmlkPWEyZWQxZGE3MjQwNzc0OGViYzQ3N2FiYWM0NmE/cGVyc2lzdGVudElkPWRvaSUzQTEwLjc5MTAlMkZEVk4lMkZOSjdYU08mYW1wO3ZlcnNpb249JmFtcDtxPSZhbXA7ZmlsZVR5cGVHcm91cEZhY2V0PSUyMlRleHQlMjImYW1wO2ZpbGVBY2Nlc3M9JmFtcDtmaWxlVGFnPSZhbXA7ZmlsZVNvcnRGaWVsZD0mYW1wO2ZpbGVTb3J0T3JkZXI9Ij48c3BhbiBjbGFzcz0iIj5UZXh0ICgzKTwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW4tcmlnaHQ6MjBweDsiIGNsYXNzPSJidG4tZ3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tbGluayBkcm9wZG93bi10b2dnbGUiIHN0eWxlPSJwYWRkaW5nOjA7IiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iIGFyaWEtaGFzcG9wdXA9InRydWUiIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjY2VzczogPHNwYW4gY2xhc3M9IiI+QWxsPC9zcGFuPiA8c3BhbiBjbGFzcz0iY2FyZXQiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIvZGF0YXNldC54aHRtbDtqc2Vzc2lvbmlkPWEyZWQxZGE3MjQwNzc0OGViYzQ3N2FiYWM0NmE/cGVyc2lzdGVudElkPWRvaSUzQTEwLjc5MTAlMkZEVk4lMkZOSjdYU08mYW1wO3ZlcnNpb249JmFtcDtxPSZhbXA7ZmlsZVR5cGVHcm91cEZhY2V0PSZhbXA7ZmlsZVRhZz0mYW1wO2ZpbGVTb3J0RmllbGQ9JmFtcDtmaWxlU29ydE9yZGVyPSI+PHNwYW4gY2xhc3M9ImhpZ2hsaWdodEJvbGQiPkFsbDwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSByb2xlPSJzZXBhcmF0b3IiIGNsYXNzPSJkaXZpZGVyIj48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIvZGF0YXNldC54aHRtbDtqc2Vzc2lvbmlkPWEyZWQxZGE3MjQwNzc0OGViYzQ3N2FiYWM0NmE/cGVyc2lzdGVudElkPWRvaSUzQTEwLjc5MTAlMkZEVk4lMkZOSjdYU08mYW1wO3ZlcnNpb249JmFtcDtxPSZhbXA7ZmlsZVR5cGVHcm91cEZhY2V0PSZhbXA7ZmlsZUFjY2Vzcz1QdWJsaWMmYW1wO2ZpbGVUYWc9JmFtcDtmaWxlU29ydEZpZWxkPSZhbXA7ZmlsZVNvcnRPcmRlcj0iPjxzcGFuIGNsYXNzPSIiPlB1YmxpYyAoMyk8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+PC9kaXY+PC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzLTMgdGV4dC1yaWdodCAiPgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ0bi1ncm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IGRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIiBhcmlhLWhhc3BvcHVwPSJ0cnVlIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1zb3J0Ij48L3NwYW4+IFNvcnQgPHNwYW4gY2xhc3M9ImNhcmV0Ij48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUgcHVsbC1yaWdodCB0ZXh0LWxlZnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii9kYXRhc2V0LnhodG1sO2pzZXNzaW9uaWQ9YTJlZDFkYTcyNDA3NzQ4ZWJjNDc3YWJhYzQ2YT9wZXJzaXN0ZW50SWQ9ZG9pJTNBMTAuNzkxMCUyRkRWTiUyRk5KN1hTTyZhbXA7dmVyc2lvbj0mYW1wO3E9JmFtcDtmaWxlVHlwZUdyb3VwRmFjZXQ9JmFtcDtmaWxlQWNjZXNzPSI+PHNwYW4gY2xhc3M9ImhpZ2hsaWdodEJvbGQiPk5hbWUgKEEtWik8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iL2RhdGFzZXQueGh0bWw7anNlc3Npb25pZD1hMmVkMWRhNzI0MDc3NDhlYmM0NzdhYmFjNDZhP3BlcnNpc3RlbnRJZD1kb2klM0ExMC43OTEwJTJGRFZOJTJGTko3WFNPJmFtcDt2ZXJzaW9uPSZhbXA7cT0mYW1wO2ZpbGVUeXBlR3JvdXBGYWNldD0mYW1wO2ZpbGVBY2Nlc3M9JmFtcDtmaWxlU29ydEZpZWxkPW5hbWUmYW1wO2ZpbGVTb3J0T3JkZXI9ZGVzYyI+PHNwYW4gY2xhc3M9IiI+TmFtZSAoWi1BKTwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIvZGF0YXNldC54aHRtbDtqc2Vzc2lvbmlkPWEyZWQxZGE3MjQwNzc0OGViYzQ3N2FiYWM0NmE/cGVyc2lzdGVudElkPWRvaSUzQTEwLjc5MTAlMkZEVk4lMkZOSjdYU08mYW1wO3ZlcnNpb249JmFtcDtxPSZhbXA7ZmlsZVR5cGVHcm91cEZhY2V0PSZhbXA7ZmlsZUFjY2Vzcz0mYW1wO2ZpbGVTb3J0RmllbGQ9ZGF0ZSI+PHNwYW4gY2xhc3M9IiI+TmV3ZXN0PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii9kYXRhc2V0LnhodG1sO2pzZXNzaW9uaWQ9YTJlZDFkYTcyNDA3NzQ4ZWJjNDc3YWJhYzQ2YT9wZXJzaXN0ZW50SWQ9ZG9pJTNBMTAuNzkxMCUyRkRWTiUyRk5KN1hTTyZhbXA7dmVyc2lvbj0mYW1wO3E9JmFtcDtmaWxlVHlwZUdyb3VwRmFjZXQ9JmFtcDtmaWxlQWNjZXNzPSZhbXA7ZmlsZVNvcnRGaWVsZD1kYXRlJmFtcDtmaWxlU29ydE9yZGVyPWRlc2MiPjxzcGFuIGNsYXNzPSIiPk9sZGVzdDwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIvZGF0YXNldC54aHRtbDtqc2Vzc2lvbmlkPWEyZWQxZGE3MjQwNzc0OGViYzQ3N2FiYWM0NmE/cGVyc2lzdGVudElkPWRvaSUzQTEwLjc5MTAlMkZEVk4lMkZOSjdYU08mYW1wO3ZlcnNpb249JmFtcDtxPSZhbXA7ZmlsZVR5cGVHcm91cEZhY2V0PSZhbXA7ZmlsZUFjY2Vzcz0mYW1wO2ZpbGVTb3J0RmllbGQ9c2l6ZSI+PHNwYW4gY2xhc3M9IiI+U2l6ZTwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIvZGF0YXNldC54aHRtbDtqc2Vzc2lvbmlkPWEyZWQxZGE3MjQwNzc0OGViYzQ3N2FiYWM0NmE/cGVyc2lzdGVudElkPWRvaSUzQTEwLjc5MTAlMkZEVk4lMkZOSjdYU08mYW1wO3ZlcnNpb249JmFtcDtxPSZhbXA7ZmlsZVR5cGVHcm91cEZhY2V0PSZhbXA7ZmlsZUFjY2Vzcz0mYW1wO2ZpbGVTb3J0RmllbGQ9dHlwZSI+PHNwYW4gY2xhc3M9IiI+VHlwZTwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9InVpLWRhdGF0YWJsZS10YWJsZXdyYXBwZXIiPjx0YWJsZSByb2xlPSJncmlkIiBzdHlsZT0ibWluLXdpZHRoOjEwMCU7d2lkdGg6YXV0bzsiPjx0aGVhZCBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlX2hlYWQiPjx0ciByb2xlPSJyb3ciPjx0aCBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOmpfaWR0MTI0OSIgY2xhc3M9InVpLXN0YXRlLWRlZmF1bHQgdWktc2VsZWN0aW9uLWNvbHVtbiB0ZXh0LWNlbnRlciIgcm9sZT0iY29sdW1uaGVhZGVyIiBhcmlhLWxhYmVsPSJTZWxlY3QgRmlsZXMiIHNjb3BlPSJjb2wiPjxzcGFuIGNsYXNzPSJ1aS1jb2x1bW4tdGl0bGUiPjwvc3Bhbj48ZGl2IGNsYXNzPSJ1aS1jaGtib3ggdWktY2hrYm94LWFsbCB1aS13aWRnZXQiPjxkaXYgaWQ9ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZV9oZWFkX2NoZWNrYm94IiByb2xlPSJjaGVja2JveCIgdGFiaW5kZXg9IjAiIGFyaWEtbGFiZWw9IlNlbGVjdCBBbGwiIGFyaWEtY2hlY2tlZD0iZmFsc2UiIGNsYXNzPSJ1aS1jaGtib3gtYm94IHVpLXdpZGdldCB1aS1jb3JuZXItYWxsIHVpLXN0YXRlLWRlZmF1bHQiPjxzcGFuIGNsYXNzPSJ1aS1jaGtib3gtaWNvbiB1aS1pY29uIHVpLWljb24tYmxhbmsgdWktYyI+PC9zcGFuPjwvZGl2PjwvZGl2PjwvdGg+PHRoIGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6al9pZHQxMjUwIiBjbGFzcz0idWktc3RhdGUtZGVmYXVsdCBjb2wtZmlsZS1tZXRhZGF0YSIgcm9sZT0iY29sdW1uaGVhZGVyIiBhcmlhLWxhYmVsPSJ7MH0gdG8gezF9IG9mIHsyfSB7MiwgY2hvaWNlLCAwI0ZpbGVzfDEjRmlsZXwyI0ZpbGVzfSIgc2NvcGU9ImNvbCI+PHNwYW4gY2xhc3M9InVpLWNvbHVtbi10aXRsZSI+PGRpdiBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOmZpbGVzSGVhZGVyQ291bnQiPjxzcGFuIGNsYXNzPSJoaWdobGlnaHRCb2xkIj4xIHRvIDMgb2YgMyBGaWxlczwvc3Bhbj48L2Rpdj48L3NwYW4+PC90aD48dGggaWQ9ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZTpqX2lkdDEyODYiIGNsYXNzPSJ1aS1zdGF0ZS1kZWZhdWx0IGNvbC1maWxlLWFjdGlvbiBidXR0b24tYmxvY2sgdGV4dC1yaWdodCIgcm9sZT0iY29sdW1uaGVhZGVyIiBhcmlhLWxhYmVsPSJGaWxlIEFjdGlvbnMiIHNjb3BlPSJjb2wiIHN0eWxlPSJ3aWR0aDo0MCU7Ij48c3BhbiBjbGFzcz0idWktY29sdW1uLXRpdGxlIj4KICAgICAgICAgICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBkb3dubG9hZEZpbGVzKHVybCwgZmlsZWxpc3QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZmlsZWxpc3QgPSBmaWxlbGlzdCArICcsJzsgLy9QcmV2ZW50cyBsYXN0IGZpbGUgZnJvbSBiZWluZyBkcm9wcGVkIG9uIHNlcnZlcgogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZm9ybSA9ICQoJzxmb3JtPjwvZm9ybT4nKS5hdHRyKCdhY3Rpb24nLCB1cmwpLmF0dHIoJ21ldGhvZCcsICdwb3N0JykuYXR0cignZW5jdHlwZScsICd0ZXh0L3BsYWluJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm0uYXBwZW5kKCQoIjxpbnB1dCAvPiIpLmF0dHIoJ3R5cGUnLCAnaGlkZGVuJykuYXR0cignbmFtZScsICdmaWxlSWRzJykuYXR0cigndmFsdWUnLCBmaWxlbGlzdCkpOwogICAgICAgICAgICAgICAgICAgICAgICAvL1N1Ym1pdCBhbmQgdGhlbiByZW1vdmUgZm9ybQogICAgICAgICAgICAgICAgICAgICAgICBmb3JtLmFwcGVuZFRvKCdib2R5Jykuc3VibWl0KCkucmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgPC9zY3JpcHQ+PGRpdiBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOmRvd25sb2FkQnV0dG9uQmxvY2tOb3JtYWwiIGNsYXNzPSJidG4tZ3JvdXAiPjxhIGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6al9pZHQxMzM3IiBocmVmPSIjIiBjbGFzcz0idWktY29tbWFuZGxpbmsgdWktd2lkZ2V0IGJ0biBidG4tZGVmYXVsdCBidG4tZG93bmxvYWQiIG9uY2xpY2s9ImlmICghdGVzdEZpbGVzU2VsZWN0ZWQoKSkgcmV0dXJuIGZhbHNlOztQcmltZUZhY2VzLmFiKHtzOiZxdW90O2RhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZTpqX2lkdDEzMzcmcXVvdDssZjomcXVvdDtkYXRhc2V0Rm9ybSZxdW90Oyx1OiZxdW90O2RhdGFzZXRGb3JtJnF1b3Q7LG9uY286ZnVuY3Rpb24oeGhyLHN0YXR1cyxhcmdzLGRhdGEpe3Nob3dQb3B1cCgpOzt9fSk7cmV0dXJuIGZhbHNlOyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPiBEb3dubG9hZAogICAgICAgICAgICAgICAgICAgIDwvYT48L2Rpdj48L3NwYW4+PC90aD48L3RyPjwvdGhlYWQ+PHRib2R5IGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGVfZGF0YSIgY2xhc3M9InVpLWRhdGF0YWJsZS1kYXRhIHVpLXdpZGdldC1jb250ZW50Ij48dHIgZGF0YS1yaT0iMCIgZGF0YS1yaz0iczM6Ly9kdm4tY2xvdWQ6MTVlZDU3YTY1MmUtNjcyODRhMzcyYzI5IiBjbGFzcz0idWktd2lkZ2V0LWNvbnRlbnQgdWktZGF0YXRhYmxlLWV2ZW4gdWktZGF0YXRhYmxlLXNlbGVjdGFibGUiIHJvbGU9InJvdyIgYXJpYS1zZWxlY3RlZD0iZmFsc2UiPjx0ZCByb2xlPSJncmlkY2VsbCIgY2xhc3M9InVpLXNlbGVjdGlvbi1jb2x1bW4gdGV4dC1jZW50ZXIiPjxkaXYgY2xhc3M9InVpLWNoa2JveCB1aS13aWRnZXQiPjxkaXYgaWQ9ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZV9zMzovL2R2bi1jbG91ZDoxNWVkNTdhNjUyZS02NzI4NGEzNzJjMjlfY2hlY2tib3giIHJvbGU9ImNoZWNrYm94IiB0YWJpbmRleD0iMCIgYXJpYS1sYWJlbD0iU2VsZWN0IEFzaWFuX0Nhc2VfQ29udHJvbF9SZXN1bHRzLnR4dCIgYXJpYS1jaGVja2VkPSJmYWxzZSIgY2xhc3M9InVpLWNoa2JveC1ib3ggdWktd2lkZ2V0IHVpLWNvcm5lci1hbGwgdWktc3RhdGUtZGVmYXVsdCI+PHNwYW4gY2xhc3M9InVpLWNoa2JveC1pY29uIHVpLWljb24gdWktaWNvbi1ibGFuayB1aS1jIj48L3NwYW4+PC9kaXY+PC9kaXY+PC90ZD48dGQgcm9sZT0iZ3JpZGNlbGwiIGNsYXNzPSJjb2wtZmlsZS1tZXRhZGF0YSI+PGRpdiBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOjA6ZmlsZUluZm9JbmNsdWRlLWZpbGVzVGFibGUiIGNsYXNzPSJ1aS1vdXRwdXRwYW5lbCB1aS13aWRnZXQgbWVkaWEiPgogICAgICAgIDxkaXYgY2xhc3M9Im1lZGlhLWxlZnQgY29sLWZpbGUtdGh1bWIiIHN0eWxlPSJwYWRkaW5nLXRvcDo0cHg7Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVkaWEtb2JqZWN0IHRodW1ibmFpbC1ibG9jayB0ZXh0LWNlbnRlciI+PHNwYW4gY2xhc3M9Imljb24tZG9jdW1lbnQgZmlsZS10aHVtYm5haWwtaWNvbiB0ZXh0LW11dGVkIj48L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1lZGlhLWJvZHkgY29sLWZpbGUtbWV0YWRhdGEiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWxlTmFtZU9yaWdpbmFsIj4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvZmlsZS54aHRtbD9wZXJzaXN0ZW50SWQ9ZG9pOjEwLjc5MTAvRFZOL05KN1hTTy9LM05STU8mYW1wO3ZlcnNpb249MS4wIj4KICAgICAgICAgICAgICAgICAgICAgICAgQXNpYW5fQ2FzZV9Db250cm9sX1Jlc3VsdHMudHh0CiAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtbXV0ZWQgc21hbGwiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6MDpmaWxlVHlwZSI+UGxhaW4gVGV4dDwvc3Bhbj48c3BhbiBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOjA6ZmlsZVNpemUiPiAtIDExLjAgTUI8L3NwYW4+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkYXRlQ3JlYXRlUHVibGlzaC1ibG9jayI+PHNwYW4gaWQ9ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZTowOmZpbGVDcmVhdGVQdWJsaXNoRGF0ZSI+UHVibGlzaGVkIFNlcCAzMCwgMjAxNzwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PjxkaXYgY2xhc3M9ImRvd25sb2Fkcy1ibG9jayI+PHNwYW4gaWQ9ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZTowOmZpbGVEb3dubG9hZENvdW50IiBjbGFzcz0idmlzaWJsZS14cy1ibG9jayB2aXNpYmxlLXNtLWJsb2NrIHZpc2libGUtbWQtaW5saW5lIHZpc2libGUtbGctaW5saW5lIj42MSBEb3dubG9hZHM8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iY2hlY2tzdW0tYmxvY2siPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjaGVja3N1bS10cnVuY2F0ZSBjaGVja3N1bS10b29sdGlwIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OjNweDsiIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0idG9wIiBkYXRhLWh0bWw9InRydWUiIGRhdGEtY2xpcGJvYXJkLWFjdGlvbj0iY29weSIgZGF0YS1jbGlwYm9hcmQtdGV4dD0iYmNjMDZhZWJmOTZjOTU0MDk5NTE5MmM4OWM5MWZiMjMiIHRpdGxlPSJDbGljayB0byBjb3B5Jmx0O2JyLyZndDtiY2MwNmFlYmY5NmM5NTQwOTk1MTkyYzg5YzkxZmIyMyI+TUQ1OiBiY2MwNmFlYmY5NmM5NTQwOTk1MTkyYzg5YzkxZmIyMzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1jb3B5IGJ0bi1jb3B5IGNoZWNrc3VtLXRvb2x0aXAiIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0idG9wIiBkYXRhLWh0bWw9InRydWUiIGRhdGEtY2xpcGJvYXJkLWFjdGlvbj0iY29weSIgZGF0YS1jbGlwYm9hcmQtdGV4dD0iYmNjMDZhZWJmOTZjOTU0MDk5NTE5MmM4OWM5MWZiMjMiIHRpdGxlPSJDbGljayB0byBjb3B5Jmx0O2JyLyZndDtiY2MwNmFlYmY5NmM5NTQwOTk1MTkyYzg5YzkxZmIyMyI+PC9zcGFuPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj48ZGl2IGNsYXNzPSJmaWxlRGVzY3JpcHRpb24gc21hbGwiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6MDpmaWxlRGVzY05vbkVtcHR5Ij5TdW1tYXJ5IGRhdGEgZm9yIEFzaWFuIGNvaG9ydDwvc3Bhbj48L2Rpdj4KICAgICAgICA8L2Rpdj48L2Rpdj48L3RkPjx0ZCByb2xlPSJncmlkY2VsbCIgc3R5bGU9IndpZHRoOjQwJTsiIGNsYXNzPSJjb2wtZmlsZS1hY3Rpb24gYnV0dG9uLWJsb2NrIHRleHQtcmlnaHQiPjxkaXYgcm9sZT0iZ3JvdXAiIGNsYXNzPSJidG4tZ3JvdXAiIGFyaWEtbGFiZWw9IkZpbGUgQWN0aW9ucyI+PGRpdiBjbGFzcz0iYnRuLWdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImJ0bi1wcmV2aWV3IGJ0biBidG4tbGluayBib290c3RyYXAtYnV0dG9uLXRvb2x0aXAiIHRpdGxlPSJSZWFkIFRleHQiIGhyZWY9Ii9maWxlLnhodG1sP3BlcnNpc3RlbnRJZD1kb2k6MTAuNzkxMC9EVk4vTko3WFNPL0szTlJNTyZhbXA7dmVyc2lvbj0xLjAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZXllLW9wZW4iPjwvc3Bhbj48c3BhbiBjbGFzcz0ic3Itb25seSI+UHJldmlldyAiQXNpYW5fQ2FzZV9Db250cm9sX1Jlc3VsdHMudHh0Ijwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDxhIHR5cGU9ImJ1dHRvbiIgc3R5bGU9InBhZGRpbmc6NnB4IDhweDsiIGNsYXNzPSJidG4tYWNjZXNzLWZpbGUgYnRuIGJ0bi1saW5rIGJvb3RzdHJhcC1idXR0b24tdG9vbHRpcCBkcm9wZG93bi10b2dnbGUiIHRpdGxlPSJBY2Nlc3MgRmlsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIiBhcmlhLWhhc3BvcHVwPSJ0cnVlIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSIgdGFiaW5kZXg9IjAiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48c3BhbiBjbGFzcz0ic3Itb25seSI+QWNjZXNzIEZpbGU8L3NwYW4+PHNwYW4gY2xhc3M9ImNhcmV0Ij48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSBwdWxsLXJpZ2h0IHRleHQtbGVmdCI+CiAgICAKICAgIAogICAgPGxpIGNsYXNzPSJkcm9wZG93bi1oZWFkZXIiPkZpbGUgQWNjZXNzIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWZpbGUiPjwvc3Bhbj48L2xpPgogICAgPGxpPjxzcGFuIGNsYXNzPSJkcm9wZG93bi1pdGVtLXRleHQiPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1nbG9iZSB0ZXh0LXN1Y2Nlc3MiPjwvc3Bhbj48c3BhbiBjbGFzcz0idGV4dC1zdWNjZXNzIj4gUHVibGljPC9zcGFuPgogICAgICAgIDwvc3Bhbj48L2xpPgogICAgICAgIAogICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24taGVhZGVyIj5Eb3dubG9hZCBPcHRpb25zIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvbGk+PGxpPjxhIGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6MDpqX2lkdDEzOTAiIGhyZWY9IiMiIGNsYXNzPSJ1aS1jb21tYW5kbGluayB1aS13aWRnZXQgYnRuLWRvd25sb2FkIiBvbmNsaWNrPSJQcmltZUZhY2VzLmFiKHtzOiZxdW90O2RhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZTowOmpfaWR0MTM5MCZxdW90OyxmOiZxdW90O2RhdGFzZXRGb3JtJnF1b3Q7LHA6JnF1b3Q7ZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOjA6al9pZHQxMzkwJnF1b3Q7fSk7cmV0dXJuIGZhbHNlOyI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgUGxhaW4gVGV4dAogICAgICAgICAgICA8L2E+PC9saT4KICAgIAogICAgCiAgICAKICAgIDxsaSBjbGFzcz0iZHJvcGRvd24taGVhZGVyIj5Eb3dubG9hZCBNZXRhZGF0YSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iZHJvcGRvd24tc3VibWVudSBwdWxsLWxlZnQiPgogICAgICAgICAgICA8YSB0YWJpbmRleD0iMCI+RGF0YSBGaWxlIENpdGF0aW9uPC9hPgogICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIiBvbmNsaWNrPSJtb2phcnJhLmpzZmNsanMoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RhdGFzZXRGb3JtJykseydkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6MDpqX2lkdDE0MjUnOidkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6MDpqX2lkdDE0MjUnfSwnJyk7cmV0dXJuIGZhbHNlIiBjbGFzcz0iYnRuLWRvd25sb2FkIj5FbmROb3RlIFhNTDwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiMiIG9uY2xpY2s9Im1vamFycmEuanNmY2xqcyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGF0YXNldEZvcm0nKSx7J2RhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZTowOmpfaWR0MTQyOCc6J2RhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZTowOmpfaWR0MTQyOCd9LCcnKTtyZXR1cm4gZmFsc2UiIGNsYXNzPSJidG4tZG93bmxvYWQiPlJJUzwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiMiIG9uY2xpY2s9Im1vamFycmEuanNmY2xqcyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGF0YXNldEZvcm0nKSx7J2RhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZTowOmpfaWR0MTQzMSc6J2RhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZTowOmpfaWR0MTQzMSd9LCcnKTtyZXR1cm4gZmFsc2UiIGNsYXNzPSJidG4tZG93bmxvYWQiPkJpYlRlWDwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICA8L3VsPjwvbGk+CiAgICAKICAgIDxsaSByb2xlPSJwcmVzZW50YXRpb24iIGNsYXNzPSJjbGVhcmZpeCI+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPC91bD48L2Rpdj48L2Rpdj48L3RkPjwvdHI+PHRyIGRhdGEtcmk9IjEiIGRhdGEtcms9InMzOi8vZHZuLWNsb3VkOjE1ZWQ1N2E4N2I5LTk5YWJjMTYyYjQ1OCIgY2xhc3M9InVpLXdpZGdldC1jb250ZW50IHVpLWRhdGF0YWJsZS1vZGQgdWktZGF0YXRhYmxlLXNlbGVjdGFibGUiIHJvbGU9InJvdyIgYXJpYS1zZWxlY3RlZD0iZmFsc2UiPjx0ZCByb2xlPSJncmlkY2VsbCIgY2xhc3M9InVpLXNlbGVjdGlvbi1jb2x1bW4gdGV4dC1jZW50ZXIiPjxkaXYgY2xhc3M9InVpLWNoa2JveCB1aS13aWRnZXQiPjxkaXYgaWQ9ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZV9zMzovL2R2bi1jbG91ZDoxNWVkNTdhODdiOS05OWFiYzE2MmI0NThfY2hlY2tib3giIHJvbGU9ImNoZWNrYm94IiB0YWJpbmRleD0iMCIgYXJpYS1sYWJlbD0iU2VsZWN0IEV1cm9wZWFuX0FzaWFuX0Nhc2VfQ29udHJvbF9SZXN1bHRzLnR4dCIgYXJpYS1jaGVja2VkPSJmYWxzZSIgY2xhc3M9InVpLWNoa2JveC1ib3ggdWktd2lkZ2V0IHVpLWNvcm5lci1hbGwgdWktc3RhdGUtZGVmYXVsdCI+PHNwYW4gY2xhc3M9InVpLWNoa2JveC1pY29uIHVpLWljb24gdWktaWNvbi1ibGFuayB1aS1jIj48L3NwYW4+PC9kaXY+PC9kaXY+PC90ZD48dGQgcm9sZT0iZ3JpZGNlbGwiIGNsYXNzPSJjb2wtZmlsZS1tZXRhZGF0YSI+PGRpdiBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOjE6ZmlsZUluZm9JbmNsdWRlLWZpbGVzVGFibGUiIGNsYXNzPSJ1aS1vdXRwdXRwYW5lbCB1aS13aWRnZXQgbWVkaWEiPgogICAgICAgIDxkaXYgY2xhc3M9Im1lZGlhLWxlZnQgY29sLWZpbGUtdGh1bWIiIHN0eWxlPSJwYWRkaW5nLXRvcDo0cHg7Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVkaWEtb2JqZWN0IHRodW1ibmFpbC1ibG9jayB0ZXh0LWNlbnRlciI+PHNwYW4gY2xhc3M9Imljb24tZG9jdW1lbnQgZmlsZS10aHVtYm5haWwtaWNvbiB0ZXh0LW11dGVkIj48L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1lZGlhLWJvZHkgY29sLWZpbGUtbWV0YWRhdGEiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWxlTmFtZU9yaWdpbmFsIj4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvZmlsZS54aHRtbD9wZXJzaXN0ZW50SWQ9ZG9pOjEwLjc5MTAvRFZOL05KN1hTTy9IQTJTVlImYW1wO3ZlcnNpb249MS4wIj4KICAgICAgICAgICAgICAgICAgICAgICAgRXVyb3BlYW5fQXNpYW5fQ2FzZV9Db250cm9sX1Jlc3VsdHMudHh0CiAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtbXV0ZWQgc21hbGwiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6MTpmaWxlVHlwZSI+UGxhaW4gVGV4dDwvc3Bhbj48c3BhbiBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOjE6ZmlsZVNpemUiPiAtIDEwLjcgTUI8L3NwYW4+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkYXRlQ3JlYXRlUHVibGlzaC1ibG9jayI+PHNwYW4gaWQ9ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZToxOmZpbGVDcmVhdGVQdWJsaXNoRGF0ZSI+UHVibGlzaGVkIFNlcCAzMCwgMjAxNzwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PjxkaXYgY2xhc3M9ImRvd25sb2Fkcy1ibG9jayI+PHNwYW4gaWQ9ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZToxOmZpbGVEb3dubG9hZENvdW50IiBjbGFzcz0idmlzaWJsZS14cy1ibG9jayB2aXNpYmxlLXNtLWJsb2NrIHZpc2libGUtbWQtaW5saW5lIHZpc2libGUtbGctaW5saW5lIj42MyBEb3dubG9hZHM8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iY2hlY2tzdW0tYmxvY2siPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjaGVja3N1bS10cnVuY2F0ZSBjaGVja3N1bS10b29sdGlwIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OjNweDsiIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0idG9wIiBkYXRhLWh0bWw9InRydWUiIGRhdGEtY2xpcGJvYXJkLWFjdGlvbj0iY29weSIgZGF0YS1jbGlwYm9hcmQtdGV4dD0iMGFlN2I0NjM5NjI2ZWJhZDZhYjc3ZjU0YmZjZmRkNmQiIHRpdGxlPSJDbGljayB0byBjb3B5Jmx0O2JyLyZndDswYWU3YjQ2Mzk2MjZlYmFkNmFiNzdmNTRiZmNmZGQ2ZCI+TUQ1OiAwYWU3YjQ2Mzk2MjZlYmFkNmFiNzdmNTRiZmNmZGQ2ZDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1jb3B5IGJ0bi1jb3B5IGNoZWNrc3VtLXRvb2x0aXAiIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0idG9wIiBkYXRhLWh0bWw9InRydWUiIGRhdGEtY2xpcGJvYXJkLWFjdGlvbj0iY29weSIgZGF0YS1jbGlwYm9hcmQtdGV4dD0iMGFlN2I0NjM5NjI2ZWJhZDZhYjc3ZjU0YmZjZmRkNmQiIHRpdGxlPSJDbGljayB0byBjb3B5Jmx0O2JyLyZndDswYWU3YjQ2Mzk2MjZlYmFkNmFiNzdmNTRiZmNmZGQ2ZCI+PC9zcGFuPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj48ZGl2IGNsYXNzPSJmaWxlRGVzY3JpcHRpb24gc21hbGwiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6MTpmaWxlRGVzY05vbkVtcHR5Ij5TdW1tYXJ5IGRhdGEgZm9yIGNvbWJpbmVkIGNvaG9ydDwvc3Bhbj48L2Rpdj4KICAgICAgICA8L2Rpdj48L2Rpdj48L3RkPjx0ZCByb2xlPSJncmlkY2VsbCIgc3R5bGU9IndpZHRoOjQwJTsiIGNsYXNzPSJjb2wtZmlsZS1hY3Rpb24gYnV0dG9uLWJsb2NrIHRleHQtcmlnaHQiPjxkaXYgcm9sZT0iZ3JvdXAiIGNsYXNzPSJidG4tZ3JvdXAiIGFyaWEtbGFiZWw9IkZpbGUgQWN0aW9ucyI+PGRpdiBjbGFzcz0iYnRuLWdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImJ0bi1wcmV2aWV3IGJ0biBidG4tbGluayBib290c3RyYXAtYnV0dG9uLXRvb2x0aXAiIHRpdGxlPSJSZWFkIFRleHQiIGhyZWY9Ii9maWxlLnhodG1sP3BlcnNpc3RlbnRJZD1kb2k6MTAuNzkxMC9EVk4vTko3WFNPL0hBMlNWUiZhbXA7dmVyc2lvbj0xLjAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZXllLW9wZW4iPjwvc3Bhbj48c3BhbiBjbGFzcz0ic3Itb25seSI+UHJldmlldyAiRXVyb3BlYW5fQXNpYW5fQ2FzZV9Db250cm9sX1Jlc3VsdHMudHh0Ijwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDxhIHR5cGU9ImJ1dHRvbiIgc3R5bGU9InBhZGRpbmc6NnB4IDhweDsiIGNsYXNzPSJidG4tYWNjZXNzLWZpbGUgYnRuIGJ0bi1saW5rIGJvb3RzdHJhcC1idXR0b24tdG9vbHRpcCBkcm9wZG93bi10b2dnbGUiIHRpdGxlPSJBY2Nlc3MgRmlsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIiBhcmlhLWhhc3BvcHVwPSJ0cnVlIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSIgdGFiaW5kZXg9IjAiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48c3BhbiBjbGFzcz0ic3Itb25seSI+QWNjZXNzIEZpbGU8L3NwYW4+PHNwYW4gY2xhc3M9ImNhcmV0Ij48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSBwdWxsLXJpZ2h0IHRleHQtbGVmdCI+CiAgICAKICAgIAogICAgPGxpIGNsYXNzPSJkcm9wZG93bi1oZWFkZXIiPkZpbGUgQWNjZXNzIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWZpbGUiPjwvc3Bhbj48L2xpPgogICAgPGxpPjxzcGFuIGNsYXNzPSJkcm9wZG93bi1pdGVtLXRleHQiPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1nbG9iZSB0ZXh0LXN1Y2Nlc3MiPjwvc3Bhbj48c3BhbiBjbGFzcz0idGV4dC1zdWNjZXNzIj4gUHVibGljPC9zcGFuPgogICAgICAgIDwvc3Bhbj48L2xpPgogICAgICAgIAogICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24taGVhZGVyIj5Eb3dubG9hZCBPcHRpb25zIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvbGk+PGxpPjxhIGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6MTpqX2lkdDEzOTAiIGhyZWY9IiMiIGNsYXNzPSJ1aS1jb21tYW5kbGluayB1aS13aWRnZXQgYnRuLWRvd25sb2FkIiBvbmNsaWNrPSJQcmltZUZhY2VzLmFiKHtzOiZxdW90O2RhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZToxOmpfaWR0MTM5MCZxdW90OyxmOiZxdW90O2RhdGFzZXRGb3JtJnF1b3Q7LHA6JnF1b3Q7ZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOjE6al9pZHQxMzkwJnF1b3Q7fSk7cmV0dXJuIGZhbHNlOyI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgUGxhaW4gVGV4dAogICAgICAgICAgICA8L2E+PC9saT4KICAgIAogICAgCiAgICAKICAgIDxsaSBjbGFzcz0iZHJvcGRvd24taGVhZGVyIj5Eb3dubG9hZCBNZXRhZGF0YSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iZHJvcGRvd24tc3VibWVudSBwdWxsLWxlZnQiPgogICAgICAgICAgICA8YSB0YWJpbmRleD0iMCI+RGF0YSBGaWxlIENpdGF0aW9uPC9hPgogICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIiBvbmNsaWNrPSJtb2phcnJhLmpzZmNsanMoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RhdGFzZXRGb3JtJykseydkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6MTpqX2lkdDE0MjUnOidkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6MTpqX2lkdDE0MjUnfSwnJyk7cmV0dXJuIGZhbHNlIiBjbGFzcz0iYnRuLWRvd25sb2FkIj5FbmROb3RlIFhNTDwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiMiIG9uY2xpY2s9Im1vamFycmEuanNmY2xqcyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGF0YXNldEZvcm0nKSx7J2RhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZToxOmpfaWR0MTQyOCc6J2RhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZToxOmpfaWR0MTQyOCd9LCcnKTtyZXR1cm4gZmFsc2UiIGNsYXNzPSJidG4tZG93bmxvYWQiPlJJUzwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiMiIG9uY2xpY2s9Im1vamFycmEuanNmY2xqcyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGF0YXNldEZvcm0nKSx7J2RhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZToxOmpfaWR0MTQzMSc6J2RhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZToxOmpfaWR0MTQzMSd9LCcnKTtyZXR1cm4gZmFsc2UiIGNsYXNzPSJidG4tZG93bmxvYWQiPkJpYlRlWDwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICA8L3VsPjwvbGk+CiAgICAKICAgIDxsaSByb2xlPSJwcmVzZW50YXRpb24iIGNsYXNzPSJjbGVhcmZpeCI+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPC91bD48L2Rpdj48L2Rpdj48L3RkPjwvdHI+PHRyIGRhdGEtcmk9IjIiIGRhdGEtcms9InMzOi8vZHZuLWNsb3VkOjE1ZWQ1N2FhYjdlLTkwYTJiNmMxMTJlYiIgY2xhc3M9InVpLXdpZGdldC1jb250ZW50IHVpLWRhdGF0YWJsZS1ldmVuIHVpLWRhdGF0YWJsZS1zZWxlY3RhYmxlIiByb2xlPSJyb3ciIGFyaWEtc2VsZWN0ZWQ9ImZhbHNlIj48dGQgcm9sZT0iZ3JpZGNlbGwiIGNsYXNzPSJ1aS1zZWxlY3Rpb24tY29sdW1uIHRleHQtY2VudGVyIj48ZGl2IGNsYXNzPSJ1aS1jaGtib3ggdWktd2lkZ2V0Ij48ZGl2IGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGVfczM6Ly9kdm4tY2xvdWQ6MTVlZDU3YWFiN2UtOTBhMmI2YzExMmViX2NoZWNrYm94IiByb2xlPSJjaGVja2JveCIgdGFiaW5kZXg9IjAiIGFyaWEtbGFiZWw9IlNlbGVjdCBFdXJvcGVhbl9DYXNlX0NvbnRyb2xfUmVzdWx0cy50eHQiIGFyaWEtY2hlY2tlZD0iZmFsc2UiIGNsYXNzPSJ1aS1jaGtib3gtYm94IHVpLXdpZGdldCB1aS1jb3JuZXItYWxsIHVpLXN0YXRlLWRlZmF1bHQiPjxzcGFuIGNsYXNzPSJ1aS1jaGtib3gtaWNvbiB1aS1pY29uIHVpLWljb24tYmxhbmsgdWktYyI+PC9zcGFuPjwvZGl2PjwvZGl2PjwvdGQ+PHRkIHJvbGU9ImdyaWRjZWxsIiBjbGFzcz0iY29sLWZpbGUtbWV0YWRhdGEiPjxkaXYgaWQ9ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZToyOmZpbGVJbmZvSW5jbHVkZS1maWxlc1RhYmxlIiBjbGFzcz0idWktb3V0cHV0cGFuZWwgdWktd2lkZ2V0IG1lZGlhIj4KICAgICAgICA8ZGl2IGNsYXNzPSJtZWRpYS1sZWZ0IGNvbC1maWxlLXRodW1iIiBzdHlsZT0icGFkZGluZy10b3A6NHB4OyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lZGlhLW9iamVjdCB0aHVtYm5haWwtYmxvY2sgdGV4dC1jZW50ZXIiPjxzcGFuIGNsYXNzPSJpY29uLWRvY3VtZW50IGZpbGUtdGh1bWJuYWlsLWljb24gdGV4dC1tdXRlZCI+PC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtZWRpYS1ib2R5IGNvbC1maWxlLW1ldGFkYXRhIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmlsZU5hbWVPcmlnaW5hbCI+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL2ZpbGUueGh0bWw/cGVyc2lzdGVudElkPWRvaToxMC43OTEwL0RWTi9OSjdYU08vSU40NUdaJmFtcDt2ZXJzaW9uPTEuMCI+CiAgICAgICAgICAgICAgICAgICAgICAgIEV1cm9wZWFuX0Nhc2VfQ29udHJvbF9SZXN1bHRzLnR4dAogICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0LW11dGVkIHNtYWxsIj48c3BhbiBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOjI6ZmlsZVR5cGUiPlBsYWluIFRleHQ8L3NwYW4+PHNwYW4gaWQ9ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZToyOmZpbGVTaXplIj4gLSAxMi43IE1CPC9zcGFuPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGF0ZUNyZWF0ZVB1Ymxpc2gtYmxvY2siPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6MjpmaWxlQ3JlYXRlUHVibGlzaERhdGUiPlB1Ymxpc2hlZCBTZXAgMzAsIDIwMTc8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj48ZGl2IGNsYXNzPSJkb3dubG9hZHMtYmxvY2siPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6MjpmaWxlRG93bmxvYWRDb3VudCIgY2xhc3M9InZpc2libGUteHMtYmxvY2sgdmlzaWJsZS1zbS1ibG9jayB2aXNpYmxlLW1kLWlubGluZSB2aXNpYmxlLWxnLWlubGluZSI+OTAgRG93bmxvYWRzPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9ImNoZWNrc3VtLWJsb2NrIj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY2hlY2tzdW0tdHJ1bmNhdGUgY2hlY2tzdW0tdG9vbHRpcCIgc3R5bGU9Im1hcmdpbi1yaWdodDozcHg7IiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9InRvcCIgZGF0YS1odG1sPSJ0cnVlIiBkYXRhLWNsaXBib2FyZC1hY3Rpb249ImNvcHkiIGRhdGEtY2xpcGJvYXJkLXRleHQ9Ijg3NmJiM2I2MDA0NjBmZGJmYWJjMDFlYjA4YzQxNDk3IiB0aXRsZT0iQ2xpY2sgdG8gY29weSZsdDtici8mZ3Q7ODc2YmIzYjYwMDQ2MGZkYmZhYmMwMWViMDhjNDE0OTciPk1ENTogODc2YmIzYjYwMDQ2MGZkYmZhYmMwMWViMDhjNDE0OTc8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tY29weSBidG4tY29weSBjaGVja3N1bS10b29sdGlwIiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9InRvcCIgZGF0YS1odG1sPSJ0cnVlIiBkYXRhLWNsaXBib2FyZC1hY3Rpb249ImNvcHkiIGRhdGEtY2xpcGJvYXJkLXRleHQ9Ijg3NmJiM2I2MDA0NjBmZGJmYWJjMDFlYjA4YzQxNDk3IiB0aXRsZT0iQ2xpY2sgdG8gY29weSZsdDtici8mZ3Q7ODc2YmIzYjYwMDQ2MGZkYmZhYmMwMWViMDhjNDE0OTciPjwvc3Bhbj48L2Rpdj4KICAgICAgICAgICAgPC9kaXY+PGRpdiBjbGFzcz0iZmlsZURlc2NyaXB0aW9uIHNtYWxsIj48c3BhbiBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOjI6ZmlsZURlc2NOb25FbXB0eSI+U3VtbWFyeSBkYXRhIGZvciBFdXJvcGVhbiBjb2hvcnQ8L3NwYW4+PC9kaXY+CiAgICAgICAgPC9kaXY+PC9kaXY+PC90ZD48dGQgcm9sZT0iZ3JpZGNlbGwiIHN0eWxlPSJ3aWR0aDo0MCU7IiBjbGFzcz0iY29sLWZpbGUtYWN0aW9uIGJ1dHRvbi1ibG9jayB0ZXh0LXJpZ2h0Ij48ZGl2IHJvbGU9Imdyb3VwIiBjbGFzcz0iYnRuLWdyb3VwIiBhcmlhLWxhYmVsPSJGaWxlIEFjdGlvbnMiPjxkaXYgY2xhc3M9ImJ0bi1ncm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJidG4tcHJldmlldyBidG4gYnRuLWxpbmsgYm9vdHN0cmFwLWJ1dHRvbi10b29sdGlwIiB0aXRsZT0iUmVhZCBUZXh0IiBocmVmPSIvZmlsZS54aHRtbD9wZXJzaXN0ZW50SWQ9ZG9pOjEwLjc5MTAvRFZOL05KN1hTTy9JTjQ1R1omYW1wO3ZlcnNpb249MS4wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWV5ZS1vcGVuIj48L3NwYW4+PHNwYW4gY2xhc3M9InNyLW9ubHkiPlByZXZpZXcgIkV1cm9wZWFuX0Nhc2VfQ29udHJvbF9SZXN1bHRzLnR4dCI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8YSB0eXBlPSJidXR0b24iIHN0eWxlPSJwYWRkaW5nOjZweCA4cHg7IiBjbGFzcz0iYnRuLWFjY2Vzcy1maWxlIGJ0biBidG4tbGluayBib290c3RyYXAtYnV0dG9uLXRvb2x0aXAgZHJvcGRvd24tdG9nZ2xlIiB0aXRsZT0iQWNjZXNzIEZpbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biIgYXJpYS1oYXNwb3B1cD0idHJ1ZSIgYXJpYS1leHBhbmRlZD0iZmFsc2UiIHRhYmluZGV4PSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PHNwYW4gY2xhc3M9InNyLW9ubHkiPkFjY2VzcyBGaWxlPC9zcGFuPjxzcGFuIGNsYXNzPSJjYXJldCI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUgcHVsbC1yaWdodCB0ZXh0LWxlZnQiPgogICAgCiAgICAKICAgIDxsaSBjbGFzcz0iZHJvcGRvd24taGVhZGVyIj5GaWxlIEFjY2VzcyA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1maWxlIj48L3NwYW4+PC9saT4KICAgIDxsaT48c3BhbiBjbGFzcz0iZHJvcGRvd24taXRlbS10ZXh0Ij4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZ2xvYmUgdGV4dC1zdWNjZXNzIj48L3NwYW4+PHNwYW4gY2xhc3M9InRleHQtc3VjY2VzcyI+IFB1YmxpYzwvc3Bhbj4KICAgICAgICA8L3NwYW4+PC9saT4KICAgICAgICAKICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duLWhlYWRlciI+RG93bmxvYWQgT3B0aW9ucyA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2xpPjxsaT48YSBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOjI6al9pZHQxMzkwIiBocmVmPSIjIiBjbGFzcz0idWktY29tbWFuZGxpbmsgdWktd2lkZ2V0IGJ0bi1kb3dubG9hZCIgb25jbGljaz0iUHJpbWVGYWNlcy5hYih7czomcXVvdDtkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6MjpqX2lkdDEzOTAmcXVvdDssZjomcXVvdDtkYXRhc2V0Rm9ybSZxdW90OyxwOiZxdW90O2RhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZToyOmpfaWR0MTM5MCZxdW90O30pO3JldHVybiBmYWxzZTsiPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIFBsYWluIFRleHQKICAgICAgICAgICAgPC9hPjwvbGk+CiAgICAKICAgIAogICAgCiAgICA8bGkgY2xhc3M9ImRyb3Bkb3duLWhlYWRlciI+RG93bmxvYWQgTWV0YWRhdGEgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9saT48bGkgY2xhc3M9ImRyb3Bkb3duLXN1Ym1lbnUgcHVsbC1sZWZ0Ij4KICAgICAgICAgICAgPGEgdGFiaW5kZXg9IjAiPkRhdGEgRmlsZSBDaXRhdGlvbjwvYT4KICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iIyIgb25jbGljaz0ibW9qYXJyYS5qc2ZjbGpzKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYXRhc2V0Rm9ybScpLHsnZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOjI6al9pZHQxNDI1JzonZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOjI6al9pZHQxNDI1J30sJycpO3JldHVybiBmYWxzZSIgY2xhc3M9ImJ0bi1kb3dubG9hZCI+RW5kTm90ZSBYTUw8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIiBvbmNsaWNrPSJtb2phcnJhLmpzZmNsanMoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RhdGFzZXRGb3JtJykseydkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6MjpqX2lkdDE0MjgnOidkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6MjpqX2lkdDE0MjgnfSwnJyk7cmV0dXJuIGZhbHNlIiBjbGFzcz0iYnRuLWRvd25sb2FkIj5SSVM8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIiBvbmNsaWNrPSJtb2phcnJhLmpzZmNsanMoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RhdGFzZXRGb3JtJykseydkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6MjpqX2lkdDE0MzEnOidkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6MjpqX2lkdDE0MzEnfSwnJyk7cmV0dXJuIGZhbHNlIiBjbGFzcz0iYnRuLWRvd25sb2FkIj5CaWJUZVg8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgPC91bD48L2xpPgogICAgCiAgICA8bGkgcm9sZT0icHJlc2VudGF0aW9uIiBjbGFzcz0iY2xlYXJmaXgiPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwvdWw+PC9kaXY+PC9kaXY+PC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L2Rpdj48aW5wdXQgaWQ9ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZV9zZWxlY3Rpb24iIG5hbWU9ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZV9zZWxlY3Rpb24iIHR5cGU9ImhpZGRlbiIgYXV0b2NvbXBsZXRlPSJvZmYiIGFyaWEtaGlkZGVuPSJ0cnVlIiB2YWx1ZT0iIiAvPjwvZGl2PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZV9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJEYXRhVGFibGUiLCJmaWxlc1RhYmxlIix7aWQ6ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZSIsc2VsZWN0aW9uTW9kZToiY2hlY2tib3giLHJvd1NlbGVjdE1vZGU6ImNoZWNrYm94Iixncm91cENvbHVtbkluZGV4ZXM6W10sZGlzYWJsZUNvbnRleHRNZW51SWZFbXB0eTpmYWxzZSxiZWhhdmlvcnM6e3Jvd1Vuc2VsZWN0OmZ1bmN0aW9uKGV4dCxldmVudCkge1ByaW1lRmFjZXMuYWIoe3M6ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZSIsZToicm93VW5zZWxlY3QiLGY6ImRhdGFzZXRGb3JtIixwOiJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGUiLHU6ImRhdGFzZXRGb3JtOnZhbGlkYXRlRmlsZXNPdXRjb21lIGRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZSIsb25jbzpmdW5jdGlvbih4aHIsc3RhdHVzLGFyZ3MsZGF0YSl7cmViaW5kQ29tbWFuZCgpO319LGV4dCk7fSxyb3dVbnNlbGVjdENoZWNrYm94OmZ1bmN0aW9uKGV4dCxldmVudCkge1ByaW1lRmFjZXMuYWIoe3M6ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZSIsZToicm93VW5zZWxlY3RDaGVja2JveCIsZjoiZGF0YXNldEZvcm0iLHA6ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZSIsdToiZGF0YXNldEZvcm06dmFsaWRhdGVGaWxlc091dGNvbWUgZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlIixvbmNvOmZ1bmN0aW9uKHhocixzdGF0dXMsYXJncyxkYXRhKXtyZWJpbmRDb21tYW5kKCk7fX0sZXh0KTt9LHJvd0RibHNlbGVjdDpmdW5jdGlvbihleHQsZXZlbnQpIHtQcmltZUZhY2VzLmFiKHtzOiJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGUiLGU6InJvd0RibHNlbGVjdCIsZjoiZGF0YXNldEZvcm0iLHA6ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZSIsdToiZGF0YXNldEZvcm06dmFsaWRhdGVGaWxlc091dGNvbWUgZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlIixvbmNvOmZ1bmN0aW9uKHhocixzdGF0dXMsYXJncyxkYXRhKXtyZWJpbmRDb21tYW5kKCk7fX0sZXh0KTt9LHBhZ2U6ZnVuY3Rpb24oZXh0LGV2ZW50KSB7UHJpbWVGYWNlcy5hYih7czoiZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlIixlOiJwYWdlIixmOiJkYXRhc2V0Rm9ybSIscDoiZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlIix1OiJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGUiLG9uY286ZnVuY3Rpb24oeGhyLHN0YXR1cyxhcmdzLGRhdGEpe3JlZnJlc2hQYWdpbmF0b3IoKSxyZWJpbmRDb21tYW5kKCk7fX0sZXh0KTt9LHJvd1NlbGVjdDpmdW5jdGlvbihleHQsZXZlbnQpIHtQcmltZUZhY2VzLmFiKHtzOiJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGUiLGU6InJvd1NlbGVjdCIsZjoiZGF0YXNldEZvcm0iLHA6ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZSIsdToiZGF0YXNldEZvcm06dmFsaWRhdGVGaWxlc091dGNvbWUgZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlIixvbmNvOmZ1bmN0aW9uKHhocixzdGF0dXMsYXJncyxkYXRhKXtyZWJpbmRDb21tYW5kKCk7fX0sZXh0KTt9LHRvZ2dsZVNlbGVjdDpmdW5jdGlvbihleHQsZXZlbnQpIHtQcmltZUZhY2VzLmFiKHtzOiJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGUiLGU6InRvZ2dsZVNlbGVjdCIsZjoiZGF0YXNldEZvcm0iLHA6ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZSIsdToiZGF0YXNldEZvcm06dmFsaWRhdGVGaWxlc091dGNvbWUgZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlIixvbmNvOmZ1bmN0aW9uKHhocixzdGF0dXMsYXJncyxkYXRhKXtyZWJpbmRDb21tYW5kKCk7fX0sZXh0KTt9LHJvd1NlbGVjdENoZWNrYm94OmZ1bmN0aW9uKGV4dCxldmVudCkge1ByaW1lRmFjZXMuYWIoe3M6ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZSIsZToicm93U2VsZWN0Q2hlY2tib3giLGY6ImRhdGFzZXRGb3JtIixwOiJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGUiLHU6ImRhdGFzZXRGb3JtOnZhbGlkYXRlRmlsZXNPdXRjb21lIGRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZSIsb25jbzpmdW5jdGlvbih4aHIsc3RhdHVzLGFyZ3MsZGF0YSl7cmViaW5kQ29tbWFuZCgpO319LGV4dCk7fX19KTt9KTs8L3NjcmlwdD48L2Rpdj48ZGl2IGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3Om1ldGFkYXRhTWFwVGFiIiBjbGFzcz0idWktdGFicy1wYW5lbCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYm90dG9tIHVpLWhlbHBlci1oaWRkZW4iIHJvbGU9InRhYnBhbmVsIiBhcmlhLWhpZGRlbj0idHJ1ZSIgZGF0YS1pbmRleD0iMSI+PGRpdiBjbGFzcz0iYnV0dG9uLWJsb2NrIHRhYi1oZWFkZXIgbWFyZ2luLWJvdHRvbSB0ZXh0LXJpZ2h0Ij48ZGl2IGNsYXNzPSJidG4tZ3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IGJ0bi1leHBvcnQgZHJvcGRvd24tdG9nZ2xlIiB0eXBlPSJidXR0b24iIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZXhwb3J0Ij48L3NwYW4+IEV4cG9ydCBNZXRhZGF0YSA8c3BhbiBjbGFzcz0iY2FyZXQiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51IHB1bGwtcmlnaHQgdGV4dC1sZWZ0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZGF0YXZlcnNlLmhhcnZhcmQuZWR1L2FwaS9kYXRhc2V0cy9leHBvcnQ7anNlc3Npb25pZD1hMmVkMWRhNzI0MDc3NDhlYmM0NzdhYmFjNDZhP2V4cG9ydGVyPWRjdGVybXMmYW1wO3BlcnNpc3RlbnRJZD1kb2klM0ExMC43OTEwL0RWTi9OSjdYU08iIHRhcmdldD0iX2JsYW5rIj5EdWJsaW4gQ29yZTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZGF0YXZlcnNlLmhhcnZhcmQuZWR1L2FwaS9kYXRhc2V0cy9leHBvcnQ7anNlc3Npb25pZD1hMmVkMWRhNzI0MDc3NDhlYmM0NzdhYmFjNDZhP2V4cG9ydGVyPWRkaSZhbXA7cGVyc2lzdGVudElkPWRvaSUzQTEwLjc5MTAvRFZOL05KN1hTTyIgdGFyZ2V0PSJfYmxhbmsiPkRESTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZGF0YXZlcnNlLmhhcnZhcmQuZWR1L2FwaS9kYXRhc2V0cy9leHBvcnQ7anNlc3Npb25pZD1hMmVkMWRhNzI0MDc3NDhlYmM0NzdhYmFjNDZhP2V4cG9ydGVyPURhdGFjaXRlJmFtcDtwZXJzaXN0ZW50SWQ9ZG9pJTNBMTAuNzkxMC9EVk4vTko3WFNPIiB0YXJnZXQ9Il9ibGFuayI+RGF0YUNpdGU8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2RhdGF2ZXJzZS5oYXJ2YXJkLmVkdS9hcGkvZGF0YXNldHMvZXhwb3J0O2pzZXNzaW9uaWQ9YTJlZDFkYTcyNDA3NzQ4ZWJjNDc3YWJhYzQ2YT9leHBvcnRlcj1odG1sJmFtcDtwZXJzaXN0ZW50SWQ9ZG9pJTNBMTAuNzkxMC9EVk4vTko3WFNPIiB0YXJnZXQ9Il9ibGFuayI+RERJIEhUTUwgQ29kZWJvb2s8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2RhdGF2ZXJzZS5oYXJ2YXJkLmVkdS9hcGkvZGF0YXNldHMvZXhwb3J0O2pzZXNzaW9uaWQ9YTJlZDFkYTcyNDA3NzQ4ZWJjNDc3YWJhYzQ2YT9leHBvcnRlcj1kYXRhdmVyc2VfanNvbiZhbXA7cGVyc2lzdGVudElkPWRvaSUzQTEwLjc5MTAvRFZOL05KN1hTTyIgdGFyZ2V0PSJfYmxhbmsiPkpTT048L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2RhdGF2ZXJzZS5oYXJ2YXJkLmVkdS9hcGkvZGF0YXNldHMvZXhwb3J0O2pzZXNzaW9uaWQ9YTJlZDFkYTcyNDA3NzQ4ZWJjNDc3YWJhYzQ2YT9leHBvcnRlcj1PQUlfT1JFJmFtcDtwZXJzaXN0ZW50SWQ9ZG9pJTNBMTAuNzkxMC9EVk4vTko3WFNPIiB0YXJnZXQ9Il9ibGFuayI+T0FJX09SRTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZGF0YXZlcnNlLmhhcnZhcmQuZWR1L2FwaS9kYXRhc2V0cy9leHBvcnQ7anNlc3Npb25pZD1hMmVkMWRhNzI0MDc3NDhlYmM0NzdhYmFjNDZhP2V4cG9ydGVyPW9haV9kYXRhY2l0ZSZhbXA7cGVyc2lzdGVudElkPWRvaSUzQTEwLjc5MTAvRFZOL05KN1hTTyIgdGFyZ2V0PSJfYmxhbmsiPk9wZW5BSVJFPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9kYXRhdmVyc2UuaGFydmFyZC5lZHUvYXBpL2RhdGFzZXRzL2V4cG9ydDtqc2Vzc2lvbmlkPWEyZWQxZGE3MjQwNzc0OGViYzQ3N2FiYWM0NmE/ZXhwb3J0ZXI9c2NoZW1hLm9yZyZhbXA7cGVyc2lzdGVudElkPWRvaSUzQTEwLjc5MTAvRFZOL05KN1hTTyIgdGFyZ2V0PSJfYmxhbmsiPlNjaGVtYS5vcmcgSlNPTi1MRDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+PC9kaXY+PC9kaXY+PGRpdiBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpqX2lkdDE1NDAiPjwvZGl2PjxkaXYgY2xhc3M9InBhbmVsLWdyb3VwIj4KICAgICAgICA8cD4KICAgICAgICA8L3A+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhbmVsIHBhbmVsLWRlZmF1bHQiPgogICAgICAgICAgICAgICAgPGRpdiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjcGFuZWxDb2xsYXBzZTAiIGNsYXNzPSJwYW5lbC1oZWFkaW5nIHRleHQtaW5mbyI+CiAgICAgICAgICAgICAgICAgICAgQ2l0YXRpb24gTWV0YWRhdGEgwqA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1jaGV2cm9uLXVwIj48L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9InBhbmVsQ29sbGFwc2UwIiBjbGFzcz0iY29sbGFwc2UgaW4iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhbmVsLWJvZHkgbWV0YWRhdGEtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJtZXRhZGF0YSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBpZD0ibWV0YWRhdGFfcGVyc2lzdGVudElkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT0icm93Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZXJzaXN0ZW50IElkZW50aWZpZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1xdWVzdGlvbi1zaWduIHRvb2x0aXAtaWNvbiIgZGF0YS10b2dnbGU9InRvb2x0aXAiIGRhdGEtcGxhY2VtZW50PSJhdXRvIHJpZ2h0IiBkYXRhLW9yaWdpbmFsLXRpdGxlPSJUaGUgRGF0YXNldCdzIHVuaXF1ZSBwZXJzaXN0ZW50IGlkZW50aWZpZXIsIGVpdGhlciBhIERPSSBvciBIYW5kbGUiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+ZG9pOjEwLjc5MTAvRFZOL05KN1hTTzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+PHRyIGlkPSJtZXRhZGF0YV9wdWJsaWNhdGlvbkRhdGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPSJyb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIERhdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1xdWVzdGlvbi1zaWduIHRvb2x0aXAtaWNvbiIgZGF0YS10b2dnbGU9InRvb2x0aXAiIGRhdGEtcGxhY2VtZW50PSJhdXRvIHJpZ2h0IiBkYXRhLW9yaWdpbmFsLXRpdGxlPSJUaGUgcHVibGljYXRpb24gZGF0ZSBvZiBhIERhdGFzZXQuIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjIwMTctMDktMzA8L3RkPjwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBpZD0ibWV0YWRhdGFfdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPSJyb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tcXVlc3Rpb24tc2lnbiB0b29sdGlwLWljb24iIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0iYXV0byByaWdodCIgZGF0YS1vcmlnaW5hbC10aXRsZT0iVGhlIG1haW4gdGl0bGUgb2YgdGhlIERhdGFzZXQiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+PHRkPlN1bW1hcnkgZGF0YSBhbmt5bG9zaW5nIHNwb25keWxpdGlzIEdXQVM8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgaWQ9Im1ldGFkYXRhX2F1dGhvciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9InJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXV0aG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tcXVlc3Rpb24tc2lnbiB0b29sdGlwLWljb24iIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0iYXV0byByaWdodCIgZGF0YS1vcmlnaW5hbC10aXRsZT0iVGhlIGVudGl0eSwgZS5nLiBhIHBlcnNvbiBvciBvcmdhbml6YXRpb24sIHRoYXQgY3JlYXRlZCB0aGUgRGF0YXNldCI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD48dGQ+SW50ZXJuYXRpb25hbCBHZW5ldGljcyBvZiBBbmt5bG9zaW5nIFNwb25keWxpdGlzIENvbnNvcnRpdW0gKElHQVMpPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGlkPSJtZXRhZGF0YV9kYXRhc2V0Q29udGFjdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9InJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9pbnQgb2YgQ29udGFjdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXF1ZXN0aW9uLXNpZ24gdG9vbHRpcC1pY29uIiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9ImF1dG8gcmlnaHQiIGRhdGEtb3JpZ2luYWwtdGl0bGU9IlRoZSBlbnRpdHksIGUuZy4gYSBwZXJzb24gb3Igb3JnYW5pemF0aW9uLCB0aGF0IHVzZXJzIG9mIHRoZSBEYXRhc2V0IGNhbiBjb250YWN0IHdpdGggcXVlc3Rpb25zIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPjx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJoZWxwLWJsb2NrIj5Vc2UgZW1haWwgYnV0dG9uIGFib3ZlIHRvIGNvbnRhY3QuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+TGksIFpoaXhpdSAoUVVUKSA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgaWQ9Im1ldGFkYXRhX2RzRGVzY3JpcHRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPSJyb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tcXVlc3Rpb24tc2lnbiB0b29sdGlwLWljb24iIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0iYXV0byByaWdodCIgZGF0YS1vcmlnaW5hbC10aXRsZT0iQSBzdW1tYXJ5IGRlc2NyaWJpbmcgdGhlIHB1cnBvc2UsIG5hdHVyZSwgYW5kIHNjb3BlIG9mIHRoZSBEYXRhc2V0Ij48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPjx0ZD5TdW1tYXJ5IG9mIGFzc29jaWF0aW9uIHRlc3RzIGZvciBOYXR1cmUgR2VuZXRpY3MgcHVibGljYXRpb24gIklkZW50aWZpY2F0aW9uIG9mIG11bHRpcGxlIHJpc2sgdmFyaWFudHMgZm9yIGFua3lsb3Npbmcgc3BvbmR5bGl0aXMgdGhyb3VnaCBoaWdoLWRlbnNpdHkgZ2Vub3R5cGluZyBvZiBpbW11bmUtcmVsYXRlZCBsb2NpIi48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgaWQ9Im1ldGFkYXRhX3N1YmplY3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPSJyb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1YmplY3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1xdWVzdGlvbi1zaWduIHRvb2x0aXAtaWNvbiIgZGF0YS10b2dnbGU9InRvb2x0aXAiIGRhdGEtcGxhY2VtZW50PSJhdXRvIHJpZ2h0IiBkYXRhLW9yaWdpbmFsLXRpdGxlPSJUaGUgYXJlYSBvZiBzdHVkeSByZWxldmFudCB0byB0aGUgRGF0YXNldCI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD48dGQ+TWVkaWNpbmUsIEhlYWx0aCBhbmQgTGlmZSBTY2llbmNlczwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBpZD0ibWV0YWRhdGFfa2V5d29yZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9InJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2V5d29yZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXF1ZXN0aW9uLXNpZ24gdG9vbHRpcC1pY29uIiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9ImF1dG8gcmlnaHQiIGRhdGEtb3JpZ2luYWwtdGl0bGU9IkEga2V5IHRlcm0gdGhhdCBkZXNjcmliZXMgYW4gaW1wb3J0YW50IGFzcGVjdCBvZiB0aGUgRGF0YXNldCBhbmQgaW5mb3JtYXRpb24gYWJvdXQgYW55IGNvbnRyb2xsZWQgdm9jYWJ1bGFyeSB1c2VkIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPjx0ZD5HZW5vbWUtV2lkZSBBc3NvY2lhdGlvbiBTdHVkaWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+QW5reWxvc2luZyBzcG9uZHlsaXRpczwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBpZD0ibWV0YWRhdGFfcHVibGljYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPSJyb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0ZWQgUHVibGljYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1xdWVzdGlvbi1zaWduIHRvb2x0aXAtaWNvbiIgZGF0YS10b2dnbGU9InRvb2x0aXAiIGRhdGEtcGxhY2VtZW50PSJhdXRvIHJpZ2h0IiBkYXRhLW9yaWdpbmFsLXRpdGxlPSJUaGUgYXJ0aWNsZSBvciByZXBvcnQgdGhhdCB1c2VzIHRoZSBkYXRhIGluIHRoZSBEYXRhc2V0LiBUaGUgZnVsbCBsaXN0IG9mIHJlbGF0ZWQgcHVibGljYXRpb25zIHdpbGwgYmUgZGlzcGxheWVkIG9uIHRoZSBtZXRhZGF0YSB0YWIiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+PHRkPjEwLjEwMzgvbmcuMjY2NyBkb2k6IDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBpZD0ibWV0YWRhdGFfbm90ZXNUZXh0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT0icm93Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXF1ZXN0aW9uLXNpZ24gdG9vbHRpcC1pY29uIiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9ImF1dG8gcmlnaHQiIGRhdGEtb3JpZ2luYWwtdGl0bGU9IkFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIERhdGFzZXQiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+PHRkPkV1cm9wZWFuX0Nhc2VfQ29udHJvbF9SZXN1bHRzLnR4dDogc3VtbWFyeSBkYXRhIGZvciBFdXJvcGVhbiBjb2hvcnQgQXNpYW5fQ2FzZV9Db250cm9sX1Jlc3VsdHMudHh0OiBzdW1tYXJ5IGRhdGEgZm9yIEFzaWFuIGNvaG9ydCBFdXJvcGVhbl9Bc2lhbl9DYXNlX0NvbnRyb2xfUmVzdWx0cy50eHQ6IHN1bW1hcnkgZGF0YSBmb3IgY29tYmluZWQgY29ob3J0PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGlkPSJtZXRhZGF0YV9kZXBvc2l0b3IiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPSJyb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcG9zaXRvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXF1ZXN0aW9uLXNpZ24gdG9vbHRpcC1pY29uIiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9ImF1dG8gcmlnaHQiIGRhdGEtb3JpZ2luYWwtdGl0bGU9IlRoZSBlbnRpdHksIHN1Y2ggYXMgYSBwZXJzb24gb3Igb3JnYW5pemF0aW9uLCB0aGF0IGRlcG9zaXRlZCB0aGUgRGF0YXNldCBpbiB0aGUgcmVwb3NpdG9yeSI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD48dGQ+TGksIFpoaXhpdTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBpZD0ibWV0YWRhdGFfZGF0ZU9mRGVwb3NpdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9InJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwb3NpdCBEYXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tcXVlc3Rpb24tc2lnbiB0b29sdGlwLWljb24iIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0iYXV0byByaWdodCIgZGF0YS1vcmlnaW5hbC10aXRsZT0iVGhlIGRhdGUgd2hlbiB0aGUgRGF0YXNldCB3YXMgZGVwb3NpdGVkIGludG8gdGhlIHJlcG9zaXRvcnkiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+PHRkPjIwMTctMDktMzA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj48L2Rpdj4KIDxzY3JpcHQ+CiAgICAvLzwhW0NEQVRBWwogICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CiAgICAgIC8vVGhlIHNlbGVjdDIgd2lkZ2V0IHVzZWQgaW4gZXh0ZXJuYWwgdm9jYWIgc2NyaXB0cyBoYXMgdHJvdWJsZSBkZXRlcm1pbmluZyB0aGUgd2lkdGggb2YgYW4gaW5wdXQgZmllbGQgaWYgaXQgaXMgaW5pdGlhbGx5IGhpZGRlbgogICAgICAvL1N0YXJ0aW5nIHdpdGggdGhlIG1ldGFkYXRhYmxvY2tzIGRpc3BsYXllZCBhbmQgY29sbGFwc2luZyB0aGVtIGhlcmUgaXMgYSB3b3JrLWFyb3VuZCB0byBmaXggdGhhdC4KICAgICAgaWYoZmFsc2UpIHsKICAgICAgICBmb3IobGV0IGk9MTtpPCAxO2krKykgewogICAgICAgICAgJCgnI3BhbmVsQ29sbGFwc2UnK2kpLmNvbGxhcHNlKCdoaWRlJyk7CiAgICAgICAgfQogICAgICB9CiAgICB9KTsKICAgIC8vXV0+CiAgICA8L3NjcmlwdD48L2Rpdj48ZGl2IGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OnRlcm1zVGFiIiBjbGFzcz0idWktdGFicy1wYW5lbCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYm90dG9tIHVpLWhlbHBlci1oaWRkZW4iIHJvbGU9InRhYnBhbmVsIiBhcmlhLWhpZGRlbj0idHJ1ZSIgZGF0YS1pbmRleD0iMiI+CiAgICA8ZGl2IGNsYXNzPSJwYW5lbC1ncm91cCI+CiAgICAgICA8ZGl2IGNsYXNzPSJwYW5lbCBwYW5lbC1kZWZhdWx0Ij4KICAgICAgICAgICA8ZGl2IGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9IiNwYW5lbENvbGxhcHNlVE9VIiBjbGFzcz0icGFuZWwtaGVhZGluZyB0ZXh0LWluZm8iPgogICAgICAgICAgICAgICBEYXRhc2V0IFRlcm1zIMKgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tY2hldnJvbi11cCI+PC9zcGFuPgogICAgICAgICAgIDwvZGl2PgogICAgICAgICAgIDxkaXYgaWQ9InBhbmVsQ29sbGFwc2VUT1UiIGNsYXNzPSJjb2xsYXBzZSBpbiI+PGRpdiBpZD0iZGF0YXNldEZvcm06dGFiVmlldzp0b3VGcmFnbWVudCI+CiAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYW5lbC1ib2R5Ij4KICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iZGF0YXNldEZvcm06dGFiVmlldzptZXRhZGF0YV9UZXJtcyIgY2xhc3M9ImNvbC1zbS0zIGNvbnRyb2wtbGFiZWwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGljZW5zZS9EYXRhIFVzZSBBZ3JlZW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJoZWxwLWJsb2NrIj5PdXIgPGEgaHJlZj0iaHR0cHM6Ly9kYXRhdmVyc2Uub3JnL2Jlc3QtcHJhY3RpY2VzL2RhdGF2ZXJzZS1jb21tdW5pdHktbm9ybXMiIHRpdGxlPSJEYXRhdmVyc2UgQ29tbXVuaXR5IE5vcm1zIC0gRGF0YXZlcnNlLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPkNvbW11bml0eSBOb3JtczwvYT4gYXMgd2VsbCBhcyBnb29kIHNjaWVudGlmaWMgcHJhY3RpY2VzIGV4cGVjdCB0aGF0IHByb3BlciBjcmVkaXQgaXMgZ2l2ZW4gdmlhIGNpdGF0aW9uLiBQbGVhc2UgdXNlIHRoZSBkYXRhIGNpdGF0aW9uIHNob3duIG9uIHRoZSBkYXRhc2V0IHBhZ2UuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9saWNlbnNlYnV0dG9ucy5uZXQvcC96ZXJvLzEuMC84OHgzMS5wbmciIHRpdGxlPSJDcmVhdGl2ZSBDb21tb25zIENDMCAxLjAgVW5pdmVyc2FsIFB1YmxpYyBEb21haW4gRGVkaWNhdGlvbi4iIHN0eWxlPSJkaXNwbGF5Om5vbmUiIG9ubG9hZD0idGhpcy5zdHlsZS5kaXNwbGF5PSdpbmxpbmUnIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAiIHRpdGxlPSJDcmVhdGl2ZSBDb21tb25zIENDMCAxLjAgVW5pdmVyc2FsIFB1YmxpYyBEb21haW4gRGVkaWNhdGlvbi4iIHRhcmdldD0iX2JsYW5rIj5DQzAgMS4wPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4gCiAgICA8L2Rpdj48L2Rpdj48ZGl2IGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OnZlcnNpb25zVGFiIiBjbGFzcz0idWktdGFicy1wYW5lbCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYm90dG9tIHVpLWhlbHBlci1oaWRkZW4iIHJvbGU9InRhYnBhbmVsIiBhcmlhLWhpZGRlbj0idHJ1ZSIgZGF0YS1pbmRleD0iMyI+CgogICA8c2NyaXB0PgogICAgICAgLy88IVtDREFUQVsKICAgICAgIC8vIFZlcnNpb24gdGFiOiBSZXRyaWV2ZSBkYXRhIGFmdGVyIHBhZ2UgbG9hZAogICAgICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgcHJlbG9hZF9tZXNzYWdlID0gIihMb2FkaW5nIHZlcnNpb25zLi4uKSI7CiAgICAgICAgICAgICQoJyNkYXRhc2V0Rm9ybVxcOnRhYlZpZXdcXDp2ZXJzaW9uc1RhYmxlX2RhdGEgdHIudWktZGF0YXRhYmxlLWVtcHR5LW1lc3NhZ2UgdGQnKS50ZXh0KHByZWxvYWRfbWVzc2FnZSk7CiAgICAgICAgICAgIHBvc3RMb2FkVmVyc2lvblRhYkxpc3QoKTsKICAgICAgIH0pOwogICAgICAgLy9dXT4KICAgPC9zY3JpcHQ+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpqX2lkdDE4OTIiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+cG9zdExvYWRWZXJzaW9uVGFiTGlzdCA9IGZ1bmN0aW9uKCkge3JldHVybiBQcmltZUZhY2VzLmFiKHtzOiJkYXRhc2V0Rm9ybTp0YWJWaWV3OmpfaWR0MTg5MiIsZjoiZGF0YXNldEZvcm0iLHA6ImRhdGFzZXRGb3JtOnRhYlZpZXc6al9pZHQxODkyIix1OiJkYXRhc2V0Rm9ybTp0YWJWaWV3OnZlcnNpb25zVGFibGUiLHBhOmFyZ3VtZW50c1swXX0pO308L3NjcmlwdD4KICAgIDxkaXYgY2xhc3M9InRleHQtcmlnaHQgbWFyZ2luLWJvdHRvbSI+PGJ1dHRvbiBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpjb21wYXJlVmVyc2lvbnMiIG5hbWU9ImRhdGFzZXRGb3JtOnRhYlZpZXc6Y29tcGFyZVZlcnNpb25zIiBjbGFzcz0idWktYnV0dG9uIHVpLXdpZGdldCB1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwgdWktYnV0dG9uLXRleHQtb25seSIgb25jbGljaz0iUHJpbWVGYWNlcy5hYih7czomcXVvdDtkYXRhc2V0Rm9ybTp0YWJWaWV3OmNvbXBhcmVWZXJzaW9ucyZxdW90OyxmOiZxdW90O2RhdGFzZXRGb3JtJnF1b3Q7LHU6JnF1b3Q7ZGF0YXNldEZvcm0mcXVvdDssb25jbzpmdW5jdGlvbih4aHIsc3RhdHVzLGFyZ3MsZGF0YSl7UEYoJ2RldGFpbHNCbG9ja3MnKS5zaG93KCk7cG9zdF9kaWZmZXJlbmNlcygpOzt9fSk7cmV0dXJuIGZhbHNlOyIgc3R5bGU9ImRpc3BsYXk6bm9uZSIgdHlwZT0ic3VibWl0Ij48c3BhbiBjbGFzcz0idWktYnV0dG9uLXRleHQgdWktYyI+RGlyZWN0PC9zcGFuPjwvYnV0dG9uPjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOnRhYlZpZXc6Y29tcGFyZVZlcnNpb25zX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIkNvbW1hbmRCdXR0b24iLCJ3aWRnZXRfZGF0YXNldEZvcm1fdGFiVmlld19jb21wYXJlVmVyc2lvbnMiLHtpZDoiZGF0YXNldEZvcm06dGFiVmlldzpjb21wYXJlVmVyc2lvbnMifSk7fSk7PC9zY3JpcHQ+CiAgICA8L2Rpdj48ZGl2IGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OnZlcnNpb25zVGFibGUiIGNsYXNzPSJ1aS1kYXRhdGFibGUgdWktd2lkZ2V0Ij48ZGl2IGNsYXNzPSJ1aS1kYXRhdGFibGUtdGFibGV3cmFwcGVyIj48dGFibGUgcm9sZT0iZ3JpZCI+PHRoZWFkIGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OnZlcnNpb25zVGFibGVfaGVhZCI+PHRyIHJvbGU9InJvdyI+PHRoIGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OnZlcnNpb25zVGFibGU6al9pZHQxODk4IiBjbGFzcz0idWktc3RhdGUtZGVmYXVsdCBjb2wtc20tMSB0ZXh0LWNlbnRlciIgcm9sZT0iY29sdW1uaGVhZGVyIiBhcmlhLWxhYmVsPSJEYXRhc2V0IFZlcnNpb24iIHNjb3BlPSJjb2wiPjxzcGFuIGNsYXNzPSJ1aS1jb2x1bW4tdGl0bGUiPkRhdGFzZXQgVmVyc2lvbjwvc3Bhbj48L3RoPjx0aCBpZD0iZGF0YXNldEZvcm06dGFiVmlldzp2ZXJzaW9uc1RhYmxlOmpfaWR0MTkxMCIgY2xhc3M9InVpLXN0YXRlLWRlZmF1bHQiIHJvbGU9ImNvbHVtbmhlYWRlciIgYXJpYS1sYWJlbD0iU3VtbWFyeSIgc2NvcGU9ImNvbCI+PHNwYW4gY2xhc3M9InVpLWNvbHVtbi10aXRsZSI+U3VtbWFyeTwvc3Bhbj48L3RoPjx0aCBpZD0iZGF0YXNldEZvcm06dGFiVmlldzp2ZXJzaW9uc1RhYmxlOmpfaWR0MTk1MiIgY2xhc3M9InVpLXN0YXRlLWRlZmF1bHQgY29sLXNtLTIiIHJvbGU9ImNvbHVtbmhlYWRlciIgYXJpYS1sYWJlbD0iQ29udHJpYnV0b3JzIiBzY29wZT0iY29sIj48c3BhbiBjbGFzcz0idWktY29sdW1uLXRpdGxlIj5Db250cmlidXRvcnM8L3NwYW4+PC90aD48dGggaWQ9ImRhdGFzZXRGb3JtOnRhYlZpZXc6dmVyc2lvbnNUYWJsZTpqX2lkdDE5NTciIGNsYXNzPSJ1aS1zdGF0ZS1kZWZhdWx0IGNvbC1zbS0yIiByb2xlPSJjb2x1bW5oZWFkZXIiIGFyaWEtbGFiZWw9IlB1Ymxpc2hlZCBvbiIgc2NvcGU9ImNvbCI+PHNwYW4gY2xhc3M9InVpLWNvbHVtbi10aXRsZSI+UHVibGlzaGVkIG9uPC9zcGFuPjwvdGg+PC90cj48L3RoZWFkPjx0Ym9keSBpZD0iZGF0YXNldEZvcm06dGFiVmlldzp2ZXJzaW9uc1RhYmxlX2RhdGEiIGNsYXNzPSJ1aS1kYXRhdGFibGUtZGF0YSB1aS13aWRnZXQtY29udGVudCI+PHRyIGNsYXNzPSJ1aS13aWRnZXQtY29udGVudCB1aS1kYXRhdGFibGUtZW1wdHktbWVzc2FnZSI+PHRkIGNvbHNwYW49IjQiPk5vIHJlY29yZHMgZm91bmQuPC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L2Rpdj48L2Rpdj48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OnZlcnNpb25zVGFibGVfcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiRGF0YVRhYmxlIiwidmVyc2lvbnNUYWJsZSIse2lkOiJkYXRhc2V0Rm9ybTp0YWJWaWV3OnZlcnNpb25zVGFibGUiLGdyb3VwQ29sdW1uSW5kZXhlczpbXSxkaXNhYmxlQ29udGV4dE1lbnVJZkVtcHR5OmZhbHNlfSk7fSk7PC9zY3JpcHQ+PC9kaXY+PC9kaXY+PGlucHV0IGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3X2FjdGl2ZUluZGV4IiBuYW1lPSJkYXRhc2V0Rm9ybTp0YWJWaWV3X2FjdGl2ZUluZGV4IiB0eXBlPSJoaWRkZW4iIGF1dG9jb21wbGV0ZT0ib2ZmIiBhcmlhLWhpZGRlbj0idHJ1ZSIgdmFsdWU9IjAiIC8+PC9kaXY+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06dGFiVmlld19zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJUYWJWaWV3IiwiY29udGVudCIse2lkOiJkYXRhc2V0Rm9ybTp0YWJWaWV3IixlZmZlY3REdXJhdGlvbjoibm9ybWFsIixzY3JvbGxhYmxlOmZhbHNlLGJlaGF2aW9yczp7dGFiQ2hhbmdlOmZ1bmN0aW9uKGV4dCxldmVudCkge1ByaW1lRmFjZXMuYWIoe3M6ImRhdGFzZXRGb3JtOnRhYlZpZXciLGU6InRhYkNoYW5nZSIsZjoiZGF0YXNldEZvcm0iLHA6ImRhdGFzZXRGb3JtOnRhYlZpZXciLHU6ImRhdGFzZXRGb3JtOnRhYlZpZXcifSxleHQpO319fSk7fSk7PC9zY3JpcHQ+PC9kaXY+PGRpdiBpZD0iZGF0YXNldEZvcm06al9pZHQxOTc1IiBjbGFzcz0idWktYmxvY2t1aS1jb250ZW50IHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIHVpLWhlbHBlci1oaWRkZW4gdWktc2hhZG93Ij48L2Rpdj48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpqX2lkdDE5NzVfcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiQmxvY2tVSSIsImJsb2NrRGF0YXNldEZvcm0iLHtpZDoiZGF0YXNldEZvcm06al9pZHQxOTc1IixibG9jazoiZGF0YXNldEZvcm0ifSk7fSk7PC9zY3JpcHQ+PGRpdiBpZD0iZGF0YXNldEZvcm06ZmlsZUFscmVhZHlEZWxldGVkUHJldmlvdXMiIGNsYXNzPSJ1aS1kaWFsb2cgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwgdWktc2hhZG93IHVpLWhpZGRlbi1jb250YWluZXIgc21hbGxQb3BVcCI+PGRpdiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci10b3AiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpmaWxlQWxyZWFkeURlbGV0ZWRQcmV2aW91c190aXRsZSIgY2xhc3M9InVpLWRpYWxvZy10aXRsZSI+RWRpdCBGaWxlPC9zcGFuPjxhIGhyZWY9IiMiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXItaWNvbiB1aS1kaWFsb2ctdGl0bGViYXItY2xvc2UgdWktY29ybmVyLWFsbCIgYXJpYS1sYWJlbD0iQ2xvc2UiPjxzcGFuIGNsYXNzPSJ1aS1pY29uIHVpLWljb24tY2xvc2V0aGljayI+PC9zcGFuPjwvYT48L2Rpdj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctY29udGVudCB1aS13aWRnZXQtY29udGVudCIgaWQ9ImRhdGFzZXRGb3JtOmZpbGVBbHJlYWR5RGVsZXRlZFByZXZpb3VzX2NvbnRlbnQiPgogICAgICAgIDxwIGNsYXNzPSJ0ZXh0LWRhbmdlciI+PHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZXhjbGFtYXRpb24tc2lnbiI+PC9zcGFuPiBUaGlzIGZpbGUgaGFzIGFscmVhZHkgYmVlbiBkZWxldGVkIChvciByZXBsYWNlZCkgaW4gdGhlIGN1cnJlbnQgdmVyc2lvbi4gSXQgbWF5IG5vdCBiZSBlZGl0ZWQuPC9wPgogICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ibG9jayI+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tZGVmYXVsdCIgb25jbGljaz0iUEYoJ2ZpbGVBbHJlYWR5RGVsZXRlZFByZXZpb3VzJykuaGlkZSgpOyIgdHlwZT0iYnV0dG9uIj4KICAgICAgICAgICAgICAgIENsb3NlCiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgIDwvZGl2PjwvZGl2PjwvZGl2PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmZpbGVBbHJlYWR5RGVsZXRlZFByZXZpb3VzX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIkRpYWxvZyIsImZpbGVBbHJlYWR5RGVsZXRlZFByZXZpb3VzIix7aWQ6ImRhdGFzZXRGb3JtOmZpbGVBbHJlYWR5RGVsZXRlZFByZXZpb3VzIixtb2RhbDp0cnVlfSk7fSk7PC9zY3JpcHQ+PGRpdiBpZD0iZGF0YXNldEZvcm06YWNjZXNzUG9wdXAiIGNsYXNzPSJ1aS1kaWFsb2cgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwgdWktc2hhZG93IHVpLWhpZGRlbi1jb250YWluZXIiPjxkaXYgY2xhc3M9InVpLWRpYWxvZy10aXRsZWJhciB1aS13aWRnZXQtaGVhZGVyIHVpLWhlbHBlci1jbGVhcmZpeCB1aS1jb3JuZXItdG9wIj48c3BhbiBpZD0iZGF0YXNldEZvcm06YWNjZXNzUG9wdXBfdGl0bGUiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGUiPlJlc3RyaWN0IEFjY2Vzczwvc3Bhbj48YSBocmVmPSIjIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyLWljb24gdWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIHVpLWNvcm5lci1hbGwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNsb3NldGhpY2siPjwvc3Bhbj48L2E+PC9kaXY+PGRpdiBjbGFzcz0idWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiIGlkPSJkYXRhc2V0Rm9ybTphY2Nlc3NQb3B1cF9jb250ZW50Ij48c3BhbiBpZD0iZGF0YXNldEZvcm06al9pZHQxOTc3Ij48L3NwYW4+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmZvY3VzKG51bGwsICdkYXRhc2V0Rm9ybTphY2Nlc3NQb3B1cCcpO30pOzwvc2NyaXB0PgogICAgICAgIDxwIGNsYXNzPSJoZWxwLWJsb2NrIj48c3BhbiBjbGFzcz0idGV4dC1tdXRlZCI+UmVzdHJpY3RpbmcgbGltaXRzIGFjY2VzcyB0byBwdWJsaXNoZWQgZmlsZXMuIFBlb3BsZSB3aG8gd2FudCB0byB1c2UgdGhlIHJlc3RyaWN0ZWQgZmlsZXMgY2FuIHJlcXVlc3QgYWNjZXNzIGJ5IGRlZmF1bHQuICA8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OmJvbGQiPklmIHlvdSBkaXNhYmxlIHJlcXVlc3QgYWNjZXNzLCB5b3UgbXVzdCBhZGQgaW5mb3JtYXRpb24gYWJvdXQgYWNjZXNzIHRvIHRoZSBUZXJtcyBvZiBBY2Nlc3MgZmllbGQuPC9zcGFuPgogICAgICAgICAgICA8cD48L3A+PHNwYW4gY2xhc3M9InRleHQtbXV0ZWQiPkxlYXJuIGFib3V0IHJlc3RyaWN0aW5nIGZpbGVzIGFuZCBkYXRhc2V0IGFjY2VzcyBpbiB0aGUgPGEgaHJlZj0iaHR0cHM6Ly9ndWlkZXMuZGF0YXZlcnNlLm9yZy9lbi81LjEyL3VzZXIvZGF0YXNldC1tYW5hZ2VtZW50Lmh0bWwjcmVzdHJpY3RlZC1maWxlcy10ZXJtcy1vZi1hY2Nlc3MiIHRpdGxlPSJEYXRhdmVyc2UgVXNlciBHdWlkZSIgdGFyZ2V0PSJfYmxhbmsiPlVzZXIgR3VpZGU8L2E+Ljwvc3Bhbj4KICAgICAgICA8L3A+PGRpdiBpZD0iZGF0YXNldEZvcm06al9pZHQxOTg2Ij48aW5wdXQgaWQ9ImRhdGFzZXRGb3JtOnRlcm1zb2ZBY2Nlc3NIaWRkZW4iIHR5cGU9ImhpZGRlbiIgbmFtZT0iZGF0YXNldEZvcm06dGVybXNvZkFjY2Vzc0hpZGRlbiIgLz48aW5wdXQgaWQ9ImRhdGFzZXRGb3JtOmZpbGVBY2Nlc3NSZXF1ZXN0SGlkZGVuIiB0eXBlPSJoaWRkZW4iIG5hbWU9ImRhdGFzZXRGb3JtOmZpbGVBY2Nlc3NSZXF1ZXN0SGlkZGVuIiB2YWx1ZT0iZmFsc2UiIC8+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ob3Jpem9udGFsIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJkYXRhc2V0Rm9ybTpyZXF1ZXN0QWNjZXNzMiIgY2xhc3M9ImNvbC1zbS0zIGNvbnRyb2wtbGFiZWwiPgogICAgICAgICAgICAgICAgICAgIFJlcXVlc3QgQWNjZXNzCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tcXVlc3Rpb24tc2lnbiB0b29sdGlwLWljb24iIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0iYXV0byByaWdodCIgZGF0YS1vcmlnaW5hbC10aXRsZT0iSWYgY2hlY2tlZCwgdXNlcnMgY2FuIHJlcXVlc3QgYWNjZXNzIHRvIHRoZSByZXN0cmljdGVkIGZpbGVzIGluIHRoaXMgZGF0YXNldC4iPjwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tOSI+PGRpdiBpZD0iZGF0YXNldEZvcm06cmVxdWVzdEFjY2VzczIiIGNsYXNzPSJ1aS1zZWxlY3Rib29sZWFuY2hlY2tib3ggdWktY2hrYm94IHVpLXdpZGdldCI+PGRpdiBjbGFzcz0idWktaGVscGVyLWhpZGRlbi1hY2Nlc3NpYmxlIj48aW5wdXQgaWQ9ImRhdGFzZXRGb3JtOnJlcXVlc3RBY2Nlc3MyX2lucHV0IiBuYW1lPSJkYXRhc2V0Rm9ybTpyZXF1ZXN0QWNjZXNzMl9pbnB1dCIgdHlwZT0iY2hlY2tib3giIGF1dG9jb21wbGV0ZT0ib2ZmIiBhcmlhLWxhYmVsPSJFbmFibGUgYWNjZXNzIHJlcXVlc3QiIGFyaWEtY2hlY2tlZD0iZmFsc2UiIG9uY2hhbmdlPSJQcmltZUZhY2VzLmFiKHtzOiZxdW90O2RhdGFzZXRGb3JtOnJlcXVlc3RBY2Nlc3MyJnF1b3Q7LGU6JnF1b3Q7Y2hhbmdlJnF1b3Q7LGY6JnF1b3Q7ZGF0YXNldEZvcm0mcXVvdDsscDomcXVvdDtkYXRhc2V0Rm9ybTpyZXF1ZXN0QWNjZXNzMiZxdW90Oyx1OiZxdW90O2RhdGFzZXRGb3JtOnJlc3RyaWN0RmlsZUJ1dHRvbiZxdW90O30pOyIgLz48L2Rpdj48ZGl2IGNsYXNzPSJ1aS1jaGtib3gtYm94IHVpLXdpZGdldCB1aS1jb3JuZXItYWxsIHVpLXN0YXRlLWRlZmF1bHQiPjxzcGFuIGNsYXNzPSJ1aS1jaGtib3gtaWNvbiB1aS1pY29uIHVpLWljb24tYmxhbmsgdWktYyI+PC9zcGFuPjwvZGl2PjxzcGFuIGNsYXNzPSJ1aS1jaGtib3gtbGFiZWwiPkVuYWJsZSBhY2Nlc3MgcmVxdWVzdDwvc3Bhbj48L2Rpdj48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpyZXF1ZXN0QWNjZXNzMl9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJTZWxlY3RCb29sZWFuQ2hlY2tib3giLCJpbnB1dGZhciIse2lkOiJkYXRhc2V0Rm9ybTpyZXF1ZXN0QWNjZXNzMiJ9KTt9KTs8L3NjcmlwdD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj48ZGl2IGlkPSJkYXRhc2V0Rm9ybTpwb3B1cFdhcm5pbmciPjxkaXYgYXJpYS1saXZlPSJwb2xpdGUiIGNsYXNzPSJ1aS1tZXNzYWdlIHVpLW1lc3NhZ2UtZXJyb3IgdWktd2lkZ2V0IHVpLWNvcm5lci1hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idWktbWVzc2FnZS1lcnJvci1kZXRhaWwiPllvdSBtdXN0IGVuYWJsZSByZXF1ZXN0IGFjY2VzcyBvciBhZGQgdGVybXMgb2YgYWNjZXNzIHRvIHJlc3RyaWN0IGZpbGUgYWNjZXNzLjwvc3Bhbj48L2Rpdj48L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJ0ZXJtc0FjY2Vzc0lucHV0IiBjbGFzcz0iY29sLXNtLTMgY29udHJvbC1sYWJlbCI+CiAgICAgICAgICAgICAgICAgICAgVGVybXMgb2YgQWNjZXNzIGZvciBSZXN0cmljdGVkIEZpbGVzCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tcXVlc3Rpb24tc2lnbiB0b29sdGlwLWljb24iIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0iYXV0byByaWdodCIgZGF0YS1vcmlnaW5hbC10aXRsZT0iSW5mb3JtYXRpb24gb24gaG93IGFuZCBpZiB1c2VycyBjYW4gYWNjZXNzIHJlc3RyaWN0ZWQgZmlsZXMgaW4gdGhpcyBEYXRhc2V0Ij48L3NwYW4+CiAgICAgICAgICAgICAgICA8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTkiPjx0ZXh0YXJlYSBpZD0iZGF0YXNldEZvcm06dGVybXNBY2Nlc3NJbnB1dCIgbmFtZT0iZGF0YXNldEZvcm06dGVybXNBY2Nlc3NJbnB1dCIgY2xhc3M9InVpLWlucHV0ZmllbGQgdWktaW5wdXR0ZXh0YXJlYSB1aS13aWRnZXQgdWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItYWxsIGZvcm0tY29udHJvbCIgY29scz0iMjAiIHJvd3M9IjUiIG1heGxlbmd0aD0iMjE0NzQ4MzY0NyIgb25rZXl1cD0iUHJpbWVGYWNlcy5hYih7czomcXVvdDtkYXRhc2V0Rm9ybTp0ZXJtc0FjY2Vzc0lucHV0JnF1b3Q7LGU6JnF1b3Q7a2V5dXAmcXVvdDssZjomcXVvdDtkYXRhc2V0Rm9ybSZxdW90OyxwOiZxdW90O2RhdGFzZXRGb3JtOnRlcm1zQWNjZXNzSW5wdXQmcXVvdDssdTomcXVvdDtkYXRhc2V0Rm9ybTpyZXN0cmljdEZpbGVCdXR0b24mcXVvdDt9KTsiPjwvdGV4dGFyZWE+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06dGVybXNBY2Nlc3NJbnB1dF9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJJbnB1dFRleHRhcmVhIiwiaW5wdXR0b2EiLHtpZDoiZGF0YXNldEZvcm06dGVybXNBY2Nlc3NJbnB1dCIsYXV0b1Jlc2l6ZTpmYWxzZSxiZWhhdmlvcnM6e319KTt9KTs8L3NjcmlwdD4gCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ibG9jayI+PGEgaWQ9ImRhdGFzZXRGb3JtOnJlc3RyaWN0RmlsZUJ1dHRvbiIgaHJlZj0iIyIgY2xhc3M9InVpLWNvbW1hbmRsaW5rIHVpLXdpZGdldCBidG4gYnRuLWRlZmF1bHQiIG9uY2xpY2s9InRlc3RUT0EoKTs7UHJpbWVGYWNlcy5hYih7czomcXVvdDtkYXRhc2V0Rm9ybTpyZXN0cmljdEZpbGVCdXR0b24mcXVvdDssZjomcXVvdDtkYXRhc2V0Rm9ybSZxdW90Oyx1OiZxdW90O2RhdGFzZXRGb3JtOnBvcHVwV2FybmluZyZxdW90O30pO3JldHVybiBmYWxzZTsiPlNhdmUgQ2hhbmdlczwvYT4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1saW5rIiBvbmNsaWNrPSJQRignYWNjZXNzUG9wdXAnKS5oaWRlKCk7UEYoJ2Jsb2NrRGF0YXNldEZvcm0nKS5oaWRlKCk7IiB0eXBlPSJidXR0b24iPgogICAgICAgICAgICAgICAgQ2FuY2VsCiAgICAgICAgICAgIDwvYnV0dG9uPiAKCiAgICAgICAgPC9kaXY+PC9kaXY+PC9kaXY+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06YWNjZXNzUG9wdXBfcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiRGlhbG9nIiwiYWNjZXNzUG9wdXAiLHtpZDoiZGF0YXNldEZvcm06YWNjZXNzUG9wdXAiLG1vZGFsOnRydWUsd2lkdGg6IjcwMHB4IixoZWlnaHQ6IjM1MHB4In0pO30pOzwvc2NyaXB0PjxkaXYgaWQ9ImRhdGFzZXRGb3JtOmZpbGVFbWJhcmdvUG9wdXAiIGNsYXNzPSJ1aS1kaWFsb2cgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwgdWktc2hhZG93IHVpLWhpZGRlbi1jb250YWluZXIgc21hbGxQb3BVcCI+PGRpdiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci10b3AiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpmaWxlRW1iYXJnb1BvcHVwX3RpdGxlIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlIj5FZGl0IEVtYmFyZ288L3NwYW4+PGEgaHJlZj0iIyIgY2xhc3M9InVpLWRpYWxvZy10aXRsZWJhci1pY29uIHVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSB1aS1jb3JuZXItYWxsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gY2xhc3M9InVpLWljb24gdWktaWNvbi1jbG9zZXRoaWNrIj48L3NwYW4+PC9hPjwvZGl2PjxkaXYgY2xhc3M9InVpLWRpYWxvZy1jb250ZW50IHVpLXdpZGdldC1jb250ZW50IiBpZD0iZGF0YXNldEZvcm06ZmlsZUVtYmFyZ29Qb3B1cF9jb250ZW50Ij48c3BhbiBpZD0iZGF0YXNldEZvcm06al9pZHQxOTk0Ij48L3NwYW4+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmZvY3VzKCdkYXRhc2V0Rm9ybTpmaWxlRW1iYXJnb0RhdGUnKTt9KTs8L3NjcmlwdD48cCBjbGFzcz0idGV4dC1kYW5nZXIgZW1iYXJnbyI+PHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZXhjbGFtYXRpb24tc2lnbiI+PC9zcGFuPlRoZSBzZWxlY3RlZCBmaWxlIG9yIGZpbGVzIGhhdmUgYWxyZWFkeSBiZWVuIHB1Ymxpc2hlZC4gQ29udGFjdCBhbiBhZG1pbmlzdHJhdG9yIHRvIGNoYW5nZSB0aGUgZW1iYXJnbyBkYXRlIG9yIHJlYXNvbiBvZiB0aGUgZmlsZSBvciBmaWxlcy48L3A+PHNwYW4gaWQ9ImRhdGFzZXRGb3JtOmVtYmFyZ29JbnB1dHMiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbWJhcmdvIj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVtYmFyZ28iPgogICAgICAgICAgICA8L2Rpdj48L3NwYW4+CiAgICAgICAgPGRpdiBjbGFzcz0iYnV0dG9uLWJsb2NrIj48YnV0dG9uIGlkPSJkYXRhc2V0Rm9ybTpmaWxlRW1iYXJnb1BvcHVwQ2FuY2VsQnV0dG9uIiBuYW1lPSJkYXRhc2V0Rm9ybTpmaWxlRW1iYXJnb1BvcHVwQ2FuY2VsQnV0dG9uIiBjbGFzcz0idWktYnV0dG9uIHVpLXdpZGdldCB1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwgdWktYnV0dG9uLXRleHQtb25seSBidG4gYnRuLWxpbmsiIG9uY2xpY2s9IlByaW1lRmFjZXMuYmNuKHRoaXMsZXZlbnQsW2Z1bmN0aW9uKGV2ZW50KXtQRignZmlsZUVtYmFyZ29Qb3B1cCcpLmhpZGUoKTsgICAgICAgICAgICAgICAgICAgICBQRignYmxvY2tEYXRhc2V0Rm9ybScpLmhpZGUoKTt9LGZ1bmN0aW9uKGV2ZW50KXtQcmltZUZhY2VzLmFiKHtzOiZxdW90O2RhdGFzZXRGb3JtOmZpbGVFbWJhcmdvUG9wdXBDYW5jZWxCdXR0b24mcXVvdDssZjomcXVvdDtkYXRhc2V0Rm9ybSZxdW90Oyx1OiZxdW90O2RhdGFzZXRGb3JtOmVtYmFyZ29JbnB1dHMmcXVvdDt9KTtyZXR1cm4gZmFsc2U7fV0pOyIgdHlwZT0ic3VibWl0Ij48c3BhbiBjbGFzcz0idWktYnV0dG9uLXRleHQgdWktYyI+Q2FuY2VsPC9zcGFuPjwvYnV0dG9uPjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmZpbGVFbWJhcmdvUG9wdXBDYW5jZWxCdXR0b25fcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiQ29tbWFuZEJ1dHRvbiIsIndpZGdldF9kYXRhc2V0Rm9ybV9maWxlRW1iYXJnb1BvcHVwQ2FuY2VsQnV0dG9uIix7aWQ6ImRhdGFzZXRGb3JtOmZpbGVFbWJhcmdvUG9wdXBDYW5jZWxCdXR0b24ifSk7fSk7PC9zY3JpcHQ+CiAgICAgICAgPC9kaXY+PC9kaXY+PC9kaXY+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06ZmlsZUVtYmFyZ29Qb3B1cF9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJEaWFsb2ciLCJmaWxlRW1iYXJnb1BvcHVwIix7aWQ6ImRhdGFzZXRGb3JtOmZpbGVFbWJhcmdvUG9wdXAiLHJlc2l6YWJsZTpmYWxzZSxtb2RhbDp0cnVlfSk7fSk7PC9zY3JpcHQ+PGRpdiBpZD0iZGF0YXNldEZvcm06ZGVsZXRlRmlsZUNvbmZpcm0iIGNsYXNzPSJ1aS1kaWFsb2cgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwgdWktc2hhZG93IHVpLWhpZGRlbi1jb250YWluZXIgc21hbGxQb3BVcCI+PGRpdiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci10b3AiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpkZWxldGVGaWxlQ29uZmlybV90aXRsZSIgY2xhc3M9InVpLWRpYWxvZy10aXRsZSI+RGVsZXRlIEZpbGVzPC9zcGFuPjxhIGhyZWY9IiMiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXItaWNvbiB1aS1kaWFsb2ctdGl0bGViYXItY2xvc2UgdWktY29ybmVyLWFsbCIgYXJpYS1sYWJlbD0iQ2xvc2UiPjxzcGFuIGNsYXNzPSJ1aS1pY29uIHVpLWljb24tY2xvc2V0aGljayI+PC9zcGFuPjwvYT48L2Rpdj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctY29udGVudCB1aS13aWRnZXQtY29udGVudCIgaWQ9ImRhdGFzZXRGb3JtOmRlbGV0ZUZpbGVDb25maXJtX2NvbnRlbnQiPgogICAgICAgIDxwIGNsYXNzPSJ0ZXh0LXdhcm5pbmciPjxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXdhcm5pbmctc2lnbiI+PC9zcGFuPiBUaGUgZmlsZSB3aWxsIGJlIGRlbGV0ZWQgYWZ0ZXIgeW91IGNsaWNrIG9uIHRoZSBEZWxldGUgYnV0dG9uLjwvcD4KICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtd2FybmluZyI+PHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24td2FybmluZy1zaWduIj48L3NwYW4+IEZpbGVzIHdpbGwgbm90IGJlIHJlbW92ZWQgZnJvbSBwcmV2aW91c2x5IHB1Ymxpc2hlZCB2ZXJzaW9ucyBvZiB0aGUgZGF0YXNldC48L3A+CiAgICAgICAgPGRpdiBjbGFzcz0iYnV0dG9uLWJsb2NrIj48YnV0dG9uIGlkPSJkYXRhc2V0Rm9ybTpqX2lkdDIwMjUiIG5hbWU9ImRhdGFzZXRGb3JtOmpfaWR0MjAyNSIgY2xhc3M9InVpLWJ1dHRvbiB1aS13aWRnZXQgdWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItYWxsIHVpLWJ1dHRvbi10ZXh0LW9ubHkgYnRuIGJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJQcmltZUZhY2VzLmJjbih0aGlzLGV2ZW50LFtmdW5jdGlvbihldmVudCl7UEYoJ2RlbGV0ZUZpbGVDb25maXJtYXRpb24nKS5oaWRlKCl9LGZ1bmN0aW9uKGV2ZW50KXtQcmltZUZhY2VzLmFiKHtzOiZxdW90O2RhdGFzZXRGb3JtOmpfaWR0MjAyNSZxdW90OyxmOiZxdW90O2RhdGFzZXRGb3JtJnF1b3Q7fSk7cmV0dXJuIGZhbHNlO31dKTsiIHR5cGU9InN1Ym1pdCI+PHNwYW4gY2xhc3M9InVpLWJ1dHRvbi10ZXh0IHVpLWMiPkRlbGV0ZTwvc3Bhbj48L2J1dHRvbj48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpqX2lkdDIwMjVfcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiQ29tbWFuZEJ1dHRvbiIsIndpZGdldF9kYXRhc2V0Rm9ybV9qX2lkdDIwMjUiLHtpZDoiZGF0YXNldEZvcm06al9pZHQyMDI1In0pO30pOzwvc2NyaXB0PgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWxpbmsiIG9uY2xpY2s9IlBGKCdkZWxldGVGaWxlQ29uZmlybWF0aW9uJykuaGlkZSgpIiB0eXBlPSJidXR0b24iPgogICAgICAgICAgICAgICAgQ2FuY2VsCiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgIDwvZGl2PjwvZGl2PjwvZGl2PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmRlbGV0ZUZpbGVDb25maXJtX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIkRpYWxvZyIsImRlbGV0ZUZpbGVDb25maXJtYXRpb24iLHtpZDoiZGF0YXNldEZvcm06ZGVsZXRlRmlsZUNvbmZpcm0iLG1vZGFsOnRydWV9KTt9KTs8L3NjcmlwdD48ZGl2IGlkPSJkYXRhc2V0Rm9ybTpjb25maWd1cmVUb29sUG9wdXAiIGNsYXNzPSJ1aS1kaWFsb2cgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwgdWktc2hhZG93IHVpLWhpZGRlbi1jb250YWluZXIgc21hbGxQb3BVcCI+PGRpdiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci10b3AiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpjb25maWd1cmVUb29sUG9wdXBfdGl0bGUiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGUiPjwvc3Bhbj48YSBocmVmPSIjIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyLWljb24gdWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIHVpLWNvcm5lci1hbGwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNsb3NldGhpY2siPjwvc3Bhbj48L2E+PC9kaXY+PGRpdiBjbGFzcz0idWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiIGlkPSJkYXRhc2V0Rm9ybTpjb25maWd1cmVUb29sUG9wdXBfY29udGVudCI+CgogICAgICAgIDxwIGNsYXNzPSJoZWxwLWJsb2NrIj48c3BhbiBjbGFzcz0idGV4dC1sZWZ0Ij4gPGJyLz48L3NwYW4+CiAgICAgICAgPC9wPgogICAgICAgIAogICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ibG9jayI+PGJ1dHRvbiBpZD0iZGF0YXNldEZvcm06al9pZHQyMDMwIiBuYW1lPSJkYXRhc2V0Rm9ybTpqX2lkdDIwMzAiIGNsYXNzPSJ1aS1idXR0b24gdWktd2lkZ2V0IHVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLWFsbCB1aS1idXR0b24tdGV4dC1vbmx5IGJ0biBidG4tZGVmYXVsdCIgb25jbGljaz0iUHJpbWVGYWNlcy5iY24odGhpcyxldmVudCxbZnVuY3Rpb24oZXZlbnQpe1BGKCdjb25maWd1cmVUb29sUG9wdXAnKS5oaWRlKCk7fSxmdW5jdGlvbihldmVudCl7UHJpbWVGYWNlcy5hYih7czomcXVvdDtkYXRhc2V0Rm9ybTpqX2lkdDIwMzAmcXVvdDssZjomcXVvdDtkYXRhc2V0Rm9ybSZxdW90Oyx1OiZxdW90O21lc3NhZ2VQYW5lbCZxdW90O30pO3JldHVybiBmYWxzZTt9XSk7IiB0eXBlPSJzdWJtaXQiPjxzcGFuIGNsYXNzPSJ1aS1idXR0b24tdGV4dCB1aS1jIj5Db250aW51ZTwvc3Bhbj48L2J1dHRvbj48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpqX2lkdDIwMzBfcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiQ29tbWFuZEJ1dHRvbiIsIndpZGdldF9kYXRhc2V0Rm9ybV9qX2lkdDIwMzAiLHtpZDoiZGF0YXNldEZvcm06al9pZHQyMDMwIn0pO30pOzwvc2NyaXB0PgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWxpbmsiIG9uY2xpY2s9IlBGKCdjb25maWd1cmVUb29sUG9wdXAnKS5oaWRlKCk7UEYoJ2Jsb2NrRGF0YXNldEZvcm0nKS5oaWRlKCk7IiB0eXBlPSJidXR0b24iPgogICAgICAgICAgICAgICAgQ2FuY2VsCiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgIDwvZGl2PjwvZGl2PjwvZGl2PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmNvbmZpZ3VyZVRvb2xQb3B1cF9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJEaWFsb2ciLCJjb25maWd1cmVUb29sUG9wdXAiLHtpZDoiZGF0YXNldEZvcm06Y29uZmlndXJlVG9vbFBvcHVwIixtb2RhbDp0cnVlfSk7fSk7PC9zY3JpcHQ+PGRpdiBpZD0iZGF0YXNldEZvcm06c2VsZWN0RmlsZXMiIGNsYXNzPSJ1aS1kaWFsb2cgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwgdWktc2hhZG93IHVpLWhpZGRlbi1jb250YWluZXIgc21hbGxQb3BVcCI+PGRpdiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci10b3AiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpzZWxlY3RGaWxlc190aXRsZSIgY2xhc3M9InVpLWRpYWxvZy10aXRsZSI+U2VsZWN0IEZpbGUocyk8L3NwYW4+PGEgaHJlZj0iIyIgY2xhc3M9InVpLWRpYWxvZy10aXRsZWJhci1pY29uIHVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSB1aS1jb3JuZXItYWxsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gY2xhc3M9InVpLWljb24gdWktaWNvbi1jbG9zZXRoaWNrIj48L3NwYW4+PC9hPjwvZGl2PjxkaXYgY2xhc3M9InVpLWRpYWxvZy1jb250ZW50IHVpLXdpZGdldC1jb250ZW50IiBpZD0iZGF0YXNldEZvcm06c2VsZWN0RmlsZXNfY29udGVudCI+CiAgICAgICAgPHAgY2xhc3M9InRleHQtZGFuZ2VyIj48c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1leGNsYW1hdGlvbi1zaWduIj48L3NwYW4+IFBsZWFzZSBzZWxlY3Qgb25lIG9yIG1vcmUgZmlsZXMuPC9wPgogICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ibG9jayI+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tZGVmYXVsdCIgb25jbGljaz0iUEYoJ3NlbGVjdEZpbGVzJykuaGlkZSgpOyIgdHlwZT0iYnV0dG9uIj4KICAgICAgICAgICAgICAgIENsb3NlCiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgIDwvZGl2PjwvZGl2PjwvZGl2PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOnNlbGVjdEZpbGVzX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIkRpYWxvZyIsInNlbGVjdEZpbGVzIix7aWQ6ImRhdGFzZXRGb3JtOnNlbGVjdEZpbGVzIixtb2RhbDp0cnVlfSk7fSk7PC9zY3JpcHQ+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06al9pZHQyMDMzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPnJlc3RyaWN0RmlsZUNvbW1hbmQgPSBmdW5jdGlvbigpIHtyZXR1cm4gUHJpbWVGYWNlcy5hYih7czoiZGF0YXNldEZvcm06al9pZHQyMDMzIixmOiJkYXRhc2V0Rm9ybSIsdToibWVzc2FnZVBhbmVsIixwYTphcmd1bWVudHNbMF19KTt9PC9zY3JpcHQ+CiAgICAgICAgPHNjcmlwdD4KICAgICAgICAvLzwhW0NEQVRBWwogICAgICAgICAgICBmdW5jdGlvbiB0ZXN0VE9BKCkgewogICAgICAgICAgICAgICAgdmFyIHRlcm1zb2ZBY2Nlc3NIaWRkZW4sIGZpbGVBY2Nlc3NSZXF1ZXN0SGlkZGVuOwogICAgICAgICAgICAgICAgICAgIHRyeXsKICAgICAgICAgICAgICAgICAgICAgICAgdGVybXNvZkFjY2Vzc0hpZGRlbiAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGF0YXNldEZvcm06dGVybXNvZkFjY2Vzc0hpZGRlbiIpLnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICBmaWxlQWNjZXNzUmVxdWVzdEhpZGRlbiAgPSAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkYXRhc2V0Rm9ybTpmaWxlQWNjZXNzUmVxdWVzdEhpZGRlbiIpLnZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcil7CiAgICAgICAgICAgICAgICAgICAgICAgIHRlcm1zb2ZBY2Nlc3NIaWRkZW4gID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpbGVGb3JtOnRlcm1zb2ZBY2Nlc3NIaWRkZW4iKS52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUFjY2Vzc1JlcXVlc3RIaWRkZW4gID0gICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmlsZUZvcm06ZmlsZUFjY2Vzc1JlcXVlc3RIaWRkZW4iKS52YWx1ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWxlQWNjZXNzUmVxdWVzdEhpZGRlbiA9PT0gJ2ZhbHNlJyAmJiB0ZXJtc29mQWNjZXNzSGlkZGVuID09PSAnJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAvL05vdCBjb21wbGlhbnQgc2hvdyBlcnJvciBrZWVwIHBvcHVwIG9wZW4uLi4KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBGKCdhY2Nlc3NQb3B1cCcpLmhpZGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0RmlsZUNvbW1hbmQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgIAogICAgICAgIC8vXV0+CiAgICA8L3NjcmlwdD48ZGl2IGlkPSJkYXRhc2V0Rm9ybTpzaGFyZURpYWxvZyIgY2xhc3M9InVpLWRpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1zaGFkb3cgdWktaGlkZGVuLWNvbnRhaW5lciI+PGRpdiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci10b3AiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpzaGFyZURpYWxvZ190aXRsZSIgY2xhc3M9InVpLWRpYWxvZy10aXRsZSI+U2hhcmUgRGF0YXNldDwvc3Bhbj48YSBocmVmPSIjIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyLWljb24gdWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIHVpLWNvcm5lci1hbGwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNsb3NldGhpY2siPjwvc3Bhbj48L2E+PC9kaXY+PGRpdiBjbGFzcz0idWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiIGlkPSJkYXRhc2V0Rm9ybTpzaGFyZURpYWxvZ19jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImhlbHAtYmxvY2siPlNoYXJlIHRoaXMgZGF0YXNldCBvbiB5b3VyIGZhdm9yaXRlIHNvY2lhbCBtZWRpYSBuZXR3b3Jrcy48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InNoYXJycmUtd2lkZ2V0IiBkYXRhLXVybD0iaHR0cHM6Ly9kYXRhdmVyc2UuaGFydmFyZC5lZHUvZGF0YXNldC54aHRtbD9wZXJzaXN0ZW50SWQ9ZG9pOjEwLjc5MTAvRFZOL05KN1hTTyIgZGF0YS10ZXh0PSJWaWV3IHRoaXMgZGF0YXNldC4iPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tYmxvY2siPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJQRignc2hhcmVEaWFsb2cnKS5oaWRlKCkiIHR5cGU9ImJ1dHRvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xvc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj48L2Rpdj48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpzaGFyZURpYWxvZ19zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJEaWFsb2ciLCJzaGFyZURpYWxvZyIse2lkOiJkYXRhc2V0Rm9ybTpzaGFyZURpYWxvZyIsbW9kYWw6dHJ1ZX0pO30pOzwvc2NyaXB0PjxkaXYgaWQ9ImRhdGFzZXRGb3JtOmNpdGF0aW9uc0RpYWxvZyIgY2xhc3M9InVpLWRpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1zaGFkb3cgdWktaGlkZGVuLWNvbnRhaW5lciBzbWFsbFBvcFVwIj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXIgdWktd2lkZ2V0LWhlYWRlciB1aS1oZWxwZXItY2xlYXJmaXggdWktY29ybmVyLXRvcCI+PHNwYW4gaWQ9ImRhdGFzZXRGb3JtOmNpdGF0aW9uc0RpYWxvZ190aXRsZSIgY2xhc3M9InVpLWRpYWxvZy10aXRsZSI+RGF0YXNldCBDaXRhdGlvbnM8L3NwYW4+PGEgaHJlZj0iIyIgY2xhc3M9InVpLWRpYWxvZy10aXRsZWJhci1pY29uIHVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSB1aS1jb3JuZXItYWxsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gY2xhc3M9InVpLWljb24gdWktaWNvbi1jbG9zZXRoaWNrIj48L3NwYW4+PC9hPjwvZGl2PjxkaXYgY2xhc3M9InVpLWRpYWxvZy1jb250ZW50IHVpLXdpZGdldC1jb250ZW50IiBpZD0iZGF0YXNldEZvcm06Y2l0YXRpb25zRGlhbG9nX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iaGVscC1ibG9jayI+Q2l0YXRpb25zIGZvciB0aGlzIGRhdGFzZXQgYXJlIHJldHJpZXZlZCBmcm9tIENyb3NzcmVmIHZpYSBEYXRhQ2l0ZSB1c2luZyBNYWtlIERhdGEgQ291bnQgc3RhbmRhcmRzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBkYXRhc2V0IG1ldHJpY3MsIHBsZWFzZSByZWZlciB0byB0aGUgPGEgaHJlZj0iaHR0cHM6Ly9ndWlkZXMuZGF0YXZlcnNlLm9yZy9lbi81LjEyL3VzZXIvZGF0YXNldC1tYW5hZ2VtZW50Lmh0bWwjZGF0YXNldC1tZXRyaWNzLWFuZC1tYWtlLWRhdGEtY291bnQiIHRpdGxlPSJEYXRhc2V0IE1ldHJpY3MgYW5kIE1ha2UgRGF0YSBDb3VudCAtIERhdGF2ZXJzZSBVc2VyIEd1aWRlIiB0YXJnZXQ9Il9ibGFuayI+VXNlciBHdWlkZTwvYT4uCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iY2l0YXRpb25zLWxpc3QtYmxvY2siPjxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29ycnksIG5vIGNpdGF0aW9ucyB3ZXJlIGZvdW5kLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tYmxvY2siPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJQRignY2l0YXRpb25zRGlhbG9nJykuaGlkZSgpIiB0eXBlPSJidXR0b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsb3NlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9kaXY+PC9kaXY+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06Y2l0YXRpb25zRGlhbG9nX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIkRpYWxvZyIsImNpdGF0aW9uc0RpYWxvZyIse2lkOiJkYXRhc2V0Rm9ybTpjaXRhdGlvbnNEaWFsb2ciLG1vZGFsOnRydWV9KTt9KTs8L3NjcmlwdD48ZGl2IGlkPSJkYXRhc2V0Rm9ybTpkb3dubG9hZEludmFsaWQiIGNsYXNzPSJ1aS1kaWFsb2cgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwgdWktc2hhZG93IHVpLWhpZGRlbi1jb250YWluZXIgc21hbGxQb3BVcCI+PGRpdiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci10b3AiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpkb3dubG9hZEludmFsaWRfdGl0bGUiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGUiPlJlc3RyaWN0ZWQgRmlsZXMgU2VsZWN0ZWQ8L3NwYW4+PGEgaHJlZj0iIyIgY2xhc3M9InVpLWRpYWxvZy10aXRsZWJhci1pY29uIHVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSB1aS1jb3JuZXItYWxsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gY2xhc3M9InVpLWljb24gdWktaWNvbi1jbG9zZXRoaWNrIj48L3NwYW4+PC9hPjwvZGl2PjxkaXYgY2xhc3M9InVpLWRpYWxvZy1jb250ZW50IHVpLXdpZGdldC1jb250ZW50IiBpZD0iZGF0YXNldEZvcm06ZG93bmxvYWRJbnZhbGlkX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC1kYW5nZXIiPjxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWV4Y2xhbWF0aW9uLXNpZ24iPjwvc3Bhbj4gVGhlIHNlbGVjdGVkIGZpbGUocykgbWF5IG5vdCBiZSBkb3dubG9hZGVkIGJlY2F1c2UgeW91IGhhdmUgbm90IGJlZW4gZ3JhbnRlZCBhY2Nlc3MuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tYmxvY2siPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJQRignZG93bmxvYWRJbnZhbGlkJykuaGlkZSgpOyIgdHlwZT0iYnV0dG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbG9zZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PjwvZGl2PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmRvd25sb2FkSW52YWxpZF9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJEaWFsb2ciLCJkb3dubG9hZEludmFsaWQiLHtpZDoiZGF0YXNldEZvcm06ZG93bmxvYWRJbnZhbGlkIixtb2RhbDp0cnVlfSk7fSk7PC9zY3JpcHQ+PGRpdiBpZD0iZGF0YXNldEZvcm06ZG93bmxvYWRUb29MYXJnZSIgY2xhc3M9InVpLWRpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1zaGFkb3cgdWktaGlkZGVuLWNvbnRhaW5lciBzbWFsbFBvcFVwIj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXIgdWktd2lkZ2V0LWhlYWRlciB1aS1oZWxwZXItY2xlYXJmaXggdWktY29ybmVyLXRvcCI+PHNwYW4gaWQ9ImRhdGFzZXRGb3JtOmRvd25sb2FkVG9vTGFyZ2VfdGl0bGUiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGUiPkRvd25sb2FkIE9wdGlvbnM8L3NwYW4+PGEgaHJlZj0iIyIgY2xhc3M9InVpLWRpYWxvZy10aXRsZWJhci1pY29uIHVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSB1aS1jb3JuZXItYWxsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gY2xhc3M9InVpLWljb24gdWktaWNvbi1jbG9zZXRoaWNrIj48L3NwYW4+PC9hPjwvZGl2PjxkaXYgY2xhc3M9InVpLWRpYWxvZy1jb250ZW50IHVpLXdpZGdldC1jb250ZW50IiBpZD0iZGF0YXNldEZvcm06ZG93bmxvYWRUb29MYXJnZV9jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtZGFuZ2VyIj48c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1leGNsYW1hdGlvbi1zaWduIj48L3NwYW4+ICBUaGUgZmlsZXMgc2VsZWN0ZWQgYXJlIHRvbyBsYXJnZSB0byBkb3dubG9hZCBhcyBhIFpJUC48L3A+CiAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJoZWxwLWJsb2NrIj5Zb3UgY2FuIHNlbGVjdCBpbmRpdmlkdWFsIGZpbGVzIHRoYXQgYXJlIGJlbG93IHRoZSAyMC4wIEdCIGRvd25sb2FkIGxpbWl0IGZyb20gdGhlIGZpbGVzIHRhYmxlLCBvciB1c2UgdGhlIDxhIGhyZWY9Imh0dHBzOi8vZ3VpZGVzLmRhdGF2ZXJzZS5vcmcvZW4vNS4xMi9hcGkvZGF0YWFjY2Vzcy5odG1sIiB0aXRsZT0iRGF0YSBBY2Nlc3MgQVBJIiB0YXJnZXQ9Il9ibGFuayI+RGF0YSBBY2Nlc3MgQVBJPC9hPiBmb3IgcHJvZ3JhbW1hdGljIGFjY2VzcyB0byB0aGUgZmlsZXMuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD48L2Rpdj48L2Rpdj48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpkb3dubG9hZFRvb0xhcmdlX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIkRpYWxvZyIsImRvd25sb2FkVG9vTGFyZ2UiLHtpZDoiZGF0YXNldEZvcm06ZG93bmxvYWRUb29MYXJnZSIsbW9kYWw6dHJ1ZX0pO30pOzwvc2NyaXB0PjxkaXYgaWQ9ImRhdGFzZXRGb3JtOnNlbGVjdEZpbGVzRm9yRG93bmxvYWQiIGNsYXNzPSJ1aS1kaWFsb2cgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwgdWktc2hhZG93IHVpLWhpZGRlbi1jb250YWluZXIgc21hbGxQb3BVcCI+PGRpdiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci10b3AiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpzZWxlY3RGaWxlc0ZvckRvd25sb2FkX3RpdGxlIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlIj5TZWxlY3QgRmlsZShzKTwvc3Bhbj48YSBocmVmPSIjIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyLWljb24gdWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIHVpLWNvcm5lci1hbGwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNsb3NldGhpY2siPjwvc3Bhbj48L2E+PC9kaXY+PGRpdiBjbGFzcz0idWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiIGlkPSJkYXRhc2V0Rm9ybTpzZWxlY3RGaWxlc0ZvckRvd25sb2FkX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC1kYW5nZXIiPjxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWV4Y2xhbWF0aW9uLXNpZ24iPjwvc3Bhbj4gUGxlYXNlIHNlbGVjdCBhIGZpbGUgb3IgZmlsZXMgdG8gYmUgZG93bmxvYWRlZC48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ibG9jayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiIG9uY2xpY2s9IlBGKCdzZWxlY3RGaWxlc0ZvckRvd25sb2FkJykuaGlkZSgpO1BGKCdibG9ja0RhdGFzZXRGb3JtJykuaGlkZSgpOyIgdHlwZT0iYnV0dG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbG9zZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PjwvZGl2PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOnNlbGVjdEZpbGVzRm9yRG93bmxvYWRfcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiRGlhbG9nIiwic2VsZWN0RmlsZXNGb3JEb3dubG9hZCIse2lkOiJkYXRhc2V0Rm9ybTpzZWxlY3RGaWxlc0ZvckRvd25sb2FkIixtb2RhbDp0cnVlfSk7fSk7PC9zY3JpcHQ+PGRpdiBpZD0iZGF0YXNldEZvcm06ZG93bmxvYWRNaXhlZCIgY2xhc3M9InVpLWRpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1zaGFkb3cgdWktaGlkZGVuLWNvbnRhaW5lciBzbWFsbFBvcFVwIj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXIgdWktd2lkZ2V0LWhlYWRlciB1aS1oZWxwZXItY2xlYXJmaXggdWktY29ybmVyLXRvcCI+PHNwYW4gaWQ9ImRhdGFzZXRGb3JtOmRvd25sb2FkTWl4ZWRfdGl0bGUiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGUiPlJlc3RyaWN0ZWQgRmlsZXMgU2VsZWN0ZWQ8L3NwYW4+PGEgaHJlZj0iIyIgY2xhc3M9InVpLWRpYWxvZy10aXRsZWJhci1pY29uIHVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSB1aS1jb3JuZXItYWxsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gY2xhc3M9InVpLWljb24gdWktaWNvbi1jbG9zZXRoaWNrIj48L3NwYW4+PC9hPjwvZGl2PjxkaXYgY2xhc3M9InVpLWRpYWxvZy1jb250ZW50IHVpLXdpZGdldC1jb250ZW50IiBpZD0iZGF0YXNldEZvcm06ZG93bmxvYWRNaXhlZF9jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtZGFuZ2VyIj48c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1leGNsYW1hdGlvbi1zaWduIj48L3NwYW4+IFRoZSByZXN0cmljdGVkIGZpbGUocykgc2VsZWN0ZWQgbWF5IG5vdCBiZSBkb3dubG9hZGVkIGJlY2F1c2UgeW91IGhhdmUgbm90IGJlZW4gZ3JhbnRlZCBhY2Nlc3MuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8dGFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ibG9jayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iaGVscC1ibG9jayI+Q2xpY2sgQ29udGludWUgdG8gZG93bmxvYWQgdGhlIGZpbGVzIHlvdSBoYXZlIGFjY2VzcyB0byBkb3dubG9hZC48L3A+PGJ1dHRvbiBpZD0iZGF0YXNldEZvcm06al9pZHQyMDY0IiBuYW1lPSJkYXRhc2V0Rm9ybTpqX2lkdDIwNjQiIGNsYXNzPSJ1aS1idXR0b24gdWktd2lkZ2V0IHVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLWFsbCB1aS1idXR0b24tdGV4dC1vbmx5IGJ0biBidG4tZGVmYXVsdCIgb25jbGljaz0iUHJpbWVGYWNlcy5iY24odGhpcyxldmVudCxbZnVuY3Rpb24oZXZlbnQpe1BGKCdkb3dubG9hZE1peGVkJykuaGlkZSgpfSxmdW5jdGlvbihldmVudCl7UHJpbWVGYWNlcy5hYih7czomcXVvdDtkYXRhc2V0Rm9ybTpqX2lkdDIwNjQmcXVvdDssZjomcXVvdDtkYXRhc2V0Rm9ybSZxdW90O30pO3JldHVybiBmYWxzZTt9XSk7IiB0eXBlPSJzdWJtaXQiPjxzcGFuIGNsYXNzPSJ1aS1idXR0b24tdGV4dCB1aS1jIj5Db250aW51ZTwvc3Bhbj48L2J1dHRvbj48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpqX2lkdDIwNjRfcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiQ29tbWFuZEJ1dHRvbiIsIndpZGdldF9kYXRhc2V0Rm9ybV9qX2lkdDIwNjQiLHtpZDoiZGF0YXNldEZvcm06al9pZHQyMDY0In0pO30pOzwvc2NyaXB0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1saW5rIiBvbmNsaWNrPSJQRignZG93bmxvYWRNaXhlZCcpLmhpZGUoKTsiIHR5cGU9ImJ1dHRvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FuY2VsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9kaXY+PC9kaXY+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06ZG93bmxvYWRNaXhlZF9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJEaWFsb2ciLCJkb3dubG9hZE1peGVkIix7aWQ6ImRhdGFzZXRGb3JtOmRvd25sb2FkTWl4ZWQiLG1vZGFsOnRydWV9KTt9KTs8L3NjcmlwdD48ZGl2IGlkPSJkYXRhc2V0Rm9ybTpkZWxldGVDb25maXJtYXRpb24iIGNsYXNzPSJ1aS1kaWFsb2cgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwgdWktc2hhZG93IHVpLWhpZGRlbi1jb250YWluZXIgc21hbGxQb3BVcCI+PGRpdiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci10b3AiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpkZWxldGVDb25maXJtYXRpb25fdGl0bGUiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGUiPkRlbGV0ZSBEYXRhc2V0PC9zcGFuPjxhIGhyZWY9IiMiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXItaWNvbiB1aS1kaWFsb2ctdGl0bGViYXItY2xvc2UgdWktY29ybmVyLWFsbCIgYXJpYS1sYWJlbD0iQ2xvc2UiPjxzcGFuIGNsYXNzPSJ1aS1pY29uIHVpLWljb24tY2xvc2V0aGljayI+PC9zcGFuPjwvYT48L2Rpdj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctY29udGVudCB1aS13aWRnZXQtY29udGVudCIgaWQ9ImRhdGFzZXRGb3JtOmRlbGV0ZUNvbmZpcm1hdGlvbl9jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtd2FybmluZyI+PHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24td2FybmluZy1zaWduIj48L3NwYW4+IEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBkYXRhc2V0IGFuZCBhbGwgb2YgaXRzIGZpbGVzPyBZb3UgY2Fubm90IHVuZGVsZXRlIHRoaXMgZGF0YXNldC48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ibG9jayI+PGJ1dHRvbiBpZD0iZGF0YXNldEZvcm06al9pZHQyMDY4IiBuYW1lPSJkYXRhc2V0Rm9ybTpqX2lkdDIwNjgiIGNsYXNzPSJ1aS1idXR0b24gdWktd2lkZ2V0IHVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLWFsbCB1aS1idXR0b24tdGV4dC1vbmx5IGJ0biBidG4tZGVmYXVsdCIgb25jbGljaz0iUHJpbWVGYWNlcy5iY24odGhpcyxldmVudCxbZnVuY3Rpb24oZXZlbnQpe1BGKCdkZWxldGVDb25maXJtYXRpb24nKS5oaWRlKCl9LGZ1bmN0aW9uKGV2ZW50KXtQcmltZUZhY2VzLmFiKHtzOiZxdW90O2RhdGFzZXRGb3JtOmpfaWR0MjA2OCZxdW90OyxmOiZxdW90O2RhdGFzZXRGb3JtJnF1b3Q7fSk7cmV0dXJuIGZhbHNlO31dKTsiIHR5cGU9InN1Ym1pdCI+PHNwYW4gY2xhc3M9InVpLWJ1dHRvbi10ZXh0IHVpLWMiPkNvbnRpbnVlPC9zcGFuPjwvYnV0dG9uPjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmpfaWR0MjA2OF9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJDb21tYW5kQnV0dG9uIiwid2lkZ2V0X2RhdGFzZXRGb3JtX2pfaWR0MjA2OCIse2lkOiJkYXRhc2V0Rm9ybTpqX2lkdDIwNjgifSk7fSk7PC9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWxpbmsiIG9uY2xpY2s9IlBGKCdkZWxldGVDb25maXJtYXRpb24nKS5oaWRlKCk7UEYoJ2Jsb2NrRGF0YXNldEZvcm0nKS5oaWRlKCk7IiB0eXBlPSJidXR0b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbmNlbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PjwvZGl2PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmRlbGV0ZUNvbmZpcm1hdGlvbl9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJEaWFsb2ciLCJkZWxldGVDb25maXJtYXRpb24iLHtpZDoiZGF0YXNldEZvcm06ZGVsZXRlQ29uZmlybWF0aW9uIixtb2RhbDp0cnVlfSk7fSk7PC9zY3JpcHQ+PGRpdiBpZD0iZGF0YXNldEZvcm06ZGVsZXRlVmVyc2lvbkNvbmZpcm1hdGlvbiIgY2xhc3M9InVpLWRpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1zaGFkb3cgdWktaGlkZGVuLWNvbnRhaW5lciBzbWFsbFBvcFVwIj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXIgdWktd2lkZ2V0LWhlYWRlciB1aS1oZWxwZXItY2xlYXJmaXggdWktY29ybmVyLXRvcCI+PHNwYW4gaWQ9ImRhdGFzZXRGb3JtOmRlbGV0ZVZlcnNpb25Db25maXJtYXRpb25fdGl0bGUiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGUiPkRlbGV0ZSBEcmFmdCBWZXJzaW9uPC9zcGFuPjxhIGhyZWY9IiMiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXItaWNvbiB1aS1kaWFsb2ctdGl0bGViYXItY2xvc2UgdWktY29ybmVyLWFsbCIgYXJpYS1sYWJlbD0iQ2xvc2UiPjxzcGFuIGNsYXNzPSJ1aS1pY29uIHVpLWljb24tY2xvc2V0aGljayI+PC9zcGFuPjwvYT48L2Rpdj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctY29udGVudCB1aS13aWRnZXQtY29udGVudCIgaWQ9ImRhdGFzZXRGb3JtOmRlbGV0ZVZlcnNpb25Db25maXJtYXRpb25fY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LXdhcm5pbmciPjxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXdhcm5pbmctc2lnbiI+PC9zcGFuPiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgZHJhZnQgdmVyc2lvbj8gRmlsZXMgd2lsbCBiZSByZXZlcnRlZCB0byB0aGUgbW9zdCByZWNlbnRseSBwdWJsaXNoZWQgdmVyc2lvbi4gWW91IGNhbm5vdCB1bmRlbGV0ZSB0aGlzIGRyYWZ0LjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYnV0dG9uLWJsb2NrIj48YnV0dG9uIGlkPSJkYXRhc2V0Rm9ybTpqX2lkdDIwNzEiIG5hbWU9ImRhdGFzZXRGb3JtOmpfaWR0MjA3MSIgY2xhc3M9InVpLWJ1dHRvbiB1aS13aWRnZXQgdWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItYWxsIHVpLWJ1dHRvbi10ZXh0LW9ubHkgYnRuIGJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJQcmltZUZhY2VzLmJjbih0aGlzLGV2ZW50LFtmdW5jdGlvbihldmVudCl7UEYoJ2RlbGV0ZVZlcnNpb25Db25maXJtYXRpb24nKS5oaWRlKCl9LGZ1bmN0aW9uKGV2ZW50KXtQcmltZUZhY2VzLmFiKHtzOiZxdW90O2RhdGFzZXRGb3JtOmpfaWR0MjA3MSZxdW90OyxmOiZxdW90O2RhdGFzZXRGb3JtJnF1b3Q7fSk7cmV0dXJuIGZhbHNlO31dKTsiIHR5cGU9InN1Ym1pdCI+PHNwYW4gY2xhc3M9InVpLWJ1dHRvbi10ZXh0IHVpLWMiPkNvbnRpbnVlPC9zcGFuPjwvYnV0dG9uPjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmpfaWR0MjA3MV9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJDb21tYW5kQnV0dG9uIiwid2lkZ2V0X2RhdGFzZXRGb3JtX2pfaWR0MjA3MSIse2lkOiJkYXRhc2V0Rm9ybTpqX2lkdDIwNzEifSk7fSk7PC9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWxpbmsiIG9uY2xpY2s9IlBGKCdkZWxldGVWZXJzaW9uQ29uZmlybWF0aW9uJykuaGlkZSgpO1BGKCdibG9ja0RhdGFzZXRGb3JtJykuaGlkZSgpOyIgdHlwZT0iYnV0dG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW5jZWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj48L2Rpdj48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpkZWxldGVWZXJzaW9uQ29uZmlybWF0aW9uX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIkRpYWxvZyIsImRlbGV0ZVZlcnNpb25Db25maXJtYXRpb24iLHtpZDoiZGF0YXNldEZvcm06ZGVsZXRlVmVyc2lvbkNvbmZpcm1hdGlvbiIsbW9kYWw6dHJ1ZX0pO30pOzwvc2NyaXB0PjxkaXYgaWQ9ImRhdGFzZXRGb3JtOnByaXZhdGVVcmxJZCIgY2xhc3M9InVpLWRpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1zaGFkb3cgdWktaGlkZGVuLWNvbnRhaW5lciBzbWFsbFBvcFVwIj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXIgdWktd2lkZ2V0LWhlYWRlciB1aS1oZWxwZXItY2xlYXJmaXggdWktY29ybmVyLXRvcCI+PHNwYW4gaWQ9ImRhdGFzZXRGb3JtOnByaXZhdGVVcmxJZF90aXRsZSIgY2xhc3M9InVpLWRpYWxvZy10aXRsZSI+VW5wdWJsaXNoZWQgRGF0YXNldCBQcml2YXRlIFVSTDwvc3Bhbj48YSBocmVmPSIjIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyLWljb24gdWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIHVpLWNvcm5lci1hbGwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNsb3NldGhpY2siPjwvc3Bhbj48L2E+PC9kaXY+PGRpdiBjbGFzcz0idWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiIGlkPSJkYXRhc2V0Rm9ybTpwcml2YXRlVXJsSWRfY29udGVudCI+PGRpdiBpZD0iZGF0YXNldEZvcm06cHJpdmF0ZVVybFBhbmVsQ2Fubm90Q3JlYXRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LWRhbmdlciI+PHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZXhjbGFtYXRpb24tc2lnbiI+PC9zcGFuPiBQcml2YXRlIFVSTCBjYW4gb25seSBiZSB1c2VkIHdpdGggdW5wdWJsaXNoZWQgdmVyc2lvbnMgb2YgZGF0YXNldHMuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYnV0dG9uLWJsb2NrIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWxpbmsiIG9uY2xpY2s9IlBGKCdwcml2YXRlVXJsQ29uZmlybWF0aW9uJykuaGlkZSgpO1BGKCdibG9ja0RhdGFzZXRGb3JtJykuaGlkZSgpOyIgdHlwZT0iYnV0dG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FuY2VsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpwcml2YXRlVXJsSWRfcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiRGlhbG9nIiwicHJpdmF0ZVVybENvbmZpcm1hdGlvbiIse2lkOiJkYXRhc2V0Rm9ybTpwcml2YXRlVXJsSWQiLG1vZGFsOnRydWV9KTt9KTs8L3NjcmlwdD48ZGl2IGlkPSJkYXRhc2V0Rm9ybTpkaXNhYmxlUHJpdmF0ZVVybENvbmZpcm1hdGlvbiIgY2xhc3M9InVpLWRpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1zaGFkb3cgdWktaGlkZGVuLWNvbnRhaW5lciBzbWFsbFBvcFVwIj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXIgdWktd2lkZ2V0LWhlYWRlciB1aS1oZWxwZXItY2xlYXJmaXggdWktY29ybmVyLXRvcCI+PHNwYW4gaWQ9ImRhdGFzZXRGb3JtOmRpc2FibGVQcml2YXRlVXJsQ29uZmlybWF0aW9uX3RpdGxlIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlIj5VbnB1Ymxpc2hlZCBEYXRhc2V0IFByaXZhdGUgVVJMPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9InVpLWRpYWxvZy1jb250ZW50IHVpLXdpZGdldC1jb250ZW50IiBpZD0iZGF0YXNldEZvcm06ZGlzYWJsZVByaXZhdGVVcmxDb25maXJtYXRpb25fY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LXdhcm5pbmciPjxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXdhcm5pbmctc2lnbiI+PC9zcGFuPiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGlzYWJsZSB0aGUgUHJpdmF0ZSBVUkw/IElmIHlvdSBoYXZlIHNoYXJlZCB0aGUgUHJpdmF0ZSBVUkwgd2l0aCBvdGhlcnMgdGhleSB3aWxsIG5vIGxvbmdlciBiZSBhYmxlIHRvIHVzZSBpdCB0byBhY2Nlc3MgeW91ciB1bnB1Ymxpc2hlZCBkYXRhc2V0LjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYnV0dG9uLWJsb2NrIj48YnV0dG9uIGlkPSJkYXRhc2V0Rm9ybTpqX2lkdDIwOTUiIG5hbWU9ImRhdGFzZXRGb3JtOmpfaWR0MjA5NSIgY2xhc3M9InVpLWJ1dHRvbiB1aS13aWRnZXQgdWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItYWxsIHVpLWJ1dHRvbi10ZXh0LW9ubHkgYnRuIGJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJQcmltZUZhY2VzLmJjbih0aGlzLGV2ZW50LFtmdW5jdGlvbihldmVudCl7UEYoJ2Rpc2FibGVQcml2YXRlVXJsQ29uZmlybWF0aW9uJykuaGlkZSgpO30sZnVuY3Rpb24oZXZlbnQpe1ByaW1lRmFjZXMuYWIoe3M6JnF1b3Q7ZGF0YXNldEZvcm06al9pZHQyMDk1JnF1b3Q7LGY6JnF1b3Q7ZGF0YXNldEZvcm0mcXVvdDssdTomcXVvdDtkYXRhc2V0Rm9ybTpwcml2YXRlVXJsUGFuZWwgbWVzc2FnZVBhbmVsJnF1b3Q7fSk7cmV0dXJuIGZhbHNlO31dKTsiIHR5cGU9InN1Ym1pdCI+PHNwYW4gY2xhc3M9InVpLWJ1dHRvbi10ZXh0IHVpLWMiPlllcywgRGlzYWJsZSBQcml2YXRlIFVSTDwvc3Bhbj48L2J1dHRvbj48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpqX2lkdDIwOTVfcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiQ29tbWFuZEJ1dHRvbiIsIndpZGdldF9kYXRhc2V0Rm9ybV9qX2lkdDIwOTUiLHtpZDoiZGF0YXNldEZvcm06al9pZHQyMDk1In0pO30pOzwvc2NyaXB0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1saW5rIiBvbmNsaWNrPSJQRignZGlzYWJsZVByaXZhdGVVcmxDb25maXJtYXRpb24nKS5oaWRlKCk7UEYoJ3ByaXZhdGVVcmxDb25maXJtYXRpb24nKS5zaG93KCk7IiB0eXBlPSJidXR0b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbmNlbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PjwvZGl2PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmRpc2FibGVQcml2YXRlVXJsQ29uZmlybWF0aW9uX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIkRpYWxvZyIsImRpc2FibGVQcml2YXRlVXJsQ29uZmlybWF0aW9uIix7aWQ6ImRhdGFzZXRGb3JtOmRpc2FibGVQcml2YXRlVXJsQ29uZmlybWF0aW9uIixtb2RhbDp0cnVlfSk7fSk7PC9zY3JpcHQ+PGRpdiBpZD0iZGF0YXNldEZvcm06ZGVsZXRlU2VsZWN0ZWRGaWxlQ29uZmlybWF0aW9uIiBjbGFzcz0idWktZGlhbG9nIHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIHVpLXNoYWRvdyB1aS1oaWRkZW4tY29udGFpbmVyIHNtYWxsUG9wVXAiPjxkaXYgY2xhc3M9InVpLWRpYWxvZy10aXRsZWJhciB1aS13aWRnZXQtaGVhZGVyIHVpLWhlbHBlci1jbGVhcmZpeCB1aS1jb3JuZXItdG9wIj48c3BhbiBpZD0iZGF0YXNldEZvcm06ZGVsZXRlU2VsZWN0ZWRGaWxlQ29uZmlybWF0aW9uX3RpdGxlIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlIj5EZWxldGUgRmlsZXM8L3NwYW4+PGEgaHJlZj0iIyIgY2xhc3M9InVpLWRpYWxvZy10aXRsZWJhci1pY29uIHVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSB1aS1jb3JuZXItYWxsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gY2xhc3M9InVpLWljb24gdWktaWNvbi1jbG9zZXRoaWNrIj48L3NwYW4+PC9hPjwvZGl2PjxkaXYgY2xhc3M9InVpLWRpYWxvZy1jb250ZW50IHVpLXdpZGdldC1jb250ZW50IiBpZD0iZGF0YXNldEZvcm06ZGVsZXRlU2VsZWN0ZWRGaWxlQ29uZmlybWF0aW9uX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC13YXJuaW5nIj48c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi13YXJuaW5nLXNpZ24iPjwvc3Bhbj4gVGhlIGZpbGUocykgd2lsbCBiZSBkZWxldGVkIGFmdGVyIHlvdSBjbGljayBvbiB0aGUgRGVsZXRlIGJ1dHRvbi48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC13YXJuaW5nIj48c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi13YXJuaW5nLXNpZ24iPjwvc3Bhbj4gRmlsZXMgd2lsbCBub3QgYmUgcmVtb3ZlZCBmcm9tIHByZXZpb3VzbHkgcHVibGlzaGVkIHZlcnNpb25zIG9mIHRoZSBkYXRhc2V0LjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYnV0dG9uLWJsb2NrIj48YnV0dG9uIGlkPSJkYXRhc2V0Rm9ybTpqX2lkdDIxMDEiIG5hbWU9ImRhdGFzZXRGb3JtOmpfaWR0MjEwMSIgY2xhc3M9InVpLWJ1dHRvbiB1aS13aWRnZXQgdWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItYWxsIHVpLWJ1dHRvbi10ZXh0LW9ubHkgYnRuIGJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJQcmltZUZhY2VzLmJjbih0aGlzLGV2ZW50LFtmdW5jdGlvbihldmVudCl7UEYoJ2RlbGV0ZVNlbGVjdGVkRmlsZUNvbmZpcm1hdGlvbicpLmhpZGUoKX0sZnVuY3Rpb24oZXZlbnQpe1ByaW1lRmFjZXMuYWIoe3M6JnF1b3Q7ZGF0YXNldEZvcm06al9pZHQyMTAxJnF1b3Q7LGY6JnF1b3Q7ZGF0YXNldEZvcm0mcXVvdDt9KTtyZXR1cm4gZmFsc2U7fV0pOyIgdHlwZT0ic3VibWl0Ij48c3BhbiBjbGFzcz0idWktYnV0dG9uLXRleHQgdWktYyI+RGVsZXRlPC9zcGFuPjwvYnV0dG9uPjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmpfaWR0MjEwMV9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJDb21tYW5kQnV0dG9uIiwid2lkZ2V0X2RhdGFzZXRGb3JtX2pfaWR0MjEwMSIse2lkOiJkYXRhc2V0Rm9ybTpqX2lkdDIxMDEifSk7fSk7PC9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWxpbmsiIG9uY2xpY2s9IlBGKCdkZWxldGVTZWxlY3RlZEZpbGVDb25maXJtYXRpb24nKS5oaWRlKCk7UEYoJ2Jsb2NrRGF0YXNldEZvcm0nKS5oaWRlKCk7IiB0eXBlPSJidXR0b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbmNlbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PjwvZGl2PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmRlbGV0ZVNlbGVjdGVkRmlsZUNvbmZpcm1hdGlvbl9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJEaWFsb2ciLCJkZWxldGVTZWxlY3RlZEZpbGVDb25maXJtYXRpb24iLHtpZDoiZGF0YXNldEZvcm06ZGVsZXRlU2VsZWN0ZWRGaWxlQ29uZmlybWF0aW9uIixtb2RhbDp0cnVlfSk7fSk7PC9zY3JpcHQ+PGRpdiBpZD0iZGF0YXNldEZvcm06Y29tcHV0ZUludmFsaWQiIGNsYXNzPSJ1aS1kaWFsb2cgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwgdWktc2hhZG93IHVpLWhpZGRlbi1jb250YWluZXIgc21hbGxQb3BVcCI+PGRpdiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci10b3AiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpjb21wdXRlSW52YWxpZF90aXRsZSIgY2xhc3M9InVpLWRpYWxvZy10aXRsZSI+Q29tcHV0ZTwvc3Bhbj48YSBocmVmPSIjIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyLWljb24gdWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIHVpLWNvcm5lci1hbGwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNsb3NldGhpY2siPjwvc3Bhbj48L2E+PC9kaXY+PGRpdiBjbGFzcz0idWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiIGlkPSJkYXRhc2V0Rm9ybTpjb21wdXRlSW52YWxpZF9jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtZGFuZ2VyIj48c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1leGNsYW1hdGlvbi1zaWduIj48L3NwYW4+IFRoaXMgZGF0YXNldCBjb250YWlucyByZXN0cmljdGVkIGZpbGVzIHlvdSBtYXkgbm90IGNvbXB1dGUgb24gYmVjYXVzZSB5b3UgaGF2ZSBub3QgYmVlbiBncmFudGVkIGFjY2Vzcy48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ibG9jayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiIG9uY2xpY2s9IlBGKCdjb21wdXRlSW52YWxpZCcpLmhpZGUoKTsiIHR5cGU9ImJ1dHRvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xvc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj48L2Rpdj48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpjb21wdXRlSW52YWxpZF9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJEaWFsb2ciLCJjb21wdXRlSW52YWxpZCIse2lkOiJkYXRhc2V0Rm9ybTpjb21wdXRlSW52YWxpZCIsbW9kYWw6dHJ1ZX0pO30pOzwvc2NyaXB0PjxkaXYgaWQ9ImRhdGFzZXRGb3JtOmpfaWR0MjEwNCI+PGRpdiBpZD0iZGF0YXNldEZvcm06al9pZHQyMTA1IiBjbGFzcz0idWktb3V0cHV0cGFuZWwgdWktd2lkZ2V0Ij48L2Rpdj48L2Rpdj48ZGl2IGlkPSJkYXRhc2V0Rm9ybTpkZWFjY2Vzc2lvbkNvbmZpcm1hdGlvbiIgY2xhc3M9InVpLWRpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1zaGFkb3cgdWktaGlkZGVuLWNvbnRhaW5lciI+PGRpdiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci10b3AiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpkZWFjY2Vzc2lvbkNvbmZpcm1hdGlvbl90aXRsZSIgY2xhc3M9InVpLWRpYWxvZy10aXRsZSI+RGVhY2Nlc3Npb24gRGF0YXNldDwvc3Bhbj48YSBocmVmPSIjIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyLWljb24gdWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIHVpLWNvcm5lci1hbGwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNsb3NldGhpY2siPjwvc3Bhbj48L2E+PC9kaXY+PGRpdiBjbGFzcz0idWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiIGlkPSJkYXRhc2V0Rm9ybTpkZWFjY2Vzc2lvbkNvbmZpcm1hdGlvbl9jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtd2FybmluZyI+PHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24td2FybmluZy1zaWduIj48L3NwYW4+IEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWFjY2Vzc2lvbj8gVGhlIHNlbGVjdGVkIHZlcnNpb24ocykgd2lsbCBubyBsb25nZXIgYmUgdmlld2FibGUgYnkgdGhlIHB1YmxpYy48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ibG9jayI+PGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0iZGF0YXNldEZvcm06al9pZHQyMTMyIiB2YWx1ZT0iWWVzIiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJQRignZGVhY2Nlc3Npb25Db25maXJtYXRpb24nKS5oaWRlKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBGKCdkZWFjY2Vzc2lvbkJsb2NrJykuaGlkZSgpIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1saW5rIiBvbmNsaWNrPSJQRignZGVhY2Nlc3Npb25Db25maXJtYXRpb24nKS5oaWRlKCk7IiB0eXBlPSJidXR0b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9kaXY+PC9kaXY+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06ZGVhY2Nlc3Npb25Db25maXJtYXRpb25fcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiRGlhbG9nIiwiZGVhY2Nlc3Npb25Db25maXJtYXRpb24iLHtpZDoiZGF0YXNldEZvcm06ZGVhY2Nlc3Npb25Db25maXJtYXRpb24iLG1vZGFsOnRydWV9KTt9KTs8L3NjcmlwdD48ZGl2IGlkPSJkYXRhc2V0Rm9ybTpkZWFjY2Vzc2lvbkFsbENvbmZpcm1hdGlvbiIgY2xhc3M9InVpLWRpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1zaGFkb3cgdWktaGlkZGVuLWNvbnRhaW5lciI+PGRpdiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci10b3AiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpkZWFjY2Vzc2lvbkFsbENvbmZpcm1hdGlvbl90aXRsZSIgY2xhc3M9InVpLWRpYWxvZy10aXRsZSI+RGVhY2Nlc3Npb24gRGF0YXNldDwvc3Bhbj48YSBocmVmPSIjIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyLWljb24gdWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIHVpLWNvcm5lci1hbGwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNsb3NldGhpY2siPjwvc3Bhbj48L2E+PC9kaXY+PGRpdiBjbGFzcz0idWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiIGlkPSJkYXRhc2V0Rm9ybTpkZWFjY2Vzc2lvbkFsbENvbmZpcm1hdGlvbl9jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtd2FybmluZyI+PHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24td2FybmluZy1zaWduIj48L3NwYW4+IEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWFjY2Vzc2lvbiB0aGlzIGRhdGFzZXQ/IEl0IHdpbGwgbm8gbG9uZ2VyIGJlIHZpZXdhYmxlIGJ5IHRoZSBwdWJsaWMuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tYmxvY2siPjxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9ImRhdGFzZXRGb3JtOmpfaWR0MjEzNSIgdmFsdWU9IlllcyIgY2xhc3M9ImJ0biBidG4tZGVmYXVsdCIgb25jbGljaz0iUEYoJ2RlYWNjZXNzaW9uQWxsQ29uZmlybWF0aW9uJykuaGlkZSgpO1BGKCdkZWFjY2Vzc2lvbkJsb2NrJykuaGlkZSgpO1BGKCdibG9ja0RhdGFzZXRGb3JtJykuaGlkZSgpOyIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tbGluayIgb25jbGljaz0iUEYoJ2RlYWNjZXNzaW9uQWxsQ29uZmlybWF0aW9uJykuaGlkZSgpO1BGKCdibG9ja0RhdGFzZXRGb3JtJykuaGlkZSgpOyIgdHlwZT0iYnV0dG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBObwogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PjwvZGl2PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmRlYWNjZXNzaW9uQWxsQ29uZmlybWF0aW9uX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIkRpYWxvZyIsImRlYWNjZXNzaW9uQWxsQ29uZmlybWF0aW9uIix7aWQ6ImRhdGFzZXRGb3JtOmRlYWNjZXNzaW9uQWxsQ29uZmlybWF0aW9uIixtb2RhbDp0cnVlfSk7fSk7PC9zY3JpcHQ+PGRpdiBpZD0iZGF0YXNldEZvcm06Y29tcGFyZVR3byIgY2xhc3M9InVpLWRpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1zaGFkb3cgdWktaGlkZGVuLWNvbnRhaW5lciI+PGRpdiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci10b3AiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpjb21wYXJlVHdvX3RpdGxlIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlIj5WZXJzaW9uIERpZmZlcmVuY2VzIERldGFpbHM8L3NwYW4+PGEgaHJlZj0iIyIgY2xhc3M9InVpLWRpYWxvZy10aXRsZWJhci1pY29uIHVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSB1aS1jb3JuZXItYWxsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gY2xhc3M9InVpLWljb24gdWktaWNvbi1jbG9zZXRoaWNrIj48L3NwYW4+PC9hPjwvZGl2PjxkaXYgY2xhc3M9InVpLWRpYWxvZy1jb250ZW50IHVpLXdpZGdldC1jb250ZW50IiBpZD0iZGF0YXNldEZvcm06Y29tcGFyZVR3b19jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImhlbHAtYmxvY2siPjxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWV4Y2xhbWF0aW9uLXNpZ24gdGV4dC1kYW5nZXIiPjwvc3Bhbj4gPHNwYW4gY2xhc3M9InRleHQtZGFuZ2VyIj5QbGVhc2Ugc2VsZWN0IHR3byB2ZXJzaW9ucyB0byB2aWV3IHRoZSBkaWZmZXJlbmNlcy48L3NwYW4+PC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tYmxvY2siPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJQRignY29tcGFyZVR3bycpLmhpZGUoKTtQRignYmxvY2tEYXRhc2V0Rm9ybScpLmhpZGUoKTsiIHR5cGU9ImJ1dHRvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xvc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj48L2Rpdj48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpjb21wYXJlVHdvX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIkRpYWxvZyIsImNvbXBhcmVUd28iLHtpZDoiZGF0YXNldEZvcm06Y29tcGFyZVR3byIsbW9kYWw6dHJ1ZX0pO30pOzwvc2NyaXB0PjxkaXYgaWQ9ImRhdGFzZXRGb3JtOmRldGFpbHNCbG9ja3MiIGNsYXNzPSJ1aS1kaWFsb2cgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwgdWktc2hhZG93IHVpLWhpZGRlbi1jb250YWluZXIgbGFyZ2VQb3BVcCI+PGRpdiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci10b3AiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpkZXRhaWxzQmxvY2tzX3RpdGxlIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlIj5WZXJzaW9uIERpZmZlcmVuY2VzIERldGFpbHM8L3NwYW4+PGEgaHJlZj0iIyIgY2xhc3M9InVpLWRpYWxvZy10aXRsZWJhci1pY29uIHVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSB1aS1jb3JuZXItYWxsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gY2xhc3M9InVpLWljb24gdWktaWNvbi1jbG9zZXRoaWNrIj48L3NwYW4+PC9hPjwvZGl2PjxkaXYgY2xhc3M9InVpLWRpYWxvZy1jb250ZW50IHVpLXdpZGdldC1jb250ZW50IiBpZD0iZGF0YXNldEZvcm06ZGV0YWlsc0Jsb2Nrc19jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0idmVyc2lvbi10aXRsZSIgY2xhc3M9Im1hcmdpbi1ib3R0b20taGFsZiI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InZlcnNpb24tZGV0YWlscy1ibG9jayIgY2xhc3M9IiBjbGVhcmZpeCBtYXJnaW4tYm90dG9tLWhhbGYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHVsbC1sZWZ0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDCoAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwdWxsLWxlZnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb246IDxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhc3QgVXBkYXRlZDogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InB1bGwtbGVmdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbjogPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFzdCBVcGRhdGVkOiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYnV0dG9uLWJsb2NrIG1hcmdpbi1ib3R0b20iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJQRignZGV0YWlsc0Jsb2NrcycpLmhpZGUoKTtQRignYmxvY2tEYXRhc2V0Rm9ybScpLmhpZGUoKTsiIHR5cGU9ImJ1dHRvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9uZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PjwvZGl2PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmRldGFpbHNCbG9ja3NfcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiRGlhbG9nIiwiZGV0YWlsc0Jsb2NrcyIse2lkOiJkYXRhc2V0Rm9ybTpkZXRhaWxzQmxvY2tzIixtb2RhbDp0cnVlfSk7fSk7PC9zY3JpcHQ+PGRpdiBpZD0iZGF0YXNldEZvcm06c2VsZWN0RmlsZXNGb3JSZXF1ZXN0QWNjZXNzIiBjbGFzcz0idWktZGlhbG9nIHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIHVpLXNoYWRvdyB1aS1oaWRkZW4tY29udGFpbmVyIHNtYWxsUG9wVXAiPjxkaXYgY2xhc3M9InVpLWRpYWxvZy10aXRsZWJhciB1aS13aWRnZXQtaGVhZGVyIHVpLWhlbHBlci1jbGVhcmZpeCB1aS1jb3JuZXItdG9wIj48c3BhbiBpZD0iZGF0YXNldEZvcm06c2VsZWN0RmlsZXNGb3JSZXF1ZXN0QWNjZXNzX3RpdGxlIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlIj5TZWxlY3QgRmlsZShzKTwvc3Bhbj48YSBocmVmPSIjIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyLWljb24gdWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIHVpLWNvcm5lci1hbGwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNsb3NldGhpY2siPjwvc3Bhbj48L2E+PC9kaXY+PGRpdiBjbGFzcz0idWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiIGlkPSJkYXRhc2V0Rm9ybTpzZWxlY3RGaWxlc0ZvclJlcXVlc3RBY2Nlc3NfY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LWRhbmdlciI+PHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZXhjbGFtYXRpb24tc2lnbiI+PC9zcGFuPiBQbGVhc2Ugc2VsZWN0IGEgZmlsZSBvciBmaWxlcyBmb3IgYWNjZXNzIHJlcXVlc3QuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tYmxvY2siPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJQRignc2VsZWN0RmlsZXNGb3JSZXF1ZXN0QWNjZXNzJykuaGlkZSgpO1BGKCdibG9ja0RhdGFzZXRGb3JtJykuaGlkZSgpOyIgdHlwZT0iYnV0dG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbG9zZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PjwvZGl2PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOnNlbGVjdEZpbGVzRm9yUmVxdWVzdEFjY2Vzc19zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJEaWFsb2ciLCJzZWxlY3RGaWxlc0ZvclJlcXVlc3RBY2Nlc3MiLHtpZDoiZGF0YXNldEZvcm06c2VsZWN0RmlsZXNGb3JSZXF1ZXN0QWNjZXNzIixtb2RhbDp0cnVlfSk7fSk7PC9zY3JpcHQ+PGRpdiBpZD0iZGF0YXNldEZvcm06c2VsZWN0RW1iYXJnb2VkRmlsZXNGb3JSZXF1ZXN0QWNjZXNzIiBjbGFzcz0idWktZGlhbG9nIHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIHVpLXNoYWRvdyB1aS1oaWRkZW4tY29udGFpbmVyIHNtYWxsUG9wVXAiPjxkaXYgY2xhc3M9InVpLWRpYWxvZy10aXRsZWJhciB1aS13aWRnZXQtaGVhZGVyIHVpLWhlbHBlci1jbGVhcmZpeCB1aS1jb3JuZXItdG9wIj48c3BhbiBpZD0iZGF0YXNldEZvcm06c2VsZWN0RW1iYXJnb2VkRmlsZXNGb3JSZXF1ZXN0QWNjZXNzX3RpdGxlIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlIj5TZWxlY3QgRmlsZShzKTwvc3Bhbj48YSBocmVmPSIjIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyLWljb24gdWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIHVpLWNvcm5lci1hbGwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNsb3NldGhpY2siPjwvc3Bhbj48L2E+PC9kaXY+PGRpdiBjbGFzcz0idWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiIGlkPSJkYXRhc2V0Rm9ybTpzZWxlY3RFbWJhcmdvZWRGaWxlc0ZvclJlcXVlc3RBY2Nlc3NfY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LWRhbmdlciI+PHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZXhjbGFtYXRpb24tc2lnbiI+PC9zcGFuPiBFbWJhcmdvZWQgZmlsZXMgY2Fubm90IGJlIGFjY2Vzc2VkLiBQbGVhc2Ugc2VsZWN0IGFuIHVuZW1iYXJnb2VkIGZpbGUgb3IgZmlsZXMgZm9yIHlvdXIgYWNjZXNzIHJlcXVlc3QuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tYmxvY2siPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJQRignc2VsZWN0RW1iYXJnb2VkRmlsZXNGb3JSZXF1ZXN0QWNjZXNzJykuaGlkZSgpO1BGKCdibG9ja0RhdGFzZXRGb3JtJykuaGlkZSgpOyIgdHlwZT0iYnV0dG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbG9zZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PjwvZGl2PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOnNlbGVjdEVtYmFyZ29lZEZpbGVzRm9yUmVxdWVzdEFjY2Vzc19zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJEaWFsb2ciLCJzZWxlY3RFbWJhcmdvZWRGaWxlc0ZvclJlcXVlc3RBY2Nlc3MiLHtpZDoiZGF0YXNldEZvcm06c2VsZWN0RW1iYXJnb2VkRmlsZXNGb3JSZXF1ZXN0QWNjZXNzIixtb2RhbDp0cnVlfSk7fSk7PC9zY3JpcHQ+PGRpdiBpZD0iZGF0YXNldEZvcm06ZmlsZVRhZ3NQb3B1cCIgY2xhc3M9InVpLWRpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1zaGFkb3cgdWktaGlkZGVuLWNvbnRhaW5lciBzbWFsbFBvcFVwIj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXIgdWktd2lkZ2V0LWhlYWRlciB1aS1oZWxwZXItY2xlYXJmaXggdWktY29ybmVyLXRvcCI+PHNwYW4gaWQ9ImRhdGFzZXRGb3JtOmZpbGVUYWdzUG9wdXBfdGl0bGUiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGUiPkVkaXQgVGFnczwvc3Bhbj48YSBocmVmPSIjIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyLWljb24gdWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIHVpLWNvcm5lci1hbGwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNsb3NldGhpY2siPjwvc3Bhbj48L2E+PC9kaXY+PGRpdiBjbGFzcz0idWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiIGlkPSJkYXRhc2V0Rm9ybTpmaWxlVGFnc1BvcHVwX2NvbnRlbnQiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpqX2lkdDIyMTgiPjwvc3Bhbj48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuZm9jdXMoJ2RhdGFzZXRGb3JtOmZpbGVUYWdzTWVudURTJyk7fSk7PC9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJoZWxwLWJsb2NrIj5TZWxlY3QgZXhpc3RpbmcgZmlsZSB0YWdzIG9yIGNyZWF0ZSBuZXcgdGFncyB0byBkZXNjcmliZSB5b3VyIGZpbGVzLiBFYWNoIGZpbGUgY2FuIGhhdmUgbW9yZSB0aGFuIG9uZSB0YWcuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tYmxvY2siPjxidXR0b24gaWQ9ImRhdGFzZXRGb3JtOmZpbGVUYWdzUG9wdXBTYXZlQnV0dG9uIiBuYW1lPSJkYXRhc2V0Rm9ybTpmaWxlVGFnc1BvcHVwU2F2ZUJ1dHRvbiIgY2xhc3M9InVpLWJ1dHRvbiB1aS13aWRnZXQgdWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItYWxsIHVpLWJ1dHRvbi10ZXh0LW9ubHkgYnRuIGJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJQcmltZUZhY2VzLmFiKHtzOiZxdW90O2RhdGFzZXRGb3JtOmZpbGVUYWdzUG9wdXBTYXZlQnV0dG9uJnF1b3Q7LGY6JnF1b3Q7ZGF0YXNldEZvcm0mcXVvdDssdTomcXVvdDtkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGUgZGF0YXNldEZvcm0mcXVvdDssb25jbzpmdW5jdGlvbih4aHIsc3RhdHVzLGFyZ3MsZGF0YSl7UEYoJ2ZpbGVUYWdzUG9wdXAnKS5oaWRlKCk7fX0pO3JldHVybiBmYWxzZTsiIHR5cGU9InN1Ym1pdCI+PHNwYW4gY2xhc3M9InVpLWJ1dHRvbi10ZXh0IHVpLWMiPlNhdmUgQ2hhbmdlczwvc3Bhbj48L2J1dHRvbj48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpmaWxlVGFnc1BvcHVwU2F2ZUJ1dHRvbl9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJDb21tYW5kQnV0dG9uIiwid2lkZ2V0X2RhdGFzZXRGb3JtX2ZpbGVUYWdzUG9wdXBTYXZlQnV0dG9uIix7aWQ6ImRhdGFzZXRGb3JtOmZpbGVUYWdzUG9wdXBTYXZlQnV0dG9uIn0pO30pOzwvc2NyaXB0PjxidXR0b24gaWQ9ImRhdGFzZXRGb3JtOmZpbGVUYWdzUG9wdXBDYW5jZWxCdXR0b24iIG5hbWU9ImRhdGFzZXRGb3JtOmZpbGVUYWdzUG9wdXBDYW5jZWxCdXR0b24iIGNsYXNzPSJ1aS1idXR0b24gdWktd2lkZ2V0IHVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLWFsbCB1aS1idXR0b24tdGV4dC1vbmx5IGJ0biBidG4tbGluayIgb25jbGljaz0iUHJpbWVGYWNlcy5iY24odGhpcyxldmVudCxbZnVuY3Rpb24oZXZlbnQpe1BGKCdmaWxlVGFnc1BvcHVwJykuaGlkZSgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQRignYmxvY2tEYXRhc2V0Rm9ybScpLmhpZGUoKTt9LGZ1bmN0aW9uKGV2ZW50KXtQcmltZUZhY2VzLmFiKHtzOiZxdW90O2RhdGFzZXRGb3JtOmZpbGVUYWdzUG9wdXBDYW5jZWxCdXR0b24mcXVvdDssZjomcXVvdDtkYXRhc2V0Rm9ybSZxdW90O30pO3JldHVybiBmYWxzZTt9XSk7IiB0eXBlPSJzdWJtaXQiPjxzcGFuIGNsYXNzPSJ1aS1idXR0b24tdGV4dCB1aS1jIj5DYW5jZWw8L3NwYW4+PC9idXR0b24+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06ZmlsZVRhZ3NQb3B1cENhbmNlbEJ1dHRvbl9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJDb21tYW5kQnV0dG9uIiwid2lkZ2V0X2RhdGFzZXRGb3JtX2ZpbGVUYWdzUG9wdXBDYW5jZWxCdXR0b24iLHtpZDoiZGF0YXNldEZvcm06ZmlsZVRhZ3NQb3B1cENhbmNlbEJ1dHRvbiJ9KTt9KTs8L3NjcmlwdD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9kaXY+PC9kaXY+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06ZmlsZVRhZ3NQb3B1cF9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJEaWFsb2ciLCJmaWxlVGFnc1BvcHVwIix7aWQ6ImRhdGFzZXRGb3JtOmZpbGVUYWdzUG9wdXAiLG1vZGFsOnRydWV9KTt9KTs8L3NjcmlwdD48ZGl2IGlkPSJkYXRhc2V0Rm9ybTphY2Nlc3NTaWduVXBMb2dJbiIgY2xhc3M9InVpLWRpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1zaGFkb3cgdWktaGlkZGVuLWNvbnRhaW5lciI+PGRpdiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci10b3AiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTphY2Nlc3NTaWduVXBMb2dJbl90aXRsZSIgY2xhc3M9InVpLWRpYWxvZy10aXRsZSI+UmVxdWVzdCBBY2Nlc3M8L3NwYW4+PGEgaHJlZj0iIyIgY2xhc3M9InVpLWRpYWxvZy10aXRsZWJhci1pY29uIHVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSB1aS1jb3JuZXItYWxsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gY2xhc3M9InVpLWljb24gdWktaWNvbi1jbG9zZXRoaWNrIj48L3NwYW4+PC9hPjwvZGl2PjxkaXYgY2xhc3M9InVpLWRpYWxvZy1jb250ZW50IHVpLXdpZGdldC1jb250ZW50IiBpZD0iZGF0YXNldEZvcm06YWNjZXNzU2lnblVwTG9nSW5fY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJoZWxwLWJsb2NrIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXdhcm5pbmctc2lnbiB0ZXh0LWRhbmdlciI+PC9zcGFuPsKgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC1kYW5nZXIiPllvdSBuZWVkIHRvIDxhIGhyZWY9Ii9kYXRhdmVyc2V1c2VyLnhodG1sP2VkaXRNb2RlPUNSRUFURSZyZWRpcmVjdFBhZ2U9JTJGZGF0YXNldC54aHRtbCUzRnBlcnNpc3RlbnRJZCUzRGRvaSUzQTEwLjc5MTAlMkZEVk4lMkZOSjdYU08iIHRhcmdldD0iX3NlbGYiIHRpdGxlPSJTaWduIFVwIGZvciBhIERhdGF2ZXJzZSBBY2NvdW50Ij5TaWduIFVwPC9hPiBvciA8YSBocmVmPSIvbG9naW5wYWdlLnhodG1sP3JlZGlyZWN0UGFnZT0lMkZkYXRhc2V0LnhodG1sJTNGcGVyc2lzdGVudElkJTNEZG9pJTNBMTAuNzkxMCUyRkRWTiUyRk5KN1hTTyIgdGFyZ2V0PSJfc2VsZiIgdGl0bGU9IkxvZyBpbnRvIHlvdXIgRGF0YXZlcnNlIEFjY291bnQiPkxvZyBJbjwvYT4gdG8gcmVxdWVzdCBhY2Nlc3MuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ibG9jayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiIG9uY2xpY2s9IlBGKCdhY2Nlc3NTaWduVXBMb2dJbl9wb3B1cCcpLmhpZGUoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEYoJ2Jsb2NrRGF0YXNldEZvcm0nKS5oaWRlKCk7IiB0eXBlPSJidXR0b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsb3NlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9kaXY+PC9kaXY+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06YWNjZXNzU2lnblVwTG9nSW5fcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiRGlhbG9nIiwiYWNjZXNzU2lnblVwTG9nSW5fcG9wdXAiLHtpZDoiZGF0YXNldEZvcm06YWNjZXNzU2lnblVwTG9nSW4iLG1vZGFsOnRydWV9KTt9KTs8L3NjcmlwdD48ZGl2IGlkPSJkYXRhc2V0Rm9ybTpkb3dubG9hZFBvcHVwIiBjbGFzcz0idWktZGlhbG9nIHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIHVpLXNoYWRvdyB1aS1oaWRkZW4tY29udGFpbmVyIGxhcmdlUG9wVXAiPjxkaXYgY2xhc3M9InVpLWRpYWxvZy10aXRsZWJhciB1aS13aWRnZXQtaGVhZGVyIHVpLWhlbHBlci1jbGVhcmZpeCB1aS1jb3JuZXItdG9wIj48c3BhbiBpZD0iZGF0YXNldEZvcm06ZG93bmxvYWRQb3B1cF90aXRsZSIgY2xhc3M9InVpLWRpYWxvZy10aXRsZSI+RGF0YXNldCBUZXJtczwvc3Bhbj48YSBocmVmPSIjIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyLWljb24gdWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIHVpLWNvcm5lci1hbGwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNsb3NldGhpY2siPjwvc3Bhbj48L2E+PC9kaXY+PGRpdiBjbGFzcz0idWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiIGlkPSJkYXRhc2V0Rm9ybTpkb3dubG9hZFBvcHVwX2NvbnRlbnQiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpqX2lkdDIyNTAiPjwvc3Bhbj48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuZm9jdXMobnVsbCwgJ2RhdGFzZXRGb3JtOmd1ZXN0Ym9va1VJRnJhZ21lbnQnKTt9KTs8L3NjcmlwdD4KICAgICAgICA8cCBjbGFzcz0iaGVscC1ibG9jayI+CiAgICAgICAgICAgIFRoaXMgZGF0YXNldCBpcyBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgZm9sbG93aW5nIHRlcm1zLiBQbGVhc2UgY29uZmlybSBhbmQvb3IgY29tcGxldGUgdGhlIGluZm9ybWF0aW9uIG5lZWRlZCBiZWxvdyBpbiBvcmRlciB0byBjb250aW51ZS4KICAgICAgICA8L3A+PGRpdiBpZD0iZGF0YXNldEZvcm06Z3Vlc3Rib29rTWVzc2FnZXMiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIgbWVzc2FnZVBhbmVsIj4KICAgICAgICAgICAgPC9kaXY+PC9kaXY+CiAgICAgICAgCiAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ob3Jpem9udGFsIHRlcm1zIj4KICAgICAgICAKICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj48bGFiZWwgZm9yPSJkYXRhc2V0Rm9ybTpmZExpY2Vuc2UiIGNsYXNzPSJjb2wtc20tMyBjb250cm9sLWxhYmVsIj4KICAgICAgICAgICAgICAgIExpY2Vuc2UvRGF0YSBVc2UgQWdyZWVtZW50IDwvbGFiZWw+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS05Ij4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJoZWxwLWJsb2NrIj5PdXIgPGEgaHJlZj0iaHR0cHM6Ly9kYXRhdmVyc2Uub3JnL2Jlc3QtcHJhY3RpY2VzL2RhdGF2ZXJzZS1jb21tdW5pdHktbm9ybXMiIHRpdGxlPSJEYXRhdmVyc2UgQ29tbXVuaXR5IE5vcm1zIC0gRGF0YXZlcnNlLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPkNvbW11bml0eSBOb3JtczwvYT4gYXMgd2VsbCBhcyBnb29kIHNjaWVudGlmaWMgcHJhY3RpY2VzIGV4cGVjdCB0aGF0IHByb3BlciBjcmVkaXQgaXMgZ2l2ZW4gdmlhIGNpdGF0aW9uLiBQbGVhc2UgdXNlIHRoZSBkYXRhIGNpdGF0aW9uIHNob3duIG9uIHRoZSBkYXRhc2V0IHBhZ2UuCiAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9saWNlbnNlYnV0dG9ucy5uZXQvcC96ZXJvLzEuMC84OHgzMS5wbmciIHRpdGxlPSJDcmVhdGl2ZSBDb21tb25zIENDMCAxLjAgVW5pdmVyc2FsIFB1YmxpYyBEb21haW4gRGVkaWNhdGlvbi4iIHN0eWxlPSJkaXNwbGF5OiBub25lIiBvbmxvYWQ9InRoaXMuc3R5bGUuZGlzcGxheT0naW5saW5lJyIgLz4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAiIHRpdGxlPSJDcmVhdGl2ZSBDb21tb25zIENDMCAxLjAgVW5pdmVyc2FsIFB1YmxpYyBEb21haW4gRGVkaWNhdGlvbi4iIHRhcmdldD0iX2JsYW5rIj5DQzAgMS4wCiAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tYmxvY2siPjxidXR0b24gaWQ9ImRhdGFzZXRGb3JtOmpfaWR0MjM1MiIgbmFtZT0iZGF0YXNldEZvcm06al9pZHQyMzUyIiBjbGFzcz0idWktYnV0dG9uIHVpLXdpZGdldCB1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwgdWktYnV0dG9uLXRleHQtb25seSBidG4gYnRuLWRlZmF1bHQiIG9uY2xpY2s9IlByaW1lRmFjZXMuYWIoe3M6JnF1b3Q7ZGF0YXNldEZvcm06al9pZHQyMzUyJnF1b3Q7LGY6JnF1b3Q7ZGF0YXNldEZvcm0mcXVvdDssdTomcXVvdDtkYXRhc2V0Rm9ybTpndWVzdGJvb2tVSUZyYWdtZW50JnF1b3Q7LHBhOlt7bmFtZTomcXVvdDtET19HQl9WQUxJREFUSU9OX2Rvd25sb2FkRGF0YXNldCZxdW90Oyx2YWx1ZTomcXVvdDt0cnVlJnF1b3Q7fV19KTtyZXR1cm4gZmFsc2U7IiB0eXBlPSJzdWJtaXQiPjxzcGFuIGNsYXNzPSJ1aS1idXR0b24tdGV4dCB1aS1jIj5BY2NlcHQ8L3NwYW4+PC9idXR0b24+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06al9pZHQyMzUyX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIkNvbW1hbmRCdXR0b24iLCJ3aWRnZXRfZGF0YXNldEZvcm1fal9pZHQyMzUyIix7aWQ6ImRhdGFzZXRGb3JtOmpfaWR0MjM1MiJ9KTt9KTs8L3NjcmlwdD48YnV0dG9uIG5hbWU9ImRhdGFzZXRGb3JtOmpfaWR0MjM2MCIgdmFsdWU9IiIgb25jbGljaz0iUEYoJ2Rvd25sb2FkUG9wdXAnKS5oaWRlKCk7UEYoJ2Jsb2NrRGF0YXNldEZvcm0nKS5oaWRlKCk7IiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWxpbmsiPgogICAgICAgICAgICAgICAgQ2FuY2VsCiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgIDwvZGl2PjwvZGl2PjwvZGl2PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmRvd25sb2FkUG9wdXBfcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiRGlhbG9nIiwiZG93bmxvYWRQb3B1cCIse2lkOiJkYXRhc2V0Rm9ybTpkb3dubG9hZFBvcHVwIixtb2RhbDp0cnVlfSk7fSk7PC9zY3JpcHQ+PGRpdiBpZD0iZGF0YXNldEZvcm06cHJldmlld0d1ZXN0Ym9vayIgY2xhc3M9InVpLWRpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1zaGFkb3cgdWktaGlkZGVuLWNvbnRhaW5lciBsYXJnZVBvcFVwIj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXIgdWktd2lkZ2V0LWhlYWRlciB1aS1oZWxwZXItY2xlYXJmaXggdWktY29ybmVyLXRvcCI+PHNwYW4gaWQ9ImRhdGFzZXRGb3JtOnByZXZpZXdHdWVzdGJvb2tfdGl0bGUiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGUiPlByZXZpZXcgR3Vlc3Rib29rPC9zcGFuPjxhIGhyZWY9IiMiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXItaWNvbiB1aS1kaWFsb2ctdGl0bGViYXItY2xvc2UgdWktY29ybmVyLWFsbCIgYXJpYS1sYWJlbD0iQ2xvc2UiPjxzcGFuIGNsYXNzPSJ1aS1pY29uIHVpLWljb24tY2xvc2V0aGljayI+PC9zcGFuPjwvYT48L2Rpdj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctY29udGVudCB1aS13aWRnZXQtY29udGVudCIgaWQ9ImRhdGFzZXRGb3JtOnByZXZpZXdHdWVzdGJvb2tfY29udGVudCI+CiAgICAKICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWhvcml6b250YWwiPgogICAgICAgICAgICA8cCBjbGFzcz0iaGVscC1ibG9jayI+CiAgICAgICAgICAgICAgICBVcG9uIGRvd25sb2FkaW5nIGZpbGVzIHRoZSBndWVzdGJvb2sgYXNrcyBmb3IgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4KICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iY29sLXNtLTMgY29udHJvbC1sYWJlbCI+CiAgICAgICAgICAgICAgICAgICAgR3Vlc3Rib29rIE5hbWUKICAgICAgICAgICAgICAgIDwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tOCI+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImZvcm0tY29udHJvbC1zdGF0aWMiPgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgogICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJjb2wtc20tMyBjb250cm9sLWxhYmVsIj4KICAgICAgICAgICAgICAgICAgICBDb2xsZWN0ZWQgRGF0YQogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXF1ZXN0aW9uLXNpZ24gdG9vbHRpcC1pY29uIiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9ImF1dG8gcmlnaHQiIGRhdGEtb3JpZ2luYWwtdGl0bGU9IlVzZXIgZGF0YSBjb2xsZWN0ZWQgYnkgdGhlIGd1ZXN0Ym9vay4iPjwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tOCI+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImZvcm0tY29udHJvbC1zdGF0aWMiPkFjY291bnQgSW5mb3JtYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tYmxvY2siPgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiIG9uY2xpY2s9IlBGKCd2aWV3R3Vlc3Rib29rJykuaGlkZSgpIiB0eXBlPSJidXR0b24iPgogICAgICAgICAgICAgICAgQ2xvc2UKICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgPC9kaXY+PC9kaXY+PC9kaXY+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06cHJldmlld0d1ZXN0Ym9va19zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJEaWFsb2ciLCJ2aWV3R3Vlc3Rib29rIix7aWQ6ImRhdGFzZXRGb3JtOnByZXZpZXdHdWVzdGJvb2siLG1vZGFsOnRydWV9KTt9KTs8L3NjcmlwdD48ZGl2IGlkPSJkYXRhc2V0Rm9ybTpkb3dubG9hZFBhY2thZ2VQb3B1cCIgY2xhc3M9InVpLWRpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1zaGFkb3cgdWktaGlkZGVuLWNvbnRhaW5lciBzbWFsbFBvcFVwIj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXIgdWktd2lkZ2V0LWhlYWRlciB1aS1oZWxwZXItY2xlYXJmaXggdWktY29ybmVyLXRvcCI+PHNwYW4gaWQ9ImRhdGFzZXRGb3JtOmRvd25sb2FkUGFja2FnZVBvcHVwX3RpdGxlIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlIj5QYWNrYWdlIEZpbGUgRG93bmxvYWQ8L3NwYW4+PGEgaHJlZj0iIyIgY2xhc3M9InVpLWRpYWxvZy10aXRsZWJhci1pY29uIHVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSB1aS1jb3JuZXItYWxsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gY2xhc3M9InVpLWljb24gdWktaWNvbi1jbG9zZXRoaWNrIj48L3NwYW4+PC9hPjwvZGl2PjxkaXYgY2xhc3M9InVpLWRpYWxvZy1jb250ZW50IHVpLXdpZGdldC1jb250ZW50IiBpZD0iZGF0YXNldEZvcm06ZG93bmxvYWRQYWNrYWdlUG9wdXBfY29udGVudCI+PGRpdiBpZD0iZGF0YXNldEZvcm06cGFja2FnZVBvcHVwRG93bmxvYWRJbmZvIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tMTIiPgogICAgICAgICAgICA8cCBjbGFzcz0iaGVscC1ibG9jayBuby1tYXJnaW4tdG9wIj5Vc2UgdGhlIERvd25sb2FkIFVSTCBpbiBhIFdnZXQgY29tbWFuZCBvciBhIGRvd25sb2FkIG1hbmFnZXIgdG8gZG93bmxvYWQgdGhpcyBwYWNrYWdlIGZpbGUuIERvd25sb2FkIHZpYSB3ZWIgYnJvd3NlciBpcyBub3QgcmVjb21tZW5kZWQuIDxhIGhyZWY9Imh0dHBzOi8vZ3VpZGVzLmRhdGF2ZXJzZS5vcmcvZW4vNS4xMi91c2VyL2ZpbmQtdXNlLWRhdGEuaHRtbCNkb3dubG9hZGluZy1hLWRhdGF2ZXJzZS1wYWNrYWdlLXZpYS11cmwiIHRpdGxlPSJVc2VyIEd1aWRlIC0gRG93bmxvYWRpbmcgYSBEYXRhdmVyc2UgUGFja2FnZSB2aWEgVVJMIiB0YXJnZXQ9Il9ibGFuayI+VXNlciBHdWlkZSAtIERvd25sb2FkaW5nIGEgRGF0YXZlcnNlIFBhY2thZ2UgdmlhIFVSTDwvYT4KICAgICAgICAgICAgPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS0xMiBtYXJnaW4tYm90dG9tIj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tMTIiPgogICAgICAgICAgICA8bGFiZWw+RG93bmxvYWQgVVJMPC9sYWJlbD4gCiAgICAgICAgICAgIDxwPjxjb2RlPmh0dHBzOi8vZGF0YXZlcnNlLmhhcnZhcmQuZWR1L2FwaS9hY2Nlc3MvZGF0YWZpbGUvPC9jb2RlPjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tMTIgYnV0dG9uLWJsb2NrIG1hcmdpbi10b3AiPjxidXR0b24gaWQ9ImRhdGFzZXRGb3JtOmRvd25sb2FkUGFja2FnZVBvcHVwQ2FuY2VsQnV0dG9uIiBuYW1lPSJkYXRhc2V0Rm9ybTpkb3dubG9hZFBhY2thZ2VQb3B1cENhbmNlbEJ1dHRvbiIgY2xhc3M9InVpLWJ1dHRvbiB1aS13aWRnZXQgdWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItYWxsIHVpLWJ1dHRvbi10ZXh0LW9ubHkgYnRuIGJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJQcmltZUZhY2VzLmJjbih0aGlzLGV2ZW50LFtmdW5jdGlvbihldmVudCl7UEYoJ2Rvd25sb2FkUGFja2FnZVBvcHVwJykuaGlkZSgpO30sZnVuY3Rpb24oZXZlbnQpe1ByaW1lRmFjZXMuYWIoe3M6JnF1b3Q7ZGF0YXNldEZvcm06ZG93bmxvYWRQYWNrYWdlUG9wdXBDYW5jZWxCdXR0b24mcXVvdDssZjomcXVvdDtkYXRhc2V0Rm9ybSZxdW90Oyx1OiZxdW90O2RhdGFzZXRGb3JtOmRvd25sb2FkUGFja2FnZVBvcHVwJnF1b3Q7fSk7cmV0dXJuIGZhbHNlO31dKTsiIHR5cGU9InN1Ym1pdCI+PHNwYW4gY2xhc3M9InVpLWJ1dHRvbi10ZXh0IHVpLWMiPkNsb3NlPC9zcGFuPjwvYnV0dG9uPjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmRvd25sb2FkUGFja2FnZVBvcHVwQ2FuY2VsQnV0dG9uX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIkNvbW1hbmRCdXR0b24iLCJ3aWRnZXRfZGF0YXNldEZvcm1fZG93bmxvYWRQYWNrYWdlUG9wdXBDYW5jZWxCdXR0b24iLHtpZDoiZGF0YXNldEZvcm06ZG93bmxvYWRQYWNrYWdlUG9wdXBDYW5jZWxCdXR0b24ifSk7fSk7PC9zY3JpcHQ+CiAgICAgICAgPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06ZG93bmxvYWRQYWNrYWdlUG9wdXBfcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiRGlhbG9nIiwiZG93bmxvYWRQYWNrYWdlUG9wdXAiLHtpZDoiZGF0YXNldEZvcm06ZG93bmxvYWRQYWNrYWdlUG9wdXAiLG1vZGFsOnRydWV9KTt9KTs8L3NjcmlwdD48ZGl2IGlkPSJkYXRhc2V0Rm9ybTpyZXF1ZXN0QWNjZXNzUG9wdXAiIGNsYXNzPSJ1aS1kaWFsb2cgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwgdWktc2hhZG93IHVpLWhpZGRlbi1jb250YWluZXIgbGFyZ2VQb3BVcCI+PGRpdiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci10b3AiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpyZXF1ZXN0QWNjZXNzUG9wdXBfdGl0bGUiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGUiPlJlcXVlc3QgQWNjZXNzPC9zcGFuPjxhIGhyZWY9IiMiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXItaWNvbiB1aS1kaWFsb2ctdGl0bGViYXItY2xvc2UgdWktY29ybmVyLWFsbCIgYXJpYS1sYWJlbD0iQ2xvc2UiPjxzcGFuIGNsYXNzPSJ1aS1pY29uIHVpLWljb24tY2xvc2V0aGljayI+PC9zcGFuPjwvYT48L2Rpdj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctY29udGVudCB1aS13aWRnZXQtY29udGVudCIgaWQ9ImRhdGFzZXRGb3JtOnJlcXVlc3RBY2Nlc3NQb3B1cF9jb250ZW50Ij4KICAgICAgICA8cCBjbGFzcz0iaGVscC1ibG9jayI+CiAgICAgICAgICAgIFBsZWFzZSBjb25maXJtIGFuZC9vciBjb21wbGV0ZSB0aGUgaW5mb3JtYXRpb24gbmVlZGVkIGJlbG93IGluIG9yZGVyIHRvIHJlcXVlc3QgYWNjZXNzIHRvIGZpbGVzIGluIHRoaXMgZGF0YXNldC4KICAgICAgICA8L3A+CiAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ob3Jpem9udGFsIj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tYmxvY2siPjxidXR0b24gaWQ9ImRhdGFzZXRGb3JtOmpfaWR0MjQ2NyIgbmFtZT0iZGF0YXNldEZvcm06al9pZHQyNDY3IiBjbGFzcz0idWktYnV0dG9uIHVpLXdpZGdldCB1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwgdWktYnV0dG9uLXRleHQtb25seSBidG4gYnRuLWRlZmF1bHQiIG9uY2xpY2s9IlByaW1lRmFjZXMuYWIoe3M6JnF1b3Q7ZGF0YXNldEZvcm06al9pZHQyNDY3JnF1b3Q7LGY6JnF1b3Q7ZGF0YXNldEZvcm0mcXVvdDssdTomcXVvdDtAKFtpZCQ9cmVxdWVzdEFjY2Vzc0NvbnNvbGlkYXRlZF0pIEAoW2lkJD1yZXF1ZXN0UGFuZWxdKSBAKFtpZCQ9bWVzc2FnZVBhbmVsXSkgQChbaWQkPWZpbGVzVGFibGVdKSZxdW90OyxvbmNvOmZ1bmN0aW9uKHhocixzdGF0dXMsYXJncyxkYXRhKXtQRigncmVxdWVzdEFjY2Vzc1BvcHVwJykuaGlkZSgpOzt9fSk7cmV0dXJuIGZhbHNlOyIgdHlwZT0ic3VibWl0Ij48c3BhbiBjbGFzcz0idWktYnV0dG9uLXRleHQgdWktYyI+QWNjZXB0PC9zcGFuPjwvYnV0dG9uPjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmpfaWR0MjQ2N19zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJDb21tYW5kQnV0dG9uIiwid2lkZ2V0X2RhdGFzZXRGb3JtX2pfaWR0MjQ2NyIse2lkOiJkYXRhc2V0Rm9ybTpqX2lkdDI0NjcifSk7fSk7PC9zY3JpcHQ+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tbGluayIgb25jbGljaz0iUEYoJ3JlcXVlc3RBY2Nlc3NQb3B1cCcpLmhpZGUoKTtQRignYmxvY2tEYXRhc2V0Rm9ybScpLmhpZGUoKTsiIHR5cGU9ImJ1dHRvbiI+CiAgICAgICAgICAgICAgICBDYW5jZWwKICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgPC9kaXY+PC9kaXY+PC9kaXY+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06cmVxdWVzdEFjY2Vzc1BvcHVwX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIkRpYWxvZyIsInJlcXVlc3RBY2Nlc3NQb3B1cCIse2lkOiJkYXRhc2V0Rm9ybTpyZXF1ZXN0QWNjZXNzUG9wdXAiLG1vZGFsOnRydWV9KTt9KTs8L3NjcmlwdD48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpqX2lkdDI0ODUiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+bGlua0RhdGFzZXRDb21tYW5kID0gZnVuY3Rpb24oKSB7cmV0dXJuIFByaW1lRmFjZXMuYWIoe3M6ImRhdGFzZXRGb3JtOmpfaWR0MjQ4NSIsZjoiZGF0YXNldEZvcm0iLHU6Im1lc3NhZ2VQYW5lbCBAKFtpZCQ9TWVzc2FnZXNdKSIsb25jbzpmdW5jdGlvbih4aHIsc3RhdHVzLGFyZ3MsZGF0YSl7UEYoJ2xpbmtEYXRhc2V0Rm9ybScpLmhpZGUoKTs7fSxwYTphcmd1bWVudHNbMF19KTt9PC9zY3JpcHQ+PGRpdiBpZD0iZGF0YXNldEZvcm06Y29tcHV0ZUJhdGNoTGlzdFBvcHVwIiBjbGFzcz0idWktZGlhbG9nIHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIHVpLXNoYWRvdyB1aS1oaWRkZW4tY29udGFpbmVyIj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXIgdWktd2lkZ2V0LWhlYWRlciB1aS1oZWxwZXItY2xlYXJmaXggdWktY29ybmVyLXRvcCI+PHNwYW4gaWQ9ImRhdGFzZXRGb3JtOmNvbXB1dGVCYXRjaExpc3RQb3B1cF90aXRsZSIgY2xhc3M9InVpLWRpYWxvZy10aXRsZSI+Q29tcHV0ZSBCYXRjaDwvc3Bhbj48YSBocmVmPSIjIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyLWljb24gdWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIHVpLWNvcm5lci1hbGwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNsb3NldGhpY2siPjwvc3Bhbj48L2E+PC9kaXY+PGRpdiBjbGFzcz0idWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiIGlkPSJkYXRhc2V0Rm9ybTpjb21wdXRlQmF0Y2hMaXN0UG9wdXBfY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtcmlnaHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXJlbW92ZSI+PC9zcGFuPkNsZWFyIEJhdGNoPGJ1dHRvbiBpZD0iZGF0YXNldEZvcm06al9pZHQyNDg3IiBuYW1lPSJkYXRhc2V0Rm9ybTpqX2lkdDI0ODciIGNsYXNzPSIgYnRuIGJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJQcmltZUZhY2VzLmFiKHtzOiZxdW90O2RhdGFzZXRGb3JtOmpfaWR0MjQ4NyZxdW90OyxmOiZxdW90O2RhdGFzZXRGb3JtJnF1b3Q7LHU6JnF1b3Q7ZGF0YXNldEZvcm0gbWVzc2FnZVBhbmVsJnF1b3Q7fSk7cmV0dXJuIGZhbHNlOyIgdHlwZT0ic3VibWl0Ij48c3BhbiBjbGFzcz0idWktYnV0dG9uLXRleHQgdWktYyI+dWktYnV0dG9uPC9zcGFuPjwvYnV0dG9uPjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmpfaWR0MjQ4N19zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJDb21tYW5kQnV0dG9uIiwid2lkZ2V0X2RhdGFzZXRGb3JtX2pfaWR0MjQ4NyIse2lkOiJkYXRhc2V0Rm9ybTpqX2lkdDI0ODcifSk7fSk7PC9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pjx0YWJsZSBpZD0iZGF0YXNldEZvcm06Y29tcHV0ZUJhdGNoIiBjbGFzcz0idGFibGUgdGFibGUtc3RyaXBlZCI+Cjx0aGVhZD4KPHRyPgo8dGggc2NvcGU9ImNvbCI+RGF0YXNldDwvdGg+Cjx0aCBzY29wZT0iY29sIj5QZXJzaXN0ZW50IElkZW50aWZpZXI8L3RoPgo8dGggc2NvcGU9ImNvbCI+Q2hhbmdlIENvbXB1dGUgQmF0Y2g8L3RoPgo8L3RyPgo8L3RoZWFkPgo8dGJvZHk+Cjx0cj48dGQ+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48L3RyPjwvdGJvZHk+CjwvdGFibGU+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tYmxvY2siPjxhIGhyZWY9Imh0dHBzOi8vZGF0YXZlcnNlLmhhcnZhcmQuZWR1Lztqc2Vzc2lvbmlkPWEyZWQxZGE3MjQwNzc0OGViYzQ3N2FiYWM0NmEiIG9uY2xpY2s9IlBGKCdjb21wdXRlQmF0Y2hMaXN0UG9wdXAnKS5oaWRlKCkiIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0Ij5Db21wdXRlIEJhdGNoPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1saW5rIiBvbmNsaWNrPSJQRignY29tcHV0ZUJhdGNoTGlzdFBvcHVwJykuaGlkZSgpOyIgdHlwZT0iYnV0dG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW5jZWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj48L2Rpdj48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpjb21wdXRlQmF0Y2hMaXN0UG9wdXBfcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiRGlhbG9nIiwiY29tcHV0ZUJhdGNoTGlzdFBvcHVwIix7aWQ6ImRhdGFzZXRGb3JtOmNvbXB1dGVCYXRjaExpc3RQb3B1cCIsbW9kYWw6dHJ1ZX0pO30pOzwvc2NyaXB0PjxkaXYgaWQ9ImRhdGFzZXRGb3JtOmlucmV2aWV3IiBjbGFzcz0idWktZGlhbG9nIHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIHVpLXNoYWRvdyB1aS1oaWRkZW4tY29udGFpbmVyIj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXIgdWktd2lkZ2V0LWhlYWRlciB1aS1oZWxwZXItY2xlYXJmaXggdWktY29ybmVyLXRvcCI+PHNwYW4gaWQ9ImRhdGFzZXRGb3JtOmlucmV2aWV3X3RpdGxlIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlIj5TdWJtaXQgZm9yIFJldmlldzwvc3Bhbj48YSBocmVmPSIjIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyLWljb24gdWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIHVpLWNvcm5lci1hbGwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNsb3NldGhpY2siPjwvc3Bhbj48L2E+PC9kaXY+PGRpdiBjbGFzcz0idWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiIGlkPSJkYXRhc2V0Rm9ybTppbnJldmlld19jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtd2FybmluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi13YXJuaW5nLXNpZ24iPjwvc3Bhbj4gWW91IHdpbGwgbm90IGJlIGFibGUgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoaXMgZGF0YXNldCB3aGlsZSBpdCBpcyBpbiByZXZpZXcuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYnV0dG9uLWJsb2NrIj48YnV0dG9uIGlkPSJkYXRhc2V0Rm9ybTpqX2lkdDI1MDYiIG5hbWU9ImRhdGFzZXRGb3JtOmpfaWR0MjUwNiIgY2xhc3M9InVpLWJ1dHRvbiB1aS13aWRnZXQgdWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItYWxsIHVpLWJ1dHRvbi10ZXh0LW9ubHkgYnRuIGJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJQcmltZUZhY2VzLmJjbih0aGlzLGV2ZW50LFtmdW5jdGlvbihldmVudCl7UEYoJ2lucmV2aWV3JykuaGlkZSgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBGKCdibG9ja0RhdGFzZXRGb3JtJykuaGlkZSgpO30sZnVuY3Rpb24oZXZlbnQpe1ByaW1lRmFjZXMuYWIoe3M6JnF1b3Q7ZGF0YXNldEZvcm06al9pZHQyNTA2JnF1b3Q7LGY6JnF1b3Q7ZGF0YXNldEZvcm0mcXVvdDt9KTtyZXR1cm4gZmFsc2U7fV0pOyIgdHlwZT0ic3VibWl0Ij48c3BhbiBjbGFzcz0idWktYnV0dG9uLXRleHQgdWktYyI+U3VibWl0PC9zcGFuPjwvYnV0dG9uPjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmpfaWR0MjUwNl9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJDb21tYW5kQnV0dG9uIiwid2lkZ2V0X2RhdGFzZXRGb3JtX2pfaWR0MjUwNiIse2lkOiJkYXRhc2V0Rm9ybTpqX2lkdDI1MDYifSk7fSk7PC9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWxpbmsiIG9uY2xpY2s9IlBGKCdpbnJldmlldycpLmhpZGUoKTtQRignYmxvY2tEYXRhc2V0Rm9ybScpLmhpZGUoKTsiIHR5cGU9ImJ1dHRvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FuY2VsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9kaXY+PC9kaXY+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06aW5yZXZpZXdfcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiRGlhbG9nIiwiaW5yZXZpZXciLHtpZDoiZGF0YXNldEZvcm06aW5yZXZpZXciLG1vZGFsOnRydWV9KTt9KTs8L3NjcmlwdD48ZGl2IGlkPSJkYXRhc2V0Rm9ybTpwdWJsaXNoRGF0YXNldCIgY2xhc3M9InVpLWRpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1zaGFkb3cgdWktaGlkZGVuLWNvbnRhaW5lciI+PGRpdiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci10b3AiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpwdWJsaXNoRGF0YXNldF90aXRsZSIgY2xhc3M9InVpLWRpYWxvZy10aXRsZSI+UHVibGlzaCBEYXRhc2V0PC9zcGFuPjxhIGhyZWY9IiMiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXItaWNvbiB1aS1kaWFsb2ctdGl0bGViYXItY2xvc2UgdWktY29ybmVyLWFsbCIgYXJpYS1sYWJlbD0iQ2xvc2UiPjxzcGFuIGNsYXNzPSJ1aS1pY29uIHVpLWljb24tY2xvc2V0aGljayI+PC9zcGFuPjwvYT48L2Rpdj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctY29udGVudCB1aS13aWRnZXQtY29udGVudCIgaWQ9ImRhdGFzZXRGb3JtOnB1Ymxpc2hEYXRhc2V0X2NvbnRlbnQiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpqX2lkdDI1MTkiPjwvc3Bhbj48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuZm9jdXMoJ2RhdGFzZXRGb3JtOm9wdGlvbnMnKTt9KTs8L3NjcmlwdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LXdhcm5pbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXdhcm5pbmctc2lnbiI+PC9zcGFuPiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVwdWJsaXNoIHRoaXMgZGF0YXNldD8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD48ZGl2IGNsYXNzPSJ3ZWxsIHRlcm1zLWFncmVlbWVudC1ibG9jayI+QnkgZGVmYXVsdCBkYXRhc2V0cyBhcmUgcHVibGlzaGVkIHdpdGggdGhlIENDMC3igJxQdWJsaWMgRG9tYWluIERlZGljYXRpb27igJ0gd2FpdmVyLiBMZWFybiBtb3JlIGFib3V0IHRoZSBDQzAgd2FpdmVyIDxhIHRhcmdldD1fYmxhbmsgaHJlZj0naHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvY2hvb3NlL3plcm8vJz5oZXJlPC9hPi4gPGJyPjxicj4gVG8gcHVibGlzaCB3aXRoIGN1c3RvbSBUZXJtcyBvZiBVc2UsIGNsaWNrIHRoZSBDYW5jZWwgYnV0dG9uIGFuZCBnbyB0byB0aGUgVGVybXMgdGFiIGZvciB0aGlzIGRhdGFzZXQuPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImhlbHAtYmxvY2siPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgaWYgdGhpcyBpcyBhIG1pbm9yIG9yIG1ham9yIHZlcnNpb24gdXBkYXRlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD48dGFibGUgaWQ9ImRhdGFzZXRGb3JtOm9wdGlvbnMiIHJvbGU9InByZXNlbnRhdGlvbiIgY2xhc3M9InVpLXNlbGVjdG9uZXJhZGlvIHVpLXdpZGdldCI+PHRyPjx0ZD48ZGl2IGNsYXNzPSJ1aS1yYWRpb2J1dHRvbiB1aS13aWRnZXQiPjxkaXYgY2xhc3M9InVpLWhlbHBlci1oaWRkZW4tYWNjZXNzaWJsZSI+PGlucHV0IGlkPSJkYXRhc2V0Rm9ybTpvcHRpb25zOjAiIG5hbWU9ImRhdGFzZXRGb3JtOm9wdGlvbnMiIHR5cGU9InJhZGlvIiB2YWx1ZT0iMSIgY2hlY2tlZD0iY2hlY2tlZCIgLz48L2Rpdj48ZGl2IGNsYXNzPSJ1aS1yYWRpb2J1dHRvbi1ib3ggdWktd2lkZ2V0IHVpLWNvcm5lci1hbGwgdWktc3RhdGUtZGVmYXVsdCB1aS1zdGF0ZS1hY3RpdmUiPjxzcGFuIGNsYXNzPSJ1aS1yYWRpb2J1dHRvbi1pY29uIHVpLWljb24gdWktaWNvbi1idWxsZXQgdWktYyI+PC9zcGFuPjwvZGl2PjwvZGl2PjxsYWJlbCBmb3I9ImRhdGFzZXRGb3JtOm9wdGlvbnM6MCI+TWlub3IgUmVsZWFzZSAoMS4xKTwvbGFiZWw+PC90ZD48dGQ+PGRpdiBjbGFzcz0idWktcmFkaW9idXR0b24gdWktd2lkZ2V0Ij48ZGl2IGNsYXNzPSJ1aS1oZWxwZXItaGlkZGVuLWFjY2Vzc2libGUiPjxpbnB1dCBpZD0iZGF0YXNldEZvcm06b3B0aW9uczoxIiBuYW1lPSJkYXRhc2V0Rm9ybTpvcHRpb25zIiB0eXBlPSJyYWRpbyIgdmFsdWU9IjIiIC8+PC9kaXY+PGRpdiBjbGFzcz0idWktcmFkaW9idXR0b24tYm94IHVpLXdpZGdldCB1aS1jb3JuZXItYWxsIHVpLXN0YXRlLWRlZmF1bHQiPjxzcGFuIGNsYXNzPSJ1aS1yYWRpb2J1dHRvbi1pY29uIHVpLWljb24gdWktaWNvbi1ibGFuayB1aS1jIj48L3NwYW4+PC9kaXY+PC9kaXY+PGxhYmVsIGZvcj0iZGF0YXNldEZvcm06b3B0aW9uczoxIj5NYWpvciBSZWxlYXNlICgyLjApPC9sYWJlbD48L3RkPjwvdHI+PC90YWJsZT48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpvcHRpb25zX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIlNlbGVjdE9uZVJhZGlvIiwid2lkZ2V0X2RhdGFzZXRGb3JtX29wdGlvbnMiLHtpZDoiZGF0YXNldEZvcm06b3B0aW9ucyIsdW5zZWxlY3RhYmxlOmZhbHNlfSk7fSk7PC9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYnV0dG9uLWJsb2NrIj48YnV0dG9uIGlkPSJkYXRhc2V0Rm9ybTpqX2lkdDI1MzciIG5hbWU9ImRhdGFzZXRGb3JtOmpfaWR0MjUzNyIgY2xhc3M9InVpLWJ1dHRvbiB1aS13aWRnZXQgdWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItYWxsIHVpLWJ1dHRvbi10ZXh0LW9ubHkgYnRuIGJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJQcmltZUZhY2VzLmJjbih0aGlzLGV2ZW50LFtmdW5jdGlvbihldmVudCl7UEYoJ3B1Ymxpc2hEYXRhc2V0JykuaGlkZSgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBGKCdibG9ja0RhdGFzZXRGb3JtJykuaGlkZSgpO30sZnVuY3Rpb24oZXZlbnQpe1ByaW1lRmFjZXMuYWIoe3M6JnF1b3Q7ZGF0YXNldEZvcm06al9pZHQyNTM3JnF1b3Q7LGY6JnF1b3Q7ZGF0YXNldEZvcm0mcXVvdDt9KTtyZXR1cm4gZmFsc2U7fV0pOyIgdHlwZT0ic3VibWl0Ij48c3BhbiBjbGFzcz0idWktYnV0dG9uLXRleHQgdWktYyI+Q29udGludWU8L3NwYW4+PC9idXR0b24+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06al9pZHQyNTM3X3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIkNvbW1hbmRCdXR0b24iLCJ3aWRnZXRfZGF0YXNldEZvcm1fal9pZHQyNTM3Iix7aWQ6ImRhdGFzZXRGb3JtOmpfaWR0MjUzNyJ9KTt9KTs8L3NjcmlwdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tbGluayIgb25jbGljaz0iUEYoJ3B1Ymxpc2hEYXRhc2V0JykuaGlkZSgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQRignYmxvY2tEYXRhc2V0Rm9ybScpLmhpZGUoKTsiIHR5cGU9ImJ1dHRvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FuY2VsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9kaXY+PC9kaXY+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06cHVibGlzaERhdGFzZXRfcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiRGlhbG9nIiwicHVibGlzaERhdGFzZXQiLHtpZDoiZGF0YXNldEZvcm06cHVibGlzaERhdGFzZXQiLG1vZGFsOnRydWUsd2lkdGg6IjcwJSJ9KTt9KTs8L3NjcmlwdD48ZGl2IGlkPSJkYXRhc2V0Rm9ybTptYXlOb3RSZWxlYXNlIiBjbGFzcz0idWktZGlhbG9nIHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIHVpLXNoYWRvdyB1aS1oaWRkZW4tY29udGFpbmVyIj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXIgdWktd2lkZ2V0LWhlYWRlciB1aS1oZWxwZXItY2xlYXJmaXggdWktY29ybmVyLXRvcCI+PHNwYW4gaWQ9ImRhdGFzZXRGb3JtOm1heU5vdFJlbGVhc2VfdGl0bGUiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGUiPlB1Ymxpc2ggRGF0YXNldDwvc3Bhbj48YSBocmVmPSIjIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyLWljb24gdWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIHVpLWNvcm5lci1hbGwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNsb3NldGhpY2siPjwvc3Bhbj48L2E+PC9kaXY+PGRpdiBjbGFzcz0idWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiIGlkPSJkYXRhc2V0Rm9ybTptYXlOb3RSZWxlYXNlX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC1kYW5nZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZXhjbGFtYXRpb24tc2lnbiI+PC9zcGFuPlRoaXMgZGF0YXNldCBjYW5ub3QgYmUgcHVibGlzaGVkIHVudGlsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvZGF0YXZlcnNlLnhodG1sP2FsaWFzPWhhcnZhcmQiIHRpdGxlPSJIYXJ2YXJkIERhdGF2ZXJzZSI+SGFydmFyZCBEYXRhdmVyc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiAgaXMgcHVibGlzaGVkIGJ5IGl0cyBhZG1pbmlzdHJhdG9yLgogICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ibG9jayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiIG9uY2xpY2s9IlBGKCdtYXlOb3RSZWxlYXNlJykuaGlkZSgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQRignYmxvY2tEYXRhc2V0Rm9ybScpLmhpZGUoKTsiIHR5cGU9ImJ1dHRvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xvc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj48L2Rpdj48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTptYXlOb3RSZWxlYXNlX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIkRpYWxvZyIsIm1heU5vdFJlbGVhc2UiLHtpZDoiZGF0YXNldEZvcm06bWF5Tm90UmVsZWFzZSIsbW9kYWw6dHJ1ZX0pO30pOzwvc2NyaXB0PjxkaXYgaWQ9ImRhdGFzZXRGb3JtOnNlbmRCYWNrVG9Db250cmlidXRvciIgY2xhc3M9InVpLWRpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1zaGFkb3cgdWktaGlkZGVuLWNvbnRhaW5lciI+PGRpdiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci10b3AiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpzZW5kQmFja1RvQ29udHJpYnV0b3JfdGl0bGUiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGUiPlJldHVybiB0byBBdXRob3I8L3NwYW4+PGEgaHJlZj0iIyIgY2xhc3M9InVpLWRpYWxvZy10aXRsZWJhci1pY29uIHVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSB1aS1jb3JuZXItYWxsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gY2xhc3M9InVpLWljb24gdWktaWNvbi1jbG9zZXRoaWNrIj48L3NwYW4+PC9hPjwvZGl2PjxkaXYgY2xhc3M9InVpLWRpYWxvZy1jb250ZW50IHVpLXdpZGdldC1jb250ZW50IiBpZD0iZGF0YXNldEZvcm06c2VuZEJhY2tUb0NvbnRyaWJ1dG9yX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC13YXJuaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXdhcm5pbmctc2lnbiI+PC9zcGFuPiBSZXR1cm4gdGhpcyBkYXRhc2V0IHRvIGNvbnRyaWJ1dG9yIGZvciBtb2RpZmljYXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ibG9jayI+PGJ1dHRvbiBpZD0iZGF0YXNldEZvcm06al9pZHQyNTU4IiBuYW1lPSJkYXRhc2V0Rm9ybTpqX2lkdDI1NTgiIGNsYXNzPSJ1aS1idXR0b24gdWktd2lkZ2V0IHVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLWFsbCB1aS1idXR0b24tdGV4dC1vbmx5IGJ0biBidG4tZGVmYXVsdCIgb25jbGljaz0iUHJpbWVGYWNlcy5iY24odGhpcyxldmVudCxbZnVuY3Rpb24oZXZlbnQpe1BGKCdzZW5kQmFja1RvQ29udHJpYnV0b3InKS5oaWRlKCl9LGZ1bmN0aW9uKGV2ZW50KXtQcmltZUZhY2VzLmFiKHtzOiZxdW90O2RhdGFzZXRGb3JtOmpfaWR0MjU1OCZxdW90OyxmOiZxdW90O2RhdGFzZXRGb3JtJnF1b3Q7fSk7cmV0dXJuIGZhbHNlO31dKTsiIHR5cGU9InN1Ym1pdCI+PHNwYW4gY2xhc3M9InVpLWJ1dHRvbi10ZXh0IHVpLWMiPkNvbnRpbnVlPC9zcGFuPjwvYnV0dG9uPjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmpfaWR0MjU1OF9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJDb21tYW5kQnV0dG9uIiwid2lkZ2V0X2RhdGFzZXRGb3JtX2pfaWR0MjU1OCIse2lkOiJkYXRhc2V0Rm9ybTpqX2lkdDI1NTgifSk7fSk7PC9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWxpbmsiIG9uY2xpY2s9IlBGKCdzZW5kQmFja1RvQ29udHJpYnV0b3InKS5oaWRlKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBGKCdibG9ja0RhdGFzZXRGb3JtJykuaGlkZSgpOyIgdHlwZT0iYnV0dG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW5jZWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj48L2Rpdj48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpzZW5kQmFja1RvQ29udHJpYnV0b3JfcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiRGlhbG9nIiwic2VuZEJhY2tUb0NvbnRyaWJ1dG9yIix7aWQ6ImRhdGFzZXRGb3JtOnNlbmRCYWNrVG9Db250cmlidXRvciIsbW9kYWw6dHJ1ZX0pO30pOzwvc2NyaXB0PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmpfaWR0MjU2MCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5yZXR1cm5Ub0F1dGhvckNvbW1hbmQgPSBmdW5jdGlvbigpIHtyZXR1cm4gUHJpbWVGYWNlcy5hYih7czoiZGF0YXNldEZvcm06al9pZHQyNTYwIixmOiJkYXRhc2V0Rm9ybSIscGE6YXJndW1lbnRzWzBdfSk7fTwvc2NyaXB0PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmpfaWR0MjU2MSIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5saW5rRWRpdFRlcm1zID0gZnVuY3Rpb24oKSB7cmV0dXJuIFByaW1lRmFjZXMuYWIoe3M6ImRhdGFzZXRGb3JtOmpfaWR0MjU2MSIsZjoiZGF0YXNldEZvcm0iLHU6ImRhdGFzZXRGb3JtIGRhdGFzZXRGb3JtIG1lc3NhZ2VQYW5lbCIscGE6YXJndW1lbnRzWzBdfSk7fTwvc2NyaXB0PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmpfaWR0MjU2MiIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5lZGl0TWVkYXRkYXRhQ29tbWFuZCA9IGZ1bmN0aW9uKCkge3JldHVybiBQcmltZUZhY2VzLmFiKHtzOiJkYXRhc2V0Rm9ybTpqX2lkdDI1NjIiLGY6ImRhdGFzZXRGb3JtIix1OiJkYXRhc2V0Rm9ybSBkYXRhc2V0Rm9ybSBtZXNzYWdlUGFuZWwiLHBhOmFyZ3VtZW50c1swXX0pO308L3NjcmlwdD48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpqX2lkdDI1NjMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+ZGF0YXNldFNhdmVDb21tYW5kID0gZnVuY3Rpb24oKSB7cmV0dXJuIFByaW1lRmFjZXMuYWIoe3M6ImRhdGFzZXRGb3JtOmpfaWR0MjU2MyIsZjoiZGF0YXNldEZvcm0iLHU6ImRhdGFzZXRGb3JtIG1lc3NhZ2VQYW5lbCIscGE6YXJndW1lbnRzWzBdfSk7fTwvc2NyaXB0PjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImphdmF4LmZhY2VzLlZpZXdTdGF0ZSIgaWQ9ImpfaWQxOmphdmF4LmZhY2VzLlZpZXdTdGF0ZToyIiB2YWx1ZT0iMTY0MTUwODY5MzI3NTE2ODkxOi0yNTQ1MDI2MTM3MTMwOTQ3NzAzIiBhdXRvY29tcGxldGU9Im9mZiIgLz4KPC9mb3JtPgogICAgICAgICAgICAgICAgPHNjcmlwdD4KICAgICAgICAgICAgICAgICAgICAvLzwhW0NEQVRBWwogICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcG9wb3ZlckhUTUwoJ0FsbG93ZWQgSFRNTCBUYWdzJywgJyZsdDthJmd0OywgJmx0O2ImZ3Q7LCAmbHQ7YmxvY2txdW90ZSZndDssICZsdDticiZndDssICZsdDtjb2RlJmd0OywgJmx0O2RlbCZndDssICZsdDtkZCZndDssICZsdDtkbCZndDssICZsdDtkdCZndDssICZsdDtlbSZndDssICZsdDtociZndDssICZsdDtoMSZndDstJmx0O2gzJmd0OywgJmx0O2kmZ3Q7LCAmbHQ7aW1nJmd0OywgJmx0O2tiZCZndDssICZsdDtsaSZndDssICZsdDtvbCZndDssICZsdDtwJmd0OywgJmx0O3ByZSZndDssICZsdDtzJmd0OywgJmx0O3N1cCZndDssICZsdDtzdWImZ3Q7LCAmbHQ7c3Ryb25nJmd0OywgJmx0O3N0cmlrZSZndDssICZsdDt1Jmd0OywgJmx0O3VsJmd0OycpOwogICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5RGVzY1RydW5jYXRpb24oKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBzdW1tYXJ5RGVzY1RydW5jYXRpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRydW5jYXRlIHN1bW1hcnkgZGVzY3JpcHRpb24sIGNvbnRlbnRUcnVuY2F0ZSBmdW5jdGlvbiBpbiBkdl9yZWJpbmRfYm9vdHN0cmFwX3VpLmpzCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFkZCBzdW1tYXJ5IGRlc2Mgcm93IGlkIHRvIHBhc3MgYXMgc2VsZWN0b3IgcGFyYW0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRlc2NJZCA9ICdkc0Rlc2NyaXB0aW9uJzsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWRkIG1ldGFkYXRhIGR5bmFtaWMgbGFiZWwgdGV4dCwgdG9vbHRpcCB0ZXh0IGZyb20gYnVuZGxlIGFzIHBhcmFtCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0cnVuY01vcmVCdG4gPSAnUmVhZCBmdWxsIERlc2NyaXB0aW9uIFsrXSc7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0cnVuY01vcmVUaXAgPSAnQ2xpY2sgdG8gcmVhZCB0aGUgZnVsbCBEZXNjcmlwdGlvbi4nOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHJ1bmNMZXNzQnRuID0gJ0NvbGxhcHNlIERlc2NyaXB0aW9uIFsrXSc7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0cnVuY0xlc3NUaXAgPSAnQ2xpY2sgdG8gY29sbGFwc2UgdGhlIERlc2NyaXB0aW9uLic7CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAvLyBwYXNzIGJ1bmRsZSB0ZXh0IHZhcmlhYmxzIGFzIHBhcmFtcyB0byBmdW5jdGlvbgogICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50VHJ1bmNhdGUoZGVzY0lkLCB0cnVuY01vcmVCdG4sIHRydW5jTW9yZVRpcCwgdHJ1bmNMZXNzQnRuLCB0cnVuY0xlc3NUaXApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBvcGVuRGlhbG9nKCkgewogICAgICAgICAgICAgICAgICAgICAgICBQRignZGV0YWlscycpLnNob3coKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gb3BlbkNvbXBhcmVUd28oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFBGKCdjb21wYXJlVHdvJykuc2hvdygpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlZGl0VGVybXMoKXsgIAogICAgICAgICAgICAgICAgICAgICAgICBsaW5rRWRpdFRlcm1zKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGVkaXRNZXRhZGF0YSgpeyAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbGlkVE9BID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRhdGFzZXRGb3JtOnZhbGlkVGVybXNvZkFjY2VzcyIpLnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsaWRUT0EgPT09ICdmYWxzZScpeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBGKCdibG9ja0RhdGFzZXRGb3JtJykuc2hvdygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgUEYoJ2FjY2Vzc1BvcHVwJykuc2hvdygpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdE1lZGF0ZGF0YUNvbW1hbmQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdGVzdENoZWNrQm94ZXMoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb3VudCA9IFBGKCd2ZXJzaW9uc1RhYmxlJykuZ2V0U2VsZWN0ZWRSb3dzQ291bnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50ICE9PSAyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQRignY29tcGFyZVR3bycpLnNob3coKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJ2J1dHRvbltpZCQ9ImNvbXBhcmVWZXJzaW9ucyJdJykudHJpZ2dlcignY2xpY2snKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0RmlsZXNTZWxlY3RlZCgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvdW50ID0gUEYoJ2ZpbGVzVGFibGUnKS5nZXRTZWxlY3RlZFJvd3NDb3VudCgpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoY291bnQgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgUEYoJ3NlbGVjdEZpbGVzJykuc2hvdygpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdGVzdFRlcm1zT2ZBY2Nlc3MoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWxpZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkYXRhc2V0Rm9ybTp2YWxpZFRlcm1zb2ZBY2Nlc3MiKS52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbGlkID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgUEYoJ2FjY2Vzc1BvcHVwJykuc2hvdygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdXBkYXRlVGVtcGxhdGUoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICQoJ2J1dHRvbltpZCQ9InVwZGF0ZVRlbXBsYXRlIl0nKS50cmlnZ2VyKCdjbGljaycpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB1cGRhdGVPd25lckRhdGF2ZXJzZSgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJCgnYnV0dG9uW2lkJD0idXBkYXRlT3duZXJEYXRhdmVyc2UiXScpLnRyaWdnZXIoJ2NsaWNrJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHNob3dQb3B1cCgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG91dGNvbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGF0YXNldEZvcm06dmFsaWRhdGVGaWxlc091dGNvbWUiKS52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG91dGNvbWUgPT09J01peGVkJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQRignZG93bmxvYWRNaXhlZCcpLnNob3coKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAob3V0Y29tZSA9PT0nRmFpbEVtcHR5Jyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQRignc2VsZWN0RmlsZXNGb3JEb3dubG9hZCcpLnNob3coKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAob3V0Y29tZSA9PT0nRmFpbFNpemUnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBGKCdkb3dubG9hZFRvb0xhcmdlJykuc2hvdygpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvdXRjb21lID09PSdGYWlsUmVzdHJpY3RlZCcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgUEYoJ2Rvd25sb2FkSW52YWxpZCcpLnNob3coKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAob3V0Y29tZSA9PT0nR3Vlc3Rib29rUmVxdWlyZWQnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBGKCdkb3dubG9hZFBvcHVwJykuc2hvdygpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3RUT0FEYXRhc2V0UGFnZSgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRlcm1zb2ZBY2Nlc3NIaWRkZW4sIGZpbGVBY2Nlc3NSZXF1ZXN0SGlkZGVuOwogICAgICAgICAgICAgICAgICAgICAgICB0cnl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtc29mQWNjZXNzSGlkZGVuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRhdGFzZXRGb3JtOnRhYlZpZXc6dGVybXNvZkFjY2Vzc0hpZGRlbkxUIikudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlQWNjZXNzUmVxdWVzdEhpZGRlbiAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGF0YXNldEZvcm06dGFiVmlldzpmaWxlQWNjZXNzUmVxdWVzdEhpZGRlbkxUIikudmFsdWU7ICAKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZXJyb3IpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy90ZXJtcyBub3QgcHJlc2VudCBzbyBzYXZlLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQRignYmxvY2tEYXRhc2V0Rm9ybScpLnNob3coKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFzZXRTYXZlQ29tbWFuZCgpOyAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJ2ZhbHNlJyA9PT0gJ3RydWUnICYmIGZpbGVBY2Nlc3NSZXF1ZXN0SGlkZGVuID09PSAnZmFsc2UnICYmIHRlcm1zb2ZBY2Nlc3NIaWRkZW4gPT09ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vTm90IGNvbXBsaWFudCBzaG93IGVycm9yIGtlZXAgcGFnZSBvcGVuLi4uCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQRignYmxvY2tEYXRhc2V0Rm9ybScpLnNob3coKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFzZXRTYXZlQ29tbWFuZCgpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgLy9dXT4KICAgICAgICAgICAgICAgIDwvc2NyaXB0PgogICAgICAgIDwvZGl2PgogICAgPGZvb3Rlcj4KICAgICAgICA8ZGl2IGlkPSJkdmZvb3RlciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPjxkaXYgY2xhc3M9ImNvbC1zbS04IHNtYWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHA+Q29weXJpZ2h0ICYjMTY5OyAyMDIyLCBUaGUgUHJlc2lkZW50ICYjMzg7IEZlbGxvd3Mgb2YgSGFydmFyZCBDb2xsZWdlwqB8wqAgPGEgaHJlZj0iaHR0cHM6Ly9zdXBwb3J0LmRhdGF2ZXJzZS5oYXJ2YXJkLmVkdS9oYXJ2YXJkLWRhdGF2ZXJzZS1wcml2YWN5LXBvbGljeSIgcmVsPSJub29wZW5lciIgdGFyZ2V0PSJfYmxhbmsiPlByaXZhY3kgUG9saWN5PC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTQgdGV4dC1yaWdodCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBvd2VyZWRieWxvZ28iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+UG93ZXJlZCBieTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9kYXRhdmVyc2Uub3JnLyIgdGl0bGU9IlRoZSBEYXRhdmVyc2UgUHJvamVjdCIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPjxpbWcgc3JjPSIvcmVzb3VyY2VzL2ltYWdlcy9kYXRhdmVyc2VfcHJvamVjdF9sb2dvLnN2ZyIgd2lkdGg9IjExOCIgaGVpZ2h0PSI0MCIgb25lcnJvcj0idGhpcy5zcmM9Jy9yZXNvdXJjZXMvaW1hZ2VzL2RhdGF2ZXJzZXByb2plY3RfbG9nby5wbmcnIiBhbHQ9IlRoZSBEYXRhdmVyc2UgUHJvamVjdCBsb2dvIiAvPjwvYT48c3BhbiBjbGFzcz0idmVyc2lvbiI+di4gNS4xMiBidWlsZCBwaXJhdGUtKGV5ZSktcGF0Y2g8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PjxzY3JpcHQ+CiAgLy88IVtDREFUQVsKICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbiAoKSB7CiAgICAkKCIjZm9vdGVyID4gZGl2LmNvbnRhaW5lciA+IGRpdi5yb3cgPiBkaXYuY29sLXNtLTguc21hbGwgPiBwIikuYXBwZW5kKCImIzE2MDt8JiMxNjA7IDxhIGhyZWY9XCJodHRwczovL3d3dy5oYXJ2YXJkLmVkdS9jb3B5cmlnaHQtaXNzdWVcIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lclwiPlJlcG9ydCBDb3B5cmlnaHQgSW5mcmluZ2VtZW50PC9hPiAmIzE2MDt8JiMxNjA7IDxhIGhyZWY9XCJodHRwczovL2FjY2Vzc2liaWxpdHkuaHVpdC5oYXJ2YXJkLmVkdS9kaWdpdGFsLWFjY2Vzc2liaWxpdHktcG9saWN5XCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXJcIj5BY2Nlc3NpYmlsaXR5PC9hPiIpOwogIH0pOwogIC8vXV0+Cjwvc2NyaXB0PgoKPHN0eWxlPgojZmVlZGJhY2tUYWIge3Bvc2l0aW9uOmZpeGVkOyBib3R0b206MDsgcmlnaHQ6NTBweDt9CiNmZWVkYmFja1RhYiBhLmJ0bi1mZWVkYmFjayB7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowO30KLmJ0bi1mZWVkYmFjayB7YmFja2dyb3VuZC1jb2xvcjojQzU1QjI4OyBib3JkZXItY29sb3I6I0M1NUIyODsgY29sb3I6I2ZmZjt9Ci5idG4tZmVlZGJhY2s6aG92ZXIsIC5idG4tZmVlZGJhY2s6Zm9jdXMsCi5idG4tZmVlZGJhY2s6YWN0aXZlLCAuYnRuLWZlZWRiYWNrLmFjdGl2ZSB7YmFja2dyb3VuZC1jb2xvcjojYjA1MTI0OyBib3JkZXItY29sb3I6ICM5YjQ3MWY7IGNvbG9yOiNmZmY7fQo8L3N0eWxlPgoKPGRpdiBpZD0iZmVlZGJhY2tUYWIiPgogICAgPGEgY2xhc3M9ImJ0biBidG4tZmVlZGJhY2sgYm9vdHN0cmFwLWJ1dHRvbi10b29sdGlwIiBocmVmPSJodHRwczovL2dvby5nbC9mb3Jtcy9wN3V1M0dmaVdZU2xKcnNpMSIgcm9sZT0iYnV0dG9uIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciIgIGFyaWEtbGFiZWw9IkhlbHAgaW1wcm92ZSBEYXRhdmVyc2UhIiBkYXRhLW9yaWdpbmFsLXRpdGxlPSJIZWxwIGltcHJvdmUgRGF0YXZlcnNlISI+CiAgICAgICAgRmVlZGJhY2sKICAgIDwvYT4KPC9kaXY+CgogICAgPC9mb290ZXI+PGRpdiBpZD0iYWpheFN0YXR1c1BhbmVsIj48ZGl2IGlkPSJhamF4U3RhdHVzUGFuZWxfc3RhcnQiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPjxpbWcgc3JjPSIvcmVzb3VyY2VzL2ltYWdlcy9hamF4LWxvYWRpbmcuZ2lmO2pzZXNzaW9uaWQ9YTJlZDFkYTcyNDA3NzQ4ZWJjNDc3YWJhYzQ2YSIgYWx0PSJMb2FkaW5nLi4uIiAvPjwvZGl2PjwvZGl2PjxzY3JpcHQgaWQ9ImFqYXhTdGF0dXNQYW5lbF9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJBamF4U3RhdHVzIiwid2lkZ2V0X2FqYXhTdGF0dXNQYW5lbCIse2lkOiJhamF4U3RhdHVzUGFuZWwiLGRlbGF5OjB9KTt9KTs8L3NjcmlwdD48ZGl2IGlkPSJjb250YWN0RGlhbG9nIiBjbGFzcz0idWktZGlhbG9nIHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIHVpLXNoYWRvdyB1aS1oaWRkZW4tY29udGFpbmVyIj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXIgdWktd2lkZ2V0LWhlYWRlciB1aS1oZWxwZXItY2xlYXJmaXggdWktY29ybmVyLXRvcCI+PHNwYW4gaWQ9ImNvbnRhY3REaWFsb2dfdGl0bGUiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGUiPkNvbnRhY3QgSGFydmFyZCBEYXRhdmVyc2UgU3VwcG9ydDwvc3Bhbj48YSBocmVmPSIjIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyLWljb24gdWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIHVpLWNvcm5lci1hbGwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNsb3NldGhpY2siPjwvc3Bhbj48L2E+PC9kaXY+PGRpdiBjbGFzcz0idWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiIGlkPSJjb250YWN0RGlhbG9nX2NvbnRlbnQiPjxkaXYgaWQ9ImpfaWR0MjU5MiI+Cjxmb3JtIGlkPSJlbWFpbEZvcm0iIG5hbWU9ImVtYWlsRm9ybSIgbWV0aG9kPSJwb3N0IiBhY3Rpb249Ii9kYXRhc2V0LnhodG1sO2pzZXNzaW9uaWQ9YTJlZDFkYTcyNDA3NzQ4ZWJjNDc3YWJhYzQ2YT9wZXJzaXN0ZW50SWQ9ZG9pJTNBMTAuNzkxMCUyRkRWTiUyRk5KN1hTTyIgY2xhc3M9ImZvcm0taG9yaXpvbnRhbCIgZW5jdHlwZT0iYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZW1haWxGb3JtIiB2YWx1ZT0iZW1haWxGb3JtIiAvPgo8c3BhbiBpZD0iZW1haWxGb3JtOmpfaWR0MjU5MyI+PC9zcGFuPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5mb2N1cyhudWxsLCAnY29udGFjdERpYWxvZycpO30pOzwvc2NyaXB0PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJtZXNzYWdlVG8iIGNsYXNzPSJjb2wtc20tMyBjb250cm9sLWxhYmVsIj5UbzwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTkiPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBpZD0ibWVzc2FnZVRvIiBjbGFzcz0iZm9ybS1jb250cm9sLXN0YXRpYyI+SGFydmFyZCBEYXRhdmVyc2UgU3VwcG9ydDwvcD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+PGxhYmVsIGZvcj0iZW1haWxGb3JtOnVzZXJFbWFpbCIgY2xhc3M9ImNvbC1zbS0zIGNvbnRyb2wtbGFiZWwiPkZyb20gPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tYXN0ZXJpc2sgdGV4dC1kYW5nZXIiIHRpdGxlPSJSZXF1aXJlZCBmaWVsZCI+PC9zcGFuPjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS05Ij48aW5wdXQgaWQ9ImVtYWlsRm9ybTp1c2VyRW1haWwiIG5hbWU9ImVtYWlsRm9ybTp1c2VyRW1haWwiIHR5cGU9InRleHQiIHZhbHVlPSIiIGNsYXNzPSJ1aS1pbnB1dGZpZWxkIHVpLWlucHV0dGV4dCB1aS13aWRnZXQgdWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItYWxsIGZvcm0tY29udHJvbCIgc2l6ZT0iMzAiIC8+PHNjcmlwdCBpZD0iZW1haWxGb3JtOnVzZXJFbWFpbF9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJJbnB1dFRleHQiLCJ3aWRnZXRfZW1haWxGb3JtX3VzZXJFbWFpbCIse2lkOiJlbWFpbEZvcm06dXNlckVtYWlsIn0pO30pOzwvc2NyaXB0PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+PGxhYmVsIGZvcj0iZW1haWxGb3JtOm1lc3NhZ2VTdWJqZWN0IiBjbGFzcz0iY29sLXNtLTMgY29udHJvbC1sYWJlbCI+U3ViamVjdCA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1hc3RlcmlzayB0ZXh0LWRhbmdlciIgdGl0bGU9IlJlcXVpcmVkIGZpZWxkIj48L3NwYW4+PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tOSI+PGlucHV0IGlkPSJlbWFpbEZvcm06bWVzc2FnZVN1YmplY3QiIG5hbWU9ImVtYWlsRm9ybTptZXNzYWdlU3ViamVjdCIgdHlwZT0idGV4dCIgdmFsdWU9IiIgY2xhc3M9InVpLWlucHV0ZmllbGQgdWktaW5wdXR0ZXh0IHVpLXdpZGdldCB1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwgZm9ybS1jb250cm9sIiAvPjxzY3JpcHQgaWQ9ImVtYWlsRm9ybTptZXNzYWdlU3ViamVjdF9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJJbnB1dFRleHQiLCJ3aWRnZXRfZW1haWxGb3JtX21lc3NhZ2VTdWJqZWN0Iix7aWQ6ImVtYWlsRm9ybTptZXNzYWdlU3ViamVjdCJ9KTt9KTs8L3NjcmlwdD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PiAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj48bGFiZWwgZm9yPSJlbWFpbEZvcm06dXNlck1lc3NhZ2UiIGNsYXNzPSJjb2wtc20tMyBjb250cm9sLWxhYmVsIj5NZXNzYWdlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWFzdGVyaXNrIHRleHQtZGFuZ2VyIiB0aXRsZT0iUmVxdWlyZWQgZmllbGQiPjwvc3Bhbj48L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS05Ij48dGV4dGFyZWEgaWQ9ImVtYWlsRm9ybTp1c2VyTWVzc2FnZSIgbmFtZT0iZW1haWxGb3JtOnVzZXJNZXNzYWdlIiBjbGFzcz0idWktaW5wdXRmaWVsZCB1aS1pbnB1dHRleHRhcmVhIHVpLXdpZGdldCB1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwgZm9ybS1jb250cm9sIiBjb2xzPSIyMCIgcm93cz0iMTAiIHRpdGxlPSJNZXNzYWdlIiBtYXhsZW5ndGg9IjIxNDc0ODM2NDciPjwvdGV4dGFyZWE+PHNjcmlwdCBpZD0iZW1haWxGb3JtOnVzZXJNZXNzYWdlX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIklucHV0VGV4dGFyZWEiLCJ3aWRnZXRfZW1haWxGb3JtX3VzZXJNZXNzYWdlIix7aWQ6ImVtYWlsRm9ybTp1c2VyTWVzc2FnZSIsYXV0b1Jlc2l6ZTpmYWxzZX0pO30pOzwvc2NyaXB0PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS1vZmZzZXQtMyBjb2wtc20tOSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxzcGFuIGNsYXNzPSJoaWdobGlnaHRCb2xkIj5QbGVhc2UgZmlsbCB0aGlzIG91dCB0byBwcm92ZSB5b3UgYXJlIG5vdCBhIHJvYm90Ljwvc3Bhbj4gPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tYXN0ZXJpc2sgdGV4dC1kYW5nZXIiIHRpdGxlPSJSZXF1aXJlZCBmaWVsZCI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9ImVtYWlsRm9ybTptZXNzYWdlU3VtIj4gKyAgPSAKICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD48aW5wdXQgaWQ9ImVtYWlsRm9ybTptZXNzYWdlU3VtIiBuYW1lPSJlbWFpbEZvcm06bWVzc2FnZVN1bSIgdHlwZT0idGV4dCIgY2xhc3M9InVpLWlucHV0ZmllbGQgdWktaW5wdXR0ZXh0IHVpLXdpZGdldCB1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwgIiBzaXplPSI0IiB0aXRsZT0iSHVtYW4gQWNjZXNzIFZhbGlkYXRpb24gQW5zd2VyIiAvPjxzY3JpcHQgaWQ9ImVtYWlsRm9ybTptZXNzYWdlU3VtX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIklucHV0VGV4dCIsIndpZGdldF9lbWFpbEZvcm1fbWVzc2FnZVN1bSIse2lkOiJlbWFpbEZvcm06bWVzc2FnZVN1bSJ9KTt9KTs8L3NjcmlwdD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tYmxvY2siPjxidXR0b24gaWQ9ImVtYWlsRm9ybTpqX2lkdDI2MjEiIG5hbWU9ImVtYWlsRm9ybTpqX2lkdDI2MjEiIGNsYXNzPSJ1aS1idXR0b24gdWktd2lkZ2V0IHVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLWFsbCB1aS1idXR0b24tdGV4dC1vbmx5IGJ0biBidG4tZGVmYXVsdCIgb25jbGljaz0iUHJpbWVGYWNlcy5hYih7czomcXVvdDtlbWFpbEZvcm06al9pZHQyNjIxJnF1b3Q7LGY6JnF1b3Q7ZW1haWxGb3JtJnF1b3Q7LHU6JnF1b3Q7ZW1haWxGb3JtJnF1b3Q7LG9uY286ZnVuY3Rpb24oeGhyLHN0YXR1cyxhcmdzLGRhdGEpe2lmIChhcmdzICZhbXA7JmFtcDsgIWFyZ3MudmFsaWRhdGlvbkZhaWxlZCkgUEYoJ2NvbnRhY3RGb3JtJykuaGlkZSgpOzt9LHBhOlt7bmFtZTomcXVvdDtET19WQUxJREFUSU9OJnF1b3Q7LHZhbHVlOiZxdW90O3RydWUmcXVvdDt9XSxmcDomcXVvdDtqX2lkdDI1OTImcXVvdDt9KTtyZXR1cm4gZmFsc2U7IiB0eXBlPSJzdWJtaXQiPjxzcGFuIGNsYXNzPSJ1aS1idXR0b24tdGV4dCB1aS1jIj5TZW5kIE1lc3NhZ2U8L3NwYW4+PC9idXR0b24+PHNjcmlwdCBpZD0iZW1haWxGb3JtOmpfaWR0MjYyMV9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJDb21tYW5kQnV0dG9uIiwid2lkZ2V0X2VtYWlsRm9ybV9qX2lkdDI2MjEiLHtpZDoiZW1haWxGb3JtOmpfaWR0MjYyMSJ9KTt9KTs8L3NjcmlwdD4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWxpbmsiIG9uY2xpY2s9IlBGKCdjb250YWN0Rm9ybScpLmhpZGUoKSIgdHlwZT0iYnV0dG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgQ2FuY2VsCiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICA8L2Rpdj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJqYXZheC5mYWNlcy5WaWV3U3RhdGUiIGlkPSJqX2lkMTpqYXZheC5mYWNlcy5WaWV3U3RhdGU6MyIgdmFsdWU9IjE2NDE1MDg2OTMyNzUxNjg5MTotMjU0NTAyNjEzNzEzMDk0NzcwMyIgYXV0b2NvbXBsZXRlPSJvZmYiIC8+CjwvZm9ybT48L2Rpdj48L2Rpdj48L2Rpdj48c2NyaXB0IGlkPSJjb250YWN0RGlhbG9nX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIkRpYWxvZyIsImNvbnRhY3RGb3JtIix7aWQ6ImNvbnRhY3REaWFsb2ciLG1vZGFsOnRydWV9KTt9KTs8L3NjcmlwdD4KICAgICAgICA8c2NyaXB0IHNyYz0iL2phdmF4LmZhY2VzLnJlc291cmNlL2pzL2R2X3JlYmluZF9ib290c3RyYXBfdWkuanMueGh0bWw7anNlc3Npb25pZD1hMmVkMWRhNzI0MDc3NDhlYmM0NzdhYmFjNDZhP3ZlcnNpb249NS4xMiI+PC9zY3JpcHQ+CiAgICAgICAgPHNjcmlwdCBzcmM9Ii9qYXZheC5mYWNlcy5yZXNvdXJjZS9icy9qcy9ib290c3RyYXAubWluLmpzLnhodG1sO2pzZXNzaW9uaWQ9YTJlZDFkYTcyNDA3NzQ4ZWJjNDc3YWJhYzQ2YT92ZXJzaW9uPTUuMTIiPjwvc2NyaXB0PgogICAgICAgIDxzY3JpcHQgZGVmZXI9ImRlZmVyIiBzcmM9Ii9qYXZheC5mYWNlcy5yZXNvdXJjZS9qcy9pZS1jb21wYXQuanMueGh0bWw7anNlc3Npb25pZD1hMmVkMWRhNzI0MDc3NDhlYmM0NzdhYmFjNDZhP3ZlcnNpb249NS4xMiI+PC9zY3JpcHQ+CiAgICAgICAgPHNjcmlwdCBkZWZlcj0iZGVmZXIiIHNyYz0iL2phdmF4LmZhY2VzLnJlc291cmNlL2pzL293bC5jYXJvdXNlbC5qcy54aHRtbDtqc2Vzc2lvbmlkPWEyZWQxZGE3MjQwNzc0OGViYzQ3N2FiYWM0NmE/dmVyc2lvbj01LjEyIj48L3NjcmlwdD4KICAgICAgICA8c2NyaXB0IGRlZmVyPSJkZWZlciIgc3JjPSIvamF2YXguZmFjZXMucmVzb3VyY2UvanMvanF1ZXJ5Lm1hdGNoSGVpZ2h0LmpzLnhodG1sO2pzZXNzaW9uaWQ9YTJlZDFkYTcyNDA3NzQ4ZWJjNDc3YWJhYzQ2YT92ZXJzaW9uPTUuMTIiPjwvc2NyaXB0PgogICAgICAgIDxzY3JpcHQgc3JjPSIvamF2YXguZmFjZXMucmVzb3VyY2UvanMvanF1ZXJ5LnNoYXJycmUuanMueGh0bWw7anNlc3Npb25pZD1hMmVkMWRhNzI0MDc3NDhlYmM0NzdhYmFjNDZhP3ZlcnNpb249NS4xMiI+PC9zY3JpcHQ+CiAgICAgICAgPHNjcmlwdCBzcmM9Ii9qYXZheC5mYWNlcy5yZXNvdXJjZS9qcy9jbGlwYm9hcmQubWluLmpzLnhodG1sO2pzZXNzaW9uaWQ9YTJlZDFkYTcyNDA3NzQ4ZWJjNDc3YWJhYzQ2YT92ZXJzaW9uPTUuMTIiPjwvc2NyaXB0PsKgCiAgICAgICAgCiAgICAgICAgPHNjcmlwdD4KICAgICAgICAgICAgLy88IVtDREFUQVsKICAgICAgICAgICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgLy8gTmF2YmFyIFNlYXJjaCBUb2dnbGUKICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsICcjbmF2YmFyLXNlYXJjaC10b2dnbGUnLCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAgICAgICAgICQodGhpcykucGFyZW50KCJsaSIpLmhpZGUoKTsKICAgICAgICAgICAgICAgICAgICAkKCJmb3JtLm5hdmJhci1mb3JtW3JvbGU9J3NlYXJjaCddIikuc2hvdygpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAkKCdib2R5JykuY2xpY2soZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoISQoZS50YXJnZXQpLmNsb3Nlc3QoImZvcm0ubmF2YmFyLWZvcm1bcm9sZT0nc2VhcmNoJ10iKS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJCgiZm9ybS5uYXZiYXItZm9ybVtyb2xlPSdzZWFyY2gnXSIpLmhpZGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgJCgiI25hdmJhci1zZWFyY2gtdG9nZ2xlIikucGFyZW50KCJsaSIpLnNob3coKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBmdW5jdGlvbiBjbGlja1N1cHBvcnRMaW5rKCkgewogICAgICAgICAgICAgICAgJCgiW2lkJD0naGVhZGVyU3VwcG9ydExpbmsnXSIpLmNsaWNrKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy9dXT4KICAgICAgICA8L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgaWQ9ImpfaWR0MjYyNSI+YmluZF9ic3VpX2NvbXBvbmVudHMoKTs8L3NjcmlwdD48L2JvZHk+CjwvaHRtbD4=
39
+ PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnID8+CjwhRE9DVFlQRSBodG1sPgo8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+PGhlYWQgaWQ9ImpfaWR0MTkiPjwhLS0gR2xvYmFsIHNpdGUgdGFnIChndGFnLmpzKSAtIEdvb2dsZSBBbmFseXRpY3MgLS0+CjxzY3JpcHQgYXN5bmM9ImFzeW5jIiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZXRhZ21hbmFnZXIuY29tL2d0YWcvanM/aWQ9VUEtNjE3NTMzMzQtMSI+PC9zY3JpcHQ+CjxzY3JpcHQ+CiAgLy88IVtDREFUQVsKICB3aW5kb3cuZGF0YUxheWVyID0gd2luZG93LmRhdGFMYXllciB8fCBbXTsKICBmdW5jdGlvbiBndGFnKCl7ZGF0YUxheWVyLnB1c2goYXJndW1lbnRzKTt9CiAgZ3RhZygnanMnLCBuZXcgRGF0ZSgpKTsgZ3RhZygnY29uZmlnJywgJ1VBLTYxNzUzMzM0LTEnKTsKCiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBlbmFibGVBbmFseXRpY3NFdmVudENhcHR1cmUsIGZhbHNlKTsKCiAgZnVuY3Rpb24gZW5hYmxlQW5hbHl0aWNzRXZlbnRDYXB0dXJlKCkgewogICAgLy8gRG93bmxvYWQgYnV0dG9uCiAgICAkKGRvY3VtZW50KS5vbigiY2xpY2siLCAiLmJ0bi1kb3dubG9hZCwgLmJ0bi1kb3dubG9hZC5kcm9wZG93bi10b2dnbGUgKyB1bC5kcm9wZG93bi1tZW51IGxpIGEiLCBmdW5jdGlvbigpIHsKICAgICAgdmFyIGNhdGVnb3J5ID0gc3RyaXBTaXplKCQodGhpcykudGV4dCgpKTsKICAgICAgdmFyIGxhYmVsID0gZ2V0RmlsZUlkKCQodGhpcykpOwogICAgICBndGFnKCdldmVudCcsICdEb3dubG9hZCcseydldmVudF9jYXRlZ29yeScgOiBjYXRlZ29yeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXZlbnRfbGFiZWwnIDogbGFiZWx9KTsKICAgIH0pOwoKICAgIC8vIFJlcXVlc3QgQWNjZXNzIGJ1dHRvbgogICAgJChkb2N1bWVudCkub24oImNsaWNrIiwgIi5idG4tcmVxdWVzdCIsIGZ1bmN0aW9uKCkgewogICAgICB2YXIgY2F0ZWdvcnkgPSAkKHRoaXMpLnRleHQoKTsKICAgICAgdmFyIGxhYmVsID0gZ2V0RmlsZUlkKCQodGhpcykpOwogICAgICBndGFnKCdldmVudCcsICdSZXF1ZXN0IEFjY2VzcycsIHsnZXZlbnRfY2F0ZWdvcnknIDogY2F0ZWdvcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXZlbnRfbGFiZWwnIDogbGFiZWx9KTsKICAgIH0pOwoKICAgIC8vIEV4cGxvcmUgYnV0dG9uCiAgICAkKGRvY3VtZW50KS5vbigiY2xpY2siLCAiLmJ0bi1leHBsb3JlLCAuYnRuLWV4cGxvcmUuZHJvcGRvd24tdG9nZ2xlICsgdWwuZHJvcGRvd24tbWVudSBsaSBhIiwgZnVuY3Rpb24oKSB7CiAgICAgIHZhciBjYXRlZ29yeSA9ICQodGhpcykudGV4dCgpOwogICAgICB2YXIgbGFiZWwgPSBnZXRGaWxlSWQoJCh0aGlzKSk7CiAgICAgIGd0YWcoJ2V2ZW50JywgJ0V4cGxvcmUnLCB7J2V2ZW50X2NhdGVnb3J5JyA6IGNhdGVnb3J5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdldmVudF9sYWJlbCcgOiBsYWJlbH0pOwogICAgfSk7CgogICAgLy8gQ29tcHV0ZSBidXR0b24KICAgICQoZG9jdW1lbnQpLm9uKCJjbGljayIsICIuYnRuLWNvbXB1dGUsIC5idG4tY29tcHV0ZS5kcm9wZG93bi10b2dnbGUgKyB1bC5kcm9wZG93bi1tZW51IGxpIGEiLCBmdW5jdGlvbigpIHsKICAgICAgdmFyIGNhdGVnb3J5ID0gJCh0aGlzKS50ZXh0KCk7CiAgICAgIHZhciBsYWJlbCA9IGdldEZpbGVJZCgkKHRoaXMpKTsKICAgICAgZ3RhZygnZXZlbnQnLCAnQ29tcHV0ZScsIHsnZXZlbnRfY2F0ZWdvcnknIDogY2F0ZWdvcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V2ZW50X2xhYmVsJyA6IGxhYmVsfSk7CiAgICB9KTsKCiAgICAvLyBQcmV2aWV3IGJ1dHRvbgogICAgJChkb2N1bWVudCkub24oImNsaWNrIiwgIi5idG4tcHJldmlldywgLmJ0bi1wcmV2aWV3LmRyb3Bkb3duLXRvZ2dsZSArIHVsLmRyb3Bkb3duLW1lbnUgbGkgYSIsIGZ1bmN0aW9uKCkgewogICAgICB2YXIgY2F0ZWdvcnkgPSAkKHRoaXMpLnRleHQoKTsKICAgICAgdmFyIGxhYmVsID0gZ2V0RmlsZUlkKCQodGhpcykpOwogICAgICBndGFnKCdldmVudCcsICdQcmV2aWV3JywgeydldmVudF9jYXRlZ29yeScgOiBjYXRlZ29yeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXZlbnRfbGFiZWwnIDogbGFiZWx9KTsKICAgIH0pOwoKICAgIC8vIENpdGUgYnV0dG9uCiAgICAkKGRvY3VtZW50KS5vbigiY2xpY2siLCAiLmRvd25sb2FkQ2l0YXRpb24gKyB1bC5kcm9wZG93bi1tZW51IGxpIGEiLCBmdW5jdGlvbigpIHsKICAgICAgdmFyIGNhdGVnb3J5ID0gJCh0aGlzKS50ZXh0KCk7CiAgICAgIHZhciBsYWJlbCA9ICdVbmtub3duJzsKICAgICAgaWYoJCgnI2ZpbGVGb3JtJykubGVuZ3RoID4gMCkgewogICAgICAgIGxhYmVsID0gc3RyaXBJZCgkKCcjZmlsZUZvcm0nKS5hdHRyKCdhY3Rpb24nKSk7CiAgICAgIH0gZWxzZSBpZigkKCcjZGF0YXNldEZvcm0nKS5sZW5ndGggPiAwKSB7CiAgICAgICAgbGFiZWwgPSBzdHJpcElkKCQoJyNkYXRhc2V0Rm9ybScpLmF0dHIoJ2FjdGlvbicpKTsKICAgICAgfQogICAgICBndGFnKCdldmVudCcsICdEb3dubG9hZCBDaXRhdGlvbicsIHsnZXZlbnRfY2F0ZWdvcnknIDogY2F0ZWdvcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXZlbnRfbGFiZWwnIDogbGFiZWx9KTsKICAgIH0pOwoKICAgIC8vIEV4cG9ydCBNZXRhZGF0YSBidXR0b24KICAgICQoZG9jdW1lbnQpLm9uKCJjbGljayIsICIuYnRuLWV4cG9ydCArIHVsLmRyb3Bkb3duLW1lbnUgbGkgYSIsIGZ1bmN0aW9uKCkgewogICAgICB2YXIgY2F0ZWdvcnkgPSAkKHRoaXMpLnRleHQoKTsKICAgICAgdmFyIGxhYmVsID0gJ1Vua25vd24nOwogICAgICBpZigkKCcjZmlsZUZvcm0nKS5sZW5ndGggPiAwKSB7CiAgICAgICAgbGFiZWwgPSBzdHJpcElkKCQoJyNmaWxlRm9ybScpLmF0dHIoJ2FjdGlvbicpKTsKICAgICAgfSBlbHNlIGlmKCQoJyNkYXRhc2V0Rm9ybScpLmxlbmd0aCA+IDApIHsKICAgICAgICBsYWJlbCA9IHN0cmlwSWQoJCgnI2RhdGFzZXRGb3JtJykuYXR0cignYWN0aW9uJykpOwogICAgICB9CiAgICAgIGd0YWcoJ2V2ZW50JywgJ0V4cG9ydCBNZXRhZGF0YScsIHsnZXZlbnRfY2F0ZWdvcnknIDogY2F0ZWdvcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXZlbnRfbGFiZWwnIDogbGFiZWx9KTsKICAgIH0pOwoKICAgIC8vIENvbnRhY3QgYnV0dG9uCiAgICAkKGRvY3VtZW50KS5vbigiY2xpY2siLCAiLmJ0bi1jb250YWN0IiwgZnVuY3Rpb24oKSB7CiAgICAgIHZhciBjYXRlZ29yeSA9ICQodGhpcykudGV4dCgpOwogICAgICB2YXIgbGFiZWwgPSAnVW5rbm93bic7CiAgICAgIGlmKCQoJyNmaWxlRm9ybScpLmxlbmd0aCA+IDApIHsKICAgICAgICBsYWJlbCA9IHN0cmlwSWQoJCgnI2ZpbGVGb3JtJykuYXR0cignYWN0aW9uJykpOwogICAgICB9IGVsc2UgaWYoJCgnI2RhdGFzZXRGb3JtJykubGVuZ3RoID4gMCkgewogICAgICAgIGxhYmVsID0gc3RyaXBJZCgkKCcjZGF0YXNldEZvcm0nKS5hdHRyKCdhY3Rpb24nKSk7CiAgICAgIH0gZWxzZSBpZigkKCcjZGF0YXZlcnNlRm9ybScpLmxlbmd0aCA+IDApIHsKICAgICAgICBsYWJlbCA9IHN0cmlwQWxpYXMoJCgnI2RhdGF2ZXJzZUZvcm0nKS5hdHRyKCdhY3Rpb24nKSk7CiAgICAgIH0KICAgICAgZ3RhZygnZXZlbnQnLCAnQ29udGFjdCcsIHsnZXZlbnRfY2F0ZWdvcnknIDogY2F0ZWdvcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V2ZW50X2xhYmVsJyA6IGxhYmVsfSk7CiAgICB9KTsKCiAgICAvLyBTaGFyZSBidXR0b24KICAgICQoZG9jdW1lbnQpLm9uKCJjbGljayIsICdkaXZbaWQkPSJzaGFyZURpYWxvZyJdIGFbY2xhc3NePSJzaGFycnJlIl0nLCBmdW5jdGlvbigpIHsKICAgICAgdmFyIHNoYXJycmVWYWwgPSAkKHRoaXMpLmF0dHIoJ2NsYXNzJyk7CiAgICAgIHZhciBjYXRlZ29yeSA9IHNoYXJycmVWYWwuc3Vic3RyaW5nKHNoYXJycmVWYWwuaW5kZXhPZignLScpICsgMSkgOwogICAgICB2YXIgbGFiZWwgPSAnVW5rbm93bic7CiAgICAgIGlmKCQoJyNmaWxlRm9ybScpLmxlbmd0aCA+IDApIHsKICAgICAgICBsYWJlbCA9IHN0cmlwSWQoJCgnI2ZpbGVGb3JtJykuYXR0cignYWN0aW9uJykpOwogICAgICB9IGVsc2UgaWYoJCgnI2RhdGFzZXRGb3JtJykubGVuZ3RoID4gMCkgewogICAgICAgIGxhYmVsID0gc3RyaXBJZCgkKCcjZGF0YXNldEZvcm0nKS5hdHRyKCdhY3Rpb24nKSk7CiAgICAgIH0gZWxzZSBpZigkKCcjZGF0YXZlcnNlRm9ybScpLmxlbmd0aCA+IDApIHsKICAgICAgICBsYWJlbCA9IHN0cmlwQWxpYXMoJCgnI2RhdGF2ZXJzZUZvcm0nKS5hdHRyKCdhY3Rpb24nKSk7CiAgICAgIH0KICAgICAgZ3RhZygnZXZlbnQnLCAnU2hhcmUnLCB7J2V2ZW50X2NhdGVnb3J5JyA6IGNhdGVnb3J5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXZlbnRfbGFiZWwnIDogbGFiZWx9KTsKICAgIH0pOwoKICB9CgogIGZ1bmN0aW9uIGdldEZpbGVJZCh0YXJnZXQpIHsKICAgIHZhciBsYWJlbCA9ICdVbmtub3duJzsKICAgIGlmKHRhcmdldC5wYXJlbnRzKCd0aCwgI2FjdGlvbkJ1dHRvbkJsb2NrIC5idG4tYWNjZXNzLWRhdGFzZXQgKyB1bC5kcm9wZG93bi1tZW51JykubGVuZ3RoPjApIHsKICAgICAgLy9TcGVjaWFsIGNhc2UgLSB0aGUgRG93bmxvYWQgYnV0dG9uIHRoYXQgZG93bmxvYWRzIGFsbCBzZWxlY3RlZCBmaWxlcyBpbiB0aGUgZGF0YXNldAogICAgICBsYWJlbCA9ICdmaWxlKHMpIGZyb20gJyArIHN0cmlwSWQoJCgnI2RhdGFzZXRGb3JtJykuYXR0cignYWN0aW9uJykpOwogICAgfSBlbHNlIHsKICAgICAgdmFyIHJvdyA9IHRhcmdldC5wYXJlbnRzKCd0cicpWzBdOwogICAgICBpZihyb3cgIT0gbnVsbCkgewogICAgICAgIC8vZmluZHMgdGhlIGZpbGUgaWQvRE9JIGluIHRoZSBEYXRhc2V0IHBhZ2UKICAgICAgICBsYWJlbCA9ICQocm93KS5maW5kKCd0ZC5jb2wtZmlsZS1tZXRhZGF0YSAgYScpLmF0dHIoJ2hyZWYnKTsKICAgICAgfSBlbHNlIHsKICAgICAgICAvL2ZpbmRzIHRoZSBmaWxlIGlkL0RPSSBpbiB0aGUgZmlsZSBwYWdlCiAgICAgICAgbGFiZWwgPSAkKCcjZmlsZUZvcm0nKS5hdHRyKCdhY3Rpb24nKTsKICAgICAgfQogICAgICBsYWJlbCA9IHN0cmlwSWQobGFiZWwpOwogICAgfQogICAgcmV0dXJuIGxhYmVsOwogIH0KCgogIGZ1bmN0aW9uIHN0cmlwSWQobGFiZWwpIHsKICAgIHZhciBpbmRleCA9IGxhYmVsLmluZGV4T2YoJyYnKTsKICAgIGlmKGluZGV4ID09IC0xKSBpbmRleCA9IGxhYmVsLmxlbmd0aDsKICAgIGlmKGxhYmVsLmluZGV4T2YoJ3BlcnNpc3RlbnRJZD0nKSA+PSAwKSB7CiAgICAgIGxhYmVsID0gbGFiZWwuc3Vic3RyaW5nKGxhYmVsLmluZGV4T2YoJ3BlcnNpc3RlbnRJZD0nKSArIDEzLCBpbmRleCk7CiAgICB9CiAgICBpZihsYWJlbC5pbmRleE9mKCdmaWxlSWQ9JykgPj0gMCkgewogICAgICBsYWJlbCA9IGxhYmVsLnN1YnN0cmluZyhsYWJlbC5pbmRleE9mKCdmaWxlSWQ9JykgKyA3LCBpbmRleCk7CiAgICB9CiAgICByZXR1cm4obGFiZWwpOwogIH0KCiAgZnVuY3Rpb24gc3RyaXBBbGlhcyhsYWJlbCkgewogICAgdmFyIGluZGV4ID0gbGFiZWwubGVuZ3RoOwogICAgbGFiZWwgPSBsYWJlbC5zdWJzdHJpbmcobGFiZWwuaW5kZXhPZignL2RhdGF2ZXJzZS8nKSArIDExLCBpbmRleCkuc3BsaXQoL1s/I10vKVswXTsKICAgIHJldHVybihsYWJlbCk7CiAgfQoKICBmdW5jdGlvbiBzdHJpcFNpemUoY2F0ZWdvcnkpIHsKICAgIHZhciBpbmRleCA9IGNhdGVnb3J5LmluZGV4T2YoJ1pJUCAoJyk7CiAgICBpZihpbmRleCA+PSAwKSB7CiAgICAgIGNhdGVnb3J5ID0gY2F0ZWdvcnkuc3Vic3RyaW5nKDAsIGluZGV4ICsgMyk7CiAgICB9CiAgICByZXR1cm4oY2F0ZWdvcnkpOwogIH0KICAvL11dPgo8L3NjcmlwdD4KCiAgICAgICAgICAgIDx0aXRsZT5TdW1tYXJ5IGRhdGEgYW5reWxvc2luZyBzcG9uZHlsaXRpcyBHV0FTIC0gSGFydmFyZCBEYXRhdmVyc2U8L3RpdGxlPgoJICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiAvPgogICAgICAgICAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiIC8+CiAgICAgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9ZWRnZSIgLz4KICAgICAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iU3VtbWFyeSBvZiBhc3NvY2lhdGlvbiB0ZXN0cyBmb3IgTmF0dXJlIEdlbmV0aWNzIHB1YmxpY2F0aW9uICZxdW90O0lkZW50aWZpY2F0aW9uIG9mIG11bHRpcGxlIHJpc2sgdmFyaWFudHMgZm9yIGFua3lsb3Npbmcgc3BvbmR5bGl0aXMgdGhyb3VnaCBoaWdoLWRlbnNpdHkgZ2Vub3R5cGluZyBvZiBpbW11bmUtcmVsYXRlZCBsb2NpJnF1b3Q7LiIgLz4KICAgICAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJEQy5pZGVudGlmaWVyIiBjb250ZW50PSJkb2k6MTAuNzkxMC9EVk4vTko3WFNPIiAvPgogICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9IkRDLnR5cGUiIGNvbnRlbnQ9IkRhdGFzZXQiIC8+CiAgICAgICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0iREMudGl0bGUiIGNvbnRlbnQ9IlN1bW1hcnkgZGF0YSBhbmt5bG9zaW5nIHNwb25keWxpdGlzIEdXQVMiIC8+CiAgICAgICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0iREMuZGF0ZSIgY29udGVudD0iMjAxNy0wOS0zMCIgLz4KICAgICAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJEQy5wdWJsaXNoZXIiIGNvbnRlbnQ9IkhhcnZhcmQgRGF0YXZlcnNlIiAvPgogICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9IkRDLmRlc2NyaXB0aW9uIiBjb250ZW50PSJTdW1tYXJ5IG9mIGFzc29jaWF0aW9uIHRlc3RzIGZvciBOYXR1cmUgR2VuZXRpY3MgcHVibGljYXRpb24gJnF1b3Q7SWRlbnRpZmljYXRpb24gb2YgbXVsdGlwbGUgcmlzayB2YXJpYW50cyBmb3IgYW5reWxvc2luZyBzcG9uZHlsaXRpcyB0aHJvdWdoIGhpZ2gtZGVuc2l0eSBnZW5vdHlwaW5nIG9mIGltbXVuZS1yZWxhdGVkIGxvY2kmcXVvdDsuIiAvPgogICAgICAgICAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJEQy5jcmVhdG9yIiBjb250ZW50PSJJbnRlcm5hdGlvbmFsIEdlbmV0aWNzIG9mIEFua3lsb3NpbmcgU3BvbmR5bGl0aXMgQ29uc29ydGl1bSAoSUdBUykiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9IkRDLnN1YmplY3QiIGNvbnRlbnQ9Ik1lZGljaW5lLCBIZWFsdGggYW5kIExpZmUgU2NpZW5jZXMiIC8+CiAgICAgICAgICAgICAgICAgICAgPG1ldGEgcHJvcGVydHk9Im9nOnRpdGxlIiBjb250ZW50PSJTdW1tYXJ5IGRhdGEgYW5reWxvc2luZyBzcG9uZHlsaXRpcyBHV0FTIiAvPgogICAgICAgICAgICAgICAgICAgIDxtZXRhIHByb3BlcnR5PSJvZzp0eXBlIiBjb250ZW50PSJhcnRpY2xlIiAvPgogICAgICAgICAgICAgICAgICAgIDxtZXRhIHByb3BlcnR5PSJvZzp1cmwiIGNvbnRlbnQ9Imh0dHBzOi8vZGF0YXZlcnNlLmhhcnZhcmQuZWR1L2RhdGFzZXQueGh0bWw/cGVyc2lzdGVudElkPWRvaToxMC43OTEwL0RWTi9OSjdYU08iIC8+CiAgICAgICAgICAgICAgICAgICAgPG1ldGEgcHJvcGVydHk9Im9nOmltYWdlIiBjb250ZW50PSJodHRwczovL2RhdGF2ZXJzZS5oYXJ2YXJkLmVkdS9qYXZheC5mYWNlcy5yZXNvdXJjZS9pbWFnZXMvZGF0YXZlcnNlLWljb24tMTIwMC5wbmcueGh0bWw7anNlc3Npb25pZD0zOWVhMjYxMTYxODJiNzkwNjhmNjZmNDkxMWNlIiAvPgogICAgICAgICAgICAgICAgICAgIDxtZXRhIHByb3BlcnR5PSJvZzpzaXRlX25hbWUiIGNvbnRlbnQ9IkhhcnZhcmQgRGF0YXZlcnNlIiAvPgogICAgICAgICAgICAgICAgICAgIDxtZXRhIHByb3BlcnR5PSJvZzpkZXNjcmlwdGlvbiIgY29udGVudD0iU3VtbWFyeSBvZiBhc3NvY2lhdGlvbiB0ZXN0cyBmb3IgTmF0dXJlIEdlbmV0aWNzIHB1YmxpY2F0aW9uICZxdW90O0lkZW50aWZpY2F0aW9uIG9mIG11bHRpcGxlIHJpc2sgdmFyaWFudHMgZm9yIGFua3lsb3Npbmcgc3BvbmR5bGl0aXMgdGhyb3VnaCBoaWdoLWRlbnMuLi4iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIHByb3BlcnR5PSJhcnRpY2xlOmF1dGhvciIgY29udGVudD0iSW50ZXJuYXRpb25hbCBHZW5ldGljcyBvZiBBbmt5bG9zaW5nIFNwb25keWxpdGlzIENvbnNvcnRpdW0gKElHQVMpIiAvPgogICAgICAgICAgICAgICAgICAgIDxtZXRhIHByb3BlcnR5PSJhcnRpY2xlOnB1Ymxpc2hlZF90aW1lIiBjb250ZW50PSIyMDE3LTA5LTMwIiAvPgogICAgICAgICAgICAgICAgICAgIDxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vbGQranNvbiI+eyJAY29udGV4dCI6Imh0dHA6Ly9zY2hlbWEub3JnIiwiQHR5cGUiOiJEYXRhc2V0IiwiQGlkIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjc5MTAvRFZOL05KN1hTTyIsImlkZW50aWZpZXIiOiJodHRwczovL2RvaS5vcmcvMTAuNzkxMC9EVk4vTko3WFNPIiwibmFtZSI6IlN1bW1hcnkgZGF0YSBhbmt5bG9zaW5nIHNwb25keWxpdGlzIEdXQVMiLCJjcmVhdG9yIjpbeyJuYW1lIjoiSW50ZXJuYXRpb25hbCBHZW5ldGljcyBvZiBBbmt5bG9zaW5nIFNwb25keWxpdGlzIENvbnNvcnRpdW0gKElHQVMpIn1dLCJhdXRob3IiOlt7Im5hbWUiOiJJbnRlcm5hdGlvbmFsIEdlbmV0aWNzIG9mIEFua3lsb3NpbmcgU3BvbmR5bGl0aXMgQ29uc29ydGl1bSAoSUdBUykifV0sImRhdGVQdWJsaXNoZWQiOiIyMDE3LTA5LTMwIiwiZGF0ZU1vZGlmaWVkIjoiMjAxNy0wOS0zMCIsInZlcnNpb24iOiIxIiwiZGVzY3JpcHRpb24iOlsiU3VtbWFyeSBvZiBhc3NvY2lhdGlvbiB0ZXN0cyBmb3IgTmF0dXJlIEdlbmV0aWNzIHB1YmxpY2F0aW9uIFwiSWRlbnRpZmljYXRpb24gb2YgbXVsdGlwbGUgcmlzayB2YXJpYW50cyBmb3IgYW5reWxvc2luZyBzcG9uZHlsaXRpcyB0aHJvdWdoIGhpZ2gtZGVuc2l0eSBnZW5vdHlwaW5nIG9mIGltbXVuZS1yZWxhdGVkIGxvY2lcIi4iXSwia2V5d29yZHMiOlsiTWVkaWNpbmUsIEhlYWx0aCBhbmQgTGlmZSBTY2llbmNlcyIsIiBHZW5vbWUtV2lkZSBBc3NvY2lhdGlvbiBTdHVkaWVzIiwiQW5reWxvc2luZyBzcG9uZHlsaXRpcyJdLCJjaXRhdGlvbiI6W3siQHR5cGUiOiJDcmVhdGl2ZVdvcmsiLCJ0ZXh0IjoiMTAuMTAzOC9uZy4yNjY3In1dLCJsaWNlbnNlIjoiaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wIiwiaW5jbHVkZWRJbkRhdGFDYXRhbG9nIjp7IkB0eXBlIjoiRGF0YUNhdGFsb2ciLCJuYW1lIjoiSGFydmFyZCBEYXRhdmVyc2UiLCJ1cmwiOiJodHRwczovL2RhdGF2ZXJzZS5oYXJ2YXJkLmVkdSJ9LCJwdWJsaXNoZXIiOnsiQHR5cGUiOiJPcmdhbml6YXRpb24iLCJuYW1lIjoiSGFydmFyZCBEYXRhdmVyc2UifSwicHJvdmlkZXIiOnsiQHR5cGUiOiJPcmdhbml6YXRpb24iLCJuYW1lIjoiSGFydmFyZCBEYXRhdmVyc2UifSwiZGlzdHJpYnV0aW9uIjpbeyJAdHlwZSI6IkRhdGFEb3dubG9hZCIsIm5hbWUiOiJBc2lhbl9DYXNlX0NvbnRyb2xfUmVzdWx0cy50eHQiLCJmaWxlRm9ybWF0IjoidGV4dC9wbGFpbiIsImNvbnRlbnRTaXplIjoxMTU3MjQxMiwiZGVzY3JpcHRpb24iOiJTdW1tYXJ5IGRhdGEgZm9yIEFzaWFuIGNvaG9ydCIsIkBpZCI6Imh0dHBzOi8vZG9pLm9yZy8xMC43OTEwL0RWTi9OSjdYU08vSzNOUk1PIiwiaWRlbnRpZmllciI6Imh0dHBzOi8vZG9pLm9yZy8xMC43OTEwL0RWTi9OSjdYU08vSzNOUk1PIiwiY29udGVudFVybCI6Imh0dHBzOi8vZGF0YXZlcnNlLmhhcnZhcmQuZWR1L2FwaS9hY2Nlc3MvZGF0YWZpbGUvMzA1NTQyNCJ9LHsiQHR5cGUiOiJEYXRhRG93bmxvYWQiLCJuYW1lIjoiRXVyb3BlYW5fQXNpYW5fQ2FzZV9Db250cm9sX1Jlc3VsdHMudHh0IiwiZmlsZUZvcm1hdCI6InRleHQvcGxhaW4iLCJjb250ZW50U2l6ZSI6MTEyNDU0OTYsImRlc2NyaXB0aW9uIjoiU3VtbWFyeSBkYXRhIGZvciBjb21iaW5lZCBjb2hvcnQiLCJAaWQiOiJodHRwczovL2RvaS5vcmcvMTAuNzkxMC9EVk4vTko3WFNPL0hBMlNWUiIsImlkZW50aWZpZXIiOiJodHRwczovL2RvaS5vcmcvMTAuNzkxMC9EVk4vTko3WFNPL0hBMlNWUiIsImNvbnRlbnRVcmwiOiJodHRwczovL2RhdGF2ZXJzZS5oYXJ2YXJkLmVkdS9hcGkvYWNjZXNzL2RhdGFmaWxlLzMwNTU0MjUifSx7IkB0eXBlIjoiRGF0YURvd25sb2FkIiwibmFtZSI6IkV1cm9wZWFuX0Nhc2VfQ29udHJvbF9SZXN1bHRzLnR4dCIsImZpbGVGb3JtYXQiOiJ0ZXh0L3BsYWluIiwiY29udGVudFNpemUiOjEzMzM3MTgzLCJkZXNjcmlwdGlvbiI6IlN1bW1hcnkgZGF0YSBmb3IgRXVyb3BlYW4gY29ob3J0IiwiQGlkIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjc5MTAvRFZOL05KN1hTTy9JTjQ1R1oiLCJpZGVudGlmaWVyIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjc5MTAvRFZOL05KN1hTTy9JTjQ1R1oiLCJjb250ZW50VXJsIjoiaHR0cHM6Ly9kYXRhdmVyc2UuaGFydmFyZC5lZHUvYXBpL2FjY2Vzcy9kYXRhZmlsZS8zMDU1NDI2In1dfQoKICAgICAgICAgICAgICAgICAgICA8L3NjcmlwdD48bGluayB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvamF2YXguZmFjZXMucmVzb3VyY2UvdGhlbWUuY3NzLnhodG1sO2pzZXNzaW9uaWQ9MzllYTI2MTE2MTgyYjc5MDY4ZjY2ZjQ5MTFjZT9sbj1wcmltZWZhY2VzLWJvb3RzdHJhcCZhbXA7dj0xMS4wLjAiIC8+PGxpbmsgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2phdmF4LmZhY2VzLnJlc291cmNlL3ByaW1laWNvbnMvcHJpbWVpY29ucy5jc3MueGh0bWw7anNlc3Npb25pZD0zOWVhMjYxMTYxODJiNzkwNjhmNjZmNDkxMWNlP2xuPXByaW1lZmFjZXMmYW1wO3Y9MTEuMC4wIiAvPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9qYXZheC5mYWNlcy5yZXNvdXJjZS9vbW5pZmFjZXMuanMueGh0bWw7anNlc3Npb25pZD0zOWVhMjYxMTYxODJiNzkwNjhmNjZmNDkxMWNlP2xuPW9tbmlmYWNlcyZhbXA7dj0zLjgiPjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9qYXZheC5mYWNlcy5yZXNvdXJjZS9qcXVlcnkvanF1ZXJ5LmpzLnhodG1sO2pzZXNzaW9uaWQ9MzllYTI2MTE2MTgyYjc5MDY4ZjY2ZjQ5MTFjZT9sbj1wcmltZWZhY2VzJmFtcDt2PTExLjAuMCI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2phdmF4LmZhY2VzLnJlc291cmNlL2pxdWVyeS9qcXVlcnktcGx1Z2lucy5qcy54aHRtbDtqc2Vzc2lvbmlkPTM5ZWEyNjExNjE4MmI3OTA2OGY2NmY0OTExY2U/bG49cHJpbWVmYWNlcyZhbXA7dj0xMS4wLjAiPjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9qYXZheC5mYWNlcy5yZXNvdXJjZS9jb3JlLmpzLnhodG1sO2pzZXNzaW9uaWQ9MzllYTI2MTE2MTgyYjc5MDY4ZjY2ZjQ5MTFjZT9sbj1wcmltZWZhY2VzJmFtcDt2PTExLjAuMCI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2phdmF4LmZhY2VzLnJlc291cmNlL2NvbXBvbmVudHMuanMueGh0bWw7anNlc3Npb25pZD0zOWVhMjYxMTYxODJiNzkwNjhmNjZmNDkxMWNlP2xuPXByaW1lZmFjZXMmYW1wO3Y9MTEuMC4wIj48L3NjcmlwdD48bGluayB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvamF2YXguZmFjZXMucmVzb3VyY2UvY29tcG9uZW50cy5jc3MueGh0bWw7anNlc3Npb25pZD0zOWVhMjYxMTYxODJiNzkwNjhmNjZmNDkxMWNlP2xuPXByaW1lZmFjZXMmYW1wO3Y9MTEuMC4wIiAvPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9qYXZheC5mYWNlcy5yZXNvdXJjZS93YXRlcm1hcmsvd2F0ZXJtYXJrLmpzLnhodG1sO2pzZXNzaW9uaWQ9MzllYTI2MTE2MTgyYjc5MDY4ZjY2ZjQ5MTFjZT9sbj1wcmltZWZhY2VzJmFtcDt2PTExLjAuMCI+PC9zY3JpcHQ+PGxpbmsgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2phdmF4LmZhY2VzLnJlc291cmNlL2ZpbGV1cGxvYWQvZmlsZXVwbG9hZC5jc3MueGh0bWw7anNlc3Npb25pZD0zOWVhMjYxMTYxODJiNzkwNjhmNjZmNDkxMWNlP2xuPXByaW1lZmFjZXMmYW1wO3Y9MTEuMC4wIiAvPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9qYXZheC5mYWNlcy5yZXNvdXJjZS9maWxldXBsb2FkL2ZpbGV1cGxvYWQuanMueGh0bWw7anNlc3Npb25pZD0zOWVhMjYxMTYxODJiNzkwNjhmNjZmNDkxMWNlP2xuPXByaW1lZmFjZXMmYW1wO3Y9MTEuMC4wIj48L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvamF2YXguZmFjZXMucmVzb3VyY2UvdG91Y2gvdG91Y2hzd2lwZS5qcy54aHRtbDtqc2Vzc2lvbmlkPTM5ZWEyNjExNjE4MmI3OTA2OGY2NmY0OTExY2U/bG49cHJpbWVmYWNlcyZhbXA7dj0xMS4wLjAiPjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9qYXZheC5mYWNlcy5yZXNvdXJjZS9pbnB1dG1hc2svaW5wdXRtYXNrLmpzLnhodG1sO2pzZXNzaW9uaWQ9MzllYTI2MTE2MTgyYjc5MDY4ZjY2ZjQ5MTFjZT9sbj1wcmltZWZhY2VzJmFtcDt2PTExLjAuMCI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2phdmF4LmZhY2VzLnJlc291cmNlL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5qcy54aHRtbDtqc2Vzc2lvbmlkPTM5ZWEyNjExNjE4MmI3OTA2OGY2NmY0OTExY2U/bG49cHJpbWVmYWNlcyZhbXA7dj0xMS4wLjAiPjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5pZih3aW5kb3cuUHJpbWVGYWNlcyl7UHJpbWVGYWNlcy5zZXR0aW5ncy5sb2NhbGU9J2VuJztQcmltZUZhY2VzLnNldHRpbmdzLnZpZXdJZD0nL2RhdGFzZXQueGh0bWwnO1ByaW1lRmFjZXMuc2V0dGluZ3MuY29udGV4dFBhdGg9Jyc7UHJpbWVGYWNlcy5zZXR0aW5ncy5jb29raWVzU2VjdXJlPWZhbHNlO308L3NjcmlwdD4KICAgICAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIHNpemVzPSIxODB4MTgwIiBocmVmPSIvamF2YXguZmFjZXMucmVzb3VyY2UvaW1hZ2VzL2Zhdi9hcHBsZS10b3VjaC1pY29uLnBuZy54aHRtbDtqc2Vzc2lvbmlkPTM5ZWEyNjExNjE4MmI3OTA2OGY2NmY0OTExY2UiIC8+CiAgICAgICAgPGxpbmsgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS9wbmciIHNpemVzPSIxNngxNiIgaHJlZj0iL2phdmF4LmZhY2VzLnJlc291cmNlL2ltYWdlcy9mYXYvZmF2aWNvbi0xNngxNi5wbmcueGh0bWw7anNlc3Npb25pZD0zOWVhMjYxMTYxODJiNzkwNjhmNjZmNDkxMWNlIiAvPgogICAgICAgIDxsaW5rIHJlbD0iaWNvbiIgdHlwZT0iaW1hZ2UvcG5nIiBzaXplcz0iMzJ4MzIiIGhyZWY9Ii9qYXZheC5mYWNlcy5yZXNvdXJjZS9pbWFnZXMvZmF2L2Zhdmljb24tMzJ4MzIucG5nLnhodG1sO2pzZXNzaW9uaWQ9MzllYTI2MTE2MTgyYjc5MDY4ZjY2ZjQ5MTFjZSIgLz4KICAgICAgICA8bGluayByZWw9Im1hbmlmZXN0IiBocmVmPSIvamF2YXguZmFjZXMucmVzb3VyY2UvaW1hZ2VzL2Zhdi9zaXRlLndlYm1hbmlmZXN0LnhodG1sO2pzZXNzaW9uaWQ9MzllYTI2MTE2MTgyYjc5MDY4ZjY2ZjQ5MTFjZSIgLz4KICAgICAgICA8bGluayByZWw9Im1hc2staWNvbiIgaHJlZj0iL2phdmF4LmZhY2VzLnJlc291cmNlL2ltYWdlcy9mYXYvc2FmYXJpLXBpbm5lZC10YWIuc3ZnLnhodG1sO2pzZXNzaW9uaWQ9MzllYTI2MTE2MTgyYjc5MDY4ZjY2ZjQ5MTFjZSIgY29sb3I9IiNkYTUzMmMiIC8+CiAgICAgICAgPG1ldGEgbmFtZT0ibXNhcHBsaWNhdGlvbi1UaWxlQ29sb3IiIGNvbnRlbnQ9IiNkYTUzMmMiIC8+CiAgICAgICAgPG1ldGEgbmFtZT0idGhlbWUtY29sb3IiIGNvbnRlbnQ9IiNmZmZmZmYiIC8+CiAgICAgICAgPGxpbmsgdHlwZT0iaW1hZ2UvcG5nIiByZWw9ImltYWdlX3NyYyIgaHJlZj0iL2phdmF4LmZhY2VzLnJlc291cmNlL2ltYWdlcy9kYXRhdmVyc2Vwcm9qZWN0LnBuZy54aHRtbDtqc2Vzc2lvbmlkPTM5ZWEyNjExNjE4MmI3OTA2OGY2NmY0OTExY2UiIC8+CiAgICAgICAgPGxpbmsgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2phdmF4LmZhY2VzLnJlc291cmNlL2JzL2Nzcy9ib290c3RyYXAubWluLmNzcy54aHRtbDtqc2Vzc2lvbmlkPTM5ZWEyNjExNjE4MmI3OTA2OGY2NmY0OTExY2U/dmVyc2lvbj01LjEyIiAvPgogICAgICAgIDxsaW5rIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9qYXZheC5mYWNlcy5yZXNvdXJjZS9icy9jc3MvYm9vdHN0cmFwLXRoZW1lLm1pbi5jc3MueGh0bWw7anNlc3Npb25pZD0zOWVhMjYxMTYxODJiNzkwNjhmNjZmNDkxMWNlP3ZlcnNpb249NS4xMiIgLz4KICAgICAgICA8bGluayB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvamF2YXguZmFjZXMucmVzb3VyY2UvY3NzL2llLWNvbXBhdC5jc3MueGh0bWw7anNlc3Npb25pZD0zOWVhMjYxMTYxODJiNzkwNjhmNjZmNDkxMWNlP3ZlcnNpb249NS4xMiIgLz4KICAgICAgICA8bGluayB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvamF2YXguZmFjZXMucmVzb3VyY2UvY3NzL293bC5jYXJvdXNlbC5jc3MueGh0bWw7anNlc3Npb25pZD0zOWVhMjYxMTYxODJiNzkwNjhmNjZmNDkxMWNlP3ZlcnNpb249NS4xMiIgLz4KICAgICAgICA8bGluayB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvamF2YXguZmFjZXMucmVzb3VyY2UvY3NzL2ZvbnRjdXN0b20uY3NzLnhodG1sO2pzZXNzaW9uaWQ9MzllYTI2MTE2MTgyYjc5MDY4ZjY2ZjQ5MTFjZT92ZXJzaW9uPTUuMTIiIC8+CiAgICAgICAgPGxpbmsgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2phdmF4LmZhY2VzLnJlc291cmNlL2Nzcy9zb2NpY29uLmNzcy54aHRtbDtqc2Vzc2lvbmlkPTM5ZWEyNjExNjE4MmI3OTA2OGY2NmY0OTExY2U/dmVyc2lvbj01LjEyIiAvPgogICAgICAgIDxsaW5rIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9qYXZheC5mYWNlcy5yZXNvdXJjZS9jc3Mvc3RydWN0dXJlLmNzcy54aHRtbDtqc2Vzc2lvbmlkPTM5ZWEyNjExNjE4MmI3OTA2OGY2NmY0OTExY2U/dmVyc2lvbj01LjEyIiAvPgogICAgICAgICAgICA8c3R5bGU+CiAgICAgICAgICAgICAgICAvKiBDdXN0b20gQ1NTICovCiAgICAgICAgICAgICAgICAjbmF2YmFyRml4ZWQgZGl2Lm5hdmJhci1oZWFkZXIgaW1nLm5hdmJhci1icmFuZC5jdXN0b20tbG9nbyB7aGVpZ2h0OjUwcHggIWltcG9ydGFudDt9CiNkYXRhdmVyc2VEZXNjIHNwYW4gPiBzcGFuID4gc3BhbiA+IGgzIHtmb250LXdlaWdodDogMzAwICFpbXBvcnRhbnQ7fQoKbmF2Lm5hdmJhci5uYXZiYXItZGVmYXVsdCB7YmFja2dyb3VuZDogI2VjZWNlYyAhaW1wb3J0YW50O30KLyogI2Zvb3RlciB7YmFja2dyb3VuZDogI2VjZWNlYyAhaW1wb3J0YW50OyBwYWRkaW5nLXRvcDoxLjI1ZW07fSAqLwoKICAgICAgICAgICAgPC9zdHlsZT48L2hlYWQ+PGJvZHk+Cgk8YSBocmVmPSIjY29udGVudCIgY2xhc3M9InNyLW9ubHkiPlNraXAgdG8gbWFpbiBjb250ZW50PC9hPgoKICAgIDxuYXYgaWQ9ImRhdGF2ZXJzZS1oZWFkZXItYmxvY2siPjxkaXYgaWQ9Im5hdmJhckZpeGVkIiBjbGFzcz0ibmF2YmFyIG5hdmJhci1kZWZhdWx0IG5hdmJhci1maXhlZC10b3AiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2YmFyLWhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJuYXZiYXItdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjdG9wTmF2QmFyIiBhcmlhLXByZXNzZWQ9ImZhbHNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNyLW9ubHkiPlRvZ2dsZSBuYXZpZ2F0aW9uPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaWNvbi1iYXIiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Imljb24tYmFyIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpY29uLWJhciI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii8iPjxpbWcgc3JjPSIvbG9nb3MvbmF2YmFyL2xvZ28ucG5nO2pzZXNzaW9uaWQ9MzllYTI2MTE2MTgyYjc5MDY4ZjY2ZjQ5MTFjZSIgYWx0PSJIYXJ2YXJkIERhdGF2ZXJzZSBob21lcGFnZSIgY2xhc3M9Im5hdmJhci1icmFuZCBjdXN0b20tbG9nbyIgLz4KICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbGxhcHNlIG5hdmJhci1jb2xsYXBzZSIgaWQ9InRvcE5hdkJhciI+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJuYXYgbmF2YmFyLW5hdiBuYXZiYXItcmlnaHQiPjxsaSBjbGFzcz0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj5BZGQgRGF0YSA8YiBjbGFzcz0iY2FyZXQiPjwvYj48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPjxsaT48YSBocmVmPSIvZGF0YXNldC54aHRtbDtqc2Vzc2lvbmlkPTM5ZWEyNjExNjE4MmI3OTA2OGY2NmY0OTExY2U/b3duZXJJZD0xIj5OZXcgRGF0YXNldDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+U2VhcmNoIDxiIGNsYXNzPSJjYXJldCI+PC9iPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSBuYXZiYXItc2VhcmNoIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGNsYXNzPSJmb3JtLWlubGluZSIgcm9sZT0ic2VhcmNoIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBpZD0ic2VhcmNoTmF2TGFiZWwiIGNsYXNzPSJzci1vbmx5IiBmb3I9Im5hdmJhcnNlYXJjaCI+U2VhcmNoPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9Im5hdmJhcnNlYXJjaCIgdHlwZT0idGV4dCIgY2xhc3M9ImZvcm0tY29udHJvbCIgc2l6ZT0iMjgiIHZhbHVlPSIiIHBsYWNlaG9sZGVyPSJTZWFyY2ggYWxsIGRhdGF2ZXJzZXMuLi4iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImlucHV0LWdyb3VwLWJ0biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiB0aXRsZT0iRmluZCIgY2xhc3M9ImJ0biBidG4tZGVmYXVsdCBib290c3RyYXAtYnV0dG9uLXRvb2x0aXAiIGFyaWEtbGFiZWxsZWRieT0ic2VhcmNoTmF2TGFiZWwiIG9uY2xpY2s9IndpbmRvdy5sb2NhdGlvbj0nL2RhdGF2ZXJzZS9oYXJ2YXJkP3E9JyArIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduYXZiYXJzZWFyY2gnKS52YWx1ZTtyZXR1cm4gZmFsc2U7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXNlYXJjaCBuby10ZXh0Ij48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vc3VwcG9ydC5kYXRhdmVyc2UuaGFydmFyZC5lZHUvIiByZWw9Im5vb3BlbmVyIiB0YXJnZXQ9Il9ibGFuayI+QWJvdXQ8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ3VpZGVzLmRhdGF2ZXJzZS5vcmcvZW4vNS4xMi91c2VyIiByZWw9Im5vb3BlbmVyIiB0YXJnZXQ9Il9ibGFuayI+VXNlciBHdWlkZTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KPGZvcm0gaWQ9ImpfaWR0NzgiIG5hbWU9ImpfaWR0NzgiIG1ldGhvZD0icG9zdCIgYWN0aW9uPSIvZGF0YXNldC54aHRtbDtqc2Vzc2lvbmlkPTM5ZWEyNjExNjE4MmI3OTA2OGY2NmY0OTExY2U/cGVyc2lzdGVudElkPWRvaSUzQTEwLjc5MTAlMkZEVk4lMkZOSjdYU08iIGNsYXNzPSJuYXZiYXItZm9ybSBuYXZiYXItbGVmdCBuYXZiYXItZm9ybS1saW5rIiBlbmN0eXBlPSJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiIGRhdGEtcGFydGlhbHN1Ym1pdD0idHJ1ZSI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImpfaWR0NzgiIHZhbHVlPSJqX2lkdDc4IiAvPgo8YSBpZD0ial9pZHQ3ODpoZWFkZXJTdXBwb3J0TGluayIgaHJlZj0iIyIgY2xhc3M9InVpLWNvbW1hbmRsaW5rIHVpLXdpZGdldCIgb25jbGljaz0iUHJpbWVGYWNlcy5hYih7czomcXVvdDtqX2lkdDc4OmhlYWRlclN1cHBvcnRMaW5rJnF1b3Q7LGY6JnF1b3Q7al9pZHQ3OCZxdW90Oyx1OiZxdW90O2NvbnRhY3REaWFsb2cmcXVvdDssb25jbzpmdW5jdGlvbih4aHIsc3RhdHVzLGFyZ3MsZGF0YSl7UEYoJ2NvbnRhY3RGb3JtJykuc2hvdygpO319KTtyZXR1cm4gZmFsc2U7Ij5TdXBwb3J0PC9hPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImphdmF4LmZhY2VzLlZpZXdTdGF0ZSIgaWQ9ImpfaWQxOmphdmF4LmZhY2VzLlZpZXdTdGF0ZTowIiB2YWx1ZT0iNTgyMTczNTQwNDIxMzczNDI4MTo2NTAwMTU3OTc1MTU4Njk3Mzc5IiBhdXRvY29tcGxldGU9Im9mZiIgLz4KPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIvZGF0YXZlcnNldXNlci54aHRtbDtqc2Vzc2lvbmlkPTM5ZWEyNjExNjE4MmI3OTA2OGY2NmY0OTExY2U/ZWRpdE1vZGU9Q1JFQVRFJmFtcDtyZWRpcmVjdFBhZ2U9JTJGZGF0YXNldC54aHRtbCUzRnBlcnNpc3RlbnRJZCUzRGRvaSUzQTEwLjc5MTAlMkZEVk4lMkZOSjdYU08iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaWduIFVwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIvbG9naW5wYWdlLnhodG1sO2pzZXNzaW9uaWQ9MzllYTI2MTE2MTgyYjc5MDY4ZjY2ZjQ5MTFjZT9yZWRpcmVjdFBhZ2U9JTJGZGF0YXNldC54aHRtbCUzRnBlcnNpc3RlbnRJZCUzRGRvaSUzQTEwLjc5MTAlMkZEVk4lMkZOSjdYU08iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2cgSW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+PC9kaXY+CiAgICAgICAgCiAgICAgICAgPG5vc2NyaXB0PgogICAgICAgICAgICA8ZGl2IGlkPSJub3NjcmlwdC1hbGVydCIgY2xhc3M9ImJnLWRhbmdlciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhbGVydCBjb250YWluZXIgdGV4dC1kYW5nZXIgbm8tbWFyZ2luLWJvdHRvbSI+UGxlYXNlIGVuYWJsZSBKYXZhU2NyaXB0IGluIHlvdXIgYnJvd3Nlci4gSXQgaXMgcmVxdWlyZWQgdG8gdXNlIG1vc3Qgb2YgdGhlIGZlYXR1cmVzIG9mIERhdGF2ZXJzZS4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L25vc2NyaXB0Pgo8Zm9ybSBpZD0ial9pZHQxMzIiIG5hbWU9ImpfaWR0MTMyIiBtZXRob2Q9InBvc3QiIGFjdGlvbj0iL2RhdGFzZXQueGh0bWw7anNlc3Npb25pZD0zOWVhMjYxMTYxODJiNzkwNjhmNjZmNDkxMWNlP3BlcnNpc3RlbnRJZD1kb2klM0ExMC43OTEwJTJGRFZOJTJGTko3WFNPIiBjbGFzcz0iZm9ybS1pbmxpbmUiIGVuY3R5cGU9ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIgZGF0YS1wYXJ0aWFsc3VibWl0PSJ0cnVlIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ial9pZHQxMzIiIHZhbHVlPSJqX2lkdDEzMiIgLz4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iamF2YXguZmFjZXMuVmlld1N0YXRlIiBpZD0ial9pZDE6amF2YXguZmFjZXMuVmlld1N0YXRlOjEiIHZhbHVlPSI1ODIxNzM1NDA0MjEzNzM0MjgxOjY1MDAxNTc5NzUxNTg2OTczNzkiIGF1dG9jb21wbGV0ZT0ib2ZmIiAvPgo8L2Zvcm0+PGRpdiBpZD0iYnJlYWRDcnVtYlBhbmVsIj48ZGl2IGlkPSJicmVhZGNydW1iTmF2QmxvY2siIGNsYXNzPSJjb250YWluZXIiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYnJlYWRjcnVtYkJsb2NrIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGlkPSJicmVhZGNydW1iTG5rMCIgaHJlZj0iL2RhdGF2ZXJzZS9oYXJ2YXJkIj5IYXJ2YXJkIERhdGF2ZXJzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9kaXY+PHNwYW4gY2xhc3M9ImJyZWFkY3J1bWJDYXJyb3QiPiAmZ3Q7IDwvc3Bhbj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJyZWFkY3J1bWJCbG9jayI+CiAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGlkPSJtZXNzYWdlUGFuZWwiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIgbWVzc2FnZVBhbmVsIj4KICAgICAgICAgICAgPC9kaXY+PC9kaXY+CiAgICA8L25hdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiIGlkPSJjb250ZW50IiByb2xlPSJtYWluIj4KPGZvcm0gaWQ9ImRhdGFzZXRGb3JtIiBuYW1lPSJkYXRhc2V0Rm9ybSIgbWV0aG9kPSJwb3N0IiBhY3Rpb249Ii9kYXRhc2V0LnhodG1sO2pzZXNzaW9uaWQ9MzllYTI2MTE2MTgyYjc5MDY4ZjY2ZjQ5MTFjZT9wZXJzaXN0ZW50SWQ9ZG9pJTNBMTAuNzkxMCUyRkRWTiUyRk5KN1hTTyIgZW5jdHlwZT0iYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGF0YXNldEZvcm0iIHZhbHVlPSJkYXRhc2V0Rm9ybSIgLz4KPGlucHV0IGlkPSJkYXRhc2V0Rm9ybTp2YWxpZGF0ZUZpbGVzT3V0Y29tZSIgdHlwZT0iaGlkZGVuIiBuYW1lPSJkYXRhc2V0Rm9ybTp2YWxpZGF0ZUZpbGVzT3V0Y29tZSIgLz48aW5wdXQgaWQ9ImRhdGFzZXRGb3JtOnZhbGlkVGVybXNvZkFjY2VzcyIgdHlwZT0iaGlkZGVuIiBuYW1lPSJkYXRhc2V0Rm9ybTp2YWxpZFRlcm1zb2ZBY2Nlc3MiIHZhbHVlPSJ0cnVlIiAvPjxkaXYgaWQ9ImRhdGFzZXRGb3JtOnRvcERhdGFzZXRCbG9ja0ZyYWdtZW50Ij48ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzLTEyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJkYXRhc2V0VmVyc2lvbkJsb2NrIiBjbGFzcz0icm93Ij48ZGl2IGlkPSJ0aXRsZS1ibG9jayIgY2xhc3M9ImNvbC14cy0xMiBtYXJnaW4tYm90dG9tLWhhbGYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxIGlkPSJ0aXRsZSI+IFN1bW1hcnkgZGF0YSBhbmt5bG9zaW5nIHNwb25keWxpdGlzIEdXQVM8L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0idGl0bGUtbGFiZWwtYmxvY2siIGNsYXNzPSJtYXJnaW4tdG9wLWhhbGYiPjxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1kZWZhdWx0Ij5WZXJzaW9uIDEuMDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJkYXRhc2V0Q2l0YXRpb25BY3Rpb25TdW1tYXJ5QmxvY2siIGNsYXNzPSJyb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wteHMtMTIgY29sLXNtLTEyIGNvbC1tZC04IGNvbC1sZy05Ij4KICAgIDxkaXYgY2xhc3M9ImNpdGF0aW9uLWJsb2NrIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjbGVhcmZpeCBhbGVydCBhbGVydC1pbmZvIGJnLWNpdGF0aW9uIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2l0YXRpb24gbWFyZ2luLWJvdHRvbSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwdWxsLWxlZnQgcHJldmlldy1pY29uLWJsb2NrIj48c3BhbiBjbGFzcz0iaWNvbi1kYXRhc2V0Ij48L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjaXRhdGlvbi1zZWxlY3QiIG9uY2xpY2s9ImlmIChldmVudC50YXJnZXQpIHsgc2VsZWN0VGV4dChldmVudC50YXJnZXQpOyB9IGVsc2V7IHNlbGVjdFRleHQodGhpcyk7IH0iPkludGVybmF0aW9uYWwgR2VuZXRpY3Mgb2YgQW5reWxvc2luZyBTcG9uZHlsaXRpcyBDb25zb3J0aXVtIChJR0FTKSwgMjAxNywgIlN1bW1hcnkgZGF0YSBhbmt5bG9zaW5nIHNwb25keWxpdGlzIEdXQVMiLCA8YSBocmVmPSJodHRwczovL2RvaS5vcmcvMTAuNzkxMC9EVk4vTko3WFNPIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9kb2kub3JnLzEwLjc5MTAvRFZOL05KN1hTTzwvYT4sIEhhcnZhcmQgRGF0YXZlcnNlLCBWMQogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2Rpdj48ZGl2IGNsYXNzPSJwdWxsLWxlZnQgcm93IGNvbC1zbS05IHBhZGRpbmctbm9uZSI+PGRpdiBjbGFzcz0iY29sLXNtLTMgY29sLW1kLTQgY29sLWxnLTMgYnRuLWdyb3VwIG1hcmdpbi1ib3R0b20gY2l0YXRpb24tZG93bmxvYWQiPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1saW5rIGRyb3Bkb3duLXRvZ2dsZSBwYWRkaW5nLW5vbmUgZG93bmxvYWRDaXRhdGlvbiIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgQ2l0ZSBEYXRhc2V0IDxzcGFuIGNsYXNzPSJjYXJldCI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvamF2YXguZmFjZXMucmVzb3VyY2UvanNmLmpzLnhodG1sO2pzZXNzaW9uaWQ9MzllYTI2MTE2MTgyYjc5MDY4ZjY2ZjQ5MTFjZT9sbj1qYXZheC5mYWNlcyI+PC9zY3JpcHQ+PGEgaWQ9ImRhdGFzZXRGb3JtOmVuZE5vdGVMaW5rIiBocmVmPSIjIiBvbmNsaWNrPSJtb2phcnJhLmpzZmNsanMoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RhdGFzZXRGb3JtJykseydkYXRhc2V0Rm9ybTplbmROb3RlTGluayc6J2RhdGFzZXRGb3JtOmVuZE5vdGVMaW5rJ30sJycpO3JldHVybiBmYWxzZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5kTm90ZSBYTUwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGlkPSJkYXRhc2V0Rm9ybTpyaXNMaW5rIiBocmVmPSIjIiBvbmNsaWNrPSJtb2phcnJhLmpzZmNsanMoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RhdGFzZXRGb3JtJykseydkYXRhc2V0Rm9ybTpyaXNMaW5rJzonZGF0YXNldEZvcm06cmlzTGluayd9LCcnKTtyZXR1cm4gZmFsc2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJJUwogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaWQ9ImRhdGFzZXRGb3JtOmJpYkxpbmsiIGhyZWY9IiMiIG9uY2xpY2s9Im1vamFycmEuanNmY2xqcyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGF0YXNldEZvcm0nKSx7J2RhdGFzZXRGb3JtOmJpYkxpbmsnOidkYXRhc2V0Rm9ybTpiaWJMaW5rJ30sJ19ibGFuaycpO3JldHVybiBmYWxzZSIgdGFyZ2V0PSJfYmxhbmsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpYlRlWAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+PC9kaXY+PGRpdiBjbGFzcz0iY29sLXNtLTkgY29sLW1kLTggY29sLWxnLTkgdGV4dC1tdXRlZCBtYXJnaW4tYm90dG9tIGNpdGF0aW9uLXN0YW5kYXJkcyI+TGVhcm4gYWJvdXQgPGEgaHJlZj0iaHR0cHM6Ly9kYXRhdmVyc2Uub3JnL2Jlc3QtcHJhY3RpY2VzL2RhdGEtY2l0YXRpb24iIHRpdGxlPSJEYXRhIENpdGF0aW9uIC0gRGF0YXZlcnNlLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPkRhdGEgQ2l0YXRpb24gU3RhbmRhcmRzPC9hPi48L2Rpdj48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzLTEyIGNvbC1zbS0xMiBjb2wtbWQtNCBjb2wtbGctMyBwdWxsLXJpZ2h0IG1hcmdpbi1ib3R0b20iPjxkaXYgaWQ9ImFjdGlvbkJ1dHRvbkJsb2NrIj48ZGl2IGNsYXNzPSJidG4tZ3JvdXAgYnRuLWdyb3VwLWp1c3RpZmllZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ0bi1ncm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSBidG4tYWNjZXNzLWRhdGFzZXQgZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iIGFyaWEtaGFzcG9wdXA9InRydWUiIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY2Nlc3MgRGF0YXNldCA8c3BhbiBjbGFzcz0iY2FyZXQiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51IHB1bGwtcmlnaHQgdGV4dC1sZWZ0IiBzdHlsZT0icGFkZGluZy1sZWZ0OjFlbTsgcGFkZGluZy1yaWdodDoxZW07Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24taGVhZGVyIj5Eb3dubG9hZCBPcHRpb25zIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvbGk+PGxpPjxhIGlkPSJkYXRhc2V0Rm9ybTpqX2lkdDI2NCIgaHJlZj0iIyIgY2xhc3M9InVpLWNvbW1hbmRsaW5rIHVpLXdpZGdldCBidG4tZG93bmxvYWQiIG9uY2xpY2s9IlByaW1lRmFjZXMuYWIoe3M6JnF1b3Q7ZGF0YXNldEZvcm06al9pZHQyNjQmcXVvdDssZjomcXVvdDtkYXRhc2V0Rm9ybSZxdW90Oyx1OiZxdW90O2RhdGFzZXRGb3JtJnF1b3Q7LG9uY286ZnVuY3Rpb24oeGhyLHN0YXR1cyxhcmdzLGRhdGEpe3Nob3dQb3B1cCgpOzt9LGZwOiZxdW90O2RhdGFzZXRGb3JtOnRvcERhdGFzZXRCbG9ja0ZyYWdtZW50JnF1b3Q7fSk7cmV0dXJuIGZhbHNlOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWklQICgzNC41IE1CKTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ0bi1ncm91cCBidG4tZ3JvdXAtanVzdGlmaWVkIj48YSBpZD0iZGF0YXNldEZvcm06al9pZHQ0MDAiIGhyZWY9IiMiIGNsYXNzPSJ1aS1jb21tYW5kbGluayB1aS13aWRnZXQgYnRuIGJ0bi1kZWZhdWx0IGJ0bi14cyBidG4tY29udGFjdCIgb25jbGljaz0iUHJpbWVGYWNlcy5hYih7czomcXVvdDtkYXRhc2V0Rm9ybTpqX2lkdDQwMCZxdW90OyxmOiZxdW90O2RhdGFzZXRGb3JtJnF1b3Q7LHU6JnF1b3Q7Y29udGFjdERpYWxvZyZxdW90OyxvbmNvOmZ1bmN0aW9uKHhocixzdGF0dXMsYXJncyxkYXRhKXtQRignY29udGFjdEZvcm0nKS5zaG93KCk7fSxmcDomcXVvdDtkYXRhc2V0Rm9ybTp0b3BEYXRhc2V0QmxvY2tGcmFnbWVudCZxdW90O30pO3JldHVybiBmYWxzZTsiIHRpdGxlPSJDb250YWN0IERhdGFzZXQgT3duZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGFjdCBPd25lcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+PGEgaWQ9ImRhdGFzZXRGb3JtOmpfaWR0NDAyIiBocmVmPSIjIiBjbGFzcz0idWktY29tbWFuZGxpbmsgdWktd2lkZ2V0IGJ0biBidG4tZGVmYXVsdCBidG4teHMgYnRuLXNoYXJlIiBvbmNsaWNrPSJQcmltZUZhY2VzLmFiKHtzOiZxdW90O2RhdGFzZXRGb3JtOmpfaWR0NDAyJnF1b3Q7LGY6JnF1b3Q7ZGF0YXNldEZvcm0mcXVvdDssb25jbzpmdW5jdGlvbih4aHIsc3RhdHVzLGFyZ3MsZGF0YSl7UEYoJ3NoYXJlRGlhbG9nJykuc2hvdygpO3NoYXJycmUoKTs7fSxmcDomcXVvdDtkYXRhc2V0Rm9ybTp0b3BEYXRhc2V0QmxvY2tGcmFnbWVudCZxdW90O30pO3JldHVybiBmYWxzZTsiIHRpdGxlPSJTaGFyZSBEYXRhc2V0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYXJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48ZGl2IHN0eWxlPSJjbGVhcjpyaWdodDsiIGNsYXNzPSJjb2wteHMtMTIgY29sLXNtLTEyIGNvbC1tZC00IGNvbC1sZy0zIHB1bGwtcmlnaHQgbWFyZ2luLWJvdHRvbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Im1ldHJpY3MtYmxvY2siPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Im1ldHJpY3MtaGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFzZXQgTWV0cmljcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXF1ZXN0aW9uLXNpZ24gdG9vbHRpcC1pY29uIiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9ImF1dG8gdG9wIiBkYXRhLXRyaWdnZXI9ImhvdmVyIiBkYXRhLW9yaWdpbmFsLXRpdGxlPSJBZ2dyZWdhdGVkIG1ldHJpY3MgZm9yIHRoaXMgZGF0YXNldC4iPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJtZXRyaWNzLWJvZHkiPjxkaXYgY2xhc3M9Im1ldHJpY3MtY291bnQtYmxvY2siPjIxNCBEb3dubG9hZHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXF1ZXN0aW9uLXNpZ24gdG9vbHRpcC1pY29uIiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9ImF1dG8gdG9wIiBkYXRhLW9yaWdpbmFsLXRpdGxlPSJUb3RhbCBhZ2dyZWdhdGVkIGRvd25sb2FkcyBvZiBmaWxlcyBpbiB0aGlzIGRhdGFzZXQuIj48L3NwYW4+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJkYXRhc2V0LWNvbG9yZGVyLWJsb2NrIiBjbGFzcz0idmlzaWJsZS1tZC1ibG9jayB2aXNpYmxlLWxnLWJsb2NrIGNvbC1tZC04IGNvbC1sZy05Ij48L2Rpdj48ZGl2IGlkPSJkYXRhc2V0LXN1bW1hcnktbWV0YWRhdGEiIGNsYXNzPSJjb2wteHMtMTIgY29sLXNtLTEyIGNvbC1tZC04IGNvbC1sZy05IG1ldGFkYXRhLWNvbnRhaW5lciBwYWRkaW5nLW5vbmUgbWFyZ2luLWJvdHRvbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9Im1ldGFkYXRhIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+PHRyIGlkPSJkc0Rlc2NyaXB0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9InJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXF1ZXN0aW9uLXNpZ24gdG9vbHRpcC1pY29uIiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9ImF1dG8gcmlnaHQiIGRhdGEtb3JpZ2luYWwtdGl0bGU9IkEgc3VtbWFyeSBkZXNjcmliaW5nIHRoZSBwdXJwb3NlLCBuYXR1cmUsIGFuZCBzY29wZSBvZiB0aGUgRGF0YXNldCI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+PHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+U3VtbWFyeSBvZiBhc3NvY2lhdGlvbiB0ZXN0cyBmb3IgTmF0dXJlIEdlbmV0aWNzIHB1YmxpY2F0aW9uICJJZGVudGlmaWNhdGlvbiBvZiBtdWx0aXBsZSByaXNrIHZhcmlhbnRzIGZvciBhbmt5bG9zaW5nIHNwb25keWxpdGlzIHRocm91Z2ggaGlnaC1kZW5zaXR5IGdlbm90eXBpbmcgb2YgaW1tdW5lLXJlbGF0ZWQgbG9jaSIuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC90ZD48L3RyPjx0ciBpZD0ic3ViamVjdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPSJyb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdWJqZWN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXF1ZXN0aW9uLXNpZ24gdG9vbHRpcC1pY29uIiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9ImF1dG8gcmlnaHQiIGRhdGEtb3JpZ2luYWwtdGl0bGU9IlRoZSBhcmVhIG9mIHN0dWR5IHJlbGV2YW50IHRvIHRoZSBEYXRhc2V0Ij48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD48dGQ+TWVkaWNpbmUsIEhlYWx0aCBhbmQgTGlmZSBTY2llbmNlczwvdGQ+PC90cj48dHIgaWQ9ImtleXdvcmRzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9InJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtleXdvcmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tcXVlc3Rpb24tc2lnbiB0b29sdGlwLWljb24iIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0iYXV0byByaWdodCIgZGF0YS1vcmlnaW5hbC10aXRsZT0iQSBrZXkgdGVybSB0aGF0IGRlc2NyaWJlcyBhbiBpbXBvcnRhbnQgYXNwZWN0IG9mIHRoZSBEYXRhc2V0IGFuZCBpbmZvcm1hdGlvbiBhYm91dCBhbnkgY29udHJvbGxlZCB2b2NhYnVsYXJ5IHVzZWQiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4gR2Vub21lLVdpZGUgQXNzb2NpYXRpb24gU3R1ZGllcywgQW5reWxvc2luZyBzcG9uZHlsaXRpczwvdGQ+PC90cj48dHIgaWQ9InB1YmxpY2F0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9InJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0ZWQgUHVibGljYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tcXVlc3Rpb24tc2lnbiB0b29sdGlwLWljb24iIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0iYXV0byByaWdodCIgZGF0YS1vcmlnaW5hbC10aXRsZT0iVGhlIGFydGljbGUgb3IgcmVwb3J0IHRoYXQgdXNlcyB0aGUgZGF0YSBpbiB0aGUgRGF0YXNldC4gVGhlIGZ1bGwgbGlzdCBvZiByZWxhdGVkIHB1YmxpY2F0aW9ucyB3aWxsIGJlIGRpc3BsYXllZCBvbiB0aGUgbWV0YWRhdGEgdGFiIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD48dGQ+MTAuMTAzOC9uZy4yNjY3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIj48L2E+PC90ZD48L3RyPjx0ciBpZD0ibm90ZXNUZXh0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9InJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXF1ZXN0aW9uLXNpZ24gdG9vbHRpcC1pY29uIiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9ImF1dG8gcmlnaHQiIGRhdGEtb3JpZ2luYWwtdGl0bGU9IkFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIERhdGFzZXQiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPjx0ZD5FdXJvcGVhbl9DYXNlX0NvbnRyb2xfUmVzdWx0cy50eHQ6IHN1bW1hcnkgZGF0YSBmb3IgRXVyb3BlYW4gY29ob3J0IEFzaWFuX0Nhc2VfQ29udHJvbF9SZXN1bHRzLnR4dDogc3VtbWFyeSBkYXRhIGZvciBBc2lhbiBjb2hvcnQgRXVyb3BlYW5fQXNpYW5fQ2FzZV9Db250cm9sX1Jlc3VsdHMudHh0OiBzdW1tYXJ5IGRhdGEgZm9yIGNvbWJpbmVkIGNvaG9ydDwvdGQ+PC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPSJyb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpY2Vuc2UvRGF0YSBVc2UgQWdyZWVtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9saWNlbnNlYnV0dG9ucy5uZXQvcC96ZXJvLzEuMC84OHgzMS5wbmciIHRpdGxlPSJDcmVhdGl2ZSBDb21tb25zIENDMCAxLjAgVW5pdmVyc2FsIFB1YmxpYyBEb21haW4gRGVkaWNhdGlvbi4iIHN0eWxlPSJkaXNwbGF5Om5vbmUiIG9ubG9hZD0idGhpcy5zdHlsZS5kaXNwbGF5PSdpbmxpbmUnIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAiIHRpdGxlPSJDcmVhdGl2ZSBDb21tb25zIENDMCAxLjAgVW5pdmVyc2FsIFB1YmxpYyBEb21haW4gRGVkaWNhdGlvbi4iIHRhcmdldD0iX2JsYW5rIj5DQzAgMS4wPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBpZD0iY29udGVudFRhYnMiPjxkaXYgaWQ9ImRhdGFzZXRGb3JtOnBhZ2VSZWZyZXNoRnJhZ21lbnQiPjxpbnB1dCBpZD0iZGF0YXNldEZvcm06ZGF0YXNldExvY2tlZEZvckFueVJlYXNvblZhcmlhYmxlIiB0eXBlPSJoaWRkZW4iIG5hbWU9ImRhdGFzZXRGb3JtOmRhdGFzZXRMb2NrZWRGb3JBbnlSZWFzb25WYXJpYWJsZSIgdmFsdWU9ImZhbHNlIiAvPjxpbnB1dCBpZD0iZGF0YXNldEZvcm06ZGF0YXNldFN0YXRlQ2hhbmdlZFZhcmlhYmxlIiB0eXBlPSJoaWRkZW4iIG5hbWU9ImRhdGFzZXRGb3JtOmRhdGFzZXRTdGF0ZUNoYW5nZWRWYXJpYWJsZSIgdmFsdWU9ImZhbHNlIiAvPjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmpfaWR0NjcxIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPnJlZnJlc2hBbGxMb2Nrc0NvbW1hbmQgPSBmdW5jdGlvbigpIHtyZXR1cm4gUHJpbWVGYWNlcy5hYih7czoiZGF0YXNldEZvcm06al9pZHQ2NzEiLGY6ImRhdGFzZXRGb3JtIixwOiJkYXRhc2V0Rm9ybTpqX2lkdDY3MSIsdToiZGF0YXNldEZvcm06cGFnZVJlZnJlc2hGcmFnbWVudCBtZXNzYWdlUGFuZWwiLHBhOmFyZ3VtZW50c1swXSxmcDoiZGF0YXNldEZvcm06cGFnZVJlZnJlc2hGcmFnbWVudCJ9KTt9PC9zY3JpcHQ+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06al9pZHQ2NzIiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+cmVmcmVzaEFsbENvbW1hbmQgPSBmdW5jdGlvbigpIHtyZXR1cm4gUHJpbWVGYWNlcy5hYih7czoiZGF0YXNldEZvcm06al9pZHQ2NzIiLGY6ImRhdGFzZXRGb3JtIixwOiJkYXRhc2V0Rm9ybTpqX2lkdDY3MiIsdToiZGF0YXNldEZvcm06dG9wRGF0YXNldEJsb2NrRnJhZ21lbnQgZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlIG1lc3NhZ2VQYW5lbCIscGE6YXJndW1lbnRzWzBdLGZwOiJkYXRhc2V0Rm9ybTpwYWdlUmVmcmVzaEZyYWdtZW50In0pO308L3NjcmlwdD48YnV0dG9uIGlkPSJkYXRhc2V0Rm9ybTpyZWZyZXNoQnV0dG9uIiBuYW1lPSJkYXRhc2V0Rm9ybTpyZWZyZXNoQnV0dG9uIiBjbGFzcz0iIiBvbmNsaWNrPSJQcmltZUZhY2VzLmFiKHtzOiZxdW90O2RhdGFzZXRGb3JtOnJlZnJlc2hCdXR0b24mcXVvdDssZjomcXVvdDtkYXRhc2V0Rm9ybSZxdW90OyxwOiZxdW90O2RhdGFzZXRGb3JtOnJlZnJlc2hCdXR0b24mcXVvdDssdTomcXVvdDtkYXRhc2V0Rm9ybTp0b3BEYXRhc2V0QmxvY2tGcmFnbWVudCBkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGUmcXVvdDssZnA6JnF1b3Q7ZGF0YXNldEZvcm06cGFnZVJlZnJlc2hGcmFnbWVudCZxdW90O30pO3JldHVybiBmYWxzZTsiIHN0eWxlPSJkaXNwbGF5Om5vbmUiIHR5cGU9InN1Ym1pdCI+PHNwYW4gY2xhc3M9InVpLWJ1dHRvbi10ZXh0IHVpLWMiPnVpLWJ1dHRvbjwvc3Bhbj48L2J1dHRvbj48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpyZWZyZXNoQnV0dG9uX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIkNvbW1hbmRCdXR0b24iLCJyZWZyZXNoQnV0dG9uIix7aWQ6ImRhdGFzZXRGb3JtOnJlZnJlc2hCdXR0b24ifSk7fSk7PC9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NyaXB0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPCFbQ0RBVEFbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gamF2YXNjcmlwdCBmb3IgcmVmcmVzaGluZyBwYWdlIHdoZW4gbG9ja3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnJlYWR5KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaElmU3RpbGxMb2NrZWQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiByZWZyZXNoSWZTdGlsbExvY2tlZCgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQoJ2lucHV0W2lkJD0iZGF0YXNldExvY2tlZEZvckFueVJlYXNvblZhcmlhYmxlIl0nKS52YWwoKSA9PT0gJ3RydWUnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBkYXRhc2V0IGlzIGxvY2tlZCwgaW5zdHJ1Y3QgdGhlIHBhZ2UgdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdhaXQgYW5kIGNoZWNrIGFnYWluOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FpdEFuZENoZWNrTG9ja0FnYWluKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBub3QgbG9ja2VkLCBoYXMgaXQganVzdCBiZWVuIHVubG9ja2VkPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQoJ2lucHV0W2lkJD0iZGF0YXNldFN0YXRlQ2hhbmdlZFZhcmlhYmxlIl0nKS52YWwoKSA9PT0gJ3RydWUnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRm9yIHdoYXRldmVyIHVua25vd24gUHJpbWVGYWNlcyByZWFzb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcGFnZSBuZWVkcyB0byBiZSByZWZyZXNoZWQgdHdpY2UsIGZvciBhbGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcHVsbCBkb3duIG1lbnVzIHRvIHVwZGF0ZSBwcm9wZXJseToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoQWxsQ29tbWFuZCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFlvdSBjYW4ndCBqdXN0IHJ1biAyIHJlZnJlc2hBbGxDb21tYW5kKClzIGluIGEgcm93CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWl0aGVyOyBiZWNhdXNlIHRoZSBjb21tYW5kIGhhcyBhbiAidXBkYXRlPUBhbGwiIG9uIGl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNvIEkgZ3Vlc3MgaWYgeW91IHRyeSB0byBleGVjdXRlIHRoZSAybmQgb25lIHJpZ2h0IGFmdGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGZpcnN0IG9uZSwgdGhpcyBmcmFnbWVudCBpcyBzdGlsbCBnb2luZyB0byBiZSBsb2FkaW5nIC0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzbyB0aGVyZSB3b3VsZCBub3QgeWV0IGJlIGEgY29tbWFuZCB0byBydW4hIChpdCBuZWVkcyB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJlIHJlbmRlcmVkLCBiZWZvcmUgeW91IGNhbiBleGVjdXRlIGl0LCB0aGF0IGlzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGJ1dHRvbiBkb2Vzbid0IGRvIGFueXRoaW5nLCBidXQgaXQgaGFzIGFuIHVwZGF0ZT0iQGFsbCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXR0cmlidXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCdidXR0b25baWQkPSJyZWZyZXNoQnV0dG9uIl0nKS50cmlnZ2VyKCdjbGljaycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3JlZnJlc2hBbGxDb21tYW5kKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTUwMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gd2FpdEFuZENoZWNrTG9ja0FnYWluKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZnJlc2ggdGhlIGxvY2sgaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiYWNraW5nIGJlYW47IGkuZS4sIGNoZWNrLCBpZiB0aGUgaW5nZXN0IGhhcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxyZWFkeSBjb21wbGV0ZWQgaW4gdGhlIGJhY2tncm91bmQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyQoJ2J1dHRvbltpZCQ9InJlZnJlc2hCdXR0b24iXScpLnRyaWdnZXIoJ2NsaWNrJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3JlZnJlc2hMb2NrQ29tbWFuZCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaEFsbExvY2tzQ29tbWFuZCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDAwMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vXV0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NjcmlwdD48L2Rpdj48ZGl2IGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3IiBjbGFzcz0idWktdGFicyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1oaWRkZW4tY29udGFpbmVyIHVpLXRhYnMtdG9wIiBkYXRhLXdpZGdldD0iY29udGVudCI+PHVsIGNsYXNzPSJ1aS10YWJzLW5hdiB1aS1oZWxwZXItcmVzZXQgdWktd2lkZ2V0LWhlYWRlciB1aS1jb3JuZXItYWxsIiByb2xlPSJ0YWJsaXN0Ij48bGkgY2xhc3M9InVpLXRhYnMtaGVhZGVyIHVpLXN0YXRlLWRlZmF1bHQgdWktdGFicy1zZWxlY3RlZCB1aS1zdGF0ZS1hY3RpdmUgdWktY29ybmVyLXRvcCIgcm9sZT0idGFiIiBhcmlhLWV4cGFuZGVkPSJ0cnVlIiBhcmlhLXNlbGVjdGVkPSJ0cnVlIiBkYXRhLWluZGV4PSIwIj48YSBocmVmPSIjZGF0YXNldEZvcm06dGFiVmlldzpkYXRhRmlsZXNUYWIiIHRhYmluZGV4PSItMSI+RmlsZXM8L2E+PC9saT48bGkgY2xhc3M9InVpLXRhYnMtaGVhZGVyIHVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLXRvcCIgcm9sZT0idGFiIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSIgYXJpYS1zZWxlY3RlZD0iZmFsc2UiIGRhdGEtaW5kZXg9IjEiPjxhIGhyZWY9IiNkYXRhc2V0Rm9ybTp0YWJWaWV3Om1ldGFkYXRhTWFwVGFiIiB0YWJpbmRleD0iLTEiPk1ldGFkYXRhPC9hPjwvbGk+PGxpIGNsYXNzPSJ1aS10YWJzLWhlYWRlciB1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci10b3AiIHJvbGU9InRhYiIgYXJpYS1leHBhbmRlZD0iZmFsc2UiIGFyaWEtc2VsZWN0ZWQ9ImZhbHNlIiBkYXRhLWluZGV4PSIyIj48YSBocmVmPSIjZGF0YXNldEZvcm06dGFiVmlldzp0ZXJtc1RhYiIgdGFiaW5kZXg9Ii0xIj5UZXJtczwvYT48L2xpPjxsaSBjbGFzcz0idWktdGFicy1oZWFkZXIgdWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItdG9wIiByb2xlPSJ0YWIiIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIiBhcmlhLXNlbGVjdGVkPSJmYWxzZSIgZGF0YS1pbmRleD0iMyI+PGEgaHJlZj0iI2RhdGFzZXRGb3JtOnRhYlZpZXc6dmVyc2lvbnNUYWIiIHRhYmluZGV4PSItMSI+VmVyc2lvbnM8L2E+PC9saT48L3VsPjxkaXYgY2xhc3M9InVpLXRhYnMtcGFuZWxzIj48ZGl2IGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OmRhdGFGaWxlc1RhYiIgY2xhc3M9InVpLXRhYnMtcGFuZWwgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWJvdHRvbSIgcm9sZT0idGFicGFuZWwiIGFyaWEtaGlkZGVuPSJmYWxzZSIgZGF0YS1pbmRleD0iMCI+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpqX2lkdDEwNTYiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+cmVmcmVzaFBhZ2luYXRvciA9IGZ1bmN0aW9uKCkge3JldHVybiBQcmltZUZhY2VzLmFiKHtzOiJkYXRhc2V0Rm9ybTp0YWJWaWV3OmpfaWR0MTA1NiIsZjoiZGF0YXNldEZvcm0iLHA6ImRhdGFzZXRGb3JtOnRhYlZpZXc6al9pZHQxMDU2Iix1OiJkYXRhc2V0Rm9ybSIscGE6YXJndW1lbnRzWzBdfSk7fTwvc2NyaXB0PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOnRhYlZpZXc6al9pZHQxMDYxIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPnJlYmluZENvbW1hbmQgPSBmdW5jdGlvbigpIHtyZXR1cm4gUHJpbWVGYWNlcy5hYih7czoiZGF0YXNldEZvcm06dGFiVmlldzpqX2lkdDEwNjEiLGY6ImRhdGFzZXRGb3JtIixwOiJkYXRhc2V0Rm9ybTp0YWJWaWV3OmpfaWR0MTA2MSIsdToiZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlIixwYTphcmd1bWVudHNbMF19KTt9PC9zY3JpcHQ+PGRpdiBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlIiBjbGFzcz0idWktZGF0YXRhYmxlIHVpLXdpZGdldCIgc3R5bGU9Im1hcmdpbi1yaWdodDoxcHg7Ij48ZGl2IGNsYXNzPSJ1aS1kYXRhdGFibGUtaGVhZGVyIHVpLXdpZGdldC1oZWFkZXIgdWktY29ybmVyLXRvcCI+PGRpdiBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOmZpbGVzSGVhZGVyQmxvY2siIGNsYXNzPSJyb3ciPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzLTUiPjxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIj48bGFiZWwgZm9yPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6c2VhcmNoRmlsZXMiIGlkPSJzZWFyY2hMYWJlbCIgY2xhc3M9InNyLW9ubHkiPlNlYXJjaDwvbGFiZWw+PGlucHV0IGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6c2VhcmNoRmlsZXMiIG5hbWU9ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZTpzZWFyY2hGaWxlcyIgdHlwZT0idGV4dCIgdmFsdWU9IiIgY2xhc3M9InVpLWlucHV0ZmllbGQgdWktaW5wdXR0ZXh0IHVpLXdpZGdldCB1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwgZm9ybS1jb250cm9sIiB0aXRsZT0iU2VhcmNoIiBvbmtleXByZXNzPSJpZiAoZXZlbnQua2V5Q29kZSA9PSAxMykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VibWl0c2VhcmNoKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0iIGFyaWEtbGFiZWxsZWRieT0ic2VhcmNoTGFiZWwiIC8+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOnNlYXJjaEZpbGVzX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIklucHV0VGV4dCIsImlucHV0U2VhcmNoVGVybSIse2lkOiJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6c2VhcmNoRmlsZXMifSk7fSk7PC9zY3JpcHQ+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOmpfaWR0MTA3Ml9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJXYXRlcm1hcmsiLCJ3aWRnZXRfZGF0YXNldEZvcm1fdGFiVmlld19maWxlc1RhYmxlX2pfaWR0MTA3MiIse2lkOiJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6al9pZHQxMDcyIix2YWx1ZToiU2VhcmNoIHRoaXMgZGF0YXNldC4uLiIsdGFyZ2V0OiJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6c2VhcmNoRmlsZXMifSk7fSk7PC9zY3JpcHQ+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOmpfaWR0MTA3MyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5zdWJtaXRzZWFyY2ggPSBmdW5jdGlvbigpIHtyZXR1cm4gUHJpbWVGYWNlcy5hYih7czoiZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOmpfaWR0MTA3MyIsZjoiZGF0YXNldEZvcm0iLHA6ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZTpqX2lkdDEwNzMgQHdpZGdldFZhcihpbnB1dFNlYXJjaFRlcm0pIix1OiJkYXRhc2V0Rm9ybSIscHM6dHJ1ZSxwYTphcmd1bWVudHNbMF19KTt9PC9zY3JpcHQ+CgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaW5wdXQtZ3JvdXAtYnRuIj48YSBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOmpfaWR0MTA3NSIgaHJlZj0iIyIgY2xhc3M9InVpLWNvbW1hbmRsaW5rIHVpLXdpZGdldCBidG4gYnRuLWRlZmF1bHQgYm9vdHN0cmFwLWJ1dHRvbi10b29sdGlwIiBvbmNsaWNrPSJQcmltZUZhY2VzLmFiKHtzOiZxdW90O2RhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZTpqX2lkdDEwNzUmcXVvdDssZjomcXVvdDtkYXRhc2V0Rm9ybSZxdW90OyxwOiZxdW90O2RhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZTpqX2lkdDEwNzUgQHdpZGdldFZhcihpbnB1dFNlYXJjaFRlcm0pJnF1b3Q7LHU6JnF1b3Q7ZGF0YXNldEZvcm0mcXVvdDsscHM6dHJ1ZX0pO3JldHVybiBmYWxzZTsiIHRpdGxlPSJGaW5kIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1zZWFyY2ggbm8tdGV4dCI+PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wteHMtNyB0ZXh0LXJpZ2h0Ij4KICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206MTBweDsiIGNsYXNzPSJyb3ciPjxkaXYgY2xhc3M9ImNvbC14cy05IHRleHQtbGVmdCI+PGRpdiBzdHlsZT0iZm9udC13ZWlnaHQ6bm9ybWFsOyIgY2xhc3M9InRleHQtbXV0ZWQgc21hbGwiPkZpbHRlciBieTwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbi1yaWdodDoyMHB4OyIgY2xhc3M9ImJ0bi1ncm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1saW5rIGRyb3Bkb3duLXRvZ2dsZSIgc3R5bGU9InBhZGRpbmc6MDsiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biIgYXJpYS1oYXNwb3B1cD0idHJ1ZSIgYXJpYS1leHBhbmRlZD0iZmFsc2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZSBUeXBlOiA8c3BhbiBjbGFzcz0iIj5BbGw8L3NwYW4+IDxzcGFuIGNsYXNzPSJjYXJldCI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii9kYXRhc2V0LnhodG1sO2pzZXNzaW9uaWQ9MzllYTI2MTE2MTgyYjc5MDY4ZjY2ZjQ5MTFjZT9wZXJzaXN0ZW50SWQ9ZG9pJTNBMTAuNzkxMCUyRkRWTiUyRk5KN1hTTyZhbXA7dmVyc2lvbj0mYW1wO3E9JmFtcDtmaWxlQWNjZXNzPSZhbXA7ZmlsZVRhZz0mYW1wO2ZpbGVTb3J0RmllbGQ9JmFtcDtmaWxlU29ydE9yZGVyPSI+PHNwYW4gY2xhc3M9ImhpZ2hsaWdodEJvbGQiPkFsbDwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSByb2xlPSJzZXBhcmF0b3IiIGNsYXNzPSJkaXZpZGVyIj48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIvZGF0YXNldC54aHRtbDtqc2Vzc2lvbmlkPTM5ZWEyNjExNjE4MmI3OTA2OGY2NmY0OTExY2U/cGVyc2lzdGVudElkPWRvaSUzQTEwLjc5MTAlMkZEVk4lMkZOSjdYU08mYW1wO3ZlcnNpb249JmFtcDtxPSZhbXA7ZmlsZVR5cGVHcm91cEZhY2V0PSUyMlRleHQlMjImYW1wO2ZpbGVBY2Nlc3M9JmFtcDtmaWxlVGFnPSZhbXA7ZmlsZVNvcnRGaWVsZD0mYW1wO2ZpbGVTb3J0T3JkZXI9Ij48c3BhbiBjbGFzcz0iIj5UZXh0ICgzKTwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW4tcmlnaHQ6MjBweDsiIGNsYXNzPSJidG4tZ3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tbGluayBkcm9wZG93bi10b2dnbGUiIHN0eWxlPSJwYWRkaW5nOjA7IiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iIGFyaWEtaGFzcG9wdXA9InRydWUiIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjY2VzczogPHNwYW4gY2xhc3M9IiI+QWxsPC9zcGFuPiA8c3BhbiBjbGFzcz0iY2FyZXQiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIvZGF0YXNldC54aHRtbDtqc2Vzc2lvbmlkPTM5ZWEyNjExNjE4MmI3OTA2OGY2NmY0OTExY2U/cGVyc2lzdGVudElkPWRvaSUzQTEwLjc5MTAlMkZEVk4lMkZOSjdYU08mYW1wO3ZlcnNpb249JmFtcDtxPSZhbXA7ZmlsZVR5cGVHcm91cEZhY2V0PSZhbXA7ZmlsZVRhZz0mYW1wO2ZpbGVTb3J0RmllbGQ9JmFtcDtmaWxlU29ydE9yZGVyPSI+PHNwYW4gY2xhc3M9ImhpZ2hsaWdodEJvbGQiPkFsbDwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSByb2xlPSJzZXBhcmF0b3IiIGNsYXNzPSJkaXZpZGVyIj48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIvZGF0YXNldC54aHRtbDtqc2Vzc2lvbmlkPTM5ZWEyNjExNjE4MmI3OTA2OGY2NmY0OTExY2U/cGVyc2lzdGVudElkPWRvaSUzQTEwLjc5MTAlMkZEVk4lMkZOSjdYU08mYW1wO3ZlcnNpb249JmFtcDtxPSZhbXA7ZmlsZVR5cGVHcm91cEZhY2V0PSZhbXA7ZmlsZUFjY2Vzcz1QdWJsaWMmYW1wO2ZpbGVUYWc9JmFtcDtmaWxlU29ydEZpZWxkPSZhbXA7ZmlsZVNvcnRPcmRlcj0iPjxzcGFuIGNsYXNzPSIiPlB1YmxpYyAoMyk8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+PC9kaXY+PC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzLTMgdGV4dC1yaWdodCAiPgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ0bi1ncm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IGRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIiBhcmlhLWhhc3BvcHVwPSJ0cnVlIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1zb3J0Ij48L3NwYW4+IFNvcnQgPHNwYW4gY2xhc3M9ImNhcmV0Ij48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUgcHVsbC1yaWdodCB0ZXh0LWxlZnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii9kYXRhc2V0LnhodG1sO2pzZXNzaW9uaWQ9MzllYTI2MTE2MTgyYjc5MDY4ZjY2ZjQ5MTFjZT9wZXJzaXN0ZW50SWQ9ZG9pJTNBMTAuNzkxMCUyRkRWTiUyRk5KN1hTTyZhbXA7dmVyc2lvbj0mYW1wO3E9JmFtcDtmaWxlVHlwZUdyb3VwRmFjZXQ9JmFtcDtmaWxlQWNjZXNzPSI+PHNwYW4gY2xhc3M9ImhpZ2hsaWdodEJvbGQiPk5hbWUgKEEtWik8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iL2RhdGFzZXQueGh0bWw7anNlc3Npb25pZD0zOWVhMjYxMTYxODJiNzkwNjhmNjZmNDkxMWNlP3BlcnNpc3RlbnRJZD1kb2klM0ExMC43OTEwJTJGRFZOJTJGTko3WFNPJmFtcDt2ZXJzaW9uPSZhbXA7cT0mYW1wO2ZpbGVUeXBlR3JvdXBGYWNldD0mYW1wO2ZpbGVBY2Nlc3M9JmFtcDtmaWxlU29ydEZpZWxkPW5hbWUmYW1wO2ZpbGVTb3J0T3JkZXI9ZGVzYyI+PHNwYW4gY2xhc3M9IiI+TmFtZSAoWi1BKTwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIvZGF0YXNldC54aHRtbDtqc2Vzc2lvbmlkPTM5ZWEyNjExNjE4MmI3OTA2OGY2NmY0OTExY2U/cGVyc2lzdGVudElkPWRvaSUzQTEwLjc5MTAlMkZEVk4lMkZOSjdYU08mYW1wO3ZlcnNpb249JmFtcDtxPSZhbXA7ZmlsZVR5cGVHcm91cEZhY2V0PSZhbXA7ZmlsZUFjY2Vzcz0mYW1wO2ZpbGVTb3J0RmllbGQ9ZGF0ZSI+PHNwYW4gY2xhc3M9IiI+TmV3ZXN0PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii9kYXRhc2V0LnhodG1sO2pzZXNzaW9uaWQ9MzllYTI2MTE2MTgyYjc5MDY4ZjY2ZjQ5MTFjZT9wZXJzaXN0ZW50SWQ9ZG9pJTNBMTAuNzkxMCUyRkRWTiUyRk5KN1hTTyZhbXA7dmVyc2lvbj0mYW1wO3E9JmFtcDtmaWxlVHlwZUdyb3VwRmFjZXQ9JmFtcDtmaWxlQWNjZXNzPSZhbXA7ZmlsZVNvcnRGaWVsZD1kYXRlJmFtcDtmaWxlU29ydE9yZGVyPWRlc2MiPjxzcGFuIGNsYXNzPSIiPk9sZGVzdDwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIvZGF0YXNldC54aHRtbDtqc2Vzc2lvbmlkPTM5ZWEyNjExNjE4MmI3OTA2OGY2NmY0OTExY2U/cGVyc2lzdGVudElkPWRvaSUzQTEwLjc5MTAlMkZEVk4lMkZOSjdYU08mYW1wO3ZlcnNpb249JmFtcDtxPSZhbXA7ZmlsZVR5cGVHcm91cEZhY2V0PSZhbXA7ZmlsZUFjY2Vzcz0mYW1wO2ZpbGVTb3J0RmllbGQ9c2l6ZSI+PHNwYW4gY2xhc3M9IiI+U2l6ZTwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIvZGF0YXNldC54aHRtbDtqc2Vzc2lvbmlkPTM5ZWEyNjExNjE4MmI3OTA2OGY2NmY0OTExY2U/cGVyc2lzdGVudElkPWRvaSUzQTEwLjc5MTAlMkZEVk4lMkZOSjdYU08mYW1wO3ZlcnNpb249JmFtcDtxPSZhbXA7ZmlsZVR5cGVHcm91cEZhY2V0PSZhbXA7ZmlsZUFjY2Vzcz0mYW1wO2ZpbGVTb3J0RmllbGQ9dHlwZSI+PHNwYW4gY2xhc3M9IiI+VHlwZTwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9InVpLWRhdGF0YWJsZS10YWJsZXdyYXBwZXIiPjx0YWJsZSByb2xlPSJncmlkIiBzdHlsZT0ibWluLXdpZHRoOjEwMCU7d2lkdGg6YXV0bzsiPjx0aGVhZCBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlX2hlYWQiPjx0ciByb2xlPSJyb3ciPjx0aCBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOmpfaWR0MTI0OSIgY2xhc3M9InVpLXN0YXRlLWRlZmF1bHQgdWktc2VsZWN0aW9uLWNvbHVtbiB0ZXh0LWNlbnRlciIgcm9sZT0iY29sdW1uaGVhZGVyIiBhcmlhLWxhYmVsPSJTZWxlY3QgRmlsZXMiIHNjb3BlPSJjb2wiPjxzcGFuIGNsYXNzPSJ1aS1jb2x1bW4tdGl0bGUiPjwvc3Bhbj48ZGl2IGNsYXNzPSJ1aS1jaGtib3ggdWktY2hrYm94LWFsbCB1aS13aWRnZXQiPjxkaXYgaWQ9ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZV9oZWFkX2NoZWNrYm94IiByb2xlPSJjaGVja2JveCIgdGFiaW5kZXg9IjAiIGFyaWEtbGFiZWw9IlNlbGVjdCBBbGwiIGFyaWEtY2hlY2tlZD0iZmFsc2UiIGNsYXNzPSJ1aS1jaGtib3gtYm94IHVpLXdpZGdldCB1aS1jb3JuZXItYWxsIHVpLXN0YXRlLWRlZmF1bHQiPjxzcGFuIGNsYXNzPSJ1aS1jaGtib3gtaWNvbiB1aS1pY29uIHVpLWljb24tYmxhbmsgdWktYyI+PC9zcGFuPjwvZGl2PjwvZGl2PjwvdGg+PHRoIGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6al9pZHQxMjUwIiBjbGFzcz0idWktc3RhdGUtZGVmYXVsdCBjb2wtZmlsZS1tZXRhZGF0YSIgcm9sZT0iY29sdW1uaGVhZGVyIiBhcmlhLWxhYmVsPSJ7MH0gdG8gezF9IG9mIHsyfSB7MiwgY2hvaWNlLCAwI0ZpbGVzfDEjRmlsZXwyI0ZpbGVzfSIgc2NvcGU9ImNvbCI+PHNwYW4gY2xhc3M9InVpLWNvbHVtbi10aXRsZSI+PGRpdiBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOmZpbGVzSGVhZGVyQ291bnQiPjxzcGFuIGNsYXNzPSJoaWdobGlnaHRCb2xkIj4xIHRvIDMgb2YgMyBGaWxlczwvc3Bhbj48L2Rpdj48L3NwYW4+PC90aD48dGggaWQ9ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZTpqX2lkdDEyODYiIGNsYXNzPSJ1aS1zdGF0ZS1kZWZhdWx0IGNvbC1maWxlLWFjdGlvbiBidXR0b24tYmxvY2sgdGV4dC1yaWdodCIgcm9sZT0iY29sdW1uaGVhZGVyIiBhcmlhLWxhYmVsPSJGaWxlIEFjdGlvbnMiIHNjb3BlPSJjb2wiIHN0eWxlPSJ3aWR0aDo0MCU7Ij48c3BhbiBjbGFzcz0idWktY29sdW1uLXRpdGxlIj4KICAgICAgICAgICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBkb3dubG9hZEZpbGVzKHVybCwgZmlsZWxpc3QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZmlsZWxpc3QgPSBmaWxlbGlzdCArICcsJzsgLy9QcmV2ZW50cyBsYXN0IGZpbGUgZnJvbSBiZWluZyBkcm9wcGVkIG9uIHNlcnZlcgogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZm9ybSA9ICQoJzxmb3JtPjwvZm9ybT4nKS5hdHRyKCdhY3Rpb24nLCB1cmwpLmF0dHIoJ21ldGhvZCcsICdwb3N0JykuYXR0cignZW5jdHlwZScsICd0ZXh0L3BsYWluJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm0uYXBwZW5kKCQoIjxpbnB1dCAvPiIpLmF0dHIoJ3R5cGUnLCAnaGlkZGVuJykuYXR0cignbmFtZScsICdmaWxlSWRzJykuYXR0cigndmFsdWUnLCBmaWxlbGlzdCkpOwogICAgICAgICAgICAgICAgICAgICAgICAvL1N1Ym1pdCBhbmQgdGhlbiByZW1vdmUgZm9ybQogICAgICAgICAgICAgICAgICAgICAgICBmb3JtLmFwcGVuZFRvKCdib2R5Jykuc3VibWl0KCkucmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgPC9zY3JpcHQ+PGRpdiBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOmRvd25sb2FkQnV0dG9uQmxvY2tOb3JtYWwiIGNsYXNzPSJidG4tZ3JvdXAiPjxhIGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6al9pZHQxMzM3IiBocmVmPSIjIiBjbGFzcz0idWktY29tbWFuZGxpbmsgdWktd2lkZ2V0IGJ0biBidG4tZGVmYXVsdCBidG4tZG93bmxvYWQiIG9uY2xpY2s9ImlmICghdGVzdEZpbGVzU2VsZWN0ZWQoKSkgcmV0dXJuIGZhbHNlOztQcmltZUZhY2VzLmFiKHtzOiZxdW90O2RhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZTpqX2lkdDEzMzcmcXVvdDssZjomcXVvdDtkYXRhc2V0Rm9ybSZxdW90Oyx1OiZxdW90O2RhdGFzZXRGb3JtJnF1b3Q7LG9uY286ZnVuY3Rpb24oeGhyLHN0YXR1cyxhcmdzLGRhdGEpe3Nob3dQb3B1cCgpOzt9fSk7cmV0dXJuIGZhbHNlOyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPiBEb3dubG9hZAogICAgICAgICAgICAgICAgICAgIDwvYT48L2Rpdj48L3NwYW4+PC90aD48L3RyPjwvdGhlYWQ+PHRib2R5IGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGVfZGF0YSIgY2xhc3M9InVpLWRhdGF0YWJsZS1kYXRhIHVpLXdpZGdldC1jb250ZW50Ij48dHIgZGF0YS1yaT0iMCIgZGF0YS1yaz0iczM6Ly9kdm4tY2xvdWQ6MTVlZDU3YTY1MmUtNjcyODRhMzcyYzI5IiBjbGFzcz0idWktd2lkZ2V0LWNvbnRlbnQgdWktZGF0YXRhYmxlLWV2ZW4gdWktZGF0YXRhYmxlLXNlbGVjdGFibGUiIHJvbGU9InJvdyIgYXJpYS1zZWxlY3RlZD0iZmFsc2UiPjx0ZCByb2xlPSJncmlkY2VsbCIgY2xhc3M9InVpLXNlbGVjdGlvbi1jb2x1bW4gdGV4dC1jZW50ZXIiPjxkaXYgY2xhc3M9InVpLWNoa2JveCB1aS13aWRnZXQiPjxkaXYgaWQ9ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZV9zMzovL2R2bi1jbG91ZDoxNWVkNTdhNjUyZS02NzI4NGEzNzJjMjlfY2hlY2tib3giIHJvbGU9ImNoZWNrYm94IiB0YWJpbmRleD0iMCIgYXJpYS1sYWJlbD0iU2VsZWN0IEFzaWFuX0Nhc2VfQ29udHJvbF9SZXN1bHRzLnR4dCIgYXJpYS1jaGVja2VkPSJmYWxzZSIgY2xhc3M9InVpLWNoa2JveC1ib3ggdWktd2lkZ2V0IHVpLWNvcm5lci1hbGwgdWktc3RhdGUtZGVmYXVsdCI+PHNwYW4gY2xhc3M9InVpLWNoa2JveC1pY29uIHVpLWljb24gdWktaWNvbi1ibGFuayB1aS1jIj48L3NwYW4+PC9kaXY+PC9kaXY+PC90ZD48dGQgcm9sZT0iZ3JpZGNlbGwiIGNsYXNzPSJjb2wtZmlsZS1tZXRhZGF0YSI+PGRpdiBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOjA6ZmlsZUluZm9JbmNsdWRlLWZpbGVzVGFibGUiIGNsYXNzPSJ1aS1vdXRwdXRwYW5lbCB1aS13aWRnZXQgbWVkaWEiPgogICAgICAgIDxkaXYgY2xhc3M9Im1lZGlhLWxlZnQgY29sLWZpbGUtdGh1bWIiIHN0eWxlPSJwYWRkaW5nLXRvcDo0cHg7Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVkaWEtb2JqZWN0IHRodW1ibmFpbC1ibG9jayB0ZXh0LWNlbnRlciI+PHNwYW4gY2xhc3M9Imljb24tZG9jdW1lbnQgZmlsZS10aHVtYm5haWwtaWNvbiB0ZXh0LW11dGVkIj48L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1lZGlhLWJvZHkgY29sLWZpbGUtbWV0YWRhdGEiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWxlTmFtZU9yaWdpbmFsIj4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvZmlsZS54aHRtbD9wZXJzaXN0ZW50SWQ9ZG9pOjEwLjc5MTAvRFZOL05KN1hTTy9LM05STU8mYW1wO3ZlcnNpb249MS4wIj4KICAgICAgICAgICAgICAgICAgICAgICAgQXNpYW5fQ2FzZV9Db250cm9sX1Jlc3VsdHMudHh0CiAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtbXV0ZWQgc21hbGwiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6MDpmaWxlVHlwZSI+UGxhaW4gVGV4dDwvc3Bhbj48c3BhbiBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOjA6ZmlsZVNpemUiPiAtIDExLjAgTUI8L3NwYW4+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkYXRlQ3JlYXRlUHVibGlzaC1ibG9jayI+PHNwYW4gaWQ9ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZTowOmZpbGVDcmVhdGVQdWJsaXNoRGF0ZSI+UHVibGlzaGVkIFNlcCAzMCwgMjAxNzwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PjxkaXYgY2xhc3M9ImRvd25sb2Fkcy1ibG9jayI+PHNwYW4gaWQ9ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZTowOmZpbGVEb3dubG9hZENvdW50IiBjbGFzcz0idmlzaWJsZS14cy1ibG9jayB2aXNpYmxlLXNtLWJsb2NrIHZpc2libGUtbWQtaW5saW5lIHZpc2libGUtbGctaW5saW5lIj42MSBEb3dubG9hZHM8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iY2hlY2tzdW0tYmxvY2siPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjaGVja3N1bS10cnVuY2F0ZSBjaGVja3N1bS10b29sdGlwIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OjNweDsiIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0idG9wIiBkYXRhLWh0bWw9InRydWUiIGRhdGEtY2xpcGJvYXJkLWFjdGlvbj0iY29weSIgZGF0YS1jbGlwYm9hcmQtdGV4dD0iYmNjMDZhZWJmOTZjOTU0MDk5NTE5MmM4OWM5MWZiMjMiIHRpdGxlPSJDbGljayB0byBjb3B5Jmx0O2JyLyZndDtiY2MwNmFlYmY5NmM5NTQwOTk1MTkyYzg5YzkxZmIyMyI+TUQ1OiBiY2MwNmFlYmY5NmM5NTQwOTk1MTkyYzg5YzkxZmIyMzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1jb3B5IGJ0bi1jb3B5IGNoZWNrc3VtLXRvb2x0aXAiIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0idG9wIiBkYXRhLWh0bWw9InRydWUiIGRhdGEtY2xpcGJvYXJkLWFjdGlvbj0iY29weSIgZGF0YS1jbGlwYm9hcmQtdGV4dD0iYmNjMDZhZWJmOTZjOTU0MDk5NTE5MmM4OWM5MWZiMjMiIHRpdGxlPSJDbGljayB0byBjb3B5Jmx0O2JyLyZndDtiY2MwNmFlYmY5NmM5NTQwOTk1MTkyYzg5YzkxZmIyMyI+PC9zcGFuPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj48ZGl2IGNsYXNzPSJmaWxlRGVzY3JpcHRpb24gc21hbGwiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6MDpmaWxlRGVzY05vbkVtcHR5Ij5TdW1tYXJ5IGRhdGEgZm9yIEFzaWFuIGNvaG9ydDwvc3Bhbj48L2Rpdj4KICAgICAgICA8L2Rpdj48L2Rpdj48L3RkPjx0ZCByb2xlPSJncmlkY2VsbCIgc3R5bGU9IndpZHRoOjQwJTsiIGNsYXNzPSJjb2wtZmlsZS1hY3Rpb24gYnV0dG9uLWJsb2NrIHRleHQtcmlnaHQiPjxkaXYgcm9sZT0iZ3JvdXAiIGNsYXNzPSJidG4tZ3JvdXAiIGFyaWEtbGFiZWw9IkZpbGUgQWN0aW9ucyI+PGRpdiBjbGFzcz0iYnRuLWdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImJ0bi1wcmV2aWV3IGJ0biBidG4tbGluayBib290c3RyYXAtYnV0dG9uLXRvb2x0aXAiIHRpdGxlPSJSZWFkIFRleHQiIGhyZWY9Ii9maWxlLnhodG1sP3BlcnNpc3RlbnRJZD1kb2k6MTAuNzkxMC9EVk4vTko3WFNPL0szTlJNTyZhbXA7dmVyc2lvbj0xLjAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZXllLW9wZW4iPjwvc3Bhbj48c3BhbiBjbGFzcz0ic3Itb25seSI+UHJldmlldyAiQXNpYW5fQ2FzZV9Db250cm9sX1Jlc3VsdHMudHh0Ijwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDxhIHR5cGU9ImJ1dHRvbiIgc3R5bGU9InBhZGRpbmc6NnB4IDhweDsiIGNsYXNzPSJidG4tYWNjZXNzLWZpbGUgYnRuIGJ0bi1saW5rIGJvb3RzdHJhcC1idXR0b24tdG9vbHRpcCBkcm9wZG93bi10b2dnbGUiIHRpdGxlPSJBY2Nlc3MgRmlsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIiBhcmlhLWhhc3BvcHVwPSJ0cnVlIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSIgdGFiaW5kZXg9IjAiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48c3BhbiBjbGFzcz0ic3Itb25seSI+QWNjZXNzIEZpbGU8L3NwYW4+PHNwYW4gY2xhc3M9ImNhcmV0Ij48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSBwdWxsLXJpZ2h0IHRleHQtbGVmdCI+CiAgICAKICAgIAogICAgPGxpIGNsYXNzPSJkcm9wZG93bi1oZWFkZXIiPkZpbGUgQWNjZXNzIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWZpbGUiPjwvc3Bhbj48L2xpPgogICAgPGxpPjxzcGFuIGNsYXNzPSJkcm9wZG93bi1pdGVtLXRleHQiPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1nbG9iZSB0ZXh0LXN1Y2Nlc3MiPjwvc3Bhbj48c3BhbiBjbGFzcz0idGV4dC1zdWNjZXNzIj4gUHVibGljPC9zcGFuPgogICAgICAgIDwvc3Bhbj48L2xpPgogICAgICAgIAogICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24taGVhZGVyIj5Eb3dubG9hZCBPcHRpb25zIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvbGk+PGxpPjxhIGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6MDpqX2lkdDEzOTAiIGhyZWY9IiMiIGNsYXNzPSJ1aS1jb21tYW5kbGluayB1aS13aWRnZXQgYnRuLWRvd25sb2FkIiBvbmNsaWNrPSJQcmltZUZhY2VzLmFiKHtzOiZxdW90O2RhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZTowOmpfaWR0MTM5MCZxdW90OyxmOiZxdW90O2RhdGFzZXRGb3JtJnF1b3Q7LHA6JnF1b3Q7ZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOjA6al9pZHQxMzkwJnF1b3Q7fSk7cmV0dXJuIGZhbHNlOyI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgUGxhaW4gVGV4dAogICAgICAgICAgICA8L2E+PC9saT4KICAgIAogICAgCiAgICAKICAgIDxsaSBjbGFzcz0iZHJvcGRvd24taGVhZGVyIj5Eb3dubG9hZCBNZXRhZGF0YSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iZHJvcGRvd24tc3VibWVudSBwdWxsLWxlZnQiPgogICAgICAgICAgICA8YSB0YWJpbmRleD0iMCI+RGF0YSBGaWxlIENpdGF0aW9uPC9hPgogICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIiBvbmNsaWNrPSJtb2phcnJhLmpzZmNsanMoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RhdGFzZXRGb3JtJykseydkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6MDpqX2lkdDE0MjUnOidkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6MDpqX2lkdDE0MjUnfSwnJyk7cmV0dXJuIGZhbHNlIiBjbGFzcz0iYnRuLWRvd25sb2FkIj5FbmROb3RlIFhNTDwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiMiIG9uY2xpY2s9Im1vamFycmEuanNmY2xqcyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGF0YXNldEZvcm0nKSx7J2RhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZTowOmpfaWR0MTQyOCc6J2RhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZTowOmpfaWR0MTQyOCd9LCcnKTtyZXR1cm4gZmFsc2UiIGNsYXNzPSJidG4tZG93bmxvYWQiPlJJUzwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiMiIG9uY2xpY2s9Im1vamFycmEuanNmY2xqcyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGF0YXNldEZvcm0nKSx7J2RhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZTowOmpfaWR0MTQzMSc6J2RhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZTowOmpfaWR0MTQzMSd9LCcnKTtyZXR1cm4gZmFsc2UiIGNsYXNzPSJidG4tZG93bmxvYWQiPkJpYlRlWDwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICA8L3VsPjwvbGk+CiAgICAKICAgIDxsaSByb2xlPSJwcmVzZW50YXRpb24iIGNsYXNzPSJjbGVhcmZpeCI+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPC91bD48L2Rpdj48L2Rpdj48L3RkPjwvdHI+PHRyIGRhdGEtcmk9IjEiIGRhdGEtcms9InMzOi8vZHZuLWNsb3VkOjE1ZWQ1N2E4N2I5LTk5YWJjMTYyYjQ1OCIgY2xhc3M9InVpLXdpZGdldC1jb250ZW50IHVpLWRhdGF0YWJsZS1vZGQgdWktZGF0YXRhYmxlLXNlbGVjdGFibGUiIHJvbGU9InJvdyIgYXJpYS1zZWxlY3RlZD0iZmFsc2UiPjx0ZCByb2xlPSJncmlkY2VsbCIgY2xhc3M9InVpLXNlbGVjdGlvbi1jb2x1bW4gdGV4dC1jZW50ZXIiPjxkaXYgY2xhc3M9InVpLWNoa2JveCB1aS13aWRnZXQiPjxkaXYgaWQ9ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZV9zMzovL2R2bi1jbG91ZDoxNWVkNTdhODdiOS05OWFiYzE2MmI0NThfY2hlY2tib3giIHJvbGU9ImNoZWNrYm94IiB0YWJpbmRleD0iMCIgYXJpYS1sYWJlbD0iU2VsZWN0IEV1cm9wZWFuX0FzaWFuX0Nhc2VfQ29udHJvbF9SZXN1bHRzLnR4dCIgYXJpYS1jaGVja2VkPSJmYWxzZSIgY2xhc3M9InVpLWNoa2JveC1ib3ggdWktd2lkZ2V0IHVpLWNvcm5lci1hbGwgdWktc3RhdGUtZGVmYXVsdCI+PHNwYW4gY2xhc3M9InVpLWNoa2JveC1pY29uIHVpLWljb24gdWktaWNvbi1ibGFuayB1aS1jIj48L3NwYW4+PC9kaXY+PC9kaXY+PC90ZD48dGQgcm9sZT0iZ3JpZGNlbGwiIGNsYXNzPSJjb2wtZmlsZS1tZXRhZGF0YSI+PGRpdiBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOjE6ZmlsZUluZm9JbmNsdWRlLWZpbGVzVGFibGUiIGNsYXNzPSJ1aS1vdXRwdXRwYW5lbCB1aS13aWRnZXQgbWVkaWEiPgogICAgICAgIDxkaXYgY2xhc3M9Im1lZGlhLWxlZnQgY29sLWZpbGUtdGh1bWIiIHN0eWxlPSJwYWRkaW5nLXRvcDo0cHg7Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVkaWEtb2JqZWN0IHRodW1ibmFpbC1ibG9jayB0ZXh0LWNlbnRlciI+PHNwYW4gY2xhc3M9Imljb24tZG9jdW1lbnQgZmlsZS10aHVtYm5haWwtaWNvbiB0ZXh0LW11dGVkIj48L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1lZGlhLWJvZHkgY29sLWZpbGUtbWV0YWRhdGEiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWxlTmFtZU9yaWdpbmFsIj4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvZmlsZS54aHRtbD9wZXJzaXN0ZW50SWQ9ZG9pOjEwLjc5MTAvRFZOL05KN1hTTy9IQTJTVlImYW1wO3ZlcnNpb249MS4wIj4KICAgICAgICAgICAgICAgICAgICAgICAgRXVyb3BlYW5fQXNpYW5fQ2FzZV9Db250cm9sX1Jlc3VsdHMudHh0CiAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtbXV0ZWQgc21hbGwiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6MTpmaWxlVHlwZSI+UGxhaW4gVGV4dDwvc3Bhbj48c3BhbiBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOjE6ZmlsZVNpemUiPiAtIDEwLjcgTUI8L3NwYW4+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkYXRlQ3JlYXRlUHVibGlzaC1ibG9jayI+PHNwYW4gaWQ9ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZToxOmZpbGVDcmVhdGVQdWJsaXNoRGF0ZSI+UHVibGlzaGVkIFNlcCAzMCwgMjAxNzwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PjxkaXYgY2xhc3M9ImRvd25sb2Fkcy1ibG9jayI+PHNwYW4gaWQ9ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZToxOmZpbGVEb3dubG9hZENvdW50IiBjbGFzcz0idmlzaWJsZS14cy1ibG9jayB2aXNpYmxlLXNtLWJsb2NrIHZpc2libGUtbWQtaW5saW5lIHZpc2libGUtbGctaW5saW5lIj42MyBEb3dubG9hZHM8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iY2hlY2tzdW0tYmxvY2siPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjaGVja3N1bS10cnVuY2F0ZSBjaGVja3N1bS10b29sdGlwIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OjNweDsiIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0idG9wIiBkYXRhLWh0bWw9InRydWUiIGRhdGEtY2xpcGJvYXJkLWFjdGlvbj0iY29weSIgZGF0YS1jbGlwYm9hcmQtdGV4dD0iMGFlN2I0NjM5NjI2ZWJhZDZhYjc3ZjU0YmZjZmRkNmQiIHRpdGxlPSJDbGljayB0byBjb3B5Jmx0O2JyLyZndDswYWU3YjQ2Mzk2MjZlYmFkNmFiNzdmNTRiZmNmZGQ2ZCI+TUQ1OiAwYWU3YjQ2Mzk2MjZlYmFkNmFiNzdmNTRiZmNmZGQ2ZDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1jb3B5IGJ0bi1jb3B5IGNoZWNrc3VtLXRvb2x0aXAiIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0idG9wIiBkYXRhLWh0bWw9InRydWUiIGRhdGEtY2xpcGJvYXJkLWFjdGlvbj0iY29weSIgZGF0YS1jbGlwYm9hcmQtdGV4dD0iMGFlN2I0NjM5NjI2ZWJhZDZhYjc3ZjU0YmZjZmRkNmQiIHRpdGxlPSJDbGljayB0byBjb3B5Jmx0O2JyLyZndDswYWU3YjQ2Mzk2MjZlYmFkNmFiNzdmNTRiZmNmZGQ2ZCI+PC9zcGFuPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj48ZGl2IGNsYXNzPSJmaWxlRGVzY3JpcHRpb24gc21hbGwiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6MTpmaWxlRGVzY05vbkVtcHR5Ij5TdW1tYXJ5IGRhdGEgZm9yIGNvbWJpbmVkIGNvaG9ydDwvc3Bhbj48L2Rpdj4KICAgICAgICA8L2Rpdj48L2Rpdj48L3RkPjx0ZCByb2xlPSJncmlkY2VsbCIgc3R5bGU9IndpZHRoOjQwJTsiIGNsYXNzPSJjb2wtZmlsZS1hY3Rpb24gYnV0dG9uLWJsb2NrIHRleHQtcmlnaHQiPjxkaXYgcm9sZT0iZ3JvdXAiIGNsYXNzPSJidG4tZ3JvdXAiIGFyaWEtbGFiZWw9IkZpbGUgQWN0aW9ucyI+PGRpdiBjbGFzcz0iYnRuLWdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImJ0bi1wcmV2aWV3IGJ0biBidG4tbGluayBib290c3RyYXAtYnV0dG9uLXRvb2x0aXAiIHRpdGxlPSJSZWFkIFRleHQiIGhyZWY9Ii9maWxlLnhodG1sP3BlcnNpc3RlbnRJZD1kb2k6MTAuNzkxMC9EVk4vTko3WFNPL0hBMlNWUiZhbXA7dmVyc2lvbj0xLjAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZXllLW9wZW4iPjwvc3Bhbj48c3BhbiBjbGFzcz0ic3Itb25seSI+UHJldmlldyAiRXVyb3BlYW5fQXNpYW5fQ2FzZV9Db250cm9sX1Jlc3VsdHMudHh0Ijwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDxhIHR5cGU9ImJ1dHRvbiIgc3R5bGU9InBhZGRpbmc6NnB4IDhweDsiIGNsYXNzPSJidG4tYWNjZXNzLWZpbGUgYnRuIGJ0bi1saW5rIGJvb3RzdHJhcC1idXR0b24tdG9vbHRpcCBkcm9wZG93bi10b2dnbGUiIHRpdGxlPSJBY2Nlc3MgRmlsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIiBhcmlhLWhhc3BvcHVwPSJ0cnVlIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSIgdGFiaW5kZXg9IjAiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48c3BhbiBjbGFzcz0ic3Itb25seSI+QWNjZXNzIEZpbGU8L3NwYW4+PHNwYW4gY2xhc3M9ImNhcmV0Ij48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSBwdWxsLXJpZ2h0IHRleHQtbGVmdCI+CiAgICAKICAgIAogICAgPGxpIGNsYXNzPSJkcm9wZG93bi1oZWFkZXIiPkZpbGUgQWNjZXNzIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWZpbGUiPjwvc3Bhbj48L2xpPgogICAgPGxpPjxzcGFuIGNsYXNzPSJkcm9wZG93bi1pdGVtLXRleHQiPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1nbG9iZSB0ZXh0LXN1Y2Nlc3MiPjwvc3Bhbj48c3BhbiBjbGFzcz0idGV4dC1zdWNjZXNzIj4gUHVibGljPC9zcGFuPgogICAgICAgIDwvc3Bhbj48L2xpPgogICAgICAgIAogICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24taGVhZGVyIj5Eb3dubG9hZCBPcHRpb25zIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvbGk+PGxpPjxhIGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6MTpqX2lkdDEzOTAiIGhyZWY9IiMiIGNsYXNzPSJ1aS1jb21tYW5kbGluayB1aS13aWRnZXQgYnRuLWRvd25sb2FkIiBvbmNsaWNrPSJQcmltZUZhY2VzLmFiKHtzOiZxdW90O2RhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZToxOmpfaWR0MTM5MCZxdW90OyxmOiZxdW90O2RhdGFzZXRGb3JtJnF1b3Q7LHA6JnF1b3Q7ZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOjE6al9pZHQxMzkwJnF1b3Q7fSk7cmV0dXJuIGZhbHNlOyI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgUGxhaW4gVGV4dAogICAgICAgICAgICA8L2E+PC9saT4KICAgIAogICAgCiAgICAKICAgIDxsaSBjbGFzcz0iZHJvcGRvd24taGVhZGVyIj5Eb3dubG9hZCBNZXRhZGF0YSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iZHJvcGRvd24tc3VibWVudSBwdWxsLWxlZnQiPgogICAgICAgICAgICA8YSB0YWJpbmRleD0iMCI+RGF0YSBGaWxlIENpdGF0aW9uPC9hPgogICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIiBvbmNsaWNrPSJtb2phcnJhLmpzZmNsanMoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RhdGFzZXRGb3JtJykseydkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6MTpqX2lkdDE0MjUnOidkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6MTpqX2lkdDE0MjUnfSwnJyk7cmV0dXJuIGZhbHNlIiBjbGFzcz0iYnRuLWRvd25sb2FkIj5FbmROb3RlIFhNTDwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiMiIG9uY2xpY2s9Im1vamFycmEuanNmY2xqcyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGF0YXNldEZvcm0nKSx7J2RhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZToxOmpfaWR0MTQyOCc6J2RhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZToxOmpfaWR0MTQyOCd9LCcnKTtyZXR1cm4gZmFsc2UiIGNsYXNzPSJidG4tZG93bmxvYWQiPlJJUzwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiMiIG9uY2xpY2s9Im1vamFycmEuanNmY2xqcyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGF0YXNldEZvcm0nKSx7J2RhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZToxOmpfaWR0MTQzMSc6J2RhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZToxOmpfaWR0MTQzMSd9LCcnKTtyZXR1cm4gZmFsc2UiIGNsYXNzPSJidG4tZG93bmxvYWQiPkJpYlRlWDwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICA8L3VsPjwvbGk+CiAgICAKICAgIDxsaSByb2xlPSJwcmVzZW50YXRpb24iIGNsYXNzPSJjbGVhcmZpeCI+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPC91bD48L2Rpdj48L2Rpdj48L3RkPjwvdHI+PHRyIGRhdGEtcmk9IjIiIGRhdGEtcms9InMzOi8vZHZuLWNsb3VkOjE1ZWQ1N2FhYjdlLTkwYTJiNmMxMTJlYiIgY2xhc3M9InVpLXdpZGdldC1jb250ZW50IHVpLWRhdGF0YWJsZS1ldmVuIHVpLWRhdGF0YWJsZS1zZWxlY3RhYmxlIiByb2xlPSJyb3ciIGFyaWEtc2VsZWN0ZWQ9ImZhbHNlIj48dGQgcm9sZT0iZ3JpZGNlbGwiIGNsYXNzPSJ1aS1zZWxlY3Rpb24tY29sdW1uIHRleHQtY2VudGVyIj48ZGl2IGNsYXNzPSJ1aS1jaGtib3ggdWktd2lkZ2V0Ij48ZGl2IGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGVfczM6Ly9kdm4tY2xvdWQ6MTVlZDU3YWFiN2UtOTBhMmI2YzExMmViX2NoZWNrYm94IiByb2xlPSJjaGVja2JveCIgdGFiaW5kZXg9IjAiIGFyaWEtbGFiZWw9IlNlbGVjdCBFdXJvcGVhbl9DYXNlX0NvbnRyb2xfUmVzdWx0cy50eHQiIGFyaWEtY2hlY2tlZD0iZmFsc2UiIGNsYXNzPSJ1aS1jaGtib3gtYm94IHVpLXdpZGdldCB1aS1jb3JuZXItYWxsIHVpLXN0YXRlLWRlZmF1bHQiPjxzcGFuIGNsYXNzPSJ1aS1jaGtib3gtaWNvbiB1aS1pY29uIHVpLWljb24tYmxhbmsgdWktYyI+PC9zcGFuPjwvZGl2PjwvZGl2PjwvdGQ+PHRkIHJvbGU9ImdyaWRjZWxsIiBjbGFzcz0iY29sLWZpbGUtbWV0YWRhdGEiPjxkaXYgaWQ9ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZToyOmZpbGVJbmZvSW5jbHVkZS1maWxlc1RhYmxlIiBjbGFzcz0idWktb3V0cHV0cGFuZWwgdWktd2lkZ2V0IG1lZGlhIj4KICAgICAgICA8ZGl2IGNsYXNzPSJtZWRpYS1sZWZ0IGNvbC1maWxlLXRodW1iIiBzdHlsZT0icGFkZGluZy10b3A6NHB4OyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lZGlhLW9iamVjdCB0aHVtYm5haWwtYmxvY2sgdGV4dC1jZW50ZXIiPjxzcGFuIGNsYXNzPSJpY29uLWRvY3VtZW50IGZpbGUtdGh1bWJuYWlsLWljb24gdGV4dC1tdXRlZCI+PC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtZWRpYS1ib2R5IGNvbC1maWxlLW1ldGFkYXRhIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmlsZU5hbWVPcmlnaW5hbCI+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL2ZpbGUueGh0bWw/cGVyc2lzdGVudElkPWRvaToxMC43OTEwL0RWTi9OSjdYU08vSU40NUdaJmFtcDt2ZXJzaW9uPTEuMCI+CiAgICAgICAgICAgICAgICAgICAgICAgIEV1cm9wZWFuX0Nhc2VfQ29udHJvbF9SZXN1bHRzLnR4dAogICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0LW11dGVkIHNtYWxsIj48c3BhbiBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOjI6ZmlsZVR5cGUiPlBsYWluIFRleHQ8L3NwYW4+PHNwYW4gaWQ9ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZToyOmZpbGVTaXplIj4gLSAxMi43IE1CPC9zcGFuPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGF0ZUNyZWF0ZVB1Ymxpc2gtYmxvY2siPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6MjpmaWxlQ3JlYXRlUHVibGlzaERhdGUiPlB1Ymxpc2hlZCBTZXAgMzAsIDIwMTc8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj48ZGl2IGNsYXNzPSJkb3dubG9hZHMtYmxvY2siPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6MjpmaWxlRG93bmxvYWRDb3VudCIgY2xhc3M9InZpc2libGUteHMtYmxvY2sgdmlzaWJsZS1zbS1ibG9jayB2aXNpYmxlLW1kLWlubGluZSB2aXNpYmxlLWxnLWlubGluZSI+OTAgRG93bmxvYWRzPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9ImNoZWNrc3VtLWJsb2NrIj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY2hlY2tzdW0tdHJ1bmNhdGUgY2hlY2tzdW0tdG9vbHRpcCIgc3R5bGU9Im1hcmdpbi1yaWdodDozcHg7IiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9InRvcCIgZGF0YS1odG1sPSJ0cnVlIiBkYXRhLWNsaXBib2FyZC1hY3Rpb249ImNvcHkiIGRhdGEtY2xpcGJvYXJkLXRleHQ9Ijg3NmJiM2I2MDA0NjBmZGJmYWJjMDFlYjA4YzQxNDk3IiB0aXRsZT0iQ2xpY2sgdG8gY29weSZsdDtici8mZ3Q7ODc2YmIzYjYwMDQ2MGZkYmZhYmMwMWViMDhjNDE0OTciPk1ENTogODc2YmIzYjYwMDQ2MGZkYmZhYmMwMWViMDhjNDE0OTc8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tY29weSBidG4tY29weSBjaGVja3N1bS10b29sdGlwIiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9InRvcCIgZGF0YS1odG1sPSJ0cnVlIiBkYXRhLWNsaXBib2FyZC1hY3Rpb249ImNvcHkiIGRhdGEtY2xpcGJvYXJkLXRleHQ9Ijg3NmJiM2I2MDA0NjBmZGJmYWJjMDFlYjA4YzQxNDk3IiB0aXRsZT0iQ2xpY2sgdG8gY29weSZsdDtici8mZ3Q7ODc2YmIzYjYwMDQ2MGZkYmZhYmMwMWViMDhjNDE0OTciPjwvc3Bhbj48L2Rpdj4KICAgICAgICAgICAgPC9kaXY+PGRpdiBjbGFzcz0iZmlsZURlc2NyaXB0aW9uIHNtYWxsIj48c3BhbiBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOjI6ZmlsZURlc2NOb25FbXB0eSI+U3VtbWFyeSBkYXRhIGZvciBFdXJvcGVhbiBjb2hvcnQ8L3NwYW4+PC9kaXY+CiAgICAgICAgPC9kaXY+PC9kaXY+PC90ZD48dGQgcm9sZT0iZ3JpZGNlbGwiIHN0eWxlPSJ3aWR0aDo0MCU7IiBjbGFzcz0iY29sLWZpbGUtYWN0aW9uIGJ1dHRvbi1ibG9jayB0ZXh0LXJpZ2h0Ij48ZGl2IHJvbGU9Imdyb3VwIiBjbGFzcz0iYnRuLWdyb3VwIiBhcmlhLWxhYmVsPSJGaWxlIEFjdGlvbnMiPjxkaXYgY2xhc3M9ImJ0bi1ncm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJidG4tcHJldmlldyBidG4gYnRuLWxpbmsgYm9vdHN0cmFwLWJ1dHRvbi10b29sdGlwIiB0aXRsZT0iUmVhZCBUZXh0IiBocmVmPSIvZmlsZS54aHRtbD9wZXJzaXN0ZW50SWQ9ZG9pOjEwLjc5MTAvRFZOL05KN1hTTy9JTjQ1R1omYW1wO3ZlcnNpb249MS4wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWV5ZS1vcGVuIj48L3NwYW4+PHNwYW4gY2xhc3M9InNyLW9ubHkiPlByZXZpZXcgIkV1cm9wZWFuX0Nhc2VfQ29udHJvbF9SZXN1bHRzLnR4dCI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8YSB0eXBlPSJidXR0b24iIHN0eWxlPSJwYWRkaW5nOjZweCA4cHg7IiBjbGFzcz0iYnRuLWFjY2Vzcy1maWxlIGJ0biBidG4tbGluayBib290c3RyYXAtYnV0dG9uLXRvb2x0aXAgZHJvcGRvd24tdG9nZ2xlIiB0aXRsZT0iQWNjZXNzIEZpbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biIgYXJpYS1oYXNwb3B1cD0idHJ1ZSIgYXJpYS1leHBhbmRlZD0iZmFsc2UiIHRhYmluZGV4PSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PHNwYW4gY2xhc3M9InNyLW9ubHkiPkFjY2VzcyBGaWxlPC9zcGFuPjxzcGFuIGNsYXNzPSJjYXJldCI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUgcHVsbC1yaWdodCB0ZXh0LWxlZnQiPgogICAgCiAgICAKICAgIDxsaSBjbGFzcz0iZHJvcGRvd24taGVhZGVyIj5GaWxlIEFjY2VzcyA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1maWxlIj48L3NwYW4+PC9saT4KICAgIDxsaT48c3BhbiBjbGFzcz0iZHJvcGRvd24taXRlbS10ZXh0Ij4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZ2xvYmUgdGV4dC1zdWNjZXNzIj48L3NwYW4+PHNwYW4gY2xhc3M9InRleHQtc3VjY2VzcyI+IFB1YmxpYzwvc3Bhbj4KICAgICAgICA8L3NwYW4+PC9saT4KICAgICAgICAKICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duLWhlYWRlciI+RG93bmxvYWQgT3B0aW9ucyA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2xpPjxsaT48YSBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOjI6al9pZHQxMzkwIiBocmVmPSIjIiBjbGFzcz0idWktY29tbWFuZGxpbmsgdWktd2lkZ2V0IGJ0bi1kb3dubG9hZCIgb25jbGljaz0iUHJpbWVGYWNlcy5hYih7czomcXVvdDtkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6MjpqX2lkdDEzOTAmcXVvdDssZjomcXVvdDtkYXRhc2V0Rm9ybSZxdW90OyxwOiZxdW90O2RhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZToyOmpfaWR0MTM5MCZxdW90O30pO3JldHVybiBmYWxzZTsiPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIFBsYWluIFRleHQKICAgICAgICAgICAgPC9hPjwvbGk+CiAgICAKICAgIAogICAgCiAgICA8bGkgY2xhc3M9ImRyb3Bkb3duLWhlYWRlciI+RG93bmxvYWQgTWV0YWRhdGEgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9saT48bGkgY2xhc3M9ImRyb3Bkb3duLXN1Ym1lbnUgcHVsbC1sZWZ0Ij4KICAgICAgICAgICAgPGEgdGFiaW5kZXg9IjAiPkRhdGEgRmlsZSBDaXRhdGlvbjwvYT4KICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iIyIgb25jbGljaz0ibW9qYXJyYS5qc2ZjbGpzKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYXRhc2V0Rm9ybScpLHsnZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOjI6al9pZHQxNDI1JzonZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlOjI6al9pZHQxNDI1J30sJycpO3JldHVybiBmYWxzZSIgY2xhc3M9ImJ0bi1kb3dubG9hZCI+RW5kTm90ZSBYTUw8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIiBvbmNsaWNrPSJtb2phcnJhLmpzZmNsanMoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RhdGFzZXRGb3JtJykseydkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6MjpqX2lkdDE0MjgnOidkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6MjpqX2lkdDE0MjgnfSwnJyk7cmV0dXJuIGZhbHNlIiBjbGFzcz0iYnRuLWRvd25sb2FkIj5SSVM8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIiBvbmNsaWNrPSJtb2phcnJhLmpzZmNsanMoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RhdGFzZXRGb3JtJykseydkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6MjpqX2lkdDE0MzEnOidkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGU6MjpqX2lkdDE0MzEnfSwnJyk7cmV0dXJuIGZhbHNlIiBjbGFzcz0iYnRuLWRvd25sb2FkIj5CaWJUZVg8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgPC91bD48L2xpPgogICAgCiAgICA8bGkgcm9sZT0icHJlc2VudGF0aW9uIiBjbGFzcz0iY2xlYXJmaXgiPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwvdWw+PC9kaXY+PC9kaXY+PC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L2Rpdj48aW5wdXQgaWQ9ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZV9zZWxlY3Rpb24iIG5hbWU9ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZV9zZWxlY3Rpb24iIHR5cGU9ImhpZGRlbiIgYXV0b2NvbXBsZXRlPSJvZmYiIGFyaWEtaGlkZGVuPSJ0cnVlIiB2YWx1ZT0iIiAvPjwvZGl2PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZV9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJEYXRhVGFibGUiLCJmaWxlc1RhYmxlIix7aWQ6ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZSIsc2VsZWN0aW9uTW9kZToiY2hlY2tib3giLHJvd1NlbGVjdE1vZGU6ImNoZWNrYm94Iixncm91cENvbHVtbkluZGV4ZXM6W10sZGlzYWJsZUNvbnRleHRNZW51SWZFbXB0eTpmYWxzZSxiZWhhdmlvcnM6e3Jvd1Vuc2VsZWN0OmZ1bmN0aW9uKGV4dCxldmVudCkge1ByaW1lRmFjZXMuYWIoe3M6ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZSIsZToicm93VW5zZWxlY3QiLGY6ImRhdGFzZXRGb3JtIixwOiJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGUiLHU6ImRhdGFzZXRGb3JtOnZhbGlkYXRlRmlsZXNPdXRjb21lIGRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZSIsb25jbzpmdW5jdGlvbih4aHIsc3RhdHVzLGFyZ3MsZGF0YSl7cmViaW5kQ29tbWFuZCgpO319LGV4dCk7fSxyb3dVbnNlbGVjdENoZWNrYm94OmZ1bmN0aW9uKGV4dCxldmVudCkge1ByaW1lRmFjZXMuYWIoe3M6ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZSIsZToicm93VW5zZWxlY3RDaGVja2JveCIsZjoiZGF0YXNldEZvcm0iLHA6ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZSIsdToiZGF0YXNldEZvcm06dmFsaWRhdGVGaWxlc091dGNvbWUgZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlIixvbmNvOmZ1bmN0aW9uKHhocixzdGF0dXMsYXJncyxkYXRhKXtyZWJpbmRDb21tYW5kKCk7fX0sZXh0KTt9LHJvd0RibHNlbGVjdDpmdW5jdGlvbihleHQsZXZlbnQpIHtQcmltZUZhY2VzLmFiKHtzOiJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGUiLGU6InJvd0RibHNlbGVjdCIsZjoiZGF0YXNldEZvcm0iLHA6ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZSIsdToiZGF0YXNldEZvcm06dmFsaWRhdGVGaWxlc091dGNvbWUgZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlIixvbmNvOmZ1bmN0aW9uKHhocixzdGF0dXMsYXJncyxkYXRhKXtyZWJpbmRDb21tYW5kKCk7fX0sZXh0KTt9LHBhZ2U6ZnVuY3Rpb24oZXh0LGV2ZW50KSB7UHJpbWVGYWNlcy5hYih7czoiZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlIixlOiJwYWdlIixmOiJkYXRhc2V0Rm9ybSIscDoiZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlIix1OiJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGUiLG9uY286ZnVuY3Rpb24oeGhyLHN0YXR1cyxhcmdzLGRhdGEpe3JlZnJlc2hQYWdpbmF0b3IoKSxyZWJpbmRDb21tYW5kKCk7fX0sZXh0KTt9LHJvd1NlbGVjdDpmdW5jdGlvbihleHQsZXZlbnQpIHtQcmltZUZhY2VzLmFiKHtzOiJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGUiLGU6InJvd1NlbGVjdCIsZjoiZGF0YXNldEZvcm0iLHA6ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZSIsdToiZGF0YXNldEZvcm06dmFsaWRhdGVGaWxlc091dGNvbWUgZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlIixvbmNvOmZ1bmN0aW9uKHhocixzdGF0dXMsYXJncyxkYXRhKXtyZWJpbmRDb21tYW5kKCk7fX0sZXh0KTt9LHRvZ2dsZVNlbGVjdDpmdW5jdGlvbihleHQsZXZlbnQpIHtQcmltZUZhY2VzLmFiKHtzOiJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGUiLGU6InRvZ2dsZVNlbGVjdCIsZjoiZGF0YXNldEZvcm0iLHA6ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZSIsdToiZGF0YXNldEZvcm06dmFsaWRhdGVGaWxlc091dGNvbWUgZGF0YXNldEZvcm06dGFiVmlldzpmaWxlc1RhYmxlIixvbmNvOmZ1bmN0aW9uKHhocixzdGF0dXMsYXJncyxkYXRhKXtyZWJpbmRDb21tYW5kKCk7fX0sZXh0KTt9LHJvd1NlbGVjdENoZWNrYm94OmZ1bmN0aW9uKGV4dCxldmVudCkge1ByaW1lRmFjZXMuYWIoe3M6ImRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZSIsZToicm93U2VsZWN0Q2hlY2tib3giLGY6ImRhdGFzZXRGb3JtIixwOiJkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGUiLHU6ImRhdGFzZXRGb3JtOnZhbGlkYXRlRmlsZXNPdXRjb21lIGRhdGFzZXRGb3JtOnRhYlZpZXc6ZmlsZXNUYWJsZSIsb25jbzpmdW5jdGlvbih4aHIsc3RhdHVzLGFyZ3MsZGF0YSl7cmViaW5kQ29tbWFuZCgpO319LGV4dCk7fX19KTt9KTs8L3NjcmlwdD48L2Rpdj48ZGl2IGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3Om1ldGFkYXRhTWFwVGFiIiBjbGFzcz0idWktdGFicy1wYW5lbCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYm90dG9tIHVpLWhlbHBlci1oaWRkZW4iIHJvbGU9InRhYnBhbmVsIiBhcmlhLWhpZGRlbj0idHJ1ZSIgZGF0YS1pbmRleD0iMSI+PGRpdiBjbGFzcz0iYnV0dG9uLWJsb2NrIHRhYi1oZWFkZXIgbWFyZ2luLWJvdHRvbSB0ZXh0LXJpZ2h0Ij48ZGl2IGNsYXNzPSJidG4tZ3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IGJ0bi1leHBvcnQgZHJvcGRvd24tdG9nZ2xlIiB0eXBlPSJidXR0b24iIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZXhwb3J0Ij48L3NwYW4+IEV4cG9ydCBNZXRhZGF0YSA8c3BhbiBjbGFzcz0iY2FyZXQiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51IHB1bGwtcmlnaHQgdGV4dC1sZWZ0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZGF0YXZlcnNlLmhhcnZhcmQuZWR1L2FwaS9kYXRhc2V0cy9leHBvcnQ7anNlc3Npb25pZD0zOWVhMjYxMTYxODJiNzkwNjhmNjZmNDkxMWNlP2V4cG9ydGVyPWRjdGVybXMmYW1wO3BlcnNpc3RlbnRJZD1kb2klM0ExMC43OTEwL0RWTi9OSjdYU08iIHRhcmdldD0iX2JsYW5rIj5EdWJsaW4gQ29yZTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZGF0YXZlcnNlLmhhcnZhcmQuZWR1L2FwaS9kYXRhc2V0cy9leHBvcnQ7anNlc3Npb25pZD0zOWVhMjYxMTYxODJiNzkwNjhmNjZmNDkxMWNlP2V4cG9ydGVyPWRkaSZhbXA7cGVyc2lzdGVudElkPWRvaSUzQTEwLjc5MTAvRFZOL05KN1hTTyIgdGFyZ2V0PSJfYmxhbmsiPkRESTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZGF0YXZlcnNlLmhhcnZhcmQuZWR1L2FwaS9kYXRhc2V0cy9leHBvcnQ7anNlc3Npb25pZD0zOWVhMjYxMTYxODJiNzkwNjhmNjZmNDkxMWNlP2V4cG9ydGVyPURhdGFjaXRlJmFtcDtwZXJzaXN0ZW50SWQ9ZG9pJTNBMTAuNzkxMC9EVk4vTko3WFNPIiB0YXJnZXQ9Il9ibGFuayI+RGF0YUNpdGU8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2RhdGF2ZXJzZS5oYXJ2YXJkLmVkdS9hcGkvZGF0YXNldHMvZXhwb3J0O2pzZXNzaW9uaWQ9MzllYTI2MTE2MTgyYjc5MDY4ZjY2ZjQ5MTFjZT9leHBvcnRlcj1odG1sJmFtcDtwZXJzaXN0ZW50SWQ9ZG9pJTNBMTAuNzkxMC9EVk4vTko3WFNPIiB0YXJnZXQ9Il9ibGFuayI+RERJIEhUTUwgQ29kZWJvb2s8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2RhdGF2ZXJzZS5oYXJ2YXJkLmVkdS9hcGkvZGF0YXNldHMvZXhwb3J0O2pzZXNzaW9uaWQ9MzllYTI2MTE2MTgyYjc5MDY4ZjY2ZjQ5MTFjZT9leHBvcnRlcj1kYXRhdmVyc2VfanNvbiZhbXA7cGVyc2lzdGVudElkPWRvaSUzQTEwLjc5MTAvRFZOL05KN1hTTyIgdGFyZ2V0PSJfYmxhbmsiPkpTT048L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2RhdGF2ZXJzZS5oYXJ2YXJkLmVkdS9hcGkvZGF0YXNldHMvZXhwb3J0O2pzZXNzaW9uaWQ9MzllYTI2MTE2MTgyYjc5MDY4ZjY2ZjQ5MTFjZT9leHBvcnRlcj1PQUlfT1JFJmFtcDtwZXJzaXN0ZW50SWQ9ZG9pJTNBMTAuNzkxMC9EVk4vTko3WFNPIiB0YXJnZXQ9Il9ibGFuayI+T0FJX09SRTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZGF0YXZlcnNlLmhhcnZhcmQuZWR1L2FwaS9kYXRhc2V0cy9leHBvcnQ7anNlc3Npb25pZD0zOWVhMjYxMTYxODJiNzkwNjhmNjZmNDkxMWNlP2V4cG9ydGVyPW9haV9kYXRhY2l0ZSZhbXA7cGVyc2lzdGVudElkPWRvaSUzQTEwLjc5MTAvRFZOL05KN1hTTyIgdGFyZ2V0PSJfYmxhbmsiPk9wZW5BSVJFPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9kYXRhdmVyc2UuaGFydmFyZC5lZHUvYXBpL2RhdGFzZXRzL2V4cG9ydDtqc2Vzc2lvbmlkPTM5ZWEyNjExNjE4MmI3OTA2OGY2NmY0OTExY2U/ZXhwb3J0ZXI9c2NoZW1hLm9yZyZhbXA7cGVyc2lzdGVudElkPWRvaSUzQTEwLjc5MTAvRFZOL05KN1hTTyIgdGFyZ2V0PSJfYmxhbmsiPlNjaGVtYS5vcmcgSlNPTi1MRDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+PC9kaXY+PC9kaXY+PGRpdiBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpqX2lkdDE1NDAiPjwvZGl2PjxkaXYgY2xhc3M9InBhbmVsLWdyb3VwIj4KICAgICAgICA8cD4KICAgICAgICA8L3A+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhbmVsIHBhbmVsLWRlZmF1bHQiPgogICAgICAgICAgICAgICAgPGRpdiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjcGFuZWxDb2xsYXBzZTAiIGNsYXNzPSJwYW5lbC1oZWFkaW5nIHRleHQtaW5mbyI+CiAgICAgICAgICAgICAgICAgICAgQ2l0YXRpb24gTWV0YWRhdGEgwqA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1jaGV2cm9uLXVwIj48L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9InBhbmVsQ29sbGFwc2UwIiBjbGFzcz0iY29sbGFwc2UgaW4iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhbmVsLWJvZHkgbWV0YWRhdGEtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJtZXRhZGF0YSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBpZD0ibWV0YWRhdGFfcGVyc2lzdGVudElkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT0icm93Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZXJzaXN0ZW50IElkZW50aWZpZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1xdWVzdGlvbi1zaWduIHRvb2x0aXAtaWNvbiIgZGF0YS10b2dnbGU9InRvb2x0aXAiIGRhdGEtcGxhY2VtZW50PSJhdXRvIHJpZ2h0IiBkYXRhLW9yaWdpbmFsLXRpdGxlPSJUaGUgRGF0YXNldCdzIHVuaXF1ZSBwZXJzaXN0ZW50IGlkZW50aWZpZXIsIGVpdGhlciBhIERPSSBvciBIYW5kbGUiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+ZG9pOjEwLjc5MTAvRFZOL05KN1hTTzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+PHRyIGlkPSJtZXRhZGF0YV9wdWJsaWNhdGlvbkRhdGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPSJyb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIERhdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1xdWVzdGlvbi1zaWduIHRvb2x0aXAtaWNvbiIgZGF0YS10b2dnbGU9InRvb2x0aXAiIGRhdGEtcGxhY2VtZW50PSJhdXRvIHJpZ2h0IiBkYXRhLW9yaWdpbmFsLXRpdGxlPSJUaGUgcHVibGljYXRpb24gZGF0ZSBvZiBhIERhdGFzZXQuIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjIwMTctMDktMzA8L3RkPjwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBpZD0ibWV0YWRhdGFfdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPSJyb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tcXVlc3Rpb24tc2lnbiB0b29sdGlwLWljb24iIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0iYXV0byByaWdodCIgZGF0YS1vcmlnaW5hbC10aXRsZT0iVGhlIG1haW4gdGl0bGUgb2YgdGhlIERhdGFzZXQiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+PHRkPlN1bW1hcnkgZGF0YSBhbmt5bG9zaW5nIHNwb25keWxpdGlzIEdXQVM8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgaWQ9Im1ldGFkYXRhX2F1dGhvciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9InJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXV0aG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tcXVlc3Rpb24tc2lnbiB0b29sdGlwLWljb24iIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0iYXV0byByaWdodCIgZGF0YS1vcmlnaW5hbC10aXRsZT0iVGhlIGVudGl0eSwgZS5nLiBhIHBlcnNvbiBvciBvcmdhbml6YXRpb24sIHRoYXQgY3JlYXRlZCB0aGUgRGF0YXNldCI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD48dGQ+SW50ZXJuYXRpb25hbCBHZW5ldGljcyBvZiBBbmt5bG9zaW5nIFNwb25keWxpdGlzIENvbnNvcnRpdW0gKElHQVMpPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGlkPSJtZXRhZGF0YV9kYXRhc2V0Q29udGFjdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9InJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9pbnQgb2YgQ29udGFjdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXF1ZXN0aW9uLXNpZ24gdG9vbHRpcC1pY29uIiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9ImF1dG8gcmlnaHQiIGRhdGEtb3JpZ2luYWwtdGl0bGU9IlRoZSBlbnRpdHksIGUuZy4gYSBwZXJzb24gb3Igb3JnYW5pemF0aW9uLCB0aGF0IHVzZXJzIG9mIHRoZSBEYXRhc2V0IGNhbiBjb250YWN0IHdpdGggcXVlc3Rpb25zIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPjx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJoZWxwLWJsb2NrIj5Vc2UgZW1haWwgYnV0dG9uIGFib3ZlIHRvIGNvbnRhY3QuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+TGksIFpoaXhpdSAoUVVUKSA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgaWQ9Im1ldGFkYXRhX2RzRGVzY3JpcHRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPSJyb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tcXVlc3Rpb24tc2lnbiB0b29sdGlwLWljb24iIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0iYXV0byByaWdodCIgZGF0YS1vcmlnaW5hbC10aXRsZT0iQSBzdW1tYXJ5IGRlc2NyaWJpbmcgdGhlIHB1cnBvc2UsIG5hdHVyZSwgYW5kIHNjb3BlIG9mIHRoZSBEYXRhc2V0Ij48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPjx0ZD5TdW1tYXJ5IG9mIGFzc29jaWF0aW9uIHRlc3RzIGZvciBOYXR1cmUgR2VuZXRpY3MgcHVibGljYXRpb24gIklkZW50aWZpY2F0aW9uIG9mIG11bHRpcGxlIHJpc2sgdmFyaWFudHMgZm9yIGFua3lsb3Npbmcgc3BvbmR5bGl0aXMgdGhyb3VnaCBoaWdoLWRlbnNpdHkgZ2Vub3R5cGluZyBvZiBpbW11bmUtcmVsYXRlZCBsb2NpIi48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgaWQ9Im1ldGFkYXRhX3N1YmplY3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPSJyb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1YmplY3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1xdWVzdGlvbi1zaWduIHRvb2x0aXAtaWNvbiIgZGF0YS10b2dnbGU9InRvb2x0aXAiIGRhdGEtcGxhY2VtZW50PSJhdXRvIHJpZ2h0IiBkYXRhLW9yaWdpbmFsLXRpdGxlPSJUaGUgYXJlYSBvZiBzdHVkeSByZWxldmFudCB0byB0aGUgRGF0YXNldCI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD48dGQ+TWVkaWNpbmUsIEhlYWx0aCBhbmQgTGlmZSBTY2llbmNlczwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBpZD0ibWV0YWRhdGFfa2V5d29yZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9InJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2V5d29yZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXF1ZXN0aW9uLXNpZ24gdG9vbHRpcC1pY29uIiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9ImF1dG8gcmlnaHQiIGRhdGEtb3JpZ2luYWwtdGl0bGU9IkEga2V5IHRlcm0gdGhhdCBkZXNjcmliZXMgYW4gaW1wb3J0YW50IGFzcGVjdCBvZiB0aGUgRGF0YXNldCBhbmQgaW5mb3JtYXRpb24gYWJvdXQgYW55IGNvbnRyb2xsZWQgdm9jYWJ1bGFyeSB1c2VkIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPjx0ZD5HZW5vbWUtV2lkZSBBc3NvY2lhdGlvbiBTdHVkaWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+QW5reWxvc2luZyBzcG9uZHlsaXRpczwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBpZD0ibWV0YWRhdGFfcHVibGljYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPSJyb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0ZWQgUHVibGljYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1xdWVzdGlvbi1zaWduIHRvb2x0aXAtaWNvbiIgZGF0YS10b2dnbGU9InRvb2x0aXAiIGRhdGEtcGxhY2VtZW50PSJhdXRvIHJpZ2h0IiBkYXRhLW9yaWdpbmFsLXRpdGxlPSJUaGUgYXJ0aWNsZSBvciByZXBvcnQgdGhhdCB1c2VzIHRoZSBkYXRhIGluIHRoZSBEYXRhc2V0LiBUaGUgZnVsbCBsaXN0IG9mIHJlbGF0ZWQgcHVibGljYXRpb25zIHdpbGwgYmUgZGlzcGxheWVkIG9uIHRoZSBtZXRhZGF0YSB0YWIiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+PHRkPjEwLjEwMzgvbmcuMjY2NyBkb2k6IDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBpZD0ibWV0YWRhdGFfbm90ZXNUZXh0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT0icm93Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXF1ZXN0aW9uLXNpZ24gdG9vbHRpcC1pY29uIiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9ImF1dG8gcmlnaHQiIGRhdGEtb3JpZ2luYWwtdGl0bGU9IkFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIERhdGFzZXQiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+PHRkPkV1cm9wZWFuX0Nhc2VfQ29udHJvbF9SZXN1bHRzLnR4dDogc3VtbWFyeSBkYXRhIGZvciBFdXJvcGVhbiBjb2hvcnQgQXNpYW5fQ2FzZV9Db250cm9sX1Jlc3VsdHMudHh0OiBzdW1tYXJ5IGRhdGEgZm9yIEFzaWFuIGNvaG9ydCBFdXJvcGVhbl9Bc2lhbl9DYXNlX0NvbnRyb2xfUmVzdWx0cy50eHQ6IHN1bW1hcnkgZGF0YSBmb3IgY29tYmluZWQgY29ob3J0PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGlkPSJtZXRhZGF0YV9kZXBvc2l0b3IiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPSJyb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcG9zaXRvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXF1ZXN0aW9uLXNpZ24gdG9vbHRpcC1pY29uIiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9ImF1dG8gcmlnaHQiIGRhdGEtb3JpZ2luYWwtdGl0bGU9IlRoZSBlbnRpdHksIHN1Y2ggYXMgYSBwZXJzb24gb3Igb3JnYW5pemF0aW9uLCB0aGF0IGRlcG9zaXRlZCB0aGUgRGF0YXNldCBpbiB0aGUgcmVwb3NpdG9yeSI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD48dGQ+TGksIFpoaXhpdTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBpZD0ibWV0YWRhdGFfZGF0ZU9mRGVwb3NpdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9InJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwb3NpdCBEYXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tcXVlc3Rpb24tc2lnbiB0b29sdGlwLWljb24iIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0iYXV0byByaWdodCIgZGF0YS1vcmlnaW5hbC10aXRsZT0iVGhlIGRhdGUgd2hlbiB0aGUgRGF0YXNldCB3YXMgZGVwb3NpdGVkIGludG8gdGhlIHJlcG9zaXRvcnkiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+PHRkPjIwMTctMDktMzA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj48L2Rpdj4KIDxzY3JpcHQ+CiAgICAvLzwhW0NEQVRBWwogICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CiAgICAgIC8vVGhlIHNlbGVjdDIgd2lkZ2V0IHVzZWQgaW4gZXh0ZXJuYWwgdm9jYWIgc2NyaXB0cyBoYXMgdHJvdWJsZSBkZXRlcm1pbmluZyB0aGUgd2lkdGggb2YgYW4gaW5wdXQgZmllbGQgaWYgaXQgaXMgaW5pdGlhbGx5IGhpZGRlbgogICAgICAvL1N0YXJ0aW5nIHdpdGggdGhlIG1ldGFkYXRhYmxvY2tzIGRpc3BsYXllZCBhbmQgY29sbGFwc2luZyB0aGVtIGhlcmUgaXMgYSB3b3JrLWFyb3VuZCB0byBmaXggdGhhdC4KICAgICAgaWYoZmFsc2UpIHsKICAgICAgICBmb3IobGV0IGk9MTtpPCAxO2krKykgewogICAgICAgICAgJCgnI3BhbmVsQ29sbGFwc2UnK2kpLmNvbGxhcHNlKCdoaWRlJyk7CiAgICAgICAgfQogICAgICB9CiAgICB9KTsKICAgIC8vXV0+CiAgICA8L3NjcmlwdD48L2Rpdj48ZGl2IGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OnRlcm1zVGFiIiBjbGFzcz0idWktdGFicy1wYW5lbCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYm90dG9tIHVpLWhlbHBlci1oaWRkZW4iIHJvbGU9InRhYnBhbmVsIiBhcmlhLWhpZGRlbj0idHJ1ZSIgZGF0YS1pbmRleD0iMiI+CiAgICA8ZGl2IGNsYXNzPSJwYW5lbC1ncm91cCI+CiAgICAgICA8ZGl2IGNsYXNzPSJwYW5lbCBwYW5lbC1kZWZhdWx0Ij4KICAgICAgICAgICA8ZGl2IGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9IiNwYW5lbENvbGxhcHNlVE9VIiBjbGFzcz0icGFuZWwtaGVhZGluZyB0ZXh0LWluZm8iPgogICAgICAgICAgICAgICBEYXRhc2V0IFRlcm1zIMKgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tY2hldnJvbi11cCI+PC9zcGFuPgogICAgICAgICAgIDwvZGl2PgogICAgICAgICAgIDxkaXYgaWQ9InBhbmVsQ29sbGFwc2VUT1UiIGNsYXNzPSJjb2xsYXBzZSBpbiI+PGRpdiBpZD0iZGF0YXNldEZvcm06dGFiVmlldzp0b3VGcmFnbWVudCI+CiAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYW5lbC1ib2R5Ij4KICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iZGF0YXNldEZvcm06dGFiVmlldzptZXRhZGF0YV9UZXJtcyIgY2xhc3M9ImNvbC1zbS0zIGNvbnRyb2wtbGFiZWwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGljZW5zZS9EYXRhIFVzZSBBZ3JlZW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJoZWxwLWJsb2NrIj5PdXIgPGEgaHJlZj0iaHR0cHM6Ly9kYXRhdmVyc2Uub3JnL2Jlc3QtcHJhY3RpY2VzL2RhdGF2ZXJzZS1jb21tdW5pdHktbm9ybXMiIHRpdGxlPSJEYXRhdmVyc2UgQ29tbXVuaXR5IE5vcm1zIC0gRGF0YXZlcnNlLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPkNvbW11bml0eSBOb3JtczwvYT4gYXMgd2VsbCBhcyBnb29kIHNjaWVudGlmaWMgcHJhY3RpY2VzIGV4cGVjdCB0aGF0IHByb3BlciBjcmVkaXQgaXMgZ2l2ZW4gdmlhIGNpdGF0aW9uLiBQbGVhc2UgdXNlIHRoZSBkYXRhIGNpdGF0aW9uIHNob3duIG9uIHRoZSBkYXRhc2V0IHBhZ2UuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9saWNlbnNlYnV0dG9ucy5uZXQvcC96ZXJvLzEuMC84OHgzMS5wbmciIHRpdGxlPSJDcmVhdGl2ZSBDb21tb25zIENDMCAxLjAgVW5pdmVyc2FsIFB1YmxpYyBEb21haW4gRGVkaWNhdGlvbi4iIHN0eWxlPSJkaXNwbGF5Om5vbmUiIG9ubG9hZD0idGhpcy5zdHlsZS5kaXNwbGF5PSdpbmxpbmUnIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAiIHRpdGxlPSJDcmVhdGl2ZSBDb21tb25zIENDMCAxLjAgVW5pdmVyc2FsIFB1YmxpYyBEb21haW4gRGVkaWNhdGlvbi4iIHRhcmdldD0iX2JsYW5rIj5DQzAgMS4wPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4gCiAgICA8L2Rpdj48L2Rpdj48ZGl2IGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OnZlcnNpb25zVGFiIiBjbGFzcz0idWktdGFicy1wYW5lbCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYm90dG9tIHVpLWhlbHBlci1oaWRkZW4iIHJvbGU9InRhYnBhbmVsIiBhcmlhLWhpZGRlbj0idHJ1ZSIgZGF0YS1pbmRleD0iMyI+CgogICA8c2NyaXB0PgogICAgICAgLy88IVtDREFUQVsKICAgICAgIC8vIFZlcnNpb24gdGFiOiBSZXRyaWV2ZSBkYXRhIGFmdGVyIHBhZ2UgbG9hZAogICAgICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgcHJlbG9hZF9tZXNzYWdlID0gIihMb2FkaW5nIHZlcnNpb25zLi4uKSI7CiAgICAgICAgICAgICQoJyNkYXRhc2V0Rm9ybVxcOnRhYlZpZXdcXDp2ZXJzaW9uc1RhYmxlX2RhdGEgdHIudWktZGF0YXRhYmxlLWVtcHR5LW1lc3NhZ2UgdGQnKS50ZXh0KHByZWxvYWRfbWVzc2FnZSk7CiAgICAgICAgICAgIHBvc3RMb2FkVmVyc2lvblRhYkxpc3QoKTsKICAgICAgIH0pOwogICAgICAgLy9dXT4KICAgPC9zY3JpcHQ+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpqX2lkdDE4OTIiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+cG9zdExvYWRWZXJzaW9uVGFiTGlzdCA9IGZ1bmN0aW9uKCkge3JldHVybiBQcmltZUZhY2VzLmFiKHtzOiJkYXRhc2V0Rm9ybTp0YWJWaWV3OmpfaWR0MTg5MiIsZjoiZGF0YXNldEZvcm0iLHA6ImRhdGFzZXRGb3JtOnRhYlZpZXc6al9pZHQxODkyIix1OiJkYXRhc2V0Rm9ybTp0YWJWaWV3OnZlcnNpb25zVGFibGUiLHBhOmFyZ3VtZW50c1swXX0pO308L3NjcmlwdD4KICAgIDxkaXYgY2xhc3M9InRleHQtcmlnaHQgbWFyZ2luLWJvdHRvbSI+PGJ1dHRvbiBpZD0iZGF0YXNldEZvcm06dGFiVmlldzpjb21wYXJlVmVyc2lvbnMiIG5hbWU9ImRhdGFzZXRGb3JtOnRhYlZpZXc6Y29tcGFyZVZlcnNpb25zIiBjbGFzcz0idWktYnV0dG9uIHVpLXdpZGdldCB1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwgdWktYnV0dG9uLXRleHQtb25seSIgb25jbGljaz0iUHJpbWVGYWNlcy5hYih7czomcXVvdDtkYXRhc2V0Rm9ybTp0YWJWaWV3OmNvbXBhcmVWZXJzaW9ucyZxdW90OyxmOiZxdW90O2RhdGFzZXRGb3JtJnF1b3Q7LHU6JnF1b3Q7ZGF0YXNldEZvcm0mcXVvdDssb25jbzpmdW5jdGlvbih4aHIsc3RhdHVzLGFyZ3MsZGF0YSl7UEYoJ2RldGFpbHNCbG9ja3MnKS5zaG93KCk7cG9zdF9kaWZmZXJlbmNlcygpOzt9fSk7cmV0dXJuIGZhbHNlOyIgc3R5bGU9ImRpc3BsYXk6bm9uZSIgdHlwZT0ic3VibWl0Ij48c3BhbiBjbGFzcz0idWktYnV0dG9uLXRleHQgdWktYyI+RGlyZWN0PC9zcGFuPjwvYnV0dG9uPjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOnRhYlZpZXc6Y29tcGFyZVZlcnNpb25zX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIkNvbW1hbmRCdXR0b24iLCJ3aWRnZXRfZGF0YXNldEZvcm1fdGFiVmlld19jb21wYXJlVmVyc2lvbnMiLHtpZDoiZGF0YXNldEZvcm06dGFiVmlldzpjb21wYXJlVmVyc2lvbnMifSk7fSk7PC9zY3JpcHQ+CiAgICA8L2Rpdj48ZGl2IGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OnZlcnNpb25zVGFibGUiIGNsYXNzPSJ1aS1kYXRhdGFibGUgdWktd2lkZ2V0Ij48ZGl2IGNsYXNzPSJ1aS1kYXRhdGFibGUtdGFibGV3cmFwcGVyIj48dGFibGUgcm9sZT0iZ3JpZCI+PHRoZWFkIGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OnZlcnNpb25zVGFibGVfaGVhZCI+PHRyIHJvbGU9InJvdyI+PHRoIGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OnZlcnNpb25zVGFibGU6al9pZHQxODk4IiBjbGFzcz0idWktc3RhdGUtZGVmYXVsdCBjb2wtc20tMSB0ZXh0LWNlbnRlciIgcm9sZT0iY29sdW1uaGVhZGVyIiBhcmlhLWxhYmVsPSJEYXRhc2V0IFZlcnNpb24iIHNjb3BlPSJjb2wiPjxzcGFuIGNsYXNzPSJ1aS1jb2x1bW4tdGl0bGUiPkRhdGFzZXQgVmVyc2lvbjwvc3Bhbj48L3RoPjx0aCBpZD0iZGF0YXNldEZvcm06dGFiVmlldzp2ZXJzaW9uc1RhYmxlOmpfaWR0MTkxMCIgY2xhc3M9InVpLXN0YXRlLWRlZmF1bHQiIHJvbGU9ImNvbHVtbmhlYWRlciIgYXJpYS1sYWJlbD0iU3VtbWFyeSIgc2NvcGU9ImNvbCI+PHNwYW4gY2xhc3M9InVpLWNvbHVtbi10aXRsZSI+U3VtbWFyeTwvc3Bhbj48L3RoPjx0aCBpZD0iZGF0YXNldEZvcm06dGFiVmlldzp2ZXJzaW9uc1RhYmxlOmpfaWR0MTk1MiIgY2xhc3M9InVpLXN0YXRlLWRlZmF1bHQgY29sLXNtLTIiIHJvbGU9ImNvbHVtbmhlYWRlciIgYXJpYS1sYWJlbD0iQ29udHJpYnV0b3JzIiBzY29wZT0iY29sIj48c3BhbiBjbGFzcz0idWktY29sdW1uLXRpdGxlIj5Db250cmlidXRvcnM8L3NwYW4+PC90aD48dGggaWQ9ImRhdGFzZXRGb3JtOnRhYlZpZXc6dmVyc2lvbnNUYWJsZTpqX2lkdDE5NTciIGNsYXNzPSJ1aS1zdGF0ZS1kZWZhdWx0IGNvbC1zbS0yIiByb2xlPSJjb2x1bW5oZWFkZXIiIGFyaWEtbGFiZWw9IlB1Ymxpc2hlZCBvbiIgc2NvcGU9ImNvbCI+PHNwYW4gY2xhc3M9InVpLWNvbHVtbi10aXRsZSI+UHVibGlzaGVkIG9uPC9zcGFuPjwvdGg+PC90cj48L3RoZWFkPjx0Ym9keSBpZD0iZGF0YXNldEZvcm06dGFiVmlldzp2ZXJzaW9uc1RhYmxlX2RhdGEiIGNsYXNzPSJ1aS1kYXRhdGFibGUtZGF0YSB1aS13aWRnZXQtY29udGVudCI+PHRyIGNsYXNzPSJ1aS13aWRnZXQtY29udGVudCB1aS1kYXRhdGFibGUtZW1wdHktbWVzc2FnZSI+PHRkIGNvbHNwYW49IjQiPk5vIHJlY29yZHMgZm91bmQuPC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L2Rpdj48L2Rpdj48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3OnZlcnNpb25zVGFibGVfcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiRGF0YVRhYmxlIiwidmVyc2lvbnNUYWJsZSIse2lkOiJkYXRhc2V0Rm9ybTp0YWJWaWV3OnZlcnNpb25zVGFibGUiLGdyb3VwQ29sdW1uSW5kZXhlczpbXSxkaXNhYmxlQ29udGV4dE1lbnVJZkVtcHR5OmZhbHNlfSk7fSk7PC9zY3JpcHQ+PC9kaXY+PC9kaXY+PGlucHV0IGlkPSJkYXRhc2V0Rm9ybTp0YWJWaWV3X2FjdGl2ZUluZGV4IiBuYW1lPSJkYXRhc2V0Rm9ybTp0YWJWaWV3X2FjdGl2ZUluZGV4IiB0eXBlPSJoaWRkZW4iIGF1dG9jb21wbGV0ZT0ib2ZmIiBhcmlhLWhpZGRlbj0idHJ1ZSIgdmFsdWU9IjAiIC8+PC9kaXY+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06dGFiVmlld19zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJUYWJWaWV3IiwiY29udGVudCIse2lkOiJkYXRhc2V0Rm9ybTp0YWJWaWV3IixlZmZlY3REdXJhdGlvbjoibm9ybWFsIixzY3JvbGxhYmxlOmZhbHNlLGJlaGF2aW9yczp7dGFiQ2hhbmdlOmZ1bmN0aW9uKGV4dCxldmVudCkge1ByaW1lRmFjZXMuYWIoe3M6ImRhdGFzZXRGb3JtOnRhYlZpZXciLGU6InRhYkNoYW5nZSIsZjoiZGF0YXNldEZvcm0iLHA6ImRhdGFzZXRGb3JtOnRhYlZpZXciLHU6ImRhdGFzZXRGb3JtOnRhYlZpZXcifSxleHQpO319fSk7fSk7PC9zY3JpcHQ+PC9kaXY+PGRpdiBpZD0iZGF0YXNldEZvcm06al9pZHQxOTc1IiBjbGFzcz0idWktYmxvY2t1aS1jb250ZW50IHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIHVpLWhlbHBlci1oaWRkZW4gdWktc2hhZG93Ij48L2Rpdj48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpqX2lkdDE5NzVfcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiQmxvY2tVSSIsImJsb2NrRGF0YXNldEZvcm0iLHtpZDoiZGF0YXNldEZvcm06al9pZHQxOTc1IixibG9jazoiZGF0YXNldEZvcm0ifSk7fSk7PC9zY3JpcHQ+PGRpdiBpZD0iZGF0YXNldEZvcm06ZmlsZUFscmVhZHlEZWxldGVkUHJldmlvdXMiIGNsYXNzPSJ1aS1kaWFsb2cgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwgdWktc2hhZG93IHVpLWhpZGRlbi1jb250YWluZXIgc21hbGxQb3BVcCI+PGRpdiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci10b3AiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpmaWxlQWxyZWFkeURlbGV0ZWRQcmV2aW91c190aXRsZSIgY2xhc3M9InVpLWRpYWxvZy10aXRsZSI+RWRpdCBGaWxlPC9zcGFuPjxhIGhyZWY9IiMiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXItaWNvbiB1aS1kaWFsb2ctdGl0bGViYXItY2xvc2UgdWktY29ybmVyLWFsbCIgYXJpYS1sYWJlbD0iQ2xvc2UiPjxzcGFuIGNsYXNzPSJ1aS1pY29uIHVpLWljb24tY2xvc2V0aGljayI+PC9zcGFuPjwvYT48L2Rpdj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctY29udGVudCB1aS13aWRnZXQtY29udGVudCIgaWQ9ImRhdGFzZXRGb3JtOmZpbGVBbHJlYWR5RGVsZXRlZFByZXZpb3VzX2NvbnRlbnQiPgogICAgICAgIDxwIGNsYXNzPSJ0ZXh0LWRhbmdlciI+PHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZXhjbGFtYXRpb24tc2lnbiI+PC9zcGFuPiBUaGlzIGZpbGUgaGFzIGFscmVhZHkgYmVlbiBkZWxldGVkIChvciByZXBsYWNlZCkgaW4gdGhlIGN1cnJlbnQgdmVyc2lvbi4gSXQgbWF5IG5vdCBiZSBlZGl0ZWQuPC9wPgogICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ibG9jayI+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tZGVmYXVsdCIgb25jbGljaz0iUEYoJ2ZpbGVBbHJlYWR5RGVsZXRlZFByZXZpb3VzJykuaGlkZSgpOyIgdHlwZT0iYnV0dG9uIj4KICAgICAgICAgICAgICAgIENsb3NlCiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgIDwvZGl2PjwvZGl2PjwvZGl2PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmZpbGVBbHJlYWR5RGVsZXRlZFByZXZpb3VzX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIkRpYWxvZyIsImZpbGVBbHJlYWR5RGVsZXRlZFByZXZpb3VzIix7aWQ6ImRhdGFzZXRGb3JtOmZpbGVBbHJlYWR5RGVsZXRlZFByZXZpb3VzIixtb2RhbDp0cnVlfSk7fSk7PC9zY3JpcHQ+PGRpdiBpZD0iZGF0YXNldEZvcm06YWNjZXNzUG9wdXAiIGNsYXNzPSJ1aS1kaWFsb2cgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwgdWktc2hhZG93IHVpLWhpZGRlbi1jb250YWluZXIiPjxkaXYgY2xhc3M9InVpLWRpYWxvZy10aXRsZWJhciB1aS13aWRnZXQtaGVhZGVyIHVpLWhlbHBlci1jbGVhcmZpeCB1aS1jb3JuZXItdG9wIj48c3BhbiBpZD0iZGF0YXNldEZvcm06YWNjZXNzUG9wdXBfdGl0bGUiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGUiPlJlc3RyaWN0IEFjY2Vzczwvc3Bhbj48YSBocmVmPSIjIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyLWljb24gdWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIHVpLWNvcm5lci1hbGwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNsb3NldGhpY2siPjwvc3Bhbj48L2E+PC9kaXY+PGRpdiBjbGFzcz0idWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiIGlkPSJkYXRhc2V0Rm9ybTphY2Nlc3NQb3B1cF9jb250ZW50Ij48c3BhbiBpZD0iZGF0YXNldEZvcm06al9pZHQxOTc3Ij48L3NwYW4+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmZvY3VzKG51bGwsICdkYXRhc2V0Rm9ybTphY2Nlc3NQb3B1cCcpO30pOzwvc2NyaXB0PgogICAgICAgIDxwIGNsYXNzPSJoZWxwLWJsb2NrIj48c3BhbiBjbGFzcz0idGV4dC1tdXRlZCI+UmVzdHJpY3RpbmcgbGltaXRzIGFjY2VzcyB0byBwdWJsaXNoZWQgZmlsZXMuIFBlb3BsZSB3aG8gd2FudCB0byB1c2UgdGhlIHJlc3RyaWN0ZWQgZmlsZXMgY2FuIHJlcXVlc3QgYWNjZXNzIGJ5IGRlZmF1bHQuICA8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OmJvbGQiPklmIHlvdSBkaXNhYmxlIHJlcXVlc3QgYWNjZXNzLCB5b3UgbXVzdCBhZGQgaW5mb3JtYXRpb24gYWJvdXQgYWNjZXNzIHRvIHRoZSBUZXJtcyBvZiBBY2Nlc3MgZmllbGQuPC9zcGFuPgogICAgICAgICAgICA8cD48L3A+PHNwYW4gY2xhc3M9InRleHQtbXV0ZWQiPkxlYXJuIGFib3V0IHJlc3RyaWN0aW5nIGZpbGVzIGFuZCBkYXRhc2V0IGFjY2VzcyBpbiB0aGUgPGEgaHJlZj0iaHR0cHM6Ly9ndWlkZXMuZGF0YXZlcnNlLm9yZy9lbi81LjEyL3VzZXIvZGF0YXNldC1tYW5hZ2VtZW50Lmh0bWwjcmVzdHJpY3RlZC1maWxlcy10ZXJtcy1vZi1hY2Nlc3MiIHRpdGxlPSJEYXRhdmVyc2UgVXNlciBHdWlkZSIgdGFyZ2V0PSJfYmxhbmsiPlVzZXIgR3VpZGU8L2E+Ljwvc3Bhbj4KICAgICAgICA8L3A+PGRpdiBpZD0iZGF0YXNldEZvcm06al9pZHQxOTg2Ij48aW5wdXQgaWQ9ImRhdGFzZXRGb3JtOnRlcm1zb2ZBY2Nlc3NIaWRkZW4iIHR5cGU9ImhpZGRlbiIgbmFtZT0iZGF0YXNldEZvcm06dGVybXNvZkFjY2Vzc0hpZGRlbiIgLz48aW5wdXQgaWQ9ImRhdGFzZXRGb3JtOmZpbGVBY2Nlc3NSZXF1ZXN0SGlkZGVuIiB0eXBlPSJoaWRkZW4iIG5hbWU9ImRhdGFzZXRGb3JtOmZpbGVBY2Nlc3NSZXF1ZXN0SGlkZGVuIiB2YWx1ZT0iZmFsc2UiIC8+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ob3Jpem9udGFsIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJkYXRhc2V0Rm9ybTpyZXF1ZXN0QWNjZXNzMiIgY2xhc3M9ImNvbC1zbS0zIGNvbnRyb2wtbGFiZWwiPgogICAgICAgICAgICAgICAgICAgIFJlcXVlc3QgQWNjZXNzCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tcXVlc3Rpb24tc2lnbiB0b29sdGlwLWljb24iIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0iYXV0byByaWdodCIgZGF0YS1vcmlnaW5hbC10aXRsZT0iSWYgY2hlY2tlZCwgdXNlcnMgY2FuIHJlcXVlc3QgYWNjZXNzIHRvIHRoZSByZXN0cmljdGVkIGZpbGVzIGluIHRoaXMgZGF0YXNldC4iPjwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tOSI+PGRpdiBpZD0iZGF0YXNldEZvcm06cmVxdWVzdEFjY2VzczIiIGNsYXNzPSJ1aS1zZWxlY3Rib29sZWFuY2hlY2tib3ggdWktY2hrYm94IHVpLXdpZGdldCI+PGRpdiBjbGFzcz0idWktaGVscGVyLWhpZGRlbi1hY2Nlc3NpYmxlIj48aW5wdXQgaWQ9ImRhdGFzZXRGb3JtOnJlcXVlc3RBY2Nlc3MyX2lucHV0IiBuYW1lPSJkYXRhc2V0Rm9ybTpyZXF1ZXN0QWNjZXNzMl9pbnB1dCIgdHlwZT0iY2hlY2tib3giIGF1dG9jb21wbGV0ZT0ib2ZmIiBhcmlhLWxhYmVsPSJFbmFibGUgYWNjZXNzIHJlcXVlc3QiIGFyaWEtY2hlY2tlZD0iZmFsc2UiIG9uY2hhbmdlPSJQcmltZUZhY2VzLmFiKHtzOiZxdW90O2RhdGFzZXRGb3JtOnJlcXVlc3RBY2Nlc3MyJnF1b3Q7LGU6JnF1b3Q7Y2hhbmdlJnF1b3Q7LGY6JnF1b3Q7ZGF0YXNldEZvcm0mcXVvdDsscDomcXVvdDtkYXRhc2V0Rm9ybTpyZXF1ZXN0QWNjZXNzMiZxdW90Oyx1OiZxdW90O2RhdGFzZXRGb3JtOnJlc3RyaWN0RmlsZUJ1dHRvbiZxdW90O30pOyIgLz48L2Rpdj48ZGl2IGNsYXNzPSJ1aS1jaGtib3gtYm94IHVpLXdpZGdldCB1aS1jb3JuZXItYWxsIHVpLXN0YXRlLWRlZmF1bHQiPjxzcGFuIGNsYXNzPSJ1aS1jaGtib3gtaWNvbiB1aS1pY29uIHVpLWljb24tYmxhbmsgdWktYyI+PC9zcGFuPjwvZGl2PjxzcGFuIGNsYXNzPSJ1aS1jaGtib3gtbGFiZWwiPkVuYWJsZSBhY2Nlc3MgcmVxdWVzdDwvc3Bhbj48L2Rpdj48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpyZXF1ZXN0QWNjZXNzMl9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJTZWxlY3RCb29sZWFuQ2hlY2tib3giLCJpbnB1dGZhciIse2lkOiJkYXRhc2V0Rm9ybTpyZXF1ZXN0QWNjZXNzMiJ9KTt9KTs8L3NjcmlwdD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj48ZGl2IGlkPSJkYXRhc2V0Rm9ybTpwb3B1cFdhcm5pbmciPjxkaXYgYXJpYS1saXZlPSJwb2xpdGUiIGNsYXNzPSJ1aS1tZXNzYWdlIHVpLW1lc3NhZ2UtZXJyb3IgdWktd2lkZ2V0IHVpLWNvcm5lci1hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idWktbWVzc2FnZS1lcnJvci1kZXRhaWwiPllvdSBtdXN0IGVuYWJsZSByZXF1ZXN0IGFjY2VzcyBvciBhZGQgdGVybXMgb2YgYWNjZXNzIHRvIHJlc3RyaWN0IGZpbGUgYWNjZXNzLjwvc3Bhbj48L2Rpdj48L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJ0ZXJtc0FjY2Vzc0lucHV0IiBjbGFzcz0iY29sLXNtLTMgY29udHJvbC1sYWJlbCI+CiAgICAgICAgICAgICAgICAgICAgVGVybXMgb2YgQWNjZXNzIGZvciBSZXN0cmljdGVkIEZpbGVzCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tcXVlc3Rpb24tc2lnbiB0b29sdGlwLWljb24iIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0iYXV0byByaWdodCIgZGF0YS1vcmlnaW5hbC10aXRsZT0iSW5mb3JtYXRpb24gb24gaG93IGFuZCBpZiB1c2VycyBjYW4gYWNjZXNzIHJlc3RyaWN0ZWQgZmlsZXMgaW4gdGhpcyBEYXRhc2V0Ij48L3NwYW4+CiAgICAgICAgICAgICAgICA8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTkiPjx0ZXh0YXJlYSBpZD0iZGF0YXNldEZvcm06dGVybXNBY2Nlc3NJbnB1dCIgbmFtZT0iZGF0YXNldEZvcm06dGVybXNBY2Nlc3NJbnB1dCIgY2xhc3M9InVpLWlucHV0ZmllbGQgdWktaW5wdXR0ZXh0YXJlYSB1aS13aWRnZXQgdWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItYWxsIGZvcm0tY29udHJvbCIgY29scz0iMjAiIHJvd3M9IjUiIG1heGxlbmd0aD0iMjE0NzQ4MzY0NyIgb25rZXl1cD0iUHJpbWVGYWNlcy5hYih7czomcXVvdDtkYXRhc2V0Rm9ybTp0ZXJtc0FjY2Vzc0lucHV0JnF1b3Q7LGU6JnF1b3Q7a2V5dXAmcXVvdDssZjomcXVvdDtkYXRhc2V0Rm9ybSZxdW90OyxwOiZxdW90O2RhdGFzZXRGb3JtOnRlcm1zQWNjZXNzSW5wdXQmcXVvdDssdTomcXVvdDtkYXRhc2V0Rm9ybTpyZXN0cmljdEZpbGVCdXR0b24mcXVvdDt9KTsiPjwvdGV4dGFyZWE+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06dGVybXNBY2Nlc3NJbnB1dF9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJJbnB1dFRleHRhcmVhIiwiaW5wdXR0b2EiLHtpZDoiZGF0YXNldEZvcm06dGVybXNBY2Nlc3NJbnB1dCIsYXV0b1Jlc2l6ZTpmYWxzZSxiZWhhdmlvcnM6e319KTt9KTs8L3NjcmlwdD4gCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ibG9jayI+PGEgaWQ9ImRhdGFzZXRGb3JtOnJlc3RyaWN0RmlsZUJ1dHRvbiIgaHJlZj0iIyIgY2xhc3M9InVpLWNvbW1hbmRsaW5rIHVpLXdpZGdldCBidG4gYnRuLWRlZmF1bHQiIG9uY2xpY2s9InRlc3RUT0EoKTs7UHJpbWVGYWNlcy5hYih7czomcXVvdDtkYXRhc2V0Rm9ybTpyZXN0cmljdEZpbGVCdXR0b24mcXVvdDssZjomcXVvdDtkYXRhc2V0Rm9ybSZxdW90Oyx1OiZxdW90O2RhdGFzZXRGb3JtOnBvcHVwV2FybmluZyZxdW90O30pO3JldHVybiBmYWxzZTsiPlNhdmUgQ2hhbmdlczwvYT4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1saW5rIiBvbmNsaWNrPSJQRignYWNjZXNzUG9wdXAnKS5oaWRlKCk7UEYoJ2Jsb2NrRGF0YXNldEZvcm0nKS5oaWRlKCk7IiB0eXBlPSJidXR0b24iPgogICAgICAgICAgICAgICAgQ2FuY2VsCiAgICAgICAgICAgIDwvYnV0dG9uPiAKCiAgICAgICAgPC9kaXY+PC9kaXY+PC9kaXY+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06YWNjZXNzUG9wdXBfcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiRGlhbG9nIiwiYWNjZXNzUG9wdXAiLHtpZDoiZGF0YXNldEZvcm06YWNjZXNzUG9wdXAiLG1vZGFsOnRydWUsd2lkdGg6IjcwMHB4IixoZWlnaHQ6IjM1MHB4In0pO30pOzwvc2NyaXB0PjxkaXYgaWQ9ImRhdGFzZXRGb3JtOmZpbGVFbWJhcmdvUG9wdXAiIGNsYXNzPSJ1aS1kaWFsb2cgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwgdWktc2hhZG93IHVpLWhpZGRlbi1jb250YWluZXIgc21hbGxQb3BVcCI+PGRpdiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci10b3AiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpmaWxlRW1iYXJnb1BvcHVwX3RpdGxlIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlIj5FZGl0IEVtYmFyZ288L3NwYW4+PGEgaHJlZj0iIyIgY2xhc3M9InVpLWRpYWxvZy10aXRsZWJhci1pY29uIHVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSB1aS1jb3JuZXItYWxsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gY2xhc3M9InVpLWljb24gdWktaWNvbi1jbG9zZXRoaWNrIj48L3NwYW4+PC9hPjwvZGl2PjxkaXYgY2xhc3M9InVpLWRpYWxvZy1jb250ZW50IHVpLXdpZGdldC1jb250ZW50IiBpZD0iZGF0YXNldEZvcm06ZmlsZUVtYmFyZ29Qb3B1cF9jb250ZW50Ij48c3BhbiBpZD0iZGF0YXNldEZvcm06al9pZHQxOTk0Ij48L3NwYW4+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmZvY3VzKCdkYXRhc2V0Rm9ybTpmaWxlRW1iYXJnb0RhdGUnKTt9KTs8L3NjcmlwdD48cCBjbGFzcz0idGV4dC1kYW5nZXIgZW1iYXJnbyI+PHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZXhjbGFtYXRpb24tc2lnbiI+PC9zcGFuPlRoZSBzZWxlY3RlZCBmaWxlIG9yIGZpbGVzIGhhdmUgYWxyZWFkeSBiZWVuIHB1Ymxpc2hlZC4gQ29udGFjdCBhbiBhZG1pbmlzdHJhdG9yIHRvIGNoYW5nZSB0aGUgZW1iYXJnbyBkYXRlIG9yIHJlYXNvbiBvZiB0aGUgZmlsZSBvciBmaWxlcy48L3A+PHNwYW4gaWQ9ImRhdGFzZXRGb3JtOmVtYmFyZ29JbnB1dHMiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbWJhcmdvIj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVtYmFyZ28iPgogICAgICAgICAgICA8L2Rpdj48L3NwYW4+CiAgICAgICAgPGRpdiBjbGFzcz0iYnV0dG9uLWJsb2NrIj48YnV0dG9uIGlkPSJkYXRhc2V0Rm9ybTpmaWxlRW1iYXJnb1BvcHVwQ2FuY2VsQnV0dG9uIiBuYW1lPSJkYXRhc2V0Rm9ybTpmaWxlRW1iYXJnb1BvcHVwQ2FuY2VsQnV0dG9uIiBjbGFzcz0idWktYnV0dG9uIHVpLXdpZGdldCB1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwgdWktYnV0dG9uLXRleHQtb25seSBidG4gYnRuLWxpbmsiIG9uY2xpY2s9IlByaW1lRmFjZXMuYmNuKHRoaXMsZXZlbnQsW2Z1bmN0aW9uKGV2ZW50KXtQRignZmlsZUVtYmFyZ29Qb3B1cCcpLmhpZGUoKTsgICAgICAgICAgICAgICAgICAgICBQRignYmxvY2tEYXRhc2V0Rm9ybScpLmhpZGUoKTt9LGZ1bmN0aW9uKGV2ZW50KXtQcmltZUZhY2VzLmFiKHtzOiZxdW90O2RhdGFzZXRGb3JtOmZpbGVFbWJhcmdvUG9wdXBDYW5jZWxCdXR0b24mcXVvdDssZjomcXVvdDtkYXRhc2V0Rm9ybSZxdW90Oyx1OiZxdW90O2RhdGFzZXRGb3JtOmVtYmFyZ29JbnB1dHMmcXVvdDt9KTtyZXR1cm4gZmFsc2U7fV0pOyIgdHlwZT0ic3VibWl0Ij48c3BhbiBjbGFzcz0idWktYnV0dG9uLXRleHQgdWktYyI+Q2FuY2VsPC9zcGFuPjwvYnV0dG9uPjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmZpbGVFbWJhcmdvUG9wdXBDYW5jZWxCdXR0b25fcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiQ29tbWFuZEJ1dHRvbiIsIndpZGdldF9kYXRhc2V0Rm9ybV9maWxlRW1iYXJnb1BvcHVwQ2FuY2VsQnV0dG9uIix7aWQ6ImRhdGFzZXRGb3JtOmZpbGVFbWJhcmdvUG9wdXBDYW5jZWxCdXR0b24ifSk7fSk7PC9zY3JpcHQ+CiAgICAgICAgPC9kaXY+PC9kaXY+PC9kaXY+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06ZmlsZUVtYmFyZ29Qb3B1cF9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJEaWFsb2ciLCJmaWxlRW1iYXJnb1BvcHVwIix7aWQ6ImRhdGFzZXRGb3JtOmZpbGVFbWJhcmdvUG9wdXAiLHJlc2l6YWJsZTpmYWxzZSxtb2RhbDp0cnVlfSk7fSk7PC9zY3JpcHQ+PGRpdiBpZD0iZGF0YXNldEZvcm06ZGVsZXRlRmlsZUNvbmZpcm0iIGNsYXNzPSJ1aS1kaWFsb2cgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwgdWktc2hhZG93IHVpLWhpZGRlbi1jb250YWluZXIgc21hbGxQb3BVcCI+PGRpdiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci10b3AiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpkZWxldGVGaWxlQ29uZmlybV90aXRsZSIgY2xhc3M9InVpLWRpYWxvZy10aXRsZSI+RGVsZXRlIEZpbGVzPC9zcGFuPjxhIGhyZWY9IiMiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXItaWNvbiB1aS1kaWFsb2ctdGl0bGViYXItY2xvc2UgdWktY29ybmVyLWFsbCIgYXJpYS1sYWJlbD0iQ2xvc2UiPjxzcGFuIGNsYXNzPSJ1aS1pY29uIHVpLWljb24tY2xvc2V0aGljayI+PC9zcGFuPjwvYT48L2Rpdj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctY29udGVudCB1aS13aWRnZXQtY29udGVudCIgaWQ9ImRhdGFzZXRGb3JtOmRlbGV0ZUZpbGVDb25maXJtX2NvbnRlbnQiPgogICAgICAgIDxwIGNsYXNzPSJ0ZXh0LXdhcm5pbmciPjxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXdhcm5pbmctc2lnbiI+PC9zcGFuPiBUaGUgZmlsZSB3aWxsIGJlIGRlbGV0ZWQgYWZ0ZXIgeW91IGNsaWNrIG9uIHRoZSBEZWxldGUgYnV0dG9uLjwvcD4KICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtd2FybmluZyI+PHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24td2FybmluZy1zaWduIj48L3NwYW4+IEZpbGVzIHdpbGwgbm90IGJlIHJlbW92ZWQgZnJvbSBwcmV2aW91c2x5IHB1Ymxpc2hlZCB2ZXJzaW9ucyBvZiB0aGUgZGF0YXNldC48L3A+CiAgICAgICAgPGRpdiBjbGFzcz0iYnV0dG9uLWJsb2NrIj48YnV0dG9uIGlkPSJkYXRhc2V0Rm9ybTpqX2lkdDIwMjUiIG5hbWU9ImRhdGFzZXRGb3JtOmpfaWR0MjAyNSIgY2xhc3M9InVpLWJ1dHRvbiB1aS13aWRnZXQgdWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItYWxsIHVpLWJ1dHRvbi10ZXh0LW9ubHkgYnRuIGJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJQcmltZUZhY2VzLmJjbih0aGlzLGV2ZW50LFtmdW5jdGlvbihldmVudCl7UEYoJ2RlbGV0ZUZpbGVDb25maXJtYXRpb24nKS5oaWRlKCl9LGZ1bmN0aW9uKGV2ZW50KXtQcmltZUZhY2VzLmFiKHtzOiZxdW90O2RhdGFzZXRGb3JtOmpfaWR0MjAyNSZxdW90OyxmOiZxdW90O2RhdGFzZXRGb3JtJnF1b3Q7fSk7cmV0dXJuIGZhbHNlO31dKTsiIHR5cGU9InN1Ym1pdCI+PHNwYW4gY2xhc3M9InVpLWJ1dHRvbi10ZXh0IHVpLWMiPkRlbGV0ZTwvc3Bhbj48L2J1dHRvbj48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpqX2lkdDIwMjVfcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiQ29tbWFuZEJ1dHRvbiIsIndpZGdldF9kYXRhc2V0Rm9ybV9qX2lkdDIwMjUiLHtpZDoiZGF0YXNldEZvcm06al9pZHQyMDI1In0pO30pOzwvc2NyaXB0PgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWxpbmsiIG9uY2xpY2s9IlBGKCdkZWxldGVGaWxlQ29uZmlybWF0aW9uJykuaGlkZSgpIiB0eXBlPSJidXR0b24iPgogICAgICAgICAgICAgICAgQ2FuY2VsCiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgIDwvZGl2PjwvZGl2PjwvZGl2PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmRlbGV0ZUZpbGVDb25maXJtX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIkRpYWxvZyIsImRlbGV0ZUZpbGVDb25maXJtYXRpb24iLHtpZDoiZGF0YXNldEZvcm06ZGVsZXRlRmlsZUNvbmZpcm0iLG1vZGFsOnRydWV9KTt9KTs8L3NjcmlwdD48ZGl2IGlkPSJkYXRhc2V0Rm9ybTpjb25maWd1cmVUb29sUG9wdXAiIGNsYXNzPSJ1aS1kaWFsb2cgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwgdWktc2hhZG93IHVpLWhpZGRlbi1jb250YWluZXIgc21hbGxQb3BVcCI+PGRpdiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci10b3AiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpjb25maWd1cmVUb29sUG9wdXBfdGl0bGUiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGUiPjwvc3Bhbj48YSBocmVmPSIjIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyLWljb24gdWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIHVpLWNvcm5lci1hbGwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNsb3NldGhpY2siPjwvc3Bhbj48L2E+PC9kaXY+PGRpdiBjbGFzcz0idWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiIGlkPSJkYXRhc2V0Rm9ybTpjb25maWd1cmVUb29sUG9wdXBfY29udGVudCI+CgogICAgICAgIDxwIGNsYXNzPSJoZWxwLWJsb2NrIj48c3BhbiBjbGFzcz0idGV4dC1sZWZ0Ij4gPGJyLz48L3NwYW4+CiAgICAgICAgPC9wPgogICAgICAgIAogICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ibG9jayI+PGJ1dHRvbiBpZD0iZGF0YXNldEZvcm06al9pZHQyMDMwIiBuYW1lPSJkYXRhc2V0Rm9ybTpqX2lkdDIwMzAiIGNsYXNzPSJ1aS1idXR0b24gdWktd2lkZ2V0IHVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLWFsbCB1aS1idXR0b24tdGV4dC1vbmx5IGJ0biBidG4tZGVmYXVsdCIgb25jbGljaz0iUHJpbWVGYWNlcy5iY24odGhpcyxldmVudCxbZnVuY3Rpb24oZXZlbnQpe1BGKCdjb25maWd1cmVUb29sUG9wdXAnKS5oaWRlKCk7fSxmdW5jdGlvbihldmVudCl7UHJpbWVGYWNlcy5hYih7czomcXVvdDtkYXRhc2V0Rm9ybTpqX2lkdDIwMzAmcXVvdDssZjomcXVvdDtkYXRhc2V0Rm9ybSZxdW90Oyx1OiZxdW90O21lc3NhZ2VQYW5lbCZxdW90O30pO3JldHVybiBmYWxzZTt9XSk7IiB0eXBlPSJzdWJtaXQiPjxzcGFuIGNsYXNzPSJ1aS1idXR0b24tdGV4dCB1aS1jIj5Db250aW51ZTwvc3Bhbj48L2J1dHRvbj48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpqX2lkdDIwMzBfcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiQ29tbWFuZEJ1dHRvbiIsIndpZGdldF9kYXRhc2V0Rm9ybV9qX2lkdDIwMzAiLHtpZDoiZGF0YXNldEZvcm06al9pZHQyMDMwIn0pO30pOzwvc2NyaXB0PgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWxpbmsiIG9uY2xpY2s9IlBGKCdjb25maWd1cmVUb29sUG9wdXAnKS5oaWRlKCk7UEYoJ2Jsb2NrRGF0YXNldEZvcm0nKS5oaWRlKCk7IiB0eXBlPSJidXR0b24iPgogICAgICAgICAgICAgICAgQ2FuY2VsCiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgIDwvZGl2PjwvZGl2PjwvZGl2PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmNvbmZpZ3VyZVRvb2xQb3B1cF9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJEaWFsb2ciLCJjb25maWd1cmVUb29sUG9wdXAiLHtpZDoiZGF0YXNldEZvcm06Y29uZmlndXJlVG9vbFBvcHVwIixtb2RhbDp0cnVlfSk7fSk7PC9zY3JpcHQ+PGRpdiBpZD0iZGF0YXNldEZvcm06c2VsZWN0RmlsZXMiIGNsYXNzPSJ1aS1kaWFsb2cgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwgdWktc2hhZG93IHVpLWhpZGRlbi1jb250YWluZXIgc21hbGxQb3BVcCI+PGRpdiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci10b3AiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpzZWxlY3RGaWxlc190aXRsZSIgY2xhc3M9InVpLWRpYWxvZy10aXRsZSI+U2VsZWN0IEZpbGUocyk8L3NwYW4+PGEgaHJlZj0iIyIgY2xhc3M9InVpLWRpYWxvZy10aXRsZWJhci1pY29uIHVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSB1aS1jb3JuZXItYWxsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gY2xhc3M9InVpLWljb24gdWktaWNvbi1jbG9zZXRoaWNrIj48L3NwYW4+PC9hPjwvZGl2PjxkaXYgY2xhc3M9InVpLWRpYWxvZy1jb250ZW50IHVpLXdpZGdldC1jb250ZW50IiBpZD0iZGF0YXNldEZvcm06c2VsZWN0RmlsZXNfY29udGVudCI+CiAgICAgICAgPHAgY2xhc3M9InRleHQtZGFuZ2VyIj48c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1leGNsYW1hdGlvbi1zaWduIj48L3NwYW4+IFBsZWFzZSBzZWxlY3Qgb25lIG9yIG1vcmUgZmlsZXMuPC9wPgogICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ibG9jayI+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tZGVmYXVsdCIgb25jbGljaz0iUEYoJ3NlbGVjdEZpbGVzJykuaGlkZSgpOyIgdHlwZT0iYnV0dG9uIj4KICAgICAgICAgICAgICAgIENsb3NlCiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgIDwvZGl2PjwvZGl2PjwvZGl2PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOnNlbGVjdEZpbGVzX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIkRpYWxvZyIsInNlbGVjdEZpbGVzIix7aWQ6ImRhdGFzZXRGb3JtOnNlbGVjdEZpbGVzIixtb2RhbDp0cnVlfSk7fSk7PC9zY3JpcHQ+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06al9pZHQyMDMzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPnJlc3RyaWN0RmlsZUNvbW1hbmQgPSBmdW5jdGlvbigpIHtyZXR1cm4gUHJpbWVGYWNlcy5hYih7czoiZGF0YXNldEZvcm06al9pZHQyMDMzIixmOiJkYXRhc2V0Rm9ybSIsdToibWVzc2FnZVBhbmVsIixwYTphcmd1bWVudHNbMF19KTt9PC9zY3JpcHQ+CiAgICAgICAgPHNjcmlwdD4KICAgICAgICAvLzwhW0NEQVRBWwogICAgICAgICAgICBmdW5jdGlvbiB0ZXN0VE9BKCkgewogICAgICAgICAgICAgICAgdmFyIHRlcm1zb2ZBY2Nlc3NIaWRkZW4sIGZpbGVBY2Nlc3NSZXF1ZXN0SGlkZGVuOwogICAgICAgICAgICAgICAgICAgIHRyeXsKICAgICAgICAgICAgICAgICAgICAgICAgdGVybXNvZkFjY2Vzc0hpZGRlbiAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGF0YXNldEZvcm06dGVybXNvZkFjY2Vzc0hpZGRlbiIpLnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICBmaWxlQWNjZXNzUmVxdWVzdEhpZGRlbiAgPSAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkYXRhc2V0Rm9ybTpmaWxlQWNjZXNzUmVxdWVzdEhpZGRlbiIpLnZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcil7CiAgICAgICAgICAgICAgICAgICAgICAgIHRlcm1zb2ZBY2Nlc3NIaWRkZW4gID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpbGVGb3JtOnRlcm1zb2ZBY2Nlc3NIaWRkZW4iKS52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUFjY2Vzc1JlcXVlc3RIaWRkZW4gID0gICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmlsZUZvcm06ZmlsZUFjY2Vzc1JlcXVlc3RIaWRkZW4iKS52YWx1ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWxlQWNjZXNzUmVxdWVzdEhpZGRlbiA9PT0gJ2ZhbHNlJyAmJiB0ZXJtc29mQWNjZXNzSGlkZGVuID09PSAnJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAvL05vdCBjb21wbGlhbnQgc2hvdyBlcnJvciBrZWVwIHBvcHVwIG9wZW4uLi4KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBGKCdhY2Nlc3NQb3B1cCcpLmhpZGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0RmlsZUNvbW1hbmQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgIAogICAgICAgIC8vXV0+CiAgICA8L3NjcmlwdD48ZGl2IGlkPSJkYXRhc2V0Rm9ybTpzaGFyZURpYWxvZyIgY2xhc3M9InVpLWRpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1zaGFkb3cgdWktaGlkZGVuLWNvbnRhaW5lciI+PGRpdiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci10b3AiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpzaGFyZURpYWxvZ190aXRsZSIgY2xhc3M9InVpLWRpYWxvZy10aXRsZSI+U2hhcmUgRGF0YXNldDwvc3Bhbj48YSBocmVmPSIjIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyLWljb24gdWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIHVpLWNvcm5lci1hbGwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNsb3NldGhpY2siPjwvc3Bhbj48L2E+PC9kaXY+PGRpdiBjbGFzcz0idWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiIGlkPSJkYXRhc2V0Rm9ybTpzaGFyZURpYWxvZ19jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImhlbHAtYmxvY2siPlNoYXJlIHRoaXMgZGF0YXNldCBvbiB5b3VyIGZhdm9yaXRlIHNvY2lhbCBtZWRpYSBuZXR3b3Jrcy48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InNoYXJycmUtd2lkZ2V0IiBkYXRhLXVybD0iaHR0cHM6Ly9kYXRhdmVyc2UuaGFydmFyZC5lZHUvZGF0YXNldC54aHRtbD9wZXJzaXN0ZW50SWQ9ZG9pOjEwLjc5MTAvRFZOL05KN1hTTyIgZGF0YS10ZXh0PSJWaWV3IHRoaXMgZGF0YXNldC4iPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tYmxvY2siPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJQRignc2hhcmVEaWFsb2cnKS5oaWRlKCkiIHR5cGU9ImJ1dHRvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xvc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj48L2Rpdj48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpzaGFyZURpYWxvZ19zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJEaWFsb2ciLCJzaGFyZURpYWxvZyIse2lkOiJkYXRhc2V0Rm9ybTpzaGFyZURpYWxvZyIsbW9kYWw6dHJ1ZX0pO30pOzwvc2NyaXB0PjxkaXYgaWQ9ImRhdGFzZXRGb3JtOmNpdGF0aW9uc0RpYWxvZyIgY2xhc3M9InVpLWRpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1zaGFkb3cgdWktaGlkZGVuLWNvbnRhaW5lciBzbWFsbFBvcFVwIj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXIgdWktd2lkZ2V0LWhlYWRlciB1aS1oZWxwZXItY2xlYXJmaXggdWktY29ybmVyLXRvcCI+PHNwYW4gaWQ9ImRhdGFzZXRGb3JtOmNpdGF0aW9uc0RpYWxvZ190aXRsZSIgY2xhc3M9InVpLWRpYWxvZy10aXRsZSI+RGF0YXNldCBDaXRhdGlvbnM8L3NwYW4+PGEgaHJlZj0iIyIgY2xhc3M9InVpLWRpYWxvZy10aXRsZWJhci1pY29uIHVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSB1aS1jb3JuZXItYWxsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gY2xhc3M9InVpLWljb24gdWktaWNvbi1jbG9zZXRoaWNrIj48L3NwYW4+PC9hPjwvZGl2PjxkaXYgY2xhc3M9InVpLWRpYWxvZy1jb250ZW50IHVpLXdpZGdldC1jb250ZW50IiBpZD0iZGF0YXNldEZvcm06Y2l0YXRpb25zRGlhbG9nX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iaGVscC1ibG9jayI+Q2l0YXRpb25zIGZvciB0aGlzIGRhdGFzZXQgYXJlIHJldHJpZXZlZCBmcm9tIENyb3NzcmVmIHZpYSBEYXRhQ2l0ZSB1c2luZyBNYWtlIERhdGEgQ291bnQgc3RhbmRhcmRzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBkYXRhc2V0IG1ldHJpY3MsIHBsZWFzZSByZWZlciB0byB0aGUgPGEgaHJlZj0iaHR0cHM6Ly9ndWlkZXMuZGF0YXZlcnNlLm9yZy9lbi81LjEyL3VzZXIvZGF0YXNldC1tYW5hZ2VtZW50Lmh0bWwjZGF0YXNldC1tZXRyaWNzLWFuZC1tYWtlLWRhdGEtY291bnQiIHRpdGxlPSJEYXRhc2V0IE1ldHJpY3MgYW5kIE1ha2UgRGF0YSBDb3VudCAtIERhdGF2ZXJzZSBVc2VyIEd1aWRlIiB0YXJnZXQ9Il9ibGFuayI+VXNlciBHdWlkZTwvYT4uCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iY2l0YXRpb25zLWxpc3QtYmxvY2siPjxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29ycnksIG5vIGNpdGF0aW9ucyB3ZXJlIGZvdW5kLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tYmxvY2siPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJQRignY2l0YXRpb25zRGlhbG9nJykuaGlkZSgpIiB0eXBlPSJidXR0b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsb3NlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9kaXY+PC9kaXY+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06Y2l0YXRpb25zRGlhbG9nX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIkRpYWxvZyIsImNpdGF0aW9uc0RpYWxvZyIse2lkOiJkYXRhc2V0Rm9ybTpjaXRhdGlvbnNEaWFsb2ciLG1vZGFsOnRydWV9KTt9KTs8L3NjcmlwdD48ZGl2IGlkPSJkYXRhc2V0Rm9ybTpkb3dubG9hZEludmFsaWQiIGNsYXNzPSJ1aS1kaWFsb2cgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwgdWktc2hhZG93IHVpLWhpZGRlbi1jb250YWluZXIgc21hbGxQb3BVcCI+PGRpdiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci10b3AiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpkb3dubG9hZEludmFsaWRfdGl0bGUiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGUiPlJlc3RyaWN0ZWQgRmlsZXMgU2VsZWN0ZWQ8L3NwYW4+PGEgaHJlZj0iIyIgY2xhc3M9InVpLWRpYWxvZy10aXRsZWJhci1pY29uIHVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSB1aS1jb3JuZXItYWxsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gY2xhc3M9InVpLWljb24gdWktaWNvbi1jbG9zZXRoaWNrIj48L3NwYW4+PC9hPjwvZGl2PjxkaXYgY2xhc3M9InVpLWRpYWxvZy1jb250ZW50IHVpLXdpZGdldC1jb250ZW50IiBpZD0iZGF0YXNldEZvcm06ZG93bmxvYWRJbnZhbGlkX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC1kYW5nZXIiPjxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWV4Y2xhbWF0aW9uLXNpZ24iPjwvc3Bhbj4gVGhlIHNlbGVjdGVkIGZpbGUocykgbWF5IG5vdCBiZSBkb3dubG9hZGVkIGJlY2F1c2UgeW91IGhhdmUgbm90IGJlZW4gZ3JhbnRlZCBhY2Nlc3MuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tYmxvY2siPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJQRignZG93bmxvYWRJbnZhbGlkJykuaGlkZSgpOyIgdHlwZT0iYnV0dG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbG9zZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PjwvZGl2PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmRvd25sb2FkSW52YWxpZF9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJEaWFsb2ciLCJkb3dubG9hZEludmFsaWQiLHtpZDoiZGF0YXNldEZvcm06ZG93bmxvYWRJbnZhbGlkIixtb2RhbDp0cnVlfSk7fSk7PC9zY3JpcHQ+PGRpdiBpZD0iZGF0YXNldEZvcm06ZG93bmxvYWRUb29MYXJnZSIgY2xhc3M9InVpLWRpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1zaGFkb3cgdWktaGlkZGVuLWNvbnRhaW5lciBzbWFsbFBvcFVwIj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXIgdWktd2lkZ2V0LWhlYWRlciB1aS1oZWxwZXItY2xlYXJmaXggdWktY29ybmVyLXRvcCI+PHNwYW4gaWQ9ImRhdGFzZXRGb3JtOmRvd25sb2FkVG9vTGFyZ2VfdGl0bGUiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGUiPkRvd25sb2FkIE9wdGlvbnM8L3NwYW4+PGEgaHJlZj0iIyIgY2xhc3M9InVpLWRpYWxvZy10aXRsZWJhci1pY29uIHVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSB1aS1jb3JuZXItYWxsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gY2xhc3M9InVpLWljb24gdWktaWNvbi1jbG9zZXRoaWNrIj48L3NwYW4+PC9hPjwvZGl2PjxkaXYgY2xhc3M9InVpLWRpYWxvZy1jb250ZW50IHVpLXdpZGdldC1jb250ZW50IiBpZD0iZGF0YXNldEZvcm06ZG93bmxvYWRUb29MYXJnZV9jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtZGFuZ2VyIj48c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1leGNsYW1hdGlvbi1zaWduIj48L3NwYW4+ICBUaGUgZmlsZXMgc2VsZWN0ZWQgYXJlIHRvbyBsYXJnZSB0byBkb3dubG9hZCBhcyBhIFpJUC48L3A+CiAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJoZWxwLWJsb2NrIj5Zb3UgY2FuIHNlbGVjdCBpbmRpdmlkdWFsIGZpbGVzIHRoYXQgYXJlIGJlbG93IHRoZSAyMC4wIEdCIGRvd25sb2FkIGxpbWl0IGZyb20gdGhlIGZpbGVzIHRhYmxlLCBvciB1c2UgdGhlIDxhIGhyZWY9Imh0dHBzOi8vZ3VpZGVzLmRhdGF2ZXJzZS5vcmcvZW4vNS4xMi9hcGkvZGF0YWFjY2Vzcy5odG1sIiB0aXRsZT0iRGF0YSBBY2Nlc3MgQVBJIiB0YXJnZXQ9Il9ibGFuayI+RGF0YSBBY2Nlc3MgQVBJPC9hPiBmb3IgcHJvZ3JhbW1hdGljIGFjY2VzcyB0byB0aGUgZmlsZXMuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD48L2Rpdj48L2Rpdj48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpkb3dubG9hZFRvb0xhcmdlX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIkRpYWxvZyIsImRvd25sb2FkVG9vTGFyZ2UiLHtpZDoiZGF0YXNldEZvcm06ZG93bmxvYWRUb29MYXJnZSIsbW9kYWw6dHJ1ZX0pO30pOzwvc2NyaXB0PjxkaXYgaWQ9ImRhdGFzZXRGb3JtOnNlbGVjdEZpbGVzRm9yRG93bmxvYWQiIGNsYXNzPSJ1aS1kaWFsb2cgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwgdWktc2hhZG93IHVpLWhpZGRlbi1jb250YWluZXIgc21hbGxQb3BVcCI+PGRpdiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci10b3AiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpzZWxlY3RGaWxlc0ZvckRvd25sb2FkX3RpdGxlIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlIj5TZWxlY3QgRmlsZShzKTwvc3Bhbj48YSBocmVmPSIjIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyLWljb24gdWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIHVpLWNvcm5lci1hbGwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNsb3NldGhpY2siPjwvc3Bhbj48L2E+PC9kaXY+PGRpdiBjbGFzcz0idWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiIGlkPSJkYXRhc2V0Rm9ybTpzZWxlY3RGaWxlc0ZvckRvd25sb2FkX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC1kYW5nZXIiPjxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWV4Y2xhbWF0aW9uLXNpZ24iPjwvc3Bhbj4gUGxlYXNlIHNlbGVjdCBhIGZpbGUgb3IgZmlsZXMgdG8gYmUgZG93bmxvYWRlZC48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ibG9jayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiIG9uY2xpY2s9IlBGKCdzZWxlY3RGaWxlc0ZvckRvd25sb2FkJykuaGlkZSgpO1BGKCdibG9ja0RhdGFzZXRGb3JtJykuaGlkZSgpOyIgdHlwZT0iYnV0dG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbG9zZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PjwvZGl2PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOnNlbGVjdEZpbGVzRm9yRG93bmxvYWRfcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiRGlhbG9nIiwic2VsZWN0RmlsZXNGb3JEb3dubG9hZCIse2lkOiJkYXRhc2V0Rm9ybTpzZWxlY3RGaWxlc0ZvckRvd25sb2FkIixtb2RhbDp0cnVlfSk7fSk7PC9zY3JpcHQ+PGRpdiBpZD0iZGF0YXNldEZvcm06ZG93bmxvYWRNaXhlZCIgY2xhc3M9InVpLWRpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1zaGFkb3cgdWktaGlkZGVuLWNvbnRhaW5lciBzbWFsbFBvcFVwIj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXIgdWktd2lkZ2V0LWhlYWRlciB1aS1oZWxwZXItY2xlYXJmaXggdWktY29ybmVyLXRvcCI+PHNwYW4gaWQ9ImRhdGFzZXRGb3JtOmRvd25sb2FkTWl4ZWRfdGl0bGUiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGUiPlJlc3RyaWN0ZWQgRmlsZXMgU2VsZWN0ZWQ8L3NwYW4+PGEgaHJlZj0iIyIgY2xhc3M9InVpLWRpYWxvZy10aXRsZWJhci1pY29uIHVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSB1aS1jb3JuZXItYWxsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gY2xhc3M9InVpLWljb24gdWktaWNvbi1jbG9zZXRoaWNrIj48L3NwYW4+PC9hPjwvZGl2PjxkaXYgY2xhc3M9InVpLWRpYWxvZy1jb250ZW50IHVpLXdpZGdldC1jb250ZW50IiBpZD0iZGF0YXNldEZvcm06ZG93bmxvYWRNaXhlZF9jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtZGFuZ2VyIj48c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1leGNsYW1hdGlvbi1zaWduIj48L3NwYW4+IFRoZSByZXN0cmljdGVkIGZpbGUocykgc2VsZWN0ZWQgbWF5IG5vdCBiZSBkb3dubG9hZGVkIGJlY2F1c2UgeW91IGhhdmUgbm90IGJlZW4gZ3JhbnRlZCBhY2Nlc3MuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8dGFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ibG9jayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iaGVscC1ibG9jayI+Q2xpY2sgQ29udGludWUgdG8gZG93bmxvYWQgdGhlIGZpbGVzIHlvdSBoYXZlIGFjY2VzcyB0byBkb3dubG9hZC48L3A+PGJ1dHRvbiBpZD0iZGF0YXNldEZvcm06al9pZHQyMDY0IiBuYW1lPSJkYXRhc2V0Rm9ybTpqX2lkdDIwNjQiIGNsYXNzPSJ1aS1idXR0b24gdWktd2lkZ2V0IHVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLWFsbCB1aS1idXR0b24tdGV4dC1vbmx5IGJ0biBidG4tZGVmYXVsdCIgb25jbGljaz0iUHJpbWVGYWNlcy5iY24odGhpcyxldmVudCxbZnVuY3Rpb24oZXZlbnQpe1BGKCdkb3dubG9hZE1peGVkJykuaGlkZSgpfSxmdW5jdGlvbihldmVudCl7UHJpbWVGYWNlcy5hYih7czomcXVvdDtkYXRhc2V0Rm9ybTpqX2lkdDIwNjQmcXVvdDssZjomcXVvdDtkYXRhc2V0Rm9ybSZxdW90O30pO3JldHVybiBmYWxzZTt9XSk7IiB0eXBlPSJzdWJtaXQiPjxzcGFuIGNsYXNzPSJ1aS1idXR0b24tdGV4dCB1aS1jIj5Db250aW51ZTwvc3Bhbj48L2J1dHRvbj48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpqX2lkdDIwNjRfcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiQ29tbWFuZEJ1dHRvbiIsIndpZGdldF9kYXRhc2V0Rm9ybV9qX2lkdDIwNjQiLHtpZDoiZGF0YXNldEZvcm06al9pZHQyMDY0In0pO30pOzwvc2NyaXB0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1saW5rIiBvbmNsaWNrPSJQRignZG93bmxvYWRNaXhlZCcpLmhpZGUoKTsiIHR5cGU9ImJ1dHRvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FuY2VsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9kaXY+PC9kaXY+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06ZG93bmxvYWRNaXhlZF9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJEaWFsb2ciLCJkb3dubG9hZE1peGVkIix7aWQ6ImRhdGFzZXRGb3JtOmRvd25sb2FkTWl4ZWQiLG1vZGFsOnRydWV9KTt9KTs8L3NjcmlwdD48ZGl2IGlkPSJkYXRhc2V0Rm9ybTpkZWxldGVDb25maXJtYXRpb24iIGNsYXNzPSJ1aS1kaWFsb2cgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwgdWktc2hhZG93IHVpLWhpZGRlbi1jb250YWluZXIgc21hbGxQb3BVcCI+PGRpdiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci10b3AiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpkZWxldGVDb25maXJtYXRpb25fdGl0bGUiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGUiPkRlbGV0ZSBEYXRhc2V0PC9zcGFuPjxhIGhyZWY9IiMiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXItaWNvbiB1aS1kaWFsb2ctdGl0bGViYXItY2xvc2UgdWktY29ybmVyLWFsbCIgYXJpYS1sYWJlbD0iQ2xvc2UiPjxzcGFuIGNsYXNzPSJ1aS1pY29uIHVpLWljb24tY2xvc2V0aGljayI+PC9zcGFuPjwvYT48L2Rpdj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctY29udGVudCB1aS13aWRnZXQtY29udGVudCIgaWQ9ImRhdGFzZXRGb3JtOmRlbGV0ZUNvbmZpcm1hdGlvbl9jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtd2FybmluZyI+PHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24td2FybmluZy1zaWduIj48L3NwYW4+IEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBkYXRhc2V0IGFuZCBhbGwgb2YgaXRzIGZpbGVzPyBZb3UgY2Fubm90IHVuZGVsZXRlIHRoaXMgZGF0YXNldC48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ibG9jayI+PGJ1dHRvbiBpZD0iZGF0YXNldEZvcm06al9pZHQyMDY4IiBuYW1lPSJkYXRhc2V0Rm9ybTpqX2lkdDIwNjgiIGNsYXNzPSJ1aS1idXR0b24gdWktd2lkZ2V0IHVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLWFsbCB1aS1idXR0b24tdGV4dC1vbmx5IGJ0biBidG4tZGVmYXVsdCIgb25jbGljaz0iUHJpbWVGYWNlcy5iY24odGhpcyxldmVudCxbZnVuY3Rpb24oZXZlbnQpe1BGKCdkZWxldGVDb25maXJtYXRpb24nKS5oaWRlKCl9LGZ1bmN0aW9uKGV2ZW50KXtQcmltZUZhY2VzLmFiKHtzOiZxdW90O2RhdGFzZXRGb3JtOmpfaWR0MjA2OCZxdW90OyxmOiZxdW90O2RhdGFzZXRGb3JtJnF1b3Q7fSk7cmV0dXJuIGZhbHNlO31dKTsiIHR5cGU9InN1Ym1pdCI+PHNwYW4gY2xhc3M9InVpLWJ1dHRvbi10ZXh0IHVpLWMiPkNvbnRpbnVlPC9zcGFuPjwvYnV0dG9uPjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmpfaWR0MjA2OF9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJDb21tYW5kQnV0dG9uIiwid2lkZ2V0X2RhdGFzZXRGb3JtX2pfaWR0MjA2OCIse2lkOiJkYXRhc2V0Rm9ybTpqX2lkdDIwNjgifSk7fSk7PC9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWxpbmsiIG9uY2xpY2s9IlBGKCdkZWxldGVDb25maXJtYXRpb24nKS5oaWRlKCk7UEYoJ2Jsb2NrRGF0YXNldEZvcm0nKS5oaWRlKCk7IiB0eXBlPSJidXR0b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbmNlbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PjwvZGl2PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmRlbGV0ZUNvbmZpcm1hdGlvbl9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJEaWFsb2ciLCJkZWxldGVDb25maXJtYXRpb24iLHtpZDoiZGF0YXNldEZvcm06ZGVsZXRlQ29uZmlybWF0aW9uIixtb2RhbDp0cnVlfSk7fSk7PC9zY3JpcHQ+PGRpdiBpZD0iZGF0YXNldEZvcm06ZGVsZXRlVmVyc2lvbkNvbmZpcm1hdGlvbiIgY2xhc3M9InVpLWRpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1zaGFkb3cgdWktaGlkZGVuLWNvbnRhaW5lciBzbWFsbFBvcFVwIj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXIgdWktd2lkZ2V0LWhlYWRlciB1aS1oZWxwZXItY2xlYXJmaXggdWktY29ybmVyLXRvcCI+PHNwYW4gaWQ9ImRhdGFzZXRGb3JtOmRlbGV0ZVZlcnNpb25Db25maXJtYXRpb25fdGl0bGUiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGUiPkRlbGV0ZSBEcmFmdCBWZXJzaW9uPC9zcGFuPjxhIGhyZWY9IiMiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXItaWNvbiB1aS1kaWFsb2ctdGl0bGViYXItY2xvc2UgdWktY29ybmVyLWFsbCIgYXJpYS1sYWJlbD0iQ2xvc2UiPjxzcGFuIGNsYXNzPSJ1aS1pY29uIHVpLWljb24tY2xvc2V0aGljayI+PC9zcGFuPjwvYT48L2Rpdj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctY29udGVudCB1aS13aWRnZXQtY29udGVudCIgaWQ9ImRhdGFzZXRGb3JtOmRlbGV0ZVZlcnNpb25Db25maXJtYXRpb25fY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LXdhcm5pbmciPjxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXdhcm5pbmctc2lnbiI+PC9zcGFuPiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgZHJhZnQgdmVyc2lvbj8gRmlsZXMgd2lsbCBiZSByZXZlcnRlZCB0byB0aGUgbW9zdCByZWNlbnRseSBwdWJsaXNoZWQgdmVyc2lvbi4gWW91IGNhbm5vdCB1bmRlbGV0ZSB0aGlzIGRyYWZ0LjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYnV0dG9uLWJsb2NrIj48YnV0dG9uIGlkPSJkYXRhc2V0Rm9ybTpqX2lkdDIwNzEiIG5hbWU9ImRhdGFzZXRGb3JtOmpfaWR0MjA3MSIgY2xhc3M9InVpLWJ1dHRvbiB1aS13aWRnZXQgdWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItYWxsIHVpLWJ1dHRvbi10ZXh0LW9ubHkgYnRuIGJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJQcmltZUZhY2VzLmJjbih0aGlzLGV2ZW50LFtmdW5jdGlvbihldmVudCl7UEYoJ2RlbGV0ZVZlcnNpb25Db25maXJtYXRpb24nKS5oaWRlKCl9LGZ1bmN0aW9uKGV2ZW50KXtQcmltZUZhY2VzLmFiKHtzOiZxdW90O2RhdGFzZXRGb3JtOmpfaWR0MjA3MSZxdW90OyxmOiZxdW90O2RhdGFzZXRGb3JtJnF1b3Q7fSk7cmV0dXJuIGZhbHNlO31dKTsiIHR5cGU9InN1Ym1pdCI+PHNwYW4gY2xhc3M9InVpLWJ1dHRvbi10ZXh0IHVpLWMiPkNvbnRpbnVlPC9zcGFuPjwvYnV0dG9uPjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmpfaWR0MjA3MV9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJDb21tYW5kQnV0dG9uIiwid2lkZ2V0X2RhdGFzZXRGb3JtX2pfaWR0MjA3MSIse2lkOiJkYXRhc2V0Rm9ybTpqX2lkdDIwNzEifSk7fSk7PC9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWxpbmsiIG9uY2xpY2s9IlBGKCdkZWxldGVWZXJzaW9uQ29uZmlybWF0aW9uJykuaGlkZSgpO1BGKCdibG9ja0RhdGFzZXRGb3JtJykuaGlkZSgpOyIgdHlwZT0iYnV0dG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW5jZWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj48L2Rpdj48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpkZWxldGVWZXJzaW9uQ29uZmlybWF0aW9uX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIkRpYWxvZyIsImRlbGV0ZVZlcnNpb25Db25maXJtYXRpb24iLHtpZDoiZGF0YXNldEZvcm06ZGVsZXRlVmVyc2lvbkNvbmZpcm1hdGlvbiIsbW9kYWw6dHJ1ZX0pO30pOzwvc2NyaXB0PjxkaXYgaWQ9ImRhdGFzZXRGb3JtOnByaXZhdGVVcmxJZCIgY2xhc3M9InVpLWRpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1zaGFkb3cgdWktaGlkZGVuLWNvbnRhaW5lciBzbWFsbFBvcFVwIj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXIgdWktd2lkZ2V0LWhlYWRlciB1aS1oZWxwZXItY2xlYXJmaXggdWktY29ybmVyLXRvcCI+PHNwYW4gaWQ9ImRhdGFzZXRGb3JtOnByaXZhdGVVcmxJZF90aXRsZSIgY2xhc3M9InVpLWRpYWxvZy10aXRsZSI+VW5wdWJsaXNoZWQgRGF0YXNldCBQcml2YXRlIFVSTDwvc3Bhbj48YSBocmVmPSIjIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyLWljb24gdWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIHVpLWNvcm5lci1hbGwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNsb3NldGhpY2siPjwvc3Bhbj48L2E+PC9kaXY+PGRpdiBjbGFzcz0idWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiIGlkPSJkYXRhc2V0Rm9ybTpwcml2YXRlVXJsSWRfY29udGVudCI+PGRpdiBpZD0iZGF0YXNldEZvcm06cHJpdmF0ZVVybFBhbmVsQ2Fubm90Q3JlYXRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LWRhbmdlciI+PHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZXhjbGFtYXRpb24tc2lnbiI+PC9zcGFuPiBQcml2YXRlIFVSTCBjYW4gb25seSBiZSB1c2VkIHdpdGggdW5wdWJsaXNoZWQgdmVyc2lvbnMgb2YgZGF0YXNldHMuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYnV0dG9uLWJsb2NrIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWxpbmsiIG9uY2xpY2s9IlBGKCdwcml2YXRlVXJsQ29uZmlybWF0aW9uJykuaGlkZSgpO1BGKCdibG9ja0RhdGFzZXRGb3JtJykuaGlkZSgpOyIgdHlwZT0iYnV0dG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FuY2VsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpwcml2YXRlVXJsSWRfcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiRGlhbG9nIiwicHJpdmF0ZVVybENvbmZpcm1hdGlvbiIse2lkOiJkYXRhc2V0Rm9ybTpwcml2YXRlVXJsSWQiLG1vZGFsOnRydWV9KTt9KTs8L3NjcmlwdD48ZGl2IGlkPSJkYXRhc2V0Rm9ybTpkaXNhYmxlUHJpdmF0ZVVybENvbmZpcm1hdGlvbiIgY2xhc3M9InVpLWRpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1zaGFkb3cgdWktaGlkZGVuLWNvbnRhaW5lciBzbWFsbFBvcFVwIj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXIgdWktd2lkZ2V0LWhlYWRlciB1aS1oZWxwZXItY2xlYXJmaXggdWktY29ybmVyLXRvcCI+PHNwYW4gaWQ9ImRhdGFzZXRGb3JtOmRpc2FibGVQcml2YXRlVXJsQ29uZmlybWF0aW9uX3RpdGxlIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlIj5VbnB1Ymxpc2hlZCBEYXRhc2V0IFByaXZhdGUgVVJMPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9InVpLWRpYWxvZy1jb250ZW50IHVpLXdpZGdldC1jb250ZW50IiBpZD0iZGF0YXNldEZvcm06ZGlzYWJsZVByaXZhdGVVcmxDb25maXJtYXRpb25fY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LXdhcm5pbmciPjxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXdhcm5pbmctc2lnbiI+PC9zcGFuPiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGlzYWJsZSB0aGUgUHJpdmF0ZSBVUkw/IElmIHlvdSBoYXZlIHNoYXJlZCB0aGUgUHJpdmF0ZSBVUkwgd2l0aCBvdGhlcnMgdGhleSB3aWxsIG5vIGxvbmdlciBiZSBhYmxlIHRvIHVzZSBpdCB0byBhY2Nlc3MgeW91ciB1bnB1Ymxpc2hlZCBkYXRhc2V0LjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYnV0dG9uLWJsb2NrIj48YnV0dG9uIGlkPSJkYXRhc2V0Rm9ybTpqX2lkdDIwOTUiIG5hbWU9ImRhdGFzZXRGb3JtOmpfaWR0MjA5NSIgY2xhc3M9InVpLWJ1dHRvbiB1aS13aWRnZXQgdWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItYWxsIHVpLWJ1dHRvbi10ZXh0LW9ubHkgYnRuIGJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJQcmltZUZhY2VzLmJjbih0aGlzLGV2ZW50LFtmdW5jdGlvbihldmVudCl7UEYoJ2Rpc2FibGVQcml2YXRlVXJsQ29uZmlybWF0aW9uJykuaGlkZSgpO30sZnVuY3Rpb24oZXZlbnQpe1ByaW1lRmFjZXMuYWIoe3M6JnF1b3Q7ZGF0YXNldEZvcm06al9pZHQyMDk1JnF1b3Q7LGY6JnF1b3Q7ZGF0YXNldEZvcm0mcXVvdDssdTomcXVvdDtkYXRhc2V0Rm9ybTpwcml2YXRlVXJsUGFuZWwgbWVzc2FnZVBhbmVsJnF1b3Q7fSk7cmV0dXJuIGZhbHNlO31dKTsiIHR5cGU9InN1Ym1pdCI+PHNwYW4gY2xhc3M9InVpLWJ1dHRvbi10ZXh0IHVpLWMiPlllcywgRGlzYWJsZSBQcml2YXRlIFVSTDwvc3Bhbj48L2J1dHRvbj48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpqX2lkdDIwOTVfcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiQ29tbWFuZEJ1dHRvbiIsIndpZGdldF9kYXRhc2V0Rm9ybV9qX2lkdDIwOTUiLHtpZDoiZGF0YXNldEZvcm06al9pZHQyMDk1In0pO30pOzwvc2NyaXB0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1saW5rIiBvbmNsaWNrPSJQRignZGlzYWJsZVByaXZhdGVVcmxDb25maXJtYXRpb24nKS5oaWRlKCk7UEYoJ3ByaXZhdGVVcmxDb25maXJtYXRpb24nKS5zaG93KCk7IiB0eXBlPSJidXR0b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbmNlbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PjwvZGl2PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmRpc2FibGVQcml2YXRlVXJsQ29uZmlybWF0aW9uX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIkRpYWxvZyIsImRpc2FibGVQcml2YXRlVXJsQ29uZmlybWF0aW9uIix7aWQ6ImRhdGFzZXRGb3JtOmRpc2FibGVQcml2YXRlVXJsQ29uZmlybWF0aW9uIixtb2RhbDp0cnVlfSk7fSk7PC9zY3JpcHQ+PGRpdiBpZD0iZGF0YXNldEZvcm06ZGVsZXRlU2VsZWN0ZWRGaWxlQ29uZmlybWF0aW9uIiBjbGFzcz0idWktZGlhbG9nIHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIHVpLXNoYWRvdyB1aS1oaWRkZW4tY29udGFpbmVyIHNtYWxsUG9wVXAiPjxkaXYgY2xhc3M9InVpLWRpYWxvZy10aXRsZWJhciB1aS13aWRnZXQtaGVhZGVyIHVpLWhlbHBlci1jbGVhcmZpeCB1aS1jb3JuZXItdG9wIj48c3BhbiBpZD0iZGF0YXNldEZvcm06ZGVsZXRlU2VsZWN0ZWRGaWxlQ29uZmlybWF0aW9uX3RpdGxlIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlIj5EZWxldGUgRmlsZXM8L3NwYW4+PGEgaHJlZj0iIyIgY2xhc3M9InVpLWRpYWxvZy10aXRsZWJhci1pY29uIHVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSB1aS1jb3JuZXItYWxsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gY2xhc3M9InVpLWljb24gdWktaWNvbi1jbG9zZXRoaWNrIj48L3NwYW4+PC9hPjwvZGl2PjxkaXYgY2xhc3M9InVpLWRpYWxvZy1jb250ZW50IHVpLXdpZGdldC1jb250ZW50IiBpZD0iZGF0YXNldEZvcm06ZGVsZXRlU2VsZWN0ZWRGaWxlQ29uZmlybWF0aW9uX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC13YXJuaW5nIj48c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi13YXJuaW5nLXNpZ24iPjwvc3Bhbj4gVGhlIGZpbGUocykgd2lsbCBiZSBkZWxldGVkIGFmdGVyIHlvdSBjbGljayBvbiB0aGUgRGVsZXRlIGJ1dHRvbi48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC13YXJuaW5nIj48c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi13YXJuaW5nLXNpZ24iPjwvc3Bhbj4gRmlsZXMgd2lsbCBub3QgYmUgcmVtb3ZlZCBmcm9tIHByZXZpb3VzbHkgcHVibGlzaGVkIHZlcnNpb25zIG9mIHRoZSBkYXRhc2V0LjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYnV0dG9uLWJsb2NrIj48YnV0dG9uIGlkPSJkYXRhc2V0Rm9ybTpqX2lkdDIxMDEiIG5hbWU9ImRhdGFzZXRGb3JtOmpfaWR0MjEwMSIgY2xhc3M9InVpLWJ1dHRvbiB1aS13aWRnZXQgdWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItYWxsIHVpLWJ1dHRvbi10ZXh0LW9ubHkgYnRuIGJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJQcmltZUZhY2VzLmJjbih0aGlzLGV2ZW50LFtmdW5jdGlvbihldmVudCl7UEYoJ2RlbGV0ZVNlbGVjdGVkRmlsZUNvbmZpcm1hdGlvbicpLmhpZGUoKX0sZnVuY3Rpb24oZXZlbnQpe1ByaW1lRmFjZXMuYWIoe3M6JnF1b3Q7ZGF0YXNldEZvcm06al9pZHQyMTAxJnF1b3Q7LGY6JnF1b3Q7ZGF0YXNldEZvcm0mcXVvdDt9KTtyZXR1cm4gZmFsc2U7fV0pOyIgdHlwZT0ic3VibWl0Ij48c3BhbiBjbGFzcz0idWktYnV0dG9uLXRleHQgdWktYyI+RGVsZXRlPC9zcGFuPjwvYnV0dG9uPjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmpfaWR0MjEwMV9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJDb21tYW5kQnV0dG9uIiwid2lkZ2V0X2RhdGFzZXRGb3JtX2pfaWR0MjEwMSIse2lkOiJkYXRhc2V0Rm9ybTpqX2lkdDIxMDEifSk7fSk7PC9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWxpbmsiIG9uY2xpY2s9IlBGKCdkZWxldGVTZWxlY3RlZEZpbGVDb25maXJtYXRpb24nKS5oaWRlKCk7UEYoJ2Jsb2NrRGF0YXNldEZvcm0nKS5oaWRlKCk7IiB0eXBlPSJidXR0b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbmNlbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PjwvZGl2PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmRlbGV0ZVNlbGVjdGVkRmlsZUNvbmZpcm1hdGlvbl9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJEaWFsb2ciLCJkZWxldGVTZWxlY3RlZEZpbGVDb25maXJtYXRpb24iLHtpZDoiZGF0YXNldEZvcm06ZGVsZXRlU2VsZWN0ZWRGaWxlQ29uZmlybWF0aW9uIixtb2RhbDp0cnVlfSk7fSk7PC9zY3JpcHQ+PGRpdiBpZD0iZGF0YXNldEZvcm06Y29tcHV0ZUludmFsaWQiIGNsYXNzPSJ1aS1kaWFsb2cgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwgdWktc2hhZG93IHVpLWhpZGRlbi1jb250YWluZXIgc21hbGxQb3BVcCI+PGRpdiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci10b3AiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpjb21wdXRlSW52YWxpZF90aXRsZSIgY2xhc3M9InVpLWRpYWxvZy10aXRsZSI+Q29tcHV0ZTwvc3Bhbj48YSBocmVmPSIjIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyLWljb24gdWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIHVpLWNvcm5lci1hbGwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNsb3NldGhpY2siPjwvc3Bhbj48L2E+PC9kaXY+PGRpdiBjbGFzcz0idWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiIGlkPSJkYXRhc2V0Rm9ybTpjb21wdXRlSW52YWxpZF9jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtZGFuZ2VyIj48c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1leGNsYW1hdGlvbi1zaWduIj48L3NwYW4+IFRoaXMgZGF0YXNldCBjb250YWlucyByZXN0cmljdGVkIGZpbGVzIHlvdSBtYXkgbm90IGNvbXB1dGUgb24gYmVjYXVzZSB5b3UgaGF2ZSBub3QgYmVlbiBncmFudGVkIGFjY2Vzcy48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ibG9jayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiIG9uY2xpY2s9IlBGKCdjb21wdXRlSW52YWxpZCcpLmhpZGUoKTsiIHR5cGU9ImJ1dHRvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xvc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj48L2Rpdj48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpjb21wdXRlSW52YWxpZF9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJEaWFsb2ciLCJjb21wdXRlSW52YWxpZCIse2lkOiJkYXRhc2V0Rm9ybTpjb21wdXRlSW52YWxpZCIsbW9kYWw6dHJ1ZX0pO30pOzwvc2NyaXB0PjxkaXYgaWQ9ImRhdGFzZXRGb3JtOmpfaWR0MjEwNCI+PGRpdiBpZD0iZGF0YXNldEZvcm06al9pZHQyMTA1IiBjbGFzcz0idWktb3V0cHV0cGFuZWwgdWktd2lkZ2V0Ij48L2Rpdj48L2Rpdj48ZGl2IGlkPSJkYXRhc2V0Rm9ybTpkZWFjY2Vzc2lvbkNvbmZpcm1hdGlvbiIgY2xhc3M9InVpLWRpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1zaGFkb3cgdWktaGlkZGVuLWNvbnRhaW5lciI+PGRpdiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci10b3AiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpkZWFjY2Vzc2lvbkNvbmZpcm1hdGlvbl90aXRsZSIgY2xhc3M9InVpLWRpYWxvZy10aXRsZSI+RGVhY2Nlc3Npb24gRGF0YXNldDwvc3Bhbj48YSBocmVmPSIjIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyLWljb24gdWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIHVpLWNvcm5lci1hbGwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNsb3NldGhpY2siPjwvc3Bhbj48L2E+PC9kaXY+PGRpdiBjbGFzcz0idWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiIGlkPSJkYXRhc2V0Rm9ybTpkZWFjY2Vzc2lvbkNvbmZpcm1hdGlvbl9jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtd2FybmluZyI+PHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24td2FybmluZy1zaWduIj48L3NwYW4+IEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWFjY2Vzc2lvbj8gVGhlIHNlbGVjdGVkIHZlcnNpb24ocykgd2lsbCBubyBsb25nZXIgYmUgdmlld2FibGUgYnkgdGhlIHB1YmxpYy48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ibG9jayI+PGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0iZGF0YXNldEZvcm06al9pZHQyMTMyIiB2YWx1ZT0iWWVzIiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJQRignZGVhY2Nlc3Npb25Db25maXJtYXRpb24nKS5oaWRlKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBGKCdkZWFjY2Vzc2lvbkJsb2NrJykuaGlkZSgpIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1saW5rIiBvbmNsaWNrPSJQRignZGVhY2Nlc3Npb25Db25maXJtYXRpb24nKS5oaWRlKCk7IiB0eXBlPSJidXR0b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9kaXY+PC9kaXY+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06ZGVhY2Nlc3Npb25Db25maXJtYXRpb25fcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiRGlhbG9nIiwiZGVhY2Nlc3Npb25Db25maXJtYXRpb24iLHtpZDoiZGF0YXNldEZvcm06ZGVhY2Nlc3Npb25Db25maXJtYXRpb24iLG1vZGFsOnRydWV9KTt9KTs8L3NjcmlwdD48ZGl2IGlkPSJkYXRhc2V0Rm9ybTpkZWFjY2Vzc2lvbkFsbENvbmZpcm1hdGlvbiIgY2xhc3M9InVpLWRpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1zaGFkb3cgdWktaGlkZGVuLWNvbnRhaW5lciI+PGRpdiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci10b3AiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpkZWFjY2Vzc2lvbkFsbENvbmZpcm1hdGlvbl90aXRsZSIgY2xhc3M9InVpLWRpYWxvZy10aXRsZSI+RGVhY2Nlc3Npb24gRGF0YXNldDwvc3Bhbj48YSBocmVmPSIjIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyLWljb24gdWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIHVpLWNvcm5lci1hbGwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNsb3NldGhpY2siPjwvc3Bhbj48L2E+PC9kaXY+PGRpdiBjbGFzcz0idWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiIGlkPSJkYXRhc2V0Rm9ybTpkZWFjY2Vzc2lvbkFsbENvbmZpcm1hdGlvbl9jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtd2FybmluZyI+PHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24td2FybmluZy1zaWduIj48L3NwYW4+IEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWFjY2Vzc2lvbiB0aGlzIGRhdGFzZXQ/IEl0IHdpbGwgbm8gbG9uZ2VyIGJlIHZpZXdhYmxlIGJ5IHRoZSBwdWJsaWMuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tYmxvY2siPjxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9ImRhdGFzZXRGb3JtOmpfaWR0MjEzNSIgdmFsdWU9IlllcyIgY2xhc3M9ImJ0biBidG4tZGVmYXVsdCIgb25jbGljaz0iUEYoJ2RlYWNjZXNzaW9uQWxsQ29uZmlybWF0aW9uJykuaGlkZSgpO1BGKCdkZWFjY2Vzc2lvbkJsb2NrJykuaGlkZSgpO1BGKCdibG9ja0RhdGFzZXRGb3JtJykuaGlkZSgpOyIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tbGluayIgb25jbGljaz0iUEYoJ2RlYWNjZXNzaW9uQWxsQ29uZmlybWF0aW9uJykuaGlkZSgpO1BGKCdibG9ja0RhdGFzZXRGb3JtJykuaGlkZSgpOyIgdHlwZT0iYnV0dG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBObwogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PjwvZGl2PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmRlYWNjZXNzaW9uQWxsQ29uZmlybWF0aW9uX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIkRpYWxvZyIsImRlYWNjZXNzaW9uQWxsQ29uZmlybWF0aW9uIix7aWQ6ImRhdGFzZXRGb3JtOmRlYWNjZXNzaW9uQWxsQ29uZmlybWF0aW9uIixtb2RhbDp0cnVlfSk7fSk7PC9zY3JpcHQ+PGRpdiBpZD0iZGF0YXNldEZvcm06Y29tcGFyZVR3byIgY2xhc3M9InVpLWRpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1zaGFkb3cgdWktaGlkZGVuLWNvbnRhaW5lciI+PGRpdiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci10b3AiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpjb21wYXJlVHdvX3RpdGxlIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlIj5WZXJzaW9uIERpZmZlcmVuY2VzIERldGFpbHM8L3NwYW4+PGEgaHJlZj0iIyIgY2xhc3M9InVpLWRpYWxvZy10aXRsZWJhci1pY29uIHVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSB1aS1jb3JuZXItYWxsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gY2xhc3M9InVpLWljb24gdWktaWNvbi1jbG9zZXRoaWNrIj48L3NwYW4+PC9hPjwvZGl2PjxkaXYgY2xhc3M9InVpLWRpYWxvZy1jb250ZW50IHVpLXdpZGdldC1jb250ZW50IiBpZD0iZGF0YXNldEZvcm06Y29tcGFyZVR3b19jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImhlbHAtYmxvY2siPjxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWV4Y2xhbWF0aW9uLXNpZ24gdGV4dC1kYW5nZXIiPjwvc3Bhbj4gPHNwYW4gY2xhc3M9InRleHQtZGFuZ2VyIj5QbGVhc2Ugc2VsZWN0IHR3byB2ZXJzaW9ucyB0byB2aWV3IHRoZSBkaWZmZXJlbmNlcy48L3NwYW4+PC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tYmxvY2siPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJQRignY29tcGFyZVR3bycpLmhpZGUoKTtQRignYmxvY2tEYXRhc2V0Rm9ybScpLmhpZGUoKTsiIHR5cGU9ImJ1dHRvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xvc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj48L2Rpdj48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpjb21wYXJlVHdvX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIkRpYWxvZyIsImNvbXBhcmVUd28iLHtpZDoiZGF0YXNldEZvcm06Y29tcGFyZVR3byIsbW9kYWw6dHJ1ZX0pO30pOzwvc2NyaXB0PjxkaXYgaWQ9ImRhdGFzZXRGb3JtOmRldGFpbHNCbG9ja3MiIGNsYXNzPSJ1aS1kaWFsb2cgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwgdWktc2hhZG93IHVpLWhpZGRlbi1jb250YWluZXIgbGFyZ2VQb3BVcCI+PGRpdiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci10b3AiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpkZXRhaWxzQmxvY2tzX3RpdGxlIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlIj5WZXJzaW9uIERpZmZlcmVuY2VzIERldGFpbHM8L3NwYW4+PGEgaHJlZj0iIyIgY2xhc3M9InVpLWRpYWxvZy10aXRsZWJhci1pY29uIHVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSB1aS1jb3JuZXItYWxsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gY2xhc3M9InVpLWljb24gdWktaWNvbi1jbG9zZXRoaWNrIj48L3NwYW4+PC9hPjwvZGl2PjxkaXYgY2xhc3M9InVpLWRpYWxvZy1jb250ZW50IHVpLXdpZGdldC1jb250ZW50IiBpZD0iZGF0YXNldEZvcm06ZGV0YWlsc0Jsb2Nrc19jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0idmVyc2lvbi10aXRsZSIgY2xhc3M9Im1hcmdpbi1ib3R0b20taGFsZiI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InZlcnNpb24tZGV0YWlscy1ibG9jayIgY2xhc3M9IiBjbGVhcmZpeCBtYXJnaW4tYm90dG9tLWhhbGYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHVsbC1sZWZ0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDCoAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwdWxsLWxlZnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb246IDxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhc3QgVXBkYXRlZDogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InB1bGwtbGVmdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbjogPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFzdCBVcGRhdGVkOiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYnV0dG9uLWJsb2NrIG1hcmdpbi1ib3R0b20iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJQRignZGV0YWlsc0Jsb2NrcycpLmhpZGUoKTtQRignYmxvY2tEYXRhc2V0Rm9ybScpLmhpZGUoKTsiIHR5cGU9ImJ1dHRvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9uZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PjwvZGl2PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmRldGFpbHNCbG9ja3NfcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiRGlhbG9nIiwiZGV0YWlsc0Jsb2NrcyIse2lkOiJkYXRhc2V0Rm9ybTpkZXRhaWxzQmxvY2tzIixtb2RhbDp0cnVlfSk7fSk7PC9zY3JpcHQ+PGRpdiBpZD0iZGF0YXNldEZvcm06c2VsZWN0RmlsZXNGb3JSZXF1ZXN0QWNjZXNzIiBjbGFzcz0idWktZGlhbG9nIHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIHVpLXNoYWRvdyB1aS1oaWRkZW4tY29udGFpbmVyIHNtYWxsUG9wVXAiPjxkaXYgY2xhc3M9InVpLWRpYWxvZy10aXRsZWJhciB1aS13aWRnZXQtaGVhZGVyIHVpLWhlbHBlci1jbGVhcmZpeCB1aS1jb3JuZXItdG9wIj48c3BhbiBpZD0iZGF0YXNldEZvcm06c2VsZWN0RmlsZXNGb3JSZXF1ZXN0QWNjZXNzX3RpdGxlIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlIj5TZWxlY3QgRmlsZShzKTwvc3Bhbj48YSBocmVmPSIjIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyLWljb24gdWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIHVpLWNvcm5lci1hbGwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNsb3NldGhpY2siPjwvc3Bhbj48L2E+PC9kaXY+PGRpdiBjbGFzcz0idWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiIGlkPSJkYXRhc2V0Rm9ybTpzZWxlY3RGaWxlc0ZvclJlcXVlc3RBY2Nlc3NfY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LWRhbmdlciI+PHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZXhjbGFtYXRpb24tc2lnbiI+PC9zcGFuPiBQbGVhc2Ugc2VsZWN0IGEgZmlsZSBvciBmaWxlcyBmb3IgYWNjZXNzIHJlcXVlc3QuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tYmxvY2siPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJQRignc2VsZWN0RmlsZXNGb3JSZXF1ZXN0QWNjZXNzJykuaGlkZSgpO1BGKCdibG9ja0RhdGFzZXRGb3JtJykuaGlkZSgpOyIgdHlwZT0iYnV0dG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbG9zZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PjwvZGl2PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOnNlbGVjdEZpbGVzRm9yUmVxdWVzdEFjY2Vzc19zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJEaWFsb2ciLCJzZWxlY3RGaWxlc0ZvclJlcXVlc3RBY2Nlc3MiLHtpZDoiZGF0YXNldEZvcm06c2VsZWN0RmlsZXNGb3JSZXF1ZXN0QWNjZXNzIixtb2RhbDp0cnVlfSk7fSk7PC9zY3JpcHQ+PGRpdiBpZD0iZGF0YXNldEZvcm06c2VsZWN0RW1iYXJnb2VkRmlsZXNGb3JSZXF1ZXN0QWNjZXNzIiBjbGFzcz0idWktZGlhbG9nIHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIHVpLXNoYWRvdyB1aS1oaWRkZW4tY29udGFpbmVyIHNtYWxsUG9wVXAiPjxkaXYgY2xhc3M9InVpLWRpYWxvZy10aXRsZWJhciB1aS13aWRnZXQtaGVhZGVyIHVpLWhlbHBlci1jbGVhcmZpeCB1aS1jb3JuZXItdG9wIj48c3BhbiBpZD0iZGF0YXNldEZvcm06c2VsZWN0RW1iYXJnb2VkRmlsZXNGb3JSZXF1ZXN0QWNjZXNzX3RpdGxlIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlIj5TZWxlY3QgRmlsZShzKTwvc3Bhbj48YSBocmVmPSIjIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyLWljb24gdWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIHVpLWNvcm5lci1hbGwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNsb3NldGhpY2siPjwvc3Bhbj48L2E+PC9kaXY+PGRpdiBjbGFzcz0idWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiIGlkPSJkYXRhc2V0Rm9ybTpzZWxlY3RFbWJhcmdvZWRGaWxlc0ZvclJlcXVlc3RBY2Nlc3NfY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LWRhbmdlciI+PHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZXhjbGFtYXRpb24tc2lnbiI+PC9zcGFuPiBFbWJhcmdvZWQgZmlsZXMgY2Fubm90IGJlIGFjY2Vzc2VkLiBQbGVhc2Ugc2VsZWN0IGFuIHVuZW1iYXJnb2VkIGZpbGUgb3IgZmlsZXMgZm9yIHlvdXIgYWNjZXNzIHJlcXVlc3QuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tYmxvY2siPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJQRignc2VsZWN0RW1iYXJnb2VkRmlsZXNGb3JSZXF1ZXN0QWNjZXNzJykuaGlkZSgpO1BGKCdibG9ja0RhdGFzZXRGb3JtJykuaGlkZSgpOyIgdHlwZT0iYnV0dG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbG9zZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PjwvZGl2PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOnNlbGVjdEVtYmFyZ29lZEZpbGVzRm9yUmVxdWVzdEFjY2Vzc19zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJEaWFsb2ciLCJzZWxlY3RFbWJhcmdvZWRGaWxlc0ZvclJlcXVlc3RBY2Nlc3MiLHtpZDoiZGF0YXNldEZvcm06c2VsZWN0RW1iYXJnb2VkRmlsZXNGb3JSZXF1ZXN0QWNjZXNzIixtb2RhbDp0cnVlfSk7fSk7PC9zY3JpcHQ+PGRpdiBpZD0iZGF0YXNldEZvcm06ZmlsZVRhZ3NQb3B1cCIgY2xhc3M9InVpLWRpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1zaGFkb3cgdWktaGlkZGVuLWNvbnRhaW5lciBzbWFsbFBvcFVwIj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXIgdWktd2lkZ2V0LWhlYWRlciB1aS1oZWxwZXItY2xlYXJmaXggdWktY29ybmVyLXRvcCI+PHNwYW4gaWQ9ImRhdGFzZXRGb3JtOmZpbGVUYWdzUG9wdXBfdGl0bGUiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGUiPkVkaXQgVGFnczwvc3Bhbj48YSBocmVmPSIjIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyLWljb24gdWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIHVpLWNvcm5lci1hbGwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNsb3NldGhpY2siPjwvc3Bhbj48L2E+PC9kaXY+PGRpdiBjbGFzcz0idWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiIGlkPSJkYXRhc2V0Rm9ybTpmaWxlVGFnc1BvcHVwX2NvbnRlbnQiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpqX2lkdDIyMTgiPjwvc3Bhbj48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuZm9jdXMoJ2RhdGFzZXRGb3JtOmZpbGVUYWdzTWVudURTJyk7fSk7PC9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJoZWxwLWJsb2NrIj5TZWxlY3QgZXhpc3RpbmcgZmlsZSB0YWdzIG9yIGNyZWF0ZSBuZXcgdGFncyB0byBkZXNjcmliZSB5b3VyIGZpbGVzLiBFYWNoIGZpbGUgY2FuIGhhdmUgbW9yZSB0aGFuIG9uZSB0YWcuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tYmxvY2siPjxidXR0b24gaWQ9ImRhdGFzZXRGb3JtOmZpbGVUYWdzUG9wdXBTYXZlQnV0dG9uIiBuYW1lPSJkYXRhc2V0Rm9ybTpmaWxlVGFnc1BvcHVwU2F2ZUJ1dHRvbiIgY2xhc3M9InVpLWJ1dHRvbiB1aS13aWRnZXQgdWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItYWxsIHVpLWJ1dHRvbi10ZXh0LW9ubHkgYnRuIGJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJQcmltZUZhY2VzLmFiKHtzOiZxdW90O2RhdGFzZXRGb3JtOmZpbGVUYWdzUG9wdXBTYXZlQnV0dG9uJnF1b3Q7LGY6JnF1b3Q7ZGF0YXNldEZvcm0mcXVvdDssdTomcXVvdDtkYXRhc2V0Rm9ybTp0YWJWaWV3OmZpbGVzVGFibGUgZGF0YXNldEZvcm0mcXVvdDssb25jbzpmdW5jdGlvbih4aHIsc3RhdHVzLGFyZ3MsZGF0YSl7UEYoJ2ZpbGVUYWdzUG9wdXAnKS5oaWRlKCk7fX0pO3JldHVybiBmYWxzZTsiIHR5cGU9InN1Ym1pdCI+PHNwYW4gY2xhc3M9InVpLWJ1dHRvbi10ZXh0IHVpLWMiPlNhdmUgQ2hhbmdlczwvc3Bhbj48L2J1dHRvbj48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpmaWxlVGFnc1BvcHVwU2F2ZUJ1dHRvbl9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJDb21tYW5kQnV0dG9uIiwid2lkZ2V0X2RhdGFzZXRGb3JtX2ZpbGVUYWdzUG9wdXBTYXZlQnV0dG9uIix7aWQ6ImRhdGFzZXRGb3JtOmZpbGVUYWdzUG9wdXBTYXZlQnV0dG9uIn0pO30pOzwvc2NyaXB0PjxidXR0b24gaWQ9ImRhdGFzZXRGb3JtOmZpbGVUYWdzUG9wdXBDYW5jZWxCdXR0b24iIG5hbWU9ImRhdGFzZXRGb3JtOmZpbGVUYWdzUG9wdXBDYW5jZWxCdXR0b24iIGNsYXNzPSJ1aS1idXR0b24gdWktd2lkZ2V0IHVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLWFsbCB1aS1idXR0b24tdGV4dC1vbmx5IGJ0biBidG4tbGluayIgb25jbGljaz0iUHJpbWVGYWNlcy5iY24odGhpcyxldmVudCxbZnVuY3Rpb24oZXZlbnQpe1BGKCdmaWxlVGFnc1BvcHVwJykuaGlkZSgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQRignYmxvY2tEYXRhc2V0Rm9ybScpLmhpZGUoKTt9LGZ1bmN0aW9uKGV2ZW50KXtQcmltZUZhY2VzLmFiKHtzOiZxdW90O2RhdGFzZXRGb3JtOmZpbGVUYWdzUG9wdXBDYW5jZWxCdXR0b24mcXVvdDssZjomcXVvdDtkYXRhc2V0Rm9ybSZxdW90O30pO3JldHVybiBmYWxzZTt9XSk7IiB0eXBlPSJzdWJtaXQiPjxzcGFuIGNsYXNzPSJ1aS1idXR0b24tdGV4dCB1aS1jIj5DYW5jZWw8L3NwYW4+PC9idXR0b24+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06ZmlsZVRhZ3NQb3B1cENhbmNlbEJ1dHRvbl9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJDb21tYW5kQnV0dG9uIiwid2lkZ2V0X2RhdGFzZXRGb3JtX2ZpbGVUYWdzUG9wdXBDYW5jZWxCdXR0b24iLHtpZDoiZGF0YXNldEZvcm06ZmlsZVRhZ3NQb3B1cENhbmNlbEJ1dHRvbiJ9KTt9KTs8L3NjcmlwdD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9kaXY+PC9kaXY+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06ZmlsZVRhZ3NQb3B1cF9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJEaWFsb2ciLCJmaWxlVGFnc1BvcHVwIix7aWQ6ImRhdGFzZXRGb3JtOmZpbGVUYWdzUG9wdXAiLG1vZGFsOnRydWV9KTt9KTs8L3NjcmlwdD48ZGl2IGlkPSJkYXRhc2V0Rm9ybTphY2Nlc3NTaWduVXBMb2dJbiIgY2xhc3M9InVpLWRpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1zaGFkb3cgdWktaGlkZGVuLWNvbnRhaW5lciI+PGRpdiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci10b3AiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTphY2Nlc3NTaWduVXBMb2dJbl90aXRsZSIgY2xhc3M9InVpLWRpYWxvZy10aXRsZSI+UmVxdWVzdCBBY2Nlc3M8L3NwYW4+PGEgaHJlZj0iIyIgY2xhc3M9InVpLWRpYWxvZy10aXRsZWJhci1pY29uIHVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSB1aS1jb3JuZXItYWxsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gY2xhc3M9InVpLWljb24gdWktaWNvbi1jbG9zZXRoaWNrIj48L3NwYW4+PC9hPjwvZGl2PjxkaXYgY2xhc3M9InVpLWRpYWxvZy1jb250ZW50IHVpLXdpZGdldC1jb250ZW50IiBpZD0iZGF0YXNldEZvcm06YWNjZXNzU2lnblVwTG9nSW5fY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJoZWxwLWJsb2NrIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXdhcm5pbmctc2lnbiB0ZXh0LWRhbmdlciI+PC9zcGFuPsKgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC1kYW5nZXIiPllvdSBuZWVkIHRvIDxhIGhyZWY9Ii9kYXRhdmVyc2V1c2VyLnhodG1sP2VkaXRNb2RlPUNSRUFURSZyZWRpcmVjdFBhZ2U9JTJGZGF0YXNldC54aHRtbCUzRnBlcnNpc3RlbnRJZCUzRGRvaSUzQTEwLjc5MTAlMkZEVk4lMkZOSjdYU08iIHRhcmdldD0iX3NlbGYiIHRpdGxlPSJTaWduIFVwIGZvciBhIERhdGF2ZXJzZSBBY2NvdW50Ij5TaWduIFVwPC9hPiBvciA8YSBocmVmPSIvbG9naW5wYWdlLnhodG1sP3JlZGlyZWN0UGFnZT0lMkZkYXRhc2V0LnhodG1sJTNGcGVyc2lzdGVudElkJTNEZG9pJTNBMTAuNzkxMCUyRkRWTiUyRk5KN1hTTyIgdGFyZ2V0PSJfc2VsZiIgdGl0bGU9IkxvZyBpbnRvIHlvdXIgRGF0YXZlcnNlIEFjY291bnQiPkxvZyBJbjwvYT4gdG8gcmVxdWVzdCBhY2Nlc3MuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ibG9jayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiIG9uY2xpY2s9IlBGKCdhY2Nlc3NTaWduVXBMb2dJbl9wb3B1cCcpLmhpZGUoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEYoJ2Jsb2NrRGF0YXNldEZvcm0nKS5oaWRlKCk7IiB0eXBlPSJidXR0b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsb3NlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9kaXY+PC9kaXY+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06YWNjZXNzU2lnblVwTG9nSW5fcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiRGlhbG9nIiwiYWNjZXNzU2lnblVwTG9nSW5fcG9wdXAiLHtpZDoiZGF0YXNldEZvcm06YWNjZXNzU2lnblVwTG9nSW4iLG1vZGFsOnRydWV9KTt9KTs8L3NjcmlwdD48ZGl2IGlkPSJkYXRhc2V0Rm9ybTpkb3dubG9hZFBvcHVwIiBjbGFzcz0idWktZGlhbG9nIHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIHVpLXNoYWRvdyB1aS1oaWRkZW4tY29udGFpbmVyIGxhcmdlUG9wVXAiPjxkaXYgY2xhc3M9InVpLWRpYWxvZy10aXRsZWJhciB1aS13aWRnZXQtaGVhZGVyIHVpLWhlbHBlci1jbGVhcmZpeCB1aS1jb3JuZXItdG9wIj48c3BhbiBpZD0iZGF0YXNldEZvcm06ZG93bmxvYWRQb3B1cF90aXRsZSIgY2xhc3M9InVpLWRpYWxvZy10aXRsZSI+RGF0YXNldCBUZXJtczwvc3Bhbj48YSBocmVmPSIjIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyLWljb24gdWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIHVpLWNvcm5lci1hbGwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNsb3NldGhpY2siPjwvc3Bhbj48L2E+PC9kaXY+PGRpdiBjbGFzcz0idWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiIGlkPSJkYXRhc2V0Rm9ybTpkb3dubG9hZFBvcHVwX2NvbnRlbnQiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpqX2lkdDIyNTAiPjwvc3Bhbj48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuZm9jdXMobnVsbCwgJ2RhdGFzZXRGb3JtOmd1ZXN0Ym9va1VJRnJhZ21lbnQnKTt9KTs8L3NjcmlwdD4KICAgICAgICA8cCBjbGFzcz0iaGVscC1ibG9jayI+CiAgICAgICAgICAgIFRoaXMgZGF0YXNldCBpcyBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgZm9sbG93aW5nIHRlcm1zLiBQbGVhc2UgY29uZmlybSBhbmQvb3IgY29tcGxldGUgdGhlIGluZm9ybWF0aW9uIG5lZWRlZCBiZWxvdyBpbiBvcmRlciB0byBjb250aW51ZS4KICAgICAgICA8L3A+PGRpdiBpZD0iZGF0YXNldEZvcm06Z3Vlc3Rib29rTWVzc2FnZXMiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIgbWVzc2FnZVBhbmVsIj4KICAgICAgICAgICAgPC9kaXY+PC9kaXY+CiAgICAgICAgCiAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ob3Jpem9udGFsIHRlcm1zIj4KICAgICAgICAKICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj48bGFiZWwgZm9yPSJkYXRhc2V0Rm9ybTpmZExpY2Vuc2UiIGNsYXNzPSJjb2wtc20tMyBjb250cm9sLWxhYmVsIj4KICAgICAgICAgICAgICAgIExpY2Vuc2UvRGF0YSBVc2UgQWdyZWVtZW50IDwvbGFiZWw+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS05Ij4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJoZWxwLWJsb2NrIj5PdXIgPGEgaHJlZj0iaHR0cHM6Ly9kYXRhdmVyc2Uub3JnL2Jlc3QtcHJhY3RpY2VzL2RhdGF2ZXJzZS1jb21tdW5pdHktbm9ybXMiIHRpdGxlPSJEYXRhdmVyc2UgQ29tbXVuaXR5IE5vcm1zIC0gRGF0YXZlcnNlLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPkNvbW11bml0eSBOb3JtczwvYT4gYXMgd2VsbCBhcyBnb29kIHNjaWVudGlmaWMgcHJhY3RpY2VzIGV4cGVjdCB0aGF0IHByb3BlciBjcmVkaXQgaXMgZ2l2ZW4gdmlhIGNpdGF0aW9uLiBQbGVhc2UgdXNlIHRoZSBkYXRhIGNpdGF0aW9uIHNob3duIG9uIHRoZSBkYXRhc2V0IHBhZ2UuCiAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9saWNlbnNlYnV0dG9ucy5uZXQvcC96ZXJvLzEuMC84OHgzMS5wbmciIHRpdGxlPSJDcmVhdGl2ZSBDb21tb25zIENDMCAxLjAgVW5pdmVyc2FsIFB1YmxpYyBEb21haW4gRGVkaWNhdGlvbi4iIHN0eWxlPSJkaXNwbGF5OiBub25lIiBvbmxvYWQ9InRoaXMuc3R5bGUuZGlzcGxheT0naW5saW5lJyIgLz4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAiIHRpdGxlPSJDcmVhdGl2ZSBDb21tb25zIENDMCAxLjAgVW5pdmVyc2FsIFB1YmxpYyBEb21haW4gRGVkaWNhdGlvbi4iIHRhcmdldD0iX2JsYW5rIj5DQzAgMS4wCiAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tYmxvY2siPjxidXR0b24gaWQ9ImRhdGFzZXRGb3JtOmpfaWR0MjM1MiIgbmFtZT0iZGF0YXNldEZvcm06al9pZHQyMzUyIiBjbGFzcz0idWktYnV0dG9uIHVpLXdpZGdldCB1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwgdWktYnV0dG9uLXRleHQtb25seSBidG4gYnRuLWRlZmF1bHQiIG9uY2xpY2s9IlByaW1lRmFjZXMuYWIoe3M6JnF1b3Q7ZGF0YXNldEZvcm06al9pZHQyMzUyJnF1b3Q7LGY6JnF1b3Q7ZGF0YXNldEZvcm0mcXVvdDssdTomcXVvdDtkYXRhc2V0Rm9ybTpndWVzdGJvb2tVSUZyYWdtZW50JnF1b3Q7LHBhOlt7bmFtZTomcXVvdDtET19HQl9WQUxJREFUSU9OX2Rvd25sb2FkRGF0YXNldCZxdW90Oyx2YWx1ZTomcXVvdDt0cnVlJnF1b3Q7fV19KTtyZXR1cm4gZmFsc2U7IiB0eXBlPSJzdWJtaXQiPjxzcGFuIGNsYXNzPSJ1aS1idXR0b24tdGV4dCB1aS1jIj5BY2NlcHQ8L3NwYW4+PC9idXR0b24+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06al9pZHQyMzUyX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIkNvbW1hbmRCdXR0b24iLCJ3aWRnZXRfZGF0YXNldEZvcm1fal9pZHQyMzUyIix7aWQ6ImRhdGFzZXRGb3JtOmpfaWR0MjM1MiJ9KTt9KTs8L3NjcmlwdD48YnV0dG9uIG5hbWU9ImRhdGFzZXRGb3JtOmpfaWR0MjM2MCIgdmFsdWU9IiIgb25jbGljaz0iUEYoJ2Rvd25sb2FkUG9wdXAnKS5oaWRlKCk7UEYoJ2Jsb2NrRGF0YXNldEZvcm0nKS5oaWRlKCk7IiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWxpbmsiPgogICAgICAgICAgICAgICAgQ2FuY2VsCiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgIDwvZGl2PjwvZGl2PjwvZGl2PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmRvd25sb2FkUG9wdXBfcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiRGlhbG9nIiwiZG93bmxvYWRQb3B1cCIse2lkOiJkYXRhc2V0Rm9ybTpkb3dubG9hZFBvcHVwIixtb2RhbDp0cnVlfSk7fSk7PC9zY3JpcHQ+PGRpdiBpZD0iZGF0YXNldEZvcm06cHJldmlld0d1ZXN0Ym9vayIgY2xhc3M9InVpLWRpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1zaGFkb3cgdWktaGlkZGVuLWNvbnRhaW5lciBsYXJnZVBvcFVwIj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXIgdWktd2lkZ2V0LWhlYWRlciB1aS1oZWxwZXItY2xlYXJmaXggdWktY29ybmVyLXRvcCI+PHNwYW4gaWQ9ImRhdGFzZXRGb3JtOnByZXZpZXdHdWVzdGJvb2tfdGl0bGUiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGUiPlByZXZpZXcgR3Vlc3Rib29rPC9zcGFuPjxhIGhyZWY9IiMiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXItaWNvbiB1aS1kaWFsb2ctdGl0bGViYXItY2xvc2UgdWktY29ybmVyLWFsbCIgYXJpYS1sYWJlbD0iQ2xvc2UiPjxzcGFuIGNsYXNzPSJ1aS1pY29uIHVpLWljb24tY2xvc2V0aGljayI+PC9zcGFuPjwvYT48L2Rpdj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctY29udGVudCB1aS13aWRnZXQtY29udGVudCIgaWQ9ImRhdGFzZXRGb3JtOnByZXZpZXdHdWVzdGJvb2tfY29udGVudCI+CiAgICAKICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWhvcml6b250YWwiPgogICAgICAgICAgICA8cCBjbGFzcz0iaGVscC1ibG9jayI+CiAgICAgICAgICAgICAgICBVcG9uIGRvd25sb2FkaW5nIGZpbGVzIHRoZSBndWVzdGJvb2sgYXNrcyBmb3IgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4KICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iY29sLXNtLTMgY29udHJvbC1sYWJlbCI+CiAgICAgICAgICAgICAgICAgICAgR3Vlc3Rib29rIE5hbWUKICAgICAgICAgICAgICAgIDwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tOCI+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImZvcm0tY29udHJvbC1zdGF0aWMiPgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgogICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJjb2wtc20tMyBjb250cm9sLWxhYmVsIj4KICAgICAgICAgICAgICAgICAgICBDb2xsZWN0ZWQgRGF0YQogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXF1ZXN0aW9uLXNpZ24gdG9vbHRpcC1pY29uIiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9ImF1dG8gcmlnaHQiIGRhdGEtb3JpZ2luYWwtdGl0bGU9IlVzZXIgZGF0YSBjb2xsZWN0ZWQgYnkgdGhlIGd1ZXN0Ym9vay4iPjwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tOCI+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImZvcm0tY29udHJvbC1zdGF0aWMiPkFjY291bnQgSW5mb3JtYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tYmxvY2siPgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiIG9uY2xpY2s9IlBGKCd2aWV3R3Vlc3Rib29rJykuaGlkZSgpIiB0eXBlPSJidXR0b24iPgogICAgICAgICAgICAgICAgQ2xvc2UKICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgPC9kaXY+PC9kaXY+PC9kaXY+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06cHJldmlld0d1ZXN0Ym9va19zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJEaWFsb2ciLCJ2aWV3R3Vlc3Rib29rIix7aWQ6ImRhdGFzZXRGb3JtOnByZXZpZXdHdWVzdGJvb2siLG1vZGFsOnRydWV9KTt9KTs8L3NjcmlwdD48ZGl2IGlkPSJkYXRhc2V0Rm9ybTpkb3dubG9hZFBhY2thZ2VQb3B1cCIgY2xhc3M9InVpLWRpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1zaGFkb3cgdWktaGlkZGVuLWNvbnRhaW5lciBzbWFsbFBvcFVwIj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXIgdWktd2lkZ2V0LWhlYWRlciB1aS1oZWxwZXItY2xlYXJmaXggdWktY29ybmVyLXRvcCI+PHNwYW4gaWQ9ImRhdGFzZXRGb3JtOmRvd25sb2FkUGFja2FnZVBvcHVwX3RpdGxlIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlIj5QYWNrYWdlIEZpbGUgRG93bmxvYWQ8L3NwYW4+PGEgaHJlZj0iIyIgY2xhc3M9InVpLWRpYWxvZy10aXRsZWJhci1pY29uIHVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSB1aS1jb3JuZXItYWxsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gY2xhc3M9InVpLWljb24gdWktaWNvbi1jbG9zZXRoaWNrIj48L3NwYW4+PC9hPjwvZGl2PjxkaXYgY2xhc3M9InVpLWRpYWxvZy1jb250ZW50IHVpLXdpZGdldC1jb250ZW50IiBpZD0iZGF0YXNldEZvcm06ZG93bmxvYWRQYWNrYWdlUG9wdXBfY29udGVudCI+PGRpdiBpZD0iZGF0YXNldEZvcm06cGFja2FnZVBvcHVwRG93bmxvYWRJbmZvIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tMTIiPgogICAgICAgICAgICA8cCBjbGFzcz0iaGVscC1ibG9jayBuby1tYXJnaW4tdG9wIj5Vc2UgdGhlIERvd25sb2FkIFVSTCBpbiBhIFdnZXQgY29tbWFuZCBvciBhIGRvd25sb2FkIG1hbmFnZXIgdG8gZG93bmxvYWQgdGhpcyBwYWNrYWdlIGZpbGUuIERvd25sb2FkIHZpYSB3ZWIgYnJvd3NlciBpcyBub3QgcmVjb21tZW5kZWQuIDxhIGhyZWY9Imh0dHBzOi8vZ3VpZGVzLmRhdGF2ZXJzZS5vcmcvZW4vNS4xMi91c2VyL2ZpbmQtdXNlLWRhdGEuaHRtbCNkb3dubG9hZGluZy1hLWRhdGF2ZXJzZS1wYWNrYWdlLXZpYS11cmwiIHRpdGxlPSJVc2VyIEd1aWRlIC0gRG93bmxvYWRpbmcgYSBEYXRhdmVyc2UgUGFja2FnZSB2aWEgVVJMIiB0YXJnZXQ9Il9ibGFuayI+VXNlciBHdWlkZSAtIERvd25sb2FkaW5nIGEgRGF0YXZlcnNlIFBhY2thZ2UgdmlhIFVSTDwvYT4KICAgICAgICAgICAgPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS0xMiBtYXJnaW4tYm90dG9tIj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tMTIiPgogICAgICAgICAgICA8bGFiZWw+RG93bmxvYWQgVVJMPC9sYWJlbD4gCiAgICAgICAgICAgIDxwPjxjb2RlPmh0dHBzOi8vZGF0YXZlcnNlLmhhcnZhcmQuZWR1L2FwaS9hY2Nlc3MvZGF0YWZpbGUvPC9jb2RlPjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tMTIgYnV0dG9uLWJsb2NrIG1hcmdpbi10b3AiPjxidXR0b24gaWQ9ImRhdGFzZXRGb3JtOmRvd25sb2FkUGFja2FnZVBvcHVwQ2FuY2VsQnV0dG9uIiBuYW1lPSJkYXRhc2V0Rm9ybTpkb3dubG9hZFBhY2thZ2VQb3B1cENhbmNlbEJ1dHRvbiIgY2xhc3M9InVpLWJ1dHRvbiB1aS13aWRnZXQgdWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItYWxsIHVpLWJ1dHRvbi10ZXh0LW9ubHkgYnRuIGJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJQcmltZUZhY2VzLmJjbih0aGlzLGV2ZW50LFtmdW5jdGlvbihldmVudCl7UEYoJ2Rvd25sb2FkUGFja2FnZVBvcHVwJykuaGlkZSgpO30sZnVuY3Rpb24oZXZlbnQpe1ByaW1lRmFjZXMuYWIoe3M6JnF1b3Q7ZGF0YXNldEZvcm06ZG93bmxvYWRQYWNrYWdlUG9wdXBDYW5jZWxCdXR0b24mcXVvdDssZjomcXVvdDtkYXRhc2V0Rm9ybSZxdW90Oyx1OiZxdW90O2RhdGFzZXRGb3JtOmRvd25sb2FkUGFja2FnZVBvcHVwJnF1b3Q7fSk7cmV0dXJuIGZhbHNlO31dKTsiIHR5cGU9InN1Ym1pdCI+PHNwYW4gY2xhc3M9InVpLWJ1dHRvbi10ZXh0IHVpLWMiPkNsb3NlPC9zcGFuPjwvYnV0dG9uPjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmRvd25sb2FkUGFja2FnZVBvcHVwQ2FuY2VsQnV0dG9uX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIkNvbW1hbmRCdXR0b24iLCJ3aWRnZXRfZGF0YXNldEZvcm1fZG93bmxvYWRQYWNrYWdlUG9wdXBDYW5jZWxCdXR0b24iLHtpZDoiZGF0YXNldEZvcm06ZG93bmxvYWRQYWNrYWdlUG9wdXBDYW5jZWxCdXR0b24ifSk7fSk7PC9zY3JpcHQ+CiAgICAgICAgPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06ZG93bmxvYWRQYWNrYWdlUG9wdXBfcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiRGlhbG9nIiwiZG93bmxvYWRQYWNrYWdlUG9wdXAiLHtpZDoiZGF0YXNldEZvcm06ZG93bmxvYWRQYWNrYWdlUG9wdXAiLG1vZGFsOnRydWV9KTt9KTs8L3NjcmlwdD48ZGl2IGlkPSJkYXRhc2V0Rm9ybTpyZXF1ZXN0QWNjZXNzUG9wdXAiIGNsYXNzPSJ1aS1kaWFsb2cgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwgdWktc2hhZG93IHVpLWhpZGRlbi1jb250YWluZXIgbGFyZ2VQb3BVcCI+PGRpdiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci10b3AiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpyZXF1ZXN0QWNjZXNzUG9wdXBfdGl0bGUiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGUiPlJlcXVlc3QgQWNjZXNzPC9zcGFuPjxhIGhyZWY9IiMiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXItaWNvbiB1aS1kaWFsb2ctdGl0bGViYXItY2xvc2UgdWktY29ybmVyLWFsbCIgYXJpYS1sYWJlbD0iQ2xvc2UiPjxzcGFuIGNsYXNzPSJ1aS1pY29uIHVpLWljb24tY2xvc2V0aGljayI+PC9zcGFuPjwvYT48L2Rpdj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctY29udGVudCB1aS13aWRnZXQtY29udGVudCIgaWQ9ImRhdGFzZXRGb3JtOnJlcXVlc3RBY2Nlc3NQb3B1cF9jb250ZW50Ij4KICAgICAgICA8cCBjbGFzcz0iaGVscC1ibG9jayI+CiAgICAgICAgICAgIFBsZWFzZSBjb25maXJtIGFuZC9vciBjb21wbGV0ZSB0aGUgaW5mb3JtYXRpb24gbmVlZGVkIGJlbG93IGluIG9yZGVyIHRvIHJlcXVlc3QgYWNjZXNzIHRvIGZpbGVzIGluIHRoaXMgZGF0YXNldC4KICAgICAgICA8L3A+CiAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ob3Jpem9udGFsIj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tYmxvY2siPjxidXR0b24gaWQ9ImRhdGFzZXRGb3JtOmpfaWR0MjQ2NyIgbmFtZT0iZGF0YXNldEZvcm06al9pZHQyNDY3IiBjbGFzcz0idWktYnV0dG9uIHVpLXdpZGdldCB1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwgdWktYnV0dG9uLXRleHQtb25seSBidG4gYnRuLWRlZmF1bHQiIG9uY2xpY2s9IlByaW1lRmFjZXMuYWIoe3M6JnF1b3Q7ZGF0YXNldEZvcm06al9pZHQyNDY3JnF1b3Q7LGY6JnF1b3Q7ZGF0YXNldEZvcm0mcXVvdDssdTomcXVvdDtAKFtpZCQ9cmVxdWVzdEFjY2Vzc0NvbnNvbGlkYXRlZF0pIEAoW2lkJD1yZXF1ZXN0UGFuZWxdKSBAKFtpZCQ9bWVzc2FnZVBhbmVsXSkgQChbaWQkPWZpbGVzVGFibGVdKSZxdW90OyxvbmNvOmZ1bmN0aW9uKHhocixzdGF0dXMsYXJncyxkYXRhKXtQRigncmVxdWVzdEFjY2Vzc1BvcHVwJykuaGlkZSgpOzt9fSk7cmV0dXJuIGZhbHNlOyIgdHlwZT0ic3VibWl0Ij48c3BhbiBjbGFzcz0idWktYnV0dG9uLXRleHQgdWktYyI+QWNjZXB0PC9zcGFuPjwvYnV0dG9uPjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmpfaWR0MjQ2N19zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJDb21tYW5kQnV0dG9uIiwid2lkZ2V0X2RhdGFzZXRGb3JtX2pfaWR0MjQ2NyIse2lkOiJkYXRhc2V0Rm9ybTpqX2lkdDI0NjcifSk7fSk7PC9zY3JpcHQ+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tbGluayIgb25jbGljaz0iUEYoJ3JlcXVlc3RBY2Nlc3NQb3B1cCcpLmhpZGUoKTtQRignYmxvY2tEYXRhc2V0Rm9ybScpLmhpZGUoKTsiIHR5cGU9ImJ1dHRvbiI+CiAgICAgICAgICAgICAgICBDYW5jZWwKICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgPC9kaXY+PC9kaXY+PC9kaXY+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06cmVxdWVzdEFjY2Vzc1BvcHVwX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIkRpYWxvZyIsInJlcXVlc3RBY2Nlc3NQb3B1cCIse2lkOiJkYXRhc2V0Rm9ybTpyZXF1ZXN0QWNjZXNzUG9wdXAiLG1vZGFsOnRydWV9KTt9KTs8L3NjcmlwdD48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpqX2lkdDI0ODUiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+bGlua0RhdGFzZXRDb21tYW5kID0gZnVuY3Rpb24oKSB7cmV0dXJuIFByaW1lRmFjZXMuYWIoe3M6ImRhdGFzZXRGb3JtOmpfaWR0MjQ4NSIsZjoiZGF0YXNldEZvcm0iLHU6Im1lc3NhZ2VQYW5lbCBAKFtpZCQ9TWVzc2FnZXNdKSIsb25jbzpmdW5jdGlvbih4aHIsc3RhdHVzLGFyZ3MsZGF0YSl7UEYoJ2xpbmtEYXRhc2V0Rm9ybScpLmhpZGUoKTs7fSxwYTphcmd1bWVudHNbMF19KTt9PC9zY3JpcHQ+PGRpdiBpZD0iZGF0YXNldEZvcm06Y29tcHV0ZUJhdGNoTGlzdFBvcHVwIiBjbGFzcz0idWktZGlhbG9nIHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIHVpLXNoYWRvdyB1aS1oaWRkZW4tY29udGFpbmVyIj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXIgdWktd2lkZ2V0LWhlYWRlciB1aS1oZWxwZXItY2xlYXJmaXggdWktY29ybmVyLXRvcCI+PHNwYW4gaWQ9ImRhdGFzZXRGb3JtOmNvbXB1dGVCYXRjaExpc3RQb3B1cF90aXRsZSIgY2xhc3M9InVpLWRpYWxvZy10aXRsZSI+Q29tcHV0ZSBCYXRjaDwvc3Bhbj48YSBocmVmPSIjIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyLWljb24gdWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIHVpLWNvcm5lci1hbGwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNsb3NldGhpY2siPjwvc3Bhbj48L2E+PC9kaXY+PGRpdiBjbGFzcz0idWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiIGlkPSJkYXRhc2V0Rm9ybTpjb21wdXRlQmF0Y2hMaXN0UG9wdXBfY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtcmlnaHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXJlbW92ZSI+PC9zcGFuPkNsZWFyIEJhdGNoPGJ1dHRvbiBpZD0iZGF0YXNldEZvcm06al9pZHQyNDg3IiBuYW1lPSJkYXRhc2V0Rm9ybTpqX2lkdDI0ODciIGNsYXNzPSIgYnRuIGJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJQcmltZUZhY2VzLmFiKHtzOiZxdW90O2RhdGFzZXRGb3JtOmpfaWR0MjQ4NyZxdW90OyxmOiZxdW90O2RhdGFzZXRGb3JtJnF1b3Q7LHU6JnF1b3Q7ZGF0YXNldEZvcm0gbWVzc2FnZVBhbmVsJnF1b3Q7fSk7cmV0dXJuIGZhbHNlOyIgdHlwZT0ic3VibWl0Ij48c3BhbiBjbGFzcz0idWktYnV0dG9uLXRleHQgdWktYyI+dWktYnV0dG9uPC9zcGFuPjwvYnV0dG9uPjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmpfaWR0MjQ4N19zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJDb21tYW5kQnV0dG9uIiwid2lkZ2V0X2RhdGFzZXRGb3JtX2pfaWR0MjQ4NyIse2lkOiJkYXRhc2V0Rm9ybTpqX2lkdDI0ODcifSk7fSk7PC9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pjx0YWJsZSBpZD0iZGF0YXNldEZvcm06Y29tcHV0ZUJhdGNoIiBjbGFzcz0idGFibGUgdGFibGUtc3RyaXBlZCI+Cjx0aGVhZD4KPHRyPgo8dGggc2NvcGU9ImNvbCI+RGF0YXNldDwvdGg+Cjx0aCBzY29wZT0iY29sIj5QZXJzaXN0ZW50IElkZW50aWZpZXI8L3RoPgo8dGggc2NvcGU9ImNvbCI+Q2hhbmdlIENvbXB1dGUgQmF0Y2g8L3RoPgo8L3RyPgo8L3RoZWFkPgo8dGJvZHk+Cjx0cj48dGQ+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48L3RyPjwvdGJvZHk+CjwvdGFibGU+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tYmxvY2siPjxhIGhyZWY9Imh0dHBzOi8vZGF0YXZlcnNlLmhhcnZhcmQuZWR1Lztqc2Vzc2lvbmlkPTM5ZWEyNjExNjE4MmI3OTA2OGY2NmY0OTExY2UiIG9uY2xpY2s9IlBGKCdjb21wdXRlQmF0Y2hMaXN0UG9wdXAnKS5oaWRlKCkiIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0Ij5Db21wdXRlIEJhdGNoPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1saW5rIiBvbmNsaWNrPSJQRignY29tcHV0ZUJhdGNoTGlzdFBvcHVwJykuaGlkZSgpOyIgdHlwZT0iYnV0dG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW5jZWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj48L2Rpdj48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpjb21wdXRlQmF0Y2hMaXN0UG9wdXBfcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiRGlhbG9nIiwiY29tcHV0ZUJhdGNoTGlzdFBvcHVwIix7aWQ6ImRhdGFzZXRGb3JtOmNvbXB1dGVCYXRjaExpc3RQb3B1cCIsbW9kYWw6dHJ1ZX0pO30pOzwvc2NyaXB0PjxkaXYgaWQ9ImRhdGFzZXRGb3JtOmlucmV2aWV3IiBjbGFzcz0idWktZGlhbG9nIHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIHVpLXNoYWRvdyB1aS1oaWRkZW4tY29udGFpbmVyIj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXIgdWktd2lkZ2V0LWhlYWRlciB1aS1oZWxwZXItY2xlYXJmaXggdWktY29ybmVyLXRvcCI+PHNwYW4gaWQ9ImRhdGFzZXRGb3JtOmlucmV2aWV3X3RpdGxlIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlIj5TdWJtaXQgZm9yIFJldmlldzwvc3Bhbj48YSBocmVmPSIjIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyLWljb24gdWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIHVpLWNvcm5lci1hbGwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNsb3NldGhpY2siPjwvc3Bhbj48L2E+PC9kaXY+PGRpdiBjbGFzcz0idWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiIGlkPSJkYXRhc2V0Rm9ybTppbnJldmlld19jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtd2FybmluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi13YXJuaW5nLXNpZ24iPjwvc3Bhbj4gWW91IHdpbGwgbm90IGJlIGFibGUgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoaXMgZGF0YXNldCB3aGlsZSBpdCBpcyBpbiByZXZpZXcuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYnV0dG9uLWJsb2NrIj48YnV0dG9uIGlkPSJkYXRhc2V0Rm9ybTpqX2lkdDI1MDYiIG5hbWU9ImRhdGFzZXRGb3JtOmpfaWR0MjUwNiIgY2xhc3M9InVpLWJ1dHRvbiB1aS13aWRnZXQgdWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItYWxsIHVpLWJ1dHRvbi10ZXh0LW9ubHkgYnRuIGJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJQcmltZUZhY2VzLmJjbih0aGlzLGV2ZW50LFtmdW5jdGlvbihldmVudCl7UEYoJ2lucmV2aWV3JykuaGlkZSgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBGKCdibG9ja0RhdGFzZXRGb3JtJykuaGlkZSgpO30sZnVuY3Rpb24oZXZlbnQpe1ByaW1lRmFjZXMuYWIoe3M6JnF1b3Q7ZGF0YXNldEZvcm06al9pZHQyNTA2JnF1b3Q7LGY6JnF1b3Q7ZGF0YXNldEZvcm0mcXVvdDt9KTtyZXR1cm4gZmFsc2U7fV0pOyIgdHlwZT0ic3VibWl0Ij48c3BhbiBjbGFzcz0idWktYnV0dG9uLXRleHQgdWktYyI+U3VibWl0PC9zcGFuPjwvYnV0dG9uPjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmpfaWR0MjUwNl9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJDb21tYW5kQnV0dG9uIiwid2lkZ2V0X2RhdGFzZXRGb3JtX2pfaWR0MjUwNiIse2lkOiJkYXRhc2V0Rm9ybTpqX2lkdDI1MDYifSk7fSk7PC9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWxpbmsiIG9uY2xpY2s9IlBGKCdpbnJldmlldycpLmhpZGUoKTtQRignYmxvY2tEYXRhc2V0Rm9ybScpLmhpZGUoKTsiIHR5cGU9ImJ1dHRvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FuY2VsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9kaXY+PC9kaXY+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06aW5yZXZpZXdfcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiRGlhbG9nIiwiaW5yZXZpZXciLHtpZDoiZGF0YXNldEZvcm06aW5yZXZpZXciLG1vZGFsOnRydWV9KTt9KTs8L3NjcmlwdD48ZGl2IGlkPSJkYXRhc2V0Rm9ybTpwdWJsaXNoRGF0YXNldCIgY2xhc3M9InVpLWRpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1zaGFkb3cgdWktaGlkZGVuLWNvbnRhaW5lciI+PGRpdiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci10b3AiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpwdWJsaXNoRGF0YXNldF90aXRsZSIgY2xhc3M9InVpLWRpYWxvZy10aXRsZSI+UHVibGlzaCBEYXRhc2V0PC9zcGFuPjxhIGhyZWY9IiMiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXItaWNvbiB1aS1kaWFsb2ctdGl0bGViYXItY2xvc2UgdWktY29ybmVyLWFsbCIgYXJpYS1sYWJlbD0iQ2xvc2UiPjxzcGFuIGNsYXNzPSJ1aS1pY29uIHVpLWljb24tY2xvc2V0aGljayI+PC9zcGFuPjwvYT48L2Rpdj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctY29udGVudCB1aS13aWRnZXQtY29udGVudCIgaWQ9ImRhdGFzZXRGb3JtOnB1Ymxpc2hEYXRhc2V0X2NvbnRlbnQiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpqX2lkdDI1MTkiPjwvc3Bhbj48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuZm9jdXMoJ2RhdGFzZXRGb3JtOm9wdGlvbnMnKTt9KTs8L3NjcmlwdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LXdhcm5pbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXdhcm5pbmctc2lnbiI+PC9zcGFuPiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVwdWJsaXNoIHRoaXMgZGF0YXNldD8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD48ZGl2IGNsYXNzPSJ3ZWxsIHRlcm1zLWFncmVlbWVudC1ibG9jayI+QnkgZGVmYXVsdCBkYXRhc2V0cyBhcmUgcHVibGlzaGVkIHdpdGggdGhlIENDMC3igJxQdWJsaWMgRG9tYWluIERlZGljYXRpb27igJ0gd2FpdmVyLiBMZWFybiBtb3JlIGFib3V0IHRoZSBDQzAgd2FpdmVyIDxhIHRhcmdldD1fYmxhbmsgaHJlZj0naHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvY2hvb3NlL3plcm8vJz5oZXJlPC9hPi4gPGJyPjxicj4gVG8gcHVibGlzaCB3aXRoIGN1c3RvbSBUZXJtcyBvZiBVc2UsIGNsaWNrIHRoZSBDYW5jZWwgYnV0dG9uIGFuZCBnbyB0byB0aGUgVGVybXMgdGFiIGZvciB0aGlzIGRhdGFzZXQuPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImhlbHAtYmxvY2siPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgaWYgdGhpcyBpcyBhIG1pbm9yIG9yIG1ham9yIHZlcnNpb24gdXBkYXRlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD48dGFibGUgaWQ9ImRhdGFzZXRGb3JtOm9wdGlvbnMiIHJvbGU9InByZXNlbnRhdGlvbiIgY2xhc3M9InVpLXNlbGVjdG9uZXJhZGlvIHVpLXdpZGdldCI+PHRyPjx0ZD48ZGl2IGNsYXNzPSJ1aS1yYWRpb2J1dHRvbiB1aS13aWRnZXQiPjxkaXYgY2xhc3M9InVpLWhlbHBlci1oaWRkZW4tYWNjZXNzaWJsZSI+PGlucHV0IGlkPSJkYXRhc2V0Rm9ybTpvcHRpb25zOjAiIG5hbWU9ImRhdGFzZXRGb3JtOm9wdGlvbnMiIHR5cGU9InJhZGlvIiB2YWx1ZT0iMSIgY2hlY2tlZD0iY2hlY2tlZCIgLz48L2Rpdj48ZGl2IGNsYXNzPSJ1aS1yYWRpb2J1dHRvbi1ib3ggdWktd2lkZ2V0IHVpLWNvcm5lci1hbGwgdWktc3RhdGUtZGVmYXVsdCB1aS1zdGF0ZS1hY3RpdmUiPjxzcGFuIGNsYXNzPSJ1aS1yYWRpb2J1dHRvbi1pY29uIHVpLWljb24gdWktaWNvbi1idWxsZXQgdWktYyI+PC9zcGFuPjwvZGl2PjwvZGl2PjxsYWJlbCBmb3I9ImRhdGFzZXRGb3JtOm9wdGlvbnM6MCI+TWlub3IgUmVsZWFzZSAoMS4xKTwvbGFiZWw+PC90ZD48dGQ+PGRpdiBjbGFzcz0idWktcmFkaW9idXR0b24gdWktd2lkZ2V0Ij48ZGl2IGNsYXNzPSJ1aS1oZWxwZXItaGlkZGVuLWFjY2Vzc2libGUiPjxpbnB1dCBpZD0iZGF0YXNldEZvcm06b3B0aW9uczoxIiBuYW1lPSJkYXRhc2V0Rm9ybTpvcHRpb25zIiB0eXBlPSJyYWRpbyIgdmFsdWU9IjIiIC8+PC9kaXY+PGRpdiBjbGFzcz0idWktcmFkaW9idXR0b24tYm94IHVpLXdpZGdldCB1aS1jb3JuZXItYWxsIHVpLXN0YXRlLWRlZmF1bHQiPjxzcGFuIGNsYXNzPSJ1aS1yYWRpb2J1dHRvbi1pY29uIHVpLWljb24gdWktaWNvbi1ibGFuayB1aS1jIj48L3NwYW4+PC9kaXY+PC9kaXY+PGxhYmVsIGZvcj0iZGF0YXNldEZvcm06b3B0aW9uczoxIj5NYWpvciBSZWxlYXNlICgyLjApPC9sYWJlbD48L3RkPjwvdHI+PC90YWJsZT48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpvcHRpb25zX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIlNlbGVjdE9uZVJhZGlvIiwid2lkZ2V0X2RhdGFzZXRGb3JtX29wdGlvbnMiLHtpZDoiZGF0YXNldEZvcm06b3B0aW9ucyIsdW5zZWxlY3RhYmxlOmZhbHNlfSk7fSk7PC9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYnV0dG9uLWJsb2NrIj48YnV0dG9uIGlkPSJkYXRhc2V0Rm9ybTpqX2lkdDI1MzciIG5hbWU9ImRhdGFzZXRGb3JtOmpfaWR0MjUzNyIgY2xhc3M9InVpLWJ1dHRvbiB1aS13aWRnZXQgdWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItYWxsIHVpLWJ1dHRvbi10ZXh0LW9ubHkgYnRuIGJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJQcmltZUZhY2VzLmJjbih0aGlzLGV2ZW50LFtmdW5jdGlvbihldmVudCl7UEYoJ3B1Ymxpc2hEYXRhc2V0JykuaGlkZSgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBGKCdibG9ja0RhdGFzZXRGb3JtJykuaGlkZSgpO30sZnVuY3Rpb24oZXZlbnQpe1ByaW1lRmFjZXMuYWIoe3M6JnF1b3Q7ZGF0YXNldEZvcm06al9pZHQyNTM3JnF1b3Q7LGY6JnF1b3Q7ZGF0YXNldEZvcm0mcXVvdDt9KTtyZXR1cm4gZmFsc2U7fV0pOyIgdHlwZT0ic3VibWl0Ij48c3BhbiBjbGFzcz0idWktYnV0dG9uLXRleHQgdWktYyI+Q29udGludWU8L3NwYW4+PC9idXR0b24+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06al9pZHQyNTM3X3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIkNvbW1hbmRCdXR0b24iLCJ3aWRnZXRfZGF0YXNldEZvcm1fal9pZHQyNTM3Iix7aWQ6ImRhdGFzZXRGb3JtOmpfaWR0MjUzNyJ9KTt9KTs8L3NjcmlwdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tbGluayIgb25jbGljaz0iUEYoJ3B1Ymxpc2hEYXRhc2V0JykuaGlkZSgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQRignYmxvY2tEYXRhc2V0Rm9ybScpLmhpZGUoKTsiIHR5cGU9ImJ1dHRvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FuY2VsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9kaXY+PC9kaXY+PHNjcmlwdCBpZD0iZGF0YXNldEZvcm06cHVibGlzaERhdGFzZXRfcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiRGlhbG9nIiwicHVibGlzaERhdGFzZXQiLHtpZDoiZGF0YXNldEZvcm06cHVibGlzaERhdGFzZXQiLG1vZGFsOnRydWUsd2lkdGg6IjcwJSJ9KTt9KTs8L3NjcmlwdD48ZGl2IGlkPSJkYXRhc2V0Rm9ybTptYXlOb3RSZWxlYXNlIiBjbGFzcz0idWktZGlhbG9nIHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIHVpLXNoYWRvdyB1aS1oaWRkZW4tY29udGFpbmVyIj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXIgdWktd2lkZ2V0LWhlYWRlciB1aS1oZWxwZXItY2xlYXJmaXggdWktY29ybmVyLXRvcCI+PHNwYW4gaWQ9ImRhdGFzZXRGb3JtOm1heU5vdFJlbGVhc2VfdGl0bGUiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGUiPlB1Ymxpc2ggRGF0YXNldDwvc3Bhbj48YSBocmVmPSIjIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyLWljb24gdWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIHVpLWNvcm5lci1hbGwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNsb3NldGhpY2siPjwvc3Bhbj48L2E+PC9kaXY+PGRpdiBjbGFzcz0idWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiIGlkPSJkYXRhc2V0Rm9ybTptYXlOb3RSZWxlYXNlX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC1kYW5nZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZXhjbGFtYXRpb24tc2lnbiI+PC9zcGFuPlRoaXMgZGF0YXNldCBjYW5ub3QgYmUgcHVibGlzaGVkIHVudGlsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvZGF0YXZlcnNlLnhodG1sP2FsaWFzPWhhcnZhcmQiIHRpdGxlPSJIYXJ2YXJkIERhdGF2ZXJzZSI+SGFydmFyZCBEYXRhdmVyc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiAgaXMgcHVibGlzaGVkIGJ5IGl0cyBhZG1pbmlzdHJhdG9yLgogICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ibG9jayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiIG9uY2xpY2s9IlBGKCdtYXlOb3RSZWxlYXNlJykuaGlkZSgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQRignYmxvY2tEYXRhc2V0Rm9ybScpLmhpZGUoKTsiIHR5cGU9ImJ1dHRvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xvc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj48L2Rpdj48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTptYXlOb3RSZWxlYXNlX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIkRpYWxvZyIsIm1heU5vdFJlbGVhc2UiLHtpZDoiZGF0YXNldEZvcm06bWF5Tm90UmVsZWFzZSIsbW9kYWw6dHJ1ZX0pO30pOzwvc2NyaXB0PjxkaXYgaWQ9ImRhdGFzZXRGb3JtOnNlbmRCYWNrVG9Db250cmlidXRvciIgY2xhc3M9InVpLWRpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1zaGFkb3cgdWktaGlkZGVuLWNvbnRhaW5lciI+PGRpdiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci10b3AiPjxzcGFuIGlkPSJkYXRhc2V0Rm9ybTpzZW5kQmFja1RvQ29udHJpYnV0b3JfdGl0bGUiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGUiPlJldHVybiB0byBBdXRob3I8L3NwYW4+PGEgaHJlZj0iIyIgY2xhc3M9InVpLWRpYWxvZy10aXRsZWJhci1pY29uIHVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSB1aS1jb3JuZXItYWxsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gY2xhc3M9InVpLWljb24gdWktaWNvbi1jbG9zZXRoaWNrIj48L3NwYW4+PC9hPjwvZGl2PjxkaXYgY2xhc3M9InVpLWRpYWxvZy1jb250ZW50IHVpLXdpZGdldC1jb250ZW50IiBpZD0iZGF0YXNldEZvcm06c2VuZEJhY2tUb0NvbnRyaWJ1dG9yX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC13YXJuaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXdhcm5pbmctc2lnbiI+PC9zcGFuPiBSZXR1cm4gdGhpcyBkYXRhc2V0IHRvIGNvbnRyaWJ1dG9yIGZvciBtb2RpZmljYXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ibG9jayI+PGJ1dHRvbiBpZD0iZGF0YXNldEZvcm06al9pZHQyNTU4IiBuYW1lPSJkYXRhc2V0Rm9ybTpqX2lkdDI1NTgiIGNsYXNzPSJ1aS1idXR0b24gdWktd2lkZ2V0IHVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLWFsbCB1aS1idXR0b24tdGV4dC1vbmx5IGJ0biBidG4tZGVmYXVsdCIgb25jbGljaz0iUHJpbWVGYWNlcy5iY24odGhpcyxldmVudCxbZnVuY3Rpb24oZXZlbnQpe1BGKCdzZW5kQmFja1RvQ29udHJpYnV0b3InKS5oaWRlKCl9LGZ1bmN0aW9uKGV2ZW50KXtQcmltZUZhY2VzLmFiKHtzOiZxdW90O2RhdGFzZXRGb3JtOmpfaWR0MjU1OCZxdW90OyxmOiZxdW90O2RhdGFzZXRGb3JtJnF1b3Q7fSk7cmV0dXJuIGZhbHNlO31dKTsiIHR5cGU9InN1Ym1pdCI+PHNwYW4gY2xhc3M9InVpLWJ1dHRvbi10ZXh0IHVpLWMiPkNvbnRpbnVlPC9zcGFuPjwvYnV0dG9uPjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmpfaWR0MjU1OF9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJDb21tYW5kQnV0dG9uIiwid2lkZ2V0X2RhdGFzZXRGb3JtX2pfaWR0MjU1OCIse2lkOiJkYXRhc2V0Rm9ybTpqX2lkdDI1NTgifSk7fSk7PC9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWxpbmsiIG9uY2xpY2s9IlBGKCdzZW5kQmFja1RvQ29udHJpYnV0b3InKS5oaWRlKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBGKCdibG9ja0RhdGFzZXRGb3JtJykuaGlkZSgpOyIgdHlwZT0iYnV0dG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW5jZWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj48L2Rpdj48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpzZW5kQmFja1RvQ29udHJpYnV0b3JfcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5jdygiRGlhbG9nIiwic2VuZEJhY2tUb0NvbnRyaWJ1dG9yIix7aWQ6ImRhdGFzZXRGb3JtOnNlbmRCYWNrVG9Db250cmlidXRvciIsbW9kYWw6dHJ1ZX0pO30pOzwvc2NyaXB0PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmpfaWR0MjU2MCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5yZXR1cm5Ub0F1dGhvckNvbW1hbmQgPSBmdW5jdGlvbigpIHtyZXR1cm4gUHJpbWVGYWNlcy5hYih7czoiZGF0YXNldEZvcm06al9pZHQyNTYwIixmOiJkYXRhc2V0Rm9ybSIscGE6YXJndW1lbnRzWzBdfSk7fTwvc2NyaXB0PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmpfaWR0MjU2MSIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5saW5rRWRpdFRlcm1zID0gZnVuY3Rpb24oKSB7cmV0dXJuIFByaW1lRmFjZXMuYWIoe3M6ImRhdGFzZXRGb3JtOmpfaWR0MjU2MSIsZjoiZGF0YXNldEZvcm0iLHU6ImRhdGFzZXRGb3JtIGRhdGFzZXRGb3JtIG1lc3NhZ2VQYW5lbCIscGE6YXJndW1lbnRzWzBdfSk7fTwvc2NyaXB0PjxzY3JpcHQgaWQ9ImRhdGFzZXRGb3JtOmpfaWR0MjU2MiIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5lZGl0TWVkYXRkYXRhQ29tbWFuZCA9IGZ1bmN0aW9uKCkge3JldHVybiBQcmltZUZhY2VzLmFiKHtzOiJkYXRhc2V0Rm9ybTpqX2lkdDI1NjIiLGY6ImRhdGFzZXRGb3JtIix1OiJkYXRhc2V0Rm9ybSBkYXRhc2V0Rm9ybSBtZXNzYWdlUGFuZWwiLHBhOmFyZ3VtZW50c1swXX0pO308L3NjcmlwdD48c2NyaXB0IGlkPSJkYXRhc2V0Rm9ybTpqX2lkdDI1NjMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+ZGF0YXNldFNhdmVDb21tYW5kID0gZnVuY3Rpb24oKSB7cmV0dXJuIFByaW1lRmFjZXMuYWIoe3M6ImRhdGFzZXRGb3JtOmpfaWR0MjU2MyIsZjoiZGF0YXNldEZvcm0iLHU6ImRhdGFzZXRGb3JtIG1lc3NhZ2VQYW5lbCIscGE6YXJndW1lbnRzWzBdfSk7fTwvc2NyaXB0PjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImphdmF4LmZhY2VzLlZpZXdTdGF0ZSIgaWQ9ImpfaWQxOmphdmF4LmZhY2VzLlZpZXdTdGF0ZToyIiB2YWx1ZT0iNTgyMTczNTQwNDIxMzczNDI4MTo2NTAwMTU3OTc1MTU4Njk3Mzc5IiBhdXRvY29tcGxldGU9Im9mZiIgLz4KPC9mb3JtPgogICAgICAgICAgICAgICAgPHNjcmlwdD4KICAgICAgICAgICAgICAgICAgICAvLzwhW0NEQVRBWwogICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcG9wb3ZlckhUTUwoJ0FsbG93ZWQgSFRNTCBUYWdzJywgJyZsdDthJmd0OywgJmx0O2ImZ3Q7LCAmbHQ7YmxvY2txdW90ZSZndDssICZsdDticiZndDssICZsdDtjb2RlJmd0OywgJmx0O2RlbCZndDssICZsdDtkZCZndDssICZsdDtkbCZndDssICZsdDtkdCZndDssICZsdDtlbSZndDssICZsdDtociZndDssICZsdDtoMSZndDstJmx0O2gzJmd0OywgJmx0O2kmZ3Q7LCAmbHQ7aW1nJmd0OywgJmx0O2tiZCZndDssICZsdDtsaSZndDssICZsdDtvbCZndDssICZsdDtwJmd0OywgJmx0O3ByZSZndDssICZsdDtzJmd0OywgJmx0O3N1cCZndDssICZsdDtzdWImZ3Q7LCAmbHQ7c3Ryb25nJmd0OywgJmx0O3N0cmlrZSZndDssICZsdDt1Jmd0OywgJmx0O3VsJmd0OycpOwogICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5RGVzY1RydW5jYXRpb24oKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBzdW1tYXJ5RGVzY1RydW5jYXRpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRydW5jYXRlIHN1bW1hcnkgZGVzY3JpcHRpb24sIGNvbnRlbnRUcnVuY2F0ZSBmdW5jdGlvbiBpbiBkdl9yZWJpbmRfYm9vdHN0cmFwX3VpLmpzCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFkZCBzdW1tYXJ5IGRlc2Mgcm93IGlkIHRvIHBhc3MgYXMgc2VsZWN0b3IgcGFyYW0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRlc2NJZCA9ICdkc0Rlc2NyaXB0aW9uJzsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWRkIG1ldGFkYXRhIGR5bmFtaWMgbGFiZWwgdGV4dCwgdG9vbHRpcCB0ZXh0IGZyb20gYnVuZGxlIGFzIHBhcmFtCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0cnVuY01vcmVCdG4gPSAnUmVhZCBmdWxsIERlc2NyaXB0aW9uIFsrXSc7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0cnVuY01vcmVUaXAgPSAnQ2xpY2sgdG8gcmVhZCB0aGUgZnVsbCBEZXNjcmlwdGlvbi4nOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHJ1bmNMZXNzQnRuID0gJ0NvbGxhcHNlIERlc2NyaXB0aW9uIFsrXSc7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0cnVuY0xlc3NUaXAgPSAnQ2xpY2sgdG8gY29sbGFwc2UgdGhlIERlc2NyaXB0aW9uLic7CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAvLyBwYXNzIGJ1bmRsZSB0ZXh0IHZhcmlhYmxzIGFzIHBhcmFtcyB0byBmdW5jdGlvbgogICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50VHJ1bmNhdGUoZGVzY0lkLCB0cnVuY01vcmVCdG4sIHRydW5jTW9yZVRpcCwgdHJ1bmNMZXNzQnRuLCB0cnVuY0xlc3NUaXApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBvcGVuRGlhbG9nKCkgewogICAgICAgICAgICAgICAgICAgICAgICBQRignZGV0YWlscycpLnNob3coKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gb3BlbkNvbXBhcmVUd28oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFBGKCdjb21wYXJlVHdvJykuc2hvdygpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlZGl0VGVybXMoKXsgIAogICAgICAgICAgICAgICAgICAgICAgICBsaW5rRWRpdFRlcm1zKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGVkaXRNZXRhZGF0YSgpeyAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbGlkVE9BID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRhdGFzZXRGb3JtOnZhbGlkVGVybXNvZkFjY2VzcyIpLnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsaWRUT0EgPT09ICdmYWxzZScpeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBGKCdibG9ja0RhdGFzZXRGb3JtJykuc2hvdygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgUEYoJ2FjY2Vzc1BvcHVwJykuc2hvdygpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdE1lZGF0ZGF0YUNvbW1hbmQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdGVzdENoZWNrQm94ZXMoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb3VudCA9IFBGKCd2ZXJzaW9uc1RhYmxlJykuZ2V0U2VsZWN0ZWRSb3dzQ291bnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50ICE9PSAyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQRignY29tcGFyZVR3bycpLnNob3coKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJ2J1dHRvbltpZCQ9ImNvbXBhcmVWZXJzaW9ucyJdJykudHJpZ2dlcignY2xpY2snKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0RmlsZXNTZWxlY3RlZCgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvdW50ID0gUEYoJ2ZpbGVzVGFibGUnKS5nZXRTZWxlY3RlZFJvd3NDb3VudCgpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoY291bnQgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgUEYoJ3NlbGVjdEZpbGVzJykuc2hvdygpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdGVzdFRlcm1zT2ZBY2Nlc3MoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWxpZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkYXRhc2V0Rm9ybTp2YWxpZFRlcm1zb2ZBY2Nlc3MiKS52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbGlkID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgUEYoJ2FjY2Vzc1BvcHVwJykuc2hvdygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdXBkYXRlVGVtcGxhdGUoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICQoJ2J1dHRvbltpZCQ9InVwZGF0ZVRlbXBsYXRlIl0nKS50cmlnZ2VyKCdjbGljaycpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB1cGRhdGVPd25lckRhdGF2ZXJzZSgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJCgnYnV0dG9uW2lkJD0idXBkYXRlT3duZXJEYXRhdmVyc2UiXScpLnRyaWdnZXIoJ2NsaWNrJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHNob3dQb3B1cCgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG91dGNvbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGF0YXNldEZvcm06dmFsaWRhdGVGaWxlc091dGNvbWUiKS52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG91dGNvbWUgPT09J01peGVkJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQRignZG93bmxvYWRNaXhlZCcpLnNob3coKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAob3V0Y29tZSA9PT0nRmFpbEVtcHR5Jyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQRignc2VsZWN0RmlsZXNGb3JEb3dubG9hZCcpLnNob3coKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAob3V0Y29tZSA9PT0nRmFpbFNpemUnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBGKCdkb3dubG9hZFRvb0xhcmdlJykuc2hvdygpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvdXRjb21lID09PSdGYWlsUmVzdHJpY3RlZCcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgUEYoJ2Rvd25sb2FkSW52YWxpZCcpLnNob3coKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAob3V0Y29tZSA9PT0nR3Vlc3Rib29rUmVxdWlyZWQnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBGKCdkb3dubG9hZFBvcHVwJykuc2hvdygpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3RUT0FEYXRhc2V0UGFnZSgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRlcm1zb2ZBY2Nlc3NIaWRkZW4sIGZpbGVBY2Nlc3NSZXF1ZXN0SGlkZGVuOwogICAgICAgICAgICAgICAgICAgICAgICB0cnl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtc29mQWNjZXNzSGlkZGVuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRhdGFzZXRGb3JtOnRhYlZpZXc6dGVybXNvZkFjY2Vzc0hpZGRlbkxUIikudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlQWNjZXNzUmVxdWVzdEhpZGRlbiAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGF0YXNldEZvcm06dGFiVmlldzpmaWxlQWNjZXNzUmVxdWVzdEhpZGRlbkxUIikudmFsdWU7ICAKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZXJyb3IpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy90ZXJtcyBub3QgcHJlc2VudCBzbyBzYXZlLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQRignYmxvY2tEYXRhc2V0Rm9ybScpLnNob3coKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFzZXRTYXZlQ29tbWFuZCgpOyAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJ2ZhbHNlJyA9PT0gJ3RydWUnICYmIGZpbGVBY2Nlc3NSZXF1ZXN0SGlkZGVuID09PSAnZmFsc2UnICYmIHRlcm1zb2ZBY2Nlc3NIaWRkZW4gPT09ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vTm90IGNvbXBsaWFudCBzaG93IGVycm9yIGtlZXAgcGFnZSBvcGVuLi4uCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQRignYmxvY2tEYXRhc2V0Rm9ybScpLnNob3coKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFzZXRTYXZlQ29tbWFuZCgpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgLy9dXT4KICAgICAgICAgICAgICAgIDwvc2NyaXB0PgogICAgICAgIDwvZGl2PgogICAgPGZvb3Rlcj4KICAgICAgICA8ZGl2IGlkPSJkdmZvb3RlciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPjxkaXYgY2xhc3M9ImNvbC1zbS04IHNtYWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHA+Q29weXJpZ2h0ICYjMTY5OyAyMDIyLCBUaGUgUHJlc2lkZW50ICYjMzg7IEZlbGxvd3Mgb2YgSGFydmFyZCBDb2xsZWdlwqB8wqAgPGEgaHJlZj0iaHR0cHM6Ly9zdXBwb3J0LmRhdGF2ZXJzZS5oYXJ2YXJkLmVkdS9oYXJ2YXJkLWRhdGF2ZXJzZS1wcml2YWN5LXBvbGljeSIgcmVsPSJub29wZW5lciIgdGFyZ2V0PSJfYmxhbmsiPlByaXZhY3kgUG9saWN5PC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTQgdGV4dC1yaWdodCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBvd2VyZWRieWxvZ28iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+UG93ZXJlZCBieTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9kYXRhdmVyc2Uub3JnLyIgdGl0bGU9IlRoZSBEYXRhdmVyc2UgUHJvamVjdCIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPjxpbWcgc3JjPSIvcmVzb3VyY2VzL2ltYWdlcy9kYXRhdmVyc2VfcHJvamVjdF9sb2dvLnN2ZyIgd2lkdGg9IjExOCIgaGVpZ2h0PSI0MCIgb25lcnJvcj0idGhpcy5zcmM9Jy9yZXNvdXJjZXMvaW1hZ2VzL2RhdGF2ZXJzZXByb2plY3RfbG9nby5wbmcnIiBhbHQ9IlRoZSBEYXRhdmVyc2UgUHJvamVjdCBsb2dvIiAvPjwvYT48c3BhbiBjbGFzcz0idmVyc2lvbiI+di4gNS4xMiBidWlsZCBwaXJhdGUtKGV5ZSktcGF0Y2g8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PjxzY3JpcHQ+CiAgLy88IVtDREFUQVsKICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbiAoKSB7CiAgICAkKCIjZm9vdGVyID4gZGl2LmNvbnRhaW5lciA+IGRpdi5yb3cgPiBkaXYuY29sLXNtLTguc21hbGwgPiBwIikuYXBwZW5kKCImIzE2MDt8JiMxNjA7IDxhIGhyZWY9XCJodHRwczovL3d3dy5oYXJ2YXJkLmVkdS9jb3B5cmlnaHQtaXNzdWVcIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lclwiPlJlcG9ydCBDb3B5cmlnaHQgSW5mcmluZ2VtZW50PC9hPiAmIzE2MDt8JiMxNjA7IDxhIGhyZWY9XCJodHRwczovL2FjY2Vzc2liaWxpdHkuaHVpdC5oYXJ2YXJkLmVkdS9kaWdpdGFsLWFjY2Vzc2liaWxpdHktcG9saWN5XCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXJcIj5BY2Nlc3NpYmlsaXR5PC9hPiIpOwogIH0pOwogIC8vXV0+Cjwvc2NyaXB0PgoKPHN0eWxlPgojZmVlZGJhY2tUYWIge3Bvc2l0aW9uOmZpeGVkOyBib3R0b206MDsgcmlnaHQ6NTBweDt9CiNmZWVkYmFja1RhYiBhLmJ0bi1mZWVkYmFjayB7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowO30KLmJ0bi1mZWVkYmFjayB7YmFja2dyb3VuZC1jb2xvcjojQzU1QjI4OyBib3JkZXItY29sb3I6I0M1NUIyODsgY29sb3I6I2ZmZjt9Ci5idG4tZmVlZGJhY2s6aG92ZXIsIC5idG4tZmVlZGJhY2s6Zm9jdXMsCi5idG4tZmVlZGJhY2s6YWN0aXZlLCAuYnRuLWZlZWRiYWNrLmFjdGl2ZSB7YmFja2dyb3VuZC1jb2xvcjojYjA1MTI0OyBib3JkZXItY29sb3I6ICM5YjQ3MWY7IGNvbG9yOiNmZmY7fQo8L3N0eWxlPgoKPGRpdiBpZD0iZmVlZGJhY2tUYWIiPgogICAgPGEgY2xhc3M9ImJ0biBidG4tZmVlZGJhY2sgYm9vdHN0cmFwLWJ1dHRvbi10b29sdGlwIiBocmVmPSJodHRwczovL2dvby5nbC9mb3Jtcy9wN3V1M0dmaVdZU2xKcnNpMSIgcm9sZT0iYnV0dG9uIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciIgIGFyaWEtbGFiZWw9IkhlbHAgaW1wcm92ZSBEYXRhdmVyc2UhIiBkYXRhLW9yaWdpbmFsLXRpdGxlPSJIZWxwIGltcHJvdmUgRGF0YXZlcnNlISI+CiAgICAgICAgRmVlZGJhY2sKICAgIDwvYT4KPC9kaXY+CgogICAgPC9mb290ZXI+PGRpdiBpZD0iYWpheFN0YXR1c1BhbmVsIj48ZGl2IGlkPSJhamF4U3RhdHVzUGFuZWxfc3RhcnQiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPjxpbWcgc3JjPSIvcmVzb3VyY2VzL2ltYWdlcy9hamF4LWxvYWRpbmcuZ2lmO2pzZXNzaW9uaWQ9MzllYTI2MTE2MTgyYjc5MDY4ZjY2ZjQ5MTFjZSIgYWx0PSJMb2FkaW5nLi4uIiAvPjwvZGl2PjwvZGl2PjxzY3JpcHQgaWQ9ImFqYXhTdGF0dXNQYW5lbF9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJBamF4U3RhdHVzIiwid2lkZ2V0X2FqYXhTdGF0dXNQYW5lbCIse2lkOiJhamF4U3RhdHVzUGFuZWwiLGRlbGF5OjB9KTt9KTs8L3NjcmlwdD48ZGl2IGlkPSJjb250YWN0RGlhbG9nIiBjbGFzcz0idWktZGlhbG9nIHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIHVpLXNoYWRvdyB1aS1oaWRkZW4tY29udGFpbmVyIj48ZGl2IGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXIgdWktd2lkZ2V0LWhlYWRlciB1aS1oZWxwZXItY2xlYXJmaXggdWktY29ybmVyLXRvcCI+PHNwYW4gaWQ9ImNvbnRhY3REaWFsb2dfdGl0bGUiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGUiPkNvbnRhY3QgSGFydmFyZCBEYXRhdmVyc2UgU3VwcG9ydDwvc3Bhbj48YSBocmVmPSIjIiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyLWljb24gdWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIHVpLWNvcm5lci1hbGwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNsb3NldGhpY2siPjwvc3Bhbj48L2E+PC9kaXY+PGRpdiBjbGFzcz0idWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiIGlkPSJjb250YWN0RGlhbG9nX2NvbnRlbnQiPjxkaXYgaWQ9ImpfaWR0MjU5MiI+Cjxmb3JtIGlkPSJlbWFpbEZvcm0iIG5hbWU9ImVtYWlsRm9ybSIgbWV0aG9kPSJwb3N0IiBhY3Rpb249Ii9kYXRhc2V0LnhodG1sO2pzZXNzaW9uaWQ9MzllYTI2MTE2MTgyYjc5MDY4ZjY2ZjQ5MTFjZT9wZXJzaXN0ZW50SWQ9ZG9pJTNBMTAuNzkxMCUyRkRWTiUyRk5KN1hTTyIgY2xhc3M9ImZvcm0taG9yaXpvbnRhbCIgZW5jdHlwZT0iYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZW1haWxGb3JtIiB2YWx1ZT0iZW1haWxGb3JtIiAvPgo8c3BhbiBpZD0iZW1haWxGb3JtOmpfaWR0MjU5MyI+PC9zcGFuPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4kKGZ1bmN0aW9uKCl7UHJpbWVGYWNlcy5mb2N1cyhudWxsLCAnY29udGFjdERpYWxvZycpO30pOzwvc2NyaXB0PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJtZXNzYWdlVG8iIGNsYXNzPSJjb2wtc20tMyBjb250cm9sLWxhYmVsIj5UbzwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTkiPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBpZD0ibWVzc2FnZVRvIiBjbGFzcz0iZm9ybS1jb250cm9sLXN0YXRpYyI+SGFydmFyZCBEYXRhdmVyc2UgU3VwcG9ydDwvcD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+PGxhYmVsIGZvcj0iZW1haWxGb3JtOnVzZXJFbWFpbCIgY2xhc3M9ImNvbC1zbS0zIGNvbnRyb2wtbGFiZWwiPkZyb20gPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tYXN0ZXJpc2sgdGV4dC1kYW5nZXIiIHRpdGxlPSJSZXF1aXJlZCBmaWVsZCI+PC9zcGFuPjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS05Ij48aW5wdXQgaWQ9ImVtYWlsRm9ybTp1c2VyRW1haWwiIG5hbWU9ImVtYWlsRm9ybTp1c2VyRW1haWwiIHR5cGU9InRleHQiIHZhbHVlPSIiIGNsYXNzPSJ1aS1pbnB1dGZpZWxkIHVpLWlucHV0dGV4dCB1aS13aWRnZXQgdWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItYWxsIGZvcm0tY29udHJvbCIgc2l6ZT0iMzAiIC8+PHNjcmlwdCBpZD0iZW1haWxGb3JtOnVzZXJFbWFpbF9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJJbnB1dFRleHQiLCJ3aWRnZXRfZW1haWxGb3JtX3VzZXJFbWFpbCIse2lkOiJlbWFpbEZvcm06dXNlckVtYWlsIn0pO30pOzwvc2NyaXB0PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+PGxhYmVsIGZvcj0iZW1haWxGb3JtOm1lc3NhZ2VTdWJqZWN0IiBjbGFzcz0iY29sLXNtLTMgY29udHJvbC1sYWJlbCI+U3ViamVjdCA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1hc3RlcmlzayB0ZXh0LWRhbmdlciIgdGl0bGU9IlJlcXVpcmVkIGZpZWxkIj48L3NwYW4+PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tOSI+PGlucHV0IGlkPSJlbWFpbEZvcm06bWVzc2FnZVN1YmplY3QiIG5hbWU9ImVtYWlsRm9ybTptZXNzYWdlU3ViamVjdCIgdHlwZT0idGV4dCIgdmFsdWU9IiIgY2xhc3M9InVpLWlucHV0ZmllbGQgdWktaW5wdXR0ZXh0IHVpLXdpZGdldCB1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwgZm9ybS1jb250cm9sIiAvPjxzY3JpcHQgaWQ9ImVtYWlsRm9ybTptZXNzYWdlU3ViamVjdF9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJJbnB1dFRleHQiLCJ3aWRnZXRfZW1haWxGb3JtX21lc3NhZ2VTdWJqZWN0Iix7aWQ6ImVtYWlsRm9ybTptZXNzYWdlU3ViamVjdCJ9KTt9KTs8L3NjcmlwdD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PiAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj48bGFiZWwgZm9yPSJlbWFpbEZvcm06dXNlck1lc3NhZ2UiIGNsYXNzPSJjb2wtc20tMyBjb250cm9sLWxhYmVsIj5NZXNzYWdlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWFzdGVyaXNrIHRleHQtZGFuZ2VyIiB0aXRsZT0iUmVxdWlyZWQgZmllbGQiPjwvc3Bhbj48L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS05Ij48dGV4dGFyZWEgaWQ9ImVtYWlsRm9ybTp1c2VyTWVzc2FnZSIgbmFtZT0iZW1haWxGb3JtOnVzZXJNZXNzYWdlIiBjbGFzcz0idWktaW5wdXRmaWVsZCB1aS1pbnB1dHRleHRhcmVhIHVpLXdpZGdldCB1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwgZm9ybS1jb250cm9sIiBjb2xzPSIyMCIgcm93cz0iMTAiIHRpdGxlPSJNZXNzYWdlIiBtYXhsZW5ndGg9IjIxNDc0ODM2NDciPjwvdGV4dGFyZWE+PHNjcmlwdCBpZD0iZW1haWxGb3JtOnVzZXJNZXNzYWdlX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIklucHV0VGV4dGFyZWEiLCJ3aWRnZXRfZW1haWxGb3JtX3VzZXJNZXNzYWdlIix7aWQ6ImVtYWlsRm9ybTp1c2VyTWVzc2FnZSIsYXV0b1Jlc2l6ZTpmYWxzZX0pO30pOzwvc2NyaXB0PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS1vZmZzZXQtMyBjb2wtc20tOSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxzcGFuIGNsYXNzPSJoaWdobGlnaHRCb2xkIj5QbGVhc2UgZmlsbCB0aGlzIG91dCB0byBwcm92ZSB5b3UgYXJlIG5vdCBhIHJvYm90Ljwvc3Bhbj4gPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tYXN0ZXJpc2sgdGV4dC1kYW5nZXIiIHRpdGxlPSJSZXF1aXJlZCBmaWVsZCI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9ImVtYWlsRm9ybTptZXNzYWdlU3VtIj4gKyAgPSAKICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD48aW5wdXQgaWQ9ImVtYWlsRm9ybTptZXNzYWdlU3VtIiBuYW1lPSJlbWFpbEZvcm06bWVzc2FnZVN1bSIgdHlwZT0idGV4dCIgY2xhc3M9InVpLWlucHV0ZmllbGQgdWktaW5wdXR0ZXh0IHVpLXdpZGdldCB1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwgIiBzaXplPSI0IiB0aXRsZT0iSHVtYW4gQWNjZXNzIFZhbGlkYXRpb24gQW5zd2VyIiAvPjxzY3JpcHQgaWQ9ImVtYWlsRm9ybTptZXNzYWdlU3VtX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIklucHV0VGV4dCIsIndpZGdldF9lbWFpbEZvcm1fbWVzc2FnZVN1bSIse2lkOiJlbWFpbEZvcm06bWVzc2FnZVN1bSJ9KTt9KTs8L3NjcmlwdD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tYmxvY2siPjxidXR0b24gaWQ9ImVtYWlsRm9ybTpqX2lkdDI2MjEiIG5hbWU9ImVtYWlsRm9ybTpqX2lkdDI2MjEiIGNsYXNzPSJ1aS1idXR0b24gdWktd2lkZ2V0IHVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLWFsbCB1aS1idXR0b24tdGV4dC1vbmx5IGJ0biBidG4tZGVmYXVsdCIgb25jbGljaz0iUHJpbWVGYWNlcy5hYih7czomcXVvdDtlbWFpbEZvcm06al9pZHQyNjIxJnF1b3Q7LGY6JnF1b3Q7ZW1haWxGb3JtJnF1b3Q7LHU6JnF1b3Q7ZW1haWxGb3JtJnF1b3Q7LG9uY286ZnVuY3Rpb24oeGhyLHN0YXR1cyxhcmdzLGRhdGEpe2lmIChhcmdzICZhbXA7JmFtcDsgIWFyZ3MudmFsaWRhdGlvbkZhaWxlZCkgUEYoJ2NvbnRhY3RGb3JtJykuaGlkZSgpOzt9LHBhOlt7bmFtZTomcXVvdDtET19WQUxJREFUSU9OJnF1b3Q7LHZhbHVlOiZxdW90O3RydWUmcXVvdDt9XSxmcDomcXVvdDtqX2lkdDI1OTImcXVvdDt9KTtyZXR1cm4gZmFsc2U7IiB0eXBlPSJzdWJtaXQiPjxzcGFuIGNsYXNzPSJ1aS1idXR0b24tdGV4dCB1aS1jIj5TZW5kIE1lc3NhZ2U8L3NwYW4+PC9idXR0b24+PHNjcmlwdCBpZD0iZW1haWxGb3JtOmpfaWR0MjYyMV9zIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZnVuY3Rpb24oKXtQcmltZUZhY2VzLmN3KCJDb21tYW5kQnV0dG9uIiwid2lkZ2V0X2VtYWlsRm9ybV9qX2lkdDI2MjEiLHtpZDoiZW1haWxGb3JtOmpfaWR0MjYyMSJ9KTt9KTs8L3NjcmlwdD4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWxpbmsiIG9uY2xpY2s9IlBGKCdjb250YWN0Rm9ybScpLmhpZGUoKSIgdHlwZT0iYnV0dG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgQ2FuY2VsCiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICA8L2Rpdj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJqYXZheC5mYWNlcy5WaWV3U3RhdGUiIGlkPSJqX2lkMTpqYXZheC5mYWNlcy5WaWV3U3RhdGU6MyIgdmFsdWU9IjU4MjE3MzU0MDQyMTM3MzQyODE6NjUwMDE1Nzk3NTE1ODY5NzM3OSIgYXV0b2NvbXBsZXRlPSJvZmYiIC8+CjwvZm9ybT48L2Rpdj48L2Rpdj48L2Rpdj48c2NyaXB0IGlkPSJjb250YWN0RGlhbG9nX3MiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+JChmdW5jdGlvbigpe1ByaW1lRmFjZXMuY3coIkRpYWxvZyIsImNvbnRhY3RGb3JtIix7aWQ6ImNvbnRhY3REaWFsb2ciLG1vZGFsOnRydWV9KTt9KTs8L3NjcmlwdD4KICAgICAgICA8c2NyaXB0IHNyYz0iL2phdmF4LmZhY2VzLnJlc291cmNlL2pzL2R2X3JlYmluZF9ib290c3RyYXBfdWkuanMueGh0bWw7anNlc3Npb25pZD0zOWVhMjYxMTYxODJiNzkwNjhmNjZmNDkxMWNlP3ZlcnNpb249NS4xMiI+PC9zY3JpcHQ+CiAgICAgICAgPHNjcmlwdCBzcmM9Ii9qYXZheC5mYWNlcy5yZXNvdXJjZS9icy9qcy9ib290c3RyYXAubWluLmpzLnhodG1sO2pzZXNzaW9uaWQ9MzllYTI2MTE2MTgyYjc5MDY4ZjY2ZjQ5MTFjZT92ZXJzaW9uPTUuMTIiPjwvc2NyaXB0PgogICAgICAgIDxzY3JpcHQgZGVmZXI9ImRlZmVyIiBzcmM9Ii9qYXZheC5mYWNlcy5yZXNvdXJjZS9qcy9pZS1jb21wYXQuanMueGh0bWw7anNlc3Npb25pZD0zOWVhMjYxMTYxODJiNzkwNjhmNjZmNDkxMWNlP3ZlcnNpb249NS4xMiI+PC9zY3JpcHQ+CiAgICAgICAgPHNjcmlwdCBkZWZlcj0iZGVmZXIiIHNyYz0iL2phdmF4LmZhY2VzLnJlc291cmNlL2pzL293bC5jYXJvdXNlbC5qcy54aHRtbDtqc2Vzc2lvbmlkPTM5ZWEyNjExNjE4MmI3OTA2OGY2NmY0OTExY2U/dmVyc2lvbj01LjEyIj48L3NjcmlwdD4KICAgICAgICA8c2NyaXB0IGRlZmVyPSJkZWZlciIgc3JjPSIvamF2YXguZmFjZXMucmVzb3VyY2UvanMvanF1ZXJ5Lm1hdGNoSGVpZ2h0LmpzLnhodG1sO2pzZXNzaW9uaWQ9MzllYTI2MTE2MTgyYjc5MDY4ZjY2ZjQ5MTFjZT92ZXJzaW9uPTUuMTIiPjwvc2NyaXB0PgogICAgICAgIDxzY3JpcHQgc3JjPSIvamF2YXguZmFjZXMucmVzb3VyY2UvanMvanF1ZXJ5LnNoYXJycmUuanMueGh0bWw7anNlc3Npb25pZD0zOWVhMjYxMTYxODJiNzkwNjhmNjZmNDkxMWNlP3ZlcnNpb249NS4xMiI+PC9zY3JpcHQ+CiAgICAgICAgPHNjcmlwdCBzcmM9Ii9qYXZheC5mYWNlcy5yZXNvdXJjZS9qcy9jbGlwYm9hcmQubWluLmpzLnhodG1sO2pzZXNzaW9uaWQ9MzllYTI2MTE2MTgyYjc5MDY4ZjY2ZjQ5MTFjZT92ZXJzaW9uPTUuMTIiPjwvc2NyaXB0PsKgCiAgICAgICAgCiAgICAgICAgPHNjcmlwdD4KICAgICAgICAgICAgLy88IVtDREFUQVsKICAgICAgICAgICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgLy8gTmF2YmFyIFNlYXJjaCBUb2dnbGUKICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsICcjbmF2YmFyLXNlYXJjaC10b2dnbGUnLCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAgICAgICAgICQodGhpcykucGFyZW50KCJsaSIpLmhpZGUoKTsKICAgICAgICAgICAgICAgICAgICAkKCJmb3JtLm5hdmJhci1mb3JtW3JvbGU9J3NlYXJjaCddIikuc2hvdygpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAkKCdib2R5JykuY2xpY2soZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoISQoZS50YXJnZXQpLmNsb3Nlc3QoImZvcm0ubmF2YmFyLWZvcm1bcm9sZT0nc2VhcmNoJ10iKS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJCgiZm9ybS5uYXZiYXItZm9ybVtyb2xlPSdzZWFyY2gnXSIpLmhpZGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgJCgiI25hdmJhci1zZWFyY2gtdG9nZ2xlIikucGFyZW50KCJsaSIpLnNob3coKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBmdW5jdGlvbiBjbGlja1N1cHBvcnRMaW5rKCkgewogICAgICAgICAgICAgICAgJCgiW2lkJD0naGVhZGVyU3VwcG9ydExpbmsnXSIpLmNsaWNrKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy9dXT4KICAgICAgICA8L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgaWQ9ImpfaWR0MjYyNSI+YmluZF9ic3VpX2NvbXBvbmVudHMoKTs8L3NjcmlwdD48L2JvZHk+CjwvaHRtbD4=
40
40
  http_version:
41
- recorded_at: Mon, 21 Nov 2022 12:34:31 GMT
41
+ recorded_at: Wed, 23 Nov 2022 08:33:14 GMT
42
42
  recorded_with: VCR 3.0.3