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 1lTkrA-0006Nc-AR for pgsql-hackers@arkaria.postgresql.org; Tue, 06 Apr 2021 12:30:56 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1lTkr9-00018y-8h for pgsql-hackers@arkaria.postgresql.org; Tue, 06 Apr 2021 12:30:55 +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 1lTkr8-00018F-E8 for pgsql-hackers@lists.postgresql.org; Tue, 06 Apr 2021 12:30:55 +0000 Received: from smtp-fw-6001.amazon.com ([52.95.48.154]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lTkr2-0006x8-OG for pgsql-hackers@postgresql.org; Tue, 06 Apr 2021 12:30:53 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1617712249; x=1649248249; h=subject:from:to:cc:references:message-id:date: mime-version:in-reply-to; bh=rpGqzSMMfb2FtuSIOWkIRt2MUJrHwKTwWj71Q+eoXb0=; b=qFLNuqo1Xmgt68P1otbzf08sGjxM4jSAc0eGukqlDrfHU9pmPnAJozjd 15WgPCT2fq440r65I5OC/a0wfjC6KmeHCHtFgO3KgtEdjWiqvTmxxcgGM Fncm++NZfpMOUtmnkCSjGuoMa0VO+ljbrRUTu0GJJRTTtaJ1mNJO8p638 Q=; X-Amazon-filename: v15-0005-Doc-changes-describing-details-about-logical-dec.patch, v15-0004-New-TAP-test-for-logical-decoding-on-standby.patch, v15-0003-Handle-logical-slot-conflicts-on-standby.patch, v15-0002-Add-info-in-WAL-records-in-preparation-for-logic.patch, v15-0001-Allow-logical-decoding-on-standby.patch X-IronPort-AV: E=Sophos;i="5.81,309,1610409600"; d="scan'208,217,223";a="105422910" Received: from iad12-co-svc-p1-lb1-vlan2.amazon.com (HELO email-inbound-relay-2b-55156cd4.us-west-2.amazon.com) ([10.43.8.2]) by smtp-border-fw-out-6001.iad6.amazon.com with ESMTP; 06 Apr 2021 12:30:40 +0000 Received: from EX13D03EUC003.ant.amazon.com (pdx1-ws-svc-p6-lb9-vlan2.pdx.amazon.com [10.236.137.194]) by email-inbound-relay-2b-55156cd4.us-west-2.amazon.com (Postfix) with ESMTPS id AA3C2A1A77; Tue, 6 Apr 2021 12:30:38 +0000 (UTC) Received: from 38f9d36c4abb.ant.amazon.com (10.43.161.86) by EX13D03EUC003.ant.amazon.com (10.43.164.192) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 6 Apr 2021 12:30:34 +0000 Subject: Re: Minimal logical decoding on standbys From: "Drouvot, Bertrand" To: CC: Alvaro Herrera , Andres Freund , tushar , "[pgdg] Robert Haas" , Amit Khandekar , Rahila Syed , pgsql-hackers References: <20200318184249.GA29007@alvherre.pgsql> <1ab609c9-2c16-26ff-5fbe-c3195e541f9c@amazon.com> <6e1dda09-0c4f-b196-a589-fb741f11686f@amazon.com> <96644a03-0b4d-e0a6-2124-0bc37e5b54fb@amazon.com> <842d60ce-99e6-f35e-8c92-0cd49381326e@amazon.com> Message-ID: <6b9168e5-6a29-7fda-8903-cd50563fa84c@amazon.com> Date: Tue, 6 Apr 2021 14:30:29 +0200 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Thunderbird/78.9.0 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------F5E6E709001A4E566C6E418E" Content-Language: en-US X-Originating-IP: [10.43.161.86] X-ClientProxiedBy: EX13D41UWC004.ant.amazon.com (10.43.162.31) 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 --------------F5E6E709001A4E566C6E418E Content-Type: multipart/alternative; boundary="------------8E66750EAE75D96B91FAA4BA" --------------8E66750EAE75D96B91FAA4BA Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 8bit Hi, On 3/25/21 8:51 AM, Drouvot, Bertrand wrote: > > > On 3/25/21 12:01 AM, Fabrízio de Royes Mello wrote: >> >> >> On Wed, Mar 24, 2021 at 3:57 AM Drouvot, Bertrand >> > wrote: >> > >> > Thanks for pointing out, fixed in v14 attached. >> > >> >> Thanks... now everything is working as expected... changed the status >> to Ready for Commiter: >> https://commitfest.postgresql.org/32/2968/ >> >> > Thanks! > > I think this would be a great feature, so I am looking forward to > help/work on any comments/suggestions that they may have. > Just needed a minor rebase due to 2 new conflicts with: * b4af70cb21: in vacuum_log_cleanup_info() (see new v15-0002-Add-info-in-WAL-records-in-preparation-for-logic.patch) * 43620e3286: oid conflict with pg_log_backend_memory_contexts() and pg_stat_get_db_conflict_snapshot() (see new v15-0003-Handle-logical-slot-conflicts-on-standby.patch) New v15 attached is passing "make check" and the 2 new associated TAP tests. Bertrand --------------8E66750EAE75D96B91FAA4BA Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: 8bit

Hi,

On 3/25/21 8:51 AM, Drouvot, Bertrand wrote:


On 3/25/21 12:01 AM, Fabrízio de Royes Mello wrote:


On Wed, Mar 24, 2021 at 3:57 AM Drouvot, Bertrand <bdrouvot@amazon.com> wrote:
>
> Thanks for pointing out, fixed in v14 attached.
>

Thanks... now everything is working as expected... changed the status to Ready for Commiter:

Thanks!

I think this would be a great feature, so I am looking forward to help/work on any comments/suggestions that they may have.

Just needed a minor rebase due to 2 new conflicts with:

  • b4af70cb21: in vacuum_log_cleanup_info() (see new v15-0002-Add-info-in-WAL-records-in-preparation-for-logic.patch)
  • 43620e3286: oid conflict with pg_log_backend_memory_contexts() and pg_stat_get_db_conflict_snapshot() (see new v15-0003-Handle-logical-slot-conflicts-on-standby.patch)

New v15 attached is passing "make check" and the 2 new associated TAP tests.

Bertrand

--------------8E66750EAE75D96B91FAA4BA-- --------------F5E6E709001A4E566C6E418E Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v15-0005-Doc-changes-describing-details-about-logical-dec.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="v15-0005-Doc-changes-describing-details-about-logical-dec.pa"; filename*1="tch" RnJvbSBiZmQzOWIzZTZkYjRjNWExNDBmMTE2ZDJkMWY1ZmQ5OWE0YjRkZTYwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA2IEFwciAyMDIxIDEyOjA1OjQzICswMDAwClN1YmplY3Q6IFtQQVRD SCB2MTUgNS81XSBEb2MgY2hhbmdlcyBkZXNjcmliaW5nIGRldGFpbHMgYWJvdXQgbG9naWNh bAogZGVjb2RpbmcuCgotLS0KIGRvYy9zcmMvc2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbCB8 IDE4ICsrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDE4IGluc2VydGlvbnMo KykKIDEwMC4wJSBkb2Mvc3JjL3NnbWwvCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xv Z2ljYWxkZWNvZGluZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWxkZWNvZGluZy5zZ21s CmluZGV4IDVkMDQ5Y2RjNjguLjBmNTA1Zjc2MTUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9sb2dpY2FsZGVjb2Rpbmcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbGRlY29k aW5nLnNnbWwKQEAgLTI5Nyw2ICsyOTcsMjQgQEAgcG9zdGdyZXM9IyBzZWxlY3QgKiBmcm9t IHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90JywgTlVMTCwg TlUKICAgICAgbWF5IGNvbnN1bWUgY2hhbmdlcyBmcm9tIGEgc2xvdCBhdCBhbnkgZ2l2ZW4g dGltZS4KICAgICA8L3BhcmE+CiAKKyAgICA8cGFyYT4KKyAgICAgQSBsb2dpY2FsIHJlcGxp Y2F0aW9uIHNsb3QgY2FuIGFsc28gYmUgY3JlYXRlZCBvbiBhIGhvdCBzdGFuZGJ5LiBUbyBw cmV2ZW50CisgICAgIDxjb21tYW5kPlZBQ1VVTTwvY29tbWFuZD4gZnJvbSByZW1vdmluZyBy ZXF1aXJlZCByb3dzIGZyb20gdGhlIHN5c3RlbQorICAgICBjYXRhbG9ncywgPHZhcm5hbWU+ aG90X3N0YW5kYnlfZmVlZGJhY2s8L3Zhcm5hbWU+IHNob3VsZCBiZSBzZXQgb24gdGhlCisg ICAgIHN0YW5kYnkuIEluIHNwaXRlIG9mIHRoYXQsIGlmIGFueSByZXF1aXJlZCByb3dzIGdl dCByZW1vdmVkLCB0aGUgc2xvdCBnZXRzCisgICAgIGRyb3BwZWQuIEV4aXN0aW5nIGxvZ2lj YWwgc2xvdHMgb24gc3RhbmRieSBhbHNvIGdldCBkcm9wcGVkIGlmIHdhbF9sZXZlbAorICAg ICBvbiBwcmltYXJ5IGlzIHJlZHVjZWQgdG8gbGVzcyB0aGFuICdsb2dpY2FsJy4KKyAgICA8 L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgRm9yIGEgbG9naWNhbCBzbG90IHRvIGJlIGNy ZWF0ZWQsIGl0IGJ1aWxkcyBhIGhpc3RvcmljIHNuYXBzaG90LCBmb3Igd2hpY2gKKyAgICAg aW5mb3JtYXRpb24gb2YgYWxsIHRoZSBjdXJyZW50bHkgcnVubmluZyB0cmFuc2FjdGlvbnMg aXMgZXNzZW50aWFsLiBPbgorICAgICBwcmltYXJ5LCB0aGlzIGluZm9ybWF0aW9uIGlzIGF2 YWlsYWJsZSwgYnV0IG9uIHN0YW5kYnksIHRoaXMgaW5mb3JtYXRpb24KKyAgICAgaGFzIHRv IGJlIG9idGFpbmVkIGZyb20gcHJpbWFyeS4gU28sIHNsb3QgY3JlYXRpb24gbWF5IHdhaXQg Zm9yIHNvbWUKKyAgICAgYWN0aXZpdHkgdG8gaGFwcGVuIG9uIHRoZSBwcmltYXJ5LiBJZiB0 aGUgcHJpbWFyeSBpcyBpZGxlLCBjcmVhdGluZyBhCisgICAgIGxvZ2ljYWwgc2xvdCBvbiBz dGFuZGJ5IG1heSB0YWtlIGEgbm90aWNlYWJsZSB0aW1lLgorICAgIDwvcGFyYT4KKwogICAg IDxjYXV0aW9uPgogICAgICA8cGFyYT4KICAgICAgIFJlcGxpY2F0aW9uIHNsb3RzIHBlcnNp c3QgYWNyb3NzIGNyYXNoZXMgYW5kIGtub3cgbm90aGluZyBhYm91dCB0aGUgc3RhdGUKLS0g CjIuMTguNAoK --------------F5E6E709001A4E566C6E418E Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v15-0004-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v15-0004-New-TAP-test-for-logical-decoding-on-standby.patch" RnJvbSA3NTE4ZjM0ZGZlYmU3ZGUzN2Q5YzgxZGJmNDFlMWI3ZjNjNmYyOWZjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA2IEFwciAyMDIxIDEyOjA0OjU1ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2MTUgNC81XSBOZXcgVEFQIHRlc3QgZm9yIGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRi eS4KClRoaXMgdGVzdCB3YXMgb3JpZ2luYWxseSB3cml0dGVuIGJ5IENyYWlnIFJpbmdlciwg dGhlbgpleHRlbmRlZC9tb2RpZmllZCBieSBtZSwgdG8gdGVzdCB2YXJpb3VzIHNsb3QgY29u ZmxpY3Qgc2NlbmFyaW9zLgoKQXV0aG9yczogQ3JhaWcgUmluZ2VyLCBBbWl0IEtoYW5kZWth ci4KLS0tCiBzcmMvdGVzdC9wZXJsL1Bvc3RncmVzTm9kZS5wbSAgICAgICAgICAgICAgICAg fCAgMzcgKysrCiAuLi4vdC8wMjRfc3RhbmRieV9sb2dpY2FsX2RlY29kaW5nX3htaW5zLnBs ICAgfCAyNzIgKysrKysrKysrKysrKysrKysrCiAuLi4vMDI1X3N0YW5kYnlfbG9naWNhbF9k ZWNvZGluZ19jb25mbGljdHMucGwgfCAyMjggKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNo YW5nZWQsIDUzNyBpbnNlcnRpb25zKCspCiAgIDUuOCUgc3JjL3Rlc3QvcGVybC8KICA5NC4x JSBzcmMvdGVzdC9yZWNvdmVyeS90LwoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3BlcmwvUG9z dGdyZXNOb2RlLnBtIGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3Jlc05vZGUucG0KaW5kZXggZWMy MDJmMWI2ZS4uZGNlNDU3MWYyYyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcGVybC9Qb3N0Z3Jl c05vZGUucG0KKysrIGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3Jlc05vZGUucG0KQEAgLTI0NTUs NiArMjQ1NSw0MyBAQCBzdWIgcGdfcmVjdmxvZ2ljYWxfdXB0bwogCiA9cG9kCiAKKz1pdGVt ICRub2RlLT5jcmVhdGVfbG9naWNhbF9zbG90X29uX3N0YW5kYnkoc2VsZiwgbWFzdGVyLCBz bG90X25hbWUsIGRibmFtZSkKKworQ3JlYXRlIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBv biBnaXZlbiBzdGFuZGJ5CisKKz1jdXQKKworc3ViIGNyZWF0ZV9sb2dpY2FsX3Nsb3Rfb25f c3RhbmRieQoreworCW15ICgkc2VsZiwgJG1hc3RlciwgJHNsb3RfbmFtZSwgJGRibmFtZSkg PSBAXzsKKwlteSAoJHN0ZG91dCwgJHN0ZGVycik7CisKKwlteSAkaGFuZGxlOworCisJJGhh bmRsZSA9IElQQzo6UnVuOjpzdGFydChbJ3BnX3JlY3Zsb2dpY2FsJywgJy1kJywgJHNlbGYt PmNvbm5zdHIoJGRibmFtZSksICctUCcsICd0ZXN0X2RlY29kaW5nJywgJy1TJywgJHNsb3Rf bmFtZSwgJy0tY3JlYXRlLXNsb3QnXSwgJz4nLCBcJHN0ZG91dCwgJzI+JywgXCRzdGRlcnIp OworCisJIyBPbmNlIHNsb3QgcmVzdGFydF9sc24gaXMgY3JlYXRlZCwgdGhlIHN0YW5kYnkg bG9va3MgZm9yIHhsX3J1bm5pbmdfeGFjdHMKKwkjIFdBTCByZWNvcmQgZnJvbSB0aGUgcmVz dGFydF9sc24gb253YXJkcy4gU28gZmlyc3RseSwgd2FpdCB1bnRpbCB0aGUgc2xvdAorCSMg cmVzdGFydF9sc24gaXMgZXZhbHVhdGVkLgorCisJJHNlbGYtPnBvbGxfcXVlcnlfdW50aWwo CisJCSdwb3N0Z3JlcycsIHFxWworCQlTRUxFQ1QgcmVzdGFydF9sc24gSVMgTk9UIE5VTEwK KwkJRlJPTSBwZ19jYXRhbG9nLnBnX3JlcGxpY2F0aW9uX3Nsb3RzIFdIRVJFIHNsb3RfbmFt ZSA9ICckc2xvdF9uYW1lJworCV0pIG9yIGRpZSAidGltZWQgb3V0IHdhaXRpbmcgZm9yIGxv Z2ljYWwgc2xvdCB0byBjYWxjdWxhdGUgaXRzIHJlc3RhcnRfbHNuIjsKKworCSMgTm93IGFy cmFuZ2UgZm9yIHRoZSB4bF9ydW5uaW5nX3hhY3RzIHJlY29yZCBmb3Igd2hpY2ggcGdfcmVj dmxvZ2ljYWwKKwkjIGlzIHdhaXRpbmcuCisJJG1hc3Rlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICdDSEVDS1BPSU5UJyk7CisKKwkkaGFuZGxlLT5maW5pc2goKTsKKworCWlzKCRzZWxm LT5zbG90KCRzbG90X25hbWUpLT57J3Nsb3RfdHlwZSd9LCAnbG9naWNhbCcsICRzbG90X25h bWUgLiAnIG9uIHN0YW5kYnkgY3JlYXRlZCcpCisJCW9yIGRpZSAiY291bGQgbm90IGNyZWF0 ZSBzbG90IiAuICRzbG90X25hbWU7Cit9CisKKz1wb2QKKwogPWJhY2sKIAogPWN1dApkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMjRfc3RhbmRieV9sb2dpY2FsX2RlY29k aW5nX3htaW5zLnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMjRfc3RhbmRieV9sb2dpY2Fs X2RlY29kaW5nX3htaW5zLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAuLmQ2NTRkNzk1MjYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90 LzAyNF9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmdfeG1pbnMucGwKQEAgLTAsMCArMSwyNzIg QEAKKyMgbG9naWNhbCBkZWNvZGluZyBvbiBhIHN0YW5kYnkgOiBlbnN1cmUgeG1pbnMgYXJl IGFwcHJvcHJpYXRlbHkgdXBkYXRlZAorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwor Cit1c2UgUG9zdGdyZXNOb2RlOwordXNlIFRlc3RMaWI7Cit1c2UgVGVzdDo6TW9yZSB0ZXN0 cyA9PiAyMzsKK3VzZSBSZWN1cnNpdmVDb3B5OwordXNlIEZpbGU6OkNvcHk7Cit1c2UgVGlt ZTo6SGlSZXMgcXcodXNsZWVwKTsKKworbXkgKCRzdGRpbiwgJHN0ZG91dCwgJHN0ZGVyciwg JHJldCwgJGhhbmRsZSwgJHNsb3QpOworCitteSAkbm9kZV9tYXN0ZXIgPSBnZXRfbmV3X25v ZGUoJ21hc3RlcicpOworbXkgJG5vZGVfc3RhbmRieSA9IGdldF9uZXdfbm9kZSgnc3RhbmRi eScpOworCisjIE5hbWUgZm9yIHRoZSBwaHlzaWNhbCBzbG90IG9uIG1hc3RlcgorbXkgJG1h c3Rlcl9zbG90bmFtZSA9ICdtYXN0ZXJfcGh5c2ljYWwnOworIyBOYW1lIGZvciB0aGUgbG9n aWNhbCBzbG90IG9uIHN0YW5kYnkKK215ICRzdGFuZGJ5X3Nsb3RuYW1lID0gJ3N0YW5kYnlf bG9naWNhbCc7CisKKyMgRmV0Y2ggeG1pbiBjb2x1bW5zIGZyb20gc2xvdCdzIHBnX3JlcGxp Y2F0aW9uX3Nsb3RzIHJvdywgYWZ0ZXIgd2FpdGluZyBmb3IKKyMgZ2l2ZW4gYm9vbGVhbiBj b25kaXRpb24gdG8gYmUgdHJ1ZSB0byBlbnN1cmUgd2UndmUgcmVhY2hlZCBhIHF1aWVzY2Vu dCBzdGF0ZQorc3ViIHdhaXRfZm9yX3htaW5zCit7CisJbXkgKCRub2RlLCAkc2xvdG5hbWUs ICRjaGVja19leHByKSA9IEBfOworCisJJG5vZGUtPnBvbGxfcXVlcnlfdW50aWwoCisJCSdw b3N0Z3JlcycsIHFxWworCQlTRUxFQ1QgJGNoZWNrX2V4cHIKKwkJRlJPTSBwZ19jYXRhbG9n LnBnX3JlcGxpY2F0aW9uX3Nsb3RzCisJCVdIRVJFIHNsb3RfbmFtZSA9ICckc2xvdG5hbWUn OworCV0pIG9yIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIHNsb3QgeG1pbnMgdG8gYWR2 YW5jZSI7Cit9CisKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIEluaXRpYWxpemUg bWFzdGVyIG5vZGUKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCiskbm9kZV9tYXN0ZXIt PmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAxLCBoYXNfYXJjaGl2aW5nID0+IDEpOworJG5v ZGVfbWFzdGVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgcXsKK3dhbF9sZXZl bCA9ICdsb2dpY2FsJworbWF4X3JlcGxpY2F0aW9uX3Nsb3RzID0gNAorbWF4X3dhbF9zZW5k ZXJzID0gNAorbG9nX21pbl9tZXNzYWdlcyA9ICdkZWJ1ZzInCitsb2dfZXJyb3JfdmVyYm9z aXR5ID0gdmVyYm9zZQorIyB2ZXJ5IHByb21wdGx5IHRlcm1pbmF0ZSBjb25mbGljdGluZyBi YWNrZW5kcworbWF4X3N0YW5kYnlfc3RyZWFtaW5nX2RlbGF5ID0gJzJzJworfSk7Ciskbm9k ZV9tYXN0ZXItPmR1bXBfaW5mbzsKKyRub2RlX21hc3Rlci0+c3RhcnQ7CisKKyRub2RlX21h c3Rlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxW1NFTEVDVCAqIEZST00gcGdfY3JlYXRl X3BoeXNpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoJyRtYXN0ZXJfc2xvdG5hbWUnKTtdKTsKK215 ICRiYWNrdXBfbmFtZSA9ICdiMSc7Ciskbm9kZV9tYXN0ZXItPmJhY2t1cCgkYmFja3VwX25h bWUpOworCisjIEFmdGVyIHNsb3QgY3JlYXRpb24sIHhtaW5zIG11c3QgYmUgbnVsbAorJHNs b3QgPSAkbm9kZV9tYXN0ZXItPnNsb3QoJG1hc3Rlcl9zbG90bmFtZSk7Citpcygkc2xvdC0+ eyd4bWluJ30sICcnLCAieG1pbiBudWxsIik7Citpcygkc2xvdC0+eydjYXRhbG9nX3htaW4n fSwgJycsICJjYXRhbG9nX3htaW4gbnVsbCIpOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworIyBJbml0aWFsaXplIHNsYXZlIG5vZGUKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisK KyRub2RlX3N0YW5kYnktPmluaXRfZnJvbV9iYWNrdXAoCisJJG5vZGVfbWFzdGVyLCAkYmFj a3VwX25hbWUsCisJaGFzX3N0cmVhbWluZyA9PiAxLAorCWhhc19yZXN0b3JpbmcgPT4gMSk7 Ciskbm9kZV9zdGFuZGJ5LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwlxcVtw cmltYXJ5X3Nsb3RfbmFtZSA9ICckbWFzdGVyX3Nsb3RuYW1lJ10pOworJG5vZGVfc3RhbmRi eS0+c3RhcnQ7Ciskbm9kZV9tYXN0ZXItPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRi eSwgJ3JlcGxheScsICRub2RlX21hc3Rlci0+bHNuKCdmbHVzaCcpKTsKKworCisjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyB4bWluL2NhdGFsb2dfeG1pbiB2ZXJpZmlj YXRpb24gYmVmb3JlIGFuZCBhZnRlciBzdGFuZGJ5LWxvZ2ljYWwtc2xvdCBjcmVhdGlvbi4K KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgV2l0aCBob3Rfc3RhbmRi eV9mZWVkYmFjayBvZmYsIHhtaW4gYW5kIGNhdGFsb2dfeG1pbiBtdXN0IHN0aWxsIGJlIG51 bGwKKyRzbG90ID0gJG5vZGVfbWFzdGVyLT5zbG90KCRtYXN0ZXJfc2xvdG5hbWUpOworaXMo JHNsb3QtPnsneG1pbid9LCAnJywgInhtaW4gbnVsbCBhZnRlciBzdGFuZGJ5IGpvaW4iKTsK K2lzKCRzbG90LT57J2NhdGFsb2dfeG1pbid9LCAnJywgImNhdGFsb2dfeG1pbiBudWxsIGFm dGVyIHN0YW5kYnkgam9pbiIpOworCiskbm9kZV9zdGFuZGJ5LT5hcHBlbmRfY29uZigncG9z dGdyZXNxbC5jb25mJyxxWworaG90X3N0YW5kYnlfZmVlZGJhY2sgPSBvbgorIyBzZW5kIHN0 YXR1cyByYXBpZGx5IHNvIHdlIHByb21wdGx5IGFkdmFuY2UgeG1pbiBvbiBtYXN0ZXIKK3dh bF9yZWNlaXZlcl9zdGF0dXNfaW50ZXJ2YWwgPSAxCitdKTsKKyRub2RlX3N0YW5kYnktPnJl c3RhcnQ7CisKKyMgZW5zdXJlIHdhbHJlY2VpdmVyIGZlZWRiYWNrIHNlbnQgYnkgd2FpdGlu ZyBmb3IgZXhwZWN0ZWQgeG1pbiBhbmQKKyMgY2F0YWxvZ194bWluIG9uIG1hc3Rlci4gV2l0 aCBob3Rfc3RhbmRieV9mZWVkYmFjayBvbiwgeG1pbiBzaG91bGQgYWR2YW5jZSwKKyMgYnV0 IGNhdGFsb2dfeG1pbiBzaG91bGQgc3RpbGwgcmVtYWluIE5VTEwgc2luY2UgdGhlcmUgaXMg bm8gbG9naWNhbCBzbG90Lgord2FpdF9mb3JfeG1pbnMoJG5vZGVfbWFzdGVyLCAkbWFzdGVy X3Nsb3RuYW1lLCAieG1pbiBJUyBOT1QgTlVMTCBBTkQgY2F0YWxvZ194bWluIElTIE5VTEwi KTsKKworIyBDcmVhdGUgbmV3IHNsb3RzIG9uIHRoZSBzdGFuZGJ5LCBpZ25vcmluZyB0aGUg b25lcyBvbiB0aGUgbWFzdGVyIGNvbXBsZXRlbHkuCisjCisjIFRoaXMgbXVzdCBzdWNjZWVk IHNpbmNlIHdlIGtub3cgd2UgaGF2ZSBhIGNhdGFsb2dfeG1pbiByZXNlcnZhdGlvbi4gV2UK KyMgbWlnaHQndmUgYWxyZWFkeSBzZW50IGhvdCBzdGFuZGJ5IGZlZWRiYWNrIHRvIGFkdmFu Y2Ugb3VyIHBoeXNpY2FsIHNsb3QncworIyBjYXRhbG9nX3htaW4gYnV0IG5vdCByZWNlaXZl ZCB0aGUgY29ycmVzcG9uZGluZyB4bG9nIGZvciB0aGUgY2F0YWxvZyB4bWluCisjIGFkdmFu Y2UsIGluIHdoaWNoIGNhc2Ugd2UnbGwgY3JlYXRlIGEgc2xvdCB0aGF0IGlzbid0IHVzYWJs ZS4gVGhlIGNhbGxpbmcKKyMgYXBwbGljYXRpb24gY2FuIHByZXZlbnQgdGhpcyBieSBjcmVh dGluZyBhIHRlbXBvcmFyeSBzbG90IG9uIHRoZSBtYXN0ZXIgdG8KKyMgbG9jayBpbiBpdHMg Y2F0YWxvZ194bWluLiBGb3IgYSB0cnVseSByYWNlLWZyZWUgc29sdXRpb24gd2UnZCBuZWVk CisjIG1hc3Rlci10by1zdGFuZGJ5IGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIHJlcGxpZXMuCisj CisjIEluIHRoaXMgY2FzZSBpdCB3b24ndCByYWNlIGJlY2F1c2UgdGhlcmUncyBubyBjb25j dXJyZW50IGFjdGl2aXR5IG9uIHRoZQorIyBtYXN0ZXIuCisjCiskbm9kZV9zdGFuZGJ5LT5j cmVhdGVfbG9naWNhbF9zbG90X29uX3N0YW5kYnkoJG5vZGVfbWFzdGVyLCAkc3RhbmRieV9z bG90bmFtZSwgJ3Bvc3RncmVzJyk7CisKKyRub2RlX21hc3Rlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5JywgJG5vZGVfbWFzdGVyLT5sc24oJ2ZsdXNoJykp OworCisjIE5vdyB0aGF0IHNsb3QgaXMgY3JlYXRlZCBvbiBzdGFuZGJ5LCB4bWluIGFuZCBj YXRhbG9nX3htaW4gc2hvdWxkIGJlIG5vbiBOVUxMCisjIG9uIGJvdGggbWFzdGVyIGFuZCBz dGFuZGJ5LiBCdXQgb24gbWFzdGVyLCB0aGUgeG1pbnMgd2lsbCBiZSB1cGRhdGVkIG9ubHkK KyMgYWZ0ZXIgaG90IHN0YW5kYnkgZmVlZGJhY2sgaXMgcmVjZWl2ZWQuCit3YWl0X2Zvcl94 bWlucygkbm9kZV9tYXN0ZXIsICRtYXN0ZXJfc2xvdG5hbWUsICJ4bWluIElTIE5PVCBOVUxM IEFORCBjYXRhbG9nX3htaW4gSVMgTk9UIE5VTEwiKTsKKworJHNsb3QgPSAkbm9kZV9zdGFu ZGJ5LT5zbG90KCRzdGFuZGJ5X3Nsb3RuYW1lKTsKK2lzKCRzbG90LT57J3htaW4nfSwgJycs ICJsb2dpY2FsIHhtaW4gbnVsbCIpOworaXNudCgkc2xvdC0+eydjYXRhbG9nX3htaW4nfSwg JycsICJsb2dpY2FsIGNhdGFsb2dfeG1pbiBub3QgbnVsbCIpOworCisKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFN0YW5kYnkgbG9naWNhbCBzbG90IHNob3VsZCBi ZSBhYmxlIHRvIGZldGNoIHRoZSB0YWJsZSBjaGFuZ2VzIGV2ZW4gd2hlbiB0aGUKKyMgdGFi bGUgaXMgZHJvcHBlZC4KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyRu b2RlX21hc3Rlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdDUkVBVEUgVEFCTEUgdGVzdF90 YWJsZShpZCBzZXJpYWwgcHJpbWFyeSBrZXksIGJsYWggdGV4dCknKTsKKyRub2RlX21hc3Rl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFbSU5TRVJUIElOVE8gdGVzdF90YWJsZShibGFo KSB2YWx1ZXMgKCdpdHdvcmtzJyldKTsKKyRub2RlX21hc3Rlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICdEUk9QIFRBQkxFIHRlc3RfdGFibGUnKTsKKyRub2RlX21hc3Rlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICdWQUNVVU0nKTsKKworJG5vZGVfbWFzdGVyLT53YWl0X2Zvcl9j YXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9tYXN0ZXItPmxzbignZmx1 c2gnKSk7CisKKyMgU2hvdWxkIHNob3cgdGhlIGluc2VydHMgZXZlbiB3aGVuIHRoZSB0YWJs ZSBpcyBkcm9wcGVkIG9uIG1hc3RlcgorKCRyZXQsICRzdGRvdXQsICRzdGRlcnIpID0gJG5v ZGVfc3RhbmRieS0+cHNxbCgncG9zdGdyZXMnLCBxcVtTRUxFQ1QgZGF0YSBGUk9NIHBnX2xv Z2ljYWxfc2xvdF9nZXRfY2hhbmdlcygnJHN0YW5kYnlfc2xvdG5hbWUnLCBOVUxMLCBOVUxM LCAnaW5jbHVkZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcxJywgJ2luY2x1 ZGUtdGltZXN0YW1wJywgJzAnKV0pOworaXMoJHN0ZGVyciwgJycsICdzdGRlcnIgaXMgZW1w dHknKTsKK2lzKCRyZXQsIDAsICdyZXBsYXkgZnJvbSBzbG90IHN1Y2NlZWRlZCcpCisJb3Ig ZGllICdjYW5ub3QgY29udGludWUgaWYgc2xvdCByZXBsYXkgZmFpbHMnOworaXMoJHN0ZG91 dCwgcXtCRUdJTgordGFibGUgcHVibGljLnRlc3RfdGFibGU6IElOU0VSVDogaWRbaW50ZWdl cl06MSBibGFoW3RleHRdOidpdHdvcmtzJworQ09NTUlUfSwgJ3JlcGxheSByZXN1bHRzIG1h dGNoJyk7CisKKyRub2RlX21hc3Rlci0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5 LCAncmVwbGF5JywgJG5vZGVfbWFzdGVyLT5sc24oJ2ZsdXNoJykpOworCiskc2xvdCA9ICRu b2RlX21hc3Rlci0+c2xvdCgkbWFzdGVyX3Nsb3RuYW1lKTsKK2lzbnQoJHNsb3QtPnsneG1p bid9LCAnJywgInBoeXNpY2FsIHhtaW4gbm90IG51bGwiKTsKK215ICRzYXZlZF9waHlzaWNh bF9jYXRhbG9nX3htaW4gPSAkc2xvdC0+eydjYXRhbG9nX3htaW4nfTsKK2lzbnQoJHNhdmVk X3BoeXNpY2FsX2NhdGFsb2dfeG1pbiwgJycsICJwaHlzaWNhbCBjYXRhbG9nX3htaW4gbm90 IG51bGwiKTsKKworJHNsb3QgPSAkbm9kZV9zdGFuZGJ5LT5zbG90KCRzdGFuZGJ5X3Nsb3Ru YW1lKTsKK2lzKCRzbG90LT57J3htaW4nfSwgJycsICJsb2dpY2FsIHhtaW4gbnVsbCIpOwor bXkgJHNhdmVkX2xvZ2ljYWxfY2F0YWxvZ194bWluID0gJHNsb3QtPnsnY2F0YWxvZ194bWlu J307Citpc250KCRzYXZlZF9sb2dpY2FsX2NhdGFsb2dfeG1pbiwgJycsICJsb2dpY2FsIGNh dGFsb2dfeG1pbiBub3QgbnVsbCIpOworCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisjIENhdGFsb2cgeG1pbnMgc2hvdWxkIGFkdmFuY2UgYWZ0ZXIgc3RhbmRieSBs b2dpY2FsIHNsb3QgZmV0Y2hlcyB0aGUgY2hhbmdlcy4KKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisKKyMgSWRlYWxseSB3ZSdkIGp1c3QgaG9sZCBjYXRhbG9nX3htaW4s IGJ1dCBzaW5jZSBoc19mZWVkYmFjayBjdXJyZW50bHkgdXNlcyB0aGUgc2xvdCwKKyMgd2Ug aG9sZCBkb3duIHhtaW4uCiskbm9kZV9tYXN0ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBx cVtDUkVBVEUgVEFCTEUgY2F0YWxvZ19pbmNyZWFzZV8xKCk7XSk7Ciskbm9kZV9tYXN0ZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnQ1JFQVRFIFRBQkxFIHRlc3RfdGFibGUoaWQgc2Vy aWFsIHByaW1hcnkga2V5LCBibGFoIHRleHQpJyk7Citmb3IgbXkgJGkgKDAgLi4gMjAwMCkK K3sKKyAgICAkbm9kZV9tYXN0ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcVtJTlNFUlQg SU5UTyB0ZXN0X3RhYmxlKGJsYWgpIFZBTFVFUyAoJ2VudHJ5ICRpJyldKTsKK30KKyRub2Rl X21hc3Rlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxW0NSRUFURSBUQUJMRSBjYXRhbG9n X2luY3JlYXNlXzIoKTtdKTsKKyRub2RlX21hc3Rlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICdWQUNVVU0nKTsKKworJG5vZGVfbWFzdGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0 YW5kYnksICdyZXBsYXknLCAkbm9kZV9tYXN0ZXItPmxzbignZmx1c2gnKSk7CisKK2NtcF9v aygkbm9kZV9zdGFuZGJ5LT5zbG90KCRzdGFuZGJ5X3Nsb3RuYW1lKS0+eydjYXRhbG9nX3ht aW4nfSwgIj09IiwKKwkgICAkc2F2ZWRfbG9naWNhbF9jYXRhbG9nX3htaW4sCisJICAgImxv Z2ljYWwgc2xvdCBjYXRhbG9nX3htaW4gaGFzbid0IGFkdmFuY2VkIGJlZm9yZSBnZXRfY2hh bmdlcyIpOworCisoJHJldCwgJHN0ZG91dCwgJHN0ZGVycikgPSAkbm9kZV9zdGFuZGJ5LT5w c3FsKCdwb3N0Z3JlcycsCisJcXFbU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3Rf Z2V0X2NoYW5nZXMoJyRzdGFuZGJ5X3Nsb3RuYW1lJywgTlVMTCwgTlVMTCwgJ2luY2x1ZGUt eGlkcycsICcwJywgJ3NraXAtZW1wdHkteGFjdHMnLCAnMScsICdpbmNsdWRlLXRpbWVzdGFt cCcsICcwJyldKTsKK2lzKCRyZXQsIDAsICdyZXBsYXkgb2YgYmlnIHNlcmllcyBzdWNjZWVk ZWQnKTsKK2lzbnQoJHN0ZG91dCwgJycsICdyZXBsYXllZCBzb21lIHJvd3MnKTsKKworJG5v ZGVfbWFzdGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAk bm9kZV9tYXN0ZXItPmxzbignZmx1c2gnKSk7CisKKyMgbG9naWNhbCBzbG90IGNhdGFsb2df eG1pbiBvbiBzbGF2ZSBzaG91bGQgYWR2YW5jZSBhZnRlciBwZ19sb2dpY2FsX3Nsb3RfZ2V0 X2NoYW5nZXMKK3dhaXRfZm9yX3htaW5zKCRub2RlX3N0YW5kYnksICRzdGFuZGJ5X3Nsb3Ru YW1lLAorCQkJICAgImNhdGFsb2dfeG1pbjo6dmFyY2hhcjo6aW50ID4gJHtzYXZlZF9sb2dp Y2FsX2NhdGFsb2dfeG1pbn0iKTsKKyRzbG90ID0gJG5vZGVfc3RhbmRieS0+c2xvdCgkc3Rh bmRieV9zbG90bmFtZSk7CitteSAkbmV3X2xvZ2ljYWxfY2F0YWxvZ194bWluID0gJHNsb3Qt PnsnY2F0YWxvZ194bWluJ307Citpcygkc2xvdC0+eyd4bWluJ30sICcnLCAibG9naWNhbCB4 bWluIG51bGwiKTsKKworIyBob3Qgc3RhbmRieSBmZWVkYmFjayBzaG91bGQgYWR2YW5jZSBt YXN0ZXIncyBwaHlzIGNhdGFsb2dfeG1pbiBub3cgdGhhdCB0aGUKKyMgc3RhbmRieSdzIHNs b3QgZG9lc24ndCBob2xkIGl0IGRvd24gYXMgZmFyLgorIyBCdXQgbWFzdGVyJ3MgcGh5cyBj YXRhbG9nX3htaW4gc2hvdWxkIG5vdCBnbyBwYXN0IHRoZSBzbGF2ZSdzIGxvZ2ljYWwgc2xv dCdzCisjIGNhdGFsb2dfeG1pbiwgZXZlbiB3aGlsZSBtYXN0ZXIncyBwaHlzIHhtaW4gYWR2 YW5jZXMuCisjCisjIEZpcnN0LCBtYWtlIHN1cmUgbWFzdGVyJ3MgeG1pbiBpcyBhZHZhbmNl ZC4gVGhpcyBoYXBwZW5zIG9uIGhvdCBzdGFuZGJ5CisjIGZlZWRiYWNrLiBTbyB0aGlzIGNo ZWNrIGZvciBtYXN0ZXIncyB4bWluIGFkdmFuY2UgYWxzbyBtYWtlcyBzdXJlIGhvdCBzdGFu ZGJ5CisjIGZlZWRiYWNrIGhhcyByZWFjaGVkIHRoZSBtYXN0ZXIsIHdoaWNoIGlzIHJlcXVp cmVkIGZvciB0aGUgc3Vic2VxdWVudAorIyBjYXRhbG9nX3htaW4gdGVzdC4KK215ICR0ZW1w X3BoeXNfeG1pbiA9ICRub2RlX21hc3Rlci0+c2xvdCgkbWFzdGVyX3Nsb3RuYW1lKS0+eyd4 bWluJ307Ciskbm9kZV9tYXN0ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnU0VMRUNUIHR4 aWRfY3VycmVudCgpJyk7Cit3YWl0X2Zvcl94bWlucygkbm9kZV9tYXN0ZXIsICRtYXN0ZXJf c2xvdG5hbWUsCisJCQkgICAieG1pbjo6dmFyY2hhcjo6aW50ID4gJHt0ZW1wX3BoeXNfeG1p bn0iKTsKKyRzbG90ID0gJG5vZGVfbWFzdGVyLT5zbG90KCRtYXN0ZXJfc2xvdG5hbWUpOwor IyBOb3cgY2hlY2sgdGhhdCB0aGUgbWFzdGVyJ3MgcGh5cyBjYXRhbG9nX3htaW4gaGFzIGFk dmFuY2VkIGJ1dCBub3QgYmV5b25kCisjIHN0YW5kYnkncyBsb2dpY2FsIGNhdGFsb2dfeG1p bgorY21wX29rKCRzbG90LT57J2NhdGFsb2dfeG1pbid9LCAiPiIsICRzYXZlZF9waHlzaWNh bF9jYXRhbG9nX3htaW4sCisJJ3Vwc3RyZWFtIHBoeXNpY2FsIHNsb3QgY2F0YWxvZ194bWlu IGhhcyBhZHZhbmNlZCB3aXRoIGhzX2ZlZWRiYWNrIG9uJyk7CitjbXBfb2soJHNsb3QtPnsn Y2F0YWxvZ194bWluJ30sICI9PSIsICRuZXdfbG9naWNhbF9jYXRhbG9nX3htaW4sCisJJ3Vw c3RyZWFtIHBoeXNpY2FsIHNsb3QgY2F0YWxvZ194bWluIG5vdCBwYXN0IGRvd25zdHJlYW0g Y2F0YWxvZ194bWluIHdpdGggaHNfZmVlZGJhY2sgb24nKTsKKworCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisjIFVwc3RyZWFtIG9sZGVzdFhpZCBzaG91bGQgbm90IGdvIHBhc3QgZG93 bnN0cmVhbSBjYXRhbG9nX3htaW4KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBGaXJz dCBidXJuIHNvbWUgeGlkcyBvbiB0aGUgbWFzdGVyIGluIGFub3RoZXIgREIsIHNvIHdlIHB1 c2ggdGhlIG1hc3RlcidzCisjIG5leHRYaWQgYWhlYWQuCitmb3JlYWNoIG15ICRpICgxIC4u IDEwMCkKK3sKKwkkbm9kZV9tYXN0ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnU0VMRUNU IHR4aWRfY3VycmVudCgpJyk7Cit9CisKKyMgRm9yY2UgdmFjdXVtIGZyZWV6ZSBvbiB0aGUg bWFzdGVyIGFuZCBlbnN1cmUgaXRzIG9sZGVzdFhtaW4gZG9lc24ndCBhZHZhbmNlCisjIHBh c3Qgb3VyIG5lZWRlZCB4bWluLiBUaGUgb25seSB3YXkgd2UgaGF2ZSB2aXNpYmlsaXR5IGlu dG8gdGhhdCBpcyB0byBmb3JjZQorIyBhIGNoZWNrcG9pbnQuCiskbm9kZV9tYXN0ZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiVVBEQVRFIHBnX2RhdGFiYXNlIFNFVCBkYXRhbGxvd2Nv bm4gPSB0cnVlIFdIRVJFIGRhdG5hbWUgPSAndGVtcGxhdGUwJyIpOworZm9yZWFjaCBteSAk ZGJuYW1lICgndGVtcGxhdGUxJywgJ3Bvc3RncmVzJywgJ3Bvc3RncmVzJywgJ3RlbXBsYXRl MCcpCit7CisJJG5vZGVfbWFzdGVyLT5zYWZlX3BzcWwoJGRibmFtZSwgJ1ZBQ1VVTSBGUkVF WkUnKTsKK30KKyRub2RlX21hc3Rlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdDSEVDS1BP SU5UJyk7CitJUEM6OlJ1bjo6cnVuKFsncGdfY29udHJvbGRhdGEnLCAkbm9kZV9tYXN0ZXIt PmRhdGFfZGlyKCldLCAnPicsIFwkc3Rkb3V0KQorCW9yIGRpZSAicGdfY29udHJvbGRhdGEg ZmFpbGVkIHdpdGggJD8iOworbXkgQGNoZWNrcG9pbnQgPSBzcGxpdCgnXG4nLCAkc3Rkb3V0 KTsKK215ICRvbGRlc3RYaWQgPSAnJzsKK2ZvcmVhY2ggbXkgJGxpbmUgKEBjaGVja3BvaW50 KQoreworCWlmICgkbGluZSA9fiBxci9eTGF0ZXN0IGNoZWNrcG9pbnQncyBvbGRlc3RYSUQ6 XHMrKFxkKykvKQorCXsKKwkJJG9sZGVzdFhpZCA9ICQxOworCX0KK30KK2RpZSAnbm8gb2xk ZXN0WElEIGZvdW5kIGluIGNoZWNrcG9pbnQnIHVubGVzcyAkb2xkZXN0WGlkOworCitjbXBf b2soJG9sZGVzdFhpZCwgIjw9IiwgJG5vZGVfc3RhbmRieS0+c2xvdCgkc3RhbmRieV9zbG90 bmFtZSktPnsnY2F0YWxvZ194bWluJ30sCisJICAgJ3Vwc3RyZWFtIG9sZGVzdFhpZCBub3Qg cGFzdCBkb3duc3RyZWFtIGNhdGFsb2dfeG1pbiB3aXRoIGhzX2ZlZWRiYWNrIG9uJyk7CisK KyRub2RlX21hc3Rlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlVQREFURSBwZ19kYXRh YmFzZSBTRVQgZGF0YWxsb3djb25uID0gZmFsc2UgV0hFUkUgZGF0bmFtZSA9ICd0ZW1wbGF0 ZTAnIik7CisKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKyMgRHJvcCBzbG90CisjIE1ha2Ugc3VyZSBzdGFuZGJ5IHNsb3RzIGFyZSBk cm9wcGFibGUsIGFuZCBwcm9wZXJseSBjbGVhciB0aGUgdXBzdHJlYW0ncyB4bWluCisjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitpcygk bm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1NIT1cgaG90X3N0YW5kYnlf ZmVlZGJhY2snKSwgJ29uJywgJ2hzX2ZlZWRiYWNrIGlzIG9uJyk7CisKKyRub2RlX3N0YW5k YnktPnBzcWwoJ3Bvc3RncmVzJywgcXFbU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xv dCgnJHN0YW5kYnlfc2xvdG5hbWUnKV0pOworCitpcygkbm9kZV9zdGFuZGJ5LT5zbG90KCRz dGFuZGJ5X3Nsb3RuYW1lKS0+eydzbG90X3R5cGUnfSwgJycsICdzbG90IG9uIHN0YW5kYnkg ZHJvcHBlZCBtYW51YWxseScpOworCisjIGVuc3VyZSB3YWxyZWNlaXZlciBmZWVkYmFjayBz ZW50IGJ5IHdhaXRpbmcgZm9yIGV4cGVjdGVkIHhtaW4gYW5kCisjIGNhdGFsb2dfeG1pbiBv biBtYXN0ZXIuIGNhdGFsb2dfeG1pbiBzaG91bGQgYmVjb21lIE5VTEwgYmVjYXVzZSB3ZSBk cm9wcGVkCisjIHRoZSBsb2dpY2FsIHNsb3QuCit3YWl0X2Zvcl94bWlucygkbm9kZV9tYXN0 ZXIsICRtYXN0ZXJfc2xvdG5hbWUsCisJCQkgICAieG1pbiBJUyBOT1QgTlVMTCBBTkQgY2F0 YWxvZ194bWluIElTIE5VTEwiKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3Qv MDI1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZ19jb25mbGljdHMucGwgYi9zcmMvdGVzdC9y ZWNvdmVyeS90LzAyNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmdfY29uZmxpY3RzLnBsCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjQyNmE0MTJiMWYKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAyNV9zdGFuZGJ5X2xvZ2ljYWxf ZGVjb2RpbmdfY29uZmxpY3RzLnBsCkBAIC0wLDAgKzEsMjI4IEBACisjIGxvZ2ljYWwgZGVj b2Rpbmcgb24gYSBzdGFuZGJ5IDogdGVzdCBjb25mbGljdCByZWNvdmVyeTsgYW5kIG90aGVy IHRlc3RzIHRoYXQKKyMgdmVyaWZ5IHNsb3RzIGdldCBkcm9wcGVkIGFzIGV4cGVjdGVkLgor Cit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOworCit1c2UgUG9zdGdyZXNOb2RlOwordXNl IFRlc3RMaWI7Cit1c2UgVGVzdDo6TW9yZSB0ZXN0cyA9PiAyNjsKK3VzZSBSZWN1cnNpdmVD b3B5OwordXNlIEZpbGU6OkNvcHk7Cit1c2UgVGltZTo6SGlSZXMgcXcodXNsZWVwKTsKKwor bXkgKCRzdGRpbiwgJHN0ZG91dCwgJHN0ZGVyciwgJHJldCwgJGhhbmRsZSwgJHNsb3QpOwor CitteSAkbm9kZV9tYXN0ZXIgPSBnZXRfbmV3X25vZGUoJ21hc3RlcicpOworbXkgJG5vZGVf c3RhbmRieSA9IGdldF9uZXdfbm9kZSgnc3RhbmRieScpOworCisjIE5hbWUgZm9yIHRoZSBw aHlzaWNhbCBzbG90IG9uIG1hc3RlcgorbXkgJG1hc3Rlcl9zbG90bmFtZSA9ICdtYXN0ZXJf cGh5c2ljYWwnOworCisjIEZldGNoIHhtaW4gY29sdW1ucyBmcm9tIHNsb3QncyBwZ19yZXBs aWNhdGlvbl9zbG90cyByb3csIGFmdGVyIHdhaXRpbmcgZm9yCisjIGdpdmVuIGJvb2xlYW4g Y29uZGl0aW9uIHRvIGJlIHRydWUgdG8gZW5zdXJlIHdlJ3ZlIHJlYWNoZWQgYSBxdWllc2Nl bnQgc3RhdGUKK3N1YiB3YWl0X2Zvcl94bWlucworeworCW15ICgkbm9kZSwgJHNsb3RuYW1l LCAkY2hlY2tfZXhwcikgPSBAXzsKKworCSRub2RlLT5wb2xsX3F1ZXJ5X3VudGlsKAorCQkn cG9zdGdyZXMnLCBxcVsKKwkJU0VMRUNUICRjaGVja19leHByCisJCUZST00gcGdfY2F0YWxv Zy5wZ19yZXBsaWNhdGlvbl9zbG90cworCQlXSEVSRSBzbG90X25hbWUgPSAnJHNsb3RuYW1l JzsKKwldKSBvciBkaWUgIlRpbWVkIG91dCB3YWl0aW5nIGZvciBzbG90IHhtaW5zIHRvIGFk dmFuY2UiOworfQorCisjIFZlcmlmeSB0aGF0IHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3Rz LmNvbmZsX2xvZ2ljYWxzbG90IGhhcyBiZWVuIHVwZGF0ZWQKK3N1YiBjaGVja19jb25mbF9s b2dpY2Fsc2xvdAoreworCW9rKCAkbm9kZV9zdGFuZGJ5LT5wb2xsX3F1ZXJ5X3VudGlsKAor CQkncG9zdGdyZXMnLAorCQkic2VsZWN0IChjb25mbF9sb2dpY2Fsc2xvdCA9IDIpIGZyb20g cGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMgd2hlcmUgZGF0bmFtZSA9ICd0ZXN0ZGInIiwg J3QnKSwKKwkJJ2NvbmZsX2xvZ2ljYWxzbG90IHVwZGF0ZWQnKSBvciBkaWUgIlRpbWVkIG91 dCB3YWl0aW5nIGNvbmZsX2xvZ2ljYWxzbG90IHRvIGJlIHVwZGF0ZWQiOworfQorCisjIENy ZWF0ZSB0aGUgcmVxdWlyZWQgbG9naWNhbCBzbG90cyBvbiBzdGFuZGJ5Lgorc3ViIGNyZWF0 ZV9sb2dpY2FsX3Nsb3RzCit7CisJJG5vZGVfc3RhbmRieS0+Y3JlYXRlX2xvZ2ljYWxfc2xv dF9vbl9zdGFuZGJ5KCRub2RlX21hc3RlciwgJ2Ryb3BzbG90JywgJ3Rlc3RkYicpOworCSRu b2RlX3N0YW5kYnktPmNyZWF0ZV9sb2dpY2FsX3Nsb3Rfb25fc3RhbmRieSgkbm9kZV9tYXN0 ZXIsICdhY3RpdmVzbG90JywgJ3Rlc3RkYicpOworfQorCisjIEFjcXVpcmUgb25lIG9mIHRo ZSBzdGFuZGJ5IGxvZ2ljYWwgc2xvdHMgY3JlYXRlZCBieSBjcmVhdGVfbG9naWNhbF9zbG90 cygpCitzdWIgbWFrZV9zbG90X2FjdGl2ZQoreworCW15ICRzbG90X3VzZXJfaGFuZGxlOwor CisJIyBtYWtlIHN1cmUgYWN0aXZlc2xvdCBpcyBpbiB1c2UKKwlwcmludCAic3RhcnRpbmcg cGdfcmVjdmxvZ2ljYWxcbiI7CisJJHNsb3RfdXNlcl9oYW5kbGUgPSBJUEM6OlJ1bjo6c3Rh cnQoWydwZ19yZWN2bG9naWNhbCcsICctZCcsICRub2RlX3N0YW5kYnktPmNvbm5zdHIoJ3Rl c3RkYicpLCAnLVMnLCAnYWN0aXZlc2xvdCcsICctZicsICctJywgJy0tbm8tbG9vcCcsICct LXN0YXJ0J10sICc+JywgXCRzdGRvdXQsICcyPicsIFwkc3RkZXJyKTsKKworCXdoaWxlICgh JG5vZGVfc3RhbmRieS0+c2xvdCgnYWN0aXZlc2xvdCcpLT57J2FjdGl2ZV9waWQnfSkKKwl7 CisJCXVzbGVlcCgxMDBfMDAwKTsKKwkJcHJpbnQgIndhaXRpbmcgZm9yIHNsb3QgdG8gYmVj b21lIGFjdGl2ZVxuIjsKKwl9CisJcmV0dXJuICRzbG90X3VzZXJfaGFuZGxlOworfQorCisj IENoZWNrIGlmIGFsbCB0aGUgc2xvdHMgb24gc3RhbmRieSBhcmUgZHJvcHBlZC4gVGhlc2Ug aW5jbHVkZSB0aGUgJ2FjdGl2ZXNsb3QnCisjIHRoYXQgd2FzIGFjcXVpcmVkIGJ5IG1ha2Vf c2xvdF9hY3RpdmUoKSwgYW5kIHRoZSBub24tYWN0aXZlICdkcm9wc2xvdCcuCitzdWIgY2hl Y2tfc2xvdHNfZHJvcHBlZAoreworCW15ICgkc2xvdF91c2VyX2hhbmRsZSkgPSBAXzsKKwlt eSAkcmV0dXJuOworCisJaXMoJG5vZGVfc3RhbmRieS0+c2xvdCgnZHJvcHNsb3QnKS0+eydz bG90X3R5cGUnfSwgJycsICdkcm9wc2xvdCBvbiBzdGFuZGJ5IGRyb3BwZWQnKTsKKwlpcygk bm9kZV9zdGFuZGJ5LT5zbG90KCdhY3RpdmVzbG90JyktPnsnc2xvdF90eXBlJ30sICcnLCAn YWN0aXZlc2xvdCBvbiBzdGFuZGJ5IGRyb3BwZWQnKTsKKworCSMgb3VyIGNsaWVudCBzaG91 bGQndmUgdGVybWluYXRlZCBpbiByZXNwb25zZSB0byB0aGUgd2Fsc2VuZGVyIGVycm9yCisJ ZXZhbCB7CisJCSRzbG90X3VzZXJfaGFuZGxlLT5maW5pc2g7CisJfTsKKwkkcmV0dXJuID0g JD87CisJY21wX29rKCRyZXR1cm4sICIhPSIsIDAsICJwZ19yZWN2bG9naWNhbCBleGl0ZWQg bm9uLXplcm9cbiIpOworCWlmICgkcmV0dXJuKSB7CisJCWxpa2UoJHN0ZGVyciwgcXIvY29u ZmxpY3Qgd2l0aCByZWNvdmVyeS8sICdyZWN2bG9naWNhbCByZWNvdmVyeSBjb25mbGljdCcp OworCQlsaWtlKCRzdGRlcnIsIHFyL211c3QgYmUgZHJvcHBlZC8sICdyZWN2bG9naWNhbCBl cnJvciBkZXRhaWwnKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKyMgSW5pdGlhbGl6ZSBtYXN0ZXIgbm9kZQorIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisKKyRub2RlX21hc3Rlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+IDEs IGhhc19hcmNoaXZpbmcgPT4gMSk7Ciskbm9kZV9tYXN0ZXItPmFwcGVuZF9jb25mKCdwb3N0 Z3Jlc3FsLmNvbmYnLCBxeword2FsX2xldmVsID0gJ2xvZ2ljYWwnCittYXhfcmVwbGljYXRp b25fc2xvdHMgPSA0CittYXhfd2FsX3NlbmRlcnMgPSA0Citsb2dfbWluX21lc3NhZ2VzID0g J2RlYnVnMicKK2xvZ19lcnJvcl92ZXJib3NpdHkgPSB2ZXJib3NlCisjIHNlbmQgc3RhdHVz IHJhcGlkbHkgc28gd2UgcHJvbXB0bHkgYWR2YW5jZSB4bWluIG9uIG1hc3Rlcgord2FsX3Jl Y2VpdmVyX3N0YXR1c19pbnRlcnZhbCA9IDEKKyMgdmVyeSBwcm9tcHRseSB0ZXJtaW5hdGUg Y29uZmxpY3RpbmcgYmFja2VuZHMKK21heF9zdGFuZGJ5X3N0cmVhbWluZ19kZWxheSA9ICcy cycKK30pOworJG5vZGVfbWFzdGVyLT5kdW1wX2luZm87Ciskbm9kZV9tYXN0ZXItPnN0YXJ0 OworCiskbm9kZV9tYXN0ZXItPnBzcWwoJ3Bvc3RncmVzJywgcVtDUkVBVEUgREFUQUJBU0Ug dGVzdGRiXSk7CisKKyRub2RlX21hc3Rlci0+c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtTRUxF Q1QgKiBGUk9NIHBnX2NyZWF0ZV9waHlzaWNhbF9yZXBsaWNhdGlvbl9zbG90KCckbWFzdGVy X3Nsb3RuYW1lJyk7XSk7CitteSAkYmFja3VwX25hbWUgPSAnYjEnOworJG5vZGVfbWFzdGVy LT5iYWNrdXAoJGJhY2t1cF9uYW1lKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg SW5pdGlhbGl6ZSBzbGF2ZSBub2RlCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCiskbm9k ZV9zdGFuZGJ5LT5pbml0X2Zyb21fYmFja3VwKAorCSRub2RlX21hc3RlciwgJGJhY2t1cF9u YW1lLAorCWhhc19zdHJlYW1pbmcgPT4gMSwKKwloYXNfcmVzdG9yaW5nID0+IDEpOworJG5v ZGVfc3RhbmRieS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJcXFbcHJpbWFy eV9zbG90X25hbWUgPSAnJG1hc3Rlcl9zbG90bmFtZSddKTsKKyRub2RlX3N0YW5kYnktPnN0 YXJ0OworJG5vZGVfbWFzdGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdy ZXBsYXknLCAkbm9kZV9tYXN0ZXItPmxzbignZmx1c2gnKSk7CisKKworIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUmVjb3ZlcnkgY29u ZmxpY3Q6IERyb3AgY29uZmxpY3Rpbmcgc2xvdHMsIGluY2x1ZGluZyBpbi11c2Ugc2xvdHMK KyMgU2NlbmFyaW8gMSA6IGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIG9mZgorIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY3JlYXRlX2xvZ2lj YWxfc2xvdHMoKTsKKworIyBPbmUgd2F5IHRvIHJlcHJvZHVjZSByZWNvdmVyeSBjb25mbGlj dCBpcyB0byBydW4gVkFDVVVNIEZVTEwgd2l0aAorIyBob3Rfc3RhbmRieV9mZWVkYmFjayB0 dXJuZWQgb2ZmIG9uIHNsYXZlLgorJG5vZGVfc3RhbmRieS0+YXBwZW5kX2NvbmYoJ3Bvc3Rn cmVzcWwuY29uZicscVsKK2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gb2ZmCitdKTsKKyRub2Rl X3N0YW5kYnktPnJlc3RhcnQ7CisjIGVuc3VyZSB3YWxyZWNlaXZlciBmZWVkYmFjayBvZmYg Ynkgd2FpdGluZyBmb3IgZXhwZWN0ZWQgeG1pbiBhbmQKKyMgY2F0YWxvZ194bWluIG9uIG1h c3Rlci4gQm90aCBzaG91bGQgYmUgTlVMTCBzaW5jZSBoc19mZWVkYmFjayBpcyBvZmYKK3dh aXRfZm9yX3htaW5zKCRub2RlX21hc3RlciwgJG1hc3Rlcl9zbG90bmFtZSwKKwkJCSAgICJ4 bWluIElTIE5VTEwgQU5EIGNhdGFsb2dfeG1pbiBJUyBOVUxMIik7CisKKyRoYW5kbGUgPSBt YWtlX3Nsb3RfYWN0aXZlKCk7CisKKyMgVGhpcyBzaG91bGQgdHJpZ2dlciB0aGUgY29uZmxp Y3QKKyRub2RlX21hc3Rlci0+c2FmZV9wc3FsKCd0ZXN0ZGInLCAnVkFDVVVNIEZVTEwnKTsK KworJG5vZGVfbWFzdGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBs YXknLCAkbm9kZV9tYXN0ZXItPmxzbignZmx1c2gnKSk7CisKK2NoZWNrX3Nsb3RzX2Ryb3Bw ZWQoJGhhbmRsZSk7CisKK2NoZWNrX2NvbmZsX2xvZ2ljYWxzbG90KCk7CisKKyMgVHVybiBo b3Rfc3RhbmRieV9mZWVkYmFjayBiYWNrIG9uCiskbm9kZV9zdGFuZGJ5LT5hcHBlbmRfY29u ZigncG9zdGdyZXNxbC5jb25mJyxxWworaG90X3N0YW5kYnlfZmVlZGJhY2sgPSBvbgorXSk7 Ciskbm9kZV9zdGFuZGJ5LT5yZXN0YXJ0OworCisjIGVuc3VyZSB3YWxyZWNlaXZlciBmZWVk YmFjayBzZW50IGJ5IHdhaXRpbmcgZm9yIGV4cGVjdGVkIHhtaW4gYW5kCisjIGNhdGFsb2df eG1pbiBvbiBtYXN0ZXIuIFdpdGggaG90X3N0YW5kYnlfZmVlZGJhY2sgb24sIHhtaW4gc2hv dWxkIGFkdmFuY2UsCisjIGJ1dCBjYXRhbG9nX3htaW4gc2hvdWxkIHN0aWxsIHJlbWFpbiBO VUxMIHNpbmNlIHRoZXJlIGlzIG5vIGxvZ2ljYWwgc2xvdC4KK3dhaXRfZm9yX3htaW5zKCRu b2RlX21hc3RlciwgJG1hc3Rlcl9zbG90bmFtZSwKKwkJCSAgICJ4bWluIElTIE5PVCBOVUxM IEFORCBjYXRhbG9nX3htaW4gSVMgTlVMTCIpOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBSZWNvdmVyeSBjb25mbGljdDogRHJv cCBjb25mbGljdGluZyBzbG90cywgaW5jbHVkaW5nIGluLXVzZSBzbG90cworIyBTY2VuYXJp byAyIDogaW5jb3JyZWN0IHdhbF9sZXZlbCBhdCBtYXN0ZXIKKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NyZWF0ZV9sb2dpY2FsX3Ns b3RzKCk7CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKCk7CisKKyMgTWFrZSBtYXN0 ZXIgd2FsX2xldmVsIHJlcGxpY2EuIFRoaXMgd2lsbCB0cmlnZ2VyIHNsb3QgY29uZmxpY3Qu Ciskbm9kZV9tYXN0ZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLHFbCit3YWxf bGV2ZWwgPSAncmVwbGljYScKK10pOworJG5vZGVfbWFzdGVyLT5yZXN0YXJ0OworCiskbm9k ZV9tYXN0ZXItPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRu b2RlX21hc3Rlci0+bHNuKCdmbHVzaCcpKTsKKworY2hlY2tfc2xvdHNfZHJvcHBlZCgkaGFu ZGxlKTsKKworY2hlY2tfY29uZmxfbG9naWNhbHNsb3QoKTsKKworIyBSZXN0b3JlIG1hc3Rl ciB3YWxfbGV2ZWwKKyRub2RlX21hc3Rlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29u ZicscVsKK3dhbF9sZXZlbCA9ICdsb2dpY2FsJworXSk7Ciskbm9kZV9tYXN0ZXItPnJlc3Rh cnQ7Ciskbm9kZV9tYXN0ZXItPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3Jl cGxheScsICRub2RlX21hc3Rlci0+bHNuKCdmbHVzaCcpKTsKKworCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBEUk9QIERBVEFCQVNF IHNob3VsZCBkcm9wcyBpdCdzIHNsb3RzLCBpbmNsdWRpbmcgYWN0aXZlIHNsb3RzLgorIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY3Jl YXRlX2xvZ2ljYWxfc2xvdHMoKTsKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKCk7Cisj IENyZWF0ZSBhIHNsb3Qgb24gYSBkYXRhYmFzZSB0aGF0IHdvdWxkIG5vdCBiZSBkcm9wcGVk LiBUaGlzIHNsb3Qgc2hvdWxkIG5vdAorIyBnZXQgZHJvcHBlZC4KKyRub2RlX3N0YW5kYnkt PmNyZWF0ZV9sb2dpY2FsX3Nsb3Rfb25fc3RhbmRieSgkbm9kZV9tYXN0ZXIsICdvdGhlcnNs b3QnLCAncG9zdGdyZXMnKTsKKworIyBkcm9wZGIgb24gdGhlIG1hc3RlciB0byB2ZXJpZnkg c2xvdHMgYXJlIGRyb3BwZWQgb24gc3RhbmRieQorJG5vZGVfbWFzdGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgcVtEUk9QIERBVEFCQVNFIHRlc3RkYl0pOworCiskbm9kZV9tYXN0ZXIt PndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX21hc3Rl ci0+bHNuKCdmbHVzaCcpKTsKKworaXMoJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJcVtTRUxFQ1QgRVhJU1RTKFNFTEVDVCAxIEZST00gcGdfZGF0YWJhc2UgV0hF UkUgZGF0bmFtZSA9ICd0ZXN0ZGInKV0pLCAnZicsCisJJ2RhdGFiYXNlIGRyb3BwZWQgb24g c3RhbmRieScpOworCitjaGVja19zbG90c19kcm9wcGVkKCRoYW5kbGUpOworCitpcygkbm9k ZV9zdGFuZGJ5LT5zbG90KCdvdGhlcnNsb3QnKS0+eydzbG90X3R5cGUnfSwgJ2xvZ2ljYWwn LAorCSdvdGhlcnNsb3Qgb24gc3RhbmRieSBub3QgZHJvcHBlZCcpOworCisjIENsZWFudXAg OiBtYW51YWxseSBkcm9wIHRoZSBzbG90IHRoYXQgd2FzIG5vdCBkcm9wcGVkLgorJG5vZGVf c3RhbmRieS0+cHNxbCgncG9zdGdyZXMnLCBxW1NFTEVDVCBwZ19kcm9wX3JlcGxpY2F0aW9u X3Nsb3QoJ290aGVyc2xvdCcpXSk7Ci0tIAoyLjE4LjQKCg== --------------F5E6E709001A4E566C6E418E Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v15-0003-Handle-logical-slot-conflicts-on-standby.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v15-0003-Handle-logical-slot-conflicts-on-standby.patch" RnJvbSAwZmUwZWEyNjVjODMwMTI1YjZmOWUxMmNkMWNkZWJmNzczYjQ0MzU0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA2IEFwciAyMDIxIDEyOjAzOjMyICswMDAwClN1YmplY3Q6IFtQQVRD SCB2MTUgMy81XSBIYW5kbGUgbG9naWNhbCBzbG90IGNvbmZsaWN0cyBvbiBzdGFuZGJ5LgoK RHVyaW5nIFdBTCByZXBsYXkgb24gc3RhbmRieSwgd2hlbiBzbG90IGNvbmZsaWN0IGlzIGlk ZW50aWZpZWQsCmRyb3Agc3VjaCBzbG90cy4gQWxzbyBkbyB0aGUgc2FtZSB0aGluZyBpZiB3 YWxfbGV2ZWwgb24gbWFzdGVyCmlzIHJlZHVjZWQgdG8gYmVsb3cgbG9naWNhbCBhbmQgdGhl cmUgYXJlIGV4aXN0aW5nIGxvZ2ljYWwgc2xvdHMKb24gc3RhbmRieS4gSW50cm9kdWNlIGEg bmV3IFByb2NTaWduYWxSZWFzb24gdmFsdWUgZm9yIHNsb3QKY29uZmxpY3QgcmVjb3Zlcnku IEFycmFuZ2UgZm9yIGEgbmV3IHBnX3N0YXRfZ2V0X2FjdGl2aXR5IGZpZWxkOgpjb25mbF9s b2dpY2Fsc2xvdC4KCkFtaXQgS2hhbmRla2FyLCByZXZpZXdlZCBieSBBbmRyZXMgRnJldW5k LgotLS0KIGRvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgICAgICAgICB8ICAxMCArKwog c3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYyAgIHwgICA0ICstCiBzcmMvYmFj a2VuZC9hY2Nlc3MvaGFzaC9oYXNoX3hsb2cuYyAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbS5jICAgICB8ICAxMyArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25i dHJlZS9uYnR4bG9nLmMgIHwgICA0ICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3Nw Z3hsb2cuYyAgfCAgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jICAg IHwgIDE0ICsrCiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgfCAgIDMg Ky0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdzdGF0LmMgICAgICB8ICAyMiArKysrCiBz cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgICAgICAgfCAxODMgKysrKysrKysrKysr KysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYyAg fCAgIDQgKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jIHwgICAzICsK IHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyAgICB8ICAxMSArLQogc3JjL2Jh Y2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgIHwgIDIyICsrKysKIHNyYy9iYWNrZW5k L3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jICB8ICAxNiArKysKIHNyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHJvYy5kYXQgICAgICB8ICAgNSArCiBzcmMvaW5jbHVkZS9wZ3N0YXQuaCAgICAg ICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oICAg ICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oICAgICB8ICAg MSArCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3N0YW5kYnkuaCAgICAgICAgfCAgIDQgKy0KIHNy Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0ICB8ICAgMyArLQogMjEgZmlsZXMg Y2hhbmdlZCwgMzE2IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQogICA2LjMlIHNy Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwLwogICA2LjAlIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtLwogICA1LjglIHNyYy9iYWNrZW5kL2FjY2Vzcy8KICAgNC44JSBzcmMvYmFja2VuZC9w b3N0bWFzdGVyLwogIDQ4LjMlIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uLwogICA2LjQlIHNy Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjLwogICA4LjAlIHNyYy9iYWNrZW5kL3Rjb3AvCiAgIDMu MSUgc3JjL2JhY2tlbmQvdXRpbHMvYWR0LwogICA2LjMlIHNyYy9pbmNsdWRlLwoKZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbW9u aXRvcmluZy5zZ21sCmluZGV4IDU2MDE4NzQ1YzguLjg1MGNjOTdiMWIgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL21vbml0 b3Jpbmcuc2dtbApAQCAtMzk4NSw2ICszOTg1LDE2IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZl bnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9l dmVudCBpCiAgICAgICAgZGVhZGxvY2tzCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAg PC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVj dGZpZWxkPmNvbmZsX2xvZ2ljYWxzbG90PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+YmlnaW50PC90 eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTnVtYmVyIG9mIHF1 ZXJpZXMgaW4gdGhpcyBkYXRhYmFzZSB0aGF0IGhhdmUgYmVlbiBjYW5jZWxlZCBkdWUgdG8K KyAgICAgICBsb2dpY2FsIHNsb3RzCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9y b3c+CiAgICAgPC90Ym9keT4KICAgIDwvdGdyb3VwPgogICA8L3RhYmxlPgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9naXN0L2dpc3R4bG9nLmMKaW5kZXggOTdkODE0YjkyNy4uYjZjMGQ4YjI5MCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jCkBAIC0xOTUsNyArMTk1LDggQEAgZ2lz dFJlZG9EZWxldGVSZWNvcmQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAKIAkJWExvZ1Jl Y0dldEJsb2NrVGFnKHJlY29yZCwgMCwgJnJub2RlLCBOVUxMLCBOVUxMKTsKIAotCQlSZXNv bHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bGRhdGEtPmxhdGVzdFJlbW92ZWRY aWQsIHJub2RlKTsKKwkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxk YXRhLT5sYXRlc3RSZW1vdmVkWGlkLAorCQkJCQkJCQkJCQl4bGRhdGEtPm9uQ2F0YWxvZ1Rh YmxlLCBybm9kZSk7CiAJfQogCiAJaWYgKFhMb2dSZWFkQnVmZmVyRm9yUmVkbyhyZWNvcmQs IDAsICZidWZmZXIpID09IEJMS19ORUVEU19SRURPKQpAQCAtMzk1LDYgKzM5Niw3IEBAIGdp c3RSZWRvUGFnZVJldXNlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCSAqLwogCWlmIChJ bkhvdFN0YW5kYnkpCiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90RnVs bFhpZCh4bHJlYy0+bGF0ZXN0UmVtb3ZlZEZ1bGxYaWQsCisJCQkJCQkJCQkJCQkgICB4bHJl Yy0+b25DYXRhbG9nVGFibGUsCiAJCQkJCQkJCQkJCQkgICB4bHJlYy0+bm9kZSk7CiB9CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxvZy5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKaW5kZXggMDJkOWU2Y2RmZC4uYjFm ZjU5NmViNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9n LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKQEAgLTEwMDIs NyArMTAwMiw4IEBAIGhhc2hfeGxvZ192YWN1dW1fb25lX3BhZ2UoWExvZ1JlYWRlclN0YXRl ICpyZWNvcmQpCiAJCVJlbEZpbGVOb2RlIHJub2RlOwogCiAJCVhMb2dSZWNHZXRCbG9ja1Rh ZyhyZWNvcmQsIDAsICZybm9kZSwgTlVMTCwgTlVMTCk7Ci0JCVJlc29sdmVSZWNvdmVyeUNv bmZsaWN0V2l0aFNuYXBzaG90KHhsZGF0YS0+bGF0ZXN0UmVtb3ZlZFhpZCwgcm5vZGUpOwor CQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bGRhdGEtPmxhdGVzdFJl bW92ZWRYaWQsCisJCQkJCQkJCQkJCXhsZGF0YS0+b25DYXRhbG9nVGFibGUsIHJub2RlKTsK IAl9CiAKIAlhY3Rpb24gPSBYTG9nUmVhZEJ1ZmZlckZvclJlZG9FeHRlbmRlZChyZWNvcmQs IDAsIFJCTV9OT1JNQUwsIHRydWUsICZidWZmZXIpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW0uYwppbmRleCBjZTZiNjZhYTU4Li5jYTc2OWI3ODYyIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW0uYwpAQCAtODUyMiw3ICs4NTIyLDggQEAgaGVhcF94bG9nX2NsZWFudXBfaW5m byhYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAl4bF9oZWFwX2NsZWFudXBfaW5mbyAqeGxy ZWMgPSAoeGxfaGVhcF9jbGVhbnVwX2luZm8gKikgWExvZ1JlY0dldERhdGEocmVjb3JkKTsK IAogCWlmIChJbkhvdFN0YW5kYnkpCi0JCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNu YXBzaG90KHhscmVjLT5sYXRlc3RSZW1vdmVkWGlkLCB4bHJlYy0+bm9kZSk7CisJCVJlc29s dmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhscmVjLT5sYXRlc3RSZW1vdmVkWGlk LAorCQkJCQkJCQkJCQl4bHJlYy0+b25DYXRhbG9nVGFibGUsIHhscmVjLT5ub2RlKTsKIAog CS8qCiAJICogQWN0dWFsIG9wZXJhdGlvbiBpcyBhIG5vLW9wLiBSZWNvcmQgdHlwZSBleGlz dHMgdG8gcHJvdmlkZSBhIG1lYW5zIGZvcgpAQCAtODU1OCw3ICs4NTU5LDggQEAgaGVhcF94 bG9nX2NsZWFuKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCSAqIGxhdGVzdFJlbW92ZWRY aWQgaXMgaW52YWxpZCwgc2tpcCBjb25mbGljdCBwcm9jZXNzaW5nLgogCSAqLwogCWlmIChJ bkhvdFN0YW5kYnkgJiYgVHJhbnNhY3Rpb25JZElzVmFsaWQoeGxyZWMtPmxhdGVzdFJlbW92 ZWRYaWQpKQotCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bHJlYy0+ bGF0ZXN0UmVtb3ZlZFhpZCwgcm5vZGUpOworCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdp dGhTbmFwc2hvdCh4bHJlYy0+bGF0ZXN0UmVtb3ZlZFhpZCwKKwkJCQkJCQkJCQkJeGxyZWMt Pm9uQ2F0YWxvZ1RhYmxlLCBybm9kZSk7CiAKIAkvKgogCSAqIElmIHdlIGhhdmUgYSBmdWxs LXBhZ2UgaW1hZ2UsIHJlc3RvcmUgaXQgKHVzaW5nIGEgY2xlYW51cCBsb2NrKSBhbmQKQEAg LTg2NTQsNyArODY1Niw5IEBAIGhlYXBfeGxvZ192aXNpYmxlKFhMb2dSZWFkZXJTdGF0ZSAq cmVjb3JkKQogCSAqIHJhdGhlciB0aGFuIGtpbGxpbmcgdGhlIHRyYW5zYWN0aW9uIG91dHJp Z2h0LgogCSAqLwogCWlmIChJbkhvdFN0YW5kYnkpCi0JCVJlc29sdmVSZWNvdmVyeUNvbmZs aWN0V2l0aFNuYXBzaG90KHhscmVjLT5jdXRvZmZfeGlkLCBybm9kZSk7CisJCVJlc29sdmVS ZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhscmVjLT5jdXRvZmZfeGlkLAorCQkJCQkJ CQkJCQl4bHJlYy0+b25DYXRhbG9nVGFibGUsCisJCQkJCQkJCQkJCXJub2RlKTsKIAogCS8q CiAJICogUmVhZCB0aGUgaGVhcCBwYWdlLCBpZiBpdCBzdGlsbCBleGlzdHMuIElmIHRoZSBo ZWFwIGZpbGUgaGFzIGRyb3BwZWQgb3IKQEAgLTg3OTEsNyArODc5NSw4IEBAIGhlYXBfeGxv Z19mcmVlemVfcGFnZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJVHJhbnNhY3Rpb25J ZFJldHJlYXQobGF0ZXN0UmVtb3ZlZFhpZCk7CiAKIAkJWExvZ1JlY0dldEJsb2NrVGFnKHJl Y29yZCwgMCwgJnJub2RlLCBOVUxMLCBOVUxMKTsKLQkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxp Y3RXaXRoU25hcHNob3QobGF0ZXN0UmVtb3ZlZFhpZCwgcm5vZGUpOworCQlSZXNvbHZlUmVj b3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdChsYXRlc3RSZW1vdmVkWGlkLAorCQkJCQkJCQkJ CQl4bHJlYy0+b25DYXRhbG9nVGFibGUsIHJub2RlKTsKIAl9CiAKIAlpZiAoWExvZ1JlYWRC dWZmZXJGb3JSZWRvKHJlY29yZCwgMCwgJmJ1ZmZlcikgPT0gQkxLX05FRURTX1JFRE8pCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHhsb2cuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5jCmluZGV4IDE3NzliNmJhNDcuLjM2ZWUz MTM0MjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5jCkBAIC02NjksNyAr NjY5LDggQEAgYnRyZWVfeGxvZ19kZWxldGUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAK IAkJWExvZ1JlY0dldEJsb2NrVGFnKHJlY29yZCwgMCwgJnJub2RlLCBOVUxMLCBOVUxMKTsK IAotCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bHJlYy0+bGF0ZXN0 UmVtb3ZlZFhpZCwgcm5vZGUpOworCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFw c2hvdCh4bHJlYy0+bGF0ZXN0UmVtb3ZlZFhpZCwKKwkJCQkJCQkJCQkJeGxyZWMtPm9uQ2F0 YWxvZ1RhYmxlLCBybm9kZSk7CiAJfQogCiAJLyoKQEAgLTEwMDcsNiArMTAwOCw3IEBAIGJ0 cmVlX3hsb2dfcmV1c2VfcGFnZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAogCWlmIChJ bkhvdFN0YW5kYnkpCiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90RnVs bFhpZCh4bHJlYy0+bGF0ZXN0UmVtb3ZlZEZ1bGxYaWQsCisJCQkJCQkJCQkJCQkgICB4bHJl Yy0+b25DYXRhbG9nVGFibGUsCiAJCQkJCQkJCQkJCQkgICB4bHJlYy0+bm9kZSk7CiB9CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BneGxvZy5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd4bG9nLmMKaW5kZXggM2RmZDJhYTMxNy4uYWRk NGRhNGU3NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd4bG9n LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd4bG9nLmMKQEAgLTg4MSw2 ICs4ODEsNyBAQCBzcGdSZWRvVmFjdXVtUmVkaXJlY3QoWExvZ1JlYWRlclN0YXRlICpyZWNv cmQpCiAKIAkJCVhMb2dSZWNHZXRCbG9ja1RhZyhyZWNvcmQsIDAsICZub2RlLCBOVUxMLCBO VUxMKTsKIAkJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhsZGF0YS0+ bmV3ZXN0UmVkaXJlY3RYaWQsCisJCQkJCQkJCQkJCQl4bGRhdGEtPm9uQ2F0YWxvZ1RhYmxl LAogCQkJCQkJCQkJCQkJbm9kZSk7CiAJCX0KIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9nLmMKaW5kZXggNmEyMWNiYTM2Mi4uYzViNWQ2YjYxMCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2cuYwpAQCAtMTAzNzMsNiArMTAzNzMsMjAgQEAgeGxvZ19yZWRvKFhMb2dS ZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkvKiBVcGRhdGUgb3VyIGNvcHkgb2YgdGhlIHBhcmFt ZXRlcnMgaW4gcGdfY29udHJvbCAqLwogCQltZW1jcHkoJnhscmVjLCBYTG9nUmVjR2V0RGF0 YShyZWNvcmQpLCBzaXplb2YoeGxfcGFyYW1ldGVyX2NoYW5nZSkpOwogCisJCS8qCisJCSAq IERyb3AgbG9naWNhbCBzbG90cyBpZiB3ZSBhcmUgaW4gaG90IHN0YW5kYnkgYW5kIHRoZSBw cmltYXJ5IGRvZXMgbm90CisJCSAqIGhhdmUgYSBXQUwgbGV2ZWwgc3VmZmljaWVudCBmb3Ig bG9naWNhbCBkZWNvZGluZy4gTm8gbmVlZCB0byBzZWFyY2gKKwkJICogZm9yIHBvdGVudGlh bGx5IGNvbmZsaWN0aW5nIGxvZ2ljYWxseSBzbG90cyBpZiBzdGFuZGJ5IGlzIHJ1bm5pbmcK KwkJICogd2l0aCB3YWxfbGV2ZWwgbG93ZXIgdGhhbiBsb2dpY2FsLCBiZWNhdXNlIGluIHRo YXQgY2FzZSwgd2Ugd291bGQKKwkJICogaGF2ZSBlaXRoZXIgZGlzYWxsb3dlZCBjcmVhdGlv biBvZiBsb2dpY2FsIHNsb3RzIG9yIGRyb3BwZWQgZXhpc3RpbmcKKwkJICogb25lcy4KKwkJ ICovCisJCWlmIChJblJlY292ZXJ5ICYmIEluSG90U3RhbmRieSAmJgorCQkJeGxyZWMud2Fs X2xldmVsIDwgV0FMX0xFVkVMX0xPR0lDQUwgJiYKKwkJCXdhbF9sZXZlbCA+PSBXQUxfTEVW RUxfTE9HSUNBTCkKKwkJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aExvZ2ljYWxTbG90 cyhJbnZhbGlkT2lkLCBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKKwkJCQlnZXR0ZXh0X25vb3Ao IkxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieSByZXF1aXJlcyB3YWxfbGV2ZWwgPj0gbG9n aWNhbCBvbiBtYXN0ZXIuIikpOworCiAJCUxXTG9ja0FjcXVpcmUoQ29udHJvbEZpbGVMb2Nr LCBMV19FWENMVVNJVkUpOwogCQlDb250cm9sRmlsZS0+TWF4Q29ubmVjdGlvbnMgPSB4bHJl Yy5NYXhDb25uZWN0aW9uczsKIAkJQ29udHJvbEZpbGUtPm1heF93b3JrZXJfcHJvY2Vzc2Vz ID0geGxyZWMubWF4X3dvcmtlcl9wcm9jZXNzZXM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3Rl bV92aWV3cy5zcWwKaW5kZXggNWYyNTQxZDMxNi4uMzc0MDA3ZGY5ZCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCisrKyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAtMTAxNSw3ICsxMDE1LDggQEAgQ1JFQVRF IFZJRVcgcGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMgQVMKICAgICAgICAgICAgIHBnX3N0 YXRfZ2V0X2RiX2NvbmZsaWN0X2xvY2soRC5vaWQpIEFTIGNvbmZsX2xvY2ssCiAgICAgICAg ICAgICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9zbmFwc2hvdChELm9pZCkgQVMgY29uZmxf c25hcHNob3QsCiAgICAgICAgICAgICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9idWZmZXJw aW4oRC5vaWQpIEFTIGNvbmZsX2J1ZmZlcnBpbiwKLSAgICAgICAgICAgIHBnX3N0YXRfZ2V0 X2RiX2NvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2soRC5vaWQpIEFTIGNvbmZsX2RlYWRsb2Nr CisgICAgICAgICAgICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9zdGFydHVwX2RlYWRsb2Nr KEQub2lkKSBBUyBjb25mbF9kZWFkbG9jaywKKyAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2Ri X2NvbmZsaWN0X2xvZ2ljYWxzbG90KEQub2lkKSBBUyBjb25mbF9sb2dpY2Fsc2xvdAogICAg IEZST00gcGdfZGF0YWJhc2UgRDsKIAogQ1JFQVRFIFZJRVcgcGdfc3RhdF91c2VyX2Z1bmN0 aW9ucyBBUwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ3N0YXQuYyBi L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdzdGF0LmMKaW5kZXggNWJhNzc2ZTc4OS4uMDNj NWRiZWE0OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ3N0YXQuYwor KysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bnc3RhdC5jCkBAIC0yOTI4LDYgKzI5Mjgs MjQgQEAgcGdzdGF0X3NlbmRfYXJjaGl2ZXIoY29uc3QgY2hhciAqeGxvZywgYm9vbCBmYWls ZWQpCiAJcGdzdGF0X3NlbmQoJm1zZywgc2l6ZW9mKG1zZykpOwogfQogCisvKiAtLS0tLS0t LS0tCisgKiBwZ3N0YXRfc2VuZF9kcm9wbG9naWNhbHNsb3QoKSAtCisgKgorICoJVGVsbCB0 aGUgY29sbGVjdG9yIGFib3V0IGEgbG9naWNhbCBzbG90IGJlaW5nIGRyb3BwZWQKKyAqCWR1 ZSB0byBjb25mbGljdC4KKyAqIC0tLS0tLS0tLS0KKyAqLwordm9pZAorcGdzdGF0X3NlbmRf ZHJvcGxvZ2ljYWxzbG90KE9pZCBkYk9pZCkKK3sKKwlQZ1N0YXRfTXNnUmVjb3ZlcnlDb25m bGljdCBtc2c7CisKKwlwZ3N0YXRfc2V0aGVhZGVyKCZtc2cubV9oZHIsIFBHU1RBVF9NVFlQ RV9SRUNPVkVSWUNPTkZMSUNUKTsKKwltc2cubV9kYXRhYmFzZWlkID0gZGJPaWQ7CisJbXNn Lm1fcmVhc29uID0gUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVDsKKwlw Z3N0YXRfc2VuZCgmbXNnLCBzaXplb2YobXNnKSk7Cit9CisKIC8qIC0tLS0tLS0tLS0KICAq IHBnc3RhdF9zZW5kX2Jnd3JpdGVyKCkgLQogICoKQEAgLTM0MDIsNiArMzQyMCw3IEBAIHJl c2V0X2RiZW50cnlfY291bnRlcnMoUGdTdGF0X1N0YXREQkVudHJ5ICpkYmVudHJ5KQogCWRi ZW50cnktPm5fY29uZmxpY3RfdGFibGVzcGFjZSA9IDA7CiAJZGJlbnRyeS0+bl9jb25mbGlj dF9sb2NrID0gMDsKIAlkYmVudHJ5LT5uX2NvbmZsaWN0X3NuYXBzaG90ID0gMDsKKwlkYmVu dHJ5LT5uX2NvbmZsaWN0X2xvZ2ljYWxzbG90ID0gMDsKIAlkYmVudHJ5LT5uX2NvbmZsaWN0 X2J1ZmZlcnBpbiA9IDA7CiAJZGJlbnRyeS0+bl9jb25mbGljdF9zdGFydHVwX2RlYWRsb2Nr ID0gMDsKIAlkYmVudHJ5LT5uX3RlbXBfZmlsZXMgPSAwOwpAQCAtNTI5MCw2ICs1MzA5LDkg QEAgcGdzdGF0X3JlY3ZfcmVjb3Zlcnljb25mbGljdChQZ1N0YXRfTXNnUmVjb3ZlcnlDb25m bGljdCAqbXNnLCBpbnQgbGVuKQogCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1Rf U05BUFNIT1Q6CiAJCQlkYmVudHJ5LT5uX2NvbmZsaWN0X3NuYXBzaG90Kys7CiAJCQlicmVh azsKKwkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9UOgorCQkJ ZGJlbnRyeS0+bl9jb25mbGljdF9sb2dpY2Fsc2xvdCsrOworCQkJYnJlYWs7CiAJCWNhc2Ug UFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9CVUZGRVJQSU46CiAJCQlkYmVudHJ5LT5uX2Nv bmZsaWN0X2J1ZmZlcnBpbisrOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9zbG90LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMK aW5kZXggMmVjNzEyNzk0Ny4uNDk0NWRkMWE0ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vc2xvdC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3Qu YwpAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInJl cGxpY2F0aW9uL3Nsb3QuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCisjaW5jbHVkZSAi c3RvcmFnZS9sb2NrLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9wcm9jYXJyYXkuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgpAQCAt MTAzLDYgKzEwNCw3IEBAIHN0YXRpYyBpbnQgUmVwbGljYXRpb25TbG90QWNxdWlyZUludGVy bmFsKFJlcGxpY2F0aW9uU2xvdCAqc2xvdCwKIAkJCQkJCQkJCQkgIGNvbnN0IGNoYXIgKm5h bWUsIFNsb3RBY3F1aXJlQmVoYXZpb3IgYmVoYXZpb3IpOwogc3RhdGljIHZvaWQgUmVwbGlj YXRpb25TbG90RHJvcEFjcXVpcmVkKHZvaWQpOwogc3RhdGljIHZvaWQgUmVwbGljYXRpb25T bG90RHJvcFB0cihSZXBsaWNhdGlvblNsb3QgKnNsb3QpOworc3RhdGljIHZvaWQgUmVwbGlj YXRpb25TbG90RHJvcENvbmZsaWN0aW5nKFJlcGxpY2F0aW9uU2xvdCAqc2xvdCk7CiAKIC8q IGludGVybmFsIHBlcnNpc3RlbmN5IGZ1bmN0aW9ucyAqLwogc3RhdGljIHZvaWQgUmVzdG9y ZVNsb3RGcm9tRGlzayhjb25zdCBjaGFyICpuYW1lKTsKQEAgLTcxOSw2ICs3MjEsNzAgQEAg UmVwbGljYXRpb25TbG90RHJvcFB0cihSZXBsaWNhdGlvblNsb3QgKnNsb3QpCiAJTFdMb2Nr UmVsZWFzZShSZXBsaWNhdGlvblNsb3RBbGxvY2F0aW9uTG9jayk7CiB9CiAKKy8qCisgKiBQ ZXJtYW5lbnRseSBkcm9wIGEgY29uZmxpY3RpbmcgcmVwbGljYXRpb24gc2xvdC4gSWYgaXQn cyBhbHJlYWR5IGFjdGl2ZSBieQorICogYW5vdGhlciBiYWNrZW5kLCBzZW5kIGl0IGEgcmVj b3ZlcnkgY29uZmxpY3Qgc2lnbmFsLCBhbmQgdGhlbiB0cnkgYWdhaW4uCisgKi8KK3N0YXRp YyB2b2lkCitSZXBsaWNhdGlvblNsb3REcm9wQ29uZmxpY3RpbmcoUmVwbGljYXRpb25TbG90 ICpzbG90KQoreworCXBpZF90CQlhY3RpdmVfcGlkOworCVBHUFJPQwkgICAqcHJvYzsKKwlW aXJ0dWFsVHJhbnNhY3Rpb25JZAl2eGlkOworCWJvb2wgaW5pdGlhbGx5X25vdF9hY3RpdmU7 CisKKwlDb25kaXRpb25WYXJpYWJsZVByZXBhcmVUb1NsZWVwKCZzbG90LT5hY3RpdmVfY3Yp OworCWluaXRpYWxseV9ub3RfYWN0aXZlID0gdHJ1ZTsKKwl3aGlsZSAoMSkKKwl7CisJCVNw aW5Mb2NrQWNxdWlyZSgmc2xvdC0+bXV0ZXgpOworCQlhY3RpdmVfcGlkID0gc2xvdC0+YWN0 aXZlX3BpZDsKKwkJaWYgKGFjdGl2ZV9waWQgPT0gMCkKKwkJCWFjdGl2ZV9waWQgPSBzbG90 LT5hY3RpdmVfcGlkID0gTXlQcm9jUGlkOworCQlTcGluTG9ja1JlbGVhc2UoJnNsb3QtPm11 dGV4KTsKKworCQkvKiBEcm9wIHRoZSBhY3F1aXJlZCBzbG90LCB1bmxlc3MgaXQgaXMgYWNx dWlyZWQgYnkgYW5vdGhlciBiYWNrZW5kICovCisJCWlmIChhY3RpdmVfcGlkID09IE15UHJv Y1BpZCkKKwkJeworCQkJZWxvZyhERUJVRzEsICJhY3F1aXJlZCBjb25mbGljdGluZyBzbG90 LCBub3cgZHJvcHBpbmcgaXQiKTsKKwkJCWlmIChpbml0aWFsbHlfbm90X2FjdGl2ZSkKKwkJ CQlwZ3N0YXRfc2VuZF9kcm9wbG9naWNhbHNsb3Qoc2xvdC0+ZGF0YS5kYXRhYmFzZSk7CisJ CQlSZXBsaWNhdGlvblNsb3REcm9wUHRyKHNsb3QpOworCQkJYnJlYWs7CisJCX0KKworCQkv KiBzbG90IHdhcyBhY3RpdmUgKi8KKwkJaW5pdGlhbGx5X25vdF9hY3RpdmUgPSBmYWxzZTsK KworCQkvKiBTZW5kIHRoZSBvdGhlciBiYWNrZW5kLCBhIGNvbmZsaWN0IHJlY292ZXJ5IHNp Z25hbCAqLworCQlTZXRJbnZhbGlkVmlydHVhbFRyYW5zYWN0aW9uSWQodnhpZCk7CisJCUxX TG9ja0FjcXVpcmUoUHJvY0FycmF5TG9jaywgTFdfU0hBUkVEKTsKKwkJcHJvYyA9IEJhY2tl bmRQaWRHZXRQcm9jV2l0aExvY2soYWN0aXZlX3BpZCk7CisJCWlmIChwcm9jKQorCQkJR0VU X1ZYSURfRlJPTV9QR1BST0ModnhpZCwgKnByb2MpOworCQlMV0xvY2tSZWxlYXNlKFByb2NB cnJheUxvY2spOworCisJCS8qCisJCSAqIElmIGNvaW5jaWRlbnRseSB0aGF0IHByb2Nlc3Mg ZmluaXNoZWQsIHNvbWUgb3RoZXIgYmFja2VuZCBtYXkKKwkJICogYWNxdWlyZSB0aGUgc2xv dCBhZ2Fpbi4gU28gc3RhcnQgb3ZlciBhZ2Fpbi4KKwkJICogTm90ZTogRXZlbiBpZiB2eGlk LmxvY2FsVHJhbnNhY3Rpb25JZCBpcyBpbnZhbGlkLCB3ZSBuZWVkIHRvIGNhbmNlbAorCQkg KiB0aGF0IGJhY2tlbmQsIGJlY2F1c2UgdGhlcmUgaXMgbm8gb3RoZXIgd2F5IHRvIG1ha2Ug aXQgcmVsZWFzZSB0aGUKKwkJICogc2xvdC4gU28gZG9uJ3QgYm90aGVyIHRvIHZhbGlkYXRl IHZ4aWQubG9jYWxUcmFuc2FjdGlvbklkLgorCQkgKi8KKwkJaWYgKHZ4aWQuYmFja2VuZElk ID09IEludmFsaWRCYWNrZW5kSWQpCisJCQljb250aW51ZTsKKworCQllbG9nKERFQlVHMSwg ImNhbmNlbGxpbmcgcGlkICVkIChiYWNrZW5kSWQ6ICVkKSBmb3IgcmVsZWFzaW5nIHNsb3Qi LAorCQkJCQkgYWN0aXZlX3BpZCwgdnhpZC5iYWNrZW5kSWQpOworCisJCUNhbmNlbFZpcnR1 YWxUcmFuc2FjdGlvbih2eGlkLCBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lDQUxT TE9UKTsKKwkJQ29uZGl0aW9uVmFyaWFibGVTbGVlcCgmc2xvdC0+YWN0aXZlX2N2LAorCQkJ CQkJCSAgIFdBSVRfRVZFTlRfUkVQTElDQVRJT05fU0xPVF9EUk9QKTsKKwl9CisKKwlDb25k aXRpb25WYXJpYWJsZUNhbmNlbFNsZWVwKCk7Cit9CisKIC8qCiAgKiBTZXJpYWxpemUgdGhl IGN1cnJlbnRseSBhY3F1aXJlZCBzbG90J3Mgc3RhdGUgZnJvbSBtZW1vcnkgdG8gZGlzaywg dGhlcmVieQogICogZ3VhcmFudGVlaW5nIHRoZSBjdXJyZW50IHN0YXRlIHdpbGwgc3Vydml2 ZSBhIGNyYXNoLgpAQCAtMTE3Myw2ICsxMjM5LDEyMyBAQCBSZXBsaWNhdGlvblNsb3RSZXNl cnZlV2FsKHZvaWQpCiAJfQogfQogCisvKgorICogUmVzb2x2ZSByZWNvdmVyeSBjb25mbGlj dHMgd2l0aCBsb2dpY2FsIHNsb3RzLgorICoKKyAqIFdoZW4geGlkIGlzIHZhbGlkLCBpdCBt ZWFucyB0aGF0IHJvd3Mgb2xkZXIgdGhhbiB4aWQgbWlnaHQgaGF2ZSBiZWVuCisgKiByZW1v dmVkLiBUaGVyZWZvcmUgd2UgbmVlZCB0byBkcm9wIHNsb3RzIHRoYXQgZGVwZW5kIG9uIHNl ZWluZyB0aG9zZSByb3dzLgorICogV2hlbiB4aWQgaXMgaW52YWxpZCwgZHJvcCBhbGwgbG9n aWNhbCBzbG90cy4gVGhpcyBpcyByZXF1aXJlZCB3aGVuIHRoZQorICogbWFzdGVyIHdhbF9s ZXZlbCBpcyBzZXQgYmFjayB0byByZXBsaWNhLCBzbyBleGlzdGluZyBsb2dpY2FsIHNsb3Rz IG5lZWQgdG8KKyAqIGJlIGRyb3BwZWQuIEFsc28sIHdoZW4geGlkIGlzIGludmFsaWQsIGEg Y29tbW9uICdjb25mbGljdF9yZWFzb24nIGlzCisgKiBwcm92aWRlZCBmb3IgdGhlIGVycm9y IGRldGFpbDsgb3RoZXJ3aXNlIGl0IGlzIE5VTEwsIGluIHdoaWNoIGNhc2UgaXQgaXMKKyAq IGNvbnN0cnVjdGVkIG91dCBvZiB0aGUgeGlkIHZhbHVlLgorICovCit2b2lkCitSZXNvbHZl UmVjb3ZlcnlDb25mbGljdFdpdGhMb2dpY2FsU2xvdHMoT2lkIGRib2lkLCBUcmFuc2FjdGlv bklkIHhpZCwKKwkJCQkJCQkJCQljaGFyICpjb25mbGljdF9yZWFzb24pCit7CisJaW50CQkJ aTsKKwlib29sCQlmb3VuZF9jb25mbGljdCA9IGZhbHNlOworCisJQXNzZXJ0KG1heF9yZXBs aWNhdGlvbl9zbG90cyA+PSAwKTsKKworCWlmIChtYXhfcmVwbGljYXRpb25fc2xvdHMgPT0g MCkKKwkJcmV0dXJuOworCityZXN0YXJ0OgorCWlmIChmb3VuZF9jb25mbGljdCkKKwl7CisJ CUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJCWZvdW5kX2NvbmZsaWN0ID0gZmFsc2U7CisJ fQorCisJTFdMb2NrQWNxdWlyZShSZXBsaWNhdGlvblNsb3RDb250cm9sTG9jaywgTFdfU0hB UkVEKTsKKwlmb3IgKGkgPSAwOyBpIDwgbWF4X3JlcGxpY2F0aW9uX3Nsb3RzOyBpKyspCisJ eworCQlSZXBsaWNhdGlvblNsb3QgKnM7CisKKwkJcyA9ICZSZXBsaWNhdGlvblNsb3RDdGwt PnJlcGxpY2F0aW9uX3Nsb3RzW2ldOworCisJCS8qIGNhbm5vdCBjaGFuZ2Ugd2hpbGUgUmVw bGljYXRpb25TbG90Q3RsTG9jayBpcyBoZWxkICovCisJCWlmICghcy0+aW5fdXNlKQorCQkJ Y29udGludWU7CisKKwkJLyogV2UgYXJlIG9ubHkgZGVhbGluZyB3aXRoICpsb2dpY2FsKiBz bG90IGNvbmZsaWN0cy4gKi8KKwkJaWYgKCFTbG90SXNMb2dpY2FsKHMpKQorCQkJY29udGlu dWU7CisKKwkJLyogSW52YWxpZCB4aWQgbWVhbnMgY2FsbGVyIGlzIGFza2luZyB0byBkcm9w IGFsbCBsb2dpY2FsIHNsb3RzICovCisJCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlk KSkKKwkJCWZvdW5kX2NvbmZsaWN0ID0gdHJ1ZTsKKwkJZWxzZQorCQl7CisJCQlUcmFuc2Fj dGlvbklkIHNsb3RfeG1pbjsKKwkJCVRyYW5zYWN0aW9uSWQgc2xvdF9jYXRhbG9nX3htaW47 CisJCQlTdHJpbmdJbmZvRGF0YQljb25mbGljdF9zdHIsIGNvbmZsaWN0X3htaW5zOworCQkJ Y2hhcgkgICAqY29uZmxpY3Rfc2VudGVuY2UgPQorCQkJCWdldHRleHRfbm9vcCgiU2xvdCBj b25mbGljdGVkIHdpdGggeGlkIGhvcml6b24gd2hpY2ggd2FzIGJlaW5nIGluY3JlYXNlZCB0 byIpOworCisJCQkvKiBub3Qgb3VyIGRhdGFiYXNlLCBza2lwICovCisJCQlpZiAocy0+ZGF0 YS5kYXRhYmFzZSAhPSBJbnZhbGlkT2lkICYmIHMtPmRhdGEuZGF0YWJhc2UgIT0gZGJvaWQp CisJCQkJY29udGludWU7CisKKwkJCVNwaW5Mb2NrQWNxdWlyZSgmcy0+bXV0ZXgpOworCQkJ c2xvdF94bWluID0gcy0+ZGF0YS54bWluOworCQkJc2xvdF9jYXRhbG9nX3htaW4gPSBzLT5k YXRhLmNhdGFsb2dfeG1pbjsKKwkJCVNwaW5Mb2NrUmVsZWFzZSgmcy0+bXV0ZXgpOworCisJ CQkvKgorCQkJICogQnVpbGQgdGhlIGNvbmZsaWN0X3N0ciB3aGljaCB3aWxsIGxvb2sgbGlr ZSA6CisJCQkgKiAiU2xvdCBjb25mbGljdGVkIHdpdGggeGlkIGhvcml6b24gd2hpY2ggd2Fz IGJlaW5nIGluY3JlYXNlZAorCQkJICogdG8gOTAxMiAoc2xvdCB4bWluOiAxMjM0LCBzbG90 IGNhdGFsb2dfeG1pbjogNTY3OCkuIgorCQkJICovCisJCQlpbml0U3RyaW5nSW5mbygmY29u ZmxpY3RfeG1pbnMpOworCQkJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHNsb3RfeG1pbikg JiYKKwkJCQlUcmFuc2FjdGlvbklkUHJlY2VkZXNPckVxdWFscyhzbG90X3htaW4sIHhpZCkp CisJCQl7CisJCQkJYXBwZW5kU3RyaW5nSW5mbygmY29uZmxpY3RfeG1pbnMsICJzbG90IHht aW46ICVkIiwgc2xvdF94bWluKTsKKwkJCX0KKwkJCWlmIChUcmFuc2FjdGlvbklkSXNWYWxp ZChzbG90X2NhdGFsb2dfeG1pbikgJiYKKwkJCQlUcmFuc2FjdGlvbklkUHJlY2VkZXNPckVx dWFscyhzbG90X2NhdGFsb2dfeG1pbiwgeGlkKSkKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKCZj b25mbGljdF94bWlucywgIiVzc2xvdCBjYXRhbG9nX3htaW46ICVkIiwKKwkJCQkJCQkJIGNv bmZsaWN0X3htaW5zLmxlbiA+IDAgPyAiLCAiIDogIiIsCisJCQkJCQkJCSBzbG90X2NhdGFs b2dfeG1pbik7CisKKwkJCWlmIChjb25mbGljdF94bWlucy5sZW4gPiAwKQorCQkJeworCQkJ CWluaXRTdHJpbmdJbmZvKCZjb25mbGljdF9zdHIpOworCQkJCWFwcGVuZFN0cmluZ0luZm8o JmNvbmZsaWN0X3N0ciwgIiVzICVkICglcykuIiwKKwkJCQkJCQkJIGNvbmZsaWN0X3NlbnRl bmNlLCB4aWQsIGNvbmZsaWN0X3htaW5zLmRhdGEpOworCQkJCWZvdW5kX2NvbmZsaWN0ID0g dHJ1ZTsKKwkJCQljb25mbGljdF9yZWFzb24gPSBjb25mbGljdF9zdHIuZGF0YTsKKwkJCX0K KwkJfQorCisJCWlmIChmb3VuZF9jb25mbGljdCkKKwkJeworCQkJTmFtZURhdGEJc2xvdG5h bWU7CisKKwkJCVNwaW5Mb2NrQWNxdWlyZSgmcy0+bXV0ZXgpOworCQkJc2xvdG5hbWUgPSBz LT5kYXRhLm5hbWU7CisJCQlTcGluTG9ja1JlbGVhc2UoJnMtPm11dGV4KTsKKworCQkJLyog UmVwbGljYXRpb25TbG90RHJvcENvbmZsaWN0aW5nKCkgd2lsbCBhY3F1aXJlIHRoZSBsb2Nr IGJlbG93ICovCisJCQlMV0xvY2tSZWxlYXNlKFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2Nr KTsKKworCQkJUmVwbGljYXRpb25TbG90RHJvcENvbmZsaWN0aW5nKHMpOworCisJCQllcmVw b3J0KExPRywKKwkJCQkJKGVycm1zZygiZHJvcHBlZCBjb25mbGljdGluZyBzbG90ICVzIiwg TmFtZVN0cihzbG90bmFtZSkpLAorCQkJCQkgZXJyZGV0YWlsKCIlcyIsIGNvbmZsaWN0X3Jl YXNvbikpKTsKKworCQkJLyogV2UgcmVsZWFzZWQgdGhlIGxvY2sgYWJvdmU7IHNvIHJlLXNj YW4gdGhlIHNsb3RzLiAqLworCQkJZ290byByZXN0YXJ0OworCQl9CisJfQorCisJTFdMb2Nr UmVsZWFzZShSZXBsaWNhdGlvblNsb3RDb250cm9sTG9jayk7Cit9CisKIC8qCiAgKiBNYXJr IGFueSBzbG90IHRoYXQgcG9pbnRzIHRvIGFuIExTTiBvbGRlciB0aGFuIHRoZSBnaXZlbiBz ZWdtZW50CiAgKiBhcyBpbnZhbGlkOyBpdCByZXF1aXJlcyBXQUwgdGhhdCdzIGFib3V0IHRv IGJlIHJlbW92ZWQuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9j YXJyYXkuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jCmluZGV4IGUx MTNhODVhZWQuLjkwNTQ3MTVlODIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3Byb2NhcnJheS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJh eS5jCkBAIC0zMzcyLDYgKzMzNzIsMTAgQEAgU2lnbmFsVmlydHVhbFRyYW5zYWN0aW9uKFZp cnR1YWxUcmFuc2FjdGlvbklkIHZ4aWQsIFByb2NTaWduYWxSZWFzb24gc2lnbW9kZSwKIAog CQlHRVRfVlhJRF9GUk9NX1BHUFJPQyhwcm9jdnhpZCwgKnByb2MpOwogCisJCS8qCisJCSAq IE5vdGU6IHZ4aWQubG9jYWxUcmFuc2FjdGlvbklkIGNhbiBiZSBpbnZhbGlkLCB3aGljaCBt ZWFucyB0aGUKKwkJICogcmVxdWVzdCBpcyB0byBzaWduYWwgdGhlIHBpZCB0aGF0IGlzIG5v dCBydW5uaW5nIGEgdHJhbnNhY3Rpb24uCisJCSAqLwogCQlpZiAocHJvY3Z4aWQuYmFja2Vu ZElkID09IHZ4aWQuYmFja2VuZElkICYmCiAJCQlwcm9jdnhpZC5sb2NhbFRyYW5zYWN0aW9u SWQgPT0gdnhpZC5sb2NhbFRyYW5zYWN0aW9uSWQpCiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3Byb2NzaWduYWwuYwppbmRleCBlYWM2ODk1MTQxLi5hM2ZhNmJkYzAxIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKKysrIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCkBAIC02NzMsNiArNjczLDkgQEAgcHJv Y3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIoU0lHTkFMX0FSR1MpCiAJaWYgKENoZWNrUHJvY1Np Z25hbChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9UKSkKIAkJUmVjb3ZlcnlD b25mbGljdEludGVycnVwdChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9UKTsK IAorCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJ Q0FMU0xPVCkpCisJCVJlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUFJPQ1NJR19SRUNPVkVS WV9DT05GTElDVF9MT0dJQ0FMU0xPVCk7CisKIAlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NT SUdfUkVDT1ZFUllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFETE9DSykpCiAJCVJlY292ZXJ5Q29u ZmxpY3RJbnRlcnJ1cHQoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURM T0NLKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5j IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCmluZGV4IDE0NjVlZTQ0YTEu LmQxNTVhMWRlMjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5k YnkuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKQEAgLTIzLDYg KzIzLDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2luc2VydC5oIgogI2luY2x1ZGUgIm1p c2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9u L3Nsb3QuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvbG1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgpAQCAtNDQwLDcgKzQ0MSw4 IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFZpcnR1YWxYSURzKFZpcnR1YWxUcmFu c2FjdGlvbklkICp3YWl0bGlzdCwKIH0KIAogdm9pZAotUmVzb2x2ZVJlY292ZXJ5Q29uZmxp Y3RXaXRoU25hcHNob3QoVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVkWGlkLCBSZWxGaWxl Tm9kZSBub2RlKQorUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoVHJhbnNh Y3Rpb25JZCBsYXRlc3RSZW1vdmVkWGlkLAorCQkJCQkJCQkJYm9vbCBvbkNhdGFsb2dUYWJs ZSwgUmVsRmlsZU5vZGUgbm9kZSkKIHsKIAlWaXJ0dWFsVHJhbnNhY3Rpb25JZCAqYmFja2Vu ZHM7CiAKQEAgLTQ2NSw2ICs0NjcsOSBAQCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhT bmFwc2hvdChUcmFuc2FjdGlvbklkIGxhdGVzdFJlbW92ZWRYaWQsIFJlbEZpbGVOb2RlCiAJ CQkJCQkJCQkJICAgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVCwKIAkJCQkJ CQkJCQkgICBXQUlUX0VWRU5UX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9ULAogCQkJCQkJ CQkJCSAgIHRydWUpOworCisJaWYgKG9uQ2F0YWxvZ1RhYmxlKQorCQlSZXNvbHZlUmVjb3Zl cnlDb25mbGljdFdpdGhMb2dpY2FsU2xvdHMobm9kZS5kYk5vZGUsIGxhdGVzdFJlbW92ZWRY aWQsIE5VTEwpOwogfQogCiAvKgpAQCAtNDczLDcgKzQ3OCw3IEBAIFJlc29sdmVSZWNvdmVy eUNvbmZsaWN0V2l0aFNuYXBzaG90KFRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZCwg UmVsRmlsZU5vZGUKICAqLwogdm9pZAogUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25h cHNob3RGdWxsWGlkKEZ1bGxUcmFuc2FjdGlvbklkIGxhdGVzdFJlbW92ZWRGdWxsWGlkLAot CQkJCQkJCQkJCSAgIFJlbEZpbGVOb2RlIG5vZGUpCisJCQkJCQkJCQkJICAgYm9vbCBvbkNh dGFsb2dUYWJsZSwgUmVsRmlsZU5vZGUgbm9kZSkKIHsKIAkvKgogCSAqIFJlc29sdmVSZWNv dmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90IG9wZXJhdGVzIG9uIDMyLWJpdCBUcmFuc2FjdGlv bklkcywKQEAgLTQ5MSw3ICs0OTYsNyBAQCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhT bmFwc2hvdEZ1bGxYaWQoRnVsbFRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZEZ1bGxYaQog CQlUcmFuc2FjdGlvbklkIGxhdGVzdFJlbW92ZWRYaWQ7CiAKIAkJbGF0ZXN0UmVtb3ZlZFhp ZCA9IFhpZEZyb21GdWxsVHJhbnNhY3Rpb25JZChsYXRlc3RSZW1vdmVkRnVsbFhpZCk7Ci0J CVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KGxhdGVzdFJlbW92ZWRYaWQs IG5vZGUpOworCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdChsYXRlc3RS ZW1vdmVkWGlkLCBvbkNhdGFsb2dUYWJsZSwgbm9kZSk7CiAJfQogfQogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3Rn cmVzLmMKaW5kZXggMzMwZWM1YjAyOC4uYzVlZGI3ZjRmNyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMu YwpAQCAtMjQ0MSw2ICsyNDQxLDkgQEAgZXJyZGV0YWlsX3JlY292ZXJ5X2NvbmZsaWN0KHZv aWQpCiAJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVDoKIAkJCWVy cmRldGFpbCgiVXNlciBxdWVyeSBtaWdodCBoYXZlIG5lZWRlZCB0byBzZWUgcm93IHZlcnNp b25zIHRoYXQgbXVzdCBiZSByZW1vdmVkLiIpOwogCQkJYnJlYWs7CisJCWNhc2UgUFJPQ1NJ R19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVDoKKwkJCWVycmRldGFpbCgiVXNlciB3 YXMgdXNpbmcgdGhlIGxvZ2ljYWwgc2xvdCB0aGF0IG11c3QgYmUgZHJvcHBlZC4iKTsKKwkJ CWJyZWFrOwogCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFE TE9DSzoKIAkJCWVycmRldGFpbCgiVXNlciB0cmFuc2FjdGlvbiBjYXVzZWQgYnVmZmVyIGRl YWRsb2NrIHdpdGggcmVjb3ZlcnkuIik7CiAJCQlicmVhazsKQEAgLTMwMTEsNiArMzAxNCwy NSBAQCBSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFByb2NTaWduYWxSZWFzb24gcmVhc29u KQogCQkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPQ0s6CiAJCQljYXNlIFBS T0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfVEFCTEVTUEFDRToKIAkJCWNhc2UgUFJPQ1NJR19S RUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVDoKKwkJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9D T05GTElDVF9MT0dJQ0FMU0xPVDoKKwkJCQkvKgorCQkJCSAqIEZvciBjb25mbGljdHMgdGhh dCByZXF1aXJlIGEgbG9naWNhbCBzbG90IHRvIGJlIGRyb3BwZWQsIHRoZQorCQkJCSAqIHJl cXVpcmVtZW50IGlzIGZvciB0aGUgc2lnbmFsIHJlY2VpdmVyIHRvIHJlbGVhc2UgdGhlIHNs b3QsCisJCQkJICogc28gdGhhdCBpdCBjb3VsZCBiZSBkcm9wcGVkIGJ5IHRoZSBzaWduYWwg c2VuZGVyLiBTbyBmb3IKKwkJCQkgKiBub3JtYWwgYmFja2VuZHMsIHRoZSB0cmFuc2FjdGlv biBzaG91bGQgYmUgYWJvcnRlZCwganVzdAorCQkJCSAqIGxpa2UgZm9yIG90aGVyIHJlY292 ZXJ5IGNvbmZsaWN0cy4gQnV0IGlmIGl0J3Mgd2Fsc2VuZGVyIG9uCisJCQkJICogc3RhbmRi eSwgdGhlbiBpdCBoYXMgdG8gYmUga2lsbGVkIHNvIGFzIHRvIHJlbGVhc2UgYW4KKwkJCQkg KiBhY3F1aXJlZCBsb2dpY2FsIHNsb3QuCisJCQkJICovCisJCQkJaWYgKGFtX2Nhc2NhZGlu Z193YWxzZW5kZXIgJiYKKwkJCQkJcmVhc29uID09IFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJ Q1RfTE9HSUNBTFNMT1QgJiYKKwkJCQkJTXlSZXBsaWNhdGlvblNsb3QgJiYgU2xvdElzTG9n aWNhbChNeVJlcGxpY2F0aW9uU2xvdCkpCisJCQkJeworCQkJCQlSZWNvdmVyeUNvbmZsaWN0 UGVuZGluZyA9IHRydWU7CisJCQkJCVF1ZXJ5Q2FuY2VsUGVuZGluZyA9IHRydWU7CisJCQkJ CUludGVycnVwdFBlbmRpbmcgPSB0cnVlOworCQkJCQlicmVhazsKKwkJCQl9CiAKIAkJCQkv KgogCQkJCSAqIElmIHdlIGFyZW4ndCBpbiBhIHRyYW5zYWN0aW9uIGFueSBsb25nZXIgdGhl biBpZ25vcmUuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVu Y3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCmluZGV4IDlmZmJj YTY4NWMuLmZlN2YzMTA1ZjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9w Z3N0YXRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5j CkBAIC0xNDk0LDYgKzE0OTQsMjEgQEAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc25hcHNo b3QoUEdfRlVOQ1RJT05fQVJHUykKIAlQR19SRVRVUk5fSU5UNjQocmVzdWx0KTsKIH0KIAor RGF0dW0KK3BnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xvZ2ljYWxzbG90KFBHX0ZVTkNUSU9O X0FSR1MpCit7CisJT2lkCQkJZGJpZCA9IFBHX0dFVEFSR19PSUQoMCk7CisJaW50NjQJCXJl c3VsdDsKKwlQZ1N0YXRfU3RhdERCRW50cnkgKmRiZW50cnk7CisKKwlpZiAoKGRiZW50cnkg PSBwZ3N0YXRfZmV0Y2hfc3RhdF9kYmVudHJ5KGRiaWQpKSA9PSBOVUxMKQorCQlyZXN1bHQg PSAwOworCWVsc2UKKwkJcmVzdWx0ID0gKGludDY0KSAoZGJlbnRyeS0+bl9jb25mbGljdF9s b2dpY2Fsc2xvdCk7CisKKwlQR19SRVRVUk5fSU5UNjQocmVzdWx0KTsKK30KKwogRGF0dW0K IHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2J1ZmZlcnBpbihQR19GVU5DVElPTl9BUkdTKQog ewpAQCAtMTUzNyw2ICsxNTUyLDcgQEAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfYWxsKFBH X0ZVTkNUSU9OX0FSR1MpCiAJCXJlc3VsdCA9IChpbnQ2NCkgKGRiZW50cnktPm5fY29uZmxp Y3RfdGFibGVzcGFjZSArCiAJCQkJCQkgIGRiZW50cnktPm5fY29uZmxpY3RfbG9jayArCiAJ CQkJCQkgIGRiZW50cnktPm5fY29uZmxpY3Rfc25hcHNob3QgKworCQkJCQkJICBkYmVudHJ5 LT5uX2NvbmZsaWN0X2xvZ2ljYWxzbG90ICsKIAkJCQkJCSAgZGJlbnRyeS0+bl9jb25mbGlj dF9idWZmZXJwaW4gKwogCQkJCQkJICBkYmVudHJ5LT5uX2NvbmZsaWN0X3N0YXJ0dXBfZGVh ZGxvY2spOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0 IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCA0MzA5ZmE0MGRkLi4z YWZlNTQyODY0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0 CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTU0MzIsNiArNTQz MiwxMSBAQAogICBwcm9uYW1lID0+ICdwZ19zdGF0X2dldF9kYl9jb25mbGljdF9zbmFwc2hv dCcsIHByb3ZvbGF0aWxlID0+ICdzJywKICAgcHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0 eXBlID0+ICdpbnQ4JywgcHJvYXJndHlwZXMgPT4gJ29pZCcsCiAgIHByb3NyYyA9PiAncGdf c3RhdF9nZXRfZGJfY29uZmxpY3Rfc25hcHNob3QnIH0sCit7IG9pZCA9PiAnNDU0NCcsCisg IGRlc2NyID0+ICdzdGF0aXN0aWNzOiByZWNvdmVyeSBjb25mbGljdHMgaW4gZGF0YWJhc2Ug Y2F1c2VkIGJ5IGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCcsCisgIHByb25hbWUgPT4gJ3Bn X3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xvZ2ljYWxzbG90JywgcHJvdm9sYXRpbGUgPT4gJ3Mn LAorICBwcm9wYXJhbGxlbCA9PiAncicsIHByb3JldHR5cGUgPT4gJ2ludDgnLCBwcm9hcmd0 eXBlcyA9PiAnb2lkJywKKyAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9kYl9jb25mbGljdF9s b2dpY2Fsc2xvdCcgfSwKIHsgb2lkID0+ICczMDY4JywKICAgZGVzY3IgPT4gJ3N0YXRpc3Rp Y3M6IHJlY292ZXJ5IGNvbmZsaWN0cyBpbiBkYXRhYmFzZSBjYXVzZWQgYnkgc2hhcmVkIGJ1 ZmZlciBwaW4nLAogICBwcm9uYW1lID0+ICdwZ19zdGF0X2dldF9kYl9jb25mbGljdF9idWZm ZXJwaW4nLCBwcm92b2xhdGlsZSA9PiAncycsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9w Z3N0YXQuaCBiL3NyYy9pbmNsdWRlL3Bnc3RhdC5oCmluZGV4IDdjZDEzNzUwNmUuLjE5ZDEz Y2FhYjUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Bnc3RhdC5oCisrKyBiL3NyYy9pbmNs dWRlL3Bnc3RhdC5oCkBAIC03MTksNiArNzE5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0 X1N0YXREQkVudHJ5CiAJUGdTdGF0X0NvdW50ZXIgbl9jb25mbGljdF90YWJsZXNwYWNlOwog CVBnU3RhdF9Db3VudGVyIG5fY29uZmxpY3RfbG9jazsKIAlQZ1N0YXRfQ291bnRlciBuX2Nv bmZsaWN0X3NuYXBzaG90OworCVBnU3RhdF9Db3VudGVyIG5fY29uZmxpY3RfbG9naWNhbHNs b3Q7CiAJUGdTdGF0X0NvdW50ZXIgbl9jb25mbGljdF9idWZmZXJwaW47CiAJUGdTdGF0X0Nv dW50ZXIgbl9jb25mbGljdF9zdGFydHVwX2RlYWRsb2NrOwogCVBnU3RhdF9Db3VudGVyIG5f dGVtcF9maWxlczsKQEAgLTEwNjQsNiArMTA2NSw3IEBAIGV4dGVybiB2b2lkIHBnc3RhdF90 d29waGFzZV9wb3N0YWJvcnQoVHJhbnNhY3Rpb25JZCB4aWQsIHVpbnQxNiBpbmZvLAogCQkJ CQkJCQkJICB2b2lkICpyZWNkYXRhLCB1aW50MzIgbGVuKTsKIAogZXh0ZXJuIHZvaWQgcGdz dGF0X3NlbmRfYXJjaGl2ZXIoY29uc3QgY2hhciAqeGxvZywgYm9vbCBmYWlsZWQpOworZXh0 ZXJuIHZvaWQgcGdzdGF0X3NlbmRfZHJvcGxvZ2ljYWxzbG90KE9pZCBkYk9pZCk7CiBleHRl cm4gdm9pZCBwZ3N0YXRfc2VuZF9iZ3dyaXRlcih2b2lkKTsKIGV4dGVybiB2b2lkIHBnc3Rh dF9yZXBvcnRfd2FsKHZvaWQpOwogZXh0ZXJuIGJvb2wgcGdzdGF0X3NlbmRfd2FsKGJvb2wg Zm9yY2UpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oIGIv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCmluZGV4IDFhZDVlNmM1MGQuLmI2ZTVm ZmZmNzkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaAorKysg Yi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmgKQEAgLTIzMiw0ICsyMzIsNiBAQCBl eHRlcm4gdm9pZCBDaGVja1BvaW50UmVwbGljYXRpb25TbG90cyh2b2lkKTsKIAogZXh0ZXJu IHZvaWQgQ2hlY2tTbG90UmVxdWlyZW1lbnRzKHZvaWQpOwogCitleHRlcm4gdm9pZCBSZXNv bHZlUmVjb3ZlcnlDb25mbGljdFdpdGhMb2dpY2FsU2xvdHMoT2lkIGRib2lkLCBUcmFuc2Fj dGlvbklkIHhpZCwgY2hhciAqcmVhc29uKTsKKwogI2VuZGlmCQkJCQkJCS8qIFNMT1RfSCAq LwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmggYi9zcmMv aW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaAppbmRleCBlZWMxODZiZTJlLi5mODZiMDcw ZGJjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaAorKysg Yi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaApAQCAtNDEsNiArNDEsNyBAQCB0 eXBlZGVmIGVudW0KIAlQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1RBQkxFU1BBQ0UsCiAJ UFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0NLLAogCVBST0NTSUdfUkVDT1ZFUllfQ09O RkxJQ1RfU05BUFNIT1QsCisJUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xP VCwKIAlQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0JVRkZFUlBJTiwKIAlQUk9DU0lHX1JF Q09WRVJZX0NPTkZMSUNUX1NUQVJUVVBfREVBRExPQ0ssCiAKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdGFuZGJ5 LmgKaW5kZXggMzhmZDg1YTQzMS4uM2JhMTg4MjIxNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvc3RvcmFnZS9zdGFuZGJ5LmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdGFuZGJ5 LmgKQEAgLTMwLDkgKzMwLDkgQEAgZXh0ZXJuIHZvaWQgSW5pdFJlY292ZXJ5VHJhbnNhY3Rp b25FbnZpcm9ubWVudCh2b2lkKTsKIGV4dGVybiB2b2lkIFNodXRkb3duUmVjb3ZlcnlUcmFu c2FjdGlvbkVudmlyb25tZW50KHZvaWQpOwogCiBleHRlcm4gdm9pZCBSZXNvbHZlUmVjb3Zl cnlDb25mbGljdFdpdGhTbmFwc2hvdChUcmFuc2FjdGlvbklkIGxhdGVzdFJlbW92ZWRYaWQs Ci0JCQkJCQkJCQkJCQlSZWxGaWxlTm9kZSBub2RlKTsKKwkJCQkJCQkJCQkJCWJvb2wgb25D YXRhbG9nVGFibGUsIFJlbEZpbGVOb2RlIG5vZGUpOwogZXh0ZXJuIHZvaWQgUmVzb2x2ZVJl Y292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3RGdWxsWGlkKEZ1bGxUcmFuc2FjdGlvbklkIGxh dGVzdFJlbW92ZWRGdWxsWGlkLAotCQkJCQkJCQkJCQkJCSAgIFJlbEZpbGVOb2RlIG5vZGUp OworCQkJCQkJCQkJCQkJCSAgIGJvb2wgb25DYXRhbG9nVGFibGUsIFJlbEZpbGVOb2RlIG5v ZGUpOwogZXh0ZXJuIHZvaWQgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoVGFibGVzcGFj ZShPaWQgdHNpZCk7CiBleHRlcm4gdm9pZCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhE YXRhYmFzZShPaWQgZGJpZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQK aW5kZXggOWI1OWE3YjRhNS4uNTkxM2RjOTZiOSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9ydWxlcy5vdXQKQEAgLTE4NzAsNyArMTg3MCw4IEBAIHBnX3N0YXRfZGF0YWJhc2VfY29u ZmxpY3RzfCBTRUxFQ1QgZC5vaWQgQVMgZGF0aWQsCiAgICAgcGdfc3RhdF9nZXRfZGJfY29u ZmxpY3RfbG9jayhkLm9pZCkgQVMgY29uZmxfbG9jaywKICAgICBwZ19zdGF0X2dldF9kYl9j b25mbGljdF9zbmFwc2hvdChkLm9pZCkgQVMgY29uZmxfc25hcHNob3QsCiAgICAgcGdfc3Rh dF9nZXRfZGJfY29uZmxpY3RfYnVmZmVycGluKGQub2lkKSBBUyBjb25mbF9idWZmZXJwaW4s Ci0gICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayhkLm9pZCkg QVMgY29uZmxfZGVhZGxvY2sKKyAgICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9zdGFydHVw X2RlYWRsb2NrKGQub2lkKSBBUyBjb25mbF9kZWFkbG9jaywKKyAgICBwZ19zdGF0X2dldF9k Yl9jb25mbGljdF9sb2dpY2Fsc2xvdChkLm9pZCkgQVMgY29uZmxfbG9naWNhbHNsb3QKICAg IEZST00gcGdfZGF0YWJhc2UgZDsKIHBnX3N0YXRfZ3NzYXBpfCBTRUxFQ1Qgcy5waWQsCiAg ICAgcy5nc3NfYXV0aCBBUyBnc3NfYXV0aGVudGljYXRlZCwKLS0gCjIuMTguNAoK --------------F5E6E709001A4E566C6E418E Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v15-0002-Add-info-in-WAL-records-in-preparation-for-logic.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="v15-0002-Add-info-in-WAL-records-in-preparation-for-logic.pa"; filename*1="tch" RnJvbSA1NWJkNTU4ZGFiMzZlZWQyM2Q3NTg2YmEzNjQxMGUyZDI3MTJjODIxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA2IEFwciAyMDIxIDEyOjAyOjA1ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2MTUgMi81XSBBZGQgaW5mbyBpbiBXQUwgcmVjb3JkcyBpbiBwcmVwYXJhdGlvbiBmb3Ig bG9naWNhbAogc2xvdCBjb25mbGljdCBoYW5kbGluZy4KCldoZW4gYSBXQUwgcmVwbGF5IG9u IHN0YW5kYnkgaW5kaWNhdGVzIHRoYXQgYSBjYXRhbG9nIHRhYmxlIHR1cGxlIGlzCnRvIGJl IGRlbGV0ZWQgYnkgYW4geGlkIHRoYXQgaXMgZ3JlYXRlciB0aGFuIGEgbG9naWNhbCBzbG90 J3MKY2F0YWxvZ194bWluLCB0aGVuIHRoYXQgbWVhbnMgdGhlIHNsb3QncyBjYXRhbG9nX3ht aW4gY29uZmxpY3RzIHdpdGgKdGhlIHhpZCwgYW5kIHdlIG5lZWQgdG8gaGFuZGxlIHRoZSBj b25mbGljdC4gIFdoaWxlIHN1YnNlcXVlbnQgY29tbWl0cwp3aWxsIGRvIHRoZSBhY3R1YWwg Y29uZmxpY3QgaGFuZGxpbmcsIHRoaXMgY29tbWl0IGFkZHMgYSBuZXcgZmllbGQKb25DYXRh bG9nVGFibGUgaW4gc3VjaCBXQUwgcmVjb3JkcywgdGhhdCBpcyB0cnVlIGZvciBjYXRhbG9n IHRhYmxlcywKc28gYXMgdG8gYXJyYW5nZSBmb3IgY29uZmxpY3QgaGFuZGxpbmcuCgpBbmRy ZXMgRnJldW5kLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3QuYyAgICAgICAg ICB8ICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYyAgICAgfCAg MiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwuYyAgICAgIHwgIDQgKyst LQogc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYyAgICAgIHwgIDQgKysrLQog c3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGluc2VydC5jICAgIHwgIDIgKysKIHNyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICB8IDEwICsrKysrKystLS0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgICB8ICAyICstCiBzcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgfCAgMiArLQogc3JjL2JhY2tlbmQv YWNjZXNzL25idHJlZS9uYnRwYWdlLmMgICAgIHwgMTIgKysrKysrKysrLS0tCiBzcmMvYmFj a2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jICAgfCAgOCArKysrKysrKwogc3JjL2Jh Y2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMgICAgIHwgMTYgKysrKysrKysrKysrKysr Kwogc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3RfcHJpdmF0ZS5oICAgICAgIHwgIDYgKysrLS0t CiBzcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdHhsb2cuaCAgICAgICAgICAgfCAgMyArKy0KIHNy Yy9pbmNsdWRlL2FjY2Vzcy9oYXNoX3hsb2cuaCAgICAgICAgICB8ICAxICsKIHNyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oICAgICAgICB8ICA4ICsrKysrKy0tCiBzcmMvaW5j bHVkZS9hY2Nlc3MvbmJ0eGxvZy5oICAgICAgICAgICAgfCAgMiArKwogc3JjL2luY2x1ZGUv YWNjZXNzL3NwZ3hsb2cuaCAgICAgICAgICAgIHwgIDEgKwogc3JjL2luY2x1ZGUvdXRpbHMv bHN5c2NhY2hlLmggICAgICAgICAgIHwgIDEgKwogc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgg ICAgICAgICAgICAgICAgIHwgIDkgKysrKysrKysrCiAxOSBmaWxlcyBjaGFuZ2VkLCA3NiBp bnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKICAxNS41JSBzcmMvYmFja2VuZC9hY2Nl c3MvZ2lzdC8KICAxOS45JSBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC8KICAxMi42JSBzcmMv YmFja2VuZC9hY2Nlc3MvbmJ0cmVlLwogICA3LjclIHNyYy9iYWNrZW5kL2FjY2Vzcy9zcGdp c3QvCiAgIDYuOSUgc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvCiAgMjAuMiUgc3JjL2luY2x1 ZGUvYWNjZXNzLwogIDE0LjQlIHNyYy9pbmNsdWRlL3V0aWxzLwoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3QuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0 L2dpc3QuYwppbmRleCAwNjgzZjQyYzI1Li5iNmU2MzQwYzNjIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dp c3QvZ2lzdC5jCkBAIC0zNDgsNyArMzQ4LDcgQEAgZ2lzdHBsYWNldG9wYWdlKFJlbGF0aW9u IHJlbCwgU2l6ZSBmcmVlc3BhY2UsIEdJU1RTVEFURSAqZ2lzdHN0YXRlLAogCQlmb3IgKDsg cHRyOyBwdHIgPSBwdHItPm5leHQpCiAJCXsKIAkJCS8qIEFsbG9jYXRlIG5ldyBwYWdlICov Ci0JCQlwdHItPmJ1ZmZlciA9IGdpc3ROZXdCdWZmZXIocmVsKTsKKwkJCXB0ci0+YnVmZmVy ID0gZ2lzdE5ld0J1ZmZlcihoZWFwUmVsLCByZWwpOwogCQkJR0lTVEluaXRCdWZmZXIocHRy LT5idWZmZXIsIChpc19sZWFmKSA/IEZfTEVBRiA6IDApOwogCQkJcHRyLT5wYWdlID0gQnVm ZmVyR2V0UGFnZShwdHItPmJ1ZmZlcik7CiAJCQlwdHItPmJsb2NrLmJsa25vID0gQnVmZmVy R2V0QmxvY2tOdW1iZXIocHRyLT5idWZmZXIpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0 YnVpbGQuYwppbmRleCAxMDU0ZjZmMWYyLi44YjA2NGYzMmFhIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvZ2lzdC9naXN0YnVpbGQuYwpAQCAtMjkwLDcgKzI5MCw3IEBAIGdpc3RidWlsZChSZWxh dGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJCVBh Z2UJCXBhZ2U7CiAKIAkJLyogaW5pdGlhbGl6ZSB0aGUgcm9vdCBwYWdlICovCi0JCWJ1ZmZl ciA9IGdpc3ROZXdCdWZmZXIoaW5kZXgpOworCQlidWZmZXIgPSBnaXN0TmV3QnVmZmVyKGhl YXAsIGluZGV4KTsKIAkJQXNzZXJ0KEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZlcikgPT0g R0lTVF9ST09UX0JMS05PKTsKIAkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R1dGlsLmMKaW5kZXggMWZmMWJmODE2Zi4uMWM4OTAy OGE3ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0dXRpbC5jCkBAIC04MjMsNyArODIz LDcgQEAgZ2lzdGNoZWNrcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYpCiAgKiBDYWxs ZXIgaXMgcmVzcG9uc2libGUgZm9yIGluaXRpYWxpemluZyB0aGUgcGFnZSBieSBjYWxsaW5n IEdJU1RJbml0QnVmZmVyCiAgKi8KIEJ1ZmZlcgotZ2lzdE5ld0J1ZmZlcihSZWxhdGlvbiBy KQorZ2lzdE5ld0J1ZmZlcihSZWxhdGlvbiBoZWFwUmVsLCBSZWxhdGlvbiByKQogewogCUJ1 ZmZlcgkJYnVmZmVyOwogCWJvb2wJCW5lZWRMb2NrOwpAQCAtODY3LDcgKzg2Nyw3IEBAIGdp c3ROZXdCdWZmZXIoUmVsYXRpb24gcikKIAkJCQkgKiBwYWdlJ3MgZGVsZXRlWGlkLgogCQkJ CSAqLwogCQkJCWlmIChYTG9nU3RhbmRieUluZm9BY3RpdmUoKSAmJiBSZWxhdGlvbk5lZWRz V0FMKHIpKQotCQkJCQlnaXN0WExvZ1BhZ2VSZXVzZShyLCBibGtubywgR2lzdFBhZ2VHZXRE ZWxldGVYaWQocGFnZSkpOworCQkJCQlnaXN0WExvZ1BhZ2VSZXVzZShoZWFwUmVsLCByLCBi bGtubywgR2lzdFBhZ2VHZXREZWxldGVYaWQocGFnZSkpOwogCiAJCQkJcmV0dXJuIGJ1ZmZl cjsKIAkJCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9n LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jCmluZGV4IDFjODBlYWUw NDQuLjk3ZDgxNGI5MjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dp c3R4bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYwpAQCAt NTk2LDcgKzU5Niw4IEBAIGdpc3RYTG9nQXNzaWduTFNOKHZvaWQpCiAgKiBXcml0ZSBYTE9H IHJlY29yZCBhYm91dCByZXVzZSBvZiBhIGRlbGV0ZWQgcGFnZS4KICAqLwogdm9pZAotZ2lz dFhMb2dQYWdlUmV1c2UoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBibGtubywgRnVsbFRy YW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZCkKK2dpc3RYTG9nUGFnZVJldXNlKFJlbGF0 aW9uIGhlYXBSZWwsIFJlbGF0aW9uIHJlbCwKKwkJCQkgIEJsb2NrTnVtYmVyIGJsa25vLCBG dWxsVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVkWGlkKQogewogCWdpc3R4bG9nUGFnZVJl dXNlIHhscmVjX3JldXNlOwogCkBAIC02MDcsNiArNjA4LDcgQEAgZ2lzdFhMb2dQYWdlUmV1 c2UoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBibGtubywgRnVsbFRyYW5zYWN0aW9uSWQg bGF0ZXN0UmVtb3YKIAkgKi8KIAogCS8qIFhMT0cgc3R1ZmYgKi8KKwl4bHJlY19yZXVzZS5v bkNhdGFsb2dUYWJsZSA9IFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2Rpbmco aGVhcFJlbCk7CiAJeGxyZWNfcmV1c2Uubm9kZSA9IHJlbC0+cmRfbm9kZTsKIAl4bHJlY19y ZXVzZS5ibG9jayA9IGJsa25vOwogCXhscmVjX3JldXNlLmxhdGVzdFJlbW92ZWRGdWxsWGlk ID0gbGF0ZXN0UmVtb3ZlZFhpZDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o YXNoL2hhc2hpbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hpbnNlcnQu YwppbmRleCBkMjU0YTAwYjZhLi41NzExOTUyZmM3IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGFzaC9oYXNoaW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hh c2gvaGFzaGluc2VydC5jCkBAIC0xNyw2ICsxNyw3IEBACiAKICNpbmNsdWRlICJhY2Nlc3Mv aGFzaC5oIgogI2luY2x1ZGUgImFjY2Vzcy9oYXNoX3hsb2cuaCIKKyNpbmNsdWRlICJjYXRh bG9nL2NhdGFsb2cuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJzdG9y YWdlL2J1Zl9pbnRlcm5hbHMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2x3bG9jay5oIgpAQCAt Mzk4LDYgKzM5OSw3IEBAIF9oYXNoX3ZhY3V1bV9vbmVfcGFnZShSZWxhdGlvbiByZWwsIFJl bGF0aW9uIGhyZWwsIEJ1ZmZlciBtZXRhYnVmLCBCdWZmZXIgYnVmKQogCQkJeGxfaGFzaF92 YWN1dW1fb25lX3BhZ2UgeGxyZWM7CiAJCQlYTG9nUmVjUHRyCXJlY3B0cjsKIAorCQkJeGxy ZWMub25DYXRhbG9nVGFibGUgPSBSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29k aW5nKGhyZWwpOwogCQkJeGxyZWMubGF0ZXN0UmVtb3ZlZFhpZCA9IGxhdGVzdFJlbW92ZWRY aWQ7CiAJCQl4bHJlYy5udHVwbGVzID0gbmRlbGV0YWJsZTsKIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW0uYwppbmRleCA1OTUzMTBiYTFiLi5jZTZiNjZhYTU4IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW0uYwpAQCAtNzk2NCwxMiArNzk2NCwxMyBAQCBib3R0b211cF9zb3J0 X2FuZF9zaHJpbmsoVE1fSW5kZXhEZWxldGVPcCAqZGVsc3RhdGUpCiAgKiBzZWUgY29tbWVu dHMgZm9yIHZhY3V1bV9sb2dfY2xlYW51cF9pbmZvKCkuCiAgKi8KIFhMb2dSZWNQdHIKLWxv Z19oZWFwX2NsZWFudXBfaW5mbyhSZWxGaWxlTm9kZSBybm9kZSwgVHJhbnNhY3Rpb25JZCBs YXRlc3RSZW1vdmVkWGlkKQorbG9nX2hlYXBfY2xlYW51cF9pbmZvKFJlbGF0aW9uIHJlbCwg VHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVkWGlkKQogewogCXhsX2hlYXBfY2xlYW51cF9p bmZvIHhscmVjOwogCVhMb2dSZWNQdHIJcmVjcHRyOwogCi0JeGxyZWMubm9kZSA9IHJub2Rl OworCXhscmVjLm9uQ2F0YWxvZ1RhYmxlID0gUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2lj YWxEZWNvZGluZyhyZWwpOworCXhscmVjLm5vZGUgPSByZWwtPnJkX25vZGU7CiAJeGxyZWMu bGF0ZXN0UmVtb3ZlZFhpZCA9IGxhdGVzdFJlbW92ZWRYaWQ7CiAKIAlYTG9nQmVnaW5JbnNl cnQoKTsKQEAgLTgwMDUsNiArODAwNiw3IEBAIGxvZ19oZWFwX2NsZWFuKFJlbGF0aW9uIHJl bG4sIEJ1ZmZlciBidWZmZXIsCiAJLyogQ2FsbGVyIHNob3VsZCBub3QgY2FsbCBtZSBvbiBh IG5vbi1XQUwtbG9nZ2VkIHJlbGF0aW9uICovCiAJQXNzZXJ0KFJlbGF0aW9uTmVlZHNXQUwo cmVsbikpOwogCisJeGxyZWMub25DYXRhbG9nVGFibGUgPSBSZWxhdGlvbklzQWNjZXNzaWJs ZUluTG9naWNhbERlY29kaW5nKHJlbG4pOwogCXhscmVjLmxhdGVzdFJlbW92ZWRYaWQgPSBs YXRlc3RSZW1vdmVkWGlkOwogCXhscmVjLm5yZWRpcmVjdGVkID0gbnJlZGlyZWN0ZWQ7CiAJ eGxyZWMubmRlYWQgPSBuZGVhZDsKQEAgLTgwNTUsNiArODA1Nyw3IEBAIGxvZ19oZWFwX2Zy ZWV6ZShSZWxhdGlvbiByZWxuLCBCdWZmZXIgYnVmZmVyLCBUcmFuc2FjdGlvbklkIGN1dG9m Zl94aWQsCiAJLyogbm9yIHdoZW4gdGhlcmUgYXJlIG5vIHR1cGxlcyB0byBmcmVlemUgKi8K IAlBc3NlcnQobnR1cGxlcyA+IDApOwogCisJeGxyZWMub25DYXRhbG9nVGFibGUgPSBSZWxh dGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKHJlbG4pOwogCXhscmVjLmN1dG9m Zl94aWQgPSBjdXRvZmZfeGlkOwogCXhscmVjLm50dXBsZXMgPSBudHVwbGVzOwogCkBAIC04 MDg1LDcgKzgwODgsNyBAQCBsb2dfaGVhcF9mcmVlemUoUmVsYXRpb24gcmVsbiwgQnVmZmVy IGJ1ZmZlciwgVHJhbnNhY3Rpb25JZCBjdXRvZmZfeGlkLAogICogaGVhcF9idWZmZXIsIGlm IG5lY2Vzc2FyeS4KICAqLwogWExvZ1JlY1B0cgotbG9nX2hlYXBfdmlzaWJsZShSZWxGaWxl Tm9kZSBybm9kZSwgQnVmZmVyIGhlYXBfYnVmZmVyLCBCdWZmZXIgdm1fYnVmZmVyLAorbG9n X2hlYXBfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBoZWFwX2J1ZmZlciwgQnVmZmVy IHZtX2J1ZmZlciwKIAkJCQkgVHJhbnNhY3Rpb25JZCBjdXRvZmZfeGlkLCB1aW50OCB2bWZs YWdzKQogewogCXhsX2hlYXBfdmlzaWJsZSB4bHJlYzsKQEAgLTgwOTUsNiArODA5OCw3IEBA IGxvZ19oZWFwX3Zpc2libGUoUmVsRmlsZU5vZGUgcm5vZGUsIEJ1ZmZlciBoZWFwX2J1ZmZl ciwgQnVmZmVyIHZtX2J1ZmZlciwKIAlBc3NlcnQoQnVmZmVySXNWYWxpZChoZWFwX2J1ZmZl cikpOwogCUFzc2VydChCdWZmZXJJc1ZhbGlkKHZtX2J1ZmZlcikpOwogCisJeGxyZWMub25D YXRhbG9nVGFibGUgPSBSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKHJl bCk7CiAJeGxyZWMuY3V0b2ZmX3hpZCA9IGN1dG9mZl94aWQ7CiAJeGxyZWMuZmxhZ3MgPSB2 bWZsYWdzOwogCVhMb2dCZWdpbkluc2VydCgpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFj dXVtbGF6eS5jCmluZGV4IGMyNTk2OTNhOGIuLjRiNTVlZjlkMjAgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTgwNCw3ICs4MDQsNyBAQCB2YWN1dW1fbG9n X2NsZWFudXBfaW5mbyhMVlJlbFN0YXRlICp2YWNyZWwpCiAJICogTm8gbmVlZCB0byB3cml0 ZSB0aGUgcmVjb3JkIGF0IGFsbCB1bmxlc3MgaXQgY29udGFpbnMgYSB2YWxpZCB2YWx1ZQog CSAqLwogCWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZCh2YWNyZWwtPmxhdGVzdFJlbW92ZWRY aWQpKQotCQkodm9pZCkgbG9nX2hlYXBfY2xlYW51cF9pbmZvKHZhY3JlbC0+cmVsLT5yZF9u b2RlLAorCQkodm9pZCkgbG9nX2hlYXBfY2xlYW51cF9pbmZvKHZhY3JlbC0+cmVsLAogCQkJ CQkJCQkJIHZhY3JlbC0+bGF0ZXN0UmVtb3ZlZFhpZCk7CiB9CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYwppbmRleCBlMTk4ZGY2NWQ4Li42ZTg5YTA4YzUy IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCkBAIC0yODIs NyArMjgyLDcgQEAgdmlzaWJpbGl0eW1hcF9zZXQoUmVsYXRpb24gcmVsLCBCbG9ja051bWJl ciBoZWFwQmxrLCBCdWZmZXIgaGVhcEJ1ZiwKIAkJCWlmIChYTG9nUmVjUHRySXNJbnZhbGlk KHJlY3B0cikpCiAJCQl7CiAJCQkJQXNzZXJ0KCFJblJlY292ZXJ5KTsKLQkJCQlyZWNwdHIg PSBsb2dfaGVhcF92aXNpYmxlKHJlbC0+cmRfbm9kZSwgaGVhcEJ1Ziwgdm1CdWYsCisJCQkJ cmVjcHRyID0gbG9nX2hlYXBfdmlzaWJsZShyZWwsIGhlYXBCdWYsIHZtQnVmLAogCQkJCQkJ CQkJCSAgY3V0b2ZmX3hpZCwgZmxhZ3MpOwogCiAJCQkJLyoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25i dHJlZS9uYnRwYWdlLmMKaW5kZXggZWY0ODY3OWNjMi4uZWJkMzU1MjFiNSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRwYWdlLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL25idHJlZS9uYnRwYWdlLmMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRl ICJ1dGlscy9tZW1kZWJ1Zy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5j bHVkZSAidXRpbHMvc25hcG1nci5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgog CiBzdGF0aWMgQlRNZXRhUGFnZURhdGEgKl9idF9nZXRtZXRhKFJlbGF0aW9uIHJlbCwgQnVm ZmVyIG1ldGFidWYpOwogc3RhdGljIHZvaWQgX2J0X2xvZ19yZXVzZV9wYWdlKFJlbGF0aW9u IHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sCkBAIC00Myw3ICs0NCw4IEBAIHN0YXRpYyB2b2lk IF9idF9sb2dfcmV1c2VfcGFnZShSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGJsa25vLAog c3RhdGljIHZvaWQgX2J0X2RlbGl0ZW1zX2RlbGV0ZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBi dWYsCiAJCQkJCQkJCVRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZCwKIAkJCQkJCQkJ T2Zmc2V0TnVtYmVyICpkZWxldGFibGUsIGludCBuZGVsZXRhYmxlLAotCQkJCQkJCQlCVFZh Y3V1bVBvc3RpbmcgKnVwZGF0YWJsZSwgaW50IG51cGRhdGFibGUpOworCQkJCQkJCQlCVFZh Y3V1bVBvc3RpbmcgKnVwZGF0YWJsZSwgaW50IG51cGRhdGFibGUsCisJCQkJCQkJCVJlbGF0 aW9uIGhlYXBSZWwpOwogc3RhdGljIGNoYXIgKl9idF9kZWxpdGVtc191cGRhdGUoQlRWYWN1 dW1Qb3N0aW5nICp1cGRhdGFibGUsIGludCBudXBkYXRhYmxlLAogCQkJCQkJCQkgT2Zmc2V0 TnVtYmVyICp1cGRhdGVkb2Zmc2V0cywKIAkJCQkJCQkJIFNpemUgKnVwZGF0ZWRidWZsZW4s IGJvb2wgbmVlZHN3YWwpOwpAQCAtODM2LDYgKzgzOCw3IEBAIF9idF9sb2dfcmV1c2VfcGFn ZShSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBGdWxsVHJhbnNhY3Rpb25JZCBz YWZleGlkKQogCSAqLwogCiAJLyogWExPRyBzdHVmZiAqLworCXhscmVjX3JldXNlLm9uQ2F0 YWxvZ1RhYmxlID0gZ2V0X3JlbF9sb2dpY2FsX2NhdGFsb2cocmVsLT5yZF9pbmRleC0+aW5k cmVsaWQpOwogCXhscmVjX3JldXNlLm5vZGUgPSByZWwtPnJkX25vZGU7CiAJeGxyZWNfcmV1 c2UuYmxvY2sgPSBibGtubzsKIAl4bHJlY19yZXVzZS5sYXRlc3RSZW1vdmVkRnVsbFhpZCA9 IHNhZmV4aWQ7CkBAIC0xMjk2LDcgKzEyOTksOCBAQCBfYnRfZGVsaXRlbXNfdmFjdXVtKFJl bGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKIHN0YXRpYyB2b2lkCiBfYnRfZGVsaXRlbXNfZGVs ZXRlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwgVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1v dmVkWGlkLAogCQkJCQlPZmZzZXROdW1iZXIgKmRlbGV0YWJsZSwgaW50IG5kZWxldGFibGUs Ci0JCQkJCUJUVmFjdXVtUG9zdGluZyAqdXBkYXRhYmxlLCBpbnQgbnVwZGF0YWJsZSkKKwkJ CQkJQlRWYWN1dW1Qb3N0aW5nICp1cGRhdGFibGUsIGludCBudXBkYXRhYmxlLAorCQkJCQlS ZWxhdGlvbiBoZWFwUmVsKQogewogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1Zik7 CiAJQlRQYWdlT3BhcXVlIG9wYXF1ZTsKQEAgLTEzNTgsNiArMTM2Miw4IEBAIF9idF9kZWxp dGVtc19kZWxldGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLCBUcmFuc2FjdGlvbklkIGxh dGVzdFJlbW92ZWRYaWQsCiAJCVhMb2dSZWNQdHIJcmVjcHRyOwogCQl4bF9idHJlZV9kZWxl dGUgeGxyZWNfZGVsZXRlOwogCisJCXhscmVjX2RlbGV0ZS5vbkNhdGFsb2dUYWJsZSA9CisJ CQlSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKGhlYXBSZWwpOwogCQl4 bHJlY19kZWxldGUubGF0ZXN0UmVtb3ZlZFhpZCA9IGxhdGVzdFJlbW92ZWRYaWQ7CiAJCXhs cmVjX2RlbGV0ZS5uZGVsZXRlZCA9IG5kZWxldGFibGU7CiAJCXhscmVjX2RlbGV0ZS5udXBk YXRlZCA9IG51cGRhdGFibGU7CkBAIC0xNjg1LDcgKzE2OTEsNyBAQCBfYnRfZGVsaXRlbXNf ZGVsZXRlX2NoZWNrKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwgUmVsYXRpb24gaGVhcFJl bCwKIAogCS8qIFBoeXNpY2FsbHkgZGVsZXRlIHR1cGxlcyAob3IgVElEcykgdXNpbmcgZGVs ZXRhYmxlIChvciB1cGRhdGFibGUpICovCiAJX2J0X2RlbGl0ZW1zX2RlbGV0ZShyZWwsIGJ1 ZiwgbGF0ZXN0UmVtb3ZlZFhpZCwgZGVsZXRhYmxlLCBuZGVsZXRhYmxlLAotCQkJCQkJdXBk YXRhYmxlLCBudXBkYXRhYmxlKTsKKwkJCQkJCXVwZGF0YWJsZSwgbnVwZGF0YWJsZSwgaGVh cFJlbCk7CiAKIAkvKiBiZSB0aWR5ICovCiAJZm9yIChpbnQgaSA9IDA7IGkgPCBudXBkYXRh YmxlOyBpKyspCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3Zh Y3V1bS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYwppbmRleCA3 NmZiMDM3NGM0Li4zMTg2ODg1ZDE0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv c3BnaXN0L3NwZ3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3Bn dmFjdXVtLmMKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2luZGV4ZnNt LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1n ci5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogCiAKIC8qIEVudHJ5IGluIHBl bmRpbmctbGlzdCBvZiBUSURzIHdlIG5lZWQgdG8gcmV2aXNpdCAqLwpAQCAtNTAzLDYgKzUw NCwxMyBAQCB2YWN1dW1SZWRpcmVjdEFuZFBsYWNlaG9sZGVyKFJlbGF0aW9uIGluZGV4LCBC dWZmZXIgYnVmZmVyKQogCXNwZ3hsb2dWYWN1dW1SZWRpcmVjdCB4bHJlYzsKIAlHbG9iYWxW aXNTdGF0ZSAqdmlzdGVzdDsKIAorCS8qCisJICogVGhlcmUgaXMgbm8gY2hhbmNlIG9mIGVu ZGxlc3MgcmVjdXJzaW9uIGV2ZW4gd2hlbiB3ZSBhcmUgZG9pbmcgY2F0YWxvZworCSAqIGFj Y2VzZXMgaGVyZTsgYmVjYXVzZSwgc3BnaXN0IGlzIG5ldmVyIHVzZWQgZm9yIGNhdGFsb2dz LiBDaGVjaworCSAqIGNvbW1lbnRzIGluIFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2Fs RGVjb2RpbmcoKS4KKwkgKi8KKwl4bHJlYy5vbkNhdGFsb2dUYWJsZSA9IGdldF9yZWxfbG9n aWNhbF9jYXRhbG9nKGluZGV4LT5yZF9pbmRleC0+aW5kcmVsaWQpOworCiAJeGxyZWMublRv UGxhY2Vob2xkZXIgPSAwOwogCXhscmVjLm5ld2VzdFJlZGlyZWN0WGlkID0gSW52YWxpZFRy YW5zYWN0aW9uSWQ7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xz eXNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKaW5kZXgg NmJiYTVmOGVjNC4uOTBmYTVkZmM3YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvbHN5c2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2Nh Y2hlLmMKQEAgLTE4LDcgKzE4LDkgQEAKICNpbmNsdWRlICJhY2Nlc3MvaGFzaC5oIgogI2lu Y2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKICNpbmNsdWRlICJhY2Nlc3MvbmJ0cmVl LmgiCisjaW5jbHVkZSAiYWNjZXNzL3RhYmxlLmgiCiAjaW5jbHVkZSAiYm9vdHN0cmFwL2Jv b3RzdHJhcC5oIgorI2luY2x1ZGUgImNhdGFsb2cvY2F0YWxvZy5oIgogI2luY2x1ZGUgImNh dGFsb2cvbmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19hbS5oIgogI2luY2x1 ZGUgImNhdGFsb2cvcGdfYW1vcC5oIgpAQCAtMjA2Miw2ICsyMDY0LDIwIEBAIGdldF9yZWxf cGVyc2lzdGVuY2UoT2lkIHJlbGlkKQogCXJldHVybiByZXN1bHQ7CiB9CiAKK2Jvb2wKK2dl dF9yZWxfbG9naWNhbF9jYXRhbG9nKE9pZCByZWxpZCkKK3sKKwlib29sCXJlczsKKwlSZWxh dGlvbiByZWw7CisKKwkvKiBhc3N1bWUgcHJldmlvdXNseSBsb2NrZWQgKi8KKwlyZWwgPSB0 YWJsZV9vcGVuKHJlbGlkLCBOb0xvY2spOworCXJlcyA9IFJlbGF0aW9uSXNBY2Nlc3NpYmxl SW5Mb2dpY2FsRGVjb2RpbmcocmVsKTsKKwl0YWJsZV9jbG9zZShyZWwsIE5vTG9jayk7CisK KwlyZXR1cm4gcmVzOworfQorCiAKIC8qCQkJCS0tLS0tLS0tLS0gVFJBTlNGT1JNIENBQ0hF IC0tLS0tLS0tLS0JCQkJCQkgKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNz L2dpc3RfcHJpdmF0ZS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3RfcHJpdmF0ZS5oCmlu ZGV4IDU1M2QzNjRlMmQuLmEwZjQwMTU1NTYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9naXN0X3ByaXZhdGUuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdF9wcml2 YXRlLmgKQEAgLTQ0MCw4ICs0NDAsOCBAQCBleHRlcm4gWExvZ1JlY1B0ciBnaXN0WExvZ1Bh Z2VEZWxldGUoQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkJCSBGdWxsVHJhbnNhY3Rpb25JZCB4 aWQsIEJ1ZmZlciBwYXJlbnRCdWZmZXIsCiAJCQkJCQkJCQkgT2Zmc2V0TnVtYmVyIGRvd25s aW5rT2Zmc2V0KTsKIAotZXh0ZXJuIHZvaWQgZ2lzdFhMb2dQYWdlUmV1c2UoUmVsYXRpb24g cmVsLCBCbG9ja051bWJlciBibGtubywKLQkJCQkJCQkgIEZ1bGxUcmFuc2FjdGlvbklkIGxh dGVzdFJlbW92ZWRYaWQpOworZXh0ZXJuIHZvaWQgZ2lzdFhMb2dQYWdlUmV1c2UoUmVsYXRp b24gaGVhcFJlbCwgUmVsYXRpb24gcmVsLAorCQkJCSAgQmxvY2tOdW1iZXIgYmxrbm8sIEZ1 bGxUcmFuc2FjdGlvbklkIGxhdGVzdFJlbW92ZWRYaWQpOwogCiBleHRlcm4gWExvZ1JlY1B0 ciBnaXN0WExvZ1VwZGF0ZShCdWZmZXIgYnVmZmVyLAogCQkJCQkJCQkgT2Zmc2V0TnVtYmVy ICp0b2RlbGV0ZSwgaW50IG50b2RlbGV0ZSwKQEAgLTQ4NSw3ICs0ODUsNyBAQCBleHRlcm4g Ym9vbCBnaXN0cHJvcGVydHkoT2lkIGluZGV4X29pZCwgaW50IGF0dG5vLAogZXh0ZXJuIGJv b2wgZ2lzdGZpdHBhZ2UoSW5kZXhUdXBsZSAqaXR2ZWMsIGludCBsZW4pOwogZXh0ZXJuIGJv b2wgZ2lzdG5vc3BhY2UoUGFnZSBwYWdlLCBJbmRleFR1cGxlICppdHZlYywgaW50IGxlbiwg T2Zmc2V0TnVtYmVyIHRvZGVsZXRlLCBTaXplIGZyZWVzcGFjZSk7CiBleHRlcm4gdm9pZCBn aXN0Y2hlY2twYWdlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1Zik7Ci1leHRlcm4gQnVmZmVy IGdpc3ROZXdCdWZmZXIoUmVsYXRpb24gcik7CitleHRlcm4gQnVmZmVyIGdpc3ROZXdCdWZm ZXIoUmVsYXRpb24gaGVhcFJlbCwgUmVsYXRpb24gcik7CiBleHRlcm4gYm9vbCBnaXN0UGFn ZVJlY3ljbGFibGUoUGFnZSBwYWdlKTsKIGV4dGVybiB2b2lkIGdpc3RmaWxsYnVmZmVyKFBh Z2UgcGFnZSwgSW5kZXhUdXBsZSAqaXR1cCwgaW50IGxlbiwKIAkJCQkJCSAgIE9mZnNldE51 bWJlciBvZmYpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3R4bG9nLmgg Yi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdHhsb2cuaAppbmRleCBmZDUxNDRmMjU4Li43Mzk5 OWRkYzcwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdHhsb2cuaAorKysg Yi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdHhsb2cuaApAQCAtNDksOSArNDksOSBAQCB0eXBl ZGVmIHN0cnVjdCBnaXN0eGxvZ1BhZ2VVcGRhdGUKICAqLwogdHlwZWRlZiBzdHJ1Y3QgZ2lz dHhsb2dEZWxldGUKIHsKKwlib29sCQlvbkNhdGFsb2dUYWJsZTsKIAlUcmFuc2FjdGlvbklk IGxhdGVzdFJlbW92ZWRYaWQ7CiAJdWludDE2CQludG9kZWxldGU7CQkvKiBudW1iZXIgb2Yg ZGVsZXRlZCBvZmZzZXRzICovCi0KIAkvKgogCSAqIEluIHBheWxvYWQgb2YgYmxrIDAgOiB0 b2RlbGV0ZSBPZmZzZXROdW1iZXJzCiAJICovCkBAIC05Nyw2ICs5Nyw3IEBAIHR5cGVkZWYg c3RydWN0IGdpc3R4bG9nUGFnZURlbGV0ZQogICovCiB0eXBlZGVmIHN0cnVjdCBnaXN0eGxv Z1BhZ2VSZXVzZQogeworCWJvb2wJCW9uQ2F0YWxvZ1RhYmxlOwogCVJlbEZpbGVOb2RlIG5v ZGU7CiAJQmxvY2tOdW1iZXIgYmxvY2s7CiAJRnVsbFRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVt b3ZlZEZ1bGxYaWQ7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGFzaF94bG9n LmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGFzaF94bG9nLmgKaW5kZXggNDM1M2EzMmRiYi4u OTRjMzI5MmMxZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hhc2hfeGxvZy5o CisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oYXNoX3hsb2cuaApAQCAtMjUwLDYgKzI1MCw3 IEBAIHR5cGVkZWYgc3RydWN0IHhsX2hhc2hfaW5pdF9iaXRtYXBfcGFnZQogICovCiB0eXBl ZGVmIHN0cnVjdCB4bF9oYXNoX3ZhY3V1bV9vbmVfcGFnZQogeworCWJvb2wJCW9uQ2F0YWxv Z1RhYmxlOwogCVRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZDsKIAlpbnQJCQludHVw bGVzOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaCBi L3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCmluZGV4IDE3OGQ0OTcxMGEuLjZj NGMyNmMyZmUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5o CisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCkBAIC0yMzksNiArMjM5 LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF91cGRhdGUKICAqLwogdHlwZWRlZiBzdHJ1 Y3QgeGxfaGVhcF9jbGVhbgogeworCWJvb2wJCW9uQ2F0YWxvZ1RhYmxlOwogCVRyYW5zYWN0 aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZDsKIAl1aW50MTYJCW5yZWRpcmVjdGVkOwogCXVpbnQx NgkJbmRlYWQ7CkBAIC0yNTQsNiArMjU1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9j bGVhbgogICovCiB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX2NsZWFudXBfaW5mbwogeworCWJv b2wJCW9uQ2F0YWxvZ1RhYmxlOwogCVJlbEZpbGVOb2RlIG5vZGU7CiAJVHJhbnNhY3Rpb25J ZCBsYXRlc3RSZW1vdmVkWGlkOwogfSB4bF9oZWFwX2NsZWFudXBfaW5mbzsKQEAgLTMzNCw2 ICszMzYsNyBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX2ZyZWV6ZV90dXBsZQogICovCiB0 eXBlZGVmIHN0cnVjdCB4bF9oZWFwX2ZyZWV6ZV9wYWdlCiB7CisJYm9vbAkJb25DYXRhbG9n VGFibGU7CiAJVHJhbnNhY3Rpb25JZCBjdXRvZmZfeGlkOwogCXVpbnQxNgkJbnR1cGxlczsK IH0geGxfaGVhcF9mcmVlemVfcGFnZTsKQEAgLTM0OCw2ICszNTEsNyBAQCB0eXBlZGVmIHN0 cnVjdCB4bF9oZWFwX2ZyZWV6ZV9wYWdlCiAgKi8KIHR5cGVkZWYgc3RydWN0IHhsX2hlYXBf dmlzaWJsZQogeworCWJvb2wJCW9uQ2F0YWxvZ1RhYmxlOwogCVRyYW5zYWN0aW9uSWQgY3V0 b2ZmX3hpZDsKIAl1aW50OAkJZmxhZ3M7CiB9IHhsX2hlYXBfdmlzaWJsZTsKQEAgLTM5Nyw3 ICs0MDEsNyBAQCBleHRlcm4gdm9pZCBoZWFwMl9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9n UmVhZGVyU3RhdGUgKnJlY29yZCk7CiBleHRlcm4gY29uc3QgY2hhciAqaGVhcDJfaWRlbnRp ZnkodWludDggaW5mbyk7CiBleHRlcm4gdm9pZCBoZWFwX3hsb2dfbG9naWNhbF9yZXdyaXRl KFhMb2dSZWFkZXJTdGF0ZSAqcik7CiAKLWV4dGVybiBYTG9nUmVjUHRyIGxvZ19oZWFwX2Ns ZWFudXBfaW5mbyhSZWxGaWxlTm9kZSBybm9kZSwKK2V4dGVybiBYTG9nUmVjUHRyIGxvZ19o ZWFwX2NsZWFudXBfaW5mbyhSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJVHJhbnNhY3Rpb25J ZCBsYXRlc3RSZW1vdmVkWGlkKTsKIGV4dGVybiBYTG9nUmVjUHRyIGxvZ19oZWFwX2NsZWFu KFJlbGF0aW9uIHJlbG4sIEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkJCSBPZmZzZXROdW1iZXIg KnJlZGlyZWN0ZWQsIGludCBucmVkaXJlY3RlZCwKQEAgLTQxNiw3ICs0MjAsNyBAQCBleHRl cm4gYm9vbCBoZWFwX3ByZXBhcmVfZnJlZXplX3R1cGxlKEhlYXBUdXBsZUhlYWRlciB0dXBs ZSwKIAkJCQkJCQkJCSAgYm9vbCAqdG90YWxseV9mcm96ZW4pOwogZXh0ZXJuIHZvaWQgaGVh cF9leGVjdXRlX2ZyZWV6ZV90dXBsZShIZWFwVHVwbGVIZWFkZXIgdHVwbGUsCiAJCQkJCQkJ CQkgIHhsX2hlYXBfZnJlZXplX3R1cGxlICp4bHJlY190cCk7Ci1leHRlcm4gWExvZ1JlY1B0 ciBsb2dfaGVhcF92aXNpYmxlKFJlbEZpbGVOb2RlIHJub2RlLCBCdWZmZXIgaGVhcF9idWZm ZXIsCitleHRlcm4gWExvZ1JlY1B0ciBsb2dfaGVhcF92aXNpYmxlKFJlbGF0aW9uIHJlbCwg QnVmZmVyIGhlYXBfYnVmZmVyLAogCQkJCQkJCQkgICBCdWZmZXIgdm1fYnVmZmVyLCBUcmFu c2FjdGlvbklkIGN1dG9mZl94aWQsIHVpbnQ4IGZsYWdzKTsKIAogI2VuZGlmCQkJCQkJCS8q IEhFQVBBTV9YTE9HX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnR4 bG9nLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0eGxvZy5oCmluZGV4IDBmNzczMTg1NmIu LmIxNWFhNDdmMWIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnR4bG9nLmgK KysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL25idHhsb2cuaApAQCAtMTg1LDYgKzE4NSw3IEBA IHR5cGVkZWYgc3RydWN0IHhsX2J0cmVlX2RlZHVwCiAgKi8KIHR5cGVkZWYgc3RydWN0IHhs X2J0cmVlX3JldXNlX3BhZ2UKIHsKKwlib29sICAgICAgICBvbkNhdGFsb2dUYWJsZTsKIAlS ZWxGaWxlTm9kZSBub2RlOwogCUJsb2NrTnVtYmVyIGJsb2NrOwogCUZ1bGxUcmFuc2FjdGlv bklkIGxhdGVzdFJlbW92ZWRGdWxsWGlkOwpAQCAtMjMyLDYgKzIzMyw3IEBAIHR5cGVkZWYg c3RydWN0IHhsX2J0cmVlX3ZhY3V1bQogCiB0eXBlZGVmIHN0cnVjdCB4bF9idHJlZV9kZWxl dGUKIHsKKwlib29sCQlvbkNhdGFsb2dUYWJsZTsKIAlUcmFuc2FjdGlvbklkIGxhdGVzdFJl bW92ZWRYaWQ7CiAJdWludDE2CQluZGVsZXRlZDsKIAl1aW50MTYJCW51cGRhdGVkOwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3NwZ3hsb2cuaCBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9zcGd4bG9nLmgKaW5kZXggNjk0MDViNTc1MC4uMDZiOTFmNGQwNCAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3NwZ3hsb2cuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nl c3Mvc3BneGxvZy5oCkBAIC0yMzcsNiArMjM3LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qgc3BneGxv Z1ZhY3V1bVJvb3QKIAogdHlwZWRlZiBzdHJ1Y3Qgc3BneGxvZ1ZhY3V1bVJlZGlyZWN0CiB7 CisJYm9vbAkJb25DYXRhbG9nVGFibGU7CiAJdWludDE2CQluVG9QbGFjZWhvbGRlcjsgLyog bnVtYmVyIG9mIHJlZGlyZWN0cyB0byBtYWtlIHBsYWNlaG9sZGVycyAqLwogCU9mZnNldE51 bWJlciBmaXJzdFBsYWNlaG9sZGVyOwkvKiBmaXJzdCBwbGFjZWhvbGRlciB0dXBsZSB0byBy ZW1vdmUgKi8KIAlUcmFuc2FjdGlvbklkIG5ld2VzdFJlZGlyZWN0WGlkOwkvKiBuZXdlc3Qg WElEIG9mIHJlbW92ZWQgcmVkaXJlY3RzICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91 dGlscy9sc3lzY2FjaGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCmluZGV4 IDc3ODcxYWFlZmMuLmUyYTVlZmVkMzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxz L2xzeXNjYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCkBAIC0x MzksNiArMTM5LDcgQEAgZXh0ZXJuIGNoYXIgZ2V0X3JlbF9yZWxraW5kKE9pZCByZWxpZCk7 CiBleHRlcm4gYm9vbCBnZXRfcmVsX3JlbGlzcGFydGl0aW9uKE9pZCByZWxpZCk7CiBleHRl cm4gT2lkCWdldF9yZWxfdGFibGVzcGFjZShPaWQgcmVsaWQpOwogZXh0ZXJuIGNoYXIgZ2V0 X3JlbF9wZXJzaXN0ZW5jZShPaWQgcmVsaWQpOworZXh0ZXJuIGJvb2wgZ2V0X3JlbF9sb2dp Y2FsX2NhdGFsb2coT2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJZ2V0X3RyYW5zZm9ybV9mcm9t c3FsKE9pZCB0eXBpZCwgT2lkIGxhbmdpZCwgTGlzdCAqdHJmdHlwZXMpOwogZXh0ZXJuIE9p ZAlnZXRfdHJhbnNmb3JtX3Rvc3FsKE9pZCB0eXBpZCwgT2lkIGxhbmdpZCwgTGlzdCAqdHJm dHlwZXMpOwogZXh0ZXJuIGJvb2wgZ2V0X3R5cGlzZGVmaW5lZChPaWQgdHlwaWQpOwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmggYi9zcmMvaW5jbHVkZS91dGlscy9y ZWwuaAppbmRleCA5YTNhMDNlNTIwLi4zNDA1MDcwZDYzIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS91dGlscy9yZWwuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaApAQCAtMTYs NiArMTYsNyBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL3R1cGRlc2MuaCIKICNpbmNsdWRlICJh Y2Nlc3MveGxvZy5oIgorI2luY2x1ZGUgImNhdGFsb2cvY2F0YWxvZy5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfY2xhc3MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2luZGV4LmgiCiAj aW5jbHVkZSAiY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oIgpAQCAtMzQ1LDYgKzM0Niw5IEBA IHR5cGVkZWYgc3RydWN0IFN0ZFJkT3B0aW9ucwogICogUmVsYXRpb25Jc1VzZWRBc0NhdGFs b2dUYWJsZQogICoJCVJldHVybnMgd2hldGhlciB0aGUgcmVsYXRpb24gc2hvdWxkIGJlIHRy ZWF0ZWQgYXMgYSBjYXRhbG9nIHRhYmxlCiAgKgkJZnJvbSB0aGUgcG92IG9mIGxvZ2ljYWwg ZGVjb2RpbmcuICBOb3RlIG11bHRpcGxlIGV2YWwgb2YgYXJndW1lbnQhCisgKgkJVGhpcyBk ZWZpbml0aW9uIHNob3VsZCBub3QgaW52b2tlIGFueXRoaW5nIHRoYXQgcGVyZm9ybXMgY2F0 YWxvZworICoJCWFjY2Vzczsgb3RoZXJ3aXNlIGl0IG1heSBjYXVzZSBpbmZpbml0ZSByZWN1 cnNpb24uIENoZWNrIHRoZSBjb21tZW50cworICoJCWluIFJlbGF0aW9uSXNBY2Nlc3NpYmxl SW5Mb2dpY2FsRGVjb2RpbmcoKSBmb3IgZGV0YWlscy4KICAqLwogI2RlZmluZSBSZWxhdGlv bklzVXNlZEFzQ2F0YWxvZ1RhYmxlKHJlbGF0aW9uKQlcCiAJKChyZWxhdGlvbiktPnJkX29w dGlvbnMgJiYgXApAQCAtNjIyLDYgKzYyNiwxMSBAQCB0eXBlZGVmIHN0cnVjdCBWaWV3T3B0 aW9ucwogICogUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZwogICoJCVRy dWUgaWYgd2UgbmVlZCB0byBsb2cgZW5vdWdoIGluZm9ybWF0aW9uIHRvIGhhdmUgYWNjZXNz IHZpYQogICoJCWRlY29kaW5nIHNuYXBzaG90LgorICoJCVRoaXMgZGVmaW5pdGlvbiBzaG91 bGQgbm90IGludm9rZSBhbnl0aGluZyB0aGF0IHBlcmZvcm1zIGNhdGFsb2cKKyAqCQlhY2Nl c3MuIE90aGVyd2lzZSwgZS5nLiBsb2dnaW5nIGEgV0FMIGVudHJ5IGZvciBjYXRhbG9nIHJl bGF0aW9uIG1heQorICoJCWludm9rZSB0aGlzIGZ1bmN0aW9uLCB3aGljaCB3aWxsIGluIHR1 cm4gZG8gY2F0YWxvZyBhY2Nlc3MsIHdoaWNoIG1heQorICoJCWluIHR1cm4gY2F1c2UgYW5v dGhlciBzaW1pbGFyIFdBTCBlbnRyeSB0byBiZSBsb2dnZWQsIGxlYWRpbmcgdG8KKyAqCQlp bmZpbml0ZSByZWN1cnNpb24uCiAgKi8KICNkZWZpbmUgUmVsYXRpb25Jc0FjY2Vzc2libGVJ bkxvZ2ljYWxEZWNvZGluZyhyZWxhdGlvbikgXAogCShYTG9nTG9naWNhbEluZm9BY3RpdmUo KSAmJiBcCi0tIAoyLjE4LjQKCg== --------------F5E6E709001A4E566C6E418E Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v15-0001-Allow-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v15-0001-Allow-logical-decoding-on-standby.patch" RnJvbSA4MjcyOTVmNzRhZmY5YzYyN2VlNzIyZjU0MWE2YzdjYzZkNDEzM2NmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA2IEFwciAyMDIxIDExOjU5OjIzICswMDAwClN1YmplY3Q6IFtQQVRD SCB2MTUgMS81XSBBbGxvdyBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkuCgpBbGxvdyBh IGxvZ2ljYWwgc2xvdCB0byBiZSBjcmVhdGVkIG9uIHN0YW5kYnkuIFJlc3RyaWN0IGl0cyB1 c2FnZQpvciBpdHMgY3JlYXRpb24gaWYgd2FsX2xldmVsIG9uIHByaW1hcnkgaXMgbGVzcyB0 aGFuIGxvZ2ljYWwuCkR1cmluZyBzbG90IGNyZWF0aW9uLCBpdCdzIHJlc3RhcnRfbHNuIGlz IHNldCB0byB0aGUgbGFzdCByZXBsYXllZApMU04uIEVmZmVjdGl2ZWx5LCBhIGxvZ2ljYWwg c2xvdCBjcmVhdGlvbiBvbiBzdGFuZGJ5IHdhaXRzIGZvciBhbgp4bF9ydW5uaW5nX3hhY3Qg cmVjb3JkIHRvIGFycml2ZSBmcm9tIHByaW1hcnkuIENvbmZsaWN0aW5nIHNsb3RzCndvdWxk IGJlIGhhbmRsZWQgaW4gbmV4dCBjb21taXRzLgoKQW5kcmVzIEZyZXVuZCBhbmQgQW1pdCBL aGFuZGVrYXIuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jICAgICAg ICAgfCAxMSArKysrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUu YyAgfCAyMiArKysrKysrKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9n aWNhbC5jIHwgMzcgKysrKysrKystLS0tLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9z bG90LmMgICAgICAgICAgICB8IDU4ICsrKysrKysrKysrKysrKy0tLS0tLS0tCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyAgICAgICB8IDEwICsrLS0KIHNyYy9pbmNs dWRlL2FjY2Vzcy94bG9nLmggICAgICAgICAgICAgICAgIHwgIDEgKwogNiBmaWxlcyBjaGFu Z2VkLCA5OSBpbnNlcnRpb25zKCspLCA0MCBkZWxldGlvbnMoLSkKICAgNS42JSBzcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS8KICA0NS43JSBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsLwogIDQ3LjclIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uLwoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3hsb2cuYwppbmRleCA2Zjg4MTBlMTQ5Li42YTIxY2JhMzYyIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCkBAIC01MDgwLDYgKzUwODAsMTcgQEAgTG9jYWxQ cm9jZXNzQ29udHJvbEZpbGUoYm9vbCByZXNldCkKIAlSZWFkQ29udHJvbEZpbGUoKTsKIH0K IAorLyoKKyAqIEdldCB0aGUgd2FsX2xldmVsIGZyb20gdGhlIGNvbnRyb2wgZmlsZS4gRm9y IGEgc3RhbmRieSwgdGhpcyB2YWx1ZSBzaG91bGQgYmUKKyAqIGNvbnNpZGVyZWQgYXMgaXRz IGFjdGl2ZSB3YWxfbGV2ZWwsIGJlY2F1c2UgaXQgbWF5IGJlIGRpZmZlcmVudCBmcm9tIHdo YXQKKyAqIHdhcyBvcmlnaW5hbGx5IGNvbmZpZ3VyZWQgb24gc3RhbmRieS4KKyAqLworV2Fs TGV2ZWwKK0dldEFjdGl2ZVdhbExldmVsKHZvaWQpCit7CisJcmV0dXJuIENvbnRyb2xGaWxl LT53YWxfbGV2ZWw7Cit9CisKIC8qCiAgKiBJbml0aWFsaXphdGlvbiBvZiBzaGFyZWQgbWVt b3J5IGZvciBYTE9HCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvZGVjb2RlLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2Rl Y29kZS5jCmluZGV4IDk3YmU0YjBmMjMuLjQ3ZDc5MTY3ZGEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKKysrIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwpAQCAtMjE1LDExICsyMTUsMzEgQEAgRGVj b2RlWExvZ09wKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZl ciAqYnVmKQogCQkJICogY2FuIHJlc3RhcnQgZnJvbSB0aGVyZS4KIAkJCSAqLwogCQkJYnJl YWs7CisJCWNhc2UgWExPR19QQVJBTUVURVJfQ0hBTkdFOgorCQl7CisJCQl4bF9wYXJhbWV0 ZXJfY2hhbmdlICp4bHJlYyA9CisJCQkJKHhsX3BhcmFtZXRlcl9jaGFuZ2UgKikgWExvZ1Jl Y0dldERhdGEoYnVmLT5yZWNvcmQpOworCisJCQkvKgorCQkJICogSWYgd2FsX2xldmVsIG9u IHByaW1hcnkgaXMgcmVkdWNlZCB0byBsZXNzIHRoYW4gbG9naWNhbCwgdGhlbiB3ZQorCQkJ ICogd2FudCB0byBwcmV2ZW50IGV4aXN0aW5nIGxvZ2ljYWwgc2xvdHMgZnJvbSBiZWluZyB1 c2VkLgorCQkJICogRXhpc3RpbmcgbG9naWNhbCBzbG90cyBvbiBzdGFuZGJ5IGdldCBkcm9w cGVkIHdoZW4gdGhpcyBXQUwKKwkJCSAqIHJlY29yZCBpcyByZXBsYXllZDsgYW5kIGZ1cnRo ZXIsIHNsb3QgY3JlYXRpb24gZmFpbHMgd2hlbiB0aGUKKwkJCSAqIHdhbCBsZXZlbCBpcyBu b3Qgc3VmZmljaWVudDsgYnV0IGFsbCB0aGVzZSBvcGVyYXRpb25zIGFyZSBub3QKKwkJCSAq IHN5bmNocm9uaXplZCwgc28gYSBsb2dpY2FsIHNsb3QgbWF5IGNyZWVwIGluIHdoaWxlIHRo ZSB3YWxfbGV2ZWwKKwkJCSAqIGlzIGJlaW5nIHJlZHVjZWQuIEhlbmNlIHRoaXMgZXh0cmEg Y2hlY2suCisJCQkgKi8KKwkJCWlmICh4bHJlYy0+d2FsX2xldmVsIDwgV0FMX0xFVkVMX0xP R0lDQUwpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JK RUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkJIGVycm1zZygibG9naWNh bCBkZWNvZGluZyBvbiBzdGFuZGJ5IHJlcXVpcmVzICIKKwkJCQkJCQkJIndhbF9sZXZlbCA+ PSBsb2dpY2FsIG9uIG1hc3RlciIpKSk7CisJCQlicmVhazsKKwkJfQogCQljYXNlIFhMT0df Tk9PUDoKIAkJY2FzZSBYTE9HX05FWFRPSUQ6CiAJCWNhc2UgWExPR19TV0lUQ0g6CiAJCWNh c2UgWExPR19CQUNLVVBfRU5EOgotCQljYXNlIFhMT0dfUEFSQU1FVEVSX0NIQU5HRToKIAkJ Y2FzZSBYTE9HX1JFU1RPUkVfUE9JTlQ6CiAJCWNhc2UgWExPR19GUFdfQ0hBTkdFOgogCQlj YXNlIFhMT0dfRlBJX0ZPUl9ISU5UOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9sb2dpY2FsLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2xvZ2ljYWwuYwppbmRleCAyZjY4MDM2MzdiLi5jNmQxMWMwNzBmIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYworKysgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYwpAQCAtMTE5LDIzICsxMTks MjIgQEAgQ2hlY2tMb2dpY2FsRGVjb2RpbmdSZXF1aXJlbWVudHModm9pZCkKIAkJCQkoZXJy Y29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKIAkJCQkg ZXJybXNnKCJsb2dpY2FsIGRlY29kaW5nIHJlcXVpcmVzIGEgZGF0YWJhc2UgY29ubmVjdGlv biIpKSk7CiAKLQkvKiAtLS0tCi0JICogVE9ETzogV2UgZ290IHRvIGNoYW5nZSB0aGF0IHNv bWVkYXkgc29vbi4uLgotCSAqCi0JICogVGhlcmUncyBiYXNpY2FsbHkgdGhyZWUgdGhpbmdz IG1pc3NpbmcgdG8gYWxsb3cgdGhpczoKLQkgKiAxKSBXZSBuZWVkIHRvIGJlIGFibGUgdG8g Y29ycmVjdGx5IGFuZCBxdWlja2x5IGlkZW50aWZ5IHRoZSB0aW1lbGluZSBhCi0JICoJICBM U04gYmVsb25ncyB0bwotCSAqIDIpIFdlIG5lZWQgdG8gZm9yY2UgaG90X3N0YW5kYnlfZmVl ZGJhY2sgdG8gYmUgZW5hYmxlZCBhdCBhbGwgdGltZXMgc28KLQkgKgkgIHRoZSBwcmltYXJ5 IGNhbm5vdCByZW1vdmUgcm93cyB3ZSBuZWVkLgotCSAqIDMpIHN1cHBvcnQgZHJvcHBpbmcg cmVwbGljYXRpb24gc2xvdHMgcmVmZXJyaW5nIHRvIGEgZGF0YWJhc2UsIGluCi0JICoJICBk YmFzZV9yZWRvLiBUaGVyZSBjYW4ndCBiZSBhbnkgYWN0aXZlIG9uZXMgZHVlIHRvIEhTIHJl Y292ZXJ5Ci0JICoJICBjb25mbGljdHMsIHNvIHRoYXQgc2hvdWxkIGJlIHJlbGF0aXZlbHkg ZWFzeS4KLQkgKiAtLS0tCi0JICovCiAJaWYgKFJlY292ZXJ5SW5Qcm9ncmVzcygpKQotCQll cmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9S VEVEKSwKLQkJCQkgZXJybXNnKCJsb2dpY2FsIGRlY29kaW5nIGNhbm5vdCBiZSB1c2VkIHdo aWxlIGluIHJlY292ZXJ5IikpKTsKKwl7CisJCS8qCisJCSAqIFRoaXMgY2hlY2sgbWF5IGhh dmUgcmFjZSBjb25kaXRpb25zLCBidXQgd2hlbmV2ZXIKKwkJICogWExPR19QQVJBTUVURVJf Q0hBTkdFIGluZGljYXRlcyB0aGF0IHdhbF9sZXZlbCBoYXMgY2hhbmdlZCwgd2UKKwkJICog dmVyaWZ5IHRoYXQgdGhlcmUgYXJlIG5vIGV4aXN0aW5nIGxvZ2ljYWwgcmVwbGljYXRpb24g c2xvdHMuIEFuZCB0bworCQkgKiBhdm9pZCByYWNlcyBhcm91bmQgY3JlYXRpbmcgYSBuZXcg c2xvdCwKKwkJICogQ2hlY2tMb2dpY2FsRGVjb2RpbmdSZXF1aXJlbWVudHMoKSBpcyBjYWxs ZWQgb25jZSBiZWZvcmUgY3JlYXRpbmcKKwkJICogdGhlIHNsb3QsIGFuZCBvbmNlIHdoZW4g bG9naWNhbCBkZWNvZGluZyBpcyBpbml0aWFsbHkgc3RhcnRpbmcgdXAuCisJCSAqLworCQlp ZiAoR2V0QWN0aXZlV2FsTGV2ZWwoKSA8IFdBTF9MRVZFTF9MT0dJQ0FMKQorCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJ U0lURV9TVEFURSksCisJCQkJCSBlcnJtc2coImxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRi eSByZXF1aXJlcyAiCisJCQkJCQkJIndhbF9sZXZlbCA+PSBsb2dpY2FsIG9uIG1hc3RlciIp KSk7CisJfQogfQogCiAvKgpAQCAtMzMwLDYgKzMyOSwxMiBAQCBDcmVhdGVJbml0RGVjb2Rp bmdDb250ZXh0KGNvbnN0IGNoYXIgKnBsdWdpbiwKIAlMb2dpY2FsRGVjb2RpbmdDb250ZXh0 ICpjdHg7CiAJTWVtb3J5Q29udGV4dCBvbGRfY29udGV4dDsKIAorCS8qCisJICogT24gc3Rh bmRieSwgdGhpcyBjaGVjayBpcyBhbHNvIHJlcXVpcmVkIHdoaWxlIGNyZWF0aW5nIHRoZSBz bG90LiBDaGVjaworCSAqIHRoZSBjb21tZW50cyBpbiB0aGlzIGZ1bmN0aW9uLgorCSAqLwor CUNoZWNrTG9naWNhbERlY29kaW5nUmVxdWlyZW1lbnRzKCk7CisKIAkvKiBzaG9ydGVyIGxp bmVzLi4uICovCiAJc2xvdCA9IE15UmVwbGljYXRpb25TbG90OwogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9zbG90LmMKaW5kZXggNzVhMDg3YzJmOS4uMmVjNzEyNzk0NyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3Nsb3QuYwpAQCAtMTEwNSwzNyArMTEwNSw1NyBAQCBSZXBsaWNhdGlvblNsb3RSZXNl cnZlV2FsKHZvaWQpCiAJCS8qCiAJCSAqIEZvciBsb2dpY2FsIHNsb3RzIGxvZyBhIHN0YW5k Ynkgc25hcHNob3QgYW5kIHN0YXJ0IGxvZ2ljYWwgZGVjb2RpbmcKIAkJICogYXQgZXhhY3Rs eSB0aGF0IHBvc2l0aW9uLiBUaGF0IGFsbG93cyB0aGUgc2xvdCB0byBzdGFydCB1cCBtb3Jl Ci0JCSAqIHF1aWNrbHkuCisJCSAqIHF1aWNrbHkuIEJ1dCBvbiBhIHN0YW5kYnkgd2UgY2Fu bm90IGRvIFdBTCB3cml0ZXMsIHNvIGp1c3QgdXNlIHRoZQorCQkgKiByZXBsYXkgcG9pbnRl cjsgZWZmZWN0aXZlbHksIGFuIGF0dGVtcHQgdG8gY3JlYXRlIGEgbG9naWNhbCBzbG90IG9u CisJCSAqIHN0YW5kYnkgd2lsbCBjYXVzZSBpdCB0byB3YWl0IGZvciBhbiB4bF9ydW5uaW5n X3hhY3QgcmVjb3JkIHRvIGJlCisJCSAqIGxvZ2dlZCBpbmRlcGVuZGVudGx5IG9uIHRoZSBw cmltYXJ5LCBzbyB0aGF0IGEgc25hcHNob3QgY2FuIGJlIGJ1aWx0CisJCSAqIHVzaW5nIHRo ZSByZWNvcmQuCiAJCSAqCi0JCSAqIFRoYXQncyBub3QgbmVlZGVkIChvciBpbmRlZWQgaGVs cGZ1bCkgZm9yIHBoeXNpY2FsIHNsb3RzIGFzIHRoZXknbGwKLQkJICogc3RhcnQgcmVwbGF5 IGF0IHRoZSBsYXN0IGxvZ2dlZCBjaGVja3BvaW50IGFueXdheS4gSW5zdGVhZCByZXR1cm4K LQkJICogdGhlIGxvY2F0aW9uIG9mIHRoZSBsYXN0IHJlZG8gTFNOLiBXaGlsZSB0aGF0IHNs aWdodGx5IGluY3JlYXNlcwotCQkgKiB0aGUgY2hhbmNlIHRoYXQgd2UgaGF2ZSB0byByZXRy eSwgaXQncyB3aGVyZSBhIGJhc2UgYmFja3VwIGhhcyB0bwotCQkgKiBzdGFydCByZXBsYXkg YXQuCisJCSAqIE5vbmUgb2YgdGhpcyBpcyBuZWVkZWQgKG9yIGluZGVlZCBoZWxwZnVsKSBm b3IgcGh5c2ljYWwgc2xvdHMgYXMKKwkJICogdGhleSdsbCBzdGFydCByZXBsYXkgYXQgdGhl IGxhc3QgbG9nZ2VkIGNoZWNrcG9pbnQgYW55d2F5LiBJbnN0ZWFkCisJCSAqIHJldHVybiB0 aGUgbG9jYXRpb24gb2YgdGhlIGxhc3QgcmVkbyBMU04uIFdoaWxlIHRoYXQgc2xpZ2h0bHkK KwkJICogaW5jcmVhc2VzIHRoZSBjaGFuY2UgdGhhdCB3ZSBoYXZlIHRvIHJldHJ5LCBpdCdz IHdoZXJlIGEgYmFzZSBiYWNrdXAKKwkJICogaGFzIHRvIHN0YXJ0IHJlcGxheSBhdC4KIAkJ ICovCisJCWlmIChTbG90SXNQaHlzaWNhbChzbG90KSkKKwkJCXJlc3RhcnRfbHNuID0gR2V0 UmVkb1JlY1B0cigpOworCQllbHNlIGlmIChSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKKwkJewor CQkJcmVzdGFydF9sc24gPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpOworCQkJLyoKKwkJ CSAqIFJlcGxheSBwb2ludGVyIG1heSBwb2ludCBvbmUgcGFzdCB0aGUgZW5kIG9mIHRoZSBy ZWNvcmQuIElmIHRoYXQKKwkJCSAqIGlzIGEgWExPRyBwYWdlIGJvdW5kYXJ5LCBpdCB3aWxs IG5vdCBiZSBhIHZhbGlkIExTTiBmb3IgdGhlCisJCQkgKiBzdGFydCBvZiBhIHJlY29yZCwg c28gYnVtcCBpdCB1cCBwYXN0IHRoZSBwYWdlIGhlYWRlci4KKwkJCSAqLworCQkJaWYgKCFY UmVjT2ZmSXNWYWxpZChyZXN0YXJ0X2xzbikpCisJCQl7CisJCQkJaWYgKHJlc3RhcnRfbHNu ICUgWExPR19CTENLU1ogIT0gMCkKKwkJCQkJZWxvZyhFUlJPUiwgImludmFsaWQgcmVwbGF5 IHBvaW50ZXIiKTsKKworCQkJCS8qIEZvciB0aGUgZmlyc3QgcGFnZSBvZiBhIHNlZ21lbnQg ZmlsZSwgaXQncyBhIGxvbmcgaGVhZGVyICovCisJCQkJaWYgKFhMb2dTZWdtZW50T2Zmc2V0 KHJlc3RhcnRfbHNuLCB3YWxfc2VnbWVudF9zaXplKSA9PSAwKQorCQkJCQlyZXN0YXJ0X2xz biArPSBTaXplT2ZYTG9nTG9uZ1BIRDsKKwkJCQllbHNlCisJCQkJCXJlc3RhcnRfbHNuICs9 IFNpemVPZlhMb2dTaG9ydFBIRDsKKwkJCX0KKwkJfQorCQllbHNlCisJCQlyZXN0YXJ0X2xz biA9IEdldFhMb2dJbnNlcnRSZWNQdHIoKTsKKworCQlTcGluTG9ja0FjcXVpcmUoJnNsb3Qt Pm11dGV4KTsKKwkJc2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbiA9IHJlc3RhcnRfbHNuOworCQlT cGluTG9ja1JlbGVhc2UoJnNsb3QtPm11dGV4KTsKKwogCQlpZiAoIVJlY292ZXJ5SW5Qcm9n cmVzcygpICYmIFNsb3RJc0xvZ2ljYWwoc2xvdCkpCiAJCXsKIAkJCVhMb2dSZWNQdHIJZmx1 c2hwdHI7CiAKLQkJCS8qIHN0YXJ0IGF0IGN1cnJlbnQgaW5zZXJ0IHBvc2l0aW9uICovCi0J CQlyZXN0YXJ0X2xzbiA9IEdldFhMb2dJbnNlcnRSZWNQdHIoKTsKLQkJCVNwaW5Mb2NrQWNx dWlyZSgmc2xvdC0+bXV0ZXgpOwotCQkJc2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbiA9IHJlc3Rh cnRfbHNuOwotCQkJU3BpbkxvY2tSZWxlYXNlKCZzbG90LT5tdXRleCk7Ci0KIAkJCS8qIG1h a2Ugc3VyZSB3ZSBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiB0byBzdGFydCAqLwogCQkJZmx1 c2hwdHIgPSBMb2dTdGFuZGJ5U25hcHNob3QoKTsKIAogCQkJLyogYW5kIG1ha2Ugc3VyZSBp dCdzIGZzeW5jZWQgdG8gZGlzayAqLwogCQkJWExvZ0ZsdXNoKGZsdXNocHRyKTsKIAkJfQot CQllbHNlCi0JCXsKLQkJCXJlc3RhcnRfbHNuID0gR2V0UmVkb1JlY1B0cigpOwotCQkJU3Bp bkxvY2tBY3F1aXJlKCZzbG90LT5tdXRleCk7Ci0JCQlzbG90LT5kYXRhLnJlc3RhcnRfbHNu ID0gcmVzdGFydF9sc247Ci0JCQlTcGluTG9ja1JlbGVhc2UoJnNsb3QtPm11dGV4KTsKLQkJ fQogCiAJCS8qIHByZXZlbnQgV0FMIHJlbW92YWwgYXMgZmFzdCBhcyBwb3NzaWJsZSAqLwog CQlSZXBsaWNhdGlvblNsb3RzQ29tcHV0ZVJlcXVpcmVkTFNOKCk7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3dhbHNlbmRlci5jCmluZGV4IDRiZjhhMThlMDEuLjUxMmVmN2MxY2EgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCkBAIC0yODY1LDEwICsyODY1LDEyIEBA IFhMb2dTZW5kTG9naWNhbCh2b2lkKQogCSAqIElmIGZpcnN0IHRpbWUgdGhyb3VnaCBpbiB0 aGlzIHNlc3Npb24sIGluaXRpYWxpemUgZmx1c2hQdHIuICBPdGhlcndpc2UsCiAJICogd2Ug b25seSBuZWVkIHRvIHVwZGF0ZSBmbHVzaFB0ciBpZiBFbmRSZWNQdHIgaXMgcGFzdCBpdC4K IAkgKi8KLQlpZiAoZmx1c2hQdHIgPT0gSW52YWxpZFhMb2dSZWNQdHIpCi0JCWZsdXNoUHRy ID0gR2V0Rmx1c2hSZWNQdHIoKTsKLQllbHNlIGlmIChsb2dpY2FsX2RlY29kaW5nX2N0eC0+ cmVhZGVyLT5FbmRSZWNQdHIgPj0gZmx1c2hQdHIpCi0JCWZsdXNoUHRyID0gR2V0Rmx1c2hS ZWNQdHIoKTsKKwlpZiAoZmx1c2hQdHIgPT0gSW52YWxpZFhMb2dSZWNQdHIgfHwKKwkJbG9n aWNhbF9kZWNvZGluZ19jdHgtPnJlYWRlci0+RW5kUmVjUHRyID49IGZsdXNoUHRyKQorCXsK KwkJZmx1c2hQdHIgPSAoYW1fY2FzY2FkaW5nX3dhbHNlbmRlciA/CisJCQkJCUdldFN0YW5k YnlGbHVzaFJlY1B0cigpIDogR2V0Rmx1c2hSZWNQdHIoKSk7CisJfQogCiAJLyogSWYgRW5k UmVjUHRyIGlzIHN0aWxsIHBhc3Qgb3VyIGZsdXNoUHRyLCBpdCBtZWFucyB3ZSBjYXVnaHQg dXAuICovCiAJaWYgKGxvZ2ljYWxfZGVjb2RpbmdfY3R4LT5yZWFkZXItPkVuZFJlY1B0ciA+ PSBmbHVzaFB0cikKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmggYi9z cmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oCmluZGV4IDc3MTg3YzEyYmUuLjA2YmNkMmZjNTYg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmgKKysrIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3hsb2cuaApAQCAtMzMzLDYgKzMzMyw3IEBAIGV4dGVybiBTaXplIFhMT0dT aG1lbVNpemUodm9pZCk7CiBleHRlcm4gdm9pZCBYTE9HU2htZW1Jbml0KHZvaWQpOwogZXh0 ZXJuIHZvaWQgQm9vdFN0cmFwWExPRyh2b2lkKTsKIGV4dGVybiB2b2lkIExvY2FsUHJvY2Vz c0NvbnRyb2xGaWxlKGJvb2wgcmVzZXQpOworZXh0ZXJuIFdhbExldmVsIEdldEFjdGl2ZVdh bExldmVsKHZvaWQpOwogZXh0ZXJuIHZvaWQgU3RhcnR1cFhMT0codm9pZCk7CiBleHRlcm4g dm9pZCBTaHV0ZG93blhMT0coaW50IGNvZGUsIERhdHVtIGFyZyk7CiBleHRlcm4gdm9pZCBJ bml0WExPR0FjY2Vzcyh2b2lkKTsKLS0gCjIuMTguNAoK --------------F5E6E709001A4E566C6E418E--