PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkJPT1NUX1BQX01VTF9EPC90aXRsZT4KCTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3N0eWxlcy5jc3MiPgo8L2hlYWQ+Cjxib2R5PgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6ICAwcHg7Ij4KCQlUaGUgPGI+Qk9PU1RfUFBfTVVMX0Q8L2I+IG1hY3JvIGV4cGFuZHMgdG8gdGhlIHByb2R1Y3Qgb2YgaXRzIHNlY29uZCBhbmQgdGhpcmQgYXJndW1lbnRzLiZuYnNwOwoJCUl0IHJlZW50ZXJzIDxiPkJPT1NUX1BQX1dISUxFPC9iPiB3aXRoIG1heGltdW0gZWZmaWNpZW5jeS4KCTwvZGl2PgoJPGg0PlVzYWdlPC9oND4KCQk8ZGl2IGNsYXNzPSJjb2RlIj4KCQkJPGI+Qk9PU1RfUFBfTVVMX0Q8L2I+KDxpPmQ8L2k+LCA8aT54PC9pPiwgPGk+eTwvaT4pCgkJPC9kaXY+Cgk8aDQ+QXJndW1lbnRzPC9oND4KCQk8ZGw+CgkJCTxkdD5kPC9kdD4KCQkJPGRkPgoJCQkJVGhlIG5leHQgYXZhaWxhYmxlIDxiPkJPT1NUX1BQX1dISUxFPC9iPiBpdGVyYXRpb24uJm5ic3A7CgkJCTwvZGQ+CgkJCTxkdD54PC9kdD4KCQkJPGRkPgoJCQkJVGhlIG11bHRpcGxpY2FuZCBvZiB0aGUgb3BlcmF0aW9uLiZuYnNwOwoJCQkJVmFsaWQgdmFsdWVzIHJhbmdlIGZyb20gPGk+MDwvaT4gdG8gPGI+Qk9PU1RfUFBfTElNSVRfTUFHPC9iPi4KCQkJPC9kZD4KCQkJPGR0Pnk8L2R0PgoJCQk8ZGQ+CgkJCQlUaGUgbXVsdGlwbGllciBvZiB0aGUgb3BlcmF0aW9uLiZuYnNwOwoJCQkJVmFsaWQgdmFsdWVzIHJhbmdlIGZyb20gPGk+MDwvaT4gdG8gPGI+Qk9PU1RfUFBfTElNSVRfTUFHPC9iPi4KCQkJPC9kZD4KCQk8L2RsPgoJPGg0PlJlbWFya3M8L2g0PgoJCTxkaXY+CgkJCUlmIHRoZSBwcm9kdWN0IG9mIDxpPng8L2k+IGFuZCA8aT55PC9pPiBpcyBncmVhdGVyIHRoYW4gPGI+Qk9PU1RfUFBfTElNSVRfTUFHPC9iPiwgdGhlIHJlc3VsdCBpcyBzYXR1cmF0ZWQgdG8gPGI+Qk9PU1RfUFBfTElNSVRfTUFHPC9iPi4KCQk8L2Rpdj4KCQk8ZGl2PgoJCQlUaGlzIG1hY3JvIGlzIHRoZSBtb3N0IGVmZmljaWVudCB3aGVuIDxpPng8L2k+IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byA8aT55PC9pPi4mbmJzcDsKCQkJSG93ZXZlciwgdGhlIGVmZmljaWVuY3kgZ2FpbiBpcyBub3Qgd29ydGggYWN0dWFsbHkgY29tcGFyaW5nIHRoZSB0d28gYXJndW1lbnRzIHByaW9yIHRvIGludm9jYXRpb24uJm5ic3A7CgkJCUluIG90aGVyIHdvcmRzLCA8aT54PC9pPiBzaG91bGQgYmUgdGhlIHZhbHVlIHRoYXQgaXMgPGk+bW9zdCBsaWtlbHk8L2k+IHRvIGJlIHRoZSBsYXJnZXN0IG9mIHRoZSB0d28gb3BlcmFuZHMuCgkJPC9kaXY+Cgk8aDQ+U2VlIEFsc288L2g0PgoJCTx1bD4KCQkJPGxpPjxhIGhyZWY9ImxpbWl0X21hZy5odG1sIj5CT09TVF9QUF9MSU1JVF9NQUc8L2E+PC9saT4KCQkJPGxpPjxhIGhyZWY9Im11bC5odG1sIj5CT09TVF9QUF9NVUw8L2E+PC9saT4KCQk8L3VsPgoJPGg0PlJlcXVpcmVtZW50czwvaDQ+CgkJPGRpdj4KCQkJPGI+SGVhZGVyOjwvYj4gJm5ic3A7PGEgaHJlZj0iLi4vaGVhZGVycy9hcml0aG1ldGljL211bC5odG1sIj4mbHQ7Ym9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvbXVsLmhwcCZndDs8L2E+CgkJPC9kaXY+Cgk8aDQ+U2FtcGxlIENvZGU8L2g0Pgo8ZGl2PjxwcmU+CiNpbmNsdWRlICZsdDs8YSBocmVmPSIuLi9oZWFkZXJzL2FyaXRobWV0aWMvZGVjLmh0bWwiPmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2RlYy5ocHA8L2E+Jmd0OwojaW5jbHVkZSAmbHQ7PGEgaHJlZj0iLi4vaGVhZGVycy9hcml0aG1ldGljL211bC5odG1sIj5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9tdWwuaHBwPC9hPiZndDsKI2luY2x1ZGUgJmx0OzxhIGhyZWY9Ii4uL2hlYWRlcnMvY29udHJvbC93aGlsZS5odG1sIj5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC93aGlsZS5ocHA8L2E+Jmd0OwojaW5jbHVkZSAmbHQ7PGEgaHJlZj0iLi4vaGVhZGVycy90dXBsZS9lbGVtLmh0bWwiPmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcDwvYT4mZ3Q7CgojZGVmaW5lIFBSRUQoZCwgZGF0YSkgPGEgaHJlZj0idHVwbGVfZWxlbS5odG1sIj5CT09TVF9QUF9UVVBMRV9FTEVNPC9hPigzLCAwLCBkYXRhKQoKI2RlZmluZSBPUChkLCBkYXRhKSBcCiAgICggXAogICAgICA8YSBocmVmPSJkZWMuaHRtbCI+Qk9PU1RfUFBfREVDPC9hPiggXAogICAgICAgICA8YSBocmVmPSJ0dXBsZV9lbGVtLmh0bWwiPkJPT1NUX1BQX1RVUExFX0VMRU08L2E+KDMsIDAsIGRhdGEpIFwKICAgICAgKSwgXAogICAgICA8YSBocmVmPSJ0dXBsZV9lbGVtLmh0bWwiPkJPT1NUX1BQX1RVUExFX0VMRU08L2E+KDMsIDEsIGRhdGEpLCBcCiAgICAgIDxhIGhyZWY9Im11bF9kLmh0bWwiPkJPT1NUX1BQX01VTF9EPC9hPiggXAogICAgICAgICBkLCBcCiAgICAgICAgIDxhIGhyZWY9InR1cGxlX2VsZW0uaHRtbCI+Qk9PU1RfUFBfVFVQTEVfRUxFTTwvYT4oMywgMiwgZGF0YSksIFwKICAgICAgICAgPGEgaHJlZj0idHVwbGVfZWxlbS5odG1sIj5CT09TVF9QUF9UVVBMRV9FTEVNPC9hPigzLCAxLCBkYXRhKSBcCiAgICAgICkgXAogICApIFwKICAgLyoqLwoKLy8gcmFpc2UgJ3gnIHRvIHRoZSAnbictdGggcG93ZXIKI2RlZmluZSBFWFAoeCwgbikgPGEgaHJlZj0idHVwbGVfZWxlbS5odG1sIj5CT09TVF9QUF9UVVBMRV9FTEVNPC9hPigzLCAyLCA8YSBocmVmPSJ3aGlsZS5odG1sIj5CT09TVF9QUF9XSElMRTwvYT4oUFJFRCwgT1AsIChuLCB4LCAxKSkpCgpFWFAoNCwgMikgLy8gZXhwYW5kcyB0byAxNgpFWFAoMiwgMykgLy8gZXhwYW5kcyB0byA4CjwvcHJlPjwvZGl2PgoJPGhyIHNpemU9IjEiPgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDBweDsiPgoJCTxpPqkgQ29weXJpZ2h0IDxhIGhyZWY9Imh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tIiB0YXJnZXQ9Il90b3AiPkhvdXNlbWFycXVlIE95PC9hPiAyMDAyPC9pPgoJCTwvYnI+PGk+qSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDI8L2k+Cgk8L2Rpdj4KCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwcHg7Ij4KCQk8cD48c21hbGw+RGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCgkJYWNjb21wYW55aW5nIGZpbGUgPGEgaHJlZj0iLi4vLi4vLi4vLi4vTElDRU5TRV8xXzAudHh0Ij5MSUNFTlNFXzFfMC50eHQ8L2E+IG9yCgkJY29weSBhdCA8YSBocmVmPQoJCSJodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQiPnd3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0PC9hPik8L3NtYWxsPjwvcD4KCTwvZGl2Pgo8L2JvZHk+CjwvaHRtbD4K