PGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4KPHRpdGxlPkhlbGxvIHRoZSB0ZXN0aW5nIHdvcmxkIG9yIGJlZ2lubmVyJ3MgaW50cm9kdWN0aW9uIGludG8gdGVzdGluZyB1c2luZyB0aGUgVW5pdCBUZXN0IEZyYW1ld29yazwvdGl0bGU+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vc3R5bGUvc3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CjxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzQuMCI+CjxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iLi4vaW5kZXguaHRtbCIgdGl0bGU9IkJvb3N0IFRlc3QgTGlicmFyeSI+CjxsaW5rIHJlbD0idXAiIGhyZWY9Ii4uL3V0Zi90dXRvcmlhbHMuaHRtbCIgdGl0bGU9IlRoZSB1bml0IHRlc3QgZnJhbWV3b3JrIHR1dG9yaWFscyI+CjxsaW5rIHJlbD0icHJldiIgaHJlZj0iaW50cm8taW4tdGVzdGluZy5odG1sIiB0aXRsZT0iSW50cm9kdWN0aW9uIGludG8gdGVzdGluZyBvciB3aHkgdGVzdGluZyBpcyB3b3J0aCB0aGUgZWZmb3J0Ij4KPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJuZXcteWVhci1yZXNvbHV0aW9uLmh0bWwiIHRpdGxlPSdCb29zdC5UZXN0IGRyaXZlbiBkZXZlbG9wbWVudCBvciAiZ2V0dGluZyBzdGFydGVkIiBmb3IgVEREIGZvbGxvd2Vycyc+CjxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQxLjIiIHNyYz0iLi4vLi4vanMvYm9vc3QtdGVzdC5qcyI+PC9zY3JpcHQ+CjwvaGVhZD4KPGJvZHkgYmdjb2xvcj0id2hpdGUiIHRleHQ9ImJsYWNrIiBsaW5rPSIjMDAwMEZGIiB2bGluaz0iIzg0MDA4NCIgYWxpbms9IiMwMDAwRkYiPgo8dGFibGUgd2lkdGg9IjEwMCUiPjx0cj4KPHRkIHdpZHRoPSIxMCUiPjxhIGhyZWY9Ii4uL2luZGV4Lmh0bWwiPjxpbWcgYWx0PSJIb21lIiB3aWR0aD0iMjI5IiBoZWlnaHQ9IjYxIiBib3JkZXI9IjAiIHNyYz0iLi4vLi4vLi4vLi4vLi4vbGlicy90ZXN0L2RvY2Jvb2svaW1nL2Jvb3N0LnRlc3QubG9nby5wbmciPjwvYT48L3RkPgo8dGQgdmFsaWduPSJtaWRkbGUiIGFsaWduPSJsZWZ0Ij4gJmd0OyA8YSBocmVmPSIuLi91dGYuaHRtbCI+VGhlIFVuaXQgVGVzdCBGcmFtZXdvcms8L2E+ICZndDsgPGEgaHJlZj0iLi4vdXRmL3R1dG9yaWFscy5odG1sIj5UdXRvcmlhbHM8L2E+PGEgaHJlZj0iLi4vdXRmL2NvbXBpbGF0aW9uLmh0bWwiPgogICAgICAmZ3Q7CiAgICAgIDwvYT48Yj5IZWxsbyB0aGUgdGVzdGluZyB3b3JsZDwvYj4KPC90ZD4KPHRkPjxkaXYgY2xhc3M9InNwaXJpdC1uYXYiPgo8YSBocmVmPSJpbnRyby1pbi10ZXN0aW5nLmh0bWwiPjxpbWcgc3JjPSIuLi8uLi8uLi8uLi8uLi9kb2MvaHRtbC9pbWFnZXMvcHJldi5wbmciIGFsdD0iUHJldiI+PC9hPjxhIGhyZWY9Im5ldy15ZWFyLXJlc29sdXRpb24uaHRtbCI+PGltZyBzcmM9Ii4uLy4uLy4uLy4uLy4uL2RvYy9odG1sL2ltYWdlcy9uZXh0LnBuZyIgYWx0PSJOZXh0Ij48L2E+CjwvZGl2PjwvdGQ+CjwvdHI+PC90YWJsZT4KPGhyPgo8ZGl2IGNsYXNzPSJzZWN0aW9uIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoNCBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJ0dXRvcmlhbC5oZWxsby10aGUtdGVzdGluZy13b3JsZCI+PC9hPkhlbGxvIHRoZSB0ZXN0aW5nIHdvcmxkICBvciBiZWdpbm5lcidzIGludHJvZHVjdGlvbiBpbnRvIHRlc3RpbmcgdXNpbmcgdGhlIFVuaXQgVGVzdCBGcmFtZXdvcms8L2g0PjwvZGl2PjwvZGl2PjwvZGl2Pgo8cCBjbGFzcz0iZmlyc3QtbGluZS1pbmRlbnRlZCI+CiAgSG93IHNob3VsZCBhIHRlc3QgcHJvZ3JhbSByZXBvcnQgZXJyb3JzPyBEaXNwbGF5aW5nIGFuIGVycm9yIG1lc3NhZ2UgaXMgYW4gb2J2aW91cyBwb3NzaWJpbGl0eToKIDwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmlmKCBzb21ldGhpbmdfYmFkX2RldGVjdGVkICkKICBzdGQ6OmNvdXQgJmx0OyZsdDsgInNvbWV0aGluZyBiYWQgaGFzIGJlZW4gZGV0ZWN0ZWQiICZsdDsmbHQ7IHN0ZDo6ZW5kbDs8L3ByZT4KPHAgY2xhc3M9ImZpcnN0LWxpbmUtaW5kZW50ZWQiPgogIEJ1dCB0aGF0IHJlcXVpcmVzIGluc3BlY3Rpb24gb2YgdGhlIHByb2dyYW0ncyBvdXRwdXQgYWZ0ZXIgZWFjaCBydW4gdG8gZGV0ZXJtaW5lIGlmIGFuIGVycm9yIG9jY3VycmVkLiBTaW5jZSB0ZXN0IAogIHByb2dyYW1zIGFyZSBvZnRlbiBydW4gYXMgcGFydCBvZiBhIHJlZ3Jlc3Npb24gdGVzdCBzdWl0ZSwgaHVtYW4gaW5zcGVjdGlvbiBvZiBvdXRwdXQgdG8gZGV0ZWN0IGVycm9yIG1lc3NhZ2VzIGlzIAogIHRpbWUgY29uc3VtaW5nIGFuZCB1bnJlbGlhYmxlLiBUZXN0IGZyYW1ld29ya3MgbGlrZSBHTlUvZXhwZWN0IGNhbiBkbyB0aGUgaW5zcGVjdGlvbnMgYXV0b21hdGljYWxseSwgYnV0IGFyZSAKICBvdmVybHkgY29tcGxleCBmb3Igc2ltcGxlIHRlc3RpbmcuCiA8L3A+CjxwIGNsYXNzPSJmaXJzdC1saW5lLWluZGVudGVkIj4KICBBIGJldHRlciBzaW1wbGUgd2F5IHRvIHJlcG9ydCBlcnJvcnMgaXMgZm9yIHRoZSB0ZXN0IHByb2dyYW0gdG8gcmV0dXJuIEVYSVRfU1VDQ0VTUyAobm9ybWFsbHkgMCkgaWYgdGhlIHRlc3QgcHJvZ3JhbSAKICBjb21wbGV0ZXMgc2F0aXNmYWN0b3JpbHksIGFuZCBFWElUX0ZBSUxVUkUgaWYgYW4gZXJyb3IgaXMgZGV0ZWN0ZWQuIFRoaXMgYWxsb3dzIGEgc2ltcGxlIHJlZ3Jlc3Npb24gdGVzdCBzY3JpcHQgdG8gCiAgYXV0b21hdGljYWxseSBhbmQgdW5hbWJpZ3VvdXMgZGV0ZWN0IHN1Y2Nlc3Mgb3IgZmFpbHVyZS4gRnVydGhlciBhcHByb3ByaWF0ZSBhY3Rpb25zIHN1Y2ggYXMgY3JlYXRpbmcgYW4gSFRNTCB0YWJsZSAKICBvciBlbWFpbGluZyBhbiBhbGVydCBjYW4gYmUgdGFrZW4gYnkgdGhlIHNjcmlwdCwgYW5kIGNhbiBiZSBtb2RpZmllZCBhcyBkZXNpcmVkIHdpdGhvdXQgaGF2aW5nIHRvIGNoYW5nZSB0aGUgYWN0dWFsCiAgQysrIHRlc3QgcHJvZ3JhbXMuCiA8L3A+CjxwIGNsYXNzPSJmaXJzdC1saW5lLWluZGVudGVkIj4KICBBIHRlc3RpbmcgcHJvdG9jb2wgYmFzZWQgb24gYSBwb2xpY3kgb2YgdGVzdCBwcm9ncmFtcyByZXR1cm5pbmcgRVhJVF9TVUNDRVNTIG9yIEVYSVRfRkFJTFVSRSBkb2VzIG5vdCByZXF1aXJlIGFueSAKICBzdXBwb3J0aW5nIHRvb2xzOyB0aGUgQysrIGxhbmd1YWdlIGFuZCBzdGFuZGFyZCBsaWJyYXJ5IGFyZSBzdWZmaWNpZW50LiBUaGUgcHJvZ3JhbW1lciBtdXN0IHJlbWVtYmVyLCBob3dldmVyLCB0byAKICBjYXRjaCBhbGwgZXhjZXB0aW9ucyBhbmQgY29udmVydCB0aGVtIHRvIHByb2dyYW0gZXhpdHMgd2l0aCBub24temVybyByZXR1cm4gY29kZXMuIFRoZSBwcm9ncmFtbWVyIG11c3QgYWxzbyByZW1lbWJlciAKICB0byBub3QgdXNlIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGFzc2VydCgpIG1hY3JvIGZvciB0ZXN0IGNvZGUsIGJlY2F1c2Ugb24gc29tZSBzeXN0ZW1zIGl0IHJlc3VsdHMgaW4gdW5kZXNpcmFibGUgc2lkZSAKICBlZmZlY3RzIGxpa2UgYSBtZXNzYWdlIHJlcXVpcmluZyBtYW51YWwgaW50ZXJ2ZW50aW9uLgogPC9wPgo8cCBjbGFzcz0iZmlyc3QtbGluZS1pbmRlbnRlZCI+CiAgVGhlIEJvb3N0IFRlc3QgTGlicmFyeSdzIFVuaXQgVGVzdCBGcmFtZXdvcmsgaXMgZGVzaWduZWQgdG8gYXV0b21hdGUgdGhvc2UgdGFza3MuIFRoZSBsaWJyYXJ5IHN1cHBsaWVkIG1haW4oKSAKICByZWxpZXZlcyB1c2VycyBmcm9tIG1lc3N5IGVycm9yIGRldGVjdGlvbiBhbmQgcmVwb3J0aW5nIGR1dGllcy4gVXNlcnMgY291bGQgdXNlIHN1cHBsaWVkIHRlc3RpbmcgdG9vbHMgdG8gcGVyZm9ybSAKICBjb21wbGV4IHZhbGlkYXRpb24gdGFza3MuIExldCdzIHRha2UgYSBsb29rIG9uIHRoZSBmb2xsb3dpbmcgc2ltcGxlIHRlc3QgcHJvZ3JhbToKIDwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiNpbmNsdWRlICZsdDtteV9jbGFzcy5ocHAmZ3Q7CgppbnQgbWFpbiggaW50LCBjaGFyKiBbXSApCnsKICAgIG15X2NsYXNzIHRlc3Rfb2JqZWN0KCAicXdlcnR5IiApOwoKICAgIHJldHVybiB0ZXN0X29iamVjdC5pc192YWxpZCgpID8gRVhJVF9TVUNDRVNTIDogRVhJVF9GQUlMVVJFOwp9CjwvcHJlPgo8cCBjbGFzcz0iZmlyc3QtbGluZS1pbmRlbnRlZCI+CiAgVGhlcmUgYXJlIHNldmVyYWwgaXNzdWVzIHdpdGggYWJvdmUgdGVzdC4KIDwvcD4KPGRpdiBjbGFzcz0ib3JkZXJlZGxpc3QiPjxvbCB0eXBlPSIxIj4KPGxpPllvdSBuZWVkIHRvIGNvbnZlcnQgaXNfdmFsaWQgcmVzdWx0IGluIHByb3BlciByZXN1bHQgY29kZS48L2xpPgo8bGk+V291bGQgZXhjZXB0aW9uIGhhcHBlbiBpbiB0ZXN0X29iamVjdCBjb25zdHJ1Y3Rpb24gb2YgbWV0aG9kIGlzX3ZhbGlkIGludm9jYXRpb24sIHRoZSBwcm9ncmFtIHdpbGwgY3Jhc2guPC9saT4KPGxpPllvdSB3b24ndCBzZWUgYW55IG91dHB1dCwgd291bGQgeW91IHJ1biB0aGlzIHRlc3QgbWFudWFsbHkuPC9saT4KPC9vbD48L2Rpdj4KPHAgY2xhc3M9ImZpcnN0LWxpbmUtaW5kZW50ZWQiPgogIFRoZSBVbml0IFRlc3QgRnJhbWV3b3JrIHNvbHZlcyBhbGwgdGhlc2UgaXNzdWVzLiBUbyBpbnRlZ3JhdGUgd2l0aCBpdCBhYm92ZSBwcm9ncmFtIG5lZWRzIHRvIGJlIGNoYW5nZWQgdG86CiA8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4jaW5jbHVkZSAmbHQ7bXlfY2xhc3MuaHBwJmd0OwojZGVmaW5lIEJPT1NUX1RFU1RfTU9EVUxFIE15VGVzdAojaW5jbHVkZSAmbHQ7Ym9vc3QvdGVzdC91bml0X3Rlc3QuaHBwJmd0OwoKQk9PU1RfQVVUT19URVNUX0NBU0UoIG15X3Rlc3QgKQp7CiAgICBteV9jbGFzcyB0ZXN0X29iamVjdCggInF3ZXJ0eSIgKTsKCiAgICBCT09TVF9DSEVDSyggdGVzdF9vYmplY3QuaXNfdmFsaWQoKSApOwp9CjwvcHJlPgo8cCBjbGFzcz0iZmlyc3QtbGluZS1pbmRlbnRlZCI+CiAgTm93LCB5b3Ugbm90IG9ubHkgcmVjZWl2ZSB1bmlmb3JtIHJlc3VsdCBjb2RlLCBldmVuIGluIGNhc2Ugb2YgZXhjZXB0aW9uLCBidXQgYWxzbyBuaWNlbHkgZm9ybWF0dGVkIG91dHB1dCBmcm9tIAogIEJPT1NUX0NIRUNLIHRvb2wsIHdvdWxkIHlvdSBjaG9vc2UgdG8gc2VlIGl0LiBJcyB0aGVyZSBhbnkgb3RoZXIgd2F5cyB0byBwZXJmb3JtIGNoZWNrcz8gVGhlIGZvbGxvd2luZyBleGFtcGxlIHRlc3QgCiAgcHJvZ3JhbSBzaG93cyBzZXZlcmFsIGRpZmZlcmVudCB3YXlzIHRvIGRldGVjdCBhbmQgcmVwb3J0IGFuIGVycm9yIGluIHRoZSBhZGQoKSBmdW5jdGlvbi4KIDwvcD4KPGRpdiBjbGFzcz0icHJvZ3JhbWxpc3RpbmdjbyI+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4jZGVmaW5lIEJPT1NUX1RFU1RfTU9EVUxFIE15VGVzdAojaW5jbHVkZSAmbHQ7Ym9vc3QvdGVzdC91bml0X3Rlc3QuaHBwJmd0OwoKaW50IGFkZCggaW50IGksIGludCBqICkgeyByZXR1cm4gaStqOyB9CgpCT09TVF9BVVRPX1RFU1RfQ0FTRSggbXlfdGVzdCApCnsKICAgIC8vIHNldmVuIHdheXMgdG8gZGV0ZWN0IGFuZCByZXBvcnQgdGhlIHNhbWUgZXJyb3I6CiAgICBCT09TVF9DSEVDSyggYWRkKCAyLDIgKSA9PSA0ICk7ICAgICAgICAvLyAjMSBjb250aW51ZXMgb24gZXJyb3IKCiAgICBCT09TVF9SRVFVSVJFKCBhZGQoIDIsMiApID09IDQgKTsgICAgICAvLyAjMiB0aHJvd3Mgb24gZXJyb3IKCiAgICBpZiggYWRkKCAyLDIgKSAhPSA0ICkKICAgICAgQk9PU1RfRVJST1IoICJPdWNoLi4uIiApOyAgICAgICAgICAgIC8vICMzIGNvbnRpbnVlcyBvbiBlcnJvcgoKICAgIGlmKCBhZGQoIDIsMiApICE9IDQgKQogICAgICBCT09TVF9GQUlMKCAiT3VjaC4uLiIgKTsgICAgICAgICAgICAgLy8gIzQgdGhyb3dzIG9uIGVycm9yCgogICAgaWYoIGFkZCggMiwyICkgIT0gNCApIHRocm93ICJPdWNoLi4uIjsgLy8gIzUgdGhyb3dzIG9uIGVycm9yCgogICAgQk9PU1RfQ0hFQ0tfTUVTU0FHRSggYWRkKCAyLDIgKSA9PSA0LCAgLy8gIzYgY29udGludWVzIG9uIGVycm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAiYWRkKC4uKSByZXN1bHQ6ICIgJmx0OyZsdDsgYWRkKCAyLDIgKSApOwoKICAgIEJPT1NUX0NIRUNLX0VRVUFMKCBhZGQoIDIsMiApLCA0ICk7CSAgLy8gIzcgY29udGludWVzIG9uIGVycm9yCn0KPC9wcmU+CjxkaXYgY2xhc3M9ImNhbGxvdXRsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBzdW1tYXJ5PSJDYWxsb3V0IGxpc3QiPgo8dHI+Cjx0ZCB3aWR0aD0iNSUiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCI+PHA+PGEgbmFtZT0ic25pcHBldDEyLmFubi0xIj48L2E+KDEpPC9wPjwvdGQ+Cjx0ZCB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiPjxwIGNsYXNzPSJmaXJzdC1saW5lLWluZGVudGVkIj4KICAgICBUaGlzIGFwcHJvYWNoIHVzZXMgdGhlIEJPT1NUX0NIRUNLIHRvb2wsIHdoaWNoIGRpc3BsYXlzIGFuIGVycm9yIG1lc3NhZ2UgKGJ5IGRlZmF1bHQgb24gc3RkOjpjb3V0KSB0aGF0IGluY2x1ZGVzIAogICAgIHRoZSBleHByZXNzaW9uIHRoYXQgZmFpbGVkLCB0aGUgc291cmNlIGZpbGUgbmFtZSwgYW5kIHRoZSBzb3VyY2UgZmlsZSBsaW5lIG51bWJlci4gSXQgYWxzbyBpbmNyZW1lbnRzIHRoZSBlcnJvciAKICAgICBjb3VudC4gQXQgcHJvZ3JhbSB0ZXJtaW5hdGlvbiwgdGhlIGVycm9yIGNvdW50IHdpbGwgYmUgZGlzcGxheWVkIGF1dG9tYXRpY2FsbHkgYnkgdGhlIFVuaXQgVGVzdCBGcmFtZXdvcmsuCiAgICA8L3A+PC90ZD4KPC90cj4KPHRyPgo8dGQgd2lkdGg9IjUlIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiPjxwPjxhIG5hbWU9InNuaXBwZXQxMi5hbm4tMiI+PC9hPigyKTwvcD48L3RkPgo8dGQgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij48cCBjbGFzcz0iZmlyc3QtbGluZS1pbmRlbnRlZCI+CiAgICAgVGhpcyBhcHByb2FjaCB1c2VzIHRoZSBCT09TVF9SRVFVSVJFIHRvb2wsIGlzIHNpbWlsYXIgdG8gYXBwcm9hY2ggIzEsIGV4Y2VwdCB0aGF0IGFmdGVyIGRpc3BsYXlpbmcgdGhlIGVycm9yLCAKICAgICBhbiBleGNlcHRpb24gaXMgdGhyb3duLCB0byBiZSBjYXVnaHQgYnkgdGhlIFVuaXQgVGVzdCBGcmFtZXdvcmsuIFRoaXMgYXBwcm9hY2ggaXMgc3VpdGFibGUgd2hlbiB3cml0aW5nIGFuCiAgICAgZXhwbGljaXQgdGVzdCBwcm9ncmFtLCBhbmQgdGhlIGVycm9yIHdvdWxkIGJlIHNvIHNldmVyZSBhcyB0byBtYWtlIGZ1cnRoZXIgdGVzdGluZyBpbXByYWN0aWNhbC4gQk9PU1RfUkVRVUlSRSAKICAgICBkaWZmZXJzIGZyb20gdGhlIEMrKyBTdGFuZGFyZCBMaWJyYXJ5J3MgYXNzZXJ0KCkgbWFjcm8gaW4gdGhhdCBpdCBpcyBhbHdheXMgZ2VuZXJhdGVkLCBhbmQgY2hhbm5lbHMgZXJyb3IgCiAgICAgZGV0ZWN0aW9uIGludG8gdGhlIHVuaWZvcm0gVW5pdCBUZXN0IEZyYW1ld29yayByZXBvcnRpbmcgcHJvY2VkdXJlLgogICAgPC9wPjwvdGQ+CjwvdHI+Cjx0cj4KPHRkIHdpZHRoPSI1JSIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij48cD48YSBuYW1lPSJzbmlwcGV0MTIuYW5uLTMiPjwvYT4oMyk8L3A+PC90ZD4KPHRkIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCI+PHAgY2xhc3M9ImZpcnN0LWxpbmUtaW5kZW50ZWQiPgogICAgIFRoaXMgYXBwcm9hY2ggaXMgc2ltaWxhciB0byBhcHByb2FjaCAjMSwgZXhjZXB0IHRoYXQgdGhlIGVycm9yIGRldGVjdGlvbiBhbmQgZXJyb3IgcmVwb3J0aW5nIGFyZSBjb2RlZCBzZXBhcmF0ZWx5LgogICAgIFRoaXMgaXMgbW9zdCB1c2VmdWwgd2hlbiB0aGUgc3BlY2lmaWMgY29uZGl0aW9uIGJlaW5nIHRlc3RlZCByZXF1aXJlcyBzZXZlcmFsIGluZGVwZW5kZW50IHN0YXRlbWVudHMgYW5kL29yIGlzIAogICAgIG5vdCBpbmRpY2F0aXZlIG9mIHRoZSByZWFzb24gZm9yIGZhaWx1cmUuCiAgICA8L3A+PC90ZD4KPC90cj4KPHRyPgo8dGQgd2lkdGg9IjUlIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiPjxwPjxhIG5hbWU9InNuaXBwZXQxMi5hbm4tNCI+PC9hPig0KTwvcD48L3RkPgo8dGQgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij48cCBjbGFzcz0iZmlyc3QtbGluZS1pbmRlbnRlZCI+CiAgICAgVGhpcyBhcHByb2FjaCBpcyBzaW1pbGFyIHRvIGFwcHJvYWNoICMyLCBleGNlcHQgdGhhdCB0aGUgZXJyb3IgZGV0ZWN0aW9uIGFuZCBlcnJvciByZXBvcnRpbmcgYXJlIGNvZGVkIHNlcGFyYXRlbHkuCiAgICAgVGhpcyBpcyBtb3N0IHVzZWZ1bCB3aGVuIHRoZSBzcGVjaWZpYyBjb25kaXRpb24gYmVpbmcgdGVzdGVkIHJlcXVpcmVzIHNldmVyYWwgaW5kZXBlbmRlbnQgc3RhdGVtZW50cyBhbmQvb3IgaXMgCiAgICAgbm90IGluZGljYXRpdmUgb2YgdGhlIHJlYXNvbiBmb3IgZmFpbHVyZS4KICAgIDwvcD48L3RkPgo8L3RyPgo8dHI+Cjx0ZCB3aWR0aD0iNSUiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCI+PHA+PGEgbmFtZT0ic25pcHBldDEyLmFubi01Ij48L2E+KDUpPC9wPjwvdGQ+Cjx0ZCB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiPjxwIGNsYXNzPSJmaXJzdC1saW5lLWluZGVudGVkIj4KICAgICBUaGlzIGFwcHJvYWNoIHRocm93cyBhbiBleGNlcHRpb24sIHdoaWNoIHdpbGwgYmUgY2F1Z2h0IGFuZCByZXBvcnRlZCBieSB0aGUgVW5pdCBUZXN0IEZyYW1ld29yay4gVGhlIGVycm9yIAogICAgIG1lc3NhZ2UgZGlzcGxheWVkIHdoZW4gdGhlIGV4Y2VwdGlvbiBpcyBjYXVnaHQgd2lsbCBiZSBtb3N0IG1lYW5pbmdmdWwgaWYgdGhlIGV4Y2VwdGlvbiBpcyBkZXJpdmVkIGZyb20gCiAgICAgc3RkOjpleGNlcHRpb24sIG9yIGlzIGEgY2hhciogb3Igc3RkOjpzdHJpbmcuCiAgICA8L3A+PC90ZD4KPC90cj4KPHRyPgo8dGQgd2lkdGg9IjUlIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiPjxwPjxhIG5hbWU9InNuaXBwZXQxMi5hbm4tNiI+PC9hPig2KTwvcD48L3RkPgo8dGQgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij48cCBjbGFzcz0iZmlyc3QtbGluZS1pbmRlbnRlZCI+CiAgICAgVGhpcyBhcHByb2FjaCB1c2VzIHRoZSBCT09TVF9DSEVDS19NRVNTQUdFIHRvb2wsIGlzIHNpbWlsYXIgdG8gYXBwcm9hY2ggIzEsIGV4Y2VwdCB0aGF0IHNpbWlsYXIgdG8gdGhlIGFwcHJvYWNoICMzCiAgICAgZGlzcGxheXMgYW4gYWx0ZXJuYXRpdmUgZXJyb3IgbWVzc2FnZSBzcGVjaWZpZWQgYXMgYSBzZWNvbmQgYXJndW1lbnQuCiAgICA8L3A+PC90ZD4KPC90cj4KPHRyPgo8dGQgd2lkdGg9IjUlIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiPjxwPjxhIG5hbWU9InNuaXBwZXQxMi5hbm4tNyI+PC9hPig3KTwvcD48L3RkPgo8dGQgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij48cCBjbGFzcz0iZmlyc3QtbGluZS1pbmRlbnRlZCI+CiAgICAgVGhpcyBhcHByb2FjaCB1c2VzIHRoZSBCT09TVF9DSEVDS19FUVVBTCB0b29sIGFuZCBmdW5jdGlvbmFsbHkgaXMgc2ltaWxhciB0byBhcHByb2FjaCAjMS4gVGhpcyBhcHByb2FjaCBpcyBtb3N0IAogICAgIGF0dHJhY3RpdmUgZm9yIGNoZWNraW5nIGVxdWFsaXR5IG9mIHR3byB2YXJpYWJsZXMsIHNpbmNlIGluIGNhc2Ugb2YgZXJyb3IgaXQgc2hvd3MgbWlzbWF0Y2hlZCB2YWx1ZXMuCiAgICA8L3A+PC90ZD4KPC90cj4KPC90YWJsZT48L2Rpdj4KPC9kaXY+CjxwPjwvcD4KPC9kaXY+Cjx0YWJsZSB4bWxuczpyZXY9Imh0dHA6Ly93d3cuY3MucnBpLmVkdS9+Z3JlZ29kL2Jvb3N0L3Rvb2xzL2RvYy9yZXZpc2lvbiIgd2lkdGg9IjEwMCUiPjx0cj4KPHRkIGFsaWduPSJsZWZ0Ij48L3RkPgo8dGQgYWxpZ249InJpZ2h0Ij48ZGl2IGNsYXNzPSJjb3B5cmlnaHQtZm9vdGVyIj5Db3B5cmlnaHQgqSAyMDAxLTIwMDcgR2VubmFkaXkgUm96ZW50YWw8L2Rpdj48L3RkPgo8L3RyPjwvdGFibGU+Cjxocj4KPGRpdiBjbGFzcz0ic3Bpcml0LW5hdiI+CjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iaW50cm8taW4tdGVzdGluZy5odG1sIj48aW1nIHNyYz0iLi4vLi4vLi4vLi4vLi4vZG9jL2h0bWwvaW1hZ2VzL3ByZXYucG5nIiBhbHQ9IlByZXYiPjwvYT48YSBhY2Nlc3NrZXk9InUiIGhyZWY9Ii4uL3V0Zi90dXRvcmlhbHMuaHRtbCI+PGltZyBzcmM9Ii4uLy4uLy4uLy4uLy4uL2RvYy9odG1sL2ltYWdlcy91cC5wbmciIGFsdD0iVXAiPjwvYT48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9Ii4uL2luZGV4Lmh0bWwiPjxpbWcgc3JjPSIuLi8uLi8uLi8uLi8uLi9kb2MvaHRtbC9pbWFnZXMvaG9tZS5wbmciIGFsdD0iSG9tZSI+PC9hPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0ibmV3LXllYXItcmVzb2x1dGlvbi5odG1sIj48aW1nIHNyYz0iLi4vLi4vLi4vLi4vLi4vZG9jL2h0bWwvaW1hZ2VzL25leHQucG5nIiBhbHQ9Ik5leHQiPjwvYT4KPC9kaXY+CjwvYm9keT4KPC9odG1sPgo=