ZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKaW5kZXggNTI4YTUzNi4uZmVkNDVmNyAxMDA2NDQKLS0tIGEvTUFJTlRBSU5FUlMKKysrIGIvTUFJTlRBSU5FUlMKQEAgLTU4LDYgKzU4LDEwIEBACiAKIAlFU1RFRU0xOTJFCQlNUEM4eHgKIAorSm9lIEQnQWJicmFjY2lvIDxsamQwMTVAZnJlZXNjYWxlLmNvbT4KKworCU1QQzgzN3hFUkRCCQlNUEM4Mzd4CisKIEvhcmkgRGF27fBzc29uIDxrZEBmbGFnYS5pcz4KIAogCUZMQUdBRE0JCQlNUEM4MjMKZGlmZiAtLWdpdCBhL01BS0VBTEwgYi9NQUtFQUxMCmluZGV4IGVmZDQ0NDQuLjhlNjcxM2UgMTAwNzU1Ci0tLSBhL01BS0VBTEwKKysrIGIvTUFLRUFMTApAQCAtMzIxLDYgKzMyMSw3IEBACiAJTVBDODM2MEVSREtfMzMJXAogCU1QQzgzNjBFUkRLXzY2CVwKIAlNUEM4MzdYRU1EUwlcCisJTVBDODM3WEVSREIJXAogCXNiYzgzNDkJCVwKIAlUUU04MzR4CQlcCiAiCmRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCmluZGV4IDhiZTBkZmEuLjFiM2QyZTYgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlCisrKyBiL01ha2VmaWxlCkBAIC0xOTcxLDYgKzE5NzEsOSBAQAogCWZpIDsKIAlAJChNS0NPTkZJRykgLWEgTVBDODM3WEVNRFMgcHBjIG1wYzgzeHggbXBjODM3eGVtZHMgZnJlZXNjYWxlCiAKK01QQzgzN1hFUkRCX2NvbmZpZzoJdW5jb25maWcKKwlAJChNS0NPTkZJRykgLWEgTVBDODM3WEVSREIgcHBjIG1wYzgzeHggbXBjODM3eGVyZGIgZnJlZXNjYWxlCisKIHNiYzgzNDlfY29uZmlnOgkJdW5jb25maWcKIAlAJChNS0NPTkZJRykgJChAOl9jb25maWc9KSBwcGMgbXBjODN4eCBzYmM4MzQ5CiAKZGlmZiAtLWdpdCBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4Mzd4ZXJkYi9NYWtlZmlsZSBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM4Mzd4ZXJkYi9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZWM3YTg3Ci0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvZnJlZXNjYWxlL21wYzgzN3hlcmRiL01ha2VmaWxlCkBAIC0wLDAgKzEsNTAgQEAKKyMKKyMgKEMpIENvcHlyaWdodCAyMDA2CisjIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCisjCisjIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisjIHByb2plY3QuCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyMgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisjIE1BIDAyMTExLTEzMDcgVVNBCisjCisKK2luY2x1ZGUgJChUT1BESVIpL2NvbmZpZy5taworCitMSUIJPSAkKG9iailsaWIkKEJPQVJEKS5hCisKK0NPQkpTCTo9ICQoQk9BUkQpLm8gcGNpLm8KKworU1JDUwk6PSAkKFNPQkpTOi5vPS5TKSAkKENPQkpTOi5vPS5jKQorT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChDT0JKUykpCitTT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChTT0JKUykpCisKKyQoTElCKToJJChvYmopLmRlcGVuZCAkKE9CSlMpCisJJChBUikgJChBUkZMQUdTKSAkQCAkKE9CSlMpCisKK2NsZWFuOgorCXJtIC1mICQoU09CSlMpICQoT0JKUykKKworZGlzdGNsZWFuOgljbGVhbgorCXJtIC1mICQoTElCKSBjb3JlICouYmFrIC5kZXBlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIGRlZmluZXMgJChvYmopLmRlcGVuZCB0YXJnZXQKK2luY2x1ZGUgJChTUkNUUkVFKS9ydWxlcy5taworCitzaW5jbHVkZSAkKG9iaikuZGVwZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4Mzd4ZXJkYi9jb25maWcubWsgYi9ib2FyZC9mcmVlc2NhbGUvbXBjODM3eGVyZGIvY29uZmlnLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2NzVmODEKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC9mcmVlc2NhbGUvbXBjODM3eGVyZGIvY29uZmlnLm1rCkBAIC0wLDAgKzEsMjggQEAKKyMKKyMgKEMpIENvcHlyaWdodCAyMDA2CisjIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCisjCisjIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisjIHByb2plY3QuCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyMgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisjIE1BIDAyMTExLTEzMDcgVVNBCisjCisKKyMKKyMgTVBDODM3eEVSREIKKyMKKworVEVYVF9CQVNFID0gMHhGRTAwMDAwMApkaWZmIC0tZ2l0IGEvYm9hcmQvZnJlZXNjYWxlL21wYzgzN3hlcmRiL21wYzgzN3hlcmRiLmMgYi9ib2FyZC9mcmVlc2NhbGUvbXBjODM3eGVyZGIvbXBjODM3eGVyZGIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDQyNTk1Ci0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvZnJlZXNjYWxlL21wYzgzN3hlcmRiL21wYzgzN3hlcmRiLmMKQEAgLTAsMCArMSwxNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAqIEtldmluIExhbSA8a2V2aW4ubGFtQGZyZWVzY2FsZS5jb20+CisgKiBKb2UgRCdBYmJyYWNjaW8gPGpvZS5kJ2FiYnJhY2Npb0BmcmVlc2NhbGUuY29tPgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKi8KKworI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPGkyYy5oPgorI2luY2x1ZGUgPHNwZC5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgorI2lmIGRlZmluZWQoQ09ORklHX1NQRF9FRVBST00pCisjaW5jbHVkZSA8c3BkX3NkcmFtLmg+CisjZW5kaWYKKworI2lmIGRlZmluZWQoQ0ZHX0RSQU1fVEVTVCkKK2ludAordGVzdGRyYW0odm9pZCkKK3sKKwl1aW50ICpwc3RhcnQgPSAodWludCAqKSBDRkdfTUVNVEVTVF9TVEFSVDsKKwl1aW50ICpwZW5kID0gKHVpbnQgKikgQ0ZHX01FTVRFU1RfRU5EOworCXVpbnQgKnA7CisKKwlwcmludGYoIlRlc3RpbmcgRFJBTSBmcm9tIDB4JTA4eCB0byAweCUwOHhcbiIsCisJICAgICAgIENGR19NRU1URVNUX1NUQVJULAorCSAgICAgICBDRkdfTUVNVEVTVF9FTkQpOworCisJcHJpbnRmKCJEUkFNIHRlc3QgcGhhc2UgMTpcbiIpOworCWZvciAocCA9IHBzdGFydDsgcCA8IHBlbmQ7IHArKykKKwkJKnAgPSAweGFhYWFhYWFhOworCisJZm9yIChwID0gcHN0YXJ0OyBwIDwgcGVuZDsgcCsrKSB7CisJCWlmICgqcCAhPSAweGFhYWFhYWFhKSB7CisJCQlwcmludGYoIkRSQU0gdGVzdCBmYWlscyBhdDogJTA4eFxuIiwgKHVpbnQpIHApOworCQkJcmV0dXJuIDE7CisJCX0KKwl9CisKKwlwcmludGYoIkRSQU0gdGVzdCBwaGFzZSAyOlxuIik7CisJZm9yIChwID0gcHN0YXJ0OyBwIDwgcGVuZDsgcCsrKQorCQkqcCA9IDB4NTU1NTU1NTU7CisKKwlmb3IgKHAgPSBwc3RhcnQ7IHAgPCBwZW5kOyBwKyspIHsKKwkJaWYgKCpwICE9IDB4NTU1NTU1NTUpIHsKKwkJCXByaW50ZigiRFJBTSB0ZXN0IGZhaWxzIGF0OiAlMDh4XG4iLCAodWludCkgcCk7CisJCQlyZXR1cm4gMTsKKwkJfQorCX0KKworCXByaW50ZigiRFJBTSB0ZXN0IHBhc3NlZC5cbiIpOworCXJldHVybiAwOworfQorI2VuZGlmCisKK2ludCBib2FyZF9lYXJseV9pbml0X2Yodm9pZCkKK3sKKwlyZXR1cm4gMDsKK30KKworI2lmIGRlZmluZWQoQ09ORklHX0REUl9FQ0MpICYmICFkZWZpbmVkKENPTkZJR19FQ0NfSU5JVF9WSUFfRERSQykKK3ZvaWQgZGRyX2VuYWJsZV9lY2ModW5zaWduZWQgaW50IGRyYW1fc2l6ZSk7CisjZW5kaWYKK2ludCBmaXhlZF9zZHJhbSh2b2lkKTsKKworbG9uZyBpbnQgaW5pdGRyYW0oaW50IGJvYXJkX3R5cGUpCit7CisJaW1tYXBfdCAqaW0gPSAoaW1tYXBfdCAqKSBDRkdfSU1NUjsKKwl1MzIgbXNpemUgPSAwOworCisJaWYgKChpbS0+c3lzY29uZi5pbW1yYmFyICYgSU1NUkJBUl9CQVNFX0FERFIpICE9ICh1MzIpIGltKQorCQlyZXR1cm4gLTE7CisKKyNpZiBkZWZpbmVkKENPTkZJR19TUERfRUVQUk9NKQorCW1zaXplID0gc3BkX3NkcmFtKCk7CisjZWxzZQorCW1zaXplID0gZml4ZWRfc2RyYW0oKTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZChDT05GSUdfRERSX0VDQykgJiYgIWRlZmluZWQoQ09ORklHX0VDQ19JTklUX1ZJQV9ERFJDKQorCS8qIEluaXRpYWxpemUgRERSIEVDQyBieXRlICovCisJZGRyX2VuYWJsZV9lY2MobXNpemUgKiAxMDI0ICogMTAyNCk7CisjZW5kaWYKKwkvKiByZXR1cm4gdG90YWwgYnVzIEREUiBzaXplKGJ5dGVzKSAqLworCXJldHVybiAobXNpemUgKiAxMDI0ICogMTAyNCk7Cit9CisKKyNpZiAhZGVmaW5lZChDT05GSUdfU1BEX0VFUFJPTSkKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgZml4ZWQgc2RyYW0gaW5pdCAtLSBkb2Vzbid0IHVzZSBzZXJpYWwgcHJlc2VuY2UgZGV0ZWN0LgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK2ludCBmaXhlZF9zZHJhbSh2b2lkKQoreworCWltbWFwX3QgKmltID0gKGltbWFwX3QgKikgQ0ZHX0lNTVI7CisJdTMyIG1zaXplID0gQ0ZHX0REUl9TSVpFICogMTAyNCAqIDEwMjQ7CisJdTMyIG1zaXplX2xvZzIgPSBfX2lsb2cyKG1zaXplKTsKKworCWltLT5zeXNjb25mLmRkcmxhd1swXS5iYXIgPSBDRkdfRERSX1NEUkFNX0JBU0UgPj4gMTI7CisJaW0tPnN5c2NvbmYuZGRybGF3WzBdLmFyID0gTEJMQVdBUl9FTiB8IChtc2l6ZV9sb2cyIC0gMSk7CisKKwlpbS0+c3lzY29uZi5kZHJjZHIgPSBDRkdfRERSQ0RSX1ZBTFVFOworCXVkZWxheSg1MDAwMCk7CisKKwlpbS0+ZGRyLnNkcmFtX2Nsa19jbnRsID0gQ0ZHX0REUl9TRFJBTV9DTEtfQ05UTDsKKwl1ZGVsYXkoMTAwMCk7CisKKwlpbS0+ZGRyLmNzYm5kc1swXS5jc2JuZHMgPSBDRkdfRERSX0NTMF9CTkRTOworCWltLT5kZHIuY3NfY29uZmlnWzBdID0gQ0ZHX0REUl9DUzBfQ09ORklHOworCXVkZWxheSgxMDAwKTsKKworCWltLT5kZHIudGltaW5nX2NmZ18wID0gQ0ZHX0REUl9USU1JTkdfMDsKKwlpbS0+ZGRyLnRpbWluZ19jZmdfMSA9IENGR19ERFJfVElNSU5HXzE7CisJaW0tPmRkci50aW1pbmdfY2ZnXzIgPSBDRkdfRERSX1RJTUlOR18yOworCWltLT5kZHIudGltaW5nX2NmZ18zID0gQ0ZHX0REUl9USU1JTkdfMzsKKwlpbS0+ZGRyLnNkcmFtX2NmZyA9IENGR19ERFJfU0RSQU1fQ0ZHOworCWltLT5kZHIuc2RyYW1fY2ZnMiA9IENGR19ERFJfU0RSQU1fQ0ZHMjsKKwlpbS0+ZGRyLnNkcmFtX21vZGUgPSBDRkdfRERSX01PREU7CisJaW0tPmRkci5zZHJhbV9tb2RlMiA9IENGR19ERFJfTU9ERTI7CisJaW0tPmRkci5zZHJhbV9pbnRlcnZhbCA9IENGR19ERFJfSU5URVJWQUw7CisJc3luYygpOworCXVkZWxheSgxMDAwKTsKKworCWltLT5kZHIuc2RyYW1fY2ZnIHw9IFNEUkFNX0NGR19NRU1fRU47CisJdWRlbGF5KDIwMDApOworCXJldHVybiBDRkdfRERSX1NJWkU7Cit9CisjZW5kaWYJLyohQ0ZHX1NQRF9FRVBST00gKi8KKworaW50IGNoZWNrYm9hcmQodm9pZCkKK3sKKwlwdXRzKCJCb2FyZDogRnJlZXNjYWxlIE1QQzgzN3hFUkRCXG4iKTsKKwlyZXR1cm4gMDsKK30KKworI2lmIGRlZmluZWQoQ09ORklHX09GX0JPQVJEX1NFVFVQKQorCit2b2lkIGZ0X2JvYXJkX3NldHVwKHZvaWQgKmJsb2IsIGJkX3QgKmJkKQoreworI2lmZGVmIENPTkZJR19QQ0kKKwlmdF9wY2lfc2V0dXAoYmxvYiwgYmQpOworI2VuZGlmCisJZnRfY3B1X3NldHVwKGJsb2IsIGJkKTsKK30KKyNlbmRpZiAvKiBDT05GSUdfT0ZfQk9BUkRfU0VUVVAgKi8KZGlmZiAtLWdpdCBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4Mzd4ZXJkYi9wY2kuYyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM4Mzd4ZXJkYi9wY2kuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNmU3MzIwCi0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvZnJlZXNjYWxlL21wYzgzN3hlcmRiL3BjaS5jCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxtcGM4M3h4Lmg+CisjaW5jbHVkZSA8cGNpLmg+CisKKyNpZiBkZWZpbmVkKENPTkZJR19QQ0kpCitzdGF0aWMgc3RydWN0IHBjaV9yZWdpb24gcGNpX3JlZ2lvbnNbXSA9IHsKKwl7CisJCWJ1c19zdGFydDogQ0ZHX1BDSV9NRU1fQkFTRSwKKwkJcGh5c19zdGFydDogQ0ZHX1BDSV9NRU1fUEhZUywKKwkJc2l6ZTogQ0ZHX1BDSV9NRU1fU0laRSwKKwkJZmxhZ3M6IFBDSV9SRUdJT05fTUVNIHwgUENJX1JFR0lPTl9QUkVGRVRDSAorCX0sCisJeworCQlidXNfc3RhcnQ6IENGR19QQ0lfTU1JT19CQVNFLAorCQlwaHlzX3N0YXJ0OiBDRkdfUENJX01NSU9fUEhZUywKKwkJc2l6ZTogQ0ZHX1BDSV9NTUlPX1NJWkUsCisJCWZsYWdzOiBQQ0lfUkVHSU9OX01FTQorCX0sCisJeworCQlidXNfc3RhcnQ6IENGR19QQ0lfSU9fQkFTRSwKKwkJcGh5c19zdGFydDogQ0ZHX1BDSV9JT19QSFlTLAorCQlzaXplOiBDRkdfUENJX0lPX1NJWkUsCisJCWZsYWdzOiBQQ0lfUkVHSU9OX0lPCisJfQorfTsKKwordm9pZCBwY2lfaW5pdF9ib2FyZCh2b2lkKQoreworCXZvbGF0aWxlIGltbWFwX3QgKmltbXIgPSAodm9sYXRpbGUgaW1tYXBfdCAqKUNGR19JTU1SOworCXZvbGF0aWxlIGNsazgzeHhfdCAqY2xrID0gKHZvbGF0aWxlIGNsazgzeHhfdCAqKSZpbW1yLT5jbGs7CisJdm9sYXRpbGUgbGF3ODN4eF90ICpwY2lfbGF3ID0gaW1tci0+c3lzY29uZi5wY2lsYXc7CisJc3RydWN0IHBjaV9yZWdpb24gKnJlZ1tdID0geyBwY2lfcmVnaW9ucyB9OworCisJLyogRW5hYmxlIGFsbCA1IFBDSV9DTEtfT1VUUFVUUyAqLworCWNsay0+b2NjciB8PSAweGY4MDAwMDAwOworCXVkZWxheSgyMDAwKTsKKworCS8qIENvbmZpZ3VyZSBQQ0kgTG9jYWwgQWNjZXNzIFdpbmRvd3MgKi8KKwlwY2lfbGF3WzBdLmJhciA9IENGR19QQ0lfTUVNX1BIWVMgJiBMQVdCQVJfQkFSOworCXBjaV9sYXdbMF0uYXIgPSBMQkxBV0FSX0VOIHwgTEJMQVdBUl81MTJNQjsKKworCXBjaV9sYXdbMV0uYmFyID0gQ0ZHX1BDSV9JT19QSFlTICYgTEFXQkFSX0JBUjsKKwlwY2lfbGF3WzFdLmFyID0gTEJMQVdBUl9FTiB8IExCTEFXQVJfMU1COworCisJbXBjODN4eF9wY2lfaW5pdCgxLCByZWcsIDApOworfQorI2VuZGlmCS8qIENPTkZJR19QQ0kgKi8KZGlmZiAtLWdpdCBhL2RvYy9SRUFETUUubXBjODM3eGVyZGIgYi9kb2MvUkVBRE1FLm1wYzgzN3hlcmRiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmMDE5MmEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvUkVBRE1FLm1wYzgzN3hlcmRiCkBAIC0wLDAgKzEsOTggQEAKK0ZyZWVzY2FsZSBNUEM4Mzd4RU1EUyBCb2FyZAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworMS4JQm9hcmQgRGVzY3JpcHRpb24KKworCVRoZSBNUEM4Mzd4RS1SREIgYXJlIHJlZmVyZW5jZSBib2FyZHMgZmVhdHVyaW5nIHRoZSBGcmVlc2NhbGUgTVBDODM3N0UsCisJTVBDODM3OEUsIGFuZCB0aGUgTVBDODM3OUUgcHJvY2Vzc29ycyBpbiBhIE1pbmktSVRYIGZvcm0gZmFjdG9yLgorCisJVGhlIE1QQzgzN3hFLVJEQidzIGhhdmUgdGhlIGZvbGxvd2luZyBjb21tb24gZmVhdHVyZXM6CisKKwlBKSAyNTYtTUJ5dGVzIG9uLWJvYXJkIEREUjIgdW5idWZmZXJlZCBTRFJBTQorCUIpIDgtTWJ5dGVzIE5PUiBGbGFzaAorCUMpIDMyLU1CeXRlcyBOQU5EIEZsYXNoCisJRCkgMSBTZWN1cmUgRGlnaXRhbCBIaWdoIFNwZWVkIENhcmQgKFNESEMpIEludGVyZmFjZQorCUUpIDEgR2lnYWJpdCBFdGhlcm5ldAorCUYpIDUtcG9ydCBFdGhlcm5ldCBzd2l0Y2ggKFZpdGVzc2UgNzM4NSkKKwlHKSAxIDMyLWJpdCwgMy4zIFYsIFBDSSBzbG90CisJSCkgMSAzMi1iaXQsIDMuMyBWLCBNaW5pLVBDSSBzbG90CisJSSkgNC1wb3J0IFVTQiAyLjAgSHViCisJSikgMS1wb3J0IE9URyBVU0IKKwlLKSAyIHNlcmlhbCBwb3J0cyAodG9wIG1haW4gY29uc29sZSkKKwlMKSBvbiBib2FyZCBPc2NpbGxhdG9yOiA2Nk0KKworCVRoZSBNUEM4Mzd4RS1SREIncyBoYXZlIHRoZSBmb2xsb3dpbmcgZGlmZmVyZW5jZXM6CisKKwkJCSAgICBNUEM4Mzc3RS1SREIgICAgTVBDODM3OEUtUkRCICAgIE1QQzgzNzlFLVJEQgorCVNBVEEgY29udHJvbGxlcnMJMgkJMAkJNAorCVBDSS1FeHByZXNzIChtaW5pKQkyCQkyCQkwCisJU0dNSUkgUG9ydHMJCTAJCTIJCTAKKworCisyLglNZW1vcnkgTWFwCisKKzIuMS4JVGhlIG1lbW9yeSBtYXAgc2hvdWxkIGxvb2sgcHJldHR5IG11Y2ggbGlrZSB0aGlzOgorCisJQWRkcmVzcyBSYW5nZQkJCURldmljZQkJCVNpemUJCVBvcnQgU2l6ZQorCQkJCQkJCQkoQnl0ZXMpCQkoQml0cykKKwk9PT09PT09PT09PT09PT09PT09PT09PT09PT0JPT09PT09PT09PT09PT09PT0JPT09PT09PQkJPT09PT09PT09CisJMHgwMDAwXzAwMDAJMHgwZmZmX2ZmZmYJRERSCQkJMjU2TQkJNjQKKwkweDEwMDBfMDAwMAkweDdmZmZfZmZmZglFbXB0eQkJCTEuNzVHCQktCisJMHg4MDAwXzAwMDAJMHg5ZmZmX2ZmZmYJUENJMSBtZW1vcnkgc3BhY2UJNTEyTQkJMzIKKwkweGEwMDBfMDAwMAkweGJmZmZfZmZmZglQQ0kyIG1lbW9yeSBzcGFjZQk1MTJNCQkzMgorCTB4YzIwMF8wMDAwCTB4YzJmZl9mZmZmCVBDSTEgSS9PIHNwYWNlCQkxNk0JCTMyCisJMHhjMzAwXzAwMDAJMHhjM2ZmX2ZmZmYJUENJMiBJL08gc3BhY2UJCTE2TQkJMzIKKwkweGUwMDBfMDAwMAkweGUwMGZfZmZmZglJbnQgTWVtIFJlZyBTcGFjZQkxTQkJLQorCTB4ZTI4MF8wMDAwCTB4ZTQ3Zl9mZmZmCU5BTkQgRmxhc2gJCTMyTQkJOAorCTB4ZmUwMF8wMDAwCTB4ZmU3Zl9mZmZmCU5PUiBGbGFzaCBvbiBDUzAJOE0JCTE2CisKKworMy4gRGVmaW5pdGlvbnMKKworMy4xIEV4cGxhbmF0aW9uIG9mIE5FVyBkZWZpbml0aW9ucyBpbjoKKworCWluY2x1ZGUvY29uZmlncy9NUEM4MzdYRVJEQi5oCisKKyAgICBDT05GSUdfTVBDODNYWAkgICAgTVBDODN4eCBmYW1pbHkgZm9yIGJvdGggTVBDODM0OSBhbmQgTVBDODM2MAorICAgIENPTkZJR19NUEM4MzdYCSAgICBNUEM4Mzd4IHNwZWNpZmljCisgICAgQ09ORklHX01QQzgzN1hFUkRCCSAgICBNUEM4MzdYRU1EUyBib2FyZCBzcGVjaWZpYworCisKKzQuIENvbXBpbGF0aW9uCisKKwlBc3N1bWluZyB5b3UncmUgdXNpbmcgQkFTSCBzaGVsbDoKKworCQlleHBvcnQgQ1JPU1NfQ09NUElMRT15b3VyLWNyb3NzLWNvbXBpbGUtcHJlZml4CisJCWNkIHUtYm9vdAorCQltYWtlIGRpc3RjbGVhbgorCQltYWtlIE1QQzgzN1hFUkRCX2NvbmZpZworCQltYWtlCisKKworNS4gRG93bmxvYWRpbmcgYW5kIEZsYXNoaW5nIEltYWdlcworCis1LjAgRG93bmxvYWQgb3ZlciBzZXJpYWwgbGluZSB1c2luZyBLZXJtaXQ6CisKKwlsb2FkYiAkbG9hZGFkZHIKKwlbRHJvcCB0byBrZXJtaXQ6CisJICAgIF5cYworCSAgICBzZW5kIDx1LWJvb3QtYmluLWltYWdlPgorCSAgICBjCisJXQorCisKKwlPciB2aWEgdGZ0cDoKKworCXRmdHAgJGxvYWRhZGRyIHUtYm9vdC5iaW4KKworNS4xIFJlZmxhc2ggVS1ib290IEltYWdlIHVzaW5nIFUtYm9vdAorCisJdGZ0cCAkbG9hZGFkZHIgdS1ib290LmJpbgorCXByb3RlY3Qgb2ZmIGZlMDAwMDAwIGZlMGZmZmZmCisJZXJhc2UgZmUwMDAwMDAgZmUwZmZmZmYKKwljcC5iICRsb2FkYWRkciBmZTAwMDAwMCAkZmlsZXNpemUKKworCis2LiBBZGRpdGlvbmFsIE5vdGVzOgorCTEpIFRoZSBjb25zb2xlIGlzIGNvbm5lY3RlZCB0byB0aGUgdG9wIFJTLTIzMiBjb25uZWN0b3IgYW5kIHRoZQorCSAgIGJhdWRyYXRlIGZvciBNUEM4MzdYRS1SREIgaXMgMTE1MjAwYnBzLgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL01QQzgzN1hFUkRCLmggYi9pbmNsdWRlL2NvbmZpZ3MvTVBDODM3WEVSREIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGE0ZjI5Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9jb25maWdzL01QQzgzN1hFUkRCLmgKQEAgLTAsMCArMSw1OTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAqIEtldmluIExhbSA8a2V2aW4ubGFtQGZyZWVzY2FsZS5jb20+CisgKiBKb2UgRCdBYmJyYWNjaW8gPGpvZS5kJ2FiYnJhY2Npb0BmcmVlc2NhbGUuY29tPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2lmbmRlZiBfX0NPTkZJR19ICisjZGVmaW5lIF9fQ09ORklHX0gKKworLyoKKyAqIEhpZ2ggTGV2ZWwgQ29uZmlndXJhdGlvbiBPcHRpb25zCisgKi8KKyNkZWZpbmUgQ09ORklHX0UzMDAJCTEgLyogRTMwMCBmYW1pbHkgKi8KKyNkZWZpbmUgQ09ORklHX01QQzgzWFgJCTEgLyogTVBDODNYWCBmYW1pbHkgKi8KKyNkZWZpbmUgQ09ORklHX01QQzgzN1gJCTEgLyogTVBDODM3WCBDUFUgc3BlY2lmaWMgKi8KKyNkZWZpbmUgQ09ORklHX01QQzgzN1hFUkRCCTEKKworI2RlZmluZSBDT05GSUdfUENJCTEKKworLyoKKyAqIFN5c3RlbSBDbG9jayBTZXR1cAorICovCisjaWZkZWYgQ09ORklHX1BDSVNMQVZFCisjZGVmaW5lIENPTkZJR184M1hYX1BDSUNMSwk2NjY2NjY2NyAvKiBpbiBIWiAqLworI2Vsc2UKKyNkZWZpbmUgQ09ORklHXzgzWFhfQ0xLSU4JNjY2NjY2NjcgLyogaW4gSHogKi8KKyNkZWZpbmUgQ09ORklHXzgzWFhfR0VORVJJQ19QQ0kJMQorI2VuZGlmCisKKyNpZm5kZWYgQ09ORklHX1NZU19DTEtfRlJFUQorI2RlZmluZSBDT05GSUdfU1lTX0NMS19GUkVRCUNPTkZJR184M1hYX0NMS0lOCisjZW5kaWYKKworLyoKKyAqIEhhcmR3YXJlIFJlc2V0IENvbmZpZ3VyYXRpb24gV29yZAorICovCisjZGVmaW5lIENGR19IUkNXX0xPVyAoXAorCUhSQ1dMX0xDTF9CVVNfVE9fU0NCX0NMS18xWDEgfFwKKwlIUkNXTF9ERFJfVE9fU0NCX0NMS18xWDEgfFwKKwlIUkNXTF9TVkNPRF9ESVZfMiB8XAorCUhSQ1dMX0NTQl9UT19DTEtJTl81WDEgfFwKKwlIUkNXTF9DT1JFX1RPX0NTQl8yWDEpCisKKyNpZmRlZiBDT05GSUdfUENJU0xBVkUKKyNkZWZpbmUgQ0ZHX0hSQ1dfSElHSCAoXAorCUhSQ1dIX1BDSV9BR0VOVCB8XAorCUhSQ1dIX1BDSTFfQVJCSVRFUl9ESVNBQkxFIHxcCisJSFJDV0hfQ09SRV9FTkFCTEUgfFwKKwlIUkNXSF9GUk9NXzBYRkZGMDAxMDAgfFwKKwlIUkNXSF9CT09UU0VRX0RJU0FCTEUgfFwKKwlIUkNXSF9TV19XQVRDSERPR19ESVNBQkxFIHxcCisJSFJDV0hfUk9NX0xPQ19MT0NBTF8xNkJJVCB8XAorCUhSQ1dIX1JMX0VYVF9MRUdBQ1kgfFwKKwlIUkNXSF9UU0VDMU1fSU5fUkdNSUkgfFwKKwlIUkNXSF9UU0VDMk1fSU5fUkdNSUkgfFwKKwlIUkNXSF9CSUdfRU5ESUFOIHxcCisJSFJDV0hfTERQX0NMRUFSKQorI2Vsc2UKKyNkZWZpbmUgQ0ZHX0hSQ1dfSElHSCAoXAorCUhSQ1dIX1BDSV9IT1NUIHxcCisJSFJDV0hfUENJMV9BUkJJVEVSX0VOQUJMRSB8XAorCUhSQ1dIX0NPUkVfRU5BQkxFIHxcCisJSFJDV0hfRlJPTV8wWDAwMDAwMTAwIHxcCisJSFJDV0hfQk9PVFNFUV9ESVNBQkxFIHxcCisJSFJDV0hfU1dfV0FUQ0hET0dfRElTQUJMRSB8XAorCUhSQ1dIX1JPTV9MT0NfTE9DQUxfMTZCSVQgfFwKKwlIUkNXSF9STF9FWFRfTEVHQUNZIHxcCisJSFJDV0hfVFNFQzFNX0lOX1JHTUlJIHxcCisJSFJDV0hfVFNFQzJNX0lOX1JHTUlJIHxcCisJSFJDV0hfQklHX0VORElBTiB8XAorCUhSQ1dIX0xEUF9DTEVBUikKKyNlbmRpZgorCisvKiBTeXN0ZW0gcGVyZm9ybWFuY2UgLSBkZWZpbmUgdGhlIHZhbHVlIGkuZS4gQ0ZHX1hYWAorKi8KKworLyogQXJiaXRlciBDb25maWd1cmF0aW9uIFJlZ2lzdGVyICovCisjZGVmaW5lIENGR19BQ1JfUElQRV9ERVAJMwkvKiBBcmJpdGVyIHBpcGVsaW5lIGRlcHRoICgwLTMpICovCisjZGVmaW5lIENGR19BQ1JfUlBUQ05UCQkzCS8qIEFyYml0ZXIgcmVwZWF0IGNvdW50ICgwLTcpICovCisKKy8qIFN5c3RlbSBQcmlvcml0eSBDb250cm9sIFJlZ3NpdGVyICovCisjZGVmaW5lIENGR19TUENSX1RTRUNFUAkJMwkvKiBlVFNFQzEmMiBlbWVyZ2VuY3kgcHJpb3JpdHkgKDAtMykgKi8KKworLyogU3lzdGVtIENsb2NrIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgKi8KKyNkZWZpbmUgQ0ZHX1NDQ1JfVFNFQzFDTQkxCQkvKiBlVFNFQzEgY2xvY2sgbW9kZSAoMC0zKSAqLworI2RlZmluZSBDRkdfU0NDUl9UU0VDMkNNCTEJCS8qIGVUU0VDMiBjbG9jayBtb2RlICgwLTMpICovCisjZGVmaW5lIENGR19TQ0NSX1NBVEFDTQkJU0NDUl9TQVRBQ01fMQkvKiBTQVRBMS00IGNsb2NrIG1vZGUgKDAtMykgKi8KKworLyoKKyAqIFN5c3RlbSBJTyBDb25maWcKKyAqLworI2RlZmluZSBDRkdfU0lDUkgJCTB4MDgyMDAwMDAKKyNkZWZpbmUgQ0ZHX1NJQ1JMCQkweDAwMDAwMDAwCisKKy8qCisgKiBPdXRwdXQgQnVmZmVyIEltcGVkYW5jZQorICovCisjZGVmaW5lIENGR19PQklSCQkweDMwMTAwMDAwCisKKy8qCisgKiBJTU1SIG5ldyBhZGRyZXNzCisgKi8KKyNkZWZpbmUgQ0ZHX0lNTVIJCTB4RTAwMDAwMDAKKworLyoKKyAqIEREUiBTZXR1cAorICovCisjZGVmaW5lIENGR19ERFJfQkFTRQkJMHgwMDAwMDAwMCAvKiBERFIgaXMgc3lzdGVtIG1lbW9yeSAqLworI2RlZmluZSBDRkdfU0RSQU1fQkFTRQkJQ0ZHX0REUl9CQVNFCisjZGVmaW5lIENGR19ERFJfU0RSQU1fQkFTRQlDRkdfRERSX0JBU0UKKyNkZWZpbmUgQ0ZHX0REUl9TRFJBTV9DTEtfQ05UTAkweDAzMDAwMDAwCisjZGVmaW5lIENGR184M1hYX0REUl9VU0VTX0NTMAorCisjZGVmaW5lIENGR19ERFJDRFJfVkFMVUUJKEREUkNEUl9ESENfRU4gfCBERFJDRFJfT0RUIHwgRERSQ0RSX1FfRFJOKQorCisjdW5kZWYgQ09ORklHX0REUl9FQ0MJCS8qIHN1cHBvcnQgRERSIEVDQyBmdW5jdGlvbiAqLworI3VuZGVmIENPTkZJR19ERFJfRUNDX0NNRAkvKiBVc2UgRERSIEVDQyB1c2VyIGNvbW1hbmRzICovCisKKyN1bmRlZiBDT05GSUdfTkVWRVJfQVNTRVJUX09EVF9UT19DUFUJLyogTmV2ZXIgYXNzZXJ0IE9EVCB0byBpbnRlcm5hbCBJT3MgKi8KKworLyoKKyAqIE1hbnVhbGx5IHNldCB1cCBERFIgcGFyYW1ldGVycworICovCisjZGVmaW5lIENGR19ERFJfU0laRQkJMjU2CQkvKiBNQiAqLworI2RlZmluZSBDRkdfRERSX0NTMF9CTkRTCTB4MDAwMDAwMGYKKyNkZWZpbmUgQ0ZHX0REUl9DUzBfQ09ORklHCShDU0NPTkZJR19FTiB8IENTQ09ORklHX09EVF9XUl9BQ1MgXAorCQkJCXwgQ1NDT05GSUdfUk9XX0JJVF8xMyB8IENTQ09ORklHX0NPTF9CSVRfMTApCisKKyNkZWZpbmUgQ0ZHX0REUl9USU1JTkdfMwkweDAwMDAwMDAwCisjZGVmaW5lIENGR19ERFJfVElNSU5HXzAJKCgwIDw8IFRJTUlOR19DRkcwX1JXVF9TSElGVCkgXAorCQkJCXwgKDAgPDwgVElNSU5HX0NGRzBfV1JUX1NISUZUKSBcCisJCQkJfCAoMCA8PCBUSU1JTkdfQ0ZHMF9SUlRfU0hJRlQpIFwKKwkJCQl8ICgwIDw8IFRJTUlOR19DRkcwX1dXVF9TSElGVCkgXAorCQkJCXwgKDIgPDwgVElNSU5HX0NGRzBfQUNUX1BEX0VYSVRfU0hJRlQpIFwKKwkJCQl8ICg2IDw8IFRJTUlOR19DRkcwX1BSRV9QRF9FWElUX1NISUZUKSBcCisJCQkJfCAoOCA8PCBUSU1JTkdfQ0ZHMF9PRFRfUERfRVhJVF9TSElGVCkgXAorCQkJCXwgKDIgPDwgVElNSU5HX0NGRzBfTVJTX0NZQ19TSElGVCkpCisJCQkJLyogMHgwMDIyMDgwMiAqLworCQkJCS8qIDB4MDAyNjA4MDIgKi8gLyogRERSNDAwICovCisjZGVmaW5lIENGR19ERFJfVElNSU5HXzEJKCgzIDw8IFRJTUlOR19DRkcxX1BSRVRPQUNUX1NISUZUKSBcCisJCQkJfCAoOSA8PCBUSU1JTkdfQ0ZHMV9BQ1RUT1BSRV9TSElGVCkgXAorCQkJCXwgKDMgPDwgVElNSU5HX0NGRzFfQUNUVE9SV19TSElGVCkgXAorCQkJCXwgKDcgPDwgVElNSU5HX0NGRzFfQ0FTTEFUX1NISUZUKSBcCisJCQkJfCAoMTMgPDwgVElNSU5HX0NGRzFfUkVGUkVDX1NISUZUKSBcCisJCQkJfCAoMyA8PCBUSU1JTkdfQ0ZHMV9XUlJFQ19TSElGVCkgXAorCQkJCXwgKDIgPDwgVElNSU5HX0NGRzFfQUNUVE9BQ1RfU0hJRlQpIFwKKwkJCQl8ICgyIDw8IFRJTUlOR19DRkcxX1dSVE9SRF9TSElGVCkpCisJCQkJLyogMHgzOTM1ZDMyMiAqLworCQkJCS8qIDB4MzkzN2QzMjIgKi8KKyNkZWZpbmUgQ0ZHX0REUl9USU1JTkdfMgkweDAyOTg0Y2M4CisKKyNkZWZpbmUgQ0ZHX0REUl9JTlRFUlZBTAkoKDE1NDUgPDwgU0RSQU1fSU5URVJWQUxfUkVGSU5UX1NISUZUKSBcCisJCQkJfCAoMjU2IDw8IFNEUkFNX0lOVEVSVkFMX0JTVE9QUkVfU0hJRlQpKQorCQkJCS8qIDB4MDYwOTAxMDAgKi8KKworI2lmIGRlZmluZWQoQ09ORklHX0REUl8yVF9USU1JTkcpCisjZGVmaW5lIENGR19ERFJfU0RSQU1fQ0ZHCQkoU0RSQU1fQ0ZHX1NSRU4gXAorCQkJCXwgMyA8PCBTRFJBTV9DRkdfU0RSQU1fVFlQRV9TSElGVCBcCisJCQkJfCBTRFJBTV9DRkdfMlRfRU4gXAorCQkJCXwgU0RSQU1fQ0ZHX0RCV18zMikKKyNlbHNlCisjZGVmaW5lIENGR19ERFJfU0RSQU1fQ0ZHCQkoU0RSQU1fQ0ZHX1NSRU4gXAorCQkJCXwgMyA8PCBTRFJBTV9DRkdfU0RSQU1fVFlQRV9TSElGVCkKKwkJCQkvKiAweDQzMDAwMDAwICovCisjZW5kaWYKKyNkZWZpbmUgQ0ZHX0REUl9TRFJBTV9DRkcyCTB4MDAwMDEwMDAgLyogMSBwb3N0ZWQgcmVmcmVzaCAqLworI2RlZmluZSBDRkdfRERSX01PREUJCSgoMHgwNDQwIDw8IFNEUkFNX01PREVfRVNEX1NISUZUKSBcCisJCQkJfCAoMHgwNDQyIDw8IFNEUkFNX01PREVfU0RfU0hJRlQpKQorCQkJCS8qIDB4MDQ0MDA0NDIgKi8gLyogRERSNDAwICovCisjZGVmaW5lIENGR19ERFJfTU9ERTIJCTB4MDAwMDAwMDA7CisKKy8qCisgKiBNZW1vcnkgdGVzdAorICovCisjdW5kZWYgQ0ZHX0RSQU1fVEVTVAkJLyogbWVtb3J5IHRlc3QsIHRha2VzIHRpbWUgKi8KKyNkZWZpbmUgQ0ZHX01FTVRFU1RfU1RBUlQJMHgwMDA0MDAwMCAvKiBtZW10ZXN0IHJlZ2lvbiAqLworI2RlZmluZSBDRkdfTUVNVEVTVF9FTkQJCTB4MGVmNzAwMTAKKworLyoKKyAqIFRoZSByZXNlcnZlZCBtZW1vcnkKKyAqLworI2RlZmluZSBDRkdfTU9OSVRPUl9CQVNFCVRFWFRfQkFTRSAvKiBzdGFydCBvZiBtb25pdG9yICovCisKKyNpZiAoQ0ZHX01PTklUT1JfQkFTRSA8IENGR19GTEFTSF9CQVNFKQorI2RlZmluZSBDRkdfUkFNQk9PVAorI2Vsc2UKKyN1bmRlZglDRkdfUkFNQk9PVAorI2VuZGlmCisKKyNkZWZpbmUgQ0ZHX01PTklUT1JfTEVOCQkoMjU2ICogMTAyNCkgLyogUmVzZXJ2ZSAyNTYga0IgZm9yIE1vbiAqLworI2RlZmluZSBDRkdfTUFMTE9DX0xFTgkJKDUxMiAqIDEwMjQpIC8qIFJlc2VydmVkIGZvciBtYWxsb2MgKi8KKworLyoKKyAqIEluaXRpYWwgUkFNIEJhc2UgQWRkcmVzcyBTZXR1cAorICovCisjZGVmaW5lIENGR19JTklUX1JBTV9MT0NLCTEKKyNkZWZpbmUgQ0ZHX0lOSVRfUkFNX0FERFIJMHhFNjAwMDAwMCAvKiBJbml0aWFsIFJBTSBhZGRyZXNzICovCisjZGVmaW5lIENGR19JTklUX1JBTV9FTkQJMHgxMDAwIC8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gUkFNICovCisjZGVmaW5lIENGR19HQkxfREFUQV9TSVpFCTB4MTAwIC8qIG51bSBieXRlcyBpbml0aWFsIGRhdGEgKi8KKyNkZWZpbmUgQ0ZHX0dCTF9EQVRBX09GRlNFVAkoQ0ZHX0lOSVRfUkFNX0VORCAtIENGR19HQkxfREFUQV9TSVpFKQorCisvKgorICogTG9jYWwgQnVzIENvbmZpZ3VyYXRpb24gJiBDbG9jayBTZXR1cAorICovCisjZGVmaW5lIENGR19MQ1JSCQkoTENSUl9EQllQIHwgTENSUl9DTEtESVZfOCkKKyNkZWZpbmUgQ0ZHX0xCQ19MQkNSCQkweDAwMDAwMDAwCisKKy8qCisgKiBGTEFTSCBvbiB0aGUgTG9jYWwgQnVzCisgKi8KKyNkZWZpbmUgQ0ZHX0ZMQVNIX0NGSQkJLyogdXNlIHRoZSBDb21tb24gRmxhc2ggSW50ZXJmYWNlICovCisjZGVmaW5lIENGR19GTEFTSF9DRklfRFJJVkVSCS8qIHVzZSB0aGUgQ0ZJIGRyaXZlciAqLworI2RlZmluZSBDRkdfRkxBU0hfQkFTRQkJMHhGRTAwMDAwMCAvKiBGTEFTSCBiYXNlIGFkZHJlc3MgKi8KKyNkZWZpbmUgQ0ZHX0ZMQVNIX1NJWkUJCTggLyogbWF4IEZMQVNIIHNpemUgaXMgMzJNICovCisKKyNkZWZpbmUgQ0ZHX0ZMQVNIX0VNUFRZX0lORk8JCQkvKiBkaXNwbGF5IGVtcHR5IHNlY3RvcnMgKi8KKyNkZWZpbmUgQ0ZHX0ZMQVNIX1VTRV9CVUZGRVJfV1JJVEUJCS8qIGJ1ZmZlciB1cCBtdWx0aXBsZSBieXRlcyAqLworCisjZGVmaW5lIENGR19MQkxBV0JBUjBfUFJFTElNCUNGR19GTEFTSF9CQVNFIC8qIFdpbmRvdyBiYXNlIGF0IGZsYXNoIGJhc2UgKi8KKyNkZWZpbmUgQ0ZHX0xCTEFXQVIwX1BSRUxJTQkweDgwMDAwMDE2CS8qIDggTUIgd2luZG93IHNpemUgKi8KKworI2RlZmluZSBDRkdfQlIwX1BSRUxJTQkJKENGR19GTEFTSF9CQVNFIHwgLyogRmxhc2ggQmFzZSBhZGRyZXNzICovIFwKKwkJCQkoMiA8PCBCUl9QU19TSElGVCkgfCAvKiAxNiBiaXQgcG9ydCBzaXplICovIFwKKwkJCQlCUl9WKSAvKiB2YWxpZCAqLworI2RlZmluZSBDRkdfT1IwX1BSRUxJTQkJKDB4RkY4MDAwMDAJCS8qIDggTUJ5dGUgKi8gXAorCQkJCXwgT1JfR1BDTV9YQUNTIFwKKwkJCQl8IE9SX0dQQ01fU0NZXzkgXAorCQkJCXwgT1JfR1BDTV9FSFRSIFwKKwkJCQl8IE9SX0dQQ01fRUFEKQorCQkJCS8qIDB4RkY4MDZGRjcJVE9ETyBTTE9XIDggTUIgZmxhc2ggc2l6ZSAqLworCisjZGVmaW5lIENGR19NQVhfRkxBU0hfQkFOS1MJMSAvKiBudW1iZXIgb2YgYmFua3MgKi8KKyNkZWZpbmUgQ0ZHX01BWF9GTEFTSF9TRUNUCTI1NiAvKiBtYXggc2VjdG9ycyBwZXIgZGV2aWNlICovCisKKyN1bmRlZglDRkdfRkxBU0hfQ0hFQ0tTVU0KKyNkZWZpbmUgQ0ZHX0ZMQVNIX0VSQVNFX1RPVVQJNjAwMDAJLyogRmxhc2ggRXJhc2UgVGltZW91dCAobXMpICovCisjZGVmaW5lIENGR19GTEFTSF9XUklURV9UT1VUCTUwMAkvKiBGbGFzaCBXcml0ZSBUaW1lb3V0IChtcykgKi8KKworI2RlZmluZSBDRkdfVlNDNzM4NV9CQVNFCTB4RjAwMDAwMDAKKworLyogVlNDNzM4NSBHaWdhYml0IFN3aXRjaCBzdXBwb3J0ICovCisjZGVmaW5lIENPTkZJR19WU0M3Mzg1X0VORVQKKyNkZWZpbmUgQ0ZHX0JSMl9QUkVMSU0JCTB4ZjAwMDA4MDEJCS8qIEJhc2UgYWRkcmVzcyAqLworI2RlZmluZSBDRkdfT1IyX1BSRUxJTQkJMHhmZmZlMDlmZgkJLyogMTI4SyBieXRlcyovCisjZGVmaW5lIENGR19MQkxBV0JBUjJfUFJFTElNCUNGR19WU0M3Mzg1X0JBU0UJLyogQWNjZXNzIEJhc2UgKi8KKyNkZWZpbmUgQ0ZHX0xCTEFXQVIyX1BSRUxJTQkweDgwMDAwMDEwCQkvKiBBY2Nlc3MgU2l6ZSAxMjhLICovCisKKy8qCisgKiBTZXJpYWwgUG9ydAorICovCisjZGVmaW5lIENPTkZJR19DT05TX0lOREVYCTEKKyN1bmRlZglDT05GSUdfU0VSSUFMX1NPRlRXQVJFX0ZJRk8KKyNkZWZpbmUgQ0ZHX05TMTY1NTAKKyNkZWZpbmUgQ0ZHX05TMTY1NTBfU0VSSUFMCisjZGVmaW5lIENGR19OUzE2NTUwX1JFR19TSVpFCTEKKyNkZWZpbmUgQ0ZHX05TMTY1NTBfQ0xLCQlnZXRfYnVzX2ZyZXEoMCkKKworI2RlZmluZSBDRkdfQkFVRFJBVEVfVEFCTEUgXAorCXszMDAsIDYwMCwgMTIwMCwgMjQwMCwgNDgwMCwgOTYwMCwgMTkyMDAsIDM4NDAwLCAxMTUyMDB9CisKKyNkZWZpbmUgQ0ZHX05TMTY1NTBfQ09NMQkoQ0ZHX0lNTVIrMHg0NTAwKQorI2RlZmluZSBDRkdfTlMxNjU1MF9DT00yCShDRkdfSU1NUisweDQ2MDApCisKKy8qIFVzZSB0aGUgSFVTSCBwYXJzZXIgKi8KKyNkZWZpbmUgQ0ZHX0hVU0hfUEFSU0VSCisjaWZkZWYJQ0ZHX0hVU0hfUEFSU0VSCisjZGVmaW5lIENGR19QUk9NUFRfSFVTSF9QUzIgIj4gIgorI2VuZGlmCisKKy8qIFBhc3Mgb3BlbiBmaXJtd2FyZSBmbGF0IHRyZWUgKi8KKyNkZWZpbmUgQ09ORklHX09GX0xJQkZEVAkxCisjZGVmaW5lIENPTkZJR19PRl9CT0FSRF9TRVRVUAkxCisKKy8qIEkyQyAqLworI2RlZmluZSBDT05GSUdfSEFSRF9JMkMJCS8qIEkyQyB3aXRoIGhhcmR3YXJlIHN1cHBvcnQgKi8KKyN1bmRlZglDT05GSUdfU09GVF9JMkMJCS8qIEkyQyBiaXQtYmFuZ2VkICovCisjZGVmaW5lIENPTkZJR19GU0xfSTJDCisjZGVmaW5lIENGR19JMkNfU1BFRUQJCTQwMDAwMCAvKiBJMkMgc3BlZWQgYW5kIHNsYXZlIGFkZHJlc3MgKi8KKyNkZWZpbmUgQ0ZHX0kyQ19TTEFWRQkJMHg3RgorI2RlZmluZSBDRkdfSTJDX05PUFJPQkVTCXsweDUxfSAvKiBEb24ndCBwcm9iZSB0aGVzZSBhZGRycyAqLworI2RlZmluZSBDRkdfSTJDX09GRlNFVAkJMHgzMDAwCisjZGVmaW5lIENGR19JMkMyX09GRlNFVAkJMHgzMTAwCisKKy8qCisgKiBDb25maWcgb24tYm9hcmQgUlRDCisgKi8KKyNkZWZpbmUgQ09ORklHX1JUQ19EUzEzNzQJLyogdXNlIGRzMTM3NCBydGMgdmlhIGkyYyAqLworI2RlZmluZSBDRkdfSTJDX1JUQ19BRERSCTB4NjggLyogYXQgYWRkcmVzcyAweDY4ICovCisKKy8qCisgKiBHZW5lcmFsIFBDSQorICogQWRkcmVzc2VzIGFyZSBtYXBwZWQgMS0xLgorICovCisjZGVmaW5lIENGR19QQ0lfTUVNX0JBU0UJMHg4MDAwMDAwMAorI2RlZmluZSBDRkdfUENJX01FTV9QSFlTCUNGR19QQ0lfTUVNX0JBU0UKKyNkZWZpbmUgQ0ZHX1BDSV9NRU1fU0laRQkweDEwMDAwMDAwIC8qIDI1Nk0gKi8KKyNkZWZpbmUgQ0ZHX1BDSV9NTUlPX0JBU0UJMHg5MDAwMDAwMAorI2RlZmluZSBDRkdfUENJX01NSU9fUEhZUwlDRkdfUENJX01NSU9fQkFTRQorI2RlZmluZSBDRkdfUENJX01NSU9fU0laRQkweDEwMDAwMDAwIC8qIDI1Nk0gKi8KKyNkZWZpbmUgQ0ZHX1BDSV9JT19CQVNFCQkweEUwMzAwMDAwCisjZGVmaW5lIENGR19QQ0lfSU9fUEhZUwkJMHhFMDMwMDAwMAorI2RlZmluZSBDRkdfUENJX0lPX1NJWkUJCTB4MTAwMDAwIC8qIDFNICovCisKKyNkZWZpbmUgQ0ZHX1BDSV9TTFZfTUVNX0xPQ0FMCUNGR19TRFJBTV9CQVNFCisjZGVmaW5lIENGR19QQ0lfU0xWX01FTV9CVVMJMHgwMDAwMDAwMAorI2RlZmluZSBDRkdfUENJX1NMVl9NRU1fU0laRQkweDgwMDAwMDAwCisKKyNpZmRlZiBDT05GSUdfUENJCisjZGVmaW5lIENPTkZJR19ORVRfTVVMVEkKKyNkZWZpbmUgQ09ORklHX1BDSV9QTlAJCS8qIGRvIHBjaSBwbHVnLWFuZC1wbGF5ICovCisKKyN1bmRlZiBDT05GSUdfRUVQUk8xMDAKKyN1bmRlZiBDT05GSUdfUENJX1NDQU5fU0hPVwkvKiBzaG93IHBjaSBkZXZpY2VzIG9uIHN0YXJ0dXAgKi8KKyNkZWZpbmUgQ0ZHX1BDSV9TVUJTWVNfVkVORE9SSUQgMHgxOTU3CS8qIEZyZWVzY2FsZSAqLworI2VuZGlmCS8qIENPTkZJR19QQ0kgKi8KKworI2lmbmRlZiBDT05GSUdfTkVUX01VTFRJCisjZGVmaW5lIENPTkZJR19ORVRfTVVMVEkJMQorI2VuZGlmCisKKy8qCisgKiBUU0VDCisgKi8KKyNkZWZpbmUgQ09ORklHX1RTRUNfRU5FVAkvKiBUU0VDIGV0aGVybmV0IHN1cHBvcnQgKi8KKyNkZWZpbmUgQ0ZHX1RTRUMxX09GRlNFVAkweDI0MDAwCisjZGVmaW5lIENGR19UU0VDMQkJKENGR19JTU1SK0NGR19UU0VDMV9PRkZTRVQpCisjZGVmaW5lIENGR19UU0VDMl9PRkZTRVQJMHgyNTAwMAorI2RlZmluZSBDRkdfVFNFQzIJCShDRkdfSU1NUitDRkdfVFNFQzJfT0ZGU0VUKQorCisvKgorICogVFNFQyBldGhlcm5ldCBjb25maWd1cmF0aW9uCisgKi8KKyNkZWZpbmUgQ09ORklHX0dNSUkJCQkxCS8qIE1JSSBQSFkgbWFuYWdlbWVudCAqLworI2RlZmluZSBDT05GSUdfVFNFQzEJCQkxCisjZGVmaW5lIENPTkZJR19UU0VDMV9OQU1FCQkiVFNFQzAiCisjZGVmaW5lIENPTkZJR19UU0VDMgkJCTEKKyNkZWZpbmUgQ09ORklHX1RTRUMyX05BTUUJCSJUU0VDMSIKKyNkZWZpbmUgVFNFQzFfUEhZX0FERFIJCQkyCisjZGVmaW5lIFRTRUMyX1BIWV9BRERSCQkJMHgxYworI2RlZmluZSBUU0VDMV9GTEFHUwkJCShUU0VDX0dJR0FCSVQgfCBUU0VDX1JFRFVDRUQpCisjZGVmaW5lIFRTRUMyX0ZMQUdTCQkJKFRTRUNfR0lHQUJJVCB8IFRTRUNfUkVEVUNFRCkKKyNkZWZpbmUgVFNFQzFfUEhZSURYCQkJMAorI2RlZmluZSBUU0VDMl9QSFlJRFgJCQkwCisKKworLyogT3B0aW9ucyBhcmU6IFRTRUNbMC0xXSAqLworI2RlZmluZSBDT05GSUdfRVRIUFJJTUUJCQkiVFNFQzAiCisKKy8qCisgKiBFbnZpcm9ubWVudAorICovCisjaWZuZGVmIENGR19SQU1CT09UCisJI2RlZmluZSBDRkdfRU5WX0lTX0lOX0ZMQVNICTEKKwkjZGVmaW5lIENGR19FTlZfQUREUgkJKENGR19NT05JVE9SX0JBU0UrQ0ZHX01PTklUT1JfTEVOKQorCSNkZWZpbmUgQ0ZHX0VOVl9TRUNUX1NJWkUJMHgxMDAwMAkvKiA2NEsgKG9uZSBzZWN0b3IpIGZvciBlbnYgKi8KKwkjZGVmaW5lIENGR19FTlZfU0laRQkJMHg0MDAwCisjZWxzZQorCSNkZWZpbmUgQ0ZHX05PX0ZMQVNICQkxCS8qIEZsYXNoIGlzIG5vdCB1c2FibGUgbm93ICovCisJI2RlZmluZSBDRkdfRU5WX0lTX05PV0hFUkUJMQkvKiBTdG9yZSBFTlYgaW4gbWVtb3J5IG9ubHkgKi8KKwkjZGVmaW5lIENGR19FTlZfQUREUgkJKENGR19NT05JVE9SX0JBU0UtMHgxMDAwKQorCSNkZWZpbmUgQ0ZHX0VOVl9TSVpFCQkweDIwMDAKKyNlbmRpZgorCisjZGVmaW5lIENPTkZJR19MT0FEU19FQ0hPCTEJLyogZWNobyBvbiBmb3Igc2VyaWFsIGRvd25sb2FkICovCisjZGVmaW5lIENGR19MT0FEU19CQVVEX0NIQU5HRQkxCS8qIGFsbG93IGJhdWRyYXRlIGNoYW5nZSAqLworCisvKgorICogQk9PVFAgb3B0aW9ucworICovCisjZGVmaW5lIENPTkZJR19CT09UUF9CT09URklMRVNJWkUKKyNkZWZpbmUgQ09ORklHX0JPT1RQX0JPT1RQQVRICisjZGVmaW5lIENPTkZJR19CT09UUF9HQVRFV0FZCisjZGVmaW5lIENPTkZJR19CT09UUF9IT1NUTkFNRQorCisKKy8qCisgKiBDb21tYW5kIGxpbmUgY29uZmlndXJhdGlvbi4KKyAqLworI2luY2x1ZGUgPGNvbmZpZ19jbWRfZGVmYXVsdC5oPgorCisjZGVmaW5lIENPTkZJR19DTURfUElORworI2RlZmluZSBDT05GSUdfQ01EX0kyQworI2RlZmluZSBDT05GSUdfQ01EX01JSQorI2RlZmluZSBDT05GSUdfQ01EX0RBVEUKKworI2lmIGRlZmluZWQoQ09ORklHX1BDSSkKKyNkZWZpbmUgQ09ORklHX0NNRF9QQ0kKKyNlbmRpZgorCisjaWYgZGVmaW5lZChDRkdfUkFNQk9PVCkKKyN1bmRlZiBDT05GSUdfQ01EX0VOVgorI3VuZGVmIENPTkZJR19DTURfTE9BRFMKKyNlbmRpZgorCisjZGVmaW5lIENPTkZJR19DTURMSU5FX0VESVRJTkcJMQkvKiBhZGQgY29tbWFuZCBsaW5lIGhpc3RvcnkgKi8KKworI3VuZGVmIENPTkZJR19XQVRDSERPRwkJLyogd2F0Y2hkb2cgZGlzYWJsZWQgKi8KKworLyoKKyAqIE1pc2NlbGxhbmVvdXMgY29uZmlndXJhYmxlIG9wdGlvbnMKKyAqLworI2RlZmluZSBDRkdfTE9OR0hFTFAJCS8qIHVuZGVmIHRvIHNhdmUgbWVtb3J5ICovCisjZGVmaW5lIENGR19MT0FEX0FERFIJCTB4MjAwMDAwMCAvKiBkZWZhdWx0IGxvYWQgYWRkcmVzcyAqLworI2RlZmluZSBDRkdfUFJPTVBUCQkiPT4gIgkvKiBNb25pdG9yIENvbW1hbmQgUHJvbXB0ICovCisKKyNpZiBkZWZpbmVkKENPTkZJR19DTURfS0dEQikKKwkjZGVmaW5lIENGR19DQlNJWkUJMTAyNCAvKiBDb25zb2xlIEkvTyBCdWZmZXIgU2l6ZSAqLworI2Vsc2UKKwkjZGVmaW5lIENGR19DQlNJWkUJMjU2IC8qIENvbnNvbGUgSS9PIEJ1ZmZlciBTaXplICovCisjZW5kaWYKKworI2RlZmluZSBDRkdfUEJTSVpFIChDRkdfQ0JTSVpFK3NpemVvZihDRkdfUFJPTVBUKSsxNikgLyogUHJpbnQgQnVmZmVyIFNpemUgKi8KKyNkZWZpbmUgQ0ZHX01BWEFSR1MJMTYJCS8qIG1heCBudW1iZXIgb2YgY29tbWFuZCBhcmdzICovCisjZGVmaW5lIENGR19CQVJHU0laRQlDRkdfQ0JTSVpFCS8qIEJvb3QgQXJndW1lbnQgQnVmZmVyIFNpemUgKi8KKyNkZWZpbmUgQ0ZHX0haCQkxMDAwCQkvKiBkZWNyZW1lbnRlciBmcmVxOiAxbXMgdGlja3MgKi8KKworLyoKKyAqIEZvciBib290aW5nIExpbnV4LCB0aGUgYm9hcmQgaW5mbyBhbmQgY29tbWFuZCBsaW5lIGRhdGEKKyAqIGhhdmUgdG8gYmUgaW4gdGhlIGZpcnN0IDggTUIgb2YgbWVtb3J5LCBzaW5jZSB0aGlzIGlzCisgKiB0aGUgbWF4aW11bSBtYXBwZWQgYnkgdGhlIExpbnV4IGtlcm5lbCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uCisgKi8KKyNkZWZpbmUgQ0ZHX0JPT1RNQVBTWgkJKDggPDwgMjApIC8qIEluaXRpYWwgTWVtb3J5IG1hcCBmb3IgTGludXggKi8KKworLyoKKyAqIENvcmUgSElEIFNldHVwCisgKi8KKyNkZWZpbmUgQ0ZHX0hJRDBfSU5JVAkJMHgwMDAwMDAwMDAKKyNkZWZpbmUgQ0ZHX0hJRDBfRklOQUwJCUhJRDBfRU5BQkxFX01BQ0hJTkVfQ0hFQ0sKKyNkZWZpbmUgQ0ZHX0hJRDIJCUhJRDJfSEJFCisKKy8qCisgKiBNTVUgU2V0dXAKKyAqLworCisvKiBERFI6IGNhY2hlIGNhY2hlYWJsZSAqLworI2RlZmluZSBDRkdfU0RSQU1fTE9XRVIJCUNGR19TRFJBTV9CQVNFCisjZGVmaW5lIENGR19TRFJBTV9VUFBFUgkJKENGR19TRFJBTV9CQVNFICsgMHgxMDAwMDAwMCkKKworI2RlZmluZSBDRkdfSUJBVDBMCShDRkdfU0RSQU1fTE9XRVIgfCBCQVRMX1BQXzEwIHwgQkFUTF9NRU1DT0hFUkVOQ0UpCisjZGVmaW5lIENGR19JQkFUMFUJKENGR19TRFJBTV9MT1dFUiB8IEJBVFVfQkxfMjU2TSB8IEJBVFVfVlMgfCBCQVRVX1ZQKQorI2RlZmluZSBDRkdfREJBVDBMCUNGR19JQkFUMEwKKyNkZWZpbmUgQ0ZHX0RCQVQwVQlDRkdfSUJBVDBVCisKKyNkZWZpbmUgQ0ZHX0lCQVQxTAkoQ0ZHX1NEUkFNX1VQUEVSIHwgQkFUTF9QUF8xMCB8IEJBVExfTUVNQ09IRVJFTkNFKQorI2RlZmluZSBDRkdfSUJBVDFVCShDRkdfU0RSQU1fVVBQRVIgfCBCQVRVX0JMXzI1Nk0gfCBCQVRVX1ZTIHwgQkFUVV9WUCkKKyNkZWZpbmUgQ0ZHX0RCQVQxTAlDRkdfSUJBVDFMCisjZGVmaW5lIENGR19EQkFUMVUJQ0ZHX0lCQVQxVQorCisvKiBJTU1SQkFSLCBQQ0kgSU8gYW5kIE5BTkQ6IGNhY2hlLWluaGliaXQgYW5kIGd1YXJkZWQgKi8KKyNkZWZpbmUgQ0ZHX0lCQVQyTAkoQ0ZHX0lNTVIgfCBCQVRMX1BQXzEwIHwgXAorCQkJQkFUTF9DQUNIRUlOSElCSVQgfCBCQVRMX0dVQVJERURTVE9SQUdFKQorI2RlZmluZSBDRkdfSUJBVDJVCShDRkdfSU1NUiB8IEJBVFVfQkxfOE0gfCBCQVRVX1ZTIHwgQkFUVV9WUCkKKyNkZWZpbmUgQ0ZHX0RCQVQyTAlDRkdfSUJBVDJMCisjZGVmaW5lIENGR19EQkFUMlUJQ0ZHX0lCQVQyVQorCisvKiBMMiBTd2l0Y2g6IGNhY2hlLWluaGliaXQgYW5kIGd1YXJkZWQgKi8KKyNkZWZpbmUgQ0ZHX0lCQVQzTAkoQ0ZHX1ZTQzczODVfQkFTRSB8IEJBVExfUFBfMTAgfCBcCisJCQlCQVRMX0NBQ0hFSU5ISUJJVCB8IEJBVExfR1VBUkRFRFNUT1JBR0UpCisjZGVmaW5lIENGR19JQkFUM1UJKENGR19WU0M3Mzg1X0JBU0UgfCBCQVRVX0JMXzEyOEsgfCBCQVRVX1ZTIHwgQkFUVV9WUCkKKyNkZWZpbmUgQ0ZHX0RCQVQzTAlDRkdfSUJBVDNMCisjZGVmaW5lIENGR19EQkFUM1UJQ0ZHX0lCQVQzVQorCisvKiBGTEFTSDogaWNhY2hlIGNhY2hlYWJsZSwgYnV0IGRjYWNoZS1pbmhpYml0IGFuZCBndWFyZGVkICovCisjZGVmaW5lIENGR19JQkFUNEwJKENGR19GTEFTSF9CQVNFIHwgQkFUTF9QUF8xMCB8IEJBVExfTUVNQ09IRVJFTkNFKQorI2RlZmluZSBDRkdfSUJBVDRVCShDRkdfRkxBU0hfQkFTRSB8IEJBVFVfQkxfMzJNIHwgQkFUVV9WUyB8IEJBVFVfVlApCisjZGVmaW5lIENGR19EQkFUNEwJKENGR19GTEFTSF9CQVNFIHwgQkFUTF9QUF8xMCB8IFwKKwkJCUJBVExfQ0FDSEVJTkhJQklUIHwgQkFUTF9HVUFSREVEU1RPUkFHRSkKKyNkZWZpbmUgQ0ZHX0RCQVQ0VQlDRkdfSUJBVDRVCisKKy8qIFN0YWNrIGluIGRjYWNoZTogY2FjaGVhYmxlLCBubyBtZW1vcnkgY29oZXJlbmNlICovCisjZGVmaW5lIENGR19JQkFUNUwJKENGR19JTklUX1JBTV9BRERSIHwgQkFUTF9QUF8xMCkKKyNkZWZpbmUgQ0ZHX0lCQVQ1VQkoQ0ZHX0lOSVRfUkFNX0FERFIgfCBCQVRVX0JMXzEyOEsgfCBCQVRVX1ZTIHwgQkFUVV9WUCkKKyNkZWZpbmUgQ0ZHX0RCQVQ1TAlDRkdfSUJBVDVMCisjZGVmaW5lIENGR19EQkFUNVUJQ0ZHX0lCQVQ1VQorCisjaWZkZWYgQ09ORklHX1BDSQorLyogUENJIE1FTSBzcGFjZTogY2FjaGVhYmxlICovCisjZGVmaW5lIENGR19JQkFUNkwJKENGR19QQ0lfTUVNX1BIWVMgfCBCQVRMX1BQXzEwIHwgQkFUTF9NRU1DT0hFUkVOQ0UpCisjZGVmaW5lIENGR19JQkFUNlUJKENGR19QQ0lfTUVNX1BIWVMgfCBCQVRVX0JMXzI1Nk0gfCBCQVRVX1ZTIHwgQkFUVV9WUCkKKyNkZWZpbmUgQ0ZHX0RCQVQ2TAlDRkdfSUJBVDZMCisjZGVmaW5lIENGR19EQkFUNlUJQ0ZHX0lCQVQ2VQorLyogUENJIE1NSU8gc3BhY2U6IGNhY2hlLWluaGliaXQgYW5kIGd1YXJkZWQgKi8KKyNkZWZpbmUgQ0ZHX0lCQVQ3TAkoQ0ZHX1BDSV9NTUlPX1BIWVMgfCBCQVRMX1BQXzEwIHwgXAorCQkJQkFUTF9DQUNIRUlOSElCSVQgfCBCQVRMX0dVQVJERURTVE9SQUdFKQorI2RlZmluZSBDRkdfSUJBVDdVCShDRkdfUENJX01NSU9fUEhZUyB8IEJBVFVfQkxfMjU2TSB8IEJBVFVfVlMgfCBCQVRVX1ZQKQorI2RlZmluZSBDRkdfREJBVDdMCUNGR19JQkFUN0wKKyNkZWZpbmUgQ0ZHX0RCQVQ3VQlDRkdfSUJBVDdVCisjZWxzZQorI2RlZmluZSBDRkdfSUJBVDZMCSgwKQorI2RlZmluZSBDRkdfSUJBVDZVCSgwKQorI2RlZmluZSBDRkdfSUJBVDdMCSgwKQorI2RlZmluZSBDRkdfSUJBVDdVCSgwKQorI2RlZmluZSBDRkdfREJBVDZMCUNGR19JQkFUNkwKKyNkZWZpbmUgQ0ZHX0RCQVQ2VQlDRkdfSUJBVDZVCisjZGVmaW5lIENGR19EQkFUN0wJQ0ZHX0lCQVQ3TAorI2RlZmluZSBDRkdfREJBVDdVCUNGR19JQkFUN1UKKyNlbmRpZgorCisvKgorICogSW50ZXJuYWwgRGVmaW5pdGlvbnMKKyAqCisgKiBCb290IEZsYWdzCisgKi8KKyNkZWZpbmUgQk9PVEZMQUdfQ09MRAkweDAxIC8qIE5vcm1hbCBQb3dlci1PbjogQm9vdCBmcm9tIEZMQVNIICovCisjZGVmaW5lIEJPT1RGTEFHX1dBUk0JMHgwMiAvKiBTb2Z0d2FyZSByZWJvb3QgKi8KKworI2lmIGRlZmluZWQoQ09ORklHX0NNRF9LR0RCKQorI2RlZmluZSBDT05GSUdfS0dEQl9CQVVEUkFURQkyMzA0MDAJLyogc3BlZWQgb2Yga2dkYiBzZXJpYWwgcG9ydCAqLworI2RlZmluZSBDT05GSUdfS0dEQl9TRVJfSU5ERVgJMgkvKiB3aGljaCBzZXJpYWwgcG9ydCB0byB1c2UgKi8KKyNlbmRpZgorCisvKgorICogRW52aXJvbm1lbnQgQ29uZmlndXJhdGlvbgorICovCisjZGVmaW5lIENPTkZJR19FTlZfT1ZFUldSSVRFCisKKyNkZWZpbmUgQ09ORklHX0hBU19FVEgwCQkJCS8qIGFkZCBzdXBwb3J0IGZvciAiZXRoYWRkciIgKi8KKyNkZWZpbmUgQ09ORklHX0VUSEFERFIJMDA6MDQ6OWY6ZWY6MDQ6MDEKKyNkZWZpbmUgQ09ORklHX0hBU19FVEgxCQkJCS8qIGFkZCBzdXBwb3J0IGZvciAiZXRoMWFkZHIiICovCisjZGVmaW5lIENPTkZJR19FVEgxQUREUgkwMDowNDo5ZjplZjowNDowMgorCisjZGVmaW5lIENPTkZJR19JUEFERFIJCTEwLjAuMC4yCisjZGVmaW5lIENPTkZJR19TRVJWRVJJUAkJMTAuMC4wLjEKKyNkZWZpbmUgQ09ORklHX0dBVEVXQVlJUAkxMC4wLjAuMQorI2RlZmluZSBDT05GSUdfTkVUTUFTSwkJMjU1LjAuMC4wCisjZGVmaW5lIENPTkZJR19ORVRERVYJCWV0aDEKKworI2RlZmluZSBDT05GSUdfSE9TVE5BTUUJCW1wYzgzN3hfcmRiCisjZGVmaW5lIENPTkZJR19ST09UUEFUSAkJL25mc3Jvb3QKKyNkZWZpbmUgQ09ORklHX1JBTURJU0tGSUxFCXJvb3Rmcy5leHQyLmd6LnVib290CisjZGVmaW5lIENPTkZJR19CT09URklMRQkJdUltYWdlCisjZGVmaW5lIENPTkZJR19VQk9PVFBBVEgJdS1ib290LmJpbgkvKiBVLUJvb3QgaW1hZ2Ugb24gVEZUUCBzZXJ2ZXIgKi8KKyNkZWZpbmUgQ09ORklHX0ZEVEZJTEUJCW1wYzgzN3hfcmRiLmR0YgorCisjZGVmaW5lIENPTkZJR19MT0FEQUREUgkJMjAwMDAwCS8qIGRlZmF1bHQgbG9jYXRpb24gZm9yIHRmdHAgYW5kIGJvb3RtICovCisjZGVmaW5lIENPTkZJR19CT09UREVMQVkJLTEJLyogLTEgZGlzYWJsZXMgYXV0by1ib290ICovCisjZGVmaW5lIENPTkZJR19CQVVEUkFURQkJMTE1MjAwCisKKyNkZWZpbmUgWE1LX1NUUih4KQkjeAorI2RlZmluZSBNS19TVFIoeCkJWE1LX1NUUih4KQorCisjZGVmaW5lIENPTkZJR19FWFRSQV9FTlZfU0VUVElOR1MgXAorCSJuZXRkZXY9IiBNS19TVFIoQ09ORklHX05FVERFVikgIlwwIgkJCQlcCisJInVib290PSIgTUtfU1RSKENPTkZJR19VQk9PVFBBVEgpICJcMCIJCQkJXAorCSJ0ZnRwZmxhc2g9dGZ0cCAkbG9hZGFkZHIgJHVib290OyIJCQkJXAorCQkicHJvdGVjdCBvZmYgIiBNS19TVFIoVEVYVF9CQVNFKSAiICskZmlsZXNpemU7ICIJXAorCQkiZXJhc2UgIiBNS19TVFIoVEVYVF9CQVNFKSAiICskZmlsZXNpemU7ICIJCVwKKwkJImNwLmIgJGxvYWRhZGRyICIgTUtfU1RSKFRFWFRfQkFTRSkgIiAkZmlsZXNpemU7ICIJXAorCQkicHJvdGVjdCBvbiAiIE1LX1NUUihURVhUX0JBU0UpICIgKyRmaWxlc2l6ZTsgIgkJXAorCQkiY21wLmIgJGxvYWRhZGRyICIgTUtfU1RSKFRFWFRfQkFTRSkgIiAkZmlsZXNpemVcMCIJXAorCSJmZHRhZGRyPTQwMDAwMFwwIgkJCQkJCVwKKwkiZmR0ZmlsZT0iIE1LX1NUUihDT05GSUdfRkRURklMRSkgIlwwIgkJCQlcCisJInJhbWRpc2thZGRyPTEwMDAwMDBcMCIJCQkJCQlcCisJInJhbWRpc2tmaWxlPSIgTUtfU1RSKENPTkZJR19SQU1ESVNLRklMRSkgIlwwIgkJCVwKKwkiY29uc29sZT10dHlTMFwwIgkJCQkJCVwKKwkic2V0Ym9vdGFyZ3M9c2V0ZW52IGJvb3RhcmdzICIJCQkJCVwKKwkJInJvb3Q9JHJvb3RkZXYgcncgY29uc29sZT0kY29uc29sZSwkYmF1ZHJhdGUgJG90aGJvb3RhcmdzXDAiIFwKKwkic2V0aXBhcmdzPXNldGVudiBib290YXJncyBuZnNyb290PSRzZXJ2ZXJpcDokcm9vdHBhdGggIglcCisJCSJpcD0kaXBhZGRyOiRzZXJ2ZXJpcDokZ2F0ZXdheWlwOiRuZXRtYXNrOiRob3N0bmFtZTokbmV0ZGV2Om9mZiAiIFwKKwkJInJvb3Q9JHJvb3RkZXYgcncgY29uc29sZT0kY29uc29sZSwkYmF1ZHJhdGUgJG90aGJvb3RhcmdzXDAiCisKKyNkZWZpbmUgQ09ORklHX05GU0JPT1RDT01NQU5ECQkJCQkJXAorCSJzZXRlbnYgcm9vdGRldiAvZGV2L25mczsiCQkJCQlcCisJInJ1biBzZXRib290YXJnczsiCQkJCQkJXAorCSJydW4gc2V0aXBhcmdzOyIJCQkJCQlcCisJInRmdHAgJGxvYWRhZGRyICRib290ZmlsZTsiCQkJCQlcCisJInRmdHAgJGZkdGFkZHIgJGZkdGZpbGU7IgkJCQkJXAorCSJib290bSAkbG9hZGFkZHIgLSAkZmR0YWRkciIKKworI2RlZmluZSBDT05GSUdfUkFNQk9PVENPTU1BTkQJCQkJCQlcCisJInNldGVudiByb290ZGV2IC9kZXYvcmFtOyIJCQkJCVwKKwkicnVuIHNldGJvb3RhcmdzOyIJCQkJCQlcCisJInRmdHAgJHJhbWRpc2thZGRyICRyYW1kaXNrZmlsZTsiCQkJCVwKKwkidGZ0cCAkbG9hZGFkZHIgJGJvb3RmaWxlOyIJCQkJCVwKKwkidGZ0cCAkZmR0YWRkciAkZmR0ZmlsZTsiCQkJCQlcCisJImJvb3RtICRsb2FkYWRkciAkcmFtZGlza2FkZHIgJGZkdGFkZHIiCisKKyN1bmRlZiBNS19TVFIKKyN1bmRlZiBYTUtfU1RSCisKKyNlbmRpZgkvKiBfX0NPTkZJR19IICovCg==