PGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4KPHRpdGxlPk51bGxhcnkgZnVuY3Rpb24gYmFzZWQgdGVzdCBjYXNlIHdpdGggYXV0b21hdGVkIHJlZ2lzdHJhdGlvbjwvdGl0bGU+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vc3R5bGUvc3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CjxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzQuMCI+CjxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iLi4vLi4vLi4vaW5kZXguaHRtbCIgdGl0bGU9IkJvb3N0IFRlc3QgTGlicmFyeSI+CjxsaW5rIHJlbD0idXAiIGhyZWY9Im51bGxhcnktdGVzdC1jYXNlLmh0bWwiIHRpdGxlPSJOdWxsYXJ5IGZ1bmN0aW9uIGJhc2VkIHRlc3QgY2FzZSI+CjxsaW5rIHJlbD0icHJldiIgaHJlZj0ibWFudWFsLW51bGxhcnktdGVzdC1jYXNlLmh0bWwiIHRpdGxlPSJNYW51YWxseSByZWdpc3RlcmVkIG51bGxhcnkgZnVuY3Rpb24gYmFzZWQgdGVzdCBjYXNlIj4KPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJ1bmFyeS10ZXN0LWNhc2UuaHRtbCIgdGl0bGU9IlVuYXJ5IGZ1bmN0aW9uIGJhc2VkIHRlc3QgY2FzZSI+CjxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQxLjIiIHNyYz0iLi4vLi4vLi4vLi4vanMvYm9vc3QtdGVzdC5qcyI+PC9zY3JpcHQ+CjwvaGVhZD4KPGJvZHkgYmdjb2xvcj0id2hpdGUiIHRleHQ9ImJsYWNrIiBsaW5rPSIjMDAwMEZGIiB2bGluaz0iIzg0MDA4NCIgYWxpbms9IiMwMDAwRkYiPgo8dGFibGUgd2lkdGg9IjEwMCUiPjx0cj4KPHRkIHdpZHRoPSIxMCUiPjxhIGhyZWY9Ii4uLy4uLy4uL2luZGV4Lmh0bWwiPjxpbWcgYWx0PSJIb21lIiB3aWR0aD0iMjI5IiBoZWlnaHQ9IjYxIiBib3JkZXI9IjAiIHNyYz0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy90ZXN0L2RvY2Jvb2svaW1nL2Jvb3N0LnRlc3QubG9nby5wbmciPjwvYT48L3RkPgo8dGQgdmFsaWduPSJtaWRkbGUiIGFsaWduPSJsZWZ0Ij4gJmd0OyA8YSBocmVmPSIuLi8uLi8uLi91dGYuaHRtbCI+VGhlIFVuaXQgVGVzdCBGcmFtZXdvcms8L2E+ICZndDsgPGEgaHJlZj0iLi4vLi4vdXNlci1ndWlkZS5odG1sIj5Vc2VyJ3MgZ3VpZGU8L2E+PGEgaHJlZj0iLi4vLi4vdGVzdGluZy10b29scy5odG1sIj4KICAgICAgJmd0OwogICAgICA8L2E+PGEgaHJlZj0iLi4vdGVzdC1vcmdhbml6YXRpb24uaHRtbCI+VGVzdCBvcmdhbml6YXRpb248L2E+PGEgaHJlZj0iLi4vZml4dHVyZS5odG1sIj4KICAgICAgJmd0OwogICAgICA8L2E+PGEgaHJlZj0ibnVsbGFyeS10ZXN0LWNhc2UuaHRtbCI+TnVsbGFyeSBmdW5jdGlvbiBiYXNlZCB0ZXN0IGNhc2U8L2E+PGEgaHJlZj0idW5hcnktdGVzdC1jYXNlLmh0bWwiPgogICAgICAmZ3Q7CiAgICAgIDwvYT48Yj5BdXRvbWF0ZWQgcmVnaXN0cmF0aW9uPC9iPgo8L3RkPgo8dGQ+PGRpdiBjbGFzcz0ic3Bpcml0LW5hdiI+CjxhIGhyZWY9Im1hbnVhbC1udWxsYXJ5LXRlc3QtY2FzZS5odG1sIj48aW1nIHNyYz0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZG9jL2h0bWwvaW1hZ2VzL3ByZXYucG5nIiBhbHQ9IlByZXYiPjwvYT48YSBocmVmPSJ1bmFyeS10ZXN0LWNhc2UuaHRtbCI+PGltZyBzcmM9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RvYy9odG1sL2ltYWdlcy9uZXh0LnBuZyIgYWx0PSJOZXh0Ij48L2E+CjwvZGl2PjwvdGQ+CjwvdHI+PC90YWJsZT4KPGhyPgo8ZGl2IGNsYXNzPSJzZWN0aW9uIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoNiBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJ1dGYudXNlci1ndWlkZS50ZXN0LW9yZ2FuaXphdGlvbi5hdXRvLW51bGxhcnktdGVzdC1jYXNlIj48L2E+TnVsbGFyeSBmdW5jdGlvbiBiYXNlZCB0ZXN0IGNhc2Ugd2l0aCBhdXRvbWF0ZWQgcmVnaXN0cmF0aW9uPC9oNj48L2Rpdj48L2Rpdj48L2Rpdj4KPHAgY2xhc3M9ImZpcnN0LWxpbmUtaW5kZW50ZWQiPgogICAgVG8gY3JlYXRlIGEgbnVsbGFyeSBmcmVlIGZ1bmN0aW9uIGNhc2VkIHRlc3QgY2FzZSwgd2hpY2ggaXMgcmVnaXN0ZXJlZCBpbiBwbGFjZSBvZiBpbXBsZW1lbnRhdGlvbiwgZW1wbG95IHRoZQogICAgbWFjcm8gQk9PU1RfQVVUT19URVNUX0NBU0UuCiAgIDwvcD4KPHByZSBjbGFzcz0iaW5saW5lLXN5bm9wc2lzIj4KPGEgbmFtZT0iQk9PU1RfQVVUT19URVNUX0NBU0UiPjwvYT5CT09TVF9BVVRPX1RFU1RfQ0FTRSg8c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT50ZXN0X2Nhc2VfbmFtZTwvZW0+PC9zcGFuPik8L3ByZT4KPHAgY2xhc3M9ImZpcnN0LWxpbmUtaW5kZW50ZWQiPgogICAgVGhlIG1hY3JvIGlzIGRlc2lnbmVkIHRvIGNsb3NlbHkgbWltaWMgbnVsbGFyeSBmcmVlIGZ1bmN0aW9uIHN5bnRheC4gQ2hhbmdlcyB0aGF0IGFyZSByZXF1aXJlZCB0byBtYWtlIGFuCiAgICBleGlzdGluZyB0ZXN0IGNhc2UsIGltcGxlbWVudGVkIGFzIGEgZnJlZSBmdW5jdGlvbiwgcmVnaXN0ZXJlZCBpbiBwbGFjZSBhcmUgaWxsdXN0cmF0ZWQgaW4gdGhlIGZvbGxvd2luZwogICAgZXhhbXBsZSAoY29tcGFyZSB3aXRoIDxhIGNsYXNzPSJ4cmVmIiBocmVmPSJtYW51YWwtbnVsbGFyeS10ZXN0LWNhc2UuaHRtbCN1dGYudXNlci1ndWlkZS50ZXN0LW9yZ2FuaXphdGlvbi5tYW51YWwtbnVsbGFyeS10ZXN0LWNhc2UuZXhhbXBsZTAxIiB0aXRsZT0iRXhhbXBsZaA1LqBOdWxsYXJ5IGZyZWUgZnVuY3Rpb24gbWFudWFsbHkgcmVnaXN0ZXJlZCI+RXhhbXBsZaA1LCAmIzgyMjA7TnVsbGFyeSBmcmVlIGZ1bmN0aW9uIG1hbnVhbGx5IHJlZ2lzdGVyZWQmIzgyMjE7PC9hPik6CiAgIDwvcD4KPGRpdiBjbGFzcz0iZXhhbXBsZSI+CjxhIG5hbWU9InV0Zi51c2VyLWd1aWRlLnRlc3Qtb3JnYW5pemF0aW9uLmF1dG8tbnVsbGFyeS10ZXN0LWNhc2UuZXhhbXBsZTA2Ij48L2E+PHAgY2xhc3M9InRpdGxlIj48Yj5FeGFtcGxloDEwLqBOdWxsYXJ5IGZ1bmN0aW9uIGJhc2VkIHRlc3QgY2FzZSB3aXRoIGF1dG9tYXRlZCByZWdpc3RyYXRpb248L2I+PC9wPgo8ZGl2IGNsYXNzPSJleGFtcGxlLWNvbnRlbnRzIj4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiNkZWZpbmUgQk9PU1RfVEVTVF9NT0RVTEUgZXhhbXBsZQojaW5jbHVkZSAmbHQ7Ym9vc3QvdGVzdC9pbmNsdWRlZC91bml0X3Rlc3QuaHBwJmd0OwoKLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KCkJPT1NUX0FVVE9fVEVTVF9DQVNFKCBmcmVlX3Rlc3RfZnVuY3Rpb24gKQp7CiAgICBCT09TVF9DSEVDSyggdHJ1ZSAvKiB0ZXN0IGFzc2VydGlvbiAqLyApOwp9CgovL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwoKPC9wcmU+Cjx0YWJsZSBjbGFzcz0ic2ltcGxlbGlzdCIgYm9yZGVyPSIwIiBzdW1tYXJ5PSJTaW1wbGUgbGlzdCI+PHRyPgo8dGQ+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPjxhIGhyZWY9Ii4uLy4uLy4uLy4uL3NyYy9leGFtcGxlcy9leGFtcGxlMDYuY3BwIiB0YXJnZXQ9Il90b3AiPlNvdXJjZSBjb2RlPC9hPjwvY29kZT48L3RkPgo8dGQ+IHwgPC90ZD4KPHRkPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj48YSBocmVmPSIjIiB0YXJnZXQ9Il90b3AiIGlkPSJpZDY0OTgwNyIgb25jbGljaz0idG9nZ2xlX2VsZW1lbnQoICdleGFtcGxlMDYtb3V0cHV0JywgJ2lkNjQ5ODA3JywgJ1Nob3cgb3V0cHV0JywgJ0hpZGUgb3V0cHV0JyApOyByZXR1cm4gZmFsc2U7Ij5TaG93IG91dHB1dDwvYT48L2NvZGU+PC90ZD4KPC90cj48L3RhYmxlPgo8cHJlIGNsYXNzPSJleGFtcGxlLW91dHB1dCIgaWQ9ImV4YW1wbGUwNi1vdXRwdXQiPiZndDsgZXhhbXBsZSAtLWxvZ19sZXZlbD10ZXN0X3N1aXRlClJ1bm5pbmcgMSB0ZXN0IGNhc2UuLi4KRW50ZXJpbmcgdGVzdCBzdWl0ZSAiZXhhbXBsZSIKRW50ZXJpbmcgdGVzdCBjYXNlICJmcmVlX3Rlc3RfZnVuY3Rpb24iCkxlYXZpbmcgdGVzdCBjYXNlICJmcmVlX3Rlc3RfZnVuY3Rpb24iOyB0ZXN0aW5nIHRpbWU6IDE2bXMKTGVhdmluZyB0ZXN0IHN1aXRlICJleGFtcGxlIgoKKioqIE5vIGVycm9ycyBkZXRlY3RlZAo8L3ByZT4KPC9kaXY+CjwvZGl2Pgo8YnIgY2xhc3M9ImV4YW1wbGUtYnJlYWsiPjxwIGNsYXNzPSJmaXJzdC1saW5lLWluZGVudGVkIj4KICAgIFdpdGggdGhpcyBtYWNybyB5b3UgZG9uJ3QgbmVlZCB0byBpbXBsZW1lbnQgdGhlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIGF0IGFsbC4gVGhlIG1hY3JvIGNyZWF0ZXMgYW5kCiAgICByZWdpc3RlcnMgdGhlIHRlc3QgY2FzZSB3aXRoIHRoZSBuYW1lIGZyZWVfdGVzdF9mdW5jdGlvbiBhdXRvbWF0aWNhbGx5LgogICA8L3A+CjwvZGl2Pgo8dGFibGUgeG1sbnM6cmV2PSJodHRwOi8vd3d3LmNzLnJwaS5lZHUvfmdyZWdvZC9ib29zdC90b29scy9kb2MvcmV2aXNpb24iIHdpZHRoPSIxMDAlIj48dHI+Cjx0ZCBhbGlnbj0ibGVmdCI+PC90ZD4KPHRkIGFsaWduPSJyaWdodCI+PGRpdiBjbGFzcz0iY29weXJpZ2h0LWZvb3RlciI+Q29weXJpZ2h0IKkgMjAwMS0yMDA3IEdlbm5hZGl5IFJvemVudGFsPC9kaXY+PC90ZD4KPC90cj48L3RhYmxlPgo8aHI+CjxkaXYgY2xhc3M9InNwaXJpdC1uYXYiPgo8YSBhY2Nlc3NrZXk9InAiIGhyZWY9Im1hbnVhbC1udWxsYXJ5LXRlc3QtY2FzZS5odG1sIj48aW1nIHNyYz0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZG9jL2h0bWwvaW1hZ2VzL3ByZXYucG5nIiBhbHQ9IlByZXYiPjwvYT48YSBhY2Nlc3NrZXk9InUiIGhyZWY9Im51bGxhcnktdGVzdC1jYXNlLmh0bWwiPjxpbWcgc3JjPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kb2MvaHRtbC9pbWFnZXMvdXAucG5nIiBhbHQ9IlVwIj48L2E+PGEgYWNjZXNza2V5PSJoIiBocmVmPSIuLi8uLi8uLi9pbmRleC5odG1sIj48aW1nIHNyYz0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZG9jL2h0bWwvaW1hZ2VzL2hvbWUucG5nIiBhbHQ9IkhvbWUiPjwvYT48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9InVuYXJ5LXRlc3QtY2FzZS5odG1sIj48aW1nIHNyYz0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZG9jL2h0bWwvaW1hZ2VzL25leHQucG5nIiBhbHQ9Ik5leHQiPjwvYT4KPC9kaXY+CjwvYm9keT4KPC9odG1sPgo=