Ly8gUmVzb3VyY2Ugc2NyaXB0IGZvciBQeXRob24gY29yZSBETEwuCi8vIEN1cnJlbnRseSBvbmx5IGhvbGRzIHZlcnNpb24gaW5mb3JtYXRpb24uCi8vCiNpbmNsdWRlICJ3aW52ZXIuaCIKCiNkZWZpbmUgTVNfV0lORE9XUwojaW5jbHVkZSAibW9kc3VwcG9ydC5oIgojaW5jbHVkZSAicGF0Y2hsZXZlbC5oIgojaWZkZWYgX0RFQlVHCiMgICBpbmNsdWRlICJweXRob25udF9yY19kLmgiCiNlbHNlCiMgICBpbmNsdWRlICJweXRob25udF9yYy5oIgojZW5kaWYKCi8qIGUuZy4sIDMuMy4wYTEKICogUFlfVkVSU0lPTiBjb21lcyBmcm9tIHBhdGNoZXZlbC5oCiAqLwojZGVmaW5lIFBZVEhPTl9WRVJTSU9OIFBZX1ZFUlNJT04gIlwwIgoKLyogNjQtYml0IHZlcnNpb24gbnVtYmVyIGFzIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIDQgMTYtYml0IGludHMgKi8KI2lmIFBZX01JQ1JPX1ZFUlNJT04gPiA2NAojICAgZXJyb3IgIlBZX01JQ1JPX1ZFUlNJT04gPiA2NCIKI2VuZGlmCiNpZiBQWV9SRUxFQVNFX0xFVkVMID4gOTkKIyAgIGVycm9yICJQWV9SRUxFQVNFX0xFVkVMID4gOTkiCiNlbmRpZgojaWYgUFlfUkVMRUFTRV9TRVJJQUwgPiA5CiMgICBlcnJvciAiUFlfUkVMRUFTRV9TRVJJQUwgPiA5IgojZW5kaWYKI2RlZmluZSBQWVZFUlNJT042NCBQWV9NQUpPUl9WRVJTSU9OLCBQWV9NSU5PUl9WRVJTSU9OLCBGSUVMRDMsIFBZVEhPTl9BUElfVkVSU0lPTgoKLy8gU3RyaW5nIFRhYmxlcwpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgMTAwMCwgICBNU19ETExfSUQKRU5ECgovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwovLwovLyBWZXJzaW9uCi8vCgpWU19WRVJTSU9OX0lORk8gVkVSU0lPTklORk8KIEZJTEVWRVJTSU9OIFBZVkVSU0lPTjY0CiBQUk9EVUNUVkVSU0lPTiBQWVZFUlNJT042NAogRklMRUZMQUdTTUFTSyAweDNmTAojaWZkZWYgX0RFQlVHCiBGSUxFRkxBR1MgMHgxTAojZWxzZQogRklMRUZMQUdTIDB4MEwKI2VuZGlmCiBGSUxFT1MgMHg0MDAwNEwKIEZJTEVUWVBFIDB4MUwKIEZJTEVTVUJUWVBFIDB4MEwKQkVHSU4KICAgIEJMT0NLICJTdHJpbmdGaWxlSW5mbyIKICAgIEJFR0lOCiAgICAgICAgQkxPQ0sgIjAwMDAwNGIwIgogICAgICAgIEJFR0lOCiAgICAgICAgICAgIFZBTFVFICJDb21wYW55TmFtZSIsICJQeXRob24gU29mdHdhcmUgRm91bmRhdGlvblwwIgogICAgICAgICAgICBWQUxVRSAiRmlsZURlc2NyaXB0aW9uIiwgIlB5dGhvbiBDb3JlXDAiCiAgICAgICAgICAgIFZBTFVFICJGaWxlVmVyc2lvbiIsIFBZVEhPTl9WRVJTSU9OCiAgICAgICAgICAgIFZBTFVFICJJbnRlcm5hbE5hbWUiLCAiUHl0aG9uIERMTFwwIgogICAgICAgICAgICBWQUxVRSAiTGVnYWxDb3B5cmlnaHQiLCAiQ29weXJpZ2h0IKkgMjAwMS0yMDEzIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLiBDb3B5cmlnaHQgqSAyMDAwIEJlT3Blbi5jb20uIENvcHlyaWdodCCpIDE5OTUtMjAwMSBDTlJJLiBDb3B5cmlnaHQgqSAxOTkxLTE5OTUgU01DLlwwIgogICAgICAgICAgICBWQUxVRSAiT3JpZ2luYWxGaWxlbmFtZSIsIFBZVEhPTl9ETExfTkFNRSAiXDAiCiAgICAgICAgICAgIFZBTFVFICJQcm9kdWN0TmFtZSIsICJQeXRob25cMCIKICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3RWZXJzaW9uIiwgUFlUSE9OX1ZFUlNJT04KICAgICAgICBFTkQKICAgIEVORAogICAgQkxPQ0sgIlZhckZpbGVJbmZvIgogICAgQkVHSU4KICAgICAgICBWQUxVRSAiVHJhbnNsYXRpb24iLCAweDAsIDEyMDAKICAgIEVORApFTkQK