Re: PATCH v13: Arla 0.90 on Linux 2.6.3x to 4.5
Bo Branten <[email protected]> Fri, 6 May 2016 18:11:00 +0200 (CEST)
| Newsgroups | gmane.comp.file-systems.arla.general |
|---|---|
| Message-ID | <[email protected]> |
This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. ---276651502-1709114826-1462551060=:25480 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII PATCH v13: Arla 0.90 on Linux 2.6.3x to 4.5 Fix for Linux kernel v4.5. Bo Branten ---276651502-1709114826-1462551060=:25480 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=patch-v13-arla-0.90-for-linux-2.6.3x-to-4.5 Content-Transfer-Encoding: BASE64 Content-ID: <[email protected]> Content-Description: Content-Disposition: attachment; filename=patch-v13-arla-0.90-for-linux-2.6.3x-to-4.5 ZGlmZiAtdXByTiAtWG5vZGlmZiBhcmxhLTAuOTAtb2xkL25ucGZzL2luY2x1 ZGUvbm5wZnMvbm5wZnNfYXR0ci5oIGFybGEtMC45MC9ubnBmcy9pbmNsdWRl L25ucGZzL25ucGZzX2F0dHIuaA0KLS0tIGFybGEtMC45MC1vbGQvbm5wZnMv aW5jbHVkZS9ubnBmcy9ubnBmc19hdHRyLmgJMjAwNi0xMC0yNCAxODozMzoz MC4wMDAwMDAwMDAgKzAyMDANCisrKyBhcmxhLTAuOTAvbm5wZnMvaW5jbHVk ZS9ubnBmcy9ubnBmc19hdHRyLmgJMjAxNi0wMS0yMiAxMjo1MTowNy4wMDAw MDAwMDAgKzAxMDANCkBAIC0xMTMsOCArMTEzLDE4IEBAIHN0cnVjdCBubnBm c19hdHRyIHsNCiAgICAgdWludDMyX3QJCXhhX25saW5rOw0KICAgICB1aW50 MzJfdAkJeGFfdHlwZTsNCiANCisjaWZuZGVmIF9fS0VSTkVMX18NCiAgICAg dWludDMyX3QJCXhhX3VpZDsNCiAgICAgdWludDMyX3QJCXhhX2dpZDsNCisj ZWxzZQ0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJ T04oMywxNCwwKQ0KKyAgICBrdWlkX3QJCXhhX3VpZDsNCisgICAga2dpZF90 CQl4YV9naWQ7DQorI2Vsc2UNCisgICAgdWludDMyX3QJCXhhX3VpZDsNCisg ICAgdWludDMyX3QJCXhhX2dpZDsNCisjZW5kaWYNCisjZW5kaWYNCiANCiAg ICAgdWludDMyX3QJCXhhX2F0aW1lOw0KICAgICB1aW50MzJfdAkJeGFfbXRp bWU7DQpkaWZmIC11cHJOIC1Ybm9kaWZmIGFybGEtMC45MC1vbGQvbm5wZnMv aW5jbHVkZS9ubnBmcy9ubnBmc19ibG9ja3MuaCBhcmxhLTAuOTAvbm5wZnMv aW5jbHVkZS9ubnBmcy9ubnBmc19ibG9ja3MuaA0KLS0tIGFybGEtMC45MC1v bGQvbm5wZnMvaW5jbHVkZS9ubnBmcy9ubnBmc19ibG9ja3MuaAkyMDA2LTEw LTI0IDE4OjMzOjMxLjAwMDAwMDAwMCArMDIwMA0KKysrIGFybGEtMC45MC9u bnBmcy9pbmNsdWRlL25ucGZzL25ucGZzX2Jsb2Nrcy5oCTIwMDctMDEtMjQg MTg6MDk6MTcuMDAwMDAwMDAwICswMTAwDQpAQCAtMSw1ICsxLDUgQEANCiAv Kg0KLSAqIENvcHlyaWdodCAoYykgMjAwNS0yMDA2LCBTdG9ja2hvbG1zIFVu aXZlcnNpdGV0DQorICogQ29weXJpZ2h0IChjKSAyMDA1LTIwMDcsIFN0b2Nr aG9sbXMgVW5pdmVyc2l0ZXQNCiAgKiAoU3RvY2tob2xtIFVuaXZlcnNpdHks IFN0b2NraG9sbSBTd2VkZW4pDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4N CiAgKg0KQEAgLTMxLDExICszMSwxNSBAQA0KICAqIFBPU1NJQklMSVRZIE9G IFNVQ0ggREFNQUdFLg0KICAqLw0KIA0KLS8qICRJZDogbm5wZnNfYmxvY2tz LmgsdiAxLjIgMjAwNi8xMC8yNCAxNjozMzozMSB0b2wgRXhwICQgKi8NCisv KiAkSWQ6IG5ucGZzX2Jsb2Nrcy5oLHYgMS4zIDIwMDcvMDEvMjQgMTc6MDk6 MTcgdG9sIEV4cCAkICovDQogDQogI2RlZmluZSBOTlBGU19OT19JTkRFWCAg IDAgIC8qIGR1bW15IGNhY2hlIGluZGV4ICovDQogI2RlZmluZSBOTlBGU19O T19PRkZTRVQgICgodWludDY0X3QpLTEpICAvKiBkdW1teSBvZmZzZXQsIG5v IGJsb2NrICovDQogDQotI2RlZmluZSBOTlBGU19DQUNIRV9GSUxFX1BBVEgg ICAgIiUwMlgvJTAyWC8lMDJsbFgiDQotI2RlZmluZSBOTlBGU19DQUNIRV9E SVJfUEFUSCAgICAgIiUwMlgvJTAyWEAiDQotI2RlZmluZSBOTlBGU19DQUNI RV9QQVRIX1NJWkUgICAgKCA2ICsxICsyKzEgKzE2ICsxKQ0KKyNkZWZpbmUg Tk5QRlNfQ0FDSEVfRklMRV9ESVIxICAgICAgICAiJTAyeCINCisjZGVmaW5l IE5OUEZTX0NBQ0hFX0ZJTEVfRElSX1BBVEggICAgTk5QRlNfQ0FDSEVfRklM RV9ESVIxICIvIiBOTlBGU19DQUNIRV9GSUxFX0RJUjENCisjZGVmaW5lIE5O UEZTX0NBQ0hFX0ZJTEVfQkxPQ0tfUEFUSCAgIiUwMmxseCINCisNCisjZGVm aW5lIE5OUEZTX0NBQ0hFX0ZJTEVfUEFUSCAgIE5OUEZTX0NBQ0hFX0ZJTEVf RElSX1BBVEggIi8iIE5OUEZTX0NBQ0hFX0ZJTEVfQkxPQ0tfUEFUSA0KKyNk ZWZpbmUgTk5QRlNfQ0FDSEVfRElSX1BBVEggICAgTk5QRlNfQ0FDSEVfRklM RV9ESVJfUEFUSCAiQCINCisjZGVmaW5lIE5OUEZTX0NBQ0hFX1BBVEhfU0la RSAgICggNiArMSArMisxICsxNiArMSApDQpkaWZmIC11cHJOIC1Ybm9kaWZm IGFybGEtMC45MC1vbGQvbm5wZnMvaW5jbHVkZS9ubnBmcy9ubnBmc19tZXNz YWdlLmggYXJsYS0wLjkwL25ucGZzL2luY2x1ZGUvbm5wZnMvbm5wZnNfbWVz c2FnZS5oDQotLS0gYXJsYS0wLjkwLW9sZC9ubnBmcy9pbmNsdWRlL25ucGZz L25ucGZzX21lc3NhZ2UuaAkyMDA2LTEwLTI0IDE4OjMzOjMyLjAwMDAwMDAw MCArMDIwMA0KKysrIGFybGEtMC45MC9ubnBmcy9pbmNsdWRlL25ucGZzL25u cGZzX21lc3NhZ2UuaAkyMDE2LTAxLTIyIDEyOjUzOjI5LjAwMDAwMDAwMCAr MDEwMA0KQEAgLTMxLDcgKzMxLDcgQEANCiAgKiBTVUNIIERBTUFHRS4NCiAg Ki8NCiANCi0vKiAkSWQ6IG5ucGZzX21lc3NhZ2UuaCx2IDEuNjEgMjAwNi8x MC8yNCAxNjozMzozMiB0b2wgRXhwICQgKi8NCisvKiAkSWQ6IG5ucGZzX21l c3NhZ2UuaCx2IDEuNjIgMjAwOS8wMi8yNCAyMDoyMDo1NSB0b2wgRXhwICQg Ki8NCiANCiAjaWZuZGVmIF94bXNnX2gNCiAjZGVmaW5lIF94bXNnX2gNCkBA IC01Miw3ICs1MiwxNSBAQCB0eXBlZGVmIHVpbnQxNl90IG5ucGZzX3JpZ2h0 czsNCiAgKiBUaGUgbm5wZnNfY3JlZCwgaWYgcGFnID09IDAsIHVzZSB1aWQg DQogICovDQogdHlwZWRlZiBzdHJ1Y3Qgbm5wZnNfY3JlZCB7DQorI2lmbmRl ZiBfX0tFUk5FTF9fDQogICAgIHVpbnQzMl90IHVpZDsNCisjZWxzZQ0KKyNp ZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMywxNCww KQ0KKyAgICBrdWlkX3QgdWlkOw0KKyNlbHNlDQorICAgIHVpbnQzMl90IHVp ZDsNCisjZW5kaWYNCisjZW5kaWYNCiAgICAgbm5wZnNfcGFnX3QgcGFnOw0K IH0gbm5wZnNfY3JlZDsNCiANCkBAIC0xMDYsNyArMTE0LDcgQEAgdHlwZWRl ZiBzdHJ1Y3Qgbm5wZnNfYmxvY2tfaGFuZGxlIHsNCiANCiAvKiBubnBmc19u b2RlLmZsYWdzDQogICogVGhlIGxvd2VyIDE2IGJpdCBmbGFncyBhcmUgcmVz ZXJ2ZWQgZm9yIGNvbW1vbiBubnBmcyBmbGFncw0KLSAqIFRoZSB1cHBlciAx NiBiaXQgZmxhZ3MgYXJlIHJlc2VydmVkIGZvciBvcGVydGluZyBzeXN0ZW0g ZGVwZW5kYW50DQorICogVGhlIHVwcGVyIDE2IGJpdCBmbGFncyBhcmUgcmVz ZXJ2ZWQgZm9yIG9wZXJhdGluZyBzeXN0ZW0gZGVwZW5kZW50DQogICogZmxh Z3MuDQogICovDQogDQpkaWZmIC11cHJOIC1Ybm9kaWZmIGFybGEtMC45MC1v bGQvbm5wZnMvbGludXgvbm5wZnMvbm5ucGZzLmggYXJsYS0wLjkwL25ucGZz L2xpbnV4L25ucGZzL25ubnBmcy5oDQotLS0gYXJsYS0wLjkwLW9sZC9ubnBm cy9saW51eC9ubnBmcy9ubm5wZnMuaAkyMDAyLTA5LTA3IDEyOjQ3OjE3LjAw MDAwMDAwMCArMDIwMA0KKysrIGFybGEtMC45MC9ubnBmcy9saW51eC9ubnBm cy9ubm5wZnMuaAkyMDAyLTA5LTA3IDEyOjQ3OjE3LjAwMDAwMDAwMCArMDIw MA0KQEAgLTEsNCArMSw0IEBADQogLyogJElkOiBubm5wZnMuaCx2IDEuMiAy MDAyLzA5LzA3IDEwOjQ3OjE3IGxoYSBFeHAgJCAqLw0KLS8qICRTb3VyY2U6 IC9hZnMvc3RhY2tlbi5rdGguc2Uvc3JjL1NvdXJjZVJlcG9zaXRvcnkvYXJs YS9ubnBmcy9saW51eC9ubnBmcy9ubm5wZnMuaCx2ICQgKi8NCisvKiAkU291 cmNlOiAvVXNlcnMvYm8vdG1wL0FybGFTb3VyY2VSZXBvc2l0b3J5L2FybGEv bm5wZnMvbGludXgvbm5wZnMvbm5ucGZzLmgsdiAkICovDQogDQogI2RlZmlu ZSBOTk5QRlMgMg0KZGlmZiAtdXByTiAtWG5vZGlmZiBhcmxhLTAuOTAtb2xk L25ucGZzL2xpbnV4L25ucGZzL25ucGZzX2ZzLmggYXJsYS0wLjkwL25ucGZz L2xpbnV4L25ucGZzL25ucGZzX2ZzLmgNCi0tLSBhcmxhLTAuOTAtb2xkL25u cGZzL2xpbnV4L25ucGZzL25ucGZzX2ZzLmgJMjAwNi0xMC0yNCAxODozMzo0 OC4wMDAwMDAwMDAgKzAyMDANCisrKyBhcmxhLTAuOTAvbm5wZnMvbGludXgv bm5wZnMvbm5wZnNfZnMuaAkyMDE2LTAxLTEzIDIyOjU3OjA2LjAwMDAwMDAw MCArMDEwMA0KQEAgLTg0LDggKzg0LDEzIEBAIHN0cnVjdCBubnBmcyB7DQog ICAgIHN0cnVjdCB2ZnNtb3VudCAqY2FjaGVyb290OyAvKiBzaW1wbGlmeSBv cGVuIG9mIGNhY2hlIGJsb2NrcyAqLw0KICAgICBzdHJ1Y3QgZGVudHJ5ICpj YWNoZWRpcjsNCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVM X1ZFUlNJT04oMywxNCwwKQ0KICAgICB1aWRfdCB1aWQ7IC8qIGtlZXAgdHJh Y2sgb2YgZGFlbW9uJ3MgaWRlbnRpdHkgKi8NCiAgICAgZ2lkX3QgZ2lkOw0K KyNlbHNlDQorICAgIGt1aWRfdCB1aWQ7IC8qIGtlZXAgdHJhY2sgb2YgZGFl bW9uJ3MgaWRlbnRpdHkgKi8NCisgICAga2dpZF90IGdpZDsNCisjZW5kaWYN CiANCiAgICAgc3RydWN0IHsNCiAJaW50IHJlY3Vyc2U7DQpkaWZmIC11cHJO IC1Ybm9kaWZmIGFybGEtMC45MC1vbGQvbm5wZnMvbGludXgvbm5wZnMvbm5w ZnNfbG9jbC5oIGFybGEtMC45MC9ubnBmcy9saW51eC9ubnBmcy9ubnBmc19s b2NsLmgNCi0tLSBhcmxhLTAuOTAtb2xkL25ucGZzL2xpbnV4L25ucGZzL25u cGZzX2xvY2wuaAkyMDA3LTAxLTA4IDE0OjUyOjQ5LjAwMDAwMDAwMCArMDEw MA0KKysrIGFybGEtMC45MC9ubnBmcy9saW51eC9ubnBmcy9ubnBmc19sb2Ns LmgJMjAxNi0wMS0xMyAyMzowMToxMC4wMDAwMDAwMDAgKzAxMDANCkBAIC0z NCw3ICszNCw3IEBADQogICogU1VDSCBEQU1BR0UuDQogICovDQogDQotLyog JElkOiBubnBmc19sb2NsLmgsdiAxLjc3IDIwMDcvMDEvMDggMTM6NTI6NDkg dG9sIEV4cCAkICovDQorLyogJElkOiBubnBmc19sb2NsLmgsdiAxLjc4IDIw MTAvMDgvMDggMjA6NDM6MDYgdG9sIEV4cCAkICovDQogDQogI2lmZGVmIEhB VkVfQ09ORklHX0gNCiAjaW5jbHVkZSA8Y29uZmlnLmg+DQpAQCAtNTEsNyAr NTEsOSBAQA0KICNpbmNsdWRlIDxsaW51eC9zdGF0Lmg+DQogI2luY2x1ZGUg PGxpbnV4L3N0cmluZy5oPg0KICNpbmNsdWRlIDxsaW51eC9uYW1laS5oPg0K KyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYs MzkpDQogI2luY2x1ZGUgPGxpbnV4L3NtcF9sb2NrLmg+DQorI2VuZGlmDQog I2luY2x1ZGUgPGxpbnV4L3dhaXQuaD4NCiANCiAvKg0KQEAgLTEzOCwxNSAr MTQwLDE2IEBAIHR5cGVkZWYgX191MzIgIHVpbnQzMl90Ow0KIGludA0KIG5u cGZzX2ZldGNoX3Jvb3Qoc3RydWN0IGlub2RlICppKTsNCiANCi0jaWYgTElO VVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwxOCkNCisj aWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDM5 KQ0KIGludA0KIG5ucGZzX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlw ZSAqZnNfdHlwZSwNCiAJICAgICBpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRl dl9uYW1lLA0KIAkgICAgIHZvaWQgKmRhdGEsIHN0cnVjdCB2ZnNtb3VudCAq bW50KTsNCiAjZWxzZQ0KLXN0cnVjdCBzdXBlcl9ibG9jayAqDQotbm5wZnNf Z2V0X3NiIChzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwNCi0J ICAgICAgaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAq ZGF0YSk7DQorc3RydWN0IGRlbnRyeSoNCitubnBmc19tb3VudChzdHJ1Y3Qg ZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwNCisJICAgICBpbnQgZmxhZ3Ms IGNvbnN0IGNoYXIgKmRldl9uYW1lLA0KKwkgICAgIHZvaWQgKmRhdGEpOw0K ICNlbmRpZg0KIA0KIGV4dGVybiBzdHJ1Y3QgZGVudHJ5X29wZXJhdGlvbnMg bm5wZnNfZGVudHJ5X29wZXJhdGlvbnM7DQpAQCAtMjAwLDE2ICsyMDMsMjUg QEAgbm5wZnNfaXdyaXRlY291bnQgKHN0cnVjdCBpbm9kZSAqaW5vZGUpDQog ICogSGVscCBmdW5jdGlvbiB0byByZWFkIHRoZSBkZW50cnktPmRfY291bnQg YSBwb3J0YWJsZSB3YXkNCiAgKi8NCiANCisvKiNpZiBMSU5VWF9WRVJTSU9O X0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMzgpKi8NCiBzdGF0aWMgaW5s aW5lIGludA0KIG5ucGZzX2Rjb3VudCAoY29uc3Qgc3RydWN0IGRlbnRyeSAq ZGVudHJ5KQ0KKy8qI2Vsc2UNCitzdGF0aWMgaW5saW5lIGludA0KK25ucGZz X2Rjb3VudCAoc3RydWN0IGRlbnRyeSAqZGVudHJ5KQ0KKyNlbmRpZiovDQog ew0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigy LDYsMzgpDQogICAgIHJldHVybiBhdG9taWNfcmVhZCgmZGVudHJ5LT5kX2Nv dW50KTsNCisjZWxpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVS U0lPTigzLDExLDApDQorICAgIHJldHVybiBhdG9taWNfcmVhZCgoY29uc3Qg YXRvbWljX3QqKSZkZW50cnktPmRfY291bnQpOw0KKyNlbHNlDQorICAgIHJl dHVybiBkX2NvdW50KGRlbnRyeSk7Ow0KKyNlbmRpZg0KIH0NCiANCiBleHRl cm4gDQotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lP TigyLDYsMTgpDQogY29uc3QNCi0jZW5kaWYNCiBzdHJ1Y3QgYWRkcmVzc19z cGFjZV9vcGVyYXRpb25zIG5ucGZzX2FvcHM7DQogDQogI2lmbmRlZiBsaXN0 X2Zvcl9lYWNoDQpAQCAtMjM3LDcgKzI0OSwxMiBAQCBubnBmc19maXh1cF9z eXNjYWxsX2xvc3NhZ2Uodm9pZCk7DQogI2VuZGlmDQogDQogI2RlZmluZSBu bnBmc19kZXZfdCBkZXZfdA0KKw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUg PCBLRVJORUxfVkVSU0lPTigyLDYsMzgpDQogI2RlZmluZSBubnBmc19kX2Vu dHJ5X3VuaGFzaGVkKGQpIGhsaXN0X3VuaGFzaGVkKGQpDQorI2Vsc2UNCisj ZGVmaW5lIG5ucGZzX2RfZW50cnlfdW5oYXNoZWQoZCkgaGxpc3RfYmxfdW5o YXNoZWQoZCkNCisjZW5kaWYNCiANCiAjZGVmaW5lIE5OUEZTX05PT1AgICAg ICB3aGlsZSgwKXt9DQogDQpkaWZmIC11cHJOIC1Ybm9kaWZmIGFybGEtMC45 MC1vbGQvbm5wZnMvbGludXgvbm5wZnMvbm5wZnNfbm9kZS5oIGFybGEtMC45 MC9ubnBmcy9saW51eC9ubnBmcy9ubnBmc19ub2RlLmgNCi0tLSBhcmxhLTAu OTAtb2xkL25ucGZzL2xpbnV4L25ucGZzL25ucGZzX25vZGUuaAkyMDA2LTEy LTExIDE3OjI5OjM5LjAwMDAwMDAwMCArMDEwMA0KKysrIGFybGEtMC45MC9u bnBmcy9saW51eC9ubnBmcy9ubnBmc19ub2RlLmgJMjAxMC0wOC0wOCAyMjo0 MzowNy4wMDAwMDAwMDAgKzAyMDANCkBAIC01NCw3ICs1NCw3IEBAIGV4dGVy biB1aW50MzJfdCBubnBmc19ibG9ja3NpemViaXRzOw0KICAqIGZsYWdzLg0K ICAqLw0KIA0KLSNkZWZpbmUgTk5QRlNfTk9ERV9JUFVUCTB4MDAwMTAwMDAg ICAvKiBub2RlIGlzIGluIGlwdXQoKSwgYXZvaWQgZGVhZGxvY2sgKi8NCisj ZGVmaW5lIE5OUEZTX05PREVfSVBVVAkweDAwMDEwMDAwICAgLyogbm9kZSBp cyBpbiBpcHV0KCksIGF2b2lkIGRlYWRsb2NrLiBDYW4gYmUgcmVtb3ZlZD8g Ki8NCiANCiAjZGVmaW5lIFhOX0hBU0hTSVpFIDEwMDkNCiAjZGVmaW5lIFhO X0NMRUFOVVBfSVRFUlMgMTI5DQpkaWZmIC11cHJOIC1Ybm9kaWZmIGFybGEt MC45MC1vbGQvbm5wZnMvbGludXgvbm5wZnNfYmxvY2tzLmMgYXJsYS0wLjkw L25ucGZzL2xpbnV4L25ucGZzX2Jsb2Nrcy5jDQotLS0gYXJsYS0wLjkwLW9s ZC9ubnBmcy9saW51eC9ubnBmc19ibG9ja3MuYwkyMDA3LTAxLTA4IDE0OjI0 OjI0LjAwMDAwMDAwMCArMDEwMA0KKysrIGFybGEtMC45MC9ubnBmcy9saW51 eC9ubnBmc19ibG9ja3MuYwkyMDE2LTAyLTIwIDE5OjQ0OjM5LjAwMDAwMDAw MCArMDEwMA0KQEAgLTM0LDcgKzM0LDcgQEANCiAgKiBQT1NTSUJJTElUWSBP RiBTVUNIIERBTUFHRS4NCiAgKi8NCiANCi0vKiAkSWQ6IG5ucGZzX2Jsb2Nr cy5jLHYgMS4zIDIwMDcvMDEvMDggMTM6MjQ6MjQgdG9sIEV4cCAkICovDQor LyogJElkOiBubnBmc19ibG9ja3MuYyx2IDEuNiAyMDEwLzA4LzA4IDIwOjQz OjA0IHRvbCBFeHAgJCAqLw0KIA0KICNpbmNsdWRlIDxubnBmcy9ubnBmc19s b2NsLmg+DQogI2luY2x1ZGUgPG5ucGZzL25ucGZzX2ZzLmg+DQpAQCAtNDMs NiArNDMsMTEgQEANCiAjaW5jbHVkZSA8bGludXgvbW91bnQuaD4NCiAjaW5j bHVkZSA8bGludXgvbW0uaD4NCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RF ID49IEtFUk5FTF9WRVJTSU9OKDMsMTIsMCkNCitleHRlcm4gaW50IHZmc19w YXRoX2xvb2t1cChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCB2ZnNtb3VudCAq LA0KKwkJCSAgIGNvbnN0IGNoYXIgKiwgdW5zaWduZWQgaW50LCBzdHJ1Y3Qg cGF0aCAqKTsNCisjZW5kaWYNCisNCiAvKg0KICAqIHJldHVybiB0cnVlIGlm IGJsb2NrIGlzIGluIGNhY2hlDQogICovDQpAQCAtMjkwLDcgKzI5NSwxMyBA QCBubnBmc19ibG9ja19leHRlbmQoc3RydWN0IG5ucGZzX25vZGUgKm5vDQog ICAgIGJhY2tub2RlID0gYmFja2ZpbGUtPmZfbWFwcGluZy0+aG9zdDsNCiAN CiAgICAgbXV0ZXhfbG9jaygmYmFja25vZGUtPmlfbXV0ZXgpOw0KKyNpZiBM SU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDgsMCkNCiAg ICAgcmV0ID0gdm10cnVuY2F0ZShiYWNrbm9kZSwgbm5wZnNfYmxvY2tzaXpl KTsNCisjZWxzZQ0KKyAgICByZXQgPSBpbm9kZV9uZXdzaXplX29rKGJhY2tu b2RlLCBubnBmc19ibG9ja3NpemUpOw0KKyAgICBpZighcmV0KQ0KKyAgICAg ICAgdHJ1bmNhdGVfc2V0c2l6ZShiYWNrbm9kZSwgbm5wZnNfYmxvY2tzaXpl KTsNCisjZW5kaWYNCiAgICAgbXV0ZXhfdW5sb2NrKCZiYWNrbm9kZS0+aV9t dXRleCk7DQogICAgIA0KICAgICBmaWxwX2Nsb3NlKGJhY2tmaWxlLCBOVUxM KTsNCkBAIC0zMTMsMTQgKzMyNCwyNiBAQCBubnBmc19ibG9ja19vcGVuKHN0 cnVjdCBubnBmc19ub2RlICpub2RlDQogCQkgc3RydWN0IGZpbGUgKipmaWxl KQ0KIHsNCiAgICAgY2hhciBjYWNoZW5hbWVbTk5QRlNfQ0FDSEVfUEFUSF9T SVpFXTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJT SU9OKDMsMSwwKQ0KKyAgICBjaGFyIGZ1bGxfY2FjaGVuYW1lW05OUEZTX0NB Q0hFX1BBVEhfU0laRV07DQorI2VuZGlmDQogICAgIHVpbnQ2NF90IGJsb2Nr aW5kZXggPSBubnBmc19ibG9ja19pbmRleChvZmZzZXQpOw0KICAgICB1aW50 MzJfdCBpZCA9IG5vZGUtPmluZGV4Ow0KICAgICBzdHJ1Y3Qgbm5wZnMgKm5u cGZzcCA9IE5OUEZTX0ZST01fWE5PREUobm9kZSk7DQogICAgIHN0cnVjdCBp bm9kZSAqaW5vZGUgPSBYTk9ERV9UT19WTk9ERShub2RlKTsNCiAgICAgaW50 IGZsYWdzID0gT19MQVJHRUZJTEUgfCBmbGFnOw0KKyNpZiBMSU5VWF9WRVJT SU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQogICAgIHN0cnVj dCBuYW1laWRhdGEgbmQ7DQorI2Vsc2UNCisgICAgc3RydWN0IHBhdGggcGF0 aDsNCisjZW5kaWYNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVM X1ZFUlNJT04oMiw2LDI5KQ0KICAgICB1aWRfdCBzYXZldWlkOw0KICAgICBn aWRfdCBzYXZlZ2lkOw0KKyNlbHNlDQorICAgIGNvbnN0IHN0cnVjdCBjcmVk ICpvbGRfY3JlZDsNCisgICAgc3RydWN0IGNyZWQgKm92ZXJyaWRlX2NyZWQ7 DQorI2VuZGlmDQogICAgIGludCByZXQ7DQogDQogICAgIEJVR19PTighbm5w ZnNwKTsNCkBAIC0zMzAsMTIgKzM1MywyMiBAQCBubnBmc19ibG9ja19vcGVu KHN0cnVjdCBubnBmc19ub2RlICpub2RlDQogCXJldCA9IHNucHJpbnRmKGNh Y2hlbmFtZSwgc2l6ZW9mKGNhY2hlbmFtZSksDQogCQkgICAgICAgTk5QRlNf Q0FDSEVfRElSX1BBVEgsDQogCQkgICAgICAgaWQgLyAweDEwMCwgaWQgJSAw eDEwMCk7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVS U0lPTigzLDEsMCkNCisJcmV0ID0gc25wcmludGYoZnVsbF9jYWNoZW5hbWUs IHNpemVvZihjYWNoZW5hbWUpLA0KKwkJICAgICAgICIvdXNyL2FybGEvY2Fj aGUvIiBOTlBGU19DQUNIRV9ESVJfUEFUSCwNCisJCSAgICAgICBpZCAvIDB4 MTAwLCBpZCAlIDB4MTAwKTsNCisjZW5kaWYNCiAgICAgfSBlbHNlIHsNCiAJ cmV0ID0gc25wcmludGYoY2FjaGVuYW1lLCBzaXplb2YoY2FjaGVuYW1lKSwN CiAJCSAgICAgICBOTlBGU19DQUNIRV9GSUxFX1BBVEgsDQogCQkgICAgICAg aWQgLyAweDEwMCwgaWQgJSAweDEwMCwNCiAJCSAgICAgICAodW5zaWduZWQg bG9uZyBsb25nKWJsb2NraW5kZXgpOw0KLQ0KKyNpZiBMSU5VWF9WRVJTSU9O X0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMywxLDApDQorCXJldCA9IHNucHJp bnRmKGZ1bGxfY2FjaGVuYW1lLCBzaXplb2YoY2FjaGVuYW1lKSwNCisJCSAg ICAgICAiL3Vzci9hcmxhL2NhY2hlLyIgTk5QRlNfQ0FDSEVfRklMRV9QQVRI LA0KKwkJICAgICAgIGlkIC8gMHgxMDAsIGlkICUgMHgxMDAsDQorCQkgICAg ICAgKHVuc2lnbmVkIGxvbmcgbG9uZylibG9ja2luZGV4KTsNCisjZW5kaWYN CiAJaWYgKCFubnBmc19ibG9ja19oYXZlX3Aobm9kZSwgb2Zmc2V0KSAmJiAo ZmxhZ3MgJiBPX0NSRUFUKSA9PSAwKSB7DQogCSAgICBwcmludGsoS0VSTl9F TUVSRyAicmVhZGluZyBibG9jayAlczogbm90IHRoZXJlXG4iLCBjYWNoZW5h bWUpOw0KIAkgICAgQlVHKCk7DQpAQCAtMzQ2LDIyICszNzksMzcgQEAgbm5w ZnNfYmxvY2tfb3BlbihzdHJ1Y3Qgbm5wZnNfbm9kZSAqbm9kZQ0KICAgICBC VUdfT04oIW5ucGZzcC0+Y2FjaGVkaXIgfHwgIW5ucGZzcC0+Y2FjaGVyb290 KTsNCiAgICAgDQogICAgIC8qIHVzZSB0aGUgbmZzZCB0cmljayB0byBnaXZl IHVzIGFjY2VzcyAqLw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJO RUxfVkVSU0lPTigyLDYsMjkpDQogICAgIHNhdmV1aWQgPSBjdXJyZW50LT5m c3VpZDsNCiAgICAgc2F2ZWdpZCA9IGN1cnJlbnQtPmZzZ2lkOw0KICAgICBj dXJyZW50LT5mc3VpZCA9IG5ucGZzcC0+dWlkOw0KICAgICBjdXJyZW50LT5m c2dpZCA9IG5ucGZzcC0+Z2lkOw0KLQ0KLSAgICBuZC5kZW50cnkgPSBkZ2V0 KG5ucGZzcC0+Y2FjaGVkaXIpOw0KLSAgICBuZC5tbnQgPSBtbnRnZXQobm5w ZnNwLT5jYWNoZXJvb3QpOw0KLSAgICBuZC5sYXN0X3R5cGUgPSBMQVNUX05P Uk07DQotICAgIG5kLmRlcHRoID0gMDsNCi0gICAgbmQuZmxhZ3MgPSAwOw0K LSAgICANCi0gICAgaWYgKGZsYWdzICYgT19DUkVBVCkNCi0JbmQuZmxhZ3Mg PSBMT09LVVBfUEFSRU5UOw0KLSAgICANCi0gICAgcmV0ID0gcGF0aF93YWxr KGNhY2hlbmFtZSwgJm5kKTsNCisjZWxzZQ0KKyAgICBvdmVycmlkZV9jcmVk ID0gcHJlcGFyZV9jcmVkcygpOw0KKyAgICBpZiAob3ZlcnJpZGVfY3JlZCA9 PSBOVUxMKQ0KKyAgICAgICAgcmV0dXJuIC1FTk9NRU07DQorICAgIG92ZXJy aWRlX2NyZWQtPmZzdWlkID0gbm5wZnNwLT51aWQ7DQorICAgIG92ZXJyaWRl X2NyZWQtPmZzZ2lkID0gbm5wZnNwLT5naWQ7DQorICAgIG9sZF9jcmVkID0g b3ZlcnJpZGVfY3JlZHMob3ZlcnJpZGVfY3JlZCk7DQorI2VuZGlmDQorDQor I2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMSww KQ0KKyAgICByZXQgPSB2ZnNfcGF0aF9sb29rdXAobm5wZnNwLT5jYWNoZWRp ciwgbm5wZnNwLT5jYWNoZXJvb3QsDQorCQkJICBjYWNoZW5hbWUsDQorCQkJ ICBmbGFncyAmIE9fQ1JFQVQgPyBMT09LVVBfUEFSRU5UIDogMCwNCisJCQkg ICZuZCk7DQorI2VsaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZF UlNJT04oMywxOSwwKQ0KKyAgICByZXQgPSB2ZnNfcGF0aF9sb29rdXAobm5w ZnNwLT5jYWNoZWRpciwgbm5wZnNwLT5jYWNoZXJvb3QsDQorCQkJICBjYWNo ZW5hbWUsIDAsICZuZC5wYXRoKTsNCisjZWxzZQ0KKyAgICByZXQgPSB2ZnNf cGF0aF9sb29rdXAobm5wZnNwLT5jYWNoZWRpciwgbm5wZnNwLT5jYWNoZXJv b3QsDQorCQkJICBjYWNoZW5hbWUsIDAsICZwYXRoKTsNCisjZW5kaWYNCisj aWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxLDAp DQogICAgIGlmIChyZXQpIHsNCisjZWxzZQ0KKyAgICBpZiAocmV0ICYmICEo ZmxhZ3MgJiBPX0NSRUFUKSkgew0KKyNlbmRpZg0KIAl1aW50MzJfdCBubWFz a3MgPSBub2RlLT5kYXRhLm5tYXNrczsNCiAJdWludDMyX3QgbWFzazsNCiAN CkBAIC0zODcsMTcgKzQzNSwzNyBAQCBubnBmc19ibG9ja19vcGVuKHN0cnVj dCBubnBmc19ub2RlICpub2RlDQogICAgIA0KICAgICBpZiAoZmxhZ3MgJiBP X0NSRUFUKSB7DQogCS8qIFhYWCBtb2RlIGJpdHMgb24gY3JlYXRlIC0tIFNf SVJVU1J8U19JV1VTUiAqLw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBL RVJORUxfVkVSU0lPTigzLDEsMCkNCiAJc3RydWN0IGRlbnRyeSAqZGVudHJ5 ID0gbG9va3VwX2NyZWF0ZSgmbmQsIDApOwkNCisjZWxpZiBMSU5VWF9WRVJT SU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQorCXN0cnVjdCBk ZW50cnkgKmRlbnRyeSA9IGtlcm5fcGF0aF9jcmVhdGUoQVRfRkRDV0QsIGZ1 bGxfY2FjaGVuYW1lLCAmbmQucGF0aCwgMCk7CQ0KKyNlbHNlDQorCXN0cnVj dCBkZW50cnkgKmRlbnRyeSA9IGtlcm5fcGF0aF9jcmVhdGUoQVRfRkRDV0Qs IGZ1bGxfY2FjaGVuYW1lLCAmcGF0aCwgMCk7CQ0KKyNlbmRpZg0KIAlpZiAo SVNfRVJSKGRlbnRyeSkpIHsNCiAJICAgIHJldCA9IFBUUl9FUlIoZGVudHJ5 KTsNCiAJfSBlbHNlIHsNCi0JICAgIHJldCA9IHZmc19jcmVhdGUobmQuZGVu dHJ5LT5kX2lub2RlLCBkZW50cnksIFNfSVJVU1J8U19JV1VTUiwgJm5kKTsN CisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw2 LDApDQorCSAgICByZXQgPSB2ZnNfY3JlYXRlKG5kLnBhdGguZGVudHJ5LT5k X2lub2RlLCBkZW50cnksIFNfSVJVU1J8U19JV1VTUiwgJm5kKTsNCisjZWxp ZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDAp DQorCSAgICAvKiBYWFggc2hvdWxkIHRoZSBsYXN0IGFyZ3VtZW50IHRvIHZm c19jcmVhdGU6IGJvb2wgd2FudF9leGNsLCBiZSAwIG9yIDE/ICovDQorCSAg ICByZXQgPSB2ZnNfY3JlYXRlKG5kLnBhdGguZGVudHJ5LT5kX2lub2RlLCBk ZW50cnksIFNfSVJVU1J8U19JV1VTUiwgMCk7DQorI2Vsc2UNCisJICAgIC8q IFhYWCBzaG91bGQgdGhlIGxhc3QgYXJndW1lbnQgdG8gdmZzX2NyZWF0ZTog Ym9vbCB3YW50X2V4Y2wsIGJlIDAgb3IgMT8gKi8NCisJICAgIHJldCA9IHZm c19jcmVhdGUocGF0aC5kZW50cnktPmRfaW5vZGUsIGRlbnRyeSwgU19JUlVT UnxTX0lXVVNSLCAwKTsNCisjZW5kaWYNCisNCisjaWYgTElOVVhfVkVSU0lP Tl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw2LDApDQogCSAgICBkcHV0KGRl bnRyeSk7DQorCSAgICBtdXRleF91bmxvY2soJm5kLnBhdGguZGVudHJ5LT5k X2lub2RlLT5pX211dGV4KTsNCisJICAgIHBhdGhfcHV0KCZuZC5wYXRoKTsN CisjZWxpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigz LDE5LDApDQorCSAgICBkb25lX3BhdGhfY3JlYXRlKCZuZC5wYXRoLCBkZW50 cnkpOw0KKyNlbHNlDQorCSAgICBkb25lX3BhdGhfY3JlYXRlKCZwYXRoLCBk ZW50cnkpOw0KKyNlbmRpZg0KIAl9DQogDQotCW11dGV4X3VubG9jaygmbmQu ZGVudHJ5LT5kX2lub2RlLT5pX211dGV4KTsNCi0JcGF0aF9yZWxlYXNlKCZu ZCk7DQotDQogCWlmIChyZXQpIHsNCiAJICAgIHByaW50aygibm5wZnNfYmxv Y2tfb3BlbiglcykgY3JlYXRlIGZhaWxlZDogJWRcbiIsIGNhY2hlbmFtZSwg LXJldCk7DQogCSAgICBubnBmc19kZWJ1Z19vb3BzKCk7DQpAQCAtNDEwLDEy ICs0NzgsMjQgQEAgbm5wZnNfYmxvY2tfb3BlbihzdHJ1Y3Qgbm5wZnNfbm9k ZSAqbm9kZQ0KIAkgICAgcmV0ID0gbm5wZnNfYmxvY2tfZXh0ZW5kKG5vZGUs IG9mZnNldCk7DQogCX0NCiAgICAgfSBlbHNlIHsNCi0Jc3RydWN0IGZpbGUg KmYgPSBkZW50cnlfb3BlbihuZC5kZW50cnksIG5kLm1udCwgZmxhZ3MpOw0K KyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYs MjkpDQorCXN0cnVjdCBmaWxlICpmID0gZGVudHJ5X29wZW4obmQucGF0aC5k ZW50cnksIG5kLnBhdGgubW50LCBmbGFncyk7DQorI2VsaWYgTElOVVhfVkVS U0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw2LDApDQorICAgICAgICBz dHJ1Y3QgZmlsZSAqZiA9IGRlbnRyeV9vcGVuKG5kLnBhdGguZGVudHJ5LCBu ZC5wYXRoLm1udCwgZmxhZ3MsIGN1cnJlbnRfY3JlZCgpKTsNCisjZWxpZiBM SU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQor ICAgICAgICBzdHJ1Y3QgZmlsZSAqZiA9IGRlbnRyeV9vcGVuKCZuZC5wYXRo LCBmbGFncywgY3VycmVudF9jcmVkKCkpOw0KKyNlbHNlDQorICAgICAgICBz dHJ1Y3QgZmlsZSAqZiA9IGRlbnRyeV9vcGVuKCZwYXRoLCBmbGFncywgY3Vy cmVudF9jcmVkKCkpOw0KKyNlbmRpZg0KIAlpZiAoSVNfRVJSKGYpKSB7DQog CSAgICByZXQgPSBQVFJfRVJSKGYpOw0KIAkgICAgcHJpbnRrKCJubnBmc19i bG9ja19vcGVuKCVzKSBvcGVuIGZhaWxlZDogJWRcbiIsIGNhY2hlbmFtZSwg LXJldCk7DQogCSAgICBubnBmc19kZWJ1Z19vb3BzKCk7DQotCSAgICBwYXRo X3JlbGVhc2UoJm5kKTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VS TkVMX1ZFUlNJT04oMywxOSwwKQ0KKwkgICAgcGF0aF9wdXQoJm5kLnBhdGgp Ow0KKyNlbHNlDQorCSAgICBwYXRoX3B1dCgmcGF0aCk7DQorI2VuZGlmDQog CX0gZWxzZSB7DQogCSAgICAqZmlsZSA9IGY7DQogCX0NCkBAIC00MjQsOCAr NTA0LDEzIEBAIG5ucGZzX2Jsb2NrX29wZW4oc3RydWN0IG5ucGZzX25vZGUg Km5vZGUNCiAgICAgLyogcGF0aF9yZWxlYXNlKCkgaXMgdXN1YWxseSBoYW5k bGVkIG9uIGNsb3NlICovDQogDQogIG91dDoNCisjaWYgTElOVVhfVkVSU0lP Tl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDI5KQ0KICAgICBjdXJyZW50 LT5mc3VpZCA9IHNhdmV1aWQ7DQogICAgIGN1cnJlbnQtPmZzZ2lkID0gc2F2 ZWdpZDsNCisjZWxzZQ0KKyAgICByZXZlcnRfY3JlZHMob2xkX2NyZWQpOw0K KyAgICBwdXRfY3JlZChvdmVycmlkZV9jcmVkKTsNCisjZW5kaWYNCiANCiAg ICAgcmV0dXJuIHJldDsNCiB9DQpkaWZmIC11cHJOIC1Ybm9kaWZmIGFybGEt MC45MC1vbGQvbm5wZnMvbGludXgvbm5wZnNfY29tbW9uLmMgYXJsYS0wLjkw L25ucGZzL2xpbnV4L25ucGZzX2NvbW1vbi5jDQotLS0gYXJsYS0wLjkwLW9s ZC9ubnBmcy9saW51eC9ubnBmc19jb21tb24uYwkyMDA2LTEyLTExIDE3OjMx OjQ2LjAwMDAwMDAwMCArMDEwMA0KKysrIGFybGEtMC45MC9ubnBmcy9saW51 eC9ubnBmc19jb21tb24uYwkyMDE2LTAxLTE0IDE2OjE1OjAwLjAwMDAwMDAw MCArMDEwMA0KQEAgLTExMiwxMCArMTEyLDE1IEBAIG5ucGZzX3ByaW50X2Fs aWFzZXMoY29uc3Qgc3RydWN0IGlub2RlICoNCiB2b2lkDQogbm5wZnNfcHJp bnRfYWxpYXNlc19yZWFsKGNvbnN0IHN0cnVjdCBpbm9kZSAqaW5vZGUpDQog ew0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigz LDYsMCkNCiAgICAgc3RydWN0IGxpc3RfaGVhZCAqYWxpYXM7DQorI2VsaWYg TElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw5LDApDQor ICAgIHN0cnVjdCBobGlzdF9ub2RlICphbGlhczsNCisjZW5kaWYNCiAgICAg c3RydWN0IGRlbnRyeSAqZGVudHJ5Ow0KICAgICBpbnQgYmFpbG91dCA9IDEw MDsNCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJ T04oMyw2LDApDQogICAgIGFsaWFzID0gaW5vZGUtPmlfZGVudHJ5Lm5leHQ7 DQogICAgIHdoaWxlIChhbGlhcyAhPSAmaW5vZGUtPmlfZGVudHJ5KSB7DQog CWlmICgtLWJhaWxvdXQgPCAwKSB7DQpAQCAtMTMxLDYgKzEzNiwyNiBAQCBu bnBmc19wcmludF9hbGlhc2VzX3JlYWwoY29uc3Qgc3RydWN0IGluDQogCX0N CiAJYWxpYXMgPSBhbGlhcy0+bmV4dDsNCiAgICAgfQ0KKyNlbHNlDQorI2lm IExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsOSwwKQ0K KyAgICBobGlzdF9mb3JfZWFjaF9lbnRyeShkZW50cnksIGFsaWFzLCAmaW5v ZGUtPmlfZGVudHJ5LCBkX2FsaWFzKSB7DQorI2VsaWYgTElOVVhfVkVSU0lP Tl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0KKyAgICBobGlzdF9m b3JfZWFjaF9lbnRyeShkZW50cnksICZpbm9kZS0+aV9kZW50cnksIGRfYWxp YXMpIHsNCisjZWxzZQ0KKyAgICBobGlzdF9mb3JfZWFjaF9lbnRyeShkZW50 cnksICZpbm9kZS0+aV9kZW50cnksIGRfdS5kX2FsaWFzKSB7DQorI2VuZGlm DQorCWlmICgtLWJhaWxvdXQgPCAwKSB7DQorCSAgICBwcmludGsoIiAuLi4i KTsNCisJICAgIGJyZWFrOw0KKwl9DQorCWlmIChkZW50cnkpIHsNCisJICAg IHByaW50aygiICUuKnMoJXApIiwgKGludClkZW50cnktPmRfbmFtZS5sZW4s DQorCQkgICBkZW50cnktPmRfbmFtZS5uYW1lLCBkZW50cnkpOw0KKwkgICAg aWYgKG5ucGZzX2RfZW50cnlfdW5oYXNoZWQoJmRlbnRyeS0+ZF9oYXNoKSkN CisJCXByaW50aygiKHVuaGFzaGVkKSIpOw0KKwl9DQorICAgIH0NCisjZW5k aWYNCiAgICAgcHJpbnRrKCJcbiIpOw0KIH0NCiANCkBAIC0xNDYsNyArMTcx LDExIEBAIG5ucGZzX3ByaW50X2NoaWxkcmVuKGNvbnN0IHN0cnVjdCBkZW50 cnkNCiANCiAgICAgd2hpbGUgKHN1YmRpcnMgIT0gJmRlbnRyeS0+ZF9zdWJk aXJzKSB7DQogCXN0cnVjdCBsaXN0X2hlYWQgKnRtcCA9IHN1YmRpcnM7DQor I2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTks MCkNCiAJc3RydWN0IGRlbnRyeSAqY2hpbGQgPSBsaXN0X2VudHJ5KHRtcCwg c3RydWN0IGRlbnRyeSwgZF91LmRfY2hpbGQpOw0KKyNlbHNlDQorCXN0cnVj dCBkZW50cnkgKmNoaWxkID0gbGlzdF9lbnRyeSh0bXAsIHN0cnVjdCBkZW50 cnksIGRfY2hpbGQpOw0KKyNlbmRpZg0KIA0KIAlwcmludGsoIiAlLipzKCVw KSIsIChpbnQpY2hpbGQtPmRfbmFtZS5sZW4sDQogCSAgICAgICBjaGlsZC0+ ZF9uYW1lLm5hbWUsIGNoaWxkKTsNCmRpZmYgLXVwck4gLVhub2RpZmYgYXJs YS0wLjkwLW9sZC9ubnBmcy9saW51eC9ubnBmc19kZXYuYyBhcmxhLTAuOTAv bm5wZnMvbGludXgvbm5wZnNfZGV2LmMNCi0tLSBhcmxhLTAuOTAtb2xkL25u cGZzL2xpbnV4L25ucGZzX2Rldi5jCTIwMDYtMTAtMjQgMTg6MzM6MzYuMDAw MDAwMDAwICswMjAwDQorKysgYXJsYS0wLjkwL25ucGZzL2xpbnV4L25ucGZz X2Rldi5jCTIwMTYtMDEtMTQgMTY6Mjg6MTkuMDAwMDAwMDAwICswMTAwDQpA QCAtMzAwLDcgKzMwMCw5IEBAIG5ucGZzX2ludmFsaWRhdGVfYWxsKHN0cnVj dCBubnBmcyAqbm5wZnMNCiAgICAgTk5QRlNERUIoWERFQk5PREUsICgiZnJl ZV9hbGxfbm5wZnNfbm9kZXMgc3RhcnRpbmdcbiIpKTsNCiANCiAgICAgc2hy aW5rX2RjYWNoZV9zYihubnBmcy0+c2IpOw0KKyNpZiBMSU5VWF9WRVJTSU9O X0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMzcpDQogICAgIGludmFsaWRh dGVfaW5vZGVzKG5ucGZzLT5zYik7DQorI2VuZGlmDQogICAgIA0KICAgICBO TlBGU0RFQihYREVCTk9ERSwgKCJmcmVlX2FsbF9ubnBmc19ub2RlcyBkb25l XG4iKSk7DQogfQ0KQEAgLTM3NCw3ICszNzYsMTEgQEAgbm5wZnNfZGV2Y2xv c2Uoc3RydWN0IGlub2RlICogaW5vZGUsIHN0cg0KIHN0YXRpYyBzc2l6ZV90 DQogbm5wZnNfZGV2cmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciAqYnVm LCBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcykNCiB7DQorI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCiAgICAg bm5wZnNfZGV2X3QgZGV2ID0gZmlsZS0+Zl9kZW50cnktPmRfaW5vZGUtPmlf cmRldjsNCisjZWxzZQ0KKyAgICBubnBmc19kZXZfdCBkZXYgPSBmaWxlLT5m X3BhdGguZGVudHJ5LT5kX2lub2RlLT5pX3JkZXY7DQorI2VuZGlmDQogICAg IHN0cnVjdCBubnBmcyAqbm5wZnNwID0gJm5ucGZzW01JTk9SKGRldildOw0K ICAgICBzdHJ1Y3Qgbm5wZnNfbGluayAqZmlyc3Q7DQogICAgIGludCByZXQg PSAwLCBlcnJvciA9IDA7DQpAQCAtNDM5LDggKzQ0NSwxMiBAQCBubnBmc19k ZXZ3cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgDQogDQogICAgIE5O UEZTREVCKFhERUJERVYsICgibm5wZnNfZGV2d3JpdGVcbiIpKTsNCiAgICAg DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMs MTksMCkNCiAgICAgZGV2ID0gZmlsZS0+Zl9kZW50cnktPmRfaW5vZGUtPmlf cmRldjsNCi0gICAgbm5wZnNwID0gJm5ucGZzW01JTk9SKGRldildOw0KKyNl bHNlDQorICAgIGRldiA9IGZpbGUtPmZfcGF0aC5kZW50cnktPmRfaW5vZGUt PmlfcmRldjsNCisjZW5kaWYNCisgICAgIG5ucGZzcCA9ICZubnBmc1tNSU5P UihkZXYpXTsNCiANCiAgICAgZG93bigmbm5wZnNwLT5jaGFubmVsX3NlbSk7 DQogICAgIGlmIChubnBmc3AtPnN0YXR1cyAmIE5OUEZTX0RFVldSSVRFKSB7 DQpAQCAtNTA1LDE5ICs1MTUsMzcgQEAgbm5wZnNfZGV2d3JpdGUoc3RydWN0 IGZpbGUgKmZpbGUsIGNvbnN0IA0KIC8qDQogICogTm90IHVzZWQuDQogICov DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIs NiwzNikNCiBzdGF0aWMgaW50DQogbm5wZnNfZGV2aW9jdGwoc3RydWN0IGlu b2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUsDQogCSAgICAgICB1bnNp Z25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykNCisjZWxzZQ0KK3N0 YXRpYyBsb25nDQorbm5wZnNfdW5sb2NrZWRfZGV2aW9jdGwoc3RydWN0IGZp bGUgKmZpbGUsDQorCSAgICAgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25l ZCBsb25nIGFyZykNCisjZW5kaWYNCiB7DQorI2lmIExJTlVYX1ZFUlNJT05f Q09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzNikNCiAgICAgTk5QRlNERUIo WERFQkRFViwgKCJubnBmc19kZXZpb2N0bCBkZXYgPSAlZCwgZmxhZ3MgPSAl ZFxuIiwNCiAJCSAgICAgICBpbm9kZS0+aV9yZGV2LCBmaWxlLT5mX2ZsYWdz KSk7DQorI2VsaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJ T04oMywxOSwwKQ0KKyAgICBOTlBGU0RFQihYREVCREVWLCAoIm5ucGZzX2Rl dmlvY3RsIGRldiA9ICVkLCBmbGFncyA9ICVkXG4iLA0KKwkJICAgICAgIGZp bGUtPmZfZGVudHJ5LT5kX2lub2RlLT5pX3JkZXYsIGZpbGUtPmZfZmxhZ3Mp KTsNCisjZWxzZQ0KKyAgICBOTlBGU0RFQihYREVCREVWLCAoIm5ucGZzX2Rl dmlvY3RsIGRldiA9ICVkLCBmbGFncyA9ICVkXG4iLA0KKwkJICAgICAgIGZp bGUtPmZfcGF0aC5kZW50cnktPmRfaW5vZGUtPmlfcmRldiwgZmlsZS0+Zl9m bGFncykpOw0KKyNlbmRpZg0KICAgICByZXR1cm4gLUVJTlZBTDsNCiB9DQog DQogc3RhdGljIHVuc2lnbmVkIGludA0KIG5ucGZzX2RldnBvbGwoc3RydWN0 IGZpbGUgKmZpbGUsIHBvbGxfdGFibGUgKndhaXQpDQogew0KKyNpZiBMSU5V WF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQogICAg IG5ucGZzX2Rldl90IGRldiA9IGZpbGUtPmZfZGVudHJ5LT5kX2lub2RlLT5p X3JkZXY7DQorI2Vsc2UNCisgICAgbm5wZnNfZGV2X3QgZGV2ID0gZmlsZS0+ Zl9wYXRoLmRlbnRyeS0+ZF9pbm9kZS0+aV9yZGV2Ow0KKyNlbmRpZg0KICAg ICBzdHJ1Y3Qgbm5wZnMgKm5ucGZzcCA9ICZubnBmc1tNSU5PUihkZXYpXTsN CiAgICAgaW50IHJldCA9IDA7DQogICAgIA0KQEAgLTk1Myw3ICs5ODEsMTEg QEAgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBubnBmc19mb3BzID0gew0KICAg ICByZWFkOgkJbm5wZnNfZGV2cmVhZCwNCiAgICAgd3JpdGU6CQlubnBmc19k ZXZ3cml0ZSwNCiAgICAgcG9sbDoJCW5ucGZzX2RldnBvbGwsDQorI2lmIExJ TlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzNikNCiAg ICAgaW9jdGw6CQlubnBmc19kZXZpb2N0bCwNCisjZWxzZQ0KKyAgICB1bmxv Y2tlZF9pb2N0bDoJbm5wZnNfdW5sb2NrZWRfZGV2aW9jdGwsDQorI2VuZGlm DQogICAgIHJlbGVhc2U6CQlubnBmc19kZXZjbG9zZSwNCiAgICAgb3BlbjoJ CW5ucGZzX2Rldm9wZW4sDQogfTsNCkBAIC05NjgsOCArMTAwMCwxMyBAQCBu bnBmc19pbml0X2RldmljZSh2b2lkKQ0KIAlpbml0X3dhaXRxdWV1ZV9oZWFk KCYobm5wZnNbaV0ud2FpdF9xdWV1ZSkpOw0KIAlubnBmc19pbml0cSgmbm5w ZnNbaV0ubWVzc2FnZXEpOw0KIAlubnBmc19pbml0cSgmbm5wZnNbaV0uc2xl ZXBxKTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJ T04oMiw2LDM3KQ0KIAlpbml0X01VVEVYKCZubnBmc1tpXS5pbmFjdGl2ZV9z ZW0pOw0KIAlpbml0X01VVEVYKCZubnBmc1tpXS5jaGFubmVsX3NlbSk7DQor I2Vsc2UNCisJc2VtYV9pbml0KCZubnBmc1tpXS5pbmFjdGl2ZV9zZW0sIDEp Ow0KKwlzZW1hX2luaXQoJm5ucGZzW2ldLmNoYW5uZWxfc2VtLCAxKTsNCisj ZW5kaWYNCiAJSU5JVF9MSVNUX0hFQUQoJm5ucGZzW2ldLmluYWN0aXZlX2xp c3QpOw0KIAlubnBmc1tpXS5ubm9kZXMgPSAwOw0KICAgICB9DQpkaWZmIC11 cHJOIC1Ybm9kaWZmIGFybGEtMC45MC1vbGQvbm5wZnMvbGludXgvbm5wZnNf aW5vZGVvcHMuYyBhcmxhLTAuOTAvbm5wZnMvbGludXgvbm5wZnNfaW5vZGVv cHMuYw0KLS0tIGFybGEtMC45MC1vbGQvbm5wZnMvbGludXgvbm5wZnNfaW5v ZGVvcHMuYwkyMDA2LTEyLTExIDE3OjM1OjI2LjAwMDAwMDAwMCArMDEwMA0K KysrIGFybGEtMC45MC9ubnBmcy9saW51eC9ubnBmc19pbm9kZW9wcy5jCTIw MTYtMDMtMTkgMDI6MDM6MTAuMDAwMDAwMDAwICswMTAwDQpAQCAtNDAsMjUg KzQwLDQxIEBADQogI2luY2x1ZGUgPG5ucGZzL25ucGZzX2Rldi5oPg0KICNp bmNsdWRlIDxubnBmcy9ubnBmc19kaXJlbnQuaD4NCiAjaW5jbHVkZSA8bm5w ZnMvbm5wZnNfc3lzY2FsbHMuaD4NCisjaW5jbHVkZSA8bGludXgvYWlvLmg+ DQogI2luY2x1ZGUgPGxpbnV4L2JpbmZtdHMuaD4NCiAjaW5jbHVkZSA8bGlu dXgvZmlsZS5oPg0KICNpbmNsdWRlIDxsaW51eC9wYWdlbWFwLmg+DQogI2lu Y2x1ZGUgPGxpbnV4L3BhZ2UtZmxhZ3MuaD4NCisjaWYgTElOVVhfVkVSU0lP Tl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDQsMSwwKQ0KKyNpbmNsdWRlIDxs aW51eC91aW8uaD4NCisjZW5kaWYNCiAjaW5jbHVkZSA8bGludXgvd3JpdGVi YWNrLmg+DQogI2luY2x1ZGUgPGFzbS9mY250bC5oPg0KIA0KICNpZmRlZiBS Q1NJRA0KLVJDU0lEKCIkSWQ6IG5ucGZzX2lub2Rlb3BzLmMsdiAxLjIyMyAy MDA2LzEyLzExIDE2OjM1OjI2IHRvbCBFeHAgJCIpOw0KK1JDU0lEKCIkSWQ6 IG5ucGZzX2lub2Rlb3BzLmMsdiAxLjIyNiAyMDEwLzA4LzA4IDIwOjQzOjA0 IHRvbCBFeHAgJCIpOw0KICNlbmRpZg0KIA0KIHN0YXRpYyBpbnQNCiBubnBm c19mc3luY19pbnQoc3RydWN0IGZpbGUgKmZpbGUsIHVfaW50IGZsYWcpOw0K IA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigz LDYsMCkNCiBzdGF0aWMgaW50DQogbm5wZnNfZF9yZXZhbGlkYXRlKHN0cnVj dCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IG5hbWVpZGF0YSAqbmQpOw0KLQ0K KyNlbHNlDQogc3RhdGljIGludA0KK25ucGZzX2RfcmV2YWxpZGF0ZShzdHJ1 Y3QgZGVudHJ5ICpkZW50cnksIHVuc2lnbmVkIGludCBmbGFncyk7DQorI2Vu ZGlmDQorDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJT SU9OKDIsNiwzOCkNCitzdGF0aWMNCitpbnQNCiBubnBmc19kX2RlbGV0ZShz dHJ1Y3QgZGVudHJ5ICpkZW50cnkpOw0KKyNlbHNlDQorc3RhdGljDQoraW50 DQorbm5wZnNfZF9kZWxldGUoY29uc3Qgc3RydWN0IGRlbnRyeSAqZGVudHJ5 KTsNCisjZW5kaWYNCiANCiBzdGF0aWMgdm9pZA0KIG5ucGZzX2RfcmVsZWFz ZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpOw0KQEAgLTEwNSw3ICsxMjEsNyBA QCBubnBmc192bWFfY2xvc2UgKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqDQog fQ0KIA0KIHN0YXRpYyBzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3Qgbm5w ZnNfZmlsZV92bV9vcHMgPSB7DQotICAgIC5ub3BhZ2UJPSBmaWxlbWFwX25v cGFnZSwNCisgICAgLmZhdWx0ICAgICAgPSBmaWxlbWFwX2ZhdWx0LA0KICAg ICAuY2xvc2UJPSBubnBmc192bWFfY2xvc2UsDQogfTsNCiANCkBAIC0xMzQs MTIgKzE1MCwxNCBAQCBubnBmc19wcmludF9wYXRoKHN0cnVjdCBkZW50cnkg KmRlbnRyeSkNCiAgKg0KICAqLw0KIA0KKyNpZiAwDQogdm9pZA0KIG5ucGZz X3ByaW50X2xvY2soY2hhciAqcywgc3RydWN0IHNlbWFwaG9yZSAqc2VtKQ0K IHsNCiAgICAgTk5QRlNERUIoWERFQkxPQ0ssICgibG9jazogJXMgc2VtOiAl cCBjb3VudDogJWRcbiIsDQogCQkgICAgICBzLCBzZW0sIChpbnQpYXRvbWlj X3JlYWQoJnNlbS0+Y291bnQpKSk7DQogfQ0KKyNlbmRpZg0KIA0KIC8qDQog ICoNCkBAIC0xODUsNyArMjAzLDcgQEAgbm5wZnNfZF9pcHV0KHN0cnVjdCBk ZW50cnkgKmRlbnRyeSwgc3RydQ0KICAgICBOTlBGU0RFQihYREVCVk5PUFMs DQogCSAgICAgKCJubnBmc19kX2lwdXQ6IGRlbnRyeSAlcCwgaW5vZGUgJXBc biIsIGRlbnRyeSwgaW5vZGUpKTsNCiAgICAgDQotICAgIGlmIChub2RlLT5m bGFncyAmIE5OUEZTX05PREVfSVBVVCkgLyogWFhYIGxvY2tpbmcgKi8NCisg ICAgaWYgKG5vZGUtPmZsYWdzICYgTk5QRlNfTk9ERV9JUFVUKSAvKiBYWFgg bG9ja2luZy4gbmV2ZXIgc2V0PyAqLw0KIAlubnBmc19pcmVsZShpbm9kZSk7 DQogICAgIGVsc2UNCiAJaXB1dChpbm9kZSk7DQpAQCAtMjEyLDggKzIzMCwx MyBAQCBubnBmc19pbm9kZV92YWxpZChzdHJ1Y3QgaW5vZGUgKmlub2RlKQ0K ICAqIG5ucGZzX2xvb2t1cCBub3cgcmV0dXJucyBhIGRlbnRyeS4NCiAgKi8N CiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04o Myw2LDApDQogc3RhdGljIHN0cnVjdCBkZW50cnkgKg0KIG5ucGZzX2xvb2t1 cCAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwg c3RydWN0IG5hbWVpZGF0YSAqbmQpDQorI2Vsc2UNCitzdGF0aWMgc3RydWN0 IGRlbnRyeSAqDQorbm5wZnNfbG9va3VwIChzdHJ1Y3QgaW5vZGUgKmRpciwg c3RydWN0IGRlbnRyeSAqZGVudHJ5LCB1bnNpZ25lZCBpbnQgZmxhZ3MpDQor I2VuZGlmDQogew0KICAgICBzdHJ1Y3Qgbm5wZnNfbWVzc2FnZV9nZXRub2Rl IG1zZzsNCiAgICAgc3RydWN0IG5ucGZzICpubnBmc3A7DQpAQCAtMjQwLDcg KzI2MywxMSBAQCBubnBmc19sb29rdXAgKHN0cnVjdCBpbm9kZSAqZGlyLCBz dHJ1Y3QgDQogDQogCW1zZy5oZWFkZXIub3Bjb2RlID0gTk5QRlNfTVNHX0dF VE5PREU7DQogICAgICAgICANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9 IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCiAJbXNnLmNyZWQudWlkID0gY3Vy cmVudC0+dWlkOw0KKyNlbHNlDQorICAgICAgICBtc2cuY3JlZC51aWQgPSBj dXJyZW50X3VpZCgpOw0KKyNlbmRpZg0KIAltc2cuY3JlZC5wYWcgPSBubnBm c19nZXRfcGFnKCk7DQogCW1zZy5wYXJlbnRfaGFuZGxlID0gZC0+aGFuZGxl Ow0KICAgICAgICAgDQpAQCAtMzEwLDcgKzMzNywxMSBAQCBubnBmc19vcGVu X3ZhbGlkKHN0cnVjdCBpbm9kZSAqdnAsIHVfaW50DQogICAgICAgew0KIAlz dHJ1Y3Qgbm5wZnNfbWVzc2FnZV9vcGVuIG1zZzsNCiAJbXNnLmhlYWRlci5v cGNvZGUgPSBOTlBGU19NU0dfT1BFTjsNCisjaWYgTElOVVhfVkVSU0lPTl9D T0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCiAJbXNnLmNyZWQudWlk ID0gY3VycmVudC0+dWlkOw0KKyNlbHNlDQorICAgICAgICBtc2cuY3JlZC51 aWQgPSBjdXJyZW50X3VpZCgpOw0KKyNlbmRpZg0KIAltc2cuY3JlZC5wYWcg PSBubnBmc19nZXRfcGFnKCk7DQogCW1zZy5oYW5kbGUgPSB4bi0+aGFuZGxl Ow0KIAltc2cudG9rZW5zID0gdG9rOw0KQEAgLTM5Nyw3ICs0MjgsMTEgQEAg ZmluZF9maXJzdF9ibG9jayhzdHJ1Y3Qgbm5wZnNfbm9kZSAqbm9kZQ0KIHN0 YXRpYyBpbnQNCiBubnBmc19mc3luY19pbnQoc3RydWN0IGZpbGUgKmZpbGUs IHVfaW50IGZsYWcpDQogew0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBL RVJORUxfVkVSU0lPTigzLDE5LDApDQogICAgIHN0cnVjdCBpbm9kZSAqaW5v ZGUgPSBmaWxlLT5mX2RlbnRyeS0+ZF9pbm9kZTsNCisjZWxzZQ0KKyAgICBz dHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZS0+Zl9wYXRoLmRlbnRyeS0+ZF9p bm9kZTsNCisjZW5kaWYNCiAgICAgc3RydWN0IG5ucGZzICpubnBmc3AgPSBO TlBGU19GUk9NX1ZOT0RFKGlub2RlKTsNCiAgICAgc3RydWN0IG5ucGZzX25v ZGUgKnhuID0gVk5PREVfVE9fWE5PREUoaW5vZGUpOw0KICAgICBsb2ZmX3Qg bGVuID0gaV9zaXplX3JlYWQoaW5vZGUpOw0KQEAgLTQyNSw3ICs0NjAsMTEg QEAgbm5wZnNfZnN5bmNfaW50KHN0cnVjdCBmaWxlICpmaWxlLCB1X2ludA0K IA0KIAltc2cuaGVhZGVyLm9wY29kZSA9IE5OUEZTX01TR19QVVREQVRBOw0K IAltc2cuY3JlZC5wYWcgPSBubnBmc19nZXRfcGFnKCk7DQorI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgpDQogCW1z Zy5jcmVkLnVpZCA9IGN1cnJlbnQtPnVpZDsNCisjZWxzZQ0KKyAgICAgICAg bXNnLmNyZWQudWlkID0gY3VycmVudF91aWQoKTsNCisjZW5kaWYNCiAJbXNn LmhhbmRsZSA9IHhuLT5oYW5kbGU7DQogCW1zZy5mbGFnICAgPSBmbGFnOw0K IAltc2cub2Zmc2V0ID0gb2ZmOw0KQEAgLTQ2MCwxNCArNDk5LDI3IEBAIG5u cGZzX2ZzeW5jX2ludChzdHJ1Y3QgZmlsZSAqZmlsZSwgdV9pbnQNCiAgKg0K ICAqLw0KIA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVS U0lPTigyLDYsMzUpDQogc3RhdGljIGludA0KIG5ucGZzX2ZzeW5jKHN0cnVj dCBmaWxlICpmaWxlLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGludCBkYXRh c3luYykNCisjZWxpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVS U0lPTigzLDEsMCkNCitzdGF0aWMgaW50DQorbm5wZnNfZnN5bmMoc3RydWN0 IGZpbGUgKmZpbGUsIGludCBkYXRhc3luYykNCisjZWxzZQ0KK3N0YXRpYyBp bnQNCitubnBmc19mc3luYyhzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IHN0 YXJ0LCBsb2ZmX3QgZW5kLCBpbnQgZGF0YXN5bmMpDQorI2VuZGlmDQogew0K KyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2 LDM1KQ0KKyAgICBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkgPSBmaWxlLT5mX3Bh dGguZGVudHJ5Ow0KKyNlbmRpZg0KICAgICBzdHJ1Y3QgaW5vZGUgKmlub2Rl ID0gREVOVFJZX1RPX0lOT0RFKGRlbnRyeSk7DQogICAgIHN0cnVjdCBubnBm cyAqbm5wZnNwOw0KICAgICBzdHJ1Y3Qgbm5wZnNfbm9kZSAqeG47DQogICAg IGludCBlcnJvciA9IDA7DQogDQorICAgICh2b2lkKW5ucGZzcDsNCisNCiAg ICAgZXJyb3IgPSBubnBmc19pbm9kZV92YWxpZChpbm9kZSk7DQogICAgIGlm IChlcnJvcikNCiAJcmV0dXJuIGVycm9yOw0KQEAgLTUxMSw3ICs1NjMsMTEg QEAgbm5wZnNfYXR0cl92YWxpZChzdHJ1Y3QgaW5vZGUgKiB2cCwgdV9pbg0K ICAgICAgICAgICAgIHN0cnVjdCBubnBmc19tZXNzYWdlX2dldGF0dHIgbXNn Ow0KIA0KICAgICAgICAgICAgIG1zZy5oZWFkZXIub3Bjb2RlID0gTk5QRlNf TVNHX0dFVEFUVFI7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJO RUxfVkVSU0lPTigyLDYsMjgpDQogICAgICAgICAgICAgbXNnLmNyZWQudWlk ID0gY3VycmVudC0+dWlkOw0KKyNlbHNlDQorICAgICAgICAgICAgbXNnLmNy ZWQudWlkID0gY3VycmVudF91aWQoKTsNCisjZW5kaWYNCiAgICAgICAgICAg ICBtc2cuY3JlZC5wYWcgPSBwYWc7DQogICAgICAgICAgICAgbXNnLmhhbmRs ZSA9IHhuLT5oYW5kbGU7DQogICAgICAgICAgICAgZXJyb3IgPSBubnBmc19t ZXNzYWdlX3JwYyhubnBmc3AsICZtc2cuaGVhZGVyLCBzaXplb2YobXNnKSk7 DQpAQCAtNTUxLDcgKzYwNywxMSBAQCBubnBmc19yaWdodHNfdmFsaWQoc3Ry dWN0IGlub2RlICogdnAsIG5uDQogICAgICAgICAgICAgc3RydWN0IG5ucGZz X21lc3NhZ2VfZ2V0YXR0ciBtc2c7DQogDQogICAgICAgICAgICAgbXNnLmhl YWRlci5vcGNvZGUgPSBOTlBGU19NU0dfR0VUQVRUUjsNCisjaWYgTElOVVhf VkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCiAgICAg ICAgICAgICBtc2cuY3JlZC51aWQgPSBjdXJyZW50LT51aWQ7DQorI2Vsc2UN CisgICAgICAgICAgICBtc2cuY3JlZC51aWQgPSBjdXJyZW50X3VpZCgpOw0K KyNlbmRpZg0KICAgICAgICAgICAgIG1zZy5jcmVkLnBhZyA9IHBhZzsNCiAg ICAgICAgICAgICBtc2cuaGFuZGxlID0geG4tPmhhbmRsZTsNCiAgICAgICAg ICAgICBlcnJvciA9IG5ucGZzX21lc3NhZ2VfcnBjKG5ucGZzcCwgJm1zZy5o ZWFkZXIsIHNpemVvZihtc2cpKTsNCkBAIC01OTIsMTEgKzY1MiwyNSBAQCBj aGVja19yaWdodHMgKG5ucGZzX3JpZ2h0cyByaWdodHMsIGludCBtDQogICog V2UgZG9uJ3QgaG9sZCBpX211dGV4Lg0KICAqLw0KIA0KKyNpZiAoTElOVVhf VkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDM4KSB8fCBMSU5V WF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMywxLDApKQ0KK3N0 YXRpYyBpbnQNCitubnBmc19wZXJtaXNzaW9uKHN0cnVjdCBpbm9kZSAqaW5v ZGUsIGludCBtb2RlKQ0KKyNlbHNlDQogc3RhdGljIGludA0KLW5ucGZzX3Bl cm1pc3Npb24oc3RydWN0IGlub2RlICppbm9kZSwgaW50IG1vZGUsIHN0cnVj dCBuYW1laWRhdGEgKm5kKQ0KK25ucGZzX3Blcm1pc3Npb24oc3RydWN0IGlu b2RlICppbm9kZSwgaW50IG1vZGUsIHVuc2lnbmVkIGludCBmbGFncykNCisj ZW5kaWYNCiB7DQogICAgIGludCBlcnJvciA9IDA7DQotICAgIG5ucGZzX3Bh Z190IHBhZyA9IG5ucGZzX2dldF9wYWcoKTsNCisgICAgbm5wZnNfcGFnX3Qg cGFnOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJ T04oMywxLDApDQorICAgIGlmIChtb2RlICYgTUFZX05PVF9CTE9DSykNCisg ICAgICAgIHJldHVybiAtRUNISUxEOw0KKyNlbGlmIExJTlVYX1ZFUlNJT05f Q09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMzgpDQorICAgIGlmIChmbGFn cyAmIElQRVJNX0ZMQUdfUkNVKQ0KKyAgICAgICAgcmV0dXJuIC1FQ0hJTEQ7 DQorI2VuZGlmDQorDQorICAgIHBhZyA9IG5ucGZzX2dldF9wYWcoKTsNCiAg ICAgDQogICAgIE5OUEZTREVCKFhERUJWTk9QUywgKCJubnBmc19hY2Nlc3Mg KCVwKSBtb2RlID0gMCVvIGFsaWFzZXM6IiwgaW5vZGUsIG1vZGUpKTsNCiAg ICAgbm5wZnNfcHJpbnRfYWxpYXNlcyhpbm9kZSk7DQpAQCAtNjM2LDcgKzcx MCwxMSBAQCBubnBmc19kb19nZXRkYXRhKHN0cnVjdCBubnBmc19ub2RlICp4 biwgDQogICAgIGludCBlcnJvcjsNCiANCiAgICAgbXNnLmhlYWRlci5vcGNv ZGUgPSBOTlBGU19NU0dfR0VUREFUQTsNCisjaWYgTElOVVhfVkVSU0lPTl9D T0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCiAgICAgbXNnLmNyZWQu dWlkID0gY3VycmVudC0+dWlkOw0KKyNlbHNlDQorICAgIG1zZy5jcmVkLnVp ZCA9IGN1cnJlbnRfdWlkKCk7DQorI2VuZGlmDQogICAgIG1zZy5jcmVkLnBh ZyA9IG5ucGZzX2dldF9wYWcoKTsNCiAgICAgbXNnLmhhbmRsZSA9IHhuLT5o YW5kbGU7DQogICAgIG1zZy50b2tlbnMgPSB0b2s7DQpAQCAtNzUwLDExICs4 MjgsMTkgQEAgbm5wZnNfZGF0YV92YWxpZChzdHJ1Y3QgaW5vZGUgKmlub2Rl LCB1Xw0KIGludCBubnBmc19maWxlX21tYXAoc3RydWN0IGZpbGUgKiBmaWxl LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiB2bWEpDQogew0KICAgICBpbnQg ZmxhZ3MsIGVycm9yID0gMDsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwg S0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0KICAgICBzdHJ1Y3QgaW5vZGUgKmlu b2RlID0gZmlsZS0+Zl9kZW50cnktPmRfaW5vZGU7DQorI2Vsc2UNCisgICAg c3RydWN0IGlub2RlICppbm9kZSA9IGZpbGUtPmZfcGF0aC5kZW50cnktPmRf aW5vZGU7DQorI2VuZGlmDQogICAgIHN0cnVjdCBhZGRyZXNzX3NwYWNlICpt YXBwaW5nID0gZmlsZS0+Zl9tYXBwaW5nOw0KIA0KICAgICBOTlBGU0RFQihY REVCVk5PUFMsICgibm5wZnNfbW1hcCBpbm9kZTogJXBcbiIsIGlub2RlKSk7 DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMs MTksMCkNCiAgICAgbm5wZnNfcHJpbnRfcGF0aChmaWxlLT5mX2RlbnRyeSk7 DQorI2Vsc2UNCisgICAgbm5wZnNfcHJpbnRfcGF0aChmaWxlLT5mX3BhdGgu ZGVudHJ5KTsNCisjZW5kaWYNCiAgICAgTk5QRlNERUIoWERFQlZOT1BTLCAo Im5ucGZzX21tYXAgYWxpYXNlczoiKSk7DQogICAgIG5ucGZzX3ByaW50X2Fs aWFzZXMoaW5vZGUpOw0KICAgICANCkBAIC03ODksMzcgKzg3NSw1MCBAQCBp bnQgbm5wZnNfZmlsZV9tbWFwKHN0cnVjdCBmaWxlICogZmlsZSwgDQogICoN CiAgKi8NCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZF UlNJT04oMywxNiwwKQ0KIHN0YXRpYyBzc2l6ZV90DQogbm5wZnNfYWlvX3Jl YWQoc3RydWN0IGtpb2NiICppb2NiLA0KLSNpZiBMSU5VWF9WRVJTSU9OX0NP REUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDE5KQ0KIAkgICAgICAgY29uc3Qg c3RydWN0IGlvdmVjICppb3YsIHVuc2lnbmVkIGxvbmcgbnJfc2VncywNCisJ ICAgICAgIGxvZmZfdCBwb3MpDQogI2Vsc2UNCi0JICAgICAgIGNoYXIgX191 c2VyICpidWYsIHNpemVfdCBjb3VudCwNCitzdGF0aWMgc3NpemVfdA0KK25u cGZzX3JlYWRfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3Zf aXRlciAqdG8pDQogI2VuZGlmDQotCSAgICAgICBsb2ZmX3QgcG9zKQ0KIHsN CiAgICAgaW50IGVycm9yID0gMDsNCiAgICAgc3RydWN0IGZpbGUgKmZpbGUg PSBpb2NiLT5raV9maWxwOw0KLSNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0g S0VSTkVMX1ZFUlNJT04oMiw2LDE5KQ0KKyNpZiBMSU5VWF9WRVJTSU9OX0NP REUgPCBLRVJORUxfVkVSU0lPTigzLDEyLDApDQogICAgIHNzaXplX3QgY291 bnQgPSBpb2NiLT5raV9sZWZ0Ow0KKyNlbGlmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDQsMSwwKQ0KKyAgICBzc2l6ZV90IGNvdW50 ID0gaW9jYi0+a2lfbmJ5dGVzOw0KKyNlbHNlDQorICAgIHNzaXplX3QgY291 bnQgPSBpb3ZfaXRlcl9jb3VudCh0byk7DQogI2VuZGlmDQorI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCiAgICAg c3RydWN0IGlub2RlICppbm9kZSA9IGZpbGUtPmZfZGVudHJ5LT5kX2lub2Rl Ow0KKyNlbHNlDQorICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlLT5m X3BhdGguZGVudHJ5LT5kX2lub2RlOw0KKyNlbmRpZg0KICAgICBzdHJ1Y3Qg bm5wZnNfbm9kZSAqeG4gPSBWTk9ERV9UT19YTk9ERShpbm9kZSk7DQogICAg IA0KICAgICBpZiAoeG4gIT0gTlVMTCkNCiAJTk5QRlNERUIoWERFQlZOT1BT LCAoIm5ucGZzX3JlYWRfZmlsZSglcCk6IHRva2VuczogMHgleFxuIiwNCiAJ CQkgICAgIGlub2RlLCB4bi0+dG9rZW5zKSk7DQogDQorI2lmIExJTlVYX1ZF UlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTYsMCkNCiAgICAgZXJy b3IgPSBubnBmc19kYXRhX3ZhbGlkKGlub2RlLCBOTlBGU19EQVRBX1IsIHBv cywgcG9zICsgY291bnQpOw0KKyNlbHNlDQorICAgIGVycm9yID0gbm5wZnNf ZGF0YV92YWxpZChpbm9kZSwgTk5QRlNfREFUQV9SLCBpb2NiLT5raV9wb3Ms IGlvY2ItPmtpX3BvcyArIGNvdW50KTsNCisjZW5kaWYNCiAgICAgaWYgKGVy cm9yKSB7DQogCU5OUEZTREVCKFhERUJWTk9QUywgKCJubnBmc19yZWFkX2Zp bGU6IGRhdGEgbm90IHZhbGlkICVkXG4iLCBlcnJvcikpOw0KIAlyZXR1cm4g ZXJyb3I7DQogICAgIH0NCiAgICAgDQotI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMTkpDQorI2lmIExJTlVYX1ZFUlNJ T05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTYsMCkNCiAgICAgZXJyb3Ig PSBnZW5lcmljX2ZpbGVfYWlvX3JlYWQoaW9jYiwgaW92LCBucl9zZWdzLCBw b3MpOw0KICNlbHNlDQotICAgIGVycm9yID0gZ2VuZXJpY19maWxlX2Fpb19y ZWFkKGlvY2IsIGJ1ZiwgY291bnQsIHBvcyk7DQorICAgIGVycm9yID0gZ2Vu ZXJpY19maWxlX3JlYWRfaXRlcihpb2NiLCB0byk7DQogI2VuZGlmDQogICAg IE5OUEZTREVCKFhERUJWTk9QUywgKCJubnBmc19yZWFkX2ZpbGU6IGVycm9y ID0gJWRcbiIsIGVycm9yKSk7DQogICAgIHJldHVybiBlcnJvcjsNCkBAIC04 MjksMjMgKzkyOCwzNiBAQCBubnBmc19haW9fcmVhZChzdHJ1Y3Qga2lvY2Ig KmlvY2IsDQogICoNCiAgKi8NCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RF IDwgS0VSTkVMX1ZFUlNJT04oMywxNiwwKQ0KIHN0YXRpYyBzc2l6ZV90DQog bm5wZnNfYWlvX3dyaXRlKHN0cnVjdCBraW9jYiAqaW9jYiwNCi0jaWYgTElO VVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwxOSkNCiAJ CWNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92LCB1bnNpZ25lZCBsb25nIG5yX3Nl Z3MsDQorCQlsb2ZmX3QgcG9zKQ0KICNlbHNlDQotCQljb25zdCBjaGFyIF9f dXNlciAqYnVmLCBzaXplX3QgY291bnQsIA0KK3N0YXRpYyBzc2l6ZV90DQor bm5wZnNfd3JpdGVfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBp b3ZfaXRlciAqZnJvbSkNCiAjZW5kaWYNCi0JCWxvZmZfdCBwb3MpDQogew0K ICAgICBpbnQgZXJyb3IgPSAwOw0KICAgICBzdHJ1Y3QgZmlsZSAqZmlsZSA9 IGlvY2ItPmtpX2ZpbHA7DQotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBL RVJORUxfVkVSU0lPTigyLDYsMTkpDQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDMsMTIsMCkNCiAgICAgc3NpemVfdCBjb3Vu dCA9IGlvY2ItPmtpX2xlZnQ7DQorI2VsaWYgTElOVVhfVkVSU0lPTl9DT0RF IDwgS0VSTkVMX1ZFUlNJT04oNCwxLDApDQorICAgIHNzaXplX3QgY291bnQg PSBpb2NiLT5raV9uYnl0ZXM7DQorI2Vsc2UNCisgICAgc3NpemVfdCBjb3Vu dCA9IGlvdl9pdGVyX2NvdW50KGZyb20pOw0KICNlbmRpZg0KKyNpZiBMSU5V WF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQogICAg IHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlLT5mX2RlbnRyeS0+ZF9pbm9k ZTsNCisjZWxzZQ0KKyAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZS0+ Zl9wYXRoLmRlbnRyeS0+ZF9pbm9kZTsNCisjZW5kaWYNCiAgICAgc3RydWN0 IG5ucGZzX25vZGUgKnhuID0gVk5PREVfVE9fWE5PREUoaW5vZGUpOw0KKyNp ZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE2LDAp DQogICAgIGxvZmZfdCByZWFscG9zID0gcG9zOw0KKyNlbHNlDQorICAgIGxv ZmZfdCByZWFscG9zID0gaW9jYi0+a2lfcG9zOw0KKyNlbmRpZg0KICAgICAN CiAgICAgTk5QRlNERUIoWERFQlZOT1BTLCAoIm5ucGZzX2Fpb193cml0ZSgl cCk6IHRva2VuczogMHgleFxuIiwNCiAJCQkgaW5vZGUsIHhuLT50b2tlbnMp KTsNCkBAIC04NTksMTAgKzk3MSwxMCBAQCBubnBmc19haW9fd3JpdGUoc3Ry dWN0IGtpb2NiICppb2NiLA0KIAlyZXR1cm4gZXJyb3I7DQogICAgIH0NCiAN Ci0jaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIs NiwxOSkNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJ T04oMywxNiwwKQ0KICAgICBlcnJvciA9IGdlbmVyaWNfZmlsZV9haW9fd3Jp dGUoaW9jYiwgaW92LCBucl9zZWdzLCBwb3MpOw0KICNlbHNlDQotICAgIGVy cm9yID0gZ2VuZXJpY19maWxlX2Fpb193cml0ZShpb2NiLCBidWYsIGNvdW50 LCBwb3MpOw0KKyAgICBlcnJvciA9IGdlbmVyaWNfZmlsZV93cml0ZV9pdGVy KGlvY2IsIGZyb20pOw0KICNlbmRpZg0KICAgICBpZiAoIUlTX0VSUl9WQUxV RShlcnJvcikpDQogCXhuLT5mbGFncyB8PSBOTlBGU19EQVRBX0RJUlRZOyAv KiBYWFggcmFjZSAqLw0KQEAgLTg3MSw5ICs5ODMsMTkgQEAgbm5wZnNfYWlv X3dyaXRlKHN0cnVjdCBraW9jYiAqaW9jYiwNCiAgICAgcmV0dXJuIGVycm9y Ow0KIH0NCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZF UlNJT04oMywzLDApDQogc3RhdGljIGludA0KIG5ucGZzX2NyZWF0ZShzdHJ1 Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LA0KIAkgICAg IGludCBtb2RlLCBzdHJ1Y3QgbmFtZWlkYXRhICpuZCkNCisjZWxpZiBMSU5V WF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDYsMCkNCitzdGF0 aWMgaW50DQorbm5wZnNfY3JlYXRlKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1 Y3QgZGVudHJ5ICpkZW50cnksDQorCSAgICAgdW1vZGVfdCBtb2RlLCBzdHJ1 Y3QgbmFtZWlkYXRhICpuZCkNCisjZWxzZQ0KK3N0YXRpYyBpbnQNCitubnBm c19jcmVhdGUoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRl bnRyeSwNCisJICAgICB1bW9kZV90IG1vZGUsIGJvb2wgZXhjbCkNCisjZW5k aWYNCiB7DQogICAgIHN0cnVjdCBubnBmcyAqbm5wZnNwOw0KICAgICBzdHJ1 Y3Qgbm5wZnNfbm9kZSAqeG47DQpAQCAtOTAzLDkgKzEwMjUsMTcgQEAgbm5w ZnNfY3JlYXRlKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZA0KICAgICBY QV9DTEVBUigmbXNnLmF0dHIpOw0KICAgICBYQV9TRVRfTU9ERSgmbXNnLmF0 dHIsIG1vZGUpOw0KICAgICBYQV9TRVRfVFlQRSgmbXNnLmF0dHIsIE5OUEZT X0ZJTEVfUkVHKTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5F TF9WRVJTSU9OKDIsNiwyOCkNCiAgICAgWEFfU0VUX0dJRCgmbXNnLmF0dHIs IGN1cnJlbnQtPmZzZ2lkKTsNCisjZWxzZQ0KKyAgICBYQV9TRVRfR0lEKCZt c2cuYXR0ciwgY3VycmVudF9mc2dpZCgpKTsNCisjZW5kaWYNCiAgICAgbXNn Lm1vZGUgPSAwOwkJLyogWFhYICovDQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgpDQogICAgIG1zZy5jcmVkLnVp ZCA9IGN1cnJlbnQtPnVpZDsNCisjZWxzZQ0KKyAgICBtc2cuY3JlZC51aWQg PSBjdXJyZW50X3VpZCgpOw0KKyNlbmRpZg0KICAgICBtc2cuY3JlZC5wYWcg PSBubnBmc19nZXRfcGFnKCk7DQogICAgIGVycm9yID0gbm5wZnNfbWVzc2Fn ZV9ycGMobm5wZnNwLCAmbXNnLmhlYWRlciwgc2l6ZW9mKG1zZykpOw0KICAg ICBpZiAoZXJyb3IgPT0gMCkNCkBAIC05NDYsNyArMTA3NiwxMSBAQCBubnBm c191bmxpbmsgKHN0cnVjdCBpbm9kZSAqIGRpciwgc3RydWN0DQogICAgIGlm IChzdHJsY3B5KG1zZy5uYW1lLCBkZW50cnktPmRfbmFtZS5uYW1lLCBzaXpl b2YobXNnLm5hbWUpKSA+PSBOTlBGU19NQVhfTkFNRSkNCiAJcmV0dXJuIC1F TkFNRVRPT0xPTkc7DQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8PSBL RVJORUxfVkVSU0lPTigyLDYsMjgpDQogICAgIG1zZy5jcmVkLnVpZCA9IGN1 cnJlbnQtPnVpZDsNCisjZWxzZQ0KKyAgICBtc2cuY3JlZC51aWQgPSBjdXJy ZW50X3VpZCgpOw0KKyNlbmRpZg0KICAgICBtc2cuY3JlZC5wYWcgPSBubnBm c19nZXRfcGFnKCk7DQogICAgIGVycm9yID0gbm5wZnNfbWVzc2FnZV9ycGMo bm5wZnNwLCAmbXNnLmhlYWRlciwgc2l6ZW9mKG1zZykpOw0KICAgICBpZiAo ZXJyb3IgPT0gMCkNCkBAIC05OTEsNyArMTEyNSwxMSBAQCBubnBmc19yZW5h bWUgKHN0cnVjdCBpbm9kZSAqIG9sZF9kaXIsIHN0DQogICAgIGlmIChzdHJs Y3B5KG1zZy5uZXdfbmFtZSwgbmV3X2RlbnRyeS0+ZF9uYW1lLm5hbWUsIHNp emVvZihtc2cubmV3X25hbWUpKSA+PSBOTlBGU19NQVhfTkFNRSkNCiAJcmV0 dXJuIC1FTkFNRVRPT0xPTkc7DQogCQ0KKyNpZiBMSU5VWF9WRVJTSU9OX0NP REUgPD0gS0VSTkVMX1ZFUlNJT04oMiw2LDI4KQ0KICAgICBtc2cuY3JlZC51 aWQgPSBjdXJyZW50LT51aWQ7DQorI2Vsc2UNCisgICAgbXNnLmNyZWQudWlk ID0gY3VycmVudF91aWQoKTsNCisjZW5kaWYNCiAgICAgbXNnLmNyZWQucGFn ID0gbm5wZnNfZ2V0X3BhZygpOw0KICAgICBlcnJvciA9IG5ucGZzX21lc3Nh Z2VfcnBjKG5ucGZzcCwgJm1zZy5oZWFkZXIsIHNpemVvZihtc2cpKTsNCiAg ICAgaWYgKGVycm9yID09IDApDQpAQCAtMTAwOCw4ICsxMTQ2LDEzIEBAIG5u cGZzX3JlbmFtZSAoc3RydWN0IGlub2RlICogb2xkX2Rpciwgc3QNCiAgICAg cmV0dXJuIGVycm9yOw0KIH0NCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RF IDwgS0VSTkVMX1ZFUlNJT04oMywzLDApDQogc3RhdGljIGludA0KIG5ucGZz X21rZGlyKHN0cnVjdCBpbm9kZSAqIGRpciwgc3RydWN0IGRlbnRyeSAqZGVu dHJ5LCBpbnQgbW9kZSkNCisjZWxzZQ0KK3N0YXRpYyBpbnQNCitubnBmc19t a2RpcihzdHJ1Y3QgaW5vZGUgKiBkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRy eSwgdW1vZGVfdCBtb2RlKQ0KKyNlbmRpZg0KIHsNCiAgICAgc3RydWN0IG5u cGZzICpubnBmc3A7DQogICAgIHN0cnVjdCBubnBmc19ub2RlICp4bjsNCkBA IC0xMDQwLDkgKzExODMsMTcgQEAgbm5wZnNfbWtkaXIoc3RydWN0IGlub2Rl ICogZGlyLCBzdHJ1Y3QgZA0KIAlYQV9DTEVBUigmbXNnLmF0dHIpOw0KIAlY QV9TRVRfTU9ERSgmbXNnLmF0dHIsIG1vZGUpOw0KIAlYQV9TRVRfVFlQRSgm bXNnLmF0dHIsIE5OUEZTX0ZJTEVfRElSKTsNCisjaWYgTElOVVhfVkVSU0lP Tl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCiAJWEFfU0VUX0dJ RCgmbXNnLmF0dHIsIGN1cnJlbnQtPmZzZ2lkKTsNCisjZWxzZQ0KKyAgICAg ICAgWEFfU0VUX0dJRCgmbXNnLmF0dHIsIGN1cnJlbnRfZnNnaWQoKSk7DQor I2VuZGlmDQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJORUxf VkVSU0lPTigyLDYsMjgpDQogCW1zZy5jcmVkLnVpZCA9IGN1cnJlbnQtPnVp ZDsNCisjZWxzZQ0KKyAgICAgICAgbXNnLmNyZWQudWlkID0gY3VycmVudF91 aWQoKTsNCisjZW5kaWYNCiAJbXNnLmNyZWQucGFnID0gbm5wZnNfZ2V0X3Bh ZygpOw0KIAllcnJvciA9IG5ucGZzX21lc3NhZ2VfcnBjKG5ucGZzcCwgJm1z Zy5oZWFkZXIsIHNpemVvZihtc2cpKTsNCiAJaWYgKGVycm9yID09IDApDQpA QCAtMTA4Myw3ICsxMjM0LDExIEBAIG5ucGZzX3JtZGlyKHN0cnVjdCBpbm9k ZSAqIGRpciwgc3RydWN0IGQNCiAgICAgbXNnLnBhcmVudF9oYW5kbGUgPSB4 bi0+aGFuZGxlOw0KICAgICBpZiAoc3RybGNweShtc2cubmFtZSwgZGVudHJ5 LT5kX25hbWUubmFtZSwgc2l6ZW9mKG1zZy5uYW1lKSkgPj0gTk5QRlNfTUFY X05BTUUpDQogCSAgICByZXR1cm4gLUVOQU1FVE9PTE9ORzsNCisjaWYgTElO VVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCiAg ICAgbXNnLmNyZWQudWlkID0gY3VycmVudC0+dWlkOw0KKyNlbHNlDQorICAg IG1zZy5jcmVkLnVpZCA9IGN1cnJlbnRfdWlkKCk7DQorI2VuZGlmDQogICAg IG1zZy5jcmVkLnBhZyA9IG5ucGZzX2dldF9wYWcoKTsNCiAgICAgZXJyb3Ig PSBubnBmc19tZXNzYWdlX3JwYyhubnBmc3AsICZtc2cuaGVhZGVyLCBzaXpl b2YobXNnKSk7DQogICAgIGlmIChlcnJvciA9PSAwKQ0KQEAgLTExMjgsNyAr MTI4MywxMSBAQCBzdGF0aWMgaW50IG5ucGZzX2xpbmsoc3RydWN0IGRlbnRy eSAqb2xkDQogCWlmIChzdHJsY3B5KG1zZy5uYW1lLCBuYW1lLCBzaXplb2Yo bXNnLm5hbWUpKSA+PSBOTlBGU19NQVhfTkFNRSkNCiAJICAgIHJldHVybiAt RU5BTUVUT09MT05HOw0KIA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPD0g S0VSTkVMX1ZFUlNJT04oMiw2LDI4KQ0KIAltc2cuY3JlZC51aWQgPSBjdXJy ZW50LT51aWQ7DQorI2Vsc2UNCisgICAgICAgIG1zZy5jcmVkLnVpZCA9IGN1 cnJlbnRfdWlkKCk7DQorI2VuZGlmDQogCW1zZy5jcmVkLnBhZyA9IG5ucGZz X2dldF9wYWcoKTsNCiAJZXJyb3IgPSBubnBmc19tZXNzYWdlX3JwYyhubnBm c3AsICZtc2cuaGVhZGVyLCBzaXplb2YobXNnKSk7DQogCWlmIChlcnJvciA9 PSAwKQ0KQEAgLTExNTcsMjkgKzEzMTYsNDcgQEAgc3RhdGljIGludCBubnBm c19zeW1saW5rKHN0cnVjdCBpbm9kZSAqZA0KICAgICB4biA9IFZOT0RFX1RP X1hOT0RFKGRpcik7DQogDQogICAgIHsNCi0Jc3RydWN0IG5ucGZzX21lc3Nh Z2Vfc3ltbGluayBtc2c7DQorCXN0cnVjdCBubnBmc19tZXNzYWdlX3N5bWxp bmsgKm1zZyA9IE5VTEw7DQogDQotCW1zZy5oZWFkZXIub3Bjb2RlID0gTk5Q RlNfTVNHX1NZTUxJTks7DQotCW1zZy5wYXJlbnRfaGFuZGxlID0geG4tPmhh bmRsZTsNCi0JaWYgKHN0cmxjcHkobXNnLm5hbWUsIG5hbWUsIHNpemVvZiht c2cubmFtZSkpID49IE5OUEZTX01BWF9OQU1FKQ0KLQkgICAgcmV0dXJuIC1F TkFNRVRPT0xPTkc7DQotCWlmIChzdHJsY3B5KG1zZy5jb250ZW50cywgc3lt bmFtZSwgc2l6ZW9mKG1zZy5jb250ZW50cykpID49IE5OUEZTX01BWF9TWU1M SU5LX0NPTlRFTlQpDQotCSAgICByZXR1cm4gLUVOQU1FVE9PTE9ORzsNCi0J WEFfQ0xFQVIoJm1zZy5hdHRyKTsNCi0JWEFfU0VUX01PREUoJm1zZy5hdHRy LCAwNzc3KTsNCi0JWEFfU0VUX1RZUEUoJm1zZy5hdHRyLCBOTlBGU19GSUxF X0xOSyk7DQotCVhBX1NFVF9HSUQoJm1zZy5hdHRyLCBjdXJyZW50LT5mc2dp ZCk7DQorCW1zZyA9IGttYWxsb2Moc2l6ZW9mKCptc2cpLCBHRlBfS0VSTkVM KTsNCiANCi0JbXNnLmNyZWQudWlkID0gY3VycmVudC0+dWlkOw0KLQltc2cu Y3JlZC5wYWcgPSBubnBmc19nZXRfcGFnKCk7DQotCWVycm9yID0gbm5wZnNf bWVzc2FnZV9ycGMobm5wZnNwLCAmbXNnLmhlYWRlciwgc2l6ZW9mKG1zZykp Ow0KKwlpZiAobXNnID09IE5VTEwpDQorCSAgcmV0dXJuIC1FTk9NRU07DQor DQorCW1zZy0+aGVhZGVyLm9wY29kZSA9IE5OUEZTX01TR19TWU1MSU5LOw0K Kwltc2ctPnBhcmVudF9oYW5kbGUgPSB4bi0+aGFuZGxlOw0KKwlpZiAoc3Ry bGNweShtc2ctPm5hbWUsIG5hbWUsIHNpemVvZihtc2ctPm5hbWUpKSA+PSBO TlBGU19NQVhfTkFNRSkgew0KKwkgIGtmcmVlKG1zZyk7DQorCSAgcmV0dXJu IC1FTkFNRVRPT0xPTkc7DQorCX0NCisJaWYgKHN0cmxjcHkobXNnLT5jb250 ZW50cywgc3ltbmFtZSwgc2l6ZW9mKG1zZy0+Y29udGVudHMpKSA+PSBOTlBG U19NQVhfU1lNTElOS19DT05URU5UKSB7DQorCSAga2ZyZWUobXNnKTsNCisJ ICByZXR1cm4gLUVOQU1FVE9PTE9ORzsNCisJfQ0KKwlYQV9DTEVBUigmbXNn LT5hdHRyKTsNCisJWEFfU0VUX01PREUoJm1zZy0+YXR0ciwgMDc3Nyk7DQor CVhBX1NFVF9UWVBFKCZtc2ctPmF0dHIsIE5OUEZTX0ZJTEVfTE5LKTsNCisj aWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwy OCkNCisJWEFfU0VUX0dJRCgmbXNnLT5hdHRyLCBjdXJyZW50LT5mc2dpZCk7 DQorI2Vsc2UNCisgICAgICAgIFhBX1NFVF9HSUQoJm1zZy0+YXR0ciwgY3Vy cmVudF9mc2dpZCgpKTsNCisjZW5kaWYNCisNCisjaWYgTElOVVhfVkVSU0lP Tl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCisJbXNnLT5jcmVk LnVpZCA9IGN1cnJlbnQtPnVpZDsNCisjZWxzZQ0KKyAgICAgICAgbXNnLT5j cmVkLnVpZCA9IGN1cnJlbnRfdWlkKCk7DQorI2VuZGlmDQorCW1zZy0+Y3Jl ZC5wYWcgPSBubnBmc19nZXRfcGFnKCk7DQorCWVycm9yID0gbm5wZnNfbWVz c2FnZV9ycGMobm5wZnNwLCAmbXNnLT5oZWFkZXIsIHNpemVvZigqbXNnKSk7 DQogCWlmIChlcnJvciA9PSAwKQ0KLQkgICAgZXJyb3IgPSBOTlBGU19NU0df V0FLRVVQX0VSUk9SKCZtc2cpOw0KKwkgICAgZXJyb3IgPSBOTlBGU19NU0df V0FLRVVQX0VSUk9SKG1zZyk7DQogDQogCS8qIFhYWCBzaG91bGQgdGhpcyBy ZWFsbHkgYmUgaGVyZSAqLw0KIAlpZiAoREVOVFJZX1RPX1hERU5UUlkoZGVu dHJ5KS0+eGRfZmxhZ3MgPT0gMCkgew0KIAkgICAgcHJpbnRrKEtFUk5fRU1F UkcgIk5OUEZTIFBhbmljOiBubnBmc19zeW1saW5rOiBkZW50cnkgbm90IHZh bGlkXG4iKTsNCiAJfQ0KKwlrZnJlZShtc2cpOw0KICAgICB9DQogDQogICAg IHJldHVybiBlcnJvcjsNCkBAIC0xMTg4LDEyICsxMzY1LDIxIEBAIHN0YXRp YyBpbnQgbm5wZnNfc3ltbGluayhzdHJ1Y3QgaW5vZGUgKmQNCiAvKg0KICAq IFdlIGhvbGQgaV9tdXRleC4NCiAgKi8NCisjaWYgTElOVVhfVkVSU0lPTl9D T0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxMSwwKQ0KIHN0YXRpYyBpbnQNCiBu bnBmc19yZWFkZGlyKHN0cnVjdCBmaWxlICogZmlsZSwgdm9pZCAqIGRpcmVu dCwgZmlsbGRpcl90IGZpbGxkaXIpDQorI2Vsc2UNCitzdGF0aWMgaW50DQor bm5wZnNfaXRlcmF0ZShzdHJ1Y3QgZmlsZSAqIGZpbGUsIHN0cnVjdCBkaXJf Y29udGV4dCAqY3R4KQ0KKyNlbmRpZg0KIHsNCiAgICAgaW50IGVycm9yOw0K ICAgICBsb2ZmX3Qgb2Zmc2V0LCBiZWdpbl9vZmZzZXQ7DQorI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCiAgICAg c3RydWN0IGlub2RlICppbm9kZSA9IGZpbGUtPmZfZGVudHJ5LT5kX2lub2Rl Ow0KKyNlbHNlDQorICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlLT5m X3BhdGguZGVudHJ5LT5kX2lub2RlOw0KKyNlbmRpZg0KICAgICBzdHJ1Y3Qg aW5vZGUgKmNhY2hlX2lub2RlOw0KICAgICBzdHJ1Y3Qgbm5wZnNfbm9kZSAq eG4gPSBWTk9ERV9UT19YTk9ERShpbm9kZSk7DQogICAgIGNoYXIgKmJ1ZjsN CkBAIC0xMjE3LDYgKzE0MDMsNyBAQCBubnBmc19yZWFkZGlyKHN0cnVjdCBm aWxlICogZmlsZSwgdm9pZCAqDQogDQogICAgIGNhY2hlX2lub2RlID0gYmFj a2ZpbGUtPmZfbWFwcGluZy0+aG9zdDsNCiANCisjaWYgTElOVVhfVkVSU0lP Tl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxMSwwKQ0KICAgICB3aGlsZSAo ZmlsZS0+Zl9wb3MgPCBpX3NpemVfcmVhZChjYWNoZV9pbm9kZSkpIHsNCiAJ Tk5QRlNERUIoWERFQlJFQURESVIsDQogCSAgICAgICAoIm5ucGZzX3JlYWRk aXIgZmlsZS0+Zl9wb3M6ICVkIGlfc2l6ZTogJWRcbiIsDQpAQCAtMTIyOSw2 ICsxNDE2LDIwIEBAIG5ucGZzX3JlYWRkaXIoc3RydWN0IGZpbGUgKiBmaWxl LCB2b2lkICoNCiAJbWFwcGluZyA9IGJhY2tmaWxlLT5mX21hcHBpbmc7DQog CWlucGFnZSA9IGZpbGUtPmZfcG9zICYgKFBBR0VfQ0FDSEVfU0laRS0xKTsN CiAJcGFnZV9udW0gPSBmaWxlLT5mX3BvcyA+PiBQQUdFX0NBQ0hFX1NISUZU Ow0KKyNlbHNlDQorICAgIHdoaWxlIChjdHgtPnBvcyA8IGlfc2l6ZV9yZWFk KGNhY2hlX2lub2RlKSkgew0KKwlOTlBGU0RFQihYREVCUkVBRERJUiwNCisJ ICAgICAgICgibm5wZnNfcmVhZGRpciBmaWxlLT5mX3BvczogJWQgaV9zaXpl OiAlZFxuIiwNCisJCShpbnQpIGN0eC0+cG9zLCAoaW50KSBjYWNoZV9pbm9k ZS0+aV9zaXplKSk7DQorCWJlZ2luX29mZnNldCA9IGN0eC0+cG9zICZ+IChO TlBGU19ESVJFTlRfQkxPQ0tTSVpFIC0gMSk7DQorCW9mZnNldCA9IGN0eC0+ cG9zICYgKE5OUEZTX0RJUkVOVF9CTE9DS1NJWkUgLSAxKTsNCisJY3R4LT5w b3MgPSBiZWdpbl9vZmZzZXQ7DQorCU5OUEZTREVCKFhERUJSRUFERElSLCAo Im5ucGZzX3JlYWRkaXIgYmVnaW5fb2Zmc2V0OiAlZCBvZmZzZXQ6ICVkXG4i LA0KKwkJCSAgICAgKGludCliZWdpbl9vZmZzZXQsIChpbnQpb2Zmc2V0KSk7 DQorCW1hcHBpbmcgPSBiYWNrZmlsZS0+Zl9tYXBwaW5nOw0KKwlpbnBhZ2Ug PSBjdHgtPnBvcyAmIChQQUdFX0NBQ0hFX1NJWkUtMSk7DQorCXBhZ2VfbnVt ID0gY3R4LT5wb3MgPj4gUEFHRV9DQUNIRV9TSElGVDsNCisjZW5kaWYNCiAN CiAJTk5QRlNERUIoWERFQlJFQURESVIsDQogCSAgICAgICAoIm5ucGZzX3Jl YWRkaXIgaW5wYWdlOiAlZCBwYWdlX251bTogJWx1XG4iLA0KQEAgLTEyNjQs NiArMTQ2NSw3IEBAIG5ucGZzX3JlYWRkaXIoc3RydWN0IGZpbGUgKiBmaWxl LCB2b2lkICoNCiAJCSAgICAoaW50KSB4ZGlyZW50LT5kX25hbWxlbiwNCiAJ CSAgICAoaW50KSAob2Zmc2V0K2JlZ2luX29mZnNldCkpKTsNCiANCisjaWYg TElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxMSwwKQ0K IAkgICAgaWYgKHhkaXJlbnQtPmRfZmlsZW5vICE9IDANCiAJCSYmIChmaWxs ZGlyX2Vycm9yID0gZmlsbGRpciAoZGlyZW50LA0KIAkJCQkgICAgIHhkaXJl bnQtPmRfbmFtZSwNCkBAIC0xMjc1LDEyICsxNDc3LDI4IEBAIG5ucGZzX3Jl YWRkaXIoc3RydWN0IGZpbGUgKiBmaWxlLCB2b2lkICoNCiAJCQkgKCJubnBm c19yZWFkZGlyIGZpbGxkaXI6ICVkXG4iLCBmaWxsZGlyX2Vycm9yKSk7DQog CQlicmVhazsNCiAJICAgIH0NCisjZWxzZQ0KKwkgICAgaWYgKHhkaXJlbnQt PmRfZmlsZW5vICE9IDANCisJCSYmIChmaWxsZGlyX2Vycm9yID0gZGlyX2Vt aXQgKGN0eCwNCisJCQkJICAgICB4ZGlyZW50LT5kX25hbWUsDQorCQkJCSAg ICAgeGRpcmVudC0+ZF9uYW1sZW4sDQorCQkJCSAgICAgeGRpcmVudC0+ZF9m aWxlbm8sDQorCQkJCSAgICAgRFRfVU5LTk9XTikpIDwgMCkgew0KKwkJTk5Q RlNERUIoWERFQlJFQURESVIsDQorCQkJICgibm5wZnNfcmVhZGRpciBmaWxs ZGlyOiAlZFxuIiwgZmlsbGRpcl9lcnJvcikpOw0KKwkJYnJlYWs7DQorCSAg ICB9DQorI2VuZGlmDQogCSAgICBvZmZzZXQgKz0geGRpcmVudC0+ZF9yZWNs ZW47DQogDQogCSAgICBpZiAoeGRpcmVudC0+ZF9yZWNsZW4gPT0gMCkgew0K IAkJcHJpbnRrKEtFUk5fRU1FUkcgIk5OUEZTIFBhbmljOiAiDQogCQkgICAg ICAgImVtcHR5IGRpcmVudCBhdCAlbGxkIGluIG5ucGZzX3JlYWRkaXIsIHBv cyAlZCBzaXplICVkXG4iLA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBL RVJORUxfVkVSU0lPTigzLDExLDApDQogCQkgICAgICAgKGxvbmcgbG9uZylv ZmZzZXQsIChpbnQpZmlsZS0+Zl9wb3MsDQorI2Vsc2UNCisJCSAgICAgICAo bG9uZyBsb25nKW9mZnNldCwgKGludCljdHgtPnBvcywNCisjZW5kaWYNCiAJ CSAgICAgICAoaW50KWNhY2hlX2lub2RlLT5pX3NpemUpOw0KIAkJTk5QRlNE RUIoWERFQlZOT1BTLCAoImlub2RlOiAlcCBhbGlhc2VzOiIsIGlub2RlKSk7 DQogCQlubnBmc19wcmludF9hbGlhc2VzKGlub2RlKTsNCkBAIC0xMjk4LDcg KzE1MTYsMTEgQEAgbm5wZnNfcmVhZGRpcihzdHJ1Y3QgZmlsZSAqIGZpbGUs IHZvaWQgKg0KIAlpZiAob2Zmc2V0ID4gTk5QRlNfRElSRU5UX0JMT0NLU0la RSkNCiAJICAgIG9mZnNldCA9IE5OUEZTX0RJUkVOVF9CTE9DS1NJWkU7DQog DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMs MTEsMCkNCiAJZmlsZS0+Zl9wb3MgPSBiZWdpbl9vZmZzZXQgKyBvZmZzZXQ7 DQorI2Vsc2UNCisJY3R4LT5wb3MgPSBiZWdpbl9vZmZzZXQgKyBvZmZzZXQ7 DQorI2VuZGlmDQogDQogCWlmIChlcnJvciB8fCBvZmZzZXQgPCBOTlBGU19E SVJFTlRfQkxPQ0tTSVpFKQ0KIAkgICAgYnJlYWs7DQpAQCAtMTMzMSwxMiAr MTU1MywyNSBAQCBubnBmc19yZWFkbGluayAoc3RydWN0IGRlbnRyeSAqZGVu dHJ5LCBjDQogICogV2UgZG9uJ3QgaG9sZCBpX211dGV4Lg0KICAqLw0KIA0K KyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTig0LDIs MCkNCiBzdGF0aWMgdm9pZCAqDQogbm5wZnNfZm9sbG93X2xpbmsgKHN0cnVj dCBkZW50cnkgKmRlbnRyeSwNCiAJCSBzdHJ1Y3QgbmFtZWlkYXRhICpuZCkN CisjZWxpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTig0 LDUsMCkNCitzdGF0aWMgY29uc3QgY2hhciAqDQorbm5wZnNfZm9sbG93X2xp bmsgKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwNCisJCSB2b2lkICoqcGFnZSkN CisjZWxzZQ0KK3N0YXRpYyBjb25zdCBjaGFyICoNCitubnBmc19nZXRfbGlu ayAoc3RydWN0IGRlbnRyeSAqZGVudHJ5LA0KKwkJIHN0cnVjdCBpbm9kZSAq aW5vZGUsDQorCQkgc3RydWN0IGRlbGF5ZWRfY2FsbCAqZG9uZSkNCisjZW5k aWYNCiB7DQogICAgIGludCBlcnJvciA9IDA7DQorI2lmIExJTlVYX1ZFUlNJ T05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDQsNSwwKQ0KICAgICBzdHJ1Y3Qg aW5vZGUgKmlub2RlID0gREVOVFJZX1RPX0lOT0RFKGRlbnRyeSk7DQorI2Vu ZGlmDQogDQogICAgIE5OUEZTREVCKFhERUJWTk9QUywgKCJubnBmc19mb2xs b3dfbGlua1xuIikpOw0KICAgICANCkBAIC0xMzQ0LDcgKzE1NzksMTMgQEAg bm5wZnNfZm9sbG93X2xpbmsgKHN0cnVjdCBkZW50cnkgKmRlbnRyeQ0KICAg ICBpZiAoZXJyb3IpDQogICAgICAgIHJldHVybiBFUlJfUFRSKGVycm9yKTsN CiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04o NCwyLDApDQogICAgIHJldHVybiBwYWdlX2ZvbGxvd19saW5rX2xpZ2h0KGRl bnRyeSwgbmQpOw0KKyNlbGlmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5F TF9WRVJTSU9OKDQsNSwwKQ0KKyAgICByZXR1cm4gcGFnZV9mb2xsb3dfbGlu a19saWdodChkZW50cnksIHBhZ2UpOw0KKyNlbHNlDQorICAgIHJldHVybiBw YWdlX2dldF9saW5rKGRlbnRyeSwgaW5vZGUsIGRvbmUpOw0KKyNlbmRpZg0K IH0NCiANCiAvKg0KQEAgLTEzOTgsNyArMTYzOSwxMSBAQCBubnBmc19zZXRh dHRyIChzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0DQogICAgICAgICBzdHJ1 Y3Qgbm5wZnNfbWVzc2FnZV9wdXRhdHRyIG1zZzsNCiANCiAgICAgICAgIG1z Zy5oZWFkZXIub3Bjb2RlID0gTk5QRlNfTVNHX1BVVEFUVFI7DQorI2lmIExJ TlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgpDQog CW1zZy5jcmVkLnVpZCA9IGN1cnJlbnQtPnVpZDsNCisjZWxzZQ0KKyAgICAg ICAgbXNnLmNyZWQudWlkID0gY3VycmVudF91aWQoKTsNCisjZW5kaWYNCiAJ bXNnLmNyZWQucGFnID0gbm5wZnNfZ2V0X3BhZygpOw0KICAgICAgICAgbXNn LmhhbmRsZSA9IHhuLT5oYW5kbGU7DQogICAgICAgICBubnBmc19pYXR0cjJh dHRyKHhuLCBhdHRyLCAmbXNnLmF0dHIpOw0KQEAgLTE0MjIsNiArMTY2Nyw4 IEBAIG5ucGZzX3JlbGVhc2VfZmlsZSAoc3RydWN0IGlub2RlICppbm9kZSwN CiAgICAgc3RydWN0IG5ucGZzX25vZGUgKnhuOw0KICAgICBpbnQgZXJyb3Ig PSAwOw0KIA0KKyAgICAodm9pZClubnBmc3A7DQorDQogICAgIE5OUEZTREVC KFhERUJWTk9QUywgKCJubnBmc19yZWxlYXNlX2ZpbGVcbiIpKTsNCiANCiAg ICAgZXJyb3IgPSBubnBmc19pbm9kZV92YWxpZChpbm9kZSk7DQpAQCAtMTQ1 MCwxOCArMTY5NywxOCBAQCBubnBmc19yZWxlYXNlX2ZpbGUgKHN0cnVjdCBp bm9kZSAqaW5vZGUsDQogICoNCiAgKi8NCiANCi0jaWYgTElOVVhfVkVSU0lP Tl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwxOCkNCiBzdGF0aWMgaW50 DQogbm5wZnNfZmx1c2goc3RydWN0IGZpbGUgKmZpbGUsIGZsX293bmVyX3Qg aWQpDQotI2Vsc2UNCi1zdGF0aWMgaW50DQotbm5wZnNfZmx1c2goc3RydWN0 IGZpbGUgKmZpbGUpDQotI2VuZGlmDQogew0KICAgICBOTlBGU0RFQihYREVC Vk5PUFMsICgibm5wZnNfZmx1c2hcbiIpKTsNCiANCisjaWYgTElOVVhfVkVS U0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0KICAgICBpZiAo ZmlsZSAmJiBmaWxlLT5mX2RlbnRyeSAmJiBmaWxlLT5mX2RlbnRyeS0+ZF9p bm9kZSkNCiAJcmV0dXJuIG5ucGZzX3JlbGVhc2VfZmlsZShmaWxlLT5mX2Rl bnRyeS0+ZF9pbm9kZSwgZmlsZSk7DQorI2Vsc2UNCisgICAgaWYgKGZpbGUg JiYgZmlsZS0+Zl9wYXRoLmRlbnRyeSAmJiBmaWxlLT5mX3BhdGguZGVudHJ5 LT5kX2lub2RlKQ0KKwlyZXR1cm4gbm5wZnNfcmVsZWFzZV9maWxlKGZpbGUt PmZfcGF0aC5kZW50cnktPmRfaW5vZGUsIGZpbGUpOw0KKyNlbmRpZg0KICAg ICBlbHNlDQogCXJldHVybiAwOw0KIH0NCkBAIC0xNDcwLDEwICsxNzE3LDI0 IEBAIG5ucGZzX2ZsdXNoKHN0cnVjdCBmaWxlICpmaWxlKQ0KICAqIFJldHVy biAxIGlmIGBkZW50cnknIGlzIHN0aWxsIHZhbGlkLCBvdGhlcndpc2UgMC4N CiAgKi8NCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZF UlNJT04oMyw2LDApDQorc3RhdGljIGludA0KK25ucGZzX2RfcmV2YWxpZGF0 ZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBuYW1laWRhdGEgKm5k KQ0KKyNlbHNlDQogc3RhdGljIGludA0KLW5ucGZzX2RfcmV2YWxpZGF0ZShz dHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBuYW1laWRhdGEgKm5kKSAN CitubnBmc19kX3JldmFsaWRhdGUoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCB1 bnNpZ25lZCBpbnQgZmxhZ3MpDQorI2VuZGlmDQogew0KICAgICBzdHJ1Y3Qg aW5vZGUgKmlub2RlID0gREVOVFJZX1RPX0lOT0RFKGRlbnRyeSk7DQorDQor I2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigzLDYs MCkNCisgICAgaWYgKGZsYWdzICYgTE9PS1VQX1JDVSkNCisgICAgICAgIHJl dHVybiAtRUNISUxEOw0KKyNlbGlmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBL RVJORUxfVkVSU0lPTigyLDYsMzgpDQorICAgIGlmIChuZCAmJiBuZC0+Zmxh Z3MgJiBMT09LVVBfUkNVKQ0KKyAgICAgICAgcmV0dXJuIC1FQ0hJTEQ7DQor I2VuZGlmDQorDQogICAgIE5OUEZTREVCKFhERUJWTk9QUywgKCJubnBmc19k X3JldmFsaWRhdGUgJXAgXCIlLipzXCIgKGlub2RlICVwKVxuIiwNCiAJCSAg ICAgICBkZW50cnksDQogCQkgICAgICAgKGludClkZW50cnktPmRfbmFtZS5s ZW4sDQpAQCAtMTUxOSw5ICsxNzgwLDE1IEBAIG5ucGZzX2RfcmV2YWxpZGF0 ZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkNCiAgICAgcmV0dXJuIDA7DQogfQ0K IA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigy LDYsMzgpDQogc3RhdGljDQogaW50DQogbm5wZnNfZF9kZWxldGUoc3RydWN0 IGRlbnRyeSAqZGVudHJ5KQ0KKyNlbHNlDQorc3RhdGljDQoraW50DQorbm5w ZnNfZF9kZWxldGUoY29uc3Qgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQ0KKyNl bmRpZg0KIHsNCiAgICAgc3RydWN0IGlub2RlICppbm9kZTsNCiAgICAgc3Ry dWN0IG5ucGZzX25vZGUgKnhuOw0KQEAgLTE1NDYsMTEgKzE4MTMsMTYgQEAg bm5wZnNfZF9kZWxldGUoc3RydWN0IGRlbnRyeSAqZGVudHJ5KQ0KIH0NCiAN CiBzdGF0aWMgc3NpemVfdA0KLW5ucGZzX3NlbmRmaWxlKHN0cnVjdCBmaWxl ICpmaWxlLCBsb2ZmX3QgKnBwb3MsIHNpemVfdCBjb3VudCwNCi0JICAgICAg IHJlYWRfYWN0b3JfdCBhY3Rvciwgdm9pZCAqdGFyZ2V0KQ0KK25ucGZzX3Nw bGljZV9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3QgKnBwb3MsDQor CQkgIHN0cnVjdCBwaXBlX2lub2RlX2luZm8gKnBpcGUsIHNpemVfdCBjb3Vu dCwNCisJCSAgdW5zaWduZWQgaW50IGZsYWdzKQ0KIHsNCiAgICAgaW50IGVy cm9yID0gMDsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZF UlNJT04oMywxOSwwKQ0KICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmls ZS0+Zl9kZW50cnktPmRfaW5vZGU7DQorI2Vsc2UNCisgICAgc3RydWN0IGlu b2RlICppbm9kZSA9IGZpbGUtPmZfcGF0aC5kZW50cnktPmRfaW5vZGU7DQor I2VuZGlmDQogICAgIHN0cnVjdCBubnBmc19ub2RlICp4biA9IFZOT0RFX1RP X1hOT0RFKGlub2RlKTsNCiAgICAgDQogICAgIGlmICh4biAhPSBOVUxMKQ0K QEAgLTE1NjEsOCArMTgzMyw3IEBAIG5ucGZzX3NlbmRmaWxlKHN0cnVjdCBm aWxlICpmaWxlLCBsb2ZmX3QNCiAJTk5QRlNERUIoWERFQlZOT1BTLCAoIm5u cGZzX3NlbmRmaWxlOiBkYXRhIG5vdCB2YWxpZCAlZFxuIiwgZXJyb3IpKTsN CiAJcmV0dXJuIGVycm9yOw0KICAgICB9DQotDQotICAgIGVycm9yID0gZ2Vu ZXJpY19maWxlX3NlbmRmaWxlKGZpbGUsIHBwb3MsIGNvdW50LCBhY3Rvciwg dGFyZ2V0KTsNCisgICAgZXJyb3IgPSBmaWxlLT5mX29wLT5zcGxpY2VfcmVh ZChmaWxlLCBwcG9zLCBwaXBlLCBjb3VudCwgZmxhZ3MpOw0KIA0KICAgICBO TlBGU0RFQihYREVCVk5PUFMsICgibm5wZnNfc2VuZGZpbGU6IGVycm9yID0g JWRcbiIsIGVycm9yKSk7DQogICAgIHJldHVybiBlcnJvcjsNCkBAIC0xNjM5 LDQwICsxOTEwLDQxIEBAIG5ucGZzX3dyaXRlX2JhY2twYWdlKHN0cnVjdCBw YWdlICpwYWdlLCANCiAJc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcg PSBiYWNrZmlsZS0+Zl9tYXBwaW5nOw0KIAl1bnNpZ25lZCBsZW4gPSBQQUdF X0NBQ0hFX1NJWkU7DQogCXN0cnVjdCBwYWdlICpiYWNrcGFnZTsNCisJdm9p ZCAqZnNkYXRhOw0KIAl1bnNpZ25lZCBsb25nIG9mZnNldDsNCiANCiAJaW50 IGVycm9yOw0KIAkNCi0JZG8gew0KLQkJYmFja3BhZ2UgPSBncmFiX2NhY2hl X3BhZ2UobWFwcGluZywgbm5wZnNfZ2V0X2JhY2tpbmRleChwYWdlKSk7DQot CQlpZiAoIWJhY2twYWdlKSB7DQotCQkJcHJpbnRrKCJubnBmc193cml0ZV9i YWNrcGFnZTogbm8gcGFnZVxuIik7DQotCQkJcmV0dXJuIC1FSU87DQotCQl9 DQorCSh2b2lkKW9mZnNldDsNCiANCi0JCWVycm9yID0gbWFwcGluZy0+YV9v cHMtPnByZXBhcmVfd3JpdGUoYmFja2ZpbGUsIGJhY2twYWdlLA0KLQkJCQkJ CSAgICAgIDAsIGxlbik7DQorCWRvIHsNCisJCWVycm9yID0gcGFnZWNhY2hl X3dyaXRlX2JlZ2luKGJhY2tmaWxlLCBtYXBwaW5nLCAwLCBsZW4sDQorCQkJ CQkgICAgICBBT1BfRkxBR19VTklOVEVSUlVQVElCTEUsDQorCQkJCQkgICAg ICAmYmFja3BhZ2UsICZmc2RhdGEpOw0KIAkJaWYgKCFlcnJvcikgew0KIAkJ CWNvcHlfaGlnaHBhZ2UoYmFja3BhZ2UsIHBhZ2UpOw0KIAkJCWZsdXNoX2Rj YWNoZV9wYWdlKGJhY2twYWdlKTsNCi0JCQllcnJvciA9IG1hcHBpbmctPmFf b3BzLT5jb21taXRfd3JpdGUoYmFja2ZpbGUsIGJhY2twYWdlLA0KLQkJCQkJ CQkgICAgIDAsIGxlbik7DQorCQkJZXJyb3IgPSBwYWdlY2FjaGVfd3JpdGVf ZW5kKGJhY2tmaWxlLCBtYXBwaW5nLCAwLCBsZW4sDQorCQkJCQlsZW4sIGJh Y2twYWdlLCBmc2RhdGEpOw0KKwkJCWlmIChlcnJvciA+IDApDQorCQkJCWVy cm9yID0gMDsNCiAJCX0NCiAJCWlmIChlcnJvciA9PSBBT1BfVFJVTkNBVEVE X1BBR0UpIHsNCi0JCQlwYWdlX2NhY2hlX3JlbGVhc2UoYmFja3BhZ2UpOw0K IAkJCWNvbnRpbnVlOw0KIAkJfQ0KIAl9IHdoaWxlICgwKTsNCiANCiAJb2Zm c2V0ID0gcGFnZV9vZmZzZXQoYmFja3BhZ2UpOw0KLQl1bmxvY2tfcGFnZShi YWNrcGFnZSk7DQotCXBhZ2VfY2FjaGVfcmVsZWFzZShiYWNrcGFnZSk7DQog DQogCWlmIChlcnJvcikNCiAJCXByaW50aygibm5wZnNfd3JpdGVfYmFja3Bh Z2U6IEVJT1xuIik7DQogI2lmZGVmIE5OUEZTX1NBRkVfU1lOQw0KIAllbHNl DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIs NiwzMikNCiAJCSh2b2lkKXN5bmNfcGFnZV9yYW5nZShtYXBwaW5nLT5ob3N0 LCBtYXBwaW5nLCBvZmZzZXQsIGxlbik7DQorI2Vsc2UNCisJCSh2b2lkKWZp bGVtYXBfd3JpdGVfYW5kX3dhaXRfcmFuZ2UobWFwcGluZywgb2Zmc2V0LCBv ZmZzZXQgKyBsZW4gLSAxKTsNCisjZW5kaWYNCiAjZW5kaWYNCiAJDQogCXJl dHVybiBlcnJvcjsNCkBAIC0xNjg5LDEzICsxOTYxLDkgQEAgbm5wZnNfcmVh ZF9iYWNrcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSwgcw0KIAlzdHJ1Y3QgcGFn ZSAqYmFja3BhZ2U7DQogCXVuc2lnbmVkIGxvbmcgb2Zmc2V0Ow0KIA0KLSNp ZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDE4 KQ0KKwkodm9pZClvZmZzZXQ7DQorDQogCWJhY2twYWdlID0gcmVhZF9tYXBw aW5nX3BhZ2UobWFwcGluZywgbiwgYmFja2ZpbGUpOw0KLSNlbHNlDQotCWJh Y2twYWdlID0gcmVhZF9jYWNoZV9wYWdlKG1hcHBpbmcsIG4sDQotCQkJCSAg IChmaWxsZXJfdCAqKW1hcHBpbmctPmFfb3BzLT5yZWFkcGFnZSwNCi0JCQkJ ICAgYmFja2ZpbGUpOw0KLSNlbmRpZg0KIAlpZiAoIUlTX0VSUihiYWNrcGFn ZSkpIHsNCiAJCXdhaXRfb25fcGFnZV9sb2NrZWQoYmFja3BhZ2UpOw0KIA0K QEAgLTE4NDIsMTEgKzIxMTAsMTcgQEAgbm5wZnNfcHJlcGFyZV93cml0ZShz dHJ1Y3QgZmlsZSAqZmlsZSwgcw0KIA0KIAlpZiAobW9kc2l6ZSA+IGlfc2l6 ZV9yZWFkKGlub2RlKSkgew0KIAkJaW50IGVycm9yOw0KKyNpZiBMSU5VWF9W RVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDgsMCkNCiAJCWVycm9y ID0gdm10cnVuY2F0ZShpbm9kZSwgbW9kc2l6ZSk7DQorI2Vsc2UNCisJCWVy cm9yID0gaW5vZGVfbmV3c2l6ZV9vayhpbm9kZSwgbW9kc2l6ZSk7DQorCQlp ZighZXJyb3IpDQorCQkJdHJ1bmNhdGVfc2V0c2l6ZShpbm9kZSwgbW9kc2l6 ZSk7DQorI2VuZGlmDQogCQlpZiAoZXJyb3IpIHsNCiAJCQlwcmludGsoIm5u cGZzX3ByZXBhcmVfd3JpdGU6IHRydW5jYXRlKCVsbHUpIC0+ICVkXG4iLA0K IAkJCSAgICAgICBtb2RzaXplLCAtZXJyb3IpOw0KLQkJCUJVRygpOyAvKiBY WFggbm90IGNvcnJlY3QgKi8NCisJCQkvKkJVRygpOyovIC8qIFhYWCBub3Qg Y29ycmVjdCAqLw0KIAkJfQ0KIAl9DQogDQpAQCAtMTg3Miw0NCArMjE0Niwx MTggQEAgbm5wZnNfcHJlcGFyZV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwg cw0KIAlyZXR1cm4gcmV0Ow0KIH0NCiANCisjaWYgTElOVVhfVkVSU0lPTl9D T0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCiBzdGF0aWMgaW50DQot bm5wZnNfY29tbWl0X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qg cGFnZSAqcGFnZSwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pDQorbm5w ZnNfd3JpdGVfYmVnaW4oc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBhZGRy ZXNzX3NwYWNlICptYXBwaW5nLCBsb2ZmX3QgcG9zLA0KK3Vuc2lnbmVkIGxl biwgdW5zaWduZWQgZmxhZ3MsIHN0cnVjdCBwYWdlICoqcGFnZXAsIHZvaWQg Kipmc2RhdGEpDQogew0KLSAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gcGFn ZS0+bWFwcGluZy0+aG9zdDsNCi0gICAgbG9mZl90IHBvcyA9ICgobG9mZl90 KXBhZ2UtPmluZGV4IDw8IFBBR0VfQ0FDSEVfU0hJRlQpICsgdG87DQorCXN0 cnVjdCBwYWdlICpwYWdlOw0KKwlwZ29mZl90IGluZGV4Ow0KKwl1bnNpZ25l ZCBmcm9tOw0KKwlpbnQgcmV0ID0gMDsNCiANCi0gICAgaWYgKHBvcyA+IGlu b2RlLT5pX3NpemUpIHsNCi0JaV9zaXplX3dyaXRlKGlub2RlLCBwb3MpOw0K KwlpbmRleCA9IHBvcyA+PiBQQUdFX0NBQ0hFX1NISUZUOw0KKwlmcm9tID0g cG9zICYgKFBBR0VfQ0FDSEVfU0laRSAtIDEpOw0KIA0KLQlzcGluX2xvY2so Jmlub2RlLT5pX2xvY2spOw0KLQlpbm9kZS0+aV9ibG9ja3MgPSAocG9zICsg SV9CTE9DS1NfVU5JVCAtIDEpID4+IElfQkxPQ0tTX0JJVFM7DQotCXNwaW5f dW5sb2NrKCZpbm9kZS0+aV9sb2NrKTsNCi0gICAgfQ0KLSAgICBzZXRfcGFn ZV9kaXJ0eShwYWdlKTsNCisJcGFnZSA9IGdyYWJfY2FjaGVfcGFnZV93cml0 ZV9iZWdpbihtYXBwaW5nLCBpbmRleCwgZmxhZ3MpOw0KKwlpZiAoIXBhZ2Up DQorCQlyZXR1cm4gLUVOT01FTTsNCisNCisJKnBhZ2VwID0gcGFnZTsNCisN CisJcmV0ID0gbm5wZnNfcHJlcGFyZV93cml0ZShmaWxlLCBwYWdlLCBmcm9t LCBmcm9tICsgbGVuKTsNCisJaWYgKHJldCkgew0KKwkJdW5sb2NrX3BhZ2Uo cGFnZSk7DQorCQlwYWdlX2NhY2hlX3JlbGVhc2UocGFnZSk7DQorCX0NCisN CisJcmV0dXJuIHJldDsNCit9DQorI2VuZGlmDQogDQorLyogWFhYIHdlIHVz ZSB0aGUgc3lzdGVtIHByb3ZpZGVkIHNpbXBsZV9jb21taXRfd3JpdGUgaW5z dGVhZCBzbyB0aGlzIGZ1bmN0aW9uIGlzIHVudXNlZCBmb3Igbm93ICovDQog I2lmIDANCi0gICAgew0KLQljaGFyICphZGRyOw0KLQlrbWFwKHBhZ2UpOw0K LQlhZGRyID0gcGFnZV9hZGRyZXNzKHBhZ2UpOw0KLQlOTlBGU0RFQihYREVC Vk5PUFMsICgibm5wZnNfY29tbWl0X3dyaXRlKCVwKTogJXgleCV4JXhcbiIs DQorc3RhdGljIGludA0KK25ucGZzX2NvbW1pdF93cml0ZShzdHJ1Y3QgZmls ZSAqZmlsZSwgc3RydWN0IHBhZ2UgKnBhZ2UsDQorCQkgICB1bnNpZ25lZCBm cm9tLCB1bnNpZ25lZCB0bykNCit7DQorCXN0cnVjdCBpbm9kZSAqaW5vZGUg PSBwYWdlLT5tYXBwaW5nLT5ob3N0Ow0KKwlsb2ZmX3QgcG9zID0gKChsb2Zm X3QpcGFnZS0+aW5kZXggPDwgUEFHRV9DQUNIRV9TSElGVCkgKyB0bzsNCisN CisJaWYgKCFQYWdlVXB0b2RhdGUocGFnZSkpDQorCQlTZXRQYWdlVXB0b2Rh dGUocGFnZSk7DQorDQorCWlmIChwb3MgPiBpbm9kZS0+aV9zaXplKSB7DQor CQlpX3NpemVfd3JpdGUoaW5vZGUsIHBvcyk7DQorDQorCQlzcGluX2xvY2so Jmlub2RlLT5pX2xvY2spOw0KKwkJaW5vZGUtPmlfYmxvY2tzID0gKHBvcyAr IElfQkxPQ0tTX1VOSVQgLSAxKSA+PiBJX0JMT0NLU19CSVRTOw0KKwkJc3Bp bl91bmxvY2soJmlub2RlLT5pX2xvY2spOw0KKwl9DQorCXNldF9wYWdlX2Rp cnR5KHBhZ2UpOw0KKw0KKyNpZiAwDQorCXsNCisJICAgIGNoYXIgKmFkZHI7 DQorCSAgICBrbWFwKHBhZ2UpOw0KKwkgICAgYWRkciA9IHBhZ2VfYWRkcmVz cyhwYWdlKTsNCisJICAgIE5OUEZTREVCKFhERUJWTk9QUywgKCJubnBmc19j b21taXRfd3JpdGUoJXApOiAleCV4JXgleFxuIiwNCiAJCQkgICAgIGZpbGUt PmZfbWFwcGluZy0+aG9zdCwgDQogCQkJICAgICBhZGRyWzBdLCBhZGRyWzFd LCBhZGRyWzJdLCBhZGRyWzNdKSk7DQotCWt1bm1hcChwYWdlKTsNCi0gICAg fQ0KKwkgICAga3VubWFwKHBhZ2UpOw0KKwl9DQogI2VuZGlmDQotICAgIA0K LSAgICByZXR1cm4gMDsNCisgDQorCXJldHVybiAwOw0KIH0NCisjZW5kaWYN CiANCi0jaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9O KDIsNiwxOCkNCi1jb25zdA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0g S0VSTkVMX1ZFUlNJT04oMiw2LDI4KQ0KKy8qIFhYWCB3ZSB1c2UgdGhlIHN5 c3RlbSBwcm92aWRlZCBzaW1wbGVfd3JpdGVfZW5kIGluc3RlYWQgc28gdGhp cyBmdW5jdGlvbiBpcyB1bnVzZWQgZm9yIG5vdyAqLw0KKyNpZiAwDQorc3Rh dGljIGludA0KK25ucGZzX3dyaXRlX2VuZChzdHJ1Y3QgZmlsZSAqZmlsZSwg c3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsIGxvZmZfdCBwb3MsDQor CQl1bnNpZ25lZCBsZW4sIHVuc2lnbmVkIGNvcGllZCwgc3RydWN0IHBhZ2Ug KnBhZ2UsIHZvaWQgKmZzZGF0YSkNCit7DQorCXVuc2lnbmVkIGZyb20gPSBw b3MgJiAoUEFHRV9DQUNIRV9TSVpFIC0gMSk7DQorDQorCS8qIHplcm8gdGhl IHN0YWxlIHBhcnQgb2YgdGhlIHBhZ2UgaWYgd2UgZGlkIGEgc2hvcnQgY29w eSAqLw0KKwlpZiAoY29waWVkIDwgbGVuKSB7DQorI2lmIExJTlVYX1ZFUlNJ T05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0KKwkJdm9pZCAqa2Fk ZHIgPSBrbWFwX2F0b21pYyhwYWdlLCBLTV9VU0VSMCk7DQorI2Vsc2UNCisJ CXZvaWQgKmthZGRyID0ga21hcF9hdG9taWMocGFnZSk7DQorI2VuZGlmDQor CQltZW1zZXQoa2FkZHIgKyBmcm9tICsgY29waWVkLCAwLCBsZW4gLSBjb3Bp ZWQpOw0KKwkJZmx1c2hfZGNhY2hlX3BhZ2UocGFnZSk7DQorI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0KKwkJa3Vu bWFwX2F0b21pYyhrYWRkciwgS01fVVNFUjApOw0KKyNlbHNlDQorCQlrdW5t YXBfYXRvbWljKGthZGRyKTsNCisjZW5kaWYNCisJfQ0KKw0KKwlubnBmc19j b21taXRfd3JpdGUoZmlsZSwgcGFnZSwgZnJvbSwgZnJvbSArIGNvcGllZCk7 DQorDQorCXVubG9ja19wYWdlKHBhZ2UpOw0KKwlwYWdlX2NhY2hlX3JlbGVh c2UocGFnZSk7DQorDQorCXJldHVybiBjb3BpZWQ7DQorfQ0KKyNlbmRpZg0K ICNlbmRpZg0KKw0KK2NvbnN0DQogc3RydWN0IGFkZHJlc3Nfc3BhY2Vfb3Bl cmF0aW9ucyBubnBmc19hb3BzID0gew0KIAkucmVhZHBhZ2UgPSBubnBmc19y ZWFkcGFnZSwNCiAJLndyaXRlcGFnZSA9IG5ucGZzX3dyaXRlcGFnZSwNCisj aWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDI4 KQ0KIAkucHJlcGFyZV93cml0ZSA9IG5ucGZzX3ByZXBhcmVfd3JpdGUsDQot CS5jb21taXRfd3JpdGUgPSBubnBmc19jb21taXRfd3JpdGUsDQorCS5jb21t aXRfd3JpdGUgPSBzaW1wbGVfY29tbWl0X3dyaXRlLA0KKyNlbHNlDQorCS53 cml0ZV9iZWdpbiA9IG5ucGZzX3dyaXRlX2JlZ2luLA0KKwkud3JpdGVfZW5k ID0gc2ltcGxlX3dyaXRlX2VuZCwNCisjZW5kaWYNCiB9Ow0KIA0KIC8qDQpA QCAtMTkxNywyMSArMjI2NSwzMCBAQCBzdHJ1Y3QgYWRkcmVzc19zcGFjZV9v cGVyYXRpb25zIG5ucGZzX2FvDQogICovDQogDQogc3RydWN0IGZpbGVfb3Bl cmF0aW9ucyBubnBmc19maWxlX29wZXJhdGlvbnMgPSB7DQorI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTYsMCkNCiAgICAg LmFpb19yZWFkCT0gbm5wZnNfYWlvX3JlYWQsDQogICAgIC5haW9fd3JpdGUJ PSBubnBmc19haW9fd3JpdGUsDQorI2Vsc2UNCisgICAgLnJlYWRfaXRlcgk9 IG5ucGZzX3JlYWRfaXRlciwNCisgICAgLndyaXRlX2l0ZXIJPSBubnBmc193 cml0ZV9pdGVyLA0KKyNlbmRpZg0KICAgICAubW1hcAk9IG5ucGZzX2ZpbGVf bW1hcCwNCiAgICAgLm9wZW4JPSBubnBmc19vcGVuLA0KICAgICAuZmx1c2gJ PSBubnBmc19mbHVzaCwNCiAgICAgLnJlbGVhc2UJPSBubnBmc19yZWxlYXNl X2ZpbGUsDQogICAgIC5mc3luYwk9IG5ucGZzX2ZzeW5jLA0KLSAgICAuc2Vu ZGZpbGUJPSBubnBmc19zZW5kZmlsZSwNCisgICAgLnNwbGljZV9yZWFkID0g bm5wZnNfc3BsaWNlX3JlYWQsDQogfTsNCiANCiBzdHJ1Y3QgZmlsZV9vcGVy YXRpb25zIG5ucGZzX2RlYWRfb3BlcmF0aW9ucyA9IHsNCiB9Ow0KIA0KIHN0 cnVjdCBmaWxlX29wZXJhdGlvbnMgbm5wZnNfZGlyX29wZXJhdGlvbnMgPSB7 DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMs MTEsMCkNCiAgICAgLnJlYWRkaXIJPSBubnBmc19yZWFkZGlyLA0KKyNlbHNl DQorICAgIC5pdGVyYXRlICAgID0gbm5wZnNfaXRlcmF0ZSwNCisjZW5kaWYN CiAgICAgLmZsdXNoCT0gbm5wZnNfZmx1c2gsDQogfTsNCiANCkBAIC0xOTY4 LDYgKzIzMjUsMTAgQEAgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgbm5wZnNf ZGVhZF9pbm9kZQ0KIA0KIHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIG5ucGZz X2xpbmtfaW5vZGVfb3BlcmF0aW9ucyA9IHsNCiAgICAgLnJlYWRsaW5rIAkJ PSBubnBmc19yZWFkbGluaywNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwg S0VSTkVMX1ZFUlNJT04oNCw1LDApDQogICAgIC5mb2xsb3dfbGluayAJPSBu bnBmc19mb2xsb3dfbGluaywNCiAgICAgLnB1dF9saW5rIAkJPSBwYWdlX3B1 dF9saW5rLA0KKyNlbHNlDQorICAgIC5nZXRfbGluawkJPSBubnBmc19nZXRf bGluaywNCisjZW5kaWYNCiB9Ow0KZGlmZiAtdXByTiAtWG5vZGlmZiBhcmxh LTAuOTAtb2xkL25ucGZzL2xpbnV4L25ucGZzX2xvYWQuYyBhcmxhLTAuOTAv bm5wZnMvbGludXgvbm5wZnNfbG9hZC5jDQotLS0gYXJsYS0wLjkwLW9sZC9u bnBmcy9saW51eC9ubnBmc19sb2FkLmMJMjAwNi0xMC0zMSAxMTowMjo0MS4w MDAwMDAwMDAgKzAxMDANCisrKyBhcmxhLTAuOTAvbm5wZnMvbGludXgvbm5w ZnNfbG9hZC5jCTIwMTYtMDEtMTMgMjA6MTQ6MDIuMDAwMDAwMDAwICswMTAw DQpAQCAtNTQsNyArNTQsMTEgQEAgZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJh dGlvbnMgbm5wZnNfZm9wcw0KIA0KIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBl IG5ucGZzX2ZzX3R5cGUgPSB7DQogICAgICAgIG5hbWU6ICAgICAgICAgICAi bm5wZnMiLA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVS U0lPTigyLDYsMzkpDQogICAgICAgIGdldF9zYjogICAgICAgICBubnBmc19n ZXRfc2IsDQorI2Vsc2UNCisgICAgICAgbW91bnQ6ICAgICAgICAgIG5ucGZz X21vdW50LA0KKyNlbmRpZg0KICAgICAgICBraWxsX3NiOiAgICAgICAga2ls bF9saXR0ZXJfc3VwZXIsDQogICAgICAgIG93bmVyOiAgICAgICAgICBUSElT X01PRFVMRSwNCiB9Ow0KZGlmZiAtdXByTiAtWG5vZGlmZiBhcmxhLTAuOTAt b2xkL25ucGZzL2xpbnV4L25ucGZzX21lc3NhZ2UuYyBhcmxhLTAuOTAvbm5w ZnMvbGludXgvbm5wZnNfbWVzc2FnZS5jDQotLS0gYXJsYS0wLjkwLW9sZC9u bnBmcy9saW51eC9ubnBmc19tZXNzYWdlLmMJMjAwNy0wMS0wOSAxNzozMzoz MS4wMDAwMDAwMDAgKzAxMDANCisrKyBhcmxhLTAuOTAvbm5wZnMvbGludXgv bm5wZnNfbWVzc2FnZS5jCTIwMTYtMDEtMjQgMTg6NTI6MjguMDAwMDAwMDAw ICswMTAwDQpAQCAtNDUsNyArNDUsNyBAQA0KICNpbmNsdWRlIDxsaW51eC9t b3VudC5oPg0KIA0KICNpZmRlZiBSQ1NJRA0KLVJDU0lEKCIkSWQ6IG5ucGZz X21lc3NhZ2UuYyx2IDEuMTQzLjIuMSAyMDA3LzAxLzA5IDE2OjMzOjMxIHRv bCBFeHAgJCIpOw0KK1JDU0lEKCIkSWQ6IG5ucGZzX21lc3NhZ2UuYyx2IDEu MTQ1IDIwMTAvMDgvMDggMjA6NDM6MDUgdG9sIEV4cCAkIik7DQogI2VuZGlm DQogDQogc3RhdGljIHZvaWQNCkBAIC01NSw5ICs1NSwxNSBAQCBzdGF0aWMg dm9pZA0KIG5ucGZzX2RfcmVtb3ZlKHN0cnVjdCBkZW50cnkgKmRlbnRyeSkN CiB7DQogICAgIE5OUEZTREVCKFhERUJNU0csICgibm5wZnNfZF9yZW1vdmUg JXBcbiIsIGRlbnRyeSkpOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBL RVJORUxfVkVSU0lPTigyLDYsMzgpDQogICAgIHNwaW5fbG9jaygmZGNhY2hl X2xvY2spOw0KICAgICBkZ2V0X2xvY2tlZChkZW50cnkpOw0KICAgICBzcGlu X3VubG9jaygmZGNhY2hlX2xvY2spOw0KKyNlbHNlDQorICAgIHNwaW5fbG9j aygmZGVudHJ5LT5kX2xvY2spOw0KKyAgICBkZ2V0X2Rsb2NrKGRlbnRyeSk7 DQorICAgIHNwaW5fdW5sb2NrKCZkZW50cnktPmRfbG9jayk7DQorI2VuZGlm DQogICAgIGRfZHJvcChkZW50cnkpOw0KICAgICBkcHV0KGRlbnRyeSk7DQog fQ0KQEAgLTEyMSw3ICsxMjcsMTEgQEAgbm5wZnNfbWVzc2FnZV9pbnN0YWxs bm9kZShzdHJ1Y3Qgbm5wZnMgKg0KICAgICBzdHJ1Y3QgaW5vZGUgKmRpLCAq aW5vZGU7DQogICAgIHN0cnVjdCBkZW50cnkgKnBhcmVudCA9IE5VTEw7DQog ICAgIHN0cnVjdCBxc3RyIHNxc3RyOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NP REUgPCBLRVJORUxfVkVSU0lPTigzLDYsMCkNCiAgICAgc3RydWN0IGxpc3Rf aGVhZCAqYWxpYXM7DQorI2VsaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VS TkVMX1ZFUlNJT04oMyw5LDApDQorICAgIHN0cnVjdCBobGlzdF9ub2RlICph bGlhczsNCisjZW5kaWYNCiAgICAgDQogICAgIE5OUEZTREVCKFhERUJNU0cs ICgibm5wZnNfbWVzc2FnZV9pbnN0YWxsbm9kZVxuIikpOw0KICAgICANCkBA IC0xNzYsMTIgKzE4NiwyNiBAQCBubnBmc19tZXNzYWdlX2luc3RhbGxub2Rl KHN0cnVjdCBubnBmcyAqDQogICAgICAqDQogICAgICAqLw0KICAgICANCisj aWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw2LDAp DQogICAgIGFsaWFzID0gZGktPmlfZGVudHJ5Lm5leHQ7DQogICAgIHdoaWxl IChhbGlhcyAhPSAmZGktPmlfZGVudHJ5KSB7DQogCXBhcmVudCA9IGxpc3Rf ZW50cnkoYWxpYXMsIHN0cnVjdCBkZW50cnksIGRfYWxpYXMpOw0KLQlzcGlu X2xvY2soJmRjYWNoZV9sb2NrKTsNCi0JZGdldF9sb2NrZWQocGFyZW50KTsN Ci0Jc3Bpbl91bmxvY2soJmRjYWNoZV9sb2NrKTsNCisjZWxpZiBMSU5VWF9W RVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDksMCkNCisgICAgaGxp c3RfZm9yX2VhY2hfZW50cnkocGFyZW50LCBhbGlhcywgJmRpLT5pX2RlbnRy eSwgZF9hbGlhcykgew0KKyNlbGlmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtF Uk5FTF9WRVJTSU9OKDMsMTksMCkNCisgICAgaGxpc3RfZm9yX2VhY2hfZW50 cnkocGFyZW50LCAmZGktPmlfZGVudHJ5LCBkX2FsaWFzKSB7DQorI2Vsc2UN CisgICAgaGxpc3RfZm9yX2VhY2hfZW50cnkocGFyZW50LCAmZGktPmlfZGVu dHJ5LCBkX3UuZF9hbGlhcykgew0KKyNlbmRpZg0KKyNpZiBMSU5VWF9WRVJT SU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMzgpDQorICAgIHNwaW5f bG9jaygmZGNhY2hlX2xvY2spOw0KKyAgICBkZ2V0X2xvY2tlZChwYXJlbnQp Ow0KKyAgICBzcGluX3VubG9jaygmZGNhY2hlX2xvY2spOw0KKyNlbHNlDQor ICAgIHNwaW5fbG9jaygmcGFyZW50LT5kX2xvY2spOw0KKyAgICBkZ2V0X2Rs b2NrKHBhcmVudCk7DQorICAgIHNwaW5fdW5sb2NrKCZwYXJlbnQtPmRfbG9j ayk7DQorI2VuZGlmDQogCWRlbnRyeSA9IGRfbG9va3VwKHBhcmVudCwgJnNx c3RyKTsNCiAJTk5QRlNERUIoWERFQk1TRywNCiAJCSAoIm5ucGZzX21lc3Nh Z2VfaW5zdGFsbG5vZGU6IGFsaWFzICVwLCBsb29rdXAgJXBcbiIsDQpAQCAt MjMzLDcgKzI1Nyw5IEBAIG5ucGZzX21lc3NhZ2VfaW5zdGFsbG5vZGUoc3Ry dWN0IG5ucGZzICoNCiAJDQogCWRwdXQoZGVudHJ5KTsNCiAJZGVudHJ5ID0g TlVMTDsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJ T04oMyw2LDApDQogCWFsaWFzID0gYWxpYXMtPm5leHQ7DQorI2VuZGlmDQog CWRwdXQocGFyZW50KTsNCiAgICAgfQ0KICAgICBOTlBGU0RFQihYREVCTVNH LCAoIm5ucGZzX21lc3NhZ2VfaW5zdGFsbG5vZGU6IGRvbmUgaW5zdGFsbGlu Z1xuIikpOw0KQEAgLTI2OCw3ICsyOTQsMTMgQEAgbm5wZnNfbWVzc2FnZV9p bnN0YWxsYXR0cihzdHJ1Y3Qgbm5wZnMgKg0KICAgICB9DQogDQogICAgIGlu b2RlID0gWE5PREVfVE9fVk5PREUodCk7DQorI2lmIExJTlVYX1ZFUlNJT05f Q09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0KICAgICBkZW50cnkgPSBs aXN0X2VudHJ5KGlub2RlLT5pX2RlbnRyeS5uZXh0LCBzdHJ1Y3QgZGVudHJ5 LCBkX2FsaWFzKTsNCisjZWxpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJO RUxfVkVSU0lPTigzLDE5LDApDQorICAgIGRlbnRyeSA9IGhsaXN0X2VudHJ5 KGlub2RlLT5pX2RlbnRyeS5maXJzdCwgc3RydWN0IGRlbnRyeSwgZF9hbGlh cyk7DQorI2Vsc2UNCisgICAgZGVudHJ5ID0gaGxpc3RfZW50cnkoaW5vZGUt PmlfZGVudHJ5LmZpcnN0LCBzdHJ1Y3QgZGVudHJ5LCBkX3UuZF9hbGlhcyk7 DQorI2VuZGlmDQogICAgIA0KICAgICBOTlBGU0RFQihYREVCTVNHLCAoIm5u cGZzX21lc3NhZ2VfaW5zdGFsbGF0dHIgbmFtZTolc1xuIiwNCiAJCSAgICAg ICBkZW50cnktPmRfbmFtZS5uYW1lKSk7DQpAQCAtMzk2LDE3ICs0MjgsMzUg QEAgbm5wZnNfbWVzc2FnZV9pbnN0YWxsZGF0YShzdHJ1Y3Qgbm5wZnMgKg0K IHN0YXRpYyB2b2lkDQogY2xlYXJfYWxsX2NoaWxkcmVuIChzdHJ1Y3QgaW5v ZGUgKmlub2RlLCBpbnQgcGFyZW50KQ0KIHsNCisgICAgc3RydWN0IGRlbnRy eSAqZGVudHJ5Ow0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxf VkVSU0lPTigzLDYsMCkNCiAgICAgc3RydWN0IGxpc3RfaGVhZCAqYWxpYXM7 DQorI2VsaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04o Myw5LDApDQorICAgIHN0cnVjdCBobGlzdF9ub2RlICphbGlhczsNCisjZW5k aWYNCiANCiAgYWdhaW46DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtF Uk5FTF9WRVJTSU9OKDIsNiwzOCkNCiAgICAgc3Bpbl9sb2NrKCZkY2FjaGVf bG9jayk7DQorI2Vsc2UNCisgICAgc3Bpbl9sb2NrKCZpbm9kZS0+aV9sb2Nr KTsNCisjZW5kaWYNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVM X1ZFUlNJT04oMyw2LDApDQogICAgIGFsaWFzID0gaW5vZGUtPmlfZGVudHJ5 Lm5leHQ7DQogICAgIHdoaWxlIChhbGlhcyAhPSAmaW5vZGUtPmlfZGVudHJ5 KSB7DQotCXN0cnVjdCBkZW50cnkgKmRlbnRyeTsNCisjZWxpZiBMSU5VWF9W RVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDksMCkNCisgICAgaGxp c3RfZm9yX2VhY2hfZW50cnkoZGVudHJ5LCBhbGlhcywgJmlub2RlLT5pX2Rl bnRyeSwgZF9hbGlhcykgew0KKyNlbGlmIExJTlVYX1ZFUlNJT05fQ09ERSA8 IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCisgICAgaGxpc3RfZm9yX2VhY2hf ZW50cnkoZGVudHJ5LCAmaW5vZGUtPmlfZGVudHJ5LCBkX2FsaWFzKSB7DQor I2Vsc2UNCisgICAgaGxpc3RfZm9yX2VhY2hfZW50cnkoZGVudHJ5LCAmaW5v ZGUtPmlfZGVudHJ5LCBkX3UuZF9hbGlhcykgew0KKyNlbmRpZg0KIAlzdHJ1 Y3QgbGlzdF9oZWFkICpzdWJkaXJzOw0KIAlzdHJ1Y3Qgbm5wZnNfZGVudHJ5 X2RhdGEgKnhkOw0KIAkNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VS TkVMX1ZFUlNJT04oMyw2LDApDQogCWRlbnRyeSA9IGxpc3RfZW50cnkoYWxp YXMsIHN0cnVjdCBkZW50cnksIGRfYWxpYXMpOw0KKyNlbmRpZg0KIAlpZiAo ZGVudHJ5ID09IE5VTEwpIHsNCiAJICAgIHByaW50ayhLRVJOX0VNRVJHICJO TlBGUyBQYW5pYzogZGVudHJ5IGluIGFsaWFzIGxpc3QgaXMgbnVsbFxuIik7 DQogCSAgICBicmVhazsNCkBAIC00MjIsNyArNDcyLDExIEBAIGNsZWFyX2Fs bF9jaGlsZHJlbiAoc3RydWN0IGlub2RlICppbm9kZSwNCiAJc3ViZGlycyA9 IGRlbnRyeS0+ZF9zdWJkaXJzLm5leHQ7DQogCXdoaWxlIChzdWJkaXJzICE9 ICZkZW50cnktPmRfc3ViZGlycykgew0KIAkgICAgc3RydWN0IGxpc3RfaGVh ZCAqdG1wID0gc3ViZGlyczsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwg S0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0KIAkgICAgc3RydWN0IGRlbnRyeSAq Y2hpbGQgPSBsaXN0X2VudHJ5KHRtcCwgc3RydWN0IGRlbnRyeSwgZF91LmRf Y2hpbGQpOw0KKyNlbHNlDQorCSAgICBzdHJ1Y3QgZGVudHJ5ICpjaGlsZCA9 IGxpc3RfZW50cnkodG1wLCBzdHJ1Y3QgZGVudHJ5LCBkX2NoaWxkKTsNCisj ZW5kaWYNCiAJICAgIHN1YmRpcnMgPSB0bXAtPm5leHQ7DQogCSAgICBOTlBG U0RFQihYREVCTVNHLCAoImNsZWFyX2FsbF9jaGlsZHJlbiBjaGlsZDogJS4q cyBpbm9kZTogJXAvJXAgIg0KIAkJCSAgICAgICAiZGNvdW50OiAlZCBhbGlh c2VzOlxuIiwNCkBAIC00NDIsMTQgKzQ5NiwyNCBAQCBjbGVhcl9hbGxfY2hp bGRyZW4gKHN0cnVjdCBpbm9kZSAqaW5vZGUsDQogDQogCSAgICAvKiBUaHJv dyBpbW1lZGlhdGVseSAqLw0KIAkgICAgaWYgKG5ucGZzX2Rjb3VudChjaGls ZCkgPT0gMCkgew0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxf VkVSU0lPTigyLDYsMzgpDQogCSAgICAgICAgc3Bpbl91bmxvY2soJmRjYWNo ZV9sb2NrKTsNCisjZWxzZQ0KKwkgICAgICAgIHNwaW5fdW5sb2NrKCZpbm9k ZS0+aV9sb2NrKTsNCisjZW5kaWYNCiAJCW5ucGZzX2RfcmVtb3ZlKGNoaWxk KTsNCiAJCWdvdG8gYWdhaW47DQogCSAgICB9DQogCX0NCisjaWYgTElOVVhf VkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw2LDApDQogCWFsaWFz ID0gYWxpYXMtPm5leHQ7DQorI2VuZGlmDQogICAgIH0NCisjaWYgTElOVVhf VkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDM4KQ0KICAgICBz cGluX3VubG9jaygmZGNhY2hlX2xvY2spOw0KKyNlbHNlDQorICAgIHNwaW5f dW5sb2NrKCZpbm9kZS0+aV9sb2NrKTsNCisjZW5kaWYNCiB9DQogDQogc3Rh dGljIHZvaWQNCkBAIC02MDUsMTIgKzY2OSwxMCBAQCBnY19ibG9jayhzdHJ1 Y3Qgbm5wZnMgKm5ucGZzcCwNCiAgICAgfQ0KIA0KICAgICBpZiAoIW5ucGZz X2Jsb2NrX2hhdmVfcCh4biwgb2Zmc2V0KSkgew0KLSNpZiAwICAgLyogaGFw cGVucyB3aGVuIGRhZW1vbiBzZW5kcyBzZXZlcmFsIG1lc3NhZ2VzIGZvciBz YW1lIGJsb2NrICovDQogCXByaW50ayhLRVJOX0VNRVJHICJOTlBGUy9nY19i bG9jazogIg0KIAkgICAgICAgIkVOT0VOVCAoJWQsJWQsJWQsJWQpIDB4JWxs eFxuIiwgDQogCSAgICAgICB4bi0+aGFuZGxlLmEsIHhuLT5oYW5kbGUuYiwg eG4tPmhhbmRsZS5jLCB4bi0+aGFuZGxlLmQsIA0KIAkgICAgICAgKHVuc2ln bmVkIGxvbmcgbG9uZylvZmZzZXQpOw0KLSNlbmRpZg0KIAlyZXR1cm4gLUVO T0VOVDsNCiAgICAgfQ0KIA0KQEAgLTcyMSwxMiArNzgzLDIyIEBAIG5ucGZz X21lc3NhZ2VfdmVyc2lvbihzdHJ1Y3Qgbm5wZnMgKm5ucGYNCiANCiAgICAg Lyogc2FuaXR5IGNoZWNrIGJlZm9yZSB3ZSBsb29rIGF0IGl0ICovDQogICAg IGlmIChzaXplID09IHNpemVvZigqbWVzc2FnZSkgJiYgbWVzc2FnZS0+dmVy c2lvbiA9PSBOTlBGU19WRVJTSU9OKSB7DQorI2lmIExJTlVYX1ZFUlNJT05f Q09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCiAJc3RydWN0IG5hbWVp ZGF0YSBuZDsNCisjZWxzZQ0KKwlzdHJ1Y3QgcGF0aCBwYXRoOw0KKyNlbmRp Zg0KIAlpbnQgZXJyb3I7DQogDQogCXVpbnQ2NF90IGJsb2Nrc2l6ZSA9IG1l c3NhZ2UtPmJsb2Nrc2l6ZTsNCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RF IDwgS0VSTkVMX1ZFUlNJT04oMiw2LDM5KQ0KIAllcnJvciA9IHBhdGhfbG9v a3VwKCIuIiwgMCwgJm5kKTsNCisjZWxpZiBMSU5VWF9WRVJTSU9OX0NPREUg PCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQorCWVycm9yID0ga2Vybl9wYXRo KCIuIiwgMCwgJm5kLnBhdGgpOw0KKyNlbHNlDQorCWVycm9yID0ga2Vybl9w YXRoKCIuIiwgMCwgJnBhdGgpOw0KKyNlbmRpZg0KIAlpZiAoZXJyb3IpIHsN CiAJICAgIC8qDQogCSAgICAgKiBCYWQgY2FjaGUgcm9vdCwganVzdCByZXR1 cm4uDQpAQCAtNzM3LDEyICs4MDksMjMgQEAgbm5wZnNfbWVzc2FnZV92ZXJz aW9uKHN0cnVjdCBubnBmcyAqbm5wZg0KIAkJICAgIm5ucGZzX21lc3NhZ2Vf dmVyc2lvbiBmYWlsZWQgcGF0aF9sb29rdXAsICINCiAJCSAgICJlcnJubzog JWRcbiIsIGVycm9yKTsNCiAJfSBlbHNlIHsNCi0JICAgIG5ucGZzcC0+Y2Fj aGVyb290ID0gbW50Z2V0KG5kLm1udCk7DQotCSAgICBubnBmc3AtPmNhY2hl ZGlyID0gZGdldChuZC5kZW50cnkpOw0KLQkgICAgcGF0aF9yZWxlYXNlKCZu ZCk7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9O KDMsMTksMCkNCisJICAgIG5ucGZzcC0+Y2FjaGVyb290ID0gbW50Z2V0KG5k LnBhdGgubW50KTsNCisJICAgIG5ucGZzcC0+Y2FjaGVkaXIgPSBkZ2V0KG5k LnBhdGguZGVudHJ5KTsNCisJICAgIHBhdGhfcHV0KCZuZC5wYXRoKTsNCisj ZWxzZQ0KKwkgICAgbm5wZnNwLT5jYWNoZXJvb3QgPSBtbnRnZXQocGF0aC5t bnQpOw0KKwkgICAgbm5wZnNwLT5jYWNoZWRpciA9IGRnZXQocGF0aC5kZW50 cnkpOw0KKwkgICAgcGF0aF9wdXQoJnBhdGgpOw0KKyNlbmRpZg0KIAkgICAg DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIs NiwyOSkNCiAJICAgIG5ucGZzcC0+dWlkID0gY3VycmVudC0+ZnN1aWQ7DQog CSAgICBubnBmc3AtPmdpZCA9IGN1cnJlbnQtPmZzZ2lkOw0KKyNlbHNlDQor ICAgICAgICAgICAgbm5wZnNwLT51aWQgPSBjdXJyZW50X2ZzdWlkKCk7DQor ICAgICAgICAgICAgbm5wZnNwLT5naWQgPSBjdXJyZW50X2ZzZ2lkKCk7DQor I2VuZGlmDQogDQogCSAgICAvKiBYWFggd2Ugc2hvdWxkIHZhbGlkYXRlIHRo ZXNlIHZhbHVlcyAqLw0KIAkgICAgbm5wZnNfYmxvY2tzaXplID0gYmxvY2tz aXplOw0KZGlmZiAtdXByTiAtWG5vZGlmZiBhcmxhLTAuOTAtb2xkL25ucGZz L2xpbnV4L25ucGZzX25vZGUuYyBhcmxhLTAuOTAvbm5wZnMvbGludXgvbm5w ZnNfbm9kZS5jDQotLS0gYXJsYS0wLjkwLW9sZC9ubnBmcy9saW51eC9ubnBm c19ub2RlLmMJMjAwNy0wMS0wMyAxNDo1MjowMi4wMDAwMDAwMDAgKzAxMDAN CisrKyBhcmxhLTAuOTAvbm5wZnMvbGludXgvbm5wZnNfbm9kZS5jCTIwMTYt MDUtMDYgMTc6MDE6MTAuMDAwMDAwMDAwICswMjAwDQpAQCAtMTMyLDcgKzEz MiwxMiBAQCBubnBmc19zZXRzaXplKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVp bnQ2DQogCXByaW50aygibm5wZnNfc2V0c2l6ZTogdHJ1bmNhdGluZyBAMHgl bGx1XG4iLA0KIAkgICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZylzaXplKTsN CiAjZW5kaWYNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZF UlNJT04oMyw4LDApDQogCXZtdHJ1bmNhdGUoaW5vZGUsIHNpemUpOyAvKiBY WFggcmV0dmFsICovDQorI2Vsc2UNCisJaWYoIWlub2RlX25ld3NpemVfb2so aW5vZGUsIHNpemUpKQ0KKwkgICAgdHJ1bmNhdGVfc2V0c2l6ZShpbm9kZSwg c2l6ZSk7DQorI2VuZGlmDQogCW5ucGZzX2Jsb2NrX3RydW5jYXRlKHhuLCBz aXplKTsNCiAgICAgfQ0KIH0NCkBAIC0xNTAsOSArMTU1LDE4IEBAIG5ucGZz X2F0dHIyaW5vZGUoY29uc3Qgc3RydWN0IG5ucGZzX2F0dHINCiAJc3RydWN0 IHRpbWVzcGVjIG5vdGltZSA9IHswfTsNCiANCiAJaW5vZGUtPmlfbW9kZSAg ID0gMDsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJ T04oMywxNCwwKQ0KIAlpbm9kZS0+aV91aWQgICAgPSAwOw0KIAlpbm9kZS0+ aV9naWQgICAgPSAwOw0KKyNlbHNlDQorCWlub2RlLT5pX3VpZCAgICA9IEtV SURUX0lOSVQoMCk7DQorCWlub2RlLT5pX2dpZCAgICA9IEtHSURUX0lOSVQo MCk7DQorI2VuZGlmDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5F TF9WRVJTSU9OKDMsMiwwKQ0KIAlpbm9kZS0+aV9ubGluayAgPSAxOw0KKyNl bHNlDQorCXNldF9ubGluayhpbm9kZSwgMSk7DQorI2VuZGlmDQogCWlub2Rl LT5pX2F0aW1lICA9IG5vdGltZTsNCiAJaW5vZGUtPmlfbXRpbWUgID0gbm90 aW1lOw0KIAlpbm9kZS0+aV9jdGltZSAgPSBub3RpbWU7DQpAQCAtMTY5LDcg KzE4MywxMSBAQCBubnBmc19hdHRyMmlub2RlKGNvbnN0IHN0cnVjdCBubnBm c19hdHRyDQogICAgIGlmIChYQV9WQUxJRF9HSUQoYXR0cikpDQogCWlub2Rl LT5pX2dpZCAgICA9IGF0dHItPnhhX2dpZDsNCiAgICAgaWYgKFhBX1ZBTElE X05MSU5LKGF0dHIpKQ0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJO RUxfVkVSU0lPTigzLDIsMCkNCiAJaW5vZGUtPmlfbmxpbmsgID0gYXR0ci0+ eGFfbmxpbms7DQorI2Vsc2UNCisJc2V0X25saW5rKGlub2RlLCBhdHRyLT54 YV9ubGluayk7DQorI2VuZGlmDQogICAgIA0KICAgICBpZiAoWEFfVkFMSURf U0laRShhdHRyKSkgew0KIAlubnBmc19zZXRzaXplKGlub2RlLCBhdHRyLT54 YV9zaXplKTsNCkBAIC0yNjYsNiArMjg0LDkgQEAgbm5wZnNfZmlsbF9pbm9k ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdA0KIAlpbm9kZS0+aV9vcCAgPSAm bm5wZnNfbGlua19pbm9kZV9vcGVyYXRpb25zOw0KIAlpbm9kZS0+aV9mb3Ag PSAmbm5wZnNfbGlua19vcGVyYXRpb25zOw0KIAlpbm9kZS0+aV9tYXBwaW5n LT5hX29wcyA9ICZubnBmc19hb3BzOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NP REUgPj0gS0VSTkVMX1ZFUlNJT04oNCw1LDApDQorCWlub2RlX25vaGlnaG1l bShpbm9kZSk7DQorI2VuZGlmDQogICAgIH0gZWxzZSB7DQogCWlub2RlLT5p X29wICA9ICZubnBmc19kZWFkX2lub2RlX29wZXJhdGlvbnM7DQogCWlub2Rl LT5pX2ZvcCA9ICZubnBmc19kZWFkX29wZXJhdGlvbnM7DQpAQCAtNTEwLDEy ICs1MzEsMjQgQEAgbm5wZnNfaGFzX3BhZyhjb25zdCBzdHJ1Y3Qgbm5wZnNf bm9kZSAqeA0KIGludA0KIG5ucGZzX25vZGVfdXNlcnMoc3RydWN0IGlub2Rl ICppbm9kZSkNCiB7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5F TF9WRVJTSU9OKDMsNiwwKQ0KICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpwb3M7 DQorI2Vsc2UNCisgICAgc3RydWN0IGhsaXN0X25vZGUgKnBvczsNCisjZW5k aWYNCiAgICAgaW50IHVzZXJzID0gMDsNCiAgICAgDQogICAgIC8qIFhYWCB0 aGlzIHNob3VsZCBwcm9iYWJseSBiZSBwcm90ZWN0ZWQgc29tZWhvdyAqLw0K KyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDYs MCkNCiAgICAgbGlzdF9mb3JfZWFjaChwb3MsICZpbm9kZS0+aV9kZW50cnkp IHsNCisjZWxzZQ0KKyAgICBobGlzdF9mb3JfZWFjaChwb3MsICZpbm9kZS0+ aV9kZW50cnkpIHsNCisjZW5kaWYNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RF IDwgS0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0KIAlzdHJ1Y3QgZGVudHJ5ICpk ZW50cnkgPSBsaXN0X2VudHJ5KHBvcywgc3RydWN0IGRlbnRyeSwgZF9hbGlh cyk7DQorI2Vsc2UNCisJc3RydWN0IGRlbnRyeSAqZGVudHJ5ID0gbGlzdF9l bnRyeShwb3MsIHN0cnVjdCBkZW50cnksIGRfdS5kX2FsaWFzKTsNCisjZW5k aWYNCiAJaWYgKG5ucGZzX2Rjb3VudChkZW50cnkpID4gMSkNCiAJICAgIHVz ZXJzKys7DQogICAgIH0NCmRpZmYgLXVwck4gLVhub2RpZmYgYXJsYS0wLjkw LW9sZC9ubnBmcy9saW51eC9ubnBmc19zeXNjYWxscy5jIGFybGEtMC45MC9u bnBmcy9saW51eC9ubnBmc19zeXNjYWxscy5jDQotLS0gYXJsYS0wLjkwLW9s ZC9ubnBmcy9saW51eC9ubnBmc19zeXNjYWxscy5jCTIwMDctMDEtMDMgMTU6 MjY6MjcuMDAwMDAwMDAwICswMTAwDQorKysgYXJsYS0wLjkwL25ucGZzL2xp bnV4L25ucGZzX3N5c2NhbGxzLmMJMjAxNi0wMi0yMCAxOTo0Mzo0Mi4wMDAw MDAwMDAgKzAxMDANCkBAIC00Miw3ICs0Miw5IEBADQogI2luY2x1ZGUgPG5u cGZzL25ucGZzX3N5c2NhbGxzLmg+DQogI2luY2x1ZGUgPG5ucGZzL25ucGZz X2NvbW1vbi5oPg0KICNpbmNsdWRlIDxsaW51eC9maWxlLmg+DQorI2lmIExJ TlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzOSkNCiAj aW5jbHVkZSA8bGludXgvc21wX2xvY2suaD4NCisjZW5kaWYNCiAjaW5jbHVk ZSA8bGludXgvc21wLmg+DQogI2luY2x1ZGUgPGxpbnV4L3Byb2NfZnMuaD4N CiANCkBAIC01MCw2ICs1MiwxMSBAQA0KICNpbmNsdWRlIDxsaW51eC9zZWN1 cml0eS5oPg0KICNlbmRpZg0KIA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUg Pj0gS0VSTkVMX1ZFUlNJT04oMyw3LDApDQorI3VuZGVmIFNZU0NBTExIQUNL DQorLyogdGhlIG1ldGhvZCB0byByZWFkICdsb3dlcl9ib3VuZCcgZG9lcyBu b3Qgd29yayBvbiBrZXJuZWwgMy43IGFuZCBsYXRlciwgc2Ugbm5wZnNfc3lz Y2FsbHMtbG9zc2FnZS5jICovDQorI2VuZGlmDQorDQogI2lmIDANCiAjaWZk ZWYgQ09ORklHX0NPTVBBVA0KICNpbmNsdWRlIDxsaW51eC9pb2N0bDMyLmg+ DQpAQCAtNjQsNyArNzEsNyBAQA0KICN1bmRlZiBORUVEX1ZJQ0VJT0NUTDMy DQogDQogI2lmZGVmIFJDU0lEDQotUkNTSUQoIiRJZDogbm5wZnNfc3lzY2Fs bHMuYyx2IDEuMTIyIDIwMDcvMDEvMDMgMTQ6MjY6MjcgdG9sIEV4cCAkIik7 DQorUkNTSUQoIiRJZDogbm5wZnNfc3lzY2FsbHMuYyx2IDEuMTI1IDIwMTAv MDgvMDggMjA6NDM6MDYgdG9sIEV4cCAkIik7DQogI2VuZGlmDQogDQogc3Rh dGljIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqbm5wZnNfcHJvY2ZzX2RpcjsN CkBAIC04MiwxMiArODksMjIgQEAgdHlwZWRlZiBzdHJ1Y3QgYWZzcHJvY2Rh dGEgew0KICAgICB1bnNpZ25lZCBsb25nIHN5c2NhbGw7DQogfSBhZnNwcm9j ZGF0YTsNCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZF UlNJT04oMiw2LDM2KQ0KIHN0YXRpYyBpbnQNCiBubnBmc19wcm9jZnNfaW9j dGwoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUsDQog CQkgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZyk7DQor I2Vsc2UNCitzdGF0aWMgbG9uZw0KK25ucGZzX3Byb2Nmc19pb2N0bChzdHJ1 Y3QgZmlsZSAqZmlsZSwNCisJCSAgIHVuc2lnbmVkIGludCBjbWQsIHVuc2ln bmVkIGxvbmcgYXJnKTsNCisjZW5kaWYNCiANCiBzdGF0aWMgc3RydWN0IGZp bGVfb3BlcmF0aW9ucyBubnBmc19wcm9jZnNfZm9wcyA9IHsNCisjaWYgTElO VVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDM2KQ0KICAg ICAuaW9jdGwgPSBubnBmc19wcm9jZnNfaW9jdGwsDQorI2Vsc2UNCisgICAg LnVubG9ja2VkX2lvY3RsID0gbm5wZnNfcHJvY2ZzX2lvY3RsLA0KKyNlbmRp Zg0KIH07DQogDQogDQpAQCAtMTQ3LDUzICsxNjQsNDggQEAgc3RhdGljIGlu dCBubnBmc19zZWNfcmVnaXN0ZXJlZCA9IDA7DQogI2RlZmluZSBTRUMyUEFH KHMpIChubnBmc19wYWdfdCkodW5zaWduZWQgbG9uZykocykNCiAjZGVmaW5l IFBBRzJTRUMocCkgKHZvaWQgKikodW5zaWduZWQgbG9uZykocCkNCiANCi1z dGF0aWMgaW50DQotbm5wZnNfc2VjX3Rhc2tfYWxsb2Moc3RydWN0IHRhc2tf c3RydWN0ICpwKQ0KLXsNCi0gICAgbm5wZnNfcGFnX3QgcGFnID0gU0VDMlBB RyhjdXJyZW50LT5zZWN1cml0eSk7DQotICAgIGlmIChwYWcpDQotCXAtPnNl Y3VyaXR5ID0gUEFHMlNFQyhwYWcpOw0KLSAgICByZXR1cm4gMDsNCi19DQot DQotc3RhdGljIHZvaWQNCi1ubnBmc19zZWNfdGFza19mcmVlKHN0cnVjdCB0 YXNrX3N0cnVjdCAqcCkNCi17DQotICAgIG5ucGZzX3BhZ190IHBhZyA9IFNF QzJQQUcocC0+c2VjdXJpdHkpOw0KLSAgICBpZiAocGFnKQ0KLQlwLT5zZWN1 cml0eSA9IE5VTEw7DQotfQ0KLQ0KIHN0YXRpYyBubnBmc19wYWdfdA0KIG5u cGZzX2dldF9wYWdfc2VjKHZvaWQpDQogew0KKyNpZiBMSU5VWF9WRVJTSU9O X0NPREUgPD0gS0VSTkVMX1ZFUlNJT04oMiw2LDI4KQ0KICAgICBubnBmc19w YWdfdCBwYWcgPSBTRUMyUEFHKGN1cnJlbnQtPnNlY3VyaXR5KTsNCisjZWxz ZQ0KKyAgICBubnBmc19wYWdfdCBwYWcgPSBTRUMyUEFHKGN1cnJlbnRfc2Vj dXJpdHkoKSk7DQorI2VuZGlmDQogICAgIGlmIChwYWcpDQogCXJldHVybiBw YWc7DQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVS U0lPTigyLDYsMjgpDQogICAgIHJldHVybiBjdXJyZW50LT51aWQ7DQorI2Vs aWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxNCww KQ0KKyAgICByZXR1cm4gY3VycmVudF91aWQoKTsNCisjZWxzZQ0KKyAgICB7 IGt1aWRfdCBrdWlkID0gY3VycmVudF91aWQoKTsgcmV0dXJuIGt1aWQudmFs OyB9DQorI2VuZGlmDQogfQ0KIA0KIHN0YXRpYyBpbnQNCiBubnBmc19zZXRf cGFnX3NlYyh2b2lkKQ0KIHsNCiAgICAgc3RhdGljIG5ucGZzX3BhZ190IHBh Z251bSA9IE5OUEZTX1BBR19MTElNOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NP REUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDI5KQ0KKyAgICBzdHJ1Y3QgY3Jl ZCAqY3JlZDsNCisjZW5kaWYNCiANCiAgICAgaWYgKHBhZ251bSA9PSBOTlBG U19QQUdfVUxJTSkNCiAJcmV0dXJuIC1FTk9NRU07DQogICAgIC8qIHBhZ251 bSA9IE5OUEZTX1BBR19MTElNOyAqLw0KICAgICANCisjaWYgTElOVVhfVkVS U0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCiAgICAgY3Vy cmVudC0+c2VjdXJpdHkgPSBQQUcyU0VDKHBhZ251bSk7DQorI2Vsc2UNCisg ICAgY3JlZCA9IChzdHJ1Y3QgY3JlZCAqKSBjdXJyZW50LT5jcmVkOw0KKyAg ICBjcmVkLT5zZWN1cml0eSA9IFBBRzJTRUMocGFnbnVtKTsNCisjZW5kaWYN CiAgICAgcGFnbnVtKys7DQogICAgIHJldHVybiAwOw0KIH0NCiANCi1zdGF0 aWMgc3RydWN0IHNlY3VyaXR5X29wZXJhdGlvbnMgbm5wZnNfc2VjX29wcyA9 IHsNCi0gICAgLnRhc2tfYWxsb2Nfc2VjdXJpdHkgPSBubnBmc19zZWNfdGFz a19hbGxvYywNCi0gICAgLnRhc2tfZnJlZV9zZWN1cml0eSA9IG5ucGZzX3Nl Y190YXNrX2ZyZWUsDQotLy8gICAgLnRhc2tfcmVwYXJlbnRfdG9faW5pdCA9 IG5ucGZzX3NlY19yZXBhcmVudF90b19pbml0LA0KLX07DQotDQogI2VuZGlm IC8qIENPTkZJR19TRUNVUklUWSAqLw0KIA0KICNpZmRlZiBHUk9VUFBBR1MN CkBAIC0yMDYsNyArMjE4LDEyIEBAIGZpbmRfcGFnKHN0cnVjdCBncm91cF9p bmZvICpnaSkNCiAgICAgTk5QRlNERUIoWERFQlNZUywgKCJmaW5kX3BhZzog bmdyb3VwcyA9ICVkXG4iLCBnaS0+bmdyb3VwcykpOw0KIA0KICAgICBmb3Ig KGkgPSBnaS0+bmdyb3VwcyAtIDE7IGkgPj0gMDsgaS0tKSB7DQorI2lmIExJ TlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTQsMCkNCiAJ Z2lkX3QgZ3JvdXAgPSBHUk9VUF9BVChnaSwgaSk7DQorI2Vsc2UNCisJa2dp ZF90IGtncm91cCA9IEdST1VQX0FUKGdpLCBpKTsNCisJZ2lkX3QgZ3JvdXAg PSBrZ3JvdXAudmFsOw0KKyNlbmRpZg0KIAlpZiAoKG5ucGZzX3BhZ190KWdy b3VwID49IE5OUEZTX1BBR19MTElNICYmIChubnBmc19wYWdfdClncm91cCA8 IE5OUEZTX1BBR19VTElNKSB7DQogCSAgICBOTlBGU0RFQihYREVCU1lTLA0K IAkJICAgICAoImZpbmRfcGFnOiBFeGlzdGluZyBwYWcgJXUgYXQgcG9zICV1 XG4iLCBncm91cCwgaSkpOw0KQEAgLTIyMiwxNSArMjM5LDMxIEBAIGZpbmRf cGFnKHN0cnVjdCBncm91cF9pbmZvICpnaSkNCiBzdGF0aWMgbm5wZnNfcGFn X3QNCiBubnBmc19nZXRfcGFnX2dyb3VwKHZvaWQpDQogew0KKyNpZiBMSU5V WF9WRVJTSU9OX0NPREUgPD0gS0VSTkVMX1ZFUlNJT04oMiw2LDI4KQ0KICAg ICBzdHJ1Y3QgZ3JvdXBfaW5mbyAqZ2kgPSBjdXJyZW50LT5ncm91cF9pbmZv Ow0KICAgICBubnBmc19wYWdfdCByZXQgPSBjdXJyZW50LT51aWQ7DQorI2Vs c2UNCisgICAgc3RydWN0IGdyb3VwX2luZm8gKmdpID0gZ2V0X2N1cnJlbnRf Z3JvdXBzKCk7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9W RVJTSU9OKDMsMTQsMCkNCisgICAgbm5wZnNfcGFnX3QgcmV0ID0gY3VycmVu dF91aWQoKTsNCisjZWxzZQ0KKyAgICBrdWlkX3Qga3VpZCA9IGN1cnJlbnRf dWlkKCk7DQorICAgIG5ucGZzX3BhZ190IHJldCA9IGt1aWQudmFsOw0KKyNl bmRpZg0KKyNlbmRpZg0KICAgICBpbnQgaTsNCiANCisjaWYgTElOVVhfVkVS U0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCiAgICAgZ2V0 X2dyb3VwX2luZm8oZ2kpOw0KKyNlbmRpZg0KIA0KICAgICBpID0gZmluZF9w YWcoZ2kpOw0KICAgICBpZiAoaSAhPSBOTlBGU19QQUdfTk9URk9VTkQpDQor I2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTQs MCkNCiAJcmV0ID0gR1JPVVBfQVQoZ2ksIGkpOw0KKyNlbHNlDQorCXsga2dp ZF90IGtnaWQgPSBHUk9VUF9BVChnaSwgaSk7IHJldCA9IGtnaWQudmFsOyB9 DQorI2VuZGlmDQogDQogICAgIHB1dF9ncm91cF9pbmZvKGdpKTsNCiANCkBA IC0yNDIsMTMgKzI3NSwxOSBAQCBubnBmc19nZXRfcGFnX2dyb3VwKHZvaWQp DQogc3RhdGljIGludA0KIHN0b3JlX3BhZyhubnBmc19wYWdfdCBwYWdudW0p DQogew0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPD0gS0VSTkVMX1ZFUlNJ T04oMiw2LDI4KQ0KICAgICBzdHJ1Y3QgZ3JvdXBfaW5mbyAqb2xkX2dpID0g Y3VycmVudC0+Z3JvdXBfaW5mbzsNCisjZWxzZQ0KKyAgIHN0cnVjdCBncm91 cF9pbmZvICpvbGRfZ2kgPSBnZXRfY3VycmVudF9ncm91cHMoKTsNCisjZW5k aWYNCiAgICAgc3RydWN0IGdyb3VwX2luZm8gKm5ld19naTsNCi0gICAgaW50 IG5ibG9ja3MsIGNvdW50Ow0KKyAgICB1bnNpZ25lZCBpbnQgbmJsb2Nrcywg Y291bnQ7DQogICAgIGludCBmb3VuZCA9IDA7DQogICAgIGludCBpLCBrOw0K ICAgICANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJT SU9OKDIsNiwyOCkgICAgDQogICAgIGdldF9ncm91cF9pbmZvKG9sZF9naSk7 DQorI2VuZGlmDQogDQogICAgIGkgPSBmaW5kX3BhZyhvbGRfZ2kpOw0KICAg ICBpZiAoaSAhPSBOTlBGU19QQUdfTk9URk9VTkQpDQpAQCAtMjc0LDEwICsz MTMsMTcgQEAgc3RvcmVfcGFnKG5ucGZzX3BhZ190IHBhZ251bSkNCiAJY291 bnQgLT0gTkdST1VQU19QRVJfQkxPQ0s7DQogICAgIH0NCiANCisjaWYgTElO VVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxNCwwKQ0KICAg ICBpZiAoZm91bmQpDQogCUdST1VQX0FUKG5ld19naSwgaSkgPSBwYWdudW07 DQogICAgIGVsc2UNCiAJR1JPVVBfQVQobmV3X2dpLCBuZXdfZ2ktPm5ncm91 cHMgLSAxKSA9IHBhZ251bTsNCisjZWxzZQ0KKyAgICBpZiAoZm91bmQpDQor CXsga2dpZF90IGtnaWQgPSBLR0lEVF9JTklUKHBhZ251bSk7IEdST1VQX0FU KG5ld19naSwgaSkgPSBrZ2lkOyB9DQorICAgIGVsc2UNCisJeyBrZ2lkX3Qg a2dpZCA9IEtHSURUX0lOSVQocGFnbnVtKTsgR1JPVVBfQVQobmV3X2dpLCBu ZXdfZ2ktPm5ncm91cHMgLSAxKSA9IGtnaWQ7IH0NCisjZW5kaWYNCiAgICAg DQogICAgIHNldF9jdXJyZW50X2dyb3VwcyhuZXdfZ2kpOw0KICAgICBwdXRf Z3JvdXBfaW5mbyhuZXdfZ2kpOw0KQEAgLTMxNyw3ICszNjMsMTMgQEAgbm5w ZnNfZ2V0X3BhZygpDQogICAgIHJldHVybiBubnBmc19nZXRfcGFnX2dyb3Vw KCk7DQogI2VuZGlmIC8qIEdST1VQUEFHUyAqLw0KIA0KKyNpZiBMSU5VWF9W RVJTSU9OX0NPREUgPD0gS0VSTkVMX1ZFUlNJT04oMiw2LDI4KQ0KICAgICBy ZXR1cm4gY3VycmVudC0+dWlkOw0KKyNlbGlmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDMsMTQsMCkNCisgICAgcmV0dXJuIGN1cnJl bnRfdWlkKCk7DQorI2Vsc2UNCisgICAgeyBrdWlkX3Qga3VpZCA9IGN1cnJl bnRfdWlkKCk7IHJldHVybiBrdWlkLnZhbDsgfQ0KKyNlbmRpZg0KIH0NCiAN CiBzdGF0aWMgaW5saW5lIGludA0KQEAgLTQyMiw3ICs0NzQsNyBAQCBubnBm c19zZXRncm91cHMxNiAoaW50IGdpZHNldHNpemUsIG9sZF9nDQogI2VuZGlm IC8qIFNZU0NBTExIQUNLICovDQogI2VuZGlmIC8qIEdST1VQUEFHUyAqLw0K IA0KLXN0cnVjdCBmaWxlX2hhbmRsZSB7DQorc3RydWN0IG5ucGZzX2ZpbGVf aGFuZGxlIHsNCiAgICAgbm5wZnNfZGV2X3QgZGV2Ow0KICAgICBpbm9fdCBp bm9kZTsNCiAgICAgX191MzIgZ2VuOw0KQEAgLTUwOSwyNiArNTYxLDU4IEBA IG5ucGZzX2RlYnVnX3ByaW50IChzdHJ1Y3QgYXJsYVZpY2VJb2N0bCANCiAg KiBmb2xsb3cgc3ltbGlua3MgaWZmIGBmb2xsb3cnDQogICovDQogDQorI2lm IExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkN CiBzdGF0aWMgc3RydWN0IGRlbnRyeSAqDQogdXNlcl9wYXRoMmRlbnRyeSAo c3RydWN0IG5hbWVpZGF0YSAqbmQsIGNoYXIgKnVzZXJfcGF0aCwgaW50IGZv bGxvdykNCisjZWxzZQ0KK3N0YXRpYyBzdHJ1Y3QgZGVudHJ5ICoNCit1c2Vy X3BhdGgyZGVudHJ5IChzdHJ1Y3QgcGF0aCAqcGF0aCwgY2hhciAqdXNlcl9w YXRoLCBpbnQgZm9sbG93KQ0KKyNlbmRpZg0KIHsNCiAgICAgY2hhciAqa25h bWU7DQogICAgIGludCBmbGFncyA9IDA7DQogICAgIGludCBlcnJvciA9IDA7 DQogDQotICAgIGtuYW1lID0gZ2V0bmFtZSAodXNlcl9wYXRoKTsNCisjaWYg TElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw3LDApDQor ICAgIGtuYW1lID0gZ2V0bmFtZSh1c2VyX3BhdGgpOw0KKyNlbHNlDQorICAg IGtuYW1lID0gX19nZXRuYW1lKCk7DQorI2VuZGlmDQorDQogICAgIGlmIChJ U19FUlIoa25hbWUpKQ0KIAlyZXR1cm4gRVJSX1BUUihQVFJfRVJSKGtuYW1l KSk7DQogICAgIGlmIChmb2xsb3cpDQogCWZsYWdzIHw9IExPT0tVUF9GT0xM T1c7DQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVS U0lPTigzLDcsMCkNCisgICAgZXJyb3IgPSBzdHJuY3B5X2Zyb21fdXNlcihr bmFtZSwgdXNlcl9wYXRoLCBQQVRIX01BWCk7DQorICAgIGlmIChlcnJvciA8 IDAgfHwgZXJyb3IgPT0gUEFUSF9NQVgpIHsNCisJX19wdXRuYW1lKGtuYW1l KTsNCisJcmV0dXJuIEVSUl9QVFIoZXJyb3IpOw0KKyAgICB9DQorI2VuZGlm DQorDQogICAgIE5OUEZTREVCKFhERUJNU0csICgibm5wZnNfc3lzY2FsbDog bG9va2luZyB1cDogJXNcbiIsIGtuYW1lKSk7DQogDQorI2lmIExJTlVYX1ZF UlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzOSkNCiAgICAgZXJy b3IgPSBwYXRoX2xvb2t1cChrbmFtZSwgZmxhZ3MsIG5kKTsNCisjZWxpZiBM SU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQor ICAgIGVycm9yID0ga2Vybl9wYXRoKGtuYW1lLCBmbGFncywgJihuZC0+cGF0 aCkpOw0KKyNlbHNlDQorICAgIGVycm9yID0ga2Vybl9wYXRoKGtuYW1lLCBm bGFncywgcGF0aCk7DQorI2VuZGlmDQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDMsNywwKQ0KICAgICBwdXRuYW1lKGtuYW1l KTsNCisjZWxzZQ0KKyAgICBfX3B1dG5hbWUoa25hbWUpOw0KKyNlbmRpZg0K ICAgICBpZiAoZXJyb3IpDQogCXJldHVybiBFUlJfUFRSKGVycm9yKTsNCi0g ICAgcmV0dXJuIG5kLT5kZW50cnk7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCisgICAgcmV0dXJuIG5kLT5w YXRoLmRlbnRyeTsNCisjZWxzZQ0KKyAgICByZXR1cm4gcGF0aC0+ZGVudHJ5 Ow0KKyNlbmRpZg0KIH0NCiANCiBhc21saW5rYWdlIGxvbmcNCkBAIC01NDAs MTIgKzYyNCwyNCBAQCBzeXNfYWZzX2ludCAoaW50IG9wZXJhdGlvbiwNCiB7 DQogICAgIGxvbmcgZXJyb3IgPSAwOw0KICAgICBzdHJ1Y3QgYXJsYVZpY2VJ b2N0bCB2aWNlX2lvY3RsOyANCi0gICAgc3RydWN0IG5ucGZzX21lc3NhZ2Vf cGlvY3RsIG1zZzsNCisgICAgc3RydWN0IG5ucGZzX21lc3NhZ2VfcGlvY3Rs ICptc2cgPSBOVUxMOw0KICAgICBzdHJ1Y3Qgbm5wZnNfbWVzc2FnZV93YWtl dXAgKm1zZzI7DQogICAgIHN0cnVjdCBkZW50cnkgKmRlbnRyeSA9IE5VTEw7 DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMs MTksMCkNCiAgICAgc3RydWN0IG5hbWVpZGF0YSBuZDsNCisjZWxzZQ0KKyAg ICBzdHJ1Y3QgcGF0aCBwYXRoOw0KKyNlbmRpZg0KICAgICANCisgICAgbXNn ID0ga21hbGxvYyhzaXplb2YoKm1zZyksIEdGUF9LRVJORUwpOw0KKyAgICBp ZiAobXNnID09IE5VTEwpDQorICAgICAgcmV0dXJuIC1FTk9NRU07DQorDQor I2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwz OSkNCiAgICAgbG9ja19rZXJuZWwoKTsNCisjZWxzZQ0KKyAgICAvKiBYWFgg bG9ja19rZXJuZWwoKSBpcyByZW1vdmVkLCBjb25zaWRlciBhZGRpbmcgYW4g cHJpdmF0ZSBsb2NrICovDQorI2VuZGlmDQogDQogICAgIE5OUEZTREVCKFhE RUJTWVMsICgic3lzX2FmcyBrZXJuZWwgbG9ja2VkXG4iKSk7DQogDQpAQCAt NTc1LDcgKzY3MSw3IEBAIHN5c19hZnNfaW50IChpbnQgb3BlcmF0aW9uLA0K IAkgICAgZ290byB1bmxvY2s7DQogCX0NCiAJaWYgKHZpY2VfaW9jdGwuaW5f c2l6ZSAhPSAwKSB7DQotCSAgICBpZihjb3B5X2Zyb21fdXNlcigmbXNnLm1z ZywNCisJICAgIGlmKGNvcHlfZnJvbV91c2VyKCZtc2ctPm1zZywNCiAJCQkg ICAgICB2aWNlX2lvY3RsLmluLA0KIAkJCSAgICAgIHZpY2VfaW9jdGwuaW5f c2l6ZSkgIT0gMCkgew0KIAkJZXJyb3IgPSAtRUZBVUxUOw0KQEAgLTU4Myw3 ICs2NzksMTEgQEAgc3lzX2Fmc19pbnQgKGludCBvcGVyYXRpb24sDQogCSAg ICB9DQogCX0NCiAJaWYgKGFfcGF0aFAgIT0gTlVMTCkgew0KKyNpZiBMSU5V WF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQogCSAg ICBkZW50cnkgPSB1c2VyX3BhdGgyZGVudHJ5ICgmbmQsIGFfcGF0aFAsIGFf Zm9sbG93U3ltbGlua3MpOw0KKyNlbHNlDQorCSAgICBkZW50cnkgPSB1c2Vy X3BhdGgyZGVudHJ5ICgmcGF0aCwgYV9wYXRoUCwgYV9mb2xsb3dTeW1saW5r cyk7DQorI2VuZGlmDQogCSAgICBpZiAoIWRlbnRyeSkgew0KIAkJZXJyb3Ig PSAtRUlOVkFMOw0KIAkJZ290byB1bmxvY2s7DQpAQCAtNjI4LDE5ICs3Mjgs MjMgQEAgc3lzX2Fmc19pbnQgKGludCBvcGVyYXRpb24sDQogCQllcnJvciA9 IC1FSU5WQUw7DQogCQlnb3RvIHVubG9jazsNCiAJICAgIH0NCi0JICAgIG1z Zy5oYW5kbGUgPSB4bi0+aGFuZGxlOw0KKwkgICAgbXNnLT5oYW5kbGUgPSB4 bi0+aGFuZGxlOw0KIAl9DQogDQotCW1zZy5oZWFkZXIub3Bjb2RlID0gTk5Q RlNfTVNHX1BJT0NUTDsNCi0JbXNnLm9wY29kZSA9IGFfb3Bjb2RlOw0KKwlt c2ctPmhlYWRlci5vcGNvZGUgPSBOTlBGU19NU0dfUElPQ1RMOw0KKwltc2ct Pm9wY29kZSA9IGFfb3Bjb2RlOw0KIAkNCi0JbXNnLmluc2l6ZSAgID0gdmlj ZV9pb2N0bC5pbl9zaXplOw0KLQltc2cub3V0c2l6ZSAgPSB2aWNlX2lvY3Rs Lm91dF9zaXplOw0KLQltc2cuY3JlZC51aWQgPSBjdXJyZW50LT51aWQ7DQot CW1zZy5jcmVkLnBhZyA9IG5ucGZzX2dldF9wYWcoKTsNCisJbXNnLT5pbnNp emUgICA9IHZpY2VfaW9jdGwuaW5fc2l6ZTsNCisJbXNnLT5vdXRzaXplICA9 IHZpY2VfaW9jdGwub3V0X3NpemU7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgpDQorCW1zZy0+Y3JlZC51aWQg PSBjdXJyZW50LT51aWQ7DQorI2Vsc2UNCisgICAgICAgIG1zZy0+Y3JlZC51 aWQgPSBjdXJyZW50X3VpZCgpOw0KKyNlbmRpZg0KKwltc2ctPmNyZWQucGFn ID0gbm5wZnNfZ2V0X3BhZygpOw0KIAkNCi0JZXJyb3IgPSBubnBmc19tZXNz YWdlX3JwYygmbm5wZnNbMF0sICZtc2cuaGVhZGVyLCBzaXplb2YobXNnKSk7 IC8qIFhYWCAqLw0KLQltc2cyID0gKHN0cnVjdCBubnBmc19tZXNzYWdlX3dh a2V1cCAqKSAmbXNnOw0KKwllcnJvciA9IG5ucGZzX21lc3NhZ2VfcnBjKCZu bnBmc1swXSwgJm1zZy0+aGVhZGVyLCBzaXplb2YoKm1zZykpOyAvKiBYWFgg Ki8NCisJbXNnMiA9IChzdHJ1Y3Qgbm5wZnNfbWVzc2FnZV93YWtldXAgKikg bXNnOw0KIAlpZiAoZXJyb3IgPT0gMCkNCiAJICAgIGVycm9yID0gbXNnMi0+ ZXJyb3I7DQogDQpAQCAtNjc1LDEyICs3NzksMjEgQEAgc3lzX2Fmc19pbnQg KGludCBvcGVyYXRpb24sDQogICAgIA0KICB1bmxvY2s6DQogICAgIGlmIChk ZW50cnkpDQotCXBhdGhfcmVsZWFzZSgmbmQpOw0KKyNpZiBMSU5VWF9WRVJT SU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQorCXBhdGhfcHV0 KCZuZC5wYXRoKTsNCisjZWxzZQ0KKwlwYXRoX3B1dCgmcGF0aCk7DQorI2Vu ZGlmDQogDQogICAgIE5OUEZTREVCKFhERUJTWVMsICgibm5wZnNfc3lzY2Fs bCByZXR1cm5zIGVycm9yOiAlbGRcbiIsIGVycm9yKSk7DQogDQogICAgIE5O UEZTREVCKFhERUJTWVMsICgic3lzX2FmcyBrZXJuZWwgdW5sb2NrXG4iKSk7 DQorICAgIGtmcmVlKG1zZyk7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8 IEtFUk5FTF9WRVJTSU9OKDIsNiwzOSkNCiAgICAgdW5sb2NrX2tlcm5lbCgp Ow0KKyNlbHNlDQorICAgIC8qIFhYWCBzZWUgdGhlIGNvbW1lbnQgYXQgbG9j a19rZXJuZWwoKSBhYm92ZSAqLw0KKyNlbmRpZg0KIA0KICAgICByZXR1cm4g ZXJyb3I7DQogfQ0KQEAgLTcyOSw5ICs4NDIsMTUgQEAgc3lzX2FmcyAoaW50 IG9wZXJhdGlvbiwNCiAJCSAgICAgICBhX2ZvbGxvd1N5bWxpbmtzKTsNCiB9 DQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9O KDIsNiwzNikNCiBzdGF0aWMgaW50DQogbm5wZnNfcHJvY2ZzX2lvY3RsKHN0 cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlLA0KIAkJICAg dW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpDQorI2Vsc2UN CitzdGF0aWMgbG9uZw0KK25ucGZzX3Byb2Nmc19pb2N0bChzdHJ1Y3QgZmls ZSAqZmlsZSwNCisJCSAgIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxv bmcgYXJnKQ0KKyNlbmRpZg0KIHsNCiAgICAgYWZzcHJvY2RhdGEgYXJnczsN CiAgICAgbG9uZyByZXQ7DQpAQCAtNzgwLDIxICs4OTksMzEgQEAgc3RhdGlj IGludCBubnBmc19pbml0X3Byb2Nmcyh2b2lkKQ0KIHsNCiAgICAgc3RydWN0 IHByb2NfZGlyX2VudHJ5ICplbnRyeTsNCiAgICAgDQotICAgIG5ucGZzX3By b2Nmc19kaXIgPSBwcm9jX21rZGlyKE5OUEZTX1BST0NfRElSLCBwcm9jX3Jv b3RfZnMpOw0KKyAgICBubnBmc19wcm9jZnNfZGlyID0gcHJvY19ta2Rpcigi ZnMvIiBOTlBGU19QUk9DX0RJUiwgTlVMTCk7DQogICAgIGlmIChubnBmc19w cm9jZnNfZGlyID09IE5VTEwpDQogCXJldHVybiAtRU5PTUVNOw0KICAgICAN CisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2 LDMwKQ0KICAgICBubnBmc19wcm9jZnNfZGlyLT5vd25lciA9IFRISVNfTU9E VUxFOw0KKyNlbmRpZg0KICAgICANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RF IDwgS0VSTkVMX1ZFUlNJT04oMywxMCwwKQ0KICAgICBlbnRyeSA9IGNyZWF0 ZV9wcm9jX2VudHJ5KE5OUEZTX1BST0NfTk9ERSwgMDY2Niwgbm5wZnNfcHJv Y2ZzX2Rpcik7DQorI2Vsc2UNCisgICAgZW50cnkgPSBwcm9jX2NyZWF0ZShO TlBGU19QUk9DX05PREUsIDA2NjYsIE5VTEwsICZubnBmc19wcm9jZnNfZm9w cyk7DQorI2VuZGlmDQogICAgIGlmIChlbnRyeSA9PSBOVUxMKSB7DQogCU5O UEZTREVCKFhERUJTWVMsICgibm5wZnNfaW5pdF9wcm9jZnM6IG5vIG5vZGVc biIpKTsNCi0JcmVtb3ZlX3Byb2NfZW50cnkoTk5QRlNfUFJPQ19ESVIsIHBy b2Nfcm9vdF9mcyk7DQorCXJlbW92ZV9wcm9jX2VudHJ5KCJmcy8iIE5OUEZT X1BST0NfRElSLCBOVUxMKTsNCiAJcmV0dXJuIC1FTk9NRU07DQogICAgIH0N CiAgICAgDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJT SU9OKDIsNiwzMCkNCiAgICAgZW50cnktPm93bmVyID0gVEhJU19NT0RVTEU7 DQorI2VuZGlmDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9W RVJTSU9OKDMsMTAsMCkNCiAgICAgZW50cnktPnByb2NfZm9wcyA9ICZubnBm c19wcm9jZnNfZm9wczsNCisjZW5kaWYNCiANCiAjaWZkZWYgU1lTQ0FMTENP TVBBVA0KICAgICBpZiAocmVnaXN0ZXJfaW9jdGwzMl9jb252ZXJzaW9uKEFS TEFfVklPQ19TWVNDQUxMMzIsIG5ucGZzX3Byb2Nmc19pb2N0bDMyKSkgew0K QEAgLTgxNSw3ICs5NDQsNyBAQCBzdGF0aWMgdm9pZCBubnBmc19leGl0X3By b2Nmcyh2b2lkKQ0KICAgICB9DQogI2VuZGlmIC8qIFNZU0NBTExDT01QQVQg Ki8NCiAgICAgcmVtb3ZlX3Byb2NfZW50cnkoTk5QRlNfUFJPQ19OT0RFLCBu bnBmc19wcm9jZnNfZGlyKTsNCi0gICAgcmVtb3ZlX3Byb2NfZW50cnkoTk5Q RlNfUFJPQ19ESVIsIHByb2Nfcm9vdF9mcyk7DQorICAgIHJlbW92ZV9wcm9j X2VudHJ5KCJmcy8iIE5OUEZTX1BST0NfRElSLCBOVUxMKTsNCiB9DQogDQog I2lmZGVmIEdST1VQUEFHUw0KQEAgLTgzOSwxNCArOTY4LDYgQEAgaW5zdGFs bF9zZXRncm91cHModm9pZCkNCiB2b2lkDQogaW5zdGFsbF9hZnNfc3lzY2Fs bCh2b2lkKQ0KIHsNCi0jaWZkZWYgQ09ORklHX1NFQ1VSSVRZDQotICAgIGlm IChyZWdpc3Rlcl9zZWN1cml0eSgmbm5wZnNfc2VjX29wcykpDQotCU5OUEZT REVCKFhERUJTWVMsDQotCQkgKCJpbnN0YWxsX2Fmc19zeXNjYWxsOiBubnBm c19pbml0X3NlYyBmYWlsZWRcbiIpKTsNCi0gICAgZWxzZQ0KLQlubnBmc19z ZWNfcmVnaXN0ZXJlZCA9IDE7DQotI2VuZGlmDQotDQogICAgIG5ucGZzX2lu aXRfcHJvY2ZzKCk7DQogDQogI2lmZGVmIFNZU0NBTExIQUNLDQpAQCAtODg3 LDEyICsxMDA4LDYgQEAgcmVzdG9yZV9hZnNfc3lzY2FsbCAodm9pZCkNCiAj ZW5kaWYNCiAjZW5kaWYgLyogU1lTQ0FMTEhBQ0sgKi8NCiANCi0jaWZkZWYg Q09ORklHX1NFQ1VSSVRZDQotICAgIGlmIChubnBmc19zZWNfcmVnaXN0ZXJl ZCkNCi0JaWYgKHVucmVnaXN0ZXJfc2VjdXJpdHkoJm5ucGZzX3NlY19vcHMp KQ0KLQkgICAgcHJpbnRrKEtFUk5fRU1FUkcgIm5ucGZzX2V4aXRfc2VjOiBj b3VsZG4ndCB1bnJlZ2lzdGVyXG4iKTsNCi0jZW5kaWYgLyogIUNPTkZJR19T RUNVUklUWSAqLw0KLQ0KICNpZmRlZiBHUk9VUFBBR1MNCiAjaWZkZWYgU1lT Q0FMTEhBQ0sNCiAgICAgaWYgKG9sZF9zZXRncm91cHMpIHsNCmRpZmYgLXVw ck4gLVhub2RpZmYgYXJsYS0wLjkwLW9sZC9ubnBmcy9saW51eC9ubnBmc19z eXNjYWxscy1sb3NzYWdlLmMgYXJsYS0wLjkwL25ucGZzL2xpbnV4L25ucGZz X3N5c2NhbGxzLWxvc3NhZ2UuYw0KLS0tIGFybGEtMC45MC1vbGQvbm5wZnMv bGludXgvbm5wZnNfc3lzY2FsbHMtbG9zc2FnZS5jCTIwMDYtMTItMTEgMTc6 MzE6NDUuMDAwMDAwMDAwICswMTAwDQorKysgYXJsYS0wLjkwL25ucGZzL2xp bnV4L25ucGZzX3N5c2NhbGxzLWxvc3NhZ2UuYwkyMDE2LTAxLTEzIDIxOjUx OjQ5LjAwMDAwMDAwMCArMDEwMA0KQEAgLTQ3LDExICs0NywyMCBAQA0KICNp bmNsdWRlIDxsaW51eC91bmlzdGQuaD4NCiANCiAjaWZkZWYgUkNTSUQNCi1S Q1NJRCgiJElkOiBubnBmc19zeXNjYWxscy1sb3NzYWdlLmMsdiAxLjE3IDIw MDYvMTIvMTEgMTY6MzE6NDUgdG9sIEV4cCAkIik7DQorUkNTSUQoIiRJZDog bm5wZnNfc3lzY2FsbHMtbG9zc2FnZS5jLHYgMS4xOSAyMDEwLzA4LzA4IDIw OjQzOjA1IHRvbCBFeHAgJCIpOw0KKyNlbmRpZg0KKw0KKyNpZiBMSU5VWF9W RVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMyw3LDApDQorLyogdGhl IG1ldGhvZCB0byByZWFkICdsb3dlcl9ib3VuZCcgZG9lcyBub3Qgd29yayBv biBrZXJuZWwgMy43IGFuZCBsYXRlciAqLw0KKyN1bmRlZiBTWVNDQUxMSEFD Sw0KICNlbmRpZg0KIA0KICNpbmNsdWRlIDxsaW51eC9rYWxsc3ltcy5oPg0K KyNpZmRlZiBTWVNDQUxMSEFDSw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUg PCBLRVJORUxfVkVSU0lPTigzLDcsMCkNCiBzdGF0aWMgdm9pZCAqbG93ZXJf Ym91bmQgPSAma2VybmVsX3RocmVhZDsNCisjZW5kaWYNCisjZW5kaWYNCiAN CiB2b2lkICogX19hdHRyaWJ1dGVfXygod2VhaykpIHN5c19jYWxsX3RhYmxl KHZvaWQpOw0KIG5ucGZzX3N5c19jYWxsX2Z1bmN0aW9uICpubnBmc19zeXNf Y2FsbF90YWJsZSA9DQpAQCAtNjMsNiArNzIsMTEgQEAgY29uc3QgY2hhciAq IF9fYXR0cmlidXRlX18oKHdlYWspKQ0KIAkJICAgIHVuc2lnbmVkIGxvbmcg Km9mZnNldCwNCiAJCSAgICBjaGFyICoqbW9kbmFtZSwgY2hhciAqbmFtZWJ1 Zik7DQogDQorI2lmZGVmIF9feDg2XzY0X18NCitleHRlcm4gcndsb2NrX3Qg dGFza2xpc3RfbG9jayBfX2F0dHJpYnV0ZV9fKCh3ZWFrKSk7DQorI2VuZGlm DQorDQorI2lmZGVmIFNZU0NBTExIQUNLDQogc3RhdGljIHZvaWQgKioNCiBn ZXRfc3RhcnRfYWRkcih2b2lkKSB7DQogI2lmZGVmIF9feDg2XzY0X18NCkBA IC03MSw2ICs4NSw3IEBAIGdldF9zdGFydF9hZGRyKHZvaWQpIHsNCiAgICAg cmV0dXJuICh2b2lkICoqKSZtdXRleF9sb2NrOw0KICNlbmRpZg0KIH0NCisj ZW5kaWYNCiANCiBzdGF0aWMgaW5saW5lIGludCANCiBrYWxsc3ltX2lzX2Vx dWFsKHVuc2lnbmVkIGxvbmcgYWRkciwgY29uc3QgY2hhciAqbmFtZSkNCkBA IC0xMzksNiArMTU0LDggQEAgdmVyaWZ5KHZvaWQgKipwKSB7DQogICAgIHJl dHVybiAxOw0KIH0NCiANCisjaWZkZWYgU1lTQ0FMTEhBQ0sNCisNCiBzdGF0 aWMgaW5saW5lIGludCBsb29rc19nb29kKHZvaWQgKipwKQ0KIHsNCiAgICAg aWYgKCpwIDw9ICh2b2lkKilsb3dlcl9ib3VuZCB8fCAqcCA+PSAodm9pZCop cCkNCkBAIC0xODgsMyArMjA1LDUgQEAgbm5wZnNfZml4dXBfc3lzY2FsbF9s b3NzYWdlKHZvaWQpDQogDQogICAgIHJldHVybiAwOw0KIH0NCisNCisjZW5k aWYNCmRpZmYgLXVwck4gLVhub2RpZmYgYXJsYS0wLjkwLW9sZC9ubnBmcy9s aW51eC9ubnBmc192ZnNvcHMuYyBhcmxhLTAuOTAvbm5wZnMvbGludXgvbm5w ZnNfdmZzb3BzLmMNCi0tLSBhcmxhLTAuOTAtb2xkL25ucGZzL2xpbnV4L25u cGZzX3Zmc29wcy5jCTIwMDYtMTItMTEgMTc6NDM6MzUuMDAwMDAwMDAwICsw MTAwDQorKysgYXJsYS0wLjkwL25ucGZzL2xpbnV4L25ucGZzX3Zmc29wcy5j CTIwMTYtMDItMTQgMDE6MzY6MDYuMDAwMDAwMDAwICswMTAwDQpAQCAtNDQs MzAgKzQ0LDI2IEBADQogI2luY2x1ZGUgPGxpbnV4L21tLmg+DQogDQogI2lm ZGVmIFJDU0lEDQotUkNTSUQoIiRJZDogbm5wZnNfdmZzb3BzLmMsdiAxLjEw OSAyMDA2LzEyLzExIDE2OjQzOjM1IHRvbCBFeHAgJCIpOw0KK1JDU0lEKCIk SWQ6IG5ucGZzX3Zmc29wcy5jLHYgMS4xMTEgMjAxMC8wOC8wOCAyMDo0Mzow NiB0b2wgRXhwICQiKTsNCiAjZW5kaWYNCiANCiBzdHJ1Y3Qgbm5wZnMgbm5w ZnNbTk5OUEZTXTsNCiANCi1zdGF0aWMgdm9pZCBubnBmc19yZWFkX2lub2Rl KHN0cnVjdCBpbm9kZSAqaW5vZGUpOw0KIHN0YXRpYyB2b2lkIG5ucGZzX3B1 dF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTsNCi1zdGF0aWMgdm9p ZCBubnBmc19wdXRfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSk7DQorI2lm IExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0K IHN0YXRpYyB2b2lkIG5ucGZzX3dyaXRlX3N1cGVyKHN0cnVjdCBzdXBlcl9i bG9jayAqIHNiKTsNCisjZW5kaWYNCiANCi0jaWYgTElOVVhfVkVSU0lPTl9D T0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwxOCkNCiBzdGF0aWMgaW50IG5u cGZzX3N0YXRmcyhzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBrc3Rh dGZzICpidWYpOw0KLSNlbHNlDQotc3RhdGljIGludCBubnBmc19zdGF0ZnMo c3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGtzdGF0ZnMgKmJ1Zik7 DQotI2VuZGlmDQogDQogc3RhdGljIHN0cnVjdCBzdXBlcl9vcGVyYXRpb25z IG5ucGZzX3NvcHMgPSB7IA0KLSAgICByZWFkX2lub2RlCQk6IG5ucGZzX3Jl YWRfaW5vZGUsDQotICAgIHB1dF9pbm9kZQkJOiBubnBmc19wdXRfaW5vZGUs DQogICAgIGFsbG9jX2lub2RlCQk6IG5ucGZzX25vZGVfYWxsb2MsDQogICAg IGRlc3Ryb3lfaW5vZGUJOiBubnBmc19ub2RlX2ZyZWUsDQogICAgIGRyb3Bf aW5vZGUJCTogZ2VuZXJpY19kZWxldGVfaW5vZGUsDQogICAgIHB1dF9zdXBl cgkJOiBubnBmc19wdXRfc3VwZXIsDQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0KICAgICB3cml0ZV9zdXBlcgkJ OiBubnBmc193cml0ZV9zdXBlciwNCisjZW5kaWYNCiAgICAgc3RhdGZzCQk6 IG5ucGZzX3N0YXRmcywNCiB9Ow0KIA0KQEAgLTk0LDcgKzkwLDExIEBAIG5u cGZzX2ZldGNoX3Jvb3Qoc3RydWN0IGlub2RlICppKQ0KIAkgKiByb290J3Mg cHJpdmlsaWdlcyAodXN1YWxseSBub25lLCBhbmQgbm9uZSBpcyBuZWVkZWQp Lg0KIAkgKi8NCiAJDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5F TF9WRVJTSU9OKDMsMTQsMCkNCiAJbXNnLmNyZWQudWlkID0gMDsNCisjZWxz ZQ0KKwltc2cuY3JlZC51aWQgPSBLVUlEVF9JTklUKDApOw0KKyNlbmRpZg0K IAltc2cuY3JlZC5wYWcgPSAwOw0KIAkNCiAJZXJyb3IgPSBubnBmc19tZXNz YWdlX3JwYyhubnBmc3AsICZtc2cuaGVhZGVyLCBzaXplb2YobXNnKSk7DQpA QCAtMTI5LDggKzEyOSwxMyBAQCBtYWtlX3Jvb3RfaW5vZGUoc3RydWN0IG5u cGZzICpubnBmc3ApDQogICAgIFhBX1NFVF9NT0RFKCZub2RlLmF0dHIsIFNf SUZESVIgfCAwNzc3KTsNCiAgICAgWEFfU0VUX05MSU5LKCZub2RlLmF0dHIs IDEwMCk7DQogICAgIFhBX1NFVF9TSVpFKCZub2RlLmF0dHIsIDApOw0KKyNp ZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE0LDAp DQogICAgIFhBX1NFVF9VSUQoJm5vZGUuYXR0ciwgMCk7DQogICAgIFhBX1NF VF9HSUQoJm5vZGUuYXR0ciwgMCk7DQorI2Vsc2UNCisgICAgWEFfU0VUX1VJ RCgmbm9kZS5hdHRyLCBLVUlEVF9JTklUKDApKTsNCisgICAgWEFfU0VUX0dJ RCgmbm9kZS5hdHRyLCBLR0lEVF9JTklUKDApKTsNCisjZW5kaWYNCiAgICAg WEFfU0VUX0FUSU1FKCZub2RlLmF0dHIsIDApOw0KICAgICBYQV9TRVRfTVRJ TUUoJm5vZGUuYXR0ciwgMCk7DQogICAgIFhBX1NFVF9DVElNRSgmbm9kZS5h dHRyLCAwKTsNCkBAIC0xNTksNyArMTY0LDExIEBAIG1ha2Vfcm9vdCAoc3Ry dWN0IHN1cGVyX2Jsb2NrICpzYikNCiAgICAgbm5wZnMtPnJvb3QgPSBpbm9k ZTsNCiANCiAgICAgLyogWFhYIGVycm9yIGhhbmRsaW5nICovDQorI2lmIExJ TlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNCwwKQ0KICAg ICBkcCA9IGRfYWxsb2Nfcm9vdChpbm9kZSk7DQorI2Vsc2UNCisgICAgZHAg PSBkX21ha2Vfcm9vdChpbm9kZSk7DQorI2VuZGlmDQogICAgIG5ucGZzX2Rf aW5pdChkcCk7DQogICAgIHNiLT5zX3Jvb3QgPSBkcDsNCiAgICAgcmV0dXJu IDA7DQpAQCAtMTgzLDEzICsxOTIsMjcgQEAgbm5wZnNfcmVhZF9zdXBlciAo c3RydWN0IHN1cGVyX2Jsb2NrICogcw0KICAgICBOTlBGU0RFQihYREVCVkZP UFMsICgibm5wZnNfcmVhZF9zdXBlcjogYmVnaW4gc2V0dGluZyB2YXJpYWJs ZXNcbiIpKTsNCiANCiAgICAgaWYgKGRhdGEgIT0gTlVMTCkgew0KKyNpZiBM SU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQog CXN0cnVjdCBuYW1laWRhdGEgbmQ7DQorI2Vsc2UNCisJc3RydWN0IHBhdGgg cGF0aDsNCisjZW5kaWYNCiAJDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8 IEtFUk5FTF9WRVJTSU9OKDIsNiwzOSkNCiAJZXJyb3IgPSBwYXRoX2xvb2t1 cChkYXRhLCAwLCAmbmQpOw0KKyNlbGlmIExJTlVYX1ZFUlNJT05fQ09ERSA8 IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCisJZXJyb3IgPSBrZXJuX3BhdGgo ZGF0YSwgMCwgJm5kLnBhdGgpOw0KKyNlbHNlDQorCWVycm9yID0ga2Vybl9w YXRoKGRhdGEsIDAsICZwYXRoKTsNCisjZW5kaWYNCiAJaWYgKGVycm9yKQ0K IAkgICAgZGRldiA9IEVSUl9QVFIoZXJyb3IpOw0KIAllbHNlDQotCSAgICBk ZGV2ID0gbmQuZGVudHJ5Ow0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBL RVJORUxfVkVSU0lPTigzLDE5LDApDQorCSAgICBkZGV2ID0gbmQucGF0aC5k ZW50cnk7DQorI2Vsc2UNCisJICAgIGRkZXYgPSBwYXRoLmRlbnRyeTsNCisj ZW5kaWYNCiANCiAJaWYgKCFJU19FUlIoZGRldikpIHsNCiAJICAgIG1pbm9y ZGV2aWNlID0gTUlOT1IoZGRldi0+ZF9pbm9kZS0+aV9yZGV2KTsNCkBAIC0y MzMsNyArMjU2LDcgQEAgbm5wZnNfZmlsbF9zdXBlciAoc3RydWN0IHN1cGVy X2Jsb2NrICpzYg0KICAgICByZXR1cm4gMDsNCiB9DQogDQotI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMTgpDQorI2lm IExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzOSkN CiBpbnQNCiBubnBmc19nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUg KmZzX3R5cGUsDQogCSAgICAgaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZf bmFtZSwNCkBAIC0yNDIsMTkgKzI2NSwyMiBAQCBubnBmc19nZXRfc2Ioc3Ry dWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzDQogICAgIHJldHVybiBnZXRfc2Jf bm9kZXYoZnNfdHlwZSwgZmxhZ3MsIGRhdGEsIG5ucGZzX2ZpbGxfc3VwZXIs IG1udCk7DQogfQ0KICNlbHNlDQotc3RydWN0IHN1cGVyX2Jsb2NrICoNCi1u bnBmc19nZXRfc2IgKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBl LA0KLQkgICAgICBpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2 b2lkICpkYXRhKSANCitzdHJ1Y3QgZGVudHJ5Kg0KK25ucGZzX21vdW50KHN0 cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLA0KKwkgICAgIGludCBm bGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsDQorCSAgICAgdm9pZCAqZGF0 YSkgDQogew0KLSAgICByZXR1cm4gZ2V0X3NiX25vZGV2KGZzX3R5cGUsIGZs YWdzLCBkYXRhLCBubnBmc19maWxsX3N1cGVyKTsNCisgICAgcmV0dXJuIG1v dW50X25vZGV2KGZzX3R5cGUsIGZsYWdzLCBkYXRhLCBubnBmc19maWxsX3N1 cGVyKTsNCiB9DQogI2VuZGlmDQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0KIHN0YXRpYyB2b2lkDQogbm5w ZnNfd3JpdGVfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICogc2IpDQogew0K ICAgICBzYi0+c19kaXJ0ID0gMDsNCiB9DQorI2VuZGlmDQogDQogLyoNCiAg KiBYWFggaXMgdGhpcyBnb29kPyANCkBAIC0yNzMsNzMgKzI5OSw2IEBAIG5u cGZzX3B1dF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQ0KICAgICBO TlBGU0RFQihYREVCVkZPUFMsICgibm5wZnNfcHV0X3N1cGVyIGV4aXRpbmdc biIpKTsNCiB9DQogDQotc3RhdGljIHZvaWQNCi1ubnBmc19yZWFkX2lub2Rl KHN0cnVjdCBpbm9kZSAqaW5vZGUpDQotew0KLSAgICBOTlBGU0RFQihYREVC VkZPUFMsKCJubnBmc19yZWFkX2lub2RlIHN0YXJ0aW5nIGlub2RlOiAlcFxu Iixpbm9kZSkpOw0KLSAgICBOTlBGU0RFQihYREVCVkZPUFMsKCJubnBmc19y ZWFkX2lub2RlIGlub2RlLT5pX2lubzogJWxkXG4iLGlub2RlLT5pX2lubykp Ow0KLSNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigy LDYsMTkpDQotICAgIGlub2RlLT5pX2Jsa3NpemUgPSAxMDI0Ow0KLSNlbmRp Zg0KLSAgICBpbm9kZS0+aV9tb2RlID0gMDsNCi0gICAgaW5vZGUtPmlfb3Ag PSBOVUxMOw0KLSAgICBOTlBGU0RFQihYREVCVkZPUFMsKCJubnBmc19yZWFk X2lub2RlIGV4aXRpbmdcbiIpKTsNCi19DQotIA0KLS8qDQotICogQ2FsbGVk IHdoZW4gYGlub2RlJyBpcyBkZS1yZWZlcmVuY2VkLCBpZSB3aGVuIGlwdXQg aXMgY2FsbGVkLg0KLSAqLw0KLQ0KLXN0YXRpYyB2b2lkDQotbm5wZnNfcHV0 X2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpDQotew0KLSAgICBzdHJ1Y3Qg bm5wZnNfbm9kZSAqeG4gPSBWTk9ERV9UT19YTk9ERShpbm9kZSk7DQotICAg IHN0cnVjdCBubnBmcyAqbm5wZnNwID0gTk5QRlNfRlJPTV9WTk9ERShpbm9k ZSk7DQotICAgIGludCBiYWQ7DQotDQotICAgIE5OUEZTREVCKFhERUJWRk9Q UywoIm5ucGZzX3B1dF9pbm9kZTogaW5vZGU6ICVwIGNvdW50OiAlZCBhbGlh c2VzOiIsDQotCQkJaW5vZGUsIG5ucGZzX2ljb3VudChpbm9kZSkpKTsNCi0g ICAgbm5wZnNfcHJpbnRfYWxpYXNlcyhpbm9kZSk7DQotICAgIA0KLSAgICBk b3duKCZubnBmc3AtPmluYWN0aXZlX3NlbSk7DQotDQotICAgIGlmICgobm5w ZnNwLT5zdGF0dXMgJiBOTlBGU19ERVZPUEVOKSA9PSAwKSB7DQotCWlmICgh aXNfYmFkX2lub2RlKGlub2RlKSkgew0KLQkgICAgaWYgKGlub2RlICE9IG5u cGZzcC0+cm9vdCkgew0KLQkJbWFrZV9iYWRfaW5vZGUoaW5vZGUpOw0KLQkJ bm5wZnNfaXJlbGUoaW5vZGUpOyAvKiBzZWUgbm5wZnNfbm9kZV9hZGQoKSAq Lw0KLQkgICAgfQ0KLQkgICAgeG4tPmZsYWdzIHw9IE5OUEZTX1NUQUxFOw0K LQl9DQotCWJhZCA9IDE7IC8qIG9yIHJvb3QsIHJlYWxseSAqLw0KLSAgICB9 IGVsc2Ugew0KLQliYWQgPSBpc19iYWRfaW5vZGUoaW5vZGUpOw0KLSAgICB9 DQotDQotICAgIGlmICh4bi0+ZmxhZ3MgJiBOTlBGU19TVEFMRSAmJiAhbm5w ZnNfbm9kZV91c2Vycyhpbm9kZSkpIHsNCi0JeG4tPmZsYWdzIHw9IE5OUEZT X05PREVfSVBVVDsgLyogWFhYIGxvY2tpbmcgKi8NCi0gIAlubnBmc19mb3Jj ZV9pbnZhbGlkX25vZGUoeG4pOw0KLQl4bi0+ZmxhZ3MgJj0gfk5OUEZTX05P REVfSVBVVDsNCi0gICAgfQ0KLSAgICANCi0gICAgaWYgKGJhZCkgew0KLQlp ZiAobm5wZnNfaWNvdW50KGlub2RlKSA9PSAxKQ0KLQkgICAgbm5wZnNfbm9k ZV9jbGVhcih4bik7DQotICAgIH0gZWxzZSBpZiAobm5wZnNfaWNvdW50KGlu b2RlKSA9PSAyKSB7DQotCS8qIA0KLQkgKiBUaGUgbGFzdCBleHRlcm5hbCBy ZWZlcmVuY2UgaXMgYmVpbmcgZHJvcHBlZCwgb25seSB0aGUgb25lDQotCSAq IGZyb20gbm5wZnNfbm9kZV9hZGQoKSBpcyBsZWZ0LiBUaW1lIHRvIGxldCBk YWVtb24gcmVsZWFzZQ0KLQkgKiB0aGlzIG5vZGUgcHJvcGVybHkuDQotCSAq Lw0KLQlpZiAoKHhuLT5mbGFncyAmIE5OUEZTX0xJTUJPKSA9PSAwKSB7DQot CSAgICBubnBmc19ub2RlX2NsZWFyKHhuKTsNCi0JICAgIG5ucGZzX3F1ZXVl X2luYWN0aXZlKHhuKTsNCi0JfQ0KLSAgICB9DQotDQotICAgIHVwKCZubnBm c3AtPmluYWN0aXZlX3NlbSk7DQotfQ0KLQ0KIHN0YXRpYyBpbnQNCiBubnBm c19zdGF0ZnNfaW50KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBr c3RhdGZzICpidWYpDQogew0KQEAgLTM1MiwyNSArMzExLDI1IEBAIG5ucGZz X3N0YXRmc19pbnQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwNCiAgICAgdG1w LmZfYmF2YWlsICA9IDEwMjQqMTAyNCoyLTUwOw0KICAgICB0bXAuZl9maWxl cyAgID0gMTAyNCoxMDI0Ow0KICAgICB0bXAuZl9mZnJlZSAgID0gMTAyNCox MDI0LTEwMDsNCisgICAgdG1wLmZfZnNpZC52YWxbMF0gPSAwOw0KKyAgICB0 bXAuZl9mc2lkLnZhbFsxXSA9IDA7DQogICAgIHRtcC5mX25hbWVsZW4gPSBO QU1FX01BWDsNCisgICAgdG1wLmZfZnJzaXplICA9IDA7DQorICAgIHRtcC5m X3NwYXJlWzBdID0gMDsNCisgICAgdG1wLmZfc3BhcmVbMV0gPSAwOw0KKyAg ICB0bXAuZl9zcGFyZVsyXSA9IDA7DQorICAgIHRtcC5mX3NwYXJlWzNdID0g MDsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04o Miw2LDM2KQ0KKyAgICB0bXAuZl9zcGFyZVs0XSA9IDA7DQorI2Vsc2UNCisg ICAgdG1wLmZfZmxhZ3MgPSAwOw0KKyNlbmRpZg0KICAgICAqYnVmID0gdG1w Ow0KICAgICByZXR1cm4gMDsNCiB9DQogDQotI2lmIExJTlVYX1ZFUlNJT05f Q09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMTgpDQotDQogc3RhdGljIGlu dA0KIG5ucGZzX3N0YXRmcyhzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVj dCBrc3RhdGZzICpidWYpDQogew0KICAgICByZXR1cm4gbm5wZnNfc3RhdGZz X2ludChkZW50cnktPmRfc2IsIGJ1Zik7DQogfQ0KLQ0KLSNlbHNlDQotDQot c3RhdGljIGludA0KLW5ucGZzX3N0YXRmcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sg KnNiLCBzdHJ1Y3Qga3N0YXRmcyAqYnVmKQ0KLXsNCi0gICAgcmV0dXJuIG5u cGZzX3N0YXRmc19pbnQoc2IsIGJ1Zik7DQotfQ0KLQ0KLSNlbmRpZg0KZGlm ZiAtdXByTiAtWG5vZGlmZiBhcmxhLTAuOTAtb2xkL2FybGFkL2ZjYWNoZS5j IGFybGEtMC45MC9hcmxhZC9mY2FjaGUuYw0KLS0tIGFybGEtMC45MC1vbGQv YXJsYWQvZmNhY2hlLmMJMjAwNi0xMi0xMSAxNzoyMzoyNC4wMDAwMDAwMDAg KzAxMDANCisrKyBhcmxhLTAuOTAvYXJsYWQvZmNhY2hlLmMJMjAxNi0wMS0y MiAxNzowMDo0My4wMDAwMDAwMDAgKzAxMDANCkBAIC03MTMsNyArNzEzLDcg QEAgZmNhY2hlX2hhdmVfd2FudGVkKEZDYWNoZUVudHJ5ICplbnRyeSwgdQ0K IGludA0KIGZjYWNoZV9kaXJfbmFtZSAoRkNhY2hlRW50cnkgKmVudHJ5LCBj aGFyICpzLCBzaXplX3QgbGVuKQ0KIHsNCi0gICAgcmV0dXJuIHNucHJpbnRm IChzLCBsZW4sICIlMDJYIiwgZW50cnktPmluZGV4IC8gMHgxMDApOw0KKyAg ICByZXR1cm4gc25wcmludGYgKHMsIGxlbiwgTk5QRlNfQ0FDSEVfRklMRV9E SVIxLCBlbnRyeS0+aW5kZXggLyAweDEwMCk7DQogfQ0KIA0KIC8qDQpAQCAt NzIzLDcgKzcyMyw3IEBAIGZjYWNoZV9kaXJfbmFtZSAoRkNhY2hlRW50cnkg KmVudHJ5LCBjaGENCiBzdGF0aWMgaW50DQogZmNhY2hlX2ZpbGVfbmFtZSAo RkNhY2hlRW50cnkgKmVudHJ5LCBjaGFyICpzLCBzaXplX3QgbGVuKQ0KIHsN Ci0gICAgcmV0dXJuIHNucHJpbnRmIChzLCBsZW4sICIlMDJYLyUwMlgiLA0K KyAgICByZXR1cm4gc25wcmludGYgKHMsIGxlbiwgTk5QRlNfQ0FDSEVfRklM RV9ESVJfUEFUSCwNCiAJCSAgICAgZW50cnktPmluZGV4IC8gMHgxMDAsIGVu dHJ5LT5pbmRleCAlIDB4MTAwKTsNCiB9DQogDQpAQCAtODE1LDcgKzgxNSw3 IEBAIGZjYWNoZV9maGdldCAoY2hhciAqZmlsZW5hbWUsIGZjYWNoZV9jYWMN CiAJaW50IHJldCwgYSwgYjsNCiAJY2hhciBidWZbMTAyNF07DQogDQotCXJl dCA9IHNzY2FuZihmaWxlbmFtZSwgIiUwMlgvJTAyWCIsICZhLCAmYik7DQor CXJldCA9IHNzY2FuZihmaWxlbmFtZSwgTk5QRlNfQ0FDSEVfRklMRV9ESVJf UEFUSCwgJmEsICZiKTsNCiAJaWYgKHJldCAhPSAyKQ0KIAkgICAgcmV0dXJu IEVJTlZBTDsNCiANCkBAIC04MjQsNyArODI0LDcgQEAgZmNhY2hlX2ZoZ2V0 IChjaGFyICpmaWxlbmFtZSwgZmNhY2hlX2NhYw0KIAkNCiAJcmV0ID0gc25w cmludGYoKGNoYXIgKiloYW5kbGUtPm5ucGZzX2hhbmRsZSwgDQogCQkgICAg ICAgc2l6ZW9mKGhhbmRsZS0+bm5wZnNfaGFuZGxlKSwNCi0JCSAgICAgICAi JXNcXCUwMlhcXCUwMlgiLCBidWYsIGEsIGIpOw0KKwkJICAgICAgICIlc1xc IiBOTlBGU19DQUNIRV9GSUxFX0RJUl9QQVRILCBidWYsIGEsIGIpOw0KIA0K IAlpZiAocmV0ID4gMCAmJiByZXQgPCBzaXplb2YoaGFuZGxlLT5ubnBmc19o YW5kbGUpKQ0KIAkgICAgaGFuZGxlLT52YWxpZCA9IDE7DQo= ---276651502-1709114826-1462551060=:25480 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Arla-drinkers mailing list [email protected] https://lists.stacken.kth.se/mailman/listinfo/arla-drinkers ---276651502-1709114826-1462551060=:25480--