Message-ID: <4FAAF152.7070508@...1227...> Date: Thu, 10 May 2012 00:36:02 +0200 From: Arne Schwabe MIME-Version: 1.0 References: <4FAAE0A1.2080808@...1227...> In-Reply-To: Content-Type: multipart/mixed; boundary="------------050006090501060607020707" Subject: Re: [Openvpn-devel] [PATCH] Openvpn for Android 4.0 Changeset List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Alon Bar-Lev Cc: "openvpn-devel@lists.sourceforge.net" This is a multi-part message in MIME format. --------------050006090501060607020707 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Am 10.05.12 00:09, schrieb Alon Bar-Lev: > Hmmm... the fact that you are not using git, and create separate > branch for the changes makes it very difficult to peak. Sorry. I am new to git and the distributed version systems. I hope this patch is better. I also pushed the changes to https://github.com/schwabe/openvpn/. > I see a mix of changes and a separate build system which I am not sure > is needed. You build openvpn as a shared library, it is OK, I had this > on my list, but why not use the current build to do so? Building with the android build system was easier for me. Openvpn is only build as a shared library but still used as a standalone executable. This has to do with the apk packaging and the android market. Transforming openvpn into a real library turned out to be more difficult because there multiple points in the code where openvpn more or less calls exit to clean up. But before discussing the best way of building openvpn on android I would rather like to get input on the other changes. > I suggest you clone the repository at github, create a branch and > order your changes. that would mean to revert all changes, making the changes in small steps and commiting each step? (I am still trying to learn how to work with git) Arne --------------050006090501060607020707 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="0001-Openvpn-for-Android-ICS-API.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Openvpn-for-Android-ICS-API.patch" RnJvbSBiOWE1MmQ1ZWU5MTk4MThhMmUyZWU1MjVlMDgwMGU4ZTFmMDZiNDVmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBcm5lIFNjaHdhYmUgPGFybmVAcmZjMjU0OS5vcmc+ CkRhdGU6IFdlZCwgOSBNYXkgMjAxMiAyMzoxODozMSArMDIwMApTdWJqZWN0OiBbUEFUQ0gg MS8xXSBPcGVudnBuIGZvciBBbmRyb2lkIElDUyBBUEkKCi0tLQogc3JjL29wZW52cG4vZXJy b3IuYyAgIHwgICAgMiArLQogc3JjL29wZW52cG4vZXZlbnQuYyAgIHwgICAgNCArKwogc3Jj L29wZW52cG4vaW5pdC5jICAgIHwgICAxMiArKysrKy0KIHNyYy9vcGVudnBuL21hbmFnZS5j ICB8ICAgOTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLQogc3JjL29wZW52cG4vbWFuYWdlLmggIHwgICAgNSArKwogc3JjL29wZW52cG4vb3B0 aW9ucy5jIHwgICAxNiArKysrKy0tCiBzcmMvb3BlbnZwbi9yb3V0ZS5jICAgfCAgIDE2ICsr KysrKystCiBzcmMvb3BlbnZwbi9zb2NrZXQuYyAgfCAgIDE0ICsrKysrKy0KIHNyYy9vcGVu dnBuL3NzbC5jICAgICB8ICAgIDIgKwogc3JjL29wZW52cG4vc3lzaGVhZC5oIHwgICAgMiAr LQogc3JjL29wZW52cG4vdHVuLmMgICAgIHwgICA1MSArKysrKysrKysrKysrKysrKysrKysr KystCiBzcmMvb3BlbnZwbi90dW4uaCAgICAgfCAgIDIyICsrKysrKysrKystCiAxMiBmaWxl cyBjaGFuZ2VkLCAyMjggaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL29wZW52cG4vZXJyb3IuYyBiL3NyYy9vcGVudnBuL2Vycm9yLmMKaW5kZXgg ZDZhZDYzOS4uZTJlMjRiMSAxMDA2NDQKLS0tIGEvc3JjL29wZW52cG4vZXJyb3IuYworKysg Yi9zcmMvb3BlbnZwbi9lcnJvci5jCkBAIC0zMTIsNyArMzEyLDcgQEAgdm9pZCB4X21zZyAo Y29uc3QgdW5zaWduZWQgaW50IGZsYWdzLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKIAl9 CiAgICAgfQogCi0gIGlmICghKGZsYWdzICYgTV9NU0dfVklSVF9PVVQpKQorICBpZiAoIShm bGFncyAmIE1fTVNHX1ZJUlRfT1VUKSApCiAgICAgewogICAgICAgaWYgKHVzZV9zeXNsb2cg JiYgIXN0ZF9yZWRpciAmJiAhZm9ya2VkKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9vcGVudnBu L2V2ZW50LmMgYi9zcmMvb3BlbnZwbi9ldmVudC5jCmluZGV4IDJhMTNlMWMuLjA0NjNkOTgg MTAwNjQ0Ci0tLSBhL3NyYy9vcGVudnBuL2V2ZW50LmMKKysrIGIvc3JjL29wZW52cG4vZXZl bnQuYwpAQCAtNzUzLDYgKzc1MywxMCBAQCBwb193YWl0IChzdHJ1Y3QgZXZlbnRfc2V0ICpl cywgY29uc3Qgc3RydWN0IHRpbWV2YWwgKnR2LCBzdHJ1Y3QgZXZlbnRfc2V0X3JldHVybgog CSAgICAgICsrb3V0OwogCSAgICAgICsrajsKIAkgICAgfQorICAgICAgZWxzZSBpZihwZmRw LT5yZXZlbnRzPT0weDAwMjApIAorICAgICAgICB7CisgICAgICAgICAgICBvcGVudnBuX2V4 aXQgKE9QRU5WUE5fRVhJVF9TVEFUVVNfRVJST1IpOworICAgICAgICB9CiAJICBlbHNlIGlm IChwZmRwLT5yZXZlbnRzKQogCSAgICB7CiAJICAgICAgbXNnIChEX0VWRU5UX0VSUk9SUywg IkVycm9yOiBwb2xsOiB1bmtub3duIHJldmVudHM9MHglMDR4IiwgKHVuc2lnbmVkIGludClw ZmRwLT5yZXZlbnRzKTsKZGlmZiAtLWdpdCBhL3NyYy9vcGVudnBuL2luaXQuYyBiL3NyYy9v cGVudnBuL2luaXQuYwppbmRleCA2MWNlZDVkLi4xN2U0ZjRhIDEwMDY0NAotLS0gYS9zcmMv b3BlbnZwbi9pbml0LmMKKysrIGIvc3JjL29wZW52cG4vaW5pdC5jCkBAIC0xNDc4LDYgKzE0 NzgsMTMgQEAgZG9fb3Blbl90dW4gKHN0cnVjdCBjb250ZXh0ICpjKQogCSAgZG9faWZjb25m aWcgKGMtPmMxLnR1bnRhcCwgZ3Vlc3MsIFRVTl9NVFVfU0laRSAoJmMtPmMyLmZyYW1lKSwg Yy0+YzIuZXMpOwogCX0KIAorICAgICAgICAvKiBwb3NzaWJseSBhZGQgcm91dGVzICovCisg ICAgICAgIGlmKGlmY29uZmlnX29yZGVyKCkgPT0gUk9VVEVfQkVGT1JFX1RVTikgeworICAg ICAgICAgICAgaWYgKCFjLT5vcHRpb25zLnJvdXRlX2RlbGF5X2RlZmluZWQpCisgICAgICAg ICAgICAgICAgZG9fcm91dGUgKCZjLT5vcHRpb25zLCBjLT5jMS5yb3V0ZV9saXN0LCBjLT5j MS5yb3V0ZV9pcHY2X2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGMtPmMxLnR1 bnRhcCwgYy0+cGx1Z2lucywgYy0+YzIuZXMpOworICAgICAgICB9CisKICAgICAgIC8qIG9w ZW4gdGhlIHR1biBkZXZpY2UgKi8KICAgICAgIG9wZW5fdHVuIChjLT5vcHRpb25zLmRldiwg Yy0+b3B0aW9ucy5kZXZfdHlwZSwgYy0+b3B0aW9ucy5kZXZfbm9kZSwKIAkJYy0+YzEudHVu dGFwKTsKQEAgLTE1MDksMTAgKzE1MTYsMTEgQEAgZG9fb3Blbl90dW4gKHN0cnVjdCBjb250 ZXh0ICpjKQogCQkgICBjLT5jMi5lcyk7CiAKICAgICAgIC8qIHBvc3NpYmx5IGFkZCByb3V0 ZXMgKi8KKyAgICAgICAgaWYoaWZjb25maWdfb3JkZXIoKSA9PSBST1VURV9BRlRFUl9UVU4p IHsKICAgICAgIGlmICghYy0+b3B0aW9ucy5yb3V0ZV9kZWxheV9kZWZpbmVkKQogCWRvX3Jv dXRlICgmYy0+b3B0aW9ucywgYy0+YzEucm91dGVfbGlzdCwgYy0+YzEucm91dGVfaXB2Nl9s aXN0LAogCQkgIGMtPmMxLnR1bnRhcCwgYy0+cGx1Z2lucywgYy0+YzIuZXMpOwotCisgICAg ICAgIH0KICAgICAgIC8qCiAgICAgICAgKiBEaWQgdHVuL3RhcCBkcml2ZXIgZ2l2ZSB1cyBh biBNVFU/CiAgICAgICAgKi8KQEAgLTI0NjcsNyArMjQ3NSw3IEBAIGRvX29wdGlvbl93YXJu aW5ncyAoc3RydWN0IGNvbnRleHQgKmMpCiB7CiAgIGNvbnN0IHN0cnVjdCBvcHRpb25zICpv ID0gJmMtPm9wdGlvbnM7CiAKLSNpZiAxIC8qIEpZRklYTUUgLS0gcG9ydCB3YXJuaW5nICov CisjaWYgMCAvKiBKWUZJWE1FIC0tIHBvcnQgd2FybmluZyAqLwogICBpZiAoIW8tPmNlLnBv cnRfb3B0aW9uX3VzZWQgJiYgKG8tPmNlLmxvY2FsX3BvcnQgPT0gT1BFTlZQTl9QT1JUICYm IG8tPmNlLnJlbW90ZV9wb3J0ID09IE9QRU5WUE5fUE9SVCkpCiAgICAgbXNnIChNX1dBUk4s ICJJTVBPUlRBTlQ6IE9wZW5WUE4ncyBkZWZhdWx0IHBvcnQgbnVtYmVyIGlzIG5vdyAlZCwg YmFzZWQgb24gYW4gb2ZmaWNpYWwgcG9ydCBudW1iZXIgYXNzaWdubWVudCBieSBJQU5BLiAg T3BlblZQTiAyLjAtYmV0YTE2IGFuZCBlYXJsaWVyIHVzZWQgNTAwMCBhcyB0aGUgZGVmYXVs dCBwb3J0LiIsCiAJIE9QRU5WUE5fUE9SVCk7CmRpZmYgLS1naXQgYS9zcmMvb3BlbnZwbi9t YW5hZ2UuYyBiL3NyYy9vcGVudnBuL21hbmFnZS5jCmluZGV4IDFkZGRkNDEuLmY3Y2E4ZTEg MTAwNjQ0Ci0tLSBhL3NyYy9vcGVudnBuL21hbmFnZS5jCisrKyBiL3NyYy9vcGVudnBuL21h bmFnZS5jCkBAIC01OCw2ICs1OCw5IEBACiAjZGVmaW5lIE1BTkFHRU1FTlRfRUNIT19GTEFH UyAwCiAjZW5kaWYKIAorI2luY2x1ZGUgPGFuZHJvaWQvbG9nLmg+CisKKwogLyogdGFnIGZv ciBibGFuayB1c2VybmFtZS9wYXNzd29yZCAqLwogc3RhdGljIGNvbnN0IGNoYXIgYmxhbmtf dXBbXSA9ICJbW0JMQU5LXV0iOwogCkBAIC02Niw2ICs2OSw5IEBAIHN0cnVjdCBtYW5hZ2Vt ZW50ICptYW5hZ2VtZW50OyAvKiBHTE9CQUwgKi8KIC8qIHN0YXRpYyBmb3J3YXJkIGRlY2xh cmF0aW9ucyAqLwogc3RhdGljIHZvaWQgbWFuX291dHB1dF9zdGFuZGFsb25lIChzdHJ1Y3Qg bWFuYWdlbWVudCAqbWFuLCB2b2xhdGlsZSBpbnQgKnNpZ25hbF9yZWNlaXZlZCk7CiBzdGF0 aWMgdm9pZCBtYW5fcmVzZXRfY2xpZW50X3NvY2tldCAoc3RydWN0IG1hbmFnZW1lbnQgKm1h biwgY29uc3QgYm9vbCBleGl0aW5nKTsKK3N0YXRpYyBzc2l6ZV90IHdyaXRlX2ZkIChpbnQg ZmQsIHZvaWQgKnB0ciwgc2l6ZV90IG5ieXRlcywgaW50IGZsYWdzLCBpbnQgc2VuZGZkKTsK K3N0YXRpYyBzc2l6ZV90IHJlYWRfZmQoaW50IGZkLCB2b2lkICpwdHIsIHNpemVfdCBuYnl0 ZXMsIGludCBmbGFncywgaW50ICpyZWN2ZmQpOworCiAKIHN0YXRpYyB2b2lkCiBtYW5faGVs cCAoKQpAQCAtMTgwNSw2ICsxODExLDcgQEAgbWFuX2lvX2Vycm9yIChzdHJ1Y3QgbWFuYWdl bWVudCAqbWFuLCBjb25zdCBjaGFyICpwcmVmaXgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQog CisKIHN0YXRpYyBpbnQKIG1hbl9yZWFkIChzdHJ1Y3QgbWFuYWdlbWVudCAqbWFuKQogewpA QCAtMTgxMyw4ICsxODIwLDE5IEBAIG1hbl9yZWFkIChzdHJ1Y3QgbWFuYWdlbWVudCAqbWFu KQogICAgKi8KICAgdW5zaWduZWQgY2hhciBidWZbMjU2XTsKICAgaW50IGxlbiA9IDA7Cisg IGludCBmZCA9IC0xOwogCisjaWZkZWYgVEFSR0VUX0FORFJPSUQKKyAgICBsZW4gPSByZWFk X2ZkIChtYW4tPmNvbm5lY3Rpb24uc2RfY2xpLCBidWYsIHNpemVvZiAoYnVmKSwgTVNHX05P U0lHTkFMLCAmZmQpOworICAgIF9fYW5kcm9pZF9sb2dfcHJpbnQoQU5EUk9JRF9MT0dfREVC VUcsIm9wZW52cG4tZGJnIiwicmVhZF9mZCAlZCAlZCIsIGxlbiwgZmQpOworICAgIGlmKGZk ID49IDApIHsKKyAgICAgICAgbWFuLT5jb25uZWN0aW9uLmxhc3RmZHJlY2VpdmVkID0gZmQ7 CisgICAgICAgIGlmKGxlbiA9PSAwKSAvLyBObyBkYXRhIG1lc3NhZ2UgYnV0IGEgZmQsIHJl dHVybiB3aXRob3V0IHJlc2V0dGluZyBzb2NrZXQuLi4KKyAgICAgICAgICAgIHJldHVybiAw OworICAgIH0KKyNlbHNlCiAgIGxlbiA9IHJlY3YgKG1hbi0+Y29ubmVjdGlvbi5zZF9jbGks IGJ1Ziwgc2l6ZW9mIChidWYpLCBNU0dfTk9TSUdOQUwpOworI2VuZGlmCiAgIGlmIChsZW4g PT0gMCkKICAgICB7CiAgICAgICBtYW5fcmVzZXRfY2xpZW50X3NvY2tldCAobWFuLCBmYWxz ZSk7CkBAIC0xODkxLDYgKzE5MDksMTIgQEAgbWFuX3dyaXRlIChzdHJ1Y3QgbWFuYWdlbWVu dCAqbWFuKQogICBpZiAoYnVmICYmIEJMRU4gKGJ1ZikpCiAgICAgewogICAgICAgY29uc3Qg aW50IGxlbiA9IG1pbl9pbnQgKHNpemVfaGludCwgQkxFTiAoYnVmKSk7CisjaWZkZWYgVEFS R0VUX0FORFJPSUQKKyAgICAgICAgaWYgKG1hbi0+Y29ubmVjdGlvbi5mZHRvc2VuZCA+IDAp IHsKKyAgICAgICAgICAgIHNlbnQgPSB3cml0ZV9mZCAobWFuLT5jb25uZWN0aW9uLnNkX2Ns aSwgQlBUUiAoYnVmKSwgbGVuLCBNU0dfTk9TSUdOQUwsbWFuLT5jb25uZWN0aW9uLmZkdG9z ZW5kKTsKKyAgICAgICAgICAgIG1hbi0+Y29ubmVjdGlvbi5mZHRvc2VuZCA9IC0xOworICAg ICAgICB9IGVsc2UKKyNlbmRpZgogICAgICAgc2VudCA9IHNlbmQgKG1hbi0+Y29ubmVjdGlv bi5zZF9jbGksIEJQVFIgKGJ1ZiksIGxlbiwgTVNHX05PU0lHTkFMKTsKICAgICAgIGlmIChz ZW50ID49IDApCiAJewpAQCAtMjg4Niw3ICsyOTEwLDcgQEAgbWFuYWdlbWVudF9ldmVudF9s b29wX25fc2Vjb25kcyAoc3RydWN0IG1hbmFnZW1lbnQgKm1hbiwgaW50IHNlYykKICAqIEdl dCBhIHVzZXJuYW1lL3Bhc3N3b3JkIGZyb20gbWFuYWdlbWVudCBjaGFubmVsIGluIHN0YW5k YWxvbmUgbW9kZS4KICAqLwogYm9vbAotbWFuYWdlbWVudF9xdWVyeV91c2VyX3Bhc3MgKHN0 cnVjdCBtYW5hZ2VtZW50ICptYW4sCisgICAgbWFuYWdlbWVudF9xdWVyeV91c2VyX3Bhc3Mg KHN0cnVjdCBtYW5hZ2VtZW50ICptYW4sCiAJCQkgICAgc3RydWN0IHVzZXJfcGFzcyAqdXAs CiAJCQkgICAgY29uc3QgY2hhciAqdHlwZSwKIAkJCSAgICBjb25zdCB1bnNpZ25lZCBpbnQg ZmxhZ3MsCkBAIC0zMDg0LDYgKzMxMDgsNzkgQEAgbWFuYWdlbWVudF9xdWVyeV9yc2Ffc2ln IChzdHJ1Y3QgbWFuYWdlbWVudCAqbWFuLAogCiAjZW5kaWYKIAorI2lmZGVmIFRBUkdFVF9B TkRST0lECitzdGF0aWMgc3NpemVfdCB3cml0ZV9mZCAoaW50IGZkLCB2b2lkICpwdHIsIHNp emVfdCBuYnl0ZXMsIGludCBmbGFncywgaW50IHNlbmRmZCkKK3sKKyAgICBzdHJ1Y3QgbXNn aGRyIG1zZzsKKyAgICBzdHJ1Y3QgaW92ZWMgaW92WzFdOworICAgIAorICAgIHVuaW9uIHsK KyAgICAgICAgc3RydWN0IGNtc2doZHIgY207CisgICAgICAgIGNoYXIgICAgY29udHJvbFtD TVNHX1NQQUNFKHNpemVvZihpbnQpKV07CisgICAgfSBjb250cm9sX3VuOworICAgIHN0cnVj dCBjbXNnaGRyICpjbXB0cjsKKyAgICAKKyAgICBtc2cubXNnX2NvbnRyb2wgPSBjb250cm9s X3VuLmNvbnRyb2w7CisgICAgbXNnLm1zZ19jb250cm9sbGVuID0gc2l6ZW9mKGNvbnRyb2xf dW4uY29udHJvbCk7CisgICAgCisgICAgY21wdHIgPSBDTVNHX0ZJUlNUSERSKCZtc2cpOwor ICAgIGNtcHRyLT5jbXNnX2xlbiA9IENNU0dfTEVOKHNpemVvZihpbnQpKTsKKyAgICBjbXB0 ci0+Y21zZ19sZXZlbCA9IFNPTF9TT0NLRVQ7CisgICAgY21wdHItPmNtc2dfdHlwZSA9IFND TV9SSUdIVFM7CisgICAgKigoaW50ICopIENNU0dfREFUQShjbXB0cikpID0gc2VuZGZkOwor ICAgIAorICAgIG1zZy5tc2dfbmFtZSA9IE5VTEw7CisgICAgbXNnLm1zZ19uYW1lbGVuID0g MDsKKyAgICAKKyAgICBpb3ZbMF0uaW92X2Jhc2UgPSBwdHI7CisgICAgaW92WzBdLmlvdl9s ZW4gPSBuYnl0ZXM7CisgICAgbXNnLm1zZ19pb3YgPSBpb3Y7CisgICAgbXNnLm1zZ19pb3Zs ZW4gPSAxOworICAgIAorICAgIHJldHVybiAoc2VuZG1zZyhmZCwgJm1zZywgZmxhZ3MpKTsK K30KKworc3RhdGljIHNzaXplX3QgcmVhZF9mZChpbnQgZmQsIHZvaWQgKnB0ciwgc2l6ZV90 IG5ieXRlcywgaW50IGZsYWdzLCBpbnQgKnJlY3ZmZCkKK3sKKyAgICBzdHJ1Y3QgbXNnaGRy IG1zZ2hkcjsKKyAgICBzdHJ1Y3QgaW92ZWMgaW92WzFdOworICAgIHNzaXplX3QgbjsKKyAg ICAKKyAgICB1bmlvbiB7CisgICAgICAgIHN0cnVjdCBjbXNnaGRyIGNtOworICAgICAgICBj aGFyICAgICBjb250cm9sW0NNU0dfU1BBQ0Uoc2l6ZW9mIChpbnQpKV07CisgICAgfSBjb250 cm9sX3VuOworICAgIHN0cnVjdCBjbXNnaGRyICAqY21wdHI7CisgICAgCisgICAgbXNnaGRy Lm1zZ19jb250cm9sICA9IGNvbnRyb2xfdW4uY29udHJvbDsKKyAgICBtc2doZHIubXNnX2Nv bnRyb2xsZW4gPSBzaXplb2YoY29udHJvbF91bi5jb250cm9sKTsKKyAgICAKKyAgICBtc2do ZHIubXNnX25hbWUgPSBOVUxMOworICAgIG1zZ2hkci5tc2dfbmFtZWxlbiA9IDA7CisgICAg CisgICAgaW92WzBdLmlvdl9iYXNlID0gcHRyOworICAgIGlvdlswXS5pb3ZfbGVuID0gbmJ5 dGVzOworICAgIG1zZ2hkci5tc2dfaW92ID0gaW92OworICAgIG1zZ2hkci5tc2dfaW92bGVu ID0gMTsKKyAgICAKKyAgICBpZiAoIChuID0gcmVjdm1zZyhmZCwgJm1zZ2hkciwgZmxhZ3Mp KSA8PSAwKQorICAgICAgICByZXR1cm4gKG4pOworICAgIAorICAgIGlmICggKGNtcHRyID0g Q01TR19GSVJTVEhEUigmbXNnaGRyKSkgIT0gTlVMTCAmJgorICAgICAgICBjbXB0ci0+Y21z Z19sZW4gPT0gQ01TR19MRU4oc2l6ZW9mKGludCkpKSB7CisgICAgICAgIGlmIChjbXB0ci0+ Y21zZ19sZXZlbCAhPSBTT0xfU09DS0VUKQorICAgICAgICAgICAgbXNnIChNX0VSUiwgImNv bnRyb2wgbGV2ZWwgIT0gU09MX1NPQ0tFVCIpOworICAgICAgICBpZiAoY21wdHItPmNtc2df dHlwZSAhPSBTQ01fUklHSFRTKQorICAgICAgICAgICAgbXNnIChNX0VSUiwgImNvbnRyb2wg dHlwZSAhPSBTQ01fUklHSFRTIik7CisgICAgICAgICpyZWN2ZmQgPSAqKChpbnQgKikgQ01T R19EQVRBKGNtcHRyKSk7CisgICAgfSBlbHNlCisgICAgICAgICpyZWN2ZmQgPSAtMTsgICAg ICAgICAgIC8qIGRlc2NyaXB0b3Igd2FzIG5vdCBwYXNzZWQgKi8KKyAgICAKKyAgICByZXR1 cm4gKG4pOworfQorI2VuZGlmCisKKwogLyoKICAqIFJldHVybiB0cnVlIGlmIG1hbmFnZW1l bnRfaG9sZCgpIHdvdWxkIGJsb2NrCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9vcGVudnBuL21h bmFnZS5oIGIvc3JjL29wZW52cG4vbWFuYWdlLmgKaW5kZXggZjY4MWY4ZC4uYzdmZmI0MiAx MDA2NDQKLS0tIGEvc3JjL29wZW52cG4vbWFuYWdlLmgKKysrIGIvc3JjL29wZW52cG4vbWFu YWdlLmgKQEAgLTMwMyw2ICszMDMsMTEgQEAgc3RydWN0IG1hbl9jb25uZWN0aW9uIHsKICNp ZmRlZiBNQU5BR01FTlRfRVhURVJOQUxfS0VZCiAgIHN0cnVjdCBidWZmZXJfbGlzdCAqcnNh X3NpZzsKICNlbmRpZgorI2lmZGVmIFRBUkdFVF9BTkRST0lECisgICAgaW50IGZkdG9zZW5k OworICAgIGludCBsYXN0ZmRyZWNlaXZlZDsKKyNlbmRpZgorICAgIAogfTsKIAogc3RydWN0 IG1hbmFnZW1lbnQKZGlmZiAtLWdpdCBhL3NyYy9vcGVudnBuL29wdGlvbnMuYyBiL3NyYy9v cGVudnBuL29wdGlvbnMuYwppbmRleCA3NzY5NjI1Li5hMmQwZjZlIDEwMDY0NAotLS0gYS9z cmMvb3BlbnZwbi9vcHRpb25zLmMKKysrIGIvc3JjL29wZW52cG4vb3B0aW9ucy5jCkBAIC0x MTQwLDcgKzExNDAsOSBAQCBzaG93X3R1bnRhcF9vcHRpb25zIChjb25zdCBzdHJ1Y3QgdHVu dGFwX29wdGlvbnMgKm8pCiB9CiAKICNlbmRpZgorI2VuZGlmCiAKKyNpZiBkZWZpbmVkKFdJ TjMyKSB8fCBkZWZpbmVkKFRBUkdFVF9BTkRST0lEKSAKIHN0YXRpYyB2b2lkCiBkaGNwX29w dGlvbl9hZGRyZXNzX3BhcnNlIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpwYXJt LCBpbl9hZGRyX3QgKmFycmF5LCBpbnQgKmxlbiwgaW50IG1zZ2xldmVsKQogewpAQCAtNTQ2 OSw2ICs1NDcxLDExIEBAIGFkZF9vcHRpb24gKHN0cnVjdCBvcHRpb25zICpvcHRpb25zLAog ICAgICAgb3B0aW9ucy0+b2NjID0gZmFsc2U7CiAgICAgfQogI2VuZGlmCisgIGVsc2UgaWYg KHN0cmVxIChwWzBdLCAidG1wLWRpciIpICYmIHBbMV0pCisgIHsKKyAgICAgIFZFUklGWV9Q RVJNSVNTSU9OIChPUFRfUF9HRU5FUkFMKTsKKyAgICAgIG9wdGlvbnMtPnRtcF9kaXIgPSBw WzFdOworICB9CiAjaWYgUDJNUAogI2lmIFAyTVBfU0VSVkVSCiAgIGVsc2UgaWYgKHN0cmVx IChwWzBdLCAic2VydmVyIikgJiYgcFsxXSAmJiBwWzJdKQpAQCAtNTc1MCwxMSArNTc1Nyw2 IEBAIGFkZF9vcHRpb24gKHN0cnVjdCBvcHRpb25zICpvcHRpb25zLAogICAgICAgd2Fybl9t dWx0aXBsZV9zY3JpcHQgKG9wdGlvbnMtPmxlYXJuX2FkZHJlc3Nfc2NyaXB0LCAibGVhcm4t YWRkcmVzcyIpOwogICAgICAgb3B0aW9ucy0+bGVhcm5fYWRkcmVzc19zY3JpcHQgPSBwWzFd OwogICAgIH0KLSAgZWxzZSBpZiAoc3RyZXEgKHBbMF0sICJ0bXAtZGlyIikgJiYgcFsxXSkK LSAgICB7Ci0gICAgICBWRVJJRllfUEVSTUlTU0lPTiAoT1BUX1BfR0VORVJBTCk7Ci0gICAg ICBvcHRpb25zLT50bXBfZGlyID0gcFsxXTsKLSAgICB9CiAgIGVsc2UgaWYgKHN0cmVxIChw WzBdLCAiY2xpZW50LWNvbmZpZy1kaXIiKSAmJiBwWzFdKQogICAgIHsKICAgICAgIFZFUklG WV9QRVJNSVNTSU9OIChPUFRfUF9HRU5FUkFMKTsKQEAgLTYwNjQsNiArNjA2Niw4IEBAIGFk ZF9vcHRpb24gKHN0cnVjdCBvcHRpb25zICpvcHRpb25zLAogICAgICAgdG8tPmlwX3dpbjMy X3R5cGUgPSBpbmRleDsKICAgICAgIHRvLT5pcF93aW4zMl9kZWZpbmVkID0gdHJ1ZTsgCiAg ICAgfQorI2VuZGlmCisjaWYgZGVmaW5lZChXSU4zMikgfHwgZGVmaW5lZChUQVJHRVRfQU5E Uk9JRCkKICAgZWxzZSBpZiAoc3RyZXEgKHBbMF0sICJkaGNwLW9wdGlvbiIpICYmIHBbMV0p CiAgICAgewogICAgICAgc3RydWN0IHR1bnRhcF9vcHRpb25zICpvID0gJm9wdGlvbnMtPnR1 bnRhcF9vcHRpb25zOwpAQCAtNjExNSw2ICs2MTE5LDggQEAgYWRkX29wdGlvbiAoc3RydWN0 IG9wdGlvbnMgKm9wdGlvbnMsCiAJfQogICAgICAgby0+ZGhjcF9vcHRpb25zID0gdHJ1ZTsK ICAgICB9CisjZW5kaWYKKyNpZmRlZiBXSU4zMgogICBlbHNlIGlmIChzdHJlcSAocFswXSwg InNob3ctYWRhcHRlcnMiKSkKICAgICB7CiAgICAgICBWRVJJRllfUEVSTUlTU0lPTiAoT1BU X1BfR0VORVJBTCk7CmRpZmYgLS1naXQgYS9zcmMvb3BlbnZwbi9yb3V0ZS5jIGIvc3JjL29w ZW52cG4vcm91dGUuYwppbmRleCA3YzI1Yzc3Li45OTY3NGUyIDEwMDY0NAotLS0gYS9zcmMv b3BlbnZwbi9yb3V0ZS5jCisrKyBiL3NyYy9vcGVudnBuL3JvdXRlLmMKQEAgLTEzNDQsNiAr MTM0NCwxNyBAQCBhZGRfcm91dGUgKHN0cnVjdCByb3V0ZSAqciwKICAgYXJndl9tc2cgKERf Uk9VVEUsICZhcmd2KTsKICAgc3RhdHVzID0gb3BlbnZwbl9leGVjdmVfY2hlY2sgKCZhcmd2 LCBlcywgMCwgIkVSUk9SOiBMaW51eCByb3V0ZSBhZGQgY29tbWFuZCBmYWlsZWQiKTsKIAor I2VsaWYgZGVmaW5lZCAoVEFSR0VUX0FORFJPSUQpCisKKyAgICBzdHJ1Y3QgdXNlcl9wYXNz IHVwOyAgICAKKyAgICBzdHJ1Y3QgYnVmZmVyIG91dCA9IGFsbG9jX2J1Zl9nYyAoNjQsICZn Yyk7CisKKyAgICBidWZfcHJpbnRmICgmb3V0LCAiJXMgJXMiLCBuZXR3b3JrLCBuZXRtYXNr KTsKKworICAgIHN0cmNweSh1cC51c2VybmFtZSwgYnVmX2JwdHIoJm91dCkpOworICAgIG1h bmFnZW1lbnRfcXVlcnlfdXNlcl9wYXNzKG1hbmFnZW1lbnQsICZ1cCAsICJST1VURSIsIEdF VF9VU0VSX1BBU1NfTkVFRF9PSywodm9pZCopIDApOworCisKICNlbGlmIGRlZmluZWQgKFdJ TjMyKQogICB7CiAgICAgRFdPUkQgYWkgPSBUVU5fQURBUFRFUl9JTkRFWF9JTlZBTElEOwpA QCAtMTg0Nyw3ICsxODU4LDggQEAgZGVsZXRlX3JvdXRlIChzdHJ1Y3Qgcm91dGUgKnIsCiAK ICAgYXJndl9tc2cgKERfUk9VVEUsICZhcmd2KTsKICAgb3BlbnZwbl9leGVjdmVfY2hlY2sg KCZhcmd2LCBlcywgMCwgIkVSUk9SOiBPcGVuQlNEL05ldEJTRCByb3V0ZSBkZWxldGUgY29t bWFuZCBmYWlsZWQiKTsKLQorI2VsaWYgZGVmaW5lZChUQVJHRVRfQU5EUk9JRCkKKyAgbXNn IChNX05PTkZBVEFMLCAiU29ycnksIGRlbGV0aW5nIHJvdXRlcyBvbiBBbmRyb2lkIGlzIG5v dCBwb3NzaWJsZS4gVGhlIFZwblNlcnZpY2UgQVBJIGFsbG93cyByb3V0ZXMgdG8gYmUgc2V0 IG9uIGNvbm5lY3Qgb25seS4iKTsKICNlbHNlCiAgIG1zZyAoTV9GQVRBTCwgIlNvcnJ5LCBi dXQgSSBkb24ndCBrbm93IGhvdyB0byBkbyAncm91dGUnIGNvbW1hbmRzIG9uIHRoaXMgb3Bl cmF0aW5nIHN5c3RlbS4gIFRyeSBwdXR0aW5nIHlvdXIgcm91dGVzIGluIGEgLS1yb3V0ZS11 cCBzY3JpcHQiKTsKICNlbmRpZgpAQCAtMjM3MSw3ICsyMzgzLDcgQEAgc2hvd19yb3V0ZXMg KGludCBtc2dsZXYpCiAgIGdjX2ZyZWUgKCZnYyk7CiB9CiAKLSNlbGlmIGRlZmluZWQoVEFS R0VUX0xJTlVYKQorI2VsaWYgZGVmaW5lZChUQVJHRVRfTElOVVgpIHx8IGRlZmluZWQoVEFS R0VUX0FORFJPSUQpCiAKIHZvaWQKIGdldF9kZWZhdWx0X2dhdGV3YXkgKHN0cnVjdCByb3V0 ZV9nYXRld2F5X2luZm8gKnJnaSkKZGlmZiAtLWdpdCBhL3NyYy9vcGVudnBuL3NvY2tldC5j IGIvc3JjL29wZW52cG4vc29ja2V0LmMKaW5kZXggNmIxZjhkMi4uYjkyYzI4MiAxMDA2NDQK LS0tIGEvc3JjL29wZW52cG4vc29ja2V0LmMKKysrIGIvc3JjL29wZW52cG4vc29ja2V0LmMK QEAgLTM4LDYgKzM4LDggQEAKICNpbmNsdWRlICJwcy5oIgogI2luY2x1ZGUgIm1hbmFnZS5o IgogI2luY2x1ZGUgIm1pc2MuaCIKKyNpbmNsdWRlICJtYW5hZ2UuaCIKKwogCiAjaW5jbHVk ZSAibWVtZGJnLmgiCiAKQEAgLTg1Nyw3ICs4NTksNiBAQCBjcmVhdGVfc29ja2V0X3RjcCAo dm9pZCkKICAgICAgIG1zZyAoTV9TT0NLRVJSLCAiVENQOiBDYW5ub3Qgc2V0c29ja29wdCBT T19MSU5HRVIgb24gVENQIHNvY2tldCIpOwogICB9CiAjZW5kaWYKLQogICByZXR1cm4gc2Q7 CiB9CiAKQEAgLTg4NSw2ICs4ODYsNyBAQCBjcmVhdGVfc29ja2V0X3VkcCAoY29uc3QgdW5z aWduZWQgaW50IGZsYWdzKQogI2VuZGlmCiAgICAgfQogI2VuZGlmCisKICAgcmV0dXJuIHNk OwogfQogCkBAIC05MDQsNiArOTA2LDcgQEAgY3JlYXRlX3NvY2tldF91ZHA2IChjb25zdCB1 bnNpZ25lZCBpbnQgZmxhZ3MpCiAJbXNnKE1fU09DS0VSUiwgIlVEUDogZmFpbGVkIHNldHNv Y2tvcHQgZm9yIElQVjZfUkVDVlBLVElORk8iKTsKICAgICB9CiAjZW5kaWYKKwogICByZXR1 cm4gc2Q7CiB9CiAKQEAgLTk1OSw2ICs5NjIsMTUgQEAgY3JlYXRlX3NvY2tldCAoc3RydWN0 IGxpbmtfc29ja2V0ICpzb2NrKQogICAgIHsKICAgICAgIEFTU0VSVCAoMCk7CiAgICAgfQor I2lmZGVmIFRBUkdFVF9BTkRST0lECisgICAgc3RydWN0IHVzZXJfcGFzcyB1cDsKKyAgICBz dHJjcHkodXAudXNlcm5hbWUgLF9fZnVuY19fKTsKKyAgICBtYW5hZ2VtZW50LT5jb25uZWN0 aW9uLmZkdG9zZW5kID0gc29jay0+c2Q7CisgICAgbWFuYWdlbWVudF9xdWVyeV91c2VyX3Bh c3MobWFuYWdlbWVudCwgJnVwICwgIlBST1RFQ1RGRCIsIEdFVF9VU0VSX1BBU1NfTkVFRF9P Sywodm9pZCopIDApOworCisKKyNlbmRpZgorICAgIAogfQogCiAvKgpkaWZmIC0tZ2l0IGEv c3JjL29wZW52cG4vc3NsLmMgYi9zcmMvb3BlbnZwbi9zc2wuYwppbmRleCAxOTUxMmMwLi45 ZjU3MGI5IDEwMDY0NAotLS0gYS9zcmMvb3BlbnZwbi9zc2wuYworKysgYi9zcmMvb3BlbnZw bi9zc2wuYwpAQCAtMTY1MCw2ICsxNjUwLDggQEAgcHVzaF9wZWVyX2luZm8oc3RydWN0IGJ1 ZmZlciAqYnVmLCBzdHJ1Y3QgdGxzX3Nlc3Npb24gKnNlc3Npb24pCiAgICAgICBidWZfcHJp bnRmICgmb3V0LCAiSVZfUExBVD1uZXRic2RcbiIpOwogI2VsaWYgZGVmaW5lZChUQVJHRVRf RlJFRUJTRCkKICAgICAgIGJ1Zl9wcmludGYgKCZvdXQsICJJVl9QTEFUPWZyZWVic2RcbiIp OworI2VsaWYgZGVmaW5lZChUQVJHRVRfQU5EUk9JRCkKKyAgICAgIGJ1Zl9wcmludGYoJm91 dCwgIklWX1BMQVQ9YW5kcm9pZFxuIik7CiAjZWxpZiBkZWZpbmVkKFdJTjMyKQogICAgICAg YnVmX3ByaW50ZiAoJm91dCwgIklWX1BMQVQ9d2luXG4iKTsKICNlbmRpZgpkaWZmIC0tZ2l0 IGEvc3JjL29wZW52cG4vc3lzaGVhZC5oIGIvc3JjL29wZW52cG4vc3lzaGVhZC5oCmluZGV4 IDMzMzc3NjQuLjhjZTQwZjcgMTAwNjQ0Ci0tLSBhL3NyYy9vcGVudnBuL3N5c2hlYWQuaAor KysgYi9zcmMvb3BlbnZwbi9zeXNoZWFkLmgKQEAgLTIxMiw3ICsyMTIsNyBAQAogI2luY2x1 ZGUgPG5ldC9pZl90YXAuaD4KICNlbmRpZgogCi0jaWZkZWYgVEFSR0VUX0xJTlVYCisjaWYg ZGVmaW5lZChUQVJHRVRfTElOVVgpIHx8IGRlZmluZWQgKFRBUkdFVF9BTkRST0lEKQogCiAj aWYgZGVmaW5lZChIQVZFX05FVElORVRfSUZfRVRIRVJfSCkKICNpbmNsdWRlIDxuZXRpbmV0 L2lmX2V0aGVyLmg+CmRpZmYgLS1naXQgYS9zcmMvb3BlbnZwbi90dW4uYyBiL3NyYy9vcGVu dnBuL3R1bi5jCmluZGV4IDYzMzE1MGYuLjE1OGNkNjEgMTAwNjQ0Ci0tLSBhL3NyYy9vcGVu dnBuL3R1bi5jCisrKyBiL3NyYy9vcGVudnBuL3R1bi5jCkBAIC00Niw4ICs0Niw5IEBACiAj aW5jbHVkZSAibWFuYWdlLmgiCiAjaW5jbHVkZSAicm91dGUuaCIKICNpbmNsdWRlICJ3aW4z Mi5oIgotCiAjaW5jbHVkZSAibWVtZGJnLmgiCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKIAog I2lmZGVmIFdJTjMyCiAKQEAgLTc2OCw2ICs3NjksMTcgQEAgZG9faWZjb25maWcgKHN0cnVj dCB0dW50YXAgKnR0LAogICAgICAgdHQtPmRpZF9pZmNvbmZpZyA9IHRydWU7CiAKICNlbmRp ZiAvKkVOQUJMRV9JUFJPVVRFKi8KKyNlbGlmIGRlZmluZWQoVEFSR0VUX0FORFJPSUQpCisg ICAgICAgIAorICAgICAgICBzdHJ1Y3QgdXNlcl9wYXNzIHVwOyAgICAKKyAgICAgICAgc3Ry dWN0IGJ1ZmZlciBvdXQgPSBhbGxvY19idWZfZ2MgKDY0LCAmZ2MpOworICAgICAgICAKKyAg ICAgICAgYnVmX3ByaW50ZiAoJm91dCwgIiVzICVzICVkIiwgaWZjb25maWdfbG9jYWwsIGlm Y29uZmlnX3JlbW90ZV9uZXRtYXNrLCB0dW5fbXR1KTsKKyAgICAgICAgCisgICAgICAgIHN0 cmNweSh1cC51c2VybmFtZSwgYnVmX2JwdHIoJm91dCkpOworICAgICAgICBtYW5hZ2VtZW50 X3F1ZXJ5X3VzZXJfcGFzcyhtYW5hZ2VtZW50LCAmdXAgLCAiSUZDT05GSUciLCBHRVRfVVNF Ul9QQVNTX05FRURfT0ssKHZvaWQqKSAwKTsKKyAgICAgICAgCisgICAgICAgIAogI2VsaWYg ZGVmaW5lZChUQVJHRVRfU09MQVJJUykKIAogICAgICAgLyogU29sYXJpcyAyLjYgKGFuZCA3 PykgY2Fubm90IHNldCBhbGwgcGFyYW1ldGVycyBpbiBvbmUgZ28uLi4KQEAgLTEzNjUsNyAr MTM3NywzOSBAQCBjbG9zZV90dW5fZ2VuZXJpYyAoc3RydWN0IHR1bnRhcCAqdHQpCiAKICNl bmRpZgogCi0jaWYgZGVmaW5lZChUQVJHRVRfTElOVVgpCisjaWYgZGVmaW5lZChUQVJHRVRf TElOVVgpIHx8IGRlZmluZWQoVEFSR0VUX0FORFJPSUQpCisKKyNpZiBkZWZpbmVkIChUQVJH RVRfQU5EUk9JRCkKK3ZvaWQKK29wZW5fdHVuIChjb25zdCBjaGFyICpkZXYsIGNvbnN0IGNo YXIgKmRldl90eXBlLCBjb25zdCBjaGFyICpkZXZfbm9kZSwgc3RydWN0IHR1bnRhcCAqdHQp Cit7CisgICAgaW50IGk7CisgICAgc3RydWN0IHVzZXJfcGFzcyB1cDsKKyAgICBzdHJ1Y3Qg Z2NfYXJlbmEgZ2MgPSBnY19uZXcgKCk7CisgICAgCisgICAgZm9yIChpID0gMDsgaSA8IHR0 LT5vcHRpb25zLmRuc19sZW47ICsraSkgeworICAgICAgICBzdHJjcHkodXAudXNlcm5hbWUs IHByaW50X2luX2FkZHJfdCh0dC0+b3B0aW9ucy5kbnNbaV0sIDAsICZnYykpOworICAgICAg ICBtYW5hZ2VtZW50X3F1ZXJ5X3VzZXJfcGFzcyhtYW5hZ2VtZW50LCAmdXAgLCAiRE5TU0VS VkVSIiwgR0VUX1VTRVJfUEFTU19ORUVEX09LLCh2b2lkKikgMCk7CisgICAgfQorCisgICAg aWYodHQtPm9wdGlvbnMuZG9tYWluKSB7CisgICAgICAgIHN0cmNweSh1cC51c2VybmFtZSAs IHR0LT5vcHRpb25zLmRvbWFpbik7CisgICAgICAgIG1hbmFnZW1lbnRfcXVlcnlfdXNlcl9w YXNzKG1hbmFnZW1lbnQsICZ1cCAsICJETlNET01BSU4iLCBHRVRfVVNFUl9QQVNTX05FRURf T0ssKHZvaWQqKSAwKTsKKyAgICB9CisgICAgCisgICAgc3RyY3B5KHVwLnVzZXJuYW1lICwg ZGV2KTsKKyAgICBtYW5hZ2VtZW50X3F1ZXJ5X3VzZXJfcGFzcyhtYW5hZ2VtZW50LCAmdXAg LCAiT1BFTlRVTiIsIEdFVF9VU0VSX1BBU1NfTkVFRF9PSywodm9pZCopIDApOworCisgICAg dHQtPmZkID0gbWFuYWdlbWVudC0+Y29ubmVjdGlvbi5sYXN0ZmRyZWNlaXZlZDsKKyAgICBt YW5hZ2VtZW50LT5jb25uZWN0aW9uLmxhc3RmZHJlY2VpdmVkPS0xOworICAgIAorICAgIGlm KCAodHQtPmZkIDwgMCkgfHwgISAoc3RyY21wKCJvayIsdXAucGFzc3dvcmQpPT0wKSkgewor ICAgICAgICBtc2cgKE1fRVJSLCAiRVJST1I6IENhbm5vdCBvcGVuIFRVTiIpOworICAgIH0K KyAgICBnY19mcmVlICgmZ2MpOworfQorCisjZWxzZQogCiAjaWZkZWYgSEFWRV9MSU5VWF9J Rl9UVU5fSAkvKiBOZXcgZHJpdmVyIHN1cHBvcnQgKi8KIApAQCAtMTQxMSw3ICsxNDU1LDcg QEAgb3Blbl90dW4gKGNvbnN0IGNoYXIgKmRldiwgY29uc3QgY2hhciAqZGV2X3R5cGUsIGNv bnN0IGNoYXIgKmRldl9ub2RlLCBzdHJ1Y3QgdHUKICAgICAgIGlmICghdHQtPmlwdjYpCiAJ aWZyLmlmcl9mbGFncyA9IElGRl9OT19QSTsKIAotI2lmIGRlZmluZWQoSUZGX09ORV9RVUVV RSkgJiYgZGVmaW5lZChTSU9DU0lGVFhRTEVOKQorI2lmIGRlZmluZWQoSUZGX09ORV9RVUVV RSkgJiYgZGVmaW5lZChTSU9DU0lGVFhRTEVOKSAmJiAhZGVmaW5lZChUQVJHRVRfQU5EUk9J RCkKICAgICAgIGlmci5pZnJfZmxhZ3MgfD0gSUZGX09ORV9RVUVVRTsKICNlbmRpZgogCkBA IC0xNTAxLDYgKzE1NDUsNyBAQCBvcGVuX3R1biAoY29uc3QgY2hhciAqZGV2LCBjb25zdCBj aGFyICpkZXZfdHlwZSwgY29uc3QgY2hhciAqZGV2X25vZGUsIHN0cnVjdCB0dQogfQogCiAj ZW5kaWYgLyogSEFWRV9MSU5VWF9JRl9UVU5fSCAqLworI2VuZGlmIC8qIFRBUkdFVF9BTkRS T0lEICovCiAKICNpZmRlZiBFTkFCTEVfRkVBVFVSRV9UVU5fUEVSU0lTVAogCmRpZmYgLS1n aXQgYS9zcmMvb3BlbnZwbi90dW4uaCBiL3NyYy9vcGVudnBuL3R1bi5oCmluZGV4IDliZDk5 MGYuLjA5NWU3N2UgMTAwNjQ0Ci0tLSBhL3NyYy9vcGVudnBuL3R1bi5oCisrKyBiL3NyYy9v cGVudnBuL3R1bi5oCkBAIC0zOCw3ICszOCw3IEBACiAjaW5jbHVkZSAicHJvdG8uaCIKICNp bmNsdWRlICJtaXNjLmgiCiAKLSNpZmRlZiBXSU4zMgorI2lmIGRlZmluZWQoV0lOMzIpIHx8 IGRlZmluZWQoVEFSR0VUX0FORFJPSUQpCiAKICNkZWZpbmUgVFVOX0FEQVBURVJfSU5ERVhf SU5WQUxJRCAoKERXT1JEKS0xKQogCkBAIC03Niw2ICs3Niw3IEBAIHN0cnVjdCB0dW50YXBf b3B0aW9ucyB7CiAKICAgaW50IG5ldGJpb3Nfbm9kZV90eXBlOyAgICAgLyogTkJUIDEsMiw0 LDggKDQ2KSAqLwogCisKICNkZWZpbmUgTl9ESENQX0FERFIgNCAgICAgICAgLyogTWF4ICMg b2YgYWRkcmVzc2VzIGFsbG93ZWQgZm9yCiAJCQkgICAgICAgIEROUywgV0lOUywgZXRjLiAq LwogCkBAIC0yOTIsMTEgKzI5MywzMCBAQCBpZmNvbmZpZ19vcmRlcih2b2lkKQogICByZXR1 cm4gSUZDT05GSUdfQUZURVJfVFVOX09QRU47CiAjZWxpZiBkZWZpbmVkKFdJTjMyKQogICBy ZXR1cm4gSUZDT05GSUdfQkVGT1JFX1RVTl9PUEVOOworI2VsaWYgZGVmaW5lZChUQVJHRVRf QU5EUk9JRCkKKyAgcmV0dXJuIElGQ09ORklHX0JFRk9SRV9UVU5fT1BFTjsKICNlbHNlCiAg IHJldHVybiBJRkNPTkZJR19ERUZBVUxUOwogI2VuZGlmCiB9CiAKKyNkZWZpbmUgUk9VVEVf QkVGT1JFX1RVTiAwCisjZGVmaW5lIFJPVVRFX0FGVEVSX1RVTiAxCisjZGVmaW5lIFJPVVRF X09SREVSX0RFRkFVTFQgUk9VVEVfQUZURVJfVFVOCisKK3N0YXRpYyBpbmxpbmUgaW50City b3V0ZV9vcmRlcih2b2lkKQoreworI2lmIGRlZmluZWQoVEFSR0VUX0FORFJPSUQpCisgICAg cmV0dXJuIFJPVVRFX0JFRk9SRV9UVU47CisjZWxzZQorICAgIHJldHVybiBST1VURV9PUkRF Ul9ERUZBVUxUOworI2VuZGlmCit9CisKKworCisKICNpZmRlZiBXSU4zMgogCiAjZGVmaW5l IFRVTl9QQVNTX0JVRkZFUgotLSAKMS43LjUuNAoK --------------050006090501060607020707--