Ly8gUmVzb3VyY2Ugc2NyaXB0IGZvciBQeXRob24gY29yZSBETEwuCi8vIEN1cnJlbnRseSBvbmx5IGhvbGRzIHZlcnNpb24gaW5mb3JtYXRpb24uCi8vCiNpbmNsdWRlICJ3aW52ZXIuaCIKCiNkZWZpbmUgTVNfV0lORE9XUwojaW5jbHVkZSAibW9kc3VwcG9ydC5oIgojaW5jbHVkZSAicGF0Y2hsZXZlbC5oIgoKLyogQWNyb3NzIHJlbGVhc2VzLCBjaGFuZ2U6CiAqICAgIE1TX0RMTF9JRCBpZiB0aGUgbWlub3IgdmVyc2lvbiBudW1iZXIgY2hhbmdlcy4KICogICAgUFlUSE9OX0RMTF9OQU1FIGRpdHRvLgogKiBNU19ETExfSUQgbXVzdCBtYXRjaCBQWV9WRVJTSU9OIGluIHRoZSBXaW5kb3dzIGluc3RhbGwgc2NyaXB0LgogKi8KI2RlZmluZSBNU19ETExfSUQgIjIuMyIKCiNpZm5kZWYgUFlUSE9OX0RMTF9OQU1FCiNkZWZpbmUgUFlUSE9OX0RMTF9OQU1FICJweXRob24yMi5kbGwiCiNlbmRpZgoKLyogTm90aGluZyBiZWxvdyB0aGlzIHNob3VsZCBuZWVkIHRvIGJlIGNoYW5nZWQgZXhjZXB0IGZvciBjb3B5cmlnaHQKICogbm90aWNlcyBhbmQgY29tcGFueSBuYW1lLgogKi8KCi8qIGUuZy4sIDIuMWEyCiAqIFBZX1ZFUlNJT04gY29tZXMgZnJvbSBwYXRjaGV2ZWwuaAogKi8KI2RlZmluZSBQWVRIT05fVkVSU0lPTiBQWV9WRVJTSU9OICJcMCIKCi8qIDY0LWJpdCB2ZXJzaW9uIG51bWJlciBhcyBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiA0IDE2LWJpdCBpbnRzICovCiNpZiBQWV9NSUNST19WRVJTSU9OID4gNjQKIyAgIGVycm9yICJQWV9NSUNST19WRVJTSU9OID4gNjQiCiNlbmRpZgojaWYgUFlfUkVMRUFTRV9MRVZFTCA+IDk5CiMgICBlcnJvciAiUFlfUkVMRUFTRV9MRVZFTCA+IDk5IgojZW5kaWYKI2lmIFBZX1JFTEVBU0VfU0VSSUFMID4gOQojICAgZXJyb3IgIlBZX1JFTEVBU0VfU0VSSUFMID4gOSIKI2VuZGlmCiNkZWZpbmUgRklFTEQzIChQWV9NSUNST19WRVJTSU9OKjEwMDAgKyBQWV9SRUxFQVNFX0xFVkVMKjEwICsgUFlfUkVMRUFTRV9TRVJJQUwpCiNkZWZpbmUgUFlWRVJTSU9ONjQgUFlfTUFKT1JfVkVSU0lPTiwgUFlfTUlOT1JfVkVSU0lPTiwgRklFTEQzLCBQWVRIT05fQVBJX1ZFUlNJT04KCi8vIFN0cmluZyBUYWJsZXMKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIDEwMDAsICAgTVNfRExMX0lECkVORAoKLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLy8KLy8gVmVyc2lvbgovLwoKVlNfVkVSU0lPTl9JTkZPIFZFUlNJT05JTkZPCiBGSUxFVkVSU0lPTiBQWVZFUlNJT042NAogUFJPRFVDVFZFUlNJT04gUFlWRVJTSU9ONjQKIEZJTEVGTEFHU01BU0sgMHgzZkwKI2lmZGVmIF9ERUJVRwogRklMRUZMQUdTIDB4MUwKI2Vsc2UKIEZJTEVGTEFHUyAweDBMCiNlbmRpZgogRklMRU9TIDB4NDAwMDRMCiBGSUxFVFlQRSAweDFMCiBGSUxFU1VCVFlQRSAweDBMCkJFR0lOCiAgICBCTE9DSyAiU3RyaW5nRmlsZUluZm8iCiAgICBCRUdJTgogICAgICAgIEJMT0NLICIwMDAwMDRiMCIKICAgICAgICBCRUdJTgogICAgICAgICAgICBWQUxVRSAiQ29tcGFueU5hbWUiLCAiUHl0aG9uTGFicyBhdCBab3BlIENvcnBvcmF0aW9uXDAiCiAgICAgICAgICAgIFZBTFVFICJGaWxlRGVzY3JpcHRpb24iLCAiUHl0aG9uIENvcmVcMCIKICAgICAgICAgICAgVkFMVUUgIkZpbGVWZXJzaW9uIiwgUFlUSE9OX1ZFUlNJT04KICAgICAgICAgICAgVkFMVUUgIkludGVybmFsTmFtZSIsICJQeXRob24gRExMXDAiCiAgICAgICAgICAgIFZBTFVFICJMZWdhbENvcHlyaWdodCIsICJDb3B5cmlnaHQgqSAyMDAxLTIwMDIgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24uIENvcHlyaWdodCCpIDIwMDAgQmVPcGVuLmNvbS4gQ29weXJpZ2h0IKkgMTk5NS0yMDAxIENOUkkuIENvcHlyaWdodCCpIDE5OTEtMTk5NSBTTUMuXDAiCiAgICAgICAgICAgIFZBTFVFICJPcmlnaW5hbEZpbGVuYW1lIiwgUFlUSE9OX0RMTF9OQU1FICJcMCIKICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3ROYW1lIiwgIlB5dGhvblwwIgogICAgICAgICAgICBWQUxVRSAiUHJvZHVjdFZlcnNpb24iLCBQWVRIT05fVkVSU0lPTgogICAgICAgIEVORAogICAgRU5ECiAgICBCTE9DSyAiVmFyRmlsZUluZm8iCiAgICBCRUdJTgogICAgICAgIFZBTFVFICJUcmFuc2xhdGlvbiIsIDB4MCwgMTIwMAogICAgRU5ECkVORAo=