PGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4KPHRpdGxlPlRoZSBzdXBwbGllZCB0ZXN0IHJ1bm5lcnMgb3Igd2hlcmUgaXMgdGhlIGVudHJhbmNlPzwvdGl0bGU+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vc3R5bGUvc3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CjxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzQuMCI+CjxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iLi4vLi4vaW5kZXguaHRtbCIgdGl0bGU9IkJvb3N0IFRlc3QgTGlicmFyeSI+CjxsaW5rIHJlbD0idXAiIGhyZWY9Ii4uL3VzZXItZ3VpZGUuaHRtbCIgdGl0bGU9IlVuaXQgVGVzdCBGcmFtZXdvcms6IFVzZXIncyBndWlkZSI+CjxsaW5rIHJlbD0icHJldiIgaHJlZj0idXNhZ2UtdmFyaWFudHMvZXh0ZXJuLXRlc3QtcnVubmVyLXZhcmlhbnQuaHRtbCIgdGl0bGU9IlRoZSBleHRlcm5hbCB0ZXN0IHJ1bm5lciB2YXJpYW50IG9mIHRoZSBVVEYiPgo8bGluayByZWw9Im5leHQiIGhyZWY9InVzYWdlLXZhcmlhbnRzL2V4dGVybi10ZXN0LXJ1bm5lci5odG1sIiB0aXRsZT0iRXh0ZXJuYWwgdGVzdCBydW5uZXIgdmFyaWFudCBvZiB0aGUgVVRGIj4KPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdDEuMiIgc3JjPSIuLi8uLi8uLi9qcy9ib29zdC10ZXN0LmpzIj48L3NjcmlwdD4KPC9oZWFkPgo8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSIgdGV4dD0iYmxhY2siIGxpbms9IiMwMDAwRkYiIHZsaW5rPSIjODQwMDg0IiBhbGluaz0iIzAwMDBGRiI+Cjx0YWJsZSB3aWR0aD0iMTAwJSI+PHRyPgo8dGQgd2lkdGg9IjEwJSI+PGEgaHJlZj0iLi4vLi4vaW5kZXguaHRtbCI+PGltZyBhbHQ9IkhvbWUiIHdpZHRoPSIyMjkiIGhlaWdodD0iNjEiIGJvcmRlcj0iMCIgc3JjPSIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Rlc3QvZG9jYm9vay9pbWcvYm9vc3QudGVzdC5sb2dvLnBuZyI+PC9hPjwvdGQ+Cjx0ZCB2YWxpZ249Im1pZGRsZSIgYWxpZ249ImxlZnQiPiAmZ3Q7IDxhIGhyZWY9Ii4uLy4uL3V0Zi5odG1sIj5UaGUgVW5pdCBUZXN0IEZyYW1ld29yazwvYT4gJmd0OyA8YSBocmVmPSIuLi91c2VyLWd1aWRlLmh0bWwiPlVzZXIncyBndWlkZTwvYT48YSBocmVmPSIuLi90ZXN0aW5nLXRvb2xzLmh0bWwiPgogICAgICAmZ3Q7CiAgICAgIDwvYT48Yj5TdXBwbGllZCB0ZXN0IHJ1bm5lcnM8L2I+PGEgaHJlZj0iaW5pdGlhbGl6YXRpb24uaHRtbCI+CiAgICAgICZndDsKICAgICAgPC9hPgo8L3RkPgo8dGQ+PGRpdiBjbGFzcz0ic3Bpcml0LW5hdiI+CjxhIGhyZWY9InVzYWdlLXZhcmlhbnRzL2V4dGVybi10ZXN0LXJ1bm5lci12YXJpYW50Lmh0bWwiPjxpbWcgc3JjPSIuLi8uLi8uLi8uLi8uLi8uLi9kb2MvaHRtbC9pbWFnZXMvcHJldi5wbmciIGFsdD0iUHJldiI+PC9hPjxhIGhyZWY9InVzYWdlLXZhcmlhbnRzL2V4dGVybi10ZXN0LXJ1bm5lci5odG1sIj48aW1nIHNyYz0iLi4vLi4vLi4vLi4vLi4vLi4vZG9jL2h0bWwvaW1hZ2VzL25leHQucG5nIiBhbHQ9Ik5leHQiPjwvYT4KPC9kaXY+PC90ZD4KPC90cj48L3RhYmxlPgo8aHI+CjxkaXYgY2xhc3M9InNlY3Rpb24iIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGg0IGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9InV0Zi51c2VyLWd1aWRlLnRlc3QtcnVubmVycyI+PC9hPlRoZSBzdXBwbGllZCB0ZXN0IHJ1bm5lcnMgIG9yIHdoZXJlIGlzIHRoZSBlbnRyYW5jZT88L2g0PjwvZGl2PjwvZGl2PjwvZGl2Pgo8cCBjbGFzcz0iZmlyc3QtbGluZS1pbmRlbnRlZCI+CiAgIEFsbCB1c2FnZSB2YXJpYW50cyBvZiB0aGUgPGFjcm9ueW0gY2xhc3M9ImFjcm9ueW0iPlVURjwvYWNyb255bT4sIGV4Y2x1ZGluZyB0aGUgCiAgIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJ1c2FnZS12YXJpYW50cy9leHRlcm4tdGVzdC1ydW5uZXIuaHRtbCIgdGl0bGU9IkV4dGVybmFsIHRlc3QgcnVubmVyIHZhcmlhbnQgb2YgdGhlIFVURiI+ZXh0ZXJuYWwgdGVzdCBydW5uZXI8L2E+LCBzdXBwbHkgdGhlIHRlc3QgcnVubmVyIGluIGEgZm9ybSBvZiAKICAgZnJlZSBmdW5jdGlvbiBuYW1lZCB1bml0X3Rlc3RfbWFpbiB3aXRoIHRoZSBmb2xsb3dpbmcgc2lnbmF0dXJlOgogIDwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmludCB1bml0X3Rlc3RfbWFpbiggaW5pdF91bml0X3Rlc3RfZnVuYyBpbml0X2Z1bmMsIGludCBhcmdjLCBjaGFyKiBhcmd2W10gKTs8L3ByZT4KPHAgY2xhc3M9ImZpcnN0LWxpbmUtaW5kZW50ZWQiPgogICBUbyBpbnZva2UgdGhlIHRlc3QgcnVubmVyIHlvdSBhcmUgcmVxdWlyZWQgdG8gc3VwcGx5IHRoZSBwb2ludGVyIHRvIHRoZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iLi4vdXNlci1ndWlkZS5odG1sI3Rlc3QtbW9kdWxlLmRlZiI+dGVzdCBtb2R1bGU8L2E+CiAgIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIGFzIHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGUgdGVzdCBydW5uZXIgZnVuY3Rpb24uIEluIG1ham9yaXR5IG9mIHRoZSBjYXNlcyB0aGlzIGZ1bmN0aW9uIGlzIAogICBpbnZva2VkIGRpcmVjdGx5IGZyb20gdGVzdCBleGVjdXRhYmxlIGVudHJ5IHBvaW50IC0gZnVuY3Rpb24gbWFpbigpLiBJbiBtb3N0IHVzYWdlIHZhcmlhbnRzIHRoZSA8YWNyb255bSBjbGFzcz0iYWNyb255bSI+VVRGPC9hY3JvbnltPiBjYW4gCiAgIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgZGVmYXVsdCBmdW5jdGlvbiBtYWluKCkgaW1wbGVtZW50YXRpb24gYXMgZWl0aGVyIHBhcnQgb2YgdGhlIGxpYnJhcnkgb3IgdGVzdCBtb2R1bGUgaXRzZWxmLiAKICAgU2luY2UgdGhlIGZ1bmN0aW9uIG1haW4gbmVlZHMgdG8gcmVmZXIgdG8gdGhlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIGJ5IG5hbWUsIGl0IGlzIHByZWRlZmluZWQgYnkgdGhlIGRlZmF1bHQgCiAgIGltcGxlbWVudGF0aW9uIGFuZCB5b3UgYXJlIHJlcXVpcmVkIHRvIG1hdGNoIGJvdGggc3BlY2lmaWMgc2lnbmF0dXJlIGFuZCBuYW1lLCB3aGVuIGltcGxlbWVudGluZyBpbml0aWFsaXphdGlvbiAKICAgZnVuY3Rpb24uIElmIHlvdSBmb3IgYW55IHJlYXNvbiBwcmVmZXIgbW9yZSBmbGV4aWJpbGl0eSB5b3UgY2FuIG9wdCB0byBpbXBsZW1lbnQgdGhlIGZ1bmN0aW9uIG1haW4oKSB5b3Vyc2VsZiwgaW4gCiAgIHdoaWNoIGNhc2UgaXQncyBnb2luZyB0byBiZSB5b3VyIHJlc3BvbnNpYmlsaXR5IHRvIGludm9rZSB0aGUgdGVzdCBydW5uZXIsIGJ1dCB0aGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gbmFtZSBpcyAKICAgbm90IGVuZm9yY2VzIHRoZSA8YWNyb255bSBjbGFzcz0iYWNyb255bSI+VVRGPC9hY3JvbnltPi4gU2VlIGJlbG93IGZvciBmbGFncyB0aGF0IG5lZWRzIHRvIGJlIGRlZmluZWQvdW5kZWZpbmVkIGluIGVhY2ggdXNhZ2UgdmFyaWFudCB0byBlbmFibGUgdGhpcy4KICA8L3A+CjxkaXYgY2xhc3M9Indhcm5pbmciPjx0YWJsZSBib3JkZXI9IjAiIHN1bW1hcnk9Ildhcm5pbmciPgo8dHI+Cjx0ZCByb3dzcGFuPSIyIiBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjI1Ij48aW1nIGFsdD0iW1dhcm5pbmddIiBzcmM9Ii4uLy4uLy4uLy4uLy4uLy4uL2RvYy9odG1sL2ltYWdlcy93YXJuaW5nLnBuZyI+PC90ZD4KPHRoIGFsaWduPSJsZWZ0Ij5XYXJuaW5nPC90aD4KPC90cj4KPHRyPjx0ZCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPjxwPgogICAgSW4gc3BpdGUgc3ludGFjdGljIHNpbWlsYXJpdHkgdGhlIHNpZ25hdHVyZXMgb2YgdGhlIHRlc3QgcnVubmVyIGZ1bmN0aW9uIGluIGZhY3QgYXJlIGRpZmZlcmVudCBmb3IgZGlmZmVyZW50IHVzYWdlIAogICAgdmFyaWFudHMuIFRoZSBjYXVzZSBpcyBkaWZmZXJlbnQgc2lnbmF0dXJlIG9mIHRoZSB0ZXN0IG1vZHVsZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiByZWZlcnJlZCBieSB0aGUgCiAgICA8YSBjbGFzcz0ibGluayIgaHJlZj0iaW5pdGlhbGl6YXRpb24uaHRtbCN1dGYudXNlci1ndWlkZS5pbml0aWFsaXphdGlvbi5zaWduYXR1cmUtdHlwZWRlZiIgdGl0bGU9IkluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIHNpZ25hdHVyZSBhY2Nlc3MiPnR5cGVkZWYgaW5pdF91bml0X3Rlc3RfZnVuYzwvYT4uIFRoaXMgbWFrZXMgc3RhdGljCiAgICBhbmQgZHluYW1pYyBsaWJyYXJ5IHVzYWdlIHZhcmlhbnRzIGluY29tcGF0aWJsZSBhbmQgdGhleSBjYW4ndCBiZSBlYXNpbHkgc3dpdGNoZWQgb24gYSBmbHkuCiAgIDwvcD48L3RkPjwvdHI+CjwvdGFibGU+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGg1IGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9InV0Zi51c2VyLWd1aWRlLnN0YXRpYy1saWItcnVubmVyIj48L2E+U3RhdGljIGxpYnJhcnkgdmFyaWFudCBvZiB0aGUgPGFjcm9ueW0gY2xhc3M9ImFjcm9ueW0iPlVURjwvYWNyb255bT4KPC9oNT48L2Rpdj48L2Rpdj48L2Rpdj4KPHAgY2xhc3M9ImZpcnN0LWxpbmUtaW5kZW50ZWQiPgogICAgQnkgZGVmYXVsdCB0aGlzIHZhcmlhbnQgc3VwcGxpZXMgdGhlIGZ1bmN0aW9uIG1haW4oKSBhcyBwYXJ0IG9mIHN0YXRpYyBsaWJyYXJ5LiBJZiB0aGlzIGlzIGZvciBhbnkgcmVhc29uIHVuZGVzaXJhYmxlIAogICAgeW91IG5lZWQgdG8gZGVmaW5lIHRoZSBmbGFnIDxhIGNsYXNzPSJ4cmVmIiBocmVmPSIuLi9jb21waWxhdGlvbi5odG1sI3V0Zi5mbGFnLm5vLW1haW4iPkJPT1NUX1RFU1RfTk9fTUFJTjwvYT4gZHVyaW5nIHRoZSBsaWJyYXJ5IAogICAgY29tcGlsYXRpb24gYW5kIHRoZSBmdW5jdGlvbiBtYWluKCkgaW1wbGVtZW50YXRpb24gd29uJ3QgYmUgZ2VuZXJhdGVkLgogICA8L3A+CjxwIGNsYXNzPSJmaXJzdC1saW5lLWluZGVudGVkIj4KICAgIEluIGFkZGl0aW9uIHRvIHRoZSA8YSBjbGFzcz0ibGluayIgaHJlZj0idXNhZ2UtdmFyaWFudHMvc3RhdGljLWxpYi12YXJpYW50Lmh0bWwiIHRpdGxlPSJUaGUgc3RhdGljIGxpYnJhcnkgdmFyaWFudCBvZiB0aGUgVVRGIj5pbml0aWFsaXphdGlvbiBmdW5jdGlvbiBzaWduYXR1cmUgcmVxdWlyZW1lbnQ8L2E+CiAgICBkZWZhdWx0IGZ1bmN0aW9uIG1haW4oKSBpbXBsZW1lbnRhdGlvbiBhc3N1bWVzIHRoZSBuYW1lIG9mIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIGlzIGluaXRfdW5pdF90ZXN0X3N1aXRlCiAgIDwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGg1IGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9InV0Zi51c2VyLWd1aWRlLmR5bmFtaWMtbGliLXJ1bm5lciI+PC9hPkR5bmFtaWMgbGlicmFyeSB2YXJpYW50IG9mIHRoZSA8YWNyb255bSBjbGFzcz0iYWNyb255bSI+VVRGPC9hY3JvbnltPgo8L2g1PjwvZGl2PjwvZGl2PjwvZGl2Pgo8cCBjbGFzcz0iZmlyc3QtbGluZS1pbmRlbnRlZCI+CiAgICBVbmxpa2UgdGhlIHN0YXRpYyBsaWJyYXJ5IHZhcmlhbnQgZnVuY3Rpb24gbWFpbigpIGNhbid0IHJlc2lkZSBpbiB0aGUgZHluYW1pYyBsaWJyYXJ5IGJvZHkuIEluc3RlYWQgdGhpcyB2YXJpYW50CiAgICBzdXBwbGllcyBkZWZhdWx0IGZ1bmN0aW9uIG1haW4oKSBpbXBsZW1lbnRhdGlvbiBhcyBwYXJ0IG9mIHRoZSBoZWFkZXIgCiAgICA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPmJvb3N0L3Rlc3QvdW5pdF90ZXN0LmhwcDwvY29kZT4gdG8gYmUgZ2VuZXJhdGVkIGFzIHBhcnQgb2YgeW91ciB0ZXN0IGZpbGUgYm9keS4gCiAgICBUaGUgZnVuY3Rpb24gbWFpbigpIGlzIGdlbmVyYXRlZCBvbmx5IGlmIGVpdGhlciB0aGUgPGEgY2xhc3M9InhyZWYiIGhyZWY9Ii4uL2NvbXBpbGF0aW9uLmh0bWwjdXRmLmZsYWcubWFpbiI+Qk9PU1RfVEVTVF9NQUlOPC9hPiBvciAKICAgIHRoZSA8YSBjbGFzcz0ieHJlZiIgaHJlZj0iLi4vY29tcGlsYXRpb24uaHRtbCN1dGYuZmxhZy5tb2R1bGUiPkJPT1NUX1RFU1RfTU9EVUxFPC9hPiBmbGFncyBhcmUgZGVmaW5lZCBkdXJpbmcgYSB0ZXN0IG1vZHVsZSBjb21waWxhdGlvbi4gCiAgICBGb3IgPGEgY2xhc3M9ImxpbmsiIGhyZWY9Ii4uL3VzZXItZ3VpZGUuaHRtbCNzaW5nbGUtZmlsZS10ZXN0LW1vZHVsZS5kZWYiPnNpbmdsZS1maWxlIHRlc3QgbW9kdWxlPC9hPiBmbGFncyBjYW4gYmUgZGVmaW5lZCBlaXRoZXIgaW4gYSAKICAgIHRlc3QgbW9kdWxlJ3MgbWFrZWZpbGUgb3IgYmVmb3JlIHRoZSBoZWFkZXIgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5ib29zdC90ZXN0L3VuaXRfdGVzdC5ocHA8L2NvZGU+CiAgICBpbmNsdXNpb24uIEZvciBhIDxhIGNsYXNzPSJ4cmVmIiBocmVmPSIuLi91c2VyLWd1aWRlLmh0bWwjbXVsdGktZmlsZS10ZXN0LW1vZHVsZS5kZWYiPm11bHRpLWZpbGUgdGVzdCBtb2R1bGU8L2E+IGZsYWdzIGNhbid0CiAgICBiZSBkZWZpbmVkIGluIG1ha2VmaWxlIGFuZCBoYXZlIHRvIGJlIGRlZmluZWQgaW4gb25seSBvbmUgb2YgdGhlIHRlc3QgZmlsZXMgdG8gYXZvaWQgZHVwbGljYXRlIGNvcGllcyBvZiB0aGUgCiAgICBmdW5jdGlvbiBtYWluKCkuCiAgIDwvcD4KPGRpdiBjbGFzcz0iaW1wb3J0YW50Ij48dGFibGUgYm9yZGVyPSIwIiBzdW1tYXJ5PSJJbXBvcnRhbnQiPgo8dHI+Cjx0ZCByb3dzcGFuPSIyIiBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjI1Ij48aW1nIGFsdD0iW0ltcG9ydGFudF0iIHNyYz0iLi4vLi4vLi4vLi4vLi4vLi4vZG9jL2h0bWwvaW1hZ2VzL2ltcG9ydGFudC5wbmciPjwvdGQ+Cjx0aCBhbGlnbj0ibGVmdCI+SW1wb3J0YW50PC90aD4KPC90cj4KPHRyPjx0ZCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPjxwPgogICAgIFRoZSBzYW1lIGZsYWdzIGFsc28gZ292ZXJuIGdlbmVyYXRpb24gb2YgYW4gZW1wdHkgCiAgICAgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImluaXRpYWxpemF0aW9uLmh0bWwiIHRpdGxlPSJUZXN0IG1vZHVsZSBpbml0aWFsaXphdGlvbiBvciByZWFkeSwgc2V0Ij50ZXN0IG1vZHVsZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbjwvYT4uIFRoaXMgbWVhbnMgdGhhdCBpZiB5b3UgCiAgICAgbmVlZCB0byBpbXBsZW1lbnQgZWl0aGVyIGZ1bmN0aW9uIG1haW4oKSBvciBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBtYW51YWxseSwgeW91IGNhbid0IGRlZmluZSB0aGUgYWJvdmUgZmxhZ3MKICAgICBhbmQgYXJlIHJlcXVpcmVkIHRvIG1hbnVhbGx5IGltcGxlbWVudCBib3RoIG9mIHRoZW0uCiAgICA8L3A+PC90ZD48L3RyPgo8L3RhYmxlPjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDUgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0idXRmLnVzZXItZ3VpZGUuc2luZ2xlLWhlYWRlci1ydW5uZXIiPjwvYT5TaW5nbGUtaGVhZGVyIHZhcmlhbnQgb2YgdGhlIDxhY3JvbnltIGNsYXNzPSJhY3JvbnltIj5VVEY8L2Fjcm9ueW0+CjwvaDU+PC9kaXY+PC9kaXY+PC9kaXY+CjxwIGNsYXNzPSJmaXJzdC1saW5lLWluZGVudGVkIj4KICAgIEJ5IGRlZmF1bHQgdGhpcyB2YXJpYW50IHN1cHBsaWVzIGZ1bmN0aW9uIG1haW4oKSBhcyBwYXJ0IG9mIHRoZSBoZWFkZXIgCiAgICA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPmJvb3N0L3Rlc3QvaW5jbHVkZWQvdW5pdF90ZXN0LmhwcDwvY29kZT4gdG8gYmUgZ2VuZXJhdGVkIGFzIHBhcnQgb2YgeW91ciB0ZXN0IGZpbGUgCiAgICBib2R5LiBJZiB0aGlzIGlzIGZvciBhbnkgcmVhc29uIHVuZGVzaXJhYmxlIHlvdSBuZWVkIHRvIGRlZmluZSB0aGUgZmxhZyAKICAgIDxhIGNsYXNzPSJ4cmVmIiBocmVmPSIuLi9jb21waWxhdGlvbi5odG1sI3V0Zi5mbGFnLm5vLW1haW4iPkJPT1NUX1RFU1RfTk9fTUFJTjwvYT4gZHVyaW5nIHRlc3QgbW9kdWxlIGNvbXBpbGF0aW9uIGFuZCB0aGUgZnVuY3Rpb24gbWFpbigpCiAgICBpbXBsZW1lbnRhdGlvbiB3b24ndCBiZSBnZW5lcmF0ZWQuCiAgIDwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGg1IGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9InV0Zi51c2VyLWd1aWRlLnJ1bm5lcnMtZXhpdC1zdGF0dXMiPjwvYT5HZW5lcmF0ZWQgZXhpdCBzdGF0dXMgdmFsdWVzPC9oNT48L2Rpdj48L2Rpdj48L2Rpdj4KPHAgY2xhc3M9ImZpcnN0LWxpbmUtaW5kZW50ZWQiPgogICAgT25jZSB0ZXN0aW5nIGlzIGZpbmlzaGVkLCBhbGwgc3VwcGxpZWQgdGVzdCBydW5uZXJzIHJlcG9ydCB0aGUgcmVzdWx0cyBhbmQgcmV0dXJucyBhbiBleGl0IHN0YXR1cyB2YWx1ZS4gSGVyZSBhcmUKICAgIHRoZSBzdW1tYXJ5IG9mIGFsbCBwb3NzaWJsZSBnZW5lcmF0ZWQgdmFsdWVzOgogICA8L3A+CjxkaXYgY2xhc3M9InRhYmxlIj4KPGEgbmFtZT0idXRmLnVzZXItZ3VpZGUucnVubmVycy1leGl0LXN0YXR1cy1zdW1tYXJ5Ij48L2E+PHAgY2xhc3M9InRpdGxlIj48Yj5UYWJsZaA0LqBHZW5lcmF0ZWQgZXhpdCBzdGF0dXMgdmFsdWVzPC9iPjwvcD4KPGRpdiBjbGFzcz0idGFibGUtY29udGVudHMiPjx0YWJsZSBjbGFzcz0idGFibGUiIHN1bW1hcnk9IkdlbmVyYXRlZCBleGl0IHN0YXR1cyB2YWx1ZXMiPgo8Y29sZ3JvdXA+Cjxjb2w+Cjxjb2w+CjwvY29sZ3JvdXA+Cjx0aGVhZD48dHI+Cjx0aD5WYWx1ZTwvdGg+Cjx0aD5NZWFuaW5nPC90aD4KPC90cj48L3RoZWFkPgo8dGJvZHk+Cjx0cj4KPHRkPmJvb3N0OjpleGl0X3N1Y2Nlc3M8L3RkPgo8dGQ+CiAgICAgICAgTm8gZXJyb3JzIG9jY3VycmVkIGR1cmluZyB0aGUgdGVzdCBvciB0aGUgc3VjY2VzcyByZXN1bHQgY29kZSB3YXMgZXhwbGljaXRseSByZXF1ZXN0ZWQgd2l0aCB0aGUgbm9fcmVzdWx0X2NvZGUKICAgICAgICBwYXJhbWV0ZXIuCiAgICAgICA8L3RkPgo8L3RyPgo8dHI+Cjx0ZD5ib29zdDo6ZXhpdF90ZXN0X2ZhaWx1cmU8L3RkPgo8dGQ+CiAgICAgICAgTm9uLWZhdGFsIGVycm9ycyBkZXRlY3RlZCBhbmQgbm8gdW5jYXVnaHQgZXhjZXB0aW9ucyB3ZXJlIHRocm93biBkdXJpbmcgdGVzdGluZyBvciB0aGUgPGFjcm9ueW0gY2xhc3M9ImFjcm9ueW0iPlVURjwvYWNyb255bT4gZmFpbHMgZHVyaW5nCiAgICAgICAgaW5pdGlhbGl6YXRpb24uCiAgICAgICA8L3RkPgo8L3RyPgo8dHI+Cjx0ZD5ib29zdDo6ZXhpdF9leGNlcHRpb25fZmFpbHVyZTwvdGQ+Cjx0ZD4KICAgICAgICBGYXRhbCBlcnJvcnMgd2VyZSBkZXRlY3RlZCBvciB1bmNhdWdodCBleGNlcHRpb25zIHRocm93biBkdXJpbmcgdGVzdGluZy4KICAgICAgIDwvdGQ+CjwvdHI+CjwvdGJvZHk+CjwvdGFibGU+PC9kaXY+CjwvZGl2Pgo8YnIgY2xhc3M9InRhYmxlLWJyZWFrIj4KPC9kaXY+CjwvZGl2Pgo8dGFibGUgeG1sbnM6cmV2PSJodHRwOi8vd3d3LmNzLnJwaS5lZHUvfmdyZWdvZC9ib29zdC90b29scy9kb2MvcmV2aXNpb24iIHdpZHRoPSIxMDAlIj48dHI+Cjx0ZCBhbGlnbj0ibGVmdCI+PC90ZD4KPHRkIGFsaWduPSJyaWdodCI+PGRpdiBjbGFzcz0iY29weXJpZ2h0LWZvb3RlciI+Q29weXJpZ2h0IKkgMjAwMS0yMDA3IEdlbm5hZGl5IFJvemVudGFsPC9kaXY+PC90ZD4KPC90cj48L3RhYmxlPgo8aHI+CjxkaXYgY2xhc3M9InNwaXJpdC1uYXYiPgo8YSBhY2Nlc3NrZXk9InAiIGhyZWY9InVzYWdlLXZhcmlhbnRzL2V4dGVybi10ZXN0LXJ1bm5lci12YXJpYW50Lmh0bWwiPjxpbWcgc3JjPSIuLi8uLi8uLi8uLi8uLi8uLi9kb2MvaHRtbC9pbWFnZXMvcHJldi5wbmciIGFsdD0iUHJldiI+PC9hPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iLi4vdXNlci1ndWlkZS5odG1sIj48aW1nIHNyYz0iLi4vLi4vLi4vLi4vLi4vLi4vZG9jL2h0bWwvaW1hZ2VzL3VwLnBuZyIgYWx0PSJVcCI+PC9hPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iLi4vLi4vaW5kZXguaHRtbCI+PGltZyBzcmM9Ii4uLy4uLy4uLy4uLy4uLy4uL2RvYy9odG1sL2ltYWdlcy9ob21lLnBuZyIgYWx0PSJIb21lIj48L2E+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJ1c2FnZS12YXJpYW50cy9leHRlcm4tdGVzdC1ydW5uZXIuaHRtbCI+PGltZyBzcmM9Ii4uLy4uLy4uLy4uLy4uLy4uL2RvYy9odG1sL2ltYWdlcy9uZXh0LnBuZyIgYWx0PSJOZXh0Ij48L2E+CjwvZGl2Pgo8L2JvZHk+CjwvaHRtbD4K