LyoqCiAqIFRoaXMgZmlsZSBoYXMgbm8gY29weXJpZ2h0IGFzc2lnbmVkIGFuZCBpcyBwbGFjZWQgaW4gdGhlIFB1YmxpYyBEb21haW4uCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB3NjQgbWluZ3ctcnVudGltZSBwYWNrYWdlLgogKiBObyB3YXJyYW50eSBpcyBnaXZlbjsgcmVmZXIgdG8gdGhlIGZpbGUgRElTQ0xBSU1FUi5QRCB3aXRoaW4gdGhpcyBwYWNrYWdlLgogKi8KI2luY2x1ZGUgPF9taW5nd19tYWMuaD4KCgkuZmlsZQkibG9nMXBmLlMiCgkudGV4dAojaWZkZWYgX1dJTjY0CgkuYWxpZ24gOAojZWxzZQoJLmFsaWduIDQKI2VuZGlmCgkvKiBUaGUgZnlsMnhwMSBjYW4gb25seSBiZSB1c2VkIGZvciB2YWx1ZXMgaW4KCSAgIC0xICsgc3FydCgyKSAvIDIgPD0geCA8PSAxIC0gc3FydCgyKSAvIDIKCSAgIDAuMjkgaXMgYSBzYWZlIHZhbHVlLgoJICovCmxpbWl0OgkuZmxvYXQgMC4yOQpvbmU6CS5mbG9hdCAxLjAKLyoKICogVXNlIHRoZSBmeWwyeHAxIGZ1bmN0aW9uIHdoZW4gdGhlIGFyZ3VtZW50IGlzIGluIHRoZSByYW5nZSAtMC4yOSB0byAwLjI5LAogKiBvdGhlcndpc2UgZnlsMnggd2l0aCB0aGUgbmVlZGVkIGV4dHJhIGNvbXB1dGF0aW9uLgogKi8KLmdsb2JsIF9fTUlOR1dfVVNZTUJPTChsb2cxcGYpCgkuZGVmCV9fTUlOR1dfVVNZTUJPTChsb2cxcGYpOwkuc2NsCTI7CS50eXBlCTMyOwkuZW5kZWYKX19NSU5HV19VU1lNQk9MKGxvZzFwZik6CiNpZmRlZiBfV0lONjQKCW1vdnNzCSV4bW0wLC0xMiglcnNwKQoJZmxkbG4yCglmbGRzCS0xMiglcnNwKQoJZnhhbQoJZm5zdHN3CglmbGQJJXN0CglzYWhmCglqYwkzZgkJLy8gaW4gY2FzZSB4IGlzIE5hTiBvciCxSW5mCgo0OglmYWJzCglmY29tcHMJbGltaXQoJXJpcCkKCWZuc3RzdwoJc2FoZgoJamMJMmYKCWZhZGRzCW9uZSglcmlwKQoJZnlsMngKCWZzdHBzCS0xMiglcnNwKQoJbW92c3MJLTEyKCVyc3ApLCV4bW0wCglyZXQKCjI6CWZ5bDJ4cDEKCWZzdHBzCS0xMiglcnNwKQoJbW92c3MJLTEyKCVyc3ApLCV4bW0wCglyZXQKCjM6CWpwCTRiCQkvLyBpbiBjYXNlIHggaXMgsUluZgoJZnN0cAklc3QoMSkKCWZzdHAJJXN0KDEpCglmc3RwcwktMTIoJXJzcCkKCW1vdnNzCS0xMiglcnNwKSwleG1tMAoJcmV0CiNlbHNlCglmbGRsbjIKCWZsZHMJNCglZXNwKQoJZnhhbQoJZm5zdHN3CglmbGQJJXN0CglzYWhmCglqYwkzZgkJLy8gaW4gY2FzZSB4IGlzIE5hTiBvciCxSW5mCgo0OglmYWJzCglmY29tcHMJbGltaXQKCWZuc3RzdwoJc2FoZgoJamMJMmYKCWZhZGRzCW9uZQoJZnlsMngKCXJldAoKMjoJZnlsMnhwMQoJcmV0CgozOglqcAk0YgkJLy8gaW4gY2FzZSB4IGlzILFJbmYKCWZzdHAJJXN0KDEpCglmc3RwCSVzdCgxKQoJcmV0CiNlbmRpZgo=