ZGlmZiAtLWdpdCBhL2FsbGJpbnMvengyOTc1MjB2My9wcmpfdmVoaWNsZS9udl9kY19yZWYvYXRfbnZyd18weDAwMDAxMDAwLmJpbiBiL2FsbGJpbnMvengyOTc1MjB2My9wcmpfdmVoaWNsZS9udl9kY19yZWYvYXRfbnZyd18weDAwMDAxMDAwLmJpbgppbmRleCBhZTIwMDE5Li43N2UxZmRkMiAxMDA3NTUKLS0tIGEvYWxsYmlucy96eDI5NzUyMHYzL3Byal92ZWhpY2xlL252X2RjX3JlZi9hdF9udnJ3XzB4MDAwMDEwMDAuYmluCisrKyBiL2FsbGJpbnMvengyOTc1MjB2My9wcmpfdmVoaWNsZS9udl9kY19yZWYvYXRfbnZyd18weDAwMDAxMDAwLmJpbgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9hbGxiaW5zL3p4Mjk3NTIwdjMvcHJqX3ZlaGljbGUvbnZfZGNfcmVmL3BoeUdnZUFtdFVzZXJfbnZyd29fMHgwMDA0M0MwMC5iaW4gYi9hbGxiaW5zL3p4Mjk3NTIwdjMvcHJqX3ZlaGljbGUvbnZfZGNfcmVmL3BoeUdnZUFtdFVzZXJfbnZyd29fMHgwMDA0M0MwMC5iaW4KaW5kZXggNGM2ZGQ5Zi4uN2E1OTI2MiAxMDA3NTUKLS0tIGEvYWxsYmlucy96eDI5NzUyMHYzL3Byal92ZWhpY2xlL252X2RjX3JlZi9waHlHZ2VBbXRVc2VyX252cndvXzB4MDAwNDNDMDAuYmluCisrKyBiL2FsbGJpbnMvengyOTc1MjB2My9wcmpfdmVoaWNsZS9udl9kY19yZWYvcGh5R2dlQW10VXNlcl9udnJ3b18weDAwMDQzQzAwLmJpbgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9hbGxiaW5zL3p4Mjk3NTIwdjMvcHJqX3ZlaGljbGUvbnZfZGNfcmVmL3BoeUx0ZWFBbXRVc2VyX252cndvXzB4MDAwNDgwMDAuYmluIGIvYWxsYmlucy96eDI5NzUyMHYzL3Byal92ZWhpY2xlL252X2RjX3JlZi9waHlMdGVhQW10VXNlcl9udnJ3b18weDAwMDQ4MDAwLmJpbgppbmRleCBmNzM4MDhiLi5lZDRjZTU4IDEwMDc1NQotLS0gYS9hbGxiaW5zL3p4Mjk3NTIwdjMvcHJqX3ZlaGljbGUvbnZfZGNfcmVmL3BoeUx0ZWFBbXRVc2VyX252cndvXzB4MDAwNDgwMDAuYmluCisrKyBiL2FsbGJpbnMvengyOTc1MjB2My9wcmpfdmVoaWNsZS9udl9kY19yZWYvcGh5THRlYUFtdFVzZXJfbnZyd29fMHgwMDA0ODAwMC5iaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYWxsYmlucy96eDI5NzUyMHYzL3Byal92ZWhpY2xlL252X2RjX3JlZi9waHlXY2RtYUFtdFVzZXJfbnZyd29fMHgwMDA0NTgwMC5iaW4gYi9hbGxiaW5zL3p4Mjk3NTIwdjMvcHJqX3ZlaGljbGUvbnZfZGNfcmVmL3BoeVdjZG1hQW10VXNlcl9udnJ3b18weDAwMDQ1ODAwLmJpbgppbmRleCAyZWU2ODJjLi44NDcwZjgzIDEwMDc1NQotLS0gYS9hbGxiaW5zL3p4Mjk3NTIwdjMvcHJqX3ZlaGljbGUvbnZfZGNfcmVmL3BoeVdjZG1hQW10VXNlcl9udnJ3b18weDAwMDQ1ODAwLmJpbgorKysgYi9hbGxiaW5zL3p4Mjk3NTIwdjMvcHJqX3ZlaGljbGUvbnZfZGNfcmVmL3BoeVdjZG1hQW10VXNlcl9udnJ3b18weDAwMDQ1ODAwLmJpbgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9hcC9hcHAvenRlX2NvbW0vbnZzZXJ2ZXIvbnZzZXJ2ZXIuYyBiL2FwL2FwcC96dGVfY29tbS9udnNlcnZlci9udnNlcnZlci5jCmluZGV4IGZlNWJhOTkuLjRlMjQwZjggMTAwNzU1Ci0tLSBhL2FwL2FwcC96dGVfY29tbS9udnNlcnZlci9udnNlcnZlci5jCisrKyBiL2FwL2FwcC96dGVfY29tbS9udnNlcnZlci9udnNlcnZlci5jCkBAIC0xNDYsOSArMTQ2LDE0IEBACiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGFuYWx5TXNnKCZyY3ZCdWYsICZzbmRCdWYpOwotICAgICAgICAKK21zZ3NuZF9yZXRyeToKICAgICAgICAgaWYoLTEgPT0gbXNnc25kKG1zZ0lkLCAmc25kQnVmLCBzaXplb2YoVF9OVl9NU0dfUkVTVUxUKSAtIHNpemVvZihsb25nKSwgMCkpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChlcnJubyA9PSBFSU5UUikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBwcmludGYoIm52c2VydmVyIGVycm9yOiBtc2dzbmQgZmFpbCwgZXJybm8gPSBFSU5UUiFcbiIpOworICAgICAgICAgICAgICAgIGdvdG8gbXNnc25kX3JldHJ5OworICAgICAgICAgICAgfQogICAgICAgICAgICAgcHJpbnRmKCJudnNlcnZlciBlcnJvcjogbnZzZXJ2ZXIgbXNnc25kIGZhaWwsIGVycm5vID0gJWQhXG4iLCBlcnJubyk7CiAgICAgICAgICAgICBjb250aW51ZTsgICAKICAgICAgICAgfSAgIApkaWZmIC0tZ2l0IGEvYXAvbGliL2xpYm52cmFtL2xpYm52cmFtLmEgYi9hcC9saWIvbGlibnZyYW0vbGlibnZyYW0uYQppbmRleCA4YmNlYzhjLi5mOGVlMWYyIDEwMDc1NQotLS0gYS9hcC9saWIvbGlibnZyYW0vbGlibnZyYW0uYQorKysgYi9hcC9saWIvbGlibnZyYW0vbGlibnZyYW0uYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9hcC9saWIvbGlibnZyYW0vbGlibnZyYW0uc28gYi9hcC9saWIvbGlibnZyYW0vbGlibnZyYW0uc28KaW5kZXggMTk5YjUxNC4uOTgxOGM2NyAxMDA3NTUKLS0tIGEvYXAvbGliL2xpYm52cmFtL2xpYm52cmFtLnNvCisrKyBiL2FwL2xpYi9saWJudnJhbS9saWJudnJhbS5zbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9hcC9saWIvbGlibnZyYW0vbGlibnZyYW1fc2MuYSBiL2FwL2xpYi9saWJudnJhbS9saWJudnJhbV9zYy5hCmluZGV4IDRhNzVjM2QuLjg4ZDI0ZDggMTAwNzU1Ci0tLSBhL2FwL2xpYi9saWJudnJhbS9saWJudnJhbV9zYy5hCisrKyBiL2FwL2xpYi9saWJudnJhbS9saWJudnJhbV9zYy5hCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2FwL2xpYi9saWJudnJhbS9saWJudnJhbV9zYy5zbyBiL2FwL2xpYi9saWJudnJhbS9saWJudnJhbV9zYy5zbwppbmRleCA4MTdjZjRjLi5jNGMyNzAwIDEwMDc1NQotLS0gYS9hcC9saWIvbGlibnZyYW0vbGlibnZyYW1fc2Muc28KKysrIGIvYXAvbGliL2xpYm52cmFtL2xpYm52cmFtX3NjLnNvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NhcC96eDI5NzUyMHYzL3NvdXJjZXMvbWV0YS16eGljLWN1c3RvbS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2ZpbGVzL3p4Mjk3NTIwdjMvdmVoaWNsZV9kY19yZWYvZnMvbm9ybWFsL3Jvb3Rmcy9ldGMvaW5pdC5kL2ZzY2hlY2suc2ggYi9jYXAvengyOTc1MjB2My9zb3VyY2VzL21ldGEtenhpYy1jdXN0b20vcmVjaXBlcy1jb3JlL2ltYWdlcy9maWxlcy96eDI5NzUyMHYzL3ZlaGljbGVfZGNfcmVmL2ZzL25vcm1hbC9yb290ZnMvZXRjL2luaXQuZC9mc2NoZWNrLnNoCmluZGV4IGI1Y2NmMjAuLjU2YTRiMGQgMTAwNzU1Ci0tLSBhL2NhcC96eDI5NzUyMHYzL3NvdXJjZXMvbWV0YS16eGljLWN1c3RvbS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2ZpbGVzL3p4Mjk3NTIwdjMvdmVoaWNsZV9kY19yZWYvZnMvbm9ybWFsL3Jvb3Rmcy9ldGMvaW5pdC5kL2ZzY2hlY2suc2gKKysrIGIvY2FwL3p4Mjk3NTIwdjMvc291cmNlcy9tZXRhLXp4aWMtY3VzdG9tL3JlY2lwZXMtY29yZS9pbWFnZXMvZmlsZXMvengyOTc1MjB2My92ZWhpY2xlX2RjX3JlZi9mcy9ub3JtYWwvcm9vdGZzL2V0Yy9pbml0LmQvZnNjaGVjay5zaApAQCAtMjUsNiArMjUsMTEgQEAKICAgcmVib290CiBmaQogCisjeHkuaGVAMjAyNTA1MTIgYWRkIGZvciBidWctdmlldy0xMTEzCitpZiBbICEgLUwgL2V0Y19ydy9sb2NhbHRpbWUgXTsgdGhlbgorbG4gLXMgIi91c3Ivc2hhcmUvem9uZWluZm8vQXNpYS9TaGFuZ2hhaSIgL2V0Y19ydy9sb2NhbHRpbWUKK2ZpCisKICNsLnlhbmcgbW9kaWZ5IGZvciBUMTA2QlVHLTM4NyBzdGFydAogaWYgWyAtZSAvZGV2L21tY2JsazFwMSBdOyB0aGVuCiAgIG1vdW50IC10IGV4dDQgL2Rldi9tbWNibGsxcDEgL3Zhci9sb2cKZGlmZiAtLWdpdCBhL2NhcC96eDI5NzUyMHYzL3NvdXJjZXMvbWV0YS16eGljLWN1c3RvbS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2ZpbGVzL3p4Mjk3NTIwdjMvdmVoaWNsZV9kY19yZWYvZnMvbm9ybWFsL3Jvb3Rmcy9ldGMvcmMubG9jYWwgYi9jYXAvengyOTc1MjB2My9zb3VyY2VzL21ldGEtenhpYy1jdXN0b20vcmVjaXBlcy1jb3JlL2ltYWdlcy9maWxlcy96eDI5NzUyMHYzL3ZlaGljbGVfZGNfcmVmL2ZzL25vcm1hbC9yb290ZnMvZXRjL3JjLmxvY2FsCmluZGV4IGZjOWE2MzAuLjNjMTRiMjUgMTAwNzU1Ci0tLSBhL2NhcC96eDI5NzUyMHYzL3NvdXJjZXMvbWV0YS16eGljLWN1c3RvbS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2ZpbGVzL3p4Mjk3NTIwdjMvdmVoaWNsZV9kY19yZWYvZnMvbm9ybWFsL3Jvb3Rmcy9ldGMvcmMubG9jYWwKKysrIGIvY2FwL3p4Mjk3NTIwdjMvc291cmNlcy9tZXRhLXp4aWMtY3VzdG9tL3JlY2lwZXMtY29yZS9pbWFnZXMvZmlsZXMvengyOTc1MjB2My92ZWhpY2xlX2RjX3JlZi9mcy9ub3JtYWwvcm9vdGZzL2V0Yy9yYy5sb2NhbApAQCAtMzMsMTIgKzMzLDEzIEBACiAKIHJtIC1yZiAvZXRjX3J3L3VkaGNwZCoucGlkCiAKKyN4eS5oZUAyMDI1MDUxMiBkZWxldGUgZm9yIGJ1Zy12aWV3LTExMTMKICNsbiAtc2YgIi9ldGMvem9uZWluZm8vQXNpYS9TaGFuZ2hhaSIgL2V0Yy9sb2NhbHRpbWUKLWxuIC1zZiAiL2V0Y19ydy9sb2NhbHRpbWUiIC9ldGMvbG9jYWx0aW1lCi1pZiBbICEgLUwgL2V0Y19ydy9sb2NhbHRpbWUgXTsgdGhlbgotbG4gLXNmICIvdXNyL3NoYXJlL3pvbmVpbmZvL0FzaWEvU2hhbmdoYWkiIC9ldGNfcncvbG9jYWx0aW1lCi1maQorI2xuIC1zZiAiL2V0Y19ydy9sb2NhbHRpbWUiIC9ldGMvbG9jYWx0aW1lCisjaWYgWyAhIC1MIC9ldGNfcncvbG9jYWx0aW1lIF07IHRoZW4KKyNsbiAtc2YgIi91c3Ivc2hhcmUvem9uZWluZm8vQXNpYS9TaGFuZ2hhaSIgL2V0Y19ydy9sb2NhbHRpbWUKKyNmaQogCiBlY2hvICJvcGVuIG52c2VydmVyIGF0X2N0bCBudi1ycGMtZGFlbW9uIHp4aWNfbWFpbmN0cmwgcnRjLXNlcnZpY2UiID4gL3Byb2MvYWJub3JtYWxfZXhpdF90YXNrCiAjamIucWlAMjAyMzA5MTggZGVsZXRlIGZvciBhdXRvc3VzcGVuZAotenhpY19yYW1kdW1wID4gL3RtcC9yYW1kdW1wLnR4dCAyPiYxICYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit6eGljX3JhbWR1bXAgPiAvdG1wL3JhbWR1bXAudHh0IDI+JjEgJgpkaWZmIC0tZ2l0IGEvY2FwL3p4Mjk3NTIwdjMvc291cmNlcy9tZXRhLXp4aWMtY3VzdG9tL3JlY2lwZXMtY29yZS9pbWFnZXMvZmlsZXMvengyOTc1MjB2My92ZWhpY2xlX2RjX3JlZi9mcy9ub3JtYWwvcm9vdGZzL2V0Y19yby9kZWZhdWx0L2RlZmF1bHRfcGFyYW1ldGVyX3N5cyBiL2NhcC96eDI5NzUyMHYzL3NvdXJjZXMvbWV0YS16eGljLWN1c3RvbS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2ZpbGVzL3p4Mjk3NTIwdjMvdmVoaWNsZV9kY19yZWYvZnMvbm9ybWFsL3Jvb3Rmcy9ldGNfcm8vZGVmYXVsdC9kZWZhdWx0X3BhcmFtZXRlcl9zeXMKaW5kZXggYTQyYTI1Yy4uMTdjNTg5YyAxMDA3NTUKLS0tIGEvY2FwL3p4Mjk3NTIwdjMvc291cmNlcy9tZXRhLXp4aWMtY3VzdG9tL3JlY2lwZXMtY29yZS9pbWFnZXMvZmlsZXMvengyOTc1MjB2My92ZWhpY2xlX2RjX3JlZi9mcy9ub3JtYWwvcm9vdGZzL2V0Y19yby9kZWZhdWx0L2RlZmF1bHRfcGFyYW1ldGVyX3N5cworKysgYi9jYXAvengyOTc1MjB2My9zb3VyY2VzL21ldGEtenhpYy1jdXN0b20vcmVjaXBlcy1jb3JlL2ltYWdlcy9maWxlcy96eDI5NzUyMHYzL3ZlaGljbGVfZGNfcmVmL2ZzL25vcm1hbC9yb290ZnMvZXRjX3JvL2RlZmF1bHQvZGVmYXVsdF9wYXJhbWV0ZXJfc3lzCkBAIC00MjEsNyArNDIxLDkgQEAKIFVEUF9USFJFU0g9MTMwMAogSVBTRUNfRElTQUJMRT0wCiBQUkVDT05EVElPTl9OT1RfU1VQUE9SVD0wCi1XQUlUX1JQVF9USU1FPTEwMDAKKyNsLnlhbmcgY2hhbmdlIGZvciBUMTA4YnVnLTEzMDggc3RhcnQKK1dBSVRfUlBUX1RJTUU9MzAwMAorI2wueWFuZyBjaGFuZ2UgZm9yIFQxMDhidWctMTMwOCBlbmQKIE9DVF9BTEdOX0FNUj0wCiBTTVNfT1ZFUl9JUD0xCiBJTVNfVVNFUl9BR0VOVD0KZGlmZiAtLWdpdCBhL2NhcC96eDI5NzUyMHYzL3NvdXJjZXMvbWV0YS16eGljLWN1c3RvbS9yZWNpcGVzLWx5bnEvbHlucS1hdWRpby1kZW1vL2ZpbGVzL2x5bnEtYXVkaW8tZGVtby5jcHAgYi9jYXAvengyOTc1MjB2My9zb3VyY2VzL21ldGEtenhpYy1jdXN0b20vcmVjaXBlcy1seW5xL2x5bnEtYXVkaW8tZGVtby9maWxlcy9seW5xLWF1ZGlvLWRlbW8uY3BwCmluZGV4IDdhM2EzMzMuLjJkOTRkZjkgMTAwNzU1Ci0tLSBhL2NhcC96eDI5NzUyMHYzL3NvdXJjZXMvbWV0YS16eGljLWN1c3RvbS9yZWNpcGVzLWx5bnEvbHlucS1hdWRpby1kZW1vL2ZpbGVzL2x5bnEtYXVkaW8tZGVtby5jcHAKKysrIGIvY2FwL3p4Mjk3NTIwdjMvc291cmNlcy9tZXRhLXp4aWMtY3VzdG9tL3JlY2lwZXMtbHlucS9seW5xLWF1ZGlvLWRlbW8vZmlsZXMvbHlucS1hdWRpby1kZW1vLmNwcApAQCAtMiwxNSArMiw3NyBAQAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxhdG9taWM+CisjaW5jbHVkZSA8Y3NpZ25hbD4KKyNpbmNsdWRlIDxzaWduYWwuaD4KICNpbmNsdWRlICJyaW5nX3RlbGUuaCIKICNpbmNsdWRlIDxpbmNsdWRlL2x5bnEtcXNlci1hdWRpby5oPgogCisvLyBBZGQgYXRvbWljIGZsYWcgZm9yIG9uZS10aW1lIGNsZWFudXAKK25hbWVzcGFjZSB7CisgICAgc3RkOjphdG9taWM8Ym9vbD4gZ19jbGVhbnVwX2RvbmV7ZmFsc2V9OyAvLyBBdG9taWMgZmxhZyBmb3Igb25lLXRpbWUgY2xlYW51cAorfQorCiB0eXBlZGVmIGludCAoKmF1ZGlvX3Rlc3RfZnVuYykodm9pZCk7CiAKIGludCBnX2F1ZGlvX293bmVyX2lkID0gMDsKIGNoYXIgcGxheWVyX2RldmljZVtdID0gImRldmljZTEiOwogY2hhciByZWNvcmRlcl9kZXZpY2VbXSA9ICJkZXZpY2UyIjsKIAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIEBicmllZjogU2lnbmFsIGhhbmRsZXIgZm9yIGF1ZGlvIHJlc291cmNlIGNsZWFudXAKKyogQHBhcmFtIHNpZyBbSU5dOiBTaWduYWwgbnVtYmVyIHJlY2VpdmVkCisqIEBub3RlOiBFbnN1cmVzIGF1ZGlvIHJlc291cmNlcyBhcmUgcHJvcGVybHkgcmVsZWFzZWQgb24gdGVybWluYXRpb24KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyB2b2lkIGF1ZGlvX3NpZ25hbF9oYW5kbGVyKGludCBzaWcpCit7CisgICAgaWYoIWdfY2xlYW51cF9kb25lLmV4Y2hhbmdlKHRydWUpKSB7CisgICAgICAgIHByaW50ZigiW0F1ZGlvIERlbW9dIFJlY2VpdmVkIHRlcm1pbmF0aW9uIHNpZ25hbDolZCwgcGVyZm9ybWluZyBoYXJkd2FyZS1sZXZlbCBjbGVhbnVwLi4uXG4iLCBzaWcpOworICAgICAgICBmZmx1c2goc3Rkb3V0KTsgIC8vIEVuc3VyZSBsb2cgaW50ZWdyaXR5CisgICAgICAgIGZmbHVzaChzdGRlcnIpOworICAgICAgICBxc2VyX0F1ZGlvX0RlaW5pdCgpOworICAgIH0KKyAgICBfRXhpdChzaWcpOyAgLy8gVXNlIF9FeGl0IHRvIGF2b2lkIGF0ZXhpdCBoYW5kbGVycworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogQGJyaWVmOiBTaWduYWwgaGFuZGxlciByZWdpc3RyYXRpb24gKGF1dG8tZXhlY3V0ZWQgYmVmb3JlIG1haW4oKSkKKyogQG5vdGU6IDEuIFJlZ2lzdGVycyBjb21tb24gdGVybWluYXRpb24gc2lnbmFscworKiAgICAgICAgMi4gVXNlcyBzaWdhY3Rpb24gZm9yIGJldHRlciBzaWduYWwgbWFza2luZworKiAgICAgICAgMy4gQmxvY2tzIHJlbGF0ZWQgc2lnbmFscyBkdXJpbmcgaGFuZGxpbmcKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK19fYXR0cmlidXRlX18oKGNvbnN0cnVjdG9yKSkKK3N0YXRpYyB2b2lkIHJlZ2lzdGVyX3NpZ25hbF9oYW5kbGVycygpCit7CisgICAgc3RydWN0IHNpZ2FjdGlvbiBhY3Q7CisgICAgbWVtc2V0KCZhY3QsIDAsIHNpemVvZihhY3QpKTsKKyAgICBhY3Quc2FfaGFuZGxlciA9IGF1ZGlvX3NpZ25hbF9oYW5kbGVyOworCisgICAgLy8gQmxvY2sgcmVsYXRlZCBzaWduYWxzIGR1cmluZyBoYW5kbGluZworICAgIHNpZ2VtcHR5c2V0KCZhY3Quc2FfbWFzayk7CisgICAgc2lnYWRkc2V0KCZhY3Quc2FfbWFzaywgU0lHVEVSTSk7ICAvLyBUZXJtaW5hdGlvbiByZXF1ZXN0CisgICAgc2lnYWRkc2V0KCZhY3Quc2FfbWFzaywgU0lHSU5UKTsgICAvLyBUZXJtaW5hbCBpbnRlcnJ1cHQgKEN0cmwrQykKKyAgICBzaWdhZGRzZXQoJmFjdC5zYV9tYXNrLCBTSUdRVUlUKTsgIC8vIFRlcm1pbmFsIHF1aXQgKEN0cmwrXCkKKyAgICBzaWdhZGRzZXQoJmFjdC5zYV9tYXNrLCBTSUdIVVApOyAgIC8vIFRlcm1pbmFsIGhhbmd1cCBkZXRlY3Rpb24KKworICAgIC8vIFJlZ2lzdGVyIHN0YW5kYXJkIFBPU0lYIHNpZ25hbHMKKyAgICBzaWdhY3Rpb24oU0lHSU5ULCAgJmFjdCwgTlVMTCk7ICAgIC8vIFRlcm1pbmFsIGludGVycnVwdCAoQ3RybCtDKQorICAgIHNpZ2FjdGlvbihTSUdURVJNLCAmYWN0LCBOVUxMKTsgICAgLy8gRGVmYXVsdCBraWxsIHNpZ25hbAorICAgIHNpZ2FjdGlvbihTSUdRVUlULCAmYWN0LCBOVUxMKTsgICAgLy8gVGVybWluYWwgcXVpdCAoQ3RybCtcKQorICAgIHNpZ2FjdGlvbihTSUdIVVAsICAmYWN0LCBOVUxMKTsgICAgLy8gVGVybWluYWwgaGFuZ3VwCisKKyAgICAvLyBSZWdpc3RlciBjcml0aWNhbCBlcnJvciBzaWduYWxzCisgICAgc3RydWN0IHNpZ2FjdGlvbiBjcmFzaF9hY3Q7CisgICAgbWVtc2V0KCZjcmFzaF9hY3QsIDAsIHNpemVvZihjcmFzaF9hY3QpKTsKKyAgICBjcmFzaF9hY3Quc2FfaGFuZGxlciA9IGF1ZGlvX3NpZ25hbF9oYW5kbGVyOworICAgIGNyYXNoX2FjdC5zYV9mbGFncyA9IFNBX1JFU0VUSEFORDsgIC8vIFNpbmdsZS1zaG90IGhhbmRsZXIKKworICAgIHNpZ2FjdGlvbihTSUdTRUdWLCAmY3Jhc2hfYWN0LCBOVUxMKTsgIC8vIEludmFsaWQgbWVtb3J5IGFjY2VzcworICAgIHNpZ2FjdGlvbihTSUdJTEwsICAmY3Jhc2hfYWN0LCBOVUxMKTsgIC8vIElsbGVnYWwgaW5zdHJ1Y3Rpb24KKyAgICBzaWdhY3Rpb24oU0lHRlBFLCAgJmNyYXNoX2FjdCwgTlVMTCk7ICAvLyBGbG9hdGluZy1wb2ludCBleGNlcHRpb24KKyAgICBzaWdhY3Rpb24oU0lHQlVTLCAgJmNyYXNoX2FjdCwgTlVMTCk7ICAvLyBCdXMgZXJyb3IgKGJhZCBhbGlnbm1lbnQpCit9CisKIF9jYl9vblBsYXllciBjYl9mdW4gPSBbXShpbnQgcmVzdWx0KQogewogICAgIGlmIChyZXN1bHQgPT0gMCkKZGlmZiAtLWdpdCBhL2NhcC96eDI5NzUyMHYzL3NvdXJjZXMvbWV0YS16eGljL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL3p4Mjk3NTIwdjMvbGludXgtNV8xMC12ZWhpY2xlX2RjX3JlZi1ub3JtYWwtZGVmY29uZmlnIGIvY2FwL3p4Mjk3NTIwdjMvc291cmNlcy9tZXRhLXp4aWMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvengyOTc1MjB2My9saW51eC01XzEwLXZlaGljbGVfZGNfcmVmLW5vcm1hbC1kZWZjb25maWcKaW5kZXggOWJhYTk1NC4uYmQ0M2VjYiAxMDA3NTUKLS0tIGEvY2FwL3p4Mjk3NTIwdjMvc291cmNlcy9tZXRhLXp4aWMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvengyOTc1MjB2My9saW51eC01XzEwLXZlaGljbGVfZGNfcmVmLW5vcm1hbC1kZWZjb25maWcKKysrIGIvY2FwL3p4Mjk3NTIwdjMvc291cmNlcy9tZXRhLXp4aWMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvengyOTc1MjB2My9saW51eC01XzEwLXZlaGljbGVfZGNfcmVmLW5vcm1hbC1kZWZjb25maWcKQEAgLTE5NDAsNiArMTk0MCw3IEBACiAjIENPTkZJR19TTkRfU09DX1pYMjlfQUs0OTQwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NORF9TT0NfWlgyOV9NQVg5ODY3IGlzIG5vdCBzZXQKIENPTkZJR19TTkRfU09DX1pYMjlfRVM4MzExPXkKKyMgQ09ORklHX1NORF9TT0NfWlgyOV9FUzgzODkgaXMgbm90IHNldAogQ09ORklHX1NORF9TT0NfWlhfVk9JQ0U9eQogQ09ORklHX1NORF9TT0NfWlgyOTc1MjBWMz15CiBDT05GSUdfU05EX1NPQ19aWF9JMlM9eQpAQCAtMTk1MCw2ICsxOTUxLDcgQEAKICMgQ09ORklHX1NORF9TT0NfVExWMzIwQUlDM1ggaXMgbm90IHNldAogIyBDT05GSUdfU05EX1NPQ19NQVg5ODY3IGlzIG5vdCBzZXQKIENPTkZJR19TTkRfU09DX0VTODMxMT15CisjIENPTkZJR19TTkRfU09DX0VTODM4OSBpcyBub3Qgc2V0CiAjZG9uZ3l1QG1vZGlmeSBmb3IgY29kZWMgZW5kCiBDT05GSUdfU05EX0VYVFJBX0NUUkw9eQogQ09ORklHX1VTRV9UT1BfSTJTMD15CmRpZmYgLS1naXQgYS9jYXAvengyOTc1MjB2My9zcmMvbHlucS9mcmFtZXdvcmsvbHlucS1zZGstcmVhZHkvbHlucV90aW1lci5jcHAgYi9jYXAvengyOTc1MjB2My9zcmMvbHlucS9mcmFtZXdvcmsvbHlucS1zZGstcmVhZHkvbHlucV90aW1lci5jcHAKaW5kZXggZDIyYTczNi4uMzFhMDJhNyAxMDA3NTUKLS0tIGEvY2FwL3p4Mjk3NTIwdjMvc3JjL2x5bnEvZnJhbWV3b3JrL2x5bnEtc2RrLXJlYWR5L2x5bnFfdGltZXIuY3BwCisrKyBiL2NhcC96eDI5NzUyMHYzL3NyYy9seW5xL2ZyYW1ld29yay9seW5xLXNkay1yZWFkeS9seW5xX3RpbWVyLmNwcApAQCAtMjQsNiArMjQsNyBAQAogDQogDQogI2RlZmluZSBMT0dfVUNJX0ZJTEUgImx5bnFfdWNpIg0KKyNkZWZpbmUgTE9HX1VDSV9ST19GSUxFICJseW5xX3VjaV9ybyINCiAjZGVmaW5lIExPR19VQ0lfTU9EVUxFICJkZWJ1Z19tb2RlIg0KIA0KIHVzaW5nIDo6YW5kcm9pZDo6UGFyY2VsOw0KQEAgLTM4LDYgKzM5LDggQEAKIH1seW5xX2NsaWVudF90Ow0KIA0KIGludCBudW0gPSAwOw0KK2ludCBuZl9jb25udHJhY2tfbWF4ID0gMDsNCitpbnQgY29ubnRyYWNrX2ZsYWcgPSAwOw0KIA0KIGludCBtYXhfbnVtOw0KIHN0YXRpYyBpbnQgZ2V0X21kX3N0YSh2b2lkKQ0KQEAgLTEyNCw2ICsxMjcsMzcgQEAKICAgICByZXR1cm4gMDsNCiB9DQogDQorDQorc3RhdGljIGludCB0MTA2X2dldF9jdXJyZW50X2Nvbm50cmFjaygpDQorew0KKyAgICBGSUxFICpmcCA9IGZvcGVuKCIvcHJvYy9zeXMvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY291bnQiLCAiciIpOw0KKyAgICBpbnQgY291bnQgPSAtMTsNCisgICAgDQorICAgIGlmKGZwKQ0KKyAgICB7DQorICAgICAgICBmc2NhbmYoZnAsICIlZCIsICZjb3VudCk7DQorICAgICAgICBBTE9HRCgibmZfY29ubnRyYWNrX2NvdW50IGlzICVkIixjb3VudCk7DQorICAgICAgICBmY2xvc2UoZnApOw0KKyAgICB9DQorICAgIA0KKyAgICByZXR1cm4gY291bnQ7DQorfQ0KKw0KK2ludCBnZXRfY29ubnRyYWNrX2NvdW50KHZvaWQpDQorew0KKyAgICBpbnQgY3VycmVudF9udW0gPSAwOw0KKw0KKyAgICBjdXJyZW50X251bSA9IHQxMDZfZ2V0X2N1cnJlbnRfY29ubnRyYWNrKCk7DQorICAgIGlmKGN1cnJlbnRfbnVtID09IG5mX2Nvbm50cmFja19tYXgpDQorICAgIHsNCisgICAgICAgIHJldHVybiAxOw0KKyAgICB9DQorICAgIGVsc2UNCisgICAgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCit9DQorDQogLyoqDQogICogQGJyaWVmIDMwcyByZXF1ZXN0IGltZWkNCiAgKiANCkBAIC0yODYsOCArMzIwLDMwIEBACiAgICAgICAgIC8qanVkZ2UgdGhlIHJlc19lcnJvciovDQogICAgICAgICBpZighcmVzX2Vycm9yKQ0KICAgICAgICAgew0KLSAgICAgICAgICAgIGx5bnFfc2V0X3NlY3Rpb24oInNka19yZWFkeSIsICIwIik7DQotICAgICAgICAgICAgUkxPR0UoInNka19yZWFkeSA9IDBcbiIpOw0KKyAgICAgICAgICAgIGlmKGNvbm50cmFja19mbGFnKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgcmV0ID0gZ2V0X2Nvbm50cmFja19jb3VudCgpOw0KKyAgICAgICAgICAgICAgICBpZihyZXQgPT0gMSkNCisgICAgICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICAgICAgQUxPR0QoInByaW50IG5mX2Nvbm50cmFjayBpbiB2YXIvbG9nIik7DQorICAgICAgICAgICAgICAgICAgICBzeXN0ZW0oImRhdGUgPiAvdmFyL2xvZy9jb25udHJhY2sudHh0Iik7DQorICAgICAgICAgICAgICAgICAgICBzeXN0ZW0oImNhdCAvcHJvYy9uZXQvbmZfY29ubnRyYWNrID4+IC92YXIvbG9nL2Nvbm50cmFjay50eHQiKTsNCisgICAgICAgICAgICAgICAgICAgIGx5bnFfc2V0X3NlY3Rpb24oInNka19yZWFkeSIsICI1Iik7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgICAgIGVsc2UgaWYocmV0ID09IDApDQorICAgICAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgICAgIGx5bnFfc2V0X3NlY3Rpb24oInNka19yZWFkeSIsICIwIik7DQorICAgICAgICAgICAgICAgICAgICBSTE9HRSgic2RrX3JlYWR5ID0gMFxuIik7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIA0KKyAgICAgICAgICAgIGVsc2UNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIGx5bnFfc2V0X3NlY3Rpb24oInNka19yZWFkeSIsICIwIik7DQorICAgICAgICAgICAgICAgIFJMT0dFKCJzZGtfcmVhZHkgPSAwXG4iKTsNCisgICAgICAgICAgICB9DQogICAgICAgICB9DQogICAgICAgICBlbHNlDQogICAgICAgICB7DQpAQCAtNjIzLDE1ICs2NzksNDAgQEAKIA0KIA0KIA0KK2ludCB0MTA2X2dldF9jb25udHJhY2tfbWF4KHZvaWQpDQorew0KKyAgICAvL29ubHkgd2hlbiBwcm9ncmVzcyBzdGFydHVwIHRvIGdldCBuZl9jb25udHJhY2tfbWF4DQorICAgIEZJTEUgKmZwID0gZm9wZW4oIi9wcm9jL3N5cy9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19tYXgiLCAiciIpOw0KKyAgICANCisgICAgaWYoZnApDQorICAgIHsNCisgICAgICAgIGZzY2FuZihmcCwgIiVkIiwgJm5mX2Nvbm50cmFja19tYXgpOw0KKyAgICAgICAgQUxPR0QoIm5mX2Nvbm50cmFja19tYXggPSAlZCIsbmZfY29ubnRyYWNrX21heCk7DQorICAgICAgICBmY2xvc2UoZnApOw0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0gDQorICAgIA0KKyAgICBlbHNlIA0KKyAgICB7DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCisNCit9DQorDQorDQorDQorDQorDQogdm9pZCBzdGFydF90aW1lcl9yZXF1ZXN0KHZvaWQpDQogew0KLSAgICBwdGhyZWFkX3QgdGhpZCx0aGlkXzEsdGhpZF8yOw0KKyAgICBwdGhyZWFkX3QgdGhpZCx0aGlkXzEsdGhpZF8yLHRoaWRfMzsNCiAgICAgcHRocmVhZF9hdHRyX3QgYTsNCiAgICAgcHRocmVhZF9hdHRyX2luaXQoJmEpOw0KICAgICBwdGhyZWFkX2F0dHJfc2V0ZGV0YWNoc3RhdGUoJmEsIFBUSFJFQURfQ1JFQVRFX0RFVEFDSEVEKTsNCiANCiAgICAgY2hhciB0bXBbMjBdOw0KICAgICBpbnQgZGVidWdfbW9kZTsNCisgICAgaW50IGNvbm50cmFja19tb2RlID0gMDsNCiAgICAgaW50IHJldDsNCiANCiAgICAgQUxPR0QoInN0YXJ0IGx5bnEtc2RrLXJlYWR5XG4iKTsNCkBAIC02NDksNiArNzMwLDI1IEBACiAgICAgfQ0KICAgICBwdGhyZWFkX2RldGFjaCh0aGlkXzIpOw0KICovDQorDQorICAgIC8vcmVhZCB1Y2kNCisgICAgcmV0ID0gbHlucV9nZXRfdmFsdWUoTE9HX1VDSV9ST19GSUxFLCBMT0dfVUNJX01PRFVMRSwgImNvbm50cmFja19tb2RlIiwgdG1wKTsNCisgICAgQUxPR0QoInJldCA9ICVkLCB0bXAgaXMgJXNcbiIscmV0LHRtcCk7DQorICAgIGNvbm50cmFja19tb2RlID0gYXRvaSh0bXApOw0KKyAgICANCisgICAgaWYoY29ubnRyYWNrX21vZGUgPT0gMSkNCisgICAgew0KKyAgICAgICAgaWYodDEwNl9nZXRfY29ubnRyYWNrX21heCgpIDwgMCkNCisgICAgICAgIHsNCisgICAgICAgICAgICBBTE9HRCgiY2FuIG5vdCBnZXQgY29ubnRyYWNrX21heCIpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZWxzZQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGNvbm50cmFja19mbGFnID0gMTsNCisgICAgICAgIH0NCisgICAgfQ0KKw0KKw0KICAgICByZXQgPSBwdGhyZWFkX2NyZWF0ZSgmdGhpZCwgJmEsIHRpbWVyX3JlcXVlc3RfaW1laSwgTlVMTCk7DQogICAgIGlmKHJldCAhPSAwKXsNCiAgICAgICAgIEFMT0dEKCJwdGhyZWFkX2NyZWF0ZSBlcnJvciEhISIpOw0KZGlmZiAtLWdpdCBhL2NhcC96eDI5NzUyMHYzL3NyYy9seW5xL2xpYi9saWJseW5xLWF0LWZhY3RvcnkvbGlibHlucS1hdC1mYWN0b3J5LmNwcCBiL2NhcC96eDI5NzUyMHYzL3NyYy9seW5xL2xpYi9saWJseW5xLWF0LWZhY3RvcnkvbGlibHlucS1hdC1mYWN0b3J5LmNwcAppbmRleCA1YWRkM2ExLi5iYjNmZDY0IDEwMDc1NQotLS0gYS9jYXAvengyOTc1MjB2My9zcmMvbHlucS9saWIvbGlibHlucS1hdC1mYWN0b3J5L2xpYmx5bnEtYXQtZmFjdG9yeS5jcHAKKysrIGIvY2FwL3p4Mjk3NTIwdjMvc3JjL2x5bnEvbGliL2xpYmx5bnEtYXQtZmFjdG9yeS9saWJseW5xLWF0LWZhY3RvcnkuY3BwCkBAIC01LDYgKzUsNyBAQAogI2luY2x1ZGUgPHN5cy90aW1lLmg+DQogI2luY2x1ZGUgPHVuaXN0ZC5oPg0KICNpbmNsdWRlIDxlcnJvci5oPg0KKyNpbmNsdWRlIDxmY250bC5oPg0KICNpbmNsdWRlIDxzdHJpbmcuaD4NCiAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPg0KICNpbmNsdWRlIDxuZXRpbmV0L2V0aGVyLmg+DQpAQCAtMTAxLDYgKzEwMiwxNTMgQEAKICAgICBwY2xvc2UoZnApOw0KIH0NCiANCisNCitzdGF0aWMgaW50IGNyZWF0ZV9lbW1jX3BhcnRpdGlvbnMoKQ0KK3sNCisNCisgICAgaW50IHJldCA9IC0xOw0KKyAgICANCisgICAgY29uc3QgY2hhciAqZmRpc2tfY21kID0gImVjaG8gLWUgJ25cbnBcbjFcblxuXG53XG4nIHwgZmRpc2sgJy9kZXYvbW1jYmxrMSciOw0KKw0KKyAgICByZXQgPSBzeXN0ZW0oZmRpc2tfY21kKTsNCisgICAgaWYocmV0IDwgMCkNCisgICAgew0KKyAgICAgICAgQUxPR0UoImNyZWF0ZV9lbW1jX3BhcnRpdGlvbnMgZmFpbGVkIik7DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCisgICAgDQorICAgIHJldHVybiAwOw0KK30NCisNCisNCitzdGF0aWMgaW50IGNoZWNrX2VtbWNfcGFydGl0aW9ucygpDQorew0KKyAgICBpbnQgZmQgPSBvcGVuKCIvZGV2L21tY2JsazFwMSIsIE9fUkRPTkxZKTsNCisgICAgDQorICAgIGlmKGZkIDwgMCkgLy9ubyBleGlzdCxuZWVkIGNyZWF0ZQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICANCisgICAgY2xvc2UoZmQpOw0KKyAgICByZXR1cm4gMTsNCit9DQorDQorDQorDQoraW50IGx5bnFfaGFuZGxlX2VtbWNfaW8odm9pZCkNCit7DQorICAgIGludCBmZDsNCisgICAgaW50IGRhdGFfc2l6ZSA9IDUxMjsNCisgICAgaW50IHJldDsNCisgICAgY2hhciAqd3JpdGVfYnVmOw0KKyAgICBjaGFyICpyZWFkX2J1ZjsNCisgICAgDQorICAgIC8vY2hlY2sgcGFydGl0aW9ucw0KKyAgICByZXQgPSBjaGVja19lbW1jX3BhcnRpdGlvbnMoKTsNCisgICAgDQorICAgIGlmKHJldCA9PSAwKS8vbm8gZXhpc3QNCisgICAgew0KKyAgICAgICAgLy9jcmVhdGUgYSBuZXcgcGFydGl0aW9ucyhtbWNibGsxcDEpDQorICAgICAgICByZXQgPSBjcmVhdGVfZW1tY19wYXJ0aXRpb25zKCk7DQorICAgICAgICBpZihyZXQgPCAwKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgIH0NCisgICAgICAgIA0KKyAgICAgICAgLy9jaGVjayBwYXJ0aXRpb25zIGFnYWluDQorICAgICAgICByZXQgPSBjaGVja19lbW1jX3BhcnRpdGlvbnMoKTsNCisgICAgICAgIGlmKHJldCA8IDApDQorICAgICAgICB7DQorICAgICAgICAgICAgQUxPR0UoImNoZWNrIHBhcnRpdGlvbnMgYWdhaW4gZmFpbGVkIik7DQorICAgICAgICB9DQorICAgICAgICANCisgICAgICAgIC8vZm9ybWF0IHBhcnRpdGlvbnMNCisgICAgICAgIHN5c3RlbSgiZWNobyAtZSAnL24vbicgfCBta2ZzLmV4dDQgL2Rldi9tbWNibGsxcDEiKTsNCisNCisgICAgICAgIC8vbW91bnQgdG8gL3Zhci9sb2cNCisgICAgICAgIHN5c3RlbSgibW91bnQgL2Rldi9tbWNibGsxcDEgL3Zhci9sb2ciKTsNCisgICAgfQ0KKyAgICANCisgICAgLy9hbHJlYWR5IGV4aXN0LHNvIG5vIG5lZWQgdG8gY3JlYXRlDQorICAgIA0KKyAgICB3cml0ZV9idWYgPSBtYWxsb2MoZGF0YV9zaXplKTsNCisgICAgaWYod3JpdGVfYnVmID09IE5VTEwpDQorICAgIHsNCisgICAgICAgQUxPR0UoIm1hbGxvYyBmYWlsZWQiKTsNCisgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIA0KKyAgICBtZW1zZXQod3JpdGVfYnVmLCAwWEFBLCBkYXRhX3NpemUpOw0KKyAgICANCisgICAgZmQgPSBvcGVuKCIvdmFyL2xvZy9lbW1jX3Rlc3QudHh0IiwgT19XUk9OTFkgfCBPX1NZTkMgfCBPX0NSRUFUIHwgT19UUlVOQywwNjAwICk7DQorICAgIGlmKGZkID09IC0xKQ0KKyAgICB7DQorICAgICAgIEFMT0dFKCJPcGVuIGZvciB3cml0ZSBmYWlsZWQiKTsNCisgICAgICAgZnJlZSh3cml0ZV9idWYpOw0KKyAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCisgICAgDQorICAgIC8vd3JpdGUgZGF0YQ0KKyAgICBpZiAod3JpdGUoZmQsIHdyaXRlX2J1ZiwgZGF0YV9zaXplKSAhPSBkYXRhX3NpemUpIHsNCisgICAgICAgIEFMT0dFKCJXcml0ZSBmYWlsZWQiKTsNCisgICAgICAgIGhhbmRsZV9vdXRwdXQoIitlbW1jOiBXcml0ZSBmYWlsZWQiLCBzdHJsZW4oIitlbW1jOiBXcml0ZSBmYWlsZWQiKSwgUmVzcG9uc2UpOw0KKyAgICAgICAgY2xvc2UoZmQpOw0KKyAgICAgICAgZnJlZSh3cml0ZV9idWYpOw0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIA0KKyAgICBjbG9zZShmZCk7DQorICAgIHN5c3RlbSgic3luYyIpOw0KKyAgICANCisgICAgLy9yZWFkIGRhdGENCisgICAgcmVhZF9idWYgPSBtYWxsb2MoZGF0YV9zaXplKTsNCisgICAgaWYocmVhZF9idWYgPT0gTlVMTCkNCisgICAgew0KKyAgICAgICBBTE9HRSgibWFsbG9jIGZhaWxlZCIpOw0KKyAgICAgICBmcmVlKHdyaXRlX2J1Zik7DQorICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKyAgICANCisgICAgLy9yZW9wZW4ocmVhZCBtb2RlKQ0KKyAgICBmZCA9IG9wZW4oIi92YXIvbG9nL2VtbWNfdGVzdC50eHQiLCBPX1JET05MWSk7DQorICAgIGlmKGZkID09IC0xKQ0KKyAgICB7DQorICAgICAgIEFMT0dFKCJvcGVuIGZvciByZWFkIGZhaWxlZCIpOw0KKyAgICAgICBmcmVlKHdyaXRlX2J1Zik7DQorICAgICAgIGZyZWUocmVhZF9idWYpOw0KKyAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCisNCisgICAgaWYocmVhZChmZCwgcmVhZF9idWYsIGRhdGFfc2l6ZSkgIT0gZGF0YV9zaXplKQ0KKyAgICB7DQorICAgICAgIEFMT0dFKCJSZWFkIGZhaWxlZCIpOw0KKyAgICAgICBoYW5kbGVfb3V0cHV0KCIrZW1tYzogUmVhZCBmYWlsZWQiLCBzdHJsZW4oIitlbW1jOiBSZWFkIGZhaWxlZCIpLCBSZXNwb25zZSk7DQorICAgICAgIGZyZWUod3JpdGVfYnVmKTsNCisgICAgICAgZnJlZShyZWFkX2J1Zik7DQorICAgICAgIGNsb3NlKGZkKTsNCisgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIA0KKyAgICAvL2NoZWNrIGRhdGENCisgICAgaWYgKG1lbWNtcCh3cml0ZV9idWYsIHJlYWRfYnVmLCBkYXRhX3NpemUpID09IDApIHsNCisgICAgICAgIEFMT0dFKCJEYXRhIHZlcmlmaWNhdGlvbiBzdWNjZXNzISwiKTsNCisgICAgICAgIGhhbmRsZV9vdXRwdXQoIitlbW1jOiBlbW1jIHdyaXRlL3JlYWQgc3VjY2VzcyIsIHN0cmxlbigiK2VtbWM6IGVtbWMgd3JpdGUvcmVhZCBzdWNjZXNzIiksIFJlc3BvbnNlKTsNCisgICAgICAgIGNsb3NlKGZkKTsNCisgICAgICAgIGZyZWUod3JpdGVfYnVmKTsNCisgICAgICAgIGZyZWUocmVhZF9idWYpOw0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBBTE9HRSgiRGF0YSB2ZXJpZmljYXRpb24gZmFpbGVkISIpOw0KKyAgICAgICAgaGFuZGxlX291dHB1dCgiK2VtbWM6IERhdGEgdmVyaWZpY2F0aW9uIGZhaWxlZCEiLCBzdHJsZW4oIitlbW1jOiBEYXRhIHZlcmlmaWNhdGlvbiBmYWlsZWQhIiksIFJlc3BvbnNlKTsNCisgICAgICAgIGNsb3NlKGZkKTsNCisgICAgICAgIGZyZWUod3JpdGVfYnVmKTsNCisgICAgICAgIGZyZWUocmVhZF9idWYpOw0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorfQ0KKw0KKw0KIHZvaWQgbHlucV9oYW5kbGVfZW1tYyhjaGFyICppbnB1dCkNCiB7DQogICAgIEZJTEUgKmZwOw0KQEAgLTExOSw3ICsyNjcsMTQgQEAKICAgICAgICAgcmV0dXJuOw0KICAgICB9DQogICAgIHdoaWxlKGZnZXRzKGJ1Ziwgc2l6ZW9mKGJ1ZiksIGZwKSAhPSBOVUxMKXsNCi0gICAgICAgIGx5bnFfcmVzcG9uc2Vfb2soKTsNCisgICAgICAgIGlmKGx5bnFfaGFuZGxlX2VtbWNfaW8oKSA8IDApDQorICAgICAgICB7DQorICAgICAgICAgICAgbHlucV9yZXNwb25zZV9lcnJvcigxMDApOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZWxzZQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGx5bnFfcmVzcG9uc2Vfb2soKTsNCisgICAgICAgIH0NCiAgICAgICAgIHBjbG9zZShmcCk7DQogICAgICAgICByZXR1cm47DQogICAgIH0NCkBAIC0xMjgsNiArMjgzLDggQEAKIH0NCiANCiANCisNCisNCiAvKioqKioqZ3BpbyBBUEkqKioqKiovDQogLypzY19ncGlvX2luaXQoZ3BpbywgZGlyZWN0aW9uLCB2YWx1ZSwgcHVsbHNlbCk7DQogICBzY19ncGlvX2RpcmVjdGlvbl9zZXQodGVzdF9ncGlvX2hhbmRsZVtncGlvXSwgZGlyZWN0aW9uLCAwKTsNCmRpZmYgLS1naXQgYS9jYXAvengyOTc1MjB2My9zcmMvbHlucS9saWIvbGlibHlucS1jYWxsL2x5bnFfY2FsbC5jcHAgYi9jYXAvengyOTc1MjB2My9zcmMvbHlucS9saWIvbGlibHlucS1jYWxsL2x5bnFfY2FsbC5jcHAKaW5kZXggZDQyMTQyZS4uYzQ1ZjVmOCAxMDA3NTUKLS0tIGEvY2FwL3p4Mjk3NTIwdjMvc3JjL2x5bnEvbGliL2xpYmx5bnEtY2FsbC9seW5xX2NhbGwuY3BwCisrKyBiL2NhcC96eDI5NzUyMHYzL3NyYy9seW5xL2xpYi9saWJseW5xLWNhbGwvbHlucV9jYWxsLmNwcApAQCAtNDYsMTggKzQ2LDYgQEAKICAqLw0KIGludCBnX21vZHVsZV9pbml0X2ZsYWcgPSAwOw0KIA0KLSB0eXBlZGVmIGVudW0gew0KLSAgICAgTFlOUV9DQUxMX0FDVElWRSA9IDAsDQotICAgICBMWU5RX0NBTExfSE9MRElORyA9IDEsDQotICAgICBMWU5RX0NBTExfRElBTElORyA9IDIsICAgIC8qIE1PIGNhbGwgb25seSAqLw0KLSAgICAgTFlOUV9DQUxMX0FMRVJUSU5HID0gMywgICAvKiBNTyBjYWxsIG9ubHkgKi8NCi0gICAgIExZTlFfQ0FMTF9JTkNPTUlORyA9IDQsICAgLyogTVQgY2FsbCBvbmx5ICovDQotICAgICBMWU5RX0NBTExfV0FJVElORyA9IDUsICAgIC8qIE1UIGNhbGwgb25seSAqLw0KLSAgICAgLyp3YXJyZW4gYWRkIGZvciBUODAwIHBsYXRmb3JtIDIwMjIvMDQvMjYgc3RhcnQqLw0KLSAgICAgTFlOUV9DQUxMX0VORCA9IDYsICAgICAgICAgLypDQUxMIEVORCovDQotICAgICAvKndhcnJlbiBhZGQgZm9yIFQ4MDAgcGxhdGZvcm0gMjAyMi8wNC8yNiBlbmQqLw0KLX1seW5xX2NhbGxfc3RhdGVfdDsNCi0NCiB0eXBlZGVmIHN0cnVjdA0KIHsNCiAgICAgaW50IHVzZWQ7DQpAQCAtMzI1LDE0ICszMTMsMTUgQEAKICAgICB9DQogICAgIHJldHVybiBJTlZBTElEX0lEOw0KIH0NCi1pbnQgYWRkQWRkcihjaGFyIGFkZHJbXSwgaW50IGNhbGxfaWQpDQoraW50IGFkZEFkZHIoY2hhciBhZGRyW10sIGludCBjYWxsX2lkLCBpbnQgY2FsbF9zdGF0ZSkNCiB7DQogICAgIGludCByZXQgPSAwOw0KICAgICByZXQgPSBnZXRVbnVzZWRFbGVtZW50KCk7DQogICAgIG1lbWNweShzX2NhbGxfbGlzdHNbcmV0XS5hZGRyLGFkZHIsc3RybGVuKGFkZHIpKzEpOw0KICAgICBzX2NhbGxfbGlzdHNbcmV0XS5jYWxsX2lkPWNhbGxfaWQ7DQogICAgIHNfY2FsbF9saXN0c1tyZXRdLnVzZWQgPSAxOw0KLSAgICBMWUlORkxPRygiYWRkIGxvY2FsIGlkeCBpcyAlZCBhZGRyIGlzICVzIixyZXQsYWRkcik7DQorICAgIHNfY2FsbF9saXN0c1tyZXRdLmNhbGxfc3RhdGUgPSBjYWxsX3N0YXRlOw0KKyAgICBMWUlORkxPRygiYWRkIGxvY2FsIGlkeCBpcyAlZCBhZGRyIGlzICVzIHN0YXRlIGlzICVkIixyZXQsYWRkcixjYWxsX3N0YXRlKTsNCiAgICAgcmV0dXJuIHJldDsNCiB9DQogdm9pZCB1cGRhdGVDYWxsTGlzdChseW5xX2NhbGxfbGlzdF9lX3QgKmNhbGxMaXN0LCAgICBpbnQgY2FsbF9pZCxpbnQgY2FsbF9zdGF0ZSxpbnQgdG9hLGludCBkaXJlY3Rpb24pDQpAQCAtNTIxLDcgKzUxMCw3IEBACiAgICAgICAgICAgICAgICAgbiA9IGZpbmRfY2FsbF9pZF93aXRoX2FkZHIoY2FsbF9saXN0W2ldLmFkZHIpOw0KICAgICAgICAgICAgICAgICBpZihuID09SU5WQUxJRF9JRCkNCiAgICAgICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICAgICAgbiA9IGFkZEFkZHIoY2FsbF9saXN0W2ldLmFkZHIsY2FsbF9saXN0W2ldLmNhbGxfaWQpOw0KKyAgICAgICAgICAgICAgICAgICAgbiA9IGFkZEFkZHIoY2FsbF9saXN0W2ldLmFkZHIsY2FsbF9saXN0W2ldLmNhbGxfaWQsY2FsbF9saXN0W2ldLmNhbGxfc3RhdGUpOw0KICAgICAgICAgICAgICAgICAgICAgdXBkYXRlQ2FsbExpc3QoJnNfY2FsbF9saXN0c1tuXSxjYWxsX2xpc3RbaV0uY2FsbF9pZCxjYWxsX2xpc3RbaV0uY2FsbF9zdGF0ZSxjYWxsX2xpc3RbaV0udG9hLGNhbGxfbGlzdFtpXS5kaXJlY3Rpb24pOw0KICAgICAgICAgICAgICAgICAgICAgc2VuZF9jYWxsX3N0YXRlX2NoYW5nZShjYWxsX2xpc3RbaV0uY2FsbF9pZCk7DQogICAgICAgICAgICAgICAgIH0NCkBAIC05NjksNyArOTU4LDcgQEAKICAgICB9DQogI2VuZGlmICAgDQogICAgIFBhcmNlbCogcD1OVUxMOw0KLSAgICBseW5xX2NhbGxfaWQgPSBhZGRBZGRyKGFkZHIsMCk7DQorICAgIGx5bnFfY2FsbF9pZCA9IGFkZEFkZHIoYWRkciwwLExZTlFfQ0FMTF9FTkQpOw0KICAgICBpbnQgcmV0PWx5bnFfc2VuZF9jb21tb25fcmVxdWVzdChwLGdfd2FpdF90aW1lLFJJTF9SRVFVRVNUX0RJQUwsMiwiJXMgJWQiLGFkZHIsIDApOw0KICAgICBpZihyZXQhPTApDQogICAgIHsNCmRpZmYgLS1naXQgYS9jYXAvengyOTc1MjB2My9zcmMvbHlucS9saWIvbGlibHlucS1jYWxsL2x5bnFfY2FsbF9jb21tb24uaCBiL2NhcC96eDI5NzUyMHYzL3NyYy9seW5xL2xpYi9saWJseW5xLWNhbGwvbHlucV9jYWxsX2NvbW1vbi5oCmluZGV4IGU2NWYyNDMuLjM1NTcyNWEgMTAwNzU1Ci0tLSBhL2NhcC96eDI5NzUyMHYzL3NyYy9seW5xL2xpYi9saWJseW5xLWNhbGwvbHlucV9jYWxsX2NvbW1vbi5oCisrKyBiL2NhcC96eDI5NzUyMHYzL3NyYy9seW5xL2xpYi9saWJseW5xLWNhbGwvbHlucV9jYWxsX2NvbW1vbi5oCkBAIC00LDcgKzQsMjAgQEAKICNkZWZpbmUgSU5WQUxJRF9JRCAoLTEpDQogDQogaW50IGZpbmRfY2FsbF9pZF93aXRoX2NhbGxfaWQoaW50IGNhbGxfaWQpOw0KLWludCBhZGRBZGRyKGNoYXIgYWRkcltdLCBpbnQgY2FsbF9pZCk7DQorDQorIHR5cGVkZWYgZW51bSB7DQorICAgICBMWU5RX0NBTExfQUNUSVZFID0gMCwNCisgICAgIExZTlFfQ0FMTF9IT0xESU5HID0gMSwNCisgICAgIExZTlFfQ0FMTF9ESUFMSU5HID0gMiwgICAgLyogTU8gY2FsbCBvbmx5ICovDQorICAgICBMWU5RX0NBTExfQUxFUlRJTkcgPSAzLCAgIC8qIE1PIGNhbGwgb25seSAqLw0KKyAgICAgTFlOUV9DQUxMX0lOQ09NSU5HID0gNCwgICAvKiBNVCBjYWxsIG9ubHkgKi8NCisgICAgIExZTlFfQ0FMTF9XQUlUSU5HID0gNSwgICAgLyogTVQgY2FsbCBvbmx5ICovDQorICAgICAvKndhcnJlbiBhZGQgZm9yIFQ4MDAgcGxhdGZvcm0gMjAyMi8wNC8yNiBzdGFydCovDQorICAgICBMWU5RX0NBTExfRU5EID0gNiwgICAgICAgICAvKkNBTEwgRU5EKi8NCisgICAgIC8qd2FycmVuIGFkZCBmb3IgVDgwMCBwbGF0Zm9ybSAyMDIyLzA0LzI2IGVuZCovDQorfWx5bnFfY2FsbF9zdGF0ZV90Ow0KKw0KK2ludCBhZGRBZGRyKGNoYXIgYWRkcltdLCBpbnQgY2FsbF9pZCxpbnQgY2FsbF9zdGF0ZSk7DQogaW50IHdhaXRDYWxsc3RhdGVDaGFuZ2UoaW50IG10aW1lKTsNCiB2b2lkIHNlbmRTaWduYWxUb1dhaXRDYWxsU3RhdGVDaGFuZ2UoKTsNCiB2b2lkIGx5bnFOb3RpY2VHZXRNb2R1bGVDYWxsTGlzdCgpOw0KZGlmZiAtLWdpdCBhL2NhcC96eDI5NzUyMHYzL3NyYy9seW5xL2xpYi9saWJseW5xLWNhbGwvbHlucV9jYWxsX2VjYWxsLmNwcCBiL2NhcC96eDI5NzUyMHYzL3NyYy9seW5xL2xpYi9saWJseW5xLWNhbGwvbHlucV9jYWxsX2VjYWxsLmNwcAppbmRleCAxNWRjNmRjLi5iOTBiNGJjIDEwMDc1NQotLS0gYS9jYXAvengyOTc1MjB2My9zcmMvbHlucS9saWIvbGlibHlucS1jYWxsL2x5bnFfY2FsbF9lY2FsbC5jcHAKKysrIGIvY2FwL3p4Mjk3NTIwdjMvc3JjL2x5bnEvbGliL2xpYmx5bnEtY2FsbC9seW5xX2NhbGxfZWNhbGwuY3BwCkBAIC02MTMsNyArNjEzLDcgQEAKICAgICAgICAgICAgICAgICAgICBpZihmaW5kX2NhbGxfaWRfd2l0aF9jYWxsX2lkKGVjYWxsSWQpPT1JTlZBTElEX0lEKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgTFlJTkZMT0coImFkZCBlY2FsbCBpbiBsb2FjbCBsaXN0Iik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJIA0KLSAgICAgICAgICAgICAgICAgICAgICAgIGFkZEFkZHIoImVjYWxsIixlY2FsbElkKTsgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgICAgICBhZGRBZGRyKCJlY2FsbCIsZWNhbGxJZCxMWU5RX0NBTExfQUNUSVZFKTsgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgfQkNCiAgICAgICAgICAgICAgICAgICAgc19lY2FsbElkID0gZWNhbGxJZDsgLy9BUEktODcxIGVjYWxsIGlkIG1heWJlIGV4aXN0cyBpbiBsb2NhbCBsaXN0IGFzIG5vcmFtbCBjYWxsIHRvIGJlIHJlcGxhY2VkDQogICAgICAgICAgICAgICAgfSAgICAgCSAgICAgICAJICAgDQpkaWZmIC0tZ2l0IGEvY2FwL3p4Mjk3NTIwdjMvc3JjL2x5bnEvbGliL2xpYmx5bnEtZGF0YS9seW5xX2RhdGEuY3BwIGIvY2FwL3p4Mjk3NTIwdjMvc3JjL2x5bnEvbGliL2xpYmx5bnEtZGF0YS9seW5xX2RhdGEuY3BwCmluZGV4IGVhYjE1ZGMuLjU5MTY3YzcgMTAwNzU1Ci0tLSBhL2NhcC96eDI5NzUyMHYzL3NyYy9seW5xL2xpYi9saWJseW5xLWRhdGEvbHlucV9kYXRhLmNwcAorKysgYi9jYXAvengyOTc1MjB2My9zcmMvbHlucS9saWIvbGlibHlucS1kYXRhL2x5bnFfZGF0YS5jcHAKQEAgLTE2MzcsNyArMTYzNyw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgLy9nZXRfcmVzcG9uc2UobHlucV9jbGllbnRfc29ja2ZkLHApOwotICAgIGVycm9yID0gd2FpdF9yZXNwb25zZShseW5xX2NsaWVudF9zb2NrZmQscCxjbGllbnQudVRva2VuLGdfd2FpdF90aW1lKTsKKyAgICBlcnJvciA9IHdhaXRfcmVzcG9uc2UobHlucV9jbGllbnRfc29ja2ZkLHAsY2xpZW50LnVUb2tlbiw1KTsKICAgICBpZihlcnJvciE9MCkKICAgICB7CiAgICAgICAgIExZRVJSTE9HKCJ3YWl0X3Jlc3BvbnNlIGZhaWwscmV0OiVkIixlcnJvcik7CkBAIC0xODAxLDcgKzE4MDEsNyBAQAogICAgIH0KIAogICAgIC8vZ2V0X3Jlc3BvbnNlKGx5bnFfY2xpZW50X3NvY2tmZCxwKTsKLSAgICBlcnJvciA9IHdhaXRfcmVzcG9uc2UobHlucV9jbGllbnRfc29ja2ZkLHAsY2xpZW50LnVUb2tlbiw1MCk7CisgICAgZXJyb3IgPSB3YWl0X3Jlc3BvbnNlKGx5bnFfY2xpZW50X3NvY2tmZCxwLGNsaWVudC51VG9rZW4sNSk7CiAgICAgaWYoZXJyb3IhPTApCiAgICAgewogICAgICAgICBMWUVSUkxPRygid2FpdF9yZXNwb25zZSBmYWlsLHJldDolZCIsZXJyb3IpOwpkaWZmIC0tZ2l0IGEvY2FwL3p4Mjk3NTIwdjMvc3JjL2x5bnEvbGliL2xpYmx5bnEtdWNpL2x5bnFfdWNpX3JvLmNvbmZpZyBiL2NhcC96eDI5NzUyMHYzL3NyYy9seW5xL2xpYi9saWJseW5xLXVjaS9seW5xX3VjaV9yby5jb25maWcKaW5kZXggMzA1ZTRlNC4uMzJmNTYzZSAxMDA3NTUKLS0tIGEvY2FwL3p4Mjk3NTIwdjMvc3JjL2x5bnEvbGliL2xpYmx5bnEtdWNpL2x5bnFfdWNpX3JvLmNvbmZpZworKysgYi9jYXAvengyOTc1MjB2My9zcmMvbHlucS9saWIvbGlibHlucS11Y2kvbHlucV91Y2lfcm8uY29uZmlnCkBAIC0xLDMgKzEsNSBAQAogY29uZmlnIGx5bnFfdmVyc2lvbl9ybyAnbHlucV92ZXJzaW9uJw0KICAgICAgICAgb3B0aW9uIExZTlFfU1dfVkVSU0lPTiAnVDEwNkNOLVpTMDMuVjIuMDEuMDEuMDJQNTJVMDIuQVAuMDkuMDVfQ0FQLjA5LjA1Jw0KICAgICAgICAgb3B0aW9uIExZTlFfU1dfSU5TSURFX1ZFUlNJT04gJ1QxMDZDTi1aUzAzLlYyLjAxLjAxLjAyUDUyVTAyLkFQLjA5LjA1X0NBUC4wOS4wNScNCitjb25maWcgZGVidWdfbW9kZSAnZGVidWdfbW9kZScNCisgICAgICAgb3B0aW9uIGNvbm50cmFja19tb2RlICcxJwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS9saW51eC01LjEwL2FyY2gvYXJtL2Jvb3QvZHRzL3p4Mjk3NTIwdjMtdmVoaWNsZV9kY19yZWYuZHRzIGIvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL2xpbnV4LTUuMTAvYXJjaC9hcm0vYm9vdC9kdHMvengyOTc1MjB2My12ZWhpY2xlX2RjX3JlZi5kdHMKaW5kZXggY2ExNGViMi4uMmJmODYxOCAxMDA3NTUKLS0tIGEvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL2xpbnV4LTUuMTAvYXJjaC9hcm0vYm9vdC9kdHMvengyOTc1MjB2My12ZWhpY2xlX2RjX3JlZi5kdHMKKysrIGIvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL2xpbnV4LTUuMTAvYXJjaC9hcm0vYm9vdC9kdHMvengyOTc1MjB2My12ZWhpY2xlX2RjX3JlZi5kdHMKQEAgLTE2MSw2ICsxNjEsMTMgQEAKIAlwaW5jdHJsLTAgPSA8JmkyczBfcGlucz47CiAJc3RhdHVzID0gIm9rYXkiOwogfTsKKyZjb2RlY19lczgzODkgeworLy8Jc3RhdHVzID0gIm9rYXkiOworfTsKKyZ6eDI5X2VzODM4OSB7CisJcGluY3RybC0wID0gPCZpMnMwX3BpbnM+OworLy8Jc3RhdHVzID0gIm9rYXkiOworfTsKICZnbWFjIHsKICAgICBwb3J0LW51bXMgPSA8MT47CiAgICAgcm1paS1wb3J0cyA9IDwxPjsKZGlmZiAtLWdpdCBhL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS9saW51eC01LjEwL2FyY2gvYXJtL2Jvb3QvZHRzL3p4Mjk3NTIwdjMuZHRzaSBiL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS9saW51eC01LjEwL2FyY2gvYXJtL2Jvb3QvZHRzL3p4Mjk3NTIwdjMuZHRzaQppbmRleCA5ZDJjYjNjLi5kOTc0MjRlIDEwMDc1NQotLS0gYS9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvbGludXgtNS4xMC9hcmNoL2FybS9ib290L2R0cy96eDI5NzUyMHYzLmR0c2kKKysrIGIvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL2xpbnV4LTUuMTAvYXJjaC9hcm0vYm9vdC9kdHMvengyOTc1MjB2My5kdHNpCkBAIC04OSw2ICs4OSw4IEBACiAJCXp4MjlfbWF4OTg2NyA9ICZ6eDI5X21heDk4Njc7CQogCQljb2RlY19lczgzMTEgPSAmY29kZWNfZXM4MzExOwkJCiAJCXp4MjlfZXM4MzExID0gJnp4MjlfZXM4MzExOwkJCisJCWNvZGVjX2VzODM4OSA9ICZjb2RlY19lczgzODk7CisJCXp4MjlfZXM4Mzg5ID0gJnp4MjlfZXM4Mzg5OwogCQlrZXkwID0gJmdwaW9fa2V5MDsKIAkJa2V5MSA9ICZncGlvX2tleTE7CiAJfTsKQEAgLTUyMCw3ICs1MjIsMTggQEAKIAkJCQlwaW5jdHJsLTAgPSA8JmNsazJfZnVuY19waW5zPjsJCQkJCiAJCQkJc3RhdHVzID0gImRpc2FibGVkIjsKIAkJCX07CQkJCi0JCQkJCQkJCisJCQljb2RlY19lczgzODk6IGNvZGVjX2VzODM4OUAxMCB7CisJCQkJY29tcGF0aWJsZSA9ICJldmVyZXN0LGVzODM4OSI7CisJCQkJcmVnID0gPDB4MTA+OworCQkJCWNsb2NrLW5hbWVzID0gImNsa19vdXQyIjsKKwkJCQljbG9ja3MgPSA8JmNsa2MgQ0xLT1VUMl9DTEs+OworCQkJCXBpbmN0cmwtbmFtZXMgPSAiY2xrX291dDIiOworCQkJCXBpbmN0cmwtMCA9IDwmY2xrMl9mdW5jX3BpbnM+OworCQkJCWV2ZXJlc3QsbWNsay1zcmMgPSA8NjQ+OworCQkJCWV2ZXJlc3QsYWRjLXNsb3QgPSA8MT47CisJCQkJZXZlcmVzdCxkYWMtc2xvdCA9IDwwPjsKKwkJCQlzdGF0dXMgPSAiZGlzYWJsZWQiOworCQkJfTsKIAkJfTsKIAogCQlnbWFjOmdtYWNAMTMwNzAwMHsKQEAgLTg4NCw2ICs4OTcsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHp4aWMsYXVkaW8tY29kZWMgPSA8JmNvZGVjX2VzODMxMT47CiAJCQlzdGF0dXMgPSAiZGlzYWJsZWQiOwogCQl9OwkJCisJCXp4MjlfZXM4Mzg5OiB6eDI5X2VzODM4OXsKKwkJCWNvbXBhdGlibGUgPSAienhpYyx6eDI5X2VzODM4OSI7CisJCQlwaW5jdHJsLW5hbWVzID0gInRvcF9pMnMwIiwgInRvcF9pMnMxIiwgInRvcF90ZG0iLCAidG9waTJzMF9zbGVlcCIsICJ0b3BpMnMxX3NsZWVwIiwgInRvcHRkbV9zbGVlcCI7CisJCQlwaW5jdHJsLTAgPSA8JmkyczBfcGlucz47CisJCQlwaW5jdHJsLTEgPSA8JmkyczFfcGlucz47CisJCQlwaW5jdHJsLTIgPSA8JnRkbV9waW5zPjsKKwkJCXBpbmN0cmwtMyA9IDwmaTJzMF9zbGVlcD47CisJCQlwaW5jdHJsLTQgPSA8JmkyczFfc2xlZXA+OworCQkJcGluY3RybC01ID0gPCZ0ZG1fc2xlZXA+OworCQkJcmVnID0gPDB4MCAweDAwMTQwMDAwIDB4MCAweDAwMDAxMDAwPjsKKwkJCXJlZy1uYW1lcyA9ICJzb2Nfc3lzIjsKKwkJCXp4aWMsaTJzLWNvbnRyb2xsZXIgPSA8JmkyczA+OworCQkJenhpYyxhdWRpby1jb2RlYyA9IDwmY29kZWNfZXM4Mzg5PjsKKwkJCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJCX07CiAJCXNvZnR3ZHQ6IHNvZnR3ZHRAMTMwMTAwMCB7CiAJCQljb21wYXRpYmxlID0gInp0ZSx6eDI5LXNvZnR3ZHQiOwogCQkJcmVnID0gPDB4MCAweDAwMTQ4MDAwIDB4MCAweDEwMDA+LAkJLyogcmVnX2Jhc2UgICovCmRpZmYgLS1naXQgYS9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvbGludXgtNS4xMC9kcml2ZXJzL21mZC96eDIzNDI5MC1hZGMuYyBiL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS9saW51eC01LjEwL2RyaXZlcnMvbWZkL3p4MjM0MjkwLWFkYy5jCmluZGV4IGY3OWM0ODUuLjI4MmY0ODQgMTAwNjQ0Ci0tLSBhL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS9saW51eC01LjEwL2RyaXZlcnMvbWZkL3p4MjM0MjkwLWFkYy5jCisrKyBiL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS9saW51eC01LjEwL2RyaXZlcnMvbWZkL3p4MjM0MjkwLWFkYy5jCkBAIC0yOTEsNyArMjkxLDcgQEAKIAkJCXNvZnRfc3Bpbl91bmxvY2soQURDX1NGTE9DSyk7DQogCQkJcmV0dXJuIG5SZXQ7DQogCQl9DQotCQl1ZGVsYXkoNTAwKTsNCisJCXVzbGVlcF9yYW5nZSg0MDAsNjAwKTsgLy95dS5kb25nIEAgMjUwNjIwIFJlZHVjZWQgQURDIGNwdSB1c2FnZQ0KIAkJLypyZWFkIHN0YXR1c19BKi8NCiAJCW5SZXQgPSB6eDIzNDI5MF9pMmNfcmVhZF9zaW1wbGUoWlgyMzQyOTBfUkVHX0FERFJfU1RTQSwgJnN0YXR1c19hKTsNCiAJCWlmIChuUmV0ICE9IDApDQpkaWZmIC0tZ2l0IGEvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL2xpbnV4LTUuMTAvbmV0L2NvcmUvZmFzdHByb2MvZmFzdF9jb21tb24uYyBiL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS9saW51eC01LjEwL25ldC9jb3JlL2Zhc3Rwcm9jL2Zhc3RfY29tbW9uLmMKaW5kZXggODBhZDg2NC4uOGRiNTgxMSAxMDA3NTUKLS0tIGEvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL2xpbnV4LTUuMTAvbmV0L2NvcmUvZmFzdHByb2MvZmFzdF9jb21tb24uYworKysgYi9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvbGludXgtNS4xMC9uZXQvY29yZS9mYXN0cHJvYy9mYXN0X2NvbW1vbi5jCkBAIC03MjksNyArNzI5LDE0IEBACiAJc3Bpbl9sb2NrX2JoKCZmYXN0X2Z3X3NwaW5sb2NrKTsKIAllbnRyeS0+Y3QtPmZhc3RfZW50cnkgPSBOVUxMOwogCXNwaW5fdW5sb2NrX2JoKCZmYXN0X2Z3X3NwaW5sb2NrKTsKLSAgICBhdG9taWNfZGVjKCYoZW50cnktPmN0LT5jdF9nZW5lcmFsLnVzZSkpOworICAgIC8vTFlOUV9NT0RJRllfWlhXX0JVRzEzNTFfQ1IyMDI1MDUyNjI0QTg1RTIxXzIwMjUwNzE1X1NUQVJUCisgICAgLy9hdG9taWNfZGVjKCYoZW50cnktPmN0LT5jdF9nZW5lcmFsLnVzZSkpOworICAgIGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZlbnRyeS0+Y3QtPmN0X2dlbmVyYWwudXNlKSl7CisKKyAgICAgICAgbmZfY29ubnRyYWNrX2Rlc3Ryb3koJmVudHJ5LT5jdC0+Y3RfZ2VuZXJhbCk7CisKKyAgICB9CisgICAgLy9MWU5RX01PRElGWV9aWFdfQlVHMTM1MV9DUjIwMjUwNTI2MjRBODVFMjFfMjAyNTA3MTVfRU5ECiAgICAgZm5fbGlzdF9kZWwobGlzdF9oZWFkLCBlbnRyeSk7CiB9CiAKQEAgLTk3MSw3ICs5NzgsMTQgQEAKIAlzcGluX2xvY2tfYmgoJmZhc3RfZndfc3BpbmxvY2spOwogCWVudHJ5LT5jdC0+ZmFzdF9lbnRyeSA9IE5VTEw7CiAJc3Bpbl91bmxvY2tfYmgoJmZhc3RfZndfc3BpbmxvY2spOwotICAgIGF0b21pY19kZWMoJihjdC0+Y3RfZ2VuZXJhbC51c2UpKTsKKyAgICAvL0xZTlFfTU9ESUZZX1pYV19CVUcxMzUxX0NSMjAyNTA1MjYyNEE4NUUyMV8yMDI1MDcxNV9TVEFSVAorICAgIC8vYXRvbWljX2RlYygmKGN0LT5jdF9nZW5lcmFsLnVzZSkpOworICAgIGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZjdC0+Y3RfZ2VuZXJhbC51c2UpKXsKKworICAgICAgICBuZl9jb25udHJhY2tfZGVzdHJveSgmY3QtPmN0X2dlbmVyYWwpOworCisgICAgfQorICAgIC8vTFlOUV9NT0RJRllfWlhXX0JVRzEzNTFfQ1IyMDI1MDUyNjI0QTg1RTIxXzIwMjUwNzE1X0VORAogICAgIGRlbF90aW1lcigmZW50cnktPnRpbWVvdXQpOwogICAgIGZuX2xpc3RfZGVsKGVudHJ5LT5saXN0X2hlYWQsIGVudHJ5KTsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS9saW51eC01LjEwL3NvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZyBiL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS9saW51eC01LjEwL3NvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZwppbmRleCA3NGQyNGM4Li4xYWQ0MWRkIDEwMDc1NQotLS0gYS9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvbGludXgtNS4xMC9zb3VuZC9zb2MvY29kZWNzL0tjb25maWcKKysrIGIvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL2xpbnV4LTUuMTAvc291bmQvc29jL2NvZGVjcy9LY29uZmlnCkBAIC03OTYsNiArNzk2LDE1IEBACiAJZGVwZW5kcyBvbiBTUElfTUFTVEVSCiAJc2VsZWN0IFNORF9TT0NfRVM4MzI4CiAJCitjb25maWcgU05EX1NPQ19FUzgzODkKKwl0cmlzdGF0ZSAiRXZlcmVzdCBTZW1pIEVTODM4OSBDT0RFQyIKKwlkZXBlbmRzIG9uIEkyQworCXNlbGVjdCBSRUdNQVBfSTJDCisJaGVscAorCSAgRW5hYmxlIHN1cHBvcnQgZm9yIEVTODM4OSBhdWRpbyBDT0RFQy4KKwkgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIEVTODM4OSBhdWRpbyBDT0RFQyBjb25uZWN0ZWQKKwkgIHZpYSBJMkMgaW50ZXJmYWNlLgorCiBjb25maWcgU05EX1NPQ19FUzgzMTEKIAl0cmlzdGF0ZSAiRXZlcmVzdCBTZW1pIEVTODMxMSBDT0RFQyIKIAlkZXBlbmRzIG9uIEkyQwpkaWZmIC0tZ2l0IGEvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL2xpbnV4LTUuMTAvc291bmQvc29jL2NvZGVjcy9NYWtlZmlsZSBiL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS9saW51eC01LjEwL3NvdW5kL3NvYy9jb2RlY3MvTWFrZWZpbGUKaW5kZXggY2E3MjdjNS4uYTA1NDQwOSAxMDA3NTUKLS0tIGEvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL2xpbnV4LTUuMTAvc291bmQvc29jL2NvZGVjcy9NYWtlZmlsZQorKysgYi9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvbGludXgtNS4xMC9zb3VuZC9zb2MvY29kZWNzL01ha2VmaWxlCkBAIC05MSw2ICs5MSw3IEBACiBzbmQtc29jLWVzODMyOC1pMmMtb2JqcyA6PSBlczgzMjgtaTJjLm8KIHNuZC1zb2MtZXM4MzI4LXNwaS1vYmpzIDo9IGVzODMyOC1zcGkubwogc25kLXNvYy1lczgzMTEtb2JqcyA6PSBlczgzMTEubworc25kLXNvYy1lczgzODktb2JqcyA6PSBlczgzODkubwogc25kLXNvYy1ndG02MDEtb2JqcyA6PSBndG02MDEubwogc25kLXNvYy1oZGFjLWhkbWktb2JqcyA6PSBoZGFjX2hkbWkubwogc25kLXNvYy1oZGFjLWhkYS1vYmpzIDo9IGhkYWNfaGRhLm8KQEAgLTQwMSw2ICs0MDIsNyBAQAogb2JqLSQoQ09ORklHX1NORF9TT0NfRVM4MzI4X0kyQykrPSBzbmQtc29jLWVzODMyOC1pMmMubwogb2JqLSQoQ09ORklHX1NORF9TT0NfRVM4MzI4X1NQSSkrPSBzbmQtc29jLWVzODMyOC1zcGkubwogb2JqLSQoQ09ORklHX1NORF9TT0NfRVM4MzExKSAgICArPSBzbmQtc29jLWVzODMxMS5vCitvYmotJChDT05GSUdfU05EX1NPQ19FUzgzODkpCSs9IHNuZC1zb2MtZXM4Mzg5Lm8KIG9iai0kKENPTkZJR19TTkRfU09DX0dUTTYwMSkgICAgKz0gc25kLXNvYy1ndG02MDEubwogb2JqLSQoQ09ORklHX1NORF9TT0NfSERBQ19IRE1JKSArPSBzbmQtc29jLWhkYWMtaGRtaS5vCiBvYmotJChDT05GSUdfU05EX1NPQ19IREFDX0hEQSkgKz0gc25kLXNvYy1oZGFjLWhkYS5vCmRpZmYgLS1naXQgYS9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvbGludXgtNS4xMC9zb3VuZC9zb2MvY29kZWNzL2VzODM4OS5jIGIvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL2xpbnV4LTUuMTAvc291bmQvc29jL2NvZGVjcy9lczgzODkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTRlMGFjCi0tLSAvZGV2L251bGwKKysrIGIvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL2xpbnV4LTUuMTAvc291bmQvc29jL2NvZGVjcy9lczgzODkuYwpAQCAtMCwwICsxLDExMjkgQEAKKy8qCisgKiBlczgzODkuYyAgLS0gIEVTODM4OS9FUzgzOTAgQUxTQSBTb0MgQXVkaW8gQ29kZWMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMjQgRXZlcmVzdCBTZW1pY29uZHVjdG9yIENvLiwgTHRkCisgKgorICogQXV0aG9yczogIE1pY2hhZWwgWmhhbmcgKHpoYW5neWlAZXZlcmVzdC1zZW1pLmNvbSkKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisKKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgorI2luY2x1ZGUgPGxpbnV4L2kyYy5oPgorI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgorI2luY2x1ZGUgPHNvdW5kL2NvcmUuaD4KKyNpbmNsdWRlIDxzb3VuZC9wY20uaD4KKyNpbmNsdWRlIDxzb3VuZC9wY21fcGFyYW1zLmg+CisjaW5jbHVkZSA8c291bmQvdGx2Lmg+CisjaW5jbHVkZSA8c291bmQvc29jLmg+CisjaW5jbHVkZSA8bGludXgvcGluY3RybC9jb25zdW1lci5oPgorI2luY2x1ZGUgImVzODM4OS5oIgorCisKKy8qIGNvZGVjIHByaXZhdGUgZGF0YSAqLworCitzdHJ1Y3QJZXM4Mzg5X3ByaXZhdGUgeworCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50OworCXN0cnVjdCByZWdtYXAgKnJlZ21hcDsKKwlzdHJ1Y3QgY2xrICptY2xrOworCXVuc2lnbmVkIGludCBzeXNjbGs7CisJaW50IG1hc3Rlcm1vZGU7CisKKwl1OCBhZGNfc2xvdDsKKwl1OCBkYWNfc2xvdDsKKwlpbnQgZG1pYzsKKwl1OCBtY2xrX3NyYzsKKwllbnVtIHNuZF9zb2NfYmlhc19sZXZlbCBiaWFzX2xldmVsOworICAgIHN0cnVjdCBwaW5jdHJsICpwY3RybDsKKyAgICBzdHJ1Y3QgcGluY3RybF9zdGF0ZSAqc3RhdGUwOworfTsKKworc3RhdGljIGJvb2wgZXM4Mzg5X3ZvbGF0aWxlX3JlZ2lzdGVyKHN0cnVjdCBkZXZpY2UgKmRldiwKKwkJCXVuc2lnbmVkIGludCByZWcpCit7CisJaWYgKChyZWcgIDw9IDB4ZmYpKQorCQlyZXR1cm4gdHJ1ZTsKKwllbHNlCisJCXJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGNvbnN0IERFQ0xBUkVfVExWX0RCX1NDQUxFKGRhY192b2xfdGx2LCAtOTU1MCwgNTAsIDApOworc3RhdGljIGNvbnN0IERFQ0xBUkVfVExWX0RCX1NDQUxFKGFkY192b2xfdGx2LCAtOTU1MCwgNTAsIDApOworc3RhdGljIGNvbnN0IERFQ0xBUkVfVExWX0RCX1NDQUxFKHBnYV92b2xfdGx2LCAwLCAzMDAsIDApOworc3RhdGljIGNvbnN0IERFQ0xBUkVfVExWX0RCX1NDQUxFKG1peF92b2xfdGx2LCAtOTUwMCwgMTAwLCAwKTsKK3N0YXRpYyBjb25zdCBERUNMQVJFX1RMVl9EQl9TQ0FMRShhbGNfdGFyZ2V0X3RsdiwgLTMyMDAsIDIwMCwgMCk7CitzdGF0aWMgY29uc3QgREVDTEFSRV9UTFZfREJfU0NBTEUoYWxjX21heF9sZXZlbCwgLTMyMDAsIDIwMCwgMCk7CisKK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdCBhbGNbXSA9IHsKKwkiQUxDIE9GRiIsCisJIkFEQ1IgQUxDIE9OIiwKKwkiQURDTCBBTEMgT04iLAorCSJBRENMICYgQURDTCBBTEMgT04iLAorfTsKKworc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHJhbXByYXRlW10gPSB7CisJIjAuMTI1ZGIvMSAgTFJDSyIsCisJIjAuMTI1ZGIvNCAgTFJDSyIsCisJIjAuMTI1ZGIvOCAgTFJDSyIsCisJIjAuMTI1ZGIvMTYgIExSQ0siLAorCSIwLjEyNWRiLzMyICBMUkNLIiwKKwkiMC4xMjVkYi82NCAgTFJDSyIsCisJIjAuMTI1ZGIvMTI4ICBMUkNLIiwKKwkiMC4xMjVkYi8yNTYgIExSQ0siLAorCSIwLjEyNWRiLzUxMiAgTFJDSyIsCisJIjAuMTI1ZGIvMTAyNCAgTFJDSyIsCisJIjAuMTI1ZGIvMjA0OCAgTFJDSyIsCisJIjAuMTI1ZGIvNDA5NiAgTFJDSyIsCisJIjAuMTI1ZGIvODE5MiAgTFJDSyIsCisJIjAuMTI1ZGIvMTYzODQgIExSQ0siLAorCSIwLjEyNWRiLzMyNzY4ICBMUkNLIiwKKwkiMC4xMjVkYi82NTUzNiAgTFJDSyIsCit9OworCitzdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgd2luc2l6ZVtdID0geworCSIyIExSQ0siLAorCSI0ICBMUkNLIiwKKwkiOCAgTFJDSyIsCisJIjE2ICBMUkNLIiwKKwkiMzIgIExSQ0siLAorCSI2NCAgTFJDSyIsCisJIjEyOCAgTFJDSyIsCisJIjI1NiAgTFJDSyIsCisJIjUxMiAgTFJDSyIsCisJIjEwMjQgIExSQ0siLAorCSIyMDQ4ICBMUkNLIiwKKwkiNDA5NiAgTFJDSyIsCisJIjgxOTIgIExSQ0siLAorCSIxNjM4NCAgTFJDSyIsCisJIjMyNzY4ICBMUkNLIiwKKwkiNjU1MzYgIExSQ0siLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBzb2NfZW51bSBhbGNfZW5hYmxlID0KKwlTT0NfRU5VTV9TSU5HTEUoRVM4Mzg5X0FMQ19PTl9SRUcyQiwgNSwgNCwgYWxjKTsKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc29jX2VudW0gYWxjX3JhbXByYXRlID0KKwlTT0NfRU5VTV9TSU5HTEUoRVM4Mzg5X0FMQ19DVExfUkVHMjksIDQsIDE2LCByYW1wcmF0ZSk7CitzdGF0aWMgY29uc3Qgc3RydWN0IHNvY19lbnVtIGFsY193aW5zaXplID0KKwlTT0NfRU5VTV9TSU5HTEUoRVM4Mzg5X0FMQ19DVExfUkVHMjksIDAsIDE2LCB3aW5zaXplKTsKKworc3RhdGljIGNvbnN0IGNoYXIgKmVzODM4OV9vdXRsX211eF90eHRbXSA9IHsKKwkibm9ybWFsIiwKKwkiREFDMiBjaGFubmVsIHRvIERBQzEgY2hhbm5lbCIsCit9OworCitzdGF0aWMgY29uc3QgY2hhciAqZXM4Mzg5X291dHJfbXV4X3R4dFtdID0geworCSJub3JtYWwiLAorCSJEQUMxIGNoYW5uZWwgdG8gREFDMiBjaGFubmVsIiwKK307CisKK3N0YXRpYyBjb25zdCBjaGFyICplczgzODlfZG1pY19tdXhfdHh0W10gPSB7CisJIkFNSUMiLAorCSJETUlDIiwKK307CisKK3N0YXRpYyBjb25zdCBjaGFyICplczgzODlfcGdhMV90ZXh0c1tdID0geworCSJEaWZmZXJlbnRpYWxMIiAsICJMaW5lIDFQIiwgIkxpbmUgMlAiIAorfTsKKworc3RhdGljIGNvbnN0IGNoYXIgKmVzODM4OV9wZ2EyX3RleHRzW10gPSB7CisJIkRpZmZlcmVudGlhbFIiICwgIkxpbmUgMk4iLCAiTGluZSAxTiIgCit9OworCitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGVzODM4OV9vdXRfbXV4X3ZhbHVlc1tdID0geworCTAsIDEKK307CisKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgZXM4Mzg5X2RtaWNfbXV4X3ZhbHVlc1tdID0geworCTAsIDMKK307CisKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgZXM4Mzg5X3BnYV92YWx1ZXNbXSA9IHsKKwkxLCA1LCA2Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHNvY19lbnVtIGVzODM4OV9vdXRsX211eF9lbnVtID0KKwlTT0NfVkFMVUVfRU5VTV9TSU5HTEUoRVM4Mzg5X0RBQ19NSVhfUkVHNDQsIDUsIDEsIAorCQkJQVJSQVlfU0laRShlczgzODlfb3V0bF9tdXhfdHh0KSwgZXM4Mzg5X291dGxfbXV4X3R4dCwgCisJCQllczgzODlfb3V0X211eF92YWx1ZXMpOworCitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9rY29udHJvbF9uZXcgZXM4Mzg5X291dGxfbXV4X2NvbnRyb2xzID0KKwlTT0NfREFQTV9FTlVNKCJPVVRMIE1VWCIsIGVzODM4OV9vdXRsX211eF9lbnVtKTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBzb2NfZW51bSBlczgzODlfb3V0cl9tdXhfZW51bSA9CisJU09DX1ZBTFVFX0VOVU1fU0lOR0xFKEVTODM4OV9EQUNfTUlYX1JFRzQ0LCA0LCAxLCAKKwkJCUFSUkFZX1NJWkUoZXM4Mzg5X291dHJfbXV4X3R4dCksIGVzODM4OV9vdXRyX211eF90eHQsIAorCQkJZXM4Mzg5X291dF9tdXhfdmFsdWVzKTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IGVzODM4OV9vdXRyX211eF9jb250cm9scyA9CisJU09DX0RBUE1fRU5VTSgiT1VUUiBNVVgiLCBlczgzODlfb3V0cl9tdXhfZW51bSk7CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc29jX2VudW0gZXM4Mzg5X2RtaWNfbXV4X2VudW0gPQorCVNPQ19WQUxVRV9FTlVNX1NJTkdMRShFUzgzODlfRE1JQ19FTl9SRUc2RCwgNiwgMywgCisJCQlBUlJBWV9TSVpFKGVzODM4OV9kbWljX211eF90eHQpLCBlczgzODlfZG1pY19tdXhfdHh0LCAKKwkJCWVzODM4OV9kbWljX211eF92YWx1ZXMpOworCitzdGF0aWMgY29uc3Qgc3RydWN0IHNvY19lbnVtIGVzODM4OV9wZ2FfZW51bVtdID0geworCVNPQ19WQUxVRV9FTlVNX1NJTkdMRShFUzgzODlfTUlDMV9HQUlOX1JFRzcyLCA0LCA3LCAKKwkJCUFSUkFZX1NJWkUoZXM4Mzg5X3BnYTFfdGV4dHMpLCBlczgzODlfcGdhMV90ZXh0cywgCisJCQllczgzODlfcGdhX3ZhbHVlcyksCisJU09DX1ZBTFVFX0VOVU1fU0lOR0xFKEVTODM4OV9NSUMyX0dBSU5fUkVHNzMsIDQsIDcsIAorCQkJQVJSQVlfU0laRShlczgzODlfcGdhMl90ZXh0cyksIGVzODM4OV9wZ2EyX3RleHRzLCAKKwkJCWVzODM4OV9wZ2FfdmFsdWVzKSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBlczgzODlfZG1pY19tdXhfY29udHJvbHMgPQorCVNPQ19EQVBNX0VOVU0oIkFEQyBNVVgiLCBlczgzODlfZG1pY19tdXhfZW51bSk7CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBlczgzODlfbGVmdF9taXhlcl9jb250cm9sc1tdID0geworCVNPQ19EQVBNX1NJTkdMRSgiREFDUiBEQUNMIE1peGVyIiwgRVM4Mzg5X0RBQ19NSVhfUkVHNDQsIDMsIDEsIDApLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IGVzODM4OV9yaWdodF9taXhlcl9jb250cm9sc1tdID0geworCVNPQ19EQVBNX1NJTkdMRSgiREFDTCBEQUNSIE1peGVyIiwgRVM4Mzg5X0RBQ19NSVhfUkVHNDQsIDIsIDEsIDApLAorfTsKKworCitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9rY29udHJvbF9uZXcgZXM4Mzg5X2FkY19taXhlcl9jb250cm9sc1tdID0geworCVNPQ19EQVBNX1NJTkdMRSgiREFDTCBBRENMIE1peGVyIiwgRVM4Mzg5X0FEQ19SRVNFVF9SRUczMSwgNywgMSwgMCksCisJU09DX0RBUE1fU0lOR0xFKCJEQUNSIEFEQ1IgTWl4ZXIiLCBFUzgzODlfQURDX1JFU0VUX1JFRzMxLCA2LCAxLCAwKSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBlczgzODlfc25kX2NvbnRyb2xzW10gPSB7CisJU09DX1NJTkdMRV9UTFYoIkFEQ0wgQ2FwdHVyZSBWb2x1bWUiLCBFUzgzODlfQURDTF9WT0xfUkVHMjcsIDAsIDB4RkYsIDAsIGFkY192b2xfdGx2KSwKKwlTT0NfU0lOR0xFX1RMVigiQURDUiBDYXB0dXJlIFZvbHVtZSIsIEVTODM4OV9BRENSX1ZPTF9SRUcyOCwgMCwgMHhGRiwgMCwgYWRjX3ZvbF90bHYpLAorCVNPQ19TSU5HTEVfVExWKCJBRENMIFBHQSBWb2x1bWUiLCBFUzgzODlfTUlDMV9HQUlOX1JFRzcyLCAwLCAweDBFLCAwLCBwZ2Ffdm9sX3RsdiksCisJU09DX1NJTkdMRV9UTFYoIkFEQ1IgUEdBIFZvbHVtZSIsIEVTODM4OV9NSUMyX0dBSU5fUkVHNzMsIDAsIDB4MEUsIDAsIHBnYV92b2xfdGx2KSwKKworCVNPQ19FTlVNKCJQR0ExIFNlbGVjdCIsIGVzODM4OV9wZ2FfZW51bVswXSksCisJU09DX0VOVU0oIlBHQTIgU2VsZWN0IiwgZXM4Mzg5X3BnYV9lbnVtWzFdKSwKKwlTT0NfRU5VTSgiQUxDIENhcHR1cmUgU3dpdGNoIiwgYWxjX2VuYWJsZSksCisJU09DX1NJTkdMRV9UTFYoIkFMQyBDYXB0dXJlIFRhcmdldCBMZXZlbCIsIEVTODM4OV9BTENfVEFSR0VUX1JFRzJDLAorCQkJMCwgMHgwZiwgMCwgYWxjX3RhcmdldF90bHYpLAorCVNPQ19TSU5HTEVfVExWKCJBTEMgQ2FwdHVyZSBNYXggR2FpbiIsIEVTODM4OV9BTENfR0FJTl9SRUcyRCwKKwkJCTAsIDB4MGYsIDAsIGFsY19tYXhfbGV2ZWwpLAorCVNPQ19FTlVNKCJBREMgUmFtcCBSYXRlIiwgYWxjX3JhbXByYXRlKSwKKwlTT0NfRU5VTSgiQUxDIENhcHR1cmUgV2luc2l6ZSIsIGFsY193aW5zaXplKSwKKwlTT0NfRE9VQkxFKCJBREMgT1NSIFZvbHVtZSBPTiIsIEVTODM4OV9BRENfTVVURV9SRUcyRiwgNiwgNywgMSwgMCksCisJU09DX1NJTkdMRV9UTFYoIkFEQyBPU1IgVm9sdW1lIiwgRVM4Mzg5X09TUl9WT0xfUkVHMjYsIDAsIDB4RkYsIDAsIGFkY192b2xfdGx2KSwKKwlTT0NfRE9VQkxFKCJBREMgT1VUUFVUIEludmVydCIsIEVTODM4OV9BRENfSFBGMl9SRUcyNSwgNSwgNiwgMSwgMCksCisKKwlTT0NfU0lOR0xFX1RMVigiREFDTCBQbGF5YmFjayBWb2x1bWUiLCBFUzgzODlfREFDTF9WT0xfUkVHNDYsIDAsIDB4RkYsIDAsIGRhY192b2xfdGx2KSwKKwlTT0NfU0lOR0xFX1RMVigiREFDUiBQbGF5YmFjayBWb2x1bWUiLCBFUzgzODlfREFDUl9WT0xfUkVHNDcsIDAsIDB4RkYsIDAsIGRhY192b2xfdGx2KSwKKwlTT0NfRE9VQkxFKCJEQUMgT1VUUFVUIEludmVydCIsIEVTODM4OV9EQUNfSU5WX1JFRzQ1LCA1LCA2LCAxLCAwKSwKKwlTT0NfU0lOR0xFX1RMVigiQURDMkRBQyBNaXhlciBWb2x1bWUiLCBFUzgzODlfTUlYX1ZPTF9SRUc0OCwgMCwgMHg3RiwgMCwgbWl4X3ZvbF90bHYpLAorCisJU09DX1NJTkdMRSgiTWl4IEFEQ1IgQW5kIERBQ1IgdG8gREFDUiIsIEVTODM4OV9EQUNfTUlYX1JFRzQ0LCAwLCAxLCAwKSwKKwlTT0NfU0lOR0xFKCJNaXggQURDTCBBbmQgREFDTCB0byBEQUNMIiwgRVM4Mzg5X0RBQ19NSVhfUkVHNDQsIDEsIDEsIDApLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfc29jX2RhcG1fd2lkZ2V0IGVzODM4OV9kYXBtX3dpZGdldHNbXSA9IHsKKwkvKklucHV0IFNpZGUqLworCVNORF9TT0NfREFQTV9JTlBVVCgiSU5QVVQxIiksCisJU05EX1NPQ19EQVBNX0lOUFVUKCJJTlBVVDIiKSwKKwlTTkRfU09DX0RBUE1fSU5QVVQoIkRNSUMiKSwKKwlTTkRfU09DX0RBUE1fUEdBKCJQR0FMIiwgU05EX1NPQ19OT1BNLCA0LCAwLCBOVUxMLCAwKSwKKwlTTkRfU09DX0RBUE1fUEdBKCJQR0FSIiwgU05EX1NPQ19OT1BNLCA0LCAwLCBOVUxMLCAwKSwKKworCS8qQURDcyovCisJU05EX1NPQ19EQVBNX0FEQygiQURDTCIsIE5VTEwsIFNORF9TT0NfTk9QTSwgMCwgMCksCisJU05EX1NPQ19EQVBNX0FEQygiQURDUiIsIE5VTEwsIFNORF9TT0NfTk9QTSwgMCwgMCksCisKKwkvKiBBdWRpbyBJbnRlcmZhY2UgKi8KKwlTTkRfU09DX0RBUE1fQUlGX09VVCgiSTJTIE9VVCIsICJJMlMgQ2FwdHVyZSIsIDAsIFNORF9TT0NfTk9QTSwgMCwgMCksCisJU05EX1NPQ19EQVBNX0FJRl9JTigiSTJTIElOIiwgIkkyUyBQbGF5YmFjayIsIDAsIFNORF9TT0NfTk9QTSwgMCwgMCksCisKKwkvKkRBQ3MqLworCVNORF9TT0NfREFQTV9EQUMoIkRBQ0wiLCBOVUxMLCBTTkRfU09DX05PUE0sIDAsIDApLAorCVNORF9TT0NfREFQTV9EQUMoIkRBQ1IiLCBOVUxMLCBTTkRfU09DX05PUE0sIDAsIDApLAorCisJLypPdXRwdXQgU2lkZSovCisJU05EX1NPQ19EQVBNX09VVFBVVCgiSFBPTCIpLAorCVNORF9TT0NfREFQTV9PVVRQVVQoIkhQT1IiKSwKKworCS8qIERpZ2l0YWwgSW50ZXJmYWNlICovCisJU05EX1NPQ19EQVBNX1BHQSgiSUYgREFDIiwgU05EX1NPQ19OT1BNLCAwLCAwLCBOVUxMLCAwKSwKKwlTTkRfU09DX0RBUE1fUEdBKCJJRiBEQUNMMSIsIFNORF9TT0NfTk9QTSwgMCwgMCwgTlVMTCwgMCksCisJU05EX1NPQ19EQVBNX1BHQSgiSUYgREFDUjEiLCBTTkRfU09DX05PUE0sIDAsIDAsIE5VTEwsIDApLAorCVNORF9TT0NfREFQTV9QR0EoIklGIERBQ0wyIiwgU05EX1NPQ19OT1BNLCAwLCAwLCBOVUxMLCAwKSwKKwlTTkRfU09DX0RBUE1fUEdBKCJJRiBEQUNSMiIsIFNORF9TT0NfTk9QTSwgMCwgMCwgTlVMTCwgMCksCisJU05EX1NPQ19EQVBNX1BHQSgiSUYgREFDTDMiLCBTTkRfU09DX05PUE0sIDAsIDAsIE5VTEwsIDApLAorCVNORF9TT0NfREFQTV9QR0EoIklGIERBQ1IzIiwgU05EX1NPQ19OT1BNLCAwLCAwLCBOVUxMLCAwKSwKKworCS8qIERpZ2l0YWwgSW50ZXJmYWNlIFNlbGVjdCAqLworCVNORF9TT0NfREFQTV9NSVhFUigiSUYgREFDTCBNaXhlciIsIFNORF9TT0NfTk9QTSwgMCwgMCwKKwkJCSAgICZlczgzODlfbGVmdF9taXhlcl9jb250cm9sc1swXSwKKwkJCSAgIEFSUkFZX1NJWkUoZXM4Mzg5X2xlZnRfbWl4ZXJfY29udHJvbHMpKSwKKwlTTkRfU09DX0RBUE1fTUlYRVIoIklGIERBQ1IgTWl4ZXIiLCBTTkRfU09DX05PUE0sIDAsIDAsCisJCQkgICAmZXM4Mzg5X3JpZ2h0X21peGVyX2NvbnRyb2xzWzBdLAorCQkJICAgQVJSQVlfU0laRShlczgzODlfcmlnaHRfbWl4ZXJfY29udHJvbHMpKSwKKworCVNORF9TT0NfREFQTV9NSVhFUigiQURDIE1peGVyIiwgU05EX1NPQ19OT1BNLCAwLCAwLAorCQkJICAgJmVzODM4OV9hZGNfbWl4ZXJfY29udHJvbHNbMF0sCisJCQkgICBBUlJBWV9TSVpFKGVzODM4OV9hZGNfbWl4ZXJfY29udHJvbHMpKSwKKwlTTkRfU09DX0RBUE1fTVVYKCJBREMgTVVYIiwgU05EX1NPQ19OT1BNLCAwLCAwLCAmZXM4Mzg5X2RtaWNfbXV4X2NvbnRyb2xzKSwKKwkKKwlTTkRfU09DX0RBUE1fTVVYKCJPVVRMIE1VWCIsIFNORF9TT0NfTk9QTSwgMCwgMCwgJmVzODM4OV9vdXRsX211eF9jb250cm9scyksCisJU05EX1NPQ19EQVBNX01VWCgiT1VUUiBNVVgiLCBTTkRfU09DX05PUE0sIDAsIDAsICZlczgzODlfb3V0cl9tdXhfY29udHJvbHMpLAorfTsKKworCitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9zb2NfZGFwbV9yb3V0ZSBlczgzODlfZGFwbV9yb3V0ZXNbXSA9IHsKKwl7IlBHQUwiLCBOVUxMLCAiSU5QVVQxIn0sCisJeyJQR0FSIiwgTlVMTCwgIklOUFVUMiJ9LAorCisJeyJBRENMIiwgTlVMTCwgIlBHQUwifSwKKwl7IkFEQ1IiLCBOVUxMLCAiUEdBUiJ9LAorCQorCXsiQURDIE1peGVyIiwgIkRBQ0wgQURDTCBNaXhlciIsICJEQUNMIn0sCisJeyJBREMgTWl4ZXIiLCAiREFDUiBBRENSIE1peGVyIiwgIkRBQ1IifSwKKwl7IkFEQyBNaXhlciIsIE5VTEwsICJBRENMIn0sCisJeyJBREMgTWl4ZXIiLCBOVUxMLCAiQURDUiJ9LAorCisJeyJBREMgTVVYIiwgIkFNSUMiLCAiQURDIE1peGVyIn0sCisJeyJBREMgTVVYIiwgIkRNSUMiLCAiRE1JQyJ9LAorCisJeyJJMlMgT1VUIiwgTlVMTCwgIkFEQyBNVVgifSwKKworCXsiREFDTCIsIE5VTEwsICJJMlMgSU4ifSwKKwl7IkRBQ1IiLCBOVUxMLCAiSTJTIElOIn0sCisKKwl7IklGIERBQ0wxIiwgTlVMTCwgIkRBQ0wifSwKKwl7IklGIERBQ1IxIiwgTlVMTCwgIkRBQ1IifSwKKwl7IklGIERBQ0wyIiwgTlVMTCwgIkRBQ0wifSwKKwl7IklGIERBQ1IyIiwgTlVMTCwgIkRBQ1IifSwKKwl7IklGIERBQ0wzIiwgTlVMTCwgIkRBQ0wifSwKKwl7IklGIERBQ1IzIiwgTlVMTCwgIkRBQ1IifSwKKworCisJeyJJRiBEQUNMIE1peGVyIiwgTlVMTCwgIklGIERBQ0wyIn0sCQorCXsiSUYgREFDTCBNaXhlciIsICJEQUNSIERBQ0wgTWl4ZXIiLCAiSUYgREFDUjEifSwKKwl7IklGIERBQ1IgTWl4ZXIiLCBOVUxMLCAiSUYgREFDUjIifSwJCisJeyJJRiBEQUNSIE1peGVyIiwgIkRBQ0wgREFDUiBNaXhlciIsICJJRiBEQUNMMSJ9LAorCisJeyJPVVRMIE1VWCIsICJub3JtYWwiLCAiSUYgREFDTCBNaXhlciJ9LAorCXsiT1VUTCBNVVgiLCAiREFDMiBjaGFubmVsIHRvIERBQzEgY2hhbm5lbCIsICJJRiBEQUNSIE1peGVyIn0sCisJeyJPVVRSIE1VWCIsICJub3JtYWwiLCAiSUYgREFDUiBNaXhlciJ9LAorCXsiT1VUUiBNVVgiLCAiREFDMSBjaGFubmVsIHRvIERBQzIgY2hhbm5lbCIsICJJRiBEQUNMIE1peGVyIn0sCisKKwl7IkhQT0wiLCBOVUxMLCAiT1VUTCBNVVgifSwKKwl7IkhQT1IiLCBOVUxMLCAiT1VUUiBNVVgifSwKKworfTsKKworc3RydWN0IF9jb2VmZl9kaXYgeworCXUxNiBmczsKKwl1MzIgbWNsazsKKwl1MzIgcmF0ZTsKKwl1OCBSZWcweDA0OworCXU4IFJlZzB4MDU7CisJdTggUmVnMHgwNjsKKwl1OCBSZWcweDA3OworCXU4IFJlZzB4MDg7CisJdTggUmVnMHgwOTsKKwl1OCBSZWcweDBBOworCXU4IFJlZzB4MEY7CisJdTggUmVnMHgxMTsKKwl1OCBSZWcweDIxOworCXU4IFJlZzB4MjI7CisJdTggUmVnMHgyNjsKKwl1OCBSZWcweDMwOworCXU4IFJlZzB4NDE7CisJdTggUmVnMHg0MjsKKwl1OCBSZWcweDQzOworCXU4IFJlZzB4RjA7CisJdTggUmVnMHhGMTsKKwl1OCBSZWcweDE2OworCXU4IFJlZzB4MTg7CisJdTggUmVnMHgxOTsKK307CisKKworLyogY29kZWMgaGlmaSBtY2xrIGNsb2NrIGRpdmlkZXIgY29lZmZpY2llbnRzICovCitzdGF0aWMgY29uc3Qgc3RydWN0IF9jb2VmZl9kaXYgIGNvZWZmX2RpdltdID0geworCXszMiAsMjU2MDAwICw4MDAwICwweDAwICwweDU3ICwweDg0ICwweEQwICwweDAzICwweEMxICwweEIwICwweDAwICwweDAwICwweDFGICwweDdGICwweEJGICwweEMwICwweEZGICwweDdGICwweDAxICwweDEyICwweDAwICwweDA5ICwweDE5ICwweDA3fSwKKwl7MzYgLDI4ODAwMCAsODAwMCAsMHgwMCAsMHg1NSAsMHg4NCAsMHhEMCAsMHgwMSAsMHhDMSAsMHg5MCAsMHgwMCAsMHgwMCAsMHgyMyAsMHg4RiAsMHhCNyAsMHhDMCAsMHgxRiAsMHg4RiAsMHgwMSAsMHgxMiAsMHgwMCAsMHgwOSAsMHgxOSAsMHgwN30sCisJezQ4ICwzODQwMDAgLDgwMDAgLDB4MDIgLDB4NUYgLDB4MDQgLDB4QzAgLDB4MDMgLDB4QzEgLDB4QjAgLDB4MDAgLDB4MDAgLDB4MUYgLDB4N0YgLDB4QkYgLDB4QzAgLDB4RkYgLDB4N0YgLDB4MDEgLDB4MTIgLDB4MDAgLDB4MDkgLDB4MTkgLDB4MDd9LAorCXs2NCAsNTEyMDAwICw4MDAwICwweDAwICwweDREICwweDI0ICwweEMwICwweDAzICwweEQxICwweEIwICwweDAwICwweDAwICwweDFGICwweDdGICwweEJGICwweEMwICwweEZGICwweDdGICwweDAxICwweDEyICwweDAwICwweDA5ICwweDE5ICwweDA3fSwKKwl7NzIgLDU3NjAwMCAsODAwMCAsMHgwMCAsMHg0NSAsMHgyNCAsMHhDMCAsMHgwMSAsMHhEMSAsMHg5MCAsMHgwMCAsMHgwMCAsMHgyMyAsMHg4RiAsMHhCNyAsMHhDMCAsMHgxRiAsMHg4RiAsMHgwMSAsMHgxMiAsMHgwMCAsMHgwOSAsMHgxOSAsMHgwN30sCisJezk2ICw3NjgwMDAgLDgwMDAgLDB4MDIgLDB4NTcgLDB4ODQgLDB4RDAgLDB4MDMgLDB4QzEgLDB4QjAgLDB4MDAgLDB4MDAgLDB4MUYgLDB4N0YgLDB4QkYgLDB4QzAgLDB4RkYgLDB4N0YgLDB4MDEgLDB4MTIgLDB4MDAgLDB4MDkgLDB4MTkgLDB4MDd9LAorCXsxMjggLDEwMjQwMDAgLDgwMDAgLDB4MDAgLDB4NDUgLDB4MDQgLDB4RDAgLDB4MDMgLDB4QzEgLDB4QjAgLDB4MDAgLDB4MDAgLDB4MUYgLDB4N0YgLDB4QkYgLDB4QzAgLDB4RkYgLDB4N0YgLDB4MDEgLDB4MTIgLDB4MDAgLDB4MDkgLDB4MTkgLDB4MDd9LAorCXsxOTIgLDE1MzYwMDAgLDgwMDAgLDB4MDIgLDB4NEQgLDB4MjQgLDB4QzAgLDB4MDMgLDB4RDEgLDB4QjAgLDB4MDAgLDB4MDAgLDB4MUYgLDB4N0YgLDB4QkYgLDB4QzAgLDB4RkYgLDB4N0YgLDB4MDEgLDB4MTIgLDB4MDAgLDB4MDkgLDB4MTkgLDB4MDd9LAorCXsyNTYgLDIwNDgwMDAgLDgwMDAgLDB4MDEgLDB4NDUgLDB4MDQgLDB4RDAgLDB4MDMgLDB4QzEgLDB4QjAgLDB4MDAgLDB4MDAgLDB4MUYgLDB4N0YgLDB4QkYgLDB4QzAgLDB4RkYgLDB4N0YgLDB4MDEgLDB4MTIgLDB4MDAgLDB4MDkgLDB4MTkgLDB4MDd9LAorCXsyODggLDIzMDQwMDAgLDgwMDAgLDB4MDEgLDB4NTEgLDB4MDAgLDB4QzAgLDB4MDEgLDB4QzEgLDB4OTAgLDB4MDAgLDB4MDAgLDB4MjMgLDB4OEYgLDB4QjcgLDB4QzAgLDB4MUYgLDB4OEYgLDB4MDEgLDB4MTIgLDB4MDAgLDB4MDkgLDB4MTkgLDB4MDd9LAorCXszODQgLDMwNzIwMDAgLDgwMDAgLDB4MDIgLDB4NDUgLDB4MDQgLDB4RDAgLDB4MDMgLDB4QzEgLDB4QjAgLDB4MDAgLDB4MDAgLDB4MUYgLDB4N0YgLDB4QkYgLDB4QzAgLDB4RkYgLDB4N0YgLDB4MDEgLDB4MTIgLDB4MDAgLDB4MDkgLDB4MTkgLDB4MDd9LAorCXs1MTIgLDQwOTYwMDAgLDgwMDAgLDB4MDAgLDB4NDEgLDB4MDQgLDB4RTAgLDB4MDAgLDB4RDEgLDB4QjAgLDB4MDAgLDB4MDAgLDB4MUYgLDB4N0YgLDB4QkYgLDB4QzAgLDB4RkYgLDB4N0YgLDB4MDEgLDB4MTIgLDB4MDAgLDB4MDkgLDB4MTkgLDB4MDd9LAorCXs3NjggLDYxNDQwMDAgLDgwMDAgLDB4MDUgLDB4NDUgLDB4MDQgLDB4RDAgLDB4MDMgLDB4QzEgLDB4QjAgLDB4MDAgLDB4MDAgLDB4MUYgLDB4N0YgLDB4QkYgLDB4QzAgLDB4RkYgLDB4N0YgLDB4MDEgLDB4MTIgLDB4MDAgLDB4MDkgLDB4MTkgLDB4MDd9LAorCXsxMDI0ICw4MTkyMDAwICw4MDAwICwweDAxICwweDQxICwweDA2ICwweEUwICwweDAwICwweEQxICwweEIwICwweDAwICwweDAwICwweDFGICwweDdGICwweEJGICwweEMwICwweEZGICwweDdGICwweDAxICwweDEyICwweDAwICwweDA5ICwweDE5ICwweDA3fSwKKwl7MTUzNiAsMTIyODgwMDAgLDgwMDAgLDB4MDIgLDB4NDEgLDB4MDQgLDB4RTAgLDB4MDAgLDB4RDEgLDB4QjAgLDB4NDAgLDB4MDAgLDB4MUYgLDB4N0YgLDB4QkYgLDB4QzAgLDB4RkYgLDB4N0YgLDB4MDEgLDB4MTIgLDB4MDAgLDB4MDkgLDB4MTkgLDB4MDd9LAorCXsxNjI1ICwxMzAwMDAwMCAsODAwMCAsMHg0MCAsMHg2RSAsMHgwNSAsMHhDOCAsMHgwMSAsMHhDMiAsMHg5MCAsMHg0MCAsMHgwMCAsMHgxOCAsMHg5NSAsMHhEMCAsMHhDMCAsMHg2MyAsMHg5NSAsMHgwMCAsMHgxMiAsMHgwMCAsMHgwOSAsMHgxOSAsMHgwN30sCisJezIwNDggLDE2Mzg0MDAwICw4MDAwICwweDAzICwweDQ0ICwweDAxICwweEMwICwweDAwICwweEQyICwweDgwICwweDQwICwweDAwICwweDFGICwweDdGICwweEJGICwweEMwICwweEZGICwweDdGICwweDAxICwweDEyICwweDAwICwweDA5ICwweDE5ICwweDA3fSwKKwl7MjMwNCAsMTg0MzIwMDAgLDgwMDAgLDB4MTEgLDB4NDUgLDB4MjUgLDB4RjAgLDB4MDAgLDB4RDEgLDB4QjAgLDB4NDAgLDB4MDAgLDB4MUYgLDB4N0YgLDB4QkYgLDB4QzAgLDB4RkYgLDB4N0YgLDB4MDEgLDB4MTIgLDB4MDAgLDB4MDkgLDB4MTkgLDB4MDd9LAorCXszMDcyICwyNDU3NjAwMCAsODAwMCAsMHgwNSAsMHg0NCAsMHgwMSAsMHhDMCAsMHgwMCAsMHhEMiAsMHg4MCAsMHg0MCAsMHgwMCAsMHgxRiAsMHg3RiAsMHhCRiAsMHhDMCAsMHhGRiAsMHg3RiAsMHgwMSAsMHgxMiAsMHgwMCAsMHgwOSAsMHgxOSAsMHgwN30sCisJezMyICw1MTIwMDAgLDE2MDAwICwweDAwICwweDU1ICwweDg0ICwweEQwICwweDAxICwweEMxICwweDkwICwweDAwICwweDAwICwweDFGICwweDdGICwweEJGICwweEMwICwweEZGICwweDdGICwweDAwICwweDEyICwweDAwICwweDEyICwweDMxICwweDBFfSwKKwl7MzYgLDU3NjAwMCAsMTYwMDAgLDB4MDAgLDB4NTUgLDB4ODQgLDB4RDAgLDB4MDEgLDB4QzEgLDB4OTAgLDB4MDAgLDB4MDAgLDB4MjMgLDB4OEYgLDB4QjcgLDB4QzAgLDB4MUYgLDB4OEYgLDB4MDEgLDB4MTIgLDB4MDAgLDB4MTIgLDB4MzEgLDB4MEV9LAorCXs0OCAsNzY4MDAwICwxNjAwMCAsMHgwMiAsMHg1NyAsMHgwNCAsMHhDMCAsMHgwMSAsMHhDMSAsMHg5MCAsMHgwMCAsMHgwMCAsMHgxRiAsMHg3RiAsMHhCRiAsMHhDMCAsMHhGRiAsMHg3RiAsMHgwMCAsMHgxMiAsMHgwMCAsMHgxMiAsMHgzMSAsMHgwRX0sCisJezUwICw4MDAwMDAgLDE2MDAwICwweDAwICwweDdFICwweDAxICwweEQ5ICwweDAwICwweEMyICwweDgwICwweDAwICwweDAwICwweDE4ICwweDk1ICwweEQwICwweEMwICwweEM3ICwweDk1ICwweDAwICwweDEyICwweDAwICwweDEyICwweDMxICwweDBFfSwKKwl7NjQgLDEwMjQwMDAgLDE2MDAwICwweDAwICwweDQ1ICwweDI0ICwweEMwICwweDAxICwweEQxICwweDkwICwweDAwICwweDAwICwweDFGICwweDdGICwweEJGICwweEMwICwweEZGICwweDdGICwweDAwICwweDEyICwweDAwICwweDEyICwweDMxICwweDBFfSwKKwl7NzIgLDExNTIwMDAgLDE2MDAwICwweDAwICwweDQ1ICwweDI0ICwweEMwICwweDAxICwweEQxICwweDkwICwweDAwICwweDAwICwweDIzICwweDhGICwweEI3ICwweEMwICwweDFGICwweDhGICwweDAxICwweDEyICwweDAwICwweDEyICwweDMxICwweDBFfSwKKwl7OTYgLDE1MzYwMDAgLDE2MDAwICwweDAyICwweDU1ICwweDg0ICwweEQwICwweDAxICwweEMxICwweDkwICwweDAwICwweDAwICwweDFGICwweDdGICwweEJGICwweEMwICwweEZGICwweDdGICwweDAwICwweDEyICwweDAwICwweDEyICwweDMxICwweDBFfSwKKwl7MTI4ICwyMDQ4MDAwICwxNjAwMCAsMHgwMCAsMHg1MSAsMHgwNCAsMHhEMCAsMHgwMSAsMHhDMSAsMHg5MCAsMHgwMCAsMHgwMCAsMHgxRiAsMHg3RiAsMHhCRiAsMHhDMCAsMHhGRiAsMHg3RiAsMHgwMCAsMHgxMiAsMHgwMCAsMHgxMiAsMHgzMSAsMHgwRX0sCisJezE0NCAsMjMwNDAwMCAsMTYwMDAgLDB4MDAgLDB4NTEgLDB4MDAgLDB4QzAgLDB4MDEgLDB4QzEgLDB4OTAgLDB4MDAgLDB4MDAgLDB4MjMgLDB4OEYgLDB4QjcgLDB4QzAgLDB4MUYgLDB4OEYgLDB4MDEgLDB4MTIgLDB4MDAgLDB4MTIgLDB4MzEgLDB4MEV9LAorCXsxOTIgLDMwNzIwMDAgLDE2MDAwICwweDAyICwweDY1ICwweDI1ICwweEUwICwweDAwICwweEUxICwweDkwICwweDAwICwweDAwICwweDFGICwweDdGICwweEJGICwweEMwICwweEZGICwweDdGICwweDAwICwweDEyICwweDAwICwweDEyICwweDMxICwweDBFfSwKKwl7MjU2ICw0MDk2MDAwICwxNjAwMCAsMHgwMCAsMHg0MSAsMHgwNCAsMHhDMCAsMHgwMSAsMHhEMSAsMHg5MCAsMHgwMCAsMHgwMCAsMHgxRiAsMHg3RiAsMHhCRiAsMHhDMCAsMHhGRiAsMHg3RiAsMHgwMCAsMHgxMiAsMHgwMCAsMHgxMiAsMHgzMSAsMHgwRX0sCisJezMwMCAsNDgwMDAwMCAsMTYwMDAgLDB4MDIgLDB4NjYgLDB4MDEgLDB4RDkgLDB4MDAgLDB4QzIgLDB4ODAgLDB4MDAgLDB4MDAgLDB4MTggLDB4OTUgLDB4RDAgLDB4QzAgLDB4QzcgLDB4OTUgLDB4MDAgLDB4MTIgLDB4MDAgLDB4MTIgLDB4MzEgLDB4MEV9LAorCXszODQgLDYxNDQwMDAgLDE2MDAwICwweDAyICwweDUxICwweDA0ICwweEQwICwweDAxICwweEMxICwweDkwICwweDAwICwweDAwICwweDFGICwweDdGICwweEJGICwweEMwICwweEZGICwweDdGICwweDAwICwweDEyICwweDAwICwweDEyICwweDMxICwweDBFfSwKKwl7NTEyICw4MTkyMDAwICwxNjAwMCAsMHgwMSAsMHg0MSAsMHgwNCAsMHhDMCAsMHgwMSAsMHhEMSAsMHg5MCAsMHgwMCAsMHgwMCAsMHgxRiAsMHg3RiAsMHhCRiAsMHhDMCAsMHhGRiAsMHg3RiAsMHgwMCAsMHgxMiAsMHgwMCAsMHgxMiAsMHgzMSAsMHgwRX0sCisJezc1MCAsMTIwMDAwMDAgLDE2MDAwICwweDBFICwweDdFICwweDAxICwweEM5ICwweDAwICwweEMyICwweDgwICwweDQwICwweDAwICwweDE4ICwweDk1ICwweEQwICwweEMwICwweEM3ICwweDk1ICwweDAwICwweDEyICwweDAwICwweDEyICwweDMxICwweDBFfSwKKwl7NzY4ICwxMjI4ODAwMCAsMTYwMDAgLDB4MDIgLDB4NDEgLDB4MDQgLDB4QzAgLDB4MDEgLDB4RDEgLDB4OTAgLDB4NDAgLDB4MDAgLDB4MUYgLDB4N0YgLDB4QkYgLDB4QzAgLDB4RkYgLDB4N0YgLDB4MDAgLDB4MTIgLDB4MDAgLDB4MTIgLDB4MzEgLDB4MEV9LAorCXsxMDI0ICwxNjM4NDAwMCAsMTYwMDAgLDB4MDMgLDB4NDEgLDB4MDQgLDB4QzAgLDB4MDEgLDB4RDEgLDB4OTAgLDB4NDAgLDB4MDAgLDB4MUYgLDB4N0YgLDB4QkYgLDB4QzAgLDB4RkYgLDB4N0YgLDB4MDAgLDB4MTIgLDB4MDAgLDB4MTIgLDB4MzEgLDB4MEV9LAorCXsxMTUyICwxODQzMjAwMCAsMTYwMDAgLDB4MDggLDB4NTEgLDB4MDQgLDB4RDAgLDB4MDEgLDB4QzEgLDB4OTAgLDB4NDAgLDB4MDAgLDB4MUYgLDB4N0YgLDB4QkYgLDB4QzAgLDB4RkYgLDB4N0YgLDB4MDAgLDB4MTIgLDB4MDAgLDB4MTIgLDB4MzEgLDB4MEV9LAorCXsxMjAwICwxOTIwMDAwMCAsMTYwMDAgLDB4MEIgLDB4NjYgLDB4MDEgLDB4RDkgLDB4MDAgLDB4QzIgLDB4ODAgLDB4NDAgLDB4MDAgLDB4MTggLDB4OTUgLDB4RDAgLDB4QzAgLDB4QzcgLDB4OTUgLDB4MDAgLDB4MTIgLDB4MDAgLDB4MTIgLDB4MzEgLDB4MEV9LAorCXsxNTAwICwyNDAwMDAwMCAsMTYwMDAgLDB4MEUgLDB4MjYgLDB4MDEgLDB4RDkgLDB4MDAgLDB4QzIgLDB4ODAgLDB4QzAgLDB4MDAgLDB4MTggLDB4OTUgLDB4RDAgLDB4QzAgLDB4QzcgLDB4OTUgLDB4MDAgLDB4MTIgLDB4MDAgLDB4MTIgLDB4MzEgLDB4MEV9LAorCXsxNTM2ICwyNDU3NjAwMCAsMTYwMDAgLDB4MDUgLDB4NDEgLDB4MDQgLDB4QzAgLDB4MDEgLDB4RDEgLDB4OTAgLDB4QzAgLDB4MDAgLDB4MUYgLDB4N0YgLDB4QkYgLDB4QzAgLDB4RkYgLDB4N0YgLDB4MDAgLDB4MTIgLDB4MDAgLDB4MTIgLDB4MzEgLDB4MEV9LAorCXsxNjI1ICwyNjAwMDAwMCAsMTYwMDAgLDB4NDAgLDB4NkUgLDB4MDUgLDB4QzggLDB4MDEgLDB4QzIgLDB4OTAgLDB4QzAgLDB4MDAgLDB4MTggLDB4OTUgLDB4RDAgLDB4QzAgLDB4NjMgLDB4OTUgLDB4MDAgLDB4MTIgLDB4MDAgLDB4MTIgLDB4MzEgLDB4MEV9LAorCXs4MDAgLDE5MjAwMDAwICwyNDAwMCAsMHgwNyAsMHg2NiAsMHgwMSAsMHhEOSAsMHgwMCAsMHhDMiAsMHg4MCAsMHg0MCAsMHgwMCAsMHgxOCAsMHg5NSAsMHhEMCAsMHhDMCAsMHhDNyAsMHg5NSAsMHgwMCAsMHgxMiAsMHgwMCAsMHgxQSAsMHg0OSAsMHgxNH0sCisJezYwMCAsMTkyMDAwMDAgLDMyMDAwICwweDA1ICwweDQ2ICwweDAxICwweEQ4ICwweDEwICwweEQyICwweDgwICwweDQwICwweDAwICwweDE4ICwweDk1ICwweEQwICwweEMwICwweDYzICwweDk1ICwweDAwICwweDEyICwweDAwICwweDIzICwweDYxICwweDFCfSwKKwl7MzIgLDE0MTEyMDAgLDQ0MTAwICwweDAwICwweDQ1ICwweEE0ICwweEQwICwweDEwICwweEQxICwweDgwICwweDAwICwweDAwICwweDFGICwweDdGICwweEJGICwweEMwICwweDdGICwweDdGICwweDAwICwweDEyICwweDAwICwweDM1ICwweDkxICwweDI4fSwKKwl7NjQgLDI4MjI0MDAgLDQ0MTAwICwweDAwICwweDUxICwweDAwICwweEMwICwweDEwICwweEMxICwweDgwICwweDAwICwweDAwICwweDFGICwweDdGICwweEJGICwweEMwICwweDdGICwweDdGICwweDAwICwweDEyICwweDAwICwweDM1ICwweDkxICwweDI4fSwKKwl7MTI4ICw1NjQ0ODAwICw0NDEwMCAsMHgwMCAsMHg0MSAsMHgwNCAsMHhEMCAsMHgxMCAsMHhEMSAsMHg4MCAsMHgwMCAsMHgwMCAsMHgxRiAsMHg3RiAsMHhCRiAsMHhDMCAsMHg3RiAsMHg3RiAsMHgwMCAsMHgxMiAsMHgwMCAsMHgzNSAsMHg5MSAsMHgyOH0sCisJezI1NiAsMTEyODk2MDAgLDQ0MTAwICwweDAxICwweDQxICwweDA0ICwweEQwICwweDEwICwweEQxICwweDgwICwweDQwICwweDAwICwweDFGICwweDdGICwweEJGICwweEMwICwweDdGICwweDdGICwweDAwICwweDEyICwweDAwICwweDM1ICwweDkxICwweDI4fSwKKwl7NTEyICwyMjU3OTIwMCAsNDQxMDAgLDB4MDMgLDB4NDEgLDB4MDQgLDB4RDAgLDB4MTAgLDB4RDEgLDB4ODAgLDB4QzAgLDB4MDAgLDB4MUYgLDB4N0YgLDB4QkYgLDB4QzAgLDB4N0YgLDB4N0YgLDB4MDAgLDB4MTIgLDB4MDAgLDB4MzUgLDB4OTEgLDB4Mjh9LAorCXszMiAsMTUzNjAwMCAsNDgwMDAgLDB4MDAgLDB4NDUgLDB4QTQgLDB4RDAgLDB4MTAgLDB4RDEgLDB4ODAgLDB4MDAgLDB4MDAgLDB4MUYgLDB4N0YgLDB4QkYgLDB4QzAgLDB4N0YgLDB4N0YgLDB4MDAgLDB4MTIgLDB4MDAgLDB4MzUgLDB4OTEgLDB4Mjh9LAorCXs0OCAsMjMwNDAwMCAsNDgwMDAgLDB4MDIgLDB4NTUgLDB4MDQgLDB4QzAgLDB4MTAgLDB4QzEgLDB4ODAgLDB4MDAgLDB4MDAgLDB4MUYgLDB4N0YgLDB4QkYgLDB4QzAgLDB4N0YgLDB4N0YgLDB4MDAgLDB4MTIgLDB4MDAgLDB4MzUgLDB4OTEgLDB4Mjh9LAorCXs1MCAsMjQwMDAwMCAsNDgwMDAgLDB4MDAgLDB4NzYgLDB4MDEgLDB4QzggLDB4MTAgLDB4QzIgLDB4ODAgLDB4MDAgLDB4MDAgLDB4MTggLDB4OTUgLDB4RDAgLDB4QzAgLDB4NjMgLDB4OTUgLDB4MDAgLDB4MTIgLDB4MDAgLDB4MzUgLDB4OTEgLDB4Mjh9LAorCXs2NCAsMzA3MjAwMCAsNDgwMDAgLDB4MDAgLDB4NTEgLDB4MDQgLDB4QzAgLDB4MTAgLDB4QzEgLDB4ODAgLDB4MDAgLDB4MDAgLDB4MUYgLDB4N0YgLDB4QkYgLDB4QzAgLDB4N0YgLDB4N0YgLDB4MDAgLDB4MTIgLDB4MDAgLDB4MzUgLDB4OTEgLDB4Mjh9LAorCXsxMDAgLDQ4MDAwMDAgLDQ4MDAwICwweDAwICwweDQ2ICwweDAxICwweEQ4ICwweDEwICwweEQyICwweDgwICwweDAwICwweDAwICwweDE4ICwweDk1ICwweEQwICwweEMwICwweDYzICwweDk1ICwweDAwICwweDEyICwweDAwICwweDM1ICwweDkxICwweDI4fSwKKwl7MTI1ICw2MDAwMDAwICw0ODAwMCAsMHgwNCAsMHg2RSAsMHgwNSAsMHhDOCAsMHgxMCAsMHhDMiAsMHg4MCAsMHgwMCAsMHgwMSAsMHgxOCAsMHg5NSAsMHhEMCAsMHhDMCAsMHg2MyAsMHg5NSAsMHgwMCAsMHgxMiAsMHgwMCAsMHgzNSAsMHg5MSAsMHgyOH0sCisJezEyOCAsNjE0NDAwMCAsNDgwMDAgLDB4MDAgLDB4NDEgLDB4MDQgLDB4RDAgLDB4MTAgLDB4RDEgLDB4ODAgLDB4MDAgLDB4MDAgLDB4MUYgLDB4N0YgLDB4QkYgLDB4QzAgLDB4N0YgLDB4N0YgLDB4MDAgLDB4MTIgLDB4MDAgLDB4MzUgLDB4OTEgLDB4Mjh9LAorCXsyMDAgLDk2MDAwMDAgLDQ4MDAwICwweDAxICwweDQ2ICwweDAxICwweEQ4ICwweDEwICwweEQyICwweDgwICwweDAwICwweDAwICwweDE4ICwweDk1ICwweEQwICwweEMwICwweDYzICwweDk1ICwweDAwICwweDEyICwweDAwICwweDM1ICwweDkxICwweDI4fSwKKwl7MjUwICwxMjAwMDAwMCAsNDgwMDAgLDB4MDQgLDB4NzYgLDB4MDEgLDB4QzggLDB4MTAgLDB4QzIgLDB4ODAgLDB4NDAgLDB4MDAgLDB4MTggLDB4OTUgLDB4RDAgLDB4QzAgLDB4NjMgLDB4OTUgLDB4MDAgLDB4MTIgLDB4MDAgLDB4MzUgLDB4OTEgLDB4Mjh9LAorCXsyNTYgLDEyMjg4MDAwICw0ODAwMCAsMHgwMSAsMHg0MSAsMHgwNCAsMHhEMCAsMHgxMCAsMHhEMSAsMHg4MCAsMHg0MCAsMHgwMCAsMHgxRiAsMHg3RiAsMHhCRiAsMHhDMCAsMHg3RiAsMHg3RiAsMHgwMCAsMHgxMiAsMHgwMCAsMHgzNSAsMHg5MSAsMHgyOH0sCisJezM4NCAsMTg0MzIwMDAgLDQ4MDAwICwweDAyICwweDQxICwweDA0ICwweEQwICwweDEwICwweEQxICwweDgwICwweDQwICwweDAwICwweDFGICwweDdGICwweEJGICwweEMwICwweDdGICwweDdGICwweDAwICwweDEyICwweDAwICwweDM1ICwweDkxICwweDI4fSwKKwl7NDAwICwxOTIwMDAwMCAsNDgwMDAgLDB4MDMgLDB4NDYgLDB4MDEgLDB4RDggLDB4MTAgLDB4RDIgLDB4ODAgLDB4NDAgLDB4MDAgLDB4MTggLDB4OTUgLDB4RDAgLDB4QzAgLDB4NjMgLDB4OTUgLDB4MDAgLDB4MTIgLDB4MDAgLDB4MzUgLDB4OTEgLDB4Mjh9LAorCXs1MDAgLDI0MDAwMDAwICw0ODAwMCAsMHgwNCAsMHg0NiAsMHgwMSAsMHhEOCAsMHgxMCAsMHhEMiAsMHg4MCAsMHhDMCAsMHgwMCAsMHgxOCAsMHg5NSAsMHhEMCAsMHhDMCAsMHg2MyAsMHg5NSAsMHgwMCAsMHgxMiAsMHgwMCAsMHgzNSAsMHg5MSAsMHgyOH0sCisJezUxMiAsMjQ1NzYwMDAgLDQ4MDAwICwweDAzICwweDQxICwweDA0ICwweEQwICwweDEwICwweEQxICwweDgwICwweEMwICwweDAwICwweDFGICwweDdGICwweEJGICwweEMwICwweDdGICwweDdGICwweDAwICwweDEyICwweDAwICwweDM1ICwweDkxICwweDI4fSwKKwl7ODAwICwzODQwMDAwMCAsNDgwMDAgLDB4MTggLDB4NDUgLDB4MDQgLDB4QzAgLDB4MTAgLDB4QzEgLDB4ODAgLDB4QzAgLDB4MDAgLDB4MUYgLDB4N0YgLDB4QkYgLDB4QzAgLDB4N0YgLDB4N0YgLDB4MDAgLDB4MTIgLDB4MDAgLDB4MzUgLDB4OTEgLDB4Mjh9LAorCXsxMjggLDExMjg5NjAwICw4ODIwMCAsMHgwMCAsMHg1MCAsMHgwMCAsMHhDMCAsMHgxMCAsMHhDMSAsMHg4MCAsMHg0MCAsMHgwMCAsMHg5RiAsMHg3RiAsMHhCRiAsMHhDMCAsMHg3RiAsMHg3RiAsMHg4MCAsMHgxMiAsMHhDMCAsMHgzMiAsMHg4OSAsMHgyNX0sCisJezY0ICw2MTQ0MDAwICw5NjAwMCAsMHgwMCAsMHg0MSAsMHgwMCAsMHhEMCAsMHgxMCAsMHhEMSAsMHg4MCAsMHgwMCAsMHgwMCAsMHg5RiAsMHg3RiAsMHhCRiAsMHhDMCAsMHg3RiAsMHg3RiAsMHg4MCAsMHgxMiAsMHhDMCAsMHgzNSAsMHg5MSAsMHgyOH0sCisJezEyOCAsMTIyODgwMDAgLDk2MDAwICwweDAwICwweDUwICwweDAwICwweEMwICwweDEwICwweEMxICwweDgwICwweEMwICwweDAwICwweDlGICwweDdGICwweEJGICwweEMwICwweDdGICwweDdGICwweDgwICwweDEyICwweEMwICwweDM1ICwweDkxICwweDI4fSwKKwl7MjU2ICwyNDU3NjAwMCAsOTYwMDAgLDB4MDAgLDB4NDAgLDB4MDAgLDB4QzAgLDB4MTAgLDB4QzEgLDB4ODAgLDB4QzAgLDB4MDAgLDB4OUYgLDB4N0YgLDB4QkYgLDB4QzAgLDB4N0YgLDB4N0YgLDB4ODAgLDB4MTIgLDB4QzAgLDB4MzUgLDB4OTEgLDB4Mjh9LAorCXsxMjggLDI0NTc2MDAwICwxOTIwMDAgLDB4MDAgLDB4NTAgLDB4MDAgLDB4QzAgLDB4MTggLDB4QzEgLDB4ODEgLDB4QzAgLDB4MDAgLDB4OEYgLDB4N0YgLDB4RUYgLDB4QzAgLDB4M0YgLDB4N0YgLDB4ODAgLDB4MTIgLDB4QzAgLDB4M0YgLDB4RjkgLDB4M0Z9LAorCisJezUwICw0MDAwMDAgLDgwMDAgLDB4MDAgLDB4NzUgLDB4MDUgLDB4QzggLDB4MDEgLDB4QzEgLDB4OTAgLDB4MTAgLDB4MDAgLDB4MTggLDB4QzcgLDB4RDAgLDB4QzAgLDB4OEYgLDB4QzcgLDB4MDEgLDB4MTIgLDB4MDAgLDB4MDkgLDB4MTkgLDB4MDd9LAorCXs2MDAgLDQ4MDAwMDAgLDgwMDAgLDB4MDUgLDB4NjUgLDB4MjUgLDB4RjkgLDB4MDAgLDB4RDEgLDB4OTAgLDB4MTAgLDB4MDAgLDB4MTggLDB4QzcgLDB4RDAgLDB4QzAgLDB4OEYgLDB4QzcgLDB4MDEgLDB4MTIgLDB4MDAgLDB4MDkgLDB4MTkgLDB4MDd9LAorCXsxNTAwICwxMjAwMDAwMCAsODAwMCAsMHgwRSAsMHgyNSAsMHgyNSAsMHhFOCAsMHgwMCAsMHhEMSAsMHg5MCAsMHg0MCAsMHgwMCAsMHgzMSAsMHhDNyAsMHhDNSAsMHgwMCAsMHg4RiAsMHhDNyAsMHgwMSAsMHgxMiAsMHgwMCAsMHgwOSAsMHgxOSAsMHgwN30sCisJezI0MDAgLDE5MjAwMDAwICw4MDAwICwweDBCICwweDAxICwweDAwICwweEQwICwweDAwICwweEQxICwweDgwICwweDkwICwweDAwICwweDMxICwweEM3ICwweEM1ICwweDAwICwweEM3ICwweEM3ICwweDAwICwweDEyICwweDAwICwweDA5ICwweDE5ICwweDA3fSwKKwl7MzAwMCAsMjQwMDAwMDAgLDgwMDAgLDB4MEUgLDB4MjQgLDB4MDUgLDB4RDAgLDB4MDAgLDB4QzIgLDB4ODAgLDB4QzAgLDB4MDAgLDB4MzEgLDB4QzcgLDB4QzUgLDB4MDAgLDB4OEYgLDB4QzcgLDB4MDEgLDB4MTIgLDB4MDAgLDB4MDkgLDB4MTkgLDB4MDd9LAorCXszMjUwICwyNjAwMDAwMCAsODAwMCAsMHg0MCAsMHgwNSAsMHhBNCAsMHhDMCAsMHgwMCAsMHhEMSAsMHg4MCAsMHhEMCAsMHgwMCAsMHgzMSAsMHhDNyAsMHhDNSAsMHgwMCAsMHhDNyAsMHhDNyAsMHgwMCAsMHgxMiAsMHgwMCAsMHgwOSAsMHgxOSAsMHgwN30sCisKK307CitzdGF0aWMgaW5saW5lIGludCBnZXRfY29lZmYoaW50IG1jbGssIGludCByYXRlKQoreworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY29lZmZfZGl2KTsgaSsrKSB7CisJCWlmIChjb2VmZl9kaXZbaV0ucmF0ZSA9PSByYXRlICYmICBjb2VmZl9kaXZbaV0ubWNsayA9PSBtY2xrKQorCQkJcmV0dXJuIGk7CisJfQorCXJldHVybiAtRUlOVkFMOworfQorCisvKgorICogaWYgUExMIG5vdCBiZSB1c2VkLCB1c2UgaW50ZXJuYWwgY2xrMSBmb3IgbWNsayxvdGhlcndpc2UsIHVzZSBpbnRlcm5hbCBjbGsyIGZvciBQTEwgc291cmNlLgorICovCitzdGF0aWMgaW50IGVzODM4OV9zZXRfZGFpX3N5c2NsayhzdHJ1Y3Qgc25kX3NvY19kYWkgKmRhaSwKKwkJCWludCBjbGtfaWQsIHVuc2lnbmVkIGludCBmcmVxLCBpbnQgZGlyKQoreworCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29kZWMgPSBkYWktPmNvbXBvbmVudDsKKwlzdHJ1Y3QgZXM4Mzg5X3ByaXZhdGUgKmVzODM4OSA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRhKGNvZGVjKTsKKworCWVzODM4OS0+c3lzY2xrID0gZnJlcTsKKworCXByaW50aygiY2hlbmxpX2VzODM4OSAlcyAlZCBlczgzODktPnN5c2NsayAlZFxuIiwgX19GVU5DVElPTl9fLF9fTElORV9fLCBlczgzODktPnN5c2Nsayk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBlczgzODlfc2V0X2RhaV9mbXQoc3RydWN0IHNuZF9zb2NfZGFpICpjb2RlY19kYWksIHVuc2lnbmVkIGludCBmbXQpCit7CisJc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb2RlYyA9IGNvZGVjX2RhaS0+Y29tcG9uZW50OworCXN0cnVjdCBlczgzODlfcHJpdmF0ZSAqZXM4Mzg5ID0gc25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoY29kZWMpOworCXU4IHN0YXRlID0gMDsKKworCWRldl9pbmZvKGNvZGVjLT5kZXYsICJFbnRlciBpbnRvICVzKClcbiIsIF9fZnVuY19fKTsKKworCXN3aXRjaCAoZm10ICYgU05EX1NPQ19EQUlGTVRfTUFTVEVSX01BU0spIHsKKwljYXNlIFNORF9TT0NfREFJRk1UX0NCTV9DRk06CisJICAgIHByaW50aygiY2hlbmxpX2VzODM4OSAlcyAlZFxuIiwgX19GVU5DVElPTl9fLF9fTElORV9fKTsKKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfTUFTVEVSX01PREVfUkVHMDEsCisJCQkJRVM4Mzg5X01BU1RFUl9NT0RFX0VOLCBFUzgzODlfTUFTVEVSX01PREVfRU4pOworCQllczgzODktPm1hc3Rlcm1vZGUgPSAxOworCQlicmVhazsKKwljYXNlIFNORF9TT0NfREFJRk1UX0NCU19DRlM6CisJICAgIHByaW50aygiY2hlbmxpX2VzODM4OSAlcyAlZFxuIiwgX19GVU5DVElPTl9fLF9fTElORV9fKTsKKwkJZXM4Mzg5LT5tYXN0ZXJtb2RlID0gMDsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJc3dpdGNoIChmbXQgJiBTTkRfU09DX0RBSUZNVF9GT1JNQVRfTUFTSykgeworCWNhc2UgU05EX1NPQ19EQUlGTVRfSTJTOgorCQlzdGF0ZSB8PSBFUzgzODlfREFJRk1UX0kyUzsKKwkJcHJpbnRrKCJjaGVubGlfZXM4Mzg5ICVzICVkXG4iLCBfX0ZVTkNUSU9OX18sX19MSU5FX18pOworCQlicmVhazsKKwljYXNlIFNORF9TT0NfREFJRk1UX1JJR0hUX0o6CisJCWRldl9lcnIoY29kZWMtPmRldiwgIkNvZGVjIGRyaXZlciBkb2VzIG5vdCBzdXBwb3J0IHJpZ2h0IGp1c3RpZmllZFxuIik7CisJCXByaW50aygiY2hlbmxpX2VzODM4OSAlcyAlZFxuIiwgX19GVU5DVElPTl9fLF9fTElORV9fKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJY2FzZSBTTkRfU09DX0RBSUZNVF9MRUZUX0o6CisJCXN0YXRlIHw9IEVTODM4OV9EQUlGTVRfTEVGVF9KOworCQlwcmludGsoImNoZW5saV9lczgzODkgJXMgJWRcbiIsIF9fRlVOQ1RJT05fXyxfX0xJTkVfXyk7CisJCWJyZWFrOworCWNhc2UgU05EX1NPQ19EQUlGTVRfRFNQX0E6CisJCXN0YXRlIHw9IEVTODM4OV9EQUlGTVRfRFNQX0E7CisJCXByaW50aygiY2hlbmxpX2VzODM4OSAlcyAlZFxuIiwgX19GVU5DVElPTl9fLF9fTElORV9fKTsKKwkJYnJlYWs7CisJY2FzZSBTTkRfU09DX0RBSUZNVF9EU1BfQjoKKwkJc3RhdGUgfD0gRVM4Mzg5X0RBSUZNVF9EU1BfQjsKKwkJcHJpbnRrKCJjaGVubGlfZXM4Mzg5ICVzICVkXG4iLCBfX0ZVTkNUSU9OX18sX19MSU5FX18pOworCQlicmVhazsKKwlkZWZhdWx0OgorCSAgICBwcmludGsoImNoZW5saV9lczgzODkgJXMgJWRcbiIsIF9fRlVOQ1RJT05fXyxfX0xJTkVfXyk7CisJCWJyZWFrOworCX0KKwlyZWdtYXBfdXBkYXRlX2JpdHMoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9BRENfUkVHMjAsIEVTODM4OV9EQUlGTVRfTUFTSywgc3RhdGUpOworCXJlZ21hcF91cGRhdGVfYml0cyhlczgzODktPnJlZ21hcCwgRVM4Mzg5X0RBQ19SRUc0MCwgRVM4Mzg5X0RBSUZNVF9NQVNLLCBzdGF0ZSk7CisKKwkJLyogY2xvY2sgaW52ZXJzaW9uICovCisJc3dpdGNoIChmbXQgJiBTTkRfU09DX0RBSUZNVF9JTlZfTUFTSykgeworCWNhc2UgU05EX1NPQ19EQUlGTVRfTkJfTkY6CisJCWJyZWFrOworCWNhc2UgU05EX1NPQ19EQUlGTVRfSUJfSUY6CisJCWJyZWFrOworCWNhc2UgU05EX1NPQ19EQUlGTVRfSUJfTkY6CisJCWJyZWFrOworCWNhc2UgU05EX1NPQ19EQUlGTVRfTkJfSUY6CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWJyZWFrOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGVzODM4OV9wY21faHdfcGFyYW1zKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLAorCQkJc3RydWN0IHNuZF9wY21faHdfcGFyYW1zICpwYXJhbXMsCisJCQlzdHJ1Y3Qgc25kX3NvY19kYWkgKmRhaSkKK3sKKwlzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvZGVjID0gZGFpLT5jb21wb25lbnQ7CisJc3RydWN0IGVzODM4OV9wcml2YXRlICplczgzODkgPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjb2RlYyk7CisJaW50IGNvZWZmOworCXU4IHN0YXRlID0gMDsKKworCXByaW50aygiY2hlbmxpX2VzODM4OSAlcyAlZFxuIiwgX19GVU5DVElPTl9fLF9fTElORV9fKTsKKworCXN3aXRjaCAocGFyYW1zX2Zvcm1hdChwYXJhbXMpKSB7CisJY2FzZSBTTkRSVl9QQ01fRk9STUFUX1MxNl9MRToKKwkJc3RhdGUgfD0gRVM4Mzg5X1MxNl9MRTsKKwkJcHJpbnRrKCJjaGVubGlfZXM4Mzg5ICVzICVkXG4iLCBfX0ZVTkNUSU9OX18sX19MSU5FX18pOworCQlicmVhazsKKwljYXNlIFNORFJWX1BDTV9GT1JNQVRfUzIwXzNMRToKKwkJc3RhdGUgfD0gRVM4Mzg5X1MyMF8zX0xFOworCQlwcmludGsoImNoZW5saV9lczgzODkgJXMgJWRcbiIsIF9fRlVOQ1RJT05fXyxfX0xJTkVfXyk7CisJCWJyZWFrOworCWNhc2UgU05EUlZfUENNX0ZPUk1BVF9TMThfM0xFOgorCQlzdGF0ZSB8PSBFUzgzODlfUzE4X0xFOworCQlwcmludGsoImNoZW5saV9lczgzODkgJXMgJWRcbiIsIF9fRlVOQ1RJT05fXyxfX0xJTkVfXyk7CisJCWJyZWFrOworCWNhc2UgU05EUlZfUENNX0ZPUk1BVF9TMjRfTEU6CisJCXN0YXRlIHw9IEVTODM4OV9TMjRfTEU7CisJCXByaW50aygiY2hlbmxpX2VzODM4OSAlcyAlZFxuIiwgX19GVU5DVElPTl9fLF9fTElORV9fKTsKKwkJYnJlYWs7CisJY2FzZSBTTkRSVl9QQ01fRk9STUFUX1MzMl9MRToKKwkJc3RhdGUgfD0gRVM4Mzg5X1MzMl9MRTsKKwkJcHJpbnRrKCJjaGVubGlfZXM4Mzg5ICVzICVkXG4iLCBfX0ZVTkNUSU9OX18sX19MSU5FX18pOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlyZWdtYXBfdXBkYXRlX2JpdHMoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9BRENfUkVHMjAsIEVTODM4OV9EQVRBX0xFTl9NQVNLLCBzdGF0ZSk7CisJcmVnbWFwX3VwZGF0ZV9iaXRzKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfREFDX1JFRzQwLCBFUzgzODlfREFUQV9MRU5fTUFTSywgc3RhdGUpOworCisJaWYgKGVzODM4OS0+bWNsa19zcmMgPT0gRVM4Mzg5X1NDTEtfUElOKSB7CisJICAgIHByaW50aygiY2hlbmxpX2VzODM4OSAlcyAlZFxuIiwgX19GVU5DVElPTl9fLF9fTElORV9fKTsKKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfTUFTVEVSX0NMS19SRUcwMiwKKwkJCQkJRVM4Mzg5X01DTEtfU09VUkNFLCBlczgzODktPm1jbGtfc3JjKTsKKwkJZXM4Mzg5LT5zeXNjbGsgPSBwYXJhbXNfY2hhbm5lbHMocGFyYW1zKSAqIHBhcmFtc193aWR0aChwYXJhbXMpICogcGFyYW1zX3JhdGUocGFyYW1zKTsKKwl9CisKKwljb2VmZiA9IGdldF9jb2VmZihlczgzODktPnN5c2NsaywgcGFyYW1zX3JhdGUocGFyYW1zKSk7CisKKwlpZiAoY29lZmYgPj0gMCkgeworCSAgICBwcmludGsoImNoZW5saV9lczgzODkgJXMgJWRcbiIsIF9fRlVOQ1RJT05fXyxfX0xJTkVfXyk7CisJICAgIHByaW50aygiRVM4Mzg5X0RFQlVHOiBGb3VuZCBjb2VmZlslZF06IGZzPSV1LCBtY2xrPSV1LCByYXRlPSV1XG4iLAorCSAgICAgICAgICAgY29lZmYsIGNvZWZmX2Rpdltjb2VmZl0uZnMsIGNvZWZmX2Rpdltjb2VmZl0ubWNsaywgY29lZmZfZGl2W2NvZWZmXS5yYXRlKTsKKworCQlyZWdtYXBfd3JpdGUoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9DTEtfRElWMV9SRUcwNCwgY29lZmZfZGl2W2NvZWZmXS5SZWcweDA0KTsKKwkJcmVnbWFwX3dyaXRlKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfQ0xLX01VTF9SRUcwNSwgY29lZmZfZGl2W2NvZWZmXS5SZWcweDA1KTsKKwkJcmVnbWFwX3dyaXRlKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfQ0xLX01VWDFfUkVHMDYsIGNvZWZmX2Rpdltjb2VmZl0uUmVnMHgwNik7CisJCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X0NMS19NVVgyX1JFRzA3LCBjb2VmZl9kaXZbY29lZmZdLlJlZzB4MDcpOworCQlyZWdtYXBfd3JpdGUoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9DTEtfQ1RMMV9SRUcwOCwgY29lZmZfZGl2W2NvZWZmXS5SZWcweDA4KTsKKwkJcmVnbWFwX3dyaXRlKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfQ0xLX0NUTDJfUkVHMDksIGNvZWZmX2Rpdltjb2VmZl0uUmVnMHgwOSk7CisJCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X0NMS19DVEwzX1JFRzBBLCBjb2VmZl9kaXZbY29lZmZdLlJlZzB4MEEpOworCQlyZWdtYXBfdXBkYXRlX2JpdHMoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9PU0NfQ0xLX1JFRzBGLAorCQkJCQkJMHhDMCwgY29lZmZfZGl2W2NvZWZmXS5SZWcweDBGKTsKKwkJcmVnbWFwX3dyaXRlKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfQ0xLX0RJVjJfUkVHMTEsIGNvZWZmX2Rpdltjb2VmZl0uUmVnMHgxMSk7CisJCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X0FEQ19SRUcyMSwgY29lZmZfZGl2W2NvZWZmXS5SZWcweDIxKTsKKwkJcmVnbWFwX3dyaXRlKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfQURDX1JFRzIyLCBjb2VmZl9kaXZbY29lZmZdLlJlZzB4MjIpOworCQlyZWdtYXBfd3JpdGUoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9PU1JfVk9MX1JFRzI2LCBjb2VmZl9kaXZbY29lZmZdLlJlZzB4MjYpOworCQlyZWdtYXBfdXBkYXRlX2JpdHMoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9TWVNURU1fUkVHMzAsCisJCQkJCQkweEMwLCBjb2VmZl9kaXZbY29lZmZdLlJlZzB4MzApOworCQlyZWdtYXBfd3JpdGUoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9EQUNfUkVHNDEsIGNvZWZmX2Rpdltjb2VmZl0uUmVnMHg0MSk7CisJCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X0RBQ19SRUc0MiwgY29lZmZfZGl2W2NvZWZmXS5SZWcweDQyKTsKKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfREFDX1JFRzQzLAorCQkJCQkJMHg4MSwgY29lZmZfZGl2W2NvZWZmXS5SZWcweDQzKTsKKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfQ0hJUF9NSVNDX1JFR0YwLAorCQkJCQkJMHg3MiwgY29lZmZfZGl2W2NvZWZmXS5SZWcweEYwKTsKKwkJcmVnbWFwX3dyaXRlKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfQ1NNX1NUQVRFMV9SRUdGMSwgY29lZmZfZGl2W2NvZWZmXS5SZWcweEYxKTsKKwkJcmVnbWFwX3dyaXRlKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfU1lTVEVNX1JFRzE2LCBjb2VmZl9kaXZbY29lZmZdLlJlZzB4MTYpOworCQlyZWdtYXBfd3JpdGUoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9TWVNURU1fUkVHMTgsIGNvZWZmX2Rpdltjb2VmZl0uUmVnMHgxOCk7CisJCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X1NZU1RFTV9SRUcxOSwgY29lZmZfZGl2W2NvZWZmXS5SZWcweDE5KTsKKwl9IGVsc2UgeworCQlkZXZfd2Fybihjb2RlYy0+ZGV2LCAiQ2xvY2sgY29lZmZpY2llbnRzIGRvIG5vdCBtYXRjaCIpOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGVzODM4OV9zZXRfYmlhc19sZXZlbChzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvZGVjLAorCQkJZW51bSBzbmRfc29jX2JpYXNfbGV2ZWwgbGV2ZWwpCit7CisJc3RydWN0IGVzODM4OV9wcml2YXRlICplczgzODkgPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjb2RlYyk7CisKKwlwcmludGsoImNoZW5saV9lczgzODkgJXMgJWRcbiIsIF9fRlVOQ1RJT05fXyxfX0xJTkVfXyk7CisJCisJc3dpdGNoIChsZXZlbCkgeworCWNhc2UgU05EX1NPQ19CSUFTX09OOgorCSAgICBwcmludGsoImNoZW5saV9lczgzODkgJXMgJWRcbiIsIF9fRlVOQ1RJT05fXyxfX0xJTkVfXyk7CisJCXJlZ21hcF91cGRhdGVfYml0cyhlczgzODktPnJlZ21hcCwgRVM4Mzg5X0hQU1dfUkVHNjksIDB4MjAsIDB4MjApOworCQlyZWdtYXBfd3JpdGUoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9BTkFfQ1RMMV9SRUc2MSwgMHhEOSk7CisJCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X0FEQ19FTl9SRUc2NCwgMHg4Rik7CisJCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X0NTTV9KVU1QX1JFRzEwLCAweEU0KTsKKwkJcmVnbWFwX3dyaXRlKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfUkVTRVRfUkVHMDAsIDB4MDEpOworCQlyZWdtYXBfd3JpdGUoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9DTEtfT0ZGMV9SRUcwMywgMHhDMyk7CisJCXJlZ21hcF91cGRhdGVfYml0cyhlczgzODktPnJlZ21hcCwgRVM4Mzg5X0FEQ19IUEYxX1JFRzI0LCAweDBmLCAweDBhKTsKKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfQURDX0hQRjJfUkVHMjUsIDB4MGYsIDB4MGEpOworCQl1c2xlZXBfcmFuZ2UoNzAwMDAsIDcyMDAwKTsKKwkJcmVnbWFwX3dyaXRlKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfREFDX1JFU0VUX1JFRzRELCAwWDAwKTsKKwkJYnJlYWs7CisJY2FzZSBTTkRfU09DX0JJQVNfUFJFUEFSRToKKwkgICAgcHJpbnRrKCJjaGVubGlfZXM4Mzg5ICVzICVkXG4iLCBfX0ZVTkNUSU9OX18sX19MSU5FX18pOworCQlicmVhazsKKwljYXNlIFNORF9TT0NfQklBU19TVEFOREJZOgorCSAgICBwcmludGsoImNoZW5saV9lczgzODkgJXMgJWRcbiIsIF9fRlVOQ1RJT05fXyxfX0xJTkVfXyk7CisJCXJlZ21hcF91cGRhdGVfYml0cyhlczgzODktPnJlZ21hcCwgRVM4Mzg5X0FEQ19IUEYxX1JFRzI0LCAweDBmLCAweDA0KTsKKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfQURDX0hQRjJfUkVHMjUsIDB4MGYsIDB4MDQpOworCQlyZWdtYXBfd3JpdGUoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9DU01fSlVNUF9SRUcxMCwgMHhENCk7CisJCXVzbGVlcF9yYW5nZSg3MDAwMCwgNzIwMDApOworCQlyZWdtYXBfd3JpdGUoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9BTkFfQ1RMMV9SRUc2MSwgMHg1OSk7CisJCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X0FEQ19FTl9SRUc2NCwgMHgwMCk7CisJCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X0NMS19PRkYxX1JFRzAzLCAweDAwKTsKKwkJcmVnbWFwX3dyaXRlKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfUkVTRVRfUkVHMDAsIDB4N0UpOworCQlyZWdtYXBfdXBkYXRlX2JpdHMoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9EQUNfSU5WX1JFRzQ1LCAweDgwLCAweDgwKTsKKwkJdXNsZWVwX3JhbmdlKDgwMDAsIDg1MDApOworCQlyZWdtYXBfdXBkYXRlX2JpdHMoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9EQUNfSU5WX1JFRzQ1LCAweDgwLCAweDAwKTsKKwkJYnJlYWs7CisJY2FzZSBTTkRfU09DX0JJQVNfT0ZGOgorCQlicmVhazsKKwl9CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZXM4Mzg5X211dGUoc3RydWN0IHNuZF9zb2NfZGFpICpkYWksIGludCBtdXRlLCBpbnQgZGlyZWN0aW9uKQoreworCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29kZWMgPSBkYWktPmNvbXBvbmVudDsKKwlzdHJ1Y3QgZXM4Mzg5X3ByaXZhdGUgKmVzODM4OSA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRhKGNvZGVjKTsKKwl1bnNpZ25lZCBpbnQgcmVndjsKKworCWlmIChtdXRlKSB7CisJCWlmIChkaXJlY3Rpb24gPT0gU05EUlZfUENNX1NUUkVBTV9QTEFZQkFDSykgeworCQkgICAgcHJpbnRrKCJjaGVubGlfZXM4Mzg5ICVzICVkXG4iLCBfX0ZVTkNUSU9OX18sX19MSU5FX18pOworCQkJcmVnbWFwX3VwZGF0ZV9iaXRzKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfREFDX1JFRzQwLAorCQkJCQkJMHgwMywgMHgwMyk7CisJCX0gZWxzZSB7CisJCSAgICBwcmludGsoImNoZW5saV9lczgzODkgJXMgJWRcbiIsIF9fRlVOQ1RJT05fXyxfX0xJTkVfXyk7CisJCQlyZWdtYXBfdXBkYXRlX2JpdHMoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9BRENfUkVHMjAsCisJCQkJCQkweDAzLCAweDAzKTsKKwkJfQorCX0gZWxzZSB7CisJCXJlZ21hcF9yZWFkKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfQ1NNX1NUQVRFMV9SRUdGMSwgJnJlZ3YpOworCQlpZiAocmVndiAhPSBFUzgzODlfU1RBVEVfT04pIHsKKwkJCXByaW50aygiY2hlbmxpX2VzODM4OSAlcyAlZFxuIiwgX19GVU5DVElPTl9fLF9fTElORV9fKTsKKwkJCXJlZ21hcF91cGRhdGVfYml0cyhlczgzODktPnJlZ21hcCwgRVM4Mzg5X0hQU1dfUkVHNjksIDB4MjAsIDB4MjApOworCQkJcmVnbWFwX3dyaXRlKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfQU5BX0NUTDFfUkVHNjEsIDB4RDkpOworCQkJcmVnbWFwX3dyaXRlKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfQURDX0VOX1JFRzY0LCAweDhGKTsKKwkJCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X0NTTV9KVU1QX1JFRzEwLCAweEU0KTsKKwkJCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X1JFU0VUX1JFRzAwLCAweDAxKTsKKwkJCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X0NMS19PRkYxX1JFRzAzLCAweEMzKTsKKwkJfQorCisJCWlmIChkaXJlY3Rpb24gPT0gU05EUlZfUENNX1NUUkVBTV9QTEFZQkFDSykgeworCQkgICAgcHJpbnRrKCJjaGVubGlfZXM4Mzg5ICVzICVkXG4iLCBfX0ZVTkNUSU9OX18sX19MSU5FX18pOworCQkJcmVnbWFwX3VwZGF0ZV9iaXRzKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfREFDX1JFRzQwLAorCQkJCQkJMHgwMywgMHgwMCk7CisJCX0gZWxzZSB7CisJCSAgICBwcmludGsoImNoZW5saV9lczgzODkgJXMgJWRcbiIsIF9fRlVOQ1RJT05fXyxfX0xJTkVfXyk7CisJCQlyZWdtYXBfdXBkYXRlX2JpdHMoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9BRENfSFBGMV9SRUcyNCwgMHgwZiwgMHgwYSk7CisJCQlyZWdtYXBfdXBkYXRlX2JpdHMoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9BRENfSFBGMl9SRUcyNSwgMHgwZiwgMHgwYSk7CisJCQlyZWdtYXBfdXBkYXRlX2JpdHMoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9BRENfUkVHMjAsCisJCQkJCQkweDAzLCAweDAwKTsKKwkJfQorCX0KKworCXJldHVybiAwOworfQorCisjZGVmaW5lIGVzODM4OV9SQVRFUyBTTkRSVl9QQ01fUkFURV84MDAwXzk2MDAwCisKKyNkZWZpbmUgZXM4Mzg5X0ZPUk1BVFMgKFNORFJWX1BDTV9GTVRCSVRfUzE2X0xFIHwgU05EUlZfUENNX0ZNVEJJVF9TMjBfM0xFIHxcCisJCVNORFJWX1BDTV9GTVRCSVRfUzI0X0xFIHwgU05EUlZfUENNX0ZNVEJJVF9TMjRfM0xFIHwgU05EUlZfUENNX0ZNVEJJVF9TMzJfTEUpCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX3NvY19kYWlfb3BzIGVzODM4OV9vcHMgPSB7CisJLmh3X3BhcmFtcyA9IGVzODM4OV9wY21faHdfcGFyYW1zLAorCS5zZXRfZm10ID0gZXM4Mzg5X3NldF9kYWlfZm10LAorCS5zZXRfc3lzY2xrID0gZXM4Mzg5X3NldF9kYWlfc3lzY2xrLAorCS5tdXRlX3N0cmVhbSA9IGVzODM4OV9tdXRlLAorfTsKKworc3RhdGljIHN0cnVjdCBzbmRfc29jX2RhaV9kcml2ZXIgZXM4Mzg5X2RhaSA9IHsKKwkubmFtZSA9ICJFUzgzODkgSGlGaSIsCisJLnBsYXliYWNrID0geworCQkuc3RyZWFtX25hbWUgPSAiUGxheWJhY2siLAorCQkuY2hhbm5lbHNfbWluID0gMSwKKwkJLmNoYW5uZWxzX21heCA9IDIsCisJCS5yYXRlcyA9IGVzODM4OV9SQVRFUywKKwkJLmZvcm1hdHMgPSBlczgzODlfRk9STUFUUywKKwl9LAorCS5jYXB0dXJlID0geworCQkuc3RyZWFtX25hbWUgPSAiQ2FwdHVyZSIsCisJCS5jaGFubmVsc19taW4gPSAxLAorCQkuY2hhbm5lbHNfbWF4ID0gMiwKKwkJLnJhdGVzID0gZXM4Mzg5X1JBVEVTLAorCQkuZm9ybWF0cyA9IGVzODM4OV9GT1JNQVRTLAorCX0sCisJLm9wcyA9ICZlczgzODlfb3BzLAorCS5zeW1tZXRyaWNfcmF0ZXMgPSAxLAorfTsKKworc3RhdGljIHZvaWQgZXM4Mzg5X2luaXQoc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb2RlYykKK3sKKwlzdHJ1Y3QgZXM4Mzg5X3ByaXZhdGUgKmVzODM4OSA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRhKGNvZGVjKTsKKworCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X0lTT19DVExfUkVHRjMsIDB4MDApOworCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X1JFU0VUX1JFRzAwLCAweDdFKTsKKwlyZWdtYXBfd3JpdGUoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9JU09fQ1RMX1JFR0YzLCAweDM4KTsKKwlyZWdtYXBfd3JpdGUoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9BRENfSFBGMV9SRUcyNCwgMHg2NCk7CisJcmVnbWFwX3dyaXRlKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfQURDX0hQRjJfUkVHMjUsIDB4MDYpOworCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X0RBQ19JTlZfUkVHNDUsIDB4MDMpOworCisJcmVnbWFwX3dyaXRlKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfVk1JRF9SRUc2MCwgMHgyQSk7CisJcmVnbWFwX3dyaXRlKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfQU5BX0NUTDFfUkVHNjEsIDB4QzkpOworCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X0FOQV9WU0VMX1JFRzYyLCAweDRGKTsKKwlyZWdtYXBfd3JpdGUoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9BTkFfQ1RMMl9SRUc2MywgMHgwNik7CisJcmVnbWFwX3dyaXRlKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfTE9XX1BPV0VSMV9SRUc2QiwgMHgwMCk7CisJcmVnbWFwX3dyaXRlKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfRE1JQ19FTl9SRUc2RCwgMHgyOCk7CisKKwlyZWdtYXBfd3JpdGUoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9QR0FfU1dfUkVHNkUsIDB4QUEpOworCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X01PRF9TVzFfUkVHNkYsIDB4NjYpOworCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X01PRF9TVzJfUkVHNzAsIDB4OTkpOworCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X0FEQ19NT0RFX1JFRzIzLCAoMHgwMCB8IEVTODM4OV9URE1fTU9ERSkpOworCisJaWYgKGVzODM4OS0+ZG1pYyA9PSB0cnVlKSB7CisJCXJlZ21hcF91cGRhdGVfYml0cyhlczgzODktPnJlZ21hcCwgRVM4Mzg5X0RNSUNfRU5fUkVHNkQsIDB4QzAsIDB4QzApOworCQlyZWdtYXBfdXBkYXRlX2JpdHMoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9BRENfTU9ERV9SRUcyMywgMHgwMywgMHgwMyk7CisJfSBlbHNlIHsKKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfRE1JQ19FTl9SRUc2RCwgMHhDMCwgMHgwMCk7CisJCXJlZ21hcF91cGRhdGVfYml0cyhlczgzODktPnJlZ21hcCwgRVM4Mzg5X0FEQ19NT0RFX1JFRzIzLCAweDAzLCAweDAwKTsKKwl9CisKKwlyZWdtYXBfd3JpdGUoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9NSUMxX0dBSU5fUkVHNzIsIDB4MTApOworCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X01JQzJfR0FJTl9SRUc3MywgMHgxMCk7CisJcmVnbWFwX3dyaXRlKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfQ1NNX0pVTVBfUkVHMTAsIDB4QzQpOworCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X01BU1RFUl9NT0RFX1JFRzAxLCAweDA4KTsKKwlyZWdtYXBfd3JpdGUoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9DU01fU1RBVEUxX1JFR0YxLCAweDAwKTsKKwlyZWdtYXBfd3JpdGUoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9TWVNURU1fUkVHMTIsIDB4MDEpOworCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X1NZU1RFTV9SRUcxMywgMHgwMSk7CisJcmVnbWFwX3dyaXRlKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfU1lTVEVNX1JFRzE0LCAweDAxKTsKKwlyZWdtYXBfd3JpdGUoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9TWVNURU1fUkVHMTUsIDB4MDEpOworCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X1NZU1RFTV9SRUcxNiwgMHgzNSk7CisJcmVnbWFwX3dyaXRlKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfU1lTVEVNX1JFRzE3LCAweDA5KTsKKwlyZWdtYXBfd3JpdGUoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9TWVNURU1fUkVHMTgsIDB4OTEpOworCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X1NZU1RFTV9SRUcxOSwgMHgyOCk7CisJcmVnbWFwX3dyaXRlKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfU1lTVEVNX1JFRzFBLCAweDAxKTsKKwlyZWdtYXBfd3JpdGUoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9TWVNURU1fUkVHMUIsIDB4MDEpOworCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X1NZU1RFTV9SRUcxQywgMHgxMSk7CisKKwlyZWdtYXBfd3JpdGUoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9DSElQX01JU0NfUkVHRjAsIDB4MTIpOworCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X01BU1RFUl9DTEtfUkVHMDIsIDB4MDEpOworCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X0NMS19ESVYxX1JFRzA0LCAweDAwKTsKKwlyZWdtYXBfd3JpdGUoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9DTEtfTVVMX1JFRzA1LCAweDEwKTsKKwlyZWdtYXBfd3JpdGUoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9DTEtfTVVYMV9SRUcwNiwgMHgwMCk7CisJcmVnbWFwX3dyaXRlKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfQ0xLX01VWDJfUkVHMDcsIDB4QzApOworCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X0NMS19DVEwxX1JFRzA4LCAweDAwKTsKKwlyZWdtYXBfd3JpdGUoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9DTEtfQ1RMMl9SRUcwOSwgMHhDMCk7CisJcmVnbWFwX3dyaXRlKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfQ0xLX0NUTDNfUkVHMEEsIDB4ODApOworCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X1NDTEtfRElWX1JFRzBCLCAweDA0KTsKKwlyZWdtYXBfd3JpdGUoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9MUkNLX0RJVjFfUkVHMEMsIDB4MDEpOworCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X0xSQ0tfRElWMl9SRUcwRCwgMHgwMCk7CisJcmVnbWFwX3dyaXRlKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfT1NDX0NMS19SRUcwRiwgMHgwMCk7CisJcmVnbWFwX3dyaXRlKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfQURDX1JFRzIxLCAweDFGKTsKKwlyZWdtYXBfd3JpdGUoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9BRENfUkVHMjIsIDB4N0YpOworCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X0FEQ19NVVRFX1JFRzJGLCAweEMwKTsKKwlyZWdtYXBfd3JpdGUoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9TWVNURU1fUkVHMzAsIDB4RjQpOworCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X0RBQ19SRUc0MSwgMHg3Rik7CisJcmVnbWFwX3dyaXRlKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfREFDX1JFRzQyLCAweDdGKTsKKwlyZWdtYXBfd3JpdGUoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9EQUNfUkVHNDMsIDB4MTApOworCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X0RBQ19SQU1QX1JFRzQ5LCAweDBGKTsKKwlyZWdtYXBfd3JpdGUoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9TWVNURU1fUkVHNEMsIDB4QzApOworCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X1JFU0VUX1JFRzAwLCAweDAwKTsKKwlyZWdtYXBfd3JpdGUoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9DTEtfT0ZGMV9SRUcwMywgMHhDMSk7CisJcmVnbWFwX3dyaXRlKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfUkVTRVRfUkVHMDAsIDB4MDEpOworCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X0RBQ19SRVNFVF9SRUc0RCwgMHgwMik7CisKKwlyZWdtYXBfdXBkYXRlX2JpdHMoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9QVERNX1NMT1RfUkVHMkEsCisJCQkJCUVTODM4OV9URE1fU0xPVCwgKGVzODM4OS0+YWRjX3Nsb3QgPDwgNCkpOworCXJlZ21hcF91cGRhdGVfYml0cyhlczgzODktPnJlZ21hcCwgRVM4Mzg5X0RBQ19SQU1QX1JFRzQ5LAorCQkJCQlFUzgzODlfVERNX1NMT1QsIChlczgzODktPmRhY19zbG90IDw8IDQpKTsKKworICAgIHJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X0FEQ19SRUcyMCwgMHg2MCk7CisJcmVnbWFwX3VwZGF0ZV9iaXRzKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfQURDX1JFRzIwLCAweDAzLCAweDAzKTsKKwlyZWdtYXBfdXBkYXRlX2JpdHMoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9EQUNfUkVHNDAsIDB4MDMsIDB4MDMpOworCisJcmVnbWFwX3dyaXRlKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfREFDX01JWF9SRUc0NCwgMHg0KTsKKwlyZWdtYXBfd3JpdGUoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9EQUNMX1ZPTF9SRUc0NiwgMHg5Nik7CisKKwkvL2VzODM4OV9zZXRfYmlhc19sZXZlbChjb2RlYywgU05EX1NPQ19CSUFTX1NUQU5EQlkpOworfQorCitzdGF0aWMgaW50IGVzODM4OV9zdXNwZW5kKHN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29kZWMpCit7CisJc3RydWN0IGVzODM4OV9wcml2YXRlICplczgzODkgPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjb2RlYyk7CisKKwllczgzODlfc2V0X2JpYXNfbGV2ZWwoY29kZWMsIFNORF9TT0NfQklBU19TVEFOREJZKTsKKwlyZWdjYWNoZV9jYWNoZV9vbmx5KGVzODM4OS0+cmVnbWFwLCB0cnVlKTsKKwlyZWdjYWNoZV9tYXJrX2RpcnR5KGVzODM4OS0+cmVnbWFwKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGVzODM4OV9yZXN1bWUoc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb2RlYykKK3sKKwlzdHJ1Y3QgZXM4Mzg5X3ByaXZhdGUgKmVzODM4OSA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRhKGNvZGVjKTsKKwl1bnNpZ25lZCBpbnQgcmVndjsKKworCXJlZ2NhY2hlX2NhY2hlX29ubHkoZXM4Mzg5LT5yZWdtYXAsIGZhbHNlKTsKKwlyZWdjYWNoZV9jYWNoZV9ieXBhc3MoZXM4Mzg5LT5yZWdtYXAsIHRydWUpOworCXJlZ21hcF9yZWFkKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfUkVTRVRfUkVHMDAsICZyZWd2KTsKKwlyZWdjYWNoZV9jYWNoZV9ieXBhc3MoZXM4Mzg5LT5yZWdtYXAsIGZhbHNlKTsKKworCWlmIChyZWd2ID09IDB4ZmYpCisJCWVzODM4OV9pbml0KGNvZGVjKTsKKwllbHNlCisJCWVzODM4OV9zZXRfYmlhc19sZXZlbChjb2RlYywgU05EX1NPQ19CSUFTX09OKTsKKworCXJlZ2NhY2hlX3N5bmMoZXM4Mzg5LT5yZWdtYXApOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgY2xrb3V0X2luaXRfcGluY3RybChzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisgICAgc3RydWN0IHBpbmN0cmwgKnBjdHJsOworICAgIHN0cnVjdCBwaW5jdHJsX3N0YXRlICpzdGF0ZTA7CisgICAgc3RydWN0IGNsayAqY2xrOworICAgIGludCByZXQ7CisgICAgc3RydWN0IGVzODM4OV9wcml2YXRlICplczgzODkgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKyAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gZGV2LT5vZl9ub2RlOworCisJZGV2X2luZm8oZGV2LCAiJXM6c3RhcnQhXG4iLCBfX2Z1bmNfXyk7CisKKyAgICBpZiAoZGV2ID09IE5VTEwpIHsKKyAgICAgICAgZGV2X2VycihkZXYsICIlczogZGV2IGlzIG51bGwscmV0dXJuXG4iLCBfX2Z1bmNfXyk7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKwlkZXZfaW5mbyhkZXYsICIlczogZ2V0IGNsayBwaW5jdHJsXG4iLCBfX2Z1bmNfXyk7CisKKyAgICBwY3RybCA9IGRldm1fcGluY3RybF9nZXQoZGV2KTsKKyAgICBpZiAoSVNfRVJSKHBjdHJsKSkgeworICAgICAgICBkZXZfd2FybihkZXYsICJGYWlsZWQgdG8gZ2V0IGNsa190ZXN0IHBpbnNcbiIpOworICAgICAgICByZXR1cm4gUFRSX0VSUihwY3RybCk7CisgICAgfQorCisgICAgc3RhdGUwID0gcGluY3RybF9sb29rdXBfc3RhdGUocGN0cmwsICJjbGtfb3V0MiIpOworICAgIGlmIChJU19FUlIoc3RhdGUwKSkgeworICAgICAgICBkZXZtX3BpbmN0cmxfcHV0KHBjdHJsKTsKKyAgICAgICAgZGV2X2VycihkZXYsICJtaXNzaW5nIGNsa19vdXRcbiIpOworICAgICAgICByZXR1cm4gUFRSX0VSUihzdGF0ZTApOworICAgIH0KKwlkZXZfaW5mbyhkZXYsICIlczogc2VsZWN0IHBpbmN0cmxcbiIsIF9fZnVuY19fKTsKKworICAgIHJldCA9IHBpbmN0cmxfc2VsZWN0X3N0YXRlKHBjdHJsLCBzdGF0ZTApOworICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgIGRldl9lcnIoZGV2LCAic2V0dGluZyBjbGtfb3V0IGZhaWxlZFxuIik7CisgICAgICAgIGdvdG8gZXJyX3B1dF9waW5jdHJsOworICAgIH0KKwlkZXZfaW5mbyhkZXYsICIlczogZ2V0IGNsa1xuIiwgX19mdW5jX18pOworCisgICAgY2xrID0gb2ZfY2xrX2dldF9ieV9uYW1lKG5wLCAiY2xrX291dDIiKTsKKyAgICBpZiAoSVNfRVJSKGNsaykpIHsKKyAgICAgICAgZGV2X2VycihkZXYsICJDb3VsZCBub3QgZ2V0IGNsa19vdXRcbiIpOworICAgICAgICByZXQgPSBQVFJfRVJSKGNsayk7CisgICAgICAgIGdvdG8gZXJyX3B1dF9waW5jdHJsOworICAgIH0KKworCWRldl9pbmZvKGRldiwgIiVzOiBjbGsgcHJlcGFyZVxuIiwgX19mdW5jX18pOworICAgIHJldCA9IGNsa19wcmVwYXJlKGNsayk7CisgICAgaWYgKHJldCkgeworICAgICAgICBkZXZfZXJyKGRldiwgImZhaWxlZCB0byBjbGsgcHJlcGFyZVxuIik7CisgICAgICAgIGdvdG8gZXJyX3B1dF9jbGs7CisgICAgfQorCisgICAgaWYgKGVzODM4OSkgeworCQlkZXZfaW5mbyhkZXYsICIlczogc2V0IGRydmRhdGFcbiIsIF9fZnVuY19fKTsKKyAgICAgICAgZXM4Mzg5LT5wY3RybCA9IHBjdHJsOworICAgICAgICBlczgzODktPnN0YXRlMCA9IHN0YXRlMDsKKyAgICAgICAgZXM4Mzg5LT5tY2xrID0gY2xrOworICAgIH0KKwlkZXZfaW5mbyhkZXYsICIlczogaW5pdCBjbGtvdXQgZW5kIVxuIixfX2Z1bmNfXyk7CisgICAgcmV0dXJuIDA7CisKK2Vycl9wdXRfY2xrOgorICAgIGNsa19wdXQoY2xrKTsKK2Vycl9wdXRfcGluY3RybDoKKyAgICBkZXZtX3BpbmN0cmxfcHV0KHBjdHJsKTsKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IGVzODM4OV9wcm9iZShzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvZGVjKQoreworCWludCByZXQgPSAwOworCXN0cnVjdCBlczgzODlfcHJpdmF0ZSAqZXM4Mzg5ID0gc25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoY29kZWMpOworCisJcmV0ID0gZGV2aWNlX3Byb3BlcnR5X3JlYWRfdTgoY29kZWMtPmRldiwgImV2ZXJlc3QsbWNsay1zcmMiLCAmZXM4Mzg5LT5tY2xrX3NyYyk7CisJaWYgKHJldCAhPSAwKSB7CisJCWRldl9pbmZvKGNvZGVjLT5kZXYsICJtY2xrLXNyYyByZXR1cm4gJWQiLCByZXQpOworCQllczgzODktPm1jbGtfc3JjID0gRVM4Mzg5X01DTEtfU09VUkNFOworCX0KKworCWVzODM4OS0+bWNsa19zcmMgPSBFUzgzODlfTUNMS19QSU47CisKKwlyZXQgPSBkZXZpY2VfcHJvcGVydHlfcmVhZF91OChjb2RlYy0+ZGV2LCAiZXZlcmVzdCxhZGMtc2xvdCIsICZlczgzODktPmFkY19zbG90KTsKKwlpZiAocmV0ICE9IDApIHsKKwkJZGV2X2luZm8oY29kZWMtPmRldiwgImFkYy1zbG90IHJldHVybiAlZCIsIHJldCk7CisJCWVzODM4OS0+YWRjX3Nsb3QgPSAweDAwOworCX0KKworCXJldCA9IGRldmljZV9wcm9wZXJ0eV9yZWFkX3U4KGNvZGVjLT5kZXYsICJldmVyZXN0LGRhYy1zbG90IiwgJmVzODM4OS0+ZGFjX3Nsb3QpOworCWlmIChyZXQgIT0gMCkgeworCQlkZXZfaW5mbyhjb2RlYy0+ZGV2LCAiZGFjLXNsb3QgcmV0dXJuICVkIiwgcmV0KTsKKwkJZXM4Mzg5LT5kYWNfc2xvdCA9IDB4MDA7CisJfQorCisJZXM4Mzg5LT5kbWljID0gZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbChjb2RlYy0+ZGV2LAorCQkJImV2ZXJlc3QsZG1pYy1lbmFibGVkIik7CisJZGV2X2luZm8oY29kZWMtPmRldiwgImRtaWMtZW5hYmxlZCAleCIsIGVzODM4OS0+ZG1pYyk7CisKKwllczgzODlfaW5pdChjb2RlYyk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZXM4Mzg5X3JlbW92ZShzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvZGVjKQoreworCXN0cnVjdCBlczgzODlfcHJpdmF0ZSAqZXM4Mzg5ID0gc25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoY29kZWMpOworCisJcmVnbWFwX3dyaXRlKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfTUFTVEVSX01PREVfUkVHMDEsIDB4MjgpOworCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X0hQU1dfUkVHNjksIDB4MDApOworCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X1ZNSURfUkVHNjAsIDB4MDApOworCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X1JFU0VUX1JFRzAwLCAweDAwKTsKKwlyZWdtYXBfd3JpdGUoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9DU01fSlVNUF9SRUcxMCwgMHhDQyk7CisJdXNsZWVwX3JhbmdlKDUwMDAwMCwgNTUwMDAwKTsvLzUwME1TCisJcmVnbWFwX3dyaXRlKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfQ1NNX0pVTVBfUkVHMTAsIDB4MDApOworCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X0FOQV9DVEwxX1JFRzYxLCAweDA4KTsKKwlyZWdtYXBfd3JpdGUoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9JU09fQ1RMX1JFR0YzLCAweEMxKTsKKwlyZWdtYXBfd3JpdGUoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9QVUxMX0RPV05fUkVHRjIsIDB4MDApOworCit9CisKK2V4dGVybiBpbnQgengyOV9pMnNfY29uZmlnX3NsZWVwX3Bpbih2b2lkKTsKK2V4dGVybiBpbnQgengyOV9pMnNfY29uZmlnX2RlZmF1bHRfcGluKHZvaWQpOworCitzdGF0aWMgaW50IGNvbXBvbmVudF9vcGVuKHN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50LCAKKyAgICBzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSkgCit7IAorICAgIGludCByZXQgPSAwOyAKKyAgICBzdHJ1Y3QgZXM4Mzg5X3ByaXZhdGUgKmluZm8gPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjb21wb25lbnQpOyAKKyAgICBwcmludGsoIkVudGVyIGludG8gJXMoKVxuIiwgX19mdW5jX18pOyAKKworICAgIGlmKGluZm8tPm1jbGsgIT0gTlVMTCl7IAorICAgICAgICByZXQgPSBjbGtfZW5hYmxlKGluZm8tPm1jbGspOyAKKyAgICAgICAgaWYgKHJldCkgeyAKKyAgICAgICAgICAgIHByX2VycigiZmFpbGVkIHRvIGVuYWJsZSBtY2xrIik7IAorICAgICAgICB9IAorICAgIH0gCisgICAgZXM4Mzg5X2luaXQoY29tcG9uZW50KTsKKyAgICByZXQgPSB6eDI5X2kyc19jb25maWdfZGVmYXVsdF9waW4oKTsgCisgICAgaWYocmV0IDwgMCkgeyAKKyAgICAgICAgcHJfZXJyKCIlcyBzZWxlY3Qgc3RhdGUgZmFpbHVyZSAlZCAhISBcbiIsIF9fZnVuY19fLCByZXQpOyAKKyAgICB9IAorICAgIHByX2luZm8oIiVzOmNsayBlbiBlbmQhXG4iLF9fZnVuY19fKTsgCisgICAgcmV0dXJuIHJldDsgCit9IAorCitzdGF0aWMgaW50IGNvbXBvbmVudF9jbG9zZShzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVudCwgCisgICAgc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0pIAoreyAKKyAgICBpbnQgcmV0ID0gMDsgCisgICAgc3RydWN0IGVzODM4OV9wcml2YXRlICppbmZvID0gc25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoY29tcG9uZW50KTsgCisgICAgcHJpbnRrKCJFbnRlciBpbnRvICVzKClcbiIsIF9fZnVuY19fKTsgCisKKyAgICBpZihpbmZvLT5tY2xrICE9IE5VTEwpeyAKKyAgICAgICAgY2xrX2Rpc2FibGUoaW5mby0+bWNsayk7IAorICAgIH0gCisgICAgcHJfaW5mbygiJXM6Y2xrIGRpcyBlbmQhXG4iLF9fZnVuY19fKTsgCisgICAgcmV0ID0gengyOV9pMnNfY29uZmlnX3NsZWVwX3BpbigpOyAKKyAgICBpZihyZXQgPCAwKSB7IAorICAgICAgICBwcl9lcnIoIiVzIHNlbGVjdCBzdGF0ZSBmYWlsdXJlICVkICEhIFxuIiwgX19mdW5jX18sIHJldCk7IAorICAgIH0KKyAgICByZXR1cm4gcmV0OyAKK30KKworCitzdGF0aWMgc3RydWN0IHNuZF9zb2NfY29tcG9uZW50X2RyaXZlciBzb2NfY29kZWNfZGV2X2VzODM4OSA9IHsKKwkucHJvYmUgPSBlczgzODlfcHJvYmUsCisJLnJlbW92ZSA9IGVzODM4OV9yZW1vdmUsCisJLnN1c3BlbmQgPSBlczgzODlfc3VzcGVuZCwKKwkucmVzdW1lID0gZXM4Mzg5X3Jlc3VtZSwKKwkuc2V0X2JpYXNfbGV2ZWwgPSBlczgzODlfc2V0X2JpYXNfbGV2ZWwsCisKKwkuY29udHJvbHMgPSBlczgzODlfc25kX2NvbnRyb2xzLAorCS5udW1fY29udHJvbHMgPSBBUlJBWV9TSVpFKGVzODM4OV9zbmRfY29udHJvbHMpLAorCS5kYXBtX3dpZGdldHMgPSBlczgzODlfZGFwbV93aWRnZXRzLAorCS5udW1fZGFwbV93aWRnZXRzID0gQVJSQVlfU0laRShlczgzODlfZGFwbV93aWRnZXRzKSwKKwkuZGFwbV9yb3V0ZXMgPSBlczgzODlfZGFwbV9yb3V0ZXMsCisJLm51bV9kYXBtX3JvdXRlcyA9IEFSUkFZX1NJWkUoZXM4Mzg5X2RhcG1fcm91dGVzKSwKKwkuaWRsZV9iaWFzX29uID0gMSwKKwkudXNlX3BtZG93bl90aW1lID0gMSwKKyAgICAub3BlbiA9IGNvbXBvbmVudF9vcGVuLAorICAgIC5jbG9zZSA9IGNvbXBvbmVudF9jbG9zZSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyBlczgzODlfcmVnbWFwID0geworCS5yZWdfYml0cyA9IDgsCisJLnZhbF9iaXRzID0gOCwKKworCS5tYXhfcmVnaXN0ZXIgPSBFUzgzODlfTUFYX1JFR0lTVEVSLAorCisJLnZvbGF0aWxlX3JlZyA9IGVzODM4OV92b2xhdGlsZV9yZWdpc3RlciwKKwkuY2FjaGVfdHlwZSA9IFJFR0NBQ0hFX1JCVFJFRSwKK307CisKKyNpZmRlZiBDT05GSUdfT0YKK3N0YXRpYyBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGVzODM4OV9pZl9kdF9pZHNbXSA9IHsKKwl7IC5jb21wYXRpYmxlID0gImV2ZXJlc3QsZXM4Mzg5IiwgfSwKKwl7IH0KK307CitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBlczgzODlfaWZfZHRfaWRzKTsKKyNlbmRpZgorCitzdGF0aWMgdm9pZCBlczgzODlfaTJjX3NodXRkb3duKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpCit7CisgICAgI2lmIDAKKwlzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVudDsKKwlzdHJ1Y3QgZXM4Mzg5X3ByaXZhdGUgKmVzODM4OTsKKworCWVzODM4OSA9IGkyY19nZXRfY2xpZW50ZGF0YShpMmMpOworCWNvbXBvbmVudCA9IGVzODM4OS0+Y29tcG9uZW50OworCWRldl9pbmZvKGNvbXBvbmVudC0+ZGV2LCAiRW50ZXIgaW50byAlc1xuIiwgX19mdW5jX18pOworCisJcmVnbWFwX3dyaXRlKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfTUFTVEVSX01PREVfUkVHMDEsIDB4MjgpOworCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X0hQU1dfUkVHNjksIDB4MDApOworCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X1ZNSURfUkVHNjAsIDB4MDApOworCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X1JFU0VUX1JFRzAwLCAweDAwKTsKKwlyZWdtYXBfd3JpdGUoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9DU01fSlVNUF9SRUcxMCwgMHhDQyk7CisJdXNsZWVwX3JhbmdlKDUwMDAwMCwgNTUwMDAwKTsvLzUwME1TCisJcmVnbWFwX3dyaXRlKGVzODM4OS0+cmVnbWFwLCBFUzgzODlfQ1NNX0pVTVBfUkVHMTAsIDB4MDApOworCXJlZ21hcF93cml0ZShlczgzODktPnJlZ21hcCwgRVM4Mzg5X0FOQV9DVEwxX1JFRzYxLCAweDA4KTsKKwlyZWdtYXBfd3JpdGUoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9JU09fQ1RMX1JFR0YzLCAweEMxKTsKKwlyZWdtYXBfd3JpdGUoZXM4Mzg5LT5yZWdtYXAsIEVTODM4OV9QVUxMX0RPV05fUkVHRjIsIDB4MDApOworCSNlbmRpZgorfQorCitzdGF0aWMgaW50IGVzODM4OV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmkyY19jbGllbnQsY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKmlkKQoreworCXN0cnVjdCBlczgzODlfcHJpdmF0ZSAqZXM4Mzg5OworCWludCByZXQgPSAtMTsKKwkvL3Vuc2lnbmVkIGludCB2YWw7CisKKwlkZXZfaW5mbygmaTJjX2NsaWVudC0+ZGV2LCAiY2hlbmxpICVzICVkXG4iLCBfX0ZVTkNUSU9OX18sX19MSU5FX18pOworCisJZXM4Mzg5ID0gZGV2bV9remFsbG9jKCZpMmNfY2xpZW50LT5kZXYsCisJCQlzaXplb2YoKmVzODM4OSksIEdGUF9LRVJORUwpOworCWlmIChlczgzODkgPT0gTlVMTCkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlpMmNfc2V0X2NsaWVudGRhdGEoaTJjX2NsaWVudCwgZXM4Mzg5KTsKKwllczgzODktPnJlZ21hcCA9IGRldm1fcmVnbWFwX2luaXRfaTJjKGkyY19jbGllbnQsICZlczgzODlfcmVnbWFwKTsKKwlpZiAoSVNfRVJSKGVzODM4OS0+cmVnbWFwKSkgeworCQlyZXQgPSBQVFJfRVJSKGVzODM4OS0+cmVnbWFwKTsKKwkJZGV2X2VycigmaTJjX2NsaWVudC0+ZGV2LCAicmVnbWFwX2luaXQoKSBmYWlsZWQ6ICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworICAgIHJldCA9IGNsa291dF9pbml0X3BpbmN0cmwoJmkyY19jbGllbnQtPmRldik7CisgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgZGV2X2VycigmaTJjX2NsaWVudC0+ZGV2LCAiRmFpbGVkIHRvIGluaXQgY2xrb3V0IHBpbmN0cmxcbiIpOworICAgIH0KKworCXJldCA9ICBkZXZtX3NuZF9zb2NfcmVnaXN0ZXJfY29tcG9uZW50KCZpMmNfY2xpZW50LT5kZXYsCisJCQkmc29jX2NvZGVjX2Rldl9lczgzODksCisJCQkmZXM4Mzg5X2RhaSwKKwkJCTEpOworCWlmIChyZXQgPCAwKSB7CisJCWtmcmVlKGVzODM4OSk7CisJCXJldHVybiByZXQ7CisJfQorCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIGVzODM4OV9pMmNfaWRbXSA9IHsKKwl7ImVzODM4OSJ9LAorCXsgfQorfTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUoaTJjLCBlczgzODlfaTJjX2lkKTsKKworc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIGVzODM4OV9pMmNfZHJpdmVyID0geworCS5kcml2ZXIgPSB7CisJCS5uYW1lCT0gImVzODM4OSIsCisJCS5vd25lcgk9IFRISVNfTU9EVUxFLAorCQkub2ZfbWF0Y2hfdGFibGUgPSBvZl9tYXRjaF9wdHIoZXM4Mzg5X2lmX2R0X2lkcyksCisJfSwKKwkuc2h1dGRvd24gPSBlczgzODlfaTJjX3NodXRkb3duLAorCS5wcm9iZSA9IGVzODM4OV9pMmNfcHJvYmUsCisJLmlkX3RhYmxlID0gZXM4Mzg5X2kyY19pZCwKK307Cittb2R1bGVfaTJjX2RyaXZlcihlczgzODlfaTJjX2RyaXZlcik7CisKK01PRFVMRV9ERVNDUklQVElPTigiQVNvQyBlczgzODkgZHJpdmVyIik7CitNT0RVTEVfQVVUSE9SKCJNaWNoYWVsIFpoYW5nIDx6aGFuZ3lpQGV2ZXJlc3Qtc2VtaS5jb20+Iik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CisKKwpkaWZmIC0tZ2l0IGEvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL2xpbnV4LTUuMTAvc291bmQvc29jL2NvZGVjcy9lczgzODkuaCBiL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS9saW51eC01LjEwL3NvdW5kL3NvYy9jb2RlY3MvZXM4Mzg5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTVhNmU5OAotLS0gL2Rldi9udWxsCisrKyBiL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS9saW51eC01LjEwL3NvdW5kL3NvYy9jb2RlY3MvZXM4Mzg5LmgKQEAgLTAsMCArMSwxMzkgQEAKKy8qCisqIEVTODM4OS5oICAtLSAgRVM4Mzg5IEFMU0EgU29DIEF1ZGlvIENvZGVjCisqCisqIEF1dGhvcnM6CisqCisqIEJhc2VkIG9uIEVTODM3NC5oIGJ5IERhdmlkIFlhbmcKKyoKKyogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisqLworCisjaWZuZGVmIF9FUzgzODlfSAorI2RlZmluZSBfRVM4Mzg5X0gKKworLyoKKyoJRVM4Mzg5X1JFR0lTVEVSIE5BTUVfUkVHX1JFR0lTVEVSIEFERFJFU1MKKyovCisjZGVmaW5lIEVTODM4OV9SRVNFVF9SRUcwMAkJCTB4MDAgIC8qcmVzZXQgZGlnaXRhbCxjc20sY2xvY2sgbWFuYWdlciBldGMuKi8KKworLyoKKyogQ2xvY2sgU2NoZW1lIFJlZ2lzdGVyIGRlZmluaXRpb24KKyovCisjZGVmaW5lIEVTODM4OV9NQVNURVJfTU9ERV9SRUcwMQkJMHgwMQorI2RlZmluZSBFUzgzODlfTUFTVEVSX0NMS19SRUcwMgkJMHgwMgorI2RlZmluZSBFUzgzODlfQ0xLX09GRjFfUkVHMDMJCQkweDAzCisjZGVmaW5lIEVTODM4OV9DTEtfRElWMV9SRUcwNAkJCTB4MDQKKyNkZWZpbmUgRVM4Mzg5X0NMS19NVUxfUkVHMDUJCQkweDA1CisjZGVmaW5lIEVTODM4OV9DTEtfTVVYMV9SRUcwNgkJCTB4MDYKKyNkZWZpbmUgRVM4Mzg5X0NMS19NVVgyX1JFRzA3CQkJMHgwNworI2RlZmluZSBFUzgzODlfQ0xLX0NUTDFfUkVHMDgJCQkweDA4CisjZGVmaW5lIEVTODM4OV9DTEtfQ1RMMl9SRUcwOQkJCTB4MDkKKyNkZWZpbmUgRVM4Mzg5X0NMS19DVEwzX1JFRzBBCQkJMHgwQQorI2RlZmluZSBFUzgzODlfU0NMS19ESVZfUkVHMEIJCQkweDBCCisjZGVmaW5lIEVTODM4OV9MUkNLX0RJVjFfUkVHMEMJCQkweDBDCisjZGVmaW5lIEVTODM4OV9MUkNLX0RJVjJfUkVHMEQJCQkweDBECisjZGVmaW5lIEVTODM4OV9DTEtfT0ZGMl9SRUcwRQkJCTB4MEUKKyNkZWZpbmUgRVM4Mzg5X09TQ19DTEtfUkVHMEYJCQkweDBGCisjZGVmaW5lIEVTODM4OV9DU01fSlVNUF9SRUcxMAkJCTB4MTAKKyNkZWZpbmUgRVM4Mzg5X0NMS19ESVYyX1JFRzExCQkJMHgxMQorI2RlZmluZSBFUzgzODlfU1lTVEVNX1JFRzEyCQkJMHgxMgorI2RlZmluZSBFUzgzODlfU1lTVEVNX1JFRzEzCQkJMHgxMworI2RlZmluZSBFUzgzODlfU1lTVEVNX1JFRzE0CQkJMHgxNAorI2RlZmluZSBFUzgzODlfU1lTVEVNX1JFRzE1CQkJMHgxNQorI2RlZmluZSBFUzgzODlfU1lTVEVNX1JFRzE2CQkJMHgxNgorI2RlZmluZSBFUzgzODlfU1lTVEVNX1JFRzE3CQkJMHgxNworI2RlZmluZSBFUzgzODlfU1lTVEVNX1JFRzE4CQkJMHgxOAorI2RlZmluZSBFUzgzODlfU1lTVEVNX1JFRzE5CQkJMHgxOQorI2RlZmluZSBFUzgzODlfU1lTVEVNX1JFRzFBCQkJMHgxQQorI2RlZmluZSBFUzgzODlfU1lTVEVNX1JFRzFCCQkJMHgxQgorI2RlZmluZSBFUzgzODlfU1lTVEVNX1JFRzFDCQkJMHgxQworI2RlZmluZSBFUzgzODlfQURDX1JFRzIwCQkJMHgyMAorI2RlZmluZSBFUzgzODlfQURDX1JFRzIxCQkJMHgyMQorI2RlZmluZSBFUzgzODlfQURDX1JFRzIyCQkJMHgyMgorI2RlZmluZSBFUzgzODlfQURDX01PREVfUkVHMjMJCQkweDIzCisjZGVmaW5lIEVTODM4OV9BRENfSFBGMV9SRUcyNAkJCTB4MjQKKyNkZWZpbmUgRVM4Mzg5X0FEQ19IUEYyX1JFRzI1CQkJMHgyNQorI2RlZmluZSBFUzgzODlfT1NSX1ZPTF9SRUcyNgkJCTB4MjYKKyNkZWZpbmUgRVM4Mzg5X0FEQ0xfVk9MX1JFRzI3CQkJMHgyNworI2RlZmluZSBFUzgzODlfQURDUl9WT0xfUkVHMjgJCQkweDI4CisjZGVmaW5lIEVTODM4OV9BTENfQ1RMX1JFRzI5CQkJMHgyOQorI2RlZmluZSBFUzgzODlfUFRETV9TTE9UX1JFRzJBCQkJMHgyQQorI2RlZmluZSBFUzgzODlfQUxDX09OX1JFRzJCCQkJMHgyQgorI2RlZmluZSBFUzgzODlfQUxDX1RBUkdFVF9SRUcyQwkJMHgyQworI2RlZmluZSBFUzgzODlfQUxDX0dBSU5fUkVHMkQJCQkweDJECisjZGVmaW5lIEVTODM4OV9TWVNURU1fUkVHMkUJCQkweDJFCisjZGVmaW5lIEVTODM4OV9BRENfTVVURV9SRUcyRgkJCTB4MkYKKyNkZWZpbmUgRVM4Mzg5X1NZU1RFTV9SRUczMAkJCTB4MzAKKyNkZWZpbmUgRVM4Mzg5X0FEQ19SRVNFVF9SRUczMQkJCTB4MzEKKyNkZWZpbmUgRVM4Mzg5X0RBQ19SRUc0MAkJCTB4NDAKKyNkZWZpbmUgRVM4Mzg5X0RBQ19SRUc0MQkJCTB4NDEKKyNkZWZpbmUgRVM4Mzg5X0RBQ19SRUc0MgkJCTB4NDIKKyNkZWZpbmUgRVM4Mzg5X0RBQ19SRUc0MwkJCTB4NDMKKyNkZWZpbmUgRVM4Mzg5X0RBQ19NSVhfUkVHNDQJCQkweDQ0CisjZGVmaW5lIEVTODM4OV9EQUNfSU5WX1JFRzQ1CQkJMHg0NQorI2RlZmluZSBFUzgzODlfREFDTF9WT0xfUkVHNDYJCQkweDQ2CisjZGVmaW5lIEVTODM4OV9EQUNSX1ZPTF9SRUc0NwkJCTB4NDcKKyNkZWZpbmUgRVM4Mzg5X01JWF9WT0xfUkVHNDgJCQkweDQ4CisjZGVmaW5lIEVTODM4OV9EQUNfUkFNUF9SRUc0OQkJCTB4NDkKKyNkZWZpbmUgRVM4Mzg5X1NZU1RFTV9SRUc0QwkJCTB4NEMKKyNkZWZpbmUgRVM4Mzg5X0RBQ19SRVNFVF9SRUc0RAkJCTB4NEQKKyNkZWZpbmUgRVM4Mzg5X1ZNSURfUkVHNjAJCQkweDYwCisjZGVmaW5lIEVTODM4OV9BTkFfQ1RMMV9SRUc2MQkJCTB4NjEKKyNkZWZpbmUgRVM4Mzg5X0FOQV9WU0VMX1JFRzYyCQkJMHg2MgorI2RlZmluZSBFUzgzODlfQU5BX0NUTDJfUkVHNjMJCQkweDYzCisjZGVmaW5lIEVTODM4OV9BRENfRU5fUkVHNjQJCQkweDY0CisjZGVmaW5lIEVTODM4OV9IUFNXX1JFRzY5CQkJMHg2OQorI2RlZmluZSBFUzgzODlfTE9XX1BPV0VSMV9SRUc2QgkJMHg2QgorI2RlZmluZSBFUzgzODlfTE9XX1BPV0VSMl9SRUc2QwkJMHg2QworI2RlZmluZSBFUzgzODlfRE1JQ19FTl9SRUc2RAkJCTB4NkQKKyNkZWZpbmUgRVM4Mzg5X1BHQV9TV19SRUc2RQkJCTB4NkUKKyNkZWZpbmUgRVM4Mzg5X01PRF9TVzFfUkVHNkYJCQkweDZGCisjZGVmaW5lIEVTODM4OV9NT0RfU1cyX1JFRzcwCQkJMHg3MAorI2RlZmluZSBFUzgzODlfTU9EX1NXM19SRUc3MQkJCTB4NzEKKyNkZWZpbmUgRVM4Mzg5X01JQzFfR0FJTl9SRUc3MgkJCTB4NzIKKyNkZWZpbmUgRVM4Mzg5X01JQzJfR0FJTl9SRUc3MwkJCTB4NzMKKworI2RlZmluZSBFUzgzODlfQ0hJUF9NSVNDX1JFR0YwCQkJMHhGMAorI2RlZmluZSBFUzgzODlfQ1NNX1NUQVRFMV9SRUdGMQkJMHhGMQorI2RlZmluZSBFUzgzODlfUFVMTF9ET1dOX1JFR0YyCQkJMHhGMgorI2RlZmluZSBFUzgzODlfSVNPX0NUTF9SRUdGMwkJCTB4RjMKKyNkZWZpbmUgRVM4Mzg5X0NTTV9TVEFURTJfUkVHRjQJCTB4RjQKKworI2RlZmluZSBFUzgzODlfQ0hJUF9JRDBfUkVHRkQJCQkweEZECisjZGVmaW5lIEVTODM4OV9DSElQX0lEMV9SRUdGRQkJCTB4RkUKKworI2RlZmluZSBFUzgzODlfTUFYX1JFR0lTVEVSCQkJMHhGRgorCisjZGVmaW5lIEVTODM4OV9NQVNURVJfTU9ERV9FTgkoMSA8PCAwKQorCisjZGVmaW5lIEVTODM4OV9URE1fT0ZGICAgICAoMCA8PCAwKQorI2RlZmluZSBFUzgzODlfU1RETV9PTiAgICAgKDEgPDwgNykKKyNkZWZpbmUgRVM4Mzg5X1BURE1fT04gICAgICgxIDw8IDYpCisKKyNkZWZpbmUgRVM4Mzg5X1RETV9NT0RFICAgICBFUzgzODlfVERNX09GRgorI2RlZmluZSBFUzgzODlfVERNX1NMT1QgICAgICgweDcwIDw8IDApCisKKyNkZWZpbmUgRVM4Mzg5X01DTEtfU09VUkNFICAgICAgKDEgPDwgNikKKyNkZWZpbmUgRVM4Mzg5X01DTEtfUElOICAgICAgKDEgPDwgNikKKyNkZWZpbmUgRVM4Mzg5X1NDTEtfUElOICAgICAgKDAgPDwgNikKKworLyogRVM4Mzg5X0ZNVCAqLworI2RlZmluZSBFUzgzODlfUzI0X0xFCSgwIDw8IDUpCisjZGVmaW5lIEVTODM4OV9TMjBfM19MRQkoMSA8PCA1KQorI2RlZmluZSBFUzgzODlfUzE4X0xFCSgyIDw8IDUpCisjZGVmaW5lIEVTODM4OV9TMTZfTEUJKDMgPDwgNSkKKyNkZWZpbmUgRVM4Mzg5X1MzMl9MRQkoNCA8PCA1KQorI2RlZmluZSBFUzgzODlfREFUQV9MRU5fTUFTSwkoNyA8PCA1KQorCisjZGVmaW5lIEVTODM4OV9EQUlGTVRfTUFTSwkoNyA8PCAyKQorI2RlZmluZSBFUzgzODlfREFJRk1UX0kyUwkwCisjZGVmaW5lIEVTODM4OV9EQUlGTVRfTEVGVF9KCSgxIDw8IDIpCisjZGVmaW5lIEVTODM4OV9EQUlGTVRfRFNQX0EJKDEgPDwgMykKKyNkZWZpbmUgRVM4Mzg5X0RBSUZNVF9EU1BfQgkoMyA8PCAzKQorCisjZGVmaW5lIEVTODM4OV9TVEFURV9PTiAgICAgICAgICgxMyA8PCAwKQorI2RlZmluZSBFUzgzODlfU1RBVEVfU1RBTkRCWSAgICAoNyA8PCAwKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS9saW51eC01LjEwL3NvdW5kL3NvYy9zYW5lY2hpcHMvS2NvbmZpZyBiL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS9saW51eC01LjEwL3NvdW5kL3NvYy9zYW5lY2hpcHMvS2NvbmZpZwppbmRleCA3NjRhNzIxLi5jOTAxZmY3IDEwMDc1NQotLS0gYS9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvbGludXgtNS4xMC9zb3VuZC9zb2Mvc2FuZWNoaXBzL0tjb25maWcKKysrIGIvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL2xpbnV4LTUuMTAvc291bmQvc29jL3NhbmVjaGlwcy9LY29uZmlnCkBAIC01MSw3ICs1MSwxMSBAQAogY29uZmlnIFNORF9TT0NfWlgyOV9FUzgzMTEKIAl0cmlzdGF0ZSAiU29DIEkyUyBBdWRpbyBzdXBwb3J0IGZvciBaWDI5IC0gRVM4MzExIgogCXNlbGVjdCBTTkRfU09DX0VTODMxMQkKLQkKKworY29uZmlnIFNORF9TT0NfWlgyOV9FUzgzODkKKwl0cmlzdGF0ZSAiU29DIEkyUyBBdWRpbyBzdXBwb3J0IGZvciBaWDI5IC0gRVM4Mzg5IgorCXNlbGVjdCBTTkRfU09DX0VTODM4OSBpZiBJMkMKKwogY29uZmlnIFNORF9TT0NfWlhfVk9JQ0UKIAl0cmlzdGF0ZSAiU29DIDIvM0cgVm9pY2Ugc3VwcG9ydCIJCQogY29uZmlnIFNORF9TT0NfWlgyOTc1MjBWMwpkaWZmIC0tZ2l0IGEvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL2xpbnV4LTUuMTAvc291bmQvc29jL3NhbmVjaGlwcy9NYWtlZmlsZSBiL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS9saW51eC01LjEwL3NvdW5kL3NvYy9zYW5lY2hpcHMvTWFrZWZpbGUKaW5kZXggMjkyNGUwNi4uYjA1MWJmNCAxMDA3NTUKLS0tIGEvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL2xpbnV4LTUuMTAvc291bmQvc29jL3NhbmVjaGlwcy9NYWtlZmlsZQorKysgYi9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvbGludXgtNS4xMC9zb3VuZC9zb2Mvc2FuZWNoaXBzL01ha2VmaWxlCkBAIC0yNSw0ICsyNSw1IEBACiBzbmQtc29jLXp4MjktbWF4OTg2Ny1vYmpzIDo9IHp4MjlfbWF4OTg2Ny5vCiBvYmotJChDT05GSUdfU05EX1NPQ19aWDI5X01BWDk4NjcpICs9IHNuZC1zb2MtengyOS1tYXg5ODY3Lm8KIHNuZC1zb2MtengyOS1lczgzeHgtb2JqcyA6PSB6eDI5X2VzODN4eC5vCi1vYmotJChDT05GSUdfU05EX1NPQ19aWDI5X0VTODMxMSkgKz0gc25kLXNvYy16eDI5LWVzODN4eC5vClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorb2JqLSQoQ09ORklHX1NORF9TT0NfWlgyOV9FUzgzMTEpICs9IHNuZC1zb2MtengyOS1lczgzeHgubworb2JqLSQoQ09ORklHX1NORF9TT0NfWlgyOV9FUzgzODkpICs9IHNuZC1zb2MtengyOS1lczgzeHgubwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS9saW51eC01LjEwL3NvdW5kL3NvYy9zYW5lY2hpcHMvengyOV9lczgzeHguYyBiL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS9saW51eC01LjEwL3NvdW5kL3NvYy9zYW5lY2hpcHMvengyOV9lczgzeHguYwppbmRleCAwYWFmMjNmLi5kN2I3YmQ1IDEwMDc1NQotLS0gYS9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvbGludXgtNS4xMC9zb3VuZC9zb2Mvc2FuZWNoaXBzL3p4MjlfZXM4M3h4LmMKKysrIGIvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL2xpbnV4LTUuMTAvc291bmQvc29jL3NhbmVjaGlwcy96eDI5X2VzODN4eC5jCkBAIC0xMCw5ICsxMCwxMiBAQAogICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCiAgKi8KICNpZmRlZiBDT05GSUdfU05EX1NPQ19FUzgzMTEKLQogI2luY2x1ZGUgIi4uL2NvZGVjcy9lczgzMTEuaCIKICNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NORF9TT0NfRVM4Mzg5CisjaW5jbHVkZSAiLi4vY29kZWNzL2VzODM4OS5oIgorI2VuZGlmCiAjaW5jbHVkZSA8c291bmQvcGNtX3BhcmFtcy5oPgogI2luY2x1ZGUgPHNvdW5kL3NvYy5oPgogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgpAQCAtMTAxLDcgKzEwNCw2IEBACiAgc3RhdGljIGludCBnZXRfcGF0aF9zdGF1dHNfc3dpdGNoKHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLAogCQkJCSBzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlICp1Y29udHJvbCk7CiAKLQogLyogU3RhcnRlZCBieSBBSUNvZGVyLCBwaWQ6aTNmZDk4NTQ2ZXJhZTI4MTQ1NTUwYmE4MjA5NTUzNWZmNDg5NTY1MiAqLwogc3RhdGljIGludCB6eDI5c3RhcnR1cChzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSkKIHsKQEAgLTI5Myw3ICsyOTUsMTEgQEAKICAgICAgICAgIHByaW50X2F1ZGlvKCJBbHNhOiBhcCBkYWkgc25kX3NvY19kYWlfc2V0X2ZtdCBmYWlsLHJldD0lZCFcbiIscmV0KTsKICAgICAgICAgIHJldHVybiByZXQ7CiAgICAgIH0KLSAgICAgcmV0ID0gc25kX3NvY19kYWlfc2V0X3N5c2Nsayhjb2RlY19kYWksIEVTODMxMV9NQ0xLX1BJTixwYXJhbXNfcmF0ZShwYXJhbXMpKjI1NiwgU05EX1NPQ19DTE9DS19JTik7CisjaWZkZWYgQ09ORklHX1NORF9TT0NfWlgyOV9FUzgzODkKKyAgICAgcmV0ID0gc25kX3NvY19kYWlfc2V0X3N5c2Nsayhjb2RlY19kYWksIEVTODM4OV9NQ0xLX1BJTiwgcGFyYW1zX3JhdGUocGFyYW1zKSoyNTYsIFNORF9TT0NfQ0xPQ0tfSU4pOworI2Vsc2UKKyAgICAgcmV0ID0gc25kX3NvY19kYWlfc2V0X3N5c2Nsayhjb2RlY19kYWksIEVTODMxMV9NQ0xLX1BJTiwgcGFyYW1zX3JhdGUocGFyYW1zKSoyNTYsIFNORF9TT0NfQ0xPQ0tfSU4pOworI2VuZGlmCiAgICAgIGlmIChyZXQgPCAwKXsKICAgICAgICAgIHByaW50X2F1ZGlvKCJBbHNhOiBjb2RlYyBkYWkgc25kX3NvY19kYWlfc2V0X3N5c2NsayBmYWlsLHJldD0lZCFcbiIscmV0KTsKICAgICAgICAgIHJldHVybiByZXQ7CkBAIC00MzksNyArNDQ1LDExIEBACiAKICAgICAgLy9yZXQgPSBzbmRfc29jX2RhaV9zZXRfc3lzY2xrKGNvZGVjX2RhaSwgTkFVODgxMF9TQ0xLX1BMTCxaWElDX01DTEssIFNORF9TT0NfQ0xPQ0tfSU4pOwogCi0gICAgIHJldCA9IHNuZF9zb2NfZGFpX3NldF9zeXNjbGsoY29kZWNfZGFpLCBFUzgzMTFfTUNMS19QSU4scGFyYW1zX3JhdGUocGFyYW1zKSoyNTYsIFNORF9TT0NfQ0xPQ0tfSU4pOworI2lmZGVmIENPTkZJR19TTkRfU09DX1pYMjlfRVM4Mzg5CisgICAgIHJldCA9IHNuZF9zb2NfZGFpX3NldF9zeXNjbGsoY29kZWNfZGFpLCBFUzgzODlfTUNMS19QSU4sIHBhcmFtc19yYXRlKHBhcmFtcykqMjU2LCBTTkRfU09DX0NMT0NLX0lOKTsKKyNlbHNlCisgICAgIHJldCA9IHNuZF9zb2NfZGFpX3NldF9zeXNjbGsoY29kZWNfZGFpLCBFUzgzMTFfTUNMS19QSU4sIHBhcmFtc19yYXRlKHBhcmFtcykqMjU2LCBTTkRfU09DX0NMT0NLX0lOKTsKKyNlbmRpZgogICAgICBpZiAocmV0IDwgMCl7CiAgICAgICAgICBwcmludF9hdWRpbygiQWxzYTogY29kZWMgZGFpIHNuZF9zb2NfZGFpX3NldF9zeXNjbGsgZmFpbCxyZXQ9JWQhXG4iLHJldCk7CiAgICAgICAgICByZXR1cm4gcmV0OwpAQCAtODYxLDYgKzg3MSwxMCBAQAogCiBTTkRfU09DX0RBSUxJTktfREVGKGNvZGVjLCBcCiAJCURBSUxJTktfQ09NUF9BUlJBWShDT01QX0NPREVDKCJlczgzNzQuMS0wMDFhIiwgImVzODM3NC1oaWZpIikpKTsKKyNlbGlmIGRlZmluZWQoQ09ORklHX1NORF9TT0NfWlgyOV9FUzgzODkpCisKK1NORF9TT0NfREFJTElOS19ERUYoY29kZWMsIFwKKwkJREFJTElOS19DT01QX0FSUkFZKENPTVBfQ09ERUMoImVzODM4OS4xLTAwMTAiLCAiRVM4Mzg5IEhpRmkiKSkpOwogI2Vsc2UKIFNORF9TT0NfREFJTElOS19ERUYoY29kZWMsIFwKIAkJREFJTElOS19DT01QX0FSUkFZKENPTVBfQ09ERUMoImVzODMxMS4xLTAwMTgiLCAiZXM4MzExLWhpZmkiKSkpOwpAQCAtMTAwNCw2ICsxMDE4LDggQEAKIAl7IC5jb21wYXRpYmxlID0gInp4aWMsengyOV9lczgzMTEiLCAuZGF0YSA9ICZ6eDI5X3BsYXRmb3JtX2RhdGEgfSwKICNlbGlmIGRlZmluZWQoQ09ORklHX1NORF9TT0NfWlgyOV9FUzgzNzQpCQogCXsgLmNvbXBhdGlibGUgPSAienhpYyx6eDI5X2VzODM3NCIsIC5kYXRhID0gJnp4MjlfcGxhdGZvcm1fZGF0YSB9LAorI2VsaWYgZGVmaW5lZChDT05GSUdfU05EX1NPQ19aWDI5X0VTODM4OSkKKwl7IC5jb21wYXRpYmxlID0gInp4aWMsengyOV9lczgzODkiLCAuZGF0YSA9ICZ6eDI5X3BsYXRmb3JtX2RhdGEgfSwKICNlbHNlCiAJeyAuY29tcGF0aWJsZSA9ICJ6eGljLHp4MjlfZXM4MzExIiwgLmRhdGEgPSAmengyOV9wbGF0Zm9ybV9kYXRhIH0sCiAJCkBAIC0xMjgwLDYgKzEyOTYsOCBAQAogCWJvYXJkLT5uYW1lID0gInp4MjlfZXM4MzExIjsKICNlbGlmIGRlZmluZWQoQ09ORklHX1NORF9TT0NfWlgyOV9FUzgzNzQpCQogCWJvYXJkLT5uYW1lID0gInp4MjlfZXM4Mzc0IjsKKyNlbGlmIGRlZmluZWQoQ09ORklHX1NORF9TT0NfWlgyOV9FUzgzODkpCisJYm9hcmQtPm5hbWUgPSAiengyOV9lczgzODkiOwogI2Vsc2UKIAlib2FyZC0+bmFtZSA9ICJ6eDI5X2VzODMxMSI7CiAKQEAgLTE0MDksNyArMTQyNyw4IEBACiAJCS5uYW1lCT0gInp4MjlfZXM4MzExIiwKICNlbGlmIGRlZmluZWQoQ09ORklHX1NORF9TT0NfWlgyOV9FUzgzNzQpCiAJCS5uYW1lCT0gInp4MjlfZXM4Mzc0IiwKLQorI2VsaWYgZGVmaW5lZChDT05GSUdfU05EX1NPQ19aWDI5X0VTODM4OSkKKwkJLm5hbWUJPSAiengyOV9lczgzODkiLAogI2Vsc2UKIAkJLm5hbWUJPSAiengyOV9lczgzMTEiLAogI2VuZGlmCmRpZmYgLS1naXQgYS9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvenhpY19hcHBfb3Blbi9wbGF0Zm9ybS9udnNlcnZlci9udnNlcnZlci5jIGIvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL3p4aWNfYXBwX29wZW4vcGxhdGZvcm0vbnZzZXJ2ZXIvbnZzZXJ2ZXIuYwppbmRleCAxMzlhYzY3Li4wZjc5NzEzIDEwMDc1NQotLS0gYS9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvenhpY19hcHBfb3Blbi9wbGF0Zm9ybS9udnNlcnZlci9udnNlcnZlci5jCisrKyBiL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS96eGljX2FwcF9vcGVuL3BsYXRmb3JtL252c2VydmVyL252c2VydmVyLmMKQEAgLTMzNyw5ICszMzcsMTUgQEAKICAgICAgICAgfQogICAgICAgICB3YWtlX252c2VydmVyX2xvY2soKTsKICAgICAgICAgYW5hbHlNc2coJnJjdkJ1ZiwgJnNuZEJ1Zik7Ci0gICAgICAgIAorbXNnc25kX3JldHJ5OgogICAgICAgICBpZigtMSA9PSBtc2dzbmQobXNnSWQsICZzbmRCdWYsIHNpemVvZihUX05WX01TR19SRVNVTFQpIC0gc2l6ZW9mKGxvbmcpLCAwKSkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKGVycm5vID09IEVJTlRSKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHByaW50ZigibnZzZXJ2ZXIgZXJyb3I6IG1zZ3NuZCBmYWlsLCBlcnJubyA9IEVJTlRSIVxuIik7CisgICAgICAgICAgICAgICAgZ290byBtc2dzbmRfcmV0cnk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB3YWtlX252c2VydmVyX3VubG9jaygpOwogICAgICAgICAgICAgcHJpbnRmKCJudnNlcnZlciBlcnJvcjogbnZzZXJ2ZXIgbXNnc25kIGZhaWwsIGVycm5vID0gJWQhXG4iLCBlcnJubyk7CiAgICAgICAgICAgICBjb250aW51ZTsgICAKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL3p4aWNfYXBwX29wZW4vc2RrL2JpbmRlci9saWJsb2cvbG9nZF93cml0ZS5jIGIvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL3p4aWNfYXBwX29wZW4vc2RrL2JpbmRlci9saWJsb2cvbG9nZF93cml0ZS5jCmluZGV4IDg0ODMwMjQuLmFlODE4NDQgMTAwNzU1Ci0tLSBhL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS96eGljX2FwcF9vcGVuL3Nkay9iaW5kZXIvbGlibG9nL2xvZ2Rfd3JpdGUuYworKysgYi9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvenhpY19hcHBfb3Blbi9zZGsvYmluZGVyL2xpYmxvZy9sb2dkX3dyaXRlLmMKQEAgLTQ1MSwxMiArNDUxLDEyIEBACiAgICAgY2hhciBidWZmZXJbMzJdOwogICAgIGNoYXIgY21kWzEyOF07CiAgICAgaW50ICpsZXZlbCA9IE5VTEw7Ci0gICAgc3ByaW50ZihjbWQsICJudiBzaG93IHwgZ3JlcCAlcyIsbGV2ZWxfbmFtZSk7CisKKyAgICBzcHJpbnRmKGNtZCwgIm52IGdldCAlcyIsIGxldmVsX25hbWUpOyAKICAgICBGSUxFICpvdXRwdXQgPSBwb3BlbihjbWQsICJyIik7Ci0gICAgd2hpbGUgKGZnZXRzKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksIG91dHB1dCkgIT0gTlVMTCkKLSAgICB7Ci0gICAgICAgIGNoYXIgKmVxdWFsX3NpZ24gPSBzdHJjaHIoYnVmZmVyLCAnPScpOwotICAgICAgICBzdHJuY3B5KG52X2xldmVsLGVxdWFsX3NpZ24gKyAxLDEpOworICAgIGlmKGZnZXRzKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksIG91dHB1dCkgIT0gTlVMTCkKKyAgICB7IAorICAgICAgICBzdHJuY3B5KG52X2xldmVsLCBidWZmZXIsIHNpemVvZihudl9sZXZlbCkgLSAxKTsKICAgICB9CiAgICAgcGNsb3NlKG91dHB1dCk7CiAgICAgbnZfbGV2ZWxbc2l6ZW9mKG52X2xldmVsKS0xXSA9ICdcMCc7CmRpZmYgLS1naXQgYS9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvenhpY19hcHBfb3Blbi9zZGsvbGlibnZyYW0vbnZfYXBpLmMgYi9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvenhpY19hcHBfb3Blbi9zZGsvbGlibnZyYW0vbnZfYXBpLmMKaW5kZXggMmI2NDNkYS4uZDQ0NGI0NiAxMDA3NTUKLS0tIGEvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL3p4aWNfYXBwX29wZW4vc2RrL2xpYm52cmFtL252X2FwaS5jCisrKyBiL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS96eGljX2FwcF9vcGVuL3Nkay9saWJudnJhbS9udl9hcGkuYwpAQCAtMzk5LDYgKzM5OSwzMSBAQAogDQogICAgIHJldHVybiAwOw0KIH0NCitpbnQgY2xlYXJfbXNnX3F1ZXVlKGludCBtc2dJZCwgVF9OVl9NU0dfUkVTVUxUICptc2dSY3YsIGxvbmcgbXNnX3R5cGUpDQorew0KKyAgICB3aGlsZSAoMSkNCisgICAgew0KKyAgICAgICAgc3NpemVfdCByZXQgPSBtc2dyY3YobXNnSWQsIG1zZ1Jjdiwgc2l6ZW9mKFRfTlZfTVNHX1JFU1VMVCkgLSBzaXplb2YobG9uZyksIG1zZ190eXBlLCBJUENfTk9XQUlUKTsNCisgICAgICAgIGlmIChyZXQgPT0gLTEpDQorICAgICAgICB7DQorICAgICAgICAgICAgaWYgKGVycm5vID09IEVOT01TRykNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBlbHNlIGlmIChlcnJubyA9PSBFSU5UUikNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBlbHNlDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICBwZXJyb3IoIltsaWJudnJhbV1jbGVhcl9tc2dfcXVldWUgbXNncmN2Iik7DQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgcmV0dXJuIDA7DQorfQ0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogKiC5psTcw+jK9jogICAgIHByb2NNc2cNCkBAIC00MjcsNiArNDUyLDExIEBACiByZXRyeTE6DQogICAgIGlmKC0xID09IG1zZ3NuZChtc2dJZCwgbXNnU25kLCBzaXplb2YoVF9OVl9NU0dfSU5GTykgLSBzaXplb2YobG9uZyksIDApICkNCiAgICAgew0KKyAgICAgICAgaWYgKGVycm5vID09IEVJTlRSKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHByaW50ZigibnYgZXJyb3I6IG1zZ3NuZCBmYWlsLCBlcnJubyA9IEVJTlRSIVxuIik7DQorICAgICAgICAgICAgZ290byByZXRyeTE7DQorICAgICAgICB9DQogICAgICAgICBwcmludGYoIm52IGVycm9yOiBtc2dzbmQgZmFpbCwgZXJybm8gPSAlZCFcbiIsIGVycm5vKTsNCiAgICAgICAgIHJldHVybiAtMTsgICANCiAgICAgfQ0KQEAgLTQzNCwxMyArNDY0LDIwIEBACiByZXRyeTI6DQogICAgIGlmKC0xID09IG1zZ3Jjdihtc2dJZCwgbXNnUmN2LCBzaXplb2YoVF9OVl9NU0dfUkVTVUxUKSAtIHNpemVvZihsb25nKSwgbXNnU25kLT5waWQsIDApKQ0KICAgICB7DQorICAgICAgICBpZiAoZXJybm8gPT0gRUlOVFIpDQorICAgICAgICB7DQorICAgICAgICAgICAgcHJpbnRmKCJudiBlcnJvcjogbXNncmN2IGZhaWwsIGVycm5vID0gRUlOVFIhXG4iKTsNCisgICAgICAgICAgICBnb3RvIHJldHJ5MjsNCisgICAgICAgIH0NCiAgICAgICAgIHByaW50ZigibnYgZXJyb3I6IG1zZ3JjdiBmYWlsLCBlcnJubyA9ICVkIVxuIiwgZXJybm8pOw0KKyAgICAgICAgY2xlYXJfbXNnX3F1ZXVlKG1zZ0lkLCBtc2dSY3YsIG1zZ1NuZC0+cGlkKTsNCiAgICAgICAgIGdvdG8gcmV0cnkxOyAgIA0KICAgICB9DQogDQogICAgIGlmKG1zZ1NuZC0+bXNnSW5kZXggIT0gbXNnUmN2LT5tc2dJbmRleCkNCiAgICAgew0KLSAgICAgICAgcHJpbnRmKCJudiBlcnJvcjpyZWN2IHVua25vdyBtc2cgcGlkID0gJWQsIHRpZCA9ICVkLCBrZXkgPSAlcywgdmFsdWUgPSAlc1xuIiwgZ2V0cGlkKCksIG1zZ1NuZC0+cGlkLCBtc2dTbmQtPmtleSwgbXNnUmN2LT52YWx1ZSk7DQorICAgICAgICBwcmludGYoIm52IGVycm9yOnJlY3YgdW5rbm93IG1zZyBudnR5cGUgPSAlZCwgdGlkID0gJWQsIGtleSA9ICVzLCBpbmRleDolZDolZFxuIiwgbXNnU25kLT5udlR5cGUsIG1zZ1NuZC0+cGlkLCBtc2dTbmQtPmtleSwgbXNnU25kLT5tc2dJbmRleCwgbXNnUmN2LT5tc2dJbmRleCk7DQorICAgICAgICBjbGVhcl9tc2dfcXVldWUobXNnSWQsIG1zZ1JjdiwgbXNnU25kLT5waWQpOw0KICAgICAgICAgZ290byByZXRyeTE7DQogICAgIH0NCiAJCQ0KZGlmZiAtLWdpdCBhL2N1c3RvbWVyX2NvbmZpZy9udi9wbGF0Zm9ybS9wbGF0Zm9ybV9udi54bWwgYi9jdXN0b21lcl9jb25maWcvbnYvcGxhdGZvcm0vcGxhdGZvcm1fbnYueG1sCmluZGV4IDcwMDRkZTIuLjU3Y2Y3YzYgMTAwNzU1Ci0tLSBhL2N1c3RvbWVyX2NvbmZpZy9udi9wbGF0Zm9ybS9wbGF0Zm9ybV9udi54bWwKKysrIGIvY3VzdG9tZXJfY29uZmlnL252L3BsYXRmb3JtL3BsYXRmb3JtX252LnhtbApAQCAtNDc5LDcgKzQ3OSw3IEBACiAgICAgICAgICAgICA8cGFyYW0ga2V5PSJUX0NvbW1BdFNldHRpbmcubWFudWFsX3NlYXJjaCIgdmFsPSIwIiBzaWduZWQ9IjAiIC8+DQogICAgICAgICAgICAgPHBhcmFtIGtleT0iVF9Db21tQXRTZXR0aW5nLmx0ZUluZm9fc3Ryb25nc2NhbiIgdmFsPSIwIiBzaWduZWQ9IjAiIC8+DQogICAgICAgICAgICAgPHBhcmFtIGtleT0iVF9Db21tQXRTZXR0aW5nLmx0ZUluZm9fQ1NGQiIgdmFsPSIwIiBzaWduZWQ9IjAiIC8+DQotICAgICAgICAgICAgPHBhcmFtIGtleT0iVF9Db21tQXRTZXR0aW5nLmV4Y2VwdFJlc2V0IiB2YWw9IjAiIHNpZ25lZD0iMCIgLz4NCisgICAgICAgICAgICA8cGFyYW0ga2V5PSJUX0NvbW1BdFNldHRpbmcuZXhjZXB0UmVzZXQiIHZhbD0iMiIgc2lnbmVkPSIwIiAvPg0KICAgICAgICAgICAgIDxwYXJhbSBrZXk9IlRfQ29tbUF0U2V0dGluZy5Vc2F0RmxhZyIgdmFsPSIxIiBzaWduZWQ9IjAiIC8+DQogICAgICAgICAgICAgPHBhcmFtIGtleT0iVF9Db21tQXRTZXR0aW5nLlBwcEVjaG9GbGFnIiB2YWw9IjEiIHNpZ25lZD0iMCIgLz4NCiAgICAgICAgICAgICA8cGFyYW0ga2V5PSJUX0NvbW1BdFNldHRpbmcuSXNVc2VJbXNpRmxhZyIgdmFsPSIwIiBzaWduZWQ9IjAiIC8+DQpAQCAtOTAyLDYgKzkwMiwxOCBAQAogICAgICAgICAgICAgPHBhcmFtIGtleT0iVF96RGV2X05WX1BzRGF0YV9QcmkudFVlQ2FwYS5hdEV1cmFCYW5kSW5mb1s2NV0uZHdGVWxMb3ciIHZhbD0iMTcxMDAiIHNpZ25lZD0iMCIgLz4NCiAgICAgICAgICAgICA8cGFyYW0ga2V5PSJUX3pEZXZfTlZfUHNEYXRhX1ByaS50VWVDYXBhLmF0RXVyYUJhbmRJbmZvWzY1XS5kd05PZmZVbCIgdmFsPSIxMzE5NzIiIHNpZ25lZD0iMCIgLz4NCiAgICAgICAgICAgICA8cGFyYW0ga2V5PSJUX3pEZXZfTlZfUHNEYXRhX1ByaS50VXNlckluZm8udEVjYWxsQ2FwYS5iRWNhbGxNb2RlIiB2YWw9IjIiIHNpZ25lZD0iMCIgLz4NCisgICAgICAgICAgICA8cGFyYW0ga2V5PSJUX3pEZXZfTlZfUHNEYXRhX1ByaS50VXNlckluZm8udEVjYWxsTnVtLmJUZXN0TnVtTGVuIiB2YWw9IjAiIHNpZ25lZD0iMCIgLz4NCisgICAgICAgICAgICA8cGFyYW0ga2V5PSJUX3pEZXZfTlZfUHNEYXRhX1ByaS50VXNlckluZm8udEVjYWxsTnVtLmFiVGVzdE51bVswXSIgdmFsPSIwIiBzaWduZWQ9IjAiIC8+DQorICAgICAgICAgICAgPHBhcmFtIGtleT0iVF96RGV2X05WX1BzRGF0YV9QcmkudFVzZXJJbmZvLnRFY2FsbE51bS5hYlRlc3ROdW1bMV0iIHZhbD0iMCIgc2lnbmVkPSIwIiAvPg0KKyAgICAgICAgICAgIDxwYXJhbSBrZXk9IlRfekRldl9OVl9Qc0RhdGFfUHJpLnRVc2VySW5mby50RWNhbGxOdW0uYWJUZXN0TnVtWzJdIiB2YWw9IjAiIHNpZ25lZD0iMCIgLz4NCisgICAgICAgICAgICA8cGFyYW0ga2V5PSJUX3pEZXZfTlZfUHNEYXRhX1ByaS50VXNlckluZm8udEVjYWxsTnVtLmFiVGVzdE51bVszXSIgdmFsPSIwIiBzaWduZWQ9IjAiIC8+DQorICAgICAgICAgICAgPHBhcmFtIGtleT0iVF96RGV2X05WX1BzRGF0YV9QcmkudFVzZXJJbmZvLnRFY2FsbE51bS5hYlRlc3ROdW1bNF0iIHZhbD0iMCIgc2lnbmVkPSIwIiAvPg0KKyAgICAgICAgICAgIDxwYXJhbSBrZXk9IlRfekRldl9OVl9Qc0RhdGFfUHJpLnRVc2VySW5mby50RWNhbGxOdW0uYWJUZXN0TnVtWzVdIiB2YWw9IjAiIHNpZ25lZD0iMCIgLz4NCisgICAgICAgICAgICA8cGFyYW0ga2V5PSJUX3pEZXZfTlZfUHNEYXRhX1ByaS50VXNlckluZm8udEVjYWxsTnVtLmFiVGVzdE51bVs2XSIgdmFsPSIwIiBzaWduZWQ9IjAiIC8+DQorICAgICAgICAgICAgPHBhcmFtIGtleT0iVF96RGV2X05WX1BzRGF0YV9QcmkudFVzZXJJbmZvLnRFY2FsbE51bS5hYlRlc3ROdW1bN10iIHZhbD0iMCIgc2lnbmVkPSIwIiAvPg0KKyAgICAgICAgICAgIDxwYXJhbSBrZXk9IlRfekRldl9OVl9Qc0RhdGFfUHJpLnRVc2VySW5mby50RWNhbGxOdW0uYWJUZXN0TnVtWzhdIiB2YWw9IjAiIHNpZ25lZD0iMCIgLz4NCisgICAgICAgICAgICA8cGFyYW0ga2V5PSJUX3pEZXZfTlZfUHNEYXRhX1ByaS50VXNlckluZm8udEVjYWxsTnVtLmFiVGVzdE51bVs5XSIgdmFsPSIwIiBzaWduZWQ9IjAiIC8+DQorICAgICAgICAgICAgPHBhcmFtIGtleT0iVF96RGV2X05WX1BzRGF0YV9QcmkudFVzZXJJbmZvLnRFY2FsbE51bS5iVGVzdE51bVR5cGUiIHZhbD0iMCIgc2lnbmVkPSIwIiAvPg0KICAgICAgICAgICAgIDxwYXJhbSBrZXk9IlRfekRldl9OVl9Qc0RhdGFfUHJpLnRVZUNhcGEuYlN1cHBIb1RvRXV0cmFUZGQiIHZhbD0iMSIgc2lnbmVkPSIwIiAvPg0KICAgICAgICAgICAgIDxwYXJhbSBrZXk9IlRfekRldl9OVl9Qc0RhdGFfUHJpLnRVZUNhcGEuYlN1cHBIb1RvRXV0cmFGZGQiIHZhbD0iMSIgc2lnbmVkPSIwIiAvPg0KICAgICAgICAgICAgIDxwYXJhbSBrZXk9IlRfekRldl9OVl9Qc0RhdGFfUHJpLnRVZUNhcGEuYWJMdGVQcmlvcml0eUZyZXFbMF0iIHZhbD0iMCIgc2lnbmVkPSIwIiAvPg0KQEAgLTIwOTMsNiArMjEwNSw0MiBAQAogICAgICAgICAgICAgPHBhcmFtIGtleT0iVF96RGV2X05WX1BzRGF0YV9QcmkudFVzZXJJbmZvLnRNY2NDdXN0b21CYW5kLmF0THRlTWNjQ3VzdG9tQmFuZFsyXS5hYkx0ZUJhbmRbOF0iIHZhbD0iMCIgc2lnbmVkPSIwIiAvPg0KICAgICAgICAgICAgIDxwYXJhbSBrZXk9IlRfekRldl9OVl9Qc0RhdGFfUHJpLnRVc2VySW5mby50TWNjQ3VzdG9tQmFuZC5hdEx0ZU1jY0N1c3RvbUJhbmRbM10uYWJMdGVCYW5kWzhdIiB2YWw9IjAiIHNpZ25lZD0iMCIgLz4NCiAgICAgICAgICAgICA8cGFyYW0ga2V5PSJUX3pEZXZfTlZfUHNEYXRhX1ByaS50VXNlckluZm8udEJlZXBDYWxsLmJDYWxsTnVtIiB2YWw9IjAiIHNpZ25lZD0iMCIgLz4NCisgICAgICAgICAgICA8cGFyYW0ga2V5PSJUX3pEZXZfTlZfUHNEYXRhX1ByaS50VXNlckluZm8udEJlZXBDYWxsLmF0Q2FsbEdyb3VwWzBdLmJOdW1MZW4iIHZhbD0iMCIgc2lnbmVkPSIwIiAvPg0KKyAgICAgICAgICAgIDxwYXJhbSBrZXk9IlRfekRldl9OVl9Qc0RhdGFfUHJpLnRVc2VySW5mby50QmVlcENhbGwuYXRDYWxsR3JvdXBbMF0uYWJDYWxsTnVtWzBdIiB2YWw9IjAiIHNpZ25lZD0iMCIgLz4NCisgICAgICAgICAgICA8cGFyYW0ga2V5PSJUX3pEZXZfTlZfUHNEYXRhX1ByaS50VXNlckluZm8udEJlZXBDYWxsLmF0Q2FsbEdyb3VwWzBdLmFiQ2FsbE51bVsxXSIgdmFsPSIwIiBzaWduZWQ9IjAiIC8+DQorICAgICAgICAgICAgPHBhcmFtIGtleT0iVF96RGV2X05WX1BzRGF0YV9QcmkudFVzZXJJbmZvLnRCZWVwQ2FsbC5hdENhbGxHcm91cFswXS5hYkNhbGxOdW1bMl0iIHZhbD0iMCIgc2lnbmVkPSIwIiAvPg0KKyAgICAgICAgICAgIDxwYXJhbSBrZXk9IlRfekRldl9OVl9Qc0RhdGFfUHJpLnRVc2VySW5mby50QmVlcENhbGwuYXRDYWxsR3JvdXBbMF0uYWJDYWxsTnVtWzNdIiB2YWw9IjAiIHNpZ25lZD0iMCIgLz4NCisgICAgICAgICAgICA8cGFyYW0ga2V5PSJUX3pEZXZfTlZfUHNEYXRhX1ByaS50VXNlckluZm8udEJlZXBDYWxsLmF0Q2FsbEdyb3VwWzBdLmFiQ2FsbE51bVs0XSIgdmFsPSIwIiBzaWduZWQ9IjAiIC8+DQorICAgICAgICAgICAgPHBhcmFtIGtleT0iVF96RGV2X05WX1BzRGF0YV9QcmkudFVzZXJJbmZvLnRCZWVwQ2FsbC5hdENhbGxHcm91cFswXS5hYkNhbGxOdW1bNV0iIHZhbD0iMCIgc2lnbmVkPSIwIiAvPg0KKyAgICAgICAgICAgIDxwYXJhbSBrZXk9IlRfekRldl9OVl9Qc0RhdGFfUHJpLnRVc2VySW5mby50QmVlcENhbGwuYXRDYWxsR3JvdXBbMF0uYWJDYWxsTnVtWzZdIiB2YWw9IjAiIHNpZ25lZD0iMCIgLz4NCisgICAgICAgICAgICA8cGFyYW0ga2V5PSJUX3pEZXZfTlZfUHNEYXRhX1ByaS50VXNlckluZm8udEJlZXBDYWxsLmF0Q2FsbEdyb3VwWzBdLmFiQ2FsbE51bVs3XSIgdmFsPSIwIiBzaWduZWQ9IjAiIC8+DQorICAgICAgICAgICAgPHBhcmFtIGtleT0iVF96RGV2X05WX1BzRGF0YV9QcmkudFVzZXJJbmZvLnRCZWVwQ2FsbC5hdENhbGxHcm91cFswXS5hYkNhbGxOdW1bOF0iIHZhbD0iMCIgc2lnbmVkPSIwIiAvPg0KKyAgICAgICAgICAgIDxwYXJhbSBrZXk9IlRfekRldl9OVl9Qc0RhdGFfUHJpLnRVc2VySW5mby50QmVlcENhbGwuYXRDYWxsR3JvdXBbMF0uYWJDYWxsTnVtWzldIiB2YWw9IjAiIHNpZ25lZD0iMCIgLz4NCisgICAgICAgICAgICA8cGFyYW0ga2V5PSJUX3pEZXZfTlZfUHNEYXRhX1ByaS50VXNlckluZm8udEJlZXBDYWxsLmF0Q2FsbEdyb3VwWzBdLmFiQ2FsbE51bVsxMF0iIHZhbD0iMCIgc2lnbmVkPSIwIiAvPg0KKyAgICAgICAgICAgIDxwYXJhbSBrZXk9IlRfekRldl9OVl9Qc0RhdGFfUHJpLnRVc2VySW5mby50QmVlcENhbGwuYXRDYWxsR3JvdXBbMV0uYk51bUxlbiIgdmFsPSIwIiBzaWduZWQ9IjAiIC8+DQorICAgICAgICAgICAgPHBhcmFtIGtleT0iVF96RGV2X05WX1BzRGF0YV9QcmkudFVzZXJJbmZvLnRCZWVwQ2FsbC5hdENhbGxHcm91cFsxXS5hYkNhbGxOdW1bMF0iIHZhbD0iMCIgc2lnbmVkPSIwIiAvPg0KKyAgICAgICAgICAgIDxwYXJhbSBrZXk9IlRfekRldl9OVl9Qc0RhdGFfUHJpLnRVc2VySW5mby50QmVlcENhbGwuYXRDYWxsR3JvdXBbMV0uYWJDYWxsTnVtWzFdIiB2YWw9IjAiIHNpZ25lZD0iMCIgLz4NCisgICAgICAgICAgICA8cGFyYW0ga2V5PSJUX3pEZXZfTlZfUHNEYXRhX1ByaS50VXNlckluZm8udEJlZXBDYWxsLmF0Q2FsbEdyb3VwWzFdLmFiQ2FsbE51bVsyXSIgdmFsPSIwIiBzaWduZWQ9IjAiIC8+DQorICAgICAgICAgICAgPHBhcmFtIGtleT0iVF96RGV2X05WX1BzRGF0YV9QcmkudFVzZXJJbmZvLnRCZWVwQ2FsbC5hdENhbGxHcm91cFsxXS5hYkNhbGxOdW1bM10iIHZhbD0iMCIgc2lnbmVkPSIwIiAvPg0KKyAgICAgICAgICAgIDxwYXJhbSBrZXk9IlRfekRldl9OVl9Qc0RhdGFfUHJpLnRVc2VySW5mby50QmVlcENhbGwuYXRDYWxsR3JvdXBbMV0uYWJDYWxsTnVtWzRdIiB2YWw9IjAiIHNpZ25lZD0iMCIgLz4NCisgICAgICAgICAgICA8cGFyYW0ga2V5PSJUX3pEZXZfTlZfUHNEYXRhX1ByaS50VXNlckluZm8udEJlZXBDYWxsLmF0Q2FsbEdyb3VwWzFdLmFiQ2FsbE51bVs1XSIgdmFsPSIwIiBzaWduZWQ9IjAiIC8+DQorICAgICAgICAgICAgPHBhcmFtIGtleT0iVF96RGV2X05WX1BzRGF0YV9QcmkudFVzZXJJbmZvLnRCZWVwQ2FsbC5hdENhbGxHcm91cFsxXS5hYkNhbGxOdW1bNl0iIHZhbD0iMCIgc2lnbmVkPSIwIiAvPg0KKyAgICAgICAgICAgIDxwYXJhbSBrZXk9IlRfekRldl9OVl9Qc0RhdGFfUHJpLnRVc2VySW5mby50QmVlcENhbGwuYXRDYWxsR3JvdXBbMV0uYWJDYWxsTnVtWzddIiB2YWw9IjAiIHNpZ25lZD0iMCIgLz4NCisgICAgICAgICAgICA8cGFyYW0ga2V5PSJUX3pEZXZfTlZfUHNEYXRhX1ByaS50VXNlckluZm8udEJlZXBDYWxsLmF0Q2FsbEdyb3VwWzFdLmFiQ2FsbE51bVs4XSIgdmFsPSIwIiBzaWduZWQ9IjAiIC8+DQorICAgICAgICAgICAgPHBhcmFtIGtleT0iVF96RGV2X05WX1BzRGF0YV9QcmkudFVzZXJJbmZvLnRCZWVwQ2FsbC5hdENhbGxHcm91cFsxXS5hYkNhbGxOdW1bOV0iIHZhbD0iMCIgc2lnbmVkPSIwIiAvPg0KKyAgICAgICAgICAgIDxwYXJhbSBrZXk9IlRfekRldl9OVl9Qc0RhdGFfUHJpLnRVc2VySW5mby50QmVlcENhbGwuYXRDYWxsR3JvdXBbMV0uYWJDYWxsTnVtWzEwXSIgdmFsPSIwIiBzaWduZWQ9IjAiIC8+DQorICAgICAgICAgICAgPHBhcmFtIGtleT0iVF96RGV2X05WX1BzRGF0YV9QcmkudFVzZXJJbmZvLnRCZWVwQ2FsbC5hdENhbGxHcm91cFsyXS5iTnVtTGVuIiB2YWw9IjAiIHNpZ25lZD0iMCIgLz4NCisgICAgICAgICAgICA8cGFyYW0ga2V5PSJUX3pEZXZfTlZfUHNEYXRhX1ByaS50VXNlckluZm8udEJlZXBDYWxsLmF0Q2FsbEdyb3VwWzJdLmFiQ2FsbE51bVswXSIgdmFsPSIwIiBzaWduZWQ9IjAiIC8+DQorICAgICAgICAgICAgPHBhcmFtIGtleT0iVF96RGV2X05WX1BzRGF0YV9QcmkudFVzZXJJbmZvLnRCZWVwQ2FsbC5hdENhbGxHcm91cFsyXS5hYkNhbGxOdW1bMV0iIHZhbD0iMCIgc2lnbmVkPSIwIiAvPg0KKyAgICAgICAgICAgIDxwYXJhbSBrZXk9IlRfekRldl9OVl9Qc0RhdGFfUHJpLnRVc2VySW5mby50QmVlcENhbGwuYXRDYWxsR3JvdXBbMl0uYWJDYWxsTnVtWzJdIiB2YWw9IjAiIHNpZ25lZD0iMCIgLz4NCisgICAgICAgICAgICA8cGFyYW0ga2V5PSJUX3pEZXZfTlZfUHNEYXRhX1ByaS50VXNlckluZm8udEJlZXBDYWxsLmF0Q2FsbEdyb3VwWzJdLmFiQ2FsbE51bVszXSIgdmFsPSIwIiBzaWduZWQ9IjAiIC8+DQorICAgICAgICAgICAgPHBhcmFtIGtleT0iVF96RGV2X05WX1BzRGF0YV9QcmkudFVzZXJJbmZvLnRCZWVwQ2FsbC5hdENhbGxHcm91cFsyXS5hYkNhbGxOdW1bNF0iIHZhbD0iMCIgc2lnbmVkPSIwIiAvPg0KKyAgICAgICAgICAgIDxwYXJhbSBrZXk9IlRfekRldl9OVl9Qc0RhdGFfUHJpLnRVc2VySW5mby50QmVlcENhbGwuYXRDYWxsR3JvdXBbMl0uYWJDYWxsTnVtWzVdIiB2YWw9IjAiIHNpZ25lZD0iMCIgLz4NCisgICAgICAgICAgICA8cGFyYW0ga2V5PSJUX3pEZXZfTlZfUHNEYXRhX1ByaS50VXNlckluZm8udEJlZXBDYWxsLmF0Q2FsbEdyb3VwWzJdLmFiQ2FsbE51bVs2XSIgdmFsPSIwIiBzaWduZWQ9IjAiIC8+DQorICAgICAgICAgICAgPHBhcmFtIGtleT0iVF96RGV2X05WX1BzRGF0YV9QcmkudFVzZXJJbmZvLnRCZWVwQ2FsbC5hdENhbGxHcm91cFsyXS5hYkNhbGxOdW1bN10iIHZhbD0iMCIgc2lnbmVkPSIwIiAvPg0KKyAgICAgICAgICAgIDxwYXJhbSBrZXk9IlRfekRldl9OVl9Qc0RhdGFfUHJpLnRVc2VySW5mby50QmVlcENhbGwuYXRDYWxsR3JvdXBbMl0uYWJDYWxsTnVtWzhdIiB2YWw9IjAiIHNpZ25lZD0iMCIgLz4NCisgICAgICAgICAgICA8cGFyYW0ga2V5PSJUX3pEZXZfTlZfUHNEYXRhX1ByaS50VXNlckluZm8udEJlZXBDYWxsLmF0Q2FsbEdyb3VwWzJdLmFiQ2FsbE51bVs5XSIgdmFsPSIwIiBzaWduZWQ9IjAiIC8+DQorICAgICAgICAgICAgPHBhcmFtIGtleT0iVF96RGV2X05WX1BzRGF0YV9QcmkudFVzZXJJbmZvLnRCZWVwQ2FsbC5hdENhbGxHcm91cFsyXS5hYkNhbGxOdW1bMTBdIiB2YWw9IjAiIHNpZ25lZD0iMCIgLz4NCiAgICAgICAgICAgICA8cGFyYW0ga2V5PSJUX3pEZXZfTlZfUHNEYXRhX1ByaS50VXNlckluZm8udFNtc01lbUluZm9bMF0uYk1lbTEiIHZhbD0iMyIgc2lnbmVkPSIwIiAvPg0KICAgICAgICAgICAgIDxwYXJhbSBrZXk9IlRfekRldl9OVl9Qc0RhdGFfUHJpLnRVc2VySW5mby50U21zTWVtSW5mb1swXS5iTWVtMiIgdmFsPSIzIiBzaWduZWQ9IjAiIC8+DQogICAgICAgICAgICAgPHBhcmFtIGtleT0iVF96RGV2X05WX1BzRGF0YV9QcmkudFVzZXJJbmZvLnRTbXNNZW1JbmZvWzBdLmJNZW0zIiB2YWw9IjMiIHNpZ25lZD0iMCIgLz4NCmRpZmYgLS1naXQgYS91cGRhdGVfdmVyc2lvbi5zaCBiL3VwZGF0ZV92ZXJzaW9uLnNoCmluZGV4IDI4NjFiMWQuLmRmOTQ0Y2MgMTAwNzU1Ci0tLSBhL3VwZGF0ZV92ZXJzaW9uLnNoCisrKyBiL3VwZGF0ZV92ZXJzaW9uLnNoCkBAIC0xLDggKzEsOCBAQAogIyEvYmluL2Jhc2gKICNleHBvcnQgTFlOUV9WRVJTSU9OPSJUMTA2X2x5bnFfdmVyc2lvbl9hcF9idWlsZF9zaCIKLUxZTlFfQVBfVkVSU0lPTj0iVDEwNi1NWFgtUExYWFhYLVA1NlUxMS5BUC4xOS4wNCIKLUxZTlFfQ0FQX0lOU0lERV9WRVJTSU9OPSJDQVAuMTkuMDQiCi1MWU5RX0NBUF9WRVJTSU9OPSJDQVAuMTkuMDQiCitMWU5RX0FQX1ZFUlNJT049IlQxMDYtTVhYLVBMWFhYWC1QNTZVMTEuQVAuMTkuMDYiCitMWU5RX0NBUF9JTlNJREVfVkVSU0lPTj0iQ0FQLjE5LjA2IgorTFlOUV9DQVBfVkVSU0lPTj0iQ0FQLjE5LjA2IgogQ09NTUlUX0lEPSIkKGdpdCByZXYtcGFyc2UgSEVBRCkiCiAKIExZTlFfU1dfSU5TSURFX1ZFUlNJT049IkxZTlFfQ09ORklHX1ZFUlNJT04gPSBcIiR7TFlOUV9BUF9WRVJTSU9OfV8ke0xZTlFfQ0FQX0lOU0lERV9WRVJTSU9OfVwiIgo=