LyoKICogUHJvZ3JhbSBNYW5hZ2VyCiAqCiAqIENvcHlyaWdodCAxOTk2IFVscmljaCBTY2htaWQKICoKICogUnVtYW50c2NoIExhZGluIChWYWxsYWRlcikgYWRkZWQgYnkgbWJhdXJAZzI2LmV0aHouY2gKICoKICovCgojZGVmaW5lIExBTkdVQUdFX0lEICAgICAgICAgICAgICAgICAgUmwKI2RlZmluZSBMQU5HVUFHRV9OVU1CRVIgICAgICAgICAgICAgIDIKI2RlZmluZSBMQU5HVUFHRV9NRU5VX0lURU0gICAgICAgICAgICImVmFsbGFkZXIiCgovKiBNZW51ICovCgojZGVmaW5lIE1FTlVfRklMRSAgICAgICAgICAgICAgICAgICAgIiZEYXRvdGVjYSIKI2RlZmluZSBNRU5VX0ZJTEVfTkVXICAgICAgICAgICAgICAgICImTm91di4uLiIKI2RlZmluZSBNRU5VX0ZJTEVfT1BFTiAgICAgICAgICAgICAgICImUml2aXJcdEVuZGF0YXppdW4iCiNkZWZpbmUgTUVOVV9GSUxFX01PVkUgICAgICAgICAgICAgICAiJlNwb3N0YXIuLi5cdEY3IgojZGVmaW5lIE1FTlVfRklMRV9DT1BZICAgICAgICAgICAgICAgIiZDb3BjaGFyLi4uXHRGOCIKI2RlZmluZSBNRU5VX0ZJTEVfREVMRVRFICAgICAgICAgICAgICJTJnT8ZGVyXHREZWwiCiNkZWZpbmUgTUVOVV9GSUxFX0FUVFJJQlVURVMgICAgICAgICAiJlBhcnRpY3VsYXJpdGFkcy4uLlx0QWx0K0VuZGF0YXppdW4iCiNkZWZpbmUgTUVOVV9GSUxFX0VYRUNVVEUgICAgICAgICAgICAiJkVzZWduaXIuLi4iCiNkZWZpbmUgTUVOVV9GSUxFX0VYSVQgICAgICAgICAgICAgICAiJkZpbmlyIFdJTkUuLi4iCgojZGVmaW5lIE1FTlVfT1BUSU9OUyAgICAgICAgICAgICAgICAgIiZPcHppdW5zIgojZGVmaW5lIE1FTlVfT1BUSU9OU19BVVRPX0FSUkFOR0UgICAgIk9yZGluYXIgJmF1dG9tYXRpY2FtYWluZyIKI2RlZmluZSBNRU5VX09QVElPTlNfTUlOX09OX1JVTiAgICAgICImU2ltYm9sIGRhdm8nbCBjdW1tYWluemFtYWludCBkYWwgcHJvZ3JhbSIKI2RlZmluZSBNRU5VX09QVElPTlNfU0FWRV9TRVRUSU5HUyAgICJBcmN1bmFyIGNvbnplcHppdW5zIGEgbGEgJmZpbmlzY2hpbmEiCgojZGVmaW5lIE1FTlVfV0lORE9XUyAgICAgICAgICAgICAgICAgIiZGYW5lc3RyYSIKI2RlZmluZSBNRU5VX1dJTkRPV1NfT1ZFUkxBUCAgICAgICAgICImY3J1c2Nob25kXHRTaGlmdCtGNSIKI2RlZmluZSBNRU5VX1dJTkRPV1NfU0lERV9CWV9TSURFICAgICL8biAmZGFzcGVyIGwnb3Rlclx0U2hpZnQrRjQiCiNkZWZpbmUgTUVOVV9XSU5ET1dTX0FSUkFOR0UgICAgICAgICAiJm9yZGluYXIgaWxzIHNpbWJvbHMiCgojZGVmaW5lIE1FTlVfTEFOR1VBR0UgICAgICAgICAgICAgICAgIiZMaW5ndW4iCgojZGVmaW5lIE1FTlVfSEVMUCAgICAgICAgICAgICAgICAgICAgIiZBZ/xkIgojZGVmaW5lIE1FTlVfSEVMUF9DT05URU5UUyAgICAgICAgICAgIiZDdW50Z278IgojZGVmaW5lIE1FTlVfSEVMUF9TRUFSQ0ggICAgICAgICAgICAgIiZUc2NoZXJjaGFyLi4uIgojZGVmaW5lIE1FTlVfSEVMUF9IRUxQX09OX0hFTFAgICAgICAgIiZEb3V2cmFyIGwnYWf8ZCIKI2RlZmluZSBNRU5VX0hFTFBfVFVUT1JJQUwgICAgICAgICAgICImUHJvZ3JhbSBkJ2ltcHJlbmRlciIKCiNkZWZpbmUgTUVOVV9JTkZPICAgICAgICAgICAgICAgICAgICAiSW5mJm9ybWF6aXVuLi4uIgojZGVmaW5lIE1FTlVfSU5GT19MSUNFTlNFICAgICAgICAgICAgIiZMaWNlemEiCiNkZWZpbmUgTUVOVV9JTkZPX05PX1dBUlJBTlRZICAgICAgICAiJklOR1VFTkEgR0FSQU5aSUEiCiNkZWZpbmUgTUVOVV9JTkZPX0FCT1VUX1dJTkUgICAgICAgICAiJkRhdmFydCBXSU5FIgoKLyogRGlhbG9ncyAqLwoKI2RlZmluZSBESUFMT0dfT0sgICAgICAgICAgICAgICAgICAgICJPSyIKI2RlZmluZSBESUFMT0dfQ0FOQ0VMICAgICAgICAgICAgICAgICJGYXIgZ2n2IHF1aW50IgojZGVmaW5lIERJQUxPR19CUk9XU0UgICAgICAgICAgICAgICAgIiZUc2NoZXJjaGFyIHRyYXMuLi4iCiNkZWZpbmUgRElBTE9HX0hFTFAgICAgICAgICAgICAgICAgICAiJkFn/GQiCgojZGVmaW5lIERJQUxPR19ORVdfQ0FQVElPTiAgICAgICAgICAgIk5vdXYgcHJvZ2V0IGRhIHByb2dyYW0iCiNkZWZpbmUgRElBTE9HX05FV19ORVcgICAgICAgICAgICAgICAiTm91diIKI2RlZmluZSBESUFMT0dfTkVXX0dST1VQICAgICAgICAgICAgICImR3J1cHBhIGRhIHByb2dyYW1zIgojZGVmaW5lIERJQUxPR19ORVdfUFJPR1JBTSAgICAgICAgICAgIiZQcm9ncmFtIgoKI2RlZmluZSBESUFMT0dfTU9WRV9DQVBUSU9OICAgICAgICAgICJTcG9zdGFyIGlsIHByb2dyYW0iCiNkZWZpbmUgRElBTE9HX01PVkVfUFJPR1JBTSAgICAgICAgICAiU3Bvc3RhciBpbCBwcm9ncmFtOiIKI2RlZmluZSBESUFMT0dfTU9WRV9GUk9NX0dST1VQICAgICAgICImRGEgbGEgZ3J1cHBhOiIKI2RlZmluZSBESUFMT0dfTU9WRV9UT19HUk9VUCAgICAgICAgICImSW4gZ3J1cHBhOiIKCiNkZWZpbmUgRElBTE9HX0NPUFlfQ0FQVElPTiAgICAgICAgICAiQ29wY2hhciBpbCBwcm9ncmFtIgojZGVmaW5lIERJQUxPR19DT1BZX1BST0dSQU0gICAgICAgICAgIkNvcGNoYXIgaWwgcHJvZ3JhbToiCiNkZWZpbmUgRElBTE9HX0NPUFlfRlJPTV9HUk9VUCAgICAgICBESUFMT0dfTU9WRV9GUk9NX0dST1VQCiNkZWZpbmUgRElBTE9HX0NPUFlfVE9fR1JPVVAgICAgICAgICBESUFMT0dfTU9WRV9UT19HUk9VUAoKI2RlZmluZSBESUFMT0dfR1JPVVBfQ0FQVElPTiAgICAgICAgICJQYXJ0aWN1bGFyaXRhZHMgZGEgbGFzIGdydXBwYXMiCiNkZWZpbmUgRElBTE9HX0dST1VQX0RFU0NSSVBUSU9OICAgICAiJkRlc2NyaXB6aXVuOiIKI2RlZmluZSBESUFMT0dfR1JPVVBfRklMRSAgICAgICAgICAgICJEYXRvJnRlY2E6IgoKI2RlZmluZSBESUFMT0dfUFJPR1JBTV9DQVBUSU9OICAgICAgICJQYXJ0aWN1bGFyaXRhZHMgZGFsIHByb2dyYW0iCiNkZWZpbmUgRElBTE9HX1BST0dSQU1fREVTQ1JJUFRJT04gICBESUFMT0dfR1JPVVBfREVTQ1JJUFRJT04KI2RlZmluZSBESUFMT0dfUFJPR1JBTV9DT01NQU5EX0xJTkUgICImTGluZ2lhIGRhIGN1bW9uZHM6IgojZGVmaW5lIERJQUxPR19QUk9HUkFNX0RJUkVDVE9SWSAgICAgIiZSZWdpc3RlciBkYSBsYXZ1b3JzOiIKI2RlZmluZSBESUFMT0dfUFJPR1JBTV9IT1RfS0VZICAgICAgICImQ3VtYmluYXppdW46IgojZGVmaW5lIERJQUxPR19QUk9HUkFNX1NZTUJPTCAgICAgICAgIlNjbyBTaSZtYm9sIgojZGVmaW5lIERJQUxPR19QUk9HUkFNX09USEVSX1NZTUJPTCAgIk90ZXIgJlNpbWJvbC4uLiIKCiNkZWZpbmUgRElBTE9HX1NZTUJPTF9DQVBUSU9OICAgICAgICAiVHNjaGVybmVyIFNpbWJvbCIKI2RlZmluZSBESUFMT0dfU1lNQk9MX0ZJTEUgICAgICAgICAgICImTm9tIGRhIGxhIERhdG90ZWNhOiIKI2RlZmluZSBESUFMT0dfU1lNQk9MX0NVUlJFTlQgICAgICAgICJTaW1ib2wgJmFjdHVhbDoiCgojZGVmaW5lIERJQUxPR19FWEVDVVRFX0NBUFRJT04gICAgICAgIkVzZWd1aXIgcHJvZ3JhbSIKI2RlZmluZSBESUFMT0dfRVhFQ1VURV9DT01NQU5EX0xJTkUgIERJQUxPR19QUk9HUkFNX0NPTU1BTkRfTElORQojZGVmaW5lIERJQUxPR19FWEVDVVRFX1NZTUJPTCAgICAgICAgRElBTE9HX1BST0dSQU1fU1lNQk9MCgovKiBTdHJpbmdzICovCgojZGVmaW5lIFNUUklOR19QUk9HUkFNX01BTkFHRVIgICAgICAgICAgICAiTWFuYWdlciBkYSBwcm9ncmFtcyIKI2RlZmluZSBTVFJJTkdfRVJST1IgICAgICAgICAgICAgICAgICAgICAgIlNCQUdMIgojZGVmaW5lIFNUUklOR19XQVJOSU5HICAgICAgICAgICAgICAgICAgICAiQVRURU5USVVOIgojZGVmaW5lIFNUUklOR19JTkZPICAgICAgICAgICAgICAgICAgICAgICAiSW5mdW9ybWF6aXVuIgojZGVmaW5lIFNUUklOR19ERUxFVEUgICAgICAgICAgICAgICAgICAgICAiU3T8ZGVyIgojZGVmaW5lIFNUUklOR19ERUxFVEVfR1JPVVBfcyAgICAgICAgICAgICAiU3T8ZGVyIGxhIGdydXBwYSBkYSBwcm9ncmFtcyBgJXMnID8iCiNkZWZpbmUgU1RSSU5HX0RFTEVURV9QUk9HUkFNX3MgICAgICAgICAgICJTdPxkZXIgaWwgcHJvZ3JhbSBgJXMnID8iCiNkZWZpbmUgU1RSSU5HX05PVF9JTVBMRU1FTlRFRCAgICAgICAgICAgICJOYSBpbXBsZW1lbnRhIgojZGVmaW5lIFNUUklOR19GSUxFX1JFQURfRVJST1JfcyAgICAgICAgICAiU2JhZ2wgY3VuIGxlZ2VyIGAlcyciCiNkZWZpbmUgU1RSSU5HX0ZJTEVfV1JJVEVfRVJST1JfcyAgICAgICAgICJTYmFnbCBjdW4gc2NyaXZlciBgJXMnIgoKI2RlZmluZSBTVFJJTkdfR1JQRklMRV9SRUFEX0VSUk9SX3MgICAgICAgIlwKTGEgZGF0b3RlY2EgZGEgZ3J1cHBhcyBkYSBwcm9ncmFtICclcycgbnUgcG8gZ25pciByaXZpZGEuXG5cCkVzYSBkYSBwcm91YXIgaW5hdmFudCBkYSBjaGFyZ2lhciBxdWlzdGFcbiIKCiNkZWZpbmUgU1RSSU5HX09VVF9PRl9NRU1PUlkgICAgICAgICAgICAgICJNYXNzYSBwYWNhIG1lbW9yaWEiCiNkZWZpbmUgU1RSSU5HX1dJTkhFTFBfRVJST1IgICAgICAgICAgICAgICJJbmf8biBhZ/xkIGEgZGlzcG9zaXppdW4iCiNkZWZpbmUgU1RSSU5HX1VOS05PV05fRkVBVFVSRV9zICAgICAgICAgICJGdW5jeml1biBpbmN1bnRzY2hhaW50YSBpbiAlcyIKI2RlZmluZSBTVFJJTkdfRklMRV9OT1RfT1ZFUldSSVRURU5fcyAgICAgIkRhdG90ZWNhIGAlcycgZXhpc3RhIGZpbmdp4C4gRWxsYSBudSB2ZWduLiIKI2RlZmluZSBTVFJJTkdfU0FWRV9HUk9VUF9BU19zICAgICAgICAgICAgIlwKTGEgZ3J1cHBhIHZlZ24gc2f8cmFkYSBjdWwgbm9tICclcycgcGVyIGV2aXRhciBcCmNoYSBsYSBkYXRvdGVjYSBvcmlnaW5hbGEgdmVnbmEgc3Vyc2NyaXR0YS4iCgojZGVmaW5lIFNUUklOR19OT19IT1RfS0VZICAgICAgICAgICAgICAgICAiSW5nafxuYSIKCiNkZWZpbmUgU1RSSU5HX0FMTF9GSUxFUyAgICAgICAgICAgICAgICAgICJUdW90IGxhcyBkYXRvdGVjYXMgKCouKikiCiNkZWZpbmUgU1RSSU5HX1BST0dSQU1TICAgICAgICAgICAgICAgICAgICJQcm9ncmFtcyIKI2RlZmluZSBTVFJJTkdfTElCUkFSSUVTX0RMTCAgICAgICAgICAgICAgIkJpYmxpb3RlY2FzICgqLmRsbCkiCiNkZWZpbmUgU1RSSU5HX1NZTUJPTF9GSUxFUyAgICAgICAgICAgICAgICJEYXRvdGVjYXMgZGEgc2ltYm9scyIKI2RlZmluZSBTVFJJTkdfU1lNQk9MU19JQ08gICAgICAgICAgICAgICAgIlNpbWJvbHMgKCouaWNvKSIKCiNpbmNsdWRlICJYeC5yYyIK