LyoKICogV3JpdHRlbiBieSBKLlQuIENvbmtsaW4gPGp0Y0BuZXRic2Qub3JnPi4KICogUHVibGljIGRvbWFpbi4KICoKICogQWRhcHRlZCBmb3IgYGxvbmcgZG91YmxlJyBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPi4KICogQWRhcHRlZCBmb3IgeDg2LTY0IGJ5IEFuZHJlYXMgSmFlZ2VyIDxhakBzdXNlLmRlPi4KICovCgojaW5jbHVkZSA8bWFjaGluZS9hc20uaD4KClJDU0lEKCIkTmV0QlNEOiBzX2xvZzFwLlMsdiAxLjcgMTk5NS8wNS8wOSAwMDoxMDo1OCBqdGMgRXhwICQiKQoKI2lmZGVmIF9fRUxGX18KCS5zZWN0aW9uIC5yb2RhdGEKI2Vsc2UKCS50ZXh0CiNlbmRpZgoJLmFsaWduIEFMSUdOQVJHKDQpCgkvKiBUaGUgZnlsMnhwMSBjYW4gb25seSBiZSB1c2VkIGZvciB2YWx1ZXMgaW4KCQktMSArIHNxcnQoMikgLyAyIDw9IHggPD0gMSAtIHNxcnQoMikgLyAyCgkgICAwLjI5IGlzIGEgc2FmZSB2YWx1ZS4KCSovCmxpbWl0OgkudGZsb2F0IDAuMjkKCS8qIFBsZWFzZSBub3RlOgkgd2UgdXNlIGEgZG91YmxlIHZhbHVlIGhlcmUuICBTaW5jZSAxLjAgaGFzCgkgICBhbiBleGFjdCByZXByZXNlbnRhdGlvbiB0aGlzIGRvZXMgbm90IGVmZmVjdCB0aGUgYWNjdXJhY3kKCSAgIGJ1dCBpdCBoZWxwcyB0byBvcHRpbWl6ZSB0aGUgY29kZS4gICovCm9uZToJLmRvdWJsZSAxLjAKCi8qCiAqIFVzZSB0aGUgZnlsMnhwMSBmdW5jdGlvbiB3aGVuIHRoZSBhcmd1bWVudCBpcyBpbiB0aGUgcmFuZ2UgLTAuMjkgdG8gMC4yOSwKICogb3RoZXJ3aXNlIGZ5bDJ4IHdpdGggdGhlIG5lZWRlZCBleHRyYSBjb21wdXRhdGlvbi4KICovCiNpZmRlZiBQSUMKI2RlZmluZSBNTyhvcCkgb3AjIyglcmlwKQojZWxzZQojZGVmaW5lIE1PKG9wKSBvcAojZW5kaWYKCgkudGV4dApFTlRSWShfX2xvZzFwbCkKCWZsZGxuMgoKCWZsZHQJOCglcnNwKQoKCWZ4YW0KCWZuc3RzdwoJZmxkCSVzdAoJdGVzdGIJJDEsICVhaAoJam56CTNmCQkvLyBpbiBjYXNlIHggaXMgTmFOIG9yILFJbmYKNDoKCWZhYnMKCWZsZHQJTU8obGltaXQpCglmY29tcHAKCWZuc3RzdwoJYW5kYgkkMSwlYWgKCWp6CTJmCgoJZmFkZGwJTU8ob25lKQoJZnlsMngKCXJldAoKMjoJZnlsMnhwMQoJcmV0CgozOgl0ZXN0YgkkNCwgJWFoCglqbnoJNGIJCS8vIGluIGNhc2UgeCBpcyCxSW5mCglmc3RwCSVzdCgxKQoJZnN0cAklc3QoMSkKCXJldAoKRU5EIChfX2xvZzFwbCkKd2Vha19hbGlhcyAoX19sb2cxcGwsIGxvZzFwbCkK