From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Justin Burkett Newsgroups: gmane.emacs.devel Subject: Proposed patch for lookup-key Date: Thu, 14 Dec 2017 14:44:12 -0500 Message-ID: NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="f403045c0c6ec662e70560521b6f" X-Trace: blaine.gmane.org 1513280706 28947 195.159.176.226 (14 Dec 2017 19:45:06 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Thu, 14 Dec 2017 19:45:06 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Dec 14 20:44:53 2017 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ePZR6-0006lA-8R for ged-emacs-devel@m.gmane.org; Thu, 14 Dec 2017 20:44:52 +0100 Original-Received: from localhost ([::1]:42856 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ePZRB-0000xT-Tq for ged-emacs-devel@m.gmane.org; Thu, 14 Dec 2017 14:44:57 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:33555) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ePZQb-0000wb-2q for emacs-devel@gnu.org; Thu, 14 Dec 2017 14:44:22 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ePZQW-0007hJ-15 for emacs-devel@gnu.org; Thu, 14 Dec 2017 14:44:21 -0500 Original-Received: from mail-wm0-x236.google.com ([2a00:1450:400c:c09::236]:36895) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ePZQV-0007eu-Jw for emacs-devel@gnu.org; Thu, 14 Dec 2017 14:44:15 -0500 Original-Received: by mail-wm0-x236.google.com with SMTP id f140so13560167wmd.2 for ; Thu, 14 Dec 2017 11:44:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=burkett-cc.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to; bh=WbTsoDcilrZB2KxZlenrV6V3u1rxVcFwIgyb7EbYogY=; b=HrvR5VbfrvTxNA5f1JTNZq32RoW3EnTCxhnZcTP341+9m49io47aBo0wtIS1nLJXUa qkqFkfwtHCEcJ9+1kofEkpg5YUm7SuF1GSdE4KQOHawWwmC3yJyrD+7Dyqe6lKmr2y7G SVkV4TwJs/FSMOcKHMKBZGnHHs8WXpu1CmQ453tcEI6qDXlWV0g0seqmASQiiEbVLO5I 6AbG85JJkJg9VOxkO+M9c93e5KHH3AS5XJ/G1Qysd5pIWswamAwk35paxxHoIwJeUwQ5 Dv68KQCkmIu1lQCg6w3aXm0tjx09i70Y6IiyqWt/G5TWGcbv3ltYuhbUtLtySL1m5a1A SLNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=WbTsoDcilrZB2KxZlenrV6V3u1rxVcFwIgyb7EbYogY=; b=UA+HMdxIUrrSVmixCVmuBNACocoAYcko5nXd6DV/+MSwrWwI9B/m8cKhqGb2caWhT4 RlxxhssWqyJruNTkYQRCBFZL8CLW+bkwsZRFUOp32tTOLrk58QhziZOqoX3HHcymSoUg poqHIohIGptiN5C4NlyTk78mBbrI0Xi4KZM+8GYi8TSm8SBxhEt9MgtGBL4JAldojsn3 8C4+qlUAF48thvJmOm6F+vanmqOikJ01SXNuQvkqz0WRJicvTbXo6SLovoTXZyQNdT+X GEMzwdTsiownWki6qMrZG0F3f2e0AcWvb1cLZJVX8MpxedSvj98JHQoeLs9cFsf54vfg cqyQ== X-Gm-Message-State: AKGB3mIehuTu2MFPsPsuDxT4r3b8ZXqwagqL2mvMukw8bVb1i0qadcpD hI6bEPaLZFM6HHuUl2iEhuIsib6SXK+409IOZnvsfNsl X-Google-Smtp-Source: ACJfBoum0KF3wW9Y/IDmQAhWflZOib9hAnMjb79cb/vmufw1x+pSxYlRSmEIfYOkLoeYlzxFjFyGsHCpC+x/EMBzlp0= X-Received: by 10.80.182.217 with SMTP id f25mr14270546ede.104.1513280653110; Thu, 14 Dec 2017 11:44:13 -0800 (PST) Original-Received: by 10.80.132.101 with HTTP; Thu, 14 Dec 2017 11:44:12 -0800 (PST) X-Originating-IP: [152.17.116.29] X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::236 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:221063 Archived-At: --f403045c0c6ec662e70560521b6f Content-Type: multipart/alternative; boundary="f403045c0c6ec662e30560521b6d" --f403045c0c6ec662e30560521b6d Content-Type: text/plain; charset="UTF-8" Hi all, I'd like to be able to access more information about key bindings of the form (DESCRIPTION . DEF) and menu-items. As far as I can tell there's no easy way to do this using built-in tools in a robust way (i.e., without manually having to write a lookup-key function). I'm wondering if the attached patch would be acceptable. The idea was to add an optional argument to lookup-key to prevent it from stripping this information about the key bindings. In principle, I might also like to do something similar for the key-binding function, but the current patch is sufficient for my purposes. I have assigned copyright to the FSF, but this would be my first commit against Emacs. I apologize in advance for overlooking some convention. Thanks, Justin --f403045c0c6ec662e30560521b6d Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi all,=C2=A0

I'd like to be able t= o access more information about key bindings of the form (DESCRIPTION . DEF= ) and menu-items. As far as I can tell there's no easy way to do this u= sing built-in tools in a robust way (i.e., without manually having to write= a lookup-key function).=C2=A0

I'm wondering i= f the attached patch would be acceptable. The idea was to add an optional a= rgument to lookup-key to prevent it from stripping this information about t= he key bindings.=C2=A0

In principle, I might also = like to do something similar for the key-binding function, but the current = patch is sufficient for my purposes.=C2=A0

I have = assigned copyright to the FSF, but this would be my first commit against Em= acs. I apologize in advance for overlooking some convention.=C2=A0

Thanks,=C2=A0
Justin=C2=A0
--f403045c0c6ec662e30560521b6d-- --f403045c0c6ec662e70560521b6f Content-Type: application/octet-stream; name="0001-Allow-lookup-key-to-return-full-menu-item-entries.patch" Content-Disposition: attachment; filename="0001-Allow-lookup-key-to-return-full-menu-item-entries.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jb6w6z690 RnJvbSA3NTlhYzI1NDg4YTYyODlhNjA4ZWViZDk1NzcxOTUzZTYzYzZkOGZjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKdXN0aW4gQnVya2V0dCA8anVzdGluQGJ1cmtldHQuY2M+CkRh dGU6IFRodSwgMTQgRGVjIDIwMTcgMTQ6MjA6NDUgLTA1MDAKU3ViamVjdDogW1BBVENIXSBBbGxv dyBsb29rdXAta2V5IHRvIHJldHVybiBmdWxsIG1lbnUtaXRlbSBlbnRyaWVzCgoqIHNyYy9rZXli b2FyZC5jIChyZWFkX2NoYXIpOiBBZGp1c3QgY2FsbCB0byBhY2Nlc3Nfa2V5bWFwCihtZW51X2Jh cl9pdGVtcyk6IEFkanVzdCBjYWxsIHRvIGFjY2Vzc19rZXltYXAKKHRvb2xfYmFyX2l0ZW1zKTog QWRqdXN0IGNhbGwgdG8gYWNjZXNzX2tleW1hcAooZm9sbG93X2tleSk6IEFkanVzdCBjYWxsIHRv IGFjY2Vzc19rZXltYXAKKGFjY2Vzc19rZXltYXBfa2V5cmVtYXApOiBBZGp1c3QgY2FsbCB0byBh Y2Nlc3Nfa2V5bWFwCiogc3JjL2tleW1hcC5jOiBDaGFuZ2UgZ2V0X2tleWVsdCBkZWNsYXJhdGlv bgooYWNjZXNzX2tleW1hcF8xKTogQWRkIG1lbnVzIGFyZyBhbmQgYWRqdXN0IHJlY3Vyc2l2ZSBj YWxscwooZ2V0X2tleWVsdCk6IEFkZCBtZW51cyBhcmcKKEZkZWZpbmVfa2V5KTogQWRqdXN0IGNh bGwgdG8gYWNjZXNzX2tleW1hcAooRmNvbW1hbmRfcmVtYXBwaW5nKTogQWRqdXN0IGNhbGwgdG8g Rmxvb2t1cF9rZXkKKEZsb29rdXBfa2V5KTogQWRkIG1lbnVzIGFyZyBhbmQgYWRqdXN0IGNhbGwg dG8gYWNjZXNzX2tleW1hcAooRmtleV9iaW5kaW5nKTogQWRqdXN0IGNhbGwgdG8gRmxvb2t1cF9r ZXkKKEZsb2NhbF9rZXlfYmluZGluZyk6IEFkanVzdCBjYWxsIHRvIEZsb29rdXBfa2V5CihGZ2xv YmFsX2tleV9iaW5kaW5nKTogQWRqdXN0IGNhbGwgdG8gRmxvb2t1cF9rZXkKKEZtaW5vcl9tb2Rl X2tleV9iaW5kaW5nKTogQWRqdXN0IGNhbGwgdG8gRmxvb2t1cF9rZXkKKGFjY2Vzc2libGVfa2V5 bWFwc18xKTogQWRqdXN0IGNhbGwgdG8gZ2V0X2tleWVsdAooRmFjY2Vzc2libGVfa2V5bWFwcyk6 IEFkanVzdCBjYWxsIHRvIEZsb29rdXBfa2V5CihzaGFkb3dfbG9va3VwKTogQWRqdXN0IGNhbGwg dG8gRmxvb2t1cF9rZXkKKHdoZXJlX2lzX2ludGVybmFsXzEpOiBBZGp1c3QgY2FsbCB0byBnZXRf a2V5ZWx0CihkZXNjcmliZV9tYXBfdHJlZSk6IEFkanVzdCBjYWxsIHRvIEZsb29rdXBfa2V5Cihk ZXNjcmliZV9tYXApOiBBZGp1c3QgY2FsbHMgdG8gZ2V0X2tleWVsdCBhbmQgRmxvb2t1cF9rZXkK KGRlc2NyaWJlX3ZlY3Rvcik6IEFkanVzdCBjYWxscyB0byBnZXRfa2V5ZWx0IGFuZCBGbG9va3Vw X2tleQoqIHNyYy9rZXltYXAuaDogQWRqdXN0IGFjY2Vzc19rZXltYXAgZGVjbGFyYXRpb24KLS0t CiBzcmMva2V5Ym9hcmQuYyB8IDEwICsrKystLS0tCiBzcmMva2V5bWFwLmMgICB8IDc5ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHNy Yy9rZXltYXAuaCAgIHwgIDIgKy0KIDMgZmlsZXMgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygrKSwg NDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2tleWJvYXJkLmMgYi9zcmMva2V5Ym9h cmQuYwppbmRleCAzNzVhYTRmNjA2Li4xMGVhZDBjMWFiIDEwMDY0NAotLS0gYS9zcmMva2V5Ym9h cmQuYworKysgYi9zcmMva2V5Ym9hcmQuYwpAQCAtMjg0MSw3ICsyODQxLDcgQEAgcmVhZF9jaGFy IChpbnQgY29tbWFuZGZsYWcsIExpc3BfT2JqZWN0IG1hcCwKICAgICAgYW5kIGxvb3AgYXJvdW5k IHRvIHJlYWQgYW5vdGhlciBldmVudC4gICovCiAgIHNhdmUgPSBWcXVpdF9mbGFnOwogICBWcXVp dF9mbGFnID0gUW5pbDsKLSAgdGVtID0gYWNjZXNzX2tleW1hcCAoZ2V0X2tleW1hcCAoVnNwZWNp YWxfZXZlbnRfbWFwLCAwLCAxKSwgYywgMCwgMCwgMSk7CisgIHRlbSA9IGFjY2Vzc19rZXltYXAg KGdldF9rZXltYXAgKFZzcGVjaWFsX2V2ZW50X21hcCwgMCwgMSksIGMsIDAsIDAsIDEsIDApOwog ICBWcXVpdF9mbGFnID0gc2F2ZTsKIAogICBpZiAoIU5JTFAgKHRlbSkpCkBAIC03NTAzLDcgKzc1 MDMsNyBAQCBtZW51X2Jhcl9pdGVtcyAoTGlzcF9PYmplY3Qgb2xkKQogICBmb3IgKG1hcG5vID0g bm1hcHMgLSAxOyBtYXBubyA+PSAwOyBtYXBuby0tKQogICAgIGlmICghTklMUCAobWFwc1ttYXBu b10pKQogICAgICAgewotCWRlZiA9IGdldF9rZXltYXAgKGFjY2Vzc19rZXltYXAgKG1hcHNbbWFw bm9dLCBRbWVudV9iYXIsIDEsIDAsIDEpLAorCWRlZiA9IGdldF9rZXltYXAgKGFjY2Vzc19rZXlt YXAgKG1hcHNbbWFwbm9dLCBRbWVudV9iYXIsIDEsIDAsIDEsIDApLAogCQkJICAwLCAxKTsKIAlp ZiAoQ09OU1AgKGRlZikpCiAJICB7CkBAIC04MDU5LDcgKzgwNTksNyBAQCB0b29sX2Jhcl9pdGVt cyAoTGlzcF9PYmplY3QgcmV1c2UsIGludCAqbml0ZW1zKQogICAgICAgewogCUxpc3BfT2JqZWN0 IGtleW1hcDsKIAotCWtleW1hcCA9IGdldF9rZXltYXAgKGFjY2Vzc19rZXltYXAgKG1hcHNbaV0s IFF0b29sX2JhciwgMSwgMCwgMSksIDAsIDEpOworCWtleW1hcCA9IGdldF9rZXltYXAgKGFjY2Vz c19rZXltYXAgKG1hcHNbaV0sIFF0b29sX2JhciwgMSwgMCwgMSwgMCksIDAsIDEpOwogCWlmIChD T05TUCAoa2V5bWFwKSkKIAkgIG1hcF9rZXltYXAgKGtleW1hcCwgcHJvY2Vzc190b29sX2Jhcl9p dGVtLCBRbmlsLCBOVUxMLCAxKTsKICAgICAgIH0KQEAgLTg3MjEsNyArODcyMSw3IEBAIHN0YXRp YyBMaXNwX09iamVjdAogZm9sbG93X2tleSAoTGlzcF9PYmplY3Qga2V5bWFwLCBMaXNwX09iamVj dCBrZXkpCiB7CiAgIHJldHVybiBhY2Nlc3Nfa2V5bWFwIChnZXRfa2V5bWFwIChrZXltYXAsIDAs IDEpLAotCQkJa2V5LCAxLCAwLCAxKTsKKwkJCWtleSwgMSwgMCwgMSwgMCk7CiB9CiAKIHN0YXRp YyBMaXNwX09iamVjdApAQCAtODc2MSw3ICs4NzYxLDcgQEAgYWNjZXNzX2tleW1hcF9rZXlyZW1h cCAoTGlzcF9PYmplY3QgbWFwLCBMaXNwX09iamVjdCBrZXksIExpc3BfT2JqZWN0IHByb21wdCwK IHsKICAgTGlzcF9PYmplY3QgbmV4dDsKIAotICBuZXh0ID0gYWNjZXNzX2tleW1hcCAobWFwLCBr ZXksIDEsIDAsIDEpOworICBuZXh0ID0gYWNjZXNzX2tleW1hcCAobWFwLCBrZXksIDEsIDAsIDEs IDApOwogCiAgIC8qIEhhbmRsZSBhIHN5bWJvbCB3aG9zZSBmdW5jdGlvbiBkZWZpbml0aW9uIGlz IGEga2V5bWFwCiAgICAgIG9yIGFuIGFycmF5LiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9rZXltYXAu YyBiL3NyYy9rZXltYXAuYwppbmRleCBjY2Y4Y2U3OTE3Li42ZmFjNDc4Y2RhIDEwMDY0NAotLS0g YS9zcmMva2V5bWFwLmMKKysrIGIvc3JjL2tleW1hcC5jCkBAIC05OCw3ICs5OCw3IEBAIHN0YXRp YyB2b2lkIGRlc2NyaWJlX3ZlY3RvciAoTGlzcF9PYmplY3QsIExpc3BfT2JqZWN0LCBMaXNwX09i amVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKikgKExpc3BfT2JqZWN0 LCBMaXNwX09iamVjdCksIGJvb2wsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Bf T2JqZWN0LCBMaXNwX09iamVjdCwgYm9vbCwgYm9vbCk7CiBzdGF0aWMgdm9pZCBzaWxseV9ldmVu dF9zeW1ib2xfZXJyb3IgKExpc3BfT2JqZWN0KTsKLXN0YXRpYyBMaXNwX09iamVjdCBnZXRfa2V5 ZWx0IChMaXNwX09iamVjdCwgYm9vbCk7CitzdGF0aWMgTGlzcF9PYmplY3QgZ2V0X2tleWVsdCAo TGlzcF9PYmplY3QsIGJvb2wsIGJvb2wpOwogCiBzdGF0aWMgdm9pZAogQ0hFQ0tfVkVDVE9SX09S X0NIQVJfVEFCTEUgKExpc3BfT2JqZWN0IHgpCkBAIC0zNjgsNyArMzY4LDggQEAgUmV0dXJuIFBB UkVOVC4gIFBBUkVOVCBzaG91bGQgYmUgbmlsIG9yIGFub3RoZXIga2V5bWFwLiAgKi8pCiAKIHN0 YXRpYyBMaXNwX09iamVjdAogYWNjZXNzX2tleW1hcF8xIChMaXNwX09iamVjdCBtYXAsIExpc3Bf T2JqZWN0IGlkeCwKLQkJIGJvb2wgdF9vaywgYm9vbCBub2luaGVyaXQsIGJvb2wgYXV0b2xvYWQp CisJCSBib29sIHRfb2ssIGJvb2wgbm9pbmhlcml0LCBib29sIGF1dG9sb2FkLAorICAgICAgICAg ICAgICAgICBib29sIG1lbnVzKQogewogICAvKiBJZiBpZHggaXMgYSBsaXN0IChzb21lIHNvcnQg b2YgbW91c2UgY2xpY2ssIHBlcmhhcHM/KSwKICAgICAgdGhlIGluZGV4IHdlIHdhbnQgdG8gdXNl IGlzIHRoZSBjYXIgb2YgdGhlIGxpc3QsIHdoaWNoCkBAIC0zOTUsNyArMzk2LDcgQEAgYWNjZXNz X2tleW1hcF8xIChMaXNwX09iamVjdCBtYXAsIExpc3BfT2JqZWN0IGlkeCwKICAgICAgIGlmIChY SU5UIChtZXRhX3ByZWZpeF9jaGFyKSAmIENIQVJfTUVUQSkKIAltZXRhX3ByZWZpeF9jaGFyID0g bWFrZV9udW1iZXIgKDI3KTsKICAgICAgIGV2ZW50X21ldGFfYmluZGluZyA9IGFjY2Vzc19rZXlt YXBfMSAobWFwLCBtZXRhX3ByZWZpeF9jaGFyLCB0X29rLAotCQkJCQkgICAgbm9pbmhlcml0LCBh dXRvbG9hZCk7CisJCQkJCSAgICBub2luaGVyaXQsIGF1dG9sb2FkLCBtZW51cyk7CiAgICAgICBl dmVudF9tZXRhX21hcCA9IGdldF9rZXltYXAgKGV2ZW50X21ldGFfYmluZGluZywgMCwgYXV0b2xv YWQpOwogICAgICAgaWYgKENPTlNQIChldmVudF9tZXRhX21hcCkpCiAJewpAQCAtNDQwLDcgKzQ0 MSw3IEBAIGFjY2Vzc19rZXltYXBfMSAoTGlzcF9PYmplY3QgbWFwLCBMaXNwX09iamVjdCBpZHgs CiAJCWVhc3NlcnQgKEtFWU1BUFAgKHJldHZhbCkpOwogCQlwYXJlbnRfZW50cnkKIAkJICA9IGdl dF9rZXltYXAgKGFjY2Vzc19rZXltYXBfMSAodGFpbCwgaWR4LAotCQkJCQkJIHRfb2ssIDAsIGF1 dG9sb2FkKSwKKwkJCQkJCSB0X29rLCAwLCBhdXRvbG9hZCwgbWVudXMpLAogCQkJCTAsIGF1dG9s b2FkKTsKIAkJaWYgKEtFWU1BUFAgKHBhcmVudF9lbnRyeSkpCiAJCSAgewpAQCAtNDU3LDcgKzQ1 OCw3IEBAIGFjY2Vzc19rZXltYXBfMSAoTGlzcF9PYmplY3QgbWFwLCBMaXNwX09iamVjdCBpZHgs CiAJICB9CiAJZWxzZSBpZiAoQ09OU1AgKHN1Ym1hcCkpCiAJICB7Ci0JICAgIHZhbCA9IGFjY2Vz c19rZXltYXBfMSAoc3VibWFwLCBpZHgsIHRfb2ssIG5vaW5oZXJpdCwgYXV0b2xvYWQpOworCSAg ICB2YWwgPSBhY2Nlc3Nfa2V5bWFwXzEgKHN1Ym1hcCwgaWR4LCB0X29rLCBub2luaGVyaXQsIGF1 dG9sb2FkLCBtZW51cyk7CiAJICB9CiAJZWxzZSBpZiAoQ09OU1AgKGJpbmRpbmcpKQogCSAgewpA QCAtNTAxLDcgKzUwMiw3IEBAIGFjY2Vzc19rZXltYXBfMSAoTGlzcF9PYmplY3QgbWFwLCBMaXNw X09iamVjdCBpZHgsCiAJCSBrZXltYXBzIG9mIGxvd2VyIHByZWNlZGVuY2UpLiAgKi8KIAkgICAg ICB2YWwgPSBRbmlsOwogCi0JICAgIHZhbCA9IGdldF9rZXllbHQgKHZhbCwgYXV0b2xvYWQpOwor CSAgICB2YWwgPSBnZXRfa2V5ZWx0ICh2YWwsIGF1dG9sb2FkLCBtZW51cyk7CiAKIAkgICAgaWYg KCFLRVlNQVBQICh2YWwpKQogCSAgICAgIHsKQEAgLTUyNiwxNSArNTI3LDE1IEBAIGFjY2Vzc19r ZXltYXBfMSAoTGlzcF9PYmplY3QgbWFwLCBMaXNwX09iamVjdCBpZHgsCiAJbWF5YmVfcXVpdCAo KTsKICAgICAgIH0KIAotICAgIHJldHVybiBFUSAoUXVuYm91bmQsIHJldHZhbCkgPyBnZXRfa2V5 ZWx0ICh0X2JpbmRpbmcsIGF1dG9sb2FkKSA6IHJldHZhbDsKKyAgICByZXR1cm4gRVEgKFF1bmJv dW5kLCByZXR2YWwpID8gZ2V0X2tleWVsdCAodF9iaW5kaW5nLCBhdXRvbG9hZCwgbWVudXMpIDog cmV0dmFsOwogICB9CiB9CiAKIExpc3BfT2JqZWN0CiBhY2Nlc3Nfa2V5bWFwIChMaXNwX09iamVj dCBtYXAsIExpc3BfT2JqZWN0IGlkeCwKLQkgICAgICAgYm9vbCB0X29rLCBib29sIG5vaW5oZXJp dCwgYm9vbCBhdXRvbG9hZCkKKwkgICAgICAgYm9vbCB0X29rLCBib29sIG5vaW5oZXJpdCwgYm9v bCBhdXRvbG9hZCwgYm9vbCBtZW51cykKIHsKLSAgTGlzcF9PYmplY3QgdmFsID0gYWNjZXNzX2tl eW1hcF8xIChtYXAsIGlkeCwgdF9vaywgbm9pbmhlcml0LCBhdXRvbG9hZCk7CisgIExpc3BfT2Jq ZWN0IHZhbCA9IGFjY2Vzc19rZXltYXBfMSAobWFwLCBpZHgsIHRfb2ssIG5vaW5oZXJpdCwgYXV0 b2xvYWQsIG1lbnVzKTsKICAgcmV0dXJuIEVRICh2YWwsIFF1bmJvdW5kKSA/IFFuaWwgOiB2YWw7 CiB9CiAKQEAgLTY3Nyw4ICs2NzgsOSBAQCB1c2FnZTogKG1hcC1rZXltYXAgRlVOQ1RJT04gS0VZ TUFQKSAgKi8pCiAgICAoS0VZTUFQIC4gSU5ERVgpLCB3aGVyZSBLRVlNQVAgaXMgYSBrZXltYXAg b3IgYSBzeW1ib2wgZGVmaW5lZCBhcyBvbmUKICAgIGFuZCBJTkRFWCBpcyB0aGUgb2JqZWN0IHRv IGxvb2sgdXAgaW4gS0VZTUFQIHRvIHlpZWxkIHRoZSBkZWZpbml0aW9uLgogCi0gICBBbHNvIGlm IE9CSkVDVCBoYXMgYSBtZW51IHN0cmluZyBhcyB0aGUgZmlyc3QgZWxlbWVudCwKLSAgIHJlbW92 ZSB0aGF0LiAgQWxzbyByZW1vdmUgYSBtZW51IGhlbHAgc3RyaW5nIGFzIHNlY29uZCBlbGVtZW50 LgorICAgQWxzbyBpZiBPQkpFQ1QgaGFzIGEgbWVudSBzdHJpbmcgYXMgdGhlIGZpcnN0IGVsZW1l bnQsIHJlbW92ZSB0aGF0LgorICAgQWxzbyByZW1vdmUgYSBtZW51IGhlbHAgc3RyaW5nIGFzIHNl Y29uZCBlbGVtZW50LiBJZiBNRU5VUyBpcyB0cnVlLAorICAgZG8gbm90IHJlbW92ZSBpbmZvcm1h dGlvbiBhYm91dCBtZW51cy4KIAogICAgSWYgQVVUT0xPQUQsIGxvYWQgYXV0b2xvYWRhYmxlIGtl eW1hcHMKICAgIHRoYXQgYXJlIHJlZmVycmVkIHRvIHdpdGggaW5kaXJlY3Rpb24uCkBAIC02ODYs MTIgKzY4OCwxMyBAQCB1c2FnZTogKG1hcC1rZXltYXAgRlVOQ1RJT04gS0VZTUFQKSAgKi8pCiAg ICBUaGlzIGNhbiBHQyBiZWNhdXNlIG1lbnVfaXRlbV9ldmFsX3Byb3BlcnR5IGNhbGxzIEZldmFs LiAgKi8KIAogc3RhdGljIExpc3BfT2JqZWN0Ci1nZXRfa2V5ZWx0IChMaXNwX09iamVjdCBvYmpl Y3QsIGJvb2wgYXV0b2xvYWQpCitnZXRfa2V5ZWx0IChMaXNwX09iamVjdCBvYmplY3QsIGJvb2wg YXV0b2xvYWQsIGJvb2wgbWVudXMpCiB7CiAgIHdoaWxlICgxKQogICAgIHsKLSAgICAgIGlmICgh KENPTlNQIChvYmplY3QpKSkKLQkvKiBUaGlzIGlzIHJlYWxseSB0aGUgdmFsdWUuICAqLworICAg ICAgaWYgKCEoQ09OU1AgKG9iamVjdCkpIHx8IG1lbnVzKQorCS8qIFRoaXMgaXMgcmVhbGx5IHRo ZSB2YWx1ZSBvciB3ZSBkbyBub3Qgd2FudCB0byBwcm9jZXNzCisgICAgICAgICAgIG1lbnUtaXRl bXMuICAqLwogCXJldHVybiBvYmplY3Q7CiAKICAgICAgIC8qIElmIHRoZSBrZXltYXAgY29udGVu dHMgbG9va3MgbGlrZSAobWVudS1pdGVtIG5hbWUgLiBERUZOKQpAQCAtMTEzNiw3ICsxMTM5LDcg QEAgYmluZGluZyBLRVkgdG8gREVGIGlzIGFkZGVkIGF0IHRoZSBmcm9udCBvZiBLRVlNQVAuICAq LykKICAgICAgIGlmIChpZHggPT0gbGVuZ3RoKQogCXJldHVybiBzdG9yZV9pbl9rZXltYXAgKGtl eW1hcCwgYywgZGVmKTsKIAotICAgICAgY21kID0gYWNjZXNzX2tleW1hcCAoa2V5bWFwLCBjLCAw LCAxLCAxKTsKKyAgICAgIGNtZCA9IGFjY2Vzc19rZXltYXAgKGtleW1hcCwgYywgMCwgMSwgMSwg MCk7CiAKICAgICAgIC8qIElmIHRoaXMga2V5IGlzIHVuZGVmaW5lZCwgbWFrZSBpdCBhIHByZWZp eC4gICovCiAgICAgICBpZiAoTklMUCAoY21kKSkKQEAgLTExODgsMTQgKzExOTEsMTQgQEAgcmVt YXBwaW5nIGluIGFsbCBjdXJyZW50bHkgYWN0aXZlIGtleW1hcHMuICAqLykKICAgICBjb21tYW5k ID0gRmtleV9iaW5kaW5nIChjb21tYW5kX3JlbWFwcGluZ192ZWN0b3IsIFFuaWwsIFF0LCBwb3Np dGlvbik7CiAgIGVsc2UKICAgICBjb21tYW5kID0gRmxvb2t1cF9rZXkgKEZjb25zIChRa2V5bWFw LCBrZXltYXBzKSwKLQkJCSAgIGNvbW1hbmRfcmVtYXBwaW5nX3ZlY3RvciwgUW5pbCk7CisJCQkg ICBjb21tYW5kX3JlbWFwcGluZ192ZWN0b3IsIFFuaWwsIFFuaWwpOwogICByZXR1cm4gSU5URUdF UlAgKGNvbW1hbmQpID8gUW5pbCA6IGNvbW1hbmQ7CiB9CiAKIC8qIFZhbHVlIGlzIG51bWJlciBp ZiBLRVkgaXMgdG9vIGxvbmc7IG5pbCBpZiB2YWxpZCBidXQgaGFzIG5vIGRlZmluaXRpb24uICAq LwogLyogR0MgaXMgcG9zc2libGUgaW4gdGhpcyBmdW5jdGlvbi4gICovCiAKLURFRlVOICgibG9v a3VwLWtleSIsIEZsb29rdXBfa2V5LCBTbG9va3VwX2tleSwgMiwgMywgMCwKK0RFRlVOICgibG9v a3VwLWtleSIsIEZsb29rdXBfa2V5LCBTbG9va3VwX2tleSwgMiwgNCwgMCwKICAgICAgICBkb2M6 IC8qIEluIGtleW1hcCBLRVlNQVAsIGxvb2sgdXAga2V5IHNlcXVlbmNlIEtFWS4gIFJldHVybiB0 aGUgZGVmaW5pdGlvbi4KIEEgdmFsdWUgb2YgbmlsIG1lYW5zIHVuZGVmaW5lZC4gIFNlZSBkb2Mg b2YgYGRlZmluZS1rZXknCiBmb3Iga2luZHMgb2YgZGVmaW5pdGlvbnMuCkBAIC0xMjEwLDE0ICsx MjEzLDE4IEBAIE5vcm1hbGx5LCBgbG9va3VwLWtleScgaWdub3JlcyBiaW5kaW5ncyBmb3IgdCwg d2hpY2ggYWN0IGFzIGRlZmF1bHQKIGJpbmRpbmdzLCB1c2VkIHdoZW4gbm90aGluZyBlbHNlIGlu IHRoZSBrZXltYXAgYXBwbGllczsgdGhpcyBtYWtlcyBpdAogdXNhYmxlIGFzIGEgZ2VuZXJhbCBm dW5jdGlvbiBmb3IgcHJvYmluZyBrZXltYXBzLiAgSG93ZXZlciwgaWYgdGhlCiB0aGlyZCBvcHRp b25hbCBhcmd1bWVudCBBQ0NFUFQtREVGQVVMVCBpcyBub24tbmlsLCBgbG9va3VwLWtleScgd2ls bAotcmVjb2duaXplIHRoZSBkZWZhdWx0IGJpbmRpbmdzLCBqdXN0IGFzIGByZWFkLWtleS1zZXF1 ZW5jZScgZG9lcy4gICovKQotICAoTGlzcF9PYmplY3Qga2V5bWFwLCBMaXNwX09iamVjdCBrZXks IExpc3BfT2JqZWN0IGFjY2VwdF9kZWZhdWx0KQorcmVjb2duaXplIHRoZSBkZWZhdWx0IGJpbmRp bmdzLCBqdXN0IGFzIGByZWFkLWtleS1zZXF1ZW5jZScgZG9lcy4KKworQSBub24tbmlsIHZhbHVl IGZvciBNRU5VUyBtYWtlcyBgbG9va3VwLWtleWAgcmV0dXJuIGZ1bGwgbWVudS1pdGVtcworaW5z dGVhZCBvZiBqdXN0IHRoZSBhc3NvY2lhdGVkIGRlZmluaXRpb24uICovKQorICAgICAoTGlzcF9P YmplY3Qga2V5bWFwLCBMaXNwX09iamVjdCBrZXksIExpc3BfT2JqZWN0IGFjY2VwdF9kZWZhdWx0 LCBMaXNwX09iamVjdCBtZW51cykKIHsKICAgcHRyZGlmZl90IGlkeDsKICAgTGlzcF9PYmplY3Qg Y21kOwogICBMaXNwX09iamVjdCBjOwogICBwdHJkaWZmX3QgbGVuZ3RoOwogICBib29sIHRfb2sg PSAhTklMUCAoYWNjZXB0X2RlZmF1bHQpOworICBib29sIHJldHVybl9tZW51cyA9ICFOSUxQICht ZW51cyk7CiAKICAga2V5bWFwID0gZ2V0X2tleW1hcCAoa2V5bWFwLCAxLCAxKTsKIApAQCAtMTI0 Miw3ICsxMjQ5LDcgQEAgcmVjb2duaXplIHRoZSBkZWZhdWx0IGJpbmRpbmdzLCBqdXN0IGFzIGBy ZWFkLWtleS1zZXF1ZW5jZScgZG9lcy4gICovKQogICAgICAgaWYgKCFJTlRFR0VSUCAoYykgJiYg IVNZTUJPTFAgKGMpICYmICFDT05TUCAoYykgJiYgIVNUUklOR1AgKGMpKQogCW1lc3NhZ2Vfd2l0 aF9zdHJpbmcgKCJLZXkgc2VxdWVuY2UgY29udGFpbnMgaW52YWxpZCBldmVudCAlcyIsIGMsIDEp OwogCi0gICAgICBjbWQgPSBhY2Nlc3Nfa2V5bWFwIChrZXltYXAsIGMsIHRfb2ssIDAsIDEpOwor ICAgICAgY21kID0gYWNjZXNzX2tleW1hcCAoa2V5bWFwLCBjLCB0X29rLCAwLCAxLCByZXR1cm5f bWVudXMpOwogICAgICAgaWYgKGlkeCA9PSBsZW5ndGgpCiAJcmV0dXJuIGNtZDsKIApAQCAtMTY1 NSw3ICsxNjYyLDcgQEAgc3BlY2lmaWVkIGJ1ZmZlciBwb3NpdGlvbiBpbnN0ZWFkIG9mIHBvaW50 IGFyZSB1c2VkLgogICAgIH0KIAogICB2YWx1ZSA9IEZsb29rdXBfa2V5IChGY29ucyAoUWtleW1h cCwgRmN1cnJlbnRfYWN0aXZlX21hcHMgKFF0LCBwb3NpdGlvbikpLAotCQkgICAgICAga2V5LCBh Y2NlcHRfZGVmYXVsdCk7CisJCSAgICAgICBrZXksIGFjY2VwdF9kZWZhdWx0LCBRbmlsKTsKIAog ICBpZiAoTklMUCAodmFsdWUpIHx8IElOVEVHRVJQICh2YWx1ZSkpCiAgICAgcmV0dXJuIFFuaWw7 CkBAIC0xNjg4LDcgKzE2OTUsNyBAQCBiaW5kaW5nczsgc2VlIHRoZSBkZXNjcmlwdGlvbiBvZiBg bG9va3VwLWtleScgZm9yIG1vcmUgZGV0YWlscyBhYm91dCB0aGlzLiAgKi8pCiAgIG1hcCA9IEJW QVIgKGN1cnJlbnRfYnVmZmVyLCBrZXltYXApOwogICBpZiAoTklMUCAobWFwKSkKICAgICByZXR1 cm4gUW5pbDsKLSAgcmV0dXJuIEZsb29rdXBfa2V5IChtYXAsIGtleXMsIGFjY2VwdF9kZWZhdWx0 KTsKKyAgcmV0dXJuIEZsb29rdXBfa2V5IChtYXAsIGtleXMsIGFjY2VwdF9kZWZhdWx0LCBRbmls KTsKIH0KIAogLyogR0MgaXMgcG9zc2libGUgaW4gdGhpcyBmdW5jdGlvbiBpZiBpdCBhdXRvbG9h ZHMgYSBrZXltYXAuICAqLwpAQCAtMTcwNCw3ICsxNzExLDcgQEAgSWYgb3B0aW9uYWwgYXJndW1l bnQgQUNDRVBULURFRkFVTFQgaXMgbm9uLW5pbCwgcmVjb2duaXplIGRlZmF1bHQKIGJpbmRpbmdz OyBzZWUgdGhlIGRlc2NyaXB0aW9uIG9mIGBsb29rdXAta2V5JyBmb3IgbW9yZSBkZXRhaWxzIGFi b3V0IHRoaXMuICAqLykKICAgKExpc3BfT2JqZWN0IGtleXMsIExpc3BfT2JqZWN0IGFjY2VwdF9k ZWZhdWx0KQogewotICByZXR1cm4gRmxvb2t1cF9rZXkgKGN1cnJlbnRfZ2xvYmFsX21hcCwga2V5 cywgYWNjZXB0X2RlZmF1bHQpOworICByZXR1cm4gRmxvb2t1cF9rZXkgKGN1cnJlbnRfZ2xvYmFs X21hcCwga2V5cywgYWNjZXB0X2RlZmF1bHQsIFFuaWwpOwogfQogCiAvKiBHQyBpcyBwb3NzaWJs ZSBpbiB0aGlzIGZ1bmN0aW9uIGlmIGl0IGF1dG9sb2FkcyBhIGtleW1hcC4gICovCkBAIC0xNzM0 LDcgKzE3NDEsNyBAQCBiaW5kaW5nczsgc2VlIHRoZSBkZXNjcmlwdGlvbiBvZiBgbG9va3VwLWtl eScgZm9yIG1vcmUgZGV0YWlscyBhYm91dCB0aGlzLiAgKi8pCiAKICAgZm9yIChpID0gaiA9IDA7 IGkgPCBubWFwczsgaSsrKQogICAgIGlmICghTklMUCAobWFwc1tpXSkKLQkmJiAhTklMUCAoYmlu ZGluZyA9IEZsb29rdXBfa2V5IChtYXBzW2ldLCBrZXksIGFjY2VwdF9kZWZhdWx0KSkKKwkmJiAh TklMUCAoYmluZGluZyA9IEZsb29rdXBfa2V5IChtYXBzW2ldLCBrZXksIGFjY2VwdF9kZWZhdWx0 LCBRbmlsKSkKIAkmJiAhSU5URUdFUlAgKGJpbmRpbmcpKQogICAgICAgewogCWlmIChLRVlNQVBQ IChiaW5kaW5nKSkKQEAgLTE4MzYsNyArMTg0Myw3IEBAIGFjY2Vzc2libGVfa2V5bWFwc18xIChM aXNwX09iamVjdCBrZXksIExpc3BfT2JqZWN0IGNtZCwgTGlzcF9PYmplY3QgYXJncywgdm9pZCAq CiAgIGJvb2wgaXNfbWV0aXplZCA9IGQtPmlzX21ldGl6ZWQgJiYgSU5URUdFUlAgKGtleSk7CiAg IExpc3BfT2JqZWN0IHRlbTsKIAotICBjbWQgPSBnZXRfa2V5bWFwIChnZXRfa2V5ZWx0IChjbWQs IDApLCAwLCAwKTsKKyAgY21kID0gZ2V0X2tleW1hcCAoZ2V0X2tleWVsdCAoY21kLCAwLCAwKSwg MCwgMCk7CiAgIGlmIChOSUxQIChjbWQpKQogICAgIHJldHVybjsKIApAQCAtMTkwNyw3ICsxOTE0 LDcgQEAgdGhlbiB0aGUgdmFsdWUgaW5jbHVkZXMgb25seSBtYXBzIGZvciBwcmVmaXhlcyB0aGF0 IHN0YXJ0IHdpdGggUFJFRklYLiAgKi8pCiAgICAgICAvKiBJZiBhIHByZWZpeCB3YXMgc3BlY2lm aWVkLCBzdGFydCB3aXRoIHRoZSBrZXltYXAgKGlmIGFueSkgZm9yCiAJIHRoYXQgcHJlZml4LCBz byB3ZSBkb24ndCB3YXN0ZSB0aW1lIGNvbnNpZGVyaW5nIG90aGVyIHByZWZpeGVzLiAgKi8KICAg ICAgIExpc3BfT2JqZWN0IHRlbTsKLSAgICAgIHRlbSA9IEZsb29rdXBfa2V5IChrZXltYXAsIHBy ZWZpeCwgUXQpOworICAgICAgdGVtID0gRmxvb2t1cF9rZXkgKGtleW1hcCwgcHJlZml4LCBRdCwg UW5pbCk7CiAgICAgICAvKiBGbG9va3VwX2tleSBtYXkgZ2l2ZSB1cyBuaWwsIG9yIGEgbnVtYmVy LAogCSBpZiB0aGUgcHJlZml4IGlzIG5vdCBkZWZpbmVkIGluIHRoaXMgcGFydGljdWxhciBtYXAu CiAJIEl0IG1pZ2h0IGV2ZW4gZ2l2ZSB1cyBhIGxpc3QgdGhhdCBpc24ndCBhIGtleW1hcC4gICov CkBAIC0yMzYyLDExICsyMzY5LDExIEBAIHNoYWRvd19sb29rdXAgKExpc3BfT2JqZWN0IHNoYWRv dywgTGlzcF9PYmplY3Qga2V5LCBMaXNwX09iamVjdCBmbGFnLAogCiAgIGZvciAodGFpbCA9IHNo YWRvdzsgQ09OU1AgKHRhaWwpOyB0YWlsID0gWENEUiAodGFpbCkpCiAgICAgewotICAgICAgdmFs dWUgPSBGbG9va3VwX2tleSAoWENBUiAodGFpbCksIGtleSwgZmxhZyk7CisgICAgICB2YWx1ZSA9 IEZsb29rdXBfa2V5IChYQ0FSICh0YWlsKSwga2V5LCBmbGFnLCBRbmlsKTsKICAgICAgIGlmIChO QVROVU1QICh2YWx1ZSkpCiAJewogCSAgdmFsdWUgPSBGbG9va3VwX2tleSAoWENBUiAodGFpbCks Ci0JCQkgICAgICAgRnN1YnN0cmluZyAoa2V5LCBtYWtlX251bWJlciAoMCksIHZhbHVlKSwgZmxh Zyk7CisJCQkgICAgICAgRnN1YnN0cmluZyAoa2V5LCBtYWtlX251bWJlciAoMCksIHZhbHVlKSwg ZmxhZywgUW5pbCk7CiAJICBpZiAoIU5JTFAgKHZhbHVlKSkKIAkgICAgcmV0dXJuIFFuaWw7CiAJ fQpAQCAtMjY5NSw3ICsyNzAyLDcgQEAgd2hlcmVfaXNfaW50ZXJuYWxfMSAoTGlzcF9PYmplY3Qg a2V5LCBMaXNwX09iamVjdCBiaW5kaW5nLCBMaXNwX09iamVjdCBhcmdzLCB2b2kKIAogICAvKiBT ZWFyY2ggdGhyb3VnaCBpbmRpcmVjdGlvbnMgdW5sZXNzIHRoYXQncyBub3Qgd2FudGVkLiAgKi8K ICAgaWYgKCFub2luZGlyZWN0KQotICAgIGJpbmRpbmcgPSBnZXRfa2V5ZWx0IChiaW5kaW5nLCAw KTsKKyAgICBiaW5kaW5nID0gZ2V0X2tleWVsdCAoYmluZGluZywgMCwgMCk7CiAKICAgLyogRW5k IHRoaXMgaXRlcmF0aW9uIGlmIHRoaXMgZWxlbWVudCBkb2VzIG5vdCBtYXRjaAogICAgICB0aGUg dGFyZ2V0LiAgKi8KQEAgLTMwMDAsNyArMzAwNyw3IEBAIGtleSAgICAgICAgICAgICBiaW5kaW5n XG5cCiAJICAgICB3aGF0IHdlIHNob3VsZCB1c2UuICAqLwogCSAgZWxzZQogCSAgICB7Ci0JICAg ICAgc2htYXAgPSBGbG9va3VwX2tleSAoc2htYXAsIEZjYXIgKGVsdCksIFF0KTsKKwkgICAgICBz aG1hcCA9IEZsb29rdXBfa2V5IChzaG1hcCwgRmNhciAoZWx0KSwgUXQsIFFuaWwpOwogCSAgICAg IGlmIChJTlRFR0VSUCAoc2htYXApKQogCQlzaG1hcCA9IFFuaWw7CiAJICAgIH0KQEAgLTMxOTQs NyArMzIwMSw3IEBAIGRlc2NyaWJlX21hcCAoTGlzcF9PYmplY3QgbWFwLCBMaXNwX09iamVjdCBw cmVmaXgsCiAJICBpZiAobm9tZW51ICYmIEVRIChldmVudCwgUW1lbnVfYmFyKSkKIAkgICAgY29u dGludWU7CiAKLQkgIGRlZmluaXRpb24gPSBnZXRfa2V5ZWx0IChYQ0RSIChYQ0FSICh0YWlsKSks IDApOworCSAgZGVmaW5pdGlvbiA9IGdldF9rZXllbHQgKFhDRFIgKFhDQVIgKHRhaWwpKSwgMCwg MCk7CiAKIAkgIC8qIERvbid0IHNob3cgdW5kZWZpbmVkIGNvbW1hbmRzIG9yIHN1cHByZXNzZWQg Y29tbWFuZHMuICAqLwogCSAgaWYgKE5JTFAgKGRlZmluaXRpb24pKSBjb250aW51ZTsKQEAgLTMy MjcsNyArMzIzNCw3IEBAIGRlc2NyaWJlX21hcCAoTGlzcF9PYmplY3QgbWFwLCBMaXNwX09iamVj dCBwcmVmaXgsCiAJCX0KIAkgICAgfQogCi0JICB0ZW0gPSBGbG9va3VwX2tleSAobWFwLCBrbHVk Z2UsIFF0KTsKKwkgIHRlbSA9IEZsb29rdXBfa2V5IChtYXAsIGtsdWRnZSwgUXQsIFFuaWwpOwog CSAgaWYgKCFFUSAodGVtLCBkZWZpbml0aW9uKSkgY29udGludWU7CiAKIAkgIHZlY3Rbc2xvdHNf dXNlZF0uZXZlbnQgPSBldmVudDsKQEAgLTM0NDUsNyArMzQ1Miw3IEBAIGRlc2NyaWJlX3ZlY3Rv ciAoTGlzcF9PYmplY3QgdmVjdG9yLCBMaXNwX09iamVjdCBwcmVmaXgsIExpc3BfT2JqZWN0IGFy Z3MsCiAJfQogICAgICAgZWxzZQogCXZhbCA9IEFSRUYgKHZlY3RvciwgaSk7Ci0gICAgICBkZWZp bml0aW9uID0gZ2V0X2tleWVsdCAodmFsLCAwKTsKKyAgICAgIGRlZmluaXRpb24gPSBnZXRfa2V5 ZWx0ICh2YWwsIDAsIDApOwogCiAgICAgICBpZiAoTklMUCAoZGVmaW5pdGlvbikpIGNvbnRpbnVl OwogCkBAIC0zNDg0LDcgKzM0OTEsNyBAQCBkZXNjcmliZV92ZWN0b3IgKExpc3BfT2JqZWN0IHZl Y3RvciwgTGlzcF9PYmplY3QgcHJlZml4LCBMaXNwX09iamVjdCBhcmdzLAogCXsKIAkgIExpc3Bf T2JqZWN0IHRlbTsKIAotCSAgdGVtID0gRmxvb2t1cF9rZXkgKGVudGlyZV9tYXAsIGtsdWRnZSwg UXQpOworCSAgdGVtID0gRmxvb2t1cF9rZXkgKGVudGlyZV9tYXAsIGtsdWRnZSwgUXQsIFFuaWwp OwogCiAJICBpZiAoIUVRICh0ZW0sIGRlZmluaXRpb24pKQogCSAgICBjb250aW51ZTsKQEAgLTM1 MTIsMTQgKzM1MTksMTQgQEAgZGVzY3JpYmVfdmVjdG9yIChMaXNwX09iamVjdCB2ZWN0b3IsIExp c3BfT2JqZWN0IHByZWZpeCwgTGlzcF9PYmplY3QgYXJncywKIAkJICYmIChyYW5nZV9iZWcgPSBp ICsgMSwgcmFuZ2VfZW5kID0gc3RvcCAtIDEsCiAJCSAgIHZhbCA9IGNoYXJfdGFibGVfcmVmX2Fu ZF9yYW5nZSAodmVjdG9yLCByYW5nZV9iZWcsCiAJCQkJCQkgICAmcmFuZ2VfYmVnLCAmcmFuZ2Vf ZW5kKSwKLQkJICAgdGVtMiA9IGdldF9rZXllbHQgKHZhbCwgMCksCisgICAgICAgICAgICAgICAg ICAgICB0ZW0yID0gZ2V0X2tleWVsdCAodmFsLCAwLCAwKSwKIAkJICAgIU5JTFAgKHRlbTIpKQog CQkgJiYgIU5JTFAgKEZlcXVhbCAodGVtMiwgZGVmaW5pdGlvbikpKQogCSAgICBpID0gcmFuZ2Vf ZW5kOwogCX0KICAgICAgIGVsc2UKIAl3aGlsZSAoaSArIDEgPCBzdG9wCi0JICAgICAgICYmICh0 ZW0yID0gZ2V0X2tleWVsdCAoQVJFRiAodmVjdG9yLCBpICsgMSksIDApLAorCSAgICAgICAmJiAo dGVtMiA9IGdldF9rZXllbHQgKEFSRUYgKHZlY3RvciwgaSArIDEpLCAwLCAwKSwKIAkJICAgIU5J TFAgKHRlbTIpKQogCSAgICAgICAmJiAhTklMUCAoRmVxdWFsICh0ZW0yLCBkZWZpbml0aW9uKSkp CiAJICBpKys7CmRpZmYgLS1naXQgYS9zcmMva2V5bWFwLmggYi9zcmMva2V5bWFwLmgKaW5kZXgg MmExOTQ1YTgwYS4uZWE3MzViNDAyNiAxMDA2NDQKLS0tIGEvc3JjL2tleW1hcC5oCisrKyBiL3Ny Yy9rZXltYXAuaApAQCAtMzQsNyArMzQsNyBAQCBhbG9uZyB3aXRoIEdOVSBFbWFjcy4gIElmIG5v dCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwogI2RlZmluZSBLRVlN QVBQKG0pICghTklMUCAoZ2V0X2tleW1hcCAobSwgZmFsc2UsIGZhbHNlKSkpCiBleHRlcm4gTGlz cF9PYmplY3QgY3VycmVudF9nbG9iYWxfbWFwOwogZXh0ZXJuIGNoYXIgKnB1c2hfa2V5X2Rlc2Ny aXB0aW9uIChFTUFDU19JTlQsIGNoYXIgKik7Ci1leHRlcm4gTGlzcF9PYmplY3QgYWNjZXNzX2tl eW1hcCAoTGlzcF9PYmplY3QsIExpc3BfT2JqZWN0LCBib29sLCBib29sLCBib29sKTsKK2V4dGVy biBMaXNwX09iamVjdCBhY2Nlc3Nfa2V5bWFwIChMaXNwX09iamVjdCwgTGlzcF9PYmplY3QsIGJv b2wsIGJvb2wsIGJvb2wsIGJvb2wpOwogZXh0ZXJuIExpc3BfT2JqZWN0IGdldF9rZXltYXAgKExp c3BfT2JqZWN0LCBib29sLCBib29sKTsKIGV4dGVybiB2b2lkIGRlc2NyaWJlX21hcF90cmVlIChM aXNwX09iamVjdCwgYm9vbCwgTGlzcF9PYmplY3QsIExpc3BfT2JqZWN0LAogCQkJICAgICAgIGNv bnN0IGNoYXIgKiwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCk7Ci0tIAoyLjE1LjEKCg== --f403045c0c6ec662e70560521b6f--