PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkJPT1NUX1BQX0xJU1RfQVBQRU5EPC90aXRsZT4KCTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3N0eWxlcy5jc3MiPgkKPC9oZWFkPgo8Ym9keT4KCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OiAgMHB4OyI+CgkJVGhlIDxiPkJPT1NUX1BQX0xJU1RfQVBQRU5EPC9iPiBtYWNybyBhcHBlbmRzIHR3byA8aT5saXN0czwvaT4uCgk8L2Rpdj4KCTxoND5Vc2FnZTwvaDQ+CgkJPGRpdiBjbGFzcz0iY29kZSI+CgkJCTxiPkJPT1NUX1BQX0xJU1RfQVBQRU5EPC9iPig8aT5hPC9pPiwgPGk+YjwvaT4pCgkJPC9kaXY+Cgk8aDQ+QXJndW1lbnRzPC9oND4KCQk8ZGw+CgkJCTxkdD5hPC9kdD4KCQkJPGRkPgoJCQkJVGhlIGZpcnN0IDxpPmxpc3Q8L2k+LgoJCQk8L2RkPgoJCQk8ZHQ+YjwvZHQ+CgkJCTxkZD4KCQkJCVRoZSBzZWNvbmQgPGk+bGlzdDwvaT4uCgkJCTwvZGQ+CgkJPC9kbD4KCTxoND5SZW1hcmtzPC9oND4KCQk8ZGl2PgoJCQlUaGlzIG1hY3JvIGFwcGVuZHMgdHdvIGxpc3RzLiZuYnNwOwoJCQlGb3IgZXhhbXBsZSwgaWYgPGk+YTwvaT4gaXMgKDxpPjE8L2k+LCAoPGk+MjwvaT4sICg8aT4zPC9pPiwgPGI+Qk9PU1RfUFBfTklMPC9iPikpKSBhbmQgPGk+YjwvaT4gaXMgKDxpPjQ8L2k+LCAoPGk+NTwvaT4sIDxiPkJPT1NUX1BQX05JTDwvYj4pKSwKCQkJdGhpcyBtYWNybyB3aWxsIGV4cGFuZCB0bzoKCQkJPGRpdj4KCQkJCSg8aT4xPC9pPiwgKDxpPjI8L2k+LCAoPGk+MzwvaT4sICg8aT40PC9pPiwgKDxpPjU8L2k+LCA8Yj5CT09TVF9QUF9OSUw8L2I+KSkpKSkKCQkJPC9kaXY+CgkJPC9kaXY+CgkJPGRpdj4KCQkJUHJldmlvdXNseSwgdGhpcyBtYWNybyBjb3VsZCBub3QgYmUgdXNlZCBpbnNpZGUgPGI+Qk9PU1RfUFBfV0hJTEU8L2I+LiZuYnNwOwoJCQlUaGVyZSBpcyBubyBsb25nZXIgYW55IHN1Y2ggcmVzdHJpY3Rpb24uJm5ic3A7CgkJCUl0IGlzIG1vcmUgZWZmaWNpZW50LCBob3dldmVyLCB0byB1c2UgPGI+Qk9PU1RfUFBfTElTVF9BUFBFTkRfRDwvYj4gaW4gc3VjaCBhIHNpdHVhdGlvbi4KCQk8L2Rpdj4KCTxoND5TZWUgQWxzbzwvaDQ+CgkJPHVsPgoJCQk8bGk+PGEgaHJlZj0ibGlzdF9hcHBlbmRfZC5odG1sIj5CT09TVF9QUF9MSVNUX0FQUEVORF9EPC9hPjwvbGk+CgkJPC91bD4KCTxoND5SZXF1aXJlbWVudHM8L2g0PgoJCTxkaXY+CgkJCTxiPkhlYWRlcjo8L2I+ICZuYnNwOzxhIGhyZWY9Ii4uL2hlYWRlcnMvbGlzdC9hcHBlbmQuaHRtbCI+Jmx0O2Jvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2FwcGVuZC5ocHAmZ3Q7PC9hPgoJCTwvZGl2PgoJPGg0PlNhbXBsZSBDb2RlPC9oND4KPGRpdj48cHJlPgojaW5jbHVkZSAmbHQ7PGEgaHJlZj0iLi4vaGVhZGVycy9saXN0L2FwcGVuZC5odG1sIj5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9hcHBlbmQuaHBwPC9hPiZndDsKCiNkZWZpbmUgTDEgKGEsIChiLCAoYywgPGEgaHJlZj0ibmlsLmh0bWwiPkJPT1NUX1BQX05JTDwvYT4pKSkKI2RlZmluZSBMMiAoeCwgKHksICh6LCA8YSBocmVmPSJuaWwuaHRtbCI+Qk9PU1RfUFBfTklMPC9hPikpKQoKPGEgaHJlZj0ibGlzdF9hcHBlbmQuaHRtbCI+Qk9PU1RfUFBfTElTVF9BUFBFTkQ8L2E+KEwxLCBMMikKICAgLy8gZXhwYW5kcyB0byAoYSwgKGIsIChjLCAoeCwgKHksICh6LCA8YSBocmVmPSJuaWwuaHRtbCI+Qk9PU1RfUFBfTklMPC9hPikpKSkpKQo8L3ByZT48L2Rpdj4KCTxociBzaXplPSIxIj4KCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwcHg7Ij4KCQk8aT6pIENvcHlyaWdodCA8YSBocmVmPSJodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbSIgdGFyZ2V0PSJfdG9wIj5Ib3VzZW1hcnF1ZSBPeTwvYT4gMjAwMjwvaT4KCQk8L2JyPjxpPqkgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyPC9pPgoJPC9kaXY+Cgk8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDogMHB4OyI+CgkJPHA+PHNtYWxsPkRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQoJCWFjY29tcGFueWluZyBmaWxlIDxhIGhyZWY9Ii4uLy4uLy4uLy4uL0xJQ0VOU0VfMV8wLnR4dCI+TElDRU5TRV8xXzAudHh0PC9hPiBvcgoJCWNvcHkgYXQgPGEgaHJlZj0KCQkiaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ij53d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dDwvYT4pPC9zbWFsbD48L3A+Cgk8L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+Cg==