LyoKICogQ29weXJpZ2h0IKkgMjAxOCBCcm9hZGNvbS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gCiAqIFRoZSB0ZXJtIJNCcm9hZGNvbZQgcmVmZXJzIHRvIEJyb2FkY29tIEluYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJpZXMuCgogKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgogKiB0aGUgdGVybXMgb2YgdmVyc2lvbiAyIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCiAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KCiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLgogKiBBTEwgRVhQUkVTUyBPUiBJTVBMSUVEIENPTkRJVElPTlMsIFJFUFJFU0VOVEFUSU9OUyBBTkQgV0FSUkFOVElFUywgSU5DTFVESU5HIAogKiBBTlkgSU1QTElFRCBXQVJSQU5UWSBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLCBPUgogKiBOT04tSU5GUklOR0VNRU5ULCBBUkUgRElTQ0xBSU1FRCwgRVhDRVBUIFRPIFRIRSBFWFRFTlQgVEhBVCBTVUNIIERJU0NMQUlNRVJTCiAqIEFSRSBIRUxEIFRPIEJFIExFR0FMTFkgSU5WQUxJRC4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZQogKiBkZXRhaWxzLCBhIGNvcHkgb2Ygd2hpY2ggY2FuIGJlIGZvdW5kIGluIHRoZSBmaWxlIENPUFlJTkcgaW5jbHVkZWQgd2l0aCB0aGlzCiAqIHBhY2thZ2UuCiAqLwoKI3VuZGVmIEVSUkZJTEUKI2RlZmluZSBFUlJGSUxFIEVSUkZJTEVfdGczCgojZGVmaW5lIF9fbGUxNiAgdTE2CiNkZWZpbmUgX19sZTMyICB1MzIKI2RlZmluZSBfX2xlNjQgIHU2NAojZGVmaW5lIF9fYmUxNiAgdTE2CiNkZWZpbmUgX19iZTMyICB1MzIKI2RlZmluZSBfX2JlNjQgIHU2NAoKI2RlZmluZSBkbWFfYWRkcl90IHVuc2lnbmVkIGxvbmcKCnVuaW9uIGRtYV9hZGRyNjRfdCB7CglkbWFfYWRkcl90IGFkZHI7Cgl1NjQgYXNfdTY0Owp9OwoKI2luY2x1ZGUgImJueHRfaHNpLmgiCgojZGVmaW5lIERSVl9NT0RVTEVfTkFNRSAgICAgICAgICAgICAgImJueHQiCiNkZWZpbmUgSVBYRV9WRVJTSU9OX01BSk9SICAgICAgICAgICAxCiNkZWZpbmUgSVBYRV9WRVJTSU9OX01JTk9SICAgICAgICAgICAwCiNkZWZpbmUgSVBYRV9WRVJTSU9OX1VQREFURSAgICAgICAgICAwCgovKgogKiBCcm9hZGNvbSBldGhlcm5ldCBkcml2ZXIgZGVmaW5lcy4KICovCiNkZWZpbmUgRkxBR19TRVQoZiwgYikgICAgICAgICAgICAgICAgICAgICAgICAgICgoZikgfD0gKGIpKQojZGVmaW5lIEZMQUdfVEVTVChmLCBiKSAgICAgICAgICAgICAgICAgICAgICAgICAoKGYpICYgKGIpKQojZGVmaW5lIEZMQUdfUkVTRVQoZiwgYikgICAgICAgICAgICAgICAgICAgICAgICAoKGYpICY9IH4oYikpCiNkZWZpbmUgQk5YVF9GTEFHX0hXUk1fU0hPUlRfQ01EX1NVUFAgICAgICAgICAgIDB4MDAwMQojZGVmaW5lIEJOWFRfRkxBR19IV1JNX1NIT1JUX0NNRF9SRVEgICAgICAgICAgICAweDAwMDIKI2RlZmluZSBCTlhUX0ZMQUdfUkVTT1VSQ0VfUUNBUFNfU1VQUE9SVCAgICAgICAgMHgwMDA0CiNkZWZpbmUgQk5YVF9GTEFHX01VTFRJX0hPU1QgICAgICAgICAgICAgICAgICAgIDB4MDAwOAojZGVmaW5lIEJOWFRfRkxBR19OUEFSX01PREUgICAgICAgICAgICAgICAgICAgICAweDAwMTAKI2RlZmluZSBCTlhUX0ZMQUdfQVRPTUlDU19FTkFCTEUgICAgICAgICAgICAgICAgMHgwMDIwCiNkZWZpbmUgQk5YVF9GTEFHX1BDSV9WRiAgICAgICAgICAgICAgICAgICAgICAgIDB4MDA0MAojZGVmaW5lIEJOWFRfRkxBR19MSU5LX1NQRUVEUzIgICAgICAgICAgICAgICAgICAweDAwODAKI2RlZmluZSBCTlhUX0ZMQUdfSVNfQ0hJUF9QNSAgICAgICAgICAgICAgICAgICAgMHgwMTAwCiNkZWZpbmUgQk5YVF9GTEFHX0lTX0NISVBfUDVfUExVUyAgICAgICAgICAgICAgIDB4MDIwMAojZGVmaW5lIEJOWFRfRkxBR19JU19DSElQX1A3ICAgICAgICAgICAgICAgICAgICAweDA0MDAKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogU3RhdHVzIGNvZGVzLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojZGVmaW5lIFNUQVRVU19TVUNDRVNTICAgICAgICAgICAgICAgICAgICAgICAgICAwCiNkZWZpbmUgU1RBVFVTX0ZBSUxVUkUgICAgICAgICAgICAgICAgICAgICAgICAgIDEKI2RlZmluZSBTVEFUVVNfTk9fUkVTT1VSQ0UgICAgICAgICAgICAgICAgICAgICAgMgojZGVmaW5lIFNUQVRVU19JTlZBTElEX1BBUkFNRVRFUiAgICAgICAgICAgICAgICAzCiNkZWZpbmUgU1RBVFVTX0xJTktfQUNUSVZFICAgICAgICAgICAgICAgICAgICAgIDQKI2RlZmluZSBTVEFUVVNfTElOS19ET1dOICAgICAgICAgICAgICAgICAgICAgICAgNQojZGVmaW5lIFNUQVRVU19MSU5LX1NFVFRJTkdfTUlTTUFUQ0ggICAgICAgICAgICA2CiNkZWZpbmUgU1RBVFVTX1RPT19NQU5ZX0ZSQUdNRU5UUyAgICAgICAgICAgICAgIDcKI2RlZmluZSBTVEFUVVNfVFJBTlNNSVRfQUJPUlRFRCAgICAgICAgICAgICAgICAgOAojZGVmaW5lIFNUQVRVU19UUkFOU01JVF9FUlJPUiAgICAgICAgICAgICAgICAgICA5CiNkZWZpbmUgU1RBVFVTX1JFQ0VJVkVfQUJPUlRFRCAgICAgICAgICAgICAgICAgIDEwCiNkZWZpbmUgU1RBVFVTX1JFQ0VJVkVfRVJST1IgICAgICAgICAgICAgICAgICAgIDExCiNkZWZpbmUgU1RBVFVTX0lOVkFMSURfUEFDS0VUX1NJWkUgICAgICAgICAgICAgIDEyCiNkZWZpbmUgU1RBVFVTX05PX01BUF9SRUdJU1RFUiAgICAgICAgICAgICAgICAgIDEzCiNkZWZpbmUgU1RBVFVTX1VOS05PV05fQURBUFRFUiAgICAgICAgICAgICAgICAgIDE0CiNkZWZpbmUgU1RBVFVTX05PX0NPQUxFU0NFX0JVRkZFUiAgICAgICAgICAgICAgIDE1CiNkZWZpbmUgU1RBVFVTX1VOS05PV05fUEhZICAgICAgICAgICAgICAgICAgICAgIDE2CiNkZWZpbmUgU1RBVFVTX1BFTkRJTkcgICAgICAgICAgICAgICAgICAgICAgICAgIDE3CiNkZWZpbmUgU1RBVFVTX05PX1RYX0RFU0MgICAgICAgICAgICAgICAgICAgICAgIDE4CiNkZWZpbmUgU1RBVFVTX05PX1RYX0JEICAgICAgICAgICAgICAgICAgICAgICAgIDE5CiNkZWZpbmUgU1RBVFVTX1VOS05PV05fTUVESVVNICAgICAgICAgICAgICAgICAgIDIwCiNkZWZpbmUgU1RBVFVTX1JFU09VUkNFICAgICAgICAgICAgICAgICAgICAgICAgIDIxCiNkZWZpbmUgU1RBVFVTX0FCT1JUX1JFQVNPTl9ESVNDT05ORUNUICAgICAgICAgIDIyCiNkZWZpbmUgU1RBVFVTX0FCT1JUX1JFQVNPTl9VUExPQUQgICAgICAgICAgICAgIDIzCiNkZWZpbmUgU1RBVFVTX1RJTUVPVVQgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmZmZgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBSZWNlaXZlIGZpbHRlciBtYXNrcy4KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2RlZmluZSBSWF9NQVNLX0FDQ0VQVF9OT05FICAgICAgICAgICAgICAgICAgICAgMHgwMDAwCiNkZWZpbmUgUlhfTUFTS19BQ0NFUFRfVU5JQ0FTVCAgICAgICAgICAgICAgICAgIDB4MDAwMQojZGVmaW5lIFJYX01BU0tfQUNDRVBUX01VTFRJQ0FTVCAgICAgICAgICAgICAgICAweDAwMDIKI2RlZmluZSBSWF9NQVNLX0FDQ0VQVF9BTExfTVVMVElDQVNUICAgICAgICAgICAgMHgwMDA0CiNkZWZpbmUgUlhfTUFTS19BQ0NFUFRfQlJPQURDQVNUICAgICAgICAgICAgICAgIDB4MDAwOAojZGVmaW5lIFJYX01BU0tfQUNDRVBUX0VSUk9SX1BBQ0tFVCAgICAgICAgICAgICAweDAwMTAKI2RlZmluZSBSWF9NQVNLX1BST01JU0NVT1VTX01PREUgICAgICAgICAgICAgICAgMHgxMDAwMAovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBtZWRpYSBzcGVlZC4KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2RlZmluZSBNRURJVU1fU1BFRURfQVVUT05FRyAgICAgICAgICAgICAgICAgICAgMHgwMDAwTAojZGVmaW5lIE1FRElVTV9TUEVFRF9VTktOT1dOICAgICAgICAgICAgICAgICAgICAweDAwMDBMCiNkZWZpbmUgTUVESVVNX1NQRUVEXzEwTUJQUyAgICAgICAgICAgICAgICAgICAgIDB4MDEwMEwKI2RlZmluZSBNRURJVU1fU1BFRURfMTAwTUJQUyAgICAgICAgICAgICAgICAgICAgMHgwMjAwTAojZGVmaW5lIE1FRElVTV9TUEVFRF8xMDAwTUJQUyAgICAgICAgICAgICAgICAgICAweDAzMDBMCiNkZWZpbmUgTUVESVVNX1NQRUVEXzI1MDBNQlBTICAgICAgICAgICAgICAgICAgIDB4MDQwMEwKI2RlZmluZSBNRURJVU1fU1BFRURfMTBHQlBTICAgICAgICAgICAgICAgICAgICAgMHgwNjAwTAojZGVmaW5lIE1FRElVTV9TUEVFRF8yMEdCUFMgICAgICAgICAgICAgICAgICAgICAweDA3MDBMCiNkZWZpbmUgTUVESVVNX1NQRUVEXzI1R0JQUyAgICAgICAgICAgICAgICAgICAgIDB4MDgwMEwKI2RlZmluZSBNRURJVU1fU1BFRURfNDBHQlBTICAgICAgICAgICAgICAgICAgICAgMHgwOTAwTAojZGVmaW5lIE1FRElVTV9TUEVFRF81MEdCUFMgICAgICAgICAgICAgICAgICAgICAweDBhMDBMCiNkZWZpbmUgTUVESVVNX1NQRUVEXzEwMEdCUFMgICAgICAgICAgICAgICAgICAgIDB4MGIwMEwKI2RlZmluZSBNRURJVU1fU1BFRURfMjAwR0JQUyAgICAgICAgICAgICAgICAgICAgMHgwYzAwTAojZGVmaW5lIE1FRElVTV9TUEVFRF81MFBBTTRHQlBTICAgICAgICAgICAgICAgICAweDBkMDBMCiNkZWZpbmUgTUVESVVNX1NQRUVEXzEwMFBBTTRHQlBTICAgICAgICAgICAgICAgIDB4MGUwMEwKI2RlZmluZSBNRURJVU1fU1BFRURfMTAwUEFNNF8xMTJHQlBTICAgICAgICAgICAgMHgwZjAwTAojZGVmaW5lIE1FRElVTV9TUEVFRF8yMDBQQU00XzExMkdCUFMgICAgICAgICAgICAweDEwMDBMCiNkZWZpbmUgTUVESVVNX1NQRUVEXzQwMFBBTTRHQlBTICAgICAgICAgICAgICAgIDB4MjAwMEwKI2RlZmluZSBNRURJVU1fU1BFRURfNDAwUEFNNF8xMTJHQlBTICAgICAgICAgICAgMHgzMDAwTAojZGVmaW5lIE1FRElVTV9TUEVFRF9BVVRPTkVHXzFHX0ZBTExCQUNLICAgICAgICAweDgwMDBMIC8qIFNlcmRlcyAqLwojZGVmaW5lIE1FRElVTV9TUEVFRF9BVVRPTkVHXzJfNUdfRkFMTEJBQ0sgICAgICAweDgxMDBMIC8qIFNlcmRlcyAqLwojZGVmaW5lIE1FRElVTV9TUEVFRF9IQVJEV0FSRV9ERUZBVUxUICAgICAgICAgICAweGZmMDBMIC8qIFNlcmRlcyBudnJhbSBkZWYuKi8KI2RlZmluZSBNRURJVU1fU1BFRURfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgMHhmZjAwTAojZGVmaW5lIEdFVF9NRURJVU1fU1BFRUQobSkgICAgICAgICAgICAgICAgICAgICAoKG0pICYgTUVESVVNX1NQRUVEX01BU0spCiNkZWZpbmUgU0VUX01FRElVTV9TUEVFRChicCwgcykgKChicC0+bWVkaXVtICYgfk1FRElVTV9TUEVFRF9NQVNLKSB8IHMpCiNkZWZpbmUgTUVESVVNX1VOS05PV05fRFVQTEVYICAgICAgICAgICAgICAgICAgIDB4MDAwMDBMCiNkZWZpbmUgTUVESVVNX0ZVTExfRFVQTEVYICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBMCiNkZWZpbmUgTUVESVVNX0hBTEZfRFVQTEVYICAgICAgICAgICAgICAgICAgICAgIDB4MTAwMDBMCiNkZWZpbmUgR0VUX01FRElVTV9EVVBMRVgobSkgICAgICAgICAgICAgICAgICAgICgobSkgJiBNRURJVU1fSEFMRl9EVVBMRVgpCiNkZWZpbmUgU0VUX01FRElVTV9EVVBMRVgoYnAsIGQpICgoYnAtPm1lZGl1bSAmIH5NRURJVU1fSEFMRl9EVVBMRVgpIHwgZCkKI2RlZmluZSBNRURJVU1fU0VMRUNUSVZFX0FVVE9ORUcgICAgICAgICAgICAgICAgMHgwMTAwMDAwMEwKI2RlZmluZSBHRVRfTUVESVVNX0FVVE9ORUdfTU9ERShtKSAgICAgICAgICAgICAgKChtKSAmIDB4ZmYwMDAwMDBMKQojZGVmaW5lIFBDSUNGR19NRV9SRUdJU1RFUiAgICAgICAgICAgICAgICAgICAgICAweDk4CiNkZWZpbmUgR1JDX0NPTV9DSEFOX0JBU0UgICAgICAgICAgICAgICAgICAgICAgIDAKI2RlZmluZSBHUkNfQ09NX0NIQU5fVFJJRyAgICAgICAgICAgICAgICAgICAgICAgMHgxMDAKI2RlZmluZSBHUkNfSU5EX0JBUl8wX0FERFIgICAgICAgICAgICAgICAgICAgICAgMHg3OAojZGVmaW5lIEdSQ19JTkRfQkFSXzFfQUREUiAgICAgICAgICAgICAgICAgICAgICAweDdDCiNkZWZpbmUgR1JDX0lORF9CQVJfMF9EQVRBICAgICAgICAgICAgICAgICAgICAgIDB4ODAKI2RlZmluZSBHUkNfSU5EX0JBUl8xX0RBVEEgICAgICAgICAgICAgICAgICAgICAgMHg4NAojZGVmaW5lIEdSQ19CQVNFX1dJTl8wICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwMAojZGVmaW5lIEdSQ19EQVRBX1dJTl8wICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwMDAKI2RlZmluZSBIV1JNX0NNRF9ERUZBVUxUX1RJTUVPVVQgICAgICAgICAgICAgICAgNTAwIC8qIGluIE1pbGlzZWNvbmRzICAqLwojZGVmaW5lIEhXUk1fQ01EX1BPTExfV0FJVF9USU1FICAgICAgICAgICAgICAgICAxMDAgLyogSW4gTWljcm9lU2NvbmRzICovCiNkZWZpbmUgSFdSTV9DTURfREVGQVVMVF9NVUxUSVBMQVlFUihhKSAgICAgICAgICgoYSkgKiAxMCkKI2RlZmluZSBIV1JNX0NNRF9GTEFTSF9NVUxUSVBMQVlFUihhKSAgICAgICAgICAgKChhKSAqIDEwMCkKI2RlZmluZSBIV1JNX0NNRF9GTEFTSF9FUkFTRV9NVUxUSVBMQVlFUihhKSAgICAgKChhKSAqIDEwMDApCiNkZWZpbmUgSFdSTV9DTURfV0FJVChiKSAoKGJwLT5od3JtX2NtZF90aW1lb3V0KSAqIChiKSkKI2RlZmluZSBNQVhfRVRIRVJORVRfUEFDS0VUX0JVRkZFUl9TSVpFICAgICAgICAgMTUzNgojZGVmaW5lIERFRkFVTFRfTlVNQkVSX09GX0NNUExfUklOR1MgICAgICAgICAgICAweDAxCiNkZWZpbmUgREVGQVVMVF9OVU1CRVJfT0ZfVFhfUklOR1MgICAgICAgICAgICAgIDB4MDEKI2RlZmluZSBERUZBVUxUX05VTUJFUl9PRl9SWF9SSU5HUyAgICAgICAgICAgICAgMHgwMQojZGVmaW5lIERFRkFVTFRfTlVNQkVSX09GX1JJTkdfR1JQUyAgICAgICAgICAgICAweDAxCiNkZWZpbmUgREVGQVVMVF9OVU1CRVJfT0ZfU1RBVF9DVFhTICAgICAgICAgICAgIDB4MDEKI2RlZmluZSBOVU1fUlhfQlVGRkVSUyAgICAgICAgICAgICAgICAgICAgICAgICAgOAojZGVmaW5lIE1BWF9SWF9ERVNDX0NOVCAgICAgICAgICAgICAgICAgICAgICAgICAxNgojZGVmaW5lIE1BWF9UWF9ERVNDX0NOVCAgICAgICAgICAgICAgICAgICAgICAgICAxNgojZGVmaW5lIE1BWF9DUV9ERVNDX0NOVCAgICAgICAgICAgICAgICAgICAgICAgICA2NAojZGVmaW5lIFRYX1JJTkdfQlVGRkVSX1NJWkUgKE1BWF9UWF9ERVNDX0NOVCAqIHNpemVvZihzdHJ1Y3QgdHhfYmRfc2hvcnQpKQojZGVmaW5lIFJYX1JJTkdfQlVGRkVSX1NJWkUgXAoJKE1BWF9SWF9ERVNDX0NOVCAqIHNpemVvZihzdHJ1Y3QgcnhfcHJvZF9wa3RfYmQpKQojZGVmaW5lIENRX1JJTkdfQlVGRkVSX1NJWkUgKE1BWF9DUV9ERVNDX0NOVCAqIHNpemVvZihzdHJ1Y3QgY21wbF9iYXNlKSkKI2RlZmluZSBCTlhUX0RNQV9BTElHTk1FTlQgICAgICAgICAgICAgICAgICAgICAgMjU2IC8vNjQKI2RlZmluZSBETUFfQUxJR05fNEsgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDA5NiAvL3Rob3IgdHggJiByeAojZGVmaW5lIFJFUV9CVUZGRVJfU0laRSAgICAgICAgICAgICAgICAgICAgICAgICAxMDI0CiNkZWZpbmUgUkVTUF9CVUZGRVJfU0laRSAgICAgICAgICAgICAgICAgICAgICAgIDEwMjQKI2RlZmluZSBETUFfQlVGRkVSX1NJWkUgICAgICAgICAgICAgICAgICAgICAgICAgMTAyNAojZGVmaW5lIExNX1BBR0VfQklUUyhhKSAgICAgICAgICAgICAgICAgICAgICAgICAoYSkKI2RlZmluZSBCTlhUX1JYX1NURF9ETUFfU1ogICAgICAgICAgICAgICAgICAgICAgKDE1MzYgKyA2NCArIDIpCiNkZWZpbmUgTkVYVF9JRFgoTiwgUykgICAgICAgICAgICAgICAgICAgICAgICAgICgoKE4pICsgMSkgJiAoKFMpIC0gMSkpCiNkZWZpbmUgQkRfTk9XKGJkLCBlbnRyeSwgbGVuKSAoJigodTggKikoYmQpKVsoZW50cnkpICogKGxlbildKQojZGVmaW5lIEJOWFRfQ1FfSU5UUl9NT0RFKHZmKSAoXAoJKCh2ZikgPyBSSU5HX0FMTE9DX1JFUV9JTlRfTU9ERV9NU0lYIDogUklOR19BTExPQ19SRVFfSU5UX01PREVfUE9MTCkpCi8qIFNldCBkZWZhdWx0IGxpbmsgdGltZW91dCBwZXJpb2QgdG8gMSBzZWNvbmQgKi8KI2RlZmluZSBMSU5LX0RFRkFVTFRfVElNRU9VVCAgICAgICAgICAgICAgICAgICAgMTAwMAojZGVmaW5lIExJTktfUE9MTF9XQUlUX1RJTUUgICAgICAgICAgICAgICAgICAgICAxMDAgICAgLyogSW4gTWlsaXNlY29uZHMgKi8KI2RlZmluZSBSWF9NQVNLIChcCglSWF9NQVNLX0FDQ0VQVF9CUk9BRENBU1QgfCBcCglSWF9NQVNLX0FDQ0VQVF9BTExfTVVMVElDQVNUIHwgXAoJUlhfTUFTS19BQ0NFUFRfTVVMVElDQVNUKQojZGVmaW5lIE1BWF9OUV9ERVNDX0NOVCAgICAgICAgICAgICAgICAgICAgICAgICA2NAojZGVmaW5lIE5RX1JJTkdfQlVGRkVSX1NJWkUgKE1BWF9OUV9ERVNDX0NOVCAqIHNpemVvZihzdHJ1Y3QgY21wbF9iYXNlKSkKI2RlZmluZSBUWF9SSU5HX1FJRCAoRkxBR19URVNUKGJwLT5mbGFncywgQk5YVF9GTEFHX0lTX0NISVBfUDVfUExVUykgPyAodTE2KWJwLT5xdWV1ZV9pZCA6ICgodTE2KWJwLT5wb3J0X2lkeCAqIDEwKSkKI2RlZmluZSBSWF9SSU5HX1FJRCAoRkxBR19URVNUKGJwLT5mbGFncywgQk5YVF9GTEFHX0lTX0NISVBfUDVfUExVUykgPyBicC0+cXVldWVfaWQgOiAwKQojZGVmaW5lIFNUQVRfQ1RYX0lEICgoYnAtPnZmIHx8IEZMQUdfVEVTVChicC0+ZmxhZ3MsIEJOWFRfRkxBR19JU19DSElQX1A1X1BMVVMpKSA/IGJwLT5zdGF0X2N0eF9pZCA6IDApCiNkZWZpbmUgVFhfQVZBSUwocikgICAgICAgICAgICAgICAgICAgICAgKHIgLSAxKQojZGVmaW5lIFRYX0lOX1VTRShhLCBiLCBjKSAoKGEgLSBiKSAmIChjIC0gMSkpCiNkZWZpbmUgTk9fTU9SRV9OUV9CRF9UT19TRVJWSUNFICAgICAgICAgMQojZGVmaW5lIFNFUlZJQ0VfTkVYVF9OUV9CRCAgICAgICAgICAgICAgIDAKI2RlZmluZSBOT19NT1JFX0NRX0JEX1RPX1NFUlZJQ0UgICAgICAgICAxCiNkZWZpbmUgU0VSVklDRV9ORVhUX0NRX0JEICAgICAgICAgICAgICAgMAojZGVmaW5lIE1BQ19IRFJfU0laRSAgICAgMTIKI2RlZmluZSBWTEFOX0hEUl9TSVpFICAgIDQKI2RlZmluZSBFVEhFUlRZUEVfVkxBTiAgIDB4ODEwMAojZGVmaW5lIEJZVEVfU1dBUF9TKHcpIChcCgkoKCh3KSAmIDB4ZmYwMCkgPj4gOCkgfCBcCgkoKCh3KSAmIDB4MDBmZikgPDwgOCkpCiNkZWZpbmUgREJfT0ZGU0VUX1BGICAgICAgICAgICAweDEwMDAwCiNkZWZpbmUgREJfT0ZGU0VUX1ZGICAgICAgICAgICAweDQwMDAKI2RlZmluZSBEQkNfTVNHX0lEWChpZHgpICAgICAgIChcCgkoKGlkeCkgPDwgREJDX0RCQ19JTkRFWF9TRlQpICYgREJDX0RCQ19JTkRFWF9NQVNLKQojZGVmaW5lIERCQ19NU0dfWElEKHhpZCwgZmxnKSAgKFwKCSgoKHhpZCkgPDwgREJDX0RCQ19YSURfU0ZUKSAmIERCQ19EQkNfWElEX01BU0spIHwgXAoJREJDX0RCQ19QQVRIX0wyIHwgKEZMQUdfVEVTVCAoIGJwLT5mbGFncywgQk5YVF9GTEFHX0lTX0NISVBfUDcgKSA/IERCQ19EQkNfVkFMSUQgOiAwKSB8IChmbGcpKQojZGVmaW5lIERCQ19NU0dfRVBDSChpZHgpICAgICAgKFwKICAgICAgICAoKGlkeCkgPDwgREJDX0RCQ19FUE9DSF9TRlQpKQojZGVmaW5lIERCQ19NU0dfVE9HR0xFKGlkeCkgICAgKFwKICAgICAgICAoKGlkeCkgPDwgREJDX0RCQ19UT0dHTEVfU0ZUKSAmIERCQ19EQkNfVE9HR0xFX01BU0spCiNkZWZpbmUgUEhZX1NUQVRVUyAgICAgICAgIDB4MDAwMQojZGVmaW5lIFBIWV9TUEVFRCAgICAgICAgICAweDAwMDIKI2RlZmluZSBERVRFQ1RfTUVESUEgICAgICAgMHgwMDA0CiNkZWZpbmUgU1VQUE9SVF9TUEVFRFMgICAgIDB4MDAwOAojZGVmaW5lIFNVUFBPUlRfU1BFRURTMiAgICAweDAwMTAKI2RlZmluZSBRQ0ZHX1BIWV9BTEwgICAoXAoJU1VQUE9SVF9TUEVFRFMgfCBTVVBQT1JUX1NQRUVEUzIgfCBcCiAgICAgICAgREVURUNUX01FRElBIHwgUEhZX1NQRUVEIHwgUEhZX1NUQVRVUykKI2RlZmluZSBzdHJfbWJwcyAgICAgICAgICAgIk1icHMiCiNkZWZpbmUgc3RyX2dicHMgICAgICAgICAgICJHYnBzIgovKgogKiBCcm9hZGNvbSBldGhlcm5ldCBkcml2ZXIgbnZtIGRlZmluZXMuCiAqLwovKiBudm0gY2ZnIDIwMyAtIHUzMiBsaW5rX3NldHRpbmdzICovCiNkZWZpbmUgTElOS19TUEVFRF9EUlZfTlVNICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDMKI2RlZmluZSBMSU5LX1NQRUVEX0RSVl9NQVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMEYKI2RlZmluZSBMSU5LX1NQRUVEX0RSVl9TSElGVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKI2RlZmluZSBMSU5LX1NQRUVEX0RSVl9BVVRPTkVHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MAojZGVmaW5lIE5TX0xJTktfU1BFRURfRFJWX0FVVE9ORUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwCiNkZWZpbmUgTElOS19TUEVFRF9EUlZfMUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEKI2RlZmluZSBOU19MSU5LX1NQRUVEX0RSVl8xRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MQojZGVmaW5lIExJTktfU1BFRURfRFJWXzEwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyCiNkZWZpbmUgTlNfTElOS19TUEVFRF9EUlZfMTBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIKI2RlZmluZSBMSU5LX1NQRUVEX0RSVl8yNUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MwojZGVmaW5lIE5TX0xJTktfU1BFRURfRFJWXzI1RyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzCiNkZWZpbmUgTElOS19TUEVFRF9EUlZfNDBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQKI2RlZmluZSBOU19MSU5LX1NQRUVEX0RSVl80MEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NAojZGVmaW5lIExJTktfU1BFRURfRFJWXzUwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1CiNkZWZpbmUgTlNfTElOS19TUEVFRF9EUlZfNTBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUKI2RlZmluZSBMSU5LX1NQRUVEX0RSVl8xMDBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NgojZGVmaW5lIE5TX0xJTktfU1BFRURfRFJWXzEwMEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2CiNkZWZpbmUgTElOS19TUEVFRF9EUlZfMjAwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcKI2RlZmluZSBOU19MSU5LX1NQRUVEX0RSVl8yMDBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NwojZGVmaW5lIExJTktfU1BFRURfRFJWXzJfNUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhFCiNkZWZpbmUgTlNfTElOS19TUEVFRF9EUlZfMl81RyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEUKI2RlZmluZSBMSU5LX1NQRUVEX0RSVl8xMDBNICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RgojZGVmaW5lIE5TX0xJTktfU1BFRURfRFJWXzEwME0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGCi8qIG52bSBjZmcgMjAxIC0gdTMyIHNwZWVkX2NhcF9tYXNrICovCiNkZWZpbmUgU1BFRURfQ0FQQUJJTElUWV9EUlZfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGRkZGCiNkZWZpbmUgU1BFRURfQ0FQQUJJTElUWV9EUlZfU0hJRlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwCiNkZWZpbmUgU1BFRURfQ0FQQUJJTElUWV9EUlZfMUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEKI2RlZmluZSBOU19TUEVFRF9DQVBBQklMSVRZX0RSVl8xRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MQojZGVmaW5lIFNQRUVEX0NBUEFCSUxJVFlfRFJWXzEwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyCiNkZWZpbmUgTlNfU1BFRURfQ0FQQUJJTElUWV9EUlZfMTBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIKI2RlZmluZSBTUEVFRF9DQVBBQklMSVRZX0RSVl8yNUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NAojZGVmaW5lIE5TX1NQRUVEX0NBUEFCSUxJVFlfRFJWXzI1RyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0CiNkZWZpbmUgU1BFRURfQ0FQQUJJTElUWV9EUlZfNDBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgKI2RlZmluZSBOU19TUEVFRF9DQVBBQklMSVRZX0RSVl80MEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OAojZGVmaW5lIFNQRUVEX0NBUEFCSUxJVFlfRFJWXzUwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMAojZGVmaW5lIE5TX1NQRUVEX0NBUEFCSUxJVFlfRFJWXzUwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMAojZGVmaW5lIFNQRUVEX0NBUEFCSUxJVFlfRFJWXzEwMEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMAojZGVmaW5lIE5TX1NQRUVEX0NBUEFCSUxJVFlfRFJWXzEwMEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMAojZGVmaW5lIFNQRUVEX0NBUEFCSUxJVFlfRFJWXzIwMEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MAojZGVmaW5lIE5TX1NQRUVEX0NBUEFCSUxJVFlfRFJWXzIwMEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MAojZGVmaW5lIFNQRUVEX0NBUEFCSUxJVFlfRFJWXzJfNUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MDAwCiNkZWZpbmUgTlNfU1BFRURfQ0FQQUJJTElUWV9EUlZfMl81RyAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwMDAKI2RlZmluZSBTUEVFRF9DQVBBQklMSVRZX0RSVl8xMDBNICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAwMAojZGVmaW5lIE5TX1NQRUVEX0NBUEFCSUxJVFlfRFJWXzEwME0gICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDAwCi8qIG52bSBjZmcgMjAyICovCiNkZWZpbmUgU1BFRURfQ0FQQUJJTElUWV9GV19NQVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkYwMDAwCiNkZWZpbmUgU1BFRURfQ0FQQUJJTElUWV9GV19TSElGVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNgojZGVmaW5lIFNQRUVEX0NBUEFCSUxJVFlfRldfMUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MUwgPDwgMTYpCiNkZWZpbmUgTlNfU1BFRURfQ0FQQUJJTElUWV9GV18xRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgxKQojZGVmaW5lIFNQRUVEX0NBUEFCSUxJVFlfRldfMTBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MkwgPDwgMTYpCiNkZWZpbmUgTlNfU1BFRURfQ0FQQUJJTElUWV9GV18xMEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgyKQojZGVmaW5lIFNQRUVEX0NBUEFCSUxJVFlfRldfMjVHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4NEwgPDwgMTYpCiNkZWZpbmUgTlNfU1BFRURfQ0FQQUJJTElUWV9GV18yNUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg0KQojZGVmaW5lIFNQRUVEX0NBUEFCSUxJVFlfRldfNDBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4OEwgPDwgMTYpCiNkZWZpbmUgTlNfU1BFRURfQ0FQQUJJTElUWV9GV180MEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg4KQojZGVmaW5lIFNQRUVEX0NBUEFCSUxJVFlfRldfNTBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MTBMIDw8IDE2KQojZGVmaW5lIE5TX1NQRUVEX0NBUEFCSUxJVFlfRldfNTBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MTApCiNkZWZpbmUgU1BFRURfQ0FQQUJJTElUWV9GV18xMDBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgyMEwgPDwgMTYpCiNkZWZpbmUgTlNfU1BFRURfQ0FQQUJJTElUWV9GV18xMDBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgyMCkKI2RlZmluZSBTUEVFRF9DQVBBQklMSVRZX0ZXXzIwMEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDQwTCA8PCAxNikKI2RlZmluZSBOU19TUEVFRF9DQVBBQklMSVRZX0ZXXzIwMEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDQwKQojZGVmaW5lIFNQRUVEX0NBUEFCSUxJVFlfRldfMl81RyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4NDAwMEwgPDwgMTYpCiNkZWZpbmUgTlNfU1BFRURfQ0FQQUJJTElUWV9GV18yXzVHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg0MDAwKQojZGVmaW5lIFNQRUVEX0NBUEFCSUxJVFlfRldfMTAwTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4ODAwMFVMIDw8IDE2KQojZGVmaW5lIE5TX1NQRUVEX0NBUEFCSUxJVFlfRldfMTAwTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4ODAwMCkKLyogbnZtIGNmZyAyMDUgKi8KI2RlZmluZSBMSU5LX1NQRUVEX0ZXX05VTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwNQojZGVmaW5lIExJTktfU1BFRURfRldfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDc4MAojZGVmaW5lIExJTktfU1BFRURfRldfU0hJRlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNwojZGVmaW5lIExJTktfU1BFRURfRldfQVVUT05FRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MEwgPDwgNykKI2RlZmluZSBOU19MSU5LX1NQRUVEX0ZXX0FVVE9ORUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDApCiNkZWZpbmUgTElOS19TUEVFRF9GV18xRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgxTCA8PCA3KQojZGVmaW5lIE5TX0xJTktfU1BFRURfRldfMUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MSkKI2RlZmluZSBMSU5LX1NQRUVEX0ZXXzEwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDJMIDw8IDcpCiNkZWZpbmUgTlNfTElOS19TUEVFRF9GV18xMEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgyKQojZGVmaW5lIExJTktfU1BFRURfRldfMjVHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4M0wgPDwgNykKI2RlZmluZSBOU19MSU5LX1NQRUVEX0ZXXzI1RyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDMpCiNkZWZpbmUgTElOS19TUEVFRF9GV180MEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg0TCA8PCA3KQojZGVmaW5lIE5TX0xJTktfU1BFRURfRldfNDBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4NCkKI2RlZmluZSBMSU5LX1NQRUVEX0ZXXzUwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDVMIDw8IDcpCiNkZWZpbmUgTlNfTElOS19TUEVFRF9GV181MEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg1KQojZGVmaW5lIExJTktfU1BFRURfRldfMTAwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4NkwgPDwgNykKI2RlZmluZSBOU19MSU5LX1NQRUVEX0ZXXzEwMEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDYpCiNkZWZpbmUgTElOS19TUEVFRF9GV18yMDBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg3TCA8PCA3KQojZGVmaW5lIE5TX0xJTktfU1BFRURfRldfMjAwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4NykKI2RlZmluZSBMSU5LX1NQRUVEX0ZXXzUwR19QQU00ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDhMIDw8IDcpCiNkZWZpbmUgTlNfTElOS19TUEVFRF9GV181MEdfUEFNNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg4KQojZGVmaW5lIExJTktfU1BFRURfRldfMTAwR19QQU00ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4OUwgPDwgNykKI2RlZmluZSBOU19MSU5LX1NQRUVEX0ZXXzEwMEdfUEFNNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDkpCiNkZWZpbmUgTElOS19TUEVFRF9GV18xMDBHX1BBTTRfMTEyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHhBTCA8PCA3KQojZGVmaW5lIE5TX0xJTktfU1BFRURfRldfMTAwR19QQU00XzExMiAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4QSkKI2RlZmluZSBMSU5LX1NQRUVEX0ZXXzIwMEdfUEFNNF8xMTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweEJMIDw8IDcpCiNkZWZpbmUgTlNfTElOS19TUEVFRF9GV18yMDBHX1BBTTRfMTEyICAgICAgICAgICAgICAgICAgICAgICAgICAoMHhCKQojZGVmaW5lIExJTktfU1BFRURfRldfNDAwR19QQU00ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4Q0wgPDwgNykKI2RlZmluZSBOU19MSU5LX1NQRUVEX0ZXXzQwMEdfUEFNNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweEMpCiNkZWZpbmUgTElOS19TUEVFRF9GV180MDBHX1BBTTRfMTEyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHhETCA8PCA3KQojZGVmaW5lIE5TX0xJTktfU1BFRURfRldfNDAwR19QQU00XzExMiAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4RCkKI2RlZmluZSBMSU5LX1NQRUVEX0ZXXzJfNUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweEVMIDw8IDcpCiNkZWZpbmUgTlNfTElOS19TUEVFRF9GV18yXzVHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHhFKQojZGVmaW5lIExJTktfU1BFRURfRldfMTAwTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4RkwgPDwgNykKI2RlZmluZSBOU19MSU5LX1NQRUVEX0ZXXzEwME0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweEYpCi8qIG52bSBjZmcgMjEwICovCiNkZWZpbmUgRDNfTElOS19TUEVFRF9GV19OVU0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMTAKI2RlZmluZSBEM19MSU5LX1NQRUVEX0ZXX01BU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwRjAwMDAKI2RlZmluZSBEM19MSU5LX1NQRUVEX0ZXX1NISUZUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2CiNkZWZpbmUgRDNfTElOS19TUEVFRF9GV19BVVRPTkVHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgwTCA8PCAxNikKI2RlZmluZSBOU19EM19MSU5LX1NQRUVEX0ZXX0FVVE9ORUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDApCiNkZWZpbmUgRDNfTElOS19TUEVFRF9GV18xRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgxTCA8PCAxNikKI2RlZmluZSBOU19EM19MSU5LX1NQRUVEX0ZXXzFHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDEpCiNkZWZpbmUgRDNfTElOS19TUEVFRF9GV18xMEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgyTCA8PCAxNikKI2RlZmluZSBOU19EM19MSU5LX1NQRUVEX0ZXXzEwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDIpCiNkZWZpbmUgRDNfTElOS19TUEVFRF9GV18yNUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgzTCA8PCAxNikKI2RlZmluZSBOU19EM19MSU5LX1NQRUVEX0ZXXzI1RyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDMpCiNkZWZpbmUgRDNfTElOS19TUEVFRF9GV180MEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg0TCA8PCAxNikKI2RlZmluZSBOU19EM19MSU5LX1NQRUVEX0ZXXzQwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDQpCiNkZWZpbmUgRDNfTElOS19TUEVFRF9GV181MEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg1TCA8PCAxNikKI2RlZmluZSBOU19EM19MSU5LX1NQRUVEX0ZXXzUwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDUpCiNkZWZpbmUgRDNfTElOS19TUEVFRF9GV18xMDBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg2TCA8PCAxNikKI2RlZmluZSBOU19EM19MSU5LX1NQRUVEX0ZXXzEwMEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDYpCiNkZWZpbmUgRDNfTElOS19TUEVFRF9GV18yMDBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg3TCA8PCAxNikKI2RlZmluZSBOU19EM19MSU5LX1NQRUVEX0ZXXzIwMEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDcpCiNkZWZpbmUgRDNfTElOS19TUEVFRF9GV18yXzVHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHhFTCA8PCAxNikKI2RlZmluZSBOU19EM19MSU5LX1NQRUVEX0ZXXzJfNUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweEUpCiNkZWZpbmUgRDNfTElOS19TUEVFRF9GV18xMDBNICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHhGTCA8PCAxNikKI2RlZmluZSBOU19EM19MSU5LX1NQRUVEX0ZXXzEwME0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweEYpCi8qIG52bSBjZmcgMjExICovCiNkZWZpbmUgRDNfRkxPV19DT05UUk9MX0ZXX05VTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMTEKI2RlZmluZSBEM19GTE9XX0NPTlRST0xfRldfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDA3MDAwMDAKI2RlZmluZSBEM19GTE9XX0NPTlRST0xfRldfU0hJRlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwCiNkZWZpbmUgRDNfRkxPV19DT05UUk9MX0ZXX0FVVE8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgwTCA8PCAyMCkKI2RlZmluZSBOU19EM19GTE9XX0NPTlRST0xfRldfQVVUTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDApCiNkZWZpbmUgRDNfRkxPV19DT05UUk9MX0ZXX1RYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgxTCA8PCAyMCkKI2RlZmluZSBOU19EM19GTE9XX0NPTlRST0xfRldfVFggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDEpCiNkZWZpbmUgRDNfRkxPV19DT05UUk9MX0ZXX1JYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgyTCA8PCAyMCkKI2RlZmluZSBOU19EM19GTE9XX0NPTlRST0xfRldfUlggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDIpCiNkZWZpbmUgRDNfRkxPV19DT05UUk9MX0ZXX0JPVEggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgzTCA8PCAyMCkKI2RlZmluZSBOU19EM19GTE9XX0NPTlRST0xfRldfQk9USCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDMpCiNkZWZpbmUgRDNfRkxPV19DT05UUk9MX0ZXX05PTkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg0TCA8PCAyMCkKI2RlZmluZSBOU19EM19GTE9XX0NPTlRST0xfRldfTk9ORSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDQpCi8qIG52bSBjZmcgMjEzICovCiNkZWZpbmUgUE9SVF9DRkdfTElOS19TRVRUSU5HU19NRURJQV9BVVRPX0RFVEVDVF9OVU0gICAgICAgICAgICAyMTMKI2RlZmluZSBQT1JUX0NGR19MSU5LX1NFVFRJTkdTX01FRElBX0FVVE9fREVURUNUX01BU0sgICAgICAgICAgIDB4MDIwMDAwMDAKI2RlZmluZSBQT1JUX0NGR19MSU5LX1NFVFRJTkdTX01FRElBX0FVVE9fREVURUNUX1NISUZUICAgICAgICAgIDI1CiNkZWZpbmUgUE9SVF9DRkdfTElOS19TRVRUSU5HU19NRURJQV9BVVRPX0RFVEVDVF9ESVNBQkxFRCAgICAgICAoMHgwTCA8PCAyNSkKI2RlZmluZSBOU19QT1JUX0NGR19MSU5LX1NFVFRJTkdTX01FRElBX0FVVE9fREVURUNUX0RJU0FCTEVEICAgICgweDApCiNkZWZpbmUgUE9SVF9DRkdfTElOS19TRVRUSU5HU19NRURJQV9BVVRPX0RFVEVDVF9FTkFCTEVEICAgICAgICAoMHgxTCA8PCAyNSkKI2RlZmluZSBOU19QT1JUX0NGR19MSU5LX1NFVFRJTkdTX01FRElBX0FVVE9fREVURUNUX0VOQUJMRUQgICAgICgweDEpCi8qIG52bSBjZmcgMzU3IC0gdTMyIG1iYV9jZmcyICovCiNkZWZpbmUgRlVOQ19DRkdfUFJFX0JPT1RfTUJBX1ZMQU5fVkFMVUVfTlVNICAgICAgICAgICAgICAgICAgICAzNTcKI2RlZmluZSBGVU5DX0NGR19QUkVfQk9PVF9NQkFfVkxBTl9WQUxVRV9NQVNLICAgICAgICAgICAgICAgICAgIDB4MDAwMEZGRkYKI2RlZmluZSBGVU5DX0NGR19QUkVfQk9PVF9NQkFfVkxBTl9WQUxVRV9TSElGVCAgICAgICAgICAgICAgICAgIDAKLyogbnZtIGNmZyAzNTggLSB1MzIgbWJhX2NmZzIgKi8KI2RlZmluZSBGVU5DX0NGR19QUkVfQk9PVF9NQkFfVkxBTl9OVU0gICAgICAgICAgICAgICAgICAgICAgICAgIDM1OAojZGVmaW5lIEZVTkNfQ0ZHX1BSRV9CT09UX01CQV9WTEFOX01BU0sgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAxMDAwMAojZGVmaW5lIEZVTkNfQ0ZHX1BSRV9CT09UX01CQV9WTEFOX1NISUZUICAgICAgICAgICAgICAgICAgICAgICAgMTYKI2RlZmluZSBGVU5DX0NGR19QUkVfQk9PVF9NQkFfVkxBTl9ESVNBQkxFRCAgICAgICAgICAgICAgICAgICAgICgweDBMIDw8IDE2KQojZGVmaW5lIE5TX0ZVTkNfQ0ZHX1BSRV9CT09UX01CQV9WTEFOX0RJU0FCTEVEICAgICAgICAgICAgICAgICAgKDB4MCkKI2RlZmluZSBGVU5DX0NGR19QUkVfQk9PVF9NQkFfVkxBTl9FTkFCTEVEICAgICAgICAgICAgICAgICAgICAgICgweDFMIDw8IDE2KQojZGVmaW5lIE5TX0ZVTkNfQ0ZHX1BSRV9CT09UX01CQV9WTEFOX0VOQUJMRUQgICAgICAgICAgICAgICAgICAgKDB4MSkKCnN0cnVjdCB0eF9kb29yYmVsbCB7Cgl1MzIga2V5X2lkeDsKI2RlZmluZSBUWF9ET09SQkVMTF9JRFhfTUFTSyAgICAgIDB4ZmZmZmZmVUwKI2RlZmluZSBUWF9ET09SQkVMTF9JRFhfU0ZUICAgICAgIDAKI2RlZmluZSBUWF9ET09SQkVMTF9LRVlfTUFTSyAgICAgIDB4ZjAwMDAwMDBVTAojZGVmaW5lIFRYX0RPT1JCRUxMX0tFWV9TRlQgICAgICAgMjgKICAgICNkZWZpbmUgVFhfRE9PUkJFTExfS0VZX1RYICAgICgweDBVTCA8PCAyOCkKICAgICNkZWZpbmUgVFhfRE9PUkJFTExfS0VZX0xBU1QgIFRYX0RPT1JCRUxMX0tFWV9UWAp9OwoKc3RydWN0IHJ4X2Rvb3JiZWxsIHsKCXUzMiBrZXlfaWR4OwojZGVmaW5lIFJYX0RPT1JCRUxMX0lEWF9NQVNLICAgICAgMHhmZmZmZmZVTAojZGVmaW5lIFJYX0RPT1JCRUxMX0lEWF9TRlQgICAgICAgMAojZGVmaW5lIFJYX0RPT1JCRUxMX0tFWV9NQVNLICAgICAgMHhmMDAwMDAwMFVMCiNkZWZpbmUgUlhfRE9PUkJFTExfS0VZX1NGVCAgICAgICAyOAogICAgI2RlZmluZSBSWF9ET09SQkVMTF9LRVlfUlggICAgKDB4MVVMIDw8IDI4KQogICAgI2RlZmluZSBSWF9ET09SQkVMTF9LRVlfTEFTVCAgUlhfRE9PUkJFTExfS0VZX1JYCn07CgpzdHJ1Y3QgY21wbF9kb29yYmVsbCB7Cgl1MzIgIGtleV9tYXNrX3ZhbGlkX2lkeDsKI2RlZmluZSBDTVBMX0RPT1JCRUxMX0lEWF9NQVNLICAgICAgMHhmZmZmZmZVTAojZGVmaW5lIENNUExfRE9PUkJFTExfSURYX1NGVCAgICAgICAwCiNkZWZpbmUgQ01QTF9ET09SQkVMTF9JRFhfVkFMSUQgICAgIDB4NDAwMDAwMFVMCiNkZWZpbmUgQ01QTF9ET09SQkVMTF9NQVNLICAgICAgICAgIDB4ODAwMDAwMFVMCiNkZWZpbmUgQ01QTF9ET09SQkVMTF9LRVlfTUFTSyAgICAgIDB4ZjAwMDAwMDBVTAojZGVmaW5lIENNUExfRE9PUkJFTExfS0VZX1NGVCAgICAgICAyOAogICAgI2RlZmluZSBDTVBMX0RPT1JCRUxMX0tFWV9DTVBMICAoMHgyVUwgPDwgMjgpCiAgICAjZGVmaW5lIENNUExfRE9PUkJFTExfS0VZX0xBU1QgIENNUExfRE9PUkJFTExfS0VZX0NNUEwKfTsKCi8qIGRiY19kYmMgKHNpemU6NjRiLzhCKSAqLwpzdHJ1Y3QgZGJjX2RiYyB7CglfX2xlMzIgIGluZGV4OwoJI2RlZmluZSBEQkNfREJDX0lOREVYX01BU0sgICAgICAgICAgMHhmZmZmZmZVTAoJI2RlZmluZSBEQkNfREJDX0lOREVYX1NGVCAgICAgICAgICAgMAoJI2RlZmluZSBEQkNfREJDX0VQT0NIICAgICAgICAgICAgICAgMHgxMDAwMDAwVUwKCSNkZWZpbmUgREJDX0RCQ19FUE9DSF9TRlQgICAgICAgICAgIDI0CgkjZGVmaW5lIERCQ19EQkNfVE9HR0xFX01BU0sgICAgICAgICAweDYwMDAwMDBVTAoJI2RlZmluZSBEQkNfREJDX1RPR0dMRV9TRlQgICAgICAgICAgMjUKCV9fbGUzMiAgdHlwZV9wYXRoX3hpZDsKCSNkZWZpbmUgREJDX0RCQ19YSURfTUFTSyAgICAgICAgICAgIDB4ZmZmZmZVTAoJI2RlZmluZSBEQkNfREJDX1hJRF9TRlQgICAgICAgICAgICAgMAoJI2RlZmluZSBEQkNfREJDX1BBVEhfTUFTSyAgICAgICAgICAgMHgzMDAwMDAwVUwKCSNkZWZpbmUgREJDX0RCQ19QQVRIX1NGVCAgICAgICAgICAgIDI0CgkjZGVmaW5lIERCQ19EQkNfUEFUSF9ST0NFICAgICAgICAgICAoMHgwVUwgPDwgMjQpCgkjZGVmaW5lIERCQ19EQkNfUEFUSF9MMiAgICAgICAgICAgICAoMHgxVUwgPDwgMjQpCgkjZGVmaW5lIERCQ19EQkNfUEFUSF9FTkdJTkUgICAgICAgICAoMHgyVUwgPDwgMjQpCgkjZGVmaW5lIERCQ19EQkNfUEFUSF9MQVNUICAgICAgICAgICBEQkNfREJDX1BBVEhfRU5HSU5FCgkjZGVmaW5lIERCQ19EQkNfVkFMSUQgICAgICAgICAgICAgICAweDQwMDAwMDBVTAoJI2RlZmluZSBEQkNfREJDX0RFQlVHX1RSQUNFICAgICAgICAgMHg4MDAwMDAwVUwKCSNkZWZpbmUgREJDX0RCQ19UWVBFX01BU0sgICAgICAgICAgIDB4ZjAwMDAwMDBVTAoJI2RlZmluZSBEQkNfREJDX1RZUEVfU0ZUICAgICAgICAgICAgMjgKCSNkZWZpbmUgREJDX0RCQ19UWVBFX1NRICAgICAgICAgICAgICgweDBVTCA8PCAyOCkKCSNkZWZpbmUgREJDX0RCQ19UWVBFX1JRICAgICAgICAgICAgICgweDFVTCA8PCAyOCkKCSNkZWZpbmUgREJDX0RCQ19UWVBFX1NSUSAgICAgICAgICAgICgweDJVTCA8PCAyOCkKCSNkZWZpbmUgREJDX0RCQ19UWVBFX1NSUV9BUk0gICAgICAgICgweDNVTCA8PCAyOCkKCSNkZWZpbmUgREJDX0RCQ19UWVBFX0NRICAgICAgICAgICAgICgweDRVTCA8PCAyOCkKCSNkZWZpbmUgREJDX0RCQ19UWVBFX0NRX0FSTVNFICAgICAgICgweDVVTCA8PCAyOCkKCSNkZWZpbmUgREJDX0RCQ19UWVBFX0NRX0FSTUFMTCAgICAgICgweDZVTCA8PCAyOCkKCSNkZWZpbmUgREJDX0RCQ19UWVBFX0NRX0FSTUVOQSAgICAgICgweDdVTCA8PCAyOCkKCSNkZWZpbmUgREJDX0RCQ19UWVBFX1NSUV9BUk1FTkEgICAgICgweDhVTCA8PCAyOCkKCSNkZWZpbmUgREJDX0RCQ19UWVBFX0NRX0NVVE9GRl9BQ0sgICgweDlVTCA8PCAyOCkKCSNkZWZpbmUgREJDX0RCQ19UWVBFX05RICAgICAgICAgICAgICgweGFVTCA8PCAyOCkKCSNkZWZpbmUgREJDX0RCQ19UWVBFX05RX0FSTSAgICAgICAgICgweGJVTCA8PCAyOCkKCSNkZWZpbmUgREJDX0RCQ19UWVBFX05VTEwgICAgICAgICAgICgweGZVTCA8PCAyOCkKCSNkZWZpbmUgREJDX0RCQ19UWVBFX0xBU1QgICAgICAgICAgIERCQ19EQkNfVFlQRV9OVUxMCn07CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBUcmFuc21pdCBpbmZvLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCnN0cnVjdCB0eF9iZF9zaG9ydCB7Cgl1MTYgZmxhZ3NfdHlwZTsKI2RlZmluZSBUWF9CRF9TSE9SVF9UWVBFX01BU0sgICAgICAgICAgICAgICAweDNmVUwKI2RlZmluZSBUWF9CRF9TSE9SVF9UWVBFX1NGVCAgICAgICAgICAgICAgICAwCiNkZWZpbmUgVFhfQkRfU0hPUlRfVFlQRV9UWF9CRF9TSE9SVCAgICAgICAgMHgwVUwKI2RlZmluZSBUWF9CRF9TSE9SVF9UWVBFX0xBU1QgICAgICAgICAgICAgICBUWF9CRF9TSE9SVF9UWVBFX1RYX0JEX1NIT1JUCiNkZWZpbmUgVFhfQkRfU0hPUlRfRkxBR1NfTUFTSyAgICAgICAgICAgICAgMHhmZmMwVUwKI2RlZmluZSBUWF9CRF9TSE9SVF9GTEFHU19TRlQgICAgICAgICAgICAgICA2CiNkZWZpbmUgVFhfQkRfU0hPUlRfRkxBR1NfUEFDS0VUX0VORCAgICAgICAgMHg0MFVMCiNkZWZpbmUgVFhfQkRfU0hPUlRfRkxBR1NfTk9fQ01QTCAgICAgICAgICAgMHg4MFVMCiNkZWZpbmUgVFhfQkRfU0hPUlRfRkxBR1NfQkRfQ05UX01BU0sgICAgICAgMHgxZjAwVUwKI2RlZmluZSBUWF9CRF9TSE9SVF9GTEFHU19CRF9DTlRfU0ZUICAgICAgICA4CiNkZWZpbmUgVFhfQkRfU0hPUlRfRkxBR1NfTEhJTlRfTUFTSyAgICAgICAgMHg2MDAwVUwKI2RlZmluZSBUWF9CRF9TSE9SVF9GTEFHU19MSElOVF9TRlQgICAgICAgICAxMwojZGVmaW5lIFRYX0JEX1NIT1JUX0ZMQUdTX0xISU5UX0xUNTEyICAgICAgICgweDBVTCA8PCAxMykKI2RlZmluZSBUWF9CRF9TSE9SVF9GTEFHU19MSElOVF9MVDFLICAgICAgICAoMHgxVUwgPDwgMTMpCiNkZWZpbmUgVFhfQkRfU0hPUlRfRkxBR1NfTEhJTlRfTFQySyAgICAgICAgKDB4MlVMIDw8IDEzKQojZGVmaW5lIFRYX0JEX1NIT1JUX0ZMQUdTX0xISU5UX0dURTJLICAgICAgICgweDNVTCA8PCAxMykKI2RlZmluZSBUWF9CRF9TSE9SVF9GTEFHU19MSElOVF9MQVNUICAgICAgICBUWF9CRF9TSE9SVF9GTEFHU19MSElOVF9HVEUySwojZGVmaW5lIFRYX0JEX1NIT1JUX0ZMQUdTX0NPQUxfTk9XICAgICAgICAgIDB4ODAwMFVMCgl1MTYgbGVuOwoJdTMyIG9wYXF1ZTsKCXVuaW9uIGRtYV9hZGRyNjRfdCBkbWE7Cn07CgpzdHJ1Y3QgdHhfY21wbCB7Cgl1MTYgZmxhZ3NfdHlwZTsKI2RlZmluZSBUWF9DTVBMX1RZUEVfTUFTSyAgICAgICAgMHgzZlVMCiNkZWZpbmUgVFhfQ01QTF9UWVBFX1NGVCAgICAgICAgIDAKI2RlZmluZSBUWF9DTVBMX1RZUEVfVFhfTDIgICAgICAgMHgwVUwKI2RlZmluZSBUWF9DTVBMX1RZUEVfTEFTVCAgICAgICAgVFhfQ01QTF9UWVBFX1RYX0wyCiNkZWZpbmUgVFhfQ01QTF9GTEFHU19NQVNLICAgICAgIDB4ZmZjMFVMCiNkZWZpbmUgVFhfQ01QTF9GTEFHU19TRlQgICAgICAgIDYKI2RlZmluZSBUWF9DTVBMX0ZMQUdTX0VSUk9SICAgICAgMHg0MFVMCiNkZWZpbmUgVFhfQ01QTF9GTEFHU19QVVNIICAgICAgIDB4ODBVTAoJdTE2IHVudXNlZF8wOwoJdTMyIG9wYXF1ZTsKCXUxNiBlcnJvcnNfdjsKI2RlZmluZSBUWF9DTVBMX1YgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxVUwKI2RlZmluZSBUWF9DTVBMX0VSUk9SU19NQVNLICAgICAgICAgICAgICAgICAgICAgMHhmZmZlVUwKI2RlZmluZSBUWF9DTVBMX0VSUk9SU19TRlQgICAgICAgICAgICAgICAgICAgICAgMQojZGVmaW5lIFRYX0NNUExfRVJST1JTX0JVRkZFUl9FUlJPUl9NQVNLICAgICAgICAweGVVTAojZGVmaW5lIFRYX0NNUExfRVJST1JTX0JVRkZFUl9FUlJPUl9TRlQgICAgICAgICAxCiNkZWZpbmUgVFhfQ01QTF9FUlJPUlNfQlVGRkVSX0VSUk9SX05PX0VSUk9SICAgICgweDBVTCA8PCAxKQojZGVmaW5lIFRYX0NNUExfRVJST1JTX0JVRkZFUl9FUlJPUl9CQURfRk1UICAgICAoMHgyVUwgPDwgMSkKI2RlZmluZSBUWF9DTVBMX0VSUk9SU19CVUZGRVJfRVJST1JfTEFTVCBUWF9DTVBMX0VSUk9SU19CVUZGRVJfRVJST1JfQkFEX0ZNVAojZGVmaW5lIFRYX0NNUExfRVJST1JTX1pFUk9fTEVOR1RIX1BLVCAgICAgICAgICAweDEwVUwKI2RlZmluZSBUWF9DTVBMX0VSUk9SU19FWENFU1NJVkVfQkRfTEVOR1RIICAgICAgMHgyMFVMCiNkZWZpbmUgVFhfQ01QTF9FUlJPUlNfRE1BX0VSUk9SICAgICAgICAgICAgICAgIDB4NDBVTAojZGVmaW5lIFRYX0NNUExfRVJST1JTX0hJTlRfVE9PX1NIT1JUICAgICAgICAgICAweDgwVUwKI2RlZmluZSBUWF9DTVBMX0VSUk9SU19QT0lTT05fVExQX0VSUk9SICAgICAgICAgMHgxMDBVTAoJdTE2IHVudXNlZF8xOwoJdTMyIHVudXNlZF8yOwp9OwoKc3RydWN0IHR4X2luZm8gewoJdm9pZCAgICAgICAgICAgICAqYmRfdmlydDsKCXN0cnVjdCBpb19idWZmZXIgKmlvYltNQVhfVFhfREVTQ19DTlRdOwoJdTE2ICAgICAgICAgICAgICBwcm9kX2lkOyAgLyogVHggcHJvZHVjZXIgaW5kZXguICovCgl1MTYgICAgICAgICAgICAgIGNvbnNfaWQ7Cgl1MTYgICAgICAgICAgICAgIHJpbmdfY250OwoJdTMyICAgICAgICAgICAgICBjbnQ7ICAgLyogVHggc3RhdGlzdGljcy4gKi8KCXUzMiAgICAgICAgICAgICAgY250X3JlcTsKCXU4ICAgICAgICAgICAgICAgZXBvY2g7Cgl1OCAgICAgICAgICAgICAgIHJlc1szXTsKfTsKCnN0cnVjdCBjbXBsX2Jhc2UgewoJdTE2IHR5cGU7CiNkZWZpbmUgQ01QTF9CQVNFX1RZUEVfTUFTSyAgICAgICAgICAgICAgMHgzZlVMCiNkZWZpbmUgQ01QTF9CQVNFX1RZUEVfU0ZUICAgICAgICAgICAgICAgMAojZGVmaW5lIENNUExfQkFTRV9UWVBFX1RYX0wyICAgICAgICAgICAgIDB4MFVMCiNkZWZpbmUgQ01QTF9CQVNFX1RZUEVfUlhfTDIgICAgICAgICAgICAgMHgxMVVMCiNkZWZpbmUgQ01QTF9CQVNFX1RZUEVfUlhfQUdHICAgICAgICAgICAgMHgxMlVMCiNkZWZpbmUgQ01QTF9CQVNFX1RZUEVfUlhfVFBBX1NUQVJUICAgICAgMHgxM1VMCiNkZWZpbmUgQ01QTF9CQVNFX1RZUEVfUlhfVFBBX0VORCAgICAgICAgMHgxNVVMCiNkZWZpbmUgQ01QTF9CQVNFX1RZUEVfUlhfTDJfVjMgICAgICAgICAgMHgxN1VMCiNkZWZpbmUgQ01QTF9CQVNFX1RZUEVfU1RBVF9FSkVDVCAgICAgICAgMHgxYVVMCiNkZWZpbmUgQ01QTF9CQVNFX1RZUEVfSFdSTV9ET05FICAgICAgICAgMHgyMFVMCiNkZWZpbmUgQ01QTF9CQVNFX1RZUEVfSFdSTV9GV0RfUkVRICAgICAgMHgyMlVMCiNkZWZpbmUgQ01QTF9CQVNFX1RZUEVfSFdSTV9GV0RfUkVTUCAgICAgMHgyNFVMCiNkZWZpbmUgQ01QTF9CQVNFX1RZUEVfSFdSTV9BU1lOQ19FVkVOVCAgMHgyZVVMCiNkZWZpbmUgQ01QTF9CQVNFX1RZUEVfQ1FfTk9USUZJQ0FUSU9OICAgMHgzMFVMCiNkZWZpbmUgQ01QTF9CQVNFX1RZUEVfU1JRX0VWRU5UICAgICAgICAgMHgzMlVMCiNkZWZpbmUgQ01QTF9CQVNFX1RZUEVfREJRX0VWRU5UICAgICAgICAgMHgzNFVMCiNkZWZpbmUgQ01QTF9CQVNFX1RZUEVfUVBfRVZFTlQgICAgICAgICAgMHgzOFVMCiNkZWZpbmUgQ01QTF9CQVNFX1RZUEVfRlVOQ19FVkVOVCAgICAgICAgMHgzYVVMCiNkZWZpbmUgQ01QTF9CQVNFX1RZUEVfTEFTVCBDTVBMX0JBU0VfVFlQRV9GVU5DX0VWRU5UCgl1MTYgaW5mbzE7Cgl1MzIgaW5mbzI7Cgl1MzIgaW5mbzNfdjsKI2RlZmluZSBDTVBMX0JBU0VfViAgICAgICAgICAweDFVTAojZGVmaW5lIENNUExfQkFTRV9JTkZPM19NQVNLIDB4ZmZmZmZmZmVVTAojZGVmaW5lIENNUExfQkFTRV9JTkZPM19TRlQgIDEKCXUzMiBpbmZvNDsKfTsKCnN0cnVjdCBjbXBfaW5mbyB7Cgl2b2lkICAgICAgKmJkX3ZpcnQ7Cgl1MTYgICAgICAgY29uc19pZDsKCXUxNiAgICAgICByaW5nX2NudDsKCXU4ICAgICAgICBjb21wbGV0aW9uX2JpdDsKCXU4ICAgICAgICBlcG9jaDsKCXU4ICAgICAgICByZXNbMl07Cn07CgovKiBDb21wbGV0aW9uIFF1ZXVlIE5vdGlmaWNhdGlvbiAqLwovKiBucV9jbiAoc2l6ZToxMjhiLzE2QikgKi8Kc3RydWN0IG5xX2Jhc2UgewoJdTE2CXR5cGU7Ci8qCiAqIFRoaXMgZmllbGQgaW5kaWNhdGVzIHRoZSBleGFjdCB0eXBlIG9mIHRoZSBjb21wbGV0aW9uLgogKiBCeSBjb252ZW50aW9uLCB0aGUgTFNCIGlkZW50aWZpZXMgdGhlIGxlbmd0aCBvZiB0aGUKICogcmVjb3JkIGluIDE2QiB1bml0cy4gIEV2ZW4gdmFsdWVzIGluZGljYXRlIDE2QgogKiByZWNvcmRzLiAgT2RkIHZhbHVlcyBpbmRpY2F0ZSAzMkIKICogcmVjb3Jkcy4KICovCiNkZWZpbmUgTlFfQ05fVFlQRV9NQVNLICAgICAgICAgICAweDNmVUwKI2RlZmluZSBOUV9DTl9UWVBFX1NGVCAgICAgICAgICAgIDAKI2RlZmluZSBOUV9DTl9UT0dHTEVfTUFTSyAgICAgICAgIDB4YzBVTAojZGVmaW5lIE5RX0NOX1RPR0dMRV9TRlQgICAgICAgICAgNgovKiBDUSBOb3RpZmljYXRpb24gKi8KCSAgICAjZGVmaW5lIE5RX0NOX1RZUEVfQ1FfTk9USUZJQ0FUSU9OICAweDMwVUwKCSAgICAjZGVmaW5lIE5RX0NOX1RZUEVfTEFTVCAgICAgICAgICAgIE5RX0NOX1RZUEVfQ1FfTk9USUZJQ0FUSU9OCgl1MTYJcmVzZXJ2ZWQxNjsKLyoKICogVGhpcyBpcyBhbiBhcHBsaWNhdGlvbiBsZXZlbCBJRCB1c2VkIHRvIGlkZW50aWZ5IHRoZQogKiBDUS4gIFRoaXMgZmllbGQgY2FycmllcyB0aGUgbG93ZXIgMzJiIG9mIHRoZSB2YWx1ZS4KICovCgl1MzIJY3FfaGFuZGxlX2xvdzsKCXUzMgl2OwovKgogKiBUaGlzIHZhbHVlIGlzIHdyaXR0ZW4gYnkgdGhlIE5JQyBzdWNoIHRoYXQgaXQgd2lsbCBiZSBkaWZmZXJlbnQKICogZm9yIGVhY2ggcGFzcyB0aHJvdWdoIHRoZSBjb21wbGV0aW9uIHF1ZXVlLiAgIFRoZSBldmVuIHBhc3NlcwogKiB3aWxsIHdyaXRlIDEuICBUaGUgb2RkIHBhc3NlcyB3aWxsIHdyaXRlIDAuCiAqLwojZGVmaW5lIE5RX0NOX1YgICAgIDB4MVVMCi8qCiAqIFRoaXMgaXMgYW4gYXBwbGljYXRpb24gbGV2ZWwgSUQgdXNlZCB0byBpZGVudGlmeSB0aGUKICogQ1EuICBUaGlzIGZpZWxkIGNhcnJpZXMgdGhlIHVwcGVyIDMyYiBvZiB0aGUgdmFsdWUuCiAqLwoJdTMyCWNxX2hhbmRsZV9oaWdoOwp9OwoKc3RydWN0IG5xX2luZm8gewoJdm9pZCAgICAgICpiZF92aXJ0OwoJdTE2ICAgICAgIGNvbnNfaWQ7Cgl1MTYgICAgICAgcmluZ19jbnQ7Cgl1OCAgICAgICAgY29tcGxldGlvbl9iaXQ7Cgl1OCAgICAgICAgZXBvY2g7Cgl1OCAgICAgICAgdG9nZ2xlOwoJdTggICAgICAgIHJlc1sxXTsKfTsKCnN0cnVjdCByeF9wa3RfY21wbCB7Cgl1MTYgZmxhZ3NfdHlwZTsKI2RlZmluZSBSWF9QS1RfQ01QTF9UWVBFX01BU0sgICAgICAgICAgICAgICAgICAgIDB4M2ZVTAojZGVmaW5lIFJYX1BLVF9DTVBMX1RZUEVfU0ZUICAgICAgICAgICAgICAgICAgICAgMAojZGVmaW5lIFJYX1BLVF9DTVBMX1RZUEVfUlhfTDIgICAgICAgICAgICAgICAgICAgMHgxMVVMCiNkZWZpbmUgUlhfUEtUX0NNUExfVFlQRV9MQVNUICAgICAgICAgICAgICAgICAgICBSWF9QS1RfQ01QTF9UWVBFX1JYX0wyCiNkZWZpbmUgUlhfUEtUX0NNUExfRkxBR1NfTUFTSyAgICAgICAgICAgICAgICAgICAweGZmYzBVTAojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTX1NGVCAgICAgICAgICAgICAgICAgICAgNgojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTX0VSUk9SICAgICAgICAgICAgICAgICAgMHg0MFVMCiNkZWZpbmUgUlhfUEtUX0NNUExfRkxBR1NfUExBQ0VNRU5UX01BU0sgICAgICAgICAweDM4MFVMCiNkZWZpbmUgUlhfUEtUX0NNUExfRkxBR1NfUExBQ0VNRU5UX1NGVCAgICAgICAgICA3CiNkZWZpbmUgUlhfUEtUX0NNUExfRkxBR1NfUExBQ0VNRU5UX05PUk1BTCAgICAgICAoMHgwVUwgPDwgNykKI2RlZmluZSBSWF9QS1RfQ01QTF9GTEFHU19QTEFDRU1FTlRfSlVNQk8gICAgICAgICgweDFVTCA8PCA3KQojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTX1BMQUNFTUVOVF9IRFMgICAgICAgICAgKDB4MlVMIDw8IDcpCiNkZWZpbmUgUlhfUEtUX0NNUExfRkxBR1NfUExBQ0VNRU5UX0xBU1QgUlhfUEtUX0NNUExfRkxBR1NfUExBQ0VNRU5UX0hEUwojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTX1JTU19WQUxJRCAgICAgICAgICAgICAgMHg0MDBVTAojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTX1VOVVNFRCAgICAgICAgICAgICAgICAgMHg4MDBVTAojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTX0lUWVBFX01BU0sgICAgICAgICAgICAgMHhmMDAwVUwKI2RlZmluZSBSWF9QS1RfQ01QTF9GTEFHU19JVFlQRV9TRlQgICAgICAgICAgICAgIDEyCiNkZWZpbmUgUlhfUEtUX0NNUExfRkxBR1NfSVRZUEVfTk9UX0tOT1dOICAgICAgICAgICgweDBVTCA8PCAxMikKI2RlZmluZSBSWF9QS1RfQ01QTF9GTEFHU19JVFlQRV9JUCAgICAgICAgICAgICAgICAgKDB4MVVMIDw8IDEyKQojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTX0lUWVBFX1RDUCAgICAgICAgICAgICAgICAoMHgyVUwgPDwgMTIpCiNkZWZpbmUgUlhfUEtUX0NNUExfRkxBR1NfSVRZUEVfVURQICAgICAgICAgICAgICAgICgweDNVTCA8PCAxMikKI2RlZmluZSBSWF9QS1RfQ01QTF9GTEFHU19JVFlQRV9GQ09FICAgICAgICAgICAgICAgKDB4NFVMIDw8IDEyKQojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTX0lUWVBFX1JPQ0UgICAgICAgICAgICAgICAoMHg1VUwgPDwgMTIpCiNkZWZpbmUgUlhfUEtUX0NNUExfRkxBR1NfSVRZUEVfSUNNUCAgICAgICAgICAgICAgICgweDdVTCA8PCAxMikKI2RlZmluZSBSWF9QS1RfQ01QTF9GTEFHU19JVFlQRV9QVFBfV09fVElNRVNUQU1QICAgKDB4OFVMIDw8IDEyKQojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTX0lUWVBFX1BUUF9XX1RJTUVTVEFNUCAgICAoMHg5VUwgPDwgMTIpCiNkZWZpbmUgUlhfUEtUX0NNUExfRkxBR1NfSVRZUEVfTEFTVCBSWF9QS1RfQ01QTF9GTEFHU19JVFlQRV9QVFBfV19USU1FU1RBTVAKCXUxNiBsZW47Cgl1MzIgb3BhcXVlOwoJdTggIGFnZ19idWZzX3YxOwojZGVmaW5lIFJYX1BLVF9DTVBMX1YxICAgICAgICAgICAgMHgxVUwKI2RlZmluZSBSWF9QS1RfQ01QTF9BR0dfQlVGU19NQVNLIDB4M2VVTAojZGVmaW5lIFJYX1BLVF9DTVBMX0FHR19CVUZTX1NGVCAgMQojZGVmaW5lIFJYX1BLVF9DTVBMX1VOVVNFRDFfTUFTSyAgMHhjMFVMCiNkZWZpbmUgUlhfUEtUX0NNUExfVU5VU0VEMV9TRlQgICA2Cgl1OCAgcnNzX2hhc2hfdHlwZTsKCXU4ICBwYXlsb2FkX29mZnNldDsKCXU4ICB1bnVzZWQxOwoJdTMyIHJzc19oYXNoOwp9OwoKc3RydWN0IHJ4X3BrdF9jbXBsX2hpIHsKCXUzMiAgZmxhZ3MyOwojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTMl9JUF9DU19DQUxDICAgICAgICAgMHgxVUwKI2RlZmluZSBSWF9QS1RfQ01QTF9GTEFHUzJfTDRfQ1NfQ0FMQyAgICAgICAgIDB4MlVMCiNkZWZpbmUgUlhfUEtUX0NNUExfRkxBR1MyX1RfSVBfQ1NfQ0FMQyAgICAgICAweDRVTAojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTMl9UX0w0X0NTX0NBTEMgICAgICAgMHg4VUwKI2RlZmluZSBSWF9QS1RfQ01QTF9GTEFHUzJfTUVUQV9GT1JNQVRfTUFTSyAgIDB4ZjBVTAojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTMl9NRVRBX0ZPUk1BVF9TRlQgICAgNAojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTMl9NRVRBX0ZPUk1BVF9OT05FICAgKDB4MFVMIDw8IDQpCiNkZWZpbmUgUlhfUEtUX0NNUExfRkxBR1MyX01FVEFfRk9STUFUX1ZMQU4gICAoMHgxVUwgPDwgNCkKI2RlZmluZSBSWF9QS1RfQ01QTF9GTEFHUzJfTUVUQV9GT1JNQVRfTEFTVCAgIFwKCVJYX1BLVF9DTVBMX0ZMQUdTMl9NRVRBX0ZPUk1BVF9WTEFOCiNkZWZpbmUgUlhfUEtUX0NNUExfRkxBR1MyX0lQX1RZUEUgICAgICAgICAgICAweDEwMFVMCgl1MzIgbWV0YWRhdGE7CiNkZWZpbmUgUlhfUEtUX0NNUExfTUVUQURBVEFfVklEX01BU0sgICAgICAgICAweGZmZlVMCiNkZWZpbmUgUlhfUEtUX0NNUExfTUVUQURBVEFfVklEX1NGVCAgICAgICAgICAwCiNkZWZpbmUgUlhfUEtUX0NNUExfTUVUQURBVEFfREUgICAgICAgICAgICAgICAweDEwMDBVTAojZGVmaW5lIFJYX1BLVF9DTVBMX01FVEFEQVRBX1BSSV9NQVNLICAgICAgICAgMHhlMDAwVUwKI2RlZmluZSBSWF9QS1RfQ01QTF9NRVRBREFUQV9QUklfU0ZUICAgICAgICAgIDEzCiNkZWZpbmUgUlhfUEtUX0NNUExfTUVUQURBVEFfVFBJRF9NQVNLICAgICAgICAweGZmZmYwMDAwVUwKI2RlZmluZSBSWF9QS1RfQ01QTF9NRVRBREFUQV9UUElEX1NGVCAgICAgICAgIDE2Cgl1MTYgZXJyb3JzX3YyOwojZGVmaW5lIFJYX1BLVF9DTVBMX1YyICAgICAgICAgICAgICAgICAgICAgICAgMHgxVUwKI2RlZmluZSBSWF9QS1RfQ01QTF9FUlJPUlNfTUFTSyAgICAgICAgICAgICAgIDB4ZmZmZVVMCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX1NGVCAgICAgICAgICAgICAgICAxCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX0JVRkZFUl9FUlJPUl9NQVNLICAweGVVTAojZGVmaW5lIFJYX1BLVF9DTVBMX0VSUk9SU19CVUZGRVJfRVJST1JfU0ZUICAgMQojZGVmaW5lIFJYX1BLVF9DTVBMX0VSUk9SU19CVUZGRVJfRVJST1JfTk9fQlVGRkVSICAgKDB4MFVMIDw8IDEpCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX0JVRkZFUl9FUlJPUl9ESURfTk9UX0ZJVCAoMHgxVUwgPDwgMSkKI2RlZmluZSBSWF9QS1RfQ01QTF9FUlJPUlNfQlVGRkVSX0VSUk9SX05PVF9PTl9DSElQICgweDJVTCA8PCAxKQojZGVmaW5lIFJYX1BLVF9DTVBMX0VSUk9SU19CVUZGRVJfRVJST1JfQkFEX0ZPUk1BVCAgKDB4M1VMIDw8IDEpCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX0JVRkZFUl9FUlJPUl9MQVNUIFwKCVJYX1BLVF9DTVBMX0VSUk9SU19CVUZGRVJfRVJST1JfQkFEX0ZPUk1BVAojZGVmaW5lIFJYX1BLVF9DTVBMX0VSUk9SU19JUF9DU19FUlJPUiAgICAgICAgICAgICAgMHgxMFVMCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX0w0X0NTX0VSUk9SICAgICAgICAgICAgICAweDIwVUwKI2RlZmluZSBSWF9QS1RfQ01QTF9FUlJPUlNfVF9JUF9DU19FUlJPUiAgICAgICAgICAgIDB4NDBVTAojZGVmaW5lIFJYX1BLVF9DTVBMX0VSUk9SU19UX0w0X0NTX0VSUk9SICAgICAgICAgICAgMHg4MFVMCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX0NSQ19FUlJPUiAgICAgICAgICAgICAgICAweDEwMFVMCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX1RfUEtUX0VSUk9SX01BU0sgICAgICAgICAweGUwMFVMCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX1RfUEtUX0VSUk9SX1NGVCAgICAgICAgICA5CiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX1RfUEtUX0VSUk9SX05PX0VSUk9SICAgICAoMHgwVUwgPDwgOSkKI2RlZmluZSBSWF9QS1RfQ01QTF9FUlJPUlNfVF9QS1RfRVJST1JfVF9MM19CQURfVkVSU0lPTiAgICgweDFVTCA8PCA5KQojZGVmaW5lIFJYX1BLVF9DTVBMX0VSUk9SU19UX1BLVF9FUlJPUl9UX0wzX0JBRF9IRFJfTEVOICAgKDB4MlVMIDw8IDkpCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX1RfUEtUX0VSUk9SX1RVTk5FTF9UT1RBTF9FUlJPUiAoMHgzVUwgPDwgOSkKI2RlZmluZSBSWF9QS1RfQ01QTF9FUlJPUlNfVF9QS1RfRVJST1JfVF9JUF9UT1RBTF9FUlJPUiAgICgweDRVTCA8PCA5KQojZGVmaW5lIFJYX1BLVF9DTVBMX0VSUk9SU19UX1BLVF9FUlJPUl9UX1VEUF9UT1RBTF9FUlJPUiAgKDB4NVVMIDw8IDkpCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX1RfUEtUX0VSUk9SX1RfTDNfQkFEX1RUTCAgICAgICAoMHg2VUwgPDwgOSkKI2RlZmluZSBSWF9QS1RfQ01QTF9FUlJPUlNfVF9QS1RfRVJST1JfTEFTVCBcCglSWF9QS1RfQ01QTF9FUlJPUlNfVF9QS1RfRVJST1JfVF9MM19CQURfVFRMCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX1BLVF9FUlJPUl9NQVNLICAgICAgICAgICAgICAgICAweGYwMDBVTAojZGVmaW5lIFJYX1BLVF9DTVBMX0VSUk9SU19QS1RfRVJST1JfU0ZUICAgICAgICAgICAgICAgICAgMTIKI2RlZmluZSBSWF9QS1RfQ01QTF9FUlJPUlNfUEtUX0VSUk9SX05PX0VSUk9SICAgICAgICAgICAgICgweDBVTCA8PCAxMikKI2RlZmluZSBSWF9QS1RfQ01QTF9FUlJPUlNfUEtUX0VSUk9SX0wzX0JBRF9WRVJTSU9OICAgICAgICgweDFVTCA8PCAxMikKI2RlZmluZSBSWF9QS1RfQ01QTF9FUlJPUlNfUEtUX0VSUk9SX0wzX0JBRF9IRFJfTEVOICAgICAgICgweDJVTCA8PCAxMikKI2RlZmluZSBSWF9QS1RfQ01QTF9FUlJPUlNfUEtUX0VSUk9SX0wzX0JBRF9UVEwgICAgICAgICAgICgweDNVTCA8PCAxMikKI2RlZmluZSBSWF9QS1RfQ01QTF9FUlJPUlNfUEtUX0VSUk9SX0lQX1RPVEFMX0VSUk9SICAgICAgICgweDRVTCA8PCAxMikKI2RlZmluZSBSWF9QS1RfQ01QTF9FUlJPUlNfUEtUX0VSUk9SX1VEUF9UT1RBTF9FUlJPUiAgICAgICAgICAoMHg1VUwgPDwgMTIpCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX1BLVF9FUlJPUl9MNF9CQURfSERSX0xFTiAgICAgICAgICAgKDB4NlVMIDw8IDEyKQojZGVmaW5lIFJYX1BLVF9DTVBMX0VSUk9SU19QS1RfRVJST1JfTDRfQkFEX0hEUl9MRU5fVE9PX1NNQUxMICgweDdVTCA8PCAxMikKI2RlZmluZSBSWF9QS1RfQ01QTF9FUlJPUlNfUEtUX0VSUk9SX0w0X0JBRF9PUFRfTEVOICAgICAgICAgICAoMHg4VUwgPDwgMTIpCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX1BLVF9FUlJPUl9MQVNUIFwKCVJYX1BLVF9DTVBMX0VSUk9SU19QS1RfRVJST1JfTDRfQkFEX09QVF9MRU4KCXUxNiBjZmFfY29kZTsKCXUzMiByZW9yZGVyOwojZGVmaW5lIFJYX1BLVF9DTVBMX1JFT1JERVJfTUFTSyAweGZmZmZmZlVMCiNkZWZpbmUgUlhfUEtUX0NNUExfUkVPUkRFUl9TRlQgIDAKfTsKCnN0cnVjdCByeF9wa3RfdjNfY21wbCB7Cgl1MTYJZmxhZ3NfdHlwZTsKCSNkZWZpbmUgUlhfUEtUX1YzX0NNUExfVFlQRV9NQVNLICAgICAgICAgICAgICAgICAgICAgIDB4M2ZVTAoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9UWVBFX1NGVCAgICAgICAgICAgICAgICAgICAgICAgMAoJLyoKCSAqIFJYIEwyIFYzIGNvbXBsZXRpb246CgkgKiBDb21wbGV0aW9uIG9mIGFuZCBMMiBSWCBwYWNrZXQuIExlbmd0aCA9IDMyQgoJICogVGhpcyBpcyB0aGUgbmV3IHZlcnNpb24gb2YgdGhlIFJYX0wyIGNvbXBsZXRpb24gdXNlZCBpbiBUaG9yMgoJICogYW5kIGxhdGVyIGNoaXBzLgoJICovCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX1RZUEVfUlhfTDJfVjMgICAgICAgICAgICAgICAgICAgIDB4MTdVTAoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9UWVBFX0xBU1QgICAgICAgICAgICAgICAgICAgICAgIFJYX1BLVF9WM19DTVBMX1RZUEVfUlhfTDJfVjMKCSNkZWZpbmUgUlhfUEtUX1YzX0NNUExfRkxBR1NfTUFTSyAgICAgICAgICAgICAgICAgICAgIDB4ZmZjMFVMCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX0ZMQUdTX1NGVCAgICAgICAgICAgICAgICAgICAgICA2CgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX0ZMQUdTX0VSUk9SICAgICAgICAgICAgICAgICAgICAgMHg0MFVMCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX0ZMQUdTX1BMQUNFTUVOVF9NQVNLICAgICAgICAgICAgMHgzODBVTAoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9GTEFHU19QTEFDRU1FTlRfU0ZUICAgICAgICAgICAgIDcKCSNkZWZpbmUgUlhfUEtUX1YzX0NNUExfRkxBR1NfUExBQ0VNRU5UX05PUk1BTCAgICAgICAgICAgICgweDBVTCA8PCA3KQoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9GTEFHU19QTEFDRU1FTlRfSlVNQk8gICAgICAgICAgICAgKDB4MVVMIDw8IDcpCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX0ZMQUdTX1BMQUNFTUVOVF9IRFMgICAgICAgICAgICAgICAoMHgyVUwgPDwgNykKCSNkZWZpbmUgUlhfUEtUX1YzX0NNUExfRkxBR1NfUExBQ0VNRU5UX1RSVU5DQVRJT04gICAgICAgICgweDNVTCA8PCA3KQoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9GTEFHU19QTEFDRU1FTlRfTEFTVCAgICAgICAgICAgICBSWF9QS1RfVjNfQ01QTF9GTEFHU19QTEFDRU1FTlRfVFJVTkNBVElPTgoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9GTEFHU19SU1NfVkFMSUQgICAgICAgICAgICAgICAgIDB4NDAwVUwKCSNkZWZpbmUgUlhfUEtUX1YzX0NNUExfRkxBR1NfUEtUX01FVEFEQVRBX1BSRVNFTlQgICAgICAweDgwMFVMCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX0ZMQUdTX0lUWVBFX01BU0sgICAgICAgICAgICAgICAgMHhmMDAwVUwKCSNkZWZpbmUgUlhfUEtUX1YzX0NNUExfRkxBR1NfSVRZUEVfU0ZUICAgICAgICAgICAgICAgICAxMgoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9GTEFHU19JVFlQRV9OT1RfS05PV04gICAgICAgICAgICAgKDB4MFVMIDw8IDEyKQoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9GTEFHU19JVFlQRV9JUCAgICAgICAgICAgICAgICAgICAgKDB4MVVMIDw8IDEyKQoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9GTEFHU19JVFlQRV9UQ1AgICAgICAgICAgICAgICAgICAgKDB4MlVMIDw8IDEyKQoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9GTEFHU19JVFlQRV9VRFAgICAgICAgICAgICAgICAgICAgKDB4M1VMIDw8IDEyKQoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9GTEFHU19JVFlQRV9GQ09FICAgICAgICAgICAgICAgICAgKDB4NFVMIDw8IDEyKQoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9GTEFHU19JVFlQRV9ST0NFICAgICAgICAgICAgICAgICAgKDB4NVVMIDw8IDEyKQoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9GTEFHU19JVFlQRV9JQ01QICAgICAgICAgICAgICAgICAgKDB4N1VMIDw8IDEyKQoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9GTEFHU19JVFlQRV9QVFBfV09fVElNRVNUQU1QICAgICAgKDB4OFVMIDw8IDEyKQoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9GTEFHU19JVFlQRV9QVFBfV19USU1FU1RBTVAgICAgICAgKDB4OVVMIDw8IDEyKQoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9GTEFHU19JVFlQRV9MQVNUICAgICAgICAgICAgICAgICBSWF9QS1RfVjNfQ01QTF9GTEFHU19JVFlQRV9QVFBfV19USU1FU1RBTVAKCXUxNglsZW47Cgl1MzIJb3BhcXVlOwoJdTE2CXJzc19oYXNoX3R5cGVfYWdnX2J1ZnNfdjE7CgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX1YxICAgICAgICAgICAgICAgICAgIDB4MVVMCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX0FHR19CVUZTX01BU0sgICAgICAgIDB4M2VVTAoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9BR0dfQlVGU19TRlQgICAgICAgICAxCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX1VOVVNFRDEgICAgICAgICAgICAgIDB4NDBVTAoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9SU1NfSEFTSF9UWVBFX01BU0sgICAweGZmODBVTAoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9SU1NfSEFTSF9UWVBFX1NGVCAgICA3CgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX1JTU19IQVNIX1RZUEVfRU5VTV8wICAgKDB4MFVMIDw8IDcpCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX1JTU19IQVNIX1RZUEVfRU5VTV8xICAgKDB4MVVMIDw8IDcpCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX1JTU19IQVNIX1RZUEVfRU5VTV8zICAgKDB4M1VMIDw8IDcpCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX1JTU19IQVNIX1RZUEVfRU5VTV80ICAgKDB4NFVMIDw8IDcpCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX1JTU19IQVNIX1RZUEVfRU5VTV81ICAgKDB4NVVMIDw8IDcpCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX1JTU19IQVNIX1RZUEVfRU5VTV82ICAgKDB4NlVMIDw8IDcpCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX1JTU19IQVNIX1RZUEVfRU5VTV83ICAgKDB4N1VMIDw8IDcpCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX1JTU19IQVNIX1RZUEVfRU5VTV84ICAgKDB4OFVMIDw8IDcpCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX1JTU19IQVNIX1RZUEVfRU5VTV85ICAgKDB4OVVMIDw8IDcpCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX1JTU19IQVNIX1RZUEVfRU5VTV8xMCAgKDB4YVVMIDw8IDcpCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX1JTU19IQVNIX1RZUEVfRU5VTV8xMSAgKDB4YlVMIDw8IDcpCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX1JTU19IQVNIX1RZUEVfRU5VTV8xMiAgKDB4Y1VMIDw8IDcpCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX1JTU19IQVNIX1RZUEVfRU5VTV8xMyAgKDB4ZFVMIDw8IDcpCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX1JTU19IQVNIX1RZUEVfRU5VTV8xNCAgKDB4ZVVMIDw8IDcpCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX1JTU19IQVNIX1RZUEVfTEFTVCAgICBSWF9QS1RfVjNfQ01QTF9SU1NfSEFTSF9UWVBFX0VOVU1fMTQKCXUxNgltZXRhZGF0YTFfcGF5bG9hZF9vZmZzZXQ7CgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX1BBWUxPQURfT0ZGU0VUX01BU0sgICAgICAgIDB4MWZmVUwKCSNkZWZpbmUgUlhfUEtUX1YzX0NNUExfUEFZTE9BRF9PRkZTRVRfU0ZUICAgICAgICAgMAoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9NRVRBREFUQTFfTUFTSyAgICAgICAgICAgICAweGYwMDBVTAoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9NRVRBREFUQTFfU0ZUICAgICAgICAgICAgICAxMgoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9NRVRBREFUQTFfVFBJRF9TRUxfTUFTSyAgICAgMHg3MDAwVUwKCSNkZWZpbmUgUlhfUEtUX1YzX0NNUExfTUVUQURBVEExX1RQSURfU0VMX1NGVCAgICAgIDEyCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX01FVEFEQVRBMV9UUElEX1NFTF9UUElEODhBOCAgICgweDBVTCA8PCAxMikKCSNkZWZpbmUgUlhfUEtUX1YzX0NNUExfTUVUQURBVEExX1RQSURfU0VMX1RQSUQ4MTAwICAgKDB4MVVMIDw8IDEyKQoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9NRVRBREFUQTFfVFBJRF9TRUxfVFBJRDkxMDAgICAoMHgyVUwgPDwgMTIpCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX01FVEFEQVRBMV9UUElEX1NFTF9UUElEOTIwMCAgICgweDNVTCA8PCAxMikKCSNkZWZpbmUgUlhfUEtUX1YzX0NNUExfTUVUQURBVEExX1RQSURfU0VMX1RQSUQ5MzAwICAgKDB4NFVMIDw8IDEyKQoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9NRVRBREFUQTFfVFBJRF9TRUxfVFBJRENGRyAgICAoMHg1VUwgPDwgMTIpCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX01FVEFEQVRBMV9UUElEX1NFTF9MQVNUICAgICAgUlhfUEtUX1YzX0NNUExfTUVUQURBVEExX1RQSURfU0VMX1RQSURDRkcKCSNkZWZpbmUgUlhfUEtUX1YzX0NNUExfTUVUQURBVEExX1ZBTElEICAgICAgICAgICAgIDB4ODAwMFVMCgl1MzIJcnNzX2hhc2g7Cn07CgpzdHJ1Y3QgcnhfcGt0X3YzX2NtcGxfaGkgewoJdTMyCWZsYWdzMjsKCSNkZWZpbmUgUlhfUEtUX1YzX0NNUExfSElfRkxBR1MyX0lQX0NTX0NBTEMgICAgICAgICAgICAgICAgIDB4MVVMCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX0hJX0ZMQUdTMl9MNF9DU19DQUxDICAgICAgICAgICAgICAgICAweDJVTAoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9ISV9GTEFHUzJfVF9JUF9DU19DQUxDICAgICAgICAgICAgICAgMHg0VUwKCSNkZWZpbmUgUlhfUEtUX1YzX0NNUExfSElfRkxBR1MyX1RfTDRfQ1NfQ0FMQyAgICAgICAgICAgICAgIDB4OFVMCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX0hJX0ZMQUdTMl9NRVRBX0ZPUk1BVF9NQVNLICAgICAgICAgICAweGYwVUwKCSNkZWZpbmUgUlhfUEtUX1YzX0NNUExfSElfRkxBR1MyX01FVEFfRk9STUFUX1NGVCAgICAgICAgICAgIDQKCSNkZWZpbmUgUlhfUEtUX1YzX0NNUExfSElfRkxBR1MyX01FVEFfRk9STUFUX05PTkUgICAgICAgICAgICAgKDB4MFVMIDw8IDQpCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX0hJX0ZMQUdTMl9NRVRBX0ZPUk1BVF9BQ1RfUkVDX1BUUiAgICAgICgweDFVTCA8PCA0KQoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9ISV9GTEFHUzJfTUVUQV9GT1JNQVRfVFVOTkVMX0lEICAgICAgICAoMHgyVUwgPDwgNCkKCSNkZWZpbmUgUlhfUEtUX1YzX0NNUExfSElfRkxBR1MyX01FVEFfRk9STUFUX0NIRFJfREFUQSAgICAgICAgKDB4M1VMIDw8IDQpCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX0hJX0ZMQUdTMl9NRVRBX0ZPUk1BVF9IRFJfT0ZGU0VUICAgICAgICgweDRVTCA8PCA0KQoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9ISV9GTEFHUzJfTUVUQV9GT1JNQVRfTEFTVCAgICAgICAgICAgIFJYX1BLVF9WM19DTVBMX0hJX0ZMQUdTMl9NRVRBX0ZPUk1BVF9IRFJfT0ZGU0VUCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX0hJX0ZMQUdTMl9JUF9UWVBFICAgICAgICAgICAgICAgICAgICAweDEwMFVMCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX0hJX0ZMQUdTMl9DT01QTEVURV9DSEVDS1NVTV9DQUxDICAgICAweDIwMFVMCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX0hJX0ZMQUdTMl9UX0lQX1RZUEUgICAgICAgICAgICAgICAgICAweDQwMFVMCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX0hJX0ZMQUdTMl9UX0lQX1RZUEVfSVBWNCAgICAgICAgICAgICAgICgweDBVTCA8PCAxMCkKCSNkZWZpbmUgUlhfUEtUX1YzX0NNUExfSElfRkxBR1MyX1RfSVBfVFlQRV9JUFY2ICAgICAgICAgICAgICAgKDB4MVVMIDw8IDEwKQoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9ISV9GTEFHUzJfVF9JUF9UWVBFX0xBU1QgICAgICAgICAgICAgIFJYX1BLVF9WM19DTVBMX0hJX0ZMQUdTMl9UX0lQX1RZUEVfSVBWNgoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9ISV9GTEFHUzJfQ09NUExFVEVfQ0hFQ0tTVU1fTUFTSyAgICAgMHhmZmZmMDAwMFVMCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX0hJX0ZMQUdTMl9DT01QTEVURV9DSEVDS1NVTV9TRlQgICAgICAxNgoJdTMyCW1ldGFkYXRhMjsKCXUxNgllcnJvcnNfdjI7CgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX0hJX1YyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxVUwKCSNkZWZpbmUgUlhfUEtUX1YzX0NNUExfSElfRVJST1JTX01BU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZmZmVVTAoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9ISV9FUlJPUlNfU0ZUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKCSNkZWZpbmUgUlhfUEtUX1YzX0NNUExfSElfRVJST1JTX0JVRkZFUl9FUlJPUl9NQVNLICAgICAgICAgICAgICAgICAgMHhlVUwKCSNkZWZpbmUgUlhfUEtUX1YzX0NNUExfSElfRVJST1JTX0JVRkZFUl9FUlJPUl9TRlQgICAgICAgICAgICAgICAgICAgMQoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9ISV9FUlJPUlNfQlVGRkVSX0VSUk9SX05PX0JVRkZFUiAgICAgICAgICAgICAgICgweDBVTCA8PCAxKQoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9ISV9FUlJPUlNfQlVGRkVSX0VSUk9SX0RJRF9OT1RfRklUICAgICAgICAgICAgICgweDFVTCA8PCAxKQoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9ISV9FUlJPUlNfQlVGRkVSX0VSUk9SX05PVF9PTl9DSElQICAgICAgICAgICAgICgweDJVTCA8PCAxKQoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9ISV9FUlJPUlNfQlVGRkVSX0VSUk9SX0JBRF9GT1JNQVQgICAgICAgICAgICAgICgweDNVTCA8PCAxKQoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9ISV9FUlJPUlNfQlVGRkVSX0VSUk9SX0ZMVVNIICAgICAgICAgICAgICAgICAgICgweDVVTCA8PCAxKQoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9ISV9FUlJPUlNfQlVGRkVSX0VSUk9SX0xBU1QgICAgICAgICAgICAgICAgICAgUlhfUEtUX1YzX0NNUExfSElfRVJST1JTX0JVRkZFUl9FUlJPUl9GTFVTSAoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9ISV9FUlJPUlNfSVBfQ1NfRVJST1IgICAgICAgICAgICAgICAgICAgICAgICAweDEwVUwKCSNkZWZpbmUgUlhfUEtUX1YzX0NNUExfSElfRVJST1JTX0w0X0NTX0VSUk9SICAgICAgICAgICAgICAgICAgICAgICAgMHgyMFVMCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX0hJX0VSUk9SU19UX0lQX0NTX0VSUk9SICAgICAgICAgICAgICAgICAgICAgIDB4NDBVTAoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9ISV9FUlJPUlNfVF9MNF9DU19FUlJPUiAgICAgICAgICAgICAgICAgICAgICAweDgwVUwKCSNkZWZpbmUgUlhfUEtUX1YzX0NNUExfSElfRVJST1JTX0NSQ19FUlJPUiAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMDBVTAoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9ISV9FUlJPUlNfVF9QS1RfRVJST1JfTUFTSyAgICAgICAgICAgICAgICAgICAweGUwMFVMCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX0hJX0VSUk9SU19UX1BLVF9FUlJPUl9TRlQgICAgICAgICAgICAgICAgICAgIDkKCSNkZWZpbmUgUlhfUEtUX1YzX0NNUExfSElfRVJST1JTX1RfUEtUX0VSUk9SX05PX0VSUk9SICAgICAgICAgICAgICAgICAoMHgwVUwgPDwgOSkKCSNkZWZpbmUgUlhfUEtUX1YzX0NNUExfSElfRVJST1JTX1RfUEtUX0VSUk9SX1RfTDNfQkFEX1ZFUlNJT04gICAgICAgICAoMHgxVUwgPDwgOSkKCSNkZWZpbmUgUlhfUEtUX1YzX0NNUExfSElfRVJST1JTX1RfUEtUX0VSUk9SX1RfTDNfQkFEX0hEUl9MRU4gICAgICAgICAoMHgyVUwgPDwgOSkKCSNkZWZpbmUgUlhfUEtUX1YzX0NNUExfSElfRVJST1JTX1RfUEtUX0VSUk9SX1RfSVBfVE9UQUxfRVJST1IgICAgICAgICAoMHgzVUwgPDwgOSkKCSNkZWZpbmUgUlhfUEtUX1YzX0NNUExfSElfRVJST1JTX1RfUEtUX0VSUk9SX1RfVURQX1RPVEFMX0VSUk9SICAgICAgICAoMHg0VUwgPDwgOSkKCSNkZWZpbmUgUlhfUEtUX1YzX0NNUExfSElfRVJST1JTX1RfUEtUX0VSUk9SX1RfTDNfQkFEX1RUTCAgICAgICAgICAgICAoMHg1VUwgPDwgOSkKCSNkZWZpbmUgUlhfUEtUX1YzX0NNUExfSElfRVJST1JTX1RfUEtUX0VSUk9SX1RfVE9UQUxfRVJST1IgICAgICAgICAgICAoMHg2VUwgPDwgOSkKCSNkZWZpbmUgUlhfUEtUX1YzX0NNUExfSElfRVJST1JTX1RfUEtUX0VSUk9SX0xBU1QgICAgICAgICAgICAgICAgICAgIFJYX1BLVF9WM19DTVBMX0hJX0VSUk9SU19UX1BLVF9FUlJPUl9UX1RPVEFMX0VSUk9SCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX0hJX0VSUk9SU19QS1RfRVJST1JfTUFTSyAgICAgICAgICAgICAgICAgICAgIDB4ZjAwMFVMCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX0hJX0VSUk9SU19QS1RfRVJST1JfU0ZUICAgICAgICAgICAgICAgICAgICAgIDEyCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX0hJX0VSUk9SU19QS1RfRVJST1JfTk9fRVJST1IgICAgICAgICAgICAgICAgICAgKDB4MFVMIDw8IDEyKQoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9ISV9FUlJPUlNfUEtUX0VSUk9SX0wzX0JBRF9WRVJTSU9OICAgICAgICAgICAgICgweDFVTCA8PCAxMikKCSNkZWZpbmUgUlhfUEtUX1YzX0NNUExfSElfRVJST1JTX1BLVF9FUlJPUl9MM19CQURfSERSX0xFTiAgICAgICAgICAgICAoMHgyVUwgPDwgMTIpCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX0hJX0VSUk9SU19QS1RfRVJST1JfTDNfQkFEX1RUTCAgICAgICAgICAgICAgICAgKDB4M1VMIDw8IDEyKQoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9ISV9FUlJPUlNfUEtUX0VSUk9SX0lQX1RPVEFMX0VSUk9SICAgICAgICAgICAgICgweDRVTCA8PCAxMikKCSNkZWZpbmUgUlhfUEtUX1YzX0NNUExfSElfRVJST1JTX1BLVF9FUlJPUl9VRFBfVE9UQUxfRVJST1IgICAgICAgICAgICAoMHg1VUwgPDwgMTIpCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX0hJX0VSUk9SU19QS1RfRVJST1JfTDRfQkFEX0hEUl9MRU4gICAgICAgICAgICAgKDB4NlVMIDw8IDEyKQoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9ISV9FUlJPUlNfUEtUX0VSUk9SX0w0X0JBRF9IRFJfTEVOX1RPT19TTUFMTCAgICgweDdVTCA8PCAxMikKCSNkZWZpbmUgUlhfUEtUX1YzX0NNUExfSElfRVJST1JTX1BLVF9FUlJPUl9MNF9CQURfT1BUX0xFTiAgICAgICAgICAgICAoMHg4VUwgPDwgMTIpCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX0hJX0VSUk9SU19QS1RfRVJST1JfTEFTVCAgICAgICAgICAgICAgICAgICAgICBSWF9QS1RfVjNfQ01QTF9ISV9FUlJPUlNfUEtUX0VSUk9SX0w0X0JBRF9PUFRfTEVOCgl1MTYJbWV0YWRhdGEwOwoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9ISV9NRVRBREFUQTBfVklEX01BU0sgMHhmZmZVTAoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9ISV9NRVRBREFUQTBfVklEX1NGVCAwCgkjZGVmaW5lIFJYX1BLVF9WM19DTVBMX0hJX01FVEFEQVRBMF9ERSAgICAgIDB4MTAwMFVMCgkvKiBXaGVuIG1ldGFfZm9ybWF0PTEsIHRoaXMgdmFsdWUgaXMgdGhlIFZMQU4gUFJJLiAqLwoJI2RlZmluZSBSWF9QS1RfVjNfQ01QTF9ISV9NRVRBREFUQTBfUFJJX01BU0sgMHhlMDAwVUwKCSNkZWZpbmUgUlhfUEtUX1YzX0NNUExfSElfTUVUQURBVEEwX1BSSV9TRlQgMTMKCXUzMgl0aW1lc3RhbXA7Cn07CgpzdHJ1Y3QgcnhfcHJvZF9wa3RfYmQgewoJdTE2ICBmbGFnc190eXBlOwojZGVmaW5lIFJYX1BST0RfUEtUX0JEX1RZUEVfTUFTSyAgICAgICAgICAweDNmVUwKI2RlZmluZSBSWF9QUk9EX1BLVF9CRF9UWVBFX1NGVCAgICAgICAgICAgMAojZGVmaW5lIFJYX1BST0RfUEtUX0JEX1RZUEVfUlhfUFJPRF9QS1QgICAweDRVTAojZGVmaW5lIFJYX1BST0RfUEtUX0JEX1RZUEVfTEFTVCAgICAgICAgICBSWF9QUk9EX1BLVF9CRF9UWVBFX1JYX1BST0RfUEtUCiNkZWZpbmUgUlhfUFJPRF9QS1RfQkRfRkxBR1NfTUFTSyAgICAgICAgIDB4ZmZjMFVMCiNkZWZpbmUgUlhfUFJPRF9QS1RfQkRfRkxBR1NfU0ZUICAgICAgICAgIDYKI2RlZmluZSBSWF9QUk9EX1BLVF9CRF9GTEFHU19TT1BfUEFEICAgICAgMHg0MFVMCiNkZWZpbmUgUlhfUFJPRF9QS1RfQkRfRkxBR1NfRU9QX1BBRCAgICAgIDB4ODBVTAojZGVmaW5lIFJYX1BST0RfUEtUX0JEX0ZMQUdTX0JVRkZFUlNfTUFTSyAweDMwMFVMCiNkZWZpbmUgUlhfUFJPRF9QS1RfQkRfRkxBR1NfQlVGRkVSU19TRlQgIDgKCXUxNiAgbGVuOwoJdTMyICBvcGFxdWU7Cgl1bmlvbiBkbWFfYWRkcjY0X3QgZG1hOwp9OwoKc3RydWN0IHJ4X2luZm8gewoJdm9pZCAgICAgICAgICAgICAgKmJkX3ZpcnQ7CglzdHJ1Y3QgaW9fYnVmZmVyICAqaW9iW05VTV9SWF9CVUZGRVJTXTsKCXUxNiAgICAgICAgICAgICAgIGlvYl9jbnQ7Cgl1MTYgICAgICAgICAgICAgICBidWZfY250OyAgLyogVG90YWwgUnggYnVmZmVyIGRlc2NyaXB0b3JzLiAqLwoJdTE2ICAgICAgICAgICAgICAgcmluZ19jbnQ7Cgl1MTYgICAgICAgICAgICAgICBjb25zX2lkOyAgLyogTGFzdCBwcm9jZXNzZWQgY29uc3VtZXIgaW5kZXguICovCi8qIFJlY2VpdmUgc3RhdGlzdGljcy4gKi8KCXUzMiAgICAgICAgICAgICAgIGNudDsKCXUzMiAgICAgICAgICAgICAgIGdvb2Q7Cgl1MzIgICAgICAgICAgICAgICBkcm9wX2VycjsKCXUzMiAgICAgICAgICAgICAgIGRyb3BfbGI7Cgl1MzIgICAgICAgICAgICAgICBkcm9wX3ZsYW47Cgl1OCAgICAgICAgICAgICAgICBlcG9jaDsKCXU4ICAgICAgICAgICAgICAgIHJlc1szXTsKfTsKCiNkZWZpbmUgVkFMSURfRFJJVkVSX1JFRyAgICAgICAgICAweDAwMDEKI2RlZmluZSBWQUxJRF9TVEFUX0NUWCAgICAgICAgICAgIDB4MDAwMgojZGVmaW5lIFZBTElEX1JJTkdfQ1EgICAgICAgICAgICAgMHgwMDA0CiNkZWZpbmUgVkFMSURfUklOR19UWCAgICAgICAgICAgICAweDAwMDgKI2RlZmluZSBWQUxJRF9SSU5HX1JYICAgICAgICAgICAgIDB4MDAxMAojZGVmaW5lIFZBTElEX1JJTkdfR1JQICAgICAgICAgICAgMHgwMDIwCiNkZWZpbmUgVkFMSURfVk5JQ19JRCAgICAgICAgICAgICAweDAwNDAKI2RlZmluZSBWQUxJRF9SWF9JT0IgICAgICAgICAgICAgIDB4MDA4MAojZGVmaW5lIFZBTElEX0wyX0ZJTFRFUiAgICAgICAgICAgMHgwMTAwCiNkZWZpbmUgVkFMSURfUklOR19OUSAgICAgICAgICAgICAweDAyMDAKCnN0cnVjdCBibnh0IHsKLyogYmVnaW4gImdlbmVyYWwsIGZyZXF1ZW50bHktdXNlZCBtZW1iZXJzIiBjYWNoZWxpbmUgc2VjdGlvbiAqLwovKiBJZiB0aGUgSVJRIGhhbmRsZXIgKHdoaWNoIHJ1bnMgbG9ja2xlc3MpIG5lZWRzIHRvIGJlCiAqIHF1aWVzY2VkLCB0aGUgZm9sbG93aW5nIGJpdG1hc2sgc3RhdGUgaXMgdXNlZC4gVGhlCiAqIFNZTkMgZmxhZyBpcyBzZXQgYnkgbm9uLUlSUSBjb250ZXh0IGNvZGUgdG8gaW5pdGlhdGUKICogdGhlIHF1aWVzY2VuY2UuCiAqCiAqIFdoZW4gdGhlIElSUSBoYW5kbGVyIG5vdGljZXMgdGhhdCBTWU5DIGlzIHNldCwgaXQKICogZGlzYWJsZXMgaW50ZXJydXB0cyBhbmQgcmV0dXJucy4KICoKICogV2hlbiBhbGwgb3V0c3RhbmRpbmcgSVJRIGhhbmRsZXJzIGhhdmUgcmV0dXJuZWQgYWZ0ZXIKICogdGhlIFNZTkMgZmxhZyBoYXMgYmVlbiBzZXQsIHRoZSBzZXR0ZXIgY2FuIGJlIGFzc3VyZWQKICogdGhhdCBpbnRlcnJ1cHRzIHdpbGwgbm8gbG9uZ2VyIGdldCBydW4uCiAqCiAqIEluIHRoaXMgd2F5IGFsbCBTTVAgZHJpdmVyIGxvY2tzIGFyZSBuZXZlciBhY3F1aXJlZAogKiBpbiBodyBJUlEgY29udGV4dCwgb25seSBzdyBJUlEgY29udGV4dCBvciBsb3dlci4KICovCgl1bnNpZ25lZCBpbnQgICAgICAgICAgICAgIGlycV9zeW5jOwoJc3RydWN0IG5ldF9kZXZpY2UgICAgICAgICAqZGV2OwoJc3RydWN0IHBjaV9kZXZpY2UgICAgICAgICAqcGRldjsKCXZvaWQgICAgICAgICAgICAgICAgICAgICAgKmh3cm1fYWRkcl9yZXE7Cgl2b2lkICAgICAgICAgICAgICAgICAgICAgICpod3JtX2FkZHJfcmVzcDsKCXZvaWQgICAgICAgICAgICAgICAgICAgICAgKmh3cm1fYWRkcl9kbWE7CglkbWFfYWRkcl90ICAgICAgICAgICAgICAgIHJlcV9hZGRyX21hcHBpbmc7CglkbWFfYWRkcl90ICAgICAgICAgICAgICAgIHJlc3BfYWRkcl9tYXBwaW5nOwoJZG1hX2FkZHJfdCAgICAgICAgICAgICAgICBkbWFfYWRkcl9tYXBwaW5nOwoJc3RydWN0IHR4X2luZm8gICAgICAgICAgICB0eDsgLyogVHggaW5mby4gKi8KCXN0cnVjdCByeF9pbmZvICAgICAgICAgICAgcng7IC8qIFJ4IGluZm8uICovCglzdHJ1Y3QgY21wX2luZm8gICAgICAgICAgIGNxOyAvKiBjb21wbGV0aW9uIGluZm8uICovCglzdHJ1Y3QgbnFfaW5mbyAgICAgICAgICAgIG5xOyAvKiBjb21wbGV0aW9uIGluZm8uICovCgl1MTYgICAgICAgICAgICAgICAgICAgICAgIG5xX3JpbmdfaWQ7Cgl1OCAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXVlX2lkOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBsYXN0X3Jlc3BfY29kZTsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgc2VxX2lkOwoJdTMyICAgICAgICAgICAgICAgICAgICAgICBmbGFnX2h3cm07Cgl1MzIgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzOwovKiBQQ0kgaW5mby4gKi8KCXUxNiAgICAgICAgICAgICAgICAgICAgICAgc3Vic3lzdGVtX3ZlbmRvcjsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgc3Vic3lzdGVtX2RldmljZTsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgY21kX3JlZzsKCXU4ICAgICAgICAgICAgICAgICAgICAgICAgcGZfbnVtOyAgLyogYWJzb2x1dGUgUEYgbnVtYmVyICovCgl1OCAgICAgICAgICAgICAgICAgICAgICAgIHZmOwoJdm9pZCAgICAgICAgICAgICAgICAgICAgICAqYmFyMDsKCXZvaWQgICAgICAgICAgICAgICAgICAgICAgKmJhcjE7Cgl2b2lkICAgICAgICAgICAgICAgICAgICAgICpiYXIyOwovKiBEZXZpY2UgaW5mby4gKi8KCXUxNiAgICAgICAgICAgICAgICAgICAgICAgY2hpcF9udW07Ci8qIGNoaXAgbnVtOjE2LTMxLCByZXY6MTItMTUsIG1ldGFsOjQtMTEsIGJvbmRfaWQ6MC0zICovCgl1MzIgICAgICAgICAgICAgICAgICAgICAgIGNoaXBfaWQ7Cgl1MzIgICAgICAgICAgICAgICAgICAgICAgIGh3cm1fY21kX3RpbWVvdXQ7Cgl1MTYgICAgICAgICAgICAgICAgICAgICAgIGh3cm1fc3BlY19jb2RlOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBod3JtX21heF9yZXFfbGVuOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBod3JtX21heF9leHRfcmVxX2xlbjsKCXU4ICAgICAgICAgICAgICAgICAgICAgICAgbWFjX2FkZHJbRVRIX0FMRU5dOyAvKiBIVyBNQUMgYWRkcmVzcyAqLwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBmaWQ7Cgl1OCAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRfaWR4OwoJdTggICAgICAgICAgICAgICAgICAgICAgICBvcmRpbmFsX3ZhbHVlOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBtdHU7Cgl1MTYgICAgICAgICAgICAgICAgICAgICAgIHJpbmdfZ3JwX2lkOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBjcV9yaW5nX2lkOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICB0eF9yaW5nX2lkOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICByeF9yaW5nX2lkOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2xpbmtfc3BlZWQ7Cgl1MTYgICAgICAgICAgICAgICAgICAgICAgIGxpbmtfc3RhdHVzOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICB3YWl0X2xpbmtfdGltZW91dDsKCXU2NCAgICAgICAgICAgICAgICAgICAgICAgbDJfZmlsdGVyX2lkOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICB2bmljX2lkOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBzdGF0X2N0eF9pZDsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgdmxhbl9pZDsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgdmxhbl90eDsKCXUzMiAgICAgICAgICAgICAgICAgICAgICAgbWJhX2NmZzI7Cgl1MzIgICAgICAgICAgICAgICAgICAgICAgIG1lZGl1bTsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydF9zcGVlZHM7Cgl1MTYgICAgICAgICAgICAgICAgICAgICAgIGF1dG9fbGlua19zcGVlZHMyX21hc2s7Cgl1MzIgICAgICAgICAgICAgICAgICAgICAgIGxpbmtfc2V0OwoJdTggICAgICAgICAgICAgICAgICAgICAgICBtZWRpYV9kZXRlY3Q7Cgl1OCAgICAgICAgICAgICAgICAgICAgICAgIHJzdmQ7Cgl1MTYgICAgICAgICAgICAgICAgICAgICAgIG1heF92ZnM7Cgl1MTYgICAgICAgICAgICAgICAgICAgICAgIHZmX3Jlc19zdHJhdGVneTsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgbWluX3ZuaWNzOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBtYXhfdm5pY3M7Cgl1MTYgICAgICAgICAgICAgICAgICAgICAgIG1heF9tc2l4OwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBtaW5faHdfcmluZ19ncnBzOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBtYXhfaHdfcmluZ19ncnBzOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBtaW5fdHhfcmluZ3M7Cgl1MTYgICAgICAgICAgICAgICAgICAgICAgIG1heF90eF9yaW5nczsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgbWluX3J4X3JpbmdzOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBtYXhfcnhfcmluZ3M7Cgl1MTYgICAgICAgICAgICAgICAgICAgICAgIG1pbl9jcF9yaW5nczsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgbWF4X2NwX3JpbmdzOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBtaW5fcnNzY29zX2N0eHM7Cgl1MTYgICAgICAgICAgICAgICAgICAgICAgIG1heF9yc3Njb3NfY3R4czsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgbWluX2wyX2N0eHM7Cgl1MTYgICAgICAgICAgICAgICAgICAgICAgIG1heF9sMl9jdHhzOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBtaW5fc3RhdF9jdHhzOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBtYXhfc3RhdF9jdHhzOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBudW1fY21wbF9yaW5nczsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgbnVtX3R4X3JpbmdzOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBudW1fcnhfcmluZ3M7Cgl1MTYgICAgICAgICAgICAgICAgICAgICAgIG51bV9zdGF0X2N0eHM7Cgl1MTYgICAgICAgICAgICAgICAgICAgICAgIG51bV9od19yaW5nX2dycHM7Cn07CgovKiBkZWZpbmVzIHJlcXVpcmVkIHRvIHJzb2x2ZSBjaGVja3BhdGNoIGVycm9ycyAvIHdhcm5pbmdzICovCiNkZWZpbmUgdGVzdF9pZiAgICAgICAgICAgICAgIGlmCiNkZWZpbmUgd3JpdGUzMiAgICAgICAgICAgICAgIHdyaXRlbAojZGVmaW5lIHdyaXRlNjQgICAgICAgICAgICAgICB3cml0ZXEKI2RlZmluZSBwY2lfcmVhZF9ieXRlICAgICAgICAgcGNpX3JlYWRfY29uZmlnX2J5dGUKI2RlZmluZSBwY2lfcmVhZF93b3JkMTYgICAgICAgcGNpX3JlYWRfY29uZmlnX3dvcmQKI2RlZmluZSBwY2lfd3JpdGVfd29yZCAgICAgICAgcGNpX3dyaXRlX2NvbmZpZ193b3JkCiNkZWZpbmUgU0hPUlRfQ01EX1NVUFBPUlRFRCAgIFZFUl9HRVRfUkVTUF9ERVZfQ0FQU19DRkdfU0hPUlRfQ01EX1NVUFBPUlRFRAojZGVmaW5lIFNIT1JUX0NNRF9SRVFVSVJFRCAgICBWRVJfR0VUX1JFU1BfREVWX0NBUFNfQ0ZHX1NIT1JUX0NNRF9SRVFVSVJFRAojZGVmaW5lIENRX0RPT1JCRUxMX0tFWV9NQVNLKGEpIChcCglDTVBMX0RPT1JCRUxMX0tFWV9DTVBMIHwgXAoJQ01QTF9ET09SQkVMTF9JRFhfVkFMSUQgfCBcCglDTVBMX0RPT1JCRUxMX01BU0sgfCBcCgkodTMyKShhKSkKI2RlZmluZSBDUV9ET09SQkVMTF9LRVlfSURYKGEpIChcCglDTVBMX0RPT1JCRUxMX0tFWV9DTVBMIHwgXAoJQ01QTF9ET09SQkVMTF9JRFhfVkFMSUQgfCBcCgkodTMyKShhKSkKI2RlZmluZSBUWF9CRF9GTEFHUyAoXAoJVFhfQkRfU0hPUlRfVFlQRV9UWF9CRF9TSE9SVCB8XAoJVFhfQkRfU0hPUlRfRkxBR1NfQ09BTF9OT1cgICB8XAoJVFhfQkRfU0hPUlRfRkxBR1NfUEFDS0VUX0VORCB8XAoJKDEgPDwgVFhfQkRfU0hPUlRfRkxBR1NfQkRfQ05UX1NGVCkpCiNkZWZpbmUgUE9SVF9QSFlfRkxBR1MgKFwKCUJOWFRfRkxBR19OUEFSX01PREUgfCBcCglCTlhUX0ZMQUdfTVVMVElfSE9TVCkKI2RlZmluZSBSSU5HX0ZSRUUoYnAsIHJpZCwgZmxhZykgYm54dF9od3JtX3JpbmdfZnJlZShicCwgcmlkLCBmbGFnKQojZGVmaW5lIFNFVF9MSU5LKHAsIG0sIHMpICgocCAmIChtID4+IHMpKSA8PCBzKQojZGVmaW5lIFNFVF9NQkEocCwgbSwgcykgICgocCAmIChtID4+IHMpKSA8PCBzKQojZGVmaW5lIFNQRUVEX0RSVl9NQVNLICAgIExJTktfU1BFRURfRFJWX01BU0sKI2RlZmluZSBTUEVFRF9EUlZfU0hJRlQgICBMSU5LX1NQRUVEX0RSVl9TSElGVAojZGVmaW5lIFNQRUVEX0ZXX01BU0sgICAgIExJTktfU1BFRURfRldfTUFTSwojZGVmaW5lIFNQRUVEX0ZXX1NISUZUICAgIExJTktfU1BFRURfRldfU0hJRlQKI2RlZmluZSBEM19TUEVFRF9GV19NQVNLICBEM19MSU5LX1NQRUVEX0ZXX01BU0sKI2RlZmluZSBEM19TUEVFRF9GV19TSElGVCBEM19MSU5LX1NQRUVEX0ZXX1NISUZUCiNkZWZpbmUgTUVESUFfQVVUT19ERVRFQ1RfTUFTSyAgUE9SVF9DRkdfTElOS19TRVRUSU5HU19NRURJQV9BVVRPX0RFVEVDVF9NQVNLCiNkZWZpbmUgTUVESUFfQVVUT19ERVRFQ1RfU0hJRlQgUE9SVF9DRkdfTElOS19TRVRUSU5HU19NRURJQV9BVVRPX0RFVEVDVF9TSElGVAojZGVmaW5lIFZMQU5fTUFTSyAgICAgICAgRlVOQ19DRkdfUFJFX0JPT1RfTUJBX1ZMQU5fTUFTSwojZGVmaW5lIFZMQU5fU0hJRlQgICAgICAgRlVOQ19DRkdfUFJFX0JPT1RfTUJBX1ZMQU5fU0hJRlQKI2RlZmluZSBWTEFOX1ZBTFVFX01BU0sgIEZVTkNfQ0ZHX1BSRV9CT09UX01CQV9WTEFOX1ZBTFVFX01BU0sKI2RlZmluZSBWTEFOX1ZBTFVFX1NISUZUIEZVTkNfQ0ZHX1BSRV9CT09UX01CQV9WTEFOX1ZBTFVFX1NISUZUCiNkZWZpbmUgVkZfQ0ZHX0VOQUJMRV9GTEFHUyAoXAoJRlVOQ19WRl9DRkdfUkVRX0VOQUJMRVNfTVRVIHwgXAoJRlVOQ19WRl9DRkdfUkVRX0VOQUJMRVNfR1VFU1RfVkxBTiB8IFwKCUZVTkNfVkZfQ0ZHX1JFUV9FTkFCTEVTX0FTWU5DX0VWRU5UX0NSIHwgXAoJRlVOQ19WRl9DRkdfUkVRX0VOQUJMRVNfREZMVF9NQUNfQUREUikKCiNkZWZpbmUgQ0hJUF9OVU1fNTc1MDggICAgICAgMHgxNzUwCiNkZWZpbmUgQ0hJUF9OVU1fNTc1MDQgICAgICAgMHgxNzUxCiNkZWZpbmUgQ0hJUF9OVU1fNTc1MDIgICAgICAgMHgxNzUyCgojZGVmaW5lIENISVBfTlVNXzU3NjA4ICAgICAgIDB4MTc2MAo=