PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KICA8aGVhZD4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIC8+CiAgICA8dGl0bGU+T1Byb2ZpbGUgbWFudWFsPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzUuMiIgLz4KICA8L2hlYWQ+CiAgPGJvZHk+CiAgICA8ZGl2IGNsYXNzPSJib29rIiB0aXRsZT0iT1Byb2ZpbGUgbWFudWFsIj4KICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICA8ZGl2PgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGgxIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9Im9wcm9maWxlLWd1aWRlIj48L2E+T1Byb2ZpbGUgbWFudWFsPC9oMT4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYXV0aG9yZ3JvdXAiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImF1dGhvciI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9ImF1dGhvciI+PHNwYW4gY2xhc3M9ImZpcnN0bmFtZSI+Sm9objwvc3Bhbj4gPHNwYW4gY2xhc3M9InN1cm5hbWUiPkxldm9uPC9zcGFuPjwvaDM+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZmZpbGlhdGlvbiI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkZHJlc3MiPgogICAgICAgICAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9ImVtYWlsIj4mbHQ7PGEgY2xhc3M9ImVtYWlsIiBocmVmPSJtYWlsdG86bGV2b25AbW92ZW1lbnRhcmlhbi5vcmciPmxldm9uQG1vdmVtZW50YXJpYW4ub3JnPC9hPiZndDs8L2NvZGU+CiAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPHAgY2xhc3M9ImNvcHlyaWdodCI+Q29weXJpZ2h0IKkgMjAwMC0yMDA0IFZpY3RvcmlhIFVuaXZlcnNpdHkgb2YgTWFuY2hlc3RlciwgSm9obiBMZXZvbiBhbmQgb3RoZXJzPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGhyIC8+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJ0b2MiPgogICAgICAgIDxwPgogICAgICAgICAgPGI+VGFibGUgb2YgQ29udGVudHM8L2I+CiAgICAgICAgPC9wPgogICAgICAgIDxkbD4KICAgICAgICAgIDxkdD4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNoYXB0ZXIiPgogICAgICAgICAgICAgIDxhIGhyZWY9IiNpbnRyb2R1Y3Rpb24iPjEuIEludHJvZHVjdGlvbjwvYT4KICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgPC9kdD4KICAgICAgICAgIDxkZD4KICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNsZWdhY3lfbW9kZSI+MS4gT1Byb2ZpbGUgbGVnYWN5IHByb2ZpbGluZyBtb2RlPC9hPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3BlcmZfZXZlbnRzIj4yLiBPUHJvZmlsZSBwZXJmX2V2ZW50cyBwcm9maWxpbmcgbW9kZTwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNldmVudF9jb3VudGluZyI+My4gT1Byb2ZpbGUgZXZlbnQgY291bnRpbmcgbW9kZTwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNhcHBsaWNhdGlvbnMiPjQuIEFwcGxpY2F0aW9ucyBvZiBPUHJvZmlsZTwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjaml0c3VwcG9ydCI+NC4xLiBTdXBwb3J0IGZvciBkeW5hbWljYWxseSBjb21waWxlZCAoSklUKSBjb2RlPC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3Vlc3RzdXBwb3J0Ij40LjIuIE5vIHN1cHBvcnQgZm9yIHZpcnR1YWwgbWFjaGluZSBndWVzdHM8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNyZXF1aXJlbWVudHMiPjUuIFN5c3RlbSByZXF1aXJlbWVudHM8L2E+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgICA8YSBocmVmPSIjcmVzb3VyY2VzIj42LiBJbnRlcm5ldCByZXNvdXJjZXM8L2E+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgICA8YSBocmVmPSIjaW5zdGFsbCI+Ny4gSW5zdGFsbGF0aW9uPC9hPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3VuaW5zdGFsbCI+OC4gVW5pbnN0YWxsaW5nIE9Qcm9maWxlPC9hPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICA8L2RkPgogICAgICAgICAgPGR0PgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iY2hhcHRlciI+CiAgICAgICAgICAgICAgPGEgaHJlZj0iI292ZXJ2aWV3Ij4yLiBPdmVydmlldzwvYT4KICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgPC9kdD4KICAgICAgICAgIDxkZD4KICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnZXR0aW5nLXN0YXJ0ZWQtd2l0aC1vcGVyZiI+MS4gR2V0dGluZyBzdGFydGVkIHdpdGggT1Byb2ZpbGUgdXNpbmcgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3BlcmY8L3N0cm9uZz48L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dldHRpbmctc3RhcnRlZC13aXRoLWxlZ2FjeSI+Mi4gR2V0dGluZyBzdGFydGVkIHdpdGggT1Byb2ZpbGUgdXNpbmcgbGVnYWN5IHByb2ZpbGluZyBtb2RlPC9hPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dldHRpbmctc3RhcnRlZC13aXRoLW9jb3VudCI+My4gR2V0dGluZyBzdGFydGVkIHdpdGggT1Byb2ZpbGUgdXNpbmcgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b2NvdW50PC9zdHJvbmc+PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNldmVudHNwZWMiPjQuIFNwZWNpZnlpbmcgcGVyZm9ybWFuY2UgY291bnRlciBldmVudHM8L2E+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgICA8YSBocmVmPSIjdG9vbHMtb3ZlcnZpZXciPjUuIFRvb2xzIHN1bW1hcnk8L2E+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPC9kbD4KICAgICAgICAgIDwvZGQ+CiAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjaGFwdGVyIj4KICAgICAgICAgICAgICA8YSBocmVmPSIjY29udHJvbGxpbmctcHJvZmlsZXIiPjMuIENvbnRyb2xsaW5nIHRoZSBwcm9maWxlcjwvYT4KICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgPC9kdD4KICAgICAgICAgIDxkZD4KICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNjb250cm9sbGluZy1vcGVyZiI+MS4gVXNpbmcgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3BlcmY8L3N0cm9uZz48L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2NvbnRyb2xsaW5nLWRhZW1vbiI+Mi4gVXNpbmcgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3Bjb250cm9sPC9zdHJvbmc+PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjb3Bjb250cm9sZXhhbXBsZXMiPjIuMS4gRXhhbXBsZXM8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzZXR1cC1qaXQiPjMuIFNldHRpbmcgdXAgdGhlIEpJVCBwcm9maWxpbmcgZmVhdHVyZTwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjc2V0dXAtaml0LWp2bSI+My4xLiBKVk0gaW5zdHJ1bWVudGF0aW9uPC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgICA8YSBocmVmPSIjb3Byb2ZpbGUtZ3VpIj40LiBVc2luZyA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcHJvZl9zdGFydDwvc3Ryb25nPjwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZGV0YWlsZWQtcGFyYW1ldGVycyI+NS4gQ29uZmlndXJhdGlvbiBkZXRhaWxzPC9hPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNoYXJkd2FyZS1jb3VudGVycyI+NS4xLiBIYXJkd2FyZSBwZXJmb3JtYW5jZSBjb3VudGVyczwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3RpbWVyIj41LjIuIE9Qcm9maWxlIGluIHRpbWVyIGludGVycnVwdCBtb2RlPC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjcDQiPjUuMy4gUGVudGl1bSA0IHN1cHBvcnQ8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNpYTY0Ij41LjQuIEludGVsIEl0YW5pdW0gMiBzdXBwb3J0PC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjcHBjNjQiPjUuNS4gUG93ZXJQQzY0IHN1cHBvcnQ8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNjZWxsLWJlIj41LjYuIENlbGwgQnJvYWRiYW5kIEVuZ2luZSBzdXBwb3J0PC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjYW1kLWlicy1zdXBwb3J0Ij41LjcuIEFNRDY0ICh4ODZfNjQpIEluc3RydWN0aW9uLUJhc2VkIFNhbXBsaW5nIChJQlMpIHN1cHBvcnQ8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzeXN0ZW16Ij41LjguIElCTSBTeXN0ZW0geiBoYXJkd2FyZSBzYW1wbGluZyBzdXBwb3J0PC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjbWlzdXNlIj41LjkuIERhbmdlcm91cyBjb3VudGVyIHNldHRpbmdzPC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgPC9kbD4KICAgICAgICAgIDwvZGQ+CiAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjaGFwdGVyIj4KICAgICAgICAgICAgICA8YSBocmVmPSIjcmVzdWx0cyI+NC4gT2J0YWluaW5nIHByb2ZpbGluZyByZXN1bHRzPC9hPgogICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICA8L2R0PgogICAgICAgICAgPGRkPgogICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3Byb2ZpbGUtc3BlYyI+MS4gUHJvZmlsZSBzcGVjaWZpY2F0aW9uczwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjcHJvZmlsZS1zcGVjLWV4YW1wbGVzIj4xLjEuIEV4YW1wbGVzPC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjcHJvZmlsZS1zcGVjLWRldGFpbHMiPjEuMi4gUHJvZmlsZSBzcGVjaWZpY2F0aW9uIHBhcmFtZXRlcnM8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNsb2NhdGluZy1hbmQtbWFuYWdpbmctYmluYXJ5LWltYWdlcyI+MS4zLiBMb2NhdGluZyBhbmQgbWFuYWdpbmcgYmluYXJ5IGltYWdlczwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI25vLXJlc3VsdHMiPjEuNC4gV2hhdCB0byBkbyB3aGVuIHlvdSBkb24ndCBnZXQgYW55IHJlc3VsdHM8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNvcHJlcG9ydCI+Mi4gSW1hZ2Ugc3VtbWFyaWVzIGFuZCBzeW1ib2wgc3VtbWFyaWVzICg8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcHJlcG9ydDwvc3Ryb25nPjwvc3Bhbj4pPC9hPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNvcHJlcG9ydC1tZXJnaW5nIj4yLjEuIE1lcmdpbmcgc2VwYXJhdGUgcHJvZmlsZXM8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNvcHJlcG9ydC1jb21wYXJpc29uIj4yLjIuIFNpZGUtYnktc2lkZSBtdWx0aXBsZSByZXN1bHRzPC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjb3ByZXBvcnQtY2FsbGdyYXBoIj4yLjMuIENhbGxncmFwaCBvdXRwdXQ8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNvcHJlcG9ydC1kaWZmIj4yLjQuIERpZmZlcmVudGlhbCBwcm9maWxlcyB3aXRoIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wcmVwb3J0PC9zdHJvbmc+PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI29wcmVwb3J0LWFub24iPjIuNS4gQW5vbnltb3VzIGV4ZWN1dGFibGUgbWFwcGluZ3M8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNvcHJlcG9ydC14bWwiPjIuNi4gWE1MIGZvcm1hdHRlZCBvdXRwdXQ8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNvcHJlcG9ydC1vcHRpb25zIj4yLjcuIE9wdGlvbnMgZm9yIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wcmVwb3J0PC9zdHJvbmc+PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI29wYW5ub3RhdGUiPjMuIE91dHB1dHRpbmcgYW5ub3RhdGVkIHNvdXJjZSAoPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3Bhbm5vdGF0ZTwvc3Ryb25nPjwvc3Bhbj4pPC9hPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNvcGFubm90YXRlLWZpbmRpbmctc291cmNlIj4zLjEuIExvY2F0aW5nIHNvdXJjZSBmaWxlczwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI29wYW5ub3RhdGUtZGV0YWlscyI+My4yLiBVc2FnZSBvZiA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGFubm90YXRlPC9zdHJvbmc+PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dldHRpbmctaml0LXJlcG9ydHMiPjQuIE9Qcm9maWxlIHJlc3VsdHMgd2l0aCBKSVQgc2FtcGxlczwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNvcGdwcm9mIj41LiA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5ncHJvZjwvc3Ryb25nPjwvc3Bhbj4tY29tcGF0aWJsZSBvdXRwdXQgKDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wZ3Byb2Y8L3N0cm9uZz48L3NwYW4+KTwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjb3BncHJvZi1kZXRhaWxzIj41LjEuIFVzYWdlIG9mIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wZ3Byb2Y8L3N0cm9uZz48L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgICA8YSBocmVmPSIjb3BhcmNoaXZlIj42LiBBbmFseXppbmcgcHJvZmlsZSBkYXRhIG9uIGFub3RoZXIgc3lzdGVtICg8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGFyY2hpdmU8L3N0cm9uZz48L3NwYW4+KTwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjb3BhcmNoaXZlLWRldGFpbHMiPjYuMS4gVXNhZ2Ugb2YgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3BhcmNoaXZlPC9zdHJvbmc+PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI29waW1wb3J0Ij43LiBDb252ZXJ0aW5nIHNhbXBsZSBkYXRhYmFzZSBmaWxlcyAoPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3BpbXBvcnQ8L3N0cm9uZz48L3NwYW4+KTwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjb3BpbXBvcnQtZGV0YWlscyI+Ny4xLiBVc2FnZSBvZiA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGltcG9ydDwvc3Ryb25nPjwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICA8L2RsPgogICAgICAgICAgPC9kZD4KICAgICAgICAgIDxkdD4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNoYXB0ZXIiPgogICAgICAgICAgICAgIDxhIGhyZWY9IiNpbnRlcnByZXRpbmciPjUuIEludGVycHJldGluZyBwcm9maWxpbmcgcmVzdWx0czwvYT4KICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgPC9kdD4KICAgICAgICAgIDxkZD4KICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNpcnEtbGF0ZW5jeSI+MS4gUHJvZmlsaW5nIGludGVycnVwdCBsYXRlbmN5PC9hPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2tlcm5lbC1wcm9maWxpbmciPjIuIEtlcm5lbCBwcm9maWxpbmc8L2E+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2lycS1tYXNraW5nIj4yLjEuIEludGVycnVwdCBtYXNraW5nPC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjaWRsZSI+Mi4yLiBJZGxlIHRpbWU8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNrZXJuZWwtbW9kdWxlcyI+Mi4zLiBQcm9maWxpbmcga2VybmVsIG1vZHVsZXM8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNpbnRlcnByZXRpbmctY2FsbGdyYXBoIj4zLiBJbnRlcnByZXRpbmcgY2FsbC1ncmFwaCBwcm9maWxlczwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNkZWJ1Zy1pbmZvIj40LiBJbmFjY3VyYWNpZXMgaW4gYW5ub3RhdGVkIHNvdXJjZTwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZWZmZWN0LW9mLW9wdGltaXphdGlvbnMiPjQuMS4gU2lkZSBlZmZlY3RzIG9mIG9wdGltaXphdGlvbnM8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNwcm9sb2d1ZXMiPjQuMi4gUHJvbG9ndWVzIGFuZCBlcGlsb2d1ZXM8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNpbmxpbmVkLWZ1bmN0aW9uIj40LjMuIElubGluZWQgZnVuY3Rpb25zPC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjd3JvbmctbGluZW5yLWluZm8iPjQuNC4gSW5hY2N1cmFjeSBpbiBsaW5lIG51bWJlciBpbmZvcm1hdGlvbjwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3N5bWJvbC13aXRob3V0LWRlYnVnLWluZm8iPjUuIEFzc2VtYmx5IGZ1bmN0aW9uczwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNvdmVybGFwcGluZy1zeW1ib2xzIj42LiBPdmVybGFwcGluZyBzeW1ib2xzIGluIEpJVGVkIGNvZGU8L2E+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgICA8YSBocmVmPSIjaW50ZXJwcmV0aW5nX29wZXJmX3Jlc3VsdHMiPjcuIFVzaW5nIG9wZXJmIHRvIHByb2ZpbGUgZm9yay9leGVjczwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNoaWRkZW4tY29zdCI+OC4gT3RoZXIgZGlzY3JlcGFuY2llczwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICA8L2RsPgogICAgICAgICAgPC9kZD4KICAgICAgICAgIDxkdD4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNoYXB0ZXIiPgogICAgICAgICAgICAgIDxhIGhyZWY9IiNjb250cm9sbGluZy1jb3VudGVyIj42LiBDb250cm9sbGluZyB0aGUgZXZlbnQgY291bnRlcjwvYT4KICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgPC9kdD4KICAgICAgICAgIDxkZD4KICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNjb250cm9sbGluZy1vY291bnQiPjEuIFVzaW5nIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9jb3VudDwvc3Ryb25nPjwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPC9kbD4KICAgICAgICAgIDwvZGQ+CiAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjaGFwdGVyIj4KICAgICAgICAgICAgICA8YSBocmVmPSIjYWNrIj43LiBBY2tub3dsZWRnbWVudHM8L2E+CiAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgIDwvZHQ+CiAgICAgICAgPC9kbD4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNoYXB0ZXIiIHRpdGxlPSJDaGFwdGVyoDEuoEludHJvZHVjdGlvbiI+CiAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9ImludHJvZHVjdGlvbiI+PC9hPkNoYXB0ZXKgMS6gSW50cm9kdWN0aW9uPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0b2MiPgogICAgICAgICAgPHA+CiAgICAgICAgICAgIDxiPlRhYmxlIG9mIENvbnRlbnRzPC9iPgogICAgICAgICAgPC9wPgogICAgICAgICAgPGRsPgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNsZWdhY3lfbW9kZSI+MS4gT1Byb2ZpbGUgbGVnYWN5IHByb2ZpbGluZyBtb2RlPC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjcGVyZl9ldmVudHMiPjIuIE9Qcm9maWxlIHBlcmZfZXZlbnRzIHByb2ZpbGluZyBtb2RlPC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjZXZlbnRfY291bnRpbmciPjMuIE9Qcm9maWxlIGV2ZW50IGNvdW50aW5nIG1vZGU8L2E+CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2R0PgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNhcHBsaWNhdGlvbnMiPjQuIEFwcGxpY2F0aW9ucyBvZiBPUHJvZmlsZTwvYT4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2ppdHN1cHBvcnQiPjQuMS4gU3VwcG9ydCBmb3IgZHluYW1pY2FsbHkgY29tcGlsZWQgKEpJVCkgY29kZTwvYT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3Vlc3RzdXBwb3J0Ij40LjIuIE5vIHN1cHBvcnQgZm9yIHZpcnR1YWwgbWFjaGluZSBndWVzdHM8L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjcmVxdWlyZW1lbnRzIj41LiBTeXN0ZW0gcmVxdWlyZW1lbnRzPC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjcmVzb3VyY2VzIj42LiBJbnRlcm5ldCByZXNvdXJjZXM8L2E+CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2R0PgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNpbnN0YWxsIj43LiBJbnN0YWxsYXRpb248L2E+CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2R0PgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiN1bmluc3RhbGwiPjguIFVuaW5zdGFsbGluZyBPUHJvZmlsZTwvYT4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICA8L2RsPgogICAgICAgIDwvZGl2PgogICAgICAgIDxwPgpUaGlzIG1hbnVhbCBhcHBsaWVzIHRvIE9Qcm9maWxlIHZlcnNpb24gMC45LjkuCk9Qcm9maWxlIGlzIGEgc2V0IG9mIHBlcmZvcm1hbmNlIG1vbml0b3JpbmcgdG9vbHMgZm9yIExpbnV4IDIuNiBhbmQgaGlnaGVyIHN5c3RlbXMsIGF2YWlsYWJsZSBvbiBhIG51bWJlciBvZiBhcmNoaXRlY3R1cmVzLgpPUHJvZmlsZSBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGZlYXR1cmVzOgo8L3A+CiAgICAgICAgPGRpdiBjbGFzcz0iaXRlbWl6ZWRsaXN0Ij4KICAgICAgICAgIDx1bCBjbGFzcz0iaXRlbWl6ZWRsaXN0IiB0eXBlPSJkaXNjIj4KICAgICAgICAgICAgPGxpIGNsYXNzPSJsaXN0aXRlbSI+UHJvZmlsZXI8L2xpPgogICAgICAgICAgICA8bGkgY2xhc3M9Imxpc3RpdGVtIj5Qb3N0LXByb2Nlc3NpbmcgdG9vbHMgZm9yIGFuYWx5emluZyBwcm9maWxlIGRhdGE8L2xpPgogICAgICAgICAgICA8bGkgY2xhc3M9Imxpc3RpdGVtIj5FdmVudCBjb3VudGVyPC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPHA+CjwvcD4KICAgICAgICA8cD4KT1Byb2ZpbGUgaXMgY2FwYWJsZSBvZiBtb25pdG9yaW5nIG5hdGl2ZSBoYXJkd2FyZSBldmVudHMgb2NjdXJyaW5nIGluIGFsbCBwYXJ0cyBvZiBhIHJ1bm5pbmcgc3lzdGVtLCBmcm9tIHRoZSBrZXJuZWwKKGluY2x1ZGluZyBtb2R1bGVzIGFuZCBpbnRlcnJ1cHQgaGFuZGxlcnMpIHRvIHNoYXJlZCBsaWJyYXJpZXMKdG8gYmluYXJpZXMuIE9Qcm9maWxlIGNhbiBjb2xsZWN0IGV2ZW50IGluZm9ybWF0aW9uIGZvciB0aGUgd2hvbGUgc3lzdGVtIGluIHRoZSBiYWNrZ3JvdW5kIHdpdGggdmVyeSBsaXR0bGUgb3ZlcmhlYWQuIFRoZXNlCmZlYXR1cmVzIG1ha2UgaXQgaWRlYWwgZm9yIG1vbml0b3JpbmcgZW50aXJlIHN5c3RlbXMgdG8gZGV0ZXJtaW5lIGJvdHRsZSBuZWNrcyBpbiByZWFsLXdvcmxkIHN5c3RlbXMuCjwvcD4KICAgICAgICA8cD4KTWFueSBDUFVzIHByb3ZpZGUgInBlcmZvcm1hbmNlIGNvdW50ZXJzIiwgaGFyZHdhcmUgcmVnaXN0ZXJzIHRoYXQgY2FuIGNvdW50ICJldmVudHMiOyBmb3IgZXhhbXBsZSwKY2FjaGUgbWlzc2VzLCBvciBDUFUgY3ljbGVzLiBPUHJvZmlsZSBjYW4gY29sbGVjdCBwcm9maWxlcyBvZiBjb2RlIGJhc2VkIG9uIHRoZSBudW1iZXIgb2YgdGhlc2Ugb2NjdXJyaW5nIGV2ZW50czoKcmVwZWF0ZWRseSwgZXZlcnkgdGltZSBhIGNlcnRhaW4gKGNvbmZpZ3VyYWJsZSkgbnVtYmVyIG9mIGV2ZW50cyBoYXMgb2NjdXJyZWQsIHRoZSBQQyB2YWx1ZSBpcyByZWNvcmRlZC4KVGhpcyBpbmZvcm1hdGlvbiBpcyBhZ2dyZWdhdGVkIGludG8gcHJvZmlsZXMgZm9yIGVhY2ggYmluYXJ5IGltYWdlLiAgQWx0ZXJuYXRpdmVseSwgT1Byb2ZpbGUncyBldmVudCBjb3VudGluZwp0b29sIGNhbiBjb2xsZWN0IHNpbXBsZSByYXcgZXZlbnQgY291bnRzLjwvcD4KICAgICAgICA8cD4KU29tZSBoYXJkd2FyZSBzZXR1cHMgZG8gbm90IGFsbG93IE9Qcm9maWxlIHRvIHVzZSBwZXJmb3JtYW5jZSBjb3VudGVyczogaW4gdGhlc2UgY2FzZXMsIG5vCmV2ZW50cyBhcmUgYXZhaWxhYmxlIHNvIE9Qcm9maWxlIG9wZXJhdGVzIGluIHRpbWVyIG1vZGUsIGFzIGRlc2NyaWJlZCBpbiBsYXRlciBjaGFwdGVycy4gVGltZXIKbW9kZSBpcyBvbmx5IGF2YWlsYWJsZSBpbiAibGVnYWN5IHByb2ZpbGluZyBtb2RlIiAoc2VlIDxhIGNsYXNzPSJ4cmVmIiBocmVmPSIjbGVnYWN5X21vZGUiIHRpdGxlPSIxLqBPUHJvZmlsZSBsZWdhY3kgcHJvZmlsaW5nIG1vZGUiPlNlY3Rpb26gMSwgJiM4MjIwO09Qcm9maWxlIGxlZ2FjeSBwcm9maWxpbmcgbW9kZSYjODIyMTs8L2E+KS4KPC9wPgogICAgICAgIDxkaXYgY2xhc3M9InNlY3QxIiB0aXRsZT0iMS6gT1Byb2ZpbGUgbGVnYWN5IHByb2ZpbGluZyBtb2RlIj48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIGlkPSJsZWdhY3lfbW9kZSI+PC9hPjEuoE9Qcm9maWxlIGxlZ2FjeSBwcm9maWxpbmcgbW9kZTwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+CiJMZWdhY3kiIE9Qcm9maWxlIGNvbnNpc3RzIG9mIHRoZSA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGNvbnRyb2w8L3N0cm9uZz48L3NwYW4+IHNoZWxsIHNjcmlwdCwgdGhlIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wcm9maWxlZDwvc3Ryb25nPjwvc3Bhbj4gZGFlbW9uLCBhbmQgc2V2ZXJhbCBwb3N0LXByb2Nlc3NpbmcgdG9vbHMgKGUuZy4sCjxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wcmVwb3J0PC9zdHJvbmc+PC9zcGFuPikuIFRoZSA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGNvbnRyb2w8L3N0cm9uZz48L3NwYW4+IHNjcmlwdCBpcyB1c2VkIGZvciBjb25maWd1cmluZywgc3RhcnRpbmcsIGFuZCBzdG9wcGluZyBhIHByb2ZpbGluZyBzZXNzaW9uLiBBbiBPUHJvZmlsZQprZXJuZWwgZHJpdmVyICh1c3VhbGx5IGJ1aWx0IGFzIGEga2VybmVsIG1vZHVsZSkgaXMgdXNlZCBmb3IgY29sbGVjdGluZyBzYW1wbGVzLCB3aGljaCBhcmUgdGhlbiByZWNvcmRlZCBpbnRvIHNhbXBsZSBmaWxlcyBieQo8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcHJvZmlsZWQ8L3N0cm9uZz48L3NwYW4+LiBVc2luZyBPUHJvZmlsZSBpbiAibGVnYWN5IG1vZGUiIHJlcXVpcmVzIHJvb3QgdXNlciBhdXRob3JpdHkgc2luY2UgdGhlIHByb2ZpbGluZyBpcyBkb25lIG9uIGEgc3lzdGVtLXdpZGUgYmFzaXMsIHdoaWNoIG1heQooaWYgbWlzdXNlZCkgY2F1c2UgYWR2ZXJzZSBlZmZlY3RzIHRvIHRoZSBzeXN0ZW0uCjxkaXYgY2xhc3M9Im5vdGUiIHRpdGxlPSJOb3RlIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDAuNWluOyBtYXJnaW4tcmlnaHQ6IDAuNWluOyI+PGgzIGNsYXNzPSJ0aXRsZSI+Tm90ZTwvaDM+ClByb2ZpbGluZyBzZXR1cCBwYXJhbWV0ZXJzIHRoYXQgeW91IHNwZWNpZnkgdXNpbmcgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3Bjb250cm9sPC9zdHJvbmc+PC9zcGFuPiBhcmUgY2FjaGVkIGluIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+L3Jvb3QvLm9wcm9maWxlL2RhZW1vbnJjPC9jb2RlPi4KU3Vic2VxdWVudCBydW5zIG9mIDxjb2RlIGNsYXNzPSJjb2RlIj5vcGNvbnRyb2wgLS1zdGFydDwvY29kZT4gd2lsbCBjb250aW51ZSB0byB1c2UgdGhlc2UgY2FjaGVkIHZhbHVlcyB1bnRpbCB5b3UKb3ZlcnJpZGUgdGhlbSB3aXRoIG5ldyB2YWx1ZXMuCjwvZGl2PjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY3QxIiB0aXRsZT0iMi6gT1Byb2ZpbGUgcGVyZl9ldmVudHMgcHJvZmlsaW5nIG1vZGUiPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+PGEgaWQ9InBlcmZfZXZlbnRzIj48L2E+Mi6gT1Byb2ZpbGUgcGVyZl9ldmVudHMgcHJvZmlsaW5nIG1vZGU8L2gyPjwvZGl2PjwvZGl2PjwvZGl2PgpBcyBvZiByZWxlYXNlIDAuOS44LCBPUHJvZmlsZSBub3cgaW5jbHVkZXMgdGhlIGFiaWxpdHkgdG8gcHJvZmlsZSBhIHNpbmdsZSBwcm9jZXNzIHZlcnN1cyB0aGUgc3lzdGVtLXdpZGUgdGVjaG5pcXVlCm9mIGxlZ2FjeSBPUHJvZmlsZS4gV2l0aCB0aGlzIG5ldyB0ZWNobmlxdWUsIHRoZSA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGVyZjwvc3Ryb25nPjwvc3Bhbj4gcHJvZ3JhbSBpcyB1c2VkIHRvIGNvbnRyb2wgcHJvZmlsaW5nIGluc3RlYWQgb2YgdGhlCjxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wY29udHJvbDwvc3Ryb25nPjwvc3Bhbj4gc2NyaXB0IGFuZCA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcHJvZmlsZWQ8L3N0cm9uZz48L3NwYW4+IGRhZW1vbiBvZiBsZWFnYWN5IG1vZGUuIEFsc28sIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wZXJmPC9zdHJvbmc+PC9zcGFuPiBkb2VzIG5vdCByZXF1aXJlIHRoZQpzcGVjaWFsIE9Qcm9maWxlIGtlcm5lbCBkcml2ZXIgdGhhdCBsZWdhY3kgbW9kZSBkb2VzOyBpbnN0ZWFkLCBpdCBpbnRlcmZhY2VzIHdpdGggdGhlIGtlcm5lbCB0byBjb2xsZWN0IHNhbXBsZXMgdmlhIHRoZSBMaW51eCBLZXJuZWwKUGVyZm9ybWFuY2UgRXZlbnRzIFN1YnN5c3RlbSAoaGVyZWFmdGVyIHJlZmVycmVkIHRvIGFzICJwZXJmX2V2ZW50cyIpLiBVc2luZyA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGVyZjwvc3Ryb25nPjwvc3Bhbj4gdG8gcHJvZmlsZSBhIHNpbmdsZQpwcm9jZXNzIGNhbiBiZSBkb25lIGFzIGEgbm9ybWFsIHVzZXI7IGhvd2V2ZXIsIHJvb3QgYXV0aG9yaXR5IDxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+PGVtPmlzPC9lbT48L3NwYW4+IHJlcXVpcmVkIHRvIHJ1biA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGVyZjwvc3Ryb25nPjwvc3Bhbj4gaW4gc3lzdGVtLXdpZGUKcHJvZmlsaW5nIG1vZGUuCjxkaXYgY2xhc3M9Im5vdGUiIHRpdGxlPSJOb3RlIDEiIHN0eWxlPSJtYXJnaW4tbGVmdDogMC41aW47IG1hcmdpbi1yaWdodDogMC41aW47Ij48aDMgY2xhc3M9InRpdGxlIj5Ob3RlIDE8L2gzPgpUaGUgc2FtZSBPUHJvZmlsZSBwb3N0LXByb2Nlc3NpbmcgdG9vbHMgYXJlIHVzZWQgd2hldGhlciB5b3UgY29sbGVjdCB5b3VyIHByb2ZpbGUgd2l0aCA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGVyZjwvc3Ryb25nPjwvc3Bhbj4gb3IgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3Bjb250cm9sPC9zdHJvbmc+PC9zcGFuPi4KPC9kaXY+PGRpdiBjbGFzcz0ibm90ZSIgdGl0bGU9Ik5vdGUgMiIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwLjVpbjsgbWFyZ2luLXJpZ2h0OiAwLjVpbjsiPjxoMyBjbGFzcz0idGl0bGUiPk5vdGUgMjwvaDM+ClNvbWUgb2xkZXIgcHJvY2Vzc29yIG1vZGVscyBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGUgdW5kZXJseWluZyBwZXJmX2V2ZW50cyBrZXJuZWwgYW5kLCB0aHVzLCBhcmUgbm90IHN1cHBvcnRlZCBieSA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGVyZjwvc3Ryb25nPjwvc3Bhbj4uCklmIHlvdSByZWNlaXZlIHRoZSBtZXNzYWdlCjx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+PHRyPjx0ZD48cHJlIGNsYXNzPSJzY3JlZW4iPiAgWW91ciBrZXJuZWwncyBQZXJmb3JtYW5jZSBFdmVudHMgU3Vic3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgeW91ciBwcm9jZXNzb3IgdHlwZTwvcHJlPjwvdGQ+PC90cj48L3RhYmxlPgp3aGVuIGF0dGVtcHRpbmcgdG8gdXNlIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wZXJmPC9zdHJvbmc+PC9zcGFuPiwgdHJ5IHByb2ZpbGluZyB3aXRoIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wY29udHJvbDwvc3Ryb25nPjwvc3Bhbj4KdG8gc2VlIGlmIHlvdXIgcHJvY2Vzc29yIHR5cGUgbWF5IGJlIHN1cHBvcnRlZCBieSBPUHJvZmlsZSdzIGxlZ2FjeSBtb2RlLgo8L2Rpdj48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MSIgdGl0bGU9IjMuoE9Qcm9maWxlIGV2ZW50IGNvdW50aW5nIG1vZGUiPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+PGEgaWQ9ImV2ZW50X2NvdW50aW5nIj48L2E+My6gT1Byb2ZpbGUgZXZlbnQgY291bnRpbmcgbW9kZTwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+CkFzIG9mIHJlbGVhc2UgMC45LjksIE9Qcm9maWxlIG5vdyBpbmNsdWRlcyB0aGUgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b2NvdW50PC9zdHJvbmc+PC9zcGFuPiB0b29sIHdoaWNoIHByb3ZpZGVzIHRoZSBjYXBhYmlsaXR5IG9mCmNvbGxlY3RpbmcgcmF3IGV2ZW50IGNvdW50cyBvbiBhIHBlci1hcHBsaWNhdGlvbiwgcGVyLXByb2Nlc3MsIHBlci1jcHUsIG9yIHN5c3RlbS13aWRlIGJhc2lzLiAgVW5saWtlIHRoZQpwcm9maWxpbmcgdG9vbHMsIHBvc3QtcHJvY2Vzc2luZyBvZiB0aGUgZGF0YSBjb2xsZWN0ZWQgaXMgbm90IG5lY2Vzc2FyeSAtLSB0aGUgZGF0YSBpcyBkaXNwbGF5ZWQgaW4gdGhlCm91dHB1dCBvZiA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vY291bnQ8L3N0cm9uZz48L3NwYW4+LiAgQSBjb21tb24gdXNlIGNhc2UgZm9yIGV2ZW50IGNvdW50aW5nIHRvb2xzIGlzIHdoZW4gcGVyZm9ybWFuY2UgYW5hbHlzdHMKd2FudCB0byBkZXRlcm1pbmUgdGhlIENQSSAoY3ljbGVzIHBlciBpbnN0cnVjdGlvbikgZm9yIGFuIGFwcGxpY2F0aW9uLiBIaWdoIENQSSBpbXBsaWVzIHBvc3NpYmxlIHN0YWxscywKYW5kIG1hbnkgYXJjaGl0ZWN0dXJlcyBwcm92aWRlIGV2ZW50cyB0aGF0IGdpdmUgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGRpZmZlcmVudCB0eXBlcyBvZiBzdGFsbHMuClRoZSBldmVudHMgcHJvdmlkZWQgYXJlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYywgc28gd2UgcmVmZXIgdGhlIHJlYWRlciB0byB0aGUgaGFyZHdhcmUgbWFudWFscyBhdmFpbGFibGUgZm9yCnRoZSBwcm9jZXNzb3IgdHlwZSBiZWluZyB1c2VkLgo8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MSIgdGl0bGU9IjQuoEFwcGxpY2F0aW9ucyBvZiBPUHJvZmlsZSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIGlkPSJhcHBsaWNhdGlvbnMiPjwvYT40LqBBcHBsaWNhdGlvbnMgb2YgT1Byb2ZpbGU8L2gyPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHA+Ck9Qcm9maWxlIGlzIHVzZWZ1bCBpbiBhIG51bWJlciBvZiBzaXR1YXRpb25zLiBZb3UgbWlnaHQgd2FudCB0byB1c2UgT1Byb2ZpbGUgd2hlbiB5b3UgOgo8L3A+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtaXplZGxpc3QiPgogICAgICAgICAgICA8dWwgY2xhc3M9Iml0ZW1pemVkbGlzdCIgdHlwZT0iZGlzYyI+CiAgICAgICAgICAgICAgPGxpIGNsYXNzPSJsaXN0aXRlbSI+CiAgICAgICAgICAgICAgICA8cD5uZWVkIGxvdyBvdmVyaGVhZDwvcD4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgIDxsaSBjbGFzcz0ibGlzdGl0ZW0iPgogICAgICAgICAgICAgICAgPHA+Y2Fubm90IHVzZSBoaWdobHkgaW50cnVzaXZlIHByb2ZpbGluZyBtZXRob2RzPC9wPgogICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgPGxpIGNsYXNzPSJsaXN0aXRlbSI+CiAgICAgICAgICAgICAgICA8cD5uZWVkIHRvIHByb2ZpbGUgaW50ZXJydXB0IGhhbmRsZXJzPC9wPgogICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgPGxpIGNsYXNzPSJsaXN0aXRlbSI+CiAgICAgICAgICAgICAgICA8cD5uZWVkIHRvIHByb2ZpbGUgYW4gYXBwbGljYXRpb24gYW5kIGl0cyBzaGFyZWQgbGlicmFyaWVzPC9wPgogICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgPGxpIGNsYXNzPSJsaXN0aXRlbSI+CiAgICAgICAgICAgICAgICA8cD5uZWVkIHRvIHByb2ZpbGUgZHluYW1pY2FsbHkgY29tcGlsZWQgY29kZSBvZiBzdXBwb3J0ZWQgdmlydHVhbCBtYWNoaW5lcyAoc2VlIDxhIGNsYXNzPSJ4cmVmIiBocmVmPSIjaml0c3VwcG9ydCIgdGl0bGU9IjQuMS6gU3VwcG9ydCBmb3IgZHluYW1pY2FsbHkgY29tcGlsZWQgKEpJVCkgY29kZSI+U2VjdGlvbqA0LjEsICYjODIyMDtTdXBwb3J0IGZvciBkeW5hbWljYWxseSBjb21waWxlZCAoSklUKSBjb2RlJiM4MjIxOzwvYT4pPC9wPgogICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgPGxpIGNsYXNzPSJsaXN0aXRlbSI+CiAgICAgICAgICAgICAgICA8cD5uZWVkIHRvIGNhcHR1cmUgdGhlIHBlcmZvcm1hbmNlIGJlaGF2aW91ciBvZiBlbnRpcmUgc3lzdGVtPC9wPgogICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgPGxpIGNsYXNzPSJsaXN0aXRlbSI+CiAgICAgICAgICAgICAgICA8cD53YW50IHRvIGV4YW1pbmUgaGFyZHdhcmUgZWZmZWN0cyBzdWNoIGFzIGNhY2hlIG1pc3NlczwvcD4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgIDxsaSBjbGFzcz0ibGlzdGl0ZW0iPgogICAgICAgICAgICAgICAgPHA+d2FudCBkZXRhaWxlZCBzb3VyY2UgYW5ub3RhdGlvbjwvcD4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgIDxsaSBjbGFzcz0ibGlzdGl0ZW0iPgogICAgICAgICAgICAgICAgPHA+d2FudCBpbnN0cnVjdGlvbi1sZXZlbCBwcm9maWxlczwvcD4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgIDxsaSBjbGFzcz0ibGlzdGl0ZW0iPgogICAgICAgICAgICAgICAgPHA+d2FudCBjYWxsLWdyYXBoIHByb2ZpbGVzPC9wPgogICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgpPUHJvZmlsZSBpcyBub3QgYSBwYW5hY2VhLiBPUHJvZmlsZSBtaWdodCBub3QgYmUgYSBjb21wbGV0ZSBzb2x1dGlvbiB3aGVuIHlvdSA6CjwvcD4KICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW1pemVkbGlzdCI+CiAgICAgICAgICAgIDx1bCBjbGFzcz0iaXRlbWl6ZWRsaXN0IiB0eXBlPSJkaXNjIj4KICAgICAgICAgICAgICA8bGkgY2xhc3M9Imxpc3RpdGVtIj4KICAgICAgICAgICAgICAgIDxwPnJlcXVpcmUgY2FsbCBncmFwaCBwcm9maWxlcyBvbiBwbGF0Zm9ybXMgb3RoZXIgdGhhbiB4ODYsIEFSTSwgYW5kIFBvd2VyUEM8L3A+CiAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICA8bGkgY2xhc3M9Imxpc3RpdGVtIj4KICAgICAgICAgICAgICAgIDxwPnJlcXVpcmUgMTAwJSBpbnN0cnVjdGlvbi1hY2N1cmF0ZSBwcm9maWxlczwvcD4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgIDxsaSBjbGFzcz0ibGlzdGl0ZW0iPgogICAgICAgICAgICAgICAgPHA+bmVlZCBmdW5jdGlvbiBjYWxsIGNvdW50cyBvciBhbiBpbnRlcnN0aXRpYWwgcHJvZmlsaW5nIEFQSTwvcD4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgIDxsaSBjbGFzcz0ibGlzdGl0ZW0iPgogICAgICAgICAgICAgICAgPHA+Y2Fubm90IHRvbGVyYXRlIGFueSBkaXN0dXJiYW5jZSB0byB0aGUgc3lzdGVtIHdoYXRzb2V2ZXI8L3A+CiAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICA8bGkgY2xhc3M9Imxpc3RpdGVtIj4KICAgICAgICAgICAgICAgIDxwPm5lZWQgdG8gcHJvZmlsZSBpbnRlcnByZXRlZCBvciBkeW5hbWljYWxseSBjb21waWxlZCBjb2RlIG9mIG5vbi1zdXBwb3J0ZWQgdmlydHVhbCBtYWNoaW5lczwvcD4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgdGl0bGU9IjQuMS6gU3VwcG9ydCBmb3IgZHluYW1pY2FsbHkgY29tcGlsZWQgKEpJVCkgY29kZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJqaXRzdXBwb3J0Ij48L2E+NC4xLqBTdXBwb3J0IGZvciBkeW5hbWljYWxseSBjb21waWxlZCAoSklUKSBjb2RlPC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHA+Ck9sZGVyIHZlcnNpb25zIG9mIE9Qcm9maWxlIHdlcmUgbm90IGNhcGFibGUgb2YgYXR0cmlidXRpbmcgc2FtcGxlcyB0byBzeW1ib2xzIGZyb20gZHluYW1pY2FsbHkKY29tcGlsZWQgY29kZSwgaS5lLiAianVzdC1pbi10aW1lIChKSVQpIGNvZGUiLiBUeXBpY2FsIEpJVCBjb21waWxlcnMgbG9hZCB0aGUgSklUIGNvZGUgaW50bwphbm9ueW1vdXMgbWVtb3J5IHJlZ2lvbnMuIE9Qcm9maWxlIHJlcG9ydGVkIHRoZSBzYW1wbGVzIGZyb20gc3VjaCBjb2RlLCBidXQgdGhlIGF0dHJpYnV0aW9uCnByb3ZpZGVkIHdhcyBzaW1wbHk6CjwvcD4KICAgICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+ICAgICBhbm9uOiAmbHQ7dGdpZCZndDsmbHQ7YWRkcmVzcyByYW5nZSZndDs8L3ByZT4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPHA+CkR1ZSB0byB0aGlzIGxpbWl0YXRpb24sIGl0IHdhc24ndCBwb3NzaWJsZSB0byBwcm9maWxlIGFwcGxpY2F0aW9ucyBleGVjdXRlZCBieSB2aXJ0dWFsIG1hY2hpbmVzIChWTXMpCmxpa2UgdGhlIEphdmEgVmlydHVhbCBNYWNoaW5lLiBPUHJvZmlsZSBub3cgY29udGFpbnMgYW4gaW5mcmFzdHJ1Y3R1cmUgdG8gc3VwcG9ydCBKSVRlZCBjb2RlLgpBIGRldmVsb3BtZW50IGxpYnJhcnkgaXMgcHJvdmlkZWQgdG8gYWxsb3cgZGV2ZWxvcGVycwp0byBhZGQgc3VwcG9ydCBmb3IgYW55IFZNIHRoYXQgcHJvZHVjZXMgZHluYW1pY2FsbHkgY29tcGlsZWQgY29kZSAoc2VlIHRoZSA8c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT5PUHJvZmlsZSBKSVQgYWdlbnQKZGV2ZWxvcGVyIGd1aWRlPC9lbT48L3NwYW4+KS4KSW4gYWRkaXRpb24sIGJ1aWx0LWluIHN1cHBvcnQgaXMgaW5jbHVkZWQgZm9yIHRoZSBmb2xsb3dpbmc6PC9wPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtaXplZGxpc3QiPgogICAgICAgICAgICAgIDx1bCBjbGFzcz0iaXRlbWl6ZWRsaXN0IiB0eXBlPSJkaXNjIj4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ibGlzdGl0ZW0iPkpWTVRJIGFnZW50IGxpYnJhcnkgZm9yIEphdmEgKDEuNSBhbmQgaGlnaGVyKTwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Imxpc3RpdGVtIj5KVk1QSSBhZ2VudCBsaWJyYXJ5IGZvciBKYXZhICgxLjUgYW5kIGxvd2VyKTwvbGk+CiAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwPgpGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSBPUHJvZmlsZSdzIEpJVCBzdXBwb3J0LCBzZWUgPGEgY2xhc3M9InhyZWYiIGhyZWY9IiNzZXR1cC1qaXQiIHRpdGxlPSIzLqBTZXR0aW5nIHVwIHRoZSBKSVQgcHJvZmlsaW5nIGZlYXR1cmUiPlNlY3Rpb26gMywgJiM4MjIwO1NldHRpbmcgdXAgdGhlIEpJVCBwcm9maWxpbmcgZmVhdHVyZSYjODIyMTs8L2E+Lgo8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QyIiB0aXRsZT0iNC4yLqBObyBzdXBwb3J0IGZvciB2aXJ0dWFsIG1hY2hpbmUgZ3Vlc3RzIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9Imd1ZXN0c3VwcG9ydCI+PC9hPjQuMi6gTm8gc3VwcG9ydCBmb3IgdmlydHVhbCBtYWNoaW5lIGd1ZXN0czwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwPgpPUHJvZmlsZSBjdXJyZW50bHkgZG9lcyBub3Qgc3VwcG9ydCBldmVudC1iYXNlZCBwcm9maWxpbmcgKGkuZSwgdXNpbmcgaGFyZHdhcmUgZXZlbnRzIGxpa2UgY2FjaGUgbWlzc2VzLApicmFuY2ggbWlzcHJlZGljdHMpIG9uIHZpcnR1YWwgbWFjaGluZSBndWVzdHMgcnVubmluZyB1bmRlciBzeXN0ZW1zIHN1Y2ggYXMgVk13YXJlLiAgVGhlIGxpc3Qgb2YKc3VwcG9ydGVkIGV2ZW50cyBkaXNwbGF5ZWQgYnkgb3BoZWxwIG9yICdvcGNvbnRyb2wgLS1saXN0LWV2ZW50cycgaXMgYmFzZWQgb24gQ1BVIHR5cGUgYW5kIGRvZXMKbm90IHRha2UgaW50byBhY2NvdW50IHdoZXRoZXIgdGhlIHJ1bm5pbmcgc3lzdGVtIGlzIGEgZ3Vlc3Qgc3lzdGVtIG9yIHJlYWwgc3lzdGVtLiAgVG8gdXNlCk9Qcm9maWxlIG9uIHN1Y2ggZ3Vlc3Qgc3lzdGVtcywgeW91IGNhbiB1c2UgdGltZXIgbW9kZSAoc2VlIDxhIGNsYXNzPSJ4cmVmIiBocmVmPSIjdGltZXIiIHRpdGxlPSI1LjIuoE9Qcm9maWxlIGluIHRpbWVyIGludGVycnVwdCBtb2RlIj5TZWN0aW9uoDUuMiwgJiM4MjIwO09Qcm9maWxlIGluIHRpbWVyIGludGVycnVwdCBtb2RlJiM4MjIxOzwvYT4pLgo8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MSIgdGl0bGU9IjUuoFN5c3RlbSByZXF1aXJlbWVudHMiPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBpZD0icmVxdWlyZW1lbnRzIj48L2E+NS6gU3lzdGVtIHJlcXVpcmVtZW50czwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPkxpbnV4IGtlcm5lbDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCQlUbyB1c2UgT1Byb2ZpbGUncyBKSVQgc3VwcG9ydCwgYSBrZXJuZWwgdmVyc2lvbiAyLjYuMTMgb3IgbGF0ZXIgaXMgcmVxdWlyZWQuCgkJCUluIGVhcmxpZXIga2VybmVsIHZlcnNpb25zLCB0aGUgYW5vbnltb3VzIG1lbW9yeSByZWdpb25zIGFyZSBub3QgcmVwb3J0ZWQgdG8gT1Byb2ZpbGUgYW5kIHJlc3VsdHMKCQkJaW4gcHJvZmlsaW5nIHJlcG9ydHMgd2l0aG91dCBhbnkgc2FtcGxlcyBpbiB0aGVzZSByZWdpb25zLgoJCQk8L3A+CiAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICAgICBQcm9maWxpbmcgdGhlIENlbGwgQnJvYWRiYW5kIEVuZ2luZSBQb3dlclBDIFByb2Nlc3NpbmcgRWxlbWVudCAoUFBFKSByZXF1aXJlcyBhIGtlcm5lbCB2ZXJzaW9uCiAgICAgICAgICAgICAgICAgICAgICAgb2YgMi42LjE4IG9yIG1vcmUgcmVjZW50LgogICAgICAgICAgICAgICAgICAgICAgIFByb2ZpbGluZyB0aGUgQ2VsbCBCcm9hZGJhbmQgRW5naW5lIFN5bmVyZ2lzdGljIFByb2Nlc3NpbmcgRWxlbWVudCAoU1BFKSByZXF1aXJlcyBhIGtlcm5lbCB2ZXJzaW9uCiAgICAgICAgICAgICAgICAgICAgICAgb2YgMi42LjIyIG9yIG1vcmUgcmVjZW50LiAgQWRkaXRpb25hbGx5LCBmdWxsIHN1cHBvcnQgb2YgU1BFIHByb2ZpbGluZyByZXF1aXJlcyBhIEJGRCBsaWJyYXJ5CiAgICAgICAgICAgICAgICAgICAgICAgZnJvbSBiaW51dGlscyBjb2RlIGRhdGVkIEphbnVhcnkgMjAwNyBvciBsYXRlci4gIFRvIGVuc3VyZSB0aGUgcHJvcGVyIEJGRCBzdXBwb3J0IGV4aXN0cywgcnVuCiAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxjb2RlIGNsYXNzPSJjb2RlIj5jb25maWd1cmU8L2NvZGU+IHV0aWxpdHkgd2l0aCA8Y29kZSBjbGFzcz0iY29kZSI+LS13aXRoLXRhcmdldD1jZWxsLWJlPC9jb2RlPi4KCgkJICAgICAgIFByb2ZpbGluZyB0aGUgQ2VsbCBCcm9hZGJhbmQgRW5naW5lIHVzaW5nIFNQVSBldmVudHMgcmVxdWlyZXMgYSBrZXJuZWwgdmVyc2lvbiBvZiAyLjYuMjktcmMxCgkJICAgICAgIG9yICBtb3JlIHJlY2VudC4KCiAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibm90ZSIgdGl0bGU9Ik5vdGUiIHN0eWxlPSJtYXJnaW4tbGVmdDogMC41aW47IG1hcmdpbi1yaWdodDogMC41aW47Ij48aDMgY2xhc3M9InRpdGxlIj5Ob3RlPC9oMz5BdHRlbXB0aW5nIHRvIHByb2ZpbGUgU1BFcyB3aXRoIGtlcm5lbCB2ZXJzaW9ucyBvbGRlciB0aGFuIDIuNi4yMiBtYXkgY2F1c2UgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIHRvIGNyYXNoLjwvZGl2PgogICAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPHA+CgkJCUluc3RydWN0aW9uLUJhc2VkIFNhbXBsaW5nIChJQlMpIHByb2ZpbGUgb24gQU1EIGZhbWlseTEwaCBwcm9jZXNzb3JzIHJlcXVpcmVzIAoJCQlrZXJuZWwgdmVyc2lvbiAyLjYuMjgtcmMyIG9yIGxhdGVyLgoJCQk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+U3VwcG9ydGVkIGFyY2hpdGVjdHVyZTwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCQlGb3IgSW50ZWwgSUEzMiwgcHJvY2Vzc29ycyBhcyBvbGQgYXMgUDYgZ2VuZXJhdGlvbiBvciBQZW50aXVtIDQgY29yZSBhcmUKCQkJc3VwcG9ydGVkLiAgVGhlIEFNRCBBdGhsb24sIE9wdGVyb24sIFBoZW5vbSwgYW5kIFR1cmlvbiBDUFVzIGFyZSBhbHNvIHN1cHBvcnRlZC4KCQkJT2xkZXIgSUEzMiBDUFUgdHlwZXMgY2FuIGJlIHVzZWQgd2l0aCB0aGUgdGltZXIgbW9kZSBvZiBPUHJvZmlsZTsgcGxlYXNlCgkJCXNlZSBsYXRlciBpbiB0aGlzIG1hbnVhbCBmb3IgZGV0YWlscy4gIE9Qcm9maWxlIGFsc28gc3VwcG9ydHMgbW9zdCBwcm9jZXNzb3IKCQkJdHlwZXMgb2YgdGhlIGZvbGxvd2luZyBhcmNoaXRlY3R1cmVzOiAgQWxwaGEsIE1JUFMsIEFSTSwgeDg2LTY0LCBzcGFyYzY0LCBQb3dlclBDLAoJCQlBVlIzMiwgYW5kLCBpbiB0aW1lciBtb2RlLCBQQS1SSVNDIGFuZCBzMzkwLgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj5Vbmlwcm9jZXNzb3Igb3IgU01QPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJCVNNUCBtYWNoaW5lcyBhcmUgZnVsbHkgc3VwcG9ydGVkLgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj5SZXF1aXJlZCBsaWJyYXJpZXM8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8cD4KCQkJVGhlc2UgbGlicmFyaWVzIGFyZSByZXF1aXJlZCA6IDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+cG9wdDwvY29kZT4sIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+YmZkPC9jb2RlPiwKCQkJPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5saWJlcnR5PC9jb2RlPiAoZGViaWFuIHVzZXJzOiBsaWJpYmVydHkgaXMgcHJvdmlkZWQgaW4gYmludXRpbHMtZGV2IHBhY2thZ2UpLCA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPmRsPC9jb2RlPiwKCQkJcGx1cyB0aGUgc3RhbmRhcmQgQysrIGxpYnJhcmllcy4KCQk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+UmVxdWlyZWQga2VybmVsIGhlYWRlcnM8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8cD4KCQkJSW4gb3JkZXIgdG8gYnVpbGQgdGhlIHBlcmZfZXZlbnRzLWVuYWJsZWQgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3BlcmY8L3N0cm9uZz48L3NwYW4+IHByb2dyYW0sIHlvdSBuZWVkIHRvIGVpdGhlcgoJCQlpbnN0YWxsIHRoZSBrZXJuZWwtaGVhZGVycyBwYWNrYWdlIGZvciB5b3VyIHN5c3RlbSBvciB1c2UgdGhlIDxjb2RlIGNsYXNzPSJjb2RlIj4tLXdpdGgta2VybmVsPC9jb2RlPgoJCQljb25maWd1cmUgb3B0aW9uLgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj5SZXF1aXJlZCB1c2VyIGFjY291bnQ8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8cD4KCQkJRm9yIHNlY3VyZSBwcm9jZXNzaW5nIG9mIHNhbXBsZSBkYXRhIGZyb20gSklUIHZpcnR1YWwgbWFjaGluZXMgKGUuZy4sIEphdmEpLAoJCQl0aGUgc3BlY2lhbCB1c2VyIGFjY291bnQgIm9wcm9maWxlIiBtdXN0IGV4aXN0IG9uIHRoZSBzeXN0ZW0uICBUaGUgJ2NvbmZpZ3VyZScKCQkJYW5kICdtYWtlIGluc3RhbGwnIG9wZXJhdGlvbnMgd2lsbCBwcmludCB3YXJuaW5nIG1lc3NhZ2VzIGlmIHRoaXMKCQkJYWNjb3VudCBpcyBub3QgZm91bmQuICBJZiB5b3UgaW50ZW5kIHRvIHByb2ZpbGUgSklUZWQgY29kZSwgeW91IG11c3QgY3JlYXRlCgkJCWEgZ3JvdXAgYWNjb3VudCBuYW1lZCAnb3Byb2ZpbGUnIGFuZCB0aGVuIGNyZWF0ZSB0aGUgJ29wcm9maWxlJyB1c2VyIGFjY291bnQsCgkJCXNldHRpbmcgdGhlIGRlZmF1bHQgZ3JvdXAgdG8gJ29wcm9maWxlJy4gIEEgcnVudGltZSBlcnJvciBtZXNzYWdlIGlzIHByaW50ZWQgdG8KCQkJdGhlIG9wcm9maWxlIGxvZyB3aGVuIHByb2Nlc3NpbmcgSklUIHNhbXBsZXMgaWYgdGhpcyBzcGVjaWFsIHVzZXIKCQkJYWNjb3VudCBjYW5ub3QgYmUgZm91bmQuCgkJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPk9Qcm9maWxlIEdVSTwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCQlUaGUgdXNlIG9mIHRoZSBHVUkgdG8gc3RhcnQgdGhlIHByb2ZpbGVyIHJlcXVpcmVzIHRoZSA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPlF0PC9jb2RlPiBsaWJyYXJ5LgoJCQlFaXRoZXIgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5RdCAzPC9jb2RlPiBvciA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPlF0IDQ8L2NvZGU+IHNob3VsZCB3b3JrLgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgPGFjcm9ueW0gY2xhc3M9ImFjcm9ueW0iPkVMRjwvYWNyb255bT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCQlQcm9iYWJseSBub3QgdG9vIHN0cmVudW91cyBhIHJlcXVpcmVtZW50LCBidXQgb2xkZXIgPGFjcm9ueW0gY2xhc3M9ImFjcm9ueW0iPkEuT1VUPC9hY3JvbnltPiBiaW5hcmllcy9saWJyYXJpZXMgYXJlIG5vdCBzdXBwb3J0ZWQuCgkJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPksmYW1wO1IgY29kaW5nIHN0eWxlPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJCU9LLCBzbyBpdCdzIG5vdCByZWFsbHkgYSByZXF1aXJlbWVudCwgYnV0IEkgd2lzaCBpdCB3YXMuLi4KCQk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgPC9kbD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY3QxIiB0aXRsZT0iNi6gSW50ZXJuZXQgcmVzb3VyY2VzIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+PGEgaWQ9InJlc291cmNlcyI+PC9hPjYuoEludGVybmV0IHJlc291cmNlczwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPldlYiBwYWdlPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJCVRoZXJlIGlzIGEgd2ViIHBhZ2UgKHdoaWNoIHlvdSBtYXkgYmUgcmVhZGluZyBub3cpIGF0CgkJCTxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL29wcm9maWxlLnNmLm5ldC8iPmh0dHA6Ly9vcHJvZmlsZS5zZi5uZXQvPC9hPi4KCQk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+RG93bmxvYWQ8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8cD4KCQkJWW91IGNhbiBkb3dubG9hZCBhIHNvdXJjZSB0YXJiYWxsIG9yIGNoZWNrIG91dCBjb2RlIGZyb20KCQkJdGhlIGNvZGUgcmVwb3NpdG9yeSBhdCB0aGUgc291cmNlZm9yZ2UgcGFnZSwKCQkJPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vc2YubmV0L3Byb2plY3RzL29wcm9maWxlLyI+aHR0cDovL3NmLm5ldC9wcm9qZWN0cy9vcHJvZmlsZS88L2E+LgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj5NYWlsaW5nIGxpc3Q8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8cD4KCQkJVGhlcmUgaXMgYSBsb3ctdHJhZmZpYyBPUHJvZmlsZS1zcGVjaWZpYyBtYWlsaW5nIGxpc3QsIGRldGFpbHMgYXQKCQkJPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vc2YubmV0L21haWwvP2dyb3VwX2lkPTE2MTkxIj5odHRwOi8vc2YubmV0L21haWwvP2dyb3VwX2lkPTE2MTkxPC9hPi4KCQk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+QnVnIHRyYWNrZXI8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8cD4KCQkJVGhlcmUgaXMgYSBidWcgdHJhY2tlciBmb3IgT1Byb2ZpbGUgYXQgU291cmNlRm9yZ2UsCgkJCTxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3NmLm5ldC90cmFja2VyLz9ncm91cF9pZD0xNjE5MSZhbXA7YXRpZD0xMTYxOTEiPmh0dHA6Ly9zZi5uZXQvdHJhY2tlci8/Z3JvdXBfaWQ9MTYxOTEmYW1wO2F0aWQ9MTE2MTkxPC9hPi4KCQk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+SVJDIGNoYW5uZWw8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8cD4KCQkJU2V2ZXJhbCBPUHJvZmlsZSBkZXZlbG9wZXJzIGFuZCB1c2VycyBzb21ldGltZXMgaGFuZyBvdXQgb24gY2hhbm5lbCA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz4jb3Byb2ZpbGU8L3N0cm9uZz48L3NwYW4+CgkJCW9uIHRoZSA8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly9vZnRjLm5ldCI+T0ZUQzwvYT4gbmV0d29yay4gCgkJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MSIgdGl0bGU9IjcuoEluc3RhbGxhdGlvbiI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIGlkPSJpbnN0YWxsIj48L2E+Ny6gSW5zdGFsbGF0aW9uPC9oMj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgpGaXJzdCB5b3UgbmVlZCB0byBidWlsZCBPUHJvZmlsZSBhbmQgaW5zdGFsbCBpdC4gPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+Li9jb25maWd1cmU8L3N0cm9uZz48L3NwYW4+LCA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5tYWtlPC9zdHJvbmc+PC9zcGFuPiwgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+bWFrZSBpbnN0YWxsPC9zdHJvbmc+PC9zcGFuPgppcyBvZnRlbiBhbGwgeW91IG5lZWQsIGJ1dCBub3RlIHRoZXNlIGFyZ3VtZW50cyB0byA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz4uL2NvbmZpZ3VyZTwvc3Ryb25nPjwvc3Bhbj4gOgo8L3A+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXdpdGgtamF2YTwvY29kZT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCQlVc2UgdGhpcyBvcHRpb24gaWYgeW91IG5lZWQgdG8gcHJvZmlsZSBKYXZhIGFwcGxpY2F0aW9ucy4gIEFsc28sIHNlZQoJCQk8YSBjbGFzcz0ieHJlZiIgaHJlZj0iI3JlcXVpcmVtZW50cyIgdGl0bGU9IjUuoFN5c3RlbSByZXF1aXJlbWVudHMiPlNlY3Rpb26gNSwgJiM4MjIwO1N5c3RlbSByZXF1aXJlbWVudHMmIzgyMjE7PC9hPiwgIlJlcXVpcmVkIHVzZXIgYWNjb3VudCIuICBUaGlzIG9wdGlvbgoJCQlpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIGxvY2F0aW9uIG9mIHRoZSBKYXZhIERldmVsb3BtZW50IEtpdCAoSkRLKQoJCQlzb3VyY2UgdHJlZSB5b3Ugd2lzaCB0byB1c2UuIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGdldCB0aGUgaW50ZXJmYWNlIGRlc2NyaXB0aW9uCgkJCW9mIHRoZSBKVk1QSSAob3IgSlZNVEkpIGludGVyZmFjZSB0byBjb21waWxlIHRoZSBKSVQgc3VwcG9ydCBjb2RlIHN1Y2Nlc3NmdWxseS4KCQkJPC9wPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibm90ZSIgdGl0bGU9Ik5vdGUiIHN0eWxlPSJtYXJnaW4tbGVmdDogMC41aW47IG1hcmdpbi1yaWdodDogMC41aW47Ij4KICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+Tm90ZTwvaDM+CiAgICAgICAgICAgICAgICAgIDxwPgoJCQkJVGhlIEphdmEgUnVudGltZSBFbnZpcm9ubWVudCAoSlJFKSBkb2VzIG5vdCBpbmNsdWRlIHRoZSBkZXZlbG9wbWVudAoJCQkJZmlsZXMgdGhhdCBhcmUgcmVxdWlyZWQgdG8gY29tcGlsZSB0aGUgSklUIHN1cHBvcnQgY29kZSwgc28gdGhlIGZ1bGwKCQkJCUpESyBtdXN0IGJlIGluc3RhbGxlZCBpbiBvcmRlciB0byB1c2UgdGhpcyBvcHRpb24uCgkJCQk8L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxwPgoJCQlCeSBkZWZhdWx0LCB0aGUgT3Byb2ZpbGUgSklUIHN1cHBvcnQgbGlicmFyaWVzIHdpbGwgYmUgaW5zdGFsbGVkIGluCgkJCTxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+Jmx0O29wcm9mX2luc3RhbGxfZGlyJmd0Oy9saWIvb3Byb2ZpbGU8L2NvZGU+LiAgVG8gYnVpbGQKCQkJYW5kIGluc3RhbGwgT1Byb2ZpbGUgYW5kIHRoZSBKSVQgc3VwcG9ydCBsaWJyYXJpZXMgYXMgNjQtYml0LCB5b3UgY2FuCgkJCWRvIHNvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmc6CgkJCTwvcD4KICAgICAgICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPgoJCQkjIENGTEFHUz0iLW02NCIgQ1hYRkxBR1M9Ii1tNjQiIC4vY29uZmlndXJlIFwKCQkJLS13aXRoLWphdmE9e215X2pka19pbnN0YWxsZGlyfSBcCgkJCS0tbGliZGlyPS91c3IvbG9jYWwvbGliNjQKCQkJPC9wcmU+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICA8cD4KCQkJPC9wPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibm90ZSIgdGl0bGU9Ik5vdGUiIHN0eWxlPSJtYXJnaW4tbGVmdDogMC41aW47IG1hcmdpbi1yaWdodDogMC41aW47Ij4KICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+Tm90ZTwvaDM+CiAgICAgICAgICAgICAgICAgIDxwPgoJCQkJSWYgeW91IGVuY291bnRlciBlcnJvcnMgYnVpbGRpbmcgNjQtYml0LCB5b3Ugc2hvdWxkCgkJCQlpbnN0YWxsIGxpYnRvb2wgMS41LjI2IG9yIGxhdGVyIHNpbmNlIHRoYXQgcmVsZWFzZSBvZgoJCQkJbGlidG9vbCBmaXhlcyBrbm93biBwcm9ibGVtcyBmb3IgY2VydGFpbiBwbGF0Zm9ybXMuCgkJCQlJZiB5b3UgaW5zdGFsbCBsaWJ0b29sIGludG8gYSBub24tc3RhbmRhcmQgbG9jYXRpb24sCgkJCQl5b3UnbGwgbmVlZCB0byBlZGl0IHRoZSBpbnZvY2F0aW9uIG9mICdhY2xvY2FsJyBpbgoJCQkJT1Byb2ZpbGUncyBhdXRvZ2VuLnNoIGFzIGZvbGxvd3MgKGFzc3VtZSBhbiBpbnN0YWxsCgkJCQlsb2NhdGlvbiBvZiAvdXNyL2xvY2FsKToKCQkJCTwvcD4KICAgICAgICAgICAgICAgICAgPHA+CgkJCQk8Y29kZSBjbGFzcz0iY29kZSI+YWNsb2NhbCAtSSBtNCAtSSAvdXNyL2xvY2FsL3NoYXJlL2FjbG9jYWw8L2NvZGU+CgkJCQk8L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS13aXRoLXF0LWRpci9pbmNsdWRlcy9saWJyYXJpZXM8L2NvZGU+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8cD4KCQkJU3BlY2lmeSB0aGUgbG9jYXRpb24gb2YgUXQgaGVhZGVycyBhbmQgbGlicmFyaWVzLiBJdCBkZWZhdWx0cyB0byBzZWFyY2hpbmcgaW4KCQkJPGNvZGUgY2xhc3M9ImNvbnN0YW50Ij4kUVRESVI8L2NvZGU+IGlmIHRoZXNlIGFyZSBub3Qgc3BlY2lmaWVkLgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxhIGlkPSJkaXNhYmxlLXdlcnJvciI+PC9hPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWRpc2FibGUtd2Vycm9yPC9jb2RlPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJCURldmVsb3BtZW50IHZlcnNpb25zIG9mIE9Qcm9maWxlIGJ1aWxkIGJ5CgkJCWRlZmF1bHQgd2l0aCA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tV2Vycm9yPC9jb2RlPi4gVGhpcyBvcHRpb24gdHVybnMKCQkJPGNvZGUgY2xhc3M9Im9wdGlvbiI+LVdlcnJvcjwvY29kZT4gb2ZmLgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxhIGlkPSJkaXNhYmxlLW9wdGltaXphdGlvbiI+PC9hPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWRpc2FibGUtb3B0aW1pemF0aW9uPC9jb2RlPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJCURpc2FibGUgdGhlIDxjb2RlIGNsYXNzPSJvcHRpb24iPi1PMjwvY29kZT4gY29tcGlsZXIgZmxhZwoJCQkodXNlZnVsIGlmIHlvdSBkaXNjb3ZlciBhbiBPUHJvZmlsZSBidWcgYW5kIHdhbnQgdG8gZ2l2ZSBhIHVzZWZ1bAoJCQliYWNrLXRyYWNlIGV0Yy4pCgkJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPGEgaWQ9IndpdGgta2VybmVsIj48L2E+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0td2l0aC1rZXJuZWw8L2NvZGU+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8cD4KCQkJVGhpcyBvcHRpb24gaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBsb2NhdGlvbiBvZiB0aGUga2VybmVsIGhlYWRlcnMgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5pbmNsdWRlPC9jb2RlPiBkaXJlY3RvcnkKCQkJbmVlZGVkIHRvIGJ1aWxkIHRoZSBwZXJmX2V2ZW50cy1lbmFibGVkIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wZXJmPC9zdHJvbmc+PC9zcGFuPiBwcm9ncmFtLiBCeSBkZWZhdWx0LCB0aGUgT1Byb2ZpbGUKCQkJYnVpbGQgc3lzdGVtIGV4cGVjdHMgdG8gZmluZCB0aGlzIGRpcmVjdG9yeSB1bmRlciA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPi91c3I8L2NvZGU+LiBVc2UgdGhpcyBvcHRpb24gaWYgeW91cgoJCQlrZXJuZWwgaGVhZGVycyBhcmUgaW4gYSBub24tc3RhbmRhcmQgbG9jYXRpb24gb3IgaWYgYnVpbGRpbmcgaW4gYSBjcm9zcy1jb21waWxlIGVudmlyb21lbnQgb3IgaW4gYQoJCQlzaXR1YXRpb24gd2hlcmUgdGhlIGhvc3Qgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgcGVyZl9ldmVudHMgYnV0IHlvdSB3aXNoIHRvIGJ1aWxkIGJpbmFyaWVzIGZvciBhCgkJCXRhcmdldCBzeXN0ZW0gdGhhdCBkb2VzIHN1cHBvcnQgcGVyZl9ldmVudHMuCgkJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgpJdCBpcyByZWNvbW1lbmRlZCB0aGF0IGlmIHlvdSBoYXZlIGEKdW5pcHJvY2Vzc29yIG1hY2hpbmUsIHlvdSBlbmFibGUgdGhlIGxvY2FsIEFQSUMgLyBJT19BUElDIHN1cHBvcnQgZm9yCnlvdXIga2VybmVsICh0aGlzIGlzIGF1dG9tYXRpY2FsbHkgZW5hYmxlZCBmb3IgU01QIGtlcm5lbHMpLiBXaXRoIG1hbnkgQklPUyAoa2VybmVsICZndDs9IDIuNi45IGFuZCBVUCBrZXJuZWwpCml0J3Mgbm90IHN1ZmZpY2llbnQgdG8gZW5hYmxlIHRoZSBsb2NhbCBBUElDIC0tIHlvdSBtdXN0IGFsc28gdHVybiBpdCBvbiBleHBsaWNpdGx5IGF0IGJvb3QKdGltZSBieSBwcm92aWRpbmcgdGhlICJsYXBpYyIgb3B0aW9uIHRvIHRoZSBrZXJuZWwuCklmIHlvdSB1c2UgdGhlIE5NSSB3YXRjaGRvZywgYmUgYXdhcmUgdGhhdCB0aGUgd2F0Y2hkb2cgaXMgZGlzYWJsZWQgd2hlbiBwcm9maWxpbmcgc3RhcnRzCmFuZCBub3QgcmUtZW5hYmxlZCB1bnRpbCB0aGUgcHJvZmlsaW5nIGlzIHN0b3BwZWQuCjwvcD4KICAgICAgICAgIDxwPgpQbGVhc2Ugbm90ZSB0aGF0IHlvdSBtdXN0IHNhdmUgb3IgaGF2ZSBhdmFpbGFibGUgdGhlIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+dm1saW51eDwvY29kZT4gZmlsZQpnZW5lcmF0ZWQgZHVyaW5nIGEga2VybmVsIGNvbXBpbGUsIGFzIE9Qcm9maWxlIG5lZWRzIGl0ICh5b3UgY2FuIHVzZQo8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLW5vLXZtbGludXg8L2NvZGU+LCBidXQgdGhpcyB3aWxsIHByZXZlbnQga2VybmVsIHByb2ZpbGluZykuCjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MSIgdGl0bGU9IjguoFVuaW5zdGFsbGluZyBPUHJvZmlsZSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIGlkPSJ1bmluc3RhbGwiPjwvYT44LqBVbmluc3RhbGxpbmcgT1Byb2ZpbGU8L2gyPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHA+CllvdSBtdXN0IGhhdmUgdGhlIHNvdXJjZSB0cmVlIGF2YWlsYWJsZSB0byB1bmluc3RhbGwgT1Byb2ZpbGU7IGEgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+bWFrZSB1bmluc3RhbGw8L3N0cm9uZz48L3NwYW4+IHdpbGwKcmVtb3ZlIGFsbCBpbnN0YWxsZWQgZmlsZXMgZXhjZXB0IHlvdXIgY29uZmlndXJhdGlvbiBmaWxlIGluIHRoZSBkaXJlY3RvcnkgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5+Ly5vcHJvZmlsZTwvY29kZT4uCjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNoYXB0ZXIiIHRpdGxlPSJDaGFwdGVyoDIuoE92ZXJ2aWV3Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIj48YSBpZD0ib3ZlcnZpZXciPjwvYT5DaGFwdGVyoDIuoE92ZXJ2aWV3PC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0b2MiPgogICAgICAgICAgPHA+CiAgICAgICAgICAgIDxiPlRhYmxlIG9mIENvbnRlbnRzPC9iPgogICAgICAgICAgPC9wPgogICAgICAgICAgPGRsPgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnZXR0aW5nLXN0YXJ0ZWQtd2l0aC1vcGVyZiI+MS4gR2V0dGluZyBzdGFydGVkIHdpdGggT1Byb2ZpbGUgdXNpbmcgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3BlcmY8L3N0cm9uZz48L3NwYW4+PC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ2V0dGluZy1zdGFydGVkLXdpdGgtbGVnYWN5Ij4yLiBHZXR0aW5nIHN0YXJ0ZWQgd2l0aCBPUHJvZmlsZSB1c2luZyBsZWdhY3kgcHJvZmlsaW5nIG1vZGU8L2E+CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2R0PgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnZXR0aW5nLXN0YXJ0ZWQtd2l0aC1vY291bnQiPjMuIEdldHRpbmcgc3RhcnRlZCB3aXRoIE9Qcm9maWxlIHVzaW5nIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9jb3VudDwvc3Ryb25nPjwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2R0PgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNldmVudHNwZWMiPjQuIFNwZWNpZnlpbmcgcGVyZm9ybWFuY2UgY291bnRlciBldmVudHM8L2E+CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2R0PgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiN0b29scy1vdmVydmlldyI+NS4gVG9vbHMgc3VtbWFyeTwvYT4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICA8L2RsPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY3QxIiB0aXRsZT0iMS6gR2V0dGluZyBzdGFydGVkIHdpdGggT1Byb2ZpbGUgdXNpbmcgb3BlcmYiPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBpZD0iZ2V0dGluZy1zdGFydGVkLXdpdGgtb3BlcmYiPjwvYT4xLqBHZXR0aW5nIHN0YXJ0ZWQgd2l0aCBPUHJvZmlsZSB1c2luZyA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGVyZjwvc3Ryb25nPjwvc3Bhbj48L2gyPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHA+ClByb2ZpbGluZyB3aXRoIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wZXJmPC9zdHJvbmc+PC9zcGFuPiBpcyB0aGUgcmVjb21tZW5kZWQgcHJvZmlsaW5nIG1vZGUgd2l0aCBPUHJvZmlsZS4gVXNpbmcKdGhpcyBtb2RlIG5vdCBvbmx5IGFsbG93cyB5b3UgdG8gdGFyZ2V0IHlvdXIgcHJvZmlsaW5nIG1vcmUgcHJlY2lzZWx5IChpLmUuLCBzaW5nbGUgcHJvY2VzcwpvciBzeXN0ZW0td2lkZSksIGl0IGFsc28gYWxsb3dzIE9Qcm9maWxlIHRvIGNvLWV4aXN0IGJldHRlciB3aXRoIG90aGVyIHRvb2xzIG9uIHlvdXIgc3lzdGVtIHRoYXQKbWF5IGFsc28gYmUgdXNpbmcgdGhlIHBlcmZfZXZlbnRzIGtlcm5lbCBzdWJzeXN0ZW0uCjwvcD4KICAgICAgICAgIDxwPgpXaXRoIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wZXJmPC9zdHJvbmc+PC9zcGFuPiwgdGhlcmUgaXMgbm8gaW5pdGlhbCBzZXR1cCBuZWVkZWQgLS0gc2ltcGx5IGludm9rZSA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGVyZjwvc3Ryb25nPjwvc3Bhbj4gd2l0aAp0aGUgb3B0aW9ucyB5b3UgbmVlZDsgdGhlbiBydW4gdGhlIE9Qcm9maWxlIHBvc3QtcHJvY2Vzc2luZyB0b29sKHMpLiBUaGUgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3BlcmY8L3N0cm9uZz48L3NwYW4+IHN5bnRheAppcyBhcyBmb2xsb3dzOgo8L3A+CiAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj5vcGVyZiBbIG9wdGlvbnMgXSBbIC0tc3lzdGVtLXdpZGUgfCAtLXBpZD0mbHQ7UElEJmd0OyB8IFsgY29tbWFuZCBbIGFyZ3MgXSBdIF08L3ByZT4KICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgPC90YWJsZT4KICAgICAgICAgIDxwPgpBIHR5cGljYWwgdXNhZ2UgbWlnaHQgbG9vayBsaWtlIHRoaXM6CjwvcD4KICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPm9wZXJmIC4vbXlfdGVzdF9wcm9ncmFtIG15X2FyZzwvcHJlPgogICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgPHA+CldoZW4gPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4uL215X3Rlc3RfcHJvZ3JhbTwvY29kZT4gY29tcGxldGVzIChvciB3aGVuIHlvdSBwcmVzcyBDdHJsLUMpLCBwcm9maWxpbmcKc3RvcHMgYW5kIHlvdSdyZSByZWFkeSB0byB1c2UgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3ByZXBvcnQ8L3N0cm9uZz48L3NwYW4+IG9yIG90aGVyIE9Qcm9maWxlIHBvc3QtcHJvY2Vzc2luZyB0b29scy4KQnkgZGVmYXVsdCwgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3BlcmY8L3N0cm9uZz48L3NwYW4+IHN0b3JlcyB0aGUgc2FtcGxlIGRhdGEgaW4gPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4mbHQ7Y3VyX2RpciZndDsvb3Byb2ZpbGVfZGF0YS9zYW1wbGVzL2N1cnJlbnQ8L2NvZGU+LAphbmQgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3ByZXBvcnQ8L3N0cm9uZz48L3NwYW4+IGFuZCBvdGhlciBwb3N0LXByb2Nlc3NpbmcgdG9vbHMgd2lsbCBsb29rIGluIHRoYXQgbG9jYXRpb24gZmlyc3QgZm9yIHByb2ZpbGUgZGF0YSwKdW5sZXNzIHlvdSBwYXNzIHRoZSA8Y29kZSBjbGFzcz0iY29kZSI+LS1zZXNzaW9uLWRpcjwvY29kZT4gb3B0aW9uLgo8L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIHRpdGxlPSIyLqBHZXR0aW5nIHN0YXJ0ZWQgd2l0aCBPUHJvZmlsZSB1c2luZyBsZWdhY3kgcHJvZmlsaW5nIG1vZGUiPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBpZD0iZ2V0dGluZy1zdGFydGVkLXdpdGgtbGVnYWN5Ij48L2E+Mi6gR2V0dGluZyBzdGFydGVkIHdpdGggT1Byb2ZpbGUgdXNpbmcgbGVnYWN5IHByb2ZpbGluZyBtb2RlPC9oMj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgpCZWZvcmUgeW91IGNhbiB1c2UgT1Byb2ZpbGUncyBsZWdhY3kgcHJvZmlsaW5nIG1vZGUsIHlvdSBtdXN0IHNldCBpdCB1cC4gVGhlIG1pbmltdW0gc2V0dXAgcmVxdWlyZWQgZm9yIHRoaXMKaXMgdG8gdGVsbCBPUHJvZmlsZSB3aGVyZSB0aGUgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj52bWxpbnV4PC9jb2RlPiBmaWxlIGNvcnJlc3BvbmRpbmcgdG8gdGhlCnJ1bm5pbmcga2VybmVsIGlzLCBmb3IgZXhhbXBsZSA6CjwvcD4KICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPm9wY29udHJvbCAtLXZtbGludXg9L2Jvb3Qvdm1saW51eC1gdW5hbWUgLXJgPC9wcmU+CiAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8cD4KSWYgeW91IGRvbid0IHdhbnQgdG8gcHJvZmlsZSB0aGUga2VybmVsIGl0c2VsZiwKeW91IGNhbiB0ZWxsIE9Qcm9maWxlIHlvdSBkb24ndCBoYXZlIGEgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj52bWxpbnV4PC9jb2RlPiBmaWxlIDoKPC9wPgogICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+b3Bjb250cm9sIC0tbm8tdm1saW51eDwvcHJlPgogICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgPHA+Ck5vdyB3ZSBhcmUgcmVhZHkgdG8gc3RhcnQgdGhlIGRhZW1vbiAoPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3Byb2ZpbGVkPC9zdHJvbmc+PC9zcGFuPikgd2hpY2ggY29sbGVjdHMKdGhlIHByb2ZpbGUgZGF0YSA6CjwvcD4KICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPm9wY29udHJvbCAtLXN0YXJ0PC9wcmU+CiAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8cD4KV2hlbiB5b3Ugd2FudCB0byBzdG9wIHByb2ZpbGluZywgeW91IGNhbiBkbyBzbyB3aXRoIDoKPC9wPgogICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+b3Bjb250cm9sIC0tc2h1dGRvd248L3ByZT4KICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgPC90YWJsZT4KICAgICAgICAgIDxwPgpOb3RlIHRoYXQgdW5saWtlIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPmdwcm9mPC9zdHJvbmc+PC9zcGFuPiwgbm8gaW5zdHJ1bWVudGF0aW9uICg8Y29kZSBjbGFzcz0ib3B0aW9uIj4tcGc8L2NvZGU+CmFuZCA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tYTwvY29kZT4gb3B0aW9ucyB0byA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5nY2M8L3N0cm9uZz48L3NwYW4+KQppcyBuZWNlc3NhcnkuCjwvcD4KICAgICAgICAgIDxwPgpQZXJpb2RpY2FsbHkgKG9yIG9uIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wY29udHJvbCAtLXNodXRkb3duPC9zdHJvbmc+PC9zcGFuPiBvciA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGNvbnRyb2wgLS1kdW1wPC9zdHJvbmc+PC9zcGFuPikKdGhlIHByb2ZpbGUgZGF0YSBpcyB3cml0dGVuIG91dCBpbnRvIHRoZSAkU0VTU0lPTl9ESVIvc2FtcGxlcyBkaXJlY3RvcnkgKGJ5IGRlZmF1bHQgYXQgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4vdmFyL2xpYi9vcHJvZmlsZS9zYW1wbGVzPC9jb2RlPikuClRoZXNlIHByb2ZpbGUgZmlsZXMgY292ZXIgc2hhcmVkIGxpYnJhcmllcywgYXBwbGljYXRpb25zLCB0aGUga2VybmVsICh2bWxpbnV4KSwgYW5kIGtlcm5lbCBtb2R1bGVzLgpZb3UgY2FuIGNsZWFyIHRoZSBwcm9maWxlIGRhdGEgKGF0IGFueSB0aW1lKSB3aXRoIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wY29udHJvbCAtLXJlc2V0PC9zdHJvbmc+PC9zcGFuPi4KPC9wPgogICAgICAgICAgPHA+ClRvIHBsYWNlIHRoZXNlIHNhbXBsZSBkYXRhYmFzZSBmaWxlcyBpbiBhIHNwZWNpZmljIGRpcmVjdG9yeSBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IGxvY2F0aW9uCig8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPi92YXIvbGliL29wcm9maWxlPC9jb2RlPikgdXNlIHRoZSA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXNlc3Npb24tZGlyPWRpcjwvY29kZT4gb3B0aW9uLgpZb3UgbXVzdCBhbHNvIHNwZWNpZnkgdGhlIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc2Vzc2lvbi1kaXI8L2NvZGU+IHRvIHRlbGwgdGhlIHRvb2xzIHRvIGNvbnRpbnVlIHVzaW5nIHRoaXMgZGlyZWN0b3J5Lgo8L3A+CiAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj5vcGNvbnRyb2wgLS1uby12bWxpbnV4IC0tc2Vzc2lvbi1kaXI9L2hvbWUvbWUvdG1wc2Vzc2lvbjwvcHJlPgogICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+b3Bjb250cm9sIC0tc3RhcnQgLS1zZXNzaW9uLWRpcj0vaG9tZS9tZS90bXBzZXNzaW9uPC9wcmU+CiAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8cD4KWW91IGNhbiBnZXQgc3VtbWFyaWVzIG9mIHRoaXMgZGF0YSBpbiBhIG51bWJlciBvZiB3YXlzIGF0IGFueSB0aW1lLiBUbyBnZXQgYSBzdW1tYXJ5IG9mCmRhdGEgYWNyb3NzIHRoZSBlbnRpcmUgc3lzdGVtIGZvciBhbGwgb2YgdGhlc2UgcHJvZmlsZXMsIHlvdSBjYW4gZG8gOgo8L3A+CiAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj5vcHJlcG9ydCBbLS1zZXNzaW9uLWRpcj1kaXJdPC9wcmU+CiAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8cD4KT3IgdG8gZ2V0IGEgbW9yZSBkZXRhaWxlZCBzdW1tYXJ5LCBmb3IgYSBwYXJ0aWN1bGFyIGltYWdlLCB5b3UgY2FuIGRvIHNvbWV0aGluZyBsaWtlIDoKPC9wPgogICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+b3ByZXBvcnQgLWwgL2Jvb3Qvdm1saW51eC1gdW5hbWUgLXJgPC9wcmU+CiAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8cD4KVGhlcmUgYXJlIGFsc28gYSBudW1iZXIgb2Ygb3RoZXIgd2F5cyBvZiBwcmVzZW50aW5nIHRoZSBkYXRhLCBhcyBkZXNjcmliZWQgbGF0ZXIgaW4gdGhpcyBtYW51YWwuCk5vdGUgdGhhdCBPUHJvZmlsZSB3aWxsIGNob29zZSBhIGRlZmF1bHQgcHJvZmlsaW5nIHNldHVwIGZvciB5b3UuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlcgpvZiBvcHRpb25zIHlvdSBjYW4gcGFzcyB0byA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGNvbnRyb2w8L3N0cm9uZz48L3NwYW4+IGlmIHlvdSBuZWVkIHRvIGNoYW5nZSBzb21ldGhpbmcsCmFsc28gZGV0YWlsZWQgbGF0ZXIuCjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MSIgdGl0bGU9IjMuoEdldHRpbmcgc3RhcnRlZCB3aXRoIE9Qcm9maWxlIHVzaW5nIG9jb3VudCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIGlkPSJnZXR0aW5nLXN0YXJ0ZWQtd2l0aC1vY291bnQiPjwvYT4zLqBHZXR0aW5nIHN0YXJ0ZWQgd2l0aCBPUHJvZmlsZSB1c2luZyA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vY291bnQ8L3N0cm9uZz48L3NwYW4+PC9oMj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgo8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vY291bnQ8L3N0cm9uZz48L3NwYW4+IGlzIGFuIE9Qcm9maWxlIHRvb2wgdGhhdCBjYW4gYmUgdXNlZCB0byBjb3VudCBuYXRpdmUgaGFyZHdhcmUgZXZlbnRzIG9jY3VycmluZyBpbiBlaXRoZXIKYSBzcGVjaWZpYyBhcHBsaWNhdGlvbiwgYSBzZXQgb2YgcHJvY2Vzc2VzIG9yIHRocmVhZHMsIGEgc2V0IG9mIGFjdGl2ZSBzeXN0ZW0gcHJvY2Vzc29ycywgb3IgdGhlCmVudGlyZSBzeXN0ZW0uIFRoZSBkYXRhIGNvbGxlY3RlZCBkdXJpbmcgYSBjb3VudGluZyBzZXNzaW9uIGlzIGRpc3BsYXllZCB0byBzdGRvdXQgYnkgZGVmYXVsdCwgYnV0IG1heQphbHNvIGJlIHNhdmVkIHRvIGEgZmlsZS4gIFRoZSA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vY291bnQ8L3N0cm9uZz48L3NwYW4+IHN5bnRheCBpcyBhcyBmb2xsb3dzOgo8L3A+CiAgICAgICAgICA8cD4KPC9wPgogICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+b2NvdW50IFsgb3B0aW9ucyBdIFsgLS1zeXN0ZW0td2lkZSB8IC0tcHJvY2Vzcy1saXN0ICZsdDtwaWRzJmd0OyB8IC0tdGhyZWFkLWxpc3QgJmx0O3RpZHMmZ3Q7IHwgLS1jcHUtbGlzdCAmbHQ7Y3B1cyZndDsgWyBjb21tYW5kIFsgYXJncyBdIF0gXQo8L3ByZT4KICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgPC90YWJsZT4KICAgICAgICAgIDxwPgo8L3A+CiAgICAgICAgICA8cD4KQSB0eXBpY2FsIHVzYWdlIG1pZ2h0IGxvb2sgbGlrZSB0aGlzOgo8L3A+CiAgICAgICAgICA8cD4KPC9wPgogICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+b2NvdW50IC0tZXZlbnRzPUNQVV9DTEtfVU5IQUxURUQsSU5TVF9SRVRJUkVEIC9ob21lL3VzZXIxL215X3Rlc3RfcHJvZ3JhbSBteV9hcmc8L3ByZT4KICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgPC90YWJsZT4KICAgICAgICAgIDxwPgo8L3A+CiAgICAgICAgICA8cD4KV2hlbiA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPm15X3Rlc3RfcHJvZ3JhbTwvY29kZT4gY29tcGxldGVzIChvciB3aGVuIHlvdSBwcmVzcyBDdHJsLUMpLCBjb3VudGluZwpzdG9wcyBhbmQgdGhlIHJlc3VsdHMgYXJlIGRpc3BsYXllZCB0byB0aGUgc2NyZWVuIChhcyBzaG93biBiZWxvdykuCjwvcD4KICAgICAgICAgIDxwPgo8L3A+CiAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj4KRXZlbnRzIHdlcmUgYWN0aXZlbHkgY291bnRlZCBmb3IgMi44IHNlY29uZHMuCkV2ZW50IGNvdW50cyAoYWN0dWFsKSBmb3IgL2hvbWUvdXNlcjEvbXlfdGVzdF9wcm9ncmFtIG15X2FyZzoKCUV2ZW50ICAgICAgICAgICAgICAgICAgIENvdW50ICAgICAgICAgICAgICAgICAgICAlIHRpbWUgY291bnRlZAoJQ1BVX0NMS19VTkhBTFRFRCAgICAgICAgOSw0MDgsMDE4LDA3MCAgICAgICAgICAgIDEwMC4wMAoJSU5TVF9SRVRJUkVEICAgICAgICAgICAgMTYsNzE5LDkxOCwxMDggICAgICAgICAgIDEwMC4wMAo8L3ByZT4KICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgPC90YWJsZT4KICAgICAgICAgIDxwPgo8L3A+CiAgICAgICAgICA8cD4KPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY3QxIiB0aXRsZT0iNC6gU3BlY2lmeWluZyBwZXJmb3JtYW5jZSBjb3VudGVyIGV2ZW50cyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIGlkPSJldmVudHNwZWMiPjwvYT40LqBTcGVjaWZ5aW5nIHBlcmZvcm1hbmNlIGNvdW50ZXIgZXZlbnRzPC9oMj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgpCb3RoIG1ldGhvZHMgb2YgcHJvZmlsaW5nICg8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGVyZjwvc3Ryb25nPjwvc3Bhbj4gYW5kIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wY29udHJvbDwvc3Ryb25nPjwvc3Bhbj4pIC0tCmFzIHdlbGwgYXMgZXZlbnQgY291bnRpbmcgd2l0aCA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vY291bnQ8L3N0cm9uZz48L3NwYW4+IC0tCmFsbG93IHlvdSB0byBnaXZlIG9uZSBvciBtb3JlIGV2ZW50IHNwZWNpZmljYXRpb25zIHRvIHByb3ZpZGUgZGV0YWlscyBvZiBob3cgZWFjaApoYXJkd2FyZSBwZXJmb3JtYW5jZSBjb3VudGVyIHNob3VsZCBiZSBzZXQgdXAuIFdpdGggPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3BlcmY8L3N0cm9uZz48L3NwYW4+IGFuZCA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vY291bnQ8L3N0cm9uZz48L3NwYW4+LCB5b3UKY2FuIHByb3ZpZGUgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBldmVudCBzcGVjZmljYXRpb25zIHVzaW5nIHRoZSA8Y29kZSBjbGFzcz0iY29kZSI+LS1ldmVudHM8L2NvZGU+Cm9wdGlvbi4gIFdpdGggPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3Bjb250cm9sPC9zdHJvbmc+PC9zcGFuPiwgeW91IHVzZSB0aGUgPGNvZGUgY2xhc3M9ImNvZGUiPi0tZXZlbnQ8L2NvZGU+IG9wdGlvbgpmb3IgZWFjaCBkZXNpcmVkIGV2ZW50IHNwZWNpZmljYXRpb24uCkZvciBwcm9maWxpbmcsIHRoZSBldmVudCBzcGVjaWZpY2F0aW9uIGlzIGEgY29sb24tc2VwYXJhdGVkIHN0cmluZyBvZiB0aGUgZm9ybQo8Y29kZSBjbGFzcz0ib3B0aW9uIj48c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT5uYW1lPC9lbT48L3NwYW4+OjxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+PGVtPmNvdW50PC9lbT48L3NwYW4+OjxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+PGVtPnVuaXRtYXNrPC9lbT48L3NwYW4+OjxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+PGVtPmtlcm5lbDwvZW0+PC9zcGFuPjo8c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT51c2VyPC9lbT48L3NwYW4+PC9jb2RlPgphcyBkZXNjcmliZWQgaW4gdGhlIHRhYmxlIGJlbG93LiBGb3IgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b2NvdW50PC9zdHJvbmc+PC9zcGFuPiwgc3BlY2lmaWNhdGlvbiBpcyBvZiB0aGUgZm9ybQo8Y29kZSBjbGFzcz0ib3B0aW9uIj48c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT5uYW1lPC9lbT48L3NwYW4+OjxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+PGVtPnVuaXRtYXNrPC9lbT48L3NwYW4+OjxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+PGVtPmtlcm5lbDwvZW0+PC9zcGFuPjo8c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT51c2VyPC9lbT48L3NwYW4+PC9jb2RlPi4KTm90ZSB0aGUgcHJlc2VuY2Ugb2YgdGhlIDxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+PGVtPmNvdW50PC9lbT48L3NwYW4+IGZpZWxkIGZvciBwcm9maWxpbmcuICBUaGUgPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+Y291bnQ8L2VtPjwvc3Bhbj4gZmllbGQgdGVsbHMgdGhlIHByb2ZpbGVyCmhvdyBtYW55IGV2ZW50cyBzaG91bGQgb2NjdXIgYmV0d2VlbiBhIHByb2ZpbGUgc25hcHNob3QgKHVzdWFsbHkgcmVmZXJyZWQgdG8gYXMgYSAic2FtcGxlIikuICBTaW5jZQo8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vY291bnQ8L3N0cm9uZz48L3NwYW4+IGRvZXMgbm90IGRvIHNhbXBsaW5nLCB0aGUgPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+Y291bnQ8L2VtPjwvc3Bhbj4gZmllbGQgaXMgbm90IG5lZWRlZC4KPC9wPgogICAgICAgICAgPHA+CklmIG5vIGV2ZW50IHNwZWNzIGFyZSBwYXNzZWQgdG8gPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3BlcmY8L3N0cm9uZz48L3NwYW4+LCA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vY291bnQ8L3N0cm9uZz48L3NwYW4+LCBvciA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGNvbnRyb2w8L3N0cm9uZz48L3NwYW4+LAp0aGUgZGVmYXVsdCBldmVudCB3aWxsIGJlIHVzZWQuIFdpdGggPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3Bjb250cm9sPC9zdHJvbmc+PC9zcGFuPiwgaWYgeW91IGhhdmUKcHJldmlvdXNseSBzcGVjaWZpZWQgc29tZSBub24tZGVmYXVsdCBldmVudCBidXQgd2FudCB0byByZXZlcnQgdG8gdGhlIGRlZmF1bHQgZXZlbnQsIHVzZQo8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWV2ZW50PWRlZmF1bHQ8L2NvZGU+LiBVc2Ugb2YgdGhpcyBvcHRpb24gb3ZlcnJpZGVzIGFsbCBwcmV2aW91cyBldmVudCBzZWxlY3Rpb25zCnRoYXQgaGF2ZSBiZWVuIGNhY2hlZC4KPC9wPgogICAgICAgICAgPHA+CjwvcD4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5vdGUiIHRpdGxlPSJOb3RlIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDAuNWluOyBtYXJnaW4tcmlnaHQ6IDAuNWluOyI+PGgzIGNsYXNzPSJ0aXRsZSI+Tm90ZTwvaDM+T1Byb2ZpbGUgd2lsbCBhbGxvY2F0ZSBoYXJkd2FyZSBjb3VudGVycyBhcyBuZWNlc3NhcnksIGJ1dCBzb21lIHByb2Nlc3Nvcgp0eXBlcyBoYXZlIHJlc3RyaWN0aW9ucyBhcyB0byB3aGF0IGhhcmR3YXJlIGV2ZW50cyBtYXkgYmUgY291bnRlZCBzaW11bHRhbmVvdXNseS4KPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3BlcmY8L3N0cm9uZz48L3NwYW4+IGFuZCA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vY291bnQ8L3N0cm9uZz48L3NwYW4+IHVzZSBhIG11bHRpcGxleGluZyB0ZWNobmlxdWUgd2hlbiBzdWNoCmhhcmR3YXJlIHJlc3RyaWN0aW9ucyBhcmUgZW5jb3VudGVyZWQsIGJ1dCA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGNvbnRyb2w8L3N0cm9uZz48L3NwYW4+IGRvZXMKbm90IGhhdmUgdGhpcyBjYXBhYmlsaXR5OyBpbnN0ZWFkLCA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGNvbnRyb2w8L3N0cm9uZz48L3NwYW4+IHdpbGwgZGlzcGxheSBhbgplcnJvciBtZXNzYWdlIGlmIHlvdSBzZWxlY3QgYW4gaW5jb21wYXRpYmxlIHNldCBvZiBldmVudHMuCjwvZGl2PgogICAgICAgICAgPHA+CjwvcD4KICAgICAgICAgIDxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPgogICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIxIj4KICAgICAgICAgICAgICA8Y29sZ3JvdXA+CiAgICAgICAgICAgICAgICA8Y29sIC8+CiAgICAgICAgICAgICAgICA8Y29sIC8+CiAgICAgICAgICAgICAgPC9jb2xncm91cD4KICAgICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj5uYW1lPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICA8dGQ+VGhlIHN5bWJvbGljIGV2ZW50IG5hbWUsIGUuZy4gPGNvZGUgY2xhc3M9ImNvbnN0YW50Ij5DUFVfQ0xLX1VOSEFMVEVEPC9jb2RlPjwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+Y291bnQ8L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZD5UaGUgY291bnRlciByZXNldCB2YWx1ZSwgZS5nLiAxMDAwMDA7IHVzZSBvbmx5IGZvciBwcm9maWxpbmc8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPnVuaXRtYXNrPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICA8dGQ+VGhlIHVuaXQgbWFzaywgYXMgZ2l2ZW4gaW4gdGhlIGV2ZW50cyBsaXN0OiBlLmcuIDB4MGY7IG9yIGEgc3ltYm9saWMgbmFtZQppZiBhIDxjb2RlIGNsYXNzPSJjb25zdGFudCI+bmFtZT0mbHQ7dW1fbmFtZSZndDs8L2NvZGU+IGZpZWxkIGlzIHByZXNlbnQ8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPmtlcm5lbDwvY29kZT4KICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgPHRkPldoZXRoZXIgdG8gcHJvZmlsZSBrZXJuZWwgY29kZTwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+dXNlcjwvY29kZT4KICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgPHRkPldoZXRoZXIgdG8gcHJvZmlsZSB1c2Vyc3BhY2UgY29kZTwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgpUaGUgbGFzdCB0aHJlZSB2YWx1ZXMgYXJlIG9wdGlvbmFsLCBpZiB5b3Ugb21pdCB0aGVtIChlLmcuIDxjb2RlIGNsYXNzPSJvcHRpb24iPm9wZXJmIC0tZXZlbnRzPURBVEFfTUVNX1JFRlM6MzAwMDA8L2NvZGU+KSwKdGhleSB3aWxsIGJlIHNldCB0byB0aGUgZGVmYXVsdCB2YWx1ZXMgKHRoZSBkZWZhdWx0IHVuaXQgbWFzayB2YWx1ZSBmb3IgdGhlIGdpdmVuIGV2ZW50LCBhbmQgcHJvZmlsaW5nIChvciBjb3VudGluZykKYm90aCBrZXJuZWwgYW5kIHVzZXJzcGFjZSBjb2RlKS4gTm90ZSB0aGF0IHNvbWUgZXZlbnRzIHJlcXVpcmUgYSB1bml0IG1hc2suCjwvcD4KICAgICAgICAgIDxwPgpZb3UgY2FuIHNwZWNpZnkgdW5pdCBtYXNrIHZhbHVlcyB1c2luZyBlaXRoZXIgYSBudW1lcmljYWwgdmFsdWUgKGhleCB2YWx1ZXMKPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+bXVzdDwvZW0+PC9zcGFuPiBiZWdpbiB3aXRoICIweCIpIG9yIGEgc3ltYm9saWMgbmFtZSAoaWYgdGhlIDxjb2RlIGNsYXNzPSJjb25zdGFudCI+bmFtZT0mbHQ7dW1fbmFtZSZndDs8L2NvZGU+CmZpZWxkIGlzIHNob3duIGluIHRoZSA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGhlbHA8L3N0cm9uZz48L3NwYW4+IG91dHB1dCkuIEZvciBzb21lIG5hbWVkIHVuaXQgbWFza3MsIHRoZSBoZXggdmFsdWUgaXMgbm90IHVuaXF1ZTsgdGh1cywgT1Byb2ZpbGUKdG9vbHMgZW5mb3JjZSBzcGVjaWZ5aW5nIHN1Y2ggdW5pdCBtYXNrcyB2YWx1ZSBieSBuYW1lLgo8L3A+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJub3RlIiB0aXRsZT0iTm90ZSIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwLjVpbjsgbWFyZ2luLXJpZ2h0OiAwLjVpbjsiPgogICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj5Ob3RlPC9oMz4KICAgICAgICAgICAgPHA+CldoZW4gdXNpbmcgbGVnYWN5IG1vZGUgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3Bjb250cm9sPC9zdHJvbmc+PC9zcGFuPiBvbiBJQk0gUG93ZXJQQyBwbGF0Zm9ybXMsIGFsbCBldmVudHMgc3BlY2lmaWVkIG11c3QgYmUgaW4gdGhlIHNhbWUgZ3JvdXA7CmkuZS4sIHRoZSBncm91cCBudW1iZXIgYXBwZW5kZWQgdG8gdGhlIGV2ZW50IG5hbWUgKGUuZy4gPGNvZGUgY2xhc3M9ImNvbnN0YW50Ij4mbHQ7PHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+c29tZS1ldmVudC1uYW1lPC9lbT48L3NwYW4+Jmd0O19HUlA5CjwvY29kZT4pIG11c3QgYmUgdGhlIHNhbWUuCjwvcD4KICAgICAgICAgICAgPHA+CldoZW4gdXNpbmcgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3BlcmY8L3N0cm9uZz48L3NwYW4+IG9yIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9jb3VudDwvc3Ryb25nPjwvc3Bhbj4gb24gSUJNIFBvd2VyUEMgcGxhdGZvcm1zLCB0aGUgYWJvdmUgcmVzdHJpY3Rpb24KcmVnYXJkaW5nIHRoZSBzYW1lIGdyb3VwIG51bWJlciBkb2VzIG5vdCBhcHBseSwgYW5kIGV2ZW50cyBtYXkgYmUKc3BlY2lmaWVkIHdpdGggb3Igd2l0aG91dCB0aGUgZ3JvdXAgbnVtYmVyIHN1ZmZpeC4gSWYgbm8gZ3JvdXAgbnVtYmVyIHN1ZmZpeCBpcyBnaXZlbiwgb25lIHdpbGwgYmUgYXV0b21hdGljYWxseQphc3NpZ25lZDsgdGh1cywgT1Byb2ZpbGUgcG9zdC1wcm9jZXNzaW5nIHRvb2xzIHdpbGwgYWx3YXlzIHNob3cgcmVhbCBldmVudApuYW1lcyB0aGF0IGluY2x1ZGUgdGhlIGdyb3VwIG51bWJlciBzdWZmaXguCjwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHA+CklmIE9Qcm9maWxlIGlzIHVzaW5nIHRpbWVyLWludGVycnVwdCBtb2RlLCB0aGVyZSBpcyBubyBldmVudCBjb25maWd1cmF0aW9uIHBvc3NpYmxlLgo8L3A+CiAgICAgICAgICA8cD4KVGhlIHRhYmxlIGJlbG93IGxpc3RzIHRoZSBkZWZhdWx0IHByb2ZpbGluZyBldmVudCBmb3IgdmFyaW91cyBwcm9jZXNzb3IgdHlwZXMuIFRoZSBzYW1lIGV2ZW50cwpjYW4gYmUgdXNlZCBmb3IgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b2NvdW50PC9zdHJvbmc+PC9zcGFuPiwgbWludXMgdGhlIDxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+PGVtPmNvdW50PC9lbT48L3NwYW4+IGZpZWxkLgo8L3A+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj4KICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMSI+CiAgICAgICAgICAgICAgPGNvbGdyb3VwPgogICAgICAgICAgICAgICAgPGNvbCAvPgogICAgICAgICAgICAgICAgPGNvbCAvPgogICAgICAgICAgICAgICAgPGNvbCAvPgogICAgICAgICAgICAgIDwvY29sZ3JvdXA+CiAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGQ+UHJvY2Vzc29yPC90ZD4KICAgICAgICAgICAgICAgICAgPHRkPmNwdV90eXBlPC90ZD4KICAgICAgICAgICAgICAgICAgPHRkPkRlZmF1bHQgZXZlbnQ8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkPkFscGhhIEVWNDwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZD5hbHBoYS9ldjQ8L3RkPgogICAgICAgICAgICAgICAgICA8dGQ+Q1lDTEVTOjEwMDAwMDowOjE6MTwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGQ+QWxwaGEgRVY1PC90ZD4KICAgICAgICAgICAgICAgICAgPHRkPmFscGhhL2V2NTwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZD5DWUNMRVM6MTAwMDAwOjA6MToxPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD5BbHBoYSBQQ0E1NjwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZD5hbHBoYS9wY2E1NjwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZD5DWUNMRVM6MTAwMDAwOjA6MToxPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD5BbHBoYSBFVjY8L3RkPgogICAgICAgICAgICAgICAgICA8dGQ+YWxwaGEvZXY2PC90ZD4KICAgICAgICAgICAgICAgICAgPHRkPkNZQ0xFUzoxMDAwMDA6MDoxOjE8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkPkFscGhhIEVWNjc8L3RkPgogICAgICAgICAgICAgICAgICA8dGQ+YWxwaGEvZXY2NzwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZD5DWUNMRVM6MTAwMDAwOjA6MToxPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD5BUk0vWFNjYWxlIFBNVTE8L3RkPgogICAgICAgICAgICAgICAgICA8dGQ+YXJtL3hzY2FsZTE8L3RkPgogICAgICAgICAgICAgICAgICA8dGQ+Q1BVX0NZQ0xFUzoxMDAwMDA6MDoxOjE8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkPkFSTS9YU2NhbGUgUE1VMjwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZD5hcm0veHNjYWxlMjwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZD5DUFVfQ1lDTEVTOjEwMDAwMDowOjE6MTwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGQ+QVJNL01QQ29yZTwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZD5hcm0vbXBjb3JlPC90ZD4KICAgICAgICAgICAgICAgICAgPHRkPkNQVV9DWUNMRVM6MTAwMDAwOjA6MToxPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD5BVlIzMjwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZD5hdnIzMjwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZD5DUFVfQ1lDTEVTOjEwMDAwMDowOjE6MTwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGQ+QXRobG9uPC90ZD4KICAgICAgICAgICAgICAgICAgPHRkPmkzODYvYXRobG9uPC90ZD4KICAgICAgICAgICAgICAgICAgPHRkPkNQVV9DTEtfVU5IQUxURUQ6MTAwMDAwOjA6MToxPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD5QZW50aXVtIFBybzwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZD5pMzg2L3Bwcm88L3RkPgogICAgICAgICAgICAgICAgICA8dGQ+Q1BVX0NMS19VTkhBTFRFRDoxMDAwMDA6MDoxOjE8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkPlBlbnRpdW0gSUk8L3RkPgogICAgICAgICAgICAgICAgICA8dGQ+aTM4Ni9waWk8L3RkPgogICAgICAgICAgICAgICAgICA8dGQ+Q1BVX0NMS19VTkhBTFRFRDoxMDAwMDA6MDoxOjE8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkPlBlbnRpdW0gSUlJPC90ZD4KICAgICAgICAgICAgICAgICAgPHRkPmkzODYvcGlpaTwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZD5DUFVfQ0xLX1VOSEFMVEVEOjEwMDAwMDowOjE6MTwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGQ+UGVudGl1bSBNIChQNiBjb3JlKTwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZD5pMzg2L3A2X21vYmlsZTwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZD5DUFVfQ0xLX1VOSEFMVEVEOjEwMDAwMDowOjE6MTwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGQ+UGVudGl1bSA0IChub24tSFQpPC90ZD4KICAgICAgICAgICAgICAgICAgPHRkPmkzODYvcDQ8L3RkPgogICAgICAgICAgICAgICAgICA8dGQ+R0xPQkFMX1BPV0VSX0VWRU5UUzoxMDAwMDA6MToxOjE8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkPlBlbnRpdW0gNCAoSFQpPC90ZD4KICAgICAgICAgICAgICAgICAgPHRkPmkzODYvcDQtaHQ8L3RkPgogICAgICAgICAgICAgICAgICA8dGQ+R0xPQkFMX1BPV0VSX0VWRU5UUzoxMDAwMDA6MToxOjE8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkPkhhbW1lcjwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZD54ODYtNjQvaGFtbWVyPC90ZD4KICAgICAgICAgICAgICAgICAgPHRkPkNQVV9DTEtfVU5IQUxURUQ6MTAwMDAwOjA6MToxPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD5GYW1pbHkxMGg8L3RkPgogICAgICAgICAgICAgICAgICA8dGQ+eDg2LTY0L2ZhbWlseTEwPC90ZD4KICAgICAgICAgICAgICAgICAgPHRkPkNQVV9DTEtfVU5IQUxURUQ6MTAwMDAwOjA6MToxPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD5GYW1pbHkxMWg8L3RkPgogICAgICAgICAgICAgICAgICA8dGQ+eDg2LTY0L2ZhbWlseTExaDwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZD5DUFVfQ0xLX1VOSEFMVEVEOjEwMDAwMDowOjE6MTwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGQ+SXRhbml1bTwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZD5pYTY0L2l0YW5pdW08L3RkPgogICAgICAgICAgICAgICAgICA8dGQ+Q1BVX0NZQ0xFUzoxMDAwMDA6MDoxOjE8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkPkl0YW5pdW0gMjwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZD5pYTY0L2l0YW5pdW0yPC90ZD4KICAgICAgICAgICAgICAgICAgPHRkPkNQVV9DWUNMRVM6MTAwMDAwOjA6MToxPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD5USU1FUl9JTlQ8L3RkPgogICAgICAgICAgICAgICAgICA8dGQ+dGltZXI8L3RkPgogICAgICAgICAgICAgICAgICA8dGQ+Tm9uZSBzZWxlY3RhYmxlPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD5JQk0gcHNlcmllczwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZD5Qb3dlclBDIDQvNS82LzcvOC85NzAvQ2VsbDwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZD5DWUNMRVM6MTAwMDAwOjA6MToxPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD5JQk0gczM5MDwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZD50aW1lcjwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZD5Ob25lIHNlbGVjdGFibGU8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkPklCTSBzMzkweDwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZD50aW1lcjwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZD5Ob25lIHNlbGVjdGFibGU8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIHRpdGxlPSI1LqBUb29scyBzdW1tYXJ5Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+PGEgaWQ9InRvb2xzLW92ZXJ2aWV3Ij48L2E+NS6gVG9vbHMgc3VtbWFyeTwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cD4KVGhpcyBzZWN0aW9uIGdpdmVzIGEgYnJpZWYgZGVzY3JpcHRpb24gb2YgdGhlIGF2YWlsYWJsZSBPUHJvZmlsZSB1dGlsaXRpZXMgYW5kIHRoZWlyIHB1cnBvc2UuCjwvcD4KICAgICAgICAgIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+b3BoZWxwPC9jb2RlPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJVGhpcyB1dGlsaXR5IGxpc3RzIHRoZSBhdmFpbGFibGUgZXZlbnRzIGFuZCBzaG9ydCBkZXNjcmlwdGlvbnMuCgk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+b3BlcmY8L2NvZGU+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8cD4KCQlUaGlzIGlzIHRoZSByZWNvbW1lbmRlZCBwcm9ncmFtIGZvciBjb2xsZWN0aW5nIHByb2ZpbGUgZGF0YSwgZGlzY3Vzc2VkIGluIDxhIGNsYXNzPSJ4cmVmIiBocmVmPSIjY29udHJvbGxpbmctb3BlcmYiIHRpdGxlPSIxLqBVc2luZyBvcGVyZiI+U2VjdGlvbqAxLCAmIzgyMjA7VXNpbmcgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3BlcmY8L3N0cm9uZz48L3NwYW4+JiM4MjIxOzwvYT4uCgk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+b3Bjb250cm9sPC9jb2RlPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJVXNlZCBmb3IgY29udHJvbGxpbmcgT1Byb2ZpbGUgZGF0YSBjb2xsZWN0aW9uIGluIGxlZ2FjeSBtb2RlLCBkaXNjdXNzZWQgaW4gPGEgY2xhc3M9InhyZWYiIGhyZWY9IiNjb250cm9sbGluZy1kYWVtb24iIHRpdGxlPSIyLqBVc2luZyBvcGNvbnRyb2wiPlNlY3Rpb26gMiwgJiM4MjIwO1VzaW5nIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wY29udHJvbDwvc3Ryb25nPjwvc3Bhbj4mIzgyMjE7PC9hPi4KCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5hZ2VudCBsaWJyYXJpZXM8L2NvZGU+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8cD4KCQkJVXNlZCBieSB2aXJ0dWFsIG1hY2hpbmVzIChsaWtlIHRoZSBKYXZhIFZNKSB0byByZWNvcmQgaW5mb3JtYXRpb24gYWJvdXQgSklUZWQgY29kZSBiZWluZyBwcm9maWxlZC4gU2VlIDxhIGNsYXNzPSJ4cmVmIiBocmVmPSIjc2V0dXAtaml0IiB0aXRsZT0iMy6gU2V0dGluZyB1cCB0aGUgSklUIHByb2ZpbGluZyBmZWF0dXJlIj5TZWN0aW9uoDMsICYjODIyMDtTZXR0aW5nIHVwIHRoZSBKSVQgcHJvZmlsaW5nIGZlYXR1cmUmIzgyMjE7PC9hPi4KCQk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+b3ByZXBvcnQ8L2NvZGU+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8cD4KCQlUaGlzIGlzIHRoZSBtYWluIHRvb2wgZm9yIHJldHJpZXZpbmcgdXNlZnVsIHByb2ZpbGUgZGF0YSwgZGVzY3JpYmVkIGluCgkJPGEgY2xhc3M9InhyZWYiIGhyZWY9IiNvcHJlcG9ydCIgdGl0bGU9IjIuoEltYWdlIHN1bW1hcmllcyBhbmQgc3ltYm9sIHN1bW1hcmllcyAob3ByZXBvcnQpIj5TZWN0aW9uoDIsICYjODIyMDtJbWFnZSBzdW1tYXJpZXMgYW5kIHN5bWJvbCBzdW1tYXJpZXMgKDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wcmVwb3J0PC9zdHJvbmc+PC9zcGFuPikmIzgyMjE7PC9hPi4KCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5vcGFubm90YXRlPC9jb2RlPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJVGhpcyB1dGlsaXR5IGNhbiBiZSB1c2VkIHRvIHByb2R1Y2UgYW5ub3RhdGVkIHNvdXJjZSwgYXNzZW1ibHkgb3IgbWl4ZWQgc291cmNlL2Fzc2VtYmx5LgoJCVNvdXJjZSBsZXZlbCBhbm5vdGF0aW9uIGlzIGF2YWlsYWJsZSBvbmx5IGlmIHRoZSBhcHBsaWNhdGlvbiB3YXMgY29tcGlsZWQgd2l0aCAKCQlkZWJ1Z2dpbmcgc3ltYm9scy4gU2VlIDxhIGNsYXNzPSJ4cmVmIiBocmVmPSIjb3Bhbm5vdGF0ZSIgdGl0bGU9IjMuoE91dHB1dHRpbmcgYW5ub3RhdGVkIHNvdXJjZSAob3Bhbm5vdGF0ZSkiPlNlY3Rpb26gMywgJiM4MjIwO091dHB1dHRpbmcgYW5ub3RhdGVkIHNvdXJjZSAoPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3Bhbm5vdGF0ZTwvc3Ryb25nPjwvc3Bhbj4pJiM4MjIxOzwvYT4uCgk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+b3BncHJvZjwvY29kZT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCVRoaXMgdXRpbGl0eSBjYW4gb3V0cHV0IGdwcm9mLXN0eWxlIGRhdGEgZmlsZXMgZm9yIGEgYmluYXJ5LCBmb3IgdXNlIHdpdGgKCQk8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5ncHJvZiAtcDwvc3Ryb25nPjwvc3Bhbj4uIFNlZSA8YSBjbGFzcz0ieHJlZiIgaHJlZj0iI29wZ3Byb2YiIHRpdGxlPSI1LqBncHJvZi1jb21wYXRpYmxlIG91dHB1dCAob3BncHJvZikiPlNlY3Rpb26gNSwgJiM4MjIwOzxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPmdwcm9mPC9zdHJvbmc+PC9zcGFuPi1jb21wYXRpYmxlIG91dHB1dCAoPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3BncHJvZjwvc3Ryb25nPjwvc3Bhbj4pJiM4MjIxOzwvYT4uCgk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+b3BhcmNoaXZlPC9jb2RlPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJVGhpcyB1dGlsaXR5IGNhbiBiZSB1c2VkIHRvIGNvbGxlY3QgZXhlY3V0YWJsZXMsIGRlYnVnaW5mbywKCQlhbmQgc2FtcGxlIGZpbGVzIGFuZCBjb3B5IHRoZSBmaWxlcyBpbnRvIGFuIGFyY2hpdmUuCgkJVGhlIGFyY2hpdmUgaXMgc2VsZi1jb250YWluZWQgYW5kIGNhbiBiZSBtb3ZlZCB0byBhbm90aGVyCgkJbWFjaGluZSBmb3IgZnVydGhlciBhbmFseXNpcy4KCQlTZWUgPGEgY2xhc3M9InhyZWYiIGhyZWY9IiNvcGFyY2hpdmUiIHRpdGxlPSI2LqBBbmFseXppbmcgcHJvZmlsZSBkYXRhIG9uIGFub3RoZXIgc3lzdGVtIChvcGFyY2hpdmUpIj5TZWN0aW9uoDYsICYjODIyMDtBbmFseXppbmcgcHJvZmlsZSBkYXRhIG9uIGFub3RoZXIgc3lzdGVtICg8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGFyY2hpdmU8L3N0cm9uZz48L3NwYW4+KSYjODIyMTs8L2E+LgoJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPm9waW1wb3J0PC9jb2RlPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJVGhpcyB1dGlsaXR5IGNvbnZlcnRzIHNhbXBsZSBkYXRhYmFzZSBmaWxlcyBmcm9tIGEgZm9yZWlnbiBiaW5hcnkgZm9ybWF0IChhYmkpIHRvCgkJdGhlIG5hdGl2ZSBmb3JtYXQuIFRoaXMgaXMgdXNlZnVsIG9ubHkgd2hlbiBtb3Zpbmcgc2FtcGxlIGZpbGVzIGJldHdlZW4gaG9zdHMsCgkJZm9yIGFuYWx5c2lzIG9uIHBsYXRmb3JtcyBvdGhlciB0aGFuIHRoZSBvbmUgdXNlZCBmb3IgY29sbGVjdGlvbi4KCQlTZWUgPGEgY2xhc3M9InhyZWYiIGhyZWY9IiNvcGltcG9ydCIgdGl0bGU9IjcuoENvbnZlcnRpbmcgc2FtcGxlIGRhdGFiYXNlIGZpbGVzIChvcGltcG9ydCkiPlNlY3Rpb26gNywgJiM4MjIwO0NvbnZlcnRpbmcgc2FtcGxlIGRhdGFiYXNlIGZpbGVzICg8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGltcG9ydDwvc3Ryb25nPjwvc3Bhbj4pJiM4MjIxOzwvYT4uCgk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgPC9kbD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2hhcHRlciIgdGl0bGU9IkNoYXB0ZXKgMy6gQ29udHJvbGxpbmcgdGhlIHByb2ZpbGVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIj48YSBpZD0iY29udHJvbGxpbmctcHJvZmlsZXIiPjwvYT5DaGFwdGVyoDMuoENvbnRyb2xsaW5nIHRoZSBwcm9maWxlcjwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0idG9jIj4KICAgICAgICAgIDxwPgogICAgICAgICAgICA8Yj5UYWJsZSBvZiBDb250ZW50czwvYj4KICAgICAgICAgIDwvcD4KICAgICAgICAgIDxkbD4KICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjY29udHJvbGxpbmctb3BlcmYiPjEuIFVzaW5nIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wZXJmPC9zdHJvbmc+PC9zcGFuPjwvYT4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI2NvbnRyb2xsaW5nLWRhZW1vbiI+Mi4gVXNpbmcgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3Bjb250cm9sPC9zdHJvbmc+PC9zcGFuPjwvYT4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI29wY29udHJvbGV4YW1wbGVzIj4yLjEuIEV4YW1wbGVzPC9hPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NldHVwLWppdCI+My4gU2V0dGluZyB1cCB0aGUgSklUIHByb2ZpbGluZyBmZWF0dXJlPC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjc2V0dXAtaml0LWp2bSI+My4xLiBKVk0gaW5zdHJ1bWVudGF0aW9uPC9hPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI29wcm9maWxlLWd1aSI+NC4gVXNpbmcgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3Byb2Zfc3RhcnQ8L3N0cm9uZz48L3NwYW4+PC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjZGV0YWlsZWQtcGFyYW1ldGVycyI+NS4gQ29uZmlndXJhdGlvbiBkZXRhaWxzPC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjaGFyZHdhcmUtY291bnRlcnMiPjUuMS4gSGFyZHdhcmUgcGVyZm9ybWFuY2UgY291bnRlcnM8L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3RpbWVyIj41LjIuIE9Qcm9maWxlIGluIHRpbWVyIGludGVycnVwdCBtb2RlPC9hPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNwNCI+NS4zLiBQZW50aXVtIDQgc3VwcG9ydDwvYT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjaWE2NCI+NS40LiBJbnRlbCBJdGFuaXVtIDIgc3VwcG9ydDwvYT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjcHBjNjQiPjUuNS4gUG93ZXJQQzY0IHN1cHBvcnQ8L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2NlbGwtYmUiPjUuNi4gQ2VsbCBCcm9hZGJhbmQgRW5naW5lIHN1cHBvcnQ8L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2FtZC1pYnMtc3VwcG9ydCI+NS43LiBBTUQ2NCAoeDg2XzY0KSBJbnN0cnVjdGlvbi1CYXNlZCBTYW1wbGluZyAoSUJTKSBzdXBwb3J0PC9hPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzeXN0ZW16Ij41LjguIElCTSBTeXN0ZW0geiBoYXJkd2FyZSBzYW1wbGluZyBzdXBwb3J0PC9hPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNtaXN1c2UiPjUuOS4gRGFuZ2Vyb3VzIGNvdW50ZXIgc2V0dGluZ3M8L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPC9kZD4KICAgICAgICAgIDwvZGw+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIHRpdGxlPSIxLqBVc2luZyBvcGVyZiI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIGlkPSJjb250cm9sbGluZy1vcGVyZiI+PC9hPjEuoFVzaW5nIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wZXJmPC9zdHJvbmc+PC9zcGFuPjwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cD4KVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBpbiBkZXRhaWwgaG93IDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wZXJmPC9zdHJvbmc+PC9zcGFuPiBpcyB1c2VkIHRvCmNvbnRyb2wgcHJvZmlsaW5nLiBVbmxlc3Mgb3RoZXJ3aXNlIGRpcmVjdGVkLCA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGVyZjwvc3Ryb25nPjwvc3Bhbj4gd2lsbCBwcm9maWxlIHVzaW5nCnRoZSBkZWZhdWx0IGV2ZW50IGZvciB5b3VyIHN5c3RlbS4gRm9yIG1vc3Qgc3lzdGVtcywgdGhlIGRlZmF1bHQgZXZlbnQgaXMgc29tZQpjeWNsZXMtYmFzZWQgZXZlbnQsIGFzc3VtaW5nIHlvdXIgcHJvY2Vzc29yIHR5cGUgc3VwcG9ydHMgaGFyZHdhcmUgcGVyZm9ybWFuY2UKY291bnRlcnMuIElmIHlvdXIgaGFyZHdhcmUgPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+ZG9lczwvZW0+PC9zcGFuPiBzdXBwb3J0IHBlcmZvcm1hbmNlIGNvdW50ZXJzLCB5b3UgY2FuIHNwZWNpZnkKc29tZXRoaW5nIG90aGVyIHRoYW4gdGhlIGRlZmF1bHQgaGFyZHdhcmUgZXZlbnQgb24gd2hpY2ggdG8gcHJvZmlsZS4gVGhlIHBlcmZvcm1hbmNlCm1vbml0b3IgY291bnRlcnMgY2FuIGJlIHByb2dyYW1tZWQgdG8gY291bnQgdmFyaW91cyBoYXJkd2FyZSBldmVudHMsCnN1Y2ggYXMgY2FjaGUgbWlzc2VzIG9yIE1NWCBvcGVyYXRpb25zLiBUaGUgZXZlbnQKY2hvc2VuIGZvciBlYWNoIGNvdW50ZXIgaXMgcmVmbGVjdGVkIGluIHRoZSBwcm9maWxlIGRhdGEgY29sbGVjdGVkCmJ5IE9Qcm9maWxlOiBmdW5jdGlvbnMgYW5kIGJpbmFyaWVzIGF0IHRoZSB0b3Agb2YgdGhlIHByb2ZpbGVzIHJlZmxlY3QKdGhhdCBtb3N0IG9mIHRoZSBjaG9zZW4gZXZlbnRzIGhhcHBlbmVkIHdpdGhpbiB0aGF0IGNvZGUuCjwvcD4KICAgICAgICAgIDxwPgpBZGRpdGlvbmFsbHksIGVhY2ggY291bnRlciBpcyBwcm9ncmFtbWVkIHdpdGggYSAiY291bnQiIHZhbHVlLCB3aGljaCBjb3JyZXNwb25kcyB0byBob3cKZGV0YWlsZWQgdGhlIHByb2ZpbGUgaXMuIFRoZSBsb3dlciB0aGUgdmFsdWUsIHRoZSBtb3JlIGZyZXF1ZW50bHkgcHJvZmlsZQpzYW1wbGVzIGFyZSB0YWtlbi4gWW91IGNhbiBjaG9vc2UgdG8gc2FtcGxlIG9ubHkga2VybmVsIGNvZGUsIHVzZXItc3BhY2UgY29kZSwKb3IgYm90aCAoYm90aCBpcyB0aGUgZGVmYXVsdCkuIEZpbmFsbHksIHNvbWUgZXZlbnRzIGhhdmUgYSAidW5pdCBtYXNrIgotLSB0aGlzIGlzIGEgdmFsdWUgdGhhdCBmdXJ0aGVyIHJlc3RyaWN0cyB0aGUgdHlwZXMgb2YgZXZlbnQgdGhhdCBhcmUgY291bnRlZC4KWW91IGNhbiBzZWUgdGhlIGV2ZW50IHR5cGVzIGFuZCB1bml0IG1hc2tzIGZvciB5b3VyIENQVSB1c2luZyA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGhlbHA8L3N0cm9uZz48L3NwYW4+LgpNb3JlIGluZm9ybWF0aW9uIG9uIGV2ZW50IHNwZWNpZmljYXRpb24gY2FuIGJlIGZvdW5kIGF0IDxhIGNsYXNzPSJ4cmVmIiBocmVmPSIjZXZlbnRzcGVjIiB0aXRsZT0iNC6gU3BlY2lmeWluZyBwZXJmb3JtYW5jZSBjb3VudGVyIGV2ZW50cyI+U2VjdGlvbqA0LCAmIzgyMjA7U3BlY2lmeWluZyBwZXJmb3JtYW5jZSBjb3VudGVyIGV2ZW50cyYjODIyMTs8L2E+Lgo8L3A+CiAgICAgICAgICA8cD4KVGhlIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wZXJmPC9zdHJvbmc+PC9zcGFuPiBjb21tYW5kIHN5bnRheCBpczoKPC9wPgogICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+b3BlcmYgWyBvcHRpb25zIF0gWyAtLXN5c3RlbS13aWRlIHwgLS1waWQ9Jmx0O1BJRCZndDsgfCBbIGNvbW1hbmQgWyBhcmdzIF0gXSBdPC9wcmU+CiAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8cD4KV2hlbiBwcm9maWxpbmcgYW4gYXBwbGljYXRpb24gdXNpbmcgZWl0aGVyIHRoZSA8Y29kZSBjbGFzcz0iY29kZSI+Y29tbWFuZDwvY29kZT4gb3IgPGNvZGUgY2xhc3M9ImNvZGUiPi0tcGlkPC9jb2RlPiBvcHRpb24gb2YKPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3BlcmY8L3N0cm9uZz48L3NwYW4+LCBmb3JrcyBhbmQgZXhlY3Mgb2YgdGhlIHByb2ZpbGVkIHByb2Nlc3Mgd2lsbCBhbHNvIGJlIHByb2ZpbGVkLiBUaGUgc2FtcGxlcwpmcm9tIGFuIGV4ZWMnZWQgcHJvY2VzcyB3aWxsIGJlIGF0dHJpYnV0ZWQgdG8gdGhlIGV4ZWN1dGFibGUgYmluYXJ5IHJ1biBieSB0aGF0IHByb2Nlc3MuIFNlZQo8YSBjbGFzcz0ieHJlZiIgaHJlZj0iI2ludGVycHJldGluZ19vcGVyZl9yZXN1bHRzIiB0aXRsZT0iNy6gVXNpbmcgb3BlcmYgdG8gcHJvZmlsZSBmb3JrL2V4ZWNzIj5TZWN0aW9uoDcsICYjODIyMDtVc2luZyBvcGVyZiB0byBwcm9maWxlIGZvcmsvZXhlY3MmIzgyMjE7PC9hPgo8L3A+CiAgICAgICAgICA8cD4KRm9sbG93aW5nIGlzIGEgZGVzY3JpcHRpb24gb2YgdGhlIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wZXJmPC9zdHJvbmc+PC9zcGFuPiBvcHRpb25zLgo8L3A+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj5jb21tYW5kIFthcmdzXTwvY29kZT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCVRoZSBjb21tYW5kIG9yIGFwcGxpY2F0aW9uIHRvIGJlIHByb2ZpbGVkLiBUaGU8c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT5bYXJnc108L2VtPjwvc3Bhbj4gYXJlIHRoZSBpbnB1dCBhcmd1bWVudHMKICAgICAgICB0aGF0IHRoZSBjb21tYW5kIG9yIGFwcGxpY2F0aW9uIHJlcXVpcmVzLiBFaXRoZXIgPGNvZGUgY2xhc3M9ImNvZGUiPmNvbW1hbmQ8L2NvZGU+LCA8Y29kZSBjbGFzcz0iY29kZSI+LS1waWQ8L2NvZGU+IG9yCiAgICAgICAgPGNvZGUgY2xhc3M9ImNvZGUiPi0tc3lzdGVtLXdpZGU8L2NvZGU+IGlzIHJlcXVpcmVkLCBidXQgY2Fubm90IGJlIHVzZWQgc2ltdWx0YW5lb3VzbHkuCgkJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXBpZCAvIC1wIFtQSURdPC9jb2RlPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJVGhpcyBvcHRpb24gZW5hYmxlcyA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGVyZjwvc3Ryb25nPjwvc3Bhbj4gdG8gcHJvZmlsZSBhIHJ1bm5pbmcgYXBwbGljYXRpb24uIDxjb2RlIGNsYXNzPSJjb2RlIj5QSUQ8L2NvZGU+CgkJc2hvdWxkIGJlIHRoZSBwcm9jZXNzIElEIG9mIHRoZSBwcm9jZXNzIHlvdSB3aXNoIHRvIHByb2ZpbGUuIFdoZW4KCQlmaW5pc2hlZCBwcm9maWxpbmcgKGUuZy4sIHdoZW4gdGhlIHByb2ZpbGVkIHByb2Nlc3MgZW5kcyksIHByZXNzCgkJQ3RybC1jIHRvIHN0b3AgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3BlcmY8L3N0cm9uZz48L3NwYW4+LgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1zeXN0ZW0td2lkZSAvIC1zPC9jb2RlPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJVGhpcyBvcHRpb24gaXMgZm9yIHBlcmZvcm1pbmcgYSBzeXN0ZW0td2lkZSBwcm9maWxlLiBZb3UgbXVzdAoJCWhhdmUgcm9vdCBhdXRob3JpdHkgdG8gcnVuIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wZXJmPC9zdHJvbmc+PC9zcGFuPiBpbiB0aGlzIG1vZGUuCgkJV2hlbiBmaW5pc2hlZCBwcm9maWxpbmcsIEN0cmwtQyB0byBzdG9wIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wZXJmPC9zdHJvbmc+PC9zcGFuPi4gSWYgeW91IHJ1bgoJCTxjb2RlIGNsYXNzPSJjb2RlIj5vcGVyZiAtLXN5c3RlbS13aWRlPC9jb2RlPiBhcyBhIGJhY2tncm91bmQgam9iIChpLmUuLCB3aXRoIHRoZSAmYW1wOyksIHlvdQoJCTxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+PGVtPm11c3Q8L2VtPjwvc3Bhbj4gc3RvcCBpdCBpbiBhIGNvbnRyb2xsZWQgbWFubmVyIGluIG9yZGVyIHRvIHByb2Nlc3MKCQl0aGUgcHJvZmlsZSBkYXRhIGl0IGhhcyBjb2xsZWN0ZWQuICBVc2UgPGNvZGUgY2xhc3M9ImNvZGUiPmtpbGwgLVNJR0lOVCAmbHQ7b3BlcmYtUElEJmd0OzwvY29kZT4KCQlmb3IgdGhpcyBwdXJwb3NlLiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHdoZW4gcnVubmluZyA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGVyZjwvc3Ryb25nPjwvc3Bhbj4KCQl3aXRoIHRoaXMgb3B0aW9uLCB5b3VyIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnkgc2hvdWxkIGJlIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+L3Jvb3Q8L2NvZGU+IG9yIGEgc3ViZGlyZWN0b3J5CgkJb2YgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4vcm9vdDwvY29kZT4gdG8gYXZvaWQgc3RvcmluZyBzYW1wbGUgZGF0YSBmaWxlcyBpbiBsb2NhdGlvbnMgYWNjZXNzaWJsZSBieSByZWd1bGFyIHVzZXJzLgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS12bWxpbnV4IC8gayBbdm1saW51eF9wYXRoXTwvY29kZT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCUEgdm1saW51eCBmaWxlIHRoYXQgbWF0Y2hlcyB0aGUgcnVubmluZyBrZXJuZWwgdGhhdCBoYXMgc3ltYm9sIGFuZC9vciBkZWJ1Z2luZm8uCgkJS2VybmVsIHNhbXBsZXMgd2lsbCBiZSBhdHRyaWJ1dGVkIHRvIHRoaXMgYmluYXJ5LCBhbGxvd2luZyBwb3N0LXByb2Nlc3NpbmcgdG9vbHMKCQkobGlrZSA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcHJlcG9ydDwvc3Ryb25nPjwvc3Bhbj4pIHRvIGF0dHJpYnV0ZSBzYW1wbGVzIHRvIHRoZSBhcHByb3ByaWF0ZSBrZXJuZWwgc3ltYm9scy4KCQlJZiB0aGlzIG9wdGlvbiBpcyBub3Qgc3BlY2lmaWVkLCBhbGwga2VybmVsIHNhbXBsZXMgd2lsbCBiZSBhdHRyaWJ1dGVkIHRvIGEgcHNldWRvCgkJYmluYXJ5IG5hbWVkICJuby12bWxpbnV4Ii4KCQk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tY2FsbGdyYXBoIC8gLWc8L2NvZGU+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8cD4KCQlUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBjYWxsZ3JhcGggdG8gYmUgc2F2ZWQgZHVyaW5nIHByb2ZpbGluZy4gTk9URTogVGhlCgkJZnVsbCBjYWxsY2hhaW4gaXMgcmVjb3JkZWQsIHNvIHRoZXJlIGlzIG5vIGRlcHRoIGxpbWl0LgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1hcHBlbmQgLyAtYTwvY29kZT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCUJ5IGRlZmF1bHQsIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wZXJmPC9zdHJvbmc+PC9zcGFuPiBtb3ZlcyBvbGQgcHJvZmlsZSBkYXRhIGZyb20KCQk8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPiZsdDtzZXNzaW9uX2RpciZndDsvc2FtcGxlcy9jdXJyZW50PC9jb2RlPiB0bwoJCTxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+Jmx0O3Nlc3Npb25fZGlyJmd0Oy9zYW1wbGVzL3ByZXZpb3VzPC9jb2RlPi4KCQlJZiBhICdwcmV2aW91cycgcHJvZmlsZSBhbHJlYWR5IGV4aXN0ZWQsIGl0IHdpbGwgYmUgcmVwbGFjZWQuIElmIHRoZQoJCTxjb2RlIGNsYXNzPSJjb2RlIj4tLWFwcGVuZDwvY29kZT4gb3B0aW9uIGlzIHBhc3NlZCwgb2xkIHByb2ZpbGUgZGF0YSBpbiAnY3VycmVudCcgaXMgbGVmdCBpbiBwbGFjZSBhbmQKCQluZXcgcHJvZmlsZSBkYXRhIHdpbGwgYmUgYWRkZWQgdG8gaXQsIGFuZCB0aGUgJ3ByZXZpb3VzJyBwcm9maWxlIChpZiBvbmUgZXhpc3RlZCkKCQl3aWxsIHJlbWFpbiB1bnRvdWNoZWQuIFRvIGFjY2VzcyB0aGUgJ3ByZXZpb3VzJyBwcm9maWxlLCBzaW1wbHkgYWRkIGEgc2Vzc2lvbgoJCXNwZWNpZmljYXRpb24gdG8gdGhlIG5vcm1hbCBpbnZvY2F0aW9uIG9mIG9wcm9maWxlIHBvc3QtcHJvY2Vzc2luZyB0b29sczsgZm9yIGV4YW1wbGU6CgkJPC9wPgogICAgICAgICAgICAgICAgPHA+CgkJPC9wPgogICAgICAgICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+b3ByZXBvcnQgc2Vzc2lvbjpwcmV2aW91czwvcHJlPgogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgPHA+CgkJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWV2ZW50cyAvIC1lICBbZXZlbnQxWyxldmVudDJbLC4uLl1dXTwvY29kZT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCVRoaXMgb3B0aW9uIGlzIGZvciBwYXNzaW5nIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgZXZlbnQgc3BlY2lmaWNhdGlvbnMKCQlmb3IgcHJvZmlsaW5nLiBFYWNoIGV2ZW50IHNwZWMgaXMgb2YgdGhlIGZvcm06CgkJPC9wPgogICAgICAgICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+bmFtZTpjb3VudFs6dW5pdG1hc2tbOmtlcm5lbFs6dXNlcl1dXTwvcHJlPgogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgPHA+CgkJV2hlbiBubyBldmVudCBzcGVjaWZpY2F0aW9uIGlzIGdpdmVuLCB0aGUgZGVmYXVsdCBldmVudCBmb3IgdGhlIHJ1bm5pbmcKCQlwcm9jZXNzb3IgdHlwZSB3aWxsIGJlIHVzZWQgZm9yIHByb2ZpbGluZy4gVXNlIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9waGVscDwvc3Ryb25nPjwvc3Bhbj4KCQl0byBsaXN0IHRoZSBhdmFpbGFibGUgZXZlbnRzIGZvciB5b3VyIHByb2Nlc3NvciB0eXBlLgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1zZXBhcmF0ZS10aHJlYWQgLyAtdDwvY29kZT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCVRoaXMgb3B0aW9uIGNhdGVnb3JpemVzIHNhbXBsZXMgYnkgdGhyZWFkIGdyb3VwIElEICh0Z2lkKSBhbmQgdGhyZWFkIElEICh0aWQpLgoJCVRoZSA8Y29kZSBjbGFzcz0iY29kZSI+LS1zZXBhcmF0ZS10aHJlYWQ8L2NvZGU+IG9wdGlvbiBpcyB1c2VmdWwgZm9yIHNlZWluZyBwZXItdGhyZWFkIHNhbXBsZXMgaW4KCQltdWx0aS10aHJlYWRlZCBhcHBsaWNhdGlvbnMuICBXaGVuIHVzZWQgaW4gY29uanVjdGlvbiB3aXRoIHRoZSA8Y29kZSBjbGFzcz0iY29kZSI+LS1zeXN0ZW0td2lkZTwvY29kZT4KCQlvcHRpb24sIDxjb2RlIGNsYXNzPSJjb2RlIj4tLXNlcGFyYXRlLXRocmVhZDwvY29kZT4gaXMgYWxzbyB1c2VmdWwgZm9yIHNlZWluZyBwZXItcHJvY2VzcwoJCShpLmUuLCBwZXItdGhyZWFkIGdyb3VwKSBzYW1wbGVzIGZvciB0aGUgY2FzZSB3aGVyZSBtdWx0aXBsZSBwcm9jZXNzZXMgYXJlCgkJZXhlY3V0aW5nIHRoZSBzYW1lIHByb2dyYW0gZHVyaW5nIGEgcHJvZmlsaW5nIHJ1bi4KCQk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc2VwYXJhdGUtY3B1IC8gLWM8L2NvZGU+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8cD4KCQlUaGlzIG9wdGlvbiBjYXRlZ29yaXplcyBzYW1wbGVzIGJ5IGNwdS4KCQk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc2Vzc2lvbi1kaXIgLyAtZCBbcGF0aF08L2NvZGU+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8cD4KCQlUaGlzIG9wdGlvbiBzcGVjaWZpZXMgdGhlIHNlc3Npb24gZGlyZWN0b3J5IHRvIGhvbGQgdGhlIHNhbXBsZSBkYXRhLiBJZiBub3Qgc3BlY2lmaWVkLAoJCXRoZSBkYXRhIGlzIHNhdmVkIGluIHRoZSA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPm9wcm9maWxlX2RhdGE8L2NvZGU+IGRpcmVjdG9yeSBvbiB0aGUgY3VycmVudCBwYXRoLgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS0tbGF6eS1jb252ZXJzaW9uIC8gLWw8L2NvZGU+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8cD4KCQlVc2UgdGhpcyBvcHRpb24gdG8gcmVkdWNlIHRoZSBvdmVyaGVhZCBvZiA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGVyZjwvc3Ryb25nPjwvc3Bhbj4gZHVyaW5nIHByb2ZpbGluZy4KCQlOb3JtYWxseSwgcHJvZmlsZSBkYXRhIHJlY2VpdmVkIGZyb20gdGhlIGtlcm5lbCBpcyBjb252ZXJ0ZWQgdG8gT1Byb2ZpbGUgZm9ybWF0CgkJZHVyaW5nIHByb2ZpbGluZyB0aW1lLiBUaGlzIGlzIHR5cGljYWxseSBub3QgYW4gaXNzdWUgd2hlbiBwcm9maWxpbmcgYSBzaW5nbGUKCQlhcHBsaWNhdGlvbi4gQnV0IHdoZW4gdXNpbmcgdGhlIDxjb2RlIGNsYXNzPSJjb2RlIj4tLXN5c3RlbS13aWRlPC9jb2RlPiBvcHRpb24sIHRoaXMgb24tdGhlLWZseQoJCWNvbnZlcnNpb24gcHJvY2VzcyBjYW4gY2F1c2Ugbm90aWNlYWJsZSBvdmVyaGVhZCwgcGFydGljdWxhcmx5IG9uIGJ1c3kKCQltdWx0aS1wcm9jZXNzb3Igc3lzdGVtcy4gVGhlIDxjb2RlIGNsYXNzPSJjb2RlIj4tLWxhenktY29udmVyc2lvbjwvY29kZT4gb3B0aW9uIGRpcmVjdHMKCQk8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGVyZjwvc3Ryb25nPjwvc3Bhbj4gdG8gd2FpdCB1bnRpbCBwcm9maWxpbmcgaXMgY29tcGxldGVkIHRvIGRvIHRoZSBjb252ZXJzaW9uCgkJb2YgcHJvZmlsZSBkYXRhLgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS12ZXJib3NlIC8gLVYgW2xldmVsXTwvY29kZT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCUEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgZGVidWdnaW5nIGNvbnRyb2wgdmFsdWVzIHVzZWQgdG8gaW5jcmVhc2UgdGhlIHZlcmJvc2l0eSBvZiB0aGUKCQlvdXRwdXQuIFZhbGlkIHZhbHVlcyBhcmU6IGRlYnVnLCByZWNvcmQsIGNvbnZlcnQsIG1pc2MsIHNmaWxlLCBhcmNzLCBhbmQgdGhlIHNwZWNpYWwgdmFsdWUsICdhbGwnLgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS12ZXJzaW9uIC12IDwvY29kZT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCVNob3cgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3BlcmY8L3N0cm9uZz48L3NwYW4+IHZlcnNpb24uCgkJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWhlbHAgLyAtaDwvY29kZT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCVNob3cgYSBoZWxwIG1lc3NhZ2UuCgkJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MSIgdGl0bGU9IjIuoFVzaW5nIG9wY29udHJvbCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIGlkPSJjb250cm9sbGluZy1kYWVtb24iPjwvYT4yLqBVc2luZyA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGNvbnRyb2w8L3N0cm9uZz48L3NwYW4+PC9oMj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgpJbiB0aGlzIHNlY3Rpb24gd2UgZGVzY3JpYmUgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGNvbnRyb2wgb2YgdGhlIHByb2ZpbGluZyBzeXN0ZW0Kd2l0aCBvcGNvbnRyb2wgaW4gbW9yZSBkZXB0aC4gU2VlIDxhIGNsYXNzPSJ4cmVmIiBocmVmPSIjY29udHJvbGxpbmctb3BlcmYiIHRpdGxlPSIxLqBVc2luZyBvcGVyZiI+U2VjdGlvbqAxLCAmIzgyMjA7VXNpbmcgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3BlcmY8L3N0cm9uZz48L3NwYW4+JiM4MjIxOzwvYT4gZm9yIGEgZGVzY3JpcHRpb24Kb2YgdGhlIHByZWZlcnJlZCBwcm9maWxpbmcgbWV0aG9kLgo8L3A+CiAgICAgICAgICA8cD4KVGhlIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wY29udHJvbDwvc3Ryb25nPjwvc3Bhbj4gc2NyaXB0IGhhcyBhIGRlZmF1bHQgc2V0dXAsIGJ1dCB5b3UKY2FuIGFsdGVyIHRoaXMgd2l0aCB0aGUgb3B0aW9ucyBnaXZlbiBiZWxvdy4gSW4gcGFydGljdWxhciwgeW91IGNhbiBzZWxlY3QKc3BlY2lmaWMgaGFyZHdhcmUgZXZlbnRzIG9uIHdoaWNoIHRvIGJhc2UgeW91ciBwcm9maWxlLiBTZWUgPGEgY2xhc3M9InhyZWYiIGhyZWY9IiNjb250cm9sbGluZy1vcGVyZiIgdGl0bGU9IjEuoFVzaW5nIG9wZXJmIj5TZWN0aW9uoDEsICYjODIyMDtVc2luZyA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGVyZjwvc3Ryb25nPjwvc3Bhbj4mIzgyMjE7PC9hPiBmb3IgYW4KaW50cm9kdWN0aW9uIHRvIGhhcmR3YXJlIGV2ZW50cyBhbmQgcGVyZm9ybWFuY2UgY291bnRlciBjb25maWd1cmF0aW9uLgpUaGUgZXZlbnQgdHlwZXMgYW5kIHVuaXQgbWFza3MgZm9yIHlvdXIgQ1BVIGFyZSBsaXN0ZWQgYnkgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3Bjb250cm9sCi0tbGlzdC1ldmVudHM8L3N0cm9uZz48L3NwYW4+IG9yIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9waGVscDwvc3Ryb25nPjwvc3Bhbj4uCjwvcD4KICAgICAgICAgIDxwPgpUaGUgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3Bjb250cm9sPC9zdHJvbmc+PC9zcGFuPiBzY3JpcHQgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBhY3Rpb25zIDoKPC9wPgogICAgICAgICAgPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1pbml0PC9jb2RlPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJTG9hZHMgdGhlIE9Qcm9maWxlIG1vZHVsZSBpZiByZXF1aXJlZCBhbmQgbWFrZXMgdGhlIE9Qcm9maWxlIGRyaXZlcgoJCWludGVyZmFjZSBhdmFpbGFibGUuCgkJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXNldHVwPC9jb2RlPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJICAgIEZvbGxvd2VkIGJ5IGxpc3QgYXJndW1lbnRzIGZvciBwcm9maWxpbmcgc2V0IHVwLiBMaXN0IG9mIGFyZ3VtZW50cwoJCSAgICBzYXZlZCBpbiA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPi9yb290Ly5vcHJvZmlsZS9kYWVtb25yYzwvY29kZT4uCgkJICAgIEdpdmluZyB0aGlzIG9wdGlvbiBpcyBub3QgbmVjZXNzYXJ5OyB5b3UgY2FuIGp1c3QgZGlyZWN0bHkgcGFzcyBvbmUKCQkgICAgb2YgdGhlIHNldHVwIG9wdGlvbnMsIGUuZy4gPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3Bjb250cm9sIC0tbm8tdm1saW51eDwvc3Ryb25nPjwvc3Bhbj4uCgkJICA8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc3RhdHVzPC9jb2RlPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJU2hvdyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uLgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1zdGFydC1kYWVtb248L2NvZGU+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8cD4KCQkgICAgU3RhcnQgdGhlIG9wcm9maWxlIGRhZW1vbiB3aXRob3V0IHN0YXJ0aW5nIGFjdHVhbCBwcm9maWxpbmcuIFRoZSBwcm9maWxpbmcKCQljYW4gdGhlbiBiZSBzdGFydGVkIHVzaW5nIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc3RhcnQ8L2NvZGU+LiBUaGlzIGlzIHVzZWZ1bCBmb3IgYXZvaWRpbmcKCQltZWFzdXJpbmcgdGhlIGNvc3Qgb2YgZGFlbW9uIHN0YXJ0dXAsIGFzIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc3RhcnQ8L2NvZGU+IGlzIGEgc2ltcGxlCgkJd3JpdGUgdG8gYSBmaWxlIGluIG9wcm9maWxlZnMuCgkJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXN0YXJ0PC9jb2RlPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJICAgIFN0YXJ0IGRhdGEgY29sbGVjdGlvbiB3aXRoIGVpdGhlciBhcmd1bWVudHMgcHJvdmlkZWQgYnkgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1zZXR1cDwvY29kZT4KCQlvciBpbmZvcm1hdGlvbiBzYXZlZCBpbiA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPi9yb290Ly5vcHJvZmlsZS9kYWVtb25yYzwvY29kZT4uIFNwZWNpZnlpbmcKCQl0aGUgYWRkaXRpb24gPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS12ZXJib3NlPC9jb2RlPiBtYWtlcyB0aGUgZGFlbW9uIGdlbmVyYXRlIGxvdHMgb2YgZGVidWcgZGF0YQoJCXdoaWxzdCBpdCBpcyBydW5uaW5nLgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1kdW1wPC9jb2RlPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJICAgIEZvcmNlIGEgZmx1c2ggb2YgdGhlIGNvbGxlY3RlZCBwcm9maWxpbmcgZGF0YSB0byB0aGUgZGFlbW9uLgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1zdG9wPC9jb2RlPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJICAgIFN0b3AgZGF0YSBjb2xsZWN0aW9uLgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1zaHV0ZG93bjwvY29kZT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCSAgICBTdG9wIGRhdGEgY29sbGVjdGlvbiBhbmQga2lsbCB0aGUgZGFlbW9uLgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1yZXNldDwvY29kZT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCSAgICBDbGVhcnMgb3V0IGRhdGEgZnJvbSBjdXJyZW50IHNlc3Npb24sIGJ1dCBsZWF2ZXMgc2F2ZWQgc2Vzc2lvbnMuCgkJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc2F2ZT08L2NvZGU+c2Vzc2lvbl9uYW1lPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJICAgIFNhdmUgZGF0YSBmcm9tIGN1cnJlbnQgc2Vzc2lvbiB0byBzZXNzaW9uX25hbWUuCgkJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWRlaW5pdDwvY29kZT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgU2h1dHMgZG93biBkYWVtb24uIFVubG9hZCB0aGUgT1Byb2ZpbGUgbW9kdWxlIGFuZCBvcHJvZmlsZWZzLgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1saXN0LWV2ZW50czwvY29kZT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCSAgICBMaXN0IGV2ZW50IHR5cGVzIGFuZCB1bml0IG1hc2tzLgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1oZWxwPC9jb2RlPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJICAgIEdlbmVyYXRlIHVzYWdlIG1lc3NhZ2VzLgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICA8L2RsPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cD4KVGhlcmUgYXJlIGEgbnVtYmVyIG9mIHBvc3NpYmxlIHNldHRpbmdzLCBvZiB3aGljaCwgb25seQo8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXZtbGludXg8L2NvZGU+IChvciA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLW5vLXZtbGludXg8L2NvZGU+KQppcyByZXF1aXJlZC4gVGhlc2Ugc2V0dGluZ3MgYXJlIHN0b3JlZCBpbiA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPn4vLm9wcm9maWxlL2RhZW1vbnJjPC9jb2RlPi4KPC9wPgogICAgICAgICAgPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWJ1ZmZlci1zaXplPTwvY29kZT5udW08L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8cD4KCQlOdW1iZXIgb2Ygc2FtcGxlcyBpbiBrZXJuZWwgYnVmZmVyLiAKCQlCdWZmZXIgd2F0ZXJzaGVkIG5lZWRzIHRvIGJlIHR3ZWFrZWQgd2hlbiBjaGFuZ2luZyB0aGlzIHZhbHVlLgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWJ1ZmZlci13YXRlcnNoZWQ9PC9jb2RlPm51bTwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCVNldCBrZXJuZWwgYnVmZmVyIHdhdGVyc2hlZCB0byBudW0gc2FtcGxlcy4gV2hlbiByZW1haW4gb25seQoJCWJ1ZmZlci1zaXplIC0gYnVmZmVyLXdhdGVyc2hlZCBmcmVlIGVudHJpZXMgcmVtYWluIGluIHRoZSBrZXJuZWwgYnVmZmVyLCBkYXRhIHdpbGwgYmUKCQlmbHVzaGVkIHRvIHRoZSBkYWVtb24uICBNb3N0IHVzZWZ1bCB2YWx1ZXMgYXJlIGluIHRoZSByYW5nZSBbMC4yNSAtIDAuNV0gKiBidWZmZXItc2l6ZS4KCQk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1jcHUtYnVmZmVyLXNpemU9PC9jb2RlPm51bTwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCU51bWJlciBvZiBzYW1wbGVzIGluIGtlcm5lbCBwZXItY3B1IGJ1ZmZlci4gSWYgeW91CgkJcHJvZmlsZSBhdCBoaWdoIHJhdGUsIGl0IGNhbiBoZWxwIHRvIGluY3JlYXNlIHRoaXMgaWYgdGhlIGxvZwoJCWZpbGUgc2hvdyBleGNlc3NpdmUgY291bnQgb2Ygc2FtcGxlcyBsb3N0IGR1ZSB0byBjcHUgYnVmZmVyIG92ZXJmbG93LiAKCQk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1ldmVudD08L2NvZGU+W2V2ZW50c3BlY108L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8cD4KCQlVc2UgdGhlIGdpdmVuIHBlcmZvcm1hbmNlIGNvdW50ZXIgZXZlbnQgdG8gcHJvZmlsZS4KCQlTZWUgPGEgY2xhc3M9InhyZWYiIGhyZWY9IiNldmVudHNwZWMiIHRpdGxlPSI0LqBTcGVjaWZ5aW5nIHBlcmZvcm1hbmNlIGNvdW50ZXIgZXZlbnRzIj5TZWN0aW9uoDQsICYjODIyMDtTcGVjaWZ5aW5nIHBlcmZvcm1hbmNlIGNvdW50ZXIgZXZlbnRzJiM4MjIxOzwvYT4gYmVsb3cuCgkJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc2Vzc2lvbi1kaXI9PC9jb2RlPmRpcl9wYXRoPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJICAgIENyZWF0ZS91c2Ugc2FtcGxlIGRhdGFiYXNlIG91dCBvZiBkaXJlY3RvcnkgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5kaXJfcGF0aDwvY29kZT4gaW5zdGVhZCBvZgoJCXRoZSBkZWZhdWx0IGxvY2F0aW9uICgvdmFyL2xpYi9vcHJvZmlsZSkuCgkJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc2VwYXJhdGU9PC9jb2RlPltub25lLGxpYixrZXJuZWwsdGhyZWFkLGNwdSxhbGxdPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJQnkgZGVmYXVsdCwgZXZlcnkgcHJvZmlsZSBpcyBzdG9yZWQgaW4gYSBzaW5nbGUgZmlsZS4gVGh1cywgZm9yIGV4YW1wbGUsCgkJc2FtcGxlcyBpbiB0aGUgQyBsaWJyYXJ5IGFyZSBhbGwgYWNjcmVkaXRlZCB0byB0aGUgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4vbGliL2xpYmMubzwvY29kZT4KCQlwcm9maWxlLiBIb3dldmVyLCB5b3UgY2hvb3NlIHRvIGNyZWF0ZSBzZXBhcmF0ZSBzYW1wbGUgZmlsZXMgYnkgc3BlY2lmeWluZwoJCW9uZSBvZiB0aGUgYmVsb3cgb3B0aW9ucy4KCQk8L3A+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj4KICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMSI+CiAgICAgICAgICAgICAgICAgICAgPGNvbGdyb3VwPgogICAgICAgICAgICAgICAgICAgICAgPGNvbCAvPgogICAgICAgICAgICAgICAgICAgICAgPGNvbCAvPgogICAgICAgICAgICAgICAgICAgIDwvY29sZ3JvdXA+CiAgICAgICAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+bm9uZTwvY29kZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPk5vIHByb2ZpbGUgc2VwYXJhdGlvbiAoZGVmYXVsdCk8L3RkPgogICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPmxpYjwvY29kZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPkNyZWF0ZSBwZXItYXBwbGljYXRpb24gcHJvZmlsZXMgZm9yIGxpYnJhcmllczwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+a2VybmVsPC9jb2RlPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+Q3JlYXRlIHBlci1hcHBsaWNhdGlvbiBwcm9maWxlcyBmb3IgdGhlIGtlcm5lbCBhbmQga2VybmVsIG1vZHVsZXM8L3RkPgogICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPnRocmVhZDwvY29kZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPkNyZWF0ZSBwcm9maWxlcyBmb3IgZWFjaCB0aHJlYWQgYW5kIGVhY2ggdGFzazwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+Y3B1PC9jb2RlPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+Q3JlYXRlIHByb2ZpbGVzIGZvciBlYWNoIENQVTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+YWxsPC9jb2RlPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+QWxsIG9mIHRoZSBhYm92ZSBvcHRpb25zPC90ZD4KICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPHA+CgkJTm90ZSAgdGhhdCA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXNlcGFyYXRlPWtlcm5lbDwvY29kZT4gYWxzbyB0dXJucyBvbiA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXNlcGFyYXRlPWxpYjwvY29kZT4uCgkJCgkJV2hlbiB1c2luZyA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXNlcGFyYXRlPWtlcm5lbDwvY29kZT4sIHNhbXBsZXMgaW4gaGFyZHdhcmUgaW50ZXJydXB0cywgc29mdC1pcnFzLCBvciBvdGhlcgoJCWFzeW5jaHJvbm91cyBrZXJuZWwgY29udGV4dHMgYXJlIGNyZWRpdGVkIHRvIHRoZSB0YXNrIGN1cnJlbnRseSBydW5uaW5nLiBUaGlzIG1lYW5zIHlvdSB3aWxsIHNlZQoJCXNlZW1pbmdseSBub25zZW5zZSBwcm9maWxlcyBzdWNoIGFzIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+L2Jpbi9iYXNoPC9jb2RlPiBzaG93aW5nIHNhbXBsZXMgZm9yIHRoZSBQUFAgbW9kdWxlcywKCQlldGMuCgkJPC9wPgogICAgICAgICAgICAgICAgPHA+CgkJVXNpbmcgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1zZXBhcmF0ZT10aHJlYWQ8L2NvZGU+IGNyZWF0ZXMgYSBsb3QKCQlvZiBzYW1wbGUgZmlsZXMgaWYgeW91IGxlYXZlIE9Qcm9maWxlIHJ1bm5pbmcgZm9yIGEgd2hpbGU7IGl0J3MgbW9zdAoJCXVzZWZ1bCB3aGVuIHVzZWQgZm9yIHNob3J0IHNlc3Npb25zLCBvciB3aGVuIHVzaW5nIGltYWdlIGZpbHRlcmluZy4KCQk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1jYWxsZ3JhcGg9PC9jb2RlPiNkZXB0aDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCUVuYWJsZSBjYWxsLWdyYXBoIHNhbXBsZSBjb2xsZWN0aW9uIHdpdGggYSBtYXhpbXVtIGRlcHRoLiBVc2UgMCB0byBkaXNhYmxlCgkJY2FsbGdyYXBoIHByb2ZpbGluZy4gIE5PVEU6IENhbGxncmFwaCBzdXBwb3J0IGlzIGF2YWlsYWJsZSBvbiBhIGxpbWl0ZWQKCQludW1iZXIgb2YgcGxhdGZvcm1zIGF0IHRoaXMgdGltZTsgZm9yIGV4YW1wbGU6CgkJPC9wPgogICAgICAgICAgICAgICAgPHA+CgkJPC9wPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbWl6ZWRsaXN0Ij4KICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJpdGVtaXplZGxpc3QiIHR5cGU9ImRpc2MiPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ibGlzdGl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgPHA+eDg2IHdpdGggMi42IG9yIGhpZ2hlciBrZXJuZWw8L3A+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Imxpc3RpdGVtIj4KICAgICAgICAgICAgICAgICAgICAgIDxwPkFSTSB3aXRoIDIuNiBvciBoaWdoZXIga2VybmVsPC9wPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJsaXN0aXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICA8cD5Qb3dlclBDIHdpdGggMi42LjE3IG9yIGhpZ2hlciBrZXJuZWw8L3A+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPHA+CgkJPC9wPgogICAgICAgICAgICAgICAgPHA+CgkJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJvcHRpb24iPi0taW1hZ2U9PC9jb2RlPmltYWdlLFtpbWFnZXNdfCJhbGwiPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJSW1hZ2UgZmlsdGVyaW5nLiBJZiB5b3Ugc3BlY2lmeSBvbmUgb3IgbW9yZSBhYnNvbHV0ZQoJCXBhdGhzIHRvIGJpbmFyaWVzLCBPUHJvZmlsZSB3aWxsIG9ubHkgcHJvZHVjZSBwcm9maWxlIHJlc3VsdHMgZm9yIHRob3NlCgkJYmluYXJ5IGltYWdlcy4gVGhpcyBpcyB1c2VmdWwgZm9yIHJlc3RyaWN0aW5nIHRoZSBzb21ldGltZXMgdm9sdW1pbm91cwoJCW91dHB1dCB5b3UgbWF5IGdldCBvdGhlcndpc2UsIGVzcGVjaWFsbHkgd2l0aAoJCTxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc2VwYXJhdGU9dGhyZWFkPC9jb2RlPi4gTm90ZSB0aGF0IGlmIHlvdSBhcmUgdXNpbmcKCQk8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXNlcGFyYXRlPWxpYjwvY29kZT4gb3IKCQk8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXNlcGFyYXRlPWtlcm5lbDwvY29kZT4sIHRoZW4gaWYgeW91IHNwZWNpZmljYXRpb24gYW4KCQlhcHBsaWNhdGlvbiBiaW5hcnksIHRoZSBzaGFyZWQgbGlicmFyaWVzIGFuZCBrZXJuZWwgY29kZQoJCTxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+PGVtPmFyZTwvZW0+PC9zcGFuPiBpbmNsdWRlZC4gU3BlY2lmeSB0aGUgdmFsdWUKCQkiYWxsIiB0byBwcm9maWxlIGV2ZXJ5dGhpbmcgKHRoZSBkZWZhdWx0KS4KCQk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9Im9wdGlvbiI+LS12bWxpbnV4PTwvY29kZT5maWxlPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJdm1saW51eCBrZXJuZWwgaW1hZ2UuCgkJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLW5vLXZtbGludXg8L2NvZGU+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8cD4KCQlVc2UgdGhpcyB3aGVuIHlvdSBkb24ndCBoYXZlIGEga2VybmVsIHZtbGludXggZmlsZSwgYW5kIHlvdSBkb24ndCB3YW50CgkJdG8gcHJvZmlsZSB0aGUga2VybmVsLiBUaGlzIHN0aWxsIGNvdW50cyB0aGUgdG90YWwgbnVtYmVyIG9mIGtlcm5lbCBzYW1wbGVzLAoJCWJ1dCBjYW4ndCBnaXZlIHN5bWJvbC1iYXNlZCByZXN1bHRzIGZvciB0aGUga2VybmVsIG9yIGFueSBtb2R1bGVzLgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICA8L2RsPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgdGl0bGU9IjIuMS6gRXhhbXBsZXMiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj48YSBpZD0ib3Bjb250cm9sZXhhbXBsZXMiPjwvYT4yLjEuoEV4YW1wbGVzPC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDMiIHRpdGxlPSIyLjEuMS6gSW50ZWwgcGVyZm9ybWFuY2UgY291bnRlciBzZXR1cCI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0aXRsZSI+PGEgaWQ9ImV4YW1wbGVzcGVyZmN0ciI+PC9hPjIuMS4xLqBJbnRlbCBwZXJmb3JtYW5jZSBjb3VudGVyIHNldHVwPC9oND4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8cD4KSGVyZSwgd2UgaGF2ZSBhIFBlbnRpdW0gSUlJIHJ1bm5pbmcgYXQgODAwTUh6LCBhbmQgd2Ugd2FudCB0byBsb29rIGF0IHdoZXJlIGRhdGEgbWVtb3J5CnJlZmVyZW5jZXMgYXJlIGhhcHBlbmluZyBtb3N0LCBhbmQgYWxzbyBnZXQgcmVzdWx0cyBmb3IgQ1BVIHRpbWUuCjwvcD4KICAgICAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj4KIyBvcGNvbnRyb2wgLS1ldmVudD1DUFVfQ0xLX1VOSEFMVEVEOjQwMDAwMCAtLWV2ZW50PURBVEFfTUVNX1JFRlM6MTAwMDAKIyBvcGNvbnRyb2wgLS12bWxpbnV4PS9ib290LzIuNi4wL3ZtbGludXgKIyBvcGNvbnRyb2wgLS1zdGFydAo8L3ByZT4KICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QzIiB0aXRsZT0iMi4xLjIuoFN0YXJ0aW5nIHRoZSBkYWVtb24gc2VwYXJhdGVseSI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0aXRsZSI+PGEgaWQ9ImV4YW1wbGVzc3RhcnRkYWVtb24iPjwvYT4yLjEuMi6gU3RhcnRpbmcgdGhlIGRhZW1vbiBzZXBhcmF0ZWx5PC9oND4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8cD4KVXNlIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc3RhcnQtZGFlbW9uPC9jb2RlPiB0byBhdm9pZAp0aGUgcHJvZmlsZXIgc3RhcnR1cCBhZmZlY3RpbmcgcmVzdWx0cy4KPC9wPgogICAgICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPgojIG9wY29udHJvbCAtLXZtbGludXg9L2Jvb3QvMi42LjAvdm1saW51eAojIG9wY29udHJvbCAtLXN0YXJ0LWRhZW1vbgojIG15X2Zhdm91cml0ZV9iZW5jaG1hcmsgLS1pbml0CiMgb3Bjb250cm9sIC0tc3RhcnQgOyBteV9mYXZvdXJpdGVfYmVuY2htYXJrIC0tcnVuIDsgb3Bjb250cm9sIC0tc3RvcAo8L3ByZT4KICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QzIiB0aXRsZT0iMi4xLjMuoFNlcGFyYXRlIHByb2ZpbGVzIGZvciBsaWJyYXJpZXMgYW5kIHRoZSBrZXJuZWwiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGl0bGUiPjxhIGlkPSJleGFtcGxlc2VwYXJhdGUiPjwvYT4yLjEuMy6gU2VwYXJhdGUgcHJvZmlsZXMgZm9yIGxpYnJhcmllcyBhbmQgdGhlIGtlcm5lbDwvaDQ+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPHA+CkhlcmUsIHdlIHdhbnQgdG8gc2VlIGEgcHJvZmlsZSBvZiB0aGUgT1Byb2ZpbGUgZGFlbW9uIGl0c2VsZiwgaW5jbHVkaW5nIHdoZW4KaXQgd2FzIHJ1bm5pbmcgaW5zaWRlIHRoZSBrZXJuZWwgZHJpdmVyLCBhbmQgaXRzIHVzZSBvZiBzaGFyZWQgbGlicmFyaWVzLgo8L3A+CiAgICAgICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+CiMgb3Bjb250cm9sIC0tc2VwYXJhdGU9a2VybmVsIC0tdm1saW51eD0vYm9vdC8yLjYuMC92bWxpbnV4CiMgb3Bjb250cm9sIC0tc3RhcnQKIyBteV9mYXZvdXJpdGVfc3RyZXNzX3Rlc3QgLS1ydW4KIyBvcHJlcG9ydCAtbCAtcCAvbGliL21vZHVsZXMvMi42LjAva2VybmVsIC91c3IvbG9jYWwvYmluL29wcm9maWxlZAo8L3ByZT4KICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QzIiB0aXRsZT0iMi4xLjQuoFByb2ZpbGluZyBzZXNzaW9ucyI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0aXRsZSI+PGEgaWQ9ImV4YW1wbGVzc2Vzc2lvbnMiPjwvYT4yLjEuNC6gUHJvZmlsaW5nIHNlc3Npb25zPC9oND4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8cD4KSXQgY2FuIG9mdGVuIGJlIHVzZWZ1bCB0byBzcGxpdCB1cCBwcm9maWxpbmcgZGF0YSBpbnRvIHNldmVyYWwgZGlmZmVyZW50CnRpbWUgcGVyaW9kcy4gRm9yIGV4YW1wbGUsIHlvdSBtYXkgd2FudCB0byBjb2xsZWN0IGRhdGEgb24gYW4gYXBwbGljYXRpb24ncwpzdGFydHVwIHNlcGFyYXRlbHkgZnJvbSB0aGUgbm9ybWFsIHJ1bnRpbWUgZGF0YS4gWW91IGNhbiB1c2UgdGhlIHNpbXBsZQpjb21tYW5kIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wY29udHJvbCAtLXNhdmU8L3N0cm9uZz48L3NwYW4+IHRvIGRvIHRoaXMuIEZvciBleGFtcGxlIDoKPC9wPgogICAgICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPgojIG9wY29udHJvbCAtLXNhdmU9YmxhaAo8L3ByZT4KICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICA8cD4Kd2lsbCBjcmVhdGUgYSBzdWItZGlyZWN0b3J5IGluIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+JFNFU1NJT05fRElSL3NhbXBsZXM8L2NvZGU+IGNvbnRhaW5pbmcgdGhlIHNhbXBsZXMKdXAgdG8gdGhhdCBwb2ludCAodGhlIGN1cnJlbnQgc2Vzc2lvbidzIHNhbXBsZSBmaWxlcyBhcmUgbW92ZWQgaW50byB0aGlzCmRpcmVjdG9yeSkuIFlvdSBjYW4gdGhlbiBwYXNzIHRoaXMgc2Vzc2lvbiBuYW1lIGFzIGEgcGFyYW1ldGVyIHRvIHRoZSBwb3N0LXByb2ZpbGluZwphbmFseXNpcyB0b29scywgdG8gb25seSBnZXQgZGF0YSB1cCB0byB0aGUgcG9pbnQgeW91IG5hbWVkIHRoZQpzZXNzaW9uLiBJZiB5b3UgZG8gbm90IHdhbnQgdG8gc2F2ZSBhIHNlc3Npb24sIHlvdSBjYW4gZG8KPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+cm0gLXJmICRTRVNTSU9OX0RJUi9zYW1wbGVzL3Nlc3Npb25uYW1lPC9zdHJvbmc+PC9zcGFuPiBvciwgZm9yIHRoZQpjdXJyZW50IHNlc3Npb24sIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wY29udHJvbCAtLXJlc2V0PC9zdHJvbmc+PC9zcGFuPi4KPC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY3QxIiB0aXRsZT0iMy6gU2V0dGluZyB1cCB0aGUgSklUIHByb2ZpbGluZyBmZWF0dXJlIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+PGEgaWQ9InNldHVwLWppdCI+PC9hPjMuoFNldHRpbmcgdXAgdGhlIEpJVCBwcm9maWxpbmcgZmVhdHVyZTwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cD4KCQlUbyBnYXRoZXIgaW5mb3JtYXRpb24gYWJvdXQgSklUZWQgY29kZSBmcm9tIGEgdmlydHVhbCBtYWNoaW5lLAoJCWl0IG5lZWRzIHRvIGJlIGluc3RydW1lbnRlZCB3aXRoIGFuIGFnZW50IGxpYnJhcnkuIFdlIHVzZSB0aGUKCQlhZ2VudCBsaWJyYXJpZXMgZm9yIEphdmEgaW4gdGhlIGZvbGxvd2luZyBleGFtcGxlLiBUbyB1c2UgdGhlCgkJSmF2YSBwcm9maWxpbmcgZmVhdHVyZSwgeW91IG11c3QgYnVpbGQgT1Byb2ZpbGUgd2l0aCB0aGUgIi0td2l0aC1qYXZhIiBvcHRpb24KICAgICAgICAgICAgICAgICg8YSBjbGFzcz0ieHJlZiIgaHJlZj0iI2luc3RhbGwiIHRpdGxlPSI3LqBJbnN0YWxsYXRpb24iPlNlY3Rpb26gNywgJiM4MjIwO0luc3RhbGxhdGlvbiYjODIyMTs8L2E+KS4KCgk8L3A+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgdGl0bGU9IjMuMS6gSlZNIGluc3RydW1lbnRhdGlvbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJzZXR1cC1qaXQtanZtIj48L2E+My4xLqBKVk0gaW5zdHJ1bWVudGF0aW9uPC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHA+CgkJCUFkZCB0aGlzIHRvIHRoZSBzdGFydHVwIHBhcmFtZXRlcnMgb2YgdGhlIEpWTSAoZm9yIEpWTVRJKToKCgkJCTwvcD4KICAgICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+PGNvZGUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIGNsYXNzPSJvcHRpb24iPi1hZ2VudHBhdGg6Jmx0O2xpYmRpciZndDsvbGlianZtdGlfb3Byb2ZpbGUuc29bPSZsdDtvcHRpb25zJmd0O108L2NvZGU+IDwvcHJlPgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8cD4KCQkJb3IKCQkJPC9wPgogICAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj48Y29kZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgY2xhc3M9Im9wdGlvbiI+LWFnZW50bGliOmp2bXRpX29wcm9maWxlWz0mbHQ7b3B0aW9ucyZndDtdPC9jb2RlPiA8L3ByZT4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPHA+CgkJPC9wPgogICAgICAgICAgICA8cD4KCQkJVGhlIEpWTVBJIGFnZW50IGltcGxlbWVudGF0aW9uIGlzIGVuYWJsZWQgd2l0aCB0aGUgY29tbWFuZCBsaW5lIG9wdGlvbgoJCQk8L3A+CiAgICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPjxjb2RlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBjbGFzcz0ib3B0aW9uIj4tWHJ1bmp2bXBpX29wcm9maWxlWzombHQ7b3B0aW9ucyZndDtdPC9jb2RlPiA8L3ByZT4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPHA+CgkJPC9wPgogICAgICAgICAgICA8cD4KCQkJQ3VycmVudGx5LCB0aGVyZSBpcyBqdXN0IG9uZSBvcHRpb24gYXZhaWxhYmxlIC0tIDxjb2RlIGNsYXNzPSJvcHRpb24iPmRlYnVnPC9jb2RlPi4gRm9yIEpWTVBJLAoJCQl0aGUgY29udmVudGlvbiBmb3Igc3BlY2lmeWluZyBhbiBvcHRpb24gaXMgPGNvZGUgY2xhc3M9Im9wdGlvbiI+b3B0aW9uX25hbWU9W3llc3xub108L2NvZGU+LgoJCQlGb3IgSlZNVEksIHRoZSBvcHRpb24gc3BlY2lmaWNhdGlvbiBpcyBzaW1wbHkgdGhlIG9wdGlvbiBuYW1lLCBpbXBseWluZwoJCQkieWVzIjsgbm8gb3B0aW9uIHNwZWNpZmllZCBpbXBsaWVzICJubyIuCgkJPC9wPgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGFnZW50IGxpYnJhcnkgKGluc3RhbGxlZCBpbiA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPiZsdDtvcHJvZl9pbnN0YWxsX2RpciZndDsvbGliL29wcm9maWxlPC9jb2RlPikKICAgICAgICAgICAgICAgICAgICAgICAgbmVlZHMgdG8gYmUgaW4gdGhlIGxpYnJhcnkgc2VhcmNoIHBhdGggKGUuZy4gYWRkIHRoZSBsaWJyYXJ5IGRpcmVjdG9yeQogICAgICAgICAgICAgICAgICAgICAgICB0byA8Y29kZSBjbGFzcz0iY29uc3RhbnQiPkxEX0xJQlJBUllfUEFUSDwvY29kZT4pLiBJZiB0aGUgY29tbWFuZCBsaW5lIG9mCiAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBKVk0gaXMgbm90IGFjY2Vzc2libGUsIGl0IG1heSBiZSBidXJpZWQgd2l0aGluIHNoZWxsIHNjcmlwdHMgb3IgYQogICAgICAgICAgICAgICAgICAgICAgICBsYXVuY2hlciBwcm9ncmFtLiBJdCBtYXkgYWxzbyBiZSBwb3NzaWJsZSB0byBzZXQgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYWRkCiAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBpbnN0cnVtZW50YXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgIEZvciBTdW4gSlZNcyB0aGlzIGlzIDxjb2RlIGNsYXNzPSJjb25zdGFudCI+SkFWQV9UT09MX09QVElPTlM8L2NvZGU+LiBQbGVhc2UgY2hlY2sKICAgICAgICAgICAgICAgICAgICAgICAgeW91ciBKVk0gZG9jdW1lbnRhdGlvbiBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgZnVydGhlciBpbmZvcm1hdGlvbiBvbiB0aGUgYWdlbnQgc3RhcnR1cCBvcHRpb25zLgogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIHRpdGxlPSI0LqBVc2luZyBvcHJvZl9zdGFydCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIGlkPSJvcHJvZmlsZS1ndWkiPjwvYT40LqBVc2luZyA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcHJvZl9zdGFydDwvc3Ryb25nPjwvc3Bhbj48L2gyPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHA+ClRoZSA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcHJvZl9zdGFydDwvc3Ryb25nPjwvc3Bhbj4gYXBwbGljYXRpb24gcHJvdmlkZXMgYSBjb252ZW5pZW50IHdheSB0byBzdGFydCB0aGUgcHJvZmlsZXIuCk5vdGUgdGhhdCA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcHJvZl9zdGFydDwvc3Ryb25nPjwvc3Bhbj4gaXMganVzdCBhIHdyYXBwZXIgYXJvdW5kIHRoZSA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGNvbnRyb2w8L3N0cm9uZz48L3NwYW4+IHNjcmlwdCwKc28gaXQgZG9lcyBub3QgcHJvdmlkZSBtb3JlIHNlcnZpY2VzIHRoYW4gdGhlIHNjcmlwdCBpdHNlbGYuCjwvcD4KICAgICAgICAgIDxwPgpBZnRlciA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcHJvZl9zdGFydDwvc3Ryb25nPjwvc3Bhbj4gaXMgc3RhcnRlZCB5b3UgY2FuIHNlbGVjdCB0aGUgZXZlbnQgdHlwZSBmb3IgZWFjaCBjb3VudGVyOwp0aGUgc2FtcGxpbmcgcmF0ZSBhbmQgb3RoZXIgcmVsYXRlZCBwYXJhbWV0ZXJzIGFyZSBleHBsYWluZWQgaW4gPGEgY2xhc3M9InhyZWYiIGhyZWY9IiNjb250cm9sbGluZy1kYWVtb24iIHRpdGxlPSIyLqBVc2luZyBvcGNvbnRyb2wiPlNlY3Rpb26gMiwgJiM4MjIwO1VzaW5nIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wY29udHJvbDwvc3Ryb25nPjwvc3Bhbj4mIzgyMjE7PC9hPi4KVGhlICJDb25maWd1cmF0aW9uIiBzZWN0aW9uIGFsbG93cyB5b3UgdG8gc2V0IGdlbmVyYWwgcGFyYW1ldGVycyBzdWNoIGFzIHRoZSBidWZmZXIgc2l6ZSwga2VybmVsIGZpbGVuYW1lCmV0Yy4gVGhlIGNvdW50ZXIgc2V0dXAgaW50ZXJmYWNlIHNob3VsZCBiZSBzZWxmLWV4cGxhbmF0b3J5OyA8YSBjbGFzcz0ieHJlZiIgaHJlZj0iI2hhcmR3YXJlLWNvdW50ZXJzIiB0aXRsZT0iNS4xLqBIYXJkd2FyZSBwZXJmb3JtYW5jZSBjb3VudGVycyI+U2VjdGlvbqA1LjEsICYjODIyMDtIYXJkd2FyZSBwZXJmb3JtYW5jZSBjb3VudGVycyYjODIyMTs8L2E+IGFuZCByZWxhdGVkIApsaW5rcyBjb250YWluIGluZm9ybWF0aW9uIG9uIHVzaW5nIHVuaXQgbWFza3MuCjwvcD4KICAgICAgICAgIDxwPgpBIHN0YXR1cyBsaW5lIHNob3dzIHRoZSBjdXJyZW50IHN0YXR1cyBvZiB0aGUgcHJvZmlsZXI6IGhvdyBsb25nIGl0IGhhcyBiZWVuIHJ1bm5pbmcsIGFuZCB0aGUgYXZlcmFnZQpudW1iZXIgb2YgaW50ZXJydXB0cyByZWNlaXZlZCBwZXIgc2Vjb25kIGFuZCB0aGUgdG90YWwsIG92ZXIgYWxsIHByb2Nlc3NvcnMuCk5vdGUgdGhhdCBxdWl0dGluZyA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcHJvZl9zdGFydDwvc3Ryb25nPjwvc3Bhbj4gZG9lcyBub3Qgc3RvcCB0aGUgcHJvZmlsZXIuCjwvcD4KICAgICAgICAgIDxwPgpZb3VyIGNvbmZpZ3VyYXRpb24gaXMgc2F2ZWQgaW4gdGhlIHNhbWUgZmlsZSBhcyA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGNvbnRyb2w8L3N0cm9uZz48L3NwYW4+IHVzZXM7IHRoYXQgaXMsCjxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+fi8ub3Byb2ZpbGUvZGFlbW9ucmM8L2NvZGU+Lgo8L3A+CiAgICAgICAgICA8cD4KPC9wPgogICAgICAgICAgPGRpdiBjbGFzcz0ibm90ZSIgdGl0bGU9Ik5vdGUiIHN0eWxlPSJtYXJnaW4tbGVmdDogMC41aW47IG1hcmdpbi1yaWdodDogMC41aW47Ij48aDMgY2xhc3M9InRpdGxlIj5Ob3RlPC9oMz48c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcHJvZl9zdGFydDwvc3Ryb25nPjwvc3Bhbj4gZG9lcyBub3QgY3VycmVudGx5IHN1cHBvcnQgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3BlcmY8L3N0cm9uZz48L3NwYW4+LjwvZGl2PgogICAgICAgICAgPHA+CjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MSIgdGl0bGU9IjUuoENvbmZpZ3VyYXRpb24gZGV0YWlscyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIGlkPSJkZXRhaWxlZC1wYXJhbWV0ZXJzIj48L2E+NS6gQ29uZmlndXJhdGlvbiBkZXRhaWxzPC9oMj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QyIiB0aXRsZT0iNS4xLqBIYXJkd2FyZSBwZXJmb3JtYW5jZSBjb3VudGVycyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJoYXJkd2FyZS1jb3VudGVycyI+PC9hPjUuMS6gSGFyZHdhcmUgcGVyZm9ybWFuY2UgY291bnRlcnM8L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cD5Nb3N0IHByb2Nlc3NvciBtb2RlbHMgaW5jbHVkZSBwZXJmb3JtYW5jZSBtb25pdG9yIHVuaXRzIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gbW9uaXRvciAoY291bnQpCnZhcmlvdXMgdHlwZXMgb2YgaGFyZHdhcmUgZXZlbnRzLiAgVGhpcyBzZWN0aW9uIGlzIHdoZXJlIHlvdSBjYW4gZmluZCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgaW5mb3JtYXRpb24KdG8gaGVscCB5b3UgdXNlIHRoZXNlIGV2ZW50cyBmb3IgcHJvZmlsaW5nLiBZb3UgZG8gbm90IHJlYWxseSBuZWVkIHRvIHJlYWQgdGhpcyBzZWN0aW9uIHVubGVzcyB5b3UgYXJlIGludGVyZXN0ZWQgaW4gdXNpbmcKZXZlbnRzIG90aGVyIHRoYW4gdGhlIGRlZmF1bHQgZXZlbnQgY2hvc2VuIGJ5IE9Qcm9maWxlLgo8L3A+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5vdGUiIHRpdGxlPSJOb3RlIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDAuNWluOyBtYXJnaW4tcmlnaHQ6IDAuNWluOyI+CiAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+Tm90ZTwvaDM+CiAgICAgICAgICAgICAgPHA+CllvdXIgQ1BVIHR5cGUgbWF5IG5vdCBpbmNsdWRlIHRoZSByZXF1aXNpdGUgc3VwcG9ydCBmb3IgaGFyZHdhcmUgcGVyZm9ybWFuY2UgY291bnRlcnMsIGluIHdoaWNoIGNhc2UKeW91IG11c3QgdXNlIE9Qcm9maWxlIGluIHRpbWVyIG1vZGUgKHNlZSA8YSBjbGFzcz0ieHJlZiIgaHJlZj0iI3RpbWVyIiB0aXRsZT0iNS4yLqBPUHJvZmlsZSBpbiB0aW1lciBpbnRlcnJ1cHQgbW9kZSI+U2VjdGlvbqA1LjIsICYjODIyMDtPUHJvZmlsZSBpbiB0aW1lciBpbnRlcnJ1cHQgbW9kZSYjODIyMTs8L2E+KS4gCjwvcD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwPgpUaGUgSW50ZWwgaGFyZHdhcmUgcGVyZm9ybWFuY2UgY291bnRlcnMgYXJlIGRldGFpbGVkIGluIHRoZSBJbnRlbCBJQS0zMiBBcmNoaXRlY3R1cmUgTWFudWFsLCBWb2x1bWUgMywgYXZhaWxhYmxlCmZyb20gPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vZGV2ZWxvcGVyLmludGVsLmNvbS8iPmh0dHA6Ly9kZXZlbG9wZXIuaW50ZWwuY29tLzwvYT4uIApUaGUgQU1EIEF0aGxvbi9PcHRlcm9uL1BoZW5vbS9UdXJpb24gaW1wbGVtZW50YXRpb24gaXMgZGV0YWlsZWQgaW4gPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LmFtZC5jb20vdXMtZW4vYXNzZXRzL2NvbnRlbnRfdHlwZS93aGl0ZV9wYXBlcnNfYW5kX3RlY2hfZG9jcy8yMjAwNy5wZGYiPgpodHRwOi8vd3d3LmFtZC5jb20vdXMtZW4vYXNzZXRzL2NvbnRlbnRfdHlwZS93aGl0ZV9wYXBlcnNfYW5kX3RlY2hfZG9jcy8yMjAwNy5wZGY8L2E+LgpGb3IgSUJNIFBvd2VyUEMgcHJvY2Vzc29ycywgZG9jdW1lbnRhdGlvbiBpcyBhdmFpbGFibGUgYXQgPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwczovL3d3dy5wb3dlci5vcmcvIj4KaHR0cHM6Ly93d3cucG93ZXIub3JnLzwvYT4uIEZvciBleGFtcGxlLCA8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHBzOi8vd3d3LnBvd2VyLm9yZy9ldmVudHMvUG93ZXI3Ij4KaHR0cHM6Ly93d3cucG93ZXIub3JnL2V2ZW50cy9Qb3dlcjc8L2E+IGNvbnRhaW5zIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIHRoZSBwZXJmb3JtYW5jZQptb25pdG9yIHVuaXQgZm9yIHRoZSBJQk0gUE9XRVI3Lgo8L3A+CiAgICAgICAgICAgIDxwPgpUaGVzZSBwcm9jZXNzb3JzIGFyZSBjYXBhYmxlIG9mIGRlbGl2ZXJpbmcgYW4gaW50ZXJydXB0IHdoZW4gYSBjb3VudGVyIG92ZXJmbG93cy4KVGhpcyBpcyB0aGUgYmFzaWMgbWVjaGFuaXNtIG9uIHdoaWNoIE9Qcm9maWxlIGlzIGJhc2VkLiBUaGUgZGVsaXZlcnkgbW9kZSBpcyA8YWNyb255bSBjbGFzcz0iYWNyb255bSI+Tk1JPC9hY3JvbnltPiwKc28gYmxvY2tpbmcgaW50ZXJydXB0cyBpbiB0aGUga2VybmVsIGRvZXMgbm90IHByZXZlbnQgcHJvZmlsaW5nLiBXaGVuIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciBpcyBjYWxsZWQsCnRoZSBjdXJyZW50IDxhY3JvbnltIGNsYXNzPSJhY3JvbnltIj5QQzwvYWNyb255bT4gdmFsdWUgYW5kIHRoZSBjdXJyZW50IHRhc2sgYXJlIHJlY29yZGVkIGludG8gdGhlIHByb2ZpbGluZyBzdHJ1Y3R1cmUuClRoaXMgYWxsb3dzIHRoZSBvdmVyZmxvdyBldmVudCB0byBiZSBhdHRhY2hlZCB0byBhIHNwZWNpZmljIGFzc2VtYmx5IGluc3RydWN0aW9uIGluIGEgYmluYXJ5IGltYWdlLgpPUHJvZmlsZSByZWNlaXZlcyB0aGlzIGRhdGEgZnJvbSB0aGUga2VybmVsIGFuZCB3cml0ZXMgaXQgdG8gdGhlIHNhbXBsZSBmaWxlcy4KPC9wPgogICAgICAgICAgICA8cD4KSWYgd2UgdXNlIGFuIGV2ZW50IHN1Y2ggYXMgPGNvZGUgY2xhc3M9ImNvbnN0YW50Ij5DUFVfQ0xLX1VOSEFMVEVEPC9jb2RlPiBvciA8Y29kZSBjbGFzcz0iY29uc3RhbnQiPklOU1RfUkVUSVJFRDwvY29kZT4KKDxjb2RlIGNsYXNzPSJjb25zdGFudCI+R0xPQkFMX1BPV0VSX0VWRU5UUzwvY29kZT4gb3IgPGNvZGUgY2xhc3M9ImNvbnN0YW50Ij5JTlNUUl9SRVRJUkVEPC9jb2RlPiwgcmVzcGVjdGl2ZWx5LCBvbiB0aGUgUGVudGl1bSA0KSwgd2UgY2FuCnVzZSB0aGUgb3ZlcmZsb3cgY291bnRzIGFzIGFuIGVzdGltYXRlIG9mIGFjdHVhbCB0aW1lIHNwZW50IGluIGVhY2ggcGFydCBvZiBjb2RlLiBBbHRlcm5hdGl2ZWx5IHdlIGNhbiBwcm9maWxlIGludGVyZXN0aW5nCmRhdGEgc3VjaCBhcyB0aGUgY2FjaGUgYmVoYXZpb3VyIG9mIHJvdXRpbmVzIHdpdGggdGhlIG90aGVyIGF2YWlsYWJsZSBjb3VudGVycy4KPC9wPgogICAgICAgICAgICA8cD4KSG93ZXZlciB0aGVyZSBhcmUgc2V2ZXJhbCBjYXZlYXRzLiBGaXJzdCwgdGhlcmUgYXJlIHRob3NlIGlzc3VlcyBsaXN0ZWQgaW4gdGhlIEludGVsIG1hbnVhbC4gVGhlcmUgaXMgYSBkZWxheQpiZXR3ZWVuIHRoZSBjb3VudGVyIG92ZXJmbG93IGFuZCB0aGUgaW50ZXJydXB0IGRlbGl2ZXJ5IHRoYXQgY2FuIHNrZXcgcmVzdWx0cyBvbiBhIHNtYWxsIHNjYWxlIC0gdGhpcyBtZWFucwp5b3UgY2Fubm90IHJlbHkgb24gdGhlIHByb2ZpbGVzIGF0IHRoZSBpbnN0cnVjdGlvbiBsZXZlbCBhcyBiZWluZyBwZXJmZWN0bHkgYWNjdXJhdGUuCklmIHlvdSBhcmUgdXNpbmcgYW4gImV2ZW50LW1vZGUiIGNvdW50ZXIgc3VjaCBhcyB0aGUgY2FjaGUgY291bnRlcnMsIGEgY291bnQgcmVnaXN0ZXJlZCBhZ2FpbnN0IGl0IGRvZXNuJ3QgbWVhbgp0aGF0IGl0IGlzIHJlc3BvbnNpYmxlIGZvciB0aGF0IGV2ZW50LiBIb3dldmVyLCBpdCBpbXBsaWVzIHRoYXQgdGhlIGNvdW50ZXIgb3ZlcmZsb3dlZCBpbiB0aGUgZHluYW1pYwp2aWNpbml0eSBvZiB0aGF0IGluc3RydWN0aW9uLCB0byB3aXRoaW4gYSBmZXcgaW5zdHJ1Y3Rpb25zLiBGdXJ0aGVyIGRldGFpbHMgb24gdGhpcyBwcm9ibGVtIGNhbiBiZSBmb3VuZCBpbiAKPGEgY2xhc3M9InhyZWYiIGhyZWY9IiNpbnRlcnByZXRpbmciIHRpdGxlPSJDaGFwdGVyoDUuoEludGVycHJldGluZyBwcm9maWxpbmcgcmVzdWx0cyI+Q2hhcHRlcqA1LCA8aT5JbnRlcnByZXRpbmcgcHJvZmlsaW5nIHJlc3VsdHM8L2k+PC9hPiBhbmQgYWxzbyBpbiB0aGUgRGlnaXRhbCBwYXBlciAiUHJvZmlsZU1lOiBBIEhhcmR3YXJlIFBlcmZvcm1hbmNlIENvdW50ZXIiLgo8L3A+CiAgICAgICAgICAgIDxwPgpFYWNoIGNvdW50ZXIgaGFzIHNldmVyYWwgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLgpGaXJzdCwgdGhlcmUgaXMgdGhlIHVuaXQgbWFzazogdGhpcyBzaW1wbHkgZnVydGhlciBzcGVjaWZpZXMgd2hhdCB0byBjb3VudC4KU2Vjb25kLCB0aGVyZSBpcyB0aGUgY291bnRlciB2YWx1ZSwgZGlzY3Vzc2VkIGJlbG93LiBUaGlyZCwgdGhlcmUgaXMgYSBwYXJhbWV0ZXIgd2hldGhlciB0byBpbmNyZW1lbnQgY291bnRzCndoaWxzdCBpbiBrZXJuZWwgb3IgdXNlciBzcGFjZS4gWW91IGNhbiBjb25maWd1cmUgdGhlc2Ugc2VwYXJhdGVseSBmb3IgZWFjaCBjb3VudGVyLgo8L3A+CiAgICAgICAgICAgIDxwPgpBZnRlciBlYWNoIG92ZXJmbG93IGV2ZW50LCB0aGUgY291bnRlciB3aWxsIGJlIHJlLWluaXRpYWxpemVkCnN1Y2ggdGhhdCBhbm90aGVyIG92ZXJmbG93IHdpbGwgb2NjdXIgYWZ0ZXIgdGhpcyBtYW55IGV2ZW50cyBoYXZlIGJlZW4gY291bnRlZC4gVGh1cywgaGlnaGVyCnZhbHVlcyBtZWFuIGxlc3MtZGV0YWlsZWQgcHJvZmlsaW5nLCBhbmQgbG93ZXIgdmFsdWVzIG1lYW4gbW9yZSBkZXRhaWwsIGJ1dCBoaWdoZXIgb3ZlcmhlYWQuClBpY2tpbmcgYSBnb29kIHZhbHVlIGZvciB0aGlzCnBhcmFtZXRlciBpcywgdW5mb3J0dW5hdGVseSwgc29tZXdoYXQgb2YgYSBibGFjayBhcnQuIEl0IGlzIG9mIGNvdXJzZSBkZXBlbmRlbnQgb24gdGhlIGV2ZW50CnlvdSBoYXZlIGNob3Nlbi4KU3BlY2lmeWluZyB0b28gbGFyZ2UgYSB2YWx1ZSB3aWxsIG1lYW4gbm90IGVub3VnaCBpbnRlcnJ1cHRzIGFyZSBnZW5lcmF0ZWQKdG8gZ2l2ZSBhIHJlYWxpc3RpYyBwcm9maWxlICh0aG91Z2ggdGhpcyBwcm9ibGVtIGNhbiBiZSBhbWVsaW9yYXRlZCBieSBwcm9maWxpbmcgZm9yIDxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+PGVtPmxvbmdlcjwvZW0+PC9zcGFuPikuClNwZWNpZnlpbmcgdG9vIHNtYWxsIGEgdmFsdWUgY2FuIGxlYWQgdG8gaGlnaGVyIHBlcmZvcm1hbmNlIG92ZXJoZWFkLgo8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QyIiB0aXRsZT0iNS4yLqBPUHJvZmlsZSBpbiB0aW1lciBpbnRlcnJ1cHQgbW9kZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJ0aW1lciI+PC9hPjUuMi6gT1Byb2ZpbGUgaW4gdGltZXIgaW50ZXJydXB0IG1vZGU8L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cD4KU29tZSBDUFUgdHlwZXMgZG8gbm90IHByb3ZpZGUgdGhlIG5lZWRlZCBoYXJkd2FyZSBzdXBwb3J0IHRvIHVzZSB0aGUgaGFyZHdhcmUgcGVyZm9ybWFuY2UgY291bnRlcnMuIFRoaXMgaW5jbHVkZXMKc29tZSBsYXB0b3BzLCBjbGFzc2ljIFBlbnRpdW1zLCBhbmQgb3RoZXIgQ1BVIHR5cGVzIG5vdCB5ZXQgc3VwcG9ydGVkIGJ5IE9Qcm9maWxlIChzdWNoIGFzIEN5cml4KS4KT24gdGhlc2UgbWFjaGluZXMsIE9Qcm9maWxlIGZhbGxzIGJhY2sgdG8gdXNpbmcgdGhlIHRpbWVyIGludGVycnVwdCBmb3IgcHJvZmlsaW5nLApiYWNrIHRvIHVzaW5nIHRoZSByZWFsLXRpbWUgY2xvY2sgaW50ZXJydXB0IHRvIGNvbGxlY3Qgc2FtcGxlcy4gIEluIHRpbWVyIG1vZGUsIE9Qcm9maWxlCmlzIG5vdCBhYmxlIHRvIHByb2ZpbGUgY29kZSB0aGF0IGhhcyBpbnRlcnJ1cHRzIGRpc2FibGVkLgo8L3A+CiAgICAgICAgICAgIDxwPgpZb3UgY2FuIGZvcmNlIHVzZSBvZiB0aGUgdGltZXIgaW50ZXJydXB0IGJ5IHVzaW5nIHRoZSA8Y29kZSBjbGFzcz0ib3B0aW9uIj50aW1lcj0xPC9jb2RlPiBtb2R1bGUKcGFyYW1ldGVyIChvciA8Y29kZSBjbGFzcz0ib3B0aW9uIj5vcHJvZmlsZS50aW1lcj0xPC9jb2RlPiBvbiB0aGUgYm9vdCBjb21tYW5kIGxpbmUgaWYgT1Byb2ZpbGUgaXMKYnVpbHQtaW4pLiAgSWYgT1Byb2ZpbGUgd2FzIGJ1aWx0IGFzIGEga2VybmVsIG1vZHVsZSwgdGhlbiB5b3UgbXVzdCBwYXNzIHRoZSAndGltZXI9MScKcGFyYW1ldGVyIHdpdGggdGhlIG1vZHByb2JlIGNvbW1hbmQuICBEbyB0aGlzIGJlZm9yZSBleGVjdXRpbmcgJ29wY29udHJvbCAtLWluaXQnIG9yCmVkaXQgdGhlIG9wY29udHJvbCBjb21tYW5kJ3MgaW52b2NhdGlvbiBvZiBtb2Rwcm9iZSB0byBwYXNzIHRoZSAndGltZXI9MScgcGFyYW1ldGVyLgoKPC9wPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJub3RlIiB0aXRsZT0iTm90ZSIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwLjVpbjsgbWFyZ2luLXJpZ2h0OiAwLjVpbjsiPjxoMyBjbGFzcz0idGl0bGUiPk5vdGU8L2gzPlRpbWVyIG1vZGUgaXMgb25seSBhdmFpbGFibGUgdXNpbmcgdGhlIGxlZ2FjeSA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGNvbnRyb2w8L3N0cm9uZz48L3NwYW4+IGNvbW1hbmQuPC9kaXY+CiAgICAgICAgICAgIDxwPgo8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QyIiB0aXRsZT0iNS4zLqBQZW50aXVtIDQgc3VwcG9ydCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJwNCI+PC9hPjUuMy6gUGVudGl1bSA0IHN1cHBvcnQ8L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cD4KVGhlIFBlbnRpdW0gNCAvIFhlb24gcGVyZm9ybWFuY2UgY291bnRlcnMgYXJlIG9yZ2FuaXplZCBhcm91bmQgMyB0eXBlcyBvZiBtb2RlbCBzcGVjaWZpYyByZWdpc3RlcnMgKE1TUnMpOiA0NSBldmVudApzZWxlY3Rpb24gY29udHJvbCByZWdpc3RlcnMgKEVTQ1JzKSwgMTggY291bnRlciBjb25maWd1cmF0aW9uIGNvbnRyb2wgcmVnaXN0ZXJzIChDQ0NScykgYW5kIDE4IGNvdW50ZXJzLiBFU0NScyBkZXNjcmliZSBhCnBhcnRpY3VsYXIgc2V0IG9mIGV2ZW50cyB3aGljaCBhcmUgdG8gYmUgcmVjb3JkZWQsIGFuZCBDQ0NScyBiaW5kIEVTQ1JzIHRvIGNvdW50ZXJzIGFuZCBjb25maWd1cmUgdGhlaXIKb3BlcmF0aW9uLiBVbmZvcnR1bmF0ZWx5IHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSByZWdpc3RlcnMgaXMgcXVpdGUgY29tcGxleDsgdGhleSBjYW5ub3QgYWxsIGJlIHVzZWQgd2l0aCBvbmUKYW5vdGhlciBhdCBhbnkgdGltZS4gVGhlcmUgaXMsIGhvd2V2ZXIsIGEgc3Vic2V0IG9mIDggY291bnRlcnMsIDggRVNDUnMsIGFuZCA4IENDQ1JzIHdoaWNoIGNhbiBiZSB1c2VkIGluZGVwZW5kZW50bHkgb2YKb25lIGFub3RoZXIsIHNvIE9Qcm9maWxlIG9ubHkgYWNjZXNzZXMgdGhvc2UgcmVnaXN0ZXJzLCB0cmVhdGluZyB0aGVtIGFzIGEgYmFuayBvZiA4ICJub3JtYWwiIGNvdW50ZXJzLCBzaW1pbGFyCnRvIHRob3NlIGluIHRoZSBQNiBvciBBdGhsb24vT3B0ZXJvbi9QaGVub20vVHVyaW9uIGZhbWlsaWVzIG9mIENQVS4KPC9wPgogICAgICAgICAgICA8cD4KVGhlcmUgaXMgY3VycmVudGx5IG5vIHN1cHBvcnQgZm9yIFByZWNpc2lvbiBFdmVudC1CYXNlZCBTYW1wbGluZyAoUEVCUyksIG5vciBhbnkgYWR2YW5jZWQgdXNlcyBvZiB0aGUgRGVidWcgU3RvcmUKKERTKS4gQ3VycmVudCBzdXBwb3J0IGlzIGxpbWl0ZWQgdG8gdGhlIGNvbnNlcnZhdGl2ZSBleHRlbnNpb24gb2YgT1Byb2ZpbGUncyBleGlzdGluZyBpbnRlcnJ1cHQtYmFzZWQgbW9kZWwgZGVzY3JpYmVkCmFib3ZlLgo8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QyIiB0aXRsZT0iNS40LqBJbnRlbCBJdGFuaXVtIDIgc3VwcG9ydCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJpYTY0Ij48L2E+NS40LqBJbnRlbCBJdGFuaXVtIDIgc3VwcG9ydDwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwPgpUaGUgSXRhbml1bSAyIHBlcmZvcm1hbmNlIG1vbml0b3JpbmcgdW5pdCAoUE1VKSBvcmdhbml6ZXMgdGhlIGNvdW50ZXJzIGFzIGZvdXIKcGFpcnMgb2YgcGVyZm9ybWFuY2UgZXZlbnQgbW9uaXRvcmluZyByZWdpc3RlcnMuIEVhY2ggcGFpciBpcyBjb21wb3NlZCBvZiBhClBlcmZvcm1hbmNlIE1vbml0b3JpbmcgQ29uZmlndXJhdGlvbiAoUE1DKSByZWdpc3RlciBhbmQgUGVyZm9ybWFuY2UgTW9uaXRvcmluZwpEYXRhIChQTUQpIHJlZ2lzdGVyLiAgVGhlIFBNQyBzZWxlY3RzIHRoZSBwZXJmb3JtYW5jZSBldmVudCBiZWluZyBtb25pdG9yZWQgYW5kCnRoZSBQTUQgZGV0ZXJtaW5lcyB0aGUgc2FtcGxpbmcgaW50ZXJ2YWwuIFRoZSBJQTY0IFBlcmZvcm1hbmNlIE1vbml0b3JpbmcgVW5pdAooUE1VKSB0cmlnZ2VycyBzYW1wbGluZyB3aXRoIG1hc2thYmxlIGludGVycnVwdHMuIFRodXMsIHNhbXBsZXMgd2lsbCBub3Qgb2NjdXIKaW4gc2VjdGlvbnMgb2YgdGhlIElBNjQga2VybmVsIHdoZXJlIGludGVycnVwdHMgYXJlIGRpc2FibGVkLgo8L3A+CiAgICAgICAgICAgIDxwPgpOb25lIG9mIHRoZSBhZHZhbmNlIGZlYXR1cmVzIG9mIHRoZSBJdGFuaXVtIDIgcGVyZm9ybWFuY2UgbW9uaXRvcmluZyB1bml0CnN1Y2ggYXMgb3Bjb2RlIG1hdGNoaW5nLCBhZGRyZXNzIHJhbmdlIG1hdGNoaW5nLCBvciBwcmVjaXNlIGV2ZW50IHNhbXBsaW5nIGFyZQpzdXBwb3J0ZWQgYnkgdGhpcyB2ZXJzaW9uIG9mIE9Qcm9maWxlLiAgVGhlIEl0YW5pdW0gMiBzdXBwb3J0IG9ubHkgbWFwcyBPUHJvZmlsZSdzCmV4aXN0aW5nIGludGVycnVwdC1iYXNlZCBtb2RlbCB0byB0aGUgUE1VIGhhcmR3YXJlLgo8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QyIiB0aXRsZT0iNS41LqBQb3dlclBDNjQgc3VwcG9ydCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJwcGM2NCI+PC9hPjUuNS6gUG93ZXJQQzY0IHN1cHBvcnQ8L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cD4KVGhlIHBlcmZvcm1hbmNlIG1vbml0b3JpbmcgdW5pdCAoUE1VKSBmb3IgdGhlIElCTSBQb3dlclBDIDY0LWJpdCBwcm9jZXNzb3JzIApjb25zaXN0cyBvZiBiZXR3ZWVuIDQgYW5kIDggY291bnRlcnMgKGRlcGVuZGluZyBvbiB0aGUgbW9kZWwpLCBwbHVzIHRocmVlCnNwZWNpYWwgcHVycG9zZSByZWdpc3RlcnMgdXNlZCBmb3IgcHJvZ3JhbW1pbmcgdGhlIGNvdW50ZXJzIC0tIE1NQ1IwLCBNTUNSMSwKYW5kIE1NQ1JBLiAgQWR2YW5jZWQgZmVhdHVyZXMgc3VjaCBhcyBpbnN0cnVjdGlvbiBtYXRjaGluZyBhbmQgdGhyZXNob2xkaW5nIGFyZQpub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgdmVyc2lvbiBvZiBPUHJvZmlsZS4KPC9wPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJub3RlIiB0aXRsZT0iTm90ZSIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwLjVpbjsgbWFyZ2luLXJpZ2h0OiAwLjVpbjsiPjxoMyBjbGFzcz0idGl0bGUiPk5vdGU8L2gzPkxhdGVyIHZlcnNpb25zIG9mIHRoZSBJQk0gUE9XRVI1KyBwcm9jZXNzb3IgKGJlZ2lubmluZyB3aXRoIHJldmlzaW9uIDMuMCkKcnVuIHRoZSBwZXJmb3JtYW5jZSBtb25pdG9yIHVuaXQgaW4gUE9XRVI2IG1vZGUsIGVmZmVjdGl2ZWx5IHJlbW92aW5nIE9Qcm9maWxlJ3MKYWNjZXNzIHRvIGNvdW50ZXJzIDUgYW5kIDYuICBUaGVzZSB0d28gY291bnRlcnMgYXJlIGRlZGljYXRlZCB0byBjb3VudGluZwppbnN0cnVjdGlvbnMgY29tcGxldGVkIGFuZCBjeWNsZXMsIHJlc3BlY3RpdmVseS4gIEluIFBPV0VSNiBtb2RlLCBob3dldmVyLCB0aGUKY291bnRlcnMgZG8gbm90IGdlbmVyYXRlIGFuIGludGVycnVwdCBvbiBvdmVyZmxvdyBhbmQgc28gYXJlIHVudXNhYmxlIGJ5Ck9Qcm9maWxlLiAgS2VybmVsIHZlcnNpb25zIDIuNi4yMyBhbmQgaGlnaGVyIHdpbGwgcmVjb2duaXplIHRoaXMgbW9kZQphbmQgZXhwb3J0ICJwcGM2NC9wb3dlcjUrKyIgYXMgdGhlIGNwdV90eXBlIHRvIHRoZSBvcHJvZmlsZWZzIHBzZXVkbyBmaWxlc3lzdGVtLgpPUHJvZmlsZSB1c2Vyc3BhY2UgcmVzcG9uZHMgdG8gdGhpcyBjcHVfdHlwZSBieSByZW1vdmluZyB0aGVzZSBjb3VudGVycyBmcm9tCnRoZSBsaXN0IG9mIHBvdGVudGlhbCBldmVudHMgdG8gY291bnQuICBXaXRob3V0IHRoaXMga2VybmVsIHN1cHBvcnQsIGF0dGVtcHRzCnRvIHByb2ZpbGUgdXNpbmcgYW4gZXZlbnQgZnJvbSBvbmUgb2YgdGhlc2UgY291bnRlcnMgd2lsbCB5aWVsZCBpbmNvcnJlY3QKcmVzdWx0cyAtLSB0eXBpY2FsbHksIHplcm8gKG9yIG5lYXIgemVybykgc2FtcGxlcyBpbiB0aGUgZ2VuZXJhdGVkIHJlcG9ydC4KPC9kaXY+CiAgICAgICAgICAgIDxwPgo8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QyIiB0aXRsZT0iNS42LqBDZWxsIEJyb2FkYmFuZCBFbmdpbmUgc3VwcG9ydCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJjZWxsLWJlIj48L2E+NS42LqBDZWxsIEJyb2FkYmFuZCBFbmdpbmUgc3VwcG9ydDwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwPgpUaGUgQ2VsbCBCcm9hZGJhbmQgRW5naW5lIChDQkUpIHByb2Nlc3NvciBjb3JlIGNvbnNpc3RzIG9mIGEgUG93ZXJQQyBQcm9jZXNzaW5nCkVsZW1lbnQgKFBQRSkgYW5kIDggU3luZXJnaXN0aWMgUHJvY2Vzc2luZyBFbGVtZW50cyAoU1BFKS4gIFBQRXMgYW5kIFNQRXMgZWFjaApjb25zaXN0IG9mIGEgcHJvY2Vzc2luZyB1bml0IChQUFUgYW5kIFNQVSwgcmVzcGVjdGl2ZWx5KSBhbmQgb3RoZXIgaGFyZHdhcmUKY29tcG9uZW50cywgc3VjaCBhcyBtZW1vcnkgY29udHJvbGxlcnMuCjwvcD4KICAgICAgICAgICAgPHA+CkEgUFBVIGhhcyB0d28gaGFyZHdhcmUgdGhyZWFkcyAoYWthICJ2aXJ0dWFsIENQVXMiKS4gIFRoZSBwZXJmb3JtYW5jZSBtb25pdG9yCnVuaXQgb2YgdGhlIENCRSBjb2xsZWN0cyBldmVudCBpbmZvcm1hdGlvbiBvbiBvbmUgaGFyZHdhcmUgdGhyZWFkIGF0IGEgdGltZS4KVGhlcmVmb3JlLCB3aGVuIHByb2ZpbGluZyBQUEUgZXZlbnRzLApPUHJvZmlsZSBjb2xsZWN0cyB0aGUgcHJvZmlsZSBiYXNlZCBvbiB0aGUgc2VsZWN0ZWQgZXZlbnRzIGJ5IHRpbWUgc2xpY2luZyB0aGUKcGVyZm9ybWFuY2UgY291bnRlciBoYXJkd2FyZSBiZXR3ZWVuIHRoZSB0d28gdGhyZWFkcy4gICBUaGUgdXNlciBtdXN0IGVuc3VyZSB0aGUKY29sbGVjdGlvbiBpbnRlcnZhbCBpcyBsb25nIGVub3VnaCBzbyB0aGF0IHRoZSB0aW1lIHNwZW50IGNvbGxlY3RpbmcgZGF0YSBmb3IKZWFjaCBQUFUgaXMgc3VmZmljaWVudCB0byBvYnRhaW4gYSBnb29kIHByb2ZpbGUuCjwvcD4KICAgICAgICAgICAgPHA+ClRvIHByb2ZpbGUgYW4gU1BVIGFwcGxpY2F0aW9uLCB0aGUgdXNlciBzaG91bGQgc3BlY2lmeSB0aGUgU1BVX0NZQ0xFUyBldmVudC4KV2hlbiBzdGFydGluZyBPUHJvZmlsZSB3aXRoIFNQVV9DWUNMRVMsIHRoZSBvcGNvbnRyb2wgc2NyaXB0IGVuZm9yY2VzIGNlcnRhaW4Kc2VwYXJhdGlvbiBwYXJhbWV0ZXJzIChzZXBhcmF0ZT1jcHUsbGliKSB0byBlbnN1cmUgdGhhdCBzdWZmaWNpZW50IGluZm9ybWF0aW9uCmlzIGNvbGxlY3RlZCBpbiB0aGUgc2FtcGxlIGRhdGEgaW4gb3JkZXIgdG8gZ2VuZXJhdGUgYSBjb21wbGV0ZSByZXBvcnQuICBUaGUKLS1tZXJnZT1jcHUgb3B0aW9uIGNhbiBiZSB1c2VkIHRvIG9idGFpbiBhIG1vcmUgcmVhZGFibGUgcmVwb3J0IGlmIGFuYWx5emluZwp0aGUgcGVyZm9ybWFuY2Ugb2YgZWFjaCBzZXBhcmF0ZSBTUFUgaXMgbm90IG5lY2Vzc2FyeS4KPC9wPgogICAgICAgICAgICA8cD4KUHJvZmlsaW5nIHdpdGggYW4gU1BVIGV2ZW50IChldmVudHMgNDEwMCB0aHJvdWdoIDQxNjMpIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggYW55IG90aGVyCmV2ZW50LiAgRnVydGhlciBtb3JlLCBvbmx5IG9uZSBTUFUgZXZlbnQgY2FuIGJlIHNwZWNpZmllZCBhdCBhIHRpbWUuICBUaGUgaGFyZHdhcmUgb25seQpzdXBwb3J0cyBwcm9maWxpbmcgb24gb25lIFNQVSBwZXIgbm9kZSBhdCBhIHRpbWUuICBUaGUgT1Byb2ZpbGUga2VybmVsIGNvZGUgdGltZSBzbGljZXMKYmV0d2VlbiB0aGUgZWlnaHQgU1BVcyB0byBjb2xsZWN0IGRhdGEgb24gYWxsIFNQVXMuCjwvcD4KICAgICAgICAgICAgPHA+ClNQVSBwcm9maWxlIHJlcG9ydHMgaGF2ZSBzb21lIHVuaXF1ZSBjaGFyYWN0ZXJpc3RpY3MgY29tcGFyZWQgdG8gcmVwb3J0cyBmb3IKc3RhbmRhcmQgYXJjaGl0ZWN0dXJlczoKPC9wPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtaXplZGxpc3QiPgogICAgICAgICAgICAgIDx1bCBjbGFzcz0iaXRlbWl6ZWRsaXN0IiB0eXBlPSJkaXNjIj4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ibGlzdGl0ZW0iPlR5cGljYWxseSBubyAiYXBwIG5hbWUiIGNvbHVtbi4gIFRoaXMgaXMgcmVhbGx5IHN0YW5kYXJkIE9Qcm9maWxlIGJlaGF2aW9yCndoZW4gdGhlIHJlcG9ydCBjb250YWlucyBzYW1wbGVzIGZvciBqdXN0IGEgc2luZ2xlIGFwcGxpY2F0aW9uLCB3aGljaCBpcwpjb21tb25seSB0aGUgY2FzZSB3aGVuIHByb2ZpbGluZyBTUFVzLjwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Imxpc3RpdGVtIj4iQ1BVIiBlcXVhdGVzIHRvICJTUFUiPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ibGlzdGl0ZW0iPlNwZWNpZnlpbmcgJy0tbG9uZy1maWxlbmFtZXMnIG9uIHRoZSBvcHJlcG9ydCBjb21tYW5kIGRvZXMgbm90IGFsd2F5cyByZXN1bHQKaW4gbG9uZyBmaWxlbmFtZXMuICBUaGlzIGhhcHBlbnMgd2hlbiB0aGUgU1BVIGFwcGxpY2F0aW9uIGNvZGUgaXMgZW1iZWRkZWQgaW4KdGhlIFBQRSBleGVjdXRhYmxlIG9yIHNoYXJlZCBsaWJyYXJ5LiAgVGhlIGVtYmVkZGVkIFNQVSBFTEYgZGF0YSBjb250YWlucyBvbmx5IHRoZQpzaG9ydCBmaWxlbmFtZSAoaS5lLiwgbm8gcGF0aCBpbmZvcm1hdGlvbikgZm9yIHRoZSBTUFUgYmluYXJ5IGZpbGUgdGhhdCB3YXMgdXNlZCBhcwp0aGUgc291cmNlIGZvciBlbWJlZGRpbmcuICAgVGhlIHJlYXNvbiB0aGF0IGp1c3QgdGhlIHNob3J0IGZpbGVuYW1lIGlzIHVzZWQgaXMgYmVjYXVzZQp0aGUgb3JpZ2luYWwgU1BVIGJpbmFyeSBmaWxlIG1heSBub3QgZXhpc3Qgb3IgYmUgYWNjZXNzaWJsZSBhdCBydW50aW1lLiAgVGhlIHBlcmZvcm1hbmNlCmFuYWx5c3QgbXVzdCBoYXZlIHN1ZmZpY2llbnQga25vd2xlZGdlIG9mIHRoZSBhcHBsaWNhdGlvbiB0byBiZSBhYmxlIHRvIGNvcnJlbGF0ZSB0aGUKU1BVIGJpbmFyeSBpbWFnZSBuYW1lcyBmb3VuZCBpbiB0aGUgIHJlcG9ydCB0byB0aGUgYXBwbGljYXRpb24ncyBzb3VyY2UgZmlsZXMuCjxkaXYgY2xhc3M9Im5vdGUiIHRpdGxlPSJOb3RlIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDAuNWluOyBtYXJnaW4tcmlnaHQ6IDAuNWluOyI+PGgzIGNsYXNzPSJ0aXRsZSI+Tm90ZTwvaDM+CkNvbXBpbGUgdGhlIGFwcGxpY2F0aW9uIHdpdGggLWcgYW5kIGdlbmVyYXRlIHRoZSBPUHJvZmlsZSByZXBvcnQKd2l0aCAtZyB0byBmYWNpbGl0YXRlIGZpbmRpbmcgdGhlIHJpZ2h0IHNvdXJjZSBmaWxlKHMpIG9uIHdoaWNoIHRvIGZvY3VzLgo8L2Rpdj48L2xpPgogICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgdGl0bGU9IjUuNy6gQU1ENjQgKHg4Nl82NCkgSW5zdHJ1Y3Rpb24tQmFzZWQgU2FtcGxpbmcgKElCUykgc3VwcG9ydCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJhbWQtaWJzLXN1cHBvcnQiPjwvYT41LjcuoEFNRDY0ICh4ODZfNjQpIEluc3RydWN0aW9uLUJhc2VkIFNhbXBsaW5nIChJQlMpIHN1cHBvcnQ8L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cD4KSW5zdHJ1Y3Rpb24tQmFzZWQgU2FtcGxpbmcgKElCUykgaXMgYSBuZXcgcGVyZm9ybWFuY2UgbWVhc3VyZW1lbnQgdGVjaG5pcXVlCmF2YWlsYWJsZSBvbiBBTUQgRmFtaWx5IDEwaCBwcm9jZXNzb3JzLiBUcmFkaXRpb25hbCBwZXJmb3JtYW5jZSBjb3VudGVyCnNhbXBsaW5nIGlzIG5vdCBwcmVjaXNlIGVub3VnaCB0byBpc29sYXRlIHBlcmZvcm1hbmNlIGlzc3VlcyB0byBpbmRpdmlkdWFsCmluc3RydWN0aW9ucy4gSUJTLCBob3dldmVyLCBwcmVjaXNlbHkgaWRlbnRpZmllcyBpbnN0cnVjdGlvbnMgd2hpY2ggYXJlIG5vdAptYWtpbmcgdGhlIGJlc3QgdXNlIG9mIHRoZSBwcm9jZXNzb3IgcGlwZWxpbmUgYW5kIG1lbW9yeSBoaWVyYXJjaHkuCkZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2UgcmVmZXIgdG8gdGhlICJJbnN0cnVjdGlvbi1CYXNlZCBTYW1wbGluZzoKQSBOZXcgUGVyZm9ybWFuY2UgQW5hbHlzaXMgVGVjaG5pcXVlIGZvciBBTUQgRmFtaWx5IDEwaCBQcm9jZXNzb3JzIiAoCjxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL2RldmVsb3Blci5hbWQuY29tL2Fzc2V0cy9BTURfSUJTX3BhcGVyX0VOLnBkZiI+Cmh0dHA6Ly9kZXZlbG9wZXIuYW1kLmNvbS9hc3NldHMvQU1EX0lCU19wYXBlcl9FTi5wZGY8L2E+KS4KVGhlcmUgYXJlIHR3byB0eXBlcyBvZiBJQlMgcHJvZmlsZSB0eXBlcywgZGVzY3JpYmVkIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMuCjwvcD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibm90ZSIgdGl0bGU9Ik5vdGUiIHN0eWxlPSJtYXJnaW4tbGVmdDogMC41aW47IG1hcmdpbi1yaWdodDogMC41aW47Ij48aDMgY2xhc3M9InRpdGxlIj5Ob3RlPC9oMz5Qcm9maWxpbmcgb24gSUJTIGV2ZW50cyBpcyBvbmx5IHN1cHBvcnRlZCB3aXRoIGxlZ2FjeSBtb2RlIHByb2ZpbGluZwooaS5lLiwgd2l0aCA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGNvbnRyb2w8L3N0cm9uZz48L3NwYW4+KS48L2Rpdj4KICAgICAgICAgICAgPHA+CjwvcD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDMiIHRpdGxlPSI1LjcuMS6gSUJTIEZldGNoIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9InRpdGxlIj48YSBpZD0iaWJzLWZldGNoIj48L2E+NS43LjEuoElCUyBGZXRjaDwvaDQ+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPHA+CklCUyBmZXRjaCBzYW1wbGluZyBpcyBhIHN0YXRpc3RpY2FsIHNhbXBsaW5nIG1ldGhvZCB3aGljaCBjb3VudHMgY29tcGxldGVkCmZldGNoIG9wZXJhdGlvbnMuIFdoZW4gdGhlIG51bWJlciBvZiBjb21wbGV0ZWQgZmV0Y2ggb3BlcmF0aW9ucyByZWFjaGVzIHRoZQptYXhpbXVtIGZldGNoIGNvdW50ICh0aGUgc2FtcGxpbmcgcGVyaW9kKSwgSUJTIHRhZ3MgdGhlIGZldGNoIG9wZXJhdGlvbiBhbmQKbW9uaXRvcnMgdGhhdCBvcGVyYXRpb24gdW50aWwgaXQgZWl0aGVyIGNvbXBsZXRlcyBvciBhYm9ydHMuIFdoZW4gYSB0YWdnZWQKZmV0Y2ggY29tcGxldGVzIG9yIGFib3J0cywgYSBzYW1wbGluZyBpbnRlcnJ1cHQgaXMgZ2VuZXJhdGVkIGFuZCBhbiBJQlMgZmV0Y2gKc2FtcGxlIGlzIHRha2VuLiBBbiBJQlMgZmV0Y2ggc2FtcGxlIGNvbnRhaW5zIGEgdGltZXN0YW1wLCB0aGUgaWRlbnRpZmllciBvZgp0aGUgaW50ZXJydXB0ZWQgcHJvY2VzcywgdGhlIHZpcnR1YWwgZmV0Y2ggYWRkcmVzcywgYW5kIHNldmVyYWwgZXZlbnQgZmxhZ3MKYW5kIHZhbHVlcyB0aGF0IGRlc2NyaWJlIHdoYXQgaGFwcGVuZWQgZHVyaW5nIHRoZSBmZXRjaCBvcGVyYXRpb24uIAo8L3A+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MyIgdGl0bGU9IjUuNy4yLqBJQlMgT3AiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGl0bGUiPjxhIGlkPSJpYnMtb3AiPjwvYT41LjcuMi6gSUJTIE9wPC9oND4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8cD4KSUJTIG9wIHNhbXBsaW5nIHNlbGVjdHMsIHRhZ3MsIGFuZCBtb25pdG9ycyBtYWNyby1vcHMgYXMgaXNzdWVkIGZyb20gQU1ENjQKaW5zdHJ1Y3Rpb25zLiBUd28gb3B0aW9ucyBhcmUgYXZhaWxhYmxlIGZvciBzZWxlY3Rpbmcgb3BzIGZvciBzYW1wbGluZzoKPC9wPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW1pemVkbGlzdCI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Iml0ZW1pemVkbGlzdCIgdHlwZT0iZGlzYyI+CiAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ibGlzdGl0ZW0iPgpDeWNsZXMtYmFzZWQgc2VsZWN0aW9uIGNvdW50cyBDUFUgY2xvY2sgY3ljbGVzLiBUaGUgb3AgaXMgdGFnZ2VkIGFuZCBtb25pdG9yZWQKd2hlbiB0aGUgY291bnQgcmVhY2hlcyBhIHRocmVzaG9sZCAodGhlIHNhbXBsaW5nIHBlcmlvZCkgYW5kIGEgdmFsaWQgb3AgaXMKYXZhaWxhYmxlLiAKPC9saT4KICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJsaXN0aXRlbSI+CkRpc3BhdGNoZWQgb3AtYmFzZWQgc2VsZWN0aW9uIGNvdW50cyBkaXNwYXRjaGVkIG1hY3JvLW9wcy4KV2hlbiB0aGUgY291bnQgcmVhY2hlcyBhIHRocmVzaG9sZCwgdGhlIG5leHQgdmFsaWQgb3AgaXMgdGFnZ2VkIGFuZCBtb25pdG9yZWQuIAo8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8cD4KSW4gYm90aCBjYXNlcywgYW4gSUJTIHNhbXBsZSBpcyBnZW5lcmF0ZWQgb25seSBpZiB0aGUgdGFnZ2VkIG9wIHJldGlyZXMuClRodXMsIElCUyBvcCBldmVudCBpbmZvcm1hdGlvbiBkb2VzIG5vdCBtZWFzdXJlIHNwZWN1bGF0aXZlIGV4ZWN1dGlvbiBhY3Rpdml0eS4KVGhlIGV4ZWN1dGlvbiBzdGFnZXMgb2YgdGhlIHBpcGVsaW5lIG1vbml0b3IgdGhlIHRhZ2dlZCBtYWNyby1vcC4gV2hlbiB0aGUKdGFnZ2VkIG1hY3JvLW9wIHJldGlyZXMsIGEgc2FtcGxpbmcgaW50ZXJydXB0IGlzIGdlbmVyYXRlZCBhbmQgYW4gSUJTIG9wCnNhbXBsZSBpcyB0YWtlbi4gQW4gSUJTIG9wIHNhbXBsZSBjb250YWlucyBhIHRpbWVzdGFtcCwgdGhlIGlkZW50aWZpZXIgb2YKdGhlIGludGVycnVwdGVkIHByb2Nlc3MsIHRoZSB2aXJ0dWFsIGFkZHJlc3Mgb2YgdGhlIEFNRDY0IGluc3RydWN0aW9uIGZyb20Kd2hpY2ggdGhlIG9wIHdhcyBpc3N1ZWQsIGFuZCBzZXZlcmFsIGV2ZW50IGZsYWdzIGFuZCB2YWx1ZXMgdGhhdCBkZXNjcmliZQp3aGF0IGhhcHBlbmVkIHdoZW4gdGhlIG1hY3JvLW9wIGV4ZWN1dGVkLgo8L3A+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cD4KRW5hYmxpbmcgSUJTIHByb2ZpbGluZyBpcyBkb25lIHNpbXBseSBieSBzcGVjaWZ5aW5nIElCUyBwZXJmb3JtYW5jZSBldmVudHMKdGhyb3VnaCB0aGUgIi0tZXZlbnQ9IiBvcHRpb25zLiBUaGVzZSBldmVudHMgYXJlIGxpc3RlZCBpbiB0aGUKPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5vcGNvbnRyb2wgLS1saXN0LWV2ZW50czwvY29kZT4uCjwvcD4KICAgICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+Cm9wY29udHJvbCAtLWV2ZW50PUlCU19GRVRDSF9YWFg6Jmx0O2NvdW50Jmd0OzombHQ7dW0mZ3Q7OiZsdDtrZXJuZWwmZ3Q7OiZsdDt1c2VyJmd0OwpvcGNvbnRyb2wgLS1ldmVudD1JQlNfT1BfWFhYOiZsdDtjb3VudCZndDs6Jmx0O3VtJmd0OzombHQ7a2VybmVsJmd0OzombHQ7dXNlciZndDsKCk5vdGU6ICogQWxsIElCUyBmZXRjaCBldmVudCBtdXN0IGhhdmUgdGhlIHNhbWUgZXZlbnQgY291bnQgYW5kIHVuaXRtYXNrLAogICAgICAgIGFzIGRvIHRob3NlIGZvciBJQlMgb3AuCjwvcHJlPgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgdGl0bGU9IjUuOC6gSUJNIFN5c3RlbSB6IGhhcmR3YXJlIHNhbXBsaW5nIHN1cHBvcnQiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj48YSBpZD0ic3lzdGVteiI+PC9hPjUuOC6gSUJNIFN5c3RlbSB6IGhhcmR3YXJlIHNhbXBsaW5nIHN1cHBvcnQ8L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cD4KSUJNIFN5c3RlbSB6IHByb3ZpZGVzIGEgZmFjaWxpdHkgd2hpY2ggZG9lcyBpbnN0cnVjdGlvbiBzYW1wbGluZyBhcwpwYXJ0IG9mIHRoZSBDUFUuICBUaGlzIGhhcyBncmVhdCBhZHZhbnRhZ2VzIG92ZXIgdGhlIHRpbWVyIGJhc2VkCnNhbXBsaW5nIGFwcHJvYWNoIGxpa2UgYmV0dGVyIHNhbXBsaW5nIHJlc29sdXRpb24gd2l0aCBsZXNzIG92ZXJoZWFkCmFuZCB0aGUgcG9zc2liaWxpdHkgdG8gZ2V0IHNhbXBsZXMgd2l0aGluIGNvZGUgc2VjdGlvbnMgd2hlcmUKaW50ZXJydXB0cyBhcmUgZGlzYWJsZWQgKHVzZWZ1bCBlc3BlY2lhbGx5IGZvciBMaW51eCBrZXJuZWwgY29kZSkuCjwvcD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibm90ZSIgdGl0bGU9Ik5vdGUiIHN0eWxlPSJtYXJnaW4tbGVmdDogMC41aW47IG1hcmdpbi1yaWdodDogMC41aW47Ij48aDMgY2xhc3M9InRpdGxlIj5Ob3RlPC9oMz5Qcm9maWxpbmcgd2l0aCB0aGUgaW5zdHJ1Y3Rpb24gc2FtcGxpbmcgZmFjaWxpdHkgaXMgY3VycmVudGx5IG9ubHkgc3VwcG9ydGVkCndpdGggbGVnYWN5IG1vZGUgcHJvZmlsaW5nIChpLmUuLCB3aXRoIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wY29udHJvbDwvc3Ryb25nPjwvc3Bhbj4pLjwvZGl2PgogICAgICAgICAgICA8cD4KQSBwdWJsaWMgZGVzY3JpcHRpb24gb2YgdGhlIFN5c3RlbSB6IENQVS1NZWFzdXJlbWVudCBGYWNpbGl0aWVzIGNhbiBiZQpmb3VuZCBoZXJlOgo8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3ctMDEuaWJtLmNvbS9zdXBwb3J0L2RvY3ZpZXcud3NzP3VpZD1pc2cyNmZjZDFjYzMyMjQ2ZjRjODg1MjU3NGNlMDA0NDczNGEiPlRoZSBMb2FkLVByb2dyYW0tUGFyYW1ldGVyIGFuZCBDUFUtTWVhc3VyZW1lbnQgRmFjaWxpdGllczwvYT4KPC9wPgogICAgICAgICAgICA8cD4KU3lzdGVtIHogaGFyZHdhcmUgc2FtcGxpbmcgY2FuIGJlIHVzZWQgZm9yIExpbnV4IGluc3RhbmNlcyBpbiBMUEFSCm1vZGUuIFRoZSBoYXJkd2FyZSBzYW1wbGluZyBzdXBwb3J0IHVzZWQgYnkgT1Byb2ZpbGUgd2FzIGludHJvZHVjZWQKZm9yIFN5c3RlbSB6MTAgaW4gT2N0b2JlciAyMDA4Lgo8L3A+CiAgICAgICAgICAgIDxwPgpUbyBlbmFibGUgaGFyZHdhcmUgc2FtcGxpbmcgZm9yIGFuIExQQVIgeW91IG11c3QgYWN0aXZhdGUgdGhlIExQQVIKd2l0aCBhdXRob3JpemF0aW9uIGZvciBiYXNpYyBzYW1wbGluZyBjb250cm9sLiBTZWUgdGhlICJTdXBwb3J0CkVsZW1lbnQgT3BlcmF0aW9ucyBHdWlkZSIgZm9yIHlvdXIgbWFpbmZyYW1lIHN5c3RlbSBmb3IgbW9yZQppbmZvcm1hdGlvbi4KPC9wPgogICAgICAgICAgICA8cD4KVGhlIGhhcmR3YXJlIHNhbXBsaW5nIGZhY2lsaXR5IGNhbiBiZSBlbmFibGVkIGFuZCBkaXNhYmxlZCB1c2luZyB0aGUKZXZlbnQgaW50ZXJmYWNlLiAgQSBgdmlydHVhbCcgY291bnRlciAwIGhhcyBiZWVuIGRlZmluZWQgdGhhdCBvbmx5IHN1cHBvcnRzCmEgc2luZ2xlIGV2ZW50LCBIV1NBTVBMSU5HLiBCeSBkZWZhdWx0IHRoZSBIV1NBTVBMSU5HIGV2ZW50IGlzCmVuYWJsZWQgb24gbWFjaGluZXMgcHJvdmlkaW5nIHRoZSBmYWNpbGl0eS4gIEZvciBib3RoIGV2ZW50cyBvbmx5IHRoZQpgY291bnQnLCBga2VybmVsJyBhbmQgYHVzZXInIG9wdGlvbnMgYXJlIGV2YWx1YXRlZCBieSB0aGUga2VybmVsCm1vZHVsZS4KPC9wPgogICAgICAgICAgICA8cD4KVGhlIGBjb3VudCcgdmFsdWUgaXMgdGhlIHNhbXBsaW5nIHJhdGUgYXMgaXQgaXMgcGFzc2VkIHRvIHRoZSBDUFUKbWVhc3VyZW1lbnQgZmFjaWxpdHkuICBBIHNhbXBsZSB3aWxsIGJlIHRha2VuIGJ5IHRoZSBoYXJkd2FyZSBldmVyeQpgY291bnQnIGN5Y2xlcy4gVXNpbmcgbG93IHZhbHVlcyBoZXJlIHdpbGwgcXVpY2tseSBmaWxsIHVwIHRoZQpzYW1wbGluZyBidWZmZXJzIGFuZCB3aWxsIGdlbmVyYXRlIENQVSBsb2FkIG9uIHRoZSBPUHJvZmlsZSBkYWVtb24gYW5kCnRoZSBrZXJuZWwgbW9kdWxlIGJlaW5nIGJ1c3kgZmx1c2hpbmcgdGhlIGhhcmR3YXJlIGJ1ZmZlcnMuICBUaGlzCm1pZ2h0IGNvbnNpZGVyYWJseSBpbXBhY3QgdGhlIHdvcmtsb2FkIHRvIGJlIHByb2ZpbGVkLgo8L3A+CiAgICAgICAgICAgIDxwPgpUaGUgdW5pdCBtYXNrIGB1bScgaXMgcmVxdWlyZWQgdG8gYmUgemVyby4KPC9wPgogICAgICAgICAgICA8cD4KVGhlIG9wY29udHJvbCB0b29sIHByb3ZpZGVzIGEgbmV3IG9wdGlvbiBzcGVjaWZpYyB0byBTeXN0ZW0gegpoYXJkd2FyZSBzYW1wbGluZzoKPC9wPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtaXplZGxpc3QiPgogICAgICAgICAgICAgIDx1bCBjbGFzcz0iaXRlbWl6ZWRsaXN0IiB0eXBlPSJkaXNjIj4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ibGlzdGl0ZW0iPi0tczM5MGh3c2FtcGJ1ZnNpemU9Im51bSI6IE51bWJlciBvZiAyTUIgYXJlYXMKdXNlZCBwZXIgQ1BVIGZvciBzdG9yaW5nIHNhbXBsZSBkYXRhLiAgVGhlIGJlc3QKc2l6ZSBmb3IgdGhlIHNhbXBsZSBtZW1vcnkgZGVwZW5kcyBvbiB0aGUgcGFydGljdWxhciBzeXN0ZW0gYW5kIHRoZQp3b3JrbG9hZCB0byBiZSBtZWFzdXJlZC4gIFByb3ZpZGluZyB0aGUgc2FtcGxlciB3aXRoIHRvbyBsaXR0bGUgbWVtb3J5CnJlc3VsdHMgaW4gbG9zdCBzYW1wbGVzLiBSZXNlcnZpbmcgdG9vIG11Y2ggc3lzdGVtIG1lbW9yeSBmb3IgdGhlCnNhbXBsZXIgaW1wYWN0cyB0aGUgb3ZlcmFsbCBwZXJmb3JtYW5jZSBhbmQsIGhlbmNlLCBhbHNvIHRoZSB3b3JrbG9hZAp0byBiZSBtZWFzdXJlZC48L2xpPgogICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cD4KQSBzcGVjaWFsIGNvdW50ZXIgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4vZGV2L29wcm9maWxlL3RpbWVyPC9jb2RlPiBpcyBwcm92aWRlZApieSB0aGUga2VybmVsIG1vZHVsZSBhbGxvd2luZyB0byBzd2l0Y2ggYmFjayB0byB0aW1lciBtb2RlIHNhbXBsaW5nCmR5bmFtaWNhbGx5LiAgVGhlIFRJTUVSIGV2ZW50IGlzIGxpbWl0ZWQgdG8gYmUgdXNlZCBvbmx5IHdpdGggdGhpcwpjb3VudGVyLiAgVGhlIFRJTUVSIGV2ZW50IGNhbiBiZSBzcGVjaWZpZWQgdXNpbmcgdGhlCjxjb2RlIGNsYXNzPSJvcHRpb24iPi0tZXZlbnQ9PC9jb2RlPiBhcyB3aXRoIGV2ZXJ5IG90aGVyIGV2ZW50Lgo8L3A+CiAgICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPm9wY29udHJvbCAtLWV2ZW50PVRJTUVSOjE8L3ByZT4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPHA+Ck9uIHoxMCBvciBsYXRlciBtYWNoaW5lcyB0aGUgZGVmYXVsdCBldmVudCBpcyBzZXQgdG8gVElNRVIgaW4gY2FzZSB0aGUKaGFyZHdhcmUgc2FtcGxpbmcgZmFjaWxpdHkgaXMgbm90IGF2YWlsYWJsZS4KPC9wPgogICAgICAgICAgICA8cD4KQWx0aG91Z2ggcmVxdWlyZWQsIHRoZSAnY291bnQnIHBhcmFtZXRlciBvZiB0aGUgVElNRVIgZXZlbnQgaXMKaWdub3JlZC4gIFRoZSB2YWx1ZSBtYXkgZXZlbnR1YWxseSBiZSB1c2VkIGZvciB0aW1lciBiYXNlZCBzYW1wbGluZwp3aXRoIGEgY29uZmlndXJhYmxlIHNhbXBsaW5nIGZyZXF1ZW5jeSwgYnV0IHRoaXMgaXMgY3VycmVudGx5IG5vdApzdXBwb3J0ZWQuCjwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDIiIHRpdGxlPSI1LjkuoERhbmdlcm91cyBjb3VudGVyIHNldHRpbmdzIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9Im1pc3VzZSI+PC9hPjUuOS6gRGFuZ2Vyb3VzIGNvdW50ZXIgc2V0dGluZ3M8L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cD4KT1Byb2ZpbGUgaXMgYSBsb3ctbGV2ZWwgcHJvZmlsZXIgd2hpY2ggYWxsb3dzIGNvbnRpbnVvdXMgcHJvZmlsaW5nIHdpdGggYSBsb3ctb3ZlcmhlYWQgY29zdC4KV2hlbiB1c2luZyBPUHJvZmlsZSBsZWdhY3kgbW9kZSBwcm9maWxpbmcsIGl0IG1heSBiZSBwb3NzaWJsZSB0byBjb25maWd1cmUgc3VjaCBhIGxvdyBhIGNvdW50ZXIgcmVzZXQgdmFsdWUKKGkuZS4sIGhpZ2ggc2FtcGxpbmcgcmF0ZSkgdGhhdCB0aGUgc3lzdGVtIGNhbiBiZWNvbWUgb3ZlcmxvYWRlZCB3aXRoIGNvdW50ZXIgaW50ZXJydXB0cyBhbmQgeW91cgpzeXN0ZW0ncyByZXNwb25zaXZlbmVzcyBtYXkgYmUgc2V2ZXJlbHkgaW1wYWN0ZWQuIFdoaWxzdCBzb21lIHZhbGlkYXRpb24gaXMgZG9uZSBvbiB0aGUgPGNvZGUgY2xhc3M9ImNvZGUiPmNvdW50PC9jb2RlPgp2YWx1ZXMgeW91IHBhc3MgdG8gPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3Bjb250cm9sPC9zdHJvbmc+PC9zcGFuPiB3aXRoIHlvdXIgZXZlbnQgc3BlY2lmaWNhdGlvbiwgaXQgaXMgbm90IGZvb2xwcm9vZi4KPC9wPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJub3RlIiB0aXRsZT0iTm90ZSIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwLjVpbjsgbWFyZ2luLXJpZ2h0OiAwLjVpbjsiPgogICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPk5vdGU8L2gzPgogICAgICAgICAgICAgIDxwPgpUaGlzIGNhbiBoYXBwZW4gYXMgZm9sbG93czogV2hlbiB0aGUgcHJvZmlsZXIgY291bnQKcmVhY2hlcyB6ZXJvLCBhbiBOTUkgaGFuZGxlciBpcyBjYWxsZWQgd2hpY2ggc3RvcmVzIHRoZSBzYW1wbGUgdmFsdWVzIGluIGFuIGludGVybmFsIGJ1ZmZlciwgdGhlbiByZXNldHMgdGhlIGNvdW50ZXIKdG8gaXRzIG9yaWdpbmFsIHZhbHVlLiBJZiB0aGUgcmVzZXQgY291bnQgeW91IHNwZWNpZmllZCBpcyB2ZXJ5IGxvdywgYSBwZW5kaW5nIE5NSSBjYW4gYmUgc2VudCBiZWZvcmUgdGhlIE5NSSBoYW5kbGVyIGhhcwpjb21wbGV0ZWQuIER1ZSB0byB0aGUgcHJpb3JpdHkgb2YgdGhlIE5NSSwgdGhlIHBlbmRpbmcgaW50ZXJydXB0IGlzIGRlbGl2ZXJlZCBpbW1lZGlhdGVseSBhZnRlcgpjb21wbGV0aW9uIG9mIHRoZSBwcmV2aW91cyBpbnRlcnJ1cHQgaGFuZGxlciwgYW5kIGNvbnRyb2wgbmV2ZXIgcmV0dXJucyB0byBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLgpJZiBhbGwgcHJvY2Vzc29ycyBhcmUgc3R1Y2sgaW4gdGhpcyBtb2RlLCB0aGUgc3lzdGVtIHdpbGwgYXBwZWFyIHRvIGJlIGZyb3plbi4KPC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHA+SWYgdGhpcyBoYXBwZW5zLCBpdCB3aWxsIGJlIGltcG9zc2libGUgdG8gYnJpbmcgdGhlIHN5c3RlbSBiYWNrIHRvIGEgd29ya2FibGUgc3RhdGUuClRoZXJlIGlzIG5vIHdheSB0byBwcm92aWRlIHJlYWwgc2VjdXJpdHkgYWdhaW5zdCB0aGlzIGhhcHBlbmluZywgb3RoZXIgdGhhbiBtYWtpbmcgc3VyZSB0byB1c2UgYSByZWFzb25hYmxlIHZhbHVlCmZvciB0aGUgY291bnRlciByZXNldC4gRm9yIGV4YW1wbGUsIHNldHRpbmcgPGNvZGUgY2xhc3M9ImNvbnN0YW50Ij5DUFVfQ0xLX1VOSEFMVEVEPC9jb2RlPiBldmVudCB0eXBlIHdpdGggYSByaWRpY3Vsb3VzbHkgbG93IHJlc2V0IGNvdW50IChlLmcuIDUwMCkKaXMgbGlrZWx5IHRvIGZyZWV6ZSB0aGUgc3lzdGVtLgo8L3A+CiAgICAgICAgICAgIDxwPgpJbiBzaG9ydCA6IDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPkRvbid0IHRyeSBhIGZvb2xpc2ggc2FtcGxlIGNvdW50IHZhbHVlPC9zdHJvbmc+PC9zcGFuPi4gVW5mb3J0dW5hdGVseSB0aGUgZGVmaW5pdGlvbiBvZiBhIGZvb2xpc2ggdmFsdWUKaXMgcmVhbGx5IGRlcGVuZGVudCBvbiB0aGUgZXZlbnQgdHlwZS4gSWYgZXZlciBpbiBkb3VidCwgcG9zdCBhIG1lc3NhZ2UgdG8gPC9wPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZGRyZXNzIj4KICAgICAgICAgICAgICA8cD48Y29kZSBjbGFzcz0iZW1haWwiPiZsdDs8YSBjbGFzcz0iZW1haWwiIGhyZWY9Im1haWx0bzpvcHJvZmlsZS1saXN0QGxpc3RzLnNmLm5ldCI+b3Byb2ZpbGUtbGlzdEBsaXN0cy5zZi5uZXQ8L2E+Jmd0OzwvY29kZT4uPC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHA+CjwvcD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibm90ZSIgdGl0bGU9Ik5vdGUiIHN0eWxlPSJtYXJnaW4tbGVmdDogMC41aW47IG1hcmdpbi1yaWdodDogMC41aW47Ij48aDMgY2xhc3M9InRpdGxlIj5Ob3RlPC9oMz4KVGhlIHNjZW5hcmlvIGRlc2NyaWJlZCBhYm92ZSBjYW5ub3Qgb2NjdXIgaWYgeW91IHVzZSA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGVyZjwvc3Ryb25nPjwvc3Bhbj4gZm9yIHByb2ZpbGluZyBpbnN0ZWFkIG9mCjxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wY29udHJvbDwvc3Ryb25nPjwvc3Bhbj4sIGJlY2F1c2UgdGhlIHBlcmZfZXZlbnRzIGtlcm5lbCBzdWJzeXN0ZW0gYXV0b21hdGljYWxseSBkZXRlY3RzIHdoZW4gcGVyZm9ybWFuY2UgbW9uaXRvcgppbnRlcnJ1cHRzIGFyZSBhcnJpdmluZyBhdCBhIGRhbmdlcm91cyBsZXZlbCBhbmQgd2lsbCB0aHJvdHRsZSBiYWNrIHRoZSBzYW1wbGluZyByYXRlLgo8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2hhcHRlciIgdGl0bGU9IkNoYXB0ZXKgNC6gT2J0YWluaW5nIHByb2ZpbGluZyByZXN1bHRzIj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIj48YSBpZD0icmVzdWx0cyI+PC9hPkNoYXB0ZXKgNC6gT2J0YWluaW5nIHByb2ZpbGluZyByZXN1bHRzPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0b2MiPgogICAgICAgICAgPHA+CiAgICAgICAgICAgIDxiPlRhYmxlIG9mIENvbnRlbnRzPC9iPgogICAgICAgICAgPC9wPgogICAgICAgICAgPGRsPgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNwcm9maWxlLXNwZWMiPjEuIFByb2ZpbGUgc3BlY2lmaWNhdGlvbnM8L2E+CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2R0PgogICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNwcm9maWxlLXNwZWMtZXhhbXBsZXMiPjEuMS4gRXhhbXBsZXM8L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3Byb2ZpbGUtc3BlYy1kZXRhaWxzIj4xLjIuIFByb2ZpbGUgc3BlY2lmaWNhdGlvbiBwYXJhbWV0ZXJzPC9hPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNsb2NhdGluZy1hbmQtbWFuYWdpbmctYmluYXJ5LWltYWdlcyI+MS4zLiBMb2NhdGluZyBhbmQgbWFuYWdpbmcgYmluYXJ5IGltYWdlczwvYT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjbm8tcmVzdWx0cyI+MS40LiBXaGF0IHRvIGRvIHdoZW4geW91IGRvbid0IGdldCBhbnkgcmVzdWx0czwvYT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8L2RkPgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNvcHJlcG9ydCI+Mi4gSW1hZ2Ugc3VtbWFyaWVzIGFuZCBzeW1ib2wgc3VtbWFyaWVzICg8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcHJlcG9ydDwvc3Ryb25nPjwvc3Bhbj4pPC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjb3ByZXBvcnQtbWVyZ2luZyI+Mi4xLiBNZXJnaW5nIHNlcGFyYXRlIHByb2ZpbGVzPC9hPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNvcHJlcG9ydC1jb21wYXJpc29uIj4yLjIuIFNpZGUtYnktc2lkZSBtdWx0aXBsZSByZXN1bHRzPC9hPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNvcHJlcG9ydC1jYWxsZ3JhcGgiPjIuMy4gQ2FsbGdyYXBoIG91dHB1dDwvYT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjb3ByZXBvcnQtZGlmZiI+Mi40LiBEaWZmZXJlbnRpYWwgcHJvZmlsZXMgd2l0aCA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcHJlcG9ydDwvc3Ryb25nPjwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI29wcmVwb3J0LWFub24iPjIuNS4gQW5vbnltb3VzIGV4ZWN1dGFibGUgbWFwcGluZ3M8L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI29wcmVwb3J0LXhtbCI+Mi42LiBYTUwgZm9ybWF0dGVkIG91dHB1dDwvYT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjb3ByZXBvcnQtb3B0aW9ucyI+Mi43LiBPcHRpb25zIGZvciA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcHJlcG9ydDwvc3Ryb25nPjwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjb3Bhbm5vdGF0ZSI+My4gT3V0cHV0dGluZyBhbm5vdGF0ZWQgc291cmNlICg8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGFubm90YXRlPC9zdHJvbmc+PC9zcGFuPik8L2E+CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2R0PgogICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNvcGFubm90YXRlLWZpbmRpbmctc291cmNlIj4zLjEuIExvY2F0aW5nIHNvdXJjZSBmaWxlczwvYT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjb3Bhbm5vdGF0ZS1kZXRhaWxzIj4zLjIuIFVzYWdlIG9mIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wYW5ub3RhdGU8L3N0cm9uZz48L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dldHRpbmctaml0LXJlcG9ydHMiPjQuIE9Qcm9maWxlIHJlc3VsdHMgd2l0aCBKSVQgc2FtcGxlczwvYT4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI29wZ3Byb2YiPjUuIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPmdwcm9mPC9zdHJvbmc+PC9zcGFuPi1jb21wYXRpYmxlIG91dHB1dCAoPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3BncHJvZjwvc3Ryb25nPjwvc3Bhbj4pPC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjb3BncHJvZi1kZXRhaWxzIj41LjEuIFVzYWdlIG9mIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wZ3Byb2Y8L3N0cm9uZz48L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI29wYXJjaGl2ZSI+Ni4gQW5hbHl6aW5nIHByb2ZpbGUgZGF0YSBvbiBhbm90aGVyIHN5c3RlbSAoPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3BhcmNoaXZlPC9zdHJvbmc+PC9zcGFuPik8L2E+CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2R0PgogICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNvcGFyY2hpdmUtZGV0YWlscyI+Ni4xLiBVc2FnZSBvZiA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGFyY2hpdmU8L3N0cm9uZz48L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI29waW1wb3J0Ij43LiBDb252ZXJ0aW5nIHNhbXBsZSBkYXRhYmFzZSBmaWxlcyAoPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3BpbXBvcnQ8L3N0cm9uZz48L3NwYW4+KTwvYT4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI29waW1wb3J0LWRldGFpbHMiPjcuMS4gVXNhZ2Ugb2YgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3BpbXBvcnQ8L3N0cm9uZz48L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICA8L2RsPgogICAgICAgIDwvZGl2PgogICAgICAgIDxwPgpPSywgc28gdGhlIHByb2ZpbGVyIGhhcyBiZWVuIHJ1bm5pbmcsIGJ1dCBpdCdzIG5vdCBtdWNoIHVzZSB1bmxlc3Mgd2UgY2FuIGdldCBzb21lIGRhdGEgb3V0LiBTb21ldGltZXMsCk9Qcm9maWxlIGRvZXMgYSBsaXR0bGUgPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+dG9vPC9lbT48L3NwYW4+IGdvb2QgYSBqb2Igb2Yga2VlcGluZyBvdmVyaGVhZCBsb3csIGFuZCBubyBkYXRhIHJlYWNoZXMKdGhlIHByb2ZpbGVyLiBUaGlzIGNhbiBoYXBwZW4gb24gbGlnaHRseS1sb2FkZWQgbWFjaGluZXMuIElmIHlvdSdyZSB1c2luZyBPUG9yaWZsZSBsZWdhY3kgbW9kZSwgeW91IGNhbgpmb3JjZSBhIGR1bXAgYXQgYW55IHRpbWUgd2l0aCA6CjwvcD4KICAgICAgICA8cD4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb21tYW5kIj4KICAgICAgICAgICAgPHN0cm9uZz5vcGNvbnRyb2wgLS1kdW1wPC9zdHJvbmc+CiAgICAgICAgICA8L3NwYW4+CiAgICAgICAgPC9wPgogICAgICAgIDxwPlRoaXMgZW5zdXJlcyB0aGF0IGFueSBwcm9maWxlIGRhdGEgY29sbGVjdGVkIGJ5IHRoZSA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcHJvZmlsZWQ8L3N0cm9uZz48L3NwYW4+IGRhZW1vbiBoYXMgYmVlbiBmbHVzZWhkCnRvIGRpc2suICBSZW1lbWJlciB0byBkbyBhIDxjb2RlIGNsYXNzPSJjb2RlIj5kdW1wPC9jb2RlPiwgPGNvZGUgY2xhc3M9ImNvZGUiPnN0b3A8L2NvZGU+LCA8Y29kZSBjbGFzcz0iY29kZSI+c2h1dGRvd248L2NvZGU+LCBvciA8Y29kZSBjbGFzcz0iY29kZSI+ZGVpbml0PC9jb2RlPgpiZWZvcmUgY29tcGxhaW5pbmcgdGhlcmUgaXMgbm8gcHJvZmlsaW5nIGRhdGEhCjwvcD4KICAgICAgICA8cD4KTm93IHRoYXQgd2UndmUgZ290IHNvbWUgZGF0YSwgaXQgaGFzIHRvIGJlIHByb2Nlc3NlZC4gVGhhdCdzIHRoZSBqb2Igb2YgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3ByZXBvcnQ8L3N0cm9uZz48L3NwYW4+LAo8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGFubm90YXRlPC9zdHJvbmc+PC9zcGFuPiwgb3IgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3BncHJvZjwvc3Ryb25nPjwvc3Bhbj4uCjwvcD4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MSIgdGl0bGU9IjEuoFByb2ZpbGUgc3BlY2lmaWNhdGlvbnMiPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBpZD0icHJvZmlsZS1zcGVjIj48L2E+MS6gUHJvZmlsZSBzcGVjaWZpY2F0aW9uczwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cD4KQWxsIG9mIHRoZSBhbmFseXNpcyB0b29scyB0YWtlIGEgPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+cHJvZmlsZSBzcGVjaWZpY2F0aW9uPC9lbT48L3NwYW4+LgpUaGlzIGlzIGEgc2V0IG9mIGRlZmluaXRpb25zIHRoYXQgZGVzY3JpYmUgd2hpY2ggYWN0dWFsIHByb2ZpbGVzIHNob3VsZCBiZQpleGFtaW5lZC4gVGhlIHNpbXBsZXN0IHByb2ZpbGUgc3BlY2lmaWNhdGlvbiBpcyBlbXB0eTogdGhpcyB3aWxsIG1hdGNoIGFsbAp0aGUgYXZhaWxhYmxlIHByb2ZpbGUgZmlsZXMgZm9yIHRoZSBjdXJyZW50IHNlc3Npb24gKHRoaXMgaXMgd2hhdCBoYXBwZW5zCndoZW4geW91IGRvIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wcmVwb3J0PC9zdHJvbmc+PC9zcGFuPikuCjwvcD4KICAgICAgICAgIDxwPgpTcGVjaWZpY2F0aW9uIHBhcmFtZXRlcnMgYXJlIG9mIHRoZSBmb3JtIDxjb2RlIGNsYXNzPSJvcHRpb24iPm5hbWU6dmFsdWVbLHZhbHVlXTwvY29kZT4uCkZvciBleGFtcGxlLCBpZiBJIHdhbnRlZCB0byBnZXQgYSBjb21iaW5lZCBzeW1ib2wgc3VtbWFyeSBmb3IKPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4vYmluL215cHJvZzwvY29kZT4gYW5kIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+L2Jpbi9teXByb2cyPC9jb2RlPiwKSSBjb3VsZCBkbyA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcHJlcG9ydCAtbCBpbWFnZTovYmluL215cHJvZywvYmluL215cHJvZzI8L3N0cm9uZz48L3NwYW4+LgpBcyBhIHNwZWNpYWwgY2FzZSwgeW91IGRvbid0IGFjdHVhbGx5IG5lZWQgdG8gc3BlY2lmeSB0aGUgPGNvZGUgY2xhc3M9Im9wdGlvbiI+aW1hZ2U6PC9jb2RlPgpwYXJ0IGhlcmU6IGFueXRoaW5nIGxlZnQgb24gdGhlIGNvbW1hbmQgbGluZSBpcyBhc3N1bWVkIHRvIGJlIGFuCjxjb2RlIGNsYXNzPSJvcHRpb24iPmltYWdlOjwvY29kZT4gbmFtZS4gU2ltaWxhcmx5LCBpZiBubyA8Y29kZSBjbGFzcz0ib3B0aW9uIj5zZXNzaW9uOjwvY29kZT4KaXMgc3BlY2lmaWVkLCB0aGVuIDxjb2RlIGNsYXNzPSJvcHRpb24iPnNlc3Npb246Y3VycmVudDwvY29kZT4gaXMgYXNzdW1lZCAoImN1cnJlbnQiCmlzIGEgc3BlY2lhbCBuYW1lIG9mIHRoZSBjdXJyZW50IC8gbGFzdCBwcm9maWxpbmcgc2Vzc2lvbikuCjwvcD4KICAgICAgICAgIDxwPgpJbiBhZGRpdGlvbiB0byB0aGUgY29tbWEtc2VwYXJhdGVkIGxpc3Qgc2hvd24gYWJvdmUsIHNvbWUgb2YgdGhlIApzcGVjaWZpY2F0aW9uIHBhcmFtZXRlcnMgY2FuIHRha2UgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+Z2xvYjwvc3Ryb25nPjwvc3Bhbj4tc3R5bGUKdmFsdWVzLiBGb3IgZXhhbXBsZSwgaWYgSSB3YW50IHRvIHNlZSBpbWFnZSBzdW1tYXJpZXMgZm9yIGFsbApiaW5hcmllcyBwcm9maWxlZCBpbiA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPi91c3IvYmluLzwvY29kZT4sIEkgY291bGQgZG8KPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3ByZXBvcnQgaW1hZ2U6L3Vzci9iaW4vXCo8L3N0cm9uZz48L3NwYW4+LiBOb3RlIHRoZSBuZWNlc3NpdHkKdG8gZXNjYXBlIHRoZSBzcGVjaWFsIGNoYXJhY3RlciBmcm9tIHRoZSBzaGVsbC4KPC9wPgogICAgICAgICAgPHA+CkZvciA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcHJlcG9ydDwvc3Ryb25nPjwvc3Bhbj4sIHByb2ZpbGUgc3BlY2lmaWNhdGlvbnMgY2FuIGJlIHVzZWQgdG8KZGVmaW5lIHR3byBwcm9maWxlcywgZ2l2aW5nIGRpZmZlcmVudGlhbCBvdXRwdXQuIFRoaXMgaXMgZG9uZSBieQplbmNsb3NpbmcgZWFjaCBvZiB0aGUgdHdvIHNwZWNpZmljYXRpb25zIHdpdGhpbiBjdXJseSBicmFjZXMsIGFzIHNob3duCmluIHRoZSBleGFtcGxlcyBiZWxvdy4gQW55IHNwZWNpZmljYXRpb25zIG91dHNpZGUgb2YgY3VybHkgYnJhY2VzIGFyZQpzaGFyZWQgYWNyb3NzIGJvdGguCjwvcD4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QyIiB0aXRsZT0iMS4xLqBFeGFtcGxlcyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJwcm9maWxlLXNwZWMtZXhhbXBsZXMiPjwvYT4xLjEuoEV4YW1wbGVzPC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHA+CkltYWdlIHN1bW1hcmllcyBmb3IgYWxsIHByb2ZpbGVzIHdpdGggPGNvZGUgY2xhc3M9ImNvbnN0YW50Ij5EQVRBX01FTV9SRUZTPC9jb2RlPgpzYW1wbGVzIGluIHRoZSBzYXZlZCBzZXNzaW9uIGNhbGxlZCAic3RyZXNzdGVzdCIgOgo8L3A+CiAgICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPgojIG9wcmVwb3J0IHNlc3Npb246c3RyZXNzdGVzdCBldmVudDpEQVRBX01FTV9SRUZTCjwvcHJlPgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8cD4KU3ltYm9sIHN1bW1hcnkgZm9yIHRoZSBhcHBsaWNhdGlvbiBjYWxsZWQgInRlc3Rfc3ltNTNjOHh4LDl4eCIuIE5vdGUgdGhlCmVzY2FwaW5nIGlzIG5lY2Vzc2FyeSBhcyA8Y29kZSBjbGFzcz0ib3B0aW9uIj5pbWFnZTo8L2NvZGU+IHRha2VzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QuCjwvcD4KICAgICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+CiMgb3ByZXBvcnQgLWwgLi90ZXN0L3Rlc3Rfc3ltNTNjOHh4XCw5eHgKPC9wcmU+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDxwPgpJbWFnZSBzdW1tYXJpZXMgZm9yIGFsbCBiaW5hcmllcyBpbiB0aGUgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj50ZXN0PC9jb2RlPiBkaXJlY3RvcnksCmV4Y2VwdGluZyA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPmJvcmluZy10ZXN0PC9jb2RlPiA6CjwvcD4KICAgICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+CiMgb3ByZXBvcnQgaW1hZ2U6Li90ZXN0L1wqIGltYWdlLWV4Y2x1ZGU6Li90ZXN0L2JvcmluZy10ZXN0CjwvcHJlPgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8cD4KRGlmZmVyZW50aWFsIHByb2ZpbGUgb2YgYSBiaW5hcnkgc3RvcmVkIGluIHR3byBhcmNoaXZlcyA6CjwvcD4KICAgICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+CiMgb3ByZXBvcnQgLWwgL2Jpbi9iYXNoIHsgYXJjaGl2ZTouL29yaWcgfSB7IGFyY2hpdmU6Li9uZXcgfQo8L3ByZT4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPHA+CkRpZmZlcmVudGlhbCBwcm9maWxlIG9mIGFuIGFyY2hpdmVkIGJpbmFyeSB3aXRoIHRoZSBjdXJyZW50IHNlc3Npb24gOgo8L3A+CiAgICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPgojIG9wcmVwb3J0IC1sIC9iaW4vYmFzaCB7IGFyY2hpdmU6Li9vcmlnIH0geyB9CjwvcHJlPgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgdGl0bGU9IjEuMi6gUHJvZmlsZSBzcGVjaWZpY2F0aW9uIHBhcmFtZXRlcnMiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj48YSBpZD0icHJvZmlsZS1zcGVjLWRldGFpbHMiPjwvYT4xLjIuoFByb2ZpbGUgc3BlY2lmaWNhdGlvbiBwYXJhbWV0ZXJzPC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj5hcmNoaXZlOjwvY29kZT4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZW1waGFzaXMiPgogICAgICAgICAgICAgICAgICAgICAgPGVtPmFyY2hpdmVwYXRoPC9lbT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgoJCUEgcGF0aCB0byBhbiBhcmNoaXZlIG1hZGUgd2l0aCA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGFyY2hpdmU8L3N0cm9uZz48L3NwYW4+LgoJCUFic2VuY2Ugb2YgdGhpcyB0YWcsIHVubGlrZSBvdGhlcnMsIG1lYW5zICJ0aGUgY3VycmVudCBzeXN0ZW0iLAoJCWVxdWl2YWxlbnQgdG8gc3BlY2lmeWluZyAiYXJjaGl2ZToiLgoJCTwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj5zZXNzaW9uOjwvY29kZT4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZW1waGFzaXMiPgogICAgICAgICAgICAgICAgICAgICAgPGVtPnNlc3Npb25saXN0PC9lbT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgoJCUEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2Ygc2Vzc2lvbiBuYW1lcyB0byByZXNvbHZlIGluLiBBYnNlbmNlIG9mIHRoaXMKCQl0YWcsIHVubGlrZSBvdGhlcnMsIG1lYW5zICJ0aGUgY3VycmVudCBzZXNzaW9uIiwgZXF1aXZhbGVudCB0bwoJCXNwZWNpZnlpbmcgInNlc3Npb246Y3VycmVudCIuCgkJPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPnNlc3Npb24tZXhjbHVkZTo8L2NvZGU+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj4KICAgICAgICAgICAgICAgICAgICAgIDxlbT5zZXNzaW9ubGlzdDwvZW0+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgIEEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2Ygc2Vzc2lvbnMgdG8gZXhjbHVkZS4KCQk8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+aW1hZ2U6PC9jb2RlPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+CiAgICAgICAgICAgICAgICAgICAgICA8ZW0+aW1hZ2VsaXN0PC9lbT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgQSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBpbWFnZSBuYW1lcyB0byByZXNvbHZlLiBFYWNoIGVudHJ5IG1heSBiZSByZWxhdGl2ZQogICAgICAgICAgICAgICAgcGF0aCwgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+Z2xvYjwvc3Ryb25nPjwvc3Bhbj4tc3R5bGUgbmFtZSwgb3IgZnVsbCBwYXRoLCBlLmcuPC9wPgogICAgICAgICAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj5vcHJlcG9ydCAnaW1hZ2U6L3Vzci9iaW4vb3Byb2ZpbGVkLCpvcCosLi9vcHJlcG9ydCc8L3ByZT4KICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj5pbWFnZS1leGNsdWRlOjwvY29kZT4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZW1waGFzaXMiPgogICAgICAgICAgICAgICAgICAgICAgPGVtPmltYWdlbGlzdDwvZW0+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KCQlTYW1lIGFzIDxjb2RlIGNsYXNzPSJvcHRpb24iPmltYWdlOjwvY29kZT4sIGJ1dCB0aGUgbWF0Y2hpbmcgaW1hZ2VzIGFyZSBleGNsdWRlZC4KCQk8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+bGliLWltYWdlOjwvY29kZT4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZW1waGFzaXMiPgogICAgICAgICAgICAgICAgICAgICAgPGVtPmltYWdlbGlzdDwvZW0+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KCQlTYW1lIGFzIDxjb2RlIGNsYXNzPSJvcHRpb24iPmltYWdlOjwvY29kZT4sIGJ1dCBvbmx5IGZvciBpbWFnZXMgdGhhdCBhcmUgZm9yCgkJYSBwYXJ0aWN1bGFyIHByaW1hcnkgYmluYXJ5IGltYWdlIChuYW1lbHksIGFuIGFwcGxpY2F0aW9uKS4gVGhpcyBvbmx5CgkJbWFrZXMgc2Vuc2UgdG8gdXNlIGlmIHlvdSdyZSB1c2luZyA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXNlcGFyYXRlPC9jb2RlPi4KCQlUaGlzIGluY2x1ZGVzIGtlcm5lbCBtb2R1bGVzIGFuZCB0aGUga2VybmVsIHdoZW4gdXNpbmcKCQk8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXNlcGFyYXRlPWtlcm5lbDwvY29kZT4uCgkJPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPmxpYi1pbWFnZS1leGNsdWRlOjwvY29kZT4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZW1waGFzaXMiPgogICAgICAgICAgICAgICAgICAgICAgPGVtPmltYWdlbGlzdDwvZW0+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KCQlTYW1lIGFzIDxjb2RlIGNsYXNzPSJvcHRpb24iPmxpYi1pbWFnZTo8L2NvZGU+LCBidXQgdGhlIG1hdGNoaW5nIGltYWdlcwoJCWFyZSBleGNsdWRlZC4KCQk8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+ZXZlbnQ6PC9jb2RlPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+CiAgICAgICAgICAgICAgICAgICAgICA8ZW0+ZXZlbnRsaXN0PC9lbT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgoJCVRoZSBzeW1ib2xpYyBldmVudCBuYW1lIHRvIG1hdGNoIG9uLCBlLmcuIDxjb2RlIGNsYXNzPSJvcHRpb24iPmV2ZW50OkRBVEFfTUVNX1JFRlM8L2NvZGU+LgoJCVlvdSBjYW4gcGFzcyBhIGxpc3Qgb2YgZXZlbnRzIGZvciBzaWRlLWJ5LXNpZGUgY29tcGFyaXNvbiB3aXRoIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wcmVwb3J0PC9zdHJvbmc+PC9zcGFuPi4KCQlXaGVuIHVzaW5nIHRoZSB0aW1lciBpbnRlcnJ1cHQsIHRoZSBldmVudCBpcyBhbHdheXMgIlRJTUVSIi4KCQk8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+Y291bnQ6PC9jb2RlPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+CiAgICAgICAgICAgICAgICAgICAgICA8ZW0+ZXZlbnRjb3VudGxpc3Q8L2VtPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+CgkJVGhlIGV2ZW50IGNvdW50IHRvIG1hdGNoIG9uLCBlLmcuIDxjb2RlIGNsYXNzPSJvcHRpb24iPmV2ZW50OkRBVEFfTUVNX1JFRlMgY291bnQ6MzAwMDA8L2NvZGU+LgoJCU5vdGUgdGhhdCB0aGlzIHZhbHVlIHJlZmVycyB0byB0aGUgY291bnQgdmFsdWUgaW4gdGhlIGV2ZW50IHNwZWMgeW91IHBhc3NlZAoJCXRvIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wY29udHJvbDwvc3Ryb25nPjwvc3Bhbj4gb3IgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3BlcmY8L3N0cm9uZz48L3NwYW4+IHdoZW4gc2V0dGluZyB1cCB0byBkbyBhCgkJcHJvZmlsZSBydW4uICBJdCBoYXMgbm90aGluZyB0byBkbyB3aXRoIHRoZSBzYW1wbGUgY291bnRzIGluIHRoZSBwcm9maWxlIGRhdGEKCQlpdHNlbGYuCgkJWW91IGNhbiBwYXNzIGEgbGlzdCBvZiBldmVudHMgZm9yIHNpZGUtYnktc2lkZSBjb21wYXJpc29uIHdpdGggPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3ByZXBvcnQ8L3N0cm9uZz48L3NwYW4+LgoJCVdoZW4gdXNpbmcgdGhlIHRpbWVyIGludGVycnVwdCwgdGhlIGNvdW50IGlzIGFsd2F5cyAwIChpbmRpY2F0aW5nIGl0IGNhbm5vdCBiZSBzZXQpLgoJCTwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj51bml0LW1hc2s6PC9jb2RlPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+CiAgICAgICAgICAgICAgICAgICAgICA8ZW0+bWFza2xpc3Q8L2VtPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+CgkJVGhlIHVuaXQgbWFzayB2YWx1ZSBvZiB0aGUgZXZlbnQgdG8gbWF0Y2ggb24sIGUuZy4gPGNvZGUgY2xhc3M9Im9wdGlvbiI+dW5pdC1tYXNrOjE8L2NvZGU+LgoJCVlvdSBjYW4gcGFzcyBhIGxpc3Qgb2YgZXZlbnRzIGZvciBzaWRlLWJ5LXNpZGUgY29tcGFyaXNvbiB3aXRoIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wcmVwb3J0PC9zdHJvbmc+PC9zcGFuPi4KCQk8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+Y3B1OjwvY29kZT4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZW1waGFzaXMiPgogICAgICAgICAgICAgICAgICAgICAgPGVtPmNwdWxpc3Q8L2VtPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+CgkJT25seSBjb25zaWRlciBwcm9maWxlcyBmb3IgdGhlIGdpdmVuIG51bWJlcmVkIENQVSAoc3RhcnRpbmcgZnJvbSB6ZXJvKS4KCQlUaGlzIGlzIG9ubHkgdXNlZnVsIHdoZW4gdXNpbmcgQ1BVIHByb2ZpbGUgc2VwYXJhdGlvbi4KCQk8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+dGdpZDo8L2NvZGU+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj4KICAgICAgICAgICAgICAgICAgICAgIDxlbT5waWRsaXN0PC9lbT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgoJCU9ubHkgY29uc2lkZXIgcHJvZmlsZXMgZm9yIHRoZSBnaXZlbiB0YXNrIGdyb3Vwcy4gVW5sZXNzIHNvbWUgcHJvZ3JhbQoJCWlzIHVzaW5nIHRocmVhZHMsIHRoZSB0YXNrIGdyb3VwIElEIG9mIGEgcHJvY2VzcyBpcyB0aGUgc2FtZQoJCWFzIGl0cyBwcm9jZXNzIElELiBUaGlzIG9wdGlvbiBjb3JyZXNwb25kcyB0byB0aGUgUE9TSVgKCQlub3Rpb24gb2YgYSB0aHJlYWQgZ3JvdXAuCgkJVGhpcyBpcyBvbmx5IHVzZWZ1bCB3aGVuIHVzaW5nIHBlci1wcm9jZXNzIHByb2ZpbGUgc2VwYXJhdGlvbi4KCQk8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+dGlkOjwvY29kZT4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZW1waGFzaXMiPgogICAgICAgICAgICAgICAgICAgICAgPGVtPnRpZGxpc3Q8L2VtPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+CgkJT25seSBjb25zaWRlciBwcm9maWxlcyBmb3IgdGhlIGdpdmVuIHRocmVhZHMuIFdoZW4gdXNpbmcKCQlyZWNlbnQgdGhyZWFkIGxpYnJhcmllcywgYWxsIHRocmVhZHMgaW4gYSBwcm9jZXNzIHNoYXJlIHRoZQoJCXNhbWUgdGFzayBncm91cCBJRCwgYnV0IGhhdmUgZGlmZmVyZW50IHRocmVhZCBJRHMuIFlvdSBjYW4KCQl1c2UgdGhpcyBvcHRpb24gaW4gY29tYmluYXRpb24gd2l0aCA8Y29kZSBjbGFzcz0ib3B0aW9uIj50Z2lkOjwvY29kZT4gdG8KCQlyZXN0cmljdCB0aGUgcmVzdWx0cyB0byBwYXJ0aWN1bGFyIHRocmVhZHMgd2l0aGluIGEgcHJvY2Vzcy4KCQlUaGlzIGlzIG9ubHkgdXNlZnVsIHdoZW4gdXNpbmcgcGVyLXByb2Nlc3MgcHJvZmlsZSBzZXBhcmF0aW9uLgoJCTwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QyIiB0aXRsZT0iMS4zLqBMb2NhdGluZyBhbmQgbWFuYWdpbmcgYmluYXJ5IGltYWdlcyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJsb2NhdGluZy1hbmQtbWFuYWdpbmctYmluYXJ5LWltYWdlcyI+PC9hPjEuMy6gTG9jYXRpbmcgYW5kIG1hbmFnaW5nIGJpbmFyeSBpbWFnZXM8L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cD4KRWFjaCBzZXNzaW9uJ3Mgc2FtcGxlIGZpbGVzIGNhbiBiZSBmb3VuZCBpbiB0aGUgJFNFU1NJT05fRElSL3NhbXBsZXMvIGRpcmVjdG9yeSAoZGVmYXVsdCB3aGVuCnVzaW5nIGxlZ2FjeSBtb2RlOiA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPi92YXIvbGliL29wcm9maWxlL3NhbXBsZXMvPC9jb2RlPjsgZGVmYXVsdCB3aGVuIHVzaW5nCjxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wZXJmPC9zdHJvbmc+PC9zcGFuPjogIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+Jmx0O2N1cl9kaXImZ3Q7L29wcm9maWxlX2RhdGEvc2FtcGxlcy88L2NvZGU+KS4KVGhlc2UgYXJlIHVzZWQsIGFsb25nIHdpdGggdGhlIGJpbmFyeSBpbWFnZSBmaWxlcywgdG8gcHJvZHVjZSBodW1hbi1yZWFkYWJsZSBkYXRhLgpJbiBzb21lIGNpcmN1bXN0YW5jZXMgKGUuZy4sIGtlcm5lbCBtb2R1bGVzKSwgT1Byb2ZpbGUKd2lsbCBub3QgYmUgYWJsZSB0byBmaW5kIHRoZSBiaW5hcnkgaW1hZ2VzLiBBbGwgdGhlIHRvb2xzIGhhdmUgYW4gPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1pbWFnZS1wYXRoPC9jb2RlPgpvcHRpb24gdG8gd2hpY2ggeW91IGNhbiBwYXNzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgYWx0ZXJuYXRlIHBhdGhzIHRvIHNlYXJjaC4gRm9yIGV4YW1wbGUsCkkgY2FuIGxldCBPUHJvZmlsZSBmaW5kIG15IDIuNiBtb2R1bGVzIGJ5IHVzaW5nIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPi0taW1hZ2UtcGF0aCAvbGliL21vZHVsZXMvMi42LjAva2VybmVsLzwvc3Ryb25nPjwvc3Bhbj4uCkl0IGlzIHlvdXIgcmVzcG9uc2liaWxpdHkgdG8gZW5zdXJlIHRoYXQgdGhlIGNvcnJlY3QgaW1hZ2VzIGFyZSBmb3VuZCB3aGVuIHVzaW5nIHRoaXMKb3B0aW9uLgo8L3A+CiAgICAgICAgICAgIDxwPgpOb3RlIHRoYXQgaWYgYSBiaW5hcnkgaW1hZ2UgY2hhbmdlcyBhZnRlciB0aGUgc2FtcGxlIGZpbGUgd2FzIGNyZWF0ZWQsIHlvdSB3b24ndCBiZSBhYmxlIHRvIGdldCB1c2VmdWwKc3ltYm9sLWJhc2VkIGRhdGEgb3V0LiBUaGlzIHNpdHVhdGlvbiBpcyBkZXRlY3RlZCBmb3IgeW91LiBJZiB5b3UgcmVwbGFjZSBhIGJpbmFyeSwgeW91IHNob3VsZAptYWtlIHN1cmUgdG8gc2F2ZSB0aGUgb2xkIGJpbmFyeSBpZiB5b3UgbmVlZCB0byBkbyBjb21wYXJhdGl2ZSBwcm9maWxlcy4KPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgdGl0bGU9IjEuNC6gV2hhdCB0byBkbyB3aGVuIHlvdSBkb24ndCBnZXQgYW55IHJlc3VsdHMiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj48YSBpZD0ibm8tcmVzdWx0cyI+PC9hPjEuNC6gV2hhdCB0byBkbyB3aGVuIHlvdSBkb24ndCBnZXQgYW55IHJlc3VsdHM8L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cD4KV2hlbiBhdHRlbXB0aW5nIHRvIGdldCBvdXRwdXQsIHlvdSBtYXkgc2VlIHRoZSBlcnJvciA6CjwvcD4KICAgICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+CmVycm9yOiBubyBzYW1wbGUgZmlsZXMgZm91bmQ6IHByb2ZpbGUgc3BlY2lmaWNhdGlvbiB0b28gc3RyaWN0ID8KPC9wcmU+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDxwPgpXaGF0IHRoaXMgaXMgc2F5aW5nIGlzIHRoYXQgdGhlIHByb2ZpbGUgc3BlY2lmaWNhdGlvbiB5b3UgcGFzc2VkIGluLAp3aGVuIG1hdGNoZWQgYWdhaW5zdCB0aGUgYXZhaWxhYmxlIHNhbXBsZSBmaWxlcywgcmVzdWx0ZWQgaW4gbm8gbWF0Y2hlcy4KVGhlcmUgYXJlIGEgbnVtYmVyIG9mIHJlYXNvbnMgdGhpcyBtaWdodCBoYXBwZW46CjwvcD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj5zcGVsbGluZzwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpZb3Ugc3BlY2lmaWVkIGEgYmluYXJ5IG5hbWUsIGJ1dCBzcGVsdCBpdCB3cm9uZ2x5LiBDaGVjayB5b3VyIHNwZWxsaW5nICEKPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPnByb2ZpbGVyIHdhc24ndCBydW5uaW5nPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+Ck1ha2UgdmVyeSBzdXJlIHRoYXQgT1Byb2ZpbGUgd2FzIGFjdHVhbGx5IHVwIGFuZCBydW5uaW5nIHdoZW4geW91IHJhbgp0aGUgYXBwbGljYXRpb24geW91IHdpc2ggdG8gcHJvZmlsZS4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPmFwcGxpY2F0aW9uIGRpZG4ndCBydW4gbG9uZyBlbm91Z2g8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KUmVtZW1iZXIgT1Byb2ZpbGUgaXMgYSBzdGF0aXN0aWNhbCBwcm9maWxlciAtIHlvdSdyZSBub3QgZ3VhcmFudGVlZCB0bwpnZXQgc2FtcGxlcyBmb3Igc2hvcnQtcnVubmluZyBwcm9ncmFtcy4gWW91IGNhbiBoZWxwIHRoaXMgYnkgdXNpbmcgYQpsb3dlciBjb3VudCBmb3IgdGhlIHBlcmZvcm1hbmNlIGNvdW50ZXIsIHNvIHRoZXJlIGFyZSBhIGxvdCBtb3JlIHNhbXBsZXMKdGFrZW4gcGVyIHNlY29uZC4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPmFwcGxpY2F0aW9uIHNwZW50IG1vc3Qgb2YgaXRzIHRpbWUgaW4gbGlicmFyaWVzPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+ClNpbWlsYXJseSwgaWYgdGhlIGFwcGxpY2F0aW9uIHNwZW5kcyBsaXR0bGUgdGltZSBpbiB0aGUgbWFpbiBiaW5hcnkgaW1hZ2UKaXRzZWxmLCB3aXRoIG1vc3Qgb2YgaXQgc3BlbnQgaW4gc2hhcmVkIGxpYnJhcmllcyBpdCB1c2VzLCB5b3UgbWlnaHQKbm90IHNlZSBhbnkgc2FtcGxlcyBmb3IgdGhlIGJpbmFyeSBpbWFnZSAoaS5lLiwgZXhlY3V0YWJsZSkgaXRzZWxmLiBJZiB5b3UncmUKdXNpbmcgT1Byb2ZpbGUgbGVnYWN5IG1vZGUgcHJvZmlsaW5nLCB0aGVuIHdlIHJlY29tbWVuZCB1c2luZwo8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGNvbnRyb2wgLS1zZXBhcmF0ZT1saWI8L3N0cm9uZz48L3NwYW4+IGJlZm9yZSB0aGUKcHJvZmlsaW5nIHNlc3Npb24gc28gdGhhdCA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcHJlcG9ydDwvc3Ryb25nPjwvc3Bhbj4gYW5kIGZyaWVuZHMgc2hvdwp0aGUgbGlicmFyeSBwcm9maWxlcyBvbiBhIHBlci1hcHBsaWNhdGlvbiBiYXNpcy4gIFRoaXMgaXMgZG9uZSBhdXRvbWF0aWNhbGx5CndoZW4gcHJvZmlsaW5nIHdpdGggPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3BlcmY8L3N0cm9uZz48L3NwYW4+LCBzbyBubyBzcGVjaWFsIHNldHVwIGlzIG5lY2Vzc2FyeS4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPnNwZWNpZmljYXRpb24gd2FzIHJlYWxseSB0b28gc3RyaWN0PC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+CkZvciBleGFtcGxlLCB5b3Ugc3BlY2lmaWVkIHNvbWV0aGluZyBsaWtlIDxjb2RlIGNsYXNzPSJvcHRpb24iPnRnaWQ6MzQzMzwvY29kZT4sCmJ1dCBubyB0YXNrIHdpdGggdGhhdCBncm91cCBJRCBldmVyIHJhbiB0aGUgY29kZS4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPmFwcGxpY2F0aW9uIGRpZG4ndCBnZW5lcmF0ZSBhbnkgZXZlbnRzPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+CklmIHlvdSdyZSB1c2luZyBhIHBhcnRpY3VsYXIgZXZlbnQgY291bnRlciwgZm9yIGV4YW1wbGUgY291bnRpbmcgTU1YCm9wZXJhdGlvbnMsIHRoZSBjb2RlIG1pZ2h0IHNpbXBseSBoYXZlIG5vdCBnZW5lcmF0ZWQgYW55IGV2ZW50cyBpbiB0aGUKZmlyc3QgcGxhY2UuIFZlcmlmeSB0aGUgY29kZSB5b3UncmUgcHJvZmlsaW5nIGRvZXMgd2hhdCB5b3UgZXhwZWN0IGl0CnRvLgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+eW91IGRpZG4ndCBzcGVjaWZ5IGtlcm5lbCBtb2R1bGUgbmFtZSBjb3JyZWN0bHk8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KSWYgeW91J3JlIHRyeWluZyB0byBnZXQgcmVwb3J0cyBmb3IgYSBrZXJuZWwKbW9kdWxlLCBtYWtlIHN1cmUgdG8gdXNlIHRoZSA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tcDwvY29kZT4gb3B0aW9uLCBhbmQgc3BlY2lmeSB0aGUKbW9kdWxlIG5hbWUgPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+d2l0aDwvZW0+PC9zcGFuPiB0aGUgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4ua288L2NvZGU+CmV4dGVuc2lvbi4gQ2hlY2sgaWYgdGhlIG1vZHVsZSBpcyBvbmUgbG9hZGVkIGZyb20gaW5pdHJkLgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIHRpdGxlPSIyLqBJbWFnZSBzdW1tYXJpZXMgYW5kIHN5bWJvbCBzdW1tYXJpZXMgKG9wcmVwb3J0KSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIGlkPSJvcHJlcG9ydCI+PC9hPjIuoEltYWdlIHN1bW1hcmllcyBhbmQgc3ltYm9sIHN1bW1hcmllcyAoPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3ByZXBvcnQ8L3N0cm9uZz48L3NwYW4+KTwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cD4KVGhlIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wcmVwb3J0PC9zdHJvbmc+PC9zcGFuPiB1dGlsaXR5IGlzIHRoZSBwcmltYXJ5IHV0aWxpdHkgeW91IHdpbGwgdXNlIGZvciAKZ2V0dGluZyBmb3JtYXR0ZWQgZGF0YSBvdXQgb2YgT1Byb2ZpbGUuIEl0IHByb2R1Y2VzIHR3byB0eXBlcyBvZiBkYXRhOiBpbWFnZSBzdW1tYXJpZXMKYW5kIHN5bWJvbCBzdW1tYXJpZXMuIEFuIGltYWdlIHN1bW1hcnkgbGlzdHMgdGhlIG51bWJlciBvZiBzYW1wbGVzIGZvciBpbmRpdmlkdWFsCmJpbmFyeSBpbWFnZXMgc3VjaCBhcyBsaWJyYXJpZXMgb3IgYXBwbGljYXRpb25zLiBTeW1ib2wgc3VtbWFyaWVzIHByb3ZpZGUgcGVyLXN5bWJvbApwcm9maWxlIGRhdGEuIEluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgd2UncmUgZ2V0dGluZyBhbiBpbWFnZSBzdW1tYXJ5IGZvciB0aGUgd2hvbGUKc3lzdGVtOgo8L3A+CiAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj4KJCBvcHJlcG9ydCAtLWxvbmctZmlsZW5hbWVzCkNQVTogUElJSSwgc3BlZWQgODYzLjE5NSBNSHogKGVzdGltYXRlZCkKQ291bnRlZCBDUFVfQ0xLX1VOSEFMVEVEIGV2ZW50cyAoY2xvY2tzIHByb2Nlc3NvciBpcyBub3QgaGFsdGVkKSB3aXRoIGEgdW5pdCBtYXNrIG9mIDB4MDAgKE5vIHVuaXQgbWFzaykgY291bnQgMjMxNTAKICAgOTA1ODk4IDU5Ljc0MTUgL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8zLjIvY2MxcGx1cwogICAyMTQzMjAgMTQuMTMzOCAvYm9vdC8yLjYuMC92bWxpbnV4CiAgIDEwMzQ1MCAgNi44MjIyIC9saWIvaTY4Ni9saWJjLTIuMy4yLnNvCiAgICA2MDE2MCAgMy45Njc0IC91c3IvbG9jYWwvYmluL21hZHBsYXkKICAgIDMxNzY5ICAyLjA5NTEgL3Vzci9sb2NhbC9vcHJvZmlsZS1wcC9iaW4vb3Byb2ZpbGVkCiAgICAyNjU1MCAgMS43NTA5IC91c3IvbGliL2xpYmFydHNmbG93LnNvLjEuMC4wCiAgICAyMzkwNiAgMS41NzY1IC91c3IvYmluL2FzCiAgICAxODc3MCAgMS4yMzc4IC9vcHJvZmlsZQogICAgMTU1MjggIDEuMDI0MCAvdXNyL2xpYi9xdC0zLjAuNS9saWIvbGlicXQtbXQuc28uMy4wLjUKICAgIDExOTc5ICAwLjc5MDAgL3Vzci9YMTFSNi9iaW4vWEZyZWU4NgogICAgMTEzMjggIDAuNzQ3MSAvYmluL2Jhc2gKICAgIC4uLgo8L3ByZT4KICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgPC90YWJsZT4KICAgICAgICAgIDxwPgpJZiB3ZSBoYWQgc3BlY2lmaWVkIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc3ltYm9sczwvY29kZT4gaW4gdGhlIHByZXZpb3VzIGNvbW1hbmQsIHdlIHdvdWxkIGhhdmUKZ290dGVuIGEgc3ltYm9sIHN1bW1hcnkgb2YgYWxsIHRoZSBpbWFnZXMgYWNyb3NzIHRoZSBlbnRpcmUgc3lzdGVtLiBXZSBjYW4gcmVzdHJpY3QgdGhpcyB0byBvbmx5CnBhcnQgb2YgdGhlIHN5c3RlbSBwcm9maWxlOyBmb3IgZXhhbXBsZSwKYmVsb3cgaXMgYSBzeW1ib2wgc3VtbWFyeSBvZiB0aGUgT1Byb2ZpbGUgZGFlbW9uLiBOb3RlIHRoYXQgYXMgd2UgdXNlZAo8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGNvbnRyb2wgLS1zZXBhcmF0ZT1saWIsa2VybmVsPC9zdHJvbmc+PC9zcGFuPiwgc3ltYm9scyBmcm9tIGltYWdlcyB0aGF0IDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wcm9maWxlZDwvc3Ryb25nPjwvc3Bhbj4KaGFzIHVzZWQgYXJlIGFsc28gc2hvd24uCjwvcD4KICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPgokIG9wcmVwb3J0IC1sIC1wIC9saWIvbW9kdWxlcy9gdW5hbWUgLXJgIGB3aGljaCBvcHJvZmlsZWRgIDImZ3Q7L2Rldi9udWxsIHwgbW9yZQpDUFU6IENvcmUgMiwgc3BlZWQgMi41MzRlKzA2IE1IeiAoZXN0aW1hdGVkKQpDb3VudGVkIENQVV9DTEtfVU5IQUxURUQgZXZlbnRzIChDbG9jayBjeWNsZXMgd2hlbiBub3QgaGFsdGVkKSB3aXRoIGEgdW5pdCBtYXNrIG9mIDB4MDAgKFVuaGFsdGVkIGNvcmUgY3ljbGVzKSBjb3VudCAxMDAwMDAKc2FtcGxlcyAgJSAgICAgICAgaW1hZ2UgbmFtZSAgICAgICAgICAgICAgIHN5bWJvbCBuYW1lCjEzNTMgICAgIDI0Ljk0NDcgIHZtbGludXggICAgICAgICAgICAgICAgICBzaWR0YWJfY29udGV4dF90b19zaWQKNTAwICAgICAgIDkuMjE4MyAgdm1saW51eCAgICAgICAgICAgICAgICAgIGF2dGFiX2hhc2hfZXZhbAoxNTQgICAgICAgMi44MzkyICB2bWxpbnV4ICAgICAgICAgICAgICAgICAgX19saW5rX3BhdGhfd2FsawoxNTIgICAgICAgMi44MDI0ICB2bWxpbnV4ICAgICAgICAgICAgICAgICAgZF9wcnVuZV9hbGlhc2VzCjEyMCAgICAgICAyLjIxMjQgIHZtbGludXggICAgICAgICAgICAgICAgICBhdnRhYl9zZWFyY2hfbm9kZQoxMDQgICAgICAgMS45MTc0ICB2bWxpbnV4ICAgICAgICAgICAgICAgICAgZmluZF9uZXh0X2JpdAo4NSAgICAgICAgMS41NjcxICB2bWxpbnV4ICAgICAgICAgICAgICAgICAgc2VsaW51eF9maWxlX2ZjbnRsCjgyICAgICAgICAxLjUxMTggIHZtbGludXggICAgICAgICAgICAgICAgICBhdnRhYl93cml0ZQo4MSAgICAgICAgMS40OTM0ICBvcHJvZmlsZWQgICAgICAgICAgICAgICAgb2RiX3VwZGF0ZV9ub2RlX3dpdGhfb2Zmc2V0CjczICAgICAgICAxLjM0NTkgIG9wcm9maWxlZCAgICAgICAgICAgICAgICBvcGRfcHJvY2Vzc19zYW1wbGVzCjcyICAgICAgICAxLjMyNzQgIHZtbGludXggICAgICAgICAgICAgICAgICBhdmNfaGFzX3Blcm1fbm9hdWRpdAo2MSAgICAgICAgMS4xMjQ2ICBsaWJjLTIuMTIuc28gICAgICAgICAgICAgX0lPX3Zmc2NhbmYKNTkgICAgICAgIDEuMDg3OCAgZXh0NC5rbyAgICAgICAgICAgICAgICAgIGV4dDRfbWFya19pbG9jX2RpcnR5Ci4uLgo8L3ByZT4KICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgPC90YWJsZT4KICAgICAgICAgIDxwPgpUaGVzZSBhcmUgdGhlIHR3byBiYXNpYyB3YXlzIHlvdSBhcmUgbW9zdCBsaWtlbHkgdG8gdXNlIHJlZ3VsYXJseSwgYnV0IDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wcmVwb3J0PC9zdHJvbmc+PC9zcGFuPgpjYW4gZG8gYSBsb3QgbW9yZSB0aGFuIHRoYXQsIGFzIGRlc2NyaWJlZCBiZWxvdy4KPC9wPgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDIiIHRpdGxlPSIyLjEuoE1lcmdpbmcgc2VwYXJhdGUgcHJvZmlsZXMiPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJvcHJlcG9ydC1tZXJnaW5nIj48L2E+Mi4xLqBNZXJnaW5nIHNlcGFyYXRlIHByb2ZpbGVzPC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KCklmIHlvdSBoYXZlIHVzZWQgb25lIG9mIHRoZSA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXNlcGFyYXRlWypdPC9jb2RlPiBvcHRpb25zCndoaWxzdCBwcm9maWxpbmcsIHRoZXJlIGNhbiBiZSBzZXZlcmFsIHNlcGFyYXRlIHByb2ZpbGVzIGZvcgphIHNpbmdsZSBiaW5hcnkgaW1hZ2Ugd2l0aGluIGEgc2Vzc2lvbi4gTm9ybWFsbHkgdGhlIG91dHB1dAp3aWxsIGtlZXAgdGhlc2UgaW1hZ2VzIHNlcGFyYXRlZC4gU28sIGZvciBleGFtcGxlLCBpZiB5b3UgcHJvZmlsZWQKd2l0aCBzZXBhcmF0aW9uIG9uIGEgcGVyLWNwdSBiYXNpcyAoPGNvZGUgY2xhc3M9ImNvZGUiPm9wY29udHJvbCAtLXNlcGFyYXRlPWNwdTwvY29kZT4gb3IKPGNvZGUgY2xhc3M9ImNvZGUiPm9wZXJmIC0tc2VwYXJhdGUtY3B1PC9jb2RlPiksIHlvdSB3b3VsZCBzZWUgc2VwYXJhdGUgY29sdW1ucyBpbgp0aGUgb3V0cHV0IG9mIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wcmVwb3J0PC9zdHJvbmc+PC9zcGFuPiBmb3IgZWFjaCBDUFUgd2hlcmUgc2FtcGxlcwp3ZXJlIHJlY29yZGVkLiBCdXQgaXQgY2FuIGJlIHVzZWZ1bCB0byBtZXJnZSB0aGVzZSByZXN1bHRzIGJhY2sgdG9nZXRoZXIKdG8gbWFrZSB0aGUgcmVwb3J0IG1vcmUgcmVhZGFibGUuIFRoZSA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLW1lcmdlPC9jb2RlPiBvcHRpb24gYWxsb3dzCnlvdSB0byBkbyB0aGF0Lgo8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QyIiB0aXRsZT0iMi4yLqBTaWRlLWJ5LXNpZGUgbXVsdGlwbGUgcmVzdWx0cyI+PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9Im9wcmVwb3J0LWNvbXBhcmlzb24iPjwvYT4yLjIuoFNpZGUtYnktc2lkZSBtdWx0aXBsZSByZXN1bHRzPC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KSWYgeW91IGhhdmUgdXNlZCBtdWx0aXBsZSBldmVudHMgd2hlbiBwcm9maWxpbmcsIGJ5IGRlZmF1bHQgeW91IGdldApzaWRlLWJ5LXNpZGUgcmVzdWx0cyBvZiBlYWNoIGV2ZW50J3Mgc2FtcGxlIHZhbHVlcyBmcm9tIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wcmVwb3J0PC9zdHJvbmc+PC9zcGFuPi4KWW91IGNhbiByZXN0cmljdCB3aGljaCBldmVudHMgdG8gbGlzdCBieSBhcHByb3ByaWF0ZSB1c2Ugb2YgdGhlCjxjb2RlIGNsYXNzPSJvcHRpb24iPmV2ZW50OjwvY29kZT4gcHJvZmlsZSBzcGVjaWZpY2F0aW9ucywgZXRjLgo8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QyIiB0aXRsZT0iMi4zLqBDYWxsZ3JhcGggb3V0cHV0Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9Im9wcmVwb3J0LWNhbGxncmFwaCI+PC9hPjIuMy6gQ2FsbGdyYXBoIG91dHB1dDwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwPgpUaGlzIHNlY3Rpb24gcHJvdmlkZXMgZGV0YWlscyBvbiBob3cgdG8gdXNlIHRoZSBPUHJvZmlsZSBjYWxsZ3JhcGggZmVhdHVyZS4KPC9wPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MyIgdGl0bGU9IjIuMy4xLqBDYWxsZ3JhcGggZGV0YWlscyI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0aXRsZSI+PGEgaWQ9Im9wLWNnMSI+PC9hPjIuMy4xLqBDYWxsZ3JhcGggZGV0YWlsczwvaDQ+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPHA+CldoZW4gdXNpbmcgdGhlIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tY2FsbGdyYXBoPC9jb2RlPiBvcHRpb24sIHlvdSBjYW4gc2VlIHdoYXQKZnVuY3Rpb25zIGFyZSBjYWxsaW5nIG90aGVyIGZ1bmN0aW9ucyBpbiB0aGUgb3V0cHV0LiBDb25zaWRlciB0aGUKZm9sbG93aW5nIHByb2dyYW06CjwvcD4KICAgICAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj4KI2luY2x1ZGUgJmx0O3N0cmluZy5oJmd0OwojaW5jbHVkZSAmbHQ7c3RkbGliLmgmZ3Q7CiNpbmNsdWRlICZsdDtzdGRpby5oJmd0OwoKI2RlZmluZSBTSVpFIDUwMDAwMAoKc3RhdGljIGludCBjb21wYXJlKGNvbnN0IHZvaWQgKnMxLCBjb25zdCB2b2lkICpzMikKewogICAgICAgIHJldHVybiBzdHJjbXAoczEsIHMyKTsKfQoKc3RhdGljIHZvaWQgcmVwZWF0KHZvaWQpCnsKICAgICAgICBpbnQgaTsKICAgICAgICBjaGFyICpzdHJpbmdzW1NJWkVdOwogICAgICAgIGNoYXIgc3RyW10gPSAiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiOwoKICAgICAgICBmb3IgKGkgPSAwOyBpICZsdDsgU0laRTsgKytpKSB7CiAgICAgICAgICAgICAgICBzdHJpbmdzW2ldID0gc3RyZHVwKHN0cik7CiAgICAgICAgICAgICAgICBzdHJmcnkoc3RyaW5nc1tpXSk7CiAgICAgICAgfQoKICAgICAgICBxc29ydChzdHJpbmdzLCBTSVpFLCBzaXplb2YoY2hhciAqKSwgY29tcGFyZSk7Cn0KCmludCBtYWluKCkKewogICAgICAgIHdoaWxlICgxKQogICAgICAgICAgICAgICAgcmVwZWF0KCk7Cn0KPC9wcmU+CiAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgPHA+CldoZW4gcnVubmluZyB3aXRoIHRoZSBjYWxsLWdyYXBoIG9wdGlvbiwgT1Byb2ZpbGUgd2lsbApyZWNvcmQgdGhlIGZ1bmN0aW9uIHN0YWNrIGV2ZXJ5IHRpbWUgaXQgdGFrZXMgYSBzYW1wbGUuCjxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wcmVwb3J0IC0tY2FsbGdyYXBoPC9zdHJvbmc+PC9zcGFuPiBvdXRwdXRzIGFuIGVudHJ5IGZvciBlYWNoCmZ1bmN0aW9uLCB3aGVyZSBlYWNoIGVudHJ5IGxvb2tzIHNpbWlsYXIgdG86CjwvcD4KICAgICAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj4Kc2FtcGxlcyAgJSAgICAgICAgaW1hZ2UgbmFtZSAgICAgICAgICAgICAgIHN5bWJvbCBuYW1lCiAgMTk3ICAgICAgIDAuMTU0OCAgY2cgICAgICAgICAgICAgICAgICAgICAgIG1haW4KICAxMjcwMzYgICA5OS44NDUyICBjZyAgICAgICAgICAgICAgICAgICAgICAgcmVwZWF0Cjg0NTkwICAgIDQyLjUwODQgIGxpYmMtMi4zLjIuc28gICAgICAgICAgICBzdHJmcnkKICA4NDU5MCAgICA2Ni40ODM4ICBsaWJjLTIuMy4yLnNvICAgICAgICAgICAgc3RyZnJ5IFtzZWxmXQogIDM5MTY5ICAgIDMwLjc4NTAgIGxpYmMtMi4zLjIuc28gICAgICAgICAgICByYW5kb21fcgogIDM0NzUgICAgICAyLjczMTIgIGxpYmMtMi4zLjIuc28gICAgICAgICAgICBfX2k2ODYuZ2V0X3BjX3RodW5rLmJ4Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPC9wcmU+CiAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgPHA+CkhlcmUgdGhlIG5vbi1pbmRlbnRlZCBsaW5lIGlzIHRoZSBmdW5jdGlvbiB3ZSdyZSBmb2N1c3NpbmcgdXBvbgooPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5zdHJmcnkoKTwvY29kZT4pLiBUaGlzCmxpbmUgaXMgdGhlIHNhbWUgYXMgeW91J2QgZ2V0IGZyb20gYSBub3JtYWwgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3ByZXBvcnQ8L3N0cm9uZz48L3NwYW4+Cm91dHB1dC4KPC9wPgogICAgICAgICAgICAgIDxwPgpBYm92ZSB0aGUgbm9uLWluZGVudGVkIGxpbmUgd2UgZmluZCB0aGUgZnVuY3Rpb25zIHRoYXQgY2FsbGVkIHRoaXMKZnVuY3Rpb24gKGZvciBleGFtcGxlLCA8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPnJlcGVhdCgpPC9jb2RlPiBjYWxscwo8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPnN0cmZyeSgpPC9jb2RlPikuIFRoZSBzYW1wbGVzIGFuZCBwZXJjZW50YWdlIHZhbHVlcyBoZXJlCnJlZmVyIHRvIHRoZSBudW1iZXIgb2YgdGltZXMgd2UgdG9vayBhIHNhbXBsZSB3aGVyZSB0aGlzIGNhbGwgd2FzIGZvdW5kCmluIHRoZSBzdGFjazsgdGhlIHBlcmNlbnRhZ2UgaXMgcmVsYXRpdmUgdG8gYWxsIG90aGVyIGNhbGxlcnMgb2YgdGhlCmZ1bmN0aW9uIHdlJ3JlIGZvY3Vzc2luZyBvbi4gTm90ZSB0aGF0IHRoZXNlIHZhbHVlcyBhcmUKPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+bm90PC9lbT48L3NwYW4+IGNhbGwgY291bnRzOyB0aGV5IG9ubHkgcmVmbGVjdCB0aGUgY2FsbCBzdGFjawpldmVyeSB0aW1lIGEgc2FtcGxlIGlzIHRha2VuOyB0aGF0IGlzLCBpZiBhIGNhbGwgaXMgZm91bmQgaW4gdGhlIHN0YWNrCmF0IHRoZSB0aW1lIG9mIGEgc2FtcGxlLCBpdCBpcyByZWNvcmRlZCBpbiB0aGlzIGNvdW50Lgo8L3A+CiAgICAgICAgICAgICAgPHA+CkJlbG93IHRoZSBsaW5lIGFyZSBmdW5jdGlvbnMgdGhhdCBhcmUgY2FsbGVkIGJ5Cjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+c3RyZnJ5KCk8L2NvZGU+IChjYWxsZWQgPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+Y2FsbGVlczwvZW0+PC9zcGFuPikuCkl0J3MgY2xlYXIgaGVyZSB0aGF0IDxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+c3RyZnJ5KCk8L2NvZGU+IGNhbGxzCjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+cmFuZG9tX3IoKTwvY29kZT4uIFdlIGFsc28gc2VlIGEgc3BlY2lhbCBlbnRyeSB3aXRoIGEKIltzZWxmXSIgbWFya2VyLiBUaGlzIHJlY29yZHMgdGhlIG5vcm1hbCBzYW1wbGVzIGZvciB0aGUgZnVuY3Rpb24sIGJ1dAp0aGUgcGVyY2VudGFnZSBiZWNvbWVzIHJlbGF0aXZlIHRvIGFsbCBjYWxsZWVzLiBUaGlzIGFsbG93cyB5b3UgdG8KY29tcGFyZSB0aW1lIHNwZW50IGluIHRoZSBmdW5jdGlvbiBpdHNlbGYgY29tcGFyZWQgdG8gZnVuY3Rpb25zIGl0CmNhbGxzLiBOb3RlIHRoYXQgaWYgYSBmdW5jdGlvbiBjYWxscyBpdHNlbGYsIHRoZW4gaXQgd2lsbCBhcHBlYXIgaW4gdGhlCmxpc3Qgb2YgY2FsbGVlcyBvZiBpdHNlbGYsIGJ1dCB3aXRob3V0IHRoZSAiW3NlbGZdIiBtYXJrZXI7IHNvIHJlY3Vyc2l2ZQpjYWxscyBhcmUgc3RpbGwgY2xlYXJseSBzZXBhcmFibGUuCjwvcD4KICAgICAgICAgICAgICA8cD4KWW91IG1heSBoYXZlIG5vdGljZWQgdGhhdCB0aGUgb3V0cHV0IGxpc3RzIDxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+bWFpbigpPC9jb2RlPgphcyBjYWxsaW5nIDxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+c3RyZnJ5KCk8L2NvZGU+LCBidXQgaXQncyBjbGVhciBmcm9tIHRoZSBzb3VyY2UKdGhhdCB0aGlzIGRvZXNuJ3QgYWN0dWFsbHkgaGFwcGVuLiBTZWUgPGEgY2xhc3M9InhyZWYiIGhyZWY9IiNpbnRlcnByZXRpbmctY2FsbGdyYXBoIiB0aXRsZT0iMy6gSW50ZXJwcmV0aW5nIGNhbGwtZ3JhcGggcHJvZmlsZXMiPlNlY3Rpb26gMywgJiM4MjIwO0ludGVycHJldGluZyBjYWxsLWdyYXBoIHByb2ZpbGVzJiM4MjIxOzwvYT4gZm9yIGFuIGV4cGxhbmF0aW9uLgo8L3A+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MyIgdGl0bGU9IjIuMy4yLqBDYWxsZ3JhcGggYW5kIEpJVCBzdXBwb3J0Ij4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9InRpdGxlIj48YSBpZD0iY2ctd2l0aC1qaXRzdXBwb3J0Ij48L2E+Mi4zLjIuoENhbGxncmFwaCBhbmQgSklUIHN1cHBvcnQ8L2g0PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxwPgpDYWxsZ3JhcGggb3V0cHV0IHdoZXJlIGFub255bW91c2x5IG1hcHBlZCBjb2RlIGlzIGluIHRoZSBjYWxsc3RhY2sgY2FuIHNvbWV0aW1lcyBiZSBtaXNsZWFkaW5nLgpGb3IgYWxsIHN1Y2ggY29kZSwgdGhlIHNhbXBsZXMgZm9yIHRoZSBhbm9ueW1vdXNseSBtYXBwZWQgY29kZSBhcmUgc3RvcmVkIGluIGEgc2FtcGxlcyBzdWJkaXJlY3RvcnkKbmFtZWQgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj57YW5vbjphbm9ufS8mbHQ7dGdpZCZndDsuJmx0O2JlZ2luX2FkZHImZ3Q7LiZsdDtlbmRfYWRkciZndDs8L2NvZGU+LgpBcyBzdGF0ZWQgZWFybGllciwgaWYgdGhpcyBhbm9ueW1vdXNseSBtYXBwZWQgY29kZSBpcyBKSVRlZCBjb2RlIGZyb20gYSBzdXBwb3J0ZWQgVk0gbGlrZSBKYXZhLApPUHJvZmlsZSBjcmVhdGVzIGFuIEVMRiBmaWxlIHRvIHByb3ZpZGUgYSAoc29tZXdoYXQpIHBlcm1hbmVudCBiYWNraW5nIGZpbGUgZm9yIHRoZSBjb2RlLgpIb3dldmVyLCB3aGVuIHZpZXdpbmcgY2FsbGdyYXBoIG91dHB1dCwgYW55IGFub255bW91c2x5IG1hcHBlZCBjb2RlIGluIHRoZSBjYWxsc3RhY2sKd2lsbCBiZSBhdHRyaWJ1dGVkIHRvIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+YW5vbiAoJmx0O3RnaWQmZ3Q7OiByYW5nZTombHQ7YmVnaW5fYWRkciZndDstJmx0O2VuZF9hZGRyJmd0OzwvY29kZT4sCmV2ZW4gaWYgYSA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPi5qbzwvY29kZT4gRUxGIGZpbGUgaGFkIGJlZW4gY3JlYXRlZCBmb3IgaXQuICBTZWUgdGhlIGV4YW1wbGUgYmVsb3cuCjwvcD4KICAgICAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIDEgICAgICAgICAyLjI3MjcgIGxpYmo5dXRlMjMuc28gICAgICAgICAgICBqYXZhLmJpbiAgICAgICAgICAgICAgICAgdHJhY2VWCiAgMiAgICAgICAgIDQuNTQ1NSAgbGliajl1dGUyMy5zbyAgICAgICAgICAgIGphdmEuYmluICAgICAgICAgICAgICAgICB1dHNUcmFjZVYKICA0ICAgICAgICAgOS4wOTA5ICBsaWJqOXRyYzIzLnNvICAgICAgICAgICAgamF2YS5iaW4gICAgICAgICAgICAgICAgIGZpbGxJblVUSW50ZXJmYWNlcwogIDM3ICAgICAgIDg0LjA5MDkgIGxpYmo5dHJjMjMuc28gICAgICAgICAgICBqYXZhLmJpbiAgICAgICAgICAgICAgICAgdHdHZXRTZXF1ZW5jZUNvdW50ZXIKOCAgICAgICAgIDAuMDE1NCAgbGliajlwcnQyMy5zbyAgICAgICAgICAgIGphdmEuYmluICAgICAgICAgICAgICAgICBqOXRpbWVfaGlyZXNfY2xvY2sKICAyNyAgICAgICA2MS4zNjM2ICBhbm9uICh0Z2lkOjEwMDE0IHJhbmdlOjB4MTAwMDAwLTB4MTAzMDAwKSBqYXZhLmJpbiAgICAgICAgICAgICAgICAgKG5vIHN5bWJvbHMpCiAgOSAgICAgICAgMjAuNDU0NSAgbGliYy0yLjQuc28gICAgICAgICAgICAgIGphdmEuYmluICAgICAgICAgICAgICAgICBnZXR0aW1lb2ZkYXkKICA4ICAgICAgICAxOC4xODE4ICBsaWJqOXBydDIzLnNvICAgICAgICAgICAgamF2YS5iaW4gICAgICAgICAgICAgICAgIGo5dGltZV9oaXJlc19jbG9jayBbc2VsZl0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo8L3ByZT4KICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICA8cD4KVGhlIG91dHB1dCBzaG93cyB0aGF0ICJhbm9uICh0Z2lkOjEwMDE0IHJhbmdlOjB4MTAwMDAwLTB4MTAzMDAwKSIgd2FzIGEgY2FsbGVlIG9mCjxjb2RlIGNsYXNzPSJjb2RlIj5qOXRpbWVfaGlyZXNfY2xvY2s8L2NvZGU+LCBldmVuIHRob3VnaCB0aGUgRUxGIGZpbGUgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4xMDAxNC5qbzwvY29kZT4gd2FzCmNyZWF0ZWQgZm9yIHRoaXMgcHJvZmlsZSBydW4uICBVbmZvcnR1bmF0ZWx5LCB0aGVyZSBpcyBjdXJyZW50bHkgbm8gd2F5IHRvIGNvcnJlbGF0ZQp0aGF0IGFub255bW91cyBjYWxsZ3JhcGggZW50cnkgd2l0aCBpdHMgY29ycmVzcG9uZGluZyA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPi5qbzwvY29kZT4gZmlsZS4KPC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDIiIHRpdGxlPSIyLjQuoERpZmZlcmVudGlhbCBwcm9maWxlcyB3aXRoIG9wcmVwb3J0Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9Im9wcmVwb3J0LWRpZmYiPjwvYT4yLjQuoERpZmZlcmVudGlhbCBwcm9maWxlcyB3aXRoIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wcmVwb3J0PC9zdHJvbmc+PC9zcGFuPjwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwPgpPZnRlbiwgd2UnZCBsaWtlIHRvIGJlIGFibGUgdG8gY29tcGFyZSB0d28gcHJvZmlsZXMuIEZvciBleGFtcGxlLCB3aGVuCmFuYWx5c2luZyB0aGUgcGVyZm9ybWFuY2Ugb2YgYW4gYXBwbGljYXRpb24sIHdlJ2QgbGlrZSB0byBtYWtlIGNvZGUKY2hhbmdlcyBhbmQgZXhhbWluZSB0aGUgZWZmZWN0IG9mIHRoZSBjaGFuZ2UuIFRoaXMgaXMgc3VwcG9ydGVkIGluCjxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wcmVwb3J0PC9zdHJvbmc+PC9zcGFuPiBieSBnaXZpbmcgYSBwcm9maWxlIHNwZWNpZmljYXRpb24gdGhhdAppZGVudGlmaWVzIHR3byBkaWZmZXJlbnQgcHJvZmlsZXMuIFRoZSBnZW5lcmFsIGZvcm0gaXMgb2Y6CjwvcD4KICAgICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+CiQgb3ByZXBvcnQgJmx0O3NoYXJlZC1zcGVjJmd0OyB7ICZsdDtmaXJzdC1wcm9maWxlJmd0OyB9IHsgJmx0O3NlY29uZC1wcm9maWxlJmd0OyB9CjwvcHJlPgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJub3RlIiB0aXRsZT0iTm90ZSIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwLjVpbjsgbWFyZ2luLXJpZ2h0OiAwLjVpbjsiPgogICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPk5vdGU8L2gzPgogICAgICAgICAgICAgIDxwPgpXZSBsb3N0IG91ciBEcmFnb24gYm9vayBkb3duIHRoZSBiYWNrIG9mIHRoZSBzb2ZhLCBzbyB5b3UgaGF2ZSB0byBiZQpjYXJlZnVsIHRvIGhhdmUgc3BhY2VzIGFyb3VuZCB0aG9zZSBicmFjZXMsIG9yIHRoaW5ncyB3aWxsIGdldApob3BlbGVzc2x5IGNvbmZ1c2VkLiBXZSBjYW4gb25seSBhcG9sb2dpc2UuCjwvcD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwPgpGb3IgZWFjaCBvZiB0aGUgcHJvZmlsZXMsIHRoZSBzaGFyZWQgc2VjdGlvbiBpcyBwcmVmaXhlZCwgYW5kIHRoZW4gdGhlCnNwZWNpZmljYXRpb24gaXMgYW5hbHlzZWQuIFRoZSB1c3VhbCBwYXJhbWV0ZXJzIHdvcmsgYm90aCB3aXRoaW4gdGhlCnNoYXJlZCBzZWN0aW9uLCBhbmQgaW4gdGhlIHN1Yi1zcGVjaWZpY2F0aW9uIHdpdGhpbiB0aGUgY3VybHkgYnJhY2VzLgo8L3A+CiAgICAgICAgICAgIDxwPgpBIHR5cGljYWwgd2F5IHRvIHVzZSB0aGlzIGZlYXR1cmUgaXMgd2l0aCBhcmNoaXZlcyBjcmVhdGVkIHdpdGgKPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3BhcmNoaXZlPC9zdHJvbmc+PC9zcGFuPi4gTGV0J3MgbG9vayBhdCBhbiBleGFtcGxlOgo8L3A+CiAgICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPgokIC4vYQokIG9wYXJjaGl2ZSAtbyBvcmlnIC4vYQokIG9wY29udHJvbCAtLXJlc2V0CiAgIyBlZGl0IGFuZCByZWNvbXBpbGUgYQokIC4vYQogICMgbm93IGNvbXBhcmUgdGhlIGN1cnJlbnQgcHJvZmlsZSBvZiBhIHdpdGggdGhlIGFyY2hpdmVkIHByb2ZpbGUKJCBvcHJlcG9ydCAteGwgLi9hIHsgYXJjaGl2ZTouL29yaWcgfSB7IH0KQ1BVOiBQSUlJLCBzcGVlZCA4NjMuMjMzIE1IeiAoZXN0aW1hdGVkKQpDb3VudGVkIENQVV9DTEtfVU5IQUxURUQgZXZlbnRzIChjbG9ja3MgcHJvY2Vzc29yIGlzIG5vdCBoYWx0ZWQpIHdpdGggYQp1bml0IG1hc2sgb2YgMHgwMCAoTm8gdW5pdCBtYXNrKSBjb3VudCAxMDAwMDAKc2FtcGxlcyAgJSAgICAgICAgZGlmZiAlICAgIHN5bWJvbCBuYW1lCjkyNDM1ICAgIDQ4LjUzNjYgICswLjQ5OTkgICBhCjU0MjI2ICAgIC0tLSAgICAgIC0tLSAgICAgICBjCjQ5MjIyICAgIDI1Ljg0NTkgICsrKyAgICAgICBkCjQ4Nzg3ICAgIDI1LjYxNzUgIC0yLjJlLTAxICBiCjwvcHJlPgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8cD4KTm90ZSB0aGF0IHdlIHNwZWNpZmllZCBhbiBlbXB0eSBzZWNvbmQgcHJvZmlsZSBpbiB0aGUgY3VybHkgYnJhY2VzLCBhcwp3ZSB3YW50ZWQgdG8gdXNlIHRoZSBjdXJyZW50IHNlc3Npb247IGFsdGVybmF0aXZlbHksIHdlIGNvdWxkCmhhdmUgc3BlY2lmaWVkIGFub3RoZXIgYXJjaGl2ZSwgb3IgYSB0Z2lkIGV0Yy4gV2Ugc3BlY2lmaWVkIHRoZSBiaW5hcnkKPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+YTwvc3Ryb25nPjwvc3Bhbj4gaW4gdGhlIHNoYXJlZCBzZWN0aW9uLCBzbyB3ZSBtYXRjaGVkIHRoYXQgaW4gYm90aAp0aGUgcHJvZmlsZXMgd2UncmUgZGlmZmluZy4KPC9wPgogICAgICAgICAgICA8cD4KQXMgaW4gdGhlIG5vcm1hbCBvdXRwdXQsIHRoZSByZXN1bHRzIGFyZSBzb3J0ZWQgYnkgdGhlIG51bWJlciBvZgpzYW1wbGVzLCBhbmQgdGhlIHBlcmNlbnRhZ2UgZmllbGQgcmVwcmVzZW50cyB0aGUgcmVsYXRpdmUgcGVyY2VudGFnZSBvZgp0aGUgc3ltYm9sJ3Mgc2FtcGxlcyBpbiB0aGUgc2Vjb25kIHByb2ZpbGUuCjwvcD4KICAgICAgICAgICAgPHA+Ck5vdGljZSB0aGUgbmV3IGNvbHVtbiBpbiB0aGUgb3V0cHV0LiBUaGlzIHZhbHVlIHJlcHJlc2VudHMgdGhlCnBlcmNlbnRhZ2UgY2hhbmdlIG9mIHRoZSByZWxhdGl2ZSBwZXJjZW50IGJldHdlZW4gdGhlIGZpcnN0IGFuZCB0aGUKc2Vjb25kIHByb2ZpbGU6IHJvdWdobHksICJob3cgbXVjaCBtb3JlIGltcG9ydGFudCB0aGlzIHN5bWJvbCBpcyIuCkxvb2tpbmcgYXQgdGhlIHN5bWJvbCA8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmEoKTwvY29kZT4sIHdlIGNhbiBzZWUgdGhhdCBpdCB0b29rCnJvdWdobHkgdGhlIHNhbWUgYW1vdW50IG9mIHRoZSB0b3RhbCBwcm9maWxlIGluIGJvdGggdGhlIGZpcnN0IGFuZCB0aGUKc2Vjb25kIHByb2ZpbGUuIFRoZSBmdW5jdGlvbiA8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmMoKTwvY29kZT4gd2FzIG5vdCBpbiB0aGUgbmV3CnByb2ZpbGUsIHNvIGhhcyBiZWVuIG1hcmtlZCB3aXRoIDxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+LS0tPC9jb2RlPi4gTm90ZSB0aGF0IHRoZQpzYW1wbGUgdmFsdWUgaXMgdGhlIG51bWJlciBvZiBzYW1wbGVzIGluIHRoZSBmaXJzdCBwcm9maWxlOyBzaW5jZSB3ZSdyZQpkaXNwbGF5aW5nIHJlc3VsdHMgZm9yIHRoZSBzZWNvbmQgcHJvZmlsZSwgd2UgZG9uJ3QgbGlzdCBhIHBlcmNlbnRhZ2UKdmFsdWUgZm9yIGl0LCBhcyBpdCB3b3VsZCBiZSBtZWFuaW5nbGVzcy4gPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5kKCk8L2NvZGU+IGlzCm5ldyBpbiB0aGUgc2Vjb25kIHByb2ZpbGUsIGFuZCBjb25zZXF1ZW50bHkgbWFya2VkIHdpdGgKPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj4rKys8L2NvZGU+Lgo8L3A+CiAgICAgICAgICAgIDxwPgpXaGVuIGNvbXBhcmluZyBwcm9maWxlcyBiZXR3ZWVuIGRpZmZlcmVudCBiaW5hcmllcywgaXQgc2hvdWxkIGJlIGNsZWFyCnRoYXQgZnVuY3Rpb25zIGNhbiBjaGFuZ2UgaW4gdGVybXMgb2YgVk1BIGFuZCBzaXplLiBUbyBhdm9pZCB0aGlzCnByb2JsZW0sIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wcmVwb3J0PC9zdHJvbmc+PC9zcGFuPiBjb25zaWRlcnMgYSBzeW1ib2wgdG8gYmUgdGhlIHNhbWUKaWYgdGhlIHN5bWJvbCBuYW1lLCBpbWFnZSBuYW1lLCBhbmQgb3duaW5nIGFwcGxpY2F0aW9uIG5hbWUgYWxsIG1hdGNoOwphbnkgb3RoZXIgZmFjdG9ycyBhcmUgaWdub3JlZC4gTm90ZSB0aGF0IHRoZSBjaGVjayBmb3IgYXBwbGljYXRpb24gbmFtZQptZWFucyB0aGF0IHRyeWluZyB0byBjb21wYXJlIGxpYnJhcnkgcHJvZmlsZXMgYmV0d2VlbiB0d28gZGlmZmVyZW50CmFwcGxpY2F0aW9ucyB3aWxsIG5vdCB3b3JrIGFzIHlvdSBtaWdodCBleHBlY3Q6IGVhY2ggc3ltYm9sIHdpbGwgYmUKY29uc2lkZXJlZCBkaWZmZXJlbnQuCjwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDIiIHRpdGxlPSIyLjUuoEFub255bW91cyBleGVjdXRhYmxlIG1hcHBpbmdzIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9Im9wcmVwb3J0LWFub24iPjwvYT4yLjUuoEFub255bW91cyBleGVjdXRhYmxlIG1hcHBpbmdzPC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHA+Ck1hbnkgYXBwbGljYXRpb25zLCB0eXBpY2FsbHkgb25lcyBpbnZvbHZpbmcgZHluYW1pYyBjb21waWxhdGlvbiBpbnRvCm1hY2hpbmUgY29kZSAoanVzdC1pbi10aW1lLCBvciAiSklUIiwgY29tcGlsYXRpb24pLCBoYXZlIGV4ZWN1dGFibGUgbWFwcGluZ3MgdGhhdAphcmUgbm90IGJhY2tlZCBieSBhbiBFTEYgZmlsZS4gPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3ByZXBvcnQ8L3N0cm9uZz48L3NwYW4+IGhhcyBiYXNpYyBzdXBwb3J0IGZvciBzaG93aW5nIHRoZQpzYW1wbGVzIHRha2VuIGluIHRoZXNlIHJlZ2lvbnM7IGZvciBleGFtcGxlOgo8L3A+CiAgICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPgokIG9wcmVwb3J0IC91c3IvYmluL21vbm8gLWwKQ1BVOiBwcGM2NCBQT1dFUjUsIHNwZWVkIDE2NTQuMzQgTUh6IChlc3RpbWF0ZWQpCkNvdW50ZWQgQ1lDTEVTIGV2ZW50cyAoUHJvY2Vzc29yIEN5Y2xlcyB1c2luZyBjb250aW51b3VzIHNhbXBsaW5nKSB3aXRoIGEgdW5pdCBtYXNrIG9mIDB4MDAgKE5vIHVuaXQgbWFzaykgY291bnQgMTAwMDAwCnNhbXBsZXMgICUgICAgICAgIGltYWdlIG5hbWUgICAgCQkgICAgICAgICAgICAgICAgc3ltYm9sIG5hbWUKNDcgICAgICAgNTguNzUwMCAgbW9ubyAgICAgICAgICAgICAgICAgICAgIAkJCShubyBzeW1ib2xzKQoxNCAgICAgICAxNy41MDAwICBhbm9uICh0Z2lkOjMxODkgcmFuZ2U6MHhmNzJhYTAwMC0weGY3MmZhMDAwKSAgKG5vIHN5bWJvbHMpCjkgICAgICAgIDExLjI1MDAgIGFub24gKHRnaWQ6MzE4OSByYW5nZToweGY2Y2NhMDAwLTB4ZjZkZDkwMDApICAobm8gc3ltYm9scykKLgkgLgkgIC4JCQkJCQkuCjwvcHJlPgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8cD4KPC9wPgogICAgICAgICAgICA8cD4KTm90ZSB0aGF0LCBzaW5jZSBzdWNoIG1hcHBpbmdzIGFyZSBkZXBlbmRlbnQgdXBvbiBpbmRpdmlkdWFsIGludm9jYXRpb25zIG9mCmEgYmluYXJ5LCB0aGVzZSBtYXBwaW5ncyBhcmUgYWx3YXlzIGxpc3RlZCBhcyBhIGRlcGVuZGVudCBpbWFnZSwKZXZlbiB3aGVuIHVzaW5nIHRoZSBsZWdhY3kgbW9kZSA8Y29kZSBjbGFzcz0ib3B0aW9uIj5vcGNvbnRyb2wgLS1zZXBhcmF0ZT1ub25lPC9jb2RlPiBjb21tYW5kLgpFcXVhbGx5LCB0aGUgcmVzdWx0cyBhcmUgbm90IGFmZmVjdGVkIGJ5IHRoZSA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLW1lcmdlPC9jb2RlPgpvcHRpb24uCjwvcD4KICAgICAgICAgICAgPHA+CkFzIHNob3duIGluIHRoZSBvcHJlcG9ydCBvdXRwdXQgYWJvdmUsIE9Qcm9maWxlIGlzIHVuYWJsZSB0byBhdHRyaWJ1dGUgdGhlIHNhbXBsZXMgdG8gYW55CnN5bWJvbChzKSBiZWNhdXNlIHRoZXJlIGlzIG5vIEVMRiBmaWxlIGZvciB0aGlzIGNvZGUuCkVuaGFuY2VkIHN1cHBvcnQgZm9yIEpJVGVkIGNvZGUgaXMgbm93IGF2YWlsYWJsZSBmb3Igc29tZSB2aXJ0dWFsIG1hY2hpbmVzOyAKZS5nLiwgdGhlIEphdmEgVmlydHVhbCBNYWNoaW5lLiAgRm9yIGRldGFpbHMgYWJvdXQgT1Byb2ZpbGUgb3V0cHV0IGZvcgpKSVRlZCBjb2RlLCBzZWUgPGEgY2xhc3M9InhyZWYiIGhyZWY9IiNnZXR0aW5nLWppdC1yZXBvcnRzIiB0aXRsZT0iNC6gT1Byb2ZpbGUgcmVzdWx0cyB3aXRoIEpJVCBzYW1wbGVzIj5TZWN0aW9uoDQsICYjODIyMDtPUHJvZmlsZSByZXN1bHRzIHdpdGggSklUIHNhbXBsZXMmIzgyMjE7PC9hPi4KPC9wPgogICAgICAgICAgICA8cD5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBKSVQgc3VwcG9ydCBpbiBPUHJvZmlsZSwgc2VlIDxhIGNsYXNzPSJ4cmVmIiBocmVmPSIjaml0c3VwcG9ydCIgdGl0bGU9IjQuMS6gU3VwcG9ydCBmb3IgZHluYW1pY2FsbHkgY29tcGlsZWQgKEpJVCkgY29kZSI+U2VjdGlvbqA0LjEsICYjODIyMDtTdXBwb3J0IGZvciBkeW5hbWljYWxseSBjb21waWxlZCAoSklUKSBjb2RlJiM4MjIxOzwvYT4uCjwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDIiIHRpdGxlPSIyLjYuoFhNTCBmb3JtYXR0ZWQgb3V0cHV0Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9Im9wcmVwb3J0LXhtbCI+PC9hPjIuNi6gWE1MIGZvcm1hdHRlZCBvdXRwdXQ8L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cD4KVGhlIC0teG1sIG9wdGlvbiBjYW4gYmUgdXNlZCB0byBnZW5lcmF0ZSBYTUwgaW5zdGVhZCBvZiB0aGUgdXN1YWwKdGV4dCBmb3JtYXQuICBUaGlzIGFsbG93cyBvcHJlcG9ydCB0byBlbGltaW5hdGUgc29tZSBvZiB0aGUgY29uc3RyYWludHMKZGljdGF0ZWQgYnkgdGhlIHR3byBkaW1lbnNpb25hbCB0ZXh0IGZvcm1hdC4gIEZvciBleGFtcGxlLCBpdCBpcyBwb3NzaWJsZQp0byBzZXBhcmF0ZSB0aGUgc2FtcGxlIGRhdGEgYWNyb3NzIG11bHRpcGxlIGV2ZW50cywgY3B1cyBhbmQgdGhyZWFkcy4gIFRoZSBYTUwKc2NoZW1hIGltcGxlbWVudGVkIGJ5IG9wcmVwb3J0IGlzIGZvdW5kIGluIGRvYy9vcHJlcG9ydC54c2QuIEl0IGNvbnRhaW5zCm1vcmUgZGV0YWlsZWQgY29tbWVudHMgYWJvdXQgdGhlIHN0cnVjdHVyZSBvZiB0aGUgWE1MIGdlbmVyYXRlZCBieSBvcHJlcG9ydC4KPC9wPgogICAgICAgICAgICA8cD4KU2luY2UgWE1MIGlzIGNvbnN1bWVkIGJ5IGEgY2xpZW50IHByb2dyYW0gcmF0aGVyIHRoYW4gYSB1c2VyLCBpdHMgc3RydWN0dXJlCmlzIGZhaXJseSBzdGF0aWMuICBJbiBwYXJ0aWN1bGFyLCB0aGUgLS1zb3J0IG9wdGlvbiBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUKLS14bWwgb3B0aW9uLiAgUGVyY2VudGFnZXMgYXJlIG5vdCBkaXNsYXllZCBpbiB0aGUgWE1MIHNvIHRoZSBvcHRpb25zIHJlbGF0ZWQKdG8gcGVyY2VudGFnZXMgd2lsbCBoYXZlIG5vIGVmZmVjdC4gIEZ1bGwgcGF0aG5hbWVzIGFyZSBhbHdheXMgZGlzcGxheWVkIGluCnRoZSBYTUwgc28gLS1sb25nLWZpbGVuYW1lcyBpcyBub3QgbmVjZXNzYXJ5LiAgVGhlIC0tZGV0YWlscyBvcHRpb24gd2lsbCBjYXVzZQphbGwgb2YgdGhlIGluZGl2aWR1YWwgc2FtcGxlIGRhdGEgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIFhNTCBhcyB3ZWxsIGFzIHRoZQppbnN0cnVjdGlvbiBieXRlIHN0cmVhbSBmb3IgZWFjaCBzeW1ib2wgKGZvciBkb2luZyBkaXNhc3NlbWJseSkgYW5kIGNhbiByZXN1bHQKaW4gdmVyeSBsYXJnZSBYTUwgZmlsZXMuCjwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDIiIHRpdGxlPSIyLjcuoE9wdGlvbnMgZm9yIG9wcmVwb3J0Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9Im9wcmVwb3J0LW9wdGlvbnMiPjwvYT4yLjcuoE9wdGlvbnMgZm9yIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wcmVwb3J0PC9zdHJvbmc+PC9zcGFuPjwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1hY2N1bXVsYXRlZCAvIC1hPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KQWNjdW11bGF0ZSBzYW1wbGUgYW5kIHBlcmNlbnRhZ2UgY291bnRzIGluIHRoZSBzeW1ib2wgbGlzdC4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tY2FsbGdyYXBoIC8gLWM8L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpTaG93IGNhbGxncmFwaCBpbmZvcm1hdGlvbi4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tZGVidWctaW5mbyAvIC1nPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KU2hvdyBzb3VyY2UgZmlsZSBhbmQgbGluZSBmb3IgZWFjaCBzeW1ib2wuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWRlbWFuZ2xlIC8gLUQgbm9uZXxub3JtYWx8c21hcnQ8L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpub25lOiBubyBkZW1hbmdsaW5nLiBub3JtYWw6IHVzZSBkZWZhdWx0IGRlbWFuZ2xlciAoZGVmYXVsdCkgc21hcnQ6IHVzZQpwYXR0ZXJuLW1hdGNoaW5nIHRvIG1ha2UgQysrIHN5bWJvbCBkZW1hbmdsaW5nIG1vcmUgcmVhZGFibGUuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWRldGFpbHMgLyAtZDwvY29kZT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+ClNob3cgcGVyLWluc3RydWN0aW9uIGRldGFpbHMgZm9yIGFsbCBzZWxlY3RlZCBzeW1ib2xzLiBOb3RlIHRoYXQsIGZvcgpiaW5hcmllcyB3aXRob3V0IHN5bWJvbCBpbmZvcm1hdGlvbiwgdGhlIFZNQSB2YWx1ZXMgc2hvd24gYXJlIHJhdyBmaWxlCm9mZnNldHMgZm9yIHRoZSBpbWFnZSBiaW5hcnkuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWV4Y2x1ZGUtZGVwZW5kZW50IC8gLXg8L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpEbyBub3QgaW5jbHVkZSBhcHBsaWNhdGlvbi1zcGVjaWZpYyBpbWFnZXMgZm9yIGxpYnJhcmllcywga2VybmVsIG1vZHVsZXMKYW5kIHRoZSBrZXJuZWwuIFRoaXMgb3B0aW9uIG9ubHkgbWFrZXMgc2Vuc2UgaWYgdGhlIHByb2ZpbGUgc2Vzc2lvbgp1c2VkIC0tc2VwYXJhdGUuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWV4Y2x1ZGUtc3ltYm9scyAvIC1lIFtzeW1ib2xzXTwvY29kZT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+CkV4Y2x1ZGUgYWxsIHRoZSBzeW1ib2xzIGluIHRoZSBnaXZlbiBjb21tYS1zZXBhcmF0ZWQgbGlzdC4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tZ2xvYmFsLXBlcmNlbnQgLyAtJTwvY29kZT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+Ck1ha2UgYWxsIHBlcmNlbnRhZ2VzIHJlbGF0aXZlIHRvIHRoZSB3aG9sZSBwcm9maWxlLgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1oZWxwIC8gLT8gLyAtLXVzYWdlPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KU2hvdyBoZWxwIG1lc3NhZ2UuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWltYWdlLXBhdGggLyAtcCBbcGF0aHNdPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KQ29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgYWRkaXRpb25hbCBwYXRocyB0byBzZWFyY2ggZm9yIGJpbmFyaWVzLgpUaGlzIGlzIG5lZWRlZCB0byBmaW5kIGtlcm5lbCBtb2R1bGVzLgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1yb290IC8gLVIgW3BhdGhdPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KQSBwYXRoIHRvIGEgZmlsZXN5c3RlbSB0byBzZWFyY2ggZm9yIGFkZGl0aW9uYWwgYmluYXJpZXMuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWluY2x1ZGUtc3ltYm9scyAvIC1pIFtzeW1ib2xzXTwvY29kZT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+Ck9ubHkgaW5jbHVkZSBzeW1ib2xzIGluIHRoZSBnaXZlbiBjb21tYS1zZXBhcmF0ZWQgbGlzdC4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tbG9uZy1maWxlbmFtZXMgLyAtZjwvY29kZT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+Ck91dHB1dCBmdWxsIHBhdGhzIGluc3RlYWQgb2YgYmFzZW5hbWVzLgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1tZXJnZSAvIC1tIFtsaWIsY3B1LHRpZCx0Z2lkLHVuaXRtYXNrLGFsbF08L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpNZXJnZSBhbnkgcHJvZmlsZXMgc2VwYXJhdGVkIGluIGEgLS1zZXBhcmF0ZSBzZXNzaW9uLgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1uby1oZWFkZXI8L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpEb24ndCBvdXRwdXQgYSBoZWFkZXIgZGV0YWlsaW5nIHByb2ZpbGluZyBwYXJhbWV0ZXJzLgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1vdXRwdXQtZmlsZSAvIC1vIFtmaWxlXTwvY29kZT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+Ck91dHB1dCB0byB0aGUgZ2l2ZW4gZmlsZSBpbnN0ZWFkIG9mIHN0ZG91dC4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tcmV2ZXJzZS1zb3J0IC8gLXI8L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpSZXZlcnNlIHRoZSBzb3J0IGZyb20gdGhlIGRlZmF1bHQuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXNlc3Npb24tZGlyPTwvY29kZT5kaXJfcGF0aDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpVc2Ugc2FtcGxlIGRhdGFiYXNlIG91dCBvZiBkaXJlY3RvcnkgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5kaXJfcGF0aDwvY29kZT4gCmluc3RlYWQgb2YgdGhlIGRlZmF1bHQgbG9jYXRpb24gKC92YXIvbGliL29wcm9maWxlKS4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc2hvdy1hZGRyZXNzIC8gLXc8L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpTaG93IHRoZSBWTUEgYWRkcmVzcyBvZiBlYWNoIHN5bWJvbCAob2ZmIGJ5IGRlZmF1bHQpLgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1zb3J0IC8gLXMgW3ZtYSxzYW1wbGUsc3ltYm9sLGRlYnVnLGltYWdlXTwvY29kZT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+ClNvcnQgdGhlIGxpc3Qgb2Ygc3ltYm9scyBieSwgcmVzcGVjdGl2ZWx5LCBzeW1ib2wgYWRkcmVzcywKbnVtYmVyIG9mIHNhbXBsZXMsIHN5bWJvbCBuYW1lLCBkZWJ1ZyBmaWxlbmFtZSBhbmQgbGluZSBudW1iZXIsCmJpbmFyeSBpbWFnZSBmaWxlbmFtZS4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc3ltYm9scyAvIC1sPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KTGlzdCBwZXItc3ltYm9sIGluZm9ybWF0aW9uIGluc3RlYWQgb2YgYSBiaW5hcnkgaW1hZ2Ugc3VtbWFyeS4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tdGhyZXNob2xkIC8gLXQgW3BlcmNlbnRhZ2VdPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KT25seSBvdXRwdXQgZGF0YSBmb3Igc3ltYm9scyB0aGF0IGhhdmUgbW9yZSB0aGFuIHRoZSBnaXZlbiBwZXJjZW50YWdlCm9mIHRvdGFsIHNhbXBsZXMuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXZlcmJvc2UgLyAtViBbb3B0aW9uc108L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpHaXZlIHZlcmJvc2UgZGVidWdnaW5nIG91dHB1dC4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tdmVyc2lvbiAvIC12PC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KU2hvdyB2ZXJzaW9uLgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS14bWwgLyAtWDwvY29kZT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+CkdlbmVyYXRlIFhNTCBvdXRwdXQuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MSIgdGl0bGU9IjMuoE91dHB1dHRpbmcgYW5ub3RhdGVkIHNvdXJjZSAob3Bhbm5vdGF0ZSkiPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBpZD0ib3Bhbm5vdGF0ZSI+PC9hPjMuoE91dHB1dHRpbmcgYW5ub3RhdGVkIHNvdXJjZSAoPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3Bhbm5vdGF0ZTwvc3Ryb25nPjwvc3Bhbj4pPC9oMj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgpUaGUgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3Bhbm5vdGF0ZTwvc3Ryb25nPjwvc3Bhbj4gdXRpbGl0eSBnZW5lcmF0ZXMgYW5ub3RhdGVkIHNvdXJjZSBmaWxlcyBvciBhc3NlbWJseSBsaXN0aW5ncywgb3B0aW9uYWxseQptaXhlZCB3aXRoIHNvdXJjZS4KSWYgeW91IHdhbnQgdG8gc2VlIHRoZSBzb3VyY2UgZmlsZSwgdGhlIHByb2ZpbGVkIGFwcGxpY2F0aW9uIG5lZWRzIHRvIGhhdmUgZGVidWcgaW5mb3JtYXRpb24sIGFuZCB0aGUgc291cmNlCm11c3QgYmUgYXZhaWxhYmxlIHRocm91Z2ggdGhpcyBkZWJ1ZyBpbmZvcm1hdGlvbi4gRm9yIEdDQywgeW91IG11c3QgdXNlIHRoZSA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tZzwvY29kZT4gb3B0aW9uCndoZW4geW91IGFyZSBjb21waWxpbmcuCklmIHRoZSBiaW5hcnkgZG9lc24ndCBjb250YWluIHN1ZmZpY2llbnQgZGVidWcgaW5mb3JtYXRpb24sIHlvdSBjYW4gc3RpbGwKdXNlIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wYW5ub3RhdGUgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1hc3NlbWJseTwvY29kZT48L3N0cm9uZz48L3NwYW4+IHRvIGdldCBhbm5vdGF0ZWQgYXNzZW1ibHkKYXMgbG9uZyBhcyB0aGUgYmluYXJ5IGhhcyAoYXQgbGVhc3QpIHN5bWJvbCBpbmZvcm1hdGlvbi4KPC9wPgogICAgICAgICAgPHA+Ck5vdGUgdGhhdCBmb3IgdGhlIHJlYXNvbiBleHBsYWluZWQgaW4gPGEgY2xhc3M9InhyZWYiIGhyZWY9IiNoYXJkd2FyZS1jb3VudGVycyIgdGl0bGU9IjUuMS6gSGFyZHdhcmUgcGVyZm9ybWFuY2UgY291bnRlcnMiPlNlY3Rpb26gNS4xLCAmIzgyMjA7SGFyZHdhcmUgcGVyZm9ybWFuY2UgY291bnRlcnMmIzgyMjE7PC9hPiB0aGUgcmVzdWx0cyBjYW4gYmUKaW5hY2N1cmF0ZS4gVGhlIGRlYnVnIGluZm9ybWF0aW9uIGl0c2VsZiBjYW4gYWRkIG90aGVyIHByb2JsZW1zOyBmb3IgZXhhbXBsZSwgdGhlIGxpbmUgbnVtYmVyIGZvciBhIHN5bWJvbCBjYW4gYmUKaW5jb3JyZWN0LiBBc3NlbWJseSBpbnN0cnVjdGlvbnMgY2FuIGJlIHJlLW9yZGVyZWQgYW5kIG1vdmVkIGJ5IHRoZSBjb21waWxlciwgYW5kIHRoaXMgY2FuIGxlYWQgdG8KY3JlZGl0aW5nIHNvdXJjZSBsaW5lcyB3aXRoIHNhbXBsZXMgbm90IHJlYWxseSAib3duZWQiIGJ5IHRoaXMgbGluZS4gQWxzbyBzZWUKPGEgY2xhc3M9InhyZWYiIGhyZWY9IiNpbnRlcnByZXRpbmciIHRpdGxlPSJDaGFwdGVyoDUuoEludGVycHJldGluZyBwcm9maWxpbmcgcmVzdWx0cyI+Q2hhcHRlcqA1LCA8aT5JbnRlcnByZXRpbmcgcHJvZmlsaW5nIHJlc3VsdHM8L2k+PC9hPi4KPC9wPgogICAgICAgICAgPHA+CllvdSBjYW4gb3V0cHV0IHRoZSBhbm5vdGF0aW9uIHRvIG9uZSBzaW5nbGUgZmlsZSwgY29udGFpbmluZyBhbGwgdGhlIHNvdXJjZSBmb3VuZCB1c2luZyB0aGUKPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1zb3VyY2U8L2NvZGU+LiBZb3UgY2FuIHVzZSB0aGlzIGluIGNvbmp1bmN0aW9uIHdpdGggPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1hc3NlbWJseTwvY29kZT4KdG8gZ2V0IGNvbWJpbmVkIHNvdXJjZS9hc3NlbWJseSBvdXRwdXQuCjwvcD4KICAgICAgICAgIDxwPgpZb3UgY2FuIGFsc28gb3V0cHV0IGEgZGlyZWN0b3J5IG9mIGFubm90YXRlZCBzb3VyY2UgZmlsZXMgdGhhdCBtYWludGFpbnMgdGhlIHN0cnVjdHVyZSBvZgp0aGUgb3JpZ2luYWwgc291cmNlcy4gRWFjaCBsaW5lIGluIHRoZSBhbm5vdGF0ZWQgc291cmNlIGlzIHByZXBlbmRlZCB3aXRoIHRoZSBzYW1wbGVzCmZvciB0aGF0IGxpbmUuIEFkZGl0aW9uYWxseSwgZWFjaCBzeW1ib2wgaXMgYW5ub3RhdGVkIGdpdmluZyBkZXRhaWxzIGZvciB0aGUgc3ltYm9sCmFzIGEgd2hvbGUuIEFuIGV4YW1wbGU6CjwvcD4KICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPgokIG9wYW5ub3RhdGUgLS1zb3VyY2UgLS1vdXRwdXQtZGlyPWFubm90YXRlZCAvdXNyL2xvY2FsL29wcm9maWxlLXBwL2Jpbi9vcHJvZmlsZWQKJCBscyBhbm5vdGF0ZWQvaG9tZS9tb3ovc3JjL29wcm9maWxlLXBwL2RhZW1vbi8Kb3BkX2Nvb2tpZS5oICBvcGRfaW1hZ2UuYyAgb3BkX2tlcm5lbC5jICBvcGRfc2FtcGxlX2ZpbGVzLmMgIG9wcm9maWxlZC5jCjwvcHJlPgogICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgPHA+CkxpbmUgbnVtYmVycyBhcmUgbWFpbnRhaW5lZCBpbiB0aGUgc291cmNlIGZpbGVzLCBidXQgZWFjaCBmaWxlIGhhcwphIGZvb3RlciBhcHBlbmRlZCBkZXNjcmliaW5nIHRoZSBwcm9maWxpbmcgZGV0YWlscy4gVGhlIGFjdHVhbCBhbm5vdGF0aW9uCmxvb2tzIHNvbWV0aGluZyBsaWtlIHRoaXMgOgo8L3A+CiAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj4KLi4uCiAgICAgICAgICAgICAgIDpzdGF0aWMgdWludDY0X3QgcG9wX2J1ZmZlcl92YWx1ZShzdHJ1Y3QgdHJhbnNpZW50ICogdHJhbnMpCiAxMTUxMCAgMS45NjYxIDp7IC8qIHBvcF9idWZmZXJfdmFsdWUgdG90YWw6ICA4OTkwMSAxNS4zNTY2ICovCiAgICAgICAgICAgICAgIDogICAgICAgIHVpbnQ2NF90IHZhbDsKICAgICAgICAgICAgICAgOgogMTAyMjcgIDEuNzQ2OSA6ICAgICAgICBpZiAoIXRyYW5zLSZndDtyZW1haW5pbmcpIHsKICAgICAgICAgICAgICAgOiAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkJVRzogcG9wcGluZyBlbXB0eSBidWZmZXIgIVxuIik7CiAgICAgICAgICAgICAgIDogICAgICAgICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOwogICAgICAgICAgICAgICA6ICAgICAgICB9CiAgICAgICAgICAgICAgIDoKICAgICAgICAgICAgICAgOiAgICAgICAgdmFsID0gZ2V0X2J1ZmZlcl92YWx1ZSh0cmFucy0mZ3Q7YnVmZmVyLCAwKTsKICAyMjgxICAwLjM4OTYgOiAgICAgICAgdHJhbnMtJmd0O3JlbWFpbmluZy0tOwogIDIyOTYgIDAuMzkyMiA6ICAgICAgICB0cmFucy0mZ3Q7YnVmZmVyICs9IGtlcm5lbF9wb2ludGVyX3NpemU7CiAgICAgICAgICAgICAgIDogICAgICAgIHJldHVybiB2YWw7CiAxMDQ1NCAgMS43ODU3IDp9Ci4uLgo8L3ByZT4KICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgPC90YWJsZT4KICAgICAgICAgIDxwPgpUaGUgZmlyc3QgbnVtYmVyIG9uIGVhY2ggbGluZSBpcyB0aGUgbnVtYmVyIG9mIHNhbXBsZXMsIHdoaWxzdCB0aGUgc2Vjb25kIGlzCnRoZSByZWxhdGl2ZSBwZXJjZW50YWdlIG9mIHRvdGFsIHNhbXBsZXMuCjwvcD4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QyIiB0aXRsZT0iMy4xLqBMb2NhdGluZyBzb3VyY2UgZmlsZXMiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj48YSBpZD0ib3Bhbm5vdGF0ZS1maW5kaW5nLXNvdXJjZSI+PC9hPjMuMS6gTG9jYXRpbmcgc291cmNlIGZpbGVzPC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHA+Ck9mIGNvdXJzZSwgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3Bhbm5vdGF0ZTwvc3Ryb25nPjwvc3Bhbj4gbmVlZHMgdG8gYmUgYWJsZSB0byBsb2NhdGUgdGhlIHNvdXJjZSBmaWxlcwpmb3IgdGhlIGJpbmFyeSBpbWFnZShzKSBpbiBvcmRlciB0byBwcm9kdWNlIG91dHB1dC4gU29tZSBiaW5hcnkgaW1hZ2VzIGhhdmUgZGVidWcKaW5mb3JtYXRpb24gd2hlcmUgdGhlIGdpdmVuIHNvdXJjZSBmaWxlIHBhdGhzIGFyZSByZWxhdGl2ZSwgbm90IGFic29sdXRlLiBZb3UgY2FuCnNwZWNpZnkgc2VhcmNoIHBhdGhzIHRvIGxvb2sgZm9yIHRoZXNlIGZpbGVzIChzaW1pbGFyIHRvIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPmdkYjwvc3Ryb25nPjwvc3Bhbj4ncwo8Y29kZSBjbGFzcz0ib3B0aW9uIj5kaXI8L2NvZGU+IGNvbW1hbmQpIHdpdGggdGhlIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc2VhcmNoLWRpcnM8L2NvZGU+IG9wdGlvbi4KPC9wPgogICAgICAgICAgICA8cD4KU29tZXRpbWVzIHlvdSBtYXkgaGF2ZSBhIGJpbmFyeSBpbWFnZSB3aGljaCBnaXZlcyBhYnNvbHV0ZSBwYXRocyBmb3IgdGhlIHNvdXJjZSBmaWxlcywKYnV0IHlvdSBoYXZlIHRoZSBhY3R1YWwgc291cmNlcyBlbHNld2hlcmUgKGNvbW1vbmx5LCB5b3UndmUgaW5zdGFsbGVkIGFuIFNSUE0gZm9yCmEgYmluYXJ5IG9uIHlvdXIgc3lzdGVtIGFuZCB5b3Ugd2FudCBhbm5vdGF0aW9uIGZyb20gYW4gZXhpc3RpbmcgcHJvZmlsZSkuIFlvdSBjYW4KdXNlIHRoZSA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWJhc2UtZGlyczwvY29kZT4gb3B0aW9uIHRvIHJlZGlyZWN0IE9Qcm9maWxlIHRvIGxvb2sgc29tZXdoZXJlCmVsc2UgZm9yIHNvdXJjZSBmaWxlcy4gRm9yIGV4YW1wbGUsIGltYWdpbmUgd2UgaGF2ZSBhIGJpbmFyeSBnZW5lcmF0ZWQgZnJvbSBhIHNvdXJjZQpmaWxlIHRoYXQgaXMgZ2l2ZW4gaW4gdGhlIGRlYnVnIGluZm9ybWF0aW9uIGFzIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+L3RtcC9idWlsZC9saWJmb28vZm9vLmM8L2NvZGU+LAphbmQgeW91IGhhdmUgdGhlIHNvdXJjZSB0cmVlIG1hdGNoaW5nIHRoYXQgYmluYXJ5IGluc3RhbGxlZCBpbiA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPi9ob21lL3VzZXIvbGliZm9vLzwvY29kZT4uCllvdSBjYW4gcmVkaXJlY3QgT1Byb2ZpbGUgdG8gZmluZCA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPmZvby5jPC9jb2RlPiBjb3JyZWN0bHkgbGlrZSB0aGlzIDoKPC9wPgogICAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj4KJCBvcGFubm90YXRlIC0tc291cmNlIC0tYmFzZS1kaXJzPS90bXAvYnVpbGQvbGliZm9vLyAtLXNlYXJjaC1kaXJzPS9ob21lL3VzZXIvbGliZm9vLyAtLW91dHB1dC1kaXI9YW5ub3RhdGVkLyAvbGliL2xpYmZvby5zbwo8L3ByZT4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPHA+CllvdSBjYW4gc3BlY2lmeSBtdWx0aXBsZSAoY29tbWEtc2VwYXJhdGVkKSBwYXRocyB0byBib3RoIG9wdGlvbnMuCjwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDIiIHRpdGxlPSIzLjIuoFVzYWdlIG9mIG9wYW5ub3RhdGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj48YSBpZD0ib3Bhbm5vdGF0ZS1kZXRhaWxzIj48L2E+My4yLqBVc2FnZSBvZiA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGFubm90YXRlPC9zdHJvbmc+PC9zcGFuPjwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1hc3NlbWJseSAvIC1hPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KT3V0cHV0IGFubm90YXRlZCBhc3NlbWJseS4gSWYgdGhpcyBpcyBjb21iaW5lZCB3aXRoIC0tc291cmNlLCB0aGVuIG1peGVkCnNvdXJjZSAvIGFzc2VtYmx5IGFubm90YXRpb25zIGFyZSBvdXRwdXQuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWJhc2UtZGlycyAvIC1iIFtwYXRoc10vPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KQ29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgcGF0aCBwcmVmaXhlcy4gVGhpcyBjYW4gYmUgdXNlZCB0byBwb2ludCBPUHJvZmlsZSB0byBhCmRpZmZlcmVudCBsb2NhdGlvbiBmb3Igc291cmNlIGZpbGVzIHdoZW4gdGhlIGRlYnVnIGluZm9ybWF0aW9uIHNwZWNpZmllcyBhbgphYnNvbHV0ZSBwYXRoIG9uIHlvdXIgc3lzdGVtIGZvciB0aGUgc291cmNlIHRoYXQgZG9lcyBub3QgZXhpc3QuIFRoZSBwcmVmaXgKaXMgc3RyaXBwZWQgZnJvbSB0aGUgZGVidWcgc291cmNlIGZpbGUgcGF0aHMsIHRoZW4gc2VhcmNoZWQgaW4gdGhlIHNlYXJjaCBkaXJzCnNwZWNpZmllZCBieSA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXNlYXJjaC1kaXJzPC9jb2RlPi4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tZGVtYW5nbGUgLyAtRCBub25lfG5vcm1hbHxzbWFydDwvY29kZT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+Cm5vbmU6IG5vIGRlbWFuZ2xpbmcuIG5vcm1hbDogdXNlIGRlZmF1bHQgZGVtYW5nbGVyIChkZWZhdWx0KSBzbWFydDogdXNlCnBhdHRlcm4tbWF0Y2hpbmcgdG8gbWFrZSBDKysgc3ltYm9sIGRlbWFuZ2xpbmcgbW9yZSByZWFkYWJsZS4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tZXhjbHVkZS1kZXBlbmRlbnQgLyAteDwvY29kZT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+CkRvIG5vdCBpbmNsdWRlIGFwcGxpY2F0aW9uLXNwZWNpZmljIGltYWdlcyBmb3IgbGlicmFyaWVzLCBrZXJuZWwgbW9kdWxlcwphbmQgdGhlIGtlcm5lbC4gVGhpcyBvcHRpb24gb25seSBtYWtlcyBzZW5zZSBpZiB0aGUgcHJvZmlsZSBzZXNzaW9uCnVzZWQgLS1zZXBhcmF0ZS4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tZXhjbHVkZS1maWxlIFtmaWxlc108L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpFeGNsdWRlIGFsbCBmaWxlcyBpbiB0aGUgZ2l2ZW4gY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgZ2xvYiBwYXR0ZXJucy4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tZXhjbHVkZS1zeW1ib2xzIC8gLWUgW3N5bWJvbHNdPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KRXhjbHVkZSBhbGwgdGhlIHN5bWJvbHMgaW4gdGhlIGdpdmVuIGNvbW1hLXNlcGFyYXRlZCBsaXN0Lgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1oZWxwIC8gLT8gLyAtLXVzYWdlPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KU2hvdyBoZWxwIG1lc3NhZ2UuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWltYWdlLXBhdGggLyAtcCBbcGF0aHNdPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KQ29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgYWRkaXRpb25hbCBwYXRocyB0byBzZWFyY2ggZm9yIGJpbmFyaWVzLgpUaGlzIGlzIG5lZWRlZCB0byBmaW5kIGtlcm5lbCBtb2R1bGVzLgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1yb290IC8gLVIgW3BhdGhdPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KQSBwYXRoIHRvIGEgZmlsZXN5c3RlbSB0byBzZWFyY2ggZm9yIGFkZGl0aW9uYWwgYmluYXJpZXMuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWluY2x1ZGUtZmlsZSBbZmlsZXNdPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KT25seSBpbmNsdWRlIGZpbGVzIGluIHRoZSBnaXZlbiBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBnbG9iIHBhdHRlcm5zLgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1pbmNsdWRlLXN5bWJvbHMgLyAtaSBbc3ltYm9sc108L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpPbmx5IGluY2x1ZGUgc3ltYm9scyBpbiB0aGUgZ2l2ZW4gY29tbWEtc2VwYXJhdGVkIGxpc3QuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLW9iamR1bXAtcGFyYW1zIFtwYXJhbXNdPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KUGFzcyB0aGUgZ2l2ZW4gcGFyYW1ldGVycyBhcyBleHRyYSB2YWx1ZXMgd2hlbiBjYWxsaW5nIG9iamR1bXAuCklmIG1vcmUgdGhhbiBvbmUgb3B0aW9uIGlzIHRvIGJlIHBhc3NlZCB0byBvYmpkdW1wLCB0aGUgcGFyYW1ldGVycyBtdXN0IGJlIGVuY2xvc2VkIGluIGEKcXVvdGVkIHN0cmluZy4KPC9wPgogICAgICAgICAgICAgICAgICA8cD4KQW4gZXhhbXBsZSBvZiB3aGVyZSB0aGlzIG9wdGlvbiBpcyB1c2VmdWwgaXMgd2hlbiB5b3VyIHRvb2xjaGFpbiBkb2VzIG5vdAphdXRvbWF0aWNhbGx5IHJlY29nbml6ZSBpbnN0cnVjdGlvbnMgdGhhdCBhcmUgc3BlY2lmaWMgdG8geW91ciBwcm9jZXNzb3IuCkZvciBleGFtcGxlLCBvbiBJQk0gUE9XRVI3L1JIRUwgNiwgb2JqZHVtcCBtdXN0IGJlIHRvbGQgdGhhdCBhIGJpbmFyeSBmaWxlIG1heSBoYXZlClBPV0VSNy1zcGVjaWZpYyBpbnN0cnVjdGlvbnMuIFRoZSA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGFubm90YXRlPC9zdHJvbmc+PC9zcGFuPiBvcHRpb24gdG8gc2hvdyB0aGUgUE9XRVI3LXNwZWNpZmljCmluc3RydWN0aW9ucyBpczoKPC9wPgogICAgICAgICAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj4KICAgLS1vYmpkdW1wLXBhcmFtcz0tTXBvd2VyNwo8L3ByZT4KICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgPHA+CjwvcD4KICAgICAgICAgICAgICAgICAgPHA+ClRoZSA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGFubm90YXRlPC9zdHJvbmc+PC9zcGFuPiBvcHRpb24gdG8gc2hvdyB0aGUgUE9XRVI3LXNwZWNpZmljIGluc3RydWN0aW9ucywKdGhlIHNvdXJjZSBjb2RlICgtLXNvdXJjZSkgYW5kIHRoZSBsaW5lIG51bWJlcnMgKC1sKSB3b3VsZCBiZToKPC9wPgogICAgICAgICAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj4KICAgLS1vYmpkdW1wLXBhcmFtcz0iLU1wb3dlcjcgLWwgLS1zb3VyY2UiCjwvcHJlPgogICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICA8cD4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tb3V0cHV0LWRpciAvIC1vIFtkaXJdPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KT3V0cHV0IGRpcmVjdG9yeS4gVGhpcyBtYWtlcyBvcGFubm90YXRlIG91dHB1dCBvbmUgYW5ub3RhdGVkIGZpbGUgZm9yIGVhY2gKc291cmNlIGZpbGUuIFRoaXMgb3B0aW9uIGNhbid0IGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCAtLWFzc2VtYmx5Lgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1zZWFyY2gtZGlycyAvIC1kIFtwYXRoc108L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpDb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBwYXRocyB0byBzZWFyY2ggZm9yIHNvdXJjZSBmaWxlcy4gVGhpcyBpcyB1c2VmdWwgdG8gZmluZApzb3VyY2UgZmlsZXMgd2hlbiB0aGUgZGVidWcgaW5mb3JtYXRpb24gb25seSBjb250YWlucyByZWxhdGl2ZSBwYXRocy4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc291cmNlIC8gLXM8L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpPdXRwdXQgYW5ub3RhdGVkIHNvdXJjZS4gVGhpcyByZXF1aXJlcyBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gdG8gYmUgYXZhaWxhYmxlCmZvciB0aGUgYmluYXJpZXMuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXRocmVzaG9sZCAvIC10IFtwZXJjZW50YWdlXTwvY29kZT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+Ck9ubHkgb3V0cHV0IGRhdGEgZm9yIHN5bWJvbHMgdGhhdCBoYXZlIG1vcmUgdGhhbiB0aGUgZ2l2ZW4gcGVyY2VudGFnZQpvZiB0b3RhbCBzYW1wbGVzLgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS12ZXJib3NlIC8gLVYgW29wdGlvbnNdPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KR2l2ZSB2ZXJib3NlIGRlYnVnZ2luZyBvdXRwdXQuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXZlcnNpb24gLyAtdjwvY29kZT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+ClNob3cgdmVyc2lvbi4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY3QxIiB0aXRsZT0iNC6gT1Byb2ZpbGUgcmVzdWx0cyB3aXRoIEpJVCBzYW1wbGVzIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+PGEgaWQ9ImdldHRpbmctaml0LXJlcG9ydHMiPjwvYT40LqBPUHJvZmlsZSByZXN1bHRzIHdpdGggSklUIHNhbXBsZXM8L2gyPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHA+CgkJQWZ0ZXIgcHJvZmlsaW5nIGEgSmF2YSAob3Igb3RoZXIgc3VwcG9ydGVkIFZNKSBhcHBsaWNhdGlvbiwgdGhlCgkJT1Byb2ZpbGUgSklUIHN1cHBvcnQgY3JlYXRlcyBFTEYgYmluYXJpZXMgZnJvbSB0aGUKCQlpbnRlcm1lZGlhdGUgZmlsZXMgdGhhdCB3ZXJlIHdyaXR0ZW4gYnkgdGhlIGFnZW50IGxpYnJhcnkuCgkJVGhlIEVMRiBiaW5hcmllcyBhcmUgbmFtZWQgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4mbHQ7dGdpZCZndDsuam88L2NvZGU+LgoJCVdpdGggdGhlIHN5bWJvbCBpbmZvcm1hdGlvbiBzdG9yZWQgaW4gdGhlc2UgRUxGIGZpbGVzLCBpdCBpcwoJCXBvc3NpYmxlIHRvIG1hcCBzYW1wbGVzIHRvIHRoZSBhcHByb3ByaWF0ZSBzeW1ib2xzLgoJPC9wPgogICAgICAgICAgPHA+CgkJVGhlIHVzdWFsIGFuYWx5c2lzIHRvb2xzICg8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcHJlcG9ydDwvc3Ryb25nPjwvc3Bhbj4gYW5kL29yIAoJCTxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wYW5ub3RhdGU8L3N0cm9uZz48L3NwYW4+KSBjYW4gbm93IGJlIHVzZWQKCQl0byBnZXQgc3ltYm9scyBhbmQgYXNzZW1ibHkgY29kZSBmb3IgdGhlIGluc3RydW1lbnRlZCBWTSBwcm9jZXNzZXMuCgk8L3A+CiAgICAgICAgICA8cD4KQmVsb3cgaXMgYW4gZXhhbXBsZSBvZiBhIHByb2ZpbGUgcmVwb3J0IG9mIGEgSmF2YSBhcHBsaWNhdGlvbiB0aGF0IGhhcyBiZWVuCmluc3RydW1lbnRlZCB3aXRoIHRoZSBwcm92aWRlZCBhZ2VudCBsaWJyYXJ5Lgo8L3A+CiAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj4KJCBvcHJlcG9ydCAtbCAvdXNyL2xpYi9qdm0vanJlLTEuNS4wLWlibS9iaW4vamF2YQpDUFU6IENvcmUgU29sbyAvIER1bywgc3BlZWQgMjE2NyBNSHogKGVzdGltYXRlZCkKQ291bnRlZCBDUFVfQ0xLX1VOSEFMVEVEIGV2ZW50cyAoVW5oYWx0ZWQgY2xvY2sgY3ljbGVzKSB3aXRoIGEgdW5pdCBtYXNrIG9mIDB4MDAgKFVuaGFsdGVkIGNvcmUgY3ljbGVzKSBjb3VudCAxMDAwMDAKc2FtcGxlcyAgJSAgICAgICAgaW1hZ2UgbmFtZSAgICAgICAgICAgICAgIHN5bWJvbCBuYW1lCjE4NjAyMCAgIDUwLjA1MjMgIG5vLXZtbGludXggICAgICAgICAgICAgICBuby12bWxpbnV4ICAgICAgICAgICAgICAgKG5vIHN5bWJvbHMpCjM0MzMzICAgICA5LjIzODAgIDc2MzUuam8gICAgICAgICAgICAgICAgICBqYXZhICAgICAgICAgICAgICAgICAgICAgdm9pZCB0ZXN0LmYxKCkKMTkwMjIgICAgIDUuMTE4MiAgbGliYy0yLjUuc28gICAgICAgICAgICAgIGxpYmMtMi41LnNvICAgICAgICAgICAgICBfSU9fZmlsZV94c3B1dG5AQEdMSUJDXzIuMQoxODc2MiAgICAgNS4wNDgzICBsaWJjLTIuNS5zbyAgICAgICAgICAgICAgbGliYy0yLjUuc28gICAgICAgICAgICAgIHZmcHJpbnRmCjE2NDA4ICAgICA0LjQxNDkgIDc2MzUuam8gICAgICAgICAgICAgICAgICBqYXZhICAgICAgICAgICAgICAgICAgICAgdm9pZCB0ZXN0JEhlbGxvVGhyZWFkLnJ1bigpCjE2MjUwICAgICA0LjM3MjQgIDc2MzUuam8gICAgICAgICAgICAgICAgICBqYXZhICAgICAgICAgICAgICAgICAgICAgdm9pZCB0ZXN0JHRlc3RfMS5mMihpbnQpCjE1MzAzICAgICA0LjExNzYgIDc2MzUuam8gICAgICAgICAgICAgICAgICBqYXZhICAgICAgICAgICAgICAgICAgICAgdm9pZCB0ZXN0LmYyKGludCwgaW50KQoxMzI1MiAgICAgMy41NjU3ICA3NjM1LmpvICAgICAgICAgICAgICAgICAgamF2YSAgICAgICAgICAgICAgICAgICAgIHZvaWQgdGVzdC5mMihpbnQpCjUxNjUgICAgICAxLjM4OTcgIDc2MzUuam8gICAgICAgICAgICAgICAgICBqYXZhICAgICAgICAgICAgICAgICAgICAgdm9pZCB0ZXN0LmY0KCkKOTU1ICAgICAgIDAuMjU3MCAgNzYzNS5qbyAgICAgICAgICAgICAgICAgIGphdmEgICAgICAgICAgICAgICAgICAgICB2b2lkIHRlc3QkSGVsbG9UaHJlYWQucnVuKCl+Cgo8L3ByZT4KICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgPC90YWJsZT4KICAgICAgICAgIDxwPgo8L3A+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJub3RlIiB0aXRsZT0iTm90ZSIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwLjVpbjsgbWFyZ2luLXJpZ2h0OiAwLjVpbjsiPgogICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj5Ob3RlPC9oMz4KICAgICAgICAgICAgPHA+CgkgIERlcGVuZGluZyBvbiB0aGUgSlZNIHRoYXQgaXMgdXNlZCwgY2VydGFpbiBvcHRpb25zIG9mIG9wcmVwb3J0IGFuZCBvcGFubm90YXRlCgkgIGRvIE5PVCB3b3JrIHNpbmNlIHRoZXkgcmVseSBvbiBkZWJ1ZyBpbmZvcm1hdGlvbiAoZS5nLiBzb3VyY2UgY29kZSBsaW5lIG51bWJlcikKCSAgdGhhdCBpcyBub3QgYWx3YXlzIGF2YWlsYWJsZS4gVGhlIFN1biBKVk0gZG9lcyBwcm92aWRlIHRoZSBuZWNlc3NhcnkgZGVidWcKCSAgaW5mb3JtYXRpb24gdmlhIHRoZSBKVk1USVtQSV0gaW50ZXJmYWNlLAoJICBidXQgb3RoZXIgSlZNcyBkbyBub3QuCiAgPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cD4KCQlBcyB5b3UgY2FuIHNlZSBpbiB0aGUgb3ByZXBvcnQgb3V0cHV0LCB0aGUgSklUIHN1cHBvcnQgYWdlbnQgZm9yIEphdmEKCQlnZW5lcmF0ZXMgc3ltYm9scyB0byBpbmNsdWRlIHRoZSBjbGFzcyBhbmQgbWV0aG9kIHNpZ25hdHVyZS4KCQlBIHN5bWJvbCB3aXRoIHRoZSBzdWZmaXggJiM3MzI7Jmx0O24mZ3Q7IChlLmcuCgkJPGNvZGUgY2xhc3M9ImNvZGUiPnZvaWQgdGVzdCRIZWxsb1RocmVhZC5ydW4oKSYjNzMyOzE8L2NvZGU+KSBtZWFucyB0aGF0IHRoaXMgaXMKCQl0aGUgJmx0O24mZ3Q7dGggb2NjdXJyZW5jZSBvZiB0aGUgaWRlbnRpY2FsIG5hbWUuIFRoaXMgaGFwcGVucyBpZiBhIG1ldGhvZCBpcyByZS1KSVRlZC4KCQlBIHN5bWJvbCB3aXRoIHRoZSBzdWZmaXggJSZsdDtuJmd0OywgbWVhbnMgdGhhdCB0aGUgYWRkcmVzcyBzcGFjZSBvZiB0aGlzIHN5bWJvbAoJCXdhcyByZXVzZWQgZHVyaW5nIHRoZSBzYW1wbGUgc2Vzc2lvbiAoc2VlIDxhIGNsYXNzPSJ4cmVmIiBocmVmPSIjb3ZlcmxhcHBpbmctc3ltYm9scyIgdGl0bGU9IjYuoE92ZXJsYXBwaW5nIHN5bWJvbHMgaW4gSklUZWQgY29kZSI+U2VjdGlvbqA2LCAmIzgyMjA7T3ZlcmxhcHBpbmcgc3ltYm9scyBpbiBKSVRlZCBjb2RlJiM4MjIxOzwvYT4pLgoJCVRoZSB2YWx1ZSAmbHQ7biZndDsgaXMgdGhlIHBlcmNlbnRhZ2Ugb2YgdGltZSB0aGF0IHRoaXMgc3ltYm9sL2NvZGUgd2FzIHByZXNlbnQgaW4KCQlyZWxhdGlvbiB0byB0aGUgdG90YWwgbGlmZXRpbWUgb2YgYWxsIG92ZXJsYXBwaW5nIG90aGVyIHN5bWJvbHMuIEEgc3ltYm9sIG9mIHRoZSBmb3JtCgkJPGNvZGUgY2xhc3M9ImNvZGUiPiZsdDtyZXR1cm5fdmFsJmd0OyAmbHQ7Y2xhc3NfbmFtZSZndDskJmx0O21ldGhvZF9zaWcmZ3Q7PC9jb2RlPiBkZW5vdGVzIGFuCgkJaW5uZXIgY2xhc3MuCgk8L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIHRpdGxlPSI1LqBncHJvZi1jb21wYXRpYmxlIG91dHB1dCAob3BncHJvZikiPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBpZD0ib3BncHJvZiI+PC9hPjUuoDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPmdwcm9mPC9zdHJvbmc+PC9zcGFuPi1jb21wYXRpYmxlIG91dHB1dCAoPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3BncHJvZjwvc3Ryb25nPjwvc3Bhbj4pPC9oMj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgpJZiB5b3UncmUgZmFtaWxpYXIgd2l0aCB0aGUgb3V0cHV0IHByb2R1Y2VkIGJ5IDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPkdOVSBncHJvZjwvc3Ryb25nPjwvc3Bhbj4sCnlvdSBtYXkgZmluZCA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGdwcm9mPC9zdHJvbmc+PC9zcGFuPiB1c2VmdWwuIEl0IHRha2VzIGEgc2luZ2xlIGJpbmFyeQphcyBhbiBhcmd1bWVudCwgYW5kIHByb2R1Y2VzIGEgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5nbW9uLm91dDwvY29kZT4gZmlsZSBmb3IgdXNlCndpdGggPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+Z3Byb2YgLXA8L3N0cm9uZz48L3NwYW4+LiBJZiBjYWxsLWdyYXBoIHByb2ZpbGluZyBpcyBlbmFibGVkLAp0aGVuIHRoaXMgaXMgYWxzbyBpbmNsdWRlZC4KPC9wPgogICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+CiQgb3BncHJvZiBgd2hpY2ggb3Byb2ZpbGVkYCAjIGdlbmVyYXRlcyBnbW9uLm91dCBmaWxlCiQgZ3Byb2YgLXAgYHdoaWNoIG9wcm9maWxlZGAgfCBoZWFkCkZsYXQgcHJvZmlsZToKCkVhY2ggc2FtcGxlIGNvdW50cyBhcyAxIHNhbXBsZXMuCiAgJSAgIGN1bXVsYXRpdmUgICBzZWxmICAgICAgICAgICAgICBzZWxmICAgICB0b3RhbAogdGltZSAgIHNhbXBsZXMgICBzYW1wbGVzICAgIGNhbGxzICBUMS9jYWxsICBUMS9jYWxsICBuYW1lCiAzMy4xMyAyMDYyMzcuMDAgMjA2MjM3LjAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZGJfaW5zZXJ0CiAyMi42NyAzNDczODYuMDAgMTQxMTQ5LjAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3BfYnVmZmVyX3ZhbHVlCiAgOS41NiA0MDY4ODEuMDAgNTk0OTUuMDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZF9wdXRfc2FtcGxlCiAgNy4zNCA0NTI1OTkuMDAgNDU3MTguMDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZF9maW5kX2ltYWdlCiAgNy4xOSA0OTczMjcuMDAgNDQ3MjguMDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZF9wcm9jZXNzX3NhbXBsZXMKPC9wcmU+CiAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgdGl0bGU9IjUuMS6gVXNhZ2Ugb2Ygb3BncHJvZiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJvcGdwcm9mLWRldGFpbHMiPjwvYT41LjEuoFVzYWdlIG9mIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wZ3Byb2Y8L3N0cm9uZz48L3NwYW4+PC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWhlbHAgLyAtPyAvIC0tdXNhZ2U8L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpTaG93IGhlbHAgbWVzc2FnZS4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0taW1hZ2UtcGF0aCAvIC1wIFtwYXRoc108L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpDb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBhZGRpdGlvbmFsIHBhdGhzIHRvIHNlYXJjaCBmb3IgYmluYXJpZXMuClRoaXMgaXMgbmVlZGVkIHRvIGZpbmQga2VybmVsIG1vZHVsZXMuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXJvb3QgLyAtUiBbcGF0aF08L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpBIHBhdGggdG8gYSBmaWxlc3lzdGVtIHRvIHNlYXJjaCBmb3IgYWRkaXRpb25hbCBiaW5hcmllcy4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tb3V0cHV0LWZpbGVuYW1lIC8gLW8gW2ZpbGVdPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KT3V0cHV0IHRvIHRoZSBnaXZlbiBmaWxlIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQsIGdtb24ub3V0CjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXRocmVzaG9sZCAvIC10IFtwZXJjZW50YWdlXTwvY29kZT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+Ck9ubHkgb3V0cHV0IGRhdGEgZm9yIHN5bWJvbHMgdGhhdCBoYXZlIG1vcmUgdGhhbiB0aGUgZ2l2ZW4gcGVyY2VudGFnZQpvZiB0b3RhbCBzYW1wbGVzLgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS12ZXJib3NlIC8gLVYgW29wdGlvbnNdPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KR2l2ZSB2ZXJib3NlIGRlYnVnZ2luZyBvdXRwdXQuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXZlcnNpb24gLyAtdjwvY29kZT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+ClNob3cgdmVyc2lvbi4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY3QxIiB0aXRsZT0iNi6gQW5hbHl6aW5nIHByb2ZpbGUgZGF0YSBvbiBhbm90aGVyIHN5c3RlbSAob3BhcmNoaXZlKSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIGlkPSJvcGFyY2hpdmUiPjwvYT42LqBBbmFseXppbmcgcHJvZmlsZSBkYXRhIG9uIGFub3RoZXIgc3lzdGVtICg8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGFyY2hpdmU8L3N0cm9uZz48L3NwYW4+KTwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cD4KCVRoZSA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGFyY2hpdmU8L3N0cm9uZz48L3NwYW4+IHV0aWxpdHkgZ2VuZXJhdGVzIGEgZGlyZWN0b3J5IHBvcHVsYXRlZAoJd2l0aCBleGVjdXRhYmxlLCBkZWJ1ZywgYW5kIG9wcm9maWxlIHNhbXBsZSBmaWxlcy4gVGhpcyBkaXJlY3RvcnkgY2FuIGJlCgljb3BpZWQgdG8gYW5vdGhlciAoaG9zdCkgbWFjaGluZSBhbmQgYW5hbHl6ZWQgb2ZmbGluZSwgd2l0aCBubyBmdXJ0aGVyIG5lZWQgdG8KCWFjY2VzcyB0aGUgZGF0YSBjb2xsZWN0aW9uIG1hY2hpbmUgKHRhcmdldCkuCjwvcD4KICAgICAgICAgIDxwPgoJVGhlIGZvbGxvd2luZyBjb21tYW5kLCBleGVjdXRlZCBvbiB0aGUgdGFyZ2V0IHN5c3RlbSwgd2lsbCBjb2xsZWN0IHRoZQoJc2FtcGxlIGZpbGVzLCB0aGUgZXhlY3V0YWJsZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBzYW1wbGUgZmlsZXMsIGFuZCB0aGUKCWRlYnVnaW5mbyBmaWxlcyBhc3NvY2lhdGVkIHdpdGggdGhlIGV4ZWN1dGFibGVzIGFuZCBjb3B5IHRoZW0gaW50bwoJPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4vdG1wL2N1cnJlbnRfZGF0YTwvY29kZT46CjwvcD4KICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPgojIG9wYXJjaGl2ZSAtbyAvdG1wL2N1cnJlbnRfZGF0YQo8L3ByZT4KICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgPC90YWJsZT4KICAgICAgICAgIDxwPgoJV2hlbiB0cmFuc2ZlcnJpbmcgYXJjaGl2ZWQgcHJvZmlsZSBkYXRhIHRvIGEgaG9zdCBtYWNoaW5lIGZvciBvZmZsaW5lIGFuYWx5c2lzLAoJeW91IG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBvcHJvZmlsZSBBQkkgZm9ybWF0IGlzIGNvbXBhdGlibGUgYmV0d2VlbiB0aGUKCXRhcmdldCBzeXN0ZW0gYW5kIHRoZSBob3N0IHN5c3RlbTsgaWYgaXQgaXNuJ3QsIHlvdSBtdXN0IHJ1biB0aGUgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3BpbXBvcnQ8L3N0cm9uZz48L3NwYW4+Cgljb21tYW5kIHRvIGNvbnZlcnQgdGhlIHRhcmdldCdzIHNhbXBsZSBkYXRhIGZpbGVzIHRvIHRoZSBmb3JtYXQgb2YgeW91ciBob3N0IHN5c3RlbS4KCVNlZSA8YSBjbGFzcz0ieHJlZiIgaHJlZj0iI29waW1wb3J0IiB0aXRsZT0iNy6gQ29udmVydGluZyBzYW1wbGUgZGF0YWJhc2UgZmlsZXMgKG9waW1wb3J0KSI+U2VjdGlvbqA3LCAmIzgyMjA7Q29udmVydGluZyBzYW1wbGUgZGF0YWJhc2UgZmlsZXMgKDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9waW1wb3J0PC9zdHJvbmc+PC9zcGFuPikmIzgyMjE7PC9hPiBmb3IgbW9yZSBkZXRhaWxzLgo8L3A+CiAgICAgICAgICA8cD4KCUFmdGVyIHlvdXIgcHJvZmlsZSBkYXRhIGlzIHRyYW5zZmVycmVkIHRvIHRoZSBob3N0IHN5c3RlbSBhbmQgKGlmIG5lY2Vzc2FyeSkKCXlvdSBoYXZlIHJ1biB0aGUgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3BpbXBvcnQ8L3N0cm9uZz48L3NwYW4+IGNvbW1hbmQgdG8gY29udmVydCB0aGUgZmlsZQoJZm9ybWF0LCB5b3UgY2FuIG5vdyBydW4gdGhlIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wcmVwb3J0PC9zdHJvbmc+PC9zcGFuPiBhbmQKCTxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wYW5ub3RhdGU8L3N0cm9uZz48L3NwYW4+IGNvbW1hbmRzLiAgSG93ZXZlciwgeW91IG11c3QgcHJvdmlkZSBhbgoJImFyY2hpdmUgc3BlY2lmaWNhdGlvbiIgdG8gbGV0IHRoZXNlIHBvc3QtcHJvY2Vzc2luZyB0b29scyBrbm93IHdoZXJlIHRvIGZpbmQKCW9mIHRoZSBwcm9maWxlIGRhdGEgKHNhbXBsZSBmaWxlcywgZXhlY3V0YWJsZXMsIGV0Yy4pOyBmb3IgZXhhbXBsZToKPC9wPgogICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+CiMgb3ByZXBvcnQgYXJjaGl2ZTovaG9tZS91c2VyMS9teV9vcHJvZmlsZV9hcmNoaXZlIC0tc3ltYm9scwo8L3ByZT4KICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgPC90YWJsZT4KICAgICAgICAgIDxwPgoJRnVydGhlcm1vcmUsIGlmIHlvdXIgcHJvZmlsZSB3YXMgY29sbGVjdGVkIG9uIHlvdXIgdGFyZ2V0IHN5c3RlbSBpbnRvIGEgc2Vzc2lvbi1kaXIKCW90aGVyIHRoYW4gPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4vdmFyL2xpYi9vcHJvZmlsZTwvY29kZT4sIHRoZSA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGFyY2hpdmU8L3N0cm9uZz48L3NwYW4+Cgljb21tYW5kIHdpbGwgZGlzcGxheSBhIG1lc3NhZ2Ugc2ltaWxhciB0byB0aGUgZm9sbG93aW5nOgo8L3A+CiAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj4KIyBOT1RFOiBUaGUgc2FtcGxlIGRhdGEgaW4gdGhpcyBhcmNoaXZlIGlzIGxvY2F0ZWQgYXQgL2hvbWUvdXNlcjEvdGVzdC1zdHVmZi9vcHJvZmlsZV9kYXRhCmluc3RlYWQgb2YgdGhlIHN0YW5kYXJkIGxvY2F0aW9uIG9mIC92YXIvbGliL29wcm9maWxlLiAgSGVuY2UsIHdoZW4gdXNpbmcgb3ByZXBvcnQKYW5kIG90aGVyIHBvc3QtcHJvY2Vzc2luZyB0b29scyBvbiB0aGlzIGFyY2hpdmUsIHlvdSBtdXN0IHBhc3MgdGhlIGZvbGxvd2luZyBvcHRpb246CiAgICAgICAgLS1zZXNzaW9uLWRpcj0vaG9tZS91c2VyMS90ZXN0LXN0dWZmL29wcm9maWxlX2RhdGEKPC9wcmU+CiAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8cD4KCVRoZW4gdGhlIGFib3ZlIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wcmVwb3J0PC9zdHJvbmc+PC9zcGFuPiBleGFtcGxlIHdvdWxkIGhhdmUgdG8gaW5jbHVkZSB0aGF0Cgk8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXNlc3Npb24tZGlyPC9jb2RlPiBvcHRpb24uCjwvcD4KICAgICAgICAgIDxwPgo8L3A+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJub3RlIiB0aXRsZT0iTm90ZSIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwLjVpbjsgbWFyZ2luLXJpZ2h0OiAwLjVpbjsiPjxoMyBjbGFzcz0idGl0bGUiPk5vdGU8L2gzPgoJIEluIHNvbWUgaG9zdC90YXJnZXQgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzLCBhbGwgdGFyZ2V0IGV4ZWN1dGFibGVzLCBsaWJyYXJpZXMsIGFuZAoJIGRlYnVnaW5mbyBmaWxlcyBhcmUgc3RvcmVkIGluIGEgcm9vdCBkaXJlY3Rvcnkgb24gdGhlIGhvc3QgdG8gZmFjaWxpdGF0ZSBvZmZsaW5lCgkgYW5hbHlzaXMuICBJbiBzdWNoIGNhc2VzLCB0aGUgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3BhcmNoaXZlPC9zdHJvbmc+PC9zcGFuPiBjb21tYW5kIGNvbGxlY3RzIG1vcmUgZGF0YQoJIHRoYW4gaXMgbmVjZXNzYXJ5OyBzbywgd2hlbiBjb3B5aW5nIHRoZSByZXN1bHRpbmcgb3V0cHV0IG9mIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wYXJjaGl2ZTwvc3Ryb25nPjwvc3Bhbj4sCgkgeW91IGNhbiBza2lwIGFsbCBvZiB0aGUgZXhlY3V0YWJsZXMsIGV0YywgYW5kIGp1c3QgYXJjaGl2ZSB0aGUgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4kU0VTU0lPTl9ESVI8L2NvZGU+CgkgdHJlZSBsb2NhdGVkIHdpdGhpbiB0aGUgb3V0cHV0IGRpcmVjdG9yeSB5b3Ugc3BlY2lmaWVkIGluIHlvdXIgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3BhcmNoaXZlPC9zdHJvbmc+PC9zcGFuPgoJIGNvbW1hbmQuIFRoZW4sIHdoZW4gcnVubmluZyB0aGUgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3ByZXBvcnQ8L3N0cm9uZz48L3NwYW4+IG9yCTxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wYW5ub3RhdGU8L3N0cm9uZz48L3NwYW4+CgkgY29tbWFuZHMgb24geW91ciBob3N0IHN5c3RlbSwgcGFzcyB0aGUgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1yb290PC9jb2RlPiBvcHRpb24gdG8gcG9pbnQgdG8gdGhlCgkgbG9jYXRpb24gb2YgeW91ciB0YXJnZXQncyBleGVjdXRhYmxlcywgZXRjLgo8L2Rpdj4KICAgICAgICAgIDxwPgo8L3A+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgdGl0bGU9IjYuMS6gVXNhZ2Ugb2Ygb3BhcmNoaXZlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9Im9wYXJjaGl2ZS1kZXRhaWxzIj48L2E+Ni4xLqBVc2FnZSBvZiA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGFyY2hpdmU8L3N0cm9uZz48L3NwYW4+PC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWhlbHAgLyAtPyAvIC0tdXNhZ2U8L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpTaG93IGhlbHAgbWVzc2FnZS4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tZXhjbHVkZS1kZXBlbmRlbnQgLyAteDwvY29kZT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+CkRvIG5vdCBpbmNsdWRlIGFwcGxpY2F0aW9uLXNwZWNpZmljIGltYWdlcyBmb3IgbGlicmFyaWVzLCBrZXJuZWwgbW9kdWxlcwphbmQgdGhlIGtlcm5lbC4gVGhpcyBvcHRpb24gb25seSBtYWtlcyBzZW5zZSBpZiB0aGUgcHJvZmlsZSBzZXNzaW9uCnVzZWQgLS1zZXBhcmF0ZS4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0taW1hZ2UtcGF0aCAvIC1wIFtwYXRoc108L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpDb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBhZGRpdGlvbmFsIHBhdGhzIHRvIHNlYXJjaCBmb3IgYmluYXJpZXMuClRoaXMgaXMgbmVlZGVkIHRvIGZpbmQga2VybmVsIG1vZHVsZXMuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXJvb3QgLyAtUiBbcGF0aF08L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpBIHBhdGggdG8gYSBmaWxlc3lzdGVtIHRvIHNlYXJjaCBmb3IgYWRkaXRpb25hbCBiaW5hcmllcy4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tb3V0cHV0LWRpcmVjdG9yeSAvIC1vIFtkaXJlY3RvcnldPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KT3V0cHV0IHRvIHRoZSBnaXZlbiBkaXJlY3RvcnkuIFRoZXJlIGlzIG5vIGRlZmF1bHQuIFRoaXMgbXVzdCBiZSBzcGVjaWZpZWQuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWxpc3QtZmlsZXMgLyAtbDwvY29kZT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+Ck9ubHkgbGlzdCB0aGUgZmlsZXMgdGhhdCB3b3VsZCBiZSBhcmNoaXZlZCwgZG9uJ3QgY29weSB0aGVtLgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS12ZXJib3NlIC8gLVYgW29wdGlvbnNdPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KR2l2ZSB2ZXJib3NlIGRlYnVnZ2luZyBvdXRwdXQuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXZlcnNpb24gLyAtdjwvY29kZT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+ClNob3cgdmVyc2lvbi4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY3QxIiB0aXRsZT0iNy6gQ29udmVydGluZyBzYW1wbGUgZGF0YWJhc2UgZmlsZXMgKG9waW1wb3J0KSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIGlkPSJvcGltcG9ydCI+PC9hPjcuoENvbnZlcnRpbmcgc2FtcGxlIGRhdGFiYXNlIGZpbGVzICg8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGltcG9ydDwvc3Ryb25nPjwvc3Bhbj4pPC9oMj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgoJVGhpcyB1dGlsaXR5IGNvbnZlcnRzIHNhbXBsZSBkYXRhYmFzZSBmaWxlcyBmcm9tIGEgZm9yZWlnbiBiaW5hcnkgZm9ybWF0IChhYmkpIHRvCgl0aGUgbmF0aXZlIGZvcm1hdC4gVGhpcyBpcyByZXF1aXJlZCB3aGVuIG1vdmluZyBzYW1wbGUgZmlsZXMgdG8gYSAoaG9zdCkgc3lzdGVtCglvdGhlciB0aGFuIHRoZSBvbmUgdXNlZCBmb3IgY29sbGVjdGlvbiAodGFyZ2V0IHN5c3RlbSksIGFuZCB0aGUgaG9zdCBhbmQgdGFyZ2V0IHN5c3RlbXMgYXJlIGRpZmZlcmVudAoJYXJjaGl0ZWN0dXJlcy4gVGhlIGFiaSBmb3JtYXQgb2YgdGhlIHNhbXBsZSBmaWxlcyB0byBiZSBpbXBvcnRlZCBpcyBkZXNjcmliZWQgaW4gYQoJdGV4dCBmaWxlIGxvY2F0ZWQgaW4gPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4kU0VTU0lPTl9ESVIvYWJpPC9jb2RlPi4gIElmIHlvdSBhcmUgdW5zdXJlIGlmCgl5b3VyIHRhcmdldCBhbmQgaG9zdCBzeXN0ZW1zIGhhdmUgY29tcGF0aWJsZSBhcmNoaXRlY3R1cmVzIChpbiByZWdhcmQgdG8gdGhlIE9Qcm9maWxlCglBQkkpLCBzaW1wbHkgZGlmZiBhIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+JFNFU1NJT05fRElSL2FiaTwvY29kZT4gZmlsZSBmcm9tIHRoZSB0YXJnZXQgc3lzdGVtCgl3aXRoIG9uZSBmcm9tIHRoZSBob3N0IHN5c3RlbS4gIElmIGFueSBkaWZmZXJlbmNlcyBzaG93IHVwIGF0IGFsbCwgeW91IG11c3QgcnVuIHRoZQoJPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3BpbXBvcnQ8L3N0cm9uZz48L3NwYW4+IGNvbW1hbmQuCjwvcD4KICAgICAgICAgIDxwPgoJVGhlIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wYXJjaGl2ZTwvc3Ryb25nPjwvc3Bhbj4gY29tbWFuZCBzaG91bGQgYmUgdXNlZCBvbiB0aGUgbWFjaGluZSB3aGVyZQoJdGhlIHByb2ZpbGUgd2FzIHRha2VuICh0YXJnZXQpIGluIG9yZGVyIHRvIGNvbGxlY3Qgc2FtcGxlIGZpbGVzIGFuZCBhbGwgb3RoZXIgbmVjZXNzYXJ5CglpbmZvcm1hdGlvbi4gVGhlIGFyY2hpdmUgZGlyZWN0b3J5IHRoYXQgaXMgdGhlIG91dHB1dCBmcm9tIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wYXJjaGl2ZTwvc3Ryb25nPjwvc3Bhbj4KCXNob3VsZCBiZSBjb3BpZWQgdG8gdGhlIHN5c3RlbSB3aGVyZSB5b3Ugd2lzaCB0byBwZXJmb3JtIHlvdXIgcGVyZm9ybWFuY2UgYW5hbHlzaXMgKGhvc3QpLgo8L3A+CiAgICAgICAgICA8cD4KCVRoZSBmb2xsb3dpbmcgY29tbWFuZCBjb252ZXJ0cyBhbiBpbnB1dCBzYW1wbGUgZmlsZSB0byB0aGUgc3BlY2lmaWVkCglvdXRwdXQgc2FtcGxlIGZpbGUgdXNpbmcgdGhlIGdpdmVuIGFiaSBmaWxlIGFzIGEgYmluYXJ5IGRlc2NyaXB0aW9uCglvZiB0aGUgaW5wdXQgZmlsZSBhbmQgdGhlIGN1cmVudCBwbGF0Zm9ybSBhYmkgYXMgYSBiaW5hcnkgZGVzY3JpcHRpb24KCW9mIHRoZSBvdXRwdXQgZmlsZS4gKE5PVEU6IFRoZSBlbGxpcHNlcyBhcmUgdXNlZCB0byBtYWtlIHRoZSBleGFtcGxlIG1vcmUKCWNvbXBhY3QgYW5kIGNhbm5vdCBiZSB1c2VkIGluIGFuIGFjdHVhbCBjb21tYW5kIGxpbmUuKQo8L3A+CiAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj4KIyBvcGltcG9ydCAtYSAvdG1wL2ZvcmVpZ24tYWJpIC1vIC90bXAvaW1wb3J0ZWQvLi4uL0dMT0JBTF9QT1dFUl9FVkVOVFMuMjAwMDAwLjEuYWxsLmFsbC5hbGwgL3RtcC9hcmNoaXZlZC92YXIvbGliLy4uLi9tcHJpbWUvR0xPQkFMX1BPV0VSX0VWRU5UUy4yMDAwMDAuMS5hbGwuYWxsLmFsbAo8L3ByZT4KICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgPC90YWJsZT4KICAgICAgICAgIDxwPgogICAgU2luY2Ugb3BpbXBvcnQgY29udmVydHMganVzdCBvbmUgZmlsZSBhdCBhIHRpbWUsIGFuIGV4YW1wbGUgc2hlbGwgc2NyaXB0IGlzIHByb3ZpZGVkIGJlbG93CiAgICB0aGF0IHdpbGwgcGVyZm9ybSBhbiBpbXBvcnQvY29udmVyc2lvbiBvZiBhbGwgc2FtcGxlIGZpbGVzIGluIGEgc2FtcGxlcyBkaXJlY3RvcnkgY29sbGVjdGVkCiAgICBmcm9tIHRoZSB0YXJnZXQgc3lzdGVtLgo8L3A+CiAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj4KIyEvYmluL2Jhc2gKVXNhZ2U6IG15LWltcG9ydC5zaCAmbHQ7aW5wdXQtYWJpLXBhdGhuYW1lJmd0OwoKIyBOT1RFOiBTdGFydCBmcm9tIHRoZSAic2FtcGxlcyIgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlICJjdXJyZW50IiBkaXJlY3RvcnkKIyB0byBiZSBpbXBvcnRlZAoKbWtkaXIgY3VycmVudC1pbXBvcnRlZApjZCBjdXJyZW50LWltcG9ydGVkOyAoY2QgLi4vY3VycmVudDsgZmluZCAuIC10eXBlIGQgISAtbmFtZSAuKSB8eGFyZ3MgbWtkaXIKY2QgLi4vY3VycmVudDsgbXYgc3RhdHMgLi4vU3RhdHNTYXZlOyBmaW5kIC4gLXR5cGUgZiB8IHdoaWxlIHJlYWQgbGluZTsgZG8gb3BpbXBvcnQgIC1hICQxIC1vIC4uL2N1cnJlbnQtaW1wb3J0ZWQvJGxpbmUgJGxpbmU7IGRvbmU7IG12IC4uL1N0YXRzU2F2ZSBzdGF0czsKPC9wcmU+CiAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8cD4KPC9wPgogICAgICAgICAgPHA+CkV4YW1wbGUgdXNhZ2U6ICBBc3N1bWUgdGhhdCBvbiB0aGUgdGFyZ2V0IHN5c3RlbSwgYSBwcm9maWxlIHdhcyBjb2xsZWN0ZWQgdXNpbmcgYSBzZXNzaW9uLWRpciBvZgo8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPi92YXIvbGliL29wcm9maWxlPC9jb2RlPiwgYW5kIHRoZW4gPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3BhcmNoaXZlIC1vIHByb2ZpbGUxPC9zdHJvbmc+PC9zcGFuPiB3YXMgcnVuLgpUaGVuIHRoZSA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPnByb2ZpbGUxPC9jb2RlPiBkaXJlY3RvcnkgaXMgY29waWVkIHRvIHRoZSBob3N0IHN5c3RlbSBmb3IgYW5hbHlzaXMuICBUbyBpbXBvcnQKdGhlIHNhbXBsZSBkYXRhIGluIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+cHJvZmlsZTE8L2NvZGU+LCB5b3Ugd291bGQgcGVyZm9ybSB0aGUgZm9sbG93aW5nIHN0ZXBzOgo8L3A+CiAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj4KJGNkIHByb2ZpbGUxL3Zhci9saWIvb3Byb2ZpbGUvc2FtcGxlcwokbXktaW1wb3J0LnNoIGBwd2RgLy4uL2FiaQo8L3ByZT4KICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgPC90YWJsZT4KICAgICAgICAgIDxwPgo8L3A+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgdGl0bGU9IjcuMS6gVXNhZ2Ugb2Ygb3BpbXBvcnQiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj48YSBpZD0ib3BpbXBvcnQtZGV0YWlscyI+PC9hPjcuMS6gVXNhZ2Ugb2YgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3BpbXBvcnQ8L3N0cm9uZz48L3NwYW4+PC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWhlbHAgLyAtPyAvIC0tdXNhZ2U8L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpTaG93IGhlbHAgbWVzc2FnZS4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tYWJpIC8gLWEgW2ZpbGVuYW1lXTwvY29kZT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+CklucHV0IGFiaSBmaWxlIGRlc2NyaXB0aW9uIGxvY2F0aW9uLgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1mb3JjZSAvIC1mPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KRm9yY2UgY29udmVyc2lvbiBldmVuIGlmIHRoZSBpbnB1dCBhbmQgb3V0cHV0IGFiaSBhcmUgaWRlbnRpY2FsLgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1vdXRwdXQgLyAtbyBbZmlsZW5hbWVdPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KU3BlY2lmeSB0aGUgb3V0cHV0IGZpbGVuYW1lLiBJZiB0aGUgb3V0cHV0IGZpbGUgYWxyZWFkeSBleGlzdHMsIHRoZSBmaWxlIGlzCm5vdCBvdmVyd3JpdHRlbiBidXQgZGF0YSBhcmUgYWNjdW11bGF0ZWQgaW4uIFNhbXBsZSBmaWxlbmFtZSBhcmUgaW5mb3JtYXRpdmUKZm9yIHBvc3QgcHJvZmlsZSB0b29scyBhbmQgbXVzdCBiZSBrZXB0IGlkZW50aWNhbCwgaW4gb3RoZXIgd29yZCB0aGUgcGF0aG5hbWUKZnJvbSB0aGUgZmlyc3QgcGF0aCBjb21wb25lbnQgY29udGFpbmluZyBhICd7JyBtdXN0IGJlIGtlcHQgYXMgaXQgaW4gdGhlCm91dHB1dCBmaWxlbmFtZS4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tdmVyYm9zZSAvIC1WPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KR2l2ZSB2ZXJib3NlIGRlYnVnZ2luZyBvdXRwdXQuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXZlcnNpb24gLyAtdjwvY29kZT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+ClNob3cgdmVyc2lvbi4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2hhcHRlciIgdGl0bGU9IkNoYXB0ZXKgNS6gSW50ZXJwcmV0aW5nIHByb2ZpbGluZyByZXN1bHRzIj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIj48YSBpZD0iaW50ZXJwcmV0aW5nIj48L2E+Q2hhcHRlcqA1LqBJbnRlcnByZXRpbmcgcHJvZmlsaW5nIHJlc3VsdHM8L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InRvYyI+CiAgICAgICAgICA8cD4KICAgICAgICAgICAgPGI+VGFibGUgb2YgQ29udGVudHM8L2I+CiAgICAgICAgICA8L3A+CiAgICAgICAgICA8ZGw+CiAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI2lycS1sYXRlbmN5Ij4xLiBQcm9maWxpbmcgaW50ZXJydXB0IGxhdGVuY3k8L2E+CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2R0PgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNrZXJuZWwtcHJvZmlsaW5nIj4yLiBLZXJuZWwgcHJvZmlsaW5nPC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjaXJxLW1hc2tpbmciPjIuMS4gSW50ZXJydXB0IG1hc2tpbmc8L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2lkbGUiPjIuMi4gSWRsZSB0aW1lPC9hPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNrZXJuZWwtbW9kdWxlcyI+Mi4zLiBQcm9maWxpbmcga2VybmVsIG1vZHVsZXM8L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjaW50ZXJwcmV0aW5nLWNhbGxncmFwaCI+My4gSW50ZXJwcmV0aW5nIGNhbGwtZ3JhcGggcHJvZmlsZXM8L2E+CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2R0PgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNkZWJ1Zy1pbmZvIj40LiBJbmFjY3VyYWNpZXMgaW4gYW5ub3RhdGVkIHNvdXJjZTwvYT4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2VmZmVjdC1vZi1vcHRpbWl6YXRpb25zIj40LjEuIFNpZGUgZWZmZWN0cyBvZiBvcHRpbWl6YXRpb25zPC9hPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNwcm9sb2d1ZXMiPjQuMi4gUHJvbG9ndWVzIGFuZCBlcGlsb2d1ZXM8L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2lubGluZWQtZnVuY3Rpb24iPjQuMy4gSW5saW5lZCBmdW5jdGlvbnM8L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3dyb25nLWxpbmVuci1pbmZvIj40LjQuIEluYWNjdXJhY3kgaW4gbGluZSBudW1iZXIgaW5mb3JtYXRpb248L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc3ltYm9sLXdpdGhvdXQtZGVidWctaW5mbyI+NS4gQXNzZW1ibHkgZnVuY3Rpb25zPC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjb3ZlcmxhcHBpbmctc3ltYm9scyI+Ni4gT3ZlcmxhcHBpbmcgc3ltYm9scyBpbiBKSVRlZCBjb2RlPC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjaW50ZXJwcmV0aW5nX29wZXJmX3Jlc3VsdHMiPjcuIFVzaW5nIG9wZXJmIHRvIHByb2ZpbGUgZm9yay9leGVjczwvYT4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI2hpZGRlbi1jb3N0Ij44LiBPdGhlciBkaXNjcmVwYW5jaWVzPC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgIDwvZGw+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPHA+ClRoZSBzdGFuZGFyZCBjYXZlYXRzIG9mIHByb2ZpbGluZyBhcHBseSBpbiBpbnRlcnByZXRpbmcgdGhlIHJlc3VsdHMgZnJvbSBPUHJvZmlsZToKcHJvZmlsZSByZWFsaXN0aWMgc2l0dWF0aW9ucywgcHJvZmlsZSBkaWZmZXJlbnQgc2NlbmFyaW9zLCBwcm9maWxlCmZvciBhcyBsb25nIGFzIGEgdGltZSBhcyBwb3NzaWJsZSwgYXZvaWQgc3lzdGVtLXNwZWNpZmljIGFydGlmYWN0cywgZG9uJ3QgdHJ1c3QKdGhlIHByb2ZpbGUgZGF0YSB0b28gbXVjaC4gQWxzbyBiZWFyIGluIG1pbmQgdGhlIGNvbW1lbnRzIG9uIHRoZSBwZXJmb3JtYW5jZQpjb3VudGVycyBhYm92ZSAtIHlvdSA8c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT5jYW5ub3Q8L2VtPjwvc3Bhbj4gcmVseSBvbiB0b3RhbGx5IGFjY3VyYXRlCmluc3RydWN0aW9uLWxldmVsIHByb2ZpbGluZy4gIEhvd2V2ZXIsIGZvciBhbG1vc3QgYWxsIGNpcmN1bXN0YW5jZXMgdGhlIGRhdGEKY2FuIGJlIHVzZWZ1bC4gSWRlYWxseSBhIHV0aWxpdHkgc3VjaCBhcyBJbnRlbCdzIFZUVU5FIHdvdWxkIGJlIGF2YWlsYWJsZSB0bwphbGxvdyBjYXJlZnVsIGluc3RydWN0aW9uLWxldmVsIGFuYWx5c2lzOyBnbyBoYXNzbGUgSW50ZWwgZm9yIHRoaXMsIG5vdCBtZSA7KQo8L3A+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIHRpdGxlPSIxLqBQcm9maWxpbmcgaW50ZXJydXB0IGxhdGVuY3kiPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBpZD0iaXJxLWxhdGVuY3kiPjwvYT4xLqBQcm9maWxpbmcgaW50ZXJydXB0IGxhdGVuY3k8L2gyPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHA+ClRoaXMgaXMgYW4gZXhhbXBsZSBvZiBob3cgdGhlIGxhdGVuY3kgb2YgZGVsaXZlcnkgb2YgcHJvZmlsaW5nIGludGVycnVwdHMKY2FuIGltcGFjdCB0aGUgcmVsaWFiaWxpdHkgb2YgdGhlIHByb2ZpbGluZyBkYXRhLiBUaGlzIGlzIHByZXR0eSBtdWNoIGEgCndvcnN0LWNhc2Utc2NlbmFyaW8gZXhhbXBsZTogdGhlc2UgcHJvYmxlbXMgYXJlIGZhaXJseSByYXJlLgo8L3A+CiAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj4KZG91YmxlIGZ1bihkb3VibGUgYSwgZG91YmxlIGIsIGRvdWJsZSBjKQp7CiBkb3VibGUgcmVzdWx0ID0gMDsKIGZvciAoaW50IGkgPSAwIDsgaSAmbHQ7IDEwMDAwOyArK2kpIHsKICByZXN1bHQgKz0gYTsKICByZXN1bHQgKj0gYjsKICByZXN1bHQgLz0gYzsKIH0KIHJldHVybiByZXN1bHQ7Cn0KPC9wcmU+CiAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8cD4KSGVyZSB0aGUgbGFzdCBpbnN0cnVjdGlvbiBvZiB0aGUgbG9vcCBpcyB2ZXJ5IGNvc3RseSwgYW5kIHlvdSB3b3VsZCBleHBlY3QgdGhlIHJlc3VsdApyZWZsZWN0aW5nIHRoYXQgLSBidXQgKGN1dHRpbmcgdGhlIGluc3RydWN0aW9ucyBpbnNpZGUgdGhlIGxvb3ApOgo8L3A+CiAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj4KJCBvcGFubm90YXRlIC1hIC10IDEwIC4vYS5vdXQKCiAgICAgODggMTUuMzglIDogODA0ODMzNzogICAgICAgZmFkZCAgICVzdCgzKSwlc3QKICAgICA0OCA4LjM5MSUgOiA4MDQ4MzM5OiAgICAgICBmbXVsICAgJXN0KDIpLCVzdAogICAgIDY4IDExLjg4JSA6IDgwNDgzM2I6ICAgICAgIGZkaXYgICAlc3QoMSksJXN0CiAgICAzNjggNjQuMzMlIDogODA0ODMzZDogICAgICAgaW5jICAgICVlYXgKICAgICAgICAgICAgICAgOiA4MDQ4MzNlOiAgICAgICBjbXAgICAgJDB4MjcwZiwlZWF4CiAgICAgICAgICAgICAgIDogODA0ODM0MzogICAgICAgamxlICAgIDgwNDgzMzcKPC9wcmU+CiAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8cD4KVGhlIHByb2JsZW0gY29tZXMgZnJvbSB0aGUgeDg2IGhhcmR3YXJlOyB3aGVuIHRoZSBjb3VudGVyIG92ZXJmbG93cyB0aGUgSVJRCmlzIGFzc2VydGVkIGJ1dCB0aGUgaGFyZHdhcmUgaGFzIGZlYXR1cmVzIHRoYXQgY2FuIGRlbGF5IHRoZSBOTUkgaW50ZXJydXB0Ogp4ODYgaGFyZHdhcmUgaXMgc3luY2hyb25vdXMgKGkuZS4gY2Fubm90IGludGVycnVwdCBkdXJpbmcgYW4gaW5zdHJ1Y3Rpb24pOwp0aGVyZSBpcyBhbHNvIGEgbGF0ZW5jeSB3aGVuIHRoZSBJUlEgaXMgYXNzZXJ0ZWQsIGFuZCB0aGUgbXVsdGlwbGUKZXhlY3V0aW9uIHVuaXRzIGFuZCB0aGUgb3V0LW9mLW9yZGVyIG1vZGVsIG9mIG1vZGVybiB4ODYgQ1BVcyBhbHNvIGNhdXNlcwpwcm9ibGVtcy4gVGhpcyBpcyB0aGUgc2FtZSBmdW5jdGlvbiwgd2l0aCBhbm5vdGF0aW9uIDoKPC9wPgogICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+CiQgb3Bhbm5vdGF0ZSAtcyAtdCAxMCAuL2Eub3V0CgogICAgICAgICAgICAgICA6ZG91YmxlIGZ1bihkb3VibGUgYSwgZG91YmxlIGIsIGRvdWJsZSBjKQogICAgICAgICAgICAgICA6eyAvKiBfWjNmdW5kZGQgdG90YWw6ICAgICA1NzIgMTAwLjAlICovCiAgICAgICAgICAgICAgIDogZG91YmxlIHJlc3VsdCA9IDA7CiAgICAzNjggNjQuMzMlIDogZm9yIChpbnQgaSA9IDAgOyBpICZsdDsgMTAwMDA7ICsraSkgewogICAgIDg4IDE1LjM4JSA6ICByZXN1bHQgKz0gYTsKICAgICA0OCA4LjM5MSUgOiAgcmVzdWx0ICo9IGI7CiAgICAgNjggMTEuODglIDogIHJlc3VsdCAvPSBjOwogICAgICAgICAgICAgICA6IH0KICAgICAgICAgICAgICAgOiByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgICA6fQo8L3ByZT4KICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgPC90YWJsZT4KICAgICAgICAgIDxwPgpUaGUgY29uY2x1c2lvbjogZG9uJ3QgdHJ1c3Qgc2FtcGxlcyBjb21pbmcgYXQgdGhlIGVuZCBvZiBhIGxvb3AsCnBhcnRpY3VsYXJseSBpZiB0aGUgbGFzdCBpbnN0cnVjdGlvbiBnZW5lcmF0ZWQgYnkgdGhlIGNvbXBpbGVyIGlzIGNvc3RseS4gVGhpcwpjYXNlIGNhbiBhbHNvIG9jY3VyIGZvciBicmFuY2hlcy4gQWx3YXlzIGJlYXIgaW4gbWluZCB0aGF0IHNhbXBsZXMKY2FuIGJlIGRlbGF5ZWQgYnkgYSBmZXcgY3ljbGVzIGZyb20gaXRzIHJlYWwgcG9zaXRpb24uIFRoYXQncyBhIGhhcmR3YXJlCnByb2JsZW0gYW5kIE9Qcm9maWxlIGNhbiBkbyBub3RoaW5nIGFib3V0IGl0Lgo8L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIHRpdGxlPSIyLqBLZXJuZWwgcHJvZmlsaW5nIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+PGEgaWQ9Imtlcm5lbC1wcm9maWxpbmciPjwvYT4yLqBLZXJuZWwgcHJvZmlsaW5nPC9oMj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QyIiB0aXRsZT0iMi4xLqBJbnRlcnJ1cHQgbWFza2luZyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJpcnEtbWFza2luZyI+PC9hPjIuMS6gSW50ZXJydXB0IG1hc2tpbmc8L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cD4KT1Byb2ZpbGUgdXNlcyBub24tbWFza2FibGUgaW50ZXJydXB0cyAoTk1JKSBvbiB0aGUgUDYgZ2VuZXJhdGlvbiwgUGVudGl1bSA0LApBdGhsb24sIE9wdGVyb24sIFBoZW5vbSwgYW5kIFR1cmlvbiBwcm9jZXNzb3JzLiBUaGVzZSBpbnRlcnJ1cHRzIGNhbiBvY2N1ciBldmVuIGluIHNlY3Rpb25zIG9mIHRoZQprZXJuZWwgd2hlcmUgaW50ZXJydXB0cyBhcmUgZGlzYWJsZWQsIGFsbG93aW5nIGNvbGxlY3Rpb24gb2Ygc2FtcGxlcyBpbiB2aXJ0dWFsbHkKYWxsIGV4ZWN1dGFibGUgY29kZS4gIFRoZSB0aW1lciBpbnRlcnJ1cHQgbW9kZSBhbmQgSXRhbml1bSAyIGNvbGxlY3Rpb24gbWVjaGFuaXNtcwp1c2UgbWFza2FibGUgaW50ZXJydXB0czsgdGhlcmVmb3JlLCB0aGVzZSBwcm9maWxpbmcgbWVjaGFuaXNtcyBoYXZlICJzYW1wbGUKc2hhZG93cyIsIG9yIGJsaW5kIHNwb3RzOiByZWdpb25zIHdoZXJlIG5vIHNhbXBsZXMgd2lsbCBiZSBjb2xsZWN0ZWQuIFR5cGljYWxseSwgdGhlIHNhbXBsZXMKd2lsbCBiZSBhdHRyaWJ1dGVkIHRvIHRoZSBjb2RlIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBpbnRlcnJ1cHRzIGFyZSByZS1lbmFibGVkLgo8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QyIiB0aXRsZT0iMi4yLqBJZGxlIHRpbWUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj48YSBpZD0iaWRsZSI+PC9hPjIuMi6gSWRsZSB0aW1lPC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHA+CllvdXIga2VybmVsIGlzIGxpa2VseSB0byBzdXBwb3J0IGhhbHRpbmcgdGhlIHByb2Nlc3NvciB3aGVuIGEgQ1BVIGlzIGlkbGUuIEFzCnRoZSB0eXBpY2FsIGhhcmR3YXJlIGV2ZW50cyBsaWtlIDxjb2RlIGNsYXNzPSJjb25zdGFudCI+Q1BVX0NMS19VTkhBTFRFRDwvY29kZT4gZG8gbm90CmNvdW50IHdoZW4gdGhlIENQVSBpcyBoYWx0ZWQsIHRoZSBrZXJuZWwgcHJvZmlsZSB3aWxsIG5vdCByZWZsZWN0IHRoZSBhY3R1YWwKYW1vdW50IG9mIHRpbWUgc3BlbnQgaWRsZS4gWW91IGNhbiBjaGFuZ2UgdGhpcyBiZWhhdmlvdXIgYnkgYm9vdGluZyB3aXRoCnRoZSA8Y29kZSBjbGFzcz0ib3B0aW9uIj5pZGxlPXBvbGw8L2NvZGU+IG9wdGlvbiwgd2hpY2ggdXNlcyBhIGRpZmZlcmVudCBpZGxlIHJvdXRpbmUuIFRoaXMKd2lsbCBhcHBlYXIgYXMgPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5wb2xsX2lkbGUoKTwvY29kZT4gaW4geW91ciBrZXJuZWwgcHJvZmlsZS4KPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgdGl0bGU9IjIuMy6gUHJvZmlsaW5nIGtlcm5lbCBtb2R1bGVzIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9Imtlcm5lbC1tb2R1bGVzIj48L2E+Mi4zLqBQcm9maWxpbmcga2VybmVsIG1vZHVsZXM8L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cD4KT1Byb2ZpbGUgcHJvZmlsZXMga2VybmVsIG1vZHVsZXMgYnkgZGVmYXVsdC4gSG93ZXZlciwgdGhlcmUgYXJlIGEgY291cGxlIG9mIHByb2JsZW1zCnlvdSBtYXkgaGF2ZSB3aGVuIHRyeWluZyB0byBnZXQgcmVzdWx0cy4gRmlyc3QsIHlvdSBtYXkgaGF2ZSBib290ZWQgdmlhIGFuIGluaXRyZDsKdGhpcyBtZWFucyB0aGF0IHRoZSBhY3R1YWwgcGF0aCBmb3IgdGhlIG1vZHVsZSBiaW5hcmllcyBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBhdXRvbWF0aWNhbGx5LgpUbyBnZXQgYXJvdW5kIHRoaXMsIHlvdSBjYW4gdXNlIHRoZSA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tcDwvY29kZT4gb3B0aW9uIHRvIHRoZSBwcm9maWxpbmcgdG9vbHMKdG8gc3BlY2lmeSB3aGVyZSB0byBsb29rIGZvciB0aGUga2VybmVsIG1vZHVsZXMuCjwvcD4KICAgICAgICAgICAgPHA+CkluIGtlcm5lbCB2ZXJzaW9uIDIuNiwgdGhlIGluZm9ybWF0aW9uIG9uIHdoZXJlIGtlcm5lbCBtb2R1bGUgYmluYXJpZXMgYXJlIGxvY2F0ZWQgd2FzIHJlbW92ZWQuClRoaXMgbWVhbnMgT1Byb2ZpbGUgbmVlZHMgZ3VpZGluZyB3aXRoIHRoZSA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tcDwvY29kZT4gb3B0aW9uIHRvIGZpbmQgeW91cgptb2R1bGVzLiBOb3JtYWxseSwgeW91IGNhbiBqdXN0IHVzZSB5b3VyIHN0YW5kYXJkIG1vZHVsZSB0b3AtbGV2ZWwgZGlyZWN0b3J5IGZvciB0aGlzLgpOb3RlIHRoYXQgZHVlIHRvIHRoaXMgcHJvYmxlbSwgT1Byb2ZpbGUgY2Fubm90IGNoZWNrIHRoYXQgdGhlIG1vZGlmaWNhdGlvbiB0aW1lcyBtYXRjaDsKaXQgaXMgeW91ciByZXNwb25zaWJpbGl0eSB0byBtYWtlIHN1cmUgeW91IGRvIG5vdCBtb2RpZnkgYSBiaW5hcnkgYWZ0ZXIgYSBwcm9maWxlCmhhcyBiZWVuIGNyZWF0ZWQuCjwvcD4KICAgICAgICAgICAgPHA+CklmIHlvdSBoYXZlIHJ1biA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5pbnNtb2Q8L3N0cm9uZz48L3NwYW4+IG9yIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm1vZHByb2JlPC9zdHJvbmc+PC9zcGFuPiB0byBpbnNlcnQgYSBtb2R1bGUKaW4gYSBwYXJ0aWN1bGFyIGRpcmVjdG9yeSwgaXQgaXMgaW1wb3J0YW50IHRoYXQgeW91IHNwZWNpZnkgdGhpcyBkaXJlY3Rvcnkgd2l0aCB0aGUgCjxjb2RlIGNsYXNzPSJvcHRpb24iPi1wPC9jb2RlPiBvcHRpb24gZmlyc3QsIHNvIHRoYXQgaXQgb3Zlci1yaWRlcyBhbiBvbGRlciBtb2R1bGUgYmluYXJ5IHRoYXQgbWlnaHQKZXhpc3QgaW4gb3RoZXIgZGlyZWN0b3JpZXMgeW91J3ZlIHNwZWNpZmllZCB3aXRoIDxjb2RlIGNsYXNzPSJvcHRpb24iPi1wPC9jb2RlPi4gSXQgaXMgdXAgdG8geW91CnRvIG1ha2Ugc3VyZSB0aGF0IHRoZXNlIHZhbHVlcyBhcmUgY29ycmVjdDogdGhlIGtlcm5lbCBzaW1wbHkgZG9lcyBub3QgcHJvdmlkZSBlbm91Z2gKaW5mb3JtYXRpb24gZm9yIE9Qcm9maWxlIHRvIGdldCB0aGlzIGluZm9ybWF0aW9uLgo8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MSIgdGl0bGU9IjMuoEludGVycHJldGluZyBjYWxsLWdyYXBoIHByb2ZpbGVzIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+PGEgaWQ9ImludGVycHJldGluZy1jYWxsZ3JhcGgiPjwvYT4zLqBJbnRlcnByZXRpbmcgY2FsbC1ncmFwaCBwcm9maWxlczwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cD4KU29tZXRpbWVzIHRoZSByZXN1bHRzIGZyb20gY2FsbC1ncmFwaCBwcm9maWxlcyBtYXkgYmUgZGlmZmVyZW50IHRvIHdoYXQKeW91IGV4cGVjdCB0byBzZWUuIFRoZSBmaXJzdCB0aGluZyB0byBjaGVjayBpcyB3aGV0aGVyIHRoZSB0YXJnZXQKYmluYXJpZXMgd2hlcmUgY29tcGlsZWQgd2l0aCBmcmFtZSBwb2ludGVycyBlbmFibGVkIChpZiB0aGUgYmluYXJ5IHdhcwpjb21waWxlZCB1c2luZyA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5nY2M8L3N0cm9uZz48L3NwYW4+J3MKPGNvZGUgY2xhc3M9Im9wdGlvbiI+LWZvbWl0LWZyYW1lLXBvaW50ZXI8L2NvZGU+IG9wdGlvbiwgeW91IHdpbGwgbm90IGdldAptZWFuaW5nZnVsIHJlc3VsdHMpLiBOb3RlIHRoYXQgYXMgb2YgdGhpcyB3cml0aW5nLCB0aGUgR0NDIGRldmVsb3BlcnMKcGxhbiB0byBkaXNhYmxlIGZyYW1lIHBvaW50ZXJzIGJ5IGRlZmF1bHQuIFRoZSBMaW51eCBrZXJuZWwgaXMgYnVpbHQKd2l0aG91dCBmcmFtZSBwb2ludGVycyBieSBkZWZhdWx0OyB0aGVyZSBpcyBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHlvdQpjYW4gdXNlIHRvIHR1cm4gaXQgb24gdW5kZXIgdGhlICJLZXJuZWwgSGFja2luZyIgbWVudS4KPC9wPgogICAgICAgICAgPHA+Ck9mdGVuIHlvdSBtYXkgc2VlIGEgY2FsbGVyIG9mIGEgZnVuY3Rpb24gdGhhdCBkb2VzIG5vdCBhY3R1YWxseSBkaXJlY3RseQpjYWxsIHRoZSBmdW5jdGlvbiB5b3UncmUgbG9va2luZyBhdCAoZS5nLiBpZiA8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmEoKTwvY29kZT4KY2FsbHMgPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5iKCk8L2NvZGU+LCB3aGljaCBpbiB0dXJuIGNhbGxzCjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+YygpPC9jb2RlPiwgeW91IG1heSBzZWUgYW4gZW50cnkgZm9yCjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+YSgpLSZndDtjKCk8L2NvZGU+KS4gIFdoYXQncyBhY3R1YWxseSBvY2N1cnJpbmcgaXMgdGhhdCB3ZQphcmUgdGFraW5nIHNhbXBsZXMgYXQgdGhlIHZlcnkgc3RhcnQgKG9yIHRoZSB2ZXJ5IGVuZCkgb2YKPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5jKCk8L2NvZGU+OyBhdCB0aGVzZSBmZXcgaW5zdHJ1Y3Rpb25zLCB3ZSBoYXZlbid0IHlldApjcmVhdGVkIHRoZSBuZXcgZnVuY3Rpb24ncyBmcmFtZSwgc28gaXQgYXBwZWFycyBhcyBpZgo8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmEoKTwvY29kZT4gaXMgY2FsbGluZyBkaXJlY3RseSBpbnRvCjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+YygpPC9jb2RlPi4gQmUgY2FyZWZ1bCBub3QgdG8gYmUgbWlzbGVkIGJ5IHRoZXNlCmVudHJpZXMuCjwvcD4KICAgICAgICAgIDxwPgpMaWtlIHRoZSByZXN0IG9mIE9Qcm9maWxlLCBjYWxsLWdyYXBoIHByb2ZpbGluZyB1c2VzIGEgc3RhdGlzdGljYWwKYXBwcm9hY2g7IHRoaXMgbWVhbnMgdGhhdCBzb21ldGltZXMgYSBiYWNrdHJhY2Ugc2FtcGxlIGlzIHRydW5jYXRlZCwgb3IKZXZlbiBwYXJ0aWFsbHkgd3JvbmcuIEJlYXIgdGhpcyBpbiBtaW5kIHdoZW4gZXhhbWluaW5nIHJlc3VsdHMuCjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MSIgdGl0bGU9IjQuoEluYWNjdXJhY2llcyBpbiBhbm5vdGF0ZWQgc291cmNlIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+PGEgaWQ9ImRlYnVnLWluZm8iPjwvYT40LqBJbmFjY3VyYWNpZXMgaW4gYW5ub3RhdGVkIHNvdXJjZTwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgdGl0bGU9IjQuMS6gU2lkZSBlZmZlY3RzIG9mIG9wdGltaXphdGlvbnMiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj48YSBpZD0iZWZmZWN0LW9mLW9wdGltaXphdGlvbnMiPjwvYT40LjEuoFNpZGUgZWZmZWN0cyBvZiBvcHRpbWl6YXRpb25zPC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHA+ClRoZSBjb21waWxlciBjYW4gaW50cm9kdWNlIHNvbWUgcGl0ZmFsbHMgaW4gdGhlIGFubm90YXRlZCBzb3VyY2Ugb3V0cHV0LgpUaGUgb3B0aW1pemVyIGNhbiBtb3ZlIHBpZWNlcyBvZiBjb2RlIGluIHN1Y2ggbWFubmVyIHRoYXQgdHdvIGxpbmUgb2YgY29kZXMKYXJlIGludGVybGFjZWQgKGluc3RydWN0aW9uIHNjaGVkdWxpbmcpLiBBbHNvIGRlYnVnIGluZm8gZ2VuZXJhdGVkIGJ5IHRoZSBjb21waWxlciAKY2FuIHNob3cgc3RyYW5nZSBiZWhhdmlvci4gVGhpcyBpcyBlc3BlY2lhbGx5IHRydWUgZm9yIGNvbXBsZXggZXhwcmVzc2lvbnMgZS5nLiBpbnNpZGUKYW4gaWYgc3RhdGVtZW50Ogo8L3A+CiAgICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPgoJaWYgKGEgJmFtcDsmYW1wOyAuLgoJICAgIGIgJmFtcDsmYW1wOyAuLgoJICAgIGMgJmFtcDsmYW1wOykKPC9wcmU+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDxwPgpoZXJlIHRoZSBwcm9ibGVtIGNvbWUgZnJvbSB0aGUgcG9zaXRpb24gb2YgbGluZSBudW1iZXIuIFRoZSBhdmFpbGFibGUgZGVidWcKaW5mbyBkb2VzIG5vdCBnaXZlIGVub3VnaCBkZXRhaWxzIGZvciB0aGUgaWYgY29uZGl0aW9uLCBzbyBhbGwgc2FtcGxlcyBhcmUKYWNjdW11bGF0ZWQgYXQgdGhlIHBvc2l0aW9uIG9mIHRoZSByaWdodCBicmFjZSBvZiB0aGUgZXhwcmVzc2lvbi4gVXNpbmcKPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3Bhbm5vdGF0ZSA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tYTwvY29kZT48L3N0cm9uZz48L3NwYW4+IGNhbiBoZWxwIHRvIHNob3cgdGhlIHJlYWwKc2FtcGxlcyBhdCBhbiBhc3NlbWJseSBsZXZlbC4KPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgdGl0bGU9IjQuMi6gUHJvbG9ndWVzIGFuZCBlcGlsb2d1ZXMiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj48YSBpZD0icHJvbG9ndWVzIj48L2E+NC4yLqBQcm9sb2d1ZXMgYW5kIGVwaWxvZ3VlczwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwPgpUaGUgY29tcGlsZXIgZ2VuZXJhbGx5IG5lZWRzIHRvIGdlbmVyYXRlICJnbHVlIiBjb2RlIGFjcm9zcyBmdW5jdGlvbiBjYWxscywgZGVwZW5kZW50Cm9uIHRoZSBwYXJ0aWN1bGFyIGZ1bmN0aW9uIGNhbGwgY29udmVudGlvbnMgdXNlZC4gQWRkaXRpb25hbGx5IG90aGVyIHRoaW5ncwpuZWVkIHRvIGhhcHBlbiwgbGlrZSBzdGFjayBwb2ludGVyIGFkanVzdG1lbnQgZm9yIHRoZSBsb2NhbCB2YXJpYWJsZXM7IHRoaXMKY29kZSBpcyBrbm93biBhcyB0aGUgZnVuY3Rpb24gcHJvbG9ndWUuIFNpbWlsYXIgY29kZSBpcyBuZWVkZWQgYXQgZnVuY3Rpb24gcmV0dXJuLAphbmQgaXMga25vd24gYXMgdGhlIGZ1bmN0aW9uIGVwaWxvZ3VlLiBUaGlzIHdpbGwgc2hvdyB1cCBpbiBhbm5vdGF0aW9ucyBhcwpzYW1wbGVzIGF0IHRoZSB2ZXJ5IHN0YXJ0IGFuZCBlbmQgb2YgYSBmdW5jdGlvbiwgd2hlcmUgdGhlcmUgaXMgbm8gYXBwYXJlbnQKZXhlY3V0YWJsZSBjb2RlIGluIHRoZSBzb3VyY2UuCjwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDIiIHRpdGxlPSI0LjMuoElubGluZWQgZnVuY3Rpb25zIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9ImlubGluZWQtZnVuY3Rpb24iPjwvYT40LjMuoElubGluZWQgZnVuY3Rpb25zPC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHA+CllvdSBtYXkgc2VlIHRoYXQgYSBmdW5jdGlvbiBpcyBjcmVkaXRlZCB3aXRoIGEgY2VydGFpbiBudW1iZXIgb2Ygc2FtcGxlcywgYnV0CnRoZSBsaXN0aW5nIGRvZXMgbm90IGFkZCB1cCB0byB0aGUgY29ycmVjdCB0b3RhbC4gVG8gcGljayBhIHJlYWwgZXhhbXBsZSA6CjwvcD4KICAgICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+CiAgICAgICAgICAgICAgIDppbnRlcm5hbF9za19idWZmX2FsbG9jX3NlY3VyaXR5KHN0cnVjdCBza19idWZmICpza2IpCiAzNTMgMi4zNDIlICAgIDp7IC8qIGludGVybmFsX3NrX2J1ZmZfYWxsb2Nfc2VjdXJpdHkgdG90YWw6IDE4ODIgMTIuNDglICovCiAgICAgICAgICAgICAgIDoKICAgICAgICAgICAgICAgOiAgICAgICAgc2tfYnVmZl9zZWN1cml0eV90ICpza3NlYzsKICAxNSAwLjA5OTUlICAgOiAgICAgICAgaW50IHJjID0gMDsKICAgICAgICAgICAgICAgOgogIDEwIDAuMDY2MzMlICA6ICAgICAgICBza3NlYyA9IHNrYi0mZ3Q7bHNtX3NlY3VyaXR5OwogNDY4IDMuMTA0JSAgICA6ICAgICAgICBpZiAoc2tzZWMgJmFtcDsmYW1wOyBza3NlYy0mZ3Q7bWFnaWMgPT0gRFNJX01BR0lDKSB7CiAgICAgICAgICAgICAgIDogICAgICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgICAgICAgIDogICAgICAgIH0KICAgICAgICAgICAgICAgOgogICAgICAgICAgICAgICA6ICAgICAgICBza3NlYyA9IChza19idWZmX3NlY3VyaXR5X3QgKikgZ2V0X3NrX2J1ZmZfbWVtb3J5KHNrYik7CiAgIDMgMC4wMTk5JSAgIDogICAgICAgIGlmICghc2tzZWMpIHsKICAzOCAwLjI1MjElICAgOiAgICAgICAgICAgICAgICByYyA9IC1FTk9NRU07CiAgICAgICAgICAgICAgIDogICAgICAgICAgICAgICAgZ290byBvdXQ7CiAgMTAgMC4wNjYzMyUgIDogICAgICAgIH0KICAgICAgICAgICAgICAgOiAgICAgICAgbWVtc2V0KHNrc2VjLCAwLCBzaXplb2YgKHNrX2J1ZmZfc2VjdXJpdHlfdCkpOwogIDQ0IDAuMjkxOSUgICA6ICAgICAgICBza3NlYy0mZ3Q7bWFnaWMgPSBEU0lfTUFHSUM7CiAgMzIgMC4yMTIzJSAgIDogICAgICAgIHNrc2VjLSZndDtza2IgPSBza2I7CiAgNDUgMC4yOTg1JSAgIDogICAgICAgIHNrc2VjLSZndDtzaWQgPSBEU0lfU0lEX05PUk1BTDsKICAzMSAwLjIwNTYlICAgOiAgICAgICAgc2tiLSZndDtsc21fc2VjdXJpdHkgPSBza3NlYzsKICAgICAgICAgICAgICAgOgogICAgICAgICAgICAgICA6ICAgICAgb3V0OgogICAgICAgICAgICAgICA6CiAxNDYgMC45Njg1JSAgIDogICAgICAgIHJldHVybiByYzsKICAgICAgICAgICAgICAgOgogIDk4IDAuNjUwMSUgICA6fQo8L3ByZT4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPHA+CkhlcmUsIHRoZSBmdW5jdGlvbiBpcyBjcmVkaXRlZCB3aXRoIDEsODgyIHNhbXBsZXMsIGJ1dCB0aGUgYW5ub3RhdGlvbnMKYmVsb3cgZG8gbm90IGFjY291bnQgZm9yIHRoaXMuIFRoaXMgaXMgdXN1YWxseSBiZWNhdXNlIG9mIGlubGluZSBmdW5jdGlvbnMgLQp0aGUgY29tcGlsZXIgbWFya3Mgc3VjaCBjb2RlIHdpdGggZGVidWcgZW50cmllcyBmb3IgdGhlIGlubGluZSBmdW5jdGlvbgpkZWZpbml0aW9uLCBhbmQgdGhpcyBpcyB3aGVyZSA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGFubm90YXRlPC9zdHJvbmc+PC9zcGFuPiBhbm5vdGF0ZXMKc3VjaCBzYW1wbGVzLiBJbiB0aGUgY2FzZSBhYm92ZSwgPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5tZW1zZXQ8L2NvZGU+IGlzIHRoZSBtb3N0Cmxpa2VseSBjYW5kaWRhdGUgZm9yIHRoaXMgcHJvYmxlbS4gRXhhbWluaW5nIHRoZSBtaXhlZCBzb3VyY2UvYXNzZW1ibHkKb3V0cHV0IGNhbiBoZWxwIGlkZW50aWZ5IHN1Y2ggcmVzdWx0cy4KPC9wPgogICAgICAgICAgICA8cD4KVGhpcyBwcm9ibGVtIGlzIG1vcmUgdmlzaWJsZSB3aGVuIHRoZXJlIGlzIG5vIHNvdXJjZSBmaWxlIGF2YWlsYWJsZSwgaW4gdGhlCmZvbGxvd2luZyBleGFtcGxlIGl0J3MgdHJpdmlhbGx5IHZpc2libGUgdGhlIHN1bXMgb2Ygc3ltYm9scyBzYW1wbGVzIGlzIGxlc3MKdGhhbiB0aGUgbnVtYmVyIG9mIHRoZSBzYW1wbGVzIGZvciB0aGlzIGZpbGUuIFRoZSBkaWZmZXJlbmNlIG11c3QgYmUgYWNjb3VudGVkCnRvIGlubGluZSBmdW5jdGlvbnMuCjwvcD4KICAgICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+Ci8qCiAqIFRvdGFsIHNhbXBsZXMgZm9yIGZpbGUgOiAiYXJjaC9pMzg2L2tlcm5lbC9wcm9jZXNzLmMiCiAqCiAqICAgIDEwOSAgMi40NjE2CiAqLwoKIC8qIGRlZmF1bHRfaWRsZSB0b3RhbDogICAgIDg0ICAxLjg5NzAgKi8KIC8qIGNwdV9pZGxlIHRvdGFsOiAgICAgICAgIDIxICAwLjQ3NDMgKi8KIC8qIGZsdXNoX3RocmVhZCB0b3RhbDogICAgICAxICAwLjAyMjYgKi8KIC8qIHByZXBhcmVfdG9fY29weSB0b3RhbDogICAxICAwLjAyMjYgKi8KIC8qIF9fc3dpdGNoX3RvIHRvdGFsOiAgICAgIDE4ICAwLjQwNjUgKi8KPC9wcmU+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDxwPgpUaGUgbWlzc2luZyBzYW1wbGVzIGFyZSBub3QgbG9zdCwgdGhleSB3aWxsIGJlIGNyZWRpdGVkIHRvIGFub3RoZXIgc291cmNlCmxvY2F0aW9uIHdoZXJlIHRoZSBpbmxpbmVkIGZ1bmN0aW9uIGlzIGRlZmluZWQuIFRoZSBpbmxpbmVkIGZ1bmN0aW9uIHdpbGwgYmUKY3JlZGl0ZWQgZnJvbSBtdWx0aXBsZSBjYWxsIHNpdGUgYW5kIG1lcmdlZCBpbiBvbmUgcGxhY2UgaW4gdGhlIGFubm90YXRlZApzb3VyY2UgZmlsZSBzbyB0aGVyZSBpcyBubyB3YXkgdG8gc2VlIGZyb20gd2hhdCBjYWxsIHNpdGUgYXJlIGNvbWluZyB0aGUKc2FtcGxlcyBmb3IgYW4gaW5saW5lZCBmdW5jdGlvbi4KPC9wPgogICAgICAgICAgICA8cD4KV2hlbiBydW5uaW5nIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wYW5ub3RhdGU8L3N0cm9uZz48L3NwYW4+LCB5b3UgbWF5IGdldCBhIHdhcm5pbmcKInNvbWUgZnVuY3Rpb25zIGNvbXBpbGVkIHdpdGhvdXQgZGVidWcgaW5mb3JtYXRpb24gbWF5IGhhdmUgaW5jb3JyZWN0IHNvdXJjZSBsaW5lIGF0dHJpYnV0aW9ucyIuCkluIHNvbWUgcmFyZSBjYXNlcywgT1Byb2ZpbGUgaXMgbm90IGFibGUgdG8gdmVyaWZ5IHRoYXQgdGhlIGRlcml2ZWQgc291cmNlIGxpbmUKaXMgY29ycmVjdCAod2hlbiBzb21lIHBhcnRzIG9mIHRoZSBiaW5hcnkgaW1hZ2UgYXJlIGNvbXBpbGVkIHdpdGhvdXQgZGVidWdnaW5nCmluZm9ybWF0aW9uKS4gQmUgd2FyeSBvZiByZXN1bHRzIGlmIHRoaXMgd2FybmluZyBhcHBlYXJzLgo8L3A+CiAgICAgICAgICAgIDxwPgpGdXJ0aGVybW9yZSwgZm9yIHNvbWUgbGFuZ3VhZ2VzIHRoZSBjb21waWxlciBjYW4gaW1wbGljaXRseSBnZW5lcmF0ZSBmdW5jdGlvbnMsCnN1Y2ggYXMgZGVmYXVsdCBjb3B5IGNvbnN0cnVjdG9ycy4gU3VjaCBmdW5jdGlvbnMgYXJlIGxhYmVsbGVkIGJ5IHRoZSBjb21waWxlcgphcyBoYXZpbmcgYSBsaW5lIG51bWJlciBvZiAwLCB3aGljaCBtZWFucyB0aGUgc291cmNlIGFubm90YXRpb24gY2FuIGJlIGNvbmZ1c2luZy4KPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgdGl0bGU9IjQuNC6gSW5hY2N1cmFjeSBpbiBsaW5lIG51bWJlciBpbmZvcm1hdGlvbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJ3cm9uZy1saW5lbnItaW5mbyI+PC9hPjQuNC6gSW5hY2N1cmFjeSBpbiBsaW5lIG51bWJlciBpbmZvcm1hdGlvbjwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwPgpEZXBlbmRpbmcgb24geW91ciBjb21waWxlciB5b3UgY2FuIGZhbGwgaW50byB0aGUgZm9sbG93aW5nIHByb2JsZW06CjwvcD4KICAgICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+CnN0cnVjdCBiaWdfb2JqZWN0IHsgaW50IGFbNTAwXTsgfTsKCmludCBtYWluKCkKewoJYmlnX29iamVjdCBhLCBiOwoJZm9yIChpbnQgaSA9IDAgOyBpICE9IDEwMDAgKiAxMDAwOyArK2kpCgkJYiA9IGE7CglyZXR1cm4gMDsKfQoKPC9wcmU+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDxwPgpDb21waWxlZCB3aXRoIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPmdjYzwvc3Ryb25nPjwvc3Bhbj4gMy4wLjQgdGhlIGFubm90YXRlZCBzb3VyY2UgaXMgY2xlYXJseSBpbmFjY3VyYXRlOgo8L3A+CiAgICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPgogICAgICAgICAgICAgICA6aW50IG1haW4oKQogICAgICAgICAgICAgICA6eyAgLyogbWFpbiB0b3RhbDogNzg3MSAxMDAlICovCiAgICAgICAgICAgICAgIDogICAgICAgIGJpZ19vYmplY3QgYSwgYjsKICAgICAgICAgICAgICAgOiAgICAgICAgZm9yIChpbnQgaSA9IDAgOyBpICE9IDEwMDAgKiAxMDAwOyArK2kpCiAgICAgICAgICAgICAgIDogICAgICAgICAgICAgICAgYiA9IGE7CiA3ODcxIDEwMCUgICAgIDogICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICA6fQo8L3ByZT4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPHA+ClRoZSBwcm9ibGVtIGhlcmUgaXMgZGlzdGluY3QgZnJvbSB0aGUgSVJRIGxhdGVuY3kgcHJvYmxlbTsgdGhlIGRlYnVnIGxpbmUgbnVtYmVyCmluZm9ybWF0aW9uIGlzIG5vdCBwcmVjaXNlIGVub3VnaDsgYWdhaW4sIGxvb2tpbmcgYXQgb3V0cHV0IG9mIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wYW5ub2F0YXRlIC1hczwvc3Ryb25nPjwvc3Bhbj4gY2FuIGhlbHAuCjwvcD4KICAgICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+CiAgICAgICAgICAgICAgIDppbnQgbWFpbigpCiAgICAgICAgICAgICAgIDp7CiAgICAgICAgICAgICAgIDogICAgICAgIGJpZ19vYmplY3QgYSwgYjsKICAgICAgICAgICAgICAgOiAgICAgICAgZm9yIChpbnQgaSA9IDAgOyBpICE9IDEwMDAgKiAxMDAwOyArK2kpCiAgICAgICAgICAgICAgIDogODA0ODRjMDogICAgICAgcHVzaCAgICVlYnAKICAgICAgICAgICAgICAgOiA4MDQ4NGMxOiAgICAgICBtb3YgICAgJWVzcCwlZWJwCiAgICAgICAgICAgICAgIDogODA0ODRjMzogICAgICAgc3ViICAgICQweGZhYywlZXNwCiAgICAgICAgICAgICAgIDogODA0ODRjOTogICAgICAgcHVzaCAgICVlZGkKICAgICAgICAgICAgICAgOiA4MDQ4NGNhOiAgICAgICBwdXNoICAgJWVzaQogICAgICAgICAgICAgICA6IDgwNDg0Y2I6ICAgICAgIHB1c2ggICAlZWJ4CiAgICAgICAgICAgICAgIDogICAgICAgICAgICAgICAgYiA9IGE7CiAgICAgICAgICAgICAgIDogODA0ODRjYzogICAgICAgbGVhICAgIDB4ZmZmZmYwNjAoJWVicCksJWVkeAogICAgICAgICAgICAgICA6IDgwNDg0ZDI6ICAgICAgIGxlYSAgICAweGZmZmZmODMwKCVlYnApLCVlYXgKICAgICAgICAgICAgICAgOiA4MDQ4NGQ4OiAgICAgICBtb3YgICAgJDB4ZjQyM2YsJWVieAogICAgICAgICAgICAgICA6IDgwNDg0ZGQ6ICAgICAgIGxlYSAgICAweDAoJWVzaSksJWVzaQogICAgICAgICAgICAgICA6ICAgICAgICByZXR1cm4gMDsKICAgIDMgMC4wMzgxMSUgOiA4MDQ4NGUwOiAgICAgICBtb3YgICAgJWVkeCwlZWRpCiAgICAgICAgICAgICAgIDogODA0ODRlMjogICAgICAgbW92ICAgICVlYXgsJWVzaQogICAgMSAwLjAxMjclICA6IDgwNDg0ZTQ6ICAgICAgIGNsZAogICAgOCAwLjEwMTYlICA6IDgwNDg0ZTU6ICAgICAgIG1vdiAgICAkMHgxZjQsJWVjeAogNzg1MCA5OS43MyUgICA6IDgwNDg0ZWE6ICAgICAgIHJlcHogbW92c2wgJWRzOiglZXNpKSwlZXM6KCVlZGkpCiAgICA5IDAuMTE0MyUgIDogODA0ODRlYzogICAgICAgZGVjICAgICVlYngKICAgICAgICAgICAgICAgOiA4MDQ4NGVkOiAgICAgICBqbnMgICAgODA0ODRlMAogICAgICAgICAgICAgICA6IDgwNDg0ZWY6ICAgICAgIHhvciAgICAlZWF4LCVlYXgKICAgICAgICAgICAgICAgOiA4MDQ4NGYxOiAgICAgICBwb3AgICAgJWVieAogICAgICAgICAgICAgICA6IDgwNDg0ZjI6ICAgICAgIHBvcCAgICAlZXNpCiAgICAgICAgICAgICAgIDogODA0ODRmMzogICAgICAgcG9wICAgICVlZGkKICAgICAgICAgICAgICAgOiA4MDQ4NGY0OiAgICAgICBsZWF2ZQogICAgICAgICAgICAgICA6IDgwNDg0ZjU6ICAgICAgIHJldAo8L3ByZT4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPHA+ClNvIGhlcmUgaXQncyBjbGVhciB0aGF0IGNvcHlpbmcgaXMgY29ycmVjdGx5IGNyZWRpdGVkIHdpdGggb2YgYWxsIHRoZSBzYW1wbGVzLCBidXQgdGhlCmxpbmUgbnVtYmVyIGluZm9ybWF0aW9uIGlzIG1pc3BsYWNlZC4gPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b2JqZHVtcCAtZFM8L3N0cm9uZz48L3NwYW4+IGV4cG9zZXMgdGhlCnNhbWUgcHJvYmxlbS4gTm90ZSB0aGF0IG1haW50YWluaW5nIGFjY3VyYXRlIGRlYnVnIGluZm9ybWF0aW9uIGZvciBjb21waWxlcnMgd2hlbiBvcHRpbWl6aW5nIGlzIGRpZmZpY3VsdCwgc28gdGhpcyBwcm9ibGVtIGlzIG5vdCBzdXByaXNpbmcuClRoZSBwcm9ibGVtIG9mIGRlYnVnIGluZm9ybWF0aW9uCmFjY3VyYWN5IGlzIGFsc28gZGVwZW5kZW50IG9uIHRoZSBiaW51dGlscyB2ZXJzaW9uIHVzZWQ7IHNvbWUgQkZEIGxpYnJhcnkgdmVyc2lvbnMKY29udGFpbiBhIHdvcmstYXJvdW5kIGZvciBrbm93biBwcm9ibGVtcyBvZiA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5nY2M8L3N0cm9uZz48L3NwYW4+LCBzb21lIG90aGVycyBkbyBub3QuIFRoaXMgaXMgdW5mb3J0dW5hdGUgYnV0IHdlIG11c3QgbGl2ZSB3aXRoIHRoYXQsCnNpbmNlIHByb2ZpbGluZyBpcyBwb2ludGxlc3Mgd2hlbiB5b3UgZGlzYWJsZSBvcHRpbWlzYXRpb24gKHdoaWNoIHdvdWxkIGdpdmUgYmV0dGVyIGRlYnVnZ2luZyBlbnRyaWVzKS4KPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIHRpdGxlPSI1LqBBc3NlbWJseSBmdW5jdGlvbnMiPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBpZD0ic3ltYm9sLXdpdGhvdXQtZGVidWctaW5mbyI+PC9hPjUuoEFzc2VtYmx5IGZ1bmN0aW9uczwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cD4KT2Z0ZW4gdGhlIGFzc2VtYmxlciBjYW5ub3QgZ2VuZXJhdGUgZGVidWcgaW5mb3JtYXRpb24gYXV0b21hdGljYWxseS4KVGhpcyBtZWFucyB0aGF0IHlvdSBjYW5ub3QgZ2V0IGEgc291cmNlIHJlcG9ydCB1bmxlc3MgCnlvdSBtYW51YWxseSBkZWZpbmUgdGhlIG5lY2Nlc3NhcnkgZGVidWcgaW5mb3JtYXRpb247IHJlYWQgeW91ciBhc3NlbWJsZXIgZG9jdW1lbnRhdGlvbiBmb3IgaG93IHlvdSBtaWdodApkbyB0aGF0LiBUaGUgb25seQpkZWJ1Z2dpbmcgaW5mbyBuZWVkZWQgY3VycmVudGx5IGJ5IE9Qcm9maWxlIGlzIHRoZSBsaW5lLW51bWJlci9maWxlbmFtZS1WTUEgYXNzb2NpYXRpb24uIFdoZW4gcHJvZmlsaW5nIGFzc2VtYmx5CndpdGhvdXQgZGVidWdnaW5nIGluZm8geW91IGNhbiBhbHdheXMgZ2V0IHJlcG9ydCBmb3Igc3ltYm9scywgYW5kIG9wdGlvbmFsbHkgZm9yIFZNQSwgdGhyb3VnaCA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcHJlcG9ydCAtbDwvc3Ryb25nPjwvc3Bhbj4Kb3IgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3ByZXBvcnQgLWQ8L3N0cm9uZz48L3NwYW4+LCBidXQgdGhpcyB3b3JrcyBvbmx5IGZvciBzeW1ib2xzIHdpdGggdGhlIHJpZ2h0IGF0dHJpYnV0ZXMuCkZvciA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5nYXM8L3N0cm9uZz48L3NwYW4+IHlvdSBjYW4gZ2V0IHRoaXMgYnkKPC9wPgogICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+Ci5nbG9ibCBmb28KCS50eXBlCWZvbyxAZnVuY3Rpb24KPC9wcmU+CiAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8cD4gCndoaWxzdCBmb3IgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+bmFzbTwvc3Ryb25nPjwvc3Bhbj4geW91IG11c3QgdXNlCjwvcD4KICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPgoJICBHTE9CQUwgZm9vOmZ1bmN0aW9uCQk7IFsxXQo8L3ByZT4KICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgPC90YWJsZT4KICAgICAgICAgIDxwPgpOb3RlIHRoYXQgT1Byb2ZpbGUgZG9lcyBub3QgbmVlZCB0aGUgZ2xvYmFsIGF0dHJpYnV0ZSwgb25seSB0aGUgZnVuY3Rpb24gYXR0cmlidXRlLgo8L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIHRpdGxlPSI2LqBPdmVybGFwcGluZyBzeW1ib2xzIGluIEpJVGVkIGNvZGUiPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBpZD0ib3ZlcmxhcHBpbmctc3ltYm9scyI+PC9hPjYuoE92ZXJsYXBwaW5nIHN5bWJvbHMgaW4gSklUZWQgY29kZTwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cD4KCVNvbWUgdmlydHVhbCBtYWNoaW5lcyAoZS5nLiwgSmF2YSkgbWF5IHJlLUpJVCBhIG1ldGhvZCwgcmVzdWx0aW5nIGluIHByZXZpb3VzbHkKCWFsbG9jYXRlZCBzcGFjZSBmb3IgYSBwaWVjZSBvZiBjb21waWxlZCBjb2RlIHRvIGJlIHJldXNlZC4gVGhpcyBtZWFucyB0aGF0LCBhdCBvbmUgZGlzdGluY3QKCWNvZGUgYWRkcmVzcywgbXVsdGlwbGUgc3ltYm9scy9tZXRob2RzIG1heSBiZSBwcmVzZW50IGR1cmluZyB0aGUgcnVuIHRpbWUgb2YgdGhlIGFwcGxpY2F0aW9uLgoJPC9wPgogICAgICAgICAgPHA+CglTaW5jZSBPUHJvZmlsZSBzYW1wbGVzIGFyZSBidWZmZXJlZCBhbmQgZG9uJiM4MjQyO3QgaGF2ZSB0aW1pbmcgaW5mb3JtYXRpb24sIHRoZXJlIGlzIG5vIHdheQoJdG8gY29ycmVsYXRlIHNhbXBsZXMgd2l0aCB0aGUgKHBvc3NpYmx5KSB2YXJ5aW5nIGFkZHJlc3MgcmFuZ2VzIGluIHdoaWNoIHRoZSBjb2RlIGZvciBhIHN5bWJvbAoJbWF5IHJlc2lkZS4KCUFuIGFsdGVybmF0aXZlIHdvdWxkIGJlIGZsdXNoaW5nIHRoZSBPUHJvZmlsZSBzYW1wbGluZyBidWZmZXIgd2hlbiB3ZSBnZXQgYW4gdW5sb2FkIGV2ZW50LAoJYnV0IHRoaXMgY291bGQgcmVzdWx0IGluIGhpZ2ggb3ZlcmhlYWQuCgk8L3A+CiAgICAgICAgICA8cD4KCVRvIG1vZGVyYXRlIHRoZSBwcm9ibGVtIG9mIG92ZXJsYXBwaW5nIHN5bWJvbHMsIE9Qcm9maWxlIHRyaWVzIHRvIHNlbGVjdCB0aGUgc3ltYm9sIHRoYXQgd2FzCglwcmVzZW50IGF0IHRoaXMgYWRkcmVzcyByYW5nZSBtb3N0IG9mIHRoZSB0aW1lLiBBZGRpdGlvbmFsbHksIG90aGVyIG92ZXJsYXBwaW5nIHN5bWJvbHMKCWFyZSB0cnVuY2F0ZWQgaW4gdGhlIG92ZXJsYXBwaW5nIGFyZWEuCglUaGlzIGdpdmVzIHJlYXNvbmFibGUgcmVzdWx0cywgYmVjYXVzZSBpbiByZWFsaXR5LCBhZGRyZXNzIHJldXNlIHR5cGljYWxseSB0YWtlcyBwbGFjZQoJZHVyaW5nIHBoYXNlIGNoYW5nZXMgb2YgdGhlIGFwcGxpY2F0aW9uIC0tIGluIHBhcnRpY3VsYXIsIGR1cmluZyBhcHBsaWNhdGlvbiAgc3RhcnR1cC4KCVRodXMsIGZvciBvcHRpbXVtIHByb2ZpbGluZyByZXN1bHRzLCBzdGFydCB0aGUgc2FtcGxpbmcgc2Vzc2lvbiBhZnRlciBhcHBsaWNhdGlvbiBzdGFydHVwCglhbmQgYnVybiBpbi4KCTwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MSIgdGl0bGU9IjcuoFVzaW5nIG9wZXJmIHRvIHByb2ZpbGUgZm9yay9leGVjcyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIGlkPSJpbnRlcnByZXRpbmdfb3BlcmZfcmVzdWx0cyI+PC9hPjcuoFVzaW5nIG9wZXJmIHRvIHByb2ZpbGUgZm9yay9leGVjczwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cD4KV2hlbiBwcm9maWxpbmcgYW4gYXBwbGljYXRpb24gdGhhdCBmb3JrcyBvbmUgb3IgbW9yZSBuZXcgcHJvY2Vzc2VzLCA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGVyZjwvc3Ryb25nPjwvc3Bhbj4gd2lsbApyZWNvcmQgc2FtcGxlcyBmb3IgYm90aCB0aGUgcGFyZW50IHByb2Nlc3MgYW5kIGZvcmtlZCBwcm9jZXNzZXMuIFRoaXMgaXMgYWxzbyB0cnVlIGV2ZW4gaWYgdGhlCmZvcmtlZCBwcm9jZXNzIHBlcmZvcm1zIGFuIGV4ZWMgb2Ygc29tZSBzb3J0IChlLmcuLCA8Y29kZSBjbGFzcz0iY29kZSI+ZXhlY3ZwPC9jb2RlPikuIElmIHRoZQpwcm9jZXNzIGRvZXMgPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+bm90PC9lbT48L3NwYW4+IHBlcmZvcm0gYW4gZXhlYywgeW91IHdpbGwgc2VlIHRoYXQgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3ByZXBvcnQ8L3N0cm9uZz48L3NwYW4+CndpbGwgYXR0cmlidXRlIHNhbXBsZXMgZm9yIHRoZSBmb3JrZWQgcHJvY2VzcyB0byB0aGUgbWFpbiBhcHBsaWNhdGlvbiBleGVjdXRhYmxlLiAgT24gdGhlIG90aGVyCmhhbmQsIGlmIHRoZSBmb3JrZWQgcHJvY2VzcyA8c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT5kb2VzPC9lbT48L3NwYW4+IHBlcmZvcm0gYW4gZXhlYywgdGhlbiA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcHJlcG9ydDwvc3Ryb25nPjwvc3Bhbj4Kd2lsbCBhdHRyaWJ1dGUgc2FtcGxlcyB0byB0aGUgZXhlY3V0YWJsZSBiZWluZyBleGVjJ2VkLgo8L3A+CiAgICAgICAgICA8cD4KVG8gZGVtb25zdHJhdGUgdGhpcywgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBleGFtcGxlcy4KV2hlbiB1c2luZyA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGVyZjwvc3Ryb25nPjwvc3Bhbj4gdG8gcHJvZmlsZSBhIHNpbmdsZSBhcHBsaWNhdGlvbiAoZWl0aGVyIHdpdGggdGhlIDxjb2RlIGNsYXNzPSJjb2RlIj4tLXBpZDwvY29kZT4Kb3B0aW9uIG9yIDxjb2RlIGNsYXNzPSJjb2RlIj5jb21tYW5kPC9jb2RlPiBvcHRpb24pLCB0aGUgbm9ybWFsIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wcmVwb3J0PC9zdHJvbmc+PC9zcGFuPiBzdW1tYXJ5IG91dHB1dAooaS5lLiwgaW52b2tpbmcgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3ByZXBvcnQ8L3N0cm9uZz48L3NwYW4+IHdpdGggbm8gb3B0aW9ucykgbG9va3Mgc29tZXRoaW5nIGxpa2UgdGhlIGZvbGxvd2luZzoKPC9wPgogICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+CkNQVV9DTEtfVU5IQUxULi4ufAogIHNhbXBsZXN8ICAgICAgJXwKLS0tLS0tLS0tLS0tLS0tLS0tCiAgIDExMjM0MiAxMDAuMDAwIHNwcmludGZ0CglDUFVfQ0xLX1VOSEFMVC4uLnwKCSAgc2FtcGxlc3wgICAgICAlfAoJLS0tLS0tLS0tLS0tLS0tLS0tCgkgICAxMDQyMDkgOTIuNzYwNSBsaWJjLTIuMTIuc28KCSAgICAgNzI3MyAgNi40NzQwIHNwcmludGZ0CgkgICAgICA4NTggIDAuNzYzNyBuby12bWxpbnV4CgkgICAgICAgIDIgIDAuMDAxOCBsZC0yLjEyLnNvCjwvcHJlPgogICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgPHA+CjwvcD4KICAgICAgICAgIDxwPgpCdXQgaWYgeW91IHByb2ZpbGUgYW4gYXBwbGljYXRpb24gdGhhdCBkb2VzIGEgZm9yay9leGVjLCB0aGUgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3ByZXBvcnQ8L3N0cm9uZz48L3NwYW4+IHN1bW1hcnkgb3V0cHV0CndpbGwgc2hvdyBzYW1wbGVzIGZvciBib3RoIHRoZSBtYWluIGFwcGxpY2F0aW9uIHlvdSBwcm9maWxlZCwgYXMgd2VsbCBhcyB0aGUgZXhlYydlZCBwcm9ncmFtLgpBbiBleGFtcGxlIGlzIHNob3duIGJlbG93IHdoZXJlIDxjb2RlIGNsYXNzPSJjb2RlIj5zLW0tZm9yazwvY29kZT4gaXMgdGhlIG1haW4gYXBwbGljYXRpb24gYmVpbmcgcHJvZmlsZWQsIHdoaWNoCmluIHR1cm4gZm9ya3MgYSBwcm9jZXNzIHRoYXQgZG9lcyBhbiA8Y29kZSBjbGFzcz0iY29kZSI+ZXhlY3ZwPC9jb2RlPiBvZiB0aGUgPGNvZGUgY2xhc3M9ImNvZGUiPm1lbWNweXQ8L2NvZGU+IHByb2dyYW0uCjwvcD4KICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPgpDUFVfQ0xLX1VOSEFMVC4uLnwKICBzYW1wbGVzfCAgICAgICV8Ci0tLS0tLS0tLS0tLS0tLS0tLQogICAxMzMzODIgNzAuNTAzMSBtZW1jcHl0CglDUFVfQ0xLX1VOSEFMVC4uLnwKCSAgc2FtcGxlc3wgICAgICAlfAoJLS0tLS0tLS0tLS0tLS0tLS0tCgkgICAxMjM4NTIgOTIuODU1MSBsaWJjLTIuMTIuc28KCSAgICAgODUyMiAgNi4zODkyIG1lbWNweXQKCSAgICAgMTAwNyAgMC43NTUwIG5vLXZtbGludXgKCSAgICAgICAgMSA3LjVlLTA0IGxkLTIuMTIuc28KICAgIDU1ODA0IDI5LjQ5Njkgcy1tLWZvcmsKCUNQVV9DTEtfVU5IQUxULi4ufAoJICBzYW1wbGVzfCAgICAgICV8CgktLS0tLS0tLS0tLS0tLS0tLS0KCSAgICA1MTgwMSA5Mi44MjY3IGxpYmMtMi4xMi5zbwoJICAgICAzNTg5ICA2LjQzMTQgcy1tLWZvcmsKCSAgICAgIDQxNCAgMC43NDE5IG5vLXZtbGludXgKPC9wcmU+CiAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8cD4KPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY3QxIiB0aXRsZT0iOC6gT3RoZXIgZGlzY3JlcGFuY2llcyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIGlkPSJoaWRkZW4tY29zdCI+PC9hPjguoE90aGVyIGRpc2NyZXBhbmNpZXM8L2gyPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHA+CkFub3RoZXIgY2F1c2Ugb2YgYXBwYXJlbnQgcHJvYmxlbXMgaXMgdGhlIGhpZGRlbiBjb3N0IG9mIGluc3RydWN0aW9ucy4gQSB2ZXJ5CmNvbW1vbiBleGFtcGxlIGlzIHR3byBtZW1vcnkgcmVhZHM6IG9uZSBmcm9tIEwxIGNhY2hlIGFuZCB0aGUgb3RoZXIgZnJvbSBtZW1vcnk6CnRoZSBzZWNvbmQgbWVtb3J5IHJlYWQgaXMgbGlrZWx5IHRvIGhhdmUgbW9yZSBzYW1wbGVzLgpUaGVyZSBhcmUgbWFueSBvdGhlciBjYXVzZXMgb2YgaGlkZGVuIGNvc3Qgb2YgaW5zdHJ1Y3Rpb25zLiBBIG5vbi1leGhhdXN0aXZlCmxpc3Q6IG1pcy1wcmVkaWN0ZWQgYnJhbmNoLCBUTEIgY2FjaGUgbWlzcywgcGFydGlhbCByZWdpc3RlciBzdGFsbCwKcGFydGlhbCByZWdpc3RlciBkZXBlbmRlbmNpZXMsIG1lbW9yeSBtaXNtYXRjaCBzdGFsbCwgcmUtZXhlY3V0ZWQgtW9wcy4gSWYgeW91IHdhbnQgdG8gd3JpdGUKcHJvZ3JhbXMgYXQgdGhlIGFzc2VtYmx5IGxldmVsLCBiZSBzdXJlIHRvIHRha2UgYSBsb29rIGF0IHRoZSBJbnRlbCBhbmQKQU1EIGRvY3VtZW50YXRpb24gYXQgPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vZGV2ZWxvcGVyLmludGVsLmNvbS8iPmh0dHA6Ly9kZXZlbG9wZXIuaW50ZWwuY29tLzwvYT4KYW5kIDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL2RldmVsb3Blci5hbWQuY29tL2Rldmd1aWRlcy5qc3AvIj5odHRwOi8vZGV2ZWxvcGVyLmFtZC5jb20vZGV2Z3VpZGVzLmpzcDwvYT4uCjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNoYXB0ZXIiIHRpdGxlPSJDaGFwdGVyoDYuoENvbnRyb2xsaW5nIHRoZSBldmVudCBjb3VudGVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIj48YSBpZD0iY29udHJvbGxpbmctY291bnRlciI+PC9hPkNoYXB0ZXKgNi6gQ29udHJvbGxpbmcgdGhlIGV2ZW50IGNvdW50ZXI8L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InRvYyI+CiAgICAgICAgICA8cD4KICAgICAgICAgICAgPGI+VGFibGUgb2YgQ29udGVudHM8L2I+CiAgICAgICAgICA8L3A+CiAgICAgICAgICA8ZGw+CiAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI2NvbnRyb2xsaW5nLW9jb3VudCI+MS4gVXNpbmcgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b2NvdW50PC9zdHJvbmc+PC9zcGFuPjwvYT4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICA8L2RsPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY3QxIiB0aXRsZT0iMS6gVXNpbmcgb2NvdW50Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+PGEgaWQ9ImNvbnRyb2xsaW5nLW9jb3VudCI+PC9hPjEuoFVzaW5nIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9jb3VudDwvc3Ryb25nPjwvc3Bhbj48L2gyPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHA+ClRoaXMgc2VjdGlvbiBkZXNjcmliZXMgaW4gZGV0YWlsIGhvdyA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vY291bnQ8L3N0cm9uZz48L3NwYW4+IGlzIHVzZWQuClVubGVzcyB0aGUgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1ldmVudHM8L2NvZGU+IG9wdGlvbiBpcyBzcGVjaWZpZWQsIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9jb3VudDwvc3Ryb25nPjwvc3Bhbj4gd2lsbCB1c2UKdGhlIGRlZmF1bHQgZXZlbnQgZm9yIHlvdXIgc3lzdGVtLiBGb3IgbW9zdCBzeXN0ZW1zLCB0aGUgZGVmYXVsdCBldmVudCBpcyBzb21lCmN5Y2xlcy1iYXNlZCBldmVudCwgYXNzdW1pbmcgeW91ciBwcm9jZXNzb3IgdHlwZSBzdXBwb3J0cyBoYXJkd2FyZSBwZXJmb3JtYW5jZQpjb3VudGVycy4gVGhlIGV2ZW50IHNwZWNpZmljYXRpb24gdXNlZCBmb3IgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b2NvdW50PC9zdHJvbmc+PC9zcGFuPiBpcyBzbGlnaHRseQpkaWZmZXJlbnQgZnJvbSB0aGF0IHJlcXVpcmVkIGZvciBwcm9maWxpbmcgLS0gYSA8c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT5jb3VudDwvZW0+PC9zcGFuPiB2YWx1ZQppcyBub3QgbmVlZGVkLiBZb3UgY2FuIHNlZSB0aGUgZXZlbnQgaW5mb3JtYXRpb24gZm9yIHlvdXIgQ1BVIHVzaW5nIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9waGVscDwvc3Ryb25nPjwvc3Bhbj4uCk1vcmUgaW5mb3JtYXRpb24gb24gZXZlbnQgc3BlY2lmaWNhdGlvbiBjYW4gYmUgZm91bmQgYXQgPGEgY2xhc3M9InhyZWYiIGhyZWY9IiNldmVudHNwZWMiIHRpdGxlPSI0LqBTcGVjaWZ5aW5nIHBlcmZvcm1hbmNlIGNvdW50ZXIgZXZlbnRzIj5TZWN0aW9uoDQsICYjODIyMDtTcGVjaWZ5aW5nIHBlcmZvcm1hbmNlIGNvdW50ZXIgZXZlbnRzJiM4MjIxOzwvYT4uCjwvcD4KICAgICAgICAgIDxwPgpUaGUgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b2NvdW50PC9zdHJvbmc+PC9zcGFuPiBjb21tYW5kIHN5bnRheCBpczoKPC9wPgogICAgICAgICAgPHA+CjwvcD4KICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPm9jb3VudCBbIG9wdGlvbnMgXSBbIC0tc3lzdGVtLXdpZGUgfCAtLXByb2Nlc3MtbGlzdCAmbHQ7cGlkcyZndDsgfCAtLXRocmVhZC1saXN0ICZsdDt0aWRzJmd0OyB8IC0tY3B1LWxpc3QgJmx0O2NwdXMmZ3Q7IFsgY29tbWFuZCBbIGFyZ3MgXSBdIF0KPC9wcmU+CiAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8cD4KPC9wPgogICAgICAgICAgPHA+CjxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9jb3VudDwvc3Ryb25nPjwvc3Bhbj4gaGFzIDUgcnVuIG1vZGVzOgo8L3A+CiAgICAgICAgICA8cD4KPC9wPgogICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbWl6ZWRsaXN0Ij4KICAgICAgICAgICAgPHVsIGNsYXNzPSJpdGVtaXplZGxpc3QiIHR5cGU9ImRpc2MiPgogICAgICAgICAgICAgIDxsaSBjbGFzcz0ibGlzdGl0ZW0iPnN5c3RlbS13aWRlPC9saT4KICAgICAgICAgICAgICA8bGkgY2xhc3M9Imxpc3RpdGVtIj5wcm9jZXNzLWxpc3Q8L2xpPgogICAgICAgICAgICAgIDxsaSBjbGFzcz0ibGlzdGl0ZW0iPnRocmVhZC1saXN0PC9saT4KICAgICAgICAgICAgICA8bGkgY2xhc3M9Imxpc3RpdGVtIj5jcHUtbGlzdDwvbGk+CiAgICAgICAgICAgICAgPGxpIGNsYXNzPSJsaXN0aXRlbSI+Y29tbWFuZDwvbGk+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgo8L3A+CiAgICAgICAgICA8cD4KT25lIGFuZCBvbmx5IG9uZSBvZiB0aGVzZSA1IHJ1biBtb2RlcyBtdXN0IGJlIHNwZWNpZmllZCB3aGVuIHlvdSBydW4gPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b2NvdW50PC9zdHJvbmc+PC9zcGFuPi4KSWYgeW91IHJ1biA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vY291bnQ8L3N0cm9uZz48L3NwYW4+IHVzaW5nIGEgcnVuIG1vZGUgb3RoZXIgdGhhbiA8Y29kZSBjbGFzcz0iY29kZSI+Y29tbWFuZCBbYXJnc108L2NvZGU+LCBwcmVzcyBDdHJsLWMKdG8gc3RvcCBpdCB3aGVuIGZpbmlzaGVkIGNvdW50aW5nIChlLmcuLCB3aGVuIHRoZSBtb25pdG9yZWQgcHJvY2VzcyBlbmRzKS4gSWYgeW91IGJhY2tncm91bmQgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b2NvdW50PC9zdHJvbmc+PC9zcGFuPgooaS5lLiwgd2l0aCAmIzgyMTc7JmFtcDsmIzgyMTc7KSB3aGlsZSB1c2luZyBvbmUgdGhlc2UgcnVuIG1vZGVzLCB5b3UgbXVzdCBzdG9wIGl0IGluIGEgY29udHJvbGxlZCBtYW5uZXIgc28gdGhhdAp0aGUgZGF0YSBjb2xsZWN0aW9uIHByb2Nlc3MgY2FuIGJlIHNodXQgZG93biBjbGVhbmx5IGFuZCBmaW5hbCByZXN1bHRzIGNhbiBiZSBkaXNwbGF5ZWQuClVzZSA8Y29kZSBjbGFzcz0iY29kZSI+a2lsbCAtU0lHSU5UICZsdDtvY291bnQtUElEJmd0OzwvY29kZT4gZm9yIHRoaXMgcHVycG9zZS4KPC9wPgogICAgICAgICAgPHA+CkZvbGxvd2luZyBpcyBhIGRlc2NyaXB0aW9uIG9mIHRoZSA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vY291bnQ8L3N0cm9uZz48L3NwYW4+IG9wdGlvbnMuCjwvcD4KICAgICAgICAgIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPmNvbW1hbmQgW2FyZ3NdPC9jb2RlPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJVGhlIGNvbW1hbmQgb3IgYXBwbGljYXRpb24gdG8gYmUgcHJvZmlsZWQuIFRoZSA8c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT5bYXJnc108L2VtPjwvc3Bhbj4gYXJlIHRoZSBpbnB1dCBhcmd1bWVudHMKICAgICAgICB0aGF0IHRoZSBjb21tYW5kIG9yIGFwcGxpY2F0aW9uIHJlcXVpcmVzLiBUaGUgY29tbWFuZCBhbmQgaXRzIGFyZ3VtZW50cyBtdXN0IGJlIHBvc2l0aW9uZWQgYXQgdGhlCiAgICAgICAgZW5kIG9mIHRoZSBjb21tYW5kIGxpbmUsIGFmdGVyIGFsbCBvdGhlciA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vY291bnQ8L3N0cm9uZz48L3NwYW4+IG9wdGlvbnMuCiAgICAgICAgPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXByb2Nlc3MtbGlzdCAvIC1wIFtQSURzXTwvY29kZT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCVVzZSB0aGlzIG9wdGlvbiB0byBjb3VudCBldmVudHMgZm9yIG9uZSBvciBtb3JlIGFscmVhZHktcnVubmluZyBhcHBsaWNhdGlvbnMsIHNwZWNpZmllZCB2aWEKICAgICAgICBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IChQSURzKS4gRXZlbnQgY291bnRzIHdpbGwgYmUgY29sbGVjdGVkIGZvciBhbGwgY2hpbGRyZW4gb2YgdGhlCiAgICAgICAgcGFzc2VkIHByb2Nlc3MoZXMpIGFzIHdlbGwuCgkJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXRocmVhZC1saXN0IC8gLXIgW1RJRHNdPC9jb2RlPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJVXNlIHRoaXMgb3B0aW9uIHRvIGNvdW50IGV2ZW50cyBmb3Igb25lIG9yIG1vcmUgYWxyZWFkeS1ydW5uaW5nIHRocmVhZHMsIHNwZWNpZmllZCB2aWEKICAgICAgICBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IChUSURzKS4gRXZlbnQgY291bnRzIHdpbGwgPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+bm90PC9lbT48L3NwYW4+IGJlIGNvbGxlY3RlZAogICAgICAgIGZvciBhbnkgY2hpbGRyZW4gb2YgdGhlIHBhc3NlZCB0aHJlYWQocykuCgkJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXN5c3RlbS13aWRlIC8gLXM8L2NvZGU+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8cD4KCQlUaGlzIG9wdGlvbiBpcyBmb3IgY291bnRpbmcgZXZlbnRzIGZvciBhbGwgcHJvY2Vzc2VzIHJ1bm5pbmcgb24geW91ciBzeXN0ZW0uIFlvdSBtdXN0IGhhdmUKICAgICAgICByb290IGF1dGhvcml0eSB0byBydW4gPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b2NvdW50PC9zdHJvbmc+PC9zcGFuPiBpbiB0aGlzIG1vZGUuCiAgICAgICAgPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWNwdS1saXN0IC8gLUMgW0NQVXNdPC9jb2RlPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJVGhpcyBvcHRpb24gaXMgZm9yIGNvdW50aW5nIGV2ZW50cyBvbiBhIHN1YnNldCBvZiBwcm9jZXNzb3JzIG9uIHlvdXIgc3lzdGVtLiBZb3UgbXVzdCBoYXZlCiAgICAgICAgcm9vdCBhdXRob3JpdHkgdG8gcnVuIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9jb3VudDwvc3Ryb25nPjwvc3Bhbj4gaW4gdGhpcyBtb2RlLiBUaGlzIGlzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QsCiAgICAgICAgd2hlcmUgZWFjaCBlbGVtZW50IGluIHRoZSBsaXN0IG1heSBiZSBlaXRoZXIgYSBzaW5nbGUgcHJvY2Vzc29yIG51bWJlciBvciBhIHJhbmdlIG9mIHByb2Nlc3NvcgogICAgICAgIG51bWJlcnM7IGZvciBleGFtcGxlOiAmIzgyMTc7LUMgMiwzLDQtMTEsMTUmIzgyMTc7LgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1ldmVudHMgLyAtZSAgW2V2ZW50MVssZXZlbnQyWywuLi5dXV08L2NvZGU+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8cD4KCQlUaGlzIG9wdGlvbiBpcyBmb3IgcGFzc2luZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGV2ZW50IHNwZWNpZmljYXRpb25zCgkJZm9yIGNvdW50aW5nLiBFYWNoIGV2ZW50IHNwZWMgaXMgb2YgdGhlIGZvcm06CgkJPC9wPgogICAgICAgICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+bmFtZVs6dW5pdG1hc2tbOmtlcm5lbFs6dXNlcl1dXTwvcHJlPgogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgPHA+CgkJV2hlbiBubyBldmVudCBzcGVjaWZpY2F0aW9uIGlzIGdpdmVuLCB0aGUgZGVmYXVsdCBldmVudCBmb3IgdGhlIHJ1bm5pbmcKCQlwcm9jZXNzb3IgdHlwZSB3aWxsIGJlIHVzZWQgZm9yIGNvdW50aW5nLiBVc2UgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3BoZWxwPC9zdHJvbmc+PC9zcGFuPgoJCXRvIGxpc3QgdGhlIGF2YWlsYWJsZSBldmVudHMgZm9yIHlvdXIgcHJvY2Vzc29yIHR5cGUuCgkJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXNlcGFyYXRlLXRocmVhZCAvIC10PC9jb2RlPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CiAgICAgICAgVGhpcyBvcHRpb24gY2FuIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBlaXRoZXIgdGhlIDxjb2RlIGNsYXNzPSJjb2RlIj4tLXByb2Nlc3MtbGlzdDwvY29kZT4gb3IKICAgICAgICA8Y29kZSBjbGFzcz0iY29kZSI+LS10aHJlYWQtbGlzdDwvY29kZT4gb3B0aW9uIHRvIGRpc3BsYXkgZXZlbnQgY291bnRzIG9uIGEgcGVyLXRocmVhZCAocGVyLXByb2Nlc3MpIGJhc2lzLgogICAgICAgIFdpdGhvdXQgdGhpcyBvcHRpb24sIGFsbCBjb3VudHMgYXJlIGFnZ3JlZ2F0ZWQuCgkJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXNlcGFyYXRlLWNwdSAvIC1jPC9jb2RlPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJVGhpcyBvcHRpb24gY2FuIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBlaXRoZXIgdGhlIDxjb2RlIGNsYXNzPSJjb2RlIj4tLXN5c3RlbS13aWRlPC9jb2RlPiBvcgoJCTxjb2RlIGNsYXNzPSJjb2RlIj4tLWNwdS1saXN0PC9jb2RlPiBvcHRpb24gdG8gZGlzcGxheSBldmVudCBjb3VudHMgb24gYSBwZXItY3B1IGJhc2lzLiBXaXRob3V0IHRoaXMgb3B0aW9uLAoJCWFsbCBjb3VudHMgYXJlIGFnZ3JlZ2F0ZWQuCgkJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXRpbWUtaW50ZXJ2YWwgLyAtaSBudW1fc2Vjb25kc1s6bnVtX2ludGVydmFsc108L2NvZGU+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8cD4KCQlSZXN1bHRzIGNvbGxlY3RlZCBmb3IgZWFjaCB0aW1lIGludGVydmFsIGFyZSBwcmludGVkIGV2ZXJ5IG51bV9zZWNvbmRzIGluc3RlYWQgb2YgdGhlCiAgICAgICAgZGVmYXVsdCBvZiBvbmUgZHVtcCBvZiBjdW11bGF0aXZlIGV2ZW50IGNvdW50cyBhdCB0aGUgZW5kIG9mIHRoZSBydW4uIElmIDxjb2RlIGNsYXNzPSJjb2RlIj5udW1faW50ZXJ2YWxzPC9jb2RlPgogICAgICAgIGlzIHNwZWNpZmllZCwgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b2NvdW50PC9zdHJvbmc+PC9zcGFuPiBleGl0cyBhZnRlciB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBpbnRlcnZhbHMgb2NjdXIuCgkJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWJyaWVmLWZvcm1hdCAvIC1iPC9jb2RlPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJVXNlIHRoaXMgb3B0aW9uIHRvIHByaW50IHJlc3VsdHMgaW4gdGhlIGZvbGxvd2luZyBicmllZiBmb3JtYXQ6CgkJPC9wPgogICAgICAgICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+CiAgICAgICAgICAgICAgICAgIFtvcHRpb25hbCBjcHUgb3IgdGhyZWFkLF0mbHQ7ZXZlbnRfbmFtZSZndDssJmx0O2NvdW50Jmd0OywmbHQ7cGVyY2VudF90aW1lX2VuYWJsZWQmZ3Q7CiAgICAgICAgICAgICAgICAgIFsgICAgICAgICZsdDtpbnQmZ3Q7ICAgICAgICAgLF0mbHQ7ICBzdHJpbmcgICZndDssJmx0OyB1NjQgJmd0OywmbHQ7ICAgICBkb3VibGUgICAgICAgICAmZ3Q7CiAgICAgICAgPC9wcmU+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICA8cD4KICAgICAgICBJZiA8Y29kZSBjbGFzcz0iY29kZSI+LS10aW1lci1pbnRlcnZhbDwvY29kZT4gaXMgc3BlY2lmaWVkLCBhIHNlcGFyYXRlIGxpbmUgZm9ybWF0dGVkIGFzCiAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+CiAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcCwmbHQ7bnVtX3NlY29uZHNfc2luY2VfZXBvY2gmZ3Q7CiAgICAgICAgPC9wcmU+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICA8cD4KICAgICAgICBpcyBwcmludGVkIGFoZWFkIG9mIGVhY2ggZHVtcCBvZiBldmVudCBjb3VudHMuCgkJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLW91dHB1dC1maWxlIC8gLWYgb3V0ZmlsZV9uYW1lPC9jb2RlPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJUmVzdWx0cyBhcmUgd3JpdHRlbiB0byBvdXRmaWxlX25hbWUgaW5zdGVhZCBvZiBpbnRlcmFjdGl2ZWx5IHRvIHRoZSB0ZXJtaW5hbC4KCQk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tdmVyYm9zZSAvIC1WPC9jb2RlPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJVXNlIHRoaXMgb3B0aW9uIHRvIGluY3JlYXNlIHRoZSB2ZXJib3NpdHkgb2YgdGhlIG91dHB1dC4KCQk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tdmVyc2lvbiAtdiA8L2NvZGU+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8cD4KCQlTaG93IDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9jb3VudDwvc3Ryb25nPjwvc3Bhbj4gdmVyc2lvbi4KCQk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0taGVscCAvIC1oPC9jb2RlPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJU2hvdyBhIGhlbHAgbWVzc2FnZS4KCQk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgPC9kbD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2hhcHRlciIgdGl0bGU9IkNoYXB0ZXKgNy6gQWNrbm93bGVkZ21lbnRzIj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIj48YSBpZD0iYWNrIj48L2E+Q2hhcHRlcqA3LqBBY2tub3dsZWRnbWVudHM8L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxwPgpUaGFua3MgdG8gKGluIG5vIHBhcnRpY3VsYXIgb3JkZXIpIDogQXJqYW4gdmFuIGRlIFZlbiwgUmlrIHZhbiBSaWVsLCBKdWFuIFF1aW50ZWxhLCBQaGlsaXBwZSBFbGllLApQaGlsbGlwcCBSdW1wZiwgVGlncmFuIEFpdmF6aWFuLCBBbGV4IEJyb3duLCBBbGlzZGFpciBSYXdzdGhvcm5lLCBCb2IgTW9udGdvbWVyeSwgUmF5IEJyeWFudCwgSC5KLiBMdSwKSmVmZiBFc3BlciwgV2lsbCBDb2hlbiwgR3JheWRvbiBIb2FyZSwgQ2xpZmYgV29vbGxleSwgQWxleCBUc2FyaW91bm92LCBBbCBTdG9uZSwgSmFzb24gWWVoLApSYW5kb2xwaCBDaHVuZywgQW50b24gQmxhbmNoYXJkLCBSaWNoYXJkIEhlbmRlcnNvbiwgQW5kcmllcyBCcm91d2VyLCBCcnlhbiBSaXR0bWV5ZXIsCk1heW5hcmQgUC4gSm9obnNvbiwKUmljaGFyZCBSZWljaCAocnJlaWNoQHJkcnRlY2guY29tKSwgWndhbmUgTXdhaWthbWJvLCBEYXZlIEpvbmVzLCBDaGFybGVzIEZpbHRuZXNzOyBhbmQgZmluYWxseSBQdWxwLCBmb3IgIkludHJvIi4KPC9wPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvYm9keT4KPC9odG1sPgo=