Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mBy1U-0001J4-18 for pgsql-hackers@arkaria.postgresql.org; Fri, 06 Aug 2021 11:28:20 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mBy1S-0006A8-OF for pgsql-hackers@arkaria.postgresql.org; Fri, 06 Aug 2021 11:28:18 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mBy1R-00069z-Ry for pgsql-hackers@lists.postgresql.org; Fri, 06 Aug 2021 11:28:18 +0000 Received: from smtp-fw-80007.amazon.com ([99.78.197.218]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mBy1H-0003gN-B9 for pgsql-hackers@postgresql.org; Fri, 06 Aug 2021 11:28:16 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1628249287; x=1659785287; h=to:cc:references:from:message-id:date:mime-version: in-reply-to:subject; bh=X9DOXpjBlNExJXYoc0sg/WTDS2eJy481UcLyHF3sc/k=; b=H0vJ3G4WbMf0hnqsOSIqoM/Lx7z7BwL3O/lswB9c92I5vg3ZwlxvhYtP opWvOCvPBhGU3ymE+tcSoNiSTRthAHVnnYi5UnTX8fd/VnXXk8RSJIwXs 1dY9/9Qfn5myDV2MGaUUj/bQZ0q2MoGatE1uMmK/0kGiYQpYmeXaXZZ+1 I=; X-Amazon-filename: v23-0005-Doc-changes-describing-details-about-logical-dec.patch, v23-0004-New-TAP-test-for-logical-decoding-on-standby.patch, v23-0003-Allow-logical-decoding-on-standby.patch, v23-0002-Handle-logical-slot-conflicts-on-standby.patch, v23-0001-Add-info-in-WAL-records-in-preparation-for-logic.patch X-IronPort-AV: E=Sophos;i="5.84,300,1620691200"; d="scan'208,223";a="17500598" Subject: Re: Minimal logical decoding on standbys Received: from pdx4-co-svc-p1-lb2-vlan2.amazon.com (HELO email-inbound-relay-1a-821c648d.us-east-1.amazon.com) ([10.25.36.210]) by smtp-border-fw-80007.pdx80.corp.amazon.com with ESMTP; 06 Aug 2021 11:27:58 +0000 Received: from EX13D03EUC003.ant.amazon.com (iad55-ws-svc-p15-lb9-vlan2.iad.amazon.com [10.40.159.162]) by email-inbound-relay-1a-821c648d.us-east-1.amazon.com (Postfix) with ESMTPS id 55E0BA1F6B; Fri, 6 Aug 2021 11:27:55 +0000 (UTC) Received: from 38f9d36c4abb.ant.amazon.com (10.43.160.41) by EX13D03EUC003.ant.amazon.com (10.43.164.192) with Microsoft SMTP Server (TLS) id 15.0.1497.23; Fri, 6 Aug 2021 11:27:50 +0000 To: Andres Freund CC: Ibrar Ahmed , Amit Khandekar , , Alvaro Herrera , tushar , "[pgdg] Robert Haas" , Rahila Syed , pgsql-hackers References: <20210407170954.xbovgh3xdrnogg7w@alap3.anarazel.de> <20210407203218.pestfxu7watrnog4@alap3.anarazel.de> <20210408034713.auf7oaxyymu2kc7n@alap3.anarazel.de> <26c6f320-98f0-253c-f8b5-df1e7c1f6315@amazon.com> <8d263a6b-a99f-0f9b-43ba-e8967c386f2b@amazon.com> <2feee395-959b-6d53-369a-c00f8f2fa6c5@amazon.com> <20210727172257.ekvkspdqaeh2etfg@alap3.anarazel.de> <69aad0bf-697a-04e1-df6c-0920ec8fa528@amazon.com> <20210802160133.uugcce5ql4m5mv5m@alap3.anarazel.de> From: "Drouvot, Bertrand" Message-ID: <7094ac62-340f-9b23-3af6-e24fe08c8697@amazon.com> Date: Fri, 6 Aug 2021 13:27:46 +0200 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Thunderbird/78.12.0 MIME-Version: 1.0 In-Reply-To: <20210802160133.uugcce5ql4m5mv5m@alap3.anarazel.de> Content-Type: multipart/mixed; boundary="------------D6A801DD7417B05266914188" Content-Language: en-US X-Originating-IP: [10.43.160.41] X-ClientProxiedBy: EX13D38UWC003.ant.amazon.com (10.43.162.23) To EX13D03EUC003.ant.amazon.com (10.43.164.192) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --------------D6A801DD7417B05266914188 Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 8bit Hi, On 8/2/21 6:01 PM, Andres Freund wrote: > While working on this I found a, somewhat substantial, issue: >> If so, do you already have in mind a way to handle this? (I thought you >> already had in mind a way to handle it so the question) > Yes. I think we need to add a condition variable to be able to wait for > WAL positions to change. Either multiple condition variables (one for > the flush position, one for the replay position), or one that just > changes more often. That way one can wait for apply without a race > condition. > Thanks for the feedback. Wouldn't a condition variable on the replay position be enough? I don't get why the proposed one on the flush position is needed. >> if not, what kind of additional 
tests would you like to see? > A few catalog rows being removed (e.g. due to DELETE and then VACUUM > *without* full) and a standby without hot_standby_feedback catching > that. Test added in v23 attached. Thanks Bertrand --------------D6A801DD7417B05266914188 Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v23-0005-Doc-changes-describing-details-about-logical-dec.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="v23-0005-Doc-changes-describing-details-about-logical-dec.pa"; filename*1="tch" RnJvbSA0ODJlY2E2M2YzMmM3NTczYTM5M2JiYmExNjUwYjI1Y2YzODFjNjZjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogRnJpLCA2IEF1ZyAyMDIxIDA5OjQ4OjExICswMDAwClN1YmplY3Q6IFtQQVRD SCB2MjMgNS81XSBEb2MgY2hhbmdlcyBkZXNjcmliaW5nIGRldGFpbHMgYWJvdXQgbG9naWNh bAogZGVjb2RpbmcuCgpBdXRob3I6IEFuZHJlcyBGcmV1bmQgKGluIGFuIG9sZGVyIHZlcnNp b24pLCBBbWl0IEtoYW5kZWthciwgQmVydHJhbmQgRHJvdXZvdApSZXZpZXdlZC1CeTogQmVy dHJhbmQgRHJvdXZvdCwgQW5kcmVzIEZyZXVuZCwgUm9iZXJ0IEhhYXMsIEZhYnJpemlvIGRl IFJveWVzIE1lbGxvCi0tLQogZG9jL3NyYy9zZ21sL2xvZ2ljYWxkZWNvZGluZy5zZ21sIHwg MjEgKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMjEgaW5zZXJ0aW9u cygrKQogMTAwLjAlIGRvYy9zcmMvc2dtbC8KCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv bG9naWNhbGRlY29kaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbGRlY29kaW5nLnNn bWwKaW5kZXggMGQwZGUyOTFmMy4uYjVjNTNhODkzNSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL2xvZ2ljYWxkZWNvZGluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsZGVj b2Rpbmcuc2dtbApAQCAtMzE2LDYgKzMxNiwyNyBAQCBwb3N0Z3Jlcz0jIHNlbGVjdCAqIGZy b20gcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdyZWdyZXNzaW9uX3Nsb3QnLCBOVUxM LCBOVQogICAgICBtYXkgY29uc3VtZSBjaGFuZ2VzIGZyb20gYSBzbG90IGF0IGFueSBnaXZl biB0aW1lLgogICAgIDwvcGFyYT4KIAorICAgIDxwYXJhPgorICAgICBBIGxvZ2ljYWwgcmVw bGljYXRpb24gc2xvdCBjYW4gYWxzbyBiZSBjcmVhdGVkIG9uIGEgaG90IHN0YW5kYnkuIFRv IHByZXZlbnQKKyAgICAgPGNvbW1hbmQ+VkFDVVVNPC9jb21tYW5kPiBmcm9tIHJlbW92aW5n IHJlcXVpcmVkIHJvd3MgZnJvbSB0aGUgc3lzdGVtCisgICAgIGNhdGFsb2dzLCA8dmFybmFt ZT5ob3Rfc3RhbmRieV9mZWVkYmFjazwvdmFybmFtZT4gc2hvdWxkIGJlIHNldCBvbiB0aGUK KyAgICAgc3RhbmRieS4gSW4gc3BpdGUgb2YgdGhhdCwgaWYgYW55IHJlcXVpcmVkIHJvd3Mg Z2V0IHJlbW92ZWQsIHRoZSBzbG90IGdldHMKKyAgICAgaW52YWxpZGF0ZWQuIEl0J3MgaGln aGx5IHJlY29tbWVuZGVkIHRvIHVzZSBhIHBoeXNpY2FsIHNsb3QgYmV0d2VlbiB0aGUgcHJp bWFyeQorICAgICBhbmQgdGhlIHN0YW5kYnkuIE90aGVyd2lzZSwgaG90X3N0YW5kYnlfZmVl ZGJhY2sgd2lsbCB3b3JrLCBidXQgb25seSB3aGlsZSB0aGUgCisgICAgIGNvbm5lY3Rpb24g aXMgYWxpdmUgKGZvciBleGFtcGxlIGEgbm9kZSByZXN0YXJ0IHdvdWxkIGJyZWFrIGl0KS4g RXhpc3RpbmcgCisgICAgIGxvZ2ljYWwgc2xvdHMgb24gc3RhbmRieSBhbHNvIGdldCBpbnZh bGlkYXRlZCBpZiB3YWxfbGV2ZWwgb24gcHJpbWFyeSBpcyByZWR1Y2VkIHRvCisgICAgIGxl c3MgdGhhbiAnbG9naWNhbCcuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgIEZv ciBhIGxvZ2ljYWwgc2xvdCB0byBiZSBjcmVhdGVkLCBpdCBidWlsZHMgYSBoaXN0b3JpYyBz bmFwc2hvdCwgZm9yIHdoaWNoCisgICAgIGluZm9ybWF0aW9uIG9mIGFsbCB0aGUgY3VycmVu dGx5IHJ1bm5pbmcgdHJhbnNhY3Rpb25zIGlzIGVzc2VudGlhbC4gT24KKyAgICAgcHJpbWFy eSwgdGhpcyBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUsIGJ1dCBvbiBzdGFuZGJ5LCB0aGlz IGluZm9ybWF0aW9uCisgICAgIGhhcyB0byBiZSBvYnRhaW5lZCBmcm9tIHByaW1hcnkuIFNv LCBzbG90IGNyZWF0aW9uIG1heSB3YWl0IGZvciBzb21lCisgICAgIGFjdGl2aXR5IHRvIGhh cHBlbiBvbiB0aGUgcHJpbWFyeS4gSWYgdGhlIHByaW1hcnkgaXMgaWRsZSwgY3JlYXRpbmcg YQorICAgICBsb2dpY2FsIHNsb3Qgb24gc3RhbmRieSBtYXkgdGFrZSBhIG5vdGljZWFibGUg dGltZS4KKyAgICA8L3BhcmE+CisKICAgICA8Y2F1dGlvbj4KICAgICAgPHBhcmE+CiAgICAg ICBSZXBsaWNhdGlvbiBzbG90cyBwZXJzaXN0IGFjcm9zcyBjcmFzaGVzIGFuZCBrbm93IG5v dGhpbmcgYWJvdXQgdGhlIHN0YXRlCi0tIAoyLjE4LjQKCg== --------------D6A801DD7417B05266914188 Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v23-0004-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v23-0004-New-TAP-test-for-logical-decoding-on-standby.patch" RnJvbSBkNzQwZTUwYmNhODcyMGE4MGViN2VjYjU3ZjQ4ZmVlODg1NTJlYmRjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogRnJpLCA2IEF1ZyAyMDIxIDA5OjQ3OjEyICswMDAwClN1YmplY3Q6IFtQQVRD SCB2MjMgNC81XSBOZXcgVEFQIHRlc3QgZm9yIGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRi eS4KCkF1dGhvcjogQ3JhaWcgUmluZ2VyIChpbiBhbiBvbGRlciB2ZXJzaW9uKSwgQW1pdCBL aGFuZGVrYXIsIEJlcnRyYW5kIERyb3V2b3QKUmV2aWV3ZWQtQnk6IEJlcnRyYW5kIERyb3V2 b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVydCBIYWFzLCBGYWJyaXppbyBkZSBSb3llcyBNZWxs bwotLS0KIHNyYy90ZXN0L3BlcmwvUG9zdGdyZXNOb2RlLnBtICAgICAgICAgICAgICAgICB8 ICAzNyArKwogLi4uL3QvMDI2X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbCAgICAgICAg IHwgNDk4ICsrKysrKysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCA1MzUgaW5zZXJ0 aW9ucygrKQogICA2LjAlIHNyYy90ZXN0L3BlcmwvCiAgOTMuOSUgc3JjL3Rlc3QvcmVjb3Zl cnkvdC8KCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9wZXJsL1Bvc3RncmVzTm9kZS5wbSBiL3Ny Yy90ZXN0L3BlcmwvUG9zdGdyZXNOb2RlLnBtCmluZGV4IDgxNThlYTViMmYuLmE4YzczOTI5 ZWQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3BlcmwvUG9zdGdyZXNOb2RlLnBtCisrKyBiL3Ny Yy90ZXN0L3BlcmwvUG9zdGdyZXNOb2RlLnBtCkBAIC0yNjQ5LDYgKzI2NDksNDMgQEAgc3Vi IHBnX3JlY3Zsb2dpY2FsX3VwdG8KIAogPXBvZAogCis9aXRlbSAkbm9kZS0+Y3JlYXRlX2xv Z2ljYWxfc2xvdF9vbl9zdGFuZGJ5KHNlbGYsIG1hc3Rlciwgc2xvdF9uYW1lLCBkYm5hbWUp CisKK0NyZWF0ZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3Qgb24gZ2l2ZW4gc3RhbmRieQor Cis9Y3V0CisKK3N1YiBjcmVhdGVfbG9naWNhbF9zbG90X29uX3N0YW5kYnkKK3sKKwlteSAo JHNlbGYsICRtYXN0ZXIsICRzbG90X25hbWUsICRkYm5hbWUpID0gQF87CisJbXkgKCRzdGRv dXQsICRzdGRlcnIpOworCisJbXkgJGhhbmRsZTsKKworCSRoYW5kbGUgPSBJUEM6OlJ1bjo6 c3RhcnQoWydwZ19yZWN2bG9naWNhbCcsICctZCcsICRzZWxmLT5jb25uc3RyKCRkYm5hbWUp LCAnLVAnLCAndGVzdF9kZWNvZGluZycsICctUycsICRzbG90X25hbWUsICctLWNyZWF0ZS1z bG90J10sICc+JywgXCRzdGRvdXQsICcyPicsIFwkc3RkZXJyKTsKKworCSMgT25jZSBzbG90 IHJlc3RhcnRfbHNuIGlzIGNyZWF0ZWQsIHRoZSBzdGFuZGJ5IGxvb2tzIGZvciB4bF9ydW5u aW5nX3hhY3RzCisJIyBXQUwgcmVjb3JkIGZyb20gdGhlIHJlc3RhcnRfbHNuIG9ud2FyZHMu IFNvIGZpcnN0bHksIHdhaXQgdW50aWwgdGhlIHNsb3QKKwkjIHJlc3RhcnRfbHNuIGlzIGV2 YWx1YXRlZC4KKworCSRzZWxmLT5wb2xsX3F1ZXJ5X3VudGlsKAorCQkncG9zdGdyZXMnLCBx cVsKKwkJU0VMRUNUIHJlc3RhcnRfbHNuIElTIE5PVCBOVUxMCisJCUZST00gcGdfY2F0YWxv Zy5wZ19yZXBsaWNhdGlvbl9zbG90cyBXSEVSRSBzbG90X25hbWUgPSAnJHNsb3RfbmFtZScK KwldKSBvciBkaWUgInRpbWVkIG91dCB3YWl0aW5nIGZvciBsb2dpY2FsIHNsb3QgdG8gY2Fs Y3VsYXRlIGl0cyByZXN0YXJ0X2xzbiI7CisKKwkjIE5vdyBhcnJhbmdlIGZvciB0aGUgeGxf cnVubmluZ194YWN0cyByZWNvcmQgZm9yIHdoaWNoIHBnX3JlY3Zsb2dpY2FsCisJIyBpcyB3 YWl0aW5nLgorCSRtYXN0ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnQ0hFQ0tQT0lOVCcp OworCisJJGhhbmRsZS0+ZmluaXNoKCk7CisKKwlpcygkc2VsZi0+c2xvdCgkc2xvdF9uYW1l KS0+eydzbG90X3R5cGUnfSwgJ2xvZ2ljYWwnLCAkc2xvdF9uYW1lIC4gJyBvbiBzdGFuZGJ5 IGNyZWF0ZWQnKQorCQlvciBkaWUgImNvdWxkIG5vdCBjcmVhdGUgc2xvdCIgLiAkc2xvdF9u YW1lOworfQorCis9cG9kCisKID1iYWNrCiAKID1jdXQKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlY292ZXJ5L3QvMDI2X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbCBiL3NyYy90ZXN0 L3JlY292ZXJ5L3QvMDI2X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4wNTEzY2NjMzUzCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMjZfc3RhbmRieV9sb2dpY2FsX2RlY29kaW5n LnBsCkBAIC0wLDAgKzEsNDk4IEBACisjIGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieSA6 IHRlc3QgbG9naWNhbCBkZWNvZGluZywKKyMgcmVjb3ZlcnkgY29uZmxpY3QgYW5kIHN0YW5k YnkgcHJvbW90aW9uLgorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOworCit1c2UgUG9z dGdyZXNOb2RlOwordXNlIFRlc3Q6Ok1vcmUgdGVzdHMgPT4gMzg7Cit1c2UgVGltZTo6SGlS ZXMgcXcodXNsZWVwKTsKKworbXkgKCRzdGRpbiwgJHN0ZG91dCwgJHN0ZGVyciwgJHJldCwg JGhhbmRsZSwgJHNsb3QpOworCitteSAkbm9kZV9wcmltYXJ5ID0gUG9zdGdyZXNOb2RlLT5u ZXcoJ3ByaW1hcnknKTsKK215ICRub2RlX3N0YW5kYnkgPSBQb3N0Z3Jlc05vZGUtPm5ldygn c3RhbmRieScpOworCisjIE5hbWUgZm9yIHRoZSBwaHlzaWNhbCBzbG90IG9uIHByaW1hcnkK K215ICRwcmltYXJ5X3Nsb3RuYW1lID0gJ3ByaW1hcnlfcGh5c2ljYWwnOworCisjIHJldHVy biB0aGUgc2l6ZSBvZiBsb2dmaWxlIG9mICRub2RlIGluIGJ5dGVzCitzdWIgZ2V0X2xvZ19z aXplCit7CisJbXkgKCRub2RlKSA9IEBfOworCisJcmV0dXJuIChzdGF0ICRub2RlLT5sb2dm aWxlKVs3XTsKK30KKworIyBmaW5kICRwYXQgaW4gbG9nZmlsZSBvZiAkbm9kZSBhZnRlciAk b2ZmLXRoIGJ5dGUKK3N1YiBmaW5kX2luX2xvZworeworCW15ICgkbm9kZSwgJHBhdCwgJG9m ZikgPSBAXzsKKworCSRvZmYgPSAwIHVubGVzcyBkZWZpbmVkICRvZmY7CisJbXkgJGxvZyA9 IFRlc3RMaWI6OnNsdXJwX2ZpbGUoJG5vZGUtPmxvZ2ZpbGUpOworCXJldHVybiAwIGlmIChs ZW5ndGgoJGxvZykgPD0gJG9mZik7CisKKwkkbG9nID0gc3Vic3RyKCRsb2csICRvZmYpOwor CisJcmV0dXJuICRsb2cgPX4gbS8kcGF0LzsKK30KKworIyBGZXRjaCB4bWluIGNvbHVtbnMg ZnJvbSBzbG90J3MgcGdfcmVwbGljYXRpb25fc2xvdHMgcm93LCBhZnRlciB3YWl0aW5nIGZv cgorIyBnaXZlbiBib29sZWFuIGNvbmRpdGlvbiB0byBiZSB0cnVlIHRvIGVuc3VyZSB3ZSd2 ZSByZWFjaGVkIGEgcXVpZXNjZW50IHN0YXRlLgorc3ViIHdhaXRfZm9yX3htaW5zCit7CisJ bXkgKCRub2RlLCAkc2xvdG5hbWUsICRjaGVja19leHByKSA9IEBfOworCisJJG5vZGUtPnBv bGxfcXVlcnlfdW50aWwoCisJCSdwb3N0Z3JlcycsIHFxWworCQlTRUxFQ1QgJGNoZWNrX2V4 cHIKKwkJRlJPTSBwZ19jYXRhbG9nLnBnX3JlcGxpY2F0aW9uX3Nsb3RzCisJCVdIRVJFIHNs b3RfbmFtZSA9ICckc2xvdG5hbWUnOworCV0pIG9yIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcg Zm9yIHNsb3QgeG1pbnMgdG8gYWR2YW5jZSI7Cit9CisKKyMgQ3JlYXRlIHRoZSByZXF1aXJl ZCBsb2dpY2FsIHNsb3RzIG9uIHN0YW5kYnkuCitzdWIgY3JlYXRlX2xvZ2ljYWxfc2xvdHMK K3sKKwkkbm9kZV9zdGFuZGJ5LT5jcmVhdGVfbG9naWNhbF9zbG90X29uX3N0YW5kYnkoJG5v ZGVfcHJpbWFyeSwgJ2luYWN0aXZlc2xvdCcsICd0ZXN0ZGInKTsKKwkkbm9kZV9zdGFuZGJ5 LT5jcmVhdGVfbG9naWNhbF9zbG90X29uX3N0YW5kYnkoJG5vZGVfcHJpbWFyeSwgJ2FjdGl2 ZXNsb3QnLCAndGVzdGRiJyk7Cit9CisKKyMgQWNxdWlyZSBvbmUgb2YgdGhlIHN0YW5kYnkg bG9naWNhbCBzbG90cyBjcmVhdGVkIGJ5IGNyZWF0ZV9sb2dpY2FsX3Nsb3RzKCkuCisjIElu IGNhc2Ugd2FpdCBpcyB0cnVlIHdlIGFyZSB3YWl0aW5nIGZvciBhbiBhY3RpdmUgcGlkIG9u IHRoZSAnYWN0aXZlc2xvdCcgc2xvdC4KKyMgSWYgd2FpdCBpcyBub3QgdHJ1ZSBpdCBtZWFu cyB3ZSBhcmUgdGVzdGluZyBhIGtub3duIGZhaWx1cmUgc2NlbmFyaW8uCitzdWIgbWFrZV9z bG90X2FjdGl2ZQoreworCW15ICR3YWl0ID0gc2hpZnQ7CisJbXkgJHNsb3RfdXNlcl9oYW5k bGU7CisKKwlwcmludCAic3RhcnRpbmcgcGdfcmVjdmxvZ2ljYWxcbiI7CisJJHNsb3RfdXNl cl9oYW5kbGUgPSBJUEM6OlJ1bjo6c3RhcnQoWydwZ19yZWN2bG9naWNhbCcsICctZCcsICRu b2RlX3N0YW5kYnktPmNvbm5zdHIoJ3Rlc3RkYicpLCAnLVMnLCAnYWN0aXZlc2xvdCcsICct ZicsICctJywgJy0tbm8tbG9vcCcsICctLXN0YXJ0J10sICc+JywgXCRzdGRvdXQsICcyPics IFwkc3RkZXJyKTsKKworCWlmICgkd2FpdCkKKwkjIG1ha2Ugc3VyZSBhY3RpdmVzbG90IGlz IGluIHVzZQorCXsKKwkJJG5vZGVfc3RhbmRieS0+cG9sbF9xdWVyeV91bnRpbCgndGVzdGRi JywKKwkJCSJTRUxFQ1QgRVhJU1RTIChTRUxFQ1QgMSBGUk9NIHBnX3JlcGxpY2F0aW9uX3Ns b3RzIFdIRVJFIHNsb3RfbmFtZSA9ICdhY3RpdmVzbG90JyBBTkQgYWN0aXZlX3BpZCBJUyBO T1QgTlVMTCkiCisJCSkgb3IgZGllICJzbG90IG5ldmVyIGJlY2FtZSBhY3RpdmUiOworCX0K KworCXJldHVybiAkc2xvdF91c2VyX2hhbmRsZTsKK30KKworIyBDaGVjayBpZiBhbGwgdGhl IHNsb3RzIG9uIHN0YW5kYnkgYXJlIGRyb3BwZWQuIFRoZXNlIGluY2x1ZGUgdGhlICdhY3Rp dmVzbG90JworIyB0aGF0IHdhcyBhY3F1aXJlZCBieSBtYWtlX3Nsb3RfYWN0aXZlKCksIGFu ZCB0aGUgbm9uLWFjdGl2ZSAnaW5hY3RpdmVzbG90Jy4KK3N1YiBjaGVja19zbG90c19kcm9w cGVkCit7CisJbXkgKCRzbG90X3VzZXJfaGFuZGxlKSA9IEBfOworCW15ICRyZXR1cm47CisK Kwlpcygkbm9kZV9zdGFuZGJ5LT5zbG90KCdpbmFjdGl2ZXNsb3QnKS0+eydzbG90X3R5cGUn fSwgJycsICdpbmFjdGl2ZXNsb3Qgb24gc3RhbmRieSBkcm9wcGVkJyk7CisJaXMoJG5vZGVf c3RhbmRieS0+c2xvdCgnYWN0aXZlc2xvdCcpLT57J3Nsb3RfdHlwZSd9LCAnJywgJ2FjdGl2 ZXNsb3Qgb24gc3RhbmRieSBkcm9wcGVkJyk7CisKKwkjIG91ciBjbGllbnQgc2hvdWxkJ3Zl IHRlcm1pbmF0ZWQgaW4gcmVzcG9uc2UgdG8gdGhlIHdhbHNlbmRlciBlcnJvcgorCSRzbG90 X3VzZXJfaGFuZGxlLT5maW5pc2g7CisJJHJldHVybiA9ICQ/OworCWNtcF9vaygkcmV0dXJu LCAiIT0iLCAwLCAicGdfcmVjdmxvZ2ljYWwgZXhpdGVkIG5vbi16ZXJvIik7CisJaWYgKCRy ZXR1cm4pIHsKKwkJbGlrZSgkc3RkZXJyLCBxci9jb25mbGljdCB3aXRoIHJlY292ZXJ5Lywg J3Nsb3QgaGF2ZSBiZWVuIGRyb3BwZWQnKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworCisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgSW5pdGlhbGl6ZSBwcmltYXJ5IG5vZGUKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCiskbm9kZV9wcmltYXJ5LT5pbml0KGFsbG93c19z dHJlYW1pbmcgPT4gMSwgaGFzX2FyY2hpdmluZyA9PiAxKTsKKyRub2RlX3ByaW1hcnktPmFw cGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCBxeword2FsX2xldmVsID0gJ2xvZ2ljYWwn CittYXhfcmVwbGljYXRpb25fc2xvdHMgPSA0CittYXhfd2FsX3NlbmRlcnMgPSA0Citsb2df bWluX21lc3NhZ2VzID0gJ2RlYnVnMicKK2xvZ19lcnJvcl92ZXJib3NpdHkgPSB2ZXJib3Nl Cit9KTsKKyRub2RlX3ByaW1hcnktPmR1bXBfaW5mbzsKKyRub2RlX3ByaW1hcnktPnN0YXJ0 OworCiskbm9kZV9wcmltYXJ5LT5wc3FsKCdwb3N0Z3JlcycsIHFbQ1JFQVRFIERBVEFCQVNF IHRlc3RkYl0pOworCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW1NF TEVDVCAqIEZST00gcGdfY3JlYXRlX3BoeXNpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoJyRwcmlt YXJ5X3Nsb3RuYW1lJyk7XSk7CitteSAkYmFja3VwX25hbWUgPSAnYjEnOworJG5vZGVfcHJp bWFyeS0+YmFja3VwKCRiYWNrdXBfbmFtZSk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CisjIEluaXRpYWxpemUgc3RhbmRieSBub2RlCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor Ciskbm9kZV9zdGFuZGJ5LT5pbml0X2Zyb21fYmFja3VwKAorCSRub2RlX3ByaW1hcnksICRi YWNrdXBfbmFtZSwKKwloYXNfc3RyZWFtaW5nID0+IDEsCisJaGFzX3Jlc3RvcmluZyA9PiAx KTsKKyRub2RlX3N0YW5kYnktPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCXFx W3ByaW1hcnlfc2xvdF9uYW1lID0gJyRwcmltYXJ5X3Nsb3RuYW1lJ10pOworJG5vZGVfc3Rh bmRieS0+c3RhcnQ7Ciskbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0 YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24oJ2ZsdXNoJykpOworCisKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRl c3QgdGhhdCBsb2dpY2FsIGRlY29kaW5nIG9uIHRoZSBzdGFuZGJ5CisjIGJlaGF2ZXMgY29y cmVjdGx5LgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKworY3JlYXRlX2xvZ2ljYWxfc2xvdHMoKTsKKworJG5vZGVfcHJpbWFyeS0+c2Fm ZV9wc3FsKCd0ZXN0ZGInLCBxcVtDUkVBVEUgVEFCTEUgZGVjb2RpbmdfdGVzdCh4IGludGVn ZXIsIHkgdGV4dCk7XSk7Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFx W0lOU0VSVCBJTlRPIGRlY29kaW5nX3Rlc3QoeCx5KSBTRUxFQ1Qgcywgczo6dGV4dCBGUk9N IGdlbmVyYXRlX3NlcmllcygxLDEwKSBzO10pOworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zv cl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24o J2ZsdXNoJykpOworCitteSAkcmVzdWx0ID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCd0 ZXN0ZGInLAorCXFxW1NFTEVDVCBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ2FjdGl2 ZXNsb3QnLCBOVUxMLCBOVUxMKTtdKTsKKworIyB0ZXN0IGlmIGJhc2ljIGRlY29kaW5nIHdv cmtzCitpcyhzY2FsYXIobXkgQGZvb2JhciA9IHNwbGl0IC9eL20sICRyZXN1bHQpLAorCTE0 LCAnRGVjb2RpbmcgcHJvZHVjZWQgMTQgcm93cycpOworCisjIEluc2VydCBzb21lIHJvd3Mg YW5kIHZlcmlmeSB0aGF0IHdlIGdldCB0aGUgc2FtZSByZXN1bHRzIGZyb20gcGdfcmVjdmxv Z2ljYWwKKyMgYW5kIHRoZSBTUUwgaW50ZXJmYWNlLgorJG5vZGVfcHJpbWFyeS0+c2FmZV9w c3FsKCd0ZXN0ZGInLAorCXFxW0lOU0VSVCBJTlRPIGRlY29kaW5nX3Rlc3QoeCx5KSBTRUxF Q1Qgcywgczo6dGV4dCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDQpIHM7XQorKTsKKworbXkg JGV4cGVjdGVkID0gcXtCRUdJTgordGFibGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6IElOU0VS VDogeFtpbnRlZ2VyXToxIHlbdGV4dF06JzEnCit0YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVz dDogSU5TRVJUOiB4W2ludGVnZXJdOjIgeVt0ZXh0XTonMicKK3RhYmxlIHB1YmxpYy5kZWNv ZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06MyB5W3RleHRdOiczJwordGFibGUgcHVi bGljLmRlY29kaW5nX3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXTo0IHlbdGV4dF06JzQnCitD T01NSVR9OworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5k YnksICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24oJ2ZsdXNoJykpOworCitteSAkc3Rk b3V0X3NxbCA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgndGVzdGRiJywKKwlxcVtTRUxF Q1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9wZWVrX2NoYW5nZXMoJ2FjdGl2ZXNsb3Qn LCBOVUxMLCBOVUxMLCAnaW5jbHVkZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0eS14YWN0cycs ICcxJyk7XQorKTsKKworaXMoJHN0ZG91dF9zcWwsICRleHBlY3RlZCwgJ2dvdCBleHBlY3Rl ZCBvdXRwdXQgZnJvbSBTUUwgZGVjb2Rpbmcgc2Vzc2lvbicpOworCitteSAkZW5kcG9zID0g JG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCd0ZXN0ZGInLAorCSJTRUxFQ1QgbHNuIEZST00g cGdfbG9naWNhbF9zbG90X3BlZWtfY2hhbmdlcygnYWN0aXZlc2xvdCcsIE5VTEwsIE5VTEwp IE9SREVSIEJZIGxzbiBERVNDIExJTUlUIDE7IgorKTsKK3ByaW50ICJ3YWl0aW5nIHRvIHJl cGxheSAkZW5kcG9zXG4iOworCisjIEluc2VydCBzb21lIHJvd3MgYWZ0ZXIgJGVuZHBvcywg d2hpY2ggd2Ugd29uJ3QgcmVhZC4KKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRi JywKKwlxcVtJTlNFUlQgSU5UTyBkZWNvZGluZ190ZXN0KHgseSkgU0VMRUNUIHMsIHM6OnRl eHQgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNSw1MCkgcztdCispOworCiskbm9kZV9wcmltYXJ5 LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmlt YXJ5LT5sc24oJ2ZsdXNoJykpOworCitteSAkc3Rkb3V0X3JlY3YgPSAkbm9kZV9zdGFuZGJ5 LT5wZ19yZWN2bG9naWNhbF91cHRvKAorICAgICd0ZXN0ZGInLCAnYWN0aXZlc2xvdCcsICRl bmRwb3MsIDE4MCwKKyAgICAnaW5jbHVkZS14aWRzJyAgICAgPT4gJzAnLAorICAgICdza2lw LWVtcHR5LXhhY3RzJyA9PiAnMScpOworY2hvbXAoJHN0ZG91dF9yZWN2KTsKK2lzKCRzdGRv dXRfcmVjdiwgJGV4cGVjdGVkLAorICAgICdnb3Qgc2FtZSBleHBlY3RlZCBvdXRwdXQgZnJv bSBwZ19yZWN2bG9naWNhbCBkZWNvZGluZyBzZXNzaW9uJyk7CisKKyRub2RlX3N0YW5kYnkt PnBvbGxfcXVlcnlfdW50aWwoJ3Rlc3RkYicsCisJIlNFTEVDVCBFWElTVFMgKFNFTEVDVCAx IEZST00gcGdfcmVwbGljYXRpb25fc2xvdHMgV0hFUkUgc2xvdF9uYW1lID0gJ2FjdGl2ZXNs b3QnIEFORCBhY3RpdmVfcGlkIElTIE5VTEwpIgorKSBvciBkaWUgInNsb3QgbmV2ZXIgYmVj YW1lIGluYWN0aXZlIjsKKworJHN0ZG91dF9yZWN2ID0gJG5vZGVfc3RhbmRieS0+cGdfcmVj dmxvZ2ljYWxfdXB0bygKKyAgICAndGVzdGRiJywgJ2FjdGl2ZXNsb3QnLCAkZW5kcG9zLCAx ODAsCisgICAgJ2luY2x1ZGUteGlkcycgICAgID0+ICcwJywKKyAgICAnc2tpcC1lbXB0eS14 YWN0cycgPT4gJzEnKTsKK2Nob21wKCRzdGRvdXRfcmVjdik7Citpcygkc3Rkb3V0X3JlY3Ys ICcnLCAncGdfcmVjdmxvZ2ljYWwgYWNrbm93bGVkZ2VkIGNoYW5nZXMnKTsKKworJG5vZGVf cHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdDUkVBVEUgREFUQUJBU0Ugb3RoZXJk YicpOworCitpcyggJG5vZGVfcHJpbWFyeS0+cHNxbCgKKyAgICAgICAgJ290aGVyZGInLAor ICAgICAgICAiU0VMRUNUIGxzbiBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9wZWVrX2NoYW5nZXMo J2FjdGl2ZXNsb3QnLCBOVUxMLCBOVUxMKSBPUkRFUiBCWSBsc24gREVTQyBMSU1JVCAxOyIK KyAgICApLAorICAgIDMsCisgICAgJ3JlcGxheWluZyBsb2dpY2FsIHNsb3QgZnJvbSBhbm90 aGVyIGRhdGFiYXNlIGZhaWxzJyk7CisKKyMgZHJvcCB0aGUgbG9naWNhbCBzbG90cworJG5v ZGVfc3RhbmRieS0+cHNxbCgncG9zdGdyZXMnLCBxW1NFTEVDVCBwZ19kcm9wX3JlcGxpY2F0 aW9uX3Nsb3QoJ2luYWN0aXZlc2xvdCcpXSk7Ciskbm9kZV9zdGFuZGJ5LT5wc3FsKCdwb3N0 Z3JlcycsIHFbU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCgnYWN0aXZlc2xvdCcp XSk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisjIFJlY292ZXJ5IGNvbmZsaWN0OiBJbnZhbGlkYXRlIGNvbmZsaWN0aW5nIHNsb3Rz LCBpbmNsdWRpbmcgaW4tdXNlIHNsb3RzCisjIFNjZW5hcmlvIDE6IGhvdF9zdGFuZGJ5X2Zl ZWRiYWNrIG9mZiBhbmQgdmFjdXVtIEZVTEwKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NyZWF0ZV9sb2dpY2FsX3Nsb3RzKCk7CisK KyMgT25lIHdheSB0byByZXByb2R1Y2UgcmVjb3ZlcnkgY29uZmxpY3QgaXMgdG8gcnVuIFZB Q1VVTSBGVUxMIHdpdGgKKyMgaG90X3N0YW5kYnlfZmVlZGJhY2sgdHVybmVkIG9mZiBvbiB0 aGUgc3RhbmRieS4KKyRub2RlX3N0YW5kYnktPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNv bmYnLHFbCitob3Rfc3RhbmRieV9mZWVkYmFjayA9IG9mZgorXSk7Ciskbm9kZV9zdGFuZGJ5 LT5yZXN0YXJ0OworIyBlbnN1cmUgd2FscmVjZWl2ZXIgZmVlZGJhY2sgb2ZmIGJ5IHdhaXRp bmcgZm9yIGV4cGVjdGVkIHhtaW4gYW5kCisjIGNhdGFsb2dfeG1pbiBvbiBwcmltYXJ5LiBC b3RoIHNob3VsZCBiZSBOVUxMIHNpbmNlIGhzX2ZlZWRiYWNrIGlzIG9mZgord2FpdF9mb3Jf eG1pbnMoJG5vZGVfcHJpbWFyeSwgJHByaW1hcnlfc2xvdG5hbWUsCisJCQkgICAieG1pbiBJ UyBOVUxMIEFORCBjYXRhbG9nX3htaW4gSVMgTlVMTCIpOworCiskaGFuZGxlID0gbWFrZV9z bG90X2FjdGl2ZSgxKTsKKworIyBUaGlzIHNob3VsZCB0cmlnZ2VyIHRoZSBjb25mbGljdAor JG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCAnVkFDVVVNIEZVTEwnKTsKKwor JG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5 JywgJG5vZGVfcHJpbWFyeS0+bHNuKCdmbHVzaCcpKTsKKworIyBtZXNzYWdlIHNob3VsZCBi ZSBpc3N1ZWQKK29rKCBmaW5kX2luX2xvZygKKyAgICRub2RlX3N0YW5kYnksCisgICJpbnZh bGlkYXRpbmcgc2xvdCBcImluYWN0aXZlc2xvdFwiIGJlY2F1c2UgaXQgY29uZmxpY3RzIHdp dGggcmVjb3ZlcnkiKSwKKyAgJ2luYWN0aXZlc2xvdCBzbG90IGludmFsaWRhdGlvbiBpcyBs b2dnZWQgd2l0aCB2YWN1dW0gRlVMTCcpOworCitvayggZmluZF9pbl9sb2coCisgICAkbm9k ZV9zdGFuZGJ5LAorICAiaW52YWxpZGF0aW5nIHNsb3QgXCJhY3RpdmVzbG90XCIgYmVjYXVz ZSBpdCBjb25mbGljdHMgd2l0aCByZWNvdmVyeSIpLAorICAnYWN0aXZlc2xvdCBzbG90IGlu dmFsaWRhdGlvbiBpcyBsb2dnZWQgd2l0aCB2YWN1dW0gRlVMTCcpOworCisjIFZlcmlmeSB0 aGF0IHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzLmNvbmZsX2xvZ2ljYWxzbG90IGhhcyBi ZWVuIHVwZGF0ZWQKK29rKCAkbm9kZV9zdGFuZGJ5LT5wb2xsX3F1ZXJ5X3VudGlsKAorCSdw b3N0Z3JlcycsCisJInNlbGVjdCAoY29uZmxfbG9naWNhbHNsb3QgPSAyKSBmcm9tIHBnX3N0 YXRfZGF0YWJhc2VfY29uZmxpY3RzIHdoZXJlIGRhdG5hbWUgPSAndGVzdGRiJyIsICd0Jyks CisJJ2NvbmZsX2xvZ2ljYWxzbG90IHVwZGF0ZWQnKSBvciBkaWUgIlRpbWVkIG91dCB3YWl0 aW5nIGNvbmZsX2xvZ2ljYWxzbG90IHRvIGJlIHVwZGF0ZWQiOworCiskaGFuZGxlID0gbWFr ZV9zbG90X2FjdGl2ZSgwKTsKK3VzbGVlcCgxMDBfMDAwKTsKKworIyBXZSBhcmUgbm90IGFi bGUgdG8gcmVhZCBmcm9tIHRoZSBzbG90IGFzIGl0IGhhcyBiZWVuIGludmFsaWRhdGVkCitv ayggZmluZF9pbl9sb2coCisgICAkbm9kZV9zdGFuZGJ5LAorICAiY2Fubm90IHJlYWQgZnJv bSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QgXCJhY3RpdmVzbG90XCIiKSwKKyAgJ2Nhbm5v dCByZWFkIGZyb20gbG9naWNhbCByZXBsaWNhdGlvbiBzbG90Jyk7CisKKyMgVHVybiBob3Rf c3RhbmRieV9mZWVkYmFjayBiYWNrIG9uCiskbm9kZV9zdGFuZGJ5LT5hcHBlbmRfY29uZign cG9zdGdyZXNxbC5jb25mJyxxWworaG90X3N0YW5kYnlfZmVlZGJhY2sgPSBvbgorXSk7Cisk bm9kZV9zdGFuZGJ5LT5yZXN0YXJ0OworCisjIGVuc3VyZSB3YWxyZWNlaXZlciBmZWVkYmFj ayBzZW50IGJ5IHdhaXRpbmcgZm9yIGV4cGVjdGVkIHhtaW4gYW5kCisjIGNhdGFsb2dfeG1p biBvbiBwcmltYXJ5LiBXaXRoIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIG9uLCB4bWluIHNob3Vs ZCBhZHZhbmNlLAorIyBidXQgY2F0YWxvZ194bWluIHNob3VsZCBzdGlsbCByZW1haW4gTlVM TCBzaW5jZSB0aGVyZSBpcyBubyBsb2dpY2FsIHNsb3QuCit3YWl0X2Zvcl94bWlucygkbm9k ZV9wcmltYXJ5LCAkcHJpbWFyeV9zbG90bmFtZSwKKwkJCSAgICJ4bWluIElTIE5PVCBOVUxM IEFORCBjYXRhbG9nX3htaW4gSVMgTlVMTCIpOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBSZWNvdmVyeSBjb25mbGljdDogSW52 YWxpZGF0ZSBjb25mbGljdGluZyBzbG90cywgaW5jbHVkaW5nIGluLXVzZSBzbG90cworIyBT Y2VuYXJpbyAyOiBjb25mbGljdCBkdWUgdG8gcm93IHJlbW92YWwgd2l0aCBob3Rfc3RhbmRi eV9mZWVkYmFjayBvZmYuCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworCisjIGdldCB0aGUgcG9zaXRpb24gdG8gc2VhcmNoIGZyb20gaW4g dGhlIHN0YW5kYnkgbG9nZmlsZQorbXkgJGxvZ3N0YXJ0ID0gZ2V0X2xvZ19zaXplKCRub2Rl X3N0YW5kYnkpOworCisjIGRyb3AgdGhlIGxvZ2ljYWwgc2xvdHMKKyRub2RlX3N0YW5kYnkt PnBzcWwoJ3Bvc3RncmVzJywgcVtTRUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KCdp bmFjdGl2ZXNsb3QnKV0pOworJG5vZGVfc3RhbmRieS0+cHNxbCgncG9zdGdyZXMnLCBxW1NF TEVDVCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Nsb3QoJ2FjdGl2ZXNsb3QnKV0pOworCitjcmVh dGVfbG9naWNhbF9zbG90cygpOworCisjIE9uZSB3YXkgdG8gcHJvZHVjZSByZWNvdmVyeSBj b25mbGljdCBpcyB0byBjcmVhdGUvZHJvcCBhIHJlbGF0aW9uIGFuZCBsYXVuY2ggYSB2YWN1 dW0KKyMgd2l0aCBob3Rfc3RhbmRieV9mZWVkYmFjayB0dXJuZWQgb2ZmIG9uIHRoZSBzdGFu ZGJ5LgorJG5vZGVfc3RhbmRieS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicscVsK K2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gb2ZmCitdKTsKKyRub2RlX3N0YW5kYnktPnJlc3Rh cnQ7CisjIGVuc3VyZSB3YWxyZWNlaXZlciBmZWVkYmFjayBvZmYgYnkgd2FpdGluZyBmb3Ig ZXhwZWN0ZWQgeG1pbiBhbmQKKyMgY2F0YWxvZ194bWluIG9uIHByaW1hcnkuIEJvdGggc2hv dWxkIGJlIE5VTEwgc2luY2UgaHNfZmVlZGJhY2sgaXMgb2ZmCit3YWl0X2Zvcl94bWlucygk bm9kZV9wcmltYXJ5LCAkcHJpbWFyeV9zbG90bmFtZSwKKwkJCSAgICJ4bWluIElTIE5VTEwg QU5EIGNhdGFsb2dfeG1pbiBJUyBOVUxMIik7CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0 aXZlKDEpOworCisjIFRoaXMgc2hvdWxkIHRyaWdnZXIgdGhlIGNvbmZsaWN0Ciskbm9kZV9w cmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW0NSRUFURSBUQUJMRSBjb25mbGljdF90 ZXN0KHggaW50ZWdlciwgeSB0ZXh0KTtdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgn dGVzdGRiJywgcXFbRFJPUCBUQUJMRSBjb25mbGljdF90ZXN0O10pOworJG5vZGVfcHJpbWFy eS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCAnVkFDVVVNJyk7CisKKyRub2RlX3ByaW1hcnktPndh aXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3ByaW1hcnkt PmxzbignZmx1c2gnKSk7CisKKyMgbWVzc2FnZSBzaG91bGQgYmUgaXNzdWVkCitvayggZmlu ZF9pbl9sb2coCisgICAkbm9kZV9zdGFuZGJ5LAorICAiaW52YWxpZGF0aW5nIHNsb3QgXCJp bmFjdGl2ZXNsb3RcIiBiZWNhdXNlIGl0IGNvbmZsaWN0cyB3aXRoIHJlY292ZXJ5IiwgJGxv Z3N0YXJ0KSwKKyAgJ2luYWN0aXZlc2xvdCBzbG90IGludmFsaWRhdGlvbiBpcyBsb2dnZWQg ZHVlIHRvIHJvdyByZW1vdmFsJyk7CisKK29rKCBmaW5kX2luX2xvZygKKyAgICRub2RlX3N0 YW5kYnksCisgICJpbnZhbGlkYXRpbmcgc2xvdCBcImFjdGl2ZXNsb3RcIiBiZWNhdXNlIGl0 IGNvbmZsaWN0cyB3aXRoIHJlY292ZXJ5IiwgJGxvZ3N0YXJ0KSwKKyAgJ2FjdGl2ZXNsb3Qg c2xvdCBpbnZhbGlkYXRpb24gaXMgbG9nZ2VkIGR1ZSB0byByb3cgcmVtb3ZhbCcpOworCisj IFZlcmlmeSB0aGF0IHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzLmNvbmZsX2xvZ2ljYWxz bG90IGhhcyBiZWVuIHVwZGF0ZWQKK29rKCAkbm9kZV9zdGFuZGJ5LT5wb2xsX3F1ZXJ5X3Vu dGlsKAorCSdwb3N0Z3JlcycsCisJInNlbGVjdCAoY29uZmxfbG9naWNhbHNsb3QgPSAyKSBm cm9tIHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzIHdoZXJlIGRhdG5hbWUgPSAndGVzdGRi JyIsICd0JyksCisJJ2NvbmZsX2xvZ2ljYWxzbG90IHVwZGF0ZWQnKSBvciBkaWUgIlRpbWVk IG91dCB3YWl0aW5nIGNvbmZsX2xvZ2ljYWxzbG90IHRvIGJlIHVwZGF0ZWQiOworCiskaGFu ZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgwKTsKK3VzbGVlcCgxMDBfMDAwKTsKKworIyBXZSBh cmUgbm90IGFibGUgdG8gcmVhZCBmcm9tIHRoZSBzbG90IGFzIGl0IGhhcyBiZWVuIGludmFs aWRhdGVkCitvayggZmluZF9pbl9sb2coCisgICAkbm9kZV9zdGFuZGJ5LAorICAiY2Fubm90 IHJlYWQgZnJvbSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QgXCJhY3RpdmVzbG90XCIiLCAk bG9nc3RhcnQpLAorICAnY2Fubm90IHJlYWQgZnJvbSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNs b3QnKTsKKworIyBUdXJuIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIGJhY2sgb24KKyRub2RlX3N0 YW5kYnktPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLHFbCitob3Rfc3RhbmRieV9m ZWVkYmFjayA9IG9uCitdKTsKKyRub2RlX3N0YW5kYnktPnJlc3RhcnQ7CisKKyMgZW5zdXJl IHdhbHJlY2VpdmVyIGZlZWRiYWNrIHNlbnQgYnkgd2FpdGluZyBmb3IgZXhwZWN0ZWQgeG1p biBhbmQKKyMgY2F0YWxvZ194bWluIG9uIHByaW1hcnkuIFdpdGggaG90X3N0YW5kYnlfZmVl ZGJhY2sgb24sIHhtaW4gc2hvdWxkIGFkdmFuY2UsCisjIGJ1dCBjYXRhbG9nX3htaW4gc2hv dWxkIHN0aWxsIHJlbWFpbiBOVUxMIHNpbmNlIHRoZXJlIGlzIG5vIGxvZ2ljYWwgc2xvdC4K K3dhaXRfZm9yX3htaW5zKCRub2RlX3ByaW1hcnksICRwcmltYXJ5X3Nsb3RuYW1lLAorCQkJ ICAgInhtaW4gSVMgTk9UIE5VTEwgQU5EIGNhdGFsb2dfeG1pbiBJUyBOVUxMIik7CisKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFJl Y292ZXJ5IGNvbmZsaWN0OiBJbnZhbGlkYXRlIGNvbmZsaWN0aW5nIHNsb3RzLCBpbmNsdWRp bmcgaW4tdXNlIHNsb3RzCisjIFNjZW5hcmlvIDM6IGluY29ycmVjdCB3YWxfbGV2ZWwgb24g cHJpbWFyeS4KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisKKyMgZ2V0IHRoZSBwb3NpdGlvbiB0byBzZWFyY2ggZnJvbSBpbiB0aGUgc3Rh bmRieSBsb2dmaWxlCiskbG9nc3RhcnQgPSBnZXRfbG9nX3NpemUoJG5vZGVfc3RhbmRieSk7 CisKKyMgZHJvcCB0aGUgbG9naWNhbCBzbG90cworJG5vZGVfc3RhbmRieS0+cHNxbCgncG9z dGdyZXMnLCBxW1NFTEVDVCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Nsb3QoJ2luYWN0aXZlc2xv dCcpXSk7Ciskbm9kZV9zdGFuZGJ5LT5wc3FsKCdwb3N0Z3JlcycsIHFbU0VMRUNUIHBnX2Ry b3BfcmVwbGljYXRpb25fc2xvdCgnYWN0aXZlc2xvdCcpXSk7CisKK2NyZWF0ZV9sb2dpY2Fs X3Nsb3RzKCk7CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKDEpOworCisjIE1ha2Ug cHJpbWFyeSB3YWxfbGV2ZWwgcmVwbGljYS4gVGhpcyB3aWxsIHRyaWdnZXIgc2xvdCBjb25m bGljdC4KKyRub2RlX3ByaW1hcnktPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLHFb Cit3YWxfbGV2ZWwgPSAncmVwbGljYScKK10pOworJG5vZGVfcHJpbWFyeS0+cmVzdGFydDsK KworJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVw bGF5JywgJG5vZGVfcHJpbWFyeS0+bHNuKCdmbHVzaCcpKTsKKworIyBtZXNzYWdlIHNob3Vs ZCBiZSBpc3N1ZWQKK29rKCBmaW5kX2luX2xvZygKKyAgICRub2RlX3N0YW5kYnksCisgICJp bnZhbGlkYXRpbmcgc2xvdCBcImluYWN0aXZlc2xvdFwiIGJlY2F1c2UgaXQgY29uZmxpY3Rz IHdpdGggcmVjb3ZlcnkiLCAkbG9nc3RhcnQpLAorICAnaW5hY3RpdmVzbG90IHNsb3QgaW52 YWxpZGF0aW9uIGlzIGxvZ2dlZCBkdWUgdG8gd2FsX2xldmVsJyk7CisKK29rKCBmaW5kX2lu X2xvZygKKyAgICRub2RlX3N0YW5kYnksCisgICJpbnZhbGlkYXRpbmcgc2xvdCBcImFjdGl2 ZXNsb3RcIiBiZWNhdXNlIGl0IGNvbmZsaWN0cyB3aXRoIHJlY292ZXJ5IiwgJGxvZ3N0YXJ0 KSwKKyAgJ2FjdGl2ZXNsb3Qgc2xvdCBpbnZhbGlkYXRpb24gaXMgbG9nZ2VkIGR1ZSB0byB3 YWxfbGV2ZWwnKTsKKworIyBWZXJpZnkgdGhhdCBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0 cy5jb25mbF9sb2dpY2Fsc2xvdCBoYXMgYmVlbiB1cGRhdGVkCitvayggJG5vZGVfc3RhbmRi eS0+cG9sbF9xdWVyeV91bnRpbCgKKwkncG9zdGdyZXMnLAorCSJzZWxlY3QgKGNvbmZsX2xv Z2ljYWxzbG90ID0gMikgZnJvbSBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cyB3aGVyZSBk YXRuYW1lID0gJ3Rlc3RkYiciLCAndCcpLAorCSdjb25mbF9sb2dpY2Fsc2xvdCB1cGRhdGVk Jykgb3IgZGllICJUaW1lZCBvdXQgd2FpdGluZyBjb25mbF9sb2dpY2Fsc2xvdCB0byBiZSB1 cGRhdGVkIjsKKworJGhhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoMCk7Cit1c2xlZXAoMTAw XzAwMCk7CisKK29rKCBmaW5kX2luX2xvZygKKyAgICRub2RlX3N0YW5kYnksCisgICJsb2dp Y2FsIGRlY29kaW5nIG9uIHN0YW5kYnkgcmVxdWlyZXMgd2FsX2xldmVsID49IGxvZ2ljYWwg b24gbWFzdGVyIiwgJGxvZ3N0YXJ0KSwKKyAgJ2Nhbm5vdCBzdGFydCByZXBsaWNhdGlvbiBi ZWNhdXNlIHdhbF9sZXZlbCA8IGxvZ2ljYWwgb24gbWFzdGVyJyk7CisKKyMgUmVzdG9yZSBw cmltYXJ5IHdhbF9sZXZlbAorJG5vZGVfcHJpbWFyeS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVz cWwuY29uZicscVsKK3dhbF9sZXZlbCA9ICdsb2dpY2FsJworXSk7Ciskbm9kZV9wcmltYXJ5 LT5yZXN0YXJ0OworJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFu ZGJ5LCAncmVwbGF5JywgJG5vZGVfcHJpbWFyeS0+bHNuKCdmbHVzaCcpKTsKKworJGhhbmRs ZSA9IG1ha2Vfc2xvdF9hY3RpdmUoMCk7Cit1c2xlZXAoMTAwXzAwMCk7CisKKyMgYXMgdGhl IHNsb3QgaGFzIGJlZW4gaW52YWxpZGF0ZWQgd2Ugc2hvdWxkIG5vdCBiZSBhYmxlIHRvIHJl YWQKK29rKCBmaW5kX2luX2xvZygKKyAgICRub2RlX3N0YW5kYnksCisgICJjYW5ub3QgcmVh ZCBmcm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBcImFjdGl2ZXNsb3RcIiIsICRsb2dz dGFydCksCisgICdjYW5ub3QgcmVhZCBmcm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCcp OworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworIyBEUk9QIERBVEFCQVNFIHNob3VsZCBkcm9wcyBpdCdzIHNsb3RzLCBpbmNsdWRpbmcg YWN0aXZlIHNsb3RzLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKworJG5vZGVfc3RhbmRieS0+cHNxbCgncG9zdGdyZXMnLCBxW1NFTEVD VCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Nsb3QoJ2luYWN0aXZlc2xvdCcpXSk7Ciskbm9kZV9z dGFuZGJ5LT5wc3FsKCdwb3N0Z3JlcycsIHFbU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25f c2xvdCgnYWN0aXZlc2xvdCcpXSk7CitjcmVhdGVfbG9naWNhbF9zbG90cygpOworJGhhbmRs ZSA9IG1ha2Vfc2xvdF9hY3RpdmUoMSk7CisjIENyZWF0ZSBhIHNsb3Qgb24gYSBkYXRhYmFz ZSB0aGF0IHdvdWxkIG5vdCBiZSBkcm9wcGVkLiBUaGlzIHNsb3Qgc2hvdWxkIG5vdAorIyBn ZXQgZHJvcHBlZC4KKyRub2RlX3N0YW5kYnktPmNyZWF0ZV9sb2dpY2FsX3Nsb3Rfb25fc3Rh bmRieSgkbm9kZV9wcmltYXJ5LCAnb3RoZXJzbG90JywgJ3Bvc3RncmVzJyk7CisKKyMgZHJv cGRiIG9uIHRoZSBwcmltYXJ5IHRvIHZlcmlmeSBzbG90cyBhcmUgZHJvcHBlZCBvbiBzdGFu ZGJ5Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcVtEUk9QIERBVEFC QVNFIHRlc3RkYl0pOworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2Rl X3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24oJ2ZsdXNoJykpOworCitp cygkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxW1NFTEVDVCBFWElT VFMoU0VMRUNUIDEgRlJPTSBwZ19kYXRhYmFzZSBXSEVSRSBkYXRuYW1lID0gJ3Rlc3RkYicp XSksICdmJywKKwknZGF0YWJhc2UgZHJvcHBlZCBvbiBzdGFuZGJ5Jyk7CisKK2NoZWNrX3Ns b3RzX2Ryb3BwZWQoJGhhbmRsZSk7CisKK2lzKCRub2RlX3N0YW5kYnktPnNsb3QoJ290aGVy c2xvdCcpLT57J3Nsb3RfdHlwZSd9LCAnbG9naWNhbCcsCisJJ290aGVyc2xvdCBvbiBzdGFu ZGJ5IG5vdCBkcm9wcGVkJyk7CisKKyMgQ2xlYW51cCA6IG1hbnVhbGx5IGRyb3AgdGhlIHNs b3QgdGhhdCB3YXMgbm90IGRyb3BwZWQuCiskbm9kZV9zdGFuZGJ5LT5wc3FsKCdwb3N0Z3Jl cycsIHFbU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCgnb3RoZXJzbG90JyldKTsK KworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KyMgVGVzdCBzdGFuZGJ5IHByb21vdGlvbiBhbmQgbG9naWNhbCBkZWNvZGluZyBiZWhhdmlv cgorIyBhZnRlciB0aGUgc3RhbmRieSBnZXRzIHByb21vdGVkLgorIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworJG5vZGVfcHJpbWFyeS0+ cHNxbCgncG9zdGdyZXMnLCBxW0NSRUFURSBEQVRBQkFTRSB0ZXN0ZGJdKTsKKyRub2RlX3By aW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbQ1JFQVRFIFRBQkxFIGRlY29kaW5nX3Rl c3QoeCBpbnRlZ2VyLCB5IHRleHQpO10pOworCisjIGNyZWF0ZSB0aGUgbG9naWNhbCBzbG90 cworY3JlYXRlX2xvZ2ljYWxfc2xvdHMoKTsKKworIyBJbnNlcnQgc29tZSByb3dzIGJlZm9y ZSB0aGUgcHJvbW90aW9uCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJ cXFbSU5TRVJUIElOVE8gZGVjb2RpbmdfdGVzdCh4LHkpIFNFTEVDVCBzLCBzOjp0ZXh0IEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsNCkgcztdCispOworCiskbm9kZV9wcmltYXJ5LT53YWl0 X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5s c24oJ2ZsdXNoJykpOworCisjIHByb21vdGUKKyRub2RlX3N0YW5kYnktPnByb21vdGU7CisK KyMgaW5zZXJ0IHNvbWUgcm93cyBvbiBwcm9tb3RlZCBzdGFuZGJ5Ciskbm9kZV9zdGFuZGJ5 LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFbSU5TRVJUIElOVE8gZGVjb2RpbmdfdGVzdCh4 LHkpIFNFTEVDVCBzLCBzOjp0ZXh0IEZST00gZ2VuZXJhdGVfc2VyaWVzKDUsNykgcztdCisp OworCisKKyRleHBlY3RlZCA9IHF7QkVHSU4KK3RhYmxlIHB1YmxpYy5kZWNvZGluZ190ZXN0 OiBJTlNFUlQ6IHhbaW50ZWdlcl06MSB5W3RleHRdOicxJwordGFibGUgcHVibGljLmRlY29k aW5nX3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXToyIHlbdGV4dF06JzInCit0YWJsZSBwdWJs aWMuZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjMgeVt0ZXh0XTonMycKK3Rh YmxlIHB1YmxpYy5kZWNvZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06NCB5W3RleHRd Oic0JworQ09NTUlUCitCRUdJTgordGFibGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6IElOU0VS VDogeFtpbnRlZ2VyXTo1IHlbdGV4dF06JzUnCit0YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVz dDogSU5TRVJUOiB4W2ludGVnZXJdOjYgeVt0ZXh0XTonNicKK3RhYmxlIHB1YmxpYy5kZWNv ZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06NyB5W3RleHRdOic3JworQ09NTUlUfTsK KworIyBjaGVjayB0aGF0IHdlIGFyZSBkZWNvZGluZyBwcmUgYW5kIHBvc3QgcHJvbW90aW9u IGluc2VydGVkIHJvd3MKKyRzdGRvdXRfc3FsID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3Fs KCd0ZXN0ZGInLAorCXFxW1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90X3BlZWtf Y2hhbmdlcygnYWN0aXZlc2xvdCcsIE5VTEwsIE5VTEwsICdpbmNsdWRlLXhpZHMnLCAnMCcs ICdza2lwLWVtcHR5LXhhY3RzJywgJzEnKTtdCispOworCitpcygkc3Rkb3V0X3NxbCwgJGV4 cGVjdGVkLCAnZ290IGV4cGVjdGVkIG91dHB1dCBmcm9tIFNRTCBkZWNvZGluZyBzZXNzaW9u IG9uIHByb21vdGVkIHN0YW5kYnknKTsKLS0gCjIuMTguNAoK --------------D6A801DD7417B05266914188 Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v23-0003-Allow-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v23-0003-Allow-logical-decoding-on-standby.patch" RnJvbSAzNDZmOGUxOGYxZGQ4MzRmYmIxZjI1ODZiNzJjN2NmZjQ2MDUzZmUyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogRnJpLCA2IEF1ZyAyMDIxIDA5OjQyOjQzICswMDAwClN1YmplY3Q6IFtQQVRD SCB2MjMgMy81XSBBbGxvdyBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkuCgpBbGxvdyBh IGxvZ2ljYWwgc2xvdCB0byBiZSBjcmVhdGVkIG9uIHN0YW5kYnkuIFJlc3RyaWN0IGl0cyB1 c2FnZQpvciBpdHMgY3JlYXRpb24gaWYgd2FsX2xldmVsIG9uIHByaW1hcnkgaXMgbGVzcyB0 aGFuIGxvZ2ljYWwuCkR1cmluZyBzbG90IGNyZWF0aW9uLCBpdCdzIHJlc3RhcnRfbHNuIGlz IHNldCB0byB0aGUgbGFzdCByZXBsYXllZApMU04uIEVmZmVjdGl2ZWx5LCBhIGxvZ2ljYWwg c2xvdCBjcmVhdGlvbiBvbiBzdGFuZGJ5IHdhaXRzIGZvciBhbgp4bF9ydW5uaW5nX3hhY3Qg cmVjb3JkIHRvIGFycml2ZSBmcm9tIHByaW1hcnkuIENvbmZsaWN0aW5nIHNsb3RzCndvdWxk IGJlIGhhbmRsZWQgaW4gbmV4dCBjb21taXRzLgoKQXV0aG9yOiBBbmRyZXMgRnJldW5kIChp biBhbiBvbGRlciB2ZXJzaW9uKSwgQW1pdCBLaGFuZGVrYXIsIEJlcnRyYW5kIERyb3V2b3QK UmV2aWV3ZWQtQnk6IEJlcnRyYW5kIERyb3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVydCBI YWFzLCBGYWJyaXppbyBkZSBSb3llcyBNZWxsbwotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2cuYyAgICAgICAgICAgICB8IDMzICsrKysrKysrKystCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVuY3MuYyAgICAgICAgfCAgMiArLQogc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMgICAgICAgICB8ICA0ICstCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jICAgICAgfCAyMiArKysrKysrLQog c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMgICAgIHwgMzcgKysr KysrLS0tLS0tCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYyAgICAg ICAgfCAgMiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jICAgICAgICAgICAg ICAgIHwgNTYgKysrKysrKysrKy0tLS0tLS0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v c2xvdGZ1bmNzLmMgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3dhbHJlY2VpdmVyLmMgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlv bi93YWxyZWNlaXZlcmZ1bmNzLmMgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vd2Fsc2VuZGVyLmMgICAgICAgICAgIHwgMjYgKysrKysrLS0tCiBzcmMvaW5jbHVkZS9h Y2Nlc3MveGxvZy5oICAgICAgICAgICAgICAgICAgICAgfCAgMyArLQogMTMgZmlsZXMgY2hh bmdlZCwgMTMyIGluc2VydGlvbnMoKyksIDYzIGRlbGV0aW9ucygtKQogIDE2LjclIHNyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtLwogIDMyLjclIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvCiAgNDUuMiUgc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vCiAgIDUuMyUgc3Jj LwoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwppbmRleCA3YjZkNzVjZDRiLi5kM2Mw NDE4MmEwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCkBAIC01MDgyLDYgKzUw ODIsMTcgQEAgTG9jYWxQcm9jZXNzQ29udHJvbEZpbGUoYm9vbCByZXNldCkKIAlSZWFkQ29u dHJvbEZpbGUoKTsKIH0KIAorLyoKKyAqIEdldCB0aGUgd2FsX2xldmVsIGZyb20gdGhlIGNv bnRyb2wgZmlsZS4gRm9yIGEgc3RhbmRieSwgdGhpcyB2YWx1ZSBzaG91bGQgYmUKKyAqIGNv bnNpZGVyZWQgYXMgaXRzIGFjdGl2ZSB3YWxfbGV2ZWwsIGJlY2F1c2UgaXQgbWF5IGJlIGRp ZmZlcmVudCBmcm9tIHdoYXQKKyAqIHdhcyBvcmlnaW5hbGx5IGNvbmZpZ3VyZWQgb24gc3Rh bmRieS4KKyAqLworV2FsTGV2ZWwKK0dldEFjdGl2ZVdhbExldmVsT25TdGFuZGJ5KHZvaWQp Cit7CisJcmV0dXJuIENvbnRyb2xGaWxlLT53YWxfbGV2ZWw7Cit9CisKIC8qCiAgKiBJbml0 aWFsaXphdGlvbiBvZiBzaGFyZWQgbWVtb3J5IGZvciBYTE9HCiAgKi8KQEAgLTk2MDgsNyAr OTYxOSw3IEBAIENyZWF0ZVJlc3RhcnRQb2ludChpbnQgZmxhZ3MpCiAJICogd2hpY2hldmVy IGlzIGxhdGVyLgogCSAqLwogCXJlY2VpdmVQdHIgPSBHZXRXYWxSY3ZGbHVzaFJlY1B0cihO VUxMLCBOVUxMKTsKLQlyZXBsYXlQdHIgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKCZyZXBsYXlU TEkpOworCXJlcGxheVB0ciA9IEdldFhMb2dSZXBsYXlSZWNQdHIoJnJlcGxheVRMSSwgZmFs c2UpOwogCWVuZHB0ciA9IChyZWNlaXZlUHRyIDwgcmVwbGF5UHRyKSA/IHJlcGxheVB0ciA6 IHJlY2VpdmVQdHI7CiAJS2VlcExvZ1NlZyhlbmRwdHIsICZfbG9nU2VnTm8pOwogCWlmIChJ bnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzKF9sb2dTZWdObykpCkBAIC0xMTc0 Niw3ICsxMTc1Nyw3IEBAIHJlZ2lzdGVyX3BlcnNpc3RlbnRfYWJvcnRfYmFja3VwX2hhbmRs ZXIodm9pZCkKICAqIEV4cG9ydGVkIHRvIGFsbG93IFdBTFJlY2VpdmVyIHRvIHJlYWQgdGhl IHBvaW50ZXIgZGlyZWN0bHkuCiAgKi8KIFhMb2dSZWNQdHIKLUdldFhMb2dSZXBsYXlSZWNQ dHIoVGltZUxpbmVJRCAqcmVwbGF5VExJKQorR2V0WExvZ1JlcGxheVJlY1B0cihUaW1lTGlu ZUlEICpyZXBsYXlUTEksIGJvb2wgYXZvaWRfaGVhZGVyKQogewogCVhMb2dSZWNQdHIJcmVj cHRyOwogCVRpbWVMaW5lSUQJdGxpOwpAQCAtMTE3NTgsNiArMTE3NjksMjQgQEAgR2V0WExv Z1JlcGxheVJlY1B0cihUaW1lTGluZUlEICpyZXBsYXlUTEkpCiAKIAlpZiAocmVwbGF5VExJ KQogCQkqcmVwbGF5VExJID0gdGxpOworCisJLyoKKwkgKiBSZXBsYXkgcG9pbnRlciBtYXkg cG9pbnQgb25lIHBhc3QgdGhlIGVuZCBvZiB0aGUgcmVjb3JkLiBJZiB0aGF0CisJICogaXMg YSBYTE9HIHBhZ2UgYm91bmRhcnksIGl0IHdpbGwgbm90IGJlIGEgdmFsaWQgTFNOIGZvciB0 aGUKKwkgKiBzdGFydCBvZiBhIHJlY29yZCwgc28gYnVtcCBpdCB1cCBwYXN0IHRoZSBwYWdl IGhlYWRlci4KKwkgKi8KKwlpZiAoYXZvaWRfaGVhZGVyICYmICFYUmVjT2ZmSXNWYWxpZChy ZWNwdHIpKQorCXsKKwkJaWYgKHJlY3B0ciAlIFhMT0dfQkxDS1NaICE9IDApCisJCQllbG9n KEVSUk9SLCAiaW52YWxpZCByZXBsYXkgcG9pbnRlciIpOworCisJCS8qIEZvciB0aGUgZmly c3QgcGFnZSBvZiBhIHNlZ21lbnQgZmlsZSwgaXQncyBhIGxvbmcgaGVhZGVyICovCisJCWlm IChYTG9nU2VnbWVudE9mZnNldChyZWNwdHIsIHdhbF9zZWdtZW50X3NpemUpID09IDApCisJ CQlyZWNwdHIgKz0gU2l6ZU9mWExvZ0xvbmdQSEQ7CisJCWVsc2UKKwkJCXJlY3B0ciArPSBT aXplT2ZYTG9nU2hvcnRQSEQ7CisJfQorCiAJcmV0dXJuIHJlY3B0cjsKIH0KIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVuY3MuYwppbmRleCBiOThkZWI3MmVjLi5hMTcz ZjhkNmZjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVu Y3MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVuY3MuYwpAQCAt NDE3LDcgKzQxNyw3IEBAIHBnX2xhc3Rfd2FsX3JlcGxheV9sc24oUEdfRlVOQ1RJT05fQVJH UykKIHsKIAlYTG9nUmVjUHRyCXJlY3B0cjsKIAotCXJlY3B0ciA9IEdldFhMb2dSZXBsYXlS ZWNQdHIoTlVMTCk7CisJcmVjcHRyID0gR2V0WExvZ1JlcGxheVJlY1B0cihOVUxMLCBmYWxz ZSk7CiAKIAlpZiAocmVjcHRyID09IDApCiAJCVBHX1JFVFVSTl9OVUxMKCk7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ndXRpbHMuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d1dGlscy5jCmluZGV4IGIxNzAyYmM2YmUuLjljYzJh MjE0NGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d1dGls cy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d1dGlscy5jCkBAIC04 NzAsNyArODcwLDcgQEAgcmVhZF9sb2NhbF94bG9nX3BhZ2UoWExvZ1JlYWRlclN0YXRlICpz dGF0ZSwgWExvZ1JlY1B0ciB0YXJnZXRQYWdlUHRyLAogCQlpZiAoIVJlY292ZXJ5SW5Qcm9n cmVzcygpKQogCQkJcmVhZF91cHRvID0gR2V0Rmx1c2hSZWNQdHIoKTsKIAkJZWxzZQotCQkJ cmVhZF91cHRvID0gR2V0WExvZ1JlcGxheVJlY1B0cigmVGhpc1RpbWVMaW5lSUQpOworCQkJ cmVhZF91cHRvID0gR2V0WExvZ1JlcGxheVJlY1B0cigmVGhpc1RpbWVMaW5lSUQsIGZhbHNl KTsKIAkJdGxpID0gVGhpc1RpbWVMaW5lSUQ7CiAKIAkJLyoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL2NoZWNrcG9pbnRlci5jCmluZGV4IGJlNzM2NjM3OWQuLmVhMWJmN2QyNDcgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMKKysrIGIvc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYwpAQCAtNDM0LDcgKzQzNCw3IEBA IENoZWNrcG9pbnRlck1haW4odm9pZCkKIAkJCSAqLwogCQkJY2twdF9hY3RpdmUgPSB0cnVl OwogCQkJaWYgKGRvX3Jlc3RhcnRwb2ludCkKLQkJCQlja3B0X3N0YXJ0X3JlY3B0ciA9IEdl dFhMb2dSZXBsYXlSZWNQdHIoTlVMTCk7CisJCQkJY2twdF9zdGFydF9yZWNwdHIgPSBHZXRY TG9nUmVwbGF5UmVjUHRyKE5VTEwsIGZhbHNlKTsKIAkJCWVsc2UKIAkJCQlja3B0X3N0YXJ0 X3JlY3B0ciA9IEdldEluc2VydFJlY1B0cigpOwogCQkJY2twdF9zdGFydF90aW1lID0gbm93 OwpAQCAtNzk0LDcgKzc5NCw3IEBAIElzQ2hlY2twb2ludE9uU2NoZWR1bGUoZG91YmxlIHBy b2dyZXNzKQogCSAqIHZhbHVlIHRoYXQgd2FzIGluIGVmZmVjdCB3aGVuIHRoZSBXQUwgd2Fz IGdlbmVyYXRlZCkuCiAJICovCiAJaWYgKFJlY292ZXJ5SW5Qcm9ncmVzcygpKQotCQlyZWNw dHIgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpOworCQlyZWNwdHIgPSBHZXRYTG9nUmVw bGF5UmVjUHRyKE5VTEwsIGZhbHNlKTsKIAllbHNlCiAJCXJlY3B0ciA9IEdldEluc2VydFJl Y1B0cigpOwogCWVsYXBzZWRfeGxvZ3MgPSAoKChkb3VibGUpIChyZWNwdHIgLSBja3B0X3N0 YXJ0X3JlY3B0cikpIC8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvZGVjb2RlLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29k ZS5jCmluZGV4IDI4NzRkYzA2MTIuLmI4YmUwYzgzZWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwpAQCAtMjE1LDExICsyMTUsMzEgQEAgRGVjb2Rl WExvZ09wKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAq YnVmKQogCQkJICogY2FuIHJlc3RhcnQgZnJvbSB0aGVyZS4KIAkJCSAqLwogCQkJYnJlYWs7 CisJCWNhc2UgWExPR19QQVJBTUVURVJfQ0hBTkdFOgorCQl7CisJCQl4bF9wYXJhbWV0ZXJf Y2hhbmdlICp4bHJlYyA9CisJCQkJKHhsX3BhcmFtZXRlcl9jaGFuZ2UgKikgWExvZ1JlY0dl dERhdGEoYnVmLT5yZWNvcmQpOworCisJCQkvKgorCQkJICogSWYgd2FsX2xldmVsIG9uIHBy aW1hcnkgaXMgcmVkdWNlZCB0byBsZXNzIHRoYW4gbG9naWNhbCwgdGhlbiB3ZQorCQkJICog d2FudCB0byBwcmV2ZW50IGV4aXN0aW5nIGxvZ2ljYWwgc2xvdHMgZnJvbSBiZWluZyB1c2Vk LgorCQkJICogRXhpc3RpbmcgbG9naWNhbCBzbG90cyBvbiBzdGFuZGJ5IGdldCBpbnZhbGlk YXRlZCB3aGVuIHRoaXMgV0FMCisJCQkgKiByZWNvcmQgaXMgcmVwbGF5ZWQ7IGFuZCBmdXJ0 aGVyLCBzbG90IGNyZWF0aW9uIGZhaWxzIHdoZW4gdGhlCisJCQkgKiB3YWwgbGV2ZWwgaXMg bm90IHN1ZmZpY2llbnQ7IGJ1dCBhbGwgdGhlc2Ugb3BlcmF0aW9ucyBhcmUgbm90CisJCQkg KiBzeW5jaHJvbml6ZWQsIHNvIGEgbG9naWNhbCBzbG90IG1heSBjcmVlcCBpbiB3aGlsZSB0 aGUgd2FsX2xldmVsCisJCQkgKiBpcyBiZWluZyByZWR1Y2VkLiBIZW5jZSB0aGlzIGV4dHJh IGNoZWNrLgorCQkJICovCisJCQlpZiAoeGxyZWMtPndhbF9sZXZlbCA8IFdBTF9MRVZFTF9M T0dJQ0FMKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX09C SkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJCSBlcnJtc2coImxvZ2lj YWwgZGVjb2Rpbmcgb24gc3RhbmRieSByZXF1aXJlcyAiCisJCQkJCQkJCSJ3YWxfbGV2ZWwg Pj0gbG9naWNhbCBvbiBtYXN0ZXIiKSkpOworCQkJYnJlYWs7CisJCX0KIAkJY2FzZSBYTE9H X05PT1A6CiAJCWNhc2UgWExPR19ORVhUT0lEOgogCQljYXNlIFhMT0dfU1dJVENIOgogCQlj YXNlIFhMT0dfQkFDS1VQX0VORDoKLQkJY2FzZSBYTE9HX1BBUkFNRVRFUl9DSEFOR0U6CiAJ CWNhc2UgWExPR19SRVNUT1JFX1BPSU5UOgogCQljYXNlIFhMT0dfRlBXX0NIQU5HRToKIAkJ Y2FzZSBYTE9HX0ZQSV9GT1JfSElOVDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9sb2dpY2FsLmMKaW5kZXggNjRiODI4MGMxMy4uYzEzNGZlZWY4OSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMKQEAgLTExOSwyMyArMTE5 LDIyIEBAIENoZWNrTG9naWNhbERlY29kaW5nUmVxdWlyZW1lbnRzKHZvaWQpCiAJCQkJKGVy cmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCiAJCQkJ IGVycm1zZygibG9naWNhbCBkZWNvZGluZyByZXF1aXJlcyBhIGRhdGFiYXNlIGNvbm5lY3Rp b24iKSkpOwogCi0JLyogLS0tLQotCSAqIFRPRE86IFdlIGdvdCB0byBjaGFuZ2UgdGhhdCBz b21lZGF5IHNvb24uLi4KLQkgKgotCSAqIFRoZXJlJ3MgYmFzaWNhbGx5IHRocmVlIHRoaW5n cyBtaXNzaW5nIHRvIGFsbG93IHRoaXM6Ci0JICogMSkgV2UgbmVlZCB0byBiZSBhYmxlIHRv IGNvcnJlY3RseSBhbmQgcXVpY2tseSBpZGVudGlmeSB0aGUgdGltZWxpbmUgYQotCSAqCSAg TFNOIGJlbG9uZ3MgdG8KLQkgKiAyKSBXZSBuZWVkIHRvIGZvcmNlIGhvdF9zdGFuZGJ5X2Zl ZWRiYWNrIHRvIGJlIGVuYWJsZWQgYXQgYWxsIHRpbWVzIHNvCi0JICoJICB0aGUgcHJpbWFy eSBjYW5ub3QgcmVtb3ZlIHJvd3Mgd2UgbmVlZC4KLQkgKiAzKSBzdXBwb3J0IGRyb3BwaW5n IHJlcGxpY2F0aW9uIHNsb3RzIHJlZmVycmluZyB0byBhIGRhdGFiYXNlLCBpbgotCSAqCSAg ZGJhc2VfcmVkby4gVGhlcmUgY2FuJ3QgYmUgYW55IGFjdGl2ZSBvbmVzIGR1ZSB0byBIUyBy ZWNvdmVyeQotCSAqCSAgY29uZmxpY3RzLCBzbyB0aGF0IHNob3VsZCBiZSByZWxhdGl2ZWx5 IGVhc3kuCi0JICogLS0tLQotCSAqLwogCWlmIChSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKLQkJ ZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBP UlRFRCksCi0JCQkJIGVycm1zZygibG9naWNhbCBkZWNvZGluZyBjYW5ub3QgYmUgdXNlZCB3 aGlsZSBpbiByZWNvdmVyeSIpKSk7CisJeworCQkvKgorCQkgKiBUaGlzIGNoZWNrIG1heSBo YXZlIHJhY2UgY29uZGl0aW9ucywgYnV0IHdoZW5ldmVyCisJCSAqIFhMT0dfUEFSQU1FVEVS X0NIQU5HRSBpbmRpY2F0ZXMgdGhhdCB3YWxfbGV2ZWwgaGFzIGNoYW5nZWQsIHdlCisJCSAq IHZlcmlmeSB0aGF0IHRoZXJlIGFyZSBubyBleGlzdGluZyBsb2dpY2FsIHJlcGxpY2F0aW9u IHNsb3RzLiBBbmQgdG8KKwkJICogYXZvaWQgcmFjZXMgYXJvdW5kIGNyZWF0aW5nIGEgbmV3 IHNsb3QsCisJCSAqIENoZWNrTG9naWNhbERlY29kaW5nUmVxdWlyZW1lbnRzKCkgaXMgY2Fs bGVkIG9uY2UgYmVmb3JlIGNyZWF0aW5nCisJCSAqIHRoZSBzbG90LCBhbmQgb25jZSB3aGVu IGxvZ2ljYWwgZGVjb2RpbmcgaXMgaW5pdGlhbGx5IHN0YXJ0aW5nIHVwLgorCQkgKi8KKwkJ aWYgKEdldEFjdGl2ZVdhbExldmVsT25TdGFuZGJ5KCkgPCBXQUxfTEVWRUxfTE9HSUNBTCkK KwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9J Tl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJsb2dpY2FsIGRlY29kaW5n IG9uIHN0YW5kYnkgcmVxdWlyZXMgIgorCQkJCQkJCSJ3YWxfbGV2ZWwgPj0gbG9naWNhbCBv biBtYXN0ZXIiKSkpOworCX0KIH0KIAogLyoKQEAgLTMzMCw2ICszMjksMTIgQEAgQ3JlYXRl SW5pdERlY29kaW5nQ29udGV4dChjb25zdCBjaGFyICpwbHVnaW4sCiAJTG9naWNhbERlY29k aW5nQ29udGV4dCAqY3R4OwogCU1lbW9yeUNvbnRleHQgb2xkX2NvbnRleHQ7CiAKKwkvKgor CSAqIE9uIHN0YW5kYnksIHRoaXMgY2hlY2sgaXMgYWxzbyByZXF1aXJlZCB3aGlsZSBjcmVh dGluZyB0aGUgc2xvdC4gQ2hlY2sKKwkgKiB0aGUgY29tbWVudHMgaW4gdGhpcyBmdW5jdGlv bi4KKwkgKi8KKwlDaGVja0xvZ2ljYWxEZWNvZGluZ1JlcXVpcmVtZW50cygpOworCiAJLyog c2hvcnRlciBsaW5lcy4uLiAqLwogCXNsb3QgPSBNeVJlcGxpY2F0aW9uU2xvdDsKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3Mu YyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMKaW5k ZXggMWQ5NDAwZWE2My4uOTA2OWYzZTUwZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jCkBAIC0yMjMsNyArMjIzLDcgQEAgcGdf bG9naWNhbF9zbG90X2dldF9jaGFuZ2VzX2d1dHMoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8s IGJvb2wgY29uZmlybSwgYm9vbCBiaW4KIAlpZiAoIVJlY292ZXJ5SW5Qcm9ncmVzcygpKQog CQllbmRfb2Zfd2FsID0gR2V0Rmx1c2hSZWNQdHIoKTsKIAllbHNlCi0JCWVuZF9vZl93YWwg PSBHZXRYTG9nUmVwbGF5UmVjUHRyKCZUaGlzVGltZUxpbmVJRCk7CisJCWVuZF9vZl93YWwg PSBHZXRYTG9nUmVwbGF5UmVjUHRyKCZUaGlzVGltZUxpbmVJRCwgZmFsc2UpOwogCiAJUmVw bGljYXRpb25TbG90QWNxdWlyZShOYW1lU3RyKCpuYW1lKSwgdHJ1ZSk7CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3Nsb3QuYwppbmRleCA2ZTg5YmFiMjU1Li4yNTFhZjE3MjUzIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vc2xvdC5jCkBAIC0xMDg4LDM3ICsxMDg4LDI4IEBAIFJlcGxpY2F0aW9uU2xv dFJlc2VydmVXYWwodm9pZCkKIAkJLyoKIAkJICogRm9yIGxvZ2ljYWwgc2xvdHMgbG9nIGEg c3RhbmRieSBzbmFwc2hvdCBhbmQgc3RhcnQgbG9naWNhbCBkZWNvZGluZwogCQkgKiBhdCBl eGFjdGx5IHRoYXQgcG9zaXRpb24uIFRoYXQgYWxsb3dzIHRoZSBzbG90IHRvIHN0YXJ0IHVw IG1vcmUKLQkJICogcXVpY2tseS4KKwkJICogcXVpY2tseS4gQnV0IG9uIGEgc3RhbmRieSB3 ZSBjYW5ub3QgZG8gV0FMIHdyaXRlcywgc28ganVzdCB1c2UgdGhlCisJCSAqIHJlcGxheSBw b2ludGVyOyBlZmZlY3RpdmVseSwgYW4gYXR0ZW1wdCB0byBjcmVhdGUgYSBsb2dpY2FsIHNs b3Qgb24KKwkJICogc3RhbmRieSB3aWxsIGNhdXNlIGl0IHRvIHdhaXQgZm9yIGFuIHhsX3J1 bm5pbmdfeGFjdCByZWNvcmQgdG8gYmUKKwkJICogbG9nZ2VkIGluZGVwZW5kZW50bHkgb24g dGhlIHByaW1hcnksIHNvIHRoYXQgYSBzbmFwc2hvdCBjYW4gYmUgYnVpbHQKKwkJICogdXNp bmcgdGhlIHJlY29yZC4KIAkJICoKLQkJICogVGhhdCdzIG5vdCBuZWVkZWQgKG9yIGluZGVl ZCBoZWxwZnVsKSBmb3IgcGh5c2ljYWwgc2xvdHMgYXMgdGhleSdsbAotCQkgKiBzdGFydCBy ZXBsYXkgYXQgdGhlIGxhc3QgbG9nZ2VkIGNoZWNrcG9pbnQgYW55d2F5LiBJbnN0ZWFkIHJl dHVybgotCQkgKiB0aGUgbG9jYXRpb24gb2YgdGhlIGxhc3QgcmVkbyBMU04uIFdoaWxlIHRo YXQgc2xpZ2h0bHkgaW5jcmVhc2VzCi0JCSAqIHRoZSBjaGFuY2UgdGhhdCB3ZSBoYXZlIHRv IHJldHJ5LCBpdCdzIHdoZXJlIGEgYmFzZSBiYWNrdXAgaGFzIHRvCi0JCSAqIHN0YXJ0IHJl cGxheSBhdC4KKwkJICogTm9uZSBvZiB0aGlzIGlzIG5lZWRlZCAob3IgaW5kZWVkIGhlbHBm dWwpIGZvciBwaHlzaWNhbCBzbG90cyBhcworCQkgKiB0aGV5J2xsIHN0YXJ0IHJlcGxheSBh dCB0aGUgbGFzdCBsb2dnZWQgY2hlY2twb2ludCBhbnl3YXkuIEluc3RlYWQKKwkJICogcmV0 dXJuIHRoZSBsb2NhdGlvbiBvZiB0aGUgbGFzdCByZWRvIExTTi4gV2hpbGUgdGhhdCBzbGln aHRseQorCQkgKiBpbmNyZWFzZXMgdGhlIGNoYW5jZSB0aGF0IHdlIGhhdmUgdG8gcmV0cnks IGl0J3Mgd2hlcmUgYSBiYXNlIGJhY2t1cAorCQkgKiBoYXMgdG8gc3RhcnQgcmVwbGF5IGF0 LgogCQkgKi8KLQkJaWYgKCFSZWNvdmVyeUluUHJvZ3Jlc3MoKSAmJiBTbG90SXNMb2dpY2Fs KHNsb3QpKQotCQl7Ci0JCQlYTG9nUmVjUHRyCWZsdXNocHRyOwotCi0JCQkvKiBzdGFydCBh dCBjdXJyZW50IGluc2VydCBwb3NpdGlvbiAqLworCQlpZiAoU2xvdElzUGh5c2ljYWwoc2xv dCkpCisJCQlyZXN0YXJ0X2xzbiA9IEdldFJlZG9SZWNQdHIoKTsKKwkJZWxzZSBpZiAoUmVj b3ZlcnlJblByb2dyZXNzKCkpCisJCQlyZXN0YXJ0X2xzbiA9IEdldFhMb2dSZXBsYXlSZWNQ dHIoTlVMTCwgdHJ1ZSk7CisJCWVsc2UKIAkJCXJlc3RhcnRfbHNuID0gR2V0WExvZ0luc2Vy dFJlY1B0cigpOwotCQkJU3BpbkxvY2tBY3F1aXJlKCZzbG90LT5tdXRleCk7Ci0JCQlzbG90 LT5kYXRhLnJlc3RhcnRfbHNuID0gcmVzdGFydF9sc247Ci0JCQlTcGluTG9ja1JlbGVhc2Uo JnNsb3QtPm11dGV4KTsKLQotCQkJLyogbWFrZSBzdXJlIHdlIGhhdmUgZW5vdWdoIGluZm9y bWF0aW9uIHRvIHN0YXJ0ICovCi0JCQlmbHVzaHB0ciA9IExvZ1N0YW5kYnlTbmFwc2hvdCgp OwogCi0JCQkvKiBhbmQgbWFrZSBzdXJlIGl0J3MgZnN5bmNlZCB0byBkaXNrICovCi0JCQlY TG9nRmx1c2goZmx1c2hwdHIpOwotCQl9Ci0JCWVsc2UKLQkJewotCQkJcmVzdGFydF9sc24g PSBHZXRSZWRvUmVjUHRyKCk7Ci0JCQlTcGluTG9ja0FjcXVpcmUoJnNsb3QtPm11dGV4KTsK LQkJCXNsb3QtPmRhdGEucmVzdGFydF9sc24gPSByZXN0YXJ0X2xzbjsKLQkJCVNwaW5Mb2Nr UmVsZWFzZSgmc2xvdC0+bXV0ZXgpOwotCQl9CisJCVNwaW5Mb2NrQWNxdWlyZSgmc2xvdC0+ bXV0ZXgpOworCQlzbG90LT5kYXRhLnJlc3RhcnRfbHNuID0gcmVzdGFydF9sc247CisJCVNw aW5Mb2NrUmVsZWFzZSgmc2xvdC0+bXV0ZXgpOwogCiAJCS8qIHByZXZlbnQgV0FMIHJlbW92 YWwgYXMgZmFzdCBhcyBwb3NzaWJsZSAqLwogCQlSZXBsaWNhdGlvblNsb3RzQ29tcHV0ZVJl cXVpcmVkTFNOKCk7CkBAIC0xMTM0LDYgKzExMjUsMTcgQEAgUmVwbGljYXRpb25TbG90UmVz ZXJ2ZVdhbCh2b2lkKQogCQlpZiAoWExvZ0dldExhc3RSZW1vdmVkU2Vnbm8oKSA8IHNlZ25v KQogCQkJYnJlYWs7CiAJfQorCisJaWYgKCFSZWNvdmVyeUluUHJvZ3Jlc3MoKSAmJiBTbG90 SXNMb2dpY2FsKHNsb3QpKQorCXsKKwkJWExvZ1JlY1B0cglmbHVzaHB0cjsKKworCQkvKiBt YWtlIHN1cmUgd2UgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gdG8gc3RhcnQgKi8KKwkJZmx1 c2hwdHIgPSBMb2dTdGFuZGJ5U25hcHNob3QoKTsKKworCQkvKiBhbmQgbWFrZSBzdXJlIGl0 J3MgZnN5bmNlZCB0byBkaXNrICovCisJCVhMb2dGbHVzaChmbHVzaHB0cik7CisJfQogfQog CiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdGZ1bmNzLmMg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVuY3MuYwppbmRleCAzMWU3NGQzODMy Li40OGQyNDQ0MmUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90 ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVuY3MuYwpAQCAt NjM2LDcgKzYzNiw3IEBAIHBnX3JlcGxpY2F0aW9uX3Nsb3RfYWR2YW5jZShQR19GVU5DVElP Tl9BUkdTKQogCWlmICghUmVjb3ZlcnlJblByb2dyZXNzKCkpCiAJCW1vdmV0byA9IE1pbiht b3ZldG8sIEdldEZsdXNoUmVjUHRyKCkpOwogCWVsc2UKLQkJbW92ZXRvID0gTWluKG1vdmV0 bywgR2V0WExvZ1JlcGxheVJlY1B0cigmVGhpc1RpbWVMaW5lSUQpKTsKKwkJbW92ZXRvID0g TWluKG1vdmV0bywgR2V0WExvZ1JlcGxheVJlY1B0cigmVGhpc1RpbWVMaW5lSUQsIGZhbHNl KSk7CiAKIAkvKiBBY3F1aXJlIHRoZSBzbG90IHNvIHdlICJvd24iIGl0ICovCiAJUmVwbGlj YXRpb25TbG90QWNxdWlyZShOYW1lU3RyKCpzbG90bmFtZSksIHRydWUpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMKaW5kZXggOWEyYmMzN2ZkNy4uNzRkM2ZhMGNm MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYwor KysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jCkBAIC00MDcsNyAr NDA3LDcgQEAgV2FsUmVjZWl2ZXJNYWluKHZvaWQpCiAJCQlmaXJzdF9zdHJlYW0gPSBmYWxz ZTsKIAogCQkJLyogSW5pdGlhbGl6ZSBMb2dzdHJlYW1SZXN1bHQgYW5kIGJ1ZmZlcnMgZm9y IHByb2Nlc3NpbmcgbWVzc2FnZXMgKi8KLQkJCUxvZ3N0cmVhbVJlc3VsdC5Xcml0ZSA9IExv Z3N0cmVhbVJlc3VsdC5GbHVzaCA9IEdldFhMb2dSZXBsYXlSZWNQdHIoTlVMTCk7CisJCQlM b2dzdHJlYW1SZXN1bHQuV3JpdGUgPSBMb2dzdHJlYW1SZXN1bHQuRmx1c2ggPSBHZXRYTG9n UmVwbGF5UmVjUHRyKE5VTEwsIGZhbHNlKTsKIAkJCWluaXRTdHJpbmdJbmZvKCZyZXBseV9t ZXNzYWdlKTsKIAkJCWluaXRTdHJpbmdJbmZvKCZpbmNvbWluZ19tZXNzYWdlKTsKIApAQCAt MTA3Miw3ICsxMDcyLDcgQEAgWExvZ1dhbFJjdlNlbmRSZXBseShib29sIGZvcmNlLCBib29s IHJlcXVlc3RSZXBseSkKIAkvKiBDb25zdHJ1Y3QgYSBuZXcgbWVzc2FnZSAqLwogCXdyaXRl UHRyID0gTG9nc3RyZWFtUmVzdWx0LldyaXRlOwogCWZsdXNoUHRyID0gTG9nc3RyZWFtUmVz dWx0LkZsdXNoOwotCWFwcGx5UHRyID0gR2V0WExvZ1JlcGxheVJlY1B0cihOVUxMKTsKKwlh cHBseVB0ciA9IEdldFhMb2dSZXBsYXlSZWNQdHIoTlVMTCwgZmFsc2UpOwogCiAJcmVzZXRT dHJpbmdJbmZvKCZyZXBseV9tZXNzYWdlKTsKIAlwcV9zZW5kYnl0ZSgmcmVwbHlfbWVzc2Fn ZSwgJ3InKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2Vp dmVyZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyZnVuY3Mu YwppbmRleCA2ZjBhY2JmZGVmLi5mMjY0YjcxZjczIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlcmZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vd2FscmVjZWl2ZXJmdW5jcy5jCkBAIC0zNzIsNyArMzcyLDcgQEAgR2V0UmVw bGljYXRpb25BcHBseURlbGF5KHZvaWQpCiAJcmVjZWl2ZVB0ciA9IHdhbHJjdi0+Zmx1c2hl ZFVwdG87CiAJU3BpbkxvY2tSZWxlYXNlKCZ3YWxyY3YtPm11dGV4KTsKIAotCXJlcGxheVB0 ciA9IEdldFhMb2dSZXBsYXlSZWNQdHIoTlVMTCk7CisJcmVwbGF5UHRyID0gR2V0WExvZ1Jl cGxheVJlY1B0cihOVUxMLCBmYWxzZSk7CiAKIAlpZiAocmVjZWl2ZVB0ciA9PSByZXBsYXlQ dHIpCiAJCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v d2Fsc2VuZGVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwppbmRl eCBkMGUyNDdiMTA0Li5kYTI1MzNlMWM5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi93YWxzZW5kZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxz ZW5kZXIuYwpAQCAtMTE3NCw2ICsxMTc0LDE2IEBAIFN0YXJ0TG9naWNhbFJlcGxpY2F0aW9u KFN0YXJ0UmVwbGljYXRpb25DbWQgKmNtZCkKIAkJZ290X1NUT1BQSU5HID0gdHJ1ZTsKIAl9 CiAKKwkvKgorCSAqIEluIGNhc2Ugb2YgbG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5IGl0 IG1heSBiZSB0aGF0IFRoaXNUaW1lTGluZUlECisJICogaXMgbm90IHNldCB5ZXQuCisJICog SW5kZWVkIHdlIGFyZSBub3QgZ29pbmcgdGhyb3VnaCBJbml0WExPR0FjY2VzcyBvbiBhIFN0 YW5kYnkgYW5kCisJICogaXQgbWF5IGFsc28gYmUgdGhhdCBJZGVudGlmeVN5c3RlbSBoYXMg bm90IGJlZW4gY2FsbGVkIHlldC4KKwkgKiBTbyBsZXQncyBnZXQgaXQgdGhyb3VnaCBHZXRY TG9nUmVwbGF5UmVjUHRyKCkuCisJICovCisJaWYgKFRoaXNUaW1lTGluZUlEID09IDApCisJ CSh2b2lkKSBHZXRYTG9nUmVwbGF5UmVjUHRyKCZUaGlzVGltZUxpbmVJRCwgZmFsc2UpOwor CiAJLyoKIAkgKiBDcmVhdGUgb3VyIGRlY29kaW5nIGNvbnRleHQsIG1ha2luZyBpdCBzdGFy dCBhdCB0aGUgcHJldmlvdXNseSBhY2snZWQKIAkgKiBwb3NpdGlvbi4KQEAgLTEzOTgsNyAr MTQwOCw3IEBAIFdhbFNuZFdhaXRGb3JXYWwoWExvZ1JlY1B0ciBsb2MpCiAJaWYgKCFSZWNv dmVyeUluUHJvZ3Jlc3MoKSkKIAkJUmVjZW50Rmx1c2hQdHIgPSBHZXRGbHVzaFJlY1B0cigp OwogCWVsc2UKLQkJUmVjZW50Rmx1c2hQdHIgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwp OworCQlSZWNlbnRGbHVzaFB0ciA9IEdldFhMb2dSZXBsYXlSZWNQdHIoTlVMTCwgZmFsc2Up OwogCiAJZm9yICg7OykKIAl7CkBAIC0xNDMyLDcgKzE0NDIsNyBAQCBXYWxTbmRXYWl0Rm9y V2FsKFhMb2dSZWNQdHIgbG9jKQogCQlpZiAoIVJlY292ZXJ5SW5Qcm9ncmVzcygpKQogCQkJ UmVjZW50Rmx1c2hQdHIgPSBHZXRGbHVzaFJlY1B0cigpOwogCQllbHNlCi0JCQlSZWNlbnRG bHVzaFB0ciA9IEdldFhMb2dSZXBsYXlSZWNQdHIoTlVMTCk7CisJCQlSZWNlbnRGbHVzaFB0 ciA9IEdldFhMb2dSZXBsYXlSZWNQdHIoTlVMTCwgZmFsc2UpOwogCiAJCS8qCiAJCSAqIElm IHBvc3RtYXN0ZXIgYXNrZWQgdXMgdG8gc3RvcCwgZG9uJ3Qgd2FpdCBhbnltb3JlLgpAQCAt Mjg5OCwxMCArMjkwOCwxMiBAQCBYTG9nU2VuZExvZ2ljYWwodm9pZCkKIAkgKiBJZiBmaXJz dCB0aW1lIHRocm91Z2ggaW4gdGhpcyBzZXNzaW9uLCBpbml0aWFsaXplIGZsdXNoUHRyLiAg T3RoZXJ3aXNlLAogCSAqIHdlIG9ubHkgbmVlZCB0byB1cGRhdGUgZmx1c2hQdHIgaWYgRW5k UmVjUHRyIGlzIHBhc3QgaXQuCiAJICovCi0JaWYgKGZsdXNoUHRyID09IEludmFsaWRYTG9n UmVjUHRyKQotCQlmbHVzaFB0ciA9IEdldEZsdXNoUmVjUHRyKCk7Ci0JZWxzZSBpZiAobG9n aWNhbF9kZWNvZGluZ19jdHgtPnJlYWRlci0+RW5kUmVjUHRyID49IGZsdXNoUHRyKQotCQlm bHVzaFB0ciA9IEdldEZsdXNoUmVjUHRyKCk7CisJaWYgKGZsdXNoUHRyID09IEludmFsaWRY TG9nUmVjUHRyIHx8CisJCWxvZ2ljYWxfZGVjb2RpbmdfY3R4LT5yZWFkZXItPkVuZFJlY1B0 ciA+PSBmbHVzaFB0cikKKwl7CisJCWZsdXNoUHRyID0gKGFtX2Nhc2NhZGluZ193YWxzZW5k ZXIgPworCQkJCQlHZXRTdGFuZGJ5Rmx1c2hSZWNQdHIoKSA6IEdldEZsdXNoUmVjUHRyKCkp OworCX0KIAogCS8qIElmIEVuZFJlY1B0ciBpcyBzdGlsbCBwYXN0IG91ciBmbHVzaFB0ciwg aXQgbWVhbnMgd2UgY2F1Z2h0IHVwLiAqLwogCWlmIChsb2dpY2FsX2RlY29kaW5nX2N0eC0+ cmVhZGVyLT5FbmRSZWNQdHIgPj0gZmx1c2hQdHIpCkBAIC0yOTkwLDcgKzMwMDIsNyBAQCBH ZXRTdGFuZGJ5Rmx1c2hSZWNQdHIodm9pZCkKIAkgKi8KIAogCXJlY2VpdmVQdHIgPSBHZXRX YWxSY3ZGbHVzaFJlY1B0cihOVUxMLCAmcmVjZWl2ZVRMSSk7Ci0JcmVwbGF5UHRyID0gR2V0 WExvZ1JlcGxheVJlY1B0cigmcmVwbGF5VExJKTsKKwlyZXBsYXlQdHIgPSBHZXRYTG9nUmVw bGF5UmVjUHRyKCZyZXBsYXlUTEksIGZhbHNlKTsKIAogCVRoaXNUaW1lTGluZUlEID0gcmVw bGF5VExJOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL3hsb2cuaAppbmRleCAwYThlZGU3MDBkLi4xZDQ0NjM3YmVmIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oCisrKyBiL3NyYy9pbmNsdWRl L2FjY2Vzcy94bG9nLmgKQEAgLTI4Miw3ICsyODIsNyBAQCBleHRlcm4gYm9vbCBIb3RTdGFu ZGJ5QWN0aXZlKHZvaWQpOwogZXh0ZXJuIGJvb2wgSG90U3RhbmRieUFjdGl2ZUluUmVwbGF5 KHZvaWQpOwogZXh0ZXJuIGJvb2wgWExvZ0luc2VydEFsbG93ZWQodm9pZCk7CiBleHRlcm4g dm9pZCBHZXRYTG9nUmVjZWlwdFRpbWUoVGltZXN0YW1wVHogKnJ0aW1lLCBib29sICpmcm9t U3RyZWFtKTsKLWV4dGVybiBYTG9nUmVjUHRyIEdldFhMb2dSZXBsYXlSZWNQdHIoVGltZUxp bmVJRCAqcmVwbGF5VExJKTsKK2V4dGVybiBYTG9nUmVjUHRyIEdldFhMb2dSZXBsYXlSZWNQ dHIoVGltZUxpbmVJRCAqcmVwbGF5VExJLCBib29sIGF2b2lkX2hlYWRlcik7CiBleHRlcm4g WExvZ1JlY1B0ciBHZXRYTG9nSW5zZXJ0UmVjUHRyKHZvaWQpOwogZXh0ZXJuIFhMb2dSZWNQ dHIgR2V0WExvZ1dyaXRlUmVjUHRyKHZvaWQpOwogZXh0ZXJuIFJlY292ZXJ5UGF1c2VTdGF0 ZSBHZXRSZWNvdmVyeVBhdXNlU3RhdGUodm9pZCk7CkBAIC0yOTksNiArMjk5LDcgQEAgZXh0 ZXJuIFNpemUgWExPR1NobWVtU2l6ZSh2b2lkKTsKIGV4dGVybiB2b2lkIFhMT0dTaG1lbUlu aXQodm9pZCk7CiBleHRlcm4gdm9pZCBCb290U3RyYXBYTE9HKHZvaWQpOwogZXh0ZXJuIHZv aWQgTG9jYWxQcm9jZXNzQ29udHJvbEZpbGUoYm9vbCByZXNldCk7CitleHRlcm4gV2FsTGV2 ZWwgR2V0QWN0aXZlV2FsTGV2ZWxPblN0YW5kYnkodm9pZCk7CiBleHRlcm4gdm9pZCBTdGFy dHVwWExPRyh2b2lkKTsKIGV4dGVybiB2b2lkIFNodXRkb3duWExPRyhpbnQgY29kZSwgRGF0 dW0gYXJnKTsKIGV4dGVybiB2b2lkIEluaXRYTE9HQWNjZXNzKHZvaWQpOwotLSAKMi4xOC40 Cgo= --------------D6A801DD7417B05266914188 Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v23-0002-Handle-logical-slot-conflicts-on-standby.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v23-0002-Handle-logical-slot-conflicts-on-standby.patch" RnJvbSA1OWQ2YzJmZjMzNjk3NGQxNjcxYTg1ZTVkZTBjNWY3Mzg4MmM4NDgwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogRnJpLCA2IEF1ZyAyMDIxIDA5OjQxOjM2ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2MjMgMi81XSBIYW5kbGUgbG9naWNhbCBzbG90IGNvbmZsaWN0cyBvbiBzdGFuZGJ5LgoK RHVyaW5nIFdBTCByZXBsYXkgb24gc3RhbmRieSwgd2hlbiBzbG90IGNvbmZsaWN0IGlzIGlk ZW50aWZpZWQsCmludmFsaWRhdGUgc3VjaCBzbG90cy4gQWxzbyBkbyB0aGUgc2FtZSB0aGlu ZyBpZiB3YWxfbGV2ZWwgb24gbWFzdGVyCmlzIHJlZHVjZWQgdG8gYmVsb3cgbG9naWNhbCBh bmQgdGhlcmUgYXJlIGV4aXN0aW5nIGxvZ2ljYWwgc2xvdHMKb24gc3RhbmRieS4gSW50cm9k dWNlIGEgbmV3IFByb2NTaWduYWxSZWFzb24gdmFsdWUgZm9yIHNsb3QKY29uZmxpY3QgcmVj b3ZlcnkuIEFycmFuZ2UgZm9yIGEgbmV3IHBnX3N0YXRfZ2V0X2FjdGl2aXR5IGZpZWxkOgpj b25mbF9sb2dpY2Fsc2xvdC4KCkF1dGhvcjogQW5kcmVzIEZyZXVuZCAoaW4gYW4gb2xkZXIg dmVyc2lvbiksIEFtaXQgS2hhbmRla2FyLCBCZXJ0cmFuZCBEcm91dm90ClJldmlld2VkLUJ5 OiBCZXJ0cmFuZCBEcm91dm90LCBBbmRyZXMgRnJldW5kLCBSb2JlcnQgSGFhcywgRmFicml6 aW8gZGUgUm95ZXMgTWVsbG8KLS0tCiBkb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sICAg ICAgICAgICAgICAgICAgfCAgMTAgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhs b2cuYyAgICAgICAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNo X3hsb2cuYyAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hl YXBhbS5jICAgICAgICAgICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJl ZS9uYnR4bG9nLmMgICAgICAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Bn aXN0L3NwZ3hsb2cuYyAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0veGxvZy5jICAgICAgICAgICAgIHwgIDEzICsrCiBzcmMvYmFja2VuZC9jYXRhbG9n L3N5c3RlbV92aWV3cy5zcWwgICAgICAgICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvcGdzdGF0LmMgICAgICAgICAgICAgICB8ICAyMCArKwogLi4uL3JlcGxpY2F0aW9u L2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMgICAgICAgIHwgICA3ICstCiBzcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9zbG90LmMgICAgICAgICAgICAgICAgfCAyMDkgKysrKysrKysrKysrKysr KysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyAgICAgICAgICAgfCAg IDggKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMgICAgICAgICAgIHwg ICA0ICsKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYyAgICAgICAgICB8 ICAgMyArCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMgICAgICAgICAgICAg fCAgMTEgKy0KIHNyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyAgICAgICAgICAgICAgICAg ICB8ICAyMiArKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMgICAgICAg ICAgIHwgIDE2ICsrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAg ICAgICAgfCAgIDUgKwogc3JjL2luY2x1ZGUvcGdzdGF0LmggICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaCAgICAgICAg ICAgICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaCAgICAg ICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmggICAgICAg ICAgICAgICAgIHwgICA0ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91 dCAgICAgICAgICAgfCAgIDMgKy0KIDIzIGZpbGVzIGNoYW5nZWQsIDM1MSBpbnNlcnRpb25z KCspLCAxNSBkZWxldGlvbnMoLSkKICAgNC4xJSBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC8K ICAgNC43JSBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS8KICAgNS4xJSBzcmMvYmFja2Vu ZC9hY2Nlc3MvCiAgIDQuMyUgc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci8KICAgMy41JSBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsLwogIDUyLjIlIHNyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uLwogICA1LjYlIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjLwogICA3LjElIHNyYy9i YWNrZW5kL3Rjb3AvCiAgIDMuNiUgc3JjL2JhY2tlbmQvCiAgIDYuMyUgc3JjL2luY2x1ZGUv CgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCBiL2RvYy9zcmMv c2dtbC9tb25pdG9yaW5nLnNnbWwKaW5kZXggNzRhNThhOTE2Yy4uNjA3MmVlZTczZSAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAorKysgYi9kb2Mvc3JjL3Nn bWwvbW9uaXRvcmluZy5zZ21sCkBAIC00MDM0LDYgKzQwMzQsMTYgQEAgU0VMRUNUIHBpZCwg d2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50IEZST00gcGdfc3RhdF9hY3Rpdml0eSBXSEVS RSB3YWl0X2V2ZW50IGkKICAgICAgICBkZWFkbG9ja3MKICAgICAgIDwvcGFyYT48L2VudHJ5 PgogICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFs b2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAg ICA8c3RydWN0ZmllbGQ+Y29uZmxfbG9naWNhbHNsb3Q8L3N0cnVjdGZpZWxkPiA8dHlwZT5i aWdpbnQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBOdW1i ZXIgb2YgcXVlcmllcyBpbiB0aGlzIGRhdGFiYXNlIHRoYXQgaGF2ZSBiZWVuIGNhbmNlbGVk IGR1ZSB0bworICAgICAgIGxvZ2ljYWwgc2xvdHMKKyAgICAgIDwvcGFyYT48L2VudHJ5Pgor ICAgICA8L3Jvdz4KICAgICA8L3Rib2R5PgogICAgPC90Z3JvdXA+CiAgIDwvdGFibGU+CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYwppbmRleCA0NmFlZTZmMmE5Li41OTYzZTYz OWQ4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMKQEAgLTE5NSw3ICsxOTUs OCBAQCBnaXN0UmVkb0RlbGV0ZVJlY29yZChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAog CQlYTG9nUmVjR2V0QmxvY2tUYWcocmVjb3JkLCAwLCAmcm5vZGUsIE5VTEwsIE5VTEwpOwog Ci0JCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhsZGF0YS0+bGF0ZXN0 UmVtb3ZlZFhpZCwgcm5vZGUpOworCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFw c2hvdCh4bGRhdGEtPmxhdGVzdFJlbW92ZWRYaWQsCisJCQkJCQkJCQkJCXhsZGF0YS0+b25D YXRhbG9nVGFibGUsIHJub2RlKTsKIAl9CiAKIAlpZiAoWExvZ1JlYWRCdWZmZXJGb3JSZWRv KHJlY29yZCwgMCwgJmJ1ZmZlcikgPT0gQkxLX05FRURTX1JFRE8pCkBAIC0zOTUsNiArMzk2 LDcgQEAgZ2lzdFJlZG9QYWdlUmV1c2UoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJICov CiAJaWYgKEluSG90U3RhbmRieSkKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25h cHNob3RGdWxsWGlkKHhscmVjLT5sYXRlc3RSZW1vdmVkRnVsbFhpZCwKKwkJCQkJCQkJCQkJ CSAgIHhscmVjLT5vbkNhdGFsb2dUYWJsZSwKIAkJCQkJCQkJCQkJCSAgIHhscmVjLT5ub2Rl KTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9n LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoX3hsb2cuYwppbmRleCAyNzQ3NWZj YmQ2Li5lNWM2MTI0NDAwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9o YXNoX3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoX3hsb2cuYwpA QCAtMTAwMiw3ICsxMDAyLDggQEAgaGFzaF94bG9nX3ZhY3V1bV9vbmVfcGFnZShYTG9nUmVh ZGVyU3RhdGUgKnJlY29yZCkKIAkJUmVsRmlsZU5vZGUgcm5vZGU7CiAKIAkJWExvZ1JlY0dl dEJsb2NrVGFnKHJlY29yZCwgMCwgJnJub2RlLCBOVUxMLCBOVUxMKTsKLQkJUmVzb2x2ZVJl Y292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxkYXRhLT5sYXRlc3RSZW1vdmVkWGlkLCBy bm9kZSk7CisJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhsZGF0YS0+ bGF0ZXN0UmVtb3ZlZFhpZCwKKwkJCQkJCQkJCQkJeGxkYXRhLT5vbkNhdGFsb2dUYWJsZSwg cm5vZGUpOwogCX0KIAogCWFjdGlvbiA9IFhMb2dSZWFkQnVmZmVyRm9yUmVkb0V4dGVuZGVk KHJlY29yZCwgMCwgUkJNX05PUk1BTCwgdHJ1ZSwgJmJ1ZmZlcik7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL2hlYXBhbS5jCmluZGV4IDQwMTlhMjEyMmUuLjc1Y2E1Zjc5ZjQgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC04NDE5LDcgKzg0MTksOCBAQCBoZWFwX3hsb2dfcHJ1 bmUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJICogbm8gcXVlcmllcyBydW5uaW5nIGZv ciB3aGljaCB0aGUgcmVtb3ZlZCB0dXBsZXMgYXJlIHN0aWxsIHZpc2libGUuCiAJICovCiAJ aWYgKEluSG90U3RhbmRieSkKLQkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNo b3QoeGxyZWMtPmxhdGVzdFJlbW92ZWRYaWQsIHJub2RlKTsKKwkJUmVzb2x2ZVJlY292ZXJ5 Q29uZmxpY3RXaXRoU25hcHNob3QoeGxyZWMtPmxhdGVzdFJlbW92ZWRYaWQsCisJCQkJCQkJ CQkJCXhscmVjLT5vbkNhdGFsb2dUYWJsZSwgcm5vZGUpOwogCiAJLyoKIAkgKiBJZiB3ZSBo YXZlIGEgZnVsbC1wYWdlIGltYWdlLCByZXN0b3JlIGl0ICh1c2luZyBhIGNsZWFudXAgbG9j aykgYW5kCkBAIC04NTg3LDcgKzg1ODgsOSBAQCBoZWFwX3hsb2dfdmlzaWJsZShYTG9nUmVh ZGVyU3RhdGUgKnJlY29yZCkKIAkgKiByYXRoZXIgdGhhbiBraWxsaW5nIHRoZSB0cmFuc2Fj dGlvbiBvdXRyaWdodC4KIAkgKi8KIAlpZiAoSW5Ib3RTdGFuZGJ5KQotCQlSZXNvbHZlUmVj b3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bHJlYy0+Y3V0b2ZmX3hpZCwgcm5vZGUpOwor CQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bHJlYy0+Y3V0b2ZmX3hp ZCwKKwkJCQkJCQkJCQkJeGxyZWMtPm9uQ2F0YWxvZ1RhYmxlLAorCQkJCQkJCQkJCQlybm9k ZSk7CiAKIAkvKgogCSAqIFJlYWQgdGhlIGhlYXAgcGFnZSwgaWYgaXQgc3RpbGwgZXhpc3Rz LiBJZiB0aGUgaGVhcCBmaWxlIGhhcyBkcm9wcGVkIG9yCkBAIC04NzI0LDcgKzg3MjcsOCBA QCBoZWFwX3hsb2dfZnJlZXplX3BhZ2UoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCVRy YW5zYWN0aW9uSWRSZXRyZWF0KGxhdGVzdFJlbW92ZWRYaWQpOwogCiAJCVhMb2dSZWNHZXRC bG9ja1RhZyhyZWNvcmQsIDAsICZybm9kZSwgTlVMTCwgTlVMTCk7Ci0JCVJlc29sdmVSZWNv dmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KGxhdGVzdFJlbW92ZWRYaWQsIHJub2RlKTsKKwkJ UmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QobGF0ZXN0UmVtb3ZlZFhpZCwK KwkJCQkJCQkJCQkJeGxyZWMtPm9uQ2F0YWxvZ1RhYmxlLCBybm9kZSk7CiAJfQogCiAJaWYg KFhMb2dSZWFkQnVmZmVyRm9yUmVkbyhyZWNvcmQsIDAsICZidWZmZXIpID09IEJMS19ORUVE U19SRURPKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR4bG9n LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHhsb2cuYwppbmRleCA3ODZjMDhj MGNlLi40MWI3ZWM4ZTJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idHhsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHhsb2cuYwpA QCAtNjY4LDcgKzY2OCw4IEBAIGJ0cmVlX3hsb2dfZGVsZXRlKFhMb2dSZWFkZXJTdGF0ZSAq cmVjb3JkKQogCiAJCVhMb2dSZWNHZXRCbG9ja1RhZyhyZWNvcmQsIDAsICZybm9kZSwgTlVM TCwgTlVMTCk7CiAKLQkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxy ZWMtPmxhdGVzdFJlbW92ZWRYaWQsIHJub2RlKTsKKwkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxp Y3RXaXRoU25hcHNob3QoeGxyZWMtPmxhdGVzdFJlbW92ZWRYaWQsCisJCQkJCQkJCQkJCXhs cmVjLT5vbkNhdGFsb2dUYWJsZSwgcm5vZGUpOwogCX0KIAogCS8qCkBAIC0xMDA2LDYgKzEw MDcsNyBAQCBidHJlZV94bG9nX3JldXNlX3BhZ2UoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQp CiAKIAlpZiAoSW5Ib3RTdGFuZGJ5KQogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhT bmFwc2hvdEZ1bGxYaWQoeGxyZWMtPmxhdGVzdFJlbW92ZWRGdWxsWGlkLAorCQkJCQkJCQkJ CQkJICAgeGxyZWMtPm9uQ2F0YWxvZ1RhYmxlLAogCQkJCQkJCQkJCQkJICAgeGxyZWMtPm5v ZGUpOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hs b2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BneGxvZy5jCmluZGV4IDNkZmQy YWEzMTcuLmFkZDRkYTRlNzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdp c3Qvc3BneGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BneGxvZy5j CkBAIC04ODEsNiArODgxLDcgQEAgc3BnUmVkb1ZhY3V1bVJlZGlyZWN0KFhMb2dSZWFkZXJT dGF0ZSAqcmVjb3JkKQogCiAJCQlYTG9nUmVjR2V0QmxvY2tUYWcocmVjb3JkLCAwLCAmbm9k ZSwgTlVMTCwgTlVMTCk7CiAJCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hv dCh4bGRhdGEtPm5ld2VzdFJlZGlyZWN0WGlkLAorCQkJCQkJCQkJCQkJeGxkYXRhLT5vbkNh dGFsb2dUYWJsZSwKIAkJCQkJCQkJCQkJCW5vZGUpOwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZy5jCmluZGV4IGQwZWM2YTgzNGIuLjdiNmQ3NWNkNGIgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKQEAgLTEwMzkxLDYgKzEwMzkxLDE5IEBAIHhsb2df cmVkbyhYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJLyogVXBkYXRlIG91ciBjb3B5IG9m IHRoZSBwYXJhbWV0ZXJzIGluIHBnX2NvbnRyb2wgKi8KIAkJbWVtY3B5KCZ4bHJlYywgWExv Z1JlY0dldERhdGEocmVjb3JkKSwgc2l6ZW9mKHhsX3BhcmFtZXRlcl9jaGFuZ2UpKTsKIAor CQkvKgorCQkgKiBJbnZhbGlkYXRlIGxvZ2ljYWwgc2xvdHMgaWYgd2UgYXJlIGluIGhvdCBz dGFuZGJ5IGFuZCB0aGUgcHJpbWFyeSBkb2VzIG5vdAorCQkgKiBoYXZlIGEgV0FMIGxldmVs IHN1ZmZpY2llbnQgZm9yIGxvZ2ljYWwgZGVjb2RpbmcuIE5vIG5lZWQgdG8gc2VhcmNoCisJ CSAqIGZvciBwb3RlbnRpYWxseSBjb25mbGljdGluZyBsb2dpY2FsbHkgc2xvdHMgaWYgc3Rh bmRieSBpcyBydW5uaW5nCisJCSAqIHdpdGggd2FsX2xldmVsIGxvd2VyIHRoYW4gbG9naWNh bCwgYmVjYXVzZSBpbiB0aGF0IGNhc2UsIHdlIHdvdWxkCisJCSAqIGhhdmUgZWl0aGVyIGRp c2FsbG93ZWQgY3JlYXRpb24gb2YgbG9naWNhbCBzbG90cyBvciBpbnZhbGlkYXRlZCBleGlz dGluZworCQkgKiBvbmVzLgorCQkgKi8KKwkJaWYgKEluUmVjb3ZlcnkgJiYgSW5Ib3RTdGFu ZGJ5ICYmCisJCQl4bHJlYy53YWxfbGV2ZWwgPCBXQUxfTEVWRUxfTE9HSUNBTCAmJgorCQkJ d2FsX2xldmVsID49IFdBTF9MRVZFTF9MT0dJQ0FMKQorCQkJSW52YWxpZGF0ZUNvbmZsaWN0 aW5nTG9naWNhbFJlcGxpY2F0aW9uU2xvdHMoSW52YWxpZE9pZCxJbnZhbGlkVHJhbnNhY3Rp b25JZCk7CisKIAkJTFdMb2NrQWNxdWlyZShDb250cm9sRmlsZUxvY2ssIExXX0VYQ0xVU0lW RSk7CiAJCUNvbnRyb2xGaWxlLT5NYXhDb25uZWN0aW9ucyA9IHhscmVjLk1heENvbm5lY3Rp b25zOwogCQlDb250cm9sRmlsZS0+bWF4X3dvcmtlcl9wcm9jZXNzZXMgPSB4bHJlYy5tYXhf d29ya2VyX3Byb2Nlc3NlczsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lz dGVtX3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApp bmRleCA1NWY2ZTM3MTFkLi5jZDFmYzg4ZDE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j YXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0 ZW1fdmlld3Muc3FsCkBAIC0xMDIwLDcgKzEwMjAsOCBAQCBDUkVBVEUgVklFVyBwZ19zdGF0 X2RhdGFiYXNlX2NvbmZsaWN0cyBBUwogICAgICAgICAgICAgcGdfc3RhdF9nZXRfZGJfY29u ZmxpY3RfbG9jayhELm9pZCkgQVMgY29uZmxfbG9jaywKICAgICAgICAgICAgIHBnX3N0YXRf Z2V0X2RiX2NvbmZsaWN0X3NuYXBzaG90KEQub2lkKSBBUyBjb25mbF9zbmFwc2hvdCwKICAg ICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2J1ZmZlcnBpbihELm9pZCkgQVMg Y29uZmxfYnVmZmVycGluLAotICAgICAgICAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rf c3RhcnR1cF9kZWFkbG9jayhELm9pZCkgQVMgY29uZmxfZGVhZGxvY2sKKyAgICAgICAgICAg IHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2soRC5vaWQpIEFTIGNv bmZsX2RlYWRsb2NrLAorICAgICAgICAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfbG9n aWNhbHNsb3QoRC5vaWQpIEFTIGNvbmZsX2xvZ2ljYWxzbG90CiAgICAgRlJPTSBwZ19kYXRh YmFzZSBEOwogCiBDUkVBVEUgVklFVyBwZ19zdGF0X3VzZXJfZnVuY3Rpb25zIEFTCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bnc3RhdC5jIGIvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9wZ3N0YXQuYwppbmRleCA1Njc1NWNiOTJiLi40ZmQyMTE3NDQzIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bnc3RhdC5jCisrKyBiL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvcGdzdGF0LmMKQEAgLTE4NjUsNiArMTg2NSwyMiBAQCBwZ3N0YXRf cmVwb3J0X3JlcGxzbG90X2Ryb3AoY29uc3QgY2hhciAqc2xvdG5hbWUpCiAJcGdzdGF0X3Nl bmQoJm1zZywgc2l6ZW9mKFBnU3RhdF9Nc2dSZXBsU2xvdCkpOwogfQogCisvKiAtLS0tLS0t LS0tCisgKiBwZ3N0YXRfcmVwb3J0X3JlcGxzbG90X2NvbmZsaWN0KCkKKyAqIFRlbGwgdGhl IGNvbGxlY3RvciBhYm91dCBhIGxvZ2ljYWwgc2xvdCBiZWluZyBjb25mbGljdGluZworICog d2l0aCByZWNvdmVyeS4KKyAqIC0tLS0tLS0tLS0KKyAqLwordm9pZAorcGdzdGF0X3JlcG9y dF9yZXBsc2xvdF9jb25mbGljdChPaWQgZGJvaWQpCit7CisJUGdTdGF0X01zZ1JlY292ZXJ5 Q29uZmxpY3QgbXNnOworCXBnc3RhdF9zZXRoZWFkZXIoJm1zZy5tX2hkciwgUEdTVEFUX01U WVBFX1JFQ09WRVJZQ09ORkxJQ1QpOworCW1zZy5tX2RhdGFiYXNlaWQgPSBkYm9pZDsKKwlt c2cubV9yZWFzb24gPSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9UOwor CXBnc3RhdF9zZW5kKCZtc2csIHNpemVvZihtc2cpKTsKK30KKwogLyogLS0tLS0tLS0tLQog ICogcGdzdGF0X3BpbmcoKSAtCiAgKgpAQCAtMzU1OCw2ICszNTc0LDcgQEAgcmVzZXRfZGJl bnRyeV9jb3VudGVycyhQZ1N0YXRfU3RhdERCRW50cnkgKmRiZW50cnkpCiAJZGJlbnRyeS0+ bl9jb25mbGljdF90YWJsZXNwYWNlID0gMDsKIAlkYmVudHJ5LT5uX2NvbmZsaWN0X2xvY2sg PSAwOwogCWRiZW50cnktPm5fY29uZmxpY3Rfc25hcHNob3QgPSAwOworCWRiZW50cnktPm5f Y29uZmxpY3RfbG9naWNhbHNsb3QgPSAwOwogCWRiZW50cnktPm5fY29uZmxpY3RfYnVmZmVy cGluID0gMDsKIAlkYmVudHJ5LT5uX2NvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2sgPSAwOwog CWRiZW50cnktPm5fdGVtcF9maWxlcyA9IDA7CkBAIC01NTA3LDYgKzU1MjQsOSBAQCBwZ3N0 YXRfcmVjdl9yZWNvdmVyeWNvbmZsaWN0KFBnU3RhdF9Nc2dSZWNvdmVyeUNvbmZsaWN0ICpt c2csIGludCBsZW4pCiAJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hP VDoKIAkJCWRiZW50cnktPm5fY29uZmxpY3Rfc25hcHNob3QrKzsKIAkJCWJyZWFrOworCQlj YXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1Q6CisJCQlkYmVudHJ5 LT5uX2NvbmZsaWN0X2xvZ2ljYWxzbG90Kys7CisJCQlicmVhazsKIAkJY2FzZSBQUk9DU0lH X1JFQ09WRVJZX0NPTkZMSUNUX0JVRkZFUlBJTjoKIAkJCWRiZW50cnktPm5fY29uZmxpY3Rf YnVmZmVycGluKys7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jCmluZGV4IDFmMzhjNWIzM2UuLjFkOTQwMGVhNjMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1 bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVu Y3MuYwpAQCAtMjQxLDExICsyNDEsMTQgQEAgcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2Vz X2d1dHMoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGJvb2wgY29uZmlybSwgYm9vbCBiaW4K IAogCQkvKgogCQkgKiBBZnRlciB0aGUgc2FuaXR5IGNoZWNrcyBpbiBDcmVhdGVEZWNvZGlu Z0NvbnRleHQsIG1ha2Ugc3VyZSB0aGUKLQkJICogcmVzdGFydF9sc24gaXMgdmFsaWQuICBB dm9pZCAiY2Fubm90IGdldCBjaGFuZ2VzIiB3b3JkaW5nIGluIHRoaXMKKwkJICogcmVzdGFy dF9sc24gaXMgdmFsaWQgb3IgYm90aCB4bWluIGFuZCBjYXRhbG9nX3htaW4gYXJlIHZhbGlk LgorCQkgKiBBdm9pZCAiY2Fubm90IGdldCBjaGFuZ2VzIiB3b3JkaW5nIGluIHRoaXMKIAkJ ICogZXJybXNnIGJlY2F1c2UgdGhhdCdkIGJlIGNvbmZ1c2luZ2x5IGFtYmlndW91cyBhYm91 dCBubyBjaGFuZ2VzCiAJCSAqIGJlaW5nIGF2YWlsYWJsZS4KIAkJICovCi0JCWlmIChYTG9n UmVjUHRySXNJbnZhbGlkKE15UmVwbGljYXRpb25TbG90LT5kYXRhLnJlc3RhcnRfbHNuKSkK KwkJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQoTXlSZXBsaWNhdGlvblNsb3QtPmRhdGEucmVz dGFydF9sc24pCisJCQl8fCAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UmVwbGljYXRpb25T bG90LT5kYXRhLnhtaW4pCisJCQkJJiYgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UmVwbGlj YXRpb25TbG90LT5kYXRhLmNhdGFsb2dfeG1pbikpKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJ CQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSks CiAJCQkJCSBlcnJtc2coImNhbiBubyBsb25nZXIgZ2V0IGNoYW5nZXMgZnJvbSByZXBsaWNh dGlvbiBzbG90IFwiJXNcIiIsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9zbG90LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKaW5kZXggMzNlOWFj YWI0YS4uNmU4OWJhYjI1NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v c2xvdC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwpAQCAtMTMzOCw2 ICsxMzM4LDIxNSBAQCByZXN0YXJ0OgogCXJldHVybiBpbnZhbGlkYXRlZDsKIH0KIAorLyoK KyAqIEhlbHBlciBmb3IgSW52YWxpZGF0ZUNvbmZsaWN0aW5nTG9naWNhbFJlcGxpY2F0aW9u U2xvdCAtLSBhY3F1aXJlcyB0aGUgZ2l2ZW4gc2xvdAorICogYW5kIG1hcmsgaXQgaW52YWxp ZCwgaWYgbmVjZXNzYXJ5IGFuZCBwb3NzaWJsZS4KKyAqCisgKiBSZXR1cm5zIHdoZXRoZXIg UmVwbGljYXRpb25TbG90Q29udHJvbExvY2sgd2FzIHJlbGVhc2VkIGluIHRoZSBpbnRlcmlt IChhbmQKKyAqIGluIHRoYXQgY2FzZSB3ZSdyZSBub3QgaG9sZGluZyB0aGUgbG9jayBhdCBy ZXR1cm4sIG90aGVyd2lzZSB3ZSBhcmUpLgorICoKKyAqIFRoaXMgaXMgaW5oZXJlbnRseSBy YWN5LCBiZWNhdXNlIHdlIHJlbGVhc2UgdGhlIExXTG9jaworICogZm9yIHN5c2NhbGxzLCBz byBjYWxsZXIgbXVzdCByZXN0YXJ0IGlmIHdlIHJldHVybiB0cnVlLgorICovCitzdGF0aWMg Ym9vbAorSW52YWxpZGF0ZVBvc3NpYmx5Q29uZmxpY3RpbmdMb2dpY2FsUmVwbGljYXRpb25T bG90KFJlcGxpY2F0aW9uU2xvdCAqcywgVHJhbnNhY3Rpb25JZCB4aWQpCit7CisJaW50CQls YXN0X3NpZ25hbGVkX3BpZCA9IDA7CisJYm9vbAlyZWxlYXNlZF9sb2NrID0gZmFsc2U7CisK Kwlmb3IgKDs7KQorCXsKKwkJVHJhbnNhY3Rpb25JZCBzbG90X3htaW47CisJCVRyYW5zYWN0 aW9uSWQgc2xvdF9jYXRhbG9nX3htaW47CisJCU5hbWVEYXRhCXNsb3RuYW1lOworCQlpbnQJ CQlhY3RpdmVfcGlkID0gMDsKKworCQlBc3NlcnQoTFdMb2NrSGVsZEJ5TWVJbk1vZGUoUmVw bGljYXRpb25TbG90Q29udHJvbExvY2ssIExXX1NIQVJFRCkpOworCisJCWlmICghcy0+aW5f dXNlKQorCQl7CisJCQlpZiAocmVsZWFzZWRfbG9jaykKKwkJCQlMV0xvY2tSZWxlYXNlKFJl cGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrKTsKKwkJCWJyZWFrOworCQl9CisKKwkJLyoKKwkJ ICogQ2hlY2sgaWYgdGhlIHNsb3QgbmVlZHMgdG8gYmUgaW52YWxpZGF0ZWQuIElmIGl0IG5l ZWRzIHRvIGJlCisJCSAqIGludmFsaWRhdGVkLCBhbmQgaXMgbm90IGN1cnJlbnRseSBhY3F1 aXJlZCwgYWNxdWlyZSBpdCBhbmQgbWFyayBpdAorCQkgKiBhcyBoYXZpbmcgYmVlbiBpbnZh bGlkYXRlZC4gV2UgZG8gdGhpcyB3aXRoIHRoZSBzcGlubG9jayBoZWxkIHRvCisJCSAqIGF2 b2lkIHJhY2UgY29uZGl0aW9ucyAtLSBmb3IgZXhhbXBsZSB0aGUgeG1pbihzKSBjb3VsZCBt b3ZlIGZvcndhcmQKKwkJICogLCBvciB0aGUgc2xvdCBjb3VsZCBiZSBkcm9wcGVkLgorCQkg Ki8KKwkJU3BpbkxvY2tBY3F1aXJlKCZzLT5tdXRleCk7CisKKwkJc2xvdF94bWluID0gcy0+ ZGF0YS54bWluOworCQlzbG90X2NhdGFsb2dfeG1pbiA9IHMtPmRhdGEuY2F0YWxvZ194bWlu OworCisJCS8qCisJCSAqIElmIHRoZSBzbG90IGlzIGFscmVhZHkgaW52YWxpZCBvciBpcyBu b3QgY29uZmxpY3RpbmcsIHdlIGRvbid0IG5lZWQgdG8KKwkJICogZG8gYW55dGhpbmcuCisJ CSAqLworCisJCS8qIHNsb3QgaGFzIGJlZW4gaW52YWxpZGF0ZWQgKi8KKwkJaWYgKCghVHJh bnNhY3Rpb25JZElzVmFsaWQoc2xvdF94bWluKSAmJiAhVHJhbnNhY3Rpb25JZElzVmFsaWQo c2xvdF9jYXRhbG9nX3htaW4pKQorCQkJfHwKKwkJLyoKKwkJICogd2UgYXJlIG5vdCBmb3Jj aW5nIGZvciBpbnZhbGlkYXRpb24gYmVjYXVzZSB0aGUgeGlkIGlzIHZhbGlkCisJCSAqIGFu ZCB0aGlzIGlzIGEgbm9uIGNvbmZsaWN0aW5nIHNsb3QKKwkJICovCisJCQkoVHJhbnNhY3Rp b25JZElzVmFsaWQoeGlkKSAmJiAhKAorCQkJCShUcmFuc2FjdGlvbklkSXNWYWxpZChzbG90 X3htaW4pICYmIFRyYW5zYWN0aW9uSWRQcmVjZWRlc09yRXF1YWxzKHNsb3RfeG1pbiwgeGlk KSkKKwkJCQl8fAorCQkJCShUcmFuc2FjdGlvbklkSXNWYWxpZChzbG90X2NhdGFsb2dfeG1p bikgJiYgVHJhbnNhY3Rpb25JZFByZWNlZGVzT3JFcXVhbHMoc2xvdF9jYXRhbG9nX3htaW4s IHhpZCkpCisJCQkJKSkKKwkJCSkKKwkJeworCQkJU3BpbkxvY2tSZWxlYXNlKCZzLT5tdXRl eCk7CisJCQlpZiAocmVsZWFzZWRfbG9jaykKKwkJCQlMV0xvY2tSZWxlYXNlKFJlcGxpY2F0 aW9uU2xvdENvbnRyb2xMb2NrKTsKKwkJCWJyZWFrOworCQl9CisKKwkJc2xvdG5hbWUgPSBz LT5kYXRhLm5hbWU7CisJCWFjdGl2ZV9waWQgPSBzLT5hY3RpdmVfcGlkOworCisJCS8qCisJ CSAqIElmIHRoZSBzbG90IGNhbiBiZSBhY3F1aXJlZCwgZG8gc28gYW5kIG1hcmsgaXQgaW52 YWxpZGF0ZWQKKwkJICogaW1tZWRpYXRlbHkuICBPdGhlcndpc2Ugd2UnbGwgc2lnbmFsIHRo ZSBvd25pbmcgcHJvY2VzcywgYmVsb3csIGFuZAorCQkgKiByZXRyeS4KKwkJICovCisJCWlm IChhY3RpdmVfcGlkID09IDApCisJCXsKKwkJCU15UmVwbGljYXRpb25TbG90ID0gczsKKwkJ CXMtPmFjdGl2ZV9waWQgPSBNeVByb2NQaWQ7CisJCQlzLT5kYXRhLnhtaW4gPSBJbnZhbGlk VHJhbnNhY3Rpb25JZDsKKwkJCXMtPmRhdGEuY2F0YWxvZ194bWluID0gSW52YWxpZFRyYW5z YWN0aW9uSWQ7CisJCX0KKworCQlTcGluTG9ja1JlbGVhc2UoJnMtPm11dGV4KTsKKworCQlp ZiAoYWN0aXZlX3BpZCAhPSAwKQorCQl7CisJCQkvKgorCQkJICogUHJlcGFyZSB0aGUgc2xl ZXAgb24gdGhlIHNsb3QncyBjb25kaXRpb24gdmFyaWFibGUgYmVmb3JlCisJCQkgKiByZWxl YXNpbmcgdGhlIGxvY2ssIHRvIGNsb3NlIGEgcG9zc2libGUgcmFjZSBjb25kaXRpb24gaWYg dGhlCisJCQkgKiBzbG90IGlzIHJlbGVhc2VkIGJlZm9yZSB0aGUgc2xlZXAgYmVsb3cuCisJ CQkgKi8KKworCQkJQ29uZGl0aW9uVmFyaWFibGVQcmVwYXJlVG9TbGVlcCgmcy0+YWN0aXZl X2N2KTsKKworCQkJTFdMb2NrUmVsZWFzZShSZXBsaWNhdGlvblNsb3RDb250cm9sTG9jayk7 CisJCQlyZWxlYXNlZF9sb2NrID0gdHJ1ZTsKKworCQkJLyoKKwkJCSAqIFNpZ25hbCB0byB0 ZXJtaW5hdGUgdGhlIHByb2Nlc3MgdGhhdCBvd25zIHRoZSBzbG90LCBpZiB3ZQorCQkJICog aGF2ZW4ndCBhbHJlYWR5IHNpZ25hbGxlZCBpdC4gIChBdm9pZGFuY2Ugb2YgcmVwZWF0ZWQK KwkJCSAqIHNpZ25hbGxpbmcgaXMgdGhlIG9ubHkgcmVhc29uIGZvciB0aGVyZSB0byBiZSBh IGxvb3AgaW4gdGhpcworCQkJICogcm91dGluZTsgb3RoZXJ3aXNlIHdlIGNvdWxkIHJlbHkg b24gY2FsbGVyJ3MgcmVzdGFydCBsb29wLikKKwkJCSAqCisJCQkgKiBUaGVyZSBpcyB0aGUg cmFjZSBjb25kaXRpb24gdGhhdCBvdGhlciBwcm9jZXNzIG1heSBvd24gdGhlIHNsb3QKKwkJ CSAqIGFmdGVyIGl0cyBjdXJyZW50IG93bmVyIHByb2Nlc3MgaXMgdGVybWluYXRlZCBhbmQg YmVmb3JlIHRoaXMKKwkJCSAqIHByb2Nlc3Mgb3ducyBpdC4gVG8gaGFuZGxlIHRoYXQsIHdl IHNpZ25hbCBvbmx5IGlmIHRoZSBQSUQgb2YKKwkJCSAqIHRoZSBvd25pbmcgcHJvY2VzcyBo YXMgY2hhbmdlZCBmcm9tIHRoZSBwcmV2aW91cyB0aW1lLiAoVGhpcworCQkJICogbG9naWMg YXNzdW1lcyB0aGF0IHRoZSBzYW1lIFBJRCBpcyBub3QgcmV1c2VkIHZlcnkgcXVpY2tseS4p CisJCQkgKi8KKwkJCWlmIChsYXN0X3NpZ25hbGVkX3BpZCAhPSBhY3RpdmVfcGlkKQorCQkJ eworCQkJCWVyZXBvcnQoTE9HLAorCQkJCQkJKGVycm1zZygidGVybWluYXRpbmcgcHJvY2Vz cyAlZCBiZWNhdXNlIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIGNvbmZsaWN0cyB3aXRoIHJl Y292ZXJ5IiwKKwkJCQkJCQkJYWN0aXZlX3BpZCwgTmFtZVN0cihzbG90bmFtZSkpKSk7CisK KwkJCQkodm9pZCkga2lsbChhY3RpdmVfcGlkLCBTSUdURVJNKTsKKwkJCQlsYXN0X3NpZ25h bGVkX3BpZCA9IGFjdGl2ZV9waWQ7CisJCQl9CisKKwkJCS8qIFdhaXQgdW50aWwgdGhlIHNs b3QgaXMgcmVsZWFzZWQuICovCisJCQlDb25kaXRpb25WYXJpYWJsZVNsZWVwKCZzLT5hY3Rp dmVfY3YsCisJCQkJCQkJCQlXQUlUX0VWRU5UX1JFUExJQ0FUSU9OX1NMT1RfRFJPUCk7CisK KwkJCS8qCisJCQkgKiBSZS1hY3F1aXJlIGxvY2sgYW5kIHN0YXJ0IG92ZXI7IHdlIGV4cGVj dCB0byBpbnZhbGlkYXRlIHRoZQorCQkJICogc2xvdCBuZXh0IHRpbWUgKHVubGVzcyBhbm90 aGVyIHByb2Nlc3MgYWNxdWlyZXMgdGhlIHNsb3QgaW4gdGhlCisJCQkgKiBtZWFudGltZSku CisJCQkgKi8KKwkJCUxXTG9ja0FjcXVpcmUoUmVwbGljYXRpb25TbG90Q29udHJvbExvY2ss IExXX1NIQVJFRCk7CisJCQljb250aW51ZTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qCisJ CQkgKiBXZSBob2xkIHRoZSBzbG90IG5vdyBhbmQgaGF2ZSBhbHJlYWR5IGludmFsaWRhdGVk IGl0OyBmbHVzaCBpdAorCQkJICogdG8gZW5zdXJlIHRoYXQgc3RhdGUgcGVyc2lzdHMuCisJ CQkgKgorCQkJICogRG9uJ3Qgd2FudCB0byBob2xkIFJlcGxpY2F0aW9uU2xvdENvbnRyb2xM b2NrIGFjcm9zcyBmaWxlCisJCQkgKiBzeXN0ZW0gb3BlcmF0aW9ucywgc28gcmVsZWFzZSBp dCBub3cgYnV0IGJlIHN1cmUgdG8gdGVsbCBjYWxsZXIKKwkJCSAqIHRvIHJlc3RhcnQgZnJv bSBzY3JhdGNoLgorCQkJICovCisJCQlMV0xvY2tSZWxlYXNlKFJlcGxpY2F0aW9uU2xvdENv bnRyb2xMb2NrKTsKKwkJCXJlbGVhc2VkX2xvY2sgPSB0cnVlOworCisJCQkvKiBNYWtlIHN1 cmUgdGhlIGludmFsaWRhdGVkIHN0YXRlIHBlcnNpc3RzIGFjcm9zcyBzZXJ2ZXIgcmVzdGFy dCAqLworCQkJUmVwbGljYXRpb25TbG90TWFya0RpcnR5KCk7CisJCQlSZXBsaWNhdGlvblNs b3RTYXZlKCk7CisJCQlSZXBsaWNhdGlvblNsb3RSZWxlYXNlKCk7CisJCQlwZ3N0YXRfcmVw b3J0X3JlcGxzbG90X2NvbmZsaWN0KHMtPmRhdGEuZGF0YWJhc2UpOworCisJCQllcmVwb3J0 KExPRywKKwkJCQkJKGVycm1zZygiaW52YWxpZGF0aW5nIHNsb3QgXCIlc1wiIGJlY2F1c2Ug aXQgY29uZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCBOYW1lU3RyKHNsb3RuYW1lKSkpKTsKKwor CQkJLyogZG9uZSB3aXRoIHRoaXMgc2xvdCBmb3Igbm93ICovCisJCQlicmVhazsKKwkJfQor CX0KKworCUFzc2VydCghcmVsZWFzZWRfbG9jayA9PSBMV0xvY2tIZWxkQnlNZUluTW9kZShS ZXBsaWNhdGlvblNsb3RDb250cm9sTG9jaywgTFdfU0hBUkVEKSk7CisKKwlyZXR1cm4gcmVs ZWFzZWRfbG9jazsKK30KKworLyoKKyAqIFJlc29sdmUgcmVjb3ZlcnkgY29uZmxpY3RzIHdp dGggbG9naWNhbCBzbG90cy4KKyAqCisgKiBXaGVuIHhpZCBpcyB2YWxpZCwgaXQgbWVhbnMg dGhhdCB3ZSBhcmUgYWJvdXQgdG8gcmVtb3ZlIHJvd3Mgb2xkZXIgdGhhbiB4aWQuCisgKiBU aGVyZWZvcmUgd2UgbmVlZCB0byBpbnZhbGlkYXRlIHNsb3RzIHRoYXQgZGVwZW5kIG9uIHNl ZWluZyB0aG9zZSByb3dzLgorICogV2hlbiB4aWQgaXMgaW52YWxpZCwgaW52YWxpZGF0ZSBh bGwgbG9naWNhbCBzbG90cy4gVGhpcyBpcyByZXF1aXJlZCB3aGVuIHRoZQorICogbWFzdGVy IHdhbF9sZXZlbCBpcyBzZXQgYmFjayB0byByZXBsaWNhLCBzbyBleGlzdGluZyBsb2dpY2Fs IHNsb3RzIG5lZWQgdG8KKyAqIGJlIGludmFsaWRhdGVkLgorICovCit2b2lkCitJbnZhbGlk YXRlQ29uZmxpY3RpbmdMb2dpY2FsUmVwbGljYXRpb25TbG90cyhPaWQgZGJvaWQsIFRyYW5z YWN0aW9uSWQgeGlkKQoreworCisJQXNzZXJ0KG1heF9yZXBsaWNhdGlvbl9zbG90cyA+PSAw KTsKKworCWlmIChtYXhfcmVwbGljYXRpb25fc2xvdHMgPT0gMCkKKwkJcmV0dXJuOworcmVz dGFydDoKKwlMV0xvY2tBY3F1aXJlKFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrLCBMV19T SEFSRUQpOworCWZvciAoaW50IGkgPSAwOyBpIDwgbWF4X3JlcGxpY2F0aW9uX3Nsb3RzOyBp KyspCisJeworCQlSZXBsaWNhdGlvblNsb3QgKnMgPSAmUmVwbGljYXRpb25TbG90Q3RsLT5y ZXBsaWNhdGlvbl9zbG90c1tpXTsKKworCQlpZiAoIXMtPmluX3VzZSkKKwkJCWNvbnRpbnVl OworCisJCS8qIFdlIGFyZSBvbmx5IGRlYWxpbmcgd2l0aCAqbG9naWNhbCogc2xvdCBjb25m bGljdHMuICovCisJCWlmICghU2xvdElzTG9naWNhbChzKSkKKwkJCWNvbnRpbnVlOworCisJ CS8qIG5vdCBvdXIgZGF0YWJhc2UgYW5kIHdlIGRvbid0IHdhbnQgYWxsIHRoZSBkYXRhYmFz ZSwgc2tpcCAqLworCQlpZiAocy0+ZGF0YS5kYXRhYmFzZSAhPSBkYm9pZCAmJiBUcmFuc2Fj dGlvbklkSXNWYWxpZCh4aWQpKQorCQkJY29udGludWU7CisKKwkJaWYgKEludmFsaWRhdGVQ b3NzaWJseUNvbmZsaWN0aW5nTG9naWNhbFJlcGxpY2F0aW9uU2xvdChzLCB4aWQpKQorCQl7 CisJCQkvKiBpZiB0aGUgbG9jayB3YXMgcmVsZWFzZWQsIHdlIG5lZWQgdG8gcmVzdGFydCBm cm9tIHNjcmF0Y2ggKi8KKwkJCWdvdG8gcmVzdGFydDsKKwkJfQorCX0KKwlMV0xvY2tSZWxl YXNlKFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrKTsKK30KKwogLyoKICAqIEZsdXNoIGFs bCByZXBsaWNhdGlvbiBzbG90cyB0byBkaXNrLgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v d2Fsc2VuZGVyLmMKaW5kZXggM2NhMmExMTM4OS4uZDBlMjQ3YjEwNCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKKysrIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKQEAgLTExNDcsNiArMTE0NywxNCBAQCBTdGFydExv Z2ljYWxSZXBsaWNhdGlvbihTdGFydFJlcGxpY2F0aW9uQ21kICpjbWQpCiAKIAlSZXBsaWNh dGlvblNsb3RBY3F1aXJlKGNtZC0+c2xvdG5hbWUsIHRydWUpOwogCisJaWYgKCFUcmFuc2Fj dGlvbklkSXNWYWxpZChNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS54bWluKQorCQkgJiYgIVRy YW5zYWN0aW9uSWRJc1ZhbGlkKE15UmVwbGljYXRpb25TbG90LT5kYXRhLmNhdGFsb2dfeG1p bikpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9U X0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygiY2Fubm90IHJlYWQgZnJv bSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIiwKKwkJCQkJCWNtZC0+c2xvdG5h bWUpLAorCQkJCSBlcnJkZXRhaWwoIlRoaXMgc2xvdCBoYXMgYmVlbiBpbnZhbGlkYXRlZCBi ZWNhdXNlIGl0IHdhcyBjb25mbGljdGluZyB3aXRoIHJlY292ZXJ5LiIpKSk7CisKIAlpZiAo WExvZ1JlY1B0cklzSW52YWxpZChNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS5yZXN0YXJ0X2xz bikpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9U X0lOX1BSRVJFUVVJU0lURV9TVEFURSksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9wcm9jYXJyYXkuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJh eS5jCmluZGV4IGM3ODE2ZmNmYjMuLjBjNTU1YTM5MGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3Byb2NhcnJheS5jCkBAIC0zNDQzLDYgKzM0NDMsMTAgQEAgU2lnbmFsVmlydHVhbFRy YW5zYWN0aW9uKFZpcnR1YWxUcmFuc2FjdGlvbklkIHZ4aWQsIFByb2NTaWduYWxSZWFzb24g c2lnbW9kZSwKIAogCQlHRVRfVlhJRF9GUk9NX1BHUFJPQyhwcm9jdnhpZCwgKnByb2MpOwog CisJCS8qCisJCSAqIE5vdGU6IHZ4aWQubG9jYWxUcmFuc2FjdGlvbklkIGNhbiBiZSBpbnZh bGlkLCB3aGljaCBtZWFucyB0aGUKKwkJICogcmVxdWVzdCBpcyB0byBzaWduYWwgdGhlIHBp ZCB0aGF0IGlzIG5vdCBydW5uaW5nIGEgdHJhbnNhY3Rpb24uCisJCSAqLwogCQlpZiAocHJv Y3Z4aWQuYmFja2VuZElkID09IHZ4aWQuYmFja2VuZElkICYmCiAJCQlwcm9jdnhpZC5sb2Nh bFRyYW5zYWN0aW9uSWQgPT0gdnhpZC5sb2NhbFRyYW5zYWN0aW9uSWQpCiAJCXsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYyBiL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwppbmRleCBkZWZiNzVhYTI2Li4zMTVkNWEx ZTMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMK KysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCkBAIC02NzMsNiAr NjczLDkgQEAgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIoU0lHTkFMX0FSR1MpCiAJaWYg KENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9UKSkK IAkJUmVjb3ZlcnlDb25mbGljdEludGVycnVwdChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNU X1NOQVBTSE9UKTsKIAorCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19SRUNPVkVSWV9D T05GTElDVF9MT0dJQ0FMU0xPVCkpCisJCVJlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUFJP Q1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVCk7CisKIAlpZiAoQ2hlY2tQcm9j U2lnbmFsKFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFETE9DSykpCiAJ CVJlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9T VEFSVFVQX0RFQURMT0NLKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvc3RhbmRieS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCmluZGV4 IDA3NzI1MWMxYTYuLjI4MTIxZjA2NTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL3N0YW5kYnkuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5 LmMKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJ1dGlscy9wc19zdGF0dXMuaCIKICNp bmNsdWRlICJ1dGlscy90aW1lb3V0LmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgi CisjaW5jbHVkZSAicmVwbGljYXRpb24vc2xvdC5oIgogCiAvKiBVc2VyLXNldHRhYmxlIEdV QyBwYXJhbWV0ZXJzICovCiBpbnQJCQl2YWN1dW1fZGVmZXJfY2xlYW51cF9hZ2U7CkBAIC00 NDAsNyArNDQxLDggQEAgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoVmlydHVhbFhJRHMo VmlydHVhbFRyYW5zYWN0aW9uSWQgKndhaXRsaXN0LAogfQogCiB2b2lkCi1SZXNvbHZlUmVj b3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdChUcmFuc2FjdGlvbklkIGxhdGVzdFJlbW92ZWRY aWQsIFJlbEZpbGVOb2RlIG5vZGUpCitSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFw c2hvdChUcmFuc2FjdGlvbklkIGxhdGVzdFJlbW92ZWRYaWQsCisJCQkJCQkJCQlib29sIG9u Q2F0YWxvZ1RhYmxlLCBSZWxGaWxlTm9kZSBub2RlKQogewogCVZpcnR1YWxUcmFuc2FjdGlv bklkICpiYWNrZW5kczsKIApAQCAtNDY1LDYgKzQ2Nyw5IEBAIFJlc29sdmVSZWNvdmVyeUNv bmZsaWN0V2l0aFNuYXBzaG90KFRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZCwgUmVs RmlsZU5vZGUKIAkJCQkJCQkJCQkgICBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBT SE9ULAogCQkJCQkJCQkJCSAgIFdBSVRfRVZFTlRfUkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNI T1QsCiAJCQkJCQkJCQkJICAgdHJ1ZSk7CisKKwlpZiAob25DYXRhbG9nVGFibGUpCisJCUlu dmFsaWRhdGVDb25mbGljdGluZ0xvZ2ljYWxSZXBsaWNhdGlvblNsb3RzKG5vZGUuZGJOb2Rl LCBsYXRlc3RSZW1vdmVkWGlkKTsKIH0KIAogLyoKQEAgLTQ3Myw3ICs0NzgsNyBAQCBSZXNv bHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdChUcmFuc2FjdGlvbklkIGxhdGVzdFJl bW92ZWRYaWQsIFJlbEZpbGVOb2RlCiAgKi8KIHZvaWQKIFJlc29sdmVSZWNvdmVyeUNvbmZs aWN0V2l0aFNuYXBzaG90RnVsbFhpZChGdWxsVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVk RnVsbFhpZCwKLQkJCQkJCQkJCQkgICBSZWxGaWxlTm9kZSBub2RlKQorCQkJCQkJCQkJCSAg IGJvb2wgb25DYXRhbG9nVGFibGUsIFJlbEZpbGVOb2RlIG5vZGUpCiB7CiAJLyoKIAkgKiBS ZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCBvcGVyYXRlcyBvbiAzMi1iaXQg VHJhbnNhY3Rpb25JZHMsCkBAIC00OTEsNyArNDk2LDcgQEAgUmVzb2x2ZVJlY292ZXJ5Q29u ZmxpY3RXaXRoU25hcHNob3RGdWxsWGlkKEZ1bGxUcmFuc2FjdGlvbklkIGxhdGVzdFJlbW92 ZWRGdWxsWGkKIAkJVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVkWGlkOwogCiAJCWxhdGVz dFJlbW92ZWRYaWQgPSBYaWRGcm9tRnVsbFRyYW5zYWN0aW9uSWQobGF0ZXN0UmVtb3ZlZEZ1 bGxYaWQpOwotCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdChsYXRlc3RS ZW1vdmVkWGlkLCBub2RlKTsKKwkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNo b3QobGF0ZXN0UmVtb3ZlZFhpZCwgb25DYXRhbG9nVGFibGUsIG5vZGUpOwogCX0KIH0KIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQv dGNvcC9wb3N0Z3Jlcy5jCmluZGV4IDU4YjU5NjBlMjcuLmU0Y2IwN2FiZWIgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29w L3Bvc3RncmVzLmMKQEAgLTI0NjcsNiArMjQ2Nyw5IEBAIGVycmRldGFpbF9yZWNvdmVyeV9j b25mbGljdCh2b2lkKQogCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNI T1Q6CiAJCQllcnJkZXRhaWwoIlVzZXIgcXVlcnkgbWlnaHQgaGF2ZSBuZWVkZWQgdG8gc2Vl IHJvdyB2ZXJzaW9ucyB0aGF0IG11c3QgYmUgcmVtb3ZlZC4iKTsKIAkJCWJyZWFrOworCQlj YXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1Q6CisJCQllcnJkZXRh aWwoIlVzZXIgd2FzIHVzaW5nIHRoZSBsb2dpY2FsIHNsb3QgdGhhdCBtdXN0IGJlIGRyb3Bw ZWQuIik7CisJCQlicmVhazsKIAkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NU QVJUVVBfREVBRExPQ0s6CiAJCQllcnJkZXRhaWwoIlVzZXIgdHJhbnNhY3Rpb24gY2F1c2Vk IGJ1ZmZlciBkZWFkbG9jayB3aXRoIHJlY292ZXJ5LiIpOwogCQkJYnJlYWs7CkBAIC0zMDM3 LDYgKzMwNDAsMjUgQEAgUmVjb3ZlcnlDb25mbGljdEludGVycnVwdChQcm9jU2lnbmFsUmVh c29uIHJlYXNvbikKIAkJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0NLOgog CQkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1RBQkxFU1BBQ0U6CiAJCQljYXNl IFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNIT1Q6CisJCQljYXNlIFBST0NTSUdf UkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1Q6CisJCQkJLyoKKwkJCQkgKiBGb3IgY29u ZmxpY3RzIHRoYXQgcmVxdWlyZSBhIGxvZ2ljYWwgc2xvdCB0byBiZSBpbnZhbGlkYXRlZCwg dGhlCisJCQkJICogcmVxdWlyZW1lbnQgaXMgZm9yIHRoZSBzaWduYWwgcmVjZWl2ZXIgdG8g cmVsZWFzZSB0aGUgc2xvdCwKKwkJCQkgKiBzbyB0aGF0IGl0IGNvdWxkIGJlIGludmFsaWRh dGVkIGJ5IHRoZSBzaWduYWwgc2VuZGVyLiBTbyBmb3IKKwkJCQkgKiBub3JtYWwgYmFja2Vu ZHMsIHRoZSB0cmFuc2FjdGlvbiBzaG91bGQgYmUgYWJvcnRlZCwganVzdAorCQkJCSAqIGxp a2UgZm9yIG90aGVyIHJlY292ZXJ5IGNvbmZsaWN0cy4gQnV0IGlmIGl0J3Mgd2Fsc2VuZGVy IG9uCisJCQkJICogc3RhbmRieSwgdGhlbiBpdCBoYXMgdG8gYmUga2lsbGVkIHNvIGFzIHRv IHJlbGVhc2UgYW4KKwkJCQkgKiBhY3F1aXJlZCBsb2dpY2FsIHNsb3QuCisJCQkJICovCisJ CQkJaWYgKGFtX2Nhc2NhZGluZ193YWxzZW5kZXIgJiYKKwkJCQkJcmVhc29uID09IFBST0NT SUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1QgJiYKKwkJCQkJTXlSZXBsaWNhdGlv blNsb3QgJiYgU2xvdElzTG9naWNhbChNeVJlcGxpY2F0aW9uU2xvdCkpCisJCQkJeworCQkJ CQlSZWNvdmVyeUNvbmZsaWN0UGVuZGluZyA9IHRydWU7CisJCQkJCVF1ZXJ5Q2FuY2VsUGVu ZGluZyA9IHRydWU7CisJCQkJCUludGVycnVwdFBlbmRpbmcgPSB0cnVlOworCQkJCQlicmVh azsKKwkJCQl9CiAKIAkJCQkvKgogCQkJCSAqIElmIHdlIGFyZW4ndCBpbiBhIHRyYW5zYWN0 aW9uIGFueSBsb25nZXIgdGhlbiBpZ25vcmUuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvcGdzdGF0ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRm dW5jcy5jCmluZGV4IGZmNWFlZGM5OWMuLjA3M2I0MDJiYWMgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9wZ3N0YXRmdW5jcy5jCkBAIC0xNDk3LDYgKzE0OTcsMjEgQEAgcGdfc3RhdF9nZXRf ZGJfY29uZmxpY3Rfc25hcHNob3QoUEdfRlVOQ1RJT05fQVJHUykKIAlQR19SRVRVUk5fSU5U NjQocmVzdWx0KTsKIH0KIAorRGF0dW0KK3BnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xvZ2lj YWxzbG90KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJT2lkCQkJZGJpZCA9IFBHX0dFVEFSR19P SUQoMCk7CisJaW50NjQJCXJlc3VsdDsKKwlQZ1N0YXRfU3RhdERCRW50cnkgKmRiZW50cnk7 CisKKwlpZiAoKGRiZW50cnkgPSBwZ3N0YXRfZmV0Y2hfc3RhdF9kYmVudHJ5KGRiaWQpKSA9 PSBOVUxMKQorCQlyZXN1bHQgPSAwOworCWVsc2UKKwkJcmVzdWx0ID0gKGludDY0KSAoZGJl bnRyeS0+bl9jb25mbGljdF9sb2dpY2Fsc2xvdCk7CisKKwlQR19SRVRVUk5fSU5UNjQocmVz dWx0KTsKK30KKwogRGF0dW0KIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2J1ZmZlcnBpbihQ R19GVU5DVElPTl9BUkdTKQogewpAQCAtMTU0MCw2ICsxNTU1LDcgQEAgcGdfc3RhdF9nZXRf ZGJfY29uZmxpY3RfYWxsKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCXJlc3VsdCA9IChpbnQ2NCkg KGRiZW50cnktPm5fY29uZmxpY3RfdGFibGVzcGFjZSArCiAJCQkJCQkgIGRiZW50cnktPm5f Y29uZmxpY3RfbG9jayArCiAJCQkJCQkgIGRiZW50cnktPm5fY29uZmxpY3Rfc25hcHNob3Qg KworCQkJCQkJICBkYmVudHJ5LT5uX2NvbmZsaWN0X2xvZ2ljYWxzbG90ICsKIAkJCQkJCSAg ZGJlbnRyeS0+bl9jb25mbGljdF9idWZmZXJwaW4gKwogCQkJCQkJICBkYmVudHJ5LT5uX2Nv bmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2spOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApp bmRleCBiNjAzNzAwZWQ5Li45NGNlNDhlY2E3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5k YXQKQEAgLTU1MDIsNiArNTUwMiwxMSBAQAogICBwcm9uYW1lID0+ICdwZ19zdGF0X2dldF9k Yl9jb25mbGljdF9zbmFwc2hvdCcsIHByb3ZvbGF0aWxlID0+ICdzJywKICAgcHJvcGFyYWxs ZWwgPT4gJ3InLCBwcm9yZXR0eXBlID0+ICdpbnQ4JywgcHJvYXJndHlwZXMgPT4gJ29pZCcs CiAgIHByb3NyYyA9PiAncGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc25hcHNob3QnIH0sCit7 IG9pZCA9PiAnNDU0NCcsCisgIGRlc2NyID0+ICdzdGF0aXN0aWNzOiByZWNvdmVyeSBjb25m bGljdHMgaW4gZGF0YWJhc2UgY2F1c2VkIGJ5IGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCcs CisgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xvZ2ljYWxzbG90Jywg cHJvdm9sYXRpbGUgPT4gJ3MnLAorICBwcm9wYXJhbGxlbCA9PiAncicsIHByb3JldHR5cGUg PT4gJ2ludDgnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKKyAgcHJvc3JjID0+ICdwZ19zdGF0 X2dldF9kYl9jb25mbGljdF9sb2dpY2Fsc2xvdCcgfSwKIHsgb2lkID0+ICczMDY4JywKICAg ZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IHJlY292ZXJ5IGNvbmZsaWN0cyBpbiBkYXRhYmFzZSBj YXVzZWQgYnkgc2hhcmVkIGJ1ZmZlciBwaW4nLAogICBwcm9uYW1lID0+ICdwZ19zdGF0X2dl dF9kYl9jb25mbGljdF9idWZmZXJwaW4nLCBwcm92b2xhdGlsZSA9PiAncycsCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9wZ3N0YXQuaCBiL3NyYy9pbmNsdWRlL3Bnc3RhdC5oCmluZGV4 IDIwNjhhNjhhNWYuLmVhZDkzOTBkMDYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Bnc3Rh dC5oCisrKyBiL3NyYy9pbmNsdWRlL3Bnc3RhdC5oCkBAIC03NTUsNiArNzU1LDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgUGdTdGF0X1N0YXREQkVudHJ5CiAJUGdTdGF0X0NvdW50ZXIgbl9jb25m bGljdF90YWJsZXNwYWNlOwogCVBnU3RhdF9Db3VudGVyIG5fY29uZmxpY3RfbG9jazsKIAlQ Z1N0YXRfQ291bnRlciBuX2NvbmZsaWN0X3NuYXBzaG90OworCVBnU3RhdF9Db3VudGVyIG5f Y29uZmxpY3RfbG9naWNhbHNsb3Q7CiAJUGdTdGF0X0NvdW50ZXIgbl9jb25mbGljdF9idWZm ZXJwaW47CiAJUGdTdGF0X0NvdW50ZXIgbl9jb25mbGljdF9zdGFydHVwX2RlYWRsb2NrOwog CVBnU3RhdF9Db3VudGVyIG5fdGVtcF9maWxlczsKQEAgLTEwNDcsNiArMTA0OCw3IEBAIGV4 dGVybiB2b2lkIHBnc3RhdF9yZXBvcnRfY2hlY2tzdW1fZmFpbHVyZSh2b2lkKTsKIGV4dGVy biB2b2lkIHBnc3RhdF9yZXBvcnRfcmVwbHNsb3QoY29uc3QgUGdTdGF0X1N0YXRSZXBsU2xv dEVudHJ5ICpyZXBTbG90U3RhdCk7CiBleHRlcm4gdm9pZCBwZ3N0YXRfcmVwb3J0X3JlcGxz bG90X2NyZWF0ZShjb25zdCBjaGFyICpzbG90bmFtZSk7CiBleHRlcm4gdm9pZCBwZ3N0YXRf cmVwb3J0X3JlcGxzbG90X2Ryb3AoY29uc3QgY2hhciAqc2xvdG5hbWUpOworZXh0ZXJuIHZv aWQgcGdzdGF0X3JlcG9ydF9yZXBsc2xvdF9jb25mbGljdChPaWQgZGJPaWQpOwogCiBleHRl cm4gdm9pZCBwZ3N0YXRfaW5pdGlhbGl6ZSh2b2lkKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xv dC5oCmluZGV4IGUzMmZiODVkYjguLjQ3Nzk2MTdjZDcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL3Nsb3QuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9z bG90LmgKQEAgLTIxNCw2ICsyMTQsNyBAQCBleHRlcm4gWExvZ1JlY1B0ciBSZXBsaWNhdGlv blNsb3RzQ29tcHV0ZUxvZ2ljYWxSZXN0YXJ0TFNOKHZvaWQpOwogZXh0ZXJuIGJvb2wgUmVw bGljYXRpb25TbG90c0NvdW50REJTbG90cyhPaWQgZGJvaWQsIGludCAqbnNsb3RzLCBpbnQg Km5hY3RpdmUpOwogZXh0ZXJuIHZvaWQgUmVwbGljYXRpb25TbG90c0Ryb3BEQlNsb3RzKE9p ZCBkYm9pZCk7CiBleHRlcm4gYm9vbCBJbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNs b3RzKFhMb2dTZWdObyBvbGRlc3RTZWdubyk7CitleHRlcm4gdm9pZCBJbnZhbGlkYXRlQ29u ZmxpY3RpbmdMb2dpY2FsUmVwbGljYXRpb25TbG90cyhPaWQgZGJvaWQsIFRyYW5zYWN0aW9u SWQgeGlkKTsKIGV4dGVybiBSZXBsaWNhdGlvblNsb3QgKlNlYXJjaE5hbWVkUmVwbGljYXRp b25TbG90KGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgbmVlZF9sb2NrKTsKIGV4dGVybiB2b2lk IFJlcGxpY2F0aW9uU2xvdE5hbWVGb3JUYWJsZXN5bmMoT2lkIHN1Ym9pZCwgT2lkIHJlbGlk LCBjaGFyICpzeW5jc2xvdG5hbWUsIGludCBzenNsb3QpOwogZXh0ZXJuIHZvaWQgUmVwbGlj YXRpb25TbG90RHJvcEF0UHViTm9kZShXYWxSZWNlaXZlckNvbm4gKndyY29ubiwgY2hhciAq c2xvdG5hbWUsIGJvb2wgbWlzc2luZ19vayk7CkBAIC0yMjMsNCArMjI0LDYgQEAgZXh0ZXJu IHZvaWQgQ2hlY2tQb2ludFJlcGxpY2F0aW9uU2xvdHModm9pZCk7CiAKIGV4dGVybiB2b2lk IENoZWNrU2xvdFJlcXVpcmVtZW50cyh2b2lkKTsKIAorZXh0ZXJuIHZvaWQgUmVzb2x2ZVJl Y292ZXJ5Q29uZmxpY3RXaXRoTG9naWNhbFNsb3RzKE9pZCBkYm9pZCwgVHJhbnNhY3Rpb25J ZCB4aWQsIGNoYXIgKnJlYXNvbik7CisKICNlbmRpZgkJCQkJCQkvKiBTTE9UX0ggKi8KZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oIGIvc3JjL2luY2x1 ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKaW5kZXggZWVjMTg2YmUyZS4uZjg2YjA3MGRiYyAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKKysrIGIvc3Jj L2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKQEAgLTQxLDYgKzQxLDcgQEAgdHlwZWRl ZiBlbnVtCiAJUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9UQUJMRVNQQUNFLAogCVBST0NT SUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9DSywKIAlQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNU X1NOQVBTSE9ULAorCVBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1QsCiAJ UFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9CVUZGRVJQSU4sCiAJUFJPQ1NJR19SRUNPVkVS WV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NLLAogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9zdG9yYWdlL3N0YW5kYnkuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5oCmlu ZGV4IDM4ZmQ4NWE0MzEuLjNiYTE4ODIyMTYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0 b3JhZ2Uvc3RhbmRieS5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5oCkBA IC0zMCw5ICszMCw5IEBAIGV4dGVybiB2b2lkIEluaXRSZWNvdmVyeVRyYW5zYWN0aW9uRW52 aXJvbm1lbnQodm9pZCk7CiBleHRlcm4gdm9pZCBTaHV0ZG93blJlY292ZXJ5VHJhbnNhY3Rp b25FbnZpcm9ubWVudCh2b2lkKTsKIAogZXh0ZXJuIHZvaWQgUmVzb2x2ZVJlY292ZXJ5Q29u ZmxpY3RXaXRoU25hcHNob3QoVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVkWGlkLAotCQkJ CQkJCQkJCQkJUmVsRmlsZU5vZGUgbm9kZSk7CisJCQkJCQkJCQkJCQlib29sIG9uQ2F0YWxv Z1RhYmxlLCBSZWxGaWxlTm9kZSBub2RlKTsKIGV4dGVybiB2b2lkIFJlc29sdmVSZWNvdmVy eUNvbmZsaWN0V2l0aFNuYXBzaG90RnVsbFhpZChGdWxsVHJhbnNhY3Rpb25JZCBsYXRlc3RS ZW1vdmVkRnVsbFhpZCwKLQkJCQkJCQkJCQkJCQkgICBSZWxGaWxlTm9kZSBub2RlKTsKKwkJ CQkJCQkJCQkJCQkgICBib29sIG9uQ2F0YWxvZ1RhYmxlLCBSZWxGaWxlTm9kZSBub2RlKTsK IGV4dGVybiB2b2lkIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFRhYmxlc3BhY2UoT2lk IHRzaWQpOwogZXh0ZXJuIHZvaWQgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoRGF0YWJh c2UoT2lkIGRiaWQpOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3J1bGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CmluZGV4 IGU1YWIxMTI3NWQuLjY2ZjI4YjY0OWQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcnVsZXMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVs ZXMub3V0CkBAIC0xODcxLDcgKzE4NzEsOCBAQCBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0 c3wgU0VMRUNUIGQub2lkIEFTIGRhdGlkLAogICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0 X2xvY2soZC5vaWQpIEFTIGNvbmZsX2xvY2ssCiAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxp Y3Rfc25hcHNob3QoZC5vaWQpIEFTIGNvbmZsX3NuYXBzaG90LAogICAgIHBnX3N0YXRfZ2V0 X2RiX2NvbmZsaWN0X2J1ZmZlcnBpbihkLm9pZCkgQVMgY29uZmxfYnVmZmVycGluLAotICAg IHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2soZC5vaWQpIEFTIGNv bmZsX2RlYWRsb2NrCisgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc3RhcnR1cF9kZWFk bG9jayhkLm9pZCkgQVMgY29uZmxfZGVhZGxvY2ssCisgICAgcGdfc3RhdF9nZXRfZGJfY29u ZmxpY3RfbG9naWNhbHNsb3QoZC5vaWQpIEFTIGNvbmZsX2xvZ2ljYWxzbG90CiAgICBGUk9N IHBnX2RhdGFiYXNlIGQ7CiBwZ19zdGF0X2dzc2FwaXwgU0VMRUNUIHMucGlkLAogICAgIHMu Z3NzX2F1dGggQVMgZ3NzX2F1dGhlbnRpY2F0ZWQsCi0tIAoyLjE4LjQKCg== --------------D6A801DD7417B05266914188 Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v23-0001-Add-info-in-WAL-records-in-preparation-for-logic.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="v23-0001-Add-info-in-WAL-records-in-preparation-for-logic.pa"; filename*1="tch" RnJvbSAxYmY3NjM4YTJkMTkzNTZmMmEyZTE2NGUwYTU0YWRmZTQwNzY2NjYyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogRnJpLCA2IEF1ZyAyMDIxIDA5OjQwOjM5ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2MjMgMS81XSBBZGQgaW5mbyBpbiBXQUwgcmVjb3JkcyBpbiBwcmVwYXJhdGlvbiBmb3Ig bG9naWNhbAogc2xvdCBjb25mbGljdCBoYW5kbGluZy4KCldoZW4gYSBXQUwgcmVwbGF5IG9u IHN0YW5kYnkgaW5kaWNhdGVzIHRoYXQgYSBjYXRhbG9nIHRhYmxlIHR1cGxlIGlzCnRvIGJl IGRlbGV0ZWQgYnkgYW4geGlkIHRoYXQgaXMgZ3JlYXRlciB0aGFuIGEgbG9naWNhbCBzbG90 J3MKY2F0YWxvZ194bWluLCB0aGVuIHRoYXQgbWVhbnMgdGhlIHNsb3QncyBjYXRhbG9nX3ht aW4gY29uZmxpY3RzIHdpdGgKdGhlIHhpZCwgYW5kIHdlIG5lZWQgdG8gaGFuZGxlIHRoZSBj b25mbGljdC4gIFdoaWxlIHN1YnNlcXVlbnQgY29tbWl0cwp3aWxsIGRvIHRoZSBhY3R1YWwg Y29uZmxpY3QgaGFuZGxpbmcsIHRoaXMgY29tbWl0IGFkZHMgYSBuZXcgZmllbGQKb25DYXRh bG9nVGFibGUgaW4gc3VjaCBXQUwgcmVjb3JkcywgdGhhdCBpcyB0cnVlIGZvciBjYXRhbG9n IHRhYmxlcywKc28gYXMgdG8gYXJyYW5nZSBmb3IgY29uZmxpY3QgaGFuZGxpbmcuCgpBdXRo b3I6IEFuZHJlcyBGcmV1bmQgKGluIGFuIG9sZGVyIHZlcnNpb24pLCBBbWl0IEtoYW5kZWth ciwgQmVydHJhbmQgRHJvdXZvdApSZXZpZXdlZC1CeTogQmVydHJhbmQgRHJvdXZvdCwgQW5k cmVzIEZyZXVuZCwgUm9iZXJ0IEhhYXMsIEZhYnJpemlvIGRlIFJveWVzIE1lbGxvCi0tLQog c3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdC5jICAgICAgICAgIHwgIDIgKy0KIHNyYy9i YWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jICAgICB8ICAyICstCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvZ2lzdC9naXN0dXRpbC5jICAgICAgfCAgNCArKy0tCiBzcmMvYmFja2VuZC9h Y2Nlc3MvZ2lzdC9naXN0eGxvZy5jICAgICAgfCAgNCArKystCiBzcmMvYmFja2VuZC9hY2Nl c3MvaGFzaC9oYXNoaW5zZXJ0LmMgICAgfCAgMSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW0uYyAgICAgICAgfCAgNCArKystCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9w cnVuZWhlYXAuYyAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmls aXR5bWFwLmMgfCAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRwYWdlLmMg ICAgIHwgMTIgKysrKysrKysrLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3Zh Y3V1bS5jICAgfCAgOCArKysrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2Nh Y2hlLmMgICAgIHwgMTUgKysrKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9hY2Nlc3MvZ2lz dF9wcml2YXRlLmggICAgICAgfCAgNiArKystLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9naXN0 eGxvZy5oICAgICAgICAgICB8ICAzICsrLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hhc2hfeGxv Zy5oICAgICAgICAgIHwgIDEgKwogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgg ICAgICAgIHwgIDUgKysrKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9uYnR4bG9nLmggICAgICAg ICAgICB8ICAyICsrCiBzcmMvaW5jbHVkZS9hY2Nlc3Mvc3BneGxvZy5oICAgICAgICAgICAg fCAgMSArCiBzcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaCAgICAgICAgICAgfCAgMSAr CiBzcmMvaW5jbHVkZS91dGlscy9yZWwuaCAgICAgICAgICAgICAgICAgfCAgOSArKysrKysr KysKIDE5IGZpbGVzIGNoYW5nZWQsIDY4IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygt KQogIDE3LjklIHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0LwogIDEzLjElIHNyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwLwogIDE0LjUlIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvCiAgIDgu OSUgc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC8KICAgNy4yJSBzcmMvYmFja2VuZC91dGls cy9jYWNoZS8KICAxOS42JSBzcmMvaW5jbHVkZS9hY2Nlc3MvCiAgMTYuNiUgc3JjL2luY2x1 ZGUvdXRpbHMvCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdC5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdC5jCmluZGV4IDA2ODNmNDJjMjUuLmI2 ZTYzNDBjM2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3QuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0LmMKQEAgLTM0OCw3ICszNDgsNyBA QCBnaXN0cGxhY2V0b3BhZ2UoUmVsYXRpb24gcmVsLCBTaXplIGZyZWVzcGFjZSwgR0lTVFNU QVRFICpnaXN0c3RhdGUsCiAJCWZvciAoOyBwdHI7IHB0ciA9IHB0ci0+bmV4dCkKIAkJewog CQkJLyogQWxsb2NhdGUgbmV3IHBhZ2UgKi8KLQkJCXB0ci0+YnVmZmVyID0gZ2lzdE5ld0J1 ZmZlcihyZWwpOworCQkJcHRyLT5idWZmZXIgPSBnaXN0TmV3QnVmZmVyKGhlYXBSZWwsIHJl bCk7CiAJCQlHSVNUSW5pdEJ1ZmZlcihwdHItPmJ1ZmZlciwgKGlzX2xlYWYpID8gRl9MRUFG IDogMCk7CiAJCQlwdHItPnBhZ2UgPSBCdWZmZXJHZXRQYWdlKHB0ci0+YnVmZmVyKTsKIAkJ CXB0ci0+YmxvY2suYmxrbm8gPSBCdWZmZXJHZXRCbG9ja051bWJlcihwdHItPmJ1ZmZlcik7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jCmluZGV4IGJhYWQyOGMwOWYuLjZk OTQ4NTQ4YzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWls ZC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jCkBAIC0yOTAs NyArMjkwLDcgQEAgZ2lzdGJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJ bmRleEluZm8gKmluZGV4SW5mbykKIAkJUGFnZQkJcGFnZTsKIAogCQkvKiBpbml0aWFsaXpl IHRoZSByb290IHBhZ2UgKi8KLQkJYnVmZmVyID0gZ2lzdE5ld0J1ZmZlcihpbmRleCk7CisJ CWJ1ZmZlciA9IGdpc3ROZXdCdWZmZXIoaGVhcCwgaW5kZXgpOwogCQlBc3NlcnQoQnVmZmVy R2V0QmxvY2tOdW1iZXIoYnVmZmVyKSA9PSBHSVNUX1JPT1RfQkxLTk8pOwogCQlwYWdlID0g QnVmZmVyR2V0UGFnZShidWZmZXIpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvZ2lzdC9naXN0dXRpbC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwu YwppbmRleCA0M2JhMDNiNmViLi4xZDFlMjExMTJjIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvZ2lzdC9naXN0dXRpbC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0 L2dpc3R1dGlsLmMKQEAgLTgyMCw3ICs4MjAsNyBAQCBnaXN0Y2hlY2twYWdlKFJlbGF0aW9u IHJlbCwgQnVmZmVyIGJ1ZikKICAqIENhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgaW5pdGlh bGl6aW5nIHRoZSBwYWdlIGJ5IGNhbGxpbmcgR0lTVEluaXRCdWZmZXIKICAqLwogQnVmZmVy Ci1naXN0TmV3QnVmZmVyKFJlbGF0aW9uIHIpCitnaXN0TmV3QnVmZmVyKFJlbGF0aW9uIGhl YXBSZWwsIFJlbGF0aW9uIHIpCiB7CiAJQnVmZmVyCQlidWZmZXI7CiAJYm9vbAkJbmVlZExv Y2s7CkBAIC04NjQsNyArODY0LDcgQEAgZ2lzdE5ld0J1ZmZlcihSZWxhdGlvbiByKQogCQkJ CSAqIHBhZ2UncyBkZWxldGVYaWQuCiAJCQkJICovCiAJCQkJaWYgKFhMb2dTdGFuZGJ5SW5m b0FjdGl2ZSgpICYmIFJlbGF0aW9uTmVlZHNXQUwocikpCi0JCQkJCWdpc3RYTG9nUGFnZVJl dXNlKHIsIGJsa25vLCBHaXN0UGFnZUdldERlbGV0ZVhpZChwYWdlKSk7CisJCQkJCWdpc3RY TG9nUGFnZVJldXNlKGhlYXBSZWwsIHIsIGJsa25vLCBHaXN0UGFnZUdldERlbGV0ZVhpZChw YWdlKSk7CiAKIAkJCQlyZXR1cm4gYnVmZmVyOwogCQkJfQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0 L2dpc3R4bG9nLmMKaW5kZXggNjQ2NGNiOTI4MS4uNDZhZWU2ZjJhOSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvZ2lzdC9naXN0eGxvZy5jCkBAIC01OTYsNyArNTk2LDggQEAgZ2lzdFhMb2dBc3Np Z25MU04odm9pZCkKICAqIFdyaXRlIFhMT0cgcmVjb3JkIGFib3V0IHJldXNlIG9mIGEgZGVs ZXRlZCBwYWdlLgogICovCiB2b2lkCi1naXN0WExvZ1BhZ2VSZXVzZShSZWxhdGlvbiByZWws IEJsb2NrTnVtYmVyIGJsa25vLCBGdWxsVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVkWGlk KQorZ2lzdFhMb2dQYWdlUmV1c2UoUmVsYXRpb24gaGVhcFJlbCwgUmVsYXRpb24gcmVsLAor CQkJCSAgQmxvY2tOdW1iZXIgYmxrbm8sIEZ1bGxUcmFuc2FjdGlvbklkIGxhdGVzdFJlbW92 ZWRYaWQpCiB7CiAJZ2lzdHhsb2dQYWdlUmV1c2UgeGxyZWNfcmV1c2U7CiAKQEAgLTYwNyw2 ICs2MDgsNyBAQCBnaXN0WExvZ1BhZ2VSZXVzZShSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVy IGJsa25vLCBGdWxsVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdgogCSAqLwogCiAJLyogWExP RyBzdHVmZiAqLworCXhscmVjX3JldXNlLm9uQ2F0YWxvZ1RhYmxlID0gUmVsYXRpb25Jc0Fj Y2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhoZWFwUmVsKTsKIAl4bHJlY19yZXVzZS5ub2Rl ID0gcmVsLT5yZF9ub2RlOwogCXhscmVjX3JldXNlLmJsb2NrID0gYmxrbm87CiAJeGxyZWNf cmV1c2UubGF0ZXN0UmVtb3ZlZEZ1bGxYaWQgPSBsYXRlc3RSZW1vdmVkWGlkOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGluc2VydC5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hhc2gvaGFzaGluc2VydC5jCmluZGV4IGQyNTRhMDBiNmEuLmNlMjIzYjJj MTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hpbnNlcnQuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoaW5zZXJ0LmMKQEAgLTM5OCw2ICsz OTgsNyBAQCBfaGFzaF92YWN1dW1fb25lX3BhZ2UoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBo cmVsLCBCdWZmZXIgbWV0YWJ1ZiwgQnVmZmVyIGJ1ZikKIAkJCXhsX2hhc2hfdmFjdXVtX29u ZV9wYWdlIHhscmVjOwogCQkJWExvZ1JlY1B0cglyZWNwdHI7CiAKKwkJCXhscmVjLm9uQ2F0 YWxvZ1RhYmxlID0gUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhocmVs KTsKIAkJCXhscmVjLmxhdGVzdFJlbW92ZWRYaWQgPSBsYXRlc3RSZW1vdmVkWGlkOwogCQkJ eGxyZWMubnR1cGxlcyA9IG5kZWxldGFibGU7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt LmMKaW5kZXggMjQzMzk5OGYzOS4uNDAxOWEyMTIyZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtLmMKQEAgLTc5NDEsNiArNzk0MSw3IEBAIGxvZ19oZWFwX2ZyZWV6ZShSZWxhdGlv biByZWxuLCBCdWZmZXIgYnVmZmVyLCBUcmFuc2FjdGlvbklkIGN1dG9mZl94aWQsCiAJLyog bm9yIHdoZW4gdGhlcmUgYXJlIG5vIHR1cGxlcyB0byBmcmVlemUgKi8KIAlBc3NlcnQobnR1 cGxlcyA+IDApOwogCisJeGxyZWMub25DYXRhbG9nVGFibGUgPSBSZWxhdGlvbklzQWNjZXNz aWJsZUluTG9naWNhbERlY29kaW5nKHJlbG4pOwogCXhscmVjLmN1dG9mZl94aWQgPSBjdXRv ZmZfeGlkOwogCXhscmVjLm50dXBsZXMgPSBudHVwbGVzOwogCkBAIC03OTcxLDcgKzc5NzIs NyBAQCBsb2dfaGVhcF9mcmVlemUoUmVsYXRpb24gcmVsbiwgQnVmZmVyIGJ1ZmZlciwgVHJh bnNhY3Rpb25JZCBjdXRvZmZfeGlkLAogICogaGVhcF9idWZmZXIsIGlmIG5lY2Vzc2FyeS4K ICAqLwogWExvZ1JlY1B0cgotbG9nX2hlYXBfdmlzaWJsZShSZWxGaWxlTm9kZSBybm9kZSwg QnVmZmVyIGhlYXBfYnVmZmVyLCBCdWZmZXIgdm1fYnVmZmVyLAorbG9nX2hlYXBfdmlzaWJs ZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBoZWFwX2J1ZmZlciwgQnVmZmVyIHZtX2J1ZmZlciwK IAkJCQkgVHJhbnNhY3Rpb25JZCBjdXRvZmZfeGlkLCB1aW50OCB2bWZsYWdzKQogewogCXhs X2hlYXBfdmlzaWJsZSB4bHJlYzsKQEAgLTc5ODEsNiArNzk4Miw3IEBAIGxvZ19oZWFwX3Zp c2libGUoUmVsRmlsZU5vZGUgcm5vZGUsIEJ1ZmZlciBoZWFwX2J1ZmZlciwgQnVmZmVyIHZt X2J1ZmZlciwKIAlBc3NlcnQoQnVmZmVySXNWYWxpZChoZWFwX2J1ZmZlcikpOwogCUFzc2Vy dChCdWZmZXJJc1ZhbGlkKHZtX2J1ZmZlcikpOwogCisJeGxyZWMub25DYXRhbG9nVGFibGUg PSBSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKHJlbCk7CiAJeGxyZWMu Y3V0b2ZmX3hpZCA9IGN1dG9mZl94aWQ7CiAJeGxyZWMuZmxhZ3MgPSB2bWZsYWdzOwogCVhM b2dCZWdpbkluc2VydCgpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv cHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRl eCAxNWNhMWIzMDRhLi4wNTkwYjcwNTNjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVu ZWhlYXAuYwpAQCAtMzIzLDYgKzMyMyw3IEBAIGhlYXBfcGFnZV9wcnVuZShSZWxhdGlvbiBy ZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCXhscmVjLmxhdGVzdFJlbW92ZWRYaWQgPSBw cnN0YXRlLmxhdGVzdFJlbW92ZWRYaWQ7CiAJCQl4bHJlYy5ucmVkaXJlY3RlZCA9IHByc3Rh dGUubnJlZGlyZWN0ZWQ7CiAJCQl4bHJlYy5uZGVhZCA9IHByc3RhdGUubmRlYWQ7CisJCQl4 bHJlYy5vbkNhdGFsb2dUYWJsZSA9IFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVj b2RpbmcocmVsYXRpb24pOwogCiAJCQlYTG9nQmVnaW5JbnNlcnQoKTsKIAkJCVhMb2dSZWdp c3RlckRhdGEoKGNoYXIgKikgJnhscmVjLCBTaXplT2ZIZWFwUHJ1bmUpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCmluZGV4IDExNGZiYmRkMzAuLjI1OTc2 MzZiZjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHlt YXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKQEAg LTI4Miw3ICsyODIsNyBAQCB2aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsIEJsb2Nr TnVtYmVyIGhlYXBCbGssIEJ1ZmZlciBoZWFwQnVmLAogCQkJaWYgKFhMb2dSZWNQdHJJc0lu dmFsaWQocmVjcHRyKSkKIAkJCXsKIAkJCQlBc3NlcnQoIUluUmVjb3ZlcnkpOwotCQkJCXJl Y3B0ciA9IGxvZ19oZWFwX3Zpc2libGUocmVsLT5yZF9ub2RlLCBoZWFwQnVmLCB2bUJ1ZiwK KwkJCQlyZWNwdHIgPSBsb2dfaGVhcF92aXNpYmxlKHJlbCwgaGVhcEJ1Ziwgdm1CdWYsCiAJ CQkJCQkJCQkJICBjdXRvZmZfeGlkLCBmbGFncyk7CiAKIAkJCQkvKgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRwYWdlLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvbmJ0cmVlL25idHBhZ2UuYwppbmRleCBlYmVjOGZhNWI4Li4yZDI3YTNmOTc0IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHBhZ2UuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHBhZ2UuYwpAQCAtMzYsNiArMzYsNyBAQAogI2lu Y2x1ZGUgInV0aWxzL21lbWRlYnVnLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIK ICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hl LmgiCiAKIHN0YXRpYyBCVE1ldGFQYWdlRGF0YSAqX2J0X2dldG1ldGEoUmVsYXRpb24gcmVs LCBCdWZmZXIgbWV0YWJ1Zik7CiBzdGF0aWMgdm9pZCBfYnRfbG9nX3JldXNlX3BhZ2UoUmVs YXRpb24gcmVsLCBCbG9ja051bWJlciBibGtubywKQEAgLTQzLDcgKzQ0LDggQEAgc3RhdGlj IHZvaWQgX2J0X2xvZ19yZXVzZV9wYWdlKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxr bm8sCiBzdGF0aWMgdm9pZCBfYnRfZGVsaXRlbXNfZGVsZXRlKFJlbGF0aW9uIHJlbCwgQnVm ZmVyIGJ1ZiwKIAkJCQkJCQkJVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVkWGlkLAogCQkJ CQkJCQlPZmZzZXROdW1iZXIgKmRlbGV0YWJsZSwgaW50IG5kZWxldGFibGUsCi0JCQkJCQkJ CUJUVmFjdXVtUG9zdGluZyAqdXBkYXRhYmxlLCBpbnQgbnVwZGF0YWJsZSk7CisJCQkJCQkJ CUJUVmFjdXVtUG9zdGluZyAqdXBkYXRhYmxlLCBpbnQgbnVwZGF0YWJsZSwKKwkJCQkJCQkJ UmVsYXRpb24gaGVhcFJlbCk7CiBzdGF0aWMgY2hhciAqX2J0X2RlbGl0ZW1zX3VwZGF0ZShC VFZhY3V1bVBvc3RpbmcgKnVwZGF0YWJsZSwgaW50IG51cGRhdGFibGUsCiAJCQkJCQkJCSBP ZmZzZXROdW1iZXIgKnVwZGF0ZWRvZmZzZXRzLAogCQkJCQkJCQkgU2l6ZSAqdXBkYXRlZGJ1 ZmxlbiwgYm9vbCBuZWVkc3dhbCk7CkBAIC04MzYsNiArODM4LDcgQEAgX2J0X2xvZ19yZXVz ZV9wYWdlKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEZ1bGxUcmFuc2FjdGlv bklkIHNhZmV4aWQpCiAJICovCiAKIAkvKiBYTE9HIHN0dWZmICovCisJeGxyZWNfcmV1c2Uu b25DYXRhbG9nVGFibGUgPSBnZXRfcmVsX2xvZ2ljYWxfY2F0YWxvZyhyZWwtPnJkX2luZGV4 LT5pbmRyZWxpZCk7CiAJeGxyZWNfcmV1c2Uubm9kZSA9IHJlbC0+cmRfbm9kZTsKIAl4bHJl Y19yZXVzZS5ibG9jayA9IGJsa25vOwogCXhscmVjX3JldXNlLmxhdGVzdFJlbW92ZWRGdWxs WGlkID0gc2FmZXhpZDsKQEAgLTEyOTYsNyArMTI5OSw4IEBAIF9idF9kZWxpdGVtc192YWN1 dW0oUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogc3RhdGljIHZvaWQKIF9idF9kZWxpdGVt c19kZWxldGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLCBUcmFuc2FjdGlvbklkIGxhdGVz dFJlbW92ZWRYaWQsCiAJCQkJCU9mZnNldE51bWJlciAqZGVsZXRhYmxlLCBpbnQgbmRlbGV0 YWJsZSwKLQkJCQkJQlRWYWN1dW1Qb3N0aW5nICp1cGRhdGFibGUsIGludCBudXBkYXRhYmxl KQorCQkJCQlCVFZhY3V1bVBvc3RpbmcgKnVwZGF0YWJsZSwgaW50IG51cGRhdGFibGUsCisJ CQkJCVJlbGF0aW9uIGhlYXBSZWwpCiB7CiAJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2Uo YnVmKTsKIAlCVFBhZ2VPcGFxdWUgb3BhcXVlOwpAQCAtMTM1OCw2ICsxMzYyLDggQEAgX2J0 X2RlbGl0ZW1zX2RlbGV0ZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsIFRyYW5zYWN0aW9u SWQgbGF0ZXN0UmVtb3ZlZFhpZCwKIAkJWExvZ1JlY1B0cglyZWNwdHI7CiAJCXhsX2J0cmVl X2RlbGV0ZSB4bHJlY19kZWxldGU7CiAKKwkJeGxyZWNfZGVsZXRlLm9uQ2F0YWxvZ1RhYmxl ID0KKwkJCVJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcoaGVhcFJlbCk7 CiAJCXhscmVjX2RlbGV0ZS5sYXRlc3RSZW1vdmVkWGlkID0gbGF0ZXN0UmVtb3ZlZFhpZDsK IAkJeGxyZWNfZGVsZXRlLm5kZWxldGVkID0gbmRlbGV0YWJsZTsKIAkJeGxyZWNfZGVsZXRl Lm51cGRhdGVkID0gbnVwZGF0YWJsZTsKQEAgLTE2ODUsNyArMTY5MSw3IEBAIF9idF9kZWxp dGVtc19kZWxldGVfY2hlY2soUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLCBSZWxhdGlvbiBo ZWFwUmVsLAogCiAJLyogUGh5c2ljYWxseSBkZWxldGUgdHVwbGVzIChvciBUSURzKSB1c2lu ZyBkZWxldGFibGUgKG9yIHVwZGF0YWJsZSkgKi8KIAlfYnRfZGVsaXRlbXNfZGVsZXRlKHJl bCwgYnVmLCBsYXRlc3RSZW1vdmVkWGlkLCBkZWxldGFibGUsIG5kZWxldGFibGUsCi0JCQkJ CQl1cGRhdGFibGUsIG51cGRhdGFibGUpOworCQkJCQkJdXBkYXRhYmxlLCBudXBkYXRhYmxl LCBoZWFwUmVsKTsKIAogCS8qIGJlIHRpZHkgKi8KIAlmb3IgKGludCBpID0gMDsgaSA8IG51 cGRhdGFibGU7IGkrKykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qv c3BndmFjdXVtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCmlu ZGV4IDc2ZmIwMzc0YzQuLjMxODY4ODVkMTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lz dC9zcGd2YWN1dW0uYwpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvaW5k ZXhmc20uaCIKICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9z bmFwbWdyLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAKIAogLyogRW50cnkg aW4gcGVuZGluZy1saXN0IG9mIFRJRHMgd2UgbmVlZCB0byByZXZpc2l0ICovCkBAIC01MDMs NiArNTA0LDEzIEBAIHZhY3V1bVJlZGlyZWN0QW5kUGxhY2Vob2xkZXIoUmVsYXRpb24gaW5k ZXgsIEJ1ZmZlciBidWZmZXIpCiAJc3BneGxvZ1ZhY3V1bVJlZGlyZWN0IHhscmVjOwogCUds b2JhbFZpc1N0YXRlICp2aXN0ZXN0OwogCisJLyoKKwkgKiBUaGVyZSBpcyBubyBjaGFuY2Ug b2YgZW5kbGVzcyByZWN1cnNpb24gZXZlbiB3aGVuIHdlIGFyZSBkb2luZyBjYXRhbG9nCisJ ICogYWNjZXNlcyBoZXJlOyBiZWNhdXNlLCBzcGdpc3QgaXMgbmV2ZXIgdXNlZCBmb3IgY2F0 YWxvZ3MuIENoZWNrCisJICogY29tbWVudHMgaW4gUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxv Z2ljYWxEZWNvZGluZygpLgorCSAqLworCXhscmVjLm9uQ2F0YWxvZ1RhYmxlID0gZ2V0X3Jl bF9sb2dpY2FsX2NhdGFsb2coaW5kZXgtPnJkX2luZGV4LT5pbmRyZWxpZCk7CisKIAl4bHJl Yy5uVG9QbGFjZWhvbGRlciA9IDA7CiAJeGxyZWMubmV3ZXN0UmVkaXJlY3RYaWQgPSBJbnZh bGlkVHJhbnNhY3Rpb25JZDsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvbHN5c2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYwpp bmRleCA0ZWJhYTU1MmEyLi4yZmRhMjM4ODcwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9jYWNoZS9sc3lzY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9s c3lzY2FjaGUuYwpAQCAtMTgsNiArMTgsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9oYXNoLmgi CiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgogI2luY2x1ZGUgImFjY2Vzcy9u YnRyZWUuaCIKKyNpbmNsdWRlICJhY2Nlc3MvdGFibGUuaCIKICNpbmNsdWRlICJib290c3Ry YXAvYm9vdHN0cmFwLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKICNpbmNs dWRlICJjYXRhbG9nL3BnX2FtLmgiCkBAIC0yMDYyLDYgKzIwNjMsMjAgQEAgZ2V0X3JlbF9w ZXJzaXN0ZW5jZShPaWQgcmVsaWQpCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorYm9vbAorZ2V0 X3JlbF9sb2dpY2FsX2NhdGFsb2coT2lkIHJlbGlkKQoreworCWJvb2wJcmVzOworCVJlbGF0 aW9uIHJlbDsKKworCS8qIGFzc3VtZSBwcmV2aW91c2x5IGxvY2tlZCAqLworCXJlbCA9IHRh YmxlX29wZW4ocmVsaWQsIE5vTG9jayk7CisJcmVzID0gUmVsYXRpb25Jc0FjY2Vzc2libGVJ bkxvZ2ljYWxEZWNvZGluZyhyZWwpOworCXRhYmxlX2Nsb3NlKHJlbCwgTm9Mb2NrKTsKKwor CXJldHVybiByZXM7Cit9CisKIAogLyoJCQkJLS0tLS0tLS0tLSBUUkFOU0ZPUk0gQ0FDSEUg LS0tLS0tLS0tLQkJCQkJCSAqLwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv Z2lzdF9wcml2YXRlLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdF9wcml2YXRlLmgKaW5k ZXggNTUzZDM2NGUyZC4uYTBmNDAxNTU1NiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNj ZXNzL2dpc3RfcHJpdmF0ZS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0X3ByaXZh dGUuaApAQCAtNDQwLDggKzQ0MCw4IEBAIGV4dGVybiBYTG9nUmVjUHRyIGdpc3RYTG9nUGFn ZURlbGV0ZShCdWZmZXIgYnVmZmVyLAogCQkJCQkJCQkJIEZ1bGxUcmFuc2FjdGlvbklkIHhp ZCwgQnVmZmVyIHBhcmVudEJ1ZmZlciwKIAkJCQkJCQkJCSBPZmZzZXROdW1iZXIgZG93bmxp bmtPZmZzZXQpOwogCi1leHRlcm4gdm9pZCBnaXN0WExvZ1BhZ2VSZXVzZShSZWxhdGlvbiBy ZWwsIEJsb2NrTnVtYmVyIGJsa25vLAotCQkJCQkJCSAgRnVsbFRyYW5zYWN0aW9uSWQgbGF0 ZXN0UmVtb3ZlZFhpZCk7CitleHRlcm4gdm9pZCBnaXN0WExvZ1BhZ2VSZXVzZShSZWxhdGlv biBoZWFwUmVsLCBSZWxhdGlvbiByZWwsCisJCQkJICBCbG9ja051bWJlciBibGtubywgRnVs bFRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZCk7CiAKIGV4dGVybiBYTG9nUmVjUHRy IGdpc3RYTG9nVXBkYXRlKEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkJCSBPZmZzZXROdW1iZXIg KnRvZGVsZXRlLCBpbnQgbnRvZGVsZXRlLApAQCAtNDg1LDcgKzQ4NSw3IEBAIGV4dGVybiBi b29sIGdpc3Rwcm9wZXJ0eShPaWQgaW5kZXhfb2lkLCBpbnQgYXR0bm8sCiBleHRlcm4gYm9v bCBnaXN0Zml0cGFnZShJbmRleFR1cGxlICppdHZlYywgaW50IGxlbik7CiBleHRlcm4gYm9v bCBnaXN0bm9zcGFjZShQYWdlIHBhZ2UsIEluZGV4VHVwbGUgKml0dmVjLCBpbnQgbGVuLCBP ZmZzZXROdW1iZXIgdG9kZWxldGUsIFNpemUgZnJlZXNwYWNlKTsKIGV4dGVybiB2b2lkIGdp c3RjaGVja3BhZ2UoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmKTsKLWV4dGVybiBCdWZmZXIg Z2lzdE5ld0J1ZmZlcihSZWxhdGlvbiByKTsKK2V4dGVybiBCdWZmZXIgZ2lzdE5ld0J1ZmZl cihSZWxhdGlvbiBoZWFwUmVsLCBSZWxhdGlvbiByKTsKIGV4dGVybiBib29sIGdpc3RQYWdl UmVjeWNsYWJsZShQYWdlIHBhZ2UpOwogZXh0ZXJuIHZvaWQgZ2lzdGZpbGxidWZmZXIoUGFn ZSBwYWdlLCBJbmRleFR1cGxlICppdHVwLCBpbnQgbGVuLAogCQkJCQkJICAgT2Zmc2V0TnVt YmVyIG9mZik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdHhsb2cuaCBi L3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0eGxvZy5oCmluZGV4IGZkNTE0NGYyNTguLjczOTk5 ZGRjNzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0eGxvZy5oCisrKyBi L3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0eGxvZy5oCkBAIC00OSw5ICs0OSw5IEBAIHR5cGVk ZWYgc3RydWN0IGdpc3R4bG9nUGFnZVVwZGF0ZQogICovCiB0eXBlZGVmIHN0cnVjdCBnaXN0 eGxvZ0RlbGV0ZQogeworCWJvb2wJCW9uQ2F0YWxvZ1RhYmxlOwogCVRyYW5zYWN0aW9uSWQg bGF0ZXN0UmVtb3ZlZFhpZDsKIAl1aW50MTYJCW50b2RlbGV0ZTsJCS8qIG51bWJlciBvZiBk ZWxldGVkIG9mZnNldHMgKi8KLQogCS8qCiAJICogSW4gcGF5bG9hZCBvZiBibGsgMCA6IHRv ZGVsZXRlIE9mZnNldE51bWJlcnMKIAkgKi8KQEAgLTk3LDYgKzk3LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgZ2lzdHhsb2dQYWdlRGVsZXRlCiAgKi8KIHR5cGVkZWYgc3RydWN0IGdpc3R4bG9n UGFnZVJldXNlCiB7CisJYm9vbAkJb25DYXRhbG9nVGFibGU7CiAJUmVsRmlsZU5vZGUgbm9k ZTsKIAlCbG9ja051bWJlciBibG9jazsKIAlGdWxsVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1v dmVkRnVsbFhpZDsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oYXNoX3hsb2cu aCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oYXNoX3hsb2cuaAppbmRleCA0MzUzYTMyZGJiLi45 NGMzMjkyYzFlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGFzaF94bG9nLmgK KysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hhc2hfeGxvZy5oCkBAIC0yNTAsNiArMjUwLDcg QEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGFzaF9pbml0X2JpdG1hcF9wYWdlCiAgKi8KIHR5cGVk ZWYgc3RydWN0IHhsX2hhc2hfdmFjdXVtX29uZV9wYWdlCiB7CisJYm9vbAkJb25DYXRhbG9n VGFibGU7CiAJVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVkWGlkOwogCWludAkJCW50dXBs ZXM7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oIGIv c3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKaW5kZXggMjdkYjQ4MTg0ZS4uZWJh NDhiMGFlZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgK KysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKQEAgLTI0Miw2ICsyNDIs NyBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX3VwZGF0ZQogICovCiB0eXBlZGVmIHN0cnVj dCB4bF9oZWFwX3BydW5lCiB7CisJYm9vbCAgICAgIG9uQ2F0YWxvZ1RhYmxlOwogCVRyYW5z YWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZDsKIAl1aW50MTYJCW5yZWRpcmVjdGVkOwogCXVp bnQxNgkJbmRlYWQ7CkBAIC0zMzgsNiArMzM5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVh cF9mcmVlemVfdHVwbGUKICAqLwogdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9mcmVlemVfcGFn ZQogeworCWJvb2wJCW9uQ2F0YWxvZ1RhYmxlOwogCVRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hp ZDsKIAl1aW50MTYJCW50dXBsZXM7CiB9IHhsX2hlYXBfZnJlZXplX3BhZ2U7CkBAIC0zNTIs NiArMzU0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9mcmVlemVfcGFnZQogICovCiB0 eXBlZGVmIHN0cnVjdCB4bF9oZWFwX3Zpc2libGUKIHsKKwlib29sCQlvbkNhdGFsb2dUYWJs ZTsKIAlUcmFuc2FjdGlvbklkIGN1dG9mZl94aWQ7CiAJdWludDgJCWZsYWdzOwogfSB4bF9o ZWFwX3Zpc2libGU7CkBAIC00MTMsNyArNDE2LDcgQEAgZXh0ZXJuIGJvb2wgaGVhcF9wcmVw YXJlX2ZyZWV6ZV90dXBsZShIZWFwVHVwbGVIZWFkZXIgdHVwbGUsCiAJCQkJCQkJCQkgIGJv b2wgKnRvdGFsbHlfZnJvemVuKTsKIGV4dGVybiB2b2lkIGhlYXBfZXhlY3V0ZV9mcmVlemVf dHVwbGUoSGVhcFR1cGxlSGVhZGVyIHR1cGxlLAogCQkJCQkJCQkJICB4bF9oZWFwX2ZyZWV6 ZV90dXBsZSAqeGxyZWNfdHApOwotZXh0ZXJuIFhMb2dSZWNQdHIgbG9nX2hlYXBfdmlzaWJs ZShSZWxGaWxlTm9kZSBybm9kZSwgQnVmZmVyIGhlYXBfYnVmZmVyLAorZXh0ZXJuIFhMb2dS ZWNQdHIgbG9nX2hlYXBfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBoZWFwX2J1ZmZl ciwKIAkJCQkJCQkJICAgQnVmZmVyIHZtX2J1ZmZlciwgVHJhbnNhY3Rpb25JZCBjdXRvZmZf eGlkLCB1aW50OCBmbGFncyk7CiAKICNlbmRpZgkJCQkJCQkvKiBIRUFQQU1fWExPR19IICov CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0eGxvZy5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL25idHhsb2cuaAppbmRleCAwZjc3MzE4NTZiLi5iMTVhYTQ3ZjFiIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0eGxvZy5oCisrKyBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9uYnR4bG9nLmgKQEAgLTE4NSw2ICsxODUsNyBAQCB0eXBlZGVmIHN0cnVjdCB4 bF9idHJlZV9kZWR1cAogICovCiB0eXBlZGVmIHN0cnVjdCB4bF9idHJlZV9yZXVzZV9wYWdl CiB7CisJYm9vbCAgICAgICAgb25DYXRhbG9nVGFibGU7CiAJUmVsRmlsZU5vZGUgbm9kZTsK IAlCbG9ja051bWJlciBibG9jazsKIAlGdWxsVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVk RnVsbFhpZDsKQEAgLTIzMiw2ICsyMzMsNyBAQCB0eXBlZGVmIHN0cnVjdCB4bF9idHJlZV92 YWN1dW0KIAogdHlwZWRlZiBzdHJ1Y3QgeGxfYnRyZWVfZGVsZXRlCiB7CisJYm9vbAkJb25D YXRhbG9nVGFibGU7CiAJVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVkWGlkOwogCXVpbnQx NgkJbmRlbGV0ZWQ7CiAJdWludDE2CQludXBkYXRlZDsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9zcGd4bG9nLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3BneGxvZy5oCmlu ZGV4IDY5NDA1YjU3NTAuLjA2YjkxZjRkMDQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9zcGd4bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3NwZ3hsb2cuaApAQCAt MjM3LDYgKzIzNyw3IEBAIHR5cGVkZWYgc3RydWN0IHNwZ3hsb2dWYWN1dW1Sb290CiAKIHR5 cGVkZWYgc3RydWN0IHNwZ3hsb2dWYWN1dW1SZWRpcmVjdAogeworCWJvb2wJCW9uQ2F0YWxv Z1RhYmxlOwogCXVpbnQxNgkJblRvUGxhY2Vob2xkZXI7IC8qIG51bWJlciBvZiByZWRpcmVj dHMgdG8gbWFrZSBwbGFjZWhvbGRlcnMgKi8KIAlPZmZzZXROdW1iZXIgZmlyc3RQbGFjZWhv bGRlcjsJLyogZmlyc3QgcGxhY2Vob2xkZXIgdHVwbGUgdG8gcmVtb3ZlICovCiAJVHJhbnNh Y3Rpb25JZCBuZXdlc3RSZWRpcmVjdFhpZDsJLyogbmV3ZXN0IFhJRCBvZiByZW1vdmVkIHJl ZGlyZWN0cyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgg Yi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAppbmRleCA3Nzg3MWFhZWZjLi5lMmE1 ZWZlZDMwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAorKysg Yi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaApAQCAtMTM5LDYgKzEzOSw3IEBAIGV4 dGVybiBjaGFyIGdldF9yZWxfcmVsa2luZChPaWQgcmVsaWQpOwogZXh0ZXJuIGJvb2wgZ2V0 X3JlbF9yZWxpc3BhcnRpdGlvbihPaWQgcmVsaWQpOwogZXh0ZXJuIE9pZAlnZXRfcmVsX3Rh Ymxlc3BhY2UoT2lkIHJlbGlkKTsKIGV4dGVybiBjaGFyIGdldF9yZWxfcGVyc2lzdGVuY2Uo T2lkIHJlbGlkKTsKK2V4dGVybiBib29sIGdldF9yZWxfbG9naWNhbF9jYXRhbG9nKE9pZCBy ZWxpZCk7CiBleHRlcm4gT2lkCWdldF90cmFuc2Zvcm1fZnJvbXNxbChPaWQgdHlwaWQsIE9p ZCBsYW5naWQsIExpc3QgKnRyZnR5cGVzKTsKIGV4dGVybiBPaWQJZ2V0X3RyYW5zZm9ybV90 b3NxbChPaWQgdHlwaWQsIE9pZCBsYW5naWQsIExpc3QgKnRyZnR5cGVzKTsKIGV4dGVybiBi b29sIGdldF90eXBpc2RlZmluZWQoT2lkIHR5cGlkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3V0aWxzL3JlbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKaW5kZXggYjRmYWEx YzEyMy4uNjQ4YWVhY2Q3OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgK KysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNs dWRlICJzdG9yYWdlL3NtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9yZWxjYWNoZS5oIgogI2lu Y2x1ZGUgInV0aWxzL3JlbHRyaWdnZXIuaCIKKyNpbmNsdWRlICJjYXRhbG9nL2NhdGFsb2cu aCIKIAogCiAvKgpAQCAtMzY1LDYgKzM2Niw5IEBAIHR5cGVkZWYgc3RydWN0IFN0ZFJkT3B0 aW9ucwogICogUmVsYXRpb25Jc1VzZWRBc0NhdGFsb2dUYWJsZQogICoJCVJldHVybnMgd2hl dGhlciB0aGUgcmVsYXRpb24gc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYSBjYXRhbG9nIHRhYmxl CiAgKgkJZnJvbSB0aGUgcG92IG9mIGxvZ2ljYWwgZGVjb2RpbmcuICBOb3RlIG11bHRpcGxl IGV2YWwgb2YgYXJndW1lbnQhCisgKgkJVGhpcyBkZWZpbml0aW9uIHNob3VsZCBub3QgaW52 b2tlIGFueXRoaW5nIHRoYXQgcGVyZm9ybXMgY2F0YWxvZworICoJCWFjY2Vzczsgb3RoZXJ3 aXNlIGl0IG1heSBjYXVzZSBpbmZpbml0ZSByZWN1cnNpb24uIENoZWNrIHRoZSBjb21tZW50 cworICoJCWluIFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcoKSBmb3Ig ZGV0YWlscy4KICAqLwogI2RlZmluZSBSZWxhdGlvbklzVXNlZEFzQ2F0YWxvZ1RhYmxlKHJl bGF0aW9uKQlcCiAJKChyZWxhdGlvbiktPnJkX29wdGlvbnMgJiYgXApAQCAtNjUzLDYgKzY1 NywxMSBAQCBSZWxhdGlvbkdldFNtZ3IoUmVsYXRpb24gcmVsKQogICogUmVsYXRpb25Jc0Fj Y2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZwogICoJCVRydWUgaWYgd2UgbmVlZCB0byBsb2cg ZW5vdWdoIGluZm9ybWF0aW9uIHRvIGhhdmUgYWNjZXNzIHZpYQogICoJCWRlY29kaW5nIHNu YXBzaG90LgorICoJCVRoaXMgZGVmaW5pdGlvbiBzaG91bGQgbm90IGludm9rZSBhbnl0aGlu ZyB0aGF0IHBlcmZvcm1zIGNhdGFsb2cKKyAqCQlhY2Nlc3MuIE90aGVyd2lzZSwgZS5nLiBs b2dnaW5nIGEgV0FMIGVudHJ5IGZvciBjYXRhbG9nIHJlbGF0aW9uIG1heQorICoJCWludm9r ZSB0aGlzIGZ1bmN0aW9uLCB3aGljaCB3aWxsIGluIHR1cm4gZG8gY2F0YWxvZyBhY2Nlc3Ms IHdoaWNoIG1heQorICoJCWluIHR1cm4gY2F1c2UgYW5vdGhlciBzaW1pbGFyIFdBTCBlbnRy eSB0byBiZSBsb2dnZWQsIGxlYWRpbmcgdG8KKyAqCQlpbmZpbml0ZSByZWN1cnNpb24uCiAg Ki8KICNkZWZpbmUgUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhyZWxh dGlvbikgXAogCShYTG9nTG9naWNhbEluZm9BY3RpdmUoKSAmJiBcCi0tIAoyLjE4LjQKCg== --------------D6A801DD7417B05266914188--