Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1v0zTs-003JMo-VU for pgsql-hackers@arkaria.postgresql.org; Tue, 23 Sep 2025 09:38:42 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1v0zTr-004h4u-3H for pgsql-hackers@arkaria.postgresql.org; Tue, 23 Sep 2025 09:38:39 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1v0zTp-004h4m-PP for pgsql-hackers@lists.postgresql.org; Tue, 23 Sep 2025 09:38:38 +0000 Received: from fout-b2-smtp.messagingengine.com ([202.12.124.145]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1v0zTf-002Lrr-02 for pgsql-hackers@postgresql.org; Tue, 23 Sep 2025 09:38:37 +0000 Received: from phl-compute-12.internal (phl-compute-12.internal [10.202.2.52]) by mailfout.stl.internal (Postfix) with ESMTP id BD6CA1D00288 for ; Tue, 23 Sep 2025 05:38:25 -0400 (EDT) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-12.internal (MEProxy); Tue, 23 Sep 2025 05:38:25 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=eisentraut.org; h=cc:content-type:content-type:date:date:from:from:in-reply-to :message-id:mime-version:reply-to:subject:subject:to:to; s=fm3; t=1758620305; x=1758706705; bh=FiNPBWRyGhEIklNU4zo8rfJQVHdAllOa YiMFA36dxlY=; b=hu675+LneDWja4gm5Cc6LRxxpP7QTKELgdcC8T4rBW9JKRO3 0t2S3/+IsR2Z6dw4d0Ev+QzC1cjawp+mYBuj+EqtEvgfajIYwh6Udz4cRpNgtXLz hFJlSRgKAZmFRC9EWU+RPVZ9RcOv1VMKybPQVMYXGwP2vPTB2YDQuPWspOpP9pQ2 jn2e7XC7uCPxvqDO8TqcCeXW8QkuJd4Do3vSlMS0tBmaiO0HOyfsNx9jRU7TP74k tsKpUav3+iv4o15Ta0C3JZYe8mlZAddANW0En40DA7mWh7SZjqrfBjp0I+idZ6oW wv8xG8RF7Ov/b3isFlxG+NOTxTkJEQ0++Sd6Vw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:message-id :mime-version:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1758620305; x= 1758706705; bh=FiNPBWRyGhEIklNU4zo8rfJQVHdAllOaYiMFA36dxlY=; b=h KGOlqMqEoWuYCDxebjrU0gIwah01dyzybQGy16LFzpLd8XEPBKRkzlt+mNI6BjFG nBrDFEuHG1taYmrjaeh8/szDo6K3JsTZrGBxLkafx5+9qDcZfeWxIdXPhBJmHyPg 9TzIi1O0SgrIoqRln9x4Jtq5ODSO51GBc++Aevd/rH8GxkXTeIY2krXzeiW/J+0h J8RfhFWe8YpY6Y28JW9v6C6egBxCFyFurHvUi04F6cM0/9tSxTsN+zp7bvXkDmkT +229/NWT0Wcj9RsVmjrLx9xJkJRH7QL1lwAVZF87/e1Nc+vFXidQ+j2Hq7LaqOpN gKVn5EOyZtt2oRAeZskFg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdeggdeitdefkecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecunecujfgurheptgfkffggfgfhuffvsehmtderredtvdejne cuhfhrohhmpefrvghtvghrucfgihhsvghnthhrrghuthcuoehpvghtvghrsegvihhsvghn thhrrghuthdrohhrgheqnecuggftrfgrthhtvghrnhepheetkedugedtheettdethfduke ejgfduieehieetffeutdetffekkefgledvffelnecuvehluhhsthgvrhfuihiivgeptden ucfrrghrrghmpehmrghilhhfrhhomhepphgvthgvrhesvghishgvnhhtrhgruhhtrdhorh hgpdhnsggprhgtphhtthhopedupdhmohguvgepshhmthhpohhuthdprhgtphhtthhopehp ghhsqhhlqdhhrggtkhgvrhhssehpohhsthhgrhgvshhqlhdrohhrgh X-ME-Proxy: Feedback-ID: ie0a040ee:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Tue, 23 Sep 2025 05:38:24 -0400 (EDT) Content-Type: multipart/mixed; boundary="------------XMilSvfSoQNhBmwudkXUWZaX" Message-ID: Date: Tue, 23 Sep 2025 11:38:22 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US From: Peter Eisentraut Subject: anonymous unions (C11) To: pgsql-hackers List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------XMilSvfSoQNhBmwudkXUWZaX Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Here is another patch set to sprinkle some C11 features around the code. My aim is to make a little bit of use of several C11 features as examples and encouragement for future code, and to test compilers (although we're not yet at the point where this should really stress any compiler). Here, I'm proposing to make some use of anonymous unions, which are a nice notational simplification if you nest unions inside structs, which is pretty common in PostgreSQL code. Often times, you have something like struct important_thing { int a; int b; union { int foo; int bar; } u; } (in PostgreSQL source code, often "u" is used, sometimes "d"), and then you have to address foo as varname.u.foo, which often looks cryptic (especially if there is more nesting). With anonymous unions, you can declare this as struct important_thing { int a; int b; union { int foo; int bar; }; } and write varname.foo, which often seems clearer. (C++ also allows this, so this will preserve C++ compatibility of the headers.) That said, I did go overboard here and converted all the struct/union combinations I could find, but I'm not necessarily proposing to apply all of them. I'm proposing patches 0001 through 0004, which are relatively simple or in areas that have already changed a few times recently (so backpatching would not be trivial anyway), and/or they are somewhat close to my heart because they originally motivated this work a long time ago. But if someone finds among the other patches one that they particularly like, we could add that one as well. --------------XMilSvfSoQNhBmwudkXUWZaX Content-Type: text/plain; charset=UTF-8; name="0001-C11-anonymous-unions-pg_locale_t.patch" Content-Disposition: attachment; filename="0001-C11-anonymous-unions-pg_locale_t.patch" Content-Transfer-Encoding: base64 RnJvbSAxMjgwYjI5ZmE0ZDczZTJiZWRlMjg1ZWQ3OTNhMDQxZjFjMDliNTllIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAyMiBTZXAgMjAyNSAxNDo0Nzo0OCArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMDEvMjNdIEMxMSBhbm9ueW1vdXMgdW5pb25zIFtwZ19sb2NhbGVfdF0KCi0t LQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9idWlsdGluLmMgfCAyMCArKyst LS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlX2ljdS5jICAgICB8IDE4ICsr Ky0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9saWJjLmMgICAgfCA3MCAr KysrKysrKysrKy0tLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvdXRpbHMvcGdfbG9jYWxlLmgg ICAgICAgICAgICAgfCAgMiArLQogNCBmaWxlcyBjaGFuZ2VkLCA1NSBpbnNlcnRpb25zKCsp LCA1NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQv cGdfbG9jYWxlX2J1aWx0aW4uYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGVf YnVpbHRpbi5jCmluZGV4IDBjOWZiZGI0MGYyLi41MjZhYjNjNjcxMSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9idWlsdGluLmMKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9idWlsdGluLmMKQEAgLTcyLDcgKzcyLDcgQEAg c3RybG93ZXJfYnVpbHRpbihjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsIGNvbnN0IGNo YXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCiAJCQkJIHBnX2xvY2FsZV90IGxvY2FsZSkKIHsK IAlyZXR1cm4gdW5pY29kZV9zdHJsb3dlcihkZXN0LCBkZXN0c2l6ZSwgc3JjLCBzcmNsZW4s Ci0JCQkJCQkJbG9jYWxlLT5pbmZvLmJ1aWx0aW4uY2FzZW1hcF9mdWxsKTsKKwkJCQkJCQls b2NhbGUtPmJ1aWx0aW4uY2FzZW1hcF9mdWxsKTsKIH0KIAogc3RhdGljIHNpemVfdApAQCAt ODMsMTMgKzgzLDEzIEBAIHN0cnRpdGxlX2J1aWx0aW4oY2hhciAqZGVzdCwgc2l6ZV90IGRl c3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAogCQkuc3RyID0gc3Jj LAogCQkubGVuID0gc3JjbGVuLAogCQkub2Zmc2V0ID0gMCwKLQkJLnBvc2l4ID0gIWxvY2Fs ZS0+aW5mby5idWlsdGluLmNhc2VtYXBfZnVsbCwKKwkJLnBvc2l4ID0gIWxvY2FsZS0+YnVp bHRpbi5jYXNlbWFwX2Z1bGwsCiAJCS5pbml0ID0gZmFsc2UsCiAJCS5wcmV2X2FsbnVtID0g ZmFsc2UsCiAJfTsKIAogCXJldHVybiB1bmljb2RlX3N0cnRpdGxlKGRlc3QsIGRlc3RzaXpl LCBzcmMsIHNyY2xlbiwKLQkJCQkJCQlsb2NhbGUtPmluZm8uYnVpbHRpbi5jYXNlbWFwX2Z1 bGwsCisJCQkJCQkJbG9jYWxlLT5idWlsdGluLmNhc2VtYXBfZnVsbCwKIAkJCQkJCQlpbml0 Y2FwX3dibmV4dCwgJndic3RhdGUpOwogfQogCkBAIC05OCw3ICs5OCw3IEBAIHN0cnVwcGVy X2J1aWx0aW4oY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMs IHNzaXplX3Qgc3JjbGVuLAogCQkJCSBwZ19sb2NhbGVfdCBsb2NhbGUpCiB7CiAJcmV0dXJu IHVuaWNvZGVfc3RydXBwZXIoZGVzdCwgZGVzdHNpemUsIHNyYywgc3JjbGVuLAotCQkJCQkJ CWxvY2FsZS0+aW5mby5idWlsdGluLmNhc2VtYXBfZnVsbCk7CisJCQkJCQkJbG9jYWxlLT5i dWlsdGluLmNhc2VtYXBfZnVsbCk7CiB9CiAKIHN0YXRpYyBzaXplX3QKQEAgLTEwNiwxMyAr MTA2LDEzIEBAIHN0cmZvbGRfYnVpbHRpbihjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUs IGNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCiAJCQkJcGdfbG9jYWxlX3QgbG9j YWxlKQogewogCXJldHVybiB1bmljb2RlX3N0cmZvbGQoZGVzdCwgZGVzdHNpemUsIHNyYywg c3JjbGVuLAotCQkJCQkJICAgbG9jYWxlLT5pbmZvLmJ1aWx0aW4uY2FzZW1hcF9mdWxsKTsK KwkJCQkJCSAgIGxvY2FsZS0+YnVpbHRpbi5jYXNlbWFwX2Z1bGwpOwogfQogCiBzdGF0aWMg Ym9vbAogd2NfaXNkaWdpdF9idWlsdGluKHBnX3djaGFyIHdjLCBwZ19sb2NhbGVfdCBsb2Nh bGUpCiB7Ci0JcmV0dXJuIHBnX3VfaXNkaWdpdCh3YywgIWxvY2FsZS0+aW5mby5idWlsdGlu LmNhc2VtYXBfZnVsbCk7CisJcmV0dXJuIHBnX3VfaXNkaWdpdCh3YywgIWxvY2FsZS0+YnVp bHRpbi5jYXNlbWFwX2Z1bGwpOwogfQogCiBzdGF0aWMgYm9vbApAQCAtMTI0LDcgKzEyNCw3 IEBAIHdjX2lzYWxwaGFfYnVpbHRpbihwZ193Y2hhciB3YywgcGdfbG9jYWxlX3QgbG9jYWxl KQogc3RhdGljIGJvb2wKIHdjX2lzYWxudW1fYnVpbHRpbihwZ193Y2hhciB3YywgcGdfbG9j YWxlX3QgbG9jYWxlKQogewotCXJldHVybiBwZ191X2lzYWxudW0od2MsICFsb2NhbGUtPmlu Zm8uYnVpbHRpbi5jYXNlbWFwX2Z1bGwpOworCXJldHVybiBwZ191X2lzYWxudW0od2MsICFs b2NhbGUtPmJ1aWx0aW4uY2FzZW1hcF9mdWxsKTsKIH0KIAogc3RhdGljIGJvb2wKQEAgLTE1 NCw3ICsxNTQsNyBAQCB3Y19pc3ByaW50X2J1aWx0aW4ocGdfd2NoYXIgd2MsIHBnX2xvY2Fs ZV90IGxvY2FsZSkKIHN0YXRpYyBib29sCiB3Y19pc3B1bmN0X2J1aWx0aW4ocGdfd2NoYXIg d2MsIHBnX2xvY2FsZV90IGxvY2FsZSkKIHsKLQlyZXR1cm4gcGdfdV9pc3B1bmN0KHdjLCAh bG9jYWxlLT5pbmZvLmJ1aWx0aW4uY2FzZW1hcF9mdWxsKTsKKwlyZXR1cm4gcGdfdV9pc3B1 bmN0KHdjLCAhbG9jYWxlLT5idWlsdGluLmNhc2VtYXBfZnVsbCk7CiB9CiAKIHN0YXRpYyBi b29sCkBAIC0yMzgsOCArMjM4LDggQEAgY3JlYXRlX3BnX2xvY2FsZV9idWlsdGluKE9pZCBj b2xsaWQsIE1lbW9yeUNvbnRleHQgY29udGV4dCkKIAogCXJlc3VsdCA9IE1lbW9yeUNvbnRl eHRBbGxvY1plcm8oY29udGV4dCwgc2l6ZW9mKHN0cnVjdCBwZ19sb2NhbGVfc3RydWN0KSk7 CiAKLQlyZXN1bHQtPmluZm8uYnVpbHRpbi5sb2NhbGUgPSBNZW1vcnlDb250ZXh0U3RyZHVw KGNvbnRleHQsIGxvY3N0cik7Ci0JcmVzdWx0LT5pbmZvLmJ1aWx0aW4uY2FzZW1hcF9mdWxs ID0gKHN0cmNtcChsb2NzdHIsICJQR19VTklDT0RFX0ZBU1QiKSA9PSAwKTsKKwlyZXN1bHQt PmJ1aWx0aW4ubG9jYWxlID0gTWVtb3J5Q29udGV4dFN0cmR1cChjb250ZXh0LCBsb2NzdHIp OworCXJlc3VsdC0+YnVpbHRpbi5jYXNlbWFwX2Z1bGwgPSAoc3RyY21wKGxvY3N0ciwgIlBH X1VOSUNPREVfRkFTVCIpID09IDApOwogCXJlc3VsdC0+ZGV0ZXJtaW5pc3RpYyA9IHRydWU7 CiAJcmVzdWx0LT5jb2xsYXRlX2lzX2MgPSB0cnVlOwogCXJlc3VsdC0+Y3R5cGVfaXNfYyA9 IChzdHJjbXAobG9jc3RyLCAiQyIpID09IDApOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3BnX2xvY2FsZV9pY3UuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19s b2NhbGVfaWN1LmMKaW5kZXggOTY3NDFlMDgyNjkuLjlmMGI0ZWVhZDczIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlX2ljdS5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGVfaWN1LmMKQEAgLTI5MCw4ICsyOTAsOCBAQCBjcmVh dGVfcGdfbG9jYWxlX2ljdShPaWQgY29sbGlkLCBNZW1vcnlDb250ZXh0IGNvbnRleHQpCiAJ Y29sbGF0b3IgPSBtYWtlX2ljdV9jb2xsYXRvcihpY3Vsb2NzdHIsIGljdXJ1bGVzKTsKIAog CXJlc3VsdCA9IE1lbW9yeUNvbnRleHRBbGxvY1plcm8oY29udGV4dCwgc2l6ZW9mKHN0cnVj dCBwZ19sb2NhbGVfc3RydWN0KSk7Ci0JcmVzdWx0LT5pbmZvLmljdS5sb2NhbGUgPSBNZW1v cnlDb250ZXh0U3RyZHVwKGNvbnRleHQsIGljdWxvY3N0cik7Ci0JcmVzdWx0LT5pbmZvLmlj dS51Y29sID0gY29sbGF0b3I7CisJcmVzdWx0LT5pY3UubG9jYWxlID0gTWVtb3J5Q29udGV4 dFN0cmR1cChjb250ZXh0LCBpY3Vsb2NzdHIpOworCXJlc3VsdC0+aWN1LnVjb2wgPSBjb2xs YXRvcjsKIAlyZXN1bHQtPmRldGVybWluaXN0aWMgPSBkZXRlcm1pbmlzdGljOwogCXJlc3Vs dC0+Y29sbGF0ZV9pc19jID0gZmFsc2U7CiAJcmVzdWx0LT5jdHlwZV9pc19jID0gZmFsc2U7 CkBAIC01NzEsNyArNTcxLDcgQEAgc3RybmNvbGxfaWN1X3V0ZjgoY29uc3QgY2hhciAqYXJn MSwgc3NpemVfdCBsZW4xLCBjb25zdCBjaGFyICphcmcyLCBzc2l6ZV90IGxlbjIKIAlBc3Nl cnQoR2V0RGF0YWJhc2VFbmNvZGluZygpID09IFBHX1VURjgpOwogCiAJc3RhdHVzID0gVV9a RVJPX0VSUk9SOwotCXJlc3VsdCA9IHVjb2xfc3RyY29sbFVURjgobG9jYWxlLT5pbmZvLmlj dS51Y29sLAorCXJlc3VsdCA9IHVjb2xfc3RyY29sbFVURjgobG9jYWxlLT5pY3UudWNvbCwK IAkJCQkJCQkgIGFyZzEsIGxlbjEsCiAJCQkJCQkJICBhcmcyLCBsZW4yLAogCQkJCQkJCSAg JnN0YXR1cyk7CkBAIC02MDgsNyArNjA4LDcgQEAgc3Rybnhmcm1faWN1KGNoYXIgKmRlc3Qs IHNpemVfdCBkZXN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKIAog CXVsZW4gPSB1Y2hhcl9jb252ZXJ0KGljdV9jb252ZXJ0ZXIsIHVjaGFyLCB1bGVuICsgMSwg c3JjLCBzcmNsZW4pOwogCi0JcmVzdWx0X2JzaXplID0gdWNvbF9nZXRTb3J0S2V5KGxvY2Fs ZS0+aW5mby5pY3UudWNvbCwKKwlyZXN1bHRfYnNpemUgPSB1Y29sX2dldFNvcnRLZXkobG9j YWxlLT5pY3UudWNvbCwKIAkJCQkJCQkJICAgdWNoYXIsIHVsZW4sCiAJCQkJCQkJCSAgICh1 aW50OF90ICopIGRlc3QsIGRlc3RzaXplKTsKIApAQCAtNjQ0LDcgKzY0NCw3IEBAIHN0cm54 ZnJtX3ByZWZpeF9pY3VfdXRmOChjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsCiAJdWl0 ZXJfc2V0VVRGOCgmaXRlciwgc3JjLCBzcmNsZW4pOwogCXN0YXRlWzBdID0gc3RhdGVbMV0g PSAwOwkvKiB3b24ndCBuZWVkIHRoYXQgYWdhaW4gKi8KIAlzdGF0dXMgPSBVX1pFUk9fRVJS T1I7Ci0JcmVzdWx0ID0gdWNvbF9uZXh0U29ydEtleVBhcnQobG9jYWxlLT5pbmZvLmljdS51 Y29sLAorCXJlc3VsdCA9IHVjb2xfbmV4dFNvcnRLZXlQYXJ0KGxvY2FsZS0+aWN1LnVjb2ws CiAJCQkJCQkJCSAgJml0ZXIsCiAJCQkJCQkJCSAgc3RhdGUsCiAJCQkJCQkJCSAgKHVpbnQ4 X3QgKikgZGVzdCwKQEAgLTc1NSw3ICs3NTUsNyBAQCBpY3VfY29udmVydF9jYXNlKElDVV9D b252ZXJ0X0Z1bmMgZnVuYywgcGdfbG9jYWxlX3QgbXlsb2NhbGUsCiAJKmJ1ZmZfZGVzdCA9 IHBhbGxvYyhsZW5fZGVzdCAqIHNpemVvZigqKmJ1ZmZfZGVzdCkpOwogCXN0YXR1cyA9IFVf WkVST19FUlJPUjsKIAlsZW5fZGVzdCA9IGZ1bmMoKmJ1ZmZfZGVzdCwgbGVuX2Rlc3QsIGJ1 ZmZfc291cmNlLCBsZW5fc291cmNlLAotCQkJCQlteWxvY2FsZS0+aW5mby5pY3UubG9jYWxl LCAmc3RhdHVzKTsKKwkJCQkJbXlsb2NhbGUtPmljdS5sb2NhbGUsICZzdGF0dXMpOwogCWlm IChzdGF0dXMgPT0gVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1IpCiAJewogCQkvKiB0cnkgYWdh aW4gd2l0aCBhZGp1c3RlZCBsZW5ndGggKi8KQEAgLTc2Myw3ICs3NjMsNyBAQCBpY3VfY29u dmVydF9jYXNlKElDVV9Db252ZXJ0X0Z1bmMgZnVuYywgcGdfbG9jYWxlX3QgbXlsb2NhbGUs CiAJCSpidWZmX2Rlc3QgPSBwYWxsb2MobGVuX2Rlc3QgKiBzaXplb2YoKipidWZmX2Rlc3Qp KTsKIAkJc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogCQlsZW5fZGVzdCA9IGZ1bmMoKmJ1ZmZf ZGVzdCwgbGVuX2Rlc3QsIGJ1ZmZfc291cmNlLCBsZW5fc291cmNlLAotCQkJCQkJbXlsb2Nh bGUtPmluZm8uaWN1LmxvY2FsZSwgJnN0YXR1cyk7CisJCQkJCQlteWxvY2FsZS0+aWN1Lmxv Y2FsZSwgJnN0YXR1cyk7CiAJfQogCWlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKIAkJZXJlcG9y dChFUlJPUiwKQEAgLTg1OSw3ICs4NTksNyBAQCBzdHJuY29sbF9pY3UoY29uc3QgY2hhciAq YXJnMSwgc3NpemVfdCBsZW4xLAogCXVsZW4xID0gdWNoYXJfY29udmVydChpY3VfY29udmVy dGVyLCB1Y2hhcjEsIHVsZW4xICsgMSwgYXJnMSwgbGVuMSk7CiAJdWxlbjIgPSB1Y2hhcl9j b252ZXJ0KGljdV9jb252ZXJ0ZXIsIHVjaGFyMiwgdWxlbjIgKyAxLCBhcmcyLCBsZW4yKTsK IAotCXJlc3VsdCA9IHVjb2xfc3RyY29sbChsb2NhbGUtPmluZm8uaWN1LnVjb2wsCisJcmVz dWx0ID0gdWNvbF9zdHJjb2xsKGxvY2FsZS0+aWN1LnVjb2wsCiAJCQkJCQkgIHVjaGFyMSwg dWxlbjEsCiAJCQkJCQkgIHVjaGFyMiwgdWxlbjIpOwogCkBAIC05MDQsNyArOTA0LDcgQEAg c3Rybnhmcm1fcHJlZml4X2ljdShjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsCiAJdWl0 ZXJfc2V0U3RyaW5nKCZpdGVyLCB1Y2hhciwgdWxlbik7CiAJc3RhdGVbMF0gPSBzdGF0ZVsx XSA9IDA7CS8qIHdvbid0IG5lZWQgdGhhdCBhZ2FpbiAqLwogCXN0YXR1cyA9IFVfWkVST19F UlJPUjsKLQlyZXN1bHRfYnNpemUgPSB1Y29sX25leHRTb3J0S2V5UGFydChsb2NhbGUtPmlu Zm8uaWN1LnVjb2wsCisJcmVzdWx0X2JzaXplID0gdWNvbF9uZXh0U29ydEtleVBhcnQobG9j YWxlLT5pY3UudWNvbCwKIAkJCQkJCQkJCQkmaXRlciwKIAkJCQkJCQkJCQlzdGF0ZSwKIAkJ CQkJCQkJCQkodWludDhfdCAqKSBkZXN0LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3BnX2xvY2FsZV9saWJjLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9j YWxlX2xpYmMuYwppbmRleCA4ZDg4YjUzYzM3NS4uZjU2YjVkYmRkMzcgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGVfbGliYy5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGVfbGliYy5jCkBAIC0xMjEsMTE2ICsxMjEsMTE2IEBA IHN0YXRpYyBzaXplX3Qgc3RydXBwZXJfbGliY19tYihjaGFyICpkZXN0LCBzaXplX3QgZGVz dHNpemUsCiBzdGF0aWMgYm9vbAogd2NfaXNkaWdpdF9saWJjX3NiKHBnX3djaGFyIHdjLCBw Z19sb2NhbGVfdCBsb2NhbGUpCiB7Ci0JcmV0dXJuIGlzZGlnaXRfbCgodW5zaWduZWQgY2hh cikgd2MsIGxvY2FsZS0+aW5mby5sdCk7CisJcmV0dXJuIGlzZGlnaXRfbCgodW5zaWduZWQg Y2hhcikgd2MsIGxvY2FsZS0+bHQpOwogfQogCiBzdGF0aWMgYm9vbAogd2NfaXNhbHBoYV9s aWJjX3NiKHBnX3djaGFyIHdjLCBwZ19sb2NhbGVfdCBsb2NhbGUpCiB7Ci0JcmV0dXJuIGlz YWxwaGFfbCgodW5zaWduZWQgY2hhcikgd2MsIGxvY2FsZS0+aW5mby5sdCk7CisJcmV0dXJu IGlzYWxwaGFfbCgodW5zaWduZWQgY2hhcikgd2MsIGxvY2FsZS0+bHQpOwogfQogCiBzdGF0 aWMgYm9vbAogd2NfaXNhbG51bV9saWJjX3NiKHBnX3djaGFyIHdjLCBwZ19sb2NhbGVfdCBs b2NhbGUpCiB7Ci0JcmV0dXJuIGlzYWxudW1fbCgodW5zaWduZWQgY2hhcikgd2MsIGxvY2Fs ZS0+aW5mby5sdCk7CisJcmV0dXJuIGlzYWxudW1fbCgodW5zaWduZWQgY2hhcikgd2MsIGxv Y2FsZS0+bHQpOwogfQogCiBzdGF0aWMgYm9vbAogd2NfaXN1cHBlcl9saWJjX3NiKHBnX3dj aGFyIHdjLCBwZ19sb2NhbGVfdCBsb2NhbGUpCiB7Ci0JcmV0dXJuIGlzdXBwZXJfbCgodW5z aWduZWQgY2hhcikgd2MsIGxvY2FsZS0+aW5mby5sdCk7CisJcmV0dXJuIGlzdXBwZXJfbCgo dW5zaWduZWQgY2hhcikgd2MsIGxvY2FsZS0+bHQpOwogfQogCiBzdGF0aWMgYm9vbAogd2Nf aXNsb3dlcl9saWJjX3NiKHBnX3djaGFyIHdjLCBwZ19sb2NhbGVfdCBsb2NhbGUpCiB7Ci0J cmV0dXJuIGlzbG93ZXJfbCgodW5zaWduZWQgY2hhcikgd2MsIGxvY2FsZS0+aW5mby5sdCk7 CisJcmV0dXJuIGlzbG93ZXJfbCgodW5zaWduZWQgY2hhcikgd2MsIGxvY2FsZS0+bHQpOwog fQogCiBzdGF0aWMgYm9vbAogd2NfaXNncmFwaF9saWJjX3NiKHBnX3djaGFyIHdjLCBwZ19s b2NhbGVfdCBsb2NhbGUpCiB7Ci0JcmV0dXJuIGlzZ3JhcGhfbCgodW5zaWduZWQgY2hhcikg d2MsIGxvY2FsZS0+aW5mby5sdCk7CisJcmV0dXJuIGlzZ3JhcGhfbCgodW5zaWduZWQgY2hh cikgd2MsIGxvY2FsZS0+bHQpOwogfQogCiBzdGF0aWMgYm9vbAogd2NfaXNwcmludF9saWJj X3NiKHBnX3djaGFyIHdjLCBwZ19sb2NhbGVfdCBsb2NhbGUpCiB7Ci0JcmV0dXJuIGlzcHJp bnRfbCgodW5zaWduZWQgY2hhcikgd2MsIGxvY2FsZS0+aW5mby5sdCk7CisJcmV0dXJuIGlz cHJpbnRfbCgodW5zaWduZWQgY2hhcikgd2MsIGxvY2FsZS0+bHQpOwogfQogCiBzdGF0aWMg Ym9vbAogd2NfaXNwdW5jdF9saWJjX3NiKHBnX3djaGFyIHdjLCBwZ19sb2NhbGVfdCBsb2Nh bGUpCiB7Ci0JcmV0dXJuIGlzcHVuY3RfbCgodW5zaWduZWQgY2hhcikgd2MsIGxvY2FsZS0+ aW5mby5sdCk7CisJcmV0dXJuIGlzcHVuY3RfbCgodW5zaWduZWQgY2hhcikgd2MsIGxvY2Fs ZS0+bHQpOwogfQogCiBzdGF0aWMgYm9vbAogd2NfaXNzcGFjZV9saWJjX3NiKHBnX3djaGFy IHdjLCBwZ19sb2NhbGVfdCBsb2NhbGUpCiB7Ci0JcmV0dXJuIGlzc3BhY2VfbCgodW5zaWdu ZWQgY2hhcikgd2MsIGxvY2FsZS0+aW5mby5sdCk7CisJcmV0dXJuIGlzc3BhY2VfbCgodW5z aWduZWQgY2hhcikgd2MsIGxvY2FsZS0+bHQpOwogfQogCiBzdGF0aWMgYm9vbAogd2NfaXNk aWdpdF9saWJjX21iKHBnX3djaGFyIHdjLCBwZ19sb2NhbGVfdCBsb2NhbGUpCiB7Ci0JcmV0 dXJuIGlzd2RpZ2l0X2woKHdpbnRfdCkgd2MsIGxvY2FsZS0+aW5mby5sdCk7CisJcmV0dXJu IGlzd2RpZ2l0X2woKHdpbnRfdCkgd2MsIGxvY2FsZS0+bHQpOwogfQogCiBzdGF0aWMgYm9v bAogd2NfaXNhbHBoYV9saWJjX21iKHBnX3djaGFyIHdjLCBwZ19sb2NhbGVfdCBsb2NhbGUp CiB7Ci0JcmV0dXJuIGlzd2FscGhhX2woKHdpbnRfdCkgd2MsIGxvY2FsZS0+aW5mby5sdCk7 CisJcmV0dXJuIGlzd2FscGhhX2woKHdpbnRfdCkgd2MsIGxvY2FsZS0+bHQpOwogfQogCiBz dGF0aWMgYm9vbAogd2NfaXNhbG51bV9saWJjX21iKHBnX3djaGFyIHdjLCBwZ19sb2NhbGVf dCBsb2NhbGUpCiB7Ci0JcmV0dXJuIGlzd2FsbnVtX2woKHdpbnRfdCkgd2MsIGxvY2FsZS0+ aW5mby5sdCk7CisJcmV0dXJuIGlzd2FsbnVtX2woKHdpbnRfdCkgd2MsIGxvY2FsZS0+bHQp OwogfQogCiBzdGF0aWMgYm9vbAogd2NfaXN1cHBlcl9saWJjX21iKHBnX3djaGFyIHdjLCBw Z19sb2NhbGVfdCBsb2NhbGUpCiB7Ci0JcmV0dXJuIGlzd3VwcGVyX2woKHdpbnRfdCkgd2Ms IGxvY2FsZS0+aW5mby5sdCk7CisJcmV0dXJuIGlzd3VwcGVyX2woKHdpbnRfdCkgd2MsIGxv Y2FsZS0+bHQpOwogfQogCiBzdGF0aWMgYm9vbAogd2NfaXNsb3dlcl9saWJjX21iKHBnX3dj aGFyIHdjLCBwZ19sb2NhbGVfdCBsb2NhbGUpCiB7Ci0JcmV0dXJuIGlzd2xvd2VyX2woKHdp bnRfdCkgd2MsIGxvY2FsZS0+aW5mby5sdCk7CisJcmV0dXJuIGlzd2xvd2VyX2woKHdpbnRf dCkgd2MsIGxvY2FsZS0+bHQpOwogfQogCiBzdGF0aWMgYm9vbAogd2NfaXNncmFwaF9saWJj X21iKHBnX3djaGFyIHdjLCBwZ19sb2NhbGVfdCBsb2NhbGUpCiB7Ci0JcmV0dXJuIGlzd2dy YXBoX2woKHdpbnRfdCkgd2MsIGxvY2FsZS0+aW5mby5sdCk7CisJcmV0dXJuIGlzd2dyYXBo X2woKHdpbnRfdCkgd2MsIGxvY2FsZS0+bHQpOwogfQogCiBzdGF0aWMgYm9vbAogd2NfaXNw cmludF9saWJjX21iKHBnX3djaGFyIHdjLCBwZ19sb2NhbGVfdCBsb2NhbGUpCiB7Ci0JcmV0 dXJuIGlzd3ByaW50X2woKHdpbnRfdCkgd2MsIGxvY2FsZS0+aW5mby5sdCk7CisJcmV0dXJu IGlzd3ByaW50X2woKHdpbnRfdCkgd2MsIGxvY2FsZS0+bHQpOwogfQogCiBzdGF0aWMgYm9v bAogd2NfaXNwdW5jdF9saWJjX21iKHBnX3djaGFyIHdjLCBwZ19sb2NhbGVfdCBsb2NhbGUp CiB7Ci0JcmV0dXJuIGlzd3B1bmN0X2woKHdpbnRfdCkgd2MsIGxvY2FsZS0+aW5mby5sdCk7 CisJcmV0dXJuIGlzd3B1bmN0X2woKHdpbnRfdCkgd2MsIGxvY2FsZS0+bHQpOwogfQogCiBz dGF0aWMgYm9vbAogd2NfaXNzcGFjZV9saWJjX21iKHBnX3djaGFyIHdjLCBwZ19sb2NhbGVf dCBsb2NhbGUpCiB7Ci0JcmV0dXJuIGlzd3NwYWNlX2woKHdpbnRfdCkgd2MsIGxvY2FsZS0+ aW5mby5sdCk7CisJcmV0dXJuIGlzd3NwYWNlX2woKHdpbnRfdCkgd2MsIGxvY2FsZS0+bHQp OwogfQogCiBzdGF0aWMgY2hhcgogY2hhcl90b2xvd2VyX2xpYmModW5zaWduZWQgY2hhciBj aCwgcGdfbG9jYWxlX3QgbG9jYWxlKQogewogCUFzc2VydChwZ19kYXRhYmFzZV9lbmNvZGlu Z19tYXhfbGVuZ3RoKCkgPT0gMSk7Ci0JcmV0dXJuIHRvbG93ZXJfbChjaCwgbG9jYWxlLT5p bmZvLmx0KTsKKwlyZXR1cm4gdG9sb3dlcl9sKGNoLCBsb2NhbGUtPmx0KTsKIH0KIAogc3Rh dGljIGJvb2wKQEAgLTI0MSw3ICsyNDEsNyBAQCBjaGFyX2lzX2Nhc2VkX2xpYmMoY2hhciBj aCwgcGdfbG9jYWxlX3QgbG9jYWxlKQogCWlmIChpc19tdWx0aWJ5dGUgJiYgSVNfSElHSEJJ VF9TRVQoY2gpKQogCQlyZXR1cm4gdHJ1ZTsKIAllbHNlCi0JCXJldHVybiBpc2FscGhhX2wo KHVuc2lnbmVkIGNoYXIpIGNoLCBsb2NhbGUtPmluZm8ubHQpOworCQlyZXR1cm4gaXNhbHBo YV9sKCh1bnNpZ25lZCBjaGFyKSBjaCwgbG9jYWxlLT5sdCk7CiB9CiAKIHN0YXRpYyBwZ193 Y2hhcgpAQCAtMjUzLDcgKzI1Myw3IEBAIHRvdXBwZXJfbGliY19zYihwZ193Y2hhciB3Yywg cGdfbG9jYWxlX3QgbG9jYWxlKQogCWlmIChsb2NhbGUtPmlzX2RlZmF1bHQgJiYgd2MgPD0g KHBnX3djaGFyKSAxMjcpCiAJCXJldHVybiBwZ19hc2NpaV90b3VwcGVyKCh1bnNpZ25lZCBj aGFyKSB3Yyk7CiAJaWYgKHdjIDw9IChwZ193Y2hhcikgVUNIQVJfTUFYKQotCQlyZXR1cm4g dG91cHBlcl9sKCh1bnNpZ25lZCBjaGFyKSB3YywgbG9jYWxlLT5pbmZvLmx0KTsKKwkJcmV0 dXJuIHRvdXBwZXJfbCgodW5zaWduZWQgY2hhcikgd2MsIGxvY2FsZS0+bHQpOwogCWVsc2UK IAkJcmV0dXJuIHdjOwogfQpAQCAtMjY3LDcgKzI2Nyw3IEBAIHRvdXBwZXJfbGliY19tYihw Z193Y2hhciB3YywgcGdfbG9jYWxlX3QgbG9jYWxlKQogCWlmIChsb2NhbGUtPmlzX2RlZmF1 bHQgJiYgd2MgPD0gKHBnX3djaGFyKSAxMjcpCiAJCXJldHVybiBwZ19hc2NpaV90b3VwcGVy KCh1bnNpZ25lZCBjaGFyKSB3Yyk7CiAJaWYgKHNpemVvZih3Y2hhcl90KSA+PSA0IHx8IHdj IDw9IChwZ193Y2hhcikgMHhGRkZGKQotCQlyZXR1cm4gdG93dXBwZXJfbCgod2ludF90KSB3 YywgbG9jYWxlLT5pbmZvLmx0KTsKKwkJcmV0dXJuIHRvd3VwcGVyX2woKHdpbnRfdCkgd2Ms IGxvY2FsZS0+bHQpOwogCWVsc2UKIAkJcmV0dXJuIHdjOwogfQpAQCAtMjgxLDcgKzI4MSw3 IEBAIHRvbG93ZXJfbGliY19zYihwZ193Y2hhciB3YywgcGdfbG9jYWxlX3QgbG9jYWxlKQog CWlmIChsb2NhbGUtPmlzX2RlZmF1bHQgJiYgd2MgPD0gKHBnX3djaGFyKSAxMjcpCiAJCXJl dHVybiBwZ19hc2NpaV90b2xvd2VyKCh1bnNpZ25lZCBjaGFyKSB3Yyk7CiAJaWYgKHdjIDw9 IChwZ193Y2hhcikgVUNIQVJfTUFYKQotCQlyZXR1cm4gdG9sb3dlcl9sKCh1bnNpZ25lZCBj aGFyKSB3YywgbG9jYWxlLT5pbmZvLmx0KTsKKwkJcmV0dXJuIHRvbG93ZXJfbCgodW5zaWdu ZWQgY2hhcikgd2MsIGxvY2FsZS0+bHQpOwogCWVsc2UKIAkJcmV0dXJuIHdjOwogfQpAQCAt Mjk1LDcgKzI5NSw3IEBAIHRvbG93ZXJfbGliY19tYihwZ193Y2hhciB3YywgcGdfbG9jYWxl X3QgbG9jYWxlKQogCWlmIChsb2NhbGUtPmlzX2RlZmF1bHQgJiYgd2MgPD0gKHBnX3djaGFy KSAxMjcpCiAJCXJldHVybiBwZ19hc2NpaV90b2xvd2VyKCh1bnNpZ25lZCBjaGFyKSB3Yyk7 CiAJaWYgKHNpemVvZih3Y2hhcl90KSA+PSA0IHx8IHdjIDw9IChwZ193Y2hhcikgMHhGRkZG KQotCQlyZXR1cm4gdG93bG93ZXJfbCgod2ludF90KSB3YywgbG9jYWxlLT5pbmZvLmx0KTsK KwkJcmV0dXJuIHRvd2xvd2VyX2woKHdpbnRfdCkgd2MsIGxvY2FsZS0+bHQpOwogCWVsc2UK IAkJcmV0dXJuIHdjOwogfQpAQCAtNDA2LDcgKzQwNiw3IEBAIHN0cmxvd2VyX2xpYmNfc2Io Y2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qg c3JjbGVuLAogCiAJaWYgKHNyY2xlbiArIDEgPD0gZGVzdHNpemUpCiAJewotCQlsb2NhbGVf dAlsb2MgPSBsb2NhbGUtPmluZm8ubHQ7CisJCWxvY2FsZV90CWxvYyA9IGxvY2FsZS0+bHQ7 CiAJCWNoYXIJICAgKnA7CiAKIAkJaWYgKHNyY2xlbiArIDEgPiBkZXN0c2l6ZSkKQEAgLTQz OCw3ICs0MzgsNyBAQCBzdGF0aWMgc2l6ZV90CiBzdHJsb3dlcl9saWJjX21iKGNoYXIgKmRl c3QsIHNpemVfdCBkZXN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwK IAkJCQkgcGdfbG9jYWxlX3QgbG9jYWxlKQogewotCWxvY2FsZV90CWxvYyA9IGxvY2FsZS0+ aW5mby5sdDsKKwlsb2NhbGVfdAlsb2MgPSBsb2NhbGUtPmx0OwogCXNpemVfdAkJcmVzdWx0 X3NpemU7CiAJd2NoYXJfdCAgICAqd29ya3NwYWNlOwogCWNoYXIJICAgKnJlc3VsdDsKQEAg LTQ5MSw3ICs0OTEsNyBAQCBzdHJ0aXRsZV9saWJjX3NiKGNoYXIgKmRlc3QsIHNpemVfdCBk ZXN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKIAogCWlmIChzcmNs ZW4gKyAxIDw9IGRlc3RzaXplKQogCXsKLQkJbG9jYWxlX3QJbG9jID0gbG9jYWxlLT5pbmZv Lmx0OworCQlsb2NhbGVfdAlsb2MgPSBsb2NhbGUtPmx0OwogCQlpbnQJCQl3YXNhbG51bSA9 IGZhbHNlOwogCQljaGFyCSAgICpwOwogCkBAIC01MzIsNyArNTMyLDcgQEAgc3RhdGljIHNp emVfdAogc3RydGl0bGVfbGliY19tYihjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsIGNv bnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCiAJCQkJIHBnX2xvY2FsZV90IGxvY2Fs ZSkKIHsKLQlsb2NhbGVfdAlsb2MgPSBsb2NhbGUtPmluZm8ubHQ7CisJbG9jYWxlX3QJbG9j ID0gbG9jYWxlLT5sdDsKIAlpbnQJCQl3YXNhbG51bSA9IGZhbHNlOwogCXNpemVfdAkJcmVz dWx0X3NpemU7CiAJd2NoYXJfdCAgICAqd29ya3NwYWNlOwpAQCAtNTkyLDcgKzU5Miw3IEBA IHN0cnVwcGVyX2xpYmNfc2IoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBj aGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAogCiAJaWYgKHNyY2xlbiArIDEgPD0gZGVzdHNp emUpCiAJewotCQlsb2NhbGVfdAlsb2MgPSBsb2NhbGUtPmluZm8ubHQ7CisJCWxvY2FsZV90 CWxvYyA9IGxvY2FsZS0+bHQ7CiAJCWNoYXIJICAgKnA7CiAKIAkJbWVtY3B5KGRlc3QsIHNy Yywgc3JjbGVuKTsKQEAgLTYyMSw3ICs2MjEsNyBAQCBzdGF0aWMgc2l6ZV90CiBzdHJ1cHBl cl9saWJjX21iKGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6ZSwgY29uc3QgY2hhciAqc3Jj LCBzc2l6ZV90IHNyY2xlbiwKIAkJCQkgcGdfbG9jYWxlX3QgbG9jYWxlKQogewotCWxvY2Fs ZV90CWxvYyA9IGxvY2FsZS0+aW5mby5sdDsKKwlsb2NhbGVfdAlsb2MgPSBsb2NhbGUtPmx0 OwogCXNpemVfdAkJcmVzdWx0X3NpemU7CiAJd2NoYXJfdCAgICAqd29ya3NwYWNlOwogCWNo YXIJICAgKnJlc3VsdDsKQEAgLTcxOCw3ICs3MTgsNyBAQCBjcmVhdGVfcGdfbG9jYWxlX2xp YmMoT2lkIGNvbGxpZCwgTWVtb3J5Q29udGV4dCBjb250ZXh0KQogCQkoc3RyY21wKGNvbGxh dGUsICJQT1NJWCIpID09IDApOwogCXJlc3VsdC0+Y3R5cGVfaXNfYyA9IChzdHJjbXAoY3R5 cGUsICJDIikgPT0gMCkgfHwKIAkJKHN0cmNtcChjdHlwZSwgIlBPU0lYIikgPT0gMCk7Ci0J cmVzdWx0LT5pbmZvLmx0ID0gbG9jOworCXJlc3VsdC0+bHQgPSBsb2M7CiAJaWYgKCFyZXN1 bHQtPmNvbGxhdGVfaXNfYykKIAl7CiAjaWZkZWYgV0lOMzIKQEAgLTg2Miw3ICs4NjIsNyBA QCBzdHJuY29sbF9saWJjKGNvbnN0IGNoYXIgKmFyZzEsIHNzaXplX3QgbGVuMSwgY29uc3Qg Y2hhciAqYXJnMiwgc3NpemVfdCBsZW4yLAogCQlhcmcybiA9IGJ1ZjI7CiAJfQogCi0JcmVz dWx0ID0gc3RyY29sbF9sKGFyZzFuLCBhcmcybiwgbG9jYWxlLT5pbmZvLmx0KTsKKwlyZXN1 bHQgPSBzdHJjb2xsX2woYXJnMW4sIGFyZzJuLCBsb2NhbGUtPmx0KTsKIAogCWlmIChidWYg IT0gc2J1ZikKIAkJcGZyZWUoYnVmKTsKQEAgLTg4Nyw3ICs4ODcsNyBAQCBzdHJueGZybV9s aWJjKGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6 ZV90IHNyY2xlbiwKIAlzaXplX3QJCXJlc3VsdDsKIAogCWlmIChzcmNsZW4gPT0gLTEpCi0J CXJldHVybiBzdHJ4ZnJtX2woZGVzdCwgc3JjLCBkZXN0c2l6ZSwgbG9jYWxlLT5pbmZvLmx0 KTsKKwkJcmV0dXJuIHN0cnhmcm1fbChkZXN0LCBzcmMsIGRlc3RzaXplLCBsb2NhbGUtPmx0 KTsKIAogCWlmIChidWZzaXplID4gVEVYVEJVRkxFTikKIAkJYnVmID0gcGFsbG9jKGJ1ZnNp emUpOwpAQCAtODk2LDcgKzg5Niw3IEBAIHN0cm54ZnJtX2xpYmMoY2hhciAqZGVzdCwgc2l6 ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAogCW1lbWNw eShidWYsIHNyYywgc3JjbGVuKTsKIAlidWZbc3JjbGVuXSA9ICdcMCc7CiAKLQlyZXN1bHQg PSBzdHJ4ZnJtX2woZGVzdCwgYnVmLCBkZXN0c2l6ZSwgbG9jYWxlLT5pbmZvLmx0KTsKKwly ZXN1bHQgPSBzdHJ4ZnJtX2woZGVzdCwgYnVmLCBkZXN0c2l6ZSwgbG9jYWxlLT5sdCk7CiAK IAlpZiAoYnVmICE9IHNidWYpCiAJCXBmcmVlKGJ1Zik7CkBAIC0xMDM4LDcgKzEwMzgsNyBA QCBzdHJuY29sbF9saWJjX3dpbjMyX3V0ZjgoY29uc3QgY2hhciAqYXJnMSwgc3NpemVfdCBs ZW4xLCBjb25zdCBjaGFyICphcmcyLAogCSgoTFBXU1RSKSBhMnApW3JdID0gMDsKIAogCWVy cm5vID0gMDsKLQlyZXN1bHQgPSB3Y3Njb2xsX2woKExQV1NUUikgYTFwLCAoTFBXU1RSKSBh MnAsIGxvY2FsZS0+aW5mby5sdCk7CisJcmVzdWx0ID0gd2NzY29sbF9sKChMUFdTVFIpIGEx cCwgKExQV1NUUikgYTJwLCBsb2NhbGUtPmx0KTsKIAlpZiAocmVzdWx0ID09IDIxNDc0ODM2 NDcpCS8qIF9OTFNDTVBFUlJPUjsgbWlzc2luZyBmcm9tIG1pbmd3IGhlYWRlcnMgKi8KIAkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJybXNnKCJjb3VsZCBub3QgY29tcGFyZSBVbmljb2Rl IHN0cmluZ3M6ICVtIikpKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3BnX2xv Y2FsZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGdfbG9jYWxlLmgKaW5kZXggMmIwNzJjYWZi NGQuLjdlODM1OTRmYmFmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9wZ19sb2Nh bGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wZ19sb2NhbGUuaApAQCAtMTcxLDcgKzE3 MSw3IEBAIHN0cnVjdCBwZ19sb2NhbGVfc3RydWN0CiAJCQlVQ29sbGF0b3IgICp1Y29sOwog CQl9CQkJaWN1OwogI2VuZGlmCi0JfQkJCWluZm87CisJfTsKIH07CiAKIGV4dGVybiB2b2lk IGluaXRfZGF0YWJhc2VfY29sbGF0aW9uKHZvaWQpOwoKYmFzZS1jb21taXQ6IGE0OGQxZWY1 ODY1MjIyOTUyMWJhNGI1MDcwZTE5Zjg1NzYwOGIyMmUKLS0gCjIuNTEuMAoK --------------XMilSvfSoQNhBmwudkXUWZaX Content-Type: text/plain; charset=UTF-8; name="0002-C11-anonymous-unions-reorderbuffer-xact_time.patch" Content-Disposition: attachment; filename="0002-C11-anonymous-unions-reorderbuffer-xact_time.patch" Content-Transfer-Encoding: base64 RnJvbSAzMTZmYzlhYzc1MTJjNDA2YWQ4YTgzYjMzMDdkMWViZmYzOTY2ZGU3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAyMiBTZXAgMjAyNSAxNDo0Nzo0OCArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMDIvMjNdIEMxMSBhbm9ueW1vdXMgdW5pb25zIFtyZW9yZGVyYnVmZmVyIHhh Y3RfdGltZV0KCi0tLQogY29udHJpYi90ZXN0X2RlY29kaW5nL3Rlc3RfZGVjb2RpbmcuYyAg ICAgICAgICAgfCAxMiArKysrKystLS0tLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvcHJvdG8uYyAgICAgICAgIHwgMTQgKysrKysrKy0tLS0tLS0KIHNyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jIHwgMTQgKysrKysrKy0tLS0t LS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgICAgIHwg IDIgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaCAgICAgICAg IHwgIDIgKy0KIDUgZmlsZXMgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKSwgMjIgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi90ZXN0X2RlY29kaW5nL3Rlc3RfZGVjb2Rp bmcuYyBiL2NvbnRyaWIvdGVzdF9kZWNvZGluZy90ZXN0X2RlY29kaW5nLmMKaW5kZXggZjY3 MWE3ZDRiMzEuLjM2ZTc3YzY5ZTFjIDEwMDY0NAotLS0gYS9jb250cmliL3Rlc3RfZGVjb2Rp bmcvdGVzdF9kZWNvZGluZy5jCisrKyBiL2NvbnRyaWIvdGVzdF9kZWNvZGluZy90ZXN0X2Rl Y29kaW5nLmMKQEAgLTM0MCw3ICszNDAsNyBAQCBwZ19kZWNvZGVfY29tbWl0X3R4bihMb2dp Y2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAogCWlm IChkYXRhLT5pbmNsdWRlX3RpbWVzdGFtcCkKIAkJYXBwZW5kU3RyaW5nSW5mbyhjdHgtPm91 dCwgIiAoYXQgJXMpIiwKLQkJCQkJCSB0aW1lc3RhbXB0el90b19zdHIodHhuLT54YWN0X3Rp bWUuY29tbWl0X3RpbWUpKTsKKwkJCQkJCSB0aW1lc3RhbXB0el90b19zdHIodHhuLT5jb21t aXRfdGltZSkpOwogCiAJT3V0cHV0UGx1Z2luV3JpdGUoY3R4LCB0cnVlKTsKIH0KQEAgLTM5 MSw3ICszOTEsNyBAQCBwZ19kZWNvZGVfcHJlcGFyZV90eG4oTG9naWNhbERlY29kaW5nQ29u dGV4dCAqY3R4LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAKIAlpZiAoZGF0YS0+aW5jbHVk ZV90aW1lc3RhbXApCiAJCWFwcGVuZFN0cmluZ0luZm8oY3R4LT5vdXQsICIgKGF0ICVzKSIs Ci0JCQkJCQkgdGltZXN0YW1wdHpfdG9fc3RyKHR4bi0+eGFjdF90aW1lLnByZXBhcmVfdGlt ZSkpOworCQkJCQkJIHRpbWVzdGFtcHR6X3RvX3N0cih0eG4tPnByZXBhcmVfdGltZSkpOwog CiAJT3V0cHV0UGx1Z2luV3JpdGUoY3R4LCB0cnVlKTsKIH0KQEAgLTQxMyw3ICs0MTMsNyBA QCBwZ19kZWNvZGVfY29tbWl0X3ByZXBhcmVkX3R4bihMb2dpY2FsRGVjb2RpbmdDb250ZXh0 ICpjdHgsIFJlb3JkZXJCdWZmZXJUWE4gKnR4bgogCiAJaWYgKGRhdGEtPmluY2x1ZGVfdGlt ZXN0YW1wKQogCQlhcHBlbmRTdHJpbmdJbmZvKGN0eC0+b3V0LCAiIChhdCAlcykiLAotCQkJ CQkJIHRpbWVzdGFtcHR6X3RvX3N0cih0eG4tPnhhY3RfdGltZS5jb21taXRfdGltZSkpOwor CQkJCQkJIHRpbWVzdGFtcHR6X3RvX3N0cih0eG4tPmNvbW1pdF90aW1lKSk7CiAKIAlPdXRw dXRQbHVnaW5Xcml0ZShjdHgsIHRydWUpOwogfQpAQCAtNDM3LDcgKzQzNyw3IEBAIHBnX2Rl Y29kZV9yb2xsYmFja19wcmVwYXJlZF90eG4oTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4 LAogCiAJaWYgKGRhdGEtPmluY2x1ZGVfdGltZXN0YW1wKQogCQlhcHBlbmRTdHJpbmdJbmZv KGN0eC0+b3V0LCAiIChhdCAlcykiLAotCQkJCQkJIHRpbWVzdGFtcHR6X3RvX3N0cih0eG4t PnhhY3RfdGltZS5jb21taXRfdGltZSkpOworCQkJCQkJIHRpbWVzdGFtcHR6X3RvX3N0cih0 eG4tPmNvbW1pdF90aW1lKSk7CiAKIAlPdXRwdXRQbHVnaW5Xcml0ZShjdHgsIHRydWUpOwog fQpAQCAtODc0LDcgKzg3NCw3IEBAIHBnX2RlY29kZV9zdHJlYW1fcHJlcGFyZShMb2dpY2Fs RGVjb2RpbmdDb250ZXh0ICpjdHgsCiAKIAlpZiAoZGF0YS0+aW5jbHVkZV90aW1lc3RhbXAp CiAJCWFwcGVuZFN0cmluZ0luZm8oY3R4LT5vdXQsICIgKGF0ICVzKSIsCi0JCQkJCQkgdGlt ZXN0YW1wdHpfdG9fc3RyKHR4bi0+eGFjdF90aW1lLnByZXBhcmVfdGltZSkpOworCQkJCQkJ IHRpbWVzdGFtcHR6X3RvX3N0cih0eG4tPnByZXBhcmVfdGltZSkpOwogCiAJT3V0cHV0UGx1 Z2luV3JpdGUoY3R4LCB0cnVlKTsKIH0KQEAgLTkwMyw3ICs5MDMsNyBAQCBwZ19kZWNvZGVf c3RyZWFtX2NvbW1pdChMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAKIAlpZiAoZGF0 YS0+aW5jbHVkZV90aW1lc3RhbXApCiAJCWFwcGVuZFN0cmluZ0luZm8oY3R4LT5vdXQsICIg KGF0ICVzKSIsCi0JCQkJCQkgdGltZXN0YW1wdHpfdG9fc3RyKHR4bi0+eGFjdF90aW1lLmNv bW1pdF90aW1lKSk7CisJCQkJCQkgdGltZXN0YW1wdHpfdG9fc3RyKHR4bi0+Y29tbWl0X3Rp bWUpKTsKIAogCU91dHB1dFBsdWdpbldyaXRlKGN0eCwgdHJ1ZSk7CiB9CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKaW5kZXggMWIzZDllYjQ5ZGQuLjI0MzZh MjYzZGMyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3By b3RvLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jCkBA IC01Miw3ICs1Miw3IEBAIGxvZ2ljYWxyZXBfd3JpdGVfYmVnaW4oU3RyaW5nSW5mbyBvdXQs IFJlb3JkZXJCdWZmZXJUWE4gKnR4bikKIAogCS8qIGZpeGVkIGZpZWxkcyAqLwogCXBxX3Nl bmRpbnQ2NChvdXQsIHR4bi0+ZmluYWxfbHNuKTsKLQlwcV9zZW5kaW50NjQob3V0LCB0eG4t PnhhY3RfdGltZS5jb21taXRfdGltZSk7CisJcHFfc2VuZGludDY0KG91dCwgdHhuLT5jb21t aXRfdGltZSk7CiAJcHFfc2VuZGludDMyKG91dCwgdHhuLT54aWQpOwogfQogCkBAIC04OCw3 ICs4OCw3IEBAIGxvZ2ljYWxyZXBfd3JpdGVfY29tbWl0KFN0cmluZ0luZm8gb3V0LCBSZW9y ZGVyQnVmZmVyVFhOICp0eG4sCiAJLyogc2VuZCBmaWVsZHMgKi8KIAlwcV9zZW5kaW50NjQo b3V0LCBjb21taXRfbHNuKTsKIAlwcV9zZW5kaW50NjQob3V0LCB0eG4tPmVuZF9sc24pOwot CXBxX3NlbmRpbnQ2NChvdXQsIHR4bi0+eGFjdF90aW1lLmNvbW1pdF90aW1lKTsKKwlwcV9z ZW5kaW50NjQob3V0LCB0eG4tPmNvbW1pdF90aW1lKTsKIH0KIAogLyoKQEAgLTEyMCw3ICsx MjAsNyBAQCBsb2dpY2FscmVwX3dyaXRlX2JlZ2luX3ByZXBhcmUoU3RyaW5nSW5mbyBvdXQs IFJlb3JkZXJCdWZmZXJUWE4gKnR4bikKIAkvKiBmaXhlZCBmaWVsZHMgKi8KIAlwcV9zZW5k aW50NjQob3V0LCB0eG4tPmZpbmFsX2xzbik7CiAJcHFfc2VuZGludDY0KG91dCwgdHhuLT5l bmRfbHNuKTsKLQlwcV9zZW5kaW50NjQob3V0LCB0eG4tPnhhY3RfdGltZS5wcmVwYXJlX3Rp bWUpOworCXBxX3NlbmRpbnQ2NChvdXQsIHR4bi0+cHJlcGFyZV90aW1lKTsKIAlwcV9zZW5k aW50MzIob3V0LCB0eG4tPnhpZCk7CiAKIAkvKiBzZW5kIGdpZCAqLwpAQCAtMTczLDcgKzE3 Myw3IEBAIGxvZ2ljYWxyZXBfd3JpdGVfcHJlcGFyZV9jb21tb24oU3RyaW5nSW5mbyBvdXQs IExvZ2ljYWxSZXBNc2dUeXBlIHR5cGUsCiAJLyogc2VuZCBmaWVsZHMgKi8KIAlwcV9zZW5k aW50NjQob3V0LCBwcmVwYXJlX2xzbik7CiAJcHFfc2VuZGludDY0KG91dCwgdHhuLT5lbmRf bHNuKTsKLQlwcV9zZW5kaW50NjQob3V0LCB0eG4tPnhhY3RfdGltZS5wcmVwYXJlX3RpbWUp OworCXBxX3NlbmRpbnQ2NChvdXQsIHR4bi0+cHJlcGFyZV90aW1lKTsKIAlwcV9zZW5kaW50 MzIob3V0LCB0eG4tPnhpZCk7CiAKIAkvKiBzZW5kIGdpZCAqLwpAQCAtMjUzLDcgKzI1Myw3 IEBAIGxvZ2ljYWxyZXBfd3JpdGVfY29tbWl0X3ByZXBhcmVkKFN0cmluZ0luZm8gb3V0LCBS ZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJLyogc2VuZCBmaWVsZHMgKi8KIAlwcV9zZW5kaW50 NjQob3V0LCBjb21taXRfbHNuKTsKIAlwcV9zZW5kaW50NjQob3V0LCB0eG4tPmVuZF9sc24p OwotCXBxX3NlbmRpbnQ2NChvdXQsIHR4bi0+eGFjdF90aW1lLmNvbW1pdF90aW1lKTsKKwlw cV9zZW5kaW50NjQob3V0LCB0eG4tPmNvbW1pdF90aW1lKTsKIAlwcV9zZW5kaW50MzIob3V0 LCB0eG4tPnhpZCk7CiAKIAkvKiBzZW5kIGdpZCAqLwpAQCAtMzExLDcgKzMxMSw3IEBAIGxv Z2ljYWxyZXBfd3JpdGVfcm9sbGJhY2tfcHJlcGFyZWQoU3RyaW5nSW5mbyBvdXQsIFJlb3Jk ZXJCdWZmZXJUWE4gKnR4biwKIAlwcV9zZW5kaW50NjQob3V0LCBwcmVwYXJlX2VuZF9sc24p OwogCXBxX3NlbmRpbnQ2NChvdXQsIHR4bi0+ZW5kX2xzbik7CiAJcHFfc2VuZGludDY0KG91 dCwgcHJlcGFyZV90aW1lKTsKLQlwcV9zZW5kaW50NjQob3V0LCB0eG4tPnhhY3RfdGltZS5j b21taXRfdGltZSk7CisJcHFfc2VuZGludDY0KG91dCwgdHhuLT5jb21taXRfdGltZSk7CiAJ cHFfc2VuZGludDMyKG91dCwgdHhuLT54aWQpOwogCiAJLyogc2VuZCBnaWQgKi8KQEAgLTEx MTksNyArMTExOSw3IEBAIGxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJ bmZvIG91dCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCS8qIHNlbmQgZmllbGRzICovCiAJ cHFfc2VuZGludDY0KG91dCwgY29tbWl0X2xzbik7CiAJcHFfc2VuZGludDY0KG91dCwgdHhu LT5lbmRfbHNuKTsKLQlwcV9zZW5kaW50NjQob3V0LCB0eG4tPnhhY3RfdGltZS5jb21taXRf dGltZSk7CisJcHFfc2VuZGludDY0KG91dCwgdHhuLT5jb21taXRfdGltZSk7CiB9CiAKIC8q CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJi dWZmZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZl ci5jCmluZGV4IDQ3MzZmOTkzYzM3Li5hNWUxNjVmYjEyMyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKQEAgLTI4MzAsNyAr MjgzMCw3IEBAIFJlb3JkZXJCdWZmZXJSZXBsYXkoUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAog CiAJdHhuLT5maW5hbF9sc24gPSBjb21taXRfbHNuOwogCXR4bi0+ZW5kX2xzbiA9IGVuZF9s c247Ci0JdHhuLT54YWN0X3RpbWUuY29tbWl0X3RpbWUgPSBjb21taXRfdGltZTsKKwl0eG4t PmNvbW1pdF90aW1lID0gY29tbWl0X3RpbWU7CiAJdHhuLT5vcmlnaW5faWQgPSBvcmlnaW5f aWQ7CiAJdHhuLT5vcmlnaW5fbHNuID0gb3JpZ2luX2xzbjsKIApAQCAtMjkyMiw3ICsyOTIy LDcgQEAgUmVvcmRlckJ1ZmZlclJlbWVtYmVyUHJlcGFyZUluZm8oUmVvcmRlckJ1ZmZlciAq cmIsIFRyYW5zYWN0aW9uSWQgeGlkLAogCSAqLwogCXR4bi0+ZmluYWxfbHNuID0gcHJlcGFy ZV9sc247CiAJdHhuLT5lbmRfbHNuID0gZW5kX2xzbjsKLQl0eG4tPnhhY3RfdGltZS5wcmVw YXJlX3RpbWUgPSBwcmVwYXJlX3RpbWU7CisJdHhuLT5wcmVwYXJlX3RpbWUgPSBwcmVwYXJl X3RpbWU7CiAJdHhuLT5vcmlnaW5faWQgPSBvcmlnaW5faWQ7CiAJdHhuLT5vcmlnaW5fbHNu ID0gb3JpZ2luX2xzbjsKIApAQCAtMjk3OSw3ICsyOTc5LDcgQEAgUmVvcmRlckJ1ZmZlclBy ZXBhcmUoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLAogCXR4bi0+Z2lk ID0gcHN0cmR1cChnaWQpOwogCiAJUmVvcmRlckJ1ZmZlclJlcGxheSh0eG4sIHJiLCB4aWQs IHR4bi0+ZmluYWxfbHNuLCB0eG4tPmVuZF9sc24sCi0JCQkJCQl0eG4tPnhhY3RfdGltZS5w cmVwYXJlX3RpbWUsIHR4bi0+b3JpZ2luX2lkLCB0eG4tPm9yaWdpbl9sc24pOworCQkJCQkJ dHhuLT5wcmVwYXJlX3RpbWUsIHR4bi0+b3JpZ2luX2lkLCB0eG4tPm9yaWdpbl9sc24pOwog CiAJLyoKIAkgKiBTZW5kIGEgcHJlcGFyZSBpZiBub3QgYWxyZWFkeSBkb25lIHNvLiBUaGlz IG1pZ2h0IG9jY3VyIGlmIHdlIGhhdmUKQEAgLTMwMTgsNyArMzAxOCw3IEBAIFJlb3JkZXJC dWZmZXJGaW5pc2hQcmVwYXJlZChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4 aWQsCiAJICogYmUgbGF0ZXIgdXNlZCBmb3Igcm9sbGJhY2suCiAJICovCiAJcHJlcGFyZV9l bmRfbHNuID0gdHhuLT5lbmRfbHNuOwotCXByZXBhcmVfdGltZSA9IHR4bi0+eGFjdF90aW1l LnByZXBhcmVfdGltZTsKKwlwcmVwYXJlX3RpbWUgPSB0eG4tPnByZXBhcmVfdGltZTsKIAog CS8qIGFkZCB0aGUgZ2lkIGluIHRoZSB0eG4gKi8KIAl0eG4tPmdpZCA9IHBzdHJkdXAoZ2lk KTsKQEAgLTMwNTAsMTIgKzMwNTAsMTIgQEAgUmVvcmRlckJ1ZmZlckZpbmlzaFByZXBhcmVk KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwKIAkJICogcHJlcGFyZWQg YWZ0ZXIgdGhlIHJlc3RhcnQuCiAJCSAqLwogCQlSZW9yZGVyQnVmZmVyUmVwbGF5KHR4biwg cmIsIHhpZCwgdHhuLT5maW5hbF9sc24sIHR4bi0+ZW5kX2xzbiwKLQkJCQkJCQl0eG4tPnhh Y3RfdGltZS5wcmVwYXJlX3RpbWUsIHR4bi0+b3JpZ2luX2lkLCB0eG4tPm9yaWdpbl9sc24p OworCQkJCQkJCXR4bi0+cHJlcGFyZV90aW1lLCB0eG4tPm9yaWdpbl9pZCwgdHhuLT5vcmln aW5fbHNuKTsKIAl9CiAKIAl0eG4tPmZpbmFsX2xzbiA9IGNvbW1pdF9sc247CiAJdHhuLT5l bmRfbHNuID0gZW5kX2xzbjsKLQl0eG4tPnhhY3RfdGltZS5jb21taXRfdGltZSA9IGNvbW1p dF90aW1lOworCXR4bi0+Y29tbWl0X3RpbWUgPSBjb21taXRfdGltZTsKIAl0eG4tPm9yaWdp bl9pZCA9IG9yaWdpbl9pZDsKIAl0eG4tPm9yaWdpbl9sc24gPSBvcmlnaW5fbHNuOwogCkBA IC0zMDk1LDcgKzMwOTUsNyBAQCBSZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAq cmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbiwKIAlpZiAodHhuID09IE5V TEwpCiAJCXJldHVybjsKIAotCXR4bi0+eGFjdF90aW1lLmFib3J0X3RpbWUgPSBhYm9ydF90 aW1lOworCXR4bi0+YWJvcnRfdGltZSA9IGFib3J0X3RpbWU7CiAKIAkvKiBGb3Igc3RyZWFt ZWQgdHJhbnNhY3Rpb25zIG5vdGlmeSB0aGUgcmVtb3RlIG5vZGUgYWJvdXQgdGhlIGFib3J0 LiAqLwogCWlmIChyYnR4bl9pc19zdHJlYW1lZCh0eG4pKQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXggODA1NDBjMDE3YmQuLjkyZWIx NzA0OWMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9w Z291dHB1dC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0 cHV0LmMKQEAgLTE4ODgsNyArMTg4OCw3IEBAIHBnb3V0cHV0X3N0cmVhbV9hYm9ydChzdHJ1 Y3QgTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCiAJT3V0cHV0UGx1Z2luUHJlcGFy ZVdyaXRlKGN0eCwgdHJ1ZSk7CiAJbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoY3R4 LT5vdXQsIHRvcHR4bi0+eGlkLCB0eG4tPnhpZCwgYWJvcnRfbHNuLAotCQkJCQkJCQkgIHR4 bi0+eGFjdF90aW1lLmFib3J0X3RpbWUsIHdyaXRlX2Fib3J0X2luZm8pOworCQkJCQkJCQkg IHR4bi0+YWJvcnRfdGltZSwgd3JpdGVfYWJvcnRfaW5mbyk7CiAKIAlPdXRwdXRQbHVnaW5X cml0ZShjdHgsIHRydWUpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9yZW9yZGVyYnVmZmVyLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVm ZmVyLmgKaW5kZXggZmEwNzQ1NTUyZjguLjkxZGM3ZTVlNDQ4IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKKysrIGIvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oCkBAIC0zNTksNyArMzU5LDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgUmVvcmRlckJ1ZmZlclRYTgogCQlUaW1lc3RhbXBUeiBjb21taXRfdGltZTsK IAkJVGltZXN0YW1wVHogcHJlcGFyZV90aW1lOwogCQlUaW1lc3RhbXBUeiBhYm9ydF90aW1l OwotCX0JCQl4YWN0X3RpbWU7CisJfTsKIAogCS8qCiAJICogVGhlIGJhc2Ugc25hcHNob3Qg aXMgdXNlZCB0byBkZWNvZGUgYWxsIGNoYW5nZXMgdW50aWwgZWl0aGVyIHRoaXMKLS0gCjIu NTEuMAoK --------------XMilSvfSoQNhBmwudkXUWZaX Content-Type: text/plain; charset=UTF-8; name="0003-C11-anonymous-unions-pgcrypto.patch" Content-Disposition: attachment; filename="0003-C11-anonymous-unions-pgcrypto.patch" Content-Transfer-Encoding: base64 RnJvbSAzMDdjZDAyNWUyYzlkN2RmYWQ4N2MzZTYwYjAzZDczN2E2NTdjNzQ0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAyMiBTZXAgMjAyNSAxNDo0Nzo0OCArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMDMvMjNdIEMxMSBhbm9ueW1vdXMgdW5pb25zIFtwZ2NyeXB0b10KCi0tLQog Y29udHJpYi9wZ2NyeXB0by9vcGVuc3NsLmMgfCAxNCArKysrKysrLS0tLS0tLQogY29udHJp Yi9wZ2NyeXB0by9weC5oICAgICAgfCAgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2Vy dGlvbnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ2NyeXB0 by9vcGVuc3NsLmMgYi9jb250cmliL3BnY3J5cHRvL29wZW5zc2wuYwppbmRleCBmMTc5ZTgw Yzg0Mi4uMjc2ZDgzMDY1ODggMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdjcnlwdG8vb3BlbnNz bC5jCisrKyBiL2NvbnRyaWIvcGdjcnlwdG8vb3BlbnNzbC5jCkBAIC05OCw3ICs5OCw3IEBA IGZyZWVfb3BlbnNzbF9kaWdlc3QoT1NTTERpZ2VzdCAqZGlnZXN0KQogc3RhdGljIHVuc2ln bmVkCiBkaWdlc3RfcmVzdWx0X3NpemUoUFhfTUQgKmgpCiB7Ci0JT1NTTERpZ2VzdCAqZGln ZXN0ID0gKE9TU0xEaWdlc3QgKikgaC0+cC5wdHI7CisJT1NTTERpZ2VzdCAqZGlnZXN0ID0g KE9TU0xEaWdlc3QgKikgaC0+cHRyOwogCWludAkJCXJlc3VsdCA9IEVWUF9NRF9DVFhfc2l6 ZShkaWdlc3QtPmN0eCk7CiAKIAlpZiAocmVzdWx0IDwgMCkKQEAgLTExMCw3ICsxMTAsNyBA QCBkaWdlc3RfcmVzdWx0X3NpemUoUFhfTUQgKmgpCiBzdGF0aWMgdW5zaWduZWQKIGRpZ2Vz dF9ibG9ja19zaXplKFBYX01EICpoKQogewotCU9TU0xEaWdlc3QgKmRpZ2VzdCA9IChPU1NM RGlnZXN0ICopIGgtPnAucHRyOworCU9TU0xEaWdlc3QgKmRpZ2VzdCA9IChPU1NMRGlnZXN0 ICopIGgtPnB0cjsKIAlpbnQJCQlyZXN1bHQgPSBFVlBfTURfQ1RYX2Jsb2NrX3NpemUoZGln ZXN0LT5jdHgpOwogCiAJaWYgKHJlc3VsdCA8IDApCkBAIC0xMjIsNyArMTIyLDcgQEAgZGln ZXN0X2Jsb2NrX3NpemUoUFhfTUQgKmgpCiBzdGF0aWMgdm9pZAogZGlnZXN0X3Jlc2V0KFBY X01EICpoKQogewotCU9TU0xEaWdlc3QgKmRpZ2VzdCA9IChPU1NMRGlnZXN0ICopIGgtPnAu cHRyOworCU9TU0xEaWdlc3QgKmRpZ2VzdCA9IChPU1NMRGlnZXN0ICopIGgtPnB0cjsKIAog CWlmICghRVZQX0RpZ2VzdEluaXRfZXgoZGlnZXN0LT5jdHgsIGRpZ2VzdC0+YWxnbywgTlVM TCkpCiAJCWVsb2coRVJST1IsICJFVlBfRGlnZXN0SW5pdF9leCgpIGZhaWxlZCIpOwpAQCAt MTMxLDcgKzEzMSw3IEBAIGRpZ2VzdF9yZXNldChQWF9NRCAqaCkKIHN0YXRpYyB2b2lkCiBk aWdlc3RfdXBkYXRlKFBYX01EICpoLCBjb25zdCB1aW50OCAqZGF0YSwgdW5zaWduZWQgZGxl bikKIHsKLQlPU1NMRGlnZXN0ICpkaWdlc3QgPSAoT1NTTERpZ2VzdCAqKSBoLT5wLnB0cjsK KwlPU1NMRGlnZXN0ICpkaWdlc3QgPSAoT1NTTERpZ2VzdCAqKSBoLT5wdHI7CiAKIAlpZiAo IUVWUF9EaWdlc3RVcGRhdGUoZGlnZXN0LT5jdHgsIGRhdGEsIGRsZW4pKQogCQllbG9nKEVS Uk9SLCAiRVZQX0RpZ2VzdFVwZGF0ZSgpIGZhaWxlZCIpOwpAQCAtMTQwLDcgKzE0MCw3IEBA IGRpZ2VzdF91cGRhdGUoUFhfTUQgKmgsIGNvbnN0IHVpbnQ4ICpkYXRhLCB1bnNpZ25lZCBk bGVuKQogc3RhdGljIHZvaWQKIGRpZ2VzdF9maW5pc2goUFhfTUQgKmgsIHVpbnQ4ICpkc3Qp CiB7Ci0JT1NTTERpZ2VzdCAqZGlnZXN0ID0gKE9TU0xEaWdlc3QgKikgaC0+cC5wdHI7CisJ T1NTTERpZ2VzdCAqZGlnZXN0ID0gKE9TU0xEaWdlc3QgKikgaC0+cHRyOwogCiAJaWYgKCFF VlBfRGlnZXN0RmluYWxfZXgoZGlnZXN0LT5jdHgsIGRzdCwgTlVMTCkpCiAJCWVsb2coRVJS T1IsICJFVlBfRGlnZXN0RmluYWxfZXgoKSBmYWlsZWQiKTsKQEAgLTE0OSw3ICsxNDksNyBA QCBkaWdlc3RfZmluaXNoKFBYX01EICpoLCB1aW50OCAqZHN0KQogc3RhdGljIHZvaWQKIGRp Z2VzdF9mcmVlKFBYX01EICpoKQogewotCU9TU0xEaWdlc3QgKmRpZ2VzdCA9IChPU1NMRGln ZXN0ICopIGgtPnAucHRyOworCU9TU0xEaWdlc3QgKmRpZ2VzdCA9IChPU1NMRGlnZXN0ICop IGgtPnB0cjsKIAogCWZyZWVfb3BlbnNzbF9kaWdlc3QoZGlnZXN0KTsKIAlwZnJlZShoKTsK QEAgLTIwNCw3ICsyMDQsNyBAQCBweF9maW5kX2RpZ2VzdChjb25zdCBjaGFyICpuYW1lLCBQ WF9NRCAqKnJlcykKIAloLT51cGRhdGUgPSBkaWdlc3RfdXBkYXRlOwogCWgtPmZpbmlzaCA9 IGRpZ2VzdF9maW5pc2g7CiAJaC0+ZnJlZSA9IGRpZ2VzdF9mcmVlOwotCWgtPnAucHRyID0g ZGlnZXN0OworCWgtPnB0ciA9IGRpZ2VzdDsKIAogCSpyZXMgPSBoOwogCXJldHVybiAwOwpk aWZmIC0tZ2l0IGEvY29udHJpYi9wZ2NyeXB0by9weC5oIGIvY29udHJpYi9wZ2NyeXB0by9w eC5oCmluZGV4IDRiODFmY2VhYjhlLi43ODQ2YTYzZjMwMSAxMDA2NDQKLS0tIGEvY29udHJp Yi9wZ2NyeXB0by9weC5oCisrKyBiL2NvbnRyaWIvcGdjcnlwdG8vcHguaApAQCAtMTE3LDcg KzExNyw3IEBAIHN0cnVjdCBweF9kaWdlc3QKIAl7CiAJCXVuc2lnbmVkCWNvZGU7CiAJCXZv aWQJICAgKnB0cjsKLQl9CQkJcDsKKwl9OwogfTsKIAogc3RydWN0IHB4X2FsaWFzCi0tIAoy LjUxLjAKCg== --------------XMilSvfSoQNhBmwudkXUWZaX Content-Type: text/plain; charset=UTF-8; name="0004-C11-anonymous-unions-plpython.patch" Content-Disposition: attachment; filename="0004-C11-anonymous-unions-plpython.patch" Content-Transfer-Encoding: base64 RnJvbSBkNzBkNWQ1NzBiZGEwOGJhMDFjMThmNzMyZTQ3ODY3MTRjZDE0YjgyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAyMiBTZXAgMjAyNSAxNDo0Nzo0OCArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMDQvMjNdIEMxMSBhbm9ueW1vdXMgdW5pb25zIFtwbHB5dGhvbl0KCi0tLQog c3JjL3BsL3BscHl0aG9uL3BscHlfZXhlYy5jICAgfCAgIDIgKy0KIHNyYy9wbC9wbHB5dGhv bi9wbHB5X3R5cGVpby5jIHwgMTM0ICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0t LS0KIHNyYy9wbC9wbHB5dGhvbi9wbHB5X3R5cGVpby5oIHwgICA0ICstCiAzIGZpbGVzIGNo YW5nZWQsIDcwIGluc2VydGlvbnMoKyksIDcwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3NyYy9wbC9wbHB5dGhvbi9wbHB5X2V4ZWMuYyBiL3NyYy9wbC9wbHB5dGhvbi9wbHB5X2V4 ZWMuYwppbmRleCBmZDA2YjllMGU0ZS4uMDExN2YxZTc3ZWYgMTAwNjQ0Ci0tLSBhL3NyYy9w bC9wbHB5dGhvbi9wbHB5X2V4ZWMuYworKysgYi9zcmMvcGwvcGxweXRob24vcGxweV9leGVj LmMKQEAgLTEwNDYsNyArMTA0Niw3IEBAIFBMeV9tb2RpZnlfdHVwbGUoUEx5UHJvY2VkdXJl ICpwcm9jLCBQeU9iamVjdCAqcGx0ZCwgVHJpZ2dlckRhdGEgKnRkYXRhLAogCQkJUHlfSU5D UkVGKHBsdmFsKTsKIAogCQkJLyogV2UgYXNzdW1lIHByb2MtPnJlc3VsdCBpcyBzZXQgdXAg dG8gY29udmVydCB0dXBsZXMgcHJvcGVybHkgKi8KLQkJCWF0dCA9ICZwcm9jLT5yZXN1bHQu dS50dXBsZS5hdHRzW2F0dG4gLSAxXTsKKwkJCWF0dCA9ICZwcm9jLT5yZXN1bHQudHVwbGUu YXR0c1thdHRuIC0gMV07CiAKIAkJCW1vZHZhbHVlc1thdHRuIC0gMV0gPSBQTHlfb3V0cHV0 X2NvbnZlcnQoYXR0LAogCQkJCQkJCQkJCQkJCSBwbHZhbCwKZGlmZiAtLWdpdCBhL3NyYy9w bC9wbHB5dGhvbi9wbHB5X3R5cGVpby5jIGIvc3JjL3BsL3BscHl0aG9uL3BscHlfdHlwZWlv LmMKaW5kZXggZjY1MDlhNDE5MDIuLmJiYTc4ZmI3NTkyIDEwMDY0NAotLS0gYS9zcmMvcGwv cGxweXRob24vcGxweV90eXBlaW8uYworKysgYi9zcmMvcGwvcGxweXRob24vcGxweV90eXBl aW8uYwpAQCAtMTcxLDE1ICsxNzEsMTUgQEAgUEx5X2lucHV0X3NldHVwX3R1cGxlKFBMeURh dHVtVG9PYiAqYXJnLCBUdXBsZURlc2MgZGVzYywgUEx5UHJvY2VkdXJlICpwcm9jKQogCiAJ LyogU2F2ZSBwb2ludGVyIHRvIHR1cGRlc2MsIGJ1dCBvbmx5IGlmIHRoaXMgaXMgYW4gYW5v bnltb3VzIHJlY29yZCB0eXBlICovCiAJaWYgKGFyZy0+dHlwb2lkID09IFJFQ09SRE9JRCAm JiBhcmctPnR5cG1vZCA8IDApCi0JCWFyZy0+dS50dXBsZS5yZWNkZXNjID0gZGVzYzsKKwkJ YXJnLT50dXBsZS5yZWNkZXNjID0gZGVzYzsKIAogCS8qIChSZSlhbGxvY2F0ZSBhdHRzIGFy cmF5IGFzIG5lZWRlZCAqLwotCWlmIChhcmctPnUudHVwbGUubmF0dHMgIT0gZGVzYy0+bmF0 dHMpCisJaWYgKGFyZy0+dHVwbGUubmF0dHMgIT0gZGVzYy0+bmF0dHMpCiAJewotCQlpZiAo YXJnLT51LnR1cGxlLmF0dHMpCi0JCQlwZnJlZShhcmctPnUudHVwbGUuYXR0cyk7Ci0JCWFy Zy0+dS50dXBsZS5uYXR0cyA9IGRlc2MtPm5hdHRzOwotCQlhcmctPnUudHVwbGUuYXR0cyA9 IChQTHlEYXR1bVRvT2IgKikKKwkJaWYgKGFyZy0+dHVwbGUuYXR0cykKKwkJCXBmcmVlKGFy Zy0+dHVwbGUuYXR0cyk7CisJCWFyZy0+dHVwbGUubmF0dHMgPSBkZXNjLT5uYXR0czsKKwkJ YXJnLT50dXBsZS5hdHRzID0gKFBMeURhdHVtVG9PYiAqKQogCQkJTWVtb3J5Q29udGV4dEFs bG9jWmVybyhhcmctPm1jeHQsCiAJCQkJCQkJCSAgIGRlc2MtPm5hdHRzICogc2l6ZW9mKFBM eURhdHVtVG9PYikpOwogCX0KQEAgLTE4OCw3ICsxODgsNyBAQCBQTHlfaW5wdXRfc2V0dXBf dHVwbGUoUEx5RGF0dW1Ub09iICphcmcsIFR1cGxlRGVzYyBkZXNjLCBQTHlQcm9jZWR1cmUg KnByb2MpCiAJZm9yIChpID0gMDsgaSA8IGRlc2MtPm5hdHRzOyBpKyspCiAJewogCQlGb3Jt X3BnX2F0dHJpYnV0ZSBhdHRyID0gVHVwbGVEZXNjQXR0cihkZXNjLCBpKTsKLQkJUEx5RGF0 dW1Ub09iICphdHQgPSAmYXJnLT51LnR1cGxlLmF0dHNbaV07CisJCVBMeURhdHVtVG9PYiAq YXR0ID0gJmFyZy0+dHVwbGUuYXR0c1tpXTsKIAogCQlpZiAoYXR0ci0+YXR0aXNkcm9wcGVk KQogCQkJY29udGludWU7CkBAIC0yMjEsMTUgKzIyMSwxNSBAQCBQTHlfb3V0cHV0X3NldHVw X3R1cGxlKFBMeU9iVG9EYXR1bSAqYXJnLCBUdXBsZURlc2MgZGVzYywgUEx5UHJvY2VkdXJl ICpwcm9jKQogCiAJLyogU2F2ZSBwb2ludGVyIHRvIHR1cGRlc2MsIGJ1dCBvbmx5IGlmIHRo aXMgaXMgYW4gYW5vbnltb3VzIHJlY29yZCB0eXBlICovCiAJaWYgKGFyZy0+dHlwb2lkID09 IFJFQ09SRE9JRCAmJiBhcmctPnR5cG1vZCA8IDApCi0JCWFyZy0+dS50dXBsZS5yZWNkZXNj ID0gZGVzYzsKKwkJYXJnLT50dXBsZS5yZWNkZXNjID0gZGVzYzsKIAogCS8qIChSZSlhbGxv Y2F0ZSBhdHRzIGFycmF5IGFzIG5lZWRlZCAqLwotCWlmIChhcmctPnUudHVwbGUubmF0dHMg IT0gZGVzYy0+bmF0dHMpCisJaWYgKGFyZy0+dHVwbGUubmF0dHMgIT0gZGVzYy0+bmF0dHMp CiAJewotCQlpZiAoYXJnLT51LnR1cGxlLmF0dHMpCi0JCQlwZnJlZShhcmctPnUudHVwbGUu YXR0cyk7Ci0JCWFyZy0+dS50dXBsZS5uYXR0cyA9IGRlc2MtPm5hdHRzOwotCQlhcmctPnUu dHVwbGUuYXR0cyA9IChQTHlPYlRvRGF0dW0gKikKKwkJaWYgKGFyZy0+dHVwbGUuYXR0cykK KwkJCXBmcmVlKGFyZy0+dHVwbGUuYXR0cyk7CisJCWFyZy0+dHVwbGUubmF0dHMgPSBkZXNj LT5uYXR0czsKKwkJYXJnLT50dXBsZS5hdHRzID0gKFBMeU9iVG9EYXR1bSAqKQogCQkJTWVt b3J5Q29udGV4dEFsbG9jWmVybyhhcmctPm1jeHQsCiAJCQkJCQkJCSAgIGRlc2MtPm5hdHRz ICogc2l6ZW9mKFBMeU9iVG9EYXR1bSkpOwogCX0KQEAgLTIzOCw3ICsyMzgsNyBAQCBQTHlf b3V0cHV0X3NldHVwX3R1cGxlKFBMeU9iVG9EYXR1bSAqYXJnLCBUdXBsZURlc2MgZGVzYywg UEx5UHJvY2VkdXJlICpwcm9jKQogCWZvciAoaSA9IDA7IGkgPCBkZXNjLT5uYXR0czsgaSsr KQogCXsKIAkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ciA9IFR1cGxlRGVzY0F0dHIoZGVzYywg aSk7Ci0JCVBMeU9iVG9EYXR1bSAqYXR0ID0gJmFyZy0+dS50dXBsZS5hdHRzW2ldOworCQlQ THlPYlRvRGF0dW0gKmF0dCA9ICZhcmctPnR1cGxlLmF0dHNbaV07CiAKIAkJaWYgKGF0dHIt PmF0dGlzZHJvcHBlZCkKIAkJCWNvbnRpbnVlOwpAQCAtMjc3LDkgKzI3Nyw5IEBAIFBMeV9v dXRwdXRfc2V0dXBfcmVjb3JkKFBMeU9iVG9EYXR1bSAqYXJnLCBUdXBsZURlc2MgZGVzYywg UEx5UHJvY2VkdXJlICpwcm9jKQogCSAqIGZvciB0aGUgcmVjb3JkIHR5cGUuCiAJICovCiAJ YXJnLT50eXBtb2QgPSBkZXNjLT50ZHR5cG1vZDsKLQlpZiAoYXJnLT51LnR1cGxlLnJlY2Rl c2MgJiYKLQkJYXJnLT51LnR1cGxlLnJlY2Rlc2MtPnRkdHlwbW9kICE9IGFyZy0+dHlwbW9k KQotCQlhcmctPnUudHVwbGUucmVjZGVzYyA9IE5VTEw7CisJaWYgKGFyZy0+dHVwbGUucmVj ZGVzYyAmJgorCQlhcmctPnR1cGxlLnJlY2Rlc2MtPnRkdHlwbW9kICE9IGFyZy0+dHlwbW9k KQorCQlhcmctPnR1cGxlLnJlY2Rlc2MgPSBOVUxMOwogCiAJLyogVXBkYXRlIGRlcml2ZWQg ZGF0YSBpZiBuZWNlc3NhcnkgKi8KIAlQTHlfb3V0cHV0X3NldHVwX3R1cGxlKGFyZywgZGVz YywgcHJvYyk7CkBAIC0zNDMsMTEgKzM0MywxMSBAQCBQTHlfb3V0cHV0X3NldHVwX2Z1bmMo UEx5T2JUb0RhdHVtICphcmcsIE1lbW9yeUNvbnRleHQgYXJnX21jeHQsCiAJewogCQkvKiBE b21haW4gKi8KIAkJYXJnLT5mdW5jID0gUEx5T2JqZWN0X1RvRG9tYWluOwotCQlhcmctPnUu ZG9tYWluLmRvbWFpbl9pbmZvID0gTlVMTDsKKwkJYXJnLT5kb21haW4uZG9tYWluX2luZm8g PSBOVUxMOwogCQkvKiBSZWN1cnNpdmVseSBzZXQgdXAgY29udmVyc2lvbiBpbmZvIGZvciB0 aGUgZWxlbWVudCB0eXBlICovCi0JCWFyZy0+dS5kb21haW4uYmFzZSA9IChQTHlPYlRvRGF0 dW0gKikKKwkJYXJnLT5kb21haW4uYmFzZSA9IChQTHlPYlRvRGF0dW0gKikKIAkJCU1lbW9y eUNvbnRleHRBbGxvY1plcm8oYXJnX21jeHQsIHNpemVvZihQTHlPYlRvRGF0dW0pKTsKLQkJ UEx5X291dHB1dF9zZXR1cF9mdW5jKGFyZy0+dS5kb21haW4uYmFzZSwgYXJnX21jeHQsCisJ CVBMeV9vdXRwdXRfc2V0dXBfZnVuYyhhcmctPmRvbWFpbi5iYXNlLCBhcmdfbWN4dCwKIAkJ CQkJCQkgIHR5cGVudHJ5LT5kb21haW5CYXNlVHlwZSwKIAkJCQkJCQkgIHR5cGVudHJ5LT5k b21haW5CYXNlVHlwbW9kLAogCQkJCQkJCSAgcHJvYyk7CkBAIC0zNTksMTEgKzM1OSwxMSBA QCBQTHlfb3V0cHV0X3NldHVwX2Z1bmMoUEx5T2JUb0RhdHVtICphcmcsIE1lbW9yeUNvbnRl eHQgYXJnX21jeHQsCiAJCWFyZy0+ZnVuYyA9IFBMeVNlcXVlbmNlX1RvQXJyYXk7CiAJCS8q IEdldCBiYXNlIHR5cGUgT0lEIHRvIGluc2VydCBpbnRvIGNvbnN0cnVjdGVkIGFycmF5ICov CiAJCS8qIChub3RlIHRoaXMgbWlnaHQgbm90IGJlIHRoZSBzYW1lIGFzIHRoZSBpbW1lZGlh dGUgY2hpbGQgdHlwZSkgKi8KLQkJYXJnLT51LmFycmF5LmVsbWJhc2V0eXBlID0gZ2V0QmFz ZVR5cGUodHlwZW50cnktPnR5cGVsZW0pOworCQlhcmctPmFycmF5LmVsbWJhc2V0eXBlID0g Z2V0QmFzZVR5cGUodHlwZW50cnktPnR5cGVsZW0pOwogCQkvKiBSZWN1cnNpdmVseSBzZXQg dXAgY29udmVyc2lvbiBpbmZvIGZvciB0aGUgZWxlbWVudCB0eXBlICovCi0JCWFyZy0+dS5h cnJheS5lbG0gPSAoUEx5T2JUb0RhdHVtICopCisJCWFyZy0+YXJyYXkuZWxtID0gKFBMeU9i VG9EYXR1bSAqKQogCQkJTWVtb3J5Q29udGV4dEFsbG9jWmVybyhhcmdfbWN4dCwgc2l6ZW9m KFBMeU9iVG9EYXR1bSkpOwotCQlQTHlfb3V0cHV0X3NldHVwX2Z1bmMoYXJnLT51LmFycmF5 LmVsbSwgYXJnX21jeHQsCisJCVBMeV9vdXRwdXRfc2V0dXBfZnVuYyhhcmctPmFycmF5LmVs bSwgYXJnX21jeHQsCiAJCQkJCQkJICB0eXBlbnRyeS0+dHlwZWxlbSwgdHlwbW9kLAogCQkJ CQkJCSAgcHJvYyk7CiAJfQpAQCAtMzcyLDIwICszNzIsMjAgQEAgUEx5X291dHB1dF9zZXR1 cF9mdW5jKFBMeU9iVG9EYXR1bSAqYXJnLCBNZW1vcnlDb250ZXh0IGFyZ19tY3h0LAogCQkJ CQkJCQkJCQkgcHJvYy0+dHJmdHlwZXMpKSkKIAl7CiAJCWFyZy0+ZnVuYyA9IFBMeU9iamVj dF9Ub1RyYW5zZm9ybTsKLQkJZm1ncl9pbmZvX2N4dCh0cmZ1bmNpZCwgJmFyZy0+dS50cmFu c2Zvcm0udHlwdHJhbnNmb3JtLCBhcmdfbWN4dCk7CisJCWZtZ3JfaW5mb19jeHQodHJmdW5j aWQsICZhcmctPnRyYW5zZm9ybS50eXB0cmFuc2Zvcm0sIGFyZ19tY3h0KTsKIAl9CiAJZWxz ZSBpZiAodHlwdHlwZSA9PSBUWVBUWVBFX0NPTVBPU0lURSkKIAl7CiAJCS8qIE5hbWVkIGNv bXBvc2l0ZSB0eXBlLCBvciBSRUNPUkQgKi8KIAkJYXJnLT5mdW5jID0gUEx5T2JqZWN0X1Rv Q29tcG9zaXRlOwogCQkvKiBXZSdsbCBzZXQgdXAgdGhlIHBlci1maWVsZCBkYXRhIGxhdGVy ICovCi0JCWFyZy0+dS50dXBsZS5yZWNkZXNjID0gTlVMTDsKLQkJYXJnLT51LnR1cGxlLnR5 cGVudHJ5ID0gdHlwZW50cnk7Ci0JCWFyZy0+dS50dXBsZS50dXBkZXNjaWQgPSBJTlZBTElE X1RVUExFREVTQ19JREVOVElGSUVSOwotCQlhcmctPnUudHVwbGUuYXR0cyA9IE5VTEw7Ci0J CWFyZy0+dS50dXBsZS5uYXR0cyA9IDA7CisJCWFyZy0+dHVwbGUucmVjZGVzYyA9IE5VTEw7 CisJCWFyZy0+dHVwbGUudHlwZW50cnkgPSB0eXBlbnRyeTsKKwkJYXJnLT50dXBsZS50dXBk ZXNjaWQgPSBJTlZBTElEX1RVUExFREVTQ19JREVOVElGSUVSOworCQlhcmctPnR1cGxlLmF0 dHMgPSBOVUxMOworCQlhcmctPnR1cGxlLm5hdHRzID0gMDsKIAkJLyogTWFyayB0aGlzIGlu dmFsaWQgdGlsbCBuZWVkZWQsIHRvbyAqLwotCQlhcmctPnUudHVwbGUucmVjaW5mdW5jLmZu X29pZCA9IEludmFsaWRPaWQ7CisJCWFyZy0+dHVwbGUucmVjaW5mdW5jLmZuX29pZCA9IElu dmFsaWRPaWQ7CiAJfQogCWVsc2UKIAl7CkBAIC00MDAsOCArNDAwLDggQEAgUEx5X291dHB1 dF9zZXR1cF9mdW5jKFBMeU9iVG9EYXR1bSAqYXJnLCBNZW1vcnlDb250ZXh0IGFyZ19tY3h0 LAogCQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKIAkJCQlhcmctPmZ1bmMgPSBQTHlPYmplY3Rf VG9TY2FsYXI7Ci0JCQkJZ2V0VHlwZUlucHV0SW5mbyh0eXBlT2lkLCAmdHlwaW5wdXQsICZh cmctPnUuc2NhbGFyLnR5cGlvcGFyYW0pOwotCQkJCWZtZ3JfaW5mb19jeHQodHlwaW5wdXQs ICZhcmctPnUuc2NhbGFyLnR5cGZ1bmMsIGFyZ19tY3h0KTsKKwkJCQlnZXRUeXBlSW5wdXRJ bmZvKHR5cGVPaWQsICZ0eXBpbnB1dCwgJmFyZy0+c2NhbGFyLnR5cGlvcGFyYW0pOworCQkJ CWZtZ3JfaW5mb19jeHQodHlwaW5wdXQsICZhcmctPnNjYWxhci50eXBmdW5jLCBhcmdfbWN4 dCk7CiAJCQkJYnJlYWs7CiAJCX0KIAl9CkBAIC00NzYsOSArNDc2LDkgQEAgUEx5X2lucHV0 X3NldHVwX2Z1bmMoUEx5RGF0dW1Ub09iICphcmcsIE1lbW9yeUNvbnRleHQgYXJnX21jeHQs CiAJCS8qIFN0YW5kYXJkIGFycmF5ICovCiAJCWFyZy0+ZnVuYyA9IFBMeUxpc3RfRnJvbUFy cmF5OwogCQkvKiBSZWN1cnNpdmVseSBzZXQgdXAgY29udmVyc2lvbiBpbmZvIGZvciB0aGUg ZWxlbWVudCB0eXBlICovCi0JCWFyZy0+dS5hcnJheS5lbG0gPSAoUEx5RGF0dW1Ub09iICop CisJCWFyZy0+YXJyYXkuZWxtID0gKFBMeURhdHVtVG9PYiAqKQogCQkJTWVtb3J5Q29udGV4 dEFsbG9jWmVybyhhcmdfbWN4dCwgc2l6ZW9mKFBMeURhdHVtVG9PYikpOwotCQlQTHlfaW5w dXRfc2V0dXBfZnVuYyhhcmctPnUuYXJyYXkuZWxtLCBhcmdfbWN4dCwKKwkJUEx5X2lucHV0 X3NldHVwX2Z1bmMoYXJnLT5hcnJheS5lbG0sIGFyZ19tY3h0LAogCQkJCQkJCSB0eXBlbnRy eS0+dHlwZWxlbSwgdHlwbW9kLAogCQkJCQkJCSBwcm9jKTsKIAl9CkBAIC00ODcsMTggKzQ4 NywxOCBAQCBQTHlfaW5wdXRfc2V0dXBfZnVuYyhQTHlEYXR1bVRvT2IgKmFyZywgTWVtb3J5 Q29udGV4dCBhcmdfbWN4dCwKIAkJCQkJCQkJCQkJICAgcHJvYy0+dHJmdHlwZXMpKSkKIAl7 CiAJCWFyZy0+ZnVuYyA9IFBMeU9iamVjdF9Gcm9tVHJhbnNmb3JtOwotCQlmbWdyX2luZm9f Y3h0KHRyZnVuY2lkLCAmYXJnLT51LnRyYW5zZm9ybS50eXB0cmFuc2Zvcm0sIGFyZ19tY3h0 KTsKKwkJZm1ncl9pbmZvX2N4dCh0cmZ1bmNpZCwgJmFyZy0+dHJhbnNmb3JtLnR5cHRyYW5z Zm9ybSwgYXJnX21jeHQpOwogCX0KIAllbHNlIGlmICh0eXB0eXBlID09IFRZUFRZUEVfQ09N UE9TSVRFKQogCXsKIAkJLyogTmFtZWQgY29tcG9zaXRlIHR5cGUsIG9yIFJFQ09SRCAqLwog CQlhcmctPmZ1bmMgPSBQTHlEaWN0X0Zyb21Db21wb3NpdGU7CiAJCS8qIFdlJ2xsIHNldCB1 cCB0aGUgcGVyLWZpZWxkIGRhdGEgbGF0ZXIgKi8KLQkJYXJnLT51LnR1cGxlLnJlY2Rlc2Mg PSBOVUxMOwotCQlhcmctPnUudHVwbGUudHlwZW50cnkgPSB0eXBlbnRyeTsKLQkJYXJnLT51 LnR1cGxlLnR1cGRlc2NpZCA9IElOVkFMSURfVFVQTEVERVNDX0lERU5USUZJRVI7Ci0JCWFy Zy0+dS50dXBsZS5hdHRzID0gTlVMTDsKLQkJYXJnLT51LnR1cGxlLm5hdHRzID0gMDsKKwkJ YXJnLT50dXBsZS5yZWNkZXNjID0gTlVMTDsKKwkJYXJnLT50dXBsZS50eXBlbnRyeSA9IHR5 cGVudHJ5OworCQlhcmctPnR1cGxlLnR1cGRlc2NpZCA9IElOVkFMSURfVFVQTEVERVNDX0lE RU5USUZJRVI7CisJCWFyZy0+dHVwbGUuYXR0cyA9IE5VTEw7CisJCWFyZy0+dHVwbGUubmF0 dHMgPSAwOwogCX0KIAllbHNlCiAJewpAQCAtNTM1LDcgKzUzNSw3IEBAIFBMeV9pbnB1dF9z ZXR1cF9mdW5jKFBMeURhdHVtVG9PYiAqYXJnLCBNZW1vcnlDb250ZXh0IGFyZ19tY3h0LAog CQkJZGVmYXVsdDoKIAkJCQlhcmctPmZ1bmMgPSBQTHlVbmljb2RlX0Zyb21TY2FsYXI7CiAJ CQkJZ2V0VHlwZU91dHB1dEluZm8odHlwZU9pZCwgJnR5cG91dHB1dCwgJnR5cGlzdmFybGVu YSk7Ci0JCQkJZm1ncl9pbmZvX2N4dCh0eXBvdXRwdXQsICZhcmctPnUuc2NhbGFyLnR5cGZ1 bmMsIGFyZ19tY3h0KTsKKwkJCQlmbWdyX2luZm9fY3h0KHR5cG91dHB1dCwgJmFyZy0+c2Nh bGFyLnR5cGZ1bmMsIGFyZ19tY3h0KTsKIAkJCQlicmVhazsKIAkJfQogCX0KQEAgLTY0MSw3 ICs2NDEsNyBAQCBQTHlCeXRlc19Gcm9tQnl0ZWEoUEx5RGF0dW1Ub09iICphcmcsIERhdHVt IGQpCiBzdGF0aWMgUHlPYmplY3QgKgogUEx5VW5pY29kZV9Gcm9tU2NhbGFyKFBMeURhdHVt VG9PYiAqYXJnLCBEYXR1bSBkKQogewotCWNoYXIJICAgKnggPSBPdXRwdXRGdW5jdGlvbkNh bGwoJmFyZy0+dS5zY2FsYXIudHlwZnVuYywgZCk7CisJY2hhcgkgICAqeCA9IE91dHB1dEZ1 bmN0aW9uQ2FsbCgmYXJnLT5zY2FsYXIudHlwZnVuYywgZCk7CiAJUHlPYmplY3QgICAqciA9 IFBMeVVuaWNvZGVfRnJvbVN0cmluZyh4KTsKIAogCXBmcmVlKHgpOwpAQCAtNjU2LDcgKzY1 Niw3IEBAIFBMeU9iamVjdF9Gcm9tVHJhbnNmb3JtKFBMeURhdHVtVG9PYiAqYXJnLCBEYXR1 bSBkKQogewogCURhdHVtCQl0OwogCi0JdCA9IEZ1bmN0aW9uQ2FsbDEoJmFyZy0+dS50cmFu c2Zvcm0udHlwdHJhbnNmb3JtLCBkKTsKKwl0ID0gRnVuY3Rpb25DYWxsMSgmYXJnLT50cmFu c2Zvcm0udHlwdHJhbnNmb3JtLCBkKTsKIAlyZXR1cm4gKFB5T2JqZWN0ICopIERhdHVtR2V0 UG9pbnRlcih0KTsKIH0KIApAQCAtNjY3LDcgKzY2Nyw3IEBAIHN0YXRpYyBQeU9iamVjdCAq CiBQTHlMaXN0X0Zyb21BcnJheShQTHlEYXR1bVRvT2IgKmFyZywgRGF0dW0gZCkKIHsKIAlB cnJheVR5cGUgICphcnJheSA9IERhdHVtR2V0QXJyYXlUeXBlUChkKTsKLQlQTHlEYXR1bVRv T2IgKmVsbSA9IGFyZy0+dS5hcnJheS5lbG07CisJUEx5RGF0dW1Ub09iICplbG0gPSBhcmct PmFycmF5LmVsbTsKIAlpbnQJCQluZGltOwogCWludAkJICAgKmRpbXM7CiAJY2hhcgkgICAq ZGF0YXB0cjsKQEAgLTgxNyw3ICs4MTcsNyBAQCBQTHlEaWN0X0Zyb21UdXBsZShQTHlEYXR1 bVRvT2IgKmFyZywgSGVhcFR1cGxlIHR1cGxlLCBUdXBsZURlc2MgZGVzYywgYm9vbCBpbmNs dQogCVB5T2JqZWN0ICAgKnZvbGF0aWxlIGRpY3Q7CiAKIAkvKiBTaW1wbGUgc2FuaXR5IGNo ZWNrIHRoYXQgZGVzYyBtYXRjaGVzICovCi0JQXNzZXJ0KGRlc2MtPm5hdHRzID09IGFyZy0+ dS50dXBsZS5uYXR0cyk7CisJQXNzZXJ0KGRlc2MtPm5hdHRzID09IGFyZy0+dHVwbGUubmF0 dHMpOwogCiAJZGljdCA9IFB5RGljdF9OZXcoKTsKIAlpZiAoZGljdCA9PSBOVUxMKQpAQCAt ODI3LDkgKzgyNyw5IEBAIFBMeURpY3RfRnJvbVR1cGxlKFBMeURhdHVtVG9PYiAqYXJnLCBI ZWFwVHVwbGUgdHVwbGUsIFR1cGxlRGVzYyBkZXNjLCBib29sIGluY2x1CiAJewogCQlpbnQJ CQlpOwogCi0JCWZvciAoaSA9IDA7IGkgPCBhcmctPnUudHVwbGUubmF0dHM7IGkrKykKKwkJ Zm9yIChpID0gMDsgaSA8IGFyZy0+dHVwbGUubmF0dHM7IGkrKykKIAkJewotCQkJUEx5RGF0 dW1Ub09iICphdHQgPSAmYXJnLT51LnR1cGxlLmF0dHNbaV07CisJCQlQTHlEYXR1bVRvT2Ig KmF0dCA9ICZhcmctPnR1cGxlLmF0dHNbaV07CiAJCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRy ID0gVHVwbGVEZXNjQXR0cihkZXNjLCBpKTsKIAkJCWNoYXIJICAgKmtleTsKIAkJCURhdHVt CQl2YXR0cjsKQEAgLTk3MSwyMiArOTcxLDIyIEBAIFBMeU9iamVjdF9Ub0NvbXBvc2l0ZShQ THlPYlRvRGF0dW0gKmFyZywgUHlPYmplY3QgKnBscnYsCiAJewogCQlkZXNjID0gbG9va3Vw X3Jvd3R5cGVfdHVwZGVzYyhhcmctPnR5cG9pZCwgYXJnLT50eXBtb2QpOwogCQkvKiBXZSBz aG91bGQgaGF2ZSB0aGUgZGVzY3JpcHRvciBvZiB0aGUgdHlwZSdzIHR5cGNhY2hlIGVudHJ5 ICovCi0JCUFzc2VydChkZXNjID09IGFyZy0+dS50dXBsZS50eXBlbnRyeS0+dHVwRGVzYyk7 CisJCUFzc2VydChkZXNjID09IGFyZy0+dHVwbGUudHlwZW50cnktPnR1cERlc2MpOwogCQkv KiBEZXRlY3QgY2hhbmdlIG9mIGRlc2NyaXB0b3IsIHVwZGF0ZSBjYWNoZSBpZiBuZWVkZWQg Ki8KLQkJaWYgKGFyZy0+dS50dXBsZS50dXBkZXNjaWQgIT0gYXJnLT51LnR1cGxlLnR5cGVu dHJ5LT50dXBEZXNjX2lkZW50aWZpZXIpCisJCWlmIChhcmctPnR1cGxlLnR1cGRlc2NpZCAh PSBhcmctPnR1cGxlLnR5cGVudHJ5LT50dXBEZXNjX2lkZW50aWZpZXIpCiAJCXsKIAkJCVBM eV9vdXRwdXRfc2V0dXBfdHVwbGUoYXJnLCBkZXNjLAogCQkJCQkJCQkgICBQTHlfY3VycmVu dF9leGVjdXRpb25fY29udGV4dCgpLT5jdXJyX3Byb2MpOwotCQkJYXJnLT51LnR1cGxlLnR1 cGRlc2NpZCA9IGFyZy0+dS50dXBsZS50eXBlbnRyeS0+dHVwRGVzY19pZGVudGlmaWVyOwor CQkJYXJnLT50dXBsZS50dXBkZXNjaWQgPSBhcmctPnR1cGxlLnR5cGVudHJ5LT50dXBEZXNj X2lkZW50aWZpZXI7CiAJCX0KIAl9CiAJZWxzZQogCXsKLQkJZGVzYyA9IGFyZy0+dS50dXBs ZS5yZWNkZXNjOworCQlkZXNjID0gYXJnLT50dXBsZS5yZWNkZXNjOwogCQlpZiAoZGVzYyA9 PSBOVUxMKQogCQl7CiAJCQlkZXNjID0gbG9va3VwX3Jvd3R5cGVfdHVwZGVzYyhhcmctPnR5 cG9pZCwgYXJnLT50eXBtb2QpOwotCQkJYXJnLT51LnR1cGxlLnJlY2Rlc2MgPSBkZXNjOwor CQkJYXJnLT50dXBsZS5yZWNkZXNjID0gZGVzYzsKIAkJfQogCQllbHNlCiAJCXsKQEAgLTk5 Niw3ICs5OTYsNyBAQCBQTHlPYmplY3RfVG9Db21wb3NpdGUoUEx5T2JUb0RhdHVtICphcmcs IFB5T2JqZWN0ICpwbHJ2LAogCX0KIAogCS8qIFNpbXBsZSBzYW5pdHkgY2hlY2sgb24gb3Vy IGNhY2hpbmcgKi8KLQlBc3NlcnQoZGVzYy0+bmF0dHMgPT0gYXJnLT51LnR1cGxlLm5hdHRz KTsKKwlBc3NlcnQoZGVzYy0+bmF0dHMgPT0gYXJnLT50dXBsZS5uYXR0cyk7CiAKIAkvKgog CSAqIENvbnZlcnQsIHVzaW5nIHRoZSBhcHByb3ByaWF0ZSBtZXRob2QgZGVwZW5kaW5nIG9u IHRoZSB0eXBlIG9mIHRoZQpAQCAtMTA4OCw5ICsxMDg4LDkgQEAgUEx5T2JqZWN0X1RvU2Nh bGFyKFBMeU9iVG9EYXR1bSAqYXJnLCBQeU9iamVjdCAqcGxydiwKIAogCXN0ciA9IFBMeU9i amVjdF9Bc1N0cmluZyhwbHJ2KTsKIAotCXJldHVybiBJbnB1dEZ1bmN0aW9uQ2FsbCgmYXJn LT51LnNjYWxhci50eXBmdW5jLAorCXJldHVybiBJbnB1dEZ1bmN0aW9uQ2FsbCgmYXJnLT5z Y2FsYXIudHlwZnVuYywKIAkJCQkJCQkgc3RyLAotCQkJCQkJCSBhcmctPnUuc2NhbGFyLnR5 cGlvcGFyYW0sCisJCQkJCQkJIGFyZy0+c2NhbGFyLnR5cGlvcGFyYW0sCiAJCQkJCQkJIGFy Zy0+dHlwbW9kKTsKIH0KIApAQCAtMTEwMywxMSArMTEwMywxMSBAQCBQTHlPYmplY3RfVG9E b21haW4oUEx5T2JUb0RhdHVtICphcmcsIFB5T2JqZWN0ICpwbHJ2LAogCQkJCSAgIGJvb2wg KmlzbnVsbCwgYm9vbCBpbmFycmF5KQogewogCURhdHVtCQlyZXN1bHQ7Ci0JUEx5T2JUb0Rh dHVtICpiYXNlID0gYXJnLT51LmRvbWFpbi5iYXNlOworCVBMeU9iVG9EYXR1bSAqYmFzZSA9 IGFyZy0+ZG9tYWluLmJhc2U7CiAKIAlyZXN1bHQgPSBiYXNlLT5mdW5jKGJhc2UsIHBscnYs IGlzbnVsbCwgaW5hcnJheSk7CiAJZG9tYWluX2NoZWNrKHJlc3VsdCwgKmlzbnVsbCwgYXJn LT50eXBvaWQsCi0JCQkJICZhcmctPnUuZG9tYWluLmRvbWFpbl9pbmZvLCBhcmctPm1jeHQp OworCQkJCSAmYXJnLT5kb21haW4uZG9tYWluX2luZm8sIGFyZy0+bWN4dCk7CiAJcmV0dXJu IHJlc3VsdDsKIH0KIApAQCAtMTEyNSw3ICsxMTI1LDcgQEAgUEx5T2JqZWN0X1RvVHJhbnNm b3JtKFBMeU9iVG9EYXR1bSAqYXJnLCBQeU9iamVjdCAqcGxydiwKIAkJcmV0dXJuIChEYXR1 bSkgMDsKIAl9CiAJKmlzbnVsbCA9IGZhbHNlOwotCXJldHVybiBGdW5jdGlvbkNhbGwxKCZh cmctPnUudHJhbnNmb3JtLnR5cHRyYW5zZm9ybSwgUG9pbnRlckdldERhdHVtKHBscnYpKTsK KwlyZXR1cm4gRnVuY3Rpb25DYWxsMSgmYXJnLT50cmFuc2Zvcm0udHlwdHJhbnNmb3JtLCBQ b2ludGVyR2V0RGF0dW0ocGxydikpOwogfQogCiAKQEAgLTExNjksMTIgKzExNjksMTIgQEAg UEx5U2VxdWVuY2VfVG9BcnJheShQTHlPYlRvRGF0dW0gKmFyZywgUHlPYmplY3QgKnBscnYs CiAJICovCiAJUEx5U2VxdWVuY2VfVG9BcnJheV9yZWN1cnNlKHBscnYsICZhc3RhdGUsCiAJ CQkJCQkJCSZuZGltcywgZGltcywgMSwKLQkJCQkJCQkJYXJnLT51LmFycmF5LmVsbSwKLQkJ CQkJCQkJYXJnLT51LmFycmF5LmVsbWJhc2V0eXBlKTsKKwkJCQkJCQkJYXJnLT5hcnJheS5l bG0sCisJCQkJCQkJCWFyZy0+YXJyYXkuZWxtYmFzZXR5cGUpOwogCiAJLyogZW5zdXJlIHdl IGdldCB6ZXJvLUQgYXJyYXkgZm9yIG5vIGlucHV0cywgYXMgcGVyIFBHIGNvbnZlbnRpb24g Ki8KIAlpZiAoYXN0YXRlID09IE5VTEwpCi0JCXJldHVybiBQb2ludGVyR2V0RGF0dW0oY29u c3RydWN0X2VtcHR5X2FycmF5KGFyZy0+dS5hcnJheS5lbG1iYXNldHlwZSkpOworCQlyZXR1 cm4gUG9pbnRlckdldERhdHVtKGNvbnN0cnVjdF9lbXB0eV9hcnJheShhcmctPmFycmF5LmVs bWJhc2V0eXBlKSk7CiAKIAlmb3IgKGludCBpID0gMDsgaSA8IG5kaW1zOyBpKyspCiAJCWxi c1tpXSA9IDE7CkBAIC0xMjg5LDggKzEyODksOCBAQCBQTHlVbmljb2RlX1RvQ29tcG9zaXRl KFBMeU9iVG9EYXR1bSAqYXJnLCBQeU9iamVjdCAqc3RyaW5nLCBib29sIGluYXJyYXkpCiAJ ICogU2V0IHVwIGNhbGwgZGF0YSBmb3IgcmVjb3JkX2luLCBpZiB3ZSBkaWRuJ3QgYWxyZWFk eS4gIChXZSBjYW4ndCBqdXN0CiAJICogdXNlIERpcmVjdEZ1bmN0aW9uQ2FsbCwgYmVjYXVz ZSByZWNvcmRfaW4gbmVlZHMgYSBmbl9leHRyYSBmaWVsZC4pCiAJICovCi0JaWYgKCFPaWRJ c1ZhbGlkKGFyZy0+dS50dXBsZS5yZWNpbmZ1bmMuZm5fb2lkKSkKLQkJZm1ncl9pbmZvX2N4 dChGX1JFQ09SRF9JTiwgJmFyZy0+dS50dXBsZS5yZWNpbmZ1bmMsIGFyZy0+bWN4dCk7CisJ aWYgKCFPaWRJc1ZhbGlkKGFyZy0+dHVwbGUucmVjaW5mdW5jLmZuX29pZCkpCisJCWZtZ3Jf aW5mb19jeHQoRl9SRUNPUkRfSU4sICZhcmctPnR1cGxlLnJlY2luZnVuYywgYXJnLT5tY3h0 KTsKIAogCXN0ciA9IFBMeU9iamVjdF9Bc1N0cmluZyhzdHJpbmcpOwogCkBAIC0xMzM0LDcg KzEzMzQsNyBAQCBQTHlVbmljb2RlX1RvQ29tcG9zaXRlKFBMeU9iVG9EYXR1bSAqYXJnLCBQ eU9iamVjdCAqc3RyaW5nLCBib29sIGluYXJyYXkpCiAJCQkJCSBlcnJoaW50KCJUbyByZXR1 cm4gYSBjb21wb3NpdGUgdHlwZSBpbiBhbiBhcnJheSwgcmV0dXJuIHRoZSBjb21wb3NpdGUg dHlwZSBhcyBhIFB5dGhvbiB0dXBsZSwgZS5nLiwgXCJbKCdmb28nLCldXCIuIikpKTsKIAl9 CiAKLQlyZXR1cm4gSW5wdXRGdW5jdGlvbkNhbGwoJmFyZy0+dS50dXBsZS5yZWNpbmZ1bmMs CisJcmV0dXJuIElucHV0RnVuY3Rpb25DYWxsKCZhcmctPnR1cGxlLnJlY2luZnVuYywKIAkJ CQkJCQkgc3RyLAogCQkJCQkJCSBhcmctPnR5cG9pZCwKIAkJCQkJCQkgYXJnLT50eXBtb2Qp OwpAQCAtMTM3MSw3ICsxMzcxLDcgQEAgUEx5TWFwcGluZ19Ub0NvbXBvc2l0ZShQTHlPYlRv RGF0dW0gKmFyZywgVHVwbGVEZXNjIGRlc2MsIFB5T2JqZWN0ICptYXBwaW5nKQogCiAJCWtl eSA9IE5hbWVTdHIoYXR0ci0+YXR0bmFtZSk7CiAJCXZhbHVlID0gTlVMTDsKLQkJYXR0ID0g JmFyZy0+dS50dXBsZS5hdHRzW2ldOworCQlhdHQgPSAmYXJnLT50dXBsZS5hdHRzW2ldOwog CQlQR19UUlkoKTsKIAkJewogCQkJdmFsdWUgPSBQeU1hcHBpbmdfR2V0SXRlbVN0cmluZyht YXBwaW5nLCBrZXkpOwpAQCAtMTQ1MSw3ICsxNDUxLDcgQEAgUEx5U2VxdWVuY2VfVG9Db21w b3NpdGUoUEx5T2JUb0RhdHVtICphcmcsIFR1cGxlRGVzYyBkZXNjLCBQeU9iamVjdCAqc2Vx dWVuY2UpCiAJCX0KIAogCQl2YWx1ZSA9IE5VTEw7Ci0JCWF0dCA9ICZhcmctPnUudHVwbGUu YXR0c1tpXTsKKwkJYXR0ID0gJmFyZy0+dHVwbGUuYXR0c1tpXTsKIAkJUEdfVFJZKCk7CiAJ CXsKIAkJCXZhbHVlID0gUHlTZXF1ZW5jZV9HZXRJdGVtKHNlcXVlbmNlLCBpZHgpOwpAQCAt MTUxMSw3ICsxNTExLDcgQEAgUEx5R2VuZXJpY09iamVjdF9Ub0NvbXBvc2l0ZShQTHlPYlRv RGF0dW0gKmFyZywgVHVwbGVEZXNjIGRlc2MsIFB5T2JqZWN0ICpvYmplY3QKIAogCQlrZXkg PSBOYW1lU3RyKGF0dHItPmF0dG5hbWUpOwogCQl2YWx1ZSA9IE5VTEw7Ci0JCWF0dCA9ICZh cmctPnUudHVwbGUuYXR0c1tpXTsKKwkJYXR0ID0gJmFyZy0+dHVwbGUuYXR0c1tpXTsKIAkJ UEdfVFJZKCk7CiAJCXsKIAkJCXZhbHVlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmpl Y3QsIGtleSk7CmRpZmYgLS1naXQgYS9zcmMvcGwvcGxweXRob24vcGxweV90eXBlaW8uaCBi L3NyYy9wbC9wbHB5dGhvbi9wbHB5X3R5cGVpby5oCmluZGV4IDU0MTdmMDk0NWQyLi4yOTI1 ODUwOWI1YyAxMDA2NDQKLS0tIGEvc3JjL3BsL3BscHl0aG9uL3BscHlfdHlwZWlvLmgKKysr IGIvc3JjL3BsL3BscHl0aG9uL3BscHlfdHlwZWlvLmgKQEAgLTY5LDcgKzY5LDcgQEAgc3Ry dWN0IFBMeURhdHVtVG9PYgogCQlQTHlBcnJheVRvT2IgYXJyYXk7CiAJCVBMeVR1cGxlVG9P YiB0dXBsZTsKIAkJUEx5VHJhbnNmb3JtVG9PYiB0cmFuc2Zvcm07Ci0JfQkJCXU7CisJfTsK IH07CiAKIC8qCkBAIC0xNDMsNyArMTQzLDcgQEAgc3RydWN0IFBMeU9iVG9EYXR1bQogCQlQ THlPYlRvVHVwbGUgdHVwbGU7CiAJCVBMeU9iVG9Eb21haW4gZG9tYWluOwogCQlQTHlPYlRv VHJhbnNmb3JtIHRyYW5zZm9ybTsKLQl9CQkJdTsKKwl9OwogfTsKIAogCi0tIAoyLjUxLjAK Cg== --------------XMilSvfSoQNhBmwudkXUWZaX Content-Type: text/plain; charset=UTF-8; name="0005-C11-anonymous-unions-libpq.patch" Content-Disposition: attachment; filename="0005-C11-anonymous-unions-libpq.patch" Content-Transfer-Encoding: base64 RnJvbSA0NzA5YzQwODIwYTI1MTUxYmM2NDI2ZDQzMzE5ZDc0NmVlMzg0MzcxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAyMiBTZXAgMjAyNSAxNDo0Nzo0OCArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMDUvMjNdIEMxMSBhbm9ueW1vdXMgdW5pb25zIFtsaWJwcV0KCi0tLQogc3Jj L2ludGVyZmFjZXMvbGlicHEvZmUtbG9iai5jICAgICAgfCA0NCArKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0tLQogc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtcHJvdG9jb2wzLmMgfCAg NCArLS0KIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWZlLmggICAgIHwgIDQgKy0tCiAz IGZpbGVzIGNoYW5nZWQsIDI2IGluc2VydGlvbnMoKyksIDI2IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWxvYmouYyBiL3NyYy9pbnRlcmZh Y2VzL2xpYnBxL2ZlLWxvYmouYwppbmRleCAwNWUxN2JlZDUwOC4uMTU0NmI3NzBmNmUgMTAw NjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWxvYmouYworKysgYi9zcmMvaW50 ZXJmYWNlcy9saWJwcS9mZS1sb2JqLmMKQEAgLTY2LDExICs2NiwxMSBAQCBsb19vcGVuKFBH Y29ubiAqY29ubiwgT2lkIGxvYmpJZCwgaW50IG1vZGUpCiAKIAlhcmd2WzBdLmlzaW50ID0g MTsKIAlhcmd2WzBdLmxlbiA9IDQ7Ci0JYXJndlswXS51LmludGVnZXIgPSBsb2JqSWQ7CisJ YXJndlswXS5pbnRlZ2VyID0gbG9iaklkOwogCiAJYXJndlsxXS5pc2ludCA9IDE7CiAJYXJn dlsxXS5sZW4gPSA0OwotCWFyZ3ZbMV0udS5pbnRlZ2VyID0gbW9kZTsKKwlhcmd2WzFdLmlu dGVnZXIgPSBtb2RlOwogCiAJcmVzID0gUFFmbihjb25uLCBjb25uLT5sb2JqZnVuY3MtPmZu X2xvX29wZW4sICZmZCwgJnJlc3VsdF9sZW4sIDEsIGFyZ3YsIDIpOwogCWlmIChQUXJlc3Vs dFN0YXR1cyhyZXMpID09IFBHUkVTX0NPTU1BTkRfT0spCkBAIC0xMDUsNyArMTA1LDcgQEAg bG9fY2xvc2UoUEdjb25uICpjb25uLCBpbnQgZmQpCiAKIAlhcmd2WzBdLmlzaW50ID0gMTsK IAlhcmd2WzBdLmxlbiA9IDQ7Ci0JYXJndlswXS51LmludGVnZXIgPSBmZDsKKwlhcmd2WzBd LmludGVnZXIgPSBmZDsKIAlyZXMgPSBQUWZuKGNvbm4sIGNvbm4tPmxvYmpmdW5jcy0+Zm5f bG9fY2xvc2UsCiAJCQkgICAmcmV0dmFsLCAmcmVzdWx0X2xlbiwgMSwgYXJndiwgMSk7CiAJ aWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgPT0gUEdSRVNfQ09NTUFORF9PSykKQEAgLTE2Mywx MSArMTYzLDExIEBAIGxvX3RydW5jYXRlKFBHY29ubiAqY29ubiwgaW50IGZkLCBzaXplX3Qg bGVuKQogCiAJYXJndlswXS5pc2ludCA9IDE7CiAJYXJndlswXS5sZW4gPSA0OwotCWFyZ3Zb MF0udS5pbnRlZ2VyID0gZmQ7CisJYXJndlswXS5pbnRlZ2VyID0gZmQ7CiAKIAlhcmd2WzFd LmlzaW50ID0gMTsKIAlhcmd2WzFdLmxlbiA9IDQ7Ci0JYXJndlsxXS51LmludGVnZXIgPSAo aW50KSBsZW47CisJYXJndlsxXS5pbnRlZ2VyID0gKGludCkgbGVuOwogCiAJcmVzID0gUFFm bihjb25uLCBjb25uLT5sb2JqZnVuY3MtPmZuX2xvX3RydW5jYXRlLAogCQkJICAgJnJldHZh bCwgJnJlc3VsdF9sZW4sIDEsIGFyZ3YsIDIpOwpAQCAtMjExLDEyICsyMTEsMTIgQEAgbG9f dHJ1bmNhdGU2NChQR2Nvbm4gKmNvbm4sIGludCBmZCwgaW50NjRfdCBsZW4pCiAKIAlhcmd2 WzBdLmlzaW50ID0gMTsKIAlhcmd2WzBdLmxlbiA9IDQ7Ci0JYXJndlswXS51LmludGVnZXIg PSBmZDsKKwlhcmd2WzBdLmludGVnZXIgPSBmZDsKIAogCWxlbiA9IGxvX2h0b242NChsZW4p OwogCWFyZ3ZbMV0uaXNpbnQgPSAwOwogCWFyZ3ZbMV0ubGVuID0gODsKLQlhcmd2WzFdLnUu cHRyID0gKGludCAqKSAmbGVuOworCWFyZ3ZbMV0ucHRyID0gKGludCAqKSAmbGVuOwogCiAJ cmVzID0gUFFmbihjb25uLCBjb25uLT5sb2JqZnVuY3MtPmZuX2xvX3RydW5jYXRlNjQsCiAJ CQkgICAmcmV0dmFsLCAmcmVzdWx0X2xlbiwgMSwgYXJndiwgMik7CkBAIC0yNjUsMTEgKzI2 NSwxMSBAQCBsb19yZWFkKFBHY29ubiAqY29ubiwgaW50IGZkLCBjaGFyICpidWYsIHNpemVf dCBsZW4pCiAKIAlhcmd2WzBdLmlzaW50ID0gMTsKIAlhcmd2WzBdLmxlbiA9IDQ7Ci0JYXJn dlswXS51LmludGVnZXIgPSBmZDsKKwlhcmd2WzBdLmludGVnZXIgPSBmZDsKIAogCWFyZ3Zb MV0uaXNpbnQgPSAxOwogCWFyZ3ZbMV0ubGVuID0gNDsKLQlhcmd2WzFdLnUuaW50ZWdlciA9 IChpbnQpIGxlbjsKKwlhcmd2WzFdLmludGVnZXIgPSAoaW50KSBsZW47CiAKIAlyZXMgPSBQ UWZuKGNvbm4sIGNvbm4tPmxvYmpmdW5jcy0+Zm5fbG9fcmVhZCwKIAkJCSAgICh2b2lkICop IGJ1ZiwgJnJlc3VsdF9sZW4sIDAsIGFyZ3YsIDIpOwpAQCAtMzE2LDExICszMTYsMTEgQEAg bG9fd3JpdGUoUEdjb25uICpjb25uLCBpbnQgZmQsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90 IGxlbikKIAogCWFyZ3ZbMF0uaXNpbnQgPSAxOwogCWFyZ3ZbMF0ubGVuID0gNDsKLQlhcmd2 WzBdLnUuaW50ZWdlciA9IGZkOworCWFyZ3ZbMF0uaW50ZWdlciA9IGZkOwogCiAJYXJndlsx XS5pc2ludCA9IDA7CiAJYXJndlsxXS5sZW4gPSAoaW50KSBsZW47Ci0JYXJndlsxXS51LnB0 ciA9IChpbnQgKikgdW5jb25zdGlmeShjaGFyICosIGJ1Zik7CisJYXJndlsxXS5wdHIgPSAo aW50ICopIHVuY29uc3RpZnkoY2hhciAqLCBidWYpOwogCiAJcmVzID0gUFFmbihjb25uLCBj b25uLT5sb2JqZnVuY3MtPmZuX2xvX3dyaXRlLAogCQkJICAgJnJldHZhbCwgJnJlc3VsdF9s ZW4sIDEsIGFyZ3YsIDIpOwpAQCAtMzUzLDE1ICszNTMsMTUgQEAgbG9fbHNlZWsoUEdjb25u ICpjb25uLCBpbnQgZmQsIGludCBvZmZzZXQsIGludCB3aGVuY2UpCiAKIAlhcmd2WzBdLmlz aW50ID0gMTsKIAlhcmd2WzBdLmxlbiA9IDQ7Ci0JYXJndlswXS51LmludGVnZXIgPSBmZDsK Kwlhcmd2WzBdLmludGVnZXIgPSBmZDsKIAogCWFyZ3ZbMV0uaXNpbnQgPSAxOwogCWFyZ3Zb MV0ubGVuID0gNDsKLQlhcmd2WzFdLnUuaW50ZWdlciA9IG9mZnNldDsKKwlhcmd2WzFdLmlu dGVnZXIgPSBvZmZzZXQ7CiAKIAlhcmd2WzJdLmlzaW50ID0gMTsKIAlhcmd2WzJdLmxlbiA9 IDQ7Ci0JYXJndlsyXS51LmludGVnZXIgPSB3aGVuY2U7CisJYXJndlsyXS5pbnRlZ2VyID0g d2hlbmNlOwogCiAJcmVzID0gUFFmbihjb25uLCBjb25uLT5sb2JqZnVuY3MtPmZuX2xvX2xz ZWVrLAogCQkJICAgJnJldHZhbCwgJnJlc3VsdF9sZW4sIDEsIGFyZ3YsIDMpOwpAQCAtNDAx LDE2ICs0MDEsMTYgQEAgbG9fbHNlZWs2NChQR2Nvbm4gKmNvbm4sIGludCBmZCwgaW50NjRf dCBvZmZzZXQsIGludCB3aGVuY2UpCiAKIAlhcmd2WzBdLmlzaW50ID0gMTsKIAlhcmd2WzBd LmxlbiA9IDQ7Ci0JYXJndlswXS51LmludGVnZXIgPSBmZDsKKwlhcmd2WzBdLmludGVnZXIg PSBmZDsKIAogCW9mZnNldCA9IGxvX2h0b242NChvZmZzZXQpOwogCWFyZ3ZbMV0uaXNpbnQg PSAwOwogCWFyZ3ZbMV0ubGVuID0gODsKLQlhcmd2WzFdLnUucHRyID0gKGludCAqKSAmb2Zm c2V0OworCWFyZ3ZbMV0ucHRyID0gKGludCAqKSAmb2Zmc2V0OwogCiAJYXJndlsyXS5pc2lu dCA9IDE7CiAJYXJndlsyXS5sZW4gPSA0OwotCWFyZ3ZbMl0udS5pbnRlZ2VyID0gd2hlbmNl OworCWFyZ3ZbMl0uaW50ZWdlciA9IHdoZW5jZTsKIAogCXJlcyA9IFBRZm4oY29ubiwgY29u bi0+bG9iamZ1bmNzLT5mbl9sb19sc2VlazY0LAogCQkJICAgKHZvaWQgKikgJnJldHZhbCwg JnJlc3VsdF9sZW4sIDAsIGFyZ3YsIDMpOwpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIGxvX2NyZWF0 KFBHY29ubiAqY29ubiwgaW50IG1vZGUpCiAKIAlhcmd2WzBdLmlzaW50ID0gMTsKIAlhcmd2 WzBdLmxlbiA9IDQ7Ci0JYXJndlswXS51LmludGVnZXIgPSBtb2RlOworCWFyZ3ZbMF0uaW50 ZWdlciA9IG1vZGU7CiAJcmVzID0gUFFmbihjb25uLCBjb25uLT5sb2JqZnVuY3MtPmZuX2xv X2NyZWF0LAogCQkJICAgJnJldHZhbCwgJnJlc3VsdF9sZW4sIDEsIGFyZ3YsIDEpOwogCWlm IChQUXJlc3VsdFN0YXR1cyhyZXMpID09IFBHUkVTX0NPTU1BTkRfT0spCkBAIC00OTEsNyAr NDkxLDcgQEAgbG9fY3JlYXRlKFBHY29ubiAqY29ubiwgT2lkIGxvYmpJZCkKIAogCWFyZ3Zb MF0uaXNpbnQgPSAxOwogCWFyZ3ZbMF0ubGVuID0gNDsKLQlhcmd2WzBdLnUuaW50ZWdlciA9 IGxvYmpJZDsKKwlhcmd2WzBdLmludGVnZXIgPSBsb2JqSWQ7CiAJcmVzID0gUFFmbihjb25u LCBjb25uLT5sb2JqZnVuY3MtPmZuX2xvX2NyZWF0ZSwKIAkJCSAgICZyZXR2YWwsICZyZXN1 bHRfbGVuLCAxLCBhcmd2LCAxKTsKIAlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSA9PSBQR1JF U19DT01NQU5EX09LKQpAQCAtNTI0LDcgKzUyNCw3IEBAIGxvX3RlbGwoUEdjb25uICpjb25u LCBpbnQgZmQpCiAKIAlhcmd2WzBdLmlzaW50ID0gMTsKIAlhcmd2WzBdLmxlbiA9IDQ7Ci0J YXJndlswXS51LmludGVnZXIgPSBmZDsKKwlhcmd2WzBdLmludGVnZXIgPSBmZDsKIAogCXJl cyA9IFBRZm4oY29ubiwgY29ubi0+bG9iamZ1bmNzLT5mbl9sb190ZWxsLAogCQkJICAgJnJl dHZhbCwgJnJlc3VsdF9sZW4sIDEsIGFyZ3YsIDEpOwpAQCAtNTY0LDcgKzU2NCw3IEBAIGxv X3RlbGw2NChQR2Nvbm4gKmNvbm4sIGludCBmZCkKIAogCWFyZ3ZbMF0uaXNpbnQgPSAxOwog CWFyZ3ZbMF0ubGVuID0gNDsKLQlhcmd2WzBdLnUuaW50ZWdlciA9IGZkOworCWFyZ3ZbMF0u aW50ZWdlciA9IGZkOwogCiAJcmVzID0gUFFmbihjb25uLCBjb25uLT5sb2JqZnVuY3MtPmZu X2xvX3RlbGw2NCwKIAkJCSAgICh2b2lkICopICZyZXR2YWwsICZyZXN1bHRfbGVuLCAwLCBh cmd2LCAxKTsKQEAgLTU5OCw3ICs1OTgsNyBAQCBsb191bmxpbmsoUEdjb25uICpjb25uLCBP aWQgbG9iaklkKQogCiAJYXJndlswXS5pc2ludCA9IDE7CiAJYXJndlswXS5sZW4gPSA0Owot CWFyZ3ZbMF0udS5pbnRlZ2VyID0gbG9iaklkOworCWFyZ3ZbMF0uaW50ZWdlciA9IGxvYmpJ ZDsKIAogCXJlcyA9IFBRZm4oY29ubiwgY29ubi0+bG9iamZ1bmNzLT5mbl9sb191bmxpbmss CiAJCQkgICAmcmV0dmFsLCAmcmVzdWx0X2xlbiwgMSwgYXJndiwgMSk7CmRpZmYgLS1naXQg YS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1wcm90b2NvbDMuYyBiL3NyYy9pbnRlcmZhY2Vz L2xpYnBxL2ZlLXByb3RvY29sMy5jCmluZGV4IGRhN2E4ZGI2OGM4Li5jOTQxYTRjMTY2NCAx MDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtcHJvdG9jb2wzLmMKKysrIGIv c3JjL2ludGVyZmFjZXMvbGlicHEvZmUtcHJvdG9jb2wzLmMKQEAgLTIxNzUsMTIgKzIxNzUs MTIgQEAgcHFGdW5jdGlvbkNhbGwzKFBHY29ubiAqY29ubiwgT2lkIGZuaWQsCiAKIAkJaWYg KGFyZ3NbaV0uaXNpbnQpCiAJCXsKLQkJCWlmIChwcVB1dEludChhcmdzW2ldLnUuaW50ZWdl ciwgYXJnc1tpXS5sZW4sIGNvbm4pKQorCQkJaWYgKHBxUHV0SW50KGFyZ3NbaV0uaW50ZWdl ciwgYXJnc1tpXS5sZW4sIGNvbm4pKQogCQkJCXJldHVybiBOVUxMOwogCQl9CiAJCWVsc2UK IAkJewotCQkJaWYgKHBxUHV0bmNoYXIoYXJnc1tpXS51LnB0ciwgYXJnc1tpXS5sZW4sIGNv bm4pKQorCQkJaWYgKHBxUHV0bmNoYXIoYXJnc1tpXS5wdHIsIGFyZ3NbaV0ubGVuLCBjb25u KSkKIAkJCQlyZXR1cm4gTlVMTDsKIAkJfQogCX0KZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZh Y2VzL2xpYnBxL2xpYnBxLWZlLmggYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1mZS5o CmluZGV4IDA4NTI1ODRlZGFlLi44M2Q1YzA3MTA5NyAxMDA2NDQKLS0tIGEvc3JjL2ludGVy ZmFjZXMvbGlicHEvbGlicHEtZmUuaAorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJw cS1mZS5oCkBAIC0yOTMsOSArMjkzLDkgQEAgdHlwZWRlZiBzdHJ1Y3QKIAlpbnQJCQlpc2lu dDsKIAl1bmlvbgogCXsKLQkJaW50CQkgICAqcHRyOwkJLyogY2FuJ3QgdXNlIHZvaWQgKGRl YyBjb21waWxlciBiYXJmcykJICovCisJCXZvaWQJICAgKnB0cjsKIAkJaW50CQkJaW50ZWdl cjsKLQl9CQkJdTsKKwl9OwogfSBQUUFyZ0Jsb2NrOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0t Ci0tIAoyLjUxLjAKCg== --------------XMilSvfSoQNhBmwudkXUWZaX Content-Type: text/plain; charset=UTF-8; name="0006-C11-anonymous-unions-reorderbuffer-data.patch" Content-Disposition: attachment; filename="0006-C11-anonymous-unions-reorderbuffer-data.patch" Content-Transfer-Encoding: base64 RnJvbSA5N2EyNDlhYjY2ODg0ZDIzNzgwNzkwY2FmMThjYmUwM2NkOTRmM2ZjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAyMiBTZXAgMjAyNSAxNDo0Nzo0OCArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMDYvMjNdIEMxMSBhbm9ueW1vdXMgdW5pb25zIFtyZW9yZGVyYnVmZmVyIGRh dGFdCgotLS0KIGNvbnRyaWIvdGVzdF9kZWNvZGluZy90ZXN0X2RlY29kaW5nLmMgICAgICAg ICB8ICAyNCArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYyAg ICAgIHwgIDU0ICsrLS0KIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIu YyAgICAgICB8IDI1NCArKysrKysrKystLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgICB8ICAxNCArLQogc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vcmVvcmRlcmJ1ZmZlci5oICAgICAgIHwgICAyICstCiA1IGZpbGVzIGNoYW5nZWQs IDE3NCBpbnNlcnRpb25zKCspLCAxNzQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29u dHJpYi90ZXN0X2RlY29kaW5nL3Rlc3RfZGVjb2RpbmcuYyBiL2NvbnRyaWIvdGVzdF9kZWNv ZGluZy90ZXN0X2RlY29kaW5nLmMKaW5kZXggMzZlNzdjNjllMWMuLjE3MjM2NTFiNzcwIDEw MDY0NAotLS0gYS9jb250cmliL3Rlc3RfZGVjb2RpbmcvdGVzdF9kZWNvZGluZy5jCisrKyBi L2NvbnRyaWIvdGVzdF9kZWNvZGluZy90ZXN0X2RlY29kaW5nLmMKQEAgLTYzOSw0MSArNjM5 LDQxIEBAIHBnX2RlY29kZV9jaGFuZ2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBS ZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJewogCQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5H RV9JTlNFUlQ6CiAJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGN0eC0+b3V0LCAiIElOU0VS VDoiKTsKLQkJCWlmIChjaGFuZ2UtPmRhdGEudHAubmV3dHVwbGUgPT0gTlVMTCkKKwkJCWlm IChjaGFuZ2UtPnRwLm5ld3R1cGxlID09IE5VTEwpCiAJCQkJYXBwZW5kU3RyaW5nSW5mb1N0 cmluZyhjdHgtPm91dCwgIiAobm8tdHVwbGUtZGF0YSkiKTsKIAkJCWVsc2UKIAkJCQl0dXBs ZV90b19zdHJpbmdpbmZvKGN0eC0+b3V0LCB0dXBkZXNjLAotCQkJCQkJCQkJY2hhbmdlLT5k YXRhLnRwLm5ld3R1cGxlLAorCQkJCQkJCQkJY2hhbmdlLT50cC5uZXd0dXBsZSwKIAkJCQkJ CQkJCWZhbHNlKTsKIAkJCWJyZWFrOwogCQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5HRV9V UERBVEU6CiAJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGN0eC0+b3V0LCAiIFVQREFURToi KTsKLQkJCWlmIChjaGFuZ2UtPmRhdGEudHAub2xkdHVwbGUgIT0gTlVMTCkKKwkJCWlmIChj aGFuZ2UtPnRwLm9sZHR1cGxlICE9IE5VTEwpCiAJCQl7CiAJCQkJYXBwZW5kU3RyaW5nSW5m b1N0cmluZyhjdHgtPm91dCwgIiBvbGQta2V5OiIpOwogCQkJCXR1cGxlX3RvX3N0cmluZ2lu Zm8oY3R4LT5vdXQsIHR1cGRlc2MsCi0JCQkJCQkJCQljaGFuZ2UtPmRhdGEudHAub2xkdHVw bGUsCisJCQkJCQkJCQljaGFuZ2UtPnRwLm9sZHR1cGxlLAogCQkJCQkJCQkJdHJ1ZSk7CiAJ CQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhjdHgtPm91dCwgIiBuZXctdHVwbGU6Iik7CiAJ CQl9CiAKLQkJCWlmIChjaGFuZ2UtPmRhdGEudHAubmV3dHVwbGUgPT0gTlVMTCkKKwkJCWlm IChjaGFuZ2UtPnRwLm5ld3R1cGxlID09IE5VTEwpCiAJCQkJYXBwZW5kU3RyaW5nSW5mb1N0 cmluZyhjdHgtPm91dCwgIiAobm8tdHVwbGUtZGF0YSkiKTsKIAkJCWVsc2UKIAkJCQl0dXBs ZV90b19zdHJpbmdpbmZvKGN0eC0+b3V0LCB0dXBkZXNjLAotCQkJCQkJCQkJY2hhbmdlLT5k YXRhLnRwLm5ld3R1cGxlLAorCQkJCQkJCQkJY2hhbmdlLT50cC5uZXd0dXBsZSwKIAkJCQkJ CQkJCWZhbHNlKTsKIAkJCWJyZWFrOwogCQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5HRV9E RUxFVEU6CiAJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGN0eC0+b3V0LCAiIERFTEVURToi KTsKIAogCQkJLyogaWYgdGhlcmUgd2FzIG5vIFBLLCB3ZSBvbmx5IGtub3cgdGhhdCBhIGRl bGV0ZSBoYXBwZW5lZCAqLwotCQkJaWYgKGNoYW5nZS0+ZGF0YS50cC5vbGR0dXBsZSA9PSBO VUxMKQorCQkJaWYgKGNoYW5nZS0+dHAub2xkdHVwbGUgPT0gTlVMTCkKIAkJCQlhcHBlbmRT dHJpbmdJbmZvU3RyaW5nKGN0eC0+b3V0LCAiIChuby10dXBsZS1kYXRhKSIpOwogCQkJLyog SW4gREVMRVRFLCBvbmx5IHRoZSByZXBsaWNhIGlkZW50aXR5IGlzIHByZXNlbnQ7IGRpc3Bs YXkgdGhhdCAqLwogCQkJZWxzZQogCQkJCXR1cGxlX3RvX3N0cmluZ2luZm8oY3R4LT5vdXQs IHR1cGRlc2MsCi0JCQkJCQkJCQljaGFuZ2UtPmRhdGEudHAub2xkdHVwbGUsCisJCQkJCQkJ CQljaGFuZ2UtPnRwLm9sZHR1cGxlLAogCQkJCQkJCQkJdHJ1ZSk7CiAJCQlicmVhazsKIAkJ ZGVmYXVsdDoKQEAgLTcyNCwxMiArNzI0LDEyIEBAIHBnX2RlY29kZV90cnVuY2F0ZShMb2dp Y2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAogCWFw cGVuZFN0cmluZ0luZm9TdHJpbmcoY3R4LT5vdXQsICI6IFRSVU5DQVRFOiIpOwogCi0JaWYg KGNoYW5nZS0+ZGF0YS50cnVuY2F0ZS5yZXN0YXJ0X3NlcXMKLQkJfHwgY2hhbmdlLT5kYXRh LnRydW5jYXRlLmNhc2NhZGUpCisJaWYgKGNoYW5nZS0+dHJ1bmNhdGUucmVzdGFydF9zZXFz CisJCXx8IGNoYW5nZS0+dHJ1bmNhdGUuY2FzY2FkZSkKIAl7Ci0JCWlmIChjaGFuZ2UtPmRh dGEudHJ1bmNhdGUucmVzdGFydF9zZXFzKQorCQlpZiAoY2hhbmdlLT50cnVuY2F0ZS5yZXN0 YXJ0X3NlcXMpCiAJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGN0eC0+b3V0LCAiIHJlc3Rh cnRfc2VxcyIpOwotCQlpZiAoY2hhbmdlLT5kYXRhLnRydW5jYXRlLmNhc2NhZGUpCisJCWlm IChjaGFuZ2UtPnRydW5jYXRlLmNhc2NhZGUpCiAJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5n KGN0eC0+b3V0LCAiIGNhc2NhZGUiKTsKIAl9CiAJZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKaW5kZXggY2MwM2YwNzA2ZTkuLmY3NzczZTM4ZGRh IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5j CisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKQEAgLTkz NSwxNyArOTM1LDE3IEBAIERlY29kZUluc2VydChMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpj dHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1ZikKIAkJY2hhbmdlLT5hY3Rpb24gPSBSRU9SREVS X0JVRkZFUl9DSEFOR0VfSU5URVJOQUxfU1BFQ19JTlNFUlQ7CiAJY2hhbmdlLT5vcmlnaW5f aWQgPSBYTG9nUmVjR2V0T3JpZ2luKHIpOwogCi0JbWVtY3B5KCZjaGFuZ2UtPmRhdGEudHAu cmxvY2F0b3IsICZ0YXJnZXRfbG9jYXRvciwgc2l6ZW9mKFJlbEZpbGVMb2NhdG9yKSk7CisJ bWVtY3B5KCZjaGFuZ2UtPnRwLnJsb2NhdG9yLCAmdGFyZ2V0X2xvY2F0b3IsIHNpemVvZihS ZWxGaWxlTG9jYXRvcikpOwogCiAJdHVwbGVkYXRhID0gWExvZ1JlY0dldEJsb2NrRGF0YShy LCAwLCAmZGF0YWxlbik7CiAJdHVwbGVsZW4gPSBkYXRhbGVuIC0gU2l6ZU9mSGVhcEhlYWRl cjsKIAotCWNoYW5nZS0+ZGF0YS50cC5uZXd0dXBsZSA9CisJY2hhbmdlLT50cC5uZXd0dXBs ZSA9CiAJCVJlb3JkZXJCdWZmZXJBbGxvY1R1cGxlQnVmKGN0eC0+cmVvcmRlciwgdHVwbGVs ZW4pOwogCi0JRGVjb2RlWExvZ1R1cGxlKHR1cGxlZGF0YSwgZGF0YWxlbiwgY2hhbmdlLT5k YXRhLnRwLm5ld3R1cGxlKTsKKwlEZWNvZGVYTG9nVHVwbGUodHVwbGVkYXRhLCBkYXRhbGVu LCBjaGFuZ2UtPnRwLm5ld3R1cGxlKTsKIAotCWNoYW5nZS0+ZGF0YS50cC5jbGVhcl90b2Fz dF9hZnRlcndhcmRzID0gdHJ1ZTsKKwljaGFuZ2UtPnRwLmNsZWFyX3RvYXN0X2FmdGVyd2Fy ZHMgPSB0cnVlOwogCiAJUmVvcmRlckJ1ZmZlclF1ZXVlQ2hhbmdlKGN0eC0+cmVvcmRlciwg WExvZ1JlY0dldFhpZChyKSwgYnVmLT5vcmlncHRyLAogCQkJCQkJCSBjaGFuZ2UsCkBAIC05 ODEsNyArOTgxLDcgQEAgRGVjb2RlVXBkYXRlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0 eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQogCWNoYW5nZSA9IFJlb3JkZXJCdWZmZXJBbGxv Y0NoYW5nZShjdHgtPnJlb3JkZXIpOwogCWNoYW5nZS0+YWN0aW9uID0gUkVPUkRFUl9CVUZG RVJfQ0hBTkdFX1VQREFURTsKIAljaGFuZ2UtPm9yaWdpbl9pZCA9IFhMb2dSZWNHZXRPcmln aW4ocik7Ci0JbWVtY3B5KCZjaGFuZ2UtPmRhdGEudHAucmxvY2F0b3IsICZ0YXJnZXRfbG9j YXRvciwgc2l6ZW9mKFJlbEZpbGVMb2NhdG9yKSk7CisJbWVtY3B5KCZjaGFuZ2UtPnRwLnJs b2NhdG9yLCAmdGFyZ2V0X2xvY2F0b3IsIHNpemVvZihSZWxGaWxlTG9jYXRvcikpOwogCiAJ aWYgKHhscmVjLT5mbGFncyAmIFhMSF9VUERBVEVfQ09OVEFJTlNfTkVXX1RVUExFKQogCXsK QEAgLTk5MiwxMCArOTkyLDEwIEBAIERlY29kZVVwZGF0ZShMb2dpY2FsRGVjb2RpbmdDb250 ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1ZikKIAogCQl0dXBsZWxlbiA9IGRhdGFs ZW4gLSBTaXplT2ZIZWFwSGVhZGVyOwogCi0JCWNoYW5nZS0+ZGF0YS50cC5uZXd0dXBsZSA9 CisJCWNoYW5nZS0+dHAubmV3dHVwbGUgPQogCQkJUmVvcmRlckJ1ZmZlckFsbG9jVHVwbGVC dWYoY3R4LT5yZW9yZGVyLCB0dXBsZWxlbik7CiAKLQkJRGVjb2RlWExvZ1R1cGxlKGRhdGEs IGRhdGFsZW4sIGNoYW5nZS0+ZGF0YS50cC5uZXd0dXBsZSk7CisJCURlY29kZVhMb2dUdXBs ZShkYXRhLCBkYXRhbGVuLCBjaGFuZ2UtPnRwLm5ld3R1cGxlKTsKIAl9CiAKIAlpZiAoeGxy ZWMtPmZsYWdzICYgWExIX1VQREFURV9DT05UQUlOU19PTEQpCkBAIC0xMDA4LDEzICsxMDA4 LDEzIEBAIERlY29kZVVwZGF0ZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dS ZWNvcmRCdWZmZXIgKmJ1ZikKIAkJZGF0YWxlbiA9IFhMb2dSZWNHZXREYXRhTGVuKHIpIC0g U2l6ZU9mSGVhcFVwZGF0ZTsKIAkJdHVwbGVsZW4gPSBkYXRhbGVuIC0gU2l6ZU9mSGVhcEhl YWRlcjsKIAotCQljaGFuZ2UtPmRhdGEudHAub2xkdHVwbGUgPQorCQljaGFuZ2UtPnRwLm9s ZHR1cGxlID0KIAkJCVJlb3JkZXJCdWZmZXJBbGxvY1R1cGxlQnVmKGN0eC0+cmVvcmRlciwg dHVwbGVsZW4pOwogCi0JCURlY29kZVhMb2dUdXBsZShkYXRhLCBkYXRhbGVuLCBjaGFuZ2Ut PmRhdGEudHAub2xkdHVwbGUpOworCQlEZWNvZGVYTG9nVHVwbGUoZGF0YSwgZGF0YWxlbiwg Y2hhbmdlLT50cC5vbGR0dXBsZSk7CiAJfQogCi0JY2hhbmdlLT5kYXRhLnRwLmNsZWFyX3Rv YXN0X2FmdGVyd2FyZHMgPSB0cnVlOworCWNoYW5nZS0+dHAuY2xlYXJfdG9hc3RfYWZ0ZXJ3 YXJkcyA9IHRydWU7CiAKIAlSZW9yZGVyQnVmZmVyUXVldWVDaGFuZ2UoY3R4LT5yZW9yZGVy LCBYTG9nUmVjR2V0WGlkKHIpLCBidWYtPm9yaWdwdHIsCiAJCQkJCQkJIGNoYW5nZSwgZmFs c2UpOwpAQCAtMTA1Myw3ICsxMDUzLDcgQEAgRGVjb2RlRGVsZXRlKExvZ2ljYWxEZWNvZGlu Z0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQogCiAJY2hhbmdlLT5vcmln aW5faWQgPSBYTG9nUmVjR2V0T3JpZ2luKHIpOwogCi0JbWVtY3B5KCZjaGFuZ2UtPmRhdGEu dHAucmxvY2F0b3IsICZ0YXJnZXRfbG9jYXRvciwgc2l6ZW9mKFJlbEZpbGVMb2NhdG9yKSk7 CisJbWVtY3B5KCZjaGFuZ2UtPnRwLnJsb2NhdG9yLCAmdGFyZ2V0X2xvY2F0b3IsIHNpemVv ZihSZWxGaWxlTG9jYXRvcikpOwogCiAJLyogb2xkIHByaW1hcnkga2V5IHN0b3JlZCAqLwog CWlmICh4bHJlYy0+ZmxhZ3MgJiBYTEhfREVMRVRFX0NPTlRBSU5TX09MRCkKQEAgLTEwNjMs MTQgKzEwNjMsMTQgQEAgRGVjb2RlRGVsZXRlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0 eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQogCiAJCUFzc2VydChYTG9nUmVjR2V0RGF0YUxl bihyKSA+IChTaXplT2ZIZWFwRGVsZXRlICsgU2l6ZU9mSGVhcEhlYWRlcikpOwogCi0JCWNo YW5nZS0+ZGF0YS50cC5vbGR0dXBsZSA9CisJCWNoYW5nZS0+dHAub2xkdHVwbGUgPQogCQkJ UmVvcmRlckJ1ZmZlckFsbG9jVHVwbGVCdWYoY3R4LT5yZW9yZGVyLCB0dXBsZWxlbik7CiAK IAkJRGVjb2RlWExvZ1R1cGxlKChjaGFyICopIHhscmVjICsgU2l6ZU9mSGVhcERlbGV0ZSwK LQkJCQkJCWRhdGFsZW4sIGNoYW5nZS0+ZGF0YS50cC5vbGR0dXBsZSk7CisJCQkJCQlkYXRh bGVuLCBjaGFuZ2UtPnRwLm9sZHR1cGxlKTsKIAl9CiAKLQljaGFuZ2UtPmRhdGEudHAuY2xl YXJfdG9hc3RfYWZ0ZXJ3YXJkcyA9IHRydWU7CisJY2hhbmdlLT50cC5jbGVhcl90b2FzdF9h ZnRlcndhcmRzID0gdHJ1ZTsKIAogCVJlb3JkZXJCdWZmZXJRdWV1ZUNoYW5nZShjdHgtPnJl b3JkZXIsIFhMb2dSZWNHZXRYaWQociksIGJ1Zi0+b3JpZ3B0ciwKIAkJCQkJCQkgY2hhbmdl LCBmYWxzZSk7CkBAIC0xMTAwLDEzICsxMTAwLDEzIEBAIERlY29kZVRydW5jYXRlKExvZ2lj YWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQogCWNoYW5n ZS0+YWN0aW9uID0gUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX1RSVU5DQVRFOwogCWNoYW5nZS0+ b3JpZ2luX2lkID0gWExvZ1JlY0dldE9yaWdpbihyKTsKIAlpZiAoeGxyZWMtPmZsYWdzICYg WExIX1RSVU5DQVRFX0NBU0NBREUpCi0JCWNoYW5nZS0+ZGF0YS50cnVuY2F0ZS5jYXNjYWRl ID0gdHJ1ZTsKKwkJY2hhbmdlLT50cnVuY2F0ZS5jYXNjYWRlID0gdHJ1ZTsKIAlpZiAoeGxy ZWMtPmZsYWdzICYgWExIX1RSVU5DQVRFX1JFU1RBUlRfU0VRUykKLQkJY2hhbmdlLT5kYXRh LnRydW5jYXRlLnJlc3RhcnRfc2VxcyA9IHRydWU7Ci0JY2hhbmdlLT5kYXRhLnRydW5jYXRl Lm5yZWxpZHMgPSB4bHJlYy0+bnJlbGlkczsKLQljaGFuZ2UtPmRhdGEudHJ1bmNhdGUucmVs aWRzID0gUmVvcmRlckJ1ZmZlckFsbG9jUmVsaWRzKGN0eC0+cmVvcmRlciwKLQkJCQkJCQkJ CQkJCQkJCXhscmVjLT5ucmVsaWRzKTsKLQltZW1jcHkoY2hhbmdlLT5kYXRhLnRydW5jYXRl LnJlbGlkcywgeGxyZWMtPnJlbGlkcywKKwkJY2hhbmdlLT50cnVuY2F0ZS5yZXN0YXJ0X3Nl cXMgPSB0cnVlOworCWNoYW5nZS0+dHJ1bmNhdGUubnJlbGlkcyA9IHhscmVjLT5ucmVsaWRz OworCWNoYW5nZS0+dHJ1bmNhdGUucmVsaWRzID0gUmVvcmRlckJ1ZmZlckFsbG9jUmVsaWRz KGN0eC0+cmVvcmRlciwKKwkJCQkJCQkJCQkJCQkgICB4bHJlYy0+bnJlbGlkcyk7CisJbWVt Y3B5KGNoYW5nZS0+dHJ1bmNhdGUucmVsaWRzLCB4bHJlYy0+cmVsaWRzLAogCQkgICB4bHJl Yy0+bnJlbGlkcyAqIHNpemVvZihPaWQpKTsKIAlSZW9yZGVyQnVmZmVyUXVldWVDaGFuZ2Uo Y3R4LT5yZW9yZGVyLCBYTG9nUmVjR2V0WGlkKHIpLAogCQkJCQkJCSBidWYtPm9yaWdwdHIs IGNoYW5nZSwgZmFsc2UpOwpAQCAtMTE2NiwxNiArMTE2NiwxNiBAQCBEZWNvZGVNdWx0aUlu c2VydChMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1 ZikKIAkJY2hhbmdlLT5hY3Rpb24gPSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfSU5TRVJUOwog CQljaGFuZ2UtPm9yaWdpbl9pZCA9IFhMb2dSZWNHZXRPcmlnaW4ocik7CiAKLQkJbWVtY3B5 KCZjaGFuZ2UtPmRhdGEudHAucmxvY2F0b3IsICZybG9jYXRvciwgc2l6ZW9mKFJlbEZpbGVM b2NhdG9yKSk7CisJCW1lbWNweSgmY2hhbmdlLT50cC5ybG9jYXRvciwgJnJsb2NhdG9yLCBz aXplb2YoUmVsRmlsZUxvY2F0b3IpKTsKIAogCQl4bGhkciA9ICh4bF9tdWx0aV9pbnNlcnRf dHVwbGUgKikgU0hPUlRBTElHTihkYXRhKTsKIAkJZGF0YSA9ICgoY2hhciAqKSB4bGhkcikg KyBTaXplT2ZNdWx0aUluc2VydFR1cGxlOwogCQlkYXRhbGVuID0geGxoZHItPmRhdGFsZW47 CiAKLQkJY2hhbmdlLT5kYXRhLnRwLm5ld3R1cGxlID0KKwkJY2hhbmdlLT50cC5uZXd0dXBs ZSA9CiAJCQlSZW9yZGVyQnVmZmVyQWxsb2NUdXBsZUJ1ZihjdHgtPnJlb3JkZXIsIGRhdGFs ZW4pOwogCi0JCXR1cGxlID0gY2hhbmdlLT5kYXRhLnRwLm5ld3R1cGxlOworCQl0dXBsZSA9 IGNoYW5nZS0+dHAubmV3dHVwbGU7CiAJCWhlYWRlciA9IHR1cGxlLT50X2RhdGE7CiAKIAkJ Lyogbm90IGEgZGlzayBiYXNlZCB0dXBsZSAqLwpAQCAtMTIwMiw5ICsxMjAyLDkgQEAgRGVj b2RlTXVsdGlJbnNlcnQoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3Jk QnVmZmVyICpidWYpCiAJCSAqLwogCQlpZiAoeGxyZWMtPmZsYWdzICYgWExIX0lOU0VSVF9M QVNUX0lOX01VTFRJICYmCiAJCQkoaSArIDEpID09IHhscmVjLT5udHVwbGVzKQotCQkJY2hh bmdlLT5kYXRhLnRwLmNsZWFyX3RvYXN0X2FmdGVyd2FyZHMgPSB0cnVlOworCQkJY2hhbmdl LT50cC5jbGVhcl90b2FzdF9hZnRlcndhcmRzID0gdHJ1ZTsKIAkJZWxzZQotCQkJY2hhbmdl LT5kYXRhLnRwLmNsZWFyX3RvYXN0X2FmdGVyd2FyZHMgPSBmYWxzZTsKKwkJCWNoYW5nZS0+ dHAuY2xlYXJfdG9hc3RfYWZ0ZXJ3YXJkcyA9IGZhbHNlOwogCiAJCVJlb3JkZXJCdWZmZXJR dWV1ZUNoYW5nZShjdHgtPnJlb3JkZXIsIFhMb2dSZWNHZXRYaWQociksCiAJCQkJCQkJCSBi dWYtPm9yaWdwdHIsIGNoYW5nZSwgZmFsc2UpOwpAQCAtMTI0MSw5ICsxMjQxLDkgQEAgRGVj b2RlU3BlY0NvbmZpcm0oTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3Jk QnVmZmVyICpidWYpCiAJY2hhbmdlLT5hY3Rpb24gPSBSRU9SREVSX0JVRkZFUl9DSEFOR0Vf SU5URVJOQUxfU1BFQ19DT05GSVJNOwogCWNoYW5nZS0+b3JpZ2luX2lkID0gWExvZ1JlY0dl dE9yaWdpbihyKTsKIAotCW1lbWNweSgmY2hhbmdlLT5kYXRhLnRwLnJsb2NhdG9yLCAmdGFy Z2V0X2xvY2F0b3IsIHNpemVvZihSZWxGaWxlTG9jYXRvcikpOworCW1lbWNweSgmY2hhbmdl LT50cC5ybG9jYXRvciwgJnRhcmdldF9sb2NhdG9yLCBzaXplb2YoUmVsRmlsZUxvY2F0b3Ip KTsKIAotCWNoYW5nZS0+ZGF0YS50cC5jbGVhcl90b2FzdF9hZnRlcndhcmRzID0gdHJ1ZTsK KwljaGFuZ2UtPnRwLmNsZWFyX3RvYXN0X2FmdGVyd2FyZHMgPSB0cnVlOwogCiAJUmVvcmRl ckJ1ZmZlclF1ZXVlQ2hhbmdlKGN0eC0+cmVvcmRlciwgWExvZ1JlY0dldFhpZChyKSwgYnVm LT5vcmlncHRyLAogCQkJCQkJCSBjaGFuZ2UsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKaW5kZXggYTVlMTY1ZmIx MjMuLmFmZGUyYzVjMjA4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3Jlb3JkZXJidWZmZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3Jlb3JkZXJidWZmZXIuYwpAQCAtNTMzLDQ0ICs1MzMsNDQgQEAgUmVvcmRlckJ1 ZmZlckZyZWVDaGFuZ2UoUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJDaGFuZ2Ug KmNoYW5nZSwKIAkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfVVBEQVRFOgogCQljYXNl IFJFT1JERVJfQlVGRkVSX0NIQU5HRV9ERUxFVEU6CiAJCWNhc2UgUkVPUkRFUl9CVUZGRVJf Q0hBTkdFX0lOVEVSTkFMX1NQRUNfSU5TRVJUOgotCQkJaWYgKGNoYW5nZS0+ZGF0YS50cC5u ZXd0dXBsZSkKKwkJCWlmIChjaGFuZ2UtPnRwLm5ld3R1cGxlKQogCQkJewotCQkJCVJlb3Jk ZXJCdWZmZXJGcmVlVHVwbGVCdWYoY2hhbmdlLT5kYXRhLnRwLm5ld3R1cGxlKTsKLQkJCQlj aGFuZ2UtPmRhdGEudHAubmV3dHVwbGUgPSBOVUxMOworCQkJCVJlb3JkZXJCdWZmZXJGcmVl VHVwbGVCdWYoY2hhbmdlLT50cC5uZXd0dXBsZSk7CisJCQkJY2hhbmdlLT50cC5uZXd0dXBs ZSA9IE5VTEw7CiAJCQl9CiAKLQkJCWlmIChjaGFuZ2UtPmRhdGEudHAub2xkdHVwbGUpCisJ CQlpZiAoY2hhbmdlLT50cC5vbGR0dXBsZSkKIAkJCXsKLQkJCQlSZW9yZGVyQnVmZmVyRnJl ZVR1cGxlQnVmKGNoYW5nZS0+ZGF0YS50cC5vbGR0dXBsZSk7Ci0JCQkJY2hhbmdlLT5kYXRh LnRwLm9sZHR1cGxlID0gTlVMTDsKKwkJCQlSZW9yZGVyQnVmZmVyRnJlZVR1cGxlQnVmKGNo YW5nZS0+dHAub2xkdHVwbGUpOworCQkJCWNoYW5nZS0+dHAub2xkdHVwbGUgPSBOVUxMOwog CQkJfQogCQkJYnJlYWs7CiAJCWNhc2UgUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX01FU1NBR0U6 Ci0JCQlpZiAoY2hhbmdlLT5kYXRhLm1zZy5wcmVmaXggIT0gTlVMTCkKLQkJCQlwZnJlZShj aGFuZ2UtPmRhdGEubXNnLnByZWZpeCk7Ci0JCQljaGFuZ2UtPmRhdGEubXNnLnByZWZpeCA9 IE5VTEw7Ci0JCQlpZiAoY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlICE9IE5VTEwpCi0JCQkJ cGZyZWUoY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlKTsKLQkJCWNoYW5nZS0+ZGF0YS5tc2cu bWVzc2FnZSA9IE5VTEw7CisJCQlpZiAoY2hhbmdlLT5tc2cucHJlZml4ICE9IE5VTEwpCisJ CQkJcGZyZWUoY2hhbmdlLT5tc2cucHJlZml4KTsKKwkJCWNoYW5nZS0+bXNnLnByZWZpeCA9 IE5VTEw7CisJCQlpZiAoY2hhbmdlLT5tc2cubWVzc2FnZSAhPSBOVUxMKQorCQkJCXBmcmVl KGNoYW5nZS0+bXNnLm1lc3NhZ2UpOworCQkJY2hhbmdlLT5tc2cubWVzc2FnZSA9IE5VTEw7 CiAJCQlicmVhazsKIAkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfSU5WQUxJREFUSU9O OgotCQkJaWYgKGNoYW5nZS0+ZGF0YS5pbnZhbC5pbnZhbGlkYXRpb25zKQotCQkJCXBmcmVl KGNoYW5nZS0+ZGF0YS5pbnZhbC5pbnZhbGlkYXRpb25zKTsKLQkJCWNoYW5nZS0+ZGF0YS5p bnZhbC5pbnZhbGlkYXRpb25zID0gTlVMTDsKKwkJCWlmIChjaGFuZ2UtPmludmFsLmludmFs aWRhdGlvbnMpCisJCQkJcGZyZWUoY2hhbmdlLT5pbnZhbC5pbnZhbGlkYXRpb25zKTsKKwkJ CWNoYW5nZS0+aW52YWwuaW52YWxpZGF0aW9ucyA9IE5VTEw7CiAJCQlicmVhazsKIAkJY2Fz ZSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfSU5URVJOQUxfU05BUFNIT1Q6Ci0JCQlpZiAoY2hh bmdlLT5kYXRhLnNuYXBzaG90KQorCQkJaWYgKGNoYW5nZS0+c25hcHNob3QpCiAJCQl7Ci0J CQkJUmVvcmRlckJ1ZmZlckZyZWVTbmFwKHJiLCBjaGFuZ2UtPmRhdGEuc25hcHNob3QpOwot CQkJCWNoYW5nZS0+ZGF0YS5zbmFwc2hvdCA9IE5VTEw7CisJCQkJUmVvcmRlckJ1ZmZlckZy ZWVTbmFwKHJiLCBjaGFuZ2UtPnNuYXBzaG90KTsKKwkJCQljaGFuZ2UtPnNuYXBzaG90ID0g TlVMTDsKIAkJCX0KIAkJCWJyZWFrOwogCQkJLyogbm8gZGF0YSBpbiBhZGRpdGlvbiB0byB0 aGUgc3RydWN0IGl0c2VsZiAqLwogCQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5HRV9UUlVO Q0FURToKLQkJCWlmIChjaGFuZ2UtPmRhdGEudHJ1bmNhdGUucmVsaWRzICE9IE5VTEwpCisJ CQlpZiAoY2hhbmdlLT50cnVuY2F0ZS5yZWxpZHMgIT0gTlVMTCkKIAkJCXsKLQkJCQlSZW9y ZGVyQnVmZmVyRnJlZVJlbGlkcyhyYiwgY2hhbmdlLT5kYXRhLnRydW5jYXRlLnJlbGlkcyk7 Ci0JCQkJY2hhbmdlLT5kYXRhLnRydW5jYXRlLnJlbGlkcyA9IE5VTEw7CisJCQkJUmVvcmRl ckJ1ZmZlckZyZWVSZWxpZHMocmIsIGNoYW5nZS0+dHJ1bmNhdGUucmVsaWRzKTsKKwkJCQlj aGFuZ2UtPnRydW5jYXRlLnJlbGlkcyA9IE5VTEw7CiAJCQl9CiAJCQlicmVhazsKIAkJY2Fz ZSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfSU5URVJOQUxfU1BFQ19DT05GSVJNOgpAQCAtNzcx LDcgKzc3MSw3IEBAIFJlb3JkZXJCdWZmZXJQcm9jZXNzUGFydGlhbENoYW5nZShSZW9yZGVy QnVmZmVyICpyYiwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQl0b3B0eG4tPnR4bl9mbGFn cyB8PSBSQlRYTl9IQVNfUEFSVElBTF9DSEFOR0U7CiAJZWxzZSBpZiAocmJ0eG5faGFzX3Bh cnRpYWxfY2hhbmdlKHRvcHR4bikgJiYKIAkJCSBJc0luc2VydE9yVXBkYXRlKGNoYW5nZS0+ YWN0aW9uKSAmJgotCQkJIGNoYW5nZS0+ZGF0YS50cC5jbGVhcl90b2FzdF9hZnRlcndhcmRz KQorCQkJIGNoYW5nZS0+dHAuY2xlYXJfdG9hc3RfYWZ0ZXJ3YXJkcykKIAkJdG9wdHhuLT50 eG5fZmxhZ3MgJj0gflJCVFhOX0hBU19QQVJUSUFMX0NIQU5HRTsKIAogCS8qCkBAIC04OTIs MTAgKzg5MiwxMCBAQCBSZW9yZGVyQnVmZmVyUXVldWVNZXNzYWdlKFJlb3JkZXJCdWZmZXIg KnJiLCBUcmFuc2FjdGlvbklkIHhpZCwKIAogCQljaGFuZ2UgPSBSZW9yZGVyQnVmZmVyQWxs b2NDaGFuZ2UocmIpOwogCQljaGFuZ2UtPmFjdGlvbiA9IFJFT1JERVJfQlVGRkVSX0NIQU5H RV9NRVNTQUdFOwotCQljaGFuZ2UtPmRhdGEubXNnLnByZWZpeCA9IHBzdHJkdXAocHJlZml4 KTsKLQkJY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlX3NpemUgPSBtZXNzYWdlX3NpemU7Ci0J CWNoYW5nZS0+ZGF0YS5tc2cubWVzc2FnZSA9IHBhbGxvYyhtZXNzYWdlX3NpemUpOwotCQlt ZW1jcHkoY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlLCBtZXNzYWdlLCBtZXNzYWdlX3NpemUp OworCQljaGFuZ2UtPm1zZy5wcmVmaXggPSBwc3RyZHVwKHByZWZpeCk7CisJCWNoYW5nZS0+ bXNnLm1lc3NhZ2Vfc2l6ZSA9IG1lc3NhZ2Vfc2l6ZTsKKwkJY2hhbmdlLT5tc2cubWVzc2Fn ZSA9IHBhbGxvYyhtZXNzYWdlX3NpemUpOworCQltZW1jcHkoY2hhbmdlLT5tc2cubWVzc2Fn ZSwgbWVzc2FnZSwgbWVzc2FnZV9zaXplKTsKIAogCQlSZW9yZGVyQnVmZmVyUXVldWVDaGFu Z2UocmIsIHhpZCwgbHNuLCBjaGFuZ2UsIGZhbHNlKTsKIApAQCAtMTg2NiwxOCArMTg2Niwx OCBAQCBSZW9yZGVyQnVmZmVyQnVpbGRUdXBsZUNpZEhhc2goUmVvcmRlckJ1ZmZlciAqcmIs IFJlb3JkZXJCdWZmZXJUWE4gKnR4bikKIAkJLyogYmUgY2FyZWZ1bCBhYm91dCBwYWRkaW5n ICovCiAJCW1lbXNldCgma2V5LCAwLCBzaXplb2YoUmVvcmRlckJ1ZmZlclR1cGxlQ2lkS2V5 KSk7CiAKLQkJa2V5LnJsb2NhdG9yID0gY2hhbmdlLT5kYXRhLnR1cGxlY2lkLmxvY2F0b3I7 CisJCWtleS5ybG9jYXRvciA9IGNoYW5nZS0+dHVwbGVjaWQubG9jYXRvcjsKIAotCQlJdGVt UG9pbnRlckNvcHkoJmNoYW5nZS0+ZGF0YS50dXBsZWNpZC50aWQsCisJCUl0ZW1Qb2ludGVy Q29weSgmY2hhbmdlLT50dXBsZWNpZC50aWQsCiAJCQkJCQkma2V5LnRpZCk7CiAKIAkJZW50 ID0gKFJlb3JkZXJCdWZmZXJUdXBsZUNpZEVudCAqKQogCQkJaGFzaF9zZWFyY2godHhuLT50 dXBsZWNpZF9oYXNoLCAma2V5LCBIQVNIX0VOVEVSLCAmZm91bmQpOwogCQlpZiAoIWZvdW5k KQogCQl7Ci0JCQllbnQtPmNtaW4gPSBjaGFuZ2UtPmRhdGEudHVwbGVjaWQuY21pbjsKLQkJ CWVudC0+Y21heCA9IGNoYW5nZS0+ZGF0YS50dXBsZWNpZC5jbWF4OwotCQkJZW50LT5jb21i b2NpZCA9IGNoYW5nZS0+ZGF0YS50dXBsZWNpZC5jb21ib2NpZDsKKwkJCWVudC0+Y21pbiA9 IGNoYW5nZS0+dHVwbGVjaWQuY21pbjsKKwkJCWVudC0+Y21heCA9IGNoYW5nZS0+dHVwbGVj aWQuY21heDsKKwkJCWVudC0+Y29tYm9jaWQgPSBjaGFuZ2UtPnR1cGxlY2lkLmNvbWJvY2lk OwogCQl9CiAJCWVsc2UKIAkJewpAQCAtMTg4NSwxNiArMTg4NSwxNiBAQCBSZW9yZGVyQnVm ZmVyQnVpbGRUdXBsZUNpZEhhc2goUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJU WE4gKnR4bikKIAkJCSAqIE1heWJlIHdlIGFscmVhZHkgc2F3IHRoaXMgdHVwbGUgYmVmb3Jl IGluIHRoaXMgdHJhbnNhY3Rpb24sIGJ1dAogCQkJICogaWYgc28gaXQgbXVzdCBoYXZlIHRo ZSBzYW1lIGNtaW4uCiAJCQkgKi8KLQkJCUFzc2VydChlbnQtPmNtaW4gPT0gY2hhbmdlLT5k YXRhLnR1cGxlY2lkLmNtaW4pOworCQkJQXNzZXJ0KGVudC0+Y21pbiA9PSBjaGFuZ2UtPnR1 cGxlY2lkLmNtaW4pOwogCiAJCQkvKgogCQkJICogY21heCBtYXkgYmUgaW5pdGlhbGx5IGlu dmFsaWQsIGJ1dCBvbmNlIHNldCBpdCBjYW4gb25seSBncm93LAogCQkJICogYW5kIG5ldmVy IGJlY29tZSBpbnZhbGlkIGFnYWluLgogCQkJICovCiAJCQlBc3NlcnQoKGVudC0+Y21heCA9 PSBJbnZhbGlkQ29tbWFuZElkKSB8fAotCQkJCSAgICgoY2hhbmdlLT5kYXRhLnR1cGxlY2lk LmNtYXggIT0gSW52YWxpZENvbW1hbmRJZCkgJiYKLQkJCQkJKGNoYW5nZS0+ZGF0YS50dXBs ZWNpZC5jbWF4ID4gZW50LT5jbWF4KSkpOwotCQkJZW50LT5jbWF4ID0gY2hhbmdlLT5kYXRh LnR1cGxlY2lkLmNtYXg7CisJCQkJICAgKChjaGFuZ2UtPnR1cGxlY2lkLmNtYXggIT0gSW52 YWxpZENvbW1hbmRJZCkgJiYKKwkJCQkJKGNoYW5nZS0+dHVwbGVjaWQuY21heCA+IGVudC0+ Y21heCkpKTsKKwkJCWVudC0+Y21heCA9IGNoYW5nZS0+dHVwbGVjaWQuY21heDsKIAkJfQog CX0KIH0KQEAgLTIxMDEsMTQgKzIxMDEsMTQgQEAgUmVvcmRlckJ1ZmZlckFwcGx5TWVzc2Fn ZShSZW9yZGVyQnVmZmVyICpyYiwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogewogCWlmIChz dHJlYW1pbmcpCiAJCXJiLT5zdHJlYW1fbWVzc2FnZShyYiwgdHhuLCBjaGFuZ2UtPmxzbiwg dHJ1ZSwKLQkJCQkJCSAgIGNoYW5nZS0+ZGF0YS5tc2cucHJlZml4LAotCQkJCQkJICAgY2hh bmdlLT5kYXRhLm1zZy5tZXNzYWdlX3NpemUsCi0JCQkJCQkgICBjaGFuZ2UtPmRhdGEubXNn Lm1lc3NhZ2UpOworCQkJCQkJICAgY2hhbmdlLT5tc2cucHJlZml4LAorCQkJCQkJICAgY2hh bmdlLT5tc2cubWVzc2FnZV9zaXplLAorCQkJCQkJICAgY2hhbmdlLT5tc2cubWVzc2FnZSk7 CiAJZWxzZQogCQlyYi0+bWVzc2FnZShyYiwgdHhuLCBjaGFuZ2UtPmxzbiwgdHJ1ZSwKLQkJ CQkJY2hhbmdlLT5kYXRhLm1zZy5wcmVmaXgsCi0JCQkJCWNoYW5nZS0+ZGF0YS5tc2cubWVz c2FnZV9zaXplLAotCQkJCQljaGFuZ2UtPmRhdGEubXNnLm1lc3NhZ2UpOworCQkJCQljaGFu Z2UtPm1zZy5wcmVmaXgsCisJCQkJCWNoYW5nZS0+bXNnLm1lc3NhZ2Vfc2l6ZSwKKwkJCQkJ Y2hhbmdlLT5tc2cubWVzc2FnZSk7CiB9CiAKIC8qCkBAIC0yMzE2LDcgKzIzMTYsNyBAQCBS ZW9yZGVyQnVmZmVyUHJvY2Vzc1RYTihSZW9yZGVyQnVmZmVyICpyYiwgUmVvcmRlckJ1ZmZl clRYTiAqdHhuLAogCQkJCQkgKi8KIAkJCQkJaWYgKHNwZWNpbnNlcnQgPT0gTlVMTCkKIAkJ CQkJCWVsb2coRVJST1IsICJpbnZhbGlkIG9yZGVyaW5nIG9mIHNwZWN1bGF0aXZlIGluc2Vy dGlvbiBjaGFuZ2VzIik7Ci0JCQkJCUFzc2VydChzcGVjaW5zZXJ0LT5kYXRhLnRwLm9sZHR1 cGxlID09IE5VTEwpOworCQkJCQlBc3NlcnQoc3BlY2luc2VydC0+dHAub2xkdHVwbGUgPT0g TlVMTCk7CiAJCQkJCWNoYW5nZSA9IHNwZWNpbnNlcnQ7CiAJCQkJCWNoYW5nZS0+YWN0aW9u ID0gUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX0lOU0VSVDsKIApAQCAtMjMyNiw4ICsyMzI2LDgg QEAgUmVvcmRlckJ1ZmZlclByb2Nlc3NUWE4oUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJC dWZmZXJUWE4gKnR4biwKIAkJCQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5HRV9ERUxFVEU6 CiAJCQkJCUFzc2VydChzbmFwc2hvdF9ub3cpOwogCi0JCQkJCXJlbG9pZCA9IFJlbGlkQnlS ZWxmaWxlbnVtYmVyKGNoYW5nZS0+ZGF0YS50cC5ybG9jYXRvci5zcGNPaWQsCi0JCQkJCQkJ CQkJCQkgIGNoYW5nZS0+ZGF0YS50cC5ybG9jYXRvci5yZWxOdW1iZXIpOworCQkJCQlyZWxv aWQgPSBSZWxpZEJ5UmVsZmlsZW51bWJlcihjaGFuZ2UtPnRwLnJsb2NhdG9yLnNwY09pZCwK KwkJCQkJCQkJCQkJCSAgY2hhbmdlLT50cC5ybG9jYXRvci5yZWxOdW1iZXIpOwogCiAJCQkJ CS8qCiAJCQkJCSAqIE1hcHBlZCBjYXRhbG9nIHR1cGxlIHdpdGhvdXQgZGF0YSwgZW1pdHRl ZCB3aGlsZQpAQCAtMjM0MiwxMiArMjM0MiwxMiBAQCBSZW9yZGVyQnVmZmVyUHJvY2Vzc1RY TihSZW9yZGVyQnVmZmVyICpyYiwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJCQkgKiBt YXBwaW5nIHRoZSByZWxmaWxlbnVtYmVyIHRvIHRoZSBvaWQuCiAJCQkJCSAqLwogCQkJCQlp ZiAocmVsb2lkID09IEludmFsaWRPaWQgJiYKLQkJCQkJCWNoYW5nZS0+ZGF0YS50cC5uZXd0 dXBsZSA9PSBOVUxMICYmCi0JCQkJCQljaGFuZ2UtPmRhdGEudHAub2xkdHVwbGUgPT0gTlVM TCkKKwkJCQkJCWNoYW5nZS0+dHAubmV3dHVwbGUgPT0gTlVMTCAmJgorCQkJCQkJY2hhbmdl LT50cC5vbGR0dXBsZSA9PSBOVUxMKQogCQkJCQkJZ290byBjaGFuZ2VfZG9uZTsKIAkJCQkJ ZWxzZSBpZiAocmVsb2lkID09IEludmFsaWRPaWQpCiAJCQkJCQllbG9nKEVSUk9SLCAiY291 bGQgbm90IG1hcCBmaWxlbnVtYmVyIFwiJXNcIiB0byByZWxhdGlvbiBPSUQiLAotCQkJCQkJ CSByZWxwYXRocGVybShjaGFuZ2UtPmRhdGEudHAucmxvY2F0b3IsCisJCQkJCQkJIHJlbHBh dGhwZXJtKGNoYW5nZS0+dHAucmxvY2F0b3IsCiAJCQkJCQkJCQkJIE1BSU5fRk9SS05VTSku c3RyKTsKIAogCQkJCQlyZWxhdGlvbiA9IFJlbGF0aW9uSWRHZXRSZWxhdGlvbihyZWxvaWQp OwpAQCAtMjM1NSw3ICsyMzU1LDcgQEAgUmVvcmRlckJ1ZmZlclByb2Nlc3NUWE4oUmVvcmRl ckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAkJCQkJaWYgKCFSZWxhdGlv bklzVmFsaWQocmVsYXRpb24pKQogCQkJCQkJZWxvZyhFUlJPUiwgImNvdWxkIG5vdCBvcGVu IHJlbGF0aW9uIHdpdGggT0lEICV1IChmb3IgZmlsZW51bWJlciBcIiVzXCIpIiwKIAkJCQkJ CQkgcmVsb2lkLAotCQkJCQkJCSByZWxwYXRocGVybShjaGFuZ2UtPmRhdGEudHAucmxvY2F0 b3IsCisJCQkJCQkJIHJlbHBhdGhwZXJtKGNoYW5nZS0+dHAucmxvY2F0b3IsCiAJCQkJCQkJ CQkJIE1BSU5fRk9SS05VTSkuc3RyKTsKIAogCQkJCQlpZiAoIVJlbGF0aW9uSXNMb2dpY2Fs bHlMb2dnZWQocmVsYXRpb24pKQpAQCAtMjM4OSw3ICsyMzg5LDcgQEAgUmVvcmRlckJ1ZmZl clByb2Nlc3NUWE4oUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwK IAkJCQkJCSAqIHRoZXkncmUgbm90IHJlcXVpcmVkIGFueW1vcmUuIFRoZSBjcmVhdG9yIG9m IHRoZQogCQkJCQkJICogdHVwbGUgdGVsbHMgdXMuCiAJCQkJCQkgKi8KLQkJCQkJCWlmIChj aGFuZ2UtPmRhdGEudHAuY2xlYXJfdG9hc3RfYWZ0ZXJ3YXJkcykKKwkJCQkJCWlmIChjaGFu Z2UtPnRwLmNsZWFyX3RvYXN0X2FmdGVyd2FyZHMpCiAJCQkJCQkJUmVvcmRlckJ1ZmZlclRv YXN0UmVzZXQocmIsIHR4bik7CiAJCQkJCX0KIAkJCQkJLyogd2UncmUgbm90IGludGVyZXN0 ZWQgaW4gdG9hc3QgZGVsZXRpb25zICovCkBAIC0yNDAzLDcgKzI0MDMsNyBAQCBSZW9yZGVy QnVmZmVyUHJvY2Vzc1RYTihSZW9yZGVyQnVmZmVyICpyYiwgUmVvcmRlckJ1ZmZlclRYTiAq dHhuLAogCQkJCQkJICogZnJlZWQvcmV1c2VkIHdoaWxlIHJlc3RvcmluZyBzcG9vbGVkIGRh dGEgZnJvbQogCQkJCQkJICogZGlzay4KIAkJCQkJCSAqLwotCQkJCQkJQXNzZXJ0KGNoYW5n ZS0+ZGF0YS50cC5uZXd0dXBsZSAhPSBOVUxMKTsKKwkJCQkJCUFzc2VydChjaGFuZ2UtPnRw Lm5ld3R1cGxlICE9IE5VTEwpOwogCiAJCQkJCQlkbGlzdF9kZWxldGUoJmNoYW5nZS0+bm9k ZSk7CiAJCQkJCQlSZW9yZGVyQnVmZmVyVG9hc3RBcHBlbmRDaHVuayhyYiwgdHhuLCByZWxh dGlvbiwKQEAgLTI0NzMsNyArMjQ3Myw3IEBAIFJlb3JkZXJCdWZmZXJQcm9jZXNzVFhOKFJl b3JkZXJCdWZmZXIgKnJiLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJCQkJCQkgKiBjb21w bGV0ZWx5IG5ldyB0dXBsZSB0byBhdm9pZCBjb25mdXNpb24gYWJvdXQgdGhlCiAJCQkJCQkg KiBwcmV2aW91cyB0dXBsZSdzIHRvYXN0IGNodW5rcy4KIAkJCQkJCSAqLwotCQkJCQkJQXNz ZXJ0KGNoYW5nZS0+ZGF0YS50cC5jbGVhcl90b2FzdF9hZnRlcndhcmRzKTsKKwkJCQkJCUFz c2VydChjaGFuZ2UtPnRwLmNsZWFyX3RvYXN0X2FmdGVyd2FyZHMpOwogCQkJCQkJUmVvcmRl ckJ1ZmZlclRvYXN0UmVzZXQocmIsIHR4bik7CiAKIAkJCQkJCS8qIFdlIGRvbid0IG5lZWQg dGhpcyByZWNvcmQgYW55bW9yZS4gKi8KQEAgLTI0ODUsMTQgKzI0ODUsMTQgQEAgUmVvcmRl ckJ1ZmZlclByb2Nlc3NUWE4oUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJUWE4g KnR4biwKIAkJCQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5HRV9UUlVOQ0FURToKIAkJCQkJ ewogCQkJCQkJaW50CQkJaTsKLQkJCQkJCWludAkJCW5yZWxpZHMgPSBjaGFuZ2UtPmRhdGEu dHJ1bmNhdGUubnJlbGlkczsKKwkJCQkJCWludAkJCW5yZWxpZHMgPSBjaGFuZ2UtPnRydW5j YXRlLm5yZWxpZHM7CiAJCQkJCQlpbnQJCQlucmVsYXRpb25zID0gMDsKIAkJCQkJCVJlbGF0 aW9uICAgKnJlbGF0aW9uczsKIAogCQkJCQkJcmVsYXRpb25zID0gcGFsbG9jMChucmVsaWRz ICogc2l6ZW9mKFJlbGF0aW9uKSk7CiAJCQkJCQlmb3IgKGkgPSAwOyBpIDwgbnJlbGlkczsg aSsrKQogCQkJCQkJewotCQkJCQkJCU9pZAkJCXJlbGlkID0gY2hhbmdlLT5kYXRhLnRydW5j YXRlLnJlbGlkc1tpXTsKKwkJCQkJCQlPaWQJCQlyZWxpZCA9IGNoYW5nZS0+dHJ1bmNhdGUu cmVsaWRzW2ldOwogCQkJCQkJCVJlbGF0aW9uCXJlbDsKIAogCQkJCQkJCXJlbCA9IFJlbGF0 aW9uSWRHZXRSZWxhdGlvbihyZWxpZCk7CkBAIC0yNTIzLDggKzI1MjMsOCBAQCBSZW9yZGVy QnVmZmVyUHJvY2Vzc1RYTihSZW9yZGVyQnVmZmVyICpyYiwgUmVvcmRlckJ1ZmZlclRYTiAq dHhuLAogCiAJCQkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfSU5WQUxJREFUSU9OOgog CQkJCQkvKiBFeGVjdXRlIHRoZSBpbnZhbGlkYXRpb24gbWVzc2FnZXMgbG9jYWxseSAqLwot CQkJCQlSZW9yZGVyQnVmZmVyRXhlY3V0ZUludmFsaWRhdGlvbnMoY2hhbmdlLT5kYXRhLmlu dmFsLm5pbnZhbGlkYXRpb25zLAotCQkJCQkJCQkJCQkJCSAgY2hhbmdlLT5kYXRhLmludmFs LmludmFsaWRhdGlvbnMpOworCQkJCQlSZW9yZGVyQnVmZmVyRXhlY3V0ZUludmFsaWRhdGlv bnMoY2hhbmdlLT5pbnZhbC5uaW52YWxpZGF0aW9ucywKKwkJCQkJCQkJCQkJCQkgIGNoYW5n ZS0+aW52YWwuaW52YWxpZGF0aW9ucyk7CiAJCQkJCWJyZWFrOwogCiAJCQkJY2FzZSBSRU9S REVSX0JVRkZFUl9DSEFOR0VfSU5URVJOQUxfU05BUFNIT1Q6CkBAIC0yNTM1LDcgKzI1MzUs NyBAQCBSZW9yZGVyQnVmZmVyUHJvY2Vzc1RYTihSZW9yZGVyQnVmZmVyICpyYiwgUmVvcmRl ckJ1ZmZlclRYTiAqdHhuLAogCQkJCQl7CiAJCQkJCQlSZW9yZGVyQnVmZmVyRnJlZVNuYXAo cmIsIHNuYXBzaG90X25vdyk7CiAJCQkJCQlzbmFwc2hvdF9ub3cgPQotCQkJCQkJCVJlb3Jk ZXJCdWZmZXJDb3B5U25hcChyYiwgY2hhbmdlLT5kYXRhLnNuYXBzaG90LAorCQkJCQkJCVJl b3JkZXJCdWZmZXJDb3B5U25hcChyYiwgY2hhbmdlLT5zbmFwc2hvdCwKIAkJCQkJCQkJCQkJ CSAgdHhuLCBjb21tYW5kX2lkKTsKIAkJCQkJfQogCkBAIC0yNTQ0LDE1ICsyNTQ0LDE1IEBA IFJlb3JkZXJCdWZmZXJQcm9jZXNzVFhOKFJlb3JkZXJCdWZmZXIgKnJiLCBSZW9yZGVyQnVm ZmVyVFhOICp0eG4sCiAJCQkJCSAqIGZyZWUuIFdlIGNvdWxkIGludHJvZHVjZSByZWZjb3Vu dGluZyBmb3IgdGhhdCwgYnV0IGZvcgogCQkJCQkgKiBub3cgdGhpcyBzZWVtcyBpbmZyZXF1 ZW50IGVub3VnaCBub3QgdG8gY2FyZS4KIAkJCQkJICovCi0JCQkJCWVsc2UgaWYgKGNoYW5n ZS0+ZGF0YS5zbmFwc2hvdC0+Y29waWVkKQorCQkJCQllbHNlIGlmIChjaGFuZ2UtPnNuYXBz aG90LT5jb3BpZWQpCiAJCQkJCXsKIAkJCQkJCXNuYXBzaG90X25vdyA9Ci0JCQkJCQkJUmVv cmRlckJ1ZmZlckNvcHlTbmFwKHJiLCBjaGFuZ2UtPmRhdGEuc25hcHNob3QsCisJCQkJCQkJ UmVvcmRlckJ1ZmZlckNvcHlTbmFwKHJiLCBjaGFuZ2UtPnNuYXBzaG90LAogCQkJCQkJCQkJ CQkJICB0eG4sIGNvbW1hbmRfaWQpOwogCQkJCQl9CiAJCQkJCWVsc2UKIAkJCQkJewotCQkJ CQkJc25hcHNob3Rfbm93ID0gY2hhbmdlLT5kYXRhLnNuYXBzaG90OworCQkJCQkJc25hcHNo b3Rfbm93ID0gY2hhbmdlLT5zbmFwc2hvdDsKIAkJCQkJfQogCiAJCQkJCS8qIGFuZCBjb250 aW51ZSB3aXRoIHRoZSBuZXcgb25lICovCkBAIC0yNTYwLDExICsyNTYwLDExIEBAIFJlb3Jk ZXJCdWZmZXJQcm9jZXNzVFhOKFJlb3JkZXJCdWZmZXIgKnJiLCBSZW9yZGVyQnVmZmVyVFhO ICp0eG4sCiAJCQkJCWJyZWFrOwogCiAJCQkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFOR0Vf SU5URVJOQUxfQ09NTUFORF9JRDoKLQkJCQkJQXNzZXJ0KGNoYW5nZS0+ZGF0YS5jb21tYW5k X2lkICE9IEludmFsaWRDb21tYW5kSWQpOworCQkJCQlBc3NlcnQoY2hhbmdlLT5jb21tYW5k X2lkICE9IEludmFsaWRDb21tYW5kSWQpOwogCi0JCQkJCWlmIChjb21tYW5kX2lkIDwgY2hh bmdlLT5kYXRhLmNvbW1hbmRfaWQpCisJCQkJCWlmIChjb21tYW5kX2lkIDwgY2hhbmdlLT5j b21tYW5kX2lkKQogCQkJCQl7Ci0JCQkJCQljb21tYW5kX2lkID0gY2hhbmdlLT5kYXRhLmNv bW1hbmRfaWQ7CisJCQkJCQljb21tYW5kX2lkID0gY2hhbmdlLT5jb21tYW5kX2lkOwogCiAJ CQkJCQlpZiAoIXNuYXBzaG90X25vdy0+Y29waWVkKQogCQkJCQkJewpAQCAtMzMwOSw3ICsz MzA5LDcgQEAgUmVvcmRlckJ1ZmZlckFkZFNuYXBzaG90KFJlb3JkZXJCdWZmZXIgKnJiLCBU cmFuc2FjdGlvbklkIHhpZCwKIHsKIAlSZW9yZGVyQnVmZmVyQ2hhbmdlICpjaGFuZ2UgPSBS ZW9yZGVyQnVmZmVyQWxsb2NDaGFuZ2UocmIpOwogCi0JY2hhbmdlLT5kYXRhLnNuYXBzaG90 ID0gc25hcDsKKwljaGFuZ2UtPnNuYXBzaG90ID0gc25hcDsKIAljaGFuZ2UtPmFjdGlvbiA9 IFJFT1JERVJfQlVGRkVSX0NIQU5HRV9JTlRFUk5BTF9TTkFQU0hPVDsKIAogCVJlb3JkZXJC dWZmZXJRdWV1ZUNoYW5nZShyYiwgeGlkLCBsc24sIGNoYW5nZSwgZmFsc2UpOwpAQCAtMzM1 OCw3ICszMzU4LDcgQEAgUmVvcmRlckJ1ZmZlckFkZE5ld0NvbW1hbmRJZChSZW9yZGVyQnVm ZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsCiB7CiAJUmVvcmRlckJ1ZmZlckNoYW5nZSAq Y2hhbmdlID0gUmVvcmRlckJ1ZmZlckFsbG9jQ2hhbmdlKHJiKTsKIAotCWNoYW5nZS0+ZGF0 YS5jb21tYW5kX2lkID0gY2lkOworCWNoYW5nZS0+Y29tbWFuZF9pZCA9IGNpZDsKIAljaGFu Z2UtPmFjdGlvbiA9IFJFT1JERVJfQlVGRkVSX0NIQU5HRV9JTlRFUk5BTF9DT01NQU5EX0lE OwogCiAJUmVvcmRlckJ1ZmZlclF1ZXVlQ2hhbmdlKHJiLCB4aWQsIGxzbiwgY2hhbmdlLCBm YWxzZSk7CkBAIC0zNDYyLDExICszNDYyLDExIEBAIFJlb3JkZXJCdWZmZXJBZGROZXdUdXBs ZUNpZHMoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLAogCiAJdHhuID0g UmVvcmRlckJ1ZmZlclRYTkJ5WGlkKHJiLCB4aWQsIHRydWUsIE5VTEwsIGxzbiwgdHJ1ZSk7 CiAKLQljaGFuZ2UtPmRhdGEudHVwbGVjaWQubG9jYXRvciA9IGxvY2F0b3I7Ci0JY2hhbmdl LT5kYXRhLnR1cGxlY2lkLnRpZCA9IHRpZDsKLQljaGFuZ2UtPmRhdGEudHVwbGVjaWQuY21p biA9IGNtaW47Ci0JY2hhbmdlLT5kYXRhLnR1cGxlY2lkLmNtYXggPSBjbWF4OwotCWNoYW5n ZS0+ZGF0YS50dXBsZWNpZC5jb21ib2NpZCA9IGNvbWJvY2lkOworCWNoYW5nZS0+dHVwbGVj aWQubG9jYXRvciA9IGxvY2F0b3I7CisJY2hhbmdlLT50dXBsZWNpZC50aWQgPSB0aWQ7CisJ Y2hhbmdlLT50dXBsZWNpZC5jbWluID0gY21pbjsKKwljaGFuZ2UtPnR1cGxlY2lkLmNtYXgg PSBjbWF4OworCWNoYW5nZS0+dHVwbGVjaWQuY29tYm9jaWQgPSBjb21ib2NpZDsKIAljaGFu Z2UtPmxzbiA9IGxzbjsKIAljaGFuZ2UtPnR4biA9IHR4bjsKIAljaGFuZ2UtPmFjdGlvbiA9 IFJFT1JERVJfQlVGRkVSX0NIQU5HRV9JTlRFUk5BTF9UVVBMRUNJRDsKQEAgLTM0ODcsMTAg KzM0ODcsMTAgQEAgUmVvcmRlckJ1ZmZlclF1ZXVlSW52YWxpZGF0aW9ucyhSZW9yZGVyQnVm ZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsCiAKIAljaGFuZ2UgPSBSZW9yZGVyQnVmZmVy QWxsb2NDaGFuZ2UocmIpOwogCWNoYW5nZS0+YWN0aW9uID0gUkVPUkRFUl9CVUZGRVJfQ0hB TkdFX0lOVkFMSURBVElPTjsKLQljaGFuZ2UtPmRhdGEuaW52YWwubmludmFsaWRhdGlvbnMg PSBubXNnczsKLQljaGFuZ2UtPmRhdGEuaW52YWwuaW52YWxpZGF0aW9ucyA9IChTaGFyZWRJ bnZhbGlkYXRpb25NZXNzYWdlICopCisJY2hhbmdlLT5pbnZhbC5uaW52YWxpZGF0aW9ucyA9 IG5tc2dzOworCWNoYW5nZS0+aW52YWwuaW52YWxpZGF0aW9ucyA9IChTaGFyZWRJbnZhbGlk YXRpb25NZXNzYWdlICopCiAJCXBhbGxvYyhzaXplb2YoU2hhcmVkSW52YWxpZGF0aW9uTWVz c2FnZSkgKiBubXNncyk7Ci0JbWVtY3B5KGNoYW5nZS0+ZGF0YS5pbnZhbC5pbnZhbGlkYXRp b25zLCBtc2dzLAorCW1lbWNweShjaGFuZ2UtPmludmFsLmludmFsaWRhdGlvbnMsIG1zZ3Ms CiAJCSAgIHNpemVvZihTaGFyZWRJbnZhbGlkYXRpb25NZXNzYWdlKSAqIG5tc2dzKTsKIAog CVJlb3JkZXJCdWZmZXJRdWV1ZUNoYW5nZShyYiwgeGlkLCBsc24sIGNoYW5nZSwgZmFsc2Up OwpAQCAtNDA5NSw4ICs0MDk1LDggQEAgUmVvcmRlckJ1ZmZlclNlcmlhbGl6ZUNoYW5nZShS ZW9yZGVyQnVmZmVyICpyYiwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJCVNpemUJCW9s ZGxlbiA9IDA7CiAJCQkJU2l6ZQkJbmV3bGVuID0gMDsKIAotCQkJCW9sZHR1cCA9IGNoYW5n ZS0+ZGF0YS50cC5vbGR0dXBsZTsKLQkJCQluZXd0dXAgPSBjaGFuZ2UtPmRhdGEudHAubmV3 dHVwbGU7CisJCQkJb2xkdHVwID0gY2hhbmdlLT50cC5vbGR0dXBsZTsKKwkJCQluZXd0dXAg PSBjaGFuZ2UtPnRwLm5ld3R1cGxlOwogCiAJCQkJaWYgKG9sZHR1cCkKIAkJCQl7CkBAIC00 MTQxLDkgKzQxNDEsOSBAQCBSZW9yZGVyQnVmZmVyU2VyaWFsaXplQ2hhbmdlKFJlb3JkZXJC dWZmZXIgKnJiLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJCWNhc2UgUkVPUkRFUl9CVUZG RVJfQ0hBTkdFX01FU1NBR0U6CiAJCQl7CiAJCQkJY2hhcgkgICAqZGF0YTsKLQkJCQlTaXpl CQlwcmVmaXhfc2l6ZSA9IHN0cmxlbihjaGFuZ2UtPmRhdGEubXNnLnByZWZpeCkgKyAxOwor CQkJCVNpemUJCXByZWZpeF9zaXplID0gc3RybGVuKGNoYW5nZS0+bXNnLnByZWZpeCkgKyAx OwogCi0JCQkJc3ogKz0gcHJlZml4X3NpemUgKyBjaGFuZ2UtPmRhdGEubXNnLm1lc3NhZ2Vf c2l6ZSArCisJCQkJc3ogKz0gcHJlZml4X3NpemUgKyBjaGFuZ2UtPm1zZy5tZXNzYWdlX3Np emUgKwogCQkJCQlzaXplb2YoU2l6ZSkgKyBzaXplb2YoU2l6ZSk7CiAJCQkJUmVvcmRlckJ1 ZmZlclNlcmlhbGl6ZVJlc2VydmUocmIsIHN6KTsKIApAQCAtNDE1NSwxNiArNDE1NSwxNiBA QCBSZW9yZGVyQnVmZmVyU2VyaWFsaXplQ2hhbmdlKFJlb3JkZXJCdWZmZXIgKnJiLCBSZW9y ZGVyQnVmZmVyVFhOICp0eG4sCiAJCQkJLyogd3JpdGUgdGhlIHByZWZpeCBpbmNsdWRpbmcg dGhlIHNpemUgKi8KIAkJCQltZW1jcHkoZGF0YSwgJnByZWZpeF9zaXplLCBzaXplb2YoU2l6 ZSkpOwogCQkJCWRhdGEgKz0gc2l6ZW9mKFNpemUpOwotCQkJCW1lbWNweShkYXRhLCBjaGFu Z2UtPmRhdGEubXNnLnByZWZpeCwKKwkJCQltZW1jcHkoZGF0YSwgY2hhbmdlLT5tc2cucHJl Zml4LAogCQkJCQkgICBwcmVmaXhfc2l6ZSk7CiAJCQkJZGF0YSArPSBwcmVmaXhfc2l6ZTsK IAogCQkJCS8qIHdyaXRlIHRoZSBtZXNzYWdlIGluY2x1ZGluZyB0aGUgc2l6ZSAqLwotCQkJ CW1lbWNweShkYXRhLCAmY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlX3NpemUsIHNpemVvZihT aXplKSk7CisJCQkJbWVtY3B5KGRhdGEsICZjaGFuZ2UtPm1zZy5tZXNzYWdlX3NpemUsIHNp emVvZihTaXplKSk7CiAJCQkJZGF0YSArPSBzaXplb2YoU2l6ZSk7Ci0JCQkJbWVtY3B5KGRh dGEsIGNoYW5nZS0+ZGF0YS5tc2cubWVzc2FnZSwKLQkJCQkJICAgY2hhbmdlLT5kYXRhLm1z Zy5tZXNzYWdlX3NpemUpOwotCQkJCWRhdGEgKz0gY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdl X3NpemU7CisJCQkJbWVtY3B5KGRhdGEsIGNoYW5nZS0+bXNnLm1lc3NhZ2UsCisJCQkJCSAg IGNoYW5nZS0+bXNnLm1lc3NhZ2Vfc2l6ZSk7CisJCQkJZGF0YSArPSBjaGFuZ2UtPm1zZy5t ZXNzYWdlX3NpemU7CiAKIAkJCQlicmVhazsKIAkJCX0KQEAgLTQxNzIsNyArNDE3Miw3IEBA IFJlb3JkZXJCdWZmZXJTZXJpYWxpemVDaGFuZ2UoUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3Jk ZXJCdWZmZXJUWE4gKnR4biwKIAkJCXsKIAkJCQljaGFyCSAgICpkYXRhOwogCQkJCVNpemUJ CWludmFsX3NpemUgPSBzaXplb2YoU2hhcmVkSW52YWxpZGF0aW9uTWVzc2FnZSkgKgotCQkJ CQljaGFuZ2UtPmRhdGEuaW52YWwubmludmFsaWRhdGlvbnM7CisJCQkJCWNoYW5nZS0+aW52 YWwubmludmFsaWRhdGlvbnM7CiAKIAkJCQlzeiArPSBpbnZhbF9zaXplOwogCkBAIC00MTgx LDcgKzQxODEsNyBAQCBSZW9yZGVyQnVmZmVyU2VyaWFsaXplQ2hhbmdlKFJlb3JkZXJCdWZm ZXIgKnJiLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAKIAkJCQkvKiBtaWdodCBoYXZlIGJl ZW4gcmVhbGxvY2F0ZWQgYWJvdmUgKi8KIAkJCQlvbmRpc2sgPSAoUmVvcmRlckJ1ZmZlckRp c2tDaGFuZ2UgKikgcmItPm91dGJ1ZjsKLQkJCQltZW1jcHkoZGF0YSwgY2hhbmdlLT5kYXRh LmludmFsLmludmFsaWRhdGlvbnMsIGludmFsX3NpemUpOworCQkJCW1lbWNweShkYXRhLCBj aGFuZ2UtPmludmFsLmludmFsaWRhdGlvbnMsIGludmFsX3NpemUpOwogCQkJCWRhdGEgKz0g aW52YWxfc2l6ZTsKIAogCQkJCWJyZWFrOwpAQCAtNDE5MSw3ICs0MTkxLDcgQEAgUmVvcmRl ckJ1ZmZlclNlcmlhbGl6ZUNoYW5nZShSZW9yZGVyQnVmZmVyICpyYiwgUmVvcmRlckJ1ZmZl clRYTiAqdHhuLAogCQkJCVNuYXBzaG90CXNuYXA7CiAJCQkJY2hhcgkgICAqZGF0YTsKIAot CQkJCXNuYXAgPSBjaGFuZ2UtPmRhdGEuc25hcHNob3Q7CisJCQkJc25hcCA9IGNoYW5nZS0+ c25hcHNob3Q7CiAKIAkJCQlzeiArPSBzaXplb2YoU25hcHNob3REYXRhKSArCiAJCQkJCXNp emVvZihUcmFuc2FjdGlvbklkKSAqIHNuYXAtPnhjbnQgKwpAQCAtNDIyNyw3ICs0MjI3LDcg QEAgUmVvcmRlckJ1ZmZlclNlcmlhbGl6ZUNoYW5nZShSZW9yZGVyQnVmZmVyICpyYiwgUmVv cmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJCWNoYXIJICAgKmRhdGE7CiAKIAkJCQkvKiBhY2Nv dW50IGZvciB0aGUgT0lEcyBvZiB0cnVuY2F0ZWQgcmVsYXRpb25zICovCi0JCQkJc2l6ZSA9 IHNpemVvZihPaWQpICogY2hhbmdlLT5kYXRhLnRydW5jYXRlLm5yZWxpZHM7CisJCQkJc2l6 ZSA9IHNpemVvZihPaWQpICogY2hhbmdlLT50cnVuY2F0ZS5ucmVsaWRzOwogCQkJCXN6ICs9 IHNpemU7CiAKIAkJCQkvKiBtYWtlIHN1cmUgd2UgaGF2ZSBlbm91Z2ggc3BhY2UgKi8KQEAg LTQyMzcsNyArNDIzNyw3IEBAIFJlb3JkZXJCdWZmZXJTZXJpYWxpemVDaGFuZ2UoUmVvcmRl ckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAkJCQkvKiBtaWdodCBoYXZl IGJlZW4gcmVhbGxvY2F0ZWQgYWJvdmUgKi8KIAkJCQlvbmRpc2sgPSAoUmVvcmRlckJ1ZmZl ckRpc2tDaGFuZ2UgKikgcmItPm91dGJ1ZjsKIAotCQkJCW1lbWNweShkYXRhLCBjaGFuZ2Ut PmRhdGEudHJ1bmNhdGUucmVsaWRzLCBzaXplKTsKKwkJCQltZW1jcHkoZGF0YSwgY2hhbmdl LT50cnVuY2F0ZS5yZWxpZHMsIHNpemUpOwogCQkJCWRhdGEgKz0gc2l6ZTsKIAogCQkJCWJy ZWFrOwpAQCAtNDQ1NCw4ICs0NDU0LDggQEAgUmVvcmRlckJ1ZmZlckNoYW5nZVNpemUoUmVv cmRlckJ1ZmZlckNoYW5nZSAqY2hhbmdlKQogCQkJCVNpemUJCW9sZGxlbiA9IDA7CiAJCQkJ U2l6ZQkJbmV3bGVuID0gMDsKIAotCQkJCW9sZHR1cCA9IGNoYW5nZS0+ZGF0YS50cC5vbGR0 dXBsZTsKLQkJCQluZXd0dXAgPSBjaGFuZ2UtPmRhdGEudHAubmV3dHVwbGU7CisJCQkJb2xk dHVwID0gY2hhbmdlLT50cC5vbGR0dXBsZTsKKwkJCQluZXd0dXAgPSBjaGFuZ2UtPnRwLm5l d3R1cGxlOwogCiAJCQkJaWYgKG9sZHR1cCkKIAkJCQl7CkBAIC00NDc1LDkgKzQ0NzUsOSBA QCBSZW9yZGVyQnVmZmVyQ2hhbmdlU2l6ZShSZW9yZGVyQnVmZmVyQ2hhbmdlICpjaGFuZ2Up CiAJCQl9CiAJCWNhc2UgUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX01FU1NBR0U6CiAJCQl7Ci0J CQkJU2l6ZQkJcHJlZml4X3NpemUgPSBzdHJsZW4oY2hhbmdlLT5kYXRhLm1zZy5wcmVmaXgp ICsgMTsKKwkJCQlTaXplCQlwcmVmaXhfc2l6ZSA9IHN0cmxlbihjaGFuZ2UtPm1zZy5wcmVm aXgpICsgMTsKIAotCQkJCXN6ICs9IHByZWZpeF9zaXplICsgY2hhbmdlLT5kYXRhLm1zZy5t ZXNzYWdlX3NpemUgKworCQkJCXN6ICs9IHByZWZpeF9zaXplICsgY2hhbmdlLT5tc2cubWVz c2FnZV9zaXplICsKIAkJCQkJc2l6ZW9mKFNpemUpICsgc2l6ZW9mKFNpemUpOwogCiAJCQkJ YnJlYWs7CkBAIC00NDg1LDE0ICs0NDg1LDE0IEBAIFJlb3JkZXJCdWZmZXJDaGFuZ2VTaXpl KFJlb3JkZXJCdWZmZXJDaGFuZ2UgKmNoYW5nZSkKIAkJY2FzZSBSRU9SREVSX0JVRkZFUl9D SEFOR0VfSU5WQUxJREFUSU9OOgogCQkJewogCQkJCXN6ICs9IHNpemVvZihTaGFyZWRJbnZh bGlkYXRpb25NZXNzYWdlKSAqCi0JCQkJCWNoYW5nZS0+ZGF0YS5pbnZhbC5uaW52YWxpZGF0 aW9uczsKKwkJCQkJY2hhbmdlLT5pbnZhbC5uaW52YWxpZGF0aW9uczsKIAkJCQlicmVhazsK IAkJCX0KIAkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfSU5URVJOQUxfU05BUFNIT1Q6 CiAJCQl7CiAJCQkJU25hcHNob3QJc25hcDsKIAotCQkJCXNuYXAgPSBjaGFuZ2UtPmRhdGEu c25hcHNob3Q7CisJCQkJc25hcCA9IGNoYW5nZS0+c25hcHNob3Q7CiAKIAkJCQlzeiArPSBz aXplb2YoU25hcHNob3REYXRhKSArCiAJCQkJCXNpemVvZihUcmFuc2FjdGlvbklkKSAqIHNu YXAtPnhjbnQgKwpAQCAtNDUwMiw3ICs0NTAyLDcgQEAgUmVvcmRlckJ1ZmZlckNoYW5nZVNp emUoUmVvcmRlckJ1ZmZlckNoYW5nZSAqY2hhbmdlKQogCQkJfQogCQljYXNlIFJFT1JERVJf QlVGRkVSX0NIQU5HRV9UUlVOQ0FURToKIAkJCXsKLQkJCQlzeiArPSBzaXplb2YoT2lkKSAq IGNoYW5nZS0+ZGF0YS50cnVuY2F0ZS5ucmVsaWRzOworCQkJCXN6ICs9IHNpemVvZihPaWQp ICogY2hhbmdlLT50cnVuY2F0ZS5ucmVsaWRzOwogCiAJCQkJYnJlYWs7CiAJCQl9CkBAIC00 Njg4LDI4ICs0Njg4LDI4IEBAIFJlb3JkZXJCdWZmZXJSZXN0b3JlQ2hhbmdlKFJlb3JkZXJC dWZmZXIgKnJiLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJCWNhc2UgUkVPUkRFUl9CVUZG RVJfQ0hBTkdFX1VQREFURToKIAkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfREVMRVRF OgogCQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5HRV9JTlRFUk5BTF9TUEVDX0lOU0VSVDoK LQkJCWlmIChjaGFuZ2UtPmRhdGEudHAub2xkdHVwbGUpCisJCQlpZiAoY2hhbmdlLT50cC5v bGR0dXBsZSkKIAkJCXsKIAkJCQl1aW50MzIJCXR1cGxlbGVuID0gKChIZWFwVHVwbGUpIGRh dGEpLT50X2xlbjsKIAotCQkJCWNoYW5nZS0+ZGF0YS50cC5vbGR0dXBsZSA9CisJCQkJY2hh bmdlLT50cC5vbGR0dXBsZSA9CiAJCQkJCVJlb3JkZXJCdWZmZXJBbGxvY1R1cGxlQnVmKHJi LCB0dXBsZWxlbiAtIFNpemVvZkhlYXBUdXBsZUhlYWRlcik7CiAKIAkJCQkvKiByZXN0b3Jl IC0+dHVwbGUgKi8KLQkJCQltZW1jcHkoY2hhbmdlLT5kYXRhLnRwLm9sZHR1cGxlLCBkYXRh LAorCQkJCW1lbWNweShjaGFuZ2UtPnRwLm9sZHR1cGxlLCBkYXRhLAogCQkJCQkgICBzaXpl b2YoSGVhcFR1cGxlRGF0YSkpOwogCQkJCWRhdGEgKz0gc2l6ZW9mKEhlYXBUdXBsZURhdGEp OwogCiAJCQkJLyogcmVzZXQgdF9kYXRhIHBvaW50ZXIgaW50byB0aGUgbmV3IHR1cGxlYnVm ICovCi0JCQkJY2hhbmdlLT5kYXRhLnRwLm9sZHR1cGxlLT50X2RhdGEgPQotCQkJCQkoSGVh cFR1cGxlSGVhZGVyKSAoKGNoYXIgKikgY2hhbmdlLT5kYXRhLnRwLm9sZHR1cGxlICsgSEVB UFRVUExFU0laRSk7CisJCQkJY2hhbmdlLT50cC5vbGR0dXBsZS0+dF9kYXRhID0KKwkJCQkJ KEhlYXBUdXBsZUhlYWRlcikgKChjaGFyICopIGNoYW5nZS0+dHAub2xkdHVwbGUgKyBIRUFQ VFVQTEVTSVpFKTsKIAogCQkJCS8qIHJlc3RvcmUgdHVwbGUgZGF0YSBpdHNlbGYgKi8KLQkJ CQltZW1jcHkoY2hhbmdlLT5kYXRhLnRwLm9sZHR1cGxlLT50X2RhdGEsIGRhdGEsIHR1cGxl bGVuKTsKKwkJCQltZW1jcHkoY2hhbmdlLT50cC5vbGR0dXBsZS0+dF9kYXRhLCBkYXRhLCB0 dXBsZWxlbik7CiAJCQkJZGF0YSArPSB0dXBsZWxlbjsKIAkJCX0KIAotCQkJaWYgKGNoYW5n ZS0+ZGF0YS50cC5uZXd0dXBsZSkKKwkJCWlmIChjaGFuZ2UtPnRwLm5ld3R1cGxlKQogCQkJ ewogCQkJCS8qIGhlcmUsIGRhdGEgbWlnaHQgbm90IGJlIHN1aXRhYmx5IGFsaWduZWQhICov CiAJCQkJdWludDMyCQl0dXBsZWxlbjsKQEAgLTQ3MTcsMjAgKzQ3MTcsMjAgQEAgUmVvcmRl ckJ1ZmZlclJlc3RvcmVDaGFuZ2UoUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJU WE4gKnR4biwKIAkJCQltZW1jcHkoJnR1cGxlbGVuLCBkYXRhICsgb2Zmc2V0b2YoSGVhcFR1 cGxlRGF0YSwgdF9sZW4pLAogCQkJCQkgICBzaXplb2YodWludDMyKSk7CiAKLQkJCQljaGFu Z2UtPmRhdGEudHAubmV3dHVwbGUgPQorCQkJCWNoYW5nZS0+dHAubmV3dHVwbGUgPQogCQkJ CQlSZW9yZGVyQnVmZmVyQWxsb2NUdXBsZUJ1ZihyYiwgdHVwbGVsZW4gLSBTaXplb2ZIZWFw VHVwbGVIZWFkZXIpOwogCiAJCQkJLyogcmVzdG9yZSAtPnR1cGxlICovCi0JCQkJbWVtY3B5 KGNoYW5nZS0+ZGF0YS50cC5uZXd0dXBsZSwgZGF0YSwKKwkJCQltZW1jcHkoY2hhbmdlLT50 cC5uZXd0dXBsZSwgZGF0YSwKIAkJCQkJICAgc2l6ZW9mKEhlYXBUdXBsZURhdGEpKTsKIAkJ CQlkYXRhICs9IHNpemVvZihIZWFwVHVwbGVEYXRhKTsKIAogCQkJCS8qIHJlc2V0IHRfZGF0 YSBwb2ludGVyIGludG8gdGhlIG5ldyB0dXBsZWJ1ZiAqLwotCQkJCWNoYW5nZS0+ZGF0YS50 cC5uZXd0dXBsZS0+dF9kYXRhID0KLQkJCQkJKEhlYXBUdXBsZUhlYWRlcikgKChjaGFyICop IGNoYW5nZS0+ZGF0YS50cC5uZXd0dXBsZSArIEhFQVBUVVBMRVNJWkUpOworCQkJCWNoYW5n ZS0+dHAubmV3dHVwbGUtPnRfZGF0YSA9CisJCQkJCShIZWFwVHVwbGVIZWFkZXIpICgoY2hh ciAqKSBjaGFuZ2UtPnRwLm5ld3R1cGxlICsgSEVBUFRVUExFU0laRSk7CiAKIAkJCQkvKiBy ZXN0b3JlIHR1cGxlIGRhdGEgaXRzZWxmICovCi0JCQkJbWVtY3B5KGNoYW5nZS0+ZGF0YS50 cC5uZXd0dXBsZS0+dF9kYXRhLCBkYXRhLCB0dXBsZWxlbik7CisJCQkJbWVtY3B5KGNoYW5n ZS0+dHAubmV3dHVwbGUtPnRfZGF0YSwgZGF0YSwgdHVwbGVsZW4pOwogCQkJCWRhdGEgKz0g dHVwbGVsZW47CiAJCQl9CiAKQEAgLTQ3NDIsMzMgKzQ3NDIsMzMgQEAgUmVvcmRlckJ1ZmZl clJlc3RvcmVDaGFuZ2UoUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJUWE4gKnR4 biwKIAkJCQkvKiByZWFkIHByZWZpeCAqLwogCQkJCW1lbWNweSgmcHJlZml4X3NpemUsIGRh dGEsIHNpemVvZihTaXplKSk7CiAJCQkJZGF0YSArPSBzaXplb2YoU2l6ZSk7Ci0JCQkJY2hh bmdlLT5kYXRhLm1zZy5wcmVmaXggPSBNZW1vcnlDb250ZXh0QWxsb2MocmItPmNvbnRleHQs Ci0JCQkJCQkJCQkJCQkJCQkgcHJlZml4X3NpemUpOwotCQkJCW1lbWNweShjaGFuZ2UtPmRh dGEubXNnLnByZWZpeCwgZGF0YSwgcHJlZml4X3NpemUpOwotCQkJCUFzc2VydChjaGFuZ2Ut PmRhdGEubXNnLnByZWZpeFtwcmVmaXhfc2l6ZSAtIDFdID09ICdcMCcpOworCQkJCWNoYW5n ZS0+bXNnLnByZWZpeCA9IE1lbW9yeUNvbnRleHRBbGxvYyhyYi0+Y29udGV4dCwKKwkJCQkJ CQkJCQkJCQkJcHJlZml4X3NpemUpOworCQkJCW1lbWNweShjaGFuZ2UtPm1zZy5wcmVmaXgs IGRhdGEsIHByZWZpeF9zaXplKTsKKwkJCQlBc3NlcnQoY2hhbmdlLT5tc2cucHJlZml4W3By ZWZpeF9zaXplIC0gMV0gPT0gJ1wwJyk7CiAJCQkJZGF0YSArPSBwcmVmaXhfc2l6ZTsKIAog CQkJCS8qIHJlYWQgdGhlIG1lc3NhZ2UgKi8KLQkJCQltZW1jcHkoJmNoYW5nZS0+ZGF0YS5t c2cubWVzc2FnZV9zaXplLCBkYXRhLCBzaXplb2YoU2l6ZSkpOworCQkJCW1lbWNweSgmY2hh bmdlLT5tc2cubWVzc2FnZV9zaXplLCBkYXRhLCBzaXplb2YoU2l6ZSkpOwogCQkJCWRhdGEg Kz0gc2l6ZW9mKFNpemUpOwotCQkJCWNoYW5nZS0+ZGF0YS5tc2cubWVzc2FnZSA9IE1lbW9y eUNvbnRleHRBbGxvYyhyYi0+Y29udGV4dCwKLQkJCQkJCQkJCQkJCQkJCSAgY2hhbmdlLT5k YXRhLm1zZy5tZXNzYWdlX3NpemUpOwotCQkJCW1lbWNweShjaGFuZ2UtPmRhdGEubXNnLm1l c3NhZ2UsIGRhdGEsCi0JCQkJCSAgIGNoYW5nZS0+ZGF0YS5tc2cubWVzc2FnZV9zaXplKTsK LQkJCQlkYXRhICs9IGNoYW5nZS0+ZGF0YS5tc2cubWVzc2FnZV9zaXplOworCQkJCWNoYW5n ZS0+bXNnLm1lc3NhZ2UgPSBNZW1vcnlDb250ZXh0QWxsb2MocmItPmNvbnRleHQsCisJCQkJ CQkJCQkJCQkJCSBjaGFuZ2UtPm1zZy5tZXNzYWdlX3NpemUpOworCQkJCW1lbWNweShjaGFu Z2UtPm1zZy5tZXNzYWdlLCBkYXRhLAorCQkJCQkgICBjaGFuZ2UtPm1zZy5tZXNzYWdlX3Np emUpOworCQkJCWRhdGEgKz0gY2hhbmdlLT5tc2cubWVzc2FnZV9zaXplOwogCiAJCQkJYnJl YWs7CiAJCQl9CiAJCWNhc2UgUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX0lOVkFMSURBVElPTjoK IAkJCXsKIAkJCQlTaXplCQlpbnZhbF9zaXplID0gc2l6ZW9mKFNoYXJlZEludmFsaWRhdGlv bk1lc3NhZ2UpICoKLQkJCQkJY2hhbmdlLT5kYXRhLmludmFsLm5pbnZhbGlkYXRpb25zOwor CQkJCQljaGFuZ2UtPmludmFsLm5pbnZhbGlkYXRpb25zOwogCi0JCQkJY2hhbmdlLT5kYXRh LmludmFsLmludmFsaWRhdGlvbnMgPQorCQkJCWNoYW5nZS0+aW52YWwuaW52YWxpZGF0aW9u cyA9CiAJCQkJCU1lbW9yeUNvbnRleHRBbGxvYyhyYi0+Y29udGV4dCwgaW52YWxfc2l6ZSk7 CiAKIAkJCQkvKiByZWFkIHRoZSBtZXNzYWdlICovCi0JCQkJbWVtY3B5KGNoYW5nZS0+ZGF0 YS5pbnZhbC5pbnZhbGlkYXRpb25zLCBkYXRhLCBpbnZhbF9zaXplKTsKKwkJCQltZW1jcHko Y2hhbmdlLT5pbnZhbC5pbnZhbGlkYXRpb25zLCBkYXRhLCBpbnZhbF9zaXplKTsKIAogCQkJ CWJyZWFrOwogCQkJfQpAQCAtNDc4NCw5ICs0Nzg0LDkgQEAgUmVvcmRlckJ1ZmZlclJlc3Rv cmVDaGFuZ2UoUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAkJ CQkJc2l6ZW9mKFRyYW5zYWN0aW9uSWQpICogb2xkc25hcC0+eGNudCArCiAJCQkJCXNpemVv ZihUcmFuc2FjdGlvbklkKSAqIChvbGRzbmFwLT5zdWJ4Y250ICsgMCk7CiAKLQkJCQljaGFu Z2UtPmRhdGEuc25hcHNob3QgPSBNZW1vcnlDb250ZXh0QWxsb2NaZXJvKHJiLT5jb250ZXh0 LCBzaXplKTsKKwkJCQljaGFuZ2UtPnNuYXBzaG90ID0gTWVtb3J5Q29udGV4dEFsbG9jWmVy byhyYi0+Y29udGV4dCwgc2l6ZSk7CiAKLQkJCQluZXdzbmFwID0gY2hhbmdlLT5kYXRhLnNu YXBzaG90OworCQkJCW5ld3NuYXAgPSBjaGFuZ2UtPnNuYXBzaG90OwogCiAJCQkJbWVtY3B5 KG5ld3NuYXAsIGRhdGEsIHNpemUpOwogCQkJCW5ld3NuYXAtPnhpcCA9IChUcmFuc2FjdGlv bklkICopCkBAIC00ODAwLDkgKzQ4MDAsOSBAQCBSZW9yZGVyQnVmZmVyUmVzdG9yZUNoYW5n ZShSZW9yZGVyQnVmZmVyICpyYiwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJewogCQkJ CU9pZAkJICAgKnJlbGlkczsKIAotCQkJCXJlbGlkcyA9IFJlb3JkZXJCdWZmZXJBbGxvY1Jl bGlkcyhyYiwgY2hhbmdlLT5kYXRhLnRydW5jYXRlLm5yZWxpZHMpOwotCQkJCW1lbWNweShy ZWxpZHMsIGRhdGEsIGNoYW5nZS0+ZGF0YS50cnVuY2F0ZS5ucmVsaWRzICogc2l6ZW9mKE9p ZCkpOwotCQkJCWNoYW5nZS0+ZGF0YS50cnVuY2F0ZS5yZWxpZHMgPSByZWxpZHM7CisJCQkJ cmVsaWRzID0gUmVvcmRlckJ1ZmZlckFsbG9jUmVsaWRzKHJiLCBjaGFuZ2UtPnRydW5jYXRl Lm5yZWxpZHMpOworCQkJCW1lbWNweShyZWxpZHMsIGRhdGEsIGNoYW5nZS0+dHJ1bmNhdGUu bnJlbGlkcyAqIHNpemVvZihPaWQpKTsKKwkJCQljaGFuZ2UtPnRydW5jYXRlLnJlbGlkcyA9 IHJlbGlkczsKIAogCQkJCWJyZWFrOwogCQkJfQpAQCAtNDk5MSw3ICs0OTkxLDcgQEAgUmVv cmRlckJ1ZmZlclRvYXN0QXBwZW5kQ2h1bmsoUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJC dWZmZXJUWE4gKnR4biwKIAogCUFzc2VydChJc1RvYXN0UmVsYXRpb24ocmVsYXRpb24pKTsK IAotCW5ld3R1cCA9IGNoYW5nZS0+ZGF0YS50cC5uZXd0dXBsZTsKKwluZXd0dXAgPSBjaGFu Z2UtPnRwLm5ld3R1cGxlOwogCWNodW5rX2lkID0gRGF0dW1HZXRPYmplY3RJZChmYXN0Z2V0 YXR0cihuZXd0dXAsIDEsIGRlc2MsICZpc251bGwpKTsKIAlBc3NlcnQoIWlzbnVsbCk7CiAJ Y2h1bmtfc2VxID0gRGF0dW1HZXRJbnQzMihmYXN0Z2V0YXR0cihuZXd0dXAsIDIsIGRlc2Ms ICZpc251bGwpKTsKQEAgLTUwOTAsNyArNTA5MCw3IEBAIFJlb3JkZXJCdWZmZXJUb2FzdFJl cGxhY2UoUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAlvbGRj b250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHJiLT5jb250ZXh0KTsKIAogCS8qIHdl IHNob3VsZCBvbmx5IGhhdmUgdG9hc3QgdHVwbGVzIGluIGFuIElOU0VSVCBvciBVUERBVEUg Ki8KLQlBc3NlcnQoY2hhbmdlLT5kYXRhLnRwLm5ld3R1cGxlKTsKKwlBc3NlcnQoY2hhbmdl LT50cC5uZXd0dXBsZSk7CiAKIAlkZXNjID0gUmVsYXRpb25HZXREZXNjcihyZWxhdGlvbik7 CiAKQEAgLTUxMDYsNyArNTEwNiw3IEBAIFJlb3JkZXJCdWZmZXJUb2FzdFJlcGxhY2UoUmVv cmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAlpc251bGwgPSBwYWxs b2MwKHNpemVvZihib29sKSAqIGRlc2MtPm5hdHRzKTsKIAlmcmVlID0gcGFsbG9jMChzaXpl b2YoYm9vbCkgKiBkZXNjLT5uYXR0cyk7CiAKLQluZXd0dXAgPSBjaGFuZ2UtPmRhdGEudHAu bmV3dHVwbGU7CisJbmV3dHVwID0gY2hhbmdlLT50cC5uZXd0dXBsZTsKIAogCWhlYXBfZGVm b3JtX3R1cGxlKG5ld3R1cCwgZGVzYywgYXR0cnMsIGlzbnVsbCk7CiAKQEAgLTUxNzcsNyAr NTE3Nyw3IEBAIFJlb3JkZXJCdWZmZXJUb2FzdFJlcGxhY2UoUmVvcmRlckJ1ZmZlciAqcmIs IFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAkJCVBvaW50ZXIJCWNodW5rOwogCiAJCQljY2hh bmdlID0gZGxpc3RfY29udGFpbmVyKFJlb3JkZXJCdWZmZXJDaGFuZ2UsIG5vZGUsIGl0LmN1 cik7Ci0JCQljdHVwID0gY2NoYW5nZS0+ZGF0YS50cC5uZXd0dXBsZTsKKwkJCWN0dXAgPSBj Y2hhbmdlLT50cC5uZXd0dXBsZTsKIAkJCWNodW5rID0gRGF0dW1HZXRQb2ludGVyKGZhc3Rn ZXRhdHRyKGN0dXAsIDMsIHRvYXN0X2Rlc2MsICZjaXNudWxsKSk7CiAKIAkJCUFzc2VydCgh Y2lzbnVsbCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1 dC9wZ291dHB1dC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRw dXQuYwppbmRleCA5MmViMTcwNDljMy4uN2NkOTNjMjE5NjQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKKysrIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwpAQCAtMTUwMiw3ICsxNTAyLDcg QEAgcGdvdXRwdXRfY2hhbmdlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgUmVvcmRl ckJ1ZmZlclRYTiAqdHhuLAogCQkJICogaWRlbnRpdHkgaXMgbm90IGRlZmluZWQgZm9yIGEg dGFibGUuIFNpbmNlIHRoZSBERUxFVEUgYWN0aW9uCiAJCQkgKiBjYW4ndCBiZSBwdWJsaXNo ZWQsIHdlIHNpbXBseSByZXR1cm4uCiAJCQkgKi8KLQkJCWlmICghY2hhbmdlLT5kYXRhLnRw Lm9sZHR1cGxlKQorCQkJaWYgKCFjaGFuZ2UtPnRwLm9sZHR1cGxlKQogCQkJewogCQkJCWVs b2coREVCVUcxLCAiZGlkbid0IHNlbmQgREVMRVRFIGNoYW5nZSBiZWNhdXNlIG9mIG1pc3Np bmcgb2xkdHVwbGUiKTsKIAkJCQlyZXR1cm47CkBAIC0xNTIzLDEwICsxNTIzLDEwIEBAIHBn b3V0cHV0X2NoYW5nZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJlb3JkZXJCdWZm ZXJUWE4gKnR4biwKIAkJdGFyZ2V0cmVsID0gYW5jZXN0b3I7CiAJfQogCi0JaWYgKGNoYW5n ZS0+ZGF0YS50cC5vbGR0dXBsZSkKKwlpZiAoY2hhbmdlLT50cC5vbGR0dXBsZSkKIAl7CiAJ CW9sZF9zbG90ID0gcmVsZW50cnktPm9sZF9zbG90OwotCQlFeGVjU3RvcmVIZWFwVHVwbGUo Y2hhbmdlLT5kYXRhLnRwLm9sZHR1cGxlLCBvbGRfc2xvdCwgZmFsc2UpOworCQlFeGVjU3Rv cmVIZWFwVHVwbGUoY2hhbmdlLT50cC5vbGR0dXBsZSwgb2xkX3Nsb3QsIGZhbHNlKTsKIAog CQkvKiBDb252ZXJ0IHR1cGxlIGlmIG5lZWRlZC4gKi8KIAkJaWYgKHJlbGVudHJ5LT5hdHRy bWFwKQpAQCAtMTUzOCwxMCArMTUzOCwxMCBAQCBwZ291dHB1dF9jaGFuZ2UoTG9naWNhbERl Y29kaW5nQ29udGV4dCAqY3R4LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJCX0KIAl9CiAK LQlpZiAoY2hhbmdlLT5kYXRhLnRwLm5ld3R1cGxlKQorCWlmIChjaGFuZ2UtPnRwLm5ld3R1 cGxlKQogCXsKIAkJbmV3X3Nsb3QgPSByZWxlbnRyeS0+bmV3X3Nsb3Q7Ci0JCUV4ZWNTdG9y ZUhlYXBUdXBsZShjaGFuZ2UtPmRhdGEudHAubmV3dHVwbGUsIG5ld19zbG90LCBmYWxzZSk7 CisJCUV4ZWNTdG9yZUhlYXBUdXBsZShjaGFuZ2UtPnRwLm5ld3R1cGxlLCBuZXdfc2xvdCwg ZmFsc2UpOwogCiAJCS8qIENvbnZlcnQgdHVwbGUgaWYgbmVlZGVkLiAqLwogCQlpZiAocmVs ZW50cnktPmF0dHJtYXApCkBAIC0xNjg0LDggKzE2ODQsOCBAQCBwZ291dHB1dF90cnVuY2F0 ZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwK IAkJCQkJCQkJICB4aWQsCiAJCQkJCQkJCSAgbnJlbGlkcywKIAkJCQkJCQkJICByZWxpZHMs Ci0JCQkJCQkJCSAgY2hhbmdlLT5kYXRhLnRydW5jYXRlLmNhc2NhZGUsCi0JCQkJCQkJCSAg Y2hhbmdlLT5kYXRhLnRydW5jYXRlLnJlc3RhcnRfc2Vxcyk7CisJCQkJCQkJCSAgY2hhbmdl LT50cnVuY2F0ZS5jYXNjYWRlLAorCQkJCQkJCQkgIGNoYW5nZS0+dHJ1bmNhdGUucmVzdGFy dF9zZXFzKTsKIAkJT3V0cHV0UGx1Z2luV3JpdGUoY3R4LCB0cnVlKTsKIAl9CiAKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaCBiL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaAppbmRleCA5MWRjN2U1ZTQ0OC4u YmJiZGYwOThjNzEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3Jk ZXJidWZmZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVy LmgKQEAgLTE1NCw3ICsxNTQsNyBAQCB0eXBlZGVmIHN0cnVjdCBSZW9yZGVyQnVmZmVyQ2hh bmdlCiAJCQl1aW50MzIJCW5pbnZhbGlkYXRpb25zOyAvKiBOdW1iZXIgb2YgbWVzc2FnZXMg Ki8KIAkJCVNoYXJlZEludmFsaWRhdGlvbk1lc3NhZ2UgKmludmFsaWRhdGlvbnM7CS8qIGlu dmFsaWRhdGlvbiBtZXNzYWdlICovCiAJCX0JCQlpbnZhbDsKLQl9CQkJZGF0YTsKKwl9Owog CiAJLyoKIAkgKiBXaGlsZSBpbiB1c2UgdGhpcyBpcyBob3cgYSBjaGFuZ2UgaXMgbGlua2Vk IGludG8gYSB0cmFuc2FjdGlvbnMsCi0tIAoyLjUxLjAKCg== --------------XMilSvfSoQNhBmwudkXUWZaX Content-Type: text/plain; charset=UTF-8; name="0007-C11-anonymous-unions-ecpg.patch" Content-Disposition: attachment; filename="0007-C11-anonymous-unions-ecpg.patch" Content-Transfer-Encoding: base64 RnJvbSAwZWQ3ODlmNWIwNWM4ZTEyZjdiYzJjNzFjYWViMjM2MjhjNzAxMjkxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAyMiBTZXAgMjAyNSAxNDo0Nzo0OCArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMDcvMjNdIEMxMSBhbm9ueW1vdXMgdW5pb25zIFtlY3BnXQoKLS0tCiBzcmMv aW50ZXJmYWNlcy9lY3BnL3ByZXByb2MvZGVzY3JpcHRvci5jIHwgIDIgKy0KIHNyYy9pbnRl cmZhY2VzL2VjcGcvcHJlcHJvYy9lY3BnLmhlYWRlciAgfCA2MCArKysrKysrKysrKystLS0t LS0tLS0tLS0KIHNyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy9lY3BnLnRyYWlsZXIgfCAg NCArLQogc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVwcm9jL3R5cGUuYyAgICAgICB8IDQ2ICsr KysrKysrKy0tLS0tLS0tLQogc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVwcm9jL3R5cGUuaCAg ICAgICB8ICAyICstCiBzcmMvaW50ZXJmYWNlcy9lY3BnL3ByZXByb2MvdmFyaWFibGUuYyAg IHwgNDIgKysrKysrKystLS0tLS0tLS0KIDYgZmlsZXMgY2hhbmdlZCwgNzggaW5zZXJ0aW9u cygrKSwgNzggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvZWNw Zy9wcmVwcm9jL2Rlc2NyaXB0b3IuYyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy9k ZXNjcmlwdG9yLmMKaW5kZXggZThjNzAxNmJkYzEuLjJmNjgyODgwZmQyIDEwMDY0NAotLS0g YS9zcmMvaW50ZXJmYWNlcy9lY3BnL3ByZXByb2MvZGVzY3JpcHRvci5jCisrKyBiL3NyYy9p bnRlcmZhY2VzL2VjcGcvcHJlcHJvYy9kZXNjcmlwdG9yLmMKQEAgLTM1Nyw3ICszNTcsNyBA QCBzcWxkYV92YXJpYWJsZShjb25zdCBjaGFyICpuYW1lKQogCXAtPnR5cGUtPnR5cGVfbmFt ZSA9IE5VTEw7CiAJcC0+dHlwZS0+c2l6ZSA9IE5VTEw7CiAJcC0+dHlwZS0+c3RydWN0X3Np emVvZiA9IE5VTEw7Ci0JcC0+dHlwZS0+dS5lbGVtZW50ID0gTlVMTDsKKwlwLT50eXBlLT5l bGVtZW50ID0gTlVMTDsKIAlwLT50eXBlLT5jb3VudGVyID0gMDsKIAlwLT5icmFjZV9sZXZl bCA9IDA7CiAJcC0+bmV4dCA9IE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9l Y3BnL3ByZXByb2MvZWNwZy5oZWFkZXIgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3ByZXByb2Mv ZWNwZy5oZWFkZXIKaW5kZXggZGRlNjlhMzk2OTUuLjM3NDg3ODUzYTcwIDEwMDY0NAotLS0g YS9zcmMvaW50ZXJmYWNlcy9lY3BnL3ByZXByb2MvZWNwZy5oZWFkZXIKKysrIGIvc3JjL2lu dGVyZmFjZXMvZWNwZy9wcmVwcm9jL2VjcGcuaGVhZGVyCkBAIC0xNTAsMTQgKzE1MCwxNCBA QCBjcmVhdGVfcXVlc3Rpb25tYXJrcyhjb25zdCBjaGFyICpuYW1lLCBib29sIGFycmF5KQog CSAqIHBhcmFtZXRlciBpcyBhbiBlcnJvciBhbnl3aGVyZSBlbHNlIHNvIHdlIGRvbid0IGhh dmUgdG8gd29ycnkgaGVyZS4KIAkgKi8KIAotCWlmIChwLT50eXBlLT50eXBlID09IEVDUEd0 X3N0cnVjdCB8fCAoYXJyYXkgJiYgcC0+dHlwZS0+dHlwZSA9PSBFQ1BHdF9hcnJheSAmJiBw LT50eXBlLT51LmVsZW1lbnQtPnR5cGUgPT0gRUNQR3Rfc3RydWN0KSkKKwlpZiAocC0+dHlw ZS0+dHlwZSA9PSBFQ1BHdF9zdHJ1Y3QgfHwgKGFycmF5ICYmIHAtPnR5cGUtPnR5cGUgPT0g RUNQR3RfYXJyYXkgJiYgcC0+dHlwZS0+ZWxlbWVudC0+dHlwZSA9PSBFQ1BHdF9zdHJ1Y3Qp KQogCXsKIAkJc3RydWN0IEVDUEdzdHJ1Y3RfbWVtYmVyICptOwogCiAJCWlmIChwLT50eXBl LT50eXBlID09IEVDUEd0X3N0cnVjdCkKLQkJCW0gPSBwLT50eXBlLT51Lm1lbWJlcnM7CisJ CQltID0gcC0+dHlwZS0+bWVtYmVyczsKIAkJZWxzZQotCQkJbSA9IHAtPnR5cGUtPnUuZWxl bWVudC0+dS5tZW1iZXJzOworCQkJbSA9IHAtPnR5cGUtPmVsZW1lbnQtPm1lbWJlcnM7CiAK IAkJZm9yIChjb3VudCA9IDA7IG0gIT0gTlVMTDsgbSA9IG0tPm5leHQsIGNvdW50KyspOwog CX0KQEAgLTIzNiwxMiArMjM2LDEyIEBAIGFkanVzdF9vdXRvZnNjb3BlX2N1cnNvcl92YXJz KHN0cnVjdCBjdXJzb3IgKmN1cikKIAkJCQkJICYmIGF0b2kocHRyLT52YXJpYWJsZS0+dHlw ZS0+c2l6ZSkgPiAxKQogCQkJewogCQkJCW5ld3ZhciA9IG5ld192YXJpYWJsZShjYXRfc3Ry KDQsICIoIiwKLQkJCQkJCQkJCQkJICBlY3BnX3R5cGVfbmFtZShwdHItPnZhcmlhYmxlLT50 eXBlLT51LmVsZW1lbnQtPnR5cGUpLAorCQkJCQkJCQkJCQkgIGVjcGdfdHlwZV9uYW1lKHB0 ci0+dmFyaWFibGUtPnR5cGUtPmVsZW1lbnQtPnR5cGUpLAogCQkJCQkJCQkJCQkgICIgKiko RUNQR2dldF92YXIoIiwKIAkJCQkJCQkJCQkJICB2YXJfdGV4dCksCi0JCQkJCQkJCQkgIEVD UEdtYWtlX2FycmF5X3R5cGUoRUNQR21ha2Vfc2ltcGxlX3R5cGUocHRyLT52YXJpYWJsZS0+ dHlwZS0+dS5lbGVtZW50LT50eXBlLAorCQkJCQkJCQkJICBFQ1BHbWFrZV9hcnJheV90eXBl KEVDUEdtYWtlX3NpbXBsZV90eXBlKHB0ci0+dmFyaWFibGUtPnR5cGUtPmVsZW1lbnQtPnR5 cGUsCiAJCQkJCQkJCQkJCQkJCQkJCQkJICAgIjEiLAotCQkJCQkJCQkJCQkJCQkJCQkJCSAg IHB0ci0+dmFyaWFibGUtPnR5cGUtPnUuZWxlbWVudC0+Y291bnRlciksCisJCQkJCQkJCQkJ CQkJCQkJCQkJICAgcHRyLT52YXJpYWJsZS0+dHlwZS0+ZWxlbWVudC0+Y291bnRlciksCiAJ CQkJCQkJCQkJCQkJCSAgcHRyLT52YXJpYWJsZS0+dHlwZS0+c2l6ZSksCiAJCQkJCQkJCQkg IDApOwogCQkJfQpAQCAtMjcyLDcgKzI3Miw3IEBAIGFkanVzdF9vdXRvZnNjb3BlX2N1cnNv cl92YXJzKHN0cnVjdCBjdXJzb3IgKmN1cikKIAkJCQkJCQkJCQkJICAiICopKEVDUEdnZXRf dmFyKCIsCiAJCQkJCQkJCQkJCSAgdmFyX3RleHQsCiAJCQkJCQkJCQkJCSAgIikiKSwKLQkJ CQkJCQkJCSAgRUNQR21ha2Vfc3RydWN0X3R5cGUocHRyLT52YXJpYWJsZS0+dHlwZS0+dS5t ZW1iZXJzLAorCQkJCQkJCQkJICBFQ1BHbWFrZV9zdHJ1Y3RfdHlwZShwdHItPnZhcmlhYmxl LT50eXBlLT5tZW1iZXJzLAogCQkJCQkJCQkJCQkJCQkgICBwdHItPnZhcmlhYmxlLT50eXBl LT50eXBlLAogCQkJCQkJCQkJCQkJCQkgICBwdHItPnZhcmlhYmxlLT50eXBlLT50eXBlX25h bWUsCiAJCQkJCQkJCQkJCQkJCSAgIHB0ci0+dmFyaWFibGUtPnR5cGUtPnN0cnVjdF9zaXpl b2YpLApAQCAtMjgxLDI5ICsyODEsMjkgQEAgYWRqdXN0X291dG9mc2NvcGVfY3Vyc29yX3Zh cnMoc3RydWN0IGN1cnNvciAqY3VyKQogCQkJfQogCQkJZWxzZSBpZiAocHRyLT52YXJpYWJs ZS0+dHlwZS0+dHlwZSA9PSBFQ1BHdF9hcnJheSkKIAkJCXsKLQkJCQlpZiAocHRyLT52YXJp YWJsZS0+dHlwZS0+dS5lbGVtZW50LT50eXBlID09IEVDUEd0X3N0cnVjdAotCQkJCQl8fCBw dHItPnZhcmlhYmxlLT50eXBlLT51LmVsZW1lbnQtPnR5cGUgPT0gRUNQR3RfdW5pb24pCisJ CQkJaWYgKHB0ci0+dmFyaWFibGUtPnR5cGUtPmVsZW1lbnQtPnR5cGUgPT0gRUNQR3Rfc3Ry dWN0CisJCQkJCXx8IHB0ci0+dmFyaWFibGUtPnR5cGUtPmVsZW1lbnQtPnR5cGUgPT0gRUNQ R3RfdW5pb24pCiAJCQkJewogCQkJCQluZXd2YXIgPSBuZXdfdmFyaWFibGUoY2F0X3N0cig1 LCAiKCooIiwKLQkJCQkJCQkJCQkJCSAgcHRyLT52YXJpYWJsZS0+dHlwZS0+dS5lbGVtZW50 LT50eXBlX25hbWUsCisJCQkJCQkJCQkJCQkgIHB0ci0+dmFyaWFibGUtPnR5cGUtPmVsZW1l bnQtPnR5cGVfbmFtZSwKIAkJCQkJCQkJCQkJCSAgIiAqKShFQ1BHZ2V0X3ZhcigiLAogCQkJ CQkJCQkJCQkJICB2YXJfdGV4dCwKIAkJCQkJCQkJCQkJCSAgIikiKSwKLQkJCQkJCQkJCQkg IEVDUEdtYWtlX3N0cnVjdF90eXBlKHB0ci0+dmFyaWFibGUtPnR5cGUtPnUuZWxlbWVudC0+ dS5tZW1iZXJzLAotCQkJCQkJCQkJCQkJCQkJICAgcHRyLT52YXJpYWJsZS0+dHlwZS0+dS5l bGVtZW50LT50eXBlLAotCQkJCQkJCQkJCQkJCQkJICAgcHRyLT52YXJpYWJsZS0+dHlwZS0+ dS5lbGVtZW50LT50eXBlX25hbWUsCi0JCQkJCQkJCQkJCQkJCQkgICBwdHItPnZhcmlhYmxl LT50eXBlLT51LmVsZW1lbnQtPnN0cnVjdF9zaXplb2YpLAorCQkJCQkJCQkJCSAgRUNQR21h a2Vfc3RydWN0X3R5cGUocHRyLT52YXJpYWJsZS0+dHlwZS0+ZWxlbWVudC0+bWVtYmVycywK KwkJCQkJCQkJCQkJCQkJCSAgIHB0ci0+dmFyaWFibGUtPnR5cGUtPmVsZW1lbnQtPnR5cGUs CisJCQkJCQkJCQkJCQkJCQkgICBwdHItPnZhcmlhYmxlLT50eXBlLT5lbGVtZW50LT50eXBl X25hbWUsCisJCQkJCQkJCQkJCQkJCQkgICBwdHItPnZhcmlhYmxlLT50eXBlLT5lbGVtZW50 LT5zdHJ1Y3Rfc2l6ZW9mKSwKIAkJCQkJCQkJCQkgIDApOwogCQkJCX0KIAkJCQllbHNlCiAJ CQkJewogCQkJCQluZXd2YXIgPSBuZXdfdmFyaWFibGUoY2F0X3N0cig0LCAiKCIsCi0JCQkJ CQkJCQkJCQkgIGVjcGdfdHlwZV9uYW1lKHB0ci0+dmFyaWFibGUtPnR5cGUtPnUuZWxlbWVu dC0+dHlwZSksCisJCQkJCQkJCQkJCQkgIGVjcGdfdHlwZV9uYW1lKHB0ci0+dmFyaWFibGUt PnR5cGUtPmVsZW1lbnQtPnR5cGUpLAogCQkJCQkJCQkJCQkJICAiICopKEVDUEdnZXRfdmFy KCIsCiAJCQkJCQkJCQkJCQkgIHZhcl90ZXh0KSwKLQkJCQkJCQkJCQkgIEVDUEdtYWtlX2Fy cmF5X3R5cGUoRUNQR21ha2Vfc2ltcGxlX3R5cGUocHRyLT52YXJpYWJsZS0+dHlwZS0+dS5l bGVtZW50LT50eXBlLAotCQkJCQkJCQkJCQkJCQkJCQkJCQkgICBwdHItPnZhcmlhYmxlLT50 eXBlLT51LmVsZW1lbnQtPnNpemUsCi0JCQkJCQkJCQkJCQkJCQkJCQkJCSAgIHB0ci0+dmFy aWFibGUtPnR5cGUtPnUuZWxlbWVudC0+Y291bnRlciksCisJCQkJCQkJCQkJICBFQ1BHbWFr ZV9hcnJheV90eXBlKEVDUEdtYWtlX3NpbXBsZV90eXBlKHB0ci0+dmFyaWFibGUtPnR5cGUt PmVsZW1lbnQtPnR5cGUsCisJCQkJCQkJCQkJCQkJCQkJCQkJCSAgIHB0ci0+dmFyaWFibGUt PnR5cGUtPmVsZW1lbnQtPnNpemUsCisJCQkJCQkJCQkJCQkJCQkJCQkJCSAgIHB0ci0+dmFy aWFibGUtPnR5cGUtPmVsZW1lbnQtPmNvdW50ZXIpLAogCQkJCQkJCQkJCQkJCQkJICBwdHIt PnZhcmlhYmxlLT50eXBlLT5zaXplKSwKIAkJCQkJCQkJCQkgIDApOwogCQkJCQl2YXJfcHRy ID0gdHJ1ZTsKQEAgLTM1OCw3ICszNTgsNyBAQCBhZGp1c3Rfb3V0b2ZzY29wZV9jdXJzb3Jf dmFycyhzdHJ1Y3QgY3Vyc29yICpjdXIpCiAJCQkJCQkJCQkJCQkgICIgKikoRUNQR2dldF92 YXIoIiwKIAkJCQkJCQkJCQkJCSAgdmFyX3RleHQsCiAJCQkJCQkJCQkJCQkgICIpIiksCi0J CQkJCQkJCQkJICBFQ1BHbWFrZV9zdHJ1Y3RfdHlwZShwdHItPmluZGljYXRvci0+dHlwZS0+ dS5tZW1iZXJzLAorCQkJCQkJCQkJCSAgRUNQR21ha2Vfc3RydWN0X3R5cGUocHRyLT5pbmRp Y2F0b3ItPnR5cGUtPm1lbWJlcnMsCiAJCQkJCQkJCQkJCQkJCQkgICBwdHItPmluZGljYXRv ci0+dHlwZS0+dHlwZSwKIAkJCQkJCQkJCQkJCQkJCSAgIHB0ci0+aW5kaWNhdG9yLT50eXBl LT50eXBlX25hbWUsCiAJCQkJCQkJCQkJCQkJCQkgICBwdHItPmluZGljYXRvci0+dHlwZS0+ c3RydWN0X3NpemVvZiksCkBAIC0zNjcsMjkgKzM2NywyOSBAQCBhZGp1c3Rfb3V0b2ZzY29w ZV9jdXJzb3JfdmFycyhzdHJ1Y3QgY3Vyc29yICpjdXIpCiAJCQkJfQogCQkJCWVsc2UgaWYg KHB0ci0+aW5kaWNhdG9yLT50eXBlLT50eXBlID09IEVDUEd0X2FycmF5KQogCQkJCXsKLQkJ CQkJaWYgKHB0ci0+aW5kaWNhdG9yLT50eXBlLT51LmVsZW1lbnQtPnR5cGUgPT0gRUNQR3Rf c3RydWN0Ci0JCQkJCQl8fCBwdHItPmluZGljYXRvci0+dHlwZS0+dS5lbGVtZW50LT50eXBl ID09IEVDUEd0X3VuaW9uKQorCQkJCQlpZiAocHRyLT5pbmRpY2F0b3ItPnR5cGUtPmVsZW1l bnQtPnR5cGUgPT0gRUNQR3Rfc3RydWN0CisJCQkJCQl8fCBwdHItPmluZGljYXRvci0+dHlw ZS0+ZWxlbWVudC0+dHlwZSA9PSBFQ1BHdF91bmlvbikKIAkJCQkJewogCQkJCQkJbmV3aW5k ID0gbmV3X3ZhcmlhYmxlKGNhdF9zdHIoNSwgIigqKCIsCi0JCQkJCQkJCQkJCQkJICBwdHIt PmluZGljYXRvci0+dHlwZS0+dS5lbGVtZW50LT50eXBlX25hbWUsCisJCQkJCQkJCQkJCQkJ ICBwdHItPmluZGljYXRvci0+dHlwZS0+ZWxlbWVudC0+dHlwZV9uYW1lLAogCQkJCQkJCQkJ CQkJCSAgIiAqKShFQ1BHZ2V0X3ZhcigiLAogCQkJCQkJCQkJCQkJCSAgdmFyX3RleHQsCiAJ CQkJCQkJCQkJCQkJICAiKSIpLAotCQkJCQkJCQkJCQkgIEVDUEdtYWtlX3N0cnVjdF90eXBl KHB0ci0+aW5kaWNhdG9yLT50eXBlLT51LmVsZW1lbnQtPnUubWVtYmVycywKLQkJCQkJCQkJ CQkJCQkJCQkgICBwdHItPmluZGljYXRvci0+dHlwZS0+dS5lbGVtZW50LT50eXBlLAotCQkJ CQkJCQkJCQkJCQkJCSAgIHB0ci0+aW5kaWNhdG9yLT50eXBlLT51LmVsZW1lbnQtPnR5cGVf bmFtZSwKLQkJCQkJCQkJCQkJCQkJCQkgICBwdHItPmluZGljYXRvci0+dHlwZS0+dS5lbGVt ZW50LT5zdHJ1Y3Rfc2l6ZW9mKSwKKwkJCQkJCQkJCQkJICBFQ1BHbWFrZV9zdHJ1Y3RfdHlw ZShwdHItPmluZGljYXRvci0+dHlwZS0+ZWxlbWVudC0+bWVtYmVycywKKwkJCQkJCQkJCQkJ CQkJCQkgICBwdHItPmluZGljYXRvci0+dHlwZS0+ZWxlbWVudC0+dHlwZSwKKwkJCQkJCQkJ CQkJCQkJCQkgICBwdHItPmluZGljYXRvci0+dHlwZS0+ZWxlbWVudC0+dHlwZV9uYW1lLAor CQkJCQkJCQkJCQkJCQkJCSAgIHB0ci0+aW5kaWNhdG9yLT50eXBlLT5lbGVtZW50LT5zdHJ1 Y3Rfc2l6ZW9mKSwKIAkJCQkJCQkJCQkJICAwKTsKIAkJCQkJfQogCQkJCQllbHNlCiAJCQkJ CXsKIAkJCQkJCW5ld2luZCA9IG5ld192YXJpYWJsZShjYXRfc3RyKDQsICIoIiwKLQkJCQkJ CQkJCQkJCQkgIGVjcGdfdHlwZV9uYW1lKHB0ci0+aW5kaWNhdG9yLT50eXBlLT51LmVsZW1l bnQtPnR5cGUpLAorCQkJCQkJCQkJCQkJCSAgZWNwZ190eXBlX25hbWUocHRyLT5pbmRpY2F0 b3ItPnR5cGUtPmVsZW1lbnQtPnR5cGUpLAogCQkJCQkJCQkJCQkJCSAgIiAqKShFQ1BHZ2V0 X3ZhcigiLAogCQkJCQkJCQkJCQkJCSAgdmFyX3RleHQpLAotCQkJCQkJCQkJCQkgIEVDUEdt YWtlX2FycmF5X3R5cGUoRUNQR21ha2Vfc2ltcGxlX3R5cGUocHRyLT5pbmRpY2F0b3ItPnR5 cGUtPnUuZWxlbWVudC0+dHlwZSwKLQkJCQkJCQkJCQkJCQkJCQkJCQkJCSAgIHB0ci0+aW5k aWNhdG9yLT50eXBlLT51LmVsZW1lbnQtPnNpemUsCi0JCQkJCQkJCQkJCQkJCQkJCQkJCQkg ICBwdHItPmluZGljYXRvci0+dHlwZS0+dS5lbGVtZW50LT5jb3VudGVyKSwKKwkJCQkJCQkJ CQkJICBFQ1BHbWFrZV9hcnJheV90eXBlKEVDUEdtYWtlX3NpbXBsZV90eXBlKHB0ci0+aW5k aWNhdG9yLT50eXBlLT5lbGVtZW50LT50eXBlLAorCQkJCQkJCQkJCQkJCQkJCQkJCQkJICAg cHRyLT5pbmRpY2F0b3ItPnR5cGUtPmVsZW1lbnQtPnNpemUsCisJCQkJCQkJCQkJCQkJCQkJ CQkJCQkgICBwdHItPmluZGljYXRvci0+dHlwZS0+ZWxlbWVudC0+Y291bnRlciksCiAJCQkJ CQkJCQkJCQkJCQkJICBwdHItPmluZGljYXRvci0+dHlwZS0+c2l6ZSksCiAJCQkJCQkJCQkJ CSAgMCk7CiAJCQkJCQl2YXJfcHRyID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZh Y2VzL2VjcGcvcHJlcHJvYy9lY3BnLnRyYWlsZXIgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3By ZXByb2MvZWNwZy50cmFpbGVyCmluZGV4IDZmOTRiODMyYTAzLi41MDY0Y2JhODA5MSAxMDA2 NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVwcm9jL2VjcGcudHJhaWxlcgorKysg Yi9zcmMvaW50ZXJmYWNlcy9lY3BnL3ByZXByb2MvZWNwZy50cmFpbGVyCkBAIC0yNTUsNyAr MjU1LDcgQEAgdXNlcl9uYW1lOiBSb2xlSWQKIAogCQkvKiBpZiBhcnJheSBzZWUgd2hhdCdz IGluc2lkZSAqLwogCQlpZiAodHlwZSA9PSBFQ1BHdF9hcnJheSkKLQkJCXR5cGUgPSBhcmdz aW5zZXJ0LT52YXJpYWJsZS0+dHlwZS0+dS5lbGVtZW50LT50eXBlOworCQkJdHlwZSA9IGFy Z3NpbnNlcnQtPnZhcmlhYmxlLT50eXBlLT5lbGVtZW50LT50eXBlOwogCiAJCS8qIGhhbmRs ZSB2YXJjaGFycyAqLwogCQlpZiAodHlwZSA9PSBFQ1BHdF92YXJjaGFyKQpAQCAtMjc4LDcg KzI3OCw3IEBAIGNoYXJfdmFyaWFibGU6IGN2YXJpYWJsZQogCQl7CiAJCQkvKiBpZiBhcnJh eSBzZWUgd2hhdCdzIGluc2lkZSAqLwogCQkJaWYgKHR5cGUgPT0gRUNQR3RfYXJyYXkpCi0J CQkJdHlwZSA9IHAtPnR5cGUtPnUuZWxlbWVudC0+dHlwZTsKKwkJCQl0eXBlID0gcC0+dHlw ZS0+ZWxlbWVudC0+dHlwZTsKIAogCQkJc3dpdGNoICh0eXBlKQogCQkJewpkaWZmIC0tZ2l0 IGEvc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVwcm9jL3R5cGUuYyBiL3NyYy9pbnRlcmZhY2Vz L2VjcGcvcHJlcHJvYy90eXBlLmMKaW5kZXggOWY2ZGFjZDJhZWEuLjg3ZDc3MzViMjI3IDEw MDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3ByZXByb2MvdHlwZS5jCisrKyBiL3Ny Yy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy90eXBlLmMKQEAgLTIyLDcgKzIyLDcgQEAgRUNQ R3N0cnVjdF9tZW1iZXJfZHVwKHN0cnVjdCBFQ1BHc3RydWN0X21lbWJlciAqcm0pCiAJCXsK IAkJCWNhc2UgRUNQR3Rfc3RydWN0OgogCQkJY2FzZSBFQ1BHdF91bmlvbjoKLQkJCQl0eXBl ID0gRUNQR21ha2Vfc3RydWN0X3R5cGUocm0tPnR5cGUtPnUubWVtYmVycywgcm0tPnR5cGUt PnR5cGUsIHJtLT50eXBlLT50eXBlX25hbWUsIHJtLT50eXBlLT5zdHJ1Y3Rfc2l6ZW9mKTsK KwkJCQl0eXBlID0gRUNQR21ha2Vfc3RydWN0X3R5cGUocm0tPnR5cGUtPm1lbWJlcnMsIHJt LT50eXBlLT50eXBlLCBybS0+dHlwZS0+dHlwZV9uYW1lLCBybS0+dHlwZS0+c3RydWN0X3Np emVvZik7CiAJCQkJYnJlYWs7CiAJCQljYXNlIEVDUEd0X2FycmF5OgogCkBAIC0zMCwxMCAr MzAsMTAgQEAgRUNQR3N0cnVjdF9tZW1iZXJfZHVwKHN0cnVjdCBFQ1BHc3RydWN0X21lbWJl ciAqcm0pCiAJCQkJICogaWYgdGhpcyBhcnJheSBkb2VzIGNvbnRhaW4gYSBzdHJ1Y3QgYWdh aW4sIHdlIGhhdmUgdG8KIAkJCQkgKiBjcmVhdGUgdGhlIHN0cnVjdCB0b28KIAkJCQkgKi8K LQkJCQlpZiAocm0tPnR5cGUtPnUuZWxlbWVudC0+dHlwZSA9PSBFQ1BHdF9zdHJ1Y3QgfHwg cm0tPnR5cGUtPnUuZWxlbWVudC0+dHlwZSA9PSBFQ1BHdF91bmlvbikKLQkJCQkJdHlwZSA9 IEVDUEdtYWtlX3N0cnVjdF90eXBlKHJtLT50eXBlLT51LmVsZW1lbnQtPnUubWVtYmVycywg cm0tPnR5cGUtPnUuZWxlbWVudC0+dHlwZSwgcm0tPnR5cGUtPnUuZWxlbWVudC0+dHlwZV9u YW1lLCBybS0+dHlwZS0+dS5lbGVtZW50LT5zdHJ1Y3Rfc2l6ZW9mKTsKKwkJCQlpZiAocm0t PnR5cGUtPmVsZW1lbnQtPnR5cGUgPT0gRUNQR3Rfc3RydWN0IHx8IHJtLT50eXBlLT5lbGVt ZW50LT50eXBlID09IEVDUEd0X3VuaW9uKQorCQkJCQl0eXBlID0gRUNQR21ha2Vfc3RydWN0 X3R5cGUocm0tPnR5cGUtPmVsZW1lbnQtPm1lbWJlcnMsIHJtLT50eXBlLT5lbGVtZW50LT50 eXBlLCBybS0+dHlwZS0+ZWxlbWVudC0+dHlwZV9uYW1lLCBybS0+dHlwZS0+ZWxlbWVudC0+ c3RydWN0X3NpemVvZik7CiAJCQkJZWxzZQotCQkJCQl0eXBlID0gRUNQR21ha2VfYXJyYXlf dHlwZShFQ1BHbWFrZV9zaW1wbGVfdHlwZShybS0+dHlwZS0+dS5lbGVtZW50LT50eXBlLCBy bS0+dHlwZS0+dS5lbGVtZW50LT5zaXplLCBybS0+dHlwZS0+dS5lbGVtZW50LT5jb3VudGVy KSwgcm0tPnR5cGUtPnNpemUpOworCQkJCQl0eXBlID0gRUNQR21ha2VfYXJyYXlfdHlwZShF Q1BHbWFrZV9zaW1wbGVfdHlwZShybS0+dHlwZS0+ZWxlbWVudC0+dHlwZSwgcm0tPnR5cGUt PmVsZW1lbnQtPnNpemUsIHJtLT50eXBlLT5lbGVtZW50LT5jb3VudGVyKSwgcm0tPnR5cGUt PnNpemUpOwogCQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKIAkJCQl0eXBlID0gRUNQR21ha2Vf c2ltcGxlX3R5cGUocm0tPnR5cGUtPnR5cGUsIHJtLT50eXBlLT5zaXplLCBybS0+dHlwZS0+ Y291bnRlcik7CkBAIC03Niw3ICs3Niw3IEBAIEVDUEdtYWtlX3NpbXBsZV90eXBlKGVudW0g RUNQR3R0eXBlIHR5cGUsIGNvbnN0IGNoYXIgKnNpemUsIGludCBjb3VudGVyKQogCW5lLT50 eXBlID0gdHlwZTsKIAluZS0+dHlwZV9uYW1lID0gTlVMTDsKIAluZS0+c2l6ZSA9IG1tX3N0 cmR1cChzaXplKTsKLQluZS0+dS5lbGVtZW50ID0gTlVMTDsKKwluZS0+ZWxlbWVudCA9IE5V TEw7CiAJbmUtPnN0cnVjdF9zaXplb2YgPSBOVUxMOwogCW5lLT5jb3VudGVyID0gY291bnRl cjsJCS8qIG9ubHkgbmVlZGVkIGZvciB2YXJjaGFyIGFuZCBieXRlYSAqLwogCkBAIC04OCw3 ICs4OCw3IEBAIEVDUEdtYWtlX2FycmF5X3R5cGUoc3RydWN0IEVDUEd0eXBlICp0eXBlLCBj b25zdCBjaGFyICpzaXplKQogewogCXN0cnVjdCBFQ1BHdHlwZSAqbmUgPSBFQ1BHbWFrZV9z aW1wbGVfdHlwZShFQ1BHdF9hcnJheSwgc2l6ZSwgMCk7CiAKLQluZS0+dS5lbGVtZW50ID0g dHlwZTsKKwluZS0+ZWxlbWVudCA9IHR5cGU7CiAKIAlyZXR1cm4gbmU7CiB9CkBAIC0xMDAs NyArMTAwLDcgQEAgRUNQR21ha2Vfc3RydWN0X3R5cGUoc3RydWN0IEVDUEdzdHJ1Y3RfbWVt YmVyICpybSwgZW51bSBFQ1BHdHR5cGUgdHlwZSwKIAlzdHJ1Y3QgRUNQR3R5cGUgKm5lID0g RUNQR21ha2Vfc2ltcGxlX3R5cGUodHlwZSwgIjEiLCAwKTsKIAogCW5lLT50eXBlX25hbWUg PSBtbV9zdHJkdXAodHlwZV9uYW1lKTsKLQluZS0+dS5tZW1iZXJzID0gRUNQR3N0cnVjdF9t ZW1iZXJfZHVwKHJtKTsKKwluZS0+bWVtYmVycyA9IEVDUEdzdHJ1Y3RfbWVtYmVyX2R1cChy bSk7CiAJbmUtPnN0cnVjdF9zaXplb2YgPSBtbV9zdHJkdXAoc3RydWN0X3NpemVvZik7CiAK IAlyZXR1cm4gbmU7CkBAIC0yNjIsNyArMjYyLDcgQEAgRUNQR2R1bXBfYV90eXBlKEZJTEUg Km8sIGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBFQ1BHdHlwZSAqdHlwZSwgY29uc3QgaW50 IGJyYWMKIAkJY2FzZSBFQ1BHdF9hcnJheToKIAkJCWlmIChpbmRpY2F0b3Jfc2V0ICYmIGlu ZF90eXBlLT50eXBlICE9IEVDUEd0X2FycmF5KQogCQkJCW1tZmF0YWwoSU5ESUNBVE9SX05P VF9BUlJBWSwgImluZGljYXRvciBmb3IgYXJyYXkvcG9pbnRlciBoYXMgdG8gYmUgYXJyYXkv cG9pbnRlciIpOwotCQkJc3dpdGNoICh0eXBlLT51LmVsZW1lbnQtPnR5cGUpCisJCQlzd2l0 Y2ggKHR5cGUtPmVsZW1lbnQtPnR5cGUpCiAJCQl7CiAJCQkJY2FzZSBFQ1BHdF9hcnJheToK IAkJCQkJbW1lcnJvcihQQVJTRV9FUlJPUiwgRVRfRVJST1IsICJuZXN0ZWQgYXJyYXlzIGFy ZSBub3Qgc3VwcG9ydGVkIChleGNlcHQgc3RyaW5ncykiKTsgLyogYXJyYXkgb2YgYXJyYXkg Ki8KQEAgLTI3MiwxOCArMjcyLDE4IEBAIEVDUEdkdW1wX2FfdHlwZShGSUxFICpvLCBjb25z dCBjaGFyICpuYW1lLCBzdHJ1Y3QgRUNQR3R5cGUgKnR5cGUsIGNvbnN0IGludCBicmFjCiAJ CQkJCUVDUEdkdW1wX2Ffc3RydWN0KG8sIG5hbWUsCiAJCQkJCQkJCQkgIGluZF9uYW1lLAog CQkJCQkJCQkJICB0eXBlLT5zaXplLAotCQkJCQkJCQkJICB0eXBlLT51LmVsZW1lbnQsCi0J CQkJCQkJCQkgIChpbmRfdHlwZSA9PSBOVUxMKSA/IE5VTEwgOiAoKGluZF90eXBlLT50eXBl ID09IEVDUEd0X05PX0lORElDQVRPUikgPyBpbmRfdHlwZSA6IGluZF90eXBlLT51LmVsZW1l bnQpLAorCQkJCQkJCQkJICB0eXBlLT5lbGVtZW50LAorCQkJCQkJCQkJICAoaW5kX3R5cGUg PT0gTlVMTCkgPyBOVUxMIDogKChpbmRfdHlwZS0+dHlwZSA9PSBFQ1BHdF9OT19JTkRJQ0FU T1IpID8gaW5kX3R5cGUgOiBpbmRfdHlwZS0+ZWxlbWVudCksCiAJCQkJCQkJCQkgIHByZWZp eCwgaW5kX3ByZWZpeCk7CiAJCQkJCWJyZWFrOwogCQkJCWRlZmF1bHQ6Ci0JCQkJCWlmICgh SVNfU0lNUExFX1RZUEUodHlwZS0+dS5lbGVtZW50LT50eXBlKSkKKwkJCQkJaWYgKCFJU19T SU1QTEVfVFlQRSh0eXBlLT5lbGVtZW50LT50eXBlKSkKIAkJCQkJCWJhc2VfeXllcnJvcigi aW50ZXJuYWwgZXJyb3I6IHVua25vd24gZGF0YXR5cGUsIHBsZWFzZSByZXBvcnQgdGhpcyB0 byA8IiBQQUNLQUdFX0JVR1JFUE9SVCAiPiIpOwogCiAJCQkJCUVDUEdkdW1wX2Ffc2ltcGxl KG8sIG5hbWUsCi0JCQkJCQkJCQkgIHR5cGUtPnUuZWxlbWVudC0+dHlwZSwKLQkJCQkJCQkJ CSAgdHlwZS0+dS5lbGVtZW50LT5zaXplLCB0eXBlLT5zaXplLCBzdHJ1Y3Rfc2l6ZW9mID8g c3RydWN0X3NpemVvZiA6IE5VTEwsCi0JCQkJCQkJCQkgIHByZWZpeCwgdHlwZS0+dS5lbGVt ZW50LT5jb3VudGVyKTsKKwkJCQkJCQkJCSAgdHlwZS0+ZWxlbWVudC0+dHlwZSwKKwkJCQkJ CQkJCSAgdHlwZS0+ZWxlbWVudC0+c2l6ZSwgdHlwZS0+c2l6ZSwgc3RydWN0X3NpemVvZiA/ IHN0cnVjdF9zaXplb2YgOiBOVUxMLAorCQkJCQkJCQkJICBwcmVmaXgsIHR5cGUtPmVsZW1l bnQtPmNvdW50ZXIpOwogCiAJCQkJCWlmIChpbmRfdHlwZSAhPSBOVUxMKQogCQkJCQl7CkBA IC0yOTYsOCArMjk2LDggQEAgRUNQR2R1bXBfYV90eXBlKEZJTEUgKm8sIGNvbnN0IGNoYXIg Km5hbWUsIHN0cnVjdCBFQ1BHdHlwZSAqdHlwZSwgY29uc3QgaW50IGJyYWMKIAkJCQkJCX0K IAkJCQkJCWVsc2UKIAkJCQkJCXsKLQkJCQkJCQlFQ1BHZHVtcF9hX3NpbXBsZShvLCBpbmRf bmFtZSwgaW5kX3R5cGUtPnUuZWxlbWVudC0+dHlwZSwKLQkJCQkJCQkJCQkJICBpbmRfdHlw ZS0+dS5lbGVtZW50LT5zaXplLCBpbmRfdHlwZS0+c2l6ZSwgTlVMTCwgaW5kX3ByZWZpeCwg MCk7CisJCQkJCQkJRUNQR2R1bXBfYV9zaW1wbGUobywgaW5kX25hbWUsIGluZF90eXBlLT5l bGVtZW50LT50eXBlLAorCQkJCQkJCQkJCQkgIGluZF90eXBlLT5lbGVtZW50LT5zaXplLCBp bmRfdHlwZS0+c2l6ZSwgTlVMTCwgaW5kX3ByZWZpeCwgMCk7CiAJCQkJCQl9CiAJCQkJCX0K IAkJCX0KQEAgLTU4MywxMCArNTgzLDEwIEBAIEVDUEdkdW1wX2Ffc3RydWN0KEZJTEUgKm8s IGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmluZF9uYW1lLCBjaGFyICphcnJzaXpl CiAJCQlzcHJpbnRmKGluZF9wYnVmLCAiJXMlcy0+IiwgaW5kX3ByZWZpeCA/IGluZF9wcmVm aXggOiAiIiwgaW5kX25hbWUpOwogCiAJCWluZF9wcmVmaXggPSBpbmRfcGJ1ZjsKLQkJaW5k X3AgPSBpbmRfdHlwZS0+dS5tZW1iZXJzOworCQlpbmRfcCA9IGluZF90eXBlLT5tZW1iZXJz OwogCX0KIAotCWZvciAocCA9IHR5cGUtPnUubWVtYmVyczsgcDsgcCA9IHAtPm5leHQpCisJ Zm9yIChwID0gdHlwZS0+bWVtYmVyczsgcDsgcCA9IHAtPm5leHQpCiAJewogCQlFQ1BHZHVt cF9hX3R5cGUobywgcC0+bmFtZSwgcC0+dHlwZSwgLTEsCiAJCQkJCQkoaW5kX3AgIT0gTlVM TCkgPyBpbmRfcC0+bmFtZSA6IE5VTEwsCkBAIC02MzYsNyArNjM2LDcgQEAgRUNQR2ZyZWVf dHlwZShzdHJ1Y3QgRUNQR3R5cGUgKnR5cGUpCiAJCXN3aXRjaCAodHlwZS0+dHlwZSkKIAkJ ewogCQkJY2FzZSBFQ1BHdF9hcnJheToKLQkJCQlzd2l0Y2ggKHR5cGUtPnUuZWxlbWVudC0+ dHlwZSkKKwkJCQlzd2l0Y2ggKHR5cGUtPmVsZW1lbnQtPnR5cGUpCiAJCQkJewogCQkJCQlj YXNlIEVDUEd0X2FycmF5OgogCQkJCQkJYmFzZV95eWVycm9yKCJpbnRlcm5hbCBlcnJvcjog Zm91bmQgbXVsdGlkaW1lbnNpb25hbCBhcnJheVxuIik7CkBAIC02NDQsMTggKzY0NCwxOCBA QCBFQ1BHZnJlZV90eXBlKHN0cnVjdCBFQ1BHdHlwZSAqdHlwZSkKIAkJCQkJY2FzZSBFQ1BH dF9zdHJ1Y3Q6CiAJCQkJCWNhc2UgRUNQR3RfdW5pb246CiAJCQkJCQkvKiBBcnJheSBvZiBz dHJ1Y3RzLiAqLwotCQkJCQkJRUNQR2ZyZWVfdHlwZSh0eXBlLT51LmVsZW1lbnQpOworCQkJ CQkJRUNQR2ZyZWVfdHlwZSh0eXBlLT5lbGVtZW50KTsKIAkJCQkJCWJyZWFrOwogCQkJCQlk ZWZhdWx0OgotCQkJCQkJaWYgKCFJU19TSU1QTEVfVFlQRSh0eXBlLT51LmVsZW1lbnQtPnR5 cGUpKQorCQkJCQkJaWYgKCFJU19TSU1QTEVfVFlQRSh0eXBlLT5lbGVtZW50LT50eXBlKSkK IAkJCQkJCQliYXNlX3l5ZXJyb3IoImludGVybmFsIGVycm9yOiB1bmtub3duIGRhdGF0eXBl LCBwbGVhc2UgcmVwb3J0IHRoaXMgdG8gPCIgUEFDS0FHRV9CVUdSRVBPUlQgIj4iKTsKIAot CQkJCQkJRUNQR2ZyZWVfdHlwZSh0eXBlLT51LmVsZW1lbnQpOworCQkJCQkJRUNQR2ZyZWVf dHlwZSh0eXBlLT5lbGVtZW50KTsKIAkJCQl9CiAJCQkJYnJlYWs7CiAJCQljYXNlIEVDUEd0 X3N0cnVjdDoKIAkJCWNhc2UgRUNQR3RfdW5pb246Ci0JCQkJRUNQR2ZyZWVfc3RydWN0X21l bWJlcih0eXBlLT51Lm1lbWJlcnMpOworCQkJCUVDUEdmcmVlX3N0cnVjdF9tZW1iZXIodHlw ZS0+bWVtYmVycyk7CiAJCQkJYnJlYWs7CiAJCQlkZWZhdWx0OgogCQkJCW1tZXJyb3IoUEFS U0VfRVJST1IsIEVUX0VSUk9SLCAidW5yZWNvZ25pemVkIHZhcmlhYmxlIHR5cGUgY29kZSAl ZCIsIHR5cGUtPnR5cGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVw cm9jL3R5cGUuaCBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy90eXBlLmgKaW5kZXgg M2Q5OWUxNzAzZGUuLjc3NmRkMzJlNWQ2IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9l Y3BnL3ByZXByb2MvdHlwZS5oCisrKyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy90 eXBlLmgKQEAgLTI4LDcgKzI4LDcgQEAgc3RydWN0IEVDUEd0eXBlCiAJCXN0cnVjdCBFQ1BH dHlwZSAqZWxlbWVudDsJLyogRm9yIGFuIGFycmF5IHRoaXMgaXMgdGhlIHR5cGUgb2YgdGhl CiAJCQkJCQkJCQkgKiBlbGVtZW50ICovCiAJCXN0cnVjdCBFQ1BHc3RydWN0X21lbWJlciAq bWVtYmVyczsJLyogQSBwb2ludGVyIHRvIGEgbGlzdCBvZiBtZW1iZXJzLiAqLwotCX0JCQl1 OworCX07CiAJaW50CQkJY291bnRlcjsKIH07CiAKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZh Y2VzL2VjcGcvcHJlcHJvYy92YXJpYWJsZS5jIGIvc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVw cm9jL3ZhcmlhYmxlLmMKaW5kZXggMmM2N2UzM2U5MmUuLjg0NjA1ZTM2ZDBjIDEwMDY0NAot LS0gYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3ByZXByb2MvdmFyaWFibGUuYworKysgYi9zcmMv aW50ZXJmYWNlcy9lY3BnL3ByZXByb2MvdmFyaWFibGUuYwpAQCAtNDQsMTAgKzQ0LDEwIEBA IGZpbmRfc3RydWN0X21lbWJlcihjb25zdCBjaGFyICpuYW1lLCBjaGFyICpzdHIsIHN0cnVj dCBFQ1BHc3RydWN0X21lbWJlciAqbWVtYmVyCiAJCQkJc3dpdGNoIChtZW1iZXJzLT50eXBl LT50eXBlKQogCQkJCXsKIAkJCQkJY2FzZSBFQ1BHdF9hcnJheToKLQkJCQkJCXJldHVybiBu ZXdfdmFyaWFibGUobmFtZSwgRUNQR21ha2VfYXJyYXlfdHlwZShFQ1BHbWFrZV9zaW1wbGVf dHlwZShtZW1iZXJzLT50eXBlLT51LmVsZW1lbnQtPnR5cGUsIG1lbWJlcnMtPnR5cGUtPnUu ZWxlbWVudC0+c2l6ZSwgbWVtYmVycy0+dHlwZS0+dS5lbGVtZW50LT5jb3VudGVyKSwgbWVt YmVycy0+dHlwZS0+c2l6ZSksIGJyYWNlX2xldmVsKTsKKwkJCQkJCXJldHVybiBuZXdfdmFy aWFibGUobmFtZSwgRUNQR21ha2VfYXJyYXlfdHlwZShFQ1BHbWFrZV9zaW1wbGVfdHlwZSht ZW1iZXJzLT50eXBlLT5lbGVtZW50LT50eXBlLCBtZW1iZXJzLT50eXBlLT5lbGVtZW50LT5z aXplLCBtZW1iZXJzLT50eXBlLT5lbGVtZW50LT5jb3VudGVyKSwgbWVtYmVycy0+dHlwZS0+ c2l6ZSksIGJyYWNlX2xldmVsKTsKIAkJCQkJY2FzZSBFQ1BHdF9zdHJ1Y3Q6CiAJCQkJCWNh c2UgRUNQR3RfdW5pb246Ci0JCQkJCQlyZXR1cm4gbmV3X3ZhcmlhYmxlKG5hbWUsIEVDUEdt YWtlX3N0cnVjdF90eXBlKG1lbWJlcnMtPnR5cGUtPnUubWVtYmVycywgbWVtYmVycy0+dHlw ZS0+dHlwZSwgbWVtYmVycy0+dHlwZS0+dHlwZV9uYW1lLCBtZW1iZXJzLT50eXBlLT5zdHJ1 Y3Rfc2l6ZW9mKSwgYnJhY2VfbGV2ZWwpOworCQkJCQkJcmV0dXJuIG5ld192YXJpYWJsZShu YW1lLCBFQ1BHbWFrZV9zdHJ1Y3RfdHlwZShtZW1iZXJzLT50eXBlLT5tZW1iZXJzLCBtZW1i ZXJzLT50eXBlLT50eXBlLCBtZW1iZXJzLT50eXBlLT50eXBlX25hbWUsIG1lbWJlcnMtPnR5 cGUtPnN0cnVjdF9zaXplb2YpLCBicmFjZV9sZXZlbCk7CiAJCQkJCWRlZmF1bHQ6CiAJCQkJ CQlyZXR1cm4gbmV3X3ZhcmlhYmxlKG5hbWUsIEVDUEdtYWtlX3NpbXBsZV90eXBlKG1lbWJl cnMtPnR5cGUtPnR5cGUsIG1lbWJlcnMtPnR5cGUtPnNpemUsIG1lbWJlcnMtPnR5cGUtPmNv dW50ZXIpLCBicmFjZV9sZXZlbCk7CiAJCQkJfQpAQCAtODgsMjggKzg4LDI4IEBAIGZpbmRf c3RydWN0X21lbWJlcihjb25zdCBjaGFyICpuYW1lLCBjaGFyICpzdHIsIHN0cnVjdCBFQ1BH c3RydWN0X21lbWJlciAqbWVtYmVyCiAJCQkJCQlpZiAobWVtYmVycy0+dHlwZS0+dHlwZSAh PSBFQ1BHdF9hcnJheSkKIAkJCQkJCQltbWZhdGFsKFBBUlNFX0VSUk9SLCAiaW5jb3JyZWN0 bHkgZm9ybWVkIHZhcmlhYmxlIFwiJXNcIiIsIG5hbWUpOwogCi0JCQkJCQlzd2l0Y2ggKG1l bWJlcnMtPnR5cGUtPnUuZWxlbWVudC0+dHlwZSkKKwkJCQkJCXN3aXRjaCAobWVtYmVycy0+ dHlwZS0+ZWxlbWVudC0+dHlwZSkKIAkJCQkJCXsKIAkJCQkJCQljYXNlIEVDUEd0X2FycmF5 OgotCQkJCQkJCQlyZXR1cm4gbmV3X3ZhcmlhYmxlKG5hbWUsIEVDUEdtYWtlX2FycmF5X3R5 cGUoRUNQR21ha2Vfc2ltcGxlX3R5cGUobWVtYmVycy0+dHlwZS0+dS5lbGVtZW50LT51LmVs ZW1lbnQtPnR5cGUsIG1lbWJlcnMtPnR5cGUtPnUuZWxlbWVudC0+dS5lbGVtZW50LT5zaXpl LCBtZW1iZXJzLT50eXBlLT51LmVsZW1lbnQtPnUuZWxlbWVudC0+Y291bnRlciksIG1lbWJl cnMtPnR5cGUtPnUuZWxlbWVudC0+c2l6ZSksIGJyYWNlX2xldmVsKTsKKwkJCQkJCQkJcmV0 dXJuIG5ld192YXJpYWJsZShuYW1lLCBFQ1BHbWFrZV9hcnJheV90eXBlKEVDUEdtYWtlX3Np bXBsZV90eXBlKG1lbWJlcnMtPnR5cGUtPmVsZW1lbnQtPmVsZW1lbnQtPnR5cGUsIG1lbWJl cnMtPnR5cGUtPmVsZW1lbnQtPmVsZW1lbnQtPnNpemUsIG1lbWJlcnMtPnR5cGUtPmVsZW1l bnQtPmVsZW1lbnQtPmNvdW50ZXIpLCBtZW1iZXJzLT50eXBlLT5lbGVtZW50LT5zaXplKSwg YnJhY2VfbGV2ZWwpOwogCQkJCQkJCWNhc2UgRUNQR3Rfc3RydWN0OgogCQkJCQkJCWNhc2Ug RUNQR3RfdW5pb246Ci0JCQkJCQkJCXJldHVybiBuZXdfdmFyaWFibGUobmFtZSwgRUNQR21h a2Vfc3RydWN0X3R5cGUobWVtYmVycy0+dHlwZS0+dS5lbGVtZW50LT51Lm1lbWJlcnMsIG1l bWJlcnMtPnR5cGUtPnUuZWxlbWVudC0+dHlwZSwgbWVtYmVycy0+dHlwZS0+dS5lbGVtZW50 LT50eXBlX25hbWUsIG1lbWJlcnMtPnR5cGUtPnUuZWxlbWVudC0+c3RydWN0X3NpemVvZiks IGJyYWNlX2xldmVsKTsKKwkJCQkJCQkJcmV0dXJuIG5ld192YXJpYWJsZShuYW1lLCBFQ1BH bWFrZV9zdHJ1Y3RfdHlwZShtZW1iZXJzLT50eXBlLT5lbGVtZW50LT5tZW1iZXJzLCBtZW1i ZXJzLT50eXBlLT5lbGVtZW50LT50eXBlLCBtZW1iZXJzLT50eXBlLT5lbGVtZW50LT50eXBl X25hbWUsIG1lbWJlcnMtPnR5cGUtPmVsZW1lbnQtPnN0cnVjdF9zaXplb2YpLCBicmFjZV9s ZXZlbCk7CiAJCQkJCQkJZGVmYXVsdDoKLQkJCQkJCQkJcmV0dXJuIG5ld192YXJpYWJsZShu YW1lLCBFQ1BHbWFrZV9zaW1wbGVfdHlwZShtZW1iZXJzLT50eXBlLT51LmVsZW1lbnQtPnR5 cGUsIG1lbWJlcnMtPnR5cGUtPnUuZWxlbWVudC0+c2l6ZSwgbWVtYmVycy0+dHlwZS0+dS5l bGVtZW50LT5jb3VudGVyKSwgYnJhY2VfbGV2ZWwpOworCQkJCQkJCQlyZXR1cm4gbmV3X3Zh cmlhYmxlKG5hbWUsIEVDUEdtYWtlX3NpbXBsZV90eXBlKG1lbWJlcnMtPnR5cGUtPmVsZW1l bnQtPnR5cGUsIG1lbWJlcnMtPnR5cGUtPmVsZW1lbnQtPnNpemUsIG1lbWJlcnMtPnR5cGUt PmVsZW1lbnQtPmNvdW50ZXIpLCBicmFjZV9sZXZlbCk7CiAJCQkJCQl9CiAJCQkJCQlicmVh azsKIAkJCQkJY2FzZSAnLSc6CiAJCQkJCQlpZiAobWVtYmVycy0+dHlwZS0+dHlwZSA9PSBF Q1BHdF9hcnJheSkKLQkJCQkJCQlyZXR1cm4gZmluZF9zdHJ1Y3RfbWVtYmVyKG5hbWUsICsr ZW5kLCBtZW1iZXJzLT50eXBlLT51LmVsZW1lbnQtPnUubWVtYmVycywgYnJhY2VfbGV2ZWwp OworCQkJCQkJCXJldHVybiBmaW5kX3N0cnVjdF9tZW1iZXIobmFtZSwgKytlbmQsIG1lbWJl cnMtPnR5cGUtPmVsZW1lbnQtPm1lbWJlcnMsIGJyYWNlX2xldmVsKTsKIAkJCQkJCWVsc2UK LQkJCQkJCQlyZXR1cm4gZmluZF9zdHJ1Y3RfbWVtYmVyKG5hbWUsICsrZW5kLCBtZW1iZXJz LT50eXBlLT51Lm1lbWJlcnMsIGJyYWNlX2xldmVsKTsKKwkJCQkJCQlyZXR1cm4gZmluZF9z dHJ1Y3RfbWVtYmVyKG5hbWUsICsrZW5kLCBtZW1iZXJzLT50eXBlLT5tZW1iZXJzLCBicmFj ZV9sZXZlbCk7CiAJCQkJCQlicmVhazsKIAkJCQkJY2FzZSAnLic6CiAJCQkJCQlpZiAobWVt YmVycy0+dHlwZS0+dHlwZSA9PSBFQ1BHdF9hcnJheSkKLQkJCQkJCQlyZXR1cm4gZmluZF9z dHJ1Y3RfbWVtYmVyKG5hbWUsIGVuZCwgbWVtYmVycy0+dHlwZS0+dS5lbGVtZW50LT51Lm1l bWJlcnMsIGJyYWNlX2xldmVsKTsKKwkJCQkJCQlyZXR1cm4gZmluZF9zdHJ1Y3RfbWVtYmVy KG5hbWUsIGVuZCwgbWVtYmVycy0+dHlwZS0+ZWxlbWVudC0+bWVtYmVycywgYnJhY2VfbGV2 ZWwpOwogCQkJCQkJZWxzZQotCQkJCQkJCXJldHVybiBmaW5kX3N0cnVjdF9tZW1iZXIobmFt ZSwgZW5kLCBtZW1iZXJzLT50eXBlLT51Lm1lbWJlcnMsIGJyYWNlX2xldmVsKTsKKwkJCQkJ CQlyZXR1cm4gZmluZF9zdHJ1Y3RfbWVtYmVyKG5hbWUsIGVuZCwgbWVtYmVycy0+dHlwZS0+ bWVtYmVycywgYnJhY2VfbGV2ZWwpOwogCQkJCQkJYnJlYWs7CiAJCQkJCWRlZmF1bHQ6CiAJ CQkJCQltbWZhdGFsKFBBUlNFX0VSUk9SLCAiaW5jb3JyZWN0bHkgZm9ybWVkIHZhcmlhYmxl IFwiJXNcIiIsIG5hbWUpOwpAQCAtMTM3LDEzICsxMzcsMTMgQEAgZmluZF9zdHJ1Y3QoY29u c3QgY2hhciAqbmFtZSwgY2hhciAqbmV4dCwgY2hhciAqZW5kKQogCQlpZiAocC0+dHlwZS0+ dHlwZSAhPSBFQ1BHdF9hcnJheSkKIAkJCW1tZmF0YWwoUEFSU0VfRVJST1IsICJ2YXJpYWJs ZSBcIiVzXCIgaXMgbm90IGEgcG9pbnRlciIsIG5hbWUpOwogCi0JCWlmIChwLT50eXBlLT51 LmVsZW1lbnQtPnR5cGUgIT0gRUNQR3Rfc3RydWN0ICYmIHAtPnR5cGUtPnUuZWxlbWVudC0+ dHlwZSAhPSBFQ1BHdF91bmlvbikKKwkJaWYgKHAtPnR5cGUtPmVsZW1lbnQtPnR5cGUgIT0g RUNQR3Rfc3RydWN0ICYmIHAtPnR5cGUtPmVsZW1lbnQtPnR5cGUgIT0gRUNQR3RfdW5pb24p CiAJCQltbWZhdGFsKFBBUlNFX0VSUk9SLCAidmFyaWFibGUgXCIlc1wiIGlzIG5vdCBhIHBv aW50ZXIgdG8gYSBzdHJ1Y3R1cmUgb3IgYSB1bmlvbiIsIG5hbWUpOwogCiAJCS8qIHJlc3Rv cmUgdGhlIG5hbWUsIHdlIHdpbGwgbmVlZCBpdCBsYXRlciAqLwogCQkqbmV4dCA9IGM7CiAK LQkJcmV0dXJuIGZpbmRfc3RydWN0X21lbWJlcihuYW1lLCArK2VuZCwgcC0+dHlwZS0+dS5l bGVtZW50LT51Lm1lbWJlcnMsIHAtPmJyYWNlX2xldmVsKTsKKwkJcmV0dXJuIGZpbmRfc3Ry dWN0X21lbWJlcihuYW1lLCArK2VuZCwgcC0+dHlwZS0+ZWxlbWVudC0+bWVtYmVycywgcC0+ YnJhY2VfbGV2ZWwpOwogCX0KIAllbHNlCiAJewpAQCAtMTU1LDIwICsxNTUsMjAgQEAgZmlu ZF9zdHJ1Y3QoY29uc3QgY2hhciAqbmFtZSwgY2hhciAqbmV4dCwgY2hhciAqZW5kKQogCQkJ LyogcmVzdG9yZSB0aGUgbmFtZSwgd2Ugd2lsbCBuZWVkIGl0IGxhdGVyICovCiAJCQkqbmV4 dCA9IGM7CiAKLQkJCXJldHVybiBmaW5kX3N0cnVjdF9tZW1iZXIobmFtZSwgZW5kLCBwLT50 eXBlLT51Lm1lbWJlcnMsIHAtPmJyYWNlX2xldmVsKTsKKwkJCXJldHVybiBmaW5kX3N0cnVj dF9tZW1iZXIobmFtZSwgZW5kLCBwLT50eXBlLT5tZW1iZXJzLCBwLT5icmFjZV9sZXZlbCk7 CiAJCX0KIAkJZWxzZQogCQl7CiAJCQlpZiAocC0+dHlwZS0+dHlwZSAhPSBFQ1BHdF9hcnJh eSkKIAkJCQltbWZhdGFsKFBBUlNFX0VSUk9SLCAidmFyaWFibGUgXCIlc1wiIGlzIG5vdCBh biBhcnJheSIsIG5hbWUpOwogCi0JCQlpZiAocC0+dHlwZS0+dS5lbGVtZW50LT50eXBlICE9 IEVDUEd0X3N0cnVjdCAmJiBwLT50eXBlLT51LmVsZW1lbnQtPnR5cGUgIT0gRUNQR3RfdW5p b24pCisJCQlpZiAocC0+dHlwZS0+ZWxlbWVudC0+dHlwZSAhPSBFQ1BHdF9zdHJ1Y3QgJiYg cC0+dHlwZS0+ZWxlbWVudC0+dHlwZSAhPSBFQ1BHdF91bmlvbikKIAkJCQltbWZhdGFsKFBB UlNFX0VSUk9SLCAidmFyaWFibGUgXCIlc1wiIGlzIG5vdCBhIHBvaW50ZXIgdG8gYSBzdHJ1 Y3R1cmUgb3IgYSB1bmlvbiIsIG5hbWUpOwogCiAJCQkvKiByZXN0b3JlIHRoZSBuYW1lLCB3 ZSB3aWxsIG5lZWQgaXQgbGF0ZXIgKi8KIAkJCSpuZXh0ID0gYzsKIAotCQkJcmV0dXJuIGZp bmRfc3RydWN0X21lbWJlcihuYW1lLCBlbmQsIHAtPnR5cGUtPnUuZWxlbWVudC0+dS5tZW1i ZXJzLCBwLT5icmFjZV9sZXZlbCk7CisJCQlyZXR1cm4gZmluZF9zdHJ1Y3RfbWVtYmVyKG5h bWUsIGVuZCwgcC0+dHlwZS0+ZWxlbWVudC0+bWVtYmVycywgcC0+YnJhY2VfbGV2ZWwpOwog CQl9CiAJfQogfQpAQCAtMjM2LDE1ICsyMzYsMTUgQEAgZmluZF92YXJpYWJsZShjb25zdCBj aGFyICpuYW1lKQogCQkJCWlmIChwLT50eXBlLT50eXBlICE9IEVDUEd0X2FycmF5KQogCQkJ CQltbWZhdGFsKFBBUlNFX0VSUk9SLCAidmFyaWFibGUgXCIlc1wiIGlzIG5vdCBhIHBvaW50 ZXIiLCBuYW1lKTsKIAkJCQkqbmV4dCA9IGM7Ci0JCQkJc3dpdGNoIChwLT50eXBlLT51LmVs ZW1lbnQtPnR5cGUpCisJCQkJc3dpdGNoIChwLT50eXBlLT5lbGVtZW50LT50eXBlKQogCQkJ CXsKIAkJCQkJY2FzZSBFQ1BHdF9hcnJheToKLQkJCQkJCXJldHVybiBuZXdfdmFyaWFibGUo bmFtZSwgRUNQR21ha2VfYXJyYXlfdHlwZShFQ1BHbWFrZV9zaW1wbGVfdHlwZShwLT50eXBl LT51LmVsZW1lbnQtPnUuZWxlbWVudC0+dHlwZSwgcC0+dHlwZS0+dS5lbGVtZW50LT51LmVs ZW1lbnQtPnNpemUsIHAtPnR5cGUtPnUuZWxlbWVudC0+dS5lbGVtZW50LT5jb3VudGVyKSwg cC0+dHlwZS0+dS5lbGVtZW50LT5zaXplKSwgcC0+YnJhY2VfbGV2ZWwpOworCQkJCQkJcmV0 dXJuIG5ld192YXJpYWJsZShuYW1lLCBFQ1BHbWFrZV9hcnJheV90eXBlKEVDUEdtYWtlX3Np bXBsZV90eXBlKHAtPnR5cGUtPmVsZW1lbnQtPmVsZW1lbnQtPnR5cGUsIHAtPnR5cGUtPmVs ZW1lbnQtPmVsZW1lbnQtPnNpemUsIHAtPnR5cGUtPmVsZW1lbnQtPmVsZW1lbnQtPmNvdW50 ZXIpLCBwLT50eXBlLT5lbGVtZW50LT5zaXplKSwgcC0+YnJhY2VfbGV2ZWwpOwogCQkJCQlj YXNlIEVDUEd0X3N0cnVjdDoKIAkJCQkJY2FzZSBFQ1BHdF91bmlvbjoKLQkJCQkJCXJldHVy biBuZXdfdmFyaWFibGUobmFtZSwgRUNQR21ha2Vfc3RydWN0X3R5cGUocC0+dHlwZS0+dS5l bGVtZW50LT51Lm1lbWJlcnMsIHAtPnR5cGUtPnUuZWxlbWVudC0+dHlwZSwgcC0+dHlwZS0+ dS5lbGVtZW50LT50eXBlX25hbWUsIHAtPnR5cGUtPnUuZWxlbWVudC0+c3RydWN0X3NpemVv ZiksIHAtPmJyYWNlX2xldmVsKTsKKwkJCQkJCXJldHVybiBuZXdfdmFyaWFibGUobmFtZSwg RUNQR21ha2Vfc3RydWN0X3R5cGUocC0+dHlwZS0+ZWxlbWVudC0+bWVtYmVycywgcC0+dHlw ZS0+ZWxlbWVudC0+dHlwZSwgcC0+dHlwZS0+ZWxlbWVudC0+dHlwZV9uYW1lLCBwLT50eXBl LT5lbGVtZW50LT5zdHJ1Y3Rfc2l6ZW9mKSwgcC0+YnJhY2VfbGV2ZWwpOwogCQkJCQlkZWZh dWx0OgotCQkJCQkJcmV0dXJuIG5ld192YXJpYWJsZShuYW1lLCBFQ1BHbWFrZV9zaW1wbGVf dHlwZShwLT50eXBlLT51LmVsZW1lbnQtPnR5cGUsIHAtPnR5cGUtPnUuZWxlbWVudC0+c2l6 ZSwgcC0+dHlwZS0+dS5lbGVtZW50LT5jb3VudGVyKSwgcC0+YnJhY2VfbGV2ZWwpOworCQkJ CQkJcmV0dXJuIG5ld192YXJpYWJsZShuYW1lLCBFQ1BHbWFrZV9zaW1wbGVfdHlwZShwLT50 eXBlLT5lbGVtZW50LT50eXBlLCBwLT50eXBlLT5lbGVtZW50LT5zaXplLCBwLT50eXBlLT5l bGVtZW50LT5jb3VudGVyKSwgcC0+YnJhY2VfbGV2ZWwpOwogCQkJCX0KIAkJCX0KIAkJfQpA QCAtNTA2LDEyICs1MDYsMTIgQEAgY2hlY2tfaW5kaWNhdG9yKHN0cnVjdCBFQ1BHdHlwZSAq dmFyKQogCiAJCWNhc2UgRUNQR3Rfc3RydWN0OgogCQljYXNlIEVDUEd0X3VuaW9uOgotCQkJ Zm9yIChwID0gdmFyLT51Lm1lbWJlcnM7IHA7IHAgPSBwLT5uZXh0KQorCQkJZm9yIChwID0g dmFyLT5tZW1iZXJzOyBwOyBwID0gcC0+bmV4dCkKIAkJCQljaGVja19pbmRpY2F0b3IocC0+ dHlwZSk7CiAJCQlicmVhazsKIAogCQljYXNlIEVDUEd0X2FycmF5OgotCQkJY2hlY2tfaW5k aWNhdG9yKHZhci0+dS5lbGVtZW50KTsKKwkJCWNoZWNrX2luZGljYXRvcih2YXItPmVsZW1l bnQpOwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQltbWVycm9yKFBBUlNFX0VSUk9SLCBF VF9FUlJPUiwgImluZGljYXRvciB2YXJpYWJsZSBtdXN0IGhhdmUgYW4gaW50ZWdlciB0eXBl Iik7Ci0tIAoyLjUxLjAKCg== --------------XMilSvfSoQNhBmwudkXUWZaX Content-Type: text/plain; charset=UTF-8; name="0008-C11-anonymous-unions-pgbench.patch" Content-Disposition: attachment; filename="0008-C11-anonymous-unions-pgbench.patch" Content-Transfer-Encoding: base64 RnJvbSBkYmNiYzMwNGNmZWFiYzA0NWIzMWRhYzY5Mjc1YWM1NWFiZTI3N2FkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAyMiBTZXAgMjAyNSAxNDo0Nzo0OCArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMDgvMjNdIEMxMSBhbm9ueW1vdXMgdW5pb25zIFtwZ2JlbmNoXQoKLS0tCiBz cmMvYmluL3BnYmVuY2gvZXhwcnBhcnNlLnkgfCAyMiArKysrKysrKy0tLS0tLS0tCiBzcmMv YmluL3BnYmVuY2gvcGdiZW5jaC5jICAgfCA1MiArKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0tLS0tLS0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5oICAgfCAgNCArLS0KIDMg ZmlsZXMgY2hhbmdlZCwgMzkgaW5zZXJ0aW9ucygrKSwgMzkgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNoL2V4cHJwYXJzZS55IGIvc3JjL2Jpbi9wZ2JlbmNo L2V4cHJwYXJzZS55CmluZGV4IDY4YTM3ZTQ5ZTQ1Li40ZTI5MWExM2U5NSAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wZ2JlbmNoL2V4cHJwYXJzZS55CisrKyBiL3NyYy9iaW4vcGdiZW5jaC9l eHBycGFyc2UueQpAQCAtMTcwLDggKzE3MCw4IEBAIG1ha2VfbnVsbF9jb25zdGFudCh2b2lk KQogCVBnQmVuY2hFeHByICpleHByID0gcGdfbWFsbG9jKHNpemVvZihQZ0JlbmNoRXhwcikp OwogCiAJZXhwci0+ZXR5cGUgPSBFTk9ERV9DT05TVEFOVDsKLQlleHByLT51LmNvbnN0YW50 LnR5cGUgPSBQR0JUX05VTEw7Ci0JZXhwci0+dS5jb25zdGFudC51Lml2YWwgPSAwOworCWV4 cHItPmNvbnN0YW50LnR5cGUgPSBQR0JUX05VTEw7CisJZXhwci0+Y29uc3RhbnQuaXZhbCA9 IDA7CiAJcmV0dXJuIGV4cHI7CiB9CiAKQEAgLTE4MSw4ICsxODEsOCBAQCBtYWtlX2ludGVn ZXJfY29uc3RhbnQoaW50NjQgaXZhbCkKIAlQZ0JlbmNoRXhwciAqZXhwciA9IHBnX21hbGxv YyhzaXplb2YoUGdCZW5jaEV4cHIpKTsKIAogCWV4cHItPmV0eXBlID0gRU5PREVfQ09OU1RB TlQ7Ci0JZXhwci0+dS5jb25zdGFudC50eXBlID0gUEdCVF9JTlQ7Ci0JZXhwci0+dS5jb25z dGFudC51Lml2YWwgPSBpdmFsOworCWV4cHItPmNvbnN0YW50LnR5cGUgPSBQR0JUX0lOVDsK KwlleHByLT5jb25zdGFudC5pdmFsID0gaXZhbDsKIAlyZXR1cm4gZXhwcjsKIH0KIApAQCAt MTkyLDggKzE5Miw4IEBAIG1ha2VfZG91YmxlX2NvbnN0YW50KGRvdWJsZSBkdmFsKQogCVBn QmVuY2hFeHByICpleHByID0gcGdfbWFsbG9jKHNpemVvZihQZ0JlbmNoRXhwcikpOwogCiAJ ZXhwci0+ZXR5cGUgPSBFTk9ERV9DT05TVEFOVDsKLQlleHByLT51LmNvbnN0YW50LnR5cGUg PSBQR0JUX0RPVUJMRTsKLQlleHByLT51LmNvbnN0YW50LnUuZHZhbCA9IGR2YWw7CisJZXhw ci0+Y29uc3RhbnQudHlwZSA9IFBHQlRfRE9VQkxFOworCWV4cHItPmNvbnN0YW50LmR2YWwg PSBkdmFsOwogCXJldHVybiBleHByOwogfQogCkBAIC0yMDMsOCArMjAzLDggQEAgbWFrZV9i b29sZWFuX2NvbnN0YW50KGJvb2wgYnZhbCkKIAlQZ0JlbmNoRXhwciAqZXhwciA9IHBnX21h bGxvYyhzaXplb2YoUGdCZW5jaEV4cHIpKTsKIAogCWV4cHItPmV0eXBlID0gRU5PREVfQ09O U1RBTlQ7Ci0JZXhwci0+dS5jb25zdGFudC50eXBlID0gUEdCVF9CT09MRUFOOwotCWV4cHIt PnUuY29uc3RhbnQudS5idmFsID0gYnZhbDsKKwlleHByLT5jb25zdGFudC50eXBlID0gUEdC VF9CT09MRUFOOworCWV4cHItPmNvbnN0YW50LmJ2YWwgPSBidmFsOwogCXJldHVybiBleHBy OwogfQogCkBAIC0yMTQsNyArMjE0LDcgQEAgbWFrZV92YXJpYWJsZShjaGFyICp2YXJuYW1l KQogCVBnQmVuY2hFeHByICpleHByID0gcGdfbWFsbG9jKHNpemVvZihQZ0JlbmNoRXhwcikp OwogCiAJZXhwci0+ZXR5cGUgPSBFTk9ERV9WQVJJQUJMRTsKLQlleHByLT51LnZhcmlhYmxl LnZhcm5hbWUgPSB2YXJuYW1lOworCWV4cHItPnZhcmlhYmxlLnZhcm5hbWUgPSB2YXJuYW1l OwogCXJldHVybiBleHByOwogfQogCkBAIC01MTQsMTAgKzUxNCwxMCBAQCBtYWtlX2Z1bmMo eXlzY2FuX3QgeXlzY2FubmVyLCBpbnQgZm51bWJlciwgUGdCZW5jaEV4cHJMaXN0ICphcmdz KQogCX0KIAogCWV4cHItPmV0eXBlID0gRU5PREVfRlVOQ1RJT047Ci0JZXhwci0+dS5mdW5j dGlvbi5mdW5jdGlvbiA9IFBHQkVOQ0hfRlVOQ1RJT05TW2ZudW1iZXJdLnRhZzsKKwlleHBy LT5mdW5jdGlvbi5mdW5jdGlvbiA9IFBHQkVOQ0hfRlVOQ1RJT05TW2ZudW1iZXJdLnRhZzsK IAogCS8qIG9ubHkgdGhlIGxpbmsgaXMgdXNlZCwgdGhlIGhlYWQvdGFpbCBpcyBub3QgdXNl ZnVsIGFueW1vcmUgKi8KLQlleHByLT51LmZ1bmN0aW9uLmFyZ3MgPSBhcmdzICE9IE5VTEwg PyBhcmdzLT5oZWFkIDogTlVMTDsKKwlleHByLT5mdW5jdGlvbi5hcmdzID0gYXJncyAhPSBO VUxMID8gYXJncy0+aGVhZCA6IE5VTEw7CiAJaWYgKGFyZ3MpCiAJCXBnX2ZyZWUoYXJncyk7 CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9zcmMvYmluL3Bn YmVuY2gvcGdiZW5jaC5jCmluZGV4IDNjYWZkODhhYzUzLi45YjRlMTVmYWI5YiAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9zcmMvYmluL3BnYmVuY2gv cGdiZW5jaC5jCkBAIC0xNjczLDEzICsxNjczLDEzIEBAIGdldFZhcmlhYmxlKFZhcmlhYmxl cyAqdmFyaWFibGVzLCBjaGFyICpuYW1lKQogCQlzbnByaW50ZihzdHJpbmdmb3JtLCBzaXpl b2Yoc3RyaW5nZm9ybSksICJOVUxMIik7CiAJZWxzZSBpZiAodmFyLT52YWx1ZS50eXBlID09 IFBHQlRfQk9PTEVBTikKIAkJc25wcmludGYoc3RyaW5nZm9ybSwgc2l6ZW9mKHN0cmluZ2Zv cm0pLAotCQkJCSAiJXMiLCB2YXItPnZhbHVlLnUuYnZhbCA/ICJ0cnVlIiA6ICJmYWxzZSIp OworCQkJCSAiJXMiLCB2YXItPnZhbHVlLmJ2YWwgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKIAll bHNlIGlmICh2YXItPnZhbHVlLnR5cGUgPT0gUEdCVF9JTlQpCiAJCXNucHJpbnRmKHN0cmlu Z2Zvcm0sIHNpemVvZihzdHJpbmdmb3JtKSwKLQkJCQkgSU5UNjRfRk9STUFULCB2YXItPnZh bHVlLnUuaXZhbCk7CisJCQkJIElOVDY0X0ZPUk1BVCwgdmFyLT52YWx1ZS5pdmFsKTsKIAll bHNlIGlmICh2YXItPnZhbHVlLnR5cGUgPT0gUEdCVF9ET1VCTEUpCiAJCXNucHJpbnRmKHN0 cmluZ2Zvcm0sIHNpemVvZihzdHJpbmdmb3JtKSwKLQkJCQkgIiUuKmciLCBEQkxfRElHLCB2 YXItPnZhbHVlLnUuZHZhbCk7CisJCQkJICIlLipnIiwgREJMX0RJRywgdmFyLT52YWx1ZS5k dmFsKTsKIAllbHNlCQkJCQkJLyogaW50ZXJuYWwgZXJyb3IsIHVuZXhwZWN0ZWQgdHlwZSAq LwogCQlBc3NlcnQoMCk7CiAJdmFyLT5zdmFsdWUgPSBwZ19zdHJkdXAoc3RyaW5nZm9ybSk7 CkBAIC0yMDMyLDcgKzIwMzIsNyBAQCBjb2VyY2VUb0Jvb2woUGdCZW5jaFZhbHVlICpwdmFs LCBib29sICpidmFsKQogewogCWlmIChwdmFsLT50eXBlID09IFBHQlRfQk9PTEVBTikKIAl7 Ci0JCSpidmFsID0gcHZhbC0+dS5idmFsOworCQkqYnZhbCA9IHB2YWwtPmJ2YWw7CiAJCXJl dHVybiB0cnVlOwogCX0KIAllbHNlCQkJCQkJLyogTlVMTCwgSU5UIG9yIERPVUJMRSAqLwpA QCAtMjA1NSwxMSArMjA1NSwxMSBAQCB2YWx1ZVRydXRoKFBnQmVuY2hWYWx1ZSAqcHZhbCkK IAkJY2FzZSBQR0JUX05VTEw6CiAJCQlyZXR1cm4gZmFsc2U7CiAJCWNhc2UgUEdCVF9CT09M RUFOOgotCQkJcmV0dXJuIHB2YWwtPnUuYnZhbDsKKwkJCXJldHVybiBwdmFsLT5idmFsOwog CQljYXNlIFBHQlRfSU5UOgotCQkJcmV0dXJuIHB2YWwtPnUuaXZhbCAhPSAwOworCQkJcmV0 dXJuIHB2YWwtPml2YWwgIT0gMDsKIAkJY2FzZSBQR0JUX0RPVUJMRToKLQkJCXJldHVybiBw dmFsLT51LmR2YWwgIT0gMC4wOworCQkJcmV0dXJuIHB2YWwtPmR2YWwgIT0gMC4wOwogCQlk ZWZhdWx0OgogCQkJLyogaW50ZXJuYWwgZXJyb3IsIHVuZXhwZWN0ZWQgdHlwZSAqLwogCQkJ QXNzZXJ0KDApOwpAQCAtMjA3MywxMiArMjA3MywxMiBAQCBjb2VyY2VUb0ludChQZ0JlbmNo VmFsdWUgKnB2YWwsIGludDY0ICppdmFsKQogewogCWlmIChwdmFsLT50eXBlID09IFBHQlRf SU5UKQogCXsKLQkJKml2YWwgPSBwdmFsLT51Lml2YWw7CisJCSppdmFsID0gcHZhbC0+aXZh bDsKIAkJcmV0dXJuIHRydWU7CiAJfQogCWVsc2UgaWYgKHB2YWwtPnR5cGUgPT0gUEdCVF9E T1VCTEUpCiAJewotCQlkb3VibGUJCWR2YWwgPSByaW50KHB2YWwtPnUuZHZhbCk7CisJCWRv dWJsZQkJZHZhbCA9IHJpbnQocHZhbC0+ZHZhbCk7CiAKIAkJaWYgKGlzbmFuKGR2YWwpIHx8 ICFGTE9BVDhfRklUU19JTl9JTlQ2NChkdmFsKSkKIAkJewpAQCAtMjEwMSwxMiArMjEwMSwx MiBAQCBjb2VyY2VUb0RvdWJsZShQZ0JlbmNoVmFsdWUgKnB2YWwsIGRvdWJsZSAqZHZhbCkK IHsKIAlpZiAocHZhbC0+dHlwZSA9PSBQR0JUX0RPVUJMRSkKIAl7Ci0JCSpkdmFsID0gcHZh bC0+dS5kdmFsOworCQkqZHZhbCA9IHB2YWwtPmR2YWw7CiAJCXJldHVybiB0cnVlOwogCX0K IAllbHNlIGlmIChwdmFsLT50eXBlID09IFBHQlRfSU5UKQogCXsKLQkJKmR2YWwgPSAoZG91 YmxlKSBwdmFsLT51Lml2YWw7CisJCSpkdmFsID0gKGRvdWJsZSkgcHZhbC0+aXZhbDsKIAkJ cmV0dXJuIHRydWU7CiAJfQogCWVsc2UJCQkJCQkvKiBCT09MRUFOIG9yIE5VTEwgKi8KQEAg LTIxMjEsNyArMjEyMSw3IEBAIHN0YXRpYyB2b2lkCiBzZXROdWxsVmFsdWUoUGdCZW5jaFZh bHVlICpwdikKIHsKIAlwdi0+dHlwZSA9IFBHQlRfTlVMTDsKLQlwdi0+dS5pdmFsID0gMDsK Kwlwdi0+aXZhbCA9IDA7CiB9CiAKIC8qIGFzc2lnbiBhIGJvb2xlYW4gdmFsdWUgKi8KQEAg LTIxMjksNyArMjEyOSw3IEBAIHN0YXRpYyB2b2lkCiBzZXRCb29sVmFsdWUoUGdCZW5jaFZh bHVlICpwdiwgYm9vbCBidmFsKQogewogCXB2LT50eXBlID0gUEdCVF9CT09MRUFOOwotCXB2 LT51LmJ2YWwgPSBidmFsOworCXB2LT5idmFsID0gYnZhbDsKIH0KIAogLyogYXNzaWduIGFu IGludGVnZXIgdmFsdWUgKi8KQEAgLTIxMzcsNyArMjEzNyw3IEBAIHN0YXRpYyB2b2lkCiBz ZXRJbnRWYWx1ZShQZ0JlbmNoVmFsdWUgKnB2LCBpbnQ2NCBpdmFsKQogewogCXB2LT50eXBl ID0gUEdCVF9JTlQ7Ci0JcHYtPnUuaXZhbCA9IGl2YWw7CisJcHYtPml2YWwgPSBpdmFsOwog fQogCiAvKiBhc3NpZ24gYSBkb3VibGUgdmFsdWUgKi8KQEAgLTIxNDUsNyArMjE0NSw3IEBA IHN0YXRpYyB2b2lkCiBzZXREb3VibGVWYWx1ZShQZ0JlbmNoVmFsdWUgKnB2LCBkb3VibGUg ZHZhbCkKIHsKIAlwdi0+dHlwZSA9IFBHQlRfRE9VQkxFOwotCXB2LT51LmR2YWwgPSBkdmFs OworCXB2LT5kdmFsID0gZHZhbDsKIH0KIAogc3RhdGljIGJvb2wKQEAgLTI1MjUsMTMgKzI1 MjUsMTMgQEAgZXZhbFN0YW5kYXJkRnVuYyhDU3RhdGUgKnN0LAogCiAJCQkJaWYgKHZhcmct PnR5cGUgPT0gUEdCVF9JTlQpCiAJCQkJewotCQkJCQlpbnQ2NAkJaSA9IHZhcmctPnUuaXZh bDsKKwkJCQkJaW50NjQJCWkgPSB2YXJnLT5pdmFsOwogCiAJCQkJCXNldEludFZhbHVlKHJl dHZhbCwgaSA8IDAgPyAtaSA6IGkpOwogCQkJCX0KIAkJCQllbHNlCiAJCQkJewotCQkJCQlk b3VibGUJCWQgPSB2YXJnLT51LmR2YWw7CisJCQkJCWRvdWJsZQkJZCA9IHZhcmctPmR2YWw7 CiAKIAkJCQkJQXNzZXJ0KHZhcmctPnR5cGUgPT0gUEdCVF9ET1VCTEUpOwogCQkJCQlzZXRE b3VibGVWYWx1ZShyZXR2YWwsIGQgPCAwLjAgPyAtZCA6IGQpOwpAQCAtMjU1MiwxMSArMjU1 MiwxMSBAQCBldmFsU3RhbmRhcmRGdW5jKENTdGF0ZSAqc3QsCiAJCQkJaWYgKHZhcmctPnR5 cGUgPT0gUEdCVF9OVUxMKQogCQkJCQlmcHJpbnRmKHN0ZGVyciwgIm51bGxcbiIpOwogCQkJ CWVsc2UgaWYgKHZhcmctPnR5cGUgPT0gUEdCVF9CT09MRUFOKQotCQkJCQlmcHJpbnRmKHN0 ZGVyciwgImJvb2xlYW4gJXNcbiIsIHZhcmctPnUuYnZhbCA/ICJ0cnVlIiA6ICJmYWxzZSIp OworCQkJCQlmcHJpbnRmKHN0ZGVyciwgImJvb2xlYW4gJXNcbiIsIHZhcmctPmJ2YWwgPyAi dHJ1ZSIgOiAiZmFsc2UiKTsKIAkJCQllbHNlIGlmICh2YXJnLT50eXBlID09IFBHQlRfSU5U KQotCQkJCQlmcHJpbnRmKHN0ZGVyciwgImludCAiIElOVDY0X0ZPUk1BVCAiXG4iLCB2YXJn LT51Lml2YWwpOworCQkJCQlmcHJpbnRmKHN0ZGVyciwgImludCAiIElOVDY0X0ZPUk1BVCAi XG4iLCB2YXJnLT5pdmFsKTsKIAkJCQllbHNlIGlmICh2YXJnLT50eXBlID09IFBHQlRfRE9V QkxFKQotCQkJCQlmcHJpbnRmKHN0ZGVyciwgImRvdWJsZSAlLipnXG4iLCBEQkxfRElHLCB2 YXJnLT51LmR2YWwpOworCQkJCQlmcHJpbnRmKHN0ZGVyciwgImRvdWJsZSAlLipnXG4iLCBE QkxfRElHLCB2YXJnLT5kdmFsKTsKIAkJCQllbHNlCQkJLyogaW50ZXJuYWwgZXJyb3IsIHVu ZXhwZWN0ZWQgdHlwZSAqLwogCQkJCQlBc3NlcnQoMCk7CiAKQEAgLTI3NzksNyArMjc3OSw3 IEBAIGV2YWxTdGFuZGFyZEZ1bmMoQ1N0YXRlICpzdCwKIAkJCQkgKi8KIAkJCQlzZXRCb29s VmFsdWUocmV0dmFsLAogCQkJCQkJCSB2YXJnc1swXS50eXBlID09IHZhcmdzWzFdLnR5cGUg JiYKLQkJCQkJCQkgdmFyZ3NbMF0udS5idmFsID09IHZhcmdzWzFdLnUuYnZhbCk7CisJCQkJ CQkJIHZhcmdzWzBdLmJ2YWwgPT0gdmFyZ3NbMV0uYnZhbCk7CiAJCQkJcmV0dXJuIHRydWU7 CiAJCQl9CiAKQEAgLTI4NjIsNyArMjg2Miw3IEBAIGV2YWx1YXRlRXhwcihDU3RhdGUgKnN0 LCBQZ0JlbmNoRXhwciAqZXhwciwgUGdCZW5jaFZhbHVlICpyZXR2YWwpCiAJewogCQljYXNl IEVOT0RFX0NPTlNUQU5UOgogCQkJewotCQkJCSpyZXR2YWwgPSBleHByLT51LmNvbnN0YW50 OworCQkJCSpyZXR2YWwgPSBleHByLT5jb25zdGFudDsKIAkJCQlyZXR1cm4gdHJ1ZTsKIAkJ CX0KIApAQCAtMjg3MCw5ICsyODcwLDkgQEAgZXZhbHVhdGVFeHByKENTdGF0ZSAqc3QsIFBn QmVuY2hFeHByICpleHByLCBQZ0JlbmNoVmFsdWUgKnJldHZhbCkKIAkJCXsKIAkJCQlWYXJp YWJsZSAgICp2YXI7CiAKLQkJCQlpZiAoKHZhciA9IGxvb2t1cFZhcmlhYmxlKCZzdC0+dmFy aWFibGVzLCBleHByLT51LnZhcmlhYmxlLnZhcm5hbWUpKSA9PSBOVUxMKQorCQkJCWlmICgo dmFyID0gbG9va3VwVmFyaWFibGUoJnN0LT52YXJpYWJsZXMsIGV4cHItPnZhcmlhYmxlLnZh cm5hbWUpKSA9PSBOVUxMKQogCQkJCXsKLQkJCQkJcGdfbG9nX2Vycm9yKCJ1bmRlZmluZWQg dmFyaWFibGUgXCIlc1wiIiwgZXhwci0+dS52YXJpYWJsZS52YXJuYW1lKTsKKwkJCQkJcGdf bG9nX2Vycm9yKCJ1bmRlZmluZWQgdmFyaWFibGUgXCIlc1wiIiwgZXhwci0+dmFyaWFibGUu dmFybmFtZSk7CiAJCQkJCXJldHVybiBmYWxzZTsKIAkJCQl9CiAKQEAgLTI4ODUsOCArMjg4 NSw4IEBAIGV2YWx1YXRlRXhwcihDU3RhdGUgKnN0LCBQZ0JlbmNoRXhwciAqZXhwciwgUGdC ZW5jaFZhbHVlICpyZXR2YWwpCiAKIAkJY2FzZSBFTk9ERV9GVU5DVElPTjoKIAkJCXJldHVy biBldmFsRnVuYyhzdCwKLQkJCQkJCQlleHByLT51LmZ1bmN0aW9uLmZ1bmN0aW9uLAotCQkJ CQkJCWV4cHItPnUuZnVuY3Rpb24uYXJncywKKwkJCQkJCQlleHByLT5mdW5jdGlvbi5mdW5j dGlvbiwKKwkJCQkJCQlleHByLT5mdW5jdGlvbi5hcmdzLAogCQkJCQkJCXJldHZhbCk7CiAK IAkJZGVmYXVsdDoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmggYi9z cmMvYmluL3BnYmVuY2gvcGdiZW5jaC5oCmluZGV4IGQ1NWQzMGUwZWY5Li43NDU0ZjI5YmI2 OSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guaAorKysgYi9zcmMvYmlu L3BnYmVuY2gvcGdiZW5jaC5oCkBAIC01MCw3ICs1MCw3IEBAIHR5cGVkZWYgc3RydWN0CiAJ CWRvdWJsZQkJZHZhbDsKIAkJYm9vbAkJYnZhbDsKIAkJLyogYWRkIG90aGVyIHR5cGVzIGhl cmUgKi8KLQl9CQkJdTsKKwl9OwogfSBQZ0JlbmNoVmFsdWU7CiAKIC8qIFR5cGVzIG9mIGV4 cHJlc3Npb24gbm9kZXMgKi8KQEAgLTEyMiw3ICsxMjIsNyBAQCBzdHJ1Y3QgUGdCZW5jaEV4 cHIKIAkJCVBnQmVuY2hGdW5jdGlvbiBmdW5jdGlvbjsKIAkJCVBnQmVuY2hFeHByTGluayAq YXJnczsKIAkJfQkJCWZ1bmN0aW9uOwotCX0JCQl1OworCX07CiB9OwogCiAvKiBMaXN0IG9m IGV4cHJlc3Npb24gbm9kZXMgKi8KLS0gCjIuNTEuMAoK --------------XMilSvfSoQNhBmwudkXUWZaX Content-Type: text/plain; charset=UTF-8; name="0009-C11-anonymous-unions-reloptions.patch" Content-Disposition: attachment; filename="0009-C11-anonymous-unions-reloptions.patch" Content-Transfer-Encoding: base64 RnJvbSAxZDdmZDZiZTI1ZmExZmE0OTY4MGM3MjQ5ODkzYzYyN2IwYzQ4YWVkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAyMiBTZXAgMjAyNSAxNDo0Nzo0OCArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMDkvMjNdIEMxMSBhbm9ueW1vdXMgdW5pb25zIFtyZWxvcHRpb25zXQoKLS0t CiBzcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3JlbG9wdGlvbnMuYyB8IDM0ICsrKysrKysr KysrKystLS0tLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvcmVsb3B0aW9ucy5oICAg ICAgICB8ICAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDE4IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcmVs b3B0aW9ucy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9yZWxvcHRpb25zLmMKaW5k ZXggMGFmM2ZlYTY4ZmEuLmU3MTAwZDZkODhmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvY29tbW9uL3JlbG9wdGlvbnMuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29t bW9uL3JlbG9wdGlvbnMuYwpAQCAtNTc4LDcgKzU3OCw3IEBAIHN0YXRpYyB2b2lkIHBhcnNl X29uZV9yZWxvcHRpb24ocmVsb3B0X3ZhbHVlICpvcHRpb24sIGNoYXIgKnRleHRfc3RyLAog ICogcmVsYXRpb24gb3B0aW9ucy4KICAqLwogI2RlZmluZSBHRVRfU1RSSU5HX1JFTE9QVElP Tl9MRU4ob3B0aW9uKSBcCi0JKChvcHRpb24pLmlzc2V0ID8gc3RybGVuKChvcHRpb24pLnZh bHVlcy5zdHJpbmdfdmFsKSA6IFwKKwkoKG9wdGlvbikuaXNzZXQgPyBzdHJsZW4oKG9wdGlv bikuc3RyaW5nX3ZhbCkgOiBcCiAJICgocmVsb3B0X3N0cmluZyAqKSAob3B0aW9uKS5nZW4p LT5kZWZhdWx0X2xlbikKIAogLyoKQEAgLTE2MDksNyArMTYwOSw3IEBAIHBhcnNlX29uZV9y ZWxvcHRpb24ocmVsb3B0X3ZhbHVlICpvcHRpb24sIGNoYXIgKnRleHRfc3RyLCBpbnQgdGV4 dF9sZW4sCiAJewogCQljYXNlIFJFTE9QVF9UWVBFX0JPT0w6CiAJCQl7Ci0JCQkJcGFyc2Vk ID0gcGFyc2VfYm9vbCh2YWx1ZSwgJm9wdGlvbi0+dmFsdWVzLmJvb2xfdmFsKTsKKwkJCQlw YXJzZWQgPSBwYXJzZV9ib29sKHZhbHVlLCAmb3B0aW9uLT5ib29sX3ZhbCk7CiAJCQkJaWYg KHZhbGlkYXRlICYmICFwYXJzZWQpCiAJCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCkBAIC0xNjIxLDE0ICsx NjIxLDE0IEBAIHBhcnNlX29uZV9yZWxvcHRpb24ocmVsb3B0X3ZhbHVlICpvcHRpb24sIGNo YXIgKnRleHRfc3RyLCBpbnQgdGV4dF9sZW4sCiAJCQl7CiAJCQkJcmVsb3B0X2ludCAqb3B0 aW50ID0gKHJlbG9wdF9pbnQgKikgb3B0aW9uLT5nZW47CiAKLQkJCQlwYXJzZWQgPSBwYXJz ZV9pbnQodmFsdWUsICZvcHRpb24tPnZhbHVlcy5pbnRfdmFsLCAwLCBOVUxMKTsKKwkJCQlw YXJzZWQgPSBwYXJzZV9pbnQodmFsdWUsICZvcHRpb24tPmludF92YWwsIDAsIE5VTEwpOwog CQkJCWlmICh2YWxpZGF0ZSAmJiAhcGFyc2VkKQogCQkJCQllcmVwb3J0KEVSUk9SLAogCQkJ CQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAogCQkJCQkJ CSBlcnJtc2coImludmFsaWQgdmFsdWUgZm9yIGludGVnZXIgb3B0aW9uIFwiJXNcIjogJXMi LAogCQkJCQkJCQkJb3B0aW9uLT5nZW4tPm5hbWUsIHZhbHVlKSkpOwotCQkJCWlmICh2YWxp ZGF0ZSAmJiAob3B0aW9uLT52YWx1ZXMuaW50X3ZhbCA8IG9wdGludC0+bWluIHx8Ci0JCQkJ CQkJCSBvcHRpb24tPnZhbHVlcy5pbnRfdmFsID4gb3B0aW50LT5tYXgpKQorCQkJCWlmICh2 YWxpZGF0ZSAmJiAob3B0aW9uLT5pbnRfdmFsIDwgb3B0aW50LT5taW4gfHwKKwkJCQkJCQkJ IG9wdGlvbi0+aW50X3ZhbCA+IG9wdGludC0+bWF4KSkKIAkJCQkJZXJlcG9ydChFUlJPUiwK IAkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJ CQkJCQkgZXJybXNnKCJ2YWx1ZSAlcyBvdXQgb2YgYm91bmRzIGZvciBvcHRpb24gXCIlc1wi IiwKQEAgLTE2NDEsMTQgKzE2NDEsMTQgQEAgcGFyc2Vfb25lX3JlbG9wdGlvbihyZWxvcHRf dmFsdWUgKm9wdGlvbiwgY2hhciAqdGV4dF9zdHIsIGludCB0ZXh0X2xlbiwKIAkJCXsKIAkJ CQlyZWxvcHRfcmVhbCAqb3B0cmVhbCA9IChyZWxvcHRfcmVhbCAqKSBvcHRpb24tPmdlbjsK IAotCQkJCXBhcnNlZCA9IHBhcnNlX3JlYWwodmFsdWUsICZvcHRpb24tPnZhbHVlcy5yZWFs X3ZhbCwgMCwgTlVMTCk7CisJCQkJcGFyc2VkID0gcGFyc2VfcmVhbCh2YWx1ZSwgJm9wdGlv bi0+cmVhbF92YWwsIDAsIE5VTEwpOwogCQkJCWlmICh2YWxpZGF0ZSAmJiAhcGFyc2VkKQog CQkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9Q QVJBTUVURVJfVkFMVUUpLAogCQkJCQkJCSBlcnJtc2coImludmFsaWQgdmFsdWUgZm9yIGZs b2F0aW5nIHBvaW50IG9wdGlvbiBcIiVzXCI6ICVzIiwKIAkJCQkJCQkJCW9wdGlvbi0+Z2Vu LT5uYW1lLCB2YWx1ZSkpKTsKLQkJCQlpZiAodmFsaWRhdGUgJiYgKG9wdGlvbi0+dmFsdWVz LnJlYWxfdmFsIDwgb3B0cmVhbC0+bWluIHx8Ci0JCQkJCQkJCSBvcHRpb24tPnZhbHVlcy5y ZWFsX3ZhbCA+IG9wdHJlYWwtPm1heCkpCisJCQkJaWYgKHZhbGlkYXRlICYmIChvcHRpb24t PnJlYWxfdmFsIDwgb3B0cmVhbC0+bWluIHx8CisJCQkJCQkJCSBvcHRpb24tPnJlYWxfdmFs ID4gb3B0cmVhbC0+bWF4KSkKIAkJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCQkoZXJyY29k ZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQkJCQkgZXJybXNnKCJ2 YWx1ZSAlcyBvdXQgb2YgYm91bmRzIGZvciBvcHRpb24gXCIlc1wiIiwKQEAgLTE2NjcsNyAr MTY2Nyw3IEBAIHBhcnNlX29uZV9yZWxvcHRpb24ocmVsb3B0X3ZhbHVlICpvcHRpb24sIGNo YXIgKnRleHRfc3RyLCBpbnQgdGV4dF9sZW4sCiAJCQkJewogCQkJCQlpZiAocGdfc3RyY2Fz ZWNtcCh2YWx1ZSwgZWx0LT5zdHJpbmdfdmFsKSA9PSAwKQogCQkJCQl7Ci0JCQkJCQlvcHRp b24tPnZhbHVlcy5lbnVtX3ZhbCA9IGVsdC0+c3ltYm9sX3ZhbDsKKwkJCQkJCW9wdGlvbi0+ ZW51bV92YWwgPSBlbHQtPnN5bWJvbF92YWw7CiAJCQkJCQlwYXJzZWQgPSB0cnVlOwogCQkJ CQkJYnJlYWs7CiAJCQkJCX0KQEAgLTE2ODUsMTQgKzE2ODUsMTQgQEAgcGFyc2Vfb25lX3Jl bG9wdGlvbihyZWxvcHRfdmFsdWUgKm9wdGlvbiwgY2hhciAqdGV4dF9zdHIsIGludCB0ZXh0 X2xlbiwKIAkJCQkgKiBub3QgYXNrZWQgdG8gdmFsaWRhdGUsIGp1c3QgdXNlIHRoZSBkZWZh dWx0IG51bWVyaWMgdmFsdWUuCiAJCQkJICovCiAJCQkJaWYgKCFwYXJzZWQpCi0JCQkJCW9w dGlvbi0+dmFsdWVzLmVudW1fdmFsID0gb3B0ZW51bS0+ZGVmYXVsdF92YWw7CisJCQkJCW9w dGlvbi0+ZW51bV92YWwgPSBvcHRlbnVtLT5kZWZhdWx0X3ZhbDsKIAkJCX0KIAkJCWJyZWFr OwogCQljYXNlIFJFTE9QVF9UWVBFX1NUUklORzoKIAkJCXsKIAkJCQlyZWxvcHRfc3RyaW5n ICpvcHRzdHJpbmcgPSAocmVsb3B0X3N0cmluZyAqKSBvcHRpb24tPmdlbjsKIAotCQkJCW9w dGlvbi0+dmFsdWVzLnN0cmluZ192YWwgPSB2YWx1ZTsKKwkJCQlvcHRpb24tPnN0cmluZ192 YWwgPSB2YWx1ZTsKIAkJCQlub2ZyZWUgPSB0cnVlOwogCQkJCWlmICh2YWxpZGF0ZSAmJiBv cHRzdHJpbmctPnZhbGlkYXRlX2NiKQogCQkJCQkob3B0c3RyaW5nLT52YWxpZGF0ZV9jYikg KHZhbHVlKTsKQEAgLTE3MzQsNyArMTczNCw3IEBAIGFsbG9jYXRlUmVsb3B0U3RydWN0KFNp emUgYmFzZSwgcmVsb3B0X3ZhbHVlICpvcHRpb25zLCBpbnQgbnVtb3B0aW9ucykKIAogCQkJ aWYgKG9wdHN0ci0+ZmlsbF9jYikKIAkJCXsKLQkJCQljb25zdCBjaGFyICp2YWwgPSBvcHR2 YWwtPmlzc2V0ID8gb3B0dmFsLT52YWx1ZXMuc3RyaW5nX3ZhbCA6CisJCQkJY29uc3QgY2hh ciAqdmFsID0gb3B0dmFsLT5pc3NldCA/IG9wdHZhbC0+c3RyaW5nX3ZhbCA6CiAJCQkJCW9w dHN0ci0+ZGVmYXVsdF9pc251bGwgPyBOVUxMIDogb3B0c3RyLT5kZWZhdWx0X3ZhbDsKIAog CQkJCXNpemUgKz0gb3B0c3RyLT5maWxsX2NiKHZhbCwgTlVMTCk7CkBAIC0xNzk1LDI4ICsx Nzk1LDI4IEBAIGZpbGxSZWxPcHRpb25zKHZvaWQgKnJkb3B0cywgU2l6ZSBiYXNlc2l6ZSwK IAkJCQl7CiAJCQkJCWNhc2UgUkVMT1BUX1RZUEVfQk9PTDoKIAkJCQkJCSooYm9vbCAqKSBp dGVtcG9zID0gb3B0aW9uc1tpXS5pc3NldCA/Ci0JCQkJCQkJb3B0aW9uc1tpXS52YWx1ZXMu Ym9vbF92YWwgOgorCQkJCQkJCW9wdGlvbnNbaV0uYm9vbF92YWwgOgogCQkJCQkJCSgocmVs b3B0X2Jvb2wgKikgb3B0aW9uc1tpXS5nZW4pLT5kZWZhdWx0X3ZhbDsKIAkJCQkJCWJyZWFr OwogCQkJCQljYXNlIFJFTE9QVF9UWVBFX0lOVDoKIAkJCQkJCSooaW50ICopIGl0ZW1wb3Mg PSBvcHRpb25zW2ldLmlzc2V0ID8KLQkJCQkJCQlvcHRpb25zW2ldLnZhbHVlcy5pbnRfdmFs IDoKKwkJCQkJCQlvcHRpb25zW2ldLmludF92YWwgOgogCQkJCQkJCSgocmVsb3B0X2ludCAq KSBvcHRpb25zW2ldLmdlbiktPmRlZmF1bHRfdmFsOwogCQkJCQkJYnJlYWs7CiAJCQkJCWNh c2UgUkVMT1BUX1RZUEVfUkVBTDoKIAkJCQkJCSooZG91YmxlICopIGl0ZW1wb3MgPSBvcHRp b25zW2ldLmlzc2V0ID8KLQkJCQkJCQlvcHRpb25zW2ldLnZhbHVlcy5yZWFsX3ZhbCA6CisJ CQkJCQkJb3B0aW9uc1tpXS5yZWFsX3ZhbCA6CiAJCQkJCQkJKChyZWxvcHRfcmVhbCAqKSBv cHRpb25zW2ldLmdlbiktPmRlZmF1bHRfdmFsOwogCQkJCQkJYnJlYWs7CiAJCQkJCWNhc2Ug UkVMT1BUX1RZUEVfRU5VTToKIAkJCQkJCSooaW50ICopIGl0ZW1wb3MgPSBvcHRpb25zW2ld Lmlzc2V0ID8KLQkJCQkJCQlvcHRpb25zW2ldLnZhbHVlcy5lbnVtX3ZhbCA6CisJCQkJCQkJ b3B0aW9uc1tpXS5lbnVtX3ZhbCA6CiAJCQkJCQkJKChyZWxvcHRfZW51bSAqKSBvcHRpb25z W2ldLmdlbiktPmRlZmF1bHRfdmFsOwogCQkJCQkJYnJlYWs7CiAJCQkJCWNhc2UgUkVMT1BU X1RZUEVfU1RSSU5HOgogCQkJCQkJb3B0c3RyaW5nID0gKHJlbG9wdF9zdHJpbmcgKikgb3B0 aW9uc1tpXS5nZW47CiAJCQkJCQlpZiAob3B0aW9uc1tpXS5pc3NldCkKLQkJCQkJCQlzdHJp bmdfdmFsID0gb3B0aW9uc1tpXS52YWx1ZXMuc3RyaW5nX3ZhbDsKKwkJCQkJCQlzdHJpbmdf dmFsID0gb3B0aW9uc1tpXS5zdHJpbmdfdmFsOwogCQkJCQkJZWxzZSBpZiAoIW9wdHN0cmlu Zy0+ZGVmYXVsdF9pc251bGwpCiAJCQkJCQkJc3RyaW5nX3ZhbCA9IG9wdHN0cmluZy0+ZGVm YXVsdF92YWw7CiAJCQkJCQllbHNlCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv cmVsb3B0aW9ucy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbG9wdGlvbnMuaAppbmRleCBh NjA0YTQ3MDJjMy4uZTE2YjQxMmZiNGEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vz cy9yZWxvcHRpb25zLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbG9wdGlvbnMuaApA QCAtODQsNyArODQsNyBAQCB0eXBlZGVmIHN0cnVjdCByZWxvcHRfdmFsdWUKIAkJZG91Ymxl CQlyZWFsX3ZhbDsKIAkJaW50CQkJZW51bV92YWw7CiAJCWNoYXIJICAgKnN0cmluZ192YWw7 IC8qIGFsbG9jYXRlZCBzZXBhcmF0ZWx5ICovCi0JfQkJCXZhbHVlczsKKwl9OwogfSByZWxv cHRfdmFsdWU7CiAKIC8qIHJlbG9wdGlvbnMgcmVjb3JkcyBmb3Igc3BlY2lmaWMgdmFyaWFi bGUgdHlwZXMgKi8KLS0gCjIuNTEuMAoK --------------XMilSvfSoQNhBmwudkXUWZaX Content-Type: text/plain; charset=UTF-8; name="0010-C11-anonymous-unions-gist.patch" Content-Disposition: attachment; filename="0010-C11-anonymous-unions-gist.patch" Content-Transfer-Encoding: base64 RnJvbSAzMjhjYjg2NGIzZDVkNmU4OGEzNmIyNjkyNDZlOWI4MDAyYzRkYzMzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAyMiBTZXAgMjAyNSAxNDo0Nzo0OCArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMTAvMjNdIEMxMSBhbm9ueW1vdXMgdW5pb25zIFtnaXN0XQoKLS0tCiBzcmMv YmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0Z2V0LmMgfCAyOCArKysrKysrKysrKysrKy0tLS0t LS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdF9wcml2YXRlLmggfCAgMiArLQog MiBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0Z2V0LmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvZ2lzdC9naXN0Z2V0LmMKaW5kZXggMzg3ZDk5NzIzNDUuLmEyMGQ3MjRk NWNhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0Z2V0LmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGdldC5jCkBAIC0zNTMsOSArMzUzLDkg QEAgZ2lzdFNjYW5QYWdlKEluZGV4U2NhbkRlc2Mgc2NhbiwgR0lTVFNlYXJjaEl0ZW0gKnBh Z2VJdGVtLAogCSAqIHBhcmVudGxzbiA8IG5zbiksIG9yIGlmIHRoZSBzeXN0ZW0gY3Jhc2hl ZCBhZnRlciBhIHBhZ2Ugc3BsaXQgYnV0CiAJICogYmVmb3JlIHRoZSBkb3dubGluayB3YXMg aW5zZXJ0ZWQgaW50byB0aGUgcGFyZW50LgogCSAqLwotCWlmICghWExvZ1JlY1B0cklzSW52 YWxpZChwYWdlSXRlbS0+ZGF0YS5wYXJlbnRsc24pICYmCisJaWYgKCFYTG9nUmVjUHRySXNJ bnZhbGlkKHBhZ2VJdGVtLT5wYXJlbnRsc24pICYmCiAJCShHaXN0Rm9sbG93UmlnaHQocGFn ZSkgfHwKLQkJIHBhZ2VJdGVtLT5kYXRhLnBhcmVudGxzbiA8IEdpc3RQYWdlR2V0TlNOKHBh Z2UpKSAmJgorCQkgcGFnZUl0ZW0tPnBhcmVudGxzbiA8IEdpc3RQYWdlR2V0TlNOKHBhZ2Up KSAmJgogCQlvcGFxdWUtPnJpZ2h0bGluayAhPSBJbnZhbGlkQmxvY2tOdW1iZXIgLyogc2Fu aXR5IGNoZWNrICovICkKIAl7CiAJCS8qIFRoZXJlIHdhcyBhIHBhZ2Ugc3BsaXQsIGZvbGxv dyByaWdodCBsaW5rIHRvIGFkZCBwYWdlcyAqLwpAQCAtMzY5LDcgKzM2OSw3IEBAIGdpc3RT Y2FuUGFnZShJbmRleFNjYW5EZXNjIHNjYW4sIEdJU1RTZWFyY2hJdGVtICpwYWdlSXRlbSwK IAkJLyogQ3JlYXRlIG5ldyBHSVNUU2VhcmNoSXRlbSBmb3IgdGhlIHJpZ2h0IHNpYmxpbmcg aW5kZXggcGFnZSAqLwogCQlpdGVtID0gcGFsbG9jKFNpemVPZkdJU1RTZWFyY2hJdGVtKHNj YW4tPm51bWJlck9mT3JkZXJCeXMpKTsKIAkJaXRlbS0+Ymxrbm8gPSBvcGFxdWUtPnJpZ2h0 bGluazsKLQkJaXRlbS0+ZGF0YS5wYXJlbnRsc24gPSBwYWdlSXRlbS0+ZGF0YS5wYXJlbnRs c247CisJCWl0ZW0tPnBhcmVudGxzbiA9IHBhZ2VJdGVtLT5wYXJlbnRsc247CiAKIAkJLyog SW5zZXJ0IGl0IGludG8gdGhlIHF1ZXVlIHVzaW5nIHNhbWUgZGlzdGFuY2VzIGFzIGZvciB0 aGlzIHBhZ2UgKi8KIAkJbWVtY3B5KGl0ZW0tPmRpc3RhbmNlcywgbXlEaXN0YW5jZXMsCkBA IC00OTMsMTUgKzQ5MywxNSBAQCBnaXN0U2NhblBhZ2UoSW5kZXhTY2FuRGVzYyBzY2FuLCBH SVNUU2VhcmNoSXRlbSAqcGFnZUl0ZW0sCiAJCQl7CiAJCQkJLyogQ3JlYXRpbmcgaGVhcC10 dXBsZSBHSVNUU2VhcmNoSXRlbSAqLwogCQkJCWl0ZW0tPmJsa25vID0gSW52YWxpZEJsb2Nr TnVtYmVyOwotCQkJCWl0ZW0tPmRhdGEuaGVhcC5oZWFwUHRyID0gaXQtPnRfdGlkOwotCQkJ CWl0ZW0tPmRhdGEuaGVhcC5yZWNoZWNrID0gcmVjaGVjazsKLQkJCQlpdGVtLT5kYXRhLmhl YXAucmVjaGVja0Rpc3RhbmNlcyA9IHJlY2hlY2tfZGlzdGFuY2VzOworCQkJCWl0ZW0tPmhl YXAuaGVhcFB0ciA9IGl0LT50X3RpZDsKKwkJCQlpdGVtLT5oZWFwLnJlY2hlY2sgPSByZWNo ZWNrOworCQkJCWl0ZW0tPmhlYXAucmVjaGVja0Rpc3RhbmNlcyA9IHJlY2hlY2tfZGlzdGFu Y2VzOwogCiAJCQkJLyoKIAkJCQkgKiBJbiBhbiBpbmRleC1vbmx5IHNjYW4sIGFsc28gZmV0 Y2ggdGhlIGRhdGEgZnJvbSB0aGUgdHVwbGUuCiAJCQkJICovCiAJCQkJaWYgKHNjYW4tPnhz X3dhbnRfaXR1cCkKLQkJCQkJaXRlbS0+ZGF0YS5oZWFwLnJlY29udHVwID0gZ2lzdEZldGNo VHVwbGUoZ2lzdHN0YXRlLCByLCBpdCk7CisJCQkJCWl0ZW0tPmhlYXAucmVjb250dXAgPSBn aXN0RmV0Y2hUdXBsZShnaXN0c3RhdGUsIHIsIGl0KTsKIAkJCX0KIAkJCWVsc2UKIAkJCXsK QEAgLTUxMyw3ICs1MTMsNyBAQCBnaXN0U2NhblBhZ2UoSW5kZXhTY2FuRGVzYyBzY2FuLCBH SVNUU2VhcmNoSXRlbSAqcGFnZUl0ZW0sCiAJCQkJICogb25seSBoYXZlIGEgc2hhcmVkIGxv Y2ssIHNvIHdlIG5lZWQgdG8gZ2V0IHRoZSBMU04KIAkJCQkgKiBhdG9taWNhbGx5LgogCQkJ CSAqLwotCQkJCWl0ZW0tPmRhdGEucGFyZW50bHNuID0gQnVmZmVyR2V0TFNOQXRvbWljKGJ1 ZmZlcik7CisJCQkJaXRlbS0+cGFyZW50bHNuID0gQnVmZmVyR2V0TFNOQXRvbWljKGJ1ZmZl cik7CiAJCQl9CiAKIAkJCS8qIEluc2VydCBpdCBpbnRvIHRoZSBxdWV1ZSB1c2luZyBuZXcg ZGlzdGFuY2UgZGF0YSAqLwpAQCAtNTc5LDE2ICs1NzksMTYgQEAgZ2V0TmV4dE5lYXJlc3Qo SW5kZXhTY2FuRGVzYyBzY2FuKQogCQlpZiAoR0lTVFNlYXJjaEl0ZW1Jc0hlYXAoKml0ZW0p KQogCQl7CiAJCQkvKiBmb3VuZCBhIGhlYXAgaXRlbSBhdCBjdXJyZW50bHkgbWluaW1hbCBk aXN0YW5jZSAqLwotCQkJc2Nhbi0+eHNfaGVhcHRpZCA9IGl0ZW0tPmRhdGEuaGVhcC5oZWFw UHRyOwotCQkJc2Nhbi0+eHNfcmVjaGVjayA9IGl0ZW0tPmRhdGEuaGVhcC5yZWNoZWNrOwor CQkJc2Nhbi0+eHNfaGVhcHRpZCA9IGl0ZW0tPmhlYXAuaGVhcFB0cjsKKwkJCXNjYW4tPnhz X3JlY2hlY2sgPSBpdGVtLT5oZWFwLnJlY2hlY2s7CiAKIAkJCWluZGV4X3N0b3JlX2Zsb2F0 OF9vcmRlcmJ5X2Rpc3RhbmNlcyhzY2FuLCBzby0+b3JkZXJCeVR5cGVzLAogCQkJCQkJCQkJ CQkJIGl0ZW0tPmRpc3RhbmNlcywKLQkJCQkJCQkJCQkJCSBpdGVtLT5kYXRhLmhlYXAucmVj aGVja0Rpc3RhbmNlcyk7CisJCQkJCQkJCQkJCQkgaXRlbS0+aGVhcC5yZWNoZWNrRGlzdGFu Y2VzKTsKIAogCQkJLyogaW4gYW4gaW5kZXgtb25seSBzY2FuLCBhbHNvIHJldHVybiB0aGUg cmVjb25zdHJ1Y3RlZCB0dXBsZS4gKi8KIAkJCWlmIChzY2FuLT54c193YW50X2l0dXApCi0J CQkJc2Nhbi0+eHNfaGl0dXAgPSBpdGVtLT5kYXRhLmhlYXAucmVjb250dXA7CisJCQkJc2Nh bi0+eHNfaGl0dXAgPSBpdGVtLT5oZWFwLnJlY29udHVwOwogCQkJcmVzID0gdHJ1ZTsKIAkJ fQogCQllbHNlCkBAIC02MzUsNyArNjM1LDcgQEAgZ2lzdGdldHR1cGxlKEluZGV4U2NhbkRl c2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpCiAJCQlNZW1vcnlDb250ZXh0UmVzZXQoc28t PnBhZ2VEYXRhQ3h0KTsKIAogCQlmYWtlSXRlbS5ibGtubyA9IEdJU1RfUk9PVF9CTEtOTzsK LQkJbWVtc2V0KCZmYWtlSXRlbS5kYXRhLnBhcmVudGxzbiwgMCwgc2l6ZW9mKEdpc3ROU04p KTsKKwkJbWVtc2V0KCZmYWtlSXRlbS5wYXJlbnRsc24sIDAsIHNpemVvZihHaXN0TlNOKSk7 CiAJCWdpc3RTY2FuUGFnZShzY2FuLCAmZmFrZUl0ZW0sIE5VTEwsIE5VTEwsIE5VTEwpOwog CX0KIApAQCAtNzYyLDcgKzc2Miw3IEBAIGdpc3RnZXRiaXRtYXAoSW5kZXhTY2FuRGVzYyBz Y2FuLCBUSURCaXRtYXAgKnRibSkKIAkJTWVtb3J5Q29udGV4dFJlc2V0KHNvLT5wYWdlRGF0 YUN4dCk7CiAKIAlmYWtlSXRlbS5ibGtubyA9IEdJU1RfUk9PVF9CTEtOTzsKLQltZW1zZXQo JmZha2VJdGVtLmRhdGEucGFyZW50bHNuLCAwLCBzaXplb2YoR2lzdE5TTikpOworCW1lbXNl dCgmZmFrZUl0ZW0ucGFyZW50bHNuLCAwLCBzaXplb2YoR2lzdE5TTikpOwogCWdpc3RTY2Fu UGFnZShzY2FuLCAmZmFrZUl0ZW0sIE5VTEwsIHRibSwgJm50aWRzKTsKIAogCS8qCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdF9wcml2YXRlLmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvZ2lzdF9wcml2YXRlLmgKaW5kZXggMzk0MDRlYzdjZGIuLmY3YzUzMjc1N2E2 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdF9wcml2YXRlLmgKKysrIGIv c3JjL2luY2x1ZGUvYWNjZXNzL2dpc3RfcHJpdmF0ZS5oCkBAIC0xMzYsNyArMTM2LDcgQEAg dHlwZWRlZiBzdHJ1Y3QgR0lTVFNlYXJjaEl0ZW0KIAkJR2lzdE5TTgkJcGFyZW50bHNuOwkv KiBwYXJlbnQgcGFnZSdzIExTTiwgaWYgaW5kZXggcGFnZSAqLwogCQkvKiB3ZSBtdXN0IHN0 b3JlIHBhcmVudGxzbiB0byBkZXRlY3Qgd2hldGhlciBhIHNwbGl0IG9jY3VycmVkICovCiAJ CUdJU1RTZWFyY2hIZWFwSXRlbSBoZWFwOwkvKiBoZWFwIGluZm8sIGlmIGhlYXAgdHVwbGUg Ki8KLQl9CQkJZGF0YTsKKwl9OwogCiAJLyogbnVtYmVyT2ZPcmRlckJ5cyBlbnRyaWVzICov CiAJSW5kZXhPcmRlckJ5RGlzdGFuY2UgZGlzdGFuY2VzW0ZMRVhJQkxFX0FSUkFZX01FTUJF Ul07Ci0tIAoyLjUxLjAKCg== --------------XMilSvfSoQNhBmwudkXUWZaX Content-Type: text/plain; charset=UTF-8; name="0011-C11-anonymous-unions-deparse.patch" Content-Disposition: attachment; filename="0011-C11-anonymous-unions-deparse.patch" Content-Transfer-Encoding: base64 RnJvbSBlMmMwYmRhN2U3ZDY5OTRiZjJjYTFkNDE0YTY4ZTk4NTVkNjIzMDExIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAyMiBTZXAgMjAyNSAxNDo0Nzo0OCArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMTEvMjNdIEMxMSBhbm9ueW1vdXMgdW5pb25zIFtkZXBhcnNlXQoKLS0tCiBz cmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMgICAgICAgICAgfCA2NCArKysr KysrKystLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS90Y29wL2RlcGFyc2VfdXRpbGl0eS5oICAg ICAgICAgICAgfCAgMiArLQogLi4uL3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJz ZS5jICAgICAgIHwgIDQgKy0KIDMgZmlsZXMgY2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygrKSwg MzUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZl bnRfdHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jCmlu ZGV4IGYzNDg2OGRhNWFiLi5lYzQyZDk1Y2U1YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2 ZW50X3RyaWdnZXIuYwpAQCAtMTczMSw4ICsxNzMxLDggQEAgRXZlbnRUcmlnZ2VyQ29sbGVj dFNpbXBsZUNvbW1hbmQoT2JqZWN0QWRkcmVzcyBhZGRyZXNzLAogCWNvbW1hbmQtPnR5cGUg PSBTQ1RfU2ltcGxlOwogCWNvbW1hbmQtPmluX2V4dGVuc2lvbiA9IGNyZWF0aW5nX2V4dGVu c2lvbjsKIAotCWNvbW1hbmQtPmQuc2ltcGxlLmFkZHJlc3MgPSBhZGRyZXNzOwotCWNvbW1h bmQtPmQuc2ltcGxlLnNlY29uZGFyeU9iamVjdCA9IHNlY29uZGFyeU9iamVjdDsKKwljb21t YW5kLT5zaW1wbGUuYWRkcmVzcyA9IGFkZHJlc3M7CisJY29tbWFuZC0+c2ltcGxlLnNlY29u ZGFyeU9iamVjdCA9IHNlY29uZGFyeU9iamVjdDsKIAljb21tYW5kLT5wYXJzZXRyZWUgPSBj b3B5T2JqZWN0KHBhcnNldHJlZSk7CiAKIAljdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmNv bW1hbmRMaXN0ID0gbGFwcGVuZChjdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmNvbW1hbmRM aXN0LApAQCAtMTc2Nyw5ICsxNzY3LDkgQEAgRXZlbnRUcmlnZ2VyQWx0ZXJUYWJsZVN0YXJ0 KE5vZGUgKnBhcnNldHJlZSkKIAljb21tYW5kLT50eXBlID0gU0NUX0FsdGVyVGFibGU7CiAJ Y29tbWFuZC0+aW5fZXh0ZW5zaW9uID0gY3JlYXRpbmdfZXh0ZW5zaW9uOwogCi0JY29tbWFu ZC0+ZC5hbHRlclRhYmxlLmNsYXNzSWQgPSBSZWxhdGlvblJlbGF0aW9uSWQ7Ci0JY29tbWFu ZC0+ZC5hbHRlclRhYmxlLm9iamVjdElkID0gSW52YWxpZE9pZDsKLQljb21tYW5kLT5kLmFs dGVyVGFibGUuc3ViY21kcyA9IE5JTDsKKwljb21tYW5kLT5hbHRlclRhYmxlLmNsYXNzSWQg PSBSZWxhdGlvblJlbGF0aW9uSWQ7CisJY29tbWFuZC0+YWx0ZXJUYWJsZS5vYmplY3RJZCA9 IEludmFsaWRPaWQ7CisJY29tbWFuZC0+YWx0ZXJUYWJsZS5zdWJjbWRzID0gTklMOwogCWNv bW1hbmQtPnBhcnNldHJlZSA9IGNvcHlPYmplY3QocGFyc2V0cmVlKTsKIAogCWNvbW1hbmQt PnBhcmVudCA9IGN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y3VycmVudENvbW1hbmQ7CkBA IC0xNzkwLDcgKzE3OTAsNyBAQCBFdmVudFRyaWdnZXJBbHRlclRhYmxlUmVsaWQoT2lkIG9i amVjdElkKQogCQljdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmNvbW1hbmRDb2xsZWN0aW9u SW5oaWJpdGVkKQogCQlyZXR1cm47CiAKLQljdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmN1 cnJlbnRDb21tYW5kLT5kLmFsdGVyVGFibGUub2JqZWN0SWQgPSBvYmplY3RJZDsKKwljdXJy ZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmN1cnJlbnRDb21tYW5kLT5hbHRlclRhYmxlLm9iamVj dElkID0gb2JqZWN0SWQ7CiB9CiAKIC8qCkBAIC0xODE0LDcgKzE4MTQsNyBAQCBFdmVudFRy aWdnZXJDb2xsZWN0QWx0ZXJUYWJsZVN1YmNtZChOb2RlICpzdWJjbWQsIE9iamVjdEFkZHJl c3MgYWRkcmVzcykKIAogCUFzc2VydChJc0Eoc3ViY21kLCBBbHRlclRhYmxlQ21kKSk7CiAJ QXNzZXJ0KGN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y3VycmVudENvbW1hbmQgIT0gTlVM TCk7Ci0JQXNzZXJ0KE9pZElzVmFsaWQoY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5jdXJy ZW50Q29tbWFuZC0+ZC5hbHRlclRhYmxlLm9iamVjdElkKSk7CisJQXNzZXJ0KE9pZElzVmFs aWQoY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5jdXJyZW50Q29tbWFuZC0+YWx0ZXJUYWJs ZS5vYmplY3RJZCkpOwogCiAJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGN1cnJl bnRFdmVudFRyaWdnZXJTdGF0ZS0+Y3h0KTsKIApAQCAtMTgyMiw4ICsxODIyLDggQEAgRXZl bnRUcmlnZ2VyQ29sbGVjdEFsdGVyVGFibGVTdWJjbWQoTm9kZSAqc3ViY21kLCBPYmplY3RB ZGRyZXNzIGFkZHJlc3MpCiAJbmV3c3ViLT5hZGRyZXNzID0gYWRkcmVzczsKIAluZXdzdWIt PnBhcnNldHJlZSA9IGNvcHlPYmplY3Qoc3ViY21kKTsKIAotCWN1cnJlbnRFdmVudFRyaWdn ZXJTdGF0ZS0+Y3VycmVudENvbW1hbmQtPmQuYWx0ZXJUYWJsZS5zdWJjbWRzID0KLQkJbGFw cGVuZChjdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmN1cnJlbnRDb21tYW5kLT5kLmFsdGVy VGFibGUuc3ViY21kcywgbmV3c3ViKTsKKwljdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmN1 cnJlbnRDb21tYW5kLT5hbHRlclRhYmxlLnN1YmNtZHMgPQorCQlsYXBwZW5kKGN1cnJlbnRF dmVudFRyaWdnZXJTdGF0ZS0+Y3VycmVudENvbW1hbmQtPmFsdGVyVGFibGUuc3ViY21kcywg bmV3c3ViKTsKIAogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOwogfQpAQCAtMTg0 OSw3ICsxODQ5LDcgQEAgRXZlbnRUcmlnZ2VyQWx0ZXJUYWJsZUVuZCh2b2lkKQogCXBhcmVu dCA9IGN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y3VycmVudENvbW1hbmQtPnBhcmVudDsK IAogCS8qIElmIG5vIHN1YmNvbW1hbmRzLCBkb24ndCBjb2xsZWN0ICovCi0JaWYgKGN1cnJl bnRFdmVudFRyaWdnZXJTdGF0ZS0+Y3VycmVudENvbW1hbmQtPmQuYWx0ZXJUYWJsZS5zdWJj bWRzICE9IE5JTCkKKwlpZiAoY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5jdXJyZW50Q29t bWFuZC0+YWx0ZXJUYWJsZS5zdWJjbWRzICE9IE5JTCkKIAl7CiAJCU1lbW9yeUNvbnRleHQg b2xkY3h0OwogCkBAIC0xOTA0LDcgKzE5MDQsNyBAQCBFdmVudFRyaWdnZXJDb2xsZWN0R3Jh bnQoSW50ZXJuYWxHcmFudCAqaXN0bXQpCiAJY29tbWFuZCA9IHBhbGxvYyhzaXplb2YoQ29s bGVjdGVkQ29tbWFuZCkpOwogCWNvbW1hbmQtPnR5cGUgPSBTQ1RfR3JhbnQ7CiAJY29tbWFu ZC0+aW5fZXh0ZW5zaW9uID0gY3JlYXRpbmdfZXh0ZW5zaW9uOwotCWNvbW1hbmQtPmQuZ3Jh bnQuaXN0bXQgPSBpY29weTsKKwljb21tYW5kLT5ncmFudC5pc3RtdCA9IGljb3B5OwogCWNv bW1hbmQtPnBhcnNldHJlZSA9IE5VTEw7CiAKIAljdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUt PmNvbW1hbmRMaXN0ID0KQEAgLTE5MzUsMTAgKzE5MzUsMTAgQEAgRXZlbnRUcmlnZ2VyQ29s bGVjdEFsdGVyT3BGYW0oQWx0ZXJPcEZhbWlseVN0bXQgKnN0bXQsIE9pZCBvcGZhbW9pZCwK IAljb21tYW5kID0gcGFsbG9jKHNpemVvZihDb2xsZWN0ZWRDb21tYW5kKSk7CiAJY29tbWFu ZC0+dHlwZSA9IFNDVF9BbHRlck9wRmFtaWx5OwogCWNvbW1hbmQtPmluX2V4dGVuc2lvbiA9 IGNyZWF0aW5nX2V4dGVuc2lvbjsKLQlPYmplY3RBZGRyZXNzU2V0KGNvbW1hbmQtPmQub3Bm YW0uYWRkcmVzcywKKwlPYmplY3RBZGRyZXNzU2V0KGNvbW1hbmQtPm9wZmFtLmFkZHJlc3Ms CiAJCQkJCSBPcGVyYXRvckZhbWlseVJlbGF0aW9uSWQsIG9wZmFtb2lkKTsKLQljb21tYW5k LT5kLm9wZmFtLm9wZXJhdG9ycyA9IG9wZXJhdG9yczsKLQljb21tYW5kLT5kLm9wZmFtLnBy b2NlZHVyZXMgPSBwcm9jZWR1cmVzOworCWNvbW1hbmQtPm9wZmFtLm9wZXJhdG9ycyA9IG9w ZXJhdG9yczsKKwljb21tYW5kLT5vcGZhbS5wcm9jZWR1cmVzID0gcHJvY2VkdXJlczsKIAlj b21tYW5kLT5wYXJzZXRyZWUgPSAoTm9kZSAqKSBjb3B5T2JqZWN0KHN0bXQpOwogCiAJY3Vy cmVudEV2ZW50VHJpZ2dlclN0YXRlLT5jb21tYW5kTGlzdCA9CkBAIC0xOTY4LDEwICsxOTY4 LDEwIEBAIEV2ZW50VHJpZ2dlckNvbGxlY3RDcmVhdGVPcENsYXNzKENyZWF0ZU9wQ2xhc3NT dG10ICpzdG10LCBPaWQgb3Bjb2lkLAogCWNvbW1hbmQgPSBwYWxsb2MwKHNpemVvZihDb2xs ZWN0ZWRDb21tYW5kKSk7CiAJY29tbWFuZC0+dHlwZSA9IFNDVF9DcmVhdGVPcENsYXNzOwog CWNvbW1hbmQtPmluX2V4dGVuc2lvbiA9IGNyZWF0aW5nX2V4dGVuc2lvbjsKLQlPYmplY3RB ZGRyZXNzU2V0KGNvbW1hbmQtPmQuY3JlYXRlb3BjLmFkZHJlc3MsCisJT2JqZWN0QWRkcmVz c1NldChjb21tYW5kLT5jcmVhdGVvcGMuYWRkcmVzcywKIAkJCQkJIE9wZXJhdG9yQ2xhc3NS ZWxhdGlvbklkLCBvcGNvaWQpOwotCWNvbW1hbmQtPmQuY3JlYXRlb3BjLm9wZXJhdG9ycyA9 IG9wZXJhdG9yczsKLQljb21tYW5kLT5kLmNyZWF0ZW9wYy5wcm9jZWR1cmVzID0gcHJvY2Vk dXJlczsKKwljb21tYW5kLT5jcmVhdGVvcGMub3BlcmF0b3JzID0gb3BlcmF0b3JzOworCWNv bW1hbmQtPmNyZWF0ZW9wYy5wcm9jZWR1cmVzID0gcHJvY2VkdXJlczsKIAljb21tYW5kLT5w YXJzZXRyZWUgPSAoTm9kZSAqKSBjb3B5T2JqZWN0KHN0bXQpOwogCiAJY3VycmVudEV2ZW50 VHJpZ2dlclN0YXRlLT5jb21tYW5kTGlzdCA9CkBAIC0yMDAyLDExICsyMDAyLDExIEBAIEV2 ZW50VHJpZ2dlckNvbGxlY3RBbHRlclRTQ29uZmlnKEFsdGVyVFNDb25maWd1cmF0aW9uU3Rt dCAqc3RtdCwgT2lkIGNmZ0lkLAogCWNvbW1hbmQgPSBwYWxsb2MwKHNpemVvZihDb2xsZWN0 ZWRDb21tYW5kKSk7CiAJY29tbWFuZC0+dHlwZSA9IFNDVF9BbHRlclRTQ29uZmlnOwogCWNv bW1hbmQtPmluX2V4dGVuc2lvbiA9IGNyZWF0aW5nX2V4dGVuc2lvbjsKLQlPYmplY3RBZGRy ZXNzU2V0KGNvbW1hbmQtPmQuYXRzY2ZnLmFkZHJlc3MsCisJT2JqZWN0QWRkcmVzc1NldChj b21tYW5kLT5hdHNjZmcuYWRkcmVzcywKIAkJCQkJIFRTQ29uZmlnUmVsYXRpb25JZCwgY2Zn SWQpOwotCWNvbW1hbmQtPmQuYXRzY2ZnLmRpY3RJZHMgPSBwYWxsb2Moc2l6ZW9mKE9pZCkg KiBuZGljdHMpOwotCW1lbWNweShjb21tYW5kLT5kLmF0c2NmZy5kaWN0SWRzLCBkaWN0SWRz LCBzaXplb2YoT2lkKSAqIG5kaWN0cyk7Ci0JY29tbWFuZC0+ZC5hdHNjZmcubmRpY3RzID0g bmRpY3RzOworCWNvbW1hbmQtPmF0c2NmZy5kaWN0SWRzID0gcGFsbG9jKHNpemVvZihPaWQp ICogbmRpY3RzKTsKKwltZW1jcHkoY29tbWFuZC0+YXRzY2ZnLmRpY3RJZHMsIGRpY3RJZHMs IHNpemVvZihPaWQpICogbmRpY3RzKTsKKwljb21tYW5kLT5hdHNjZmcubmRpY3RzID0gbmRp Y3RzOwogCWNvbW1hbmQtPnBhcnNldHJlZSA9IChOb2RlICopIGNvcHlPYmplY3Qoc3RtdCk7 CiAKIAljdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmNvbW1hbmRMaXN0ID0KQEAgLTIwMzUs NyArMjAzNSw3IEBAIEV2ZW50VHJpZ2dlckNvbGxlY3RBbHRlckRlZlByaXZzKEFsdGVyRGVm YXVsdFByaXZpbGVnZXNTdG10ICpzdG10KQogCiAJY29tbWFuZCA9IHBhbGxvYzAoc2l6ZW9m KENvbGxlY3RlZENvbW1hbmQpKTsKIAljb21tYW5kLT50eXBlID0gU0NUX0FsdGVyRGVmYXVs dFByaXZpbGVnZXM7Ci0JY29tbWFuZC0+ZC5kZWZwcml2cy5vYmp0eXBlID0gc3RtdC0+YWN0 aW9uLT5vYmp0eXBlOworCWNvbW1hbmQtPmRlZnByaXZzLm9ianR5cGUgPSBzdG10LT5hY3Rp b24tPm9ianR5cGU7CiAJY29tbWFuZC0+aW5fZXh0ZW5zaW9uID0gY3JlYXRpbmdfZXh0ZW5z aW9uOwogCWNvbW1hbmQtPnBhcnNldHJlZSA9IChOb2RlICopIGNvcHlPYmplY3Qoc3RtdCk7 CiAKQEAgLTIwODUsNyArMjA4NSw3IEBAIHBnX2V2ZW50X3RyaWdnZXJfZGRsX2NvbW1hbmRz KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCSAqIHN0YXRlIGFueXdheS4KIAkJICovCiAJCWlmIChj bWQtPnR5cGUgPT0gU0NUX1NpbXBsZSAmJgotCQkJIU9pZElzVmFsaWQoY21kLT5kLnNpbXBs ZS5hZGRyZXNzLm9iamVjdElkKSkKKwkJCSFPaWRJc1ZhbGlkKGNtZC0+c2ltcGxlLmFkZHJl c3Mub2JqZWN0SWQpKQogCQkJY29udGludWU7CiAKIAkJc3dpdGNoIChjbWQtPnR5cGUpCkBA IC0yMTAxLDE3ICsyMTAxLDE3IEBAIHBnX2V2ZW50X3RyaWdnZXJfZGRsX2NvbW1hbmRzKFBH X0ZVTkNUSU9OX0FSR1MpCiAJCQkJCWNoYXIJICAgKnNjaGVtYSA9IE5VTEw7CiAKIAkJCQkJ aWYgKGNtZC0+dHlwZSA9PSBTQ1RfU2ltcGxlKQotCQkJCQkJYWRkciA9IGNtZC0+ZC5zaW1w bGUuYWRkcmVzczsKKwkJCQkJCWFkZHIgPSBjbWQtPnNpbXBsZS5hZGRyZXNzOwogCQkJCQll bHNlIGlmIChjbWQtPnR5cGUgPT0gU0NUX0FsdGVyVGFibGUpCiAJCQkJCQlPYmplY3RBZGRy ZXNzU2V0KGFkZHIsCi0JCQkJCQkJCQkJIGNtZC0+ZC5hbHRlclRhYmxlLmNsYXNzSWQsCi0J CQkJCQkJCQkJIGNtZC0+ZC5hbHRlclRhYmxlLm9iamVjdElkKTsKKwkJCQkJCQkJCQkgY21k LT5hbHRlclRhYmxlLmNsYXNzSWQsCisJCQkJCQkJCQkJIGNtZC0+YWx0ZXJUYWJsZS5vYmpl Y3RJZCk7CiAJCQkJCWVsc2UgaWYgKGNtZC0+dHlwZSA9PSBTQ1RfQWx0ZXJPcEZhbWlseSkK LQkJCQkJCWFkZHIgPSBjbWQtPmQub3BmYW0uYWRkcmVzczsKKwkJCQkJCWFkZHIgPSBjbWQt Pm9wZmFtLmFkZHJlc3M7CiAJCQkJCWVsc2UgaWYgKGNtZC0+dHlwZSA9PSBTQ1RfQ3JlYXRl T3BDbGFzcykKLQkJCQkJCWFkZHIgPSBjbWQtPmQuY3JlYXRlb3BjLmFkZHJlc3M7CisJCQkJ CQlhZGRyID0gY21kLT5jcmVhdGVvcGMuYWRkcmVzczsKIAkJCQkJZWxzZSBpZiAoY21kLT50 eXBlID09IFNDVF9BbHRlclRTQ29uZmlnKQotCQkJCQkJYWRkciA9IGNtZC0+ZC5hdHNjZmcu YWRkcmVzczsKKwkJCQkJCWFkZHIgPSBjbWQtPmF0c2NmZy5hZGRyZXNzOwogCiAJCQkJCS8q CiAJCQkJCSAqIElmIGFuIG9iamVjdCB3YXMgZHJvcHBlZCBpbiB0aGUgc2FtZSBjb21tYW5k IHdlIG1heSBlbmQKQEAgLTIxOTksNyArMjE5OSw3IEBAIHBnX2V2ZW50X3RyaWdnZXJfZGRs X2NvbW1hbmRzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJLyogY29tbWFuZCB0YWcgKi8KIAkJ CQl2YWx1ZXNbaSsrXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0oQ3JlYXRlQ29tbWFuZE5hbWUo Y21kLT5wYXJzZXRyZWUpKTsKIAkJCQkvKiBvYmplY3RfdHlwZSAqLwotCQkJCXZhbHVlc1tp KytdID0gQ1N0cmluZ0dldFRleHREYXR1bShzdHJpbmdpZnlfYWRlZnByaXZzX29ianR5cGUo Y21kLT5kLmRlZnByaXZzLm9ianR5cGUpKTsKKwkJCQl2YWx1ZXNbaSsrXSA9IENTdHJpbmdH ZXRUZXh0RGF0dW0oc3RyaW5naWZ5X2FkZWZwcml2c19vYmp0eXBlKGNtZC0+ZGVmcHJpdnMu b2JqdHlwZSkpOwogCQkJCS8qIHNjaGVtYSAqLwogCQkJCW51bGxzW2krK10gPSB0cnVlOwog CQkJCS8qIGlkZW50aXR5ICovCkBAIC0yMjE4LDEwICsyMjE4LDEwIEBAIHBnX2V2ZW50X3Ry aWdnZXJfZGRsX2NvbW1hbmRzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJLyogb2Jqc3ViaWQg Ki8KIAkJCQludWxsc1tpKytdID0gdHJ1ZTsKIAkJCQkvKiBjb21tYW5kIHRhZyAqLwotCQkJ CXZhbHVlc1tpKytdID0gQ1N0cmluZ0dldFRleHREYXR1bShjbWQtPmQuZ3JhbnQuaXN0bXQt PmlzX2dyYW50ID8KKwkJCQl2YWx1ZXNbaSsrXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0oY21k LT5ncmFudC5pc3RtdC0+aXNfZ3JhbnQgPwogCQkJCQkJCQkJCQkJICAiR1JBTlQiIDogIlJF Vk9LRSIpOwogCQkJCS8qIG9iamVjdF90eXBlICovCi0JCQkJdmFsdWVzW2krK10gPSBDU3Ry aW5nR2V0VGV4dERhdHVtKHN0cmluZ2lmeV9ncmFudF9vYmp0eXBlKGNtZC0+ZC5ncmFudC5p c3RtdC0+b2JqdHlwZSkpOworCQkJCXZhbHVlc1tpKytdID0gQ1N0cmluZ0dldFRleHREYXR1 bShzdHJpbmdpZnlfZ3JhbnRfb2JqdHlwZShjbWQtPmdyYW50LmlzdG10LT5vYmp0eXBlKSk7 CiAJCQkJLyogc2NoZW1hICovCiAJCQkJbnVsbHNbaSsrXSA9IHRydWU7CiAJCQkJLyogaWRl bnRpdHkgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Rjb3AvZGVwYXJzZV91dGlsaXR5 LmggYi9zcmMvaW5jbHVkZS90Y29wL2RlcGFyc2VfdXRpbGl0eS5oCmluZGV4IDM2NTEwNDUx ZDgzLi40ZWQ4MzMxNWJkOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdGNvcC9kZXBhcnNl X3V0aWxpdHkuaAorKysgYi9zcmMvaW5jbHVkZS90Y29wL2RlcGFyc2VfdXRpbGl0eS5oCkBA IC0xMDAsNyArMTAwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29sbGVjdGVkQ29tbWFuZAogCQl7 CiAJCQlPYmplY3RUeXBlCW9ianR5cGU7CiAJCX0JCQlkZWZwcml2czsKLQl9CQkJZDsKKwl9 OwogCiAJc3RydWN0IENvbGxlY3RlZENvbW1hbmQgKnBhcmVudDsJLyogd2hlbiBuZXN0ZWQg Ki8KIH0gQ29sbGVjdGVkQ29tbWFuZDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMgYi9zcmMvdGVzdC9tb2R1bGVz L3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jCmluZGV4IDE5MzY2OWYyYmMx Li5kMDAyMTIxYWRhMyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9k ZXBhcnNlL3Rlc3RfZGRsX2RlcGFyc2UuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf ZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jCkBAIC05NCwxMCArOTQsMTAgQEAgZ2V0 X2FsdGVydGFibGVfc3ViY21kaW5mbyhQR19GVU5DVElPTl9BUkdTKQogCiAJSW5pdE1hdGVy aWFsaXplZFNSRihmY2luZm8sIDApOwogCi0JaWYgKGNtZC0+ZC5hbHRlclRhYmxlLnN1YmNt ZHMgPT0gTklMKQorCWlmIChjbWQtPmFsdGVyVGFibGUuc3ViY21kcyA9PSBOSUwpCiAJCWVs b2coRVJST1IsICJlbXB0eSBhbHRlciB0YWJsZSBzdWJjb21tYW5kIGxpc3QiKTsKIAotCWZv cmVhY2goY2VsbCwgY21kLT5kLmFsdGVyVGFibGUuc3ViY21kcykKKwlmb3JlYWNoKGNlbGws IGNtZC0+YWx0ZXJUYWJsZS5zdWJjbWRzKQogCXsKIAkJQ29sbGVjdGVkQVRTdWJjbWQgKnN1 YiA9IGxmaXJzdChjZWxsKTsKIAkJQWx0ZXJUYWJsZUNtZCAqc3ViY21kID0gY2FzdE5vZGUo QWx0ZXJUYWJsZUNtZCwgc3ViLT5wYXJzZXRyZWUpOwotLSAKMi41MS4wCgo= --------------XMilSvfSoQNhBmwudkXUWZaX Content-Type: text/plain; charset=UTF-8; name="0012-C11-anonymous-unions-tsearch-ParsedWord.patch" Content-Disposition: attachment; filename="0012-C11-anonymous-unions-tsearch-ParsedWord.patch" Content-Transfer-Encoding: base64 RnJvbSA1NzVjOTA1NDM3YmJmMjJjMDIwNzY4Mzk2ZWQxYTkxNzg4MzQ0YzU5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAyMiBTZXAgMjAyNSAxNDo0Nzo0OCArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMTIvMjNdIEMxMSBhbm9ueW1vdXMgdW5pb25zIFt0c2VhcmNoIFBhcnNlZFdv cmRdCgotLS0KIHNyYy9iYWNrZW5kL3RzZWFyY2gvdG9fdHNhbnkuYyB8IDYwICsrKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3RzZWFyY2gvdHNfcGFy c2UuYyB8ICAyICstCiBzcmMvaW5jbHVkZS90c2VhcmNoL3RzX3V0aWxzLmggfCAgMiArLQog MyBmaWxlcyBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC90c2VhcmNoL3RvX3RzYW55LmMgYi9zcmMvYmFja2Vu ZC90c2VhcmNoL3RvX3RzYW55LmMKaW5kZXggNGRmY2MyY2QzYmQuLjQ5YTRkYTQ2OTA4IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC90c2VhcmNoL3RvX3RzYW55LmMKKysrIGIvc3JjL2Jh Y2tlbmQvdHNlYXJjaC90b190c2FueS5jCkBAIC02NCwxMCArNjQsMTAgQEAgY29tcGFyZVdP UkQoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKIAogCWlmIChyZXMgPT0gMCkKIAl7 Ci0JCWlmICgoKGNvbnN0IFBhcnNlZFdvcmQgKikgYSktPnBvcy5wb3MgPT0gKChjb25zdCBQ YXJzZWRXb3JkICopIGIpLT5wb3MucG9zKQorCQlpZiAoKChjb25zdCBQYXJzZWRXb3JkICop IGEpLT5wb3MgPT0gKChjb25zdCBQYXJzZWRXb3JkICopIGIpLT5wb3MpCiAJCQlyZXR1cm4g MDsKIAotCQlyZXMgPSAoKChjb25zdCBQYXJzZWRXb3JkICopIGEpLT5wb3MucG9zID4gKChj b25zdCBQYXJzZWRXb3JkICopIGIpLT5wb3MucG9zKSA/IDEgOiAtMTsKKwkJcmVzID0gKCgo Y29uc3QgUGFyc2VkV29yZCAqKSBhKS0+cG9zID4gKChjb25zdCBQYXJzZWRXb3JkICopIGIp LT5wb3MpID8gMSA6IC0xOwogCX0KIAogCXJldHVybiByZXM7CkBAIC04MiwxMSArODIsMTEg QEAgdW5pcXVlV09SRChQYXJzZWRXb3JkICphLCBpbnQzMiBsKQogCiAJaWYgKGwgPT0gMSkK IAl7Ci0JCXRtcHBvcyA9IExJTUlUUE9TKGEtPnBvcy5wb3MpOworCQl0bXBwb3MgPSBMSU1J VFBPUyhhLT5wb3MpOwogCQlhLT5hbGVuID0gMjsKLQkJYS0+cG9zLmFwb3MgPSAodWludDE2 ICopIHBhbGxvYyhzaXplb2YodWludDE2KSAqIGEtPmFsZW4pOwotCQlhLT5wb3MuYXBvc1sw XSA9IDE7Ci0JCWEtPnBvcy5hcG9zWzFdID0gdG1wcG9zOworCQlhLT5hcG9zID0gKHVpbnQx NiAqKSBwYWxsb2Moc2l6ZW9mKHVpbnQxNikgKiBhLT5hbGVuKTsKKwkJYS0+YXBvc1swXSA9 IDE7CisJCWEtPmFwb3NbMV0gPSB0bXBwb3M7CiAJCXJldHVybiBsOwogCX0KIApAQCAtMTAx LDExICsxMDEsMTEgQEAgdW5pcXVlV09SRChQYXJzZWRXb3JkICphLCBpbnQzMiBsKQogCS8q CiAJICogSW5pdGlhbGl6ZSBmaXJzdCB3b3JkIGFuZCBpdHMgZmlyc3QgcG9zaXRpb24KIAkg Ki8KLQl0bXBwb3MgPSBMSU1JVFBPUyhhLT5wb3MucG9zKTsKKwl0bXBwb3MgPSBMSU1JVFBP UyhhLT5wb3MpOwogCWEtPmFsZW4gPSAyOwotCWEtPnBvcy5hcG9zID0gKHVpbnQxNiAqKSBw YWxsb2Moc2l6ZW9mKHVpbnQxNikgKiBhLT5hbGVuKTsKLQlhLT5wb3MuYXBvc1swXSA9IDE7 Ci0JYS0+cG9zLmFwb3NbMV0gPSB0bXBwb3M7CisJYS0+YXBvcyA9ICh1aW50MTYgKikgcGFs bG9jKHNpemVvZih1aW50MTYpICogYS0+YWxlbik7CisJYS0+YXBvc1swXSA9IDE7CisJYS0+ YXBvc1sxXSA9IHRtcHBvczsKIAogCS8qCiAJICogU3VtbWFyaXplIHBvc2l0aW9uIGluZm9y bWF0aW9uIGZvciBlYWNoIHdvcmQKQEAgLTEyMSwxMSArMTIxLDExIEBAIHVuaXF1ZVdPUkQo UGFyc2VkV29yZCAqYSwgaW50MzIgbCkKIAkJCXJlcysrOwogCQkJcmVzLT5sZW4gPSBwdHIt PmxlbjsKIAkJCXJlcy0+d29yZCA9IHB0ci0+d29yZDsKLQkJCXRtcHBvcyA9IExJTUlUUE9T KHB0ci0+cG9zLnBvcyk7CisJCQl0bXBwb3MgPSBMSU1JVFBPUyhwdHItPnBvcyk7CiAJCQly ZXMtPmFsZW4gPSAyOwotCQkJcmVzLT5wb3MuYXBvcyA9ICh1aW50MTYgKikgcGFsbG9jKHNp emVvZih1aW50MTYpICogcmVzLT5hbGVuKTsKLQkJCXJlcy0+cG9zLmFwb3NbMF0gPSAxOwot CQkJcmVzLT5wb3MuYXBvc1sxXSA9IHRtcHBvczsKKwkJCXJlcy0+YXBvcyA9ICh1aW50MTYg KikgcGFsbG9jKHNpemVvZih1aW50MTYpICogcmVzLT5hbGVuKTsKKwkJCXJlcy0+YXBvc1sw XSA9IDE7CisJCQlyZXMtPmFwb3NbMV0gPSB0bXBwb3M7CiAJCX0KIAkJZWxzZQogCQl7CkBA IC0xMzUsMTggKzEzNSwxOCBAQCB1bmlxdWVXT1JEKFBhcnNlZFdvcmQgKmEsIGludDMyIGwp CiAJCQkgKiB2YWx1ZSBmb3IgcG9zaXRpb24gYW5kIHVuaXF1ZW5lc3Mgb2YgcG9zaXRpb24K IAkJCSAqLwogCQkJcGZyZWUocHRyLT53b3JkKTsKLQkJCWlmIChyZXMtPnBvcy5hcG9zWzBd IDwgTUFYTlVNUE9TIC0gMSAmJiByZXMtPnBvcy5hcG9zW3Jlcy0+cG9zLmFwb3NbMF1dICE9 IE1BWEVOVFJZUE9TIC0gMSAmJgotCQkJCXJlcy0+cG9zLmFwb3NbcmVzLT5wb3MuYXBvc1sw XV0gIT0gTElNSVRQT1MocHRyLT5wb3MucG9zKSkKKwkJCWlmIChyZXMtPmFwb3NbMF0gPCBN QVhOVU1QT1MgLSAxICYmIHJlcy0+YXBvc1tyZXMtPmFwb3NbMF1dICE9IE1BWEVOVFJZUE9T IC0gMSAmJgorCQkJCXJlcy0+YXBvc1tyZXMtPmFwb3NbMF1dICE9IExJTUlUUE9TKHB0ci0+ cG9zKSkKIAkJCXsKLQkJCQlpZiAocmVzLT5wb3MuYXBvc1swXSArIDEgPj0gcmVzLT5hbGVu KQorCQkJCWlmIChyZXMtPmFwb3NbMF0gKyAxID49IHJlcy0+YWxlbikKIAkJCQl7CiAJCQkJ CXJlcy0+YWxlbiAqPSAyOwotCQkJCQlyZXMtPnBvcy5hcG9zID0gKHVpbnQxNiAqKSByZXBh bGxvYyhyZXMtPnBvcy5hcG9zLCBzaXplb2YodWludDE2KSAqIHJlcy0+YWxlbik7CisJCQkJ CXJlcy0+YXBvcyA9ICh1aW50MTYgKikgcmVwYWxsb2MocmVzLT5hcG9zLCBzaXplb2YodWlu dDE2KSAqIHJlcy0+YWxlbik7CiAJCQkJfQotCQkJCWlmIChyZXMtPnBvcy5hcG9zWzBdID09 IDAgfHwgcmVzLT5wb3MuYXBvc1tyZXMtPnBvcy5hcG9zWzBdXSAhPSBMSU1JVFBPUyhwdHIt PnBvcy5wb3MpKQorCQkJCWlmIChyZXMtPmFwb3NbMF0gPT0gMCB8fCByZXMtPmFwb3NbcmVz LT5hcG9zWzBdXSAhPSBMSU1JVFBPUyhwdHItPnBvcykpCiAJCQkJewotCQkJCQlyZXMtPnBv cy5hcG9zW3Jlcy0+cG9zLmFwb3NbMF0gKyAxXSA9IExJTUlUUE9TKHB0ci0+cG9zLnBvcyk7 Ci0JCQkJCXJlcy0+cG9zLmFwb3NbMF0rKzsKKwkJCQkJcmVzLT5hcG9zW3Jlcy0+YXBvc1sw XSArIDFdID0gTElNSVRQT1MocHRyLT5wb3MpOworCQkJCQlyZXMtPmFwb3NbMF0rKzsKIAkJ CQl9CiAJCQl9CiAJCX0KQEAgLTE4NCw3ICsxODQsNyBAQCBtYWtlX3RzdmVjdG9yKFBhcnNl ZFRleHQgKnBycykKIAkJaWYgKHBycy0+d29yZHNbaV0uYWxlbikKIAkJewogCQkJbGVuc3Ry ID0gU0hPUlRBTElHTihsZW5zdHIpOwotCQkJbGVuc3RyICs9IHNpemVvZih1aW50MTYpICsg cHJzLT53b3Jkc1tpXS5wb3MuYXBvc1swXSAqIHNpemVvZihXb3JkRW50cnlQb3MpOworCQkJ bGVuc3RyICs9IHNpemVvZih1aW50MTYpICsgcHJzLT53b3Jkc1tpXS5hcG9zWzBdICogc2l6 ZW9mKFdvcmRFbnRyeVBvcyk7CiAJCX0KIAl9CiAKQEAgLTIxMCw3ICsyMTAsNyBAQCBtYWtl X3RzdmVjdG9yKFBhcnNlZFRleHQgKnBycykKIAkJcGZyZWUocHJzLT53b3Jkc1tpXS53b3Jk KTsKIAkJaWYgKHBycy0+d29yZHNbaV0uYWxlbikKIAkJewotCQkJaW50CQkJayA9IHBycy0+ d29yZHNbaV0ucG9zLmFwb3NbMF07CisJCQlpbnQJCQlrID0gcHJzLT53b3Jkc1tpXS5hcG9z WzBdOwogCQkJV29yZEVudHJ5UG9zICp3cHRyOwogCiAJCQlpZiAoayA+IDB4RkZGRikKQEAg LTIyMywxMCArMjIzLDEwIEBAIG1ha2VfdHN2ZWN0b3IoUGFyc2VkVGV4dCAqcHJzKQogCQkJ Zm9yIChqID0gMDsgaiA8IGs7IGorKykKIAkJCXsKIAkJCQlXRVBfU0VUV0VJR0hUKHdwdHJb al0sIDApOwotCQkJCVdFUF9TRVRQT1Mod3B0cltqXSwgcHJzLT53b3Jkc1tpXS5wb3MuYXBv c1tqICsgMV0pOworCQkJCVdFUF9TRVRQT1Mod3B0cltqXSwgcHJzLT53b3Jkc1tpXS5hcG9z W2ogKyAxXSk7CiAJCQl9CiAJCQlzdHJvZmYgKz0gc2l6ZW9mKHVpbnQxNikgKyBrICogc2l6 ZW9mKFdvcmRFbnRyeVBvcyk7Ci0JCQlwZnJlZShwcnMtPndvcmRzW2ldLnBvcy5hcG9zKTsK KwkJCXBmcmVlKHBycy0+d29yZHNbaV0uYXBvcyk7CiAJCX0KIAkJZWxzZQogCQkJcHRyLT5o YXNwb3MgPSAwOwpAQCAtNTE1LDkgKzUxNSw5IEBAIHB1c2h2YWxfbW9ycGgoRGF0dW0gb3Bh cXVlLCBUU1F1ZXJ5UGFyc2VyU3RhdGUgc3RhdGUsIGNoYXIgKnN0cnZhbCwgaW50IGxlbnZh bCwKIAkJCSAqIFdlcmUgYW55IHN0b3Agd29yZHMgcmVtb3ZlZD8gSWYgc28sIGZpbGwgZW1w dHkgcG9zaXRpb25zIHdpdGgKIAkJCSAqIHBsYWNlaG9sZGVycyBsaW5rZWQgYnkgYW4gYXBw cm9wcmlhdGUgb3BlcmF0b3IuCiAJCQkgKi8KLQkJCWlmIChwb3MgPiAwICYmIHBvcyArIDEg PCBwcnMud29yZHNbY291bnRdLnBvcy5wb3MpCisJCQlpZiAocG9zID4gMCAmJiBwb3MgKyAx IDwgcHJzLndvcmRzW2NvdW50XS5wb3MpCiAJCQl7Ci0JCQkJd2hpbGUgKHBvcyArIDEgPCBw cnMud29yZHNbY291bnRdLnBvcy5wb3MpCisJCQkJd2hpbGUgKHBvcyArIDEgPCBwcnMud29y ZHNbY291bnRdLnBvcykKIAkJCQl7CiAJCQkJCS8qIHB1dCBwbGFjZWhvbGRlcnMgZm9yIGVh Y2ggbWlzc2luZyBzdG9wIHdvcmQgKi8KIAkJCQkJcHVzaFN0b3Aoc3RhdGUpOwpAQCAtNTI5 LDE4ICs1MjksMTggQEAgcHVzaHZhbF9tb3JwaChEYXR1bSBvcGFxdWUsIFRTUXVlcnlQYXJz ZXJTdGF0ZSBzdGF0ZSwgY2hhciAqc3RydmFsLCBpbnQgbGVudmFsLAogCQkJfQogCiAJCQkv KiBzYXZlIGN1cnJlbnQgd29yZCdzIHBvc2l0aW9uICovCi0JCQlwb3MgPSBwcnMud29yZHNb Y291bnRdLnBvcy5wb3M7CisJCQlwb3MgPSBwcnMud29yZHNbY291bnRdLnBvczsKIAogCQkJ LyogR28gdGhyb3VnaCBhbGwgdmFyaWFudHMgb2J0YWluZWQgZnJvbSB0aGlzIHRva2VuICov CiAJCQljbnR2YXIgPSAwOwotCQkJd2hpbGUgKGNvdW50IDwgcHJzLmN1cndvcmRzICYmIHBv cyA9PSBwcnMud29yZHNbY291bnRdLnBvcy5wb3MpCisJCQl3aGlsZSAoY291bnQgPCBwcnMu Y3Vyd29yZHMgJiYgcG9zID09IHBycy53b3Jkc1tjb3VudF0ucG9zKQogCQkJewogCQkJCXZh cmlhbnQgPSBwcnMud29yZHNbY291bnRdLm52YXJpYW50OwogCiAJCQkJLyogUHVzaCBhbGwg d29yZHMgYmVsb25naW5nIHRvIHRoZSBzYW1lIHZhcmlhbnQgKi8KIAkJCQljbnQgPSAwOwog CQkJCXdoaWxlIChjb3VudCA8IHBycy5jdXJ3b3JkcyAmJgotCQkJCQkgICBwb3MgPT0gcHJz LndvcmRzW2NvdW50XS5wb3MucG9zICYmCisJCQkJCSAgIHBvcyA9PSBwcnMud29yZHNbY291 bnRdLnBvcyAmJgogCQkJCQkgICB2YXJpYW50ID09IHBycy53b3Jkc1tjb3VudF0ubnZhcmlh bnQpCiAJCQkJewogCQkJCQlwdXNoVmFsdWUoc3RhdGUsCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC90c2VhcmNoL3RzX3BhcnNlLmMgYi9zcmMvYmFja2VuZC90c2VhcmNoL3RzX3BhcnNl LmMKaW5kZXggY2JhNDIxODkyYmYuLmFlZDAwNzY3OWUyIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC90c2VhcmNoL3RzX3BhcnNlLmMKKysrIGIvc3JjL2JhY2tlbmQvdHNlYXJjaC90c19w YXJzZS5jCkBAIC00MjAsNyArNDIwLDcgQEAgcGFyc2V0ZXh0KE9pZCBjZmdJZCwgUGFyc2Vk VGV4dCAqcHJzLCBjaGFyICpidWYsIGludCBidWZsZW4pCiAJCQkJcHJzLT53b3Jkc1twcnMt PmN1cndvcmRzXS5udmFyaWFudCA9IHB0ci0+bnZhcmlhbnQ7CiAJCQkJcHJzLT53b3Jkc1tw cnMtPmN1cndvcmRzXS5mbGFncyA9IHB0ci0+ZmxhZ3MgJiBUU0xfUFJFRklYOwogCQkJCXBy cy0+d29yZHNbcHJzLT5jdXJ3b3Jkc10uYWxlbiA9IDA7Ci0JCQkJcHJzLT53b3Jkc1twcnMt PmN1cndvcmRzXS5wb3MucG9zID0gTElNSVRQT1MocHJzLT5wb3MpOworCQkJCXBycy0+d29y ZHNbcHJzLT5jdXJ3b3Jkc10ucG9zID0gTElNSVRQT1MocHJzLT5wb3MpOwogCQkJCXB0cisr OwogCQkJCXBycy0+Y3Vyd29yZHMrKzsKIAkJCX0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3RzZWFyY2gvdHNfdXRpbHMuaCBiL3NyYy9pbmNsdWRlL3RzZWFyY2gvdHNfdXRpbHMuaApp bmRleCA3ZGViYzg1ZWQ4MC4uOWVjNjY1YmU5OWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3RzZWFyY2gvdHNfdXRpbHMuaAorKysgYi9zcmMvaW5jbHVkZS90c2VhcmNoL3RzX3V0aWxz LmgKQEAgLTk1LDcgKzk1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QKIAkJICogYXJyYXkuICBXZSBk byBub3QgYWxsb3cgbW9yZSB0aGFuIE1BWE5VTVBPUyBhcnJheSBlbGVtZW50cy4KIAkJICov CiAJCXVpbnQxNgkgICAqYXBvczsKLQl9CQkJcG9zOworCX07CiAJY2hhcgkgICAqd29yZDsK IH0gUGFyc2VkV29yZDsKIAotLSAKMi41MS4wCgo= --------------XMilSvfSoQNhBmwudkXUWZaX Content-Type: text/plain; charset=UTF-8; name="0013-C11-anonymous-unions-tsearch-spell.patch" Content-Disposition: attachment; filename="0013-C11-anonymous-unions-tsearch-spell.patch" Content-Transfer-Encoding: base64 RnJvbSAwZjYyOWY0YTJlMTE5MWRkZjk0ZjkzNTEzNjM5MDlkNjNiNjgzNTFkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAyMiBTZXAgMjAyNSAxNDo0Nzo0OCArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMTMvMjNdIEMxMSBhbm9ueW1vdXMgdW5pb25zIFt0c2VhcmNoIHNwZWxsXQoK LS0tCiBzcmMvYmFja2VuZC90c2VhcmNoL3NwZWxsLmMgICAgICAgfCA3MCArKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS90c2VhcmNoL2RpY3RzL3NwZWxs LmggfCAxMCArKy0tLQogMiBmaWxlcyBjaGFuZ2VkLCA0MCBpbnNlcnRpb25zKCspLCA0MCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90c2VhcmNoL3NwZWxsLmMg Yi9zcmMvYmFja2VuZC90c2VhcmNoL3NwZWxsLmMKaW5kZXggMTQ2ODAxODg1ZDcuLmRkYWQx Nzc5NmU0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90c2VhcmNoL3NwZWxsLmMKKysrIGIv c3JjL2JhY2tlbmQvdHNlYXJjaC9zcGVsbC5jCkBAIC0yMDMsOCArMjAzLDggQEAgY21wc3Bl bGwoY29uc3Qgdm9pZCAqczEsIGNvbnN0IHZvaWQgKnMyKQogc3RhdGljIGludAogY21wc3Bl bGxhZmZpeChjb25zdCB2b2lkICpzMSwgY29uc3Qgdm9pZCAqczIpCiB7Ci0JcmV0dXJuIHN0 cmNtcCgoKihTUEVMTCAqY29uc3QgKikgczEpLT5wLmZsYWcsCi0JCQkJICAoKihTUEVMTCAq Y29uc3QgKikgczIpLT5wLmZsYWcpOworCXJldHVybiBzdHJjbXAoKCooU1BFTEwgKmNvbnN0 ICopIHMxKS0+ZmxhZywKKwkJCQkgICgqKFNQRUxMICpjb25zdCAqKSBzMiktPmZsYWcpOwog fQogCiBzdGF0aWMgaW50CkBAIC0yMTcsMTMgKzIxNywxMyBAQCBjbXBjbWRmbGFnKGNvbnN0 IHZvaWQgKmYxLCBjb25zdCB2b2lkICpmMikKIAogCWlmIChmdjEtPmZsYWdNb2RlID09IEZN X05VTSkKIAl7Ci0JCWlmIChmdjEtPmZsYWcuaSA9PSBmdjItPmZsYWcuaSkKKwkJaWYgKGZ2 MS0+ZmxhZ051bSA9PSBmdjItPmZsYWdOdW0pCiAJCQlyZXR1cm4gMDsKIAotCQlyZXR1cm4g KGZ2MS0+ZmxhZy5pID4gZnYyLT5mbGFnLmkpID8gMSA6IC0xOworCQlyZXR1cm4gKGZ2MS0+ ZmxhZ051bSA+IGZ2Mi0+ZmxhZ051bSkgPyAxIDogLTE7CiAJfQogCi0JcmV0dXJuIHN0cmNt cChmdjEtPmZsYWcucywgZnYyLT5mbGFnLnMpOworCXJldHVybiBzdHJjbXAoZnYxLT5mbGFn TmFtZSwgZnYyLT5mbGFnTmFtZSk7CiB9CiAKIHN0YXRpYyBjaGFyICoKQEAgLTUwMiw3ICs1 MDIsNyBAQCBOSUFkZFNwZWxsKElzcGVsbERpY3QgKkNvbmYsIGNvbnN0IGNoYXIgKndvcmQs IGNvbnN0IGNoYXIgKmZsYWcpCiAJfQogCUNvbmYtPlNwZWxsW0NvbmYtPm5zcGVsbF0gPSAo U1BFTEwgKikgdG1wYWxsb2MoU1BFTExIRFJTWiArIHN0cmxlbih3b3JkKSArIDEpOwogCXN0 cmNweShDb25mLT5TcGVsbFtDb25mLT5uc3BlbGxdLT53b3JkLCB3b3JkKTsKLQlDb25mLT5T cGVsbFtDb25mLT5uc3BlbGxdLT5wLmZsYWcgPSAoKmZsYWcgIT0gJ1wwJykKKwlDb25mLT5T cGVsbFtDb25mLT5uc3BlbGxdLT5mbGFnID0gKCpmbGFnICE9ICdcMCcpCiAJCT8gY3BzdHJk dXAoQ29uZiwgZmxhZykgOiBWb2lkU3RyaW5nOwogCUNvbmYtPm5zcGVsbCsrOwogfQpAQCAt NzA4LDcgKzcwOCw3IEBAIE5JQWRkQWZmaXgoSXNwZWxsRGljdCAqQ29uZiwgY29uc3QgY2hh ciAqZmxhZywgY2hhciBmbGFnZmxhZ3MsIGNvbnN0IGNoYXIgKm1hc2ssCiAJewogCQlBZmZp eC0+aXNzaW1wbGUgPSAwOwogCQlBZmZpeC0+aXNyZWdpcyA9IDE7Ci0JCVJTX2NvbXBpbGUo JihBZmZpeC0+cmVnLnJlZ2lzKSwgKHR5cGUgPT0gRkZfU1VGRklYKSwKKwkJUlNfY29tcGls ZSgmKEFmZml4LT5yZWdpcyksICh0eXBlID09IEZGX1NVRkZJWCksCiAJCQkJICAgKm1hc2sg PyBtYXNrIDogVm9pZFN0cmluZyk7CiAJfQogCS8qIFRoaXMgYWZmaXggcnVsZSB3aWxsIHVz ZSByZWdleF90IHRvIHNlYXJjaCB3b3JkIGVuZGluZyAqLwpAQCAtNzM3LDE1ICs3MzcsMTUg QEAgTklBZGRBZmZpeChJc3BlbGxEaWN0ICpDb25mLCBjb25zdCBjaGFyICpmbGFnLCBjaGFy IGZsYWdmbGFncywgY29uc3QgY2hhciAqbWFzaywKIAkJICogYWxsb2NhdGVkIGluIHRoZSBk aWN0aW9uYXJ5J3MgbWVtb3J5IGNvbnRleHQsIGFuZCB3aWxsIGJlIGZyZWVkCiAJCSAqIGF1 dG9tYXRpY2FsbHkgd2hlbiBpdCBpcyBkZXN0cm95ZWQuCiAJCSAqLwotCQlBZmZpeC0+cmVn LnByZWdleCA9IHBhbGxvYyhzaXplb2YocmVnZXhfdCkpOwotCQllcnIgPSBwZ19yZWdjb21w KEFmZml4LT5yZWcucHJlZ2V4LCB3bWFzaywgd21hc2tsZW4sCisJCUFmZml4LT5wcmVnZXgg PSBwYWxsb2Moc2l6ZW9mKHJlZ2V4X3QpKTsKKwkJZXJyID0gcGdfcmVnY29tcChBZmZpeC0+ cHJlZ2V4LCB3bWFzaywgd21hc2tsZW4sCiAJCQkJCQkgUkVHX0FEVkFOQ0VEIHwgUkVHX05P U1VCLAogCQkJCQkJIERFRkFVTFRfQ09MTEFUSU9OX09JRCk7CiAJCWlmIChlcnIpCiAJCXsK IAkJCWNoYXIJCWVycnN0clsxMDBdOwogCi0JCQlwZ19yZWdlcnJvcihlcnIsIEFmZml4LT5y ZWcucHJlZ2V4LCBlcnJzdHIsIHNpemVvZihlcnJzdHIpKTsKKwkJCXBnX3JlZ2Vycm9yKGVy ciwgQWZmaXgtPnByZWdleCwgZXJyc3RyLCBzaXplb2YoZXJyc3RyKSk7CiAJCQllcmVwb3J0 KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUkVHVUxBUl9FWFBSRVNT SU9OKSwKIAkJCQkJIGVycm1zZygiaW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb246ICVzIiwg ZXJyc3RyKSkpOwpAQCAtMTA0OSwxMCArMTA0OSwxMCBAQCBzZXRDb21wb3VuZEFmZml4Rmxh Z1ZhbHVlKElzcGVsbERpY3QgKkNvbmYsIENvbXBvdW5kQWZmaXhGbGFnICplbnRyeSwKIAkJ CQkJKGVycmNvZGUoRVJSQ09ERV9DT05GSUdfRklMRV9FUlJPUiksCiAJCQkJCSBlcnJtc2co ImFmZml4IGZsYWcgXCIlc1wiIGlzIG91dCBvZiByYW5nZSIsIHMpKSk7CiAKLQkJZW50cnkt PmZsYWcuaSA9IGk7CisJCWVudHJ5LT5mbGFnTnVtID0gaTsKIAl9CiAJZWxzZQotCQllbnRy eS0+ZmxhZy5zID0gY3BzdHJkdXAoQ29uZiwgcyk7CisJCWVudHJ5LT5mbGFnTmFtZSA9IGNw c3RyZHVwKENvbmYsIHMpOwogCiAJZW50cnktPmZsYWdNb2RlID0gQ29uZi0+ZmxhZ01vZGU7 CiAJZW50cnktPnZhbHVlID0gdmFsOwpAQCAtMTY1MSw3ICsxNjUxLDcgQEAgbWtTUE5vZGUo SXNwZWxsRGljdCAqQ29uZiwgaW50IGxvdywgaW50IGhpZ2gsIGludCBsZXZlbCkKIAlpbnQJ CQlsb3duZXcgPSBsb3c7CiAKIAlmb3IgKGkgPSBsb3c7IGkgPCBoaWdoOyBpKyspCi0JCWlm IChDb25mLT5TcGVsbFtpXS0+cC5kLmxlbiA+IGxldmVsICYmIGxhc3RjaGFyICE9IENvbmYt PlNwZWxsW2ldLT53b3JkW2xldmVsXSkKKwkJaWYgKENvbmYtPlNwZWxsW2ldLT5kLmxlbiA+ IGxldmVsICYmIGxhc3RjaGFyICE9IENvbmYtPlNwZWxsW2ldLT53b3JkW2xldmVsXSkKIAkJ ewogCQkJbmNoYXIrKzsKIAkJCWxhc3RjaGFyID0gQ29uZi0+U3BlbGxbaV0tPndvcmRbbGV2 ZWxdOwpAQCAtMTY2Niw3ICsxNjY2LDcgQEAgbWtTUE5vZGUoSXNwZWxsRGljdCAqQ29uZiwg aW50IGxvdywgaW50IGhpZ2gsIGludCBsZXZlbCkKIAogCWxhc3RjaGFyID0gJ1wwJzsKIAlm b3IgKGkgPSBsb3c7IGkgPCBoaWdoOyBpKyspCi0JCWlmIChDb25mLT5TcGVsbFtpXS0+cC5k LmxlbiA+IGxldmVsKQorCQlpZiAoQ29uZi0+U3BlbGxbaV0tPmQubGVuID4gbGV2ZWwpCiAJ CXsKIAkJCWlmIChsYXN0Y2hhciAhPSBDb25mLT5TcGVsbFtpXS0+d29yZFtsZXZlbF0pCiAJ CQl7CkBAIC0xNjgwLDExICsxNjgwLDExIEBAIG1rU1BOb2RlKElzcGVsbERpY3QgKkNvbmYs IGludCBsb3csIGludCBoaWdoLCBpbnQgbGV2ZWwpCiAJCQkJbGFzdGNoYXIgPSBDb25mLT5T cGVsbFtpXS0+d29yZFtsZXZlbF07CiAJCQl9CiAJCQlkYXRhLT52YWwgPSAoKHVpbnQ4ICop IChDb25mLT5TcGVsbFtpXS0+d29yZCkpW2xldmVsXTsKLQkJCWlmIChDb25mLT5TcGVsbFtp XS0+cC5kLmxlbiA9PSBsZXZlbCArIDEpCisJCQlpZiAoQ29uZi0+U3BlbGxbaV0tPmQubGVu ID09IGxldmVsICsgMSkKIAkJCXsKIAkJCQlib29sCQljbGVhckNvbXBvdW5kT25seSA9IGZh bHNlOwogCi0JCQkJaWYgKGRhdGEtPmlzd29yZCAmJiBkYXRhLT5hZmZpeCAhPSBDb25mLT5T cGVsbFtpXS0+cC5kLmFmZml4KQorCQkJCWlmIChkYXRhLT5pc3dvcmQgJiYgZGF0YS0+YWZm aXggIT0gQ29uZi0+U3BlbGxbaV0tPmQuYWZmaXgpCiAJCQkJewogCQkJCQkvKgogCQkJCQkg KiBNZXJnZUFmZml4IGNhbGxlZCBhIGZldyB0aW1lcy4gSWYgb25lIG9mIHdvcmQgaXMKQEAg LTE2OTMsMTIgKzE2OTMsMTIgQEAgbWtTUE5vZGUoSXNwZWxsRGljdCAqQ29uZiwgaW50IGxv dywgaW50IGhpZ2gsIGludCBsZXZlbCkKIAkJCQkJICovCiAKIAkJCQkJY2xlYXJDb21wb3Vu ZE9ubHkgPSAoRkZfQ09NUE9VTkRPTkxZICYgZGF0YS0+Y29tcG91bmRmbGFnCi0JCQkJCQkJ CQkJICYgbWFrZUNvbXBvdW5kRmxhZ3MoQ29uZiwgQ29uZi0+U3BlbGxbaV0tPnAuZC5hZmZp eCkpCisJCQkJCQkJCQkJICYgbWFrZUNvbXBvdW5kRmxhZ3MoQ29uZiwgQ29uZi0+U3BlbGxb aV0tPmQuYWZmaXgpKQogCQkJCQkJPyBmYWxzZSA6IHRydWU7Ci0JCQkJCWRhdGEtPmFmZml4 ID0gTWVyZ2VBZmZpeChDb25mLCBkYXRhLT5hZmZpeCwgQ29uZi0+U3BlbGxbaV0tPnAuZC5h ZmZpeCk7CisJCQkJCWRhdGEtPmFmZml4ID0gTWVyZ2VBZmZpeChDb25mLCBkYXRhLT5hZmZp eCwgQ29uZi0+U3BlbGxbaV0tPmQuYWZmaXgpOwogCQkJCX0KIAkJCQllbHNlCi0JCQkJCWRh dGEtPmFmZml4ID0gQ29uZi0+U3BlbGxbaV0tPnAuZC5hZmZpeDsKKwkJCQkJZGF0YS0+YWZm aXggPSBDb25mLT5TcGVsbFtpXS0+ZC5hZmZpeDsKIAkJCQlkYXRhLT5pc3dvcmQgPSAxOwog CiAJCQkJZGF0YS0+Y29tcG91bmRmbGFnID0gbWFrZUNvbXBvdW5kRmxhZ3MoQ29uZiwgZGF0 YS0+YWZmaXgpOwpAQCAtMTc0MSwzNyArMTc0MSwzNyBAQCBOSVNvcnREaWN0aW9uYXJ5KElz cGVsbERpY3QgKkNvbmYpCiAJCXsKIAkJCWNoYXIJICAgKmVuZDsKIAotCQkJaWYgKCpDb25m LT5TcGVsbFtpXS0+cC5mbGFnICE9ICdcMCcpCisJCQlpZiAoKkNvbmYtPlNwZWxsW2ldLT5m bGFnICE9ICdcMCcpCiAJCQl7CiAJCQkJZXJybm8gPSAwOwotCQkJCWN1cmFmZml4ID0gc3Ry dG9sKENvbmYtPlNwZWxsW2ldLT5wLmZsYWcsICZlbmQsIDEwKTsKLQkJCQlpZiAoQ29uZi0+ U3BlbGxbaV0tPnAuZmxhZyA9PSBlbmQgfHwgZXJybm8gPT0gRVJBTkdFKQorCQkJCWN1cmFm Zml4ID0gc3RydG9sKENvbmYtPlNwZWxsW2ldLT5mbGFnLCAmZW5kLCAxMCk7CisJCQkJaWYg KENvbmYtPlNwZWxsW2ldLT5mbGFnID09IGVuZCB8fCBlcnJubyA9PSBFUkFOR0UpCiAJCQkJ CWVyZXBvcnQoRVJST1IsCiAJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9DT05GSUdfRklMRV9F UlJPUiksCiAJCQkJCQkJIGVycm1zZygiaW52YWxpZCBhZmZpeCBhbGlhcyBcIiVzXCIiLAot CQkJCQkJCQkJQ29uZi0+U3BlbGxbaV0tPnAuZmxhZykpKTsKKwkJCQkJCQkJCUNvbmYtPlNw ZWxsW2ldLT5mbGFnKSkpOwogCQkJCWlmIChjdXJhZmZpeCA8IDAgfHwgY3VyYWZmaXggPj0g Q29uZi0+bkFmZml4RGF0YSkKIAkJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCQkoZXJyY29k ZShFUlJDT0RFX0NPTkZJR19GSUxFX0VSUk9SKSwKIAkJCQkJCQkgZXJybXNnKCJpbnZhbGlk IGFmZml4IGFsaWFzIFwiJXNcIiIsCi0JCQkJCQkJCQlDb25mLT5TcGVsbFtpXS0+cC5mbGFn KSkpOworCQkJCQkJCQkJQ29uZi0+U3BlbGxbaV0tPmZsYWcpKSk7CiAJCQkJaWYgKCplbmQg IT0gJ1wwJyAmJiAhaXNkaWdpdCgodW5zaWduZWQgY2hhcikgKmVuZCkgJiYgIWlzc3BhY2Uo KHVuc2lnbmVkIGNoYXIpICplbmQpKQogCQkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJCShl cnJjb2RlKEVSUkNPREVfQ09ORklHX0ZJTEVfRVJST1IpLAogCQkJCQkJCSBlcnJtc2coImlu dmFsaWQgYWZmaXggYWxpYXMgXCIlc1wiIiwKLQkJCQkJCQkJCUNvbmYtPlNwZWxsW2ldLT5w LmZsYWcpKSk7CisJCQkJCQkJCQlDb25mLT5TcGVsbFtpXS0+ZmxhZykpKTsKIAkJCX0KIAkJ CWVsc2UKIAkJCXsKIAkJCQkvKgotCQkJCSAqIElmIENvbmYtPlNwZWxsW2ldLT5wLmZsYWcg aXMgZW1wdHksIHRoZW4gZ2V0IGVtcHR5IHZhbHVlIG9mCisJCQkJICogSWYgQ29uZi0+U3Bl bGxbaV0tPmZsYWcgaXMgZW1wdHksIHRoZW4gZ2V0IGVtcHR5IHZhbHVlIG9mCiAJCQkJICog Q29uZi0+QWZmaXhEYXRhICgwIGluZGV4KS4KIAkJCQkgKi8KIAkJCQljdXJhZmZpeCA9IDA7 CiAJCQl9CiAKLQkJCUNvbmYtPlNwZWxsW2ldLT5wLmQuYWZmaXggPSBjdXJhZmZpeDsKLQkJ CUNvbmYtPlNwZWxsW2ldLT5wLmQubGVuID0gc3RybGVuKENvbmYtPlNwZWxsW2ldLT53b3Jk KTsKKwkJCUNvbmYtPlNwZWxsW2ldLT5kLmFmZml4ID0gY3VyYWZmaXg7CisJCQlDb25mLT5T cGVsbFtpXS0+ZC5sZW4gPSBzdHJsZW4oQ29uZi0+U3BlbGxbaV0tPndvcmQpOwogCQl9CiAJ fQogCS8qIE90aGVyd2lzZSBmaWxsIENvbmYtPkFmZml4RGF0YSBoZXJlICovCkBAIC0xNzg1 LDcgKzE3ODUsNyBAQCBOSVNvcnREaWN0aW9uYXJ5KElzcGVsbERpY3QgKkNvbmYpCiAJCWZv ciAoaSA9IDA7IGkgPCBDb25mLT5uc3BlbGw7IGkrKykKIAkJewogCQkJaWYgKGkgPT0gMCB8 fAotCQkJCXN0cmNtcChDb25mLT5TcGVsbFtpXS0+cC5mbGFnLCBDb25mLT5TcGVsbFtpIC0g MV0tPnAuZmxhZykgIT0gMCkKKwkJCQlzdHJjbXAoQ29uZi0+U3BlbGxbaV0tPmZsYWcsIENv bmYtPlNwZWxsW2kgLSAxXS0+ZmxhZykgIT0gMCkKIAkJCQluYWZmaXgrKzsKIAkJfQogCkBA IC0xODAwLDE2ICsxODAwLDE2IEBAIE5JU29ydERpY3Rpb25hcnkoSXNwZWxsRGljdCAqQ29u ZikKIAkJZm9yIChpID0gMDsgaSA8IENvbmYtPm5zcGVsbDsgaSsrKQogCQl7CiAJCQlpZiAo aSA9PSAwIHx8Ci0JCQkJc3RyY21wKENvbmYtPlNwZWxsW2ldLT5wLmZsYWcsIENvbmYtPkFm Zml4RGF0YVtjdXJhZmZpeF0pICE9IDApCisJCQkJc3RyY21wKENvbmYtPlNwZWxsW2ldLT5m bGFnLCBDb25mLT5BZmZpeERhdGFbY3VyYWZmaXhdKSAhPSAwKQogCQkJewogCQkJCWN1cmFm Zml4Kys7CiAJCQkJQXNzZXJ0KGN1cmFmZml4IDwgbmFmZml4KTsKIAkJCQlDb25mLT5BZmZp eERhdGFbY3VyYWZmaXhdID0gY3BzdHJkdXAoQ29uZiwKLQkJCQkJCQkJCQkJCQkgQ29uZi0+ U3BlbGxbaV0tPnAuZmxhZyk7CisJCQkJCQkJCQkJCQkJIENvbmYtPlNwZWxsW2ldLT5mbGFn KTsKIAkJCX0KIAotCQkJQ29uZi0+U3BlbGxbaV0tPnAuZC5hZmZpeCA9IGN1cmFmZml4Owot CQkJQ29uZi0+U3BlbGxbaV0tPnAuZC5sZW4gPSBzdHJsZW4oQ29uZi0+U3BlbGxbaV0tPndv cmQpOworCQkJQ29uZi0+U3BlbGxbaV0tPmQuYWZmaXggPSBjdXJhZmZpeDsKKwkJCUNvbmYt PlNwZWxsW2ldLT5kLmxlbiA9IHN0cmxlbihDb25mLT5TcGVsbFtpXS0+d29yZCk7CiAJCX0K IAogCQlDb25mLT5sZW5BZmZpeERhdGEgPSBDb25mLT5uQWZmaXhEYXRhID0gbmFmZml4OwpA QCAtMjEzNiw3ICsyMTM2LDcgQEAgQ2hlY2tBZmZpeChjb25zdCBjaGFyICp3b3JkLCBzaXpl X3QgbGVuLCBBRkZJWCAqQWZmaXgsIGludCBmbGFnZmxhZ3MsIGNoYXIgKm5ld3cKIAkJcmV0 dXJuIG5ld3dvcmQ7CiAJZWxzZSBpZiAoQWZmaXgtPmlzcmVnaXMpCiAJewotCQlpZiAoUlNf ZXhlY3V0ZSgmKEFmZml4LT5yZWcucmVnaXMpLCBuZXd3b3JkKSkKKwkJaWYgKFJTX2V4ZWN1 dGUoJihBZmZpeC0+cmVnaXMpLCBuZXd3b3JkKSkKIAkJCXJldHVybiBuZXd3b3JkOwogCX0K IAllbHNlCkBAIC0yMTUwLDcgKzIxNTAsNyBAQCBDaGVja0FmZml4KGNvbnN0IGNoYXIgKndv cmQsIHNpemVfdCBsZW4sIEFGRklYICpBZmZpeCwgaW50IGZsYWdmbGFncywgY2hhciAqbmV3 dwogCQlkYXRhID0gKHBnX3djaGFyICopIHBhbGxvYygobmV3d29yZF9sZW4gKyAxKSAqIHNp emVvZihwZ193Y2hhcikpOwogCQlkYXRhX2xlbiA9IHBnX21iMndjaGFyX3dpdGhfbGVuKG5l d3dvcmQsIGRhdGEsIG5ld3dvcmRfbGVuKTsKIAotCQlpZiAocGdfcmVnZXhlYyhBZmZpeC0+ cmVnLnByZWdleCwgZGF0YSwgZGF0YV9sZW4sCisJCWlmIChwZ19yZWdleGVjKEFmZml4LT5w cmVnZXgsIGRhdGEsIGRhdGFfbGVuLAogCQkJCQkgICAwLCBOVUxMLCAwLCBOVUxMLCAwKSA9 PSBSRUdfT0tBWSkKIAkJewogCQkJcGZyZWUoZGF0YSk7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS90c2VhcmNoL2RpY3RzL3NwZWxsLmggYi9zcmMvaW5jbHVkZS90c2VhcmNoL2RpY3Rz L3NwZWxsLmgKaW5kZXggOTE5YjdkZjYzNzAuLjdjZTcwODZlNmRmIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS90c2VhcmNoL2RpY3RzL3NwZWxsLmgKKysrIGIvc3JjL2luY2x1ZGUvdHNl YXJjaC9kaWN0cy9zcGVsbC5oCkBAIC03NSw3ICs3NSw3IEBAIHR5cGVkZWYgc3RydWN0IHNw ZWxsX3N0cnVjdAogCQkJLyogTGVuZ3RoIG9mIHRoZSB3b3JkICovCiAJCQlpbnQJCQlsZW47 CiAJCX0JCQlkOwotCX0JCQlwOworCX07CiAJY2hhcgkJd29yZFtGTEVYSUJMRV9BUlJBWV9N RU1CRVJdOwogfSBTUEVMTDsKIApAQCAtMTA0LDcgKzEwNCw3IEBAIHR5cGVkZWYgc3RydWN0 IGFmZl9zdHJ1Y3QKIAkJICovCiAJCXJlZ2V4X3QgICAgKnByZWdleDsKIAkJUmVnaXMJCXJl Z2lzOwotCX0JCQlyZWc7CisJfTsKIH0gQUZGSVg7CiAKIC8qCkBAIC0xNzAsMTAgKzE3MCwx MCBAQCB0eXBlZGVmIHN0cnVjdCBDb21wb3VuZEFmZml4RmxhZwogCXVuaW9uCiAJewogCQkv KiBGbGFnIG5hbWUgaWYgZmxhZ01vZGUgaXMgRk1fQ0hBUiBvciBGTV9MT05HICovCi0JCWNv bnN0IGNoYXIgKnM7CisJCWNvbnN0IGNoYXIgKmZsYWdOYW1lOwogCQkvKiBGbGFnIG5hbWUg aWYgZmxhZ01vZGUgaXMgRk1fTlVNICovCi0JCXVpbnQzMgkJaTsKLQl9CQkJZmxhZzsKKwkJ dWludDMyCQlmbGFnTnVtOworCX07CiAJLyogd2UgZG9uJ3QgaGF2ZSBhIGJzZWFyY2hfYXJn IHZlcnNpb24sIHNvLCBjb3B5IEZsYWdNb2RlICovCiAJRmxhZ01vZGUJZmxhZ01vZGU7CiAJ dWludDMyCQl2YWx1ZTsKLS0gCjIuNTEuMAoK --------------XMilSvfSoQNhBmwudkXUWZaX Content-Type: text/plain; charset=UTF-8; name="0014-C11-anonymous-unions-predicate.patch" Content-Disposition: attachment; filename="0014-C11-anonymous-unions-predicate.patch" Content-Transfer-Encoding: base64 RnJvbSAxNTEwYTMzOGVkMGE3NjQ4ZDM4OGJlYzRhMmU5YWJjYjc1YmNlYzQ1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAyMiBTZXAgMjAyNSAxNDo0Nzo0OCArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMTQvMjNdIEMxMSBhbm9ueW1vdXMgdW5pb25zIFtwcmVkaWNhdGVdCgotLS0K IHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYyAgICAgIHwgOCArKysrLS0t LQogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcmVkaWNhdGVfaW50ZXJuYWxzLmggfCAyICstCiAy IGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMKaW5kZXggYzFkODUxMWFkMTcuLjczMjA2 MWQxMjgxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRl LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCkBAIC00Nzk2 LDggKzQ3OTYsOCBAQCBBdFByZXBhcmVfUHJlZGljYXRlTG9ja3Modm9pZCkKIAlkbGlzdF9p dGVyCWl0ZXI7CiAKIAlzeGFjdCA9IE15U2VyaWFsaXphYmxlWGFjdDsKLQl4YWN0UmVjb3Jk ID0gJihyZWNvcmQuZGF0YS54YWN0UmVjb3JkKTsKLQlsb2NrUmVjb3JkID0gJihyZWNvcmQu ZGF0YS5sb2NrUmVjb3JkKTsKKwl4YWN0UmVjb3JkID0gJihyZWNvcmQueGFjdFJlY29yZCk7 CisJbG9ja1JlY29yZCA9ICYocmVjb3JkLmxvY2tSZWNvcmQpOwogCiAJaWYgKE15U2VyaWFs aXphYmxlWGFjdCA9PSBJbnZhbGlkU2VyaWFsaXphYmxlWGFjdCkKIAkJcmV0dXJuOwpAQCAt NDkyOCw3ICs0OTI4LDcgQEAgcHJlZGljYXRlbG9ja190d29waGFzZV9yZWNvdmVyKEZ1bGxU cmFuc2FjdGlvbklkIGZ4aWQsIHVpbnQxNiBpbmZvLAogCQlTRVJJQUxJWkFCTEVYSURUQUcg c3hpZHRhZzsKIAkJYm9vbAkJZm91bmQ7CiAKLQkJeGFjdFJlY29yZCA9IChUd29QaGFzZVBy ZWRpY2F0ZVhhY3RSZWNvcmQgKikgJnJlY29yZC0+ZGF0YS54YWN0UmVjb3JkOworCQl4YWN0 UmVjb3JkID0gKFR3b1BoYXNlUHJlZGljYXRlWGFjdFJlY29yZCAqKSAmcmVjb3JkLT54YWN0 UmVjb3JkOwogCiAJCUxXTG9ja0FjcXVpcmUoU2VyaWFsaXphYmxlWGFjdEhhc2hMb2NrLCBM V19FWENMVVNJVkUpOwogCQlzeGFjdCA9IENyZWF0ZVByZWRYYWN0KCk7CkBAIC01MDIxLDcg KzUwMjEsNyBAQCBwcmVkaWNhdGVsb2NrX3R3b3BoYXNlX3JlY292ZXIoRnVsbFRyYW5zYWN0 aW9uSWQgZnhpZCwgdWludDE2IGluZm8sCiAJCVNFUklBTElaQUJMRVhJRFRBRyBzeGlkdGFn OwogCQl1aW50MzIJCXRhcmdldHRhZ2hhc2g7CiAKLQkJbG9ja1JlY29yZCA9IChUd29QaGFz ZVByZWRpY2F0ZUxvY2tSZWNvcmQgKikgJnJlY29yZC0+ZGF0YS5sb2NrUmVjb3JkOworCQls b2NrUmVjb3JkID0gKFR3b1BoYXNlUHJlZGljYXRlTG9ja1JlY29yZCAqKSAmcmVjb3JkLT5s b2NrUmVjb3JkOwogCQl0YXJnZXR0YWdoYXNoID0gUHJlZGljYXRlTG9ja1RhcmdldFRhZ0hh c2hDb2RlKCZsb2NrUmVjb3JkLT50YXJnZXQpOwogCiAJCUxXTG9ja0FjcXVpcmUoU2VyaWFs aXphYmxlWGFjdEhhc2hMb2NrLCBMV19TSEFSRUQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvc3RvcmFnZS9wcmVkaWNhdGVfaW50ZXJuYWxzLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdl L3ByZWRpY2F0ZV9pbnRlcm5hbHMuaAppbmRleCA1YzNlYTM3ZjI1MC4uY2Q3NWNiZmY0NDEg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJlZGljYXRlX2ludGVybmFscy5o CisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJlZGljYXRlX2ludGVybmFscy5oCkBAIC00 NTgsNyArNDU4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgVHdvUGhhc2VQcmVkaWNhdGVSZWNvcmQK IAl7CiAJCVR3b1BoYXNlUHJlZGljYXRlWGFjdFJlY29yZCB4YWN0UmVjb3JkOwogCQlUd29Q aGFzZVByZWRpY2F0ZUxvY2tSZWNvcmQgbG9ja1JlY29yZDsKLQl9CQkJZGF0YTsKKwl9Owog fSBUd29QaGFzZVByZWRpY2F0ZVJlY29yZDsKIAogLyoKLS0gCjIuNTEuMAoK --------------XMilSvfSoQNhBmwudkXUWZaX Content-Type: text/plain; charset=UTF-8; name="0015-C11-anonymous-unions-cryptohash.patch" Content-Disposition: attachment; filename="0015-C11-anonymous-unions-cryptohash.patch" Content-Transfer-Encoding: base64 RnJvbSAxOGY0NDUyZTk4ZDJkNmYyNDY3ZDRkYTc1OWQxMTNhMjE1MjZlZGYzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAyMiBTZXAgMjAyNSAxNDo0Nzo0OCArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMTUvMjNdIEMxMSBhbm9ueW1vdXMgdW5pb25zIFtjcnlwdG9oYXNoXQoKLS0t CiBzcmMvY29tbW9uL2NyeXB0b2hhc2guYyB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGlu c2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vY3J5 cHRvaGFzaC5jIGIvc3JjL2NvbW1vbi9jcnlwdG9oYXNoLmMKaW5kZXggNTMzZTRhYWVhMzYu LjIzOTBkM2FkM2RhIDEwMDY0NAotLS0gYS9zcmMvY29tbW9uL2NyeXB0b2hhc2guYworKysg Yi9zcmMvY29tbW9uL2NyeXB0b2hhc2guYwpAQCAtNjEsNyArNjEsNyBAQCBzdHJ1Y3QgcGdf Y3J5cHRvaGFzaF9jdHgKIAkJcGdfc2hhMjU2X2N0eCBzaGEyNTY7CiAJCXBnX3NoYTM4NF9j dHggc2hhMzg0OwogCQlwZ19zaGE1MTJfY3R4IHNoYTUxMjsKLQl9CQkJZGF0YTsKKwl9Owog fTsKIAogLyoKLS0gCjIuNTEuMAoK --------------XMilSvfSoQNhBmwudkXUWZaX Content-Type: text/plain; charset=UTF-8; name="0016-C11-anonymous-unions-freepage.patch" Content-Disposition: attachment; filename="0016-C11-anonymous-unions-freepage.patch" Content-Transfer-Encoding: base64 RnJvbSBhMDI3YmVlZjg1MzIxM2ViYmJlNTM0NGM3YmQ1YmM3OTFhYjY3OGFjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAyMiBTZXAgMjAyNSAxNDo0Nzo0OCArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMTYvMjNdIEMxMSBhbm9ueW1vdXMgdW5pb25zIFtmcmVlcGFnZV0KCi0tLQog c3JjL2JhY2tlbmQvdXRpbHMvbW1nci9mcmVlcGFnZS5jIHwgMTQ0ICsrKysrKysrKysrKysr Ky0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDcyIGluc2VydGlvbnMoKyksIDcy IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvZnJl ZXBhZ2UuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvZnJlZXBhZ2UuYwppbmRleCA1MmZh NzhkYzU4Ni4uYTExMjgwN2NiZGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21t Z3IvZnJlZXBhZ2UuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL2ZyZWVwYWdlLmMK QEAgLTExMiw3ICsxMTIsNyBAQCBzdHJ1Y3QgRnJlZVBhZ2VCdHJlZQogCXsKIAkJRnJlZVBh Z2VCdHJlZUludGVybmFsS2V5IGludGVybmFsX2tleVtGUE1fSVRFTVNfUEVSX0lOVEVSTkFM X1BBR0VdOwogCQlGcmVlUGFnZUJ0cmVlTGVhZktleSBsZWFmX2tleVtGUE1fSVRFTVNfUEVS X0xFQUZfUEFHRV07Ci0JfQkJCXU7CisJfTsKIH07CiAKIC8qIFJlc3VsdHMgb2YgYSBidHJl ZSBzZWFyY2ggKi8KQEAgLTI2NSw3ICsyNjUsNyBAQCBzdW1fZnJlZV9wYWdlc19yZWN1cnNl KEZyZWVQYWdlTWFuYWdlciAqZnBtLCBGcmVlUGFnZUJ0cmVlICpidHAsIFNpemUgKnN1bSkK IAkJewogCQkJRnJlZVBhZ2VCdHJlZSAqY2hpbGQ7CiAKLQkJCWNoaWxkID0gcmVscHRyX2Fj Y2VzcyhiYXNlLCBidHAtPnUuaW50ZXJuYWxfa2V5W2luZGV4XS5jaGlsZCk7CisJCQljaGls ZCA9IHJlbHB0cl9hY2Nlc3MoYmFzZSwgYnRwLT5pbnRlcm5hbF9rZXlbaW5kZXhdLmNoaWxk KTsKIAkJCXN1bV9mcmVlX3BhZ2VzX3JlY3Vyc2UoZnBtLCBjaGlsZCwgc3VtKTsKIAkJfQog CX0KQEAgLTUxMCwxMyArNTEwLDEzIEBAIEZyZWVQYWdlQnRyZWVBZGp1c3RBbmNlc3Rvcktl eXMoRnJlZVBhZ2VNYW5hZ2VyICpmcG0sIEZyZWVQYWdlQnRyZWUgKmJ0cCkKIAlpZiAoYnRw LT5oZHIubWFnaWMgPT0gRlJFRV9QQUdFX0xFQUZfTUFHSUMpCiAJewogCQlBc3NlcnQoYnRw LT5oZHIubnVzZWQgPD0gRlBNX0lURU1TX1BFUl9MRUFGX1BBR0UpOwotCQlmaXJzdF9wYWdl ID0gYnRwLT51LmxlYWZfa2V5WzBdLmZpcnN0X3BhZ2U7CisJCWZpcnN0X3BhZ2UgPSBidHAt PmxlYWZfa2V5WzBdLmZpcnN0X3BhZ2U7CiAJfQogCWVsc2UKIAl7CiAJCUFzc2VydChidHAt Pmhkci5tYWdpYyA9PSBGUkVFX1BBR0VfSU5URVJOQUxfTUFHSUMpOwogCQlBc3NlcnQoYnRw LT5oZHIubnVzZWQgPD0gRlBNX0lURU1TX1BFUl9JTlRFUk5BTF9QQUdFKTsKLQkJZmlyc3Rf cGFnZSA9IGJ0cC0+dS5pbnRlcm5hbF9rZXlbMF0uZmlyc3RfcGFnZTsKKwkJZmlyc3RfcGFn ZSA9IGJ0cC0+aW50ZXJuYWxfa2V5WzBdLmZpcnN0X3BhZ2U7CiAJfQogCWNoaWxkID0gYnRw OwogCkBAIC01NDAsNyArNTQwLDcgQEAgRnJlZVBhZ2VCdHJlZUFkanVzdEFuY2VzdG9yS2V5 cyhGcmVlUGFnZU1hbmFnZXIgKmZwbSwgRnJlZVBhZ2VCdHJlZSAqYnRwKQogCQl7CiAJCQlG cmVlUGFnZUJ0cmVlICpjaGVjazsKIAotCQkJY2hlY2sgPSByZWxwdHJfYWNjZXNzKGJhc2Us IHBhcmVudC0+dS5pbnRlcm5hbF9rZXlbc10uY2hpbGQpOworCQkJY2hlY2sgPSByZWxwdHJf YWNjZXNzKGJhc2UsIHBhcmVudC0+aW50ZXJuYWxfa2V5W3NdLmNoaWxkKTsKIAkJCWlmIChj aGVjayAhPSBjaGlsZCkKIAkJCXsKIAkJCQlBc3NlcnQocyA+IDApOwpAQCAtNTUzLDE0ICs1 NTMsMTQgQEAgRnJlZVBhZ2VCdHJlZUFkanVzdEFuY2VzdG9yS2V5cyhGcmVlUGFnZU1hbmFn ZXIgKmZwbSwgRnJlZVBhZ2VCdHJlZSAqYnRwKQogCQl7CiAJCQlGcmVlUGFnZUJ0cmVlICpj aGVjazsKIAotCQkJY2hlY2sgPSByZWxwdHJfYWNjZXNzKGJhc2UsIHBhcmVudC0+dS5pbnRl cm5hbF9rZXlbc10uY2hpbGQpOworCQkJY2hlY2sgPSByZWxwdHJfYWNjZXNzKGJhc2UsIHBh cmVudC0+aW50ZXJuYWxfa2V5W3NdLmNoaWxkKTsKIAkJCUFzc2VydChzIDwgcGFyZW50LT5o ZHIubnVzZWQpOwogCQkJQXNzZXJ0KGNoaWxkID09IGNoZWNrKTsKIAkJfQogI2VuZGlmCiAK IAkJLyogVXBkYXRlIHRoZSBwYXJlbnQga2V5LiAqLwotCQlwYXJlbnQtPnUuaW50ZXJuYWxf a2V5W3NdLmZpcnN0X3BhZ2UgPSBmaXJzdF9wYWdlOworCQlwYXJlbnQtPmludGVybmFsX2tl eVtzXS5maXJzdF9wYWdlID0gZmlyc3RfcGFnZTsKIAogCQkvKgogCQkgKiBJZiB0aGlzIGlz IHRoZSBmaXJzdCBrZXkgaW4gdGhlIHBhcmVudCwgZ28gdXAgYW5vdGhlciBsZXZlbDsgZWxz ZQpAQCAtNTk3LDggKzU5Nyw4IEBAIEZyZWVQYWdlQnRyZWVDbGVhbnVwKEZyZWVQYWdlTWFu YWdlciAqZnBtKQogCQkJewogCQkJCS8qIElmIHJvb3QgaXMgYSBsZWFmLCBjb252ZXJ0IG9u bHkgZW50cnkgdG8gc2luZ2xldG9uIHJhbmdlLiAqLwogCQkJCXJlbHB0cl9zdG9yZShiYXNl LCBmcG0tPmJ0cmVlX3Jvb3QsIChGcmVlUGFnZUJ0cmVlICopIE5VTEwpOwotCQkJCWZwbS0+ c2luZ2xldG9uX2ZpcnN0X3BhZ2UgPSByb290LT51LmxlYWZfa2V5WzBdLmZpcnN0X3BhZ2U7 Ci0JCQkJZnBtLT5zaW5nbGV0b25fbnBhZ2VzID0gcm9vdC0+dS5sZWFmX2tleVswXS5ucGFn ZXM7CisJCQkJZnBtLT5zaW5nbGV0b25fZmlyc3RfcGFnZSA9IHJvb3QtPmxlYWZfa2V5WzBd LmZpcnN0X3BhZ2U7CisJCQkJZnBtLT5zaW5nbGV0b25fbnBhZ2VzID0gcm9vdC0+bGVhZl9r ZXlbMF0ubnBhZ2VzOwogCQkJfQogCQkJZWxzZQogCQkJewpAQCAtNjA2LDcgKzYwNiw3IEBA IEZyZWVQYWdlQnRyZWVDbGVhbnVwKEZyZWVQYWdlTWFuYWdlciAqZnBtKQogCiAJCQkJLyog SWYgcm9vdCBpcyBhbiBpbnRlcm5hbCBwYWdlLCBtYWtlIG9ubHkgY2hpbGQgdGhlIHJvb3Qu ICovCiAJCQkJQXNzZXJ0KHJvb3QtPmhkci5tYWdpYyA9PSBGUkVFX1BBR0VfSU5URVJOQUxf TUFHSUMpOwotCQkJCXJlbHB0cl9jb3B5KGZwbS0+YnRyZWVfcm9vdCwgcm9vdC0+dS5pbnRl cm5hbF9rZXlbMF0uY2hpbGQpOworCQkJCXJlbHB0cl9jb3B5KGZwbS0+YnRyZWVfcm9vdCwg cm9vdC0+aW50ZXJuYWxfa2V5WzBdLmNoaWxkKTsKIAkJCQluZXdyb290ID0gcmVscHRyX2Fj Y2VzcyhiYXNlLCBmcG0tPmJ0cmVlX3Jvb3QpOwogCQkJCXJlbHB0cl9zdG9yZShiYXNlLCBu ZXdyb290LT5oZHIucGFyZW50LCAoRnJlZVBhZ2VCdHJlZSAqKSBOVUxMKTsKIAkJCX0KQEAg LTYxOCw5ICs2MTgsOSBAQCBGcmVlUGFnZUJ0cmVlQ2xlYW51cChGcmVlUGFnZU1hbmFnZXIg KmZwbSkKIAkJCVNpemUJCWVuZF9vZl9maXJzdDsKIAkJCVNpemUJCXN0YXJ0X29mX3NlY29u ZDsKIAotCQkJZW5kX29mX2ZpcnN0ID0gcm9vdC0+dS5sZWFmX2tleVswXS5maXJzdF9wYWdl ICsKLQkJCQlyb290LT51LmxlYWZfa2V5WzBdLm5wYWdlczsKLQkJCXN0YXJ0X29mX3NlY29u ZCA9IHJvb3QtPnUubGVhZl9rZXlbMV0uZmlyc3RfcGFnZTsKKwkJCWVuZF9vZl9maXJzdCA9 IHJvb3QtPmxlYWZfa2V5WzBdLmZpcnN0X3BhZ2UgKworCQkJCXJvb3QtPmxlYWZfa2V5WzBd Lm5wYWdlczsKKwkJCXN0YXJ0X29mX3NlY29uZCA9IHJvb3QtPmxlYWZfa2V5WzFdLmZpcnN0 X3BhZ2U7CiAKIAkJCWlmIChlbmRfb2ZfZmlyc3QgKyAxID09IHN0YXJ0X29mX3NlY29uZCkK IAkJCXsKQEAgLTYyOCwxMSArNjI4LDExIEBAIEZyZWVQYWdlQnRyZWVDbGVhbnVwKEZyZWVQ YWdlTWFuYWdlciAqZnBtKQogCiAJCQkJaWYgKGVuZF9vZl9maXJzdCA9PSByb290X3BhZ2Up CiAJCQkJewotCQkJCQlGcmVlUGFnZVBvcFNwYW5MZWFkZXIoZnBtLCByb290LT51LmxlYWZf a2V5WzBdLmZpcnN0X3BhZ2UpOwotCQkJCQlGcmVlUGFnZVBvcFNwYW5MZWFkZXIoZnBtLCBy b290LT51LmxlYWZfa2V5WzFdLmZpcnN0X3BhZ2UpOwotCQkJCQlmcG0tPnNpbmdsZXRvbl9m aXJzdF9wYWdlID0gcm9vdC0+dS5sZWFmX2tleVswXS5maXJzdF9wYWdlOwotCQkJCQlmcG0t PnNpbmdsZXRvbl9ucGFnZXMgPSByb290LT51LmxlYWZfa2V5WzBdLm5wYWdlcyArCi0JCQkJ CQlyb290LT51LmxlYWZfa2V5WzFdLm5wYWdlcyArIDE7CisJCQkJCUZyZWVQYWdlUG9wU3Bh bkxlYWRlcihmcG0sIHJvb3QtPmxlYWZfa2V5WzBdLmZpcnN0X3BhZ2UpOworCQkJCQlGcmVl UGFnZVBvcFNwYW5MZWFkZXIoZnBtLCByb290LT5sZWFmX2tleVsxXS5maXJzdF9wYWdlKTsK KwkJCQkJZnBtLT5zaW5nbGV0b25fZmlyc3RfcGFnZSA9IHJvb3QtPmxlYWZfa2V5WzBdLmZp cnN0X3BhZ2U7CisJCQkJCWZwbS0+c2luZ2xldG9uX25wYWdlcyA9IHJvb3QtPmxlYWZfa2V5 WzBdLm5wYWdlcyArCisJCQkJCQlyb290LT5sZWFmX2tleVsxXS5ucGFnZXMgKyAxOwogCQkJ CQlmcG0tPmJ0cmVlX2RlcHRoID0gMDsKIAkJCQkJcmVscHRyX3N0b3JlKGJhc2UsIGZwbS0+ YnRyZWVfcm9vdCwKIAkJCQkJCQkJIChGcmVlUGFnZUJ0cmVlICopIE5VTEwpOwpAQCAtNzI1 LDEzICs3MjUsMTMgQEAgRnJlZVBhZ2VCdHJlZUNvbnNvbGlkYXRlKEZyZWVQYWdlTWFuYWdl ciAqZnBtLCBGcmVlUGFnZUJ0cmVlICpidHApCiAJewogCQlpZiAoYnRwLT5oZHIubWFnaWMg PT0gRlJFRV9QQUdFX0xFQUZfTUFHSUMpCiAJCXsKLQkJCW1lbWNweSgmYnRwLT51LmxlYWZf a2V5W2J0cC0+aGRyLm51c2VkXSwgJm5wLT51LmxlYWZfa2V5WzBdLAorCQkJbWVtY3B5KCZi dHAtPmxlYWZfa2V5W2J0cC0+aGRyLm51c2VkXSwgJm5wLT5sZWFmX2tleVswXSwKIAkJCQkg ICBzaXplb2YoRnJlZVBhZ2VCdHJlZUxlYWZLZXkpICogbnAtPmhkci5udXNlZCk7CiAJCQli dHAtPmhkci5udXNlZCArPSBucC0+aGRyLm51c2VkOwogCQl9CiAJCWVsc2UKIAkJewotCQkJ bWVtY3B5KCZidHAtPnUuaW50ZXJuYWxfa2V5W2J0cC0+aGRyLm51c2VkXSwgJm5wLT51Lmlu dGVybmFsX2tleVswXSwKKwkJCW1lbWNweSgmYnRwLT5pbnRlcm5hbF9rZXlbYnRwLT5oZHIu bnVzZWRdLCAmbnAtPmludGVybmFsX2tleVswXSwKIAkJCQkgICBzaXplb2YoRnJlZVBhZ2VC dHJlZUludGVybmFsS2V5KSAqIG5wLT5oZHIubnVzZWQpOwogCQkJYnRwLT5oZHIubnVzZWQg Kz0gbnAtPmhkci5udXNlZDsKIAkJCUZyZWVQYWdlQnRyZWVVcGRhdGVQYXJlbnRQb2ludGVy cyhiYXNlLCBidHApOwpAQCAtNzUwLDEzICs3NTAsMTMgQEAgRnJlZVBhZ2VCdHJlZUNvbnNv bGlkYXRlKEZyZWVQYWdlTWFuYWdlciAqZnBtLCBGcmVlUGFnZUJ0cmVlICpidHApCiAJewog CQlpZiAoYnRwLT5oZHIubWFnaWMgPT0gRlJFRV9QQUdFX0xFQUZfTUFHSUMpCiAJCXsKLQkJ CW1lbWNweSgmbnAtPnUubGVhZl9rZXlbbnAtPmhkci5udXNlZF0sICZidHAtPnUubGVhZl9r ZXlbMF0sCisJCQltZW1jcHkoJm5wLT5sZWFmX2tleVtucC0+aGRyLm51c2VkXSwgJmJ0cC0+ bGVhZl9rZXlbMF0sCiAJCQkJICAgc2l6ZW9mKEZyZWVQYWdlQnRyZWVMZWFmS2V5KSAqIGJ0 cC0+aGRyLm51c2VkKTsKIAkJCW5wLT5oZHIubnVzZWQgKz0gYnRwLT5oZHIubnVzZWQ7CiAJ CX0KIAkJZWxzZQogCQl7Ci0JCQltZW1jcHkoJm5wLT51LmludGVybmFsX2tleVtucC0+aGRy Lm51c2VkXSwgJmJ0cC0+dS5pbnRlcm5hbF9rZXlbMF0sCisJCQltZW1jcHkoJm5wLT5pbnRl cm5hbF9rZXlbbnAtPmhkci5udXNlZF0sICZidHAtPmludGVybmFsX2tleVswXSwKIAkJCQkg ICBzaXplb2YoRnJlZVBhZ2VCdHJlZUludGVybmFsS2V5KSAqIGJ0cC0+aGRyLm51c2VkKTsK IAkJCW5wLT5oZHIubnVzZWQgKz0gYnRwLT5oZHIubnVzZWQ7CiAJCQlGcmVlUGFnZUJ0cmVl VXBkYXRlUGFyZW50UG9pbnRlcnMoYmFzZSwgbnApOwpAQCAtNzkxLDggKzc5MSw4IEBAIEZy ZWVQYWdlQnRyZWVGaW5kTGVmdFNpYmxpbmcoY2hhciAqYmFzZSwgRnJlZVBhZ2VCdHJlZSAq YnRwKQogCQlpbmRleCA9IEZyZWVQYWdlQnRyZWVTZWFyY2hJbnRlcm5hbChwLCBmaXJzdF9w YWdlKTsKIAkJaWYgKGluZGV4ID4gMCkKIAkJewotCQkJQXNzZXJ0KHAtPnUuaW50ZXJuYWxf a2V5W2luZGV4XS5maXJzdF9wYWdlID09IGZpcnN0X3BhZ2UpOwotCQkJcCA9IHJlbHB0cl9h Y2Nlc3MoYmFzZSwgcC0+dS5pbnRlcm5hbF9rZXlbaW5kZXggLSAxXS5jaGlsZCk7CisJCQlB c3NlcnQocC0+aW50ZXJuYWxfa2V5W2luZGV4XS5maXJzdF9wYWdlID09IGZpcnN0X3BhZ2Up OworCQkJcCA9IHJlbHB0cl9hY2Nlc3MoYmFzZSwgcC0+aW50ZXJuYWxfa2V5W2luZGV4IC0g MV0uY2hpbGQpOwogCQkJYnJlYWs7CiAJCX0KIAkJQXNzZXJ0KGluZGV4ID09IDApOwpAQCAt ODAzLDcgKzgwMyw3IEBAIEZyZWVQYWdlQnRyZWVGaW5kTGVmdFNpYmxpbmcoY2hhciAqYmFz ZSwgRnJlZVBhZ2VCdHJlZSAqYnRwKQogCXdoaWxlIChsZXZlbHMgPiAwKQogCXsKIAkJQXNz ZXJ0KHAtPmhkci5tYWdpYyA9PSBGUkVFX1BBR0VfSU5URVJOQUxfTUFHSUMpOwotCQlwID0g cmVscHRyX2FjY2VzcyhiYXNlLCBwLT51LmludGVybmFsX2tleVtwLT5oZHIubnVzZWQgLSAx XS5jaGlsZCk7CisJCXAgPSByZWxwdHJfYWNjZXNzKGJhc2UsIHAtPmludGVybmFsX2tleVtw LT5oZHIubnVzZWQgLSAxXS5jaGlsZCk7CiAJCS0tbGV2ZWxzOwogCX0KIAlBc3NlcnQocC0+ aGRyLm1hZ2ljID09IGJ0cC0+aGRyLm1hZ2ljKTsKQEAgLTgzNiw4ICs4MzYsOCBAQCBGcmVl UGFnZUJ0cmVlRmluZFJpZ2h0U2libGluZyhjaGFyICpiYXNlLCBGcmVlUGFnZUJ0cmVlICpi dHApCiAJCWluZGV4ID0gRnJlZVBhZ2VCdHJlZVNlYXJjaEludGVybmFsKHAsIGZpcnN0X3Bh Z2UpOwogCQlpZiAoaW5kZXggPCBwLT5oZHIubnVzZWQgLSAxKQogCQl7Ci0JCQlBc3NlcnQo cC0+dS5pbnRlcm5hbF9rZXlbaW5kZXhdLmZpcnN0X3BhZ2UgPT0gZmlyc3RfcGFnZSk7Ci0J CQlwID0gcmVscHRyX2FjY2VzcyhiYXNlLCBwLT51LmludGVybmFsX2tleVtpbmRleCArIDFd LmNoaWxkKTsKKwkJCUFzc2VydChwLT5pbnRlcm5hbF9rZXlbaW5kZXhdLmZpcnN0X3BhZ2Ug PT0gZmlyc3RfcGFnZSk7CisJCQlwID0gcmVscHRyX2FjY2VzcyhiYXNlLCBwLT5pbnRlcm5h bF9rZXlbaW5kZXggKyAxXS5jaGlsZCk7CiAJCQlicmVhazsKIAkJfQogCQlBc3NlcnQoaW5k ZXggPT0gcC0+aGRyLm51c2VkIC0gMSk7CkBAIC04NDgsNyArODQ4LDcgQEAgRnJlZVBhZ2VC dHJlZUZpbmRSaWdodFNpYmxpbmcoY2hhciAqYmFzZSwgRnJlZVBhZ2VCdHJlZSAqYnRwKQog CXdoaWxlIChsZXZlbHMgPiAwKQogCXsKIAkJQXNzZXJ0KHAtPmhkci5tYWdpYyA9PSBGUkVF X1BBR0VfSU5URVJOQUxfTUFHSUMpOwotCQlwID0gcmVscHRyX2FjY2VzcyhiYXNlLCBwLT51 LmludGVybmFsX2tleVswXS5jaGlsZCk7CisJCXAgPSByZWxwdHJfYWNjZXNzKGJhc2UsIHAt PmludGVybmFsX2tleVswXS5jaGlsZCk7CiAJCS0tbGV2ZWxzOwogCX0KIAlBc3NlcnQocC0+ aGRyLm1hZ2ljID09IGJ0cC0+aGRyLm1hZ2ljKTsKQEAgLTg2NSwxMSArODY1LDExIEBAIEZy ZWVQYWdlQnRyZWVGaXJzdEtleShGcmVlUGFnZUJ0cmVlICpidHApCiAJQXNzZXJ0KGJ0cC0+ aGRyLm51c2VkID4gMCk7CiAKIAlpZiAoYnRwLT5oZHIubWFnaWMgPT0gRlJFRV9QQUdFX0xF QUZfTUFHSUMpCi0JCXJldHVybiBidHAtPnUubGVhZl9rZXlbMF0uZmlyc3RfcGFnZTsKKwkJ cmV0dXJuIGJ0cC0+bGVhZl9rZXlbMF0uZmlyc3RfcGFnZTsKIAllbHNlCiAJewogCQlBc3Nl cnQoYnRwLT5oZHIubWFnaWMgPT0gRlJFRV9QQUdFX0lOVEVSTkFMX01BR0lDKTsKLQkJcmV0 dXJuIGJ0cC0+dS5pbnRlcm5hbF9rZXlbMF0uZmlyc3RfcGFnZTsKKwkJcmV0dXJuIGJ0cC0+ aW50ZXJuYWxfa2V5WzBdLmZpcnN0X3BhZ2U7CiAJfQogfQogCkBAIC05MDMsMTAgKzkwMywx MCBAQCBGcmVlUGFnZUJ0cmVlSW5zZXJ0SW50ZXJuYWwoY2hhciAqYmFzZSwgRnJlZVBhZ2VC dHJlZSAqYnRwLCBTaXplIGluZGV4LAogCUFzc2VydChidHAtPmhkci5tYWdpYyA9PSBGUkVF X1BBR0VfSU5URVJOQUxfTUFHSUMpOwogCUFzc2VydChidHAtPmhkci5udXNlZCA8PSBGUE1f SVRFTVNfUEVSX0lOVEVSTkFMX1BBR0UpOwogCUFzc2VydChpbmRleCA8PSBidHAtPmhkci5u dXNlZCk7Ci0JbWVtbW92ZSgmYnRwLT51LmludGVybmFsX2tleVtpbmRleCArIDFdLCAmYnRw LT51LmludGVybmFsX2tleVtpbmRleF0sCisJbWVtbW92ZSgmYnRwLT5pbnRlcm5hbF9rZXlb aW5kZXggKyAxXSwgJmJ0cC0+aW50ZXJuYWxfa2V5W2luZGV4XSwKIAkJCXNpemVvZihGcmVl UGFnZUJ0cmVlSW50ZXJuYWxLZXkpICogKGJ0cC0+aGRyLm51c2VkIC0gaW5kZXgpKTsKLQli dHAtPnUuaW50ZXJuYWxfa2V5W2luZGV4XS5maXJzdF9wYWdlID0gZmlyc3RfcGFnZTsKLQly ZWxwdHJfc3RvcmUoYmFzZSwgYnRwLT51LmludGVybmFsX2tleVtpbmRleF0uY2hpbGQsIGNo aWxkKTsKKwlidHAtPmludGVybmFsX2tleVtpbmRleF0uZmlyc3RfcGFnZSA9IGZpcnN0X3Bh Z2U7CisJcmVscHRyX3N0b3JlKGJhc2UsIGJ0cC0+aW50ZXJuYWxfa2V5W2luZGV4XS5jaGls ZCwgY2hpbGQpOwogCSsrYnRwLT5oZHIubnVzZWQ7CiB9CiAKQEAgLTkyMCwxMCArOTIwLDEw IEBAIEZyZWVQYWdlQnRyZWVJbnNlcnRMZWFmKEZyZWVQYWdlQnRyZWUgKmJ0cCwgU2l6ZSBp bmRleCwgU2l6ZSBmaXJzdF9wYWdlLAogCUFzc2VydChidHAtPmhkci5tYWdpYyA9PSBGUkVF X1BBR0VfTEVBRl9NQUdJQyk7CiAJQXNzZXJ0KGJ0cC0+aGRyLm51c2VkIDw9IEZQTV9JVEVN U19QRVJfTEVBRl9QQUdFKTsKIAlBc3NlcnQoaW5kZXggPD0gYnRwLT5oZHIubnVzZWQpOwot CW1lbW1vdmUoJmJ0cC0+dS5sZWFmX2tleVtpbmRleCArIDFdLCAmYnRwLT51LmxlYWZfa2V5 W2luZGV4XSwKKwltZW1tb3ZlKCZidHAtPmxlYWZfa2V5W2luZGV4ICsgMV0sICZidHAtPmxl YWZfa2V5W2luZGV4XSwKIAkJCXNpemVvZihGcmVlUGFnZUJ0cmVlTGVhZktleSkgKiAoYnRw LT5oZHIubnVzZWQgLSBpbmRleCkpOwotCWJ0cC0+dS5sZWFmX2tleVtpbmRleF0uZmlyc3Rf cGFnZSA9IGZpcnN0X3BhZ2U7Ci0JYnRwLT51LmxlYWZfa2V5W2luZGV4XS5ucGFnZXMgPSBu cGFnZXM7CisJYnRwLT5sZWFmX2tleVtpbmRleF0uZmlyc3RfcGFnZSA9IGZpcnN0X3BhZ2U7 CisJYnRwLT5sZWFmX2tleVtpbmRleF0ubnBhZ2VzID0gbnBhZ2VzOwogCSsrYnRwLT5oZHIu bnVzZWQ7CiB9CiAKQEAgLTk2Nyw3ICs5NjcsNyBAQCBGcmVlUGFnZUJ0cmVlUmVtb3ZlKEZy ZWVQYWdlTWFuYWdlciAqZnBtLCBGcmVlUGFnZUJ0cmVlICpidHAsIFNpemUgaW5kZXgpCiAJ LyogUGh5c2ljYWxseSByZW1vdmUgdGhlIGtleSBmcm9tIHRoZSBwYWdlLiAqLwogCS0tYnRw LT5oZHIubnVzZWQ7CiAJaWYgKGluZGV4IDwgYnRwLT5oZHIubnVzZWQpCi0JCW1lbW1vdmUo JmJ0cC0+dS5sZWFmX2tleVtpbmRleF0sICZidHAtPnUubGVhZl9rZXlbaW5kZXggKyAxXSwK KwkJbWVtbW92ZSgmYnRwLT5sZWFmX2tleVtpbmRleF0sICZidHAtPmxlYWZfa2V5W2luZGV4 ICsgMV0sCiAJCQkJc2l6ZW9mKEZyZWVQYWdlQnRyZWVMZWFmS2V5KSAqIChidHAtPmhkci5u dXNlZCAtIGluZGV4KSk7CiAKIAkvKiBJZiB3ZSBqdXN0IHJlbW92ZWQgdGhlIGZpcnN0IGtl eSwgYWRqdXN0IGFuY2VzdG9yIGtleXMuICovCkBAIC0xMDIxLDggKzEwMjEsOCBAQCBGcmVl UGFnZUJ0cmVlUmVtb3ZlUGFnZShGcmVlUGFnZU1hbmFnZXIgKmZwbSwgRnJlZVBhZ2VCdHJl ZSAqYnRwKQogCQlpbmRleCA9IEZyZWVQYWdlQnRyZWVTZWFyY2hMZWFmKHBhcmVudCwgZmly c3RfcGFnZSk7CiAJCUFzc2VydChpbmRleCA8IHBhcmVudC0+aGRyLm51c2VkKTsKIAkJaWYg KGluZGV4IDwgcGFyZW50LT5oZHIubnVzZWQgLSAxKQotCQkJbWVtbW92ZSgmcGFyZW50LT51 LmxlYWZfa2V5W2luZGV4XSwKLQkJCQkJJnBhcmVudC0+dS5sZWFmX2tleVtpbmRleCArIDFd LAorCQkJbWVtbW92ZSgmcGFyZW50LT5sZWFmX2tleVtpbmRleF0sCisJCQkJCSZwYXJlbnQt PmxlYWZfa2V5W2luZGV4ICsgMV0sCiAJCQkJCXNpemVvZihGcmVlUGFnZUJ0cmVlTGVhZktl eSkKIAkJCQkJKiAocGFyZW50LT5oZHIubnVzZWQgLSBpbmRleCAtIDEpKTsKIAl9CkBAIC0x MDMxLDggKzEwMzEsOCBAQCBGcmVlUGFnZUJ0cmVlUmVtb3ZlUGFnZShGcmVlUGFnZU1hbmFn ZXIgKmZwbSwgRnJlZVBhZ2VCdHJlZSAqYnRwKQogCQlpbmRleCA9IEZyZWVQYWdlQnRyZWVT ZWFyY2hJbnRlcm5hbChwYXJlbnQsIGZpcnN0X3BhZ2UpOwogCQlBc3NlcnQoaW5kZXggPCBw YXJlbnQtPmhkci5udXNlZCk7CiAJCWlmIChpbmRleCA8IHBhcmVudC0+aGRyLm51c2VkIC0g MSkKLQkJCW1lbW1vdmUoJnBhcmVudC0+dS5pbnRlcm5hbF9rZXlbaW5kZXhdLAotCQkJCQkm cGFyZW50LT51LmludGVybmFsX2tleVtpbmRleCArIDFdLAorCQkJbWVtbW92ZSgmcGFyZW50 LT5pbnRlcm5hbF9rZXlbaW5kZXhdLAorCQkJCQkmcGFyZW50LT5pbnRlcm5hbF9rZXlbaW5k ZXggKyAxXSwKIAkJCQkJc2l6ZW9mKEZyZWVQYWdlQnRyZWVJbnRlcm5hbEtleSkKIAkJCQkJ KiAocGFyZW50LT5oZHIubnVzZWQgLSBpbmRleCAtIDEpKTsKIAl9CkBAIC0xMDg2LDcgKzEw ODYsNyBAQCBGcmVlUGFnZUJ0cmVlU2VhcmNoKEZyZWVQYWdlTWFuYWdlciAqZnBtLCBTaXpl IGZpcnN0X3BhZ2UsCiAKIAkJaW5kZXggPSBGcmVlUGFnZUJ0cmVlU2VhcmNoSW50ZXJuYWwo YnRwLCBmaXJzdF9wYWdlKTsKIAkJZm91bmRfZXhhY3QgPSBpbmRleCA8IGJ0cC0+aGRyLm51 c2VkICYmCi0JCQlidHAtPnUuaW50ZXJuYWxfa2V5W2luZGV4XS5maXJzdF9wYWdlID09IGZp cnN0X3BhZ2U7CisJCQlidHAtPmludGVybmFsX2tleVtpbmRleF0uZmlyc3RfcGFnZSA9PSBm aXJzdF9wYWdlOwogCiAJCS8qCiAJCSAqIElmIHdlIGZvdW5kIGFuIGV4YWN0IG1hdGNoIHdl IGRlc2NlbmQgZGlyZWN0bHkuICBPdGhlcndpc2UsIHdlCkBAIC0xMTA3LDcgKzExMDcsNyBA QCBGcmVlUGFnZUJ0cmVlU2VhcmNoKEZyZWVQYWdlTWFuYWdlciAqZnBtLCBTaXplIGZpcnN0 X3BhZ2UsCiAKIAkJLyogRGVzY2VuZCB0byBhcHByb3ByaWF0ZSBjaGlsZCBwYWdlLiAqLwog CQlBc3NlcnQoaW5kZXggPCBidHAtPmhkci5udXNlZCk7Ci0JCWNoaWxkID0gcmVscHRyX2Fj Y2VzcyhiYXNlLCBidHAtPnUuaW50ZXJuYWxfa2V5W2luZGV4XS5jaGlsZCk7CisJCWNoaWxk ID0gcmVscHRyX2FjY2VzcyhiYXNlLCBidHAtPmludGVybmFsX2tleVtpbmRleF0uY2hpbGQp OwogCQlBc3NlcnQocmVscHRyX2FjY2VzcyhiYXNlLCBjaGlsZC0+aGRyLnBhcmVudCkgPT0g YnRwKTsKIAkJYnRwID0gY2hpbGQ7CiAJfQpAQCAtMTEyOCw3ICsxMTI4LDcgQEAgRnJlZVBh Z2VCdHJlZVNlYXJjaChGcmVlUGFnZU1hbmFnZXIgKmZwbSwgU2l6ZSBmaXJzdF9wYWdlLAog CXJlc3VsdC0+cGFnZSA9IGJ0cDsKIAlyZXN1bHQtPmluZGV4ID0gaW5kZXg7CiAJcmVzdWx0 LT5mb3VuZCA9IGluZGV4IDwgYnRwLT5oZHIubnVzZWQgJiYKLQkJZmlyc3RfcGFnZSA9PSBi dHAtPnUubGVhZl9rZXlbaW5kZXhdLmZpcnN0X3BhZ2U7CisJCWZpcnN0X3BhZ2UgPT0gYnRw LT5sZWFmX2tleVtpbmRleF0uZmlyc3RfcGFnZTsKIH0KIAogLyoKQEAgLTExNDgsNyArMTE0 OCw3IEBAIEZyZWVQYWdlQnRyZWVTZWFyY2hJbnRlcm5hbChGcmVlUGFnZUJ0cmVlICpidHAs IFNpemUgZmlyc3RfcGFnZSkKIAl3aGlsZSAobG93IDwgaGlnaCkKIAl7CiAJCVNpemUJCW1p ZCA9IChsb3cgKyBoaWdoKSAvIDI7Ci0JCVNpemUJCXZhbCA9IGJ0cC0+dS5pbnRlcm5hbF9r ZXlbbWlkXS5maXJzdF9wYWdlOworCQlTaXplCQl2YWwgPSBidHAtPmludGVybmFsX2tleVtt aWRdLmZpcnN0X3BhZ2U7CiAKIAkJaWYgKGZpcnN0X3BhZ2UgPT0gdmFsKQogCQkJcmV0dXJu IG1pZDsKQEAgLTExNzgsNyArMTE3OCw3IEBAIEZyZWVQYWdlQnRyZWVTZWFyY2hMZWFmKEZy ZWVQYWdlQnRyZWUgKmJ0cCwgU2l6ZSBmaXJzdF9wYWdlKQogCXdoaWxlIChsb3cgPCBoaWdo KQogCXsKIAkJU2l6ZQkJbWlkID0gKGxvdyArIGhpZ2gpIC8gMjsKLQkJU2l6ZQkJdmFsID0g YnRwLT51LmxlYWZfa2V5W21pZF0uZmlyc3RfcGFnZTsKKwkJU2l6ZQkJdmFsID0gYnRwLT5s ZWFmX2tleVttaWRdLmZpcnN0X3BhZ2U7CiAKIAkJaWYgKGZpcnN0X3BhZ2UgPT0gdmFsKQog CQkJcmV0dXJuIG1pZDsKQEAgLTEyMDksMTQgKzEyMDksMTQgQEAgRnJlZVBhZ2VCdHJlZVNw bGl0UGFnZShGcmVlUGFnZU1hbmFnZXIgKmZwbSwgRnJlZVBhZ2VCdHJlZSAqYnRwKQogCWJ0 cC0+aGRyLm51c2VkIC09IG5ld3NpYmxpbmctPmhkci5udXNlZDsKIAogCWlmIChidHAtPmhk ci5tYWdpYyA9PSBGUkVFX1BBR0VfTEVBRl9NQUdJQykKLQkJbWVtY3B5KCZuZXdzaWJsaW5n LT51LmxlYWZfa2V5LAotCQkJICAgJmJ0cC0+dS5sZWFmX2tleVtidHAtPmhkci5udXNlZF0s CisJCW1lbWNweSgmbmV3c2libGluZy0+bGVhZl9rZXksCisJCQkgICAmYnRwLT5sZWFmX2tl eVtidHAtPmhkci5udXNlZF0sCiAJCQkgICBzaXplb2YoRnJlZVBhZ2VCdHJlZUxlYWZLZXkp ICogbmV3c2libGluZy0+aGRyLm51c2VkKTsKIAllbHNlCiAJewogCQlBc3NlcnQoYnRwLT5o ZHIubWFnaWMgPT0gRlJFRV9QQUdFX0lOVEVSTkFMX01BR0lDKTsKLQkJbWVtY3B5KCZuZXdz aWJsaW5nLT51LmludGVybmFsX2tleSwKLQkJCSAgICZidHAtPnUuaW50ZXJuYWxfa2V5W2J0 cC0+aGRyLm51c2VkXSwKKwkJbWVtY3B5KCZuZXdzaWJsaW5nLT5pbnRlcm5hbF9rZXksCisJ CQkgICAmYnRwLT5pbnRlcm5hbF9rZXlbYnRwLT5oZHIubnVzZWRdLAogCQkJICAgc2l6ZW9m KEZyZWVQYWdlQnRyZWVJbnRlcm5hbEtleSkgKiBuZXdzaWJsaW5nLT5oZHIubnVzZWQpOwog CQlGcmVlUGFnZUJ0cmVlVXBkYXRlUGFyZW50UG9pbnRlcnMoZnBtX3NlZ21lbnRfYmFzZShm cG0pLCBuZXdzaWJsaW5nKTsKIAl9CkBAIC0xMjM4LDcgKzEyMzgsNyBAQCBGcmVlUGFnZUJ0 cmVlVXBkYXRlUGFyZW50UG9pbnRlcnMoY2hhciAqYmFzZSwgRnJlZVBhZ2VCdHJlZSAqYnRw KQogCXsKIAkJRnJlZVBhZ2VCdHJlZSAqY2hpbGQ7CiAKLQkJY2hpbGQgPSByZWxwdHJfYWNj ZXNzKGJhc2UsIGJ0cC0+dS5pbnRlcm5hbF9rZXlbaV0uY2hpbGQpOworCQljaGlsZCA9IHJl bHB0cl9hY2Nlc3MoYmFzZSwgYnRwLT5pbnRlcm5hbF9rZXlbaV0uY2hpbGQpOwogCQlyZWxw dHJfc3RvcmUoYmFzZSwgY2hpbGQtPmhkci5wYXJlbnQsIGJ0cCk7CiAJfQogfQpAQCAtMTI2 OCwxMiArMTI2OCwxMiBAQCBGcmVlUGFnZU1hbmFnZXJEdW1wQnRyZWUoRnJlZVBhZ2VNYW5h Z2VyICpmcG0sIEZyZWVQYWdlQnRyZWUgKmJ0cCwKIAl7CiAJCWlmIChidHAtPmhkci5tYWdp YyA9PSBGUkVFX1BBR0VfSU5URVJOQUxfTUFHSUMpCiAJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1 ZiwgIiAlenUtPiV6dSIsCi0JCQkJCQkJIGJ0cC0+dS5pbnRlcm5hbF9rZXlbaW5kZXhdLmZp cnN0X3BhZ2UsCi0JCQkJCQkJIHJlbHB0cl9vZmZzZXQoYnRwLT51LmludGVybmFsX2tleVtp bmRleF0uY2hpbGQpIC8gRlBNX1BBR0VfU0laRSk7CisJCQkJCQkJIGJ0cC0+aW50ZXJuYWxf a2V5W2luZGV4XS5maXJzdF9wYWdlLAorCQkJCQkJCSByZWxwdHJfb2Zmc2V0KGJ0cC0+aW50 ZXJuYWxfa2V5W2luZGV4XS5jaGlsZCkgLyBGUE1fUEFHRV9TSVpFKTsKIAkJZWxzZQogCQkJ YXBwZW5kU3RyaW5nSW5mbyhidWYsICIgJXp1KCV6dSkiLAotCQkJCQkJCSBidHAtPnUubGVh Zl9rZXlbaW5kZXhdLmZpcnN0X3BhZ2UsCi0JCQkJCQkJIGJ0cC0+dS5sZWFmX2tleVtpbmRl eF0ubnBhZ2VzKTsKKwkJCQkJCQkgYnRwLT5sZWFmX2tleVtpbmRleF0uZmlyc3RfcGFnZSwK KwkJCQkJCQkgYnRwLT5sZWFmX2tleVtpbmRleF0ubnBhZ2VzKTsKIAl9CiAJYXBwZW5kU3Ry aW5nSW5mb0NoYXIoYnVmLCAnXG4nKTsKIApAQCAtMTI4Myw3ICsxMjgzLDcgQEAgRnJlZVBh Z2VNYW5hZ2VyRHVtcEJ0cmVlKEZyZWVQYWdlTWFuYWdlciAqZnBtLCBGcmVlUGFnZUJ0cmVl ICpidHAsCiAJCXsKIAkJCUZyZWVQYWdlQnRyZWUgKmNoaWxkOwogCi0JCQljaGlsZCA9IHJl bHB0cl9hY2Nlc3MoYmFzZSwgYnRwLT51LmludGVybmFsX2tleVtpbmRleF0uY2hpbGQpOwor CQkJY2hpbGQgPSByZWxwdHJfYWNjZXNzKGJhc2UsIGJ0cC0+aW50ZXJuYWxfa2V5W2luZGV4 XS5jaGlsZCk7CiAJCQlGcmVlUGFnZU1hbmFnZXJEdW1wQnRyZWUoZnBtLCBjaGlsZCwgYnRw LCBsZXZlbCArIDEsIGJ1Zik7CiAJCX0KIAl9CkBAIC0xNDQ1LDcgKzE0NDUsNyBAQCBGcmVl UGFnZU1hbmFnZXJHZXRJbnRlcm5hbChGcmVlUGFnZU1hbmFnZXIgKmZwbSwgU2l6ZSBucGFn ZXMsIFNpemUgKmZpcnN0X3BhZ2UpCiAKIAkJCS8qIEFkanVzdCBidHJlZSB0byByZWZsZWN0 IHJlbWFpbmluZyBwYWdlcy4gKi8KIAkJCUFzc2VydCh2aWN0aW0tPm5wYWdlcyA+IG5wYWdl cyk7Ci0JCQlrZXkgPSAmcmVzdWx0LnBhZ2UtPnUubGVhZl9rZXlbcmVzdWx0LmluZGV4XTsK KwkJCWtleSA9ICZyZXN1bHQucGFnZS0+bGVhZl9rZXlbcmVzdWx0LmluZGV4XTsKIAkJCUFz c2VydChrZXktPm5wYWdlcyA9PSB2aWN0aW0tPm5wYWdlcyk7CiAJCQlrZXktPmZpcnN0X3Bh Z2UgKz0gbnBhZ2VzOwogCQkJa2V5LT5ucGFnZXMgLT0gbnBhZ2VzOwpAQCAtMTUzOCw4ICsx NTM4LDggQEAgRnJlZVBhZ2VNYW5hZ2VyUHV0SW50ZXJuYWwoRnJlZVBhZ2VNYW5hZ2VyICpm cG0sIFNpemUgZmlyc3RfcGFnZSwgU2l6ZSBucGFnZXMsCiAJCQlyb290LT5oZHIubWFnaWMg PSBGUkVFX1BBR0VfTEVBRl9NQUdJQzsKIAkJCXJvb3QtPmhkci5udXNlZCA9IDE7CiAJCQly ZWxwdHJfc3RvcmUoYmFzZSwgcm9vdC0+aGRyLnBhcmVudCwgKEZyZWVQYWdlQnRyZWUgKikg TlVMTCk7Ci0JCQlyb290LT51LmxlYWZfa2V5WzBdLmZpcnN0X3BhZ2UgPSBmcG0tPnNpbmds ZXRvbl9maXJzdF9wYWdlOwotCQkJcm9vdC0+dS5sZWFmX2tleVswXS5ucGFnZXMgPSBmcG0t PnNpbmdsZXRvbl9ucGFnZXM7CisJCQlyb290LT5sZWFmX2tleVswXS5maXJzdF9wYWdlID0g ZnBtLT5zaW5nbGV0b25fZmlyc3RfcGFnZTsKKwkJCXJvb3QtPmxlYWZfa2V5WzBdLm5wYWdl cyA9IGZwbS0+c2luZ2xldG9uX25wYWdlczsKIAkJCXJlbHB0cl9zdG9yZShiYXNlLCBmcG0t PmJ0cmVlX3Jvb3QsIHJvb3QpOwogCQkJZnBtLT5zaW5nbGV0b25fZmlyc3RfcGFnZSA9IDA7 CiAJCQlmcG0tPnNpbmdsZXRvbl9ucGFnZXMgPSAwOwpAQCAtMTU1MSwxMCArMTU1MSwxMCBA QCBGcmVlUGFnZU1hbmFnZXJQdXRJbnRlcm5hbChGcmVlUGFnZU1hbmFnZXIgKmZwbSwgU2l6 ZSBmaXJzdF9wYWdlLCBTaXplIG5wYWdlcywKIAkJCSAqIHBhZ2UgcnVuLCB3aGljaCBpcyBp bnZhbGlkLiAgT3ZlcndyaXRlIGl0IHdpdGggdGhlIGVudHJ5IHdlJ3JlCiAJCQkgKiB0cnlp bmcgdG8gaW5zZXJ0IGFuZCBnZXQgb3V0LgogCQkJICovCi0JCQlpZiAocm9vdC0+dS5sZWFm X2tleVswXS5ucGFnZXMgPT0gMCkKKwkJCWlmIChyb290LT5sZWFmX2tleVswXS5ucGFnZXMg PT0gMCkKIAkJCXsKLQkJCQlyb290LT51LmxlYWZfa2V5WzBdLmZpcnN0X3BhZ2UgPSBmaXJz dF9wYWdlOwotCQkJCXJvb3QtPnUubGVhZl9rZXlbMF0ubnBhZ2VzID0gbnBhZ2VzOworCQkJ CXJvb3QtPmxlYWZfa2V5WzBdLmZpcnN0X3BhZ2UgPSBmaXJzdF9wYWdlOworCQkJCXJvb3Qt PmxlYWZfa2V5WzBdLm5wYWdlcyA9IG5wYWdlczsKIAkJCQlGcmVlUGFnZVB1c2hTcGFuTGVh ZGVyKGZwbSwgZmlyc3RfcGFnZSwgbnBhZ2VzKTsKIAkJCQlyZXR1cm4gbnBhZ2VzOwogCQkJ fQpAQCAtMTU2NywxOSArMTU2NywxOSBAQCBGcmVlUGFnZU1hbmFnZXJQdXRJbnRlcm5hbChG cmVlUGFnZU1hbmFnZXIgKmZwbSwgU2l6ZSBmaXJzdF9wYWdlLCBTaXplIG5wYWdlcywKIAlG cmVlUGFnZUJ0cmVlU2VhcmNoKGZwbSwgZmlyc3RfcGFnZSwgJnJlc3VsdCk7CiAJQXNzZXJ0 KCFyZXN1bHQuZm91bmQpOwogCWlmIChyZXN1bHQuaW5kZXggPiAwKQotCQlwcmV2a2V5ID0g JnJlc3VsdC5wYWdlLT51LmxlYWZfa2V5W3Jlc3VsdC5pbmRleCAtIDFdOworCQlwcmV2a2V5 ID0gJnJlc3VsdC5wYWdlLT5sZWFmX2tleVtyZXN1bHQuaW5kZXggLSAxXTsKIAlpZiAocmVz dWx0LmluZGV4IDwgcmVzdWx0LnBhZ2UtPmhkci5udXNlZCkKIAl7CiAJCW5wID0gcmVzdWx0 LnBhZ2U7CiAJCW5pbmRleCA9IHJlc3VsdC5pbmRleDsKLQkJbmV4dGtleSA9ICZyZXN1bHQu cGFnZS0+dS5sZWFmX2tleVtyZXN1bHQuaW5kZXhdOworCQluZXh0a2V5ID0gJnJlc3VsdC5w YWdlLT5sZWFmX2tleVtyZXN1bHQuaW5kZXhdOwogCX0KIAllbHNlCiAJewogCQlucCA9IEZy ZWVQYWdlQnRyZWVGaW5kUmlnaHRTaWJsaW5nKGJhc2UsIHJlc3VsdC5wYWdlKTsKIAkJbmlu ZGV4ID0gMDsKIAkJaWYgKG5wICE9IE5VTEwpCi0JCQluZXh0a2V5ID0gJm5wLT51LmxlYWZf a2V5WzBdOworCQkJbmV4dGtleSA9ICZucC0+bGVhZl9rZXlbMF07CiAJfQogCiAJLyogQ29u c29saWRhdGUgd2l0aCB0aGUgcHJldmlvdXMgZW50cnkgaWYgcG9zc2libGUuICovCkBAIC0x NzQyLDcgKzE3NDIsNyBAQCBGcmVlUGFnZU1hbmFnZXJQdXRJbnRlcm5hbChGcmVlUGFnZU1h bmFnZXIgKmZwbSwgU2l6ZSBmaXJzdF9wYWdlLCBTaXplIG5wYWdlcywKIAkJCQkJU2l6ZQkJ aW5kZXg7CiAJCQkJCUZyZWVQYWdlQnRyZWUgKmluc2VydF9pbnRvOwogCi0JCQkJCWluc2Vy dF9pbnRvID0ga2V5IDwgbmV3c2libGluZy0+dS5sZWFmX2tleVswXS5maXJzdF9wYWdlID8K KwkJCQkJaW5zZXJ0X2ludG8gPSBrZXkgPCBuZXdzaWJsaW5nLT5sZWFmX2tleVswXS5maXJz dF9wYWdlID8KIAkJCQkJCXNwbGl0X3RhcmdldCA6IG5ld3NpYmxpbmc7CiAJCQkJCWluZGV4 ID0gRnJlZVBhZ2VCdHJlZVNlYXJjaExlYWYoaW5zZXJ0X2ludG8sIGtleSk7CiAJCQkJCUZy ZWVQYWdlQnRyZWVJbnNlcnRMZWFmKGluc2VydF9pbnRvLCBpbmRleCwga2V5LCBucGFnZXMp OwpAQCAtMTc1NSw3ICsxNzU1LDcgQEAgRnJlZVBhZ2VNYW5hZ2VyUHV0SW50ZXJuYWwoRnJl ZVBhZ2VNYW5hZ2VyICpmcG0sIFNpemUgZmlyc3RfcGFnZSwgU2l6ZSBucGFnZXMsCiAJCQkJ CUZyZWVQYWdlQnRyZWUgKmluc2VydF9pbnRvOwogCiAJCQkJCWluc2VydF9pbnRvID0KLQkJ CQkJCWtleSA8IG5ld3NpYmxpbmctPnUuaW50ZXJuYWxfa2V5WzBdLmZpcnN0X3BhZ2UgPwor CQkJCQkJa2V5IDwgbmV3c2libGluZy0+aW50ZXJuYWxfa2V5WzBdLmZpcnN0X3BhZ2UgPwog CQkJCQkJc3BsaXRfdGFyZ2V0IDogbmV3c2libGluZzsKIAkJCQkJaW5kZXggPSBGcmVlUGFn ZUJ0cmVlU2VhcmNoSW50ZXJuYWwoaW5zZXJ0X2ludG8sIGtleSk7CiAJCQkJCUZyZWVQYWdl QnRyZWVJbnNlcnRJbnRlcm5hbChiYXNlLCBpbnNlcnRfaW50bywgaW5kZXgsCkBAIC0xNzc1 LDE0ICsxNzc1LDE0IEBAIEZyZWVQYWdlTWFuYWdlclB1dEludGVybmFsKEZyZWVQYWdlTWFu YWdlciAqZnBtLCBTaXplIGZpcnN0X3BhZ2UsIFNpemUgbnBhZ2VzLAogCQkJCQluZXdyb290 LT5oZHIubnVzZWQgPSAyOwogCQkJCQlyZWxwdHJfc3RvcmUoYmFzZSwgbmV3cm9vdC0+aGRy LnBhcmVudCwKIAkJCQkJCQkJIChGcmVlUGFnZUJ0cmVlICopIE5VTEwpOwotCQkJCQluZXdy b290LT51LmludGVybmFsX2tleVswXS5maXJzdF9wYWdlID0KKwkJCQkJbmV3cm9vdC0+aW50 ZXJuYWxfa2V5WzBdLmZpcnN0X3BhZ2UgPQogCQkJCQkJRnJlZVBhZ2VCdHJlZUZpcnN0S2V5 KHNwbGl0X3RhcmdldCk7Ci0JCQkJCXJlbHB0cl9zdG9yZShiYXNlLCBuZXdyb290LT51Lmlu dGVybmFsX2tleVswXS5jaGlsZCwKKwkJCQkJcmVscHRyX3N0b3JlKGJhc2UsIG5ld3Jvb3Qt PmludGVybmFsX2tleVswXS5jaGlsZCwKIAkJCQkJCQkJIHNwbGl0X3RhcmdldCk7CiAJCQkJ CXJlbHB0cl9zdG9yZShiYXNlLCBzcGxpdF90YXJnZXQtPmhkci5wYXJlbnQsIG5ld3Jvb3Qp OwotCQkJCQluZXdyb290LT51LmludGVybmFsX2tleVsxXS5maXJzdF9wYWdlID0KKwkJCQkJ bmV3cm9vdC0+aW50ZXJuYWxfa2V5WzFdLmZpcnN0X3BhZ2UgPQogCQkJCQkJRnJlZVBhZ2VC dHJlZUZpcnN0S2V5KG5ld3NpYmxpbmcpOwotCQkJCQlyZWxwdHJfc3RvcmUoYmFzZSwgbmV3 cm9vdC0+dS5pbnRlcm5hbF9rZXlbMV0uY2hpbGQsCisJCQkJCXJlbHB0cl9zdG9yZShiYXNl LCBuZXdyb290LT5pbnRlcm5hbF9rZXlbMV0uY2hpbGQsCiAJCQkJCQkJCSBuZXdzaWJsaW5n KTsKIAkJCQkJcmVscHRyX3N0b3JlKGJhc2UsIG5ld3NpYmxpbmctPmhkci5wYXJlbnQsIG5l d3Jvb3QpOwogCQkJCQlyZWxwdHJfc3RvcmUoYmFzZSwgZnBtLT5idHJlZV9yb290LCBuZXdy b290KTsKQEAgLTE3OTIsNyArMTc5Miw3IEBAIEZyZWVQYWdlTWFuYWdlclB1dEludGVybmFs KEZyZWVQYWdlTWFuYWdlciAqZnBtLCBTaXplIGZpcnN0X3BhZ2UsIFNpemUgbnBhZ2VzLAog CQkJCX0KIAogCQkJCS8qIElmIHRoZSBwYXJlbnQgcGFnZSBpc24ndCBmdWxsLCBpbnNlcnQg dGhlIGRvd25saW5rLiAqLwotCQkJCWtleSA9IG5ld3NpYmxpbmctPnUuaW50ZXJuYWxfa2V5 WzBdLmZpcnN0X3BhZ2U7CisJCQkJa2V5ID0gbmV3c2libGluZy0+aW50ZXJuYWxfa2V5WzBd LmZpcnN0X3BhZ2U7CiAJCQkJaWYgKHBhcmVudC0+aGRyLm51c2VkIDwgRlBNX0lURU1TX1BF Ul9JTlRFUk5BTF9QQUdFKQogCQkJCXsKIAkJCQkJU2l6ZQkJaW5kZXg7Ci0tIAoyLjUxLjAK Cg== --------------XMilSvfSoQNhBmwudkXUWZaX Content-Type: text/plain; charset=UTF-8; name="0017-C11-anonymous-unions-typcache.patch" Content-Disposition: attachment; filename="0017-C11-anonymous-unions-typcache.patch" Content-Transfer-Encoding: base64 RnJvbSBjNzNlYzRkODc2YjEyY2M4YTBlZTE3ZGI3NTU1ZDJmNjdkZjQzNGFiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAyMiBTZXAgMjAyNSAxNDo0Nzo0OCArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMTcvMjNdIEMxMSBhbm9ueW1vdXMgdW5pb25zIFt0eXBjYWNoZV0KCi0tLQog c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2FjaGUuYyB8IDI2ICsrKysrKysrKysrKyst LS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgMTMgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2Fj aGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMKaW5kZXggNmEzNDc2 OThlZGYuLjM2MGZkMDI5ZWY5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS90eXBjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMK QEAgLTIwMCw3ICsyMDAsNyBAQCB0eXBlZGVmIHN0cnVjdCBTaGFyZWRSZWNvcmRUYWJsZUtl eQogCXsKIAkJVHVwbGVEZXNjCWxvY2FsX3R1cGRlc2M7CiAJCWRzYV9wb2ludGVyIHNoYXJl ZF90dXBkZXNjOwotCX0JCQl1OworCX07CiAJYm9vbAkJc2hhcmVkOwogfSBTaGFyZWRSZWNv cmRUYWJsZUtleTsKIApAQCAtMjQxLDE0ICsyNDEsMTQgQEAgc2hhcmVkX3JlY29yZF90YWJs ZV9jb21wYXJlKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIHNpemVfdCBzaXplLAog CVR1cGxlRGVzYwl0MjsKIAogCWlmIChrMS0+c2hhcmVkKQotCQl0MSA9IChUdXBsZURlc2Mp IGRzYV9nZXRfYWRkcmVzcyhhcmVhLCBrMS0+dS5zaGFyZWRfdHVwZGVzYyk7CisJCXQxID0g KFR1cGxlRGVzYykgZHNhX2dldF9hZGRyZXNzKGFyZWEsIGsxLT5zaGFyZWRfdHVwZGVzYyk7 CiAJZWxzZQotCQl0MSA9IGsxLT51LmxvY2FsX3R1cGRlc2M7CisJCXQxID0gazEtPmxvY2Fs X3R1cGRlc2M7CiAKIAlpZiAoazItPnNoYXJlZCkKLQkJdDIgPSAoVHVwbGVEZXNjKSBkc2Ff Z2V0X2FkZHJlc3MoYXJlYSwgazItPnUuc2hhcmVkX3R1cGRlc2MpOworCQl0MiA9IChUdXBs ZURlc2MpIGRzYV9nZXRfYWRkcmVzcyhhcmVhLCBrMi0+c2hhcmVkX3R1cGRlc2MpOwogCWVs c2UKLQkJdDIgPSBrMi0+dS5sb2NhbF90dXBkZXNjOworCQl0MiA9IGsyLT5sb2NhbF90dXBk ZXNjOwogCiAJcmV0dXJuIGVxdWFsUm93VHlwZXModDEsIHQyKSA/IDAgOiAxOwogfQpAQCAt MjY0LDkgKzI2NCw5IEBAIHNoYXJlZF9yZWNvcmRfdGFibGVfaGFzaChjb25zdCB2b2lkICph LCBzaXplX3Qgc2l6ZSwgdm9pZCAqYXJnKQogCVR1cGxlRGVzYwl0OwogCiAJaWYgKGstPnNo YXJlZCkKLQkJdCA9IChUdXBsZURlc2MpIGRzYV9nZXRfYWRkcmVzcyhhcmVhLCBrLT51LnNo YXJlZF90dXBkZXNjKTsKKwkJdCA9IChUdXBsZURlc2MpIGRzYV9nZXRfYWRkcmVzcyhhcmVh LCBrLT5zaGFyZWRfdHVwZGVzYyk7CiAJZWxzZQotCQl0ID0gay0+dS5sb2NhbF90dXBkZXNj OworCQl0ID0gay0+bG9jYWxfdHVwZGVzYzsKIAogCXJldHVybiBoYXNoUm93VHlwZSh0KTsK IH0KQEAgLTIyNTYsMTQgKzIyNTYsMTQgQEAgU2hhcmVkUmVjb3JkVHlwbW9kUmVnaXN0cnlJ bml0KFNoYXJlZFJlY29yZFR5cG1vZFJlZ2lzdHJ5ICpyZWdpc3RyeSwKIAogCQkvKiBJbnNl cnQgaW50byB0aGUgcmVjb3JkIHRhYmxlLiAqLwogCQlyZWNvcmRfdGFibGVfa2V5LnNoYXJl ZCA9IGZhbHNlOwotCQlyZWNvcmRfdGFibGVfa2V5LnUubG9jYWxfdHVwZGVzYyA9IHR1cGRl c2M7CisJCXJlY29yZF90YWJsZV9rZXkubG9jYWxfdHVwZGVzYyA9IHR1cGRlc2M7CiAJCXJl Y29yZF90YWJsZV9lbnRyeSA9IGRzaGFzaF9maW5kX29yX2luc2VydChyZWNvcmRfdGFibGUs CiAJCQkJCQkJCQkJCQkgICAmcmVjb3JkX3RhYmxlX2tleSwKIAkJCQkJCQkJCQkJCSAgICZm b3VuZCk7CiAJCWlmICghZm91bmQpCiAJCXsKIAkJCXJlY29yZF90YWJsZV9lbnRyeS0+a2V5 LnNoYXJlZCA9IHRydWU7Ci0JCQlyZWNvcmRfdGFibGVfZW50cnktPmtleS51LnNoYXJlZF90 dXBkZXNjID0gc2hhcmVkX2RwOworCQkJcmVjb3JkX3RhYmxlX2VudHJ5LT5rZXkuc2hhcmVk X3R1cGRlc2MgPSBzaGFyZWRfZHA7CiAJCX0KIAkJZHNoYXNoX3JlbGVhc2VfbG9jayhyZWNv cmRfdGFibGUsIHJlY29yZF90YWJsZV9lbnRyeSk7CiAJfQpAQCAtMjk1NSw3ICsyOTU1LDcg QEAgZmluZF9vcl9tYWtlX21hdGNoaW5nX3NoYXJlZF90dXBsZWRlc2MoVHVwbGVEZXNjIHR1 cGRlc2MpCiAKIAkvKiBUcnkgdG8gZmluZCBhIG1hdGNoaW5nIHR1cGxlIGRlc2NyaXB0b3Ig aW4gdGhlIHJlY29yZCB0YWJsZS4gKi8KIAlrZXkuc2hhcmVkID0gZmFsc2U7Ci0Ja2V5LnUu bG9jYWxfdHVwZGVzYyA9IHR1cGRlc2M7CisJa2V5LmxvY2FsX3R1cGRlc2MgPSB0dXBkZXNj OwogCXJlY29yZF90YWJsZV9lbnRyeSA9IChTaGFyZWRSZWNvcmRUYWJsZUVudHJ5ICopCiAJ CWRzaGFzaF9maW5kKEN1cnJlbnRTZXNzaW9uLT5zaGFyZWRfcmVjb3JkX3RhYmxlLCAma2V5 LCBmYWxzZSk7CiAJaWYgKHJlY29yZF90YWJsZV9lbnRyeSkKQEAgLTI5NjUsNyArMjk2NSw3 IEBAIGZpbmRfb3JfbWFrZV9tYXRjaGluZ19zaGFyZWRfdHVwbGVkZXNjKFR1cGxlRGVzYyB0 dXBkZXNjKQogCQkJCQkJCXJlY29yZF90YWJsZV9lbnRyeSk7CiAJCXJlc3VsdCA9IChUdXBs ZURlc2MpCiAJCQlkc2FfZ2V0X2FkZHJlc3MoQ3VycmVudFNlc3Npb24tPmFyZWEsCi0JCQkJ CQkJcmVjb3JkX3RhYmxlX2VudHJ5LT5rZXkudS5zaGFyZWRfdHVwZGVzYyk7CisJCQkJCQkJ cmVjb3JkX3RhYmxlX2VudHJ5LT5rZXkuc2hhcmVkX3R1cGRlc2MpOwogCQlBc3NlcnQocmVz dWx0LT50ZHJlZmNvdW50ID09IC0xKTsKIAogCQlyZXR1cm4gcmVzdWx0OwpAQCAtMzAyOCw3 ICszMDI4LDcgQEAgZmluZF9vcl9tYWtlX21hdGNoaW5nX3NoYXJlZF90dXBsZWRlc2MoVHVw bGVEZXNjIHR1cGRlc2MpCiAJCUFzc2VydChyZWNvcmRfdGFibGVfZW50cnktPmtleS5zaGFy ZWQpOwogCQlyZXN1bHQgPSAoVHVwbGVEZXNjKQogCQkJZHNhX2dldF9hZGRyZXNzKEN1cnJl bnRTZXNzaW9uLT5hcmVhLAotCQkJCQkJCXJlY29yZF90YWJsZV9lbnRyeS0+a2V5LnUuc2hh cmVkX3R1cGRlc2MpOworCQkJCQkJCXJlY29yZF90YWJsZV9lbnRyeS0+a2V5LnNoYXJlZF90 dXBkZXNjKTsKIAkJQXNzZXJ0KHJlc3VsdC0+dGRyZWZjb3VudCA9PSAtMSk7CiAKIAkJcmV0 dXJuIHJlc3VsdDsKQEAgLTMwMzYsNyArMzAzNiw3IEBAIGZpbmRfb3JfbWFrZV9tYXRjaGlu Z19zaGFyZWRfdHVwbGVkZXNjKFR1cGxlRGVzYyB0dXBkZXNjKQogCiAJLyogU3RvcmUgaXQg YW5kIHJldHVybiBpdC4gKi8KIAlyZWNvcmRfdGFibGVfZW50cnktPmtleS5zaGFyZWQgPSB0 cnVlOwotCXJlY29yZF90YWJsZV9lbnRyeS0+a2V5LnUuc2hhcmVkX3R1cGRlc2MgPSBzaGFy ZWRfZHA7CisJcmVjb3JkX3RhYmxlX2VudHJ5LT5rZXkuc2hhcmVkX3R1cGRlc2MgPSBzaGFy ZWRfZHA7CiAJZHNoYXNoX3JlbGVhc2VfbG9jayhDdXJyZW50U2Vzc2lvbi0+c2hhcmVkX3Jl Y29yZF90YWJsZSwKIAkJCQkJCXJlY29yZF90YWJsZV9lbnRyeSk7CiAJcmVzdWx0ID0gKFR1 cGxlRGVzYykKLS0gCjIuNTEuMAoK --------------XMilSvfSoQNhBmwudkXUWZaX Content-Type: text/plain; charset=UTF-8; name="0018-C11-anonymous-unions-tsrank.patch" Content-Disposition: attachment; filename="0018-C11-anonymous-unions-tsrank.patch" Content-Transfer-Encoding: base64 RnJvbSAwN2I5MjllYjhmZTNkOWNmZjU2YzQ3ZGE1NTE5MzI1OGQ0ZTNiM2U2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAyMiBTZXAgMjAyNSAxNDo0Nzo0OCArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMTgvMjNdIEMxMSBhbm9ueW1vdXMgdW5pb25zIFt0c3JhbmtdCgotLS0KIHNy Yy9iYWNrZW5kL3V0aWxzL2FkdC90c3JhbmsuYyB8IDM0ICsrKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAxNyBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdHNyYW5r LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvdHNyYW5rLmMKaW5kZXggZTg2M2FhNTg2NTMu LjEzNTQ1MjBhNWU5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdHNyYW5r LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzcmFuay5jCkBAIC01MTYsNyArNTE2 LDcgQEAgdHlwZWRlZiBzdHJ1Y3QKIAkJCVF1ZXJ5SXRlbSAgKml0ZW07CiAJCQlXb3JkRW50 cnkgICplbnRyeTsKIAkJfQkJCW1hcDsKLQl9CQkJZGF0YTsKKwl9OwogCVdvcmRFbnRyeVBv cyBwb3M7CiB9IERvY1JlcHJlc2VudGF0aW9uOwogCkBAIC01MzAsMTAgKzUzMCwxMCBAQCBj b21wYXJlRG9jUihjb25zdCB2b2lkICp2YSwgY29uc3Qgdm9pZCAqdmIpCiAJewogCQlpZiAo V0VQX0dFVFdFSUdIVChhLT5wb3MpID09IFdFUF9HRVRXRUlHSFQoYi0+cG9zKSkKIAkJewot CQkJaWYgKGEtPmRhdGEubWFwLmVudHJ5ID09IGItPmRhdGEubWFwLmVudHJ5KQorCQkJaWYg KGEtPm1hcC5lbnRyeSA9PSBiLT5tYXAuZW50cnkpCiAJCQkJcmV0dXJuIDA7CiAKLQkJCXJl dHVybiAoYS0+ZGF0YS5tYXAuZW50cnkgPiBiLT5kYXRhLm1hcC5lbnRyeSkgPyAxIDogLTE7 CisJCQlyZXR1cm4gKGEtPm1hcC5lbnRyeSA+IGItPm1hcC5lbnRyeSkgPyAxIDogLTE7CiAJ CX0KIAogCQlyZXR1cm4gKFdFUF9HRVRXRUlHSFQoYS0+cG9zKSA+IFdFUF9HRVRXRUlHSFQo Yi0+cG9zKSkgPyAxIDogLTE7CkBAIC02MTQsMTIgKzYxNCwxMiBAQCBmaWxsUXVlcnlSZXBy ZXNlbnRhdGlvbkRhdGEoUXVlcnlSZXByZXNlbnRhdGlvbiAqcXIsIERvY1JlcHJlc2VudGF0 aW9uICplbnRyeSkKIAlpbnQJCQlsYXN0UG9zOwogCVF1ZXJ5UmVwcmVzZW50YXRpb25PcGVy YW5kICpvcERhdGE7CiAKLQlmb3IgKGkgPSAwOyBpIDwgZW50cnktPmRhdGEucXVlcnkubml0 ZW07IGkrKykKKwlmb3IgKGkgPSAwOyBpIDwgZW50cnktPnF1ZXJ5Lm5pdGVtOyBpKyspCiAJ ewotCQlpZiAoZW50cnktPmRhdGEucXVlcnkuaXRlbXNbaV0tPnR5cGUgIT0gUUlfVkFMKQor CQlpZiAoZW50cnktPnF1ZXJ5Lml0ZW1zW2ldLT50eXBlICE9IFFJX1ZBTCkKIAkJCWNvbnRp bnVlOwogCi0JCW9wRGF0YSA9IFFSX0dFVF9PUEVSQU5EX0RBVEEocXIsIGVudHJ5LT5kYXRh LnF1ZXJ5Lml0ZW1zW2ldKTsKKwkJb3BEYXRhID0gUVJfR0VUX09QRVJBTkRfREFUQShxciwg ZW50cnktPnF1ZXJ5Lml0ZW1zW2ldKTsKIAogCQlvcERhdGEtPm9wZXJhbmRleGlzdHMgPSB0 cnVlOwogCkBAIC03OTAsOCArNzkwLDggQEAgZ2V0X2RvY3JlcChUU1ZlY3RvciB0eHQsIFF1 ZXJ5UmVwcmVzZW50YXRpb24gKnFyLCBpbnQgKmRvY2xlbikKIAkJCQkJY3Vyb3BlcmFuZC0+ d2VpZ2h0ICYgKDEgPDwgV0VQX0dFVFdFSUdIVChwb3N0W2pdKSkpCiAJCQkJewogCQkJCQlk b2NbY3VyXS5wb3MgPSBwb3N0W2pdOwotCQkJCQlkb2NbY3VyXS5kYXRhLm1hcC5lbnRyeSA9 IGVudHJ5OwotCQkJCQlkb2NbY3VyXS5kYXRhLm1hcC5pdGVtID0gKFF1ZXJ5SXRlbSAqKSBj dXJvcGVyYW5kOworCQkJCQlkb2NbY3VyXS5tYXAuZW50cnkgPSBlbnRyeTsKKwkJCQkJZG9j W2N1cl0ubWFwLml0ZW0gPSAoUXVlcnlJdGVtICopIGN1cm9wZXJhbmQ7CiAJCQkJCWN1cisr OwogCQkJCX0KIAkJCX0KQEAgLTgxNSwyNiArODE1LDI2IEBAIGdldF9kb2NyZXAoVFNWZWN0 b3IgdHh0LCBRdWVyeVJlcHJlc2VudGF0aW9uICpxciwgaW50ICpkb2NsZW4pCiAJCSAqIEpv aW4gUXVlcnlJdGVtIHBlciBXb3JkRW50cnkgYW5kIGl0cyBwb3NpdGlvbgogCQkgKi8KIAkJ c3RvcmFnZS5wb3MgPSBkb2MtPnBvczsKLQkJc3RvcmFnZS5kYXRhLnF1ZXJ5Lml0ZW1zID0g cGFsbG9jKHNpemVvZihRdWVyeUl0ZW0gKikgKiBxci0+cXVlcnktPnNpemUpOwotCQlzdG9y YWdlLmRhdGEucXVlcnkuaXRlbXNbMF0gPSBkb2MtPmRhdGEubWFwLml0ZW07Ci0JCXN0b3Jh Z2UuZGF0YS5xdWVyeS5uaXRlbSA9IDE7CisJCXN0b3JhZ2UucXVlcnkuaXRlbXMgPSBwYWxs b2Moc2l6ZW9mKFF1ZXJ5SXRlbSAqKSAqIHFyLT5xdWVyeS0+c2l6ZSk7CisJCXN0b3JhZ2Uu cXVlcnkuaXRlbXNbMF0gPSBkb2MtPm1hcC5pdGVtOworCQlzdG9yYWdlLnF1ZXJ5Lm5pdGVt ID0gMTsKIAogCQl3aGlsZSAocnB0ciAtIGRvYyA8IGN1cikKIAkJewogCQkJaWYgKHJwdHIt PnBvcyA9PSAocnB0ciAtIDEpLT5wb3MgJiYKLQkJCQlycHRyLT5kYXRhLm1hcC5lbnRyeSA9 PSAocnB0ciAtIDEpLT5kYXRhLm1hcC5lbnRyeSkKKwkJCQlycHRyLT5tYXAuZW50cnkgPT0g KHJwdHIgLSAxKS0+bWFwLmVudHJ5KQogCQkJewotCQkJCXN0b3JhZ2UuZGF0YS5xdWVyeS5p dGVtc1tzdG9yYWdlLmRhdGEucXVlcnkubml0ZW1dID0gcnB0ci0+ZGF0YS5tYXAuaXRlbTsK LQkJCQlzdG9yYWdlLmRhdGEucXVlcnkubml0ZW0rKzsKKwkJCQlzdG9yYWdlLnF1ZXJ5Lml0 ZW1zW3N0b3JhZ2UucXVlcnkubml0ZW1dID0gcnB0ci0+bWFwLml0ZW07CisJCQkJc3RvcmFn ZS5xdWVyeS5uaXRlbSsrOwogCQkJfQogCQkJZWxzZQogCQkJewogCQkJCSp3cHRyID0gc3Rv cmFnZTsKIAkJCQl3cHRyKys7CiAJCQkJc3RvcmFnZS5wb3MgPSBycHRyLT5wb3M7Ci0JCQkJ c3RvcmFnZS5kYXRhLnF1ZXJ5Lml0ZW1zID0gcGFsbG9jKHNpemVvZihRdWVyeUl0ZW0gKikg KiBxci0+cXVlcnktPnNpemUpOwotCQkJCXN0b3JhZ2UuZGF0YS5xdWVyeS5pdGVtc1swXSA9 IHJwdHItPmRhdGEubWFwLml0ZW07Ci0JCQkJc3RvcmFnZS5kYXRhLnF1ZXJ5Lm5pdGVtID0g MTsKKwkJCQlzdG9yYWdlLnF1ZXJ5Lml0ZW1zID0gcGFsbG9jKHNpemVvZihRdWVyeUl0ZW0g KikgKiBxci0+cXVlcnktPnNpemUpOworCQkJCXN0b3JhZ2UucXVlcnkuaXRlbXNbMF0gPSBy cHRyLT5tYXAuaXRlbTsKKwkJCQlzdG9yYWdlLnF1ZXJ5Lm5pdGVtID0gMTsKIAkJCX0KIAog CQkJcnB0cisrOwotLSAKMi41MS4wCgo= --------------XMilSvfSoQNhBmwudkXUWZaX Content-Type: text/plain; charset=UTF-8; name="0019-C11-anonymous-unions-fd.patch" Content-Disposition: attachment; filename="0019-C11-anonymous-unions-fd.patch" Content-Transfer-Encoding: base64 RnJvbSBlM2Q1MmEzODEyZTY2MDYwODExOGMyZDU4MjM2ZGQ4MTY0ZmM5YTZiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAyMiBTZXAgMjAyNSAxNDo0Nzo0OSArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMTkvMjNdIEMxMSBhbm9ueW1vdXMgdW5pb25zIFtmZF0KCi0tLQogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9maWxlL2ZkLmMgfCAzNCArKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9maWxlL2ZkLmMgYi9z cmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvZmQuYwppbmRleCBhNGVjNzk1OWYzMS4uYzIyMmE0 NDJhOGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9mZC5jCisrKyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9mZC5jCkBAIC0yNjEsNyArMjYxLDcgQEAgdHlw ZWRlZiBzdHJ1Y3QKIAkJRklMRQkgICAqZmlsZTsKIAkJRElSCQkgICAqZGlyOwogCQlpbnQJ CQlmZDsKLQl9CQkJZGVzYzsKKwl9OwogfSBBbGxvY2F0ZURlc2M7CiAKIHN0YXRpYyBpbnQJ bnVtQWxsb2NhdGVkRGVzY3MgPSAwOwpAQCAtMjY2MSwxMCArMjY2MSwxMCBAQCBBbGxvY2F0 ZUZpbGUoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqbW9kZSkKIAkJQWxsb2NhdGVE ZXNjICpkZXNjID0gJmFsbG9jYXRlZERlc2NzW251bUFsbG9jYXRlZERlc2NzXTsKIAogCQlk ZXNjLT5raW5kID0gQWxsb2NhdGVEZXNjRmlsZTsKLQkJZGVzYy0+ZGVzYy5maWxlID0gZmls ZTsKKwkJZGVzYy0+ZmlsZSA9IGZpbGU7CiAJCWRlc2MtPmNyZWF0ZV9zdWJpZCA9IEdldEN1 cnJlbnRTdWJUcmFuc2FjdGlvbklkKCk7CiAJCW51bUFsbG9jYXRlZERlc2NzKys7Ci0JCXJl dHVybiBkZXNjLT5kZXNjLmZpbGU7CisJCXJldHVybiBkZXNjLT5maWxlOwogCX0KIAogCWlm IChlcnJubyA9PSBFTUZJTEUgfHwgZXJybm8gPT0gRU5GSUxFKQpAQCAtMjcyMSw3ICsyNzIx LDcgQEAgT3BlblRyYW5zaWVudEZpbGVQZXJtKGNvbnN0IGNoYXIgKmZpbGVOYW1lLCBpbnQg ZmlsZUZsYWdzLCBtb2RlX3QgZmlsZU1vZGUpCiAJCUFsbG9jYXRlRGVzYyAqZGVzYyA9ICZh bGxvY2F0ZWREZXNjc1tudW1BbGxvY2F0ZWREZXNjc107CiAKIAkJZGVzYy0+a2luZCA9IEFs bG9jYXRlRGVzY1Jhd0ZEOwotCQlkZXNjLT5kZXNjLmZkID0gZmQ7CisJCWRlc2MtPmZkID0g ZmQ7CiAJCWRlc2MtPmNyZWF0ZV9zdWJpZCA9IEdldEN1cnJlbnRTdWJUcmFuc2FjdGlvbklk KCk7CiAJCW51bUFsbG9jYXRlZERlc2NzKys7CiAKQEAgLTI3NzIsMTAgKzI3NzIsMTAgQEAg T3BlblBpcGVTdHJlYW0oY29uc3QgY2hhciAqY29tbWFuZCwgY29uc3QgY2hhciAqbW9kZSkK IAkJQWxsb2NhdGVEZXNjICpkZXNjID0gJmFsbG9jYXRlZERlc2NzW251bUFsbG9jYXRlZERl c2NzXTsKIAogCQlkZXNjLT5raW5kID0gQWxsb2NhdGVEZXNjUGlwZTsKLQkJZGVzYy0+ZGVz Yy5maWxlID0gZmlsZTsKKwkJZGVzYy0+ZmlsZSA9IGZpbGU7CiAJCWRlc2MtPmNyZWF0ZV9z dWJpZCA9IEdldEN1cnJlbnRTdWJUcmFuc2FjdGlvbklkKCk7CiAJCW51bUFsbG9jYXRlZERl c2NzKys7Ci0JCXJldHVybiBkZXNjLT5kZXNjLmZpbGU7CisJCXJldHVybiBkZXNjLT5maWxl OwogCX0KIAogCWlmIChlcnJubyA9PSBFTUZJTEUgfHwgZXJybm8gPT0gRU5GSUxFKQpAQCAt MjgwNSwxNyArMjgwNSwxNyBAQCBGcmVlRGVzYyhBbGxvY2F0ZURlc2MgKmRlc2MpCiAJc3dp dGNoIChkZXNjLT5raW5kKQogCXsKIAkJY2FzZSBBbGxvY2F0ZURlc2NGaWxlOgotCQkJcmVz dWx0ID0gZmNsb3NlKGRlc2MtPmRlc2MuZmlsZSk7CisJCQlyZXN1bHQgPSBmY2xvc2UoZGVz Yy0+ZmlsZSk7CiAJCQlicmVhazsKIAkJY2FzZSBBbGxvY2F0ZURlc2NQaXBlOgotCQkJcmVz dWx0ID0gcGNsb3NlKGRlc2MtPmRlc2MuZmlsZSk7CisJCQlyZXN1bHQgPSBwY2xvc2UoZGVz Yy0+ZmlsZSk7CiAJCQlicmVhazsKIAkJY2FzZSBBbGxvY2F0ZURlc2NEaXI6Ci0JCQlyZXN1 bHQgPSBjbG9zZWRpcihkZXNjLT5kZXNjLmRpcik7CisJCQlyZXN1bHQgPSBjbG9zZWRpcihk ZXNjLT5kaXIpOwogCQkJYnJlYWs7CiAJCWNhc2UgQWxsb2NhdGVEZXNjUmF3RkQ6Ci0JCQlw Z2Fpb19jbG9zaW5nX2ZkKGRlc2MtPmRlc2MuZmQpOwotCQkJcmVzdWx0ID0gY2xvc2UoZGVz Yy0+ZGVzYy5mZCk7CisJCQlwZ2Fpb19jbG9zaW5nX2ZkKGRlc2MtPmZkKTsKKwkJCXJlc3Vs dCA9IGNsb3NlKGRlc2MtPmZkKTsKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhF UlJPUiwgIkFsbG9jYXRlRGVzYyBraW5kIG5vdCByZWNvZ25pemVkIik7CkBAIC0yODQ4LDcg KzI4NDgsNyBAQCBGcmVlRmlsZShGSUxFICpmaWxlKQogCXsKIAkJQWxsb2NhdGVEZXNjICpk ZXNjID0gJmFsbG9jYXRlZERlc2NzW2ldOwogCi0JCWlmIChkZXNjLT5raW5kID09IEFsbG9j YXRlRGVzY0ZpbGUgJiYgZGVzYy0+ZGVzYy5maWxlID09IGZpbGUpCisJCWlmIChkZXNjLT5r aW5kID09IEFsbG9jYXRlRGVzY0ZpbGUgJiYgZGVzYy0+ZmlsZSA9PSBmaWxlKQogCQkJcmV0 dXJuIEZyZWVEZXNjKGRlc2MpOwogCX0KIApAQCAtMjg3Niw3ICsyODc2LDcgQEAgQ2xvc2VU cmFuc2llbnRGaWxlKGludCBmZCkKIAl7CiAJCUFsbG9jYXRlRGVzYyAqZGVzYyA9ICZhbGxv Y2F0ZWREZXNjc1tpXTsKIAotCQlpZiAoZGVzYy0+a2luZCA9PSBBbGxvY2F0ZURlc2NSYXdG RCAmJiBkZXNjLT5kZXNjLmZkID09IGZkKQorCQlpZiAoZGVzYy0+a2luZCA9PSBBbGxvY2F0 ZURlc2NSYXdGRCAmJiBkZXNjLT5mZCA9PSBmZCkKIAkJCXJldHVybiBGcmVlRGVzYyhkZXNj KTsKIAl9CiAKQEAgLTI5MjQsMTAgKzI5MjQsMTAgQEAgQWxsb2NhdGVEaXIoY29uc3QgY2hh ciAqZGlybmFtZSkKIAkJQWxsb2NhdGVEZXNjICpkZXNjID0gJmFsbG9jYXRlZERlc2NzW251 bUFsbG9jYXRlZERlc2NzXTsKIAogCQlkZXNjLT5raW5kID0gQWxsb2NhdGVEZXNjRGlyOwot CQlkZXNjLT5kZXNjLmRpciA9IGRpcjsKKwkJZGVzYy0+ZGlyID0gZGlyOwogCQlkZXNjLT5j cmVhdGVfc3ViaWQgPSBHZXRDdXJyZW50U3ViVHJhbnNhY3Rpb25JZCgpOwogCQludW1BbGxv Y2F0ZWREZXNjcysrOwotCQlyZXR1cm4gZGVzYy0+ZGVzYy5kaXI7CisJCXJldHVybiBkZXNj LT5kaXI7CiAJfQogCiAJaWYgKGVycm5vID09IEVNRklMRSB8fCBlcnJubyA9PSBFTkZJTEUp CkBAIC0zMDM0LDcgKzMwMzQsNyBAQCBGcmVlRGlyKERJUiAqZGlyKQogCXsKIAkJQWxsb2Nh dGVEZXNjICpkZXNjID0gJmFsbG9jYXRlZERlc2NzW2ldOwogCi0JCWlmIChkZXNjLT5raW5k ID09IEFsbG9jYXRlRGVzY0RpciAmJiBkZXNjLT5kZXNjLmRpciA9PSBkaXIpCisJCWlmIChk ZXNjLT5raW5kID09IEFsbG9jYXRlRGVzY0RpciAmJiBkZXNjLT5kaXIgPT0gZGlyKQogCQkJ cmV0dXJuIEZyZWVEZXNjKGRlc2MpOwogCX0KIApAQCAtMzA2MCw3ICszMDYwLDcgQEAgQ2xv c2VQaXBlU3RyZWFtKEZJTEUgKmZpbGUpCiAJewogCQlBbGxvY2F0ZURlc2MgKmRlc2MgPSAm YWxsb2NhdGVkRGVzY3NbaV07CiAKLQkJaWYgKGRlc2MtPmtpbmQgPT0gQWxsb2NhdGVEZXNj UGlwZSAmJiBkZXNjLT5kZXNjLmZpbGUgPT0gZmlsZSkKKwkJaWYgKGRlc2MtPmtpbmQgPT0g QWxsb2NhdGVEZXNjUGlwZSAmJiBkZXNjLT5maWxlID09IGZpbGUpCiAJCQlyZXR1cm4gRnJl ZURlc2MoZGVzYyk7CiAJfQogCi0tIAoyLjUxLjAKCg== --------------XMilSvfSoQNhBmwudkXUWZaX Content-Type: text/plain; charset=UTF-8; name="0020-C11-anonymous-unions-HeapTupleFields.patch" Content-Disposition: attachment; filename="0020-C11-anonymous-unions-HeapTupleFields.patch" Content-Transfer-Encoding: base64 RnJvbSA4MzRhMTcxNTE2ZWY5NTdmNzdlZGI0MTgwYjVjZDdhZjVlYWRhNjk4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAyMiBTZXAgMjAyNSAxNDo0Nzo0OSArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMjAvMjNdIEMxMSBhbm9ueW1vdXMgdW5pb25zIFtIZWFwVHVwbGVGaWVsZHNd CgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgfCAgMiArLQog c3JjL2luY2x1ZGUvYWNjZXNzL2h0dXBfZGV0YWlscy5oICAgICB8IDEyICsrKysrKy0tLS0t LQogMiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKaW5kZXggY2Y4NDMyNzc5Mzgu LmY1MWFmNDU0Mjg0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW1feGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMK QEAgLTEzMDEsNyArMTMwMSw3IEBAIGhlYXBfbWFzayhjaGFyICpwYWdlZGF0YSwgQmxvY2tO dW1iZXIgYmxrbm8pCiAJCQkgKiBEdXJpbmcgcmVwbGF5LCB3ZSBzZXQgQ29tbWFuZCBJZCB0 byBGaXJzdENvbW1hbmRJZC4gSGVuY2UsIG1hc2sKIAkJCSAqIGl0LiBTZWUgaGVhcF94bG9n X2luc2VydCgpIGZvciBkZXRhaWxzLgogCQkJICovCi0JCQlwYWdlX2h0dXAtPnRfY2hvaWNl LnRfaGVhcC50X2ZpZWxkMy50X2NpZCA9IE1BU0tfTUFSS0VSOworCQkJcGFnZV9odHVwLT50 X2Nob2ljZS50X2hlYXAudF9jaWQgPSBNQVNLX01BUktFUjsKIAogCQkJLyoKIAkJCSAqIEZv ciBhIHNwZWN1bGF0aXZlIHR1cGxlLCBoZWFwX2luc2VydCgpIGRvZXMgbm90IHNldCBjdGlk IGluIHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2h0dXBfZGV0YWlscy5o IGIvc3JjL2luY2x1ZGUvYWNjZXNzL2h0dXBfZGV0YWlscy5oCmluZGV4IGZhNDUyNWUzZjU4 Li40YWVhMmQ2NThjNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2h0dXBfZGV0 YWlscy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9odHVwX2RldGFpbHMuaApAQCAtMTI4 LDcgKzEyOCw3IEBAIHR5cGVkZWYgc3RydWN0IEhlYXBUdXBsZUZpZWxkcwogCXsKIAkJQ29t bWFuZElkCXRfY2lkOwkJLyogaW5zZXJ0aW5nIG9yIGRlbGV0aW5nIGNvbW1hbmQgSUQsIG9y IGJvdGggKi8KIAkJVHJhbnNhY3Rpb25JZCB0X3h2YWM7CS8qIG9sZC1zdHlsZSBWQUNVVU0g RlVMTCB4YWN0IElEICovCi0JfQkJCXRfZmllbGQzOworCX07CiB9IEhlYXBUdXBsZUZpZWxk czsKIAogdHlwZWRlZiBzdHJ1Y3QgRGF0dW1UdXBsZUZpZWxkcwpAQCAtNDE5LDcgKzQxOSw3 IEBAIEhlYXBUdXBsZUhlYWRlckdldFVwZGF0ZVhpZChjb25zdCBIZWFwVHVwbGVIZWFkZXJE YXRhICp0dXApCiBzdGF0aWMgaW5saW5lIENvbW1hbmRJZAogSGVhcFR1cGxlSGVhZGVyR2V0 UmF3Q29tbWFuZElkKGNvbnN0IEhlYXBUdXBsZUhlYWRlckRhdGEgKnR1cCkKIHsKLQlyZXR1 cm4gdHVwLT50X2Nob2ljZS50X2hlYXAudF9maWVsZDMudF9jaWQ7CisJcmV0dXJuIHR1cC0+ dF9jaG9pY2UudF9oZWFwLnRfY2lkOwogfQogCiAvKiBTZXRDbWluIGlzIHJlYXNvbmFibHkg c2ltcGxlIHNpbmNlIHdlIG5ldmVyIG5lZWQgYSBjb21ibyBDSUQgKi8KQEAgLTQyNyw3ICs0 MjcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQKIEhlYXBUdXBsZUhlYWRlclNldENtaW4oSGVh cFR1cGxlSGVhZGVyRGF0YSAqdHVwLCBDb21tYW5kSWQgY2lkKQogewogCUFzc2VydCghKHR1 cC0+dF9pbmZvbWFzayAmIEhFQVBfTU9WRUQpKTsKLQl0dXAtPnRfY2hvaWNlLnRfaGVhcC50 X2ZpZWxkMy50X2NpZCA9IGNpZDsKKwl0dXAtPnRfY2hvaWNlLnRfaGVhcC50X2NpZCA9IGNp ZDsKIAl0dXAtPnRfaW5mb21hc2sgJj0gfkhFQVBfQ09NQk9DSUQ7CiB9CiAKQEAgLTQzNiw3 ICs0MzYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQKIEhlYXBUdXBsZUhlYWRlclNldENtYXgo SGVhcFR1cGxlSGVhZGVyRGF0YSAqdHVwLCBDb21tYW5kSWQgY2lkLCBib29sIGlzY29tYm8p CiB7CiAJQXNzZXJ0KCEoKHR1cCktPnRfaW5mb21hc2sgJiBIRUFQX01PVkVEKSk7Ci0JdHVw LT50X2Nob2ljZS50X2hlYXAudF9maWVsZDMudF9jaWQgPSBjaWQ7CisJdHVwLT50X2Nob2lj ZS50X2hlYXAudF9jaWQgPSBjaWQ7CiAJaWYgKGlzY29tYm8pCiAJCXR1cC0+dF9pbmZvbWFz ayB8PSBIRUFQX0NPTUJPQ0lEOwogCWVsc2UKQEAgLTQ0Nyw3ICs0NDcsNyBAQCBzdGF0aWMg aW5saW5lIFRyYW5zYWN0aW9uSWQKIEhlYXBUdXBsZUhlYWRlckdldFh2YWMoY29uc3QgSGVh cFR1cGxlSGVhZGVyRGF0YSAqdHVwKQogewogCWlmICh0dXAtPnRfaW5mb21hc2sgJiBIRUFQ X01PVkVEKQotCQlyZXR1cm4gdHVwLT50X2Nob2ljZS50X2hlYXAudF9maWVsZDMudF94dmFj OworCQlyZXR1cm4gdHVwLT50X2Nob2ljZS50X2hlYXAudF94dmFjOwogCWVsc2UKIAkJcmV0 dXJuIEludmFsaWRUcmFuc2FjdGlvbklkOwogfQpAQCAtNDU2LDcgKzQ1Niw3IEBAIHN0YXRp YyBpbmxpbmUgdm9pZAogSGVhcFR1cGxlSGVhZGVyU2V0WHZhYyhIZWFwVHVwbGVIZWFkZXJE YXRhICp0dXAsIFRyYW5zYWN0aW9uSWQgeGlkKQogewogCUFzc2VydCh0dXAtPnRfaW5mb21h c2sgJiBIRUFQX01PVkVEKTsKLQl0dXAtPnRfY2hvaWNlLnRfaGVhcC50X2ZpZWxkMy50X3h2 YWMgPSB4aWQ7CisJdHVwLT50X2Nob2ljZS50X2hlYXAudF94dmFjID0geGlkOwogfQogCiBT dGF0aWNBc3NlcnREZWNsKE1heE9mZnNldE51bWJlciA8IFNwZWNUb2tlbk9mZnNldE51bWJl ciwKLS0gCjIuNTEuMAoK --------------XMilSvfSoQNhBmwudkXUWZaX Content-Type: text/plain; charset=UTF-8; name="0021-C11-anonymous-unions-testint128.patch" Content-Disposition: attachment; filename="0021-C11-anonymous-unions-testint128.patch" Content-Transfer-Encoding: base64 RnJvbSBlYTBiM2I1YTYyNDJiM2U1NjM0MTY4MGEyYTMzM2Y5NDRlNmMxOTY3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAyMiBTZXAgMjAyNSAxNDo0Nzo0OSArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMjEvMjNdIEMxMSBhbm9ueW1vdXMgdW5pb25zIFt0ZXN0aW50MTI4XQoKLS0t CiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfaW50MTI4L3Rlc3RfaW50MTI4LmMgfCAxMDggKysr KysrKysrKy0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNTQgaW5zZXJ0aW9ucygrKSwg NTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2lu dDEyOC90ZXN0X2ludDEyOC5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2ludDEyOC90ZXN0 X2ludDEyOC5jCmluZGV4IGM5YzE3YTczYTRlLi5iNjA1M2VmYWYyNCAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2ludDEyOC90ZXN0X2ludDEyOC5jCisrKyBiL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9pbnQxMjgvdGVzdF9pbnQxMjguYwpAQCAtNTAsNyArNTAsNyBA QCB0eXBlZGVmIHVuaW9uCiAJCXVpbnQ2NAkJbG87CiAJCWludDY0CQloaTsKICNlbmRpZgot CX0JCQlobDsKKwl9OwogfQkJCXRlc3QxMjg7CiAKICNkZWZpbmUgSU5UMTI4X0hFWF9GT1JN QVQJIiUwMTYiIFBSSXg2NCAiJTAxNiIgUFJJeDY0CkBAIC0xMDIsMTQwICsxMDIsMTQwIEBA IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQlpbnQzMgkJcjI7CiAKIAkJLyogY2hl Y2sgdW5zaWduZWQgYWRkaXRpb24gKi8KLQkJdDEuaGwuaGkgPSB4OwotCQl0MS5obC5sbyA9 IHk7CisJCXQxLmhpID0geDsKKwkJdDEubG8gPSB5OwogCQl0MiA9IHQxOwogCQl0MS5pMTI4 ICs9IChpbnQxMjgpICh1aW50NjQpIHo7CiAJCWludDEyOF9hZGRfdWludDY0KCZ0Mi5JMTI4 LCAodWludDY0KSB6KTsKIAotCQlpZiAodDEuaGwuaGkgIT0gdDIuaGwuaGkgfHwgdDEuaGwu bG8gIT0gdDIuaGwubG8pCisJCWlmICh0MS5oaSAhPSB0Mi5oaSB8fCB0MS5sbyAhPSB0Mi5s bykKIAkJewogCQkJcHJpbnRmKElOVDEyOF9IRVhfRk9STUFUICIgKyB1bnNpZ25lZCAlMDE2 IiBQUkl4NjQgIlxuIiwgeCwgeSwgeik7Ci0JCQlwcmludGYoIm5hdGl2ZSA9ICIgSU5UMTI4 X0hFWF9GT1JNQVQgIlxuIiwgdDEuaGwuaGksIHQxLmhsLmxvKTsKLQkJCXByaW50ZigicmVz dWx0ID0gIiBJTlQxMjhfSEVYX0ZPUk1BVCAiXG4iLCB0Mi5obC5oaSwgdDIuaGwubG8pOwor CQkJcHJpbnRmKCJuYXRpdmUgPSAiIElOVDEyOF9IRVhfRk9STUFUICJcbiIsIHQxLmhpLCB0 MS5sbyk7CisJCQlwcmludGYoInJlc3VsdCA9ICIgSU5UMTI4X0hFWF9GT1JNQVQgIlxuIiwg dDIuaGksIHQyLmxvKTsKIAkJCXJldHVybiAxOwogCQl9CiAKIAkJLyogY2hlY2sgc2lnbmVk IGFkZGl0aW9uICovCi0JCXQxLmhsLmhpID0geDsKLQkJdDEuaGwubG8gPSB5OworCQl0MS5o aSA9IHg7CisJCXQxLmxvID0geTsKIAkJdDIgPSB0MTsKIAkJdDEuaTEyOCArPSAoaW50MTI4 KSB6OwogCQlpbnQxMjhfYWRkX2ludDY0KCZ0Mi5JMTI4LCB6KTsKIAotCQlpZiAodDEuaGwu aGkgIT0gdDIuaGwuaGkgfHwgdDEuaGwubG8gIT0gdDIuaGwubG8pCisJCWlmICh0MS5oaSAh PSB0Mi5oaSB8fCB0MS5sbyAhPSB0Mi5sbykKIAkJewogCQkJcHJpbnRmKElOVDEyOF9IRVhf Rk9STUFUICIgKyBzaWduZWQgJTAxNiIgUFJJeDY0ICJcbiIsIHgsIHksIHopOwotCQkJcHJp bnRmKCJuYXRpdmUgPSAiIElOVDEyOF9IRVhfRk9STUFUICJcbiIsIHQxLmhsLmhpLCB0MS5o bC5sbyk7Ci0JCQlwcmludGYoInJlc3VsdCA9ICIgSU5UMTI4X0hFWF9GT1JNQVQgIlxuIiwg dDIuaGwuaGksIHQyLmhsLmxvKTsKKwkJCXByaW50ZigibmF0aXZlID0gIiBJTlQxMjhfSEVY X0ZPUk1BVCAiXG4iLCB0MS5oaSwgdDEubG8pOworCQkJcHJpbnRmKCJyZXN1bHQgPSAiIElO VDEyOF9IRVhfRk9STUFUICJcbiIsIHQyLmhpLCB0Mi5sbyk7CiAJCQlyZXR1cm4gMTsKIAkJ fQogCiAJCS8qIGNoZWNrIDEyOC1iaXQgc2lnbmVkIGFkZGl0aW9uICovCi0JCXQxLmhsLmhp ID0geDsKLQkJdDEuaGwubG8gPSB5OworCQl0MS5oaSA9IHg7CisJCXQxLmxvID0geTsKIAkJ dDIgPSB0MTsKLQkJdDMuaGwuaGkgPSB6OwotCQl0My5obC5sbyA9IHc7CisJCXQzLmhpID0g ejsKKwkJdDMubG8gPSB3OwogCQl0MS5pMTI4ICs9IHQzLmkxMjg7CiAJCWludDEyOF9hZGRf aW50MTI4KCZ0Mi5JMTI4LCB0My5JMTI4KTsKIAotCQlpZiAodDEuaGwuaGkgIT0gdDIuaGwu aGkgfHwgdDEuaGwubG8gIT0gdDIuaGwubG8pCisJCWlmICh0MS5oaSAhPSB0Mi5oaSB8fCB0 MS5sbyAhPSB0Mi5sbykKIAkJewogCQkJcHJpbnRmKElOVDEyOF9IRVhfRk9STUFUICIgKyAi IElOVDEyOF9IRVhfRk9STUFUICJcbiIsIHgsIHksIHosIHcpOwotCQkJcHJpbnRmKCJuYXRp dmUgPSAiIElOVDEyOF9IRVhfRk9STUFUICJcbiIsIHQxLmhsLmhpLCB0MS5obC5sbyk7Ci0J CQlwcmludGYoInJlc3VsdCA9ICIgSU5UMTI4X0hFWF9GT1JNQVQgIlxuIiwgdDIuaGwuaGks IHQyLmhsLmxvKTsKKwkJCXByaW50ZigibmF0aXZlID0gIiBJTlQxMjhfSEVYX0ZPUk1BVCAi XG4iLCB0MS5oaSwgdDEubG8pOworCQkJcHJpbnRmKCJyZXN1bHQgPSAiIElOVDEyOF9IRVhf Rk9STUFUICJcbiIsIHQyLmhpLCB0Mi5sbyk7CiAJCQlyZXR1cm4gMTsKIAkJfQogCiAJCS8q IGNoZWNrIHVuc2lnbmVkIHN1YnRyYWN0aW9uICovCi0JCXQxLmhsLmhpID0geDsKLQkJdDEu aGwubG8gPSB5OworCQl0MS5oaSA9IHg7CisJCXQxLmxvID0geTsKIAkJdDIgPSB0MTsKIAkJ dDEuaTEyOCAtPSAoaW50MTI4KSAodWludDY0KSB6OwogCQlpbnQxMjhfc3ViX3VpbnQ2NCgm dDIuSTEyOCwgKHVpbnQ2NCkgeik7CiAKLQkJaWYgKHQxLmhsLmhpICE9IHQyLmhsLmhpIHx8 IHQxLmhsLmxvICE9IHQyLmhsLmxvKQorCQlpZiAodDEuaGkgIT0gdDIuaGkgfHwgdDEubG8g IT0gdDIubG8pCiAJCXsKIAkJCXByaW50ZihJTlQxMjhfSEVYX0ZPUk1BVCAiIC0gdW5zaWdu ZWQgJTAxNiIgUFJJeDY0ICJcbiIsIHgsIHksIHopOwotCQkJcHJpbnRmKCJuYXRpdmUgPSAi IElOVDEyOF9IRVhfRk9STUFUICJcbiIsIHQxLmhsLmhpLCB0MS5obC5sbyk7Ci0JCQlwcmlu dGYoInJlc3VsdCA9ICIgSU5UMTI4X0hFWF9GT1JNQVQgIlxuIiwgdDIuaGwuaGksIHQyLmhs LmxvKTsKKwkJCXByaW50ZigibmF0aXZlID0gIiBJTlQxMjhfSEVYX0ZPUk1BVCAiXG4iLCB0 MS5oaSwgdDEubG8pOworCQkJcHJpbnRmKCJyZXN1bHQgPSAiIElOVDEyOF9IRVhfRk9STUFU ICJcbiIsIHQyLmhpLCB0Mi5sbyk7CiAJCQlyZXR1cm4gMTsKIAkJfQogCiAJCS8qIGNoZWNr IHNpZ25lZCBzdWJ0cmFjdGlvbiAqLwotCQl0MS5obC5oaSA9IHg7Ci0JCXQxLmhsLmxvID0g eTsKKwkJdDEuaGkgPSB4OworCQl0MS5sbyA9IHk7CiAJCXQyID0gdDE7CiAJCXQxLmkxMjgg LT0gKGludDEyOCkgejsKIAkJaW50MTI4X3N1Yl9pbnQ2NCgmdDIuSTEyOCwgeik7CiAKLQkJ aWYgKHQxLmhsLmhpICE9IHQyLmhsLmhpIHx8IHQxLmhsLmxvICE9IHQyLmhsLmxvKQorCQlp ZiAodDEuaGkgIT0gdDIuaGkgfHwgdDEubG8gIT0gdDIubG8pCiAJCXsKIAkJCXByaW50ZihJ TlQxMjhfSEVYX0ZPUk1BVCAiIC0gc2lnbmVkICUwMTYiIFBSSXg2NCAiXG4iLCB4LCB5LCB6 KTsKLQkJCXByaW50ZigibmF0aXZlID0gIiBJTlQxMjhfSEVYX0ZPUk1BVCAiXG4iLCB0MS5o bC5oaSwgdDEuaGwubG8pOwotCQkJcHJpbnRmKCJyZXN1bHQgPSAiIElOVDEyOF9IRVhfRk9S TUFUICJcbiIsIHQyLmhsLmhpLCB0Mi5obC5sbyk7CisJCQlwcmludGYoIm5hdGl2ZSA9ICIg SU5UMTI4X0hFWF9GT1JNQVQgIlxuIiwgdDEuaGksIHQxLmxvKTsKKwkJCXByaW50ZigicmVz dWx0ID0gIiBJTlQxMjhfSEVYX0ZPUk1BVCAiXG4iLCB0Mi5oaSwgdDIubG8pOwogCQkJcmV0 dXJuIDE7CiAJCX0KIAogCQkvKiBjaGVjayA2NHg2NC1iaXQgbXVsdGlwbHktYWRkICovCi0J CXQxLmhsLmhpID0geDsKLQkJdDEuaGwubG8gPSB5OworCQl0MS5oaSA9IHg7CisJCXQxLmxv ID0geTsKIAkJdDIgPSB0MTsKIAkJdDEuaTEyOCArPSAoaW50MTI4KSB6ICogKGludDEyOCkg dzsKIAkJaW50MTI4X2FkZF9pbnQ2NF9tdWxfaW50NjQoJnQyLkkxMjgsIHosIHcpOwogCi0J CWlmICh0MS5obC5oaSAhPSB0Mi5obC5oaSB8fCB0MS5obC5sbyAhPSB0Mi5obC5sbykKKwkJ aWYgKHQxLmhpICE9IHQyLmhpIHx8IHQxLmxvICE9IHQyLmxvKQogCQl7CiAJCQlwcmludGYo SU5UMTI4X0hFWF9GT1JNQVQgIiArICUwMTYiIFBSSXg2NCAiICogJTAxNiIgUFJJeDY0ICJc biIsIHgsIHksIHosIHcpOwotCQkJcHJpbnRmKCJuYXRpdmUgPSAiIElOVDEyOF9IRVhfRk9S TUFUICJcbiIsIHQxLmhsLmhpLCB0MS5obC5sbyk7Ci0JCQlwcmludGYoInJlc3VsdCA9ICIg SU5UMTI4X0hFWF9GT1JNQVQgIlxuIiwgdDIuaGwuaGksIHQyLmhsLmxvKTsKKwkJCXByaW50 ZigibmF0aXZlID0gIiBJTlQxMjhfSEVYX0ZPUk1BVCAiXG4iLCB0MS5oaSwgdDEubG8pOwor CQkJcHJpbnRmKCJyZXN1bHQgPSAiIElOVDEyOF9IRVhfRk9STUFUICJcbiIsIHQyLmhpLCB0 Mi5sbyk7CiAJCQlyZXR1cm4gMTsKIAkJfQogCiAJCS8qIGNoZWNrIDY0eDY0LWJpdCBtdWx0 aXBseS1zdWJ0cmFjdCAqLwotCQl0MS5obC5oaSA9IHg7Ci0JCXQxLmhsLmxvID0geTsKKwkJ dDEuaGkgPSB4OworCQl0MS5sbyA9IHk7CiAJCXQyID0gdDE7CiAJCXQxLmkxMjggLT0gKGlu dDEyOCkgeiAqIChpbnQxMjgpIHc7CiAJCWludDEyOF9zdWJfaW50NjRfbXVsX2ludDY0KCZ0 Mi5JMTI4LCB6LCB3KTsKIAotCQlpZiAodDEuaGwuaGkgIT0gdDIuaGwuaGkgfHwgdDEuaGwu bG8gIT0gdDIuaGwubG8pCisJCWlmICh0MS5oaSAhPSB0Mi5oaSB8fCB0MS5sbyAhPSB0Mi5s bykKIAkJewogCQkJcHJpbnRmKElOVDEyOF9IRVhfRk9STUFUICIgLSAlMDE2IiBQUkl4NjQg IiAqICUwMTYiIFBSSXg2NCAiXG4iLCB4LCB5LCB6LCB3KTsKLQkJCXByaW50ZigibmF0aXZl ID0gIiBJTlQxMjhfSEVYX0ZPUk1BVCAiXG4iLCB0MS5obC5oaSwgdDEuaGwubG8pOwotCQkJ cHJpbnRmKCJyZXN1bHQgPSAiIElOVDEyOF9IRVhfRk9STUFUICJcbiIsIHQyLmhsLmhpLCB0 Mi5obC5sbyk7CisJCQlwcmludGYoIm5hdGl2ZSA9ICIgSU5UMTI4X0hFWF9GT1JNQVQgIlxu IiwgdDEuaGksIHQxLmxvKTsKKwkJCXByaW50ZigicmVzdWx0ID0gIiBJTlQxMjhfSEVYX0ZP Uk1BVCAiXG4iLCB0Mi5oaSwgdDIubG8pOwogCQkJcmV0dXJuIDE7CiAJCX0KIAogCQkvKiBj aGVjayAxMjgvMzItYml0IGRpdmlzaW9uICovCi0JCXQzLmhsLmhpID0geDsKLQkJdDMuaGwu bG8gPSB5OworCQl0My5oaSA9IHg7CisJCXQzLmxvID0geTsKIAkJdDEuaTEyOCA9IHQzLmkx MjggLyB6MzI7CiAJCXIxID0gKGludDMyKSAodDMuaTEyOCAlIHozMik7CiAJCXQyID0gdDM7 CiAJCWludDEyOF9kaXZfbW9kX2ludDMyKCZ0Mi5JMTI4LCB6MzIsICZyMik7CiAKLQkJaWYg KHQxLmhsLmhpICE9IHQyLmhsLmhpIHx8IHQxLmhsLmxvICE9IHQyLmhsLmxvKQorCQlpZiAo dDEuaGkgIT0gdDIuaGkgfHwgdDEubG8gIT0gdDIubG8pCiAJCXsKLQkJCXByaW50ZihJTlQx MjhfSEVYX0ZPUk1BVCAiIC8gc2lnbmVkICUwOFhcbiIsIHQzLmhsLmhpLCB0My5obC5sbywg ejMyKTsKLQkJCXByaW50ZigibmF0aXZlID0gIiBJTlQxMjhfSEVYX0ZPUk1BVCAiXG4iLCB0 MS5obC5oaSwgdDEuaGwubG8pOwotCQkJcHJpbnRmKCJyZXN1bHQgPSAiIElOVDEyOF9IRVhf Rk9STUFUICJcbiIsIHQyLmhsLmhpLCB0Mi5obC5sbyk7CisJCQlwcmludGYoSU5UMTI4X0hF WF9GT1JNQVQgIiAvIHNpZ25lZCAlMDhYXG4iLCB0My5oaSwgdDMubG8sIHozMik7CisJCQlw cmludGYoIm5hdGl2ZSA9ICIgSU5UMTI4X0hFWF9GT1JNQVQgIlxuIiwgdDEuaGksIHQxLmxv KTsKKwkJCXByaW50ZigicmVzdWx0ID0gIiBJTlQxMjhfSEVYX0ZPUk1BVCAiXG4iLCB0Mi5o aSwgdDIubG8pOwogCQkJcmV0dXJuIDE7CiAJCX0KIAkJaWYgKHIxICE9IHIyKQogCQl7Ci0J CQlwcmludGYoSU5UMTI4X0hFWF9GT1JNQVQgIiAlJSBzaWduZWQgJTA4WFxuIiwgdDMuaGwu aGksIHQzLmhsLmxvLCB6MzIpOworCQkJcHJpbnRmKElOVDEyOF9IRVhfRk9STUFUICIgJSUg c2lnbmVkICUwOFhcbiIsIHQzLmhpLCB0My5sbywgejMyKTsKIAkJCXByaW50ZigibmF0aXZl ID0gJTA4WFxuIiwgcjEpOwogCQkJcHJpbnRmKCJyZXN1bHQgPSAlMDhYXG4iLCByMik7CiAJ CQlyZXR1cm4gMTsKIAkJfQogCiAJCS8qIGNoZWNrIGNvbXBhcmlzb24gKi8KLQkJdDEuaGwu aGkgPSB4OwotCQl0MS5obC5sbyA9IHk7Ci0JCXQyLmhsLmhpID0gejsKLQkJdDIuaGwubG8g PSB3OworCQl0MS5oaSA9IHg7CisJCXQxLmxvID0geTsKKwkJdDIuaGkgPSB6OworCQl0Mi5s byA9IHc7CiAKIAkJaWYgKG15X2ludDEyOF9jb21wYXJlKHQxLmkxMjgsIHQyLmkxMjgpICE9 CiAJCQlpbnQxMjhfY29tcGFyZSh0MS5JMTI4LCB0Mi5JMTI4KSkKQEAgLTI0MywxMyArMjQz LDEzIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJcHJpbnRmKCJjb21wYXJp c29uIGZhaWx1cmU6ICVkIHZzICVkXG4iLAogCQkJCSAgIG15X2ludDEyOF9jb21wYXJlKHQx LmkxMjgsIHQyLmkxMjgpLAogCQkJCSAgIGludDEyOF9jb21wYXJlKHQxLkkxMjgsIHQyLkkx MjgpKTsKLQkJCXByaW50ZigiYXJnMSA9ICIgSU5UMTI4X0hFWF9GT1JNQVQgIlxuIiwgdDEu aGwuaGksIHQxLmhsLmxvKTsKLQkJCXByaW50ZigiYXJnMiA9ICIgSU5UMTI4X0hFWF9GT1JN QVQgIlxuIiwgdDIuaGwuaGksIHQyLmhsLmxvKTsKKwkJCXByaW50ZigiYXJnMSA9ICIgSU5U MTI4X0hFWF9GT1JNQVQgIlxuIiwgdDEuaGksIHQxLmxvKTsKKwkJCXByaW50ZigiYXJnMiA9 ICIgSU5UMTI4X0hFWF9GT1JNQVQgIlxuIiwgdDIuaGksIHQyLmxvKTsKIAkJCXJldHVybiAx OwogCQl9CiAKIAkJLyogY2hlY2sgY2FzZSB3aXRoIGlkZW50aWNhbCBoaSBwYXJ0czsgYWJv dmUgd2lsbCBoYXJkbHkgZXZlciBoaXQgaXQgKi8KLQkJdDIuaGwuaGkgPSB4OworCQl0Mi5o aSA9IHg7CiAKIAkJaWYgKG15X2ludDEyOF9jb21wYXJlKHQxLmkxMjgsIHQyLmkxMjgpICE9 CiAJCQlpbnQxMjhfY29tcGFyZSh0MS5JMTI4LCB0Mi5JMTI4KSkKQEAgLTI1Nyw4ICsyNTcs OCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCXByaW50ZigiY29tcGFyaXNv biBmYWlsdXJlOiAlZCB2cyAlZFxuIiwKIAkJCQkgICBteV9pbnQxMjhfY29tcGFyZSh0MS5p MTI4LCB0Mi5pMTI4KSwKIAkJCQkgICBpbnQxMjhfY29tcGFyZSh0MS5JMTI4LCB0Mi5JMTI4 KSk7Ci0JCQlwcmludGYoImFyZzEgPSAiIElOVDEyOF9IRVhfRk9STUFUICJcbiIsIHQxLmhs LmhpLCB0MS5obC5sbyk7Ci0JCQlwcmludGYoImFyZzIgPSAiIElOVDEyOF9IRVhfRk9STUFU ICJcbiIsIHQyLmhsLmhpLCB0Mi5obC5sbyk7CisJCQlwcmludGYoImFyZzEgPSAiIElOVDEy OF9IRVhfRk9STUFUICJcbiIsIHQxLmhpLCB0MS5sbyk7CisJCQlwcmludGYoImFyZzIgPSAi IElOVDEyOF9IRVhfRk9STUFUICJcbiIsIHQyLmhpLCB0Mi5sbyk7CiAJCQlyZXR1cm4gMTsK IAkJfQogCX0KLS0gCjIuNTEuMAoK --------------XMilSvfSoQNhBmwudkXUWZaX Content-Type: text/plain; charset=UTF-8; name="0022-C11-anonymous-unions-executor.patch" Content-Disposition: attachment; filename="0022-C11-anonymous-unions-executor.patch" Content-Transfer-Encoding: base64 RnJvbSBjMDRmMjA4NTEyNjYwMjBmMDZjMzEzYTEwMGRlMDVjNmRlZGJlY2EzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAyMiBTZXAgMjAyNSAxNDo0Nzo0OSArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMjIvMjNdIEMxMSBhbm9ueW1vdXMgdW5pb25zIFtleGVjdXRvcl0KCi0tLQog Y29udHJpYi9oc3RvcmUvaHN0b3JlX3N1YnMuYyAgICAgICAgICB8ICAgNCArLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYyAgICAgICB8IDY3MCArKysrKysrKysrKystLS0t LS0tLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jIHwgNjgw ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvYXJy YXlzdWJzLmMgICAgIHwgIDE0ICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJzdWJz LmMgICAgIHwgICA4ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oICAgICAg IHwgICAyICstCiBzcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5jICAgICAgICAgIHwgIDc4 ICstLQogNyBmaWxlcyBjaGFuZ2VkLCA3MjggaW5zZXJ0aW9ucygrKSwgNzI4IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvaHN0b3JlL2hzdG9yZV9zdWJzLmMgYi9jb250 cmliL2hzdG9yZS9oc3RvcmVfc3Vicy5jCmluZGV4IDNkMDNmNjZmYTBkLi44MzQyZDFjYTU1 OCAxMDA2NDQKLS0tIGEvY29udHJpYi9oc3RvcmUvaHN0b3JlX3N1YnMuYworKysgYi9jb250 cmliL2hzdG9yZS9oc3RvcmVfc3Vicy5jCkBAIC05NSw3ICs5NSw3IEBAIGhzdG9yZV9zdWJz Y3JpcHRfZmV0Y2goRXhwclN0YXRlICpzdGF0ZSwKIAkJCQkJICAgRXhwckV2YWxTdGVwICpv cCwKIAkJCQkJICAgRXhwckNvbnRleHQgKmVjb250ZXh0KQogewotCVN1YnNjcmlwdGluZ1Jl ZlN0YXRlICpzYnNyZWZzdGF0ZSA9IG9wLT5kLnNic3JlZi5zdGF0ZTsKKwlTdWJzY3JpcHRp bmdSZWZTdGF0ZSAqc2JzcmVmc3RhdGUgPSBvcC0+c2JzcmVmLnN0YXRlOwogCUhTdG9yZQkg ICAqaHM7CiAJdGV4dAkgICAqa2V5OwogCUhFbnRyeQkgICAqZW50cmllczsKQEAgLTE0NCw3 ICsxNDQsNyBAQCBoc3RvcmVfc3Vic2NyaXB0X2Fzc2lnbihFeHByU3RhdGUgKnN0YXRlLAog CQkJCQkJRXhwckV2YWxTdGVwICpvcCwKIAkJCQkJCUV4cHJDb250ZXh0ICplY29udGV4dCkK IHsKLQlTdWJzY3JpcHRpbmdSZWZTdGF0ZSAqc2JzcmVmc3RhdGUgPSBvcC0+ZC5zYnNyZWYu c3RhdGU7CisJU3Vic2NyaXB0aW5nUmVmU3RhdGUgKnNic3JlZnN0YXRlID0gb3AtPnNic3Jl Zi5zdGF0ZTsKIAl0ZXh0CSAgICprZXk7CiAJUGFpcnMJCXA7CiAJSFN0b3JlCSAgICpvdXQ7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwppbmRleCBmMTU2OTg3OWI1Mi4uYTM0OTBjYjNk OWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwpAQCAtMjcwLDcgKzI3MCw3IEBAIEV4 ZWNJbml0UXVhbChMaXN0ICpxdWFsLCBQbGFuU3RhdGUgKnBhcmVudCkKIAkJRXhlY0luaXRF eHByUmVjKG5vZGUsIHN0YXRlLCAmc3RhdGUtPnJlc3ZhbHVlLCAmc3RhdGUtPnJlc251bGwp OwogCiAJCS8qIHRoZW4gZW1pdCBFRU9QX1FVQUwgdG8gZGV0ZWN0IGlmIGl0J3MgZmFsc2Ug KG9yIG51bGwpICovCi0JCXNjcmF0Y2guZC5xdWFsZXhwci5qdW1wZG9uZSA9IC0xOworCQlz Y3JhdGNoLnF1YWxleHByLmp1bXBkb25lID0gLTE7CiAJCUV4cHJFdmFsUHVzaFN0ZXAoc3Rh dGUsICZzY3JhdGNoKTsKIAkJYWRqdXN0X2p1bXBzID0gbGFwcGVuZF9pbnQoYWRqdXN0X2p1 bXBzLAogCQkJCQkJCQkgICBzdGF0ZS0+c3RlcHNfbGVuIC0gMSk7CkBAIC0yODIsOCArMjgy LDggQEAgRXhlY0luaXRRdWFsKExpc3QgKnF1YWwsIFBsYW5TdGF0ZSAqcGFyZW50KQogCQlF eHByRXZhbFN0ZXAgKmFzID0gJnN0YXRlLT5zdGVwc1tqdW1wXTsKIAogCQlBc3NlcnQoYXMt Pm9wY29kZSA9PSBFRU9QX1FVQUwpOwotCQlBc3NlcnQoYXMtPmQucXVhbGV4cHIuanVtcGRv bmUgPT0gLTEpOwotCQlhcy0+ZC5xdWFsZXhwci5qdW1wZG9uZSA9IHN0YXRlLT5zdGVwc19s ZW47CisJCUFzc2VydChhcy0+cXVhbGV4cHIuanVtcGRvbmUgPT0gLTEpOworCQlhcy0+cXVh bGV4cHIuanVtcGRvbmUgPSBzdGF0ZS0+c3RlcHNfbGVuOwogCX0KIAogCS8qCkBAIC00NzMs OCArNDczLDggQEAgRXhlY0J1aWxkUHJvamVjdGlvbkluZm8oTGlzdCAqdGFyZ2V0TGlzdCwK IAkJCQkJYnJlYWs7CiAJCQl9CiAKLQkJCXNjcmF0Y2guZC5hc3NpZ25fdmFyLmF0dG51bSA9 IGF0dG51bSAtIDE7Ci0JCQlzY3JhdGNoLmQuYXNzaWduX3Zhci5yZXN1bHRudW0gPSB0bGUt PnJlc25vIC0gMTsKKwkJCXNjcmF0Y2guYXNzaWduX3Zhci5hdHRudW0gPSBhdHRudW0gLSAx OworCQkJc2NyYXRjaC5hc3NpZ25fdmFyLnJlc3VsdG51bSA9IHRsZS0+cmVzbm8gLSAxOwog CQkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgJnNjcmF0Y2gpOwogCQl9CiAJCWVsc2UKQEAg LTQ5OCw3ICs0OTgsNyBAQCBFeGVjQnVpbGRQcm9qZWN0aW9uSW5mbyhMaXN0ICp0YXJnZXRM aXN0LAogCQkJCXNjcmF0Y2gub3Bjb2RlID0gRUVPUF9BU1NJR05fVE1QX01BS0VfUk87CiAJ CQllbHNlCiAJCQkJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX0FTU0lHTl9UTVA7Ci0JCQlzY3Jh dGNoLmQuYXNzaWduX3RtcC5yZXN1bHRudW0gPSB0bGUtPnJlc25vIC0gMTsKKwkJCXNjcmF0 Y2guYXNzaWduX3RtcC5yZXN1bHRudW0gPSB0bGUtPnJlc25vIC0gMTsKIAkJCUV4cHJFdmFs UHVzaFN0ZXAoc3RhdGUsICZzY3JhdGNoKTsKIAkJfQogCX0KQEAgLTY5NiwxNSArNjk2LDE1 IEBAIEV4ZWNCdWlsZFVwZGF0ZVByb2plY3Rpb24oTGlzdCAqdGFyZ2V0TGlzdCwKIAkJCQkJ CQkmc3RhdGUtPnJlc3ZhbHVlLCAmc3RhdGUtPnJlc251bGwpOwogCQkJLyogTmVlZG4ndCB3 b3JyeSBhYm91dCByZWFkLW9ubHktbmVzcyBoZXJlLCBlaXRoZXIuICovCiAJCQlzY3JhdGNo Lm9wY29kZSA9IEVFT1BfQVNTSUdOX1RNUDsKLQkJCXNjcmF0Y2guZC5hc3NpZ25fdG1wLnJl c3VsdG51bSA9IHRhcmdldGF0dG51bSAtIDE7CisJCQlzY3JhdGNoLmFzc2lnbl90bXAucmVz dWx0bnVtID0gdGFyZ2V0YXR0bnVtIC0gMTsKIAkJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUs ICZzY3JhdGNoKTsKIAkJfQogCQllbHNlCiAJCXsKIAkJCS8qIEp1c3QgYXNzaWduIGZyb20g dGhlIG91dGVyIHR1cGxlLiAqLwogCQkJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX0FTU0lHTl9P VVRFUl9WQVI7Ci0JCQlzY3JhdGNoLmQuYXNzaWduX3Zhci5hdHRudW0gPSBvdXRlcmF0dG51 bTsKLQkJCXNjcmF0Y2guZC5hc3NpZ25fdmFyLnJlc3VsdG51bSA9IHRhcmdldGF0dG51bSAt IDE7CisJCQlzY3JhdGNoLmFzc2lnbl92YXIuYXR0bnVtID0gb3V0ZXJhdHRudW07CisJCQlz Y3JhdGNoLmFzc2lnbl92YXIucmVzdWx0bnVtID0gdGFyZ2V0YXR0bnVtIC0gMTsKIAkJCUV4 cHJFdmFsUHVzaFN0ZXAoc3RhdGUsICZzY3JhdGNoKTsKIAkJfQogCQlvdXRlcmF0dG51bSsr OwpAQCAtNzI0LDIwICs3MjQsMjAgQEAgRXhlY0J1aWxkVXBkYXRlUHJvamVjdGlvbihMaXN0 ICp0YXJnZXRMaXN0LAogCQkJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX0NPTlNUOwogCQkJc2Ny YXRjaC5yZXN2YWx1ZSA9ICZzdGF0ZS0+cmVzdmFsdWU7CiAJCQlzY3JhdGNoLnJlc251bGwg PSAmc3RhdGUtPnJlc251bGw7Ci0JCQlzY3JhdGNoLmQuY29uc3R2YWwudmFsdWUgPSAoRGF0 dW0pIDA7Ci0JCQlzY3JhdGNoLmQuY29uc3R2YWwuaXNudWxsID0gdHJ1ZTsKKwkJCXNjcmF0 Y2guY29uc3R2YWwudmFsdWUgPSAoRGF0dW0pIDA7CisJCQlzY3JhdGNoLmNvbnN0dmFsLmlz bnVsbCA9IHRydWU7CiAJCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCAmc2NyYXRjaCk7CiAJ CQkvKiAuLi4gdGhlbiBhc3NpZ24gaXQgdG8gdGhlIHJlc3VsdCBzbG90ICovCiAJCQlzY3Jh dGNoLm9wY29kZSA9IEVFT1BfQVNTSUdOX1RNUDsKLQkJCXNjcmF0Y2guZC5hc3NpZ25fdG1w LnJlc3VsdG51bSA9IGF0dG51bSAtIDE7CisJCQlzY3JhdGNoLmFzc2lnbl90bXAucmVzdWx0 bnVtID0gYXR0bnVtIC0gMTsKIAkJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsICZzY3JhdGNo KTsKIAkJfQogCQllbHNlIGlmICghYm1zX2lzX21lbWJlcihhdHRudW0sIGFzc2lnbmVkQ29s cykpCiAJCXsKIAkJCS8qIENlcnRhaW5seSB0aGUgcmlnaHQgdHlwZSwgc28gbmVlZG4ndCBj aGVjayAqLwogCQkJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX0FTU0lHTl9TQ0FOX1ZBUjsKLQkJ CXNjcmF0Y2guZC5hc3NpZ25fdmFyLmF0dG51bSA9IGF0dG51bSAtIDE7Ci0JCQlzY3JhdGNo LmQuYXNzaWduX3Zhci5yZXN1bHRudW0gPSBhdHRudW0gLSAxOworCQkJc2NyYXRjaC5hc3Np Z25fdmFyLmF0dG51bSA9IGF0dG51bSAtIDE7CisJCQlzY3JhdGNoLmFzc2lnbl92YXIucmVz dWx0bnVtID0gYXR0bnVtIC0gMTsKIAkJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsICZzY3Jh dGNoKTsKIAkJfQogCX0KQEAgLTk0NCw5ICs5NDQsOSBAQCBFeGVjSW5pdEV4cHJSZWMoRXhw ciAqbm9kZSwgRXhwclN0YXRlICpzdGF0ZSwKIAkJCQllbHNlIGlmICh2YXJpYWJsZS0+dmFy YXR0bm8gPD0gMCkKIAkJCQl7CiAJCQkJCS8qIHN5c3RlbSBjb2x1bW4gKi8KLQkJCQkJc2Ny YXRjaC5kLnZhci5hdHRudW0gPSB2YXJpYWJsZS0+dmFyYXR0bm87Ci0JCQkJCXNjcmF0Y2gu ZC52YXIudmFydHlwZSA9IHZhcmlhYmxlLT52YXJ0eXBlOwotCQkJCQlzY3JhdGNoLmQudmFy LnZhcnJldHVybmluZ3R5cGUgPSB2YXJpYWJsZS0+dmFycmV0dXJuaW5ndHlwZTsKKwkJCQkJ c2NyYXRjaC52YXIuYXR0bnVtID0gdmFyaWFibGUtPnZhcmF0dG5vOworCQkJCQlzY3JhdGNo LnZhci52YXJ0eXBlID0gdmFyaWFibGUtPnZhcnR5cGU7CisJCQkJCXNjcmF0Y2gudmFyLnZh cnJldHVybmluZ3R5cGUgPSB2YXJpYWJsZS0+dmFycmV0dXJuaW5ndHlwZTsKIAkJCQkJc3dp dGNoICh2YXJpYWJsZS0+dmFybm8pCiAJCQkJCXsKIAkJCQkJCWNhc2UgSU5ORVJfVkFSOgpA QCAtOTc5LDkgKzk3OSw5IEBAIEV4ZWNJbml0RXhwclJlYyhFeHByICpub2RlLCBFeHByU3Rh dGUgKnN0YXRlLAogCQkJCWVsc2UKIAkJCQl7CiAJCQkJCS8qIHJlZ3VsYXIgdXNlciBjb2x1 bW4gKi8KLQkJCQkJc2NyYXRjaC5kLnZhci5hdHRudW0gPSB2YXJpYWJsZS0+dmFyYXR0bm8g LSAxOwotCQkJCQlzY3JhdGNoLmQudmFyLnZhcnR5cGUgPSB2YXJpYWJsZS0+dmFydHlwZTsK LQkJCQkJc2NyYXRjaC5kLnZhci52YXJyZXR1cm5pbmd0eXBlID0gdmFyaWFibGUtPnZhcnJl dHVybmluZ3R5cGU7CisJCQkJCXNjcmF0Y2gudmFyLmF0dG51bSA9IHZhcmlhYmxlLT52YXJh dHRubyAtIDE7CisJCQkJCXNjcmF0Y2gudmFyLnZhcnR5cGUgPSB2YXJpYWJsZS0+dmFydHlw ZTsKKwkJCQkJc2NyYXRjaC52YXIudmFycmV0dXJuaW5ndHlwZSA9IHZhcmlhYmxlLT52YXJy ZXR1cm5pbmd0eXBlOwogCQkJCQlzd2l0Y2ggKHZhcmlhYmxlLT52YXJubykKIAkJCQkJewog CQkJCQkJY2FzZSBJTk5FUl9WQVI6CkBAIC0xMDIxLDggKzEwMjEsOCBAQCBFeGVjSW5pdEV4 cHJSZWMoRXhwciAqbm9kZSwgRXhwclN0YXRlICpzdGF0ZSwKIAkJCQlDb25zdAkgICAqY29u ID0gKENvbnN0ICopIG5vZGU7CiAKIAkJCQlzY3JhdGNoLm9wY29kZSA9IEVFT1BfQ09OU1Q7 Ci0JCQkJc2NyYXRjaC5kLmNvbnN0dmFsLnZhbHVlID0gY29uLT5jb25zdHZhbHVlOwotCQkJ CXNjcmF0Y2guZC5jb25zdHZhbC5pc251bGwgPSBjb24tPmNvbnN0aXNudWxsOworCQkJCXNj cmF0Y2guY29uc3R2YWwudmFsdWUgPSBjb24tPmNvbnN0dmFsdWU7CisJCQkJc2NyYXRjaC5j b25zdHZhbC5pc251bGwgPSBjb24tPmNvbnN0aXNudWxsOwogCiAJCQkJRXhwckV2YWxQdXNo U3RlcChzdGF0ZSwgJnNjcmF0Y2gpOwogCQkJCWJyZWFrOwpAQCAtMTAzNyw4ICsxMDM3LDgg QEAgRXhlY0luaXRFeHByUmVjKEV4cHIgKm5vZGUsIEV4cHJTdGF0ZSAqc3RhdGUsCiAJCQkJ ewogCQkJCQljYXNlIFBBUkFNX0VYRUM6CiAJCQkJCQlzY3JhdGNoLm9wY29kZSA9IEVFT1Bf UEFSQU1fRVhFQzsKLQkJCQkJCXNjcmF0Y2guZC5wYXJhbS5wYXJhbWlkID0gcGFyYW0tPnBh cmFtaWQ7Ci0JCQkJCQlzY3JhdGNoLmQucGFyYW0ucGFyYW10eXBlID0gcGFyYW0tPnBhcmFt dHlwZTsKKwkJCQkJCXNjcmF0Y2gucGFyYW0ucGFyYW1pZCA9IHBhcmFtLT5wYXJhbWlkOwor CQkJCQkJc2NyYXRjaC5wYXJhbS5wYXJhbXR5cGUgPSBwYXJhbS0+cGFyYW10eXBlOwogCQkJ CQkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgJnNjcmF0Y2gpOwogCQkJCQkJYnJlYWs7CiAJ CQkJCWNhc2UgUEFSQU1fRVhURVJOOgpAQCAtMTA2NCw4ICsxMDY0LDggQEAgRXhlY0luaXRF eHByUmVjKEV4cHIgKm5vZGUsIEV4cHJTdGF0ZSAqc3RhdGUsCiAJCQkJCQllbHNlCiAJCQkJ CQl7CiAJCQkJCQkJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX1BBUkFNX0VYVEVSTjsKLQkJCQkJ CQlzY3JhdGNoLmQucGFyYW0ucGFyYW1pZCA9IHBhcmFtLT5wYXJhbWlkOwotCQkJCQkJCXNj cmF0Y2guZC5wYXJhbS5wYXJhbXR5cGUgPSBwYXJhbS0+cGFyYW10eXBlOworCQkJCQkJCXNj cmF0Y2gucGFyYW0ucGFyYW1pZCA9IHBhcmFtLT5wYXJhbWlkOworCQkJCQkJCXNjcmF0Y2gu cGFyYW0ucGFyYW10eXBlID0gcGFyYW0tPnBhcmFtdHlwZTsKIAkJCQkJCQlFeHByRXZhbFB1 c2hTdGVwKHN0YXRlLCAmc2NyYXRjaCk7CiAJCQkJCQl9CiAJCQkJCQlicmVhazsKQEAgLTEw ODIsNyArMTA4Miw3IEBAIEV4ZWNJbml0RXhwclJlYyhFeHByICpub2RlLCBFeHByU3RhdGUg KnN0YXRlLAogCQkJCUFnZ3JlZgkgICAqYWdncmVmID0gKEFnZ3JlZiAqKSBub2RlOwogCiAJ CQkJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX0FHR1JFRjsKLQkJCQlzY3JhdGNoLmQuYWdncmVm LmFnZ25vID0gYWdncmVmLT5hZ2dubzsKKwkJCQlzY3JhdGNoLmFnZ3JlZi5hZ2dubyA9IGFn Z3JlZi0+YWdnbm87CiAKIAkJCQlpZiAoc3RhdGUtPnBhcmVudCAmJiBJc0Eoc3RhdGUtPnBh cmVudCwgQWdnU3RhdGUpKQogCQkJCXsKQEAgLTExMTQsOSArMTExNCw5IEBAIEV4ZWNJbml0 RXhwclJlYyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRlLAogCQkJCWFnZyA9IChBZ2cg KikgKHN0YXRlLT5wYXJlbnQtPnBsYW4pOwogCiAJCQkJaWYgKGFnZy0+Z3JvdXBpbmdTZXRz KQotCQkJCQlzY3JhdGNoLmQuZ3JvdXBpbmdfZnVuYy5jbGF1c2VzID0gZ3JwX25vZGUtPmNv bHM7CisJCQkJCXNjcmF0Y2guZ3JvdXBpbmdfZnVuYy5jbGF1c2VzID0gZ3JwX25vZGUtPmNv bHM7CiAJCQkJZWxzZQotCQkJCQlzY3JhdGNoLmQuZ3JvdXBpbmdfZnVuYy5jbGF1c2VzID0g TklMOworCQkJCQlzY3JhdGNoLmdyb3VwaW5nX2Z1bmMuY2xhdXNlcyA9IE5JTDsKIAogCQkJ CUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsICZzY3JhdGNoKTsKIAkJCQlicmVhazsKQEAgLTEx NjMsNyArMTE2Myw3IEBAIEV4ZWNJbml0RXhwclJlYyhFeHByICpub2RlLCBFeHByU3RhdGUg KnN0YXRlLAogCQkJCX0KIAogCQkJCXNjcmF0Y2gub3Bjb2RlID0gRUVPUF9XSU5ET1dfRlVO QzsKLQkJCQlzY3JhdGNoLmQud2luZG93X2Z1bmMud2ZzdGF0ZSA9IHdmc3RhdGU7CisJCQkJ c2NyYXRjaC53aW5kb3dfZnVuYy53ZnN0YXRlID0gd2ZzdGF0ZTsKIAkJCQlFeHByRXZhbFB1 c2hTdGVwKHN0YXRlLCAmc2NyYXRjaCk7CiAJCQkJYnJlYWs7CiAJCQl9CkBAIC0xMjQ2LDcg KzEyNDYsNyBAQCBFeGVjSW5pdEV4cHJSZWMoRXhwciAqbm9kZSwgRXhwclN0YXRlICpzdGF0 ZSwKIAkJCQkgKiB0aGF0IHRoZSB2YWx1ZSBwYXNzZWQgdG8gdGhlIGNvbXBhcmlzb24gZnVu Y3Rpb24gaXMgYQogCQkJCSAqIHJlYWQtb25seSBwb2ludGVyLgogCQkJCSAqLwotCQkJCXNj cmF0Y2guZC5mdW5jLm1ha2Vfcm8gPQorCQkJCXNjcmF0Y2guZnVuYy5tYWtlX3JvID0KIAkJ CQkJKGdldF90eXBsZW4oZXhwclR5cGUoKE5vZGUgKikgbGluaXRpYWwob3AtPmFyZ3MpKSkg PT0gLTEpOwogCiAJCQkJLyoKQEAgLTEzNDMsMTAgKzEzNDMsMTAgQEAgRXhlY0luaXRFeHBy UmVjKEV4cHIgKm5vZGUsIEV4cHJTdGF0ZSAqc3RhdGUsCiAKIAkJCQkJLyogQW5kIHBlcmZv cm0gdGhlIG9wZXJhdGlvbiAqLwogCQkJCQlzY3JhdGNoLm9wY29kZSA9IEVFT1BfSEFTSEVE X1NDQUxBUkFSUkFZT1A7Ci0JCQkJCXNjcmF0Y2guZC5oYXNoZWRzY2FsYXJhcnJheW9wLmlu Y2xhdXNlID0gb3BleHByLT51c2VPcjsKLQkJCQkJc2NyYXRjaC5kLmhhc2hlZHNjYWxhcmFy cmF5b3AuZmluZm8gPSBmaW5mbzsKLQkJCQkJc2NyYXRjaC5kLmhhc2hlZHNjYWxhcmFycmF5 b3AuZmNpbmZvX2RhdGEgPSBmY2luZm87Ci0JCQkJCXNjcmF0Y2guZC5oYXNoZWRzY2FsYXJh cnJheW9wLnNhb3AgPSBvcGV4cHI7CisJCQkJCXNjcmF0Y2guaGFzaGVkc2NhbGFyYXJyYXlv cC5pbmNsYXVzZSA9IG9wZXhwci0+dXNlT3I7CisJCQkJCXNjcmF0Y2guaGFzaGVkc2NhbGFy YXJyYXlvcC5maW5mbyA9IGZpbmZvOworCQkJCQlzY3JhdGNoLmhhc2hlZHNjYWxhcmFycmF5 b3AuZmNpbmZvX2RhdGEgPSBmY2luZm87CisJCQkJCXNjcmF0Y2guaGFzaGVkc2NhbGFyYXJy YXlvcC5zYW9wID0gb3BleHByOwogCiAKIAkJCQkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwg JnNjcmF0Y2gpOwpAQCAtMTM2OCwxMSArMTM2OCwxMSBAQCBFeGVjSW5pdEV4cHJSZWMoRXhw ciAqbm9kZSwgRXhwclN0YXRlICpzdGF0ZSwKIAogCQkJCQkvKiBBbmQgcGVyZm9ybSB0aGUg b3BlcmF0aW9uICovCiAJCQkJCXNjcmF0Y2gub3Bjb2RlID0gRUVPUF9TQ0FMQVJBUlJBWU9Q OwotCQkJCQlzY3JhdGNoLmQuc2NhbGFyYXJyYXlvcC5lbGVtZW50X3R5cGUgPSBJbnZhbGlk T2lkOwotCQkJCQlzY3JhdGNoLmQuc2NhbGFyYXJyYXlvcC51c2VPciA9IG9wZXhwci0+dXNl T3I7Ci0JCQkJCXNjcmF0Y2guZC5zY2FsYXJhcnJheW9wLmZpbmZvID0gZmluZm87Ci0JCQkJ CXNjcmF0Y2guZC5zY2FsYXJhcnJheW9wLmZjaW5mb19kYXRhID0gZmNpbmZvOwotCQkJCQlz Y3JhdGNoLmQuc2NhbGFyYXJyYXlvcC5mbl9hZGRyID0gZmluZm8tPmZuX2FkZHI7CisJCQkJ CXNjcmF0Y2guc2NhbGFyYXJyYXlvcC5lbGVtZW50X3R5cGUgPSBJbnZhbGlkT2lkOworCQkJ CQlzY3JhdGNoLnNjYWxhcmFycmF5b3AudXNlT3IgPSBvcGV4cHItPnVzZU9yOworCQkJCQlz Y3JhdGNoLnNjYWxhcmFycmF5b3AuZmluZm8gPSBmaW5mbzsKKwkJCQkJc2NyYXRjaC5zY2Fs YXJhcnJheW9wLmZjaW5mb19kYXRhID0gZmNpbmZvOworCQkJCQlzY3JhdGNoLnNjYWxhcmFy cmF5b3AuZm5fYWRkciA9IGZpbmZvLT5mbl9hZGRyOwogCQkJCQlFeHByRXZhbFB1c2hTdGVw KHN0YXRlLCAmc2NyYXRjaCk7CiAJCQkJfQogCQkJCWJyZWFrOwpAQCAtMTM4OCw3ICsxMzg4 LDcgQEAgRXhlY0luaXRFeHByUmVjKEV4cHIgKm5vZGUsIEV4cHJTdGF0ZSAqc3RhdGUsCiAK IAkJCQkvKiBhbGxvY2F0ZSBzY3JhdGNoIG1lbW9yeSB1c2VkIGJ5IGFsbCBzdGVwcyBvZiBB TkQvT1IgKi8KIAkJCQlpZiAoYm9vbGV4cHItPmJvb2xvcCAhPSBOT1RfRVhQUikKLQkJCQkJ c2NyYXRjaC5kLmJvb2xleHByLmFueW51bGwgPSAoYm9vbCAqKSBwYWxsb2Moc2l6ZW9mKGJv b2wpKTsKKwkJCQkJc2NyYXRjaC5ib29sZXhwci5hbnludWxsID0gKGJvb2wgKikgcGFsbG9j KHNpemVvZihib29sKSk7CiAKIAkJCQkvKgogCQkJCSAqIEZvciBlYWNoIGFyZ3VtZW50IGV2 YWx1YXRlIHRoZSBhcmd1bWVudCBpdHNlbGYsIHRoZW4KQEAgLTE0NDUsNyArMTQ0NSw3IEBA IEV4ZWNJbml0RXhwclJlYyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRlLAogCQkJCQkJ CWJyZWFrOwogCQkJCQl9CiAKLQkJCQkJc2NyYXRjaC5kLmJvb2xleHByLmp1bXBkb25lID0g LTE7CisJCQkJCXNjcmF0Y2guYm9vbGV4cHIuanVtcGRvbmUgPSAtMTsKIAkJCQkJRXhwckV2 YWxQdXNoU3RlcChzdGF0ZSwgJnNjcmF0Y2gpOwogCQkJCQlhZGp1c3RfanVtcHMgPSBsYXBw ZW5kX2ludChhZGp1c3RfanVtcHMsCiAJCQkJCQkJCQkJCSAgIHN0YXRlLT5zdGVwc19sZW4g LSAxKTsKQEAgLTE0NTcsOCArMTQ1Nyw4IEBAIEV4ZWNJbml0RXhwclJlYyhFeHByICpub2Rl LCBFeHByU3RhdGUgKnN0YXRlLAogCQkJCXsKIAkJCQkJRXhwckV2YWxTdGVwICphcyA9ICZz dGF0ZS0+c3RlcHNbbGZpcnN0X2ludChsYyldOwogCi0JCQkJCUFzc2VydChhcy0+ZC5ib29s ZXhwci5qdW1wZG9uZSA9PSAtMSk7Ci0JCQkJCWFzLT5kLmJvb2xleHByLmp1bXBkb25lID0g c3RhdGUtPnN0ZXBzX2xlbjsKKwkJCQkJQXNzZXJ0KGFzLT5ib29sZXhwci5qdW1wZG9uZSA9 PSAtMSk7CisJCQkJCWFzLT5ib29sZXhwci5qdW1wZG9uZSA9IHN0YXRlLT5zdGVwc19sZW47 CiAJCQkJfQogCiAJCQkJYnJlYWs7CkBAIC0xNDc3LDggKzE0NzcsOCBAQCBFeGVjSW5pdEV4 cHJSZWMoRXhwciAqbm9kZSwgRXhwclN0YXRlICpzdGF0ZSwKIAkJCQlpZiAoc3VicGxhbi0+ c3ViTGlua1R5cGUgPT0gTVVMVElFWFBSX1NVQkxJTkspCiAJCQkJewogCQkJCQlzY3JhdGNo Lm9wY29kZSA9IEVFT1BfQ09OU1Q7Ci0JCQkJCXNjcmF0Y2guZC5jb25zdHZhbC52YWx1ZSA9 IChEYXR1bSkgMDsKLQkJCQkJc2NyYXRjaC5kLmNvbnN0dmFsLmlzbnVsbCA9IHRydWU7CisJ CQkJCXNjcmF0Y2guY29uc3R2YWwudmFsdWUgPSAoRGF0dW0pIDA7CisJCQkJCXNjcmF0Y2gu Y29uc3R2YWwuaXNudWxsID0gdHJ1ZTsKIAkJCQkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwg JnNjcmF0Y2gpOwogCQkJCQlicmVhazsKIAkJCQl9CkBAIC0xNDk2LDkgKzE0OTYsOSBAQCBF eGVjSW5pdEV4cHJSZWMoRXhwciAqbm9kZSwgRXhwclN0YXRlICpzdGF0ZSwKIAogCQkJCS8q IGFuZCBleHRyYWN0IGZpZWxkICovCiAJCQkJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX0ZJRUxE U0VMRUNUOwotCQkJCXNjcmF0Y2guZC5maWVsZHNlbGVjdC5maWVsZG51bSA9IGZzZWxlY3Qt PmZpZWxkbnVtOwotCQkJCXNjcmF0Y2guZC5maWVsZHNlbGVjdC5yZXN1bHR0eXBlID0gZnNl bGVjdC0+cmVzdWx0dHlwZTsKLQkJCQlzY3JhdGNoLmQuZmllbGRzZWxlY3Qucm93Y2FjaGUu Y2FjaGVwdHIgPSBOVUxMOworCQkJCXNjcmF0Y2guZmllbGRzZWxlY3QuZmllbGRudW0gPSBm c2VsZWN0LT5maWVsZG51bTsKKwkJCQlzY3JhdGNoLmZpZWxkc2VsZWN0LnJlc3VsdHR5cGUg PSBmc2VsZWN0LT5yZXN1bHR0eXBlOworCQkJCXNjcmF0Y2guZmllbGRzZWxlY3Qucm93Y2Fj aGUuY2FjaGVwdHIgPSBOVUxMOwogCiAJCQkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgJnNj cmF0Y2gpOwogCQkJCWJyZWFrOwpAQCAtMTUzMywxMSArMTUzMywxMSBAQCBFeGVjSW5pdEV4 cHJSZWMoRXhwciAqbm9kZSwgRXhwclN0YXRlICpzdGF0ZSwKIAogCQkJCS8qIG5leHQsIGRl Zm9ybSB0aGUgaW5wdXQgdHVwbGUgaW50byBvdXIgd29ya3NwYWNlICovCiAJCQkJc2NyYXRj aC5vcGNvZGUgPSBFRU9QX0ZJRUxEU1RPUkVfREVGT1JNOwotCQkJCXNjcmF0Y2guZC5maWVs ZHN0b3JlLmZzdG9yZSA9IGZzdG9yZTsKLQkJCQlzY3JhdGNoLmQuZmllbGRzdG9yZS5yb3dj YWNoZSA9IHJvd2NhY2hlcDsKLQkJCQlzY3JhdGNoLmQuZmllbGRzdG9yZS52YWx1ZXMgPSB2 YWx1ZXM7Ci0JCQkJc2NyYXRjaC5kLmZpZWxkc3RvcmUubnVsbHMgPSBudWxsczsKLQkJCQlz Y3JhdGNoLmQuZmllbGRzdG9yZS5uY29sdW1ucyA9IG5jb2x1bW5zOworCQkJCXNjcmF0Y2gu ZmllbGRzdG9yZS5mc3RvcmUgPSBmc3RvcmU7CisJCQkJc2NyYXRjaC5maWVsZHN0b3JlLnJv d2NhY2hlID0gcm93Y2FjaGVwOworCQkJCXNjcmF0Y2guZmllbGRzdG9yZS52YWx1ZXMgPSB2 YWx1ZXM7CisJCQkJc2NyYXRjaC5maWVsZHN0b3JlLm51bGxzID0gbnVsbHM7CisJCQkJc2Ny YXRjaC5maWVsZHN0b3JlLm5jb2x1bW5zID0gbmNvbHVtbnM7CiAJCQkJRXhwckV2YWxQdXNo U3RlcChzdGF0ZSwgJnNjcmF0Y2gpOwogCiAJCQkJLyogZXZhbHVhdGUgbmV3IGZpZWxkIHZh bHVlcywgc3RvcmUgaW4gd29ya3NwYWNlIGNvbHVtbnMgKi8KQEAgLTE1OTEsMTEgKzE1OTEs MTEgQEAgRXhlY0luaXRFeHByUmVjKEV4cHIgKm5vZGUsIEV4cHJTdGF0ZSAqc3RhdGUsCiAK IAkJCQkvKiBmaW5hbGx5LCBmb3JtIHJlc3VsdCB0dXBsZSAqLwogCQkJCXNjcmF0Y2gub3Bj b2RlID0gRUVPUF9GSUVMRFNUT1JFX0ZPUk07Ci0JCQkJc2NyYXRjaC5kLmZpZWxkc3RvcmUu ZnN0b3JlID0gZnN0b3JlOwotCQkJCXNjcmF0Y2guZC5maWVsZHN0b3JlLnJvd2NhY2hlID0g cm93Y2FjaGVwOwotCQkJCXNjcmF0Y2guZC5maWVsZHN0b3JlLnZhbHVlcyA9IHZhbHVlczsK LQkJCQlzY3JhdGNoLmQuZmllbGRzdG9yZS5udWxscyA9IG51bGxzOwotCQkJCXNjcmF0Y2gu ZC5maWVsZHN0b3JlLm5jb2x1bW5zID0gbmNvbHVtbnM7CisJCQkJc2NyYXRjaC5maWVsZHN0 b3JlLmZzdG9yZSA9IGZzdG9yZTsKKwkJCQlzY3JhdGNoLmZpZWxkc3RvcmUucm93Y2FjaGUg PSByb3djYWNoZXA7CisJCQkJc2NyYXRjaC5maWVsZHN0b3JlLnZhbHVlcyA9IHZhbHVlczsK KwkJCQlzY3JhdGNoLmZpZWxkc3RvcmUubnVsbHMgPSBudWxsczsKKwkJCQlzY3JhdGNoLmZp ZWxkc3RvcmUubmNvbHVtbnMgPSBuY29sdW1uczsKIAkJCQlFeHByRXZhbFB1c2hTdGVwKHN0 YXRlLCAmc2NyYXRjaCk7CiAJCQkJYnJlYWs7CiAJCQl9CkBAIC0xNjM0LDM0ICsxNjM0LDM0 IEBAIEV4ZWNJbml0RXhwclJlYyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRlLAogCQkJ CQlzY3JhdGNoLm9wY29kZSA9IEVFT1BfSU9DT0VSQ0VfU0FGRTsKIAogCQkJCS8qIGxvb2t1 cCB0aGUgc291cmNlIHR5cGUncyBvdXRwdXQgZnVuY3Rpb24gKi8KLQkJCQlzY3JhdGNoLmQu aW9jb2VyY2UuZmluZm9fb3V0ID0gcGFsbG9jMChzaXplb2YoRm1nckluZm8pKTsKLQkJCQlz Y3JhdGNoLmQuaW9jb2VyY2UuZmNpbmZvX2RhdGFfb3V0ID0gcGFsbG9jMChTaXplRm9yRnVu Y3Rpb25DYWxsSW5mbygxKSk7CisJCQkJc2NyYXRjaC5pb2NvZXJjZS5maW5mb19vdXQgPSBw YWxsb2MwKHNpemVvZihGbWdySW5mbykpOworCQkJCXNjcmF0Y2guaW9jb2VyY2UuZmNpbmZv X2RhdGFfb3V0ID0gcGFsbG9jMChTaXplRm9yRnVuY3Rpb25DYWxsSW5mbygxKSk7CiAKIAkJ CQlnZXRUeXBlT3V0cHV0SW5mbyhleHByVHlwZSgoTm9kZSAqKSBpb2NvZXJjZS0+YXJnKSwK IAkJCQkJCQkJICAmaW9mdW5jLCAmdHlwaXN2YXJsZW5hKTsKLQkJCQlmbWdyX2luZm8oaW9m dW5jLCBzY3JhdGNoLmQuaW9jb2VyY2UuZmluZm9fb3V0KTsKLQkJCQlmbWdyX2luZm9fc2V0 X2V4cHIoKE5vZGUgKikgbm9kZSwgc2NyYXRjaC5kLmlvY29lcmNlLmZpbmZvX291dCk7Ci0J CQkJSW5pdEZ1bmN0aW9uQ2FsbEluZm9EYXRhKCpzY3JhdGNoLmQuaW9jb2VyY2UuZmNpbmZv X2RhdGFfb3V0LAotCQkJCQkJCQkJCSBzY3JhdGNoLmQuaW9jb2VyY2UuZmluZm9fb3V0LAor CQkJCWZtZ3JfaW5mbyhpb2Z1bmMsIHNjcmF0Y2guaW9jb2VyY2UuZmluZm9fb3V0KTsKKwkJ CQlmbWdyX2luZm9fc2V0X2V4cHIoKE5vZGUgKikgbm9kZSwgc2NyYXRjaC5pb2NvZXJjZS5m aW5mb19vdXQpOworCQkJCUluaXRGdW5jdGlvbkNhbGxJbmZvRGF0YSgqc2NyYXRjaC5pb2Nv ZXJjZS5mY2luZm9fZGF0YV9vdXQsCisJCQkJCQkJCQkJIHNjcmF0Y2guaW9jb2VyY2UuZmlu Zm9fb3V0LAogCQkJCQkJCQkJCSAxLCBJbnZhbGlkT2lkLCBOVUxMLCBOVUxMKTsKIAogCQkJ CS8qIGxvb2t1cCB0aGUgcmVzdWx0IHR5cGUncyBpbnB1dCBmdW5jdGlvbiAqLwotCQkJCXNj cmF0Y2guZC5pb2NvZXJjZS5maW5mb19pbiA9IHBhbGxvYzAoc2l6ZW9mKEZtZ3JJbmZvKSk7 Ci0JCQkJc2NyYXRjaC5kLmlvY29lcmNlLmZjaW5mb19kYXRhX2luID0gcGFsbG9jMChTaXpl Rm9yRnVuY3Rpb25DYWxsSW5mbygzKSk7CisJCQkJc2NyYXRjaC5pb2NvZXJjZS5maW5mb19p biA9IHBhbGxvYzAoc2l6ZW9mKEZtZ3JJbmZvKSk7CisJCQkJc2NyYXRjaC5pb2NvZXJjZS5m Y2luZm9fZGF0YV9pbiA9IHBhbGxvYzAoU2l6ZUZvckZ1bmN0aW9uQ2FsbEluZm8oMykpOwog CiAJCQkJZ2V0VHlwZUlucHV0SW5mbyhpb2NvZXJjZS0+cmVzdWx0dHlwZSwKIAkJCQkJCQkJ ICZpb2Z1bmMsICZ0eXBpb3BhcmFtKTsKLQkJCQlmbWdyX2luZm8oaW9mdW5jLCBzY3JhdGNo LmQuaW9jb2VyY2UuZmluZm9faW4pOwotCQkJCWZtZ3JfaW5mb19zZXRfZXhwcigoTm9kZSAq KSBub2RlLCBzY3JhdGNoLmQuaW9jb2VyY2UuZmluZm9faW4pOwotCQkJCUluaXRGdW5jdGlv bkNhbGxJbmZvRGF0YSgqc2NyYXRjaC5kLmlvY29lcmNlLmZjaW5mb19kYXRhX2luLAotCQkJ CQkJCQkJCSBzY3JhdGNoLmQuaW9jb2VyY2UuZmluZm9faW4sCisJCQkJZm1ncl9pbmZvKGlv ZnVuYywgc2NyYXRjaC5pb2NvZXJjZS5maW5mb19pbik7CisJCQkJZm1ncl9pbmZvX3NldF9l eHByKChOb2RlICopIG5vZGUsIHNjcmF0Y2guaW9jb2VyY2UuZmluZm9faW4pOworCQkJCUlu aXRGdW5jdGlvbkNhbGxJbmZvRGF0YSgqc2NyYXRjaC5pb2NvZXJjZS5mY2luZm9fZGF0YV9p biwKKwkJCQkJCQkJCQkgc2NyYXRjaC5pb2NvZXJjZS5maW5mb19pbiwKIAkJCQkJCQkJCQkg MywgSW52YWxpZE9pZCwgTlVMTCwgTlVMTCk7CiAKIAkJCQkvKgogCQkJCSAqIFdlIGNhbiBw cmVsb2FkIHRoZSBzZWNvbmQgYW5kIHRoaXJkIGFyZ3VtZW50cyBmb3IgdGhlIGlucHV0CiAJ CQkJICogZnVuY3Rpb24sIHNpbmNlIHRoZXkncmUgY29uc3RhbnRzLgogCQkJCSAqLwotCQkJ CWZjaW5mb19pbiA9IHNjcmF0Y2guZC5pb2NvZXJjZS5mY2luZm9fZGF0YV9pbjsKKwkJCQlm Y2luZm9faW4gPSBzY3JhdGNoLmlvY29lcmNlLmZjaW5mb19kYXRhX2luOwogCQkJCWZjaW5m b19pbi0+YXJnc1sxXS52YWx1ZSA9IE9iamVjdElkR2V0RGF0dW0odHlwaW9wYXJhbSk7CiAJ CQkJZmNpbmZvX2luLT5hcmdzWzFdLmlzbnVsbCA9IGZhbHNlOwogCQkJCWZjaW5mb19pbi0+ YXJnc1syXS52YWx1ZSA9IEludDMyR2V0RGF0dW0oLTEpOwpAQCAtMTcyMSwxOSArMTcyMSwx OSBAQCBFeGVjSW5pdEV4cHJSZWMoRXhwciAqbm9kZSwgRXhwclN0YXRlICpzdGF0ZSwKIAkJ CQl9CiAKIAkJCQlzY3JhdGNoLm9wY29kZSA9IEVFT1BfQVJSQVlDT0VSQ0U7Ci0JCQkJc2Ny YXRjaC5kLmFycmF5Y29lcmNlLmVsZW1leHByc3RhdGUgPSBlbGVtc3RhdGU7Ci0JCQkJc2Ny YXRjaC5kLmFycmF5Y29lcmNlLnJlc3VsdGVsZW10eXBlID0gcmVzdWx0ZWxlbXR5cGU7CisJ CQkJc2NyYXRjaC5hcnJheWNvZXJjZS5lbGVtZXhwcnN0YXRlID0gZWxlbXN0YXRlOworCQkJ CXNjcmF0Y2guYXJyYXljb2VyY2UucmVzdWx0ZWxlbXR5cGUgPSByZXN1bHRlbGVtdHlwZTsK IAogCQkJCWlmIChlbGVtc3RhdGUpCiAJCQkJewogCQkJCQkvKiBTZXQgdXAgd29ya3NwYWNl IGZvciBhcnJheV9tYXAgKi8KLQkJCQkJc2NyYXRjaC5kLmFycmF5Y29lcmNlLmFtc3RhdGUg PQorCQkJCQlzY3JhdGNoLmFycmF5Y29lcmNlLmFtc3RhdGUgPQogCQkJCQkJKEFycmF5TWFw U3RhdGUgKikgcGFsbG9jMChzaXplb2YoQXJyYXlNYXBTdGF0ZSkpOwogCQkJCX0KIAkJCQll bHNlCiAJCQkJewogCQkJCQkvKiBEb24ndCBuZWVkIHdvcmtzcGFjZSBpZiB0aGVyZSdzIG5v IHN1YmV4cHJlc3Npb24gKi8KLQkJCQkJc2NyYXRjaC5kLmFycmF5Y29lcmNlLmFtc3RhdGUg PSBOVUxMOworCQkJCQlzY3JhdGNoLmFycmF5Y29lcmNlLmFtc3RhdGUgPSBOVUxMOwogCQkJ CX0KIAogCQkJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsICZzY3JhdGNoKTsKQEAgLTE3NTUs MTIgKzE3NTUsMTIgQEAgRXhlY0luaXRFeHByUmVjKEV4cHIgKm5vZGUsIEV4cHJTdGF0ZSAq c3RhdGUsCiAKIAkJCQkvKiBhbmQgcHVzaCBjb252ZXJzaW9uIHN0ZXAgKi8KIAkJCQlzY3Jh dGNoLm9wY29kZSA9IEVFT1BfQ09OVkVSVF9ST1dUWVBFOwotCQkJCXNjcmF0Y2guZC5jb252 ZXJ0X3Jvd3R5cGUuaW5wdXR0eXBlID0KKwkJCQlzY3JhdGNoLmNvbnZlcnRfcm93dHlwZS5p bnB1dHR5cGUgPQogCQkJCQlleHByVHlwZSgoTm9kZSAqKSBjb252ZXJ0LT5hcmcpOwotCQkJ CXNjcmF0Y2guZC5jb252ZXJ0X3Jvd3R5cGUub3V0cHV0dHlwZSA9IGNvbnZlcnQtPnJlc3Vs dHR5cGU7Ci0JCQkJc2NyYXRjaC5kLmNvbnZlcnRfcm93dHlwZS5pbmNhY2hlID0gJnJvd2Nh Y2hlcFswXTsKLQkJCQlzY3JhdGNoLmQuY29udmVydF9yb3d0eXBlLm91dGNhY2hlID0gJnJv d2NhY2hlcFsxXTsKLQkJCQlzY3JhdGNoLmQuY29udmVydF9yb3d0eXBlLm1hcCA9IE5VTEw7 CisJCQkJc2NyYXRjaC5jb252ZXJ0X3Jvd3R5cGUub3V0cHV0dHlwZSA9IGNvbnZlcnQtPnJl c3VsdHR5cGU7CisJCQkJc2NyYXRjaC5jb252ZXJ0X3Jvd3R5cGUuaW5jYWNoZSA9ICZyb3dj YWNoZXBbMF07CisJCQkJc2NyYXRjaC5jb252ZXJ0X3Jvd3R5cGUub3V0Y2FjaGUgPSAmcm93 Y2FjaGVwWzFdOworCQkJCXNjcmF0Y2guY29udmVydF9yb3d0eXBlLm1hcCA9IE5VTEw7CiAK IAkJCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCAmc2NyYXRjaCk7CiAJCQkJYnJlYWs7CkBA IC0xNzk5LDggKzE3OTksOCBAQCBFeGVjSW5pdEV4cHJSZWMoRXhwciAqbm9kZSwgRXhwclN0 YXRlICpzdGF0ZSwKIAkJCQkJCXNjcmF0Y2gub3Bjb2RlID0gRUVPUF9NQUtFX1JFQURPTkxZ OwogCQkJCQkJc2NyYXRjaC5yZXN2YWx1ZSA9IGNhc2V2YWw7CiAJCQkJCQlzY3JhdGNoLnJl c251bGwgPSBjYXNlbnVsbDsKLQkJCQkJCXNjcmF0Y2guZC5tYWtlX3JlYWRvbmx5LnZhbHVl ID0gY2FzZXZhbDsKLQkJCQkJCXNjcmF0Y2guZC5tYWtlX3JlYWRvbmx5LmlzbnVsbCA9IGNh c2VudWxsOworCQkJCQkJc2NyYXRjaC5tYWtlX3JlYWRvbmx5LnZhbHVlID0gY2FzZXZhbDsK KwkJCQkJCXNjcmF0Y2gubWFrZV9yZWFkb25seS5pc251bGwgPSBjYXNlbnVsbDsKIAkJCQkJ CUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsICZzY3JhdGNoKTsKIAkJCQkJCS8qIHJlc3RvcmUg bm9ybWFsIHNldHRpbmdzIG9mIHNjcmF0Y2ggZmllbGRzICovCiAJCQkJCQlzY3JhdGNoLnJl c3ZhbHVlID0gcmVzdjsKQEAgLTE4NDQsNyArMTg0NCw3IEBAIEV4ZWNJbml0RXhwclJlYyhF eHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRlLAogCiAJCQkJCS8qIElmIFdIRU4gcmVzdWx0 IGlzbid0IHRydWUsIGp1bXAgdG8gbmV4dCBDQVNFIGFybSAqLwogCQkJCQlzY3JhdGNoLm9w Y29kZSA9IEVFT1BfSlVNUF9JRl9OT1RfVFJVRTsKLQkJCQkJc2NyYXRjaC5kLmp1bXAuanVt cGRvbmUgPSAtMTsJLyogY29tcHV0ZWQgbGF0ZXIgKi8KKwkJCQkJc2NyYXRjaC5qdW1wLmp1 bXBkb25lID0gLTE7IC8qIGNvbXB1dGVkIGxhdGVyICovCiAJCQkJCUV4cHJFdmFsUHVzaFN0 ZXAoc3RhdGUsICZzY3JhdGNoKTsKIAkJCQkJd2hlbnN0ZXAgPSBzdGF0ZS0+c3RlcHNfbGVu IC0gMTsKIApAQCAtMTg1Niw3ICsxODU2LDcgQEAgRXhlY0luaXRFeHByUmVjKEV4cHIgKm5v ZGUsIEV4cHJTdGF0ZSAqc3RhdGUsCiAKIAkJCQkJLyogRW1pdCBKVU1QIHN0ZXAgdG8ganVt cCB0byBlbmQgb2YgQ0FTRSdzIGNvZGUgKi8KIAkJCQkJc2NyYXRjaC5vcGNvZGUgPSBFRU9Q X0pVTVA7Ci0JCQkJCXNjcmF0Y2guZC5qdW1wLmp1bXBkb25lID0gLTE7CS8qIGNvbXB1dGVk IGxhdGVyICovCisJCQkJCXNjcmF0Y2guanVtcC5qdW1wZG9uZSA9IC0xOyAvKiBjb21wdXRl ZCBsYXRlciAqLwogCQkJCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCAmc2NyYXRjaCk7CiAK IAkJCQkJLyoKQEAgLTE4NzAsNyArMTg3MCw3IEBAIEV4ZWNJbml0RXhwclJlYyhFeHByICpu b2RlLCBFeHByU3RhdGUgKnN0YXRlLAogCQkJCQkgKiBCdXQgd2UgY2FuIHNldCBXSEVOIHRl c3QncyBqdW1wIHRhcmdldCBub3csIHRvIG1ha2UgaXQKIAkJCQkJICoganVtcCB0byB0aGUg bmV4dCBXSEVOIHN1YmV4cHJlc3Npb24gb3IgdGhlIEVMU0UuCiAJCQkJCSAqLwotCQkJCQlz dGF0ZS0+c3RlcHNbd2hlbnN0ZXBdLmQuanVtcC5qdW1wZG9uZSA9IHN0YXRlLT5zdGVwc19s ZW47CisJCQkJCXN0YXRlLT5zdGVwc1t3aGVuc3RlcF0uanVtcC5qdW1wZG9uZSA9IHN0YXRl LT5zdGVwc19sZW47CiAJCQkJfQogCiAJCQkJLyogdHJhbnNmb3JtQ2FzZUV4cHIgYWx3YXlz IGFkZHMgYSBkZWZhdWx0ICovCkBAIC0xODg2LDggKzE4ODYsOCBAQCBFeGVjSW5pdEV4cHJS ZWMoRXhwciAqbm9kZSwgRXhwclN0YXRlICpzdGF0ZSwKIAkJCQkJRXhwckV2YWxTdGVwICph cyA9ICZzdGF0ZS0+c3RlcHNbbGZpcnN0X2ludChsYyldOwogCiAJCQkJCUFzc2VydChhcy0+ b3Bjb2RlID09IEVFT1BfSlVNUCk7Ci0JCQkJCUFzc2VydChhcy0+ZC5qdW1wLmp1bXBkb25l ID09IC0xKTsKLQkJCQkJYXMtPmQuanVtcC5qdW1wZG9uZSA9IHN0YXRlLT5zdGVwc19sZW47 CisJCQkJCUFzc2VydChhcy0+anVtcC5qdW1wZG9uZSA9PSAtMSk7CisJCQkJCWFzLT5qdW1w Lmp1bXBkb25lID0gc3RhdGUtPnN0ZXBzX2xlbjsKIAkJCQl9CiAKIAkJCQlicmVhazsKQEAg LTE5MDksOCArMTkwOSw4IEBAIEV4ZWNJbml0RXhwclJlYyhFeHByICpub2RlLCBFeHByU3Rh dGUgKnN0YXRlLAogCQkJCWVsc2UKIAkJCQl7CiAJCQkJCXNjcmF0Y2gub3Bjb2RlID0gRUVP UF9DQVNFX1RFU1RWQUw7Ci0JCQkJCXNjcmF0Y2guZC5jYXNldGVzdC52YWx1ZSA9IHN0YXRl LT5pbm5lcm1vc3RfY2FzZXZhbDsKLQkJCQkJc2NyYXRjaC5kLmNhc2V0ZXN0LmlzbnVsbCA9 IHN0YXRlLT5pbm5lcm1vc3RfY2FzZW51bGw7CisJCQkJCXNjcmF0Y2guY2FzZXRlc3QudmFs dWUgPSBzdGF0ZS0+aW5uZXJtb3N0X2Nhc2V2YWw7CisJCQkJCXNjcmF0Y2guY2FzZXRlc3Qu aXNudWxsID0gc3RhdGUtPmlubmVybW9zdF9jYXNlbnVsbDsKIAkJCQl9CiAJCQkJRXhwckV2 YWxQdXNoU3RlcChzdGF0ZSwgJnNjcmF0Y2gpOwogCQkJCWJyZWFrOwpAQCAtMTkyOSwyMSAr MTkyOSwyMSBAQCBFeGVjSW5pdEV4cHJSZWMoRXhwciAqbm9kZSwgRXhwclN0YXRlICpzdGF0 ZSwKIAkJCQkgKiBhc3NvY2lhdGVkIHdpdGggdGhlIEFSUkFZRVhQUiBzdGVwLgogCQkJCSAq LwogCQkJCXNjcmF0Y2gub3Bjb2RlID0gRUVPUF9BUlJBWUVYUFI7Ci0JCQkJc2NyYXRjaC5k LmFycmF5ZXhwci5lbGVtdmFsdWVzID0KKwkJCQlzY3JhdGNoLmFycmF5ZXhwci5lbGVtdmFs dWVzID0KIAkJCQkJKERhdHVtICopIHBhbGxvYyhzaXplb2YoRGF0dW0pICogbmVsZW1zKTsK LQkJCQlzY3JhdGNoLmQuYXJyYXlleHByLmVsZW1udWxscyA9CisJCQkJc2NyYXRjaC5hcnJh eWV4cHIuZWxlbW51bGxzID0KIAkJCQkJKGJvb2wgKikgcGFsbG9jKHNpemVvZihib29sKSAq IG5lbGVtcyk7Ci0JCQkJc2NyYXRjaC5kLmFycmF5ZXhwci5uZWxlbXMgPSBuZWxlbXM7CisJ CQkJc2NyYXRjaC5hcnJheWV4cHIubmVsZW1zID0gbmVsZW1zOwogCiAJCQkJLyogZmlsbCBy ZW1haW5pbmcgZmllbGRzIG9mIHN0ZXAgKi8KLQkJCQlzY3JhdGNoLmQuYXJyYXlleHByLm11 bHRpZGltcyA9IGFycmF5ZXhwci0+bXVsdGlkaW1zOwotCQkJCXNjcmF0Y2guZC5hcnJheWV4 cHIuZWxlbXR5cGUgPSBhcnJheWV4cHItPmVsZW1lbnRfdHlwZWlkOworCQkJCXNjcmF0Y2gu YXJyYXlleHByLm11bHRpZGltcyA9IGFycmF5ZXhwci0+bXVsdGlkaW1zOworCQkJCXNjcmF0 Y2guYXJyYXlleHByLmVsZW10eXBlID0gYXJyYXlleHByLT5lbGVtZW50X3R5cGVpZDsKIAog CQkJCS8qIGRvIG9uZS10aW1lIGNhdGFsb2cgbG9va3VwIGZvciB0eXBlIGluZm8gKi8KIAkJ CQlnZXRfdHlwbGVuYnl2YWxhbGlnbihhcnJheWV4cHItPmVsZW1lbnRfdHlwZWlkLAotCQkJ CQkJCQkJICZzY3JhdGNoLmQuYXJyYXlleHByLmVsZW1sZW5ndGgsCi0JCQkJCQkJCQkgJnNj cmF0Y2guZC5hcnJheWV4cHIuZWxlbWJ5dmFsLAotCQkJCQkJCQkJICZzY3JhdGNoLmQuYXJy YXlleHByLmVsZW1hbGlnbik7CisJCQkJCQkJCQkgJnNjcmF0Y2guYXJyYXlleHByLmVsZW1s ZW5ndGgsCisJCQkJCQkJCQkgJnNjcmF0Y2guYXJyYXlleHByLmVsZW1ieXZhbCwKKwkJCQkJ CQkJCSAmc2NyYXRjaC5hcnJheWV4cHIuZWxlbWFsaWduKTsKIAogCQkJCS8qIHByZXBhcmUg dG8gZXZhbHVhdGUgYWxsIGFyZ3VtZW50cyAqLwogCQkJCWVsZW1vZmYgPSAwOwpAQCAtMTk1 Miw4ICsxOTUyLDggQEAgRXhlY0luaXRFeHByUmVjKEV4cHIgKm5vZGUsIEV4cHJTdGF0ZSAq c3RhdGUsCiAJCQkJCUV4cHIJICAgKmUgPSAoRXhwciAqKSBsZmlyc3QobGMpOwogCiAJCQkJ CUV4ZWNJbml0RXhwclJlYyhlLCBzdGF0ZSwKLQkJCQkJCQkJCSZzY3JhdGNoLmQuYXJyYXll eHByLmVsZW12YWx1ZXNbZWxlbW9mZl0sCi0JCQkJCQkJCQkmc2NyYXRjaC5kLmFycmF5ZXhw ci5lbGVtbnVsbHNbZWxlbW9mZl0pOworCQkJCQkJCQkJJnNjcmF0Y2guYXJyYXlleHByLmVs ZW12YWx1ZXNbZWxlbW9mZl0sCisJCQkJCQkJCQkmc2NyYXRjaC5hcnJheWV4cHIuZWxlbW51 bGxzW2VsZW1vZmZdKTsKIAkJCQkJZWxlbW9mZisrOwogCQkJCX0KIApAQCAtMjAwMiwxNSAr MjAwMiwxNSBAQCBFeGVjSW5pdEV4cHJSZWMoRXhwciAqbm9kZSwgRXhwclN0YXRlICpzdGF0 ZSwKIAkJCQkgKiBhIGZpbmFsIHN0ZXAgZm9ybWluZyB0aGUgY29tcG9zaXRlIGRhdHVtLgog CQkJCSAqLwogCQkJCXNjcmF0Y2gub3Bjb2RlID0gRUVPUF9ST1c7Ci0JCQkJc2NyYXRjaC5k LnJvdy50dXBkZXNjID0gdHVwZGVzYzsKKwkJCQlzY3JhdGNoLnJvdy50dXBkZXNjID0gdHVw ZGVzYzsKIAogCQkJCS8qIHNwYWNlIGZvciB0aGUgaW5kaXZpZHVhbCBmaWVsZCBkYXR1bXMg Ki8KLQkJCQlzY3JhdGNoLmQucm93LmVsZW12YWx1ZXMgPQorCQkJCXNjcmF0Y2gucm93LmVs ZW12YWx1ZXMgPQogCQkJCQkoRGF0dW0gKikgcGFsbG9jKHNpemVvZihEYXR1bSkgKiBuZWxl bXMpOwotCQkJCXNjcmF0Y2guZC5yb3cuZWxlbW51bGxzID0KKwkJCQlzY3JhdGNoLnJvdy5l bGVtbnVsbHMgPQogCQkJCQkoYm9vbCAqKSBwYWxsb2Moc2l6ZW9mKGJvb2wpICogbmVsZW1z KTsKIAkJCQkvKiBhcyBleHBsYWluZWQgYWJvdmUsIG1ha2Ugc3VyZSBhbnkgZXh0cmEgY29s dW1ucyBhcmUgbnVsbCAqLwotCQkJCW1lbXNldChzY3JhdGNoLmQucm93LmVsZW1udWxscywg dHJ1ZSwgc2l6ZW9mKGJvb2wpICogbmVsZW1zKTsKKwkJCQltZW1zZXQoc2NyYXRjaC5yb3cu ZWxlbW51bGxzLCB0cnVlLCBzaXplb2YoYm9vbCkgKiBuZWxlbXMpOwogCiAJCQkJLyogU2V0 IHVwIGV2YWx1YXRpb24sIHNraXBwaW5nIGFueSBkZWxldGVkIGNvbHVtbnMgKi8KIAkJCQlp ID0gMDsKQEAgLTIwNDYsOCArMjA0Niw4IEBAIEV4ZWNJbml0RXhwclJlYyhFeHByICpub2Rl LCBFeHByU3RhdGUgKnN0YXRlLAogCiAJCQkJCS8qIEV2YWx1YXRlIGNvbHVtbiBleHByIGlu dG8gYXBwcm9wcmlhdGUgd29ya3NwYWNlIHNsb3QgKi8KIAkJCQkJRXhlY0luaXRFeHByUmVj KGUsIHN0YXRlLAotCQkJCQkJCQkJJnNjcmF0Y2guZC5yb3cuZWxlbXZhbHVlc1tpXSwKLQkJ CQkJCQkJCSZzY3JhdGNoLmQucm93LmVsZW1udWxsc1tpXSk7CisJCQkJCQkJCQkmc2NyYXRj aC5yb3cuZWxlbXZhbHVlc1tpXSwKKwkJCQkJCQkJCSZzY3JhdGNoLnJvdy5lbGVtbnVsbHNb aV0pOwogCQkJCQlpKys7CiAJCQkJfQogCkBAIC0yMTMwLDEyICsyMTMwLDEyIEBAIEV4ZWNJ bml0RXhwclJlYyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRlLAogCQkJCQkJCQkJJmZj aW5mby0+YXJnc1sxXS52YWx1ZSwgJmZjaW5mby0+YXJnc1sxXS5pc251bGwpOwogCiAJCQkJ CXNjcmF0Y2gub3Bjb2RlID0gRUVPUF9ST1dDT01QQVJFX1NURVA7Ci0JCQkJCXNjcmF0Y2gu ZC5yb3djb21wYXJlX3N0ZXAuZmluZm8gPSBmaW5mbzsKLQkJCQkJc2NyYXRjaC5kLnJvd2Nv bXBhcmVfc3RlcC5mY2luZm9fZGF0YSA9IGZjaW5mbzsKLQkJCQkJc2NyYXRjaC5kLnJvd2Nv bXBhcmVfc3RlcC5mbl9hZGRyID0gZmluZm8tPmZuX2FkZHI7CisJCQkJCXNjcmF0Y2gucm93 Y29tcGFyZV9zdGVwLmZpbmZvID0gZmluZm87CisJCQkJCXNjcmF0Y2gucm93Y29tcGFyZV9z dGVwLmZjaW5mb19kYXRhID0gZmNpbmZvOworCQkJCQlzY3JhdGNoLnJvd2NvbXBhcmVfc3Rl cC5mbl9hZGRyID0gZmluZm8tPmZuX2FkZHI7CiAJCQkJCS8qIGp1bXAgdGFyZ2V0cyBmaWxs ZWQgYmVsb3cgKi8KLQkJCQkJc2NyYXRjaC5kLnJvd2NvbXBhcmVfc3RlcC5qdW1wbnVsbCA9 IC0xOwotCQkJCQlzY3JhdGNoLmQucm93Y29tcGFyZV9zdGVwLmp1bXBkb25lID0gLTE7CisJ CQkJCXNjcmF0Y2gucm93Y29tcGFyZV9zdGVwLmp1bXBudWxsID0gLTE7CisJCQkJCXNjcmF0 Y2gucm93Y29tcGFyZV9zdGVwLmp1bXBkb25lID0gLTE7CiAKIAkJCQkJRXhwckV2YWxQdXNo U3RlcChzdGF0ZSwgJnNjcmF0Y2gpOwogCQkJCQlhZGp1c3RfanVtcHMgPSBsYXBwZW5kX2lu dChhZGp1c3RfanVtcHMsCkBAIC0yMTQ5LDE0ICsyMTQ5LDE0IEBAIEV4ZWNJbml0RXhwclJl YyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRlLAogCQkJCWlmIChub3BlcnMgPT0gMCkK IAkJCQl7CiAJCQkJCXNjcmF0Y2gub3Bjb2RlID0gRUVPUF9DT05TVDsKLQkJCQkJc2NyYXRj aC5kLmNvbnN0dmFsLnZhbHVlID0gSW50MzJHZXREYXR1bSgwKTsKLQkJCQkJc2NyYXRjaC5k LmNvbnN0dmFsLmlzbnVsbCA9IGZhbHNlOworCQkJCQlzY3JhdGNoLmNvbnN0dmFsLnZhbHVl ID0gSW50MzJHZXREYXR1bSgwKTsKKwkJCQkJc2NyYXRjaC5jb25zdHZhbC5pc251bGwgPSBm YWxzZTsKIAkJCQkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgJnNjcmF0Y2gpOwogCQkJCX0K IAogCQkJCS8qIEZpbmFsbHksIGV4YW1pbmUgdGhlIGxhc3QgY29tcGFyaXNvbiByZXN1bHQg Ki8KIAkJCQlzY3JhdGNoLm9wY29kZSA9IEVFT1BfUk9XQ09NUEFSRV9GSU5BTDsKLQkJCQlz Y3JhdGNoLmQucm93Y29tcGFyZV9maW5hbC5jbXB0eXBlID0gcmNleHByLT5jbXB0eXBlOwor CQkJCXNjcmF0Y2gucm93Y29tcGFyZV9maW5hbC5jbXB0eXBlID0gcmNleHByLT5jbXB0eXBl OwogCQkJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsICZzY3JhdGNoKTsKIAogCQkJCS8qIGFk anVzdCBqdW1wIHRhcmdldHMgKi8KQEAgLTIxNjUsMTMgKzIxNjUsMTMgQEAgRXhlY0luaXRF eHByUmVjKEV4cHIgKm5vZGUsIEV4cHJTdGF0ZSAqc3RhdGUsCiAJCQkJCUV4cHJFdmFsU3Rl cCAqYXMgPSAmc3RhdGUtPnN0ZXBzW2xmaXJzdF9pbnQobGMpXTsKIAogCQkJCQlBc3NlcnQo YXMtPm9wY29kZSA9PSBFRU9QX1JPV0NPTVBBUkVfU1RFUCk7Ci0JCQkJCUFzc2VydChhcy0+ ZC5yb3djb21wYXJlX3N0ZXAuanVtcGRvbmUgPT0gLTEpOwotCQkJCQlBc3NlcnQoYXMtPmQu cm93Y29tcGFyZV9zdGVwLmp1bXBudWxsID09IC0xKTsKKwkJCQkJQXNzZXJ0KGFzLT5yb3dj b21wYXJlX3N0ZXAuanVtcGRvbmUgPT0gLTEpOworCQkJCQlBc3NlcnQoYXMtPnJvd2NvbXBh cmVfc3RlcC5qdW1wbnVsbCA9PSAtMSk7CiAKIAkJCQkJLyoganVtcCB0byBjb21wYXJpc29u IGV2YWx1YXRpb24gKi8KLQkJCQkJYXMtPmQucm93Y29tcGFyZV9zdGVwLmp1bXBkb25lID0g c3RhdGUtPnN0ZXBzX2xlbiAtIDE7CisJCQkJCWFzLT5yb3djb21wYXJlX3N0ZXAuanVtcGRv bmUgPSBzdGF0ZS0+c3RlcHNfbGVuIC0gMTsKIAkJCQkJLyoganVtcCB0byB0aGUgZm9sbG93 aW5nIGV4cHJlc3Npb24gKi8KLQkJCQkJYXMtPmQucm93Y29tcGFyZV9zdGVwLmp1bXBudWxs ID0gc3RhdGUtPnN0ZXBzX2xlbjsKKwkJCQkJYXMtPnJvd2NvbXBhcmVfc3RlcC5qdW1wbnVs bCA9IHN0YXRlLT5zdGVwc19sZW47CiAJCQkJfQogCiAJCQkJYnJlYWs7CkBAIC0yMTk5LDcg KzIxOTksNyBAQCBFeGVjSW5pdEV4cHJSZWMoRXhwciAqbm9kZSwgRXhwclN0YXRlICpzdGF0 ZSwKIAogCQkJCQkvKiBpZiBpdCdzIG5vdCBudWxsLCBza2lwIHRvIGVuZCBvZiBDT0FMRVND RSBleHByICovCiAJCQkJCXNjcmF0Y2gub3Bjb2RlID0gRUVPUF9KVU1QX0lGX05PVF9OVUxM OwotCQkJCQlzY3JhdGNoLmQuanVtcC5qdW1wZG9uZSA9IC0xOwkvKiBhZGp1c3QgbGF0ZXIg Ki8KKwkJCQkJc2NyYXRjaC5qdW1wLmp1bXBkb25lID0gLTE7IC8qIGFkanVzdCBsYXRlciAq LwogCQkJCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCAmc2NyYXRjaCk7CiAKIAkJCQkJYWRq dXN0X2p1bXBzID0gbGFwcGVuZF9pbnQoYWRqdXN0X2p1bXBzLApAQCAtMjIxOCw4ICsyMjE4 LDggQEAgRXhlY0luaXRFeHByUmVjKEV4cHIgKm5vZGUsIEV4cHJTdGF0ZSAqc3RhdGUsCiAJ CQkJCUV4cHJFdmFsU3RlcCAqYXMgPSAmc3RhdGUtPnN0ZXBzW2xmaXJzdF9pbnQobGMpXTsK IAogCQkJCQlBc3NlcnQoYXMtPm9wY29kZSA9PSBFRU9QX0pVTVBfSUZfTk9UX05VTEwpOwot CQkJCQlBc3NlcnQoYXMtPmQuanVtcC5qdW1wZG9uZSA9PSAtMSk7Ci0JCQkJCWFzLT5kLmp1 bXAuanVtcGRvbmUgPSBzdGF0ZS0+c3RlcHNfbGVuOworCQkJCQlBc3NlcnQoYXMtPmp1bXAu anVtcGRvbmUgPT0gLTEpOworCQkJCQlhcy0+anVtcC5qdW1wZG9uZSA9IHN0YXRlLT5zdGVw c19sZW47CiAJCQkJfQogCiAJCQkJYnJlYWs7CkBAIC0yMjYxLDE1ICsyMjYxLDE1IEBAIEV4 ZWNJbml0RXhwclJlYyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRlLAogCiAJCQkJc2Ny YXRjaC5vcGNvZGUgPSBFRU9QX01JTk1BWDsKIAkJCQkvKiBhbGxvY2F0ZSBzcGFjZSB0byBz dG9yZSBhcmd1bWVudHMgKi8KLQkJCQlzY3JhdGNoLmQubWlubWF4LnZhbHVlcyA9CisJCQkJ c2NyYXRjaC5taW5tYXgudmFsdWVzID0KIAkJCQkJKERhdHVtICopIHBhbGxvYyhzaXplb2Yo RGF0dW0pICogbmVsZW1zKTsKLQkJCQlzY3JhdGNoLmQubWlubWF4Lm51bGxzID0KKwkJCQlz Y3JhdGNoLm1pbm1heC5udWxscyA9CiAJCQkJCShib29sICopIHBhbGxvYyhzaXplb2YoYm9v bCkgKiBuZWxlbXMpOwotCQkJCXNjcmF0Y2guZC5taW5tYXgubmVsZW1zID0gbmVsZW1zOwor CQkJCXNjcmF0Y2gubWlubWF4Lm5lbGVtcyA9IG5lbGVtczsKIAotCQkJCXNjcmF0Y2guZC5t aW5tYXgub3AgPSBtaW5tYXhleHByLT5vcDsKLQkJCQlzY3JhdGNoLmQubWlubWF4LmZpbmZv ID0gZmluZm87Ci0JCQkJc2NyYXRjaC5kLm1pbm1heC5mY2luZm9fZGF0YSA9IGZjaW5mbzsK KwkJCQlzY3JhdGNoLm1pbm1heC5vcCA9IG1pbm1heGV4cHItPm9wOworCQkJCXNjcmF0Y2gu bWlubWF4LmZpbmZvID0gZmluZm87CisJCQkJc2NyYXRjaC5taW5tYXguZmNpbmZvX2RhdGEg PSBmY2luZm87CiAKIAkJCQkvKiBldmFsdWF0ZSBleHByZXNzaW9ucyBpbnRvIG1pbm1heC0+ dmFsdWVzL251bGxzICovCiAJCQkJb2ZmID0gMDsKQEAgLTIyNzgsOCArMjI3OCw4IEBAIEV4 ZWNJbml0RXhwclJlYyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRlLAogCQkJCQlFeHBy CSAgICplID0gKEV4cHIgKikgbGZpcnN0KGxjKTsKIAogCQkJCQlFeGVjSW5pdEV4cHJSZWMo ZSwgc3RhdGUsCi0JCQkJCQkJCQkmc2NyYXRjaC5kLm1pbm1heC52YWx1ZXNbb2ZmXSwKLQkJ CQkJCQkJCSZzY3JhdGNoLmQubWlubWF4Lm51bGxzW29mZl0pOworCQkJCQkJCQkJJnNjcmF0 Y2gubWlubWF4LnZhbHVlc1tvZmZdLAorCQkJCQkJCQkJJnNjcmF0Y2gubWlubWF4Lm51bGxz W29mZl0pOwogCQkJCQlvZmYrKzsKIAkJCQl9CiAKQEAgLTIyOTMsNyArMjI5Myw3IEBAIEV4 ZWNJbml0RXhwclJlYyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRlLAogCQkJCVNRTFZh bHVlRnVuY3Rpb24gKnN2ZiA9IChTUUxWYWx1ZUZ1bmN0aW9uICopIG5vZGU7CiAKIAkJCQlz Y3JhdGNoLm9wY29kZSA9IEVFT1BfU1FMVkFMVUVGVU5DVElPTjsKLQkJCQlzY3JhdGNoLmQu c3FsdmFsdWVmdW5jdGlvbi5zdmYgPSBzdmY7CisJCQkJc2NyYXRjaC5zcWx2YWx1ZWZ1bmN0 aW9uLnN2ZiA9IHN2ZjsKIAogCQkJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsICZzY3JhdGNo KTsKIAkJCQlicmVhazsKQEAgLTIzMDgsMzMgKzIzMDgsMzMgQEAgRXhlY0luaXRFeHByUmVj KEV4cHIgKm5vZGUsIEV4cHJTdGF0ZSAqc3RhdGUsCiAJCQkJTGlzdENlbGwgICAqYXJnOwog CiAJCQkJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX1hNTEVYUFI7Ci0JCQkJc2NyYXRjaC5kLnht bGV4cHIueGV4cHIgPSB4ZXhwcjsKKwkJCQlzY3JhdGNoLnhtbGV4cHIueGV4cHIgPSB4ZXhw cjsKIAogCQkJCS8qIGFsbG9jYXRlIHNwYWNlIGZvciBzdG9yaW5nIGFsbCB0aGUgYXJndW1l bnRzICovCiAJCQkJaWYgKG5uYW1lZCkKIAkJCQl7Ci0JCQkJCXNjcmF0Y2guZC54bWxleHBy Lm5hbWVkX2FyZ3ZhbHVlID0KKwkJCQkJc2NyYXRjaC54bWxleHByLm5hbWVkX2FyZ3ZhbHVl ID0KIAkJCQkJCShEYXR1bSAqKSBwYWxsb2Moc2l6ZW9mKERhdHVtKSAqIG5uYW1lZCk7Ci0J CQkJCXNjcmF0Y2guZC54bWxleHByLm5hbWVkX2FyZ251bGwgPQorCQkJCQlzY3JhdGNoLnht bGV4cHIubmFtZWRfYXJnbnVsbCA9CiAJCQkJCQkoYm9vbCAqKSBwYWxsb2Moc2l6ZW9mKGJv b2wpICogbm5hbWVkKTsKIAkJCQl9CiAJCQkJZWxzZQogCQkJCXsKLQkJCQkJc2NyYXRjaC5k LnhtbGV4cHIubmFtZWRfYXJndmFsdWUgPSBOVUxMOwotCQkJCQlzY3JhdGNoLmQueG1sZXhw ci5uYW1lZF9hcmdudWxsID0gTlVMTDsKKwkJCQkJc2NyYXRjaC54bWxleHByLm5hbWVkX2Fy Z3ZhbHVlID0gTlVMTDsKKwkJCQkJc2NyYXRjaC54bWxleHByLm5hbWVkX2FyZ251bGwgPSBO VUxMOwogCQkJCX0KIAogCQkJCWlmIChuYXJncykKIAkJCQl7Ci0JCQkJCXNjcmF0Y2guZC54 bWxleHByLmFyZ3ZhbHVlID0KKwkJCQkJc2NyYXRjaC54bWxleHByLmFyZ3ZhbHVlID0KIAkJ CQkJCShEYXR1bSAqKSBwYWxsb2Moc2l6ZW9mKERhdHVtKSAqIG5hcmdzKTsKLQkJCQkJc2Ny YXRjaC5kLnhtbGV4cHIuYXJnbnVsbCA9CisJCQkJCXNjcmF0Y2gueG1sZXhwci5hcmdudWxs ID0KIAkJCQkJCShib29sICopIHBhbGxvYyhzaXplb2YoYm9vbCkgKiBuYXJncyk7CiAJCQkJ fQogCQkJCWVsc2UKIAkJCQl7Ci0JCQkJCXNjcmF0Y2guZC54bWxleHByLmFyZ3ZhbHVlID0g TlVMTDsKLQkJCQkJc2NyYXRjaC5kLnhtbGV4cHIuYXJnbnVsbCA9IE5VTEw7CisJCQkJCXNj cmF0Y2gueG1sZXhwci5hcmd2YWx1ZSA9IE5VTEw7CisJCQkJCXNjcmF0Y2gueG1sZXhwci5h cmdudWxsID0gTlVMTDsKIAkJCQl9CiAKIAkJCQkvKiBwcmVwYXJlIGFyZ3VtZW50IGV4ZWN1 dGlvbiAqLwpAQCAtMjM0NCw4ICsyMzQ0LDggQEAgRXhlY0luaXRFeHByUmVjKEV4cHIgKm5v ZGUsIEV4cHJTdGF0ZSAqc3RhdGUsCiAJCQkJCUV4cHIJICAgKmUgPSAoRXhwciAqKSBsZmly c3QoYXJnKTsKIAogCQkJCQlFeGVjSW5pdEV4cHJSZWMoZSwgc3RhdGUsCi0JCQkJCQkJCQkm c2NyYXRjaC5kLnhtbGV4cHIubmFtZWRfYXJndmFsdWVbb2ZmXSwKLQkJCQkJCQkJCSZzY3Jh dGNoLmQueG1sZXhwci5uYW1lZF9hcmdudWxsW29mZl0pOworCQkJCQkJCQkJJnNjcmF0Y2gu eG1sZXhwci5uYW1lZF9hcmd2YWx1ZVtvZmZdLAorCQkJCQkJCQkJJnNjcmF0Y2gueG1sZXhw ci5uYW1lZF9hcmdudWxsW29mZl0pOwogCQkJCQlvZmYrKzsKIAkJCQl9CiAKQEAgLTIzNTUs OCArMjM1NSw4IEBAIEV4ZWNJbml0RXhwclJlYyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0 YXRlLAogCQkJCQlFeHByCSAgICplID0gKEV4cHIgKikgbGZpcnN0KGFyZyk7CiAKIAkJCQkJ RXhlY0luaXRFeHByUmVjKGUsIHN0YXRlLAotCQkJCQkJCQkJJnNjcmF0Y2guZC54bWxleHBy LmFyZ3ZhbHVlW29mZl0sCi0JCQkJCQkJCQkmc2NyYXRjaC5kLnhtbGV4cHIuYXJnbnVsbFtv ZmZdKTsKKwkJCQkJCQkJCSZzY3JhdGNoLnhtbGV4cHIuYXJndmFsdWVbb2ZmXSwKKwkJCQkJ CQkJCSZzY3JhdGNoLnhtbGV4cHIuYXJnbnVsbFtvZmZdKTsKIAkJCQkJb2ZmKys7CiAJCQkJ fQogCkBAIC0yNDAxLDcgKzI0MDEsNyBAQCBFeGVjSW5pdEV4cHJSZWMoRXhwciAqbm9kZSwg RXhwclN0YXRlICpzdGF0ZSwKIAkJCQkJamNzdGF0ZSA9IHBhbGxvYzAoc2l6ZW9mKEpzb25D b25zdHJ1Y3RvckV4cHJTdGF0ZSkpOwogCiAJCQkJCXNjcmF0Y2gub3Bjb2RlID0gRUVPUF9K U09OX0NPTlNUUlVDVE9SOwotCQkJCQlzY3JhdGNoLmQuanNvbl9jb25zdHJ1Y3Rvci5qY3N0 YXRlID0gamNzdGF0ZTsKKwkJCQkJc2NyYXRjaC5qc29uX2NvbnN0cnVjdG9yLmpjc3RhdGUg PSBqY3N0YXRlOwogCiAJCQkJCWpjc3RhdGUtPmNvbnN0cnVjdG9yID0gY3RvcjsKIAkJCQkJ amNzdGF0ZS0+YXJnX3ZhbHVlcyA9IChEYXR1bSAqKSBwYWxsb2Moc2l6ZW9mKERhdHVtKSAq IG5hcmdzKTsKQEAgLTI0ODEsNyArMjQ4MSw3IEBAIEV4ZWNJbml0RXhwclJlYyhFeHByICpu b2RlLCBFeHByU3RhdGUgKnN0YXRlLAogCQkJCUV4ZWNJbml0RXhwclJlYygoRXhwciAqKSBw cmVkLT5leHByLCBzdGF0ZSwgcmVzdiwgcmVzbnVsbCk7CiAKIAkJCQlzY3JhdGNoLm9wY29k ZSA9IEVFT1BfSVNfSlNPTjsKLQkJCQlzY3JhdGNoLmQuaXNfanNvbi5wcmVkID0gcHJlZDsK KwkJCQlzY3JhdGNoLmlzX2pzb24ucHJlZCA9IHByZWQ7CiAKIAkJCQlFeHByRXZhbFB1c2hT dGVwKHN0YXRlLCAmc2NyYXRjaCk7CiAJCQkJYnJlYWs7CkBAIC0yNTI4LDcgKzI1MjgsNyBA QCBFeGVjSW5pdEV4cHJSZWMoRXhwciAqbm9kZSwgRXhwclN0YXRlICpzdGF0ZSwKIAkJCQkJ CSAoaW50KSBudGVzdC0+bnVsbHRlc3R0eXBlKTsKIAkJCQl9CiAJCQkJLyogaW5pdGlhbGl6 ZSBjYWNoZSBpbiBjYXNlIGl0J3MgYSByb3cgdGVzdCAqLwotCQkJCXNjcmF0Y2guZC5udWxs dGVzdF9yb3cucm93Y2FjaGUuY2FjaGVwdHIgPSBOVUxMOworCQkJCXNjcmF0Y2gubnVsbHRl c3Rfcm93LnJvd2NhY2hlLmNhY2hlcHRyID0gTlVMTDsKIAogCQkJCS8qIGZpcnN0IGV2YWx1 YXRlIGFyZ3VtZW50IGludG8gcmVzdWx0IHZhcmlhYmxlICovCiAJCQkJRXhlY0luaXRFeHBy UmVjKG50ZXN0LT5hcmcsIHN0YXRlLApAQCAtMjYwNyw4ICsyNjA3LDggQEAgRXhlY0luaXRF eHByUmVjKEV4cHIgKm5vZGUsIEV4cHJTdGF0ZSAqc3RhdGUsCiAJCQkJewogCQkJCQlzY3Jh dGNoLm9wY29kZSA9IEVFT1BfRE9NQUlOX1RFU1RWQUw7CiAJCQkJCS8qIHdlIHNoYXJlIGlu c3RydWN0aW9uIHVuaW9uIHZhcmlhbnQgd2l0aCBjYXNlIHRlc3R2YWwgKi8KLQkJCQkJc2Ny YXRjaC5kLmNhc2V0ZXN0LnZhbHVlID0gc3RhdGUtPmlubmVybW9zdF9kb21haW52YWw7Ci0J CQkJCXNjcmF0Y2guZC5jYXNldGVzdC5pc251bGwgPSBzdGF0ZS0+aW5uZXJtb3N0X2RvbWFp bm51bGw7CisJCQkJCXNjcmF0Y2guY2FzZXRlc3QudmFsdWUgPSBzdGF0ZS0+aW5uZXJtb3N0 X2RvbWFpbnZhbDsKKwkJCQkJc2NyYXRjaC5jYXNldGVzdC5pc251bGwgPSBzdGF0ZS0+aW5u ZXJtb3N0X2RvbWFpbm51bGw7CiAJCQkJfQogCQkJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUs ICZzY3JhdGNoKTsKIAkJCQlicmVhazsKQEAgLTI2MjYsOCArMjYyNiw4IEBAIEV4ZWNJbml0 RXhwclJlYyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRlLAogCQkJCU5leHRWYWx1ZUV4 cHIgKm52ZSA9IChOZXh0VmFsdWVFeHByICopIG5vZGU7CiAKIAkJCQlzY3JhdGNoLm9wY29k ZSA9IEVFT1BfTkVYVFZBTFVFRVhQUjsKLQkJCQlzY3JhdGNoLmQubmV4dHZhbHVlZXhwci5z ZXFpZCA9IG52ZS0+c2VxaWQ7Ci0JCQkJc2NyYXRjaC5kLm5leHR2YWx1ZWV4cHIuc2VxdHlw aWQgPSBudmUtPnR5cGVJZDsKKwkJCQlzY3JhdGNoLm5leHR2YWx1ZWV4cHIuc2VxaWQgPSBu dmUtPnNlcWlkOworCQkJCXNjcmF0Y2gubmV4dHZhbHVlZXhwci5zZXF0eXBpZCA9IG52ZS0+ dHlwZUlkOwogCiAJCQkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgJnNjcmF0Y2gpOwogCQkJ CWJyZWFrOwpAQCAtMjY0MCw5ICsyNjQwLDkgQEAgRXhlY0luaXRFeHByUmVjKEV4cHIgKm5v ZGUsIEV4cHJTdGF0ZSAqc3RhdGUsCiAKIAkJCQkvKiBTa2lwIGV4cHJlc3Npb24gZXZhbHVh dGlvbiBpZiBPTEQvTkVXIHJvdyBkb2Vzbid0IGV4aXN0ICovCiAJCQkJc2NyYXRjaC5vcGNv ZGUgPSBFRU9QX1JFVFVSTklOR0VYUFI7Ci0JCQkJc2NyYXRjaC5kLnJldHVybmluZ2V4cHIu bnVsbGZsYWcgPSByZXhwci0+cmV0b2xkID8KKwkJCQlzY3JhdGNoLnJldHVybmluZ2V4cHIu bnVsbGZsYWcgPSByZXhwci0+cmV0b2xkID8KIAkJCQkJRUVPX0ZMQUdfT0xEX0lTX05VTEwg OiBFRU9fRkxBR19ORVdfSVNfTlVMTDsKLQkJCQlzY3JhdGNoLmQucmV0dXJuaW5nZXhwci5q dW1wZG9uZSA9IC0xOwkvKiBzZXQgYmVsb3cgKi8KKwkJCQlzY3JhdGNoLnJldHVybmluZ2V4 cHIuanVtcGRvbmUgPSAtMTsJLyogc2V0IGJlbG93ICovCiAJCQkJRXhwckV2YWxQdXNoU3Rl cChzdGF0ZSwgJnNjcmF0Y2gpOwogCQkJCXJldHN0ZXAgPSBzdGF0ZS0+c3RlcHNfbGVuIC0g MTsKIApAQCAtMjY1MCw3ICsyNjUwLDcgQEAgRXhlY0luaXRFeHByUmVjKEV4cHIgKm5vZGUs IEV4cHJTdGF0ZSAqc3RhdGUsCiAJCQkJRXhlY0luaXRFeHByUmVjKHJleHByLT5yZXRleHBy LCBzdGF0ZSwgcmVzdiwgcmVzbnVsbCk7CiAKIAkJCQkvKiBKdW1wIHRhcmdldCB1c2VkIGlm IE9MRC9ORVcgcm93IGRvZXNuJ3QgZXhpc3QgKi8KLQkJCQlzdGF0ZS0+c3RlcHNbcmV0c3Rl cF0uZC5yZXR1cm5pbmdleHByLmp1bXBkb25lID0gc3RhdGUtPnN0ZXBzX2xlbjsKKwkJCQlz dGF0ZS0+c3RlcHNbcmV0c3RlcF0ucmV0dXJuaW5nZXhwci5qdW1wZG9uZSA9IHN0YXRlLT5z dGVwc19sZW47CiAKIAkJCQkvKiBVcGRhdGUgRXhwclN0YXRlIGZsYWdzICovCiAJCQkJaWYg KHJleHByLT5yZXRvbGQpCkBAIC0yNzMyLDEwICsyNzMyLDEwIEBAIEV4ZWNJbml0RnVuYyhF eHByRXZhbFN0ZXAgKnNjcmF0Y2gsIEV4cHIgKm5vZGUsIExpc3QgKmFyZ3MsIE9pZCBmdW5j aWQsCiAJCQkJCQkJICAgRlVOQ19NQVhfQVJHUykpKTsKIAogCS8qIEFsbG9jYXRlIGZ1bmN0 aW9uIGxvb2t1cCBkYXRhIGFuZCBwYXJhbWV0ZXIgd29ya3NwYWNlIGZvciB0aGlzIGNhbGwg Ki8KLQlzY3JhdGNoLT5kLmZ1bmMuZmluZm8gPSBwYWxsb2MwKHNpemVvZihGbWdySW5mbykp OwotCXNjcmF0Y2gtPmQuZnVuYy5mY2luZm9fZGF0YSA9IHBhbGxvYzAoU2l6ZUZvckZ1bmN0 aW9uQ2FsbEluZm8obmFyZ3MpKTsKLQlmbGluZm8gPSBzY3JhdGNoLT5kLmZ1bmMuZmluZm87 Ci0JZmNpbmZvID0gc2NyYXRjaC0+ZC5mdW5jLmZjaW5mb19kYXRhOworCXNjcmF0Y2gtPmZ1 bmMuZmluZm8gPSBwYWxsb2MwKHNpemVvZihGbWdySW5mbykpOworCXNjcmF0Y2gtPmZ1bmMu ZmNpbmZvX2RhdGEgPSBwYWxsb2MwKFNpemVGb3JGdW5jdGlvbkNhbGxJbmZvKG5hcmdzKSk7 CisJZmxpbmZvID0gc2NyYXRjaC0+ZnVuYy5maW5mbzsKKwlmY2luZm8gPSBzY3JhdGNoLT5m dW5jLmZjaW5mb19kYXRhOwogCiAJLyogU2V0IHVwIHRoZSBwcmltYXJ5IGZtZ3IgbG9va3Vw IGluZm9ybWF0aW9uICovCiAJZm1ncl9pbmZvKGZ1bmNpZCwgZmxpbmZvKTsKQEAgLTI3NDYs OCArMjc0Niw4IEBAIEV4ZWNJbml0RnVuYyhFeHByRXZhbFN0ZXAgKnNjcmF0Y2gsIEV4cHIg Km5vZGUsIExpc3QgKmFyZ3MsIE9pZCBmdW5jaWQsCiAJCQkJCQkJIG5hcmdzLCBpbnB1dGNv bGxpZCwgTlVMTCwgTlVMTCk7CiAKIAkvKiBLZWVwIGV4dHJhIGNvcGllcyBvZiB0aGlzIGlu Zm8gdG8gc2F2ZSBhbiBpbmRpcmVjdGlvbiBhdCBydW50aW1lICovCi0Jc2NyYXRjaC0+ZC5m dW5jLmZuX2FkZHIgPSBmbGluZm8tPmZuX2FkZHI7Ci0Jc2NyYXRjaC0+ZC5mdW5jLm5hcmdz ID0gbmFyZ3M7CisJc2NyYXRjaC0+ZnVuYy5mbl9hZGRyID0gZmxpbmZvLT5mbl9hZGRyOwor CXNjcmF0Y2gtPmZ1bmMubmFyZ3MgPSBuYXJnczsKIAogCS8qIFdlIG9ubHkgc3VwcG9ydCBu b24tc2V0IGZ1bmN0aW9ucyBoZXJlICovCiAJaWYgKGZsaW5mby0+Zm5fcmV0c2V0KQpAQCAt Mjg1Myw5ICsyODUzLDkgQEAgRXhlY0luaXRTdWJQbGFuRXhwcihTdWJQbGFuICpzdWJwbGFu LAogCQkJCQkJJnN0YXRlLT5yZXN2YWx1ZSwgJnN0YXRlLT5yZXNudWxsKTsKIAogCQlzY3Jh dGNoLm9wY29kZSA9IEVFT1BfUEFSQU1fU0VUOwotCQlzY3JhdGNoLmQucGFyYW0ucGFyYW1p ZCA9IHBhcmFtaWQ7CisJCXNjcmF0Y2gucGFyYW0ucGFyYW1pZCA9IHBhcmFtaWQ7CiAJCS8q IHBhcmFtdHlwZSdzIG5vdCBhY3R1YWxseSB1c2VkLCBidXQgd2UgbWlnaHQgYXMgd2VsbCBm aWxsIGl0ICovCi0JCXNjcmF0Y2guZC5wYXJhbS5wYXJhbXR5cGUgPSBleHByVHlwZSgoTm9k ZSAqKSBhcmcpOworCQlzY3JhdGNoLnBhcmFtLnBhcmFtdHlwZSA9IGV4cHJUeXBlKChOb2Rl ICopIGFyZyk7CiAJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsICZzY3JhdGNoKTsKIAl9CiAK QEAgLTI4NjgsNyArMjg2OCw3IEBAIEV4ZWNJbml0U3ViUGxhbkV4cHIoU3ViUGxhbiAqc3Vi cGxhbiwKIAlzY3JhdGNoLm9wY29kZSA9IEVFT1BfU1VCUExBTjsKIAlzY3JhdGNoLnJlc3Zh bHVlID0gcmVzdjsKIAlzY3JhdGNoLnJlc251bGwgPSByZXNudWxsOwotCXNjcmF0Y2guZC5z dWJwbGFuLnNzdGF0ZSA9IHNzdGF0ZTsKKwlzY3JhdGNoLnN1YnBsYW4uc3N0YXRlID0gc3N0 YXRlOwogCiAJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgJnNjcmF0Y2gpOwogfQpAQCAtMjkw OSw1MCArMjkwOSw1MCBAQCBFeGVjUHVzaEV4cHJTZXR1cFN0ZXBzKEV4cHJTdGF0ZSAqc3Rh dGUsIEV4cHJTZXR1cEluZm8gKmluZm8pCiAJaWYgKGluZm8tPmxhc3RfaW5uZXIgPiAwKQog CXsKIAkJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX0lOTkVSX0ZFVENIU09NRTsKLQkJc2NyYXRj aC5kLmZldGNoLmxhc3RfdmFyID0gaW5mby0+bGFzdF9pbm5lcjsKLQkJc2NyYXRjaC5kLmZl dGNoLmZpeGVkID0gZmFsc2U7Ci0JCXNjcmF0Y2guZC5mZXRjaC5raW5kID0gTlVMTDsKLQkJ c2NyYXRjaC5kLmZldGNoLmtub3duX2Rlc2MgPSBOVUxMOworCQlzY3JhdGNoLmZldGNoLmxh c3RfdmFyID0gaW5mby0+bGFzdF9pbm5lcjsKKwkJc2NyYXRjaC5mZXRjaC5maXhlZCA9IGZh bHNlOworCQlzY3JhdGNoLmZldGNoLmtpbmQgPSBOVUxMOworCQlzY3JhdGNoLmZldGNoLmtu b3duX2Rlc2MgPSBOVUxMOwogCQlpZiAoRXhlY0NvbXB1dGVTbG90SW5mbyhzdGF0ZSwgJnNj cmF0Y2gpKQogCQkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgJnNjcmF0Y2gpOwogCX0KIAlp ZiAoaW5mby0+bGFzdF9vdXRlciA+IDApCiAJewogCQlzY3JhdGNoLm9wY29kZSA9IEVFT1Bf T1VURVJfRkVUQ0hTT01FOwotCQlzY3JhdGNoLmQuZmV0Y2gubGFzdF92YXIgPSBpbmZvLT5s YXN0X291dGVyOwotCQlzY3JhdGNoLmQuZmV0Y2guZml4ZWQgPSBmYWxzZTsKLQkJc2NyYXRj aC5kLmZldGNoLmtpbmQgPSBOVUxMOwotCQlzY3JhdGNoLmQuZmV0Y2gua25vd25fZGVzYyA9 IE5VTEw7CisJCXNjcmF0Y2guZmV0Y2gubGFzdF92YXIgPSBpbmZvLT5sYXN0X291dGVyOwor CQlzY3JhdGNoLmZldGNoLmZpeGVkID0gZmFsc2U7CisJCXNjcmF0Y2guZmV0Y2gua2luZCA9 IE5VTEw7CisJCXNjcmF0Y2guZmV0Y2gua25vd25fZGVzYyA9IE5VTEw7CiAJCWlmIChFeGVj Q29tcHV0ZVNsb3RJbmZvKHN0YXRlLCAmc2NyYXRjaCkpCiAJCQlFeHByRXZhbFB1c2hTdGVw KHN0YXRlLCAmc2NyYXRjaCk7CiAJfQogCWlmIChpbmZvLT5sYXN0X3NjYW4gPiAwKQogCXsK IAkJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX1NDQU5fRkVUQ0hTT01FOwotCQlzY3JhdGNoLmQu ZmV0Y2gubGFzdF92YXIgPSBpbmZvLT5sYXN0X3NjYW47Ci0JCXNjcmF0Y2guZC5mZXRjaC5m aXhlZCA9IGZhbHNlOwotCQlzY3JhdGNoLmQuZmV0Y2gua2luZCA9IE5VTEw7Ci0JCXNjcmF0 Y2guZC5mZXRjaC5rbm93bl9kZXNjID0gTlVMTDsKKwkJc2NyYXRjaC5mZXRjaC5sYXN0X3Zh ciA9IGluZm8tPmxhc3Rfc2NhbjsKKwkJc2NyYXRjaC5mZXRjaC5maXhlZCA9IGZhbHNlOwor CQlzY3JhdGNoLmZldGNoLmtpbmQgPSBOVUxMOworCQlzY3JhdGNoLmZldGNoLmtub3duX2Rl c2MgPSBOVUxMOwogCQlpZiAoRXhlY0NvbXB1dGVTbG90SW5mbyhzdGF0ZSwgJnNjcmF0Y2gp KQogCQkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgJnNjcmF0Y2gpOwogCX0KIAlpZiAoaW5m by0+bGFzdF9vbGQgPiAwKQogCXsKIAkJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX09MRF9GRVRD SFNPTUU7Ci0JCXNjcmF0Y2guZC5mZXRjaC5sYXN0X3ZhciA9IGluZm8tPmxhc3Rfb2xkOwot CQlzY3JhdGNoLmQuZmV0Y2guZml4ZWQgPSBmYWxzZTsKLQkJc2NyYXRjaC5kLmZldGNoLmtp bmQgPSBOVUxMOwotCQlzY3JhdGNoLmQuZmV0Y2gua25vd25fZGVzYyA9IE5VTEw7CisJCXNj cmF0Y2guZmV0Y2gubGFzdF92YXIgPSBpbmZvLT5sYXN0X29sZDsKKwkJc2NyYXRjaC5mZXRj aC5maXhlZCA9IGZhbHNlOworCQlzY3JhdGNoLmZldGNoLmtpbmQgPSBOVUxMOworCQlzY3Jh dGNoLmZldGNoLmtub3duX2Rlc2MgPSBOVUxMOwogCQlpZiAoRXhlY0NvbXB1dGVTbG90SW5m byhzdGF0ZSwgJnNjcmF0Y2gpKQogCQkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgJnNjcmF0 Y2gpOwogCX0KIAlpZiAoaW5mby0+bGFzdF9uZXcgPiAwKQogCXsKIAkJc2NyYXRjaC5vcGNv ZGUgPSBFRU9QX05FV19GRVRDSFNPTUU7Ci0JCXNjcmF0Y2guZC5mZXRjaC5sYXN0X3ZhciA9 IGluZm8tPmxhc3RfbmV3OwotCQlzY3JhdGNoLmQuZmV0Y2guZml4ZWQgPSBmYWxzZTsKLQkJ c2NyYXRjaC5kLmZldGNoLmtpbmQgPSBOVUxMOwotCQlzY3JhdGNoLmQuZmV0Y2gua25vd25f ZGVzYyA9IE5VTEw7CisJCXNjcmF0Y2guZmV0Y2gubGFzdF92YXIgPSBpbmZvLT5sYXN0X25l dzsKKwkJc2NyYXRjaC5mZXRjaC5maXhlZCA9IGZhbHNlOworCQlzY3JhdGNoLmZldGNoLmtp bmQgPSBOVUxMOworCQlzY3JhdGNoLmZldGNoLmtub3duX2Rlc2MgPSBOVUxMOwogCQlpZiAo RXhlY0NvbXB1dGVTbG90SW5mbyhzdGF0ZSwgJnNjcmF0Y2gpKQogCQkJRXhwckV2YWxQdXNo U3RlcChzdGF0ZSwgJnNjcmF0Y2gpOwogCX0KQEAgLTMwNzMsMTEgKzMwNzMsMTEgQEAgRXhl Y0NvbXB1dGVTbG90SW5mbyhFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wKQog CQkgICBvcGNvZGUgPT0gRUVPUF9PTERfRkVUQ0hTT01FIHx8CiAJCSAgIG9wY29kZSA9PSBF RU9QX05FV19GRVRDSFNPTUUpOwogCi0JaWYgKG9wLT5kLmZldGNoLmtub3duX2Rlc2MgIT0g TlVMTCkKKwlpZiAob3AtPmZldGNoLmtub3duX2Rlc2MgIT0gTlVMTCkKIAl7Ci0JCWRlc2Mg PSBvcC0+ZC5mZXRjaC5rbm93bl9kZXNjOwotCQl0dHNfb3BzID0gb3AtPmQuZmV0Y2gua2lu ZDsKLQkJaXNmaXhlZCA9IG9wLT5kLmZldGNoLmtpbmQgIT0gTlVMTDsKKwkJZGVzYyA9IG9w LT5mZXRjaC5rbm93bl9kZXNjOworCQl0dHNfb3BzID0gb3AtPmZldGNoLmtpbmQ7CisJCWlz Zml4ZWQgPSBvcC0+ZmV0Y2gua2luZCAhPSBOVUxMOwogCX0KIAllbHNlIGlmICghcGFyZW50 KQogCXsKQEAgLTMxMzgsMTkgKzMxMzgsMTkgQEAgRXhlY0NvbXB1dGVTbG90SW5mbyhFeHBy U3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wKQogCiAJaWYgKGlzZml4ZWQgJiYgZGVz YyAhPSBOVUxMICYmIHR0c19vcHMgIT0gTlVMTCkKIAl7Ci0JCW9wLT5kLmZldGNoLmZpeGVk ID0gdHJ1ZTsKLQkJb3AtPmQuZmV0Y2gua2luZCA9IHR0c19vcHM7Ci0JCW9wLT5kLmZldGNo Lmtub3duX2Rlc2MgPSBkZXNjOworCQlvcC0+ZmV0Y2guZml4ZWQgPSB0cnVlOworCQlvcC0+ ZmV0Y2gua2luZCA9IHR0c19vcHM7CisJCW9wLT5mZXRjaC5rbm93bl9kZXNjID0gZGVzYzsK IAl9CiAJZWxzZQogCXsKLQkJb3AtPmQuZmV0Y2guZml4ZWQgPSBmYWxzZTsKLQkJb3AtPmQu ZmV0Y2gua2luZCA9IE5VTEw7Ci0JCW9wLT5kLmZldGNoLmtub3duX2Rlc2MgPSBOVUxMOwor CQlvcC0+ZmV0Y2guZml4ZWQgPSBmYWxzZTsKKwkJb3AtPmZldGNoLmtpbmQgPSBOVUxMOwor CQlvcC0+ZmV0Y2gua25vd25fZGVzYyA9IE5VTEw7CiAJfQogCiAJLyogaWYgdGhlIHNsb3Qg aXMga25vd24gdG8gYWx3YXlzIHZpcnR1YWwgd2UgbmV2ZXIgbmVlZCB0byBkZWZvcm0gKi8K LQlpZiAob3AtPmQuZmV0Y2guZml4ZWQgJiYgb3AtPmQuZmV0Y2gua2luZCA9PSAmVFRTT3Bz VmlydHVhbCkKKwlpZiAob3AtPmZldGNoLmZpeGVkICYmIG9wLT5mZXRjaC5raW5kID09ICZU VFNPcHNWaXJ0dWFsKQogCQlyZXR1cm4gZmFsc2U7CiAKIAlyZXR1cm4gdHJ1ZTsKQEAgLTMx NjcsMTEgKzMxNjcsMTEgQEAgRXhlY0luaXRXaG9sZVJvd1ZhcihFeHByRXZhbFN0ZXAgKnNj cmF0Y2gsIFZhciAqdmFyaWFibGUsIEV4cHJTdGF0ZSAqc3RhdGUpCiAKIAkvKiBmaWxsIGlu IGFsbCBidXQgdGhlIHRhcmdldCAqLwogCXNjcmF0Y2gtPm9wY29kZSA9IEVFT1BfV0hPTEVS T1c7Ci0Jc2NyYXRjaC0+ZC53aG9sZXJvdy52YXIgPSB2YXJpYWJsZTsKLQlzY3JhdGNoLT5k Lndob2xlcm93LmZpcnN0ID0gdHJ1ZTsKLQlzY3JhdGNoLT5kLndob2xlcm93LnNsb3cgPSBm YWxzZTsKLQlzY3JhdGNoLT5kLndob2xlcm93LnR1cGRlc2MgPSBOVUxMOyAvKiBmaWxsZWQg YXQgcnVudGltZSAqLwotCXNjcmF0Y2gtPmQud2hvbGVyb3cuanVua0ZpbHRlciA9IE5VTEw7 CisJc2NyYXRjaC0+d2hvbGVyb3cudmFyID0gdmFyaWFibGU7CisJc2NyYXRjaC0+d2hvbGVy b3cuZmlyc3QgPSB0cnVlOworCXNjcmF0Y2gtPndob2xlcm93LnNsb3cgPSBmYWxzZTsKKwlz Y3JhdGNoLT53aG9sZXJvdy50dXBkZXNjID0gTlVMTDsJLyogZmlsbGVkIGF0IHJ1bnRpbWUg Ki8KKwlzY3JhdGNoLT53aG9sZXJvdy5qdW5rRmlsdGVyID0gTlVMTDsKIAogCS8qIHVwZGF0 ZSBFeHByU3RhdGUgZmxhZ3MgaWYgVmFyIHJlZmVycyB0byBPTEQvTkVXICovCiAJaWYgKHZh cmlhYmxlLT52YXJyZXR1cm5pbmd0eXBlID09IFZBUl9SRVRVUk5JTkdfT0xEKQpAQCAtMzIy Nyw3ICszMjI3LDcgQEAgRXhlY0luaXRXaG9sZVJvd1ZhcihFeHByRXZhbFN0ZXAgKnNjcmF0 Y2gsIFZhciAqdmFyaWFibGUsIEV4cHJTdGF0ZSAqc3RhdGUpCiAJCQkvKiBJZiBzbywgYnVp bGQgdGhlIGp1bmtmaWx0ZXIgbm93ICovCiAJCQlpZiAoanVua19maWx0ZXJfbmVlZGVkKQog CQkJewotCQkJCXNjcmF0Y2gtPmQud2hvbGVyb3cuanVua0ZpbHRlciA9CisJCQkJc2NyYXRj aC0+d2hvbGVyb3cuanVua0ZpbHRlciA9CiAJCQkJCUV4ZWNJbml0SnVua0ZpbHRlcihzdWJw bGFuLT5wbGFuLT50YXJnZXRsaXN0LAogCQkJCQkJCQkJICAgRXhlY0luaXRFeHRyYVR1cGxl U2xvdChwYXJlbnQtPnN0YXRlLCBOVUxMLAogCQkJCQkJCQkJCQkJCQkJICAmVFRTT3BzVmly dHVhbCkpOwpAQCAtMzMxNCw3ICszMzE0LDcgQEAgRXhlY0luaXRTdWJzY3JpcHRpbmdSZWYo RXhwckV2YWxTdGVwICpzY3JhdGNoLCBTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiwKIAlpZiAo IWlzQXNzaWdubWVudCAmJiBzYnNyb3V0aW5lcy0+ZmV0Y2hfc3RyaWN0KQogCXsKIAkJc2Ny YXRjaC0+b3Bjb2RlID0gRUVPUF9KVU1QX0lGX05VTEw7Ci0JCXNjcmF0Y2gtPmQuanVtcC5q dW1wZG9uZSA9IC0xOwkvKiBhZGp1c3QgbGF0ZXIgKi8KKwkJc2NyYXRjaC0+anVtcC5qdW1w ZG9uZSA9IC0xOwkvKiBhZGp1c3QgbGF0ZXIgKi8KIAkJRXhwckV2YWxQdXNoU3RlcChzdGF0 ZSwgc2NyYXRjaCk7CiAJCWFkanVzdF9qdW1wcyA9IGxhcHBlbmRfaW50KGFkanVzdF9qdW1w cywKIAkJCQkJCQkJICAgc3RhdGUtPnN0ZXBzX2xlbiAtIDEpOwpAQCAtMzM3MCw5ICszMzcw LDkgQEAgRXhlY0luaXRTdWJzY3JpcHRpbmdSZWYoRXhwckV2YWxTdGVwICpzY3JhdGNoLCBT dWJzY3JpcHRpbmdSZWYgKnNic3JlZiwKIAlpZiAobWV0aG9kcy5zYnNfY2hlY2tfc3Vic2Ny aXB0cykKIAl7CiAJCXNjcmF0Y2gtPm9wY29kZSA9IEVFT1BfU0JTUkVGX1NVQlNDUklQVFM7 Ci0JCXNjcmF0Y2gtPmQuc2JzcmVmX3N1YnNjcmlwdC5zdWJzY3JpcHRmdW5jID0gbWV0aG9k cy5zYnNfY2hlY2tfc3Vic2NyaXB0czsKLQkJc2NyYXRjaC0+ZC5zYnNyZWZfc3Vic2NyaXB0 LnN0YXRlID0gc2JzcmVmc3RhdGU7Ci0JCXNjcmF0Y2gtPmQuc2JzcmVmX3N1YnNjcmlwdC5q dW1wZG9uZSA9IC0xOwkvKiBhZGp1c3QgbGF0ZXIgKi8KKwkJc2NyYXRjaC0+c2JzcmVmX3N1 YnNjcmlwdC5zdWJzY3JpcHRmdW5jID0gbWV0aG9kcy5zYnNfY2hlY2tfc3Vic2NyaXB0czsK KwkJc2NyYXRjaC0+c2JzcmVmX3N1YnNjcmlwdC5zdGF0ZSA9IHNic3JlZnN0YXRlOworCQlz Y3JhdGNoLT5zYnNyZWZfc3Vic2NyaXB0Lmp1bXBkb25lID0gLTE7CS8qIGFkanVzdCBsYXRl ciAqLwogCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCBzY3JhdGNoKTsKIAkJYWRqdXN0X2p1 bXBzID0gbGFwcGVuZF9pbnQoYWRqdXN0X2p1bXBzLAogCQkJCQkJCQkgICBzdGF0ZS0+c3Rl cHNfbGVuIC0gMSk7CkBAIC0zNDEyLDggKzM0MTIsOCBAQCBFeGVjSW5pdFN1YnNjcmlwdGlu Z1JlZihFeHByRXZhbFN0ZXAgKnNjcmF0Y2gsIFN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmLAog CQkJCQkJIGVycm1zZygidHlwZSAlcyBkb2VzIG5vdCBzdXBwb3J0IHN1YnNjcmlwdGVkIGFz c2lnbm1lbnQiLAogCQkJCQkJCQlmb3JtYXRfdHlwZV9iZShzYnNyZWYtPnJlZmNvbnRhaW5l cnR5cGUpKSkpOwogCQkJc2NyYXRjaC0+b3Bjb2RlID0gRUVPUF9TQlNSRUZfT0xEOwotCQkJ c2NyYXRjaC0+ZC5zYnNyZWYuc3Vic2NyaXB0ZnVuYyA9IG1ldGhvZHMuc2JzX2ZldGNoX29s ZDsKLQkJCXNjcmF0Y2gtPmQuc2JzcmVmLnN0YXRlID0gc2JzcmVmc3RhdGU7CisJCQlzY3Jh dGNoLT5zYnNyZWYuc3Vic2NyaXB0ZnVuYyA9IG1ldGhvZHMuc2JzX2ZldGNoX29sZDsKKwkJ CXNjcmF0Y2gtPnNic3JlZi5zdGF0ZSA9IHNic3JlZnN0YXRlOwogCQkJRXhwckV2YWxQdXNo U3RlcChzdGF0ZSwgc2NyYXRjaCk7CiAJCX0KIApAQCAtMzQzMiwxNiArMzQzMiwxNiBAQCBF eGVjSW5pdFN1YnNjcmlwdGluZ1JlZihFeHByRXZhbFN0ZXAgKnNjcmF0Y2gsIFN1YnNjcmlw dGluZ1JlZiAqc2JzcmVmLAogCiAJCS8qIGFuZCBwZXJmb3JtIHRoZSBhc3NpZ25tZW50ICov CiAJCXNjcmF0Y2gtPm9wY29kZSA9IEVFT1BfU0JTUkVGX0FTU0lHTjsKLQkJc2NyYXRjaC0+ ZC5zYnNyZWYuc3Vic2NyaXB0ZnVuYyA9IG1ldGhvZHMuc2JzX2Fzc2lnbjsKLQkJc2NyYXRj aC0+ZC5zYnNyZWYuc3RhdGUgPSBzYnNyZWZzdGF0ZTsKKwkJc2NyYXRjaC0+c2JzcmVmLnN1 YnNjcmlwdGZ1bmMgPSBtZXRob2RzLnNic19hc3NpZ247CisJCXNjcmF0Y2gtPnNic3JlZi5z dGF0ZSA9IHNic3JlZnN0YXRlOwogCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCBzY3JhdGNo KTsKIAl9CiAJZWxzZQogCXsKIAkJLyogYXJyYXkgZmV0Y2ggaXMgbXVjaCBzaW1wbGVyICov CiAJCXNjcmF0Y2gtPm9wY29kZSA9IEVFT1BfU0JTUkVGX0ZFVENIOwotCQlzY3JhdGNoLT5k LnNic3JlZi5zdWJzY3JpcHRmdW5jID0gbWV0aG9kcy5zYnNfZmV0Y2g7Ci0JCXNjcmF0Y2gt PmQuc2JzcmVmLnN0YXRlID0gc2JzcmVmc3RhdGU7CisJCXNjcmF0Y2gtPnNic3JlZi5zdWJz Y3JpcHRmdW5jID0gbWV0aG9kcy5zYnNfZmV0Y2g7CisJCXNjcmF0Y2gtPnNic3JlZi5zdGF0 ZSA9IHNic3JlZnN0YXRlOwogCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCBzY3JhdGNoKTsK IAl9CiAKQEAgLTM0NTIsMTQgKzM0NTIsMTQgQEAgRXhlY0luaXRTdWJzY3JpcHRpbmdSZWYo RXhwckV2YWxTdGVwICpzY3JhdGNoLCBTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiwKIAogCQlp ZiAoYXMtPm9wY29kZSA9PSBFRU9QX1NCU1JFRl9TVUJTQ1JJUFRTKQogCQl7Ci0JCQlBc3Nl cnQoYXMtPmQuc2JzcmVmX3N1YnNjcmlwdC5qdW1wZG9uZSA9PSAtMSk7Ci0JCQlhcy0+ZC5z YnNyZWZfc3Vic2NyaXB0Lmp1bXBkb25lID0gc3RhdGUtPnN0ZXBzX2xlbjsKKwkJCUFzc2Vy dChhcy0+c2JzcmVmX3N1YnNjcmlwdC5qdW1wZG9uZSA9PSAtMSk7CisJCQlhcy0+c2JzcmVm X3N1YnNjcmlwdC5qdW1wZG9uZSA9IHN0YXRlLT5zdGVwc19sZW47CiAJCX0KIAkJZWxzZQog CQl7CiAJCQlBc3NlcnQoYXMtPm9wY29kZSA9PSBFRU9QX0pVTVBfSUZfTlVMTCk7Ci0JCQlB c3NlcnQoYXMtPmQuanVtcC5qdW1wZG9uZSA9PSAtMSk7Ci0JCQlhcy0+ZC5qdW1wLmp1bXBk b25lID0gc3RhdGUtPnN0ZXBzX2xlbjsKKwkJCUFzc2VydChhcy0+anVtcC5qdW1wZG9uZSA9 PSAtMSk7CisJCQlhcy0+anVtcC5qdW1wZG9uZSA9IHN0YXRlLT5zdGVwc19sZW47CiAJCX0K IAl9CiB9CkBAIC0zNTI3LDExICszNTI3LDExIEBAIEV4ZWNJbml0Q29lcmNlVG9Eb21haW4o RXhwckV2YWxTdGVwICpzY3JhdGNoLCBDb2VyY2VUb0RvbWFpbiAqY3Rlc3QsCiAJYm9vbAkg ICAqZG9tYWlubnVsbCA9IE5VTEw7CiAJTGlzdENlbGwgICAqbDsKIAotCXNjcmF0Y2gtPmQu ZG9tYWluY2hlY2sucmVzdWx0dHlwZSA9IGN0ZXN0LT5yZXN1bHR0eXBlOworCXNjcmF0Y2gt PmRvbWFpbmNoZWNrLnJlc3VsdHR5cGUgPSBjdGVzdC0+cmVzdWx0dHlwZTsKIAkvKiB3ZSds bCBhbGxvY2F0ZSB3b3Jrc3BhY2Ugb25seSBpZiBuZWVkZWQgKi8KLQlzY3JhdGNoLT5kLmRv bWFpbmNoZWNrLmNoZWNrdmFsdWUgPSBOVUxMOwotCXNjcmF0Y2gtPmQuZG9tYWluY2hlY2su Y2hlY2tudWxsID0gTlVMTDsKLQlzY3JhdGNoLT5kLmRvbWFpbmNoZWNrLmVzY29udGV4dCA9 IHN0YXRlLT5lc2NvbnRleHQ7CisJc2NyYXRjaC0+ZG9tYWluY2hlY2suY2hlY2t2YWx1ZSA9 IE5VTEw7CisJc2NyYXRjaC0+ZG9tYWluY2hlY2suY2hlY2tudWxsID0gTlVMTDsKKwlzY3Jh dGNoLT5kb21haW5jaGVjay5lc2NvbnRleHQgPSBzdGF0ZS0+ZXNjb250ZXh0OwogCiAJLyoK IAkgKiBFdmFsdWF0ZSBhcmd1bWVudCAtIGl0J3MgZmluZSB0byBkaXJlY3RseSBzdG9yZSBp dCBpbnRvIHJlc3YvcmVzbnVsbCwKQEAgLTM1NzUsNyArMzU3NSw3IEBAIEV4ZWNJbml0Q29l cmNlVG9Eb21haW4oRXhwckV2YWxTdGVwICpzY3JhdGNoLCBDb2VyY2VUb0RvbWFpbiAqY3Rl c3QsCiAJCURhdHVtCSAgICpzYXZlX2lubmVybW9zdF9kb21haW52YWw7CiAJCWJvb2wJICAg KnNhdmVfaW5uZXJtb3N0X2RvbWFpbm51bGw7CiAKLQkJc2NyYXRjaC0+ZC5kb21haW5jaGVj ay5jb25zdHJhaW50bmFtZSA9IGNvbi0+bmFtZTsKKwkJc2NyYXRjaC0+ZG9tYWluY2hlY2su Y29uc3RyYWludG5hbWUgPSBjb24tPm5hbWU7CiAKIAkJc3dpdGNoIChjb24tPmNvbnN0cmFp bnR0eXBlKQogCQl7CkBAIC0zNTg1LDExICszNTg1LDExIEBAIEV4ZWNJbml0Q29lcmNlVG9E b21haW4oRXhwckV2YWxTdGVwICpzY3JhdGNoLCBDb2VyY2VUb0RvbWFpbiAqY3Rlc3QsCiAJ CQkJYnJlYWs7CiAJCQljYXNlIERPTV9DT05TVFJBSU5UX0NIRUNLOgogCQkJCS8qIEFsbG9j YXRlIHdvcmtzcGFjZSBmb3IgQ0hFQ0sgb3V0cHV0IGlmIHdlIGRpZG4ndCB5ZXQgKi8KLQkJ CQlpZiAoc2NyYXRjaC0+ZC5kb21haW5jaGVjay5jaGVja3ZhbHVlID09IE5VTEwpCisJCQkJ aWYgKHNjcmF0Y2gtPmRvbWFpbmNoZWNrLmNoZWNrdmFsdWUgPT0gTlVMTCkKIAkJCQl7Ci0J CQkJCXNjcmF0Y2gtPmQuZG9tYWluY2hlY2suY2hlY2t2YWx1ZSA9CisJCQkJCXNjcmF0Y2gt PmRvbWFpbmNoZWNrLmNoZWNrdmFsdWUgPQogCQkJCQkJKERhdHVtICopIHBhbGxvYyhzaXpl b2YoRGF0dW0pKTsKLQkJCQkJc2NyYXRjaC0+ZC5kb21haW5jaGVjay5jaGVja251bGwgPQor CQkJCQlzY3JhdGNoLT5kb21haW5jaGVjay5jaGVja251bGwgPQogCQkJCQkJKGJvb2wgKikg cGFsbG9jKHNpemVvZihib29sKSk7CiAJCQkJfQogCkBAIC0zNjE1LDggKzM2MTUsOCBAQCBF eGVjSW5pdENvZXJjZVRvRG9tYWluKEV4cHJFdmFsU3RlcCAqc2NyYXRjaCwgQ29lcmNlVG9E b21haW4gKmN0ZXN0LAogCQkJCQkJc2NyYXRjaDIub3Bjb2RlID0gRUVPUF9NQUtFX1JFQURP TkxZOwogCQkJCQkJc2NyYXRjaDIucmVzdmFsdWUgPSBkb21haW52YWw7CiAJCQkJCQlzY3Jh dGNoMi5yZXNudWxsID0gZG9tYWlubnVsbDsKLQkJCQkJCXNjcmF0Y2gyLmQubWFrZV9yZWFk b25seS52YWx1ZSA9IHJlc3Y7Ci0JCQkJCQlzY3JhdGNoMi5kLm1ha2VfcmVhZG9ubHkuaXNu dWxsID0gcmVzbnVsbDsKKwkJCQkJCXNjcmF0Y2gyLm1ha2VfcmVhZG9ubHkudmFsdWUgPSBy ZXN2OworCQkJCQkJc2NyYXRjaDIubWFrZV9yZWFkb25seS5pc251bGwgPSByZXNudWxsOwog CQkJCQkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgJnNjcmF0Y2gyKTsKIAkJCQkJfQogCQkJ CQllbHNlCkBAIC0zNjQwLDggKzM2NDAsOCBAQCBFeGVjSW5pdENvZXJjZVRvRG9tYWluKEV4 cHJFdmFsU3RlcCAqc2NyYXRjaCwgQ29lcmNlVG9Eb21haW4gKmN0ZXN0LAogCiAJCQkJLyog ZXZhbHVhdGUgY2hlY2sgZXhwcmVzc2lvbiB2YWx1ZSAqLwogCQkJCUV4ZWNJbml0RXhwclJl Yyhjb24tPmNoZWNrX2V4cHIsIHN0YXRlLAotCQkJCQkJCQlzY3JhdGNoLT5kLmRvbWFpbmNo ZWNrLmNoZWNrdmFsdWUsCi0JCQkJCQkJCXNjcmF0Y2gtPmQuZG9tYWluY2hlY2suY2hlY2tu dWxsKTsKKwkJCQkJCQkJc2NyYXRjaC0+ZG9tYWluY2hlY2suY2hlY2t2YWx1ZSwKKwkJCQkJ CQkJc2NyYXRjaC0+ZG9tYWluY2hlY2suY2hlY2tudWxsKTsKIAogCQkJCXN0YXRlLT5pbm5l cm1vc3RfZG9tYWludmFsID0gc2F2ZV9pbm5lcm1vc3RfZG9tYWludmFsOwogCQkJCXN0YXRl LT5pbm5lcm1vc3RfZG9tYWlubnVsbCA9IHNhdmVfaW5uZXJtb3N0X2RvbWFpbm51bGw7CkBA IC0zNzM2LDcgKzM3MzYsNyBAQCBFeGVjQnVpbGRBZ2dUcmFucyhBZ2dTdGF0ZSAqYWdnc3Rh dGUsIEFnZ1N0YXRlUGVyUGhhc2UgcGhhc2UsCiAJCQkJCQkJJnN0YXRlLT5yZXN2YWx1ZSwg JnN0YXRlLT5yZXNudWxsKTsKIAkJCS8qIGFuZCBqdW1wIG91dCBpZiBmYWxzZSAqLwogCQkJ c2NyYXRjaC5vcGNvZGUgPSBFRU9QX0pVTVBfSUZfTk9UX1RSVUU7Ci0JCQlzY3JhdGNoLmQu anVtcC5qdW1wZG9uZSA9IC0xOwkvKiBhZGp1c3QgbGF0ZXIgKi8KKwkJCXNjcmF0Y2guanVt cC5qdW1wZG9uZSA9IC0xOyAvKiBhZGp1c3QgbGF0ZXIgKi8KIAkJCUV4cHJFdmFsUHVzaFN0 ZXAoc3RhdGUsICZzY3JhdGNoKTsKIAkJCWFkanVzdF9iYWlsb3V0ID0gbGFwcGVuZF9pbnQo YWRqdXN0X2JhaWxvdXQsCiAJCQkJCQkJCQkJIHN0YXRlLT5zdGVwc19sZW4gLSAxKTsKQEAg LTM3OTcsOCArMzc5Nyw4IEBAIEV4ZWNCdWlsZEFnZ1RyYW5zKEFnZ1N0YXRlICphZ2dzdGF0 ZSwgQWdnU3RhdGVQZXJQaGFzZSBwaGFzZSwKIAkJCQllbHNlCiAJCQkJCXNjcmF0Y2gub3Bj b2RlID0gRUVPUF9BR0dfREVTRVJJQUxJWkU7CiAKLQkJCQlzY3JhdGNoLmQuYWdnX2Rlc2Vy aWFsaXplLmZjaW5mb19kYXRhID0gZHNfZmNpbmZvOwotCQkJCXNjcmF0Y2guZC5hZ2dfZGVz ZXJpYWxpemUuanVtcG51bGwgPSAtMTsJLyogYWRqdXN0IGxhdGVyICovCisJCQkJc2NyYXRj aC5hZ2dfZGVzZXJpYWxpemUuZmNpbmZvX2RhdGEgPSBkc19mY2luZm87CisJCQkJc2NyYXRj aC5hZ2dfZGVzZXJpYWxpemUuanVtcG51bGwgPSAtMTsJLyogYWRqdXN0IGxhdGVyICovCiAJ CQkJc2NyYXRjaC5yZXN2YWx1ZSA9ICZ0cmFuc19mY2luZm8tPmFyZ3NbYXJnbm8gKyAxXS52 YWx1ZTsKIAkJCQlzY3JhdGNoLnJlc251bGwgPSAmdHJhbnNfZmNpbmZvLT5hcmdzW2FyZ25v ICsgMV0uaXNudWxsOwogCkBAIC0zOTA0LDEwICszOTA0LDEwIEBAIEV4ZWNCdWlsZEFnZ1Ry YW5zKEFnZ1N0YXRlICphZ2dzdGF0ZSwgQWdnU3RhdGVQZXJQaGFzZSBwaGFzZSwKIAkJCQlz Y3JhdGNoLm9wY29kZSA9IEVFT1BfQUdHX1NUUklDVF9JTlBVVF9DSEVDS19BUkdTXzE7CiAJ CQllbHNlCiAJCQkJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX0FHR19TVFJJQ1RfSU5QVVRfQ0hF Q0tfQVJHUzsKLQkJCXNjcmF0Y2guZC5hZ2dfc3RyaWN0X2lucHV0X2NoZWNrLm51bGxzID0g c3RyaWN0bnVsbHM7Ci0JCQlzY3JhdGNoLmQuYWdnX3N0cmljdF9pbnB1dF9jaGVjay5hcmdz ID0gc3RyaWN0YXJnczsKLQkJCXNjcmF0Y2guZC5hZ2dfc3RyaWN0X2lucHV0X2NoZWNrLmp1 bXBudWxsID0gLTE7IC8qIGFkanVzdCBsYXRlciAqLwotCQkJc2NyYXRjaC5kLmFnZ19zdHJp Y3RfaW5wdXRfY2hlY2submFyZ3MgPSBwZXJ0cmFucy0+bnVtVHJhbnNJbnB1dHM7CisJCQlz Y3JhdGNoLmFnZ19zdHJpY3RfaW5wdXRfY2hlY2subnVsbHMgPSBzdHJpY3RudWxsczsKKwkJ CXNjcmF0Y2guYWdnX3N0cmljdF9pbnB1dF9jaGVjay5hcmdzID0gc3RyaWN0YXJnczsKKwkJ CXNjcmF0Y2guYWdnX3N0cmljdF9pbnB1dF9jaGVjay5qdW1wbnVsbCA9IC0xOwkvKiBhZGp1 c3QgbGF0ZXIgKi8KKwkJCXNjcmF0Y2guYWdnX3N0cmljdF9pbnB1dF9jaGVjay5uYXJncyA9 IHBlcnRyYW5zLT5udW1UcmFuc0lucHV0czsKIAkJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUs ICZzY3JhdGNoKTsKIAkJCWFkanVzdF9iYWlsb3V0ID0gbGFwcGVuZF9pbnQoYWRqdXN0X2Jh aWxvdXQsCiAJCQkJCQkJCQkJIHN0YXRlLT5zdGVwc19sZW4gLSAxKTsKQEAgLTM5MjEsOCAr MzkyMSw4IEBAIEV4ZWNCdWlsZEFnZ1RyYW5zKEFnZ1N0YXRlICphZ2dzdGF0ZSwgQWdnU3Rh dGVQZXJQaGFzZSBwaGFzZSwKIAkJCWVsc2UKIAkJCQlzY3JhdGNoLm9wY29kZSA9IEVFT1Bf QUdHX1BSRVNPUlRFRF9ESVNUSU5DVF9TSU5HTEU7CiAKLQkJCXNjcmF0Y2guZC5hZ2dfcHJl c29ydGVkX2Rpc3RpbmN0Y2hlY2sucGVydHJhbnMgPSBwZXJ0cmFuczsKLQkJCXNjcmF0Y2gu ZC5hZ2dfcHJlc29ydGVkX2Rpc3RpbmN0Y2hlY2suanVtcGRpc3RpbmN0ID0gLTE7CS8qIGFk anVzdCBsYXRlciAqLworCQkJc2NyYXRjaC5hZ2dfcHJlc29ydGVkX2Rpc3RpbmN0Y2hlY2su cGVydHJhbnMgPSBwZXJ0cmFuczsKKwkJCXNjcmF0Y2guYWdnX3ByZXNvcnRlZF9kaXN0aW5j dGNoZWNrLmp1bXBkaXN0aW5jdCA9IC0xOwkvKiBhZGp1c3QgbGF0ZXIgKi8KIAkJCUV4cHJF dmFsUHVzaFN0ZXAoc3RhdGUsICZzY3JhdGNoKTsKIAkJCWFkanVzdF9iYWlsb3V0ID0gbGFw cGVuZF9pbnQoYWRqdXN0X2JhaWxvdXQsCiAJCQkJCQkJCQkJIHN0YXRlLT5zdGVwc19sZW4g LSAxKTsKQEAgLTM5NzQsMjYgKzM5NzQsMjYgQEAgRXhlY0J1aWxkQWdnVHJhbnMoQWdnU3Rh dGUgKmFnZ3N0YXRlLCBBZ2dTdGF0ZVBlclBoYXNlIHBoYXNlLAogCiAJCQlpZiAoYXMtPm9w Y29kZSA9PSBFRU9QX0pVTVBfSUZfTk9UX1RSVUUpCiAJCQl7Ci0JCQkJQXNzZXJ0KGFzLT5k Lmp1bXAuanVtcGRvbmUgPT0gLTEpOwotCQkJCWFzLT5kLmp1bXAuanVtcGRvbmUgPSBzdGF0 ZS0+c3RlcHNfbGVuOworCQkJCUFzc2VydChhcy0+anVtcC5qdW1wZG9uZSA9PSAtMSk7CisJ CQkJYXMtPmp1bXAuanVtcGRvbmUgPSBzdGF0ZS0+c3RlcHNfbGVuOwogCQkJfQogCQkJZWxz ZSBpZiAoYXMtPm9wY29kZSA9PSBFRU9QX0FHR19TVFJJQ1RfSU5QVVRfQ0hFQ0tfQVJHUyB8 fAogCQkJCQkgYXMtPm9wY29kZSA9PSBFRU9QX0FHR19TVFJJQ1RfSU5QVVRfQ0hFQ0tfQVJH U18xIHx8CiAJCQkJCSBhcy0+b3Bjb2RlID09IEVFT1BfQUdHX1NUUklDVF9JTlBVVF9DSEVD S19OVUxMUykKIAkJCXsKLQkJCQlBc3NlcnQoYXMtPmQuYWdnX3N0cmljdF9pbnB1dF9jaGVj ay5qdW1wbnVsbCA9PSAtMSk7Ci0JCQkJYXMtPmQuYWdnX3N0cmljdF9pbnB1dF9jaGVjay5q dW1wbnVsbCA9IHN0YXRlLT5zdGVwc19sZW47CisJCQkJQXNzZXJ0KGFzLT5hZ2dfc3RyaWN0 X2lucHV0X2NoZWNrLmp1bXBudWxsID09IC0xKTsKKwkJCQlhcy0+YWdnX3N0cmljdF9pbnB1 dF9jaGVjay5qdW1wbnVsbCA9IHN0YXRlLT5zdGVwc19sZW47CiAJCQl9CiAJCQllbHNlIGlm IChhcy0+b3Bjb2RlID09IEVFT1BfQUdHX1NUUklDVF9ERVNFUklBTElaRSkKIAkJCXsKLQkJ CQlBc3NlcnQoYXMtPmQuYWdnX2Rlc2VyaWFsaXplLmp1bXBudWxsID09IC0xKTsKLQkJCQlh cy0+ZC5hZ2dfZGVzZXJpYWxpemUuanVtcG51bGwgPSBzdGF0ZS0+c3RlcHNfbGVuOworCQkJ CUFzc2VydChhcy0+YWdnX2Rlc2VyaWFsaXplLmp1bXBudWxsID09IC0xKTsKKwkJCQlhcy0+ YWdnX2Rlc2VyaWFsaXplLmp1bXBudWxsID0gc3RhdGUtPnN0ZXBzX2xlbjsKIAkJCX0KIAkJ CWVsc2UgaWYgKGFzLT5vcGNvZGUgPT0gRUVPUF9BR0dfUFJFU09SVEVEX0RJU1RJTkNUX1NJ TkdMRSB8fAogCQkJCQkgYXMtPm9wY29kZSA9PSBFRU9QX0FHR19QUkVTT1JURURfRElTVElO Q1RfTVVMVEkpCiAJCQl7Ci0JCQkJQXNzZXJ0KGFzLT5kLmFnZ19wcmVzb3J0ZWRfZGlzdGlu Y3RjaGVjay5qdW1wZGlzdGluY3QgPT0gLTEpOwotCQkJCWFzLT5kLmFnZ19wcmVzb3J0ZWRf ZGlzdGluY3RjaGVjay5qdW1wZGlzdGluY3QgPSBzdGF0ZS0+c3RlcHNfbGVuOworCQkJCUFz c2VydChhcy0+YWdnX3ByZXNvcnRlZF9kaXN0aW5jdGNoZWNrLmp1bXBkaXN0aW5jdCA9PSAt MSk7CisJCQkJYXMtPmFnZ19wcmVzb3J0ZWRfZGlzdGluY3RjaGVjay5qdW1wZGlzdGluY3Qg PSBzdGF0ZS0+c3RlcHNfbGVuOwogCQkJfQogCQkJZWxzZQogCQkJCUFzc2VydChmYWxzZSk7 CkBAIC00MDM0LDkgKzQwMzQsOSBAQCBFeGVjQnVpbGRBZ2dUcmFuc0NhbGwoRXhwclN0YXRl ICpzdGF0ZSwgQWdnU3RhdGUgKmFnZ3N0YXRlLAogCWlmIChudWxsY2hlY2spCiAJewogCQlz Y3JhdGNoLT5vcGNvZGUgPSBFRU9QX0FHR19QTEFJTl9QRVJHUk9VUF9OVUxMQ0hFQ0s7Ci0J CXNjcmF0Y2gtPmQuYWdnX3BsYWluX3Blcmdyb3VwX251bGxjaGVjay5zZXRvZmYgPSBzZXRv ZmY7CisJCXNjcmF0Y2gtPmFnZ19wbGFpbl9wZXJncm91cF9udWxsY2hlY2suc2V0b2ZmID0g c2V0b2ZmOwogCQkvKiBhZGp1c3QgbGF0ZXIgKi8KLQkJc2NyYXRjaC0+ZC5hZ2dfcGxhaW5f cGVyZ3JvdXBfbnVsbGNoZWNrLmp1bXBudWxsID0gLTE7CisJCXNjcmF0Y2gtPmFnZ19wbGFp bl9wZXJncm91cF9udWxsY2hlY2suanVtcG51bGwgPSAtMTsKIAkJRXhwckV2YWxQdXNoU3Rl cChzdGF0ZSwgc2NyYXRjaCk7CiAJCWFkanVzdF9qdW1wbnVsbCA9IHN0YXRlLT5zdGVwc19s ZW4gLSAxOwogCX0KQEAgLTQxMDMsMTEgKzQxMDMsMTEgQEAgRXhlY0J1aWxkQWdnVHJhbnND YWxsKEV4cHJTdGF0ZSAqc3RhdGUsIEFnZ1N0YXRlICphZ2dzdGF0ZSwKIAllbHNlCiAJCXNj cmF0Y2gtPm9wY29kZSA9IEVFT1BfQUdHX09SREVSRURfVFJBTlNfVFVQTEU7CiAKLQlzY3Jh dGNoLT5kLmFnZ190cmFucy5wZXJ0cmFucyA9IHBlcnRyYW5zOwotCXNjcmF0Y2gtPmQuYWdn X3RyYW5zLnNldG5vID0gc2V0bm87Ci0Jc2NyYXRjaC0+ZC5hZ2dfdHJhbnMuc2V0b2ZmID0g c2V0b2ZmOwotCXNjcmF0Y2gtPmQuYWdnX3RyYW5zLnRyYW5zbm8gPSB0cmFuc25vOwotCXNj cmF0Y2gtPmQuYWdnX3RyYW5zLmFnZ2NvbnRleHQgPSBhZ2djb250ZXh0OworCXNjcmF0Y2gt PmFnZ190cmFucy5wZXJ0cmFucyA9IHBlcnRyYW5zOworCXNjcmF0Y2gtPmFnZ190cmFucy5z ZXRubyA9IHNldG5vOworCXNjcmF0Y2gtPmFnZ190cmFucy5zZXRvZmYgPSBzZXRvZmY7CisJ c2NyYXRjaC0+YWdnX3RyYW5zLnRyYW5zbm8gPSB0cmFuc25vOworCXNjcmF0Y2gtPmFnZ190 cmFucy5hZ2djb250ZXh0ID0gYWdnY29udGV4dDsKIAlFeHByRXZhbFB1c2hTdGVwKHN0YXRl LCBzY3JhdGNoKTsKIAogCS8qIGZpeCB1cCBqdW1wbnVsbCAqLwpAQCAtNDExNiw4ICs0MTE2 LDggQEAgRXhlY0J1aWxkQWdnVHJhbnNDYWxsKEV4cHJTdGF0ZSAqc3RhdGUsIEFnZ1N0YXRl ICphZ2dzdGF0ZSwKIAkJRXhwckV2YWxTdGVwICphcyA9ICZzdGF0ZS0+c3RlcHNbYWRqdXN0 X2p1bXBudWxsXTsKIAogCQlBc3NlcnQoYXMtPm9wY29kZSA9PSBFRU9QX0FHR19QTEFJTl9Q RVJHUk9VUF9OVUxMQ0hFQ0spOwotCQlBc3NlcnQoYXMtPmQuYWdnX3BsYWluX3Blcmdyb3Vw X251bGxjaGVjay5qdW1wbnVsbCA9PSAtMSk7Ci0JCWFzLT5kLmFnZ19wbGFpbl9wZXJncm91 cF9udWxsY2hlY2suanVtcG51bGwgPSBzdGF0ZS0+c3RlcHNfbGVuOworCQlBc3NlcnQoYXMt PmFnZ19wbGFpbl9wZXJncm91cF9udWxsY2hlY2suanVtcG51bGwgPT0gLTEpOworCQlhcy0+ YWdnX3BsYWluX3Blcmdyb3VwX251bGxjaGVjay5qdW1wbnVsbCA9IHN0YXRlLT5zdGVwc19s ZW47CiAJfQogfQogCkBAIC00MTY2LDEwICs0MTY2LDEwIEBAIEV4ZWNCdWlsZEhhc2gzMkZy b21BdHRycyhUdXBsZURlc2MgZGVzYywgY29uc3QgVHVwbGVUYWJsZVNsb3RPcHMgKm9wcywK IAkJbGFzdF9hdHRudW0gPSBNYXgobGFzdF9hdHRudW0sIGtleUNvbElkeFtpXSk7CiAKIAlz Y3JhdGNoLm9wY29kZSA9IEVFT1BfSU5ORVJfRkVUQ0hTT01FOwotCXNjcmF0Y2guZC5mZXRj aC5sYXN0X3ZhciA9IGxhc3RfYXR0bnVtOwotCXNjcmF0Y2guZC5mZXRjaC5maXhlZCA9IGZh bHNlOwotCXNjcmF0Y2guZC5mZXRjaC5raW5kID0gb3BzOwotCXNjcmF0Y2guZC5mZXRjaC5r bm93bl9kZXNjID0gZGVzYzsKKwlzY3JhdGNoLmZldGNoLmxhc3RfdmFyID0gbGFzdF9hdHRu dW07CisJc2NyYXRjaC5mZXRjaC5maXhlZCA9IGZhbHNlOworCXNjcmF0Y2guZmV0Y2gua2lu ZCA9IG9wczsKKwlzY3JhdGNoLmZldGNoLmtub3duX2Rlc2MgPSBkZXNjOwogCWlmIChFeGVj Q29tcHV0ZVNsb3RJbmZvKHN0YXRlLCAmc2NyYXRjaCkpCiAJCUV4cHJFdmFsUHVzaFN0ZXAo c3RhdGUsICZzY3JhdGNoKTsKIApAQCAtNDE5MCw3ICs0MTkwLDcgQEAgRXhlY0J1aWxkSGFz aDMyRnJvbUF0dHJzKFR1cGxlRGVzYyBkZXNjLCBjb25zdCBUdXBsZVRhYmxlU2xvdE9wcyAq b3BzLAogCQkgKiBjb2x1bW5zIHRvIGhhc2gsIHN0b3JlIGl0IGluIHRoZSBFeHByU3RhdGUn cyByZXN1bHQgZmllbGQuCiAJCSAqLwogCQlzY3JhdGNoLm9wY29kZSA9IEVFT1BfSEFTSERB VFVNX1NFVF9JTklUVkFMOwotCQlzY3JhdGNoLmQuaGFzaGRhdHVtX2luaXR2YWx1ZS5pbml0 X3ZhbHVlID0gVUludDMyR2V0RGF0dW0oaW5pdF92YWx1ZSk7CisJCXNjcmF0Y2guaGFzaGRh dHVtX2luaXR2YWx1ZS5pbml0X3ZhbHVlID0gVUludDMyR2V0RGF0dW0oaW5pdF92YWx1ZSk7 CiAJCXNjcmF0Y2gucmVzdmFsdWUgPSBudW1Db2xzID4gMCA/ICZpcmVzdWx0LT52YWx1ZSA6 ICZzdGF0ZS0+cmVzdmFsdWU7CiAJCXNjcmF0Y2gucmVzbnVsbCA9IG51bUNvbHMgPiAwID8g JmlyZXN1bHQtPmlzbnVsbCA6ICZzdGF0ZS0+cmVzbnVsbDsKIApAQCAtNDIyMyw5ICs0MjIz LDkgQEAgRXhlY0J1aWxkSGFzaDMyRnJvbUF0dHJzKFR1cGxlRGVzYyBkZXNjLCBjb25zdCBU dXBsZVRhYmxlU2xvdE9wcyAqb3BzLAogCQlzY3JhdGNoLm9wY29kZSA9IEVFT1BfSU5ORVJf VkFSOwogCQlzY3JhdGNoLnJlc3ZhbHVlID0gJmZjaW5mby0+YXJnc1swXS52YWx1ZTsKIAkJ c2NyYXRjaC5yZXNudWxsID0gJmZjaW5mby0+YXJnc1swXS5pc251bGw7Ci0JCXNjcmF0Y2gu ZC52YXIuYXR0bnVtID0gYXR0bnVtOwotCQlzY3JhdGNoLmQudmFyLnZhcnR5cGUgPSBUdXBs ZURlc2NBdHRyKGRlc2MsIGF0dG51bSktPmF0dHR5cGlkOwotCQlzY3JhdGNoLmQudmFyLnZh cnJldHVybmluZ3R5cGUgPSBWQVJfUkVUVVJOSU5HX0RFRkFVTFQ7CisJCXNjcmF0Y2gudmFy LmF0dG51bSA9IGF0dG51bTsKKwkJc2NyYXRjaC52YXIudmFydHlwZSA9IFR1cGxlRGVzY0F0 dHIoZGVzYywgYXR0bnVtKS0+YXR0dHlwaWQ7CisJCXNjcmF0Y2gudmFyLnZhcnJldHVybmlu Z3R5cGUgPSBWQVJfUkVUVVJOSU5HX0RFRkFVTFQ7CiAKIAkJRXhwckV2YWxQdXNoU3RlcChz dGF0ZSwgJnNjcmF0Y2gpOwogCkBAIC00MjU0LDEyICs0MjU0LDEyIEBAIEV4ZWNCdWlsZEhh c2gzMkZyb21BdHRycyhUdXBsZURlc2MgZGVzYywgY29uc3QgVHVwbGVUYWJsZVNsb3RPcHMg Km9wcywKIAkJICogTkVYVDMyIG9wY29kZXMgbmVlZCB0byBsb29rIGF0IHRoZSBpbnRlcm1l ZGlhdGUgcmVzdWx0LiAgV2UgbWlnaHQKIAkJICogYXMgd2VsbCBqdXN0IHNldCB0aGlzIGZv ciBhbGwgb3BzLiAgRklSU1RzIHdvbid0IGxvb2sgYXQgaXQuCiAJCSAqLwotCQlzY3JhdGNo LmQuaGFzaGRhdHVtLmlyZXN1bHQgPSBpcmVzdWx0OworCQlzY3JhdGNoLmhhc2hkYXR1bS5p cmVzdWx0ID0gaXJlc3VsdDsKIAotCQlzY3JhdGNoLmQuaGFzaGRhdHVtLmZpbmZvID0gZmlu Zm87Ci0JCXNjcmF0Y2guZC5oYXNoZGF0dW0uZmNpbmZvX2RhdGEgPSBmY2luZm87Ci0JCXNj cmF0Y2guZC5oYXNoZGF0dW0uZm5fYWRkciA9IGZpbmZvLT5mbl9hZGRyOwotCQlzY3JhdGNo LmQuaGFzaGRhdHVtLmp1bXBkb25lID0gLTE7CisJCXNjcmF0Y2guaGFzaGRhdHVtLmZpbmZv ID0gZmluZm87CisJCXNjcmF0Y2guaGFzaGRhdHVtLmZjaW5mb19kYXRhID0gZmNpbmZvOwor CQlzY3JhdGNoLmhhc2hkYXR1bS5mbl9hZGRyID0gZmluZm8tPmZuX2FkZHI7CisJCXNjcmF0 Y2guaGFzaGRhdHVtLmp1bXBkb25lID0gLTE7CiAKIAkJRXhwckV2YWxQdXNoU3RlcChzdGF0 ZSwgJnNjcmF0Y2gpOwogCkBAIC00MzQ1LDcgKzQzNDUsNyBAQCBFeGVjQnVpbGRIYXNoMzJF eHByKFR1cGxlRGVzYyBkZXNjLCBjb25zdCBUdXBsZVRhYmxlU2xvdE9wcyAqb3BzLAogCQkg KiB0byBoYXNoLCBzdG9yZSBpdCBpbiB0aGUgRXhwclN0YXRlJ3MgcmVzdWx0IGZpZWxkLgog CQkgKi8KIAkJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX0hBU0hEQVRVTV9TRVRfSU5JVFZBTDsK LQkJc2NyYXRjaC5kLmhhc2hkYXR1bV9pbml0dmFsdWUuaW5pdF92YWx1ZSA9IFVJbnQzMkdl dERhdHVtKGluaXRfdmFsdWUpOworCQlzY3JhdGNoLmhhc2hkYXR1bV9pbml0dmFsdWUuaW5p dF92YWx1ZSA9IFVJbnQzMkdldERhdHVtKGluaXRfdmFsdWUpOwogCQlzY3JhdGNoLnJlc3Zh bHVlID0gbnVtX2V4cHJzID4gMCA/ICZpcmVzdWx0LT52YWx1ZSA6ICZzdGF0ZS0+cmVzdmFs dWU7CiAJCXNjcmF0Y2gucmVzbnVsbCA9IG51bV9leHBycyA+IDAgPyAmaXJlc3VsdC0+aXNu dWxsIDogJnN0YXRlLT5yZXNudWxsOwogCkBAIC00NDA0LDE3ICs0NDA0LDE3IEBAIEV4ZWNC dWlsZEhhc2gzMkV4cHIoVHVwbGVEZXNjIGRlc2MsIGNvbnN0IFR1cGxlVGFibGVTbG90T3Bz ICpvcHMsCiAJCSAqIE5FWFQzMiBvcGNvZGVzIG5lZWQgdG8gbG9vayBhdCB0aGUgaW50ZXJt ZWRpYXRlIHJlc3VsdC4gIFdlIG1pZ2h0CiAJCSAqIGFzIHdlbGwganVzdCBzZXQgdGhpcyBm b3IgYWxsIG9wcy4gIEZJUlNUcyB3b24ndCBsb29rIGF0IGl0LgogCQkgKi8KLQkJc2NyYXRj aC5kLmhhc2hkYXR1bS5pcmVzdWx0ID0gaXJlc3VsdDsKKwkJc2NyYXRjaC5oYXNoZGF0dW0u aXJlc3VsdCA9IGlyZXN1bHQ7CiAKIAkJLyogSW5pdGlhbGl6ZSBmdW5jdGlvbiBjYWxsIHBh cmFtZXRlciBzdHJ1Y3R1cmUgdG9vICovCiAJCUluaXRGdW5jdGlvbkNhbGxJbmZvRGF0YSgq ZmNpbmZvLCBmaW5mbywgMSwgaW5wdXRjb2xsaWQsIE5VTEwsIE5VTEwpOwogCi0JCXNjcmF0 Y2guZC5oYXNoZGF0dW0uZmluZm8gPSBmaW5mbzsKLQkJc2NyYXRjaC5kLmhhc2hkYXR1bS5m Y2luZm9fZGF0YSA9IGZjaW5mbzsKLQkJc2NyYXRjaC5kLmhhc2hkYXR1bS5mbl9hZGRyID0g ZmluZm8tPmZuX2FkZHI7CisJCXNjcmF0Y2guaGFzaGRhdHVtLmZpbmZvID0gZmluZm87CisJ CXNjcmF0Y2guaGFzaGRhdHVtLmZjaW5mb19kYXRhID0gZmNpbmZvOworCQlzY3JhdGNoLmhh c2hkYXR1bS5mbl9hZGRyID0gZmluZm8tPmZuX2FkZHI7CiAKIAkJc2NyYXRjaC5vcGNvZGUg PSBvcHN0cmljdFtpXSAmJiAha2VlcF9udWxscyA/IHN0cmljdF9vcGNvZGUgOiBvcGNvZGU7 Ci0JCXNjcmF0Y2guZC5oYXNoZGF0dW0uanVtcGRvbmUgPSAtMTsKKwkJc2NyYXRjaC5oYXNo ZGF0dW0uanVtcGRvbmUgPSAtMTsKIAogCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCAmc2Ny YXRjaCk7CiAJCWFkanVzdF9qdW1wcyA9IGxhcHBlbmRfaW50KGFkanVzdF9qdW1wcywgc3Rh dGUtPnN0ZXBzX2xlbiAtIDEpOwpAQCAtNDQzNiw4ICs0NDM2LDggQEAgRXhlY0J1aWxkSGFz aDMyRXhwcihUdXBsZURlc2MgZGVzYywgY29uc3QgVHVwbGVUYWJsZVNsb3RPcHMgKm9wcywK IAkJCSAgIGFzLT5vcGNvZGUgPT0gRUVPUF9IQVNIREFUVU1fRklSU1RfU1RSSUNUIHx8CiAJ CQkgICBhcy0+b3Bjb2RlID09IEVFT1BfSEFTSERBVFVNX05FWFQzMiB8fAogCQkJICAgYXMt Pm9wY29kZSA9PSBFRU9QX0hBU0hEQVRVTV9ORVhUMzJfU1RSSUNUKTsKLQkJQXNzZXJ0KGFz LT5kLmhhc2hkYXR1bS5qdW1wZG9uZSA9PSAtMSk7Ci0JCWFzLT5kLmhhc2hkYXR1bS5qdW1w ZG9uZSA9IHN0YXRlLT5zdGVwc19sZW47CisJCUFzc2VydChhcy0+aGFzaGRhdHVtLmp1bXBk b25lID09IC0xKTsKKwkJYXMtPmhhc2hkYXR1bS5qdW1wZG9uZSA9IHN0YXRlLT5zdGVwc19s ZW47CiAJfQogCiAJc2NyYXRjaC5yZXN2YWx1ZSA9IE5VTEw7CkBAIC00NTAyLDE4ICs0NTAy LDE4IEBAIEV4ZWNCdWlsZEdyb3VwaW5nRXF1YWwoVHVwbGVEZXNjIGxkZXNjLCBUdXBsZURl c2MgcmRlc2MsCiAKIAkvKiBwdXNoIGRlZm9ybSBzdGVwcyAqLwogCXNjcmF0Y2gub3Bjb2Rl ID0gRUVPUF9JTk5FUl9GRVRDSFNPTUU7Ci0Jc2NyYXRjaC5kLmZldGNoLmxhc3RfdmFyID0g bWF4YXR0OwotCXNjcmF0Y2guZC5mZXRjaC5maXhlZCA9IGZhbHNlOwotCXNjcmF0Y2guZC5m ZXRjaC5rbm93bl9kZXNjID0gbGRlc2M7Ci0Jc2NyYXRjaC5kLmZldGNoLmtpbmQgPSBsb3Bz OworCXNjcmF0Y2guZmV0Y2gubGFzdF92YXIgPSBtYXhhdHQ7CisJc2NyYXRjaC5mZXRjaC5m aXhlZCA9IGZhbHNlOworCXNjcmF0Y2guZmV0Y2gua25vd25fZGVzYyA9IGxkZXNjOworCXNj cmF0Y2guZmV0Y2gua2luZCA9IGxvcHM7CiAJaWYgKEV4ZWNDb21wdXRlU2xvdEluZm8oc3Rh dGUsICZzY3JhdGNoKSkKIAkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgJnNjcmF0Y2gpOwog CiAJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX09VVEVSX0ZFVENIU09NRTsKLQlzY3JhdGNoLmQu ZmV0Y2gubGFzdF92YXIgPSBtYXhhdHQ7Ci0Jc2NyYXRjaC5kLmZldGNoLmZpeGVkID0gZmFs c2U7Ci0Jc2NyYXRjaC5kLmZldGNoLmtub3duX2Rlc2MgPSByZGVzYzsKLQlzY3JhdGNoLmQu ZmV0Y2gua2luZCA9IHJvcHM7CisJc2NyYXRjaC5mZXRjaC5sYXN0X3ZhciA9IG1heGF0dDsK KwlzY3JhdGNoLmZldGNoLmZpeGVkID0gZmFsc2U7CisJc2NyYXRjaC5mZXRjaC5rbm93bl9k ZXNjID0gcmRlc2M7CisJc2NyYXRjaC5mZXRjaC5raW5kID0gcm9wczsKIAlpZiAoRXhlY0Nv bXB1dGVTbG90SW5mbyhzdGF0ZSwgJnNjcmF0Y2gpKQogCQlFeHByRXZhbFB1c2hTdGVwKHN0 YXRlLCAmc2NyYXRjaCk7CiAKQEAgLTQ1NDksMzUgKzQ1NDksMzUgQEAgRXhlY0J1aWxkR3Jv dXBpbmdFcXVhbChUdXBsZURlc2MgbGRlc2MsIFR1cGxlRGVzYyByZGVzYywKIAogCQkvKiBs ZWZ0IGFyZyAqLwogCQlzY3JhdGNoLm9wY29kZSA9IEVFT1BfSU5ORVJfVkFSOwotCQlzY3Jh dGNoLmQudmFyLmF0dG51bSA9IGF0dG5vIC0gMTsKLQkJc2NyYXRjaC5kLnZhci52YXJ0eXBl ID0gbGF0dC0+YXR0dHlwaWQ7Ci0JCXNjcmF0Y2guZC52YXIudmFycmV0dXJuaW5ndHlwZSA9 IFZBUl9SRVRVUk5JTkdfREVGQVVMVDsKKwkJc2NyYXRjaC52YXIuYXR0bnVtID0gYXR0bm8g LSAxOworCQlzY3JhdGNoLnZhci52YXJ0eXBlID0gbGF0dC0+YXR0dHlwaWQ7CisJCXNjcmF0 Y2gudmFyLnZhcnJldHVybmluZ3R5cGUgPSBWQVJfUkVUVVJOSU5HX0RFRkFVTFQ7CiAJCXNj cmF0Y2gucmVzdmFsdWUgPSAmZmNpbmZvLT5hcmdzWzBdLnZhbHVlOwogCQlzY3JhdGNoLnJl c251bGwgPSAmZmNpbmZvLT5hcmdzWzBdLmlzbnVsbDsKIAkJRXhwckV2YWxQdXNoU3RlcChz dGF0ZSwgJnNjcmF0Y2gpOwogCiAJCS8qIHJpZ2h0IGFyZyAqLwogCQlzY3JhdGNoLm9wY29k ZSA9IEVFT1BfT1VURVJfVkFSOwotCQlzY3JhdGNoLmQudmFyLmF0dG51bSA9IGF0dG5vIC0g MTsKLQkJc2NyYXRjaC5kLnZhci52YXJ0eXBlID0gcmF0dC0+YXR0dHlwaWQ7Ci0JCXNjcmF0 Y2guZC52YXIudmFycmV0dXJuaW5ndHlwZSA9IFZBUl9SRVRVUk5JTkdfREVGQVVMVDsKKwkJ c2NyYXRjaC52YXIuYXR0bnVtID0gYXR0bm8gLSAxOworCQlzY3JhdGNoLnZhci52YXJ0eXBl ID0gcmF0dC0+YXR0dHlwaWQ7CisJCXNjcmF0Y2gudmFyLnZhcnJldHVybmluZ3R5cGUgPSBW QVJfUkVUVVJOSU5HX0RFRkFVTFQ7CiAJCXNjcmF0Y2gucmVzdmFsdWUgPSAmZmNpbmZvLT5h cmdzWzFdLnZhbHVlOwogCQlzY3JhdGNoLnJlc251bGwgPSAmZmNpbmZvLT5hcmdzWzFdLmlz bnVsbDsKIAkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgJnNjcmF0Y2gpOwogCiAJCS8qIGV2 YWx1YXRlIGRpc3RpbmN0bmVzcyAqLwogCQlzY3JhdGNoLm9wY29kZSA9IEVFT1BfTk9UX0RJ U1RJTkNUOwotCQlzY3JhdGNoLmQuZnVuYy5maW5mbyA9IGZpbmZvOwotCQlzY3JhdGNoLmQu ZnVuYy5mY2luZm9fZGF0YSA9IGZjaW5mbzsKLQkJc2NyYXRjaC5kLmZ1bmMuZm5fYWRkciA9 IGZpbmZvLT5mbl9hZGRyOwotCQlzY3JhdGNoLmQuZnVuYy5uYXJncyA9IDI7CisJCXNjcmF0 Y2guZnVuYy5maW5mbyA9IGZpbmZvOworCQlzY3JhdGNoLmZ1bmMuZmNpbmZvX2RhdGEgPSBm Y2luZm87CisJCXNjcmF0Y2guZnVuYy5mbl9hZGRyID0gZmluZm8tPmZuX2FkZHI7CisJCXNj cmF0Y2guZnVuYy5uYXJncyA9IDI7CiAJCXNjcmF0Y2gucmVzdmFsdWUgPSAmc3RhdGUtPnJl c3ZhbHVlOwogCQlzY3JhdGNoLnJlc251bGwgPSAmc3RhdGUtPnJlc251bGw7CiAJCUV4cHJF dmFsUHVzaFN0ZXAoc3RhdGUsICZzY3JhdGNoKTsKIAogCQkvKiB0aGVuIGVtaXQgRUVPUF9R VUFMIHRvIGRldGVjdCBpZiByZXN1bHQgaXMgZmFsc2UgKG9yIG51bGwpICovCiAJCXNjcmF0 Y2gub3Bjb2RlID0gRUVPUF9RVUFMOwotCQlzY3JhdGNoLmQucXVhbGV4cHIuanVtcGRvbmUg PSAtMTsKKwkJc2NyYXRjaC5xdWFsZXhwci5qdW1wZG9uZSA9IC0xOwogCQlzY3JhdGNoLnJl c3ZhbHVlID0gJnN0YXRlLT5yZXN2YWx1ZTsKIAkJc2NyYXRjaC5yZXNudWxsID0gJnN0YXRl LT5yZXNudWxsOwogCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCAmc2NyYXRjaCk7CkBAIC00 NTkxLDggKzQ1OTEsOCBAQCBFeGVjQnVpbGRHcm91cGluZ0VxdWFsKFR1cGxlRGVzYyBsZGVz YywgVHVwbGVEZXNjIHJkZXNjLAogCQlFeHByRXZhbFN0ZXAgKmFzID0gJnN0YXRlLT5zdGVw c1tsZmlyc3RfaW50KGxjKV07CiAKIAkJQXNzZXJ0KGFzLT5vcGNvZGUgPT0gRUVPUF9RVUFM KTsKLQkJQXNzZXJ0KGFzLT5kLnF1YWxleHByLmp1bXBkb25lID09IC0xKTsKLQkJYXMtPmQu cXVhbGV4cHIuanVtcGRvbmUgPSBzdGF0ZS0+c3RlcHNfbGVuOworCQlBc3NlcnQoYXMtPnF1 YWxleHByLmp1bXBkb25lID09IC0xKTsKKwkJYXMtPnF1YWxleHByLmp1bXBkb25lID0gc3Rh dGUtPnN0ZXBzX2xlbjsKIAl9CiAKIAlzY3JhdGNoLnJlc3ZhbHVlID0gTlVMTDsKQEAgLTQ2 NDQsMTggKzQ2NDQsMTggQEAgRXhlY0J1aWxkUGFyYW1TZXRFcXVhbChUdXBsZURlc2MgZGVz YywKIAogCS8qIHB1c2ggZGVmb3JtIHN0ZXBzICovCiAJc2NyYXRjaC5vcGNvZGUgPSBFRU9Q X0lOTkVSX0ZFVENIU09NRTsKLQlzY3JhdGNoLmQuZmV0Y2gubGFzdF92YXIgPSBtYXhhdHQ7 Ci0Jc2NyYXRjaC5kLmZldGNoLmZpeGVkID0gZmFsc2U7Ci0Jc2NyYXRjaC5kLmZldGNoLmtu b3duX2Rlc2MgPSBkZXNjOwotCXNjcmF0Y2guZC5mZXRjaC5raW5kID0gbG9wczsKKwlzY3Jh dGNoLmZldGNoLmxhc3RfdmFyID0gbWF4YXR0OworCXNjcmF0Y2guZmV0Y2guZml4ZWQgPSBm YWxzZTsKKwlzY3JhdGNoLmZldGNoLmtub3duX2Rlc2MgPSBkZXNjOworCXNjcmF0Y2guZmV0 Y2gua2luZCA9IGxvcHM7CiAJaWYgKEV4ZWNDb21wdXRlU2xvdEluZm8oc3RhdGUsICZzY3Jh dGNoKSkKIAkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgJnNjcmF0Y2gpOwogCiAJc2NyYXRj aC5vcGNvZGUgPSBFRU9QX09VVEVSX0ZFVENIU09NRTsKLQlzY3JhdGNoLmQuZmV0Y2gubGFz dF92YXIgPSBtYXhhdHQ7Ci0Jc2NyYXRjaC5kLmZldGNoLmZpeGVkID0gZmFsc2U7Ci0Jc2Ny YXRjaC5kLmZldGNoLmtub3duX2Rlc2MgPSBkZXNjOwotCXNjcmF0Y2guZC5mZXRjaC5raW5k ID0gcm9wczsKKwlzY3JhdGNoLmZldGNoLmxhc3RfdmFyID0gbWF4YXR0OworCXNjcmF0Y2gu ZmV0Y2guZml4ZWQgPSBmYWxzZTsKKwlzY3JhdGNoLmZldGNoLmtub3duX2Rlc2MgPSBkZXNj OworCXNjcmF0Y2guZmV0Y2gua2luZCA9IHJvcHM7CiAJaWYgKEV4ZWNDb21wdXRlU2xvdElu Zm8oc3RhdGUsICZzY3JhdGNoKSkKIAkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgJnNjcmF0 Y2gpOwogCkBAIC00Njg1LDM1ICs0Njg1LDM1IEBAIEV4ZWNCdWlsZFBhcmFtU2V0RXF1YWwo VHVwbGVEZXNjIGRlc2MsCiAKIAkJLyogbGVmdCBhcmcgKi8KIAkJc2NyYXRjaC5vcGNvZGUg PSBFRU9QX0lOTkVSX1ZBUjsKLQkJc2NyYXRjaC5kLnZhci5hdHRudW0gPSBhdHRubzsKLQkJ c2NyYXRjaC5kLnZhci52YXJ0eXBlID0gYXR0LT5hdHR0eXBpZDsKLQkJc2NyYXRjaC5kLnZh ci52YXJyZXR1cm5pbmd0eXBlID0gVkFSX1JFVFVSTklOR19ERUZBVUxUOworCQlzY3JhdGNo LnZhci5hdHRudW0gPSBhdHRubzsKKwkJc2NyYXRjaC52YXIudmFydHlwZSA9IGF0dC0+YXR0 dHlwaWQ7CisJCXNjcmF0Y2gudmFyLnZhcnJldHVybmluZ3R5cGUgPSBWQVJfUkVUVVJOSU5H X0RFRkFVTFQ7CiAJCXNjcmF0Y2gucmVzdmFsdWUgPSAmZmNpbmZvLT5hcmdzWzBdLnZhbHVl OwogCQlzY3JhdGNoLnJlc251bGwgPSAmZmNpbmZvLT5hcmdzWzBdLmlzbnVsbDsKIAkJRXhw ckV2YWxQdXNoU3RlcChzdGF0ZSwgJnNjcmF0Y2gpOwogCiAJCS8qIHJpZ2h0IGFyZyAqLwog CQlzY3JhdGNoLm9wY29kZSA9IEVFT1BfT1VURVJfVkFSOwotCQlzY3JhdGNoLmQudmFyLmF0 dG51bSA9IGF0dG5vOwotCQlzY3JhdGNoLmQudmFyLnZhcnR5cGUgPSBhdHQtPmF0dHR5cGlk OwotCQlzY3JhdGNoLmQudmFyLnZhcnJldHVybmluZ3R5cGUgPSBWQVJfUkVUVVJOSU5HX0RF RkFVTFQ7CisJCXNjcmF0Y2gudmFyLmF0dG51bSA9IGF0dG5vOworCQlzY3JhdGNoLnZhci52 YXJ0eXBlID0gYXR0LT5hdHR0eXBpZDsKKwkJc2NyYXRjaC52YXIudmFycmV0dXJuaW5ndHlw ZSA9IFZBUl9SRVRVUk5JTkdfREVGQVVMVDsKIAkJc2NyYXRjaC5yZXN2YWx1ZSA9ICZmY2lu Zm8tPmFyZ3NbMV0udmFsdWU7CiAJCXNjcmF0Y2gucmVzbnVsbCA9ICZmY2luZm8tPmFyZ3Nb MV0uaXNudWxsOwogCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCAmc2NyYXRjaCk7CiAKIAkJ LyogZXZhbHVhdGUgZGlzdGluY3RuZXNzICovCiAJCXNjcmF0Y2gub3Bjb2RlID0gRUVPUF9O T1RfRElTVElOQ1Q7Ci0JCXNjcmF0Y2guZC5mdW5jLmZpbmZvID0gZmluZm87Ci0JCXNjcmF0 Y2guZC5mdW5jLmZjaW5mb19kYXRhID0gZmNpbmZvOwotCQlzY3JhdGNoLmQuZnVuYy5mbl9h ZGRyID0gZmluZm8tPmZuX2FkZHI7Ci0JCXNjcmF0Y2guZC5mdW5jLm5hcmdzID0gMjsKKwkJ c2NyYXRjaC5mdW5jLmZpbmZvID0gZmluZm87CisJCXNjcmF0Y2guZnVuYy5mY2luZm9fZGF0 YSA9IGZjaW5mbzsKKwkJc2NyYXRjaC5mdW5jLmZuX2FkZHIgPSBmaW5mby0+Zm5fYWRkcjsK KwkJc2NyYXRjaC5mdW5jLm5hcmdzID0gMjsKIAkJc2NyYXRjaC5yZXN2YWx1ZSA9ICZzdGF0 ZS0+cmVzdmFsdWU7CiAJCXNjcmF0Y2gucmVzbnVsbCA9ICZzdGF0ZS0+cmVzbnVsbDsKIAkJ RXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgJnNjcmF0Y2gpOwogCiAJCS8qIHRoZW4gZW1pdCBF RU9QX1FVQUwgdG8gZGV0ZWN0IGlmIHJlc3VsdCBpcyBmYWxzZSAob3IgbnVsbCkgKi8KIAkJ c2NyYXRjaC5vcGNvZGUgPSBFRU9QX1FVQUw7Ci0JCXNjcmF0Y2guZC5xdWFsZXhwci5qdW1w ZG9uZSA9IC0xOworCQlzY3JhdGNoLnF1YWxleHByLmp1bXBkb25lID0gLTE7CiAJCXNjcmF0 Y2gucmVzdmFsdWUgPSAmc3RhdGUtPnJlc3ZhbHVlOwogCQlzY3JhdGNoLnJlc251bGwgPSAm c3RhdGUtPnJlc251bGw7CiAJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsICZzY3JhdGNoKTsK QEAgLTQ3MjcsOCArNDcyNyw4IEBAIEV4ZWNCdWlsZFBhcmFtU2V0RXF1YWwoVHVwbGVEZXNj IGRlc2MsCiAJCUV4cHJFdmFsU3RlcCAqYXMgPSAmc3RhdGUtPnN0ZXBzW2xmaXJzdF9pbnQo bGMpXTsKIAogCQlBc3NlcnQoYXMtPm9wY29kZSA9PSBFRU9QX1FVQUwpOwotCQlBc3NlcnQo YXMtPmQucXVhbGV4cHIuanVtcGRvbmUgPT0gLTEpOwotCQlhcy0+ZC5xdWFsZXhwci5qdW1w ZG9uZSA9IHN0YXRlLT5zdGVwc19sZW47CisJCUFzc2VydChhcy0+cXVhbGV4cHIuanVtcGRv bmUgPT0gLTEpOworCQlhcy0+cXVhbGV4cHIuanVtcGRvbmUgPSBzdGF0ZS0+c3RlcHNfbGVu OwogCX0KIAogCXNjcmF0Y2gucmVzdmFsdWUgPSBOVUxMOwpAQCAtNDc3NSw3ICs0Nzc1LDcg QEAgRXhlY0luaXRKc29uRXhwcihKc29uRXhwciAqanNleHByLCBFeHByU3RhdGUgKnN0YXRl LAogCWp1bXBzX3JldHVybl9udWxsID0gbGFwcGVuZF9pbnQoanVtcHNfcmV0dXJuX251bGws IHN0YXRlLT5zdGVwc19sZW4pOwogCXNjcmF0Y2gtPm9wY29kZSA9IEVFT1BfSlVNUF9JRl9O VUxMOwogCXNjcmF0Y2gtPnJlc251bGwgPSAmanNlc3RhdGUtPmZvcm1hdHRlZF9leHByLmlz bnVsbDsKLQlzY3JhdGNoLT5kLmp1bXAuanVtcGRvbmUgPSAtMTsJLyogc2V0IGJlbG93ICov CisJc2NyYXRjaC0+anVtcC5qdW1wZG9uZSA9IC0xOwkvKiBzZXQgYmVsb3cgKi8KIAlFeHBy RXZhbFB1c2hTdGVwKHN0YXRlLCBzY3JhdGNoKTsKIAogCS8qCkBAIC00NzkwLDcgKzQ3OTAs NyBAQCBFeGVjSW5pdEpzb25FeHByKEpzb25FeHByICpqc2V4cHIsIEV4cHJTdGF0ZSAqc3Rh dGUsCiAJanVtcHNfcmV0dXJuX251bGwgPSBsYXBwZW5kX2ludChqdW1wc19yZXR1cm5fbnVs bCwgc3RhdGUtPnN0ZXBzX2xlbik7CiAJc2NyYXRjaC0+b3Bjb2RlID0gRUVPUF9KVU1QX0lG X05VTEw7CiAJc2NyYXRjaC0+cmVzbnVsbCA9ICZqc2VzdGF0ZS0+cGF0aHNwZWMuaXNudWxs OwotCXNjcmF0Y2gtPmQuanVtcC5qdW1wZG9uZSA9IC0xOwkvKiBzZXQgYmVsb3cgKi8KKwlz Y3JhdGNoLT5qdW1wLmp1bXBkb25lID0gLTE7CS8qIHNldCBiZWxvdyAqLwogCUV4cHJFdmFs UHVzaFN0ZXAoc3RhdGUsIHNjcmF0Y2gpOwogCiAJLyogU3RlcHMgdG8gY29tcHV0ZSBQQVNT SU5HIGFyZ3MuICovCkBAIC00ODE2LDcgKzQ4MTYsNyBAQCBFeGVjSW5pdEpzb25FeHByKEpz b25FeHByICpqc2V4cHIsIEV4cHJTdGF0ZSAqc3RhdGUsCiAJc2NyYXRjaC0+b3Bjb2RlID0g RUVPUF9KU09ORVhQUl9QQVRIOwogCXNjcmF0Y2gtPnJlc3ZhbHVlID0gcmVzdjsKIAlzY3Jh dGNoLT5yZXNudWxsID0gcmVzbnVsbDsKLQlzY3JhdGNoLT5kLmpzb25leHByLmpzZXN0YXRl ID0ganNlc3RhdGU7CisJc2NyYXRjaC0+anNvbmV4cHIuanNlc3RhdGUgPSBqc2VzdGF0ZTsK IAlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCBzY3JhdGNoKTsKIAogCS8qCkBAIC00ODI4LDEz ICs0ODI4LDEzIEBAIEV4ZWNJbml0SnNvbkV4cHIoSnNvbkV4cHIgKmpzZXhwciwgRXhwclN0 YXRlICpzdGF0ZSwKIAl7CiAJCUV4cHJFdmFsU3RlcCAqYXMgPSAmc3RhdGUtPnN0ZXBzW2xm aXJzdF9pbnQobGMpXTsKIAotCQlhcy0+ZC5qdW1wLmp1bXBkb25lID0gc3RhdGUtPnN0ZXBz X2xlbjsKKwkJYXMtPmp1bXAuanVtcGRvbmUgPSBzdGF0ZS0+c3RlcHNfbGVuOwogCX0KIAlz Y3JhdGNoLT5vcGNvZGUgPSBFRU9QX0NPTlNUOwogCXNjcmF0Y2gtPnJlc3ZhbHVlID0gcmVz djsKIAlzY3JhdGNoLT5yZXNudWxsID0gcmVzbnVsbDsKLQlzY3JhdGNoLT5kLmNvbnN0dmFs LnZhbHVlID0gKERhdHVtKSAwOwotCXNjcmF0Y2gtPmQuY29uc3R2YWwuaXNudWxsID0gdHJ1 ZTsKKwlzY3JhdGNoLT5jb25zdHZhbC52YWx1ZSA9IChEYXR1bSkgMDsKKwlzY3JhdGNoLT5j b25zdHZhbC5pc251bGwgPSB0cnVlOwogCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsIHNjcmF0 Y2gpOwogCiAJZXNjb250ZXh0ID0ganNleHByLT5vbl9lcnJvci0+YnR5cGUgIT0gSlNPTl9C RUhBVklPUl9FUlJPUiA/CkBAIC00OTAxLDcgKzQ5MDEsNyBAQCBFeGVjSW5pdEpzb25FeHBy KEpzb25FeHByICpqc2V4cHIsIEV4cHJTdGF0ZSAqc3RhdGUsCiAJaWYgKGpzZXN0YXRlLT5q dW1wX2V2YWxfY29lcmNpb24gPj0gMCAmJiBlc2NvbnRleHQgIT0gTlVMTCkKIAl7CiAJCXNj cmF0Y2gtPm9wY29kZSA9IEVFT1BfSlNPTkVYUFJfQ09FUkNJT05fRklOSVNIOwotCQlzY3Jh dGNoLT5kLmpzb25leHByLmpzZXN0YXRlID0ganNlc3RhdGU7CisJCXNjcmF0Y2gtPmpzb25l eHByLmpzZXN0YXRlID0ganNlc3RhdGU7CiAJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsIHNj cmF0Y2gpOwogCX0KIApAQCAtNDkzMyw3ICs0OTMzLDcgQEAgRXhlY0luaXRKc29uRXhwcihK c29uRXhwciAqanNleHByLCBFeHByU3RhdGUgKnN0YXRlLAogCQlzY3JhdGNoLT5vcGNvZGUg PSBFRU9QX0pVTVBfSUZfTk9UX1RSVUU7CiAJCXNjcmF0Y2gtPnJlc3ZhbHVlID0gJmpzZXN0 YXRlLT5lcnJvci52YWx1ZTsKIAkJc2NyYXRjaC0+cmVzbnVsbCA9ICZqc2VzdGF0ZS0+ZXJy b3IuaXNudWxsOwotCQlzY3JhdGNoLT5kLmp1bXAuanVtcGRvbmUgPSAtMTsJLyogc2V0IGJl bG93ICovCisJCXNjcmF0Y2gtPmp1bXAuanVtcGRvbmUgPSAtMTsJLyogc2V0IGJlbG93ICov CiAJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsIHNjcmF0Y2gpOwogCiAJCS8qCkBAIC00OTYz LDE0ICs0OTYzLDE0IEBAIEV4ZWNJbml0SnNvbkV4cHIoSnNvbkV4cHIgKmpzZXhwciwgRXhw clN0YXRlICpzdGF0ZSwKIAkJCXNjcmF0Y2gtPm9wY29kZSA9IEVFT1BfSlNPTkVYUFJfQ09F UkNJT05fRklOSVNIOwogCQkJc2NyYXRjaC0+cmVzdmFsdWUgPSByZXN2OwogCQkJc2NyYXRj aC0+cmVzbnVsbCA9IHJlc251bGw7Ci0JCQlzY3JhdGNoLT5kLmpzb25leHByLmpzZXN0YXRl ID0ganNlc3RhdGU7CisJCQlzY3JhdGNoLT5qc29uZXhwci5qc2VzdGF0ZSA9IGpzZXN0YXRl OwogCQkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgc2NyYXRjaCk7CiAJCX0KIAogCQkvKiBK VU1QIHRvIGVuZCB0byBza2lwIHRoZSBPTiBFTVBUWSBzdGVwcyBhZGRlZCBiZWxvdy4gKi8K IAkJanVtcHNfdG9fZW5kID0gbGFwcGVuZF9pbnQoanVtcHNfdG9fZW5kLCBzdGF0ZS0+c3Rl cHNfbGVuKTsKIAkJc2NyYXRjaC0+b3Bjb2RlID0gRUVPUF9KVU1QOwotCQlzY3JhdGNoLT5k Lmp1bXAuanVtcGRvbmUgPSAtMTsKKwkJc2NyYXRjaC0+anVtcC5qdW1wZG9uZSA9IC0xOwog CQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCBzY3JhdGNoKTsKIAl9CiAKQEAgLTQ5OTYsNyAr NDk5Niw3IEBAIEV4ZWNJbml0SnNvbkV4cHIoSnNvbkV4cHIgKmpzZXhwciwgRXhwclN0YXRl ICpzdGF0ZSwKIAkJc2NyYXRjaC0+b3Bjb2RlID0gRUVPUF9KVU1QX0lGX05PVF9UUlVFOwog CQlzY3JhdGNoLT5yZXN2YWx1ZSA9ICZqc2VzdGF0ZS0+ZW1wdHkudmFsdWU7CiAJCXNjcmF0 Y2gtPnJlc251bGwgPSAmanNlc3RhdGUtPmVtcHR5LmlzbnVsbDsKLQkJc2NyYXRjaC0+ZC5q dW1wLmp1bXBkb25lID0gLTE7CS8qIHNldCBiZWxvdyAqLworCQlzY3JhdGNoLT5qdW1wLmp1 bXBkb25lID0gLTE7CS8qIHNldCBiZWxvdyAqLwogCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRl LCBzY3JhdGNoKTsKIAogCQkvKgpAQCAtNTAyNyw3ICs1MDI3LDcgQEAgRXhlY0luaXRKc29u RXhwcihKc29uRXhwciAqanNleHByLCBFeHByU3RhdGUgKnN0YXRlLAogCQkJc2NyYXRjaC0+ b3Bjb2RlID0gRUVPUF9KU09ORVhQUl9DT0VSQ0lPTl9GSU5JU0g7CiAJCQlzY3JhdGNoLT5y ZXN2YWx1ZSA9IHJlc3Y7CiAJCQlzY3JhdGNoLT5yZXNudWxsID0gcmVzbnVsbDsKLQkJCXNj cmF0Y2gtPmQuanNvbmV4cHIuanNlc3RhdGUgPSBqc2VzdGF0ZTsKKwkJCXNjcmF0Y2gtPmpz b25leHByLmpzZXN0YXRlID0ganNlc3RhdGU7CiAJCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRl LCBzY3JhdGNoKTsKIAkJfQogCX0KQEAgLTUwMzYsNyArNTAzNiw3IEBAIEV4ZWNJbml0SnNv bkV4cHIoSnNvbkV4cHIgKmpzZXhwciwgRXhwclN0YXRlICpzdGF0ZSwKIAl7CiAJCUV4cHJF dmFsU3RlcCAqYXMgPSAmc3RhdGUtPnN0ZXBzW2xmaXJzdF9pbnQobGMpXTsKIAotCQlhcy0+ ZC5qdW1wLmp1bXBkb25lID0gc3RhdGUtPnN0ZXBzX2xlbjsKKwkJYXMtPmp1bXAuanVtcGRv bmUgPSBzdGF0ZS0+c3RlcHNfbGVuOwogCX0KIAogCWpzZXN0YXRlLT5qdW1wX2VuZCA9IHN0 YXRlLT5zdGVwc19sZW47CkBAIC01MDU4LDE1ICs1MDU4LDE1IEBAIEV4ZWNJbml0SnNvbkNv ZXJjaW9uKEV4cHJTdGF0ZSAqc3RhdGUsIEpzb25SZXR1cm5pbmcgKnJldHVybmluZywKIAlz Y3JhdGNoLm9wY29kZSA9IEVFT1BfSlNPTkVYUFJfQ09FUkNJT047CiAJc2NyYXRjaC5yZXN2 YWx1ZSA9IHJlc3Y7CiAJc2NyYXRjaC5yZXNudWxsID0gcmVzbnVsbDsKLQlzY3JhdGNoLmQu anNvbmV4cHJfY29lcmNpb24udGFyZ2V0dHlwZSA9IHJldHVybmluZy0+dHlwaWQ7Ci0Jc2Ny YXRjaC5kLmpzb25leHByX2NvZXJjaW9uLnRhcmdldHR5cG1vZCA9IHJldHVybmluZy0+dHlw bW9kOwotCXNjcmF0Y2guZC5qc29uZXhwcl9jb2VyY2lvbi5qc29uX2NvZXJjaW9uX2NhY2hl ID0gTlVMTDsKLQlzY3JhdGNoLmQuanNvbmV4cHJfY29lcmNpb24uZXNjb250ZXh0ID0gZXNj b250ZXh0OwotCXNjcmF0Y2guZC5qc29uZXhwcl9jb2VyY2lvbi5vbWl0X3F1b3RlcyA9IG9t aXRfcXVvdGVzOwotCXNjcmF0Y2guZC5qc29uZXhwcl9jb2VyY2lvbi5leGlzdHNfY29lcmNl ID0gZXhpc3RzX2NvZXJjZTsKLQlzY3JhdGNoLmQuanNvbmV4cHJfY29lcmNpb24uZXhpc3Rz X2Nhc3RfdG9faW50ID0gZXhpc3RzX2NvZXJjZSAmJgorCXNjcmF0Y2guanNvbmV4cHJfY29l cmNpb24udGFyZ2V0dHlwZSA9IHJldHVybmluZy0+dHlwaWQ7CisJc2NyYXRjaC5qc29uZXhw cl9jb2VyY2lvbi50YXJnZXR0eXBtb2QgPSByZXR1cm5pbmctPnR5cG1vZDsKKwlzY3JhdGNo Lmpzb25leHByX2NvZXJjaW9uLmpzb25fY29lcmNpb25fY2FjaGUgPSBOVUxMOworCXNjcmF0 Y2guanNvbmV4cHJfY29lcmNpb24uZXNjb250ZXh0ID0gZXNjb250ZXh0OworCXNjcmF0Y2gu anNvbmV4cHJfY29lcmNpb24ub21pdF9xdW90ZXMgPSBvbWl0X3F1b3RlczsKKwlzY3JhdGNo Lmpzb25leHByX2NvZXJjaW9uLmV4aXN0c19jb2VyY2UgPSBleGlzdHNfY29lcmNlOworCXNj cmF0Y2guanNvbmV4cHJfY29lcmNpb24uZXhpc3RzX2Nhc3RfdG9faW50ID0gZXhpc3RzX2Nv ZXJjZSAmJgogCQlnZXRCYXNlVHlwZShyZXR1cm5pbmctPnR5cGlkKSA9PSBJTlQ0T0lEOwot CXNjcmF0Y2guZC5qc29uZXhwcl9jb2VyY2lvbi5leGlzdHNfY2hlY2tfZG9tYWluID0gZXhp c3RzX2NvZXJjZSAmJgorCXNjcmF0Y2guanNvbmV4cHJfY29lcmNpb24uZXhpc3RzX2NoZWNr X2RvbWFpbiA9IGV4aXN0c19jb2VyY2UgJiYKIAkJRG9tYWluSGFzQ29uc3RyYWludHMocmV0 dXJuaW5nLT50eXBpZCk7CiAJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgJnNjcmF0Y2gpOwog fQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKaW5kZXggMGUxYTc0OTc2 ZjcuLjUxZjQ5OGJkNzlhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj RXhwckludGVycC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJw LmMKQEAgLTYzNSw3ICs2MzUsNyBAQCBFeGVjSW50ZXJwRXhwcihFeHByU3RhdGUgKnN0YXRl LCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJewogCQkJQ2hlY2tP cFNsb3RDb21wYXRpYmlsaXR5KG9wLCBpbm5lcnNsb3QpOwogCi0JCQlzbG90X2dldHNvbWVh dHRycyhpbm5lcnNsb3QsIG9wLT5kLmZldGNoLmxhc3RfdmFyKTsKKwkJCXNsb3RfZ2V0c29t ZWF0dHJzKGlubmVyc2xvdCwgb3AtPmZldGNoLmxhc3RfdmFyKTsKIAogCQkJRUVPX05FWFQo KTsKIAkJfQpAQCAtNjQ0LDcgKzY0NCw3IEBAIEV4ZWNJbnRlcnBFeHByKEV4cHJTdGF0ZSAq c3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwgYm9vbCAqaXNudWxsKQogCQl7CiAJCQlD aGVja09wU2xvdENvbXBhdGliaWxpdHkob3AsIG91dGVyc2xvdCk7CiAKLQkJCXNsb3RfZ2V0 c29tZWF0dHJzKG91dGVyc2xvdCwgb3AtPmQuZmV0Y2gubGFzdF92YXIpOworCQkJc2xvdF9n ZXRzb21lYXR0cnMob3V0ZXJzbG90LCBvcC0+ZmV0Y2gubGFzdF92YXIpOwogCiAJCQlFRU9f TkVYVCgpOwogCQl9CkBAIC02NTMsNyArNjUzLDcgQEAgRXhlY0ludGVycEV4cHIoRXhwclN0 YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251bGwpCiAJCXsK IAkJCUNoZWNrT3BTbG90Q29tcGF0aWJpbGl0eShvcCwgc2NhbnNsb3QpOwogCi0JCQlzbG90 X2dldHNvbWVhdHRycyhzY2Fuc2xvdCwgb3AtPmQuZmV0Y2gubGFzdF92YXIpOworCQkJc2xv dF9nZXRzb21lYXR0cnMoc2NhbnNsb3QsIG9wLT5mZXRjaC5sYXN0X3Zhcik7CiAKIAkJCUVF T19ORVhUKCk7CiAJCX0KQEAgLTY2Miw3ICs2NjIsNyBAQCBFeGVjSW50ZXJwRXhwcihFeHBy U3RhdGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJ ewogCQkJQ2hlY2tPcFNsb3RDb21wYXRpYmlsaXR5KG9wLCBvbGRzbG90KTsKIAotCQkJc2xv dF9nZXRzb21lYXR0cnMob2xkc2xvdCwgb3AtPmQuZmV0Y2gubGFzdF92YXIpOworCQkJc2xv dF9nZXRzb21lYXR0cnMob2xkc2xvdCwgb3AtPmZldGNoLmxhc3RfdmFyKTsKIAogCQkJRUVP X05FWFQoKTsKIAkJfQpAQCAtNjcxLDE0ICs2NzEsMTQgQEAgRXhlY0ludGVycEV4cHIoRXhw clN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251bGwpCiAJ CXsKIAkJCUNoZWNrT3BTbG90Q29tcGF0aWJpbGl0eShvcCwgbmV3c2xvdCk7CiAKLQkJCXNs b3RfZ2V0c29tZWF0dHJzKG5ld3Nsb3QsIG9wLT5kLmZldGNoLmxhc3RfdmFyKTsKKwkJCXNs b3RfZ2V0c29tZWF0dHJzKG5ld3Nsb3QsIG9wLT5mZXRjaC5sYXN0X3Zhcik7CiAKIAkJCUVF T19ORVhUKCk7CiAJCX0KIAogCQlFRU9fQ0FTRShFRU9QX0lOTkVSX1ZBUikKIAkJewotCQkJ aW50CQkJYXR0bnVtID0gb3AtPmQudmFyLmF0dG51bTsKKwkJCWludAkJCWF0dG51bSA9IG9w LT52YXIuYXR0bnVtOwogCiAJCQkvKgogCQkJICogU2luY2Ugd2UgYWxyZWFkeSBleHRyYWN0 ZWQgYWxsIHJlZmVyZW5jZWQgY29sdW1ucyBmcm9tIHRoZQpAQCAtNjk1LDcgKzY5NSw3IEBA IEV4ZWNJbnRlcnBFeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4 dCwgYm9vbCAqaXNudWxsKQogCiAJCUVFT19DQVNFKEVFT1BfT1VURVJfVkFSKQogCQl7Ci0J CQlpbnQJCQlhdHRudW0gPSBvcC0+ZC52YXIuYXR0bnVtOworCQkJaW50CQkJYXR0bnVtID0g b3AtPnZhci5hdHRudW07CiAKIAkJCS8qIFNlZSBFRU9QX0lOTkVSX1ZBUiBjb21tZW50cyAq LwogCkBAIC03MDgsNyArNzA4LDcgQEAgRXhlY0ludGVycEV4cHIoRXhwclN0YXRlICpzdGF0 ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251bGwpCiAKIAkJRUVPX0NBU0Uo RUVPUF9TQ0FOX1ZBUikKIAkJewotCQkJaW50CQkJYXR0bnVtID0gb3AtPmQudmFyLmF0dG51 bTsKKwkJCWludAkJCWF0dG51bSA9IG9wLT52YXIuYXR0bnVtOwogCiAJCQkvKiBTZWUgRUVP UF9JTk5FUl9WQVIgY29tbWVudHMgKi8KIApAQCAtNzIxLDcgKzcyMSw3IEBAIEV4ZWNJbnRl cnBFeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwgYm9vbCAq aXNudWxsKQogCiAJCUVFT19DQVNFKEVFT1BfT0xEX1ZBUikKIAkJewotCQkJaW50CQkJYXR0 bnVtID0gb3AtPmQudmFyLmF0dG51bTsKKwkJCWludAkJCWF0dG51bSA9IG9wLT52YXIuYXR0 bnVtOwogCiAJCQkvKiBTZWUgRUVPUF9JTk5FUl9WQVIgY29tbWVudHMgKi8KIApAQCAtNzM0 LDcgKzczNCw3IEBAIEV4ZWNJbnRlcnBFeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250 ZXh0ICplY29udGV4dCwgYm9vbCAqaXNudWxsKQogCiAJCUVFT19DQVNFKEVFT1BfTkVXX1ZB UikKIAkJewotCQkJaW50CQkJYXR0bnVtID0gb3AtPmQudmFyLmF0dG51bTsKKwkJCWludAkJ CWF0dG51bSA9IG9wLT52YXIuYXR0bnVtOwogCiAJCQkvKiBTZWUgRUVPUF9JTk5FUl9WQVIg Y29tbWVudHMgKi8KIApAQCAtNzg1LDggKzc4NSw4IEBAIEV4ZWNJbnRlcnBFeHByKEV4cHJT dGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwgYm9vbCAqaXNudWxsKQogCiAJ CUVFT19DQVNFKEVFT1BfQVNTSUdOX0lOTkVSX1ZBUikKIAkJewotCQkJaW50CQkJcmVzdWx0 bnVtID0gb3AtPmQuYXNzaWduX3Zhci5yZXN1bHRudW07Ci0JCQlpbnQJCQlhdHRudW0gPSBv cC0+ZC5hc3NpZ25fdmFyLmF0dG51bTsKKwkJCWludAkJCXJlc3VsdG51bSA9IG9wLT5hc3Np Z25fdmFyLnJlc3VsdG51bTsKKwkJCWludAkJCWF0dG51bSA9IG9wLT5hc3NpZ25fdmFyLmF0 dG51bTsKIAogCQkJLyoKIAkJCSAqIFdlIGRvIG5vdCBuZWVkIENoZWNrVmFyU2xvdENvbXBh dGliaWxpdHkgaGVyZTsgdGhhdCB3YXMgdGFrZW4KQEAgLTgwMiw4ICs4MDIsOCBAQCBFeGVj SW50ZXJwRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJv b2wgKmlzbnVsbCkKIAogCQlFRU9fQ0FTRShFRU9QX0FTU0lHTl9PVVRFUl9WQVIpCiAJCXsK LQkJCWludAkJCXJlc3VsdG51bSA9IG9wLT5kLmFzc2lnbl92YXIucmVzdWx0bnVtOwotCQkJ aW50CQkJYXR0bnVtID0gb3AtPmQuYXNzaWduX3Zhci5hdHRudW07CisJCQlpbnQJCQlyZXN1 bHRudW0gPSBvcC0+YXNzaWduX3Zhci5yZXN1bHRudW07CisJCQlpbnQJCQlhdHRudW0gPSBv cC0+YXNzaWduX3Zhci5hdHRudW07CiAKIAkJCS8qCiAJCQkgKiBXZSBkbyBub3QgbmVlZCBD aGVja1ZhclNsb3RDb21wYXRpYmlsaXR5IGhlcmU7IHRoYXQgd2FzIHRha2VuCkBAIC04MTks OCArODE5LDggQEAgRXhlY0ludGVycEV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRl eHQgKmVjb250ZXh0LCBib29sICppc251bGwpCiAKIAkJRUVPX0NBU0UoRUVPUF9BU1NJR05f U0NBTl9WQVIpCiAJCXsKLQkJCWludAkJCXJlc3VsdG51bSA9IG9wLT5kLmFzc2lnbl92YXIu cmVzdWx0bnVtOwotCQkJaW50CQkJYXR0bnVtID0gb3AtPmQuYXNzaWduX3Zhci5hdHRudW07 CisJCQlpbnQJCQlyZXN1bHRudW0gPSBvcC0+YXNzaWduX3Zhci5yZXN1bHRudW07CisJCQlp bnQJCQlhdHRudW0gPSBvcC0+YXNzaWduX3Zhci5hdHRudW07CiAKIAkJCS8qCiAJCQkgKiBX ZSBkbyBub3QgbmVlZCBDaGVja1ZhclNsb3RDb21wYXRpYmlsaXR5IGhlcmU7IHRoYXQgd2Fz IHRha2VuCkBAIC04MzYsOCArODM2LDggQEAgRXhlY0ludGVycEV4cHIoRXhwclN0YXRlICpz dGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251bGwpCiAKIAkJRUVPX0NB U0UoRUVPUF9BU1NJR05fT0xEX1ZBUikKIAkJewotCQkJaW50CQkJcmVzdWx0bnVtID0gb3At PmQuYXNzaWduX3Zhci5yZXN1bHRudW07Ci0JCQlpbnQJCQlhdHRudW0gPSBvcC0+ZC5hc3Np Z25fdmFyLmF0dG51bTsKKwkJCWludAkJCXJlc3VsdG51bSA9IG9wLT5hc3NpZ25fdmFyLnJl c3VsdG51bTsKKwkJCWludAkJCWF0dG51bSA9IG9wLT5hc3NpZ25fdmFyLmF0dG51bTsKIAog CQkJLyoKIAkJCSAqIFdlIGRvIG5vdCBuZWVkIENoZWNrVmFyU2xvdENvbXBhdGliaWxpdHkg aGVyZTsgdGhhdCB3YXMgdGFrZW4KQEAgLTg1Myw4ICs4NTMsOCBAQCBFeGVjSW50ZXJwRXhw cihFeHByU3RhdGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVs bCkKIAogCQlFRU9fQ0FTRShFRU9QX0FTU0lHTl9ORVdfVkFSKQogCQl7Ci0JCQlpbnQJCQly ZXN1bHRudW0gPSBvcC0+ZC5hc3NpZ25fdmFyLnJlc3VsdG51bTsKLQkJCWludAkJCWF0dG51 bSA9IG9wLT5kLmFzc2lnbl92YXIuYXR0bnVtOworCQkJaW50CQkJcmVzdWx0bnVtID0gb3At PmFzc2lnbl92YXIucmVzdWx0bnVtOworCQkJaW50CQkJYXR0bnVtID0gb3AtPmFzc2lnbl92 YXIuYXR0bnVtOwogCiAJCQkvKgogCQkJICogV2UgZG8gbm90IG5lZWQgQ2hlY2tWYXJTbG90 Q29tcGF0aWJpbGl0eSBoZXJlOyB0aGF0IHdhcyB0YWtlbgpAQCAtODcwLDcgKzg3MCw3IEBA IEV4ZWNJbnRlcnBFeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4 dCwgYm9vbCAqaXNudWxsKQogCiAJCUVFT19DQVNFKEVFT1BfQVNTSUdOX1RNUCkKIAkJewot CQkJaW50CQkJcmVzdWx0bnVtID0gb3AtPmQuYXNzaWduX3RtcC5yZXN1bHRudW07CisJCQlp bnQJCQlyZXN1bHRudW0gPSBvcC0+YXNzaWduX3RtcC5yZXN1bHRudW07CiAKIAkJCUFzc2Vy dChyZXN1bHRudW0gPj0gMCAmJiByZXN1bHRudW0gPCByZXN1bHRzbG90LT50dHNfdHVwbGVE ZXNjcmlwdG9yLT5uYXR0cyk7CiAJCQlyZXN1bHRzbG90LT50dHNfdmFsdWVzW3Jlc3VsdG51 bV0gPSBzdGF0ZS0+cmVzdmFsdWU7CkBAIC04ODEsNyArODgxLDcgQEAgRXhlY0ludGVycEV4 cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251 bGwpCiAKIAkJRUVPX0NBU0UoRUVPUF9BU1NJR05fVE1QX01BS0VfUk8pCiAJCXsKLQkJCWlu dAkJCXJlc3VsdG51bSA9IG9wLT5kLmFzc2lnbl90bXAucmVzdWx0bnVtOworCQkJaW50CQkJ cmVzdWx0bnVtID0gb3AtPmFzc2lnbl90bXAucmVzdWx0bnVtOwogCiAJCQlBc3NlcnQocmVz dWx0bnVtID49IDAgJiYgcmVzdWx0bnVtIDwgcmVzdWx0c2xvdC0+dHRzX3R1cGxlRGVzY3Jp cHRvci0+bmF0dHMpOwogCQkJcmVzdWx0c2xvdC0+dHRzX2lzbnVsbFtyZXN1bHRudW1dID0g c3RhdGUtPnJlc251bGw7CkBAIC04OTYsOCArODk2LDggQEAgRXhlY0ludGVycEV4cHIoRXhw clN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251bGwpCiAK IAkJRUVPX0NBU0UoRUVPUF9DT05TVCkKIAkJewotCQkJKm9wLT5yZXNudWxsID0gb3AtPmQu Y29uc3R2YWwuaXNudWxsOwotCQkJKm9wLT5yZXN2YWx1ZSA9IG9wLT5kLmNvbnN0dmFsLnZh bHVlOworCQkJKm9wLT5yZXNudWxsID0gb3AtPmNvbnN0dmFsLmlzbnVsbDsKKwkJCSpvcC0+ cmVzdmFsdWUgPSBvcC0+Y29uc3R2YWwudmFsdWU7CiAKIAkJCUVFT19ORVhUKCk7CiAJCX0K QEAgLTkxOSwxMSArOTE5LDExIEBAIEV4ZWNJbnRlcnBFeHByKEV4cHJTdGF0ZSAqc3RhdGUs IEV4cHJDb250ZXh0ICplY29udGV4dCwgYm9vbCAqaXNudWxsKQogCQkgKi8KIAkJRUVPX0NB U0UoRUVPUF9GVU5DRVhQUikKIAkJewotCQkJRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8gPSBv cC0+ZC5mdW5jLmZjaW5mb19kYXRhOworCQkJRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8gPSBv cC0+ZnVuYy5mY2luZm9fZGF0YTsKIAkJCURhdHVtCQlkOwogCiAJCQlmY2luZm8tPmlzbnVs bCA9IGZhbHNlOwotCQkJZCA9IG9wLT5kLmZ1bmMuZm5fYWRkcihmY2luZm8pOworCQkJZCA9 IG9wLT5mdW5jLmZuX2FkZHIoZmNpbmZvKTsKIAkJCSpvcC0+cmVzdmFsdWUgPSBkOwogCQkJ Km9wLT5yZXNudWxsID0gZmNpbmZvLT5pc251bGw7CiAKQEAgLTkzMyw5ICs5MzMsOSBAQCBF eGVjSW50ZXJwRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQs IGJvb2wgKmlzbnVsbCkKIAkJLyogc3RyaWN0IGZ1bmN0aW9uIGNhbGwgd2l0aCBtb3JlIHRo YW4gdHdvIGFyZ3VtZW50cyAqLwogCQlFRU9fQ0FTRShFRU9QX0ZVTkNFWFBSX1NUUklDVCkK IAkJewotCQkJRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8gPSBvcC0+ZC5mdW5jLmZjaW5mb19k YXRhOworCQkJRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8gPSBvcC0+ZnVuYy5mY2luZm9fZGF0 YTsKIAkJCU51bGxhYmxlRGF0dW0gKmFyZ3MgPSBmY2luZm8tPmFyZ3M7Ci0JCQlpbnQJCQlu YXJncyA9IG9wLT5kLmZ1bmMubmFyZ3M7CisJCQlpbnQJCQluYXJncyA9IG9wLT5mdW5jLm5h cmdzOwogCQkJRGF0dW0JCWQ7CiAKIAkJCUFzc2VydChuYXJncyA+IDIpOwpAQCAtOTUwLDcg Kzk1MCw3IEBAIEV4ZWNJbnRlcnBFeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0 ICplY29udGV4dCwgYm9vbCAqaXNudWxsKQogCQkJCX0KIAkJCX0KIAkJCWZjaW5mby0+aXNu dWxsID0gZmFsc2U7Ci0JCQlkID0gb3AtPmQuZnVuYy5mbl9hZGRyKGZjaW5mbyk7CisJCQlk ID0gb3AtPmZ1bmMuZm5fYWRkcihmY2luZm8pOwogCQkJKm9wLT5yZXN2YWx1ZSA9IGQ7CiAJ CQkqb3AtPnJlc251bGwgPSBmY2luZm8tPmlzbnVsbDsKIApAQCAtOTYxLDEwICs5NjEsMTAg QEAgRXhlY0ludGVycEV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250 ZXh0LCBib29sICppc251bGwpCiAJCS8qIHN0cmljdCBmdW5jdGlvbiBjYWxsIHdpdGggb25l IGFyZ3VtZW50ICovCiAJCUVFT19DQVNFKEVFT1BfRlVOQ0VYUFJfU1RSSUNUXzEpCiAJCXsK LQkJCUZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvID0gb3AtPmQuZnVuYy5mY2luZm9fZGF0YTsK KwkJCUZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvID0gb3AtPmZ1bmMuZmNpbmZvX2RhdGE7CiAJ CQlOdWxsYWJsZURhdHVtICphcmdzID0gZmNpbmZvLT5hcmdzOwogCi0JCQlBc3NlcnQob3At PmQuZnVuYy5uYXJncyA9PSAxKTsKKwkJCUFzc2VydChvcC0+ZnVuYy5uYXJncyA9PSAxKTsK IAogCQkJLyogc3RyaWN0IGZ1bmN0aW9uLCBzbyBjaGVjayBmb3IgTlVMTCBhcmdzICovCiAJ CQlpZiAoYXJnc1swXS5pc251bGwpCkBAIC05NzQsNyArOTc0LDcgQEAgRXhlY0ludGVycEV4 cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251 bGwpCiAJCQkJRGF0dW0JCWQ7CiAKIAkJCQlmY2luZm8tPmlzbnVsbCA9IGZhbHNlOwotCQkJ CWQgPSBvcC0+ZC5mdW5jLmZuX2FkZHIoZmNpbmZvKTsKKwkJCQlkID0gb3AtPmZ1bmMuZm5f YWRkcihmY2luZm8pOwogCQkJCSpvcC0+cmVzdmFsdWUgPSBkOwogCQkJCSpvcC0+cmVzbnVs bCA9IGZjaW5mby0+aXNudWxsOwogCQkJfQpAQCAtOTg1LDEwICs5ODUsMTAgQEAgRXhlY0lu dGVycEV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29s ICppc251bGwpCiAJCS8qIHN0cmljdCBmdW5jdGlvbiBjYWxsIHdpdGggdHdvIGFyZ3VtZW50 cyAqLwogCQlFRU9fQ0FTRShFRU9QX0ZVTkNFWFBSX1NUUklDVF8yKQogCQl7Ci0JCQlGdW5j dGlvbkNhbGxJbmZvIGZjaW5mbyA9IG9wLT5kLmZ1bmMuZmNpbmZvX2RhdGE7CisJCQlGdW5j dGlvbkNhbGxJbmZvIGZjaW5mbyA9IG9wLT5mdW5jLmZjaW5mb19kYXRhOwogCQkJTnVsbGFi bGVEYXR1bSAqYXJncyA9IGZjaW5mby0+YXJnczsKIAotCQkJQXNzZXJ0KG9wLT5kLmZ1bmMu bmFyZ3MgPT0gMik7CisJCQlBc3NlcnQob3AtPmZ1bmMubmFyZ3MgPT0gMik7CiAKIAkJCS8q IHN0cmljdCBmdW5jdGlvbiwgc28gY2hlY2sgZm9yIE5VTEwgYXJncyAqLwogCQkJaWYgKGFy Z3NbMF0uaXNudWxsIHx8IGFyZ3NbMV0uaXNudWxsKQpAQCAtOTk4LDcgKzk5OCw3IEBAIEV4 ZWNJbnRlcnBFeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwg Ym9vbCAqaXNudWxsKQogCQkJCURhdHVtCQlkOwogCiAJCQkJZmNpbmZvLT5pc251bGwgPSBm YWxzZTsKLQkJCQlkID0gb3AtPmQuZnVuYy5mbl9hZGRyKGZjaW5mbyk7CisJCQkJZCA9IG9w LT5mdW5jLmZuX2FkZHIoZmNpbmZvKTsKIAkJCQkqb3AtPnJlc3ZhbHVlID0gZDsKIAkJCQkq b3AtPnJlc251bGwgPSBmY2luZm8tPmlzbnVsbDsKIAkJCX0KQEAgLTEwMzQsNyArMTAzNCw3 IEBAIEV4ZWNJbnRlcnBFeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29u dGV4dCwgYm9vbCAqaXNudWxsKQogCQkgKi8KIAkJRUVPX0NBU0UoRUVPUF9CT09MX0FORF9T VEVQX0ZJUlNUKQogCQl7Ci0JCQkqb3AtPmQuYm9vbGV4cHIuYW55bnVsbCA9IGZhbHNlOwor CQkJKm9wLT5ib29sZXhwci5hbnludWxsID0gZmFsc2U7CiAKIAkJCS8qCiAJCQkgKiBFRU9Q X0JPT0xfQU5EX1NURVBfRklSU1QgcmVzZXRzIGFueW51bGwsIG90aGVyd2lzZSBpdCdzIHRo ZQpAQCAtMTA0OCwxMyArMTA0OCwxMyBAQCBFeGVjSW50ZXJwRXhwcihFeHByU3RhdGUgKnN0 YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJewogCQkJaWYg KCpvcC0+cmVzbnVsbCkKIAkJCXsKLQkJCQkqb3AtPmQuYm9vbGV4cHIuYW55bnVsbCA9IHRy dWU7CisJCQkJKm9wLT5ib29sZXhwci5hbnludWxsID0gdHJ1ZTsKIAkJCX0KIAkJCWVsc2Ug aWYgKCFEYXR1bUdldEJvb2woKm9wLT5yZXN2YWx1ZSkpCiAJCQl7CiAJCQkJLyogcmVzdWx0 IGlzIGFscmVhZHkgc2V0IHRvIEZBTFNFLCBuZWVkIG5vdCBjaGFuZ2UgaXQgKi8KIAkJCQkv KiBiYWlsIG91dCBlYXJseSAqLwotCQkJCUVFT19KVU1QKG9wLT5kLmJvb2xleHByLmp1bXBk b25lKTsKKwkJCQlFRU9fSlVNUChvcC0+Ym9vbGV4cHIuanVtcGRvbmUpOwogCQkJfQogCiAJ CQlFRU9fTkVYVCgpOwpAQCAtMTA3Niw3ICsxMDc2LDcgQEAgRXhlY0ludGVycEV4cHIoRXhw clN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251bGwpCiAJ CQkJICogZXhjZXB0IG1vcmUgZXhwZW5zaXZlLgogCQkJCSAqLwogCQkJfQotCQkJZWxzZSBp ZiAoKm9wLT5kLmJvb2xleHByLmFueW51bGwpCisJCQllbHNlIGlmICgqb3AtPmJvb2xleHBy LmFueW51bGwpCiAJCQl7CiAJCQkJKm9wLT5yZXN2YWx1ZSA9IChEYXR1bSkgMDsKIAkJCQkq b3AtPnJlc251bGwgPSB0cnVlOwpAQCAtMTEwMSw3ICsxMTAxLDcgQEAgRXhlY0ludGVycEV4 cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251 bGwpCiAJCSAqLwogCQlFRU9fQ0FTRShFRU9QX0JPT0xfT1JfU1RFUF9GSVJTVCkKIAkJewot CQkJKm9wLT5kLmJvb2xleHByLmFueW51bGwgPSBmYWxzZTsKKwkJCSpvcC0+Ym9vbGV4cHIu YW55bnVsbCA9IGZhbHNlOwogCiAJCQkvKgogCQkJICogRUVPUF9CT09MX09SX1NURVBfRklS U1QgcmVzZXRzIGFueW51bGwsIG90aGVyd2lzZSBpdCdzIHRoZSBzYW1lCkBAIC0xMTE1LDEz ICsxMTE1LDEzIEBAIEV4ZWNJbnRlcnBFeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250 ZXh0ICplY29udGV4dCwgYm9vbCAqaXNudWxsKQogCQl7CiAJCQlpZiAoKm9wLT5yZXNudWxs KQogCQkJewotCQkJCSpvcC0+ZC5ib29sZXhwci5hbnludWxsID0gdHJ1ZTsKKwkJCQkqb3At PmJvb2xleHByLmFueW51bGwgPSB0cnVlOwogCQkJfQogCQkJZWxzZSBpZiAoRGF0dW1HZXRC b29sKCpvcC0+cmVzdmFsdWUpKQogCQkJewogCQkJCS8qIHJlc3VsdCBpcyBhbHJlYWR5IHNl dCB0byBUUlVFLCBuZWVkIG5vdCBjaGFuZ2UgaXQgKi8KIAkJCQkvKiBiYWlsIG91dCBlYXJs eSAqLwotCQkJCUVFT19KVU1QKG9wLT5kLmJvb2xleHByLmp1bXBkb25lKTsKKwkJCQlFRU9f SlVNUChvcC0+Ym9vbGV4cHIuanVtcGRvbmUpOwogCQkJfQogCiAJCQlFRU9fTkVYVCgpOwpA QCAtMTE0Myw3ICsxMTQzLDcgQEAgRXhlY0ludGVycEV4cHIoRXhwclN0YXRlICpzdGF0ZSwg RXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251bGwpCiAJCQkJICogbW9yZSBleHBl bnNpdmUuCiAJCQkJICovCiAJCQl9Ci0JCQllbHNlIGlmICgqb3AtPmQuYm9vbGV4cHIuYW55 bnVsbCkKKwkJCWVsc2UgaWYgKCpvcC0+Ym9vbGV4cHIuYW55bnVsbCkKIAkJCXsKIAkJCQkq b3AtPnJlc3ZhbHVlID0gKERhdHVtKSAwOwogCQkJCSpvcC0+cmVzbnVsbCA9IHRydWU7CkBA IC0xMTgwLDcgKzExODAsNyBAQCBFeGVjSW50ZXJwRXhwcihFeHByU3RhdGUgKnN0YXRlLCBF eHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJCQkvKiAuLi4gYmFpbCBv dXQgZWFybHksIHJldHVybmluZyBGQUxTRSAqLwogCQkJCSpvcC0+cmVzbnVsbCA9IGZhbHNl OwogCQkJCSpvcC0+cmVzdmFsdWUgPSBCb29sR2V0RGF0dW0oZmFsc2UpOwotCQkJCUVFT19K VU1QKG9wLT5kLnF1YWxleHByLmp1bXBkb25lKTsKKwkJCQlFRU9fSlVNUChvcC0+cXVhbGV4 cHIuanVtcGRvbmUpOwogCQkJfQogCiAJCQkvKgpAQCAtMTE5NCwxNCArMTE5NCwxNCBAQCBF eGVjSW50ZXJwRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQs IGJvb2wgKmlzbnVsbCkKIAkJRUVPX0NBU0UoRUVPUF9KVU1QKQogCQl7CiAJCQkvKiBVbmNv bmRpdGlvbmFsbHkganVtcCB0byB0YXJnZXQgc3RlcCAqLwotCQkJRUVPX0pVTVAob3AtPmQu anVtcC5qdW1wZG9uZSk7CisJCQlFRU9fSlVNUChvcC0+anVtcC5qdW1wZG9uZSk7CiAJCX0K IAogCQlFRU9fQ0FTRShFRU9QX0pVTVBfSUZfTlVMTCkKIAkJewogCQkJLyogVHJhbnNmZXIg Y29udHJvbCBpZiBjdXJyZW50IHJlc3VsdCBpcyBudWxsICovCiAJCQlpZiAoKm9wLT5yZXNu dWxsKQotCQkJCUVFT19KVU1QKG9wLT5kLmp1bXAuanVtcGRvbmUpOworCQkJCUVFT19KVU1Q KG9wLT5qdW1wLmp1bXBkb25lKTsKIAogCQkJRUVPX05FWFQoKTsKIAkJfQpAQCAtMTIxMCw3 ICsxMjEwLDcgQEAgRXhlY0ludGVycEV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRl eHQgKmVjb250ZXh0LCBib29sICppc251bGwpCiAJCXsKIAkJCS8qIFRyYW5zZmVyIGNvbnRy b2wgaWYgY3VycmVudCByZXN1bHQgaXMgbm9uLW51bGwgKi8KIAkJCWlmICghKm9wLT5yZXNu dWxsKQotCQkJCUVFT19KVU1QKG9wLT5kLmp1bXAuanVtcGRvbmUpOworCQkJCUVFT19KVU1Q KG9wLT5qdW1wLmp1bXBkb25lKTsKIAogCQkJRUVPX05FWFQoKTsKIAkJfQpAQCAtMTIxOSw3 ICsxMjE5LDcgQEAgRXhlY0ludGVycEV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRl eHQgKmVjb250ZXh0LCBib29sICppc251bGwpCiAJCXsKIAkJCS8qIFRyYW5zZmVyIGNvbnRy b2wgaWYgY3VycmVudCByZXN1bHQgaXMgbnVsbCBvciBmYWxzZSAqLwogCQkJaWYgKCpvcC0+ cmVzbnVsbCB8fCAhRGF0dW1HZXRCb29sKCpvcC0+cmVzdmFsdWUpKQotCQkJCUVFT19KVU1Q KG9wLT5kLmp1bXAuanVtcGRvbmUpOworCQkJCUVFT19KVU1QKG9wLT5qdW1wLmp1bXBkb25l KTsKIAogCQkJRUVPX05FWFQoKTsKIAkJfQpAQCAtMTMyNiw3ICsxMzI2LDcgQEAgRXhlY0lu dGVycEV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29s ICppc251bGwpCiAJCUVFT19DQVNFKEVFT1BfUEFSQU1fQ0FMTEJBQ0spCiAJCXsKIAkJCS8q IGFsbG93IGFuIGV4dGVuc2lvbiBtb2R1bGUgdG8gc3VwcGx5IGEgUEFSQU1fRVhURVJOIHZh bHVlICovCi0JCQlvcC0+ZC5jcGFyYW0ucGFyYW1mdW5jKHN0YXRlLCBvcCwgZWNvbnRleHQp OworCQkJb3AtPmNwYXJhbS5wYXJhbWZ1bmMoc3RhdGUsIG9wLCBlY29udGV4dCk7CiAJCQlF RU9fTkVYVCgpOwogCQl9CiAKQEAgLTEzMzksOCArMTMzOSw4IEBAIEV4ZWNJbnRlcnBFeHBy KEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwgYm9vbCAqaXNudWxs KQogCiAJCUVFT19DQVNFKEVFT1BfQ0FTRV9URVNUVkFMKQogCQl7Ci0JCQkqb3AtPnJlc3Zh bHVlID0gKm9wLT5kLmNhc2V0ZXN0LnZhbHVlOwotCQkJKm9wLT5yZXNudWxsID0gKm9wLT5k LmNhc2V0ZXN0LmlzbnVsbDsKKwkJCSpvcC0+cmVzdmFsdWUgPSAqb3AtPmNhc2V0ZXN0LnZh bHVlOworCQkJKm9wLT5yZXNudWxsID0gKm9wLT5jYXNldGVzdC5pc251bGw7CiAKIAkJCUVF T19ORVhUKCk7CiAJCX0KQEAgLTEzNTgsMTAgKzEzNTgsMTAgQEAgRXhlY0ludGVycEV4cHIo RXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251bGwp CiAJCQkvKgogCQkJICogRm9yY2UgYSB2YXJsZW5hIHZhbHVlIHRoYXQgbWlnaHQgYmUgcmVh ZCBtdWx0aXBsZSB0aW1lcyB0byBSL08KIAkJCSAqLwotCQkJaWYgKCEqb3AtPmQubWFrZV9y ZWFkb25seS5pc251bGwpCisJCQlpZiAoISpvcC0+bWFrZV9yZWFkb25seS5pc251bGwpCiAJ CQkJKm9wLT5yZXN2YWx1ZSA9Ci0JCQkJCU1ha2VFeHBhbmRlZE9iamVjdFJlYWRPbmx5SW50 ZXJuYWwoKm9wLT5kLm1ha2VfcmVhZG9ubHkudmFsdWUpOwotCQkJKm9wLT5yZXNudWxsID0g Km9wLT5kLm1ha2VfcmVhZG9ubHkuaXNudWxsOworCQkJCQlNYWtlRXhwYW5kZWRPYmplY3RS ZWFkT25seUludGVybmFsKCpvcC0+bWFrZV9yZWFkb25seS52YWx1ZSk7CisJCQkqb3AtPnJl c251bGwgPSAqb3AtPm1ha2VfcmVhZG9ubHkuaXNudWxsOwogCiAJCQlFRU9fTkVYVCgpOwog CQl9CkBAIC0xMzg4LDcgKzEzODgsNyBAQCBFeGVjSW50ZXJwRXhwcihFeHByU3RhdGUgKnN0 YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJCXsKIAkJCQlG dW5jdGlvbkNhbGxJbmZvIGZjaW5mb19vdXQ7CiAKLQkJCQlmY2luZm9fb3V0ID0gb3AtPmQu aW9jb2VyY2UuZmNpbmZvX2RhdGFfb3V0OworCQkJCWZjaW5mb19vdXQgPSBvcC0+aW9jb2Vy Y2UuZmNpbmZvX2RhdGFfb3V0OwogCQkJCWZjaW5mb19vdXQtPmFyZ3NbMF0udmFsdWUgPSAq b3AtPnJlc3ZhbHVlOwogCQkJCWZjaW5mb19vdXQtPmFyZ3NbMF0uaXNudWxsID0gZmFsc2U7 CiAKQEAgLTE0MDAsMTIgKzE0MDAsMTIgQEAgRXhlY0ludGVycEV4cHIoRXhwclN0YXRlICpz dGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251bGwpCiAJCQl9CiAKIAkJ CS8qIGNhbGwgaW5wdXQgZnVuY3Rpb24gKHNpbWlsYXIgdG8gSW5wdXRGdW5jdGlvbkNhbGwp ICovCi0JCQlpZiAoIW9wLT5kLmlvY29lcmNlLmZpbmZvX2luLT5mbl9zdHJpY3QgfHwgc3Ry ICE9IE5VTEwpCisJCQlpZiAoIW9wLT5pb2NvZXJjZS5maW5mb19pbi0+Zm5fc3RyaWN0IHx8 IHN0ciAhPSBOVUxMKQogCQkJewogCQkJCUZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvX2luOwog CQkJCURhdHVtCQlkOwogCi0JCQkJZmNpbmZvX2luID0gb3AtPmQuaW9jb2VyY2UuZmNpbmZv X2RhdGFfaW47CisJCQkJZmNpbmZvX2luID0gb3AtPmlvY29lcmNlLmZjaW5mb19kYXRhX2lu OwogCQkJCWZjaW5mb19pbi0+YXJnc1swXS52YWx1ZSA9IFBvaW50ZXJHZXREYXR1bShzdHIp OwogCQkJCWZjaW5mb19pbi0+YXJnc1swXS5pc251bGwgPSAqb3AtPnJlc251bGw7CiAJCQkJ Lyogc2Vjb25kIGFuZCB0aGlyZCBhcmd1bWVudHMgYXJlIGFscmVhZHkgc2V0IHVwICovCkBA IC0xNDQ3LDcgKzE0NDcsNyBAQCBFeGVjSW50ZXJwRXhwcihFeHByU3RhdGUgKnN0YXRlLCBF eHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJCSAqIHRoYXQgZnVuY3Rp b24gaXMgc3RyaWN0LiAgQmVjYXVzZSB0aGUgaGFuZGxpbmcgb2YgbnVsbHMgaXMKIAkJCSAq IGRpZmZlcmVudCwgd2UgY2FuJ3QganVzdCByZXVzZSBFRU9QX0ZVTkNFWFBSLgogCQkJICov Ci0JCQlGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbyA9IG9wLT5kLmZ1bmMuZmNpbmZvX2RhdGE7 CisJCQlGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbyA9IG9wLT5mdW5jLmZjaW5mb19kYXRhOwog CiAJCQkvKiBjaGVjayBmdW5jdGlvbiBhcmd1bWVudHMgZm9yIE5VTExuZXNzICovCiAJCQlp ZiAoZmNpbmZvLT5hcmdzWzBdLmlzbnVsbCAmJiBmY2luZm8tPmFyZ3NbMV0uaXNudWxsKQpA QCAtMTQ2OCw3ICsxNDY4LDcgQEAgRXhlY0ludGVycEV4cHIoRXhwclN0YXRlICpzdGF0ZSwg RXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251bGwpCiAJCQkJRGF0dW0JCWVxcmVz dWx0OwogCiAJCQkJZmNpbmZvLT5pc251bGwgPSBmYWxzZTsKLQkJCQllcXJlc3VsdCA9IG9w LT5kLmZ1bmMuZm5fYWRkcihmY2luZm8pOworCQkJCWVxcmVzdWx0ID0gb3AtPmZ1bmMuZm5f YWRkcihmY2luZm8pOwogCQkJCS8qIE11c3QgaW52ZXJ0IHJlc3VsdCBvZiAiPSI7IHNhZmUg dG8gZG8gZXZlbiBpZiBudWxsICovCiAJCQkJKm9wLT5yZXN2YWx1ZSA9IEJvb2xHZXREYXR1 bSghRGF0dW1HZXRCb29sKGVxcmVzdWx0KSk7CiAJCQkJKm9wLT5yZXNudWxsID0gZmNpbmZv LT5pc251bGw7CkBAIC0xNDgwLDcgKzE0ODAsNyBAQCBFeGVjSW50ZXJwRXhwcihFeHByU3Rh dGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJLyog c2VlIEVFT1BfRElTVElOQ1QgZm9yIGNvbW1lbnRzLCB0aGlzIGlzIGp1c3QgaW52ZXJ0ZWQg Ki8KIAkJRUVPX0NBU0UoRUVPUF9OT1RfRElTVElOQ1QpCiAJCXsKLQkJCUZ1bmN0aW9uQ2Fs bEluZm8gZmNpbmZvID0gb3AtPmQuZnVuYy5mY2luZm9fZGF0YTsKKwkJCUZ1bmN0aW9uQ2Fs bEluZm8gZmNpbmZvID0gb3AtPmZ1bmMuZmNpbmZvX2RhdGE7CiAKIAkJCWlmIChmY2luZm8t PmFyZ3NbMF0uaXNudWxsICYmIGZjaW5mby0+YXJnc1sxXS5pc251bGwpCiAJCQl7CkBAIC0x NDk3LDcgKzE0OTcsNyBAQCBFeGVjSW50ZXJwRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHBy Q29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJCQlEYXR1bQkJZXFyZXN1bHQ7 CiAKIAkJCQlmY2luZm8tPmlzbnVsbCA9IGZhbHNlOwotCQkJCWVxcmVzdWx0ID0gb3AtPmQu ZnVuYy5mbl9hZGRyKGZjaW5mbyk7CisJCQkJZXFyZXN1bHQgPSBvcC0+ZnVuYy5mbl9hZGRy KGZjaW5mbyk7CiAJCQkJKm9wLT5yZXN2YWx1ZSA9IGVxcmVzdWx0OwogCQkJCSpvcC0+cmVz bnVsbCA9IGZjaW5mby0+aXNudWxsOwogCQkJfQpAQCAtMTUxMCw3ICsxNTEwLDcgQEAgRXhl Y0ludGVycEV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBi b29sICppc251bGwpCiAJCQkvKgogCQkJICogVGhlIGFyZ3VtZW50cyBhcmUgYWxyZWFkeSBl dmFsdWF0ZWQgaW50byBmY2luZm8tPmFyZ3MuCiAJCQkgKi8KLQkJCUZ1bmN0aW9uQ2FsbElu Zm8gZmNpbmZvID0gb3AtPmQuZnVuYy5mY2luZm9fZGF0YTsKKwkJCUZ1bmN0aW9uQ2FsbElu Zm8gZmNpbmZvID0gb3AtPmZ1bmMuZmNpbmZvX2RhdGE7CiAJCQlEYXR1bQkJc2F2ZV9hcmcw ID0gZmNpbmZvLT5hcmdzWzBdLnZhbHVlOwogCiAJCQkvKiBpZiBlaXRoZXIgYXJndW1lbnQg aXMgTlVMTCB0aGV5IGNhbid0IGJlIGVxdWFsICovCkBAIC0xNTI1LDEyICsxNTI1LDEyIEBA IEV4ZWNJbnRlcnBFeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4 dCwgYm9vbCAqaXNudWxsKQogCQkJCSAqIGlmIHdlIGVuZCBieSByZXR1cm5pbmcgdGhlIGZp cnN0IGFyZ3VtZW50LCB0aGF0IHdpbGwgYmUgdGhlCiAJCQkJICogb3JpZ2luYWwgcmVhZC13 cml0ZSBwb2ludGVyIGlmIGl0IHdhcyByZWFkLXdyaXRlLgogCQkJCSAqLwotCQkJCWlmIChv cC0+ZC5mdW5jLm1ha2Vfcm8pCisJCQkJaWYgKG9wLT5mdW5jLm1ha2Vfcm8pCiAJCQkJCWZj aW5mby0+YXJnc1swXS52YWx1ZSA9CiAJCQkJCQlNYWtlRXhwYW5kZWRPYmplY3RSZWFkT25s eUludGVybmFsKHNhdmVfYXJnMCk7CiAKIAkJCQlmY2luZm8tPmlzbnVsbCA9IGZhbHNlOwot CQkJCXJlc3VsdCA9IG9wLT5kLmZ1bmMuZm5fYWRkcihmY2luZm8pOworCQkJCXJlc3VsdCA9 IG9wLT5mdW5jLmZuX2FkZHIoZmNpbmZvKTsKIAogCQkJCS8qIGlmIHRoZSBhcmd1bWVudHMg YXJlIGVxdWFsIHJldHVybiBudWxsICovCiAJCQkJaWYgKCFmY2luZm8tPmlzbnVsbCAmJiBE YXR1bUdldEJvb2wocmVzdWx0KSkKQEAgLTE1ODUsMTIgKzE1ODUsMTIgQEAgRXhlY0ludGVy cEV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICpp c251bGwpCiAJCQkgKiBUaGUgbmV4dCBvcCBhY3R1YWxseSBldmFsdWF0ZXMgdGhlIGV4cHJl c3Npb24uICBJZiB0aGUgT0xEL05FVwogCQkJICogcm93IGRvZXNuJ3QgZXhpc3QsIHNraXAg dGhhdCBhbmQgcmV0dXJuIE5VTEwuCiAJCQkgKi8KLQkJCWlmIChzdGF0ZS0+ZmxhZ3MgJiBv cC0+ZC5yZXR1cm5pbmdleHByLm51bGxmbGFnKQorCQkJaWYgKHN0YXRlLT5mbGFncyAmIG9w LT5yZXR1cm5pbmdleHByLm51bGxmbGFnKQogCQkJewogCQkJCSpvcC0+cmVzdmFsdWUgPSAo RGF0dW0pIDA7CiAJCQkJKm9wLT5yZXNudWxsID0gdHJ1ZTsKIAotCQkJCUVFT19KVU1QKG9w LT5kLnJldHVybmluZ2V4cHIuanVtcGRvbmUpOworCQkJCUVFT19KVU1QKG9wLT5yZXR1cm5p bmdleHByLmp1bXBkb25lKTsKIAkJCX0KIAogCQkJRUVPX05FWFQoKTsKQEAgLTE2MjIsMzQg KzE2MjIsMzQgQEAgRXhlY0ludGVycEV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRl eHQgKmVjb250ZXh0LCBib29sICppc251bGwpCiAKIAkJRUVPX0NBU0UoRUVPUF9ST1dDT01Q QVJFX1NURVApCiAJCXsKLQkJCUZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvID0gb3AtPmQucm93 Y29tcGFyZV9zdGVwLmZjaW5mb19kYXRhOworCQkJRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8g PSBvcC0+cm93Y29tcGFyZV9zdGVwLmZjaW5mb19kYXRhOwogCQkJRGF0dW0JCWQ7CiAKIAkJ CS8qIGZvcmNlIE5VTEwgcmVzdWx0IGlmIHN0cmljdCBmbiBhbmQgTlVMTCBpbnB1dCAqLwot CQkJaWYgKG9wLT5kLnJvd2NvbXBhcmVfc3RlcC5maW5mby0+Zm5fc3RyaWN0ICYmCisJCQlp ZiAob3AtPnJvd2NvbXBhcmVfc3RlcC5maW5mby0+Zm5fc3RyaWN0ICYmCiAJCQkJKGZjaW5m by0+YXJnc1swXS5pc251bGwgfHwgZmNpbmZvLT5hcmdzWzFdLmlzbnVsbCkpCiAJCQl7CiAJ CQkJKm9wLT5yZXNudWxsID0gdHJ1ZTsKLQkJCQlFRU9fSlVNUChvcC0+ZC5yb3djb21wYXJl X3N0ZXAuanVtcG51bGwpOworCQkJCUVFT19KVU1QKG9wLT5yb3djb21wYXJlX3N0ZXAuanVt cG51bGwpOwogCQkJfQogCiAJCQkvKiBBcHBseSBjb21wYXJpc29uIGZ1bmN0aW9uICovCiAJ CQlmY2luZm8tPmlzbnVsbCA9IGZhbHNlOwotCQkJZCA9IG9wLT5kLnJvd2NvbXBhcmVfc3Rl cC5mbl9hZGRyKGZjaW5mbyk7CisJCQlkID0gb3AtPnJvd2NvbXBhcmVfc3RlcC5mbl9hZGRy KGZjaW5mbyk7CiAJCQkqb3AtPnJlc3ZhbHVlID0gZDsKIAogCQkJLyogZm9yY2UgTlVMTCBy ZXN1bHQgaWYgTlVMTCBmdW5jdGlvbiByZXN1bHQgKi8KIAkJCWlmIChmY2luZm8tPmlzbnVs bCkKIAkJCXsKIAkJCQkqb3AtPnJlc251bGwgPSB0cnVlOwotCQkJCUVFT19KVU1QKG9wLT5k LnJvd2NvbXBhcmVfc3RlcC5qdW1wbnVsbCk7CisJCQkJRUVPX0pVTVAob3AtPnJvd2NvbXBh cmVfc3RlcC5qdW1wbnVsbCk7CiAJCQl9CiAJCQkqb3AtPnJlc251bGwgPSBmYWxzZTsKIAog CQkJLyogSWYgdW5lcXVhbCwgbm8gbmVlZCB0byBjb21wYXJlIHJlbWFpbmluZyBjb2x1bW5z ICovCiAJCQlpZiAoRGF0dW1HZXRJbnQzMigqb3AtPnJlc3ZhbHVlKSAhPSAwKQogCQkJewot CQkJCUVFT19KVU1QKG9wLT5kLnJvd2NvbXBhcmVfc3RlcC5qdW1wZG9uZSk7CisJCQkJRUVP X0pVTVAob3AtPnJvd2NvbXBhcmVfc3RlcC5qdW1wZG9uZSk7CiAJCQl9CiAKIAkJCUVFT19O RVhUKCk7CkBAIC0xNjU4LDcgKzE2NTgsNyBAQCBFeGVjSW50ZXJwRXhwcihFeHByU3RhdGUg KnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJRUVPX0NB U0UoRUVPUF9ST1dDT01QQVJFX0ZJTkFMKQogCQl7CiAJCQlpbnQzMgkJY21wcmVzdWx0ID0g RGF0dW1HZXRJbnQzMigqb3AtPnJlc3ZhbHVlKTsKLQkJCUNvbXBhcmVUeXBlIGNtcHR5cGUg PSBvcC0+ZC5yb3djb21wYXJlX2ZpbmFsLmNtcHR5cGU7CisJCQlDb21wYXJlVHlwZSBjbXB0 eXBlID0gb3AtPnJvd2NvbXBhcmVfZmluYWwuY21wdHlwZTsKIAogCQkJKm9wLT5yZXNudWxs ID0gZmFsc2U7CiAJCQlzd2l0Y2ggKGNtcHR5cGUpCkBAIC0xNzE5LDE0ICsxNzE5LDE0IEBA IEV4ZWNJbnRlcnBFeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4 dCwgYm9vbCAqaXNudWxsKQogCQlFRU9fQ0FTRShFRU9QX1NCU1JFRl9TVUJTQ1JJUFRTKQog CQl7CiAJCQkvKiBQcmVjaGVjayBTdWJzY3JpcHRpbmdSZWYgc3Vic2NyaXB0KHMpICovCi0J CQlpZiAob3AtPmQuc2JzcmVmX3N1YnNjcmlwdC5zdWJzY3JpcHRmdW5jKHN0YXRlLCBvcCwg ZWNvbnRleHQpKQorCQkJaWYgKG9wLT5zYnNyZWZfc3Vic2NyaXB0LnN1YnNjcmlwdGZ1bmMo c3RhdGUsIG9wLCBlY29udGV4dCkpCiAJCQl7CiAJCQkJRUVPX05FWFQoKTsKIAkJCX0KIAkJ CWVsc2UKIAkJCXsKIAkJCQkvKiBTdWJzY3JpcHQgaXMgbnVsbCwgc2hvcnQtY2lyY3VpdCBT dWJzY3JpcHRpbmdSZWYgdG8gTlVMTCAqLwotCQkJCUVFT19KVU1QKG9wLT5kLnNic3JlZl9z dWJzY3JpcHQuanVtcGRvbmUpOworCQkJCUVFT19KVU1QKG9wLT5zYnNyZWZfc3Vic2NyaXB0 Lmp1bXBkb25lKTsKIAkJCX0KIAkJfQogCkBAIC0xNzM1LDcgKzE3MzUsNyBAQCBFeGVjSW50 ZXJwRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wg KmlzbnVsbCkKIAkJCUVFT19DQVNFKEVFT1BfU0JTUkVGX0ZFVENIKQogCQl7CiAJCQkvKiBQ ZXJmb3JtIGEgU3Vic2NyaXB0aW5nUmVmIGZldGNoIG9yIGFzc2lnbm1lbnQgKi8KLQkJCW9w LT5kLnNic3JlZi5zdWJzY3JpcHRmdW5jKHN0YXRlLCBvcCwgZWNvbnRleHQpOworCQkJb3At PnNic3JlZi5zdWJzY3JpcHRmdW5jKHN0YXRlLCBvcCwgZWNvbnRleHQpOwogCiAJCQlFRU9f TkVYVCgpOwogCQl9CkBAIC0xNzY2LDggKzE3NjYsOCBAQCBFeGVjSW50ZXJwRXhwcihFeHBy U3RhdGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAog CQlFRU9fQ0FTRShFRU9QX0RPTUFJTl9URVNUVkFMKQogCQl7Ci0JCQkqb3AtPnJlc3ZhbHVl ID0gKm9wLT5kLmNhc2V0ZXN0LnZhbHVlOwotCQkJKm9wLT5yZXNudWxsID0gKm9wLT5kLmNh c2V0ZXN0LmlzbnVsbDsKKwkJCSpvcC0+cmVzdmFsdWUgPSAqb3AtPmNhc2V0ZXN0LnZhbHVl OworCQkJKm9wLT5yZXNudWxsID0gKm9wLT5jYXNldGVzdC5pc251bGw7CiAKIAkJCUVFT19O RVhUKCk7CiAJCX0KQEAgLTE3OTgsNyArMTc5OCw3IEBAIEV4ZWNJbnRlcnBFeHByKEV4cHJT dGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwgYm9vbCAqaXNudWxsKQogCiAJ CUVFT19DQVNFKEVFT1BfSEFTSERBVFVNX1NFVF9JTklUVkFMKQogCQl7Ci0JCQkqb3AtPnJl c3ZhbHVlID0gb3AtPmQuaGFzaGRhdHVtX2luaXR2YWx1ZS5pbml0X3ZhbHVlOworCQkJKm9w LT5yZXN2YWx1ZSA9IG9wLT5oYXNoZGF0dW1faW5pdHZhbHVlLmluaXRfdmFsdWU7CiAJCQkq b3AtPnJlc251bGwgPSBmYWxzZTsKIAogCQkJRUVPX05FWFQoKTsKQEAgLTE4MDYsMTQgKzE4 MDYsMTQgQEAgRXhlY0ludGVycEV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQg KmVjb250ZXh0LCBib29sICppc251bGwpCiAKIAkJRUVPX0NBU0UoRUVPUF9IQVNIREFUVU1f RklSU1QpCiAJCXsKLQkJCUZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvID0gb3AtPmQuaGFzaGRh dHVtLmZjaW5mb19kYXRhOworCQkJRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8gPSBvcC0+aGFz aGRhdHVtLmZjaW5mb19kYXRhOwogCiAJCQkvKgogCQkJICogU2F2ZSB0aGUgRGF0dW0gb24g bm9uLW51bGwgaW5wdXRzLCBvdGhlcndpc2Ugc3RvcmUgMCBzbyB0aGF0CiAJCQkgKiBzdWJz ZXF1ZW50IE5FWFQzMiBvcGVyYXRpb25zIGNvbWJpbmUgd2l0aCBhbiBpbml0aWFsaXplZCB2 YWx1ZS4KIAkJCSAqLwogCQkJaWYgKCFmY2luZm8tPmFyZ3NbMF0uaXNudWxsKQotCQkJCSpv cC0+cmVzdmFsdWUgPSBvcC0+ZC5oYXNoZGF0dW0uZm5fYWRkcihmY2luZm8pOworCQkJCSpv cC0+cmVzdmFsdWUgPSBvcC0+aGFzaGRhdHVtLmZuX2FkZHIoZmNpbmZvKTsKIAkJCWVsc2UK IAkJCQkqb3AtPnJlc3ZhbHVlID0gKERhdHVtKSAwOwogCkBAIC0xODI0LDcgKzE4MjQsNyBA QCBFeGVjSW50ZXJwRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRl eHQsIGJvb2wgKmlzbnVsbCkKIAogCQlFRU9fQ0FTRShFRU9QX0hBU0hEQVRVTV9GSVJTVF9T VFJJQ1QpCiAJCXsKLQkJCUZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvID0gb3AtPmQuaGFzaGRh dHVtLmZjaW5mb19kYXRhOworCQkJRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8gPSBvcC0+aGFz aGRhdHVtLmZjaW5mb19kYXRhOwogCiAJCQlpZiAoZmNpbmZvLT5hcmdzWzBdLmlzbnVsbCkK IAkJCXsKQEAgLTE4MzUsMTEgKzE4MzUsMTEgQEAgRXhlY0ludGVycEV4cHIoRXhwclN0YXRl ICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251bGwpCiAJCQkJICov CiAJCQkJKm9wLT5yZXNudWxsID0gdHJ1ZTsKIAkJCQkqb3AtPnJlc3ZhbHVlID0gKERhdHVt KSAwOwotCQkJCUVFT19KVU1QKG9wLT5kLmhhc2hkYXR1bS5qdW1wZG9uZSk7CisJCQkJRUVP X0pVTVAob3AtPmhhc2hkYXR1bS5qdW1wZG9uZSk7CiAJCQl9CiAKIAkJCS8qIGV4ZWN1dGUg dGhlIGhhc2ggZnVuY3Rpb24gYW5kIHNhdmUgdGhlIHJlc3VsdGluZyB2YWx1ZSAqLwotCQkJ Km9wLT5yZXN2YWx1ZSA9IG9wLT5kLmhhc2hkYXR1bS5mbl9hZGRyKGZjaW5mbyk7CisJCQkq b3AtPnJlc3ZhbHVlID0gb3AtPmhhc2hkYXR1bS5mbl9hZGRyKGZjaW5mbyk7CiAJCQkqb3At PnJlc251bGwgPSBmYWxzZTsKIAogCQkJRUVPX05FWFQoKTsKQEAgLTE4NDcsMTAgKzE4NDcs MTAgQEAgRXhlY0ludGVycEV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVj b250ZXh0LCBib29sICppc251bGwpCiAKIAkJRUVPX0NBU0UoRUVPUF9IQVNIREFUVU1fTkVY VDMyKQogCQl7Ci0JCQlGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbyA9IG9wLT5kLmhhc2hkYXR1 bS5mY2luZm9fZGF0YTsKKwkJCUZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvID0gb3AtPmhhc2hk YXR1bS5mY2luZm9fZGF0YTsKIAkJCXVpbnQzMgkJZXhpc3RpbmdoYXNoOwogCi0JCQlleGlz dGluZ2hhc2ggPSBEYXR1bUdldFVJbnQzMihvcC0+ZC5oYXNoZGF0dW0uaXJlc3VsdC0+dmFs dWUpOworCQkJZXhpc3RpbmdoYXNoID0gRGF0dW1HZXRVSW50MzIob3AtPmhhc2hkYXR1bS5p cmVzdWx0LT52YWx1ZSk7CiAJCQkvKiBjb21iaW5lIHN1Y2Nlc3NpdmUgaGFzaCB2YWx1ZXMg Ynkgcm90YXRpbmcgKi8KIAkJCWV4aXN0aW5naGFzaCA9IHBnX3JvdGF0ZV9sZWZ0MzIoZXhp c3RpbmdoYXNoLCAxKTsKIApAQCAtMTg2MCw3ICsxODYwLDcgQEAgRXhlY0ludGVycEV4cHIo RXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251bGwp CiAJCQkJdWludDMyCQloYXNodmFsdWU7CiAKIAkJCQkvKiBleGVjdXRlIGhhc2ggZnVuYyBh bmQgY29tYmluZSB3aXRoIHByZXZpb3VzIGhhc2ggdmFsdWUgKi8KLQkJCQloYXNodmFsdWUg PSBEYXR1bUdldFVJbnQzMihvcC0+ZC5oYXNoZGF0dW0uZm5fYWRkcihmY2luZm8pKTsKKwkJ CQloYXNodmFsdWUgPSBEYXR1bUdldFVJbnQzMihvcC0+aGFzaGRhdHVtLmZuX2FkZHIoZmNp bmZvKSk7CiAJCQkJZXhpc3RpbmdoYXNoID0gZXhpc3RpbmdoYXNoIF4gaGFzaHZhbHVlOwog CQkJfQogCkBAIC0xODcyLDcgKzE4NzIsNyBAQCBFeGVjSW50ZXJwRXhwcihFeHByU3RhdGUg KnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAogCQlFRU9f Q0FTRShFRU9QX0hBU0hEQVRVTV9ORVhUMzJfU1RSSUNUKQogCQl7Ci0JCQlGdW5jdGlvbkNh bGxJbmZvIGZjaW5mbyA9IG9wLT5kLmhhc2hkYXR1bS5mY2luZm9fZGF0YTsKKwkJCUZ1bmN0 aW9uQ2FsbEluZm8gZmNpbmZvID0gb3AtPmhhc2hkYXR1bS5mY2luZm9fZGF0YTsKIAogCQkJ aWYgKGZjaW5mby0+YXJnc1swXS5pc251bGwpCiAJCQl7CkBAIC0xODgzLDE5ICsxODgzLDE5 IEBAIEV4ZWNJbnRlcnBFeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29u dGV4dCwgYm9vbCAqaXNudWxsKQogCQkJCSAqLwogCQkJCSpvcC0+cmVzbnVsbCA9IHRydWU7 CiAJCQkJKm9wLT5yZXN2YWx1ZSA9IChEYXR1bSkgMDsKLQkJCQlFRU9fSlVNUChvcC0+ZC5o YXNoZGF0dW0uanVtcGRvbmUpOworCQkJCUVFT19KVU1QKG9wLT5oYXNoZGF0dW0uanVtcGRv bmUpOwogCQkJfQogCQkJZWxzZQogCQkJewogCQkJCXVpbnQzMgkJZXhpc3RpbmdoYXNoOwog CQkJCXVpbnQzMgkJaGFzaHZhbHVlOwogCi0JCQkJZXhpc3RpbmdoYXNoID0gRGF0dW1HZXRV SW50MzIob3AtPmQuaGFzaGRhdHVtLmlyZXN1bHQtPnZhbHVlKTsKKwkJCQlleGlzdGluZ2hh c2ggPSBEYXR1bUdldFVJbnQzMihvcC0+aGFzaGRhdHVtLmlyZXN1bHQtPnZhbHVlKTsKIAkJ CQkvKiBjb21iaW5lIHN1Y2Nlc3NpdmUgaGFzaCB2YWx1ZXMgYnkgcm90YXRpbmcgKi8KIAkJ CQlleGlzdGluZ2hhc2ggPSBwZ19yb3RhdGVfbGVmdDMyKGV4aXN0aW5naGFzaCwgMSk7CiAK IAkJCQkvKiBleGVjdXRlIGhhc2ggZnVuYyBhbmQgY29tYmluZSB3aXRoIHByZXZpb3VzIGhh c2ggdmFsdWUgKi8KLQkJCQloYXNodmFsdWUgPSBEYXR1bUdldFVJbnQzMihvcC0+ZC5oYXNo ZGF0dW0uZm5fYWRkcihmY2luZm8pKTsKKwkJCQloYXNodmFsdWUgPSBEYXR1bUdldFVJbnQz MihvcC0+aGFzaGRhdHVtLmZuX2FkZHIoZmNpbmZvKSk7CiAJCQkJKm9wLT5yZXN2YWx1ZSA9 IFVJbnQzMkdldERhdHVtKGV4aXN0aW5naGFzaCBeIGhhc2h2YWx1ZSk7CiAJCQkJKm9wLT5y ZXNudWxsID0gZmFsc2U7CiAJCQl9CkBAIC0xOTU0LDcgKzE5NTQsNyBAQCBFeGVjSW50ZXJw RXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlz bnVsbCkKIAkJCSAqIFJldHVybnMgYSBEYXR1bSB3aG9zZSB2YWx1ZSBpcyB0aGUgcHJlY29t cHV0ZWQgYWdncmVnYXRlIHZhbHVlCiAJCQkgKiBmb3VuZCBpbiB0aGUgZ2l2ZW4gZXhwcmVz c2lvbiBjb250ZXh0LgogCQkJICovCi0JCQlpbnQJCQlhZ2dubyA9IG9wLT5kLmFnZ3JlZi5h Z2dubzsKKwkJCWludAkJCWFnZ25vID0gb3AtPmFnZ3JlZi5hZ2dubzsKIAogCQkJQXNzZXJ0 KGVjb250ZXh0LT5lY3h0X2FnZ3ZhbHVlcyAhPSBOVUxMKTsKIApAQCAtMTk3Nyw3ICsxOTc3 LDcgQEAgRXhlY0ludGVycEV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVj b250ZXh0LCBib29sICppc251bGwpCiAJCQkvKgogCQkJICogTGlrZSBBZ2dyZWYsIGp1c3Qg cmV0dXJuIGEgcHJlY29tcHV0ZWQgdmFsdWUgZnJvbSB0aGUgZWNvbnRleHQuCiAJCQkgKi8K LQkJCVdpbmRvd0Z1bmNFeHByU3RhdGUgKndmdW5jID0gb3AtPmQud2luZG93X2Z1bmMud2Zz dGF0ZTsKKwkJCVdpbmRvd0Z1bmNFeHByU3RhdGUgKndmdW5jID0gb3AtPndpbmRvd19mdW5j Lndmc3RhdGU7CiAKIAkJCUFzc2VydChlY29udGV4dC0+ZWN4dF9hZ2d2YWx1ZXMgIT0gTlVM TCk7CiAKQEAgLTIwMDcsOCArMjAwNyw4IEBAIEV4ZWNJbnRlcnBFeHByKEV4cHJTdGF0ZSAq c3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwgYm9vbCAqaXNudWxsKQogCQlFRU9fQ0FT RShFRU9QX0FHR19TVFJJQ1RfREVTRVJJQUxJWkUpCiAJCXsKIAkJCS8qIERvbid0IGNhbGwg YSBzdHJpY3QgZGVzZXJpYWxpemF0aW9uIGZ1bmN0aW9uIHdpdGggTlVMTCBpbnB1dCAqLwot CQkJaWYgKG9wLT5kLmFnZ19kZXNlcmlhbGl6ZS5mY2luZm9fZGF0YS0+YXJnc1swXS5pc251 bGwpCi0JCQkJRUVPX0pVTVAob3AtPmQuYWdnX2Rlc2VyaWFsaXplLmp1bXBudWxsKTsKKwkJ CWlmIChvcC0+YWdnX2Rlc2VyaWFsaXplLmZjaW5mb19kYXRhLT5hcmdzWzBdLmlzbnVsbCkK KwkJCQlFRU9fSlVNUChvcC0+YWdnX2Rlc2VyaWFsaXplLmp1bXBudWxsKTsKIAogCQkJLyog ZmFsbHRocm91Z2ggKi8KIAkJfQpAQCAtMjAxNiw3ICsyMDE2LDcgQEAgRXhlY0ludGVycEV4 cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251 bGwpCiAJCS8qIGV2YWx1YXRlIGFnZ3JlZ2F0ZSBkZXNlcmlhbGl6YXRpb24gZnVuY3Rpb24g KG5vbi1zdHJpY3QgcG9ydGlvbikgKi8KIAkJRUVPX0NBU0UoRUVPUF9BR0dfREVTRVJJQUxJ WkUpCiAJCXsKLQkJCUZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvID0gb3AtPmQuYWdnX2Rlc2Vy aWFsaXplLmZjaW5mb19kYXRhOworCQkJRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8gPSBvcC0+ YWdnX2Rlc2VyaWFsaXplLmZjaW5mb19kYXRhOwogCQkJQWdnU3RhdGUgICAqYWdnc3RhdGUg PSBjYXN0Tm9kZShBZ2dTdGF0ZSwgc3RhdGUtPnBhcmVudCk7CiAJCQlNZW1vcnlDb250ZXh0 IG9sZENvbnRleHQ7CiAKQEAgLTIwNDEsMTUgKzIwNDEsMTUgQEAgRXhlY0ludGVycEV4cHIo RXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251bGwp CiAJCS8qIHdoZW4gY2hlY2tpbmcgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCAqLwogCQlFRU9f Q0FTRShFRU9QX0FHR19TVFJJQ1RfSU5QVVRfQ0hFQ0tfQVJHUykKIAkJewotCQkJTnVsbGFi bGVEYXR1bSAqYXJncyA9IG9wLT5kLmFnZ19zdHJpY3RfaW5wdXRfY2hlY2suYXJnczsKLQkJ CWludAkJCW5hcmdzID0gb3AtPmQuYWdnX3N0cmljdF9pbnB1dF9jaGVjay5uYXJnczsKKwkJ CU51bGxhYmxlRGF0dW0gKmFyZ3MgPSBvcC0+YWdnX3N0cmljdF9pbnB1dF9jaGVjay5hcmdz OworCQkJaW50CQkJbmFyZ3MgPSBvcC0+YWdnX3N0cmljdF9pbnB1dF9jaGVjay5uYXJnczsK IAogCQkJQXNzZXJ0KG5hcmdzID4gMSk7CiAKIAkJCWZvciAoaW50IGFyZ25vID0gMDsgYXJn bm8gPCBuYXJnczsgYXJnbm8rKykKIAkJCXsKIAkJCQlpZiAoYXJnc1thcmdub10uaXNudWxs KQotCQkJCQlFRU9fSlVNUChvcC0+ZC5hZ2dfc3RyaWN0X2lucHV0X2NoZWNrLmp1bXBudWxs KTsKKwkJCQkJRUVPX0pVTVAob3AtPmFnZ19zdHJpY3RfaW5wdXRfY2hlY2suanVtcG51bGwp OwogCQkJfQogCQkJRUVPX05FWFQoKTsKIAkJfQpAQCAtMjA1NywyNSArMjA1NywyNSBAQCBF eGVjSW50ZXJwRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQs IGJvb2wgKmlzbnVsbCkKIAkJLyogc3BlY2lhbCBjYXNlIGZvciBqdXN0IG9uZSBhcmd1bWVu dCAqLwogCQlFRU9fQ0FTRShFRU9QX0FHR19TVFJJQ1RfSU5QVVRfQ0hFQ0tfQVJHU18xKQog CQl7Ci0JCQlOdWxsYWJsZURhdHVtICphcmdzID0gb3AtPmQuYWdnX3N0cmljdF9pbnB1dF9j aGVjay5hcmdzOwotCQkJUEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZIGludCBuYXJncyA9IG9w LT5kLmFnZ19zdHJpY3RfaW5wdXRfY2hlY2submFyZ3M7CisJCQlOdWxsYWJsZURhdHVtICph cmdzID0gb3AtPmFnZ19zdHJpY3RfaW5wdXRfY2hlY2suYXJnczsKKwkJCVBHX1VTRURfRk9S X0FTU0VSVFNfT05MWSBpbnQgbmFyZ3MgPSBvcC0+YWdnX3N0cmljdF9pbnB1dF9jaGVjay5u YXJnczsKIAogCQkJQXNzZXJ0KG5hcmdzID09IDEpOwogCiAJCQlpZiAoYXJnc1swXS5pc251 bGwpCi0JCQkJRUVPX0pVTVAob3AtPmQuYWdnX3N0cmljdF9pbnB1dF9jaGVjay5qdW1wbnVs bCk7CisJCQkJRUVPX0pVTVAob3AtPmFnZ19zdHJpY3RfaW5wdXRfY2hlY2suanVtcG51bGwp OwogCQkJRUVPX05FWFQoKTsKIAkJfQogCiAJCUVFT19DQVNFKEVFT1BfQUdHX1NUUklDVF9J TlBVVF9DSEVDS19OVUxMUykKIAkJewotCQkJYm9vbAkgICAqbnVsbHMgPSBvcC0+ZC5hZ2df c3RyaWN0X2lucHV0X2NoZWNrLm51bGxzOwotCQkJaW50CQkJbmFyZ3MgPSBvcC0+ZC5hZ2df c3RyaWN0X2lucHV0X2NoZWNrLm5hcmdzOworCQkJYm9vbAkgICAqbnVsbHMgPSBvcC0+YWdn X3N0cmljdF9pbnB1dF9jaGVjay5udWxsczsKKwkJCWludAkJCW5hcmdzID0gb3AtPmFnZ19z dHJpY3RfaW5wdXRfY2hlY2submFyZ3M7CiAKIAkJCWZvciAoaW50IGFyZ25vID0gMDsgYXJn bm8gPCBuYXJnczsgYXJnbm8rKykKIAkJCXsKIAkJCQlpZiAobnVsbHNbYXJnbm9dKQotCQkJ CQlFRU9fSlVNUChvcC0+ZC5hZ2dfc3RyaWN0X2lucHV0X2NoZWNrLmp1bXBudWxsKTsKKwkJ CQkJRUVPX0pVTVAob3AtPmFnZ19zdHJpY3RfaW5wdXRfY2hlY2suanVtcG51bGwpOwogCQkJ fQogCQkJRUVPX05FWFQoKTsKIAkJfQpAQCAtMjA4OCwxMCArMjA4OCwxMCBAQCBFeGVjSW50 ZXJwRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wg KmlzbnVsbCkKIAkJewogCQkJQWdnU3RhdGUgICAqYWdnc3RhdGUgPSBjYXN0Tm9kZShBZ2dT dGF0ZSwgc3RhdGUtPnBhcmVudCk7CiAJCQlBZ2dTdGF0ZVBlckdyb3VwIHBlcmdyb3VwX2Fs bGFnZ3MgPQotCQkJCWFnZ3N0YXRlLT5hbGxfcGVyZ3JvdXBzW29wLT5kLmFnZ19wbGFpbl9w ZXJncm91cF9udWxsY2hlY2suc2V0b2ZmXTsKKwkJCQlhZ2dzdGF0ZS0+YWxsX3Blcmdyb3Vw c1tvcC0+YWdnX3BsYWluX3Blcmdyb3VwX251bGxjaGVjay5zZXRvZmZdOwogCiAJCQlpZiAo cGVyZ3JvdXBfYWxsYWdncyA9PSBOVUxMKQotCQkJCUVFT19KVU1QKG9wLT5kLmFnZ19wbGFp bl9wZXJncm91cF9udWxsY2hlY2suanVtcG51bGwpOworCQkJCUVFT19KVU1QKG9wLT5hZ2df cGxhaW5fcGVyZ3JvdXBfbnVsbGNoZWNrLmp1bXBudWxsKTsKIAogCQkJRUVPX05FWFQoKTsK IAkJfQpAQCAtMjExMSw5ICsyMTExLDkgQEAgRXhlY0ludGVycEV4cHIoRXhwclN0YXRlICpz dGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251bGwpCiAJCUVFT19DQVNF KEVFT1BfQUdHX1BMQUlOX1RSQU5TX0lOSVRfU1RSSUNUX0JZVkFMKQogCQl7CiAJCQlBZ2dT dGF0ZSAgICphZ2dzdGF0ZSA9IGNhc3ROb2RlKEFnZ1N0YXRlLCBzdGF0ZS0+cGFyZW50KTsK LQkJCUFnZ1N0YXRlUGVyVHJhbnMgcGVydHJhbnMgPSBvcC0+ZC5hZ2dfdHJhbnMucGVydHJh bnM7CisJCQlBZ2dTdGF0ZVBlclRyYW5zIHBlcnRyYW5zID0gb3AtPmFnZ190cmFucy5wZXJ0 cmFuczsKIAkJCUFnZ1N0YXRlUGVyR3JvdXAgcGVyZ3JvdXAgPQotCQkJCSZhZ2dzdGF0ZS0+ YWxsX3Blcmdyb3Vwc1tvcC0+ZC5hZ2dfdHJhbnMuc2V0b2ZmXVtvcC0+ZC5hZ2dfdHJhbnMu dHJhbnNub107CisJCQkJJmFnZ3N0YXRlLT5hbGxfcGVyZ3JvdXBzW29wLT5hZ2dfdHJhbnMu c2V0b2ZmXVtvcC0+YWdnX3RyYW5zLnRyYW5zbm9dOwogCiAJCQlBc3NlcnQocGVydHJhbnMt PnRyYW5zdHlwZUJ5VmFsKTsKIApAQCAtMjEyMSwxNSArMjEyMSwxNSBAQCBFeGVjSW50ZXJw RXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlz bnVsbCkKIAkJCXsKIAkJCQkvKiBJZiB0cmFuc1ZhbHVlIGhhcyBub3QgeWV0IGJlZW4gaW5p dGlhbGl6ZWQsIGRvIHNvIG5vdy4gKi8KIAkJCQlFeGVjQWdnSW5pdEdyb3VwKGFnZ3N0YXRl LCBwZXJ0cmFucywgcGVyZ3JvdXAsCi0JCQkJCQkJCSBvcC0+ZC5hZ2dfdHJhbnMuYWdnY29u dGV4dCk7CisJCQkJCQkJCSBvcC0+YWdnX3RyYW5zLmFnZ2NvbnRleHQpOwogCQkJCS8qIGNv cGllZCB0cmFucyB2YWx1ZSBmcm9tIGlucHV0LCBkb25lIHRoaXMgcm91bmQgKi8KIAkJCX0K IAkJCWVsc2UgaWYgKGxpa2VseSghcGVyZ3JvdXAtPnRyYW5zVmFsdWVJc051bGwpKQogCQkJ ewogCQkJCS8qIGludm9rZSB0cmFuc2l0aW9uIGZ1bmN0aW9uLCB1bmxlc3MgcHJldmVudGVk IGJ5IHN0cmljdG5lc3MgKi8KIAkJCQlFeGVjQWdnUGxhaW5UcmFuc0J5VmFsKGFnZ3N0YXRl LCBwZXJ0cmFucywgcGVyZ3JvdXAsCi0JCQkJCQkJCQkgICBvcC0+ZC5hZ2dfdHJhbnMuYWdn Y29udGV4dCwKLQkJCQkJCQkJCSAgIG9wLT5kLmFnZ190cmFucy5zZXRubyk7CisJCQkJCQkJ CQkgICBvcC0+YWdnX3RyYW5zLmFnZ2NvbnRleHQsCisJCQkJCQkJCQkgICBvcC0+YWdnX3Ry YW5zLnNldG5vKTsKIAkJCX0KIAogCQkJRUVPX05FWFQoKTsKQEAgLTIxMzksMTYgKzIxMzks MTYgQEAgRXhlY0ludGVycEV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVj b250ZXh0LCBib29sICppc251bGwpCiAJCUVFT19DQVNFKEVFT1BfQUdHX1BMQUlOX1RSQU5T X1NUUklDVF9CWVZBTCkKIAkJewogCQkJQWdnU3RhdGUgICAqYWdnc3RhdGUgPSBjYXN0Tm9k ZShBZ2dTdGF0ZSwgc3RhdGUtPnBhcmVudCk7Ci0JCQlBZ2dTdGF0ZVBlclRyYW5zIHBlcnRy YW5zID0gb3AtPmQuYWdnX3RyYW5zLnBlcnRyYW5zOworCQkJQWdnU3RhdGVQZXJUcmFucyBw ZXJ0cmFucyA9IG9wLT5hZ2dfdHJhbnMucGVydHJhbnM7CiAJCQlBZ2dTdGF0ZVBlckdyb3Vw IHBlcmdyb3VwID0KLQkJCQkmYWdnc3RhdGUtPmFsbF9wZXJncm91cHNbb3AtPmQuYWdnX3Ry YW5zLnNldG9mZl1bb3AtPmQuYWdnX3RyYW5zLnRyYW5zbm9dOworCQkJCSZhZ2dzdGF0ZS0+ YWxsX3Blcmdyb3Vwc1tvcC0+YWdnX3RyYW5zLnNldG9mZl1bb3AtPmFnZ190cmFucy50cmFu c25vXTsKIAogCQkJQXNzZXJ0KHBlcnRyYW5zLT50cmFuc3R5cGVCeVZhbCk7CiAKIAkJCWlm IChsaWtlbHkoIXBlcmdyb3VwLT50cmFuc1ZhbHVlSXNOdWxsKSkKIAkJCQlFeGVjQWdnUGxh aW5UcmFuc0J5VmFsKGFnZ3N0YXRlLCBwZXJ0cmFucywgcGVyZ3JvdXAsCi0JCQkJCQkJCQkg ICBvcC0+ZC5hZ2dfdHJhbnMuYWdnY29udGV4dCwKLQkJCQkJCQkJCSAgIG9wLT5kLmFnZ190 cmFucy5zZXRubyk7CisJCQkJCQkJCQkgICBvcC0+YWdnX3RyYW5zLmFnZ2NvbnRleHQsCisJ CQkJCQkJCQkgICBvcC0+YWdnX3RyYW5zLnNldG5vKTsKIAogCQkJRUVPX05FWFQoKTsKIAkJ fQpAQCAtMjE1NywxNSArMjE1NywxNSBAQCBFeGVjSW50ZXJwRXhwcihFeHByU3RhdGUgKnN0 YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJRUVPX0NBU0Uo RUVPUF9BR0dfUExBSU5fVFJBTlNfQllWQUwpCiAJCXsKIAkJCUFnZ1N0YXRlICAgKmFnZ3N0 YXRlID0gY2FzdE5vZGUoQWdnU3RhdGUsIHN0YXRlLT5wYXJlbnQpOwotCQkJQWdnU3RhdGVQ ZXJUcmFucyBwZXJ0cmFucyA9IG9wLT5kLmFnZ190cmFucy5wZXJ0cmFuczsKKwkJCUFnZ1N0 YXRlUGVyVHJhbnMgcGVydHJhbnMgPSBvcC0+YWdnX3RyYW5zLnBlcnRyYW5zOwogCQkJQWdn U3RhdGVQZXJHcm91cCBwZXJncm91cCA9Ci0JCQkJJmFnZ3N0YXRlLT5hbGxfcGVyZ3JvdXBz W29wLT5kLmFnZ190cmFucy5zZXRvZmZdW29wLT5kLmFnZ190cmFucy50cmFuc25vXTsKKwkJ CQkmYWdnc3RhdGUtPmFsbF9wZXJncm91cHNbb3AtPmFnZ190cmFucy5zZXRvZmZdW29wLT5h Z2dfdHJhbnMudHJhbnNub107CiAKIAkJCUFzc2VydChwZXJ0cmFucy0+dHJhbnN0eXBlQnlW YWwpOwogCiAJCQlFeGVjQWdnUGxhaW5UcmFuc0J5VmFsKGFnZ3N0YXRlLCBwZXJ0cmFucywg cGVyZ3JvdXAsCi0JCQkJCQkJCSAgIG9wLT5kLmFnZ190cmFucy5hZ2djb250ZXh0LAotCQkJ CQkJCQkgICBvcC0+ZC5hZ2dfdHJhbnMuc2V0bm8pOworCQkJCQkJCQkgICBvcC0+YWdnX3Ry YW5zLmFnZ2NvbnRleHQsCisJCQkJCQkJCSAgIG9wLT5hZ2dfdHJhbnMuc2V0bm8pOwogCiAJ CQlFRU9fTkVYVCgpOwogCQl9CkBAIC0yMTc0LDE5ICsyMTc0LDE5IEBAIEV4ZWNJbnRlcnBF eHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwgYm9vbCAqaXNu dWxsKQogCQlFRU9fQ0FTRShFRU9QX0FHR19QTEFJTl9UUkFOU19JTklUX1NUUklDVF9CWVJF RikKIAkJewogCQkJQWdnU3RhdGUgICAqYWdnc3RhdGUgPSBjYXN0Tm9kZShBZ2dTdGF0ZSwg c3RhdGUtPnBhcmVudCk7Ci0JCQlBZ2dTdGF0ZVBlclRyYW5zIHBlcnRyYW5zID0gb3AtPmQu YWdnX3RyYW5zLnBlcnRyYW5zOworCQkJQWdnU3RhdGVQZXJUcmFucyBwZXJ0cmFucyA9IG9w LT5hZ2dfdHJhbnMucGVydHJhbnM7CiAJCQlBZ2dTdGF0ZVBlckdyb3VwIHBlcmdyb3VwID0K LQkJCQkmYWdnc3RhdGUtPmFsbF9wZXJncm91cHNbb3AtPmQuYWdnX3RyYW5zLnNldG9mZl1b b3AtPmQuYWdnX3RyYW5zLnRyYW5zbm9dOworCQkJCSZhZ2dzdGF0ZS0+YWxsX3Blcmdyb3Vw c1tvcC0+YWdnX3RyYW5zLnNldG9mZl1bb3AtPmFnZ190cmFucy50cmFuc25vXTsKIAogCQkJ QXNzZXJ0KCFwZXJ0cmFucy0+dHJhbnN0eXBlQnlWYWwpOwogCiAJCQlpZiAocGVyZ3JvdXAt Pm5vVHJhbnNWYWx1ZSkKIAkJCQlFeGVjQWdnSW5pdEdyb3VwKGFnZ3N0YXRlLCBwZXJ0cmFu cywgcGVyZ3JvdXAsCi0JCQkJCQkJCSBvcC0+ZC5hZ2dfdHJhbnMuYWdnY29udGV4dCk7CisJ CQkJCQkJCSBvcC0+YWdnX3RyYW5zLmFnZ2NvbnRleHQpOwogCQkJZWxzZSBpZiAobGlrZWx5 KCFwZXJncm91cC0+dHJhbnNWYWx1ZUlzTnVsbCkpCiAJCQkJRXhlY0FnZ1BsYWluVHJhbnNC eVJlZihhZ2dzdGF0ZSwgcGVydHJhbnMsIHBlcmdyb3VwLAotCQkJCQkJCQkJICAgb3AtPmQu YWdnX3RyYW5zLmFnZ2NvbnRleHQsCi0JCQkJCQkJCQkgICBvcC0+ZC5hZ2dfdHJhbnMuc2V0 bm8pOworCQkJCQkJCQkJICAgb3AtPmFnZ190cmFucy5hZ2djb250ZXh0LAorCQkJCQkJCQkJ ICAgb3AtPmFnZ190cmFucy5zZXRubyk7CiAKIAkJCUVFT19ORVhUKCk7CiAJCX0KQEAgLTIx OTUsMTYgKzIxOTUsMTYgQEAgRXhlY0ludGVycEV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhw ckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251bGwpCiAJCUVFT19DQVNFKEVFT1BfQUdH X1BMQUlOX1RSQU5TX1NUUklDVF9CWVJFRikKIAkJewogCQkJQWdnU3RhdGUgICAqYWdnc3Rh dGUgPSBjYXN0Tm9kZShBZ2dTdGF0ZSwgc3RhdGUtPnBhcmVudCk7Ci0JCQlBZ2dTdGF0ZVBl clRyYW5zIHBlcnRyYW5zID0gb3AtPmQuYWdnX3RyYW5zLnBlcnRyYW5zOworCQkJQWdnU3Rh dGVQZXJUcmFucyBwZXJ0cmFucyA9IG9wLT5hZ2dfdHJhbnMucGVydHJhbnM7CiAJCQlBZ2dT dGF0ZVBlckdyb3VwIHBlcmdyb3VwID0KLQkJCQkmYWdnc3RhdGUtPmFsbF9wZXJncm91cHNb b3AtPmQuYWdnX3RyYW5zLnNldG9mZl1bb3AtPmQuYWdnX3RyYW5zLnRyYW5zbm9dOworCQkJ CSZhZ2dzdGF0ZS0+YWxsX3Blcmdyb3Vwc1tvcC0+YWdnX3RyYW5zLnNldG9mZl1bb3AtPmFn Z190cmFucy50cmFuc25vXTsKIAogCQkJQXNzZXJ0KCFwZXJ0cmFucy0+dHJhbnN0eXBlQnlW YWwpOwogCiAJCQlpZiAobGlrZWx5KCFwZXJncm91cC0+dHJhbnNWYWx1ZUlzTnVsbCkpCiAJ CQkJRXhlY0FnZ1BsYWluVHJhbnNCeVJlZihhZ2dzdGF0ZSwgcGVydHJhbnMsIHBlcmdyb3Vw LAotCQkJCQkJCQkJICAgb3AtPmQuYWdnX3RyYW5zLmFnZ2NvbnRleHQsCi0JCQkJCQkJCQkg ICBvcC0+ZC5hZ2dfdHJhbnMuc2V0bm8pOworCQkJCQkJCQkJICAgb3AtPmFnZ190cmFucy5h Z2djb250ZXh0LAorCQkJCQkJCQkJICAgb3AtPmFnZ190cmFucy5zZXRubyk7CiAJCQlFRU9f TkVYVCgpOwogCQl9CiAKQEAgLTIyMTIsMzkgKzIyMTIsMzkgQEAgRXhlY0ludGVycEV4cHIo RXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251bGwp CiAJCUVFT19DQVNFKEVFT1BfQUdHX1BMQUlOX1RSQU5TX0JZUkVGKQogCQl7CiAJCQlBZ2dT dGF0ZSAgICphZ2dzdGF0ZSA9IGNhc3ROb2RlKEFnZ1N0YXRlLCBzdGF0ZS0+cGFyZW50KTsK LQkJCUFnZ1N0YXRlUGVyVHJhbnMgcGVydHJhbnMgPSBvcC0+ZC5hZ2dfdHJhbnMucGVydHJh bnM7CisJCQlBZ2dTdGF0ZVBlclRyYW5zIHBlcnRyYW5zID0gb3AtPmFnZ190cmFucy5wZXJ0 cmFuczsKIAkJCUFnZ1N0YXRlUGVyR3JvdXAgcGVyZ3JvdXAgPQotCQkJCSZhZ2dzdGF0ZS0+ YWxsX3Blcmdyb3Vwc1tvcC0+ZC5hZ2dfdHJhbnMuc2V0b2ZmXVtvcC0+ZC5hZ2dfdHJhbnMu dHJhbnNub107CisJCQkJJmFnZ3N0YXRlLT5hbGxfcGVyZ3JvdXBzW29wLT5hZ2dfdHJhbnMu c2V0b2ZmXVtvcC0+YWdnX3RyYW5zLnRyYW5zbm9dOwogCiAJCQlBc3NlcnQoIXBlcnRyYW5z LT50cmFuc3R5cGVCeVZhbCk7CiAKIAkJCUV4ZWNBZ2dQbGFpblRyYW5zQnlSZWYoYWdnc3Rh dGUsIHBlcnRyYW5zLCBwZXJncm91cCwKLQkJCQkJCQkJICAgb3AtPmQuYWdnX3RyYW5zLmFn Z2NvbnRleHQsCi0JCQkJCQkJCSAgIG9wLT5kLmFnZ190cmFucy5zZXRubyk7CisJCQkJCQkJ CSAgIG9wLT5hZ2dfdHJhbnMuYWdnY29udGV4dCwKKwkJCQkJCQkJICAgb3AtPmFnZ190cmFu cy5zZXRubyk7CiAKIAkJCUVFT19ORVhUKCk7CiAJCX0KIAogCQlFRU9fQ0FTRShFRU9QX0FH R19QUkVTT1JURURfRElTVElOQ1RfU0lOR0xFKQogCQl7Ci0JCQlBZ2dTdGF0ZVBlclRyYW5z IHBlcnRyYW5zID0gb3AtPmQuYWdnX3ByZXNvcnRlZF9kaXN0aW5jdGNoZWNrLnBlcnRyYW5z OworCQkJQWdnU3RhdGVQZXJUcmFucyBwZXJ0cmFucyA9IG9wLT5hZ2dfcHJlc29ydGVkX2Rp c3RpbmN0Y2hlY2sucGVydHJhbnM7CiAJCQlBZ2dTdGF0ZSAgICphZ2dzdGF0ZSA9IGNhc3RO b2RlKEFnZ1N0YXRlLCBzdGF0ZS0+cGFyZW50KTsKIAogCQkJaWYgKEV4ZWNFdmFsUHJlT3Jk ZXJlZERpc3RpbmN0U2luZ2xlKGFnZ3N0YXRlLCBwZXJ0cmFucykpCiAJCQkJRUVPX05FWFQo KTsKIAkJCWVsc2UKLQkJCQlFRU9fSlVNUChvcC0+ZC5hZ2dfcHJlc29ydGVkX2Rpc3RpbmN0 Y2hlY2suanVtcGRpc3RpbmN0KTsKKwkJCQlFRU9fSlVNUChvcC0+YWdnX3ByZXNvcnRlZF9k aXN0aW5jdGNoZWNrLmp1bXBkaXN0aW5jdCk7CiAJCX0KIAogCQlFRU9fQ0FTRShFRU9QX0FH R19QUkVTT1JURURfRElTVElOQ1RfTVVMVEkpCiAJCXsKIAkJCUFnZ1N0YXRlICAgKmFnZ3N0 YXRlID0gY2FzdE5vZGUoQWdnU3RhdGUsIHN0YXRlLT5wYXJlbnQpOwotCQkJQWdnU3RhdGVQ ZXJUcmFucyBwZXJ0cmFucyA9IG9wLT5kLmFnZ19wcmVzb3J0ZWRfZGlzdGluY3RjaGVjay5w ZXJ0cmFuczsKKwkJCUFnZ1N0YXRlUGVyVHJhbnMgcGVydHJhbnMgPSBvcC0+YWdnX3ByZXNv cnRlZF9kaXN0aW5jdGNoZWNrLnBlcnRyYW5zOwogCiAJCQlpZiAoRXhlY0V2YWxQcmVPcmRl cmVkRGlzdGluY3RNdWx0aShhZ2dzdGF0ZSwgcGVydHJhbnMpKQogCQkJCUVFT19ORVhUKCk7 CiAJCQllbHNlCi0JCQkJRUVPX0pVTVAob3AtPmQuYWdnX3ByZXNvcnRlZF9kaXN0aW5jdGNo ZWNrLmp1bXBkaXN0aW5jdCk7CisJCQkJRUVPX0pVTVAob3AtPmFnZ19wcmVzb3J0ZWRfZGlz dGluY3RjaGVjay5qdW1wZGlzdGluY3QpOwogCQl9CiAKIAkJLyogcHJvY2VzcyBzaW5nbGUt Y29sdW1uIG9yZGVyZWQgYWdncmVnYXRlIGRhdHVtICovCkBAIC0yMzI2LDQxICsyMzI2LDQx IEBAIENoZWNrRXhwclN0aWxsVmFsaWQoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQg KmVjb250ZXh0KQogCQl7CiAJCQljYXNlIEVFT1BfSU5ORVJfVkFSOgogCQkJCXsKLQkJCQkJ aW50CQkJYXR0bnVtID0gb3AtPmQudmFyLmF0dG51bTsKKwkJCQkJaW50CQkJYXR0bnVtID0g b3AtPnZhci5hdHRudW07CiAKLQkJCQkJQ2hlY2tWYXJTbG90Q29tcGF0aWJpbGl0eShpbm5l cnNsb3QsIGF0dG51bSArIDEsIG9wLT5kLnZhci52YXJ0eXBlKTsKKwkJCQkJQ2hlY2tWYXJT bG90Q29tcGF0aWJpbGl0eShpbm5lcnNsb3QsIGF0dG51bSArIDEsIG9wLT52YXIudmFydHlw ZSk7CiAJCQkJCWJyZWFrOwogCQkJCX0KIAogCQkJY2FzZSBFRU9QX09VVEVSX1ZBUjoKIAkJ CQl7Ci0JCQkJCWludAkJCWF0dG51bSA9IG9wLT5kLnZhci5hdHRudW07CisJCQkJCWludAkJ CWF0dG51bSA9IG9wLT52YXIuYXR0bnVtOwogCi0JCQkJCUNoZWNrVmFyU2xvdENvbXBhdGli aWxpdHkob3V0ZXJzbG90LCBhdHRudW0gKyAxLCBvcC0+ZC52YXIudmFydHlwZSk7CisJCQkJ CUNoZWNrVmFyU2xvdENvbXBhdGliaWxpdHkob3V0ZXJzbG90LCBhdHRudW0gKyAxLCBvcC0+ dmFyLnZhcnR5cGUpOwogCQkJCQlicmVhazsKIAkJCQl9CiAKIAkJCWNhc2UgRUVPUF9TQ0FO X1ZBUjoKIAkJCQl7Ci0JCQkJCWludAkJCWF0dG51bSA9IG9wLT5kLnZhci5hdHRudW07CisJ CQkJCWludAkJCWF0dG51bSA9IG9wLT52YXIuYXR0bnVtOwogCi0JCQkJCUNoZWNrVmFyU2xv dENvbXBhdGliaWxpdHkoc2NhbnNsb3QsIGF0dG51bSArIDEsIG9wLT5kLnZhci52YXJ0eXBl KTsKKwkJCQkJQ2hlY2tWYXJTbG90Q29tcGF0aWJpbGl0eShzY2Fuc2xvdCwgYXR0bnVtICsg MSwgb3AtPnZhci52YXJ0eXBlKTsKIAkJCQkJYnJlYWs7CiAJCQkJfQogCiAJCQljYXNlIEVF T1BfT0xEX1ZBUjoKIAkJCQl7Ci0JCQkJCWludAkJCWF0dG51bSA9IG9wLT5kLnZhci5hdHRu dW07CisJCQkJCWludAkJCWF0dG51bSA9IG9wLT52YXIuYXR0bnVtOwogCi0JCQkJCUNoZWNr VmFyU2xvdENvbXBhdGliaWxpdHkob2xkc2xvdCwgYXR0bnVtICsgMSwgb3AtPmQudmFyLnZh cnR5cGUpOworCQkJCQlDaGVja1ZhclNsb3RDb21wYXRpYmlsaXR5KG9sZHNsb3QsIGF0dG51 bSArIDEsIG9wLT52YXIudmFydHlwZSk7CiAJCQkJCWJyZWFrOwogCQkJCX0KIAogCQkJY2Fz ZSBFRU9QX05FV19WQVI6CiAJCQkJewotCQkJCQlpbnQJCQlhdHRudW0gPSBvcC0+ZC52YXIu YXR0bnVtOworCQkJCQlpbnQJCQlhdHRudW0gPSBvcC0+dmFyLmF0dG51bTsKIAotCQkJCQlD aGVja1ZhclNsb3RDb21wYXRpYmlsaXR5KG5ld3Nsb3QsIGF0dG51bSArIDEsIG9wLT5kLnZh ci52YXJ0eXBlKTsKKwkJCQkJQ2hlY2tWYXJTbG90Q29tcGF0aWJpbGl0eShuZXdzbG90LCBh dHRudW0gKyAxLCBvcC0+dmFyLnZhcnR5cGUpOwogCQkJCQlicmVhazsKIAkJCQl9CiAJCQlk ZWZhdWx0OgpAQCAtMjQzNCw3ICsyNDM0LDcgQEAgQ2hlY2tPcFNsb3RDb21wYXRpYmlsaXR5 KEV4cHJFdmFsU3RlcCAqb3AsIFR1cGxlVGFibGVTbG90ICpzbG90KQogewogI2lmZGVmIFVT RV9BU1NFUlRfQ0hFQ0tJTkcKIAkvKiB0aGVyZSdzIG5vdGhpbmcgdG8gY2hlY2sgKi8KLQlp ZiAoIW9wLT5kLmZldGNoLmZpeGVkKQorCWlmICghb3AtPmZldGNoLmZpeGVkKQogCQlyZXR1 cm47CiAKIAkvKgpAQCAtMjQ0MiwxMCArMjQ0MiwxMCBAQCBDaGVja09wU2xvdENvbXBhdGli aWxpdHkoRXhwckV2YWxTdGVwICpvcCwgVHVwbGVUYWJsZVNsb3QgKnNsb3QpCiAJICogYnVm ZmVyIGFuZCBoZWFwIHR1cGxlcyB0byBiZSB1c2VkIGludGVyY2hhbmdlYWJseS4KIAkgKi8K IAlpZiAoc2xvdC0+dHRzX29wcyA9PSAmVFRTT3BzQnVmZmVySGVhcFR1cGxlICYmCi0JCW9w LT5kLmZldGNoLmtpbmQgPT0gJlRUU09wc0hlYXBUdXBsZSkKKwkJb3AtPmZldGNoLmtpbmQg PT0gJlRUU09wc0hlYXBUdXBsZSkKIAkJcmV0dXJuOwogCWlmIChzbG90LT50dHNfb3BzID09 ICZUVFNPcHNIZWFwVHVwbGUgJiYKLQkJb3AtPmQuZmV0Y2gua2luZCA9PSAmVFRTT3BzQnVm ZmVySGVhcFR1cGxlKQorCQlvcC0+ZmV0Y2gua2luZCA9PSAmVFRTT3BzQnVmZmVySGVhcFR1 cGxlKQogCQlyZXR1cm47CiAKIAkvKgpAQCAtMjQ1NSw3ICsyNDU1LDcgQEAgQ2hlY2tPcFNs b3RDb21wYXRpYmlsaXR5KEV4cHJFdmFsU3RlcCAqb3AsIFR1cGxlVGFibGVTbG90ICpzbG90 KQogCWlmIChzbG90LT50dHNfb3BzID09ICZUVFNPcHNWaXJ0dWFsKQogCQlyZXR1cm47CiAK LQlBc3NlcnQob3AtPmQuZmV0Y2gua2luZCA9PSBzbG90LT50dHNfb3BzKTsKKwlBc3NlcnQo b3AtPmZldGNoLmtpbmQgPT0gc2xvdC0+dHRzX29wcyk7CiAjZW5kaWYKIH0KIApAQCAtMjU0 Niw3ICsyNTQ2LDcgQEAgc3RhdGljIHBnX2F0dHJpYnV0ZV9hbHdheXNfaW5saW5lIERhdHVt CiBFeGVjSnVzdFZhckltcGwoRXhwclN0YXRlICpzdGF0ZSwgVHVwbGVUYWJsZVNsb3QgKnNs b3QsIGJvb2wgKmlzbnVsbCkKIHsKIAlFeHByRXZhbFN0ZXAgKm9wID0gJnN0YXRlLT5zdGVw c1sxXTsKLQlpbnQJCQlhdHRudW0gPSBvcC0+ZC52YXIuYXR0bnVtICsgMTsKKwlpbnQJCQlh dHRudW0gPSBvcC0+dmFyLmF0dG51bSArIDE7CiAKIAlDaGVja09wU2xvdENvbXBhdGliaWxp dHkoJnN0YXRlLT5zdGVwc1swXSwgc2xvdCk7CiAKQEAgLTI1ODQsOCArMjU4NCw4IEBAIHN0 YXRpYyBwZ19hdHRyaWJ1dGVfYWx3YXlzX2lubGluZSBEYXR1bQogRXhlY0p1c3RBc3NpZ25W YXJJbXBsKEV4cHJTdGF0ZSAqc3RhdGUsIFR1cGxlVGFibGVTbG90ICppbnNsb3QsIGJvb2wg KmlzbnVsbCkKIHsKIAlFeHByRXZhbFN0ZXAgKm9wID0gJnN0YXRlLT5zdGVwc1sxXTsKLQlp bnQJCQlhdHRudW0gPSBvcC0+ZC5hc3NpZ25fdmFyLmF0dG51bSArIDE7Ci0JaW50CQkJcmVz dWx0bnVtID0gb3AtPmQuYXNzaWduX3Zhci5yZXN1bHRudW07CisJaW50CQkJYXR0bnVtID0g b3AtPmFzc2lnbl92YXIuYXR0bnVtICsgMTsKKwlpbnQJCQlyZXN1bHRudW0gPSBvcC0+YXNz aWduX3Zhci5yZXN1bHRudW07CiAJVHVwbGVUYWJsZVNsb3QgKm91dHNsb3QgPSBzdGF0ZS0+ cmVzdWx0c2xvdDsKIAogCUNoZWNrT3BTbG90Q29tcGF0aWJpbGl0eSgmc3RhdGUtPnN0ZXBz WzBdLCBpbnNsb3QpOwpAQCAtMjY0MCwxMyArMjY0MCwxMyBAQCBFeGVjSnVzdEFwcGx5RnVu Y1RvQ2FzZShFeHByU3RhdGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wg KmlzbnVsbCkKIAkgKiBYWFggd2l0aCBzb21lIHJlZGVzaWduIG9mIHRoZSBDYXNlVGVzdEV4 cHIgbWVjaGFuaXNtLCBtYXliZSB3ZSBjb3VsZAogCSAqIGdldCByaWQgb2YgdGhpcyBkYXRh IHNodWZmbGluZz8KIAkgKi8KLQkqb3AtPnJlc3ZhbHVlID0gKm9wLT5kLmNhc2V0ZXN0LnZh bHVlOwotCSpvcC0+cmVzbnVsbCA9ICpvcC0+ZC5jYXNldGVzdC5pc251bGw7CisJKm9wLT5y ZXN2YWx1ZSA9ICpvcC0+Y2FzZXRlc3QudmFsdWU7CisJKm9wLT5yZXNudWxsID0gKm9wLT5j YXNldGVzdC5pc251bGw7CiAKIAlvcCsrOwogCi0JbmFyZ3MgPSBvcC0+ZC5mdW5jLm5hcmdz OwotCWZjaW5mbyA9IG9wLT5kLmZ1bmMuZmNpbmZvX2RhdGE7CisJbmFyZ3MgPSBvcC0+ZnVu Yy5uYXJnczsKKwlmY2luZm8gPSBvcC0+ZnVuYy5mY2luZm9fZGF0YTsKIAlhcmdzID0gZmNp bmZvLT5hcmdzOwogCiAJLyogc3RyaWN0IGZ1bmN0aW9uLCBzbyBjaGVjayBmb3IgTlVMTCBh cmdzICovCkBAIC0yNjU5LDcgKzI2NTksNyBAQCBFeGVjSnVzdEFwcGx5RnVuY1RvQ2FzZShF eHByU3RhdGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkK IAkJfQogCX0KIAlmY2luZm8tPmlzbnVsbCA9IGZhbHNlOwotCWQgPSBvcC0+ZC5mdW5jLmZu X2FkZHIoZmNpbmZvKTsKKwlkID0gb3AtPmZ1bmMuZm5fYWRkcihmY2luZm8pOwogCSppc251 bGwgPSBmY2luZm8tPmlzbnVsbDsKIAlyZXR1cm4gZDsKIH0KQEAgLTI2NzAsOCArMjY3MCw4 IEBAIEV4ZWNKdXN0Q29uc3QoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250 ZXh0LCBib29sICppc251bGwpCiB7CiAJRXhwckV2YWxTdGVwICpvcCA9ICZzdGF0ZS0+c3Rl cHNbMF07CiAKLQkqaXNudWxsID0gb3AtPmQuY29uc3R2YWwuaXNudWxsOwotCXJldHVybiBv cC0+ZC5jb25zdHZhbC52YWx1ZTsKKwkqaXNudWxsID0gb3AtPmNvbnN0dmFsLmlzbnVsbDsK KwlyZXR1cm4gb3AtPmNvbnN0dmFsLnZhbHVlOwogfQogCiAvKiBpbXBsZW1lbnRhdGlvbiBv ZiBFeGVjSnVzdChJbm5lcnxPdXRlcnxTY2FuKVZhclZpcnQgKi8KQEAgLTI2NzksNyArMjY3 OSw3IEBAIHN0YXRpYyBwZ19hdHRyaWJ1dGVfYWx3YXlzX2lubGluZSBEYXR1bQogRXhlY0p1 c3RWYXJWaXJ0SW1wbChFeHByU3RhdGUgKnN0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwg Ym9vbCAqaXNudWxsKQogewogCUV4cHJFdmFsU3RlcCAqb3AgPSAmc3RhdGUtPnN0ZXBzWzBd OwotCWludAkJCWF0dG51bSA9IG9wLT5kLnZhci5hdHRudW07CisJaW50CQkJYXR0bnVtID0g b3AtPnZhci5hdHRudW07CiAKIAkvKgogCSAqIEFzIGl0IGlzIGd1YXJhbnRlZWQgdGhhdCBh IHZpcnR1YWwgc2xvdCBpcyB1c2VkLCB0aGVyZSBuZXZlciBpcyBhIG5lZWQKQEAgLTI3MjIs OCArMjcyMiw4IEBAIHN0YXRpYyBwZ19hdHRyaWJ1dGVfYWx3YXlzX2lubGluZSBEYXR1bQog RXhlY0p1c3RBc3NpZ25WYXJWaXJ0SW1wbChFeHByU3RhdGUgKnN0YXRlLCBUdXBsZVRhYmxl U2xvdCAqaW5zbG90LCBib29sICppc251bGwpCiB7CiAJRXhwckV2YWxTdGVwICpvcCA9ICZz dGF0ZS0+c3RlcHNbMF07Ci0JaW50CQkJYXR0bnVtID0gb3AtPmQuYXNzaWduX3Zhci5hdHRu dW07Ci0JaW50CQkJcmVzdWx0bnVtID0gb3AtPmQuYXNzaWduX3Zhci5yZXN1bHRudW07CisJ aW50CQkJYXR0bnVtID0gb3AtPmFzc2lnbl92YXIuYXR0bnVtOworCWludAkJCXJlc3VsdG51 bSA9IG9wLT5hc3NpZ25fdmFyLnJlc3VsdG51bTsKIAlUdXBsZVRhYmxlU2xvdCAqb3V0c2xv dCA9IHN0YXRlLT5yZXN1bHRzbG90OwogCiAJLyogc2VlIEV4ZWNKdXN0VmFyVmlydEltcGwg Zm9yIGNvbW1lbnRzICovCkBAIC0yNzcxLDI0ICsyNzcxLDI0IEBAIEV4ZWNKdXN0SGFzaElu bmVyVmFyV2l0aElWKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwK IAlFeHByRXZhbFN0ZXAgKnNldGl2b3AgPSAmc3RhdGUtPnN0ZXBzWzFdOwogCUV4cHJFdmFs U3RlcCAqaW5uZXJ2YXIgPSAmc3RhdGUtPnN0ZXBzWzJdOwogCUV4cHJFdmFsU3RlcCAqaGFz aG9wID0gJnN0YXRlLT5zdGVwc1szXTsKLQlGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbyA9IGhh c2hvcC0+ZC5oYXNoZGF0dW0uZmNpbmZvX2RhdGE7Ci0JaW50CQkJYXR0bnVtID0gaW5uZXJ2 YXItPmQudmFyLmF0dG51bTsKKwlGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbyA9IGhhc2hvcC0+ aGFzaGRhdHVtLmZjaW5mb19kYXRhOworCWludAkJCWF0dG51bSA9IGlubmVydmFyLT52YXIu YXR0bnVtOwogCXVpbnQzMgkJaGFzaGtleTsKIAogCUNoZWNrT3BTbG90Q29tcGF0aWJpbGl0 eShmZXRjaG9wLCBlY29udGV4dC0+ZWN4dF9pbm5lcnR1cGxlKTsKLQlzbG90X2dldHNvbWVh dHRycyhlY29udGV4dC0+ZWN4dF9pbm5lcnR1cGxlLCBmZXRjaG9wLT5kLmZldGNoLmxhc3Rf dmFyKTsKKwlzbG90X2dldHNvbWVhdHRycyhlY29udGV4dC0+ZWN4dF9pbm5lcnR1cGxlLCBm ZXRjaG9wLT5mZXRjaC5sYXN0X3Zhcik7CiAKIAlmY2luZm8tPmFyZ3NbMF0udmFsdWUgPSBl Y29udGV4dC0+ZWN4dF9pbm5lcnR1cGxlLT50dHNfdmFsdWVzW2F0dG51bV07CiAJZmNpbmZv LT5hcmdzWzBdLmlzbnVsbCA9IGVjb250ZXh0LT5lY3h0X2lubmVydHVwbGUtPnR0c19pc251 bGxbYXR0bnVtXTsKIAotCWhhc2hrZXkgPSBEYXR1bUdldFVJbnQzMihzZXRpdm9wLT5kLmhh c2hkYXR1bV9pbml0dmFsdWUuaW5pdF92YWx1ZSk7CisJaGFzaGtleSA9IERhdHVtR2V0VUlu dDMyKHNldGl2b3AtPmhhc2hkYXR1bV9pbml0dmFsdWUuaW5pdF92YWx1ZSk7CiAJaGFzaGtl eSA9IHBnX3JvdGF0ZV9sZWZ0MzIoaGFzaGtleSwgMSk7CiAKIAlpZiAoIWZjaW5mby0+YXJn c1swXS5pc251bGwpCiAJewogCQl1aW50MzIJCWhhc2h2YWx1ZTsKIAotCQloYXNodmFsdWUg PSBEYXR1bUdldFVJbnQzMihoYXNob3AtPmQuaGFzaGRhdHVtLmZuX2FkZHIoZmNpbmZvKSk7 CisJCWhhc2h2YWx1ZSA9IERhdHVtR2V0VUludDMyKGhhc2hvcC0+aGFzaGRhdHVtLmZuX2Fk ZHIoZmNpbmZvKSk7CiAJCWhhc2hrZXkgPSBoYXNoa2V5IF4gaGFzaHZhbHVlOwogCX0KIApA QCAtMjgwMywxMSArMjgwMywxMSBAQCBFeGVjSnVzdEhhc2hWYXJJbXBsKEV4cHJTdGF0ZSAq c3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90LCBib29sICppc251bGwpCiAJRXhwckV2YWxT dGVwICpmZXRjaG9wID0gJnN0YXRlLT5zdGVwc1swXTsKIAlFeHByRXZhbFN0ZXAgKnZhciA9 ICZzdGF0ZS0+c3RlcHNbMV07CiAJRXhwckV2YWxTdGVwICpoYXNob3AgPSAmc3RhdGUtPnN0 ZXBzWzJdOwotCUZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvID0gaGFzaG9wLT5kLmhhc2hkYXR1 bS5mY2luZm9fZGF0YTsKLQlpbnQJCQlhdHRudW0gPSB2YXItPmQudmFyLmF0dG51bTsKKwlG dW5jdGlvbkNhbGxJbmZvIGZjaW5mbyA9IGhhc2hvcC0+aGFzaGRhdHVtLmZjaW5mb19kYXRh OworCWludAkJCWF0dG51bSA9IHZhci0+dmFyLmF0dG51bTsKIAogCUNoZWNrT3BTbG90Q29t cGF0aWJpbGl0eShmZXRjaG9wLCBzbG90KTsKLQlzbG90X2dldHNvbWVhdHRycyhzbG90LCBm ZXRjaG9wLT5kLmZldGNoLmxhc3RfdmFyKTsKKwlzbG90X2dldHNvbWVhdHRycyhzbG90LCBm ZXRjaG9wLT5mZXRjaC5sYXN0X3Zhcik7CiAKIAlmY2luZm8tPmFyZ3NbMF0udmFsdWUgPSBz bG90LT50dHNfdmFsdWVzW2F0dG51bV07CiAJZmNpbmZvLT5hcmdzWzBdLmlzbnVsbCA9IHNs b3QtPnR0c19pc251bGxbYXR0bnVtXTsKQEAgLTI4MTUsNyArMjgxNSw3IEBAIEV4ZWNKdXN0 SGFzaFZhckltcGwoRXhwclN0YXRlICpzdGF0ZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QsIGJv b2wgKmlzbnVsbCkKIAkqaXNudWxsID0gZmFsc2U7CiAKIAlpZiAoIWZjaW5mby0+YXJnc1sw XS5pc251bGwpCi0JCXJldHVybiBoYXNob3AtPmQuaGFzaGRhdHVtLmZuX2FkZHIoZmNpbmZv KTsKKwkJcmV0dXJuIGhhc2hvcC0+aGFzaGRhdHVtLmZuX2FkZHIoZmNpbmZvKTsKIAllbHNl CiAJCXJldHVybiAoRGF0dW0pIDA7CiB9CkBAIC0yODQwLDggKzI4NDAsOCBAQCBFeGVjSnVz dEhhc2hWYXJWaXJ0SW1wbChFeHByU3RhdGUgKnN0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xv dCwgYm9vbCAqaXNudWxsKQogewogCUV4cHJFdmFsU3RlcCAqdmFyID0gJnN0YXRlLT5zdGVw c1swXTsKIAlFeHByRXZhbFN0ZXAgKmhhc2hvcCA9ICZzdGF0ZS0+c3RlcHNbMV07Ci0JRnVu Y3Rpb25DYWxsSW5mbyBmY2luZm8gPSBoYXNob3AtPmQuaGFzaGRhdHVtLmZjaW5mb19kYXRh OwotCWludAkJCWF0dG51bSA9IHZhci0+ZC52YXIuYXR0bnVtOworCUZ1bmN0aW9uQ2FsbElu Zm8gZmNpbmZvID0gaGFzaG9wLT5oYXNoZGF0dW0uZmNpbmZvX2RhdGE7CisJaW50CQkJYXR0 bnVtID0gdmFyLT52YXIuYXR0bnVtOwogCiAJZmNpbmZvLT5hcmdzWzBdLnZhbHVlID0gc2xv dC0+dHRzX3ZhbHVlc1thdHRudW1dOwogCWZjaW5mby0+YXJnc1swXS5pc251bGwgPSBzbG90 LT50dHNfaXNudWxsW2F0dG51bV07CkBAIC0yODQ5LDcgKzI4NDksNyBAQCBFeGVjSnVzdEhh c2hWYXJWaXJ0SW1wbChFeHByU3RhdGUgKnN0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwg Ym9vbCAqaXNudWxsKQogCSppc251bGwgPSBmYWxzZTsKIAogCWlmICghZmNpbmZvLT5hcmdz WzBdLmlzbnVsbCkKLQkJcmV0dXJuIGhhc2hvcC0+ZC5oYXNoZGF0dW0uZm5fYWRkcihmY2lu Zm8pOworCQlyZXR1cm4gaGFzaG9wLT5oYXNoZGF0dW0uZm5fYWRkcihmY2luZm8pOwogCWVs c2UKIAkJcmV0dXJuIChEYXR1bSkgMDsKIH0KQEAgLTI4ODAsMTEgKzI4ODAsMTEgQEAgRXhl Y0p1c3RIYXNoT3V0ZXJWYXJTdHJpY3QoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQg KmVjb250ZXh0LAogCUV4cHJFdmFsU3RlcCAqZmV0Y2hvcCA9ICZzdGF0ZS0+c3RlcHNbMF07 CiAJRXhwckV2YWxTdGVwICp2YXIgPSAmc3RhdGUtPnN0ZXBzWzFdOwogCUV4cHJFdmFsU3Rl cCAqaGFzaG9wID0gJnN0YXRlLT5zdGVwc1syXTsKLQlGdW5jdGlvbkNhbGxJbmZvIGZjaW5m byA9IGhhc2hvcC0+ZC5oYXNoZGF0dW0uZmNpbmZvX2RhdGE7Ci0JaW50CQkJYXR0bnVtID0g dmFyLT5kLnZhci5hdHRudW07CisJRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8gPSBoYXNob3At Pmhhc2hkYXR1bS5mY2luZm9fZGF0YTsKKwlpbnQJCQlhdHRudW0gPSB2YXItPnZhci5hdHRu dW07CiAKIAlDaGVja09wU2xvdENvbXBhdGliaWxpdHkoZmV0Y2hvcCwgZWNvbnRleHQtPmVj eHRfb3V0ZXJ0dXBsZSk7Ci0Jc2xvdF9nZXRzb21lYXR0cnMoZWNvbnRleHQtPmVjeHRfb3V0 ZXJ0dXBsZSwgZmV0Y2hvcC0+ZC5mZXRjaC5sYXN0X3Zhcik7CisJc2xvdF9nZXRzb21lYXR0 cnMoZWNvbnRleHQtPmVjeHRfb3V0ZXJ0dXBsZSwgZmV0Y2hvcC0+ZmV0Y2gubGFzdF92YXIp OwogCiAJZmNpbmZvLT5hcmdzWzBdLnZhbHVlID0gZWNvbnRleHQtPmVjeHRfb3V0ZXJ0dXBs ZS0+dHRzX3ZhbHVlc1thdHRudW1dOwogCWZjaW5mby0+YXJnc1swXS5pc251bGwgPSBlY29u dGV4dC0+ZWN4dF9vdXRlcnR1cGxlLT50dHNfaXNudWxsW2F0dG51bV07CkBAIC0yODkyLDcg KzI4OTIsNyBAQCBFeGVjSnVzdEhhc2hPdXRlclZhclN0cmljdChFeHByU3RhdGUgKnN0YXRl LCBFeHByQ29udGV4dCAqZWNvbnRleHQsCiAJaWYgKCFmY2luZm8tPmFyZ3NbMF0uaXNudWxs KQogCXsKIAkJKmlzbnVsbCA9IGZhbHNlOwotCQlyZXR1cm4gaGFzaG9wLT5kLmhhc2hkYXR1 bS5mbl9hZGRyKGZjaW5mbyk7CisJCXJldHVybiBoYXNob3AtPmhhc2hkYXR1bS5mbl9hZGRy KGZjaW5mbyk7CiAJfQogCWVsc2UKIAl7CkBAIC0yOTkwLDE0ICsyOTkwLDE0IEBAIHZvaWQK IEV4ZWNFdmFsRnVuY0V4cHJGdXNhZ2UoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVw ICpvcCwKIAkJCQkJICAgRXhwckNvbnRleHQgKmVjb250ZXh0KQogewotCUZ1bmN0aW9uQ2Fs bEluZm8gZmNpbmZvID0gb3AtPmQuZnVuYy5mY2luZm9fZGF0YTsKKwlGdW5jdGlvbkNhbGxJ bmZvIGZjaW5mbyA9IG9wLT5mdW5jLmZjaW5mb19kYXRhOwogCVBnU3RhdF9GdW5jdGlvbkNh bGxVc2FnZSBmY3VzYWdlOwogCURhdHVtCQlkOwogCiAJcGdzdGF0X2luaXRfZnVuY3Rpb25f dXNhZ2UoZmNpbmZvLCAmZmN1c2FnZSk7CiAKIAlmY2luZm8tPmlzbnVsbCA9IGZhbHNlOwot CWQgPSBvcC0+ZC5mdW5jLmZuX2FkZHIoZmNpbmZvKTsKKwlkID0gb3AtPmZ1bmMuZm5fYWRk cihmY2luZm8pOwogCSpvcC0+cmVzdmFsdWUgPSBkOwogCSpvcC0+cmVzbnVsbCA9IGZjaW5m by0+aXNudWxsOwogCkBAIC0zMDEyLDEwICszMDEyLDEwIEBAIEV4ZWNFdmFsRnVuY0V4cHJT dHJpY3RGdXNhZ2UoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwKIAkJCQkJ CQkgRXhwckNvbnRleHQgKmVjb250ZXh0KQogewogCi0JRnVuY3Rpb25DYWxsSW5mbyBmY2lu Zm8gPSBvcC0+ZC5mdW5jLmZjaW5mb19kYXRhOworCUZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZv ID0gb3AtPmZ1bmMuZmNpbmZvX2RhdGE7CiAJUGdTdGF0X0Z1bmN0aW9uQ2FsbFVzYWdlIGZj dXNhZ2U7CiAJTnVsbGFibGVEYXR1bSAqYXJncyA9IGZjaW5mby0+YXJnczsKLQlpbnQJCQlu YXJncyA9IG9wLT5kLmZ1bmMubmFyZ3M7CisJaW50CQkJbmFyZ3MgPSBvcC0+ZnVuYy5uYXJn czsKIAlEYXR1bQkJZDsKIAogCS8qIHN0cmljdCBmdW5jdGlvbiwgc28gY2hlY2sgZm9yIE5V TEwgYXJncyAqLwpAQCAtMzAzMSw3ICszMDMxLDcgQEAgRXhlY0V2YWxGdW5jRXhwclN0cmlj dEZ1c2FnZShFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLAogCXBnc3RhdF9p bml0X2Z1bmN0aW9uX3VzYWdlKGZjaW5mbywgJmZjdXNhZ2UpOwogCiAJZmNpbmZvLT5pc251 bGwgPSBmYWxzZTsKLQlkID0gb3AtPmQuZnVuYy5mbl9hZGRyKGZjaW5mbyk7CisJZCA9IG9w LT5mdW5jLmZuX2FkZHIoZmNpbmZvKTsKIAkqb3AtPnJlc3ZhbHVlID0gZDsKIAkqb3AtPnJl c251bGwgPSBmY2luZm8tPmlzbnVsbDsKIApAQCAtMzA0OSw3ICszMDQ5LDcgQEAgRXhlY0V2 YWxQYXJhbUV4ZWMoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwgRXhwckNv bnRleHQgKmVjb250ZXh0KQogewogCVBhcmFtRXhlY0RhdGEgKnBybTsKIAotCXBybSA9ICYo ZWNvbnRleHQtPmVjeHRfcGFyYW1fZXhlY192YWxzW29wLT5kLnBhcmFtLnBhcmFtaWRdKTsK Kwlwcm0gPSAmKGVjb250ZXh0LT5lY3h0X3BhcmFtX2V4ZWNfdmFsc1tvcC0+cGFyYW0ucGFy YW1pZF0pOwogCWlmICh1bmxpa2VseShwcm0tPmV4ZWNQbGFuICE9IE5VTEwpKQogCXsKIAkJ LyogUGFyYW1ldGVyIG5vdCBldmFsdWF0ZWQgeWV0LCBzbyBnbyBkbyBpdCAqLwpAQCAtMzA3 MCw3ICszMDcwLDcgQEAgdm9pZAogRXhlY0V2YWxQYXJhbUV4dGVybihFeHByU3RhdGUgKnN0 YXRlLCBFeHByRXZhbFN0ZXAgKm9wLCBFeHByQ29udGV4dCAqZWNvbnRleHQpCiB7CiAJUGFy YW1MaXN0SW5mbyBwYXJhbUluZm8gPSBlY29udGV4dC0+ZWN4dF9wYXJhbV9saXN0X2luZm87 Ci0JaW50CQkJcGFyYW1JZCA9IG9wLT5kLnBhcmFtLnBhcmFtaWQ7CisJaW50CQkJcGFyYW1J ZCA9IG9wLT5wYXJhbS5wYXJhbWlkOwogCiAJaWYgKGxpa2VseShwYXJhbUluZm8gJiYKIAkJ CSAgIHBhcmFtSWQgPiAwICYmIHBhcmFtSWQgPD0gcGFyYW1JbmZvLT5udW1QYXJhbXMpKQpA QCAtMzA4NywxMyArMzA4NywxMyBAQCBFeGVjRXZhbFBhcmFtRXh0ZXJuKEV4cHJTdGF0ZSAq c3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsIEV4cHJDb250ZXh0ICplY29udGV4dCkKIAkJaWYg KGxpa2VseShPaWRJc1ZhbGlkKHBybS0+cHR5cGUpKSkKIAkJewogCQkJLyogc2FmZXR5IGNo ZWNrIGluIGNhc2UgaG9vayBkaWQgc29tZXRoaW5nIHVuZXhwZWN0ZWQgKi8KLQkJCWlmICh1 bmxpa2VseShwcm0tPnB0eXBlICE9IG9wLT5kLnBhcmFtLnBhcmFtdHlwZSkpCisJCQlpZiAo dW5saWtlbHkocHJtLT5wdHlwZSAhPSBvcC0+cGFyYW0ucGFyYW10eXBlKSkKIAkJCQllcmVw b3J0KEVSUk9SLAogCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCks CiAJCQkJCQkgZXJybXNnKCJ0eXBlIG9mIHBhcmFtZXRlciAlZCAoJXMpIGRvZXMgbm90IG1h dGNoIHRoYXQgd2hlbiBwcmVwYXJpbmcgdGhlIHBsYW4gKCVzKSIsCiAJCQkJCQkJCXBhcmFt SWQsCiAJCQkJCQkJCWZvcm1hdF90eXBlX2JlKHBybS0+cHR5cGUpLAotCQkJCQkJCQlmb3Jt YXRfdHlwZV9iZShvcC0+ZC5wYXJhbS5wYXJhbXR5cGUpKSkpOworCQkJCQkJCQlmb3JtYXRf dHlwZV9iZShvcC0+cGFyYW0ucGFyYW10eXBlKSkpKTsKIAkJCSpvcC0+cmVzdmFsdWUgPSBw cm0tPnZhbHVlOwogCQkJKm9wLT5yZXNudWxsID0gcHJtLT5pc251bGw7CiAJCQlyZXR1cm47 CkBAIC0zMTE0LDcgKzMxMTQsNyBAQCBFeGVjRXZhbFBhcmFtU2V0KEV4cHJTdGF0ZSAqc3Rh dGUsIEV4cHJFdmFsU3RlcCAqb3AsIEV4cHJDb250ZXh0ICplY29udGV4dCkKIHsKIAlQYXJh bUV4ZWNEYXRhICpwcm07CiAKLQlwcm0gPSAmKGVjb250ZXh0LT5lY3h0X3BhcmFtX2V4ZWNf dmFsc1tvcC0+ZC5wYXJhbS5wYXJhbWlkXSk7CisJcHJtID0gJihlY29udGV4dC0+ZWN4dF9w YXJhbV9leGVjX3ZhbHNbb3AtPnBhcmFtLnBhcmFtaWRdKTsKIAogCS8qIFNob3VsZG4ndCBo YXZlIGEgcGVuZGluZyBldmFsdWF0aW9uIGFueW1vcmUgKi8KIAlBc3NlcnQocHJtLT5leGVj UGxhbiA9PSBOVUxMKTsKQEAgLTMxNDYsNyArMzE0Niw3IEBAIEV4ZWNFdmFsQ29lcmNlVmlh SU9TYWZlKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3ApCiAJewogCQlGdW5j dGlvbkNhbGxJbmZvIGZjaW5mb19vdXQ7CiAKLQkJZmNpbmZvX291dCA9IG9wLT5kLmlvY29l cmNlLmZjaW5mb19kYXRhX291dDsKKwkJZmNpbmZvX291dCA9IG9wLT5pb2NvZXJjZS5mY2lu Zm9fZGF0YV9vdXQ7CiAJCWZjaW5mb19vdXQtPmFyZ3NbMF0udmFsdWUgPSAqb3AtPnJlc3Zh bHVlOwogCQlmY2luZm9fb3V0LT5hcmdzWzBdLmlzbnVsbCA9IGZhbHNlOwogCkBAIC0zMTU4 LDExICszMTU4LDExIEBAIEV4ZWNFdmFsQ29lcmNlVmlhSU9TYWZlKEV4cHJTdGF0ZSAqc3Rh dGUsIEV4cHJFdmFsU3RlcCAqb3ApCiAJfQogCiAJLyogY2FsbCBpbnB1dCBmdW5jdGlvbiAo c2ltaWxhciB0byBJbnB1dEZ1bmN0aW9uQ2FsbFNhZmUpICovCi0JaWYgKCFvcC0+ZC5pb2Nv ZXJjZS5maW5mb19pbi0+Zm5fc3RyaWN0IHx8IHN0ciAhPSBOVUxMKQorCWlmICghb3AtPmlv Y29lcmNlLmZpbmZvX2luLT5mbl9zdHJpY3QgfHwgc3RyICE9IE5VTEwpCiAJewogCQlGdW5j dGlvbkNhbGxJbmZvIGZjaW5mb19pbjsKIAotCQlmY2luZm9faW4gPSBvcC0+ZC5pb2NvZXJj ZS5mY2luZm9fZGF0YV9pbjsKKwkJZmNpbmZvX2luID0gb3AtPmlvY29lcmNlLmZjaW5mb19k YXRhX2luOwogCQlmY2luZm9faW4tPmFyZ3NbMF0udmFsdWUgPSBQb2ludGVyR2V0RGF0dW0o c3RyKTsKIAkJZmNpbmZvX2luLT5hcmdzWzBdLmlzbnVsbCA9ICpvcC0+cmVzbnVsbDsKIAkJ Lyogc2Vjb25kIGFuZCB0aGlyZCBhcmd1bWVudHMgYXJlIGFscmVhZHkgc2V0IHVwICovCkBA IC0zMTk1LDcgKzMxOTUsNyBAQCB2b2lkCiBFeGVjRXZhbFNRTFZhbHVlRnVuY3Rpb24oRXhw clN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCkKIHsKIAlMT0NBTF9GQ0lORk8oZmNp bmZvLCAwKTsKLQlTUUxWYWx1ZUZ1bmN0aW9uICpzdmYgPSBvcC0+ZC5zcWx2YWx1ZWZ1bmN0 aW9uLnN2ZjsKKwlTUUxWYWx1ZUZ1bmN0aW9uICpzdmYgPSBvcC0+c3FsdmFsdWVmdW5jdGlv bi5zdmY7CiAKIAkqb3AtPnJlc251bGwgPSBmYWxzZTsKIApAQCAtMzI3Miw5ICszMjcyLDkg QEAgRXhlY0V2YWxDdXJyZW50T2ZFeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3Rl cCAqb3ApCiB2b2lkCiBFeGVjRXZhbE5leHRWYWx1ZUV4cHIoRXhwclN0YXRlICpzdGF0ZSwg RXhwckV2YWxTdGVwICpvcCkKIHsKLQlpbnQ2NAkJbmV3dmFsID0gbmV4dHZhbF9pbnRlcm5h bChvcC0+ZC5uZXh0dmFsdWVleHByLnNlcWlkLCBmYWxzZSk7CisJaW50NjQJCW5ld3ZhbCA9 IG5leHR2YWxfaW50ZXJuYWwob3AtPm5leHR2YWx1ZWV4cHIuc2VxaWQsIGZhbHNlKTsKIAot CXN3aXRjaCAob3AtPmQubmV4dHZhbHVlZXhwci5zZXF0eXBpZCkKKwlzd2l0Y2ggKG9wLT5u ZXh0dmFsdWVleHByLnNlcXR5cGlkKQogCXsKIAkJY2FzZSBJTlQyT0lEOgogCQkJKm9wLT5y ZXN2YWx1ZSA9IEludDE2R2V0RGF0dW0oKGludDE2KSBuZXd2YWwpOwpAQCAtMzI4Nyw3ICsz Mjg3LDcgQEAgRXhlY0V2YWxOZXh0VmFsdWVFeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJF dmFsU3RlcCAqb3ApCiAJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1 bnN1cHBvcnRlZCBzZXF1ZW5jZSB0eXBlICV1IiwKLQkJCQkgb3AtPmQubmV4dHZhbHVlZXhw ci5zZXF0eXBpZCk7CisJCQkJIG9wLT5uZXh0dmFsdWVleHByLnNlcXR5cGlkKTsKIAl9CiAJ Km9wLT5yZXNudWxsID0gZmFsc2U7CiB9CkBAIC0zMzU1LDcgKzMzNTUsNyBAQCBFeGVjRXZh bFJvd051bGxJbnQoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwKIAogCS8q IExvb2t1cCB0dXBkZXNjIGlmIGZpcnN0IHRpbWUgdGhyb3VnaCBvciBpZiB0eXBlIGNoYW5n ZXMgKi8KIAl0dXBEZXNjID0gZ2V0X2NhY2hlZF9yb3d0eXBlKHR1cFR5cGUsIHR1cFR5cG1v ZCwKLQkJCQkJCQkJICZvcC0+ZC5udWxsdGVzdF9yb3cucm93Y2FjaGUsIE5VTEwpOworCQkJ CQkJCQkgJm9wLT5udWxsdGVzdF9yb3cucm93Y2FjaGUsIE5VTEwpOwogCiAJLyoKIAkgKiBo ZWFwX2F0dGlzbnVsbCBuZWVkcyBhIEhlYXBUdXBsZSBub3QgYSBiYXJlIEhlYXBUdXBsZUhl YWRlci4KQEAgLTMzOTUsMTQgKzMzOTUsMTQgQEAgRXhlY0V2YWxSb3dOdWxsSW50KEV4cHJT dGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsCiAgKiBFdmFsdWF0ZSBhbiBBUlJBWVtd IGV4cHJlc3Npb24uCiAgKgogICogVGhlIGluZGl2aWR1YWwgYXJyYXkgZWxlbWVudHMgKG9y IHN1YmFycmF5cykgaGF2ZSBhbHJlYWR5IGJlZW4gZXZhbHVhdGVkCi0gKiBpbnRvIG9wLT5k LmFycmF5ZXhwci5lbGVtdmFsdWVzW10vZWxlbW51bGxzW10uCisgKiBpbnRvIG9wLT5hcnJh eWV4cHIuZWxlbXZhbHVlc1tdL2VsZW1udWxsc1tdLgogICovCiB2b2lkCiBFeGVjRXZhbEFy cmF5RXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wKQogewogCUFycmF5 VHlwZSAgKnJlc3VsdDsKLQlPaWQJCQllbGVtZW50X3R5cGUgPSBvcC0+ZC5hcnJheWV4cHIu ZWxlbXR5cGU7Ci0JaW50CQkJbmVsZW1zID0gb3AtPmQuYXJyYXlleHByLm5lbGVtczsKKwlP aWQJCQllbGVtZW50X3R5cGUgPSBvcC0+YXJyYXlleHByLmVsZW10eXBlOworCWludAkJCW5l bGVtcyA9IG9wLT5hcnJheWV4cHIubmVsZW1zOwogCWludAkJCW5kaW1zID0gMDsKIAlpbnQJ CQlkaW1zW01BWERJTV07CiAJaW50CQkJbGJzW01BWERJTV07CkBAIC0zNDEwLDExICszNDEw LDExIEBAIEV4ZWNFdmFsQXJyYXlFeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3Rl cCAqb3ApCiAJLyogU2V0IG5vbi1udWxsIGFzIGRlZmF1bHQgKi8KIAkqb3AtPnJlc251bGwg PSBmYWxzZTsKIAotCWlmICghb3AtPmQuYXJyYXlleHByLm11bHRpZGltcykKKwlpZiAoIW9w LT5hcnJheWV4cHIubXVsdGlkaW1zKQogCXsKIAkJLyogRWxlbWVudHMgYXJlIHByZXN1bWFi bHkgb2Ygc2NhbGFyIHR5cGUgKi8KLQkJRGF0dW0JICAgKmR2YWx1ZXMgPSBvcC0+ZC5hcnJh eWV4cHIuZWxlbXZhbHVlczsKLQkJYm9vbAkgICAqZG51bGxzID0gb3AtPmQuYXJyYXlleHBy LmVsZW1udWxsczsKKwkJRGF0dW0JICAgKmR2YWx1ZXMgPSBvcC0+YXJyYXlleHByLmVsZW12 YWx1ZXM7CisJCWJvb2wJICAgKmRudWxscyA9IG9wLT5hcnJheWV4cHIuZWxlbW51bGxzOwog CiAJCS8qIHNldHVwIGZvciAxLUQgYXJyYXkgb2YgdGhlIGdpdmVuIGxlbmd0aCAqLwogCQlu ZGltcyA9IDE7CkBAIC0zNDIzLDkgKzM0MjMsOSBAQCBFeGVjRXZhbEFycmF5RXhwcihFeHBy U3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wKQogCiAJCXJlc3VsdCA9IGNvbnN0cnVj dF9tZF9hcnJheShkdmFsdWVzLCBkbnVsbHMsIG5kaW1zLCBkaW1zLCBsYnMsCiAJCQkJCQkJ CQllbGVtZW50X3R5cGUsCi0JCQkJCQkJCQlvcC0+ZC5hcnJheWV4cHIuZWxlbWxlbmd0aCwK LQkJCQkJCQkJCW9wLT5kLmFycmF5ZXhwci5lbGVtYnl2YWwsCi0JCQkJCQkJCQlvcC0+ZC5h cnJheWV4cHIuZWxlbWFsaWduKTsKKwkJCQkJCQkJCW9wLT5hcnJheWV4cHIuZWxlbWxlbmd0 aCwKKwkJCQkJCQkJCW9wLT5hcnJheWV4cHIuZWxlbWJ5dmFsLAorCQkJCQkJCQkJb3AtPmFy cmF5ZXhwci5lbGVtYWxpZ24pOwogCX0KIAllbHNlCiAJewpAQCAtMzQ2MCw4ICszNDYwLDgg QEAgRXhlY0V2YWxBcnJheUV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpv cCkKIAkJCUFycmF5VHlwZSAgKmFycmF5OwogCQkJaW50CQkJdGhpc19uZGltczsKIAotCQkJ YXJyYXlkYXR1bSA9IG9wLT5kLmFycmF5ZXhwci5lbGVtdmFsdWVzW2VsZW1vZmZdOwotCQkJ ZWlzbnVsbCA9IG9wLT5kLmFycmF5ZXhwci5lbGVtbnVsbHNbZWxlbW9mZl07CisJCQlhcnJh eWRhdHVtID0gb3AtPmFycmF5ZXhwci5lbGVtdmFsdWVzW2VsZW1vZmZdOworCQkJZWlzbnVs bCA9IG9wLT5hcnJheWV4cHIuZWxlbW51bGxzW2VsZW1vZmZdOwogCiAJCQkvKiB0ZW1wb3Jh cmlseSBpZ25vcmUgbnVsbCBzdWJhcnJheXMgKi8KIAkJCWlmIChlaXNudWxsKQpAQCAtMzYy NiwxMiArMzYyNiwxMiBAQCBFeGVjRXZhbEFycmF5Q29lcmNlKEV4cHJTdGF0ZSAqc3RhdGUs IEV4cHJFdmFsU3RlcCAqb3AsIEV4cHJDb250ZXh0ICplY29udGV4dCkKIAkgKiBJZiBpdCdz IGJpbmFyeS1jb21wYXRpYmxlLCBtb2RpZnkgdGhlIGVsZW1lbnQgdHlwZSBpbiB0aGUgYXJy YXkgaGVhZGVyLAogCSAqIGJ1dCBvdGhlcndpc2UgbGVhdmUgdGhlIGFycmF5IGFzIHdlIHJl Y2VpdmVkIGl0LgogCSAqLwotCWlmIChvcC0+ZC5hcnJheWNvZXJjZS5lbGVtZXhwcnN0YXRl ID09IE5VTEwpCisJaWYgKG9wLT5hcnJheWNvZXJjZS5lbGVtZXhwcnN0YXRlID09IE5VTEwp CiAJewogCQkvKiBEZXRvYXN0IGlucHV0IGFycmF5IGlmIG5lY2Vzc2FyeSwgYW5kIGNvcHkg aW4gYW55IGNhc2UgKi8KIAkJQXJyYXlUeXBlICAqYXJyYXkgPSBEYXR1bUdldEFycmF5VHlw ZVBDb3B5KGFycmF5ZGF0dW0pOwogCi0JCUFSUl9FTEVNVFlQRShhcnJheSkgPSBvcC0+ZC5h cnJheWNvZXJjZS5yZXN1bHRlbGVtdHlwZTsKKwkJQVJSX0VMRU1UWVBFKGFycmF5KSA9IG9w LT5hcnJheWNvZXJjZS5yZXN1bHRlbGVtdHlwZTsKIAkJKm9wLT5yZXN2YWx1ZSA9IFBvaW50 ZXJHZXREYXR1bShhcnJheSk7CiAJCXJldHVybjsKIAl9CkBAIC0zNjQwLDE3ICszNjQwLDE3 IEBAIEV4ZWNFdmFsQXJyYXlDb2VyY2UoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVw ICpvcCwgRXhwckNvbnRleHQgKmVjb250ZXh0KQogCSAqIFVzZSBhcnJheV9tYXAgdG8gYXBw bHkgdGhlIHN1Yi1leHByZXNzaW9uIHRvIGVhY2ggYXJyYXkgZWxlbWVudC4KIAkgKi8KIAkq b3AtPnJlc3ZhbHVlID0gYXJyYXlfbWFwKGFycmF5ZGF0dW0sCi0JCQkJCQkJICBvcC0+ZC5h cnJheWNvZXJjZS5lbGVtZXhwcnN0YXRlLAorCQkJCQkJCSAgb3AtPmFycmF5Y29lcmNlLmVs ZW1leHByc3RhdGUsCiAJCQkJCQkJICBlY29udGV4dCwKLQkJCQkJCQkgIG9wLT5kLmFycmF5 Y29lcmNlLnJlc3VsdGVsZW10eXBlLAotCQkJCQkJCSAgb3AtPmQuYXJyYXljb2VyY2UuYW1z dGF0ZSk7CisJCQkJCQkJICBvcC0+YXJyYXljb2VyY2UucmVzdWx0ZWxlbXR5cGUsCisJCQkJ CQkJICBvcC0+YXJyYXljb2VyY2UuYW1zdGF0ZSk7CiB9CiAKIC8qCiAgKiBFdmFsdWF0ZSBh IFJPVygpIGV4cHJlc3Npb24uCiAgKgogICogVGhlIGluZGl2aWR1YWwgY29sdW1ucyBoYXZl IGFscmVhZHkgYmVlbiBldmFsdWF0ZWQgaW50bwotICogb3AtPmQucm93LmVsZW12YWx1ZXNb XS9lbGVtbnVsbHNbXS4KKyAqIG9wLT5yb3cuZWxlbXZhbHVlc1tdL2VsZW1udWxsc1tdLgog ICovCiB2b2lkCiBFeGVjRXZhbFJvdyhFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAg Km9wKQpAQCAtMzY1OCw5ICszNjU4LDkgQEAgRXhlY0V2YWxSb3coRXhwclN0YXRlICpzdGF0 ZSwgRXhwckV2YWxTdGVwICpvcCkKIAlIZWFwVHVwbGUJdHVwbGU7CiAKIAkvKiBidWlsZCB0 dXBsZSBmcm9tIGV2YWx1YXRlZCBmaWVsZCB2YWx1ZXMgKi8KLQl0dXBsZSA9IGhlYXBfZm9y bV90dXBsZShvcC0+ZC5yb3cudHVwZGVzYywKLQkJCQkJCQlvcC0+ZC5yb3cuZWxlbXZhbHVl cywKLQkJCQkJCQlvcC0+ZC5yb3cuZWxlbW51bGxzKTsKKwl0dXBsZSA9IGhlYXBfZm9ybV90 dXBsZShvcC0+cm93LnR1cGRlc2MsCisJCQkJCQkJb3AtPnJvdy5lbGVtdmFsdWVzLAorCQkJ CQkJCW9wLT5yb3cuZWxlbW51bGxzKTsKIAogCSpvcC0+cmVzdmFsdWUgPSBIZWFwVHVwbGVH ZXREYXR1bSh0dXBsZSk7CiAJKm9wLT5yZXNudWxsID0gZmFsc2U7CkBAIC0zNjcwLDE1ICsz NjcwLDE1IEBAIEV4ZWNFdmFsUm93KEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAq b3ApCiAgKiBFdmFsdWF0ZSBHUkVBVEVTVCgpIG9yIExFQVNUKCkgZXhwcmVzc2lvbiAobm90 ZSB0aGlzIGlzICpub3QqIE1JTigpL01BWCgpKS4KICAqCiAgKiBBbGwgb2YgdGhlIHRvLWJl LWNvbXBhcmVkIGV4cHJlc3Npb25zIGhhdmUgYWxyZWFkeSBiZWVuIGV2YWx1YXRlZCBpbnRv Ci0gKiBvcC0+ZC5taW5tYXgudmFsdWVzW10vbnVsbHNbXS4KKyAqIG9wLT5taW5tYXgudmFs dWVzW10vbnVsbHNbXS4KICAqLwogdm9pZAogRXhlY0V2YWxNaW5NYXgoRXhwclN0YXRlICpz dGF0ZSwgRXhwckV2YWxTdGVwICpvcCkKIHsKLQlEYXR1bQkgICAqdmFsdWVzID0gb3AtPmQu bWlubWF4LnZhbHVlczsKLQlib29sCSAgICpudWxscyA9IG9wLT5kLm1pbm1heC5udWxsczsK LQlGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbyA9IG9wLT5kLm1pbm1heC5mY2luZm9fZGF0YTsK LQlNaW5NYXhPcAlvcGVyYXRvciA9IG9wLT5kLm1pbm1heC5vcDsKKwlEYXR1bQkgICAqdmFs dWVzID0gb3AtPm1pbm1heC52YWx1ZXM7CisJYm9vbAkgICAqbnVsbHMgPSBvcC0+bWlubWF4 Lm51bGxzOworCUZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvID0gb3AtPm1pbm1heC5mY2luZm9f ZGF0YTsKKwlNaW5NYXhPcAlvcGVyYXRvciA9IG9wLT5taW5tYXgub3A7CiAKIAkvKiBzZXQg YXQgaW5pdGlhbGl6YXRpb24gKi8KIAlBc3NlcnQoZmNpbmZvLT5hcmdzWzBdLmlzbnVsbCA9 PSBmYWxzZSk7CkBAIC0zNjg3LDcgKzM2ODcsNyBAQCBFeGVjRXZhbE1pbk1heChFeHByU3Rh dGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wKQogCS8qIGRlZmF1bHQgdG8gbnVsbCByZXN1 bHQgKi8KIAkqb3AtPnJlc251bGwgPSB0cnVlOwogCi0JZm9yIChpbnQgb2ZmID0gMDsgb2Zm IDwgb3AtPmQubWlubWF4Lm5lbGVtczsgb2ZmKyspCisJZm9yIChpbnQgb2ZmID0gMDsgb2Zm IDwgb3AtPm1pbm1heC5uZWxlbXM7IG9mZisrKQogCXsKIAkJLyogaWdub3JlIE5VTEwgaW5w dXRzICovCiAJCWlmIChudWxsc1tvZmZdKQpAQCAtMzcyOCw3ICszNzI4LDcgQEAgRXhlY0V2 YWxNaW5NYXgoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCkKIHZvaWQKIEV4 ZWNFdmFsRmllbGRTZWxlY3QoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwg RXhwckNvbnRleHQgKmVjb250ZXh0KQogewotCUF0dHJOdW1iZXIJZmllbGRudW0gPSBvcC0+ ZC5maWVsZHNlbGVjdC5maWVsZG51bTsKKwlBdHRyTnVtYmVyCWZpZWxkbnVtID0gb3AtPmZp ZWxkc2VsZWN0LmZpZWxkbnVtOwogCURhdHVtCQl0dXBEYXR1bTsKIAlIZWFwVHVwbGVIZWFk ZXIgdHVwbGU7CiAJT2lkCQkJdHVwVHlwZTsKQEAgLTM3NzUsMTMgKzM3NzUsMTMgQEAgRXhl Y0V2YWxGaWVsZFNlbGVjdChFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLCBF eHByQ29udGV4dCAqZWNvbnRleHQpCiAKIAkJLyogQ2hlY2sgZm9yIHR5cGUgbWlzbWF0Y2gg LS0tIHBvc3NpYmxlIGFmdGVyIEFMVEVSIENPTFVNTiBUWVBFPyAqLwogCQkvKiBBcyBpbiBD aGVja1ZhclNsb3RDb21wYXRpYmlsaXR5LCB3ZSBzaG91bGQgYnV0IGNhbid0IGNoZWNrIHR5 cG1vZCAqLwotCQlpZiAob3AtPmQuZmllbGRzZWxlY3QucmVzdWx0dHlwZSAhPSBhdHRyLT5h dHR0eXBpZCkKKwkJaWYgKG9wLT5maWVsZHNlbGVjdC5yZXN1bHR0eXBlICE9IGF0dHItPmF0 dHR5cGlkKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRB VFlQRV9NSVNNQVRDSCksCiAJCQkJCSBlcnJtc2coImF0dHJpYnV0ZSAlZCBoYXMgd3Jvbmcg dHlwZSIsIGZpZWxkbnVtKSwKIAkJCQkJIGVycmRldGFpbCgiVGFibGUgaGFzIHR5cGUgJXMs IGJ1dCBxdWVyeSBleHBlY3RzICVzLiIsCiAJCQkJCQkJICAgZm9ybWF0X3R5cGVfYmUoYXR0 ci0+YXR0dHlwaWQpLAotCQkJCQkJCSAgIGZvcm1hdF90eXBlX2JlKG9wLT5kLmZpZWxkc2Vs ZWN0LnJlc3VsdHR5cGUpKSkpOworCQkJCQkJCSAgIGZvcm1hdF90eXBlX2JlKG9wLT5maWVs ZHNlbGVjdC5yZXN1bHR0eXBlKSkpKTsKIAogCQkvKiBleHRyYWN0IHRoZSBmaWVsZCAqLwog CQkqb3AtPnJlc3ZhbHVlID0gZXhwYW5kZWRfcmVjb3JkX2dldF9maWVsZChlcmgsIGZpZWxk bnVtLApAQCAtMzc5Nyw3ICszNzk3LDcgQEAgRXhlY0V2YWxGaWVsZFNlbGVjdChFeHByU3Rh dGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLCBFeHByQ29udGV4dCAqZWNvbnRleHQpCiAK IAkJLyogTG9va3VwIHR1cGRlc2MgaWYgZmlyc3QgdGltZSB0aHJvdWdoIG9yIGlmIHR5cGUg Y2hhbmdlcyAqLwogCQl0dXBEZXNjID0gZ2V0X2NhY2hlZF9yb3d0eXBlKHR1cFR5cGUsIHR1 cFR5cG1vZCwKLQkJCQkJCQkJCSAmb3AtPmQuZmllbGRzZWxlY3Qucm93Y2FjaGUsIE5VTEwp OworCQkJCQkJCQkJICZvcC0+ZmllbGRzZWxlY3Qucm93Y2FjaGUsIE5VTEwpOwogCiAJCS8q CiAJCSAqIEZpbmQgZmllbGQncyBhdHRyIHJlY29yZC4gIE5vdGUgd2UgZG9uJ3Qgc3VwcG9y dCBzeXN0ZW0gY29sdW1ucwpAQCAtMzgyMSwxMyArMzgyMSwxMyBAQCBFeGVjRXZhbEZpZWxk U2VsZWN0KEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsIEV4cHJDb250ZXh0 ICplY29udGV4dCkKIAogCQkvKiBDaGVjayBmb3IgdHlwZSBtaXNtYXRjaCAtLS0gcG9zc2li bGUgYWZ0ZXIgQUxURVIgQ09MVU1OIFRZUEU/ICovCiAJCS8qIEFzIGluIENoZWNrVmFyU2xv dENvbXBhdGliaWxpdHksIHdlIHNob3VsZCBidXQgY2FuJ3QgY2hlY2sgdHlwbW9kICovCi0J CWlmIChvcC0+ZC5maWVsZHNlbGVjdC5yZXN1bHR0eXBlICE9IGF0dHItPmF0dHR5cGlkKQor CQlpZiAob3AtPmZpZWxkc2VsZWN0LnJlc3VsdHR5cGUgIT0gYXR0ci0+YXR0dHlwaWQpCiAJ CQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01B VENIKSwKIAkJCQkJIGVycm1zZygiYXR0cmlidXRlICVkIGhhcyB3cm9uZyB0eXBlIiwgZmll bGRudW0pLAogCQkJCQkgZXJyZGV0YWlsKCJUYWJsZSBoYXMgdHlwZSAlcywgYnV0IHF1ZXJ5 IGV4cGVjdHMgJXMuIiwKIAkJCQkJCQkgICBmb3JtYXRfdHlwZV9iZShhdHRyLT5hdHR0eXBp ZCksCi0JCQkJCQkJICAgZm9ybWF0X3R5cGVfYmUob3AtPmQuZmllbGRzZWxlY3QucmVzdWx0 dHlwZSkpKSk7CisJCQkJCQkJICAgZm9ybWF0X3R5cGVfYmUob3AtPmZpZWxkc2VsZWN0LnJl c3VsdHR5cGUpKSkpOwogCiAJCS8qIGhlYXBfZ2V0YXR0ciBuZWVkcyBhIEhlYXBUdXBsZSBu b3QgYSBiYXJlIEhlYXBUdXBsZUhlYWRlciAqLwogCQl0bXB0dXAudF9sZW4gPSBIZWFwVHVw bGVIZWFkZXJHZXREYXR1bUxlbmd0aCh0dXBsZSk7CkBAIC0zODU2LDggKzM4NTYsOCBAQCBF eGVjRXZhbEZpZWxkU3RvcmVEZUZvcm0oRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVw ICpvcCwgRXhwckNvbnRleHQgKmVjb250ZQogCWlmICgqb3AtPnJlc251bGwpCiAJewogCQkv KiBDb252ZXJ0IG51bGwgaW5wdXQgdHVwbGUgaW50byBhbiBhbGwtbnVsbHMgcm93ICovCi0J CW1lbXNldChvcC0+ZC5maWVsZHN0b3JlLm51bGxzLCB0cnVlLAotCQkJICAgb3AtPmQuZmll bGRzdG9yZS5uY29sdW1ucyAqIHNpemVvZihib29sKSk7CisJCW1lbXNldChvcC0+ZmllbGRz dG9yZS5udWxscywgdHJ1ZSwKKwkJCSAgIG9wLT5maWVsZHN0b3JlLm5jb2x1bW5zICogc2l6 ZW9mKGJvb2wpKTsKIAl9CiAJZWxzZQogCXsKQEAgLTM4ODIsMTcgKzM4ODIsMTcgQEAgRXhl Y0V2YWxGaWVsZFN0b3JlRGVGb3JtKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAq b3AsIEV4cHJDb250ZXh0ICplY29udGUKIAkJICogZG9pbmcgRGF0dW1HZXRIZWFwVHVwbGVI ZWFkZXI6IHRoYXQgY291bGQgZG8gZGF0YWJhc2UgYWNjZXNzIHdoaWxlCiAJCSAqIGRldG9h c3RpbmcgdGhlIGRhdHVtLgogCQkgKi8KLQkJdHVwRGVzYyA9IGdldF9jYWNoZWRfcm93dHlw ZShvcC0+ZC5maWVsZHN0b3JlLmZzdG9yZS0+cmVzdWx0dHlwZSwgLTEsCi0JCQkJCQkJCQkg b3AtPmQuZmllbGRzdG9yZS5yb3djYWNoZSwgTlVMTCk7CisJCXR1cERlc2MgPSBnZXRfY2Fj aGVkX3Jvd3R5cGUob3AtPmZpZWxkc3RvcmUuZnN0b3JlLT5yZXN1bHR0eXBlLCAtMSwKKwkJ CQkJCQkJCSBvcC0+ZmllbGRzdG9yZS5yb3djYWNoZSwgTlVMTCk7CiAKIAkJLyogQ2hlY2sg dGhhdCBjdXJyZW50IHR1cGRlc2MgZG9lc24ndCBoYXZlIG1vcmUgZmllbGRzIHRoYW4gYWxs b2NhdGVkICovCi0JCWlmICh1bmxpa2VseSh0dXBEZXNjLT5uYXR0cyA+IG9wLT5kLmZpZWxk c3RvcmUubmNvbHVtbnMpKQorCQlpZiAodW5saWtlbHkodHVwRGVzYy0+bmF0dHMgPiBvcC0+ ZmllbGRzdG9yZS5uY29sdW1ucykpCiAJCQllbG9nKEVSUk9SLCAidG9vIG1hbnkgY29sdW1u cyBpbiBjb21wb3NpdGUgdHlwZSAldSIsCi0JCQkJIG9wLT5kLmZpZWxkc3RvcmUuZnN0b3Jl LT5yZXN1bHR0eXBlKTsKKwkJCQkgb3AtPmZpZWxkc3RvcmUuZnN0b3JlLT5yZXN1bHR0eXBl KTsKIAogCQloZWFwX2RlZm9ybV90dXBsZSgmdG1wdHVwLCB0dXBEZXNjLAotCQkJCQkJICBv cC0+ZC5maWVsZHN0b3JlLnZhbHVlcywKLQkJCQkJCSAgb3AtPmQuZmllbGRzdG9yZS5udWxs cyk7CisJCQkJCQkgIG9wLT5maWVsZHN0b3JlLnZhbHVlcywKKwkJCQkJCSAgb3AtPmZpZWxk c3RvcmUubnVsbHMpOwogCX0KIH0KIApAQCAtMzkwNywxMiArMzkwNywxMiBAQCBFeGVjRXZh bEZpZWxkU3RvcmVGb3JtKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsIEV4 cHJDb250ZXh0ICplY29udGV4dAogCUhlYXBUdXBsZQl0dXBsZTsKIAogCS8qIExvb2t1cCB0 dXBkZXNjIChzaG91bGQgYmUgdmFsaWQgYWxyZWFkeSkgKi8KLQl0dXBEZXNjID0gZ2V0X2Nh Y2hlZF9yb3d0eXBlKG9wLT5kLmZpZWxkc3RvcmUuZnN0b3JlLT5yZXN1bHR0eXBlLCAtMSwK LQkJCQkJCQkJIG9wLT5kLmZpZWxkc3RvcmUucm93Y2FjaGUsIE5VTEwpOworCXR1cERlc2Mg PSBnZXRfY2FjaGVkX3Jvd3R5cGUob3AtPmZpZWxkc3RvcmUuZnN0b3JlLT5yZXN1bHR0eXBl LCAtMSwKKwkJCQkJCQkJIG9wLT5maWVsZHN0b3JlLnJvd2NhY2hlLCBOVUxMKTsKIAogCXR1 cGxlID0gaGVhcF9mb3JtX3R1cGxlKHR1cERlc2MsCi0JCQkJCQkJb3AtPmQuZmllbGRzdG9y ZS52YWx1ZXMsCi0JCQkJCQkJb3AtPmQuZmllbGRzdG9yZS5udWxscyk7CisJCQkJCQkJb3At PmZpZWxkc3RvcmUudmFsdWVzLAorCQkJCQkJCW9wLT5maWVsZHN0b3JlLm51bGxzKTsKIAog CSpvcC0+cmVzdmFsdWUgPSBIZWFwVHVwbGVHZXREYXR1bSh0dXBsZSk7CiAJKm9wLT5yZXNu dWxsID0gZmFsc2U7CkBAIC0zOTQ3LDEyICszOTQ3LDEyIEBAIEV4ZWNFdmFsQ29udmVydFJv d3R5cGUoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwgRXhwckNvbnRleHQg KmVjb250ZXh0CiAJICogcGluIHRoZW0gc2luY2UgdHlwZSBjb252ZXJzaW9uIGZ1bmN0aW9u cyBjb3VsZCBkbyBjYXRhbG9nIGxvb2t1cHMgYW5kCiAJICogaGVuY2UgY2F1c2UgY2FjaGUg aW52YWxpZGF0aW9uLgogCSAqLwotCWluZGVzYyA9IGdldF9jYWNoZWRfcm93dHlwZShvcC0+ ZC5jb252ZXJ0X3Jvd3R5cGUuaW5wdXR0eXBlLCAtMSwKLQkJCQkJCQkJb3AtPmQuY29udmVy dF9yb3d0eXBlLmluY2FjaGUsCisJaW5kZXNjID0gZ2V0X2NhY2hlZF9yb3d0eXBlKG9wLT5j b252ZXJ0X3Jvd3R5cGUuaW5wdXR0eXBlLCAtMSwKKwkJCQkJCQkJb3AtPmNvbnZlcnRfcm93 dHlwZS5pbmNhY2hlLAogCQkJCQkJCQkmY2hhbmdlZCk7CiAJSW5jclR1cGxlRGVzY1JlZkNv dW50KGluZGVzYyk7Ci0Jb3V0ZGVzYyA9IGdldF9jYWNoZWRfcm93dHlwZShvcC0+ZC5jb252 ZXJ0X3Jvd3R5cGUub3V0cHV0dHlwZSwgLTEsCi0JCQkJCQkJCSBvcC0+ZC5jb252ZXJ0X3Jv d3R5cGUub3V0Y2FjaGUsCisJb3V0ZGVzYyA9IGdldF9jYWNoZWRfcm93dHlwZShvcC0+Y29u dmVydF9yb3d0eXBlLm91dHB1dHR5cGUsIC0xLAorCQkJCQkJCQkgb3AtPmNvbnZlcnRfcm93 dHlwZS5vdXRjYWNoZSwKIAkJCQkJCQkJICZjaGFuZ2VkKTsKIAlJbmNyVHVwbGVEZXNjUmVm Q291bnQob3V0ZGVzYyk7CiAKQEAgLTM5NzQsNyArMzk3NCw3IEBAIEV4ZWNFdmFsQ29udmVy dFJvd3R5cGUoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwgRXhwckNvbnRl eHQgKmVjb250ZXh0CiAJCW9sZF9jeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZWNvbnRl eHQtPmVjeHRfcGVyX3F1ZXJ5X21lbW9yeSk7CiAKIAkJLyogcHJlcGFyZSBtYXAgZnJvbSBv bGQgdG8gbmV3IGF0dHJpYnV0ZSBudW1iZXJzICovCi0JCW9wLT5kLmNvbnZlcnRfcm93dHlw ZS5tYXAgPSBjb252ZXJ0X3R1cGxlc19ieV9uYW1lKGluZGVzYywgb3V0ZGVzYyk7CisJCW9w LT5jb252ZXJ0X3Jvd3R5cGUubWFwID0gY29udmVydF90dXBsZXNfYnlfbmFtZShpbmRlc2Ms IG91dGRlc2MpOwogCiAJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRfY3h0KTsKIAl9CkBA IC0zOTgzLDEwICszOTgzLDEwIEBAIEV4ZWNFdmFsQ29udmVydFJvd3R5cGUoRXhwclN0YXRl ICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwgRXhwckNvbnRleHQgKmVjb250ZXh0CiAJdG1w dHVwLnRfbGVuID0gSGVhcFR1cGxlSGVhZGVyR2V0RGF0dW1MZW5ndGgodHVwbGUpOwogCXRt cHR1cC50X2RhdGEgPSB0dXBsZTsKIAotCWlmIChvcC0+ZC5jb252ZXJ0X3Jvd3R5cGUubWFw ICE9IE5VTEwpCisJaWYgKG9wLT5jb252ZXJ0X3Jvd3R5cGUubWFwICE9IE5VTEwpCiAJewog CQkvKiBGdWxsIGNvbnZlcnNpb24gd2l0aCBhdHRyaWJ1dGUgcmVhcnJhbmdlbWVudCBuZWVk ZWQgKi8KLQkJcmVzdWx0ID0gZXhlY3V0ZV9hdHRyX21hcF90dXBsZSgmdG1wdHVwLCBvcC0+ ZC5jb252ZXJ0X3Jvd3R5cGUubWFwKTsKKwkJcmVzdWx0ID0gZXhlY3V0ZV9hdHRyX21hcF90 dXBsZSgmdG1wdHVwLCBvcC0+Y29udmVydF9yb3d0eXBlLm1hcCk7CiAJCS8qIFJlc3VsdCBh bHJlYWR5IGhhcyBhcHByb3ByaWF0ZSBjb21wb3NpdGUtZGF0dW0gaGVhZGVyIGZpZWxkcyAq LwogCQkqb3AtPnJlc3ZhbHVlID0gSGVhcFR1cGxlR2V0RGF0dW0ocmVzdWx0KTsKIAl9CkBA IC00MDIyLDkgKzQwMjIsOSBAQCBFeGVjRXZhbENvbnZlcnRSb3d0eXBlKEV4cHJTdGF0ZSAq c3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsIEV4cHJDb250ZXh0ICplY29udGV4dAogdm9pZAog RXhlY0V2YWxTY2FsYXJBcnJheU9wKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAq b3ApCiB7Ci0JRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8gPSBvcC0+ZC5zY2FsYXJhcnJheW9w LmZjaW5mb19kYXRhOwotCWJvb2wJCXVzZU9yID0gb3AtPmQuc2NhbGFyYXJyYXlvcC51c2VP cjsKLQlib29sCQlzdHJpY3RmdW5jID0gb3AtPmQuc2NhbGFyYXJyYXlvcC5maW5mby0+Zm5f c3RyaWN0OworCUZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvID0gb3AtPnNjYWxhcmFycmF5b3Au ZmNpbmZvX2RhdGE7CisJYm9vbAkJdXNlT3IgPSBvcC0+c2NhbGFyYXJyYXlvcC51c2VPcjsK Kwlib29sCQlzdHJpY3RmdW5jID0gb3AtPnNjYWxhcmFycmF5b3AuZmluZm8tPmZuX3N0cmlj dDsKIAlBcnJheVR5cGUgICphcnI7CiAJaW50CQkJbml0ZW1zOwogCURhdHVtCQlyZXN1bHQ7 CkBAIC00MDc0LDE4ICs0MDc0LDE4IEBAIEV4ZWNFdmFsU2NhbGFyQXJyYXlPcChFeHByU3Rh dGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wKQogCSAqIFdlIGFycmFuZ2UgdG8gbG9vayB1 cCBpbmZvIGFib3V0IHRoZSBlbGVtZW50IHR5cGUgb25seSBvbmNlIHBlciBzZXJpZXMKIAkg KiBvZiBjYWxscywgYXNzdW1pbmcgdGhlIGVsZW1lbnQgdHlwZSBkb2Vzbid0IGNoYW5nZSB1 bmRlcm5lYXRoIHVzLgogCSAqLwotCWlmIChvcC0+ZC5zY2FsYXJhcnJheW9wLmVsZW1lbnRf dHlwZSAhPSBBUlJfRUxFTVRZUEUoYXJyKSkKKwlpZiAob3AtPnNjYWxhcmFycmF5b3AuZWxl bWVudF90eXBlICE9IEFSUl9FTEVNVFlQRShhcnIpKQogCXsKIAkJZ2V0X3R5cGxlbmJ5dmFs YWxpZ24oQVJSX0VMRU1UWVBFKGFyciksCi0JCQkJCQkJICZvcC0+ZC5zY2FsYXJhcnJheW9w LnR5cGxlbiwKLQkJCQkJCQkgJm9wLT5kLnNjYWxhcmFycmF5b3AudHlwYnl2YWwsCi0JCQkJ CQkJICZvcC0+ZC5zY2FsYXJhcnJheW9wLnR5cGFsaWduKTsKLQkJb3AtPmQuc2NhbGFyYXJy YXlvcC5lbGVtZW50X3R5cGUgPSBBUlJfRUxFTVRZUEUoYXJyKTsKKwkJCQkJCQkgJm9wLT5z Y2FsYXJhcnJheW9wLnR5cGxlbiwKKwkJCQkJCQkgJm9wLT5zY2FsYXJhcnJheW9wLnR5cGJ5 dmFsLAorCQkJCQkJCSAmb3AtPnNjYWxhcmFycmF5b3AudHlwYWxpZ24pOworCQlvcC0+c2Nh bGFyYXJyYXlvcC5lbGVtZW50X3R5cGUgPSBBUlJfRUxFTVRZUEUoYXJyKTsKIAl9CiAKLQl0 eXBsZW4gPSBvcC0+ZC5zY2FsYXJhcnJheW9wLnR5cGxlbjsKLQl0eXBieXZhbCA9IG9wLT5k LnNjYWxhcmFycmF5b3AudHlwYnl2YWw7Ci0JdHlwYWxpZ24gPSBvcC0+ZC5zY2FsYXJhcnJh eW9wLnR5cGFsaWduOworCXR5cGxlbiA9IG9wLT5zY2FsYXJhcnJheW9wLnR5cGxlbjsKKwl0 eXBieXZhbCA9IG9wLT5zY2FsYXJhcnJheW9wLnR5cGJ5dmFsOworCXR5cGFsaWduID0gb3At PnNjYWxhcmFycmF5b3AudHlwYWxpZ247CiAKIAkvKiBJbml0aWFsaXplIHJlc3VsdCBhcHBy b3ByaWF0ZWx5IGRlcGVuZGluZyBvbiB1c2VPciAqLwogCXJlc3VsdCA9IEJvb2xHZXREYXR1 bSghdXNlT3IpOwpAQCAtNDEyNSw3ICs0MTI1LDcgQEAgRXhlY0V2YWxTY2FsYXJBcnJheU9w KEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3ApCiAJCWVsc2UKIAkJewogCQkJ ZmNpbmZvLT5pc251bGwgPSBmYWxzZTsKLQkJCXRoaXNyZXN1bHQgPSBvcC0+ZC5zY2FsYXJh cnJheW9wLmZuX2FkZHIoZmNpbmZvKTsKKwkJCXRoaXNyZXN1bHQgPSBvcC0+c2NhbGFyYXJy YXlvcC5mbl9hZGRyKGZjaW5mbyk7CiAJCX0KIAogCQkvKiBDb21iaW5lIHJlc3VsdHMgcGVy IE9SIG9yIEFORCBzZW1hbnRpY3MgKi8KQEAgLTQxOTcsMTQgKzQxOTcsMTQgQEAgc2FvcF9o YXNoX2VsZW1lbnRfbWF0Y2goc3RydWN0IHNhb3BoYXNoX2hhc2ggKnRiLCBEYXR1bSBrZXkx LCBEYXR1bSBrZXkyKQogCURhdHVtCQlyZXN1bHQ7CiAKIAlTY2FsYXJBcnJheU9wRXhwckhh c2hUYWJsZSAqZWxlbWVudHNfdGFiID0gKFNjYWxhckFycmF5T3BFeHBySGFzaFRhYmxlICop IHRiLT5wcml2YXRlX2RhdGE7Ci0JRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8gPSBlbGVtZW50 c190YWItPm9wLT5kLmhhc2hlZHNjYWxhcmFycmF5b3AuZmNpbmZvX2RhdGE7CisJRnVuY3Rp b25DYWxsSW5mbyBmY2luZm8gPSBlbGVtZW50c190YWItPm9wLT5oYXNoZWRzY2FsYXJhcnJh eW9wLmZjaW5mb19kYXRhOwogCiAJZmNpbmZvLT5hcmdzWzBdLnZhbHVlID0ga2V5MTsKIAlm Y2luZm8tPmFyZ3NbMF0uaXNudWxsID0gZmFsc2U7CiAJZmNpbmZvLT5hcmdzWzFdLnZhbHVl ID0ga2V5MjsKIAlmY2luZm8tPmFyZ3NbMV0uaXNudWxsID0gZmFsc2U7CiAKLQlyZXN1bHQg PSBlbGVtZW50c190YWItPm9wLT5kLmhhc2hlZHNjYWxhcmFycmF5b3AuZmluZm8tPmZuX2Fk ZHIoZmNpbmZvKTsKKwlyZXN1bHQgPSBlbGVtZW50c190YWItPm9wLT5oYXNoZWRzY2FsYXJh cnJheW9wLmZpbmZvLT5mbl9hZGRyKGZjaW5mbyk7CiAKIAlyZXR1cm4gRGF0dW1HZXRCb29s KHJlc3VsdCk7CiB9CkBAIC00MjI1LDEwICs0MjI1LDEwIEBAIHNhb3BfaGFzaF9lbGVtZW50 X21hdGNoKHN0cnVjdCBzYW9waGFzaF9oYXNoICp0YiwgRGF0dW0ga2V5MSwgRGF0dW0ga2V5 MikKIHZvaWQKIEV4ZWNFdmFsSGFzaGVkU2NhbGFyQXJyYXlPcChFeHByU3RhdGUgKnN0YXRl LCBFeHByRXZhbFN0ZXAgKm9wLCBFeHByQ29udGV4dCAqZWNvbnRleHQpCiB7Ci0JU2NhbGFy QXJyYXlPcEV4cHJIYXNoVGFibGUgKmVsZW1lbnRzX3RhYiA9IG9wLT5kLmhhc2hlZHNjYWxh cmFycmF5b3AuZWxlbWVudHNfdGFiOwotCUZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvID0gb3At PmQuaGFzaGVkc2NhbGFyYXJyYXlvcC5mY2luZm9fZGF0YTsKLQlib29sCQlpbmNsYXVzZSA9 IG9wLT5kLmhhc2hlZHNjYWxhcmFycmF5b3AuaW5jbGF1c2U7Ci0JYm9vbAkJc3RyaWN0ZnVu YyA9IG9wLT5kLmhhc2hlZHNjYWxhcmFycmF5b3AuZmluZm8tPmZuX3N0cmljdDsKKwlTY2Fs YXJBcnJheU9wRXhwckhhc2hUYWJsZSAqZWxlbWVudHNfdGFiID0gb3AtPmhhc2hlZHNjYWxh cmFycmF5b3AuZWxlbWVudHNfdGFiOworCUZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvID0gb3At Pmhhc2hlZHNjYWxhcmFycmF5b3AuZmNpbmZvX2RhdGE7CisJYm9vbAkJaW5jbGF1c2UgPSBv cC0+aGFzaGVkc2NhbGFyYXJyYXlvcC5pbmNsYXVzZTsKKwlib29sCQlzdHJpY3RmdW5jID0g b3AtPmhhc2hlZHNjYWxhcmFycmF5b3AuZmluZm8tPmZuX3N0cmljdDsKIAlEYXR1bQkJc2Nh bGFyID0gZmNpbmZvLT5hcmdzWzBdLnZhbHVlOwogCWJvb2wJCXNjYWxhcl9pc251bGwgPSBm Y2luZm8tPmFyZ3NbMF0uaXNudWxsOwogCURhdHVtCQlyZXN1bHQ7CkBAIC00MjYzLDcgKzQy NjMsNyBAQCBFeGVjRXZhbEhhc2hlZFNjYWxhckFycmF5T3AoRXhwclN0YXRlICpzdGF0ZSwg RXhwckV2YWxTdGVwICpvcCwgRXhwckNvbnRleHQgKmVjbwogCQlNZW1vcnlDb250ZXh0IG9s ZGNvbnRleHQ7CiAJCUFycmF5VHlwZSAgKmFycjsKIAotCQlzYW9wID0gb3AtPmQuaGFzaGVk c2NhbGFyYXJyYXlvcC5zYW9wOworCQlzYW9wID0gb3AtPmhhc2hlZHNjYWxhcmFycmF5b3Au c2FvcDsKIAogCQlhcnIgPSBEYXR1bUdldEFycmF5VHlwZVAoKm9wLT5yZXN2YWx1ZSk7CiAJ CW5pdGVtcyA9IEFycmF5R2V0Tkl0ZW1zKEFSUl9ORElNKGFyciksIEFSUl9ESU1TKGFycikp OwpAQCAtNDI3OCw3ICs0Mjc4LDcgQEAgRXhlY0V2YWxIYXNoZWRTY2FsYXJBcnJheU9wKEV4 cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsIEV4cHJDb250ZXh0ICplY28KIAkJ ZWxlbWVudHNfdGFiID0gKFNjYWxhckFycmF5T3BFeHBySGFzaFRhYmxlICopCiAJCQlwYWxs b2MwKG9mZnNldG9mKFNjYWxhckFycmF5T3BFeHBySGFzaFRhYmxlLCBoYXNoX2ZjaW5mb19k YXRhKSArCiAJCQkJCVNpemVGb3JGdW5jdGlvbkNhbGxJbmZvKDEpKTsKLQkJb3AtPmQuaGFz aGVkc2NhbGFyYXJyYXlvcC5lbGVtZW50c190YWIgPSBlbGVtZW50c190YWI7CisJCW9wLT5o YXNoZWRzY2FsYXJhcnJheW9wLmVsZW1lbnRzX3RhYiA9IGVsZW1lbnRzX3RhYjsKIAkJZWxl bWVudHNfdGFiLT5vcCA9IG9wOwogCiAJCWZtZ3JfaW5mbyhzYW9wLT5oYXNoZnVuY2lkLCAm ZWxlbWVudHNfdGFiLT5oYXNoX2ZpbmZvKTsKQEAgLTQzMzksNyArNDMzOSw3IEBAIEV4ZWNF dmFsSGFzaGVkU2NhbGFyQXJyYXlPcChFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAg Km9wLCBFeHByQ29udGV4dCAqZWNvCiAJCSAqIFJlbWVtYmVyIGlmIHdlIGhhZCBhbnkgbnVs bHMgc28gdGhhdCB3ZSBrbm93IGlmIHdlIG5lZWQgdG8gZXhlY3V0ZQogCQkgKiBub24tc3Ry aWN0IGZ1bmN0aW9ucyB3aXRoIGEgbnVsbCBsaHMgdmFsdWUgaWYgbm8gbWF0Y2ggaXMgZm91 bmQuCiAJCSAqLwotCQlvcC0+ZC5oYXNoZWRzY2FsYXJhcnJheW9wLmhhc19udWxscyA9IGhh c19udWxsczsKKwkJb3AtPmhhc2hlZHNjYWxhcmFycmF5b3AuaGFzX251bGxzID0gaGFzX251 bGxzOwogCX0KIAogCS8qIENoZWNrIHRoZSBoYXNoIHRvIHNlZSBpZiB3ZSBoYXZlIGEgbWF0 Y2guICovCkBAIC00MzU5LDcgKzQzNTksNyBAQCBFeGVjRXZhbEhhc2hlZFNjYWxhckFycmF5 T3AoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwgRXhwckNvbnRleHQgKmVj bwogCSAqIGhhc2h0YWJsZSwgYnV0IGluc3RlYWQgbWFya2VkIGlmIHdlIGZvdW5kIGFueSB3 aGVuIGJ1aWxkaW5nIHRoZSB0YWJsZQogCSAqIGluIGhhc19udWxscy4KIAkgKi8KLQlpZiAo IWhhc2hmb3VuZCAmJiBvcC0+ZC5oYXNoZWRzY2FsYXJhcnJheW9wLmhhc19udWxscykKKwlp ZiAoIWhhc2hmb3VuZCAmJiBvcC0+aGFzaGVkc2NhbGFyYXJyYXlvcC5oYXNfbnVsbHMpCiAJ ewogCQlpZiAoc3RyaWN0ZnVuYykKIAkJewpAQCAtNDM4NSw3ICs0Mzg1LDcgQEAgRXhlY0V2 YWxIYXNoZWRTY2FsYXJBcnJheU9wKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAq b3AsIEV4cHJDb250ZXh0ICplY28KIAkJCWZjaW5mby0+YXJnc1sxXS52YWx1ZSA9IChEYXR1 bSkgMDsKIAkJCWZjaW5mby0+YXJnc1sxXS5pc251bGwgPSB0cnVlOwogCi0JCQlyZXN1bHQg PSBvcC0+ZC5oYXNoZWRzY2FsYXJhcnJheW9wLmZpbmZvLT5mbl9hZGRyKGZjaW5mbyk7CisJ CQlyZXN1bHQgPSBvcC0+aGFzaGVkc2NhbGFyYXJyYXlvcC5maW5mby0+Zm5fYWRkcihmY2lu Zm8pOwogCQkJcmVzdWx0bnVsbCA9IGZjaW5mby0+aXNudWxsOwogCiAJCQkvKgpAQCAtNDQw OCwxMSArNDQwOCwxMSBAQCB2b2lkCiBFeGVjRXZhbENvbnN0cmFpbnROb3ROdWxsKEV4cHJT dGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3ApCiB7CiAJaWYgKCpvcC0+cmVzbnVsbCkK LQkJZXJyc2F2ZSgoTm9kZSAqKSBvcC0+ZC5kb21haW5jaGVjay5lc2NvbnRleHQsCisJCWVy cnNhdmUoKE5vZGUgKikgb3AtPmRvbWFpbmNoZWNrLmVzY29udGV4dCwKIAkJCQkoZXJyY29k ZShFUlJDT0RFX05PVF9OVUxMX1ZJT0xBVElPTiksCiAJCQkJIGVycm1zZygiZG9tYWluICVz IGRvZXMgbm90IGFsbG93IG51bGwgdmFsdWVzIiwKLQkJCQkJCWZvcm1hdF90eXBlX2JlKG9w LT5kLmRvbWFpbmNoZWNrLnJlc3VsdHR5cGUpKSwKLQkJCQkgZXJyZGF0YXR5cGUob3AtPmQu ZG9tYWluY2hlY2sucmVzdWx0dHlwZSkpKTsKKwkJCQkJCWZvcm1hdF90eXBlX2JlKG9wLT5k b21haW5jaGVjay5yZXN1bHR0eXBlKSksCisJCQkJIGVycmRhdGF0eXBlKG9wLT5kb21haW5j aGVjay5yZXN1bHR0eXBlKSkpOwogfQogCiAvKgpAQCAtNDQyMSwxNSArNDQyMSwxNSBAQCBF eGVjRXZhbENvbnN0cmFpbnROb3ROdWxsKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3Rl cCAqb3ApCiB2b2lkCiBFeGVjRXZhbENvbnN0cmFpbnRDaGVjayhFeHByU3RhdGUgKnN0YXRl LCBFeHByRXZhbFN0ZXAgKm9wKQogewotCWlmICghKm9wLT5kLmRvbWFpbmNoZWNrLmNoZWNr bnVsbCAmJgotCQkhRGF0dW1HZXRCb29sKCpvcC0+ZC5kb21haW5jaGVjay5jaGVja3ZhbHVl KSkKLQkJZXJyc2F2ZSgoTm9kZSAqKSBvcC0+ZC5kb21haW5jaGVjay5lc2NvbnRleHQsCisJ aWYgKCEqb3AtPmRvbWFpbmNoZWNrLmNoZWNrbnVsbCAmJgorCQkhRGF0dW1HZXRCb29sKCpv cC0+ZG9tYWluY2hlY2suY2hlY2t2YWx1ZSkpCisJCWVycnNhdmUoKE5vZGUgKikgb3AtPmRv bWFpbmNoZWNrLmVzY29udGV4dCwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0NIRUNLX1ZJT0xB VElPTiksCiAJCQkJIGVycm1zZygidmFsdWUgZm9yIGRvbWFpbiAlcyB2aW9sYXRlcyBjaGVj ayBjb25zdHJhaW50IFwiJXNcIiIsCi0JCQkJCQlmb3JtYXRfdHlwZV9iZShvcC0+ZC5kb21h aW5jaGVjay5yZXN1bHR0eXBlKSwKLQkJCQkJCW9wLT5kLmRvbWFpbmNoZWNrLmNvbnN0cmFp bnRuYW1lKSwKLQkJCQkgZXJyZG9tYWluY29uc3RyYWludChvcC0+ZC5kb21haW5jaGVjay5y ZXN1bHR0eXBlLAotCQkJCQkJCQkJIG9wLT5kLmRvbWFpbmNoZWNrLmNvbnN0cmFpbnRuYW1l KSkpOworCQkJCQkJZm9ybWF0X3R5cGVfYmUob3AtPmRvbWFpbmNoZWNrLnJlc3VsdHR5cGUp LAorCQkJCQkJb3AtPmRvbWFpbmNoZWNrLmNvbnN0cmFpbnRuYW1lKSwKKwkJCQkgZXJyZG9t YWluY29uc3RyYWludChvcC0+ZG9tYWluY2hlY2sucmVzdWx0dHlwZSwKKwkJCQkJCQkJCSBv cC0+ZG9tYWluY2hlY2suY29uc3RyYWludG5hbWUpKSk7CiB9CiAKIC8qCkBAIC00NDQxLDcg KzQ0NDEsNyBAQCBFeGVjRXZhbENvbnN0cmFpbnRDaGVjayhFeHByU3RhdGUgKnN0YXRlLCBF eHByRXZhbFN0ZXAgKm9wKQogdm9pZAogRXhlY0V2YWxYbWxFeHByKEV4cHJTdGF0ZSAqc3Rh dGUsIEV4cHJFdmFsU3RlcCAqb3ApCiB7Ci0JWG1sRXhwciAgICAqeGV4cHIgPSBvcC0+ZC54 bWxleHByLnhleHByOworCVhtbEV4cHIgICAgKnhleHByID0gb3AtPnhtbGV4cHIueGV4cHI7 CiAJRGF0dW0JCXZhbHVlOwogCiAJKm9wLT5yZXNudWxsID0gdHJ1ZTsJCS8qIHVudGlsIHdl IGdldCBhIHJlc3VsdCAqLwpAQCAtNDQ1MSw4ICs0NDUxLDggQEAgRXhlY0V2YWxYbWxFeHBy KEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3ApCiAJewogCQljYXNlIElTX1hN TENPTkNBVDoKIAkJCXsKLQkJCQlEYXR1bQkgICAqYXJndmFsdWUgPSBvcC0+ZC54bWxleHBy LmFyZ3ZhbHVlOwotCQkJCWJvb2wJICAgKmFyZ251bGwgPSBvcC0+ZC54bWxleHByLmFyZ251 bGw7CisJCQkJRGF0dW0JICAgKmFyZ3ZhbHVlID0gb3AtPnhtbGV4cHIuYXJndmFsdWU7CisJ CQkJYm9vbAkgICAqYXJnbnVsbCA9IG9wLT54bWxleHByLmFyZ251bGw7CiAJCQkJTGlzdAkg ICAqdmFsdWVzID0gTklMOwogCiAJCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBsaXN0X2xlbmd0 aCh4ZXhwci0+YXJncyk7IGkrKykKQEAgLTQ0NzEsOCArNDQ3MSw4IEBAIEV4ZWNFdmFsWG1s RXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wKQogCiAJCWNhc2UgSVNf WE1MRk9SRVNUOgogCQkJewotCQkJCURhdHVtCSAgICphcmd2YWx1ZSA9IG9wLT5kLnhtbGV4 cHIubmFtZWRfYXJndmFsdWU7Ci0JCQkJYm9vbAkgICAqYXJnbnVsbCA9IG9wLT5kLnhtbGV4 cHIubmFtZWRfYXJnbnVsbDsKKwkJCQlEYXR1bQkgICAqYXJndmFsdWUgPSBvcC0+eG1sZXhw ci5uYW1lZF9hcmd2YWx1ZTsKKwkJCQlib29sCSAgICphcmdudWxsID0gb3AtPnhtbGV4cHIu bmFtZWRfYXJnbnVsbDsKIAkJCQlTdHJpbmdJbmZvRGF0YSBidWY7CiAJCQkJTGlzdENlbGwg ICAqbGM7CiAJCQkJTGlzdENlbGwgICAqbGMyOwpAQCAtNDUxMywxNyArNDUxMywxNyBAQCBF eGVjRXZhbFhtbEV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCkKIAog CQljYXNlIElTX1hNTEVMRU1FTlQ6CiAJCQkqb3AtPnJlc3ZhbHVlID0gUG9pbnRlckdldERh dHVtKHhtbGVsZW1lbnQoeGV4cHIsCi0JCQkJCQkJCQkJCQkJICAgb3AtPmQueG1sZXhwci5u YW1lZF9hcmd2YWx1ZSwKLQkJCQkJCQkJCQkJCQkgICBvcC0+ZC54bWxleHByLm5hbWVkX2Fy Z251bGwsCi0JCQkJCQkJCQkJCQkJICAgb3AtPmQueG1sZXhwci5hcmd2YWx1ZSwKLQkJCQkJ CQkJCQkJCQkgICBvcC0+ZC54bWxleHByLmFyZ251bGwpKTsKKwkJCQkJCQkJCQkJCQkgICBv cC0+eG1sZXhwci5uYW1lZF9hcmd2YWx1ZSwKKwkJCQkJCQkJCQkJCQkgICBvcC0+eG1sZXhw ci5uYW1lZF9hcmdudWxsLAorCQkJCQkJCQkJCQkJCSAgIG9wLT54bWxleHByLmFyZ3ZhbHVl LAorCQkJCQkJCQkJCQkJCSAgIG9wLT54bWxleHByLmFyZ251bGwpKTsKIAkJCSpvcC0+cmVz bnVsbCA9IGZhbHNlOwogCQkJYnJlYWs7CiAKIAkJY2FzZSBJU19YTUxQQVJTRToKIAkJCXsK LQkJCQlEYXR1bQkgICAqYXJndmFsdWUgPSBvcC0+ZC54bWxleHByLmFyZ3ZhbHVlOwotCQkJ CWJvb2wJICAgKmFyZ251bGwgPSBvcC0+ZC54bWxleHByLmFyZ251bGw7CisJCQkJRGF0dW0J ICAgKmFyZ3ZhbHVlID0gb3AtPnhtbGV4cHIuYXJndmFsdWU7CisJCQkJYm9vbAkgICAqYXJn bnVsbCA9IG9wLT54bWxleHByLmFyZ251bGw7CiAJCQkJdGV4dAkgICAqZGF0YTsKIAkJCQli b29sCQlwcmVzZXJ2ZV93aGl0ZXNwYWNlOwogCkBAIC00NTU3LDExICs0NTU3LDExIEBAIEV4 ZWNFdmFsWG1sRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wKQogCiAJ CQkJaWYgKHhleHByLT5hcmdzKQogCQkJCXsKLQkJCQkJaXNudWxsID0gb3AtPmQueG1sZXhw ci5hcmdudWxsWzBdOworCQkJCQlpc251bGwgPSBvcC0+eG1sZXhwci5hcmdudWxsWzBdOwog CQkJCQlpZiAoaXNudWxsKQogCQkJCQkJYXJnID0gTlVMTDsKIAkJCQkJZWxzZQotCQkJCQkJ YXJnID0gRGF0dW1HZXRUZXh0UFAob3AtPmQueG1sZXhwci5hcmd2YWx1ZVswXSk7CisJCQkJ CQlhcmcgPSBEYXR1bUdldFRleHRQUChvcC0+eG1sZXhwci5hcmd2YWx1ZVswXSk7CiAJCQkJ fQogCQkJCWVsc2UKIAkJCQl7CkBAIC00NTc4LDggKzQ1NzgsOCBAQCBFeGVjRXZhbFhtbEV4 cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCkKIAogCQljYXNlIElTX1hN TFJPT1Q6CiAJCQl7Ci0JCQkJRGF0dW0JICAgKmFyZ3ZhbHVlID0gb3AtPmQueG1sZXhwci5h cmd2YWx1ZTsKLQkJCQlib29sCSAgICphcmdudWxsID0gb3AtPmQueG1sZXhwci5hcmdudWxs OworCQkJCURhdHVtCSAgICphcmd2YWx1ZSA9IG9wLT54bWxleHByLmFyZ3ZhbHVlOworCQkJ CWJvb2wJICAgKmFyZ251bGwgPSBvcC0+eG1sZXhwci5hcmdudWxsOwogCQkJCXhtbHR5cGUg ICAgKmRhdGE7CiAJCQkJdGV4dAkgICAqdmVyc2lvbjsKIAkJCQlpbnQJCQlzdGFuZGFsb25l OwpAQCAtNDYwOCw4ICs0NjA4LDggQEAgRXhlY0V2YWxYbWxFeHByKEV4cHJTdGF0ZSAqc3Rh dGUsIEV4cHJFdmFsU3RlcCAqb3ApCiAKIAkJY2FzZSBJU19YTUxTRVJJQUxJWkU6CiAJCQl7 Ci0JCQkJRGF0dW0JICAgKmFyZ3ZhbHVlID0gb3AtPmQueG1sZXhwci5hcmd2YWx1ZTsKLQkJ CQlib29sCSAgICphcmdudWxsID0gb3AtPmQueG1sZXhwci5hcmdudWxsOworCQkJCURhdHVt CSAgICphcmd2YWx1ZSA9IG9wLT54bWxleHByLmFyZ3ZhbHVlOworCQkJCWJvb2wJICAgKmFy Z251bGwgPSBvcC0+eG1sZXhwci5hcmdudWxsOwogCiAJCQkJLyogYXJndW1lbnQgdHlwZSBp cyBrbm93biB0byBiZSB4bWwgKi8KIAkJCQlBc3NlcnQobGlzdF9sZW5ndGgoeGV4cHItPmFy Z3MpID09IDEpOwpAQCAtNDYyOCw4ICs0NjI4LDggQEAgRXhlY0V2YWxYbWxFeHByKEV4cHJT dGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3ApCiAKIAkJY2FzZSBJU19ET0NVTUVOVDoK IAkJCXsKLQkJCQlEYXR1bQkgICAqYXJndmFsdWUgPSBvcC0+ZC54bWxleHByLmFyZ3ZhbHVl OwotCQkJCWJvb2wJICAgKmFyZ251bGwgPSBvcC0+ZC54bWxleHByLmFyZ251bGw7CisJCQkJ RGF0dW0JICAgKmFyZ3ZhbHVlID0gb3AtPnhtbGV4cHIuYXJndmFsdWU7CisJCQkJYm9vbAkg ICAqYXJnbnVsbCA9IG9wLT54bWxleHByLmFyZ251bGw7CiAKIAkJCQkvKiBvcHRpb25hbCBh cmd1bWVudCBpcyBrbm93biB0byBiZSB4bWwgKi8KIAkJCQlBc3NlcnQobGlzdF9sZW5ndGgo eGV4cHItPmFyZ3MpID09IDEpOwpAQCAtNDY1OCw3ICs0NjU4LDcgQEAgRXhlY0V2YWxKc29u Q29uc3RydWN0b3IoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwKIAkJCQkJ CUV4cHJDb250ZXh0ICplY29udGV4dCkKIHsKIAlEYXR1bQkJcmVzOwotCUpzb25Db25zdHJ1 Y3RvckV4cHJTdGF0ZSAqamNzdGF0ZSA9IG9wLT5kLmpzb25fY29uc3RydWN0b3IuamNzdGF0 ZTsKKwlKc29uQ29uc3RydWN0b3JFeHByU3RhdGUgKmpjc3RhdGUgPSBvcC0+anNvbl9jb25z dHJ1Y3Rvci5qY3N0YXRlOwogCUpzb25Db25zdHJ1Y3RvckV4cHIgKmN0b3IgPSBqY3N0YXRl LT5jb25zdHJ1Y3RvcjsKIAlib29sCQlpc19qc29uYiA9IGN0b3ItPnJldHVybmluZy0+Zm9y bWF0LT5mb3JtYXRfdHlwZSA9PSBKU19GT1JNQVRfSlNPTkI7CiAJYm9vbAkJaXNudWxsID0g ZmFsc2U7CkBAIC00NzM0LDcgKzQ3MzQsNyBAQCBFeGVjRXZhbEpzb25Db25zdHJ1Y3RvcihF eHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLAogdm9pZAogRXhlY0V2YWxKc29u SXNQcmVkaWNhdGUoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCkKIHsKLQlK c29uSXNQcmVkaWNhdGUgKnByZWQgPSBvcC0+ZC5pc19qc29uLnByZWQ7CisJSnNvbklzUHJl ZGljYXRlICpwcmVkID0gb3AtPmlzX2pzb24ucHJlZDsKIAlEYXR1bQkJanMgPSAqb3AtPnJl c3ZhbHVlOwogCU9pZAkJCWV4cHJ0eXBlOwogCWJvb2wJCXJlczsKQEAgLTQ4MTgsNyArNDgx OCw3IEBAIEV4ZWNFdmFsSnNvbklzUHJlZGljYXRlKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJF dmFsU3RlcCAqb3ApCiAKIC8qCiAgKiBFdmFsdWF0ZSBhIGpzb25wYXRoIGFnYWluc3QgYSBk b2N1bWVudCwgYm90aCBvZiB3aGljaCBtdXN0IGhhdmUgYmVlbgotICogZXZhbHVhdGVkIGFu ZCB0aGVpciB2YWx1ZXMgc2F2ZWQgaW4gb3AtPmQuanNvbmV4cHIuanNlc3RhdGUuCisgKiBl dmFsdWF0ZWQgYW5kIHRoZWlyIHZhbHVlcyBzYXZlZCBpbiBvcC0+anNvbmV4cHIuanNlc3Rh dGUuCiAgKgogICogSWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyBKc29uUGF0aCogZXZhbHVh dGlvbiBvciB3aGVuIGNvZXJjaW5nIGl0cyByZXN1bHQKICAqIHRvIHRoZSBSRVRVUk5JTkcg dHlwZSwgSnNvbkV4cHJTdGF0ZS5lcnJvciBpcyBzZXQgdG8gdHJ1ZSwgcHJvdmlkZWQgdGhl CkBAIC00ODI5LDEzICs0ODI5LDEzIEBAIEV4ZWNFdmFsSnNvbklzUHJlZGljYXRlKEV4cHJT dGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3ApCiAgKgogICogUmV0dXJuIHZhbHVlIGlz IHRoZSBzdGVwIGFkZHJlc3MgdG8gYmUgcGVyZm9ybWVkIG5leHQuICBJdCB3aWxsIGJlIG9u ZSBvZgogICoganVtcF9lcnJvciwganVtcF9lbXB0eSwganVtcF9ldmFsX2NvZXJjaW9uLCBv ciBqdW1wX2VuZCwgYWxsIGdpdmVuIGluCi0gKiBvcC0+ZC5qc29uZXhwci5qc2VzdGF0ZS4K KyAqIG9wLT5qc29uZXhwci5qc2VzdGF0ZS4KICAqLwogaW50CiBFeGVjRXZhbEpzb25FeHBy UGF0aChFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLAogCQkJCQkgRXhwckNv bnRleHQgKmVjb250ZXh0KQogewotCUpzb25FeHByU3RhdGUgKmpzZXN0YXRlID0gb3AtPmQu anNvbmV4cHIuanNlc3RhdGU7CisJSnNvbkV4cHJTdGF0ZSAqanNlc3RhdGUgPSBvcC0+anNv bmV4cHIuanNlc3RhdGU7CiAJSnNvbkV4cHIgICAqanNleHByID0ganNlc3RhdGUtPmpzZXhw cjsKIAlEYXR1bQkJaXRlbTsKIAlKc29uUGF0aCAgICpwYXRoOwpAQCAtNTExMiw3ICs1MTEy LDcgQEAgdm9pZAogRXhlY0V2YWxKc29uQ29lcmNpb24oRXhwclN0YXRlICpzdGF0ZSwgRXhw ckV2YWxTdGVwICpvcCwKIAkJCQkJIEV4cHJDb250ZXh0ICplY29udGV4dCkKIHsKLQlFcnJv clNhdmVDb250ZXh0ICplc2NvbnRleHQgPSBvcC0+ZC5qc29uZXhwcl9jb2VyY2lvbi5lc2Nv bnRleHQ7CisJRXJyb3JTYXZlQ29udGV4dCAqZXNjb250ZXh0ID0gb3AtPmpzb25leHByX2Nv ZXJjaW9uLmVzY29udGV4dDsKIAogCS8qCiAJICogUHJlcGFyZSB0byBjYWxsIGpzb25fcG9w dWxhdGVfdHlwZSgpIHRvIGNvZXJjZSB0aGUgYm9vbGVhbiByZXN1bHQgb2YKQEAgLTUxMjQs MTUgKzUxMjQsMTUgQEAgRXhlY0V2YWxKc29uQ29lcmNpb24oRXhwclN0YXRlICpzdGF0ZSwg RXhwckV2YWxTdGVwICpvcCwKIAkgKiBmb3IgaW50ZWdlciBhbmQgZG9tYWlucyB0aGVyZW9m IGFzIGl0IHNlZW1zIGNvbW1vbiB0byB1c2UgdGhvc2UgdHlwZXMKIAkgKiBmb3IgRVhJU1RT IGNvbHVtbnMgaW4gSlNPTl9UQUJMRSgpLgogCSAqLwotCWlmIChvcC0+ZC5qc29uZXhwcl9j b2VyY2lvbi5leGlzdHNfY29lcmNlKQorCWlmIChvcC0+anNvbmV4cHJfY29lcmNpb24uZXhp c3RzX2NvZXJjZSkKIAl7Ci0JCWlmIChvcC0+ZC5qc29uZXhwcl9jb2VyY2lvbi5leGlzdHNf Y2FzdF90b19pbnQpCisJCWlmIChvcC0+anNvbmV4cHJfY29lcmNpb24uZXhpc3RzX2Nhc3Rf dG9faW50KQogCQl7CiAJCQkvKiBDaGVjayBkb21haW4gY29uc3RyYWludHMgaWYgYW55LiAq LwotCQkJaWYgKG9wLT5kLmpzb25leHByX2NvZXJjaW9uLmV4aXN0c19jaGVja19kb21haW4g JiYKKwkJCWlmIChvcC0+anNvbmV4cHJfY29lcmNpb24uZXhpc3RzX2NoZWNrX2RvbWFpbiAm JgogCQkJCSFkb21haW5fY2hlY2tfc2FmZSgqb3AtPnJlc3ZhbHVlLCAqb3AtPnJlc251bGws Ci0JCQkJCQkJCSAgIG9wLT5kLmpzb25leHByX2NvZXJjaW9uLnRhcmdldHR5cGUsCi0JCQkJ CQkJCSAgICZvcC0+ZC5qc29uZXhwcl9jb2VyY2lvbi5qc29uX2NvZXJjaW9uX2NhY2hlLAor CQkJCQkJCQkgICBvcC0+anNvbmV4cHJfY29lcmNpb24udGFyZ2V0dHlwZSwKKwkJCQkJCQkJ ICAgJm9wLT5qc29uZXhwcl9jb2VyY2lvbi5qc29uX2NvZXJjaW9uX2NhY2hlLAogCQkJCQkJ CQkgICBlY29udGV4dC0+ZWN4dF9wZXJfcXVlcnlfbWVtb3J5LAogCQkJCQkJCQkgICAoTm9k ZSAqKSBlc2NvbnRleHQpKQogCQkJewpAQCAtNTE1MSwxMiArNTE1MSwxMiBAQCBFeGVjRXZh bEpzb25Db2VyY2lvbihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLAogCX0K IAogCSpvcC0+cmVzdmFsdWUgPSBqc29uX3BvcHVsYXRlX3R5cGUoKm9wLT5yZXN2YWx1ZSwg SlNPTkJPSUQsCi0JCQkJCQkJCQkgICBvcC0+ZC5qc29uZXhwcl9jb2VyY2lvbi50YXJnZXR0 eXBlLAotCQkJCQkJCQkJICAgb3AtPmQuanNvbmV4cHJfY29lcmNpb24udGFyZ2V0dHlwbW9k LAotCQkJCQkJCQkJICAgJm9wLT5kLmpzb25leHByX2NvZXJjaW9uLmpzb25fY29lcmNpb25f Y2FjaGUsCisJCQkJCQkJCQkgICBvcC0+anNvbmV4cHJfY29lcmNpb24udGFyZ2V0dHlwZSwK KwkJCQkJCQkJCSAgIG9wLT5qc29uZXhwcl9jb2VyY2lvbi50YXJnZXR0eXBtb2QsCisJCQkJ CQkJCQkgICAmb3AtPmpzb25leHByX2NvZXJjaW9uLmpzb25fY29lcmNpb25fY2FjaGUsCiAJ CQkJCQkJCQkgICBlY29udGV4dC0+ZWN4dF9wZXJfcXVlcnlfbWVtb3J5LAogCQkJCQkJCQkJ ICAgb3AtPnJlc251bGwsCi0JCQkJCQkJCQkgICBvcC0+ZC5qc29uZXhwcl9jb2VyY2lvbi5v bWl0X3F1b3RlcywKKwkJCQkJCQkJCSAgIG9wLT5qc29uZXhwcl9jb2VyY2lvbi5vbWl0X3F1 b3RlcywKIAkJCQkJCQkJCSAgIChOb2RlICopIGVzY29udGV4dCk7CiB9CiAKQEAgLTUxOTEs NyArNTE5MSw3IEBAIEdldEpzb25CZWhhdmlvclZhbHVlU3RyaW5nKEpzb25CZWhhdmlvciAq YmVoYXZpb3IpCiB2b2lkCiBFeGVjRXZhbEpzb25Db2VyY2lvbkZpbmlzaChFeHByU3RhdGUg KnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wKQogewotCUpzb25FeHByU3RhdGUgKmpzZXN0YXRl ID0gb3AtPmQuanNvbmV4cHIuanNlc3RhdGU7CisJSnNvbkV4cHJTdGF0ZSAqanNlc3RhdGUg PSBvcC0+anNvbmV4cHIuanNlc3RhdGU7CiAKIAlpZiAoU09GVF9FUlJPUl9PQ0NVUlJFRCgm anNlc3RhdGUtPmVzY29udGV4dCkpCiAJewpAQCAtNTI0OSw3ICs1MjQ5LDcgQEAgRXhlY0V2 YWxHcm91cGluZ0Z1bmMoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCkKIAlC aXRtYXBzZXQgICpncm91cGVkX2NvbHMgPSBhZ2dzdGF0ZS0+Z3JvdXBlZF9jb2xzOwogCUxp c3RDZWxsICAgKmxjOwogCi0JZm9yZWFjaChsYywgb3AtPmQuZ3JvdXBpbmdfZnVuYy5jbGF1 c2VzKQorCWZvcmVhY2gobGMsIG9wLT5ncm91cGluZ19mdW5jLmNsYXVzZXMpCiAJewogCQlp bnQJCQlhdHRudW0gPSBsZmlyc3RfaW50KGxjKTsKIApAQCAtNTMwOCw3ICs1MzA4LDcgQEAg RXhlY0V2YWxNZXJnZVN1cHBvcnRGdW5jKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3Rl cCAqb3AsCiB2b2lkCiBFeGVjRXZhbFN1YlBsYW4oRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2 YWxTdGVwICpvcCwgRXhwckNvbnRleHQgKmVjb250ZXh0KQogewotCVN1YlBsYW5TdGF0ZSAq c3N0YXRlID0gb3AtPmQuc3VicGxhbi5zc3RhdGU7CisJU3ViUGxhblN0YXRlICpzc3RhdGUg PSBvcC0+c3VicGxhbi5zc3RhdGU7CiAKIAkvKiBjb3VsZCBwb3RlbnRpYWxseSBiZSBuZXN0 ZWQsIHNvIG1ha2Ugc3VyZSB0aGVyZSdzIGVub3VnaCBzdGFjayAqLwogCWNoZWNrX3N0YWNr X2RlcHRoKCk7CkBAIC01MzI1LDcgKzUzMjUsNyBAQCBFeGVjRXZhbFN1YlBsYW4oRXhwclN0 YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwgRXhwckNvbnRleHQgKmVjb250ZXh0KQog dm9pZAogRXhlY0V2YWxXaG9sZVJvd1ZhcihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0 ZXAgKm9wLCBFeHByQ29udGV4dCAqZWNvbnRleHQpCiB7Ci0JVmFyCQkgICAqdmFyaWFibGUg PSBvcC0+ZC53aG9sZXJvdy52YXI7CisJVmFyCQkgICAqdmFyaWFibGUgPSBvcC0+d2hvbGVy b3cudmFyOwogCVR1cGxlVGFibGVTbG90ICpzbG90ID0gTlVMTDsKIAlUdXBsZURlc2MJb3V0 cHV0X3R1cGRlc2M7CiAJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OwpAQCAtNTM4OSw4ICs1 Mzg5LDggQEAgRXhlY0V2YWxXaG9sZVJvd1ZhcihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZh bFN0ZXAgKm9wLCBFeHByQ29udGV4dCAqZWNvbnRleHQpCiAJfQogCiAJLyogQXBwbHkgdGhl IGp1bmtmaWx0ZXIgaWYgYW55ICovCi0JaWYgKG9wLT5kLndob2xlcm93Lmp1bmtGaWx0ZXIg IT0gTlVMTCkKLQkJc2xvdCA9IEV4ZWNGaWx0ZXJKdW5rKG9wLT5kLndob2xlcm93Lmp1bmtG aWx0ZXIsIHNsb3QpOworCWlmIChvcC0+d2hvbGVyb3cuanVua0ZpbHRlciAhPSBOVUxMKQor CQlzbG90ID0gRXhlY0ZpbHRlckp1bmsob3AtPndob2xlcm93Lmp1bmtGaWx0ZXIsIHNsb3Qp OwogCiAJLyoKIAkgKiBJZiBmaXJzdCB0aW1lIHRocm91Z2gsIG9idGFpbiB0dXBsZSBkZXNj cmlwdG9yIGFuZCBjaGVjayBjb21wYXRpYmlsaXR5LgpAQCAtNTM5OSwxMCArNTM5OSwxMCBA QCBFeGVjRXZhbFdob2xlUm93VmFyKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAq b3AsIEV4cHJDb250ZXh0ICplY29udGV4dCkKIAkgKiBpbml0aWFsaXphdGlvbiBwaGFzZSwg YnV0IGR1ZSB0byB1c2luZyBzbG90cyB0aGF0J3MgY3VycmVudGx5IG5vdAogCSAqIGZlYXNp YmxlLgogCSAqLwotCWlmIChvcC0+ZC53aG9sZXJvdy5maXJzdCkKKwlpZiAob3AtPndob2xl cm93LmZpcnN0KQogCXsKIAkJLyogb3B0aW1pc3RpY2FsbHkgYXNzdW1lIHdlIGRvbid0IG5l ZWQgc2xvdyBwYXRoICovCi0JCW9wLT5kLndob2xlcm93LnNsb3cgPSBmYWxzZTsKKwkJb3At Pndob2xlcm93LnNsb3cgPSBmYWxzZTsKIAogCQkvKgogCQkgKiBJZiB0aGUgVmFyIGlkZW50 aWZpZXMgYSBuYW1lZCBjb21wb3NpdGUgdHlwZSwgd2UgbXVzdCBjaGVjayB0aGF0CkBAIC01 NDYxLDcgKzU0NjEsNyBAQCBFeGVjRXZhbFdob2xlUm93VmFyKEV4cHJTdGF0ZSAqc3RhdGUs IEV4cHJFdmFsU3RlcCAqb3AsIEV4cHJDb250ZXh0ICplY29udGV4dCkKIAogCQkJCWlmICh2 YXR0ci0+YXR0bGVuICE9IHNhdHRyLT5hdHRsZW4gfHwKIAkJCQkJdmF0dHItPmF0dGFsaWdu ICE9IHNhdHRyLT5hdHRhbGlnbikKLQkJCQkJb3AtPmQud2hvbGVyb3cuc2xvdyA9IHRydWU7 IC8qIG5lZWQgdG8gY2hlY2sgZm9yIG51bGxzICovCisJCQkJCW9wLT53aG9sZXJvdy5zbG93 ID0gdHJ1ZTsJLyogbmVlZCB0byBjaGVjayBmb3IgbnVsbHMgKi8KIAkJCX0KIAogCQkJLyoK QEAgLTU1MjAsOSArNTUyMCw5IEBAIEV4ZWNFdmFsV2hvbGVSb3dWYXIoRXhwclN0YXRlICpz dGF0ZSwgRXhwckV2YWxTdGVwICpvcCwgRXhwckNvbnRleHQgKmVjb250ZXh0KQogCQl9CiAK IAkJLyogQmxlc3MgdGhlIHR1cGRlc2MgaWYgbmVlZGVkLCBhbmQgc2F2ZSBpdCBpbiB0aGUg ZXhlY3V0aW9uIHN0YXRlICovCi0JCW9wLT5kLndob2xlcm93LnR1cGRlc2MgPSBCbGVzc1R1 cGxlRGVzYyhvdXRwdXRfdHVwZGVzYyk7CisJCW9wLT53aG9sZXJvdy50dXBkZXNjID0gQmxl c3NUdXBsZURlc2Mob3V0cHV0X3R1cGRlc2MpOwogCi0JCW9wLT5kLndob2xlcm93LmZpcnN0 ID0gZmFsc2U7CisJCW9wLT53aG9sZXJvdy5maXJzdCA9IGZhbHNlOwogCX0KIAogCS8qCkBA IC01NTMxLDExICs1NTMxLDExIEBAIEV4ZWNFdmFsV2hvbGVSb3dWYXIoRXhwclN0YXRlICpz dGF0ZSwgRXhwckV2YWxTdGVwICpvcCwgRXhwckNvbnRleHQgKmVjb250ZXh0KQogCSAqLwog CXNsb3RfZ2V0YWxsYXR0cnMoc2xvdCk7CiAKLQlpZiAob3AtPmQud2hvbGVyb3cuc2xvdykK KwlpZiAob3AtPndob2xlcm93LnNsb3cpCiAJewogCQkvKiBDaGVjayB0byBzZWUgaWYgYW55 IGRyb3BwZWQgYXR0cmlidXRlcyBhcmUgbm9uLW51bGwgKi8KIAkJVHVwbGVEZXNjCXR1cGxl RGVzYyA9IHNsb3QtPnR0c190dXBsZURlc2NyaXB0b3I7Ci0JCVR1cGxlRGVzYwl2YXJfdHVw ZGVzYyA9IG9wLT5kLndob2xlcm93LnR1cGRlc2M7CisJCVR1cGxlRGVzYwl2YXJfdHVwZGVz YyA9IG9wLT53aG9sZXJvdy50dXBkZXNjOwogCiAJCUFzc2VydCh2YXJfdHVwZGVzYy0+bmF0 dHMgPT0gdHVwbGVEZXNjLT5uYXR0cyk7CiAKQEAgLTU1NzEsMTEgKzU1NzEsMTEgQEAgRXhl Y0V2YWxXaG9sZVJvd1ZhcihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLCBF eHByQ29udGV4dCAqZWNvbnRleHQpCiAJLyoKIAkgKiBMYWJlbCB0aGUgZGF0dW0gd2l0aCB0 aGUgY29tcG9zaXRlIHR5cGUgaW5mbyB3ZSBpZGVudGlmaWVkIGJlZm9yZS4KIAkgKgotCSAq IChOb3RlOiB3ZSBjb3VsZCBza2lwIGRvaW5nIHRoaXMgYnkgcGFzc2luZyBvcC0+ZC53aG9s ZXJvdy50dXBkZXNjIHRvCi0JICogdGhlIHR1cGxlIGJ1aWxkIHN0ZXA7IGJ1dCB0aGF0IHNl ZW1zIGEgdGFkIHJpc2t5IHNvIGxldCdzIG5vdC4pCisJICogKE5vdGU6IHdlIGNvdWxkIHNr aXAgZG9pbmcgdGhpcyBieSBwYXNzaW5nIG9wLT53aG9sZXJvdy50dXBkZXNjIHRvIHRoZQor CSAqIHR1cGxlIGJ1aWxkIHN0ZXA7IGJ1dCB0aGF0IHNlZW1zIGEgdGFkIHJpc2t5IHNvIGxl dCdzIG5vdC4pCiAJICovCi0JSGVhcFR1cGxlSGVhZGVyU2V0VHlwZUlkKGR0dXBsZSwgb3At PmQud2hvbGVyb3cudHVwZGVzYy0+dGR0eXBlaWQpOwotCUhlYXBUdXBsZUhlYWRlclNldFR5 cE1vZChkdHVwbGUsIG9wLT5kLndob2xlcm93LnR1cGRlc2MtPnRkdHlwbW9kKTsKKwlIZWFw VHVwbGVIZWFkZXJTZXRUeXBlSWQoZHR1cGxlLCBvcC0+d2hvbGVyb3cudHVwZGVzYy0+dGR0 eXBlaWQpOworCUhlYXBUdXBsZUhlYWRlclNldFR5cE1vZChkdHVwbGUsIG9wLT53aG9sZXJv dy50dXBkZXNjLT50ZHR5cG1vZCk7CiAKIAkqb3AtPnJlc3ZhbHVlID0gUG9pbnRlckdldERh dHVtKGR0dXBsZSk7CiAJKm9wLT5yZXNudWxsID0gZmFsc2U7CkBAIC01NTg4LDkgKzU1ODgs OSBAQCBFeGVjRXZhbFN5c1ZhcihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9w LCBFeHByQ29udGV4dCAqZWNvbnRleHQsCiAJRGF0dW0JCWQ7CiAKIAkvKiBPTEQvTkVXIHN5 c3RlbSBhdHRyaWJ1dGUgaXMgTlVMTCBpZiBPTEQvTkVXIHJvdyBpcyBOVUxMICovCi0JaWYg KChvcC0+ZC52YXIudmFycmV0dXJuaW5ndHlwZSA9PSBWQVJfUkVUVVJOSU5HX09MRCAmJgor CWlmICgob3AtPnZhci52YXJyZXR1cm5pbmd0eXBlID09IFZBUl9SRVRVUk5JTkdfT0xEICYm CiAJCSBzdGF0ZS0+ZmxhZ3MgJiBFRU9fRkxBR19PTERfSVNfTlVMTCkgfHwKLQkJKG9wLT5k LnZhci52YXJyZXR1cm5pbmd0eXBlID09IFZBUl9SRVRVUk5JTkdfTkVXICYmCisJCShvcC0+ dmFyLnZhcnJldHVybmluZ3R5cGUgPT0gVkFSX1JFVFVSTklOR19ORVcgJiYKIAkJIHN0YXRl LT5mbGFncyAmIEVFT19GTEFHX05FV19JU19OVUxMKSkKIAl7CiAJCSpvcC0+cmVzdmFsdWUg PSAoRGF0dW0pIDA7CkBAIC01NjAwLDcgKzU2MDAsNyBAQCBFeGVjRXZhbFN5c1ZhcihFeHBy U3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLCBFeHByQ29udGV4dCAqZWNvbnRleHQs CiAKIAkvKiBzbG90X2dldHN5c2F0dHIgaGFzIHN1ZmZpY2llbnQgZGVmZW5zZXMgYWdhaW5z dCBiYWQgYXR0bnVtcyAqLwogCWQgPSBzbG90X2dldHN5c2F0dHIoc2xvdCwKLQkJCQkJCW9w LT5kLnZhci5hdHRudW0sCisJCQkJCQlvcC0+dmFyLmF0dG51bSwKIAkJCQkJCW9wLT5yZXNu dWxsKTsKIAkqb3AtPnJlc3ZhbHVlID0gZDsKIAkvKiB0aGlzIG91Z2h0IHRvIGJlIHVucmVh Y2hhYmxlLCBidXQgaXQncyBjaGVhcCBlbm91Z2ggdG8gY2hlY2sgKi8KQEAgLTU4MDgsOCAr NTgwOCw4IEBAIHZvaWQKIEV4ZWNFdmFsQWdnT3JkZXJlZFRyYW5zRGF0dW0oRXhwclN0YXRl ICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwKIAkJCQkJCQkgRXhwckNvbnRleHQgKmVjb250 ZXh0KQogewotCUFnZ1N0YXRlUGVyVHJhbnMgcGVydHJhbnMgPSBvcC0+ZC5hZ2dfdHJhbnMu cGVydHJhbnM7Ci0JaW50CQkJc2V0bm8gPSBvcC0+ZC5hZ2dfdHJhbnMuc2V0bm87CisJQWdn U3RhdGVQZXJUcmFucyBwZXJ0cmFucyA9IG9wLT5hZ2dfdHJhbnMucGVydHJhbnM7CisJaW50 CQkJc2V0bm8gPSBvcC0+YWdnX3RyYW5zLnNldG5vOwogCiAJdHVwbGVzb3J0X3B1dGRhdHVt KHBlcnRyYW5zLT5zb3J0c3RhdGVzW3NldG5vXSwKIAkJCQkJICAgKm9wLT5yZXN2YWx1ZSwg Km9wLT5yZXNudWxsKTsKQEAgLTU4MjIsOCArNTgyMiw4IEBAIHZvaWQKIEV4ZWNFdmFsQWdn T3JkZXJlZFRyYW5zVHVwbGUoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwK IAkJCQkJCQkgRXhwckNvbnRleHQgKmVjb250ZXh0KQogewotCUFnZ1N0YXRlUGVyVHJhbnMg cGVydHJhbnMgPSBvcC0+ZC5hZ2dfdHJhbnMucGVydHJhbnM7Ci0JaW50CQkJc2V0bm8gPSBv cC0+ZC5hZ2dfdHJhbnMuc2V0bm87CisJQWdnU3RhdGVQZXJUcmFucyBwZXJ0cmFucyA9IG9w LT5hZ2dfdHJhbnMucGVydHJhbnM7CisJaW50CQkJc2V0bm8gPSBvcC0+YWdnX3RyYW5zLnNl dG5vOwogCiAJRXhlY0NsZWFyVHVwbGUocGVydHJhbnMtPnNvcnRzbG90KTsKIAlwZXJ0cmFu cy0+c29ydHNsb3QtPnR0c19udmFsaWQgPSBwZXJ0cmFucy0+bnVtSW5wdXRzOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5c3Vicy5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2FycmF5c3Vicy5jCmluZGV4IDI5NDBmYjhlOGQ3Li5jYThmMTY0N2M4OSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5c3Vicy5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheXN1YnMuYwpAQCAtMTgyLDcgKzE4Miw3IEBAIGFy cmF5X3N1YnNjcmlwdF9jaGVja19zdWJzY3JpcHRzKEV4cHJTdGF0ZSAqc3RhdGUsCiAJCQkJ CQkJCSBFeHByRXZhbFN0ZXAgKm9wLAogCQkJCQkJCQkgRXhwckNvbnRleHQgKmVjb250ZXh0 KQogewotCVN1YnNjcmlwdGluZ1JlZlN0YXRlICpzYnNyZWZzdGF0ZSA9IG9wLT5kLnNic3Jl Zl9zdWJzY3JpcHQuc3RhdGU7CisJU3Vic2NyaXB0aW5nUmVmU3RhdGUgKnNic3JlZnN0YXRl ID0gb3AtPnNic3JlZl9zdWJzY3JpcHQuc3RhdGU7CiAJQXJyYXlTdWJXb3Jrc3BhY2UgKndv cmtzcGFjZSA9IChBcnJheVN1YldvcmtzcGFjZSAqKSBzYnNyZWZzdGF0ZS0+d29ya3NwYWNl OwogCiAJLyogUHJvY2VzcyB1cHBlciBzdWJzY3JpcHRzICovCkBAIC0yMzgsNyArMjM4LDcg QEAgYXJyYXlfc3Vic2NyaXB0X2ZldGNoKEV4cHJTdGF0ZSAqc3RhdGUsCiAJCQkJCSAgRXhw ckV2YWxTdGVwICpvcCwKIAkJCQkJICBFeHByQ29udGV4dCAqZWNvbnRleHQpCiB7Ci0JU3Vi c2NyaXB0aW5nUmVmU3RhdGUgKnNic3JlZnN0YXRlID0gb3AtPmQuc2JzcmVmLnN0YXRlOwor CVN1YnNjcmlwdGluZ1JlZlN0YXRlICpzYnNyZWZzdGF0ZSA9IG9wLT5zYnNyZWYuc3RhdGU7 CiAJQXJyYXlTdWJXb3Jrc3BhY2UgKndvcmtzcGFjZSA9IChBcnJheVN1YldvcmtzcGFjZSAq KSBzYnNyZWZzdGF0ZS0+d29ya3NwYWNlOwogCiAJLyogU2hvdWxkIG5vdCBnZXQgaGVyZSBp ZiBzb3VyY2UgYXJyYXkgKG9yIGFueSBzdWJzY3JpcHQpIGlzIG51bGwgKi8KQEAgLTI2Niw3 ICsyNjYsNyBAQCBhcnJheV9zdWJzY3JpcHRfZmV0Y2hfc2xpY2UoRXhwclN0YXRlICpzdGF0 ZSwKIAkJCQkJCQlFeHByRXZhbFN0ZXAgKm9wLAogCQkJCQkJCUV4cHJDb250ZXh0ICplY29u dGV4dCkKIHsKLQlTdWJzY3JpcHRpbmdSZWZTdGF0ZSAqc2JzcmVmc3RhdGUgPSBvcC0+ZC5z YnNyZWYuc3RhdGU7CisJU3Vic2NyaXB0aW5nUmVmU3RhdGUgKnNic3JlZnN0YXRlID0gb3At PnNic3JlZi5zdGF0ZTsKIAlBcnJheVN1YldvcmtzcGFjZSAqd29ya3NwYWNlID0gKEFycmF5 U3ViV29ya3NwYWNlICopIHNic3JlZnN0YXRlLT53b3Jrc3BhY2U7CiAKIAkvKiBTaG91bGQg bm90IGdldCBoZXJlIGlmIHNvdXJjZSBhcnJheSAob3IgYW55IHN1YnNjcmlwdCkgaXMgbnVs bCAqLwpAQCAtMjk2LDcgKzI5Niw3IEBAIGFycmF5X3N1YnNjcmlwdF9hc3NpZ24oRXhwclN0 YXRlICpzdGF0ZSwKIAkJCQkJICAgRXhwckV2YWxTdGVwICpvcCwKIAkJCQkJICAgRXhwckNv bnRleHQgKmVjb250ZXh0KQogewotCVN1YnNjcmlwdGluZ1JlZlN0YXRlICpzYnNyZWZzdGF0 ZSA9IG9wLT5kLnNic3JlZi5zdGF0ZTsKKwlTdWJzY3JpcHRpbmdSZWZTdGF0ZSAqc2JzcmVm c3RhdGUgPSBvcC0+c2JzcmVmLnN0YXRlOwogCUFycmF5U3ViV29ya3NwYWNlICp3b3Jrc3Bh Y2UgPSAoQXJyYXlTdWJXb3Jrc3BhY2UgKikgc2JzcmVmc3RhdGUtPndvcmtzcGFjZTsKIAlE YXR1bQkJYXJyYXlTb3VyY2UgPSAqb3AtPnJlc3ZhbHVlOwogCkBAIC0zNDYsNyArMzQ2LDcg QEAgYXJyYXlfc3Vic2NyaXB0X2Fzc2lnbl9zbGljZShFeHByU3RhdGUgKnN0YXRlLAogCQkJ CQkJCSBFeHByRXZhbFN0ZXAgKm9wLAogCQkJCQkJCSBFeHByQ29udGV4dCAqZWNvbnRleHQp CiB7Ci0JU3Vic2NyaXB0aW5nUmVmU3RhdGUgKnNic3JlZnN0YXRlID0gb3AtPmQuc2JzcmVm LnN0YXRlOworCVN1YnNjcmlwdGluZ1JlZlN0YXRlICpzYnNyZWZzdGF0ZSA9IG9wLT5zYnNy ZWYuc3RhdGU7CiAJQXJyYXlTdWJXb3Jrc3BhY2UgKndvcmtzcGFjZSA9IChBcnJheVN1Yldv cmtzcGFjZSAqKSBzYnNyZWZzdGF0ZS0+d29ya3NwYWNlOwogCURhdHVtCQlhcnJheVNvdXJj ZSA9ICpvcC0+cmVzdmFsdWU7CiAKQEAgLTQwMSw3ICs0MDEsNyBAQCBhcnJheV9zdWJzY3Jp cHRfZmV0Y2hfb2xkKEV4cHJTdGF0ZSAqc3RhdGUsCiAJCQkJCQkgIEV4cHJFdmFsU3RlcCAq b3AsCiAJCQkJCQkgIEV4cHJDb250ZXh0ICplY29udGV4dCkKIHsKLQlTdWJzY3JpcHRpbmdS ZWZTdGF0ZSAqc2JzcmVmc3RhdGUgPSBvcC0+ZC5zYnNyZWYuc3RhdGU7CisJU3Vic2NyaXB0 aW5nUmVmU3RhdGUgKnNic3JlZnN0YXRlID0gb3AtPnNic3JlZi5zdGF0ZTsKIAlBcnJheVN1 YldvcmtzcGFjZSAqd29ya3NwYWNlID0gKEFycmF5U3ViV29ya3NwYWNlICopIHNic3JlZnN0 YXRlLT53b3Jrc3BhY2U7CiAKIAlpZiAoKm9wLT5yZXNudWxsKQpAQCAtNDQxLDcgKzQ0MSw3 IEBAIGFycmF5X3N1YnNjcmlwdF9mZXRjaF9vbGRfc2xpY2UoRXhwclN0YXRlICpzdGF0ZSwK IAkJCQkJCQkJRXhwckV2YWxTdGVwICpvcCwKIAkJCQkJCQkJRXhwckNvbnRleHQgKmVjb250 ZXh0KQogewotCVN1YnNjcmlwdGluZ1JlZlN0YXRlICpzYnNyZWZzdGF0ZSA9IG9wLT5kLnNi c3JlZi5zdGF0ZTsKKwlTdWJzY3JpcHRpbmdSZWZTdGF0ZSAqc2JzcmVmc3RhdGUgPSBvcC0+ c2JzcmVmLnN0YXRlOwogCUFycmF5U3ViV29ya3NwYWNlICp3b3Jrc3BhY2UgPSAoQXJyYXlT dWJXb3Jrc3BhY2UgKikgc2JzcmVmc3RhdGUtPndvcmtzcGFjZTsKIAogCWlmICgqb3AtPnJl c251bGwpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJzdWJzLmMg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJzdWJzLmMKaW5kZXggZTg2MjZkM2I0ZmMu LjgyMTFkZTIzZDU5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJz dWJzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jCkBAIC0xNzYs NyArMTc2LDcgQEAganNvbmJfc3Vic2NyaXB0X2NoZWNrX3N1YnNjcmlwdHMoRXhwclN0YXRl ICpzdGF0ZSwKIAkJCQkJCQkJIEV4cHJFdmFsU3RlcCAqb3AsCiAJCQkJCQkJCSBFeHByQ29u dGV4dCAqZWNvbnRleHQpCiB7Ci0JU3Vic2NyaXB0aW5nUmVmU3RhdGUgKnNic3JlZnN0YXRl ID0gb3AtPmQuc2JzcmVmX3N1YnNjcmlwdC5zdGF0ZTsKKwlTdWJzY3JpcHRpbmdSZWZTdGF0 ZSAqc2JzcmVmc3RhdGUgPSBvcC0+c2JzcmVmX3N1YnNjcmlwdC5zdGF0ZTsKIAlKc29uYlN1 YldvcmtzcGFjZSAqd29ya3NwYWNlID0gKEpzb25iU3ViV29ya3NwYWNlICopIHNic3JlZnN0 YXRlLT53b3Jrc3BhY2U7CiAKIAkvKgpAQCAtMjM2LDcgKzIzNiw3IEBAIGpzb25iX3N1YnNj cmlwdF9mZXRjaChFeHByU3RhdGUgKnN0YXRlLAogCQkJCQkgIEV4cHJFdmFsU3RlcCAqb3As CiAJCQkJCSAgRXhwckNvbnRleHQgKmVjb250ZXh0KQogewotCVN1YnNjcmlwdGluZ1JlZlN0 YXRlICpzYnNyZWZzdGF0ZSA9IG9wLT5kLnNic3JlZi5zdGF0ZTsKKwlTdWJzY3JpcHRpbmdS ZWZTdGF0ZSAqc2JzcmVmc3RhdGUgPSBvcC0+c2JzcmVmLnN0YXRlOwogCUpzb25iU3ViV29y a3NwYWNlICp3b3Jrc3BhY2UgPSAoSnNvbmJTdWJXb3Jrc3BhY2UgKikgc2JzcmVmc3RhdGUt PndvcmtzcGFjZTsKIAlKc29uYgkgICAqanNvbmJTb3VyY2U7CiAKQEAgLTI2Miw3ICsyNjIs NyBAQCBqc29uYl9zdWJzY3JpcHRfYXNzaWduKEV4cHJTdGF0ZSAqc3RhdGUsCiAJCQkJCSAg IEV4cHJFdmFsU3RlcCAqb3AsCiAJCQkJCSAgIEV4cHJDb250ZXh0ICplY29udGV4dCkKIHsK LQlTdWJzY3JpcHRpbmdSZWZTdGF0ZSAqc2JzcmVmc3RhdGUgPSBvcC0+ZC5zYnNyZWYuc3Rh dGU7CisJU3Vic2NyaXB0aW5nUmVmU3RhdGUgKnNic3JlZnN0YXRlID0gb3AtPnNic3JlZi5z dGF0ZTsKIAlKc29uYlN1YldvcmtzcGFjZSAqd29ya3NwYWNlID0gKEpzb25iU3ViV29ya3Nw YWNlICopIHNic3JlZnN0YXRlLT53b3Jrc3BhY2U7CiAJSnNvbmIJICAgKmpzb25iU291cmNl OwogCUpzb25iVmFsdWUJcmVwbGFjZXZhbHVlOwpAQCAtMzI0LDcgKzMyNCw3IEBAIGpzb25i X3N1YnNjcmlwdF9mZXRjaF9vbGQoRXhwclN0YXRlICpzdGF0ZSwKIAkJCQkJCSAgRXhwckV2 YWxTdGVwICpvcCwKIAkJCQkJCSAgRXhwckNvbnRleHQgKmVjb250ZXh0KQogewotCVN1YnNj cmlwdGluZ1JlZlN0YXRlICpzYnNyZWZzdGF0ZSA9IG9wLT5kLnNic3JlZi5zdGF0ZTsKKwlT dWJzY3JpcHRpbmdSZWZTdGF0ZSAqc2JzcmVmc3RhdGUgPSBvcC0+c2JzcmVmLnN0YXRlOwog CiAJaWYgKCpvcC0+cmVzbnVsbCkKIAl7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVj dXRvci9leGVjRXhwci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaAppbmRl eCA3NTM2NjIwMzcwNi4uMzg1MmRjYWE1YzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWNFeHByLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIu aApAQCAtNzY5LDcgKzc2OSw3IEBAIHR5cGVkZWYgc3RydWN0IEV4cHJFdmFsU3RlcAogCQkJ dm9pZAkgICAqanNvbl9jb2VyY2lvbl9jYWNoZTsKIAkJCUVycm9yU2F2ZUNvbnRleHQgKmVz Y29udGV4dDsKIAkJfQkJCWpzb25leHByX2NvZXJjaW9uOwotCX0JCQlkOworCX07CiB9IEV4 cHJFdmFsU3RlcDsKIAogLyogRW5mb3JjZSB0aGUgc2l6ZSBydWxlIGdpdmVuIGluIHRoZSBj b21tZW50IGFib3ZlICovCmRpZmYgLS1naXQgYS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhl Yy5jIGIvc3JjL3BsL3BscGdzcWwvc3JjL3BsX2V4ZWMuYwppbmRleCBkMTk0MjViN2E3MS4u ODE0MTdmODVjOTkgMTAwNjQ0Ci0tLSBhL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9leGVjLmMK KysrIGIvc3JjL3BsL3BscGdzcWwvc3JjL3BsX2V4ZWMuYwpAQCAtNjQ4MSwyNSArNjQ4MSwy NSBAQCBwbHBnc3FsX3BhcmFtX2NvbXBpbGUoUGFyYW1MaXN0SW5mbyBwYXJhbXMsIFBhcmFt ICpwYXJhbSwKIAkJYm9vbAkJaXN2YXJsZW5hID0gKCgoUExwZ1NRTF92YXIgKikgZGF0dW0p LT5kYXRhdHlwZS0+dHlwbGVuID09IC0xKTsKIAogCQlpZiAoaXN2YXJsZW5hICYmIGRubyA9 PSBleHByLT50YXJnZXRfcGFyYW0gJiYgZXhwci0+ZXhwcl9zaW1wbGVfZXhwcikKLQkJCXNj cmF0Y2guZC5jcGFyYW0ucGFyYW1mdW5jID0gcGxwZ3NxbF9wYXJhbV9ldmFsX3Zhcl9jaGVj azsKKwkJCXNjcmF0Y2guY3BhcmFtLnBhcmFtZnVuYyA9IHBscGdzcWxfcGFyYW1fZXZhbF92 YXJfY2hlY2s7CiAJCWVsc2UgaWYgKGlzdmFybGVuYSkKLQkJCXNjcmF0Y2guZC5jcGFyYW0u cGFyYW1mdW5jID0gcGxwZ3NxbF9wYXJhbV9ldmFsX3Zhcl9ybzsKKwkJCXNjcmF0Y2guY3Bh cmFtLnBhcmFtZnVuYyA9IHBscGdzcWxfcGFyYW1fZXZhbF92YXJfcm87CiAJCWVsc2UKLQkJ CXNjcmF0Y2guZC5jcGFyYW0ucGFyYW1mdW5jID0gcGxwZ3NxbF9wYXJhbV9ldmFsX3ZhcjsK KwkJCXNjcmF0Y2guY3BhcmFtLnBhcmFtZnVuYyA9IHBscGdzcWxfcGFyYW1fZXZhbF92YXI7 CiAJfQogCWVsc2UgaWYgKGRhdHVtLT5kdHlwZSA9PSBQTFBHU1FMX0RUWVBFX1JFQ0ZJRUxE KQotCQlzY3JhdGNoLmQuY3BhcmFtLnBhcmFtZnVuYyA9IHBscGdzcWxfcGFyYW1fZXZhbF9y ZWNmaWVsZDsKKwkJc2NyYXRjaC5jcGFyYW0ucGFyYW1mdW5jID0gcGxwZ3NxbF9wYXJhbV9l dmFsX3JlY2ZpZWxkOwogCWVsc2UgaWYgKGRhdHVtLT5kdHlwZSA9PSBQTFBHU1FMX0RUWVBF X1BST01JU0UpCiAJewogCQlpZiAoKChQTHBnU1FMX3ZhciAqKSBkYXR1bSktPmRhdGF0eXBl LT50eXBsZW4gPT0gLTEpCi0JCQlzY3JhdGNoLmQuY3BhcmFtLnBhcmFtZnVuYyA9IHBscGdz cWxfcGFyYW1fZXZhbF9nZW5lcmljX3JvOworCQkJc2NyYXRjaC5jcGFyYW0ucGFyYW1mdW5j ID0gcGxwZ3NxbF9wYXJhbV9ldmFsX2dlbmVyaWNfcm87CiAJCWVsc2UKLQkJCXNjcmF0Y2gu ZC5jcGFyYW0ucGFyYW1mdW5jID0gcGxwZ3NxbF9wYXJhbV9ldmFsX2dlbmVyaWM7CisJCQlz Y3JhdGNoLmNwYXJhbS5wYXJhbWZ1bmMgPSBwbHBnc3FsX3BhcmFtX2V2YWxfZ2VuZXJpYzsK IAl9CiAJZWxzZSBpZiAoZGF0dW0tPmR0eXBlID09IFBMUEdTUUxfRFRZUEVfUkVDKQotCQlz Y3JhdGNoLmQuY3BhcmFtLnBhcmFtZnVuYyA9IHBscGdzcWxfcGFyYW1fZXZhbF9nZW5lcmlj X3JvOworCQlzY3JhdGNoLmNwYXJhbS5wYXJhbWZ1bmMgPSBwbHBnc3FsX3BhcmFtX2V2YWxf Z2VuZXJpY19ybzsKIAllbHNlCi0JCXNjcmF0Y2guZC5jcGFyYW0ucGFyYW1mdW5jID0gcGxw Z3NxbF9wYXJhbV9ldmFsX2dlbmVyaWM7CisJCXNjcmF0Y2guY3BhcmFtLnBhcmFtZnVuYyA9 IHBscGdzcWxfcGFyYW1fZXZhbF9nZW5lcmljOwogCiAJLyoKIAkgKiBOb3RlOiBpdCdzIHRl bXB0aW5nIHRvIHVzZSBwYXJhbWFyZyB0byBzdG9yZSB0aGUgZXN0YXRlIHBvaW50ZXIgYW5k CkBAIC02NTA5LDEwICs2NTA5LDEwIEBAIHBscGdzcWxfcGFyYW1fY29tcGlsZShQYXJhbUxp c3RJbmZvIHBhcmFtcywgUGFyYW0gKnBhcmFtLAogCSAqIHBvaW50ZXJzIHRvIHRoZSBQTHBn U1FMX2V4cHIgYXMgd2VsbCBhcyB0aGlzIHNwZWNpZmljIFBhcmFtLCB0byBzdXBwb3J0CiAJ ICogcGxwZ3NxbF9wYXJhbV9ldmFsX3Zhcl9jaGVjaygpLgogCSAqLwotCXNjcmF0Y2guZC5j cGFyYW0ucGFyYW1hcmcgPSBleHByOwotCXNjcmF0Y2guZC5jcGFyYW0ucGFyYW1hcmcyID0g cGFyYW07Ci0Jc2NyYXRjaC5kLmNwYXJhbS5wYXJhbWlkID0gcGFyYW0tPnBhcmFtaWQ7Ci0J c2NyYXRjaC5kLmNwYXJhbS5wYXJhbXR5cGUgPSBwYXJhbS0+cGFyYW10eXBlOworCXNjcmF0 Y2guY3BhcmFtLnBhcmFtYXJnID0gZXhwcjsKKwlzY3JhdGNoLmNwYXJhbS5wYXJhbWFyZzIg PSBwYXJhbTsKKwlzY3JhdGNoLmNwYXJhbS5wYXJhbWlkID0gcGFyYW0tPnBhcmFtaWQ7CisJ c2NyYXRjaC5jcGFyYW0ucGFyYW10eXBlID0gcGFyYW0tPnBhcmFtdHlwZTsKIAlFeHByRXZh bFB1c2hTdGVwKHN0YXRlLCAmc2NyYXRjaCk7CiB9CiAKQEAgLTY1MzUsNyArNjUzNSw3IEBA IHBscGdzcWxfcGFyYW1fZXZhbF92YXJfY2hlY2soRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2 YWxTdGVwICpvcCwKIHsKIAlQYXJhbUxpc3RJbmZvIHBhcmFtczsKIAlQTHBnU1FMX2V4ZWNz dGF0ZSAqZXN0YXRlOwotCWludAkJCWRubyA9IG9wLT5kLmNwYXJhbS5wYXJhbWlkIC0gMTsK KwlpbnQJCQlkbm8gPSBvcC0+Y3BhcmFtLnBhcmFtaWQgLSAxOwogCVBMcGdTUUxfdmFyICp2 YXI7CiAKIAkvKiBmZXRjaCBiYWNrIHRoZSBob29rIGRhdGEgKi8KQEAgLTY1NTQsMTUgKzY1 NTQsMTUgQEAgcGxwZ3NxbF9wYXJhbV9ldmFsX3Zhcl9jaGVjayhFeHByU3RhdGUgKnN0YXRl LCBFeHByRXZhbFN0ZXAgKm9wLAogCWlmICghdmFyLT5pc251bGwgJiYKIAkJVkFSQVRUX0lT X0VYVEVSTkFMX0VYUEFOREVEX1JXKERhdHVtR2V0UG9pbnRlcih2YXItPnZhbHVlKSkpCiAJ ewotCQlQTHBnU1FMX2V4cHIgKmV4cHIgPSAoUExwZ1NRTF9leHByICopIG9wLT5kLmNwYXJh bS5wYXJhbWFyZzsKLQkJUGFyYW0JICAgKnBhcmFtID0gKFBhcmFtICopIG9wLT5kLmNwYXJh bS5wYXJhbWFyZzI7CisJCVBMcGdTUUxfZXhwciAqZXhwciA9IChQTHBnU1FMX2V4cHIgKikg b3AtPmNwYXJhbS5wYXJhbWFyZzsKKwkJUGFyYW0JICAgKnBhcmFtID0gKFBhcmFtICopIG9w LT5jcGFyYW0ucGFyYW1hcmcyOwogCiAJCS8qCiAJCSAqIFdlIG1pZ2h0IGhhdmUgYWxyZWFk eSBmaWd1cmVkIHRoaXMgb3V0IHdoaWxlIGV2YWx1YXRpbmcgc29tZSBvdGhlcgogCQkgKiBQ YXJhbSByZWZlcmVuY2luZyB0aGUgc2FtZSB2YXJpYWJsZSwgc28gY2hlY2sgZXhwcl9yd29w dCBmaXJzdC4KIAkJICovCiAJCWlmIChleHByLT5leHByX3J3b3B0ID09IFBMUEdTUUxfUldP UFRfVU5LTk9XTikKLQkJCWV4ZWNfY2hlY2tfcndfcGFyYW1ldGVyKGV4cHIsIG9wLT5kLmNw YXJhbS5wYXJhbWlkKTsKKwkJCWV4ZWNfY2hlY2tfcndfcGFyYW1ldGVyKGV4cHIsIG9wLT5j cGFyYW0ucGFyYW1pZCk7CiAKIAkJLyoKIAkJICogVXBkYXRlIHRoZSBjYWxsYmFjayBwb2lu dGVyIHRvIG1hdGNoIHdoYXQgd2UgZGVjaWRlZCB0byBkbywgc28gdGhhdApAQCAtNjU3Niwy NyArNjU3NiwyNyBAQCBwbHBnc3FsX3BhcmFtX2V2YWxfdmFyX2NoZWNrKEV4cHJTdGF0ZSAq c3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsCiAJCQkJYnJlYWs7CiAJCQljYXNlIFBMUEdTUUxf UldPUFRfTk9QRToKIAkJCQkvKiBGb3JjZSB0aGUgdmFsdWUgdG8gcmVhZC1vbmx5IGluIGFs bCBmdXR1cmUgZXhlY3V0aW9ucyAqLwotCQkJCW9wLT5kLmNwYXJhbS5wYXJhbWZ1bmMgPSBw bHBnc3FsX3BhcmFtX2V2YWxfdmFyX3JvOworCQkJCW9wLT5jcGFyYW0ucGFyYW1mdW5jID0g cGxwZ3NxbF9wYXJhbV9ldmFsX3Zhcl9ybzsKIAkJCQlwbHBnc3FsX3BhcmFtX2V2YWxfdmFy X3JvKHN0YXRlLCBvcCwgZWNvbnRleHQpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBQTFBHU1FM X1JXT1BUX1RSQU5TRkVSOgogCQkJCS8qIFRoZXJlIGNhbiBiZSBvbmx5IG9uZSBtYXRjaGlu ZyBQYXJhbSBpbiB0aGlzIGNhc2UgKi8KIAkJCQlBc3NlcnQocGFyYW0gPT0gZXhwci0+ZXhw cl9yd19wYXJhbSk7CiAJCQkJLyogV2hlbiB0aGUgdmFsdWUgaXMgcmVhZC93cml0ZSwgdHJh bnNmZXIgdG8gZXhlYyBjb250ZXh0ICovCi0JCQkJb3AtPmQuY3BhcmFtLnBhcmFtZnVuYyA9 IHBscGdzcWxfcGFyYW1fZXZhbF92YXJfdHJhbnNmZXI7CisJCQkJb3AtPmNwYXJhbS5wYXJh bWZ1bmMgPSBwbHBnc3FsX3BhcmFtX2V2YWxfdmFyX3RyYW5zZmVyOwogCQkJCXBscGdzcWxf cGFyYW1fZXZhbF92YXJfdHJhbnNmZXIoc3RhdGUsIG9wLCBlY29udGV4dCk7CiAJCQkJYnJl YWs7CiAJCQljYXNlIFBMUEdTUUxfUldPUFRfSU5QTEFDRToKIAkJCQlpZiAocGFyYW0gPT0g ZXhwci0+ZXhwcl9yd19wYXJhbSkKIAkJCQl7CiAJCQkJCS8qIFdoZW4gdGhlIHZhbHVlIGlz IHJlYWQvd3JpdGUsIGRlbGl2ZXIgaXQgYXMtaXMgKi8KLQkJCQkJb3AtPmQuY3BhcmFtLnBh cmFtZnVuYyA9IHBscGdzcWxfcGFyYW1fZXZhbF92YXI7CisJCQkJCW9wLT5jcGFyYW0ucGFy YW1mdW5jID0gcGxwZ3NxbF9wYXJhbV9ldmFsX3ZhcjsKIAkJCQkJcGxwZ3NxbF9wYXJhbV9l dmFsX3ZhcihzdGF0ZSwgb3AsIGVjb250ZXh0KTsKIAkJCQl9CiAJCQkJZWxzZQogCQkJCXsK IAkJCQkJLyogTm90IHRoZSBvcHRpbWl6YWJsZSByZWZlcmVuY2UsIHNvIGZvcmNlIHRvIHJl YWQtb25seSAqLwotCQkJCQlvcC0+ZC5jcGFyYW0ucGFyYW1mdW5jID0gcGxwZ3NxbF9wYXJh bV9ldmFsX3Zhcl9ybzsKKwkJCQkJb3AtPmNwYXJhbS5wYXJhbWZ1bmMgPSBwbHBnc3FsX3Bh cmFtX2V2YWxfdmFyX3JvOwogCQkJCQlwbHBnc3FsX3BhcmFtX2V2YWxfdmFyX3JvKHN0YXRl LCBvcCwgZWNvbnRleHQpOwogCQkJCX0KIAkJCQlicmVhazsKQEAgLTY2MTMsNyArNjYxMyw3 IEBAIHBscGdzcWxfcGFyYW1fZXZhbF92YXJfY2hlY2soRXhwclN0YXRlICpzdGF0ZSwgRXhw ckV2YWxTdGVwICpvcCwKIAkqb3AtPnJlc251bGwgPSB2YXItPmlzbnVsbDsKIAogCS8qIHNh ZmV0eSBjaGVjayAtLSBhbiBhc3NlcnRpb24gc2hvdWxkIGJlIHN1ZmZpY2llbnQgKi8KLQlB c3NlcnQodmFyLT5kYXRhdHlwZS0+dHlwb2lkID09IG9wLT5kLmNwYXJhbS5wYXJhbXR5cGUp OworCUFzc2VydCh2YXItPmRhdGF0eXBlLT50eXBvaWQgPT0gb3AtPmNwYXJhbS5wYXJhbXR5 cGUpOwogfQogCiAvKgpAQCAtNjYzMiw3ICs2NjMyLDcgQEAgcGxwZ3NxbF9wYXJhbV9ldmFs X3Zhcl90cmFuc2ZlcihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLAogewog CVBhcmFtTGlzdEluZm8gcGFyYW1zOwogCVBMcGdTUUxfZXhlY3N0YXRlICplc3RhdGU7Ci0J aW50CQkJZG5vID0gb3AtPmQuY3BhcmFtLnBhcmFtaWQgLSAxOworCWludAkJCWRubyA9IG9w LT5jcGFyYW0ucGFyYW1pZCAtIDE7CiAJUExwZ1NRTF92YXIgKnZhcjsKIAogCS8qIGZldGNo IGJhY2sgdGhlIGhvb2sgZGF0YSAqLwpAQCAtNjY3Myw3ICs2NjczLDcgQEAgcGxwZ3NxbF9w YXJhbV9ldmFsX3Zhcl90cmFuc2ZlcihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAg Km9wLAogCX0KIAogCS8qIHNhZmV0eSBjaGVjayAtLSBhbiBhc3NlcnRpb24gc2hvdWxkIGJl IHN1ZmZpY2llbnQgKi8KLQlBc3NlcnQodmFyLT5kYXRhdHlwZS0+dHlwb2lkID09IG9wLT5k LmNwYXJhbS5wYXJhbXR5cGUpOworCUFzc2VydCh2YXItPmRhdGF0eXBlLT50eXBvaWQgPT0g b3AtPmNwYXJhbS5wYXJhbXR5cGUpOwogfQogCiAvKgpAQCAtNjY4OCw3ICs2Njg4LDcgQEAg cGxwZ3NxbF9wYXJhbV9ldmFsX3ZhcihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAg Km9wLAogewogCVBhcmFtTGlzdEluZm8gcGFyYW1zOwogCVBMcGdTUUxfZXhlY3N0YXRlICpl c3RhdGU7Ci0JaW50CQkJZG5vID0gb3AtPmQuY3BhcmFtLnBhcmFtaWQgLSAxOworCWludAkJ CWRubyA9IG9wLT5jcGFyYW0ucGFyYW1pZCAtIDE7CiAJUExwZ1NRTF92YXIgKnZhcjsKIAog CS8qIGZldGNoIGJhY2sgdGhlIGhvb2sgZGF0YSAqLwpAQCAtNjcwNSw3ICs2NzA1LDcgQEAg cGxwZ3NxbF9wYXJhbV9ldmFsX3ZhcihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAg Km9wLAogCSpvcC0+cmVzbnVsbCA9IHZhci0+aXNudWxsOwogCiAJLyogc2FmZXR5IGNoZWNr IC0tIGFuIGFzc2VydGlvbiBzaG91bGQgYmUgc3VmZmljaWVudCAqLwotCUFzc2VydCh2YXIt PmRhdGF0eXBlLT50eXBvaWQgPT0gb3AtPmQuY3BhcmFtLnBhcmFtdHlwZSk7CisJQXNzZXJ0 KHZhci0+ZGF0YXR5cGUtPnR5cG9pZCA9PSBvcC0+Y3BhcmFtLnBhcmFtdHlwZSk7CiB9CiAK IC8qCkBAIC02NzIwLDcgKzY3MjAsNyBAQCBwbHBnc3FsX3BhcmFtX2V2YWxfdmFyX3JvKEV4 cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsCiB7CiAJUGFyYW1MaXN0SW5mbyBw YXJhbXM7CiAJUExwZ1NRTF9leGVjc3RhdGUgKmVzdGF0ZTsKLQlpbnQJCQlkbm8gPSBvcC0+ ZC5jcGFyYW0ucGFyYW1pZCAtIDE7CisJaW50CQkJZG5vID0gb3AtPmNwYXJhbS5wYXJhbWlk IC0gMTsKIAlQTHBnU1FMX3ZhciAqdmFyOwogCiAJLyogZmV0Y2ggYmFjayB0aGUgaG9vayBk YXRhICovCkBAIC02NzQyLDcgKzY3NDIsNyBAQCBwbHBnc3FsX3BhcmFtX2V2YWxfdmFyX3Jv KEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsCiAJKm9wLT5yZXNudWxsID0g dmFyLT5pc251bGw7CiAKIAkvKiBzYWZldHkgY2hlY2sgLS0gYW4gYXNzZXJ0aW9uIHNob3Vs ZCBiZSBzdWZmaWNpZW50ICovCi0JQXNzZXJ0KHZhci0+ZGF0YXR5cGUtPnR5cG9pZCA9PSBv cC0+ZC5jcGFyYW0ucGFyYW10eXBlKTsKKwlBc3NlcnQodmFyLT5kYXRhdHlwZS0+dHlwb2lk ID09IG9wLT5jcGFyYW0ucGFyYW10eXBlKTsKIH0KIAogLyoKQEAgLTY3NTcsNyArNjc1Nyw3 IEBAIHBscGdzcWxfcGFyYW1fZXZhbF9yZWNmaWVsZChFeHByU3RhdGUgKnN0YXRlLCBFeHBy RXZhbFN0ZXAgKm9wLAogewogCVBhcmFtTGlzdEluZm8gcGFyYW1zOwogCVBMcGdTUUxfZXhl Y3N0YXRlICplc3RhdGU7Ci0JaW50CQkJZG5vID0gb3AtPmQuY3BhcmFtLnBhcmFtaWQgLSAx OworCWludAkJCWRubyA9IG9wLT5jcGFyYW0ucGFyYW1pZCAtIDE7CiAJUExwZ1NRTF9yZWNm aWVsZCAqcmVjZmllbGQ7CiAJUExwZ1NRTF9yZWMgKnJlYzsKIAlFeHBhbmRlZFJlY29yZEhl YWRlciAqZXJoOwpAQCAtNjgwOCwxMyArNjgwOCwxMyBAQCBwbHBnc3FsX3BhcmFtX2V2YWxf cmVjZmllbGQoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwKIAkJCQkJCQkJ CQkJICBvcC0+cmVzbnVsbCk7CiAKIAkvKiBzYWZldHkgY2hlY2sgLS0gbmVlZGVkIGZvciwg ZWcsIHJlY29yZCBmaWVsZHMgKi8KLQlpZiAodW5saWtlbHkocmVjZmllbGQtPmZpbmZvLmZ0 eXBlaWQgIT0gb3AtPmQuY3BhcmFtLnBhcmFtdHlwZSkpCisJaWYgKHVubGlrZWx5KHJlY2Zp ZWxkLT5maW5mby5mdHlwZWlkICE9IG9wLT5jcGFyYW0ucGFyYW10eXBlKSkKIAkJZXJlcG9y dChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKIAkJ CQkgZXJybXNnKCJ0eXBlIG9mIHBhcmFtZXRlciAlZCAoJXMpIGRvZXMgbm90IG1hdGNoIHRo YXQgd2hlbiBwcmVwYXJpbmcgdGhlIHBsYW4gKCVzKSIsCi0JCQkJCQlvcC0+ZC5jcGFyYW0u cGFyYW1pZCwKKwkJCQkJCW9wLT5jcGFyYW0ucGFyYW1pZCwKIAkJCQkJCWZvcm1hdF90eXBl X2JlKHJlY2ZpZWxkLT5maW5mby5mdHlwZWlkKSwKLQkJCQkJCWZvcm1hdF90eXBlX2JlKG9w LT5kLmNwYXJhbS5wYXJhbXR5cGUpKSkpOworCQkJCQkJZm9ybWF0X3R5cGVfYmUob3AtPmNw YXJhbS5wYXJhbXR5cGUpKSkpOwogfQogCiAvKgpAQCAtNjgyOSw3ICs2ODI5LDcgQEAgcGxw Z3NxbF9wYXJhbV9ldmFsX2dlbmVyaWMoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVw ICpvcCwKIHsKIAlQYXJhbUxpc3RJbmZvIHBhcmFtczsKIAlQTHBnU1FMX2V4ZWNzdGF0ZSAq ZXN0YXRlOwotCWludAkJCWRubyA9IG9wLT5kLmNwYXJhbS5wYXJhbWlkIC0gMTsKKwlpbnQJ CQlkbm8gPSBvcC0+Y3BhcmFtLnBhcmFtaWQgLSAxOwogCVBMcGdTUUxfZGF0dW0gKmRhdHVt OwogCU9pZAkJCWRhdHVtdHlwZTsKIAlpbnQzMgkJZGF0dW10eXBtb2Q7CkBAIC02ODQ4LDEz ICs2ODQ4LDEzIEBAIHBscGdzcWxfcGFyYW1fZXZhbF9nZW5lcmljKEV4cHJTdGF0ZSAqc3Rh dGUsIEV4cHJFdmFsU3RlcCAqb3AsCiAJCQkJCW9wLT5yZXN2YWx1ZSwgb3AtPnJlc251bGwp OwogCiAJLyogc2FmZXR5IGNoZWNrIC0tIG5lZWRlZCBmb3IsIGVnLCByZWNvcmQgZmllbGRz ICovCi0JaWYgKHVubGlrZWx5KGRhdHVtdHlwZSAhPSBvcC0+ZC5jcGFyYW0ucGFyYW10eXBl KSkKKwlpZiAodW5saWtlbHkoZGF0dW10eXBlICE9IG9wLT5jcGFyYW0ucGFyYW10eXBlKSkK IAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01B VENIKSwKIAkJCQkgZXJybXNnKCJ0eXBlIG9mIHBhcmFtZXRlciAlZCAoJXMpIGRvZXMgbm90 IG1hdGNoIHRoYXQgd2hlbiBwcmVwYXJpbmcgdGhlIHBsYW4gKCVzKSIsCi0JCQkJCQlvcC0+ ZC5jcGFyYW0ucGFyYW1pZCwKKwkJCQkJCW9wLT5jcGFyYW0ucGFyYW1pZCwKIAkJCQkJCWZv cm1hdF90eXBlX2JlKGRhdHVtdHlwZSksCi0JCQkJCQlmb3JtYXRfdHlwZV9iZShvcC0+ZC5j cGFyYW0ucGFyYW10eXBlKSkpKTsKKwkJCQkJCWZvcm1hdF90eXBlX2JlKG9wLT5jcGFyYW0u cGFyYW10eXBlKSkpKTsKIH0KIAogLyoKQEAgLTY4NjksNyArNjg2OSw3IEBAIHBscGdzcWxf cGFyYW1fZXZhbF9nZW5lcmljX3JvKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAq b3AsCiB7CiAJUGFyYW1MaXN0SW5mbyBwYXJhbXM7CiAJUExwZ1NRTF9leGVjc3RhdGUgKmVz dGF0ZTsKLQlpbnQJCQlkbm8gPSBvcC0+ZC5jcGFyYW0ucGFyYW1pZCAtIDE7CisJaW50CQkJ ZG5vID0gb3AtPmNwYXJhbS5wYXJhbWlkIC0gMTsKIAlQTHBnU1FMX2RhdHVtICpkYXR1bTsK IAlPaWQJCQlkYXR1bXR5cGU7CiAJaW50MzIJCWRhdHVtdHlwbW9kOwpAQCAtNjg4OCwxMyAr Njg4OCwxMyBAQCBwbHBnc3FsX3BhcmFtX2V2YWxfZ2VuZXJpY19ybyhFeHByU3RhdGUgKnN0 YXRlLCBFeHByRXZhbFN0ZXAgKm9wLAogCQkJCQlvcC0+cmVzdmFsdWUsIG9wLT5yZXNudWxs KTsKIAogCS8qIHNhZmV0eSBjaGVjayAtLSBuZWVkZWQgZm9yLCBlZywgcmVjb3JkIGZpZWxk cyAqLwotCWlmICh1bmxpa2VseShkYXR1bXR5cGUgIT0gb3AtPmQuY3BhcmFtLnBhcmFtdHlw ZSkpCisJaWYgKHVubGlrZWx5KGRhdHVtdHlwZSAhPSBvcC0+Y3BhcmFtLnBhcmFtdHlwZSkp CiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNN QVRDSCksCiAJCQkJIGVycm1zZygidHlwZSBvZiBwYXJhbWV0ZXIgJWQgKCVzKSBkb2VzIG5v dCBtYXRjaCB0aGF0IHdoZW4gcHJlcGFyaW5nIHRoZSBwbGFuICglcykiLAotCQkJCQkJb3At PmQuY3BhcmFtLnBhcmFtaWQsCisJCQkJCQlvcC0+Y3BhcmFtLnBhcmFtaWQsCiAJCQkJCQlm b3JtYXRfdHlwZV9iZShkYXR1bXR5cGUpLAotCQkJCQkJZm9ybWF0X3R5cGVfYmUob3AtPmQu Y3BhcmFtLnBhcmFtdHlwZSkpKSk7CisJCQkJCQlmb3JtYXRfdHlwZV9iZShvcC0+Y3BhcmFt LnBhcmFtdHlwZSkpKSk7CiAKIAkvKiBmb3JjZSB0aGUgdmFsdWUgdG8gcmVhZC1vbmx5ICov CiAJKm9wLT5yZXN2YWx1ZSA9IE1ha2VFeHBhbmRlZE9iamVjdFJlYWRPbmx5KCpvcC0+cmVz dmFsdWUsCi0tIAoyLjUxLjAKCg== --------------XMilSvfSoQNhBmwudkXUWZaX Content-Type: text/plain; charset=UTF-8; name="0023-C11-anonymous-unions-json.patch" Content-Disposition: attachment; filename="0023-C11-anonymous-unions-json.patch" Content-Transfer-Encoding: base64 RnJvbSBkMTVlMGZkMjg2MDFmZjE2M2UzNTZhNWNiN2FlOTQ2ZjhkNTBkNGFkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAyMiBTZXAgMjAyNSAxNDo0Nzo0OSArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMjMvMjNdIEMxMSBhbm9ueW1vdXMgdW5pb25zIFtqc29uXQoKLS0tCiBjb250 cmliL2hzdG9yZS9oc3RvcmVfaW8uYyAgICAgICAgICAgICAgfCAgMjIgKy0KIGNvbnRyaWIv anNvbmJfcGxwZXJsL2pzb25iX3BscGVybC5jICAgICB8ICAyOCArLQogY29udHJpYi9qc29u Yl9wbHB5dGhvbi9qc29uYl9wbHB5dGhvbi5jIHwgIDIyICstCiBzcmMvYmFja2VuZC9leGVj dXRvci9leGVjRXhwckludGVycC5jICAgfCAgMjQgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2Fk dC9qc29uYi5jICAgICAgICAgICB8IDE1NyArKysrKystLS0tLS0KIHNyYy9iYWNrZW5kL3V0 aWxzL2FkdC9qc29uYl9naW4uYyAgICAgICB8ICAzOCArLS0KIHNyYy9iYWNrZW5kL3V0aWxz L2FkdC9qc29uYl9vcC5jICAgICAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2pzb25iX3V0aWwuYyAgICAgIHwgMjQwICsrKysrKysrLS0tLS0tLS0tCiBzcmMvYmFja2Vu ZC91dGlscy9hZHQvanNvbmJzdWJzLmMgICAgICAgfCAgIDYgKy0KIHNyYy9iYWNrZW5kL3V0 aWxzL2FkdC9qc29uZnVuY3MuYyAgICAgICB8IDMyOCArKysrKysrKysrKystLS0tLS0tLS0t LS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aC5jICAgICAgICB8IDE3MCArKysr KystLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9leGVjLmMgICB8IDI0 OCArKysrKysrKystLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9n cmFtLnkgICB8ICA1NiArKy0tCiBzcmMvaW5jbHVkZS91dGlscy9qc29uYi5oICAgICAgICAg ICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL3V0aWxzL2pzb25wYXRoLmggICAgICAgICAg ICB8ICAgNCArLQogMTUgZmlsZXMgY2hhbmdlZCwgNjc4IGluc2VydGlvbnMoKyksIDY3OSBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL2hzdG9yZS9oc3RvcmVfaW8uYyBi L2NvbnRyaWIvaHN0b3JlL2hzdG9yZV9pby5jCmluZGV4IDljNTM4NzdjNGE1Li4zNjczZjJi YjZkZCAxMDA2NDQKLS0tIGEvY29udHJpYi9oc3RvcmUvaHN0b3JlX2lvLmMKKysrIGIvY29u dHJpYi9oc3RvcmUvaHN0b3JlX2lvLmMKQEAgLTE0NTAsOCArMTQ1MCw4IEBAIGhzdG9yZV90 b19qc29uYihQR19GVU5DVElPTl9BUkdTKQogCQkJCQl2YWw7CiAKIAkJa2V5LnR5cGUgPSBq YnZTdHJpbmc7Ci0JCWtleS52YWwuc3RyaW5nLmxlbiA9IEhTVE9SRV9LRVlMRU4oZW50cmll cywgaSk7Ci0JCWtleS52YWwuc3RyaW5nLnZhbCA9IEhTVE9SRV9LRVkoZW50cmllcywgYmFz ZSwgaSk7CisJCWtleS5zdHJpbmcubGVuID0gSFNUT1JFX0tFWUxFTihlbnRyaWVzLCBpKTsK KwkJa2V5LnN0cmluZy52YWwgPSBIU1RPUkVfS0VZKGVudHJpZXMsIGJhc2UsIGkpOwogCiAJ CSh2b2lkKSBwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9LRVksICZrZXkpOwogCkBAIC0x NDYyLDggKzE0NjIsOCBAQCBoc3RvcmVfdG9fanNvbmIoUEdfRlVOQ1RJT05fQVJHUykKIAkJ ZWxzZQogCQl7CiAJCQl2YWwudHlwZSA9IGpidlN0cmluZzsKLQkJCXZhbC52YWwuc3RyaW5n LmxlbiA9IEhTVE9SRV9WQUxMRU4oZW50cmllcywgaSk7Ci0JCQl2YWwudmFsLnN0cmluZy52 YWwgPSBIU1RPUkVfVkFMKGVudHJpZXMsIGJhc2UsIGkpOworCQkJdmFsLnN0cmluZy5sZW4g PSBIU1RPUkVfVkFMTEVOKGVudHJpZXMsIGkpOworCQkJdmFsLnN0cmluZy52YWwgPSBIU1RP UkVfVkFMKGVudHJpZXMsIGJhc2UsIGkpOwogCQl9CiAJCSh2b2lkKSBwdXNoSnNvbmJWYWx1 ZSgmc3RhdGUsIFdKQl9WQUxVRSwgJnZhbCk7CiAJfQpAQCAtMTQ5Niw4ICsxNDk2LDggQEAg aHN0b3JlX3RvX2pzb25iX2xvb3NlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJCXZhbDsKIAog CQlrZXkudHlwZSA9IGpidlN0cmluZzsKLQkJa2V5LnZhbC5zdHJpbmcubGVuID0gSFNUT1JF X0tFWUxFTihlbnRyaWVzLCBpKTsKLQkJa2V5LnZhbC5zdHJpbmcudmFsID0gSFNUT1JFX0tF WShlbnRyaWVzLCBiYXNlLCBpKTsKKwkJa2V5LnN0cmluZy5sZW4gPSBIU1RPUkVfS0VZTEVO KGVudHJpZXMsIGkpOworCQlrZXkuc3RyaW5nLnZhbCA9IEhTVE9SRV9LRVkoZW50cmllcywg YmFzZSwgaSk7CiAKIAkJKHZvaWQpIHB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0tFWSwg JmtleSk7CiAKQEAgLTE1MTAsMTMgKzE1MTAsMTMgQEAgaHN0b3JlX3RvX2pzb25iX2xvb3Nl KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJICooSFNUT1JFX1ZBTChlbnRyaWVzLCBiYXNlLCBp KSkgPT0gJ3QnKQogCQl7CiAJCQl2YWwudHlwZSA9IGpidkJvb2w7Ci0JCQl2YWwudmFsLmJv b2xlYW4gPSB0cnVlOworCQkJdmFsLmJvb2xlYW4gPSB0cnVlOwogCQl9CiAJCWVsc2UgaWYg KEhTVE9SRV9WQUxMRU4oZW50cmllcywgaSkgPT0gMSAmJgogCQkJCSAqKEhTVE9SRV9WQUwo ZW50cmllcywgYmFzZSwgaSkpID09ICdmJykKIAkJewogCQkJdmFsLnR5cGUgPSBqYnZCb29s OwotCQkJdmFsLnZhbC5ib29sZWFuID0gZmFsc2U7CisJCQl2YWwuYm9vbGVhbiA9IGZhbHNl OwogCQl9CiAJCWVsc2UKIAkJewpAQCAtMTUzMiwxMyArMTUzMiwxMyBAQCBoc3RvcmVfdG9f anNvbmJfbG9vc2UoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQkJCQkJCQkgICBDU3RyaW5nR2V0 RGF0dW0odG1wLmRhdGEpLAogCQkJCQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0oSW52YWxp ZE9pZCksCiAJCQkJCQkJCQkJICAgSW50MzJHZXREYXR1bSgtMSkpOwotCQkJCXZhbC52YWwu bnVtZXJpYyA9IERhdHVtR2V0TnVtZXJpYyhudW1kKTsKKwkJCQl2YWwubnVtZXJpYyA9IERh dHVtR2V0TnVtZXJpYyhudW1kKTsKIAkJCX0KIAkJCWVsc2UKIAkJCXsKIAkJCQl2YWwudHlw ZSA9IGpidlN0cmluZzsKLQkJCQl2YWwudmFsLnN0cmluZy5sZW4gPSBIU1RPUkVfVkFMTEVO KGVudHJpZXMsIGkpOwotCQkJCXZhbC52YWwuc3RyaW5nLnZhbCA9IEhTVE9SRV9WQUwoZW50 cmllcywgYmFzZSwgaSk7CisJCQkJdmFsLnN0cmluZy5sZW4gPSBIU1RPUkVfVkFMTEVOKGVu dHJpZXMsIGkpOworCQkJCXZhbC5zdHJpbmcudmFsID0gSFNUT1JFX1ZBTChlbnRyaWVzLCBi YXNlLCBpKTsKIAkJCX0KIAkJfQogCQkodm9pZCkgcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBX SkJfVkFMVUUsICZ2YWwpOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9qc29uYl9wbHBlcmwvanNv bmJfcGxwZXJsLmMgYi9jb250cmliL2pzb25iX3BscGVybC9qc29uYl9wbHBlcmwuYwppbmRl eCBjMDJlMmQ0MWFmMS4uMmI1ZTE2YzIyZjYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvanNvbmJf cGxwZXJsL2pzb25iX3BscGVybC5jCisrKyBiL2NvbnRyaWIvanNvbmJfcGxwZXJsL2pzb25i X3BscGVybC5jCkBAIC0yNCwxMiArMjQsMTIgQEAgSnNvbmJWYWx1ZV90b19TVihKc29uYlZh bHVlICpqYnYpCiAJc3dpdGNoIChqYnYtPnR5cGUpCiAJewogCQljYXNlIGpidkJpbmFyeToK LQkJCXJldHVybiBKc29uYl90b19TVihqYnYtPnZhbC5iaW5hcnkuZGF0YSk7CisJCQlyZXR1 cm4gSnNvbmJfdG9fU1YoamJ2LT5iaW5hcnkuZGF0YSk7CiAKIAkJY2FzZSBqYnZOdW1lcmlj OgogCQkJewogCQkJCWNoYXIJICAgKnN0ciA9IERhdHVtR2V0Q1N0cmluZyhEaXJlY3RGdW5j dGlvbkNhbGwxKG51bWVyaWNfb3V0LAotCQkJCQkJCQkJCQkJCQkJCQkgIE51bWVyaWNHZXRE YXR1bShqYnYtPnZhbC5udW1lcmljKSkpOworCQkJCQkJCQkJCQkJCQkJCQkgIE51bWVyaWNH ZXREYXR1bShqYnYtPm51bWVyaWMpKSk7CiAJCQkJU1YJCSAgICpyZXN1bHQgPSBuZXdTVm52 KFN2TlYoY3N0cjJzdihzdHIpKSk7CiAKIAkJCQlwZnJlZShzdHIpOwpAQCAtMzgsOCArMzgs OCBAQCBKc29uYlZhbHVlX3RvX1NWKEpzb25iVmFsdWUgKmpidikKIAogCQljYXNlIGpidlN0 cmluZzoKIAkJCXsKLQkJCQljaGFyCSAgICpzdHIgPSBwbnN0cmR1cChqYnYtPnZhbC5zdHJp bmcudmFsLAotCQkJCQkJCQkJCSAgIGpidi0+dmFsLnN0cmluZy5sZW4pOworCQkJCWNoYXIJ ICAgKnN0ciA9IHBuc3RyZHVwKGpidi0+c3RyaW5nLnZhbCwKKwkJCQkJCQkJCQkgICBqYnYt PnN0cmluZy5sZW4pOwogCQkJCVNWCQkgICAqcmVzdWx0ID0gY3N0cjJzdihzdHIpOwogCiAJ CQkJcGZyZWUoc3RyKTsKQEAgLTQ3LDcgKzQ3LDcgQEAgSnNvbmJWYWx1ZV90b19TVihKc29u YlZhbHVlICpqYnYpCiAJCQl9CiAKIAkJY2FzZSBqYnZCb29sOgotCQkJcmV0dXJuIG5ld1NW bnYoU3ZOVihqYnYtPnZhbC5ib29sZWFuID8gJlBMX3N2X3llcyA6ICZQTF9zdl9ubykpOwor CQkJcmV0dXJuIG5ld1NWbnYoU3ZOVihqYnYtPmJvb2xlYW4gPyAmUExfc3ZfeWVzIDogJlBM X3N2X25vKSk7CiAKIAkJY2FzZSBqYnZOdWxsOgogCQkJcmV0dXJuIG5ld1NWKDApOwpAQCAt NzIsNyArNzIsNyBAQCBKc29uYl90b19TVihKc29uYkNvbnRhaW5lciAqanNvbmIpCiAJc3dp dGNoIChyKQogCXsKIAkJY2FzZSBXSkJfQkVHSU5fQVJSQVk6Ci0JCQlpZiAodi52YWwuYXJy YXkucmF3U2NhbGFyKQorCQkJaWYgKHYuYXJyYXkucmF3U2NhbGFyKQogCQkJewogCQkJCUpz b25iVmFsdWUJdG1wOwogCkBAIC0xMTIsNyArMTEyLDcgQEAgSnNvbmJfdG9fU1YoSnNvbmJD b250YWluZXIgKmpzb25iKQogCQkJCQkJCVNWCQkgICAqdmFsdWUgPSBKc29uYlZhbHVlX3Rv X1NWKCZ2YWwpOwogCiAJCQkJCQkJKHZvaWQpIGh2X3N0b3JlKGh2LAotCQkJCQkJCQkJCQl2 LnZhbC5zdHJpbmcudmFsLCB2LnZhbC5zdHJpbmcubGVuLAorCQkJCQkJCQkJCQl2LnN0cmlu Zy52YWwsIHYuc3RyaW5nLmxlbiwKIAkJCQkJCQkJCQkJdmFsdWUsIDApOwogCQkJCQkJfQog CQkJCQl9CkBAIC0xNjQsOCArMTY0LDggQEAgSFZfdG9fSnNvbmJWYWx1ZShIViAqb2JqLCBK c29uYlBhcnNlU3RhdGUgKipqc29uYl9zdGF0ZSkKIAogCXdoaWxlICgodmFsID0gaHZfaXRl cm5leHRzdihvYmosICZrc3RyLCAma2xlbikpKQogCXsKLQkJa2V5LnZhbC5zdHJpbmcudmFs ID0gcG5zdHJkdXAoa3N0ciwga2xlbik7Ci0JCWtleS52YWwuc3RyaW5nLmxlbiA9IGtsZW47 CisJCWtleS5zdHJpbmcudmFsID0gcG5zdHJkdXAoa3N0ciwga2xlbik7CisJCWtleS5zdHJp bmcubGVuID0ga2xlbjsKIAkJcHVzaEpzb25iVmFsdWUoanNvbmJfc3RhdGUsIFdKQl9LRVks ICZrZXkpOwogCQkodm9pZCkgU1ZfdG9fSnNvbmJWYWx1ZSh2YWwsIGpzb25iX3N0YXRlLCBm YWxzZSk7CiAJfQpAQCAtMjA3LDcgKzIwNyw3IEBAIFNWX3RvX0pzb25iVmFsdWUoU1YgKmlu LCBKc29uYlBhcnNlU3RhdGUgKipqc29uYl9zdGF0ZSwgYm9vbCBpc19lbGVtKQogCQkJCWNv bnN0IGNoYXIgKnN0cnZhbCA9IFN2UFZfbm9sZW4oaW4pOwogCiAJCQkJb3V0LnR5cGUgPSBq YnZOdW1lcmljOwotCQkJCW91dC52YWwubnVtZXJpYyA9CisJCQkJb3V0Lm51bWVyaWMgPQog CQkJCQlEYXR1bUdldE51bWVyaWMoRGlyZWN0RnVuY3Rpb25DYWxsMyhudW1lcmljX2luLAog CQkJCQkJCQkJCQkJCQlDU3RyaW5nR2V0RGF0dW0oc3RydmFsKSwKIAkJCQkJCQkJCQkJCQkJ T2JqZWN0SWRHZXREYXR1bShJbnZhbGlkT2lkKSwKQEAgLTIxOCw3ICsyMTgsNyBAQCBTVl90 b19Kc29uYlZhbHVlKFNWICppbiwgSnNvbmJQYXJzZVN0YXRlICoqanNvbmJfc3RhdGUsIGJv b2wgaXNfZWxlbSkKIAkJCQlJVgkJCWl2YWwgPSBTdklWKGluKTsKIAogCQkJCW91dC50eXBl ID0gamJ2TnVtZXJpYzsKLQkJCQlvdXQudmFsLm51bWVyaWMgPSBpbnQ2NF90b19udW1lcmlj KGl2YWwpOworCQkJCW91dC5udW1lcmljID0gaW50NjRfdG9fbnVtZXJpYyhpdmFsKTsKIAkJ CX0KIAkJCWVsc2UgaWYgKFN2Tk9LKGluKSkKIAkJCXsKQEAgLTI0MCwxNSArMjQwLDE1IEBA IFNWX3RvX0pzb25iVmFsdWUoU1YgKmluLCBKc29uYlBhcnNlU3RhdGUgKipqc29uYl9zdGF0 ZSwgYm9vbCBpc19lbGVtKQogCQkJCQkJCSBlcnJtc2coImNhbm5vdCBjb252ZXJ0IE5hTiB0 byBqc29uYiIpKSk7CiAKIAkJCQlvdXQudHlwZSA9IGpidk51bWVyaWM7Ci0JCQkJb3V0LnZh bC5udW1lcmljID0KKwkJCQlvdXQubnVtZXJpYyA9CiAJCQkJCURhdHVtR2V0TnVtZXJpYyhE aXJlY3RGdW5jdGlvbkNhbGwxKGZsb2F0OF9udW1lcmljLAogCQkJCQkJCQkJCQkJCQlGbG9h dDhHZXREYXR1bShudmFsKSkpOwogCQkJfQogCQkJZWxzZSBpZiAoU3ZQT0soaW4pKQogCQkJ ewogCQkJCW91dC50eXBlID0gamJ2U3RyaW5nOwotCQkJCW91dC52YWwuc3RyaW5nLnZhbCA9 IHN2MmNzdHIoaW4pOwotCQkJCW91dC52YWwuc3RyaW5nLmxlbiA9IHN0cmxlbihvdXQudmFs LnN0cmluZy52YWwpOworCQkJCW91dC5zdHJpbmcudmFsID0gc3YyY3N0cihpbik7CisJCQkJ b3V0LnN0cmluZy5sZW4gPSBzdHJsZW4ob3V0LnN0cmluZy52YWwpOwogCQkJfQogCQkJZWxz ZQogCQkJewpkaWZmIC0tZ2l0IGEvY29udHJpYi9qc29uYl9wbHB5dGhvbi9qc29uYl9wbHB5 dGhvbi5jIGIvY29udHJpYi9qc29uYl9wbHB5dGhvbi9qc29uYl9wbHB5dGhvbi5jCmluZGV4 IDkzODM2MTVhYmJmLi4xMGEzYmUyOGZjYiAxMDA2NDQKLS0tIGEvY29udHJpYi9qc29uYl9w bHB5dGhvbi9qc29uYl9wbHB5dGhvbi5jCisrKyBiL2NvbnRyaWIvanNvbmJfcGxweXRob24v anNvbmJfcGxweXRob24uYwpAQCAtNzAsNyArNzAsNyBAQCBQTHlVbmljb2RlX0Zyb21Kc29u YlZhbHVlKEpzb25iVmFsdWUgKmpidikKIHsKIAlBc3NlcnQoamJ2LT50eXBlID09IGpidlN0 cmluZyk7CiAKLQlyZXR1cm4gUEx5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShqYnYtPnZh bC5zdHJpbmcudmFsLCBqYnYtPnZhbC5zdHJpbmcubGVuKTsKKwlyZXR1cm4gUEx5VW5pY29k ZV9Gcm9tU3RyaW5nQW5kU2l6ZShqYnYtPnN0cmluZy52YWwsIGpidi0+c3RyaW5nLmxlbik7 CiB9CiAKIC8qCkBAIC04Miw4ICs4Miw4IEBAIHN0YXRpYyB2b2lkCiBQTHlVbmljb2RlX1Rv SnNvbmJWYWx1ZShQeU9iamVjdCAqb2JqLCBKc29uYlZhbHVlICpqYnZFbGVtKQogewogCWpi dkVsZW0tPnR5cGUgPSBqYnZTdHJpbmc7Ci0JamJ2RWxlbS0+dmFsLnN0cmluZy52YWwgPSBQ THlPYmplY3RfQXNTdHJpbmcob2JqKTsKLQlqYnZFbGVtLT52YWwuc3RyaW5nLmxlbiA9IHN0 cmxlbihqYnZFbGVtLT52YWwuc3RyaW5nLnZhbCk7CisJamJ2RWxlbS0+c3RyaW5nLnZhbCA9 IFBMeU9iamVjdF9Bc1N0cmluZyhvYmopOworCWpidkVsZW0tPnN0cmluZy5sZW4gPSBzdHJs ZW4oamJ2RWxlbS0+c3RyaW5nLnZhbCk7CiB9CiAKIC8qCkBAIC0xMDAsMTQgKzEwMCwxNCBA QCBQTHlPYmplY3RfRnJvbUpzb25iVmFsdWUoSnNvbmJWYWx1ZSAqanNvbmJWYWx1ZSkKIAkJ CVB5X1JFVFVSTl9OT05FOwogCiAJCWNhc2UgamJ2QmluYXJ5OgotCQkJcmV0dXJuIFBMeU9i amVjdF9Gcm9tSnNvbmJDb250YWluZXIoanNvbmJWYWx1ZS0+dmFsLmJpbmFyeS5kYXRhKTsK KwkJCXJldHVybiBQTHlPYmplY3RfRnJvbUpzb25iQ29udGFpbmVyKGpzb25iVmFsdWUtPmJp bmFyeS5kYXRhKTsKIAogCQljYXNlIGpidk51bWVyaWM6CiAJCQl7CiAJCQkJRGF0dW0JCW51 bTsKIAkJCQljaGFyCSAgICpzdHI7CiAKLQkJCQludW0gPSBOdW1lcmljR2V0RGF0dW0oanNv bmJWYWx1ZS0+dmFsLm51bWVyaWMpOworCQkJCW51bSA9IE51bWVyaWNHZXREYXR1bShqc29u YlZhbHVlLT5udW1lcmljKTsKIAkJCQlzdHIgPSBEYXR1bUdldENTdHJpbmcoRGlyZWN0RnVu Y3Rpb25DYWxsMShudW1lcmljX291dCwgbnVtKSk7CiAKIAkJCQlyZXR1cm4gUHlPYmplY3Rf Q2FsbEZ1bmN0aW9uKGRlY2ltYWxfY29uc3RydWN0b3IsICJzIiwgc3RyKTsKQEAgLTExNyw3 ICsxMTcsNyBAQCBQTHlPYmplY3RfRnJvbUpzb25iVmFsdWUoSnNvbmJWYWx1ZSAqanNvbmJW YWx1ZSkKIAkJCXJldHVybiBQTHlVbmljb2RlX0Zyb21Kc29uYlZhbHVlKGpzb25iVmFsdWUp OwogCiAJCWNhc2UgamJ2Qm9vbDoKLQkJCWlmIChqc29uYlZhbHVlLT52YWwuYm9vbGVhbikK KwkJCWlmIChqc29uYlZhbHVlLT5ib29sZWFuKQogCQkJCVB5X1JFVFVSTl9UUlVFOwogCQkJ ZWxzZQogCQkJCVB5X1JFVFVSTl9GQUxTRTsKQEAgLTE0Nyw3ICsxNDcsNyBAQCBQTHlPYmpl Y3RfRnJvbUpzb25iQ29udGFpbmVyKEpzb25iQ29udGFpbmVyICpqc29uYikKIAlzd2l0Y2gg KHIpCiAJewogCQljYXNlIFdKQl9CRUdJTl9BUlJBWToKLQkJCWlmICh2LnZhbC5hcnJheS5y YXdTY2FsYXIpCisJCQlpZiAodi5hcnJheS5yYXdTY2FsYXIpCiAJCQl7CiAJCQkJSnNvbmJW YWx1ZQl0bXA7CiAKQEAgLTI4OCw4ICsyODgsOCBAQCBQTHlNYXBwaW5nX1RvSnNvbmJWYWx1 ZShQeU9iamVjdCAqb2JqLCBKc29uYlBhcnNlU3RhdGUgKipqc29uYl9zdGF0ZSkKIAkJCWlm IChrZXkgPT0gUHlfTm9uZSkKIAkJCXsKIAkJCQlqYnZLZXkudHlwZSA9IGpidlN0cmluZzsK LQkJCQlqYnZLZXkudmFsLnN0cmluZy5sZW4gPSAwOwotCQkJCWpidktleS52YWwuc3RyaW5n LnZhbCA9ICIiOworCQkJCWpidktleS5zdHJpbmcubGVuID0gMDsKKwkJCQlqYnZLZXkuc3Ry aW5nLnZhbCA9ICIiOwogCQkJfQogCQkJZWxzZQogCQkJewpAQCAtMzk2LDcgKzM5Niw3IEBA IFBMeU51bWJlcl9Ub0pzb25iVmFsdWUoUHlPYmplY3QgKm9iaiwgSnNvbmJWYWx1ZSAqamJ2 TnVtKQogCQkJCSBlcnJtc2coImNhbm5vdCBjb252ZXJ0IGluZmluaXR5IHRvIGpzb25iIikp KTsKIAogCWpidk51bS0+dHlwZSA9IGpidk51bWVyaWM7Ci0JamJ2TnVtLT52YWwubnVtZXJp YyA9IG51bTsKKwlqYnZOdW0tPm51bWVyaWMgPSBudW07CiAKIAlyZXR1cm4gamJ2TnVtOwog fQpAQCAtNDMzLDcgKzQzMyw3IEBAIFBMeU9iamVjdF9Ub0pzb25iVmFsdWUoUHlPYmplY3Qg Km9iaiwgSnNvbmJQYXJzZVN0YXRlICoqanNvbmJfc3RhdGUsIGJvb2wgaXNfZWxlCiAJZWxz ZSBpZiAoUHlCb29sX0NoZWNrKG9iaikpCiAJewogCQlvdXQtPnR5cGUgPSBqYnZCb29sOwot CQlvdXQtPnZhbC5ib29sZWFuID0gKG9iaiA9PSBQeV9UcnVlKTsKKwkJb3V0LT5ib29sZWFu ID0gKG9iaiA9PSBQeV9UcnVlKTsKIAl9CiAJZWxzZSBpZiAoUHlOdW1iZXJfQ2hlY2sob2Jq KSkKIAkJb3V0ID0gUEx5TnVtYmVyX1RvSnNvbmJWYWx1ZShvYmosIG91dCk7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYwppbmRleCA1MWY0OThiZDc5YS4uNTk1ODMy NDAwMGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJw LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYwpAQCAtNTA0 Nyw0MiArNTA0Nyw0MiBAQCBFeGVjR2V0SnNvblZhbHVlSXRlbVN0cmluZyhKc29uYlZhbHVl ICppdGVtLCBib29sICpyZXNudWxsKQogCiAJCWNhc2UgamJ2U3RyaW5nOgogCQkJewotCQkJ CWNoYXIJICAgKnN0ciA9IHBhbGxvYyhpdGVtLT52YWwuc3RyaW5nLmxlbiArIDEpOworCQkJ CWNoYXIJICAgKnN0ciA9IHBhbGxvYyhpdGVtLT5zdHJpbmcubGVuICsgMSk7CiAKLQkJCQlt ZW1jcHkoc3RyLCBpdGVtLT52YWwuc3RyaW5nLnZhbCwgaXRlbS0+dmFsLnN0cmluZy5sZW4p OwotCQkJCXN0cltpdGVtLT52YWwuc3RyaW5nLmxlbl0gPSAnXDAnOworCQkJCW1lbWNweShz dHIsIGl0ZW0tPnN0cmluZy52YWwsIGl0ZW0tPnN0cmluZy5sZW4pOworCQkJCXN0cltpdGVt LT5zdHJpbmcubGVuXSA9ICdcMCc7CiAJCQkJcmV0dXJuIHN0cjsKIAkJCX0KIAogCQljYXNl IGpidk51bWVyaWM6CiAJCQlyZXR1cm4gRGF0dW1HZXRDU3RyaW5nKERpcmVjdEZ1bmN0aW9u Q2FsbDEobnVtZXJpY19vdXQsCi0JCQkJCQkJCQkJCQkJICAgTnVtZXJpY0dldERhdHVtKGl0 ZW0tPnZhbC5udW1lcmljKSkpOworCQkJCQkJCQkJCQkJCSAgIE51bWVyaWNHZXREYXR1bShp dGVtLT5udW1lcmljKSkpOwogCiAJCWNhc2UgamJ2Qm9vbDoKIAkJCXJldHVybiBEYXR1bUdl dENTdHJpbmcoRGlyZWN0RnVuY3Rpb25DYWxsMShib29sb3V0LAotCQkJCQkJCQkJCQkJCSAg IEJvb2xHZXREYXR1bShpdGVtLT52YWwuYm9vbGVhbikpKTsKKwkJCQkJCQkJCQkJCQkgICBC b29sR2V0RGF0dW0oaXRlbS0+Ym9vbGVhbikpKTsKIAogCQljYXNlIGpidkRhdGV0aW1lOgot CQkJc3dpdGNoIChpdGVtLT52YWwuZGF0ZXRpbWUudHlwaWQpCisJCQlzd2l0Y2ggKGl0ZW0t PmRhdGV0aW1lLnR5cGlkKQogCQkJewogCQkJCWNhc2UgREFURU9JRDoKIAkJCQkJcmV0dXJu IERhdHVtR2V0Q1N0cmluZyhEaXJlY3RGdW5jdGlvbkNhbGwxKGRhdGVfb3V0LAotCQkJCQkJ CQkJCQkJCQkJICAgaXRlbS0+dmFsLmRhdGV0aW1lLnZhbHVlKSk7CisJCQkJCQkJCQkJCQkJ CQkgICBpdGVtLT5kYXRldGltZS52YWx1ZSkpOwogCQkJCWNhc2UgVElNRU9JRDoKIAkJCQkJ cmV0dXJuIERhdHVtR2V0Q1N0cmluZyhEaXJlY3RGdW5jdGlvbkNhbGwxKHRpbWVfb3V0LAot CQkJCQkJCQkJCQkJCQkJICAgaXRlbS0+dmFsLmRhdGV0aW1lLnZhbHVlKSk7CisJCQkJCQkJ CQkJCQkJCQkgICBpdGVtLT5kYXRldGltZS52YWx1ZSkpOwogCQkJCWNhc2UgVElNRVRaT0lE OgogCQkJCQlyZXR1cm4gRGF0dW1HZXRDU3RyaW5nKERpcmVjdEZ1bmN0aW9uQ2FsbDEodGlt ZXR6X291dCwKLQkJCQkJCQkJCQkJCQkJCSAgIGl0ZW0tPnZhbC5kYXRldGltZS52YWx1ZSkp OworCQkJCQkJCQkJCQkJCQkJICAgaXRlbS0+ZGF0ZXRpbWUudmFsdWUpKTsKIAkJCQljYXNl IFRJTUVTVEFNUE9JRDoKIAkJCQkJcmV0dXJuIERhdHVtR2V0Q1N0cmluZyhEaXJlY3RGdW5j dGlvbkNhbGwxKHRpbWVzdGFtcF9vdXQsCi0JCQkJCQkJCQkJCQkJCQkgICBpdGVtLT52YWwu ZGF0ZXRpbWUudmFsdWUpKTsKKwkJCQkJCQkJCQkJCQkJCSAgIGl0ZW0tPmRhdGV0aW1lLnZh bHVlKSk7CiAJCQkJY2FzZSBUSU1FU1RBTVBUWk9JRDoKIAkJCQkJcmV0dXJuIERhdHVtR2V0 Q1N0cmluZyhEaXJlY3RGdW5jdGlvbkNhbGwxKHRpbWVzdGFtcHR6X291dCwKLQkJCQkJCQkJ CQkJCQkJCSAgIGl0ZW0tPnZhbC5kYXRldGltZS52YWx1ZSkpOworCQkJCQkJCQkJCQkJCQkJ ICAgaXRlbS0+ZGF0ZXRpbWUudmFsdWUpKTsKIAkJCQlkZWZhdWx0OgogCQkJCQllbG9nKEVS Uk9SLCAidW5leHBlY3RlZCBqc29uYiBkYXRldGltZSB0eXBlIG9pZCAldSIsCi0JCQkJCQkg aXRlbS0+dmFsLmRhdGV0aW1lLnR5cGlkKTsKKwkJCQkJCSBpdGVtLT5kYXRldGltZS50eXBp ZCk7CiAJCQl9CiAJCQlicmVhazsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2pzb25iLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmIuYwppbmRleCBkYTk0 ZDQyNGQ2MS4uYWU5NTYyY2VmYzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9qc29uYi5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYi5jCkBAIC0xODIs NyArMTgyLDcgQEAgSnNvbmJUeXBlTmFtZShKc29uYlZhbHVlICp2YWwpCiAJc3dpdGNoICh2 YWwtPnR5cGUpCiAJewogCQljYXNlIGpidkJpbmFyeToKLQkJCXJldHVybiBKc29uYkNvbnRh aW5lclR5cGVOYW1lKHZhbC0+dmFsLmJpbmFyeS5kYXRhKTsKKwkJCXJldHVybiBKc29uYkNv bnRhaW5lclR5cGVOYW1lKHZhbC0+YmluYXJ5LmRhdGEpOwogCQljYXNlIGpidk9iamVjdDoK IAkJCXJldHVybiAib2JqZWN0IjsKIAkJY2FzZSBqYnZBcnJheToKQEAgLTE5Niw3ICsxOTYs NyBAQCBKc29uYlR5cGVOYW1lKEpzb25iVmFsdWUgKnZhbCkKIAkJY2FzZSBqYnZOdWxsOgog CQkJcmV0dXJuICJudWxsIjsKIAkJY2FzZSBqYnZEYXRldGltZToKLQkJCXN3aXRjaCAodmFs LT52YWwuZGF0ZXRpbWUudHlwaWQpCisJCQlzd2l0Y2ggKHZhbC0+ZGF0ZXRpbWUudHlwaWQp CiAJCQl7CiAJCQkJY2FzZSBEQVRFT0lEOgogCQkJCQlyZXR1cm4gImRhdGUiOwpAQCAtMjEw LDcgKzIxMCw3IEBAIEpzb25iVHlwZU5hbWUoSnNvbmJWYWx1ZSAqdmFsKQogCQkJCQlyZXR1 cm4gInRpbWVzdGFtcCB3aXRoIHRpbWUgem9uZSI7CiAJCQkJZGVmYXVsdDoKIAkJCQkJZWxv ZyhFUlJPUiwgInVucmVjb2duaXplZCBqc29uYiB2YWx1ZSBkYXRldGltZSB0eXBlOiAlZCIs Ci0JCQkJCQkgdmFsLT52YWwuZGF0ZXRpbWUudHlwaWQpOworCQkJCQkJIHZhbC0+ZGF0ZXRp bWUudHlwaWQpOwogCQkJfQogCQkJcmV0dXJuICJ1bmtub3duIjsKIAkJZGVmYXVsdDoKQEAg LTMzNSwxMCArMzM1LDEwIEBAIGpzb25iX2luX29iamVjdF9maWVsZF9zdGFydCh2b2lkICpw c3RhdGUsIGNoYXIgKmZuYW1lLCBib29sIGlzbnVsbCkKIAogCUFzc2VydChmbmFtZSAhPSBO VUxMKTsKIAl2LnR5cGUgPSBqYnZTdHJpbmc7Ci0Jdi52YWwuc3RyaW5nLmxlbiA9IHN0cmxl bihmbmFtZSk7Ci0JaWYgKCFjaGVja1N0cmluZ0xlbih2LnZhbC5zdHJpbmcubGVuLCBfc3Rh dGUtPmVzY29udGV4dCkpCisJdi5zdHJpbmcubGVuID0gc3RybGVuKGZuYW1lKTsKKwlpZiAo IWNoZWNrU3RyaW5nTGVuKHYuc3RyaW5nLmxlbiwgX3N0YXRlLT5lc2NvbnRleHQpKQogCQly ZXR1cm4gSlNPTl9TRU1fQUNUSU9OX0ZBSUxFRDsKLQl2LnZhbC5zdHJpbmcudmFsID0gZm5h bWU7CisJdi5zdHJpbmcudmFsID0gZm5hbWU7CiAKIAlfc3RhdGUtPnJlcyA9IHB1c2hKc29u YlZhbHVlKCZfc3RhdGUtPnBhcnNlU3RhdGUsIFdKQl9LRVksICZ2KTsKIApAQCAtMzU0LDE1 ICszNTQsMTUgQEAganNvbmJfcHV0X2VzY2FwZWRfdmFsdWUoU3RyaW5nSW5mbyBvdXQsIEpz b25iVmFsdWUgKnNjYWxhclZhbCkKIAkJCWFwcGVuZEJpbmFyeVN0cmluZ0luZm8ob3V0LCAi bnVsbCIsIDQpOwogCQkJYnJlYWs7CiAJCWNhc2UgamJ2U3RyaW5nOgotCQkJZXNjYXBlX2pz b25fd2l0aF9sZW4ob3V0LCBzY2FsYXJWYWwtPnZhbC5zdHJpbmcudmFsLCBzY2FsYXJWYWwt PnZhbC5zdHJpbmcubGVuKTsKKwkJCWVzY2FwZV9qc29uX3dpdGhfbGVuKG91dCwgc2NhbGFy VmFsLT5zdHJpbmcudmFsLCBzY2FsYXJWYWwtPnN0cmluZy5sZW4pOwogCQkJYnJlYWs7CiAJ CWNhc2UgamJ2TnVtZXJpYzoKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcob3V0LAogCQkJ CQkJCQkgICBEYXR1bUdldENTdHJpbmcoRGlyZWN0RnVuY3Rpb25DYWxsMShudW1lcmljX291 dCwKLQkJCQkJCQkJCQkJCQkJCQkJICAgUG9pbnRlckdldERhdHVtKHNjYWxhclZhbC0+dmFs Lm51bWVyaWMpKSkpOworCQkJCQkJCQkJCQkJCQkJCQkgICBQb2ludGVyR2V0RGF0dW0oc2Nh bGFyVmFsLT5udW1lcmljKSkpKTsKIAkJCWJyZWFrOwogCQljYXNlIGpidkJvb2w6Ci0JCQlp ZiAoc2NhbGFyVmFsLT52YWwuYm9vbGVhbikKKwkJCWlmIChzY2FsYXJWYWwtPmJvb2xlYW4p CiAJCQkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbyhvdXQsICJ0cnVlIiwgNCk7CiAJCQllbHNl CiAJCQkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbyhvdXQsICJmYWxzZSIsIDUpOwpAQCAtMzg4 LDEwICszODgsMTAgQEAganNvbmJfaW5fc2NhbGFyKHZvaWQgKnBzdGF0ZSwgY2hhciAqdG9r ZW4sIEpzb25Ub2tlblR5cGUgdG9rZW50eXBlKQogCQljYXNlIEpTT05fVE9LRU5fU1RSSU5H OgogCQkJQXNzZXJ0KHRva2VuICE9IE5VTEwpOwogCQkJdi50eXBlID0gamJ2U3RyaW5nOwot CQkJdi52YWwuc3RyaW5nLmxlbiA9IHN0cmxlbih0b2tlbik7Ci0JCQlpZiAoIWNoZWNrU3Ry aW5nTGVuKHYudmFsLnN0cmluZy5sZW4sIF9zdGF0ZS0+ZXNjb250ZXh0KSkKKwkJCXYuc3Ry aW5nLmxlbiA9IHN0cmxlbih0b2tlbik7CisJCQlpZiAoIWNoZWNrU3RyaW5nTGVuKHYuc3Ry aW5nLmxlbiwgX3N0YXRlLT5lc2NvbnRleHQpKQogCQkJCXJldHVybiBKU09OX1NFTV9BQ1RJ T05fRkFJTEVEOwotCQkJdi52YWwuc3RyaW5nLnZhbCA9IHRva2VuOworCQkJdi5zdHJpbmcu dmFsID0gdG9rZW47CiAJCQlicmVhazsKIAkJY2FzZSBKU09OX1RPS0VOX05VTUJFUjoKIApA QCAtNDA2LDE1ICs0MDYsMTUgQEAganNvbmJfaW5fc2NhbGFyKHZvaWQgKnBzdGF0ZSwgY2hh ciAqdG9rZW4sIEpzb25Ub2tlblR5cGUgdG9rZW50eXBlKQogCQkJCQkJCQkJCQkgX3N0YXRl LT5lc2NvbnRleHQsCiAJCQkJCQkJCQkJCSAmbnVtZCkpCiAJCQkJcmV0dXJuIEpTT05fU0VN X0FDVElPTl9GQUlMRUQ7Ci0JCQl2LnZhbC5udW1lcmljID0gRGF0dW1HZXROdW1lcmljKG51 bWQpOworCQkJdi5udW1lcmljID0gRGF0dW1HZXROdW1lcmljKG51bWQpOwogCQkJYnJlYWs7 CiAJCWNhc2UgSlNPTl9UT0tFTl9UUlVFOgogCQkJdi50eXBlID0gamJ2Qm9vbDsKLQkJCXYu dmFsLmJvb2xlYW4gPSB0cnVlOworCQkJdi5ib29sZWFuID0gdHJ1ZTsKIAkJCWJyZWFrOwog CQljYXNlIEpTT05fVE9LRU5fRkFMU0U6CiAJCQl2LnR5cGUgPSBqYnZCb29sOwotCQkJdi52 YWwuYm9vbGVhbiA9IGZhbHNlOworCQkJdi5ib29sZWFuID0gZmFsc2U7CiAJCQlicmVhazsK IAkJY2FzZSBKU09OX1RPS0VOX05VTEw6CiAJCQl2LnR5cGUgPSBqYnZOdWxsOwpAQCAtNDMx LDggKzQzMSw4IEBAIGpzb25iX2luX3NjYWxhcih2b2lkICpwc3RhdGUsIGNoYXIgKnRva2Vu LCBKc29uVG9rZW5UeXBlIHRva2VudHlwZSkKIAkJSnNvbmJWYWx1ZQl2YTsKIAogCQl2YS50 eXBlID0gamJ2QXJyYXk7Ci0JCXZhLnZhbC5hcnJheS5yYXdTY2FsYXIgPSB0cnVlOwotCQl2 YS52YWwuYXJyYXkubkVsZW1zID0gMTsKKwkJdmEuYXJyYXkucmF3U2NhbGFyID0gdHJ1ZTsK KwkJdmEuYXJyYXkubkVsZW1zID0gMTsKIAogCQlfc3RhdGUtPnJlcyA9IHB1c2hKc29uYlZh bHVlKCZfc3RhdGUtPnBhcnNlU3RhdGUsIFdKQl9CRUdJTl9BUlJBWSwgJnZhKTsKIAkJX3N0 YXRlLT5yZXMgPSBwdXNoSnNvbmJWYWx1ZSgmX3N0YXRlLT5wYXJzZVN0YXRlLCBXSkJfRUxF TSwgJnYpOwpAQCAtNTI1LDcgKzUyNSw3IEBAIEpzb25iVG9DU3RyaW5nV29ya2VyKFN0cmlu Z0luZm8gb3V0LCBKc29uYkNvbnRhaW5lciAqaW4sIGludCBlc3RpbWF0ZWRfbGVuLCBib29s CiAJCQkJaWYgKCFmaXJzdCkKIAkJCQkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbyhvdXQsICIs ICIsIGlzcGFjZXMpOwogCi0JCQkJaWYgKCF2LnZhbC5hcnJheS5yYXdTY2FsYXIpCisJCQkJ aWYgKCF2LmFycmF5LnJhd1NjYWxhcikKIAkJCQl7CiAJCQkJCWFkZF9pbmRlbnQob3V0LCB1 c2VfaW5kZW50ICYmICFsYXN0X3dhc19rZXksIGxldmVsKTsKIAkJCQkJYXBwZW5kU3RyaW5n SW5mb0NoYXJNYWNybyhvdXQsICdbJyk7CkBAIC02ODEsMTMgKzY4MSwxMyBAQCBkYXR1bV90 b19qc29uYl9pbnRlcm5hbChEYXR1bSB2YWwsIGJvb2wgaXNfbnVsbCwgSnNvbmJJblN0YXRl ICpyZXN1bHQsCiAJCQkJewogCQkJCQlvdXRwdXRzdHIgPSBEYXR1bUdldEJvb2wodmFsKSA/ ICJ0cnVlIiA6ICJmYWxzZSI7CiAJCQkJCWpiLnR5cGUgPSBqYnZTdHJpbmc7Ci0JCQkJCWpi LnZhbC5zdHJpbmcubGVuID0gc3RybGVuKG91dHB1dHN0cik7Ci0JCQkJCWpiLnZhbC5zdHJp bmcudmFsID0gb3V0cHV0c3RyOworCQkJCQlqYi5zdHJpbmcubGVuID0gc3RybGVuKG91dHB1 dHN0cik7CisJCQkJCWpiLnN0cmluZy52YWwgPSBvdXRwdXRzdHI7CiAJCQkJfQogCQkJCWVs c2UKIAkJCQl7CiAJCQkJCWpiLnR5cGUgPSBqYnZCb29sOwotCQkJCQlqYi52YWwuYm9vbGVh biA9IERhdHVtR2V0Qm9vbCh2YWwpOworCQkJCQlqYi5ib29sZWFuID0gRGF0dW1HZXRCb29s KHZhbCk7CiAJCQkJfQogCQkJCWJyZWFrOwogCQkJY2FzZSBKU09OVFlQRV9OVU1FUklDOgpA QCAtNjk2LDggKzY5Niw4IEBAIGRhdHVtX3RvX2pzb25iX2ludGVybmFsKERhdHVtIHZhbCwg Ym9vbCBpc19udWxsLCBKc29uYkluU3RhdGUgKnJlc3VsdCwKIAkJCQl7CiAJCQkJCS8qIGFs d2F5cyBxdW90ZSBrZXlzICovCiAJCQkJCWpiLnR5cGUgPSBqYnZTdHJpbmc7Ci0JCQkJCWpi LnZhbC5zdHJpbmcubGVuID0gc3RybGVuKG91dHB1dHN0cik7Ci0JCQkJCWpiLnZhbC5zdHJp bmcudmFsID0gb3V0cHV0c3RyOworCQkJCQlqYi5zdHJpbmcubGVuID0gc3RybGVuKG91dHB1 dHN0cik7CisJCQkJCWpiLnN0cmluZy52YWwgPSBvdXRwdXRzdHI7CiAJCQkJfQogCQkJCWVs c2UKIAkJCQl7CkBAIC03MTcsMzQgKzcxNywzNCBAQCBkYXR1bV90b19qc29uYl9pbnRlcm5h bChEYXR1bSB2YWwsIGJvb2wgaXNfbnVsbCwgSnNvbmJJblN0YXRlICpyZXN1bHQsCiAJCQkJ CQkJCQkJCQkgICBDU3RyaW5nR2V0RGF0dW0ob3V0cHV0c3RyKSwKIAkJCQkJCQkJCQkJCSAg IE9iamVjdElkR2V0RGF0dW0oSW52YWxpZE9pZCksCiAJCQkJCQkJCQkJCQkgICBJbnQzMkdl dERhdHVtKC0xKSk7Ci0JCQkJCQlqYi52YWwubnVtZXJpYyA9IERhdHVtR2V0TnVtZXJpYyhu dW1kKTsKKwkJCQkJCWpiLm51bWVyaWMgPSBEYXR1bUdldE51bWVyaWMobnVtZCk7CiAJCQkJ CQlwZnJlZShvdXRwdXRzdHIpOwogCQkJCQl9CiAJCQkJCWVsc2UKIAkJCQkJewogCQkJCQkJ amIudHlwZSA9IGpidlN0cmluZzsKLQkJCQkJCWpiLnZhbC5zdHJpbmcubGVuID0gc3RybGVu KG91dHB1dHN0cik7Ci0JCQkJCQlqYi52YWwuc3RyaW5nLnZhbCA9IG91dHB1dHN0cjsKKwkJ CQkJCWpiLnN0cmluZy5sZW4gPSBzdHJsZW4ob3V0cHV0c3RyKTsKKwkJCQkJCWpiLnN0cmlu Zy52YWwgPSBvdXRwdXRzdHI7CiAJCQkJCX0KIAkJCQl9CiAJCQkJYnJlYWs7CiAJCQljYXNl IEpTT05UWVBFX0RBVEU6CiAJCQkJamIudHlwZSA9IGpidlN0cmluZzsKLQkJCQlqYi52YWwu c3RyaW5nLnZhbCA9IEpzb25FbmNvZGVEYXRlVGltZShOVUxMLCB2YWwsCi0JCQkJCQkJCQkJ CQkJICAgREFURU9JRCwgTlVMTCk7Ci0JCQkJamIudmFsLnN0cmluZy5sZW4gPSBzdHJsZW4o amIudmFsLnN0cmluZy52YWwpOworCQkJCWpiLnN0cmluZy52YWwgPSBKc29uRW5jb2RlRGF0 ZVRpbWUoTlVMTCwgdmFsLAorCQkJCQkJCQkJCQkJICAgREFURU9JRCwgTlVMTCk7CisJCQkJ amIuc3RyaW5nLmxlbiA9IHN0cmxlbihqYi5zdHJpbmcudmFsKTsKIAkJCQlicmVhazsKIAkJ CWNhc2UgSlNPTlRZUEVfVElNRVNUQU1QOgogCQkJCWpiLnR5cGUgPSBqYnZTdHJpbmc7Ci0J CQkJamIudmFsLnN0cmluZy52YWwgPSBKc29uRW5jb2RlRGF0ZVRpbWUoTlVMTCwgdmFsLAot CQkJCQkJCQkJCQkJCSAgIFRJTUVTVEFNUE9JRCwgTlVMTCk7Ci0JCQkJamIudmFsLnN0cmlu Zy5sZW4gPSBzdHJsZW4oamIudmFsLnN0cmluZy52YWwpOworCQkJCWpiLnN0cmluZy52YWwg PSBKc29uRW5jb2RlRGF0ZVRpbWUoTlVMTCwgdmFsLAorCQkJCQkJCQkJCQkJICAgVElNRVNU QU1QT0lELCBOVUxMKTsKKwkJCQlqYi5zdHJpbmcubGVuID0gc3RybGVuKGpiLnN0cmluZy52 YWwpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBKU09OVFlQRV9USU1FU1RBTVBUWjoKIAkJCQlq Yi50eXBlID0gamJ2U3RyaW5nOwotCQkJCWpiLnZhbC5zdHJpbmcudmFsID0gSnNvbkVuY29k ZURhdGVUaW1lKE5VTEwsIHZhbCwKLQkJCQkJCQkJCQkJCQkgICBUSU1FU1RBTVBUWk9JRCwg TlVMTCk7Ci0JCQkJamIudmFsLnN0cmluZy5sZW4gPSBzdHJsZW4oamIudmFsLnN0cmluZy52 YWwpOworCQkJCWpiLnN0cmluZy52YWwgPSBKc29uRW5jb2RlRGF0ZVRpbWUoTlVMTCwgdmFs LAorCQkJCQkJCQkJCQkJICAgVElNRVNUQU1QVFpPSUQsIE5VTEwpOworCQkJCWpiLnN0cmlu Zy5sZW4gPSBzdHJsZW4oamIuc3RyaW5nLnZhbCk7CiAJCQkJYnJlYWs7CiAJCQljYXNlIEpT T05UWVBFX0NBU1Q6CiAJCQljYXNlIEpTT05UWVBFX0pTT046CkBAIC04MDYsOSArODA2LDkg QEAgZGF0dW1fdG9fanNvbmJfaW50ZXJuYWwoRGF0dW0gdmFsLCBib29sIGlzX251bGwsIEpz b25iSW5TdGF0ZSAqcmVzdWx0LAogCQkJZGVmYXVsdDoKIAkJCQlvdXRwdXRzdHIgPSBPaWRP dXRwdXRGdW5jdGlvbkNhbGwob3V0ZnVuY29pZCwgdmFsKTsKIAkJCQlqYi50eXBlID0gamJ2 U3RyaW5nOwotCQkJCWpiLnZhbC5zdHJpbmcubGVuID0gc3RybGVuKG91dHB1dHN0cik7Ci0J CQkJKHZvaWQpIGNoZWNrU3RyaW5nTGVuKGpiLnZhbC5zdHJpbmcubGVuLCBOVUxMKTsKLQkJ CQlqYi52YWwuc3RyaW5nLnZhbCA9IG91dHB1dHN0cjsKKwkJCQlqYi5zdHJpbmcubGVuID0g c3RybGVuKG91dHB1dHN0cik7CisJCQkJKHZvaWQpIGNoZWNrU3RyaW5nTGVuKGpiLnN0cmlu Zy5sZW4sIE5VTEwpOworCQkJCWpiLnN0cmluZy52YWwgPSBvdXRwdXRzdHI7CiAJCQkJYnJl YWs7CiAJCX0KIAl9CkBAIC04MjYsOCArODI2LDggQEAgZGF0dW1fdG9fanNvbmJfaW50ZXJu YWwoRGF0dW0gdmFsLCBib29sIGlzX251bGwsIEpzb25iSW5TdGF0ZSAqcmVzdWx0LAogCQlK c29uYlZhbHVlCXZhOwogCiAJCXZhLnR5cGUgPSBqYnZBcnJheTsKLQkJdmEudmFsLmFycmF5 LnJhd1NjYWxhciA9IHRydWU7Ci0JCXZhLnZhbC5hcnJheS5uRWxlbXMgPSAxOworCQl2YS5h cnJheS5yYXdTY2FsYXIgPSB0cnVlOworCQl2YS5hcnJheS5uRWxlbXMgPSAxOwogCiAJCXJl c3VsdC0+cmVzID0gcHVzaEpzb25iVmFsdWUoJnJlc3VsdC0+cGFyc2VTdGF0ZSwgV0pCX0JF R0lOX0FSUkFZLCAmdmEpOwogCQlyZXN1bHQtPnJlcyA9IHB1c2hKc29uYlZhbHVlKCZyZXN1 bHQtPnBhcnNlU3RhdGUsIFdKQl9FTEVNLCAmamIpOwpAQCAtOTgwLDggKzk4MCw4IEBAIGNv bXBvc2l0ZV90b19qc29uYihEYXR1bSBjb21wb3NpdGUsIEpzb25iSW5TdGF0ZSAqcmVzdWx0 KQogCiAJCXYudHlwZSA9IGpidlN0cmluZzsKIAkJLyogZG9uJ3QgbmVlZCBjaGVja1N0cmlu Z0xlbiBoZXJlIC0gY2FuJ3QgZXhjZWVkIG1heGltdW0gbmFtZSBsZW5ndGggKi8KLQkJdi52 YWwuc3RyaW5nLmxlbiA9IHN0cmxlbihhdHRuYW1lKTsKLQkJdi52YWwuc3RyaW5nLnZhbCA9 IGF0dG5hbWU7CisJCXYuc3RyaW5nLmxlbiA9IHN0cmxlbihhdHRuYW1lKTsKKwkJdi5zdHJp bmcudmFsID0gYXR0bmFtZTsKIAogCQlyZXN1bHQtPnJlcyA9IHB1c2hKc29uYlZhbHVlKCZy ZXN1bHQtPnBhcnNlU3RhdGUsIFdKQl9LRVksICZ2KTsKIApAQCAtMTMzNyw4ICsxMzM3LDgg QEAganNvbmJfb2JqZWN0KFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAkJdi50eXBlID0gamJ2U3Ry aW5nOwogCi0JCXYudmFsLnN0cmluZy5sZW4gPSBsZW47Ci0JCXYudmFsLnN0cmluZy52YWwg PSBzdHI7CisJCXYuc3RyaW5nLmxlbiA9IGxlbjsKKwkJdi5zdHJpbmcudmFsID0gc3RyOwog CiAJCSh2b2lkKSBwdXNoSnNvbmJWYWx1ZSgmcmVzdWx0LnBhcnNlU3RhdGUsIFdKQl9LRVks ICZ2KTsKIApAQCAtMTM1Myw4ICsxMzUzLDggQEAganNvbmJfb2JqZWN0KFBHX0ZVTkNUSU9O X0FSR1MpCiAKIAkJCXYudHlwZSA9IGpidlN0cmluZzsKIAotCQkJdi52YWwuc3RyaW5nLmxl biA9IGxlbjsKLQkJCXYudmFsLnN0cmluZy52YWwgPSBzdHI7CisJCQl2LnN0cmluZy5sZW4g PSBsZW47CisJCQl2LnN0cmluZy52YWwgPSBzdHI7CiAJCX0KIAogCQkodm9pZCkgcHVzaEpz b25iVmFsdWUoJnJlc3VsdC5wYXJzZVN0YXRlLCBXSkJfVkFMVUUsICZ2KTsKQEAgLTE0Mjcs OCArMTQyNyw4IEBAIGpzb25iX29iamVjdF90d29fYXJnKFBHX0ZVTkNUSU9OX0FSR1MpCiAK IAkJdi50eXBlID0gamJ2U3RyaW5nOwogCi0JCXYudmFsLnN0cmluZy5sZW4gPSBsZW47Ci0J CXYudmFsLnN0cmluZy52YWwgPSBzdHI7CisJCXYuc3RyaW5nLmxlbiA9IGxlbjsKKwkJdi5z dHJpbmcudmFsID0gc3RyOwogCiAJCSh2b2lkKSBwdXNoSnNvbmJWYWx1ZSgmcmVzdWx0LnBh cnNlU3RhdGUsIFdKQl9LRVksICZ2KTsKIApAQCAtMTQ0Myw4ICsxNDQzLDggQEAganNvbmJf b2JqZWN0X3R3b19hcmcoUEdfRlVOQ1RJT05fQVJHUykKIAogCQkJdi50eXBlID0gamJ2U3Ry aW5nOwogCi0JCQl2LnZhbC5zdHJpbmcubGVuID0gbGVuOwotCQkJdi52YWwuc3RyaW5nLnZh bCA9IHN0cjsKKwkJCXYuc3RyaW5nLmxlbiA9IGxlbjsKKwkJCXYuc3RyaW5nLnZhbCA9IHN0 cjsKIAkJfQogCiAJCSh2b2lkKSBwdXNoSnNvbmJWYWx1ZSgmcmVzdWx0LnBhcnNlU3RhdGUs IFdKQl9WQUxVRSwgJnYpOwpAQCAtMTU3MSw3ICsxNTcxLDcgQEAganNvbmJfYWdnX3RyYW5z Zm5fd29ya2VyKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBib29sIGFic2VudF9vbl9udWxs KQogCQlzd2l0Y2ggKHR5cGUpCiAJCXsKIAkJCWNhc2UgV0pCX0JFR0lOX0FSUkFZOgotCQkJ CWlmICh2LnZhbC5hcnJheS5yYXdTY2FsYXIpCisJCQkJaWYgKHYuYXJyYXkucmF3U2NhbGFy KQogCQkJCQlzaW5nbGVfc2NhbGFyID0gdHJ1ZTsKIAkJCQllbHNlCiAJCQkJCXJlc3VsdC0+ cmVzID0gcHVzaEpzb25iVmFsdWUoJnJlc3VsdC0+cGFyc2VTdGF0ZSwKQEAgLTE1OTMsMTcg KzE1OTMsMTcgQEAganNvbmJfYWdnX3RyYW5zZm5fd29ya2VyKEZ1bmN0aW9uQ2FsbEluZm8g ZmNpbmZvLCBib29sIGFic2VudF9vbl9udWxsKQogCQkJCWlmICh2LnR5cGUgPT0gamJ2U3Ry aW5nKQogCQkJCXsKIAkJCQkJLyogY29weSBzdHJpbmcgdmFsdWVzIGluIHRoZSBhZ2dyZWdh dGUgY29udGV4dCAqLwotCQkJCQljaGFyCSAgICpidWYgPSBwYWxsb2Modi52YWwuc3RyaW5n LmxlbiArIDEpOworCQkJCQljaGFyCSAgICpidWYgPSBwYWxsb2Modi5zdHJpbmcubGVuICsg MSk7CiAKLQkJCQkJc25wcmludGYoYnVmLCB2LnZhbC5zdHJpbmcubGVuICsgMSwgIiVzIiwg di52YWwuc3RyaW5nLnZhbCk7Ci0JCQkJCXYudmFsLnN0cmluZy52YWwgPSBidWY7CisJCQkJ CXNucHJpbnRmKGJ1Ziwgdi5zdHJpbmcubGVuICsgMSwgIiVzIiwgdi5zdHJpbmcudmFsKTsK KwkJCQkJdi5zdHJpbmcudmFsID0gYnVmOwogCQkJCX0KIAkJCQllbHNlIGlmICh2LnR5cGUg PT0gamJ2TnVtZXJpYykKIAkJCQl7CiAJCQkJCS8qIHNhbWUgZm9yIG51bWVyaWMgKi8KLQkJ CQkJdi52YWwubnVtZXJpYyA9CisJCQkJCXYubnVtZXJpYyA9CiAJCQkJCQlEYXR1bUdldE51 bWVyaWMoRGlyZWN0RnVuY3Rpb25DYWxsMShudW1lcmljX3VwbHVzLAotCQkJCQkJCQkJCQkJ CQkJTnVtZXJpY0dldERhdHVtKHYudmFsLm51bWVyaWMpKSk7CisJCQkJCQkJCQkJCQkJCQlO dW1lcmljR2V0RGF0dW0odi5udW1lcmljKSkpOwogCQkJCX0KIAkJCQlyZXN1bHQtPnJlcyA9 IHB1c2hKc29uYlZhbHVlKCZyZXN1bHQtPnBhcnNlU3RhdGUsCiAJCQkJCQkJCQkJCSB0eXBl LCAmdik7CkBAIC0xNzg3LDE3ICsxNzg3LDE3IEBAIGpzb25iX29iamVjdF9hZ2dfdHJhbnNm bl93b3JrZXIoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sCiAJCXN3aXRjaCAodHlwZSkKIAkJ ewogCQkJY2FzZSBXSkJfQkVHSU5fQVJSQVk6Ci0JCQkJaWYgKCF2LnZhbC5hcnJheS5yYXdT Y2FsYXIpCisJCQkJaWYgKCF2LmFycmF5LnJhd1NjYWxhcikKIAkJCQkJZWxvZyhFUlJPUiwg InVuZXhwZWN0ZWQgc3RydWN0dXJlIGZvciBrZXkiKTsKIAkJCQlicmVhazsKIAkJCWNhc2Ug V0pCX0VMRU06CiAJCQkJaWYgKHYudHlwZSA9PSBqYnZTdHJpbmcpCiAJCQkJewogCQkJCQkv KiBjb3B5IHN0cmluZyB2YWx1ZXMgaW4gdGhlIGFnZ3JlZ2F0ZSBjb250ZXh0ICovCi0JCQkJ CWNoYXIJICAgKmJ1ZiA9IHBhbGxvYyh2LnZhbC5zdHJpbmcubGVuICsgMSk7CisJCQkJCWNo YXIJICAgKmJ1ZiA9IHBhbGxvYyh2LnN0cmluZy5sZW4gKyAxKTsKIAotCQkJCQlzbnByaW50 ZihidWYsIHYudmFsLnN0cmluZy5sZW4gKyAxLCAiJXMiLCB2LnZhbC5zdHJpbmcudmFsKTsK LQkJCQkJdi52YWwuc3RyaW5nLnZhbCA9IGJ1ZjsKKwkJCQkJc25wcmludGYoYnVmLCB2LnN0 cmluZy5sZW4gKyAxLCAiJXMiLCB2LnN0cmluZy52YWwpOworCQkJCQl2LnN0cmluZy52YWwg PSBidWY7CiAJCQkJfQogCQkJCWVsc2UKIAkJCQl7CkBAIC0xODQxLDcgKzE4NDEsNyBAQCBq c29uYl9vYmplY3RfYWdnX3RyYW5zZm5fd29ya2VyKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZv LAogCQlzd2l0Y2ggKHR5cGUpCiAJCXsKIAkJCWNhc2UgV0pCX0JFR0lOX0FSUkFZOgotCQkJ CWlmICh2LnZhbC5hcnJheS5yYXdTY2FsYXIpCisJCQkJaWYgKHYuYXJyYXkucmF3U2NhbGFy KQogCQkJCQlzaW5nbGVfc2NhbGFyID0gdHJ1ZTsKIAkJCQllbHNlCiAJCQkJCXJlc3VsdC0+ cmVzID0gcHVzaEpzb25iVmFsdWUoJnJlc3VsdC0+cGFyc2VTdGF0ZSwKQEAgLTE4NjMsMTcg KzE4NjMsMTcgQEAganNvbmJfb2JqZWN0X2FnZ190cmFuc2ZuX3dvcmtlcihGdW5jdGlvbkNh bGxJbmZvIGZjaW5mbywKIAkJCQlpZiAodi50eXBlID09IGpidlN0cmluZykKIAkJCQl7CiAJ CQkJCS8qIGNvcHkgc3RyaW5nIHZhbHVlcyBpbiB0aGUgYWdncmVnYXRlIGNvbnRleHQgKi8K LQkJCQkJY2hhcgkgICAqYnVmID0gcGFsbG9jKHYudmFsLnN0cmluZy5sZW4gKyAxKTsKKwkJ CQkJY2hhcgkgICAqYnVmID0gcGFsbG9jKHYuc3RyaW5nLmxlbiArIDEpOwogCi0JCQkJCXNu cHJpbnRmKGJ1Ziwgdi52YWwuc3RyaW5nLmxlbiArIDEsICIlcyIsIHYudmFsLnN0cmluZy52 YWwpOwotCQkJCQl2LnZhbC5zdHJpbmcudmFsID0gYnVmOworCQkJCQlzbnByaW50ZihidWYs IHYuc3RyaW5nLmxlbiArIDEsICIlcyIsIHYuc3RyaW5nLnZhbCk7CisJCQkJCXYuc3RyaW5n LnZhbCA9IGJ1ZjsKIAkJCQl9CiAJCQkJZWxzZSBpZiAodi50eXBlID09IGpidk51bWVyaWMp CiAJCQkJewogCQkJCQkvKiBzYW1lIGZvciBudW1lcmljICovCi0JCQkJCXYudmFsLm51bWVy aWMgPQorCQkJCQl2Lm51bWVyaWMgPQogCQkJCQkJRGF0dW1HZXROdW1lcmljKERpcmVjdEZ1 bmN0aW9uQ2FsbDEobnVtZXJpY191cGx1cywKLQkJCQkJCQkJCQkJCQkJCU51bWVyaWNHZXRE YXR1bSh2LnZhbC5udW1lcmljKSkpOworCQkJCQkJCQkJCQkJCQkJTnVtZXJpY0dldERhdHVt KHYubnVtZXJpYykpKTsKIAkJCQl9CiAJCQkJcmVzdWx0LT5yZXMgPSBwdXNoSnNvbmJWYWx1 ZSgmcmVzdWx0LT5wYXJzZVN0YXRlLAogCQkJCQkJCQkJCQkgc2luZ2xlX3NjYWxhciA/IFdK Ql9WQUxVRSA6IHR5cGUsCkBAIC0xOTg2LDcgKzE5ODYsNyBAQCBKc29uYkV4dHJhY3RTY2Fs YXIoSnNvbmJDb250YWluZXIgKmpiYywgSnNvbmJWYWx1ZSAqcmVzKQogCiAJdG9rID0gSnNv bmJJdGVyYXRvck5leHQoJml0LCAmdG1wLCB0cnVlKTsKIAlBc3NlcnQodG9rID09IFdKQl9C RUdJTl9BUlJBWSk7Ci0JQXNzZXJ0KHRtcC52YWwuYXJyYXkubkVsZW1zID09IDEgJiYgdG1w LnZhbC5hcnJheS5yYXdTY2FsYXIpOworCUFzc2VydCh0bXAuYXJyYXkubkVsZW1zID09IDEg JiYgdG1wLmFycmF5LnJhd1NjYWxhcik7CiAKIAl0b2sgPSBKc29uYkl0ZXJhdG9yTmV4dCgm aXQsIHJlcywgdHJ1ZSk7CiAJQXNzZXJ0KHRvayA9PSBXSkJfRUxFTSk7CkBAIC0yMDU0LDcg KzIwNTQsNyBAQCBqc29uYl9ib29sKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlQR19GUkVFX0lG X0NPUFkoaW4sIDApOwogCi0JUEdfUkVUVVJOX0JPT0wodi52YWwuYm9vbGVhbik7CisJUEdf UkVUVVJOX0JPT0wodi5ib29sZWFuKTsKIH0KIAogRGF0dW0KQEAgLTIwNzcsMTAgKzIwNzcs OSBAQCBqc29uYl9udW1lcmljKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWNhbm5vdENhc3RKc29u YlZhbHVlKHYudHlwZSwgIm51bWVyaWMiKTsKIAogCS8qCi0JICogdi52YWwubnVtZXJpYyBw b2ludHMgaW50byBqc29uYiBib2R5LCBzbyB3ZSBuZWVkIHRvIG1ha2UgYSBjb3B5IHRvCi0J ICogcmV0dXJuCisJICogdi5udW1lcmljIHBvaW50cyBpbnRvIGpzb25iIGJvZHksIHNvIHdl IG5lZWQgdG8gbWFrZSBhIGNvcHkgdG8gcmV0dXJuCiAJICovCi0JcmV0VmFsdWUgPSBEYXR1 bUdldE51bWVyaWNDb3B5KE51bWVyaWNHZXREYXR1bSh2LnZhbC5udW1lcmljKSk7CisJcmV0 VmFsdWUgPSBEYXR1bUdldE51bWVyaWNDb3B5KE51bWVyaWNHZXREYXR1bSh2Lm51bWVyaWMp KTsKIAogCVBHX0ZSRUVfSUZfQ09QWShpbiwgMCk7CiAKQEAgLTIxMDcsNyArMjEwNiw3IEBA IGpzb25iX2ludDIoUEdfRlVOQ1RJT05fQVJHUykKIAkJY2Fubm90Q2FzdEpzb25iVmFsdWUo di50eXBlLCAic21hbGxpbnQiKTsKIAogCXJldFZhbHVlID0gRGlyZWN0RnVuY3Rpb25DYWxs MShudW1lcmljX2ludDIsCi0JCQkJCQkJCSAgIE51bWVyaWNHZXREYXR1bSh2LnZhbC5udW1l cmljKSk7CisJCQkJCQkJCSAgIE51bWVyaWNHZXREYXR1bSh2Lm51bWVyaWMpKTsKIAogCVBH X0ZSRUVfSUZfQ09QWShpbiwgMCk7CiAKQEAgLTIxMzQsNyArMjEzMyw3IEBAIGpzb25iX2lu dDQoUEdfRlVOQ1RJT05fQVJHUykKIAkJY2Fubm90Q2FzdEpzb25iVmFsdWUodi50eXBlLCAi aW50ZWdlciIpOwogCiAJcmV0VmFsdWUgPSBEaXJlY3RGdW5jdGlvbkNhbGwxKG51bWVyaWNf aW50NCwKLQkJCQkJCQkJICAgTnVtZXJpY0dldERhdHVtKHYudmFsLm51bWVyaWMpKTsKKwkJ CQkJCQkJICAgTnVtZXJpY0dldERhdHVtKHYubnVtZXJpYykpOwogCiAJUEdfRlJFRV9JRl9D T1BZKGluLCAwKTsKIApAQCAtMjE2MSw3ICsyMTYwLDcgQEAganNvbmJfaW50OChQR19GVU5D VElPTl9BUkdTKQogCQljYW5ub3RDYXN0SnNvbmJWYWx1ZSh2LnR5cGUsICJiaWdpbnQiKTsK IAogCXJldFZhbHVlID0gRGlyZWN0RnVuY3Rpb25DYWxsMShudW1lcmljX2ludDgsCi0JCQkJ CQkJCSAgIE51bWVyaWNHZXREYXR1bSh2LnZhbC5udW1lcmljKSk7CisJCQkJCQkJCSAgIE51 bWVyaWNHZXREYXR1bSh2Lm51bWVyaWMpKTsKIAogCVBHX0ZSRUVfSUZfQ09QWShpbiwgMCk7 CiAKQEAgLTIxODgsNyArMjE4Nyw3IEBAIGpzb25iX2Zsb2F0NChQR19GVU5DVElPTl9BUkdT KQogCQljYW5ub3RDYXN0SnNvbmJWYWx1ZSh2LnR5cGUsICJyZWFsIik7CiAKIAlyZXRWYWx1 ZSA9IERpcmVjdEZ1bmN0aW9uQ2FsbDEobnVtZXJpY19mbG9hdDQsCi0JCQkJCQkJCSAgIE51 bWVyaWNHZXREYXR1bSh2LnZhbC5udW1lcmljKSk7CisJCQkJCQkJCSAgIE51bWVyaWNHZXRE YXR1bSh2Lm51bWVyaWMpKTsKIAogCVBHX0ZSRUVfSUZfQ09QWShpbiwgMCk7CiAKQEAgLTIy MTUsNyArMjIxNCw3IEBAIGpzb25iX2Zsb2F0OChQR19GVU5DVElPTl9BUkdTKQogCQljYW5u b3RDYXN0SnNvbmJWYWx1ZSh2LnR5cGUsICJkb3VibGUgcHJlY2lzaW9uIik7CiAKIAlyZXRW YWx1ZSA9IERpcmVjdEZ1bmN0aW9uQ2FsbDEobnVtZXJpY19mbG9hdDgsCi0JCQkJCQkJCSAg IE51bWVyaWNHZXREYXR1bSh2LnZhbC5udW1lcmljKSk7CisJCQkJCQkJCSAgIE51bWVyaWNH ZXREYXR1bSh2Lm51bWVyaWMpKTsKIAogCVBHX0ZSRUVfSUZfQ09QWShpbiwgMCk7CiAKQEAg LTIyMzUsMTIgKzIyMzQsMTIgQEAgSnNvbmJVbnF1b3RlKEpzb25iICpqYikKIAkJKHZvaWQp IEpzb25iRXh0cmFjdFNjYWxhcigmamItPnJvb3QsICZ2KTsKIAogCQlpZiAodi50eXBlID09 IGpidlN0cmluZykKLQkJCXJldHVybiBwbnN0cmR1cCh2LnZhbC5zdHJpbmcudmFsLCB2LnZh bC5zdHJpbmcubGVuKTsKKwkJCXJldHVybiBwbnN0cmR1cCh2LnN0cmluZy52YWwsIHYuc3Ry aW5nLmxlbik7CiAJCWVsc2UgaWYgKHYudHlwZSA9PSBqYnZCb29sKQotCQkJcmV0dXJuIHBz dHJkdXAodi52YWwuYm9vbGVhbiA/ICJ0cnVlIiA6ICJmYWxzZSIpOworCQkJcmV0dXJuIHBz dHJkdXAodi5ib29sZWFuID8gInRydWUiIDogImZhbHNlIik7CiAJCWVsc2UgaWYgKHYudHlw ZSA9PSBqYnZOdW1lcmljKQogCQkJcmV0dXJuIERhdHVtR2V0Q1N0cmluZyhEaXJlY3RGdW5j dGlvbkNhbGwxKG51bWVyaWNfb3V0LAotCQkJCQkJCQkJCQkJCSAgIFBvaW50ZXJHZXREYXR1 bSh2LnZhbC5udW1lcmljKSkpOworCQkJCQkJCQkJCQkJCSAgIFBvaW50ZXJHZXREYXR1bSh2 Lm51bWVyaWMpKSk7CiAJCWVsc2UgaWYgKHYudHlwZSA9PSBqYnZOdWxsKQogCQkJcmV0dXJu IHBzdHJkdXAoIm51bGwiKTsKIAkJZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2pzb25iX2dpbi5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iX2dpbi5j CmluZGV4IDliNTYyNDhjZjBiLi40YjdjYjM5ZTk2ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2pzb25iX2dpbi5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9q c29uYl9naW4uYwpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0cnVjdCBKc29uUGF0aEdpbk5vZGUK IAkJCQkJCQkJICogbm9kZXMgYWZ0ZXIgZW50cmllcyBvdXRwdXQgKi8KIAkJRGF0dW0JCWVu dHJ5RGF0dW07IC8qIHBhdGggaGFzaCBvciBrZXkgbmFtZS9zY2FsYXIsIHZhbGlkIGZvcgog CQkJCQkJCQkgKiBFTlRSWSBub2RlcyBiZWZvcmUgZW50cmllcyBvdXRwdXQgKi8KLQl9CQkJ dmFsOworCX07CiAJSnNvblBhdGhHaW5Ob2RlICphcmdzW0ZMRVhJQkxFX0FSUkFZX01FTUJF Ul07CS8qIHZhbGlkIGZvciBPUiBhbmQgQU5ECiAJCQkJCQkJCQkJCQkJICogbm9kZXMgKi8K IH07CkBAIC0zMzMsNyArMzMzLDcgQEAganNvbmJfcGF0aF9vcHNfX2FkZF9wYXRoX2l0ZW0o SnNvblBhdGhHaW5QYXRoICpwYXRoLCBKc29uUGF0aEl0ZW0gKmpzcCkKIAkJCQlKc29uYlZh bHVlCWpidjsKIAogCQkJCWpidi50eXBlID0gamJ2U3RyaW5nOwotCQkJCWpidi52YWwuc3Ry aW5nLnZhbCA9IGpzcEdldFN0cmluZyhqc3AsICZqYnYudmFsLnN0cmluZy5sZW4pOworCQkJ CWpidi5zdHJpbmcudmFsID0ganNwR2V0U3RyaW5nKGpzcCwgJmpidi5zdHJpbmcubGVuKTsK IAogCQkJCUpzb25iSGFzaFNjYWxhclZhbHVlKCZqYnYsICZwYXRoLT5oYXNoKTsKIAkJCQly ZXR1cm4gdHJ1ZTsKQEAgLTM1NSw3ICszNTUsNyBAQCBtYWtlX2pzcF9lbnRyeV9ub2RlKERh dHVtIGVudHJ5KQogCUpzb25QYXRoR2luTm9kZSAqbm9kZSA9IHBhbGxvYyhvZmZzZXRvZihK c29uUGF0aEdpbk5vZGUsIGFyZ3MpKTsKIAogCW5vZGUtPnR5cGUgPSBKU1BfR0lOX0VOVFJZ OwotCW5vZGUtPnZhbC5lbnRyeURhdHVtID0gZW50cnk7CisJbm9kZS0+ZW50cnlEYXR1bSA9 IGVudHJ5OwogCiAJcmV0dXJuIG5vZGU7CiB9CkBAIC0zNzMsNyArMzczLDcgQEAgbWFrZV9q c3BfZXhwcl9ub2RlKEpzb25QYXRoR2luTm9kZVR5cGUgdHlwZSwgaW50IG5hcmdzKQogCQkJ CQkJCQkgICBzaXplb2Yobm9kZS0+YXJnc1swXSkgKiBuYXJncyk7CiAKIAlub2RlLT50eXBl ID0gdHlwZTsKLQlub2RlLT52YWwubmFyZ3MgPSBuYXJnczsKKwlub2RlLT5uYXJncyA9IG5h cmdzOwogCiAJcmV0dXJuIG5vZGU7CiB9CkBAIC02ODcsMTggKzY4NywxOCBAQCBleHRyYWN0 X2pzcF9ib29sX2V4cHIoSnNvblBhdGhHaW5Db250ZXh0ICpjeHQsIEpzb25QYXRoR2luUGF0 aCBwYXRoLAogCQkJCQkJYnJlYWs7CiAJCQkJCWNhc2UganBpQm9vbDoKIAkJCQkJCXNjYWxh ci50eXBlID0gamJ2Qm9vbDsKLQkJCQkJCXNjYWxhci52YWwuYm9vbGVhbiA9ICEhKnNjYWxh cl9pdGVtLT5jb250ZW50LnZhbHVlLmRhdGE7CisJCQkJCQlzY2FsYXIuYm9vbGVhbiA9ICEh KnNjYWxhcl9pdGVtLT52YWx1ZS5kYXRhOwogCQkJCQkJYnJlYWs7CiAJCQkJCWNhc2UganBp TnVtZXJpYzoKIAkJCQkJCXNjYWxhci50eXBlID0gamJ2TnVtZXJpYzsKLQkJCQkJCXNjYWxh ci52YWwubnVtZXJpYyA9Ci0JCQkJCQkJKE51bWVyaWMpIHNjYWxhcl9pdGVtLT5jb250ZW50 LnZhbHVlLmRhdGE7CisJCQkJCQlzY2FsYXIubnVtZXJpYyA9CisJCQkJCQkJKE51bWVyaWMp IHNjYWxhcl9pdGVtLT52YWx1ZS5kYXRhOwogCQkJCQkJYnJlYWs7CiAJCQkJCWNhc2UganBp U3RyaW5nOgogCQkJCQkJc2NhbGFyLnR5cGUgPSBqYnZTdHJpbmc7Ci0JCQkJCQlzY2FsYXIu dmFsLnN0cmluZy52YWwgPSBzY2FsYXJfaXRlbS0+Y29udGVudC52YWx1ZS5kYXRhOwotCQkJ CQkJc2NhbGFyLnZhbC5zdHJpbmcubGVuID0KLQkJCQkJCQlzY2FsYXJfaXRlbS0+Y29udGVu dC52YWx1ZS5kYXRhbGVuOworCQkJCQkJc2NhbGFyLnN0cmluZy52YWwgPSBzY2FsYXJfaXRl bS0+dmFsdWUuZGF0YTsKKwkJCQkJCXNjYWxhci5zdHJpbmcubGVuID0KKwkJCQkJCQlzY2Fs YXJfaXRlbS0+dmFsdWUuZGF0YWxlbjsKIAkJCQkJCWJyZWFrOwogCQkJCQlkZWZhdWx0Ogog CQkJCQkJZWxvZyhFUlJPUiwgImludmFsaWQgc2NhbGFyIGpzb25wYXRoIGl0ZW0gdHlwZTog JWQiLApAQCAtNzI0LDcgKzcyNCw3IEBAIGVtaXRfanNwX2dpbl9lbnRyaWVzKEpzb25QYXRo R2luTm9kZSAqbm9kZSwgR2luRW50cmllcyAqZW50cmllcykKIAl7CiAJCWNhc2UgSlNQX0dJ Tl9FTlRSWToKIAkJCS8qIHJlcGxhY2UgZGF0dW0gd2l0aCBpdHMgaW5kZXggaW4gdGhlIGFy cmF5ICovCi0JCQlub2RlLT52YWwuZW50cnlJbmRleCA9IGFkZF9naW5fZW50cnkoZW50cmll cywgbm9kZS0+dmFsLmVudHJ5RGF0dW0pOworCQkJbm9kZS0+ZW50cnlJbmRleCA9IGFkZF9n aW5fZW50cnkoZW50cmllcywgbm9kZS0+ZW50cnlEYXR1bSk7CiAJCQlicmVhazsKIAogCQlj YXNlIEpTUF9HSU5fT1I6CkBAIC03MzIsNyArNzMyLDcgQEAgZW1pdF9qc3BfZ2luX2VudHJp ZXMoSnNvblBhdGhHaW5Ob2RlICpub2RlLCBHaW5FbnRyaWVzICplbnRyaWVzKQogCQkJewog CQkJCWludAkJCWk7CiAKLQkJCQlmb3IgKGkgPSAwOyBpIDwgbm9kZS0+dmFsLm5hcmdzOyBp KyspCisJCQkJZm9yIChpID0gMDsgaSA8IG5vZGUtPm5hcmdzOyBpKyspCiAJCQkJCWVtaXRf anNwX2dpbl9lbnRyaWVzKG5vZGUtPmFyZ3NbaV0sIGVudHJpZXMpOwogCiAJCQkJYnJlYWs7 CkBAIC04MDYsNyArODA2LDcgQEAgZXhlY3V0ZV9qc3BfZ2luX25vZGUoSnNvblBhdGhHaW5O b2RlICpub2RlLCB2b2lkICpjaGVjaywgYm9vbCB0ZXJuYXJ5KQogCXsKIAkJY2FzZSBKU1Bf R0lOX0FORDoKIAkJCXJlcyA9IEdJTl9UUlVFOwotCQkJZm9yIChpID0gMDsgaSA8IG5vZGUt PnZhbC5uYXJnczsgaSsrKQorCQkJZm9yIChpID0gMDsgaSA8IG5vZGUtPm5hcmdzOyBpKysp CiAJCQl7CiAJCQkJdiA9IGV4ZWN1dGVfanNwX2dpbl9ub2RlKG5vZGUtPmFyZ3NbaV0sIGNo ZWNrLCB0ZXJuYXJ5KTsKIAkJCQlpZiAodiA9PSBHSU5fRkFMU0UpCkBAIC04MTgsNyArODE4 LDcgQEAgZXhlY3V0ZV9qc3BfZ2luX25vZGUoSnNvblBhdGhHaW5Ob2RlICpub2RlLCB2b2lk ICpjaGVjaywgYm9vbCB0ZXJuYXJ5KQogCiAJCWNhc2UgSlNQX0dJTl9PUjoKIAkJCXJlcyA9 IEdJTl9GQUxTRTsKLQkJCWZvciAoaSA9IDA7IGkgPCBub2RlLT52YWwubmFyZ3M7IGkrKykK KwkJCWZvciAoaSA9IDA7IGkgPCBub2RlLT5uYXJnczsgaSsrKQogCQkJewogCQkJCXYgPSBl eGVjdXRlX2pzcF9naW5fbm9kZShub2RlLT5hcmdzW2ldLCBjaGVjaywgdGVybmFyeSk7CiAJ CQkJaWYgKHYgPT0gR0lOX1RSVUUpCkBAIC04MzAsNyArODMwLDcgQEAgZXhlY3V0ZV9qc3Bf Z2luX25vZGUoSnNvblBhdGhHaW5Ob2RlICpub2RlLCB2b2lkICpjaGVjaywgYm9vbCB0ZXJu YXJ5KQogCiAJCWNhc2UgSlNQX0dJTl9FTlRSWToKIAkJCXsKLQkJCQlpbnQJCQlpbmRleCA9 IG5vZGUtPnZhbC5lbnRyeUluZGV4OworCQkJCWludAkJCWluZGV4ID0gbm9kZS0+ZW50cnlJ bmRleDsKIAogCQkJCWlmICh0ZXJuYXJ5KQogCQkJCQlyZXR1cm4gKChHaW5UZXJuYXJ5VmFs dWUgKikgY2hlY2spW2luZGV4XTsKQEAgLTEzNzUsNyArMTM3NSw3IEBAIG1ha2Vfc2NhbGFy X2tleShjb25zdCBKc29uYlZhbHVlICpzY2FsYXJWYWwsIGJvb2wgaXNfa2V5KQogCQljYXNl IGpidkJvb2w6CiAJCQlBc3NlcnQoIWlzX2tleSk7CiAJCQlpdGVtID0gbWFrZV90ZXh0X2tl eShKR0lORkxBR19CT09MLAotCQkJCQkJCQkgc2NhbGFyVmFsLT52YWwuYm9vbGVhbiA/ICJ0 IiA6ICJmIiwgMSk7CisJCQkJCQkJCSBzY2FsYXJWYWwtPmJvb2xlYW4gPyAidCIgOiAiZiIs IDEpOwogCQkJYnJlYWs7CiAJCWNhc2UgamJ2TnVtZXJpYzoKIAkJCUFzc2VydCghaXNfa2V5 KTsKQEAgLTEzOTAsMTQgKzEzOTAsMTQgQEAgbWFrZV9zY2FsYXJfa2V5KGNvbnN0IEpzb25i VmFsdWUgKnNjYWxhclZhbCwgYm9vbCBpc19rZXkpCiAJCQkgKiBzdG9yaW5nIGEgInVuaW9u IiB0eXBlIGluIHRoZSBHSU4gQi1UcmVlLCBhbmQgaW5kZXhpbmcgSnNvbmIKIAkJCSAqIHN0 cmluZ3MgdGFrZXMgcHJlY2VkZW5jZS4KIAkJCSAqLwotCQkJY3N0ciA9IG51bWVyaWNfbm9y bWFsaXplKHNjYWxhclZhbC0+dmFsLm51bWVyaWMpOworCQkJY3N0ciA9IG51bWVyaWNfbm9y bWFsaXplKHNjYWxhclZhbC0+bnVtZXJpYyk7CiAJCQlpdGVtID0gbWFrZV90ZXh0X2tleShK R0lORkxBR19OVU0sIGNzdHIsIHN0cmxlbihjc3RyKSk7CiAJCQlwZnJlZShjc3RyKTsKIAkJ CWJyZWFrOwogCQljYXNlIGpidlN0cmluZzoKIAkJCWl0ZW0gPSBtYWtlX3RleHRfa2V5KGlz X2tleSA/IEpHSU5GTEFHX0tFWSA6IEpHSU5GTEFHX1NUUiwKLQkJCQkJCQkJIHNjYWxhclZh bC0+dmFsLnN0cmluZy52YWwsCi0JCQkJCQkJCSBzY2FsYXJWYWwtPnZhbC5zdHJpbmcubGVu KTsKKwkJCQkJCQkJIHNjYWxhclZhbC0+c3RyaW5nLnZhbCwKKwkJCQkJCQkJIHNjYWxhclZh bC0+c3RyaW5nLmxlbik7CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1Is ICJ1bnJlY29nbml6ZWQganNvbmIgc2NhbGFyIHR5cGU6ICVkIiwgc2NhbGFyVmFsLT50eXBl KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYl9vcC5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iX29wLmMKaW5kZXggNTFkMzhlMzIxZmIuLmRmNDU1 MmIwNjIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJfb3AuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJfb3AuYwpAQCAtMzIsOCArMzIsOCBA QCBqc29uYl9leGlzdHMoUEdfRlVOQ1RJT05fQVJHUykKIAkgKiB0b3AgbGV2ZWwuICBObyBy ZWN1cnNpb24gb2NjdXJzLgogCSAqLwogCWt2YWwudHlwZSA9IGpidlN0cmluZzsKLQlrdmFs LnZhbC5zdHJpbmcudmFsID0gVkFSREFUQV9BTlkoa2V5KTsKLQlrdmFsLnZhbC5zdHJpbmcu bGVuID0gVkFSU0laRV9BTllfRVhIRFIoa2V5KTsKKwlrdmFsLnN0cmluZy52YWwgPSBWQVJE QVRBX0FOWShrZXkpOworCWt2YWwuc3RyaW5nLmxlbiA9IFZBUlNJWkVfQU5ZX0VYSERSKGtl eSk7CiAKIAl2ID0gZmluZEpzb25iVmFsdWVGcm9tQ29udGFpbmVyKCZqYi0+cm9vdCwKIAkJ CQkJCQkJCUpCX0ZPQkpFQ1QgfCBKQl9GQVJSQVksCkBAIC02Myw4ICs2Myw4IEBAIGpzb25i X2V4aXN0c19hbnkoUEdfRlVOQ1RJT05fQVJHUykKIAogCQlzdHJWYWwudHlwZSA9IGpidlN0 cmluZzsKIAkJLyogV2UgcmVseSBvbiB0aGUgYXJyYXkgZWxlbWVudHMgbm90IGJlaW5nIHRv YXN0ZWQgKi8KLQkJc3RyVmFsLnZhbC5zdHJpbmcudmFsID0gVkFSREFUQV9BTlkoRGF0dW1H ZXRQb2ludGVyKGtleV9kYXR1bXNbaV0pKTsKLQkJc3RyVmFsLnZhbC5zdHJpbmcubGVuID0g VkFSU0laRV9BTllfRVhIRFIoRGF0dW1HZXRQb2ludGVyKGtleV9kYXR1bXNbaV0pKTsKKwkJ c3RyVmFsLnN0cmluZy52YWwgPSBWQVJEQVRBX0FOWShEYXR1bUdldFBvaW50ZXIoa2V5X2Rh dHVtc1tpXSkpOworCQlzdHJWYWwuc3RyaW5nLmxlbiA9IFZBUlNJWkVfQU5ZX0VYSERSKERh dHVtR2V0UG9pbnRlcihrZXlfZGF0dW1zW2ldKSk7CiAKIAkJaWYgKGZpbmRKc29uYlZhbHVl RnJvbUNvbnRhaW5lcigmamItPnJvb3QsCiAJCQkJCQkJCQkJSkJfRk9CSkVDVCB8IEpCX0ZB UlJBWSwKQEAgLTk2LDggKzk2LDggQEAganNvbmJfZXhpc3RzX2FsbChQR19GVU5DVElPTl9B UkdTKQogCiAJCXN0clZhbC50eXBlID0gamJ2U3RyaW5nOwogCQkvKiBXZSByZWx5IG9uIHRo ZSBhcnJheSBlbGVtZW50cyBub3QgYmVpbmcgdG9hc3RlZCAqLwotCQlzdHJWYWwudmFsLnN0 cmluZy52YWwgPSBWQVJEQVRBX0FOWShEYXR1bUdldFBvaW50ZXIoa2V5X2RhdHVtc1tpXSkp OwotCQlzdHJWYWwudmFsLnN0cmluZy5sZW4gPSBWQVJTSVpFX0FOWV9FWEhEUihEYXR1bUdl dFBvaW50ZXIoa2V5X2RhdHVtc1tpXSkpOworCQlzdHJWYWwuc3RyaW5nLnZhbCA9IFZBUkRB VEFfQU5ZKERhdHVtR2V0UG9pbnRlcihrZXlfZGF0dW1zW2ldKSk7CisJCXN0clZhbC5zdHJp bmcubGVuID0gVkFSU0laRV9BTllfRVhIRFIoRGF0dW1HZXRQb2ludGVyKGtleV9kYXR1bXNb aV0pKTsKIAogCQlpZiAoZmluZEpzb25iVmFsdWVGcm9tQ29udGFpbmVyKCZqYi0+cm9vdCwK IAkJCQkJCQkJCQlKQl9GT0JKRUNUIHwgSkJfRkFSUkFZLApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2pzb25iX3V0aWwuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9q c29uYl91dGlsLmMKaW5kZXggODJiODA3ZDA2N2EuLjk5ODEyNWY2ZjVhIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJfdXRpbC5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9qc29uYl91dGlsLmMKQEAgLTcyLDggKzcyLDggQEAgdm9pZAogSnNvbmJU b0pzb25iVmFsdWUoSnNvbmIgKmpzb25iLCBKc29uYlZhbHVlICp2YWwpCiB7CiAJdmFsLT50 eXBlID0gamJ2QmluYXJ5OwotCXZhbC0+dmFsLmJpbmFyeS5kYXRhID0gJmpzb25iLT5yb290 OwotCXZhbC0+dmFsLmJpbmFyeS5sZW4gPSBWQVJTSVpFKGpzb25iKSAtIFZBUkhEUlNaOwor CXZhbC0+YmluYXJ5LmRhdGEgPSAmanNvbmItPnJvb3Q7CisJdmFsLT5iaW5hcnkubGVuID0g VkFSU0laRShqc29uYikgLSBWQVJIRFJTWjsKIH0KIAogLyoKQEAgLTEwMSw4ICsxMDEsOCBA QCBKc29uYlZhbHVlVG9Kc29uYihKc29uYlZhbHVlICp2YWwpCiAJCUpzb25iVmFsdWUJc2Nh bGFyQXJyYXk7CiAKIAkJc2NhbGFyQXJyYXkudHlwZSA9IGpidkFycmF5OwotCQlzY2FsYXJB cnJheS52YWwuYXJyYXkucmF3U2NhbGFyID0gdHJ1ZTsKLQkJc2NhbGFyQXJyYXkudmFsLmFy cmF5Lm5FbGVtcyA9IDE7CisJCXNjYWxhckFycmF5LmFycmF5LnJhd1NjYWxhciA9IHRydWU7 CisJCXNjYWxhckFycmF5LmFycmF5Lm5FbGVtcyA9IDE7CiAKIAkJcHVzaEpzb25iVmFsdWUo JnBzdGF0ZSwgV0pCX0JFR0lOX0FSUkFZLCAmc2NhbGFyQXJyYXkpOwogCQlwdXNoSnNvbmJW YWx1ZSgmcHN0YXRlLCBXSkJfRUxFTSwgdmFsKTsKQEAgLTExNyw5ICsxMTcsOSBAQCBKc29u YlZhbHVlVG9Kc29uYihKc29uYlZhbHVlICp2YWwpCiAJZWxzZQogCXsKIAkJQXNzZXJ0KHZh bC0+dHlwZSA9PSBqYnZCaW5hcnkpOwotCQlvdXQgPSBwYWxsb2MoVkFSSERSU1ogKyB2YWwt PnZhbC5iaW5hcnkubGVuKTsKLQkJU0VUX1ZBUlNJWkUob3V0LCBWQVJIRFJTWiArIHZhbC0+ dmFsLmJpbmFyeS5sZW4pOwotCQltZW1jcHkoVkFSREFUQShvdXQpLCB2YWwtPnZhbC5iaW5h cnkuZGF0YSwgdmFsLT52YWwuYmluYXJ5Lmxlbik7CisJCW91dCA9IHBhbGxvYyhWQVJIRFJT WiArIHZhbC0+YmluYXJ5Lmxlbik7CisJCVNFVF9WQVJTSVpFKG91dCwgVkFSSERSU1ogKyB2 YWwtPmJpbmFyeS5sZW4pOworCQltZW1jcHkoVkFSREFUQShvdXQpLCB2YWwtPmJpbmFyeS5k YXRhLCB2YWwtPmJpbmFyeS5sZW4pOwogCX0KIAogCXJldHVybiBvdXQ7CkBAIC0yNDQsOCAr MjQ0LDggQEAgY29tcGFyZUpzb25iQ29udGFpbmVycyhKc29uYkNvbnRhaW5lciAqYSwgSnNv bmJDb250YWluZXIgKmIpCiAJCQkJCQkgKiBnZW5lcmFsIHR5cGUtYmFzZWQgY29tcGFyaXNv bnMgdG8gYXBwbHksIGFuZCBhcyBmYXIKIAkJCQkJCSAqIGFzIHdlJ3JlIGNvbmNlcm5lZCBh IHBzZXVkbyBhcnJheSBpcyBqdXN0IGEgc2NhbGFyLgogCQkJCQkJICovCi0JCQkJCQlpZiAo dmEudmFsLmFycmF5LnJhd1NjYWxhciAhPSB2Yi52YWwuYXJyYXkucmF3U2NhbGFyKQotCQkJ CQkJCXJlcyA9ICh2YS52YWwuYXJyYXkucmF3U2NhbGFyKSA/IC0xIDogMTsKKwkJCQkJCWlm ICh2YS5hcnJheS5yYXdTY2FsYXIgIT0gdmIuYXJyYXkucmF3U2NhbGFyKQorCQkJCQkJCXJl cyA9ICh2YS5hcnJheS5yYXdTY2FsYXIpID8gLTEgOiAxOwogCiAJCQkJCQkvKgogCQkJCQkJ ICogVGhlcmUgc2hvdWxkIGJlIGFuICJlbHNlIiBoZXJlLCB0byBwcmV2ZW50IHVzIGZyb20K QEAgLTI1MywxMiArMjUzLDEyIEBAIGNvbXBhcmVKc29uYkNvbnRhaW5lcnMoSnNvbmJDb250 YWluZXIgKmEsIEpzb25iQ29udGFpbmVyICpiKQogCQkJCQkJICogb3JkZXIgbm93LCBzbyB0 aGVyZSBpcyBhIG1pbGQgYW5vbWFseSB0aGF0IGFuIGVtcHR5CiAJCQkJCQkgKiB0b3AgbGV2 ZWwgYXJyYXkgc29ydHMgbGVzcyB0aGFuIG51bGwuCiAJCQkJCQkgKi8KLQkJCQkJCWlmICh2 YS52YWwuYXJyYXkubkVsZW1zICE9IHZiLnZhbC5hcnJheS5uRWxlbXMpCi0JCQkJCQkJcmVz ID0gKHZhLnZhbC5hcnJheS5uRWxlbXMgPiB2Yi52YWwuYXJyYXkubkVsZW1zKSA/IDEgOiAt MTsKKwkJCQkJCWlmICh2YS5hcnJheS5uRWxlbXMgIT0gdmIuYXJyYXkubkVsZW1zKQorCQkJ CQkJCXJlcyA9ICh2YS5hcnJheS5uRWxlbXMgPiB2Yi5hcnJheS5uRWxlbXMpID8gMSA6IC0x OwogCQkJCQkJYnJlYWs7CiAJCQkJCWNhc2UgamJ2T2JqZWN0OgotCQkJCQkJaWYgKHZhLnZh bC5vYmplY3QublBhaXJzICE9IHZiLnZhbC5vYmplY3QublBhaXJzKQotCQkJCQkJCXJlcyA9 ICh2YS52YWwub2JqZWN0Lm5QYWlycyA+IHZiLnZhbC5vYmplY3QublBhaXJzKSA/IDEgOiAt MTsKKwkJCQkJCWlmICh2YS5vYmplY3QublBhaXJzICE9IHZiLm9iamVjdC5uUGFpcnMpCisJ CQkJCQkJcmVzID0gKHZhLm9iamVjdC5uUGFpcnMgPiB2Yi5vYmplY3QublBhaXJzKSA/IDEg OiAtMTsKIAkJCQkJCWJyZWFrOwogCQkJCQljYXNlIGpidkJpbmFyeToKIAkJCQkJCWVsb2co RVJST1IsICJ1bmV4cGVjdGVkIGpidkJpbmFyeSB2YWx1ZSIpOwpAQCAtMzgxLDggKzM4MSw4 IEBAIGZpbmRKc29uYlZhbHVlRnJvbUNvbnRhaW5lcihKc29uYkNvbnRhaW5lciAqY29udGFp bmVyLCB1aW50MzIgZmxhZ3MsCiAJCS8qIE9iamVjdCBrZXkgcGFzc2VkIGJ5IGNhbGxlciBt dXN0IGJlIGEgc3RyaW5nICovCiAJCUFzc2VydChrZXktPnR5cGUgPT0gamJ2U3RyaW5nKTsK IAotCQlyZXR1cm4gZ2V0S2V5SnNvblZhbHVlRnJvbUNvbnRhaW5lcihjb250YWluZXIsIGtl eS0+dmFsLnN0cmluZy52YWwsCi0JCQkJCQkJCQkJCWtleS0+dmFsLnN0cmluZy5sZW4sIE5V TEwpOworCQlyZXR1cm4gZ2V0S2V5SnNvblZhbHVlRnJvbUNvbnRhaW5lcihjb250YWluZXIs IGtleS0+c3RyaW5nLnZhbCwKKwkJCQkJCQkJCQkJa2V5LT5zdHJpbmcubGVuLCBOVUxMKTsK IAl9CiAKIAkvKiBOb3QgZm91bmQgKi8KQEAgLTUxNiwzMiArNTE2LDMyIEBAIGZpbGxKc29u YlZhbHVlKEpzb25iQ29udGFpbmVyICpjb250YWluZXIsIGludCBpbmRleCwKIAllbHNlIGlm IChKQkVfSVNTVFJJTkcoZW50cnkpKQogCXsKIAkJcmVzdWx0LT50eXBlID0gamJ2U3RyaW5n OwotCQlyZXN1bHQtPnZhbC5zdHJpbmcudmFsID0gYmFzZV9hZGRyICsgb2Zmc2V0OwotCQly ZXN1bHQtPnZhbC5zdHJpbmcubGVuID0gZ2V0SnNvbmJMZW5ndGgoY29udGFpbmVyLCBpbmRl eCk7Ci0JCUFzc2VydChyZXN1bHQtPnZhbC5zdHJpbmcubGVuID49IDApOworCQlyZXN1bHQt PnN0cmluZy52YWwgPSBiYXNlX2FkZHIgKyBvZmZzZXQ7CisJCXJlc3VsdC0+c3RyaW5nLmxl biA9IGdldEpzb25iTGVuZ3RoKGNvbnRhaW5lciwgaW5kZXgpOworCQlBc3NlcnQocmVzdWx0 LT5zdHJpbmcubGVuID49IDApOwogCX0KIAllbHNlIGlmIChKQkVfSVNOVU1FUklDKGVudHJ5 KSkKIAl7CiAJCXJlc3VsdC0+dHlwZSA9IGpidk51bWVyaWM7Ci0JCXJlc3VsdC0+dmFsLm51 bWVyaWMgPSAoTnVtZXJpYykgKGJhc2VfYWRkciArIElOVEFMSUdOKG9mZnNldCkpOworCQly ZXN1bHQtPm51bWVyaWMgPSAoTnVtZXJpYykgKGJhc2VfYWRkciArIElOVEFMSUdOKG9mZnNl dCkpOwogCX0KIAllbHNlIGlmIChKQkVfSVNCT09MX1RSVUUoZW50cnkpKQogCXsKIAkJcmVz dWx0LT50eXBlID0gamJ2Qm9vbDsKLQkJcmVzdWx0LT52YWwuYm9vbGVhbiA9IHRydWU7CisJ CXJlc3VsdC0+Ym9vbGVhbiA9IHRydWU7CiAJfQogCWVsc2UgaWYgKEpCRV9JU0JPT0xfRkFM U0UoZW50cnkpKQogCXsKIAkJcmVzdWx0LT50eXBlID0gamJ2Qm9vbDsKLQkJcmVzdWx0LT52 YWwuYm9vbGVhbiA9IGZhbHNlOworCQlyZXN1bHQtPmJvb2xlYW4gPSBmYWxzZTsKIAl9CiAJ ZWxzZQogCXsKIAkJQXNzZXJ0KEpCRV9JU0NPTlRBSU5FUihlbnRyeSkpOwogCQlyZXN1bHQt PnR5cGUgPSBqYnZCaW5hcnk7CiAJCS8qIFJlbW92ZSBhbGlnbm1lbnQgcGFkZGluZyBmcm9t IGRhdGEgcG9pbnRlciBhbmQgbGVuZ3RoICovCi0JCXJlc3VsdC0+dmFsLmJpbmFyeS5kYXRh ID0gKEpzb25iQ29udGFpbmVyICopIChiYXNlX2FkZHIgKyBJTlRBTElHTihvZmZzZXQpKTsK LQkJcmVzdWx0LT52YWwuYmluYXJ5LmxlbiA9IGdldEpzb25iTGVuZ3RoKGNvbnRhaW5lciwg aW5kZXgpIC0KKwkJcmVzdWx0LT5iaW5hcnkuZGF0YSA9IChKc29uYkNvbnRhaW5lciAqKSAo YmFzZV9hZGRyICsgSU5UQUxJR04ob2Zmc2V0KSk7CisJCXJlc3VsdC0+YmluYXJ5LmxlbiA9 IGdldEpzb25iTGVuZ3RoKGNvbnRhaW5lciwgaW5kZXgpIC0KIAkJCShJTlRBTElHTihvZmZz ZXQpIC0gb2Zmc2V0KTsKIAl9CiB9CkBAIC01NzYsMTAgKzU3NiwxMCBAQCBwdXNoSnNvbmJW YWx1ZShKc29uYlBhcnNlU3RhdGUgKipwc3RhdGUsIEpzb25iSXRlcmF0b3JUb2tlbiBzZXEs CiAJaWYgKGpidmFsICYmIChzZXEgPT0gV0pCX0VMRU0gfHwgc2VxID09IFdKQl9WQUxVRSkg JiYgamJ2YWwtPnR5cGUgPT0gamJ2T2JqZWN0KQogCXsKIAkJcHVzaEpzb25iVmFsdWUocHN0 YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKLQkJZm9yIChpID0gMDsgaSA8IGpidmFs LT52YWwub2JqZWN0Lm5QYWlyczsgaSsrKQorCQlmb3IgKGkgPSAwOyBpIDwgamJ2YWwtPm9i amVjdC5uUGFpcnM7IGkrKykKIAkJewotCQkJcHVzaEpzb25iVmFsdWUocHN0YXRlLCBXSkJf S0VZLCAmamJ2YWwtPnZhbC5vYmplY3QucGFpcnNbaV0ua2V5KTsKLQkJCXB1c2hKc29uYlZh bHVlKHBzdGF0ZSwgV0pCX1ZBTFVFLCAmamJ2YWwtPnZhbC5vYmplY3QucGFpcnNbaV0udmFs dWUpOworCQkJcHVzaEpzb25iVmFsdWUocHN0YXRlLCBXSkJfS0VZLCAmamJ2YWwtPm9iamVj dC5wYWlyc1tpXS5rZXkpOworCQkJcHVzaEpzb25iVmFsdWUocHN0YXRlLCBXSkJfVkFMVUUs ICZqYnZhbC0+b2JqZWN0LnBhaXJzW2ldLnZhbHVlKTsKIAkJfQogCiAJCXJldHVybiBwdXNo SnNvbmJWYWx1ZShwc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKQEAgLTU4OCw5ICs1 ODgsOSBAQCBwdXNoSnNvbmJWYWx1ZShKc29uYlBhcnNlU3RhdGUgKipwc3RhdGUsIEpzb25i SXRlcmF0b3JUb2tlbiBzZXEsCiAJaWYgKGpidmFsICYmIChzZXEgPT0gV0pCX0VMRU0gfHwg c2VxID09IFdKQl9WQUxVRSkgJiYgamJ2YWwtPnR5cGUgPT0gamJ2QXJyYXkpCiAJewogCQlw dXNoSnNvbmJWYWx1ZShwc3RhdGUsIFdKQl9CRUdJTl9BUlJBWSwgTlVMTCk7Ci0JCWZvciAo aSA9IDA7IGkgPCBqYnZhbC0+dmFsLmFycmF5Lm5FbGVtczsgaSsrKQorCQlmb3IgKGkgPSAw OyBpIDwgamJ2YWwtPmFycmF5Lm5FbGVtczsgaSsrKQogCQl7Ci0JCQlwdXNoSnNvbmJWYWx1 ZShwc3RhdGUsIFdKQl9FTEVNLCAmamJ2YWwtPnZhbC5hcnJheS5lbGVtc1tpXSk7CisJCQlw dXNoSnNvbmJWYWx1ZShwc3RhdGUsIFdKQl9FTEVNLCAmamJ2YWwtPmFycmF5LmVsZW1zW2ld KTsKIAkJfQogCiAJCXJldHVybiBwdXNoSnNvbmJWYWx1ZShwc3RhdGUsIFdKQl9FTkRfQVJS QVksIE5VTEwpOwpAQCAtNjA0LDEzICs2MDQsMTMgQEAgcHVzaEpzb25iVmFsdWUoSnNvbmJQ YXJzZVN0YXRlICoqcHN0YXRlLCBKc29uYkl0ZXJhdG9yVG9rZW4gc2VxLAogCX0KIAogCS8q IHVucGFjayB0aGUgYmluYXJ5IGFuZCBhZGQgZWFjaCBwaWVjZSB0byB0aGUgcHN0YXRlICov Ci0JaXQgPSBKc29uYkl0ZXJhdG9ySW5pdChqYnZhbC0+dmFsLmJpbmFyeS5kYXRhKTsKKwlp dCA9IEpzb25iSXRlcmF0b3JJbml0KGpidmFsLT5iaW5hcnkuZGF0YSk7CiAKLQlpZiAoKGpi dmFsLT52YWwuYmluYXJ5LmRhdGEtPmhlYWRlciAmIEpCX0ZTQ0FMQVIpICYmICpwc3RhdGUp CisJaWYgKChqYnZhbC0+YmluYXJ5LmRhdGEtPmhlYWRlciAmIEpCX0ZTQ0FMQVIpICYmICpw c3RhdGUpCiAJewogCQl0b2sgPSBKc29uYkl0ZXJhdG9yTmV4dCgmaXQsICZ2LCB0cnVlKTsK IAkJQXNzZXJ0KHRvayA9PSBXSkJfQkVHSU5fQVJSQVkpOwotCQlBc3NlcnQodi50eXBlID09 IGpidkFycmF5ICYmIHYudmFsLmFycmF5LnJhd1NjYWxhcik7CisJCUFzc2VydCh2LnR5cGUg PT0gamJ2QXJyYXkgJiYgdi5hcnJheS5yYXdTY2FsYXIpOwogCiAJCXRvayA9IEpzb25iSXRl cmF0b3JOZXh0KCZpdCwgJnYsIHRydWUpOwogCQlBc3NlcnQodG9rID09IFdKQl9FTEVNKTsK QEAgLTYyOCw3ICs2MjgsNyBAQCBwdXNoSnNvbmJWYWx1ZShKc29uYlBhcnNlU3RhdGUgKipw c3RhdGUsIEpzb25iSXRlcmF0b3JUb2tlbiBzZXEsCiAJCXJlcyA9IHB1c2hKc29uYlZhbHVl U2NhbGFyKHBzdGF0ZSwgdG9rLAogCQkJCQkJCQkgICB0b2sgPCBXSkJfQkVHSU5fQVJSQVkg fHwKIAkJCQkJCQkJICAgKHRvayA9PSBXSkJfQkVHSU5fQVJSQVkgJiYKLQkJCQkJCQkJCXYu dmFsLmFycmF5LnJhd1NjYWxhcikgPyAmdiA6IE5VTEwpOworCQkJCQkJCQkJdi5hcnJheS5y YXdTY2FsYXIpID8gJnYgOiBOVUxMKTsKIAogCXJldHVybiByZXM7CiB9CkBAIC02NDYsMzUg KzY0NiwzNSBAQCBwdXNoSnNvbmJWYWx1ZVNjYWxhcihKc29uYlBhcnNlU3RhdGUgKipwc3Rh dGUsIEpzb25iSXRlcmF0b3JUb2tlbiBzZXEsCiAJc3dpdGNoIChzZXEpCiAJewogCQljYXNl IFdKQl9CRUdJTl9BUlJBWToKLQkJCUFzc2VydCghc2NhbGFyVmFsIHx8IHNjYWxhclZhbC0+ dmFsLmFycmF5LnJhd1NjYWxhcik7CisJCQlBc3NlcnQoIXNjYWxhclZhbCB8fCBzY2FsYXJW YWwtPmFycmF5LnJhd1NjYWxhcik7CiAJCQkqcHN0YXRlID0gcHVzaFN0YXRlKHBzdGF0ZSk7 CiAJCQlyZXN1bHQgPSAmKCpwc3RhdGUpLT5jb250VmFsOwogCQkJKCpwc3RhdGUpLT5jb250 VmFsLnR5cGUgPSBqYnZBcnJheTsKLQkJCSgqcHN0YXRlKS0+Y29udFZhbC52YWwuYXJyYXku bkVsZW1zID0gMDsKLQkJCSgqcHN0YXRlKS0+Y29udFZhbC52YWwuYXJyYXkucmF3U2NhbGFy ID0gKHNjYWxhclZhbCAmJgotCQkJCQkJCQkJCQkJCSAgc2NhbGFyVmFsLT52YWwuYXJyYXku cmF3U2NhbGFyKTsKLQkJCWlmIChzY2FsYXJWYWwgJiYgc2NhbGFyVmFsLT52YWwuYXJyYXku bkVsZW1zID4gMCkKKwkJCSgqcHN0YXRlKS0+Y29udFZhbC5hcnJheS5uRWxlbXMgPSAwOwor CQkJKCpwc3RhdGUpLT5jb250VmFsLmFycmF5LnJhd1NjYWxhciA9IChzY2FsYXJWYWwgJiYK KwkJCQkJCQkJCQkJCSAgc2NhbGFyVmFsLT5hcnJheS5yYXdTY2FsYXIpOworCQkJaWYgKHNj YWxhclZhbCAmJiBzY2FsYXJWYWwtPmFycmF5Lm5FbGVtcyA+IDApCiAJCQl7CiAJCQkJLyog QXNzdW1lIHRoYXQgdGhpcyBhcnJheSBpcyBzdGlsbCByZWFsbHkgYSBzY2FsYXIgKi8KIAkJ CQlBc3NlcnQoc2NhbGFyVmFsLT50eXBlID09IGpidkFycmF5KTsKLQkJCQkoKnBzdGF0ZSkt PnNpemUgPSBzY2FsYXJWYWwtPnZhbC5hcnJheS5uRWxlbXM7CisJCQkJKCpwc3RhdGUpLT5z aXplID0gc2NhbGFyVmFsLT5hcnJheS5uRWxlbXM7CiAJCQl9CiAJCQllbHNlCiAJCQl7CiAJ CQkJKCpwc3RhdGUpLT5zaXplID0gNDsKIAkJCX0KLQkJCSgqcHN0YXRlKS0+Y29udFZhbC52 YWwuYXJyYXkuZWxlbXMgPSBwYWxsb2Moc2l6ZW9mKEpzb25iVmFsdWUpICoKLQkJCQkJCQkJ CQkJCQkJKCpwc3RhdGUpLT5zaXplKTsKKwkJCSgqcHN0YXRlKS0+Y29udFZhbC5hcnJheS5l bGVtcyA9IHBhbGxvYyhzaXplb2YoSnNvbmJWYWx1ZSkgKgorCQkJCQkJCQkJCQkJCSgqcHN0 YXRlKS0+c2l6ZSk7CiAJCQlicmVhazsKIAkJY2FzZSBXSkJfQkVHSU5fT0JKRUNUOgogCQkJ QXNzZXJ0KCFzY2FsYXJWYWwpOwogCQkJKnBzdGF0ZSA9IHB1c2hTdGF0ZShwc3RhdGUpOwog CQkJcmVzdWx0ID0gJigqcHN0YXRlKS0+Y29udFZhbDsKIAkJCSgqcHN0YXRlKS0+Y29udFZh bC50eXBlID0gamJ2T2JqZWN0OwotCQkJKCpwc3RhdGUpLT5jb250VmFsLnZhbC5vYmplY3Qu blBhaXJzID0gMDsKKwkJCSgqcHN0YXRlKS0+Y29udFZhbC5vYmplY3QublBhaXJzID0gMDsK IAkJCSgqcHN0YXRlKS0+c2l6ZSA9IDQ7Ci0JCQkoKnBzdGF0ZSktPmNvbnRWYWwudmFsLm9i amVjdC5wYWlycyA9IHBhbGxvYyhzaXplb2YoSnNvbmJQYWlyKSAqCi0JCQkJCQkJCQkJCQkJ CSAoKnBzdGF0ZSktPnNpemUpOworCQkJKCpwc3RhdGUpLT5jb250VmFsLm9iamVjdC5wYWly cyA9IHBhbGxvYyhzaXplb2YoSnNvbmJQYWlyKSAqCisJCQkJCQkJCQkJCQkJICgqcHN0YXRl KS0+c2l6ZSk7CiAJCQlicmVhazsKIAkJY2FzZSBXSkJfS0VZOgogCQkJQXNzZXJ0KHNjYWxh clZhbC0+dHlwZSA9PSBqYnZTdHJpbmcpOwpAQCAtNzUxLDIxICs3NTEsMjEgQEAgYXBwZW5k S2V5KEpzb25iUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uYlZhbHVlICpzdHJpbmcpCiAJQXNz ZXJ0KG9iamVjdC0+dHlwZSA9PSBqYnZPYmplY3QpOwogCUFzc2VydChzdHJpbmctPnR5cGUg PT0gamJ2U3RyaW5nKTsKIAotCWlmIChvYmplY3QtPnZhbC5vYmplY3QublBhaXJzID49IEpT T05CX01BWF9QQUlSUykKKwlpZiAob2JqZWN0LT5vYmplY3QublBhaXJzID49IEpTT05CX01B WF9QQUlSUykKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1BST0dS QU1fTElNSVRfRVhDRUVERUQpLAogCQkJCSBlcnJtc2coIm51bWJlciBvZiBqc29uYiBvYmpl Y3QgcGFpcnMgZXhjZWVkcyB0aGUgbWF4aW11bSBhbGxvd2VkICglenUpIiwKIAkJCQkJCUpT T05CX01BWF9QQUlSUykpKTsKIAotCWlmIChvYmplY3QtPnZhbC5vYmplY3QublBhaXJzID49 IHBzdGF0ZS0+c2l6ZSkKKwlpZiAob2JqZWN0LT5vYmplY3QublBhaXJzID49IHBzdGF0ZS0+ c2l6ZSkKIAl7CiAJCXBzdGF0ZS0+c2l6ZSAqPSAyOwotCQlvYmplY3QtPnZhbC5vYmplY3Qu cGFpcnMgPSByZXBhbGxvYyhvYmplY3QtPnZhbC5vYmplY3QucGFpcnMsCi0JCQkJCQkJCQkJ CXNpemVvZihKc29uYlBhaXIpICogcHN0YXRlLT5zaXplKTsKKwkJb2JqZWN0LT5vYmplY3Qu cGFpcnMgPSByZXBhbGxvYyhvYmplY3QtPm9iamVjdC5wYWlycywKKwkJCQkJCQkJCQlzaXpl b2YoSnNvbmJQYWlyKSAqIHBzdGF0ZS0+c2l6ZSk7CiAJfQogCi0Jb2JqZWN0LT52YWwub2Jq ZWN0LnBhaXJzW29iamVjdC0+dmFsLm9iamVjdC5uUGFpcnNdLmtleSA9ICpzdHJpbmc7Ci0J b2JqZWN0LT52YWwub2JqZWN0LnBhaXJzW29iamVjdC0+dmFsLm9iamVjdC5uUGFpcnNdLm9y ZGVyID0gb2JqZWN0LT52YWwub2JqZWN0Lm5QYWlyczsKKwlvYmplY3QtPm9iamVjdC5wYWly c1tvYmplY3QtPm9iamVjdC5uUGFpcnNdLmtleSA9ICpzdHJpbmc7CisJb2JqZWN0LT5vYmpl Y3QucGFpcnNbb2JqZWN0LT5vYmplY3QublBhaXJzXS5vcmRlciA9IG9iamVjdC0+b2JqZWN0 Lm5QYWlyczsKIH0KIAogLyoKQEAgLTc3OSw3ICs3NzksNyBAQCBhcHBlbmRWYWx1ZShKc29u YlBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvbmJWYWx1ZSAqc2NhbGFyVmFsKQogCiAJQXNzZXJ0 KG9iamVjdC0+dHlwZSA9PSBqYnZPYmplY3QpOwogCi0Jb2JqZWN0LT52YWwub2JqZWN0LnBh aXJzW29iamVjdC0+dmFsLm9iamVjdC5uUGFpcnMrK10udmFsdWUgPSAqc2NhbGFyVmFsOwor CW9iamVjdC0+b2JqZWN0LnBhaXJzW29iamVjdC0+b2JqZWN0Lm5QYWlycysrXS52YWx1ZSA9 ICpzY2FsYXJWYWw7CiB9CiAKIC8qCkBAIC03OTIsMjAgKzc5MiwyMCBAQCBhcHBlbmRFbGVt ZW50KEpzb25iUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uYlZhbHVlICpzY2FsYXJWYWwpCiAK IAlBc3NlcnQoYXJyYXktPnR5cGUgPT0gamJ2QXJyYXkpOwogCi0JaWYgKGFycmF5LT52YWwu YXJyYXkubkVsZW1zID49IEpTT05CX01BWF9FTEVNUykKKwlpZiAoYXJyYXktPmFycmF5Lm5F bGVtcyA+PSBKU09OQl9NQVhfRUxFTVMpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNv ZGUoRVJSQ09ERV9QUk9HUkFNX0xJTUlUX0VYQ0VFREVEKSwKIAkJCQkgZXJybXNnKCJudW1i ZXIgb2YganNvbmIgYXJyYXkgZWxlbWVudHMgZXhjZWVkcyB0aGUgbWF4aW11bSBhbGxvd2Vk ICglenUpIiwKIAkJCQkJCUpTT05CX01BWF9FTEVNUykpKTsKIAotCWlmIChhcnJheS0+dmFs LmFycmF5Lm5FbGVtcyA+PSBwc3RhdGUtPnNpemUpCisJaWYgKGFycmF5LT5hcnJheS5uRWxl bXMgPj0gcHN0YXRlLT5zaXplKQogCXsKIAkJcHN0YXRlLT5zaXplICo9IDI7Ci0JCWFycmF5 LT52YWwuYXJyYXkuZWxlbXMgPSByZXBhbGxvYyhhcnJheS0+dmFsLmFycmF5LmVsZW1zLAot CQkJCQkJCQkJCSAgc2l6ZW9mKEpzb25iVmFsdWUpICogcHN0YXRlLT5zaXplKTsKKwkJYXJy YXktPmFycmF5LmVsZW1zID0gcmVwYWxsb2MoYXJyYXktPmFycmF5LmVsZW1zLAorCQkJCQkJ CQkJICBzaXplb2YoSnNvbmJWYWx1ZSkgKiBwc3RhdGUtPnNpemUpOwogCX0KIAotCWFycmF5 LT52YWwuYXJyYXkuZWxlbXNbYXJyYXktPnZhbC5hcnJheS5uRWxlbXMrK10gPSAqc2NhbGFy VmFsOworCWFycmF5LT5hcnJheS5lbGVtc1thcnJheS0+YXJyYXkubkVsZW1zKytdID0gKnNj YWxhclZhbDsKIH0KIAogLyoKQEAgLTg3MywxMyArODczLDEzIEBAIEpzb25iSXRlcmF0b3JO ZXh0KEpzb25iSXRlcmF0b3IgKippdCwgSnNvbmJWYWx1ZSAqdmFsLCBib29sIHNraXBOZXN0 ZWQpCiAJCWNhc2UgSkJJX0FSUkFZX1NUQVJUOgogCQkJLyogU2V0IHYgdG8gYXJyYXkgb24g Zmlyc3QgYXJyYXkgY2FsbCAqLwogCQkJdmFsLT50eXBlID0gamJ2QXJyYXk7Ci0JCQl2YWwt PnZhbC5hcnJheS5uRWxlbXMgPSAoKml0KS0+bkVsZW1zOworCQkJdmFsLT5hcnJheS5uRWxl bXMgPSAoKml0KS0+bkVsZW1zOwogCiAJCQkvKgotCQkJICogdi0+dmFsLmFycmF5LmVsZW1z IGlzIG5vdCBhY3R1YWxseSBzZXQsIGJlY2F1c2Ugd2UgYXJlbid0IGRvaW5nCi0JCQkgKiBh IGZ1bGwgY29udmVyc2lvbgorCQkJICogdi0+YXJyYXkuZWxlbXMgaXMgbm90IGFjdHVhbGx5 IHNldCwgYmVjYXVzZSB3ZSBhcmVuJ3QgZG9pbmcgYQorCQkJICogZnVsbCBjb252ZXJzaW9u CiAJCQkgKi8KLQkJCXZhbC0+dmFsLmFycmF5LnJhd1NjYWxhciA9ICgqaXQpLT5pc1NjYWxh cjsKKwkJCXZhbC0+YXJyYXkucmF3U2NhbGFyID0gKCppdCktPmlzU2NhbGFyOwogCQkJKCpp dCktPmN1ckluZGV4ID0gMDsKIAkJCSgqaXQpLT5jdXJEYXRhT2Zmc2V0ID0gMDsKIAkJCSgq aXQpLT5jdXJWYWx1ZU9mZnNldCA9IDA7CS8qIG5vdCBhY3R1YWxseSB1c2VkICovCkBAIC05 MTIsNyArOTEyLDcgQEAgSnNvbmJJdGVyYXRvck5leHQoSnNvbmJJdGVyYXRvciAqKml0LCBK c29uYlZhbHVlICp2YWwsIGJvb2wgc2tpcE5lc3RlZCkKIAkJCWlmICghSXNBSnNvbmJTY2Fs YXIodmFsKSAmJiAhc2tpcE5lc3RlZCkKIAkJCXsKIAkJCQkvKiBSZWN1cnNlIGludG8gY29u dGFpbmVyLiAqLwotCQkJCSppdCA9IGl0ZXJhdG9yRnJvbUNvbnRhaW5lcih2YWwtPnZhbC5i aW5hcnkuZGF0YSwgKml0KTsKKwkJCQkqaXQgPSBpdGVyYXRvckZyb21Db250YWluZXIodmFs LT5iaW5hcnkuZGF0YSwgKml0KTsKIAkJCQlnb3RvIHJlY3Vyc2U7CiAJCQl9CiAJCQllbHNl CkBAIC05MjcsMTEgKzkyNywxMSBAQCBKc29uYkl0ZXJhdG9yTmV4dChKc29uYkl0ZXJhdG9y ICoqaXQsIEpzb25iVmFsdWUgKnZhbCwgYm9vbCBza2lwTmVzdGVkKQogCQljYXNlIEpCSV9P QkpFQ1RfU1RBUlQ6CiAJCQkvKiBTZXQgdiB0byBvYmplY3Qgb24gZmlyc3Qgb2JqZWN0IGNh bGwgKi8KIAkJCXZhbC0+dHlwZSA9IGpidk9iamVjdDsKLQkJCXZhbC0+dmFsLm9iamVjdC5u UGFpcnMgPSAoKml0KS0+bkVsZW1zOworCQkJdmFsLT5vYmplY3QublBhaXJzID0gKCppdCkt Pm5FbGVtczsKIAogCQkJLyoKLQkJCSAqIHYtPnZhbC5vYmplY3QucGFpcnMgaXMgbm90IGFj dHVhbGx5IHNldCwgYmVjYXVzZSB3ZSBhcmVuJ3QKLQkJCSAqIGRvaW5nIGEgZnVsbCBjb252 ZXJzaW9uCisJCQkgKiB2LT5vYmplY3QucGFpcnMgaXMgbm90IGFjdHVhbGx5IHNldCwgYmVj YXVzZSB3ZSBhcmVuJ3QgZG9pbmcgYQorCQkJICogZnVsbCBjb252ZXJzaW9uCiAJCQkgKi8K IAkJCSgqaXQpLT5jdXJJbmRleCA9IDA7CiAJCQkoKml0KS0+Y3VyRGF0YU9mZnNldCA9IDA7 CkBAIC05ODksNyArOTg5LDcgQEAgSnNvbmJJdGVyYXRvck5leHQoSnNvbmJJdGVyYXRvciAq Kml0LCBKc29uYlZhbHVlICp2YWwsIGJvb2wgc2tpcE5lc3RlZCkKIAkJCSAqLwogCQkJaWYg KCFJc0FKc29uYlNjYWxhcih2YWwpICYmICFza2lwTmVzdGVkKQogCQkJewotCQkJCSppdCA9 IGl0ZXJhdG9yRnJvbUNvbnRhaW5lcih2YWwtPnZhbC5iaW5hcnkuZGF0YSwgKml0KTsKKwkJ CQkqaXQgPSBpdGVyYXRvckZyb21Db250YWluZXIodmFsLT5iaW5hcnkuZGF0YSwgKml0KTsK IAkJCQlnb3RvIHJlY3Vyc2U7CiAJCQl9CiAJCQllbHNlCkBAIC0xMTExLDcgKzExMTEsNyBA QCBKc29uYkRlZXBDb250YWlucyhKc29uYkl0ZXJhdG9yICoqdmFsLCBKc29uYkl0ZXJhdG9y ICoqbUNvbnRhaW5lZCkKIAkJICogb3B0aW1pemF0aW9uIGluIHRoZSBhcnJheSBjYXNlLikg IFRoZSBjYXNlIHByb2JhYmx5IHdvbid0IGFyaXNlCiAJCSAqIG9mdGVuLCBidXQgc2luY2Ug aXQncyBzdWNoIGEgY2hlYXAgY2hlY2sgd2UgbWF5IGFzIHdlbGwgbWFrZSBpdC4KIAkJICov Ci0JCWlmICh2dmFsLnZhbC5vYmplY3QublBhaXJzIDwgdmNvbnRhaW5lZC52YWwub2JqZWN0 Lm5QYWlycykKKwkJaWYgKHZ2YWwub2JqZWN0Lm5QYWlycyA8IHZjb250YWluZWQub2JqZWN0 Lm5QYWlycykKIAkJCXJldHVybiBmYWxzZTsKIAogCQkvKiBXb3JrIHRocm91Z2ggcmhzICJp cyBpdCBjb250YWluZWQgd2l0aGluPyIgb2JqZWN0ICovCkBAIC0xMTM2LDggKzExMzYsOCBA QCBKc29uYkRlZXBDb250YWlucyhKc29uYkl0ZXJhdG9yICoqdmFsLCBKc29uYkl0ZXJhdG9y ICoqbUNvbnRhaW5lZCkKIAkJCS8qIEZpcnN0LCBmaW5kIHZhbHVlIGJ5IGtleS4uLiAqLwog CQkJbGhzVmFsID0KIAkJCQlnZXRLZXlKc29uVmFsdWVGcm9tQ29udGFpbmVyKCgqdmFsKS0+ Y29udGFpbmVyLAotCQkJCQkJCQkJCQkgdmNvbnRhaW5lZC52YWwuc3RyaW5nLnZhbCwKLQkJ CQkJCQkJCQkJIHZjb250YWluZWQudmFsLnN0cmluZy5sZW4sCisJCQkJCQkJCQkJCSB2Y29u dGFpbmVkLnN0cmluZy52YWwsCisJCQkJCQkJCQkJCSB2Y29udGFpbmVkLnN0cmluZy5sZW4s CiAJCQkJCQkJCQkJCSAmbGhzVmFsQnVmKTsKIAkJCWlmICghbGhzVmFsKQogCQkJCXJldHVy biBmYWxzZTsKQEAgLTExNzIsOCArMTE3Miw4IEBAIEpzb25iRGVlcENvbnRhaW5zKEpzb25i SXRlcmF0b3IgKip2YWwsIEpzb25iSXRlcmF0b3IgKiptQ29udGFpbmVkKQogCQkJCUFzc2Vy dChsaHNWYWwtPnR5cGUgPT0gamJ2QmluYXJ5KTsKIAkJCQlBc3NlcnQodmNvbnRhaW5lZC50 eXBlID09IGpidkJpbmFyeSk7CiAKLQkJCQluZXN0dmFsID0gSnNvbmJJdGVyYXRvckluaXQo bGhzVmFsLT52YWwuYmluYXJ5LmRhdGEpOwotCQkJCW5lc3RDb250YWluZWQgPSBKc29uYkl0 ZXJhdG9ySW5pdCh2Y29udGFpbmVkLnZhbC5iaW5hcnkuZGF0YSk7CisJCQkJbmVzdHZhbCA9 IEpzb25iSXRlcmF0b3JJbml0KGxoc1ZhbC0+YmluYXJ5LmRhdGEpOworCQkJCW5lc3RDb250 YWluZWQgPSBKc29uYkl0ZXJhdG9ySW5pdCh2Y29udGFpbmVkLmJpbmFyeS5kYXRhKTsKIAog CQkJCS8qCiAJCQkJICogTWF0Y2ggInZhbHVlIiBzaWRlIG9mIHJocyBkYXR1bSBvYmplY3Qn cyBwYWlyIHJlY3Vyc2l2ZWx5LgpAQCAtMTIwMyw3ICsxMjAzLDcgQEAgSnNvbmJEZWVwQ29u dGFpbnMoSnNvbmJJdGVyYXRvciAqKnZhbCwgSnNvbmJJdGVyYXRvciAqKm1Db250YWluZWQp CiAJZWxzZSBpZiAocmNvbnQgPT0gV0pCX0JFR0lOX0FSUkFZKQogCXsKIAkJSnNvbmJWYWx1 ZSAqbGhzQ29udHMgPSBOVUxMOwotCQl1aW50MzIJCW5MaHNFbGVtcyA9IHZ2YWwudmFsLmFy cmF5Lm5FbGVtczsKKwkJdWludDMyCQluTGhzRWxlbXMgPSB2dmFsLmFycmF5Lm5FbGVtczsK IAogCQlBc3NlcnQodnZhbC50eXBlID09IGpidkFycmF5KTsKIAkJQXNzZXJ0KHZjb250YWlu ZWQudHlwZSA9PSBqYnZBcnJheSk7CkBAIC0xMjE4LDcgKzEyMTgsNyBAQCBKc29uYkRlZXBD b250YWlucyhKc29uYkl0ZXJhdG9yICoqdmFsLCBKc29uYkl0ZXJhdG9yICoqbUNvbnRhaW5l ZCkKIAkJICogb25seSBjb250YWluIHBhaXJzLCBuZXZlciByYXcgc2NhbGFycyAoYSBwYWly IGlzIHJlcHJlc2VudGVkIGJ5IGFuCiAJCSAqIHJocyBvYmplY3QgYXJndW1lbnQgd2l0aCBh IHNpbmdsZSBjb250YWluZWQgcGFpcikuCiAJCSAqLwotCQlpZiAodnZhbC52YWwuYXJyYXku cmF3U2NhbGFyICYmICF2Y29udGFpbmVkLnZhbC5hcnJheS5yYXdTY2FsYXIpCisJCWlmICh2 dmFsLmFycmF5LnJhd1NjYWxhciAmJiAhdmNvbnRhaW5lZC5hcnJheS5yYXdTY2FsYXIpCiAJ CQlyZXR1cm4gZmFsc2U7CiAKIAkJLyogV29yayB0aHJvdWdoIHJocyAiaXMgaXQgY29udGFp bmVkIHdpdGhpbj8iIGFycmF5ICovCkBAIC0xMjg0LDggKzEyODQsOCBAQCBKc29uYkRlZXBD b250YWlucyhKc29uYkl0ZXJhdG9yICoqdmFsLCBKc29uYkl0ZXJhdG9yICoqbUNvbnRhaW5l ZCkKIAkJCQkJCQkgICAqbmVzdENvbnRhaW5lZDsKIAkJCQkJYm9vbAkJY29udGFpbnM7CiAK LQkJCQkJbmVzdHZhbCA9IEpzb25iSXRlcmF0b3JJbml0KGxoc0NvbnRzW2ldLnZhbC5iaW5h cnkuZGF0YSk7Ci0JCQkJCW5lc3RDb250YWluZWQgPSBKc29uYkl0ZXJhdG9ySW5pdCh2Y29u dGFpbmVkLnZhbC5iaW5hcnkuZGF0YSk7CisJCQkJCW5lc3R2YWwgPSBKc29uYkl0ZXJhdG9y SW5pdChsaHNDb250c1tpXS5iaW5hcnkuZGF0YSk7CisJCQkJCW5lc3RDb250YWluZWQgPSBK c29uYkl0ZXJhdG9ySW5pdCh2Y29udGFpbmVkLmJpbmFyeS5kYXRhKTsKIAogCQkJCQljb250 YWlucyA9IEpzb25iRGVlcENvbnRhaW5zKCZuZXN0dmFsLCAmbmVzdENvbnRhaW5lZCk7CiAK QEAgLTEzMzQsMTYgKzEzMzQsMTYgQEAgSnNvbmJIYXNoU2NhbGFyVmFsdWUoY29uc3QgSnNv bmJWYWx1ZSAqc2NhbGFyVmFsLCB1aW50MzIgKmhhc2gpCiAJCQl0bXAgPSAweDAxOwogCQkJ YnJlYWs7CiAJCWNhc2UgamJ2U3RyaW5nOgotCQkJdG1wID0gRGF0dW1HZXRVSW50MzIoaGFz aF9hbnkoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgc2NhbGFyVmFsLT52YWwuc3RyaW5nLnZh bCwKLQkJCQkJCQkJCQkgIHNjYWxhclZhbC0+dmFsLnN0cmluZy5sZW4pKTsKKwkJCXRtcCA9 IERhdHVtR2V0VUludDMyKGhhc2hfYW55KChjb25zdCB1bnNpZ25lZCBjaGFyICopIHNjYWxh clZhbC0+c3RyaW5nLnZhbCwKKwkJCQkJCQkJCQkgIHNjYWxhclZhbC0+c3RyaW5nLmxlbikp OwogCQkJYnJlYWs7CiAJCWNhc2UgamJ2TnVtZXJpYzoKIAkJCS8qIE11c3QgaGFzaCBlcXVh bCBudW1lcmljcyB0byBlcXVhbCBoYXNoIGNvZGVzICovCiAJCQl0bXAgPSBEYXR1bUdldFVJ bnQzMihEaXJlY3RGdW5jdGlvbkNhbGwxKGhhc2hfbnVtZXJpYywKLQkJCQkJCQkJCQkJCQkg TnVtZXJpY0dldERhdHVtKHNjYWxhclZhbC0+dmFsLm51bWVyaWMpKSk7CisJCQkJCQkJCQkJ CQkJIE51bWVyaWNHZXREYXR1bShzY2FsYXJWYWwtPm51bWVyaWMpKSk7CiAJCQlicmVhazsK IAkJY2FzZSBqYnZCb29sOgotCQkJdG1wID0gc2NhbGFyVmFsLT52YWwuYm9vbGVhbiA/IDB4 MDIgOiAweDA0OworCQkJdG1wID0gc2NhbGFyVmFsLT5ib29sZWFuID8gMHgwMiA6IDB4MDQ7 CiAKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgpAQCAtMTM3NywyMiArMTM3NywyMiBAQCBKc29u Ykhhc2hTY2FsYXJWYWx1ZUV4dGVuZGVkKGNvbnN0IEpzb25iVmFsdWUgKnNjYWxhclZhbCwg dWludDY0ICpoYXNoLAogCQkJdG1wID0gc2VlZCArIDB4MDE7CiAJCQlicmVhazsKIAkJY2Fz ZSBqYnZTdHJpbmc6Ci0JCQl0bXAgPSBEYXR1bUdldFVJbnQ2NChoYXNoX2FueV9leHRlbmRl ZCgoY29uc3QgdW5zaWduZWQgY2hhciAqKSBzY2FsYXJWYWwtPnZhbC5zdHJpbmcudmFsLAot CQkJCQkJCQkJCQkJICAgc2NhbGFyVmFsLT52YWwuc3RyaW5nLmxlbiwKKwkJCXRtcCA9IERh dHVtR2V0VUludDY0KGhhc2hfYW55X2V4dGVuZGVkKChjb25zdCB1bnNpZ25lZCBjaGFyICop IHNjYWxhclZhbC0+c3RyaW5nLnZhbCwKKwkJCQkJCQkJCQkJCSAgIHNjYWxhclZhbC0+c3Ry aW5nLmxlbiwKIAkJCQkJCQkJCQkJCSAgIHNlZWQpKTsKIAkJCWJyZWFrOwogCQljYXNlIGpi dk51bWVyaWM6CiAJCQl0bXAgPSBEYXR1bUdldFVJbnQ2NChEaXJlY3RGdW5jdGlvbkNhbGwy KGhhc2hfbnVtZXJpY19leHRlbmRlZCwKLQkJCQkJCQkJCQkJCQkgTnVtZXJpY0dldERhdHVt KHNjYWxhclZhbC0+dmFsLm51bWVyaWMpLAorCQkJCQkJCQkJCQkJCSBOdW1lcmljR2V0RGF0 dW0oc2NhbGFyVmFsLT5udW1lcmljKSwKIAkJCQkJCQkJCQkJCQkgVUludDY0R2V0RGF0dW0o c2VlZCkpKTsKIAkJCWJyZWFrOwogCQljYXNlIGpidkJvb2w6CiAJCQlpZiAoc2VlZCkKIAkJ CQl0bXAgPSBEYXR1bUdldFVJbnQ2NChEaXJlY3RGdW5jdGlvbkNhbGwyKGhhc2hjaGFyZXh0 ZW5kZWQsCi0JCQkJCQkJCQkJCQkJCSBCb29sR2V0RGF0dW0oc2NhbGFyVmFsLT52YWwuYm9v bGVhbiksCisJCQkJCQkJCQkJCQkJCSBCb29sR2V0RGF0dW0oc2NhbGFyVmFsLT5ib29sZWFu KSwKIAkJCQkJCQkJCQkJCQkJIFVJbnQ2NEdldERhdHVtKHNlZWQpKSk7CiAJCQllbHNlCi0J CQkJdG1wID0gc2NhbGFyVmFsLT52YWwuYm9vbGVhbiA/IDB4MDIgOiAweDA0OworCQkJCXRt cCA9IHNjYWxhclZhbC0+Ym9vbGVhbiA/IDB4MDIgOiAweDA0OwogCiAJCQlicmVhazsKIAkJ ZGVmYXVsdDoKQEAgLTE0MjAsMTAgKzE0MjAsMTAgQEAgZXF1YWxzSnNvbmJTY2FsYXJWYWx1 ZShKc29uYlZhbHVlICphLCBKc29uYlZhbHVlICpiKQogCQkJCXJldHVybiBsZW5ndGhDb21w YXJlSnNvbmJTdHJpbmdWYWx1ZShhLCBiKSA9PSAwOwogCQkJY2FzZSBqYnZOdW1lcmljOgog CQkJCXJldHVybiBEYXR1bUdldEJvb2woRGlyZWN0RnVuY3Rpb25DYWxsMihudW1lcmljX2Vx LAotCQkJCQkJCQkJCQkJCQlQb2ludGVyR2V0RGF0dW0oYS0+dmFsLm51bWVyaWMpLAotCQkJ CQkJCQkJCQkJCQlQb2ludGVyR2V0RGF0dW0oYi0+dmFsLm51bWVyaWMpKSk7CisJCQkJCQkJ CQkJCQkJCVBvaW50ZXJHZXREYXR1bShhLT5udW1lcmljKSwKKwkJCQkJCQkJCQkJCQkJUG9p bnRlckdldERhdHVtKGItPm51bWVyaWMpKSk7CiAJCQljYXNlIGpidkJvb2w6Ci0JCQkJcmV0 dXJuIGEtPnZhbC5ib29sZWFuID09IGItPnZhbC5ib29sZWFuOworCQkJCXJldHVybiBhLT5i b29sZWFuID09IGItPmJvb2xlYW47CiAKIAkJCWRlZmF1bHQ6CiAJCQkJZWxvZyhFUlJPUiwg ImludmFsaWQganNvbmIgc2NhbGFyIHR5cGUiKTsKQEAgLTE0NDksMTkgKzE0NDksMTkgQEAg Y29tcGFyZUpzb25iU2NhbGFyVmFsdWUoSnNvbmJWYWx1ZSAqYSwgSnNvbmJWYWx1ZSAqYikK IAkJCWNhc2UgamJ2TnVsbDoKIAkJCQlyZXR1cm4gMDsKIAkJCWNhc2UgamJ2U3RyaW5nOgot CQkJCXJldHVybiB2YXJzdHJfY21wKGEtPnZhbC5zdHJpbmcudmFsLAotCQkJCQkJCQkgIGEt PnZhbC5zdHJpbmcubGVuLAotCQkJCQkJCQkgIGItPnZhbC5zdHJpbmcudmFsLAotCQkJCQkJ CQkgIGItPnZhbC5zdHJpbmcubGVuLAorCQkJCXJldHVybiB2YXJzdHJfY21wKGEtPnN0cmlu Zy52YWwsCisJCQkJCQkJCSAgYS0+c3RyaW5nLmxlbiwKKwkJCQkJCQkJICBiLT5zdHJpbmcu dmFsLAorCQkJCQkJCQkgIGItPnN0cmluZy5sZW4sCiAJCQkJCQkJCSAgREVGQVVMVF9DT0xM QVRJT05fT0lEKTsKIAkJCWNhc2UgamJ2TnVtZXJpYzoKIAkJCQlyZXR1cm4gRGF0dW1HZXRJ bnQzMihEaXJlY3RGdW5jdGlvbkNhbGwyKG51bWVyaWNfY21wLAotCQkJCQkJCQkJCQkJCQkg UG9pbnRlckdldERhdHVtKGEtPnZhbC5udW1lcmljKSwKLQkJCQkJCQkJCQkJCQkJIFBvaW50 ZXJHZXREYXR1bShiLT52YWwubnVtZXJpYykpKTsKKwkJCQkJCQkJCQkJCQkJIFBvaW50ZXJH ZXREYXR1bShhLT5udW1lcmljKSwKKwkJCQkJCQkJCQkJCQkJIFBvaW50ZXJHZXREYXR1bShi LT5udW1lcmljKSkpOwogCQkJY2FzZSBqYnZCb29sOgotCQkJCWlmIChhLT52YWwuYm9vbGVh biA9PSBiLT52YWwuYm9vbGVhbikKKwkJCQlpZiAoYS0+Ym9vbGVhbiA9PSBiLT5ib29sZWFu KQogCQkJCQlyZXR1cm4gMDsKLQkJCQllbHNlIGlmIChhLT52YWwuYm9vbGVhbiA+IGItPnZh bC5ib29sZWFuKQorCQkJCWVsc2UgaWYgKGEtPmJvb2xlYW4gPiBiLT5ib29sZWFuKQogCQkJ CQlyZXR1cm4gMTsKIAkJCQllbHNlCiAJCQkJCXJldHVybiAtMTsKQEAgLTE2MjksNyArMTYy OSw3IEBAIGNvbnZlcnRKc29uYkFycmF5KFN0cmluZ0luZm8gYnVmZmVyLCBKRW50cnkgKmhl YWRlciwgSnNvbmJWYWx1ZSAqdmFsLCBpbnQgbGV2ZWwpCiAJaW50CQkJaTsKIAlpbnQJCQl0 b3RhbGxlbjsKIAl1aW50MzIJCWNvbnRhaW5lcmhlYWQ7Ci0JaW50CQkJbkVsZW1zID0gdmFs LT52YWwuYXJyYXkubkVsZW1zOworCWludAkJCW5FbGVtcyA9IHZhbC0+YXJyYXkubkVsZW1z OwogCiAJLyogUmVtZW1iZXIgd2hlcmUgaW4gdGhlIGJ1ZmZlciB0aGlzIGFycmF5IHN0YXJ0 cy4gKi8KIAliYXNlX29mZnNldCA9IGJ1ZmZlci0+bGVuOwpAQCAtMTY0Miw3ICsxNjQyLDcg QEAgY29udmVydEpzb25iQXJyYXkoU3RyaW5nSW5mbyBidWZmZXIsIEpFbnRyeSAqaGVhZGVy LCBKc29uYlZhbHVlICp2YWwsIGludCBsZXZlbCkKIAkgKiB2YXJpYWJsZS1sZW5ndGggcGF5 bG9hZC4KIAkgKi8KIAljb250YWluZXJoZWFkID0gbkVsZW1zIHwgSkJfRkFSUkFZOwotCWlm ICh2YWwtPnZhbC5hcnJheS5yYXdTY2FsYXIpCisJaWYgKHZhbC0+YXJyYXkucmF3U2NhbGFy KQogCXsKIAkJQXNzZXJ0KG5FbGVtcyA9PSAxKTsKIAkJQXNzZXJ0KGxldmVsID09IDApOwpA QCAtMTY1Nyw3ICsxNjU3LDcgQEAgY29udmVydEpzb25iQXJyYXkoU3RyaW5nSW5mbyBidWZm ZXIsIEpFbnRyeSAqaGVhZGVyLCBKc29uYlZhbHVlICp2YWwsIGludCBsZXZlbCkKIAl0b3Rh bGxlbiA9IDA7CiAJZm9yIChpID0gMDsgaSA8IG5FbGVtczsgaSsrKQogCXsKLQkJSnNvbmJW YWx1ZSAqZWxlbSA9ICZ2YWwtPnZhbC5hcnJheS5lbGVtc1tpXTsKKwkJSnNvbmJWYWx1ZSAq ZWxlbSA9ICZ2YWwtPmFycmF5LmVsZW1zW2ldOwogCQlpbnQJCQlsZW47CiAJCUpFbnRyeQkJ bWV0YTsKIApAQCAtMTcxMyw3ICsxNzEzLDcgQEAgY29udmVydEpzb25iT2JqZWN0KFN0cmlu Z0luZm8gYnVmZmVyLCBKRW50cnkgKmhlYWRlciwgSnNvbmJWYWx1ZSAqdmFsLCBpbnQgbGV2 ZWwKIAlpbnQJCQlpOwogCWludAkJCXRvdGFsbGVuOwogCXVpbnQzMgkJY29udGFpbmVyaGVh ZGVyOwotCWludAkJCW5QYWlycyA9IHZhbC0+dmFsLm9iamVjdC5uUGFpcnM7CisJaW50CQkJ blBhaXJzID0gdmFsLT5vYmplY3QublBhaXJzOwogCiAJLyogUmVtZW1iZXIgd2hlcmUgaW4g dGhlIGJ1ZmZlciB0aGlzIG9iamVjdCBzdGFydHMuICovCiAJYmFzZV9vZmZzZXQgPSBidWZm ZXItPmxlbjsKQEAgLTE3MzgsNyArMTczOCw3IEBAIGNvbnZlcnRKc29uYk9iamVjdChTdHJp bmdJbmZvIGJ1ZmZlciwgSkVudHJ5ICpoZWFkZXIsIEpzb25iVmFsdWUgKnZhbCwgaW50IGxl dmVsCiAJdG90YWxsZW4gPSAwOwogCWZvciAoaSA9IDA7IGkgPCBuUGFpcnM7IGkrKykKIAl7 Ci0JCUpzb25iUGFpciAgKnBhaXIgPSAmdmFsLT52YWwub2JqZWN0LnBhaXJzW2ldOworCQlK c29uYlBhaXIgICpwYWlyID0gJnZhbC0+b2JqZWN0LnBhaXJzW2ldOwogCQlpbnQJCQlsZW47 CiAJCUpFbnRyeQkJbWV0YTsKIApAQCAtMTc3Myw3ICsxNzczLDcgQEAgY29udmVydEpzb25i T2JqZWN0KFN0cmluZ0luZm8gYnVmZmVyLCBKRW50cnkgKmhlYWRlciwgSnNvbmJWYWx1ZSAq dmFsLCBpbnQgbGV2ZWwKIAl9CiAJZm9yIChpID0gMDsgaSA8IG5QYWlyczsgaSsrKQogCXsK LQkJSnNvbmJQYWlyICAqcGFpciA9ICZ2YWwtPnZhbC5vYmplY3QucGFpcnNbaV07CisJCUpz b25iUGFpciAgKnBhaXIgPSAmdmFsLT5vYmplY3QucGFpcnNbaV07CiAJCWludAkJCWxlbjsK IAkJSkVudHJ5CQltZXRhOwogCkBAIC0xODM0LDIyICsxODM0LDIyIEBAIGNvbnZlcnRKc29u YlNjYWxhcihTdHJpbmdJbmZvIGJ1ZmZlciwgSkVudHJ5ICpoZWFkZXIsIEpzb25iVmFsdWUg KnNjYWxhclZhbCkKIAkJCWJyZWFrOwogCiAJCWNhc2UgamJ2U3RyaW5nOgotCQkJYXBwZW5k VG9CdWZmZXIoYnVmZmVyLCBzY2FsYXJWYWwtPnZhbC5zdHJpbmcudmFsLCBzY2FsYXJWYWwt PnZhbC5zdHJpbmcubGVuKTsKKwkJCWFwcGVuZFRvQnVmZmVyKGJ1ZmZlciwgc2NhbGFyVmFs LT5zdHJpbmcudmFsLCBzY2FsYXJWYWwtPnN0cmluZy5sZW4pOwogCi0JCQkqaGVhZGVyID0g c2NhbGFyVmFsLT52YWwuc3RyaW5nLmxlbjsKKwkJCSpoZWFkZXIgPSBzY2FsYXJWYWwtPnN0 cmluZy5sZW47CiAJCQlicmVhazsKIAogCQljYXNlIGpidk51bWVyaWM6Ci0JCQludW1sZW4g PSBWQVJTSVpFX0FOWShzY2FsYXJWYWwtPnZhbC5udW1lcmljKTsKKwkJCW51bWxlbiA9IFZB UlNJWkVfQU5ZKHNjYWxhclZhbC0+bnVtZXJpYyk7CiAJCQlwYWRsZW4gPSBwYWRCdWZmZXJU b0ludChidWZmZXIpOwogCi0JCQlhcHBlbmRUb0J1ZmZlcihidWZmZXIsIHNjYWxhclZhbC0+ dmFsLm51bWVyaWMsIG51bWxlbik7CisJCQlhcHBlbmRUb0J1ZmZlcihidWZmZXIsIHNjYWxh clZhbC0+bnVtZXJpYywgbnVtbGVuKTsKIAogCQkJKmhlYWRlciA9IEpFTlRSWV9JU05VTUVS SUMgfCAocGFkbGVuICsgbnVtbGVuKTsKIAkJCWJyZWFrOwogCiAJCWNhc2UgamJ2Qm9vbDoK LQkJCSpoZWFkZXIgPSAoc2NhbGFyVmFsLT52YWwuYm9vbGVhbikgPworCQkJKmhlYWRlciA9 IChzY2FsYXJWYWwtPmJvb2xlYW4pID8KIAkJCQlKRU5UUllfSVNCT09MX1RSVUUgOiBKRU5U UllfSVNCT09MX0ZBTFNFOwogCQkJYnJlYWs7CiAKQEAgLTE4NTksOSArMTg1OSw5IEBAIGNv bnZlcnRKc29uYlNjYWxhcihTdHJpbmdJbmZvIGJ1ZmZlciwgSkVudHJ5ICpoZWFkZXIsIEpz b25iVmFsdWUgKnNjYWxhclZhbCkKIAkJCQlzaXplX3QJCWxlbjsKIAogCQkJCUpzb25FbmNv ZGVEYXRlVGltZShidWYsCi0JCQkJCQkJCSAgIHNjYWxhclZhbC0+dmFsLmRhdGV0aW1lLnZh bHVlLAotCQkJCQkJCQkgICBzY2FsYXJWYWwtPnZhbC5kYXRldGltZS50eXBpZCwKLQkJCQkJ CQkJICAgJnNjYWxhclZhbC0+dmFsLmRhdGV0aW1lLnR6KTsKKwkJCQkJCQkJICAgc2NhbGFy VmFsLT5kYXRldGltZS52YWx1ZSwKKwkJCQkJCQkJICAgc2NhbGFyVmFsLT5kYXRldGltZS50 eXBpZCwKKwkJCQkJCQkJICAgJnNjYWxhclZhbC0+ZGF0ZXRpbWUudHopOwogCQkJCWxlbiA9 IHN0cmxlbihidWYpOwogCQkJCWFwcGVuZFRvQnVmZmVyKGJ1ZmZlciwgYnVmLCBsZW4pOwog CkBAIC0xODk1LDggKzE4OTUsOCBAQCBsZW5ndGhDb21wYXJlSnNvbmJTdHJpbmdWYWx1ZShj b25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQogCUFzc2VydCh2YS0+dHlwZSA9PSBqYnZT dHJpbmcpOwogCUFzc2VydCh2Yi0+dHlwZSA9PSBqYnZTdHJpbmcpOwogCi0JcmV0dXJuIGxl bmd0aENvbXBhcmVKc29uYlN0cmluZyh2YS0+dmFsLnN0cmluZy52YWwsIHZhLT52YWwuc3Ry aW5nLmxlbiwKLQkJCQkJCQkJCXZiLT52YWwuc3RyaW5nLnZhbCwgdmItPnZhbC5zdHJpbmcu bGVuKTsKKwlyZXR1cm4gbGVuZ3RoQ29tcGFyZUpzb25iU3RyaW5nKHZhLT5zdHJpbmcudmFs LCB2YS0+c3RyaW5nLmxlbiwKKwkJCQkJCQkJCXZiLT5zdHJpbmcudmFsLCB2Yi0+c3RyaW5n Lmxlbik7CiB9CiAKIC8qCkBAIC0xOTU2LDggKzE5NTYsOCBAQCB1bmlxdWVpZnlKc29uYk9i amVjdChKc29uYlZhbHVlICpvYmplY3QsIGJvb2wgdW5pcXVlX2tleXMsIGJvb2wgc2tpcF9u dWxscykKIAogCUFzc2VydChvYmplY3QtPnR5cGUgPT0gamJ2T2JqZWN0KTsKIAotCWlmIChv YmplY3QtPnZhbC5vYmplY3QublBhaXJzID4gMSkKLQkJcXNvcnRfYXJnKG9iamVjdC0+dmFs Lm9iamVjdC5wYWlycywgb2JqZWN0LT52YWwub2JqZWN0Lm5QYWlycywgc2l6ZW9mKEpzb25i UGFpciksCisJaWYgKG9iamVjdC0+b2JqZWN0Lm5QYWlycyA+IDEpCisJCXFzb3J0X2FyZyhv YmplY3QtPm9iamVjdC5wYWlycywgb2JqZWN0LT5vYmplY3QublBhaXJzLCBzaXplb2YoSnNv bmJQYWlyKSwKIAkJCQkgIGxlbmd0aENvbXBhcmVKc29uYlBhaXIsICZoYXNOb25VbmlxKTsK IAogCWlmIChoYXNOb25VbmlxICYmIHVuaXF1ZV9rZXlzKQpAQCAtMTk3MCwyMCArMTk3MCwy MCBAQCB1bmlxdWVpZnlKc29uYk9iamVjdChKc29uYlZhbHVlICpvYmplY3QsIGJvb2wgdW5p cXVlX2tleXMsIGJvb2wgc2tpcF9udWxscykKIAkJSnNvbmJQYWlyICAqcHRyLAogCQkJCSAg ICpyZXM7CiAKLQkJd2hpbGUgKHNraXBfbnVsbHMgJiYgb2JqZWN0LT52YWwub2JqZWN0Lm5Q YWlycyA+IDAgJiYKLQkJCSAgIG9iamVjdC0+dmFsLm9iamVjdC5wYWlycy0+dmFsdWUudHlw ZSA9PSBqYnZOdWxsKQorCQl3aGlsZSAoc2tpcF9udWxscyAmJiBvYmplY3QtPm9iamVjdC5u UGFpcnMgPiAwICYmCisJCQkgICBvYmplY3QtPm9iamVjdC5wYWlycy0+dmFsdWUudHlwZSA9 PSBqYnZOdWxsKQogCQl7CiAJCQkvKiBJZiBza2lwX251bGxzIGlzIHRydWUsIHJlbW92ZSBs ZWFkaW5nIGl0ZW1zIHdpdGggbnVsbCAqLwotCQkJb2JqZWN0LT52YWwub2JqZWN0LnBhaXJz Kys7Ci0JCQlvYmplY3QtPnZhbC5vYmplY3QublBhaXJzLS07CisJCQlvYmplY3QtPm9iamVj dC5wYWlycysrOworCQkJb2JqZWN0LT5vYmplY3QublBhaXJzLS07CiAJCX0KIAotCQlpZiAo b2JqZWN0LT52YWwub2JqZWN0Lm5QYWlycyA+IDApCisJCWlmIChvYmplY3QtPm9iamVjdC5u UGFpcnMgPiAwKQogCQl7Ci0JCQlwdHIgPSBvYmplY3QtPnZhbC5vYmplY3QucGFpcnMgKyAx OwotCQkJcmVzID0gb2JqZWN0LT52YWwub2JqZWN0LnBhaXJzOworCQkJcHRyID0gb2JqZWN0 LT5vYmplY3QucGFpcnMgKyAxOworCQkJcmVzID0gb2JqZWN0LT5vYmplY3QucGFpcnM7CiAK LQkJCXdoaWxlIChwdHIgLSBvYmplY3QtPnZhbC5vYmplY3QucGFpcnMgPCBvYmplY3QtPnZh bC5vYmplY3QublBhaXJzKQorCQkJd2hpbGUgKHB0ciAtIG9iamVjdC0+b2JqZWN0LnBhaXJz IDwgb2JqZWN0LT5vYmplY3QublBhaXJzKQogCQkJewogCQkJCS8qIEF2b2lkIGNvcHlpbmcg b3ZlciBkdXBsaWNhdGUgb3IgbnVsbCAqLwogCQkJCWlmIChsZW5ndGhDb21wYXJlSnNvbmJT dHJpbmdWYWx1ZShwdHIsIHJlcykgIT0gMCAmJgpAQCAtMTk5Niw3ICsxOTk2LDcgQEAgdW5p cXVlaWZ5SnNvbmJPYmplY3QoSnNvbmJWYWx1ZSAqb2JqZWN0LCBib29sIHVuaXF1ZV9rZXlz LCBib29sIHNraXBfbnVsbHMpCiAJCQkJcHRyKys7CiAJCQl9CiAKLQkJCW9iamVjdC0+dmFs Lm9iamVjdC5uUGFpcnMgPSByZXMgKyAxIC0gb2JqZWN0LT52YWwub2JqZWN0LnBhaXJzOwor CQkJb2JqZWN0LT5vYmplY3QublBhaXJzID0gcmVzICsgMSAtIG9iamVjdC0+b2JqZWN0LnBh aXJzOwogCQl9CiAJfQogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pz b25ic3Vicy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jCmluZGV4IDgy MTFkZTIzZDU5Li44MjMxY2RlN2RiZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2pzb25ic3Vicy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYnN1YnMu YwpAQCAtMjg5LDEzICsyODksMTMgQEAganNvbmJfc3Vic2NyaXB0X2Fzc2lnbihFeHByU3Rh dGUgKnN0YXRlLAogCQlpZiAod29ya3NwYWNlLT5leHBlY3RBcnJheSkKIAkJewogCQkJbmV3 U291cmNlLnR5cGUgPSBqYnZBcnJheTsKLQkJCW5ld1NvdXJjZS52YWwuYXJyYXkubkVsZW1z ID0gMDsKLQkJCW5ld1NvdXJjZS52YWwuYXJyYXkucmF3U2NhbGFyID0gZmFsc2U7CisJCQlu ZXdTb3VyY2UuYXJyYXkubkVsZW1zID0gMDsKKwkJCW5ld1NvdXJjZS5hcnJheS5yYXdTY2Fs YXIgPSBmYWxzZTsKIAkJfQogCQllbHNlCiAJCXsKIAkJCW5ld1NvdXJjZS50eXBlID0gamJ2 T2JqZWN0OwotCQkJbmV3U291cmNlLnZhbC5vYmplY3QublBhaXJzID0gMDsKKwkJCW5ld1Nv dXJjZS5vYmplY3QublBhaXJzID0gMDsKIAkJfQogCiAJCWpzb25iU291cmNlID0gSnNvbmJW YWx1ZVRvSnNvbmIoJm5ld1NvdXJjZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9hZHQvanNvbmZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMK aW5kZXggYzVlMWEwMjc5NTYuLmFkZmRkNDg3YmNmIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvanNvbmZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pz b25mdW5jcy5jCkBAIC0xNzUsNyArMTc1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29tcG9zaXRl SU9EYXRhCiB7CiAJLyoKIAkgKiBXZSB1c2UgcG9pbnRlciB0byBhIFJlY29yZElPRGF0YSBo ZXJlIGJlY2F1c2UgdmFyaWFibGUtbGVuZ3RoIHN0cnVjdAotCSAqIFJlY29yZElPRGF0YSBj YW4ndCBiZSB1c2VkIGRpcmVjdGx5IGluIENvbHVtbklPRGF0YS5pbyB1bmlvbgorCSAqIFJl Y29yZElPRGF0YSBjYW4ndCBiZSB1c2VkIGRpcmVjdGx5IGluIENvbHVtbklPRGF0YSB1bmlv bgogCSAqLwogCVJlY29yZElPRGF0YSAqcmVjb3JkX2lvOwkvKiBtZXRhZGF0YSBjYWNoZSBm b3IgcG9wdWxhdGVfcmVjb3JkKCkgKi8KIAlUdXBsZURlc2MJdHVwZGVzYzsJCS8qIGNhY2hl ZCB0dXBsZSBkZXNjcmlwdG9yICovCkBAIC0yMjAsNyArMjIwLDcgQEAgc3RydWN0IENvbHVt bklPRGF0YQogCQlBcnJheUlPRGF0YSBhcnJheTsKIAkJQ29tcG9zaXRlSU9EYXRhIGNvbXBv c2l0ZTsKIAkJRG9tYWluSU9EYXRhIGRvbWFpbjsKLQl9CQkJaW87CQkJCS8qIG1ldGFkYXRh IGNhY2hlIGZvciB2YXJpb3VzIGNvbHVtbiB0eXBlCisJfTsJCQkJCQkJLyogbWV0YWRhdGEg Y2FjaGUgZm9yIHZhcmlvdXMgY29sdW1uIHR5cGUKIAkJCQkJCQkJICogY2F0ZWdvcmllcyAq LwogfTsKIApAQCAtMzAzLDcgKzMwMyw3IEBAIHR5cGVkZWYgc3RydWN0IEpzVmFsdWUKIAkJ fQkJCWpzb247CQkvKiBqc29uIHZhbHVlICovCiAKIAkJSnNvbmJWYWx1ZSAqanNvbmI7CQkv KiBqc29uYiB2YWx1ZSAqLwotCX0JCQl2YWw7CisJfTsKIH0gSnNWYWx1ZTsKIAogdHlwZWRl ZiBzdHJ1Y3QgSnNPYmplY3QKQEAgLTMxMywyOSArMzEzLDI5IEBAIHR5cGVkZWYgc3RydWN0 IEpzT2JqZWN0CiAJewogCQlIVEFCCSAgICpqc29uX2hhc2g7CiAJCUpzb25iQ29udGFpbmVy ICpqc29uYl9jb250OwotCX0JCQl2YWw7CisJfTsKIH0gSnNPYmplY3Q7CiAKIC8qIHVzZWZ1 bCBtYWNyb3MgZm9yIHRlc3RpbmcgSnNWYWx1ZSBwcm9wZXJ0aWVzICovCiAjZGVmaW5lIEpz VmFsdWVJc051bGwoanN2KSBcCiAJKChqc3YpLT5pc19qc29uID8gIFwKLQkJKCEoanN2KS0+ dmFsLmpzb24uc3RyIHx8IChqc3YpLT52YWwuanNvbi50eXBlID09IEpTT05fVE9LRU5fTlVM TCkgOiBcCi0JCSghKGpzdiktPnZhbC5qc29uYiB8fCAoanN2KS0+dmFsLmpzb25iLT50eXBl ID09IGpidk51bGwpKQorCQkoIShqc3YpLT5qc29uLnN0ciB8fCAoanN2KS0+anNvbi50eXBl ID09IEpTT05fVE9LRU5fTlVMTCkgOiBcCisJCSghKGpzdiktPmpzb25iIHx8IChqc3YpLT5q c29uYi0+dHlwZSA9PSBqYnZOdWxsKSkKIAogI2RlZmluZSBKc1ZhbHVlSXNTdHJpbmcoanN2 KSBcCi0JKChqc3YpLT5pc19qc29uID8gKGpzdiktPnZhbC5qc29uLnR5cGUgPT0gSlNPTl9U T0tFTl9TVFJJTkcgXAotCQk6ICgoanN2KS0+dmFsLmpzb25iICYmIChqc3YpLT52YWwuanNv bmItPnR5cGUgPT0gamJ2U3RyaW5nKSkKKwkoKGpzdiktPmlzX2pzb24gPyAoanN2KS0+anNv bi50eXBlID09IEpTT05fVE9LRU5fU1RSSU5HIFwKKwkJOiAoKGpzdiktPmpzb25iICYmIChq c3YpLT5qc29uYi0+dHlwZSA9PSBqYnZTdHJpbmcpKQogCiAjZGVmaW5lIEpzT2JqZWN0SXNF bXB0eShqc28pIFwKIAkoKGpzbyktPmlzX2pzb24gXAotCQk/IGhhc2hfZ2V0X251bV9lbnRy aWVzKChqc28pLT52YWwuanNvbl9oYXNoKSA9PSAwIFwKLQkJOiAoKGpzbyktPnZhbC5qc29u Yl9jb250ID09IE5VTEwgfHwgXAotCQkgICBKc29uQ29udGFpbmVyU2l6ZSgoanNvKS0+dmFs Lmpzb25iX2NvbnQpID09IDApKQorCQk/IGhhc2hfZ2V0X251bV9lbnRyaWVzKChqc28pLT5q c29uX2hhc2gpID09IDAgXAorCQk6ICgoanNvKS0+anNvbmJfY29udCA9PSBOVUxMIHx8IFwK KwkJICAgSnNvbkNvbnRhaW5lclNpemUoKGpzbyktPmpzb25iX2NvbnQpID09IDApKQogCiAj ZGVmaW5lIEpzT2JqZWN0RnJlZShqc28pIFwKIAlkbyB7IFwKIAkJaWYgKChqc28pLT5pc19q c29uKSBcCi0JCQloYXNoX2Rlc3Ryb3koKGpzbyktPnZhbC5qc29uX2hhc2gpOyBcCisJCQlo YXNoX2Rlc3Ryb3koKGpzbyktPmpzb25faGFzaCk7IFwKIAl9IHdoaWxlICgwKQogCiBzdGF0 aWMgaW50CXJlcG9ydF9qc29uX2NvbnRleHQoSnNvbkxleENvbnRleHQgKmxleCk7CkBAIC02 MTAsOSArNjEwLDkgQEAganNvbmJfb2JqZWN0X2tleXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJ CXsKIAkJCQljaGFyCSAgICpjc3RyOwogCi0JCQkJY3N0ciA9IHBhbGxvYyh2LnZhbC5zdHJp bmcubGVuICsgMSAqIHNpemVvZihjaGFyKSk7Ci0JCQkJbWVtY3B5KGNzdHIsIHYudmFsLnN0 cmluZy52YWwsIHYudmFsLnN0cmluZy5sZW4pOwotCQkJCWNzdHJbdi52YWwuc3RyaW5nLmxl bl0gPSAnXDAnOworCQkJCWNzdHIgPSBwYWxsb2Modi5zdHJpbmcubGVuICsgMSAqIHNpemVv ZihjaGFyKSk7CisJCQkJbWVtY3B5KGNzdHIsIHYuc3RyaW5nLnZhbCwgdi5zdHJpbmcubGVu KTsKKwkJCQljc3RyW3Yuc3RyaW5nLmxlbl0gPSAnXDAnOwogCQkJCXN0YXRlLT5yZXN1bHRb c3RhdGUtPnJlc3VsdF9jb3VudCsrXSA9IGNzdHI7CiAJCQl9CiAJCX0KQEAgLTE2NDMsNyAr MTY0Myw3IEBAIGpzb25iX2dldF9lbGVtZW50KEpzb25iICpqYiwgRGF0dW0gKnBhdGgsIGlu dCBucGF0aCwgYm9vbCAqaXNudWxsLCBib29sIGFzX3RleHQpCiAKIAkJaWYgKGpidnAtPnR5 cGUgPT0gamJ2QmluYXJ5KQogCQl7Ci0JCQljb250YWluZXIgPSBqYnZwLT52YWwuYmluYXJ5 LmRhdGE7CisJCQljb250YWluZXIgPSBqYnZwLT5iaW5hcnkuZGF0YTsKIAkJCWhhdmVfb2Jq ZWN0ID0gSnNvbkNvbnRhaW5lcklzT2JqZWN0KGNvbnRhaW5lcik7CiAJCQloYXZlX2FycmF5 ID0gSnNvbkNvbnRhaW5lcklzQXJyYXkoY29udGFpbmVyKTsKIAkJCUFzc2VydCghSnNvbkNv bnRhaW5lcklzU2NhbGFyKGNvbnRhaW5lcikpOwpAQCAtMTY4NCw4ICsxNjg0LDggQEAganNv bmJfc2V0X2VsZW1lbnQoSnNvbmIgKmpiLCBEYXR1bSAqcGF0aCwgaW50IHBhdGhfbGVuLAog CUpzb25iSXRlcmF0b3IgKml0OwogCWJvb2wJICAgKnBhdGhfbnVsbHMgPSBwYWxsb2MwKHBh dGhfbGVuICogc2l6ZW9mKGJvb2wpKTsKIAotCWlmIChuZXd2YWwtPnR5cGUgPT0gamJ2QXJy YXkgJiYgbmV3dmFsLT52YWwuYXJyYXkucmF3U2NhbGFyKQotCQkqbmV3dmFsID0gbmV3dmFs LT52YWwuYXJyYXkuZWxlbXNbMF07CisJaWYgKG5ld3ZhbC0+dHlwZSA9PSBqYnZBcnJheSAm JiBuZXd2YWwtPmFycmF5LnJhd1NjYWxhcikKKwkJKm5ld3ZhbCA9IG5ld3ZhbC0+YXJyYXku ZWxlbXNbMF07CiAKIAlpdCA9IEpzb25iSXRlcmF0b3JJbml0KCZqYi0+cm9vdCk7CiAKQEAg LTE3NTUsOCArMTc1NSw4IEBAIHB1c2hfcGF0aChKc29uYlBhcnNlU3RhdGUgKipzdCwgaW50 IGxldmVsLCBEYXR1bSAqcGF0aF9lbGVtcywKIAkJewogCQkJLyogdGV4dCwgYW4gb2JqZWN0 IGlzIGV4cGVjdGVkICovCiAJCQluZXdrZXkudHlwZSA9IGpidlN0cmluZzsKLQkJCW5ld2tl eS52YWwuc3RyaW5nLnZhbCA9IGM7Ci0JCQluZXdrZXkudmFsLnN0cmluZy5sZW4gPSBzdHJs ZW4oYyk7CisJCQluZXdrZXkuc3RyaW5nLnZhbCA9IGM7CisJCQluZXdrZXkuc3RyaW5nLmxl biA9IHN0cmxlbihjKTsKIAogCQkJKHZvaWQpIHB1c2hKc29uYlZhbHVlKHN0LCBXSkJfQkVH SU5fT0JKRUNULCBOVUxMKTsKIAkJCSh2b2lkKSBwdXNoSnNvbmJWYWx1ZShzdCwgV0pCX0tF WSwgJm5ld2tleSk7CkBAIC0xODEwLDIwICsxODEwLDIwIEBAIEpzb25iVmFsdWVBc1RleHQo SnNvbmJWYWx1ZSAqdikKIAkJCXJldHVybiBOVUxMOwogCiAJCWNhc2UgamJ2Qm9vbDoKLQkJ CXJldHVybiB2LT52YWwuYm9vbGVhbiA/CisJCQlyZXR1cm4gdi0+Ym9vbGVhbiA/CiAJCQkJ Y3N0cmluZ190b190ZXh0X3dpdGhfbGVuKCJ0cnVlIiwgNCkgOgogCQkJCWNzdHJpbmdfdG9f dGV4dF93aXRoX2xlbigiZmFsc2UiLCA1KTsKIAogCQljYXNlIGpidlN0cmluZzoKLQkJCXJl dHVybiBjc3RyaW5nX3RvX3RleHRfd2l0aF9sZW4odi0+dmFsLnN0cmluZy52YWwsCi0JCQkJ CQkJCQkJCXYtPnZhbC5zdHJpbmcubGVuKTsKKwkJCXJldHVybiBjc3RyaW5nX3RvX3RleHRf d2l0aF9sZW4odi0+c3RyaW5nLnZhbCwKKwkJCQkJCQkJCQkJdi0+c3RyaW5nLmxlbik7CiAK IAkJY2FzZSBqYnZOdW1lcmljOgogCQkJewogCQkJCURhdHVtCQljc3RyOwogCiAJCQkJY3N0 ciA9IERpcmVjdEZ1bmN0aW9uQ2FsbDEobnVtZXJpY19vdXQsCi0JCQkJCQkJCQkJICAgUG9p bnRlckdldERhdHVtKHYtPnZhbC5udW1lcmljKSk7CisJCQkJCQkJCQkJICAgUG9pbnRlckdl dERhdHVtKHYtPm51bWVyaWMpKTsKIAogCQkJCXJldHVybiBjc3RyaW5nX3RvX3RleHQoRGF0 dW1HZXRDU3RyaW5nKGNzdHIpKTsKIAkJCX0KQEAgLTE4MzMsOCArMTgzMyw4IEBAIEpzb25i VmFsdWVBc1RleHQoSnNvbmJWYWx1ZSAqdikKIAkJCQlTdHJpbmdJbmZvRGF0YSBqdGV4dDsK IAogCQkJCWluaXRTdHJpbmdJbmZvKCZqdGV4dCk7Ci0JCQkJKHZvaWQpIEpzb25iVG9DU3Ry aW5nKCZqdGV4dCwgdi0+dmFsLmJpbmFyeS5kYXRhLAotCQkJCQkJCQkJICB2LT52YWwuYmlu YXJ5Lmxlbik7CisJCQkJKHZvaWQpIEpzb25iVG9DU3RyaW5nKCZqdGV4dCwgdi0+YmluYXJ5 LmRhdGEsCisJCQkJCQkJCQkgIHYtPmJpbmFyeS5sZW4pOwogCiAJCQkJcmV0dXJuIGNzdHJp bmdfdG9fdGV4dF93aXRoX2xlbihqdGV4dC5kYXRhLCBqdGV4dC5sZW4pOwogCQkJfQpAQCAt MjAxMCw3ICsyMDEwLDcgQEAgZWFjaF93b3JrZXJfanNvbmIoRnVuY3Rpb25DYWxsSW5mbyBm Y2luZm8sIGNvbnN0IGNoYXIgKmZ1bmNuYW1lLCBib29sIGFzX3RleHQpCiAJCQkvKiBVc2Ug dGhlIHRtcCBjb250ZXh0IHNvIHdlIGNhbiBjbGVhbiB1cCBhZnRlciBlYWNoIHR1cGxlIGlz IGRvbmUgKi8KIAkJCW9sZF9jeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8odG1wX2N4dCk7 CiAKLQkJCWtleSA9IGNzdHJpbmdfdG9fdGV4dF93aXRoX2xlbih2LnZhbC5zdHJpbmcudmFs LCB2LnZhbC5zdHJpbmcubGVuKTsKKwkJCWtleSA9IGNzdHJpbmdfdG9fdGV4dF93aXRoX2xl bih2LnN0cmluZy52YWwsIHYuc3RyaW5nLmxlbik7CiAKIAkJCS8qCiAJCQkgKiBUaGUgbmV4 dCB0aGluZyB0aGUgaXRlcmF0b3IgZmV0Y2hlcyBzaG91bGQgYmUgdGhlIHZhbHVlLCBubwpA QCAtMjcyMCwyNCArMjcyMCwyNCBAQCBwb3B1bGF0ZV9hcnJheV9lbGVtZW50X2VuZCh2b2lk ICpfc3RhdGUsIGJvb2wgaXNudWxsKQogCQlKc1ZhbHVlCQlqc3Y7CiAKIAkJanN2LmlzX2pz b24gPSB0cnVlOwotCQlqc3YudmFsLmpzb24udHlwZSA9IHN0YXRlLT5lbGVtZW50X3R5cGU7 CisJCWpzdi5qc29uLnR5cGUgPSBzdGF0ZS0+ZWxlbWVudF90eXBlOwogCiAJCWlmIChpc251 bGwpCiAJCXsKLQkJCUFzc2VydChqc3YudmFsLmpzb24udHlwZSA9PSBKU09OX1RPS0VOX05V TEwpOwotCQkJanN2LnZhbC5qc29uLnN0ciA9IE5VTEw7Ci0JCQlqc3YudmFsLmpzb24ubGVu ID0gMDsKKwkJCUFzc2VydChqc3YuanNvbi50eXBlID09IEpTT05fVE9LRU5fTlVMTCk7CisJ CQlqc3YuanNvbi5zdHIgPSBOVUxMOworCQkJanN2Lmpzb24ubGVuID0gMDsKIAkJfQogCQll bHNlIGlmIChzdGF0ZS0+ZWxlbWVudF9zY2FsYXIpCiAJCXsKLQkJCWpzdi52YWwuanNvbi5z dHIgPSBzdGF0ZS0+ZWxlbWVudF9zY2FsYXI7Ci0JCQlqc3YudmFsLmpzb24ubGVuID0gLTE7 CS8qIG51bGwtdGVybWluYXRlZCAqLworCQkJanN2Lmpzb24uc3RyID0gc3RhdGUtPmVsZW1l bnRfc2NhbGFyOworCQkJanN2Lmpzb24ubGVuID0gLTE7CS8qIG51bGwtdGVybWluYXRlZCAq LwogCQl9CiAJCWVsc2UKIAkJewotCQkJanN2LnZhbC5qc29uLnN0ciA9IHN0YXRlLT5lbGVt ZW50X3N0YXJ0OwotCQkJanN2LnZhbC5qc29uLmxlbiA9IChzdGF0ZS0+bGV4LT5wcmV2X3Rv a2VuX3Rlcm1pbmF0b3IgLQotCQkJCQkJCQlzdGF0ZS0+ZWxlbWVudF9zdGFydCkgKiBzaXpl b2YoY2hhcik7CisJCQlqc3YuanNvbi5zdHIgPSBzdGF0ZS0+ZWxlbWVudF9zdGFydDsKKwkJ CWpzdi5qc29uLmxlbiA9IChzdGF0ZS0+bGV4LT5wcmV2X3Rva2VuX3Rlcm1pbmF0b3IgLQor CQkJCQkJCXN0YXRlLT5lbGVtZW50X3N0YXJ0KSAqIHNpemVvZihjaGFyKTsKIAkJfQogCiAJ CS8qIFJlcG9ydCBpZiBhbiBlcnJvciBvY2N1cnJlZC4gKi8KQEAgLTI4MjYsNyArMjgyNiw3 IEBAIHBvcHVsYXRlX2FycmF5X2RpbV9qc29uYihQb3B1bGF0ZUFycmF5Q29udGV4dCAqY3R4 LCAvKiBjb250ZXh0ICovCiAJCQkJCQkgSnNvbmJWYWx1ZSAqamJ2LAkvKiBqc29uYiBzdWIt YXJyYXkgKi8KIAkJCQkJCSBpbnQgbmRpbSkJLyogY3VycmVudCBkaW1lbnNpb24gKi8KIHsK LQlKc29uYkNvbnRhaW5lciAqamJjID0gamJ2LT52YWwuYmluYXJ5LmRhdGE7CisJSnNvbmJD b250YWluZXIgKmpiYyA9IGpidi0+YmluYXJ5LmRhdGE7CiAJSnNvbmJJdGVyYXRvciAqaXQ7 CiAJSnNvbmJJdGVyYXRvclRva2VuIHRvazsKIAlKc29uYlZhbHVlCXZhbDsKQEAgLTI4NjAs MTQgKzI4NjAsMTQgQEAgcG9wdWxhdGVfYXJyYXlfZGltX2pzb25iKFBvcHVsYXRlQXJyYXlD b250ZXh0ICpjdHgsIC8qIGNvbnRleHQgKi8KIAkJKHRvayA9PSBXSkJfRU5EX0FSUkFZIHx8 CiAJCSAodG9rID09IFdKQl9FTEVNICYmCiAJCSAgKHZhbC50eXBlICE9IGpidkJpbmFyeSB8 fAotCQkgICAhSnNvbkNvbnRhaW5lcklzQXJyYXkodmFsLnZhbC5iaW5hcnkuZGF0YSkpKSkp CisJCSAgICFKc29uQ29udGFpbmVySXNBcnJheSh2YWwuYmluYXJ5LmRhdGEpKSkpKQogCXsK IAkJaWYgKCFwb3B1bGF0ZV9hcnJheV9hc3NpZ25fbmRpbXMoY3R4LCBuZGltKSkKIAkJCXJl dHVybiBmYWxzZTsKIAl9CiAKIAlqc3YuaXNfanNvbiA9IGZhbHNlOwotCWpzdi52YWwuanNv bmIgPSAmdmFsOworCWpzdi5qc29uYiA9ICZ2YWw7CiAKIAkvKiBwcm9jZXNzIGFsbCB0aGUg YXJyYXkgZWxlbWVudHMgKi8KIAl3aGlsZSAodG9rID09IFdKQl9FTEVNKQpAQCAtMjkzNyw5 ICsyOTM3LDkgQEAgcG9wdWxhdGVfYXJyYXkoQXJyYXlJT0RhdGEgKmFpbywKIAlpZiAoanN2 LT5pc19qc29uKQogCXsKIAkJLyogUmV0dXJuIG51bGwgaWYgYW4gZXJyb3Igd2FzIGZvdW5k LiAqLwotCQlpZiAoIXBvcHVsYXRlX2FycmF5X2pzb24oJmN0eCwganN2LT52YWwuanNvbi5z dHIsCi0JCQkJCQkJCSBqc3YtPnZhbC5qc29uLmxlbiA+PSAwID8ganN2LT52YWwuanNvbi5s ZW4KLQkJCQkJCQkJIDogc3RybGVuKGpzdi0+dmFsLmpzb24uc3RyKSkpCisJCWlmICghcG9w dWxhdGVfYXJyYXlfanNvbigmY3R4LCBqc3YtPmpzb24uc3RyLAorCQkJCQkJCQkganN2LT5q c29uLmxlbiA+PSAwID8ganN2LT5qc29uLmxlbgorCQkJCQkJCQkgOiBzdHJsZW4oanN2LT5q c29uLnN0cikpKQogCQl7CiAJCQkqaXNudWxsID0gdHJ1ZTsKIAkJCXJldHVybiAoRGF0dW0p IDA7CkBAIC0yOTQ4LDcgKzI5NDgsNyBAQCBwb3B1bGF0ZV9hcnJheShBcnJheUlPRGF0YSAq YWlvLAogCWVsc2UKIAl7CiAJCS8qIFJldHVybiBudWxsIGlmIGFuIGVycm9yIHdhcyBmb3Vu ZC4gKi8KLQkJaWYgKCFwb3B1bGF0ZV9hcnJheV9kaW1fanNvbmIoJmN0eCwganN2LT52YWwu anNvbmIsIDEpKQorCQlpZiAoIXBvcHVsYXRlX2FycmF5X2RpbV9qc29uYigmY3R4LCBqc3Yt Pmpzb25iLCAxKSkKIAkJewogCQkJKmlzbnVsbCA9IHRydWU7CiAJCQlyZXR1cm4gKERhdHVt KSAwOwpAQCAtMjk4NiwyMyArMjk4NiwyMyBAQCBKc1ZhbHVlVG9Kc09iamVjdChKc1ZhbHVl ICpqc3YsIEpzT2JqZWN0ICpqc28sIE5vZGUgKmVzY29udGV4dCkKIAlpZiAoanN2LT5pc19q c29uKQogCXsKIAkJLyogY29udmVydCBwbGFpbi10ZXh0IGpzb24gaW50byBhIGhhc2ggdGFi bGUgKi8KLQkJanNvLT52YWwuanNvbl9oYXNoID0KLQkJCWdldF9qc29uX29iamVjdF9hc19o YXNoKGpzdi0+dmFsLmpzb24uc3RyLAotCQkJCQkJCQkJanN2LT52YWwuanNvbi5sZW4gPj0g MAotCQkJCQkJCQkJPyBqc3YtPnZhbC5qc29uLmxlbgotCQkJCQkJCQkJOiBzdHJsZW4oanN2 LT52YWwuanNvbi5zdHIpLAorCQlqc28tPmpzb25faGFzaCA9CisJCQlnZXRfanNvbl9vYmpl Y3RfYXNfaGFzaChqc3YtPmpzb24uc3RyLAorCQkJCQkJCQkJanN2LT5qc29uLmxlbiA+PSAw CisJCQkJCQkJCQk/IGpzdi0+anNvbi5sZW4KKwkJCQkJCQkJCTogc3RybGVuKGpzdi0+anNv bi5zdHIpLAogCQkJCQkJCQkJInBvcHVsYXRlX2NvbXBvc2l0ZSIsCiAJCQkJCQkJCQllc2Nv bnRleHQpOwotCQlBc3NlcnQoanNvLT52YWwuanNvbl9oYXNoICE9IE5VTEwgfHwgU09GVF9F UlJPUl9PQ0NVUlJFRChlc2NvbnRleHQpKTsKKwkJQXNzZXJ0KGpzby0+anNvbl9oYXNoICE9 IE5VTEwgfHwgU09GVF9FUlJPUl9PQ0NVUlJFRChlc2NvbnRleHQpKTsKIAl9CiAJZWxzZQog CXsKLQkJSnNvbmJWYWx1ZSAqamJ2ID0ganN2LT52YWwuanNvbmI7CisJCUpzb25iVmFsdWUg KmpidiA9IGpzdi0+anNvbmI7CiAKIAkJaWYgKGpidi0+dHlwZSA9PSBqYnZCaW5hcnkgJiYK LQkJCUpzb25Db250YWluZXJJc09iamVjdChqYnYtPnZhbC5iaW5hcnkuZGF0YSkpCisJCQlK c29uQ29udGFpbmVySXNPYmplY3QoamJ2LT5iaW5hcnkuZGF0YSkpCiAJCXsKLQkJCWpzby0+ dmFsLmpzb25iX2NvbnQgPSBqYnYtPnZhbC5iaW5hcnkuZGF0YTsKKwkJCWpzby0+anNvbmJf Y29udCA9IGpidi0+YmluYXJ5LmRhdGE7CiAJCX0KIAkJZWxzZQogCQl7CkBAIC0zMDEwLDcg KzMwMTAsNyBAQCBKc1ZhbHVlVG9Kc09iamVjdChKc1ZhbHVlICpqc3YsIEpzT2JqZWN0ICpq c28sIE5vZGUgKmVzY29udGV4dCkKIAogCQkJaXNfc2NhbGFyID0gSXNBSnNvbmJTY2FsYXIo amJ2KSB8fAogCQkJCShqYnYtPnR5cGUgPT0gamJ2QmluYXJ5ICYmCi0JCQkJIEpzb25Db250 YWluZXJJc1NjYWxhcihqYnYtPnZhbC5iaW5hcnkuZGF0YSkpOworCQkJCSBKc29uQ29udGFp bmVySXNTY2FsYXIoamJ2LT5iaW5hcnkuZGF0YSkpOwogCQkJZXJyc2F2ZShlc2NvbnRleHQs CiAJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAogCQkJ CQkgaXNfc2NhbGFyCkBAIC0zMTMxLDE0ICszMTMxLDE0IEBAIHBvcHVsYXRlX3NjYWxhcihT Y2FsYXJJT0RhdGEgKmlvLCBPaWQgdHlwaWQsIGludDMyIHR5cG1vZCwgSnNWYWx1ZSAqanN2 LAogCiAJaWYgKGpzdi0+aXNfanNvbikKIAl7Ci0JCWludAkJCWxlbiA9IGpzdi0+dmFsLmpz b24ubGVuOworCQlpbnQJCQlsZW4gPSBqc3YtPmpzb24ubGVuOwogCi0JCWpzb24gPSBqc3Yt PnZhbC5qc29uLnN0cjsKKwkJanNvbiA9IGpzdi0+anNvbi5zdHI7CiAJCUFzc2VydChqc29u KTsKIAogCQkvKiBJZiBjb252ZXJ0aW5nIHRvIGpzb24vanNvbmIsIG1ha2Ugc3RyaW5nIGlu dG8gdmFsaWQgSlNPTiBsaXRlcmFsICovCiAJCWlmICgodHlwaWQgPT0gSlNPTk9JRCB8fCB0 eXBpZCA9PSBKU09OQk9JRCkgJiYKLQkJCWpzdi0+dmFsLmpzb24udHlwZSA9PSBKU09OX1RP S0VOX1NUUklORykKKwkJCWpzdi0+anNvbi50eXBlID09IEpTT05fVE9LRU5fU1RSSU5HKQog CQl7CiAJCQlTdHJpbmdJbmZvRGF0YSBidWY7CiAKQEAgLTMxNjQsMTAgKzMxNjQsMTAgQEAg cG9wdWxhdGVfc2NhbGFyKFNjYWxhcklPRGF0YSAqaW8sIE9pZCB0eXBpZCwgaW50MzIgdHlw bW9kLCBKc1ZhbHVlICpqc3YsCiAJfQogCWVsc2UKIAl7Ci0JCUpzb25iVmFsdWUgKmpidiA9 IGpzdi0+dmFsLmpzb25iOworCQlKc29uYlZhbHVlICpqYnYgPSBqc3YtPmpzb25iOwogCiAJ CWlmIChqYnYtPnR5cGUgPT0gamJ2U3RyaW5nICYmIG9taXRfcXVvdGVzKQotCQkJc3RyID0g cG5zdHJkdXAoamJ2LT52YWwuc3RyaW5nLnZhbCwgamJ2LT52YWwuc3RyaW5nLmxlbik7CisJ CQlzdHIgPSBwbnN0cmR1cChqYnYtPnN0cmluZy52YWwsIGpidi0+c3RyaW5nLmxlbik7CiAJ CWVsc2UgaWYgKHR5cGlkID09IEpTT05CT0lEKQogCQl7CiAJCQlKc29uYgkgICAqanNvbmIg PSBKc29uYlZhbHVlVG9Kc29uYihqYnYpOyAvKiBkaXJlY3RseSB1c2UganNvbmIgKi8KQEAg LTMxODYsMTUgKzMxODYsMTUgQEAgcG9wdWxhdGVfc2NhbGFyKFNjYWxhcklPRGF0YSAqaW8s IE9pZCB0eXBpZCwgaW50MzIgdHlwbW9kLCBKc1ZhbHVlICpqc3YsCiAJCQlzdHIgPSBKc29u YlRvQ1N0cmluZyhOVUxMLCAmanNvbmItPnJvb3QsIFZBUlNJWkUoanNvbmIpKTsKIAkJfQog CQllbHNlIGlmIChqYnYtPnR5cGUgPT0gamJ2U3RyaW5nKQkvKiBxdW90ZXMgYXJlIHN0cmlw cGVkICovCi0JCQlzdHIgPSBwbnN0cmR1cChqYnYtPnZhbC5zdHJpbmcudmFsLCBqYnYtPnZh bC5zdHJpbmcubGVuKTsKKwkJCXN0ciA9IHBuc3RyZHVwKGpidi0+c3RyaW5nLnZhbCwgamJ2 LT5zdHJpbmcubGVuKTsKIAkJZWxzZSBpZiAoamJ2LT50eXBlID09IGpidkJvb2wpCi0JCQlz dHIgPSBwc3RyZHVwKGpidi0+dmFsLmJvb2xlYW4gPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKwkJ CXN0ciA9IHBzdHJkdXAoamJ2LT5ib29sZWFuID8gInRydWUiIDogImZhbHNlIik7CiAJCWVs c2UgaWYgKGpidi0+dHlwZSA9PSBqYnZOdW1lcmljKQogCQkJc3RyID0gRGF0dW1HZXRDU3Ry aW5nKERpcmVjdEZ1bmN0aW9uQ2FsbDEobnVtZXJpY19vdXQsCi0JCQkJCQkJCQkJCQkJICBQ b2ludGVyR2V0RGF0dW0oamJ2LT52YWwubnVtZXJpYykpKTsKKwkJCQkJCQkJCQkJCQkgIFBv aW50ZXJHZXREYXR1bShqYnYtPm51bWVyaWMpKSk7CiAJCWVsc2UgaWYgKGpidi0+dHlwZSA9 PSBqYnZCaW5hcnkpCi0JCQlzdHIgPSBKc29uYlRvQ1N0cmluZyhOVUxMLCBqYnYtPnZhbC5i aW5hcnkuZGF0YSwKLQkJCQkJCQkJIGpidi0+dmFsLmJpbmFyeS5sZW4pOworCQkJc3RyID0g SnNvbmJUb0NTdHJpbmcoTlVMTCwgamJ2LT5iaW5hcnkuZGF0YSwKKwkJCQkJCQkJIGpidi0+ YmluYXJ5Lmxlbik7CiAJCWVsc2UKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQganNv bmIgdHlwZTogJWQiLCAoaW50KSBqYnYtPnR5cGUpOwogCX0KQEAgLTMyODAsNDAgKzMyODAs NDAgQEAgcHJlcGFyZV9jb2x1bW5fY2FjaGUoQ29sdW1uSU9EYXRhICpjb2x1bW4sCiAJCXsK IAkJCS8qIGRvbWFpbiBvdmVyIGNvbXBvc2l0ZSBoYXMgaXRzIG93biBjb2RlIHBhdGggKi8K IAkJCWNvbHVtbi0+dHlwY2F0ID0gVFlQRUNBVF9DT01QT1NJVEVfRE9NQUlOOwotCQkJY29s dW1uLT5pby5jb21wb3NpdGUucmVjb3JkX2lvID0gTlVMTDsKLQkJCWNvbHVtbi0+aW8uY29t cG9zaXRlLnR1cGRlc2MgPSBOVUxMOwotCQkJY29sdW1uLT5pby5jb21wb3NpdGUuYmFzZV90 eXBpZCA9IGJhc2VfdHlwaWQ7Ci0JCQljb2x1bW4tPmlvLmNvbXBvc2l0ZS5iYXNlX3R5cG1v ZCA9IGJhc2VfdHlwbW9kOwotCQkJY29sdW1uLT5pby5jb21wb3NpdGUuZG9tYWluX2luZm8g PSBOVUxMOworCQkJY29sdW1uLT5jb21wb3NpdGUucmVjb3JkX2lvID0gTlVMTDsKKwkJCWNv bHVtbi0+Y29tcG9zaXRlLnR1cGRlc2MgPSBOVUxMOworCQkJY29sdW1uLT5jb21wb3NpdGUu YmFzZV90eXBpZCA9IGJhc2VfdHlwaWQ7CisJCQljb2x1bW4tPmNvbXBvc2l0ZS5iYXNlX3R5 cG1vZCA9IGJhc2VfdHlwbW9kOworCQkJY29sdW1uLT5jb21wb3NpdGUuZG9tYWluX2luZm8g PSBOVUxMOwogCQl9CiAJCWVsc2UKIAkJewogCQkJLyogZG9tYWluIG92ZXIgYW55dGhpbmcg ZWxzZSAqLwogCQkJY29sdW1uLT50eXBjYXQgPSBUWVBFQ0FUX0RPTUFJTjsKLQkJCWNvbHVt bi0+aW8uZG9tYWluLmJhc2VfdHlwaWQgPSBiYXNlX3R5cGlkOwotCQkJY29sdW1uLT5pby5k b21haW4uYmFzZV90eXBtb2QgPSBiYXNlX3R5cG1vZDsKLQkJCWNvbHVtbi0+aW8uZG9tYWlu LmJhc2VfaW8gPQorCQkJY29sdW1uLT5kb21haW4uYmFzZV90eXBpZCA9IGJhc2VfdHlwaWQ7 CisJCQljb2x1bW4tPmRvbWFpbi5iYXNlX3R5cG1vZCA9IGJhc2VfdHlwbW9kOworCQkJY29s dW1uLT5kb21haW4uYmFzZV9pbyA9CiAJCQkJTWVtb3J5Q29udGV4dEFsbG9jWmVybyhtY3h0 LCBzaXplb2YoQ29sdW1uSU9EYXRhKSk7Ci0JCQljb2x1bW4tPmlvLmRvbWFpbi5kb21haW5f aW5mbyA9IE5VTEw7CisJCQljb2x1bW4tPmRvbWFpbi5kb21haW5faW5mbyA9IE5VTEw7CiAJ CX0KIAl9CiAJZWxzZSBpZiAodHlwZS0+dHlwdHlwZSA9PSBUWVBUWVBFX0NPTVBPU0lURSB8 fCB0eXBpZCA9PSBSRUNPUkRPSUQpCiAJewogCQljb2x1bW4tPnR5cGNhdCA9IFRZUEVDQVRf Q09NUE9TSVRFOwotCQljb2x1bW4tPmlvLmNvbXBvc2l0ZS5yZWNvcmRfaW8gPSBOVUxMOwot CQljb2x1bW4tPmlvLmNvbXBvc2l0ZS50dXBkZXNjID0gTlVMTDsKLQkJY29sdW1uLT5pby5j b21wb3NpdGUuYmFzZV90eXBpZCA9IHR5cGlkOwotCQljb2x1bW4tPmlvLmNvbXBvc2l0ZS5i YXNlX3R5cG1vZCA9IHR5cG1vZDsKLQkJY29sdW1uLT5pby5jb21wb3NpdGUuZG9tYWluX2lu Zm8gPSBOVUxMOworCQljb2x1bW4tPmNvbXBvc2l0ZS5yZWNvcmRfaW8gPSBOVUxMOworCQlj b2x1bW4tPmNvbXBvc2l0ZS50dXBkZXNjID0gTlVMTDsKKwkJY29sdW1uLT5jb21wb3NpdGUu YmFzZV90eXBpZCA9IHR5cGlkOworCQljb2x1bW4tPmNvbXBvc2l0ZS5iYXNlX3R5cG1vZCA9 IHR5cG1vZDsKKwkJY29sdW1uLT5jb21wb3NpdGUuZG9tYWluX2luZm8gPSBOVUxMOwogCX0K IAllbHNlIGlmIChJc1RydWVBcnJheVR5cGUodHlwZSkpCiAJewogCQljb2x1bW4tPnR5cGNh dCA9IFRZUEVDQVRfQVJSQVk7Ci0JCWNvbHVtbi0+aW8uYXJyYXkuZWxlbWVudF9pbmZvID0g TWVtb3J5Q29udGV4dEFsbG9jWmVybyhtY3h0LAotCQkJCQkJCQkJCQkJCQkJICAgc2l6ZW9m KENvbHVtbklPRGF0YSkpOwotCQljb2x1bW4tPmlvLmFycmF5LmVsZW1lbnRfdHlwZSA9IHR5 cGUtPnR5cGVsZW07CisJCWNvbHVtbi0+YXJyYXkuZWxlbWVudF9pbmZvID0gTWVtb3J5Q29u dGV4dEFsbG9jWmVybyhtY3h0LAorCQkJCQkJCQkJCQkJCQkJc2l6ZW9mKENvbHVtbklPRGF0 YSkpOworCQljb2x1bW4tPmFycmF5LmVsZW1lbnRfdHlwZSA9IHR5cGUtPnR5cGVsZW07CiAJ CS8qIGFycmF5IGVsZW1lbnQgdHlwZW1vZCBzdG9yZWQgaW4gYXR0cmlidXRlJ3MgdHlwbW9k ICovCi0JCWNvbHVtbi0+aW8uYXJyYXkuZWxlbWVudF90eXBtb2QgPSB0eXBtb2Q7CisJCWNv bHVtbi0+YXJyYXkuZWxlbWVudF90eXBtb2QgPSB0eXBtb2Q7CiAJfQogCWVsc2UKIAl7CkBA IC0zMzU2LDI0ICszMzU2LDI0IEBAIGpzb25fcG9wdWxhdGVfdHlwZShEYXR1bSBqc29uX3Zh bCwgT2lkIGpzb25fdHlwZSwKIAlpZiAoKmlzbnVsbCkKIAl7CiAJCWlmIChqc3YuaXNfanNv bikKLQkJCWpzdi52YWwuanNvbi5zdHIgPSBOVUxMOworCQkJanN2Lmpzb24uc3RyID0gTlVM TDsKIAkJZWxzZQotCQkJanN2LnZhbC5qc29uYiA9IE5VTEw7CisJCQlqc3YuanNvbmIgPSBO VUxMOwogCX0KIAllbHNlIGlmIChqc3YuaXNfanNvbikKIAl7CiAJCXRleHQJICAgKmpzb24g PSBEYXR1bUdldFRleHRQUChqc29uX3ZhbCk7CiAKLQkJanN2LnZhbC5qc29uLnN0ciA9IFZB UkRBVEFfQU5ZKGpzb24pOwotCQlqc3YudmFsLmpzb24ubGVuID0gVkFSU0laRV9BTllfRVhI RFIoanNvbik7Ci0JCWpzdi52YWwuanNvbi50eXBlID0gSlNPTl9UT0tFTl9JTlZBTElEOyAv KiBub3QgdXNlZCBpbgotCQkJCQkJCQkJCQkJICogcG9wdWxhdGVfY29tcG9zaXRlKCkgKi8K KwkJanN2Lmpzb24uc3RyID0gVkFSREFUQV9BTlkoanNvbik7CisJCWpzdi5qc29uLmxlbiA9 IFZBUlNJWkVfQU5ZX0VYSERSKGpzb24pOworCQlqc3YuanNvbi50eXBlID0gSlNPTl9UT0tF Tl9JTlZBTElEOyAvKiBub3QgdXNlZCBpbgorCQkJCQkJCQkJCQkgKiBwb3B1bGF0ZV9jb21w b3NpdGUoKSAqLwogCX0KIAllbHNlCiAJewogCQlKc29uYgkgICAqanNvbmIgPSBEYXR1bUdl dEpzb25iUChqc29uX3ZhbCk7CiAKLQkJanN2LnZhbC5qc29uYiA9ICZqYnY7CisJCWpzdi5q c29uYiA9ICZqYnY7CiAKIAkJaWYgKG9taXRfcXVvdGVzKQogCQl7CkBAIC0zMzgxLDE1ICsz MzgxLDE1IEBAIGpzb25fcG9wdWxhdGVfdHlwZShEYXR1bSBqc29uX3ZhbCwgT2lkIGpzb25f dHlwZSwKIAogCQkJLyogZmlsbCB0aGUgcXVvdGUtc3RyaXBwZWQgc3RyaW5nICovCiAJCQlq YnYudHlwZSA9IGpidlN0cmluZzsKLQkJCWpidi52YWwuc3RyaW5nLmxlbiA9IHN0cmxlbihz dHIpOwotCQkJamJ2LnZhbC5zdHJpbmcudmFsID0gc3RyOworCQkJamJ2LnN0cmluZy5sZW4g PSBzdHJsZW4oc3RyKTsKKwkJCWpidi5zdHJpbmcudmFsID0gc3RyOwogCQl9CiAJCWVsc2UK IAkJewogCQkJLyogZmlsbCBiaW5hcnkganNvbmIgdmFsdWUgcG9pbnRpbmcgdG8gamIgKi8K IAkJCWpidi50eXBlID0gamJ2QmluYXJ5OwotCQkJamJ2LnZhbC5iaW5hcnkuZGF0YSA9ICZq c29uYi0+cm9vdDsKLQkJCWpidi52YWwuYmluYXJ5LmxlbiA9IFZBUlNJWkUoanNvbmIpIC0g VkFSSERSU1o7CisJCQlqYnYuYmluYXJ5LmRhdGEgPSAmanNvbmItPnJvb3Q7CisJCQlqYnYu YmluYXJ5LmxlbiA9IFZBUlNJWkUoanNvbmIpIC0gVkFSSERSU1o7CiAJCX0KIAl9CiAKQEAg LTM0NDksMTIgKzM0NDksMTIgQEAgcG9wdWxhdGVfcmVjb3JkX2ZpZWxkKENvbHVtbklPRGF0 YSAqY29sLAogCQkJCQkJCQkgICBpc251bGwsIGVzY29udGV4dCwgb21pdF9zY2FsYXJfcXVv dGVzKTsKIAogCQljYXNlIFRZUEVDQVRfQVJSQVk6Ci0JCQlyZXR1cm4gcG9wdWxhdGVfYXJy YXkoJmNvbC0+aW8uYXJyYXksIGNvbG5hbWUsIG1jeHQsIGpzdiwKKwkJCXJldHVybiBwb3B1 bGF0ZV9hcnJheSgmY29sLT5hcnJheSwgY29sbmFtZSwgbWN4dCwganN2LAogCQkJCQkJCQkg IGlzbnVsbCwgZXNjb250ZXh0KTsKIAogCQljYXNlIFRZUEVDQVRfQ09NUE9TSVRFOgogCQlj YXNlIFRZUEVDQVRfQ09NUE9TSVRFX0RPTUFJTjoKLQkJCXJldHVybiBwb3B1bGF0ZV9jb21w b3NpdGUoJmNvbC0+aW8uY29tcG9zaXRlLCB0eXBpZCwKKwkJCXJldHVybiBwb3B1bGF0ZV9j b21wb3NpdGUoJmNvbC0+Y29tcG9zaXRlLCB0eXBpZCwKIAkJCQkJCQkJCSAgY29sbmFtZSwg bWN4dCwKIAkJCQkJCQkJCSAgRGF0dW1HZXRQb2ludGVyKGRlZmF1bHR2YWwpCiAJCQkJCQkJ CQkgID8gRGF0dW1HZXRIZWFwVHVwbGVIZWFkZXIoZGVmYXVsdHZhbCkKQEAgLTM0NjMsNyAr MzQ2Myw3IEBAIHBvcHVsYXRlX3JlY29yZF9maWVsZChDb2x1bW5JT0RhdGEgKmNvbCwKIAkJ CQkJCQkJCSAgZXNjb250ZXh0KTsKIAogCQljYXNlIFRZUEVDQVRfRE9NQUlOOgotCQkJcmV0 dXJuIHBvcHVsYXRlX2RvbWFpbigmY29sLT5pby5kb21haW4sIHR5cGlkLCBjb2xuYW1lLCBt Y3h0LAorCQkJcmV0dXJuIHBvcHVsYXRlX2RvbWFpbigmY29sLT5kb21haW4sIHR5cGlkLCBj b2xuYW1lLCBtY3h0LAogCQkJCQkJCQkgICBqc3YsIGlzbnVsbCwgZXNjb250ZXh0LCBvbWl0 X3NjYWxhcl9xdW90ZXMpOwogCiAJCWRlZmF1bHQ6CkBAIC0zNDk1LDIzICszNDk1LDIzIEBA IEpzT2JqZWN0R2V0RmllbGQoSnNPYmplY3QgKm9iaiwgY2hhciAqZmllbGQsIEpzVmFsdWUg KmpzdikKIAogCWlmIChqc3YtPmlzX2pzb24pCiAJewotCQlKc29uSGFzaEVudHJ5ICpoYXNo ZW50cnkgPSBoYXNoX3NlYXJjaChvYmotPnZhbC5qc29uX2hhc2gsIGZpZWxkLAorCQlKc29u SGFzaEVudHJ5ICpoYXNoZW50cnkgPSBoYXNoX3NlYXJjaChvYmotPmpzb25faGFzaCwgZmll bGQsCiAJCQkJCQkJCQkJCSAgIEhBU0hfRklORCwgTlVMTCk7CiAKLQkJanN2LT52YWwuanNv bi50eXBlID0gaGFzaGVudHJ5ID8gaGFzaGVudHJ5LT50eXBlIDogSlNPTl9UT0tFTl9OVUxM OwotCQlqc3YtPnZhbC5qc29uLnN0ciA9IGpzdi0+dmFsLmpzb24udHlwZSA9PSBKU09OX1RP S0VOX05VTEwgPyBOVUxMIDoKKwkJanN2LT5qc29uLnR5cGUgPSBoYXNoZW50cnkgPyBoYXNo ZW50cnktPnR5cGUgOiBKU09OX1RPS0VOX05VTEw7CisJCWpzdi0+anNvbi5zdHIgPSBqc3Yt Pmpzb24udHlwZSA9PSBKU09OX1RPS0VOX05VTEwgPyBOVUxMIDoKIAkJCWhhc2hlbnRyeS0+ dmFsOwotCQlqc3YtPnZhbC5qc29uLmxlbiA9IGpzdi0+dmFsLmpzb24uc3RyID8gLTEgOiAw OyAvKiBudWxsLXRlcm1pbmF0ZWQgKi8KKwkJanN2LT5qc29uLmxlbiA9IGpzdi0+anNvbi5z dHIgPyAtMSA6IDA7IC8qIG51bGwtdGVybWluYXRlZCAqLwogCiAJCXJldHVybiBoYXNoZW50 cnkgIT0gTlVMTDsKIAl9CiAJZWxzZQogCXsKLQkJanN2LT52YWwuanNvbmIgPSAhb2JqLT52 YWwuanNvbmJfY29udCA/IE5VTEwgOgotCQkJZ2V0S2V5SnNvblZhbHVlRnJvbUNvbnRhaW5l cihvYmotPnZhbC5qc29uYl9jb250LCBmaWVsZCwgc3RybGVuKGZpZWxkKSwKKwkJanN2LT5q c29uYiA9ICFvYmotPmpzb25iX2NvbnQgPyBOVUxMIDoKKwkJCWdldEtleUpzb25WYWx1ZUZy b21Db250YWluZXIob2JqLT5qc29uYl9jb250LCBmaWVsZCwgc3RybGVuKGZpZWxkKSwKIAkJ CQkJCQkJCQkgTlVMTCk7CiAKLQkJcmV0dXJuIGpzdi0+dmFsLmpzb25iICE9IE5VTEw7CisJ CXJldHVybiBqc3YtPmpzb25iICE9IE5VTEw7CiAJfQogfQogCkBAIC0zNjgwLDE0ICszNjgw LDE0IEBAIGdldF9yZWNvcmRfdHlwZV9mcm9tX3F1ZXJ5KEZ1bmN0aW9uQ2FsbEluZm8gZmNp bmZvLAogCWNhY2hlLT5hcmd0eXBlID0gdHVwZGVzYy0+dGR0eXBlaWQ7CiAKIAkvKiBJZiB3 ZSBnbyB0aHJvdWdoIHRoaXMgbW9yZSB0aGFuIG9uY2UsIGF2b2lkIG1lbW9yeSBsZWFrICov Ci0JaWYgKGNhY2hlLT5jLmlvLmNvbXBvc2l0ZS50dXBkZXNjKQotCQlGcmVlVHVwbGVEZXNj KGNhY2hlLT5jLmlvLmNvbXBvc2l0ZS50dXBkZXNjKTsKKwlpZiAoY2FjaGUtPmMuY29tcG9z aXRlLnR1cGRlc2MpCisJCUZyZWVUdXBsZURlc2MoY2FjaGUtPmMuY29tcG9zaXRlLnR1cGRl c2MpOwogCiAJLyogU2F2ZSBpZGVudGlmaWVkIHR1cGRlc2MgKi8KIAlvbGRfY3h0ID0gTWVt b3J5Q29udGV4dFN3aXRjaFRvKGNhY2hlLT5mbl9tY3h0KTsKLQljYWNoZS0+Yy5pby5jb21w b3NpdGUudHVwZGVzYyA9IENyZWF0ZVR1cGxlRGVzY0NvcHkodHVwZGVzYyk7Ci0JY2FjaGUt PmMuaW8uY29tcG9zaXRlLmJhc2VfdHlwaWQgPSB0dXBkZXNjLT50ZHR5cGVpZDsKLQljYWNo ZS0+Yy5pby5jb21wb3NpdGUuYmFzZV90eXBtb2QgPSB0dXBkZXNjLT50ZHR5cG1vZDsKKwlj YWNoZS0+Yy5jb21wb3NpdGUudHVwZGVzYyA9IENyZWF0ZVR1cGxlRGVzY0NvcHkodHVwZGVz Yyk7CisJY2FjaGUtPmMuY29tcG9zaXRlLmJhc2VfdHlwaWQgPSB0dXBkZXNjLT50ZHR5cGVp ZDsKKwljYWNoZS0+Yy5jb21wb3NpdGUuYmFzZV90eXBtb2QgPSB0dXBkZXNjLT50ZHR5cG1v ZDsKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkX2N4dCk7CiB9CiAKQEAgLTM3MzksOCAr MzczOSw4IEBAIHBvcHVsYXRlX3JlY29yZF93b3JrZXIoRnVuY3Rpb25DYWxsSW5mbyBmY2lu Zm8sIGNvbnN0IGNoYXIgKmZ1bmNuYW1lLAogCQkgKi8KIAkJaWYgKGNhY2hlLT5hcmd0eXBl ID09IFJFQ09SRE9JRCkKIAkJewotCQkJY2FjaGUtPmMuaW8uY29tcG9zaXRlLmJhc2VfdHlw aWQgPSBIZWFwVHVwbGVIZWFkZXJHZXRUeXBlSWQocmVjKTsKLQkJCWNhY2hlLT5jLmlvLmNv bXBvc2l0ZS5iYXNlX3R5cG1vZCA9IEhlYXBUdXBsZUhlYWRlckdldFR5cE1vZChyZWMpOwor CQkJY2FjaGUtPmMuY29tcG9zaXRlLmJhc2VfdHlwaWQgPSBIZWFwVHVwbGVIZWFkZXJHZXRU eXBlSWQocmVjKTsKKwkJCWNhY2hlLT5jLmNvbXBvc2l0ZS5iYXNlX3R5cG1vZCA9IEhlYXBU dXBsZUhlYWRlckdldFR5cE1vZChyZWMpOwogCQl9CiAJfQogCWVsc2UKQEAgLTM3NzQsMjUg KzM3NzQsMjUgQEAgcG9wdWxhdGVfcmVjb3JkX3dvcmtlcihGdW5jdGlvbkNhbGxJbmZvIGZj aW5mbywgY29uc3QgY2hhciAqZnVuY25hbWUsCiAJewogCQl0ZXh0CSAgICpqc29uID0gUEdf R0VUQVJHX1RFWFRfUFAoanNvbl9hcmdfbnVtKTsKIAotCQlqc3YudmFsLmpzb24uc3RyID0g VkFSREFUQV9BTlkoanNvbik7Ci0JCWpzdi52YWwuanNvbi5sZW4gPSBWQVJTSVpFX0FOWV9F WEhEUihqc29uKTsKLQkJanN2LnZhbC5qc29uLnR5cGUgPSBKU09OX1RPS0VOX0lOVkFMSUQ7 IC8qIG5vdCB1c2VkIGluCi0JCQkJCQkJCQkJCQkgKiBwb3B1bGF0ZV9jb21wb3NpdGUoKSAq LworCQlqc3YuanNvbi5zdHIgPSBWQVJEQVRBX0FOWShqc29uKTsKKwkJanN2Lmpzb24ubGVu ID0gVkFSU0laRV9BTllfRVhIRFIoanNvbik7CisJCWpzdi5qc29uLnR5cGUgPSBKU09OX1RP S0VOX0lOVkFMSUQ7IC8qIG5vdCB1c2VkIGluCisJCQkJCQkJCQkJCSAqIHBvcHVsYXRlX2Nv bXBvc2l0ZSgpICovCiAJfQogCWVsc2UKIAl7CiAJCUpzb25iCSAgICpqYiA9IFBHX0dFVEFS R19KU09OQl9QKGpzb25fYXJnX251bSk7CiAKLQkJanN2LnZhbC5qc29uYiA9ICZqYnY7CisJ CWpzdi5qc29uYiA9ICZqYnY7CiAKIAkJLyogZmlsbCBiaW5hcnkganNvbmIgdmFsdWUgcG9p bnRpbmcgdG8gamIgKi8KIAkJamJ2LnR5cGUgPSBqYnZCaW5hcnk7Ci0JCWpidi52YWwuYmlu YXJ5LmRhdGEgPSAmamItPnJvb3Q7Ci0JCWpidi52YWwuYmluYXJ5LmxlbiA9IFZBUlNJWkUo amIpIC0gVkFSSERSU1o7CisJCWpidi5iaW5hcnkuZGF0YSA9ICZqYi0+cm9vdDsKKwkJamJ2 LmJpbmFyeS5sZW4gPSBWQVJTSVpFKGpiKSAtIFZBUkhEUlNaOwogCX0KIAogCWlzbnVsbCA9 IGZhbHNlOwotCXJldHR1cGxlID0gcG9wdWxhdGVfY29tcG9zaXRlKCZjYWNoZS0+Yy5pby5j b21wb3NpdGUsIGNhY2hlLT5hcmd0eXBlLAorCXJldHR1cGxlID0gcG9wdWxhdGVfY29tcG9z aXRlKCZjYWNoZS0+Yy5jb21wb3NpdGUsIGNhY2hlLT5hcmd0eXBlLAogCQkJCQkJCQkgIE5V TEwsIGZubWN4dCwgcmVjLCAmanN2LCAmaXNudWxsLAogCQkJCQkJCQkgIGVzY29udGV4dCk7 CiAJQXNzZXJ0KCFpc251bGwgfHwgU09GVF9FUlJPUl9PQ0NVUlJFRChlc2NvbnRleHQpKTsK QEAgLTQwMDYsMTEgKzQwMDYsMTEgQEAgcG9wdWxhdGVfcmVjb3Jkc2V0X3JlY29yZChQb3B1 bGF0ZVJlY29yZHNldFN0YXRlICpzdGF0ZSwgSnNPYmplY3QgKm9iaikKIAlIZWFwVHVwbGVE YXRhIHR1cGxlOwogCiAJLyogYWNxdWlyZS91cGRhdGUgY2FjaGVkIHR1cGxlIGRlc2NyaXB0 b3IgKi8KLQl1cGRhdGVfY2FjaGVkX3R1cGRlc2MoJmNhY2hlLT5jLmlvLmNvbXBvc2l0ZSwg Y2FjaGUtPmZuX21jeHQpOworCXVwZGF0ZV9jYWNoZWRfdHVwZGVzYygmY2FjaGUtPmMuY29t cG9zaXRlLCBjYWNoZS0+Zm5fbWN4dCk7CiAKIAkvKiByZXBsYWNlIHJlY29yZCBmaWVsZHMg ZnJvbSBqc29uICovCi0JdHVwaGVhZCA9IHBvcHVsYXRlX3JlY29yZChjYWNoZS0+Yy5pby5j b21wb3NpdGUudHVwZGVzYywKLQkJCQkJCQkgICZjYWNoZS0+Yy5pby5jb21wb3NpdGUucmVj b3JkX2lvLAorCXR1cGhlYWQgPSBwb3B1bGF0ZV9yZWNvcmQoY2FjaGUtPmMuY29tcG9zaXRl LnR1cGRlc2MsCisJCQkJCQkJICAmY2FjaGUtPmMuY29tcG9zaXRlLnJlY29yZF9pbywKIAkJ CQkJCQkgIHN0YXRlLT5yZWMsCiAJCQkJCQkJICBjYWNoZS0+Zm5fbWN4dCwKIAkJCQkJCQkg IG9iaiwKQEAgLTQwMjAsNyArNDAyMCw3IEBAIHBvcHVsYXRlX3JlY29yZHNldF9yZWNvcmQo UG9wdWxhdGVSZWNvcmRzZXRTdGF0ZSAqc3RhdGUsIEpzT2JqZWN0ICpvYmopCiAJaWYgKGNh Y2hlLT5jLnR5cGNhdCA9PSBUWVBFQ0FUX0NPTVBPU0lURV9ET01BSU4pCiAJCSh2b2lkKSBk b21haW5fY2hlY2tfc2FmZShIZWFwVHVwbGVIZWFkZXJHZXREYXR1bSh0dXBoZWFkKSwgZmFs c2UsCiAJCQkJCQkJCSBjYWNoZS0+YXJndHlwZSwKLQkJCQkJCQkJICZjYWNoZS0+Yy5pby5j b21wb3NpdGUuZG9tYWluX2luZm8sCisJCQkJCQkJCSAmY2FjaGUtPmMuY29tcG9zaXRlLmRv bWFpbl9pbmZvLAogCQkJCQkJCQkgY2FjaGUtPmZuX21jeHQsCiAJCQkJCQkJCSBOVUxMKTsK IApAQCAtNDA5Miw4ICs0MDkyLDggQEAgcG9wdWxhdGVfcmVjb3Jkc2V0X3dvcmtlcihGdW5j dGlvbkNhbGxJbmZvIGZjaW5mbywgY29uc3QgY2hhciAqZnVuY25hbWUsCiAJCSAqLwogCQlp ZiAoY2FjaGUtPmFyZ3R5cGUgPT0gUkVDT1JET0lEKQogCQl7Ci0JCQljYWNoZS0+Yy5pby5j b21wb3NpdGUuYmFzZV90eXBpZCA9IEhlYXBUdXBsZUhlYWRlckdldFR5cGVJZChyZWMpOwot CQkJY2FjaGUtPmMuaW8uY29tcG9zaXRlLmJhc2VfdHlwbW9kID0gSGVhcFR1cGxlSGVhZGVy R2V0VHlwTW9kKHJlYyk7CisJCQljYWNoZS0+Yy5jb21wb3NpdGUuYmFzZV90eXBpZCA9IEhl YXBUdXBsZUhlYWRlckdldFR5cGVJZChyZWMpOworCQkJY2FjaGUtPmMuY29tcG9zaXRlLmJh c2VfdHlwbW9kID0gSGVhcFR1cGxlSGVhZGVyR2V0VHlwTW9kKHJlYyk7CiAJCX0KIAl9CiAJ ZWxzZQpAQCAtNDEyMCw3ICs0MTIwLDcgQEAgcG9wdWxhdGVfcmVjb3Jkc2V0X3dvcmtlcihG dW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgY29uc3QgY2hhciAqZnVuY25hbWUsCiAJICogRm9y Y2libHkgdXBkYXRlIHRoZSBjYWNoZWQgdHVwZGVzYywgdG8gZW5zdXJlIHdlIGhhdmUgdGhl IHJpZ2h0IHR1cGRlc2MKIAkgKiB0byByZXR1cm4gZXZlbiBpZiB0aGUgSlNPTiBjb250YWlu cyBubyByb3dzLgogCSAqLwotCXVwZGF0ZV9jYWNoZWRfdHVwZGVzYygmY2FjaGUtPmMuaW8u Y29tcG9zaXRlLCBjYWNoZS0+Zm5fbWN4dCk7CisJdXBkYXRlX2NhY2hlZF90dXBkZXNjKCZj YWNoZS0+Yy5jb21wb3NpdGUsIGNhY2hlLT5mbl9tY3h0KTsKIAogCXN0YXRlID0gcGFsbG9j MChzaXplb2YoUG9wdWxhdGVSZWNvcmRzZXRTdGF0ZSkpOwogCkBAIC00MTg2LDE0ICs0MTg2 LDE0IEBAIHBvcHVsYXRlX3JlY29yZHNldF93b3JrZXIoRnVuY3Rpb25DYWxsSW5mbyBmY2lu Zm8sIGNvbnN0IGNoYXIgKmZ1bmNuYW1lLAogCQkJCUpzT2JqZWN0CW9iajsKIAogCQkJCWlm ICh2LnR5cGUgIT0gamJ2QmluYXJ5IHx8Ci0JCQkJCSFKc29uQ29udGFpbmVySXNPYmplY3Qo di52YWwuYmluYXJ5LmRhdGEpKQorCQkJCQkhSnNvbkNvbnRhaW5lcklzT2JqZWN0KHYuYmlu YXJ5LmRhdGEpKQogCQkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJCShlcnJjb2RlKEVSUkNP REVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAogCQkJCQkJCSBlcnJtc2coImFyZ3VtZW50 IG9mICVzIG11c3QgYmUgYW4gYXJyYXkgb2Ygb2JqZWN0cyIsCiAJCQkJCQkJCQlmdW5jbmFt ZSkpKTsKIAogCQkJCW9iai5pc19qc29uID0gZmFsc2U7Ci0JCQkJb2JqLnZhbC5qc29uYl9j b250ID0gdi52YWwuYmluYXJ5LmRhdGE7CisJCQkJb2JqLmpzb25iX2NvbnQgPSB2LmJpbmFy eS5kYXRhOwogCiAJCQkJcG9wdWxhdGVfcmVjb3Jkc2V0X3JlY29yZChzdGF0ZSwgJm9iaik7 CiAJCQl9CkBAIC00MjA2LDcgKzQyMDYsNyBAQCBwb3B1bGF0ZV9yZWNvcmRzZXRfd29ya2Vy KEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBjb25zdCBjaGFyICpmdW5jbmFtZSwKIAkgKiB3 ZSdyZSBjYWxsZWQgYWdhaW4gaW4gdGhlIHNhbWUgcXVlcnkuCiAJICovCiAJcnNpLT5zZXRS ZXN1bHQgPSBzdGF0ZS0+dHVwbGVfc3RvcmU7Ci0JcnNpLT5zZXREZXNjID0gQ3JlYXRlVHVw bGVEZXNjQ29weShjYWNoZS0+Yy5pby5jb21wb3NpdGUudHVwZGVzYyk7CisJcnNpLT5zZXRE ZXNjID0gQ3JlYXRlVHVwbGVEZXNjQ29weShjYWNoZS0+Yy5jb21wb3NpdGUudHVwZGVzYyk7 CiAKIAlQR19SRVRVUk5fTlVMTCgpOwogfQpAQCAtNDI1Miw3ICs0MjUyLDcgQEAgcG9wdWxh dGVfcmVjb3Jkc2V0X29iamVjdF9lbmQodm9pZCAqc3RhdGUpCiAJCXJldHVybiBKU09OX1NV Q0NFU1M7CiAKIAlvYmouaXNfanNvbiA9IHRydWU7Ci0Jb2JqLnZhbC5qc29uX2hhc2ggPSBf c3RhdGUtPmpzb25faGFzaDsKKwlvYmouanNvbl9oYXNoID0gX3N0YXRlLT5qc29uX2hhc2g7 CiAKIAkvKiBPdGhlcndpc2UsIGNvbnN0cnVjdCBhbmQgcmV0dXJuIGEgdHVwbGUgYmFzZWQg b24gdGhpcyBsZXZlbC0xIG9iamVjdCAqLwogCXBvcHVsYXRlX3JlY29yZHNldF9yZWNvcmQo X3N0YXRlLCAmb2JqKTsKQEAgLTQ2ODksOCArNDY4OSw4IEBAIGpzb25iX2RlbGV0ZShQR19G VU5DVElPTl9BUkdTKQogCQlza2lwTmVzdGVkID0gdHJ1ZTsKIAogCQlpZiAoKHIgPT0gV0pC X0VMRU0gfHwgciA9PSBXSkJfS0VZKSAmJgotCQkJKHYudHlwZSA9PSBqYnZTdHJpbmcgJiYg a2V5bGVuID09IHYudmFsLnN0cmluZy5sZW4gJiYKLQkJCSBtZW1jbXAoa2V5cHRyLCB2LnZh bC5zdHJpbmcudmFsLCBrZXlsZW4pID09IDApKQorCQkJKHYudHlwZSA9PSBqYnZTdHJpbmcg JiYga2V5bGVuID09IHYuc3RyaW5nLmxlbiAmJgorCQkJIG1lbWNtcChrZXlwdHIsIHYuc3Ry aW5nLnZhbCwga2V5bGVuKSA9PSAwKSkKIAkJewogCQkJLyogc2tpcCBjb3JyZXNwb25kaW5n IHZhbHVlIGFzIHdlbGwgKi8KIAkJCWlmIChyID09IFdKQl9LRVkpCkBAIC00NzY4LDggKzQ3 NjgsOCBAQCBqc29uYl9kZWxldGVfYXJyYXkoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQkvKiBX ZSByZWx5IG9uIHRoZSBhcnJheSBlbGVtZW50cyBub3QgYmVpbmcgdG9hc3RlZCAqLwogCQkJ CWtleXB0ciA9IFZBUkRBVEFfQU5ZKERhdHVtR2V0UG9pbnRlcihrZXlzX2VsZW1zW2ldKSk7 CiAJCQkJa2V5bGVuID0gVkFSU0laRV9BTllfRVhIRFIoRGF0dW1HZXRQb2ludGVyKGtleXNf ZWxlbXNbaV0pKTsKLQkJCQlpZiAoa2V5bGVuID09IHYudmFsLnN0cmluZy5sZW4gJiYKLQkJ CQkJbWVtY21wKGtleXB0ciwgdi52YWwuc3RyaW5nLnZhbCwga2V5bGVuKSA9PSAwKQorCQkJ CWlmIChrZXlsZW4gPT0gdi5zdHJpbmcubGVuICYmCisJCQkJCW1lbWNtcChrZXlwdHIsIHYu c3RyaW5nLnZhbCwga2V5bGVuKSA9PSAwKQogCQkJCXsKIAkJCQkJZm91bmQgPSB0cnVlOwog CQkJCQlicmVhazsKQEAgLTQ4MzAsNyArNDgzMCw3IEBAIGpzb25iX2RlbGV0ZV9pZHgoUEdf RlVOQ1RJT05fQVJHUykKIAogCXIgPSBKc29uYkl0ZXJhdG9yTmV4dCgmaXQsICZ2LCBmYWxz ZSk7CiAJQXNzZXJ0KHIgPT0gV0pCX0JFR0lOX0FSUkFZKTsKLQluID0gdi52YWwuYXJyYXku bkVsZW1zOworCW4gPSB2LmFycmF5Lm5FbGVtczsKIAogCWlmIChpZHggPCAwKQogCXsKQEAg LTUyMzAsNyArNTIzMCw3IEBAIHNldFBhdGgoSnNvbmJJdGVyYXRvciAqKml0LCBEYXR1bSAq cGF0aF9lbGVtcywKIAkJCSAqIGFuIG9iamVjdCBvciBhbiBhcnJheSwgbm90IHJhdyBzY2Fs YXIuCiAJCQkgKi8KIAkJCWlmICgob3BfdHlwZSAmIEpCX1BBVEhfRklMTF9HQVBTKSAmJiAo bGV2ZWwgPD0gcGF0aF9sZW4gLSAxKSAmJgotCQkJCXYudmFsLmFycmF5LnJhd1NjYWxhcikK KwkJCQl2LmFycmF5LnJhd1NjYWxhcikKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCiAJCQkJCQkgZXJybXNn KCJjYW5ub3QgcmVwbGFjZSBleGlzdGluZyBrZXkiKSwKQEAgLTUyMzksNyArNTIzOSw3IEBA IHNldFBhdGgoSnNvbmJJdGVyYXRvciAqKml0LCBEYXR1bSAqcGF0aF9lbGVtcywKIAogCQkJ KHZvaWQpIHB1c2hKc29uYlZhbHVlKHN0LCByLCBOVUxMKTsKIAkJCXNldFBhdGhBcnJheShp dCwgcGF0aF9lbGVtcywgcGF0aF9udWxscywgcGF0aF9sZW4sIHN0LCBsZXZlbCwKLQkJCQkJ CSBuZXd2YWwsIHYudmFsLmFycmF5Lm5FbGVtcywgb3BfdHlwZSk7CisJCQkJCQkgbmV3dmFs LCB2LmFycmF5Lm5FbGVtcywgb3BfdHlwZSk7CiAJCQlyID0gSnNvbmJJdGVyYXRvck5leHQo aXQsICZ2LCBmYWxzZSk7CiAJCQlBc3NlcnQociA9PSBXSkJfRU5EX0FSUkFZKTsKIAkJCXJl cyA9IHB1c2hKc29uYlZhbHVlKHN0LCByLCBOVUxMKTsKQEAgLTUyNDcsNyArNTI0Nyw3IEBA IHNldFBhdGgoSnNvbmJJdGVyYXRvciAqKml0LCBEYXR1bSAqcGF0aF9lbGVtcywKIAkJY2Fz ZSBXSkJfQkVHSU5fT0JKRUNUOgogCQkJKHZvaWQpIHB1c2hKc29uYlZhbHVlKHN0LCByLCBO VUxMKTsKIAkJCXNldFBhdGhPYmplY3QoaXQsIHBhdGhfZWxlbXMsIHBhdGhfbnVsbHMsIHBh dGhfbGVuLCBzdCwgbGV2ZWwsCi0JCQkJCQkgIG5ld3ZhbCwgdi52YWwub2JqZWN0Lm5QYWly cywgb3BfdHlwZSk7CisJCQkJCQkgIG5ld3ZhbCwgdi5vYmplY3QublBhaXJzLCBvcF90eXBl KTsKIAkJCXIgPSBKc29uYkl0ZXJhdG9yTmV4dChpdCwgJnYsIHRydWUpOwogCQkJQXNzZXJ0 KHIgPT0gV0pCX0VORF9PQkpFQ1QpOwogCQkJcmVzID0gcHVzaEpzb25iVmFsdWUoc3QsIHIs IE5VTEwpOwpAQCAtNTMwOCw4ICs1MzA4LDggQEAgc2V0UGF0aE9iamVjdChKc29uYkl0ZXJh dG9yICoqaXQsIERhdHVtICpwYXRoX2VsZW1zLCBib29sICpwYXRoX251bGxzLAogCQlKc29u YlZhbHVlCW5ld2tleTsKIAogCQluZXdrZXkudHlwZSA9IGpidlN0cmluZzsKLQkJbmV3a2V5 LnZhbC5zdHJpbmcudmFsID0gVkFSREFUQV9BTlkocGF0aGVsZW0pOwotCQluZXdrZXkudmFs LnN0cmluZy5sZW4gPSBWQVJTSVpFX0FOWV9FWEhEUihwYXRoZWxlbSk7CisJCW5ld2tleS5z dHJpbmcudmFsID0gVkFSREFUQV9BTlkocGF0aGVsZW0pOworCQluZXdrZXkuc3RyaW5nLmxl biA9IFZBUlNJWkVfQU5ZX0VYSERSKHBhdGhlbGVtKTsKIAogCQkodm9pZCkgcHVzaEpzb25i VmFsdWUoc3QsIFdKQl9LRVksICZuZXdrZXkpOwogCQkodm9pZCkgcHVzaEpzb25iVmFsdWUo c3QsIFdKQl9WQUxVRSwgbmV3dmFsKTsKQEAgLTUzMjIsOSArNTMyMiw5IEBAIHNldFBhdGhP YmplY3QoSnNvbmJJdGVyYXRvciAqKml0LCBEYXR1bSAqcGF0aF9lbGVtcywgYm9vbCAqcGF0 aF9udWxscywKIAkJQXNzZXJ0KHIgPT0gV0pCX0tFWSk7CiAKIAkJaWYgKCFkb25lICYmCi0J CQlrLnZhbC5zdHJpbmcubGVuID09IFZBUlNJWkVfQU5ZX0VYSERSKHBhdGhlbGVtKSAmJgot CQkJbWVtY21wKGsudmFsLnN0cmluZy52YWwsIFZBUkRBVEFfQU5ZKHBhdGhlbGVtKSwKLQkJ CQkgICBrLnZhbC5zdHJpbmcubGVuKSA9PSAwKQorCQkJay5zdHJpbmcubGVuID09IFZBUlNJ WkVfQU5ZX0VYSERSKHBhdGhlbGVtKSAmJgorCQkJbWVtY21wKGsuc3RyaW5nLnZhbCwgVkFS REFUQV9BTlkocGF0aGVsZW0pLAorCQkJCSAgIGsuc3RyaW5nLmxlbikgPT0gMCkKIAkJewog CQkJZG9uZSA9IHRydWU7CiAKQEAgLTUzNjMsOCArNTM2Myw4IEBAIHNldFBhdGhPYmplY3Qo SnNvbmJJdGVyYXRvciAqKml0LCBEYXR1bSAqcGF0aF9lbGVtcywgYm9vbCAqcGF0aF9udWxs cywKIAkJCQlKc29uYlZhbHVlCW5ld2tleTsKIAogCQkJCW5ld2tleS50eXBlID0gamJ2U3Ry aW5nOwotCQkJCW5ld2tleS52YWwuc3RyaW5nLnZhbCA9IFZBUkRBVEFfQU5ZKHBhdGhlbGVt KTsKLQkJCQluZXdrZXkudmFsLnN0cmluZy5sZW4gPSBWQVJTSVpFX0FOWV9FWEhEUihwYXRo ZWxlbSk7CisJCQkJbmV3a2V5LnN0cmluZy52YWwgPSBWQVJEQVRBX0FOWShwYXRoZWxlbSk7 CisJCQkJbmV3a2V5LnN0cmluZy5sZW4gPSBWQVJTSVpFX0FOWV9FWEhEUihwYXRoZWxlbSk7 CiAKIAkJCQkodm9pZCkgcHVzaEpzb25iVmFsdWUoc3QsIFdKQl9LRVksICZuZXdrZXkpOwog CQkJCSh2b2lkKSBwdXNoSnNvbmJWYWx1ZShzdCwgV0pCX1ZBTFVFLCBuZXd2YWwpOwpAQCAt NTQwNyw4ICs1NDA3LDggQEAgc2V0UGF0aE9iamVjdChKc29uYkl0ZXJhdG9yICoqaXQsIERh dHVtICpwYXRoX2VsZW1zLCBib29sICpwYXRoX251bGxzLAogCQlKc29uYlZhbHVlCW5ld2tl eTsKIAogCQluZXdrZXkudHlwZSA9IGpidlN0cmluZzsKLQkJbmV3a2V5LnZhbC5zdHJpbmcu dmFsID0gVkFSREFUQV9BTlkocGF0aGVsZW0pOwotCQluZXdrZXkudmFsLnN0cmluZy5sZW4g PSBWQVJTSVpFX0FOWV9FWEhEUihwYXRoZWxlbSk7CisJCW5ld2tleS5zdHJpbmcudmFsID0g VkFSREFUQV9BTlkocGF0aGVsZW0pOworCQluZXdrZXkuc3RyaW5nLmxlbiA9IFZBUlNJWkVf QU5ZX0VYSERSKHBhdGhlbGVtKTsKIAogCQkodm9pZCkgcHVzaEpzb25iVmFsdWUoc3QsIFdK Ql9LRVksICZuZXdrZXkpOwogCQkodm9pZCkgcHVzaF9wYXRoKHN0LCBsZXZlbCwgcGF0aF9l bGVtcywgcGF0aF9udWxscywKQEAgLTU2MjEsMjYgKzU2MjEsMjYgQEAgcGFyc2VfanNvbmJf aW5kZXhfZmxhZ3MoSnNvbmIgKmpiKQogCQkJCQkgZXJybXNnKCJmbGFnIGFycmF5IGVsZW1l bnQgaXMgbm90IGEgc3RyaW5nIiksCiAJCQkJCSBlcnJoaW50KCJQb3NzaWJsZSB2YWx1ZXMg YXJlOiBcInN0cmluZ1wiLCBcIm51bWVyaWNcIiwgXCJib29sZWFuXCIsIFwia2V5XCIsIGFu ZCBcImFsbFwiLiIpKSk7CiAKLQkJaWYgKHYudmFsLnN0cmluZy5sZW4gPT0gMyAmJgotCQkJ cGdfc3RybmNhc2VjbXAodi52YWwuc3RyaW5nLnZhbCwgImFsbCIsIDMpID09IDApCisJCWlm ICh2LnN0cmluZy5sZW4gPT0gMyAmJgorCQkJcGdfc3RybmNhc2VjbXAodi5zdHJpbmcudmFs LCAiYWxsIiwgMykgPT0gMCkKIAkJCWZsYWdzIHw9IGp0aUFsbDsKLQkJZWxzZSBpZiAodi52 YWwuc3RyaW5nLmxlbiA9PSAzICYmCi0JCQkJIHBnX3N0cm5jYXNlY21wKHYudmFsLnN0cmlu Zy52YWwsICJrZXkiLCAzKSA9PSAwKQorCQllbHNlIGlmICh2LnN0cmluZy5sZW4gPT0gMyAm JgorCQkJCSBwZ19zdHJuY2FzZWNtcCh2LnN0cmluZy52YWwsICJrZXkiLCAzKSA9PSAwKQog CQkJZmxhZ3MgfD0ganRpS2V5OwotCQllbHNlIGlmICh2LnZhbC5zdHJpbmcubGVuID09IDYg JiYKLQkJCQkgcGdfc3RybmNhc2VjbXAodi52YWwuc3RyaW5nLnZhbCwgInN0cmluZyIsIDYp ID09IDApCisJCWVsc2UgaWYgKHYuc3RyaW5nLmxlbiA9PSA2ICYmCisJCQkJIHBnX3N0cm5j YXNlY21wKHYuc3RyaW5nLnZhbCwgInN0cmluZyIsIDYpID09IDApCiAJCQlmbGFncyB8PSBq dGlTdHJpbmc7Ci0JCWVsc2UgaWYgKHYudmFsLnN0cmluZy5sZW4gPT0gNyAmJgotCQkJCSBw Z19zdHJuY2FzZWNtcCh2LnZhbC5zdHJpbmcudmFsLCAibnVtZXJpYyIsIDcpID09IDApCisJ CWVsc2UgaWYgKHYuc3RyaW5nLmxlbiA9PSA3ICYmCisJCQkJIHBnX3N0cm5jYXNlY21wKHYu c3RyaW5nLnZhbCwgIm51bWVyaWMiLCA3KSA9PSAwKQogCQkJZmxhZ3MgfD0ganRpTnVtZXJp YzsKLQkJZWxzZSBpZiAodi52YWwuc3RyaW5nLmxlbiA9PSA3ICYmCi0JCQkJIHBnX3N0cm5j YXNlY21wKHYudmFsLnN0cmluZy52YWwsICJib29sZWFuIiwgNykgPT0gMCkKKwkJZWxzZSBp ZiAodi5zdHJpbmcubGVuID09IDcgJiYKKwkJCQkgcGdfc3RybmNhc2VjbXAodi5zdHJpbmcu dmFsLCAiYm9vbGVhbiIsIDcpID09IDApCiAJCQlmbGFncyB8PSBqdGlCb29sOwogCQllbHNl CiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFS QU1FVEVSX1ZBTFVFKSwKIAkJCQkJIGVycm1zZygid3JvbmcgZmxhZyBpbiBmbGFnIGFycmF5 OiBcIiVzXCIiLAotCQkJCQkJCXBuc3RyZHVwKHYudmFsLnN0cmluZy52YWwsIHYudmFsLnN0 cmluZy5sZW4pKSwKKwkJCQkJCQlwbnN0cmR1cCh2LnN0cmluZy52YWwsIHYuc3RyaW5nLmxl bikpLAogCQkJCQkgZXJyaGludCgiUG9zc2libGUgdmFsdWVzIGFyZTogXCJzdHJpbmdcIiwg XCJudW1lcmljXCIsIFwiYm9vbGVhblwiLCBcImtleVwiLCBhbmQgXCJhbGxcIi4iKSkpOwog CX0KIApAQCAtNTY3OSw3ICs1Njc5LDcgQEAgaXRlcmF0ZV9qc29uYl92YWx1ZXMoSnNvbmIg KmpiLCB1aW50MzIgZmxhZ3MsIHZvaWQgKnN0YXRlLAogCQlpZiAodHlwZSA9PSBXSkJfS0VZ KQogCQl7CiAJCQlpZiAoZmxhZ3MgJiBqdGlLZXkpCi0JCQkJYWN0aW9uKHN0YXRlLCB2LnZh bC5zdHJpbmcudmFsLCB2LnZhbC5zdHJpbmcubGVuKTsKKwkJCQlhY3Rpb24oc3RhdGUsIHYu c3RyaW5nLnZhbCwgdi5zdHJpbmcubGVuKTsKIAogCQkJY29udGludWU7CiAJCX0KQEAgLTU2 OTQsNyArNTY5NCw3IEBAIGl0ZXJhdGVfanNvbmJfdmFsdWVzKEpzb25iICpqYiwgdWludDMy IGZsYWdzLCB2b2lkICpzdGF0ZSwKIAkJewogCQkJY2FzZSBqYnZTdHJpbmc6CiAJCQkJaWYg KGZsYWdzICYganRpU3RyaW5nKQotCQkJCQlhY3Rpb24oc3RhdGUsIHYudmFsLnN0cmluZy52 YWwsIHYudmFsLnN0cmluZy5sZW4pOworCQkJCQlhY3Rpb24oc3RhdGUsIHYuc3RyaW5nLnZh bCwgdi5zdHJpbmcubGVuKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgamJ2TnVtZXJpYzoKIAkJ CQlpZiAoZmxhZ3MgJiBqdGlOdW1lcmljKQpAQCAtNTcwMiw3ICs1NzAyLDcgQEAgaXRlcmF0 ZV9qc29uYl92YWx1ZXMoSnNvbmIgKmpiLCB1aW50MzIgZmxhZ3MsIHZvaWQgKnN0YXRlLAog CQkJCQljaGFyCSAgICp2YWw7CiAKIAkJCQkJdmFsID0gRGF0dW1HZXRDU3RyaW5nKERpcmVj dEZ1bmN0aW9uQ2FsbDEobnVtZXJpY19vdXQsCi0JCQkJCQkJCQkJCQkJCQkgIE51bWVyaWNH ZXREYXR1bSh2LnZhbC5udW1lcmljKSkpOworCQkJCQkJCQkJCQkJCQkJICBOdW1lcmljR2V0 RGF0dW0odi5udW1lcmljKSkpOwogCiAJCQkJCWFjdGlvbihzdGF0ZSwgdmFsLCBzdHJsZW4o dmFsKSk7CiAJCQkJCXBmcmVlKHZhbCk7CkBAIC01NzExLDcgKzU3MTEsNyBAQCBpdGVyYXRl X2pzb25iX3ZhbHVlcyhKc29uYiAqamIsIHVpbnQzMiBmbGFncywgdm9pZCAqc3RhdGUsCiAJ CQljYXNlIGpidkJvb2w6CiAJCQkJaWYgKGZsYWdzICYganRpQm9vbCkKIAkJCQl7Ci0JCQkJ CWlmICh2LnZhbC5ib29sZWFuKQorCQkJCQlpZiAodi5ib29sZWFuKQogCQkJCQkJYWN0aW9u KHN0YXRlLCAidHJ1ZSIsIDQpOwogCQkJCQllbHNlCiAJCQkJCQlhY3Rpb24oc3RhdGUsICJm YWxzZSIsIDUpOwpAQCAtNTgyMSwxMSArNTgyMSwxMSBAQCB0cmFuc2Zvcm1fanNvbmJfc3Ry aW5nX3ZhbHVlcyhKc29uYiAqanNvbmIsIHZvaWQgKmFjdGlvbl9zdGF0ZSwKIAl7CiAJCWlm ICgodHlwZSA9PSBXSkJfVkFMVUUgfHwgdHlwZSA9PSBXSkJfRUxFTSkgJiYgdi50eXBlID09 IGpidlN0cmluZykKIAkJewotCQkJb3V0ID0gdHJhbnNmb3JtX2FjdGlvbihhY3Rpb25fc3Rh dGUsIHYudmFsLnN0cmluZy52YWwsIHYudmFsLnN0cmluZy5sZW4pOworCQkJb3V0ID0gdHJh bnNmb3JtX2FjdGlvbihhY3Rpb25fc3RhdGUsIHYuc3RyaW5nLnZhbCwgdi5zdHJpbmcubGVu KTsKIAkJCS8qIG91dCBpcyBwcm9iYWJseSBub3QgdG9hc3RlZCwgYnV0IGxldCdzIGJlIHN1 cmUgKi8KIAkJCW91dCA9IHBnX2RldG9hc3RfZGF0dW1fcGFja2VkKG91dCk7Ci0JCQl2LnZh bC5zdHJpbmcudmFsID0gVkFSREFUQV9BTlkob3V0KTsKLQkJCXYudmFsLnN0cmluZy5sZW4g PSBWQVJTSVpFX0FOWV9FWEhEUihvdXQpOworCQkJdi5zdHJpbmcudmFsID0gVkFSREFUQV9B Tlkob3V0KTsKKwkJCXYuc3RyaW5nLmxlbiA9IFZBUlNJWkVfQU5ZX0VYSERSKG91dCk7CiAJ CQlyZXMgPSBwdXNoSnNvbmJWYWx1ZSgmc3QsIHR5cGUsIHR5cGUgPCBXSkJfQkVHSU5fQVJS QVkgPyAmdiA6IE5VTEwpOwogCQl9CiAJCWVsc2UKQEAgLTU4MzcsNyArNTgzNyw3IEBAIHRy YW5zZm9ybV9qc29uYl9zdHJpbmdfdmFsdWVzKEpzb25iICpqc29uYiwgdm9pZCAqYWN0aW9u X3N0YXRlLAogCX0KIAogCWlmIChyZXMtPnR5cGUgPT0gamJ2QXJyYXkpCi0JCXJlcy0+dmFs LmFycmF5LnJhd1NjYWxhciA9IGlzX3NjYWxhcjsKKwkJcmVzLT5hcnJheS5yYXdTY2FsYXIg PSBpc19zY2FsYXI7CiAKIAlyZXR1cm4gSnNvbmJWYWx1ZVRvSnNvbmIocmVzKTsKIH0KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aC5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2pzb25wYXRoLmMKaW5kZXggNzYyZjdlOGEwOWQuLjY1MTcyNDA1YjZh IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGguYworKysgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGguYwpAQCAtMjY5LDE5ICsyNjksMTkgQEAg ZmxhdHRlbkpzb25QYXRoUGFyc2VJdGVtKFN0cmluZ0luZm8gYnVmLCBpbnQgKnJlc3VsdCwg c3RydWN0IE5vZGUgKmVzY29udGV4dCwKIAkJY2FzZSBqcGlTdHJpbmc6CiAJCWNhc2UganBp VmFyaWFibGU6CiAJCWNhc2UganBpS2V5OgotCQkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbyhi dWYsICZpdGVtLT52YWx1ZS5zdHJpbmcubGVuLAotCQkJCQkJCQkgICBzaXplb2YoaXRlbS0+ dmFsdWUuc3RyaW5nLmxlbikpOwotCQkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbyhidWYsIGl0 ZW0tPnZhbHVlLnN0cmluZy52YWwsCi0JCQkJCQkJCSAgIGl0ZW0tPnZhbHVlLnN0cmluZy5s ZW4pOworCQkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbyhidWYsICZpdGVtLT5zdHJpbmcubGVu LAorCQkJCQkJCQkgICBzaXplb2YoaXRlbS0+c3RyaW5nLmxlbikpOworCQkJYXBwZW5kQmlu YXJ5U3RyaW5nSW5mbyhidWYsIGl0ZW0tPnN0cmluZy52YWwsCisJCQkJCQkJCSAgIGl0ZW0t PnN0cmluZy5sZW4pOwogCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnXDAnKTsKIAkJ CWJyZWFrOwogCQljYXNlIGpwaU51bWVyaWM6Ci0JCQlhcHBlbmRCaW5hcnlTdHJpbmdJbmZv KGJ1ZiwgaXRlbS0+dmFsdWUubnVtZXJpYywKLQkJCQkJCQkJICAgVkFSU0laRShpdGVtLT52 YWx1ZS5udW1lcmljKSk7CisJCQlhcHBlbmRCaW5hcnlTdHJpbmdJbmZvKGJ1ZiwgaXRlbS0+ bnVtZXJpYywKKwkJCQkJCQkJICAgVkFSU0laRShpdGVtLT5udW1lcmljKSk7CiAJCQlicmVh azsKIAkJY2FzZSBqcGlCb29sOgotCQkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbyhidWYsICZp dGVtLT52YWx1ZS5ib29sZWFuLAotCQkJCQkJCQkgICBzaXplb2YoaXRlbS0+dmFsdWUuYm9v bGVhbikpOworCQkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbyhidWYsICZpdGVtLT5ib29sZWFu LAorCQkJCQkJCQkgICBzaXplb2YoaXRlbS0+Ym9vbGVhbikpOwogCQkJYnJlYWs7CiAJCWNh c2UganBpQW5kOgogCQljYXNlIGpwaU9yOgpAQCAtMzA3LDE5ICszMDcsMTkgQEAgZmxhdHRl bkpzb25QYXRoUGFyc2VJdGVtKFN0cmluZ0luZm8gYnVmLCBpbnQgKnJlc3VsdCwgc3RydWN0 IE5vZGUgKmVzY29udGV4dCwKIAkJCQlpbnQzMgkJbGVmdCA9IHJlc2VydmVTcGFjZUZvckl0 ZW1Qb2ludGVyKGJ1Zik7CiAJCQkJaW50MzIJCXJpZ2h0ID0gcmVzZXJ2ZVNwYWNlRm9ySXRl bVBvaW50ZXIoYnVmKTsKIAotCQkJCWlmICghaXRlbS0+dmFsdWUuYXJncy5sZWZ0KQorCQkJ CWlmICghaXRlbS0+YXJncy5sZWZ0KQogCQkJCQljaGxkID0gcG9zOwogCQkJCWVsc2UgaWYg KCFmbGF0dGVuSnNvblBhdGhQYXJzZUl0ZW0oYnVmLCAmY2hsZCwgZXNjb250ZXh0LAotCQkJ CQkJCQkJCQkJICAgaXRlbS0+dmFsdWUuYXJncy5sZWZ0LAorCQkJCQkJCQkJCQkJICAgaXRl bS0+YXJncy5sZWZ0LAogCQkJCQkJCQkJCQkJICAgbmVzdGluZ0xldmVsICsgYXJnTmVzdGlu Z0xldmVsLAogCQkJCQkJCQkJCQkJICAgaW5zaWRlQXJyYXlTdWJzY3JpcHQpKQogCQkJCQly ZXR1cm4gZmFsc2U7CiAJCQkJKihpbnQzMiAqKSAoYnVmLT5kYXRhICsgbGVmdCkgPSBjaGxk IC0gcG9zOwogCi0JCQkJaWYgKCFpdGVtLT52YWx1ZS5hcmdzLnJpZ2h0KQorCQkJCWlmICgh aXRlbS0+YXJncy5yaWdodCkKIAkJCQkJY2hsZCA9IHBvczsKIAkJCQllbHNlIGlmICghZmxh dHRlbkpzb25QYXRoUGFyc2VJdGVtKGJ1ZiwgJmNobGQsIGVzY29udGV4dCwKLQkJCQkJCQkJ CQkJCSAgIGl0ZW0tPnZhbHVlLmFyZ3MucmlnaHQsCisJCQkJCQkJCQkJCQkgICBpdGVtLT5h cmdzLnJpZ2h0LAogCQkJCQkJCQkJCQkJICAgbmVzdGluZ0xldmVsICsgYXJnTmVzdGluZ0xl dmVsLAogCQkJCQkJCQkJCQkJICAgaW5zaWRlQXJyYXlTdWJzY3JpcHQpKQogCQkJCQlyZXR1 cm4gZmFsc2U7CkBAIC0zMzEsMTggKzMzMSwxOCBAQCBmbGF0dGVuSnNvblBhdGhQYXJzZUl0 ZW0oU3RyaW5nSW5mbyBidWYsIGludCAqcmVzdWx0LCBzdHJ1Y3QgTm9kZSAqZXNjb250ZXh0 LAogCQkJCWludDMyCQlvZmZzOwogCiAJCQkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbyhidWYs Ci0JCQkJCQkJCQkgICAmaXRlbS0+dmFsdWUubGlrZV9yZWdleC5mbGFncywKLQkJCQkJCQkJ CSAgIHNpemVvZihpdGVtLT52YWx1ZS5saWtlX3JlZ2V4LmZsYWdzKSk7CisJCQkJCQkJCQkg ICAmaXRlbS0+bGlrZV9yZWdleC5mbGFncywKKwkJCQkJCQkJCSAgIHNpemVvZihpdGVtLT5s aWtlX3JlZ2V4LmZsYWdzKSk7CiAJCQkJb2ZmcyA9IHJlc2VydmVTcGFjZUZvckl0ZW1Qb2lu dGVyKGJ1Zik7CiAJCQkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbyhidWYsCi0JCQkJCQkJCQkg ICAmaXRlbS0+dmFsdWUubGlrZV9yZWdleC5wYXR0ZXJubGVuLAotCQkJCQkJCQkJICAgc2l6 ZW9mKGl0ZW0tPnZhbHVlLmxpa2VfcmVnZXgucGF0dGVybmxlbikpOwotCQkJCWFwcGVuZEJp bmFyeVN0cmluZ0luZm8oYnVmLCBpdGVtLT52YWx1ZS5saWtlX3JlZ2V4LnBhdHRlcm4sCi0J CQkJCQkJCQkgICBpdGVtLT52YWx1ZS5saWtlX3JlZ2V4LnBhdHRlcm5sZW4pOworCQkJCQkJ CQkJICAgJml0ZW0tPmxpa2VfcmVnZXgucGF0dGVybmxlbiwKKwkJCQkJCQkJCSAgIHNpemVv ZihpdGVtLT5saWtlX3JlZ2V4LnBhdHRlcm5sZW4pKTsKKwkJCQlhcHBlbmRCaW5hcnlTdHJp bmdJbmZvKGJ1ZiwgaXRlbS0+bGlrZV9yZWdleC5wYXR0ZXJuLAorCQkJCQkJCQkJICAgaXRl bS0+bGlrZV9yZWdleC5wYXR0ZXJubGVuKTsKIAkJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihi dWYsICdcMCcpOwogCiAJCQkJaWYgKCFmbGF0dGVuSnNvblBhdGhQYXJzZUl0ZW0oYnVmLCAm Y2hsZCwgZXNjb250ZXh0LAotCQkJCQkJCQkJCQkgIGl0ZW0tPnZhbHVlLmxpa2VfcmVnZXgu ZXhwciwKKwkJCQkJCQkJCQkJICBpdGVtLT5saWtlX3JlZ2V4LmV4cHIsCiAJCQkJCQkJCQkJ CSAgbmVzdGluZ0xldmVsLAogCQkJCQkJCQkJCQkgIGluc2lkZUFycmF5U3Vic2NyaXB0KSkK IAkJCQkJcmV0dXJuIGZhbHNlOwpAQCAtMzY1LDEwICszNjUsMTAgQEAgZmxhdHRlbkpzb25Q YXRoUGFyc2VJdGVtKFN0cmluZ0luZm8gYnVmLCBpbnQgKnJlc3VsdCwgc3RydWN0IE5vZGUg KmVzY29udGV4dCwKIAkJCXsKIAkJCQlpbnQzMgkJYXJnID0gcmVzZXJ2ZVNwYWNlRm9ySXRl bVBvaW50ZXIoYnVmKTsKIAotCQkJCWlmICghaXRlbS0+dmFsdWUuYXJnKQorCQkJCWlmICgh aXRlbS0+YXJnKQogCQkJCQljaGxkID0gcG9zOwogCQkJCWVsc2UgaWYgKCFmbGF0dGVuSnNv blBhdGhQYXJzZUl0ZW0oYnVmLCAmY2hsZCwgZXNjb250ZXh0LAotCQkJCQkJCQkJCQkJICAg aXRlbS0+dmFsdWUuYXJnLAorCQkJCQkJCQkJCQkJICAgaXRlbS0+YXJnLAogCQkJCQkJCQkJ CQkJICAgbmVzdGluZ0xldmVsICsgYXJnTmVzdGluZ0xldmVsLAogCQkJCQkJCQkJCQkJICAg aW5zaWRlQXJyYXlTdWJzY3JpcHQpKQogCQkJCQlyZXR1cm4gZmFsc2U7CkBAIC0zOTYsNyAr Mzk2LDcgQEAgZmxhdHRlbkpzb25QYXRoUGFyc2VJdGVtKFN0cmluZ0luZm8gYnVmLCBpbnQg KnJlc3VsdCwgc3RydWN0IE5vZGUgKmVzY29udGV4dCwKIAkJCWJyZWFrOwogCQljYXNlIGpw aUluZGV4QXJyYXk6CiAJCQl7Ci0JCQkJaW50MzIJCW5lbGVtcyA9IGl0ZW0tPnZhbHVlLmFy cmF5Lm5lbGVtczsKKwkJCQlpbnQzMgkJbmVsZW1zID0gaXRlbS0+YXJyYXkubmVsZW1zOwog CQkJCWludAkJCW9mZnNldDsKIAkJCQlpbnQJCQlpOwogCkBAIC00MTMsMTUgKzQxMywxNSBA QCBmbGF0dGVuSnNvblBhdGhQYXJzZUl0ZW0oU3RyaW5nSW5mbyBidWYsIGludCAqcmVzdWx0 LCBzdHJ1Y3QgTm9kZSAqZXNjb250ZXh0LAogCQkJCQlpbnQzMgkJZnJvbXBvczsKIAogCQkJ CQlpZiAoIWZsYXR0ZW5Kc29uUGF0aFBhcnNlSXRlbShidWYsICZmcm9tcG9zLCBlc2NvbnRl eHQsCi0JCQkJCQkJCQkJCQkgIGl0ZW0tPnZhbHVlLmFycmF5LmVsZW1zW2ldLmZyb20sCisJ CQkJCQkJCQkJCQkgIGl0ZW0tPmFycmF5LmVsZW1zW2ldLmZyb20sCiAJCQkJCQkJCQkJCQkg IG5lc3RpbmdMZXZlbCwgdHJ1ZSkpCiAJCQkJCQlyZXR1cm4gZmFsc2U7CiAJCQkJCWZyb21w b3MgLT0gcG9zOwogCi0JCQkJCWlmIChpdGVtLT52YWx1ZS5hcnJheS5lbGVtc1tpXS50bykK KwkJCQkJaWYgKGl0ZW0tPmFycmF5LmVsZW1zW2ldLnRvKQogCQkJCQl7CiAJCQkJCQlpZiAo IWZsYXR0ZW5Kc29uUGF0aFBhcnNlSXRlbShidWYsICZ0b3BvcywgZXNjb250ZXh0LAotCQkJ CQkJCQkJCQkJCSAgaXRlbS0+dmFsdWUuYXJyYXkuZWxlbXNbaV0udG8sCisJCQkJCQkJCQkJ CQkJICBpdGVtLT5hcnJheS5lbGVtc1tpXS50bywKIAkJCQkJCQkJCQkJCQkgIG5lc3RpbmdM ZXZlbCwgdHJ1ZSkpCiAJCQkJCQkJcmV0dXJuIGZhbHNlOwogCQkJCQkJdG9wb3MgLT0gcG9z OwpAQCAtNDM4LDExICs0MzgsMTEgQEAgZmxhdHRlbkpzb25QYXRoUGFyc2VJdGVtKFN0cmlu Z0luZm8gYnVmLCBpbnQgKnJlc3VsdCwgc3RydWN0IE5vZGUgKmVzY29udGV4dCwKIAkJCWJy ZWFrOwogCQljYXNlIGpwaUFueToKIAkJCWFwcGVuZEJpbmFyeVN0cmluZ0luZm8oYnVmLAot CQkJCQkJCQkgICAmaXRlbS0+dmFsdWUuYW55Ym91bmRzLmZpcnN0LAotCQkJCQkJCQkgICBz aXplb2YoaXRlbS0+dmFsdWUuYW55Ym91bmRzLmZpcnN0KSk7CisJCQkJCQkJCSAgICZpdGVt LT5hbnlib3VuZHMuZmlyc3QsCisJCQkJCQkJCSAgIHNpemVvZihpdGVtLT5hbnlib3VuZHMu Zmlyc3QpKTsKIAkJCWFwcGVuZEJpbmFyeVN0cmluZ0luZm8oYnVmLAotCQkJCQkJCQkgICAm aXRlbS0+dmFsdWUuYW55Ym91bmRzLmxhc3QsCi0JCQkJCQkJCSAgIHNpemVvZihpdGVtLT52 YWx1ZS5hbnlib3VuZHMubGFzdCkpOworCQkJCQkJCQkgICAmaXRlbS0+YW55Ym91bmRzLmxh c3QsCisJCQkJCQkJCSAgIHNpemVvZihpdGVtLT5hbnlib3VuZHMubGFzdCkpOwogCQkJYnJl YWs7CiAJCWNhc2UganBpVHlwZToKIAkJY2FzZSBqcGlTaXplOgpAQCAtNjE3LDcgKzYxNyw3 IEBAIHByaW50SnNvblBhdGhJdGVtKFN0cmluZ0luZm8gYnVmLCBKc29uUGF0aEl0ZW0gKnYs IGJvb2wgaW5LZXksCiAJCQlicmVhazsKIAkJY2FzZSBqcGlJbmRleEFycmF5OgogCQkJYXBw ZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnWycpOwotCQkJZm9yIChpID0gMDsgaSA8IHYtPmNv bnRlbnQuYXJyYXkubmVsZW1zOyBpKyspCisJCQlmb3IgKGkgPSAwOyBpIDwgdi0+YXJyYXku bmVsZW1zOyBpKyspCiAJCQl7CiAJCQkJSnNvblBhdGhJdGVtIGZyb207CiAJCQkJSnNvblBh dGhJdGVtIHRvOwpAQCAtNjQwLDI3ICs2NDAsMjcgQEAgcHJpbnRKc29uUGF0aEl0ZW0oU3Ry aW5nSW5mbyBidWYsIEpzb25QYXRoSXRlbSAqdiwgYm9vbCBpbktleSwKIAkJCWlmIChpbktl eSkKIAkJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcuJyk7CiAKLQkJCWlmICh2LT5j b250ZW50LmFueWJvdW5kcy5maXJzdCA9PSAwICYmCi0JCQkJdi0+Y29udGVudC5hbnlib3Vu ZHMubGFzdCA9PSBQR19VSU5UMzJfTUFYKQorCQkJaWYgKHYtPmFueWJvdW5kcy5maXJzdCA9 PSAwICYmCisJCQkJdi0+YW55Ym91bmRzLmxhc3QgPT0gUEdfVUlOVDMyX01BWCkKIAkJCQlh cHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIioqIik7Ci0JCQllbHNlIGlmICh2LT5jb250 ZW50LmFueWJvdW5kcy5maXJzdCA9PSB2LT5jb250ZW50LmFueWJvdW5kcy5sYXN0KQorCQkJ ZWxzZSBpZiAodi0+YW55Ym91bmRzLmZpcnN0ID09IHYtPmFueWJvdW5kcy5sYXN0KQogCQkJ ewotCQkJCWlmICh2LT5jb250ZW50LmFueWJvdW5kcy5maXJzdCA9PSBQR19VSU5UMzJfTUFY KQorCQkJCWlmICh2LT5hbnlib3VuZHMuZmlyc3QgPT0gUEdfVUlOVDMyX01BWCkKIAkJCQkJ YXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIqKntsYXN0fSIpOwogCQkJCWVsc2UKIAkJ CQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIqKnsldX0iLAotCQkJCQkJCQkJIHYtPmNvbnRl bnQuYW55Ym91bmRzLmZpcnN0KTsKKwkJCQkJCQkJCSB2LT5hbnlib3VuZHMuZmlyc3QpOwog CQkJfQotCQkJZWxzZSBpZiAodi0+Y29udGVudC5hbnlib3VuZHMuZmlyc3QgPT0gUEdfVUlO VDMyX01BWCkKKwkJCWVsc2UgaWYgKHYtPmFueWJvdW5kcy5maXJzdCA9PSBQR19VSU5UMzJf TUFYKQogCQkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiKip7bGFzdCB0byAldX0iLAotCQkJ CQkJCQkgdi0+Y29udGVudC5hbnlib3VuZHMubGFzdCk7Ci0JCQllbHNlIGlmICh2LT5jb250 ZW50LmFueWJvdW5kcy5sYXN0ID09IFBHX1VJTlQzMl9NQVgpCisJCQkJCQkJCSB2LT5hbnli b3VuZHMubGFzdCk7CisJCQllbHNlIGlmICh2LT5hbnlib3VuZHMubGFzdCA9PSBQR19VSU5U MzJfTUFYKQogCQkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiKip7JXUgdG8gbGFzdH0iLAot CQkJCQkJCQkgdi0+Y29udGVudC5hbnlib3VuZHMuZmlyc3QpOworCQkJCQkJCQkgdi0+YW55 Ym91bmRzLmZpcnN0KTsKIAkJCWVsc2UKIAkJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIioq eyV1IHRvICV1fSIsCi0JCQkJCQkJCSB2LT5jb250ZW50LmFueWJvdW5kcy5maXJzdCwKLQkJ CQkJCQkJIHYtPmNvbnRlbnQuYW55Ym91bmRzLmxhc3QpOworCQkJCQkJCQkgdi0+YW55Ym91 bmRzLmZpcnN0LAorCQkJCQkJCQkgdi0+YW55Ym91bmRzLmxhc3QpOwogCQkJYnJlYWs7CiAJ CWNhc2UganBpS2V5OgogCQkJaWYgKGluS2V5KQpAQCAtNzEzLDcgKzcxMyw3IEBAIHByaW50 SnNvblBhdGhJdGVtKFN0cmluZ0luZm8gYnVmLCBKc29uUGF0aEl0ZW0gKnYsIGJvb2wgaW5L ZXksCiAJCQlicmVhazsKIAkJY2FzZSBqcGlEYXRldGltZToKIAkJCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoYnVmLCAiLmRhdGV0aW1lKCIpOwotCQkJaWYgKHYtPmNvbnRlbnQuYXJnKQor CQkJaWYgKHYtPmFyZykKIAkJCXsKIAkJCQlqc3BHZXRBcmcodiwgJmVsZW0pOwogCQkJCXBy aW50SnNvblBhdGhJdGVtKGJ1ZiwgJmVsZW0sIGZhbHNlLCBmYWxzZSk7CkBAIC03MzAsNyAr NzMwLDcgQEAgcHJpbnRKc29uUGF0aEl0ZW0oU3RyaW5nSW5mbyBidWYsIEpzb25QYXRoSXRl bSAqdiwgYm9vbCBpbktleSwKIAkJCWlmIChwcmludEJyYWNrZXRlcykKIAkJCQlhcHBlbmRT dHJpbmdJbmZvQ2hhcihidWYsICcoJyk7CiAKLQkJCWpzcEluaXRCeUJ1ZmZlcigmZWxlbSwg di0+YmFzZSwgdi0+Y29udGVudC5saWtlX3JlZ2V4LmV4cHIpOworCQkJanNwSW5pdEJ5QnVm ZmVyKCZlbGVtLCB2LT5iYXNlLCB2LT5saWtlX3JlZ2V4LmV4cHIpOwogCQkJcHJpbnRKc29u UGF0aEl0ZW0oYnVmLCAmZWxlbSwgZmFsc2UsCiAJCQkJCQkJICBvcGVyYXRpb25Qcmlvcml0 eShlbGVtLnR5cGUpIDw9CiAJCQkJCQkJICBvcGVyYXRpb25Qcmlvcml0eSh2LT50eXBlKSk7 CkBAIC03MzgsMjIgKzczOCwyMiBAQCBwcmludEpzb25QYXRoSXRlbShTdHJpbmdJbmZvIGJ1 ZiwgSnNvblBhdGhJdGVtICp2LCBib29sIGluS2V5LAogCQkJYXBwZW5kU3RyaW5nSW5mb1N0 cmluZyhidWYsICIgbGlrZV9yZWdleCAiKTsKIAogCQkJZXNjYXBlX2pzb25fd2l0aF9sZW4o YnVmLAotCQkJCQkJCQkgdi0+Y29udGVudC5saWtlX3JlZ2V4LnBhdHRlcm4sCi0JCQkJCQkJ CSB2LT5jb250ZW50Lmxpa2VfcmVnZXgucGF0dGVybmxlbik7CisJCQkJCQkJCSB2LT5saWtl X3JlZ2V4LnBhdHRlcm4sCisJCQkJCQkJCSB2LT5saWtlX3JlZ2V4LnBhdHRlcm5sZW4pOwog Ci0JCQlpZiAodi0+Y29udGVudC5saWtlX3JlZ2V4LmZsYWdzKQorCQkJaWYgKHYtPmxpa2Vf cmVnZXguZmxhZ3MpCiAJCQl7CiAJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIg ZmxhZyBcIiIpOwogCi0JCQkJaWYgKHYtPmNvbnRlbnQubGlrZV9yZWdleC5mbGFncyAmIEpT UF9SRUdFWF9JQ0FTRSkKKwkJCQlpZiAodi0+bGlrZV9yZWdleC5mbGFncyAmIEpTUF9SRUdF WF9JQ0FTRSkKIAkJCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnaScpOwotCQkJCWlm ICh2LT5jb250ZW50Lmxpa2VfcmVnZXguZmxhZ3MgJiBKU1BfUkVHRVhfRE9UQUxMKQorCQkJ CWlmICh2LT5saWtlX3JlZ2V4LmZsYWdzICYgSlNQX1JFR0VYX0RPVEFMTCkKIAkJCQkJYXBw ZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAncycpOwotCQkJCWlmICh2LT5jb250ZW50Lmxpa2Vf cmVnZXguZmxhZ3MgJiBKU1BfUkVHRVhfTUxJTkUpCisJCQkJaWYgKHYtPmxpa2VfcmVnZXgu ZmxhZ3MgJiBKU1BfUkVHRVhfTUxJTkUpCiAJCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1 ZiwgJ20nKTsKLQkJCQlpZiAodi0+Y29udGVudC5saWtlX3JlZ2V4LmZsYWdzICYgSlNQX1JF R0VYX1dTUEFDRSkKKwkJCQlpZiAodi0+bGlrZV9yZWdleC5mbGFncyAmIEpTUF9SRUdFWF9X U1BBQ0UpCiAJCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJ3gnKTsKLQkJCQlpZiAo di0+Y29udGVudC5saWtlX3JlZ2V4LmZsYWdzICYgSlNQX1JFR0VYX1FVT1RFKQorCQkJCWlm ICh2LT5saWtlX3JlZ2V4LmZsYWdzICYgSlNQX1JFR0VYX1FVT1RFKQogCQkJCQlhcHBlbmRT dHJpbmdJbmZvQ2hhcihidWYsICdxJyk7CiAKIAkJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihi dWYsICciJyk7CkBAIC03NzMsMTIgKzc3MywxMiBAQCBwcmludEpzb25QYXRoSXRlbShTdHJp bmdJbmZvIGJ1ZiwgSnNvblBhdGhJdGVtICp2LCBib29sIGluS2V5LAogCQkJYnJlYWs7CiAJ CWNhc2UganBpRGVjaW1hbDoKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiLmRl Y2ltYWwoIik7Ci0JCQlpZiAodi0+Y29udGVudC5hcmdzLmxlZnQpCisJCQlpZiAodi0+YXJn cy5sZWZ0KQogCQkJewogCQkJCWpzcEdldExlZnRBcmcodiwgJmVsZW0pOwogCQkJCXByaW50 SnNvblBhdGhJdGVtKGJ1ZiwgJmVsZW0sIGZhbHNlLCBmYWxzZSk7CiAJCQl9Ci0JCQlpZiAo di0+Y29udGVudC5hcmdzLnJpZ2h0KQorCQkJaWYgKHYtPmFyZ3MucmlnaHQpCiAJCQl7CiAJ CQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnLCcpOwogCQkJCWpzcEdldFJpZ2h0QXJn KHYsICZlbGVtKTsKQEAgLTc5Nyw3ICs3OTcsNyBAQCBwcmludEpzb25QYXRoSXRlbShTdHJp bmdJbmZvIGJ1ZiwgSnNvblBhdGhJdGVtICp2LCBib29sIGluS2V5LAogCQkJYnJlYWs7CiAJ CWNhc2UganBpVGltZToKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiLnRpbWUo Iik7Ci0JCQlpZiAodi0+Y29udGVudC5hcmcpCisJCQlpZiAodi0+YXJnKQogCQkJewogCQkJ CWpzcEdldEFyZyh2LCAmZWxlbSk7CiAJCQkJcHJpbnRKc29uUGF0aEl0ZW0oYnVmLCAmZWxl bSwgZmFsc2UsIGZhbHNlKTsKQEAgLTgwNiw3ICs4MDYsNyBAQCBwcmludEpzb25QYXRoSXRl bShTdHJpbmdJbmZvIGJ1ZiwgSnNvblBhdGhJdGVtICp2LCBib29sIGluS2V5LAogCQkJYnJl YWs7CiAJCWNhc2UganBpVGltZVR6OgogCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYs ICIudGltZV90eigiKTsKLQkJCWlmICh2LT5jb250ZW50LmFyZykKKwkJCWlmICh2LT5hcmcp CiAJCQl7CiAJCQkJanNwR2V0QXJnKHYsICZlbGVtKTsKIAkJCQlwcmludEpzb25QYXRoSXRl bShidWYsICZlbGVtLCBmYWxzZSwgZmFsc2UpOwpAQCAtODE1LDcgKzgxNSw3IEBAIHByaW50 SnNvblBhdGhJdGVtKFN0cmluZ0luZm8gYnVmLCBKc29uUGF0aEl0ZW0gKnYsIGJvb2wgaW5L ZXksCiAJCQlicmVhazsKIAkJY2FzZSBqcGlUaW1lc3RhbXA6CiAJCQlhcHBlbmRTdHJpbmdJ bmZvU3RyaW5nKGJ1ZiwgIi50aW1lc3RhbXAoIik7Ci0JCQlpZiAodi0+Y29udGVudC5hcmcp CisJCQlpZiAodi0+YXJnKQogCQkJewogCQkJCWpzcEdldEFyZyh2LCAmZWxlbSk7CiAJCQkJ cHJpbnRKc29uUGF0aEl0ZW0oYnVmLCAmZWxlbSwgZmFsc2UsIGZhbHNlKTsKQEAgLTgyNCw3 ICs4MjQsNyBAQCBwcmludEpzb25QYXRoSXRlbShTdHJpbmdJbmZvIGJ1ZiwgSnNvblBhdGhJ dGVtICp2LCBib29sIGluS2V5LAogCQkJYnJlYWs7CiAJCWNhc2UganBpVGltZXN0YW1wVHo6 CiAJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIi50aW1lc3RhbXBfdHooIik7Ci0J CQlpZiAodi0+Y29udGVudC5hcmcpCisJCQlpZiAodi0+YXJnKQogCQkJewogCQkJCWpzcEdl dEFyZyh2LCAmZWxlbSk7CiAJCQkJcHJpbnRKc29uUGF0aEl0ZW0oYnVmLCAmZWxlbSwgZmFs c2UsIGZhbHNlKTsKQEAgLTEwMjAsMTEgKzEwMjAsMTEgQEAganNwSW5pdEJ5QnVmZmVyKEpz b25QYXRoSXRlbSAqdiwgY2hhciAqYmFzZSwgaW50MzIgcG9zKQogCQljYXNlIGpwaVN0cmlu ZzoKIAkJY2FzZSBqcGlLZXk6CiAJCWNhc2UganBpVmFyaWFibGU6Ci0JCQlyZWFkX2ludDMy KHYtPmNvbnRlbnQudmFsdWUuZGF0YWxlbiwgYmFzZSwgcG9zKTsKKwkJCXJlYWRfaW50MzIo di0+dmFsdWUuZGF0YWxlbiwgYmFzZSwgcG9zKTsKIAkJCS8qIEZBTExUSFJPVUdIICovCiAJ CWNhc2UganBpTnVtZXJpYzoKIAkJY2FzZSBqcGlCb29sOgotCQkJdi0+Y29udGVudC52YWx1 ZS5kYXRhID0gYmFzZSArIHBvczsKKwkJCXYtPnZhbHVlLmRhdGEgPSBiYXNlICsgcG9zOwog CQkJYnJlYWs7CiAJCWNhc2UganBpQW5kOgogCQljYXNlIGpwaU9yOgpAQCAtMTA0MSw4ICsx MDQxLDggQEAganNwSW5pdEJ5QnVmZmVyKEpzb25QYXRoSXRlbSAqdiwgY2hhciAqYmFzZSwg aW50MzIgcG9zKQogCQljYXNlIGpwaU1vZDoKIAkJY2FzZSBqcGlTdGFydHNXaXRoOgogCQlj YXNlIGpwaURlY2ltYWw6Ci0JCQlyZWFkX2ludDMyKHYtPmNvbnRlbnQuYXJncy5sZWZ0LCBi YXNlLCBwb3MpOwotCQkJcmVhZF9pbnQzMih2LT5jb250ZW50LmFyZ3MucmlnaHQsIGJhc2Us IHBvcyk7CisJCQlyZWFkX2ludDMyKHYtPmFyZ3MubGVmdCwgYmFzZSwgcG9zKTsKKwkJCXJl YWRfaW50MzIodi0+YXJncy5yaWdodCwgYmFzZSwgcG9zKTsKIAkJCWJyZWFrOwogCQljYXNl IGpwaU5vdDoKIAkJY2FzZSBqcGlJc1Vua25vd246CkBAIC0xMDU1LDIyICsxMDU1LDIyIEBA IGpzcEluaXRCeUJ1ZmZlcihKc29uUGF0aEl0ZW0gKnYsIGNoYXIgKmJhc2UsIGludDMyIHBv cykKIAkJY2FzZSBqcGlUaW1lVHo6CiAJCWNhc2UganBpVGltZXN0YW1wOgogCQljYXNlIGpw aVRpbWVzdGFtcFR6OgotCQkJcmVhZF9pbnQzMih2LT5jb250ZW50LmFyZywgYmFzZSwgcG9z KTsKKwkJCXJlYWRfaW50MzIodi0+YXJnLCBiYXNlLCBwb3MpOwogCQkJYnJlYWs7CiAJCWNh c2UganBpSW5kZXhBcnJheToKLQkJCXJlYWRfaW50MzIodi0+Y29udGVudC5hcnJheS5uZWxl bXMsIGJhc2UsIHBvcyk7Ci0JCQlyZWFkX2ludDMyX24odi0+Y29udGVudC5hcnJheS5lbGVt cywgYmFzZSwgcG9zLAotCQkJCQkJIHYtPmNvbnRlbnQuYXJyYXkubmVsZW1zICogMik7CisJ CQlyZWFkX2ludDMyKHYtPmFycmF5Lm5lbGVtcywgYmFzZSwgcG9zKTsKKwkJCXJlYWRfaW50 MzJfbih2LT5hcnJheS5lbGVtcywgYmFzZSwgcG9zLAorCQkJCQkJIHYtPmFycmF5Lm5lbGVt cyAqIDIpOwogCQkJYnJlYWs7CiAJCWNhc2UganBpQW55OgotCQkJcmVhZF9pbnQzMih2LT5j b250ZW50LmFueWJvdW5kcy5maXJzdCwgYmFzZSwgcG9zKTsKLQkJCXJlYWRfaW50MzIodi0+ Y29udGVudC5hbnlib3VuZHMubGFzdCwgYmFzZSwgcG9zKTsKKwkJCXJlYWRfaW50MzIodi0+ YW55Ym91bmRzLmZpcnN0LCBiYXNlLCBwb3MpOworCQkJcmVhZF9pbnQzMih2LT5hbnlib3Vu ZHMubGFzdCwgYmFzZSwgcG9zKTsKIAkJCWJyZWFrOwogCQljYXNlIGpwaUxpa2VSZWdleDoK LQkJCXJlYWRfaW50MzIodi0+Y29udGVudC5saWtlX3JlZ2V4LmZsYWdzLCBiYXNlLCBwb3Mp OwotCQkJcmVhZF9pbnQzMih2LT5jb250ZW50Lmxpa2VfcmVnZXguZXhwciwgYmFzZSwgcG9z KTsKLQkJCXJlYWRfaW50MzIodi0+Y29udGVudC5saWtlX3JlZ2V4LnBhdHRlcm5sZW4sIGJh c2UsIHBvcyk7Ci0JCQl2LT5jb250ZW50Lmxpa2VfcmVnZXgucGF0dGVybiA9IGJhc2UgKyBw b3M7CisJCQlyZWFkX2ludDMyKHYtPmxpa2VfcmVnZXguZmxhZ3MsIGJhc2UsIHBvcyk7CisJ CQlyZWFkX2ludDMyKHYtPmxpa2VfcmVnZXguZXhwciwgYmFzZSwgcG9zKTsKKwkJCXJlYWRf aW50MzIodi0+bGlrZV9yZWdleC5wYXR0ZXJubGVuLCBiYXNlLCBwb3MpOworCQkJdi0+bGlr ZV9yZWdleC5wYXR0ZXJuID0gYmFzZSArIHBvczsKIAkJCWJyZWFrOwogCQlkZWZhdWx0Ogog CQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBqc29ucGF0aCBpdGVtIHR5cGU6ICVkIiwg di0+dHlwZSk7CkBAIC0xMDkyLDcgKzEwOTIsNyBAQCBqc3BHZXRBcmcoSnNvblBhdGhJdGVt ICp2LCBKc29uUGF0aEl0ZW0gKmEpCiAJCSAgIHYtPnR5cGUgPT0ganBpVGltZXN0YW1wIHx8 CiAJCSAgIHYtPnR5cGUgPT0ganBpVGltZXN0YW1wVHopOwogCi0JanNwSW5pdEJ5QnVmZmVy KGEsIHYtPmJhc2UsIHYtPmNvbnRlbnQuYXJnKTsKKwlqc3BJbml0QnlCdWZmZXIoYSwgdi0+ YmFzZSwgdi0+YXJnKTsKIH0KIAogYm9vbApAQCAtMTE4MSw3ICsxMTgxLDcgQEAganNwR2V0 TGVmdEFyZyhKc29uUGF0aEl0ZW0gKnYsIEpzb25QYXRoSXRlbSAqYSkKIAkJICAgdi0+dHlw ZSA9PSBqcGlTdGFydHNXaXRoIHx8CiAJCSAgIHYtPnR5cGUgPT0ganBpRGVjaW1hbCk7CiAK LQlqc3BJbml0QnlCdWZmZXIoYSwgdi0+YmFzZSwgdi0+Y29udGVudC5hcmdzLmxlZnQpOwor CWpzcEluaXRCeUJ1ZmZlcihhLCB2LT5iYXNlLCB2LT5hcmdzLmxlZnQpOwogfQogCiB2b2lk CkBAIC0xMjAzLDcgKzEyMDMsNyBAQCBqc3BHZXRSaWdodEFyZyhKc29uUGF0aEl0ZW0gKnYs IEpzb25QYXRoSXRlbSAqYSkKIAkJICAgdi0+dHlwZSA9PSBqcGlTdGFydHNXaXRoIHx8CiAJ CSAgIHYtPnR5cGUgPT0ganBpRGVjaW1hbCk7CiAKLQlqc3BJbml0QnlCdWZmZXIoYSwgdi0+ YmFzZSwgdi0+Y29udGVudC5hcmdzLnJpZ2h0KTsKKwlqc3BJbml0QnlCdWZmZXIoYSwgdi0+ YmFzZSwgdi0+YXJncy5yaWdodCk7CiB9CiAKIGJvb2wKQEAgLTEyMTEsNyArMTIxMSw3IEBA IGpzcEdldEJvb2woSnNvblBhdGhJdGVtICp2KQogewogCUFzc2VydCh2LT50eXBlID09IGpw aUJvb2wpOwogCi0JcmV0dXJuIChib29sKSAqdi0+Y29udGVudC52YWx1ZS5kYXRhOworCXJl dHVybiAoYm9vbCkgKnYtPnZhbHVlLmRhdGE7CiB9CiAKIE51bWVyaWMKQEAgLTEyMTksNyAr MTIxOSw3IEBAIGpzcEdldE51bWVyaWMoSnNvblBhdGhJdGVtICp2KQogewogCUFzc2VydCh2 LT50eXBlID09IGpwaU51bWVyaWMpOwogCi0JcmV0dXJuIChOdW1lcmljKSB2LT5jb250ZW50 LnZhbHVlLmRhdGE7CisJcmV0dXJuIChOdW1lcmljKSB2LT52YWx1ZS5kYXRhOwogfQogCiBj aGFyICoKQEAgLTEyMzAsOCArMTIzMCw4IEBAIGpzcEdldFN0cmluZyhKc29uUGF0aEl0ZW0g KnYsIGludDMyICpsZW4pCiAJCSAgIHYtPnR5cGUgPT0ganBpVmFyaWFibGUpOwogCiAJaWYg KGxlbikKLQkJKmxlbiA9IHYtPmNvbnRlbnQudmFsdWUuZGF0YWxlbjsKLQlyZXR1cm4gdi0+ Y29udGVudC52YWx1ZS5kYXRhOworCQkqbGVuID0gdi0+dmFsdWUuZGF0YWxlbjsKKwlyZXR1 cm4gdi0+dmFsdWUuZGF0YTsKIH0KIAogYm9vbApAQCAtMTI0MCwxMiArMTI0MCwxMiBAQCBq c3BHZXRBcnJheVN1YnNjcmlwdChKc29uUGF0aEl0ZW0gKnYsIEpzb25QYXRoSXRlbSAqZnJv bSwgSnNvblBhdGhJdGVtICp0bywKIHsKIAlBc3NlcnQodi0+dHlwZSA9PSBqcGlJbmRleEFy cmF5KTsKIAotCWpzcEluaXRCeUJ1ZmZlcihmcm9tLCB2LT5iYXNlLCB2LT5jb250ZW50LmFy cmF5LmVsZW1zW2ldLmZyb20pOworCWpzcEluaXRCeUJ1ZmZlcihmcm9tLCB2LT5iYXNlLCB2 LT5hcnJheS5lbGVtc1tpXS5mcm9tKTsKIAotCWlmICghdi0+Y29udGVudC5hcnJheS5lbGVt c1tpXS50bykKKwlpZiAoIXYtPmFycmF5LmVsZW1zW2ldLnRvKQogCQlyZXR1cm4gZmFsc2U7 CiAKLQlqc3BJbml0QnlCdWZmZXIodG8sIHYtPmJhc2UsIHYtPmNvbnRlbnQuYXJyYXkuZWxl bXNbaV0udG8pOworCWpzcEluaXRCeUJ1ZmZlcih0bywgdi0+YmFzZSwgdi0+YXJyYXkuZWxl bXNbaV0udG8pOwogCiAJcmV0dXJuIHRydWU7CiB9CkBAIC0xNDIzLDcgKzE0MjMsNyBAQCBq c3BJc011dGFibGVXYWxrZXIoSnNvblBhdGhJdGVtICpqcGksIHN0cnVjdCBKc29uUGF0aE11 dGFibGVDb250ZXh0ICpjeHQpCiAJCQkJYnJlYWs7CiAKIAkJCWNhc2UganBpSW5kZXhBcnJh eToKLQkJCQlmb3IgKGludCBpID0gMDsgaSA8IGpwaS0+Y29udGVudC5hcnJheS5uZWxlbXM7 IGkrKykKKwkJCQlmb3IgKGludCBpID0gMDsgaSA8IGpwaS0+YXJyYXkubmVsZW1zOyBpKysp CiAJCQkJewogCQkJCQlKc29uUGF0aEl0ZW0gZnJvbTsKIAkJCQkJSnNvblBhdGhJdGVtIHRv OwpAQCAtMTQ0MSwxMiArMTQ0MSwxMiBAQCBqc3BJc011dGFibGVXYWxrZXIoSnNvblBhdGhJ dGVtICpqcGksIHN0cnVjdCBKc29uUGF0aE11dGFibGVDb250ZXh0ICpjeHQpCiAJCQkJYnJl YWs7CiAKIAkJCWNhc2UganBpQW55OgotCQkJCWlmIChqcGktPmNvbnRlbnQuYW55Ym91bmRz LmZpcnN0ID4gMCkKKwkJCQlpZiAoanBpLT5hbnlib3VuZHMuZmlyc3QgPiAwKQogCQkJCQlz dGF0dXMgPSBqcGRzTm9uRGF0ZVRpbWU7CiAJCQkJYnJlYWs7CiAKIAkJCWNhc2UganBpRGF0 ZXRpbWU6Ci0JCQkJaWYgKGpwaS0+Y29udGVudC5hcmcpCisJCQkJaWYgKGpwaS0+YXJnKQog CQkJCXsKIAkJCQkJY2hhcgkgICAqdGVtcGxhdGU7CiAKQEAgLTE0NzEsNyArMTQ3MSw3IEBA IGpzcElzTXV0YWJsZVdhbGtlcihKc29uUGF0aEl0ZW0gKmpwaSwgc3RydWN0IEpzb25QYXRo TXV0YWJsZUNvbnRleHQgKmN4dCkKIAogCQkJY2FzZSBqcGlMaWtlUmVnZXg6CiAJCQkJQXNz ZXJ0KHN0YXR1cyA9PSBqcGRzTm9uRGF0ZVRpbWUpOwotCQkJCWpzcEluaXRCeUJ1ZmZlcigm YXJnLCBqcGktPmJhc2UsIGpwaS0+Y29udGVudC5saWtlX3JlZ2V4LmV4cHIpOworCQkJCWpz cEluaXRCeUJ1ZmZlcigmYXJnLCBqcGktPmJhc2UsIGpwaS0+bGlrZV9yZWdleC5leHByKTsK IAkJCQlqc3BJc011dGFibGVXYWxrZXIoJmFyZywgY3h0KTsKIAkJCQlicmVhazsKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2V4ZWMuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9leGVjLmMKaW5kZXggODE1NjY5NWU5N2UuLjc3 OWYzMmI0YTBiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGhf ZXhlYy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9leGVjLmMKQEAg LTQ3OCw3ICs0NzgsNyBAQCBqc29uYl9wYXRoX21hdGNoX2ludGVybmFsKEZ1bmN0aW9uQ2Fs bEluZm8gZmNpbmZvLCBib29sIHR6KQogCQlKc29uYlZhbHVlICpqYnYgPSBKc29uVmFsdWVM aXN0SGVhZCgmZm91bmQpOwogCiAJCWlmIChqYnYtPnR5cGUgPT0gamJ2Qm9vbCkKLQkJCVBH X1JFVFVSTl9CT09MKGpidi0+dmFsLmJvb2xlYW4pOworCQkJUEdfUkVUVVJOX0JPT0woamJ2 LT5ib29sZWFuKTsKIAogCQlpZiAoamJ2LT50eXBlID09IGpidk51bGwpCiAJCQlQR19SRVRV Uk5fTlVMTCgpOwpAQCAtODYwLDcgKzg2MCw3IEBAIGV4ZWN1dGVJdGVtT3B0VW53cmFwVGFy Z2V0KEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwgSnNvblBhdGhJdGVtICpqc3AsCiAKIAkJ CQlyZXR1cm4gZXhlY3V0ZUFueUl0ZW0KIAkJCQkJKGN4dCwgaGFzTmV4dCA/ICZlbGVtIDog TlVMTCwKLQkJCQkJIGpiLT52YWwuYmluYXJ5LmRhdGEsIGZvdW5kLCAxLCAxLCAxLAorCQkJ CQkgamItPmJpbmFyeS5kYXRhLCBmb3VuZCwgMSwgMSwgMSwKIAkJCQkJIGZhbHNlLCBqc3BB dXRvVW53cmFwKGN4dCkpOwogCQkJfQogCQkJZWxzZSBpZiAodW53cmFwICYmIEpzb25iVHlw ZShqYikgPT0gamJ2QXJyYXkpCkBAIC04ODgsNyArODg4LDcgQEAgZXhlY3V0ZUl0ZW1PcHRV bndyYXBUYXJnZXQoSnNvblBhdGhFeGVjQ29udGV4dCAqY3h0LCBKc29uUGF0aEl0ZW0gKmpz cCwKIAogCQkJCWN4dC0+aW5uZXJtb3N0QXJyYXlTaXplID0gc2l6ZTsgLyogZm9yIExBU1Qg ZXZhbHVhdGlvbiAqLwogCi0JCQkJZm9yIChpID0gMDsgaSA8IGpzcC0+Y29udGVudC5hcnJh eS5uZWxlbXM7IGkrKykKKwkJCQlmb3IgKGkgPSAwOyBpIDwganNwLT5hcnJheS5uZWxlbXM7 IGkrKykKIAkJCQl7CiAJCQkJCUpzb25QYXRoSXRlbSBmcm9tOwogCQkJCQlKc29uUGF0aEl0 ZW0gdG87CkBAIC05NDEsNyArOTQxLDcgQEAgZXhlY3V0ZUl0ZW1PcHRVbndyYXBUYXJnZXQo SnNvblBhdGhFeGVjQ29udGV4dCAqY3h0LCBKc29uUGF0aEl0ZW0gKmpzcCwKIAkJCQkJCX0K IAkJCQkJCWVsc2UKIAkJCQkJCXsKLQkJCQkJCQl2ID0gZ2V0SXRoSnNvbmJWYWx1ZUZyb21D b250YWluZXIoamItPnZhbC5iaW5hcnkuZGF0YSwKKwkJCQkJCQl2ID0gZ2V0SXRoSnNvbmJW YWx1ZUZyb21Db250YWluZXIoamItPmJpbmFyeS5kYXRhLAogCQkJCQkJCQkJCQkJCQkJICAo dWludDMyKSBpbmRleCk7CiAKIAkJCQkJCQlpZiAodiA9PSBOVUxMKQpAQCAtOTg1LDcgKzk4 NSw3IEBAIGV4ZWN1dGVJdGVtT3B0VW53cmFwVGFyZ2V0KEpzb25QYXRoRXhlY0NvbnRleHQg KmN4dCwgSnNvblBhdGhJdGVtICpqc3AsCiAJCQkJYm9vbAkJaGFzTmV4dCA9IGpzcEdldE5l eHQoanNwLCAmZWxlbSk7CiAKIAkJCQkvKiBmaXJzdCB0cnkgd2l0aG91dCBhbnkgaW50ZXJt ZWRpYXRlIHN0ZXBzICovCi0JCQkJaWYgKGpzcC0+Y29udGVudC5hbnlib3VuZHMuZmlyc3Qg PT0gMCkKKwkJCQlpZiAoanNwLT5hbnlib3VuZHMuZmlyc3QgPT0gMCkKIAkJCQl7CiAJCQkJ CWJvb2wJCXNhdmVkSWdub3JlU3RydWN0dXJhbEVycm9yczsKIApAQCAtMTAwMiwxMCArMTAw MiwxMCBAQCBleGVjdXRlSXRlbU9wdFVud3JhcFRhcmdldChKc29uUGF0aEV4ZWNDb250ZXh0 ICpjeHQsIEpzb25QYXRoSXRlbSAqanNwLAogCQkJCWlmIChqYi0+dHlwZSA9PSBqYnZCaW5h cnkpCiAJCQkJCXJlcyA9IGV4ZWN1dGVBbnlJdGVtCiAJCQkJCQkoY3h0LCBoYXNOZXh0ID8g JmVsZW0gOiBOVUxMLAotCQkJCQkJIGpiLT52YWwuYmluYXJ5LmRhdGEsIGZvdW5kLAorCQkJ CQkJIGpiLT5iaW5hcnkuZGF0YSwgZm91bmQsCiAJCQkJCQkgMSwKLQkJCQkJCSBqc3AtPmNv bnRlbnQuYW55Ym91bmRzLmZpcnN0LAotCQkJCQkJIGpzcC0+Y29udGVudC5hbnlib3VuZHMu bGFzdCwKKwkJCQkJCSBqc3AtPmFueWJvdW5kcy5maXJzdCwKKwkJCQkJCSBqc3AtPmFueWJv dW5kcy5sYXN0LAogCQkJCQkJIHRydWUsIGpzcEF1dG9VbndyYXAoY3h0KSk7CiAJCQkJYnJl YWs7CiAJCQl9CkBAIC0xMDE3LDkgKzEwMTcsOSBAQCBleGVjdXRlSXRlbU9wdFVud3JhcFRh cmdldChKc29uUGF0aEV4ZWNDb250ZXh0ICpjeHQsIEpzb25QYXRoSXRlbSAqanNwLAogCQkJ CUpzb25iVmFsdWUJa2V5OwogCiAJCQkJa2V5LnR5cGUgPSBqYnZTdHJpbmc7Ci0JCQkJa2V5 LnZhbC5zdHJpbmcudmFsID0ganNwR2V0U3RyaW5nKGpzcCwgJmtleS52YWwuc3RyaW5nLmxl bik7CisJCQkJa2V5LnN0cmluZy52YWwgPSBqc3BHZXRTdHJpbmcoanNwLCAma2V5LnN0cmlu Zy5sZW4pOwogCi0JCQkJdiA9IGZpbmRKc29uYlZhbHVlRnJvbUNvbnRhaW5lcihqYi0+dmFs LmJpbmFyeS5kYXRhLAorCQkJCXYgPSBmaW5kSnNvbmJWYWx1ZUZyb21Db250YWluZXIoamIt PmJpbmFyeS5kYXRhLAogCQkJCQkJCQkJCQkJSkJfRk9CSkVDVCwgJmtleSk7CiAKIAkJCQlp ZiAodiAhPSBOVUxMKQpAQCAtMTA0MSw4ICsxMDQxLDggQEAgZXhlY3V0ZUl0ZW1PcHRVbndy YXBUYXJnZXQoSnNvblBhdGhFeGVjQ29udGV4dCAqY3h0LCBKc29uUGF0aEl0ZW0gKmpzcCwK IAkJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NRTF9KU09O X01FTUJFUl9OT1RfRk9VTkQpLCBcCiAJCQkJCQkJIGVycm1zZygiSlNPTiBvYmplY3QgZG9l cyBub3QgY29udGFpbiBrZXkgXCIlc1wiIiwKLQkJCQkJCQkJCXBuc3RyZHVwKGtleS52YWwu c3RyaW5nLnZhbCwKLQkJCQkJCQkJCQkJIGtleS52YWwuc3RyaW5nLmxlbikpKSk7CisJCQkJ CQkJCQlwbnN0cmR1cChrZXkuc3RyaW5nLnZhbCwKKwkJCQkJCQkJCQkJIGtleS5zdHJpbmcu bGVuKSkpKTsKIAkJCQl9CiAJCQl9CiAJCQllbHNlIGlmICh1bndyYXAgJiYgSnNvbmJUeXBl KGpiKSA9PSBqYnZBcnJheSkKQEAgLTEwOTEsOCArMTA5MSw4IEBAIGV4ZWN1dGVJdGVtT3B0 VW53cmFwVGFyZ2V0KEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwgSnNvblBhdGhJdGVtICpq c3AsCiAJCQkJSnNvbmJWYWx1ZSAqamJ2ID0gcGFsbG9jKHNpemVvZigqamJ2KSk7CiAKIAkJ CQlqYnYtPnR5cGUgPSBqYnZTdHJpbmc7Ci0JCQkJamJ2LT52YWwuc3RyaW5nLnZhbCA9IHBz dHJkdXAoSnNvbmJUeXBlTmFtZShqYikpOwotCQkJCWpidi0+dmFsLnN0cmluZy5sZW4gPSBz dHJsZW4oamJ2LT52YWwuc3RyaW5nLnZhbCk7CisJCQkJamJ2LT5zdHJpbmcudmFsID0gcHN0 cmR1cChKc29uYlR5cGVOYW1lKGpiKSk7CisJCQkJamJ2LT5zdHJpbmcubGVuID0gc3RybGVu KGpidi0+c3RyaW5nLnZhbCk7CiAKIAkJCQlyZXMgPSBleGVjdXRlTmV4dEl0ZW0oY3h0LCBq c3AsIE5VTEwsIGpidiwKIAkJCQkJCQkJCSAgZm91bmQsIGZhbHNlKTsKQEAgLTExMjEsNyAr MTEyMSw3IEBAIGV4ZWN1dGVJdGVtT3B0VW53cmFwVGFyZ2V0KEpzb25QYXRoRXhlY0NvbnRl eHQgKmN4dCwgSnNvblBhdGhJdGVtICpqc3AsCiAJCQkJamIgPSBwYWxsb2Moc2l6ZW9mKCpq YikpOwogCiAJCQkJamItPnR5cGUgPSBqYnZOdW1lcmljOwotCQkJCWpiLT52YWwubnVtZXJp YyA9IGludDY0X3RvX251bWVyaWMoc2l6ZSk7CisJCQkJamItPm51bWVyaWMgPSBpbnQ2NF90 b19udW1lcmljKHNpemUpOwogCiAJCQkJcmVzID0gZXhlY3V0ZU5leHRJdGVtKGN4dCwganNw LCBOVUxMLCBqYiwgZm91bmQsIGZhbHNlKTsKIAkJCX0KQEAgLTExNTAsNyArMTE1MCw3IEBA IGV4ZWN1dGVJdGVtT3B0VW53cmFwVGFyZ2V0KEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwg SnNvblBhdGhJdGVtICpqc3AsCiAJCQkJaWYgKGpiLT50eXBlID09IGpidk51bWVyaWMpCiAJ CQkJewogCQkJCQljaGFyCSAgICp0bXAgPSBEYXR1bUdldENTdHJpbmcoRGlyZWN0RnVuY3Rp b25DYWxsMShudW1lcmljX291dCwKLQkJCQkJCQkJCQkJCQkJCQkJCSAgTnVtZXJpY0dldERh dHVtKGpiLT52YWwubnVtZXJpYykpKTsKKwkJCQkJCQkJCQkJCQkJCQkJCSAgTnVtZXJpY0dl dERhdHVtKGpiLT5udW1lcmljKSkpOwogCQkJCQlkb3VibGUJCXZhbDsKIAkJCQkJRXJyb3JT YXZlQ29udGV4dCBlc2NvbnRleHQgPSB7VF9FcnJvclNhdmVDb250ZXh0fTsKIApAQCAtMTE3 Niw4ICsxMTc2LDggQEAgZXhlY3V0ZUl0ZW1PcHRVbndyYXBUYXJnZXQoSnNvblBhdGhFeGVj Q29udGV4dCAqY3h0LCBKc29uUGF0aEl0ZW0gKmpzcCwKIAkJCQl7CiAJCQkJCS8qIGNhc3Qg c3RyaW5nIGFzIGRvdWJsZSAqLwogCQkJCQlkb3VibGUJCXZhbDsKLQkJCQkJY2hhcgkgICAq dG1wID0gcG5zdHJkdXAoamItPnZhbC5zdHJpbmcudmFsLAotCQkJCQkJCQkJCQkgICBqYi0+ dmFsLnN0cmluZy5sZW4pOworCQkJCQljaGFyCSAgICp0bXAgPSBwbnN0cmR1cChqYi0+c3Ry aW5nLnZhbCwKKwkJCQkJCQkJCQkJICAgamItPnN0cmluZy5sZW4pOwogCQkJCQlFcnJvclNh dmVDb250ZXh0IGVzY29udGV4dCA9IHtUX0Vycm9yU2F2ZUNvbnRleHR9OwogCiAJCQkJCXZh bCA9IGZsb2F0OGluX2ludGVybmFsKHRtcCwKQEAgLTExOTksOCArMTE5OSw4IEBAIGV4ZWN1 dGVJdGVtT3B0VW53cmFwVGFyZ2V0KEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwgSnNvblBh dGhJdGVtICpqc3AsCiAKIAkJCQkJamIgPSAmamJ2OwogCQkJCQlqYi0+dHlwZSA9IGpidk51 bWVyaWM7Ci0JCQkJCWpiLT52YWwubnVtZXJpYyA9IERhdHVtR2V0TnVtZXJpYyhEaXJlY3RG dW5jdGlvbkNhbGwxKGZsb2F0OF9udW1lcmljLAotCQkJCQkJCQkJCQkJCQkJCQkJICBGbG9h dDhHZXREYXR1bSh2YWwpKSk7CisJCQkJCWpiLT5udW1lcmljID0gRGF0dW1HZXROdW1lcmlj KERpcmVjdEZ1bmN0aW9uQ2FsbDEoZmxvYXQ4X251bWVyaWMsCisJCQkJCQkJCQkJCQkJCQkJ CSAgRmxvYXQ4R2V0RGF0dW0odmFsKSkpOwogCQkJCQlyZXMgPSBqcGVyT2s7CiAJCQkJfQog CkBAIC0xMjUyLDcgKzEyNTIsNyBAQCBleGVjdXRlSXRlbU9wdFVud3JhcFRhcmdldChKc29u UGF0aEV4ZWNDb250ZXh0ICpjeHQsIEpzb25QYXRoSXRlbSAqanNwLAogCQkJCWxhc3RqYnYg PSBoYXNOZXh0ID8gJnRtcGpidiA6IHBhbGxvYyhzaXplb2YoKmxhc3RqYnYpKTsKIAogCQkJ CWxhc3RqYnYtPnR5cGUgPSBqYnZOdW1lcmljOwotCQkJCWxhc3RqYnYtPnZhbC5udW1lcmlj ID0gaW50NjRfdG9fbnVtZXJpYyhsYXN0KTsKKwkJCQlsYXN0amJ2LT5udW1lcmljID0gaW50 NjRfdG9fbnVtZXJpYyhsYXN0KTsKIAogCQkJCXJlcyA9IGV4ZWN1dGVOZXh0SXRlbShjeHQs IGpzcCwgJmVsZW0sCiAJCQkJCQkJCQkgIGxhc3RqYnYsIGZvdW5kLCBoYXNOZXh0KTsKQEAg LTEyNzMsMTQgKzEyNzMsMTQgQEAgZXhlY3V0ZUl0ZW1PcHRVbndyYXBUYXJnZXQoSnNvblBh dGhFeGVjQ29udGV4dCAqY3h0LCBKc29uUGF0aEl0ZW0gKmpzcCwKIAkJCQkJRXJyb3JTYXZl Q29udGV4dCBlc2NvbnRleHQgPSB7VF9FcnJvclNhdmVDb250ZXh0fTsKIAkJCQkJaW50NjQJ CXZhbDsKIAotCQkJCQl2YWwgPSBudW1lcmljX2ludDhfc2FmZShqYi0+dmFsLm51bWVyaWMs CisJCQkJCXZhbCA9IG51bWVyaWNfaW50OF9zYWZlKGpiLT5udW1lcmljLAogCQkJCQkJCQkJ CQkoTm9kZSAqKSAmZXNjb250ZXh0KTsKIAkJCQkJaWYgKGVzY29udGV4dC5lcnJvcl9vY2N1 cnJlZCkKIAkJCQkJCVJFVFVSTl9FUlJPUihlcmVwb3J0KEVSUk9SLAogCQkJCQkJCQkJCQkg KGVycmNvZGUoRVJSQ09ERV9OT05fTlVNRVJJQ19TUUxfSlNPTl9JVEVNKSwKIAkJCQkJCQkJ CQkJICBlcnJtc2coImFyZ3VtZW50IFwiJXNcIiBvZiBqc29ucGF0aCBpdGVtIG1ldGhvZCAu JXMoKSBpcyBpbnZhbGlkIGZvciB0eXBlICVzIiwKIAkJCQkJCQkJCQkJCQkgRGF0dW1HZXRD U3RyaW5nKERpcmVjdEZ1bmN0aW9uQ2FsbDEobnVtZXJpY19vdXQsCi0JCQkJCQkJCQkJCQkJ CQkJCQkJCQkJIE51bWVyaWNHZXREYXR1bShqYi0+dmFsLm51bWVyaWMpKSksCisJCQkJCQkJ CQkJCQkJCQkJCQkJCQkJIE51bWVyaWNHZXREYXR1bShqYi0+bnVtZXJpYykpKSwKIAkJCQkJ CQkJCQkJCQkganNwT3BlcmF0aW9uTmFtZShqc3AtPnR5cGUpLAogCQkJCQkJCQkJCQkJCSAi YmlnaW50IikpKSk7CiAKQEAgLTEyOTAsOCArMTI5MCw4IEBAIGV4ZWN1dGVJdGVtT3B0VW53 cmFwVGFyZ2V0KEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwgSnNvblBhdGhJdGVtICpqc3As CiAJCQkJZWxzZSBpZiAoamItPnR5cGUgPT0gamJ2U3RyaW5nKQogCQkJCXsKIAkJCQkJLyog Y2FzdCBzdHJpbmcgYXMgYmlnaW50ICovCi0JCQkJCWNoYXIJICAgKnRtcCA9IHBuc3RyZHVw KGpiLT52YWwuc3RyaW5nLnZhbCwKLQkJCQkJCQkJCQkJICAgamItPnZhbC5zdHJpbmcubGVu KTsKKwkJCQkJY2hhcgkgICAqdG1wID0gcG5zdHJkdXAoamItPnN0cmluZy52YWwsCisJCQkJ CQkJCQkJCSAgIGpiLT5zdHJpbmcubGVuKTsKIAkJCQkJRXJyb3JTYXZlQ29udGV4dCBlc2Nv bnRleHQgPSB7VF9FcnJvclNhdmVDb250ZXh0fTsKIAkJCQkJYm9vbAkJbm9lcnI7CiAKQEAg LTEzMTYsOCArMTMxNiw4IEBAIGV4ZWN1dGVJdGVtT3B0VW53cmFwVGFyZ2V0KEpzb25QYXRo RXhlY0NvbnRleHQgKmN4dCwgSnNvblBhdGhJdGVtICpqc3AsCiAKIAkJCQlqYiA9ICZqYnY7 CiAJCQkJamItPnR5cGUgPSBqYnZOdW1lcmljOwotCQkJCWpiLT52YWwubnVtZXJpYyA9IERh dHVtR2V0TnVtZXJpYyhEaXJlY3RGdW5jdGlvbkNhbGwxKGludDhfbnVtZXJpYywKLQkJCQkJ CQkJCQkJCQkJCQkJICBkYXR1bSkpOworCQkJCWpiLT5udW1lcmljID0gRGF0dW1HZXROdW1l cmljKERpcmVjdEZ1bmN0aW9uQ2FsbDEoaW50OF9udW1lcmljLAorCQkJCQkJCQkJCQkJCQkJ CSAgZGF0dW0pKTsKIAogCQkJCXJlcyA9IGV4ZWN1dGVOZXh0SXRlbShjeHQsIGpzcCwgTlVM TCwgamIsIGZvdW5kLCB0cnVlKTsKIAkJCX0KQEAgLTEzMzQsNyArMTMzNCw3IEBAIGV4ZWN1 dGVJdGVtT3B0VW53cmFwVGFyZ2V0KEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwgSnNvblBh dGhJdGVtICpqc3AsCiAKIAkJCQlpZiAoamItPnR5cGUgPT0gamJ2Qm9vbCkKIAkJCQl7Ci0J CQkJCWJ2YWwgPSBqYi0+dmFsLmJvb2xlYW47CisJCQkJCWJ2YWwgPSBqYi0+Ym9vbGVhbjsK IAogCQkJCQlyZXMgPSBqcGVyT2s7CiAJCQkJfQpAQCAtMTM0NCw3ICsxMzQ0LDcgQEAgZXhl Y3V0ZUl0ZW1PcHRVbndyYXBUYXJnZXQoSnNvblBhdGhFeGVjQ29udGV4dCAqY3h0LCBKc29u UGF0aEl0ZW0gKmpzcCwKIAkJCQkJRGF0dW0JCWRhdHVtOwogCQkJCQlib29sCQlub2VycjsK IAkJCQkJY2hhcgkgICAqdG1wID0gRGF0dW1HZXRDU3RyaW5nKERpcmVjdEZ1bmN0aW9uQ2Fs bDEobnVtZXJpY19vdXQsCi0JCQkJCQkJCQkJCQkJCQkJCQkgIE51bWVyaWNHZXREYXR1bShq Yi0+dmFsLm51bWVyaWMpKSk7CisJCQkJCQkJCQkJCQkJCQkJCQkgIE51bWVyaWNHZXREYXR1 bShqYi0+bnVtZXJpYykpKTsKIAkJCQkJRXJyb3JTYXZlQ29udGV4dCBlc2NvbnRleHQgPSB7 VF9FcnJvclNhdmVDb250ZXh0fTsKIAogCQkJCQlub2VyciA9IERpcmVjdElucHV0RnVuY3Rp b25DYWxsU2FmZShpbnQ0aW4sIHRtcCwKQEAgLTEzNjksOCArMTM2OSw4IEBAIGV4ZWN1dGVJ dGVtT3B0VW53cmFwVGFyZ2V0KEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwgSnNvblBhdGhJ dGVtICpqc3AsCiAJCQkJZWxzZSBpZiAoamItPnR5cGUgPT0gamJ2U3RyaW5nKQogCQkJCXsK IAkJCQkJLyogY2FzdCBzdHJpbmcgYXMgYm9vbGVhbiAqLwotCQkJCQljaGFyCSAgICp0bXAg PSBwbnN0cmR1cChqYi0+dmFsLnN0cmluZy52YWwsCi0JCQkJCQkJCQkJCSAgIGpiLT52YWwu c3RyaW5nLmxlbik7CisJCQkJCWNoYXIJICAgKnRtcCA9IHBuc3RyZHVwKGpiLT5zdHJpbmcu dmFsLAorCQkJCQkJCQkJCQkgICBqYi0+c3RyaW5nLmxlbik7CiAKIAkJCQkJaWYgKCFwYXJz ZV9ib29sKHRtcCwgJmJ2YWwpKQogCQkJCQkJUkVUVVJOX0VSUk9SKGVyZXBvcnQoRVJST1Is CkBAIC0xMzg5LDcgKzEzODksNyBAQCBleGVjdXRlSXRlbU9wdFVud3JhcFRhcmdldChKc29u UGF0aEV4ZWNDb250ZXh0ICpjeHQsIEpzb25QYXRoSXRlbSAqanNwLAogCiAJCQkJamIgPSAm amJ2OwogCQkJCWpiLT50eXBlID0gamJ2Qm9vbDsKLQkJCQlqYi0+dmFsLmJvb2xlYW4gPSBi dmFsOworCQkJCWpiLT5ib29sZWFuID0gYnZhbDsKIAogCQkJCXJlcyA9IGV4ZWN1dGVOZXh0 SXRlbShjeHQsIGpzcCwgTlVMTCwgamIsIGZvdW5kLCB0cnVlKTsKIAkJCX0KQEAgLTE0MDgs NyArMTQwOCw3IEBAIGV4ZWN1dGVJdGVtT3B0VW53cmFwVGFyZ2V0KEpzb25QYXRoRXhlY0Nv bnRleHQgKmN4dCwgSnNvblBhdGhJdGVtICpqc3AsCiAKIAkJCQlpZiAoamItPnR5cGUgPT0g amJ2TnVtZXJpYykKIAkJCQl7Ci0JCQkJCW51bSA9IGpiLT52YWwubnVtZXJpYzsKKwkJCQkJ bnVtID0gamItPm51bWVyaWM7CiAJCQkJCWlmIChudW1lcmljX2lzX25hbihudW0pIHx8IG51 bWVyaWNfaXNfaW5mKG51bSkpCiAJCQkJCQlSRVRVUk5fRVJST1IoZXJlcG9ydChFUlJPUiwK IAkJCQkJCQkJCQkJIChlcnJjb2RlKEVSUkNPREVfTk9OX05VTUVSSUNfU1FMX0pTT05fSVRF TSksCkBAIC0xNDI3LDcgKzE0MjcsNyBAQCBleGVjdXRlSXRlbU9wdFVud3JhcFRhcmdldChK c29uUGF0aEV4ZWNDb250ZXh0ICpjeHQsIEpzb25QYXRoSXRlbSAqanNwLAogCQkJCQlib29s CQlub2VycjsKIAkJCQkJRXJyb3JTYXZlQ29udGV4dCBlc2NvbnRleHQgPSB7VF9FcnJvclNh dmVDb250ZXh0fTsKIAotCQkJCQludW1zdHIgPSBwbnN0cmR1cChqYi0+dmFsLnN0cmluZy52 YWwsIGpiLT52YWwuc3RyaW5nLmxlbik7CisJCQkJCW51bXN0ciA9IHBuc3RyZHVwKGpiLT5z dHJpbmcudmFsLCBqYi0+c3RyaW5nLmxlbik7CiAKIAkJCQkJbm9lcnIgPSBEaXJlY3RJbnB1 dEZ1bmN0aW9uQ2FsbFNhZmUobnVtZXJpY19pbiwgbnVtc3RyLAogCQkJCQkJCQkJCQkJCQlJ bnZhbGlkT2lkLCAtMSwKQEAgLTE0NjIsNyArMTQ2Miw3IEBAIGV4ZWN1dGVJdGVtT3B0VW53 cmFwVGFyZ2V0KEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwgSnNvblBhdGhJdGVtICpqc3As CiAJCQkJICogdHlwbW9kIGVxdWl2YWxlbnQgYW5kIHRoZW4gdHJ1bmNhdGUgdGhlIG51bWVy aWMgdmFsdWUgcGVyCiAJCQkJICogdGhpcyB0eXBtb2QgZGV0YWlscy4KIAkJCQkgKi8KLQkJ CQlpZiAoanNwLT50eXBlID09IGpwaURlY2ltYWwgJiYganNwLT5jb250ZW50LmFyZ3MubGVm dCkKKwkJCQlpZiAoanNwLT50eXBlID09IGpwaURlY2ltYWwgJiYganNwLT5hcmdzLmxlZnQp CiAJCQkJewogCQkJCQlEYXR1bQkJbnVtZGF0dW07CiAJCQkJCURhdHVtCQlkdHlwbW9kOwpA QCAtMTQ4Nyw3ICsxNDg3LDcgQEAgZXhlY3V0ZUl0ZW1PcHRVbndyYXBUYXJnZXQoSnNvblBh dGhFeGVjQ29udGV4dCAqY3h0LCBKc29uUGF0aEl0ZW0gKmpzcCwKIAkJCQkJCQkJCQkJICBl cnJtc2coInByZWNpc2lvbiBvZiBqc29ucGF0aCBpdGVtIG1ldGhvZCAuJXMoKSBpcyBvdXQg b2YgcmFuZ2UgZm9yIHR5cGUgaW50ZWdlciIsCiAJCQkJCQkJCQkJCQkJIGpzcE9wZXJhdGlv bk5hbWUoanNwLT50eXBlKSkpKSk7CiAKLQkJCQkJaWYgKGpzcC0+Y29udGVudC5hcmdzLnJp Z2h0KQorCQkJCQlpZiAoanNwLT5hcmdzLnJpZ2h0KQogCQkJCQl7CiAJCQkJCQlqc3BHZXRS aWdodEFyZyhqc3AsICZlbGVtKTsKIAkJCQkJCWlmIChlbGVtLnR5cGUgIT0ganBpTnVtZXJp YykKQEAgLTE1MzQsNyArMTUzNCw3IEBAIGV4ZWN1dGVJdGVtT3B0VW53cmFwVGFyZ2V0KEpz b25QYXRoRXhlY0NvbnRleHQgKmN4dCwgSnNvblBhdGhJdGVtICpqc3AsCiAKIAkJCQlqYiA9 ICZqYnY7CiAJCQkJamItPnR5cGUgPSBqYnZOdW1lcmljOwotCQkJCWpiLT52YWwubnVtZXJp YyA9IG51bTsKKwkJCQlqYi0+bnVtZXJpYyA9IG51bTsKIAogCQkJCXJlcyA9IGV4ZWN1dGVO ZXh0SXRlbShjeHQsIGpzcCwgTlVMTCwgamIsIGZvdW5kLCB0cnVlKTsKIAkJCX0KQEAgLTE1 NTQsMTQgKzE1NTQsMTQgQEAgZXhlY3V0ZUl0ZW1PcHRVbndyYXBUYXJnZXQoSnNvblBhdGhF eGVjQ29udGV4dCAqY3h0LCBKc29uUGF0aEl0ZW0gKmpzcCwKIAkJCQkJaW50MzIJCXZhbDsK IAkJCQkJRXJyb3JTYXZlQ29udGV4dCBlc2NvbnRleHQgPSB7VF9FcnJvclNhdmVDb250ZXh0 fTsKIAotCQkJCQl2YWwgPSBudW1lcmljX2ludDRfc2FmZShqYi0+dmFsLm51bWVyaWMsCisJ CQkJCXZhbCA9IG51bWVyaWNfaW50NF9zYWZlKGpiLT5udW1lcmljLAogCQkJCQkJCQkJCQko Tm9kZSAqKSAmZXNjb250ZXh0KTsKIAkJCQkJaWYgKGVzY29udGV4dC5lcnJvcl9vY2N1cnJl ZCkKIAkJCQkJCVJFVFVSTl9FUlJPUihlcmVwb3J0KEVSUk9SLAogCQkJCQkJCQkJCQkgKGVy cmNvZGUoRVJSQ09ERV9OT05fTlVNRVJJQ19TUUxfSlNPTl9JVEVNKSwKIAkJCQkJCQkJCQkJ ICBlcnJtc2coImFyZ3VtZW50IFwiJXNcIiBvZiBqc29ucGF0aCBpdGVtIG1ldGhvZCAuJXMo KSBpcyBpbnZhbGlkIGZvciB0eXBlICVzIiwKIAkJCQkJCQkJCQkJCQkgRGF0dW1HZXRDU3Ry aW5nKERpcmVjdEZ1bmN0aW9uQ2FsbDEobnVtZXJpY19vdXQsCi0JCQkJCQkJCQkJCQkJCQkJ CQkJCQkJIE51bWVyaWNHZXREYXR1bShqYi0+dmFsLm51bWVyaWMpKSksCisJCQkJCQkJCQkJ CQkJCQkJCQkJCQkJIE51bWVyaWNHZXREYXR1bShqYi0+bnVtZXJpYykpKSwKIAkJCQkJCQkJ CQkJCQkganNwT3BlcmF0aW9uTmFtZShqc3AtPnR5cGUpLCAiaW50ZWdlciIpKSkpOwogCiAJ CQkJCWRhdHVtID0gSW50MzJHZXREYXR1bSh2YWwpOwpAQCAtMTU3MCw4ICsxNTcwLDggQEAg ZXhlY3V0ZUl0ZW1PcHRVbndyYXBUYXJnZXQoSnNvblBhdGhFeGVjQ29udGV4dCAqY3h0LCBK c29uUGF0aEl0ZW0gKmpzcCwKIAkJCQllbHNlIGlmIChqYi0+dHlwZSA9PSBqYnZTdHJpbmcp CiAJCQkJewogCQkJCQkvKiBjYXN0IHN0cmluZyBhcyBpbnRlZ2VyICovCi0JCQkJCWNoYXIJ ICAgKnRtcCA9IHBuc3RyZHVwKGpiLT52YWwuc3RyaW5nLnZhbCwKLQkJCQkJCQkJCQkJICAg amItPnZhbC5zdHJpbmcubGVuKTsKKwkJCQkJY2hhcgkgICAqdG1wID0gcG5zdHJkdXAoamIt PnN0cmluZy52YWwsCisJCQkJCQkJCQkJCSAgIGpiLT5zdHJpbmcubGVuKTsKIAkJCQkJRXJy b3JTYXZlQ29udGV4dCBlc2NvbnRleHQgPSB7VF9FcnJvclNhdmVDb250ZXh0fTsKIAkJCQkJ Ym9vbAkJbm9lcnI7CiAKQEAgLTE1OTYsOCArMTU5Niw4IEBAIGV4ZWN1dGVJdGVtT3B0VW53 cmFwVGFyZ2V0KEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwgSnNvblBhdGhJdGVtICpqc3As CiAKIAkJCQlqYiA9ICZqYnY7CiAJCQkJamItPnR5cGUgPSBqYnZOdW1lcmljOwotCQkJCWpi LT52YWwubnVtZXJpYyA9IERhdHVtR2V0TnVtZXJpYyhEaXJlY3RGdW5jdGlvbkNhbGwxKGlu dDRfbnVtZXJpYywKLQkJCQkJCQkJCQkJCQkJCQkJICBkYXR1bSkpOworCQkJCWpiLT5udW1l cmljID0gRGF0dW1HZXROdW1lcmljKERpcmVjdEZ1bmN0aW9uQ2FsbDEoaW50NF9udW1lcmlj LAorCQkJCQkJCQkJCQkJCQkJCSAgZGF0dW0pKTsKIAogCQkJCXJlcyA9IGV4ZWN1dGVOZXh0 SXRlbShjeHQsIGpzcCwgTlVMTCwgamIsIGZvdW5kLCB0cnVlKTsKIAkJCX0KQEAgLTE2MTks MjQgKzE2MTksMjQgQEAgZXhlY3V0ZUl0ZW1PcHRVbndyYXBUYXJnZXQoSnNvblBhdGhFeGVj Q29udGV4dCAqY3h0LCBKc29uUGF0aEl0ZW0gKmpzcCwKIAkJCQkJCSAqIFZhbHVlIGlzIG5v dCBuZWNlc3NhcmlseSBudWxsLXRlcm1pbmF0ZWQsIHNvIHdlIGRvCiAJCQkJCQkgKiBwbnN0 cmR1cCgpIGhlcmUuCiAJCQkJCQkgKi8KLQkJCQkJCXRtcCA9IHBuc3RyZHVwKGpiLT52YWwu c3RyaW5nLnZhbCwKLQkJCQkJCQkJCSAgIGpiLT52YWwuc3RyaW5nLmxlbik7CisJCQkJCQl0 bXAgPSBwbnN0cmR1cChqYi0+c3RyaW5nLnZhbCwKKwkJCQkJCQkJCSAgIGpiLT5zdHJpbmcu bGVuKTsKIAkJCQkJCWJyZWFrOwogCQkJCQljYXNlIGpidk51bWVyaWM6CiAJCQkJCQl0bXAg PSBEYXR1bUdldENTdHJpbmcoRGlyZWN0RnVuY3Rpb25DYWxsMShudW1lcmljX291dCwKLQkJ CQkJCQkJCQkJCQkJCQkgIE51bWVyaWNHZXREYXR1bShqYi0+dmFsLm51bWVyaWMpKSk7CisJ CQkJCQkJCQkJCQkJCQkJICBOdW1lcmljR2V0RGF0dW0oamItPm51bWVyaWMpKSk7CiAJCQkJ CQlicmVhazsKIAkJCQkJY2FzZSBqYnZCb29sOgotCQkJCQkJdG1wID0gKGpiLT52YWwuYm9v bGVhbikgPyAidHJ1ZSIgOiAiZmFsc2UiOworCQkJCQkJdG1wID0gKGpiLT5ib29sZWFuKSA/ ICJ0cnVlIiA6ICJmYWxzZSI7CiAJCQkJCQlicmVhazsKIAkJCQkJY2FzZSBqYnZEYXRldGlt ZToKIAkJCQkJCXsKIAkJCQkJCQljaGFyCQlidWZbTUFYREFURUxFTiArIDFdOwogCiAJCQkJ CQkJSnNvbkVuY29kZURhdGVUaW1lKGJ1ZiwKLQkJCQkJCQkJCQkJICAgamItPnZhbC5kYXRl dGltZS52YWx1ZSwKLQkJCQkJCQkJCQkJICAgamItPnZhbC5kYXRldGltZS50eXBpZCwKLQkJ CQkJCQkJCQkJICAgJmpiLT52YWwuZGF0ZXRpbWUudHopOworCQkJCQkJCQkJCQkgICBqYi0+ ZGF0ZXRpbWUudmFsdWUsCisJCQkJCQkJCQkJCSAgIGpiLT5kYXRldGltZS50eXBpZCwKKwkJ CQkJCQkJCQkJICAgJmpiLT5kYXRldGltZS50eik7CiAJCQkJCQkJdG1wID0gcHN0cmR1cChi dWYpOwogCQkJCQkJfQogCQkJCQkJYnJlYWs7CkBAIC0xNjUzLDggKzE2NTMsOCBAQCBleGVj dXRlSXRlbU9wdFVud3JhcFRhcmdldChKc29uUGF0aEV4ZWNDb250ZXh0ICpjeHQsIEpzb25Q YXRoSXRlbSAqanNwLAogCiAJCQkJamIgPSAmamJ2OwogCQkJCUFzc2VydCh0bXAgIT0gTlVM TCk7CS8qIFdlIG11c3QgaGF2ZSBzZXQgdG1wIGFib3ZlICovCi0JCQkJamItPnZhbC5zdHJp bmcudmFsID0gdG1wOwotCQkJCWpiLT52YWwuc3RyaW5nLmxlbiA9IHN0cmxlbihqYi0+dmFs LnN0cmluZy52YWwpOworCQkJCWpiLT5zdHJpbmcudmFsID0gdG1wOworCQkJCWpiLT5zdHJp bmcubGVuID0gc3RybGVuKGpiLT5zdHJpbmcudmFsKTsKIAkJCQlqYi0+dHlwZSA9IGpidlN0 cmluZzsKIAogCQkJCXJlcyA9IGV4ZWN1dGVOZXh0SXRlbShjeHQsIGpzcCwgTlVMTCwgamIs IGZvdW5kLCB0cnVlKTsKQEAgLTE2ODMsNyArMTY4Myw3IEBAIGV4ZWN1dGVJdGVtVW53cmFw VGFyZ2V0QXJyYXkoSnNvblBhdGhFeGVjQ29udGV4dCAqY3h0LCBKc29uUGF0aEl0ZW0gKmpz cCwKIAl9CiAKIAlyZXR1cm4gZXhlY3V0ZUFueUl0ZW0KLQkJKGN4dCwganNwLCBqYi0+dmFs LmJpbmFyeS5kYXRhLCBmb3VuZCwgMSwgMSwgMSwKKwkJKGN4dCwganNwLCBqYi0+YmluYXJ5 LmRhdGEsIGZvdW5kLCAxLCAxLCAxLAogCQkgZmFsc2UsIHVud3JhcEVsZW1lbnRzKTsKIH0K IApAQCAtMTg2Myw3ICsxODYzLDcgQEAgZXhlY3V0ZUJvb2xJdGVtKEpzb25QYXRoRXhlY0Nv bnRleHQgKmN4dCwgSnNvblBhdGhJdGVtICpqc3AsCiAJCQkJSnNvbkxpa2VSZWdleENvbnRl eHQgbHJjeHQgPSB7MH07CiAKIAkJCQlqc3BJbml0QnlCdWZmZXIoJmxhcmcsIGpzcC0+YmFz ZSwKLQkJCQkJCQkJanNwLT5jb250ZW50Lmxpa2VfcmVnZXguZXhwcik7CisJCQkJCQkJCWpz cC0+bGlrZV9yZWdleC5leHByKTsKIAogCQkJCXJldHVybiBleGVjdXRlUHJlZGljYXRlKGN4 dCwganNwLCAmbGFyZywgTlVMTCwgamIsIGZhbHNlLAogCQkJCQkJCQkJCWV4ZWN1dGVMaWtl UmVnZXgsICZscmN4dCk7CkBAIC0xOTk2LDcgKzE5OTYsNyBAQCBleGVjdXRlQW55SXRlbShK c29uUGF0aEV4ZWNDb250ZXh0ICpjeHQsIEpzb25QYXRoSXRlbSAqanNwLCBKc29uYkNvbnRh aW5lciAqamJjLAogCQkJaWYgKGxldmVsIDwgbGFzdCAmJiB2LnR5cGUgPT0gamJ2QmluYXJ5 KQogCQkJewogCQkJCXJlcyA9IGV4ZWN1dGVBbnlJdGVtCi0JCQkJCShjeHQsIGpzcCwgdi52 YWwuYmluYXJ5LmRhdGEsIGZvdW5kLAorCQkJCQkoY3h0LCBqc3AsIHYuYmluYXJ5LmRhdGEs IGZvdW5kLAogCQkJCQkgbGV2ZWwgKyAxLCBmaXJzdCwgbGFzdCwKIAkJCQkJIGlnbm9yZVN0 cnVjdHVyYWxFcnJvcnMsIHVud3JhcE5leHQpOwogCkBAIC0yMTQ3LDEzICsyMTQ3LDEzIEBA IGV4ZWN1dGVCaW5hcnlBcml0aG1FeHByKEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwgSnNv blBhdGhJdGVtICpqc3AsCiAKIAlpZiAoanNwVGhyb3dFcnJvcnMoY3h0KSkKIAl7Ci0JCXJl cyA9IGZ1bmMobHZhbC0+dmFsLm51bWVyaWMsIHJ2YWwtPnZhbC5udW1lcmljLCBOVUxMKTsK KwkJcmVzID0gZnVuYyhsdmFsLT5udW1lcmljLCBydmFsLT5udW1lcmljLCBOVUxMKTsKIAl9 CiAJZWxzZQogCXsKIAkJRXJyb3JTYXZlQ29udGV4dCBlc2NvbnRleHQgPSB7VF9FcnJvclNh dmVDb250ZXh0fTsKIAotCQlyZXMgPSBmdW5jKGx2YWwtPnZhbC5udW1lcmljLCBydmFsLT52 YWwubnVtZXJpYywgKE5vZGUgKikgJmVzY29udGV4dCk7CisJCXJlcyA9IGZ1bmMobHZhbC0+ bnVtZXJpYywgcnZhbC0+bnVtZXJpYywgKE5vZGUgKikgJmVzY29udGV4dCk7CiAKIAkJaWYg KGVzY29udGV4dC5lcnJvcl9vY2N1cnJlZCkKIAkJCXJldHVybiBqcGVyRXJyb3I7CkBAIC0y MTY0LDcgKzIxNjQsNyBAQCBleGVjdXRlQmluYXJ5QXJpdGhtRXhwcihKc29uUGF0aEV4ZWND b250ZXh0ICpjeHQsIEpzb25QYXRoSXRlbSAqanNwLAogCiAJbHZhbCA9IHBhbGxvYyhzaXpl b2YoKmx2YWwpKTsKIAlsdmFsLT50eXBlID0gamJ2TnVtZXJpYzsKLQlsdmFsLT52YWwubnVt ZXJpYyA9IHJlczsKKwlsdmFsLT5udW1lcmljID0gcmVzOwogCiAJcmV0dXJuIGV4ZWN1dGVO ZXh0SXRlbShjeHQsIGpzcCwgJmVsZW0sIGx2YWwsIGZvdW5kLCBmYWxzZSk7CiB9CkBAIC0y MjE1LDkgKzIyMTUsOSBAQCBleGVjdXRlVW5hcnlBcml0aG1FeHByKEpzb25QYXRoRXhlY0Nv bnRleHQgKmN4dCwgSnNvblBhdGhJdGVtICpqc3AsCiAJCX0KIAogCQlpZiAoZnVuYykKLQkJ CXZhbC0+dmFsLm51bWVyaWMgPQorCQkJdmFsLT5udW1lcmljID0KIAkJCQlEYXR1bUdldE51 bWVyaWMoRGlyZWN0RnVuY3Rpb25DYWxsMShmdW5jLAotCQkJCQkJCQkJCQkJCU51bWVyaWNH ZXREYXR1bSh2YWwtPnZhbC5udW1lcmljKSkpOworCQkJCQkJCQkJCQkJCU51bWVyaWNHZXRE YXR1bSh2YWwtPm51bWVyaWMpKSk7CiAKIAkJanBlcjIgPSBleGVjdXRlTmV4dEl0ZW0oY3h0 LCBqc3AsICZlbGVtLCB2YWwsIGZvdW5kLCBmYWxzZSk7CiAKQEAgLTIyNTAsMTAgKzIyNTAs MTAgQEAgZXhlY3V0ZVN0YXJ0c1dpdGgoSnNvblBhdGhJdGVtICpqc3AsIEpzb25iVmFsdWUg Kndob2xlLCBKc29uYlZhbHVlICppbml0aWFsLAogCWlmICghKGluaXRpYWwgPSBnZXRTY2Fs YXIoaW5pdGlhbCwgamJ2U3RyaW5nKSkpCiAJCXJldHVybiBqcGJVbmtub3duOwkJLyogZXJy b3IgKi8KIAotCWlmICh3aG9sZS0+dmFsLnN0cmluZy5sZW4gPj0gaW5pdGlhbC0+dmFsLnN0 cmluZy5sZW4gJiYKLQkJIW1lbWNtcCh3aG9sZS0+dmFsLnN0cmluZy52YWwsCi0JCQkJaW5p dGlhbC0+dmFsLnN0cmluZy52YWwsCi0JCQkJaW5pdGlhbC0+dmFsLnN0cmluZy5sZW4pKQor CWlmICh3aG9sZS0+c3RyaW5nLmxlbiA+PSBpbml0aWFsLT5zdHJpbmcubGVuICYmCisJCSFt ZW1jbXAod2hvbGUtPnN0cmluZy52YWwsCisJCQkJaW5pdGlhbC0+c3RyaW5nLnZhbCwKKwkJ CQlpbml0aWFsLT5zdHJpbmcubGVuKSkKIAkJcmV0dXJuIGpwYlRydWU7CiAKIAlyZXR1cm4g anBiRmFsc2U7CkBAIC0yMjc3LDE0ICsyMjc3LDE0IEBAIGV4ZWN1dGVMaWtlUmVnZXgoSnNv blBhdGhJdGVtICpqc3AsIEpzb25iVmFsdWUgKnN0ciwgSnNvbmJWYWx1ZSAqcmFyZywKIAlp ZiAoIWN4dC0+cmVnZXgpCiAJewogCQljeHQtPnJlZ2V4ID0KLQkJCWNzdHJpbmdfdG9fdGV4 dF93aXRoX2xlbihqc3AtPmNvbnRlbnQubGlrZV9yZWdleC5wYXR0ZXJuLAotCQkJCQkJCQkJ IGpzcC0+Y29udGVudC5saWtlX3JlZ2V4LnBhdHRlcm5sZW4pOwotCQkodm9pZCkganNwQ29u dmVydFJlZ2V4RmxhZ3MoanNwLT5jb250ZW50Lmxpa2VfcmVnZXguZmxhZ3MsCisJCQljc3Ry aW5nX3RvX3RleHRfd2l0aF9sZW4oanNwLT5saWtlX3JlZ2V4LnBhdHRlcm4sCisJCQkJCQkJ CQkganNwLT5saWtlX3JlZ2V4LnBhdHRlcm5sZW4pOworCQkodm9pZCkganNwQ29udmVydFJl Z2V4RmxhZ3MoanNwLT5saWtlX3JlZ2V4LmZsYWdzLAogCQkJCQkJCQkJJihjeHQtPmNmbGFn cyksIE5VTEwpOwogCX0KIAotCWlmIChSRV9jb21waWxlX2FuZF9leGVjdXRlKGN4dC0+cmVn ZXgsIHN0ci0+dmFsLnN0cmluZy52YWwsCi0JCQkJCQkJICAgc3RyLT52YWwuc3RyaW5nLmxl biwKKwlpZiAoUkVfY29tcGlsZV9hbmRfZXhlY3V0ZShjeHQtPnJlZ2V4LCBzdHItPnN0cmlu Zy52YWwsCisJCQkJCQkJICAgc3RyLT5zdHJpbmcubGVuLAogCQkJCQkJCSAgIGN4dC0+Y2Zs YWdzLCBERUZBVUxUX0NPTExBVElPTl9PSUQsIDAsIE5VTEwpKQogCQlyZXR1cm4ganBiVHJ1 ZTsKIApAQCAtMjMxMiwxNCArMjMxMiwxNCBAQCBleGVjdXRlTnVtZXJpY0l0ZW1NZXRob2Qo SnNvblBhdGhFeGVjQ29udGV4dCAqY3h0LCBKc29uUGF0aEl0ZW0gKmpzcCwKIAkJCQkJCQkg IGVycm1zZygianNvbnBhdGggaXRlbSBtZXRob2QgLiVzKCkgY2FuIG9ubHkgYmUgYXBwbGll ZCB0byBhIG51bWVyaWMgdmFsdWUiLAogCQkJCQkJCQkJIGpzcE9wZXJhdGlvbk5hbWUoanNw LT50eXBlKSkpKSk7CiAKLQlkYXR1bSA9IERpcmVjdEZ1bmN0aW9uQ2FsbDEoZnVuYywgTnVt ZXJpY0dldERhdHVtKGpiLT52YWwubnVtZXJpYykpOworCWRhdHVtID0gRGlyZWN0RnVuY3Rp b25DYWxsMShmdW5jLCBOdW1lcmljR2V0RGF0dW0oamItPm51bWVyaWMpKTsKIAogCWlmICgh anNwR2V0TmV4dChqc3AsICZuZXh0KSAmJiAhZm91bmQpCiAJCXJldHVybiBqcGVyT2s7CiAK IAlqYiA9IHBhbGxvYyhzaXplb2YoKmpiKSk7CiAJamItPnR5cGUgPSBqYnZOdW1lcmljOwot CWpiLT52YWwubnVtZXJpYyA9IERhdHVtR2V0TnVtZXJpYyhkYXR1bSk7CisJamItPm51bWVy aWMgPSBEYXR1bUdldE51bWVyaWMoZGF0dW0pOwogCiAJcmV0dXJuIGV4ZWN1dGVOZXh0SXRl bShjeHQsIGpzcCwgJm5leHQsIGpiLCBmb3VuZCwgZmFsc2UpOwogfQpAQCAtMjM1OCw4ICsy MzU4LDggQEAgZXhlY3V0ZURhdGVUaW1lTWV0aG9kKEpzb25QYXRoRXhlY0NvbnRleHQgKmN4 dCwgSnNvblBhdGhJdGVtICpqc3AsCiAJCQkJCQkJICBlcnJtc2coImpzb25wYXRoIGl0ZW0g bWV0aG9kIC4lcygpIGNhbiBvbmx5IGJlIGFwcGxpZWQgdG8gYSBzdHJpbmciLAogCQkJCQkJ CQkJIGpzcE9wZXJhdGlvbk5hbWUoanNwLT50eXBlKSkpKSk7CiAKLQlkYXRldGltZSA9IGNz dHJpbmdfdG9fdGV4dF93aXRoX2xlbihqYi0+dmFsLnN0cmluZy52YWwsCi0JCQkJCQkJCQkJ amItPnZhbC5zdHJpbmcubGVuKTsKKwlkYXRldGltZSA9IGNzdHJpbmdfdG9fdGV4dF93aXRo X2xlbihqYi0+c3RyaW5nLnZhbCwKKwkJCQkJCQkJCQlqYi0+c3RyaW5nLmxlbik7CiAKIAkv KgogCSAqIEF0IHNvbWUgcG9pbnQgd2UgbWlnaHQgd2lzaCB0byBoYXZlIGNhbGxlcnMgc3Vw cGx5IHRoZSBjb2xsYXRpb24gdG8KQEAgLTIzNzIsNyArMjM3Miw3IEBAIGV4ZWN1dGVEYXRl VGltZU1ldGhvZChKc29uUGF0aEV4ZWNDb250ZXh0ICpjeHQsIEpzb25QYXRoSXRlbSAqanNw LAogCSAqIC5kYXRldGltZSh0ZW1wbGF0ZSkgaGFzIGFuIGFyZ3VtZW50LCB0aGUgcmVzdCBv ZiB0aGUgbWV0aG9kcyBkb24ndCBoYXZlCiAJICogYW4gYXJndW1lbnQuICBTbyB3ZSBoYW5k bGUgdGhhdCBzZXBhcmF0ZWx5LgogCSAqLwotCWlmIChqc3AtPnR5cGUgPT0ganBpRGF0ZXRp bWUgJiYganNwLT5jb250ZW50LmFyZykKKwlpZiAoanNwLT50eXBlID09IGpwaURhdGV0aW1l ICYmIGpzcC0+YXJnKQogCXsKIAkJdGV4dAkgICAqdGVtcGxhdGU7CiAJCWNoYXIJICAgKnRl bXBsYXRlX3N0cjsKQEAgLTI0MzMsNyArMjQzMyw3IEBAIGV4ZWN1dGVEYXRlVGltZU1ldGhv ZChKc29uUGF0aEV4ZWNDb250ZXh0ICpjeHQsIEpzb25QYXRoSXRlbSAqanNwLAogCQkgKiAu ZGF0ZSgpCiAJCSAqLwogCQlpZiAoanNwLT50eXBlICE9IGpwaURhdGV0aW1lICYmIGpzcC0+ dHlwZSAhPSBqcGlEYXRlICYmCi0JCQlqc3AtPmNvbnRlbnQuYXJnKQorCQkJanNwLT5hcmcp CiAJCXsKIAkJCUVycm9yU2F2ZUNvbnRleHQgZXNjb250ZXh0ID0ge1RfRXJyb3JTYXZlQ29u dGV4dH07CiAKQEAgLTI3ODYsMTAgKzI3ODYsMTAgQEAgZXhlY3V0ZURhdGVUaW1lTWV0aG9k KEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwgSnNvblBhdGhJdGVtICpqc3AsCiAJamIgPSBo YXNOZXh0ID8gJmpidmJ1ZiA6IHBhbGxvYyhzaXplb2YoKmpiKSk7CiAKIAlqYi0+dHlwZSA9 IGpidkRhdGV0aW1lOwotCWpiLT52YWwuZGF0ZXRpbWUudmFsdWUgPSB2YWx1ZTsKLQlqYi0+ dmFsLmRhdGV0aW1lLnR5cGlkID0gdHlwaWQ7Ci0JamItPnZhbC5kYXRldGltZS50eXBtb2Qg PSB0eXBtb2Q7Ci0JamItPnZhbC5kYXRldGltZS50eiA9IHR6OworCWpiLT5kYXRldGltZS52 YWx1ZSA9IHZhbHVlOworCWpiLT5kYXRldGltZS50eXBpZCA9IHR5cGlkOworCWpiLT5kYXRl dGltZS50eXBtb2QgPSB0eXBtb2Q7CisJamItPmRhdGV0aW1lLnR6ID0gdHo7CiAKIAlyZXR1 cm4gZXhlY3V0ZU5leHRJdGVtKGN4dCwganNwLCAmZWxlbSwgamIsIGZvdW5kLCBoYXNOZXh0 KTsKIH0KQEAgLTI4NDEsNyArMjg0MSw3IEBAIGV4ZWN1dGVLZXlWYWx1ZU1ldGhvZChKc29u UGF0aEV4ZWNDb250ZXh0ICpjeHQsIEpzb25QYXRoSXRlbSAqanNwLAogCQkJCQkJCSAgZXJy bXNnKCJqc29ucGF0aCBpdGVtIG1ldGhvZCAuJXMoKSBjYW4gb25seSBiZSBhcHBsaWVkIHRv IGFuIG9iamVjdCIsCiAJCQkJCQkJCQkganNwT3BlcmF0aW9uTmFtZShqc3AtPnR5cGUpKSkp KTsKIAotCWpiYyA9IGpiLT52YWwuYmluYXJ5LmRhdGE7CisJamJjID0gamItPmJpbmFyeS5k YXRhOwogCiAJaWYgKCFKc29uQ29udGFpbmVyU2l6ZShqYmMpKQogCQlyZXR1cm4ganBlck5v dEZvdW5kOwkvKiBubyBrZXktdmFsdWUgcGFpcnMgKi8KQEAgLTI4NDksMTYgKzI4NDksMTYg QEAgZXhlY3V0ZUtleVZhbHVlTWV0aG9kKEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwgSnNv blBhdGhJdGVtICpqc3AsCiAJaGFzTmV4dCA9IGpzcEdldE5leHQoanNwLCAmbmV4dCk7CiAK IAlrZXlzdHIudHlwZSA9IGpidlN0cmluZzsKLQlrZXlzdHIudmFsLnN0cmluZy52YWwgPSAi a2V5IjsKLQlrZXlzdHIudmFsLnN0cmluZy5sZW4gPSAzOworCWtleXN0ci5zdHJpbmcudmFs ID0gImtleSI7CisJa2V5c3RyLnN0cmluZy5sZW4gPSAzOwogCiAJdmFsc3RyLnR5cGUgPSBq YnZTdHJpbmc7Ci0JdmFsc3RyLnZhbC5zdHJpbmcudmFsID0gInZhbHVlIjsKLQl2YWxzdHIu dmFsLnN0cmluZy5sZW4gPSA1OworCXZhbHN0ci5zdHJpbmcudmFsID0gInZhbHVlIjsKKwl2 YWxzdHIuc3RyaW5nLmxlbiA9IDU7CiAKIAlpZHN0ci50eXBlID0gamJ2U3RyaW5nOwotCWlk c3RyLnZhbC5zdHJpbmcudmFsID0gImlkIjsKLQlpZHN0ci52YWwuc3RyaW5nLmxlbiA9IDI7 CisJaWRzdHIuc3RyaW5nLnZhbCA9ICJpZCI7CisJaWRzdHIuc3RyaW5nLmxlbiA9IDI7CiAK IAkvKiBjb25zdHJ1Y3Qgb2JqZWN0IGlkIGZyb20gaXRzIGJhc2Ugb2JqZWN0IGFuZCBvZmZz ZXQgaW5zaWRlIHRoYXQgKi8KIAlpZCA9IGpiLT50eXBlICE9IGpidkJpbmFyeSA/IDAgOgpA QCAtMjg2Niw3ICsyODY2LDcgQEAgZXhlY3V0ZUtleVZhbHVlTWV0aG9kKEpzb25QYXRoRXhl Y0NvbnRleHQgKmN4dCwgSnNvblBhdGhJdGVtICpqc3AsCiAJaWQgKz0gKGludDY0KSBjeHQt PmJhc2VPYmplY3QuaWQgKiBJTlQ2NENPTlNUKDEwMDAwMDAwMDAwKTsKIAogCWlkdmFsLnR5 cGUgPSBqYnZOdW1lcmljOwotCWlkdmFsLnZhbC5udW1lcmljID0gaW50NjRfdG9fbnVtZXJp YyhpZCk7CisJaWR2YWwubnVtZXJpYyA9IGludDY0X3RvX251bWVyaWMoaWQpOwogCiAJaXQg PSBKc29uYkl0ZXJhdG9ySW5pdChqYmMpOwogCkBAIC0yOTQ0LDcgKzI5NDQsNyBAQCBhcHBl bmRCb29sUmVzdWx0KEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwgSnNvblBhdGhJdGVtICpq c3AsCiAJZWxzZQogCXsKIAkJamJ2LnR5cGUgPSBqYnZCb29sOwotCQlqYnYudmFsLmJvb2xl YW4gPSByZXMgPT0ganBiVHJ1ZTsKKwkJamJ2LmJvb2xlYW4gPSByZXMgPT0ganBiVHJ1ZTsK IAl9CiAKIAlyZXR1cm4gZXhlY3V0ZU5leHRJdGVtKGN4dCwganNwLCAmbmV4dCwgJmpidiwg Zm91bmQsIHRydWUpOwpAQCAtMjk2NiwxNiArMjk2NiwxNiBAQCBnZXRKc29uUGF0aEl0ZW0o SnNvblBhdGhFeGVjQ29udGV4dCAqY3h0LCBKc29uUGF0aEl0ZW0gKml0ZW0sCiAJCQlicmVh azsKIAkJY2FzZSBqcGlCb29sOgogCQkJdmFsdWUtPnR5cGUgPSBqYnZCb29sOwotCQkJdmFs dWUtPnZhbC5ib29sZWFuID0ganNwR2V0Qm9vbChpdGVtKTsKKwkJCXZhbHVlLT5ib29sZWFu ID0ganNwR2V0Qm9vbChpdGVtKTsKIAkJCWJyZWFrOwogCQljYXNlIGpwaU51bWVyaWM6CiAJ CQl2YWx1ZS0+dHlwZSA9IGpidk51bWVyaWM7Ci0JCQl2YWx1ZS0+dmFsLm51bWVyaWMgPSBq c3BHZXROdW1lcmljKGl0ZW0pOworCQkJdmFsdWUtPm51bWVyaWMgPSBqc3BHZXROdW1lcmlj KGl0ZW0pOwogCQkJYnJlYWs7CiAJCWNhc2UganBpU3RyaW5nOgogCQkJdmFsdWUtPnR5cGUg PSBqYnZTdHJpbmc7Ci0JCQl2YWx1ZS0+dmFsLnN0cmluZy52YWwgPSBqc3BHZXRTdHJpbmco aXRlbSwKLQkJCQkJCQkJCQkJCSAmdmFsdWUtPnZhbC5zdHJpbmcubGVuKTsKKwkJCXZhbHVl LT5zdHJpbmcudmFsID0ganNwR2V0U3RyaW5nKGl0ZW0sCisJCQkJCQkJCQkJCSAmdmFsdWUt PnN0cmluZy5sZW4pOwogCQkJYnJlYWs7CiAJCWNhc2UganBpVmFyaWFibGU6CiAJCQlnZXRK c29uUGF0aFZhcmlhYmxlKGN4dCwgaXRlbSwgdmFsdWUpOwpAQCAtMzA1Myw3ICszMDUzLDcg QEAgSnNvbkl0ZW1Gcm9tRGF0dW0oRGF0dW0gdmFsLCBPaWQgdHlwaWQsIGludDMyIHR5cG1v ZCwgSnNvbmJWYWx1ZSAqcmVzKQogCXsKIAkJY2FzZSBCT09MT0lEOgogCQkJcmVzLT50eXBl ID0gamJ2Qm9vbDsKLQkJCXJlcy0+dmFsLmJvb2xlYW4gPSBEYXR1bUdldEJvb2wodmFsKTsK KwkJCXJlcy0+Ym9vbGVhbiA9IERhdHVtR2V0Qm9vbCh2YWwpOwogCQkJYnJlYWs7CiAJCWNh c2UgTlVNRVJJQ09JRDoKIAkJCUpzb25iVmFsdWVJbml0TnVtZXJpY0RhdHVtKHJlcywgdmFs KTsKQEAgLTMwNzYsOCArMzA3Niw4IEBAIEpzb25JdGVtRnJvbURhdHVtKERhdHVtIHZhbCwg T2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QsIEpzb25iVmFsdWUgKnJlcykKIAkJY2FzZSBURVhU T0lEOgogCQljYXNlIFZBUkNIQVJPSUQ6CiAJCQlyZXMtPnR5cGUgPSBqYnZTdHJpbmc7Ci0J CQlyZXMtPnZhbC5zdHJpbmcudmFsID0gVkFSREFUQV9BTlkoRGF0dW1HZXRQb2ludGVyKHZh bCkpOwotCQkJcmVzLT52YWwuc3RyaW5nLmxlbiA9IFZBUlNJWkVfQU5ZX0VYSERSKERhdHVt R2V0UG9pbnRlcih2YWwpKTsKKwkJCXJlcy0+c3RyaW5nLnZhbCA9IFZBUkRBVEFfQU5ZKERh dHVtR2V0UG9pbnRlcih2YWwpKTsKKwkJCXJlcy0+c3RyaW5nLmxlbiA9IFZBUlNJWkVfQU5Z X0VYSERSKERhdHVtR2V0UG9pbnRlcih2YWwpKTsKIAkJCWJyZWFrOwogCQljYXNlIERBVEVP SUQ6CiAJCWNhc2UgVElNRU9JRDoKQEAgLTMwODUsMTAgKzMwODUsMTAgQEAgSnNvbkl0ZW1G cm9tRGF0dW0oRGF0dW0gdmFsLCBPaWQgdHlwaWQsIGludDMyIHR5cG1vZCwgSnNvbmJWYWx1 ZSAqcmVzKQogCQljYXNlIFRJTUVTVEFNUE9JRDoKIAkJY2FzZSBUSU1FU1RBTVBUWk9JRDoK IAkJCXJlcy0+dHlwZSA9IGpidkRhdGV0aW1lOwotCQkJcmVzLT52YWwuZGF0ZXRpbWUudmFs dWUgPSB2YWw7Ci0JCQlyZXMtPnZhbC5kYXRldGltZS50eXBpZCA9IHR5cGlkOwotCQkJcmVz LT52YWwuZGF0ZXRpbWUudHlwbW9kID0gdHlwbW9kOwotCQkJcmVzLT52YWwuZGF0ZXRpbWUu dHogPSAwOworCQkJcmVzLT5kYXRldGltZS52YWx1ZSA9IHZhbDsKKwkJCXJlcy0+ZGF0ZXRp bWUudHlwaWQgPSB0eXBpZDsKKwkJCXJlcy0+ZGF0ZXRpbWUudHlwbW9kID0gdHlwbW9kOwor CQkJcmVzLT5kYXRldGltZS50eiA9IDA7CiAJCQlicmVhazsKIAkJY2FzZSBKU09OQk9JRDoK IAkJCXsKQEAgLTMxMzIsNyArMzEzMiw3IEBAIHN0YXRpYyB2b2lkCiBKc29uYlZhbHVlSW5p dE51bWVyaWNEYXR1bShKc29uYlZhbHVlICpqYnYsIERhdHVtIG51bSkKIHsKIAlqYnYtPnR5 cGUgPSBqYnZOdW1lcmljOwotCWpidi0+dmFsLm51bWVyaWMgPSBEYXR1bUdldE51bWVyaWMo bnVtKTsKKwlqYnYtPm51bWVyaWMgPSBEYXR1bUdldE51bWVyaWMobnVtKTsKIH0KIAogLyoK QEAgLTMxNzksOCArMzE3OSw4IEBAIGdldEpzb25QYXRoVmFyaWFibGVGcm9tSnNvbmIodm9p ZCAqdmFyc0pzb25iLCBjaGFyICp2YXJOYW1lLCBpbnQgdmFyTmFtZUxlbmd0aCwKIAlKc29u YlZhbHVlICpyZXN1bHQ7CiAKIAl0bXAudHlwZSA9IGpidlN0cmluZzsKLQl0bXAudmFsLnN0 cmluZy52YWwgPSB2YXJOYW1lOwotCXRtcC52YWwuc3RyaW5nLmxlbiA9IHZhck5hbWVMZW5n dGg7CisJdG1wLnN0cmluZy52YWwgPSB2YXJOYW1lOworCXRtcC5zdHJpbmcubGVuID0gdmFy TmFtZUxlbmd0aDsKIAogCXJlc3VsdCA9IGZpbmRKc29uYlZhbHVlRnJvbUNvbnRhaW5lcigm dmFycy0+cm9vdCwgSkJfRk9CSkVDVCwgJnRtcCk7CiAKQEAgLTMyMjksNyArMzIyOSw3IEBA IEpzb25iQXJyYXlTaXplKEpzb25iVmFsdWUgKmpiKQogCiAJaWYgKGpiLT50eXBlID09IGpi dkJpbmFyeSkKIAl7Ci0JCUpzb25iQ29udGFpbmVyICpqYmMgPSBqYi0+dmFsLmJpbmFyeS5k YXRhOworCQlKc29uYkNvbnRhaW5lciAqamJjID0gamItPmJpbmFyeS5kYXRhOwogCiAJCWlm IChKc29uQ29udGFpbmVySXNBcnJheShqYmMpICYmICFKc29uQ29udGFpbmVySXNTY2FsYXIo amJjKSkKIAkJCXJldHVybiBKc29uQ29udGFpbmVyU2l6ZShqYmMpOwpAQCAtMzM2NCwzMCAr MzM2NCwzMCBAQCBjb21wYXJlSXRlbXMoaW50MzIgb3AsIEpzb25iVmFsdWUgKmpiMSwgSnNv bmJWYWx1ZSAqamIyLCBib29sIHVzZVR6KQogCQkJY21wID0gMDsKIAkJCWJyZWFrOwogCQlj YXNlIGpidkJvb2w6Ci0JCQljbXAgPSBqYjEtPnZhbC5ib29sZWFuID09IGpiMi0+dmFsLmJv b2xlYW4gPyAwIDoKLQkJCQlqYjEtPnZhbC5ib29sZWFuID8gMSA6IC0xOworCQkJY21wID0g amIxLT5ib29sZWFuID09IGpiMi0+Ym9vbGVhbiA/IDAgOgorCQkJCWpiMS0+Ym9vbGVhbiA/ IDEgOiAtMTsKIAkJCWJyZWFrOwogCQljYXNlIGpidk51bWVyaWM6Ci0JCQljbXAgPSBjb21w YXJlTnVtZXJpYyhqYjEtPnZhbC5udW1lcmljLCBqYjItPnZhbC5udW1lcmljKTsKKwkJCWNt cCA9IGNvbXBhcmVOdW1lcmljKGpiMS0+bnVtZXJpYywgamIyLT5udW1lcmljKTsKIAkJCWJy ZWFrOwogCQljYXNlIGpidlN0cmluZzoKIAkJCWlmIChvcCA9PSBqcGlFcXVhbCkKLQkJCQly ZXR1cm4gamIxLT52YWwuc3RyaW5nLmxlbiAhPSBqYjItPnZhbC5zdHJpbmcubGVuIHx8Ci0J CQkJCW1lbWNtcChqYjEtPnZhbC5zdHJpbmcudmFsLAotCQkJCQkJICAgamIyLT52YWwuc3Ry aW5nLnZhbCwKLQkJCQkJCSAgIGpiMS0+dmFsLnN0cmluZy5sZW4pID8ganBiRmFsc2UgOiBq cGJUcnVlOworCQkJCXJldHVybiBqYjEtPnN0cmluZy5sZW4gIT0gamIyLT5zdHJpbmcubGVu IHx8CisJCQkJCW1lbWNtcChqYjEtPnN0cmluZy52YWwsCisJCQkJCQkgICBqYjItPnN0cmlu Zy52YWwsCisJCQkJCQkgICBqYjEtPnN0cmluZy5sZW4pID8ganBiRmFsc2UgOiBqcGJUcnVl OwogCi0JCQljbXAgPSBjb21wYXJlU3RyaW5ncyhqYjEtPnZhbC5zdHJpbmcudmFsLCBqYjEt PnZhbC5zdHJpbmcubGVuLAotCQkJCQkJCQkgamIyLT52YWwuc3RyaW5nLnZhbCwgamIyLT52 YWwuc3RyaW5nLmxlbik7CisJCQljbXAgPSBjb21wYXJlU3RyaW5ncyhqYjEtPnN0cmluZy52 YWwsIGpiMS0+c3RyaW5nLmxlbiwKKwkJCQkJCQkJIGpiMi0+c3RyaW5nLnZhbCwgamIyLT5z dHJpbmcubGVuKTsKIAkJCWJyZWFrOwogCQljYXNlIGpidkRhdGV0aW1lOgogCQkJewogCQkJ CWJvb2wJCWNhc3RfZXJyb3I7CiAKLQkJCQljbXAgPSBjb21wYXJlRGF0ZXRpbWUoamIxLT52 YWwuZGF0ZXRpbWUudmFsdWUsCi0JCQkJCQkJCQkgIGpiMS0+dmFsLmRhdGV0aW1lLnR5cGlk LAotCQkJCQkJCQkJICBqYjItPnZhbC5kYXRldGltZS52YWx1ZSwKLQkJCQkJCQkJCSAgamIy LT52YWwuZGF0ZXRpbWUudHlwaWQsCisJCQkJY21wID0gY29tcGFyZURhdGV0aW1lKGpiMS0+ ZGF0ZXRpbWUudmFsdWUsCisJCQkJCQkJCQkgIGpiMS0+ZGF0ZXRpbWUudHlwaWQsCisJCQkJ CQkJCQkgIGpiMi0+ZGF0ZXRpbWUudmFsdWUsCisJCQkJCQkJCQkgIGpiMi0+ZGF0ZXRpbWUu dHlwaWQsCiAJCQkJCQkJCQkgIHVzZVR6LAogCQkJCQkJCQkJICAmY2FzdF9lcnJvcik7CiAK QEAgLTM0NzYsNyArMzQ3Niw3IEBAIGdldEFycmF5SW5kZXgoSnNvblBhdGhFeGVjQ29udGV4 dCAqY3h0LCBKc29uUGF0aEl0ZW0gKmpzcCwgSnNvbmJWYWx1ZSAqamIsCiAJCQkJCQkJICBl cnJtc2coImpzb25wYXRoIGFycmF5IHN1YnNjcmlwdCBpcyBub3QgYSBzaW5nbGUgbnVtZXJp YyB2YWx1ZSIpKSkpOwogCiAJbnVtZXJpY19pbmRleCA9IERpcmVjdEZ1bmN0aW9uQ2FsbDIo bnVtZXJpY190cnVuYywKLQkJCQkJCQkJCQlOdW1lcmljR2V0RGF0dW0oamJ2LT52YWwubnVt ZXJpYyksCisJCQkJCQkJCQkJTnVtZXJpY0dldERhdHVtKGpidi0+bnVtZXJpYyksCiAJCQkJ CQkJCQkJSW50MzJHZXREYXR1bSgwKSk7CiAKIAkqaW5kZXggPSBudW1lcmljX2ludDRfc2Fm ZShEYXR1bUdldE51bWVyaWMobnVtZXJpY19pbmRleCksCkBAIC0zNDk3LDcgKzM0OTcsNyBA QCBzZXRCYXNlT2JqZWN0KEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwgSnNvbmJWYWx1ZSAq amJ2LCBpbnQzMiBpZCkKIAlKc29uQmFzZU9iamVjdEluZm8gYmFzZU9iamVjdCA9IGN4dC0+ YmFzZU9iamVjdDsKIAogCWN4dC0+YmFzZU9iamVjdC5qYmMgPSBqYnYtPnR5cGUgIT0gamJ2 QmluYXJ5ID8gTlVMTCA6Ci0JCShKc29uYkNvbnRhaW5lciAqKSBqYnYtPnZhbC5iaW5hcnku ZGF0YTsKKwkJKEpzb25iQ29udGFpbmVyICopIGpidi0+YmluYXJ5LmRhdGE7CiAJY3h0LT5i YXNlT2JqZWN0LmlkID0gaWQ7CiAKIAlyZXR1cm4gYmFzZU9iamVjdDsKQEAgLTM2MDIsOCAr MzYwMiw4IEBAIHN0YXRpYyBKc29uYlZhbHVlICoKIEpzb25iSW5pdEJpbmFyeShKc29uYlZh bHVlICpqYnYsIEpzb25iICpqYikKIHsKIAlqYnYtPnR5cGUgPSBqYnZCaW5hcnk7Ci0JamJ2 LT52YWwuYmluYXJ5LmRhdGEgPSAmamItPnJvb3Q7Ci0JamJ2LT52YWwuYmluYXJ5LmxlbiA9 IFZBUlNJWkVfQU5ZX0VYSERSKGpiKTsKKwlqYnYtPmJpbmFyeS5kYXRhID0gJmpiLT5yb290 OworCWpidi0+YmluYXJ5LmxlbiA9IFZBUlNJWkVfQU5ZX0VYSERSKGpiKTsKIAogCXJldHVy biBqYnY7CiB9CkBAIC0zNjE4LDcgKzM2MTgsNyBAQCBKc29uYlR5cGUoSnNvbmJWYWx1ZSAq amIpCiAKIAlpZiAoamItPnR5cGUgPT0gamJ2QmluYXJ5KQogCXsKLQkJSnNvbmJDb250YWlu ZXIgKmpiYyA9IGpiLT52YWwuYmluYXJ5LmRhdGE7CisJCUpzb25iQ29udGFpbmVyICpqYmMg PSBqYi0+YmluYXJ5LmRhdGE7CiAKIAkJLyogU2NhbGFycyBzaG91bGQgYmUgYWx3YXlzIGV4 dHJhY3RlZCBkdXJpbmcganNvbnBhdGggZXhlY3V0aW9uLiAqLwogCQlBc3NlcnQoIUpzb25D b250YWluZXJJc1NjYWxhcihqYmMpKTsKQEAgLTM2NDAsNyArMzY0MCw3IEBAIGdldFNjYWxh cihKc29uYlZhbHVlICpzY2FsYXIsIGVudW0gamJ2VHlwZSB0eXBlKQogewogCS8qIFNjYWxh cnMgc2hvdWxkIGJlIGFsd2F5cyBleHRyYWN0ZWQgZHVyaW5nIGpzb25wYXRoIGV4ZWN1dGlv bi4gKi8KIAlBc3NlcnQoc2NhbGFyLT50eXBlICE9IGpidkJpbmFyeSB8fAotCQkgICAhSnNv bkNvbnRhaW5lcklzU2NhbGFyKHNjYWxhci0+dmFsLmJpbmFyeS5kYXRhKSk7CisJCSAgICFK c29uQ29udGFpbmVySXNTY2FsYXIoc2NhbGFyLT5iaW5hcnkuZGF0YSkpOwogCiAJcmV0dXJu IHNjYWxhci0+dHlwZSA9PSB0eXBlID8gc2NhbGFyIDogTlVMTDsKIH0KQEAgLTQwNTIsOCAr NDA1Miw4IEBAIEpzb25QYXRoVmFsdWUoRGF0dW0gamIsIEpzb25QYXRoICpqcCwgYm9vbCAq ZW1wdHksIGJvb2wgKmVycm9yLCBMaXN0ICp2YXJzLAogCX0KIAogCXJlcyA9IEpzb25WYWx1 ZUxpc3RIZWFkKCZmb3VuZCk7Ci0JaWYgKHJlcy0+dHlwZSA9PSBqYnZCaW5hcnkgJiYgSnNv bkNvbnRhaW5lcklzU2NhbGFyKHJlcy0+dmFsLmJpbmFyeS5kYXRhKSkKLQkJSnNvbmJFeHRy YWN0U2NhbGFyKHJlcy0+dmFsLmJpbmFyeS5kYXRhLCByZXMpOworCWlmIChyZXMtPnR5cGUg PT0gamJ2QmluYXJ5ICYmIEpzb25Db250YWluZXJJc1NjYWxhcihyZXMtPmJpbmFyeS5kYXRh KSkKKwkJSnNvbmJFeHRyYWN0U2NhbGFyKHJlcy0+YmluYXJ5LmRhdGEsIHJlcyk7CiAKIAkv KiBKU09OX1ZBTFVFIGV4cGVjdHMgdG8gZ2V0IG9ubHkgc2NhbGFycy4gKi8KIAlpZiAoIUlz QUpzb25iU2NhbGFyKHJlcykpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQv anNvbnBhdGhfZ3JhbS55IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2dyYW0u eQppbmRleCA0OTk3NDVhOGZlZi4uNDQzMDFiMGRjYzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2pzb25wYXRoX2dyYW0ueQpAQCAtNDA2LDggKzQwNiw4IEBAIG1ha2VJdGVtU3RyaW5n KEpzb25QYXRoU3RyaW5nICpzKQogCWVsc2UKIAl7CiAJCXYgPSBtYWtlSXRlbVR5cGUoanBp U3RyaW5nKTsKLQkJdi0+dmFsdWUuc3RyaW5nLnZhbCA9IHMtPnZhbDsKLQkJdi0+dmFsdWUu c3RyaW5nLmxlbiA9IHMtPmxlbjsKKwkJdi0+c3RyaW5nLnZhbCA9IHMtPnZhbDsKKwkJdi0+ c3RyaW5nLmxlbiA9IHMtPmxlbjsKIAl9CiAKIAlyZXR1cm4gdjsKQEAgLTQxOSw4ICs0MTks OCBAQCBtYWtlSXRlbVZhcmlhYmxlKEpzb25QYXRoU3RyaW5nICpzKQogCUpzb25QYXRoUGFy c2VJdGVtICp2OwogCiAJdiA9IG1ha2VJdGVtVHlwZShqcGlWYXJpYWJsZSk7Ci0Jdi0+dmFs dWUuc3RyaW5nLnZhbCA9IHMtPnZhbDsKLQl2LT52YWx1ZS5zdHJpbmcubGVuID0gcy0+bGVu OworCXYtPnN0cmluZy52YWwgPSBzLT52YWw7CisJdi0+c3RyaW5nLmxlbiA9IHMtPmxlbjsK IAogCXJldHVybiB2OwogfQpAQCAtNDQyLDcgKzQ0Miw3IEBAIG1ha2VJdGVtTnVtZXJpYyhK c29uUGF0aFN0cmluZyAqcykKIAlKc29uUGF0aFBhcnNlSXRlbSAqdjsKIAogCXYgPSBtYWtl SXRlbVR5cGUoanBpTnVtZXJpYyk7Ci0Jdi0+dmFsdWUubnVtZXJpYyA9CisJdi0+bnVtZXJp YyA9CiAJCURhdHVtR2V0TnVtZXJpYyhEaXJlY3RGdW5jdGlvbkNhbGwzKG51bWVyaWNfaW4s CiAJCQkJCQkJCQkJCUNTdHJpbmdHZXREYXR1bShzLT52YWwpLAogCQkJCQkJCQkJCQlPYmpl Y3RJZEdldERhdHVtKEludmFsaWRPaWQpLApAQCAtNDU2LDcgKzQ1Niw3IEBAIG1ha2VJdGVt Qm9vbChib29sIHZhbCkKIHsKIAlKc29uUGF0aFBhcnNlSXRlbSAqdiA9IG1ha2VJdGVtVHlw ZShqcGlCb29sKTsKIAotCXYtPnZhbHVlLmJvb2xlYW4gPSB2YWw7CisJdi0+Ym9vbGVhbiA9 IHZhbDsKIAogCXJldHVybiB2OwogfQpAQCAtNDY2LDggKzQ2Niw4IEBAIG1ha2VJdGVtQmlu YXJ5KEpzb25QYXRoSXRlbVR5cGUgdHlwZSwgSnNvblBhdGhQYXJzZUl0ZW0gKmxhLCBKc29u UGF0aFBhcnNlSXRlbSAqCiB7CiAJSnNvblBhdGhQYXJzZUl0ZW0gKnYgPSBtYWtlSXRlbVR5 cGUodHlwZSk7CiAKLQl2LT52YWx1ZS5hcmdzLmxlZnQgPSBsYTsKLQl2LT52YWx1ZS5hcmdz LnJpZ2h0ID0gcmE7CisJdi0+YXJncy5sZWZ0ID0gbGE7CisJdi0+YXJncy5yaWdodCA9IHJh OwogCiAJcmV0dXJuIHY7CiB9CkBAIC00ODMsMTUgKzQ4MywxNSBAQCBtYWtlSXRlbVVuYXJ5 KEpzb25QYXRoSXRlbVR5cGUgdHlwZSwgSnNvblBhdGhQYXJzZUl0ZW0gKmEpCiAJaWYgKHR5 cGUgPT0ganBpTWludXMgJiYgYS0+dHlwZSA9PSBqcGlOdW1lcmljICYmICFhLT5uZXh0KQog CXsKIAkJdiA9IG1ha2VJdGVtVHlwZShqcGlOdW1lcmljKTsKLQkJdi0+dmFsdWUubnVtZXJp YyA9CisJCXYtPm51bWVyaWMgPQogCQkJRGF0dW1HZXROdW1lcmljKERpcmVjdEZ1bmN0aW9u Q2FsbDEobnVtZXJpY191bWludXMsCi0JCQkJCQkJCQkJCQlOdW1lcmljR2V0RGF0dW0oYS0+ dmFsdWUubnVtZXJpYykpKTsKKwkJCQkJCQkJCQkJCU51bWVyaWNHZXREYXR1bShhLT5udW1l cmljKSkpOwogCQlyZXR1cm4gdjsKIAl9CiAKIAl2ID0gbWFrZUl0ZW1UeXBlKHR5cGUpOwog Ci0Jdi0+dmFsdWUuYXJnID0gYTsKKwl2LT5hcmcgPSBhOwogCiAJcmV0dXJuIHY7CiB9CkBA IC01MzEsMTAgKzUzMSwxMCBAQCBtYWtlSW5kZXhBcnJheShMaXN0ICpsaXN0KQogCWludAkJ CWkgPSAwOwogCiAJQXNzZXJ0KGxpc3QgIT0gTklMKTsKLQl2LT52YWx1ZS5hcnJheS5uZWxl bXMgPSBsaXN0X2xlbmd0aChsaXN0KTsKKwl2LT5hcnJheS5uZWxlbXMgPSBsaXN0X2xlbmd0 aChsaXN0KTsKIAotCXYtPnZhbHVlLmFycmF5LmVsZW1zID0gcGFsbG9jKHNpemVvZih2LT52 YWx1ZS5hcnJheS5lbGVtc1swXSkgKgotCQkJCQkJCQkgIHYtPnZhbHVlLmFycmF5Lm5lbGVt cyk7CisJdi0+YXJyYXkuZWxlbXMgPSBwYWxsb2Moc2l6ZW9mKHYtPmFycmF5LmVsZW1zWzBd KSAqCisJCQkJCQkJCSAgdi0+YXJyYXkubmVsZW1zKTsKIAogCWZvcmVhY2goY2VsbCwgbGlz dCkKIAl7CkBAIC01NDIsOCArNTQyLDggQEAgbWFrZUluZGV4QXJyYXkoTGlzdCAqbGlzdCkK IAogCQlBc3NlcnQoanBpLT50eXBlID09IGpwaVN1YnNjcmlwdCk7CiAKLQkJdi0+dmFsdWUu YXJyYXkuZWxlbXNbaV0uZnJvbSA9IGpwaS0+dmFsdWUuYXJncy5sZWZ0OwotCQl2LT52YWx1 ZS5hcnJheS5lbGVtc1tpKytdLnRvID0ganBpLT52YWx1ZS5hcmdzLnJpZ2h0OworCQl2LT5h cnJheS5lbGVtc1tpXS5mcm9tID0ganBpLT5hcmdzLmxlZnQ7CisJCXYtPmFycmF5LmVsZW1z W2krK10udG8gPSBqcGktPmFyZ3MucmlnaHQ7CiAJfQogCiAJcmV0dXJuIHY7CkBAIC01NTQs OCArNTU0LDggQEAgbWFrZUFueShpbnQgZmlyc3QsIGludCBsYXN0KQogewogCUpzb25QYXRo UGFyc2VJdGVtICp2ID0gbWFrZUl0ZW1UeXBlKGpwaUFueSk7CiAKLQl2LT52YWx1ZS5hbnli b3VuZHMuZmlyc3QgPSAoZmlyc3QgPj0gMCkgPyBmaXJzdCA6IFBHX1VJTlQzMl9NQVg7Ci0J di0+dmFsdWUuYW55Ym91bmRzLmxhc3QgPSAobGFzdCA+PSAwKSA/IGxhc3QgOiBQR19VSU5U MzJfTUFYOworCXYtPmFueWJvdW5kcy5maXJzdCA9IChmaXJzdCA+PSAwKSA/IGZpcnN0IDog UEdfVUlOVDMyX01BWDsKKwl2LT5hbnlib3VuZHMubGFzdCA9IChsYXN0ID49IDApID8gbGFz dCA6IFBHX1VJTlQzMl9NQVg7CiAKIAlyZXR1cm4gdjsKIH0KQEAgLTU2OSwzMCArNTY5LDMw IEBAIG1ha2VJdGVtTGlrZVJlZ2V4KEpzb25QYXRoUGFyc2VJdGVtICpleHByLCBKc29uUGF0 aFN0cmluZyAqcGF0dGVybiwKIAlpbnQJCQlpOwogCWludAkJCWNmbGFnczsKIAotCXYtPnZh bHVlLmxpa2VfcmVnZXguZXhwciA9IGV4cHI7Ci0Jdi0+dmFsdWUubGlrZV9yZWdleC5wYXR0 ZXJuID0gcGF0dGVybi0+dmFsOwotCXYtPnZhbHVlLmxpa2VfcmVnZXgucGF0dGVybmxlbiA9 IHBhdHRlcm4tPmxlbjsKKwl2LT5saWtlX3JlZ2V4LmV4cHIgPSBleHByOworCXYtPmxpa2Vf cmVnZXgucGF0dGVybiA9IHBhdHRlcm4tPnZhbDsKKwl2LT5saWtlX3JlZ2V4LnBhdHRlcm5s ZW4gPSBwYXR0ZXJuLT5sZW47CiAKIAkvKiBQYXJzZSB0aGUgZmxhZ3Mgc3RyaW5nLCBjb252 ZXJ0IHRvIGJpdG1hc2suICBEdXBsaWNhdGUgZmxhZ3MgYXJlIE9LLiAqLwotCXYtPnZhbHVl Lmxpa2VfcmVnZXguZmxhZ3MgPSAwOworCXYtPmxpa2VfcmVnZXguZmxhZ3MgPSAwOwogCWZv ciAoaSA9IDA7IGZsYWdzICYmIGkgPCBmbGFncy0+bGVuOyBpKyspCiAJewogCQlzd2l0Y2gg KGZsYWdzLT52YWxbaV0pCiAJCXsKIAkJCWNhc2UgJ2knOgotCQkJCXYtPnZhbHVlLmxpa2Vf cmVnZXguZmxhZ3MgfD0gSlNQX1JFR0VYX0lDQVNFOworCQkJCXYtPmxpa2VfcmVnZXguZmxh Z3MgfD0gSlNQX1JFR0VYX0lDQVNFOwogCQkJCWJyZWFrOwogCQkJY2FzZSAncyc6Ci0JCQkJ di0+dmFsdWUubGlrZV9yZWdleC5mbGFncyB8PSBKU1BfUkVHRVhfRE9UQUxMOworCQkJCXYt Pmxpa2VfcmVnZXguZmxhZ3MgfD0gSlNQX1JFR0VYX0RPVEFMTDsKIAkJCQlicmVhazsKIAkJ CWNhc2UgJ20nOgotCQkJCXYtPnZhbHVlLmxpa2VfcmVnZXguZmxhZ3MgfD0gSlNQX1JFR0VY X01MSU5FOworCQkJCXYtPmxpa2VfcmVnZXguZmxhZ3MgfD0gSlNQX1JFR0VYX01MSU5FOwog CQkJCWJyZWFrOwogCQkJY2FzZSAneCc6Ci0JCQkJdi0+dmFsdWUubGlrZV9yZWdleC5mbGFn cyB8PSBKU1BfUkVHRVhfV1NQQUNFOworCQkJCXYtPmxpa2VfcmVnZXguZmxhZ3MgfD0gSlNQ X1JFR0VYX1dTUEFDRTsKIAkJCQlicmVhazsKIAkJCWNhc2UgJ3EnOgotCQkJCXYtPnZhbHVl Lmxpa2VfcmVnZXguZmxhZ3MgfD0gSlNQX1JFR0VYX1FVT1RFOworCQkJCXYtPmxpa2VfcmVn ZXguZmxhZ3MgfD0gSlNQX1JFR0VYX1FVT1RFOwogCQkJCWJyZWFrOwogCQkJZGVmYXVsdDoK IAkJCQllcmV0dXJuKGVzY29udGV4dCwgZmFsc2UsCkBAIC02MDUsNyArNjA1LDcgQEAgbWFr ZUl0ZW1MaWtlUmVnZXgoSnNvblBhdGhQYXJzZUl0ZW0gKmV4cHIsIEpzb25QYXRoU3RyaW5n ICpwYXR0ZXJuLAogCX0KIAogCS8qIENvbnZlcnQgZmxhZ3MgdG8gd2hhdCBwZ19yZWdjb21w IG5lZWRzICovCi0JaWYgKCFqc3BDb252ZXJ0UmVnZXhGbGFncyh2LT52YWx1ZS5saWtlX3Jl Z2V4LmZsYWdzLCAmY2ZsYWdzLCBlc2NvbnRleHQpKQorCWlmICghanNwQ29udmVydFJlZ2V4 RmxhZ3Modi0+bGlrZV9yZWdleC5mbGFncywgJmNmbGFncywgZXNjb250ZXh0KSkKIAkJcmV0 dXJuIGZhbHNlOwogCiAJLyogY2hlY2sgcmVnZXggdmFsaWRpdHkgKi8KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3V0aWxzL2pzb25iLmggYi9zcmMvaW5jbHVkZS91dGlscy9qc29uYi5o CmluZGV4IGZlY2IzM2I5YzY3Li41NDZkMjRjZDgxOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvdXRpbHMvanNvbmIuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9qc29uYi5oCkBAIC0y OTEsNyArMjkxLDcgQEAgc3RydWN0IEpzb25iVmFsdWUKIAkJCWludAkJCXR6OwkJLyogTnVt ZXJpYyB0aW1lIHpvbmUsIGluIHNlY29uZHMsIGZvcgogCQkJCQkJCQkgKiBUaW1lc3RhbXBU eiBkYXRhIHR5cGUgKi8KIAkJfQkJCWRhdGV0aW1lOwotCX0JCQl2YWw7CisJfTsKIH07CiAK ICNkZWZpbmUgSXNBSnNvbmJTY2FsYXIoanNvbmJ2YWwpCSgoKGpzb25idmFsKS0+dHlwZSA+ PSBqYnZOdWxsICYmIFwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25wYXRo LmggYi9zcmMvaW5jbHVkZS91dGlscy9qc29ucGF0aC5oCmluZGV4IDIzYTc2ZDIzM2U5Li44 MTdlZmQ4YmY4NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvanNvbnBhdGguaAor KysgYi9zcmMvaW5jbHVkZS91dGlscy9qc29ucGF0aC5oCkBAIC0xODgsNyArMTg4LDcgQEAg dHlwZWRlZiBzdHJ1Y3QgSnNvblBhdGhJdGVtCiAJCQlpbnQzMgkJcGF0dGVybmxlbjsKIAkJ CXVpbnQzMgkJZmxhZ3M7CiAJCX0JCQlsaWtlX3JlZ2V4OwotCX0JCQljb250ZW50OworCX07 CiB9IEpzb25QYXRoSXRlbTsKIAogI2RlZmluZSBqc3BIYXNOZXh0KGpzcCkgKChqc3ApLT5u ZXh0UG9zID4gMCkKQEAgLTI2Niw3ICsyNjYsNyBAQCBzdHJ1Y3QgSnNvblBhdGhQYXJzZUl0 ZW0KIAkJCXVpbnQzMgkJbGVuOwogCQkJY2hhcgkgICAqdmFsOwkvKiBjb3VsZCBub3QgYmUg bm90IG51bGwtdGVybWluYXRlZCAqLwogCQl9CQkJc3RyaW5nOwotCX0JCQl2YWx1ZTsKKwl9 OwogfTsKIAogdHlwZWRlZiBzdHJ1Y3QgSnNvblBhdGhQYXJzZVJlc3VsdAotLSAKMi41MS4w Cgo= --------------XMilSvfSoQNhBmwudkXUWZaX--