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 1pLNY3-0006if-Cn for pgsql-hackers@arkaria.postgresql.org; Fri, 27 Jan 2023 12:09:40 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pLNY0-0006eU-Eh for pgsql-hackers@arkaria.postgresql.org; Fri, 27 Jan 2023 12:09:36 +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 1pLNXz-0006Ya-8j for pgsql-hackers@lists.postgresql.org; Fri, 27 Jan 2023 12:09:35 +0000 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pLNXl-0005cx-Ci for pgsql-hackers@postgresql.org; Fri, 27 Jan 2023 12:09:34 +0000 Received: by mail-wm1-x332.google.com with SMTP id c4-20020a1c3504000000b003d9e2f72093so5276128wma.1 for ; Fri, 27 Jan 2023 04:09:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=8YvOkpw3Wl+sr9PlV+WnxCBNd4yNvKRH7JLG6clXBfc=; b=UJwmbEolDVQMqbjSWNfNbnXqfqMkg7H8w+dqX1GgNc2I0Uip8pxvUTXJD7SfS411q/ rT7VKNvnrY+tVIXUxoZwkOy6Aw7tcziq6njuHQF4O5HzARCNfbqI6aWpj68k6jAaFCOu Ug6STbSRPR+coE+M5DGtnV8xWpJbqXDugyBzJrMazgM+BOEzJfDHIPaj8RN66GPAUwGC KlaJ/di5f8BQgv3Vvpnvn/ZB6wtiNWV6qYS7d+PxyUFkJunlZCFluh/FrBdVwbn5W/I9 KecDfljn0fw/5veI2mS2UN0bO37BCo39974UyyFgZblhRjizi42/FDQDH1cqpRurrZ4X pEGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=8YvOkpw3Wl+sr9PlV+WnxCBNd4yNvKRH7JLG6clXBfc=; b=Trv0IagDICKCG/iVj6anAlZ6PsEenObvgQ15bSqrHt95p04X37lICSOnHnUb8LfCk5 xUfmsEry9k6cfAIEnFO2leufLlwlGF19JwmsmFL1Z9IDPjFV3vTIUGpHjh6V2CoDOyjq ZTjCcFF8dCH2KjgRRKFvgwR4COLI8ZSMFq4JtRYSHigtqkawTgCV6PbpKb5l/VMr+70w KbfjQ6qYogdh8kTjlvFHO6gOHT/b3C24AEMGlHzJ7iKW/7SpTHGoTWlXbnRQVP5PkO3H ZZIjWtrhoGYeKc0ZYhK9LZxwmBPX6ZOULFoEVEcVN6JX/Mr3ssvRNJ3LSLqC/6mgbz+u L0dQ== X-Gm-Message-State: AFqh2ko+vVwa/sArRxADp5ENEUIOPmuMixAjBUTT0uqICVT6Wsz82pgs osA1eS4L5q5X22gfQ0/FH60= X-Google-Smtp-Source: AMrXdXs9wcjShdNXTXG+Go2a0C+Z/cn6gyFXTWwJHmISegeNpQJ/7h5pp0i2o0X9FzMyGqjoUgbV5g== X-Received: by 2002:a05:600c:510d:b0:3da:f6ae:faa9 with SMTP id o13-20020a05600c510d00b003daf6aefaa9mr43181180wms.29.1674821359379; Fri, 27 Jan 2023 04:09:19 -0800 (PST) Received: from [192.168.10.24] ([54.239.6.186]) by smtp.gmail.com with ESMTPSA id w8-20020a05600c2a0800b003db06224953sm4495390wme.41.2023.01.27.04.09.17 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 27 Jan 2023 04:09:18 -0800 (PST) Content-Type: multipart/mixed; boundary="------------G03lDHzolqD0Rr04i1MibgcG" Message-ID: Date: Fri, 27 Jan 2023 13:09:16 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 Subject: Re: Minimal logical decoding on standbys Content-Language: en-US To: Andres Freund , Bharath Rupireddy Cc: Robert Haas , Thomas Munro , Alvaro Herrera , Ibrar Ahmed , Amit Khandekar , fabriziomello@gmail.com, tushar , Rahila Syed , pgsql-hackers References: <1f2ad9fd-53ff-74cc-a602-72d45423bcab@gmail.com> <05c0c4f3-82eb-bc6d-c876-5a265c05927b@gmail.com> <20230106034036.2m4qnn7ep7b5ipet@awork3.anarazel.de> <6f8503b7-93d6-e78d-1d61-09cfec4d59c9@gmail.com> <20230111165215.44nfwrcy2jhse3cj@awork3.anarazel.de> From: "Drouvot, Bertrand" In-Reply-To: <20230111165215.44nfwrcy2jhse3cj@awork3.anarazel.de> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------G03lDHzolqD0Rr04i1MibgcG Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi, On 1/11/23 5:52 PM, Andres Freund wrote: > Hi, > > On 2023-01-11 13:02:13 +0530, Bharath Rupireddy wrote: >> 3. Is this feature still a 'minimal logical decoding on standby'? >> Firstly, why is it 'minimal'? > > It's minimal in comparison to other proposals at the time that did explicit / > active coordination between primary and standby to allow logical decoding. > > > >> 0002: >> 1. >> - if (InvalidateObsoleteReplicationSlots(_logSegNo)) >> + InvalidateObsoleteOrConflictingLogicalReplicationSlots(_logSegNo, >> &invalidated, InvalidOid, NULL); >> >> Isn't the function name too long and verbose? > > +1 > > >> How about just InvalidateLogicalReplicationSlots() let the function comment >> talk about what sorts of replication slots it invalides? > > I'd just leave the name unmodified at InvalidateObsoleteReplicationSlots(). > > Done in V44 attached. >> 2. >> + errdetail("Logical decoding on >> standby requires wal_level to be at least logical on master")); >> + * master wal_level is set back to replica, so existing logical >> slots need to >> invalidate such slots. Also do the same thing if wal_level on master >> >> Can we use 'primary server' instead of 'master' like elsewhere? This >> comment also applies for other patches too, if any. > > +1 > Done in V44. > >> 3. Can we show a new status in pg_get_replication_slots's wal_status >> for invalidated due to the conflict so that the user can monitor for >> the new status and take necessary actions? > > Invalidated slots are not a new concept introduced in this patchset, so I'd > say we can introduce such a field separately. > In V44, adding a new field "conflicting" in pg_replication_slots which is: - NULL for physical slots - True if the slot is a logical one and has been invalidated due to recovery conflict - False if the slot is a logical one and has not been invalidated due to recovery conflict I'm not checking if recovery is in progress while displaying the "conflicting". The reason is to still display the right status after a promotion. TAP tests are also updated to test that this new field behaves as expected (for both physical and logical slots). Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --------------G03lDHzolqD0Rr04i1MibgcG Content-Type: text/plain; charset=UTF-8; name="v44-0006-Doc-changes-describing-details-about-logical-dec.patch" Content-Disposition: attachment; filename*0="v44-0006-Doc-changes-describing-details-about-logical-dec.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA4NGVlMWU5ZTVhNjk1OTBhYmZlMzNiYTRmYTM5MjlmMDNmM2I0MDc0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogRnJpLCAyNyBKYW4gMjAyMyAxMTozMjo0NCArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjQ0IDYvNl0gRG9jIGNoYW5nZXMgZGVzY3JpYmluZyBkZXRhaWxzIGFib3V0IGxvZ2lj YWwKIGRlY29kaW5nLgoKQXV0aG9yOiBBbmRyZXMgRnJldW5kIChpbiBhbiBvbGRlciB2ZXJz aW9uKSwgQW1pdCBLaGFuZGVrYXIsIEJlcnRyYW5kIERyb3V2b3QKUmV2aWV3ZWQtQnk6IEJl cnRyYW5kIERyb3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVydCBIYWFzLCBGYWJyaXppbyBk ZSBSb3llcyBNZWxsbwotLS0KIGRvYy9zcmMvc2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbCB8 IDIxICsrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDIxIGluc2VydGlv bnMoKykKIDEwMC4wJSBkb2Mvc3JjL3NnbWwvCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L2xvZ2ljYWxkZWNvZGluZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWxkZWNvZGluZy5z Z21sCmluZGV4IDRlOTEyYjRiZDQuLjJlOGJlZTAzM2YgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbGRl Y29kaW5nLnNnbWwKQEAgLTMxNiw2ICszMTYsMjcgQEAgcG9zdGdyZXM9IyBzZWxlY3QgKiBm cm9tIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90JywgTlVM TCwgTlUKICAgICAgbWF5IGNvbnN1bWUgY2hhbmdlcyBmcm9tIGEgc2xvdCBhdCBhbnkgZ2l2 ZW4gdGltZS4KICAgICA8L3BhcmE+CiAKKyAgICA8cGFyYT4KKyAgICAgQSBsb2dpY2FsIHJl cGxpY2F0aW9uIHNsb3QgY2FuIGFsc28gYmUgY3JlYXRlZCBvbiBhIGhvdCBzdGFuZGJ5LiBU byBwcmV2ZW50CisgICAgIDxjb21tYW5kPlZBQ1VVTTwvY29tbWFuZD4gZnJvbSByZW1vdmlu ZyByZXF1aXJlZCByb3dzIGZyb20gdGhlIHN5c3RlbQorICAgICBjYXRhbG9ncywgPHZhcm5h bWU+aG90X3N0YW5kYnlfZmVlZGJhY2s8L3Zhcm5hbWU+IHNob3VsZCBiZSBzZXQgb24gdGhl CisgICAgIHN0YW5kYnkuIEluIHNwaXRlIG9mIHRoYXQsIGlmIGFueSByZXF1aXJlZCByb3dz IGdldCByZW1vdmVkLCB0aGUgc2xvdCBnZXRzCisgICAgIGludmFsaWRhdGVkLiBJdCdzIGhp Z2hseSByZWNvbW1lbmRlZCB0byB1c2UgYSBwaHlzaWNhbCBzbG90IGJldHdlZW4gdGhlIHBy aW1hcnkKKyAgICAgYW5kIHRoZSBzdGFuZGJ5LiBPdGhlcndpc2UsIGhvdF9zdGFuZGJ5X2Zl ZWRiYWNrIHdpbGwgd29yaywgYnV0IG9ubHkgd2hpbGUgdGhlCisgICAgIGNvbm5lY3Rpb24g aXMgYWxpdmUgKGZvciBleGFtcGxlIGEgbm9kZSByZXN0YXJ0IHdvdWxkIGJyZWFrIGl0KS4g RXhpc3RpbmcKKyAgICAgbG9naWNhbCBzbG90cyBvbiBzdGFuZGJ5IGFsc28gZ2V0IGludmFs aWRhdGVkIGlmIHdhbF9sZXZlbCBvbiBwcmltYXJ5IGlzIHJlZHVjZWQgdG8KKyAgICAgbGVz cyB0aGFuICdsb2dpY2FsJy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgRm9y IGEgbG9naWNhbCBzbG90IHRvIGJlIGNyZWF0ZWQsIGl0IGJ1aWxkcyBhIGhpc3RvcmljIHNu YXBzaG90LCBmb3Igd2hpY2gKKyAgICAgaW5mb3JtYXRpb24gb2YgYWxsIHRoZSBjdXJyZW50 bHkgcnVubmluZyB0cmFuc2FjdGlvbnMgaXMgZXNzZW50aWFsLiBPbgorICAgICBwcmltYXJ5 LCB0aGlzIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSwgYnV0IG9uIHN0YW5kYnksIHRoaXMg aW5mb3JtYXRpb24KKyAgICAgaGFzIHRvIGJlIG9idGFpbmVkIGZyb20gcHJpbWFyeS4gU28s IHNsb3QgY3JlYXRpb24gbWF5IHdhaXQgZm9yIHNvbWUKKyAgICAgYWN0aXZpdHkgdG8gaGFw cGVuIG9uIHRoZSBwcmltYXJ5LiBJZiB0aGUgcHJpbWFyeSBpcyBpZGxlLCBjcmVhdGluZyBh CisgICAgIGxvZ2ljYWwgc2xvdCBvbiBzdGFuZGJ5IG1heSB0YWtlIGEgbm90aWNlYWJsZSB0 aW1lLgorICAgIDwvcGFyYT4KKwogICAgIDxjYXV0aW9uPgogICAgICA8cGFyYT4KICAgICAg IFJlcGxpY2F0aW9uIHNsb3RzIHBlcnNpc3QgYWNyb3NzIGNyYXNoZXMgYW5kIGtub3cgbm90 aGluZyBhYm91dCB0aGUgc3RhdGUKLS0gCjIuMzQuMQoK --------------G03lDHzolqD0Rr04i1MibgcG Content-Type: text/plain; charset=UTF-8; name="v44-0005-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Disposition: attachment; filename*0="v44-0005-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSA3MTJmOWRmZTcyNGFlMGY4YmU5Y2UxNTFkZTRhNTQ3ZTAwY2I5ZjhmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogRnJpLCAyNyBKYW4gMjAyMyAxMTozMTo0NyArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjQ0IDUvNl0gTmV3IFRBUCB0ZXN0IGZvciBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5k YnkuCgpBdXRob3I6IENyYWlnIFJpbmdlciAoaW4gYW4gb2xkZXIgdmVyc2lvbiksIEFtaXQg S2hhbmRla2FyLCBCZXJ0cmFuZCBEcm91dm90ClJldmlld2VkLUJ5OiBCZXJ0cmFuZCBEcm91 dm90LCBBbmRyZXMgRnJldW5kLCBSb2JlcnQgSGFhcywgRmFicml6aW8gZGUgUm95ZXMgTWVs bG8KLS0tCiBzcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtICAgICAg fCAgMzkgKysKIHNyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkICAgICAgICAgICAgICAg ICB8ICAgMSArCiAuLi4vdC8wMzRfc3RhbmRieV9sb2dpY2FsX2RlY29kaW5nLnBsICAgICAg ICAgfCA2NTggKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDY5OCBpbnNl cnRpb25zKCspCiAgIDUuMCUgc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvCiAgOTQu OCUgc3JjL3Rlc3QvcmVjb3ZlcnkvdC8KCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9wZXJsL1Bv c3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtIGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rl c3QvQ2x1c3Rlci5wbQppbmRleCAwNDkyMWNhM2EzLi5mZDgxZGRjZjM5IDEwMDY0NAotLS0g YS9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtCisrKyBiL3NyYy90 ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0KQEAgLTMwMzcsNiArMzAzNyw0 NSBAQCAkU0lHe1RFUk19ID0gJFNJR3tJTlR9ID0gc3ViIHsKIAogPXBvZAogCis9aXRlbSAk bm9kZS0+Y3JlYXRlX2xvZ2ljYWxfc2xvdF9vbl9zdGFuZGJ5KHNlbGYsIHByaW1hcnksIHNs b3RfbmFtZSwgZGJuYW1lKQorCitDcmVhdGUgbG9naWNhbCByZXBsaWNhdGlvbiBzbG90IG9u IGdpdmVuIHN0YW5kYnkKKworPWN1dAorCitzdWIgY3JlYXRlX2xvZ2ljYWxfc2xvdF9vbl9z dGFuZGJ5Cit7CisJbXkgKCRzZWxmLCAkcHJpbWFyeSwgJHNsb3RfbmFtZSwgJGRibmFtZSkg PSBAXzsKKwlteSAoJHN0ZG91dCwgJHN0ZGVycik7CisKKwlteSAkaGFuZGxlOworCisJJGhh bmRsZSA9IElQQzo6UnVuOjpzdGFydChbJ3BnX3JlY3Zsb2dpY2FsJywgJy1kJywgJHNlbGYt PmNvbm5zdHIoJGRibmFtZSksICctUCcsICd0ZXN0X2RlY29kaW5nJywgJy1TJywgJHNsb3Rf bmFtZSwgJy0tY3JlYXRlLXNsb3QnXSwgJz4nLCBcJHN0ZG91dCwgJzI+JywgXCRzdGRlcnIp OworCisJIyBPbmNlIHNsb3QgcmVzdGFydF9sc24gaXMgY3JlYXRlZCwgdGhlIHN0YW5kYnkg bG9va3MgZm9yIHhsX3J1bm5pbmdfeGFjdHMKKwkjIFdBTCByZWNvcmQgZnJvbSB0aGUgcmVz dGFydF9sc24gb253YXJkcy4gU28gZmlyc3RseSwgd2FpdCB1bnRpbCB0aGUgc2xvdAorCSMg cmVzdGFydF9sc24gaXMgZXZhbHVhdGVkLgorCisJJHNlbGYtPnBvbGxfcXVlcnlfdW50aWwo CisJCSdwb3N0Z3JlcycsIHFxWworCQlTRUxFQ1QgcmVzdGFydF9sc24gSVMgTk9UIE5VTEwK KwkJRlJPTSBwZ19jYXRhbG9nLnBnX3JlcGxpY2F0aW9uX3Nsb3RzIFdIRVJFIHNsb3RfbmFt ZSA9ICckc2xvdF9uYW1lJworCV0pIG9yIGRpZSAidGltZWQgb3V0IHdhaXRpbmcgZm9yIGxv Z2ljYWwgc2xvdCB0byBjYWxjdWxhdGUgaXRzIHJlc3RhcnRfbHNuIjsKKworCSMgTm93IGFy cmFuZ2UgZm9yIHRoZSB4bF9ydW5uaW5nX3hhY3RzIHJlY29yZCBmb3Igd2hpY2ggcGdfcmVj dmxvZ2ljYWwKKwkjIGlzIHdhaXRpbmcuCisJIyBOb3RlOiBXcml0ZSBhIEMgaGVscGVyIGZ1 bmN0aW9uIHRvIGNhbGwgTG9nU3RhbmRieVNuYXBzaG90KCkgaW5zdGVhZAorCSMgb2YgYXNr aW5nIGZvciBhIGNoZWNrcG9pbnQuCisJJHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAnQ0hFQ0tQT0lOVCcpOworCisJJGhhbmRsZS0+ZmluaXNoKCk7CisKKwlpcygkc2VsZi0+ c2xvdCgkc2xvdF9uYW1lKS0+eydzbG90X3R5cGUnfSwgJ2xvZ2ljYWwnLCAkc2xvdF9uYW1l IC4gJyBvbiBzdGFuZGJ5IGNyZWF0ZWQnKQorCQlvciBkaWUgImNvdWxkIG5vdCBjcmVhdGUg c2xvdCIgLiAkc2xvdF9uYW1lOworfQorCis9cG9kCisKID1iYWNrCiAKID1jdXQKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvcmVjb3Zl cnkvbWVzb24uYnVpbGQKaW5kZXggZWRhYWExYTNjZS4uNTJiMjgxNmM3YSAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvcmVjb3Zl cnkvbWVzb24uYnVpbGQKQEAgLTQwLDYgKzQwLDcgQEAgdGVzdHMgKz0gewogICAgICAgJ3Qv MDMxX3JlY292ZXJ5X2NvbmZsaWN0LnBsJywKICAgICAgICd0LzAzMl9yZWxmaWxlbm9kZV9y ZXVzZS5wbCcsCiAgICAgICAndC8wMzNfcmVwbGF5X3RzcF9kcm9wcy5wbCcsCisgICAgICAn dC8wMzRfc3RhbmRieV9sb2dpY2FsX2RlY29kaW5nLnBsJywKICAgICBdLAogICB9LAogfQpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMzRfc3RhbmRieV9sb2dpY2FsX2Rl Y29kaW5nLnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMzRfc3RhbmRieV9sb2dpY2FsX2Rl Y29kaW5nLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjQzNzBk NTk1ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNF9zdGFu ZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwKQEAgLTAsMCArMSw2NTggQEAKKyMgbG9naWNhbCBk ZWNvZGluZyBvbiBzdGFuZGJ5IDogdGVzdCBsb2dpY2FsIGRlY29kaW5nLAorIyByZWNvdmVy eSBjb25mbGljdCBhbmQgc3RhbmRieSBwcm9tb3Rpb24uCisKK3VzZSBzdHJpY3Q7Cit1c2Ug d2FybmluZ3M7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmUgdGVzdHMgPT4gNjI7CisKK215 ICgkc3RkaW4sICRzdGRvdXQsICRzdGRlcnIsICRyZXQsICRoYW5kbGUsICRzbG90KTsKKwor bXkgJG5vZGVfcHJpbWFyeSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHJp bWFyeScpOworbXkgJG5vZGVfc3RhbmRieSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXIt Pm5ldygnc3RhbmRieScpOworbXkgJGRlZmF1bHRfdGltZW91dCA9ICRQb3N0Z3JlU1FMOjpU ZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0OworbXkgJHJlczsKKworIyBOYW1lIGZvciB0 aGUgcGh5c2ljYWwgc2xvdCBvbiBwcmltYXJ5CitteSAkcHJpbWFyeV9zbG90bmFtZSA9ICdw cmltYXJ5X3BoeXNpY2FsJzsKKworIyBmaW5kICRwYXQgaW4gbG9nZmlsZSBvZiAkbm9kZSBh ZnRlciAkb2ZmLXRoIGJ5dGUKK3N1YiBmaW5kX2luX2xvZworeworCW15ICgkbm9kZSwgJHBh dCwgJG9mZikgPSBAXzsKKworCSRvZmYgPSAwIHVubGVzcyBkZWZpbmVkICRvZmY7CisJbXkg JGxvZyA9IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjpzbHVycF9maWxlKCRub2RlLT5sb2dm aWxlKTsKKwlyZXR1cm4gMCBpZiAobGVuZ3RoKCRsb2cpIDw9ICRvZmYpOworCisJJGxvZyA9 IHN1YnN0cigkbG9nLCAkb2ZmKTsKKworCXJldHVybiAkbG9nID1+IG0vJHBhdC87Cit9CisK KyMgRmV0Y2ggeG1pbiBjb2x1bW5zIGZyb20gc2xvdCdzIHBnX3JlcGxpY2F0aW9uX3Nsb3Rz IHJvdywgYWZ0ZXIgd2FpdGluZyBmb3IKKyMgZ2l2ZW4gYm9vbGVhbiBjb25kaXRpb24gdG8g YmUgdHJ1ZSB0byBlbnN1cmUgd2UndmUgcmVhY2hlZCBhIHF1aWVzY2VudCBzdGF0ZS4KK3N1 YiB3YWl0X2Zvcl94bWlucworeworCW15ICgkbm9kZSwgJHNsb3RuYW1lLCAkY2hlY2tfZXhw cikgPSBAXzsKKworCSRub2RlLT5wb2xsX3F1ZXJ5X3VudGlsKAorCQkncG9zdGdyZXMnLCBx cVsKKwkJU0VMRUNUICRjaGVja19leHByCisJCUZST00gcGdfY2F0YWxvZy5wZ19yZXBsaWNh dGlvbl9zbG90cworCQlXSEVSRSBzbG90X25hbWUgPSAnJHNsb3RuYW1lJzsKKwldKSBvciBk aWUgIlRpbWVkIG91dCB3YWl0aW5nIGZvciBzbG90IHhtaW5zIHRvIGFkdmFuY2UiOworfQor CisjIENyZWF0ZSB0aGUgcmVxdWlyZWQgbG9naWNhbCBzbG90cyBvbiBzdGFuZGJ5Lgorc3Vi IGNyZWF0ZV9sb2dpY2FsX3Nsb3RzCit7CisJJG5vZGVfc3RhbmRieS0+Y3JlYXRlX2xvZ2lj YWxfc2xvdF9vbl9zdGFuZGJ5KCRub2RlX3ByaW1hcnksICdpbmFjdGl2ZXNsb3QnLCAndGVz dGRiJyk7CisJJG5vZGVfc3RhbmRieS0+Y3JlYXRlX2xvZ2ljYWxfc2xvdF9vbl9zdGFuZGJ5 KCRub2RlX3ByaW1hcnksICdhY3RpdmVzbG90JywgJ3Rlc3RkYicpOworfQorCisjIERyb3Ag dGhlIGxvZ2ljYWwgc2xvdHMgb24gc3RhbmRieS4KK3N1YiBkcm9wX2xvZ2ljYWxfc2xvdHMK K3sKKwkkbm9kZV9zdGFuZGJ5LT5wc3FsKCdwb3N0Z3JlcycsIHFbU0VMRUNUIHBnX2Ryb3Bf cmVwbGljYXRpb25fc2xvdCgnaW5hY3RpdmVzbG90JyldKTsKKwkkbm9kZV9zdGFuZGJ5LT5w c3FsKCdwb3N0Z3JlcycsIHFbU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCgnYWN0 aXZlc2xvdCcpXSk7Cit9CisKKyMgQWNxdWlyZSBvbmUgb2YgdGhlIHN0YW5kYnkgbG9naWNh bCBzbG90cyBjcmVhdGVkIGJ5IGNyZWF0ZV9sb2dpY2FsX3Nsb3RzKCkuCisjIEluIGNhc2Ug d2FpdCBpcyB0cnVlIHdlIGFyZSB3YWl0aW5nIGZvciBhbiBhY3RpdmUgcGlkIG9uIHRoZSAn YWN0aXZlc2xvdCcgc2xvdC4KKyMgSWYgd2FpdCBpcyBub3QgdHJ1ZSBpdCBtZWFucyB3ZSBh cmUgdGVzdGluZyBhIGtub3duIGZhaWx1cmUgc2NlbmFyaW8uCitzdWIgbWFrZV9zbG90X2Fj dGl2ZQoreworCW15ICR3YWl0ID0gc2hpZnQ7CisJbXkgJHNsb3RfdXNlcl9oYW5kbGU7CisK Kwkkc2xvdF91c2VyX2hhbmRsZSA9IElQQzo6UnVuOjpzdGFydChbJ3BnX3JlY3Zsb2dpY2Fs JywgJy1kJywgJG5vZGVfc3RhbmRieS0+Y29ubnN0cigndGVzdGRiJyksICctUycsICdhY3Rp dmVzbG90JywgJy1vJywgJ2luY2x1ZGUteGlkcz0wJywgJy1vJywgJ3NraXAtZW1wdHkteGFj dHM9MScsICctLW5vLWxvb3AnLCAnLS1zdGFydCcsICctZicsICctJ10sICc+JywgXCRzdGRv dXQsICcyPicsIFwkc3RkZXJyKTsKKworCWlmICgkd2FpdCkKKwl7CisJCSMgbWFrZSBzdXJl IGFjdGl2ZXNsb3QgaXMgaW4gdXNlCisJCSRub2RlX3N0YW5kYnktPnBvbGxfcXVlcnlfdW50 aWwoJ3Rlc3RkYicsCisJCQkiU0VMRUNUIEVYSVNUUyAoU0VMRUNUIDEgRlJPTSBwZ19yZXBs aWNhdGlvbl9zbG90cyBXSEVSRSBzbG90X25hbWUgPSAnYWN0aXZlc2xvdCcgQU5EIGFjdGl2 ZV9waWQgSVMgTk9UIE5VTEwpIgorCQkpIG9yIGRpZSAic2xvdCBuZXZlciBiZWNhbWUgYWN0 aXZlIjsKKwl9CisJcmV0dXJuICRzbG90X3VzZXJfaGFuZGxlOworfQorCisjIENoZWNrIHBn X3JlY3Zsb2dpY2FsIHN0ZGVycgorc3ViIGNoZWNrX3BnX3JlY3Zsb2dpY2FsX3N0ZGVycgor eworCW15ICgkc2xvdF91c2VyX2hhbmRsZSwgJGNoZWNrX3N0ZGVycikgPSBAXzsKKwlteSAk cmV0dXJuOworCisJIyBvdXIgY2xpZW50IHNob3VsZCd2ZSB0ZXJtaW5hdGVkIGluIHJlc3Bv bnNlIHRvIHRoZSB3YWxzZW5kZXIgZXJyb3IKKwkkc2xvdF91c2VyX2hhbmRsZS0+ZmluaXNo OworCSRyZXR1cm4gPSAkPzsKKwljbXBfb2soJHJldHVybiwgIiE9IiwgMCwgInBnX3JlY3Zs b2dpY2FsIGV4aXRlZCBub24temVybyIpOworCWlmICgkcmV0dXJuKSB7CisJCWxpa2UoJHN0 ZGVyciwgcXIvJGNoZWNrX3N0ZGVyci8sICdzbG90IGhhcyBiZWVuIGludmFsaWRhdGVkJyk7 CisJfQorCisJcmV0dXJuIDA7Cit9CisKKyMgQ2hlY2sgaWYgYWxsIHRoZSBzbG90cyBvbiBz dGFuZGJ5IGFyZSBkcm9wcGVkLiBUaGVzZSBpbmNsdWRlIHRoZSAnYWN0aXZlc2xvdCcKKyMg dGhhdCB3YXMgYWNxdWlyZWQgYnkgbWFrZV9zbG90X2FjdGl2ZSgpLCBhbmQgdGhlIG5vbi1h Y3RpdmUgJ2luYWN0aXZlc2xvdCcuCitzdWIgY2hlY2tfc2xvdHNfZHJvcHBlZAoreworCW15 ICgkc2xvdF91c2VyX2hhbmRsZSkgPSBAXzsKKworCWlzKCRub2RlX3N0YW5kYnktPnNsb3Qo J2luYWN0aXZlc2xvdCcpLT57J3Nsb3RfdHlwZSd9LCAnJywgJ2luYWN0aXZlc2xvdCBvbiBz dGFuZGJ5IGRyb3BwZWQnKTsKKwlpcygkbm9kZV9zdGFuZGJ5LT5zbG90KCdhY3RpdmVzbG90 JyktPnsnc2xvdF90eXBlJ30sICcnLCAnYWN0aXZlc2xvdCBvbiBzdGFuZGJ5IGRyb3BwZWQn KTsKKworCWNoZWNrX3BnX3JlY3Zsb2dpY2FsX3N0ZGVycigkc2xvdF91c2VyX2hhbmRsZSwg ImNvbmZsaWN0IHdpdGggcmVjb3ZlcnkiKTsKK30KKworIyBDaGVjayBpZiBhbGwgdGhlIHNs b3RzIG9uIHN0YW5kYnkgYXJlIGRyb3BwZWQuIFRoZXNlIGluY2x1ZGUgdGhlICdhY3RpdmVz bG90JworIyB0aGF0IHdhcyBhY3F1aXJlZCBieSBtYWtlX3Nsb3RfYWN0aXZlKCksIGFuZCB0 aGUgbm9uLWFjdGl2ZSAnaW5hY3RpdmVzbG90Jy4KK3N1YiBjaGFuZ2VfaG90X3N0YW5kYnlf ZmVlZGJhY2tfYW5kX3dhaXRfZm9yX3htaW5zCit7CisJbXkgKCRoc2YsICRpbnZhbGlkYXRl ZCkgPSBAXzsKKworCSRub2RlX3N0YW5kYnktPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNv bmYnLHFxWworCWhvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gJGhzZgorCV0pOworCisJJG5vZGVf c3RhbmRieS0+cmVsb2FkOworCisJaWYgKCRoc2YgJiYgJGludmFsaWRhdGVkKQorCXsKKwkJ IyBXaXRoIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIG9uLCB4bWluIHNob3VsZCBhZHZhbmNlLAor CQkjIGJ1dCBjYXRhbG9nX3htaW4gc2hvdWxkIHN0aWxsIHJlbWFpbiBOVUxMIHNpbmNlIHRo ZXJlIGlzIG5vIGxvZ2ljYWwgc2xvdC4KKwkJd2FpdF9mb3JfeG1pbnMoJG5vZGVfcHJpbWFy eSwgJHByaW1hcnlfc2xvdG5hbWUsCisJCQkgICAieG1pbiBJUyBOT1QgTlVMTCBBTkQgY2F0 YWxvZ194bWluIElTIE5VTEwiKTsKKwl9CisJZWxzaWYgKCRoc2YpCisJeworCQkjIFdpdGgg aG90X3N0YW5kYnlfZmVlZGJhY2sgb24sIHhtaW4gYW5kIGNhdGFsb2dfeG1pbiBzaG91bGQg YWR2YW5jZS4KKwkJd2FpdF9mb3JfeG1pbnMoJG5vZGVfcHJpbWFyeSwgJHByaW1hcnlfc2xv dG5hbWUsCisJCQkgICAieG1pbiBJUyBOT1QgTlVMTCBBTkQgY2F0YWxvZ194bWluIElTIE5P VCBOVUxMIik7CisJfQorCWVsc2UKKwl7CisJCSMgQm90aCBzaG91bGQgYmUgTlVMTCBzaW5j ZSBoc19mZWVkYmFjayBpcyBvZmYKKwkJd2FpdF9mb3JfeG1pbnMoJG5vZGVfcHJpbWFyeSwg JHByaW1hcnlfc2xvdG5hbWUsCisJCQkgICAieG1pbiBJUyBOVUxMIEFORCBjYXRhbG9nX3ht aW4gSVMgTlVMTCIpOworCisJfQorfQorCisjIENoZWNrIGNvbmZsaWN0aW5nIHN0YXR1cyBp biBwZ19yZXBsaWNhdGlvbl9zbG90cy4KK3N1YiBjaGVja19zbG90c19jb25mbGljdGluZ19z dGF0dXMKK3sKKwlteSAoJGNvbmZsaWN0aW5nKSA9IEBfOworCisJaWYgKCRjb25mbGljdGlu ZykKKwl7CisJCSRyZXMgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoCisJCQkJJ3Bvc3Rn cmVzJywgcXEoCisJCQkJIHNlbGVjdCBib29sX2FuZChjb25mbGljdGluZykgZnJvbSBwZ19y ZXBsaWNhdGlvbl9zbG90czspKTsKKworCQlpcygkcmVzLCAndCcsCisJCQkiTG9naWNhbCBz bG90cyBhcmUgcmVwb3J0ZWQgYXMgY29uZmxpY3RpbmciKTsKKwl9CisJZWxzZQorCXsKKwkJ JHJlcyA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgKKwkJCQkncG9zdGdyZXMnLCBxcSgK KwkJCQlzZWxlY3QgYm9vbF9vcihjb25mbGljdGluZykgZnJvbSBwZ19yZXBsaWNhdGlvbl9z bG90czspKTsKKworCQlpcygkcmVzLCAnZicsCisJCQkiTG9naWNhbCBzbG90cyBhcmUgcmVw b3J0ZWQgYXMgbm9uIGNvbmZsaWN0aW5nIik7CisJfQorfQorCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKyMgSW5pdGlhbGl6ZSBwcmltYXJ5IG5vZGUKKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworCiskbm9kZV9wcmltYXJ5LT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gMSwg aGFzX2FyY2hpdmluZyA9PiAxKTsKKyRub2RlX3ByaW1hcnktPmFwcGVuZF9jb25mKCdwb3N0 Z3Jlc3FsLmNvbmYnLCBxeword2FsX2xldmVsID0gJ2xvZ2ljYWwnCittYXhfcmVwbGljYXRp b25fc2xvdHMgPSA0CittYXhfd2FsX3NlbmRlcnMgPSA0Citsb2dfbWluX21lc3NhZ2VzID0g J2RlYnVnMicKK2xvZ19lcnJvcl92ZXJib3NpdHkgPSB2ZXJib3NlCit9KTsKKyRub2RlX3By aW1hcnktPmR1bXBfaW5mbzsKKyRub2RlX3ByaW1hcnktPnN0YXJ0OworCiskbm9kZV9wcmlt YXJ5LT5wc3FsKCdwb3N0Z3JlcycsIHFbQ1JFQVRFIERBVEFCQVNFIHRlc3RkYl0pOworCisk bm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW1NFTEVDVCAqIEZST00gcGdf Y3JlYXRlX3BoeXNpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoJyRwcmltYXJ5X3Nsb3RuYW1lJyk7 XSk7CisKKyMgQ2hlY2sgY29uZmxpY3RpbmcgaXMgTlVMTCBmb3IgcGh5c2ljYWwgc2xvdAor JHJlcyA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXFbCisJ CSBTRUxFQ1QgY29uZmxpY3RpbmcgaXMgbnVsbCBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3Rz IHdoZXJlIHNsb3RfbmFtZSA9ICckcHJpbWFyeV9zbG90bmFtZSc7XSk7CisKK2lzKCRyZXMs ICd0JywKKwkiUGh5c2ljYWwgc2xvdCByZXBvcnRzIGNvbmZsaWN0aW5nIGFzIE5VTEwiKTsK KworbXkgJGJhY2t1cF9uYW1lID0gJ2IxJzsKKyRub2RlX3ByaW1hcnktPmJhY2t1cCgkYmFj a3VwX25hbWUpOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBJbml0aWFsaXplIHN0 YW5kYnkgbm9kZQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworJG5vZGVfc3RhbmRieS0+ aW5pdF9mcm9tX2JhY2t1cCgKKwkkbm9kZV9wcmltYXJ5LCAkYmFja3VwX25hbWUsCisJaGFz X3N0cmVhbWluZyA9PiAxLAorCWhhc19yZXN0b3JpbmcgPT4gMSk7Ciskbm9kZV9zdGFuZGJ5 LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwlxcVtwcmltYXJ5X3Nsb3RfbmFt ZSA9ICckcHJpbWFyeV9zbG90bmFtZSddKTsKKyRub2RlX3N0YW5kYnktPnN0YXJ0OworJG5v ZGVfcHJpbWFyeS0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5Jywg JG5vZGVfcHJpbWFyeS0+bHNuKCdmbHVzaCcpKTsKKworCisjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHRoYXQgbG9naWNhbCBk ZWNvZGluZyBvbiB0aGUgc3RhbmRieQorIyBiZWhhdmVzIGNvcnJlY3RseS4KKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgY3JlYXRl IHRoZSBsb2dpY2FsIHNsb3RzCitjcmVhdGVfbG9naWNhbF9zbG90cygpOworCiskbm9kZV9w cmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW0NSRUFURSBUQUJMRSBkZWNvZGluZ190 ZXN0KHggaW50ZWdlciwgeSB0ZXh0KTtdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgn dGVzdGRiJywgcXFbSU5TRVJUIElOVE8gZGVjb2RpbmdfdGVzdCh4LHkpIFNFTEVDVCBzLCBz Ojp0ZXh0IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIHM7XSk7CisKKyRub2RlX3ByaW1h cnktPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3By aW1hcnktPmxzbignZmx1c2gnKSk7CisKK215ICRyZXN1bHQgPSAkbm9kZV9zdGFuZGJ5LT5z YWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFbU0VMRUNUIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hh bmdlcygnYWN0aXZlc2xvdCcsIE5VTEwsIE5VTEwpO10pOworCisjIHRlc3QgaWYgYmFzaWMg ZGVjb2Rpbmcgd29ya3MKK2lzKHNjYWxhcihteSBAZm9vYmFyID0gc3BsaXQgL14vbSwgJHJl c3VsdCksCisJMTQsICdEZWNvZGluZyBwcm9kdWNlZCAxNCByb3dzICgyIEJFR0lOL0NPTU1J VCBhbmQgMTAgcm93cyknKTsKKworIyBJbnNlcnQgc29tZSByb3dzIGFuZCB2ZXJpZnkgdGhh dCB3ZSBnZXQgdGhlIHNhbWUgcmVzdWx0cyBmcm9tIHBnX3JlY3Zsb2dpY2FsCisjIGFuZCB0 aGUgU1FMIGludGVyZmFjZS4KKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywK KwlxcVtJTlNFUlQgSU5UTyBkZWNvZGluZ190ZXN0KHgseSkgU0VMRUNUIHMsIHM6OnRleHQg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSw0KSBzO10KKyk7CisKK215ICRleHBlY3RlZCA9IHF7 QkVHSU4KK3RhYmxlIHB1YmxpYy5kZWNvZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06 MSB5W3RleHRdOicxJwordGFibGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6IElOU0VSVDogeFtp bnRlZ2VyXToyIHlbdGV4dF06JzInCit0YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVzdDogSU5T RVJUOiB4W2ludGVnZXJdOjMgeVt0ZXh0XTonMycKK3RhYmxlIHB1YmxpYy5kZWNvZGluZ190 ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06NCB5W3RleHRdOic0JworQ09NTUlUfTsKKworJG5v ZGVfcHJpbWFyeS0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5Jywg JG5vZGVfcHJpbWFyeS0+bHNuKCdmbHVzaCcpKTsKKworbXkgJHN0ZG91dF9zcWwgPSAkbm9k ZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFbU0VMRUNUIGRhdGEgRlJPTSBw Z19sb2dpY2FsX3Nsb3RfcGVla19jaGFuZ2VzKCdhY3RpdmVzbG90JywgTlVMTCwgTlVMTCwg J2luY2x1ZGUteGlkcycsICcwJywgJ3NraXAtZW1wdHkteGFjdHMnLCAnMScpO10KKyk7CisK K2lzKCRzdGRvdXRfc3FsLCAkZXhwZWN0ZWQsICdnb3QgZXhwZWN0ZWQgb3V0cHV0IGZyb20g U1FMIGRlY29kaW5nIHNlc3Npb24nKTsKKworbXkgJGVuZHBvcyA9ICRub2RlX3N0YW5kYnkt PnNhZmVfcHNxbCgndGVzdGRiJywKKwkiU0VMRUNUIGxzbiBGUk9NIHBnX2xvZ2ljYWxfc2xv dF9wZWVrX2NoYW5nZXMoJ2FjdGl2ZXNsb3QnLCBOVUxMLCBOVUxMKSBPUkRFUiBCWSBsc24g REVTQyBMSU1JVCAxOyIKKyk7CisKKyMgSW5zZXJ0IHNvbWUgcm93cyBhZnRlciAkZW5kcG9z LCB3aGljaCB3ZSB3b24ndCByZWFkLgorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0 ZGInLAorCXFxW0lOU0VSVCBJTlRPIGRlY29kaW5nX3Rlc3QoeCx5KSBTRUxFQ1Qgcywgczo6 dGV4dCBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1LDUwKSBzO10KKyk7CisKKyRub2RlX3ByaW1h cnktPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3By aW1hcnktPmxzbignZmx1c2gnKSk7CisKK215ICRzdGRvdXRfcmVjdiA9ICRub2RlX3N0YW5k YnktPnBnX3JlY3Zsb2dpY2FsX3VwdG8oCisgICAgJ3Rlc3RkYicsICdhY3RpdmVzbG90Jywg JGVuZHBvcywgJGRlZmF1bHRfdGltZW91dCwKKyAgICAnaW5jbHVkZS14aWRzJyAgICAgPT4g JzAnLAorICAgICdza2lwLWVtcHR5LXhhY3RzJyA9PiAnMScpOworY2hvbXAoJHN0ZG91dF9y ZWN2KTsKK2lzKCRzdGRvdXRfcmVjdiwgJGV4cGVjdGVkLAorICAgICdnb3Qgc2FtZSBleHBl Y3RlZCBvdXRwdXQgZnJvbSBwZ19yZWN2bG9naWNhbCBkZWNvZGluZyBzZXNzaW9uJyk7CisK KyRub2RlX3N0YW5kYnktPnBvbGxfcXVlcnlfdW50aWwoJ3Rlc3RkYicsCisJIlNFTEVDVCBF WElTVFMgKFNFTEVDVCAxIEZST00gcGdfcmVwbGljYXRpb25fc2xvdHMgV0hFUkUgc2xvdF9u YW1lID0gJ2FjdGl2ZXNsb3QnIEFORCBhY3RpdmVfcGlkIElTIE5VTEwpIgorKSBvciBkaWUg InNsb3QgbmV2ZXIgYmVjYW1lIGluYWN0aXZlIjsKKworJHN0ZG91dF9yZWN2ID0gJG5vZGVf c3RhbmRieS0+cGdfcmVjdmxvZ2ljYWxfdXB0bygKKyAgICAndGVzdGRiJywgJ2FjdGl2ZXNs b3QnLCAkZW5kcG9zLCAkZGVmYXVsdF90aW1lb3V0LAorICAgICdpbmNsdWRlLXhpZHMnICAg ICA9PiAnMCcsCisgICAgJ3NraXAtZW1wdHkteGFjdHMnID0+ICcxJyk7CitjaG9tcCgkc3Rk b3V0X3JlY3YpOworaXMoJHN0ZG91dF9yZWN2LCAnJywgJ3BnX3JlY3Zsb2dpY2FsIGFja25v d2xlZGdlZCBjaGFuZ2VzJyk7CisKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAnQ1JFQVRFIERBVEFCQVNFIG90aGVyZGInKTsKKworaXMoICRub2RlX3ByaW1hcnkt PnBzcWwoCisgICAgICAgICdvdGhlcmRiJywKKyAgICAgICAgIlNFTEVDVCBsc24gRlJPTSBw Z19sb2dpY2FsX3Nsb3RfcGVla19jaGFuZ2VzKCdhY3RpdmVzbG90JywgTlVMTCwgTlVMTCkg T1JERVIgQlkgbHNuIERFU0MgTElNSVQgMTsiCisgICAgKSwKKyAgICAzLAorICAgICdyZXBs YXlpbmcgbG9naWNhbCBzbG90IGZyb20gYW5vdGhlciBkYXRhYmFzZSBmYWlscycpOworCisj IGRyb3AgdGhlIGxvZ2ljYWwgc2xvdHMKK2Ryb3BfbG9naWNhbF9zbG90cygpOworCisjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBSZWNv dmVyeSBjb25mbGljdDogSW52YWxpZGF0ZSBjb25mbGljdGluZyBzbG90cywgaW5jbHVkaW5n IGluLXVzZSBzbG90cworIyBTY2VuYXJpbyAxOiBob3Rfc3RhbmRieV9mZWVkYmFjayBvZmYg YW5kIHZhY3V1bSBGVUxMCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworCisjIGNyZWF0ZSB0aGUgbG9naWNhbCBzbG90cworY3JlYXRlX2xv Z2ljYWxfc2xvdHMoKTsKKworIyBPbmUgd2F5IHRvIHByb2R1Y2UgcmVjb3ZlcnkgY29uZmxp Y3QgaXMgdG8gY3JlYXRlL2Ryb3AgYSByZWxhdGlvbiBhbmQKKyMgbGF1bmNoIGEgdmFjdXVt IGZ1bGwgb24gcGdfY2xhc3Mgd2l0aCBob3Rfc3RhbmRieV9mZWVkYmFjayB0dXJuZWQgb2Zm IG9uCisjIHRoZSBzdGFuZGJ5LgorY2hhbmdlX2hvdF9zdGFuZGJ5X2ZlZWRiYWNrX2FuZF93 YWl0X2Zvcl94bWlucygwLDEpOworCiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgxKTsK KworIyBUaGlzIHNob3VsZCB0cmlnZ2VyIHRoZSBjb25mbGljdAorJG5vZGVfcHJpbWFyeS0+ c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtDUkVBVEUgVEFCTEUgY29uZmxpY3RfdGVzdCh4IGlu dGVnZXIsIHkgdGV4dCk7XSk7Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYics IHFxW0RST1AgVEFCTEUgY29uZmxpY3RfdGVzdDtdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVf cHNxbCgndGVzdGRiJywgJ1ZBQ1VVTSBmdWxsIHBnX2NsYXNzOycpOworCiskbm9kZV9wcmlt YXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9w cmltYXJ5LT5sc24oJ2ZsdXNoJykpOworCisjIG1lc3NhZ2Ugc2hvdWxkIGJlIGlzc3VlZAor b2soIGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBz bG90IFwiaW5hY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCByZWNvdmVy eSIpLAorICAnaW5hY3RpdmVzbG90IHNsb3QgaW52YWxpZGF0aW9uIGlzIGxvZ2dlZCB3aXRo IHZhY3V1bSBGVUxMIG9uIHBnX2NsYXNzJyk7CisKK29rKCBmaW5kX2luX2xvZygKKyAgICRu b2RlX3N0YW5kYnksCisgICJpbnZhbGlkYXRpbmcgc2xvdCBcImFjdGl2ZXNsb3RcIiBiZWNh dXNlIGl0IGNvbmZsaWN0cyB3aXRoIHJlY292ZXJ5IiksCisgICdhY3RpdmVzbG90IHNsb3Qg aW52YWxpZGF0aW9uIGlzIGxvZ2dlZCB3aXRoIHZhY3V1bSBGVUxMIG9uIHBnX2NsYXNzJyk7 CisKKyMgVmVyaWZ5IHRoYXQgcGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMuY29uZmxfYWN0 aXZlX2xvZ2ljYWxzbG90IGhhcyBiZWVuIHVwZGF0ZWQKK29rKCAkbm9kZV9zdGFuZGJ5LT5w b2xsX3F1ZXJ5X3VudGlsKAorCSdwb3N0Z3JlcycsCisJInNlbGVjdCAoY29uZmxfYWN0aXZl X2xvZ2ljYWxzbG90ID0gMSkgZnJvbSBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cyB3aGVy ZSBkYXRuYW1lID0gJ3Rlc3RkYiciLCAndCcpLAorCSdjb25mbF9hY3RpdmVfbG9naWNhbHNs b3QgdXBkYXRlZCcpIG9yIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgY29uZmxfYWN0aXZlX2xv Z2ljYWxzbG90IHRvIGJlIHVwZGF0ZWQiOworCisjIFZlcmlmeSBzbG90cyBhcmUgcmVwb3J0 ZWQgYXMgY29uZmxpY3RpbmcgaW4gcGdfcmVwbGljYXRpb25fc2xvdHMKK2NoZWNrX3Nsb3Rz X2NvbmZsaWN0aW5nX3N0YXR1cygxKTsKKworJGhhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUo MCk7CisjIFdlIGFyZSBub3QgYWJsZSB0byByZWFkIGZyb20gdGhlIHNsb3QgYXMgaXQgaGFz IGJlZW4gaW52YWxpZGF0ZWQKK2NoZWNrX3BnX3JlY3Zsb2dpY2FsX3N0ZGVycigkaGFuZGxl LCAiY2Fubm90IHJlYWQgZnJvbSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QgXCJhY3RpdmVz bG90XCIiKTsKKworIyBUdXJuIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIGJhY2sgb24KK2NoYW5n ZV9ob3Rfc3RhbmRieV9mZWVkYmFja19hbmRfd2FpdF9mb3JfeG1pbnMoMSwxKTsKKworIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUmVj b3ZlcnkgY29uZmxpY3Q6IEludmFsaWRhdGUgY29uZmxpY3Rpbmcgc2xvdHMsIGluY2x1ZGlu ZyBpbi11c2Ugc2xvdHMKKyMgU2NlbmFyaW8gMjogY29uZmxpY3QgZHVlIHRvIHJvdyByZW1v dmFsIHdpdGggaG90X3N0YW5kYnlfZmVlZGJhY2sgb2ZmLgorIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBnZXQgdGhlIHBvc2l0aW9u IHRvIHNlYXJjaCBmcm9tIGluIHRoZSBzdGFuZGJ5IGxvZ2ZpbGUKK215ICRsb2dzdGFydCA9 IC1zICRub2RlX3N0YW5kYnktPmxvZ2ZpbGU7CisKKyMgZHJvcCB0aGUgbG9naWNhbCBzbG90 cworZHJvcF9sb2dpY2FsX3Nsb3RzKCk7CisKKyMgY3JlYXRlIHRoZSBsb2dpY2FsIHNsb3Rz CitjcmVhdGVfbG9naWNhbF9zbG90cygpOworCisjIE9uZSB3YXkgdG8gcHJvZHVjZSByZWNv dmVyeSBjb25mbGljdCBpcyB0byBjcmVhdGUvZHJvcCBhIHJlbGF0aW9uIGFuZAorIyBsYXVu Y2ggYSB2YWN1dW0gb24gcGdfY2xhc3Mgd2l0aCBob3Rfc3RhbmRieV9mZWVkYmFjayB0dXJu ZWQgb2ZmIG9uIHRoZSBzdGFuZGJ5LgorY2hhbmdlX2hvdF9zdGFuZGJ5X2ZlZWRiYWNrX2Fu ZF93YWl0X2Zvcl94bWlucygwLDEpOworCiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgx KTsKKworIyBUaGlzIHNob3VsZCB0cmlnZ2VyIHRoZSBjb25mbGljdAorJG5vZGVfcHJpbWFy eS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtDUkVBVEUgVEFCTEUgY29uZmxpY3RfdGVzdCh4 IGludGVnZXIsIHkgdGV4dCk7XSk7Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3Rk YicsIHFxW0RST1AgVEFCTEUgY29uZmxpY3RfdGVzdDtdKTsKKyRub2RlX3ByaW1hcnktPnNh ZmVfcHNxbCgndGVzdGRiJywgJ1ZBQ1VVTSBwZ19jbGFzczsnKTsKKworJG5vZGVfcHJpbWFy eS0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5JywgJG5vZGVfcHJp bWFyeS0+bHNuKCdmbHVzaCcpKTsKKworIyBtZXNzYWdlIHNob3VsZCBiZSBpc3N1ZWQKK29r KCBmaW5kX2luX2xvZygKKyAgICRub2RlX3N0YW5kYnksCisgICJpbnZhbGlkYXRpbmcgc2xv dCBcImluYWN0aXZlc2xvdFwiIGJlY2F1c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3Zlcnki LCAkbG9nc3RhcnQpLAorICAnaW5hY3RpdmVzbG90IHNsb3QgaW52YWxpZGF0aW9uIGlzIGxv Z2dlZCB3aXRoIHZhY3V1bSBvbiBwZ19jbGFzcycpOworCitvayggZmluZF9pbl9sb2coCisg ICAkbm9kZV9zdGFuZGJ5LAorICAiaW52YWxpZGF0aW5nIHNsb3QgXCJhY3RpdmVzbG90XCIg YmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCByZWNvdmVyeSIsICRsb2dzdGFydCksCisgICdh Y3RpdmVzbG90IHNsb3QgaW52YWxpZGF0aW9uIGlzIGxvZ2dlZCB3aXRoIHZhY3V1bSBvbiBw Z19jbGFzcycpOworCisjIFZlcmlmeSB0aGF0IHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3Rz LmNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCBoYXMgYmVlbiB1cGRhdGVkCisjIHdlIG5vdyBl eHBlY3QgMiBjb25mbGljdHMgcmVwb3J0ZWQgYXMgdGhlIGNvdW50ZXIgcGVyc2lzdCBhY3Jv c3MgcmVsb2Fkcworb2soICRub2RlX3N0YW5kYnktPnBvbGxfcXVlcnlfdW50aWwoCisJJ3Bv c3RncmVzJywKKwkic2VsZWN0IChjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgPSAyKSBmcm9t IHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzIHdoZXJlIGRhdG5hbWUgPSAndGVzdGRiJyIs ICd0JyksCisJJ2NvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCB1cGRhdGVkJykgb3IgZGllICJU aW1lZCBvdXQgd2FpdGluZyBjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgdG8gYmUgdXBkYXRl ZCI7CisKKyMgVmVyaWZ5IHNsb3RzIGFyZSByZXBvcnRlZCBhcyBjb25mbGljdGluZyBpbiBw Z19yZXBsaWNhdGlvbl9zbG90cworY2hlY2tfc2xvdHNfY29uZmxpY3Rpbmdfc3RhdHVzKDEp OworCiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgwKTsKKworIyBXZSBhcmUgbm90IGFi bGUgdG8gcmVhZCBmcm9tIHRoZSBzbG90IGFzIGl0IGhhcyBiZWVuIGludmFsaWRhdGVkCitj aGVja19wZ19yZWN2bG9naWNhbF9zdGRlcnIoJGhhbmRsZSwgImNhbm5vdCByZWFkIGZyb20g bG9naWNhbCByZXBsaWNhdGlvbiBzbG90IFwiYWN0aXZlc2xvdFwiIik7CisKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFJlY292ZXJ5 IGNvbmZsaWN0OiBTYW1lIGFzIFNjZW5hcmlvIDIgYnV0IG9uIGEgbm9uIGNhdGFsb2cgdGFi bGUKKyMgU2NlbmFyaW8gMzogTm8gY29uZmxpY3QgZXhwZWN0ZWQuCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIGdldCB0aGUgcG9z aXRpb24gdG8gc2VhcmNoIGZyb20gaW4gdGhlIHN0YW5kYnkgbG9nZmlsZQorJGxvZ3N0YXJ0 ID0gLXMgJG5vZGVfc3RhbmRieS0+bG9nZmlsZTsKKworIyBkcm9wIHRoZSBsb2dpY2FsIHNs b3RzCitkcm9wX2xvZ2ljYWxfc2xvdHMoKTsKKworIyBjcmVhdGUgdGhlIGxvZ2ljYWwgc2xv dHMKK2NyZWF0ZV9sb2dpY2FsX3Nsb3RzKCk7CisKKyMgcHV0IGhvdCBzdGFuZGJ5IGZlZWRi YWNrIHRvIG9mZgorY2hhbmdlX2hvdF9zdGFuZGJ5X2ZlZWRiYWNrX2FuZF93YWl0X2Zvcl94 bWlucygwLDEpOworCiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgxKTsKKworIyBUaGlz IHNob3VsZCBub3QgdHJpZ2dlciBhIGNvbmZsaWN0Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3Bz cWwoJ3Rlc3RkYicsIHFxW0NSRUFURSBUQUJMRSBjb25mbGljdF90ZXN0KHggaW50ZWdlciwg eSB0ZXh0KTtdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbSU5T RVJUIElOVE8gY29uZmxpY3RfdGVzdCh4LHkpIFNFTEVDVCBzLCBzOjp0ZXh0IEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsNCkgcztdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVz dGRiJywgcXFbVVBEQVRFIGNvbmZsaWN0X3Rlc3Qgc2V0IHg9MSwgeT0xO10pOworJG5vZGVf cHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCAnVkFDVVVNIGNvbmZsaWN0X3Rlc3Q7Jyk7 CisKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3Jl cGxheScsICRub2RlX3ByaW1hcnktPmxzbignZmx1c2gnKSk7CisKKyMgbWVzc2FnZSBzaG91 bGQgbm90IGJlIGlzc3VlZAorb2soICFmaW5kX2luX2xvZygKKyAgICRub2RlX3N0YW5kYnks CisgICJpbnZhbGlkYXRpbmcgc2xvdCBcImluYWN0aXZlc2xvdFwiIGJlY2F1c2UgaXQgY29u ZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCAkbG9nc3RhcnQpLAorICAnaW5hY3RpdmVzbG90IHNs b3QgaW52YWxpZGF0aW9uIGlzIG5vdCBsb2dnZWQgd2l0aCB2YWN1dW0gb24gY29uZmxpY3Rf dGVzdCcpOworCitvayggIWZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImlu dmFsaWRhdGluZyBzbG90IFwiYWN0aXZlc2xvdFwiIGJlY2F1c2UgaXQgY29uZmxpY3RzIHdp dGggcmVjb3ZlcnkiLCAkbG9nc3RhcnQpLAorICAnYWN0aXZlc2xvdCBzbG90IGludmFsaWRh dGlvbiBpcyBub3QgbG9nZ2VkIHdpdGggdmFjdXVtIG9uIGNvbmZsaWN0X3Rlc3QnKTsKKwor IyBWZXJpZnkgdGhhdCBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cy5jb25mbF9hY3RpdmVf bG9naWNhbHNsb3QgaGFzIG5vdCBiZWVuIHVwZGF0ZWQKKyMgd2Ugbm93IHN0aWxsIGV4cGVj dCAyIGNvbmZsaWN0cyByZXBvcnRlZCBhcyB0aGUgY291bnRlciBwZXJzaXN0IGFjcm9zcyBy ZWxvYWRzCitvayggJG5vZGVfc3RhbmRieS0+cG9sbF9xdWVyeV91bnRpbCgKKwkncG9zdGdy ZXMnLAorCSJzZWxlY3QgKGNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCA9IDIpIGZyb20gcGdf c3RhdF9kYXRhYmFzZV9jb25mbGljdHMgd2hlcmUgZGF0bmFtZSA9ICd0ZXN0ZGInIiwgJ3Qn KSwKKwknY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90IG5vdCB1cGRhdGVkJykgb3IgZGllICJU aW1lZCBvdXQgd2FpdGluZyBjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgdG8gYmUgdXBkYXRl ZCI7CisKKyMgVmVyaWZ5IHNsb3RzIGFyZSByZXBvcnRlZCBhcyBub24gY29uZmxpY3Rpbmcg aW4gcGdfcmVwbGljYXRpb25fc2xvdHMKK2NoZWNrX3Nsb3RzX2NvbmZsaWN0aW5nX3N0YXR1 cygwKTsKKworIyBUdXJuIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIGJhY2sgb24KK2NoYW5nZV9o b3Rfc3RhbmRieV9mZWVkYmFja19hbmRfd2FpdF9mb3JfeG1pbnMoMSwgMCk7CisKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFJlY292 ZXJ5IGNvbmZsaWN0OiBJbnZhbGlkYXRlIGNvbmZsaWN0aW5nIHNsb3RzLCBpbmNsdWRpbmcg aW4tdXNlIHNsb3RzCisjIFNjZW5hcmlvIDQ6IGNvbmZsaWN0IGR1ZSB0byBvbi1hY2Nlc3Mg cHJ1bmluZy4KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisKKyMgZ2V0IHRoZSBwb3NpdGlvbiB0byBzZWFyY2ggZnJvbSBpbiB0aGUgc3Rh bmRieSBsb2dmaWxlCiskbG9nc3RhcnQgPSAtcyAkbm9kZV9zdGFuZGJ5LT5sb2dmaWxlOwor CisjIGRyb3AgdGhlIGxvZ2ljYWwgc2xvdHMKK2Ryb3BfbG9naWNhbF9zbG90cygpOworCisj IGNyZWF0ZSB0aGUgbG9naWNhbCBzbG90cworY3JlYXRlX2xvZ2ljYWxfc2xvdHMoKTsKKwor IyBPbmUgd2F5IHRvIHByb2R1Y2UgcmVjb3ZlcnkgY29uZmxpY3QgaXMgdG8gdHJpZ2dlciBh biBvbi1hY2Nlc3MgcHJ1bmluZworIyBvbiBhIHJlbGF0aW9uIG1hcmtlZCBhcyB1c2VyX2Nh dGFsb2dfdGFibGUuCitjaGFuZ2VfaG90X3N0YW5kYnlfZmVlZGJhY2tfYW5kX3dhaXRfZm9y X3htaW5zKDAsMCk7CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKDEpOworCisjIFRo aXMgc2hvdWxkIHRyaWdnZXIgdGhlIGNvbmZsaWN0Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3Bz cWwoJ3Rlc3RkYicsIHFxW0NSRUFURSBUQUJMRSBwcnVuKGlkIGludGVnZXIsIHMgY2hhcigy MDAwKSkgV0lUSCAoZmlsbGZhY3RvciA9IDc1LCB1c2VyX2NhdGFsb2dfdGFibGUgPSB0cnVl KTtdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbSU5TRVJUIElO VE8gcHJ1biBWQUxVRVMgKDEsICdBJyk7XSk7Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwo J3Rlc3RkYicsIHFxW1VQREFURSBwcnVuIFNFVCBzID0gJ0InO10pOworJG5vZGVfcHJpbWFy eS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtVUERBVEUgcHJ1biBTRVQgcyA9ICdDJztdKTsK KyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbVVBEQVRFIHBydW4gU0VU IHMgPSAnRCc7XSk7Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW1VQ REFURSBwcnVuIFNFVCBzID0gJ0UnO10pOworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9j YXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24oJ2Zs dXNoJykpOworCisjIG1lc3NhZ2Ugc2hvdWxkIGJlIGlzc3VlZAorb2soIGZpbmRfaW5fbG9n KAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90IFwiaW5hY3RpdmVz bG90XCIgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCByZWNvdmVyeSIsICRsb2dzdGFydCks CisgICdpbmFjdGl2ZXNsb3Qgc2xvdCBpbnZhbGlkYXRpb24gaXMgbG9nZ2VkIHdpdGggb24t YWNjZXNzIHBydW5pbmcnKTsKKworb2soIGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRi eSwKKyAgImludmFsaWRhdGluZyBzbG90IFwiYWN0aXZlc2xvdFwiIGJlY2F1c2UgaXQgY29u ZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCAkbG9nc3RhcnQpLAorICAnYWN0aXZlc2xvdCBzbG90 IGludmFsaWRhdGlvbiBpcyBsb2dnZWQgd2l0aCBvbi1hY2Nlc3MgcHJ1bmluZycpOworCisj IFZlcmlmeSB0aGF0IHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzLmNvbmZsX2FjdGl2ZV9s b2dpY2Fsc2xvdCBoYXMgYmVlbiB1cGRhdGVkCisjIHdlIG5vdyBleHBlY3QgMyBjb25mbGlj dHMgcmVwb3J0ZWQgYXMgdGhlIGNvdW50ZXIgcGVyc2lzdCBhY3Jvc3MgcmVsb2Fkcworb2so ICRub2RlX3N0YW5kYnktPnBvbGxfcXVlcnlfdW50aWwoCisJJ3Bvc3RncmVzJywKKwkic2Vs ZWN0IChjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgPSAzKSBmcm9tIHBnX3N0YXRfZGF0YWJh c2VfY29uZmxpY3RzIHdoZXJlIGRhdG5hbWUgPSAndGVzdGRiJyIsICd0JyksCisJJ2NvbmZs X2FjdGl2ZV9sb2dpY2Fsc2xvdCB1cGRhdGVkJykgb3IgZGllICJUaW1lZCBvdXQgd2FpdGlu ZyBjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgdG8gYmUgdXBkYXRlZCI7CisKKyMgVmVyaWZ5 IHNsb3RzIGFyZSByZXBvcnRlZCBhcyBjb25mbGljdGluZyBpbiBwZ19yZXBsaWNhdGlvbl9z bG90cworY2hlY2tfc2xvdHNfY29uZmxpY3Rpbmdfc3RhdHVzKDEpOworCiskaGFuZGxlID0g bWFrZV9zbG90X2FjdGl2ZSgwKTsKKworIyBXZSBhcmUgbm90IGFibGUgdG8gcmVhZCBmcm9t IHRoZSBzbG90IGFzIGl0IGhhcyBiZWVuIGludmFsaWRhdGVkCitjaGVja19wZ19yZWN2bG9n aWNhbF9zdGRlcnIoJGhhbmRsZSwgImNhbm5vdCByZWFkIGZyb20gbG9naWNhbCByZXBsaWNh dGlvbiBzbG90IFwiYWN0aXZlc2xvdFwiIik7CisKKyMgVHVybiBob3Rfc3RhbmRieV9mZWVk YmFjayBiYWNrIG9uCitjaGFuZ2VfaG90X3N0YW5kYnlfZmVlZGJhY2tfYW5kX3dhaXRfZm9y X3htaW5zKDEsIDEpOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworIyBSZWNvdmVyeSBjb25mbGljdDogSW52YWxpZGF0ZSBjb25mbGlj dGluZyBzbG90cywgaW5jbHVkaW5nIGluLXVzZSBzbG90cworIyBTY2VuYXJpbyA1OiBpbmNv cnJlY3Qgd2FsX2xldmVsIG9uIHByaW1hcnkuCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIGdldCB0aGUgcG9zaXRpb24gdG8gc2Vh cmNoIGZyb20gaW4gdGhlIHN0YW5kYnkgbG9nZmlsZQorJGxvZ3N0YXJ0ID0gLXMgJG5vZGVf c3RhbmRieS0+bG9nZmlsZTsKKworIyBkcm9wIHRoZSBsb2dpY2FsIHNsb3RzCitkcm9wX2xv Z2ljYWxfc2xvdHMoKTsKKworIyBjcmVhdGUgdGhlIGxvZ2ljYWwgc2xvdHMKK2NyZWF0ZV9s b2dpY2FsX3Nsb3RzKCk7CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKDEpOworCisj IE1ha2UgcHJpbWFyeSB3YWxfbGV2ZWwgcmVwbGljYS4gVGhpcyB3aWxsIHRyaWdnZXIgc2xv dCBjb25mbGljdC4KKyRub2RlX3ByaW1hcnktPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNv bmYnLHFbCit3YWxfbGV2ZWwgPSAncmVwbGljYScKK10pOworJG5vZGVfcHJpbWFyeS0+cmVz dGFydDsKKworJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5 LCAncmVwbGF5JywgJG5vZGVfcHJpbWFyeS0+bHNuKCdmbHVzaCcpKTsKKworIyBtZXNzYWdl IHNob3VsZCBiZSBpc3N1ZWQKK29rKCBmaW5kX2luX2xvZygKKyAgICRub2RlX3N0YW5kYnks CisgICJpbnZhbGlkYXRpbmcgc2xvdCBcImluYWN0aXZlc2xvdFwiIGJlY2F1c2UgaXQgY29u ZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCAkbG9nc3RhcnQpLAorICAnaW5hY3RpdmVzbG90IHNs b3QgaW52YWxpZGF0aW9uIGlzIGxvZ2dlZCBkdWUgdG8gd2FsX2xldmVsJyk7CisKK29rKCBm aW5kX2luX2xvZygKKyAgICRub2RlX3N0YW5kYnksCisgICJpbnZhbGlkYXRpbmcgc2xvdCBc ImFjdGl2ZXNsb3RcIiBiZWNhdXNlIGl0IGNvbmZsaWN0cyB3aXRoIHJlY292ZXJ5IiwgJGxv Z3N0YXJ0KSwKKyAgJ2FjdGl2ZXNsb3Qgc2xvdCBpbnZhbGlkYXRpb24gaXMgbG9nZ2VkIGR1 ZSB0byB3YWxfbGV2ZWwnKTsKKworIyBWZXJpZnkgdGhhdCBwZ19zdGF0X2RhdGFiYXNlX2Nv bmZsaWN0cy5jb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgaGFzIGJlZW4gdXBkYXRlZAorIyB3 ZSBub3cgZXhwZWN0IDMgY29uZmxpY3RzIHJlcG9ydGVkIGFzIHRoZSBjb3VudGVyIHBlcnNp c3QgYWNyb3NzIHJlbG9hZHMKK29rKCAkbm9kZV9zdGFuZGJ5LT5wb2xsX3F1ZXJ5X3VudGls KAorCSdwb3N0Z3JlcycsCisJInNlbGVjdCAoY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90ID0g NCkgZnJvbSBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cyB3aGVyZSBkYXRuYW1lID0gJ3Rl c3RkYiciLCAndCcpLAorCSdjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgdXBkYXRlZCcpIG9y IGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90IHRvIGJl IHVwZGF0ZWQiOworCisjIFZlcmlmeSBzbG90cyBhcmUgcmVwb3J0ZWQgYXMgY29uZmxpY3Rp bmcgaW4gcGdfcmVwbGljYXRpb25fc2xvdHMKK2NoZWNrX3Nsb3RzX2NvbmZsaWN0aW5nX3N0 YXR1cygxKTsKKworJGhhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoMCk7CisjIFdlIGFyZSBu b3QgYWJsZSB0byByZWFkIGZyb20gdGhlIHNsb3QgYXMgaXQgcmVxdWlyZXMgd2FsX2xldmVs IGF0IGxlYXN0IGxvZ2ljYWwgb24gdGhlIHByaW1hcnkgc2VydmVyCitjaGVja19wZ19yZWN2 bG9naWNhbF9zdGRlcnIoJGhhbmRsZSwgImxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieSBy ZXF1aXJlcyB3YWxfbGV2ZWwgdG8gYmUgYXQgbGVhc3QgbG9naWNhbCBvbiB0aGUgcHJpbWFy eSBzZXJ2ZXIiKTsKKworIyBSZXN0b3JlIHByaW1hcnkgd2FsX2xldmVsCiskbm9kZV9wcmlt YXJ5LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJyxxWword2FsX2xldmVsID0gJ2xv Z2ljYWwnCitdKTsKKyRub2RlX3ByaW1hcnktPnJlc3RhcnQ7Ciskbm9kZV9wcmltYXJ5LT53 YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5 LT5sc24oJ2ZsdXNoJykpOworCiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgwKTsKKyMg YXMgdGhlIHNsb3QgaGFzIGJlZW4gaW52YWxpZGF0ZWQgd2Ugc2hvdWxkIG5vdCBiZSBhYmxl IHRvIHJlYWQKK2NoZWNrX3BnX3JlY3Zsb2dpY2FsX3N0ZGVycigkaGFuZGxlLCAiY2Fubm90 IHJlYWQgZnJvbSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QgXCJhY3RpdmVzbG90XCIiKTsK KworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KyMgRFJPUCBEQVRBQkFTRSBzaG91bGQgZHJvcHMgaXQncyBzbG90cywgaW5jbHVkaW5nIGFj dGl2ZSBzbG90cy4KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisKKyMgZHJvcCB0aGUgbG9naWNhbCBzbG90cworZHJvcF9sb2dpY2FsX3Ns b3RzKCk7CisKKyMgY3JlYXRlIHRoZSBsb2dpY2FsIHNsb3RzCitjcmVhdGVfbG9naWNhbF9z bG90cygpOworCiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgxKTsKKyMgQ3JlYXRlIGEg c2xvdCBvbiBhIGRhdGFiYXNlIHRoYXQgd291bGQgbm90IGJlIGRyb3BwZWQuIFRoaXMgc2xv dCBzaG91bGQgbm90CisjIGdldCBkcm9wcGVkLgorJG5vZGVfc3RhbmRieS0+Y3JlYXRlX2xv Z2ljYWxfc2xvdF9vbl9zdGFuZGJ5KCRub2RlX3ByaW1hcnksICdvdGhlcnNsb3QnLCAncG9z dGdyZXMnKTsKKworIyBkcm9wZGIgb24gdGhlIHByaW1hcnkgdG8gdmVyaWZ5IHNsb3RzIGFy ZSBkcm9wcGVkIG9uIHN0YW5kYnkKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCBxW0RST1AgREFUQUJBU0UgdGVzdGRiXSk7CisKKyRub2RlX3ByaW1hcnktPndhaXRf Zm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3ByaW1hcnktPmxz bignZmx1c2gnKSk7CisKK2lzKCRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCXFbU0VMRUNUIEVYSVNUUyhTRUxFQ1QgMSBGUk9NIHBnX2RhdGFiYXNlIFdIRVJFIGRh dG5hbWUgPSAndGVzdGRiJyldKSwgJ2YnLAorCSdkYXRhYmFzZSBkcm9wcGVkIG9uIHN0YW5k YnknKTsKKworY2hlY2tfc2xvdHNfZHJvcHBlZCgkaGFuZGxlKTsKKworaXMoJG5vZGVfc3Rh bmRieS0+c2xvdCgnb3RoZXJzbG90JyktPnsnc2xvdF90eXBlJ30sICdsb2dpY2FsJywKKwkn b3RoZXJzbG90IG9uIHN0YW5kYnkgbm90IGRyb3BwZWQnKTsKKworIyBDbGVhbnVwIDogbWFu dWFsbHkgZHJvcCB0aGUgc2xvdCB0aGF0IHdhcyBub3QgZHJvcHBlZC4KKyRub2RlX3N0YW5k YnktPnBzcWwoJ3Bvc3RncmVzJywgcVtTRUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90 KCdvdGhlcnNsb3QnKV0pOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHN0YW5kYnkgcHJvbW90aW9uIGFuZCBsb2dpY2Fs IGRlY29kaW5nIGJlaGF2aW9yCisjIGFmdGVyIHRoZSBzdGFuZGJ5IGdldHMgcHJvbW90ZWQu CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor Ciskbm9kZV9wcmltYXJ5LT5wc3FsKCdwb3N0Z3JlcycsIHFbQ1JFQVRFIERBVEFCQVNFIHRl c3RkYl0pOworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtDUkVBVEUg VEFCTEUgZGVjb2RpbmdfdGVzdCh4IGludGVnZXIsIHkgdGV4dCk7XSk7CisKKyMgY3JlYXRl IHRoZSBsb2dpY2FsIHNsb3RzCitjcmVhdGVfbG9naWNhbF9zbG90cygpOworJGhhbmRsZSA9 IG1ha2Vfc2xvdF9hY3RpdmUoMSk7CisKKyMgSW5zZXJ0IHNvbWUgcm93cyBiZWZvcmUgdGhl IHByb21vdGlvbgorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLAorCXFxW0lO U0VSVCBJTlRPIGRlY29kaW5nX3Rlc3QoeCx5KSBTRUxFQ1Qgcywgczo6dGV4dCBGUk9NIGdl bmVyYXRlX3NlcmllcygxLDQpIHM7XQorKTsKKworJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3Jf Y2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5JywgJG5vZGVfcHJpbWFyeS0+bHNuKCdm bHVzaCcpKTsKKworIyBwcm9tb3RlCiskbm9kZV9zdGFuZGJ5LT5wcm9tb3RlOworCisjIGlu c2VydCBzb21lIHJvd3Mgb24gcHJvbW90ZWQgc3RhbmRieQorJG5vZGVfc3RhbmRieS0+c2Fm ZV9wc3FsKCd0ZXN0ZGInLAorCXFxW0lOU0VSVCBJTlRPIGRlY29kaW5nX3Rlc3QoeCx5KSBT RUxFQ1Qgcywgczo6dGV4dCBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1LDcpIHM7XQorKTsKKwor JGV4cGVjdGVkID0gcXtCRUdJTgordGFibGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6IElOU0VS VDogeFtpbnRlZ2VyXToxIHlbdGV4dF06JzEnCit0YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVz dDogSU5TRVJUOiB4W2ludGVnZXJdOjIgeVt0ZXh0XTonMicKK3RhYmxlIHB1YmxpYy5kZWNv ZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06MyB5W3RleHRdOiczJwordGFibGUgcHVi bGljLmRlY29kaW5nX3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXTo0IHlbdGV4dF06JzQnCitD T01NSVQKK0JFR0lOCit0YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4W2lu dGVnZXJdOjUgeVt0ZXh0XTonNScKK3RhYmxlIHB1YmxpYy5kZWNvZGluZ190ZXN0OiBJTlNF UlQ6IHhbaW50ZWdlcl06NiB5W3RleHRdOic2JwordGFibGUgcHVibGljLmRlY29kaW5nX3Rl c3Q6IElOU0VSVDogeFtpbnRlZ2VyXTo3IHlbdGV4dF06JzcnCitDT01NSVR9OworCisjIGNo ZWNrIHRoYXQgd2UgYXJlIGRlY29kaW5nIHByZSBhbmQgcG9zdCBwcm9tb3Rpb24gaW5zZXJ0 ZWQgcm93cworJHN0ZG91dF9zcWwgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Rlc3Rk YicsCisJcXFbU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfcGVla19jaGFuZ2Vz KCdpbmFjdGl2ZXNsb3QnLCBOVUxMLCBOVUxMLCAnaW5jbHVkZS14aWRzJywgJzAnLCAnc2tp cC1lbXB0eS14YWN0cycsICcxJyk7XQorKTsKKworaXMoJHN0ZG91dF9zcWwsICRleHBlY3Rl ZCwgJ2dvdCBleHBlY3RlZCBvdXRwdXQgZnJvbSBTUUwgZGVjb2Rpbmcgc2Vzc2lvbiBvbiBw cm9tb3RlZCBzdGFuZGJ5Jyk7CisKKyMgY2hlY2sgdGhhdCB3ZSBhcmUgZGVjb2RpbmcgcHJl IGFuZCBwb3N0IHByb21vdGlvbiBpbnNlcnRlZCByb3dzCisjIHdpdGggcGdfcmVjdmxvZ2lj YWwgdGhhdCBoYXMgc3RhcnRlZCBiZWZvcmUgdGhlIHByb21vdGlvbgorbXkgJHB1bXBfdGlt ZW91dCA9IElQQzo6UnVuOjp0aW1lcigkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVv dXRfZGVmYXVsdCk7CisKK29rKCBwdW1wX3VudGlsKAorICAgICAgICAkaGFuZGxlLCAkcHVt cF90aW1lb3V0LCBcJHN0ZG91dCwgcXIvXi4qQ09NTUlULipDT01NSVQkL3MpLAorICAgICdn b3QgMiBDT01NSVQgZnJvbSBwZ19yZWN2bG9naWNhbCBvdXRwdXQnKTsKKworY2hvbXAoJHN0 ZG91dCk7Citpcygkc3Rkb3V0LCAkZXhwZWN0ZWQsCisgICAgJ2dvdCBzYW1lIGV4cGVjdGVk IG91dHB1dCBmcm9tIHBnX3JlY3Zsb2dpY2FsIGRlY29kaW5nIHNlc3Npb24nKTsKLS0gCjIu MzQuMQoK --------------G03lDHzolqD0Rr04i1MibgcG Content-Type: text/plain; charset=UTF-8; name="v44-0004-Fixing-Walsender-corner-case-with-logical-decodi.patch" Content-Disposition: attachment; filename*0="v44-0004-Fixing-Walsender-corner-case-with-logical-decodi.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBhOGI1ODMyZTllNTg0M2NhYTIyZTBiMjgzY2Y1ZWQ0MTE4YWE1NWM0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogRnJpLCAyNyBKYW4gMjAyMyAwOTo1Njo0NCArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjQ0IDQvNl0gRml4aW5nIFdhbHNlbmRlciBjb3JuZXIgY2FzZSB3aXRoIGxvZ2ljYWwg ZGVjb2Rpbmcgb24KIHN0YW5kYnkuCgpUaGUgcHJvYmxlbSBpcyB0aGF0IFdhbFNuZFdhaXRG b3JXYWwoKSB3YWl0cyBmb3IgdGhlICpyZXBsYXkqIExTTiB0bwppbmNyZWFzZSwgYnV0IGdl dHMgd29rZW4gdXAgYnkgd2FscmVjZWl2ZXIgd2hlbiBuZXcgV0FMIGhhcyBiZWVuCmZsdXNo ZWQuIFdoaWNoIG1lYW5zIHRoYXQgdHlwaWNhbGx5IHdhbHNlbmRlcnMgd2lsbCBnZXQgd29r ZW4gdXAgYXQgdGhlCnNhbWUgdGltZSB0aGF0IHRoZSBzdGFydHVwIHByb2Nlc3Mgd2lsbCBi ZSAtIHdoaWNoIG1lYW5zIHRoYXQgYnkgdGhlCnRpbWUgdGhlIGxvZ2ljYWwgd2Fsc2VuZGVy IGNoZWNrcyBHZXRYTG9nUmVwbGF5UmVjUHRyKCkgaXQncyB1bmxpa2VseQp0aGF0IHRoZSBz dGFydHVwIHByb2Nlc3MgYWxyZWFkeSByZXBsYXllZCB0aGUgcmVjb3JkIGFuZCB1cGRhdGVk ClhMb2dDdGwtPmxhc3RSZXBsYXllZEVuZFJlY1B0ci4KCkludHJvZHVjaW5nIGEgbmV3IGNv bmRpdGlvbiB2YXJpYWJsZSB0byBmaXggdGhpcyBjb3JuZXIgY2FzZS4KLS0tCiBzcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYyB8IDI4ICsrKysrKysrKysrKysr KysrKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyAgICAgICB8IDMx ICsrKysrKysrKysrKysrKysrLS0tLS0tCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93 YWl0X2V2ZW50LmMgICB8ICAzICsrKwogc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dyZWNvdmVy eS5oICAgICAgICAgfCAgMyArKysKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRl ci5oICAgICAgIHwgIDEgKwogc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oICAgICAg ICAgICAgfCAgMSArCiA2IGZpbGVzIGNoYW5nZWQsIDU5IGluc2VydGlvbnMoKyksIDggZGVs ZXRpb25zKC0pCiAgNDEuMiUgc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vCiAgNDguNSUg c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vCiAgIDMuNiUgc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvCiAgIDMuNCUgc3JjL2luY2x1ZGUvYWNjZXNzLwoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMKaW5kZXggMmE1MzUyZjg3OS4uYmIwZGU1Mjdh YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5 LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMKQEAg LTM1OCw2ICszNTgsOSBAQCB0eXBlZGVmIHN0cnVjdCBYTG9nUmVjb3ZlcnlDdGxEYXRhCiAJ UmVjb3ZlcnlQYXVzZVN0YXRlIHJlY292ZXJ5UGF1c2VTdGF0ZTsKIAlDb25kaXRpb25WYXJp YWJsZSByZWNvdmVyeU5vdFBhdXNlZENWOwogCisJLyogUmVwbGF5IHN0YXRlIChzZWUgZ2V0 UmVwbGF5ZWRDVigpIGZvciBtb3JlIGV4cGxhbmF0aW9uKSAqLworCUNvbmRpdGlvblZhcmlh YmxlIHJlcGxheWVkQ1Y7CisKIAlzbG9ja190CQlpbmZvX2xjazsJCS8qIGxvY2tzIHNoYXJl ZCB2YXJpYWJsZXMgc2hvd24gYWJvdmUgKi8KIH0gWExvZ1JlY292ZXJ5Q3RsRGF0YTsKIApA QCAtNDY3LDYgKzQ3MCw3IEBAIFhMb2dSZWNvdmVyeVNobWVtSW5pdCh2b2lkKQogCVNwaW5M b2NrSW5pdCgmWExvZ1JlY292ZXJ5Q3RsLT5pbmZvX2xjayk7CiAJSW5pdFNoYXJlZExhdGNo KCZYTG9nUmVjb3ZlcnlDdGwtPnJlY292ZXJ5V2FrZXVwTGF0Y2gpOwogCUNvbmRpdGlvblZh cmlhYmxlSW5pdCgmWExvZ1JlY292ZXJ5Q3RsLT5yZWNvdmVyeU5vdFBhdXNlZENWKTsKKwlD b25kaXRpb25WYXJpYWJsZUluaXQoJlhMb2dSZWNvdmVyeUN0bC0+cmVwbGF5ZWRDVik7CiB9 CiAKIC8qCkBAIC0xOTE2LDYgKzE5MjAsMTEgQEAgQXBwbHlXYWxSZWNvcmQoWExvZ1JlYWRl clN0YXRlICp4bG9ncmVhZGVyLCBYTG9nUmVjb3JkICpyZWNvcmQsIFRpbWVMaW5lSUQgKnJl cGwKIAlYTG9nUmVjb3ZlcnlDdGwtPmxhc3RSZXBsYXllZFRMSSA9ICpyZXBsYXlUTEk7CiAJ U3BpbkxvY2tSZWxlYXNlKCZYTG9nUmVjb3ZlcnlDdGwtPmluZm9fbGNrKTsKIAorCS8qCisJ ICogd2FrZSB1cCB3YWxzZW5kZXIocykgdXNlZCBieSBsb2dpY2FsIGRlY29kaW5nIG9uIHN0 YW5kYnkuCisJICovCisJQ29uZGl0aW9uVmFyaWFibGVCcm9hZGNhc3QoJlhMb2dSZWNvdmVy eUN0bC0+cmVwbGF5ZWRDVik7CisKIAkvKgogCSAqIElmIHJtX3JlZG8gY2FsbGVkIFhMb2dS ZXF1ZXN0V2FsUmVjZWl2ZXJSZXBseSwgdGhlbiB3ZSB3YWtlIHVwIHRoZQogCSAqIHJlY2Vp dmVyIHNvIHRoYXQgaXQgbm90aWNlcyB0aGUgdXBkYXRlZCBsYXN0UmVwbGF5ZWRFbmRSZWNQ dHIgYW5kIHNlbmRzCkBAIC00OTIzLDMgKzQ5MzIsMjIgQEAgYXNzaWduX3JlY292ZXJ5X3Rh cmdldF94aWQoY29uc3QgY2hhciAqbmV3dmFsLCB2b2lkICpleHRyYSkKIAllbHNlCiAJCXJl Y292ZXJ5VGFyZ2V0ID0gUkVDT1ZFUllfVEFSR0VUX1VOU0VUOwogfQorCisvKgorICogUmV0 dXJuIHRoZSBDb25kaXRpb25WYXJpYWJsZSBpbmRpY2F0aW5nIHRoYXQgYSByZXBsYXkgaGFz IGJlZW4gZG9uZS4KKyAqCisgKiBUaGlzIGlzIG5lZWRlZCBmb3IgbG9naWNhbCBkZWNvZGlu ZyBvbiBzdGFuZGJ5LiBJbmRlZWQgdGhlICJwcm9ibGVtIiBpcyB0aGF0CisgKiBXYWxTbmRX YWl0Rm9yV2FsKCkgd2FpdHMgZm9yIHRoZSAqcmVwbGF5KiBMU04gdG8gaW5jcmVhc2UsIGJ1 dCBnZXRzIHdva2VuIHVwCisgKiBieSB3YWxyZWNlaXZlciB3aGVuIG5ldyBXQUwgaGFzIGJl ZW4gZmx1c2hlZC4gV2hpY2ggbWVhbnMgdGhhdCB0eXBpY2FsbHkKKyAqIHdhbHNlbmRlcnMg d2lsbCBnZXQgd29rZW4gdXAgYXQgdGhlIHNhbWUgdGltZSB0aGF0IHRoZSBzdGFydHVwIHBy b2Nlc3MKKyAqIHdpbGwgYmUgLSB3aGljaCBtZWFucyB0aGF0IGJ5IHRoZSB0aW1lIHRoZSBs b2dpY2FsIHdhbHNlbmRlciBjaGVja3MKKyAqIEdldFhMb2dSZXBsYXlSZWNQdHIoKSBpdCdz IHVubGlrZWx5IHRoYXQgdGhlIHN0YXJ0dXAgcHJvY2VzcyBhbHJlYWR5IHJlcGxheWVkCisg KiB0aGUgcmVjb3JkIGFuZCB1cGRhdGVkIFhMb2dDdGwtPmxhc3RSZXBsYXllZEVuZFJlY1B0 ci4KKyAqCisgKiBUaGUgQ29uZGl0aW9uVmFyaWFibGUgWExvZ1JlY292ZXJ5Q3RsLT5yZXBs YXllZENWIHNvbHZlcyB0aGlzIGNvcm5lciBjYXNlLgorICovCitDb25kaXRpb25WYXJpYWJs ZSAqCitnZXRSZXBsYXllZENWKHZvaWQpCit7CisJcmV0dXJuICZYTG9nUmVjb3ZlcnlDdGwt PnJlcGxheWVkQ1Y7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93 YWxzZW5kZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCmluZGV4 IDFlOTFjYmM1NjQuLmIzZmU1ZGJlYjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3dhbHNlbmRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNl bmRlci5jCkBAIC0xNTUyLDYgKzE1NTIsNyBAQCBXYWxTbmRXYWl0Rm9yV2FsKFhMb2dSZWNQ dHIgbG9jKQogewogCWludAkJCXdha2VFdmVudHM7CiAJc3RhdGljIFhMb2dSZWNQdHIgUmVj ZW50Rmx1c2hQdHIgPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwlDb25kaXRpb25WYXJpYWJsZSAq cmVwbGF5ZWRDViA9IGdldFJlcGxheWVkQ1YoKTsKIAogCS8qCiAJICogRmFzdCBwYXRoIHRv IGF2b2lkIGFjcXVpcmluZyB0aGUgc3BpbmxvY2sgaW4gY2FzZSB3ZSBhbHJlYWR5IGtub3cg d2UKQEAgLTE1NzAsNyArMTU3MSw2IEBAIFdhbFNuZFdhaXRGb3JXYWwoWExvZ1JlY1B0ciBs b2MpCiAKIAlmb3IgKDs7KQogCXsKLQkJbG9uZwkJc2xlZXB0aW1lOwogCiAJCS8qIENsZWFy IGFueSBhbHJlYWR5LXBlbmRpbmcgd2FrZXVwcyAqLwogCQlSZXNldExhdGNoKE15TGF0Y2gp OwpAQCAtMTY1NCwyMCArMTY1NCwzNSBAQCBXYWxTbmRXYWl0Rm9yV2FsKFhMb2dSZWNQdHIg bG9jKQogCQlXYWxTbmRLZWVwYWxpdmVJZk5lY2Vzc2FyeSgpOwogCiAJCS8qCi0JCSAqIFNs ZWVwIHVudGlsIHNvbWV0aGluZyBoYXBwZW5zIG9yIHdlIHRpbWUgb3V0LiAgQWxzbyB3YWl0 IGZvciB0aGUKLQkJICogc29ja2V0IGJlY29taW5nIHdyaXRhYmxlLCBpZiB0aGVyZSdzIHN0 aWxsIHBlbmRpbmcgb3V0cHV0LgorCQkgKiBXaGVuIG5vdCBpbiByZWNvdmVyeSwgc2xlZXAg dW50aWwgc29tZXRoaW5nIGhhcHBlbnMgb3Igd2UgdGltZSBvdXQuCisJCSAqIEFsc28gd2Fp dCBmb3IgdGhlIHNvY2tldCBiZWNvbWluZyB3cml0YWJsZSwgaWYgdGhlcmUncyBzdGlsbCBw ZW5kaW5nIG91dHB1dC4KIAkJICogT3RoZXJ3aXNlIHdlIG1pZ2h0IHNpdCBvbiBzZW5kYWJs ZSBvdXRwdXQgZGF0YSB3aGlsZSB3YWl0aW5nIGZvcgogCQkgKiBuZXcgV0FMIHRvIGJlIGdl bmVyYXRlZC4gIChCdXQgaWYgd2UgaGF2ZSBub3RoaW5nIHRvIHNlbmQsIHdlIGRvbid0CiAJ CSAqIHdhbnQgdG8gd2FrZSBvbiBzb2NrZXQtd3JpdGFibGUuKQogCQkgKi8KLQkJc2xlZXB0 aW1lID0gV2FsU25kQ29tcHV0ZVNsZWVwdGltZShHZXRDdXJyZW50VGltZXN0YW1wKCkpOwor CQlpZiAoIVJlY292ZXJ5SW5Qcm9ncmVzcygpKQorCQl7CisJCQlsb25nCQlzbGVlcHRpbWU7 CisJCQlzbGVlcHRpbWUgPSBXYWxTbmRDb21wdXRlU2xlZXB0aW1lKEdldEN1cnJlbnRUaW1l c3RhbXAoKSk7CiAKLQkJd2FrZUV2ZW50cyA9IFdMX1NPQ0tFVF9SRUFEQUJMRTsKKwkJCXdh a2VFdmVudHMgPSBXTF9TT0NLRVRfUkVBREFCTEU7CiAKLQkJaWYgKHBxX2lzX3NlbmRfcGVu ZGluZygpKQotCQkJd2FrZUV2ZW50cyB8PSBXTF9TT0NLRVRfV1JJVEVBQkxFOworCQkJaWYg KHBxX2lzX3NlbmRfcGVuZGluZygpKQorCQkJCXdha2VFdmVudHMgfD0gV0xfU09DS0VUX1dS SVRFQUJMRTsKIAotCQlXYWxTbmRXYWl0KHdha2VFdmVudHMsIHNsZWVwdGltZSwgV0FJVF9F VkVOVF9XQUxfU0VOREVSX1dBSVRfV0FMKTsKKwkJCVdhbFNuZFdhaXQod2FrZUV2ZW50cywg c2xlZXB0aW1lICogMTAsIFdBSVRfRVZFTlRfV0FMX1NFTkRFUl9XQUlUX1dBTCk7CisJCX0K KwkJZWxzZQorCQkvKgorCQkgKiBXZSBhcmUgaW4gdGhlIGxvZ2ljYWwgZGVjb2Rpbmcgb24g c3RhbmRieSBjYXNlLgorCQkgKiBXZSBhcmUgd2FpdGluZyBmb3IgdGhlIHN0YXJ0dXAgcHJv Y2VzcyB0byByZXBsYXkgd2FsIHJlY29yZChzKSB1c2luZworCQkgKiBhIHRpbWVvdXQgaW4g Y2FzZSB3ZSBhcmUgcmVxdWVzdGVkIHRvIHN0b3AuCisJCSAqLworCQl7CisJCQlDb25kaXRp b25WYXJpYWJsZVByZXBhcmVUb1NsZWVwKHJlcGxheWVkQ1YpOworCQkJQ29uZGl0aW9uVmFy aWFibGVUaW1lZFNsZWVwKHJlcGxheWVkQ1YsIDEwMDAsCisJCQkJCQkJCQkJV0FJVF9FVkVO VF9XQUxfU0VOREVSX1dBSVRfUkVQTEFZKTsKKwkJfQogCX0KIAogCS8qIHJlYWN0aXZhdGUg bGF0Y2ggc28gV2FsU25kTG9vcCBrbm93cyB0byBjb250aW51ZSAqLwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCmluZGV4IDZlNDU5OTI3OGMuLjM4Yzc0N2I3 ODYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKQEAgLTQ2 Myw2ICs0NjMsOSBAQCBwZ3N0YXRfZ2V0X3dhaXRfaXBjKFdhaXRFdmVudElQQyB3KQogCQlj YXNlIFdBSVRfRVZFTlRfV0FMX1JFQ0VJVkVSX1dBSVRfU1RBUlQ6CiAJCQlldmVudF9uYW1l ID0gIldhbFJlY2VpdmVyV2FpdFN0YXJ0IjsKIAkJCWJyZWFrOworCQljYXNlIFdBSVRfRVZF TlRfV0FMX1NFTkRFUl9XQUlUX1JFUExBWToKKwkJCWV2ZW50X25hbWUgPSAiV2FsUmVjZWl2 ZXJXYWl0UmVwbGF5IjsKKwkJCWJyZWFrOwogCQljYXNlIFdBSVRfRVZFTlRfWEFDVF9HUk9V UF9VUERBVEU6CiAJCQlldmVudF9uYW1lID0gIlhhY3RHcm91cFVwZGF0ZSI7CiAJCQlicmVh azsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9ncmVjb3ZlcnkuaCBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy94bG9ncmVjb3ZlcnkuaAppbmRleCA0N2MyOTM1MGY1Li5iNjVj MmNmMWYwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3JlY292ZXJ5LmgK KysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dyZWNvdmVyeS5oCkBAIC0xNSw2ICsxNSw3 IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb250cm9sLmgiCiAjaW5jbHVkZSAibGliL3N0 cmluZ2luZm8uaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKKyNpbmNsdWRlICJz dG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIgogCiAvKgogICogUmVjb3ZlcnkgdGFyZ2V0 IHR5cGUuCkBAIC0xNTUsNCArMTU2LDYgQEAgZXh0ZXJuIHZvaWQgUmVjb3ZlcnlSZXF1aXJl c0ludFBhcmFtZXRlcihjb25zdCBjaGFyICpwYXJhbV9uYW1lLCBpbnQgY3VyclZhbHVlLAog CiBleHRlcm4gdm9pZCB4bG9nX291dGRlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJT dGF0ZSAqcmVjb3JkKTsKIAorZXh0ZXJuIENvbmRpdGlvblZhcmlhYmxlICpnZXRSZXBsYXll ZENWKHZvaWQpOworCiAjZW5kaWYJCQkJCQkJLyogWExPR1JFQ09WRVJZX0ggKi8KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5oIGIvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmgKaW5kZXggNTJiYjNlMmFhZS4uMmZkNzQ1ZmU3 MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmgKKysr IGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmgKQEAgLTEzLDYgKzEzLDcg QEAKICNkZWZpbmUgX1dBTFNFTkRFUl9ICiAKICNpbmNsdWRlIDxzaWduYWwuaD4KKyNpbmNs dWRlICJzdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIgogCiAvKgogICogV2hhdCB0byBk byB3aXRoIGEgc25hcHNob3QgaW4gY3JlYXRlIHJlcGxpY2F0aW9uIHNsb3QgY29tbWFuZC4K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCBiL3NyYy9pbmNs dWRlL3V0aWxzL3dhaXRfZXZlbnQuaAppbmRleCA2Y2FjZDZlZGFmLi4wNGEzN2ZlZWU0IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKKysrIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oCkBAIC0xMzAsNiArMTMwLDcgQEAgdHlwZWRlZiBl bnVtCiAJV0FJVF9FVkVOVF9TWU5DX1JFUCwKIAlXQUlUX0VWRU5UX1dBTF9SRUNFSVZFUl9F WElULAogCVdBSVRfRVZFTlRfV0FMX1JFQ0VJVkVSX1dBSVRfU1RBUlQsCisJV0FJVF9FVkVO VF9XQUxfU0VOREVSX1dBSVRfUkVQTEFZLAogCVdBSVRfRVZFTlRfWEFDVF9HUk9VUF9VUERB VEUKIH0gV2FpdEV2ZW50SVBDOwogCi0tIAoyLjM0LjEKCg== --------------G03lDHzolqD0Rr04i1MibgcG Content-Type: text/plain; charset=UTF-8; name="v44-0003-Allow-logical-decoding-on-standby.patch" Content-Disposition: attachment; filename="v44-0003-Allow-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSAyOGNiYTdmMWU2Nzk5ZDMxOTBjNDE2ZGMzMjQ3NjJkYTUzMDkxNjYzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogRnJpLCAyNyBKYW4gMjAyMyAwOTo1NTo0NCArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjQ0IDMvNl0gQWxsb3cgbG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5LgoKQWxsb3cg YSBsb2dpY2FsIHNsb3QgdG8gYmUgY3JlYXRlZCBvbiBzdGFuZGJ5LiBSZXN0cmljdCBpdHMg dXNhZ2UKb3IgaXRzIGNyZWF0aW9uIGlmIHdhbF9sZXZlbCBvbiBwcmltYXJ5IGlzIGxlc3Mg dGhhbiBsb2dpY2FsLgpEdXJpbmcgc2xvdCBjcmVhdGlvbiwgaXQncyByZXN0YXJ0X2xzbiBp cyBzZXQgdG8gdGhlIGxhc3QgcmVwbGF5ZWQKTFNOLiBFZmZlY3RpdmVseSwgYSBsb2dpY2Fs IHNsb3QgY3JlYXRpb24gb24gc3RhbmRieSB3YWl0cyBmb3IgYW4KeGxfcnVubmluZ194YWN0 IHJlY29yZCB0byBhcnJpdmUgZnJvbSBwcmltYXJ5LgoKQXV0aG9yOiBBbmRyZXMgRnJldW5k IChpbiBhbiBvbGRlciB2ZXJzaW9uKSwgQW1pdCBLaGFuZGVrYXIsIEJlcnRyYW5kIERyb3V2 b3QKUmV2aWV3ZWQtQnk6IEJlcnRyYW5kIERyb3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVy dCBIYWFzLCBGYWJyaXppbyBkZSBSb3llcyBNZWxsbwotLS0KIHNyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3hsb2cuYyAgICAgICAgIHwgMTEgKysrKysKIHNyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgIHwgMjIgKysrKysrKystCiBzcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYyB8IDM3ICsrKysrKysrLS0tLS0tLQogc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jICAgICAgICAgICAgfCA1NyArKysrKysrKysr KystLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgICAg ICAgfCA0MSArKysrKysrKysrLS0tLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oICAg ICAgICAgICAgICAgICB8ICAxICsKIDYgZmlsZXMgY2hhbmdlZCwgMTExIGluc2VydGlvbnMo KyksIDU4IGRlbGV0aW9ucygtKQogICA0LjclIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft LwogIDM4LjclIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvCiAgNTUuNiUgc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCmlu ZGV4IDg2NzY3NWQ1YTEuLjFhYmU3NDdjYjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9nLmMKQEAgLTQ0NjUsNiArNDQ2NSwxNyBAQCBMb2NhbFByb2Nlc3NDb250cm9sRmlsZShi b29sIHJlc2V0KQogCVJlYWRDb250cm9sRmlsZSgpOwogfQogCisvKgorICogR2V0IHRoZSB3 YWxfbGV2ZWwgZnJvbSB0aGUgY29udHJvbCBmaWxlLiBGb3IgYSBzdGFuZGJ5LCB0aGlzIHZh bHVlIHNob3VsZCBiZQorICogY29uc2lkZXJlZCBhcyBpdHMgYWN0aXZlIHdhbF9sZXZlbCwg YmVjYXVzZSBpdCBtYXkgYmUgZGlmZmVyZW50IGZyb20gd2hhdAorICogd2FzIG9yaWdpbmFs bHkgY29uZmlndXJlZCBvbiBzdGFuZGJ5LgorICovCitXYWxMZXZlbAorR2V0QWN0aXZlV2Fs TGV2ZWxPblN0YW5kYnkodm9pZCkKK3sKKwlyZXR1cm4gQ29udHJvbEZpbGUtPndhbF9sZXZl bDsKK30KKwogLyoKICAqIEluaXRpYWxpemF0aW9uIG9mIHNoYXJlZCBtZW1vcnkgZm9yIFhM T0cKICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9k ZWNvZGUuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKaW5k ZXggYTUzZTIzYzY3OS4uNmI2NmE5NzFiYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9kZWNvZGUuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2RlY29kZS5jCkBAIC0xNTIsMTEgKzE1MiwzMSBAQCB4bG9nX2RlY29kZShM b2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1ZikKIAkJ CSAqIGNhbiByZXN0YXJ0IGZyb20gdGhlcmUuCiAJCQkgKi8KIAkJCWJyZWFrOworCQljYXNl IFhMT0dfUEFSQU1FVEVSX0NIQU5HRToKKwkJeworCQkJeGxfcGFyYW1ldGVyX2NoYW5nZSAq eGxyZWMgPQorCQkJCSh4bF9wYXJhbWV0ZXJfY2hhbmdlICopIFhMb2dSZWNHZXREYXRhKGJ1 Zi0+cmVjb3JkKTsKKworCQkJLyoKKwkJCSAqIElmIHdhbF9sZXZlbCBvbiBwcmltYXJ5IGlz IHJlZHVjZWQgdG8gbGVzcyB0aGFuIGxvZ2ljYWwsIHRoZW4gd2UKKwkJCSAqIHdhbnQgdG8g cHJldmVudCBleGlzdGluZyBsb2dpY2FsIHNsb3RzIGZyb20gYmVpbmcgdXNlZC4KKwkJCSAq IEV4aXN0aW5nIGxvZ2ljYWwgc2xvdHMgb24gc3RhbmRieSBnZXQgaW52YWxpZGF0ZWQgd2hl biB0aGlzIFdBTAorCQkJICogcmVjb3JkIGlzIHJlcGxheWVkOyBhbmQgZnVydGhlciwgc2xv dCBjcmVhdGlvbiBmYWlscyB3aGVuIHRoZQorCQkJICogd2FsIGxldmVsIGlzIG5vdCBzdWZm aWNpZW50OyBidXQgYWxsIHRoZXNlIG9wZXJhdGlvbnMgYXJlIG5vdAorCQkJICogc3luY2hy b25pemVkLCBzbyBhIGxvZ2ljYWwgc2xvdCBtYXkgY3JlZXAgaW4gd2hpbGUgdGhlIHdhbF9s ZXZlbAorCQkJICogaXMgYmVpbmcgcmVkdWNlZC4gSGVuY2UgdGhpcyBleHRyYSBjaGVjay4K KwkJCSAqLworCQkJaWYgKHhscmVjLT53YWxfbGV2ZWwgPCBXQUxfTEVWRUxfTE9HSUNBTCkK KwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9U X0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCQkgZXJybXNnKCJsb2dpY2FsIGRlY29k aW5nIG9uIHN0YW5kYnkgcmVxdWlyZXMgd2FsX2xldmVsICIKKwkJCQkJCQkJInRvIGJlIGF0 IGxlYXN0IGxvZ2ljYWwgb24gdGhlIHByaW1hcnkgc2VydmVyIikpKTsKKwkJCWJyZWFrOwor CQl9CiAJCWNhc2UgWExPR19OT09QOgogCQljYXNlIFhMT0dfTkVYVE9JRDoKIAkJY2FzZSBY TE9HX1NXSVRDSDoKIAkJY2FzZSBYTE9HX0JBQ0tVUF9FTkQ6Ci0JCWNhc2UgWExPR19QQVJB TUVURVJfQ0hBTkdFOgogCQljYXNlIFhMT0dfUkVTVE9SRV9QT0lOVDoKIAkJY2FzZSBYTE9H X0ZQV19DSEFOR0U6CiAJCWNhc2UgWExPR19GUElfRk9SX0hJTlQ6CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jCmluZGV4IDFhNThkZDc2NDkuLjkxYWNj MGMxNTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9n aWNhbC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5j CkBAIC0xMTksMjMgKzExOSwyMiBAQCBDaGVja0xvZ2ljYWxEZWNvZGluZ1JlcXVpcmVtZW50 cyh2b2lkKQogCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJ VEVfU1RBVEUpLAogCQkJCSBlcnJtc2coImxvZ2ljYWwgZGVjb2RpbmcgcmVxdWlyZXMgYSBk YXRhYmFzZSBjb25uZWN0aW9uIikpKTsKIAotCS8qIC0tLS0KLQkgKiBUT0RPOiBXZSBnb3Qg dG8gY2hhbmdlIHRoYXQgc29tZWRheSBzb29uLi4uCi0JICoKLQkgKiBUaGVyZSdzIGJhc2lj YWxseSB0aHJlZSB0aGluZ3MgbWlzc2luZyB0byBhbGxvdyB0aGlzOgotCSAqIDEpIFdlIG5l ZWQgdG8gYmUgYWJsZSB0byBjb3JyZWN0bHkgYW5kIHF1aWNrbHkgaWRlbnRpZnkgdGhlIHRp bWVsaW5lIGEKLQkgKgkgIExTTiBiZWxvbmdzIHRvCi0JICogMikgV2UgbmVlZCB0byBmb3Jj ZSBob3Rfc3RhbmRieV9mZWVkYmFjayB0byBiZSBlbmFibGVkIGF0IGFsbCB0aW1lcyBzbwot CSAqCSAgdGhlIHByaW1hcnkgY2Fubm90IHJlbW92ZSByb3dzIHdlIG5lZWQuCi0JICogMykg c3VwcG9ydCBkcm9wcGluZyByZXBsaWNhdGlvbiBzbG90cyByZWZlcnJpbmcgdG8gYSBkYXRh YmFzZSwgaW4KLQkgKgkgIGRiYXNlX3JlZG8uIFRoZXJlIGNhbid0IGJlIGFueSBhY3RpdmUg b25lcyBkdWUgdG8gSFMgcmVjb3ZlcnkKLQkgKgkgIGNvbmZsaWN0cywgc28gdGhhdCBzaG91 bGQgYmUgcmVsYXRpdmVseSBlYXN5LgotCSAqIC0tLS0KLQkgKi8KIAlpZiAoUmVjb3ZlcnlJ blByb2dyZXNzKCkpCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9G RUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJCSBlcnJtc2coImxvZ2ljYWwgZGVjb2Rpbmcg Y2Fubm90IGJlIHVzZWQgd2hpbGUgaW4gcmVjb3ZlcnkiKSkpOworCXsKKwkJLyoKKwkJICog VGhpcyBjaGVjayBtYXkgaGF2ZSByYWNlIGNvbmRpdGlvbnMsIGJ1dCB3aGVuZXZlcgorCQkg KiBYTE9HX1BBUkFNRVRFUl9DSEFOR0UgaW5kaWNhdGVzIHRoYXQgd2FsX2xldmVsIGhhcyBj aGFuZ2VkLCB3ZQorCQkgKiB2ZXJpZnkgdGhhdCB0aGVyZSBhcmUgbm8gZXhpc3RpbmcgbG9n aWNhbCByZXBsaWNhdGlvbiBzbG90cy4gQW5kIHRvCisJCSAqIGF2b2lkIHJhY2VzIGFyb3Vu ZCBjcmVhdGluZyBhIG5ldyBzbG90LAorCQkgKiBDaGVja0xvZ2ljYWxEZWNvZGluZ1JlcXVp cmVtZW50cygpIGlzIGNhbGxlZCBvbmNlIGJlZm9yZSBjcmVhdGluZworCQkgKiB0aGUgc2xv dCwgYW5kIG9uY2Ugd2hlbiBsb2dpY2FsIGRlY29kaW5nIGlzIGluaXRpYWxseSBzdGFydGlu ZyB1cC4KKwkJICovCisJCWlmIChHZXRBY3RpdmVXYWxMZXZlbE9uU3RhbmRieSgpIDwgV0FM X0xFVkVMX0xPR0lDQUwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJD T0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygi bG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5IHJlcXVpcmVzIHdhbF9sZXZlbCAiCisJCQkJ CQkJInRvIGJlIGF0IGxlYXN0IGxvZ2ljYWwgb24gdGhlIHByaW1hcnkgc2VydmVyIikpKTsK Kwl9CiB9CiAKIC8qCkBAIC0zMzEsNiArMzMwLDEyIEBAIENyZWF0ZUluaXREZWNvZGluZ0Nv bnRleHQoY29uc3QgY2hhciAqcGx1Z2luLAogCUxvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0 eDsKIAlNZW1vcnlDb250ZXh0IG9sZF9jb250ZXh0OwogCisJLyoKKwkgKiBPbiBzdGFuZGJ5 LCB0aGlzIGNoZWNrIGlzIGFsc28gcmVxdWlyZWQgd2hpbGUgY3JlYXRpbmcgdGhlIHNsb3Qu IENoZWNrCisJICogdGhlIGNvbW1lbnRzIGluIHRoaXMgZnVuY3Rpb24uCisJICovCisJQ2hl Y2tMb2dpY2FsRGVjb2RpbmdSZXF1aXJlbWVudHMoKTsKKwogCS8qIHNob3J0ZXIgbGluZXMu Li4gKi8KIAlzbG90ID0gTXlSZXBsaWNhdGlvblNsb3Q7CiAKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Ns b3QuYwppbmRleCAzOGM2ZjE4ODg2Li4yOTBkNGI0NWY0IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v c2xvdC5jCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlu cy5oIgorI2luY2x1ZGUgImFjY2Vzcy94bG9ncmVjb3ZlcnkuaCIKIAogLyoKICAqIFJlcGxp Y2F0aW9uIHNsb3Qgb24tZGlzayBkYXRhIHN0cnVjdHVyZS4KQEAgLTExNzcsMzcgKzExNzgs MjggQEAgUmVwbGljYXRpb25TbG90UmVzZXJ2ZVdhbCh2b2lkKQogCQkvKgogCQkgKiBGb3Ig bG9naWNhbCBzbG90cyBsb2cgYSBzdGFuZGJ5IHNuYXBzaG90IGFuZCBzdGFydCBsb2dpY2Fs IGRlY29kaW5nCiAJCSAqIGF0IGV4YWN0bHkgdGhhdCBwb3NpdGlvbi4gVGhhdCBhbGxvd3Mg dGhlIHNsb3QgdG8gc3RhcnQgdXAgbW9yZQotCQkgKiBxdWlja2x5LgorCQkgKiBxdWlja2x5 LiBCdXQgb24gYSBzdGFuZGJ5IHdlIGNhbm5vdCBkbyBXQUwgd3JpdGVzLCBzbyBqdXN0IHVz ZSB0aGUKKwkJICogcmVwbGF5IHBvaW50ZXI7IGVmZmVjdGl2ZWx5LCBhbiBhdHRlbXB0IHRv IGNyZWF0ZSBhIGxvZ2ljYWwgc2xvdCBvbgorCQkgKiBzdGFuZGJ5IHdpbGwgY2F1c2UgaXQg dG8gd2FpdCBmb3IgYW4geGxfcnVubmluZ194YWN0IHJlY29yZCB0byBiZQorCQkgKiBsb2dn ZWQgaW5kZXBlbmRlbnRseSBvbiB0aGUgcHJpbWFyeSwgc28gdGhhdCBhIHNuYXBzaG90IGNh biBiZSBidWlsdAorCQkgKiB1c2luZyB0aGUgcmVjb3JkLgogCQkgKgotCQkgKiBUaGF0J3Mg bm90IG5lZWRlZCAob3IgaW5kZWVkIGhlbHBmdWwpIGZvciBwaHlzaWNhbCBzbG90cyBhcyB0 aGV5J2xsCi0JCSAqIHN0YXJ0IHJlcGxheSBhdCB0aGUgbGFzdCBsb2dnZWQgY2hlY2twb2lu dCBhbnl3YXkuIEluc3RlYWQgcmV0dXJuCi0JCSAqIHRoZSBsb2NhdGlvbiBvZiB0aGUgbGFz dCByZWRvIExTTi4gV2hpbGUgdGhhdCBzbGlnaHRseSBpbmNyZWFzZXMKLQkJICogdGhlIGNo YW5jZSB0aGF0IHdlIGhhdmUgdG8gcmV0cnksIGl0J3Mgd2hlcmUgYSBiYXNlIGJhY2t1cCBo YXMgdG8KLQkJICogc3RhcnQgcmVwbGF5IGF0LgorCQkgKiBOb25lIG9mIHRoaXMgaXMgbmVl ZGVkIChvciBpbmRlZWQgaGVscGZ1bCkgZm9yIHBoeXNpY2FsIHNsb3RzIGFzCisJCSAqIHRo ZXknbGwgc3RhcnQgcmVwbGF5IGF0IHRoZSBsYXN0IGxvZ2dlZCBjaGVja3BvaW50IGFueXdh eS4gSW5zdGVhZAorCQkgKiByZXR1cm4gdGhlIGxvY2F0aW9uIG9mIHRoZSBsYXN0IHJlZG8g TFNOLiBXaGlsZSB0aGF0IHNsaWdodGx5CisJCSAqIGluY3JlYXNlcyB0aGUgY2hhbmNlIHRo YXQgd2UgaGF2ZSB0byByZXRyeSwgaXQncyB3aGVyZSBhIGJhc2UgYmFja3VwCisJCSAqIGhh cyB0byBzdGFydCByZXBsYXkgYXQuCiAJCSAqLwotCQlpZiAoIVJlY292ZXJ5SW5Qcm9ncmVz cygpICYmIFNsb3RJc0xvZ2ljYWwoc2xvdCkpCi0JCXsKLQkJCVhMb2dSZWNQdHIJZmx1c2hw dHI7Ci0KLQkJCS8qIHN0YXJ0IGF0IGN1cnJlbnQgaW5zZXJ0IHBvc2l0aW9uICovCisJCWlm IChTbG90SXNQaHlzaWNhbChzbG90KSkKKwkJCXJlc3RhcnRfbHNuID0gR2V0UmVkb1JlY1B0 cigpOworCQllbHNlIGlmIChSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKKwkJCXJlc3RhcnRfbHNu ID0gR2V0WExvZ1JlcGxheVJlY1B0cihOVUxMKTsKKwkJZWxzZQogCQkJcmVzdGFydF9sc24g PSBHZXRYTG9nSW5zZXJ0UmVjUHRyKCk7Ci0JCQlTcGluTG9ja0FjcXVpcmUoJnNsb3QtPm11 dGV4KTsKLQkJCXNsb3QtPmRhdGEucmVzdGFydF9sc24gPSByZXN0YXJ0X2xzbjsKLQkJCVNw aW5Mb2NrUmVsZWFzZSgmc2xvdC0+bXV0ZXgpOwotCi0JCQkvKiBtYWtlIHN1cmUgd2UgaGF2 ZSBlbm91Z2ggaW5mb3JtYXRpb24gdG8gc3RhcnQgKi8KLQkJCWZsdXNocHRyID0gTG9nU3Rh bmRieVNuYXBzaG90KCk7CiAKLQkJCS8qIGFuZCBtYWtlIHN1cmUgaXQncyBmc3luY2VkIHRv IGRpc2sgKi8KLQkJCVhMb2dGbHVzaChmbHVzaHB0cik7Ci0JCX0KLQkJZWxzZQotCQl7Ci0J CQlyZXN0YXJ0X2xzbiA9IEdldFJlZG9SZWNQdHIoKTsKLQkJCVNwaW5Mb2NrQWNxdWlyZSgm c2xvdC0+bXV0ZXgpOwotCQkJc2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbiA9IHJlc3RhcnRfbHNu OwotCQkJU3BpbkxvY2tSZWxlYXNlKCZzbG90LT5tdXRleCk7Ci0JCX0KKwkJU3BpbkxvY2tB Y3F1aXJlKCZzbG90LT5tdXRleCk7CisJCXNsb3QtPmRhdGEucmVzdGFydF9sc24gPSByZXN0 YXJ0X2xzbjsKKwkJU3BpbkxvY2tSZWxlYXNlKCZzbG90LT5tdXRleCk7CiAKIAkJLyogcHJl dmVudCBXQUwgcmVtb3ZhbCBhcyBmYXN0IGFzIHBvc3NpYmxlICovCiAJCVJlcGxpY2F0aW9u U2xvdHNDb21wdXRlUmVxdWlyZWRMU04oKTsKQEAgLTEyMjMsNiArMTIxNSwxNyBAQCBSZXBs aWNhdGlvblNsb3RSZXNlcnZlV2FsKHZvaWQpCiAJCWlmIChYTG9nR2V0TGFzdFJlbW92ZWRT ZWdubygpIDwgc2Vnbm8pCiAJCQlicmVhazsKIAl9CisKKwlpZiAoIVJlY292ZXJ5SW5Qcm9n cmVzcygpICYmIFNsb3RJc0xvZ2ljYWwoc2xvdCkpCisJeworCQlYTG9nUmVjUHRyCWZsdXNo cHRyOworCisJCS8qIG1ha2Ugc3VyZSB3ZSBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiB0byBz dGFydCAqLworCQlmbHVzaHB0ciA9IExvZ1N0YW5kYnlTbmFwc2hvdCgpOworCisJCS8qIGFu ZCBtYWtlIHN1cmUgaXQncyBmc3luY2VkIHRvIGRpc2sgKi8KKwkJWExvZ0ZsdXNoKGZsdXNo cHRyKTsKKwl9CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi93YWxzZW5kZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCmlu ZGV4IDg4ODVjZGVlYmMuLjFlOTFjYmM1NjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3dhbHNlbmRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dh bHNlbmRlci5jCkBAIC05MDYsMjMgKzkwNiwzMSBAQCBsb2dpY2FsX3JlYWRfeGxvZ19wYWdl KFhMb2dSZWFkZXJTdGF0ZSAqc3RhdGUsIFhMb2dSZWNQdHIgdGFyZ2V0UGFnZVB0ciwgaW50 IHJlcQogCWludAkJCWNvdW50OwogCVdBTFJlYWRFcnJvciBlcnJpbmZvOwogCVhMb2dTZWdO bwlzZWdubzsKLQlUaW1lTGluZUlECWN1cnJUTEkgPSBHZXRXQUxJbnNlcnRpb25UaW1lTGlu ZSgpOworCVRpbWVMaW5lSUQJY3VyclRMSTsKIAogCS8qCi0JICogU2luY2UgbG9naWNhbCBk ZWNvZGluZyBpcyBvbmx5IHBlcm1pdHRlZCBvbiBhIHByaW1hcnkgc2VydmVyLCB3ZSBrbm93 Ci0JICogdGhhdCB0aGUgY3VycmVudCB0aW1lbGluZSBJRCBjYW4ndCBiZSBjaGFuZ2luZyBh bnkgbW9yZS4gSWYgd2UgZGlkIHRoaXMKLQkgKiBvbiBhIHN0YW5kYnksIHdlJ2QgaGF2ZSB0 byB3b3JyeSBhYm91dCB0aGUgdmFsdWVzIHdlIGNvbXB1dGUgaGVyZQotCSAqIGJlY29taW5n IGludmFsaWQgZHVlIHRvIGEgcHJvbW90aW9uIG9yIHRpbWVsaW5lIGNoYW5nZS4KKwkgKiBT aW5jZSBsb2dpY2FsIGRlY29kaW5nIGlzIGFsc28gcGVybWl0dGVkIG9uIGEgc3RhbmRieSBz ZXJ2ZXIsIHdlIG5lZWQKKwkgKiB0byBjaGVjayBpZiB0aGUgc2VydmVyIGlzIGluIHJlY292 ZXJ5IHRvIGRlY2lkZSBob3cgdG8gZ2V0IHRoZSBjdXJyZW50CisJICogdGltZWxpbmUgSUQg KHNvIHRoYXQgaXQgYWxzbyBjb3ZlciB0aGUgcHJvbW90aW9uIG9yIHRpbWVsaW5lIGNoYW5n ZSBjYXNlcykuCiAJICovCisKKwkvKiBtYWtlIHN1cmUgd2UgaGF2ZSBlbm91Z2ggV0FMIGF2 YWlsYWJsZSAqLworCWZsdXNocHRyID0gV2FsU25kV2FpdEZvcldhbCh0YXJnZXRQYWdlUHRy ICsgcmVxTGVuKTsKKworCS8qIHRoZSBzdGFuZGJ5IGNvdWxkIGhhdmUgYmVlbiBwcm9tb3Rl ZCwgc28gY2hlY2sgaWYgc3RpbGwgaW4gcmVjb3ZlcnkgKi8KKwlhbV9jYXNjYWRpbmdfd2Fs c2VuZGVyID0gUmVjb3ZlcnlJblByb2dyZXNzKCk7CisKKwlpZiAoYW1fY2FzY2FkaW5nX3dh bHNlbmRlcikKKwkJR2V0WExvZ1JlcGxheVJlY1B0cigmY3VyclRMSSk7CisJZWxzZQorCQlj dXJyVExJID0gR2V0V0FMSW5zZXJ0aW9uVGltZUxpbmUoKTsKKwogCVhMb2dSZWFkRGV0ZXJt aW5lVGltZWxpbmUoc3RhdGUsIHRhcmdldFBhZ2VQdHIsIHJlcUxlbiwgY3VyclRMSSk7CiAJ c2VuZFRpbWVMaW5lSXNIaXN0b3JpYyA9IChzdGF0ZS0+Y3VyclRMSSAhPSBjdXJyVExJKTsK IAlzZW5kVGltZUxpbmUgPSBzdGF0ZS0+Y3VyclRMSTsKIAlzZW5kVGltZUxpbmVWYWxpZFVw dG8gPSBzdGF0ZS0+Y3VyclRMSVZhbGlkVW50aWw7CiAJc2VuZFRpbWVMaW5lTmV4dFRMSSA9 IHN0YXRlLT5uZXh0VExJOwogCi0JLyogbWFrZSBzdXJlIHdlIGhhdmUgZW5vdWdoIFdBTCBh dmFpbGFibGUgKi8KLQlmbHVzaHB0ciA9IFdhbFNuZFdhaXRGb3JXYWwodGFyZ2V0UGFnZVB0 ciArIHJlcUxlbik7Ci0KIAkvKiBmYWlsIGlmIG5vdCAoaW1wbGllcyB3ZSBhcmUgZ29pbmcg dG8gc2h1dCBkb3duKSAqLwogCWlmIChmbHVzaHB0ciA8IHRhcmdldFBhZ2VQdHIgKyByZXFM ZW4pCiAJCXJldHVybiAtMTsKQEAgLTkzNyw3ICs5NDUsNyBAQCBsb2dpY2FsX3JlYWRfeGxv Z19wYWdlKFhMb2dSZWFkZXJTdGF0ZSAqc3RhdGUsIFhMb2dSZWNQdHIgdGFyZ2V0UGFnZVB0 ciwgaW50IHJlcQogCQkJCSBjdXJfcGFnZSwKIAkJCQkgdGFyZ2V0UGFnZVB0ciwKIAkJCQkg WExPR19CTENLU1osCi0JCQkJIHN0YXRlLT5zZWcud3NfdGxpLCAvKiBQYXNzIHRoZSBjdXJy ZW50IFRMSSBiZWNhdXNlIG9ubHkKKwkJCQkgY3VyclRMSSwgCQkJLyogUGFzcyB0aGUgY3Vy cmVudCBUTEkgYmVjYXVzZSBvbmx5CiAJCQkJCQkJCQkgKiBXYWxTbmRTZWdtZW50T3BlbiBj b250cm9scyB3aGV0aGVyIG5ldwogCQkJCQkJCQkJICogVExJIGlzIG5lZWRlZC4gKi8KIAkJ CQkgJmVycmluZm8pKQpAQCAtMzA3NCwxMCArMzA4MiwxNCBAQCBYTG9nU2VuZExvZ2ljYWwo dm9pZCkKIAkgKiBJZiBmaXJzdCB0aW1lIHRocm91Z2ggaW4gdGhpcyBzZXNzaW9uLCBpbml0 aWFsaXplIGZsdXNoUHRyLiAgT3RoZXJ3aXNlLAogCSAqIHdlIG9ubHkgbmVlZCB0byB1cGRh dGUgZmx1c2hQdHIgaWYgRW5kUmVjUHRyIGlzIHBhc3QgaXQuCiAJICovCi0JaWYgKGZsdXNo UHRyID09IEludmFsaWRYTG9nUmVjUHRyKQotCQlmbHVzaFB0ciA9IEdldEZsdXNoUmVjUHRy KE5VTEwpOwotCWVsc2UgaWYgKGxvZ2ljYWxfZGVjb2RpbmdfY3R4LT5yZWFkZXItPkVuZFJl Y1B0ciA+PSBmbHVzaFB0cikKLQkJZmx1c2hQdHIgPSBHZXRGbHVzaFJlY1B0cihOVUxMKTsK KwlpZiAoZmx1c2hQdHIgPT0gSW52YWxpZFhMb2dSZWNQdHIgfHwKKwkJbG9naWNhbF9kZWNv ZGluZ19jdHgtPnJlYWRlci0+RW5kUmVjUHRyID49IGZsdXNoUHRyKQorCXsKKwkJaWYgKGFt X2Nhc2NhZGluZ193YWxzZW5kZXIpCisJCQlmbHVzaFB0ciA9IEdldFN0YW5kYnlGbHVzaFJl Y1B0cihOVUxMKTsKKwkJZWxzZQorCQkJZmx1c2hQdHIgPSBHZXRGbHVzaFJlY1B0cihOVUxM KTsKKwl9CiAKIAkvKiBJZiBFbmRSZWNQdHIgaXMgc3RpbGwgcGFzdCBvdXIgZmx1c2hQdHIs IGl0IG1lYW5zIHdlIGNhdWdodCB1cC4gKi8KIAlpZiAobG9naWNhbF9kZWNvZGluZ19jdHgt PnJlYWRlci0+RW5kUmVjUHRyID49IGZsdXNoUHRyKQpAQCAtMzE2OCw3ICszMTgwLDggQEAg R2V0U3RhbmRieUZsdXNoUmVjUHRyKFRpbWVMaW5lSUQgKnRsaSkKIAlyZWNlaXZlUHRyID0g R2V0V2FsUmN2Rmx1c2hSZWNQdHIoTlVMTCwgJnJlY2VpdmVUTEkpOwogCXJlcGxheVB0ciA9 IEdldFhMb2dSZXBsYXlSZWNQdHIoJnJlcGxheVRMSSk7CiAKLQkqdGxpID0gcmVwbGF5VExJ OworCWlmICh0bGkpCisJCSp0bGkgPSByZXBsYXlUTEk7CiAKIAlyZXN1bHQgPSByZXBsYXlQ dHI7CiAJaWYgKHJlY2VpdmVUTEkgPT0gcmVwbGF5VExJICYmIHJlY2VpdmVQdHIgPiByZXBs YXlQdHIpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL3hsb2cuaAppbmRleCBjZmU1NDA5NzM4Li40OGNhODUyMzgxIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oCisrKyBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy94bG9nLmgKQEAgLTIzMCw2ICsyMzAsNyBAQCBleHRlcm4gdm9pZCBYTE9HU2htZW1J bml0KHZvaWQpOwogZXh0ZXJuIHZvaWQgQm9vdFN0cmFwWExPRyh2b2lkKTsKIGV4dGVybiB2 b2lkIEluaXRpYWxpemVXYWxDb25zaXN0ZW5jeUNoZWNraW5nKHZvaWQpOwogZXh0ZXJuIHZv aWQgTG9jYWxQcm9jZXNzQ29udHJvbEZpbGUoYm9vbCByZXNldCk7CitleHRlcm4gV2FsTGV2 ZWwgR2V0QWN0aXZlV2FsTGV2ZWxPblN0YW5kYnkodm9pZCk7CiBleHRlcm4gdm9pZCBTdGFy dHVwWExPRyh2b2lkKTsKIGV4dGVybiB2b2lkIFNodXRkb3duWExPRyhpbnQgY29kZSwgRGF0 dW0gYXJnKTsKIGV4dGVybiB2b2lkIENyZWF0ZUNoZWNrUG9pbnQoaW50IGZsYWdzKTsKLS0g CjIuMzQuMQoK --------------G03lDHzolqD0Rr04i1MibgcG Content-Type: text/plain; charset=UTF-8; name="v44-0002-Handle-logical-slot-conflicts-on-standby.patch" Content-Disposition: attachment; filename="v44-0002-Handle-logical-slot-conflicts-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSA4NGZjZWY4MGY5YTBiMTAzN2NlNGM4MjA4Y2FhZTU4M2RlMzNlMDk4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogRnJpLCAyNyBKYW4gMjAyMyAwOTo1MDo1MSArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjQ0IDIvNl0gSGFuZGxlIGxvZ2ljYWwgc2xvdCBjb25mbGljdHMgb24gc3RhbmRieS4K CkR1cmluZyBXQUwgcmVwbGF5IG9uIHN0YW5kYnksIHdoZW4gc2xvdCBjb25mbGljdCBpcyBp ZGVudGlmaWVkLAppbnZhbGlkYXRlIHN1Y2ggc2xvdHMuIEFsc28gZG8gdGhlIHNhbWUgdGhp bmcgaWYgd2FsX2xldmVsIG9uIHRoZSBwcmltYXJ5IHNlcnZlcgppcyByZWR1Y2VkIHRvIGJl bG93IGxvZ2ljYWwgYW5kIHRoZXJlIGFyZSBleGlzdGluZyBsb2dpY2FsIHNsb3RzCm9uIHN0 YW5kYnkuIEludHJvZHVjZSBhIG5ldyBQcm9jU2lnbmFsUmVhc29uIHZhbHVlIGZvciBzbG90 CmNvbmZsaWN0IHJlY292ZXJ5LiBBcnJhbmdlIGZvciBhIG5ldyBwZ19zdGF0X2RhdGFiYXNl X2NvbmZsaWN0cyBmaWVsZDoKY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90LgoKQWRkIGEgbmV3 IGZpZWxkICJjb25mbGljdGluZyIgaW4gcGdfcmVwbGljYXRpb25fc2xvdHMuCgpBdXRob3I6 IEFuZHJlcyBGcmV1bmQgKGluIGFuIG9sZGVyIHZlcnNpb24pLCBBbWl0IEtoYW5kZWthciwg QmVydHJhbmQgRHJvdXZvdApSZXZpZXdlZC1CeTogQmVydHJhbmQgRHJvdXZvdCwgQW5kcmVz IEZyZXVuZCwgUm9iZXJ0IEhhYXMsIEZhYnJpemlvIGRlIFJveWVzIE1lbGxvCi0tLQogZG9j L3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAgICAgICAgICAgICAgICAgIHwgIDExICsKIGRv Yy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbCAgICAgICAgICAgICAgICB8ICAxMCArCiBz cmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jICAgICAgICAgICAgfCAgIDIgKwog c3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMgICAgICAgICAgIHwgICAxICsK IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgICAgICB8ICAgMyAr CiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHhsb2cuYyAgICAgICAgICAgfCAgIDIg Kwogc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd4bG9nLmMgICAgICAgICAgIHwgICAx ICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyAgICAgICAgICAgICB8ICAy NCArKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCAgICAgICAgICB8 ICAgNiArLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMgICAgICAg IHwgIDEzICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgICAgICAgICAgICAg ICAgfCAxOTggKysrKysrKysrKysrKy0tLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9z bG90ZnVuY3MuYyAgICAgICAgICAgfCAgMTMgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3dhbHNlbmRlci5jICAgICAgICAgICB8ICAgOCArCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9wcm9jc2lnbmFsLmMgICAgICAgICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvc3RhbmRieS5jICAgICAgICAgICAgIHwgIDEzICstCiBzcmMvYmFja2VuZC90Y29wL3Bv c3RncmVzLmMgICAgICAgICAgICAgICAgICAgfCAgMjQgKysrCiBzcmMvYmFja2VuZC91dGls cy9hY3Rpdml0eS9wZ3N0YXRfZGF0YWJhc2UuYyAgfCAgIDQgKwogc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3Bnc3RhdGZ1bmNzLmMgICAgICAgICAgIHwgICAzICsKIHNyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICAgICB8ICAxMSArLQogc3JjL2luY2x1ZGUv cGdzdGF0LmggICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL3Nsb3QuaCAgICAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2luY2x1 ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmggICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNs dWRlL3N0b3JhZ2Uvc3RhbmRieS5oICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCAgICAgICAgICAgfCAgIDggKy0KIDI0IGZp bGVzIGNoYW5nZWQsIDMwNCBpbnNlcnRpb25zKCspLCA2MyBkZWxldGlvbnMoLSkKICAgNS40 JSBkb2Mvc3JjL3NnbWwvCiAgIDcuMiUgc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vCiAg IDQuNyUgc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC8KICA1Ni44JSBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi8KICAgNC41JSBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy8KICAg Ni41JSBzcmMvYmFja2VuZC90Y29wLwogICA1LjQlIHNyYy9iYWNrZW5kLwogICAzLjklIHNy Yy9pbmNsdWRlL2NhdGFsb2cvCiAgIDMuMCUgc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vCgpk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCBiL2RvYy9zcmMvc2dt bC9tb25pdG9yaW5nLnNnbWwKaW5kZXggMTc1NmYxYTRiNi4uZTI1ZjcxYTc3NiAxMDA2NDQK LS0tIGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv bW9uaXRvcmluZy5zZ21sCkBAIC00MzY1LDYgKzQzNjUsMTcgQEAgU0VMRUNUIHBpZCwgd2Fp dF9ldmVudF90eXBlLCB3YWl0X2V2ZW50IEZST00gcGdfc3RhdF9hY3Rpdml0eSBXSEVSRSB3 YWl0X2V2ZW50IGkKICAgICAgICBkZWFkbG9ja3MKICAgICAgIDwvcGFyYT48L2VudHJ5Pgog ICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2df dGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8 c3RydWN0ZmllbGQ+Y29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90PC9zdHJ1Y3RmaWVsZD4gPHR5 cGU+YmlnaW50PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAg TnVtYmVyIG9mIGFjdGl2ZSBsb2dpY2FsIHNsb3RzIGluIHRoaXMgZGF0YWJhc2UgdGhhdCBo YXZlIGJlZW4KKyAgICAgICBpbnZhbGlkYXRlZCBiZWNhdXNlIHRoZXkgY29uZmxpY3Qgd2l0 aCByZWNvdmVyeSAobm90ZSB0aGF0IGluYWN0aXZlIG9uZXMKKyAgICAgICBhcmUgYWxzbyBp bnZhbGlkYXRlZCBidXQgZG8gbm90IGluY3JlbWVudCB0aGlzIGNvdW50ZXIpCisgICAgICA8 L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CiAgICAgPC90Ym9keT4KICAgIDwvdGdyb3Vw PgogICA8L3RhYmxlPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5z Z21sIGIvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sCmluZGV4IDdjOGZjM2Y2NTQu LjIzOWY3MTMyOTUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKQEAgLTI1MTYsNiArMjUx NiwxNiBAQCBTRUxFQ1QgKiBGUk9NIHBnX2xvY2tzIHBsIExFRlQgSk9JTiBwZ19wcmVwYXJl ZF94YWN0cyBwcHgKICAgICAgICBmYWxzZSBmb3IgcGh5c2ljYWwgc2xvdHMuCiAgICAgICA8 L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRy eSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5p dGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmNvbmZsaWN0aW5nPC9zdHJ1Y3RmaWVsZD4g PHR5cGU+Ym9vbDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAg IFRydWUgaWYgdGhpcyBsb2dpY2FsIHNsb3QgY29uZmxpY3RlZCB3aXRoIHJlY292ZXJ5IChh bmQgc28gaXMgbm93CisgICAgICAgaW52YWxpZGF0ZWQpLiBBbHdheXMgTlVMTCBmb3IgcGh5 c2ljYWwgc2xvdHMuCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CiAgICAg PC90Ym9keT4KICAgIDwvdGdyb3VwPgogICA8L3RhYmxlPgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0 L2dpc3R4bG9nLmMKaW5kZXggNzQzZWUzNjNjNS4uMDRhOWI0MDI3MSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvZ2lzdC9naXN0eGxvZy5jCkBAIC0xOTcsNiArMTk3LDcgQEAgZ2lzdFJlZG9EZWxl dGVSZWNvcmQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCVhMb2dSZWNHZXRCbG9ja1Rh ZyhyZWNvcmQsIDAsICZybG9jYXRvciwgTlVMTCwgTlVMTCk7CiAKIAkJUmVzb2x2ZVJlY292 ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxkYXRhLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpv biwKKwkJCQkJCQkJCQkJeGxkYXRhLT5pc0NhdGFsb2dSZWwsCiAJCQkJCQkJCQkJCXJsb2Nh dG9yKTsKIAl9CiAKQEAgLTM5MCw2ICszOTEsNyBAQCBnaXN0UmVkb1BhZ2VSZXVzZShYTG9n UmVhZGVyU3RhdGUgKnJlY29yZCkKIAkgKi8KIAlpZiAoSW5Ib3RTdGFuZGJ5KQogCQlSZXNv bHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdEZ1bGxYaWQoeGxyZWMtPnNuYXBzaG90 Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQkJICAgeGxyZWMtPmlzQ2F0YWxvZ1JlbCwK IAkJCQkJCQkJCQkJCSAgIHhscmVjLT5sb2NhdG9yKTsKIH0KIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGFzaC9oYXNoX3hsb2cuYwppbmRleCAwOGNlYjkxMjg4Li5iODU2MzA0NzQ2IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoX3hsb2cuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGFzaC9oYXNoX3hsb2cuYwpAQCAtMTAwMyw2ICsxMDAzLDcgQEAgaGFz aF94bG9nX3ZhY3V1bV9vbmVfcGFnZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAogCQlY TG9nUmVjR2V0QmxvY2tUYWcocmVjb3JkLCAwLCAmcmxvY2F0b3IsIE5VTEwsIE5VTEwpOwog CQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bGRhdGEtPnNuYXBzaG90 Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQl4bGRhdGEtPmlzQ2F0YWxvZ1JlbCwKIAkJ CQkJCQkJCQkJcmxvY2F0b3IpOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpp bmRleCBkNDc4NzI0YjlkLi5kNjRmYjRjYzg0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW0uYwpAQCAtODg5MSw2ICs4ODkxLDcgQEAgaGVhcF94bG9nX3BydW5lKFhMb2dSZWFkZXJT dGF0ZSAqcmVjb3JkKQogCSAqLwogCWlmIChJbkhvdFN0YW5kYnkpCiAJCVJlc29sdmVSZWNv dmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhscmVjLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpv biwKKwkJCQkJCQkJCQkJeGxyZWMtPmlzQ2F0YWxvZ1JlbCwKIAkJCQkJCQkJCQkJcmxvY2F0 b3IpOwogCiAJLyoKQEAgLTkwNjAsNiArOTA2MSw3IEBAIGhlYXBfeGxvZ192aXNpYmxlKFhM b2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCSAqLwogCWlmIChJbkhvdFN0YW5kYnkpCiAJCVJl c29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhscmVjLT5zbmFwc2hvdENvbmZs aWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJeGxyZWMtPmZsYWdzICYgVklTSUJJTElUWU1BUF9J U19DQVRBTE9HX1JFTCwKIAkJCQkJCQkJCQkJcmxvY2F0b3IpOwogCiAJLyoKQEAgLTkxNzcs NiArOTE3OSw3IEBAIGhlYXBfeGxvZ19mcmVlemVfcGFnZShYTG9nUmVhZGVyU3RhdGUgKnJl Y29yZCkKIAogCQlYTG9nUmVjR2V0QmxvY2tUYWcocmVjb3JkLCAwLCAmcmxvY2F0b3IsIE5V TEwsIE5VTEwpOwogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bHJl Yy0+c25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCXhscmVjLT5pc0NhdGFs b2dSZWwsCiAJCQkJCQkJCQkJCXJsb2NhdG9yKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25i dHJlZS9uYnR4bG9nLmMKaW5kZXggNDE0Y2E0ZjZkZS4uYzg3ZTQ2ZWQ2NiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR4bG9nLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL25idHJlZS9uYnR4bG9nLmMKQEAgLTY2OSw2ICs2NjksNyBAQCBidHJlZV94 bG9nX2RlbGV0ZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJWExvZ1JlY0dldEJsb2Nr VGFnKHJlY29yZCwgMCwgJnJsb2NhdG9yLCBOVUxMLCBOVUxMKTsKIAogCQlSZXNvbHZlUmVj b3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bHJlYy0+c25hcHNob3RDb25mbGljdEhvcml6 b24sCisJCQkJCQkJCQkJCXhscmVjLT5pc0NhdGFsb2dSZWwsCiAJCQkJCQkJCQkJCXJsb2Nh dG9yKTsKIAl9CiAKQEAgLTEwMDcsNiArMTAwOCw3IEBAIGJ0cmVlX3hsb2dfcmV1c2VfcGFn ZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAogCWlmIChJbkhvdFN0YW5kYnkpCiAJCVJl c29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90RnVsbFhpZCh4bHJlYy0+c25hcHNo b3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCQkgICB4bHJlYy0+aXNDYXRhbG9nUmVs LAogCQkJCQkJCQkJCQkJICAgeGxyZWMtPmxvY2F0b3IpOwogfQogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9zcGdpc3Qvc3BneGxvZy5jCmluZGV4IGIwNzFiNTljOGEuLjQ1OWFjOTI5YmEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BneGxvZy5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BneGxvZy5jCkBAIC04NzksNiArODc5LDcgQEAgc3Bn UmVkb1ZhY3V1bVJlZGlyZWN0KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCiAJCVhMb2dS ZWNHZXRCbG9ja1RhZyhyZWNvcmQsIDAsICZsb2NhdG9yLCBOVUxMLCBOVUxMKTsKIAkJUmVz b2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxkYXRhLT5zbmFwc2hvdENvbmZs aWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJeGxkYXRhLT5pc0NhdGFsb2dSZWwsCiAJCQkJCQkJ CQkJCWxvY2F0b3IpOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0veGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCmluZGV4 IGZiNGM4NjBiZGUuLjg2NzY3NWQ1YTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9n LmMKQEAgLTY0NDcsNiArNjQ0Nyw3IEBAIENyZWF0ZUNoZWNrUG9pbnQoaW50IGZsYWdzKQog CVZpcnR1YWxUcmFuc2FjdGlvbklkICp2eGlkczsKIAlpbnQJCQludnhpZHM7CiAJaW50CQkJ b2xkWExvZ0FsbG93ZWQgPSAwOworCWJvb2wJCWludmFsaWRhdGVkID0gZmFsc2U7CiAKIAkv KgogCSAqIEFuIGVuZC1vZi1yZWNvdmVyeSBjaGVja3BvaW50IGlzIHJlYWxseSBhIHNodXRk b3duIGNoZWNrcG9pbnQsIGp1c3QKQEAgLTY4MDcsNyArNjgwOCw4IEBAIENyZWF0ZUNoZWNr UG9pbnQoaW50IGZsYWdzKQogCSAqLwogCVhMQnl0ZVRvU2VnKFJlZG9SZWNQdHIsIF9sb2dT ZWdObywgd2FsX3NlZ21lbnRfc2l6ZSk7CiAJS2VlcExvZ1NlZyhyZWNwdHIsICZfbG9nU2Vn Tm8pOwotCWlmIChJbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzKF9sb2dTZWdO bykpCisJSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cyhfbG9nU2VnTm8sICZp bnZhbGlkYXRlZCwgSW52YWxpZE9pZCwgTlVMTCk7CisJaWYgKGludmFsaWRhdGVkKQogCXsK IAkJLyoKIAkJICogU29tZSBzbG90cyBoYXZlIGJlZW4gaW52YWxpZGF0ZWQ7IHJlY2FsY3Vs YXRlIHRoZSBvbGQtc2VnbWVudApAQCAtNzA4Niw2ICs3MDg4LDcgQEAgQ3JlYXRlUmVzdGFy dFBvaW50KGludCBmbGFncykKIAlYTG9nUmVjUHRyCWVuZHB0cjsKIAlYTG9nU2VnTm8JX2xv Z1NlZ05vOwogCVRpbWVzdGFtcFR6IHh0aW1lOworCWJvb2wJCWludmFsaWRhdGVkID0gZmFs c2U7CiAKIAkvKiBDb25jdXJyZW50IGNoZWNrcG9pbnQvcmVzdGFydHBvaW50IGNhbm5vdCBo YXBwZW4gKi8KIAlBc3NlcnQoIUlzVW5kZXJQb3N0bWFzdGVyIHx8IE15QmFja2VuZFR5cGUg PT0gQl9DSEVDS1BPSU5URVIpOwpAQCAtNzI1MSw3ICs3MjU0LDggQEAgQ3JlYXRlUmVzdGFy dFBvaW50KGludCBmbGFncykKIAlyZXBsYXlQdHIgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKCZy ZXBsYXlUTEkpOwogCWVuZHB0ciA9IChyZWNlaXZlUHRyIDwgcmVwbGF5UHRyKSA/IHJlcGxh eVB0ciA6IHJlY2VpdmVQdHI7CiAJS2VlcExvZ1NlZyhlbmRwdHIsICZfbG9nU2VnTm8pOwot CWlmIChJbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzKF9sb2dTZWdObykpCisJ SW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cyhfbG9nU2VnTm8sICZpbnZhbGlk YXRlZCwgSW52YWxpZE9pZCwgTlVMTCk7CisJaWYgKGludmFsaWRhdGVkKQogCXsKIAkJLyoK IAkJICogU29tZSBzbG90cyBoYXZlIGJlZW4gaW52YWxpZGF0ZWQ7IHJlY2FsY3VsYXRlIHRo ZSBvbGQtc2VnbWVudApAQCAtNzk2Niw2ICs3OTcwLDIyIEBAIHhsb2dfcmVkbyhYTG9nUmVh ZGVyU3RhdGUgKnJlY29yZCkKIAkJLyogVXBkYXRlIG91ciBjb3B5IG9mIHRoZSBwYXJhbWV0 ZXJzIGluIHBnX2NvbnRyb2wgKi8KIAkJbWVtY3B5KCZ4bHJlYywgWExvZ1JlY0dldERhdGEo cmVjb3JkKSwgc2l6ZW9mKHhsX3BhcmFtZXRlcl9jaGFuZ2UpKTsKIAorCQkvKgorCQkgKiBJ bnZhbGlkYXRlIGxvZ2ljYWwgc2xvdHMgaWYgd2UgYXJlIGluIGhvdCBzdGFuZGJ5IGFuZCB0 aGUgcHJpbWFyeSBkb2VzIG5vdAorCQkgKiBoYXZlIGEgV0FMIGxldmVsIHN1ZmZpY2llbnQg Zm9yIGxvZ2ljYWwgZGVjb2RpbmcuIE5vIG5lZWQgdG8gc2VhcmNoCisJCSAqIGZvciBwb3Rl bnRpYWxseSBjb25mbGljdGluZyBsb2dpY2FsbHkgc2xvdHMgaWYgc3RhbmRieSBpcyBydW5u aW5nCisJCSAqIHdpdGggd2FsX2xldmVsIGxvd2VyIHRoYW4gbG9naWNhbCwgYmVjYXVzZSBp biB0aGF0IGNhc2UsIHdlIHdvdWxkCisJCSAqIGhhdmUgZWl0aGVyIGRpc2FsbG93ZWQgY3Jl YXRpb24gb2YgbG9naWNhbCBzbG90cyBvciBpbnZhbGlkYXRlZCBleGlzdGluZworCQkgKiBv bmVzLgorCQkgKi8KKwkJaWYgKEluUmVjb3ZlcnkgJiYgSW5Ib3RTdGFuZGJ5ICYmCisJCQl4 bHJlYy53YWxfbGV2ZWwgPCBXQUxfTEVWRUxfTE9HSUNBTCAmJgorCQkJd2FsX2xldmVsID49 IFdBTF9MRVZFTF9MT0dJQ0FMKQorCQl7CisJCQlUcmFuc2FjdGlvbklkIENvbmZsaWN0SG9y aXpvbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCQkJSW52YWxpZGF0ZU9ic29sZXRlUmVw bGljYXRpb25TbG90cyhJbnZhbGlkWExvZ1JlY1B0ciwgTlVMTCwgSW52YWxpZE9pZCwgJkNv bmZsaWN0SG9yaXpvbik7CisJCX0KKwogCQlMV0xvY2tBY3F1aXJlKENvbnRyb2xGaWxlTG9j aywgTFdfRVhDTFVTSVZFKTsKIAkJQ29udHJvbEZpbGUtPk1heENvbm5lY3Rpb25zID0geGxy ZWMuTWF4Q29ubmVjdGlvbnM7CiAJCUNvbnRyb2xGaWxlLT5tYXhfd29ya2VyX3Byb2Nlc3Nl cyA9IHhscmVjLm1heF93b3JrZXJfcHJvY2Vzc2VzOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0 ZW1fdmlld3Muc3FsCmluZGV4IDg2MDhlM2ZhNWIuLmEyNzJiZDRhODggMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTk5Nyw3ICs5OTcsOCBAQCBDUkVBVEUg VklFVyBwZ19yZXBsaWNhdGlvbl9zbG90cyBBUwogICAgICAgICAgICAgTC5jb25maXJtZWRf Zmx1c2hfbHNuLAogICAgICAgICAgICAgTC53YWxfc3RhdHVzLAogICAgICAgICAgICAgTC5z YWZlX3dhbF9zaXplLAotICAgICAgICAgICAgTC50d29fcGhhc2UKKyAgICAgICAgICAgIEwu dHdvX3BoYXNlLAorICAgICAgICAgICAgTC5jb25mbGljdGluZwogICAgIEZST00gcGdfZ2V0 X3JlcGxpY2F0aW9uX3Nsb3RzKCkgQVMgTAogICAgICAgICAgICAgTEVGVCBKT0lOIHBnX2Rh dGFiYXNlIEQgT04gKEwuZGF0b2lkID0gRC5vaWQpOwogCkBAIC0xMDY1LDcgKzEwNjYsOCBA QCBDUkVBVEUgVklFVyBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cyBBUwogICAgICAgICAg ICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfbG9jayhELm9pZCkgQVMgY29uZmxfbG9jaywK ICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3NuYXBzaG90KEQub2lkKSBB UyBjb25mbF9zbmFwc2hvdCwKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0 X2J1ZmZlcnBpbihELm9pZCkgQVMgY29uZmxfYnVmZmVycGluLAotICAgICAgICAgICAgcGdf c3RhdF9nZXRfZGJfY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayhELm9pZCkgQVMgY29uZmxf ZGVhZGxvY2sKKyAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3N0YXJ0dXBf ZGVhZGxvY2soRC5vaWQpIEFTIGNvbmZsX2RlYWRsb2NrLAorICAgICAgICAgICAgcGdfc3Rh dF9nZXRfZGJfY29uZmxpY3RfbG9naWNhbHNsb3QoRC5vaWQpIEFTIGNvbmZsX2FjdGl2ZV9s b2dpY2Fsc2xvdAogICAgIEZST00gcGdfZGF0YWJhc2UgRDsKIAogQ1JFQVRFIFZJRVcgcGdf c3RhdF91c2VyX2Z1bmN0aW9ucyBBUwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMKaW5kZXggZmExYjY0MWEyYi4uMDcwZmQzNzhlOCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVu Y3MuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5j cy5jCkBAIC0yMTYsOSArMjE2LDkgQEAgcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzX2d1 dHMoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGJvb2wgY29uZmlybSwgYm9vbCBiaW4KIAog CQkvKgogCQkgKiBBZnRlciB0aGUgc2FuaXR5IGNoZWNrcyBpbiBDcmVhdGVEZWNvZGluZ0Nv bnRleHQsIG1ha2Ugc3VyZSB0aGUKLQkJICogcmVzdGFydF9sc24gaXMgdmFsaWQuICBBdm9p ZCAiY2Fubm90IGdldCBjaGFuZ2VzIiB3b3JkaW5nIGluIHRoaXMKLQkJICogZXJybXNnIGJl Y2F1c2UgdGhhdCdkIGJlIGNvbmZ1c2luZ2x5IGFtYmlndW91cyBhYm91dCBubyBjaGFuZ2Vz Ci0JCSAqIGJlaW5nIGF2YWlsYWJsZS4KKwkJICogcmVzdGFydF9sc24gaXMgdmFsaWQgb3Ig Ym90aCB4bWluIGFuZCBjYXRhbG9nX3htaW4gYXJlIHZhbGlkLiBBdm9pZAorCQkgKiAiY2Fu bm90IGdldCBjaGFuZ2VzIiB3b3JkaW5nIGluIHRoaXMgZXJybXNnIGJlY2F1c2UgdGhhdCdk IGJlCisJCSAqIGNvbmZ1c2luZ2x5IGFtYmlndW91cyBhYm91dCBubyBjaGFuZ2VzIGJlaW5n IGF2YWlsYWJsZS4KIAkJICovCiAJCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKE15UmVwbGlj YXRpb25TbG90LT5kYXRhLnJlc3RhcnRfbHNuKSkKIAkJCWVyZXBvcnQoRVJST1IsCkBAIC0y MjcsNiArMjI3LDEzIEBAIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlc19ndXRzKEZ1bmN0 aW9uQ2FsbEluZm8gZmNpbmZvLCBib29sIGNvbmZpcm0sIGJvb2wgYmluCiAJCQkJCQkJTmFt ZVN0cigqbmFtZSkpLAogCQkJCQkgZXJyZGV0YWlsKCJUaGlzIHNsb3QgaGFzIG5ldmVyIHBy ZXZpb3VzbHkgcmVzZXJ2ZWQgV0FMLCBvciBpdCBoYXMgYmVlbiBpbnZhbGlkYXRlZC4iKSkp OwogCisJCWlmIChMb2dpY2FsUmVwbGljYXRpb25TbG90SXNJbnZhbGlkKE15UmVwbGljYXRp b25TbG90KSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JK RUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJjYW5ub3Qg cmVhZCBmcm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIiLAorCQkJCQkJCU5h bWVTdHIoKm5hbWUpKSwKKwkJCQkJIGVycmRldGFpbCgiVGhpcyBzbG90IGhhcyBiZWVuIGlu dmFsaWRhdGVkIGJlY2F1c2UgaXQgd2FzIGNvbmZsaWN0aW5nIHdpdGggcmVjb3ZlcnkuIikp KTsKKwogCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CiAKIAkJLyoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3Nsb3QuYwppbmRleCBmMjg2OTE4ZjY5Li4zOGM2ZjE4ODg2IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKKysrIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vc2xvdC5jCkBAIC04NTUsOCArODU1LDEwIEBAIFJlcGxpY2F0aW9u U2xvdHNDb21wdXRlUmVxdWlyZWRYbWluKGJvb2wgYWxyZWFkeV9sb2NrZWQpCiAJCVNwaW5M b2NrQWNxdWlyZSgmcy0+bXV0ZXgpOwogCQllZmZlY3RpdmVfeG1pbiA9IHMtPmVmZmVjdGl2 ZV94bWluOwogCQllZmZlY3RpdmVfY2F0YWxvZ194bWluID0gcy0+ZWZmZWN0aXZlX2NhdGFs b2dfeG1pbjsKLQkJaW52YWxpZGF0ZWQgPSAoIVhMb2dSZWNQdHJJc0ludmFsaWQocy0+ZGF0 YS5pbnZhbGlkYXRlZF9hdCkgJiYKLQkJCQkJICAgWExvZ1JlY1B0cklzSW52YWxpZChzLT5k YXRhLnJlc3RhcnRfbHNuKSk7CisJCWludmFsaWRhdGVkID0gKCghWExvZ1JlY1B0cklzSW52 YWxpZChzLT5kYXRhLmludmFsaWRhdGVkX2F0KSAmJgorCQkJCQkJWExvZ1JlY1B0cklzSW52 YWxpZChzLT5kYXRhLnJlc3RhcnRfbHNuKSkKKwkJCQkJICAgfHwgKCFUcmFuc2FjdGlvbklk SXNWYWxpZChzLT5kYXRhLnhtaW4pICYmCisJCQkJCQkgICAhVHJhbnNhY3Rpb25JZElzVmFs aWQocy0+ZGF0YS5jYXRhbG9nX3htaW4pKSk7CiAJCVNwaW5Mb2NrUmVsZWFzZSgmcy0+bXV0 ZXgpOwogCiAJCS8qIGludmFsaWRhdGVkIHNsb3RzIG5lZWQgbm90IGFwcGx5ICovCkBAIC0x MjI0LDIwICsxMjI2LDIxIEBAIFJlcGxpY2F0aW9uU2xvdFJlc2VydmVXYWwodm9pZCkKIH0K IAogLyoKLSAqIEhlbHBlciBmb3IgSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90 cyAtLSBhY3F1aXJlcyB0aGUgZ2l2ZW4gc2xvdAotICogYW5kIG1hcmsgaXQgaW52YWxpZCwg aWYgbmVjZXNzYXJ5IGFuZCBwb3NzaWJsZS4KKyAqIEhlbHBlciBmb3IgSW52YWxpZGF0ZU9i c29sZXRlUmVwbGljYXRpb25TbG90cworICoKKyAqIEFjcXVpcmVzIHRoZSBnaXZlbiBzbG90 IGFuZCBtYXJrIGl0IGludmFsaWQsIGlmIG5lY2Vzc2FyeSBhbmQgcG9zc2libGUuCiAgKgog ICogUmV0dXJucyB3aGV0aGVyIFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrIHdhcyByZWxl YXNlZCBpbiB0aGUgaW50ZXJpbSAoYW5kCiAgKiBpbiB0aGF0IGNhc2Ugd2UncmUgbm90IGhv bGRpbmcgdGhlIGxvY2sgYXQgcmV0dXJuLCBvdGhlcndpc2Ugd2UgYXJlKS4KICAqCi0gKiBT ZXRzICppbnZhbGlkYXRlZCB0cnVlIGlmIHRoZSBzbG90IHdhcyBpbnZhbGlkYXRlZC4gKFVu dG91Y2hlZCBvdGhlcndpc2UuKQorICogU2V0cyAqaW52YWxpZGF0ZWQgdHJ1ZSBpZiBhbiBv YnNvbGV0ZSBzbG90IHdhcyBpbnZhbGlkYXRlZC4gKFVudG91Y2hlZCBvdGhlcndpc2UuKQog ICoKICAqIFRoaXMgaXMgaW5oZXJlbnRseSByYWN5LCBiZWNhdXNlIHdlIHJlbGVhc2UgdGhl IExXTG9jawogICogZm9yIHN5c2NhbGxzLCBzbyBjYWxsZXIgbXVzdCByZXN0YXJ0IGlmIHdl IHJldHVybiB0cnVlLgogICovCiBzdGF0aWMgYm9vbAotSW52YWxpZGF0ZVBvc3NpYmx5T2Jz b2xldGVTbG90KFJlcGxpY2F0aW9uU2xvdCAqcywgWExvZ1JlY1B0ciBvbGRlc3RMU04sCi0J CQkJCQkJICAgYm9vbCAqaW52YWxpZGF0ZWQpCitJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0 ZU9yQ29uZmxpY3RpbmdMb2dpY2FsU2xvdChSZXBsaWNhdGlvblNsb3QgKnMsIFhMb2dSZWNQ dHIgb2xkZXN0TFNOLAorCQkJCQkJCQkJCQkJICAgYm9vbCAqaW52YWxpZGF0ZWQsIFRyYW5z YWN0aW9uSWQgKnhpZCkKIHsKIAlpbnQJCQlsYXN0X3NpZ25hbGVkX3BpZCA9IDA7CiAJYm9v bAkJcmVsZWFzZWRfbG9jayA9IGZhbHNlOwpAQCAtMTI0NSw2ICsxMjQ4LDkgQEAgSW52YWxp ZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KFJlcGxpY2F0aW9uU2xvdCAqcywgWExvZ1JlY1B0 ciBvbGRlc3RMU04sCiAJZm9yICg7OykKIAl7CiAJCVhMb2dSZWNQdHIJcmVzdGFydF9sc247 CisJCVRyYW5zYWN0aW9uSWQgc2xvdF94bWluOworCQlUcmFuc2FjdGlvbklkIHNsb3RfY2F0 YWxvZ194bWluOworCiAJCU5hbWVEYXRhCXNsb3RuYW1lOwogCQlpbnQJCQlhY3RpdmVfcGlk ID0gMDsKIApAQCAtMTI2MSwxOCArMTI2NywzMyBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNv bGV0ZVNsb3QoUmVwbGljYXRpb25TbG90ICpzLCBYTG9nUmVjUHRyIG9sZGVzdExTTiwKIAkJ ICogQ2hlY2sgaWYgdGhlIHNsb3QgbmVlZHMgdG8gYmUgaW52YWxpZGF0ZWQuIElmIGl0IG5l ZWRzIHRvIGJlCiAJCSAqIGludmFsaWRhdGVkLCBhbmQgaXMgbm90IGN1cnJlbnRseSBhY3F1 aXJlZCwgYWNxdWlyZSBpdCBhbmQgbWFyayBpdAogCQkgKiBhcyBoYXZpbmcgYmVlbiBpbnZh bGlkYXRlZC4gIFdlIGRvIHRoaXMgd2l0aCB0aGUgc3BpbmxvY2sgaGVsZCB0bwotCQkgKiBh dm9pZCByYWNlIGNvbmRpdGlvbnMgLS0gZm9yIGV4YW1wbGUgdGhlIHJlc3RhcnRfbHNuIGNv dWxkIG1vdmUKLQkJICogZm9yd2FyZCwgb3IgdGhlIHNsb3QgY291bGQgYmUgZHJvcHBlZC4K KwkJICogYXZvaWQgcmFjZSBjb25kaXRpb25zIC0tIGZvciBleGFtcGxlIHRoZSByZXN0YXJ0 X2xzbiAob3IgdGhlCisJCSAqIHhtaW4ocykgY291bGQpIG1vdmUgZm9yd2FyZCBvciB0aGUg c2xvdCBjb3VsZCBiZSBkcm9wcGVkLgogCQkgKi8KIAkJU3BpbkxvY2tBY3F1aXJlKCZzLT5t dXRleCk7CiAKIAkJcmVzdGFydF9sc24gPSBzLT5kYXRhLnJlc3RhcnRfbHNuOworCQlzbG90 X3htaW4gPSBzLT5kYXRhLnhtaW47CisJCXNsb3RfY2F0YWxvZ194bWluID0gcy0+ZGF0YS5j YXRhbG9nX3htaW47CisKKwkJLyogc2xvdCBoYXMgYmVlbiBpbnZhbGlkYXRlZCAobG9naWNh bCBkZWNvZGluZyBjb25mbGljdCBjYXNlKSAqLworCQlpZiAoKHhpZCAmJgorCQkJICgoTG9n aWNhbFJlcGxpY2F0aW9uU2xvdElzSW52YWxpZChzKSkKKwkJCSAgfHwKIAogCQkvKgotCQkg KiBJZiB0aGUgc2xvdCBpcyBhbHJlYWR5IGludmFsaWQgb3IgaXMgZnJlc2ggZW5vdWdoLCB3 ZSBkb24ndCBuZWVkIHRvCi0JCSAqIGRvIGFueXRoaW5nLgorCQkgKiBXZSBhcmUgbm90IGZv cmNpbmcgZm9yIGludmFsaWRhdGlvbiBiZWNhdXNlIHRoZSB4aWQgaXMgdmFsaWQgYW5kCisJ CSAqIHRoaXMgaXMgYSBub24gY29uZmxpY3Rpbmcgc2xvdC4KIAkJICovCi0JCWlmIChYTG9n UmVjUHRySXNJbnZhbGlkKHJlc3RhcnRfbHNuKSB8fCByZXN0YXJ0X2xzbiA+PSBvbGRlc3RM U04pCisJCQkgIChUcmFuc2FjdGlvbklkSXNWYWxpZCgqeGlkKSAmJiAhKAorCQkJCQkJCQkJ CQkgICAoVHJhbnNhY3Rpb25JZElzVmFsaWQoc2xvdF94bWluKSAmJiBUcmFuc2FjdGlvbklk UHJlY2VkZXNPckVxdWFscyhzbG90X3htaW4sICp4aWQpKQorCQkJCQkJCQkJCQkgICB8fAor CQkJCQkJCQkJCQkgICAoVHJhbnNhY3Rpb25JZElzVmFsaWQoc2xvdF9jYXRhbG9nX3htaW4p ICYmIFRyYW5zYWN0aW9uSWRQcmVjZWRlc09yRXF1YWxzKHNsb3RfY2F0YWxvZ194bWluLCAq eGlkKSkKKwkJCQkJCQkJCQkJICAgKSkKKwkJCSAgKSkKKwkJCXx8CisJCS8qIHNsb3QgaGFz IGJlZW4gaW52YWxpZGF0ZWQgKG9ic29sZXRlIExTTiBjYXNlKSAqLworCQkJKCF4aWQgJiYg KFhMb2dSZWNQdHJJc0ludmFsaWQocmVzdGFydF9sc24pIHx8IHJlc3RhcnRfbHNuID49IG9s ZGVzdExTTikpKQogCQl7CiAJCQlTcGluTG9ja1JlbGVhc2UoJnMtPm11dGV4KTsKIAkJCWlm IChyZWxlYXNlZF9sb2NrKQpAQCAtMTI5Miw5ICsxMzEzLDE2IEBAIEludmFsaWRhdGVQb3Nz aWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3QgKnMsIFhMb2dSZWNQdHIgb2xkZXN0 TFNOLAogCQl7CiAJCQlNeVJlcGxpY2F0aW9uU2xvdCA9IHM7CiAJCQlzLT5hY3RpdmVfcGlk ID0gTXlQcm9jUGlkOwotCQkJcy0+ZGF0YS5pbnZhbGlkYXRlZF9hdCA9IHJlc3RhcnRfbHNu OwotCQkJcy0+ZGF0YS5yZXN0YXJ0X2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwotCisJCQlp ZiAoeGlkKQorCQkJeworCQkJCXMtPmRhdGEueG1pbiA9IEludmFsaWRUcmFuc2FjdGlvbklk OworCQkJCXMtPmRhdGEuY2F0YWxvZ194bWluID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJ CQl9CisJCQllbHNlCisJCQl7CisJCQkJcy0+ZGF0YS5pbnZhbGlkYXRlZF9hdCA9IHJlc3Rh cnRfbHNuOworCQkJCXMtPmRhdGEucmVzdGFydF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsK KwkJCX0KIAkJCS8qIExldCBjYWxsZXIga25vdyAqLwogCQkJKmludmFsaWRhdGVkID0gdHJ1 ZTsKIAkJfQpAQCAtMTMyNywxNSArMTM1NSwzOSBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNv bGV0ZVNsb3QoUmVwbGljYXRpb25TbG90ICpzLCBYTG9nUmVjUHRyIG9sZGVzdExTTiwKIAkJ CSAqLwogCQkJaWYgKGxhc3Rfc2lnbmFsZWRfcGlkICE9IGFjdGl2ZV9waWQpCiAJCQl7Ci0J CQkJZXJlcG9ydChMT0csCi0JCQkJCQllcnJtc2coInRlcm1pbmF0aW5nIHByb2Nlc3MgJWQg dG8gcmVsZWFzZSByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiIsCi0JCQkJCQkJICAgYWN0aXZl X3BpZCwgTmFtZVN0cihzbG90bmFtZSkpLAotCQkJCQkJZXJyZGV0YWlsKCJUaGUgc2xvdCdz IHJlc3RhcnRfbHNuICVYLyVYIGV4Y2VlZHMgdGhlIGxpbWl0IGJ5ICVsbHUgYnl0ZXMuIiwK LQkJCQkJCQkJICBMU05fRk9STUFUX0FSR1MocmVzdGFydF9sc24pLAotCQkJCQkJCQkgICh1 bnNpZ25lZCBsb25nIGxvbmcpIChvbGRlc3RMU04gLSByZXN0YXJ0X2xzbikpLAotCQkJCQkJ ZXJyaGludCgiWW91IG1pZ2h0IG5lZWQgdG8gaW5jcmVhc2UgbWF4X3Nsb3Rfd2FsX2tlZXBf c2l6ZS4iKSk7CisJCQkJaWYgKHhpZCkKKwkJCQl7CisJCQkJCWlmIChUcmFuc2FjdGlvbklk SXNWYWxpZCgqeGlkKSkKKwkJCQkJeworCQkJCQkJZXJlcG9ydChMT0csCisJCQkJCQkJCWVy cm1zZygidGVybWluYXRpbmcgcHJvY2VzcyAlZCBiZWNhdXNlIHJlcGxpY2F0aW9uIHNsb3Qg XCIlc1wiIGNvbmZsaWN0cyB3aXRoIHJlY292ZXJ5IiwKKwkJCQkJCQkJCSAgIGFjdGl2ZV9w aWQsIE5hbWVTdHIoc2xvdG5hbWUpKSwKKwkJCQkJCQkJZXJyZGV0YWlsKCJUaGUgc2xvdCBj b25mbGljdGVkIHdpdGggeGlkIGhvcml6b24gJXUuIiwKKwkJCQkJCQkJCQkgICp4aWQpKTsK KwkJCQkJfQorCQkJCQllbHNlCisJCQkJCXsKKwkJCQkJCWVyZXBvcnQoTE9HLAorCQkJCQkJ CQllcnJtc2coInRlcm1pbmF0aW5nIHByb2Nlc3MgJWQgYmVjYXVzZSByZXBsaWNhdGlvbiBz bG90IFwiJXNcIiBjb25mbGljdHMgd2l0aCByZWNvdmVyeSIsCisJCQkJCQkJCQkgICBhY3Rp dmVfcGlkLCBOYW1lU3RyKHNsb3RuYW1lKSksCisJCQkJCQkJCWVycmRldGFpbCgiTG9naWNh bCBkZWNvZGluZyBvbiBzdGFuZGJ5IHJlcXVpcmVzIHdhbF9sZXZlbCB0byBiZSBhdCBsZWFz dCBsb2dpY2FsIG9uIHRoZSBwcmltYXJ5IHNlcnZlciIpKTsKKwkJCQkJfQorCisJCQkJCSh2 b2lkKSBTZW5kUHJvY1NpZ25hbChhY3RpdmVfcGlkLCBQUk9DU0lHX1JFQ09WRVJZX0NPTkZM SUNUX0xPR0lDQUxTTE9ULCBJbnZhbGlkQmFja2VuZElkKTsKKwkJCQl9CisJCQkJZWxzZQor CQkJCXsKKwkJCQkJZXJlcG9ydChMT0csCisJCQkJCQkJZXJybXNnKCJ0ZXJtaW5hdGluZyBw cm9jZXNzICVkIHRvIHJlbGVhc2UgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIiLAorCQkJCQkJ CQkgICBhY3RpdmVfcGlkLCBOYW1lU3RyKHNsb3RuYW1lKSksCisJCQkJCQkJZXJyZGV0YWls KCJUaGUgc2xvdCdzIHJlc3RhcnRfbHNuICVYLyVYIGV4Y2VlZHMgdGhlIGxpbWl0IGJ5ICVs bHUgYnl0ZXMuIiwKKwkJCQkJCQkJCSAgTFNOX0ZPUk1BVF9BUkdTKHJlc3RhcnRfbHNuKSwK KwkJCQkJCQkJCSAgKHVuc2lnbmVkIGxvbmcgbG9uZykgKG9sZGVzdExTTiAtIHJlc3RhcnRf bHNuKSksCisJCQkJCQkJZXJyaGludCgiWW91IG1pZ2h0IG5lZWQgdG8gaW5jcmVhc2UgbWF4 X3Nsb3Rfd2FsX2tlZXBfc2l6ZS4iKSk7CisKKwkJCQkJKHZvaWQpIGtpbGwoYWN0aXZlX3Bp ZCwgU0lHVEVSTSk7CisJCQkJfQogCi0JCQkJKHZvaWQpIGtpbGwoYWN0aXZlX3BpZCwgU0lH VEVSTSk7CiAJCQkJbGFzdF9zaWduYWxlZF9waWQgPSBhY3RpdmVfcGlkOwogCQkJfQogCkBA IC0xMzY5LDEzICsxNDIxLDMzIEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChS ZXBsaWNhdGlvblNsb3QgKnMsIFhMb2dSZWNQdHIgb2xkZXN0TFNOLAogCQkJUmVwbGljYXRp b25TbG90U2F2ZSgpOwogCQkJUmVwbGljYXRpb25TbG90UmVsZWFzZSgpOwogCi0JCQllcmVw b3J0KExPRywKLQkJCQkJZXJybXNnKCJpbnZhbGlkYXRpbmcgb2Jzb2xldGUgcmVwbGljYXRp b24gc2xvdCBcIiVzXCIiLAotCQkJCQkJICAgTmFtZVN0cihzbG90bmFtZSkpLAotCQkJCQll cnJkZXRhaWwoIlRoZSBzbG90J3MgcmVzdGFydF9sc24gJVgvJVggZXhjZWVkcyB0aGUgbGlt aXQgYnkgJWxsdSBieXRlcy4iLAotCQkJCQkJCSAgTFNOX0ZPUk1BVF9BUkdTKHJlc3RhcnRf bHNuKSwKLQkJCQkJCQkgICh1bnNpZ25lZCBsb25nIGxvbmcpIChvbGRlc3RMU04gLSByZXN0 YXJ0X2xzbikpLAotCQkJCQllcnJoaW50KCJZb3UgbWlnaHQgbmVlZCB0byBpbmNyZWFzZSBt YXhfc2xvdF93YWxfa2VlcF9zaXplLiIpKTsKKwkJCWlmICh4aWQpCisJCQl7CisJCQkJcGdz dGF0X2Ryb3BfcmVwbHNsb3Qocyk7CisKKwkJCQlpZiAoVHJhbnNhY3Rpb25JZElzVmFsaWQo KnhpZCkpCisJCQkJeworCQkJCQllcmVwb3J0KExPRywKKwkJCQkJCQllcnJtc2coImludmFs aWRhdGluZyBzbG90IFwiJXNcIiBiZWNhdXNlIGl0IGNvbmZsaWN0cyB3aXRoIHJlY292ZXJ5 IiwgTmFtZVN0cihzbG90bmFtZSkpLAorCQkJCQkJCWVycmRldGFpbCgiVGhlIHNsb3QgY29u ZmxpY3RlZCB3aXRoIHhpZCBob3Jpem9uICV1LiIsICp4aWQpKTsKKwkJCQl9CisJCQkJZWxz ZQorCQkJCXsKKwkJCQkJZXJlcG9ydChMT0csCisJCQkJCQkJZXJybXNnKCJpbnZhbGlkYXRp bmcgc2xvdCBcIiVzXCIgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCByZWNvdmVyeSIsIE5h bWVTdHIoc2xvdG5hbWUpKSwKKwkJCQkJCQllcnJkZXRhaWwoIkxvZ2ljYWwgZGVjb2Rpbmcg b24gc3RhbmRieSByZXF1aXJlcyB3YWxfbGV2ZWwgdG8gYmUgYXQgbGVhc3QgbG9naWNhbCBv biB0aGUgcHJpbWFyeSBzZXJ2ZXIiKSk7CisJCQkJfQorCQkJfQorCQkJZWxzZQorCQkJewor CQkJCWVyZXBvcnQoTE9HLAorCQkJCQkJZXJybXNnKCJpbnZhbGlkYXRpbmcgb2Jzb2xldGUg cmVwbGljYXRpb24gc2xvdCBcIiVzXCIiLAorCQkJCQkJCSAgIE5hbWVTdHIoc2xvdG5hbWUp KSwKKwkJCQkJCWVycmRldGFpbCgiVGhlIHNsb3QncyByZXN0YXJ0X2xzbiAlWC8lWCBleGNl ZWRzIHRoZSBsaW1pdCBieSAlbGx1IGJ5dGVzLiIsCisJCQkJCQkJCSAgTFNOX0ZPUk1BVF9B UkdTKHJlc3RhcnRfbHNuKSwKKwkJCQkJCQkJICAodW5zaWduZWQgbG9uZyBsb25nKSAob2xk ZXN0TFNOIC0gcmVzdGFydF9sc24pKSwKKwkJCQkJCWVycmhpbnQoIllvdSBtaWdodCBuZWVk IHRvIGluY3JlYXNlIG1heF9zbG90X3dhbF9rZWVwX3NpemUuIikpOworCQkJfQogCiAJCQkv KiBkb25lIHdpdGggdGhpcyBzbG90IGZvciBub3cgKi8KIAkJCWJyZWFrOwpAQCAtMTM4OCwy MCArMTQ2MCw0MCBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoUmVwbGljYXRp b25TbG90ICpzLCBYTG9nUmVjUHRyIG9sZGVzdExTTiwKIH0KIAogLyoKLSAqIE1hcmsgYW55 IHNsb3QgdGhhdCBwb2ludHMgdG8gYW4gTFNOIG9sZGVyIHRoYW4gdGhlIGdpdmVuIHNlZ21l bnQKLSAqIGFzIGludmFsaWQ7IGl0IHJlcXVpcmVzIFdBTCB0aGF0J3MgYWJvdXQgdG8gYmUg cmVtb3ZlZC4KKyAqIEludmFsaWRhdGUgT2Jzb2xldGUgc2xvdHMgb3IgcmVzb2x2ZSByZWNv dmVyeSBjb25mbGljdHMgd2l0aCBsb2dpY2FsIHNsb3RzLgogICoKLSAqIFJldHVybnMgdHJ1 ZSB3aGVuIGFueSBzbG90IGhhdmUgZ290IGludmFsaWRhdGVkLgorICogT2Jzb2xldGUgY2Fz ZSAoYWthIHhpZCBpcyBOVUxMKToKICAqCi0gKiBOQiAtIHRoaXMgcnVucyBhcyBwYXJ0IG9m IGNoZWNrcG9pbnQsIHNvIGF2b2lkIHJhaXNpbmcgZXJyb3JzIGlmIHBvc3NpYmxlLgorICoJ IE1hcmsgYW55IHNsb3QgdGhhdCBwb2ludHMgdG8gYW4gTFNOIG9sZGVyIHRoYW4gdGhlIGdp dmVuIHNlZ21lbnQKKyAqCSBhcyBpbnZhbGlkOyBpdCByZXF1aXJlcyBXQUwgdGhhdCdzIGFi b3V0IHRvIGJlIHJlbW92ZWQuCisgKgkgaW52YWxpZGF0ZWQgaXMgc2V0IHRvIHRydWUgd2hl biBhbnkgc2xvdCBoYXZlIGdvdCBpbnZhbGlkYXRlZC4KKyAqCisgKiAgTG9naWNhbCByZXBs aWNhdGlvbiBzbG90IGNhc2U6CisgKgorICoJIFdoZW4geGlkIGlzIHZhbGlkLCBpdCBtZWFu cyB0aGF0IHdlIGFyZSBhYm91dCB0byByZW1vdmUgcm93cyBvbGRlciB0aGFuIHhpZC4KKyAq CSBUaGVyZWZvcmUgd2UgbmVlZCB0byBpbnZhbGlkYXRlIHNsb3RzIHRoYXQgZGVwZW5kIG9u IHNlZWluZyB0aG9zZSByb3dzLgorICoJIFdoZW4geGlkIGlzIGludmFsaWQsIGludmFsaWRh dGUgYWxsIGxvZ2ljYWwgc2xvdHMuIFRoaXMgaXMgcmVxdWlyZWQgd2hlbiB0aGUKKyAqCSBt YXN0ZXIgd2FsX2xldmVsIGlzIHNldCBiYWNrIHRvIHJlcGxpY2EsIHNvIGV4aXN0aW5nIGxv Z2ljYWwgc2xvdHMgbmVlZCB0bworICoJIGJlIGludmFsaWRhdGVkLgogICovCi1ib29sCi1J bnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzKFhMb2dTZWdObyBvbGRlc3RTZWdu bykKK3ZvaWQKK0ludmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMoWExvZ1NlZ05v IG9sZGVzdFNlZ25vLCBib29sICppbnZhbGlkYXRlZCwgT2lkIGRib2lkLCBUcmFuc2FjdGlv bklkICp4aWQpCiB7Ci0JWExvZ1JlY1B0cglvbGRlc3RMU047Ci0JYm9vbAkJaW52YWxpZGF0 ZWQgPSBmYWxzZTsKIAotCVhMb2dTZWdOb09mZnNldFRvUmVjUHRyKG9sZGVzdFNlZ25vLCAw LCB3YWxfc2VnbWVudF9zaXplLCBvbGRlc3RMU04pOworCVhMb2dSZWNQdHIJb2xkZXN0TFNO ID0gSW52YWxpZFhMb2dSZWNQdHI7CisJYm9vbCBsb2dpY2FsX3Nsb3RfaW52YWxpZGF0ZWQg PSBmYWxzZTsKKworCUFzc2VydChtYXhfcmVwbGljYXRpb25fc2xvdHMgPj0gMCk7CisKKwlp ZiAobWF4X3JlcGxpY2F0aW9uX3Nsb3RzID09IDApCisJCXJldHVybjsKKworCWlmICgheGlk KQorCXsKKwkJQXNzZXJ0KGludmFsaWRhdGVkKTsKKwkJKmludmFsaWRhdGVkID0gZmFsc2U7 CisJCVhMb2dTZWdOb09mZnNldFRvUmVjUHRyKG9sZGVzdFNlZ25vLCAwLCB3YWxfc2VnbWVu dF9zaXplLCBvbGRlc3RMU04pOworCX0KIAogcmVzdGFydDoKIAlMV0xvY2tBY3F1aXJlKFJl cGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrLCBMV19TSEFSRUQpOwpAQCAtMTQxMiwyNCArMTUw NCwzNiBAQCByZXN0YXJ0OgogCQlpZiAoIXMtPmluX3VzZSkKIAkJCWNvbnRpbnVlOwogCi0J CWlmIChJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3Qocywgb2xkZXN0TFNOLCAmaW52 YWxpZGF0ZWQpKQorCQlpZiAoeGlkKQogCQl7Ci0JCQkvKiBpZiB0aGUgbG9jayB3YXMgcmVs ZWFzZWQsIHN0YXJ0IGZyb20gc2NyYXRjaCAqLwotCQkJZ290byByZXN0YXJ0OworCQkJLyog d2UgYXJlIG9ubHkgZGVhbGluZyB3aXRoICpsb2dpY2FsKiBzbG90IGNvbmZsaWN0cyAqLwor CQkJaWYgKCFTbG90SXNMb2dpY2FsKHMpKQorCQkJCWNvbnRpbnVlOworCisJCQkvKgorCQkJ ICogbm90IHRoZSBkYXRhYmFzZSBvZiBpbnRlcmVzdCBhbmQgd2UgZG9uJ3Qgd2FudCBhbGwg dGhlCisJCQkgKiBkYXRhYmFzZSwgc2tpcAorCQkJICovCisJCQlpZiAocy0+ZGF0YS5kYXRh YmFzZSAhPSBkYm9pZCAmJiBUcmFuc2FjdGlvbklkSXNWYWxpZCgqeGlkKSkKKwkJCQljb250 aW51ZTsKIAkJfQorCisJCWlmIChJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZU9yQ29uZmxp Y3RpbmdMb2dpY2FsU2xvdChzLCBvbGRlc3RMU04sIGludmFsaWRhdGVkID8gaW52YWxpZGF0 ZWQgOiAmbG9naWNhbF9zbG90X2ludmFsaWRhdGVkLCB4aWQpKQorCQkJCWdvdG8gcmVzdGFy dDsKIAl9CisKIAlMV0xvY2tSZWxlYXNlKFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrKTsK IAogCS8qCi0JICogSWYgYW55IHNsb3RzIGhhdmUgYmVlbiBpbnZhbGlkYXRlZCwgcmVjYWxj dWxhdGUgdGhlIHJlc291cmNlIGxpbWl0cy4KKwkgKiBJZiBhbnkgc2xvdHMgaGF2ZSBiZWVu IGludmFsaWRhdGVkLCByZWNhbGN1bGF0ZSB0aGUgcmVxdWlyZWQgeG1pbgorCSAqIGFuZCB0 aGUgcmVxdWlyZWQgbHNuIChpZiBhcHByb3ByaWF0ZSkuCiAJICovCi0JaWYgKGludmFsaWRh dGVkKQorCWlmICgoIXhpZCAmJiAqaW52YWxpZGF0ZWQpIHx8ICh4aWQgJiYgbG9naWNhbF9z bG90X2ludmFsaWRhdGVkKSkKIAl7CiAJCVJlcGxpY2F0aW9uU2xvdHNDb21wdXRlUmVxdWly ZWRYbWluKGZhbHNlKTsKLQkJUmVwbGljYXRpb25TbG90c0NvbXB1dGVSZXF1aXJlZExTTigp OworCQlpZiAoIXhpZCAmJiAqaW52YWxpZGF0ZWQpCisJCQlSZXBsaWNhdGlvblNsb3RzQ29t cHV0ZVJlcXVpcmVkTFNOKCk7CiAJfQotCi0JcmV0dXJuIGludmFsaWRhdGVkOwogfQogCiAv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdGZ1bmNzLmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVuY3MuYwppbmRleCAyZjNjOTY0ODI0Li40 NDE5MmJjMzJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVu Y3MuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVuY3MuYwpAQCAtMjMy LDcgKzIzMiw3IEBAIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdChQR19GVU5DVElPTl9BUkdT KQogRGF0dW0KIHBnX2dldF9yZXBsaWNhdGlvbl9zbG90cyhQR19GVU5DVElPTl9BUkdTKQog ewotI2RlZmluZSBQR19HRVRfUkVQTElDQVRJT05fU0xPVFNfQ09MUyAxNAorI2RlZmluZSBQ R19HRVRfUkVQTElDQVRJT05fU0xPVFNfQ09MUyAxNQogCVJldHVyblNldEluZm8gKnJzaW5m byA9IChSZXR1cm5TZXRJbmZvICopIGZjaW5mby0+cmVzdWx0aW5mbzsKIAlYTG9nUmVjUHRy CWN1cnJsc247CiAJaW50CQkJc2xvdG5vOwpAQCAtNDA0LDYgKzQwNCwxNyBAQCBwZ19nZXRf cmVwbGljYXRpb25fc2xvdHMoUEdfRlVOQ1RJT05fQVJHUykKIAogCQl2YWx1ZXNbaSsrXSA9 IEJvb2xHZXREYXR1bShzbG90X2NvbnRlbnRzLmRhdGEudHdvX3BoYXNlKTsKIAorCQlpZiAo c2xvdF9jb250ZW50cy5kYXRhLmRhdGFiYXNlID09IEludmFsaWRPaWQpCisJCQludWxsc1tp KytdID0gdHJ1ZTsKKwkJZWxzZQorCQl7CisJCQlpZiAoc2xvdF9jb250ZW50cy5kYXRhLnht aW4gPT0gSW52YWxpZFRyYW5zYWN0aW9uSWQgJiYKKwkJCQlzbG90X2NvbnRlbnRzLmRhdGEu Y2F0YWxvZ194bWluID09IEludmFsaWRUcmFuc2FjdGlvbklkKQorCQkJCXZhbHVlc1tpKytd ID0gQm9vbEdldERhdHVtKHRydWUpOworCQkJZWxzZQorCQkJCXZhbHVlc1tpKytdID0gQm9v bEdldERhdHVtKGZhbHNlKTsKKwkJfQorCiAJCUFzc2VydChpID09IFBHX0dFVF9SRVBMSUNB VElPTl9TTE9UU19DT0xTKTsKIAogCQl0dXBsZXN0b3JlX3B1dHZhbHVlcyhyc2luZm8tPnNl dFJlc3VsdCwgcnNpbmZvLT5zZXREZXNjLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vd2Fsc2VuZGVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5k ZXIuYwppbmRleCA0ZWQzNzQ3ZTNmLi44ODg1Y2RlZWJjIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi93YWxzZW5kZXIuYwpAQCAtMTI1Myw2ICsxMjUzLDE0IEBAIFN0YXJ0TG9naWNhbFJl cGxpY2F0aW9uKFN0YXJ0UmVwbGljYXRpb25DbWQgKmNtZCkKIAogCVJlcGxpY2F0aW9uU2xv dEFjcXVpcmUoY21kLT5zbG90bmFtZSwgdHJ1ZSk7CiAKKwlpZiAoIVRyYW5zYWN0aW9uSWRJ c1ZhbGlkKE15UmVwbGljYXRpb25TbG90LT5kYXRhLnhtaW4pCisJCSAmJiAhVHJhbnNhY3Rp b25JZElzVmFsaWQoTXlSZXBsaWNhdGlvblNsb3QtPmRhdGEuY2F0YWxvZ194bWluKSkKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJF UkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgcmVhZCBmcm9tIGxvZ2lj YWwgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIiLAorCQkJCQkJY21kLT5zbG90bmFtZSksCisJ CQkJIGVycmRldGFpbCgiVGhpcyBzbG90IGhhcyBiZWVuIGludmFsaWRhdGVkIGJlY2F1c2Ug aXQgd2FzIGNvbmZsaWN0aW5nIHdpdGggcmVjb3ZlcnkuIikpKTsKKwogCWlmIChYTG9nUmVj UHRySXNJbnZhbGlkKE15UmVwbGljYXRpb25TbG90LT5kYXRhLnJlc3RhcnRfbHNuKSkKIAkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJF UkVRVUlTSVRFX1NUQVRFKSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3Byb2NzaWduYWwuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwpp bmRleCAzOTViMmNmNjkwLi5jODVjYjVjYzE4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv cHJvY3NpZ25hbC5jCkBAIC02NzMsNiArNjczLDkgQEAgcHJvY3NpZ25hbF9zaWd1c3IxX2hh bmRsZXIoU0lHTkFMX0FSR1MpCiAJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX1JFQ09W RVJZX0NPTkZMSUNUX1NOQVBTSE9UKSkKIAkJUmVjb3ZlcnlDb25mbGljdEludGVycnVwdChQ Uk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9UKTsKIAorCWlmIChDaGVja1Byb2NT aWduYWwoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVCkpCisJCVJlY292 ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FM U0xPVCk7CisKIAlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJ Q1RfU1RBUlRVUF9ERUFETE9DSykpCiAJCVJlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUFJP Q1NJR19SRUNPVkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NLKTsKIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvc3RhbmRieS5jCmluZGV4IDk0Y2M4NjBmNWYuLmVjODE3MzgxYTEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYworKysgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRl ICJ1dGlscy9wc19zdGF0dXMuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lb3V0LmgiCiAjaW5j bHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vc2xvdC5o IgogCiAvKiBVc2VyLXNldHRhYmxlIEdVQyBwYXJhbWV0ZXJzICovCiBpbnQJCQl2YWN1dW1f ZGVmZXJfY2xlYW51cF9hZ2U7CkBAIC00NzUsNiArNDc2LDcgQEAgUmVzb2x2ZVJlY292ZXJ5 Q29uZmxpY3RXaXRoVmlydHVhbFhJRHMoVmlydHVhbFRyYW5zYWN0aW9uSWQgKndhaXRsaXN0 LAogICovCiB2b2lkCiBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdChUcmFu c2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJYm9vbCBpc0Nh dGFsb2dSZWwsCiAJCQkJCQkJCQlSZWxGaWxlTG9jYXRvciBsb2NhdG9yKQogewogCVZpcnR1 YWxUcmFuc2FjdGlvbklkICpiYWNrZW5kczsKQEAgLTUwMCw2ICs1MDIsOSBAQCBSZXNvbHZl UmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdChUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29u ZmxpY3RIb3Jpem9uLAogCQkJCQkJCQkJCSAgIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1Rf U05BUFNIT1QsCiAJCQkJCQkJCQkJICAgV0FJVF9FVkVOVF9SRUNPVkVSWV9DT05GTElDVF9T TkFQU0hPVCwKIAkJCQkJCQkJCQkgICB0cnVlKTsKKworCWlmICh3YWxfbGV2ZWwgPj0gV0FM X0xFVkVMX0xPR0lDQUwgJiYgaXNDYXRhbG9nUmVsKQorCQlJbnZhbGlkYXRlT2Jzb2xldGVS ZXBsaWNhdGlvblNsb3RzKEludmFsaWRYTG9nUmVjUHRyLCBOVUxMLCBsb2NhdG9yLmRiT2lk LCAmc25hcHNob3RDb25mbGljdEhvcml6b24pOwogfQogCiAvKgpAQCAtNTA4LDYgKzUxMyw3 IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KFRyYW5zYWN0aW9uSWQg c25hcHNob3RDb25mbGljdEhvcml6b24sCiAgKi8KIHZvaWQKIFJlc29sdmVSZWNvdmVyeUNv bmZsaWN0V2l0aFNuYXBzaG90RnVsbFhpZChGdWxsVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENv bmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkgICBib29sIGlzQ2F0YWxvZ1JlbCwKIAkJCQkJ CQkJCQkgICBSZWxGaWxlTG9jYXRvciBsb2NhdG9yKQogewogCS8qCkBAIC01MjYsNyArNTMy LDkgQEAgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3RGdWxsWGlkKEZ1bGxU cmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3IKIAkJVHJhbnNhY3Rpb25JZCB0cnVu Y2F0ZWQ7CiAKIAkJdHJ1bmNhdGVkID0gWGlkRnJvbUZ1bGxUcmFuc2FjdGlvbklkKHNuYXBz aG90Q29uZmxpY3RIb3Jpem9uKTsKLQkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25h cHNob3QodHJ1bmNhdGVkLCBsb2NhdG9yKTsKKwkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RX aXRoU25hcHNob3QodHJ1bmNhdGVkLAorCQkJCQkJCQkJCQlpc0NhdGFsb2dSZWwsCisJCQkJ CQkJCQkJCWxvY2F0b3IpOwogCX0KIH0KIApAQCAtMTQ4Nyw2ICsxNDk1LDkgQEAgZ2V0X3Jl Y292ZXJ5X2NvbmZsaWN0X2Rlc2MoUHJvY1NpZ25hbFJlYXNvbiByZWFzb24pCiAJCWNhc2Ug UFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVDoKIAkJCXJlYXNvbkRlc2MgPSBf KCJyZWNvdmVyeSBjb25mbGljdCBvbiBzbmFwc2hvdCIpOwogCQkJYnJlYWs7CisJCWNhc2Ug UFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVDoKKwkJCXJlYXNvbkRlc2Mg PSBfKCJyZWNvdmVyeSBjb25mbGljdCBvbiByZXBsaWNhdGlvbiBzbG90Iik7CisJCQlicmVh azsKIAkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NUQVJUVVBfREVBRExPQ0s6 CiAJCQlyZWFzb25EZXNjID0gXygicmVjb3ZlcnkgY29uZmxpY3Qgb24gYnVmZmVyIGRlYWRs b2NrIik7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdy ZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwppbmRleCA0NzBiNzM0ZTllLi4w MDQxODk2NjIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKKysr IGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC0yNDgxLDYgKzI0ODEsOSBAQCBl cnJkZXRhaWxfcmVjb3ZlcnlfY29uZmxpY3Qodm9pZCkKIAkJY2FzZSBQUk9DU0lHX1JFQ09W RVJZX0NPTkZMSUNUX1NOQVBTSE9UOgogCQkJZXJyZGV0YWlsKCJVc2VyIHF1ZXJ5IG1pZ2h0 IGhhdmUgbmVlZGVkIHRvIHNlZSByb3cgdmVyc2lvbnMgdGhhdCBtdXN0IGJlIHJlbW92ZWQu Iik7CiAJCQlicmVhazsKKwkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lD QUxTTE9UOgorCQkJZXJyZGV0YWlsKCJVc2VyIHdhcyB1c2luZyB0aGUgbG9naWNhbCBzbG90 IHRoYXQgbXVzdCBiZSBkcm9wcGVkLiIpOworCQkJYnJlYWs7CiAJCWNhc2UgUFJPQ1NJR19S RUNPVkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NLOgogCQkJZXJyZGV0YWlsKCJVc2Vy IHRyYW5zYWN0aW9uIGNhdXNlZCBidWZmZXIgZGVhZGxvY2sgd2l0aCByZWNvdmVyeS4iKTsK IAkJCWJyZWFrOwpAQCAtMzA1MCw2ICszMDUzLDI3IEBAIFJlY292ZXJ5Q29uZmxpY3RJbnRl cnJ1cHQoUHJvY1NpZ25hbFJlYXNvbiByZWFzb24pCiAJCQljYXNlIFBST0NTSUdfUkVDT1ZF UllfQ09ORkxJQ1RfTE9DSzoKIAkJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9U QUJMRVNQQUNFOgogCQkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9U OgorCQkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9UOgorCisJ CQkJLyoKKwkJCQkgKiBGb3IgY29uZmxpY3RzIHRoYXQgcmVxdWlyZSBhIGxvZ2ljYWwgc2xv dCB0byBiZQorCQkJCSAqIGludmFsaWRhdGVkLCB0aGUgcmVxdWlyZW1lbnQgaXMgZm9yIHRo ZSBzaWduYWwgcmVjZWl2ZXIgdG8KKwkJCQkgKiByZWxlYXNlIHRoZSBzbG90LCBzbyB0aGF0 IGl0IGNvdWxkIGJlIGludmFsaWRhdGVkIGJ5IHRoZQorCQkJCSAqIHNpZ25hbCBzZW5kZXIu IFNvIGZvciBub3JtYWwgYmFja2VuZHMsIHRoZSB0cmFuc2FjdGlvbgorCQkJCSAqIHNob3Vs ZCBiZSBhYm9ydGVkLCBqdXN0IGxpa2UgZm9yIG90aGVyIHJlY292ZXJ5IGNvbmZsaWN0cy4K KwkJCQkgKiBCdXQgaWYgaXQncyB3YWxzZW5kZXIgb24gc3RhbmRieSwgd2UgZG9uJ3Qgd2Fu dCB0byBnbworCQkJCSAqIHRocm91Z2ggdGhlIGZvbGxvd2luZyBJc1RyYW5zYWN0aW9uT3JU cmFuc2FjdGlvbkJsb2NrKCkKKwkJCQkgKiBjaGVjaywgc28gYnJlYWsgaGVyZS4KKwkJCQkg Ki8KKwkJCQlpZiAoYW1fY2FzY2FkaW5nX3dhbHNlbmRlciAmJgorCQkJCQlyZWFzb24gPT0g UFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVCAmJgorCQkJCQlNeVJlcGxp Y2F0aW9uU2xvdCAmJiBTbG90SXNMb2dpY2FsKE15UmVwbGljYXRpb25TbG90KSkKKwkJCQl7 CisJCQkJCVJlY292ZXJ5Q29uZmxpY3RQZW5kaW5nID0gdHJ1ZTsKKwkJCQkJUXVlcnlDYW5j ZWxQZW5kaW5nID0gdHJ1ZTsKKwkJCQkJSW50ZXJydXB0UGVuZGluZyA9IHRydWU7CisJCQkJ CWJyZWFrOworCQkJCX0KIAogCQkJCS8qCiAJCQkJICogSWYgd2UgYXJlbid0IGluIGEgdHJh bnNhY3Rpb24gYW55IGxvbmdlciB0aGVuIGlnbm9yZS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9kYXRhYmFzZS5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWN0aXZpdHkvcGdzdGF0X2RhdGFiYXNlLmMKaW5kZXggNmU2NTBjZWFhZC4uNzE0OWYy MmY3MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2Rh dGFiYXNlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2RhdGFi YXNlLmMKQEAgLTEwOSw2ICsxMDksOSBAQCBwZ3N0YXRfcmVwb3J0X3JlY292ZXJ5X2NvbmZs aWN0KGludCByZWFzb24pCiAJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9CVUZG RVJQSU46CiAJCQlkYmVudHJ5LT5jb25mbGljdF9idWZmZXJwaW4rKzsKIAkJCWJyZWFrOwor CQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1Q6CisJCQlkYmVu dHJ5LT5jb25mbGljdF9sb2dpY2Fsc2xvdCsrOworCQkJYnJlYWs7CiAJCWNhc2UgUFJPQ1NJ R19SRUNPVkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NLOgogCQkJZGJlbnRyeS0+Y29u ZmxpY3Rfc3RhcnR1cF9kZWFkbG9jaysrOwogCQkJYnJlYWs7CkBAIC0zODcsNiArMzkwLDcg QEAgcGdzdGF0X2RhdGFiYXNlX2ZsdXNoX2NiKFBnU3RhdF9FbnRyeVJlZiAqZW50cnlfcmVm LCBib29sIG5vd2FpdCkKIAlQR1NUQVRfQUNDVU1fREJDT1VOVChjb25mbGljdF90YWJsZXNw YWNlKTsKIAlQR1NUQVRfQUNDVU1fREJDT1VOVChjb25mbGljdF9sb2NrKTsKIAlQR1NUQVRf QUNDVU1fREJDT1VOVChjb25mbGljdF9zbmFwc2hvdCk7CisJUEdTVEFUX0FDQ1VNX0RCQ09V TlQoY29uZmxpY3RfbG9naWNhbHNsb3QpOwogCVBHU1RBVF9BQ0NVTV9EQkNPVU5UKGNvbmZs aWN0X2J1ZmZlcnBpbik7CiAJUEdTVEFUX0FDQ1VNX0RCQ09VTlQoY29uZmxpY3Rfc3RhcnR1 cF9kZWFkbG9jayk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0 YXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKaW5kZXgg NjczNzQ5MzQwMi4uYWZkNjJkM2NjMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3Bnc3RhdGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1 bmNzLmMKQEAgLTEwNjYsNiArMTA2Niw4IEBAIFBHX1NUQVRfR0VUX0RCRU5UUllfSU5UNjQo eGFjdF9jb21taXQpCiAvKiBwZ19zdGF0X2dldF9kYl94YWN0X3JvbGxiYWNrICovCiBQR19T VEFUX0dFVF9EQkVOVFJZX0lOVDY0KHhhY3Rfcm9sbGJhY2spCiAKKy8qIHBnX3N0YXRfZ2V0 X2RiX2NvbmZsaWN0X2xvZ2ljYWxzbG90ICovCitQR19TVEFUX0dFVF9EQkVOVFJZX0lOVDY0 KGNvbmZsaWN0X2xvZ2ljYWxzbG90KQogCiBEYXR1bQogcGdfc3RhdF9nZXRfZGJfc3RhdF9y ZXNldF90aW1lKFBHX0ZVTkNUSU9OX0FSR1MpCkBAIC0xMDk5LDYgKzExMDEsNyBAQCBwZ19z dGF0X2dldF9kYl9jb25mbGljdF9hbGwoUEdfRlVOQ1RJT05fQVJHUykKIAkJcmVzdWx0ID0g KGludDY0KSAoZGJlbnRyeS0+Y29uZmxpY3RfdGFibGVzcGFjZSArCiAJCQkJCQkgIGRiZW50 cnktPmNvbmZsaWN0X2xvY2sgKwogCQkJCQkJICBkYmVudHJ5LT5jb25mbGljdF9zbmFwc2hv dCArCisJCQkJCQkgIGRiZW50cnktPmNvbmZsaWN0X2xvZ2ljYWxzbG90ICsKIAkJCQkJCSAg ZGJlbnRyeS0+Y29uZmxpY3RfYnVmZmVycGluICsKIAkJCQkJCSAgZGJlbnRyeS0+Y29uZmxp Y3Rfc3RhcnR1cF9kZWFkbG9jayk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4 IGMwZjJhOGE3N2MuLmM4ZTExYWI3MTAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApA QCAtNTU3Nyw2ICs1NTc3LDExIEBACiAgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X2RiX2Nv bmZsaWN0X3NuYXBzaG90JywgcHJvdm9sYXRpbGUgPT4gJ3MnLAogICBwcm9wYXJhbGxlbCA9 PiAncicsIHByb3JldHR5cGUgPT4gJ2ludDgnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKICAg cHJvc3JjID0+ICdwZ19zdGF0X2dldF9kYl9jb25mbGljdF9zbmFwc2hvdCcgfSwKK3sgb2lk ID0+ICc5OTAxJywKKyAgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IHJlY292ZXJ5IGNvbmZsaWN0 cyBpbiBkYXRhYmFzZSBjYXVzZWQgYnkgbG9naWNhbCByZXBsaWNhdGlvbiBzbG90JywKKyAg cHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfbG9naWNhbHNsb3QnLCBwcm92 b2xhdGlsZSA9PiAncycsCisgIHByb3BhcmFsbGVsID0+ICdyJywgcHJvcmV0dHlwZSA9PiAn aW50OCcsIHByb2FyZ3R5cGVzID0+ICdvaWQnLAorICBwcm9zcmMgPT4gJ3BnX3N0YXRfZ2V0 X2RiX2NvbmZsaWN0X2xvZ2ljYWxzbG90JyB9LAogeyBvaWQgPT4gJzMwNjgnLAogICBkZXNj ciA9PiAnc3RhdGlzdGljczogcmVjb3ZlcnkgY29uZmxpY3RzIGluIGRhdGFiYXNlIGNhdXNl ZCBieSBzaGFyZWQgYnVmZmVyIHBpbicsCiAgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X2Ri X2NvbmZsaWN0X2J1ZmZlcnBpbicsIHByb3ZvbGF0aWxlID0+ICdzJywKQEAgLTEwOTQ2LDkg KzEwOTUxLDkgQEAKICAgcHJvbmFtZSA9PiAncGdfZ2V0X3JlcGxpY2F0aW9uX3Nsb3RzJywg cHJvcm93cyA9PiAnMTAnLCBwcm9pc3N0cmljdCA9PiAnZicsCiAgIHByb3JldHNldCA9PiAn dCcsIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcmV0dHlwZSA9PiAncmVjb3JkJywKICAgcHJv YXJndHlwZXMgPT4gJycsCi0gIHByb2FsbGFyZ3R5cGVzID0+ICd7bmFtZSxuYW1lLHRleHQs b2lkLGJvb2wsYm9vbCxpbnQ0LHhpZCx4aWQscGdfbHNuLHBnX2xzbix0ZXh0LGludDgsYm9v bH0nLAotICBwcm9hcmdtb2RlcyA9PiAne28sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sb30n LAotICBwcm9hcmduYW1lcyA9PiAne3Nsb3RfbmFtZSxwbHVnaW4sc2xvdF90eXBlLGRhdG9p ZCx0ZW1wb3JhcnksYWN0aXZlLGFjdGl2ZV9waWQseG1pbixjYXRhbG9nX3htaW4scmVzdGFy dF9sc24sY29uZmlybWVkX2ZsdXNoX2xzbix3YWxfc3RhdHVzLHNhZmVfd2FsX3NpemUsdHdv X3BoYXNlfScsCisgIHByb2FsbGFyZ3R5cGVzID0+ICd7bmFtZSxuYW1lLHRleHQsb2lkLGJv b2wsYm9vbCxpbnQ0LHhpZCx4aWQscGdfbHNuLHBnX2xzbix0ZXh0LGludDgsYm9vbCxib29s fScsCisgIHByb2FyZ21vZGVzID0+ICd7byxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG99 JywKKyAgcHJvYXJnbmFtZXMgPT4gJ3tzbG90X25hbWUscGx1Z2luLHNsb3RfdHlwZSxkYXRv aWQsdGVtcG9yYXJ5LGFjdGl2ZSxhY3RpdmVfcGlkLHhtaW4sY2F0YWxvZ194bWluLHJlc3Rh cnRfbHNuLGNvbmZpcm1lZF9mbHVzaF9sc24sd2FsX3N0YXR1cyxzYWZlX3dhbF9zaXplLHR3 b19waGFzZSxjb25mbGljdGluZ30nLAogICBwcm9zcmMgPT4gJ3BnX2dldF9yZXBsaWNhdGlv bl9zbG90cycgfSwKIHsgb2lkID0+ICczNzg2JywgZGVzY3IgPT4gJ3NldCB1cCBhIGxvZ2lj YWwgcmVwbGljYXRpb24gc2xvdCcsCiAgIHByb25hbWUgPT4gJ3BnX2NyZWF0ZV9sb2dpY2Fs X3JlcGxpY2F0aW9uX3Nsb3QnLCBwcm92b2xhdGlsZSA9PiAndicsCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9wZ3N0YXQuaCBiL3NyYy9pbmNsdWRlL3Bnc3RhdC5oCmluZGV4IDVlMzMy NmEzYjkuLjg3MmViMzU3NTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Bnc3RhdC5oCisr KyBiL3NyYy9pbmNsdWRlL3Bnc3RhdC5oCkBAIC0yOTEsNiArMjkxLDcgQEAgdHlwZWRlZiBz dHJ1Y3QgUGdTdGF0X1N0YXREQkVudHJ5CiAJUGdTdGF0X0NvdW50ZXIgY29uZmxpY3RfdGFi bGVzcGFjZTsKIAlQZ1N0YXRfQ291bnRlciBjb25mbGljdF9sb2NrOwogCVBnU3RhdF9Db3Vu dGVyIGNvbmZsaWN0X3NuYXBzaG90OworCVBnU3RhdF9Db3VudGVyIGNvbmZsaWN0X2xvZ2lj YWxzbG90OwogCVBnU3RhdF9Db3VudGVyIGNvbmZsaWN0X2J1ZmZlcnBpbjsKIAlQZ1N0YXRf Q291bnRlciBjb25mbGljdF9zdGFydHVwX2RlYWRsb2NrOwogCVBnU3RhdF9Db3VudGVyIHRl bXBfZmlsZXM7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90Lmgg Yi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmgKaW5kZXggODg3MmM4MGNkZi4uMjM2 ZWJjZGJkYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCisr KyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaApAQCAtMTcsNiArMTcsOCBAQAog I2luY2x1ZGUgInN0b3JhZ2Uvc3Bpbi5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHJl Y2VpdmVyLmgiCiAKKyNkZWZpbmUgTG9naWNhbFJlcGxpY2F0aW9uU2xvdElzSW52YWxpZChz KSAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHMtPmRhdGEueG1pbikgJiYgXAorCQkJCQkJCQkJ CQkgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHMtPmRhdGEuY2F0YWxvZ194bWluKSkKIC8qCiAg KiBCZWhhdmlvdXIgb2YgcmVwbGljYXRpb24gc2xvdHMsIHVwb24gcmVsZWFzZSBvciBjcmFz aC4KICAqCkBAIC0yMTUsNyArMjE3LDcgQEAgZXh0ZXJuIHZvaWQgUmVwbGljYXRpb25TbG90 c0NvbXB1dGVSZXF1aXJlZExTTih2b2lkKTsKIGV4dGVybiBYTG9nUmVjUHRyIFJlcGxpY2F0 aW9uU2xvdHNDb21wdXRlTG9naWNhbFJlc3RhcnRMU04odm9pZCk7CiBleHRlcm4gYm9vbCBS ZXBsaWNhdGlvblNsb3RzQ291bnREQlNsb3RzKE9pZCBkYm9pZCwgaW50ICpuc2xvdHMsIGlu dCAqbmFjdGl2ZSk7CiBleHRlcm4gdm9pZCBSZXBsaWNhdGlvblNsb3RzRHJvcERCU2xvdHMo T2lkIGRib2lkKTsKLWV4dGVybiBib29sIEludmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0aW9u U2xvdHMoWExvZ1NlZ05vIG9sZGVzdFNlZ25vKTsKK2V4dGVybiB2b2lkIEludmFsaWRhdGVP YnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMoWExvZ1NlZ05vIG9sZGVzdFNlZ25vLCBib29sICpp bnZhbGlkYXRlZCwgT2lkIGRib2lkLCBUcmFuc2FjdGlvbklkICp4aWQpOwogZXh0ZXJuIFJl cGxpY2F0aW9uU2xvdCAqU2VhcmNoTmFtZWRSZXBsaWNhdGlvblNsb3QoY29uc3QgY2hhciAq bmFtZSwgYm9vbCBuZWVkX2xvY2spOwogZXh0ZXJuIGludAlSZXBsaWNhdGlvblNsb3RJbmRl eChSZXBsaWNhdGlvblNsb3QgKnNsb3QpOwogZXh0ZXJuIGJvb2wgUmVwbGljYXRpb25TbG90 TmFtZShpbnQgaW5kZXgsIE5hbWUgbmFtZSk7CkBAIC0yMjcsNSArMjI5LDYgQEAgZXh0ZXJu IHZvaWQgQ2hlY2tQb2ludFJlcGxpY2F0aW9uU2xvdHModm9pZCk7CiAKIGV4dGVybiB2b2lk IENoZWNrU2xvdFJlcXVpcmVtZW50cyh2b2lkKTsKIGV4dGVybiB2b2lkIENoZWNrU2xvdFBl cm1pc3Npb25zKHZvaWQpOworZXh0ZXJuIHZvaWQgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RX aXRoTG9naWNhbFNsb3RzKE9pZCBkYm9pZCwgVHJhbnNhY3Rpb25JZCB4aWQsIGNoYXIgKnJl YXNvbik7CiAKICNlbmRpZgkJCQkJCQkvKiBTTE9UX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9j c2lnbmFsLmgKaW5kZXggOTA1YWYyMjMxYi4uMmY1MjEwMGIwMCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFn ZS9wcm9jc2lnbmFsLmgKQEAgLTQyLDYgKzQyLDcgQEAgdHlwZWRlZiBlbnVtCiAJUFJPQ1NJ R19SRUNPVkVSWV9DT05GTElDVF9UQUJMRVNQQUNFLAogCVBST0NTSUdfUkVDT1ZFUllfQ09O RkxJQ1RfTE9DSywKIAlQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9ULAorCVBS T0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1QsCiAJUFJPQ1NJR19SRUNPVkVS WV9DT05GTElDVF9CVUZGRVJQSU4sCiAJUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TVEFS VFVQX0RFQURMT0NLLAogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3N0YW5k YnkuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5oCmluZGV4IDJlZmZkZWExMjYu LjQxZjRkYzM3MmUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5o CisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5oCkBAIC0zMCw4ICszMCwxMCBA QCBleHRlcm4gdm9pZCBJbml0UmVjb3ZlcnlUcmFuc2FjdGlvbkVudmlyb25tZW50KHZvaWQp OwogZXh0ZXJuIHZvaWQgU2h1dGRvd25SZWNvdmVyeVRyYW5zYWN0aW9uRW52aXJvbm1lbnQo dm9pZCk7CiAKIGV4dGVybiB2b2lkIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBz aG90KFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJ CQlib29sIGlzQ2F0YWxvZ1JlbCwKIAkJCQkJCQkJCQkJCVJlbEZpbGVMb2NhdG9yIGxvY2F0 b3IpOwogZXh0ZXJuIHZvaWQgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3RG dWxsWGlkKEZ1bGxUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJ CQkJCQkJCQkJCSAgIGJvb2wgaXNDYXRhbG9nUmVsLAogCQkJCQkJCQkJCQkJCSAgIFJlbEZp bGVMb2NhdG9yIGxvY2F0b3IpOwogZXh0ZXJuIHZvaWQgUmVzb2x2ZVJlY292ZXJ5Q29uZmxp Y3RXaXRoVGFibGVzcGFjZShPaWQgdHNpZCk7CiBleHRlcm4gdm9pZCBSZXNvbHZlUmVjb3Zl cnlDb25mbGljdFdpdGhEYXRhYmFzZShPaWQgZGJpZCk7CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcnVsZXMub3V0CmluZGV4IGU3YTJmNTg1NmEuLjExZWEyMDYzMzcgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CkBAIC0xNDcyLDggKzE0NzIsOSBAQCBwZ19yZXBs aWNhdGlvbl9zbG90c3wgU0VMRUNUIGwuc2xvdF9uYW1lLAogICAgIGwuY29uZmlybWVkX2Zs dXNoX2xzbiwKICAgICBsLndhbF9zdGF0dXMsCiAgICAgbC5zYWZlX3dhbF9zaXplLAotICAg IGwudHdvX3BoYXNlCi0gICBGUk9NIChwZ19nZXRfcmVwbGljYXRpb25fc2xvdHMoKSBsKHNs b3RfbmFtZSwgcGx1Z2luLCBzbG90X3R5cGUsIGRhdG9pZCwgdGVtcG9yYXJ5LCBhY3RpdmUs IGFjdGl2ZV9waWQsIHhtaW4sIGNhdGFsb2dfeG1pbiwgcmVzdGFydF9sc24sIGNvbmZpcm1l ZF9mbHVzaF9sc24sIHdhbF9zdGF0dXMsIHNhZmVfd2FsX3NpemUsIHR3b19waGFzZSkKKyAg ICBsLnR3b19waGFzZSwKKyAgICBsLmNvbmZsaWN0aW5nCisgICBGUk9NIChwZ19nZXRfcmVw bGljYXRpb25fc2xvdHMoKSBsKHNsb3RfbmFtZSwgcGx1Z2luLCBzbG90X3R5cGUsIGRhdG9p ZCwgdGVtcG9yYXJ5LCBhY3RpdmUsIGFjdGl2ZV9waWQsIHhtaW4sIGNhdGFsb2dfeG1pbiwg cmVzdGFydF9sc24sIGNvbmZpcm1lZF9mbHVzaF9sc24sIHdhbF9zdGF0dXMsIHNhZmVfd2Fs X3NpemUsIHR3b19waGFzZSwgY29uZmxpY3RpbmcpCiAgICAgIExFRlQgSk9JTiBwZ19kYXRh YmFzZSBkIE9OICgobC5kYXRvaWQgPSBkLm9pZCkpKTsKIHBnX3JvbGVzfCBTRUxFQ1QgcGdf YXV0aGlkLnJvbG5hbWUsCiAgICAgcGdfYXV0aGlkLnJvbHN1cGVyLApAQCAtMTg2OCw3ICsx ODY5LDggQEAgcGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHN8IFNFTEVDVCBvaWQgQVMgZGF0 aWQsCiAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfbG9jayhvaWQpIEFTIGNvbmZsX2xv Y2ssCiAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc25hcHNob3Qob2lkKSBBUyBjb25m bF9zbmFwc2hvdCwKICAgICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9idWZmZXJwaW4ob2lk KSBBUyBjb25mbF9idWZmZXJwaW4sCi0gICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc3Rh cnR1cF9kZWFkbG9jayhvaWQpIEFTIGNvbmZsX2RlYWRsb2NrCisgICAgcGdfc3RhdF9nZXRf ZGJfY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayhvaWQpIEFTIGNvbmZsX2RlYWRsb2NrLAor ICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xvZ2ljYWxzbG90KG9pZCkgQVMgY29uZmxf YWN0aXZlX2xvZ2ljYWxzbG90CiAgICBGUk9NIHBnX2RhdGFiYXNlIGQ7CiBwZ19zdGF0X2dz c2FwaXwgU0VMRUNUIHBpZCwKICAgICBnc3NfYXV0aCBBUyBnc3NfYXV0aGVudGljYXRlZCwK LS0gCjIuMzQuMQoK --------------G03lDHzolqD0Rr04i1MibgcG Content-Type: text/plain; charset=UTF-8; name="v44-0001-Add-info-in-WAL-records-in-preparation-for-logic.patch" Content-Disposition: attachment; filename*0="v44-0001-Add-info-in-WAL-records-in-preparation-for-logic.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAwODNhYjQ0OGU2OTQwZDVmNTNjMzAzOTU4YTRmODQzNDI4MWZkMmE5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogRnJpLCAyNyBKYW4gMjAyMyAwOTo0ODowNyArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjQ0IDEvNl0gQWRkIGluZm8gaW4gV0FMIHJlY29yZHMgaW4gcHJlcGFyYXRpb24gZm9y IGxvZ2ljYWwKIHNsb3QgY29uZmxpY3QgaGFuZGxpbmcuCk1JTUUtVmVyc2lvbjogMS4wCkNv bnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVy LUVuY29kaW5nOiA4Yml0CgpPdmVyYWxsIGRlc2lnbjoKCjEuIFdlIHdhbnQgdG8gZW5hYmxl IGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieXMsIGJ1dCByZXBsYXkgb2YgV0FMCmZyb20g dGhlIHByaW1hcnkgbWlnaHQgcmVtb3ZlIGRhdGEgdGhhdCBpcyBuZWVkZWQgYnkgbG9naWNh bCBkZWNvZGluZywKY2F1c2luZyByZXBsaWNhdGlvbiBjb25mbGljdHMgbXVjaCBhcyBob3Qg c3RhbmRieSBkb2VzLgoKMi4gT3VyIGNob3NlbiBzdHJhdGVneSBmb3IgZGVhbGluZyB3aXRo IHRoaXMgdHlwZSBvZiByZXBsaWNhdGlvbiBzbG90CmlzIHRvIGludmFsaWRhdGUgbG9naWNh bCBzbG90cyBmb3Igd2hpY2ggbmVlZGVkIGRhdGEgaGFzIGJlZW4gcmVtb3ZlZC4KCjMuIFRv IGRvIHRoaXMgd2UgbmVlZCB0aGUgbGF0ZXN0UmVtb3ZlZFhpZCBmb3IgZWFjaCBjaGFuZ2Us IGp1c3QgYXMgd2UKZG8gZm9yIHBoeXNpY2FsIHJlcGxpY2F0aW9uIGNvbmZsaWN0cywgYnV0 IHdlIGFsc28gbmVlZCB0byBrbm93CndoZXRoZXIgYW55IHBhcnRpY3VsYXIgY2hhbmdlIHdh cyB0byBkYXRhIHRoYXQgbG9naWNhbCByZXBsaWNhdGlvbgptaWdodCBhY2Nlc3MuCgo0LiBX ZSBjYW4ndCByZWx5IG9uIHRoZSBzdGFuZGJ5J3MgcmVsY2FjaGUgZW50cmllcyBmb3IgdGhp cyBwdXJwb3NlIGluCmFueSB3YXksIGJlY2F1c2UgdGhlIHN0YXJ0dXAgcHJvY2VzcyBjYW4n dCBhY2Nlc3MgY2F0YWxvZyBjb250ZW50cy4KCjUuIFRoZXJlZm9yZSBldmVyeSBXQUwgcmVj b3JkIHRoYXQgcG90ZW50aWFsbHkgcmVtb3ZlcyBkYXRhIGZyb20gdGhlCmluZGV4IG9yIGhl YXAgbXVzdCBjYXJyeSBhIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdCBpdCBpcyBv bmUKdGhhdCBtaWdodCBiZSBhY2Nlc3NlZCBkdXJpbmcgbG9naWNhbCBkZWNvZGluZy4KCldo eSBkbyB3ZSBuZWVkIHRoaXMgZm9yIGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieT8KCkZp cnN0LCBsZXQncyBmb3JnZXQgYWJvdXQgbG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5IGFu ZCByZWNhbGwgdGhhdApvbiBhIHByaW1hcnkgZGF0YWJhc2UsIGFueSBjYXRhbG9nIHJvd3Mg dGhhdCBtYXkgYmUgbmVlZGVkIGJ5IGEgbG9naWNhbApkZWNvZGluZyByZXBsaWNhdGlvbiBz bG90IGFyZSBub3QgcmVtb3ZlZC4KClRoaXMgaXMgZG9uZSB0aGFua3MgdG8gdGhlIGNhdGFs b2dfeG1pbiBhc3NvY2lhdGVkIHdpdGggdGhlIGxvZ2ljYWwKcmVwbGljYXRpb24gc2xvdC4K CkJ1dCwgd2l0aCBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnksIGluIHRoZSBmb2xsb3dp bmcgY2FzZXM6CgotIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIGlzIG9mZgotIGhvdF9zdGFuZGJ5 X2ZlZWRiYWNrIGlzIG9uIGJ1dCB0aGVyZSBpcyBubyBhIHBoeXNpY2FsIHNsb3QgYmV0d2Vl bgogIHRoZSBwcmltYXJ5IGFuZCB0aGUgc3RhbmRieS4gVGhlbiwgaG90X3N0YW5kYnlfZmVl ZGJhY2sgd2lsbCB3b3JrLAogIGJ1dCBvbmx5IHdoaWxlIHRoZSBjb25uZWN0aW9uIGlzIGFs aXZlIChmb3IgZXhhbXBsZSBhIG5vZGUgcmVzdGFydAogIHdvdWxkIGJyZWFrIGl0KQoKVGhl biwgdGhlIHByaW1hcnkgbWF5IGRlbGV0ZSBzeXN0ZW0gY2F0YWxvZyByb3dzIHRoYXQgY291 bGQgYmUgbmVlZGVkCmJ5IHRoZSBsb2dpY2FsIGRlY29kaW5nIG9uIHRoZSBzdGFuZGJ5IChh cyBpdCBkb2VzIG5vdCBrbm93IGFib3V0IHRoZQpjYXRhbG9nX3htaW4gb24gdGhlIHN0YW5k YnkpLgoKU28sIGl04oCZcyBtYW5kYXRvcnkgdG8gaWRlbnRpZnkgdGhvc2Ugcm93cyBhbmQg aW52YWxpZGF0ZSB0aGUgc2xvdHMKdGhhdCBtYXkgbmVlZCB0aGVtIGlmIGFueS4gSWRlbnRp ZnlpbmcgdGhvc2Ugcm93cyBpcyB0aGUgcHVycG9zZSBvZgp0aGlzIGNvbW1pdC4KCkltcGxl bWVudGF0aW9uOgoKV2hlbiBhIFdBTCByZXBsYXkgb24gc3RhbmRieSBpbmRpY2F0ZXMgdGhh dCBhIGNhdGFsb2cgdGFibGUgdHVwbGUgaXMKdG8gYmUgZGVsZXRlZCBieSBhbiB4aWQgdGhh dCBpcyBncmVhdGVyIHRoYW4gYSBsb2dpY2FsIHNsb3QncwpjYXRhbG9nX3htaW4sIHRoZW4g dGhhdCBtZWFucyB0aGUgc2xvdCdzIGNhdGFsb2dfeG1pbiBjb25mbGljdHMgd2l0aAp0aGUg eGlkLCBhbmQgd2UgbmVlZCB0byBoYW5kbGUgdGhlIGNvbmZsaWN0LiBXaGlsZSBzdWJzZXF1 ZW50IGNvbW1pdHMKd2lsbCBkbyB0aGUgYWN0dWFsIGNvbmZsaWN0IGhhbmRsaW5nLCB0aGlz IGNvbW1pdCBhZGRzIGEgbmV3IGZpZWxkCmlzQ2F0YWxvZ1JlbCBpbiBzdWNoIFdBTCByZWNv cmRzIChhbmQgYSBuZXcgYml0IHNldCBpbiB0aGUKeGxfaGVhcF92aXNpYmxlIGZsYWdzIGZp ZWxkKSwgdGhhdCBpcyB0cnVlIGZvciBjYXRhbG9nIHRhYmxlcywgc28gYXMgdG8KYXJyYW5n ZSBmb3IgY29uZmxpY3QgaGFuZGxpbmcuCgpEdWUgdG8gdGhpcyBuZXcgZmllbGQgYmVpbmcg YWRkZWQsIHhsX2hhc2hfdmFjdXVtX29uZV9wYWdlIGFuZApnaXN0eGxvZ0RlbGV0ZSBkbyBu b3cgY29udGFpbiB0aGUgb2Zmc2V0cyB0byBiZSBkZWxldGVkIGFzIGEKRkxFWElCTEVfQVJS QVlfTUVNQkVSLiBUaGlzIGlzIG5lZWRlZCB0byBlbnN1cmUgY29ycmVjdCBhbGlnbmVtZW50 LgpJdCdzIG5vdCBuZWVkZWQgb24gdGhlIG90aGVycyBzdHJ1Y3Qgd2hlcmUgaXNDYXRhbG9n UmVsIGhhcwpiZWVuIGFkZGVkLgoKQXV0aG9yOiBBbmRyZXMgRnJldW5kIChpbiBhbiBvbGRl ciB2ZXJzaW9uKSwgQW1pdCBLaGFuZGVrYXIsIEJlcnRyYW5kCkRyb3V2b3QKUmV2aWV3ZWQt Qnk6IEJlcnRyYW5kIERyb3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVydCBIYWFzLCBGYWJy aXppbyBkZQpSb3llcyBNZWxsbwotLS0KIGNvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVl LmMgICAgICAgICAgICB8IDE3ICsrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3Qu YyAgICAgICAgICAgICB8ICA1ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVp bGQuYyAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwu YyAgICAgICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMg ICAgICAgICB8IDE3ICsrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxvZy5j ICAgICAgICB8IDEyICstLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGluc2VydC5j ICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAg ICAgIHwgIDUgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMg ICB8ICA5ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyAgICAgICAg fCAgMSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgICAgICAgfCAg MiArCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgICAgfCAgMyAr LQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRpbnNlcnQuYyAgICAgIHwgODIgKysr KysrKysrLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHBhZ2UuYyAg ICAgICAgfCA5OSArKysrKysrKysrKystLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mv bmJ0cmVlL25idHJlZS5jICAgICAgICAgfCAgNCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25i dHJlZS9uYnRzZWFyY2guYyAgICAgIHwgNDUgKysrKystLS0tLQogc3JjL2JhY2tlbmQvYWNj ZXNzL25idHJlZS9uYnRzb3J0LmMgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vz cy9uYnRyZWUvbmJ0dXRpbHMuYyAgICAgICB8ICA3ICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mv c3BnaXN0L3NwZ3ZhY3V1bS5jICAgICAgfCAgOSArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9p bmRleC5jICAgICAgICAgICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5h bHl6ZS5jICAgICAgICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVt cGFyYWxsZWwuYyAgICAgIHwgIDYgKysKIHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3Bs YW5jYXQuYyAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29y dHZhcmlhbnRzLmMgfCAgNyArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmggICAgICAg ICAgICAgICAgIHwgIDEgKwogc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3RfcHJpdmF0ZS5oICAg ICAgICAgIHwgIDcgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9naXN0eGxvZy5oICAgICAgICAg ICAgICB8IDExICstLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hhc2hfeGxvZy5oICAgICAgICAg ICAgIHwgIDggKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oICAgICAgICAg ICB8ICA4ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmggICAgICAgICAgICAgICAg fCAzMSArKysrLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0eGxvZy5oICAgICAgICAgICAg ICAgfCAgNiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL3NwZ3hsb2cuaCAgICAgICAgICAgICAg IHwgIDEgKwogc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmggICAgIHwg IDkgKy0KIHNyYy9pbmNsdWRlL3V0aWxzL3JlbC5oICAgICAgICAgICAgICAgICAgICB8ICAx ICsKIHNyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc29ydC5oICAgICAgICAgICAgICB8ICAzICst CiAzNSBmaWxlcyBjaGFuZ2VkLCAyNDAgaW5zZXJ0aW9ucygrKSwgMTg5IGRlbGV0aW9ucygt KQogICA0LjclIGNvbnRyaWIvYW1jaGVjay8KICAgNi4zJSBzcmMvYmFja2VuZC9hY2Nlc3Mv Z2lzdC8KICAgNS4yJSBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC8KICA1NC42JSBzcmMvYmFj a2VuZC9hY2Nlc3MvbmJ0cmVlLwogICA0LjklIHNyYy9iYWNrZW5kL2FjY2Vzcy8KICAgMy4y JSBzcmMvYmFja2VuZC8KICAyMC4xJSBzcmMvaW5jbHVkZS9hY2Nlc3MvCgpkaWZmIC0tZ2l0 IGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYyBiL2NvbnRyaWIvYW1jaGVjay92 ZXJpZnlfbmJ0cmVlLmMKaW5kZXggMjU3Y2ZmNjcxYi4uOGQzYWJiZGNlYiAxMDA2NDQKLS0t IGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYworKysgYi9jb250cmliL2FtY2hl Y2svdmVyaWZ5X25idHJlZS5jCkBAIC0xODMsNyArMTgzLDggQEAgc3RhdGljIGlubGluZSBi b29sIGludmFyaWFudF9sX25vbnRhcmdldF9vZmZzZXQoQnRyZWVDaGVja1N0YXRlICpzdGF0 ZSwKIAkJCQkJCQkJCQkJCU9mZnNldE51bWJlciB1cHBlcmJvdW5kKTsKIHN0YXRpYyBQYWdl IHBhbGxvY19idHJlZV9wYWdlKEJ0cmVlQ2hlY2tTdGF0ZSAqc3RhdGUsIEJsb2NrTnVtYmVy IGJsb2NrbnVtKTsKIHN0YXRpYyBpbmxpbmUgQlRTY2FuSW5zZXJ0IGJ0X21rc2NhbmtleV9w aXZvdHNlYXJjaChSZWxhdGlvbiByZWwsCi0JCQkJCQkJCQkJCQkJSW5kZXhUdXBsZSBpdHVw KTsKKwkJCQkJCQkJCQkJCQlJbmRleFR1cGxlIGl0dXAsCisJCQkJCQkJCQkJCQkJUmVsYXRp b24gaGVhcHJlbCk7CiBzdGF0aWMgSXRlbUlkIFBhZ2VHZXRJdGVtSWRDYXJlZnVsKEJ0cmVl Q2hlY2tTdGF0ZSAqc3RhdGUsIEJsb2NrTnVtYmVyIGJsb2NrLAogCQkJCQkJCQkgICBQYWdl IHBhZ2UsIE9mZnNldE51bWJlciBvZmZzZXQpOwogc3RhdGljIGlubGluZSBJdGVtUG9pbnRl ciBCVHJlZVR1cGxlR2V0SGVhcFRJRENhcmVmdWwoQnRyZWVDaGVja1N0YXRlICpzdGF0ZSwK QEAgLTMzMSw3ICszMzIsNyBAQCBidF9pbmRleF9jaGVja19pbnRlcm5hbChPaWQgaW5kcmVs aWQsIGJvb2wgcGFyZW50Y2hlY2ssIGJvb2wgaGVhcGFsbGluZGV4ZWQsCiAJCQkJCQkJUmVs YXRpb25HZXRSZWxhdGlvbk5hbWUoaW5kcmVsKSkpKTsKIAogCQkvKiBFeHRyYWN0IG1ldGFk YXRhIGZyb20gbWV0YXBhZ2UsIGFuZCBzYW5pdGl6ZSBpdCBpbiBwYXNzaW5nICovCi0JCV9i dF9tZXRhdmVyc2lvbihpbmRyZWwsICZoZWFwa2V5c3BhY2UsICZhbGxlcXVhbGltYWdlKTsK KwkJX2J0X21ldGF2ZXJzaW9uKGluZHJlbCwgJmhlYXBrZXlzcGFjZSwgJmFsbGVxdWFsaW1h Z2UsIGhlYXByZWwpOwogCQlpZiAoYWxsZXF1YWxpbWFnZSAmJiAhaGVhcGtleXNwYWNlKQog CQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTkRFWF9DT1JSVVBU RUQpLApAQCAtMTI1OCw3ICsxMjU5LDcgQEAgYnRfdGFyZ2V0X3BhZ2VfY2hlY2soQnRyZWVD aGVja1N0YXRlICpzdGF0ZSkKIAkJfQogCiAJCS8qIEJ1aWxkIGluc2VydGlvbiBzY2Fua2V5 IGZvciBjdXJyZW50IHBhZ2Ugb2Zmc2V0ICovCi0JCXNrZXkgPSBidF9ta3NjYW5rZXlfcGl2 b3RzZWFyY2goc3RhdGUtPnJlbCwgaXR1cCk7CisJCXNrZXkgPSBidF9ta3NjYW5rZXlfcGl2 b3RzZWFyY2goc3RhdGUtPnJlbCwgaXR1cCwgc3RhdGUtPmhlYXByZWwpOwogCiAJCS8qCiAJ CSAqIE1ha2Ugc3VyZSB0dXBsZSBzaXplIGRvZXMgbm90IGV4Y2VlZCB0aGUgcmVsZXZhbnQg QlRSRUVfVkVSU0lPTgpAQCAtMTc2OCw3ICsxNzY5LDcgQEAgYnRfcmlnaHRfcGFnZV9jaGVj a19zY2Fua2V5KEJ0cmVlQ2hlY2tTdGF0ZSAqc3RhdGUpCiAJICogbWVtb3J5IHJlbWFpbmlu ZyBhbGxvY2F0ZWQuCiAJICovCiAJZmlyc3RpdHVwID0gKEluZGV4VHVwbGUpIFBhZ2VHZXRJ dGVtKHJpZ2h0cGFnZSwgcmlnaHRpdGVtKTsKLQlyZXR1cm4gYnRfbWtzY2Fua2V5X3Bpdm90 c2VhcmNoKHN0YXRlLT5yZWwsIGZpcnN0aXR1cCk7CisJcmV0dXJuIGJ0X21rc2NhbmtleV9w aXZvdHNlYXJjaChzdGF0ZS0+cmVsLCBmaXJzdGl0dXAsIHN0YXRlLT5oZWFwcmVsKTsKIH0K IAogLyoKQEAgLTI2ODEsNyArMjY4Miw3IEBAIGJ0X3Jvb3RkZXNjZW5kKEJ0cmVlQ2hlY2tT dGF0ZSAqc3RhdGUsIEluZGV4VHVwbGUgaXR1cCkKIAlCdWZmZXIJCWxidWY7CiAJYm9vbAkJ ZXhpc3RzOwogCi0Ja2V5ID0gX2J0X21rc2NhbmtleShzdGF0ZS0+cmVsLCBpdHVwKTsKKwlr ZXkgPSBfYnRfbWtzY2Fua2V5KHN0YXRlLT5yZWwsIGl0dXAsIHN0YXRlLT5oZWFwcmVsKTsK IAlBc3NlcnQoa2V5LT5oZWFwa2V5c3BhY2UgJiYga2V5LT5zY2FudGlkICE9IE5VTEwpOwog CiAJLyoKQEAgLTI2OTQsNyArMjY5NSw3IEBAIGJ0X3Jvb3RkZXNjZW5kKEJ0cmVlQ2hlY2tT dGF0ZSAqc3RhdGUsIEluZGV4VHVwbGUgaXR1cCkKIAkgKi8KIAlBc3NlcnQoc3RhdGUtPnJl YWRvbmx5ICYmIHN0YXRlLT5yb290ZGVzY2VuZCk7CiAJZXhpc3RzID0gZmFsc2U7Ci0Jc3Rh Y2sgPSBfYnRfc2VhcmNoKHN0YXRlLT5yZWwsIGtleSwgJmxidWYsIEJUX1JFQUQsIE5VTEwp OworCXN0YWNrID0gX2J0X3NlYXJjaChzdGF0ZS0+cmVsLCBrZXksICZsYnVmLCBCVF9SRUFE LCBOVUxMLCBzdGF0ZS0+aGVhcHJlbCk7CiAKIAlpZiAoQnVmZmVySXNWYWxpZChsYnVmKSkK IAl7CkBAIC0zMTMzLDExICszMTM0LDExIEBAIHBhbGxvY19idHJlZV9wYWdlKEJ0cmVlQ2hl Y2tTdGF0ZSAqc3RhdGUsIEJsb2NrTnVtYmVyIGJsb2NrbnVtKQogICogdGhlIHNjYW5rZXkg aXMgZ3JlYXRlci4KICAqLwogc3RhdGljIGlubGluZSBCVFNjYW5JbnNlcnQKLWJ0X21rc2Nh bmtleV9waXZvdHNlYXJjaChSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgaXR1cCkKK2J0X21r c2NhbmtleV9waXZvdHNlYXJjaChSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgaXR1cCwgUmVs YXRpb24gaGVhcHJlbCkKIHsKIAlCVFNjYW5JbnNlcnQgc2tleTsKIAotCXNrZXkgPSBfYnRf bWtzY2Fua2V5KHJlbCwgaXR1cCk7CisJc2tleSA9IF9idF9ta3NjYW5rZXkocmVsLCBpdHVw LCBoZWFwcmVsKTsKIAlza2V5LT5waXZvdHNlYXJjaCA9IHRydWU7CiAKIAlyZXR1cm4gc2tl eTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3QuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9naXN0L2dpc3QuYwppbmRleCBiYTM5NGYwOGY2Li5mOGJjNDg4ZDRm IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0LmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdC5jCkBAIC0zNDgsNyArMzQ4LDcgQEAgZ2lzdHBs YWNldG9wYWdlKFJlbGF0aW9uIHJlbCwgU2l6ZSBmcmVlc3BhY2UsIEdJU1RTVEFURSAqZ2lz dHN0YXRlLAogCQlmb3IgKDsgcHRyOyBwdHIgPSBwdHItPm5leHQpCiAJCXsKIAkJCS8qIEFs bG9jYXRlIG5ldyBwYWdlICovCi0JCQlwdHItPmJ1ZmZlciA9IGdpc3ROZXdCdWZmZXIocmVs KTsKKwkJCXB0ci0+YnVmZmVyID0gZ2lzdE5ld0J1ZmZlcihoZWFwUmVsLCByZWwpOwogCQkJ R0lTVEluaXRCdWZmZXIocHRyLT5idWZmZXIsIChpc19sZWFmKSA/IEZfTEVBRiA6IDApOwog CQkJcHRyLT5wYWdlID0gQnVmZmVyR2V0UGFnZShwdHItPmJ1ZmZlcik7CiAJCQlwdHItPmJs b2NrLmJsa25vID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIocHRyLT5idWZmZXIpOwpAQCAtMTY5 NCw3ICsxNjk0LDggQEAgZ2lzdHBydW5lcGFnZShSZWxhdGlvbiByZWwsIFBhZ2UgcGFnZSwg QnVmZmVyIGJ1ZmZlciwgUmVsYXRpb24gaGVhcFJlbCkKIAogCQkJcmVjcHRyID0gZ2lzdFhM b2dEZWxldGUoYnVmZmVyLAogCQkJCQkJCQkJZGVsZXRhYmxlLCBuZGVsZXRhYmxlLAotCQkJ CQkJCQkJc25hcHNob3RDb25mbGljdEhvcml6b24pOworCQkJCQkJCQkJc25hcHNob3RDb25m bGljdEhvcml6b24sCisJCQkJCQkJCQloZWFwUmVsKTsKIAogCQkJUGFnZVNldExTTihwYWdl LCByZWNwdHIpOwogCQl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9n aXN0YnVpbGQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jCmluZGV4 IGQyMWEzMDhkNDEuLmE4Nzg5MGI5NjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9naXN0L2dpc3RidWlsZC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3Ri dWlsZC5jCkBAIC0yOTgsNyArMjk4LDcgQEAgZ2lzdGJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJl bGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAkJUGFnZQkJcGFnZTsKIAog CQkvKiBpbml0aWFsaXplIHRoZSByb290IHBhZ2UgKi8KLQkJYnVmZmVyID0gZ2lzdE5ld0J1 ZmZlcihpbmRleCk7CisJCWJ1ZmZlciA9IGdpc3ROZXdCdWZmZXIoaGVhcCwgaW5kZXgpOwog CQlBc3NlcnQoQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKSA9PSBHSVNUX1JPT1RfQkxL Tk8pOwogCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIpOwogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0dXRpbC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2dpc3QvZ2lzdHV0aWwuYwppbmRleCA1NjQ1MWZlZGUxLi4xMTllMzRjZTBmIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0dXRpbC5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9naXN0L2dpc3R1dGlsLmMKQEAgLTgyMSw3ICs4MjEsNyBAQCBnaXN0Y2hl Y2twYWdlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZikKICAqIENhbGxlciBpcyByZXNwb25z aWJsZSBmb3IgaW5pdGlhbGl6aW5nIHRoZSBwYWdlIGJ5IGNhbGxpbmcgR0lTVEluaXRCdWZm ZXIKICAqLwogQnVmZmVyCi1naXN0TmV3QnVmZmVyKFJlbGF0aW9uIHIpCitnaXN0TmV3QnVm ZmVyKFJlbGF0aW9uIGhlYXByZWwsIFJlbGF0aW9uIHIpCiB7CiAJQnVmZmVyCQlidWZmZXI7 CiAJYm9vbAkJbmVlZExvY2s7CkBAIC04NjUsNyArODY1LDcgQEAgZ2lzdE5ld0J1ZmZlcihS ZWxhdGlvbiByKQogCQkJCSAqIHBhZ2UncyBkZWxldGVYaWQuCiAJCQkJICovCiAJCQkJaWYg KFhMb2dTdGFuZGJ5SW5mb0FjdGl2ZSgpICYmIFJlbGF0aW9uTmVlZHNXQUwocikpCi0JCQkJ CWdpc3RYTG9nUGFnZVJldXNlKHIsIGJsa25vLCBHaXN0UGFnZUdldERlbGV0ZVhpZChwYWdl KSk7CisJCQkJCWdpc3RYTG9nUGFnZVJldXNlKGhlYXByZWwsIHIsIGJsa25vLCBHaXN0UGFn ZUdldERlbGV0ZVhpZChwYWdlKSk7CiAKIAkJCQlyZXR1cm4gYnVmZmVyOwogCQkJfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMKaW5kZXggZjY1ODY0MjU0YS4uNzQzZWUzNjNj NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jCkBAIC0xNzcsNiArMTc3LDcg QEAgZ2lzdFJlZG9EZWxldGVSZWNvcmQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJZ2lz dHhsb2dEZWxldGUgKnhsZGF0YSA9IChnaXN0eGxvZ0RlbGV0ZSAqKSBYTG9nUmVjR2V0RGF0 YShyZWNvcmQpOwogCUJ1ZmZlcgkJYnVmZmVyOwogCVBhZ2UJCXBhZ2U7CisJT2Zmc2V0TnVt YmVyICp0b0RlbGV0ZSA9IHhsZGF0YS0+b2Zmc2V0czsKIAogCS8qCiAJICogSWYgd2UgaGF2 ZSBhbnkgY29uZmxpY3QgcHJvY2Vzc2luZyB0byBkbywgaXQgbXVzdCBoYXBwZW4gYmVmb3Jl IHdlCkBAIC0yMDMsMTQgKzIwNCw3IEBAIGdpc3RSZWRvRGVsZXRlUmVjb3JkKFhMb2dSZWFk ZXJTdGF0ZSAqcmVjb3JkKQogCXsKIAkJcGFnZSA9IChQYWdlKSBCdWZmZXJHZXRQYWdlKGJ1 ZmZlcik7CiAKLQkJaWYgKFhMb2dSZWNHZXREYXRhTGVuKHJlY29yZCkgPiBTaXplT2ZHaXN0 eGxvZ0RlbGV0ZSkKLQkJewotCQkJT2Zmc2V0TnVtYmVyICp0b2RlbGV0ZTsKLQotCQkJdG9k ZWxldGUgPSAoT2Zmc2V0TnVtYmVyICopICgoY2hhciAqKSB4bGRhdGEgKyBTaXplT2ZHaXN0 eGxvZ0RlbGV0ZSk7Ci0KLQkJCVBhZ2VJbmRleE11bHRpRGVsZXRlKHBhZ2UsIHRvZGVsZXRl LCB4bGRhdGEtPm50b2RlbGV0ZSk7Ci0JCX0KKwkJUGFnZUluZGV4TXVsdGlEZWxldGUocGFn ZSwgdG9EZWxldGUsIHhsZGF0YS0+bnRvZGVsZXRlKTsKIAogCQlHaXN0Q2xlYXJQYWdlSGFz R2FyYmFnZShwYWdlKTsKIAkJR2lzdE1hcmtUdXBsZXNEZWxldGVkKHBhZ2UpOwpAQCAtNTk3 LDcgKzU5MSw4IEBAIGdpc3RYTG9nQXNzaWduTFNOKHZvaWQpCiAgKiBXcml0ZSBYTE9HIHJl Y29yZCBhYm91dCByZXVzZSBvZiBhIGRlbGV0ZWQgcGFnZS4KICAqLwogdm9pZAotZ2lzdFhM b2dQYWdlUmV1c2UoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBibGtubywgRnVsbFRyYW5z YWN0aW9uSWQgZGVsZXRlWGlkKQorZ2lzdFhMb2dQYWdlUmV1c2UoUmVsYXRpb24gaGVhcHJl bCwgUmVsYXRpb24gcmVsLAorCQkJCSAgQmxvY2tOdW1iZXIgYmxrbm8sIEZ1bGxUcmFuc2Fj dGlvbklkIGRlbGV0ZVhpZCkKIHsKIAlnaXN0eGxvZ1BhZ2VSZXVzZSB4bHJlY19yZXVzZTsK IApAQCAtNjA4LDYgKzYwMyw3IEBAIGdpc3RYTG9nUGFnZVJldXNlKFJlbGF0aW9uIHJlbCwg QmxvY2tOdW1iZXIgYmxrbm8sIEZ1bGxUcmFuc2FjdGlvbklkIGRlbGV0ZVhpZCkKIAkgKi8K IAogCS8qIFhMT0cgc3R1ZmYgKi8KKwl4bHJlY19yZXVzZS5pc0NhdGFsb2dSZWwgPSBSZWxh dGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKGhlYXByZWwpOwogCXhscmVjX3Jl dXNlLmxvY2F0b3IgPSByZWwtPnJkX2xvY2F0b3I7CiAJeGxyZWNfcmV1c2UuYmxvY2sgPSBi bGtubzsKIAl4bHJlY19yZXVzZS5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IGRlbGV0ZVhp ZDsKQEAgLTY3MiwxMSArNjY4LDEyIEBAIGdpc3RYTG9nVXBkYXRlKEJ1ZmZlciBidWZmZXIs CiAgKi8KIFhMb2dSZWNQdHIKIGdpc3RYTG9nRGVsZXRlKEJ1ZmZlciBidWZmZXIsIE9mZnNl dE51bWJlciAqdG9kZWxldGUsIGludCBudG9kZWxldGUsCi0JCQkgICBUcmFuc2FjdGlvbklk IHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uKQorCQkJICAgVHJhbnNhY3Rpb25JZCBzbmFwc2hv dENvbmZsaWN0SG9yaXpvbiwgUmVsYXRpb24gaGVhcHJlbCkKIHsKIAlnaXN0eGxvZ0RlbGV0 ZSB4bHJlYzsKIAlYTG9nUmVjUHRyCXJlY3B0cjsKIAorCXhscmVjLmlzQ2F0YWxvZ1JlbCA9 IFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcoaGVhcHJlbCk7CiAJeGxy ZWMuc25hcHNob3RDb25mbGljdEhvcml6b24gPSBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsK IAl4bHJlYy5udG9kZWxldGUgPSBudG9kZWxldGU7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gv aGFzaF94bG9nLmMKaW5kZXggZjM4YjQyZWZiOS4uMDhjZWI5MTI4OCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKQEAgLTk4MCw4ICs5ODAsMTAgQEAgaGFzaF94bG9n X3ZhY3V1bV9vbmVfcGFnZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAlQYWdlCQlwYWdl OwogCVhMb2dSZWRvQWN0aW9uIGFjdGlvbjsKIAlIYXNoUGFnZU9wYXF1ZSBwYWdlb3BhcXVl OworCU9mZnNldE51bWJlciAqdG9EZWxldGU7CiAKIAl4bGRhdGEgPSAoeGxfaGFzaF92YWN1 dW1fb25lX3BhZ2UgKikgWExvZ1JlY0dldERhdGEocmVjb3JkKTsKKwl0b0RlbGV0ZSA9IHhs ZGF0YS0+b2Zmc2V0czsKIAogCS8qCiAJICogSWYgd2UgaGF2ZSBhbnkgY29uZmxpY3QgcHJv Y2Vzc2luZyB0byBkbywgaXQgbXVzdCBoYXBwZW4gYmVmb3JlIHdlCkBAIC0xMDEwLDE1ICsx MDEyLDcgQEAgaGFzaF94bG9nX3ZhY3V1bV9vbmVfcGFnZShYTG9nUmVhZGVyU3RhdGUgKnJl Y29yZCkKIAl7CiAJCXBhZ2UgPSAoUGFnZSkgQnVmZmVyR2V0UGFnZShidWZmZXIpOwogCi0J CWlmIChYTG9nUmVjR2V0RGF0YUxlbihyZWNvcmQpID4gU2l6ZU9mSGFzaFZhY3V1bU9uZVBh Z2UpCi0JCXsKLQkJCU9mZnNldE51bWJlciAqdW51c2VkOwotCi0JCQl1bnVzZWQgPSAoT2Zm c2V0TnVtYmVyICopICgoY2hhciAqKSB4bGRhdGEgKyBTaXplT2ZIYXNoVmFjdXVtT25lUGFn ZSk7Ci0KLQkJCVBhZ2VJbmRleE11bHRpRGVsZXRlKHBhZ2UsIHVudXNlZCwgeGxkYXRhLT5u dHVwbGVzKTsKLQkJfQotCisJCVBhZ2VJbmRleE11bHRpRGVsZXRlKHBhZ2UsIHRvRGVsZXRl LCB4bGRhdGEtPm50dXBsZXMpOwogCQkvKgogCQkgKiBNYXJrIHRoZSBwYWdlIGFzIG5vdCBj b250YWluaW5nIGFueSBMUF9ERUFEIGl0ZW1zLiBTZWUgY29tbWVudHMgaW4KIAkJICogX2hh c2hfdmFjdXVtX29uZV9wYWdlKCkgZm9yIGRldGFpbHMuCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGFzaC9oYXNoaW5zZXJ0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFz aC9oYXNoaW5zZXJ0LmMKaW5kZXggYTYwNGUzMTg5MS4uMjI2NTZiMjRlMiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGluc2VydC5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oYXNoL2hhc2hpbnNlcnQuYwpAQCAtNDMyLDYgKzQzMiw3IEBAIF9oYXNo X3ZhY3V1bV9vbmVfcGFnZShSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhyZWwsIEJ1ZmZlciBt ZXRhYnVmLCBCdWZmZXIgYnVmKQogCQkJeGxfaGFzaF92YWN1dW1fb25lX3BhZ2UgeGxyZWM7 CiAJCQlYTG9nUmVjUHRyCXJlY3B0cjsKIAorCQkJeGxyZWMuaXNDYXRhbG9nUmVsID0gUmVs YXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhocmVsKTsKIAkJCXhscmVjLnNu YXBzaG90Q29uZmxpY3RIb3Jpem9uID0gc25hcHNob3RDb25mbGljdEhvcml6b247CiAJCQl4 bHJlYy5udHVwbGVzID0gbmRlbGV0YWJsZTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0u YwppbmRleCBlNjAyNGE5ODBiLi5kNDc4NzI0YjlkIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW0uYwpAQCAtNjg3Miw2ICs2ODcyLDcgQEAgaGVhcF9mcmVlemVfZXhlY3V0ZV9wcmVw YXJlZChSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWZmZXIsCiAJCW5wbGFucyA9IGhlYXBfbG9n X2ZyZWV6ZV9wbGFuKHR1cGxlcywgbnR1cGxlcywgcGxhbnMsIG9mZnNldHMpOwogCiAJCXhs cmVjLnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uID0gc25hcHNob3RDb25mbGljdEhvcml6b247 CisJCXhscmVjLmlzQ2F0YWxvZ1JlbCA9IFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2Fs RGVjb2RpbmcocmVsKTsKIAkJeGxyZWMubnBsYW5zID0gbnBsYW5zOwogCiAJCVhMb2dCZWdp bkluc2VydCgpOwpAQCAtODQ0Miw3ICs4NDQzLDcgQEAgYm90dG9tdXBfc29ydF9hbmRfc2hy aW5rKFRNX0luZGV4RGVsZXRlT3AgKmRlbHN0YXRlKQogICogdXBkYXRlIHRoZSBoZWFwIHBh Z2UncyBMU04uCiAgKi8KIFhMb2dSZWNQdHIKLWxvZ19oZWFwX3Zpc2libGUoUmVsRmlsZUxv Y2F0b3IgcmxvY2F0b3IsIEJ1ZmZlciBoZWFwX2J1ZmZlciwgQnVmZmVyIHZtX2J1ZmZlciwK K2xvZ19oZWFwX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIsIEJ1 ZmZlciB2bV9idWZmZXIsCiAJCQkJIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhv cml6b24sIHVpbnQ4IHZtZmxhZ3MpCiB7CiAJeGxfaGVhcF92aXNpYmxlIHhscmVjOwpAQCAt ODQ1NCw2ICs4NDU1LDggQEAgbG9nX2hlYXBfdmlzaWJsZShSZWxGaWxlTG9jYXRvciBybG9j YXRvciwgQnVmZmVyIGhlYXBfYnVmZmVyLCBCdWZmZXIgdm1fYnVmZmVyLAogCiAJeGxyZWMu c25hcHNob3RDb25mbGljdEhvcml6b24gPSBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsKIAl4 bHJlYy5mbGFncyA9IHZtZmxhZ3M7CisJaWYgKFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dp Y2FsRGVjb2RpbmcocmVsKSkKKwkJeGxyZWMuZmxhZ3MgfD0gVklTSUJJTElUWU1BUF9JU19D QVRBTE9HX1JFTDsKIAlYTG9nQmVnaW5JbnNlcnQoKTsKIAlYTG9nUmVnaXN0ZXJEYXRhKChj aGFyICopICZ4bHJlYywgU2l6ZU9mSGVhcFZpc2libGUpOwogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCBjNGIxOTE2ZDM2Li4zMDczMGMyNGJm IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTcy MCwxMSArNzIwLDE2IEBAIGhlYXBhbV9yZWxhdGlvbl9jb3B5X2Zvcl9jbHVzdGVyKFJlbGF0 aW9uIE9sZEhlYXAsIFJlbGF0aW9uIE5ld0hlYXAsCiAJCQkJCQkJCSAqbXVsdGlfY3V0b2Zm KTsKIAogCi0JLyogU2V0IHVwIHNvcnRpbmcgaWYgd2FudGVkICovCisJLyoKKwkgKiBTZXQg dXAgc29ydGluZyBpZiB3YW50ZWQuIE5ld0hlYXAgaXMgYmVpbmcgcGFzc2VkIHRvCisJICog dHVwbGVzb3J0X2JlZ2luX2NsdXN0ZXIoKSwgaXQgY291bGQgaGF2ZSBiZWVuIE9sZEhlYXAg dG9vLiBJdCBkb2VzIG5vdAorCSAqIHJlYWxseSBtYXR0ZXIsIGFzIHRoZSBnb2FsIGlzIHRv IGhhdmUgYSBoZWFwIHJlbGF0aW9uIGJlaW5nIHBhc3NlZCB0bworCSAqIF9idF9sb2dfcmV1 c2VfcGFnZSgpICh3aGljaCBzaG91bGQgbm90IGJlIGNhbGxlZCBmcm9tIHRoaXMgY29kZSBw YXRoKS4KKwkgKi8KIAlpZiAodXNlX3NvcnQpCiAJCXR1cGxlc29ydCA9IHR1cGxlc29ydF9i ZWdpbl9jbHVzdGVyKG9sZFR1cERlc2MsIE9sZEluZGV4LAogCQkJCQkJCQkJCQltYWludGVu YW5jZV93b3JrX21lbSwKLQkJCQkJCQkJCQkJTlVMTCwgVFVQTEVTT1JUX05PTkUpOworCQkJ CQkJCQkJCQlOVUxMLCBUVVBMRVNPUlRfTk9ORSwgTmV3SGVhcCk7CiAJZWxzZQogCQl0dXBs ZXNvcnQgPSBOVUxMOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9w cnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4 IDRlNjVjYmNhZGYuLjNmMDM0MjM1MWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5l aGVhcC5jCkBAIC00MTgsNiArNDE4LDcgQEAgaGVhcF9wYWdlX3BydW5lKFJlbGF0aW9uIHJl bGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkJeGxfaGVhcF9wcnVuZSB4bHJlYzsKIAkJCVhM b2dSZWNQdHIJcmVjcHRyOwogCisJCQl4bHJlYy5pc0NhdGFsb2dSZWwgPSBSZWxhdGlvbklz QWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKHJlbGF0aW9uKTsKIAkJCXhscmVjLnNuYXBz aG90Q29uZmxpY3RIb3Jpem9uID0gcHJzdGF0ZS5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsK IAkJCXhscmVjLm5yZWRpcmVjdGVkID0gcHJzdGF0ZS5ucmVkaXJlY3RlZDsKIAkJCXhscmVj Lm5kZWFkID0gcHJzdGF0ZS5uZGVhZDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxh enkuYwppbmRleCA4ZjE0Y2Y4NWYzLi5hZTYyOGQ3NDdkIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0yNzEwLDYgKzI3MTAsNyBAQCBsYXp5X3ZhY3V1bV9v bmVfaW5kZXgoUmVsYXRpb24gaW5kcmVsLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKmlzdGF0 LAogCWl2aW5mby5tZXNzYWdlX2xldmVsID0gREVCVUcyOwogCWl2aW5mby5udW1faGVhcF90 dXBsZXMgPSByZWx0dXBsZXM7CiAJaXZpbmZvLnN0cmF0ZWd5ID0gdmFjcmVsLT5ic3RyYXRl Z3k7CisJaXZpbmZvLmhlYXByZWwgPSB2YWNyZWwtPnJlbDsKIAogCS8qCiAJICogVXBkYXRl IGVycm9yIHRyYWNlYmFjayBpbmZvcm1hdGlvbi4KQEAgLTI3NTksNiArMjc2MCw3IEBAIGxh enlfY2xlYW51cF9vbmVfaW5kZXgoUmVsYXRpb24gaW5kcmVsLCBJbmRleEJ1bGtEZWxldGVS ZXN1bHQgKmlzdGF0LAogCiAJaXZpbmZvLm51bV9oZWFwX3R1cGxlcyA9IHJlbHR1cGxlczsK IAlpdmluZm8uc3RyYXRlZ3kgPSB2YWNyZWwtPmJzdHJhdGVneTsKKwlpdmluZm8uaGVhcHJl bCA9IHZhY3JlbC0+cmVsOwogCiAJLyoKIAkgKiBVcGRhdGUgZXJyb3IgdHJhY2ViYWNrIGlu Zm9ybWF0aW9uLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJp bGl0eW1hcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCmlu ZGV4IDc0ZmYwMWJiMTcuLmQxYmE4NTk4NTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92aXNpYmlsaXR5bWFwLmMKQEAgLTI4OCw4ICsyODgsNyBAQCB2aXNpYmlsaXR5bWFwX3Nl dChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciBoZWFwQnVmLAog CQkJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQocmVjcHRyKSkKIAkJCXsKIAkJCQlBc3NlcnQo IUluUmVjb3ZlcnkpOwotCQkJCXJlY3B0ciA9IGxvZ19oZWFwX3Zpc2libGUocmVsLT5yZF9s b2NhdG9yLCBoZWFwQnVmLCB2bUJ1ZiwKLQkJCQkJCQkJCQkgIGN1dG9mZl94aWQsIGZsYWdz KTsKKwkJCQlyZWNwdHIgPSBsb2dfaGVhcF92aXNpYmxlKHJlbCwgaGVhcEJ1Ziwgdm1CdWYs IGN1dG9mZl94aWQsIGZsYWdzKTsKIAogCQkJCS8qCiAJCQkJICogSWYgZGF0YSBjaGVja3N1 bXMgYXJlIGVuYWJsZWQgKG9yIHdhbF9sb2dfaGludHM9b24pLCB3ZQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRpbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9uYnRyZWUvbmJ0aW5zZXJ0LmMKaW5kZXggZjRjMWE5NzRlZi4uYzQ4YjI3MjQzMSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRpbnNlcnQuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGluc2VydC5jCkBAIC0zMCw3ICszMCw4 IEBACiAjZGVmaW5lIEJUUkVFX0ZBU1RQQVRIX01JTl9MRVZFTAkyCiAKIAotc3RhdGljIEJU U3RhY2sgX2J0X3NlYXJjaF9pbnNlcnQoUmVsYXRpb24gcmVsLCBCVEluc2VydFN0YXRlIGlu c2VydHN0YXRlKTsKK3N0YXRpYyBCVFN0YWNrIF9idF9zZWFyY2hfaW5zZXJ0KFJlbGF0aW9u IHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSwKKwkJCQkJCQkJIFJlbGF0aW9uIGhl YXByZWwpOwogc3RhdGljIFRyYW5zYWN0aW9uSWQgX2J0X2NoZWNrX3VuaXF1ZShSZWxhdGlv biByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUsCiAJCQkJCQkJCQkgIFJlbGF0aW9u IGhlYXBSZWwsCiAJCQkJCQkJCQkgIEluZGV4VW5pcXVlQ2hlY2sgY2hlY2tVbmlxdWUsIGJv b2wgKmlzX3VuaXF1ZSwKQEAgLTQxLDcgKzQyLDcgQEAgc3RhdGljIE9mZnNldE51bWJlciBf YnRfZmluZGluc2VydGxvYyhSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkgIGJvb2wgaW5kZXhV bmNoYW5nZWQsCiAJCQkJCQkJCQkgIEJUU3RhY2sgc3RhY2ssCiAJCQkJCQkJCQkgIFJlbGF0 aW9uIGhlYXBSZWwpOwotc3RhdGljIHZvaWQgX2J0X3N0ZXByaWdodChSZWxhdGlvbiByZWws IEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUsIEJUU3RhY2sgc3RhY2spOworc3RhdGljIHZv aWQgX2J0X3N0ZXByaWdodChSZWxhdGlvbiByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3Rh dGUsIEJUU3RhY2sgc3RhY2ssIFJlbGF0aW9uIGhlYXByZWwpOwogc3RhdGljIHZvaWQgX2J0 X2luc2VydG9ucGcoUmVsYXRpb24gcmVsLCBCVFNjYW5JbnNlcnQgaXR1cF9rZXksCiAJCQkJ CQkgICBCdWZmZXIgYnVmLAogCQkJCQkJICAgQnVmZmVyIGNidWYsCkBAIC01MCwxNCArNTEs MTUgQEAgc3RhdGljIHZvaWQgX2J0X2luc2VydG9ucGcoUmVsYXRpb24gcmVsLCBCVFNjYW5J bnNlcnQgaXR1cF9rZXksCiAJCQkJCQkgICBTaXplIGl0ZW1zeiwKIAkJCQkJCSAgIE9mZnNl dE51bWJlciBuZXdpdGVtb2ZmLAogCQkJCQkJICAgaW50IHBvc3RpbmdvZmYsCi0JCQkJCQkg ICBib29sIHNwbGl0X29ubHlfcGFnZSk7CisJCQkJCQkgICBib29sIHNwbGl0X29ubHlfcGFn ZSwKKwkJCQkJCSAgIFJlbGF0aW9uIGhlYXByZWwpOwogc3RhdGljIEJ1ZmZlciBfYnRfc3Bs aXQoUmVsYXRpb24gcmVsLCBCVFNjYW5JbnNlcnQgaXR1cF9rZXksIEJ1ZmZlciBidWYsCiAJ CQkJCQlCdWZmZXIgY2J1ZiwgT2Zmc2V0TnVtYmVyIG5ld2l0ZW1vZmYsIFNpemUgbmV3aXRl bXN6LAogCQkJCQkJSW5kZXhUdXBsZSBuZXdpdGVtLCBJbmRleFR1cGxlIG9yaWduZXdpdGVt LAotCQkJCQkJSW5kZXhUdXBsZSBucG9zdGluZywgdWludDE2IHBvc3RpbmdvZmYpOworCQkJ CQkJSW5kZXhUdXBsZSBucG9zdGluZywgdWludDE2IHBvc3RpbmdvZmYsIFJlbGF0aW9uIGhl YXByZWwpOwogc3RhdGljIHZvaWQgX2J0X2luc2VydF9wYXJlbnQoUmVsYXRpb24gcmVsLCBC dWZmZXIgYnVmLCBCdWZmZXIgcmJ1ZiwKLQkJCQkJCQkgIEJUU3RhY2sgc3RhY2ssIGJvb2wg aXNyb290LCBib29sIGlzb25seSk7Ci1zdGF0aWMgQnVmZmVyIF9idF9uZXdyb290KFJlbGF0 aW9uIHJlbCwgQnVmZmVyIGxidWYsIEJ1ZmZlciByYnVmKTsKKwkJCQkJCQkgIEJUU3RhY2sg c3RhY2ssIGJvb2wgaXNyb290LCBib29sIGlzb25seSwgUmVsYXRpb24gaGVhcHJlbCk7Citz dGF0aWMgQnVmZmVyIF9idF9uZXdyb290KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxidWYsIEJ1 ZmZlciByYnVmLCBSZWxhdGlvbiBoZWFwcmVsKTsKIHN0YXRpYyBpbmxpbmUgYm9vbCBfYnRf cGdhZGR0dXAoUGFnZSBwYWdlLCBTaXplIGl0ZW1zaXplLCBJbmRleFR1cGxlIGl0dXAsCiAJ CQkJCQkJCU9mZnNldE51bWJlciBpdHVwX29mZiwgYm9vbCBuZXdmaXJzdGRhdGFpdGVtKTsK IHN0YXRpYyB2b2lkIF9idF9kZWxldGVfb3JfZGVkdXBfb25lX3BhZ2UoUmVsYXRpb24gcmVs LCBSZWxhdGlvbiBoZWFwUmVsLApAQCAtMTA4LDcgKzExMCw3IEBAIF9idF9kb2luc2VydChS ZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgaXR1cCwKIAlib29sCQljaGVja2luZ3VuaXF1ZSA9 IChjaGVja1VuaXF1ZSAhPSBVTklRVUVfQ0hFQ0tfTk8pOwogCiAJLyogd2UgbmVlZCBhbiBp bnNlcnRpb24gc2NhbiBrZXkgdG8gZG8gb3VyIHNlYXJjaCwgc28gYnVpbGQgb25lICovCi0J aXR1cF9rZXkgPSBfYnRfbWtzY2Fua2V5KHJlbCwgaXR1cCk7CisJaXR1cF9rZXkgPSBfYnRf bWtzY2Fua2V5KHJlbCwgaXR1cCwgaGVhcFJlbCk7CiAKIAlpZiAoY2hlY2tpbmd1bmlxdWUp CiAJewpAQCAtMTYyLDcgKzE2NCw3IEBAIHNlYXJjaDoKIAkgKiBzZWFyY2hpbmcgZnJvbSB0 aGUgcm9vdCBwYWdlLiAgaW5zZXJ0c3RhdGUuYnVmIHdpbGwgaG9sZCBhIGJ1ZmZlciB0aGF0 CiAJICogaXMgbG9ja2VkIGluIGV4Y2x1c2l2ZSBtb2RlIGFmdGVyd2FyZHMuCiAJICovCi0J c3RhY2sgPSBfYnRfc2VhcmNoX2luc2VydChyZWwsICZpbnNlcnRzdGF0ZSk7CisJc3RhY2sg PSBfYnRfc2VhcmNoX2luc2VydChyZWwsICZpbnNlcnRzdGF0ZSwgaGVhcFJlbCk7CiAKIAkv KgogCSAqIGNoZWNraW5ndW5pcXVlIGluc2VydHMgYXJlIG5vdCBhbGxvd2VkIHRvIGdvIGFo ZWFkIHdoZW4gdHdvIHR1cGxlcyB3aXRoCkBAIC0yNTcsNyArMjU5LDcgQEAgc2VhcmNoOgog CQkJCQkJCQkJICAgaW5kZXhVbmNoYW5nZWQsIHN0YWNrLCBoZWFwUmVsKTsKIAkJX2J0X2lu c2VydG9ucGcocmVsLCBpdHVwX2tleSwgaW5zZXJ0c3RhdGUuYnVmLCBJbnZhbGlkQnVmZmVy LCBzdGFjaywKIAkJCQkJICAgaXR1cCwgaW5zZXJ0c3RhdGUuaXRlbXN6LCBuZXdpdGVtb2Zm LAotCQkJCQkgICBpbnNlcnRzdGF0ZS5wb3N0aW5nb2ZmLCBmYWxzZSk7CisJCQkJCSAgIGlu c2VydHN0YXRlLnBvc3RpbmdvZmYsIGZhbHNlLCBoZWFwUmVsKTsKIAl9CiAJZWxzZQogCXsK QEAgLTMxMiw3ICszMTQsNyBAQCBzZWFyY2g6CiAgKiBzaW5jZSBlYWNoIHBlci1iYWNrZW5k IGNhY2hlIHdvbid0IHN0YXkgdmFsaWQgZm9yIGxvbmcuCiAgKi8KIHN0YXRpYyBCVFN0YWNr Ci1fYnRfc2VhcmNoX2luc2VydChSZWxhdGlvbiByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0 c3RhdGUpCitfYnRfc2VhcmNoX2luc2VydChSZWxhdGlvbiByZWwsIEJUSW5zZXJ0U3RhdGUg aW5zZXJ0c3RhdGUsIFJlbGF0aW9uIGhlYXByZWwpCiB7CiAJQXNzZXJ0KGluc2VydHN0YXRl LT5idWYgPT0gSW52YWxpZEJ1ZmZlcik7CiAJQXNzZXJ0KCFpbnNlcnRzdGF0ZS0+Ym91bmRz X3ZhbGlkKTsKQEAgLTM3Niw3ICszNzgsNyBAQCBfYnRfc2VhcmNoX2luc2VydChSZWxhdGlv biByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUpCiAKIAkvKiBDYW5ub3QgdXNlIG9w dGltaXphdGlvbiAtLSBkZXNjZW5kIHRyZWUsIHJldHVybiBwcm9wZXIgZGVzY2VudCBzdGFj ayAqLwogCXJldHVybiBfYnRfc2VhcmNoKHJlbCwgaW5zZXJ0c3RhdGUtPml0dXBfa2V5LCAm aW5zZXJ0c3RhdGUtPmJ1ZiwgQlRfV1JJVEUsCi0JCQkJCSAgTlVMTCk7CisJCQkJCSAgTlVM TCwgaGVhcHJlbCk7CiB9CiAKIC8qCkBAIC04ODUsNyArODg3LDcgQEAgX2J0X2ZpbmRpbnNl cnRsb2MoUmVsYXRpb24gcmVsLAogCQkJCQlfYnRfY29tcGFyZShyZWwsIGl0dXBfa2V5LCBw YWdlLCBQX0hJS0VZKSA8PSAwKQogCQkJCQlicmVhazsKIAotCQkJCV9idF9zdGVwcmlnaHQo cmVsLCBpbnNlcnRzdGF0ZSwgc3RhY2spOworCQkJCV9idF9zdGVwcmlnaHQocmVsLCBpbnNl cnRzdGF0ZSwgc3RhY2ssIGhlYXBSZWwpOwogCQkJCS8qIFVwZGF0ZSBsb2NhbCBzdGF0ZSBh ZnRlciBzdGVwcGluZyByaWdodCAqLwogCQkJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGluc2Vy dHN0YXRlLT5idWYpOwogCQkJCW9wYXF1ZSA9IEJUUGFnZUdldE9wYXF1ZShwYWdlKTsKQEAg LTk2OSw3ICs5NzEsNyBAQCBfYnRfZmluZGluc2VydGxvYyhSZWxhdGlvbiByZWwsCiAJCQkJ cGdfcHJuZ191aW50MzIoJnBnX2dsb2JhbF9wcm5nX3N0YXRlKSA8PSAoUEdfVUlOVDMyX01B WCAvIDEwMCkpCiAJCQkJYnJlYWs7CiAKLQkJCV9idF9zdGVwcmlnaHQocmVsLCBpbnNlcnRz dGF0ZSwgc3RhY2spOworCQkJX2J0X3N0ZXByaWdodChyZWwsIGluc2VydHN0YXRlLCBzdGFj aywgaGVhcFJlbCk7CiAJCQkvKiBVcGRhdGUgbG9jYWwgc3RhdGUgYWZ0ZXIgc3RlcHBpbmcg cmlnaHQgKi8KIAkJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGluc2VydHN0YXRlLT5idWYpOwog CQkJb3BhcXVlID0gQlRQYWdlR2V0T3BhcXVlKHBhZ2UpOwpAQCAtMTAyMiw3ICsxMDI0LDcg QEAgX2J0X2ZpbmRpbnNlcnRsb2MoUmVsYXRpb24gcmVsLAogICogaW5kZXhlcy4KICAqLwog c3RhdGljIHZvaWQKLV9idF9zdGVwcmlnaHQoUmVsYXRpb24gcmVsLCBCVEluc2VydFN0YXRl IGluc2VydHN0YXRlLCBCVFN0YWNrIHN0YWNrKQorX2J0X3N0ZXByaWdodChSZWxhdGlvbiBy ZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUsIEJUU3RhY2sgc3RhY2ssIFJlbGF0aW9u IGhlYXByZWwpCiB7CiAJUGFnZQkJcGFnZTsKIAlCVFBhZ2VPcGFxdWUgb3BhcXVlOwpAQCAt MTA0OCw3ICsxMDUwLDcgQEAgX2J0X3N0ZXByaWdodChSZWxhdGlvbiByZWwsIEJUSW5zZXJ0 U3RhdGUgaW5zZXJ0c3RhdGUsIEJUU3RhY2sgc3RhY2spCiAJCSAqLwogCQlpZiAoUF9JTkNP TVBMRVRFX1NQTElUKG9wYXF1ZSkpCiAJCXsKLQkJCV9idF9maW5pc2hfc3BsaXQocmVsLCBy YnVmLCBzdGFjayk7CisJCQlfYnRfZmluaXNoX3NwbGl0KHJlbCwgcmJ1Ziwgc3RhY2ssIGhl YXByZWwpOwogCQkJcmJ1ZiA9IEludmFsaWRCdWZmZXI7CiAJCQljb250aW51ZTsKIAkJfQpA QCAtMTEwNyw3ICsxMTA5LDggQEAgX2J0X2luc2VydG9ucGcoUmVsYXRpb24gcmVsLAogCQkJ ICAgU2l6ZSBpdGVtc3osCiAJCQkgICBPZmZzZXROdW1iZXIgbmV3aXRlbW9mZiwKIAkJCSAg IGludCBwb3N0aW5nb2ZmLAotCQkJICAgYm9vbCBzcGxpdF9vbmx5X3BhZ2UpCisJCQkgICBi b29sIHNwbGl0X29ubHlfcGFnZSwKKwkJCSAgIFJlbGF0aW9uIGhlYXByZWwpCiB7CiAJUGFn ZQkJcGFnZTsKIAlCVFBhZ2VPcGFxdWUgb3BhcXVlOwpAQCAtMTIxMCw3ICsxMjEzLDcgQEAg X2J0X2luc2VydG9ucGcoUmVsYXRpb24gcmVsLAogCiAJCS8qIHNwbGl0IHRoZSBidWZmZXIg aW50byBsZWZ0IGFuZCByaWdodCBoYWx2ZXMgKi8KIAkJcmJ1ZiA9IF9idF9zcGxpdChyZWws IGl0dXBfa2V5LCBidWYsIGNidWYsIG5ld2l0ZW1vZmYsIGl0ZW1zeiwgaXR1cCwKLQkJCQkJ CSBvcmlnaXR1cCwgbnBvc3RpbmcsIHBvc3RpbmdvZmYpOworCQkJCQkJIG9yaWdpdHVwLCBu cG9zdGluZywgcG9zdGluZ29mZiwgaGVhcHJlbCk7CiAJCVByZWRpY2F0ZUxvY2tQYWdlU3Bs aXQocmVsLAogCQkJCQkJCSAgIEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZiksCiAJCQkJCQkJ ICAgQnVmZmVyR2V0QmxvY2tOdW1iZXIocmJ1ZikpOwpAQCAtMTIzMyw3ICsxMjM2LDcgQEAg X2J0X2luc2VydG9ucGcoUmVsYXRpb24gcmVsLAogCQkgKiBwYWdlLgogCQkgKi0tLS0tLS0t LS0KIAkJICovCi0JCV9idF9pbnNlcnRfcGFyZW50KHJlbCwgYnVmLCByYnVmLCBzdGFjaywg aXNyb290LCBpc29ubHkpOworCQlfYnRfaW5zZXJ0X3BhcmVudChyZWwsIGJ1ZiwgcmJ1Ziwg c3RhY2ssIGlzcm9vdCwgaXNvbmx5LCBoZWFwcmVsKTsKIAl9CiAJZWxzZQogCXsKQEAgLTEy NTQsNyArMTI1Nyw3IEBAIF9idF9pbnNlcnRvbnBnKFJlbGF0aW9uIHJlbCwKIAkJCUFzc2Vy dCghaXNsZWFmKTsKIAkJCUFzc2VydChCdWZmZXJJc1ZhbGlkKGNidWYpKTsKIAotCQkJbWV0 YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRfV1JJVEUpOworCQkJ bWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRfV1JJVEUsIGhl YXByZWwpOwogCQkJbWV0YXBnID0gQnVmZmVyR2V0UGFnZShtZXRhYnVmKTsKIAkJCW1ldGFk ID0gQlRQYWdlR2V0TWV0YShtZXRhcGcpOwogCkBAIC0xNDE4LDcgKzE0MjEsNyBAQCBfYnRf aW5zZXJ0b25wZyhSZWxhdGlvbiByZWwsCiAJCSAqIGNhbGwgX2J0X2dldHJvb3RoZWlnaHQg d2hpbGUgaG9sZGluZyBhIGJ1ZmZlciBsb2NrLgogCQkgKi8KIAkJaWYgKEJsb2NrTnVtYmVy SXNWYWxpZChibG9ja2NhY2hlKSAmJgotCQkJX2J0X2dldHJvb3RoZWlnaHQocmVsKSA+PSBC VFJFRV9GQVNUUEFUSF9NSU5fTEVWRUwpCisJCQlfYnRfZ2V0cm9vdGhlaWdodChyZWwsIGhl YXByZWwpID49IEJUUkVFX0ZBU1RQQVRIX01JTl9MRVZFTCkKIAkJCVJlbGF0aW9uU2V0VGFy Z2V0QmxvY2socmVsLCBibG9ja2NhY2hlKTsKIAl9CiAKQEAgLTE0NjEsNyArMTQ2NCw4IEBA IF9idF9pbnNlcnRvbnBnKFJlbGF0aW9uIHJlbCwKIHN0YXRpYyBCdWZmZXIKIF9idF9zcGxp dChSZWxhdGlvbiByZWwsIEJUU2Nhbkluc2VydCBpdHVwX2tleSwgQnVmZmVyIGJ1ZiwgQnVm ZmVyIGNidWYsCiAJCSAgT2Zmc2V0TnVtYmVyIG5ld2l0ZW1vZmYsIFNpemUgbmV3aXRlbXN6 LCBJbmRleFR1cGxlIG5ld2l0ZW0sCi0JCSAgSW5kZXhUdXBsZSBvcmlnbmV3aXRlbSwgSW5k ZXhUdXBsZSBucG9zdGluZywgdWludDE2IHBvc3RpbmdvZmYpCisJCSAgSW5kZXhUdXBsZSBv cmlnbmV3aXRlbSwgSW5kZXhUdXBsZSBucG9zdGluZywgdWludDE2IHBvc3RpbmdvZmYsCisJ CSAgUmVsYXRpb24gaGVhcHJlbCkKIHsKIAlCdWZmZXIJCXJidWY7CiAJUGFnZQkJb3JpZ3Bh Z2U7CkBAIC0xNzEyLDcgKzE3MTYsNyBAQCBfYnRfc3BsaXQoUmVsYXRpb24gcmVsLCBCVFNj YW5JbnNlcnQgaXR1cF9rZXksIEJ1ZmZlciBidWYsIEJ1ZmZlciBjYnVmLAogCSAqIHdheSBi ZWNhdXNlIGl0IGF2b2lkcyBhbiB1bm5lY2Vzc2FyeSBQQU5JQyB3aGVuIGVpdGhlciBvcmln cGFnZSBvciBpdHMKIAkgKiBleGlzdGluZyBzaWJsaW5nIHBhZ2UgYXJlIGNvcnJ1cHQuCiAJ ICovCi0JcmJ1ZiA9IF9idF9nZXRidWYocmVsLCBQX05FVywgQlRfV1JJVEUpOworCXJidWYg PSBfYnRfZ2V0YnVmKHJlbCwgUF9ORVcsIEJUX1dSSVRFLCBoZWFwcmVsKTsKIAlyaWdodHBh Z2UgPSBCdWZmZXJHZXRQYWdlKHJidWYpOwogCXJpZ2h0cGFnZW51bWJlciA9IEJ1ZmZlckdl dEJsb2NrTnVtYmVyKHJidWYpOwogCS8qIHJpZ2h0cGFnZSB3YXMgaW5pdGlhbGl6ZWQgYnkg X2J0X2dldGJ1ZiAqLwpAQCAtMTg4NSw3ICsxODg5LDcgQEAgX2J0X3NwbGl0KFJlbGF0aW9u IHJlbCwgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5LCBCdWZmZXIgYnVmLCBCdWZmZXIgY2J1ZiwK IAkgKi8KIAlpZiAoIWlzcmlnaHRtb3N0KQogCXsKLQkJc2J1ZiA9IF9idF9nZXRidWYocmVs LCBvb3BhcXVlLT5idHBvX25leHQsIEJUX1dSSVRFKTsKKwkJc2J1ZiA9IF9idF9nZXRidWYo cmVsLCBvb3BhcXVlLT5idHBvX25leHQsIEJUX1dSSVRFLCBoZWFwcmVsKTsKIAkJc3BhZ2Ug PSBCdWZmZXJHZXRQYWdlKHNidWYpOwogCQlzb3BhcXVlID0gQlRQYWdlR2V0T3BhcXVlKHNw YWdlKTsKIAkJaWYgKHNvcGFxdWUtPmJ0cG9fcHJldiAhPSBvcmlncGFnZW51bWJlcikKQEAg LTIwOTYsNyArMjEwMCw4IEBAIF9idF9pbnNlcnRfcGFyZW50KFJlbGF0aW9uIHJlbCwKIAkJ CQkgIEJ1ZmZlciByYnVmLAogCQkJCSAgQlRTdGFjayBzdGFjaywKIAkJCQkgIGJvb2wgaXNy b290LAotCQkJCSAgYm9vbCBpc29ubHkpCisJCQkJICBib29sIGlzb25seSwKKwkJCQkgIFJl bGF0aW9uIGhlYXByZWwpCiB7CiAJLyoKIAkgKiBIZXJlIHdlIGhhdmUgdG8gZG8gc29tZXRo aW5nIExlaG1hbiBhbmQgWWFvIGRvbid0IHRhbGsgYWJvdXQ6IGRlYWwgd2l0aApAQCAtMjEx OCw3ICsyMTIzLDcgQEAgX2J0X2luc2VydF9wYXJlbnQoUmVsYXRpb24gcmVsLAogCQlBc3Nl cnQoc3RhY2sgPT0gTlVMTCk7CiAJCUFzc2VydChpc29ubHkpOwogCQkvKiBjcmVhdGUgYSBu ZXcgcm9vdCBub2RlIGFuZCB1cGRhdGUgdGhlIG1ldGFwYWdlICovCi0JCXJvb3RidWYgPSBf YnRfbmV3cm9vdChyZWwsIGJ1ZiwgcmJ1Zik7CisJCXJvb3RidWYgPSBfYnRfbmV3cm9vdChy ZWwsIGJ1ZiwgcmJ1ZiwgaGVhcHJlbCk7CiAJCS8qIHJlbGVhc2UgdGhlIHNwbGl0IGJ1ZmZl cnMgKi8KIAkJX2J0X3JlbGJ1ZihyZWwsIHJvb3RidWYpOwogCQlfYnRfcmVsYnVmKHJlbCwg cmJ1Zik7CkBAIC0yMTU3LDcgKzIxNjIsOCBAQCBfYnRfaW5zZXJ0X3BhcmVudChSZWxhdGlv biByZWwsCiAJCQkJCSBCbG9ja051bWJlcklzVmFsaWQoUmVsYXRpb25HZXRUYXJnZXRCbG9j ayhyZWwpKSkpOwogCiAJCQkvKiBGaW5kIHRoZSBsZWZ0bW9zdCBwYWdlIGF0IHRoZSBuZXh0 IGxldmVsIHVwICovCi0JCQlwYnVmID0gX2J0X2dldF9lbmRwb2ludChyZWwsIG9wYXF1ZS0+ YnRwb19sZXZlbCArIDEsIGZhbHNlLCBOVUxMKTsKKwkJCXBidWYgPSBfYnRfZ2V0X2VuZHBv aW50KHJlbCwgb3BhcXVlLT5idHBvX2xldmVsICsgMSwgZmFsc2UsIE5VTEwsCisJCQkJCQkJ CQloZWFwcmVsKTsKIAkJCS8qIFNldCB1cCBhIHBob255IHN0YWNrIGVudHJ5IHBvaW50aW5n IHRoZXJlICovCiAJCQlzdGFjayA9ICZmYWtlc3RhY2s7CiAJCQlzdGFjay0+YnRzX2Jsa25v ID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIocGJ1Zik7CkBAIC0yMTgzLDcgKzIxODksNyBAQCBf YnRfaW5zZXJ0X3BhcmVudChSZWxhdGlvbiByZWwsCiAJCSAqIG5ldyBkb3dubGluayB3aWxs IGJlIGluc2VydGVkIGF0IHRoZSBjb3JyZWN0IG9mZnNldC4gRXZlbiBidWYncwogCQkgKiBw YXJlbnQgbWF5IGhhdmUgY2hhbmdlZC4KIAkJICovCi0JCXBidWYgPSBfYnRfZ2V0c3RhY2ti dWYocmVsLCBzdGFjaywgYmtudW0pOworCQlwYnVmID0gX2J0X2dldHN0YWNrYnVmKHJlbCwg c3RhY2ssIGJrbnVtLCBoZWFwcmVsKTsKIAogCQkvKgogCQkgKiBVbmxvY2sgdGhlIHJpZ2h0 IGNoaWxkLiAgVGhlIGxlZnQgY2hpbGQgd2lsbCBiZSB1bmxvY2tlZCBpbgpAQCAtMjIwOSw3 ICsyMjE1LDcgQEAgX2J0X2luc2VydF9wYXJlbnQoUmVsYXRpb24gcmVsLAogCQkvKiBSZWN1 cnNpdmVseSBpbnNlcnQgaW50byB0aGUgcGFyZW50ICovCiAJCV9idF9pbnNlcnRvbnBnKHJl bCwgTlVMTCwgcGJ1ZiwgYnVmLCBzdGFjay0+YnRzX3BhcmVudCwKIAkJCQkJICAgbmV3X2l0 ZW0sIE1BWEFMSUdOKEluZGV4VHVwbGVTaXplKG5ld19pdGVtKSksCi0JCQkJCSAgIHN0YWNr LT5idHNfb2Zmc2V0ICsgMSwgMCwgaXNvbmx5KTsKKwkJCQkJICAgc3RhY2stPmJ0c19vZmZz ZXQgKyAxLCAwLCBpc29ubHksIGhlYXByZWwpOwogCiAJCS8qIGJlIHRpZHkgKi8KIAkJcGZy ZWUobmV3X2l0ZW0pOwpAQCAtMjIyNyw3ICsyMjMzLDcgQEAgX2J0X2luc2VydF9wYXJlbnQo UmVsYXRpb24gcmVsLAogICogYW5kIHVucGlubmVkLgogICovCiB2b2lkCi1fYnRfZmluaXNo X3NwbGl0KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxidWYsIEJUU3RhY2sgc3RhY2spCitfYnRf ZmluaXNoX3NwbGl0KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxidWYsIEJUU3RhY2sgc3RhY2ss IFJlbGF0aW9uIGhlYXByZWwpCiB7CiAJUGFnZQkJbHBhZ2UgPSBCdWZmZXJHZXRQYWdlKGxi dWYpOwogCUJUUGFnZU9wYXF1ZSBscGFnZW9wID0gQlRQYWdlR2V0T3BhcXVlKGxwYWdlKTsK QEAgLTIyNDAsNyArMjI0Niw3IEBAIF9idF9maW5pc2hfc3BsaXQoUmVsYXRpb24gcmVsLCBC dWZmZXIgbGJ1ZiwgQlRTdGFjayBzdGFjaykKIAlBc3NlcnQoUF9JTkNPTVBMRVRFX1NQTElU KGxwYWdlb3ApKTsKIAogCS8qIExvY2sgcmlnaHQgc2libGluZywgdGhlIG9uZSBtaXNzaW5n IHRoZSBkb3dubGluayAqLwotCXJidWYgPSBfYnRfZ2V0YnVmKHJlbCwgbHBhZ2VvcC0+YnRw b19uZXh0LCBCVF9XUklURSk7CisJcmJ1ZiA9IF9idF9nZXRidWYocmVsLCBscGFnZW9wLT5i dHBvX25leHQsIEJUX1dSSVRFLCBoZWFwcmVsKTsKIAlycGFnZSA9IEJ1ZmZlckdldFBhZ2Uo cmJ1Zik7CiAJcnBhZ2VvcCA9IEJUUGFnZUdldE9wYXF1ZShycGFnZSk7CiAKQEAgLTIyNTIs NyArMjI1OCw3IEBAIF9idF9maW5pc2hfc3BsaXQoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGJ1 ZiwgQlRTdGFjayBzdGFjaykKIAkJQlRNZXRhUGFnZURhdGEgKm1ldGFkOwogCiAJCS8qIGFj cXVpcmUgbG9jayBvbiB0aGUgbWV0YXBhZ2UgKi8KLQkJbWV0YWJ1ZiA9IF9idF9nZXRidWYo cmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRfV1JJVEUpOworCQltZXRhYnVmID0gX2J0X2dldGJ1 ZihyZWwsIEJUUkVFX01FVEFQQUdFLCBCVF9XUklURSwgaGVhcHJlbCk7CiAJCW1ldGFwZyA9 IEJ1ZmZlckdldFBhZ2UobWV0YWJ1Zik7CiAJCW1ldGFkID0gQlRQYWdlR2V0TWV0YShtZXRh cGcpOwogCkBAIC0yMjY5LDcgKzIyNzUsNyBAQCBfYnRfZmluaXNoX3NwbGl0KFJlbGF0aW9u IHJlbCwgQnVmZmVyIGxidWYsIEJUU3RhY2sgc3RhY2spCiAJZWxvZyhERUJVRzEsICJmaW5p c2hpbmcgaW5jb21wbGV0ZSBzcGxpdCBvZiAldS8ldSIsCiAJCSBCdWZmZXJHZXRCbG9ja051 bWJlcihsYnVmKSwgQnVmZmVyR2V0QmxvY2tOdW1iZXIocmJ1ZikpOwogCi0JX2J0X2luc2Vy dF9wYXJlbnQocmVsLCBsYnVmLCByYnVmLCBzdGFjaywgd2Fzcm9vdCwgd2Fzb25seSk7CisJ X2J0X2luc2VydF9wYXJlbnQocmVsLCBsYnVmLCByYnVmLCBzdGFjaywgd2Fzcm9vdCwgd2Fz b25seSwgaGVhcHJlbCk7CiB9CiAKIC8qCkBAIC0yMzA0LDcgKzIzMTAsNyBAQCBfYnRfZmlu aXNoX3NwbGl0KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxidWYsIEJUU3RhY2sgc3RhY2spCiAg KgkJb2Zmc2V0IG51bWJlciBidHNfb2Zmc2V0ICsgMS4KICAqLwogQnVmZmVyCi1fYnRfZ2V0 c3RhY2tidWYoUmVsYXRpb24gcmVsLCBCVFN0YWNrIHN0YWNrLCBCbG9ja051bWJlciBjaGls ZCkKK19idF9nZXRzdGFja2J1ZihSZWxhdGlvbiByZWwsIEJUU3RhY2sgc3RhY2ssIEJsb2Nr TnVtYmVyIGNoaWxkLCBSZWxhdGlvbiBoZWFwcmVsKQogewogCUJsb2NrTnVtYmVyIGJsa25v OwogCU9mZnNldE51bWJlciBzdGFydDsKQEAgLTIzMTgsMTMgKzIzMjQsMTMgQEAgX2J0X2dl dHN0YWNrYnVmKFJlbGF0aW9uIHJlbCwgQlRTdGFjayBzdGFjaywgQmxvY2tOdW1iZXIgY2hp bGQpCiAJCVBhZ2UJCXBhZ2U7CiAJCUJUUGFnZU9wYXF1ZSBvcGFxdWU7CiAKLQkJYnVmID0g X2J0X2dldGJ1ZihyZWwsIGJsa25vLCBCVF9XUklURSk7CisJCWJ1ZiA9IF9idF9nZXRidWYo cmVsLCBibGtubywgQlRfV1JJVEUsIGhlYXByZWwpOwogCQlwYWdlID0gQnVmZmVyR2V0UGFn ZShidWYpOwogCQlvcGFxdWUgPSBCVFBhZ2VHZXRPcGFxdWUocGFnZSk7CiAKIAkJaWYgKFBf SU5DT01QTEVURV9TUExJVChvcGFxdWUpKQogCQl7Ci0JCQlfYnRfZmluaXNoX3NwbGl0KHJl bCwgYnVmLCBzdGFjay0+YnRzX3BhcmVudCk7CisJCQlfYnRfZmluaXNoX3NwbGl0KHJlbCwg YnVmLCBzdGFjay0+YnRzX3BhcmVudCwgaGVhcHJlbCk7CiAJCQljb250aW51ZTsKIAkJfQog CkBAIC0yNDI4LDcgKzI0MzQsNyBAQCBfYnRfZ2V0c3RhY2tidWYoUmVsYXRpb24gcmVsLCBC VFN0YWNrIHN0YWNrLCBCbG9ja051bWJlciBjaGlsZCkKICAqCQlsYnVmLCByYnVmICYgcm9v dGJ1Zi4KICAqLwogc3RhdGljIEJ1ZmZlcgotX2J0X25ld3Jvb3QoUmVsYXRpb24gcmVsLCBC dWZmZXIgbGJ1ZiwgQnVmZmVyIHJidWYpCitfYnRfbmV3cm9vdChSZWxhdGlvbiByZWwsIEJ1 ZmZlciBsYnVmLCBCdWZmZXIgcmJ1ZiwgUmVsYXRpb24gaGVhcHJlbCkKIHsKIAlCdWZmZXIJ CXJvb3RidWY7CiAJUGFnZQkJbHBhZ2UsCkBAIC0yNDU0LDEyICsyNDYwLDEyIEBAIF9idF9u ZXdyb290KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxidWYsIEJ1ZmZlciByYnVmKQogCWxvcGFx dWUgPSBCVFBhZ2VHZXRPcGFxdWUobHBhZ2UpOwogCiAJLyogZ2V0IGEgbmV3IHJvb3QgcGFn ZSAqLwotCXJvb3RidWYgPSBfYnRfZ2V0YnVmKHJlbCwgUF9ORVcsIEJUX1dSSVRFKTsKKwly b290YnVmID0gX2J0X2dldGJ1ZihyZWwsIFBfTkVXLCBCVF9XUklURSwgaGVhcHJlbCk7CiAJ cm9vdHBhZ2UgPSBCdWZmZXJHZXRQYWdlKHJvb3RidWYpOwogCXJvb3RibGtudW0gPSBCdWZm ZXJHZXRCbG9ja051bWJlcihyb290YnVmKTsKIAogCS8qIGFjcXVpcmUgbG9jayBvbiB0aGUg bWV0YXBhZ2UgKi8KLQltZXRhYnVmID0gX2J0X2dldGJ1ZihyZWwsIEJUUkVFX01FVEFQQUdF LCBCVF9XUklURSk7CisJbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFH RSwgQlRfV1JJVEUsIGhlYXByZWwpOwogCW1ldGFwZyA9IEJ1ZmZlckdldFBhZ2UobWV0YWJ1 Zik7CiAJbWV0YWQgPSBCVFBhZ2VHZXRNZXRhKG1ldGFwZyk7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L25idHJlZS9uYnRwYWdlLmMKaW5kZXggM2ZlZWUyOGQxOS4uZWRjYTdhZWJiMiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRwYWdlLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL25idHJlZS9uYnRwYWdlLmMKQEAgLTM5LDE2ICszOSwxOSBAQAogCiBz dGF0aWMgQlRNZXRhUGFnZURhdGEgKl9idF9nZXRtZXRhKFJlbGF0aW9uIHJlbCwgQnVmZmVy IG1ldGFidWYpOwogc3RhdGljIHZvaWQgX2J0X2xvZ19yZXVzZV9wYWdlKFJlbGF0aW9uIHJl bCwgQmxvY2tOdW1iZXIgYmxrbm8sCi0JCQkJCQkJICAgRnVsbFRyYW5zYWN0aW9uSWQgc2Fm ZXhpZCk7CisJCQkJCQkJICAgRnVsbFRyYW5zYWN0aW9uSWQgc2FmZXhpZCwKKwkJCQkJCQkg ICBSZWxhdGlvbiBoZWFwcmVsKTsKIHN0YXRpYyB2b2lkIF9idF9kZWxpdGVtc19kZWxldGUo UmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCQkJCQkJCQlUcmFuc2FjdGlvbklkIHNuYXBz aG90Q29uZmxpY3RIb3Jpem9uLAogCQkJCQkJCQlPZmZzZXROdW1iZXIgKmRlbGV0YWJsZSwg aW50IG5kZWxldGFibGUsCi0JCQkJCQkJCUJUVmFjdXVtUG9zdGluZyAqdXBkYXRhYmxlLCBp bnQgbnVwZGF0YWJsZSk7CisJCQkJCQkJCUJUVmFjdXVtUG9zdGluZyAqdXBkYXRhYmxlLCBp bnQgbnVwZGF0YWJsZSwKKwkJCQkJCQkJUmVsYXRpb24gaGVhcHJlbCk7CiBzdGF0aWMgY2hh ciAqX2J0X2RlbGl0ZW1zX3VwZGF0ZShCVFZhY3V1bVBvc3RpbmcgKnVwZGF0YWJsZSwgaW50 IG51cGRhdGFibGUsCiAJCQkJCQkJCSBPZmZzZXROdW1iZXIgKnVwZGF0ZWRvZmZzZXRzLAog CQkJCQkJCQkgU2l6ZSAqdXBkYXRlZGJ1ZmxlbiwgYm9vbCBuZWVkc3dhbCk7CiBzdGF0aWMg Ym9vbCBfYnRfbWFya19wYWdlX2hhbGZkZWFkKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxlYWZi dWYsCi0JCQkJCQkJCSAgIEJUU3RhY2sgc3RhY2spOworCQkJCQkJCQkgICBCVFN0YWNrIHN0 YWNrLAorCQkJCQkJCQkgICBSZWxhdGlvbiBoZWFwcmVsKTsKIHN0YXRpYyBib29sIF9idF91 bmxpbmtfaGFsZmRlYWRfcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVmLAogCQkJ CQkJCQkJIEJsb2NrTnVtYmVyIHNjYW5ibGtubywKIAkJCQkJCQkJCSBib29sICpyaWdodHNp Yl9lbXB0eSwKQEAgLTU4LDcgKzYxLDggQEAgc3RhdGljIGJvb2wgX2J0X2xvY2tfc3VidHJl ZV9wYXJlbnQoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBjaGlsZCwKIAkJCQkJCQkJCUJ1 ZmZlciAqc3VidHJlZXBhcmVudCwKIAkJCQkJCQkJCU9mZnNldE51bWJlciAqcG9mZnNldCwK IAkJCQkJCQkJCUJsb2NrTnVtYmVyICp0b3BwYXJlbnQsCi0JCQkJCQkJCQlCbG9ja051bWJl ciAqdG9wcGFyZW50cmlnaHRzaWIpOworCQkJCQkJCQkJQmxvY2tOdW1iZXIgKnRvcHBhcmVu dHJpZ2h0c2liLAorCQkJCQkJCQkJUmVsYXRpb24gaGVhcHJlbCk7CiBzdGF0aWMgdm9pZCBf YnRfcGVuZGluZ2ZzbV9hZGQoQlRWYWNTdGF0ZSAqdnN0YXRlLCBCbG9ja051bWJlciB0YXJn ZXQsCiAJCQkJCQkJICAgRnVsbFRyYW5zYWN0aW9uSWQgc2FmZXhpZCk7CiAKQEAgLTE3OCw3 ICsxODIsNyBAQCBfYnRfZ2V0bWV0YShSZWxhdGlvbiByZWwsIEJ1ZmZlciBtZXRhYnVmKQog ICogaW5kZXggdHVwbGVzIG5lZWRlZCB0byBiZSBkZWxldGVkLgogICovCiBib29sCi1fYnRf dmFjdXVtX25lZWRzX2NsZWFudXAoUmVsYXRpb24gcmVsKQorX2J0X3ZhY3V1bV9uZWVkc19j bGVhbnVwKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCkKIHsKIAlCdWZmZXIJCW1l dGFidWY7CiAJUGFnZQkJbWV0YXBnOwpAQCAtMTkxLDcgKzE5NSw3IEBAIF9idF92YWN1dW1f bmVlZHNfY2xlYW51cChSZWxhdGlvbiByZWwpCiAJICoKIAkgKiBOb3RlIHRoYXQgd2UgZGVs aWJlcmF0ZWx5IGF2b2lkIHVzaW5nIGNhY2hlZCB2ZXJzaW9uIG9mIG1ldGFwYWdlIGhlcmUu CiAJICovCi0JbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRf UkVBRCk7CisJbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRf UkVBRCwgaGVhcHJlbCk7CiAJbWV0YXBnID0gQnVmZmVyR2V0UGFnZShtZXRhYnVmKTsKIAlt ZXRhZCA9IEJUUGFnZUdldE1ldGEobWV0YXBnKTsKIAlidG1fdmVyc2lvbiA9IG1ldGFkLT5i dG1fdmVyc2lvbjsKQEAgLTIzMSw3ICsyMzUsNyBAQCBfYnRfdmFjdXVtX25lZWRzX2NsZWFu dXAoUmVsYXRpb24gcmVsKQogICogZmluYWxpemVkLgogICovCiB2b2lkCi1fYnRfc2V0X2Ns ZWFudXBfaW5mbyhSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIG51bV9kZWxwYWdlcykKK19i dF9zZXRfY2xlYW51cF9pbmZvKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgbnVtX2RlbHBh Z2VzLCBSZWxhdGlvbiBoZWFwcmVsKQogewogCUJ1ZmZlcgkJbWV0YWJ1ZjsKIAlQYWdlCQlt ZXRhcGc7CkBAIC0yNTUsNyArMjU5LDcgQEAgX2J0X3NldF9jbGVhbnVwX2luZm8oUmVsYXRp b24gcmVsLCBCbG9ja051bWJlciBudW1fZGVscGFnZXMpCiAJICogbm8gbG9uZ2VyIHVzZWQg YXMgb2YgUG9zdGdyZVNRTCAxNC4gIFdlIHNldCBpdCB0byAtMS4wIG9uIHJld3JpdGUsIGp1 c3QKIAkgKiB0byBiZSBjb25zaXN0ZW50LgogCSAqLwotCW1ldGFidWYgPSBfYnRfZ2V0YnVm KHJlbCwgQlRSRUVfTUVUQVBBR0UsIEJUX1JFQUQpOworCW1ldGFidWYgPSBfYnRfZ2V0YnVm KHJlbCwgQlRSRUVfTUVUQVBBR0UsIEJUX1JFQUQsIGhlYXByZWwpOwogCW1ldGFwZyA9IEJ1 ZmZlckdldFBhZ2UobWV0YWJ1Zik7CiAJbWV0YWQgPSBCVFBhZ2VHZXRNZXRhKG1ldGFwZyk7 CiAKQEAgLTM0MCw3ICszNDQsNyBAQCBfYnRfc2V0X2NsZWFudXBfaW5mbyhSZWxhdGlvbiBy ZWwsIEJsb2NrTnVtYmVyIG51bV9kZWxwYWdlcykKICAqCQlUaGUgbWV0YWRhdGEgcGFnZSBp cyBub3QgbG9ja2VkIG9yIHBpbm5lZCBvbiBleGl0LgogICovCiBCdWZmZXIKLV9idF9nZXRy b290KFJlbGF0aW9uIHJlbCwgaW50IGFjY2VzcykKK19idF9nZXRyb290KFJlbGF0aW9uIHJl bCwgaW50IGFjY2VzcywgUmVsYXRpb24gaGVhcHJlbCkKIHsKIAlCdWZmZXIJCW1ldGFidWY7 CiAJQnVmZmVyCQlyb290YnVmOwpAQCAtMzcwLDcgKzM3NCw3IEBAIF9idF9nZXRyb290KFJl bGF0aW9uIHJlbCwgaW50IGFjY2VzcykKIAkJQXNzZXJ0KHJvb3RibGtubyAhPSBQX05PTkUp OwogCQlyb290bGV2ZWwgPSBtZXRhZC0+YnRtX2Zhc3RsZXZlbDsKIAotCQlyb290YnVmID0g X2J0X2dldGJ1ZihyZWwsIHJvb3RibGtubywgQlRfUkVBRCk7CisJCXJvb3RidWYgPSBfYnRf Z2V0YnVmKHJlbCwgcm9vdGJsa25vLCBCVF9SRUFELCBoZWFwcmVsKTsKIAkJcm9vdHBhZ2Ug PSBCdWZmZXJHZXRQYWdlKHJvb3RidWYpOwogCQlyb290b3BhcXVlID0gQlRQYWdlR2V0T3Bh cXVlKHJvb3RwYWdlKTsKIApAQCAtMzk2LDcgKzQwMCw3IEBAIF9idF9nZXRyb290KFJlbGF0 aW9uIHJlbCwgaW50IGFjY2VzcykKIAkJcmVsLT5yZF9hbWNhY2hlID0gTlVMTDsKIAl9CiAK LQltZXRhYnVmID0gX2J0X2dldGJ1ZihyZWwsIEJUUkVFX01FVEFQQUdFLCBCVF9SRUFEKTsK KwltZXRhYnVmID0gX2J0X2dldGJ1ZihyZWwsIEJUUkVFX01FVEFQQUdFLCBCVF9SRUFELCBo ZWFwcmVsKTsKIAltZXRhZCA9IF9idF9nZXRtZXRhKHJlbCwgbWV0YWJ1Zik7CiAKIAkvKiBp ZiBubyByb290IHBhZ2UgaW5pdGlhbGl6ZWQgeWV0LCBkbyBpdCAqLwpAQCAtNDI5LDcgKzQz Myw3IEBAIF9idF9nZXRyb290KFJlbGF0aW9uIHJlbCwgaW50IGFjY2VzcykKIAkJCSAqIHRv IG9wdGltaXplIHRoaXMgY2FzZS4pCiAJCQkgKi8KIAkJCV9idF9yZWxidWYocmVsLCBtZXRh YnVmKTsKLQkJCXJldHVybiBfYnRfZ2V0cm9vdChyZWwsIGFjY2Vzcyk7CisJCQlyZXR1cm4g X2J0X2dldHJvb3QocmVsLCBhY2Nlc3MsIGhlYXByZWwpOwogCQl9CiAKIAkJLyoKQEAgLTQz Nyw3ICs0NDEsNyBAQCBfYnRfZ2V0cm9vdChSZWxhdGlvbiByZWwsIGludCBhY2Nlc3MpCiAJ CSAqIHRoZSBuZXcgcm9vdCBwYWdlLiAgU2luY2UgdGhpcyBpcyB0aGUgZmlyc3QgcGFnZSBp biB0aGUgdHJlZSwgaXQncwogCQkgKiBhIGxlYWYgYXMgd2VsbCBhcyB0aGUgcm9vdC4KIAkJ ICovCi0JCXJvb3RidWYgPSBfYnRfZ2V0YnVmKHJlbCwgUF9ORVcsIEJUX1dSSVRFKTsKKwkJ cm9vdGJ1ZiA9IF9idF9nZXRidWYocmVsLCBQX05FVywgQlRfV1JJVEUsIGhlYXByZWwpOwog CQlyb290Ymxrbm8gPSBCdWZmZXJHZXRCbG9ja051bWJlcihyb290YnVmKTsKIAkJcm9vdHBh Z2UgPSBCdWZmZXJHZXRQYWdlKHJvb3RidWYpOwogCQlyb290b3BhcXVlID0gQlRQYWdlR2V0 T3BhcXVlKHJvb3RwYWdlKTsKQEAgLTU3NCw3ICs1NzgsNyBAQCBfYnRfZ2V0cm9vdChSZWxh dGlvbiByZWwsIGludCBhY2Nlc3MpCiAgKiBtb3ZpbmcgdG8gdGhlIHJvb3QgLS0tIHRoYXQn ZCBkZWFkbG9jayBhZ2FpbnN0IGFueSBjb25jdXJyZW50IHJvb3Qgc3BsaXQuKQogICovCiBC dWZmZXIKLV9idF9nZXR0cnVlcm9vdChSZWxhdGlvbiByZWwpCitfYnRfZ2V0dHJ1ZXJvb3Qo UmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsKQogewogCUJ1ZmZlcgkJbWV0YWJ1ZjsK IAlQYWdlCQltZXRhcGc7CkBAIC01OTYsNyArNjAwLDcgQEAgX2J0X2dldHRydWVyb290KFJl bGF0aW9uIHJlbCkKIAkJcGZyZWUocmVsLT5yZF9hbWNhY2hlKTsKIAlyZWwtPnJkX2FtY2Fj aGUgPSBOVUxMOwogCi0JbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFH RSwgQlRfUkVBRCk7CisJbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFH RSwgQlRfUkVBRCwgaGVhcHJlbCk7CiAJbWV0YXBnID0gQnVmZmVyR2V0UGFnZShtZXRhYnVm KTsKIAltZXRhb3BhcXVlID0gQlRQYWdlR2V0T3BhcXVlKG1ldGFwZyk7CiAJbWV0YWQgPSBC VFBhZ2VHZXRNZXRhKG1ldGFwZyk7CkBAIC02NjksNyArNjczLDcgQEAgX2J0X2dldHRydWVy b290KFJlbGF0aW9uIHJlbCkKICAqCQlhYm91dCB1cGRhdGluZyBwcmV2aW91c2x5IGNhY2hl ZCBkYXRhLgogICovCiBpbnQKLV9idF9nZXRyb290aGVpZ2h0KFJlbGF0aW9uIHJlbCkKK19i dF9nZXRyb290aGVpZ2h0KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCkKIHsKIAlC VE1ldGFQYWdlRGF0YSAqbWV0YWQ7CiAKQEAgLTY3Nyw3ICs2ODEsNyBAQCBfYnRfZ2V0cm9v dGhlaWdodChSZWxhdGlvbiByZWwpCiAJewogCQlCdWZmZXIJCW1ldGFidWY7CiAKLQkJbWV0 YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRfUkVBRCk7CisJCW1l dGFidWYgPSBfYnRfZ2V0YnVmKHJlbCwgQlRSRUVfTUVUQVBBR0UsIEJUX1JFQUQsIGhlYXBy ZWwpOwogCQltZXRhZCA9IF9idF9nZXRtZXRhKHJlbCwgbWV0YWJ1Zik7CiAKIAkJLyoKQEAg LTczMyw3ICs3MzcsNyBAQCBfYnRfZ2V0cm9vdGhlaWdodChSZWxhdGlvbiByZWwpCiAgKgkJ cGdfdXBncmFkZSdkIGZyb20gUG9zdGdyZXMgMTIuCiAgKi8KIHZvaWQKLV9idF9tZXRhdmVy c2lvbihSZWxhdGlvbiByZWwsIGJvb2wgKmhlYXBrZXlzcGFjZSwgYm9vbCAqYWxsZXF1YWxp bWFnZSkKK19idF9tZXRhdmVyc2lvbihSZWxhdGlvbiByZWwsIGJvb2wgKmhlYXBrZXlzcGFj ZSwgYm9vbCAqYWxsZXF1YWxpbWFnZSwgUmVsYXRpb24gaGVhcHJlbCkKIHsKIAlCVE1ldGFQ YWdlRGF0YSAqbWV0YWQ7CiAKQEAgLTc0MSw3ICs3NDUsNyBAQCBfYnRfbWV0YXZlcnNpb24o UmVsYXRpb24gcmVsLCBib29sICpoZWFwa2V5c3BhY2UsIGJvb2wgKmFsbGVxdWFsaW1hZ2Up CiAJewogCQlCdWZmZXIJCW1ldGFidWY7CiAKLQkJbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVs LCBCVFJFRV9NRVRBUEFHRSwgQlRfUkVBRCk7CisJCW1ldGFidWYgPSBfYnRfZ2V0YnVmKHJl bCwgQlRSRUVfTUVUQVBBR0UsIEJUX1JFQUQsIGhlYXByZWwpOwogCQltZXRhZCA9IF9idF9n ZXRtZXRhKHJlbCwgbWV0YWJ1Zik7CiAKIAkJLyoKQEAgLTgyNSw3ICs4MjksNyBAQCBfYnRf Y2hlY2twYWdlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZikKICAqIExvZyB0aGUgcmV1c2Ug b2YgYSBwYWdlIGZyb20gdGhlIEZTTS4KICAqLwogc3RhdGljIHZvaWQKLV9idF9sb2dfcmV1 c2VfcGFnZShSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBGdWxsVHJhbnNhY3Rp b25JZCBzYWZleGlkKQorX2J0X2xvZ19yZXVzZV9wYWdlKFJlbGF0aW9uIHJlbCwgQmxvY2tO dW1iZXIgYmxrbm8sIEZ1bGxUcmFuc2FjdGlvbklkIHNhZmV4aWQsIFJlbGF0aW9uIGhlYXBy ZWwpCiB7CiAJeGxfYnRyZWVfcmV1c2VfcGFnZSB4bHJlY19yZXVzZTsKIApAQCAtODM2LDYg Kzg0MCw3IEBAIF9idF9sb2dfcmV1c2VfcGFnZShSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVy IGJsa25vLCBGdWxsVHJhbnNhY3Rpb25JZCBzYWZleGlkKQogCSAqLwogCiAJLyogWExPRyBz dHVmZiAqLworCXhscmVjX3JldXNlLmlzQ2F0YWxvZ1JlbCA9IFJlbGF0aW9uSXNBY2Nlc3Np YmxlSW5Mb2dpY2FsRGVjb2RpbmcoaGVhcHJlbCk7CiAJeGxyZWNfcmV1c2UubG9jYXRvciA9 IHJlbC0+cmRfbG9jYXRvcjsKIAl4bHJlY19yZXVzZS5ibG9jayA9IGJsa25vOwogCXhscmVj X3JldXNlLnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uID0gc2FmZXhpZDsKQEAgLTg2OCw3ICs4 NzMsNyBAQCBfYnRfbG9nX3JldXNlX3BhZ2UoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBi bGtubywgRnVsbFRyYW5zYWN0aW9uSWQgc2FmZXhpZCkKICAqCQlhcyBfYnRfbG9ja2J1Zigp LgogICovCiBCdWZmZXIKLV9idF9nZXRidWYoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBi bGtubywgaW50IGFjY2VzcykKK19idF9nZXRidWYoUmVsYXRpb24gcmVsLCBCbG9ja051bWJl ciBibGtubywgaW50IGFjY2VzcywgUmVsYXRpb24gaGVhcHJlbCkKIHsKIAlCdWZmZXIJCWJ1 ZjsKIApAQCAtOTQ0LDcgKzk0OSw3IEBAIF9idF9nZXRidWYoUmVsYXRpb24gcmVsLCBCbG9j a051bWJlciBibGtubywgaW50IGFjY2VzcykKIAkJCQkJICovCiAJCQkJCWlmIChYTG9nU3Rh bmRieUluZm9BY3RpdmUoKSAmJiBSZWxhdGlvbk5lZWRzV0FMKHJlbCkpCiAJCQkJCQlfYnRf bG9nX3JldXNlX3BhZ2UocmVsLCBibGtubywKLQkJCQkJCQkJCQkgICBCVFBhZ2VHZXREZWxl dGVYaWQocGFnZSkpOworCQkJCQkJCQkJCSAgIEJUUGFnZUdldERlbGV0ZVhpZChwYWdlKSwg aGVhcHJlbCk7CiAKIAkJCQkJLyogT2theSB0byB1c2UgcGFnZS4gIFJlLWluaXRpYWxpemUg YW5kIHJldHVybiBpdC4gKi8KIAkJCQkJX2J0X3BhZ2Vpbml0KHBhZ2UsIEJ1ZmZlckdldFBh Z2VTaXplKGJ1ZikpOwpAQCAtMTI5Niw3ICsxMzAxLDcgQEAgc3RhdGljIHZvaWQKIF9idF9k ZWxpdGVtc19kZWxldGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCQkJCQlUcmFuc2Fj dGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAogCQkJCQlPZmZzZXROdW1iZXIgKmRl bGV0YWJsZSwgaW50IG5kZWxldGFibGUsCi0JCQkJCUJUVmFjdXVtUG9zdGluZyAqdXBkYXRh YmxlLCBpbnQgbnVwZGF0YWJsZSkKKwkJCQkJQlRWYWN1dW1Qb3N0aW5nICp1cGRhdGFibGUs IGludCBudXBkYXRhYmxlLCBSZWxhdGlvbiBoZWFwcmVsKQogewogCVBhZ2UJCXBhZ2UgPSBC dWZmZXJHZXRQYWdlKGJ1Zik7CiAJQlRQYWdlT3BhcXVlIG9wYXF1ZTsKQEAgLTEzNTgsNiAr MTM2Myw3IEBAIF9idF9kZWxpdGVtc19kZWxldGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVm LAogCQlYTG9nUmVjUHRyCXJlY3B0cjsKIAkJeGxfYnRyZWVfZGVsZXRlIHhscmVjX2RlbGV0 ZTsKIAorCQl4bHJlY19kZWxldGUuaXNDYXRhbG9nUmVsID0gUmVsYXRpb25Jc0FjY2Vzc2li bGVJbkxvZ2ljYWxEZWNvZGluZyhoZWFwcmVsKTsKIAkJeGxyZWNfZGVsZXRlLnNuYXBzaG90 Q29uZmxpY3RIb3Jpem9uID0gc25hcHNob3RDb25mbGljdEhvcml6b247CiAJCXhscmVjX2Rl bGV0ZS5uZGVsZXRlZCA9IG5kZWxldGFibGU7CiAJCXhscmVjX2RlbGV0ZS5udXBkYXRlZCA9 IG51cGRhdGFibGU7CkBAIC0xNjg1LDcgKzE2OTEsNyBAQCBfYnRfZGVsaXRlbXNfZGVsZXRl X2NoZWNrKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwgUmVsYXRpb24gaGVhcFJlbCwKIAog CS8qIFBoeXNpY2FsbHkgZGVsZXRlIHR1cGxlcyAob3IgVElEcykgdXNpbmcgZGVsZXRhYmxl IChvciB1cGRhdGFibGUpICovCiAJX2J0X2RlbGl0ZW1zX2RlbGV0ZShyZWwsIGJ1Ziwgc25h cHNob3RDb25mbGljdEhvcml6b24sCi0JCQkJCQlkZWxldGFibGUsIG5kZWxldGFibGUsIHVw ZGF0YWJsZSwgbnVwZGF0YWJsZSk7CisJCQkJCQlkZWxldGFibGUsIG5kZWxldGFibGUsIHVw ZGF0YWJsZSwgbnVwZGF0YWJsZSwgaGVhcFJlbCk7CiAKIAkvKiBiZSB0aWR5ICovCiAJZm9y IChpbnQgaSA9IDA7IGkgPCBudXBkYXRhYmxlOyBpKyspCkBAIC0xNzA2LDcgKzE3MTIsNyBA QCBfYnRfZGVsaXRlbXNfZGVsZXRlX2NoZWNrKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1Ziwg UmVsYXRpb24gaGVhcFJlbCwKICAqIHNhbWUgbGV2ZWwgbXVzdCBhbHdheXMgYmUgbG9ja2Vk IGxlZnQgdG8gcmlnaHQgdG8gYXZvaWQgZGVhZGxvY2tzLgogICovCiBzdGF0aWMgYm9vbAot X2J0X2xlZnRzaWJfc3BsaXRmbGFnKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgbGVmdHNp YiwgQmxvY2tOdW1iZXIgdGFyZ2V0KQorX2J0X2xlZnRzaWJfc3BsaXRmbGFnKFJlbGF0aW9u IHJlbCwgQmxvY2tOdW1iZXIgbGVmdHNpYiwgQmxvY2tOdW1iZXIgdGFyZ2V0LCBSZWxhdGlv biBoZWFwcmVsKQogewogCUJ1ZmZlcgkJYnVmOwogCVBhZ2UJCXBhZ2U7CkBAIC0xNzE3LDcg KzE3MjMsNyBAQCBfYnRfbGVmdHNpYl9zcGxpdGZsYWcoUmVsYXRpb24gcmVsLCBCbG9ja051 bWJlciBsZWZ0c2liLCBCbG9ja051bWJlciB0YXJnZXQpCiAJaWYgKGxlZnRzaWIgPT0gUF9O T05FKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlidWYgPSBfYnRfZ2V0YnVmKHJlbCwgbGVmdHNp YiwgQlRfUkVBRCk7CisJYnVmID0gX2J0X2dldGJ1ZihyZWwsIGxlZnRzaWIsIEJUX1JFQUQs IGhlYXByZWwpOwogCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1Zik7CiAJb3BhcXVlID0gQlRQ YWdlR2V0T3BhcXVlKHBhZ2UpOwogCkBAIC0xNzYzLDcgKzE3NjksNyBAQCBfYnRfbGVmdHNp Yl9zcGxpdGZsYWcoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBsZWZ0c2liLCBCbG9ja051 bWJlciB0YXJnZXQpCiAgKiB0by1iZS1kZWxldGVkIHN1YnRyZWUuKQogICovCiBzdGF0aWMg Ym9vbAotX2J0X3JpZ2h0c2liX2hhbGZkZWFkZmxhZyhSZWxhdGlvbiByZWwsIEJsb2NrTnVt YmVyIGxlYWZyaWdodHNpYikKK19idF9yaWdodHNpYl9oYWxmZGVhZGZsYWcoUmVsYXRpb24g cmVsLCBCbG9ja051bWJlciBsZWFmcmlnaHRzaWIsIFJlbGF0aW9uIGhlYXByZWwpCiB7CiAJ QnVmZmVyCQlidWY7CiAJUGFnZQkJcGFnZTsKQEAgLTE3NzIsNyArMTc3OCw3IEBAIF9idF9y aWdodHNpYl9oYWxmZGVhZGZsYWcoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBsZWFmcmln aHRzaWIpCiAKIAlBc3NlcnQobGVhZnJpZ2h0c2liICE9IFBfTk9ORSk7CiAKLQlidWYgPSBf YnRfZ2V0YnVmKHJlbCwgbGVhZnJpZ2h0c2liLCBCVF9SRUFEKTsKKwlidWYgPSBfYnRfZ2V0 YnVmKHJlbCwgbGVhZnJpZ2h0c2liLCBCVF9SRUFELCBoZWFwcmVsKTsKIAlwYWdlID0gQnVm ZmVyR2V0UGFnZShidWYpOwogCW9wYXF1ZSA9IEJUUGFnZUdldE9wYXF1ZShwYWdlKTsKIApA QCAtMTk2MSwxNyArMTk2NywxOCBAQCBfYnRfcGFnZWRlbChSZWxhdGlvbiByZWwsIEJ1ZmZl ciBsZWFmYnVmLCBCVFZhY1N0YXRlICp2c3RhdGUpCiAJCQkJICogbWFya2VkIHdpdGggSU5D T01QTEVURV9TUExJVCBmbGFnIGJlZm9yZSBwcm9jZWVkaW5nCiAJCQkJICovCiAJCQkJQXNz ZXJ0KGxlYWZibGtubyA9PSBzY2FuYmxrbm8pOwotCQkJCWlmIChfYnRfbGVmdHNpYl9zcGxp dGZsYWcocmVsLCBsZWZ0c2liLCBsZWFmYmxrbm8pKQorCQkJCWlmIChfYnRfbGVmdHNpYl9z cGxpdGZsYWcocmVsLCBsZWZ0c2liLCBsZWFmYmxrbm8sIHZzdGF0ZS0+aW5mby0+aGVhcHJl bCkpCiAJCQkJewogCQkJCQlSZWxlYXNlQnVmZmVyKGxlYWZidWYpOwogCQkJCQlyZXR1cm47 CiAJCQkJfQogCiAJCQkJLyogd2UgbmVlZCBhbiBpbnNlcnRpb24gc2NhbiBrZXkgZm9yIHRo ZSBzZWFyY2gsIHNvIGJ1aWxkIG9uZSAqLwotCQkJCWl0dXBfa2V5ID0gX2J0X21rc2Nhbmtl eShyZWwsIHRhcmdldGtleSk7CisJCQkJaXR1cF9rZXkgPSBfYnRfbWtzY2Fua2V5KHJlbCwg dGFyZ2V0a2V5LCB2c3RhdGUtPmluZm8tPmhlYXByZWwpOwogCQkJCS8qIGZpbmQgdGhlIGxl ZnRtb3N0IGxlYWYgcGFnZSB3aXRoIG1hdGNoaW5nIHBpdm90L2hpZ2gga2V5ICovCiAJCQkJ aXR1cF9rZXktPnBpdm90c2VhcmNoID0gdHJ1ZTsKLQkJCQlzdGFjayA9IF9idF9zZWFyY2go cmVsLCBpdHVwX2tleSwgJnNsZWFmYnVmLCBCVF9SRUFELCBOVUxMKTsKKwkJCQlzdGFjayA9 IF9idF9zZWFyY2gocmVsLCBpdHVwX2tleSwgJnNsZWFmYnVmLCBCVF9SRUFELCBOVUxMLAor CQkJCQkJCQkgICB2c3RhdGUtPmluZm8tPmhlYXByZWwpOwogCQkJCS8qIHdvbid0IG5lZWQg YSBzZWNvbmQgbG9jayBvciBwaW4gb24gbGVhZmJ1ZiAqLwogCQkJCV9idF9yZWxidWYocmVs LCBzbGVhZmJ1Zik7CiAKQEAgLTIwMDIsNyArMjAwOSw3IEBAIF9idF9wYWdlZGVsKFJlbGF0 aW9uIHJlbCwgQnVmZmVyIGxlYWZidWYsIEJUVmFjU3RhdGUgKnZzdGF0ZSkKIAkJCSAqIGxl YWZidWYgcGFnZSBoYWxmLWRlYWQuCiAJCQkgKi8KIAkJCUFzc2VydChQX0lTTEVBRihvcGFx dWUpICYmICFQX0lHTk9SRShvcGFxdWUpKTsKLQkJCWlmICghX2J0X21hcmtfcGFnZV9oYWxm ZGVhZChyZWwsIGxlYWZidWYsIHN0YWNrKSkKKwkJCWlmICghX2J0X21hcmtfcGFnZV9oYWxm ZGVhZChyZWwsIGxlYWZidWYsIHN0YWNrLCB2c3RhdGUtPmluZm8tPmhlYXByZWwpKQogCQkJ ewogCQkJCV9idF9yZWxidWYocmVsLCBsZWFmYnVmKTsKIAkJCQlyZXR1cm47CkBAIC0yMDY1 LDcgKzIwNzIsNyBAQCBfYnRfcGFnZWRlbChSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVm LCBCVFZhY1N0YXRlICp2c3RhdGUpCiAJCWlmICghcmlnaHRzaWJfZW1wdHkpCiAJCQlicmVh azsKIAotCQlsZWFmYnVmID0gX2J0X2dldGJ1ZihyZWwsIHJpZ2h0c2liLCBCVF9XUklURSk7 CisJCWxlYWZidWYgPSBfYnRfZ2V0YnVmKHJlbCwgcmlnaHRzaWIsIEJUX1dSSVRFLCB2c3Rh dGUtPmluZm8tPmhlYXByZWwpOwogCX0KIH0KIApAQCAtMjA4NCw3ICsyMDkxLDcgQEAgX2J0 X3BhZ2VkZWwoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGVhZmJ1ZiwgQlRWYWNTdGF0ZSAqdnN0 YXRlKQogICogc3VjY2Vzc2Z1bGx5LgogICovCiBzdGF0aWMgYm9vbAotX2J0X21hcmtfcGFn ZV9oYWxmZGVhZChSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVmLCBCVFN0YWNrIHN0YWNr KQorX2J0X21hcmtfcGFnZV9oYWxmZGVhZChSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVm LCBCVFN0YWNrIHN0YWNrLCBSZWxhdGlvbiBoZWFwcmVsKQogewogCUJsb2NrTnVtYmVyIGxl YWZibGtubzsKIAlCbG9ja051bWJlciBsZWFmcmlnaHRzaWI7CkBAIC0yMTE5LDcgKzIxMjYs NyBAQCBfYnRfbWFya19wYWdlX2hhbGZkZWFkKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxlYWZi dWYsIEJUU3RhY2sgc3RhY2spCiAJICogZGVsZXRlIHRoZSBkb3dubGluay4gIEl0IHdvdWxk IGZhaWwgdGhlICJyaWdodCBzaWJsaW5nIG9mIHRhcmdldCBwYWdlCiAJICogaXMgYWxzbyB0 aGUgbmV4dCBjaGlsZCBpbiBwYXJlbnQgcGFnZSIgY3Jvc3MtY2hlY2sgYmVsb3cuCiAJICov Ci0JaWYgKF9idF9yaWdodHNpYl9oYWxmZGVhZGZsYWcocmVsLCBsZWFmcmlnaHRzaWIpKQor CWlmIChfYnRfcmlnaHRzaWJfaGFsZmRlYWRmbGFnKHJlbCwgbGVhZnJpZ2h0c2liLCBoZWFw cmVsKSkKIAl7CiAJCWVsb2coREVCVUcxLCAiY291bGQgbm90IGRlbGV0ZSBwYWdlICV1IGJl Y2F1c2UgaXRzIHJpZ2h0IHNpYmxpbmcgJXUgaXMgaGFsZi1kZWFkIiwKIAkJCSBsZWFmYmxr bm8sIGxlYWZyaWdodHNpYik7CkBAIC0yMTQ1LDcgKzIxNTIsNyBAQCBfYnRfbWFya19wYWdl X2hhbGZkZWFkKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxlYWZidWYsIEJUU3RhY2sgc3RhY2sp CiAJdG9wcGFyZW50cmlnaHRzaWIgPSBsZWFmcmlnaHRzaWI7CiAJaWYgKCFfYnRfbG9ja19z dWJ0cmVlX3BhcmVudChyZWwsIGxlYWZibGtubywgc3RhY2ssCiAJCQkJCQkJCSAmc3VidHJl ZXBhcmVudCwgJnBvZmZzZXQsCi0JCQkJCQkJCSAmdG9wcGFyZW50LCAmdG9wcGFyZW50cmln aHRzaWIpKQorCQkJCQkJCQkgJnRvcHBhcmVudCwgJnRvcHBhcmVudHJpZ2h0c2liLCBoZWFw cmVsKSkKIAkJcmV0dXJuIGZhbHNlOwogCiAJLyoKQEAgLTIzNjMsNyArMjM3MCw3IEBAIF9i dF91bmxpbmtfaGFsZmRlYWRfcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVmLCBC bG9ja051bWJlciBzY2FuYmxrbm8sCiAJCUFzc2VydCh0YXJnZXQgIT0gbGVhZmJsa25vKTsK IAogCQkvKiBGZXRjaCB0aGUgYmxvY2sgbnVtYmVyIG9mIHRoZSB0YXJnZXQncyBsZWZ0IHNp YmxpbmcgKi8KLQkJYnVmID0gX2J0X2dldGJ1ZihyZWwsIHRhcmdldCwgQlRfUkVBRCk7CisJ CWJ1ZiA9IF9idF9nZXRidWYocmVsLCB0YXJnZXQsIEJUX1JFQUQsIHZzdGF0ZS0+aW5mby0+ aGVhcHJlbCk7CiAJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1Zik7CiAJCW9wYXF1ZSA9IEJU UGFnZUdldE9wYXF1ZShwYWdlKTsKIAkJbGVmdHNpYiA9IG9wYXF1ZS0+YnRwb19wcmV2OwpA QCAtMjM5MCw3ICsyMzk3LDcgQEAgX2J0X3VubGlua19oYWxmZGVhZF9wYWdlKFJlbGF0aW9u IHJlbCwgQnVmZmVyIGxlYWZidWYsIEJsb2NrTnVtYmVyIHNjYW5ibGtubywKIAkJX2J0X2xv Y2tidWYocmVsLCBsZWFmYnVmLCBCVF9XUklURSk7CiAJaWYgKGxlZnRzaWIgIT0gUF9OT05F KQogCXsKLQkJbGJ1ZiA9IF9idF9nZXRidWYocmVsLCBsZWZ0c2liLCBCVF9XUklURSk7CisJ CWxidWYgPSBfYnRfZ2V0YnVmKHJlbCwgbGVmdHNpYiwgQlRfV1JJVEUsIHZzdGF0ZS0+aW5m by0+aGVhcHJlbCk7CiAJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGxidWYpOwogCQlvcGFxdWUg PSBCVFBhZ2VHZXRPcGFxdWUocGFnZSk7CiAJCXdoaWxlIChQX0lTREVMRVRFRChvcGFxdWUp IHx8IG9wYXF1ZS0+YnRwb19uZXh0ICE9IHRhcmdldCkKQEAgLTI0NDAsNyArMjQ0Nyw3IEBA IF9idF91bmxpbmtfaGFsZmRlYWRfcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVm LCBCbG9ja051bWJlciBzY2FuYmxrbm8sCiAJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwog CiAJCQkvKiBzdGVwIHJpZ2h0IG9uZSBwYWdlICovCi0JCQlsYnVmID0gX2J0X2dldGJ1Zihy ZWwsIGxlZnRzaWIsIEJUX1dSSVRFKTsKKwkJCWxidWYgPSBfYnRfZ2V0YnVmKHJlbCwgbGVm dHNpYiwgQlRfV1JJVEUsIHZzdGF0ZS0+aW5mby0+aGVhcHJlbCk7CiAJCQlwYWdlID0gQnVm ZmVyR2V0UGFnZShsYnVmKTsKIAkJCW9wYXF1ZSA9IEJUUGFnZUdldE9wYXF1ZShwYWdlKTsK IAkJfQpAQCAtMjUwNCw3ICsyNTExLDcgQEAgX2J0X3VubGlua19oYWxmZGVhZF9wYWdlKFJl bGF0aW9uIHJlbCwgQnVmZmVyIGxlYWZidWYsIEJsb2NrTnVtYmVyIHNjYW5ibGtubywKIAkg KiBBbmQgbmV4dCB3cml0ZS1sb2NrIHRoZSAoY3VycmVudCkgcmlnaHQgc2libGluZy4KIAkg Ki8KIAlyaWdodHNpYiA9IG9wYXF1ZS0+YnRwb19uZXh0OwotCXJidWYgPSBfYnRfZ2V0YnVm KHJlbCwgcmlnaHRzaWIsIEJUX1dSSVRFKTsKKwlyYnVmID0gX2J0X2dldGJ1ZihyZWwsIHJp Z2h0c2liLCBCVF9XUklURSwgdnN0YXRlLT5pbmZvLT5oZWFwcmVsKTsKIAlwYWdlID0gQnVm ZmVyR2V0UGFnZShyYnVmKTsKIAlvcGFxdWUgPSBCVFBhZ2VHZXRPcGFxdWUocGFnZSk7CiAJ aWYgKG9wYXF1ZS0+YnRwb19wcmV2ICE9IHRhcmdldCkKQEAgLTI1MzMsNyArMjU0MCw4IEBA IF9idF91bmxpbmtfaGFsZmRlYWRfcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVm LCBCbG9ja051bWJlciBzY2FuYmxrbm8sCiAJCWlmIChQX1JJR0hUTU9TVChvcGFxdWUpKQog CQl7CiAJCQkvKiByaWdodHNpYiB3aWxsIGJlIHRoZSBvbmx5IG9uZSBsZWZ0IG9uIHRoZSBs ZXZlbCAqLwotCQkJbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFHRSwg QlRfV1JJVEUpOworCQkJbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFH RSwgQlRfV1JJVEUsCisJCQkJCQkJCSB2c3RhdGUtPmluZm8tPmhlYXByZWwpOwogCQkJbWV0 YXBnID0gQnVmZmVyR2V0UGFnZShtZXRhYnVmKTsKIAkJCW1ldGFkID0gQlRQYWdlR2V0TWV0 YShtZXRhcGcpOwogCkBAIC0yNzc1LDcgKzI3ODMsOCBAQCBfYnRfdW5saW5rX2hhbGZkZWFk X3BhZ2UoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGVhZmJ1ZiwgQmxvY2tOdW1iZXIgc2NhbmJs a25vLAogc3RhdGljIGJvb2wKIF9idF9sb2NrX3N1YnRyZWVfcGFyZW50KFJlbGF0aW9uIHJl bCwgQmxvY2tOdW1iZXIgY2hpbGQsIEJUU3RhY2sgc3RhY2ssCiAJCQkJCQlCdWZmZXIgKnN1 YnRyZWVwYXJlbnQsIE9mZnNldE51bWJlciAqcG9mZnNldCwKLQkJCQkJCUJsb2NrTnVtYmVy ICp0b3BwYXJlbnQsIEJsb2NrTnVtYmVyICp0b3BwYXJlbnRyaWdodHNpYikKKwkJCQkJCUJs b2NrTnVtYmVyICp0b3BwYXJlbnQsIEJsb2NrTnVtYmVyICp0b3BwYXJlbnRyaWdodHNpYiwK KwkJCQkJCVJlbGF0aW9uIGhlYXByZWwpCiB7CiAJQmxvY2tOdW1iZXIgcGFyZW50LAogCQkJ CWxlZnRzaWJwYXJlbnQ7CkBAIC0yNzg5LDcgKzI3OTgsNyBAQCBfYnRfbG9ja19zdWJ0cmVl X3BhcmVudChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGNoaWxkLCBCVFN0YWNrIHN0YWNr LAogCSAqIExvY2F0ZSB0aGUgcGl2b3QgdHVwbGUgd2hvc2UgZG93bmxpbmsgcG9pbnRzIHRv ICJjaGlsZCIuICBXcml0ZSBsb2NrCiAJICogdGhlIHBhcmVudCBwYWdlIGl0c2VsZi4KIAkg Ki8KLQlwYnVmID0gX2J0X2dldHN0YWNrYnVmKHJlbCwgc3RhY2ssIGNoaWxkKTsKKwlwYnVm ID0gX2J0X2dldHN0YWNrYnVmKHJlbCwgc3RhY2ssIGNoaWxkLCBoZWFwcmVsKTsKIAlpZiAo cGJ1ZiA9PSBJbnZhbGlkQnVmZmVyKQogCXsKIAkJLyoKQEAgLTI4ODksMTMgKzI4OTgsMTMg QEAgX2J0X2xvY2tfc3VidHJlZV9wYXJlbnQoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBj aGlsZCwgQlRTdGFjayBzdGFjaywKIAkgKgogCSAqIE5vdGU6IFdlIGRlbGliZXJhdGVseSBh dm9pZCBjb21wbGV0aW5nIGluY29tcGxldGUgc3BsaXRzIGhlcmUuCiAJICovCi0JaWYgKF9i dF9sZWZ0c2liX3NwbGl0ZmxhZyhyZWwsIGxlZnRzaWJwYXJlbnQsIHBhcmVudCkpCisJaWYg KF9idF9sZWZ0c2liX3NwbGl0ZmxhZyhyZWwsIGxlZnRzaWJwYXJlbnQsIHBhcmVudCwgaGVh cHJlbCkpCiAJCXJldHVybiBmYWxzZTsKIAogCS8qIFJlY3Vyc2UgdG8gZXhhbWluZSBjaGls ZCBwYWdlJ3MgZ3JhbmRwYXJlbnQgcGFnZSAqLwogCXJldHVybiBfYnRfbG9ja19zdWJ0cmVl X3BhcmVudChyZWwsIHBhcmVudCwgc3RhY2stPmJ0c19wYXJlbnQsCiAJCQkJCQkJCSAgIHN1 YnRyZWVwYXJlbnQsIHBvZmZzZXQsCi0JCQkJCQkJCSAgIHRvcHBhcmVudCwgdG9wcGFyZW50 cmlnaHRzaWIpOworCQkJCQkJCQkgICB0b3BwYXJlbnQsIHRvcHBhcmVudHJpZ2h0c2liLCBo ZWFwcmVsKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRy ZWUvbmJ0cmVlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlZS5jCmluZGV4 IDFjYzg4ZGEwMzIuLjcwNTcxNmUzMzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9uYnRyZWUvbmJ0cmVlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRy ZWUuYwpAQCAtODM0LDcgKzgzNCw3IEBAIGJ0dmFjdXVtY2xlYW51cChJbmRleFZhY3V1bUlu Zm8gKmluZm8sIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RhdHMpCiAJaWYgKHN0YXRzID09 IE5VTEwpCiAJewogCQkvKiBDaGVjayBpZiBWQUNVVU0gb3BlcmF0aW9uIGNhbiBlbnRpcmVs eSBhdm9pZCBidHZhY3V1bXNjYW4oKSBjYWxsICovCi0JCWlmICghX2J0X3ZhY3V1bV9uZWVk c19jbGVhbnVwKGluZm8tPmluZGV4KSkKKwkJaWYgKCFfYnRfdmFjdXVtX25lZWRzX2NsZWFu dXAoaW5mby0+aW5kZXgsIGluZm8tPmhlYXByZWwpKQogCQkJcmV0dXJuIE5VTEw7CiAKIAkJ LyoKQEAgLTg3MCw3ICs4NzAsNyBAQCBidHZhY3V1bWNsZWFudXAoSW5kZXhWYWN1dW1JbmZv ICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzKQogCSAqLwogCUFzc2VydChz dGF0cy0+cGFnZXNfZGVsZXRlZCA+PSBzdGF0cy0+cGFnZXNfZnJlZSk7CiAJbnVtX2RlbHBh Z2VzID0gc3RhdHMtPnBhZ2VzX2RlbGV0ZWQgLSBzdGF0cy0+cGFnZXNfZnJlZTsKLQlfYnRf c2V0X2NsZWFudXBfaW5mbyhpbmZvLT5pbmRleCwgbnVtX2RlbHBhZ2VzKTsKKwlfYnRfc2V0 X2NsZWFudXBfaW5mbyhpbmZvLT5pbmRleCwgbnVtX2RlbHBhZ2VzLCBpbmZvLT5oZWFwcmVs KTsKIAogCS8qCiAJICogSXQncyBxdWl0ZSBwb3NzaWJsZSBmb3IgdXMgdG8gYmUgZm9vbGVk IGJ5IGNvbmN1cnJlbnQgcGFnZSBzcGxpdHMgaW50bwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL25idHJlZS9uYnRzZWFyY2guYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRy ZWUvbmJ0c2VhcmNoLmMKaW5kZXggYzQzYzFhMjgzMC4uNjQ2NmZlMmY1OCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzZWFyY2guYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNlYXJjaC5jCkBAIC00Miw3ICs0Miw3IEBAIHN0YXRp YyBib29sIF9idF9zdGVwcGFnZShJbmRleFNjYW5EZXNjIHNjYW4sIFNjYW5EaXJlY3Rpb24g ZGlyKTsKIHN0YXRpYyBib29sIF9idF9yZWFkbmV4dHBhZ2UoSW5kZXhTY2FuRGVzYyBzY2Fu LCBCbG9ja051bWJlciBibGtubywgU2NhbkRpcmVjdGlvbiBkaXIpOwogc3RhdGljIGJvb2wg X2J0X3BhcmFsbGVsX3JlYWRwYWdlKEluZGV4U2NhbkRlc2Mgc2NhbiwgQmxvY2tOdW1iZXIg Ymxrbm8sCiAJCQkJCQkJCSAgU2NhbkRpcmVjdGlvbiBkaXIpOwotc3RhdGljIEJ1ZmZlciBf YnRfd2Fsa19sZWZ0KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwgU25hcHNob3Qgc25hcHNo b3QpOworc3RhdGljIEJ1ZmZlciBfYnRfd2Fsa19sZWZ0KFJlbGF0aW9uIHJlbCwgQnVmZmVy IGJ1ZiwgU25hcHNob3Qgc25hcHNob3QsIFJlbGF0aW9uIGhlYXByZWwpOwogc3RhdGljIGJv b2wgX2J0X2VuZHBvaW50KEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIp Owogc3RhdGljIGlubGluZSB2b2lkIF9idF9pbml0aWFsaXplX21vcmVfZGF0YShCVFNjYW5P cGFxdWUgc28sIFNjYW5EaXJlY3Rpb24gZGlyKTsKIApAQCAtOTQsMTMgKzk0LDEzIEBAIF9i dF9kcm9wX2xvY2tfYW5kX21heWJlX3BpbihJbmRleFNjYW5EZXNjIHNjYW4sIEJUU2NhblBv cyBzcCkKICAqLwogQlRTdGFjawogX2J0X3NlYXJjaChSZWxhdGlvbiByZWwsIEJUU2Nhbklu c2VydCBrZXksIEJ1ZmZlciAqYnVmUCwgaW50IGFjY2VzcywKLQkJICAgU25hcHNob3Qgc25h cHNob3QpCisJCSAgIFNuYXBzaG90IHNuYXBzaG90LCBSZWxhdGlvbiBoZWFwcmVsKQogewog CUJUU3RhY2sJCXN0YWNrX2luID0gTlVMTDsKIAlpbnQJCQlwYWdlX2FjY2VzcyA9IEJUX1JF QUQ7CiAKIAkvKiBHZXQgdGhlIHJvb3QgcGFnZSB0byBzdGFydCB3aXRoICovCi0JKmJ1ZlAg PSBfYnRfZ2V0cm9vdChyZWwsIGFjY2Vzcyk7CisJKmJ1ZlAgPSBfYnRfZ2V0cm9vdChyZWws IGFjY2VzcywgaGVhcHJlbCk7CiAKIAkvKiBJZiBpbmRleCBpcyBlbXB0eSBhbmQgYWNjZXNz ID0gQlRfUkVBRCwgbm8gcm9vdCBwYWdlIGlzIGNyZWF0ZWQuICovCiAJaWYgKCFCdWZmZXJJ c1ZhbGlkKCpidWZQKSkKQEAgLTEzMCw3ICsxMzAsNyBAQCBfYnRfc2VhcmNoKFJlbGF0aW9u IHJlbCwgQlRTY2FuSW5zZXJ0IGtleSwgQnVmZmVyICpidWZQLCBpbnQgYWNjZXNzLAogCQkg KiBvcHBvcnR1bml0eSB0byBmaW5pc2ggc3BsaXRzIG9mIGludGVybmFsIHBhZ2VzIHRvby4K IAkJICovCiAJCSpidWZQID0gX2J0X21vdmVyaWdodChyZWwsIGtleSwgKmJ1ZlAsIChhY2Nl c3MgPT0gQlRfV1JJVEUpLCBzdGFja19pbiwKLQkJCQkJCQkgIHBhZ2VfYWNjZXNzLCBzbmFw c2hvdCk7CisJCQkJCQkJICBwYWdlX2FjY2Vzcywgc25hcHNob3QsIGhlYXByZWwpOwogCiAJ CS8qIGlmIHRoaXMgaXMgYSBsZWFmIHBhZ2UsIHdlJ3JlIGRvbmUgKi8KIAkJcGFnZSA9IEJ1 ZmZlckdldFBhZ2UoKmJ1ZlApOwpAQCAtMTkxLDcgKzE5MSw3IEBAIF9idF9zZWFyY2goUmVs YXRpb24gcmVsLCBCVFNjYW5JbnNlcnQga2V5LCBCdWZmZXIgKmJ1ZlAsIGludCBhY2Nlc3Ms CiAJCSAqIG1vdmUgcmlnaHQgdG8gaXRzIG5ldyBzaWJsaW5nLiAgRG8gdGhhdC4KIAkJICov CiAJCSpidWZQID0gX2J0X21vdmVyaWdodChyZWwsIGtleSwgKmJ1ZlAsIHRydWUsIHN0YWNr X2luLCBCVF9XUklURSwKLQkJCQkJCQkgIHNuYXBzaG90KTsKKwkJCQkJCQkgIHNuYXBzaG90 LCBoZWFwcmVsKTsKIAl9CiAKIAlyZXR1cm4gc3RhY2tfaW47CkBAIC0yMzksNyArMjM5LDgg QEAgX2J0X21vdmVyaWdodChSZWxhdGlvbiByZWwsCiAJCQkgIGJvb2wgZm9ydXBkYXRlLAog CQkJICBCVFN0YWNrIHN0YWNrLAogCQkJICBpbnQgYWNjZXNzLAotCQkJICBTbmFwc2hvdCBz bmFwc2hvdCkKKwkJCSAgU25hcHNob3Qgc25hcHNob3QsCisJCQkgIFJlbGF0aW9uIGhlYXBy ZWwpCiB7CiAJUGFnZQkJcGFnZTsKIAlCVFBhZ2VPcGFxdWUgb3BhcXVlOwpAQCAtMjg4LDEy ICsyODksMTIgQEAgX2J0X21vdmVyaWdodChSZWxhdGlvbiByZWwsCiAJCQl9CiAKIAkJCWlm IChQX0lOQ09NUExFVEVfU1BMSVQob3BhcXVlKSkKLQkJCQlfYnRfZmluaXNoX3NwbGl0KHJl bCwgYnVmLCBzdGFjayk7CisJCQkJX2J0X2ZpbmlzaF9zcGxpdChyZWwsIGJ1Ziwgc3RhY2ss IGhlYXByZWwpOwogCQkJZWxzZQogCQkJCV9idF9yZWxidWYocmVsLCBidWYpOwogCiAJCQkv KiByZS1hY3F1aXJlIHRoZSBsb2NrIGluIHRoZSByaWdodCBtb2RlLCBhbmQgcmUtY2hlY2sg Ki8KLQkJCWJ1ZiA9IF9idF9nZXRidWYocmVsLCBibGtubywgYWNjZXNzKTsKKwkJCWJ1ZiA9 IF9idF9nZXRidWYocmVsLCBibGtubywgYWNjZXNzLCBoZWFwcmVsKTsKIAkJCWNvbnRpbnVl OwogCQl9CiAKQEAgLTg2MCw2ICs4NjEsNyBAQCBib29sCiBfYnRfZmlyc3QoSW5kZXhTY2Fu RGVzYyBzY2FuLCBTY2FuRGlyZWN0aW9uIGRpcikKIHsKIAlSZWxhdGlvbglyZWwgPSBzY2Fu LT5pbmRleFJlbGF0aW9uOworCVJlbGF0aW9uIAloZWFwcmVsID0gc2Nhbi0+aGVhcFJlbGF0 aW9uOwogCUJUU2Nhbk9wYXF1ZSBzbyA9IChCVFNjYW5PcGFxdWUpIHNjYW4tPm9wYXF1ZTsK IAlCdWZmZXIJCWJ1ZjsKIAlCVFN0YWNrCQlzdGFjazsKQEAgLTEzNTIsNyArMTM1NCw3IEBA IF9idF9maXJzdChJbmRleFNjYW5EZXNjIHNjYW4sIFNjYW5EaXJlY3Rpb24gZGlyKQogCX0K IAogCS8qIEluaXRpYWxpemUgcmVtYWluaW5nIGluc2VydGlvbiBzY2FuIGtleSBmaWVsZHMg Ki8KLQlfYnRfbWV0YXZlcnNpb24ocmVsLCAmaW5za2V5LmhlYXBrZXlzcGFjZSwgJmluc2tl eS5hbGxlcXVhbGltYWdlKTsKKwlfYnRfbWV0YXZlcnNpb24ocmVsLCAmaW5za2V5LmhlYXBr ZXlzcGFjZSwgJmluc2tleS5hbGxlcXVhbGltYWdlLCBoZWFwcmVsKTsKIAlpbnNrZXkuYW55 bnVsbGtleXMgPSBmYWxzZTsgLyogdW51c2VkICovCiAJaW5za2V5Lm5leHRrZXkgPSBuZXh0 a2V5OwogCWluc2tleS5waXZvdHNlYXJjaCA9IGZhbHNlOwpAQCAtMTM2Myw3ICsxMzY1LDcg QEAgX2J0X2ZpcnN0KEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpCiAJ ICogVXNlIHRoZSBtYW51ZmFjdHVyZWQgaW5zZXJ0aW9uIHNjYW4ga2V5IHRvIGRlc2NlbmQg dGhlIHRyZWUgYW5kCiAJICogcG9zaXRpb24gb3Vyc2VsdmVzIG9uIHRoZSB0YXJnZXQgbGVh ZiBwYWdlLgogCSAqLwotCXN0YWNrID0gX2J0X3NlYXJjaChyZWwsICZpbnNrZXksICZidWYs IEJUX1JFQUQsIHNjYW4tPnhzX3NuYXBzaG90KTsKKwlzdGFjayA9IF9idF9zZWFyY2gocmVs LCAmaW5za2V5LCAmYnVmLCBCVF9SRUFELCBzY2FuLT54c19zbmFwc2hvdCwgaGVhcHJlbCk7 CiAKIAkvKiBkb24ndCBuZWVkIHRvIGtlZXAgdGhlIHN0YWNrIGFyb3VuZC4uLiAqLwogCV9i dF9mcmVlc3RhY2soc3RhY2spOwpAQCAtMjAwNCw3ICsyMDA2LDcgQEAgX2J0X3JlYWRuZXh0 cGFnZShJbmRleFNjYW5EZXNjIHNjYW4sIEJsb2NrTnVtYmVyIGJsa25vLCBTY2FuRGlyZWN0 aW9uIGRpcikKIAkJCS8qIGNoZWNrIGZvciBpbnRlcnJ1cHRzIHdoaWxlIHdlJ3JlIG5vdCBo b2xkaW5nIGFueSBidWZmZXIgbG9jayAqLwogCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsK IAkJCS8qIHN0ZXAgcmlnaHQgb25lIHBhZ2UgKi8KLQkJCXNvLT5jdXJyUG9zLmJ1ZiA9IF9i dF9nZXRidWYocmVsLCBibGtubywgQlRfUkVBRCk7CisJCQlzby0+Y3VyclBvcy5idWYgPSBf YnRfZ2V0YnVmKHJlbCwgYmxrbm8sIEJUX1JFQUQsIHNjYW4tPmhlYXBSZWxhdGlvbik7CiAJ CQlwYWdlID0gQnVmZmVyR2V0UGFnZShzby0+Y3VyclBvcy5idWYpOwogCQkJVGVzdEZvck9s ZFNuYXBzaG90KHNjYW4tPnhzX3NuYXBzaG90LCByZWwsIHBhZ2UpOwogCQkJb3BhcXVlID0g QlRQYWdlR2V0T3BhcXVlKHBhZ2UpOwpAQCAtMjA3OCw3ICsyMDgwLDggQEAgX2J0X3JlYWRu ZXh0cGFnZShJbmRleFNjYW5EZXNjIHNjYW4sIEJsb2NrTnVtYmVyIGJsa25vLCBTY2FuRGly ZWN0aW9uIGRpcikKIAkJaWYgKEJUU2NhblBvc0lzUGlubmVkKHNvLT5jdXJyUG9zKSkKIAkJ CV9idF9sb2NrYnVmKHJlbCwgc28tPmN1cnJQb3MuYnVmLCBCVF9SRUFEKTsKIAkJZWxzZQot CQkJc28tPmN1cnJQb3MuYnVmID0gX2J0X2dldGJ1ZihyZWwsIHNvLT5jdXJyUG9zLmN1cnJQ YWdlLCBCVF9SRUFEKTsKKwkJCXNvLT5jdXJyUG9zLmJ1ZiA9IF9idF9nZXRidWYocmVsLCBz by0+Y3VyclBvcy5jdXJyUGFnZSwgQlRfUkVBRCwKKwkJCQkJCQkJCQkgc2Nhbi0+aGVhcFJl bGF0aW9uKTsKIAogCQlmb3IgKDs7KQogCQl7CkBAIC0yMDkzLDcgKzIwOTYsNyBAQCBfYnRf cmVhZG5leHRwYWdlKEluZGV4U2NhbkRlc2Mgc2NhbiwgQmxvY2tOdW1iZXIgYmxrbm8sIFNj YW5EaXJlY3Rpb24gZGlyKQogCiAJCQkvKiBTdGVwIHRvIG5leHQgcGh5c2ljYWwgcGFnZSAq LwogCQkJc28tPmN1cnJQb3MuYnVmID0gX2J0X3dhbGtfbGVmdChyZWwsIHNvLT5jdXJyUG9z LmJ1ZiwKLQkJCQkJCQkJCQkJc2Nhbi0+eHNfc25hcHNob3QpOworCQkJCQkJCQkJCQlzY2Fu LT54c19zbmFwc2hvdCwgc2Nhbi0+aGVhcFJlbGF0aW9uKTsKIAogCQkJLyogaWYgd2UncmUg cGh5c2ljYWxseSBhdCBlbmQgb2YgaW5kZXgsIHJldHVybiBmYWlsdXJlICovCiAJCQlpZiAo c28tPmN1cnJQb3MuYnVmID09IEludmFsaWRCdWZmZXIpCkBAIC0yMTQwLDcgKzIxNDMsOCBA QCBfYnRfcmVhZG5leHRwYWdlKEluZGV4U2NhbkRlc2Mgc2NhbiwgQmxvY2tOdW1iZXIgYmxr bm8sIFNjYW5EaXJlY3Rpb24gZGlyKQogCQkJCQlCVFNjYW5Qb3NJbnZhbGlkYXRlKHNvLT5j dXJyUG9zKTsKIAkJCQkJcmV0dXJuIGZhbHNlOwogCQkJCX0KLQkJCQlzby0+Y3VyclBvcy5i dWYgPSBfYnRfZ2V0YnVmKHJlbCwgYmxrbm8sIEJUX1JFQUQpOworCQkJCXNvLT5jdXJyUG9z LmJ1ZiA9IF9idF9nZXRidWYocmVsLCBibGtubywgQlRfUkVBRCwKKwkJCQkJCQkJCQkJIHNj YW4tPmhlYXBSZWxhdGlvbik7CiAJCQl9CiAJCX0KIAl9CkBAIC0yMTg1LDcgKzIxODksNyBA QCBfYnRfcGFyYWxsZWxfcmVhZHBhZ2UoSW5kZXhTY2FuRGVzYyBzY2FuLCBCbG9ja051bWJl ciBibGtubywgU2NhbkRpcmVjdGlvbiBkaXIpCiAgKiBhZ2FpbiBpZiBpdCdzIGltcG9ydGFu dC4KICAqLwogc3RhdGljIEJ1ZmZlcgotX2J0X3dhbGtfbGVmdChSZWxhdGlvbiByZWwsIEJ1 ZmZlciBidWYsIFNuYXBzaG90IHNuYXBzaG90KQorX2J0X3dhbGtfbGVmdChSZWxhdGlvbiBy ZWwsIEJ1ZmZlciBidWYsIFNuYXBzaG90IHNuYXBzaG90LCBSZWxhdGlvbiBoZWFwcmVsKQog ewogCVBhZ2UJCXBhZ2U7CiAJQlRQYWdlT3BhcXVlIG9wYXF1ZTsKQEAgLTIyMTMsNyArMjIx Nyw3IEBAIF9idF93YWxrX2xlZnQoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLCBTbmFwc2hv dCBzbmFwc2hvdCkKIAkJX2J0X3JlbGJ1ZihyZWwsIGJ1Zik7CiAJCS8qIGNoZWNrIGZvciBp bnRlcnJ1cHRzIHdoaWxlIHdlJ3JlIG5vdCBob2xkaW5nIGFueSBidWZmZXIgbG9jayAqLwog CQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwotCQlidWYgPSBfYnRfZ2V0YnVmKHJlbCwgYmxr bm8sIEJUX1JFQUQpOworCQlidWYgPSBfYnRfZ2V0YnVmKHJlbCwgYmxrbm8sIEJUX1JFQUQs IGhlYXByZWwpOwogCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWYpOwogCQlUZXN0Rm9yT2xk U25hcHNob3Qoc25hcHNob3QsIHJlbCwgcGFnZSk7CiAJCW9wYXF1ZSA9IEJUUGFnZUdldE9w YXF1ZShwYWdlKTsKQEAgLTIzMDUsNyArMjMwOSw3IEBAIF9idF93YWxrX2xlZnQoUmVsYXRp b24gcmVsLCBCdWZmZXIgYnVmLCBTbmFwc2hvdCBzbmFwc2hvdCkKICAqLwogQnVmZmVyCiBf YnRfZ2V0X2VuZHBvaW50KFJlbGF0aW9uIHJlbCwgdWludDMyIGxldmVsLCBib29sIHJpZ2h0 bW9zdCwKLQkJCQkgU25hcHNob3Qgc25hcHNob3QpCisJCQkJIFNuYXBzaG90IHNuYXBzaG90 LCBSZWxhdGlvbiBoZWFwcmVsKQogewogCUJ1ZmZlcgkJYnVmOwogCVBhZ2UJCXBhZ2U7CkBA IC0yMzIwLDkgKzIzMjQsOSBAQCBfYnRfZ2V0X2VuZHBvaW50KFJlbGF0aW9uIHJlbCwgdWlu dDMyIGxldmVsLCBib29sIHJpZ2h0bW9zdCwKIAkgKiBzbWFydGVyIGFib3V0IGludGVybWVk aWF0ZSBsZXZlbHMuKQogCSAqLwogCWlmIChsZXZlbCA9PSAwKQotCQlidWYgPSBfYnRfZ2V0 cm9vdChyZWwsIEJUX1JFQUQpOworCQlidWYgPSBfYnRfZ2V0cm9vdChyZWwsIEJUX1JFQUQs IGhlYXByZWwpOwogCWVsc2UKLQkJYnVmID0gX2J0X2dldHRydWVyb290KHJlbCk7CisJCWJ1 ZiA9IF9idF9nZXR0cnVlcm9vdChyZWwsIGhlYXByZWwpOwogCiAJaWYgKCFCdWZmZXJJc1Zh bGlkKGJ1ZikpCiAJCXJldHVybiBJbnZhbGlkQnVmZmVyOwpAQCAtMjQwMyw3ICsyNDA3LDgg QEAgX2J0X2VuZHBvaW50KEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIp CiAJICogdmVyc2lvbiBvZiBfYnRfc2VhcmNoKCkuICBXZSBkb24ndCBtYWludGFpbiBhIHN0 YWNrIHNpbmNlIHdlIGtub3cgd2UKIAkgKiB3b24ndCBuZWVkIGl0LgogCSAqLwotCWJ1ZiA9 IF9idF9nZXRfZW5kcG9pbnQocmVsLCAwLCBTY2FuRGlyZWN0aW9uSXNCYWNrd2FyZChkaXIp LCBzY2FuLT54c19zbmFwc2hvdCk7CisJYnVmID0gX2J0X2dldF9lbmRwb2ludChyZWwsIDAs IFNjYW5EaXJlY3Rpb25Jc0JhY2t3YXJkKGRpciksIHNjYW4tPnhzX3NuYXBzaG90LAorCQkJ CQkJICAgc2Nhbi0+aGVhcFJlbGF0aW9uKTsKIAogCWlmICghQnVmZmVySXNWYWxpZChidWYp KQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKaW5kZXggNjdiN2IxNzEw Yy4uNTQyMDI5ZWVjNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRzb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKQEAg LTU2Niw3ICs1NjYsNyBAQCBfYnRfbGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bv b2wgKmJ0c3Bvb2wyKQogCiAJd3N0YXRlLmhlYXAgPSBidHNwb29sLT5oZWFwOwogCXdzdGF0 ZS5pbmRleCA9IGJ0c3Bvb2wtPmluZGV4OwotCXdzdGF0ZS5pbnNrZXkgPSBfYnRfbWtzY2Fu a2V5KHdzdGF0ZS5pbmRleCwgTlVMTCk7CisJd3N0YXRlLmluc2tleSA9IF9idF9ta3NjYW5r ZXkod3N0YXRlLmluZGV4LCBOVUxMLCBidHNwb29sLT5oZWFwKTsKIAkvKiBfYnRfbWtzY2Fu a2V5KCkgd29uJ3Qgc2V0IGFsbGVxdWFsaW1hZ2Ugd2l0aG91dCBtZXRhcGFnZSAqLwogCXdz dGF0ZS5pbnNrZXktPmFsbGVxdWFsaW1hZ2UgPSBfYnRfYWxsZXF1YWxpbWFnZSh3c3RhdGUu aW5kZXgsIHRydWUpOwogCXdzdGF0ZS5idHdzX3VzZV93YWwgPSBSZWxhdGlvbk5lZWRzV0FM KHdzdGF0ZS5pbmRleCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idHV0aWxzLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMKaW5k ZXggODAwMzU4M2MwYS4uOWVkZDg1NjM3MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL25idHJlZS9uYnR1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUv bmJ0dXRpbHMuYwpAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgaW50CV9idF9rZWVwX25hdHRz KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwKICAqCQlmaWVsZCB0aGVtc2Vs dmVzLgogICovCiBCVFNjYW5JbnNlcnQKLV9idF9ta3NjYW5rZXkoUmVsYXRpb24gcmVsLCBJ bmRleFR1cGxlIGl0dXApCitfYnRfbWtzY2Fua2V5KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBs ZSBpdHVwLCBSZWxhdGlvbiBoZWFwcmVsKQogewogCUJUU2Nhbkluc2VydCBrZXk7CiAJU2Nh bktleQkJc2tleTsKQEAgLTExMiw3ICsxMTIsNyBAQCBfYnRfbWtzY2Fua2V5KFJlbGF0aW9u IHJlbCwgSW5kZXhUdXBsZSBpdHVwKQogCWtleSA9IHBhbGxvYyhvZmZzZXRvZihCVFNjYW5J bnNlcnREYXRhLCBzY2Fua2V5cykgKwogCQkJCSBzaXplb2YoU2NhbktleURhdGEpICogaW5k bmtleWF0dHMpOwogCWlmIChpdHVwKQotCQlfYnRfbWV0YXZlcnNpb24ocmVsLCAma2V5LT5o ZWFwa2V5c3BhY2UsICZrZXktPmFsbGVxdWFsaW1hZ2UpOworCQlfYnRfbWV0YXZlcnNpb24o cmVsLCAma2V5LT5oZWFwa2V5c3BhY2UsICZrZXktPmFsbGVxdWFsaW1hZ2UsIGhlYXByZWwp OwogCWVsc2UKIAl7CiAJCS8qIFV0aWxpdHkgc3RhdGVtZW50IGNhbGxlcnMgY2FuIHNldCB0 aGVzZSBmaWVsZHMgdGhlbXNlbHZlcyAqLwpAQCAtMTc2MSw3ICsxNzYxLDggQEAgX2J0X2tp bGxpdGVtcyhJbmRleFNjYW5EZXNjIHNjYW4pCiAKIAkJZHJvcHBlZHBpbiA9IHRydWU7CiAJ CS8qIEF0dGVtcHQgdG8gcmUtcmVhZCB0aGUgYnVmZmVyLCBnZXR0aW5nIHBpbiBhbmQgbG9j ay4gKi8KLQkJYnVmID0gX2J0X2dldGJ1ZihzY2FuLT5pbmRleFJlbGF0aW9uLCBzby0+Y3Vy clBvcy5jdXJyUGFnZSwgQlRfUkVBRCk7CisJCWJ1ZiA9IF9idF9nZXRidWYoc2Nhbi0+aW5k ZXhSZWxhdGlvbiwgc28tPmN1cnJQb3MuY3VyclBhZ2UsIEJUX1JFQUQsCisJCQkJCQkgc2Nh bi0+aGVhcFJlbGF0aW9uKTsKIAogCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWYpOwogCQlp ZiAoQnVmZmVyR2V0TFNOQXRvbWljKGJ1ZikgPT0gc28tPmN1cnJQb3MubHNuKQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMKaW5kZXggM2FkYjE4ZjJkOC4uYThmYzIy MTE1MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0u YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCkBAIC00ODks NyArNDg5LDcgQEAgdmFjdXVtTGVhZlJvb3Qoc3BnQnVsa0RlbGV0ZVN0YXRlICpiZHMsIFJl bGF0aW9uIGluZGV4LCBCdWZmZXIgYnVmZmVyKQogICogVW5saWtlIHRoZSByb3V0aW5lcyBh Ym92ZSwgdGhpcyB3b3JrcyBvbiBib3RoIGxlYWYgYW5kIGlubmVyIHBhZ2VzLgogICovCiBz dGF0aWMgdm9pZAotdmFjdXVtUmVkaXJlY3RBbmRQbGFjZWhvbGRlcihSZWxhdGlvbiBpbmRl eCwgQnVmZmVyIGJ1ZmZlcikKK3ZhY3V1bVJlZGlyZWN0QW5kUGxhY2Vob2xkZXIoUmVsYXRp b24gaW5kZXgsIEJ1ZmZlciBidWZmZXIsIFJlbGF0aW9uIGhlYXByZWwpCiB7CiAJUGFnZQkJ cGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKIAlTcEdpc3RQYWdlT3BhcXVlIG9wYXF1 ZSA9IFNwR2lzdFBhZ2VHZXRPcGFxdWUocGFnZSk7CkBAIC01MDMsNiArNTAzLDcgQEAgdmFj dXVtUmVkaXJlY3RBbmRQbGFjZWhvbGRlcihSZWxhdGlvbiBpbmRleCwgQnVmZmVyIGJ1ZmZl cikKIAlzcGd4bG9nVmFjdXVtUmVkaXJlY3QgeGxyZWM7CiAJR2xvYmFsVmlzU3RhdGUgKnZp c3Rlc3Q7CiAKKwl4bHJlYy5pc0NhdGFsb2dSZWwgPSBSZWxhdGlvbklzQWNjZXNzaWJsZUlu TG9naWNhbERlY29kaW5nKGhlYXByZWwpOwogCXhscmVjLm5Ub1BsYWNlaG9sZGVyID0gMDsK IAl4bHJlYy5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IEludmFsaWRUcmFuc2FjdGlvbklk OwogCkBAIC02NDMsMTMgKzY0NCwxMyBAQCBzcGd2YWN1dW1wYWdlKHNwZ0J1bGtEZWxldGVT dGF0ZSAqYmRzLCBCbG9ja051bWJlciBibGtubykKIAkJZWxzZQogCQl7CiAJCQl2YWN1dW1M ZWFmUGFnZShiZHMsIGluZGV4LCBidWZmZXIsIGZhbHNlKTsKLQkJCXZhY3V1bVJlZGlyZWN0 QW5kUGxhY2Vob2xkZXIoaW5kZXgsIGJ1ZmZlcik7CisJCQl2YWN1dW1SZWRpcmVjdEFuZFBs YWNlaG9sZGVyKGluZGV4LCBidWZmZXIsIGJkcy0+aW5mby0+aGVhcHJlbCk7CiAJCX0KIAl9 CiAJZWxzZQogCXsKIAkJLyogaW5uZXIgcGFnZSAqLwotCQl2YWN1dW1SZWRpcmVjdEFuZFBs YWNlaG9sZGVyKGluZGV4LCBidWZmZXIpOworCQl2YWN1dW1SZWRpcmVjdEFuZFBsYWNlaG9s ZGVyKGluZGV4LCBidWZmZXIsIGJkcy0+aW5mby0+aGVhcHJlbCk7CiAJfQogCiAJLyoKQEAg LTcxOSw3ICs3MjAsNyBAQCBzcGdwcm9jZXNzcGVuZGluZyhzcGdCdWxrRGVsZXRlU3RhdGUg KmJkcykKIAkJCS8qIGRlYWwgd2l0aCBhbnkgZGVsZXRhYmxlIHR1cGxlcyAqLwogCQkJdmFj dXVtTGVhZlBhZ2UoYmRzLCBpbmRleCwgYnVmZmVyLCB0cnVlKTsKIAkJCS8qIG1pZ2h0IGFz IHdlbGwgZG8gdGhpcyB3aGlsZSB3ZSBhcmUgaGVyZSAqLwotCQkJdmFjdXVtUmVkaXJlY3RB bmRQbGFjZWhvbGRlcihpbmRleCwgYnVmZmVyKTsKKwkJCXZhY3V1bVJlZGlyZWN0QW5kUGxh Y2Vob2xkZXIoaW5kZXgsIGJ1ZmZlciwgYmRzLT5pbmZvLT5oZWFwcmVsKTsKIAogCQkJU3BH aXN0U2V0TGFzdFVzZWRQYWdlKGluZGV4LCBidWZmZXIpOwogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMK aW5kZXggNDFiMTZjYjg5Yi4uNDhkMWQ2YjUwNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAt MzM1Miw2ICszMzUyLDcgQEAgdmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4 SWQsIFNuYXBzaG90IHNuYXBzaG90KQogCWl2aW5mby5tZXNzYWdlX2xldmVsID0gREVCVUcy OwogCWl2aW5mby5udW1faGVhcF90dXBsZXMgPSBoZWFwUmVsYXRpb24tPnJkX3JlbC0+cmVs dHVwbGVzOwogCWl2aW5mby5zdHJhdGVneSA9IE5VTEw7CisJaXZpbmZvLmhlYXByZWwgPSBo ZWFwUmVsYXRpb247CiAKIAkvKgogCSAqIEVuY29kZSBUSURzIGFzIGludDggdmFsdWVzIGZv ciB0aGUgc29ydCwgcmF0aGVyIHRoYW4gZGlyZWN0bHkgc29ydGluZwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv YW5hbHl6ZS5jCmluZGV4IGM4NmU2OTA5ODAuLjMyMWZjMGQzMWIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9hbmFseXplLmMKQEAgLTcxMiw2ICs3MTIsNyBAQCBkb19hbmFseXplX3JlbChSZWxhdGlv biBvbmVyZWwsIFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCQkJaXZpbmZvLm1lc3NhZ2VfbGV2 ZWwgPSBlbGV2ZWw7CiAJCQlpdmluZm8ubnVtX2hlYXBfdHVwbGVzID0gb25lcmVsLT5yZF9y ZWwtPnJlbHR1cGxlczsKIAkJCWl2aW5mby5zdHJhdGVneSA9IHZhY19zdHJhdGVneTsKKwkJ CWl2aW5mby5oZWFwcmVsID0gb25lcmVsOwogCiAJCQlzdGF0cyA9IGluZGV4X3ZhY3V1bV9j bGVhbnVwKCZpdmluZm8sIE5VTEwpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy92YWN1dW1wYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFy YWxsZWwuYwppbmRleCBiY2Q0MGM4MGExLi4yY2RiZDE4MmI2IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKQEAgLTE0OCw2ICsxNDgsOSBAQCBzdHJ1Y3QgUGFy YWxsZWxWYWN1dW1TdGF0ZQogCS8qIE5VTEwgZm9yIHdvcmtlciBwcm9jZXNzZXMgKi8KIAlQ YXJhbGxlbENvbnRleHQgKnBjeHQ7CiAKKwkvKiBQYXJlbnQgSGVhcCBSZWxhdGlvbiAqLwor CVJlbGF0aW9uCWhlYXByZWw7CisKIAkvKiBUYXJnZXQgaW5kZXhlcyAqLwogCVJlbGF0aW9u ICAgKmluZHJlbHM7CiAJaW50CQkJbmluZGV4ZXM7CkBAIC0yNjYsNiArMjY5LDcgQEAgcGFy YWxsZWxfdmFjdXVtX2luaXQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiAqaW5kcmVscywgaW50 IG5pbmRleGVzLAogCXB2cy0+bmluZGV4ZXMgPSBuaW5kZXhlczsKIAlwdnMtPndpbGxfcGFy YWxsZWxfdmFjdXVtID0gd2lsbF9wYXJhbGxlbF92YWN1dW07CiAJcHZzLT5ic3RyYXRlZ3kg PSBic3RyYXRlZ3k7CisJcHZzLT5oZWFwcmVsID0gcmVsOwogCiAJRW50ZXJQYXJhbGxlbE1v ZGUoKTsKIAlwY3h0ID0gQ3JlYXRlUGFyYWxsZWxDb250ZXh0KCJwb3N0Z3JlcyIsICJwYXJh bGxlbF92YWN1dW1fbWFpbiIsCkBAIC04MzgsNiArODQyLDcgQEAgcGFyYWxsZWxfdmFjdXVt X3Byb2Nlc3Nfb25lX2luZGV4KFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgUmVsYXRpb24g aW5kcmVsLAogCWl2aW5mby5lc3RpbWF0ZWRfY291bnQgPSBwdnMtPnNoYXJlZC0+ZXN0aW1h dGVkX2NvdW50OwogCWl2aW5mby5udW1faGVhcF90dXBsZXMgPSBwdnMtPnNoYXJlZC0+cmVs dHVwbGVzOwogCWl2aW5mby5zdHJhdGVneSA9IHB2cy0+YnN0cmF0ZWd5OworCWl2aW5mby5o ZWFwcmVsID0gcHZzLT5oZWFwcmVsOwogCiAJLyogVXBkYXRlIGVycm9yIHRyYWNlYmFjayBp bmZvcm1hdGlvbiAqLwogCXB2cy0+aW5kbmFtZSA9IHBzdHJkdXAoUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUoaW5kcmVsKSk7CkBAIC0xMDA3LDYgKzEwMTIsNyBAQCBwYXJhbGxlbF92YWN1 dW1fbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJcHZzLmRlYWRfaXRl bXMgPSBkZWFkX2l0ZW1zOwogCXB2cy5yZWxuYW1lc3BhY2UgPSBnZXRfbmFtZXNwYWNlX25h bWUoUmVsYXRpb25HZXROYW1lc3BhY2UocmVsKSk7CiAJcHZzLnJlbG5hbWUgPSBwc3RyZHVw KFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpOworCXB2cy5oZWFwcmVsID0gcmVsOwog CiAJLyogVGhlc2UgZmllbGRzIHdpbGwgYmUgZmlsbGVkIGR1cmluZyBpbmRleCB2YWN1dW0g b3IgY2xlYW51cCAqLwogCXB2cy5pbmRuYW1lID0gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYyBiL3NyYy9iYWNrZW5kL29wdGltaXpl ci91dGlsL3BsYW5jYXQuYwppbmRleCBkNThjNGExMDc4Li5lMzgyNGVmZTliIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKKysrIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jCkBAIC00NjIsNyArNDYyLDcgQEAgZ2V0 X3JlbGF0aW9uX2luZm8oUGxhbm5lckluZm8gKnJvb3QsIE9pZCByZWxhdGlvbk9iamVjdElk LCBib29sIGluaHBhcmVudCwKIAkJCQkJICogRm9yIGJ0cmVlcywgZ2V0IHRyZWUgaGVpZ2h0 IHdoaWxlIHdlIGhhdmUgdGhlIGluZGV4CiAJCQkJCSAqIG9wZW4KIAkJCQkJICovCi0JCQkJ CWluZm8tPnRyZWVfaGVpZ2h0ID0gX2J0X2dldHJvb3RoZWlnaHQoaW5kZXhSZWxhdGlvbik7 CisJCQkJCWluZm8tPnRyZWVfaGVpZ2h0ID0gX2J0X2dldHJvb3RoZWlnaHQoaW5kZXhSZWxh dGlvbiwgcmVsYXRpb24pOwogCQkJCX0KIAkJCQllbHNlCiAJCQkJewpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXNvcnR2YXJpYW50cy5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvc29ydC90dXBsZXNvcnR2YXJpYW50cy5jCmluZGV4IGViNmNmY2ZkMDAuLjdk OWMxYzdlY2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0 dmFyaWFudHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29ydHZhcmlh bnRzLmMKQEAgLTIwOCw3ICsyMDgsOCBAQCBUdXBsZXNvcnRzdGF0ZSAqCiB0dXBsZXNvcnRf YmVnaW5fY2x1c3RlcihUdXBsZURlc2MgdHVwRGVzYywKIAkJCQkJCVJlbGF0aW9uIGluZGV4 UmVsLAogCQkJCQkJaW50IHdvcmtNZW0sCi0JCQkJCQlTb3J0Q29vcmRpbmF0ZSBjb29yZGlu YXRlLCBpbnQgc29ydG9wdCkKKwkJCQkJCVNvcnRDb29yZGluYXRlIGNvb3JkaW5hdGUsIGlu dCBzb3J0b3B0LAorCQkJCQkJUmVsYXRpb24gaGVhcHJlbCkKIHsKIAlUdXBsZXNvcnRzdGF0 ZSAqc3RhdGUgPSB0dXBsZXNvcnRfYmVnaW5fY29tbW9uKHdvcmtNZW0sIGNvb3JkaW5hdGUs CiAJCQkJCQkJCQkJCQkgICBzb3J0b3B0KTsKQEAgLTI2MCw3ICsyNjEsNyBAQCB0dXBsZXNv cnRfYmVnaW5fY2x1c3RlcihUdXBsZURlc2MgdHVwRGVzYywKIAogCWFyZy0+dHVwRGVzYyA9 IHR1cERlc2M7CQkvKiBhc3N1bWUgd2UgbmVlZCBub3QgY29weSB0dXBEZXNjICovCiAKLQlp bmRleFNjYW5LZXkgPSBfYnRfbWtzY2Fua2V5KGluZGV4UmVsLCBOVUxMKTsKKwlpbmRleFNj YW5LZXkgPSBfYnRfbWtzY2Fua2V5KGluZGV4UmVsLCBOVUxMLCBoZWFwcmVsKTsKIAogCWlm IChhcmctPmluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnMgIT0gTlVMTCkKIAl7CkBAIC0zNjEs NyArMzYyLDcgQEAgdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKFJlbGF0aW9uIGhlYXBS ZWwsCiAJYXJnLT5lbmZvcmNlVW5pcXVlID0gZW5mb3JjZVVuaXF1ZTsKIAlhcmctPnVuaXF1 ZU51bGxzTm90RGlzdGluY3QgPSB1bmlxdWVOdWxsc05vdERpc3RpbmN0OwogCi0JaW5kZXhT Y2FuS2V5ID0gX2J0X21rc2NhbmtleShpbmRleFJlbCwgTlVMTCk7CisJaW5kZXhTY2FuS2V5 ID0gX2J0X21rc2NhbmtleShpbmRleFJlbCwgTlVMTCwgaGVhcFJlbCk7CiAKIAkvKiBQcmVw YXJlIFNvcnRTdXBwb3J0IGRhdGEgZm9yIGVhY2ggY29sdW1uICovCiAJYmFzZS0+c29ydEtl eXMgPSAoU29ydFN1cHBvcnQpIHBhbGxvYzAoYmFzZS0+bktleXMgKgpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0u aAppbmRleCA4M2RiZWUwZmU2Li43NzA4YjgyZDdkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvZ2VuYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaApAQCAt NTAsNiArNTAsNyBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleFZhY3V1bUluZm8KIAlpbnQJCQlt ZXNzYWdlX2xldmVsOwkvKiBlcmVwb3J0IGxldmVsIGZvciBwcm9ncmVzcyBtZXNzYWdlcyAq LwogCWRvdWJsZQkJbnVtX2hlYXBfdHVwbGVzOwkvKiB0dXBsZXMgcmVtYWluaW5nIGluIGhl YXAgKi8KIAlCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneTsJLyogYWNjZXNzIHN0cmF0 ZWd5IGZvciByZWFkcyAqLworCVJlbGF0aW9uIAloZWFwcmVsOwkJLyogdGhlIGhlYXAgcmVs YXRpb24gdGhlIGluZGV4IGJlbG9uZ3MgdG8gKi8KIH0gSW5kZXhWYWN1dW1JbmZvOwogCiAv KgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3RfcHJpdmF0ZS5oIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL2dpc3RfcHJpdmF0ZS5oCmluZGV4IDhhZjMzZDdiNDAuLmI3NmVk NGM2ZjggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0X3ByaXZhdGUuaAor KysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdF9wcml2YXRlLmgKQEAgLTQ0MCw3ICs0NDAs NyBAQCBleHRlcm4gWExvZ1JlY1B0ciBnaXN0WExvZ1BhZ2VEZWxldGUoQnVmZmVyIGJ1ZmZl ciwKIAkJCQkJCQkJCSBGdWxsVHJhbnNhY3Rpb25JZCB4aWQsIEJ1ZmZlciBwYXJlbnRCdWZm ZXIsCiAJCQkJCQkJCQkgT2Zmc2V0TnVtYmVyIGRvd25saW5rT2Zmc2V0KTsKIAotZXh0ZXJu IHZvaWQgZ2lzdFhMb2dQYWdlUmV1c2UoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBibGtu bywKK2V4dGVybiB2b2lkIGdpc3RYTG9nUGFnZVJldXNlKFJlbGF0aW9uIGhlYXByZWwsIFJl bGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sCiAJCQkJCQkJICBGdWxsVHJhbnNhY3Rp b25JZCBkZWxldGVYaWQpOwogCiBleHRlcm4gWExvZ1JlY1B0ciBnaXN0WExvZ1VwZGF0ZShC dWZmZXIgYnVmZmVyLApAQCAtNDQ5LDcgKzQ0OSw4IEBAIGV4dGVybiBYTG9nUmVjUHRyIGdp c3RYTG9nVXBkYXRlKEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkJCSBCdWZmZXIgbGVmdGNoaWxk YnVmKTsKIAogZXh0ZXJuIFhMb2dSZWNQdHIgZ2lzdFhMb2dEZWxldGUoQnVmZmVyIGJ1ZmZl ciwgT2Zmc2V0TnVtYmVyICp0b2RlbGV0ZSwKLQkJCQkJCQkJIGludCBudG9kZWxldGUsIFRy YW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24pOworCQkJCQkJCQkgaW50IG50 b2RlbGV0ZSwgVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJ CQkJIFJlbGF0aW9uIGhlYXByZWwpOwogCiBleHRlcm4gWExvZ1JlY1B0ciBnaXN0WExvZ1Nw bGl0KGJvb2wgcGFnZV9pc19sZWFmLAogCQkJCQkJCQlTcGxpdGVkUGFnZUxheW91dCAqZGlz dCwKQEAgLTQ4NSw3ICs0ODYsNyBAQCBleHRlcm4gYm9vbCBnaXN0cHJvcGVydHkoT2lkIGlu ZGV4X29pZCwgaW50IGF0dG5vLAogZXh0ZXJuIGJvb2wgZ2lzdGZpdHBhZ2UoSW5kZXhUdXBs ZSAqaXR2ZWMsIGludCBsZW4pOwogZXh0ZXJuIGJvb2wgZ2lzdG5vc3BhY2UoUGFnZSBwYWdl LCBJbmRleFR1cGxlICppdHZlYywgaW50IGxlbiwgT2Zmc2V0TnVtYmVyIHRvZGVsZXRlLCBT aXplIGZyZWVzcGFjZSk7CiBleHRlcm4gdm9pZCBnaXN0Y2hlY2twYWdlKFJlbGF0aW9uIHJl bCwgQnVmZmVyIGJ1Zik7Ci1leHRlcm4gQnVmZmVyIGdpc3ROZXdCdWZmZXIoUmVsYXRpb24g cik7CitleHRlcm4gQnVmZmVyIGdpc3ROZXdCdWZmZXIoUmVsYXRpb24gaGVhcHJlbCwgUmVs YXRpb24gcik7CiBleHRlcm4gYm9vbCBnaXN0UGFnZVJlY3ljbGFibGUoUGFnZSBwYWdlKTsK IGV4dGVybiB2b2lkIGdpc3RmaWxsYnVmZmVyKFBhZ2UgcGFnZSwgSW5kZXhUdXBsZSAqaXR1 cCwgaW50IGxlbiwKIAkJCQkJCSAgIE9mZnNldE51bWJlciBvZmYpOwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvYWNjZXNzL2dpc3R4bG9nLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lz dHhsb2cuaAppbmRleCAwOWY5YjBmOGM2Li4xOTFmMGU1ODA4IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9hY2Nlc3MvZ2lzdHhsb2cuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lz dHhsb2cuaApAQCAtNTEsMTMgKzUxLDEzIEBAIHR5cGVkZWYgc3RydWN0IGdpc3R4bG9nRGVs ZXRlCiB7CiAJVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsKIAl1aW50 MTYJCW50b2RlbGV0ZTsJCS8qIG51bWJlciBvZiBkZWxldGVkIG9mZnNldHMgKi8KKwlib29s ICAgICAgICBpc0NhdGFsb2dSZWw7CiAKLQkvKgotCSAqIEluIHBheWxvYWQgb2YgYmxrIDAg OiB0b2RlbGV0ZSBPZmZzZXROdW1iZXJzCi0JICovCisJLyogVE9ERUxFVEUgT0ZGU0VUIE5V TUJFUlMgKi8KKwlPZmZzZXROdW1iZXIgb2Zmc2V0c1tGTEVYSUJMRV9BUlJBWV9NRU1CRVJd OwogfSBnaXN0eGxvZ0RlbGV0ZTsKIAotI2RlZmluZSBTaXplT2ZHaXN0eGxvZ0RlbGV0ZQko b2Zmc2V0b2YoZ2lzdHhsb2dEZWxldGUsIG50b2RlbGV0ZSkgKyBzaXplb2YodWludDE2KSkK KyNkZWZpbmUgU2l6ZU9mR2lzdHhsb2dEZWxldGUgb2Zmc2V0b2YoZ2lzdHhsb2dEZWxldGUs IG9mZnNldHMpCiAKIC8qCiAgKiBCYWNrdXAgQmxrIDA6IElmIHRoaXMgb3BlcmF0aW9uIGNv bXBsZXRlcyBhIHBhZ2Ugc3BsaXQsIGJ5IGluc2VydGluZyBhCkBAIC0xMDAsOSArMTAwLDEw IEBAIHR5cGVkZWYgc3RydWN0IGdpc3R4bG9nUGFnZVJldXNlCiAJUmVsRmlsZUxvY2F0b3Ig bG9jYXRvcjsKIAlCbG9ja051bWJlciBibG9jazsKIAlGdWxsVHJhbnNhY3Rpb25JZCBzbmFw c2hvdENvbmZsaWN0SG9yaXpvbjsKKwlib29sICAgICAgICBpc0NhdGFsb2dSZWw7CiB9IGdp c3R4bG9nUGFnZVJldXNlOwogCi0jZGVmaW5lIFNpemVPZkdpc3R4bG9nUGFnZVJldXNlCShv ZmZzZXRvZihnaXN0eGxvZ1BhZ2VSZXVzZSwgc25hcHNob3RDb25mbGljdEhvcml6b24pICsg c2l6ZW9mKEZ1bGxUcmFuc2FjdGlvbklkKSkKKyNkZWZpbmUgU2l6ZU9mR2lzdHhsb2dQYWdl UmV1c2UJKG9mZnNldG9mKGdpc3R4bG9nUGFnZVJldXNlLCBpc0NhdGFsb2dSZWwpICsgc2l6 ZW9mKGJvb2wpKQogCiBleHRlcm4gdm9pZCBnaXN0X3JlZG8oWExvZ1JlYWRlclN0YXRlICpy ZWNvcmQpOwogZXh0ZXJuIHZvaWQgZ2lzdF9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVh ZGVyU3RhdGUgKnJlY29yZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGFz aF94bG9nLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGFzaF94bG9nLmgKaW5kZXggYTJmMGYz OTIxMy4uOGYxZGZlZGFhZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hhc2hf eGxvZy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oYXNoX3hsb2cuaApAQCAtMjUyLDEy ICsyNTIsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGFzaF92YWN1dW1fb25lX3BhZ2UKIHsK IAlUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwogCWludAkJCW50dXBs ZXM7Ci0KLQkvKiBUQVJHRVQgT0ZGU0VUIE5VTUJFUlMgRk9MTE9XIEFUIFRIRSBFTkQgKi8K Kwlib29sCQlpc0NhdGFsb2dSZWw7CisJLyogVEFSR0VUIE9GRlNFVCBOVU1CRVJTICovCisJ T2Zmc2V0TnVtYmVyIG9mZnNldHNbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsKIH0geGxfaGFz aF92YWN1dW1fb25lX3BhZ2U7CiAKLSNkZWZpbmUgU2l6ZU9mSGFzaFZhY3V1bU9uZVBhZ2Ug XAotCShvZmZzZXRvZih4bF9oYXNoX3ZhY3V1bV9vbmVfcGFnZSwgbnR1cGxlcykgKyBzaXpl b2YoaW50KSkKKyNkZWZpbmUgU2l6ZU9mSGFzaFZhY3V1bU9uZVBhZ2Ugb2Zmc2V0b2YoeGxf aGFzaF92YWN1dW1fb25lX3BhZ2UsIG9mZnNldHMpCiAKIGV4dGVybiB2b2lkIGhhc2hfcmVk byhYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7CiBleHRlcm4gdm9pZCBoYXNoX2Rlc2MoU3Ry aW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKTsKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbV94bG9nLmgKaW5kZXggOGNiMGQ4ZGExOS4uMWQ0MzE4MWE0MCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL2hlYXBhbV94bG9nLmgKQEAgLTI0NSwxMCArMjQ1LDExIEBAIHR5cGVkZWYgc3RydWN0 IHhsX2hlYXBfcHJ1bmUKIAlUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9u OwogCXVpbnQxNgkJbnJlZGlyZWN0ZWQ7CiAJdWludDE2CQluZGVhZDsKKwlib29sICAgICAg ICBpc0NhdGFsb2dSZWw7CiAJLyogT0ZGU0VUIE5VTUJFUlMgYXJlIGluIHRoZSBibG9jayBy ZWZlcmVuY2UgMCAqLwogfSB4bF9oZWFwX3BydW5lOwogCi0jZGVmaW5lIFNpemVPZkhlYXBQ cnVuZSAob2Zmc2V0b2YoeGxfaGVhcF9wcnVuZSwgbmRlYWQpICsgc2l6ZW9mKHVpbnQxNikp CisjZGVmaW5lIFNpemVPZkhlYXBQcnVuZSAob2Zmc2V0b2YoeGxfaGVhcF9wcnVuZSwgaXND YXRhbG9nUmVsKSArIHNpemVvZihib29sKSkKIAogLyoKICAqIFRoZSB2YWN1dW0gcGFnZSBy ZWNvcmQgaXMgc2ltaWxhciB0byB0aGUgcHJ1bmUgcmVjb3JkLCBidXQgY2FuIG9ubHkgbWFy awpAQCAtMzQ0LDEyICszNDUsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9mcmVlemVf cGFnZQogewogCVRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b247CiAJdWlu dDE2CQlucGxhbnM7CisJYm9vbCAgICAgICAgaXNDYXRhbG9nUmVsOwogCiAJLyogRlJFRVpF IFBMQU5TIEZPTExPVyAqLwogCS8qIE9GRlNFVCBOVU1CRVIgQVJSQVkgRk9MTE9XUyAqLwog fSB4bF9oZWFwX2ZyZWV6ZV9wYWdlOwogCi0jZGVmaW5lIFNpemVPZkhlYXBGcmVlemVQYWdl IChvZmZzZXRvZih4bF9oZWFwX2ZyZWV6ZV9wYWdlLCBucGxhbnMpICsgc2l6ZW9mKHVpbnQx NikpCisjZGVmaW5lIFNpemVPZkhlYXBGcmVlemVQYWdlIChvZmZzZXRvZih4bF9oZWFwX2Zy ZWV6ZV9wYWdlLCBpc0NhdGFsb2dSZWwpICsgc2l6ZW9mKGJvb2wpKQogCiAvKgogICogVGhp cyBpcyB3aGF0IHdlIG5lZWQgdG8ga25vdyBhYm91dCBzZXR0aW5nIGEgdmlzaWJpbGl0eSBt YXAgYml0CkBAIC00MDgsNyArNDEwLDcgQEAgZXh0ZXJuIHZvaWQgaGVhcDJfZGVzYyhTdHJp bmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpOwogZXh0ZXJuIGNvbnN0IGNo YXIgKmhlYXAyX2lkZW50aWZ5KHVpbnQ4IGluZm8pOwogZXh0ZXJuIHZvaWQgaGVhcF94bG9n X2xvZ2ljYWxfcmV3cml0ZShYTG9nUmVhZGVyU3RhdGUgKnIpOwogCi1leHRlcm4gWExvZ1Jl Y1B0ciBsb2dfaGVhcF92aXNpYmxlKFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yLCBCdWZmZXIg aGVhcF9idWZmZXIsCitleHRlcm4gWExvZ1JlY1B0ciBsb2dfaGVhcF92aXNpYmxlKFJlbGF0 aW9uIHJlbCwgQnVmZmVyIGhlYXBfYnVmZmVyLAogCQkJCQkJCQkgICBCdWZmZXIgdm1fYnVm ZmVyLAogCQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9u LAogCQkJCQkJCQkgICB1aW50OCB2bWZsYWdzKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2FjY2Vzcy9uYnRyZWUuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnRyZWUuaAppbmRleCA4 ZjQ4OTYwZjlkLi5jZGNmZGQ2MDMwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv bmJ0cmVlLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL25idHJlZS5oCkBAIC0xMTgyLDgg KzExODIsMTAgQEAgZXh0ZXJuIEluZGV4VHVwbGUgX2J0X3N3YXBfcG9zdGluZyhJbmRleFR1 cGxlIG5ld2l0ZW0sIEluZGV4VHVwbGUgb3Bvc3RpbmcsCiBleHRlcm4gYm9vbCBfYnRfZG9p bnNlcnQoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGl0dXAsCiAJCQkJCQkgSW5kZXhVbmlx dWVDaGVjayBjaGVja1VuaXF1ZSwgYm9vbCBpbmRleFVuY2hhbmdlZCwKIAkJCQkJCSBSZWxh dGlvbiBoZWFwUmVsKTsKLWV4dGVybiB2b2lkIF9idF9maW5pc2hfc3BsaXQoUmVsYXRpb24g cmVsLCBCdWZmZXIgbGJ1ZiwgQlRTdGFjayBzdGFjayk7Ci1leHRlcm4gQnVmZmVyIF9idF9n ZXRzdGFja2J1ZihSZWxhdGlvbiByZWwsIEJUU3RhY2sgc3RhY2ssIEJsb2NrTnVtYmVyIGNo aWxkKTsKK2V4dGVybiB2b2lkIF9idF9maW5pc2hfc3BsaXQoUmVsYXRpb24gcmVsLCBCdWZm ZXIgbGJ1ZiwgQlRTdGFjayBzdGFjaywKKwkJCQkJCQkgUmVsYXRpb24gaGVhcHJlbCk7Citl eHRlcm4gQnVmZmVyIF9idF9nZXRzdGFja2J1ZihSZWxhdGlvbiByZWwsIEJUU3RhY2sgc3Rh Y2ssIEJsb2NrTnVtYmVyIGNoaWxkLAorCQkJCQkJCSAgUmVsYXRpb24gaGVhcHJlbCk7CiAK IC8qCiAgKiBwcm90b3R5cGVzIGZvciBmdW5jdGlvbnMgaW4gbmJ0c3BsaXRsb2MuYwpAQCAt MTE5NywxNiArMTE5OSwxOCBAQCBleHRlcm4gT2Zmc2V0TnVtYmVyIF9idF9maW5kc3BsaXRs b2MoUmVsYXRpb24gcmVsLCBQYWdlIG9yaWdwYWdlLAogICovCiBleHRlcm4gdm9pZCBfYnRf aW5pdG1ldGFwYWdlKFBhZ2UgcGFnZSwgQmxvY2tOdW1iZXIgcm9vdGJrbnVtLCB1aW50MzIg bGV2ZWwsCiAJCQkJCQkJIGJvb2wgYWxsZXF1YWxpbWFnZSk7Ci1leHRlcm4gYm9vbCBfYnRf dmFjdXVtX25lZWRzX2NsZWFudXAoUmVsYXRpb24gcmVsKTsKLWV4dGVybiB2b2lkIF9idF9z ZXRfY2xlYW51cF9pbmZvKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgbnVtX2RlbHBhZ2Vz KTsKK2V4dGVybiBib29sIF9idF92YWN1dW1fbmVlZHNfY2xlYW51cChSZWxhdGlvbiByZWws IFJlbGF0aW9uIGhlYXByZWwpOworZXh0ZXJuIHZvaWQgX2J0X3NldF9jbGVhbnVwX2luZm8o UmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBudW1fZGVscGFnZXMsCisJCQkJCQkJCSBSZWxh dGlvbiBoZWFwcmVsKTsKIGV4dGVybiB2b2lkIF9idF91cGdyYWRlbWV0YXBhZ2UoUGFnZSBw YWdlKTsKLWV4dGVybiBCdWZmZXIgX2J0X2dldHJvb3QoUmVsYXRpb24gcmVsLCBpbnQgYWNj ZXNzKTsKLWV4dGVybiBCdWZmZXIgX2J0X2dldHRydWVyb290KFJlbGF0aW9uIHJlbCk7Ci1l eHRlcm4gaW50CV9idF9nZXRyb290aGVpZ2h0KFJlbGF0aW9uIHJlbCk7CitleHRlcm4gQnVm ZmVyIF9idF9nZXRyb290KFJlbGF0aW9uIHJlbCwgaW50IGFjY2VzcywgUmVsYXRpb24gaGVh cHJlbCk7CitleHRlcm4gQnVmZmVyIF9idF9nZXR0cnVlcm9vdChSZWxhdGlvbiByZWwsIFJl bGF0aW9uIGhlYXByZWwpOworZXh0ZXJuIGludAlfYnRfZ2V0cm9vdGhlaWdodChSZWxhdGlv biByZWwsIFJlbGF0aW9uIGhlYXByZWwpOwogZXh0ZXJuIHZvaWQgX2J0X21ldGF2ZXJzaW9u KFJlbGF0aW9uIHJlbCwgYm9vbCAqaGVhcGtleXNwYWNlLAotCQkJCQkJCWJvb2wgKmFsbGVx dWFsaW1hZ2UpOworCQkJCQkJCWJvb2wgKmFsbGVxdWFsaW1hZ2UsIFJlbGF0aW9uIGhlYXBy ZWwpOwogZXh0ZXJuIHZvaWQgX2J0X2NoZWNrcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBi dWYpOwotZXh0ZXJuIEJ1ZmZlciBfYnRfZ2V0YnVmKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1i ZXIgYmxrbm8sIGludCBhY2Nlc3MpOworZXh0ZXJuIEJ1ZmZlciBfYnRfZ2V0YnVmKFJlbGF0 aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIGludCBhY2Nlc3MsCisJCQkJCQkgUmVsYXRp b24gaGVhcHJlbCk7CiBleHRlcm4gQnVmZmVyIF9idF9yZWxhbmRnZXRidWYoUmVsYXRpb24g cmVsLCBCdWZmZXIgb2J1ZiwKIAkJCQkJCQkgICBCbG9ja051bWJlciBibGtubywgaW50IGFj Y2Vzcyk7CiBleHRlcm4gdm9pZCBfYnRfcmVsYnVmKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1 Zik7CkBAIC0xMjMwLDIwICsxMjM0LDIxIEBAIGV4dGVybiB2b2lkIF9idF9wZW5kaW5nZnNt X2ZpbmFsaXplKFJlbGF0aW9uIHJlbCwgQlRWYWNTdGF0ZSAqdnN0YXRlKTsKICAqIHByb3Rv dHlwZXMgZm9yIGZ1bmN0aW9ucyBpbiBuYnRzZWFyY2guYwogICovCiBleHRlcm4gQlRTdGFj ayBfYnRfc2VhcmNoKFJlbGF0aW9uIHJlbCwgQlRTY2FuSW5zZXJ0IGtleSwgQnVmZmVyICpi dWZQLAotCQkJCQkJICBpbnQgYWNjZXNzLCBTbmFwc2hvdCBzbmFwc2hvdCk7CisJCQkJCQkg IGludCBhY2Nlc3MsIFNuYXBzaG90IHNuYXBzaG90LCBSZWxhdGlvbiBoZWFwcmVsKTsKIGV4 dGVybiBCdWZmZXIgX2J0X21vdmVyaWdodChSZWxhdGlvbiByZWwsIEJUU2Nhbkluc2VydCBr ZXksIEJ1ZmZlciBidWYsCi0JCQkJCQkJYm9vbCBmb3J1cGRhdGUsIEJUU3RhY2sgc3RhY2ss IGludCBhY2Nlc3MsIFNuYXBzaG90IHNuYXBzaG90KTsKKwkJCQkJCQlib29sIGZvcnVwZGF0 ZSwgQlRTdGFjayBzdGFjaywgaW50IGFjY2VzcywKKwkJCQkJCQlTbmFwc2hvdCBzbmFwc2hv dCwgUmVsYXRpb24gaGVhcHJlbCk7CiBleHRlcm4gT2Zmc2V0TnVtYmVyIF9idF9iaW5zcmNo X2luc2VydChSZWxhdGlvbiByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUpOwogZXh0 ZXJuIGludDMyIF9idF9jb21wYXJlKFJlbGF0aW9uIHJlbCwgQlRTY2FuSW5zZXJ0IGtleSwg UGFnZSBwYWdlLCBPZmZzZXROdW1iZXIgb2ZmbnVtKTsKIGV4dGVybiBib29sIF9idF9maXJz dChJbmRleFNjYW5EZXNjIHNjYW4sIFNjYW5EaXJlY3Rpb24gZGlyKTsKIGV4dGVybiBib29s IF9idF9uZXh0KEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpOwogZXh0 ZXJuIEJ1ZmZlciBfYnRfZ2V0X2VuZHBvaW50KFJlbGF0aW9uIHJlbCwgdWludDMyIGxldmVs LCBib29sIHJpZ2h0bW9zdCwKLQkJCQkJCQkgICBTbmFwc2hvdCBzbmFwc2hvdCk7CisJCQkJ CQkJICAgU25hcHNob3Qgc25hcHNob3QsIFJlbGF0aW9uIGhlYXByZWwpOwogCiAvKgogICog cHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIGluIG5idHV0aWxzLmMKICAqLwotZXh0ZXJuIEJU U2Nhbkluc2VydCBfYnRfbWtzY2Fua2V5KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBpdHVw KTsKK2V4dGVybiBCVFNjYW5JbnNlcnQgX2J0X21rc2NhbmtleShSZWxhdGlvbiByZWwsIElu ZGV4VHVwbGUgaXR1cCwgUmVsYXRpb24gaGVhcHJlbCk7CiBleHRlcm4gdm9pZCBfYnRfZnJl ZXN0YWNrKEJUU3RhY2sgc3RhY2spOwogZXh0ZXJuIHZvaWQgX2J0X3ByZXByb2Nlc3NfYXJy YXlfa2V5cyhJbmRleFNjYW5EZXNjIHNjYW4pOwogZXh0ZXJuIHZvaWQgX2J0X3N0YXJ0X2Fy cmF5X2tleXMoSW5kZXhTY2FuRGVzYyBzY2FuLCBTY2FuRGlyZWN0aW9uIGRpcik7CmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0eGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL25idHhsb2cuaAppbmRleCBlZGQxMzMzZDliLi45OWQ4N2Q3MTg5IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0eGxvZy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vz cy9uYnR4bG9nLmgKQEAgLTE4OCw5ICsxODgsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfYnRy ZWVfcmV1c2VfcGFnZQogCVJlbEZpbGVMb2NhdG9yIGxvY2F0b3I7CiAJQmxvY2tOdW1iZXIg YmxvY2s7CiAJRnVsbFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b247CisJ Ym9vbCAgICAgICAgaXNDYXRhbG9nUmVsOwogfSB4bF9idHJlZV9yZXVzZV9wYWdlOwogCi0j ZGVmaW5lIFNpemVPZkJ0cmVlUmV1c2VQYWdlCShzaXplb2YoeGxfYnRyZWVfcmV1c2VfcGFn ZSkpCisjZGVmaW5lIFNpemVPZkJ0cmVlUmV1c2VQYWdlCShvZmZzZXRvZih4bF9idHJlZV9y ZXVzZV9wYWdlLCBpc0NhdGFsb2dSZWwpICsgc2l6ZW9mKGJvb2wpKQogCiAvKgogICogeGxf YnRyZWVfdmFjdXVtIGFuZCB4bF9idHJlZV9kZWxldGUgcmVjb3JkcyBkZXNjcmliZSBkZWxl dGlvbiBvZiBpbmRleApAQCAtMjM1LDEzICsyMzYsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxf YnRyZWVfZGVsZXRlCiAJVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsK IAl1aW50MTYJCW5kZWxldGVkOwogCXVpbnQxNgkJbnVwZGF0ZWQ7CisJYm9vbCAgICAgICAg aXNDYXRhbG9nUmVsOwogCiAJLyogREVMRVRFRCBUQVJHRVQgT0ZGU0VUIE5VTUJFUlMgRk9M TE9XICovCiAJLyogVVBEQVRFRCBUQVJHRVQgT0ZGU0VUIE5VTUJFUlMgRk9MTE9XICovCiAJ LyogVVBEQVRFRCBUVVBMRVMgTUVUQURBVEEgKHhsX2J0cmVlX3VwZGF0ZSkgQVJSQVkgRk9M TE9XUyAqLwogfSB4bF9idHJlZV9kZWxldGU7CiAKLSNkZWZpbmUgU2l6ZU9mQnRyZWVEZWxl dGUJKG9mZnNldG9mKHhsX2J0cmVlX2RlbGV0ZSwgbnVwZGF0ZWQpICsgc2l6ZW9mKHVpbnQx NikpCisjZGVmaW5lIFNpemVPZkJ0cmVlRGVsZXRlCShvZmZzZXRvZih4bF9idHJlZV9kZWxl dGUsIGlzQ2F0YWxvZ1JlbCkgKyBzaXplb2YoYm9vbCkpCiAKIC8qCiAgKiBUaGUgb2Zmc2V0 cyB0aGF0IGFwcGVhciBpbiB4bF9idHJlZV91cGRhdGUgbWV0YWRhdGEgYXJlIG9mZnNldHMg aW50byB0aGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9zcGd4bG9nLmggYi9z cmMvaW5jbHVkZS9hY2Nlc3Mvc3BneGxvZy5oCmluZGV4IGI5ZDY3NTM1MzMuLjI5YTZhYTU3 YTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9zcGd4bG9nLmgKKysrIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL3NwZ3hsb2cuaApAQCAtMjQwLDYgKzI0MCw3IEBAIHR5cGVkZWYg c3RydWN0IHNwZ3hsb2dWYWN1dW1SZWRpcmVjdAogCXVpbnQxNgkJblRvUGxhY2Vob2xkZXI7 IC8qIG51bWJlciBvZiByZWRpcmVjdHMgdG8gbWFrZSBwbGFjZWhvbGRlcnMgKi8KIAlPZmZz ZXROdW1iZXIgZmlyc3RQbGFjZWhvbGRlcjsJLyogZmlyc3QgcGxhY2Vob2xkZXIgdHVwbGUg dG8gcmVtb3ZlICovCiAJVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsJ LyogbmV3ZXN0IFhJRCBvZiByZW1vdmVkIHJlZGlyZWN0cyAqLworCWJvb2wgICAgICAgIGlz Q2F0YWxvZ1JlbDsKIAogCS8qIG9mZnNldHMgb2YgcmVkaXJlY3QgdHVwbGVzIHRvIG1ha2Ug cGxhY2Vob2xkZXJzIGZvbGxvdyAqLwogCU9mZnNldE51bWJlciBvZmZzZXRzW0ZMRVhJQkxF X0FSUkFZX01FTUJFUl07CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJp bGl0eW1hcGRlZnMuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5o CmluZGV4IDkxNjViOTQ1NmIuLmIyN2ZkYzBhZWYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2FjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy92 aXNpYmlsaXR5bWFwZGVmcy5oCkBAIC0xNyw5ICsxNywxMCBAQAogI2RlZmluZSBCSVRTX1BF Ul9IRUFQQkxPQ0sgMgogCiAvKiBGbGFncyBmb3IgYml0IG1hcCAqLwotI2RlZmluZSBWSVNJ QklMSVRZTUFQX0FMTF9WSVNJQkxFCTB4MDEKLSNkZWZpbmUgVklTSUJJTElUWU1BUF9BTExf RlJPWkVOCTB4MDIKLSNkZWZpbmUgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTCTB4MDMJLyog T1Igb2YgYWxsIHZhbGlkIHZpc2liaWxpdHltYXAKLQkJCQkJCQkJCQkJICogZmxhZ3MgYml0 cyAqLworI2RlZmluZSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFCQkJCQkJCQkweDAxCisj ZGVmaW5lIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTgkJCQkJCQkJMHgwMgorI2RlZmluZSBW SVNJQklMSVRZTUFQX1ZBTElEX0JJVFMJCQkJCQkJCTB4MDMJLyogT1Igb2YgYWxsIHZhbGlk IHZpc2liaWxpdHltYXAKKwkJCQkJCQkJCQkJCQkJCQkJCSAqIGZsYWdzIGJpdHMgKi8KKyNk ZWZpbmUgVklTSUJJTElUWU1BUF9JU19DQVRBTE9HX1JFTAkweDA0CiAKICNlbmRpZgkJCQkJ CQkvKiBWSVNJQklMSVRZTUFQREVGU19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91 dGlscy9yZWwuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCmluZGV4IGFmOTc4NTAzOGQu LjBjZmUwMmFhNGEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCisrKyBi L3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAi c3RvcmFnZS9zbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsY2FjaGUuaCIKICNpbmNsdWRl ICJ1dGlscy9yZWx0cmlnZ2VyLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9jYXRhbG9nLmgiCiAK IAogLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc29ydC5oIGIvc3Jj L2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmgKaW5kZXggMTI1NzhlNDJiYy4uMDZhZWJlNjMz MCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmgKKysrIGIvc3Jj L2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmgKQEAgLTQwMSw3ICs0MDEsOCBAQCBleHRlcm4g VHVwbGVzb3J0c3RhdGUgKnR1cGxlc29ydF9iZWdpbl9oZWFwKFR1cGxlRGVzYyB0dXBEZXNj LAogZXh0ZXJuIFR1cGxlc29ydHN0YXRlICp0dXBsZXNvcnRfYmVnaW5fY2x1c3RlcihUdXBs ZURlc2MgdHVwRGVzYywKIAkJCQkJCQkJCQkJICAgUmVsYXRpb24gaW5kZXhSZWwsIGludCB3 b3JrTWVtLAogCQkJCQkJCQkJCQkgICBTb3J0Q29vcmRpbmF0ZSBjb29yZGluYXRlLAotCQkJ CQkJCQkJCQkgICBpbnQgc29ydG9wdCk7CisJCQkJCQkJCQkJCSAgIGludCBzb3J0b3B0LAor CQkJCQkJCQkJCQkgICBSZWxhdGlvbiBoZWFwcmVsKTsKIGV4dGVybiBUdXBsZXNvcnRzdGF0 ZSAqdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKFJlbGF0aW9uIGhlYXBSZWwsCiAJCQkJ CQkJCQkJCQkgICBSZWxhdGlvbiBpbmRleFJlbCwKIAkJCQkJCQkJCQkJCSAgIGJvb2wgZW5m b3JjZVVuaXF1ZSwKLS0gCjIuMzQuMQoK --------------G03lDHzolqD0Rr04i1MibgcG--