From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1GAaQP-0006xk-TU for qemu-devel@nongnu.org; Tue, 08 Aug 2006 18:51:49 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1GAaQN-0006xQ-UU for qemu-devel@nongnu.org; Tue, 08 Aug 2006 18:51:49 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1GAaQN-0006xM-KU for qemu-devel@nongnu.org; Tue, 08 Aug 2006 18:51:47 -0400 Received: from [66.249.82.237] (helo=wx-out-0506.google.com) by monty-python.gnu.org with esmtp (Exim 4.52) id 1GAaUv-0004mR-Ol for qemu-devel@nongnu.org; Tue, 08 Aug 2006 18:56:30 -0400 Received: by wx-out-0506.google.com with SMTP id r21so44215wxc for ; Tue, 08 Aug 2006 15:51:46 -0700 (PDT) Message-ID: <83a4d4ca0608081551j734cac7aw7b4c11e1db7bfd6d@mail.gmail.com> Date: Wed, 9 Aug 2006 00:51:35 +0200 From: Edu Subject: Re: [Qemu-devel][PATCH] Re: AltGr keystrokes In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_12377_29761819.1155077495281" References: <83a4d4ca0608011722k66a5ecaag1cf147a035c16e1@mail.gmail.com> Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org ------=_Part_12377_29761819.1155077495281 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi, Attached patch, in addition to Anthony's, improves VNC keyboard support for AltGr and extended characters. I've only modified Spanish "es" keymap, but should be trivial to update other keymaps in a similar manner. This is my first patch submission, so please be lenient :) Regards, Eduardo Felipe ------=_Part_12377_29761819.1155077495281 Content-Type: application/octet-stream; name=vnc-keyboard.diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_eqmv8p28 Content-Disposition: attachment; filename="vnc-keyboard.diff" LS0tIHFlbXUtb2xkL2tleW1hcHMvZXMJU3VuIERlYyAxMiAxODo1NjozMCAyMDA0DQorKysgcWVt dS1uZXcva2V5bWFwcy9lcwlUdWUgQXVnIDA4IDIzOjQxOjU1IDIwMDYNCkBAIC0xMDMsMyArMTAz LDU4IEBADQogdW5kZXJzY29yZSAweDM1IHNoaWZ0DQogZGVhZF9iZWxvd2RvdCAweDM1IGFsdGdy DQogZGVhZF9hYm92ZWRvdCAweDM1IHNoaWZ0IGFsdGdyDQorDQorDQorIyBEZWFkIGtleXMNCith YWN1dGUgMHgxZSBkZWFkX2FjdXRlDQorQWFjdXRlIDB4MWUgZGVhZF9hY3V0ZSBzaGlmdA0KK2Vh Y3V0ZSAweDEyIGRlYWRfYWN1dGUNCitFYWN1dGUgMHgxMiBkZWFkX2FjdXRlIHNoaWZ0DQoraWFj dXRlIDB4MTcgZGVhZF9hY3V0ZQ0KK0lhY3V0ZSAweDE3IGRlYWRfYWN1dGUgc2hpZnQNCitvYWN1 dGUgMHgxOCBkZWFkX2FjdXRlDQorT2FjdXRlIDB4MTggZGVhZF9hY3V0ZSBzaGlmdA0KK3VhY3V0 ZSAweDE2IGRlYWRfYWN1dGUNCitVYWN1dGUgMHgxNiBkZWFkX2FjdXRlIHNoaWZ0DQoreWFjdXRl IDB4MTUgZGVhZF9hY3V0ZQ0KK1lhY3V0ZSAweDE1IGRlYWRfYWN1dGUgc2hpZnQNCisNCithZ3Jh dmUgMHgxZSBkZWFkX2dyYXZlDQorQWdyYXZlIDB4MWUgZGVhZF9ncmF2ZSBzaGlmdA0KK2VncmF2 ZSAweDEyIGRlYWRfZ3JhdmUNCitFZ3JhdmUgMHgxMiBkZWFkX2dyYXZlIHNoaWZ0DQoraWdyYXZl IDB4MTcgZGVhZF9ncmF2ZQ0KK0lncmF2ZSAweDE3IGRlYWRfZ3JhdmUgc2hpZnQNCitvZ3JhdmUg MHgxOCBkZWFkX2dyYXZlDQorT2dyYXZlIDB4MTggZGVhZF9ncmF2ZSBzaGlmdA0KK3VncmF2ZSAw eDE2IGRlYWRfZ3JhdmUNCitVZ3JhdmUgMHgxNiBkZWFkX2dyYXZlIHNoaWZ0DQorDQorYWRpYWVy ZXNpcyAweDFlIGRlYWRfZGlhZXJlc2lzDQorQWRpYWVyZXNpcyAweDFlIGRlYWRfZGlhZXJlc2lz IHNoaWZ0DQorZWRpYWVyZXNpcyAweDEyIGRlYWRfZGlhZXJlc2lzDQorRWRpYWVyZXNpcyAweDEy IGRlYWRfZGlhZXJlc2lzIHNoaWZ0DQoraWRpYWVyZXNpcyAweDE3IGRlYWRfZGlhZXJlc2lzDQor SWRpYWVyZXNpcyAweDE3IGRlYWRfZGlhZXJlc2lzIHNoaWZ0DQorb2RpYWVyZXNpcyAweDE4IGRl YWRfZGlhZXJlc2lzDQorT2RpYWVyZXNpcyAweDE4IGRlYWRfZGlhZXJlc2lzIHNoaWZ0DQordWRp YWVyZXNpcyAweDE2IGRlYWRfZGlhZXJlc2lzDQorVWRpYWVyZXNpcyAweDE2IGRlYWRfZGlhZXJl c2lzIHNoaWZ0DQoreWRpYWVyZXNpcyAweDE1IGRlYWRfZGlhZXJlc2lzDQorDQorYWNpcmN1bWZs ZXggMHgxZSBkZWFkX2NpcmN1bWZsZXgNCitBY2lyY3VtZmxleCAweDFlIGRlYWRfY2lyY3VtZmxl eCBzaGlmdA0KK2VjaXJjdW1mbGV4IDB4MTIgZGVhZF9jaXJjdW1mbGV4DQorRWNpcmN1bWZsZXgg MHgxMiBkZWFkX2NpcmN1bWZsZXggc2hpZnQNCitpY2lyY3VtZmxleCAweDE3IGRlYWRfY2lyY3Vt ZmxleA0KK0ljaXJjdW1mbGV4IDB4MTcgZGVhZF9jaXJjdW1mbGV4IHNoaWZ0DQorb2NpcmN1bWZs ZXggMHgxOCBkZWFkX2NpcmN1bWZsZXgNCitPY2lyY3VtZmxleCAweDE4IGRlYWRfY2lyY3VtZmxl eCBzaGlmdA0KK3VjaXJjdW1mbGV4IDB4MTYgZGVhZF9jaXJjdW1mbGV4DQorVWNpcmN1bWZsZXgg MHgxNiBkZWFkX2NpcmN1bWZsZXggc2hpZnQNCisNCithY3V0ZSAweDM5IGRlYWRfYWN1dGUNCitn cmF2ZSAweDM5IGRlYWRfZ3JhdmUNCitkaWFlcmVzaXMgMHgzOSBkZWFkX2RpYWVyZXNpcw0KK2Fz Y2lpY2lyY3VtIDB4MzkgZGVhZF9jaXJjdW1mbGV4DQorDQotLS0gcWVtdS1vbGQva2V5bWFwcy5j CVN1biBBcHIgMzAgMjM6Mjg6MzUgMjAwNg0KKysrIHFlbXUtbmV3L2tleW1hcHMuYwlUdWUgQXVn IDA4IDIzOjM5OjU4IDIwMDYNCkBAIC0yMiw2ICsyMiw3IEBADQogICogVEhFIFNPRlRXQVJFLg0K ICAqLw0KIA0KKw0KIHN0YXRpYyBpbnQgZ2V0X2tleXN5bShjb25zdCBjaGFyICpuYW1lKQ0KIHsN CiAgICAgbmFtZTJrZXlzeW1fdCAqcDsNCkBAIC0zMiwxMyArMzMsMjYgQEANCiAgICAgcmV0dXJu IDA7DQogfQ0KIA0KKw0KKyNkZWZpbmUgS0VZTU9EX1NISUZUIDB4MDENCisjZGVmaW5lIEtFWU1P RF9DVFJMICAweDAyDQorI2RlZmluZSBLRVlNT0RfQUxUICAgMHgwNA0KKyNkZWZpbmUgS0VZTU9E X0RFQUQgIDB4MDgNCisNCiAjZGVmaW5lIE1BWF9OT1JNQUxfS0VZQ09ERSA1MTINCiAjZGVmaW5l IE1BWF9FWFRSQV9DT1VOVCAyNTYNCisNCiB0eXBlZGVmIHN0cnVjdCB7DQotICAgIHVpbnQxNl90 IGtleXN5bTJrZXljb2RlW01BWF9OT1JNQUxfS0VZQ09ERV07DQorICAgIHVpbnQxNl90IGtleWNv ZGU7DQorICAgIHVpbnQ4X3Qga2V5bW9kOw0KKyAgICBpbnQgZGVhZHN5bTsNCit9IGtleWRhdGFf dDsNCisNCit0eXBlZGVmIHN0cnVjdCB7DQorICAgIGtleWRhdGFfdCBrZXlzeW0ya2V5Y29kZVtN QVhfTk9STUFMX0tFWUNPREVdOw0KICAgICBzdHJ1Y3Qgew0KIAlpbnQga2V5c3ltOw0KLQl1aW50 MTZfdCBrZXljb2RlOw0KKyAgICAgICAga2V5ZGF0YV90IGtkYXRhOw0KICAgICB9IGtleXN5bTJr ZXljb2RlX2V4dHJhW01BWF9FWFRSQV9DT1VOVF07DQogICAgIGludCBleHRyYV9jb3VudDsNCiB9 IGtiZF9sYXlvdXRfdDsNCkBAIC01MCw2ICs2NCw3IEBADQogICAgIGNoYXIgZmlsZV9uYW1lWzEw MjRdOw0KICAgICBjaGFyIGxpbmVbMTAyNF07DQogICAgIGludCBsZW47DQorICAgIGludCB1cHBl cjsNCiANCiAgICAgc25wcmludGYoZmlsZV9uYW1lLCBzaXplb2YoZmlsZV9uYW1lKSwNCiAgICAg ICAgICAgICAgIiVzL2tleW1hcHMvJXMiLCBiaW9zX2RpciwgbGFuZ3VhZ2UpOw0KQEAgLTgyLDE3 ICs5Nyw2MSBAQA0KIAkgICAgaWYgKCplbmRfb2Zfa2V5c3ltKSB7DQogCQlpbnQga2V5c3ltOw0K IAkJKmVuZF9vZl9rZXlzeW0gPSAwOw0KKyAgICAgICAgICAgICAgICB1aW50OF90IGtleW1vZDsN CisgICAgICAgICAgICAgICAgaW50IGRlYWRzeW07DQorICAgICAgICAgICAgICAgIA0KKyAgICAg ICAgICAgICAgICBrZXltb2QgPSAwOw0KKyAgICAgICAgICAgICAgICBkZWFkc3ltID0gMDsNCisg ICAgICAgICAgICAgICAgdXBwZXIgPSAwOw0KK3JlZG86DQorICAgICAgICAgICAgICAgIGlmICh1 cHBlcj09MSl7DQorICAgICAgICAgICAgICAgICAgICBjaGFyICpjOw0KKyAgICAgICAgICAgICAg ICAgICAgZm9yKGM9bGluZTsqYztjKyspDQorICAgICAgICAgICAgICAgICAgICAgICAgKmM9dG91 cHBlcigqYyk7DQorICAgICAgICAgICAgICAgICAgICBrZXltb2QgfD0gS0VZTU9EX1NISUZUOw0K KyAgICAgICAgICAgICAgICAgICAgdXBwZXIrKzsNCisgICAgICAgICAgICAgICAgfQ0KIAkJa2V5 c3ltID0gZ2V0X2tleXN5bShsaW5lKTsNCiAJCWlmIChrZXlzeW0gPT0gMCkgew0KICAgICAgICAg ICAgICAgICAgICAgLy8JCSAgICBmcHJpbnRmKHN0ZGVyciwgIldhcm5pbmc6IHVua25vd24ga2V5 c3ltICVzXG4iLCBsaW5lKTsNCiAJCX0gZWxzZSB7DQogCQkgICAgY29uc3QgY2hhciAqcmVzdCA9 IGVuZF9vZl9rZXlzeW0gKyAxOw0KIAkJICAgIGludCBrZXljb2RlID0gc3RydG9sKHJlc3QsIE5V TEwsIDApOw0KKyAgICAgICAgICAgICAgICAgICAgY2hhciAqbW9kaWZpZXI7DQorICAgICAgICAg ICAgICAgICAgICBtb2RpZmllciA9IHN0cnRvayAocmVzdCwiICIpOw0KKyAgICAgICAgICAgICAg ICAgICAgbW9kaWZpZXIgPSBzdHJ0b2sgKE5VTEwsIiAiKTsNCisgICAgICAgICAgICAgICAgICAg IHdoaWxlICggbW9kaWZpZXIgIT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlm ICghc3RyY21wKG1vZGlmaWVyLCAic2hpZnQiKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBrZXltb2QgfD0gS0VZTU9EX1NISUZUOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0g ZWxzZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3RyY21wKG1vZGlmaWVyLCAiYWRk dXBwZXIiKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHBlcisrOw0KKyAgICAg ICAgICAgICAgICAgICAgICAgIH0gZWxzZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgh c3RyY21wKG1vZGlmaWVyLCAiY3RybCIpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAg IGtleW1vZCB8PSBLRVlNT0RfQ1RSTDsNCisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UN CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0cmNtcChtb2RpZmllciwgImFsdCIpKSB7 DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleW1vZCB8PSBLRVlNT0RfQUxUOw0KKyAg ICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlm ICghc3RyY21wKG1vZGlmaWVyLCAiYWx0Z3IiKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBrZXltb2QgfD0gS0VZTU9EX0NUUkwgfCBLRVlNT0RfQUxUOw0KKyAgICAgICAgICAgICAg ICAgICAgICAgIH0gZWxzZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3RybmNtcCht b2RpZmllciwgImRlYWRfIiw1KSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlt b2QgfD0gS0VZTU9EX0RFQUQ7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYWRzeW0g PSBnZXRfa2V5c3ltKG1vZGlmaWVyKTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9IA0KKyAg ICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyID0gc3RydG9rIChOVUxMLCIgIik7DQorICAg ICAgICAgICAgICAgICAgICB9DQogCQkgICAgLyogaWYoa2V5Y29kZSYweDgwKQ0KIAkJICAgICAg IGtleWNvZGU9KGtleWNvZGU8PDgpXjB4ODBlMDsgKi8NCiAJCSAgICBpZiAoa2V5c3ltIDwgTUFY X05PUk1BTF9LRVlDT0RFKSB7DQogCQkJLy9mcHJpbnRmKHN0ZGVyciwiU2V0dGluZyBrZXlzeW0g JXMgKCVkKSB0byAlZFxuIixsaW5lLGtleXN5bSxrZXljb2RlKTsNCi0JCQlrLT5rZXlzeW0ya2V5 Y29kZVtrZXlzeW1dID0ga2V5Y29kZTsNCisgICAgICAgICAgICAgICAgICAgICAgICBrLT5rZXlz eW0ya2V5Y29kZVtrZXlzeW1dLg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXljb2Rl ID0ga2V5Y29kZTsNCisgICAgICAgICAgICAgICAgICAgICAgICBrLT5rZXlzeW0ya2V5Y29kZVtr ZXlzeW1dLg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXltb2QgPSBrZXltb2Q7DQor ICAgICAgICAgICAgICAgICAgICAgICAgay0+a2V5c3ltMmtleWNvZGVba2V5c3ltXS4NCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGVhZHN5bSA9IGRlYWRzeW07DQogCQkgICAgfSBlbHNl IHsNCiAJCQlpZiAoay0+ZXh0cmFfY291bnQgPj0gTUFYX0VYVFJBX0NPVU5UKSB7DQogCQkJICAg IGZwcmludGYoc3RkZXJyLA0KQEAgLTEwNSwxMSArMTY0LDE4IEBADQogI2VuZGlmDQogCQkJICAg IGstPmtleXN5bTJrZXljb2RlX2V4dHJhW2stPmV4dHJhX2NvdW50XS4NCiAJCQkJa2V5c3ltID0g a2V5c3ltOw0KLQkJCSAgICBrLT5rZXlzeW0ya2V5Y29kZV9leHRyYVtrLT5leHRyYV9jb3VudF0u DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGstPmtleXN5bTJrZXljb2RlX2V4dHJhW2st PmV4dHJhX2NvdW50XS5rZGF0YS4NCiAJCQkJa2V5Y29kZSA9IGtleWNvZGU7DQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGstPmtleXN5bTJrZXljb2RlX2V4dHJhW2stPmV4dHJhX2NvdW50 XS5rZGF0YS4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleW1vZCA9IGtleW1v ZDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgay0+a2V5c3ltMmtleWNvZGVfZXh0cmFb ay0+ZXh0cmFfY291bnRdLmtkYXRhLg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGVhZHN5bSA9IGRlYWRzeW07DQorICAgICAgICAgICAgICAgIA0KIAkJCSAgICBrLT5leHRyYV9j b3VudCsrOw0KIAkJCX0NCiAJCSAgICB9DQorICAgICAgICAgICAgICAgICAgICBpZiAodXBwZXI9 PTEpDQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZWRvOw0KIAkJfQ0KIAkgICAgfQ0K IAl9DQpAQCAtMTIzLDE0ICsxODksMTEgQEANCiAgICAgcmV0dXJuIHBhcnNlX2tleWJvYXJkX2xh eW91dChsYW5ndWFnZSwgMCk7DQogfQ0KIA0KLXN0YXRpYyBpbnQga2V5c3ltMnNjYW5jb2RlKHZv aWQgKmtiZF9sYXlvdXQsIGludCBrZXlzeW0pDQorc3RhdGljIGtleWRhdGFfdCAqZmluZF9rZXlz eW0odm9pZCAqa2JkX2xheW91dCwgaW50IGtleXN5bSkNCiB7DQogICAgIGtiZF9sYXlvdXRfdCAq ayA9IGtiZF9sYXlvdXQ7DQogICAgIGlmIChrZXlzeW0gPCBNQVhfTk9STUFMX0tFWUNPREUpIHsN Ci0JaWYgKGstPmtleXN5bTJrZXljb2RlW2tleXN5bV0gPT0gMCkNCi0JICAgIGZwcmludGYoc3Rk ZXJyLCAiV2FybmluZzogbm8gc2NhbmNvZGUgZm91bmQgZm9yIGtleXN5bSAlZFxuIiwNCi0JCSAg ICBrZXlzeW0pOw0KLQlyZXR1cm4gay0+a2V5c3ltMmtleWNvZGVba2V5c3ltXTsNCisgICAgICAg IHJldHVybiAmay0+a2V5c3ltMmtleWNvZGVba2V5c3ltXTsNCiAgICAgfSBlbHNlIHsNCiAJaW50 IGk7DQogI2lmZGVmIFhLX0lTT19MZWZ0X1RhYg0KQEAgLTEzOCw4ICsyMDEsOSBAQA0KIAkgICAg a2V5c3ltID0gWEtfVGFiOw0KICNlbmRpZg0KIAlmb3IgKGkgPSAwOyBpIDwgay0+ZXh0cmFfY291 bnQ7IGkrKykNCi0JICAgIGlmIChrLT5rZXlzeW0ya2V5Y29kZV9leHRyYVtpXS5rZXlzeW0gPT0g a2V5c3ltKQ0KLQkJcmV0dXJuIGstPmtleXN5bTJrZXljb2RlX2V4dHJhW2ldLmtleWNvZGU7DQor ICAgICAgICAgICAgaWYgKGstPmtleXN5bTJrZXljb2RlX2V4dHJhW2ldLmtleXN5bSA9PSBrZXlz eW0pIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuICZrLT5rZXlzeW0ya2V5Y29kZV9leHRyYVtp XS5rZGF0YTsNCiAgICAgfQ0KLSAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICByZXR1cm4gTlVM TDsNCiB9DQotLS0gcWVtdS1vbGQvc2RsLmMJVHVlIEp1biAxMyAxNDowMzo1MyAyMDA2DQorKysg cWVtdS1uZXcvc2RsLmMJVHVlIEF1ZyAwOCAyMzo0MDowOCAyMDA2DQpAQCAtMTA0LDcgKzEwNCwx MSBAQA0KICAgICBrZXlzeW0gPSBldi0+a2V5c3ltLnN5bTsNCiAgICAgaWYgKGtleXN5bSA9PSAw ICYmIGV2LT5rZXlzeW0uc2NhbmNvZGUgPT0gMTEzKQ0KICAgICAgICAga2V5c3ltID0gU0RMS19N T0RFOw0KLSAgICByZXR1cm4ga2V5c3ltMnNjYW5jb2RlKGtiZF9sYXlvdXQsIGtleXN5bSk7DQor ICAgIGtleWRhdGFfdCAqZXZlbnRkYXRhID0gZmluZF9rZXlzeW0oa2JkX2xheW91dCwga2V5c3lt KTsNCisgICAgaWYgKGV2ZW50ZGF0YT09TlVMTCkNCisgICAgICAgIHJldHVybiAwOw0KKyAgICBl bHNlDQorICAgICAgICByZXR1cm4gZXZlbnRkYXRhLT5rZXljb2RlOw0KIH0NCiANCiAvKiBzcGVj aWZpYyBrZXlib2FyZCBjb252ZXJzaW9ucyBmcm9tIHNjYW4gY29kZXMgKi8NCi0tLSBxZW11LW9s ZC92bmMuYwlUdWUgSnVuIDEzIDE4OjM1OjI0IDIwMDYNCisrKyBxZW11LW5ldy92bmMuYwlUdWUg QXVnIDA4IDIzOjQxOjM3IDIwMDYNCkBAIC0zMSw2ICszMSwyMyBAQA0KICNpbmNsdWRlICJ2bmNf a2V5c3ltLmgiDQogI2luY2x1ZGUgImtleW1hcHMuYyINCiANCisNCitzdGF0aWMgdWludDhfdCBt b2RpZmllcnNfc3RhdGVbMl1bMjU2XTsNCisNCit0eXBlZGVmIHN0cnVjdCB7DQorICAgIGludCBs ZWZ0Ow0KKyAgICBpbnQgcmlnaHQ7DQorICAgIGludCBiaXQ7DQorfSBtb2RpZmllcl90Ow0KKw0K K3N0YXRpYyBtb2RpZmllcl90IHRlc3RfbW9kaWZpZXJbXT17DQorICAgIHsweDJhLCAgMHgzNiwg ICBLRVlNT0RfU0hJRlR9LA0KKyAgICB7MHgxZCwgIDB4OWQsICAgS0VZTU9EX0NUUkx9LA0KKyAg ICB7MHgzOCwgIDB4YjgsICAgS0VZTU9EX0FMVH0sDQorICAgIHswLDAsMH0sDQorfTsNCisNCisN CiB0eXBlZGVmIHN0cnVjdCBCdWZmZXINCiB7DQogICAgIHNpemVfdCBjYXBhY2l0eTsNCkBAIC02 OTksMTIgKzcxNiw5IEBADQogICAgIH0NCiB9DQogDQotc3RhdGljIHZvaWQgZG9fa2V5X2V2ZW50 KFZuY1N0YXRlICp2cywgaW50IGRvd24sIHVpbnQzMl90IHN5bSkNCi17DQotICAgIGludCBrZXlj b2RlOw0KLQ0KLSAgICBrZXljb2RlID0ga2V5c3ltMnNjYW5jb2RlKHZzLT5rYmRfbGF5b3V0LCBz eW0gJiAweEZGRkYpOw0KIA0KK3N0YXRpYyB2b2lkIGRvX2tleWNvZGUoaW50IGtleWNvZGUsIGlu dCBkb3duKQ0KK3sNCiAgICAgaWYgKGtleWNvZGUgJiAweDgwKQ0KIAlrYmRfcHV0X2tleWNvZGUo MHhlMCk7DQogICAgIGlmIChkb3duKQ0KQEAgLTcxMywxMSArNzI3LDg4IEBADQogCWtiZF9wdXRf a2V5Y29kZShrZXljb2RlIHwgMHg4MCk7DQogfQ0KIA0KK3N0YXRpYyB2b2lkIGRvX21vZGlmaWVy KGludCBrZXljb2RlLCBpbnQgZG93biwgaW50IGxldmVsKQ0KK3sNCisgICAgZG9fa2V5Y29kZShr ZXljb2RlLGRvd24pOw0KKyAgICBtb2RpZmllcnNfc3RhdGVbbGV2ZWxdW2tleWNvZGVdID0gZG93 bjsNCisgICAgaWYgKGxldmVsPT0wKSB7DQorICAgICAgICBtb2RpZmllcnNfc3RhdGVbMV1ba2V5 Y29kZV0gPSBkb3duOw0KKyAgICB9DQorfQ0KKw0KK3N0YXRpYyB2b2lkIHNldF9tb2RpZmllcnMo dWludDhfdCByZXFzdGF0ZSxpbnQgZG93bixpbnQgZnVsbCkNCit7DQorICAgIG1vZGlmaWVyX3Qg Km07DQorICAgIGZvcihtPXRlc3RfbW9kaWZpZXI7IG0tPmJpdDsgbSsrKSB7DQorICAgICAgICBp bnQgcmVxdWVzdGVkID0gcmVxc3RhdGUgJiBtLT5iaXQ7DQorICAgICAgICAvKiBSZWxlYXNlIHVu d2FudGVkIG1vZGlmaWVycyAqLw0KKyAgICAgICAgaWYgKCFkb3duIHx8IGZ1bGwpIHsNCisgICAg ICAgICAgICBpZiAobW9kaWZpZXJzX3N0YXRlWzFdW20tPmxlZnRdICYmICFyZXF1ZXN0ZWQpDQor ICAgICAgICAgICAgICAgIGRvX21vZGlmaWVyKG0tPmxlZnQsMCwxKTsNCisgICAgICAgICAgICBp ZiAobW9kaWZpZXJzX3N0YXRlWzFdW20tPnJpZ2h0XSAmJiAhcmVxdWVzdGVkKQ0KKyAgICAgICAg ICAgICAgICBkb19tb2RpZmllcihtLT5yaWdodCwwLDEpOw0KKyAgICAgICAgfQ0KKyAgICAgICAg LyogUHJlc3MgZGVzaXJlZCBtb2RpZmllcnMgKi8NCisgICAgICAgIGlmIChkb3duIHx8IGZ1bGwp IHsNCisgICAgICAgICAgICBpbnQgYWxyZWFkeV9zZXQgPSBtb2RpZmllcnNfc3RhdGVbMV1bbS0+ bGVmdF0gfCBtb2RpZmllcnNfc3RhdGVbMV1bbS0+cmlnaHRdOw0KKyAgICAgICAgICAgIGlmICgh YWxyZWFkeV9zZXQgJiYgcmVxdWVzdGVkKQ0KKyAgICAgICAgICAgICAgICBkb19tb2RpZmllciht LT5sZWZ0LDEsMSk7DQorICAgICAgICB9DQorICAgIH0NCit9DQorDQorc3RhdGljIHZvaWQgcmVz dG9yZV9tb2RpZmllcnMoKQ0KK3sNCisgICAgLyogUmVzdG9yZSBtb2RpZmllcnMgZnJvbSByZWZl cmVuY2UgKi8NCisgICAgbW9kaWZpZXJfdCAqbTsNCisgICAgZm9yKG09dGVzdF9tb2RpZmllcjsg bS0+Yml0OyBtKyspIHsNCisgICAgICAgIGlmIChtb2RpZmllcnNfc3RhdGVbMF1bbS0+bGVmdF0g IT0gbW9kaWZpZXJzX3N0YXRlWzFdW20tPmxlZnRdKQ0KKyAgICAgICAgICAgIGRvX21vZGlmaWVy KG0tPmxlZnQsbW9kaWZpZXJzX3N0YXRlWzBdW20tPmxlZnRdLDApOw0KKyAgICAgICAgaWYgKG1v ZGlmaWVyc19zdGF0ZVswXVttLT5yaWdodF0gIT0gbW9kaWZpZXJzX3N0YXRlWzFdW20tPnJpZ2h0 XSkNCisgICAgICAgICAgICBkb19tb2RpZmllcihtLT5yaWdodCxtb2RpZmllcnNfc3RhdGVbMF1b bS0+cmlnaHRdLDApOw0KKyAgICB9ICAgIA0KK30NCisNCiBzdGF0aWMgdm9pZCBrZXlfZXZlbnQo Vm5jU3RhdGUgKnZzLCBpbnQgZG93biwgdWludDMyX3Qgc3ltKQ0KIHsNCi0gICAgaWYgKHN5bSA+ PSAnQScgJiYgc3ltIDw9ICdaJykNCi0Jc3ltID0gc3ltIC0gJ0EnICsgJ2EnOw0KLSAgICBkb19r ZXlfZXZlbnQodnMsIGRvd24sIHN5bSk7DQorICAgIGtleWRhdGFfdCAqZXZlbnRkYXRhOw0KKyAg ICBldmVudGRhdGEgPSBmaW5kX2tleXN5bSh2cy0+a2JkX2xheW91dCwgc3ltICYgMHhGRkZGKTsN CisgICAgaWYgKGV2ZW50ZGF0YT09TlVMTCkNCisgICAgICAgIHJldHVybjsNCisgICAgc3dpdGNo KGV2ZW50ZGF0YS0+a2V5Y29kZSkgew0KKyAgICBjYXNlIDB4MmE6ICAgICAgICAgICAgICAgICAg ICAgICAgICAvKiBMZWZ0IFNoaWZ0ICovDQorICAgIGNhc2UgMHgzNjogICAgICAgICAgICAgICAg ICAgICAgICAgIC8qIFJpZ2h0IFNoaWZ0ICovDQorICAgIGNhc2UgMHgxZDogICAgICAgICAgICAg ICAgICAgICAgICAgIC8qIExlZnQgQ1RSTCAqLw0KKyAgICBjYXNlIDB4OWQ6ICAgICAgICAgICAg ICAgICAgICAgICAgICAvKiBSaWdodCBDVFJMICovDQorICAgIGNhc2UgMHgzODogICAgICAgICAg ICAgICAgICAgICAgICAgIC8qIExlZnQgQUxUICovDQorICAgIGNhc2UgMHhiODogICAgICAgICAg ICAgICAgICAgICAgICAgIC8qIFJpZ2h0IEFMVCAqLw0KKyAgICAgICAgZG9fbW9kaWZpZXIoZXZl bnRkYXRhLT5rZXljb2RlLCBkb3duLCAwKTsNCisgICAgICAgIHJldHVybjsNCisgICAgY2FzZSAw eDNhOiAvKiBjYXBzIGxvY2sgKi8NCisgICAgICAgIC8qIFRPRE86IGhhbmRsZSBwcm9wZXJseSBj YXBzIGxvY2sgKyBzaGlmdCBjb21iaW5hdGlvbnMgKi8NCisgICAgICAgIHJldHVybjsNCisgICAg ICAgIGJyZWFrOw0KKyAgICB9DQorDQorICAgIGlmIChkb3duKSB7DQorICAgICAgICAvKiBTZW5k IGRlYWRrZXkgKi8NCisgICAgICAgIGlmIChldmVudGRhdGEtPmtleW1vZCAmIEtFWU1PRF9ERUFE KSB7DQorICAgICAgICAgICAga2V5ZGF0YV90ICpkZWFkZGF0YTsNCisgICAgICAgICAgICBkZWFk ZGF0YSA9IGZpbmRfa2V5c3ltKHZzLT5rYmRfbGF5b3V0LCBldmVudGRhdGEtPmRlYWRzeW0pOw0K KyAgICAgICAgICAgIGlmIChkZWFkZGF0YSE9TlVMTCkgew0KKyAgICAgICAgICAgICAgICBzZXRf bW9kaWZpZXJzKGRlYWRkYXRhLT5rZXltb2QsMCwxKTsNCisgICAgICAgICAgICAgICAgZG9fa2V5 Y29kZShkZWFkZGF0YS0+a2V5Y29kZSwxKTsNCisgICAgICAgICAgICAgICAgZG9fa2V5Y29kZShk ZWFkZGF0YS0+a2V5Y29kZSwwKTsNCisgICAgICAgICAgICAgICAgcmVzdG9yZV9tb2RpZmllcnMo KTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBzZXRfbW9kaWZpZXJzKGV2 ZW50ZGF0YS0+a2V5bW9kLDEsMCk7DQorICAgIH0NCisNCisgICAgZG9fa2V5Y29kZShldmVudGRh dGEtPmtleWNvZGUsZG93bik7DQorICAgICAgICANCisgICAgaWYgKCFkb3duKQ0KKyAgICAgICAg cmVzdG9yZV9tb2RpZmllcnMoKTsNCiB9DQogDQogc3RhdGljIHZvaWQgZnJhbWVidWZmZXJfdXBk YXRlX3JlcXVlc3QoVm5jU3RhdGUgKnZzLCBpbnQgaW5jcmVtZW50YWwsDQotLS0gcWVtdS1vbGQv dm5jX2tleXN5bS5oCVN1biBBcHIgMzAgMjM6Mjg6MzYgMjAwNg0KKysrIHFlbXUtbmV3L3ZuY19r ZXlzeW0uaAlUdWUgQXVnIDA4IDIzOjM5OjM1IDIwMDYNCkBAIC0yNDcsNiArMjQ3LDMzIEBADQog eyJGMTQiLCAweGZmY2J9LCAgICAgICAvKiBYS19GMTQgKi8NCiB7IkYxNSIsIDB4ZmZjY30sICAg ICAgIC8qIFhLX0YxNSAqLw0KIHsiU3lzX1JlcSIsIDB4ZmYxNX0sICAgLyogWEtfU3lzX1JlcSAq Lw0KK3siS1BfU3BhY2UiLCAweGZmODB9LCAgICAgIC8qIFhLX0tQX1NwYWNlICovDQoreyJLUF9U YWIiLCAweGZmODl9LCAgICAgICAgLyogWEtfS1BfVGFiICovDQoreyJLUF9FbnRlciIsIDB4ZmY4 ZH0sICAgICAgLyogWEtfS1BfRW50ZXIgKi8NCit7IktQX0YxIiwgMHhmZjkxfSwgICAgICAgICAv KiBYS19LUF9GMSAqLw0KK3siS1BfRjIiLCAweGZmOTJ9LCAgICAgICAgIC8qIFhLX0tQX0YyICov DQoreyJLUF9GMyIsIDB4ZmY5M30sICAgICAgICAgLyogWEtfS1BfRjMgKi8NCit7IktQX0Y0Iiwg MHhmZjk0fSwgICAgICAgICAvKiBYS19LUF9GNCAqLw0KK3siS1BfSG9tZSIsIDB4ZmY5NX0sICAg ICAgIC8qIFhLX0tQX0hvbWUgKi8NCit7IktQX0xlZnQiLCAweGZmOTZ9LCAgICAgICAvKiBYS19L UF9MZWZ0ICovDQoreyJLUF9VcCIsIDB4ZmY5N30sICAgICAgICAgLyogWEtfS1BfVXAgKi8NCit7 IktQX1JpZ2h0IiwgMHhmZjk4fSwgICAgICAvKiBYS19LUF9SaWdodCAqLw0KK3siS1BfRG93biIs IDB4ZmY5OX0sICAgICAgIC8qIFhLX0tQX0Rvd24gKi8NCit7IktQX1ByaW9yIiwgMHhmZjlhfSwg ICAgICAvKiBYS19LUF9QcmlvciAqLw0KK3siS1BfUGFnZV9VcCIsIDB4ZmY5YX0sICAgIC8qIFhL X0tQX1BhZ2VfVXAgKi8NCit7IktQX05leHQiLCAweGZmOWJ9LCAgICAgICAvKiBYS19LUF9OZXh0 ICovDQoreyJLUF9QYWdlX0Rvd24iLCAweGZmOWJ9LCAgLyogWEtfS1BfUGFnZV9Eb3duICovDQor eyJLUF9FbmQiLCAweGZmOWN9LCAgICAgICAgLyogWEtfS1BfRW5kICovDQoreyJLUF9CZWdpbiIs IDB4ZmY5ZH0sICAgICAgLyogWEtfS1BfQmVnaW4gKi8NCit7IktQX0luc2VydCIsIDB4ZmY5ZX0s ICAgICAvKiBYS19LUF9JbnNlcnQgKi8NCit7IktQX0RlbGV0ZSIsIDB4ZmY5Zn0sICAgICAvKiBY S19LUF9EZWxldGUgKi8NCit7IktQX0VxdWFsIiwgMHhmZmJkfSwgICAgICAvKiBYS19LUF9FcXVh bCAqLw0KK3siS1BfTXVsdGlwbHkiLCAweGZmYWF9LCAgIC8qIFhLX0tQX011bHRpcGx5ICovDQor eyJLUF9BZGQiLCAweGZmYWJ9LCAgICAgICAgLyogWEtfS1BfQWRkICovDQoreyJLUF9TZXBhcmF0 b3IiLCAweGZmYWN9LCAgLyogWEtfS1BfU2VwYXJhdG9yICovDQoreyJLUF9TdWJ0cmFjdCIsIDB4 ZmZhZH0sICAgLyogWEtfS1BfU3VidHJhY3QgKi8NCit7IktQX0RlY2ltYWwiLCAweGZmYWV9LCAg ICAvKiBYS19LUF9EZWNpbWFsICovDQoreyJLUF9EaXZpZGUiLCAweGZmYWZ9LCAgICAgLyogWEtf S1BfRGl2aWRlICovDQogeyJLUF8wIiwgMHhmZmIwfSwgICAgICAvKiBYS19LUF8wICovDQogeyJL UF8xIiwgMHhmZmIxfSwgICAgICAvKiBYS19LUF8xICovDQogeyJLUF8yIiwgMHhmZmIyfSwgICAg ICAvKiBYS19LUF8yICovDQpAQCAtMjU3LDEzICsyODQsNiBAQA0KIHsiS1BfNyIsIDB4ZmZiN30s ICAgICAgLyogWEtfS1BfNyAqLw0KIHsiS1BfOCIsIDB4ZmZiOH0sICAgICAgLyogWEtfS1BfOCAq Lw0KIHsiS1BfOSIsIDB4ZmZiOX0sICAgICAgLyogWEtfS1BfOSAqLw0KLXsiS1BfQWRkIiwgMHhm ZmFifSwgICAgLyogWEtfS1BfQWRkICovDQoteyJLUF9EZWNpbWFsIiwgMHhmZmFlfSwgIC8qIFhL X0tQX0RlY2ltYWwgKi8NCi17IktQX0RpdmlkZSIsIDB4ZmZhZn0sICAgLyogWEtfS1BfRGl2aWRl ICovDQoteyJLUF9FbnRlciIsIDB4ZmY4ZH0sICAgIC8qIFhLX0tQX0VudGVyICovDQoteyJLUF9F cXVhbCIsIDB4ZmZiZH0sICAgIC8qIFhLX0tQX0VxdWFsICovDQoteyJLUF9NdWx0aXBseSIsIDB4 ZmZhYX0sIC8qIFhLX0tQX011bHRpcGx5ICovDQoteyJLUF9TdWJ0cmFjdCIsIDB4ZmZhZH0sIC8q IFhLX0tQX1N1YnRyYWN0ICovDQogeyJoZWxwIiwgMHhmZjZhfSwgICAgICAgIC8qIFhLX0hlbHAg Ki8NCiB7Ik1lbnUiLCAweGZmNjd9LCAgICAgICAgLyogWEtfTWVudSAqLw0KIHsiUHJpbnQiLCAw eGZmNjF9LCAgICAgICAvKiBYS19QcmludCAqLw0KQEAgLTI3MSw1ICsyOTEsMjcgQEANCiB7Ik51 bV9Mb2NrIiwgMHhmZjdmfSwgICAgLyogWEtfTnVtX0xvY2sgKi8NCiB7IlBhdXNlIiwgMHhmZjEz fSwgICAgICAgLyogWEtfUGF1c2UgKi8NCiB7IkVzY2FwZSIsIDB4ZmYxYn0sICAgICAgLyogWEtf RXNjYXBlICovDQorDQorLyogZGVhZCBrZXlzICovDQoreyJkZWFkX2dyYXZlIiwgMHhmZTUwfSwg ICAgICAgICAgICAgICAvKiBYS19kZWFkX2dyYXZlICovDQoreyJkZWFkX2FjdXRlIiwgMHhmZTUx fSwgICAgICAgICAgICAgICAvKiBYS19kZWFkX2FjdXRlICovDQoreyJkZWFkX2NpcmN1bWZsZXgi LCAweGZlNTJ9LCAgICAgICAgICAvKiBYS19kZWFkX2NpcmN1bWZsZXggKi8NCit7ImRlYWRfdGls ZGUiLCAweGZlNTN9LCAgICAgICAgICAgICAgIC8qIFhLX2RlYWRfdGlsZGUgKi8NCit7ImRlYWRf bWFjcm9uIiwgMHhmZTU0fSwgICAgICAgICAgICAgIC8qIFhLX2RlYWRfbWFjcm9uICovDQoreyJk ZWFkX2JyZXZlIiwgMHhmZTU1fSwgICAgICAgICAgICAgICAvKiBYS19kZWFkX2JyZXZlICovDQor eyJkZWFkX2Fib3ZlZG90IiwgMHhmZTU2fSwgICAgICAgICAgICAvKiBYS19kZWFkX2Fib3ZlZG90 ICovDQoreyJkZWFkX2RpYWVyZXNpcyIsIDB4ZmU1N30sICAgICAgICAgICAvKiBYS19kZWFkX2Rp YWVyZXNpcyAqLw0KK3siZGVhZF9hYm92ZXJpbmciLCAweGZlNTh9LCAgICAgICAgICAgLyogWEtf ZGVhZF9hYm92ZXJpbmcgKi8NCit7ImRlYWRfZG91YmxlYWN1dGUiLCAweGZlNTl9LCAgICAgICAg IC8qIFhLX2RlYWRfZG91YmxlYWN1dGUgKi8NCit7ImRlYWRfY2Fyb24iLCAweGZlNWF9LCAgICAg ICAgICAgICAgIC8qIFhLX2RlYWRfY2Fyb24gKi8NCit7ImRlYWRfY2VkaWxsYSIsIDB4ZmU1Yn0s ICAgICAgICAgICAgIC8qIFhLX2RlYWRfY2VkaWxsYSAqLw0KK3siZGVhZF9vZ29uZWsiLCAweGZl NWN9LCAgICAgICAgICAgICAgLyogWEtfZGVhZF9vZ29uZWsgKi8NCit7ImRlYWRfaW90YSIsIDB4 ZmU1ZH0sICAgICAgICAgICAgICAgIC8qIFhLX2RlYWRfaW90YSAqLw0KK3siZGVhZF92b2ljZWRf c291bmQiLCAweGZlNWV9LCAgICAgICAgLyogWEtfZGVhZF92b2ljZWRfc291bmQgKi8NCit7ImRl YWRfc2VtaXZvaWNlZF9zb3VuZCIsIDB4ZmU1Zn0sICAgIC8qIFhLX2RlYWRfc2VtaXZvaWNlZF9z b3VuZCAqLw0KK3siZGVhZF9iZWxvd2RvdCIsIDB4ZmU2MH0sICAgICAgICAgICAgLyogWEtfZGVh ZF9iZWxvd2RvdCAqLw0KK3siZGVhZF9ob29rIiwgMHhmZTYxfSwgICAgICAgICAgICAgICAgLyog WEtfZGVhZF9ob29rICovDQoreyJkZWFkX2hvcm4iLCAweGZlNjJ9LCAgICAgICAgICAgICAgICAv KiBYS19kZWFkX2hvcm4gKi8NCisNCiB7MCwwfSwNCiB9Ow0K ------=_Part_12377_29761819.1155077495281--