LyogY29udHJvbHZtY29tcGxldGlvbnN0YXR1cy5jCiAqCiAqIENvcHlyaWdodCCpIDIwMTAgLSAyMDEzIFVOSVNZUyBDT1JQT1JBVElPTgogKiBBbGwgUmlnaHRzIFJlc2VydmVkLgogKgogKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQKICogeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CiAqIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIE9SIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLCBHT09EIFRJVExFIG9yCiAqIE5PTiBJTkZSSU5HRU1FTlQuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlCiAqIGRldGFpbHMuCiAqLwoKLyogIERlZmluZXMgZm9yIGFsbCB2YWxpZCB2YWx1ZXMgcmV0dXJuZWQgaW4gdGhlIHJlc3BvbnNlIG1lc3NhZ2UgaGVhZGVyCiAqICBjb21wbGV0aW9uU3RhdHVzIGZpZWxkLiAgU2VlIGNvbnRyb2x2bWNoYW5uZWwuaCBmb3IgZGVzY3JpcHRpb24gb2YKICogIHRoZSBoZWFkZXI6IF9DT05UUk9MVk1fTUVTU0FHRV9IRUFERVIuCiAqLwoKI2lmbmRlZiBfX0NPTlRST0xWTUNPTVBMRVRJT05TVEFUVVNfSF9fCiNkZWZpbmUgX19DT05UUk9MVk1DT01QTEVUSU9OU1RBVFVTX0hfXwoKLyogR2VuZXJhbCBFcnJvcnMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1bMC05OV0gKi8KI2RlZmluZSBDT05UUk9MVk1fUkVTUF9TVUNDRVNTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKI2RlZmluZSBDT05UUk9MVk1fUkVTUF9FUlJPUl9BTFJFQURZX0RPTkUgICAgICAgICAgICAgICAgICAgICAgIDEKI2RlZmluZSBDT05UUk9MVk1fUkVTUF9FUlJPUl9JT1JFTUFQX0ZBSUxFRCAgICAgICAgICAgICAgICAgICAgIDIKI2RlZmluZSBDT05UUk9MVk1fUkVTUF9FUlJPUl9LTUFMTE9DX0ZBSUxFRCAgICAgICAgICAgICAgICAgICAgIDMKI2RlZmluZSBDT05UUk9MVk1fUkVTUF9FUlJPUl9NRVNTQUdFX0lEX1VOS05PV04gICAgICAgICAgICAgICAgIDQKI2RlZmluZSBDT05UUk9MVk1fUkVTUF9FUlJPUl9NRVNTQUdFX0lEX0lOVkFMSURfRk9SX0NMSUVOVCAgICAgIDUKCi8qIENPTlRST0xWTV9JTklUX0NISVBTRVQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tWzEwMC0xOTldICovCiNkZWZpbmUgQ09OVFJPTFZNX1JFU1BfRVJST1JfQ0xJRU5UX1NXSVRDSENPVU5UX05PTlpFUk8gICAgICAgICAxMDAKI2RlZmluZSBDT05UUk9MVk1fUkVTUF9FUlJPUl9FWFBFQ1RFRF9DSElQU0VUX0lOSVQgICAgICAgICAgICAgIDEwMQoKLyogTWF4aW11bSBMaW1pdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1bMjAwLTI5OV0gKi8KI2RlZmluZSBDT05UUk9MVk1fUkVTUF9FUlJPUl9NQVhfQlVTRVMJCTIwMQkvKiBCVVNfQ1JFQVRFICovCiNkZWZpbmUgQ09OVFJPTFZNX1JFU1BfRVJST1JfTUFYX0RFVklDRVMgICAgICAgIDIwMgkvKiBERVZJQ0VfQ1JFQVRFICovCi8qIFBheWxvYWQgYW5kIFBhcmFtZXRlciBSZWxhdGVkLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tWzQwMC00OTldICovCiNkZWZpbmUgQ09OVFJPTFZNX1JFU1BfRVJST1JfUEFZTE9BRF9JTlZBTElECTQwMAkvKiBTV0lUQ0hfQVRUQUNIRVhUUE9SVCwKCQkJCQkJCSAqIERFVklDRV9DT05GSUdVUkUgKi8KI2RlZmluZSBDT05UUk9MVk1fUkVTUF9FUlJPUl9JTklUSUFUT1JfUEFSQU1FVEVSX0lOVkFMSUQgNDAxCS8qIE11bHRpcGxlICovCiNkZWZpbmUgQ09OVFJPTFZNX1JFU1BfRVJST1JfVEFSR0VUX1BBUkFNRVRFUl9JTlZBTElEIDQwMiAvKiBERVZJQ0VfQ09ORklHVVJFICovCiNkZWZpbmUgQ09OVFJPTFZNX1JFU1BfRVJST1JfQ0xJRU5UX1BBUkFNRVRFUl9JTlZBTElEIDQwMyAvKiBERVZJQ0VfQ09ORklHVVJFICovCi8qIFNwZWNpZmllZFtQYWNrZXQgU3RydWN0dXJlXSBWYWx1ZS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1bNTAwLTU5OV0gKi8KI2RlZmluZSBDT05UUk9MVk1fUkVTUF9FUlJPUl9CVVNfSU5WQUxJRAk1MDAJLyogU1dJVENIX0FUVEFDSElOVFBPUlQsCgkJCQkJCQkgKiBCVVNfQ09ORklHVVJFLAoJCQkJCQkJICogREVWSUNFX0NSRUFURSwKCQkJCQkJCSAqIERFVklDRV9DT05GSUcKCQkJCQkJCSAqIERFVklDRV9ERVNUUk9ZICovCiNkZWZpbmUgQ09OVFJPTFZNX1JFU1BfRVJST1JfREVWSUNFX0lOVkFMSUQJNTAxIC8qIFNXSVRDSF9BVFRBQ0hJTlRQT1JUICovCgkJCQkJCSAgICAvKiBERVZJQ0VfQ1JFQVRFLAoJCQkJCQkgICAgICogREVWSUNFX0NPTkZJR1VSRSwKCQkJCQkJICAgICAqIERFVklDRV9ERVNUUk9ZICovCiNkZWZpbmUgQ09OVFJPTFZNX1JFU1BfRVJST1JfQ0hBTk5FTF9JTlZBTElECTUwMiAvKiBERVZJQ0VfQ1JFQVRFLAoJCQkJCQkgICAgICogREVWSUNFX0NPTkZJR1VSRSAqLwovKiBQYXJ0aXRpb24gRHJpdmVyIENhbGxiYWNrIEludGVyZmFjZS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1bNjAwLTY5OV0gKi8KI2RlZmluZSBDT05UUk9MVk1fUkVTUF9FUlJPUl9WSVJUUENJX0RSSVZFUl9GQUlMVVJFIDYwNAkvKiBCVVNfQ1JFQVRFLAoJCQkJCQkJICogQlVTX0RFU1RST1ksCgkJCQkJCQkgKiBERVZJQ0VfQ1JFQVRFLAoJCQkJCQkJICogREVWSUNFX0RFU1RST1kgKi8KLyogVW5hYmxlIHRvIGludm9rZSBWSVJUUENJIGNhbGxiYWNrICovCiNkZWZpbmUgQ09OVFJPTFZNX1JFU1BfRVJST1JfVklSVFBDSV9EUklWRVJfQ0FMTEJBQ0tfRVJST1IgNjA1IC8qIEJVU19DUkVBVEUsCgkJCQkJCQkJKiBCVVNfREVTVFJPWSwKCQkJCQkJCQkqIERFVklDRV9DUkVBVEUsCgkJCQkJCQkJKiBERVZJQ0VfREVTVFJPWSAqLwovKiBWSVJUUENJIENhbGxiYWNrIHJldHVybmVkIGVycm9yICovCiNkZWZpbmUgQ09OVFJPTFZNX1JFU1BfRVJST1JfR0VORVJJQ19EUklWRVJfQ0FMTEJBQ0tfRVJST1IgNjA2IC8qIFNXSVRDSF9BVFRBQ0hFWFRQT1JULAoJCQkJCQkJCSogU1dJVENIX0RFVEFDSEVYVFBPUlQKCQkJCQkJCQkqIERFVklDRV9DT05GSUdVUkUgKi8KCi8qIGdlbmVyaWMgZGV2aWNlIGNhbGxiYWNrIHJldHVybmVkIGVycm9yICovCi8qIEJ1cyBSZWxhdGVkLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tWzcwMC03OTldICovCiNkZWZpbmUgQ09OVFJPTFZNX1JFU1BfRVJST1JfQlVTX0RFVklDRV9BVFRBQ0hFRCA3MDAJLyogQlVTX0RFU1RST1kgKi8KLyogQ2hhbm5lbCBSZWxhdGVkLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1bODAwLTg5OV0gKi8KI2RlZmluZSBDT05UUk9MVk1fUkVTUF9FUlJPUl9DSEFOTkVMX1RZUEVfVU5LTk9XTiA4MDAJLyogR0VUX0NIQU5ORUxJTkZPLAoJCQkJCQkJICogREVWSUNFX0RFU1RST1kgKi8KI2RlZmluZSBDT05UUk9MVk1fUkVTUF9FUlJPUl9DSEFOTkVMX1NJWkVfVE9PX1NNQUxMIDgwMQkvKiBERVZJQ0VfQ1JFQVRFICovCi8qIENoaXBzZXQgU2h1dGRvd24gUmVsYXRlZC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVsxMDAwLTEwOTldICovCiNkZWZpbmUgQ09OVFJPTFZNX1JFU1BfRVJST1JfQ0hJUFNFVF9TSFVURE9XTl9GQUlMRUQgICAgICAgICAgICAxMDAwCiNkZWZpbmUgQ09OVFJPTFZNX1JFU1BfRVJST1JfQ0hJUFNFVF9TSFVURE9XTl9BTFJFQURZX0FDVElWRSAgICAxMDAxCgovKiBDaGlwc2V0IFN0b3AgUmVsYXRlZC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1bMTEwMC0xMTk5XSAqLwojZGVmaW5lIENPTlRST0xWTV9SRVNQX0VSUk9SX0NISVBTRVRfU1RPUF9GQUlMRURfQlVTICAgICAgICAgICAgMTEwMAojZGVmaW5lIENPTlRST0xWTV9SRVNQX0VSUk9SX0NISVBTRVRfU1RPUF9GQUlMRURfU1dJVENIICAgICAgICAgMTEwMQoKLyogRGV2aWNlIFJlbGF0ZWQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tWzE0MDAtMTQ5OV0gKi8KI2RlZmluZSBDT05UUk9MVk1fUkVTUF9FUlJPUl9ERVZJQ0VfVURFVl9USU1FT1VUICAgICAgICAgICAgICAgIDE0MDAKCiNlbmRpZiAvKiBfX0NPTlRST0xWTUNPTVBMRVRJT05TVEFUVVNfSF9fIG5vdCBkZWZpbmVkICovCg==