LyoKICogQ29weXJpZ2h0IKkgMjAxOCBCcm9hZGNvbS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gCiAqIFRoZSB0ZXJtIJNCcm9hZGNvbZQgcmVmZXJzIHRvIEJyb2FkY29tIEluYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJpZXMuCgogKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgogKiB0aGUgdGVybXMgb2YgdmVyc2lvbiAyIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCiAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KCiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLgogKiBBTEwgRVhQUkVTUyBPUiBJTVBMSUVEIENPTkRJVElPTlMsIFJFUFJFU0VOVEFUSU9OUyBBTkQgV0FSUkFOVElFUywgSU5DTFVESU5HIAogKiBBTlkgSU1QTElFRCBXQVJSQU5UWSBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLCBPUgogKiBOT04tSU5GUklOR0VNRU5ULCBBUkUgRElTQ0xBSU1FRCwgRVhDRVBUIFRPIFRIRSBFWFRFTlQgVEhBVCBTVUNIIERJU0NMQUlNRVJTCiAqIEFSRSBIRUxEIFRPIEJFIExFR0FMTFkgSU5WQUxJRC4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZQogKiBkZXRhaWxzLCBhIGNvcHkgb2Ygd2hpY2ggY2FuIGJlIGZvdW5kIGluIHRoZSBmaWxlIENPUFlJTkcgaW5jbHVkZWQgd2l0aCB0aGlzCiAqIHBhY2thZ2UuCiAqLwoKI3VuZGVmIEVSUkZJTEUKI2RlZmluZSBFUlJGSUxFIEVSUkZJTEVfdGczCgojZGVmaW5lIF9fbGUxNiAgdTE2CiNkZWZpbmUgX19sZTMyICB1MzIKI2RlZmluZSBfX2xlNjQgIHU2NAojZGVmaW5lIF9fYmUxNiAgdTE2CiNkZWZpbmUgX19iZTMyICB1MzIKI2RlZmluZSBfX2JlNjQgIHU2NAoKI2RlZmluZSBkbWFfYWRkcl90IHVuc2lnbmVkIGxvbmcKCnVuaW9uIGRtYV9hZGRyNjRfdCB7CglkbWFfYWRkcl90IGFkZHI7Cgl1NjQgYXNfdTY0Owp9OwoKI2luY2x1ZGUgImJueHRfaHNpLmgiCgojZGVmaW5lIERSVl9NT0RVTEVfTkFNRSAgICAgICAgICAgICAgImJueHQiCiNkZWZpbmUgSVBYRV9WRVJTSU9OX01BSk9SICAgICAgICAgICAxCiNkZWZpbmUgSVBYRV9WRVJTSU9OX01JTk9SICAgICAgICAgICAwCiNkZWZpbmUgSVBYRV9WRVJTSU9OX1VQREFURSAgICAgICAgICAwCgovKgogKiBCcm9hZGNvbSBldGhlcm5ldCBkcml2ZXIgZGVmaW5lcy4KICovCiNkZWZpbmUgRkxBR19TRVQoZiwgYikgICAgICAgICAgICAgICAgICAgICAgICAgICgoZikgfD0gKGIpKQojZGVmaW5lIEZMQUdfVEVTVChmLCBiKSAgICAgICAgICAgICAgICAgICAgICAgICAoKGYpICYgKGIpKQojZGVmaW5lIEZMQUdfUkVTRVQoZiwgYikgICAgICAgICAgICAgICAgICAgICAgICAoKGYpICY9IH4oYikpCiNkZWZpbmUgQk5YVF9GTEFHX0hXUk1fU0hPUlRfQ01EX1NVUFAgICAgICAgICAgIDB4MDAwMQojZGVmaW5lIEJOWFRfRkxBR19IV1JNX1NIT1JUX0NNRF9SRVEgICAgICAgICAgICAweDAwMDIKI2RlZmluZSBCTlhUX0ZMQUdfUkVTT1VSQ0VfUUNBUFNfU1VQUE9SVCAgICAgICAgMHgwMDA0CiNkZWZpbmUgQk5YVF9GTEFHX01VTFRJX0hPU1QgICAgICAgICAgICAgICAgICAgIDB4MDAwOAojZGVmaW5lIEJOWFRfRkxBR19OUEFSX01PREUgICAgICAgICAgICAgICAgICAgICAweDAwMTAKI2RlZmluZSBCTlhUX0ZMQUdfQVRPTUlDU19FTkFCTEUgICAgICAgICAgICAgICAgMHgwMDIwCiNkZWZpbmUgQk5YVF9GTEFHX1BDSV9WRiAgICAgICAgICAgICAgICAgICAgICAgIDB4MDA0MAovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBTdGF0dXMgY29kZXMuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNkZWZpbmUgU1RBVFVTX1NVQ0NFU1MgICAgICAgICAgICAgICAgICAgICAgICAgIDAKI2RlZmluZSBTVEFUVVNfRkFJTFVSRSAgICAgICAgICAgICAgICAgICAgICAgICAgMQojZGVmaW5lIFNUQVRVU19OT19SRVNPVVJDRSAgICAgICAgICAgICAgICAgICAgICAyCiNkZWZpbmUgU1RBVFVTX0lOVkFMSURfUEFSQU1FVEVSICAgICAgICAgICAgICAgIDMKI2RlZmluZSBTVEFUVVNfTElOS19BQ1RJVkUgICAgICAgICAgICAgICAgICAgICAgNAojZGVmaW5lIFNUQVRVU19MSU5LX0RPV04gICAgICAgICAgICAgICAgICAgICAgICA1CiNkZWZpbmUgU1RBVFVTX0xJTktfU0VUVElOR19NSVNNQVRDSCAgICAgICAgICAgIDYKI2RlZmluZSBTVEFUVVNfVE9PX01BTllfRlJBR01FTlRTICAgICAgICAgICAgICAgNwojZGVmaW5lIFNUQVRVU19UUkFOU01JVF9BQk9SVEVEICAgICAgICAgICAgICAgICA4CiNkZWZpbmUgU1RBVFVTX1RSQU5TTUlUX0VSUk9SICAgICAgICAgICAgICAgICAgIDkKI2RlZmluZSBTVEFUVVNfUkVDRUlWRV9BQk9SVEVEICAgICAgICAgICAgICAgICAgMTAKI2RlZmluZSBTVEFUVVNfUkVDRUlWRV9FUlJPUiAgICAgICAgICAgICAgICAgICAgMTEKI2RlZmluZSBTVEFUVVNfSU5WQUxJRF9QQUNLRVRfU0laRSAgICAgICAgICAgICAgMTIKI2RlZmluZSBTVEFUVVNfTk9fTUFQX1JFR0lTVEVSICAgICAgICAgICAgICAgICAgMTMKI2RlZmluZSBTVEFUVVNfVU5LTk9XTl9BREFQVEVSICAgICAgICAgICAgICAgICAgMTQKI2RlZmluZSBTVEFUVVNfTk9fQ09BTEVTQ0VfQlVGRkVSICAgICAgICAgICAgICAgMTUKI2RlZmluZSBTVEFUVVNfVU5LTk9XTl9QSFkgICAgICAgICAgICAgICAgICAgICAgMTYKI2RlZmluZSBTVEFUVVNfUEVORElORyAgICAgICAgICAgICAgICAgICAgICAgICAgMTcKI2RlZmluZSBTVEFUVVNfTk9fVFhfREVTQyAgICAgICAgICAgICAgICAgICAgICAgMTgKI2RlZmluZSBTVEFUVVNfTk9fVFhfQkQgICAgICAgICAgICAgICAgICAgICAgICAgMTkKI2RlZmluZSBTVEFUVVNfVU5LTk9XTl9NRURJVU0gICAgICAgICAgICAgICAgICAgMjAKI2RlZmluZSBTVEFUVVNfUkVTT1VSQ0UgICAgICAgICAgICAgICAgICAgICAgICAgMjEKI2RlZmluZSBTVEFUVVNfQUJPUlRfUkVBU09OX0RJU0NPTk5FQ1QgICAgICAgICAgMjIKI2RlZmluZSBTVEFUVVNfQUJPUlRfUkVBU09OX1VQTE9BRCAgICAgICAgICAgICAgMjMKI2RlZmluZSBTVEFUVVNfVElNRU9VVCAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmZmZmCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIFJlY2VpdmUgZmlsdGVyIG1hc2tzLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojZGVmaW5lIFJYX01BU0tfQUNDRVBUX05PTkUgICAgICAgICAgICAgICAgICAgICAweDAwMDAKI2RlZmluZSBSWF9NQVNLX0FDQ0VQVF9VTklDQVNUICAgICAgICAgICAgICAgICAgMHgwMDAxCiNkZWZpbmUgUlhfTUFTS19BQ0NFUFRfTVVMVElDQVNUICAgICAgICAgICAgICAgIDB4MDAwMgojZGVmaW5lIFJYX01BU0tfQUNDRVBUX0FMTF9NVUxUSUNBU1QgICAgICAgICAgICAweDAwMDQKI2RlZmluZSBSWF9NQVNLX0FDQ0VQVF9CUk9BRENBU1QgICAgICAgICAgICAgICAgMHgwMDA4CiNkZWZpbmUgUlhfTUFTS19BQ0NFUFRfRVJST1JfUEFDS0VUICAgICAgICAgICAgIDB4MDAxMAojZGVmaW5lIFJYX01BU0tfUFJPTUlTQ1VPVVNfTU9ERSAgICAgICAgICAgICAgICAweDEwMDAwCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIG1lZGlhIHNwZWVkLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojZGVmaW5lIE1FRElVTV9TUEVFRF9BVVRPTkVHICAgICAgICAgICAgICAgICAgICAweDAwMDBMCiNkZWZpbmUgTUVESVVNX1NQRUVEX1VOS05PV04gICAgICAgICAgICAgICAgICAgIDB4MDAwMEwKI2RlZmluZSBNRURJVU1fU1BFRURfMTBNQlBTICAgICAgICAgICAgICAgICAgICAgMHgwMTAwTAojZGVmaW5lIE1FRElVTV9TUEVFRF8xMDBNQlBTICAgICAgICAgICAgICAgICAgICAweDAyMDBMCiNkZWZpbmUgTUVESVVNX1NQRUVEXzEwMDBNQlBTICAgICAgICAgICAgICAgICAgIDB4MDMwMEwKI2RlZmluZSBNRURJVU1fU1BFRURfMjUwME1CUFMgICAgICAgICAgICAgICAgICAgMHgwNDAwTAojZGVmaW5lIE1FRElVTV9TUEVFRF8xMEdCUFMgICAgICAgICAgICAgICAgICAgICAweDA2MDBMCiNkZWZpbmUgTUVESVVNX1NQRUVEXzIwR0JQUyAgICAgICAgICAgICAgICAgICAgIDB4MDcwMEwKI2RlZmluZSBNRURJVU1fU1BFRURfMjVHQlBTICAgICAgICAgICAgICAgICAgICAgMHgwODAwTAojZGVmaW5lIE1FRElVTV9TUEVFRF80MEdCUFMgICAgICAgICAgICAgICAgICAgICAweDA5MDBMCiNkZWZpbmUgTUVESVVNX1NQRUVEXzUwR0JQUyAgICAgICAgICAgICAgICAgICAgIDB4MGEwMEwKI2RlZmluZSBNRURJVU1fU1BFRURfMTAwR0JQUyAgICAgICAgICAgICAgICAgICAgMHgwYjAwTAojZGVmaW5lIE1FRElVTV9TUEVFRF8yMDBHQlBTICAgICAgICAgICAgICAgICAgICAweDBjMDBMCiNkZWZpbmUgTUVESVVNX1NQRUVEX0FVVE9ORUdfMUdfRkFMTEJBQ0sgICAgICAgIDB4ODAwMEwgLyogU2VyZGVzICovCiNkZWZpbmUgTUVESVVNX1NQRUVEX0FVVE9ORUdfMl81R19GQUxMQkFDSyAgICAgIDB4ODEwMEwgLyogU2VyZGVzICovCiNkZWZpbmUgTUVESVVNX1NQRUVEX0hBUkRXQVJFX0RFRkFVTFQgICAgICAgICAgIDB4ZmYwMEwgLyogU2VyZGVzIG52cmFtIGRlZi4qLwojZGVmaW5lIE1FRElVTV9TUEVFRF9NQVNLICAgICAgICAgICAgICAgICAgICAgICAweGZmMDBMCiNkZWZpbmUgR0VUX01FRElVTV9TUEVFRChtKSAgICAgICAgICAgICAgICAgICAgICgobSkgJiBNRURJVU1fU1BFRURfTUFTSykKI2RlZmluZSBTRVRfTUVESVVNX1NQRUVEKGJwLCBzKSAoKGJwLT5tZWRpdW0gJiB+TUVESVVNX1NQRUVEX01BU0spIHwgcykKI2RlZmluZSBNRURJVU1fVU5LTk9XTl9EVVBMRVggICAgICAgICAgICAgICAgICAgMHgwMDAwMEwKI2RlZmluZSBNRURJVU1fRlVMTF9EVVBMRVggICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEwKI2RlZmluZSBNRURJVU1fSEFMRl9EVVBMRVggICAgICAgICAgICAgICAgICAgICAgMHgxMDAwMEwKI2RlZmluZSBHRVRfTUVESVVNX0RVUExFWChtKSAgICAgICAgICAgICAgICAgICAgKChtKSAmIE1FRElVTV9IQUxGX0RVUExFWCkKI2RlZmluZSBTRVRfTUVESVVNX0RVUExFWChicCwgZCkgKChicC0+bWVkaXVtICYgfk1FRElVTV9IQUxGX0RVUExFWCkgfCBkKQojZGVmaW5lIE1FRElVTV9TRUxFQ1RJVkVfQVVUT05FRyAgICAgICAgICAgICAgICAweDAxMDAwMDAwTAojZGVmaW5lIEdFVF9NRURJVU1fQVVUT05FR19NT0RFKG0pICAgICAgICAgICAgICAoKG0pICYgMHhmZjAwMDAwMEwpCiNkZWZpbmUgUENJQ0ZHX01FX1JFR0lTVEVSICAgICAgICAgICAgICAgICAgICAgIDB4OTgKI2RlZmluZSBHUkNfQ09NX0NIQU5fQkFTRSAgICAgICAgICAgICAgICAgICAgICAgMAojZGVmaW5lIEdSQ19DT01fQ0hBTl9UUklHICAgICAgICAgICAgICAgICAgICAgICAweDEwMAojZGVmaW5lIEdSQ19JTkRfQkFSXzBfQUREUiAgICAgICAgICAgICAgICAgICAgICAweDc4CiNkZWZpbmUgR1JDX0lORF9CQVJfMV9BRERSICAgICAgICAgICAgICAgICAgICAgIDB4N0MKI2RlZmluZSBHUkNfSU5EX0JBUl8wX0RBVEEgICAgICAgICAgICAgICAgICAgICAgMHg4MAojZGVmaW5lIEdSQ19JTkRfQkFSXzFfREFUQSAgICAgICAgICAgICAgICAgICAgICAweDg0CiNkZWZpbmUgR1JDX0JBU0VfV0lOXzAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAwCiNkZWZpbmUgR1JDX0RBVEFfV0lOXzAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAwMAojZGVmaW5lIEhXUk1fQ01EX0RFRkFVTFRfVElNRU9VVCAgICAgICAgICAgICAgICA1MDAgLyogaW4gTWlsaXNlY29uZHMgICovCiNkZWZpbmUgSFdSTV9DTURfUE9MTF9XQUlUX1RJTUUgICAgICAgICAgICAgICAgIDEwMCAvKiBJbiBNaWNyb2VTY29uZHMgKi8KI2RlZmluZSBIV1JNX0NNRF9ERUZBVUxUX01VTFRJUExBWUVSKGEpICAgICAgICAgKChhKSAqIDEwKQojZGVmaW5lIEhXUk1fQ01EX0ZMQVNIX01VTFRJUExBWUVSKGEpICAgICAgICAgICAoKGEpICogMTAwKQojZGVmaW5lIEhXUk1fQ01EX0ZMQVNIX0VSQVNFX01VTFRJUExBWUVSKGEpICAgICAoKGEpICogMTAwMCkKI2RlZmluZSBIV1JNX0NNRF9XQUlUKGIpICgoYnAtPmh3cm1fY21kX3RpbWVvdXQpICogKGIpKQojZGVmaW5lIE1BWF9FVEhFUk5FVF9QQUNLRVRfQlVGRkVSX1NJWkUgICAgICAgICAxNTM2CiNkZWZpbmUgREVGQVVMVF9OVU1CRVJfT0ZfQ01QTF9SSU5HUyAgICAgICAgICAgIDB4MDEKI2RlZmluZSBERUZBVUxUX05VTUJFUl9PRl9UWF9SSU5HUyAgICAgICAgICAgICAgMHgwMQojZGVmaW5lIERFRkFVTFRfTlVNQkVSX09GX1JYX1JJTkdTICAgICAgICAgICAgICAweDAxCiNkZWZpbmUgREVGQVVMVF9OVU1CRVJfT0ZfUklOR19HUlBTICAgICAgICAgICAgIDB4MDEKI2RlZmluZSBERUZBVUxUX05VTUJFUl9PRl9TVEFUX0NUWFMgICAgICAgICAgICAgMHgwMQojZGVmaW5lIE5VTV9SWF9CVUZGRVJTICAgICAgICAgICAgICAgICAgICAgICAgICA4CiNkZWZpbmUgTUFYX1JYX0RFU0NfQ05UICAgICAgICAgICAgICAgICAgICAgICAgIDE2CiNkZWZpbmUgTUFYX1RYX0RFU0NfQ05UICAgICAgICAgICAgICAgICAgICAgICAgIDE2CiNkZWZpbmUgTUFYX0NRX0RFU0NfQ05UICAgICAgICAgICAgICAgICAgICAgICAgIDY0CiNkZWZpbmUgVFhfUklOR19CVUZGRVJfU0laRSAoTUFYX1RYX0RFU0NfQ05UICogc2l6ZW9mKHN0cnVjdCB0eF9iZF9zaG9ydCkpCiNkZWZpbmUgUlhfUklOR19CVUZGRVJfU0laRSBcCgkoTUFYX1JYX0RFU0NfQ05UICogc2l6ZW9mKHN0cnVjdCByeF9wcm9kX3BrdF9iZCkpCiNkZWZpbmUgQ1FfUklOR19CVUZGRVJfU0laRSAoTUFYX0NRX0RFU0NfQ05UICogc2l6ZW9mKHN0cnVjdCBjbXBsX2Jhc2UpKQojZGVmaW5lIEJOWFRfRE1BX0FMSUdOTUVOVCAgICAgICAgICAgICAgICAgICAgICAyNTYgLy82NAojZGVmaW5lIERNQV9BTElHTl80SyAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MDk2IC8vdGhvciB0eCAmIHJ4CiNkZWZpbmUgUkVRX0JVRkZFUl9TSVpFICAgICAgICAgICAgICAgICAgICAgICAgIDEwMjQKI2RlZmluZSBSRVNQX0JVRkZFUl9TSVpFICAgICAgICAgICAgICAgICAgICAgICAgMTAyNAojZGVmaW5lIERNQV9CVUZGRVJfU0laRSAgICAgICAgICAgICAgICAgICAgICAgICAxMDI0CiNkZWZpbmUgTE1fUEFHRV9CSVRTKGEpICAgICAgICAgICAgICAgICAgICAgICAgIChhKQojZGVmaW5lIEJOWFRfUlhfU1REX0RNQV9TWiAgICAgICAgICAgICAgICAgICAgICAoMTUzNiArIDY0ICsgMikKI2RlZmluZSBORVhUX0lEWChOLCBTKSAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoTikgKyAxKSAmICgoUykgLSAxKSkKI2RlZmluZSBCRF9OT1coYmQsIGVudHJ5LCBsZW4pICgmKCh1OCAqKShiZCkpWyhlbnRyeSkgKiAobGVuKV0pCiNkZWZpbmUgQk5YVF9DUV9JTlRSX01PREUodmYpIChcCgkoKHZmKSA/IFJJTkdfQUxMT0NfUkVRX0lOVF9NT0RFX01TSVggOiBSSU5HX0FMTE9DX1JFUV9JTlRfTU9ERV9QT0xMKSkKLyogU2V0IGRlZmF1bHQgbGluayB0aW1lb3V0IHBlcmlvZCB0byAxIHNlY29uZCAqLwojZGVmaW5lIExJTktfREVGQVVMVF9USU1FT1VUICAgICAgICAgICAgICAgICAgICAxMDAwCiNkZWZpbmUgTElOS19QT0xMX1dBSVRfVElNRSAgICAgICAgICAgICAgICAgICAgIDEwMCAgICAvKiBJbiBNaWxpc2Vjb25kcyAqLwojZGVmaW5lIFJYX01BU0sgKFwKCVJYX01BU0tfQUNDRVBUX0JST0FEQ0FTVCB8IFwKCVJYX01BU0tfQUNDRVBUX0FMTF9NVUxUSUNBU1QgfCBcCglSWF9NQVNLX0FDQ0VQVF9NVUxUSUNBU1QpCiNkZWZpbmUgTUFYX05RX0RFU0NfQ05UICAgICAgICAgICAgICAgICAgICAgICAgIDY0CiNkZWZpbmUgTlFfUklOR19CVUZGRVJfU0laRSAoTUFYX05RX0RFU0NfQ05UICogc2l6ZW9mKHN0cnVjdCBjbXBsX2Jhc2UpKQojZGVmaW5lIFRYX1JJTkdfUUlEIChicC0+dGhvciA/ICh1MTYpYnAtPnF1ZXVlX2lkIDogKCh1MTYpYnAtPnBvcnRfaWR4ICogMTApKQojZGVmaW5lIFJYX1JJTkdfUUlEIChicC0+dGhvciA/IGJwLT5xdWV1ZV9pZCA6IDApCiNkZWZpbmUgU1RBVF9DVFhfSUQgKChicC0+dmYgfHwgYnAtPnRob3IpID8gYnAtPnN0YXRfY3R4X2lkIDogMCkKI2RlZmluZSBUWF9BVkFJTChyKSAgICAgICAgICAgICAgICAgICAgICAociAtIDEpCiNkZWZpbmUgVFhfSU5fVVNFKGEsIGIsIGMpICgoYSAtIGIpICYgKGMgLSAxKSkKI2RlZmluZSBOT19NT1JFX05RX0JEX1RPX1NFUlZJQ0UgICAgICAgICAxCiNkZWZpbmUgU0VSVklDRV9ORVhUX05RX0JEICAgICAgICAgICAgICAgMAojZGVmaW5lIE5PX01PUkVfQ1FfQkRfVE9fU0VSVklDRSAgICAgICAgIDEKI2RlZmluZSBTRVJWSUNFX05FWFRfQ1FfQkQgICAgICAgICAgICAgICAwCiNkZWZpbmUgTUFDX0hEUl9TSVpFICAgICAxMgojZGVmaW5lIFZMQU5fSERSX1NJWkUgICAgNAojZGVmaW5lIEVUSEVSVFlQRV9WTEFOICAgMHg4MTAwCiNkZWZpbmUgQllURV9TV0FQX1ModykgKFwKCSgoKHcpICYgMHhmZjAwKSA+PiA4KSB8IFwKCSgoKHcpICYgMHgwMGZmKSA8PCA4KSkKI2RlZmluZSBEQl9PRkZTRVRfUEYgICAgICAgICAgIDB4MTAwMDAKI2RlZmluZSBEQl9PRkZTRVRfVkYgICAgICAgICAgIDB4NDAwMAojZGVmaW5lIERCQ19NU0dfSURYKGlkeCkgICAgICAgKFwKCSgoaWR4KSA8PCBEQkNfREJDX0lOREVYX1NGVCkgJiBEQkNfREJDX0lOREVYX01BU0spCiNkZWZpbmUgREJDX01TR19YSUQoeGlkLCBmbGcpICAoXAoJKCgoeGlkKSA8PCBEQkNfREJDX1hJRF9TRlQpICYgREJDX0RCQ19YSURfTUFTSykgfCBcCglEQkNfREJDX1BBVEhfTDIgfCAoZmxnKSkKI2RlZmluZSBQSFlfU1RBVFVTICAgICAgICAgMHgwMDAxCiNkZWZpbmUgUEhZX1NQRUVEICAgICAgICAgIDB4MDAwMgojZGVmaW5lIERFVEVDVF9NRURJQSAgICAgICAweDAwMDQKI2RlZmluZSBTVVBQT1JUX1NQRUVEUyAgICAgMHgwMDA4CiNkZWZpbmUgUUNGR19QSFlfQUxMICAgKFwKCVNVUFBPUlRfU1BFRURTIHwgREVURUNUX01FRElBIHwgUEhZX1NQRUVEIHwgUEhZX1NUQVRVUykKI2RlZmluZSBzdHJfbWJwcyAgICAgICAgICAgIk1icHMiCiNkZWZpbmUgc3RyX2dicHMgICAgICAgICAgICJHYnBzIgovKgogKiBCcm9hZGNvbSBldGhlcm5ldCBkcml2ZXIgbnZtIGRlZmluZXMuCiAqLwovKiBudm0gY2ZnIDIwMyAtIHUzMiBsaW5rX3NldHRpbmdzICovCiNkZWZpbmUgTElOS19TUEVFRF9EUlZfTlVNICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDMKI2RlZmluZSBMSU5LX1NQRUVEX0RSVl9NQVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMEYKI2RlZmluZSBMSU5LX1NQRUVEX0RSVl9TSElGVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKI2RlZmluZSBMSU5LX1NQRUVEX0RSVl9BVVRPTkVHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MAojZGVmaW5lIE5TX0xJTktfU1BFRURfRFJWX0FVVE9ORUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwCiNkZWZpbmUgTElOS19TUEVFRF9EUlZfMUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEKI2RlZmluZSBOU19MSU5LX1NQRUVEX0RSVl8xRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MQojZGVmaW5lIExJTktfU1BFRURfRFJWXzEwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyCiNkZWZpbmUgTlNfTElOS19TUEVFRF9EUlZfMTBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIKI2RlZmluZSBMSU5LX1NQRUVEX0RSVl8yNUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MwojZGVmaW5lIE5TX0xJTktfU1BFRURfRFJWXzI1RyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzCiNkZWZpbmUgTElOS19TUEVFRF9EUlZfNDBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQKI2RlZmluZSBOU19MSU5LX1NQRUVEX0RSVl80MEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NAojZGVmaW5lIExJTktfU1BFRURfRFJWXzUwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1CiNkZWZpbmUgTlNfTElOS19TUEVFRF9EUlZfNTBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUKI2RlZmluZSBMSU5LX1NQRUVEX0RSVl8xMDBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NgojZGVmaW5lIE5TX0xJTktfU1BFRURfRFJWXzEwMEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2CiNkZWZpbmUgTElOS19TUEVFRF9EUlZfMjAwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcKI2RlZmluZSBOU19MSU5LX1NQRUVEX0RSVl8yMDBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NwojZGVmaW5lIExJTktfU1BFRURfRFJWXzJfNUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhFCiNkZWZpbmUgTlNfTElOS19TUEVFRF9EUlZfMl81RyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEUKI2RlZmluZSBMSU5LX1NQRUVEX0RSVl8xMDBNICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RgojZGVmaW5lIE5TX0xJTktfU1BFRURfRFJWXzEwME0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGCi8qIG52bSBjZmcgMjAxIC0gdTMyIHNwZWVkX2NhcF9tYXNrICovCiNkZWZpbmUgU1BFRURfQ0FQQUJJTElUWV9EUlZfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGRkZGCiNkZWZpbmUgU1BFRURfQ0FQQUJJTElUWV9EUlZfU0hJRlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwCiNkZWZpbmUgU1BFRURfQ0FQQUJJTElUWV9EUlZfMUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEKI2RlZmluZSBOU19TUEVFRF9DQVBBQklMSVRZX0RSVl8xRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MQojZGVmaW5lIFNQRUVEX0NBUEFCSUxJVFlfRFJWXzEwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyCiNkZWZpbmUgTlNfU1BFRURfQ0FQQUJJTElUWV9EUlZfMTBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIKI2RlZmluZSBTUEVFRF9DQVBBQklMSVRZX0RSVl8yNUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NAojZGVmaW5lIE5TX1NQRUVEX0NBUEFCSUxJVFlfRFJWXzI1RyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0CiNkZWZpbmUgU1BFRURfQ0FQQUJJTElUWV9EUlZfNDBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgKI2RlZmluZSBOU19TUEVFRF9DQVBBQklMSVRZX0RSVl80MEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OAojZGVmaW5lIFNQRUVEX0NBUEFCSUxJVFlfRFJWXzUwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMAojZGVmaW5lIE5TX1NQRUVEX0NBUEFCSUxJVFlfRFJWXzUwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMAojZGVmaW5lIFNQRUVEX0NBUEFCSUxJVFlfRFJWXzEwMEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMAojZGVmaW5lIE5TX1NQRUVEX0NBUEFCSUxJVFlfRFJWXzEwMEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMAojZGVmaW5lIFNQRUVEX0NBUEFCSUxJVFlfRFJWXzIwMEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MAojZGVmaW5lIE5TX1NQRUVEX0NBUEFCSUxJVFlfRFJWXzIwMEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MAojZGVmaW5lIFNQRUVEX0NBUEFCSUxJVFlfRFJWXzJfNUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MDAwCiNkZWZpbmUgTlNfU1BFRURfQ0FQQUJJTElUWV9EUlZfMl81RyAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwMDAKI2RlZmluZSBTUEVFRF9DQVBBQklMSVRZX0RSVl8xMDBNICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAwMAojZGVmaW5lIE5TX1NQRUVEX0NBUEFCSUxJVFlfRFJWXzEwME0gICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDAwCi8qIG52bSBjZmcgMjAyICovCiNkZWZpbmUgU1BFRURfQ0FQQUJJTElUWV9GV19NQVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkYwMDAwCiNkZWZpbmUgU1BFRURfQ0FQQUJJTElUWV9GV19TSElGVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNgojZGVmaW5lIFNQRUVEX0NBUEFCSUxJVFlfRldfMUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MUwgPDwgMTYpCiNkZWZpbmUgTlNfU1BFRURfQ0FQQUJJTElUWV9GV18xRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgxKQojZGVmaW5lIFNQRUVEX0NBUEFCSUxJVFlfRldfMTBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MkwgPDwgMTYpCiNkZWZpbmUgTlNfU1BFRURfQ0FQQUJJTElUWV9GV18xMEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgyKQojZGVmaW5lIFNQRUVEX0NBUEFCSUxJVFlfRldfMjVHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4NEwgPDwgMTYpCiNkZWZpbmUgTlNfU1BFRURfQ0FQQUJJTElUWV9GV18yNUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg0KQojZGVmaW5lIFNQRUVEX0NBUEFCSUxJVFlfRldfNDBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4OEwgPDwgMTYpCiNkZWZpbmUgTlNfU1BFRURfQ0FQQUJJTElUWV9GV180MEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg4KQojZGVmaW5lIFNQRUVEX0NBUEFCSUxJVFlfRldfNTBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MTBMIDw8IDE2KQojZGVmaW5lIE5TX1NQRUVEX0NBUEFCSUxJVFlfRldfNTBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MTApCiNkZWZpbmUgU1BFRURfQ0FQQUJJTElUWV9GV18xMDBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgyMEwgPDwgMTYpCiNkZWZpbmUgTlNfU1BFRURfQ0FQQUJJTElUWV9GV18xMDBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgyMCkKI2RlZmluZSBTUEVFRF9DQVBBQklMSVRZX0ZXXzIwMEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDQwTCA8PCAxNikKI2RlZmluZSBOU19TUEVFRF9DQVBBQklMSVRZX0ZXXzIwMEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDQwKQojZGVmaW5lIFNQRUVEX0NBUEFCSUxJVFlfRldfMl81RyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4NDAwMEwgPDwgMTYpCiNkZWZpbmUgTlNfU1BFRURfQ0FQQUJJTElUWV9GV18yXzVHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg0MDAwKQojZGVmaW5lIFNQRUVEX0NBUEFCSUxJVFlfRldfMTAwTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4ODAwMFVMIDw8IDE2KQojZGVmaW5lIE5TX1NQRUVEX0NBUEFCSUxJVFlfRldfMTAwTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4ODAwMCkKLyogbnZtIGNmZyAyMDUgKi8KI2RlZmluZSBMSU5LX1NQRUVEX0ZXX05VTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwNQojZGVmaW5lIExJTktfU1BFRURfRldfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDc4MAojZGVmaW5lIExJTktfU1BFRURfRldfU0hJRlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNwojZGVmaW5lIExJTktfU1BFRURfRldfQVVUT05FRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MEwgPDwgNykKI2RlZmluZSBOU19MSU5LX1NQRUVEX0ZXX0FVVE9ORUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDApCiNkZWZpbmUgTElOS19TUEVFRF9GV18xRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgxTCA8PCA3KQojZGVmaW5lIE5TX0xJTktfU1BFRURfRldfMUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MSkKI2RlZmluZSBMSU5LX1NQRUVEX0ZXXzEwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDJMIDw8IDcpCiNkZWZpbmUgTlNfTElOS19TUEVFRF9GV18xMEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgyKQojZGVmaW5lIExJTktfU1BFRURfRldfMjVHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4M0wgPDwgNykKI2RlZmluZSBOU19MSU5LX1NQRUVEX0ZXXzI1RyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDMpCiNkZWZpbmUgTElOS19TUEVFRF9GV180MEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg0TCA8PCA3KQojZGVmaW5lIE5TX0xJTktfU1BFRURfRldfNDBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4NCkKI2RlZmluZSBMSU5LX1NQRUVEX0ZXXzUwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDVMIDw8IDcpCiNkZWZpbmUgTlNfTElOS19TUEVFRF9GV181MEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg1KQojZGVmaW5lIExJTktfU1BFRURfRldfMTAwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4NkwgPDwgNykKI2RlZmluZSBOU19MSU5LX1NQRUVEX0ZXXzEwMEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDYpCiNkZWZpbmUgTElOS19TUEVFRF9GV18yMDBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg3TCA8PCA3KQojZGVmaW5lIE5TX0xJTktfU1BFRURfRldfMjAwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4NykKI2RlZmluZSBMSU5LX1NQRUVEX0ZXXzJfNUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweEVMIDw8IDcpCiNkZWZpbmUgTlNfTElOS19TUEVFRF9GV18yXzVHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHhFKQojZGVmaW5lIExJTktfU1BFRURfRldfMTAwTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4RkwgPDwgNykKI2RlZmluZSBOU19MSU5LX1NQRUVEX0ZXXzEwME0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweEYpCi8qIG52bSBjZmcgMjEwICovCiNkZWZpbmUgRDNfTElOS19TUEVFRF9GV19OVU0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMTAKI2RlZmluZSBEM19MSU5LX1NQRUVEX0ZXX01BU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwRjAwMDAKI2RlZmluZSBEM19MSU5LX1NQRUVEX0ZXX1NISUZUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2CiNkZWZpbmUgRDNfTElOS19TUEVFRF9GV19BVVRPTkVHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgwTCA8PCAxNikKI2RlZmluZSBOU19EM19MSU5LX1NQRUVEX0ZXX0FVVE9ORUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDApCiNkZWZpbmUgRDNfTElOS19TUEVFRF9GV18xRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgxTCA8PCAxNikKI2RlZmluZSBOU19EM19MSU5LX1NQRUVEX0ZXXzFHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDEpCiNkZWZpbmUgRDNfTElOS19TUEVFRF9GV18xMEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgyTCA8PCAxNikKI2RlZmluZSBOU19EM19MSU5LX1NQRUVEX0ZXXzEwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDIpCiNkZWZpbmUgRDNfTElOS19TUEVFRF9GV18yNUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgzTCA8PCAxNikKI2RlZmluZSBOU19EM19MSU5LX1NQRUVEX0ZXXzI1RyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDMpCiNkZWZpbmUgRDNfTElOS19TUEVFRF9GV180MEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg0TCA8PCAxNikKI2RlZmluZSBOU19EM19MSU5LX1NQRUVEX0ZXXzQwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDQpCiNkZWZpbmUgRDNfTElOS19TUEVFRF9GV181MEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg1TCA8PCAxNikKI2RlZmluZSBOU19EM19MSU5LX1NQRUVEX0ZXXzUwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDUpCiNkZWZpbmUgRDNfTElOS19TUEVFRF9GV18xMDBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg2TCA8PCAxNikKI2RlZmluZSBOU19EM19MSU5LX1NQRUVEX0ZXXzEwMEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDYpCiNkZWZpbmUgRDNfTElOS19TUEVFRF9GV18yMDBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg3TCA8PCAxNikKI2RlZmluZSBOU19EM19MSU5LX1NQRUVEX0ZXXzIwMEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDcpCiNkZWZpbmUgRDNfTElOS19TUEVFRF9GV18yXzVHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHhFTCA8PCAxNikKI2RlZmluZSBOU19EM19MSU5LX1NQRUVEX0ZXXzJfNUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweEUpCiNkZWZpbmUgRDNfTElOS19TUEVFRF9GV18xMDBNICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHhGTCA8PCAxNikKI2RlZmluZSBOU19EM19MSU5LX1NQRUVEX0ZXXzEwME0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweEYpCi8qIG52bSBjZmcgMjExICovCiNkZWZpbmUgRDNfRkxPV19DT05UUk9MX0ZXX05VTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMTEKI2RlZmluZSBEM19GTE9XX0NPTlRST0xfRldfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDA3MDAwMDAKI2RlZmluZSBEM19GTE9XX0NPTlRST0xfRldfU0hJRlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwCiNkZWZpbmUgRDNfRkxPV19DT05UUk9MX0ZXX0FVVE8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgwTCA8PCAyMCkKI2RlZmluZSBOU19EM19GTE9XX0NPTlRST0xfRldfQVVUTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDApCiNkZWZpbmUgRDNfRkxPV19DT05UUk9MX0ZXX1RYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgxTCA8PCAyMCkKI2RlZmluZSBOU19EM19GTE9XX0NPTlRST0xfRldfVFggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDEpCiNkZWZpbmUgRDNfRkxPV19DT05UUk9MX0ZXX1JYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgyTCA8PCAyMCkKI2RlZmluZSBOU19EM19GTE9XX0NPTlRST0xfRldfUlggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDIpCiNkZWZpbmUgRDNfRkxPV19DT05UUk9MX0ZXX0JPVEggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgzTCA8PCAyMCkKI2RlZmluZSBOU19EM19GTE9XX0NPTlRST0xfRldfQk9USCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDMpCiNkZWZpbmUgRDNfRkxPV19DT05UUk9MX0ZXX05PTkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg0TCA8PCAyMCkKI2RlZmluZSBOU19EM19GTE9XX0NPTlRST0xfRldfTk9ORSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDQpCi8qIG52bSBjZmcgMjEzICovCiNkZWZpbmUgUE9SVF9DRkdfTElOS19TRVRUSU5HU19NRURJQV9BVVRPX0RFVEVDVF9OVU0gICAgICAgICAgICAyMTMKI2RlZmluZSBQT1JUX0NGR19MSU5LX1NFVFRJTkdTX01FRElBX0FVVE9fREVURUNUX01BU0sgICAgICAgICAgIDB4MDIwMDAwMDAKI2RlZmluZSBQT1JUX0NGR19MSU5LX1NFVFRJTkdTX01FRElBX0FVVE9fREVURUNUX1NISUZUICAgICAgICAgIDI1CiNkZWZpbmUgUE9SVF9DRkdfTElOS19TRVRUSU5HU19NRURJQV9BVVRPX0RFVEVDVF9ESVNBQkxFRCAgICAgICAoMHgwTCA8PCAyNSkKI2RlZmluZSBOU19QT1JUX0NGR19MSU5LX1NFVFRJTkdTX01FRElBX0FVVE9fREVURUNUX0RJU0FCTEVEICAgICgweDApCiNkZWZpbmUgUE9SVF9DRkdfTElOS19TRVRUSU5HU19NRURJQV9BVVRPX0RFVEVDVF9FTkFCTEVEICAgICAgICAoMHgxTCA8PCAyNSkKI2RlZmluZSBOU19QT1JUX0NGR19MSU5LX1NFVFRJTkdTX01FRElBX0FVVE9fREVURUNUX0VOQUJMRUQgICAgICgweDEpCi8qIG52bSBjZmcgMzU3IC0gdTMyIG1iYV9jZmcyICovCiNkZWZpbmUgRlVOQ19DRkdfUFJFX0JPT1RfTUJBX1ZMQU5fVkFMVUVfTlVNICAgICAgICAgICAgICAgICAgICAzNTcKI2RlZmluZSBGVU5DX0NGR19QUkVfQk9PVF9NQkFfVkxBTl9WQUxVRV9NQVNLICAgICAgICAgICAgICAgICAgIDB4MDAwMEZGRkYKI2RlZmluZSBGVU5DX0NGR19QUkVfQk9PVF9NQkFfVkxBTl9WQUxVRV9TSElGVCAgICAgICAgICAgICAgICAgIDAKLyogbnZtIGNmZyAzNTggLSB1MzIgbWJhX2NmZzIgKi8KI2RlZmluZSBGVU5DX0NGR19QUkVfQk9PVF9NQkFfVkxBTl9OVU0gICAgICAgICAgICAgICAgICAgICAgICAgIDM1OAojZGVmaW5lIEZVTkNfQ0ZHX1BSRV9CT09UX01CQV9WTEFOX01BU0sgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAxMDAwMAojZGVmaW5lIEZVTkNfQ0ZHX1BSRV9CT09UX01CQV9WTEFOX1NISUZUICAgICAgICAgICAgICAgICAgICAgICAgMTYKI2RlZmluZSBGVU5DX0NGR19QUkVfQk9PVF9NQkFfVkxBTl9ESVNBQkxFRCAgICAgICAgICAgICAgICAgICAgICgweDBMIDw8IDE2KQojZGVmaW5lIE5TX0ZVTkNfQ0ZHX1BSRV9CT09UX01CQV9WTEFOX0RJU0FCTEVEICAgICAgICAgICAgICAgICAgKDB4MCkKI2RlZmluZSBGVU5DX0NGR19QUkVfQk9PVF9NQkFfVkxBTl9FTkFCTEVEICAgICAgICAgICAgICAgICAgICAgICgweDFMIDw8IDE2KQojZGVmaW5lIE5TX0ZVTkNfQ0ZHX1BSRV9CT09UX01CQV9WTEFOX0VOQUJMRUQgICAgICAgICAgICAgICAgICAgKDB4MSkKCnN0cnVjdCB0eF9kb29yYmVsbCB7Cgl1MzIga2V5X2lkeDsKI2RlZmluZSBUWF9ET09SQkVMTF9JRFhfTUFTSyAgICAgIDB4ZmZmZmZmVUwKI2RlZmluZSBUWF9ET09SQkVMTF9JRFhfU0ZUICAgICAgIDAKI2RlZmluZSBUWF9ET09SQkVMTF9LRVlfTUFTSyAgICAgIDB4ZjAwMDAwMDBVTAojZGVmaW5lIFRYX0RPT1JCRUxMX0tFWV9TRlQgICAgICAgMjgKICAgICNkZWZpbmUgVFhfRE9PUkJFTExfS0VZX1RYICAgICgweDBVTCA8PCAyOCkKICAgICNkZWZpbmUgVFhfRE9PUkJFTExfS0VZX0xBU1QgIFRYX0RPT1JCRUxMX0tFWV9UWAp9OwoKc3RydWN0IHJ4X2Rvb3JiZWxsIHsKCXUzMiBrZXlfaWR4OwojZGVmaW5lIFJYX0RPT1JCRUxMX0lEWF9NQVNLICAgICAgMHhmZmZmZmZVTAojZGVmaW5lIFJYX0RPT1JCRUxMX0lEWF9TRlQgICAgICAgMAojZGVmaW5lIFJYX0RPT1JCRUxMX0tFWV9NQVNLICAgICAgMHhmMDAwMDAwMFVMCiNkZWZpbmUgUlhfRE9PUkJFTExfS0VZX1NGVCAgICAgICAyOAogICAgI2RlZmluZSBSWF9ET09SQkVMTF9LRVlfUlggICAgKDB4MVVMIDw8IDI4KQogICAgI2RlZmluZSBSWF9ET09SQkVMTF9LRVlfTEFTVCAgUlhfRE9PUkJFTExfS0VZX1JYCn07CgpzdHJ1Y3QgY21wbF9kb29yYmVsbCB7Cgl1MzIgIGtleV9tYXNrX3ZhbGlkX2lkeDsKI2RlZmluZSBDTVBMX0RPT1JCRUxMX0lEWF9NQVNLICAgICAgMHhmZmZmZmZVTAojZGVmaW5lIENNUExfRE9PUkJFTExfSURYX1NGVCAgICAgICAwCiNkZWZpbmUgQ01QTF9ET09SQkVMTF9JRFhfVkFMSUQgICAgIDB4NDAwMDAwMFVMCiNkZWZpbmUgQ01QTF9ET09SQkVMTF9NQVNLICAgICAgICAgIDB4ODAwMDAwMFVMCiNkZWZpbmUgQ01QTF9ET09SQkVMTF9LRVlfTUFTSyAgICAgIDB4ZjAwMDAwMDBVTAojZGVmaW5lIENNUExfRE9PUkJFTExfS0VZX1NGVCAgICAgICAyOAogICAgI2RlZmluZSBDTVBMX0RPT1JCRUxMX0tFWV9DTVBMICAoMHgyVUwgPDwgMjgpCiAgICAjZGVmaW5lIENNUExfRE9PUkJFTExfS0VZX0xBU1QgIENNUExfRE9PUkJFTExfS0VZX0NNUEwKfTsKCi8qIGRiY19kYmMgKHNpemU6NjRiLzhCKSAqLwpzdHJ1Y3QgZGJjX2RiYyB7CglfX2xlMzIgIGluZGV4OwoJI2RlZmluZSBEQkNfREJDX0lOREVYX01BU0sgICAgICAgICAgMHhmZmZmZmZVTAoJI2RlZmluZSBEQkNfREJDX0lOREVYX1NGVCAgICAgICAgICAgMAoJX19sZTMyICB0eXBlX3BhdGhfeGlkOwoJI2RlZmluZSBEQkNfREJDX1hJRF9NQVNLICAgICAgICAgICAgMHhmZmZmZlVMCgkjZGVmaW5lIERCQ19EQkNfWElEX1NGVCAgICAgICAgICAgICAwCgkjZGVmaW5lIERCQ19EQkNfUEFUSF9NQVNLICAgICAgICAgICAweDMwMDAwMDBVTAoJI2RlZmluZSBEQkNfREJDX1BBVEhfU0ZUICAgICAgICAgICAgMjQKCSNkZWZpbmUgREJDX0RCQ19QQVRIX1JPQ0UgICAgICAgICAgICgweDBVTCA8PCAyNCkKCSNkZWZpbmUgREJDX0RCQ19QQVRIX0wyICAgICAgICAgICAgICgweDFVTCA8PCAyNCkKCSNkZWZpbmUgREJDX0RCQ19QQVRIX0VOR0lORSAgICAgICAgICgweDJVTCA8PCAyNCkKCSNkZWZpbmUgREJDX0RCQ19QQVRIX0xBU1QgICAgICAgICAgIERCQ19EQkNfUEFUSF9FTkdJTkUKCSNkZWZpbmUgREJDX0RCQ19ERUJVR19UUkFDRSAgICAgICAgIDB4ODAwMDAwMFVMCgkjZGVmaW5lIERCQ19EQkNfVFlQRV9NQVNLICAgICAgICAgICAweGYwMDAwMDAwVUwKCSNkZWZpbmUgREJDX0RCQ19UWVBFX1NGVCAgICAgICAgICAgIDI4CgkjZGVmaW5lIERCQ19EQkNfVFlQRV9TUSAgICAgICAgICAgICAoMHgwVUwgPDwgMjgpCgkjZGVmaW5lIERCQ19EQkNfVFlQRV9SUSAgICAgICAgICAgICAoMHgxVUwgPDwgMjgpCgkjZGVmaW5lIERCQ19EQkNfVFlQRV9TUlEgICAgICAgICAgICAoMHgyVUwgPDwgMjgpCgkjZGVmaW5lIERCQ19EQkNfVFlQRV9TUlFfQVJNICAgICAgICAoMHgzVUwgPDwgMjgpCgkjZGVmaW5lIERCQ19EQkNfVFlQRV9DUSAgICAgICAgICAgICAoMHg0VUwgPDwgMjgpCgkjZGVmaW5lIERCQ19EQkNfVFlQRV9DUV9BUk1TRSAgICAgICAoMHg1VUwgPDwgMjgpCgkjZGVmaW5lIERCQ19EQkNfVFlQRV9DUV9BUk1BTEwgICAgICAoMHg2VUwgPDwgMjgpCgkjZGVmaW5lIERCQ19EQkNfVFlQRV9DUV9BUk1FTkEgICAgICAoMHg3VUwgPDwgMjgpCgkjZGVmaW5lIERCQ19EQkNfVFlQRV9TUlFfQVJNRU5BICAgICAoMHg4VUwgPDwgMjgpCgkjZGVmaW5lIERCQ19EQkNfVFlQRV9DUV9DVVRPRkZfQUNLICAoMHg5VUwgPDwgMjgpCgkjZGVmaW5lIERCQ19EQkNfVFlQRV9OUSAgICAgICAgICAgICAoMHhhVUwgPDwgMjgpCgkjZGVmaW5lIERCQ19EQkNfVFlQRV9OUV9BUk0gICAgICAgICAoMHhiVUwgPDwgMjgpCgkjZGVmaW5lIERCQ19EQkNfVFlQRV9OVUxMICAgICAgICAgICAoMHhmVUwgPDwgMjgpCgkjZGVmaW5lIERCQ19EQkNfVFlQRV9MQVNUICAgICAgICAgICBEQkNfREJDX1RZUEVfTlVMTAp9OwoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogVHJhbnNtaXQgaW5mby4KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpzdHJ1Y3QgdHhfYmRfc2hvcnQgewoJdTE2IGZsYWdzX3R5cGU7CiNkZWZpbmUgVFhfQkRfU0hPUlRfVFlQRV9NQVNLICAgICAgICAgICAgICAgMHgzZlVMCiNkZWZpbmUgVFhfQkRfU0hPUlRfVFlQRV9TRlQgICAgICAgICAgICAgICAgMAojZGVmaW5lIFRYX0JEX1NIT1JUX1RZUEVfVFhfQkRfU0hPUlQgICAgICAgIDB4MFVMCiNkZWZpbmUgVFhfQkRfU0hPUlRfVFlQRV9MQVNUICAgICAgICAgICAgICAgVFhfQkRfU0hPUlRfVFlQRV9UWF9CRF9TSE9SVAojZGVmaW5lIFRYX0JEX1NIT1JUX0ZMQUdTX01BU0sgICAgICAgICAgICAgIDB4ZmZjMFVMCiNkZWZpbmUgVFhfQkRfU0hPUlRfRkxBR1NfU0ZUICAgICAgICAgICAgICAgNgojZGVmaW5lIFRYX0JEX1NIT1JUX0ZMQUdTX1BBQ0tFVF9FTkQgICAgICAgIDB4NDBVTAojZGVmaW5lIFRYX0JEX1NIT1JUX0ZMQUdTX05PX0NNUEwgICAgICAgICAgIDB4ODBVTAojZGVmaW5lIFRYX0JEX1NIT1JUX0ZMQUdTX0JEX0NOVF9NQVNLICAgICAgIDB4MWYwMFVMCiNkZWZpbmUgVFhfQkRfU0hPUlRfRkxBR1NfQkRfQ05UX1NGVCAgICAgICAgOAojZGVmaW5lIFRYX0JEX1NIT1JUX0ZMQUdTX0xISU5UX01BU0sgICAgICAgIDB4NjAwMFVMCiNkZWZpbmUgVFhfQkRfU0hPUlRfRkxBR1NfTEhJTlRfU0ZUICAgICAgICAgMTMKI2RlZmluZSBUWF9CRF9TSE9SVF9GTEFHU19MSElOVF9MVDUxMiAgICAgICAoMHgwVUwgPDwgMTMpCiNkZWZpbmUgVFhfQkRfU0hPUlRfRkxBR1NfTEhJTlRfTFQxSyAgICAgICAgKDB4MVVMIDw8IDEzKQojZGVmaW5lIFRYX0JEX1NIT1JUX0ZMQUdTX0xISU5UX0xUMksgICAgICAgICgweDJVTCA8PCAxMykKI2RlZmluZSBUWF9CRF9TSE9SVF9GTEFHU19MSElOVF9HVEUySyAgICAgICAoMHgzVUwgPDwgMTMpCiNkZWZpbmUgVFhfQkRfU0hPUlRfRkxBR1NfTEhJTlRfTEFTVCAgICAgICAgVFhfQkRfU0hPUlRfRkxBR1NfTEhJTlRfR1RFMksKI2RlZmluZSBUWF9CRF9TSE9SVF9GTEFHU19DT0FMX05PVyAgICAgICAgICAweDgwMDBVTAoJdTE2IGxlbjsKCXUzMiBvcGFxdWU7Cgl1bmlvbiBkbWFfYWRkcjY0X3QgZG1hOwp9OwoKc3RydWN0IHR4X2NtcGwgewoJdTE2IGZsYWdzX3R5cGU7CiNkZWZpbmUgVFhfQ01QTF9UWVBFX01BU0sgICAgICAgIDB4M2ZVTAojZGVmaW5lIFRYX0NNUExfVFlQRV9TRlQgICAgICAgICAwCiNkZWZpbmUgVFhfQ01QTF9UWVBFX1RYX0wyICAgICAgIDB4MFVMCiNkZWZpbmUgVFhfQ01QTF9UWVBFX0xBU1QgICAgICAgIFRYX0NNUExfVFlQRV9UWF9MMgojZGVmaW5lIFRYX0NNUExfRkxBR1NfTUFTSyAgICAgICAweGZmYzBVTAojZGVmaW5lIFRYX0NNUExfRkxBR1NfU0ZUICAgICAgICA2CiNkZWZpbmUgVFhfQ01QTF9GTEFHU19FUlJPUiAgICAgIDB4NDBVTAojZGVmaW5lIFRYX0NNUExfRkxBR1NfUFVTSCAgICAgICAweDgwVUwKCXUxNiB1bnVzZWRfMDsKCXUzMiBvcGFxdWU7Cgl1MTYgZXJyb3JzX3Y7CiNkZWZpbmUgVFhfQ01QTF9WICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MVVMCiNkZWZpbmUgVFhfQ01QTF9FUlJPUlNfTUFTSyAgICAgICAgICAgICAgICAgICAgIDB4ZmZmZVVMCiNkZWZpbmUgVFhfQ01QTF9FUlJPUlNfU0ZUICAgICAgICAgICAgICAgICAgICAgIDEKI2RlZmluZSBUWF9DTVBMX0VSUk9SU19CVUZGRVJfRVJST1JfTUFTSyAgICAgICAgMHhlVUwKI2RlZmluZSBUWF9DTVBMX0VSUk9SU19CVUZGRVJfRVJST1JfU0ZUICAgICAgICAgMQojZGVmaW5lIFRYX0NNUExfRVJST1JTX0JVRkZFUl9FUlJPUl9OT19FUlJPUiAgICAoMHgwVUwgPDwgMSkKI2RlZmluZSBUWF9DTVBMX0VSUk9SU19CVUZGRVJfRVJST1JfQkFEX0ZNVCAgICAgKDB4MlVMIDw8IDEpCiNkZWZpbmUgVFhfQ01QTF9FUlJPUlNfQlVGRkVSX0VSUk9SX0xBU1QgVFhfQ01QTF9FUlJPUlNfQlVGRkVSX0VSUk9SX0JBRF9GTVQKI2RlZmluZSBUWF9DTVBMX0VSUk9SU19aRVJPX0xFTkdUSF9QS1QgICAgICAgICAgMHgxMFVMCiNkZWZpbmUgVFhfQ01QTF9FUlJPUlNfRVhDRVNTSVZFX0JEX0xFTkdUSCAgICAgIDB4MjBVTAojZGVmaW5lIFRYX0NNUExfRVJST1JTX0RNQV9FUlJPUiAgICAgICAgICAgICAgICAweDQwVUwKI2RlZmluZSBUWF9DTVBMX0VSUk9SU19ISU5UX1RPT19TSE9SVCAgICAgICAgICAgMHg4MFVMCiNkZWZpbmUgVFhfQ01QTF9FUlJPUlNfUE9JU09OX1RMUF9FUlJPUiAgICAgICAgIDB4MTAwVUwKCXUxNiB1bnVzZWRfMTsKCXUzMiB1bnVzZWRfMjsKfTsKCnN0cnVjdCB0eF9pbmZvIHsKCXZvaWQgICAgICAgICAgICAgKmJkX3ZpcnQ7CglzdHJ1Y3QgaW9fYnVmZmVyICppb2JbTUFYX1RYX0RFU0NfQ05UXTsKCXUxNiAgICAgICAgICAgICAgcHJvZF9pZDsgIC8qIFR4IHByb2R1Y2VyIGluZGV4LiAqLwoJdTE2ICAgICAgICAgICAgICBjb25zX2lkOwoJdTE2ICAgICAgICAgICAgICByaW5nX2NudDsKCXUzMiAgICAgICAgICAgICAgY250OyAgIC8qIFR4IHN0YXRpc3RpY3MuICovCgl1MzIgICAgICAgICAgICAgIGNudF9yZXE7Cn07CgpzdHJ1Y3QgY21wbF9iYXNlIHsKCXUxNiB0eXBlOwojZGVmaW5lIENNUExfQkFTRV9UWVBFX01BU0sgICAgICAgICAgICAgIDB4M2ZVTAojZGVmaW5lIENNUExfQkFTRV9UWVBFX1NGVCAgICAgICAgICAgICAgIDAKI2RlZmluZSBDTVBMX0JBU0VfVFlQRV9UWF9MMiAgICAgICAgICAgICAweDBVTAojZGVmaW5lIENNUExfQkFTRV9UWVBFX1JYX0wyICAgICAgICAgICAgIDB4MTFVTAojZGVmaW5lIENNUExfQkFTRV9UWVBFX1JYX0FHRyAgICAgICAgICAgIDB4MTJVTAojZGVmaW5lIENNUExfQkFTRV9UWVBFX1JYX1RQQV9TVEFSVCAgICAgIDB4MTNVTAojZGVmaW5lIENNUExfQkFTRV9UWVBFX1JYX1RQQV9FTkQgICAgICAgIDB4MTVVTAojZGVmaW5lIENNUExfQkFTRV9UWVBFX1NUQVRfRUpFQ1QgICAgICAgIDB4MWFVTAojZGVmaW5lIENNUExfQkFTRV9UWVBFX0hXUk1fRE9ORSAgICAgICAgIDB4MjBVTAojZGVmaW5lIENNUExfQkFTRV9UWVBFX0hXUk1fRldEX1JFUSAgICAgIDB4MjJVTAojZGVmaW5lIENNUExfQkFTRV9UWVBFX0hXUk1fRldEX1JFU1AgICAgIDB4MjRVTAojZGVmaW5lIENNUExfQkFTRV9UWVBFX0hXUk1fQVNZTkNfRVZFTlQgIDB4MmVVTAojZGVmaW5lIENNUExfQkFTRV9UWVBFX0NRX05PVElGSUNBVElPTiAgIDB4MzBVTAojZGVmaW5lIENNUExfQkFTRV9UWVBFX1NSUV9FVkVOVCAgICAgICAgIDB4MzJVTAojZGVmaW5lIENNUExfQkFTRV9UWVBFX0RCUV9FVkVOVCAgICAgICAgIDB4MzRVTAojZGVmaW5lIENNUExfQkFTRV9UWVBFX1FQX0VWRU5UICAgICAgICAgIDB4MzhVTAojZGVmaW5lIENNUExfQkFTRV9UWVBFX0ZVTkNfRVZFTlQgICAgICAgIDB4M2FVTAojZGVmaW5lIENNUExfQkFTRV9UWVBFX0xBU1QgQ01QTF9CQVNFX1RZUEVfRlVOQ19FVkVOVAoJdTE2IGluZm8xOwoJdTMyIGluZm8yOwoJdTMyIGluZm8zX3Y7CiNkZWZpbmUgQ01QTF9CQVNFX1YgICAgICAgICAgMHgxVUwKI2RlZmluZSBDTVBMX0JBU0VfSU5GTzNfTUFTSyAweGZmZmZmZmZlVUwKI2RlZmluZSBDTVBMX0JBU0VfSU5GTzNfU0ZUICAxCgl1MzIgaW5mbzQ7Cn07CgpzdHJ1Y3QgY21wX2luZm8gewoJdm9pZCAgICAgICpiZF92aXJ0OwoJdTE2ICAgICAgIGNvbnNfaWQ7Cgl1MTYgICAgICAgcmluZ19jbnQ7Cgl1OCAgICAgICAgY29tcGxldGlvbl9iaXQ7Cgl1OCAgICAgICAgcmVzWzNdOwp9OwoKLyogQ29tcGxldGlvbiBRdWV1ZSBOb3RpZmljYXRpb24gKi8KLyogbnFfY24gKHNpemU6MTI4Yi8xNkIpICovCnN0cnVjdCBucV9iYXNlIHsKCXUxNgl0eXBlOwovKgogKiBUaGlzIGZpZWxkIGluZGljYXRlcyB0aGUgZXhhY3QgdHlwZSBvZiB0aGUgY29tcGxldGlvbi4KICogQnkgY29udmVudGlvbiwgdGhlIExTQiBpZGVudGlmaWVzIHRoZSBsZW5ndGggb2YgdGhlCiAqIHJlY29yZCBpbiAxNkIgdW5pdHMuICBFdmVuIHZhbHVlcyBpbmRpY2F0ZSAxNkIKICogcmVjb3Jkcy4gIE9kZCB2YWx1ZXMgaW5kaWNhdGUgMzJCCiAqIHJlY29yZHMuCiAqLwojZGVmaW5lIE5RX0NOX1RZUEVfTUFTSyAgICAgICAgICAgMHgzZlVMCiNkZWZpbmUgTlFfQ05fVFlQRV9TRlQgICAgICAgICAgICAwCi8qIENRIE5vdGlmaWNhdGlvbiAqLwoJICAgICNkZWZpbmUgTlFfQ05fVFlQRV9DUV9OT1RJRklDQVRJT04gIDB4MzBVTAoJICAgICNkZWZpbmUgTlFfQ05fVFlQRV9MQVNUICAgICAgICAgICAgTlFfQ05fVFlQRV9DUV9OT1RJRklDQVRJT04KCXUxNglyZXNlcnZlZDE2OwovKgogKiBUaGlzIGlzIGFuIGFwcGxpY2F0aW9uIGxldmVsIElEIHVzZWQgdG8gaWRlbnRpZnkgdGhlCiAqIENRLiAgVGhpcyBmaWVsZCBjYXJyaWVzIHRoZSBsb3dlciAzMmIgb2YgdGhlIHZhbHVlLgogKi8KCXUzMgljcV9oYW5kbGVfbG93OwoJdTMyCXY7Ci8qCiAqIFRoaXMgdmFsdWUgaXMgd3JpdHRlbiBieSB0aGUgTklDIHN1Y2ggdGhhdCBpdCB3aWxsIGJlIGRpZmZlcmVudAogKiBmb3IgZWFjaCBwYXNzIHRocm91Z2ggdGhlIGNvbXBsZXRpb24gcXVldWUuICAgVGhlIGV2ZW4gcGFzc2VzCiAqIHdpbGwgd3JpdGUgMS4gIFRoZSBvZGQgcGFzc2VzIHdpbGwgd3JpdGUgMC4KICovCiNkZWZpbmUgTlFfQ05fViAgICAgMHgxVUwKLyoKICogVGhpcyBpcyBhbiBhcHBsaWNhdGlvbiBsZXZlbCBJRCB1c2VkIHRvIGlkZW50aWZ5IHRoZQogKiBDUS4gIFRoaXMgZmllbGQgY2FycmllcyB0aGUgdXBwZXIgMzJiIG9mIHRoZSB2YWx1ZS4KICovCgl1MzIJY3FfaGFuZGxlX2hpZ2g7Cn07CgpzdHJ1Y3QgbnFfaW5mbyB7Cgl2b2lkICAgICAgKmJkX3ZpcnQ7Cgl1MTYgICAgICAgY29uc19pZDsKCXUxNiAgICAgICByaW5nX2NudDsKCXU4ICAgICAgICBjb21wbGV0aW9uX2JpdDsKCXU4ICAgICAgICByZXNbM107Cn07CgpzdHJ1Y3QgcnhfcGt0X2NtcGwgewoJdTE2IGZsYWdzX3R5cGU7CiNkZWZpbmUgUlhfUEtUX0NNUExfVFlQRV9NQVNLICAgICAgICAgICAgICAgICAgICAweDNmVUwKI2RlZmluZSBSWF9QS1RfQ01QTF9UWVBFX1NGVCAgICAgICAgICAgICAgICAgICAgIDAKI2RlZmluZSBSWF9QS1RfQ01QTF9UWVBFX1JYX0wyICAgICAgICAgICAgICAgICAgIDB4MTFVTAojZGVmaW5lIFJYX1BLVF9DTVBMX1RZUEVfTEFTVCAgICAgICAgICAgICAgICAgICAgUlhfUEtUX0NNUExfVFlQRV9SWF9MMgojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTX01BU0sgICAgICAgICAgICAgICAgICAgMHhmZmMwVUwKI2RlZmluZSBSWF9QS1RfQ01QTF9GTEFHU19TRlQgICAgICAgICAgICAgICAgICAgIDYKI2RlZmluZSBSWF9QS1RfQ01QTF9GTEFHU19FUlJPUiAgICAgICAgICAgICAgICAgIDB4NDBVTAojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTX1BMQUNFTUVOVF9NQVNLICAgICAgICAgMHgzODBVTAojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTX1BMQUNFTUVOVF9TRlQgICAgICAgICAgNwojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTX1BMQUNFTUVOVF9OT1JNQUwgICAgICAgKDB4MFVMIDw8IDcpCiNkZWZpbmUgUlhfUEtUX0NNUExfRkxBR1NfUExBQ0VNRU5UX0pVTUJPICAgICAgICAoMHgxVUwgPDwgNykKI2RlZmluZSBSWF9QS1RfQ01QTF9GTEFHU19QTEFDRU1FTlRfSERTICAgICAgICAgICgweDJVTCA8PCA3KQojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTX1BMQUNFTUVOVF9MQVNUIFJYX1BLVF9DTVBMX0ZMQUdTX1BMQUNFTUVOVF9IRFMKI2RlZmluZSBSWF9QS1RfQ01QTF9GTEFHU19SU1NfVkFMSUQgICAgICAgICAgICAgIDB4NDAwVUwKI2RlZmluZSBSWF9QS1RfQ01QTF9GTEFHU19VTlVTRUQgICAgICAgICAgICAgICAgIDB4ODAwVUwKI2RlZmluZSBSWF9QS1RfQ01QTF9GTEFHU19JVFlQRV9NQVNLICAgICAgICAgICAgIDB4ZjAwMFVMCiNkZWZpbmUgUlhfUEtUX0NNUExfRkxBR1NfSVRZUEVfU0ZUICAgICAgICAgICAgICAxMgojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTX0lUWVBFX05PVF9LTk9XTiAgICAgICAgICAoMHgwVUwgPDwgMTIpCiNkZWZpbmUgUlhfUEtUX0NNUExfRkxBR1NfSVRZUEVfSVAgICAgICAgICAgICAgICAgICgweDFVTCA8PCAxMikKI2RlZmluZSBSWF9QS1RfQ01QTF9GTEFHU19JVFlQRV9UQ1AgICAgICAgICAgICAgICAgKDB4MlVMIDw8IDEyKQojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTX0lUWVBFX1VEUCAgICAgICAgICAgICAgICAoMHgzVUwgPDwgMTIpCiNkZWZpbmUgUlhfUEtUX0NNUExfRkxBR1NfSVRZUEVfRkNPRSAgICAgICAgICAgICAgICgweDRVTCA8PCAxMikKI2RlZmluZSBSWF9QS1RfQ01QTF9GTEFHU19JVFlQRV9ST0NFICAgICAgICAgICAgICAgKDB4NVVMIDw8IDEyKQojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTX0lUWVBFX0lDTVAgICAgICAgICAgICAgICAoMHg3VUwgPDwgMTIpCiNkZWZpbmUgUlhfUEtUX0NNUExfRkxBR1NfSVRZUEVfUFRQX1dPX1RJTUVTVEFNUCAgICgweDhVTCA8PCAxMikKI2RlZmluZSBSWF9QS1RfQ01QTF9GTEFHU19JVFlQRV9QVFBfV19USU1FU1RBTVAgICAgKDB4OVVMIDw8IDEyKQojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTX0lUWVBFX0xBU1QgUlhfUEtUX0NNUExfRkxBR1NfSVRZUEVfUFRQX1dfVElNRVNUQU1QCgl1MTYgbGVuOwoJdTMyIG9wYXF1ZTsKCXU4ICBhZ2dfYnVmc192MTsKI2RlZmluZSBSWF9QS1RfQ01QTF9WMSAgICAgICAgICAgIDB4MVVMCiNkZWZpbmUgUlhfUEtUX0NNUExfQUdHX0JVRlNfTUFTSyAweDNlVUwKI2RlZmluZSBSWF9QS1RfQ01QTF9BR0dfQlVGU19TRlQgIDEKI2RlZmluZSBSWF9QS1RfQ01QTF9VTlVTRUQxX01BU0sgIDB4YzBVTAojZGVmaW5lIFJYX1BLVF9DTVBMX1VOVVNFRDFfU0ZUICAgNgoJdTggIHJzc19oYXNoX3R5cGU7Cgl1OCAgcGF5bG9hZF9vZmZzZXQ7Cgl1OCAgdW51c2VkMTsKCXUzMiByc3NfaGFzaDsKfTsKCnN0cnVjdCByeF9wa3RfY21wbF9oaSB7Cgl1MzIgIGZsYWdzMjsKI2RlZmluZSBSWF9QS1RfQ01QTF9GTEFHUzJfSVBfQ1NfQ0FMQyAgICAgICAgIDB4MVVMCiNkZWZpbmUgUlhfUEtUX0NNUExfRkxBR1MyX0w0X0NTX0NBTEMgICAgICAgICAweDJVTAojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTMl9UX0lQX0NTX0NBTEMgICAgICAgMHg0VUwKI2RlZmluZSBSWF9QS1RfQ01QTF9GTEFHUzJfVF9MNF9DU19DQUxDICAgICAgIDB4OFVMCiNkZWZpbmUgUlhfUEtUX0NNUExfRkxBR1MyX01FVEFfRk9STUFUX01BU0sgICAweGYwVUwKI2RlZmluZSBSWF9QS1RfQ01QTF9GTEFHUzJfTUVUQV9GT1JNQVRfU0ZUICAgIDQKI2RlZmluZSBSWF9QS1RfQ01QTF9GTEFHUzJfTUVUQV9GT1JNQVRfTk9ORSAgICgweDBVTCA8PCA0KQojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTMl9NRVRBX0ZPUk1BVF9WTEFOICAgKDB4MVVMIDw8IDQpCiNkZWZpbmUgUlhfUEtUX0NNUExfRkxBR1MyX01FVEFfRk9STUFUX0xBU1QgICBcCglSWF9QS1RfQ01QTF9GTEFHUzJfTUVUQV9GT1JNQVRfVkxBTgojZGVmaW5lIFJYX1BLVF9DTVBMX0ZMQUdTMl9JUF9UWVBFICAgICAgICAgICAgMHgxMDBVTAoJdTMyIG1ldGFkYXRhOwojZGVmaW5lIFJYX1BLVF9DTVBMX01FVEFEQVRBX1ZJRF9NQVNLICAgICAgICAgMHhmZmZVTAojZGVmaW5lIFJYX1BLVF9DTVBMX01FVEFEQVRBX1ZJRF9TRlQgICAgICAgICAgMAojZGVmaW5lIFJYX1BLVF9DTVBMX01FVEFEQVRBX0RFICAgICAgICAgICAgICAgMHgxMDAwVUwKI2RlZmluZSBSWF9QS1RfQ01QTF9NRVRBREFUQV9QUklfTUFTSyAgICAgICAgIDB4ZTAwMFVMCiNkZWZpbmUgUlhfUEtUX0NNUExfTUVUQURBVEFfUFJJX1NGVCAgICAgICAgICAxMwojZGVmaW5lIFJYX1BLVF9DTVBMX01FVEFEQVRBX1RQSURfTUFTSyAgICAgICAgMHhmZmZmMDAwMFVMCiNkZWZpbmUgUlhfUEtUX0NNUExfTUVUQURBVEFfVFBJRF9TRlQgICAgICAgICAxNgoJdTE2IGVycm9yc192MjsKI2RlZmluZSBSWF9QS1RfQ01QTF9WMiAgICAgICAgICAgICAgICAgICAgICAgIDB4MVVMCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX01BU0sgICAgICAgICAgICAgICAweGZmZmVVTAojZGVmaW5lIFJYX1BLVF9DTVBMX0VSUk9SU19TRlQgICAgICAgICAgICAgICAgMQojZGVmaW5lIFJYX1BLVF9DTVBMX0VSUk9SU19CVUZGRVJfRVJST1JfTUFTSyAgMHhlVUwKI2RlZmluZSBSWF9QS1RfQ01QTF9FUlJPUlNfQlVGRkVSX0VSUk9SX1NGVCAgIDEKI2RlZmluZSBSWF9QS1RfQ01QTF9FUlJPUlNfQlVGRkVSX0VSUk9SX05PX0JVRkZFUiAgICgweDBVTCA8PCAxKQojZGVmaW5lIFJYX1BLVF9DTVBMX0VSUk9SU19CVUZGRVJfRVJST1JfRElEX05PVF9GSVQgKDB4MVVMIDw8IDEpCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX0JVRkZFUl9FUlJPUl9OT1RfT05fQ0hJUCAoMHgyVUwgPDwgMSkKI2RlZmluZSBSWF9QS1RfQ01QTF9FUlJPUlNfQlVGRkVSX0VSUk9SX0JBRF9GT1JNQVQgICgweDNVTCA8PCAxKQojZGVmaW5lIFJYX1BLVF9DTVBMX0VSUk9SU19CVUZGRVJfRVJST1JfTEFTVCBcCglSWF9QS1RfQ01QTF9FUlJPUlNfQlVGRkVSX0VSUk9SX0JBRF9GT1JNQVQKI2RlZmluZSBSWF9QS1RfQ01QTF9FUlJPUlNfSVBfQ1NfRVJST1IgICAgICAgICAgICAgIDB4MTBVTAojZGVmaW5lIFJYX1BLVF9DTVBMX0VSUk9SU19MNF9DU19FUlJPUiAgICAgICAgICAgICAgMHgyMFVMCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX1RfSVBfQ1NfRVJST1IgICAgICAgICAgICAweDQwVUwKI2RlZmluZSBSWF9QS1RfQ01QTF9FUlJPUlNfVF9MNF9DU19FUlJPUiAgICAgICAgICAgIDB4ODBVTAojZGVmaW5lIFJYX1BLVF9DTVBMX0VSUk9SU19DUkNfRVJST1IgICAgICAgICAgICAgICAgMHgxMDBVTAojZGVmaW5lIFJYX1BLVF9DTVBMX0VSUk9SU19UX1BLVF9FUlJPUl9NQVNLICAgICAgICAgMHhlMDBVTAojZGVmaW5lIFJYX1BLVF9DTVBMX0VSUk9SU19UX1BLVF9FUlJPUl9TRlQgICAgICAgICAgOQojZGVmaW5lIFJYX1BLVF9DTVBMX0VSUk9SU19UX1BLVF9FUlJPUl9OT19FUlJPUiAgICAgKDB4MFVMIDw8IDkpCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX1RfUEtUX0VSUk9SX1RfTDNfQkFEX1ZFUlNJT04gICAoMHgxVUwgPDwgOSkKI2RlZmluZSBSWF9QS1RfQ01QTF9FUlJPUlNfVF9QS1RfRVJST1JfVF9MM19CQURfSERSX0xFTiAgICgweDJVTCA8PCA5KQojZGVmaW5lIFJYX1BLVF9DTVBMX0VSUk9SU19UX1BLVF9FUlJPUl9UVU5ORUxfVE9UQUxfRVJST1IgKDB4M1VMIDw8IDkpCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX1RfUEtUX0VSUk9SX1RfSVBfVE9UQUxfRVJST1IgICAoMHg0VUwgPDwgOSkKI2RlZmluZSBSWF9QS1RfQ01QTF9FUlJPUlNfVF9QS1RfRVJST1JfVF9VRFBfVE9UQUxfRVJST1IgICgweDVVTCA8PCA5KQojZGVmaW5lIFJYX1BLVF9DTVBMX0VSUk9SU19UX1BLVF9FUlJPUl9UX0wzX0JBRF9UVEwgICAgICAgKDB4NlVMIDw8IDkpCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX1RfUEtUX0VSUk9SX0xBU1QgXAoJUlhfUEtUX0NNUExfRVJST1JTX1RfUEtUX0VSUk9SX1RfTDNfQkFEX1RUTAojZGVmaW5lIFJYX1BLVF9DTVBMX0VSUk9SU19QS1RfRVJST1JfTUFTSyAgICAgICAgICAgICAgICAgMHhmMDAwVUwKI2RlZmluZSBSWF9QS1RfQ01QTF9FUlJPUlNfUEtUX0VSUk9SX1NGVCAgICAgICAgICAgICAgICAgIDEyCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX1BLVF9FUlJPUl9OT19FUlJPUiAgICAgICAgICAgICAoMHgwVUwgPDwgMTIpCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX1BLVF9FUlJPUl9MM19CQURfVkVSU0lPTiAgICAgICAoMHgxVUwgPDwgMTIpCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX1BLVF9FUlJPUl9MM19CQURfSERSX0xFTiAgICAgICAoMHgyVUwgPDwgMTIpCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX1BLVF9FUlJPUl9MM19CQURfVFRMICAgICAgICAgICAoMHgzVUwgPDwgMTIpCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX1BLVF9FUlJPUl9JUF9UT1RBTF9FUlJPUiAgICAgICAoMHg0VUwgPDwgMTIpCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX1BLVF9FUlJPUl9VRFBfVE9UQUxfRVJST1IgICAgICAgICAgKDB4NVVMIDw8IDEyKQojZGVmaW5lIFJYX1BLVF9DTVBMX0VSUk9SU19QS1RfRVJST1JfTDRfQkFEX0hEUl9MRU4gICAgICAgICAgICgweDZVTCA8PCAxMikKI2RlZmluZSBSWF9QS1RfQ01QTF9FUlJPUlNfUEtUX0VSUk9SX0w0X0JBRF9IRFJfTEVOX1RPT19TTUFMTCAoMHg3VUwgPDwgMTIpCiNkZWZpbmUgUlhfUEtUX0NNUExfRVJST1JTX1BLVF9FUlJPUl9MNF9CQURfT1BUX0xFTiAgICAgICAgICAgKDB4OFVMIDw8IDEyKQojZGVmaW5lIFJYX1BLVF9DTVBMX0VSUk9SU19QS1RfRVJST1JfTEFTVCBcCglSWF9QS1RfQ01QTF9FUlJPUlNfUEtUX0VSUk9SX0w0X0JBRF9PUFRfTEVOCgl1MTYgY2ZhX2NvZGU7Cgl1MzIgcmVvcmRlcjsKI2RlZmluZSBSWF9QS1RfQ01QTF9SRU9SREVSX01BU0sgMHhmZmZmZmZVTAojZGVmaW5lIFJYX1BLVF9DTVBMX1JFT1JERVJfU0ZUICAwCn07CgpzdHJ1Y3QgcnhfcHJvZF9wa3RfYmQgewoJdTE2ICBmbGFnc190eXBlOwojZGVmaW5lIFJYX1BST0RfUEtUX0JEX1RZUEVfTUFTSyAgICAgICAgICAweDNmVUwKI2RlZmluZSBSWF9QUk9EX1BLVF9CRF9UWVBFX1NGVCAgICAgICAgICAgMAojZGVmaW5lIFJYX1BST0RfUEtUX0JEX1RZUEVfUlhfUFJPRF9QS1QgICAweDRVTAojZGVmaW5lIFJYX1BST0RfUEtUX0JEX1RZUEVfTEFTVCAgICAgICAgICBSWF9QUk9EX1BLVF9CRF9UWVBFX1JYX1BST0RfUEtUCiNkZWZpbmUgUlhfUFJPRF9QS1RfQkRfRkxBR1NfTUFTSyAgICAgICAgIDB4ZmZjMFVMCiNkZWZpbmUgUlhfUFJPRF9QS1RfQkRfRkxBR1NfU0ZUICAgICAgICAgIDYKI2RlZmluZSBSWF9QUk9EX1BLVF9CRF9GTEFHU19TT1BfUEFEICAgICAgMHg0MFVMCiNkZWZpbmUgUlhfUFJPRF9QS1RfQkRfRkxBR1NfRU9QX1BBRCAgICAgIDB4ODBVTAojZGVmaW5lIFJYX1BST0RfUEtUX0JEX0ZMQUdTX0JVRkZFUlNfTUFTSyAweDMwMFVMCiNkZWZpbmUgUlhfUFJPRF9QS1RfQkRfRkxBR1NfQlVGRkVSU19TRlQgIDgKCXUxNiAgbGVuOwoJdTMyICBvcGFxdWU7Cgl1bmlvbiBkbWFfYWRkcjY0X3QgZG1hOwp9OwoKc3RydWN0IHJ4X2luZm8gewoJdm9pZCAgICAgICAgICAgICAgKmJkX3ZpcnQ7CglzdHJ1Y3QgaW9fYnVmZmVyICAqaW9iW05VTV9SWF9CVUZGRVJTXTsKCXUxNiAgICAgICAgICAgICAgIGlvYl9jbnQ7Cgl1MTYgICAgICAgICAgICAgICBidWZfY250OyAgLyogVG90YWwgUnggYnVmZmVyIGRlc2NyaXB0b3JzLiAqLwoJdTE2ICAgICAgICAgICAgICAgcmluZ19jbnQ7Cgl1MTYgICAgICAgICAgICAgICBjb25zX2lkOyAgLyogTGFzdCBwcm9jZXNzZWQgY29uc3VtZXIgaW5kZXguICovCi8qIFJlY2VpdmUgc3RhdGlzdGljcy4gKi8KCXUzMiAgICAgICAgICAgICAgIGNudDsKCXUzMiAgICAgICAgICAgICAgIGdvb2Q7Cgl1MzIgICAgICAgICAgICAgICBkcm9wX2VycjsKCXUzMiAgICAgICAgICAgICAgIGRyb3BfbGI7Cgl1MzIgICAgICAgICAgICAgICBkcm9wX3ZsYW47Cn07CgojZGVmaW5lIFZBTElEX0RSSVZFUl9SRUcgICAgICAgICAgMHgwMDAxCiNkZWZpbmUgVkFMSURfU1RBVF9DVFggICAgICAgICAgICAweDAwMDIKI2RlZmluZSBWQUxJRF9SSU5HX0NRICAgICAgICAgICAgIDB4MDAwNAojZGVmaW5lIFZBTElEX1JJTkdfVFggICAgICAgICAgICAgMHgwMDA4CiNkZWZpbmUgVkFMSURfUklOR19SWCAgICAgICAgICAgICAweDAwMTAKI2RlZmluZSBWQUxJRF9SSU5HX0dSUCAgICAgICAgICAgIDB4MDAyMAojZGVmaW5lIFZBTElEX1ZOSUNfSUQgICAgICAgICAgICAgMHgwMDQwCiNkZWZpbmUgVkFMSURfUlhfSU9CICAgICAgICAgICAgICAweDAwODAKI2RlZmluZSBWQUxJRF9MMl9GSUxURVIgICAgICAgICAgIDB4MDEwMAojZGVmaW5lIFZBTElEX1JJTkdfTlEgICAgICAgICAgICAgMHgwMjAwCgpzdHJ1Y3QgYm54dCB7Ci8qIGJlZ2luICJnZW5lcmFsLCBmcmVxdWVudGx5LXVzZWQgbWVtYmVycyIgY2FjaGVsaW5lIHNlY3Rpb24gKi8KLyogSWYgdGhlIElSUSBoYW5kbGVyICh3aGljaCBydW5zIGxvY2tsZXNzKSBuZWVkcyB0byBiZQogKiBxdWllc2NlZCwgdGhlIGZvbGxvd2luZyBiaXRtYXNrIHN0YXRlIGlzIHVzZWQuIFRoZQogKiBTWU5DIGZsYWcgaXMgc2V0IGJ5IG5vbi1JUlEgY29udGV4dCBjb2RlIHRvIGluaXRpYXRlCiAqIHRoZSBxdWllc2NlbmNlLgogKgogKiBXaGVuIHRoZSBJUlEgaGFuZGxlciBub3RpY2VzIHRoYXQgU1lOQyBpcyBzZXQsIGl0CiAqIGRpc2FibGVzIGludGVycnVwdHMgYW5kIHJldHVybnMuCiAqCiAqIFdoZW4gYWxsIG91dHN0YW5kaW5nIElSUSBoYW5kbGVycyBoYXZlIHJldHVybmVkIGFmdGVyCiAqIHRoZSBTWU5DIGZsYWcgaGFzIGJlZW4gc2V0LCB0aGUgc2V0dGVyIGNhbiBiZSBhc3N1cmVkCiAqIHRoYXQgaW50ZXJydXB0cyB3aWxsIG5vIGxvbmdlciBnZXQgcnVuLgogKgogKiBJbiB0aGlzIHdheSBhbGwgU01QIGRyaXZlciBsb2NrcyBhcmUgbmV2ZXIgYWNxdWlyZWQKICogaW4gaHcgSVJRIGNvbnRleHQsIG9ubHkgc3cgSVJRIGNvbnRleHQgb3IgbG93ZXIuCiAqLwoJdW5zaWduZWQgaW50ICAgICAgICAgICAgICBpcnFfc3luYzsKCXN0cnVjdCBuZXRfZGV2aWNlICAgICAgICAgKmRldjsKCXN0cnVjdCBwY2lfZGV2aWNlICAgICAgICAgKnBkZXY7Cgl2b2lkICAgICAgICAgICAgICAgICAgICAgICpod3JtX2FkZHJfcmVxOwoJdm9pZCAgICAgICAgICAgICAgICAgICAgICAqaHdybV9hZGRyX3Jlc3A7Cgl2b2lkICAgICAgICAgICAgICAgICAgICAgICpod3JtX2FkZHJfZG1hOwoJZG1hX2FkZHJfdCAgICAgICAgICAgICAgICByZXFfYWRkcl9tYXBwaW5nOwoJZG1hX2FkZHJfdCAgICAgICAgICAgICAgICByZXNwX2FkZHJfbWFwcGluZzsKCWRtYV9hZGRyX3QgICAgICAgICAgICAgICAgZG1hX2FkZHJfbWFwcGluZzsKCXN0cnVjdCB0eF9pbmZvICAgICAgICAgICAgdHg7IC8qIFR4IGluZm8uICovCglzdHJ1Y3QgcnhfaW5mbyAgICAgICAgICAgIHJ4OyAvKiBSeCBpbmZvLiAqLwoJc3RydWN0IGNtcF9pbmZvICAgICAgICAgICBjcTsgLyogY29tcGxldGlvbiBpbmZvLiAqLwoJc3RydWN0IG5xX2luZm8gICAgICAgICAgICBucTsgLyogY29tcGxldGlvbiBpbmZvLiAqLwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBucV9yaW5nX2lkOwoJdTggICAgICAgICAgICAgICAgICAgICAgICBxdWV1ZV9pZDsKCXU4ICAgICAgICAgICAgICAgICAgICAgICAgdGhvcjsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgbGFzdF9yZXNwX2NvZGU7Cgl1MTYgICAgICAgICAgICAgICAgICAgICAgIHNlcV9pZDsKCXUzMiAgICAgICAgICAgICAgICAgICAgICAgZmxhZ19od3JtOwoJdTMyICAgICAgICAgICAgICAgICAgICAgICBmbGFnczsKLyogUENJIGluZm8uICovCgl1MTYgICAgICAgICAgICAgICAgICAgICAgIHN1YnN5c3RlbV92ZW5kb3I7Cgl1MTYgICAgICAgICAgICAgICAgICAgICAgIHN1YnN5c3RlbV9kZXZpY2U7Cgl1MTYgICAgICAgICAgICAgICAgICAgICAgIGNtZF9yZWc7Cgl1OCAgICAgICAgICAgICAgICAgICAgICAgIHBmX251bTsgIC8qIGFic29sdXRlIFBGIG51bWJlciAqLwoJdTggICAgICAgICAgICAgICAgICAgICAgICB2ZjsKCXZvaWQgICAgICAgICAgICAgICAgICAgICAgKmJhcjA7Cgl2b2lkICAgICAgICAgICAgICAgICAgICAgICpiYXIxOwoJdm9pZCAgICAgICAgICAgICAgICAgICAgICAqYmFyMjsKLyogRGV2aWNlIGluZm8uICovCgl1MTYgICAgICAgICAgICAgICAgICAgICAgIGNoaXBfbnVtOwovKiBjaGlwIG51bToxNi0zMSwgcmV2OjEyLTE1LCBtZXRhbDo0LTExLCBib25kX2lkOjAtMyAqLwoJdTMyICAgICAgICAgICAgICAgICAgICAgICBjaGlwX2lkOwoJdTMyICAgICAgICAgICAgICAgICAgICAgICBod3JtX2NtZF90aW1lb3V0OwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBod3JtX3NwZWNfY29kZTsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgaHdybV9tYXhfcmVxX2xlbjsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgaHdybV9tYXhfZXh0X3JlcV9sZW47Cgl1OCAgICAgICAgICAgICAgICAgICAgICAgIG1hY19hZGRyW0VUSF9BTEVOXTsgLyogSFcgTUFDIGFkZHJlc3MgKi8KCXUxNiAgICAgICAgICAgICAgICAgICAgICAgZmlkOwoJdTggICAgICAgICAgICAgICAgICAgICAgICBwb3J0X2lkeDsKCXU4ICAgICAgICAgICAgICAgICAgICAgICAgb3JkaW5hbF92YWx1ZTsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgbXR1OwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICByaW5nX2dycF9pZDsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgY3FfcmluZ19pZDsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgdHhfcmluZ19pZDsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgcnhfcmluZ19pZDsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9saW5rX3NwZWVkOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBsaW5rX3N0YXR1czsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgd2FpdF9saW5rX3RpbWVvdXQ7Cgl1NjQgICAgICAgICAgICAgICAgICAgICAgIGwyX2ZpbHRlcl9pZDsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgdm5pY19pZDsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgc3RhdF9jdHhfaWQ7Cgl1MTYgICAgICAgICAgICAgICAgICAgICAgIHZsYW5faWQ7Cgl1MTYgICAgICAgICAgICAgICAgICAgICAgIHZsYW5fdHg7Cgl1MzIgICAgICAgICAgICAgICAgICAgICAgIG1iYV9jZmcyOwoJdTMyICAgICAgICAgICAgICAgICAgICAgICBtZWRpdW07Cgl1MTYgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRfc3BlZWRzOwoJdTMyICAgICAgICAgICAgICAgICAgICAgICBsaW5rX3NldDsKCXU4ICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWFfZGV0ZWN0OwoJdTggICAgICAgICAgICAgICAgICAgICAgICByc3ZkOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBtYXhfdmZzOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICB2Zl9yZXNfc3RyYXRlZ3k7Cgl1MTYgICAgICAgICAgICAgICAgICAgICAgIG1pbl92bmljczsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgbWF4X3ZuaWNzOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBtYXhfbXNpeDsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgbWluX2h3X3JpbmdfZ3JwczsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgbWF4X2h3X3JpbmdfZ3JwczsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgbWluX3R4X3JpbmdzOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBtYXhfdHhfcmluZ3M7Cgl1MTYgICAgICAgICAgICAgICAgICAgICAgIG1pbl9yeF9yaW5nczsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgbWF4X3J4X3JpbmdzOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBtaW5fY3BfcmluZ3M7Cgl1MTYgICAgICAgICAgICAgICAgICAgICAgIG1heF9jcF9yaW5nczsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgbWluX3Jzc2Nvc19jdHhzOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBtYXhfcnNzY29zX2N0eHM7Cgl1MTYgICAgICAgICAgICAgICAgICAgICAgIG1pbl9sMl9jdHhzOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBtYXhfbDJfY3R4czsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgbWluX3N0YXRfY3R4czsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgbWF4X3N0YXRfY3R4czsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgbnVtX2NtcGxfcmluZ3M7Cgl1MTYgICAgICAgICAgICAgICAgICAgICAgIG51bV90eF9yaW5nczsKCXUxNiAgICAgICAgICAgICAgICAgICAgICAgbnVtX3J4X3JpbmdzOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBudW1fc3RhdF9jdHhzOwoJdTE2ICAgICAgICAgICAgICAgICAgICAgICBudW1faHdfcmluZ19ncnBzOwp9OwoKLyogZGVmaW5lcyByZXF1aXJlZCB0byByc29sdmUgY2hlY2twYXRjaCBlcnJvcnMgLyB3YXJuaW5ncyAqLwojZGVmaW5lIHRlc3RfaWYgICAgICAgICAgICAgICBpZgojZGVmaW5lIHdyaXRlMzIgICAgICAgICAgICAgICB3cml0ZWwKI2RlZmluZSB3cml0ZTY0ICAgICAgICAgICAgICAgd3JpdGVxCiNkZWZpbmUgcGNpX3JlYWRfYnl0ZSAgICAgICAgIHBjaV9yZWFkX2NvbmZpZ19ieXRlCiNkZWZpbmUgcGNpX3JlYWRfd29yZDE2ICAgICAgIHBjaV9yZWFkX2NvbmZpZ193b3JkCiNkZWZpbmUgcGNpX3dyaXRlX3dvcmQgICAgICAgIHBjaV93cml0ZV9jb25maWdfd29yZAojZGVmaW5lIFNIT1JUX0NNRF9TVVBQT1JURUQgICBWRVJfR0VUX1JFU1BfREVWX0NBUFNfQ0ZHX1NIT1JUX0NNRF9TVVBQT1JURUQKI2RlZmluZSBTSE9SVF9DTURfUkVRVUlSRUQgICAgVkVSX0dFVF9SRVNQX0RFVl9DQVBTX0NGR19TSE9SVF9DTURfUkVRVUlSRUQKI2RlZmluZSBDUV9ET09SQkVMTF9LRVlfTUFTSyhhKSAoXAoJQ01QTF9ET09SQkVMTF9LRVlfQ01QTCB8IFwKCUNNUExfRE9PUkJFTExfSURYX1ZBTElEIHwgXAoJQ01QTF9ET09SQkVMTF9NQVNLIHwgXAoJKHUzMikoYSkpCiNkZWZpbmUgQ1FfRE9PUkJFTExfS0VZX0lEWChhKSAoXAoJQ01QTF9ET09SQkVMTF9LRVlfQ01QTCB8IFwKCUNNUExfRE9PUkJFTExfSURYX1ZBTElEIHwgXAoJKHUzMikoYSkpCiNkZWZpbmUgVFhfQkRfRkxBR1MgKFwKCVRYX0JEX1NIT1JUX1RZUEVfVFhfQkRfU0hPUlQgfFwKCVRYX0JEX1NIT1JUX0ZMQUdTX0NPQUxfTk9XICAgfFwKCVRYX0JEX1NIT1JUX0ZMQUdTX1BBQ0tFVF9FTkQgfFwKCSgxIDw8IFRYX0JEX1NIT1JUX0ZMQUdTX0JEX0NOVF9TRlQpKQojZGVmaW5lIFBPUlRfUEhZX0ZMQUdTIChcCglCTlhUX0ZMQUdfTlBBUl9NT0RFIHwgXAoJQk5YVF9GTEFHX01VTFRJX0hPU1QpCiNkZWZpbmUgUklOR19GUkVFKGJwLCByaWQsIGZsYWcpIGJueHRfaHdybV9yaW5nX2ZyZWUoYnAsIHJpZCwgZmxhZykKI2RlZmluZSBTRVRfTElOSyhwLCBtLCBzKSAoKHAgJiAobSA+PiBzKSkgPDwgcykKI2RlZmluZSBTRVRfTUJBKHAsIG0sIHMpICAoKHAgJiAobSA+PiBzKSkgPDwgcykKI2RlZmluZSBTUEVFRF9EUlZfTUFTSyAgICBMSU5LX1NQRUVEX0RSVl9NQVNLCiNkZWZpbmUgU1BFRURfRFJWX1NISUZUICAgTElOS19TUEVFRF9EUlZfU0hJRlQKI2RlZmluZSBTUEVFRF9GV19NQVNLICAgICBMSU5LX1NQRUVEX0ZXX01BU0sKI2RlZmluZSBTUEVFRF9GV19TSElGVCAgICBMSU5LX1NQRUVEX0ZXX1NISUZUCiNkZWZpbmUgRDNfU1BFRURfRldfTUFTSyAgRDNfTElOS19TUEVFRF9GV19NQVNLCiNkZWZpbmUgRDNfU1BFRURfRldfU0hJRlQgRDNfTElOS19TUEVFRF9GV19TSElGVAojZGVmaW5lIE1FRElBX0FVVE9fREVURUNUX01BU0sgIFBPUlRfQ0ZHX0xJTktfU0VUVElOR1NfTUVESUFfQVVUT19ERVRFQ1RfTUFTSwojZGVmaW5lIE1FRElBX0FVVE9fREVURUNUX1NISUZUIFBPUlRfQ0ZHX0xJTktfU0VUVElOR1NfTUVESUFfQVVUT19ERVRFQ1RfU0hJRlQKI2RlZmluZSBWTEFOX01BU0sgICAgICAgIEZVTkNfQ0ZHX1BSRV9CT09UX01CQV9WTEFOX01BU0sKI2RlZmluZSBWTEFOX1NISUZUICAgICAgIEZVTkNfQ0ZHX1BSRV9CT09UX01CQV9WTEFOX1NISUZUCiNkZWZpbmUgVkxBTl9WQUxVRV9NQVNLICBGVU5DX0NGR19QUkVfQk9PVF9NQkFfVkxBTl9WQUxVRV9NQVNLCiNkZWZpbmUgVkxBTl9WQUxVRV9TSElGVCBGVU5DX0NGR19QUkVfQk9PVF9NQkFfVkxBTl9WQUxVRV9TSElGVAojZGVmaW5lIFZGX0NGR19FTkFCTEVfRkxBR1MgKFwKCUZVTkNfVkZfQ0ZHX1JFUV9FTkFCTEVTX01UVSB8IFwKCUZVTkNfVkZfQ0ZHX1JFUV9FTkFCTEVTX0dVRVNUX1ZMQU4gfCBcCglGVU5DX1ZGX0NGR19SRVFfRU5BQkxFU19BU1lOQ19FVkVOVF9DUiB8IFwKCUZVTkNfVkZfQ0ZHX1JFUV9FTkFCTEVTX0RGTFRfTUFDX0FERFIpCgojZGVmaW5lIENISVBfTlVNXzU3NTAwICAgICAgIDB4MTc1MAo=