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 1pPLMj-00055r-GL for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Feb 2023 10:38:22 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pPLMi-0007fS-2U for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Feb 2023 10:38:20 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pPLMh-0007fJ-E9 for pgsql-hackers@lists.postgresql.org; Tue, 07 Feb 2023 10:38:19 +0000 Received: from mail-wr1-x42a.google.com ([2a00:1450:4864:20::42a]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pPLMW-00084E-G3 for pgsql-hackers@postgresql.org; Tue, 07 Feb 2023 10:38:19 +0000 Received: by mail-wr1-x42a.google.com with SMTP id bk16so13060022wrb.11 for ; Tue, 07 Feb 2023 02:38:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:references:cc:to:from:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=1GLr81eITgDDOAGVEgS7cw9pNcX5eN7ecND6/PYS3+M=; b=F5dF1PA2mv9v67ziYUGm9lV8LDP10Iv/RwMmqgJPkK7y/+05gZeBjsKU0KFI3+yJWE 7gcL4Mwq6DVJxQl07Y9hz2ZvA6wl91pLcq+KmAqNKIlR7u/vkcNG+LAy/xpVC7o2b4MN dhSFb75Wa2XJnCbohBAd7gm32NR5FyY5H1uW3veY364hOPSno6hdEEWzSYGduEHTGXwt bIe0WSOF3mgPEXYlY1w9RQrOo9rNSI6Vm69EYL9zM730XWcmCCvqlccU7RY5ZNAB1OeX CUvHtgpyLsoE7dLQ6MOLoqdzanvaZG23DTNYPB2GMLhML1peEo/2EPALllnikY2KpR15 Kvlw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:references:cc:to:from:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=1GLr81eITgDDOAGVEgS7cw9pNcX5eN7ecND6/PYS3+M=; b=bJ0SMwc1ZJS8WqySE2Qv2+OJn8loBLt0WBQZubzBDJTeVIbizPXXxQoZa1RAUkcmYs yv8D8KRBVP9jJuGq+79EvDYjDcRkSvpkdBY56cbZAk4D1Ar62FeG4/JL6FgVKU3ZoIn/ OCQwt09pQ+5V98s9SV2PiH+VCgEF0JYZPMklNcVfhZuZ3yTVRGG2pkYwoh/pX2VQ53tX JkqCiOYtkYv17WIQ+bGKO9Nm98a+QjCHTWFEvltUQEFimJIX3tfre64xT7Z4JXa5T5DR wFUdCvuztYUWItf069+togSDJDwAj5Ucat531A36atz/iOw3ZKvt5Q+dt4FaMxG5GVIW sMug== X-Gm-Message-State: AO0yUKU+Y+SNp9Uc1MC0QAMTCmSBJnobxNOUTSv3oASG0uueKAzFdT/r 4MmoIsTdb+DqwNk2BGXvtmo= X-Google-Smtp-Source: AK7set953ereJX3mV+HeBkp/7ErRYdox2Y8VPgCQtsbdTWdBedMcKI6REa/LzK0N+VJ6m6fQFNcqsg== X-Received: by 2002:adf:e986:0:b0:2c2:cd4c:235c with SMTP id h6-20020adfe986000000b002c2cd4c235cmr2189070wrm.14.1675766286472; Tue, 07 Feb 2023 02:38:06 -0800 (PST) Received: from [192.168.24.238] ([54.239.6.184]) by smtp.gmail.com with ESMTPSA id a4-20020a5d5084000000b002c3db0eec5fsm9195406wrt.62.2023.02.07.02.38.04 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 07 Feb 2023 02:38:05 -0800 (PST) Content-Type: multipart/mixed; boundary="------------xW006q159UiWPtHw9wcHAuVA" Message-ID: <04c0c56b-2a82-308d-9419-9ddf79ea01dc@gmail.com> Date: Tue, 7 Feb 2023 11:36:48 +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 From: "Drouvot, Bertrand" To: Bharath Rupireddy Cc: Andres Freund , Robert Haas , Thomas Munro , Alvaro Herrera , Ibrar Ahmed , Amit Khandekar , fabriziomello@gmail.com, tushar , Rahila Syed , pgsql-hackers References: <20221214173552.sshklqvwezeo52h3@alap3.anarazel.de> <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> In-Reply-To: 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. --------------xW006q159UiWPtHw9wcHAuVA Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi, On 1/11/23 4:23 PM, Drouvot, Bertrand wrote: > Hi, > > On 1/11/23 8:32 AM, Bharath Rupireddy wrote: >> On Tue, Jan 10, 2023 at 2:03 PM Drouvot, Bertrand >> wrote: >>> >>> Please find attached, V37 taking care of: >> >> Thanks. I started to digest the design specified in the commit message >> and these patches. > > Thanks for looking at it! > >> Here are some quick comments: >> >> 1. Does logical decoding on standby work without any issues if the >> standby is set for cascading replication? >> > > Without "any issues" is hard to guarantee ;-) But according to my tests: > > Primary -> Standby1 with or without logical replication slot -> Standby2 with or without logical replication slot > > works as expected (and also with cascading promotion). > We can add some TAP tests in 0004 though. Cascading standby tests have been added in V48 attached. It does test that: - a sql logical decoding session on the cascading standby get expected output before/after the standby promotion - a pg_recvlogical logical decoding session on the cascading standby (started before the standby promotion) get expected output before/after the standby promotion Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --------------xW006q159UiWPtHw9wcHAuVA Content-Type: text/plain; charset=UTF-8; name="v48-0006-Doc-changes-describing-details-about-logical-dec.patch" Content-Disposition: attachment; filename*0="v48-0006-Doc-changes-describing-details-about-logical-dec.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBkMDFhZDZmYmM4YTIzYzNkZGNjMTBmYzNlMTFmZWI2NWUwZmNkYzVhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA3IEZlYiAyMDIzIDA5OjQ4OjUyICswMDAwClN1YmplY3Q6IFtQQVRD SCB2NDggNi82XSBEb2MgY2hhbmdlcyBkZXNjcmliaW5nIGRldGFpbHMgYWJvdXQgbG9naWNh bAogZGVjb2RpbmcuCgpBdXRob3I6IEFuZHJlcyBGcmV1bmQgKGluIGFuIG9sZGVyIHZlcnNp b24pLCBBbWl0IEtoYW5kZWthciwgQmVydHJhbmQgRHJvdXZvdApSZXZpZXdlZC1CeTogQmVy dHJhbmQgRHJvdXZvdCwgQW5kcmVzIEZyZXVuZCwgUm9iZXJ0IEhhYXMsIEZhYnJpemlvIGRl IFJveWVzIE1lbGxvCi0tLQogZG9jL3NyYy9zZ21sL2xvZ2ljYWxkZWNvZGluZy5zZ21sIHwg MjEgKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMjEgaW5zZXJ0aW9u cygrKQogMTAwLjAlIGRvYy9zcmMvc2dtbC8KCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv bG9naWNhbGRlY29kaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbGRlY29kaW5nLnNn bWwKaW5kZXggNGU5MTJiNGJkNC4uMmU4YmVlMDMzZiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL2xvZ2ljYWxkZWNvZGluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsZGVj b2Rpbmcuc2dtbApAQCAtMzE2LDYgKzMxNiwyNyBAQCBwb3N0Z3Jlcz0jIHNlbGVjdCAqIGZy b20gcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdyZWdyZXNzaW9uX3Nsb3QnLCBOVUxM LCBOVQogICAgICBtYXkgY29uc3VtZSBjaGFuZ2VzIGZyb20gYSBzbG90IGF0IGFueSBnaXZl biB0aW1lLgogICAgIDwvcGFyYT4KIAorICAgIDxwYXJhPgorICAgICBBIGxvZ2ljYWwgcmVw bGljYXRpb24gc2xvdCBjYW4gYWxzbyBiZSBjcmVhdGVkIG9uIGEgaG90IHN0YW5kYnkuIFRv IHByZXZlbnQKKyAgICAgPGNvbW1hbmQ+VkFDVVVNPC9jb21tYW5kPiBmcm9tIHJlbW92aW5n IHJlcXVpcmVkIHJvd3MgZnJvbSB0aGUgc3lzdGVtCisgICAgIGNhdGFsb2dzLCA8dmFybmFt ZT5ob3Rfc3RhbmRieV9mZWVkYmFjazwvdmFybmFtZT4gc2hvdWxkIGJlIHNldCBvbiB0aGUK KyAgICAgc3RhbmRieS4gSW4gc3BpdGUgb2YgdGhhdCwgaWYgYW55IHJlcXVpcmVkIHJvd3Mg Z2V0IHJlbW92ZWQsIHRoZSBzbG90IGdldHMKKyAgICAgaW52YWxpZGF0ZWQuIEl0J3MgaGln aGx5IHJlY29tbWVuZGVkIHRvIHVzZSBhIHBoeXNpY2FsIHNsb3QgYmV0d2VlbiB0aGUgcHJp bWFyeQorICAgICBhbmQgdGhlIHN0YW5kYnkuIE90aGVyd2lzZSwgaG90X3N0YW5kYnlfZmVl ZGJhY2sgd2lsbCB3b3JrLCBidXQgb25seSB3aGlsZSB0aGUKKyAgICAgY29ubmVjdGlvbiBp cyBhbGl2ZSAoZm9yIGV4YW1wbGUgYSBub2RlIHJlc3RhcnQgd291bGQgYnJlYWsgaXQpLiBF eGlzdGluZworICAgICBsb2dpY2FsIHNsb3RzIG9uIHN0YW5kYnkgYWxzbyBnZXQgaW52YWxp ZGF0ZWQgaWYgd2FsX2xldmVsIG9uIHByaW1hcnkgaXMgcmVkdWNlZCB0bworICAgICBsZXNz IHRoYW4gJ2xvZ2ljYWwnLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBGb3Ig YSBsb2dpY2FsIHNsb3QgdG8gYmUgY3JlYXRlZCwgaXQgYnVpbGRzIGEgaGlzdG9yaWMgc25h cHNob3QsIGZvciB3aGljaAorICAgICBpbmZvcm1hdGlvbiBvZiBhbGwgdGhlIGN1cnJlbnRs eSBydW5uaW5nIHRyYW5zYWN0aW9ucyBpcyBlc3NlbnRpYWwuIE9uCisgICAgIHByaW1hcnks IHRoaXMgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlLCBidXQgb24gc3RhbmRieSwgdGhpcyBp bmZvcm1hdGlvbgorICAgICBoYXMgdG8gYmUgb2J0YWluZWQgZnJvbSBwcmltYXJ5LiBTbywg c2xvdCBjcmVhdGlvbiBtYXkgd2FpdCBmb3Igc29tZQorICAgICBhY3Rpdml0eSB0byBoYXBw ZW4gb24gdGhlIHByaW1hcnkuIElmIHRoZSBwcmltYXJ5IGlzIGlkbGUsIGNyZWF0aW5nIGEK KyAgICAgbG9naWNhbCBzbG90IG9uIHN0YW5kYnkgbWF5IHRha2UgYSBub3RpY2VhYmxlIHRp bWUuCisgICAgPC9wYXJhPgorCiAgICAgPGNhdXRpb24+CiAgICAgIDxwYXJhPgogICAgICAg UmVwbGljYXRpb24gc2xvdHMgcGVyc2lzdCBhY3Jvc3MgY3Jhc2hlcyBhbmQga25vdyBub3Ro aW5nIGFib3V0IHRoZSBzdGF0ZQotLSAKMi4zNC4xCgo= --------------xW006q159UiWPtHw9wcHAuVA Content-Type: text/plain; charset=UTF-8; name="v48-0005-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Disposition: attachment; filename*0="v48-0005-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSAzMDVlYjU4M2VkZjg5MDU3YjZjZDM5NTM5ZTE5MjBkYTEwYTAyNjllIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA3IEZlYiAyMDIzIDA5OjA0OjEyICswMDAwClN1YmplY3Q6IFtQQVRD SCB2NDggNS82XSBOZXcgVEFQIHRlc3QgZm9yIGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRi eS4KCkF1dGhvcjogQ3JhaWcgUmluZ2VyIChpbiBhbiBvbGRlciB2ZXJzaW9uKSwgQW1pdCBL aGFuZGVrYXIsIEJlcnRyYW5kIERyb3V2b3QKUmV2aWV3ZWQtQnk6IEJlcnRyYW5kIERyb3V2 b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVydCBIYWFzLCBGYWJyaXppbyBkZSBSb3llcyBNZWxs bwotLS0KIHNyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0gICAgICB8 ICAzOSArCiBzcmMvdGVzdC9yZWNvdmVyeS9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICAg fCAgIDEgKwogLi4uL3QvMDM0X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbCAgICAgICAg IHwgNzEwICsrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA3NTAgaW5zZXJ0 aW9ucygrKQogICA0LjQlIHNyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0LwogIDk1LjMl IHNyYy90ZXN0L3JlY292ZXJ5L3QvCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcGVybC9Qb3N0 Z3JlU1FML1Rlc3QvQ2x1c3Rlci5wbSBiL3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0 L0NsdXN0ZXIucG0KaW5kZXggMDQ5MjFjYTNhMy4uZmQ4MWRkY2YzOSAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1c3Rlci5wbQorKysgYi9zcmMvdGVz dC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtCkBAIC0zMDM3LDYgKzMwMzcsNDUg QEAgJFNJR3tURVJNfSA9ICRTSUd7SU5UfSA9IHN1YiB7CiAKID1wb2QKIAorPWl0ZW0gJG5v ZGUtPmNyZWF0ZV9sb2dpY2FsX3Nsb3Rfb25fc3RhbmRieShzZWxmLCBwcmltYXJ5LCBzbG90 X25hbWUsIGRibmFtZSkKKworQ3JlYXRlIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBvbiBn aXZlbiBzdGFuZGJ5CisKKz1jdXQKKworc3ViIGNyZWF0ZV9sb2dpY2FsX3Nsb3Rfb25fc3Rh bmRieQoreworCW15ICgkc2VsZiwgJHByaW1hcnksICRzbG90X25hbWUsICRkYm5hbWUpID0g QF87CisJbXkgKCRzdGRvdXQsICRzdGRlcnIpOworCisJbXkgJGhhbmRsZTsKKworCSRoYW5k bGUgPSBJUEM6OlJ1bjo6c3RhcnQoWydwZ19yZWN2bG9naWNhbCcsICctZCcsICRzZWxmLT5j b25uc3RyKCRkYm5hbWUpLCAnLVAnLCAndGVzdF9kZWNvZGluZycsICctUycsICRzbG90X25h bWUsICctLWNyZWF0ZS1zbG90J10sICc+JywgXCRzdGRvdXQsICcyPicsIFwkc3RkZXJyKTsK KworCSMgT25jZSBzbG90IHJlc3RhcnRfbHNuIGlzIGNyZWF0ZWQsIHRoZSBzdGFuZGJ5IGxv b2tzIGZvciB4bF9ydW5uaW5nX3hhY3RzCisJIyBXQUwgcmVjb3JkIGZyb20gdGhlIHJlc3Rh cnRfbHNuIG9ud2FyZHMuIFNvIGZpcnN0bHksIHdhaXQgdW50aWwgdGhlIHNsb3QKKwkjIHJl c3RhcnRfbHNuIGlzIGV2YWx1YXRlZC4KKworCSRzZWxmLT5wb2xsX3F1ZXJ5X3VudGlsKAor CQkncG9zdGdyZXMnLCBxcVsKKwkJU0VMRUNUIHJlc3RhcnRfbHNuIElTIE5PVCBOVUxMCisJ CUZST00gcGdfY2F0YWxvZy5wZ19yZXBsaWNhdGlvbl9zbG90cyBXSEVSRSBzbG90X25hbWUg PSAnJHNsb3RfbmFtZScKKwldKSBvciBkaWUgInRpbWVkIG91dCB3YWl0aW5nIGZvciBsb2dp Y2FsIHNsb3QgdG8gY2FsY3VsYXRlIGl0cyByZXN0YXJ0X2xzbiI7CisKKwkjIE5vdyBhcnJh bmdlIGZvciB0aGUgeGxfcnVubmluZ194YWN0cyByZWNvcmQgZm9yIHdoaWNoIHBnX3JlY3Zs b2dpY2FsCisJIyBpcyB3YWl0aW5nLgorCSMgTm90ZTogV3JpdGUgYSBDIGhlbHBlciBmdW5j dGlvbiB0byBjYWxsIExvZ1N0YW5kYnlTbmFwc2hvdCgpIGluc3RlYWQKKwkjIG9mIGFza2lu ZyBmb3IgYSBjaGVja3BvaW50LgorCSRwcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg J0NIRUNLUE9JTlQnKTsKKworCSRoYW5kbGUtPmZpbmlzaCgpOworCisJaXMoJHNlbGYtPnNs b3QoJHNsb3RfbmFtZSktPnsnc2xvdF90eXBlJ30sICdsb2dpY2FsJywgJHNsb3RfbmFtZSAu ICcgb24gc3RhbmRieSBjcmVhdGVkJykKKwkJb3IgZGllICJjb3VsZCBub3QgY3JlYXRlIHNs b3QiIC4gJHNsb3RfbmFtZTsKK30KKworPXBvZAorCiA9YmFjawogCiA9Y3V0CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWNvdmVyeS9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L3JlY292ZXJ5 L21lc29uLmJ1aWxkCmluZGV4IDIwOTExOGE2MzkuLmVjYTkwYzVjOGMgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5 L21lc29uLmJ1aWxkCkBAIC0zOSw2ICszOSw3IEBAIHRlc3RzICs9IHsKICAgICAgICd0LzAz MV9yZWNvdmVyeV9jb25mbGljdC5wbCcsCiAgICAgICAndC8wMzJfcmVsZmlsZW5vZGVfcmV1 c2UucGwnLAogICAgICAgJ3QvMDMzX3JlcGxheV90c3BfZHJvcHMucGwnLAorICAgICAgJ3Qv MDM0X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbCcsCiAgICAgXSwKICAgfSwKIH0KZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM0X3N0YW5kYnlfbG9naWNhbF9kZWNv ZGluZy5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM0X3N0YW5kYnlfbG9naWNhbF9kZWNv ZGluZy5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5jZjEyNzdi ZDFiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMzRfc3RhbmRi eV9sb2dpY2FsX2RlY29kaW5nLnBsCkBAIC0wLDAgKzEsNzEwIEBACisjIGxvZ2ljYWwgZGVj b2Rpbmcgb24gc3RhbmRieSA6IHRlc3QgbG9naWNhbCBkZWNvZGluZywKKyMgcmVjb3Zlcnkg Y29uZmxpY3QgYW5kIHN0YW5kYnkgcHJvbW90aW9uLgorCit1c2Ugc3RyaWN0OwordXNlIHdh cm5pbmdzOworCit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlIHRlc3RzID0+IDY3OworCitteSAo JHN0ZGluLCAkc3Rkb3V0LCAkc3RkZXJyLCAkY2FzY2FkaW5nX3N0ZG91dCwgJGNhc2NhZGlu Z19zdGRlcnIsICRyZXQsICRoYW5kbGUsICRzbG90KTsKKworbXkgJG5vZGVfcHJpbWFyeSA9 IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHJpbWFyeScpOworbXkgJG5vZGVf c3RhbmRieSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3RhbmRieScpOwor bXkgJG5vZGVfY2FzY2FkaW5nX3N0YW5kYnkgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy LT5uZXcoJ2Nhc2NhZGluZ19zdGFuZGJ5Jyk7CitteSAkZGVmYXVsdF90aW1lb3V0ID0gJFBv c3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQ7CitteSAkcmVzOworCisj IE5hbWUgZm9yIHRoZSBwaHlzaWNhbCBzbG90IG9uIHByaW1hcnkKK215ICRwcmltYXJ5X3Ns b3RuYW1lID0gJ3ByaW1hcnlfcGh5c2ljYWwnOworbXkgJHN0YW5kYnlfcGh5c2ljYWxfc2xv dG5hbWUgPSAnc3RhbmRieV9waHlzaWNhbCc7CisKKyMgZmluZCAkcGF0IGluIGxvZ2ZpbGUg b2YgJG5vZGUgYWZ0ZXIgJG9mZi10aCBieXRlCitzdWIgZmluZF9pbl9sb2cKK3sKKwlteSAo JG5vZGUsICRwYXQsICRvZmYpID0gQF87CisKKwkkb2ZmID0gMCB1bmxlc3MgZGVmaW5lZCAk b2ZmOworCW15ICRsb2cgPSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6c2x1cnBfZmlsZSgk bm9kZS0+bG9nZmlsZSk7CisJcmV0dXJuIDAgaWYgKGxlbmd0aCgkbG9nKSA8PSAkb2ZmKTsK KworCSRsb2cgPSBzdWJzdHIoJGxvZywgJG9mZik7CisKKwlyZXR1cm4gJGxvZyA9fiBtLyRw YXQvOworfQorCisjIEZldGNoIHhtaW4gY29sdW1ucyBmcm9tIHNsb3QncyBwZ19yZXBsaWNh dGlvbl9zbG90cyByb3csIGFmdGVyIHdhaXRpbmcgZm9yCisjIGdpdmVuIGJvb2xlYW4gY29u ZGl0aW9uIHRvIGJlIHRydWUgdG8gZW5zdXJlIHdlJ3ZlIHJlYWNoZWQgYSBxdWllc2NlbnQg c3RhdGUuCitzdWIgd2FpdF9mb3JfeG1pbnMKK3sKKwlteSAoJG5vZGUsICRzbG90bmFtZSwg JGNoZWNrX2V4cHIpID0gQF87CisKKwkkbm9kZS0+cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bv c3RncmVzJywgcXFbCisJCVNFTEVDVCAkY2hlY2tfZXhwcgorCQlGUk9NIHBnX2NhdGFsb2cu cGdfcmVwbGljYXRpb25fc2xvdHMKKwkJV0hFUkUgc2xvdF9uYW1lID0gJyRzbG90bmFtZSc7 CisJXSkgb3IgZGllICJUaW1lZCBvdXQgd2FpdGluZyBmb3Igc2xvdCB4bWlucyB0byBhZHZh bmNlIjsKK30KKworIyBDcmVhdGUgdGhlIHJlcXVpcmVkIGxvZ2ljYWwgc2xvdHMgb24gc3Rh bmRieS4KK3N1YiBjcmVhdGVfbG9naWNhbF9zbG90cworeworCW15ICgkbm9kZSkgPSBAXzsK Kwkkbm9kZS0+Y3JlYXRlX2xvZ2ljYWxfc2xvdF9vbl9zdGFuZGJ5KCRub2RlX3ByaW1hcnks ICdpbmFjdGl2ZXNsb3QnLCAndGVzdGRiJyk7CisJJG5vZGUtPmNyZWF0ZV9sb2dpY2FsX3Ns b3Rfb25fc3RhbmRieSgkbm9kZV9wcmltYXJ5LCAnYWN0aXZlc2xvdCcsICd0ZXN0ZGInKTsK K30KKworIyBEcm9wIHRoZSBsb2dpY2FsIHNsb3RzIG9uIHN0YW5kYnkuCitzdWIgZHJvcF9s b2dpY2FsX3Nsb3RzCit7CisJJG5vZGVfc3RhbmRieS0+cHNxbCgncG9zdGdyZXMnLCBxW1NF TEVDVCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Nsb3QoJ2luYWN0aXZlc2xvdCcpXSk7CisJJG5v ZGVfc3RhbmRieS0+cHNxbCgncG9zdGdyZXMnLCBxW1NFTEVDVCBwZ19kcm9wX3JlcGxpY2F0 aW9uX3Nsb3QoJ2FjdGl2ZXNsb3QnKV0pOworfQorCisjIEFjcXVpcmUgb25lIG9mIHRoZSBz dGFuZGJ5IGxvZ2ljYWwgc2xvdHMgY3JlYXRlZCBieSBjcmVhdGVfbG9naWNhbF9zbG90cygp LgorIyBJbiBjYXNlIHdhaXQgaXMgdHJ1ZSB3ZSBhcmUgd2FpdGluZyBmb3IgYW4gYWN0aXZl IHBpZCBvbiB0aGUgJ2FjdGl2ZXNsb3QnIHNsb3QuCisjIElmIHdhaXQgaXMgbm90IHRydWUg aXQgbWVhbnMgd2UgYXJlIHRlc3RpbmcgYSBrbm93biBmYWlsdXJlIHNjZW5hcmlvLgorc3Vi IG1ha2Vfc2xvdF9hY3RpdmUKK3sKKwlteSAoJG5vZGUsICR3YWl0LCAkdG9fc3Rkb3V0LCAk dG9fc3RkZXJyKSA9IEBfOworCW15ICRzbG90X3VzZXJfaGFuZGxlOworCisJJHNsb3RfdXNl cl9oYW5kbGUgPSBJUEM6OlJ1bjo6c3RhcnQoWydwZ19yZWN2bG9naWNhbCcsICctZCcsICRu b2RlLT5jb25uc3RyKCd0ZXN0ZGInKSwgJy1TJywgJ2FjdGl2ZXNsb3QnLCAnLW8nLCAnaW5j bHVkZS14aWRzPTAnLCAnLW8nLCAnc2tpcC1lbXB0eS14YWN0cz0xJywgJy0tbm8tbG9vcCcs ICctLXN0YXJ0JywgJy1mJywgJy0nXSwgJz4nLCAkdG9fc3Rkb3V0LCAnMj4nLCAkdG9fc3Rk ZXJyKTsKKworCWlmICgkd2FpdCkKKwl7CisJCSMgbWFrZSBzdXJlIGFjdGl2ZXNsb3QgaXMg aW4gdXNlCisJCSRub2RlLT5wb2xsX3F1ZXJ5X3VudGlsKCd0ZXN0ZGInLAorCQkJIlNFTEVD VCBFWElTVFMgKFNFTEVDVCAxIEZST00gcGdfcmVwbGljYXRpb25fc2xvdHMgV0hFUkUgc2xv dF9uYW1lID0gJ2FjdGl2ZXNsb3QnIEFORCBhY3RpdmVfcGlkIElTIE5PVCBOVUxMKSIKKwkJ KSBvciBkaWUgInNsb3QgbmV2ZXIgYmVjYW1lIGFjdGl2ZSI7CisJfQorCXJldHVybiAkc2xv dF91c2VyX2hhbmRsZTsKK30KKworIyBDaGVjayBwZ19yZWN2bG9naWNhbCBzdGRlcnIKK3N1 YiBjaGVja19wZ19yZWN2bG9naWNhbF9zdGRlcnIKK3sKKwlteSAoJHNsb3RfdXNlcl9oYW5k bGUsICRjaGVja19zdGRlcnIpID0gQF87CisJbXkgJHJldHVybjsKKworCSMgb3VyIGNsaWVu dCBzaG91bGQndmUgdGVybWluYXRlZCBpbiByZXNwb25zZSB0byB0aGUgd2Fsc2VuZGVyIGVy cm9yCisJJHNsb3RfdXNlcl9oYW5kbGUtPmZpbmlzaDsKKwkkcmV0dXJuID0gJD87CisJY21w X29rKCRyZXR1cm4sICIhPSIsIDAsICJwZ19yZWN2bG9naWNhbCBleGl0ZWQgbm9uLXplcm8i KTsKKwlpZiAoJHJldHVybikgeworCQlsaWtlKCRzdGRlcnIsIHFyLyRjaGVja19zdGRlcnIv LCAnc2xvdCBoYXMgYmVlbiBpbnZhbGlkYXRlZCcpOworCX0KKworCXJldHVybiAwOworfQor CisjIENoZWNrIGlmIGFsbCB0aGUgc2xvdHMgb24gc3RhbmRieSBhcmUgZHJvcHBlZC4gVGhl c2UgaW5jbHVkZSB0aGUgJ2FjdGl2ZXNsb3QnCisjIHRoYXQgd2FzIGFjcXVpcmVkIGJ5IG1h a2Vfc2xvdF9hY3RpdmUoKSwgYW5kIHRoZSBub24tYWN0aXZlICdpbmFjdGl2ZXNsb3QnLgor c3ViIGNoZWNrX3Nsb3RzX2Ryb3BwZWQKK3sKKwlteSAoJHNsb3RfdXNlcl9oYW5kbGUpID0g QF87CisKKwlpcygkbm9kZV9zdGFuZGJ5LT5zbG90KCdpbmFjdGl2ZXNsb3QnKS0+eydzbG90 X3R5cGUnfSwgJycsICdpbmFjdGl2ZXNsb3Qgb24gc3RhbmRieSBkcm9wcGVkJyk7CisJaXMo JG5vZGVfc3RhbmRieS0+c2xvdCgnYWN0aXZlc2xvdCcpLT57J3Nsb3RfdHlwZSd9LCAnJywg J2FjdGl2ZXNsb3Qgb24gc3RhbmRieSBkcm9wcGVkJyk7CisKKwljaGVja19wZ19yZWN2bG9n aWNhbF9zdGRlcnIoJHNsb3RfdXNlcl9oYW5kbGUsICJjb25mbGljdCB3aXRoIHJlY292ZXJ5 Iik7Cit9CisKKyMgQ2hlY2sgaWYgYWxsIHRoZSBzbG90cyBvbiBzdGFuZGJ5IGFyZSBkcm9w cGVkLiBUaGVzZSBpbmNsdWRlIHRoZSAnYWN0aXZlc2xvdCcKKyMgdGhhdCB3YXMgYWNxdWly ZWQgYnkgbWFrZV9zbG90X2FjdGl2ZSgpLCBhbmQgdGhlIG5vbi1hY3RpdmUgJ2luYWN0aXZl c2xvdCcuCitzdWIgY2hhbmdlX2hvdF9zdGFuZGJ5X2ZlZWRiYWNrX2FuZF93YWl0X2Zvcl94 bWlucworeworCW15ICgkaHNmLCAkaW52YWxpZGF0ZWQpID0gQF87CisKKwkkbm9kZV9zdGFu ZGJ5LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJyxxcVsKKwlob3Rfc3RhbmRieV9m ZWVkYmFjayA9ICRoc2YKKwldKTsKKworCSRub2RlX3N0YW5kYnktPnJlbG9hZDsKKworCWlm ICgkaHNmICYmICRpbnZhbGlkYXRlZCkKKwl7CisJCSMgV2l0aCBob3Rfc3RhbmRieV9mZWVk YmFjayBvbiwgeG1pbiBzaG91bGQgYWR2YW5jZSwKKwkJIyBidXQgY2F0YWxvZ194bWluIHNo b3VsZCBzdGlsbCByZW1haW4gTlVMTCBzaW5jZSB0aGVyZSBpcyBubyBsb2dpY2FsIHNsb3Qu CisJCXdhaXRfZm9yX3htaW5zKCRub2RlX3ByaW1hcnksICRwcmltYXJ5X3Nsb3RuYW1lLAor CQkJICAgInhtaW4gSVMgTk9UIE5VTEwgQU5EIGNhdGFsb2dfeG1pbiBJUyBOVUxMIik7CisJ fQorCWVsc2lmICgkaHNmKQorCXsKKwkJIyBXaXRoIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIG9u LCB4bWluIGFuZCBjYXRhbG9nX3htaW4gc2hvdWxkIGFkdmFuY2UuCisJCXdhaXRfZm9yX3ht aW5zKCRub2RlX3ByaW1hcnksICRwcmltYXJ5X3Nsb3RuYW1lLAorCQkJICAgInhtaW4gSVMg Tk9UIE5VTEwgQU5EIGNhdGFsb2dfeG1pbiBJUyBOT1QgTlVMTCIpOworCX0KKwllbHNlCisJ eworCQkjIEJvdGggc2hvdWxkIGJlIE5VTEwgc2luY2UgaHNfZmVlZGJhY2sgaXMgb2ZmCisJ CXdhaXRfZm9yX3htaW5zKCRub2RlX3ByaW1hcnksICRwcmltYXJ5X3Nsb3RuYW1lLAorCQkJ ICAgInhtaW4gSVMgTlVMTCBBTkQgY2F0YWxvZ194bWluIElTIE5VTEwiKTsKKworCX0KK30K KworIyBDaGVjayBjb25mbGljdGluZyBzdGF0dXMgaW4gcGdfcmVwbGljYXRpb25fc2xvdHMu CitzdWIgY2hlY2tfc2xvdHNfY29uZmxpY3Rpbmdfc3RhdHVzCit7CisJbXkgKCRjb25mbGlj dGluZykgPSBAXzsKKworCWlmICgkY29uZmxpY3RpbmcpCisJeworCQkkcmVzID0gJG5vZGVf c3RhbmRieS0+c2FmZV9wc3FsKAorCQkJCSdwb3N0Z3JlcycsIHFxKAorCQkJCSBzZWxlY3Qg Ym9vbF9hbmQoY29uZmxpY3RpbmcpIGZyb20gcGdfcmVwbGljYXRpb25fc2xvdHM7KSk7CisK KwkJaXMoJHJlcywgJ3QnLAorCQkJIkxvZ2ljYWwgc2xvdHMgYXJlIHJlcG9ydGVkIGFzIGNv bmZsaWN0aW5nIik7CisJfQorCWVsc2UKKwl7CisJCSRyZXMgPSAkbm9kZV9zdGFuZGJ5LT5z YWZlX3BzcWwoCisJCQkJJ3Bvc3RncmVzJywgcXEoCisJCQkJc2VsZWN0IGJvb2xfb3IoY29u ZmxpY3RpbmcpIGZyb20gcGdfcmVwbGljYXRpb25fc2xvdHM7KSk7CisKKwkJaXMoJHJlcywg J2YnLAorCQkJIkxvZ2ljYWwgc2xvdHMgYXJlIHJlcG9ydGVkIGFzIG5vbiBjb25mbGljdGlu ZyIpOworCX0KK30KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIEluaXRpYWxpemUg cHJpbWFyeSBub2RlCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworJG5vZGVfcHJpbWFy eS0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+IDEsIGhhc19hcmNoaXZpbmcgPT4gMSk7Cisk bm9kZV9wcmltYXJ5LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgcXsKK3dhbF9s ZXZlbCA9ICdsb2dpY2FsJworbWF4X3JlcGxpY2F0aW9uX3Nsb3RzID0gNAorbWF4X3dhbF9z ZW5kZXJzID0gNAorbG9nX21pbl9tZXNzYWdlcyA9ICdkZWJ1ZzInCitsb2dfZXJyb3JfdmVy Ym9zaXR5ID0gdmVyYm9zZQorfSk7Ciskbm9kZV9wcmltYXJ5LT5kdW1wX2luZm87Ciskbm9k ZV9wcmltYXJ5LT5zdGFydDsKKworJG5vZGVfcHJpbWFyeS0+cHNxbCgncG9zdGdyZXMnLCBx W0NSRUFURSBEQVRBQkFTRSB0ZXN0ZGJdKTsKKworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3Fs KCd0ZXN0ZGInLCBxcVtTRUxFQ1QgKiBGUk9NIHBnX2NyZWF0ZV9waHlzaWNhbF9yZXBsaWNh dGlvbl9zbG90KCckcHJpbWFyeV9zbG90bmFtZScpO10pOworCisjIENoZWNrIGNvbmZsaWN0 aW5nIGlzIE5VTEwgZm9yIHBoeXNpY2FsIHNsb3QKKyRyZXMgPSAkbm9kZV9wcmltYXJ5LT5z YWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHFxWworCQkgU0VMRUNUIGNvbmZsaWN0aW5nIGlz IG51bGwgRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90cyB3aGVyZSBzbG90X25hbWUgPSAnJHBy aW1hcnlfc2xvdG5hbWUnO10pOworCitpcygkcmVzLCAndCcsCisJIlBoeXNpY2FsIHNsb3Qg cmVwb3J0cyBjb25mbGljdGluZyBhcyBOVUxMIik7CisKK215ICRiYWNrdXBfbmFtZSA9ICdi MSc7Ciskbm9kZV9wcmltYXJ5LT5iYWNrdXAoJGJhY2t1cF9uYW1lKTsKKworIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKKyMgSW5pdGlhbGl6ZSBzdGFuZGJ5IG5vZGUKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisKKyRub2RlX3N0YW5kYnktPmluaXRfZnJvbV9iYWNrdXAoCisJJG5v ZGVfcHJpbWFyeSwgJGJhY2t1cF9uYW1lLAorCWhhc19zdHJlYW1pbmcgPT4gMSwKKwloYXNf cmVzdG9yaW5nID0+IDEpOworJG5vZGVfc3RhbmRieS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVz cWwuY29uZicsCisJcXFbcHJpbWFyeV9zbG90X25hbWUgPSAnJHByaW1hcnlfc2xvdG5hbWUn XSk7Ciskbm9kZV9zdGFuZGJ5LT5zdGFydDsKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX2Nh dGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3ByaW1hcnktPmxzbignZmx1 c2gnKSk7Ciskbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW1NFTEVDVCAq IEZST00gcGdfY3JlYXRlX3BoeXNpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoJyRzdGFuZGJ5X3Bo eXNpY2FsX3Nsb3RuYW1lJyk7XSk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIElu aXRpYWxpemUgY2FzY2FkaW5nIHN0YW5kYnkgbm9kZQorIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKyRub2RlX3N0YW5kYnktPmJhY2t1cCgkYmFja3VwX25hbWUpOworJG5vZGVfY2FzY2Fk aW5nX3N0YW5kYnktPmluaXRfZnJvbV9iYWNrdXAoCisJJG5vZGVfc3RhbmRieSwgJGJhY2t1 cF9uYW1lLAorCWhhc19zdHJlYW1pbmcgPT4gMSwKKwloYXNfcmVzdG9yaW5nID0+IDEpOwor JG5vZGVfY2FzY2FkaW5nX3N0YW5kYnktPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYn LAorCXFxW3ByaW1hcnlfc2xvdF9uYW1lID0gJyRzdGFuZGJ5X3BoeXNpY2FsX3Nsb3RuYW1l J10pOworJG5vZGVfY2FzY2FkaW5nX3N0YW5kYnktPnN0YXJ0OworJG5vZGVfc3RhbmRieS0+ d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9jYXNjYWRpbmdfc3RhbmRieSwgJ3JlcGxheScsICRu b2RlX3ByaW1hcnktPmxzbignZmx1c2gnKSk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdGhhdCBsb2dpY2FsIGRlY29k aW5nIG9uIHRoZSBzdGFuZGJ5CisjIGJlaGF2ZXMgY29ycmVjdGx5LgorIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBjcmVhdGUgdGhl IGxvZ2ljYWwgc2xvdHMKK2NyZWF0ZV9sb2dpY2FsX3Nsb3RzKCRub2RlX3N0YW5kYnkpOwor Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW0NSRUFURSBUQUJMRSBk ZWNvZGluZ190ZXN0KHggaW50ZWdlciwgeSB0ZXh0KTtdKTsKKyRub2RlX3ByaW1hcnktPnNh ZmVfcHNxbCgndGVzdGRiJywgcXFbSU5TRVJUIElOVE8gZGVjb2RpbmdfdGVzdCh4LHkpIFNF TEVDVCBzLCBzOjp0ZXh0IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIHM7XSk7CisKKyRu b2RlX3ByaW1hcnktPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScs ICRub2RlX3ByaW1hcnktPmxzbignZmx1c2gnKSk7CisKK215ICRyZXN1bHQgPSAkbm9kZV9z dGFuZGJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFbU0VMRUNUIHBnX2xvZ2ljYWxfc2xv dF9nZXRfY2hhbmdlcygnYWN0aXZlc2xvdCcsIE5VTEwsIE5VTEwpO10pOworCisjIHRlc3Qg aWYgYmFzaWMgZGVjb2Rpbmcgd29ya3MKK2lzKHNjYWxhcihteSBAZm9vYmFyID0gc3BsaXQg L14vbSwgJHJlc3VsdCksCisJMTQsICdEZWNvZGluZyBwcm9kdWNlZCAxNCByb3dzICgyIEJF R0lOL0NPTU1JVCBhbmQgMTAgcm93cyknKTsKKworIyBJbnNlcnQgc29tZSByb3dzIGFuZCB2 ZXJpZnkgdGhhdCB3ZSBnZXQgdGhlIHNhbWUgcmVzdWx0cyBmcm9tIHBnX3JlY3Zsb2dpY2Fs CisjIGFuZCB0aGUgU1FMIGludGVyZmFjZS4KKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgn dGVzdGRiJywKKwlxcVtJTlNFUlQgSU5UTyBkZWNvZGluZ190ZXN0KHgseSkgU0VMRUNUIHMs IHM6OnRleHQgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSw0KSBzO10KKyk7CisKK215ICRleHBl Y3RlZCA9IHF7QkVHSU4KK3RhYmxlIHB1YmxpYy5kZWNvZGluZ190ZXN0OiBJTlNFUlQ6IHhb aW50ZWdlcl06MSB5W3RleHRdOicxJwordGFibGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6IElO U0VSVDogeFtpbnRlZ2VyXToyIHlbdGV4dF06JzInCit0YWJsZSBwdWJsaWMuZGVjb2Rpbmdf dGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjMgeVt0ZXh0XTonMycKK3RhYmxlIHB1YmxpYy5k ZWNvZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06NCB5W3RleHRdOic0JworQ09NTUlU fTsKKworJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAn cmVwbGF5JywgJG5vZGVfcHJpbWFyeS0+bHNuKCdmbHVzaCcpKTsKKworbXkgJHN0ZG91dF9z cWwgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFbU0VMRUNUIGRh dGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfcGVla19jaGFuZ2VzKCdhY3RpdmVzbG90JywgTlVM TCwgTlVMTCwgJ2luY2x1ZGUteGlkcycsICcwJywgJ3NraXAtZW1wdHkteGFjdHMnLCAnMScp O10KKyk7CisKK2lzKCRzdGRvdXRfc3FsLCAkZXhwZWN0ZWQsICdnb3QgZXhwZWN0ZWQgb3V0 cHV0IGZyb20gU1FMIGRlY29kaW5nIHNlc3Npb24nKTsKKworbXkgJGVuZHBvcyA9ICRub2Rl X3N0YW5kYnktPnNhZmVfcHNxbCgndGVzdGRiJywKKwkiU0VMRUNUIGxzbiBGUk9NIHBnX2xv Z2ljYWxfc2xvdF9wZWVrX2NoYW5nZXMoJ2FjdGl2ZXNsb3QnLCBOVUxMLCBOVUxMKSBPUkRF UiBCWSBsc24gREVTQyBMSU1JVCAxOyIKKyk7CisKKyMgSW5zZXJ0IHNvbWUgcm93cyBhZnRl ciAkZW5kcG9zLCB3aGljaCB3ZSB3b24ndCByZWFkLgorJG5vZGVfcHJpbWFyeS0+c2FmZV9w c3FsKCd0ZXN0ZGInLAorCXFxW0lOU0VSVCBJTlRPIGRlY29kaW5nX3Rlc3QoeCx5KSBTRUxF Q1Qgcywgczo6dGV4dCBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1LDUwKSBzO10KKyk7CisKKyRu b2RlX3ByaW1hcnktPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScs ICRub2RlX3ByaW1hcnktPmxzbignZmx1c2gnKSk7CisKK215ICRzdGRvdXRfcmVjdiA9ICRu b2RlX3N0YW5kYnktPnBnX3JlY3Zsb2dpY2FsX3VwdG8oCisgICAgJ3Rlc3RkYicsICdhY3Rp dmVzbG90JywgJGVuZHBvcywgJGRlZmF1bHRfdGltZW91dCwKKyAgICAnaW5jbHVkZS14aWRz JyAgICAgPT4gJzAnLAorICAgICdza2lwLWVtcHR5LXhhY3RzJyA9PiAnMScpOworY2hvbXAo JHN0ZG91dF9yZWN2KTsKK2lzKCRzdGRvdXRfcmVjdiwgJGV4cGVjdGVkLAorICAgICdnb3Qg c2FtZSBleHBlY3RlZCBvdXRwdXQgZnJvbSBwZ19yZWN2bG9naWNhbCBkZWNvZGluZyBzZXNz aW9uJyk7CisKKyRub2RlX3N0YW5kYnktPnBvbGxfcXVlcnlfdW50aWwoJ3Rlc3RkYicsCisJ IlNFTEVDVCBFWElTVFMgKFNFTEVDVCAxIEZST00gcGdfcmVwbGljYXRpb25fc2xvdHMgV0hF UkUgc2xvdF9uYW1lID0gJ2FjdGl2ZXNsb3QnIEFORCBhY3RpdmVfcGlkIElTIE5VTEwpIgor KSBvciBkaWUgInNsb3QgbmV2ZXIgYmVjYW1lIGluYWN0aXZlIjsKKworJHN0ZG91dF9yZWN2 ID0gJG5vZGVfc3RhbmRieS0+cGdfcmVjdmxvZ2ljYWxfdXB0bygKKyAgICAndGVzdGRiJywg J2FjdGl2ZXNsb3QnLCAkZW5kcG9zLCAkZGVmYXVsdF90aW1lb3V0LAorICAgICdpbmNsdWRl LXhpZHMnICAgICA9PiAnMCcsCisgICAgJ3NraXAtZW1wdHkteGFjdHMnID0+ICcxJyk7Citj aG9tcCgkc3Rkb3V0X3JlY3YpOworaXMoJHN0ZG91dF9yZWN2LCAnJywgJ3BnX3JlY3Zsb2dp Y2FsIGFja25vd2xlZGdlZCBjaGFuZ2VzJyk7CisKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAnQ1JFQVRFIERBVEFCQVNFIG90aGVyZGInKTsKKworaXMoICRub2Rl X3ByaW1hcnktPnBzcWwoCisgICAgICAgICdvdGhlcmRiJywKKyAgICAgICAgIlNFTEVDVCBs c24gRlJPTSBwZ19sb2dpY2FsX3Nsb3RfcGVla19jaGFuZ2VzKCdhY3RpdmVzbG90JywgTlVM TCwgTlVMTCkgT1JERVIgQlkgbHNuIERFU0MgTElNSVQgMTsiCisgICAgKSwKKyAgICAzLAor ICAgICdyZXBsYXlpbmcgbG9naWNhbCBzbG90IGZyb20gYW5vdGhlciBkYXRhYmFzZSBmYWls cycpOworCisjIGRyb3AgdGhlIGxvZ2ljYWwgc2xvdHMKK2Ryb3BfbG9naWNhbF9zbG90cygp OworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworIyBSZWNvdmVyeSBjb25mbGljdDogSW52YWxpZGF0ZSBjb25mbGljdGluZyBzbG90cywg aW5jbHVkaW5nIGluLXVzZSBzbG90cworIyBTY2VuYXJpbyAxOiBob3Rfc3RhbmRieV9mZWVk YmFjayBvZmYgYW5kIHZhY3V1bSBGVUxMCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIGNyZWF0ZSB0aGUgbG9naWNhbCBzbG90cwor Y3JlYXRlX2xvZ2ljYWxfc2xvdHMoJG5vZGVfc3RhbmRieSk7CisKKyMgT25lIHdheSB0byBw cm9kdWNlIHJlY292ZXJ5IGNvbmZsaWN0IGlzIHRvIGNyZWF0ZS9kcm9wIGEgcmVsYXRpb24g YW5kCisjIGxhdW5jaCBhIHZhY3V1bSBmdWxsIG9uIHBnX2NsYXNzIHdpdGggaG90X3N0YW5k YnlfZmVlZGJhY2sgdHVybmVkIG9mZiBvbgorIyB0aGUgc3RhbmRieS4KK2NoYW5nZV9ob3Rf c3RhbmRieV9mZWVkYmFja19hbmRfd2FpdF9mb3JfeG1pbnMoMCwxKTsKKworJGhhbmRsZSA9 IG1ha2Vfc2xvdF9hY3RpdmUoJG5vZGVfc3RhbmRieSwgMSwgXCRzdGRvdXQsIFwkc3RkZXJy KTsKKworIyBUaGlzIHNob3VsZCB0cmlnZ2VyIHRoZSBjb25mbGljdAorJG5vZGVfcHJpbWFy eS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtDUkVBVEUgVEFCTEUgY29uZmxpY3RfdGVzdCh4 IGludGVnZXIsIHkgdGV4dCk7XSk7Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3Rk YicsIHFxW0RST1AgVEFCTEUgY29uZmxpY3RfdGVzdDtdKTsKKyRub2RlX3ByaW1hcnktPnNh ZmVfcHNxbCgndGVzdGRiJywgJ1ZBQ1VVTSBmdWxsIHBnX2NsYXNzOycpOworCiskbm9kZV9w cmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9k ZV9wcmltYXJ5LT5sc24oJ2ZsdXNoJykpOworCisjIG1lc3NhZ2Ugc2hvdWxkIGJlIGlzc3Vl ZAorb2soIGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGlu ZyBzbG90IFwiaW5hY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCByZWNv dmVyeSIpLAorICAnaW5hY3RpdmVzbG90IHNsb3QgaW52YWxpZGF0aW9uIGlzIGxvZ2dlZCB3 aXRoIHZhY3V1bSBGVUxMIG9uIHBnX2NsYXNzJyk7CisKK29rKCBmaW5kX2luX2xvZygKKyAg ICRub2RlX3N0YW5kYnksCisgICJpbnZhbGlkYXRpbmcgc2xvdCBcImFjdGl2ZXNsb3RcIiBi ZWNhdXNlIGl0IGNvbmZsaWN0cyB3aXRoIHJlY292ZXJ5IiksCisgICdhY3RpdmVzbG90IHNs b3QgaW52YWxpZGF0aW9uIGlzIGxvZ2dlZCB3aXRoIHZhY3V1bSBGVUxMIG9uIHBnX2NsYXNz Jyk7CisKKyMgVmVyaWZ5IHRoYXQgcGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMuY29uZmxf YWN0aXZlX2xvZ2ljYWxzbG90IGhhcyBiZWVuIHVwZGF0ZWQKK29rKCAkbm9kZV9zdGFuZGJ5 LT5wb2xsX3F1ZXJ5X3VudGlsKAorCSdwb3N0Z3JlcycsCisJInNlbGVjdCAoY29uZmxfYWN0 aXZlX2xvZ2ljYWxzbG90ID0gMSkgZnJvbSBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cyB3 aGVyZSBkYXRuYW1lID0gJ3Rlc3RkYiciLCAndCcpLAorCSdjb25mbF9hY3RpdmVfbG9naWNh bHNsb3QgdXBkYXRlZCcpIG9yIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgY29uZmxfYWN0aXZl X2xvZ2ljYWxzbG90IHRvIGJlIHVwZGF0ZWQiOworCisjIFZlcmlmeSBzbG90cyBhcmUgcmVw b3J0ZWQgYXMgY29uZmxpY3RpbmcgaW4gcGdfcmVwbGljYXRpb25fc2xvdHMKK2NoZWNrX3Ns b3RzX2NvbmZsaWN0aW5nX3N0YXR1cygxKTsKKworJGhhbmRsZSA9IG1ha2Vfc2xvdF9hY3Rp dmUoJG5vZGVfc3RhbmRieSwgMCwgXCRzdGRvdXQsIFwkc3RkZXJyKTsKKworIyBXZSBhcmUg bm90IGFibGUgdG8gcmVhZCBmcm9tIHRoZSBzbG90IGFzIGl0IGhhcyBiZWVuIGludmFsaWRh dGVkCitjaGVja19wZ19yZWN2bG9naWNhbF9zdGRlcnIoJGhhbmRsZSwgImNhbm5vdCByZWFk IGZyb20gbG9naWNhbCByZXBsaWNhdGlvbiBzbG90IFwiYWN0aXZlc2xvdFwiIik7CisKKyMg VHVybiBob3Rfc3RhbmRieV9mZWVkYmFjayBiYWNrIG9uCitjaGFuZ2VfaG90X3N0YW5kYnlf ZmVlZGJhY2tfYW5kX3dhaXRfZm9yX3htaW5zKDEsMSk7CisKKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFJlY292ZXJ5IGNvbmZsaWN0 OiBJbnZhbGlkYXRlIGNvbmZsaWN0aW5nIHNsb3RzLCBpbmNsdWRpbmcgaW4tdXNlIHNsb3Rz CisjIFNjZW5hcmlvIDI6IGNvbmZsaWN0IGR1ZSB0byByb3cgcmVtb3ZhbCB3aXRoIGhvdF9z dGFuZGJ5X2ZlZWRiYWNrIG9mZi4KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgZ2V0IHRoZSBwb3NpdGlvbiB0byBzZWFyY2ggZnJv bSBpbiB0aGUgc3RhbmRieSBsb2dmaWxlCitteSAkbG9nc3RhcnQgPSAtcyAkbm9kZV9zdGFu ZGJ5LT5sb2dmaWxlOworCisjIGRyb3AgdGhlIGxvZ2ljYWwgc2xvdHMKK2Ryb3BfbG9naWNh bF9zbG90cygpOworCisjIGNyZWF0ZSB0aGUgbG9naWNhbCBzbG90cworY3JlYXRlX2xvZ2lj YWxfc2xvdHMoJG5vZGVfc3RhbmRieSk7CisKKyMgT25lIHdheSB0byBwcm9kdWNlIHJlY292 ZXJ5IGNvbmZsaWN0IGlzIHRvIGNyZWF0ZS9kcm9wIGEgcmVsYXRpb24gYW5kCisjIGxhdW5j aCBhIHZhY3V1bSBvbiBwZ19jbGFzcyB3aXRoIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIHR1cm5l ZCBvZmYgb24gdGhlIHN0YW5kYnkuCitjaGFuZ2VfaG90X3N0YW5kYnlfZmVlZGJhY2tfYW5k X3dhaXRfZm9yX3htaW5zKDAsMSk7CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKCRu b2RlX3N0YW5kYnksIDEsIFwkc3Rkb3V0LCBcJHN0ZGVycik7CisKKyMgVGhpcyBzaG91bGQg dHJpZ2dlciB0aGUgY29uZmxpY3QKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRi JywgcXFbQ1JFQVRFIFRBQkxFIGNvbmZsaWN0X3Rlc3QoeCBpbnRlZ2VyLCB5IHRleHQpO10p OworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtEUk9QIFRBQkxFIGNv bmZsaWN0X3Rlc3Q7XSk7Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsICdW QUNVVU0gcGdfY2xhc3M7Jyk7CisKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX2NhdGNodXAo JG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3ByaW1hcnktPmxzbignZmx1c2gnKSk7 CisKKyMgbWVzc2FnZSBzaG91bGQgYmUgaXNzdWVkCitvayggZmluZF9pbl9sb2coCisgICAk bm9kZV9zdGFuZGJ5LAorICAiaW52YWxpZGF0aW5nIHNsb3QgXCJpbmFjdGl2ZXNsb3RcIiBi ZWNhdXNlIGl0IGNvbmZsaWN0cyB3aXRoIHJlY292ZXJ5IiwgJGxvZ3N0YXJ0KSwKKyAgJ2lu YWN0aXZlc2xvdCBzbG90IGludmFsaWRhdGlvbiBpcyBsb2dnZWQgd2l0aCB2YWN1dW0gb24g cGdfY2xhc3MnKTsKKworb2soIGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAg ImludmFsaWRhdGluZyBzbG90IFwiYWN0aXZlc2xvdFwiIGJlY2F1c2UgaXQgY29uZmxpY3Rz IHdpdGggcmVjb3ZlcnkiLCAkbG9nc3RhcnQpLAorICAnYWN0aXZlc2xvdCBzbG90IGludmFs aWRhdGlvbiBpcyBsb2dnZWQgd2l0aCB2YWN1dW0gb24gcGdfY2xhc3MnKTsKKworIyBWZXJp ZnkgdGhhdCBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cy5jb25mbF9hY3RpdmVfbG9naWNh bHNsb3QgaGFzIGJlZW4gdXBkYXRlZAorIyB3ZSBub3cgZXhwZWN0IDIgY29uZmxpY3RzIHJl cG9ydGVkIGFzIHRoZSBjb3VudGVyIHBlcnNpc3QgYWNyb3NzIHJlbG9hZHMKK29rKCAkbm9k ZV9zdGFuZGJ5LT5wb2xsX3F1ZXJ5X3VudGlsKAorCSdwb3N0Z3JlcycsCisJInNlbGVjdCAo Y29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90ID0gMikgZnJvbSBwZ19zdGF0X2RhdGFiYXNlX2Nv bmZsaWN0cyB3aGVyZSBkYXRuYW1lID0gJ3Rlc3RkYiciLCAndCcpLAorCSdjb25mbF9hY3Rp dmVfbG9naWNhbHNsb3QgdXBkYXRlZCcpIG9yIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgY29u ZmxfYWN0aXZlX2xvZ2ljYWxzbG90IHRvIGJlIHVwZGF0ZWQiOworCisjIFZlcmlmeSBzbG90 cyBhcmUgcmVwb3J0ZWQgYXMgY29uZmxpY3RpbmcgaW4gcGdfcmVwbGljYXRpb25fc2xvdHMK K2NoZWNrX3Nsb3RzX2NvbmZsaWN0aW5nX3N0YXR1cygxKTsKKworJGhhbmRsZSA9IG1ha2Vf c2xvdF9hY3RpdmUoJG5vZGVfc3RhbmRieSwgMCwgXCRzdGRvdXQsIFwkc3RkZXJyKTsKKwor IyBXZSBhcmUgbm90IGFibGUgdG8gcmVhZCBmcm9tIHRoZSBzbG90IGFzIGl0IGhhcyBiZWVu IGludmFsaWRhdGVkCitjaGVja19wZ19yZWN2bG9naWNhbF9zdGRlcnIoJGhhbmRsZSwgImNh bm5vdCByZWFkIGZyb20gbG9naWNhbCByZXBsaWNhdGlvbiBzbG90IFwiYWN0aXZlc2xvdFwi Iik7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisjIFJlY292ZXJ5IGNvbmZsaWN0OiBTYW1lIGFzIFNjZW5hcmlvIDIgYnV0IG9uIGEg bm9uIGNhdGFsb2cgdGFibGUKKyMgU2NlbmFyaW8gMzogTm8gY29uZmxpY3QgZXhwZWN0ZWQu CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor CisjIGdldCB0aGUgcG9zaXRpb24gdG8gc2VhcmNoIGZyb20gaW4gdGhlIHN0YW5kYnkgbG9n ZmlsZQorJGxvZ3N0YXJ0ID0gLXMgJG5vZGVfc3RhbmRieS0+bG9nZmlsZTsKKworIyBkcm9w IHRoZSBsb2dpY2FsIHNsb3RzCitkcm9wX2xvZ2ljYWxfc2xvdHMoKTsKKworIyBjcmVhdGUg dGhlIGxvZ2ljYWwgc2xvdHMKK2NyZWF0ZV9sb2dpY2FsX3Nsb3RzKCRub2RlX3N0YW5kYnkp OworCisjIHB1dCBob3Qgc3RhbmRieSBmZWVkYmFjayB0byBvZmYKK2NoYW5nZV9ob3Rfc3Rh bmRieV9mZWVkYmFja19hbmRfd2FpdF9mb3JfeG1pbnMoMCwxKTsKKworJGhhbmRsZSA9IG1h a2Vfc2xvdF9hY3RpdmUoJG5vZGVfc3RhbmRieSwgMSwgXCRzdGRvdXQsIFwkc3RkZXJyKTsK KworIyBUaGlzIHNob3VsZCBub3QgdHJpZ2dlciBhIGNvbmZsaWN0Ciskbm9kZV9wcmltYXJ5 LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW0NSRUFURSBUQUJMRSBjb25mbGljdF90ZXN0KHgg aW50ZWdlciwgeSB0ZXh0KTtdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRi JywgcXFbSU5TRVJUIElOVE8gY29uZmxpY3RfdGVzdCh4LHkpIFNFTEVDVCBzLCBzOjp0ZXh0 IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsNCkgcztdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVf cHNxbCgndGVzdGRiJywgcXFbVVBEQVRFIGNvbmZsaWN0X3Rlc3Qgc2V0IHg9MSwgeT0xO10p OworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCAnVkFDVVVNIGNvbmZsaWN0 X3Rlc3Q7Jyk7CisKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3Rh bmRieSwgJ3JlcGxheScsICRub2RlX3ByaW1hcnktPmxzbignZmx1c2gnKSk7CisKKyMgbWVz c2FnZSBzaG91bGQgbm90IGJlIGlzc3VlZAorb2soICFmaW5kX2luX2xvZygKKyAgICRub2Rl X3N0YW5kYnksCisgICJpbnZhbGlkYXRpbmcgc2xvdCBcImluYWN0aXZlc2xvdFwiIGJlY2F1 c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCAkbG9nc3RhcnQpLAorICAnaW5hY3Rp dmVzbG90IHNsb3QgaW52YWxpZGF0aW9uIGlzIG5vdCBsb2dnZWQgd2l0aCB2YWN1dW0gb24g Y29uZmxpY3RfdGVzdCcpOworCitvayggIWZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRi eSwKKyAgImludmFsaWRhdGluZyBzbG90IFwiYWN0aXZlc2xvdFwiIGJlY2F1c2UgaXQgY29u ZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCAkbG9nc3RhcnQpLAorICAnYWN0aXZlc2xvdCBzbG90 IGludmFsaWRhdGlvbiBpcyBub3QgbG9nZ2VkIHdpdGggdmFjdXVtIG9uIGNvbmZsaWN0X3Rl c3QnKTsKKworIyBWZXJpZnkgdGhhdCBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cy5jb25m bF9hY3RpdmVfbG9naWNhbHNsb3QgaGFzIG5vdCBiZWVuIHVwZGF0ZWQKKyMgd2Ugbm93IHN0 aWxsIGV4cGVjdCAyIGNvbmZsaWN0cyByZXBvcnRlZCBhcyB0aGUgY291bnRlciBwZXJzaXN0 IGFjcm9zcyByZWxvYWRzCitvayggJG5vZGVfc3RhbmRieS0+cG9sbF9xdWVyeV91bnRpbCgK KwkncG9zdGdyZXMnLAorCSJzZWxlY3QgKGNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCA9IDIp IGZyb20gcGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMgd2hlcmUgZGF0bmFtZSA9ICd0ZXN0 ZGInIiwgJ3QnKSwKKwknY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90IG5vdCB1cGRhdGVkJykg b3IgZGllICJUaW1lZCBvdXQgd2FpdGluZyBjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgdG8g YmUgdXBkYXRlZCI7CisKKyMgVmVyaWZ5IHNsb3RzIGFyZSByZXBvcnRlZCBhcyBub24gY29u ZmxpY3RpbmcgaW4gcGdfcmVwbGljYXRpb25fc2xvdHMKK2NoZWNrX3Nsb3RzX2NvbmZsaWN0 aW5nX3N0YXR1cygwKTsKKworIyBUdXJuIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIGJhY2sgb24K K2NoYW5nZV9ob3Rfc3RhbmRieV9mZWVkYmFja19hbmRfd2FpdF9mb3JfeG1pbnMoMSwgMCk7 CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CisjIFJlY292ZXJ5IGNvbmZsaWN0OiBJbnZhbGlkYXRlIGNvbmZsaWN0aW5nIHNsb3RzLCBp bmNsdWRpbmcgaW4tdXNlIHNsb3RzCisjIFNjZW5hcmlvIDQ6IGNvbmZsaWN0IGR1ZSB0byBv bi1hY2Nlc3MgcHJ1bmluZy4KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisKKyMgZ2V0IHRoZSBwb3NpdGlvbiB0byBzZWFyY2ggZnJvbSBp biB0aGUgc3RhbmRieSBsb2dmaWxlCiskbG9nc3RhcnQgPSAtcyAkbm9kZV9zdGFuZGJ5LT5s b2dmaWxlOworCisjIGRyb3AgdGhlIGxvZ2ljYWwgc2xvdHMKK2Ryb3BfbG9naWNhbF9zbG90 cygpOworCisjIGNyZWF0ZSB0aGUgbG9naWNhbCBzbG90cworY3JlYXRlX2xvZ2ljYWxfc2xv dHMoJG5vZGVfc3RhbmRieSk7CisKKyMgT25lIHdheSB0byBwcm9kdWNlIHJlY292ZXJ5IGNv bmZsaWN0IGlzIHRvIHRyaWdnZXIgYW4gb24tYWNjZXNzIHBydW5pbmcKKyMgb24gYSByZWxh dGlvbiBtYXJrZWQgYXMgdXNlcl9jYXRhbG9nX3RhYmxlLgorY2hhbmdlX2hvdF9zdGFuZGJ5 X2ZlZWRiYWNrX2FuZF93YWl0X2Zvcl94bWlucygwLDApOworCiskaGFuZGxlID0gbWFrZV9z bG90X2FjdGl2ZSgkbm9kZV9zdGFuZGJ5LCAxLCBcJHN0ZG91dCwgXCRzdGRlcnIpOworCisj IFRoaXMgc2hvdWxkIHRyaWdnZXIgdGhlIGNvbmZsaWN0Ciskbm9kZV9wcmltYXJ5LT5zYWZl X3BzcWwoJ3Rlc3RkYicsIHFxW0NSRUFURSBUQUJMRSBwcnVuKGlkIGludGVnZXIsIHMgY2hh cigyMDAwKSkgV0lUSCAoZmlsbGZhY3RvciA9IDc1LCB1c2VyX2NhdGFsb2dfdGFibGUgPSB0 cnVlKTtdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbSU5TRVJU IElOVE8gcHJ1biBWQUxVRVMgKDEsICdBJyk7XSk7Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3Bz cWwoJ3Rlc3RkYicsIHFxW1VQREFURSBwcnVuIFNFVCBzID0gJ0InO10pOworJG5vZGVfcHJp bWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtVUERBVEUgcHJ1biBTRVQgcyA9ICdDJztd KTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbVVBEQVRFIHBydW4g U0VUIHMgPSAnRCc7XSk7Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFx W1VQREFURSBwcnVuIFNFVCBzID0gJ0UnO10pOworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zv cl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24o J2ZsdXNoJykpOworCisjIG1lc3NhZ2Ugc2hvdWxkIGJlIGlzc3VlZAorb2soIGZpbmRfaW5f bG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90IFwiaW5hY3Rp dmVzbG90XCIgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCByZWNvdmVyeSIsICRsb2dzdGFy dCksCisgICdpbmFjdGl2ZXNsb3Qgc2xvdCBpbnZhbGlkYXRpb24gaXMgbG9nZ2VkIHdpdGgg b24tYWNjZXNzIHBydW5pbmcnKTsKKworb2soIGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3Rh bmRieSwKKyAgImludmFsaWRhdGluZyBzbG90IFwiYWN0aXZlc2xvdFwiIGJlY2F1c2UgaXQg Y29uZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCAkbG9nc3RhcnQpLAorICAnYWN0aXZlc2xvdCBz bG90IGludmFsaWRhdGlvbiBpcyBsb2dnZWQgd2l0aCBvbi1hY2Nlc3MgcHJ1bmluZycpOwor CisjIFZlcmlmeSB0aGF0IHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzLmNvbmZsX2FjdGl2 ZV9sb2dpY2Fsc2xvdCBoYXMgYmVlbiB1cGRhdGVkCisjIHdlIG5vdyBleHBlY3QgMyBjb25m bGljdHMgcmVwb3J0ZWQgYXMgdGhlIGNvdW50ZXIgcGVyc2lzdCBhY3Jvc3MgcmVsb2Fkcwor b2soICRub2RlX3N0YW5kYnktPnBvbGxfcXVlcnlfdW50aWwoCisJJ3Bvc3RncmVzJywKKwki c2VsZWN0IChjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgPSAzKSBmcm9tIHBnX3N0YXRfZGF0 YWJhc2VfY29uZmxpY3RzIHdoZXJlIGRhdG5hbWUgPSAndGVzdGRiJyIsICd0JyksCisJJ2Nv bmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCB1cGRhdGVkJykgb3IgZGllICJUaW1lZCBvdXQgd2Fp dGluZyBjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgdG8gYmUgdXBkYXRlZCI7CisKKyMgVmVy aWZ5IHNsb3RzIGFyZSByZXBvcnRlZCBhcyBjb25mbGljdGluZyBpbiBwZ19yZXBsaWNhdGlv bl9zbG90cworY2hlY2tfc2xvdHNfY29uZmxpY3Rpbmdfc3RhdHVzKDEpOworCiskaGFuZGxl ID0gbWFrZV9zbG90X2FjdGl2ZSgkbm9kZV9zdGFuZGJ5LCAwLCBcJHN0ZG91dCwgXCRzdGRl cnIpOworCisjIFdlIGFyZSBub3QgYWJsZSB0byByZWFkIGZyb20gdGhlIHNsb3QgYXMgaXQg aGFzIGJlZW4gaW52YWxpZGF0ZWQKK2NoZWNrX3BnX3JlY3Zsb2dpY2FsX3N0ZGVycigkaGFu ZGxlLCAiY2Fubm90IHJlYWQgZnJvbSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QgXCJhY3Rp dmVzbG90XCIiKTsKKworIyBUdXJuIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIGJhY2sgb24KK2No YW5nZV9ob3Rfc3RhbmRieV9mZWVkYmFja19hbmRfd2FpdF9mb3JfeG1pbnMoMSwgMSk7CisK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj IFJlY292ZXJ5IGNvbmZsaWN0OiBJbnZhbGlkYXRlIGNvbmZsaWN0aW5nIHNsb3RzLCBpbmNs dWRpbmcgaW4tdXNlIHNsb3RzCisjIFNjZW5hcmlvIDU6IGluY29ycmVjdCB3YWxfbGV2ZWwg b24gcHJpbWFyeS4KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisKKyMgZ2V0IHRoZSBwb3NpdGlvbiB0byBzZWFyY2ggZnJvbSBpbiB0aGUg c3RhbmRieSBsb2dmaWxlCiskbG9nc3RhcnQgPSAtcyAkbm9kZV9zdGFuZGJ5LT5sb2dmaWxl OworCisjIGRyb3AgdGhlIGxvZ2ljYWwgc2xvdHMKK2Ryb3BfbG9naWNhbF9zbG90cygpOwor CisjIGNyZWF0ZSB0aGUgbG9naWNhbCBzbG90cworY3JlYXRlX2xvZ2ljYWxfc2xvdHMoJG5v ZGVfc3RhbmRieSk7CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKCRub2RlX3N0YW5k YnksIDEsIFwkc3Rkb3V0LCBcJHN0ZGVycik7CisKKyMgTWFrZSBwcmltYXJ5IHdhbF9sZXZl bCByZXBsaWNhLiBUaGlzIHdpbGwgdHJpZ2dlciBzbG90IGNvbmZsaWN0LgorJG5vZGVfcHJp bWFyeS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicscVsKK3dhbF9sZXZlbCA9ICdy ZXBsaWNhJworXSk7Ciskbm9kZV9wcmltYXJ5LT5yZXN0YXJ0OworCiskbm9kZV9wcmltYXJ5 LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmlt YXJ5LT5sc24oJ2ZsdXNoJykpOworCisjIG1lc3NhZ2Ugc2hvdWxkIGJlIGlzc3VlZAorb2so IGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90 IFwiaW5hY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCByZWNvdmVyeSIs ICRsb2dzdGFydCksCisgICdpbmFjdGl2ZXNsb3Qgc2xvdCBpbnZhbGlkYXRpb24gaXMgbG9n Z2VkIGR1ZSB0byB3YWxfbGV2ZWwnKTsKKworb2soIGZpbmRfaW5fbG9nKAorICAgJG5vZGVf c3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90IFwiYWN0aXZlc2xvdFwiIGJlY2F1c2Ug aXQgY29uZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCAkbG9nc3RhcnQpLAorICAnYWN0aXZlc2xv dCBzbG90IGludmFsaWRhdGlvbiBpcyBsb2dnZWQgZHVlIHRvIHdhbF9sZXZlbCcpOworCisj IFZlcmlmeSB0aGF0IHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzLmNvbmZsX2FjdGl2ZV9s b2dpY2Fsc2xvdCBoYXMgYmVlbiB1cGRhdGVkCisjIHdlIG5vdyBleHBlY3QgMyBjb25mbGlj dHMgcmVwb3J0ZWQgYXMgdGhlIGNvdW50ZXIgcGVyc2lzdCBhY3Jvc3MgcmVsb2Fkcworb2so ICRub2RlX3N0YW5kYnktPnBvbGxfcXVlcnlfdW50aWwoCisJJ3Bvc3RncmVzJywKKwkic2Vs ZWN0IChjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgPSA0KSBmcm9tIHBnX3N0YXRfZGF0YWJh c2VfY29uZmxpY3RzIHdoZXJlIGRhdG5hbWUgPSAndGVzdGRiJyIsICd0JyksCisJJ2NvbmZs X2FjdGl2ZV9sb2dpY2Fsc2xvdCB1cGRhdGVkJykgb3IgZGllICJUaW1lZCBvdXQgd2FpdGlu ZyBjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgdG8gYmUgdXBkYXRlZCI7CisKKyMgVmVyaWZ5 IHNsb3RzIGFyZSByZXBvcnRlZCBhcyBjb25mbGljdGluZyBpbiBwZ19yZXBsaWNhdGlvbl9z bG90cworY2hlY2tfc2xvdHNfY29uZmxpY3Rpbmdfc3RhdHVzKDEpOworCiskaGFuZGxlID0g bWFrZV9zbG90X2FjdGl2ZSgkbm9kZV9zdGFuZGJ5LCAwLCBcJHN0ZG91dCwgXCRzdGRlcnIp OworIyBXZSBhcmUgbm90IGFibGUgdG8gcmVhZCBmcm9tIHRoZSBzbG90IGFzIGl0IHJlcXVp cmVzIHdhbF9sZXZlbCBhdCBsZWFzdCBsb2dpY2FsIG9uIHRoZSBwcmltYXJ5IHNlcnZlcgor Y2hlY2tfcGdfcmVjdmxvZ2ljYWxfc3RkZXJyKCRoYW5kbGUsICJsb2dpY2FsIGRlY29kaW5n IG9uIHN0YW5kYnkgcmVxdWlyZXMgd2FsX2xldmVsIHRvIGJlIGF0IGxlYXN0IGxvZ2ljYWwg b24gdGhlIHByaW1hcnkgc2VydmVyIik7CisKKyMgUmVzdG9yZSBwcmltYXJ5IHdhbF9sZXZl bAorJG5vZGVfcHJpbWFyeS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicscVsKK3dh bF9sZXZlbCA9ICdsb2dpY2FsJworXSk7Ciskbm9kZV9wcmltYXJ5LT5yZXN0YXJ0OworJG5v ZGVfcHJpbWFyeS0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5Jywg JG5vZGVfcHJpbWFyeS0+bHNuKCdmbHVzaCcpKTsKKworJGhhbmRsZSA9IG1ha2Vfc2xvdF9h Y3RpdmUoJG5vZGVfc3RhbmRieSwgMCwgXCRzdGRvdXQsIFwkc3RkZXJyKTsKKyMgYXMgdGhl IHNsb3QgaGFzIGJlZW4gaW52YWxpZGF0ZWQgd2Ugc2hvdWxkIG5vdCBiZSBhYmxlIHRvIHJl YWQKK2NoZWNrX3BnX3JlY3Zsb2dpY2FsX3N0ZGVycigkaGFuZGxlLCAiY2Fubm90IHJlYWQg ZnJvbSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QgXCJhY3RpdmVzbG90XCIiKTsKKworIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgRFJP UCBEQVRBQkFTRSBzaG91bGQgZHJvcHMgaXQncyBzbG90cywgaW5jbHVkaW5nIGFjdGl2ZSBz bG90cy4KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisKKyMgZHJvcCB0aGUgbG9naWNhbCBzbG90cworZHJvcF9sb2dpY2FsX3Nsb3RzKCk7 CisKKyMgY3JlYXRlIHRoZSBsb2dpY2FsIHNsb3RzCitjcmVhdGVfbG9naWNhbF9zbG90cygk bm9kZV9zdGFuZGJ5KTsKKworJGhhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoJG5vZGVfc3Rh bmRieSwgMSwgXCRzdGRvdXQsIFwkc3RkZXJyKTsKKyMgQ3JlYXRlIGEgc2xvdCBvbiBhIGRh dGFiYXNlIHRoYXQgd291bGQgbm90IGJlIGRyb3BwZWQuIFRoaXMgc2xvdCBzaG91bGQgbm90 CisjIGdldCBkcm9wcGVkLgorJG5vZGVfc3RhbmRieS0+Y3JlYXRlX2xvZ2ljYWxfc2xvdF9v bl9zdGFuZGJ5KCRub2RlX3ByaW1hcnksICdvdGhlcnNsb3QnLCAncG9zdGdyZXMnKTsKKwor IyBkcm9wZGIgb24gdGhlIHByaW1hcnkgdG8gdmVyaWZ5IHNsb3RzIGFyZSBkcm9wcGVkIG9u IHN0YW5kYnkKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxW0RST1Ag REFUQUJBU0UgdGVzdGRiXSk7CisKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX2NhdGNodXAo JG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3ByaW1hcnktPmxzbignZmx1c2gnKSk7 CisKK2lzKCRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXFbU0VMRUNU IEVYSVNUUyhTRUxFQ1QgMSBGUk9NIHBnX2RhdGFiYXNlIFdIRVJFIGRhdG5hbWUgPSAndGVz dGRiJyldKSwgJ2YnLAorCSdkYXRhYmFzZSBkcm9wcGVkIG9uIHN0YW5kYnknKTsKKworY2hl Y2tfc2xvdHNfZHJvcHBlZCgkaGFuZGxlKTsKKworaXMoJG5vZGVfc3RhbmRieS0+c2xvdCgn b3RoZXJzbG90JyktPnsnc2xvdF90eXBlJ30sICdsb2dpY2FsJywKKwknb3RoZXJzbG90IG9u IHN0YW5kYnkgbm90IGRyb3BwZWQnKTsKKworIyBDbGVhbnVwIDogbWFudWFsbHkgZHJvcCB0 aGUgc2xvdCB0aGF0IHdhcyBub3QgZHJvcHBlZC4KKyRub2RlX3N0YW5kYnktPnBzcWwoJ3Bv c3RncmVzJywgcVtTRUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KCdvdGhlcnNsb3Qn KV0pOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworIyBUZXN0IHN0YW5kYnkgcHJvbW90aW9uIGFuZCBsb2dpY2FsIGRlY29kaW5nIGJl aGF2aW9yCisjIGFmdGVyIHRoZSBzdGFuZGJ5IGdldHMgcHJvbW90ZWQuCisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIHJlZHVjZSB3 YWxfc2VuZGVyX3RpbWVvdXQgdG8gbm90IHdhaXQgdG9vIGxvbmcgYWZ0ZXIgcHJvbW90aW9u Ciskbm9kZV9zdGFuZGJ5LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJyxxcVsKKwl3 YWxfc2VuZGVyX3RpbWVvdXQgPSAxcworXSk7CisKKyRub2RlX3N0YW5kYnktPnJlbG9hZDsK KworJG5vZGVfcHJpbWFyeS0+cHNxbCgncG9zdGdyZXMnLCBxW0NSRUFURSBEQVRBQkFTRSB0 ZXN0ZGJdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbQ1JFQVRF IFRBQkxFIGRlY29kaW5nX3Rlc3QoeCBpbnRlZ2VyLCB5IHRleHQpO10pOworCisjIGNyZWF0 ZSB0aGUgbG9naWNhbCBzbG90cworY3JlYXRlX2xvZ2ljYWxfc2xvdHMoJG5vZGVfc3RhbmRi eSk7CisKKyMgY3JlYXRlIHRoZSBsb2dpY2FsIHNsb3RzIG9uIHRoZSBjYXNjYWRpbmcgc3Rh bmRieSB0b28KK2NyZWF0ZV9sb2dpY2FsX3Nsb3RzKCRub2RlX2Nhc2NhZGluZ19zdGFuZGJ5 KTsKKworIyBNYWtlIHNsb3RzIGFjdGl2ZXMKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZl KCRub2RlX3N0YW5kYnksIDEsIFwkc3Rkb3V0LCBcJHN0ZGVycik7CitteSAkY2FzY2FkaW5n X2hhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoJG5vZGVfY2FzY2FkaW5nX3N0YW5kYnksIDEs IFwkY2FzY2FkaW5nX3N0ZG91dCwgXCRjYXNjYWRpbmdfc3RkZXJyKTsKKworIyBJbnNlcnQg c29tZSByb3dzIGJlZm9yZSB0aGUgcHJvbW90aW9uCiskbm9kZV9wcmltYXJ5LT5zYWZlX3Bz cWwoJ3Rlc3RkYicsCisJcXFbSU5TRVJUIElOVE8gZGVjb2RpbmdfdGVzdCh4LHkpIFNFTEVD VCBzLCBzOjp0ZXh0IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsNCkgcztdCispOworCisjIFdh aXQgZm9yIGJvdGggc3RhbmRieXMgdG8gY2F0Y2h1cAorJG5vZGVfcHJpbWFyeS0+d2FpdF9m b3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5JywgJG5vZGVfcHJpbWFyeS0+bHNu KCdmbHVzaCcpKTsKKyRub2RlX3N0YW5kYnktPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfY2Fz Y2FkaW5nX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24oJ2ZsdXNoJykp OworCisjIHByb21vdGUKKyRub2RlX3N0YW5kYnktPnByb21vdGU7CisKKyMgaW5zZXJ0IHNv bWUgcm93cyBvbiBwcm9tb3RlZCBzdGFuZGJ5Ciskbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwo J3Rlc3RkYicsCisJcXFbSU5TRVJUIElOVE8gZGVjb2RpbmdfdGVzdCh4LHkpIFNFTEVDVCBz LCBzOjp0ZXh0IEZST00gZ2VuZXJhdGVfc2VyaWVzKDUsNykgcztdCispOworCisjIFdhaXQg Zm9yIHRoZSBjYXNjYWRpbmcgc3RhbmRieSB0byBjYXRjaHVwCiskbm9kZV9zdGFuZGJ5LT53 YWl0X2Zvcl9jYXRjaHVwKCRub2RlX2Nhc2NhZGluZ19zdGFuZGJ5LCAncmVwbGF5JywgJG5v ZGVfc3RhbmRieS0+bHNuKCdmbHVzaCcpKTsKKworJGV4cGVjdGVkID0gcXtCRUdJTgordGFi bGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXToxIHlbdGV4dF06 JzEnCit0YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjIg eVt0ZXh0XTonMicKK3RhYmxlIHB1YmxpYy5kZWNvZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50 ZWdlcl06MyB5W3RleHRdOiczJwordGFibGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6IElOU0VS VDogeFtpbnRlZ2VyXTo0IHlbdGV4dF06JzQnCitDT01NSVQKK0JFR0lOCit0YWJsZSBwdWJs aWMuZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjUgeVt0ZXh0XTonNScKK3Rh YmxlIHB1YmxpYy5kZWNvZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06NiB5W3RleHRd Oic2JwordGFibGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXTo3 IHlbdGV4dF06JzcnCitDT01NSVR9OworCisjIGNoZWNrIHRoYXQgd2UgYXJlIGRlY29kaW5n IHByZSBhbmQgcG9zdCBwcm9tb3Rpb24gaW5zZXJ0ZWQgcm93cworJHN0ZG91dF9zcWwgPSAk bm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFbU0VMRUNUIGRhdGEgRlJP TSBwZ19sb2dpY2FsX3Nsb3RfcGVla19jaGFuZ2VzKCdpbmFjdGl2ZXNsb3QnLCBOVUxMLCBO VUxMLCAnaW5jbHVkZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcxJyk7XQor KTsKKworaXMoJHN0ZG91dF9zcWwsICRleHBlY3RlZCwgJ2dvdCBleHBlY3RlZCBvdXRwdXQg ZnJvbSBTUUwgZGVjb2Rpbmcgc2Vzc2lvbiBvbiBwcm9tb3RlZCBzdGFuZGJ5Jyk7CisKKyMg Y2hlY2sgdGhhdCB3ZSBhcmUgZGVjb2RpbmcgcHJlIGFuZCBwb3N0IHByb21vdGlvbiBpbnNl cnRlZCByb3dzCisjIHdpdGggcGdfcmVjdmxvZ2ljYWwgdGhhdCBoYXMgc3RhcnRlZCBiZWZv cmUgdGhlIHByb21vdGlvbgorbXkgJHB1bXBfdGltZW91dCA9IElQQzo6UnVuOjp0aW1lcigk UG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCk7CisKK29rKCBwdW1w X3VudGlsKAorICAgICAgICAkaGFuZGxlLCAkcHVtcF90aW1lb3V0LCBcJHN0ZG91dCwgcXIv Xi4qQ09NTUlULipDT01NSVQkL3MpLAorICAgICdnb3QgMiBDT01NSVQgZnJvbSBwZ19yZWN2 bG9naWNhbCBvdXRwdXQnKTsKKworY2hvbXAoJHN0ZG91dCk7Citpcygkc3Rkb3V0LCAkZXhw ZWN0ZWQsCisgICAgJ2dvdCBzYW1lIGV4cGVjdGVkIG91dHB1dCBmcm9tIHBnX3JlY3Zsb2dp Y2FsIGRlY29kaW5nIHNlc3Npb24nKTsKKworIyBjaGVjayB0aGF0IHdlIGFyZSBkZWNvZGlu ZyBwcmUgYW5kIHBvc3QgcHJvbW90aW9uIGluc2VydGVkIHJvd3Mgb24gdGhlIGNhc2NhZGlu ZyBzdGFuZGJ5Ciskc3Rkb3V0X3NxbCA9ICRub2RlX2Nhc2NhZGluZ19zdGFuZGJ5LT5zYWZl X3BzcWwoJ3Rlc3RkYicsCisJcXFbU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3Rf cGVla19jaGFuZ2VzKCdpbmFjdGl2ZXNsb3QnLCBOVUxMLCBOVUxMLCAnaW5jbHVkZS14aWRz JywgJzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcxJyk7XQorKTsKKworaXMoJHN0ZG91dF9z cWwsICRleHBlY3RlZCwgJ2dvdCBleHBlY3RlZCBvdXRwdXQgZnJvbSBTUUwgZGVjb2Rpbmcg c2Vzc2lvbiBvbiBjYXNjYWRpbmcgc3RhbmRieScpOworCisjIGNoZWNrIHRoYXQgd2UgYXJl IGRlY29kaW5nIHByZSBhbmQgcG9zdCBwcm9tb3Rpb24gaW5zZXJ0ZWQgcm93cworIyB3aXRo IHBnX3JlY3Zsb2dpY2FsIHRoYXQgaGFzIHN0YXJ0ZWQgYmVmb3JlIHRoZSBwcm9tb3Rpb24g b24gdGhlIGNhc2NhZGluZyBzdGFuZGJ5CitvayggcHVtcF91bnRpbCgKKyAgICAgICAgJGNh c2NhZGluZ19oYW5kbGUsICRwdW1wX3RpbWVvdXQsIFwkY2FzY2FkaW5nX3N0ZG91dCwgcXIv Xi4qQ09NTUlULipDT01NSVQkL3MpLAorICAgICdnb3QgMiBDT01NSVQgZnJvbSBwZ19yZWN2 bG9naWNhbCBvdXRwdXQnKTsKKworY2hvbXAoJGNhc2NhZGluZ19zdGRvdXQpOworaXMoJGNh c2NhZGluZ19zdGRvdXQsICRleHBlY3RlZCwKKyAgICAnZ290IHNhbWUgZXhwZWN0ZWQgb3V0 cHV0IGZyb20gcGdfcmVjdmxvZ2ljYWwgZGVjb2Rpbmcgc2Vzc2lvbiBvbiBjYXNjYWRpbmcg c3RhbmRieScpOwotLSAKMi4zNC4xCgo= --------------xW006q159UiWPtHw9wcHAuVA Content-Type: text/plain; charset=UTF-8; name="v48-0004-Fixing-Walsender-corner-case-with-logical-decodi.patch" Content-Disposition: attachment; filename*0="v48-0004-Fixing-Walsender-corner-case-with-logical-decodi.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBmYTE3ODEwZGVlMDg5Y2NmYjhjMDU4ZTI1Yjc4MDRhNDdmMDFmNjdmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA3IEZlYiAyMDIzIDA5OjAwOjI5ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2NDggNC82XSBGaXhpbmcgV2Fsc2VuZGVyIGNvcm5lciBjYXNlIHdpdGggbG9naWNhbCBk ZWNvZGluZyBvbgogc3RhbmRieS4KClRoZSBwcm9ibGVtIGlzIHRoYXQgV2FsU25kV2FpdEZv cldhbCgpIHdhaXRzIGZvciB0aGUgKnJlcGxheSogTFNOIHRvCmluY3JlYXNlLCBidXQgZ2V0 cyB3b2tlbiB1cCBieSB3YWxyZWNlaXZlciB3aGVuIG5ldyBXQUwgaGFzIGJlZW4KZmx1c2hl ZC4gV2hpY2ggbWVhbnMgdGhhdCB0eXBpY2FsbHkgd2Fsc2VuZGVycyB3aWxsIGdldCB3b2tl biB1cCBhdCB0aGUKc2FtZSB0aW1lIHRoYXQgdGhlIHN0YXJ0dXAgcHJvY2VzcyB3aWxsIGJl IC0gd2hpY2ggbWVhbnMgdGhhdCBieSB0aGUKdGltZSB0aGUgbG9naWNhbCB3YWxzZW5kZXIg Y2hlY2tzIEdldFhMb2dSZXBsYXlSZWNQdHIoKSBpdCdzIHVubGlrZWx5CnRoYXQgdGhlIHN0 YXJ0dXAgcHJvY2VzcyBhbHJlYWR5IHJlcGxheWVkIHRoZSByZWNvcmQgYW5kIHVwZGF0ZWQK WExvZ0N0bC0+bGFzdFJlcGxheWVkRW5kUmVjUHRyLgoKSW50cm9kdWNpbmcgYSBuZXcgY29u ZGl0aW9uIHZhcmlhYmxlIHRvIGZpeCB0aGlzIGNvcm5lciBjYXNlLgotLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jIHwgMjggKysrKysrKysrKysrKysr KysrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgICAgICAgfCAzNCAr KysrKysrKysrKysrKysrKy0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2Fp dF9ldmVudC5jICAgfCAgMyArKwogc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dyZWNvdmVyeS5o ICAgICAgICAgfCAgMyArKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmgg ICAgICAgfCAgMSArCiBzcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmggICAgICAgICAg ICB8ICAxICsKIDYgZmlsZXMgY2hhbmdlZCwgNjIgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlv bnMoLSkKICA0My4yJSBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS8KICA0Ni4xJSBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi8KICAgMy44JSBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS8KICAgMy43JSBzcmMvaW5jbHVkZS9hY2Nlc3MvCiAgIDMuMSUgc3JjL2luY2x1ZGUvCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYwppbmRleCBkYmU5 Mzk0NzYyLi44YTk1MDVhNTJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS94bG9ncmVjb3ZlcnkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9ncmVjb3ZlcnkuYwpAQCAtMzU4LDYgKzM1OCw5IEBAIHR5cGVkZWYgc3RydWN0IFhMb2dS ZWNvdmVyeUN0bERhdGEKIAlSZWNvdmVyeVBhdXNlU3RhdGUgcmVjb3ZlcnlQYXVzZVN0YXRl OwogCUNvbmRpdGlvblZhcmlhYmxlIHJlY292ZXJ5Tm90UGF1c2VkQ1Y7CiAKKwkvKiBSZXBs YXkgc3RhdGUgKHNlZSBjaGVja19mb3JfcmVwbGF5KCkgZm9yIG1vcmUgZXhwbGFuYXRpb24p ICovCisJQ29uZGl0aW9uVmFyaWFibGUgcmVwbGF5ZWRDVjsKKwogCXNsb2NrX3QJCWluZm9f bGNrOwkJLyogbG9ja3Mgc2hhcmVkIHZhcmlhYmxlcyBzaG93biBhYm92ZSAqLwogfSBYTG9n UmVjb3ZlcnlDdGxEYXRhOwogCkBAIC00NjgsNiArNDcxLDcgQEAgWExvZ1JlY292ZXJ5U2ht ZW1Jbml0KHZvaWQpCiAJU3BpbkxvY2tJbml0KCZYTG9nUmVjb3ZlcnlDdGwtPmluZm9fbGNr KTsKIAlJbml0U2hhcmVkTGF0Y2goJlhMb2dSZWNvdmVyeUN0bC0+cmVjb3ZlcnlXYWtldXBM YXRjaCk7CiAJQ29uZGl0aW9uVmFyaWFibGVJbml0KCZYTG9nUmVjb3ZlcnlDdGwtPnJlY292 ZXJ5Tm90UGF1c2VkQ1YpOworCUNvbmRpdGlvblZhcmlhYmxlSW5pdCgmWExvZ1JlY292ZXJ5 Q3RsLT5yZXBsYXllZENWKTsKIH0KIAogLyoKQEAgLTE5MzUsNiArMTkzOSwxMSBAQCBBcHBs eVdhbFJlY29yZChYTG9nUmVhZGVyU3RhdGUgKnhsb2dyZWFkZXIsIFhMb2dSZWNvcmQgKnJl Y29yZCwgVGltZUxpbmVJRCAqcmVwbAogCVhMb2dSZWNvdmVyeUN0bC0+bGFzdFJlcGxheWVk VExJID0gKnJlcGxheVRMSTsKIAlTcGluTG9ja1JlbGVhc2UoJlhMb2dSZWNvdmVyeUN0bC0+ aW5mb19sY2spOwogCisJLyoKKwkgKiB3YWtlIHVwIHdhbHNlbmRlcihzKSB1c2VkIGJ5IGxv Z2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieS4KKwkgKi8KKwlDb25kaXRpb25WYXJpYWJsZUJy b2FkY2FzdCgmWExvZ1JlY292ZXJ5Q3RsLT5yZXBsYXllZENWKTsKKwogCS8qCiAJICogSWYg cm1fcmVkbyBjYWxsZWQgWExvZ1JlcXVlc3RXYWxSZWNlaXZlclJlcGx5LCB0aGVuIHdlIHdh a2UgdXAgdGhlCiAJICogcmVjZWl2ZXIgc28gdGhhdCBpdCBub3RpY2VzIHRoZSB1cGRhdGVk IGxhc3RSZXBsYXllZEVuZFJlY1B0ciBhbmQgc2VuZHMKQEAgLTQ5NDIsMyArNDk1MSwyMiBA QCBhc3NpZ25fcmVjb3ZlcnlfdGFyZ2V0X3hpZChjb25zdCBjaGFyICpuZXd2YWwsIHZvaWQg KmV4dHJhKQogCWVsc2UKIAkJcmVjb3ZlcnlUYXJnZXQgPSBSRUNPVkVSWV9UQVJHRVRfVU5T RVQ7CiB9CisKKy8qCisgKiBSZXR1cm4gdGhlIENvbmRpdGlvblZhcmlhYmxlIGluZGljYXRp bmcgdGhhdCBhIHJlcGxheSBoYXMgYmVlbiBkb25lLgorICoKKyAqIFRoaXMgaXMgbmVlZGVk IGZvciBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkuIEluZGVlZCB0aGUgInByb2JsZW0i IGlzIHRoYXQKKyAqIFdhbFNuZFdhaXRGb3JXYWwoKSB3YWl0cyBmb3IgdGhlICpyZXBsYXkq IExTTiB0byBpbmNyZWFzZSwgYnV0IGdldHMgd29rZW4gdXAKKyAqIGJ5IHdhbHJlY2VpdmVy IHdoZW4gbmV3IFdBTCBoYXMgYmVlbiBmbHVzaGVkLiBXaGljaCBtZWFucyB0aGF0IHR5cGlj YWxseQorICogd2Fsc2VuZGVycyB3aWxsIGdldCB3b2tlbiB1cCBhdCB0aGUgc2FtZSB0aW1l IHRoYXQgdGhlIHN0YXJ0dXAgcHJvY2VzcworICogd2lsbCBiZSAtIHdoaWNoIG1lYW5zIHRo YXQgYnkgdGhlIHRpbWUgdGhlIGxvZ2ljYWwgd2Fsc2VuZGVyIGNoZWNrcworICogR2V0WExv Z1JlcGxheVJlY1B0cigpIGl0J3MgdW5saWtlbHkgdGhhdCB0aGUgc3RhcnR1cCBwcm9jZXNz IGFscmVhZHkgcmVwbGF5ZWQKKyAqIHRoZSByZWNvcmQgYW5kIHVwZGF0ZWQgWExvZ0N0bC0+ bGFzdFJlcGxheWVkRW5kUmVjUHRyLgorICoKKyAqIFRoZSBDb25kaXRpb25WYXJpYWJsZSBY TG9nUmVjb3ZlcnlDdGwtPnJlcGxheWVkQ1Ygc29sdmVzIHRoaXMgY29ybmVyIGNhc2UuCisg Ki8KK0NvbmRpdGlvblZhcmlhYmxlICoKK2NoZWNrX2Zvcl9yZXBsYXkodm9pZCkKK3sKKwly ZXR1cm4gJlhMb2dSZWNvdmVyeUN0bC0+cmVwbGF5ZWRDVjsKK30KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vd2Fsc2VuZGVyLmMKaW5kZXggMWU5MWNiYzU2NC4uM2ZjN2I0MmQxNSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKQEAgLTE1NTIsNiArMTU1Miw3IEBAIFdh bFNuZFdhaXRGb3JXYWwoWExvZ1JlY1B0ciBsb2MpCiB7CiAJaW50CQkJd2FrZUV2ZW50czsK IAlzdGF0aWMgWExvZ1JlY1B0ciBSZWNlbnRGbHVzaFB0ciA9IEludmFsaWRYTG9nUmVjUHRy OworCUNvbmRpdGlvblZhcmlhYmxlICpyZXBsYXllZENWID0gY2hlY2tfZm9yX3JlcGxheSgp OwogCiAJLyoKIAkgKiBGYXN0IHBhdGggdG8gYXZvaWQgYWNxdWlyaW5nIHRoZSBzcGlubG9j ayBpbiBjYXNlIHdlIGFscmVhZHkga25vdyB3ZQpAQCAtMTU2NiwxMCArMTU2NywxNSBAQCBX YWxTbmRXYWl0Rm9yV2FsKFhMb2dSZWNQdHIgbG9jKQogCWlmICghUmVjb3ZlcnlJblByb2dy ZXNzKCkpCiAJCVJlY2VudEZsdXNoUHRyID0gR2V0Rmx1c2hSZWNQdHIoTlVMTCk7CiAJZWxz ZQorCXsKIAkJUmVjZW50Rmx1c2hQdHIgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpOwor CQkvKiBQcmVwYXJlIHRoZSByZXBsYXllZENWIHRvIHNsZWVwICovCisJCUNvbmRpdGlvblZh cmlhYmxlUHJlcGFyZVRvU2xlZXAocmVwbGF5ZWRDVik7CisJfQogCiAJZm9yICg7OykKIAl7 CisKIAkJbG9uZwkJc2xlZXB0aW1lOwogCiAJCS8qIENsZWFyIGFueSBhbHJlYWR5LXBlbmRp bmcgd2FrZXVwcyAqLwpAQCAtMTY1MywyMSArMTY1OSwzMyBAQCBXYWxTbmRXYWl0Rm9yV2Fs KFhMb2dSZWNQdHIgbG9jKQogCQkvKiBTZW5kIGtlZXBhbGl2ZSBpZiB0aGUgdGltZSBoYXMg Y29tZSAqLwogCQlXYWxTbmRLZWVwYWxpdmVJZk5lY2Vzc2FyeSgpOwogCisJCXNsZWVwdGlt ZSA9IFdhbFNuZENvbXB1dGVTbGVlcHRpbWUoR2V0Q3VycmVudFRpbWVzdGFtcCgpKTsKIAkJ LyoKLQkJICogU2xlZXAgdW50aWwgc29tZXRoaW5nIGhhcHBlbnMgb3Igd2UgdGltZSBvdXQu ICBBbHNvIHdhaXQgZm9yIHRoZQotCQkgKiBzb2NrZXQgYmVjb21pbmcgd3JpdGFibGUsIGlm IHRoZXJlJ3Mgc3RpbGwgcGVuZGluZyBvdXRwdXQuCisJCSAqIFdoZW4gbm90IGluIHJlY292 ZXJ5LCBzbGVlcCB1bnRpbCBzb21ldGhpbmcgaGFwcGVucyBvciB3ZSB0aW1lIG91dC4KKwkJ ICogQWxzbyB3YWl0IGZvciB0aGUgc29ja2V0IGJlY29taW5nIHdyaXRhYmxlLCBpZiB0aGVy ZSdzIHN0aWxsIHBlbmRpbmcgb3V0cHV0LgogCQkgKiBPdGhlcndpc2Ugd2UgbWlnaHQgc2l0 IG9uIHNlbmRhYmxlIG91dHB1dCBkYXRhIHdoaWxlIHdhaXRpbmcgZm9yCiAJCSAqIG5ldyBX QUwgdG8gYmUgZ2VuZXJhdGVkLiAgKEJ1dCBpZiB3ZSBoYXZlIG5vdGhpbmcgdG8gc2VuZCwg d2UgZG9uJ3QKIAkJICogd2FudCB0byB3YWtlIG9uIHNvY2tldC13cml0YWJsZS4pCiAJCSAq LwotCQlzbGVlcHRpbWUgPSBXYWxTbmRDb21wdXRlU2xlZXB0aW1lKEdldEN1cnJlbnRUaW1l c3RhbXAoKSk7Ci0KLQkJd2FrZUV2ZW50cyA9IFdMX1NPQ0tFVF9SRUFEQUJMRTsKKwkJaWYg KCFSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKKwkJeworCQkJd2FrZUV2ZW50cyA9IFdMX1NPQ0tF VF9SRUFEQUJMRTsKIAotCQlpZiAocHFfaXNfc2VuZF9wZW5kaW5nKCkpCi0JCQl3YWtlRXZl bnRzIHw9IFdMX1NPQ0tFVF9XUklURUFCTEU7CisJCQlpZiAocHFfaXNfc2VuZF9wZW5kaW5n KCkpCisJCQkJd2FrZUV2ZW50cyB8PSBXTF9TT0NLRVRfV1JJVEVBQkxFOwogCi0JCVdhbFNu ZFdhaXQod2FrZUV2ZW50cywgc2xlZXB0aW1lLCBXQUlUX0VWRU5UX1dBTF9TRU5ERVJfV0FJ VF9XQUwpOworCQkJV2FsU25kV2FpdCh3YWtlRXZlbnRzLCBzbGVlcHRpbWUsIFdBSVRfRVZF TlRfV0FMX1NFTkRFUl9XQUlUX1dBTCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJ ICogV2UgYXJlIGluIHRoZSBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkgY2FzZS4KKwkJ CSAqIFdlIGFyZSB3YWl0aW5nIGZvciB0aGUgc3RhcnR1cCBwcm9jZXNzIHRvIHJlcGxheSB3 YWwgcmVjb3JkKHMpIHVzaW5nCisJCQkgKiBhIHRpbWVvdXQgaW4gY2FzZSB3ZSBhcmUgcmVx dWVzdGVkIHRvIHN0b3AuCisJCQkgKi8KKwkJCUNvbmRpdGlvblZhcmlhYmxlVGltZWRTbGVl cChyZXBsYXllZENWLCBzbGVlcHRpbWUsCisJCQkJCQkJCQkJV0FJVF9FVkVOVF9XQUxfU0VO REVSX1dBSVRfUkVQTEFZKTsKKwkJfQogCX0KIAogCS8qIHJlYWN0aXZhdGUgbGF0Y2ggc28g V2FsU25kTG9vcCBrbm93cyB0byBjb250aW51ZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvd2FpdF9ldmVudC5jCmluZGV4IDZlNDU5OTI3OGMuLjM4Yzc0N2I3ODYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKQEAgLTQ2Myw2ICs0NjMs OSBAQCBwZ3N0YXRfZ2V0X3dhaXRfaXBjKFdhaXRFdmVudElQQyB3KQogCQljYXNlIFdBSVRf RVZFTlRfV0FMX1JFQ0VJVkVSX1dBSVRfU1RBUlQ6CiAJCQlldmVudF9uYW1lID0gIldhbFJl Y2VpdmVyV2FpdFN0YXJ0IjsKIAkJCWJyZWFrOworCQljYXNlIFdBSVRfRVZFTlRfV0FMX1NF TkRFUl9XQUlUX1JFUExBWToKKwkJCWV2ZW50X25hbWUgPSAiV2FsUmVjZWl2ZXJXYWl0UmVw bGF5IjsKKwkJCWJyZWFrOwogCQljYXNlIFdBSVRfRVZFTlRfWEFDVF9HUk9VUF9VUERBVEU6 CiAJCQlldmVudF9uYW1lID0gIlhhY3RHcm91cFVwZGF0ZSI7CiAJCQlicmVhazsKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9ncmVjb3ZlcnkuaCBiL3NyYy9pbmNsdWRl L2FjY2Vzcy94bG9ncmVjb3ZlcnkuaAppbmRleCA0N2MyOTM1MGY1Li4yYmZlYWFhMDBmIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3JlY292ZXJ5LmgKKysrIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL3hsb2dyZWNvdmVyeS5oCkBAIC0xNSw2ICsxNSw3IEBACiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19jb250cm9sLmgiCiAjaW5jbHVkZSAibGliL3N0cmluZ2luZm8u aCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2Nv bmRpdGlvbl92YXJpYWJsZS5oIgogCiAvKgogICogUmVjb3ZlcnkgdGFyZ2V0IHR5cGUuCkBA IC0xNTUsNCArMTU2LDYgQEAgZXh0ZXJuIHZvaWQgUmVjb3ZlcnlSZXF1aXJlc0ludFBhcmFt ZXRlcihjb25zdCBjaGFyICpwYXJhbV9uYW1lLCBpbnQgY3VyclZhbHVlLAogCiBleHRlcm4g dm9pZCB4bG9nX291dGRlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVj b3JkKTsKIAorZXh0ZXJuIENvbmRpdGlvblZhcmlhYmxlICpjaGVja19mb3JfcmVwbGF5KHZv aWQpOworCiAjZW5kaWYJCQkJCQkJLyogWExPR1JFQ09WRVJZX0ggKi8KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5oIGIvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vd2Fsc2VuZGVyLmgKaW5kZXggNTJiYjNlMmFhZS4uMmZkNzQ1ZmU3MiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmgKKysrIGIvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmgKQEAgLTEzLDYgKzEzLDcgQEAKICNk ZWZpbmUgX1dBTFNFTkRFUl9ICiAKICNpbmNsdWRlIDxzaWduYWwuaD4KKyNpbmNsdWRlICJz dG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIgogCiAvKgogICogV2hhdCB0byBkbyB3aXRo IGEgc25hcHNob3QgaW4gY3JlYXRlIHJlcGxpY2F0aW9uIHNsb3QgY29tbWFuZC4KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCBiL3NyYy9pbmNsdWRlL3V0 aWxzL3dhaXRfZXZlbnQuaAppbmRleCA2Y2FjZDZlZGFmLi4wNGEzN2ZlZWU0IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKKysrIGIvc3JjL2luY2x1ZGUv dXRpbHMvd2FpdF9ldmVudC5oCkBAIC0xMzAsNiArMTMwLDcgQEAgdHlwZWRlZiBlbnVtCiAJ V0FJVF9FVkVOVF9TWU5DX1JFUCwKIAlXQUlUX0VWRU5UX1dBTF9SRUNFSVZFUl9FWElULAog CVdBSVRfRVZFTlRfV0FMX1JFQ0VJVkVSX1dBSVRfU1RBUlQsCisJV0FJVF9FVkVOVF9XQUxf U0VOREVSX1dBSVRfUkVQTEFZLAogCVdBSVRfRVZFTlRfWEFDVF9HUk9VUF9VUERBVEUKIH0g V2FpdEV2ZW50SVBDOwogCi0tIAoyLjM0LjEKCg== --------------xW006q159UiWPtHw9wcHAuVA Content-Type: text/plain; charset=UTF-8; name="v48-0003-Allow-logical-decoding-on-standby.patch" Content-Disposition: attachment; filename="v48-0003-Allow-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSBjNGUyMzAzYjJiNTZjOTMyOGE2Mjk2YTMzOTExMDA1NTM3Y2ZjZDc3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA3IEZlYiAyMDIzIDA4OjU5OjQ3ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2NDggMy82XSBBbGxvdyBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkuCgpBbGxvdyBh IGxvZ2ljYWwgc2xvdCB0byBiZSBjcmVhdGVkIG9uIHN0YW5kYnkuIFJlc3RyaWN0IGl0cyB1 c2FnZQpvciBpdHMgY3JlYXRpb24gaWYgd2FsX2xldmVsIG9uIHByaW1hcnkgaXMgbGVzcyB0 aGFuIGxvZ2ljYWwuCkR1cmluZyBzbG90IGNyZWF0aW9uLCBpdCdzIHJlc3RhcnRfbHNuIGlz IHNldCB0byB0aGUgbGFzdCByZXBsYXllZApMU04uIEVmZmVjdGl2ZWx5LCBhIGxvZ2ljYWwg c2xvdCBjcmVhdGlvbiBvbiBzdGFuZGJ5IHdhaXRzIGZvciBhbgp4bF9ydW5uaW5nX3hhY3Qg cmVjb3JkIHRvIGFycml2ZSBmcm9tIHByaW1hcnkuCgpBdXRob3I6IEFuZHJlcyBGcmV1bmQg KGluIGFuIG9sZGVyIHZlcnNpb24pLCBBbWl0IEtoYW5kZWthciwgQmVydHJhbmQgRHJvdXZv dApSZXZpZXdlZC1CeTogQmVydHJhbmQgRHJvdXZvdCwgQW5kcmVzIEZyZXVuZCwgUm9iZXJ0 IEhhYXMsIEZhYnJpemlvIGRlIFJveWVzIE1lbGxvCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZy5jICAgICAgICAgfCAxMSArKysrKwogc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9kZWNvZGUuYyAgfCAyMiArKysrKysrKy0KIHNyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jIHwgMzcgKysrKysrKystLS0tLS0tCiBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgICAgICAgICAgICB8IDU3ICsrKysrKysrKysr Ky0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyAgICAg ICB8IDQxICsrKysrKysrKystLS0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmggICAg ICAgICAgICAgICAgIHwgIDEgKwogNiBmaWxlcyBjaGFuZ2VkLCAxMTEgaW5zZXJ0aW9ucygr KSwgNTggZGVsZXRpb25zKC0pCiAgIDQuNyUgc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v CiAgMzguNyUgc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC8KICA1NS42JSBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi8KCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKaW5k ZXggNTRkMzQ0YTU5Yy4uNTg2NGM1ZTMwNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hs b2cuYwpAQCAtNDQ2NCw2ICs0NDY0LDE3IEBAIExvY2FsUHJvY2Vzc0NvbnRyb2xGaWxlKGJv b2wgcmVzZXQpCiAJUmVhZENvbnRyb2xGaWxlKCk7CiB9CiAKKy8qCisgKiBHZXQgdGhlIHdh bF9sZXZlbCBmcm9tIHRoZSBjb250cm9sIGZpbGUuIEZvciBhIHN0YW5kYnksIHRoaXMgdmFs dWUgc2hvdWxkIGJlCisgKiBjb25zaWRlcmVkIGFzIGl0cyBhY3RpdmUgd2FsX2xldmVsLCBi ZWNhdXNlIGl0IG1heSBiZSBkaWZmZXJlbnQgZnJvbSB3aGF0CisgKiB3YXMgb3JpZ2luYWxs eSBjb25maWd1cmVkIG9uIHN0YW5kYnkuCisgKi8KK1dhbExldmVsCitHZXRBY3RpdmVXYWxM ZXZlbE9uU3RhbmRieSh2b2lkKQoreworCXJldHVybiBDb250cm9sRmlsZS0+d2FsX2xldmVs OworfQorCiAvKgogICogSW5pdGlhbGl6YXRpb24gb2Ygc2hhcmVkIG1lbW9yeSBmb3IgWExP RwogICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2Rl Y29kZS5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwppbmRl eCBhNTNlMjNjNjc5Li42YjY2YTk3MWJhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvZGVjb2RlLmMKQEAgLTE1MiwxMSArMTUyLDMxIEBAIHhsb2dfZGVjb2RlKExv Z2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQogCQkJ ICogY2FuIHJlc3RhcnQgZnJvbSB0aGVyZS4KIAkJCSAqLwogCQkJYnJlYWs7CisJCWNhc2Ug WExPR19QQVJBTUVURVJfQ0hBTkdFOgorCQl7CisJCQl4bF9wYXJhbWV0ZXJfY2hhbmdlICp4 bHJlYyA9CisJCQkJKHhsX3BhcmFtZXRlcl9jaGFuZ2UgKikgWExvZ1JlY0dldERhdGEoYnVm LT5yZWNvcmQpOworCisJCQkvKgorCQkJICogSWYgd2FsX2xldmVsIG9uIHByaW1hcnkgaXMg cmVkdWNlZCB0byBsZXNzIHRoYW4gbG9naWNhbCwgdGhlbiB3ZQorCQkJICogd2FudCB0byBw cmV2ZW50IGV4aXN0aW5nIGxvZ2ljYWwgc2xvdHMgZnJvbSBiZWluZyB1c2VkLgorCQkJICog RXhpc3RpbmcgbG9naWNhbCBzbG90cyBvbiBzdGFuZGJ5IGdldCBpbnZhbGlkYXRlZCB3aGVu IHRoaXMgV0FMCisJCQkgKiByZWNvcmQgaXMgcmVwbGF5ZWQ7IGFuZCBmdXJ0aGVyLCBzbG90 IGNyZWF0aW9uIGZhaWxzIHdoZW4gdGhlCisJCQkgKiB3YWwgbGV2ZWwgaXMgbm90IHN1ZmZp Y2llbnQ7IGJ1dCBhbGwgdGhlc2Ugb3BlcmF0aW9ucyBhcmUgbm90CisJCQkgKiBzeW5jaHJv bml6ZWQsIHNvIGEgbG9naWNhbCBzbG90IG1heSBjcmVlcCBpbiB3aGlsZSB0aGUgd2FsX2xl dmVsCisJCQkgKiBpcyBiZWluZyByZWR1Y2VkLiBIZW5jZSB0aGlzIGV4dHJhIGNoZWNrLgor CQkJICovCisJCQlpZiAoeGxyZWMtPndhbF9sZXZlbCA8IFdBTF9MRVZFTF9MT0dJQ0FMKQor CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1Rf SU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJCSBlcnJtc2coImxvZ2ljYWwgZGVjb2Rp bmcgb24gc3RhbmRieSByZXF1aXJlcyB3YWxfbGV2ZWwgIgorCQkJCQkJCQkidG8gYmUgYXQg bGVhc3QgbG9naWNhbCBvbiB0aGUgcHJpbWFyeSBzZXJ2ZXIiKSkpOworCQkJYnJlYWs7CisJ CX0KIAkJY2FzZSBYTE9HX05PT1A6CiAJCWNhc2UgWExPR19ORVhUT0lEOgogCQljYXNlIFhM T0dfU1dJVENIOgogCQljYXNlIFhMT0dfQkFDS1VQX0VORDoKLQkJY2FzZSBYTE9HX1BBUkFN RVRFUl9DSEFOR0U6CiAJCWNhc2UgWExPR19SRVNUT1JFX1BPSU5UOgogCQljYXNlIFhMT0df RlBXX0NIQU5HRToKIAkJY2FzZSBYTE9HX0ZQSV9GT1JfSElOVDoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMKaW5kZXggMWE1OGRkNzY0OS4uOTFhY2Mw YzE1NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dp Y2FsLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMK QEAgLTExOSwyMyArMTE5LDIyIEBAIENoZWNrTG9naWNhbERlY29kaW5nUmVxdWlyZW1lbnRz KHZvaWQpCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lU RV9TVEFURSksCiAJCQkJIGVycm1zZygibG9naWNhbCBkZWNvZGluZyByZXF1aXJlcyBhIGRh dGFiYXNlIGNvbm5lY3Rpb24iKSkpOwogCi0JLyogLS0tLQotCSAqIFRPRE86IFdlIGdvdCB0 byBjaGFuZ2UgdGhhdCBzb21lZGF5IHNvb24uLi4KLQkgKgotCSAqIFRoZXJlJ3MgYmFzaWNh bGx5IHRocmVlIHRoaW5ncyBtaXNzaW5nIHRvIGFsbG93IHRoaXM6Ci0JICogMSkgV2UgbmVl ZCB0byBiZSBhYmxlIHRvIGNvcnJlY3RseSBhbmQgcXVpY2tseSBpZGVudGlmeSB0aGUgdGlt ZWxpbmUgYQotCSAqCSAgTFNOIGJlbG9uZ3MgdG8KLQkgKiAyKSBXZSBuZWVkIHRvIGZvcmNl IGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIHRvIGJlIGVuYWJsZWQgYXQgYWxsIHRpbWVzIHNvCi0J ICoJICB0aGUgcHJpbWFyeSBjYW5ub3QgcmVtb3ZlIHJvd3Mgd2UgbmVlZC4KLQkgKiAzKSBz dXBwb3J0IGRyb3BwaW5nIHJlcGxpY2F0aW9uIHNsb3RzIHJlZmVycmluZyB0byBhIGRhdGFi YXNlLCBpbgotCSAqCSAgZGJhc2VfcmVkby4gVGhlcmUgY2FuJ3QgYmUgYW55IGFjdGl2ZSBv bmVzIGR1ZSB0byBIUyByZWNvdmVyeQotCSAqCSAgY29uZmxpY3RzLCBzbyB0aGF0IHNob3Vs ZCBiZSByZWxhdGl2ZWx5IGVhc3kuCi0JICogLS0tLQotCSAqLwogCWlmIChSZWNvdmVyeUlu UHJvZ3Jlc3MoKSkKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX0ZF QVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJIGVycm1zZygibG9naWNhbCBkZWNvZGluZyBj YW5ub3QgYmUgdXNlZCB3aGlsZSBpbiByZWNvdmVyeSIpKSk7CisJeworCQkvKgorCQkgKiBU aGlzIGNoZWNrIG1heSBoYXZlIHJhY2UgY29uZGl0aW9ucywgYnV0IHdoZW5ldmVyCisJCSAq IFhMT0dfUEFSQU1FVEVSX0NIQU5HRSBpbmRpY2F0ZXMgdGhhdCB3YWxfbGV2ZWwgaGFzIGNo YW5nZWQsIHdlCisJCSAqIHZlcmlmeSB0aGF0IHRoZXJlIGFyZSBubyBleGlzdGluZyBsb2dp Y2FsIHJlcGxpY2F0aW9uIHNsb3RzLiBBbmQgdG8KKwkJICogYXZvaWQgcmFjZXMgYXJvdW5k IGNyZWF0aW5nIGEgbmV3IHNsb3QsCisJCSAqIENoZWNrTG9naWNhbERlY29kaW5nUmVxdWly ZW1lbnRzKCkgaXMgY2FsbGVkIG9uY2UgYmVmb3JlIGNyZWF0aW5nCisJCSAqIHRoZSBzbG90 LCBhbmQgb25jZSB3aGVuIGxvZ2ljYWwgZGVjb2RpbmcgaXMgaW5pdGlhbGx5IHN0YXJ0aW5n IHVwLgorCQkgKi8KKwkJaWYgKEdldEFjdGl2ZVdhbExldmVsT25TdGFuZGJ5KCkgPCBXQUxf TEVWRUxfTE9HSUNBTCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNP REVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJs b2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkgcmVxdWlyZXMgd2FsX2xldmVsICIKKwkJCQkJ CQkidG8gYmUgYXQgbGVhc3QgbG9naWNhbCBvbiB0aGUgcHJpbWFyeSBzZXJ2ZXIiKSkpOwor CX0KIH0KIAogLyoKQEAgLTMzMSw2ICszMzAsMTIgQEAgQ3JlYXRlSW5pdERlY29kaW5nQ29u dGV4dChjb25zdCBjaGFyICpwbHVnaW4sCiAJTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4 OwogCU1lbW9yeUNvbnRleHQgb2xkX2NvbnRleHQ7CiAKKwkvKgorCSAqIE9uIHN0YW5kYnks IHRoaXMgY2hlY2sgaXMgYWxzbyByZXF1aXJlZCB3aGlsZSBjcmVhdGluZyB0aGUgc2xvdC4g Q2hlY2sKKwkgKiB0aGUgY29tbWVudHMgaW4gdGhpcyBmdW5jdGlvbi4KKwkgKi8KKwlDaGVj a0xvZ2ljYWxEZWNvZGluZ1JlcXVpcmVtZW50cygpOworCiAJLyogc2hvcnRlciBsaW5lcy4u LiAqLwogCXNsb3QgPSBNeVJlcGxpY2F0aW9uU2xvdDsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vc2xvdC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xv dC5jCmluZGV4IDM4YzZmMTg4ODYuLjI5MGQ0YjQ1ZjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9z bG90LmMKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNp bmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5z LmgiCisjaW5jbHVkZSAiYWNjZXNzL3hsb2dyZWNvdmVyeS5oIgogCiAvKgogICogUmVwbGlj YXRpb24gc2xvdCBvbi1kaXNrIGRhdGEgc3RydWN0dXJlLgpAQCAtMTE3NywzNyArMTE3OCwy OCBAQCBSZXBsaWNhdGlvblNsb3RSZXNlcnZlV2FsKHZvaWQpCiAJCS8qCiAJCSAqIEZvciBs b2dpY2FsIHNsb3RzIGxvZyBhIHN0YW5kYnkgc25hcHNob3QgYW5kIHN0YXJ0IGxvZ2ljYWwg ZGVjb2RpbmcKIAkJICogYXQgZXhhY3RseSB0aGF0IHBvc2l0aW9uLiBUaGF0IGFsbG93cyB0 aGUgc2xvdCB0byBzdGFydCB1cCBtb3JlCi0JCSAqIHF1aWNrbHkuCisJCSAqIHF1aWNrbHku IEJ1dCBvbiBhIHN0YW5kYnkgd2UgY2Fubm90IGRvIFdBTCB3cml0ZXMsIHNvIGp1c3QgdXNl IHRoZQorCQkgKiByZXBsYXkgcG9pbnRlcjsgZWZmZWN0aXZlbHksIGFuIGF0dGVtcHQgdG8g Y3JlYXRlIGEgbG9naWNhbCBzbG90IG9uCisJCSAqIHN0YW5kYnkgd2lsbCBjYXVzZSBpdCB0 byB3YWl0IGZvciBhbiB4bF9ydW5uaW5nX3hhY3QgcmVjb3JkIHRvIGJlCisJCSAqIGxvZ2dl ZCBpbmRlcGVuZGVudGx5IG9uIHRoZSBwcmltYXJ5LCBzbyB0aGF0IGEgc25hcHNob3QgY2Fu IGJlIGJ1aWx0CisJCSAqIHVzaW5nIHRoZSByZWNvcmQuCiAJCSAqCi0JCSAqIFRoYXQncyBu b3QgbmVlZGVkIChvciBpbmRlZWQgaGVscGZ1bCkgZm9yIHBoeXNpY2FsIHNsb3RzIGFzIHRo ZXknbGwKLQkJICogc3RhcnQgcmVwbGF5IGF0IHRoZSBsYXN0IGxvZ2dlZCBjaGVja3BvaW50 IGFueXdheS4gSW5zdGVhZCByZXR1cm4KLQkJICogdGhlIGxvY2F0aW9uIG9mIHRoZSBsYXN0 IHJlZG8gTFNOLiBXaGlsZSB0aGF0IHNsaWdodGx5IGluY3JlYXNlcwotCQkgKiB0aGUgY2hh bmNlIHRoYXQgd2UgaGF2ZSB0byByZXRyeSwgaXQncyB3aGVyZSBhIGJhc2UgYmFja3VwIGhh cyB0bwotCQkgKiBzdGFydCByZXBsYXkgYXQuCisJCSAqIE5vbmUgb2YgdGhpcyBpcyBuZWVk ZWQgKG9yIGluZGVlZCBoZWxwZnVsKSBmb3IgcGh5c2ljYWwgc2xvdHMgYXMKKwkJICogdGhl eSdsbCBzdGFydCByZXBsYXkgYXQgdGhlIGxhc3QgbG9nZ2VkIGNoZWNrcG9pbnQgYW55d2F5 LiBJbnN0ZWFkCisJCSAqIHJldHVybiB0aGUgbG9jYXRpb24gb2YgdGhlIGxhc3QgcmVkbyBM U04uIFdoaWxlIHRoYXQgc2xpZ2h0bHkKKwkJICogaW5jcmVhc2VzIHRoZSBjaGFuY2UgdGhh dCB3ZSBoYXZlIHRvIHJldHJ5LCBpdCdzIHdoZXJlIGEgYmFzZSBiYWNrdXAKKwkJICogaGFz IHRvIHN0YXJ0IHJlcGxheSBhdC4KIAkJICovCi0JCWlmICghUmVjb3ZlcnlJblByb2dyZXNz KCkgJiYgU2xvdElzTG9naWNhbChzbG90KSkKLQkJewotCQkJWExvZ1JlY1B0cglmbHVzaHB0 cjsKLQotCQkJLyogc3RhcnQgYXQgY3VycmVudCBpbnNlcnQgcG9zaXRpb24gKi8KKwkJaWYg KFNsb3RJc1BoeXNpY2FsKHNsb3QpKQorCQkJcmVzdGFydF9sc24gPSBHZXRSZWRvUmVjUHRy KCk7CisJCWVsc2UgaWYgKFJlY292ZXJ5SW5Qcm9ncmVzcygpKQorCQkJcmVzdGFydF9sc24g PSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpOworCQllbHNlCiAJCQlyZXN0YXJ0X2xzbiA9 IEdldFhMb2dJbnNlcnRSZWNQdHIoKTsKLQkJCVNwaW5Mb2NrQWNxdWlyZSgmc2xvdC0+bXV0 ZXgpOwotCQkJc2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbiA9IHJlc3RhcnRfbHNuOwotCQkJU3Bp bkxvY2tSZWxlYXNlKCZzbG90LT5tdXRleCk7Ci0KLQkJCS8qIG1ha2Ugc3VyZSB3ZSBoYXZl IGVub3VnaCBpbmZvcm1hdGlvbiB0byBzdGFydCAqLwotCQkJZmx1c2hwdHIgPSBMb2dTdGFu ZGJ5U25hcHNob3QoKTsKIAotCQkJLyogYW5kIG1ha2Ugc3VyZSBpdCdzIGZzeW5jZWQgdG8g ZGlzayAqLwotCQkJWExvZ0ZsdXNoKGZsdXNocHRyKTsKLQkJfQotCQllbHNlCi0JCXsKLQkJ CXJlc3RhcnRfbHNuID0gR2V0UmVkb1JlY1B0cigpOwotCQkJU3BpbkxvY2tBY3F1aXJlKCZz bG90LT5tdXRleCk7Ci0JCQlzbG90LT5kYXRhLnJlc3RhcnRfbHNuID0gcmVzdGFydF9sc247 Ci0JCQlTcGluTG9ja1JlbGVhc2UoJnNsb3QtPm11dGV4KTsKLQkJfQorCQlTcGluTG9ja0Fj cXVpcmUoJnNsb3QtPm11dGV4KTsKKwkJc2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbiA9IHJlc3Rh cnRfbHNuOworCQlTcGluTG9ja1JlbGVhc2UoJnNsb3QtPm11dGV4KTsKIAogCQkvKiBwcmV2 ZW50IFdBTCByZW1vdmFsIGFzIGZhc3QgYXMgcG9zc2libGUgKi8KIAkJUmVwbGljYXRpb25T bG90c0NvbXB1dGVSZXF1aXJlZExTTigpOwpAQCAtMTIyMyw2ICsxMjE1LDE3IEBAIFJlcGxp Y2F0aW9uU2xvdFJlc2VydmVXYWwodm9pZCkKIAkJaWYgKFhMb2dHZXRMYXN0UmVtb3ZlZFNl Z25vKCkgPCBzZWdubykKIAkJCWJyZWFrOwogCX0KKworCWlmICghUmVjb3ZlcnlJblByb2dy ZXNzKCkgJiYgU2xvdElzTG9naWNhbChzbG90KSkKKwl7CisJCVhMb2dSZWNQdHIJZmx1c2hw dHI7CisKKwkJLyogbWFrZSBzdXJlIHdlIGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIHRvIHN0 YXJ0ICovCisJCWZsdXNocHRyID0gTG9nU3RhbmRieVNuYXBzaG90KCk7CisKKwkJLyogYW5k IG1ha2Ugc3VyZSBpdCdzIGZzeW5jZWQgdG8gZGlzayAqLworCQlYTG9nRmx1c2goZmx1c2hw dHIpOworCX0KIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3dhbHNlbmRlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKaW5k ZXggODg4NWNkZWViYy4uMWU5MWNiYzU2NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vd2Fsc2VuZGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fs c2VuZGVyLmMKQEAgLTkwNiwyMyArOTA2LDMxIEBAIGxvZ2ljYWxfcmVhZF94bG9nX3BhZ2Uo WExvZ1JlYWRlclN0YXRlICpzdGF0ZSwgWExvZ1JlY1B0ciB0YXJnZXRQYWdlUHRyLCBpbnQg cmVxCiAJaW50CQkJY291bnQ7CiAJV0FMUmVhZEVycm9yIGVycmluZm87CiAJWExvZ1NlZ05v CXNlZ25vOwotCVRpbWVMaW5lSUQJY3VyclRMSSA9IEdldFdBTEluc2VydGlvblRpbWVMaW5l KCk7CisJVGltZUxpbmVJRAljdXJyVExJOwogCiAJLyoKLQkgKiBTaW5jZSBsb2dpY2FsIGRl Y29kaW5nIGlzIG9ubHkgcGVybWl0dGVkIG9uIGEgcHJpbWFyeSBzZXJ2ZXIsIHdlIGtub3cK LQkgKiB0aGF0IHRoZSBjdXJyZW50IHRpbWVsaW5lIElEIGNhbid0IGJlIGNoYW5naW5nIGFu eSBtb3JlLiBJZiB3ZSBkaWQgdGhpcwotCSAqIG9uIGEgc3RhbmRieSwgd2UnZCBoYXZlIHRv IHdvcnJ5IGFib3V0IHRoZSB2YWx1ZXMgd2UgY29tcHV0ZSBoZXJlCi0JICogYmVjb21pbmcg aW52YWxpZCBkdWUgdG8gYSBwcm9tb3Rpb24gb3IgdGltZWxpbmUgY2hhbmdlLgorCSAqIFNp bmNlIGxvZ2ljYWwgZGVjb2RpbmcgaXMgYWxzbyBwZXJtaXR0ZWQgb24gYSBzdGFuZGJ5IHNl cnZlciwgd2UgbmVlZAorCSAqIHRvIGNoZWNrIGlmIHRoZSBzZXJ2ZXIgaXMgaW4gcmVjb3Zl cnkgdG8gZGVjaWRlIGhvdyB0byBnZXQgdGhlIGN1cnJlbnQKKwkgKiB0aW1lbGluZSBJRCAo c28gdGhhdCBpdCBhbHNvIGNvdmVyIHRoZSBwcm9tb3Rpb24gb3IgdGltZWxpbmUgY2hhbmdl IGNhc2VzKS4KIAkgKi8KKworCS8qIG1ha2Ugc3VyZSB3ZSBoYXZlIGVub3VnaCBXQUwgYXZh aWxhYmxlICovCisJZmx1c2hwdHIgPSBXYWxTbmRXYWl0Rm9yV2FsKHRhcmdldFBhZ2VQdHIg KyByZXFMZW4pOworCisJLyogdGhlIHN0YW5kYnkgY291bGQgaGF2ZSBiZWVuIHByb21vdGVk LCBzbyBjaGVjayBpZiBzdGlsbCBpbiByZWNvdmVyeSAqLworCWFtX2Nhc2NhZGluZ193YWxz ZW5kZXIgPSBSZWNvdmVyeUluUHJvZ3Jlc3MoKTsKKworCWlmIChhbV9jYXNjYWRpbmdfd2Fs c2VuZGVyKQorCQlHZXRYTG9nUmVwbGF5UmVjUHRyKCZjdXJyVExJKTsKKwllbHNlCisJCWN1 cnJUTEkgPSBHZXRXQUxJbnNlcnRpb25UaW1lTGluZSgpOworCiAJWExvZ1JlYWREZXRlcm1p bmVUaW1lbGluZShzdGF0ZSwgdGFyZ2V0UGFnZVB0ciwgcmVxTGVuLCBjdXJyVExJKTsKIAlz ZW5kVGltZUxpbmVJc0hpc3RvcmljID0gKHN0YXRlLT5jdXJyVExJICE9IGN1cnJUTEkpOwog CXNlbmRUaW1lTGluZSA9IHN0YXRlLT5jdXJyVExJOwogCXNlbmRUaW1lTGluZVZhbGlkVXB0 byA9IHN0YXRlLT5jdXJyVExJVmFsaWRVbnRpbDsKIAlzZW5kVGltZUxpbmVOZXh0VExJID0g c3RhdGUtPm5leHRUTEk7CiAKLQkvKiBtYWtlIHN1cmUgd2UgaGF2ZSBlbm91Z2ggV0FMIGF2 YWlsYWJsZSAqLwotCWZsdXNocHRyID0gV2FsU25kV2FpdEZvcldhbCh0YXJnZXRQYWdlUHRy ICsgcmVxTGVuKTsKLQogCS8qIGZhaWwgaWYgbm90IChpbXBsaWVzIHdlIGFyZSBnb2luZyB0 byBzaHV0IGRvd24pICovCiAJaWYgKGZsdXNocHRyIDwgdGFyZ2V0UGFnZVB0ciArIHJlcUxl bikKIAkJcmV0dXJuIC0xOwpAQCAtOTM3LDcgKzk0NSw3IEBAIGxvZ2ljYWxfcmVhZF94bG9n X3BhZ2UoWExvZ1JlYWRlclN0YXRlICpzdGF0ZSwgWExvZ1JlY1B0ciB0YXJnZXRQYWdlUHRy LCBpbnQgcmVxCiAJCQkJIGN1cl9wYWdlLAogCQkJCSB0YXJnZXRQYWdlUHRyLAogCQkJCSBY TE9HX0JMQ0tTWiwKLQkJCQkgc3RhdGUtPnNlZy53c190bGksIC8qIFBhc3MgdGhlIGN1cnJl bnQgVExJIGJlY2F1c2Ugb25seQorCQkJCSBjdXJyVExJLCAJCQkvKiBQYXNzIHRoZSBjdXJy ZW50IFRMSSBiZWNhdXNlIG9ubHkKIAkJCQkJCQkJCSAqIFdhbFNuZFNlZ21lbnRPcGVuIGNv bnRyb2xzIHdoZXRoZXIgbmV3CiAJCQkJCQkJCQkgKiBUTEkgaXMgbmVlZGVkLiAqLwogCQkJ CSAmZXJyaW5mbykpCkBAIC0zMDc0LDEwICszMDgyLDE0IEBAIFhMb2dTZW5kTG9naWNhbCh2 b2lkKQogCSAqIElmIGZpcnN0IHRpbWUgdGhyb3VnaCBpbiB0aGlzIHNlc3Npb24sIGluaXRp YWxpemUgZmx1c2hQdHIuICBPdGhlcndpc2UsCiAJICogd2Ugb25seSBuZWVkIHRvIHVwZGF0 ZSBmbHVzaFB0ciBpZiBFbmRSZWNQdHIgaXMgcGFzdCBpdC4KIAkgKi8KLQlpZiAoZmx1c2hQ dHIgPT0gSW52YWxpZFhMb2dSZWNQdHIpCi0JCWZsdXNoUHRyID0gR2V0Rmx1c2hSZWNQdHIo TlVMTCk7Ci0JZWxzZSBpZiAobG9naWNhbF9kZWNvZGluZ19jdHgtPnJlYWRlci0+RW5kUmVj UHRyID49IGZsdXNoUHRyKQotCQlmbHVzaFB0ciA9IEdldEZsdXNoUmVjUHRyKE5VTEwpOwor CWlmIChmbHVzaFB0ciA9PSBJbnZhbGlkWExvZ1JlY1B0ciB8fAorCQlsb2dpY2FsX2RlY29k aW5nX2N0eC0+cmVhZGVyLT5FbmRSZWNQdHIgPj0gZmx1c2hQdHIpCisJeworCQlpZiAoYW1f Y2FzY2FkaW5nX3dhbHNlbmRlcikKKwkJCWZsdXNoUHRyID0gR2V0U3RhbmRieUZsdXNoUmVj UHRyKE5VTEwpOworCQllbHNlCisJCQlmbHVzaFB0ciA9IEdldEZsdXNoUmVjUHRyKE5VTEwp OworCX0KIAogCS8qIElmIEVuZFJlY1B0ciBpcyBzdGlsbCBwYXN0IG91ciBmbHVzaFB0ciwg aXQgbWVhbnMgd2UgY2F1Z2h0IHVwLiAqLwogCWlmIChsb2dpY2FsX2RlY29kaW5nX2N0eC0+ cmVhZGVyLT5FbmRSZWNQdHIgPj0gZmx1c2hQdHIpCkBAIC0zMTY4LDcgKzMxODAsOCBAQCBH ZXRTdGFuZGJ5Rmx1c2hSZWNQdHIoVGltZUxpbmVJRCAqdGxpKQogCXJlY2VpdmVQdHIgPSBH ZXRXYWxSY3ZGbHVzaFJlY1B0cihOVUxMLCAmcmVjZWl2ZVRMSSk7CiAJcmVwbGF5UHRyID0g R2V0WExvZ1JlcGxheVJlY1B0cigmcmVwbGF5VExJKTsKIAotCSp0bGkgPSByZXBsYXlUTEk7 CisJaWYgKHRsaSkKKwkJKnRsaSA9IHJlcGxheVRMSTsKIAogCXJlc3VsdCA9IHJlcGxheVB0 cjsKIAlpZiAocmVjZWl2ZVRMSSA9PSByZXBsYXlUTEkgJiYgcmVjZWl2ZVB0ciA+IHJlcGxh eVB0cikKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmggYi9zcmMvaW5j bHVkZS9hY2Nlc3MveGxvZy5oCmluZGV4IGNmZTU0MDk3MzguLjQ4Y2E4NTIzODEgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL3hsb2cuaApAQCAtMjMwLDYgKzIzMCw3IEBAIGV4dGVybiB2b2lkIFhMT0dTaG1lbUlu aXQodm9pZCk7CiBleHRlcm4gdm9pZCBCb290U3RyYXBYTE9HKHZvaWQpOwogZXh0ZXJuIHZv aWQgSW5pdGlhbGl6ZVdhbENvbnNpc3RlbmN5Q2hlY2tpbmcodm9pZCk7CiBleHRlcm4gdm9p ZCBMb2NhbFByb2Nlc3NDb250cm9sRmlsZShib29sIHJlc2V0KTsKK2V4dGVybiBXYWxMZXZl bCBHZXRBY3RpdmVXYWxMZXZlbE9uU3RhbmRieSh2b2lkKTsKIGV4dGVybiB2b2lkIFN0YXJ0 dXBYTE9HKHZvaWQpOwogZXh0ZXJuIHZvaWQgU2h1dGRvd25YTE9HKGludCBjb2RlLCBEYXR1 bSBhcmcpOwogZXh0ZXJuIHZvaWQgQ3JlYXRlQ2hlY2tQb2ludChpbnQgZmxhZ3MpOwotLSAK Mi4zNC4xCgo= --------------xW006q159UiWPtHw9wcHAuVA Content-Type: text/plain; charset=UTF-8; name="v48-0002-Handle-logical-slot-conflicts-on-standby.patch" Content-Disposition: attachment; filename="v48-0002-Handle-logical-slot-conflicts-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSA4ZGZkODkxMTI1NmIxODQxMTkwMjA1ZjZmZmYyMDUyZGU3ZjFmZTNiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA3IEZlYiAyMDIzIDA4OjU3OjU2ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2NDggMi82XSBIYW5kbGUgbG9naWNhbCBzbG90IGNvbmZsaWN0cyBvbiBzdGFuZGJ5LgoK RHVyaW5nIFdBTCByZXBsYXkgb24gc3RhbmRieSwgd2hlbiBzbG90IGNvbmZsaWN0IGlzIGlk ZW50aWZpZWQsCmludmFsaWRhdGUgc3VjaCBzbG90cy4gQWxzbyBkbyB0aGUgc2FtZSB0aGlu ZyBpZiB3YWxfbGV2ZWwgb24gdGhlIHByaW1hcnkgc2VydmVyCmlzIHJlZHVjZWQgdG8gYmVs b3cgbG9naWNhbCBhbmQgdGhlcmUgYXJlIGV4aXN0aW5nIGxvZ2ljYWwgc2xvdHMKb24gc3Rh bmRieS4gSW50cm9kdWNlIGEgbmV3IFByb2NTaWduYWxSZWFzb24gdmFsdWUgZm9yIHNsb3QK Y29uZmxpY3QgcmVjb3ZlcnkuIEFycmFuZ2UgZm9yIGEgbmV3IHBnX3N0YXRfZGF0YWJhc2Vf Y29uZmxpY3RzIGZpZWxkOgpjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QuCgpBZGQgYSBuZXcg ZmllbGQgImNvbmZsaWN0aW5nIiBpbiBwZ19yZXBsaWNhdGlvbl9zbG90cy4KCkF1dGhvcjog QW5kcmVzIEZyZXVuZCAoaW4gYW4gb2xkZXIgdmVyc2lvbiksIEFtaXQgS2hhbmRla2FyLCBC ZXJ0cmFuZCBEcm91dm90ClJldmlld2VkLUJ5OiBCZXJ0cmFuZCBEcm91dm90LCBBbmRyZXMg RnJldW5kLCBSb2JlcnQgSGFhcywgRmFicml6aW8gZGUgUm95ZXMgTWVsbG8sCkJoYXJhdGgg UnVwaXJlZGR5Ci0tLQogZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAgICAgICAgICAg ICAgICAgIHwgIDExICsKIGRvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbCAgICAgICAg ICAgICAgICB8ICAxMCArCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jICAg ICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMg ICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAg ICAgICAgICAgICB8ICAgMyArCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHhsb2cu YyAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd4bG9n LmMgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cu YyAgICAgICAgICAgICB8ICAyNCArKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3Zp ZXdzLnNxbCAgICAgICAgICB8ICAgNiArLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9n aWNhbGZ1bmNzLmMgICAgICAgIHwgIDEzICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9z bG90LmMgICAgICAgICAgICAgICAgfCAxOTggKysrKysrKysrKysrKy0tLS0tCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVuY3MuYyAgICAgICAgICAgfCAgMTMgKy0KIHNyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jICAgICAgICAgICB8ICAgOCArCiBzcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgICAgICAgICAgfCAgIDMgKwogc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jICAgICAgICAgICAgIHwgIDEzICstCiBz cmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgICAgICAgfCAgMjQgKysr CiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfZGF0YWJhc2UuYyAgfCAgIDQg Kwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMgICAgICAgICAgIHwgICAz ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICAgICB8ICAx MSArLQogc3JjL2luY2x1ZGUvcGdzdGF0LmggICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAxICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaCAgICAgICAgICAgICAgICB8 ICAgNSArLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmggICAgICAgICAgICAg IHwgICAxICsKIHNyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5oICAgICAgICAgICAgICAg ICB8ICAgMiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCAgICAgICAg ICAgfCAgIDggKy0KIDI0IGZpbGVzIGNoYW5nZWQsIDMwNCBpbnNlcnRpb25zKCspLCA2MyBk ZWxldGlvbnMoLSkKICAgNS40JSBkb2Mvc3JjL3NnbWwvCiAgIDcuMiUgc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0vCiAgIDQuNyUgc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC8KICA1Ni44JSBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi8KICAgNC41JSBzcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy8KICAgNi41JSBzcmMvYmFja2VuZC90Y29wLwogICA1LjQlIHNyYy9i YWNrZW5kLwogICAzLjklIHNyYy9pbmNsdWRlL2NhdGFsb2cvCiAgIDMuMCUgc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcu c2dtbCBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKaW5kZXggMTc1NmYxYTRiNi4u ZTI1ZjcxYTc3NiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAor KysgYi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCkBAIC00MzY1LDYgKzQzNjUsMTcg QEAgU0VMRUNUIHBpZCwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50IEZST00gcGdfc3Rh dF9hY3Rpdml0eSBXSEVSRSB3YWl0X2V2ZW50IGkKICAgICAgICBkZWFkbG9ja3MKICAgICAg IDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVu dHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZp bml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+Y29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90 PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+YmlnaW50PC90eXBlPgorICAgICAgPC9wYXJhPgorICAg ICAgPHBhcmE+CisgICAgICAgTnVtYmVyIG9mIGFjdGl2ZSBsb2dpY2FsIHNsb3RzIGluIHRo aXMgZGF0YWJhc2UgdGhhdCBoYXZlIGJlZW4KKyAgICAgICBpbnZhbGlkYXRlZCBiZWNhdXNl IHRoZXkgY29uZmxpY3Qgd2l0aCByZWNvdmVyeSAobm90ZSB0aGF0IGluYWN0aXZlIG9uZXMK KyAgICAgICBhcmUgYWxzbyBpbnZhbGlkYXRlZCBidXQgZG8gbm90IGluY3JlbWVudCB0aGlz IGNvdW50ZXIpCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CiAgICAgPC90 Ym9keT4KICAgIDwvdGdyb3VwPgogICA8L3RhYmxlPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL3N5c3RlbS12aWV3cy5zZ21sIGIvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21s CmluZGV4IDdjOGZjM2Y2NTQuLjIzOWY3MTMyOTUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9zeXN0ZW0tdmlld3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNn bWwKQEAgLTI1MTYsNiArMjUxNiwxNiBAQCBTRUxFQ1QgKiBGUk9NIHBnX2xvY2tzIHBsIExF RlQgSk9JTiBwZ19wcmVwYXJlZF94YWN0cyBwcHgKICAgICAgICBmYWxzZSBmb3IgcGh5c2lj YWwgc2xvdHMuCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CisKKyAgICAg PHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSBy b2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmNvbmZsaWN0 aW5nPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAg ICAgIDxwYXJhPgorICAgICAgIFRydWUgaWYgdGhpcyBsb2dpY2FsIHNsb3QgY29uZmxpY3Rl ZCB3aXRoIHJlY292ZXJ5IChhbmQgc28gaXMgbm93CisgICAgICAgaW52YWxpZGF0ZWQpLiBB bHdheXMgTlVMTCBmb3IgcGh5c2ljYWwgc2xvdHMuCisgICAgICA8L3BhcmE+PC9lbnRyeT4K KyAgICAgPC9yb3c+CiAgICAgPC90Ym9keT4KICAgIDwvdGdyb3VwPgogICA8L3RhYmxlPgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMKaW5kZXggYjc2NzhmM2MxNC4uOWE4NmZi M2ZlZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jCkBAIC0xOTcsNiArMTk3 LDcgQEAgZ2lzdFJlZG9EZWxldGVSZWNvcmQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJ CVhMb2dSZWNHZXRCbG9ja1RhZyhyZWNvcmQsIDAsICZybG9jYXRvciwgTlVMTCwgTlVMTCk7 CiAKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxkYXRhLT5zbmFw c2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJeGxkYXRhLT5pc0NhdGFsb2dSZWws CiAJCQkJCQkJCQkJCXJsb2NhdG9yKTsKIAl9CiAKQEAgLTM5MCw2ICszOTEsNyBAQCBnaXN0 UmVkb1BhZ2VSZXVzZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkgKi8KIAlpZiAoSW5I b3RTdGFuZGJ5KQogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdEZ1bGxY aWQoeGxyZWMtPnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQkJICAgeGxy ZWMtPmlzQ2F0YWxvZ1JlbCwKIAkJCQkJCQkJCQkJCSAgIHhscmVjLT5sb2NhdG9yKTsKIH0K IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoX3hsb2cuYwppbmRleCAwOGNlYjkxMjg4Li5i ODU2MzA0NzQ2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoX3hs b2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoX3hsb2cuYwpAQCAtMTAw Myw2ICsxMDAzLDcgQEAgaGFzaF94bG9nX3ZhY3V1bV9vbmVfcGFnZShYTG9nUmVhZGVyU3Rh dGUgKnJlY29yZCkKIAogCQlYTG9nUmVjR2V0QmxvY2tUYWcocmVjb3JkLCAwLCAmcmxvY2F0 b3IsIE5VTEwsIE5VTEwpOwogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hv dCh4bGRhdGEtPnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQl4bGRhdGEt PmlzQ2F0YWxvZ1JlbCwKIAkJCQkJCQkJCQkJcmxvY2F0b3IpOwogCX0KIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW0uYwppbmRleCAwNGU5YmM1ZWIyLi42NTI0Nzg0NTgzIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtODY4Niw2ICs4Njg2LDcgQEAgaGVhcF94bG9n X3BydW5lKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCSAqLwogCWlmIChJbkhvdFN0YW5k YnkpCiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhscmVjLT5zbmFw c2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJeGxyZWMtPmlzQ2F0YWxvZ1JlbCwK IAkJCQkJCQkJCQkJcmxvY2F0b3IpOwogCiAJLyoKQEAgLTg4NTUsNiArODg1Niw3IEBAIGhl YXBfeGxvZ192aXNpYmxlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCSAqLwogCWlmIChJ bkhvdFN0YW5kYnkpCiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhs cmVjLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJeGxyZWMtPmZsYWdz ICYgVklTSUJJTElUWU1BUF9JU19DQVRBTE9HX1JFTCwKIAkJCQkJCQkJCQkJcmxvY2F0b3Ip OwogCiAJLyoKQEAgLTg5NzIsNiArODk3NCw3IEBAIGhlYXBfeGxvZ19mcmVlemVfcGFnZShY TG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAogCQlYTG9nUmVjR2V0QmxvY2tUYWcocmVjb3Jk LCAwLCAmcmxvY2F0b3IsIE5VTEwsIE5VTEwpOwogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGlj dFdpdGhTbmFwc2hvdCh4bHJlYy0+c25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJ CQkJCXhscmVjLT5pc0NhdGFsb2dSZWwsCiAJCQkJCQkJCQkJCXJsb2NhdG9yKTsKIAl9CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR4bG9nLmMKaW5kZXggNDE0Y2E0ZjZkZS4uYzg3 ZTQ2ZWQ2NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR4bG9n LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR4bG9nLmMKQEAgLTY2OSw2 ICs2NjksNyBAQCBidHJlZV94bG9nX2RlbGV0ZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkK IAkJWExvZ1JlY0dldEJsb2NrVGFnKHJlY29yZCwgMCwgJnJsb2NhdG9yLCBOVUxMLCBOVUxM KTsKIAogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bHJlYy0+c25h cHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCXhscmVjLT5pc0NhdGFsb2dSZWws CiAJCQkJCQkJCQkJCXJsb2NhdG9yKTsKIAl9CiAKQEAgLTEwMDcsNiArMTAwOCw3IEBAIGJ0 cmVlX3hsb2dfcmV1c2VfcGFnZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAogCWlmIChJ bkhvdFN0YW5kYnkpCiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90RnVs bFhpZCh4bHJlYy0+c25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCQkgICB4 bHJlYy0+aXNDYXRhbG9nUmVsLAogCQkJCQkJCQkJCQkJICAgeGxyZWMtPmxvY2F0b3IpOwog fQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hsb2cuYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BneGxvZy5jCmluZGV4IGIwNzFiNTljOGEu LjQ1OWFjOTI5YmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3Bn eGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BneGxvZy5jCkBAIC04 NzksNiArODc5LDcgQEAgc3BnUmVkb1ZhY3V1bVJlZGlyZWN0KFhMb2dSZWFkZXJTdGF0ZSAq cmVjb3JkKQogCiAJCVhMb2dSZWNHZXRCbG9ja1RhZyhyZWNvcmQsIDAsICZsb2NhdG9yLCBO VUxMLCBOVUxMKTsKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxk YXRhLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJeGxkYXRhLT5pc0Nh dGFsb2dSZWwsCiAJCQkJCQkJCQkJCWxvY2F0b3IpOwogCX0KIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0veGxvZy5jCmluZGV4IGY5ZjBmNmRiOGQuLjU0ZDM0NGE1OWMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS94bG9nLmMKQEAgLTY0NDQsNiArNjQ0NCw3IEBAIENyZWF0ZUNoZWNr UG9pbnQoaW50IGZsYWdzKQogCVZpcnR1YWxUcmFuc2FjdGlvbklkICp2eGlkczsKIAlpbnQJ CQludnhpZHM7CiAJaW50CQkJb2xkWExvZ0FsbG93ZWQgPSAwOworCWJvb2wJCWludmFsaWRh dGVkID0gZmFsc2U7CiAKIAkvKgogCSAqIEFuIGVuZC1vZi1yZWNvdmVyeSBjaGVja3BvaW50 IGlzIHJlYWxseSBhIHNodXRkb3duIGNoZWNrcG9pbnQsIGp1c3QKQEAgLTY4MDQsNyArNjgw NSw4IEBAIENyZWF0ZUNoZWNrUG9pbnQoaW50IGZsYWdzKQogCSAqLwogCVhMQnl0ZVRvU2Vn KFJlZG9SZWNQdHIsIF9sb2dTZWdObywgd2FsX3NlZ21lbnRfc2l6ZSk7CiAJS2VlcExvZ1Nl ZyhyZWNwdHIsICZfbG9nU2VnTm8pOwotCWlmIChJbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNh dGlvblNsb3RzKF9sb2dTZWdObykpCisJSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25T bG90cyhfbG9nU2VnTm8sICZpbnZhbGlkYXRlZCwgSW52YWxpZE9pZCwgTlVMTCk7CisJaWYg KGludmFsaWRhdGVkKQogCXsKIAkJLyoKIAkJICogU29tZSBzbG90cyBoYXZlIGJlZW4gaW52 YWxpZGF0ZWQ7IHJlY2FsY3VsYXRlIHRoZSBvbGQtc2VnbWVudApAQCAtNzA4Myw2ICs3MDg1 LDcgQEAgQ3JlYXRlUmVzdGFydFBvaW50KGludCBmbGFncykKIAlYTG9nUmVjUHRyCWVuZHB0 cjsKIAlYTG9nU2VnTm8JX2xvZ1NlZ05vOwogCVRpbWVzdGFtcFR6IHh0aW1lOworCWJvb2wJ CWludmFsaWRhdGVkID0gZmFsc2U7CiAKIAkvKiBDb25jdXJyZW50IGNoZWNrcG9pbnQvcmVz dGFydHBvaW50IGNhbm5vdCBoYXBwZW4gKi8KIAlBc3NlcnQoIUlzVW5kZXJQb3N0bWFzdGVy IHx8IE15QmFja2VuZFR5cGUgPT0gQl9DSEVDS1BPSU5URVIpOwpAQCAtNzI0OCw3ICs3MjUx LDggQEAgQ3JlYXRlUmVzdGFydFBvaW50KGludCBmbGFncykKIAlyZXBsYXlQdHIgPSBHZXRY TG9nUmVwbGF5UmVjUHRyKCZyZXBsYXlUTEkpOwogCWVuZHB0ciA9IChyZWNlaXZlUHRyIDwg cmVwbGF5UHRyKSA/IHJlcGxheVB0ciA6IHJlY2VpdmVQdHI7CiAJS2VlcExvZ1NlZyhlbmRw dHIsICZfbG9nU2VnTm8pOwotCWlmIChJbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNs b3RzKF9sb2dTZWdObykpCisJSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cyhf bG9nU2VnTm8sICZpbnZhbGlkYXRlZCwgSW52YWxpZE9pZCwgTlVMTCk7CisJaWYgKGludmFs aWRhdGVkKQogCXsKIAkJLyoKIAkJICogU29tZSBzbG90cyBoYXZlIGJlZW4gaW52YWxpZGF0 ZWQ7IHJlY2FsY3VsYXRlIHRoZSBvbGQtc2VnbWVudApAQCAtNzk2MSw2ICs3OTY1LDIyIEBA IHhsb2dfcmVkbyhYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJLyogVXBkYXRlIG91ciBj b3B5IG9mIHRoZSBwYXJhbWV0ZXJzIGluIHBnX2NvbnRyb2wgKi8KIAkJbWVtY3B5KCZ4bHJl YywgWExvZ1JlY0dldERhdGEocmVjb3JkKSwgc2l6ZW9mKHhsX3BhcmFtZXRlcl9jaGFuZ2Up KTsKIAorCQkvKgorCQkgKiBJbnZhbGlkYXRlIGxvZ2ljYWwgc2xvdHMgaWYgd2UgYXJlIGlu IGhvdCBzdGFuZGJ5IGFuZCB0aGUgcHJpbWFyeSBkb2VzIG5vdAorCQkgKiBoYXZlIGEgV0FM IGxldmVsIHN1ZmZpY2llbnQgZm9yIGxvZ2ljYWwgZGVjb2RpbmcuIE5vIG5lZWQgdG8gc2Vh cmNoCisJCSAqIGZvciBwb3RlbnRpYWxseSBjb25mbGljdGluZyBsb2dpY2FsbHkgc2xvdHMg aWYgc3RhbmRieSBpcyBydW5uaW5nCisJCSAqIHdpdGggd2FsX2xldmVsIGxvd2VyIHRoYW4g bG9naWNhbCwgYmVjYXVzZSBpbiB0aGF0IGNhc2UsIHdlIHdvdWxkCisJCSAqIGhhdmUgZWl0 aGVyIGRpc2FsbG93ZWQgY3JlYXRpb24gb2YgbG9naWNhbCBzbG90cyBvciBpbnZhbGlkYXRl ZCBleGlzdGluZworCQkgKiBvbmVzLgorCQkgKi8KKwkJaWYgKEluUmVjb3ZlcnkgJiYgSW5I b3RTdGFuZGJ5ICYmCisJCQl4bHJlYy53YWxfbGV2ZWwgPCBXQUxfTEVWRUxfTE9HSUNBTCAm JgorCQkJd2FsX2xldmVsID49IFdBTF9MRVZFTF9MT0dJQ0FMKQorCQl7CisJCQlUcmFuc2Fj dGlvbklkIENvbmZsaWN0SG9yaXpvbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCQkJSW52 YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cyhJbnZhbGlkWExvZ1JlY1B0ciwgTlVM TCwgSW52YWxpZE9pZCwgJkNvbmZsaWN0SG9yaXpvbik7CisJCX0KKwogCQlMV0xvY2tBY3F1 aXJlKENvbnRyb2xGaWxlTG9jaywgTFdfRVhDTFVTSVZFKTsKIAkJQ29udHJvbEZpbGUtPk1h eENvbm5lY3Rpb25zID0geGxyZWMuTWF4Q29ubmVjdGlvbnM7CiAJCUNvbnRyb2xGaWxlLT5t YXhfd29ya2VyX3Byb2Nlc3NlcyA9IHhscmVjLm1heF93b3JrZXJfcHJvY2Vzc2VzOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IDg2MDhlM2ZhNWIuLmEyNzJi ZDRhODggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNx bAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTk5Nyw3 ICs5OTcsOCBAQCBDUkVBVEUgVklFVyBwZ19yZXBsaWNhdGlvbl9zbG90cyBBUwogICAgICAg ICAgICAgTC5jb25maXJtZWRfZmx1c2hfbHNuLAogICAgICAgICAgICAgTC53YWxfc3RhdHVz LAogICAgICAgICAgICAgTC5zYWZlX3dhbF9zaXplLAotICAgICAgICAgICAgTC50d29fcGhh c2UKKyAgICAgICAgICAgIEwudHdvX3BoYXNlLAorICAgICAgICAgICAgTC5jb25mbGljdGlu ZwogICAgIEZST00gcGdfZ2V0X3JlcGxpY2F0aW9uX3Nsb3RzKCkgQVMgTAogICAgICAgICAg ICAgTEVGVCBKT0lOIHBnX2RhdGFiYXNlIEQgT04gKEwuZGF0b2lkID0gRC5vaWQpOwogCkBA IC0xMDY1LDcgKzEwNjYsOCBAQCBDUkVBVEUgVklFVyBwZ19zdGF0X2RhdGFiYXNlX2NvbmZs aWN0cyBBUwogICAgICAgICAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfbG9jayhELm9p ZCkgQVMgY29uZmxfbG9jaywKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0 X3NuYXBzaG90KEQub2lkKSBBUyBjb25mbF9zbmFwc2hvdCwKICAgICAgICAgICAgIHBnX3N0 YXRfZ2V0X2RiX2NvbmZsaWN0X2J1ZmZlcnBpbihELm9pZCkgQVMgY29uZmxfYnVmZmVycGlu LAotICAgICAgICAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9j ayhELm9pZCkgQVMgY29uZmxfZGVhZGxvY2sKKyAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2Ri X2NvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2soRC5vaWQpIEFTIGNvbmZsX2RlYWRsb2NrLAor ICAgICAgICAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfbG9naWNhbHNsb3QoRC5vaWQp IEFTIGNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdAogICAgIEZST00gcGdfZGF0YWJhc2UgRDsK IAogQ1JFQVRFIFZJRVcgcGdfc3RhdF91c2VyX2Z1bmN0aW9ucyBBUwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMKaW5kZXggZmExYjY0 MWEyYi4uMDcwZmQzNzhlOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9sb2dpY2FsZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2xvZ2ljYWxmdW5jcy5jCkBAIC0yMTYsOSArMjE2LDkgQEAgcGdfbG9naWNhbF9z bG90X2dldF9jaGFuZ2VzX2d1dHMoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGJvb2wgY29u ZmlybSwgYm9vbCBiaW4KIAogCQkvKgogCQkgKiBBZnRlciB0aGUgc2FuaXR5IGNoZWNrcyBp biBDcmVhdGVEZWNvZGluZ0NvbnRleHQsIG1ha2Ugc3VyZSB0aGUKLQkJICogcmVzdGFydF9s c24gaXMgdmFsaWQuICBBdm9pZCAiY2Fubm90IGdldCBjaGFuZ2VzIiB3b3JkaW5nIGluIHRo aXMKLQkJICogZXJybXNnIGJlY2F1c2UgdGhhdCdkIGJlIGNvbmZ1c2luZ2x5IGFtYmlndW91 cyBhYm91dCBubyBjaGFuZ2VzCi0JCSAqIGJlaW5nIGF2YWlsYWJsZS4KKwkJICogcmVzdGFy dF9sc24gaXMgdmFsaWQgb3IgYm90aCB4bWluIGFuZCBjYXRhbG9nX3htaW4gYXJlIHZhbGlk LiBBdm9pZAorCQkgKiAiY2Fubm90IGdldCBjaGFuZ2VzIiB3b3JkaW5nIGluIHRoaXMgZXJy bXNnIGJlY2F1c2UgdGhhdCdkIGJlCisJCSAqIGNvbmZ1c2luZ2x5IGFtYmlndW91cyBhYm91 dCBubyBjaGFuZ2VzIGJlaW5nIGF2YWlsYWJsZS4KIAkJICovCiAJCWlmIChYTG9nUmVjUHRy SXNJbnZhbGlkKE15UmVwbGljYXRpb25TbG90LT5kYXRhLnJlc3RhcnRfbHNuKSkKIAkJCWVy ZXBvcnQoRVJST1IsCkBAIC0yMjcsNiArMjI3LDEzIEBAIHBnX2xvZ2ljYWxfc2xvdF9nZXRf Y2hhbmdlc19ndXRzKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBib29sIGNvbmZpcm0sIGJv b2wgYmluCiAJCQkJCQkJTmFtZVN0cigqbmFtZSkpLAogCQkJCQkgZXJyZGV0YWlsKCJUaGlz IHNsb3QgaGFzIG5ldmVyIHByZXZpb3VzbHkgcmVzZXJ2ZWQgV0FMLCBvciBpdCBoYXMgYmVl biBpbnZhbGlkYXRlZC4iKSkpOwogCisJCWlmIChMb2dpY2FsUmVwbGljYXRpb25TbG90SXNJ bnZhbGlkKE15UmVwbGljYXRpb25TbG90KSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShl cnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJ CQkgZXJybXNnKCJjYW5ub3QgcmVhZCBmcm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBc IiVzXCIiLAorCQkJCQkJCU5hbWVTdHIoKm5hbWUpKSwKKwkJCQkJIGVycmRldGFpbCgiVGhp cyBzbG90IGhhcyBiZWVuIGludmFsaWRhdGVkIGJlY2F1c2UgaXQgd2FzIGNvbmZsaWN0aW5n IHdpdGggcmVjb3ZlcnkuIikpKTsKKwogCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29u dGV4dCk7CiAKIAkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Ns b3QuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwppbmRleCBmMjg2OTE4ZjY5 Li4zOGM2ZjE4ODg2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90 LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCkBAIC04NTUsOCArODU1 LDEwIEBAIFJlcGxpY2F0aW9uU2xvdHNDb21wdXRlUmVxdWlyZWRYbWluKGJvb2wgYWxyZWFk eV9sb2NrZWQpCiAJCVNwaW5Mb2NrQWNxdWlyZSgmcy0+bXV0ZXgpOwogCQllZmZlY3RpdmVf eG1pbiA9IHMtPmVmZmVjdGl2ZV94bWluOwogCQllZmZlY3RpdmVfY2F0YWxvZ194bWluID0g cy0+ZWZmZWN0aXZlX2NhdGFsb2dfeG1pbjsKLQkJaW52YWxpZGF0ZWQgPSAoIVhMb2dSZWNQ dHJJc0ludmFsaWQocy0+ZGF0YS5pbnZhbGlkYXRlZF9hdCkgJiYKLQkJCQkJICAgWExvZ1Jl Y1B0cklzSW52YWxpZChzLT5kYXRhLnJlc3RhcnRfbHNuKSk7CisJCWludmFsaWRhdGVkID0g KCghWExvZ1JlY1B0cklzSW52YWxpZChzLT5kYXRhLmludmFsaWRhdGVkX2F0KSAmJgorCQkJ CQkJWExvZ1JlY1B0cklzSW52YWxpZChzLT5kYXRhLnJlc3RhcnRfbHNuKSkKKwkJCQkJICAg fHwgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChzLT5kYXRhLnhtaW4pICYmCisJCQkJCQkgICAh VHJhbnNhY3Rpb25JZElzVmFsaWQocy0+ZGF0YS5jYXRhbG9nX3htaW4pKSk7CiAJCVNwaW5M b2NrUmVsZWFzZSgmcy0+bXV0ZXgpOwogCiAJCS8qIGludmFsaWRhdGVkIHNsb3RzIG5lZWQg bm90IGFwcGx5ICovCkBAIC0xMjI0LDIwICsxMjI2LDIxIEBAIFJlcGxpY2F0aW9uU2xvdFJl c2VydmVXYWwodm9pZCkKIH0KIAogLyoKLSAqIEhlbHBlciBmb3IgSW52YWxpZGF0ZU9ic29s ZXRlUmVwbGljYXRpb25TbG90cyAtLSBhY3F1aXJlcyB0aGUgZ2l2ZW4gc2xvdAotICogYW5k IG1hcmsgaXQgaW52YWxpZCwgaWYgbmVjZXNzYXJ5IGFuZCBwb3NzaWJsZS4KKyAqIEhlbHBl ciBmb3IgSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cworICoKKyAqIEFjcXVp cmVzIHRoZSBnaXZlbiBzbG90IGFuZCBtYXJrIGl0IGludmFsaWQsIGlmIG5lY2Vzc2FyeSBh bmQgcG9zc2libGUuCiAgKgogICogUmV0dXJucyB3aGV0aGVyIFJlcGxpY2F0aW9uU2xvdENv bnRyb2xMb2NrIHdhcyByZWxlYXNlZCBpbiB0aGUgaW50ZXJpbSAoYW5kCiAgKiBpbiB0aGF0 IGNhc2Ugd2UncmUgbm90IGhvbGRpbmcgdGhlIGxvY2sgYXQgcmV0dXJuLCBvdGhlcndpc2Ug d2UgYXJlKS4KICAqCi0gKiBTZXRzICppbnZhbGlkYXRlZCB0cnVlIGlmIHRoZSBzbG90IHdh cyBpbnZhbGlkYXRlZC4gKFVudG91Y2hlZCBvdGhlcndpc2UuKQorICogU2V0cyAqaW52YWxp ZGF0ZWQgdHJ1ZSBpZiBhbiBvYnNvbGV0ZSBzbG90IHdhcyBpbnZhbGlkYXRlZC4gKFVudG91 Y2hlZCBvdGhlcndpc2UuKQogICoKICAqIFRoaXMgaXMgaW5oZXJlbnRseSByYWN5LCBiZWNh dXNlIHdlIHJlbGVhc2UgdGhlIExXTG9jawogICogZm9yIHN5c2NhbGxzLCBzbyBjYWxsZXIg bXVzdCByZXN0YXJ0IGlmIHdlIHJldHVybiB0cnVlLgogICovCiBzdGF0aWMgYm9vbAotSW52 YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KFJlcGxpY2F0aW9uU2xvdCAqcywgWExvZ1Jl Y1B0ciBvbGRlc3RMU04sCi0JCQkJCQkJICAgYm9vbCAqaW52YWxpZGF0ZWQpCitJbnZhbGlk YXRlUG9zc2libHlPYnNvbGV0ZU9yQ29uZmxpY3RpbmdMb2dpY2FsU2xvdChSZXBsaWNhdGlv blNsb3QgKnMsIFhMb2dSZWNQdHIgb2xkZXN0TFNOLAorCQkJCQkJCQkJCQkJICAgYm9vbCAq aW52YWxpZGF0ZWQsIFRyYW5zYWN0aW9uSWQgKnhpZCkKIHsKIAlpbnQJCQlsYXN0X3NpZ25h bGVkX3BpZCA9IDA7CiAJYm9vbAkJcmVsZWFzZWRfbG9jayA9IGZhbHNlOwpAQCAtMTI0NSw2 ICsxMjQ4LDkgQEAgSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KFJlcGxpY2F0aW9u U2xvdCAqcywgWExvZ1JlY1B0ciBvbGRlc3RMU04sCiAJZm9yICg7OykKIAl7CiAJCVhMb2dS ZWNQdHIJcmVzdGFydF9sc247CisJCVRyYW5zYWN0aW9uSWQgc2xvdF94bWluOworCQlUcmFu c2FjdGlvbklkIHNsb3RfY2F0YWxvZ194bWluOworCiAJCU5hbWVEYXRhCXNsb3RuYW1lOwog CQlpbnQJCQlhY3RpdmVfcGlkID0gMDsKIApAQCAtMTI2MSwxOCArMTI2NywzMyBAQCBJbnZh bGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoUmVwbGljYXRpb25TbG90ICpzLCBYTG9nUmVj UHRyIG9sZGVzdExTTiwKIAkJICogQ2hlY2sgaWYgdGhlIHNsb3QgbmVlZHMgdG8gYmUgaW52 YWxpZGF0ZWQuIElmIGl0IG5lZWRzIHRvIGJlCiAJCSAqIGludmFsaWRhdGVkLCBhbmQgaXMg bm90IGN1cnJlbnRseSBhY3F1aXJlZCwgYWNxdWlyZSBpdCBhbmQgbWFyayBpdAogCQkgKiBh cyBoYXZpbmcgYmVlbiBpbnZhbGlkYXRlZC4gIFdlIGRvIHRoaXMgd2l0aCB0aGUgc3Bpbmxv Y2sgaGVsZCB0bwotCQkgKiBhdm9pZCByYWNlIGNvbmRpdGlvbnMgLS0gZm9yIGV4YW1wbGUg dGhlIHJlc3RhcnRfbHNuIGNvdWxkIG1vdmUKLQkJICogZm9yd2FyZCwgb3IgdGhlIHNsb3Qg Y291bGQgYmUgZHJvcHBlZC4KKwkJICogYXZvaWQgcmFjZSBjb25kaXRpb25zIC0tIGZvciBl eGFtcGxlIHRoZSByZXN0YXJ0X2xzbiAob3IgdGhlCisJCSAqIHhtaW4ocykgY291bGQpIG1v dmUgZm9yd2FyZCBvciB0aGUgc2xvdCBjb3VsZCBiZSBkcm9wcGVkLgogCQkgKi8KIAkJU3Bp bkxvY2tBY3F1aXJlKCZzLT5tdXRleCk7CiAKIAkJcmVzdGFydF9sc24gPSBzLT5kYXRhLnJl c3RhcnRfbHNuOworCQlzbG90X3htaW4gPSBzLT5kYXRhLnhtaW47CisJCXNsb3RfY2F0YWxv Z194bWluID0gcy0+ZGF0YS5jYXRhbG9nX3htaW47CisKKwkJLyogc2xvdCBoYXMgYmVlbiBp bnZhbGlkYXRlZCAobG9naWNhbCBkZWNvZGluZyBjb25mbGljdCBjYXNlKSAqLworCQlpZiAo KHhpZCAmJgorCQkJICgoTG9naWNhbFJlcGxpY2F0aW9uU2xvdElzSW52YWxpZChzKSkKKwkJ CSAgfHwKIAogCQkvKgotCQkgKiBJZiB0aGUgc2xvdCBpcyBhbHJlYWR5IGludmFsaWQgb3Ig aXMgZnJlc2ggZW5vdWdoLCB3ZSBkb24ndCBuZWVkIHRvCi0JCSAqIGRvIGFueXRoaW5nLgor CQkgKiBXZSBhcmUgbm90IGZvcmNpbmcgZm9yIGludmFsaWRhdGlvbiBiZWNhdXNlIHRoZSB4 aWQgaXMgdmFsaWQgYW5kCisJCSAqIHRoaXMgaXMgYSBub24gY29uZmxpY3Rpbmcgc2xvdC4K IAkJICovCi0JCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKHJlc3RhcnRfbHNuKSB8fCByZXN0 YXJ0X2xzbiA+PSBvbGRlc3RMU04pCisJCQkgIChUcmFuc2FjdGlvbklkSXNWYWxpZCgqeGlk KSAmJiAhKAorCQkJCQkJCQkJCQkgICAoVHJhbnNhY3Rpb25JZElzVmFsaWQoc2xvdF94bWlu KSAmJiBUcmFuc2FjdGlvbklkUHJlY2VkZXNPckVxdWFscyhzbG90X3htaW4sICp4aWQpKQor CQkJCQkJCQkJCQkgICB8fAorCQkJCQkJCQkJCQkgICAoVHJhbnNhY3Rpb25JZElzVmFsaWQo c2xvdF9jYXRhbG9nX3htaW4pICYmIFRyYW5zYWN0aW9uSWRQcmVjZWRlc09yRXF1YWxzKHNs b3RfY2F0YWxvZ194bWluLCAqeGlkKSkKKwkJCQkJCQkJCQkJICAgKSkKKwkJCSAgKSkKKwkJ CXx8CisJCS8qIHNsb3QgaGFzIGJlZW4gaW52YWxpZGF0ZWQgKG9ic29sZXRlIExTTiBjYXNl KSAqLworCQkJKCF4aWQgJiYgKFhMb2dSZWNQdHJJc0ludmFsaWQocmVzdGFydF9sc24pIHx8 IHJlc3RhcnRfbHNuID49IG9sZGVzdExTTikpKQogCQl7CiAJCQlTcGluTG9ja1JlbGVhc2Uo JnMtPm11dGV4KTsKIAkJCWlmIChyZWxlYXNlZF9sb2NrKQpAQCAtMTI5Miw5ICsxMzEzLDE2 IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3QgKnMs IFhMb2dSZWNQdHIgb2xkZXN0TFNOLAogCQl7CiAJCQlNeVJlcGxpY2F0aW9uU2xvdCA9IHM7 CiAJCQlzLT5hY3RpdmVfcGlkID0gTXlQcm9jUGlkOwotCQkJcy0+ZGF0YS5pbnZhbGlkYXRl ZF9hdCA9IHJlc3RhcnRfbHNuOwotCQkJcy0+ZGF0YS5yZXN0YXJ0X2xzbiA9IEludmFsaWRY TG9nUmVjUHRyOwotCisJCQlpZiAoeGlkKQorCQkJeworCQkJCXMtPmRhdGEueG1pbiA9IElu dmFsaWRUcmFuc2FjdGlvbklkOworCQkJCXMtPmRhdGEuY2F0YWxvZ194bWluID0gSW52YWxp ZFRyYW5zYWN0aW9uSWQ7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJcy0+ZGF0YS5pbnZh bGlkYXRlZF9hdCA9IHJlc3RhcnRfbHNuOworCQkJCXMtPmRhdGEucmVzdGFydF9sc24gPSBJ bnZhbGlkWExvZ1JlY1B0cjsKKwkJCX0KIAkJCS8qIExldCBjYWxsZXIga25vdyAqLwogCQkJ KmludmFsaWRhdGVkID0gdHJ1ZTsKIAkJfQpAQCAtMTMyNywxNSArMTM1NSwzOSBAQCBJbnZh bGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoUmVwbGljYXRpb25TbG90ICpzLCBYTG9nUmVj UHRyIG9sZGVzdExTTiwKIAkJCSAqLwogCQkJaWYgKGxhc3Rfc2lnbmFsZWRfcGlkICE9IGFj dGl2ZV9waWQpCiAJCQl7Ci0JCQkJZXJlcG9ydChMT0csCi0JCQkJCQllcnJtc2coInRlcm1p bmF0aW5nIHByb2Nlc3MgJWQgdG8gcmVsZWFzZSByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiIs Ci0JCQkJCQkJICAgYWN0aXZlX3BpZCwgTmFtZVN0cihzbG90bmFtZSkpLAotCQkJCQkJZXJy ZGV0YWlsKCJUaGUgc2xvdCdzIHJlc3RhcnRfbHNuICVYLyVYIGV4Y2VlZHMgdGhlIGxpbWl0 IGJ5ICVsbHUgYnl0ZXMuIiwKLQkJCQkJCQkJICBMU05fRk9STUFUX0FSR1MocmVzdGFydF9s c24pLAotCQkJCQkJCQkgICh1bnNpZ25lZCBsb25nIGxvbmcpIChvbGRlc3RMU04gLSByZXN0 YXJ0X2xzbikpLAotCQkJCQkJZXJyaGludCgiWW91IG1pZ2h0IG5lZWQgdG8gaW5jcmVhc2Ug bWF4X3Nsb3Rfd2FsX2tlZXBfc2l6ZS4iKSk7CisJCQkJaWYgKHhpZCkKKwkJCQl7CisJCQkJ CWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZCgqeGlkKSkKKwkJCQkJeworCQkJCQkJZXJlcG9y dChMT0csCisJCQkJCQkJCWVycm1zZygidGVybWluYXRpbmcgcHJvY2VzcyAlZCBiZWNhdXNl IHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIGNvbmZsaWN0cyB3aXRoIHJlY292ZXJ5IiwKKwkJ CQkJCQkJCSAgIGFjdGl2ZV9waWQsIE5hbWVTdHIoc2xvdG5hbWUpKSwKKwkJCQkJCQkJZXJy ZGV0YWlsKCJUaGUgc2xvdCBjb25mbGljdGVkIHdpdGggeGlkIGhvcml6b24gJXUuIiwKKwkJ CQkJCQkJCQkgICp4aWQpKTsKKwkJCQkJfQorCQkJCQllbHNlCisJCQkJCXsKKwkJCQkJCWVy ZXBvcnQoTE9HLAorCQkJCQkJCQllcnJtc2coInRlcm1pbmF0aW5nIHByb2Nlc3MgJWQgYmVj YXVzZSByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiBjb25mbGljdHMgd2l0aCByZWNvdmVyeSIs CisJCQkJCQkJCQkgICBhY3RpdmVfcGlkLCBOYW1lU3RyKHNsb3RuYW1lKSksCisJCQkJCQkJ CWVycmRldGFpbCgiTG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5IHJlcXVpcmVzIHdhbF9s ZXZlbCB0byBiZSBhdCBsZWFzdCBsb2dpY2FsIG9uIHRoZSBwcmltYXJ5IHNlcnZlciIpKTsK KwkJCQkJfQorCisJCQkJCSh2b2lkKSBTZW5kUHJvY1NpZ25hbChhY3RpdmVfcGlkLCBQUk9D U0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9ULCBJbnZhbGlkQmFja2VuZElkKTsK KwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJZXJlcG9ydChMT0csCisJCQkJCQkJZXJy bXNnKCJ0ZXJtaW5hdGluZyBwcm9jZXNzICVkIHRvIHJlbGVhc2UgcmVwbGljYXRpb24gc2xv dCBcIiVzXCIiLAorCQkJCQkJCQkgICBhY3RpdmVfcGlkLCBOYW1lU3RyKHNsb3RuYW1lKSks CisJCQkJCQkJZXJyZGV0YWlsKCJUaGUgc2xvdCdzIHJlc3RhcnRfbHNuICVYLyVYIGV4Y2Vl ZHMgdGhlIGxpbWl0IGJ5ICVsbHUgYnl0ZXMuIiwKKwkJCQkJCQkJCSAgTFNOX0ZPUk1BVF9B UkdTKHJlc3RhcnRfbHNuKSwKKwkJCQkJCQkJCSAgKHVuc2lnbmVkIGxvbmcgbG9uZykgKG9s ZGVzdExTTiAtIHJlc3RhcnRfbHNuKSksCisJCQkJCQkJZXJyaGludCgiWW91IG1pZ2h0IG5l ZWQgdG8gaW5jcmVhc2UgbWF4X3Nsb3Rfd2FsX2tlZXBfc2l6ZS4iKSk7CisKKwkJCQkJKHZv aWQpIGtpbGwoYWN0aXZlX3BpZCwgU0lHVEVSTSk7CisJCQkJfQogCi0JCQkJKHZvaWQpIGtp bGwoYWN0aXZlX3BpZCwgU0lHVEVSTSk7CiAJCQkJbGFzdF9zaWduYWxlZF9waWQgPSBhY3Rp dmVfcGlkOwogCQkJfQogCkBAIC0xMzY5LDEzICsxNDIxLDMzIEBAIEludmFsaWRhdGVQb3Nz aWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3QgKnMsIFhMb2dSZWNQdHIgb2xkZXN0 TFNOLAogCQkJUmVwbGljYXRpb25TbG90U2F2ZSgpOwogCQkJUmVwbGljYXRpb25TbG90UmVs ZWFzZSgpOwogCi0JCQllcmVwb3J0KExPRywKLQkJCQkJZXJybXNnKCJpbnZhbGlkYXRpbmcg b2Jzb2xldGUgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIiLAotCQkJCQkJICAgTmFtZVN0cihz bG90bmFtZSkpLAotCQkJCQllcnJkZXRhaWwoIlRoZSBzbG90J3MgcmVzdGFydF9sc24gJVgv JVggZXhjZWVkcyB0aGUgbGltaXQgYnkgJWxsdSBieXRlcy4iLAotCQkJCQkJCSAgTFNOX0ZP Uk1BVF9BUkdTKHJlc3RhcnRfbHNuKSwKLQkJCQkJCQkgICh1bnNpZ25lZCBsb25nIGxvbmcp IChvbGRlc3RMU04gLSByZXN0YXJ0X2xzbikpLAotCQkJCQllcnJoaW50KCJZb3UgbWlnaHQg bmVlZCB0byBpbmNyZWFzZSBtYXhfc2xvdF93YWxfa2VlcF9zaXplLiIpKTsKKwkJCWlmICh4 aWQpCisJCQl7CisJCQkJcGdzdGF0X2Ryb3BfcmVwbHNsb3Qocyk7CisKKwkJCQlpZiAoVHJh bnNhY3Rpb25JZElzVmFsaWQoKnhpZCkpCisJCQkJeworCQkJCQllcmVwb3J0KExPRywKKwkJ CQkJCQllcnJtc2coImludmFsaWRhdGluZyBzbG90IFwiJXNcIiBiZWNhdXNlIGl0IGNvbmZs aWN0cyB3aXRoIHJlY292ZXJ5IiwgTmFtZVN0cihzbG90bmFtZSkpLAorCQkJCQkJCWVycmRl dGFpbCgiVGhlIHNsb3QgY29uZmxpY3RlZCB3aXRoIHhpZCBob3Jpem9uICV1LiIsICp4aWQp KTsKKwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJZXJlcG9ydChMT0csCisJCQkJCQkJ ZXJybXNnKCJpbnZhbGlkYXRpbmcgc2xvdCBcIiVzXCIgYmVjYXVzZSBpdCBjb25mbGljdHMg d2l0aCByZWNvdmVyeSIsIE5hbWVTdHIoc2xvdG5hbWUpKSwKKwkJCQkJCQllcnJkZXRhaWwo IkxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieSByZXF1aXJlcyB3YWxfbGV2ZWwgdG8gYmUg YXQgbGVhc3QgbG9naWNhbCBvbiB0aGUgcHJpbWFyeSBzZXJ2ZXIiKSk7CisJCQkJfQorCQkJ fQorCQkJZWxzZQorCQkJeworCQkJCWVyZXBvcnQoTE9HLAorCQkJCQkJZXJybXNnKCJpbnZh bGlkYXRpbmcgb2Jzb2xldGUgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIiLAorCQkJCQkJCSAg IE5hbWVTdHIoc2xvdG5hbWUpKSwKKwkJCQkJCWVycmRldGFpbCgiVGhlIHNsb3QncyByZXN0 YXJ0X2xzbiAlWC8lWCBleGNlZWRzIHRoZSBsaW1pdCBieSAlbGx1IGJ5dGVzLiIsCisJCQkJ CQkJCSAgTFNOX0ZPUk1BVF9BUkdTKHJlc3RhcnRfbHNuKSwKKwkJCQkJCQkJICAodW5zaWdu ZWQgbG9uZyBsb25nKSAob2xkZXN0TFNOIC0gcmVzdGFydF9sc24pKSwKKwkJCQkJCWVycmhp bnQoIllvdSBtaWdodCBuZWVkIHRvIGluY3JlYXNlIG1heF9zbG90X3dhbF9rZWVwX3NpemUu IikpOworCQkJfQogCiAJCQkvKiBkb25lIHdpdGggdGhpcyBzbG90IGZvciBub3cgKi8KIAkJ CWJyZWFrOwpAQCAtMTM4OCwyMCArMTQ2MCw0MCBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNv bGV0ZVNsb3QoUmVwbGljYXRpb25TbG90ICpzLCBYTG9nUmVjUHRyIG9sZGVzdExTTiwKIH0K IAogLyoKLSAqIE1hcmsgYW55IHNsb3QgdGhhdCBwb2ludHMgdG8gYW4gTFNOIG9sZGVyIHRo YW4gdGhlIGdpdmVuIHNlZ21lbnQKLSAqIGFzIGludmFsaWQ7IGl0IHJlcXVpcmVzIFdBTCB0 aGF0J3MgYWJvdXQgdG8gYmUgcmVtb3ZlZC4KKyAqIEludmFsaWRhdGUgT2Jzb2xldGUgc2xv dHMgb3IgcmVzb2x2ZSByZWNvdmVyeSBjb25mbGljdHMgd2l0aCBsb2dpY2FsIHNsb3RzLgog ICoKLSAqIFJldHVybnMgdHJ1ZSB3aGVuIGFueSBzbG90IGhhdmUgZ290IGludmFsaWRhdGVk LgorICogT2Jzb2xldGUgY2FzZSAoYWthIHhpZCBpcyBOVUxMKToKICAqCi0gKiBOQiAtIHRo aXMgcnVucyBhcyBwYXJ0IG9mIGNoZWNrcG9pbnQsIHNvIGF2b2lkIHJhaXNpbmcgZXJyb3Jz IGlmIHBvc3NpYmxlLgorICoJIE1hcmsgYW55IHNsb3QgdGhhdCBwb2ludHMgdG8gYW4gTFNO IG9sZGVyIHRoYW4gdGhlIGdpdmVuIHNlZ21lbnQKKyAqCSBhcyBpbnZhbGlkOyBpdCByZXF1 aXJlcyBXQUwgdGhhdCdzIGFib3V0IHRvIGJlIHJlbW92ZWQuCisgKgkgaW52YWxpZGF0ZWQg aXMgc2V0IHRvIHRydWUgd2hlbiBhbnkgc2xvdCBoYXZlIGdvdCBpbnZhbGlkYXRlZC4KKyAq CisgKiAgTG9naWNhbCByZXBsaWNhdGlvbiBzbG90IGNhc2U6CisgKgorICoJIFdoZW4geGlk IGlzIHZhbGlkLCBpdCBtZWFucyB0aGF0IHdlIGFyZSBhYm91dCB0byByZW1vdmUgcm93cyBv bGRlciB0aGFuIHhpZC4KKyAqCSBUaGVyZWZvcmUgd2UgbmVlZCB0byBpbnZhbGlkYXRlIHNs b3RzIHRoYXQgZGVwZW5kIG9uIHNlZWluZyB0aG9zZSByb3dzLgorICoJIFdoZW4geGlkIGlz IGludmFsaWQsIGludmFsaWRhdGUgYWxsIGxvZ2ljYWwgc2xvdHMuIFRoaXMgaXMgcmVxdWly ZWQgd2hlbiB0aGUKKyAqCSBtYXN0ZXIgd2FsX2xldmVsIGlzIHNldCBiYWNrIHRvIHJlcGxp Y2EsIHNvIGV4aXN0aW5nIGxvZ2ljYWwgc2xvdHMgbmVlZCB0bworICoJIGJlIGludmFsaWRh dGVkLgogICovCi1ib29sCi1JbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzKFhM b2dTZWdObyBvbGRlc3RTZWdubykKK3ZvaWQKK0ludmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0 aW9uU2xvdHMoWExvZ1NlZ05vIG9sZGVzdFNlZ25vLCBib29sICppbnZhbGlkYXRlZCwgT2lk IGRib2lkLCBUcmFuc2FjdGlvbklkICp4aWQpCiB7Ci0JWExvZ1JlY1B0cglvbGRlc3RMU047 Ci0JYm9vbAkJaW52YWxpZGF0ZWQgPSBmYWxzZTsKIAotCVhMb2dTZWdOb09mZnNldFRvUmVj UHRyKG9sZGVzdFNlZ25vLCAwLCB3YWxfc2VnbWVudF9zaXplLCBvbGRlc3RMU04pOworCVhM b2dSZWNQdHIJb2xkZXN0TFNOID0gSW52YWxpZFhMb2dSZWNQdHI7CisJYm9vbCBsb2dpY2Fs X3Nsb3RfaW52YWxpZGF0ZWQgPSBmYWxzZTsKKworCUFzc2VydChtYXhfcmVwbGljYXRpb25f c2xvdHMgPj0gMCk7CisKKwlpZiAobWF4X3JlcGxpY2F0aW9uX3Nsb3RzID09IDApCisJCXJl dHVybjsKKworCWlmICgheGlkKQorCXsKKwkJQXNzZXJ0KGludmFsaWRhdGVkKTsKKwkJKmlu dmFsaWRhdGVkID0gZmFsc2U7CisJCVhMb2dTZWdOb09mZnNldFRvUmVjUHRyKG9sZGVzdFNl Z25vLCAwLCB3YWxfc2VnbWVudF9zaXplLCBvbGRlc3RMU04pOworCX0KIAogcmVzdGFydDoK IAlMV0xvY2tBY3F1aXJlKFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrLCBMV19TSEFSRUQp OwpAQCAtMTQxMiwyNCArMTUwNCwzNiBAQCByZXN0YXJ0OgogCQlpZiAoIXMtPmluX3VzZSkK IAkJCWNvbnRpbnVlOwogCi0JCWlmIChJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3Qo cywgb2xkZXN0TFNOLCAmaW52YWxpZGF0ZWQpKQorCQlpZiAoeGlkKQogCQl7Ci0JCQkvKiBp ZiB0aGUgbG9jayB3YXMgcmVsZWFzZWQsIHN0YXJ0IGZyb20gc2NyYXRjaCAqLwotCQkJZ290 byByZXN0YXJ0OworCQkJLyogd2UgYXJlIG9ubHkgZGVhbGluZyB3aXRoICpsb2dpY2FsKiBz bG90IGNvbmZsaWN0cyAqLworCQkJaWYgKCFTbG90SXNMb2dpY2FsKHMpKQorCQkJCWNvbnRp bnVlOworCisJCQkvKgorCQkJICogbm90IHRoZSBkYXRhYmFzZSBvZiBpbnRlcmVzdCBhbmQg d2UgZG9uJ3Qgd2FudCBhbGwgdGhlCisJCQkgKiBkYXRhYmFzZSwgc2tpcAorCQkJICovCisJ CQlpZiAocy0+ZGF0YS5kYXRhYmFzZSAhPSBkYm9pZCAmJiBUcmFuc2FjdGlvbklkSXNWYWxp ZCgqeGlkKSkKKwkJCQljb250aW51ZTsKIAkJfQorCisJCWlmIChJbnZhbGlkYXRlUG9zc2li bHlPYnNvbGV0ZU9yQ29uZmxpY3RpbmdMb2dpY2FsU2xvdChzLCBvbGRlc3RMU04sIGludmFs aWRhdGVkID8gaW52YWxpZGF0ZWQgOiAmbG9naWNhbF9zbG90X2ludmFsaWRhdGVkLCB4aWQp KQorCQkJCWdvdG8gcmVzdGFydDsKIAl9CisKIAlMV0xvY2tSZWxlYXNlKFJlcGxpY2F0aW9u U2xvdENvbnRyb2xMb2NrKTsKIAogCS8qCi0JICogSWYgYW55IHNsb3RzIGhhdmUgYmVlbiBp bnZhbGlkYXRlZCwgcmVjYWxjdWxhdGUgdGhlIHJlc291cmNlIGxpbWl0cy4KKwkgKiBJZiBh bnkgc2xvdHMgaGF2ZSBiZWVuIGludmFsaWRhdGVkLCByZWNhbGN1bGF0ZSB0aGUgcmVxdWly ZWQgeG1pbgorCSAqIGFuZCB0aGUgcmVxdWlyZWQgbHNuIChpZiBhcHByb3ByaWF0ZSkuCiAJ ICovCi0JaWYgKGludmFsaWRhdGVkKQorCWlmICgoIXhpZCAmJiAqaW52YWxpZGF0ZWQpIHx8 ICh4aWQgJiYgbG9naWNhbF9zbG90X2ludmFsaWRhdGVkKSkKIAl7CiAJCVJlcGxpY2F0aW9u U2xvdHNDb21wdXRlUmVxdWlyZWRYbWluKGZhbHNlKTsKLQkJUmVwbGljYXRpb25TbG90c0Nv bXB1dGVSZXF1aXJlZExTTigpOworCQlpZiAoIXhpZCAmJiAqaW52YWxpZGF0ZWQpCisJCQlS ZXBsaWNhdGlvblNsb3RzQ29tcHV0ZVJlcXVpcmVkTFNOKCk7CiAJfQotCi0JcmV0dXJuIGlu dmFsaWRhdGVkOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vc2xvdGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVuY3MuYwpp bmRleCAyZjNjOTY0ODI0Li40NDE5MmJjMzJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9zbG90ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9z bG90ZnVuY3MuYwpAQCAtMjMyLDcgKzIzMiw3IEBAIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xv dChQR19GVU5DVElPTl9BUkdTKQogRGF0dW0KIHBnX2dldF9yZXBsaWNhdGlvbl9zbG90cyhQ R19GVU5DVElPTl9BUkdTKQogewotI2RlZmluZSBQR19HRVRfUkVQTElDQVRJT05fU0xPVFNf Q09MUyAxNAorI2RlZmluZSBQR19HRVRfUkVQTElDQVRJT05fU0xPVFNfQ09MUyAxNQogCVJl dHVyblNldEluZm8gKnJzaW5mbyA9IChSZXR1cm5TZXRJbmZvICopIGZjaW5mby0+cmVzdWx0 aW5mbzsKIAlYTG9nUmVjUHRyCWN1cnJsc247CiAJaW50CQkJc2xvdG5vOwpAQCAtNDA0LDYg KzQwNCwxNyBAQCBwZ19nZXRfcmVwbGljYXRpb25fc2xvdHMoUEdfRlVOQ1RJT05fQVJHUykK IAogCQl2YWx1ZXNbaSsrXSA9IEJvb2xHZXREYXR1bShzbG90X2NvbnRlbnRzLmRhdGEudHdv X3BoYXNlKTsKIAorCQlpZiAoc2xvdF9jb250ZW50cy5kYXRhLmRhdGFiYXNlID09IEludmFs aWRPaWQpCisJCQludWxsc1tpKytdID0gdHJ1ZTsKKwkJZWxzZQorCQl7CisJCQlpZiAoc2xv dF9jb250ZW50cy5kYXRhLnhtaW4gPT0gSW52YWxpZFRyYW5zYWN0aW9uSWQgJiYKKwkJCQlz bG90X2NvbnRlbnRzLmRhdGEuY2F0YWxvZ194bWluID09IEludmFsaWRUcmFuc2FjdGlvbklk KQorCQkJCXZhbHVlc1tpKytdID0gQm9vbEdldERhdHVtKHRydWUpOworCQkJZWxzZQorCQkJ CXZhbHVlc1tpKytdID0gQm9vbEdldERhdHVtKGZhbHNlKTsKKwkJfQorCiAJCUFzc2VydChp ID09IFBHX0dFVF9SRVBMSUNBVElPTl9TTE9UU19DT0xTKTsKIAogCQl0dXBsZXN0b3JlX3B1 dHZhbHVlcyhyc2luZm8tPnNldFJlc3VsdCwgcnNpbmZvLT5zZXREZXNjLApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi93YWxzZW5kZXIuYwppbmRleCA0ZWQzNzQ3ZTNmLi44ODg1Y2RlZWJjIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYworKysgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwpAQCAtMTI1Myw2ICsxMjUzLDE0 IEBAIFN0YXJ0TG9naWNhbFJlcGxpY2F0aW9uKFN0YXJ0UmVwbGljYXRpb25DbWQgKmNtZCkK IAogCVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUoY21kLT5zbG90bmFtZSwgdHJ1ZSk7CiAKKwlp ZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UmVwbGljYXRpb25TbG90LT5kYXRhLnhtaW4p CisJCSAmJiAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlSZXBsaWNhdGlvblNsb3QtPmRhdGEu Y2F0YWxvZ194bWluKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJjYW5u b3QgcmVhZCBmcm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIiLAorCQkJCQkJ Y21kLT5zbG90bmFtZSksCisJCQkJIGVycmRldGFpbCgiVGhpcyBzbG90IGhhcyBiZWVuIGlu dmFsaWRhdGVkIGJlY2F1c2UgaXQgd2FzIGNvbmZsaWN0aW5nIHdpdGggcmVjb3ZlcnkuIikp KTsKKwogCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKE15UmVwbGljYXRpb25TbG90LT5kYXRh LnJlc3RhcnRfbHNuKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RF X09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3Byb2NzaWduYWwuYwppbmRleCAzOTViMmNmNjkwLi5jODVjYjVjYzE4IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKKysrIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCkBAIC02NzMsNiArNjczLDkgQEAgcHJv Y3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIoU0lHTkFMX0FSR1MpCiAJaWYgKENoZWNrUHJvY1Np Z25hbChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9UKSkKIAkJUmVjb3ZlcnlD b25mbGljdEludGVycnVwdChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9UKTsK IAorCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJ Q0FMU0xPVCkpCisJCVJlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUFJPQ1NJR19SRUNPVkVS WV9DT05GTElDVF9MT0dJQ0FMU0xPVCk7CisKIAlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NT SUdfUkVDT1ZFUllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFETE9DSykpCiAJCVJlY292ZXJ5Q29u ZmxpY3RJbnRlcnJ1cHQoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURM T0NLKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5j IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCmluZGV4IDk0Y2M4NjBmNWYu LmVjODE3MzgxYTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5k YnkuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKQEAgLTM1LDYg KzM1LDcgQEAKICNpbmNsdWRlICJ1dGlscy9wc19zdGF0dXMuaCIKICNpbmNsdWRlICJ1dGls cy90aW1lb3V0LmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCisjaW5jbHVkZSAi cmVwbGljYXRpb24vc2xvdC5oIgogCiAvKiBVc2VyLXNldHRhYmxlIEdVQyBwYXJhbWV0ZXJz ICovCiBpbnQJCQl2YWN1dW1fZGVmZXJfY2xlYW51cF9hZ2U7CkBAIC00NzUsNiArNDc2LDcg QEAgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoVmlydHVhbFhJRHMoVmlydHVhbFRyYW5z YWN0aW9uSWQgKndhaXRsaXN0LAogICovCiB2b2lkCiBSZXNvbHZlUmVjb3ZlcnlDb25mbGlj dFdpdGhTbmFwc2hvdChUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAor CQkJCQkJCQkJYm9vbCBpc0NhdGFsb2dSZWwsCiAJCQkJCQkJCQlSZWxGaWxlTG9jYXRvciBs b2NhdG9yKQogewogCVZpcnR1YWxUcmFuc2FjdGlvbklkICpiYWNrZW5kczsKQEAgLTUwMCw2 ICs1MDIsOSBAQCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdChUcmFuc2Fj dGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAogCQkJCQkJCQkJCSAgIFBST0NTSUdf UkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNIT1QsCiAJCQkJCQkJCQkJICAgV0FJVF9FVkVOVF9S RUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVCwKIAkJCQkJCQkJCQkgICB0cnVlKTsKKworCWlm ICh3YWxfbGV2ZWwgPj0gV0FMX0xFVkVMX0xPR0lDQUwgJiYgaXNDYXRhbG9nUmVsKQorCQlJ bnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzKEludmFsaWRYTG9nUmVjUHRyLCBO VUxMLCBsb2NhdG9yLmRiT2lkLCAmc25hcHNob3RDb25mbGljdEhvcml6b24pOwogfQogCiAv KgpAQCAtNTA4LDYgKzUxMyw3IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBz aG90KFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCiAgKi8KIHZvaWQK IFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90RnVsbFhpZChGdWxsVHJhbnNh Y3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkgICBib29sIGlz Q2F0YWxvZ1JlbCwKIAkJCQkJCQkJCQkgICBSZWxGaWxlTG9jYXRvciBsb2NhdG9yKQogewog CS8qCkBAIC01MjYsNyArNTMyLDkgQEAgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25h cHNob3RGdWxsWGlkKEZ1bGxUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3IKIAkJ VHJhbnNhY3Rpb25JZCB0cnVuY2F0ZWQ7CiAKIAkJdHJ1bmNhdGVkID0gWGlkRnJvbUZ1bGxU cmFuc2FjdGlvbklkKHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uKTsKLQkJUmVzb2x2ZVJlY292 ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QodHJ1bmNhdGVkLCBsb2NhdG9yKTsKKwkJUmVzb2x2 ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QodHJ1bmNhdGVkLAorCQkJCQkJCQkJCQlp c0NhdGFsb2dSZWwsCisJCQkJCQkJCQkJCWxvY2F0b3IpOwogCX0KIH0KIApAQCAtMTQ4Nyw2 ICsxNDk1LDkgQEAgZ2V0X3JlY292ZXJ5X2NvbmZsaWN0X2Rlc2MoUHJvY1NpZ25hbFJlYXNv biByZWFzb24pCiAJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVDoK IAkJCXJlYXNvbkRlc2MgPSBfKCJyZWNvdmVyeSBjb25mbGljdCBvbiBzbmFwc2hvdCIpOwog CQkJYnJlYWs7CisJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xP VDoKKwkJCXJlYXNvbkRlc2MgPSBfKCJyZWNvdmVyeSBjb25mbGljdCBvbiByZXBsaWNhdGlv biBzbG90Iik7CisJCQlicmVhazsKIAkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNU X1NUQVJUVVBfREVBRExPQ0s6CiAJCQlyZWFzb25EZXNjID0gXygicmVjb3ZlcnkgY29uZmxp Y3Qgb24gYnVmZmVyIGRlYWRsb2NrIik7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpp bmRleCA1ZDQzOWYyNzEwLi5iMmE3NWI2ZDcyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90 Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC0y NDgxLDYgKzI0ODEsOSBAQCBlcnJkZXRhaWxfcmVjb3ZlcnlfY29uZmxpY3Qodm9pZCkKIAkJ Y2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9UOgogCQkJZXJyZGV0YWls KCJVc2VyIHF1ZXJ5IG1pZ2h0IGhhdmUgbmVlZGVkIHRvIHNlZSByb3cgdmVyc2lvbnMgdGhh dCBtdXN0IGJlIHJlbW92ZWQuIik7CiAJCQlicmVhazsKKwkJY2FzZSBQUk9DU0lHX1JFQ09W RVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9UOgorCQkJZXJyZGV0YWlsKCJVc2VyIHdhcyB1c2lu ZyB0aGUgbG9naWNhbCBzbG90IHRoYXQgbXVzdCBiZSBkcm9wcGVkLiIpOworCQkJYnJlYWs7 CiAJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NLOgog CQkJZXJyZGV0YWlsKCJVc2VyIHRyYW5zYWN0aW9uIGNhdXNlZCBidWZmZXIgZGVhZGxvY2sg d2l0aCByZWNvdmVyeS4iKTsKIAkJCWJyZWFrOwpAQCAtMzA1MCw2ICszMDUzLDI3IEBAIFJl Y292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUHJvY1NpZ25hbFJlYXNvbiByZWFzb24pCiAJCQlj YXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9DSzoKIAkJCWNhc2UgUFJPQ1NJR19S RUNPVkVSWV9DT05GTElDVF9UQUJMRVNQQUNFOgogCQkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZ X0NPTkZMSUNUX1NOQVBTSE9UOgorCQkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNU X0xPR0lDQUxTTE9UOgorCisJCQkJLyoKKwkJCQkgKiBGb3IgY29uZmxpY3RzIHRoYXQgcmVx dWlyZSBhIGxvZ2ljYWwgc2xvdCB0byBiZQorCQkJCSAqIGludmFsaWRhdGVkLCB0aGUgcmVx dWlyZW1lbnQgaXMgZm9yIHRoZSBzaWduYWwgcmVjZWl2ZXIgdG8KKwkJCQkgKiByZWxlYXNl IHRoZSBzbG90LCBzbyB0aGF0IGl0IGNvdWxkIGJlIGludmFsaWRhdGVkIGJ5IHRoZQorCQkJ CSAqIHNpZ25hbCBzZW5kZXIuIFNvIGZvciBub3JtYWwgYmFja2VuZHMsIHRoZSB0cmFuc2Fj dGlvbgorCQkJCSAqIHNob3VsZCBiZSBhYm9ydGVkLCBqdXN0IGxpa2UgZm9yIG90aGVyIHJl Y292ZXJ5IGNvbmZsaWN0cy4KKwkJCQkgKiBCdXQgaWYgaXQncyB3YWxzZW5kZXIgb24gc3Rh bmRieSwgd2UgZG9uJ3Qgd2FudCB0byBnbworCQkJCSAqIHRocm91Z2ggdGhlIGZvbGxvd2lu ZyBJc1RyYW5zYWN0aW9uT3JUcmFuc2FjdGlvbkJsb2NrKCkKKwkJCQkgKiBjaGVjaywgc28g YnJlYWsgaGVyZS4KKwkJCQkgKi8KKwkJCQlpZiAoYW1fY2FzY2FkaW5nX3dhbHNlbmRlciAm JgorCQkJCQlyZWFzb24gPT0gUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xP VCAmJgorCQkJCQlNeVJlcGxpY2F0aW9uU2xvdCAmJiBTbG90SXNMb2dpY2FsKE15UmVwbGlj YXRpb25TbG90KSkKKwkJCQl7CisJCQkJCVJlY292ZXJ5Q29uZmxpY3RQZW5kaW5nID0gdHJ1 ZTsKKwkJCQkJUXVlcnlDYW5jZWxQZW5kaW5nID0gdHJ1ZTsKKwkJCQkJSW50ZXJydXB0UGVu ZGluZyA9IHRydWU7CisJCQkJCWJyZWFrOworCQkJCX0KIAogCQkJCS8qCiAJCQkJICogSWYg d2UgYXJlbid0IGluIGEgdHJhbnNhY3Rpb24gYW55IGxvbmdlciB0aGVuIGlnbm9yZS4KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9kYXRhYmFzZS5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2RhdGFiYXNlLmMKaW5kZXgg NmU2NTBjZWFhZC4uNzE0OWYyMmY3MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWN0aXZpdHkvcGdzdGF0X2RhdGFiYXNlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvcGdzdGF0X2RhdGFiYXNlLmMKQEAgLTEwOSw2ICsxMDksOSBAQCBwZ3N0YXRfcmVw b3J0X3JlY292ZXJ5X2NvbmZsaWN0KGludCByZWFzb24pCiAJCWNhc2UgUFJPQ1NJR19SRUNP VkVSWV9DT05GTElDVF9CVUZGRVJQSU46CiAJCQlkYmVudHJ5LT5jb25mbGljdF9idWZmZXJw aW4rKzsKIAkJCWJyZWFrOworCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9H SUNBTFNMT1Q6CisJCQlkYmVudHJ5LT5jb25mbGljdF9sb2dpY2Fsc2xvdCsrOworCQkJYnJl YWs7CiAJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NL OgogCQkJZGJlbnRyeS0+Y29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jaysrOwogCQkJYnJlYWs7 CkBAIC0zODcsNiArMzkwLDcgQEAgcGdzdGF0X2RhdGFiYXNlX2ZsdXNoX2NiKFBnU3RhdF9F bnRyeVJlZiAqZW50cnlfcmVmLCBib29sIG5vd2FpdCkKIAlQR1NUQVRfQUNDVU1fREJDT1VO VChjb25mbGljdF90YWJsZXNwYWNlKTsKIAlQR1NUQVRfQUNDVU1fREJDT1VOVChjb25mbGlj dF9sb2NrKTsKIAlQR1NUQVRfQUNDVU1fREJDT1VOVChjb25mbGljdF9zbmFwc2hvdCk7CisJ UEdTVEFUX0FDQ1VNX0RCQ09VTlQoY29uZmxpY3RfbG9naWNhbHNsb3QpOwogCVBHU1RBVF9B Q0NVTV9EQkNPVU5UKGNvbmZsaWN0X2J1ZmZlcnBpbik7CiAJUEdTVEFUX0FDQ1VNX0RCQ09V TlQoY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bn c3RhdGZ1bmNzLmMKaW5kZXggNjczNzQ5MzQwMi4uYWZkNjJkM2NjMCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKQEAgLTEwNjYsNiArMTA2Niw4IEBAIFBHX1NUQVRf R0VUX0RCRU5UUllfSU5UNjQoeGFjdF9jb21taXQpCiAvKiBwZ19zdGF0X2dldF9kYl94YWN0 X3JvbGxiYWNrICovCiBQR19TVEFUX0dFVF9EQkVOVFJZX0lOVDY0KHhhY3Rfcm9sbGJhY2sp CiAKKy8qIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xvZ2ljYWxzbG90ICovCitQR19TVEFU X0dFVF9EQkVOVFJZX0lOVDY0KGNvbmZsaWN0X2xvZ2ljYWxzbG90KQogCiBEYXR1bQogcGdf c3RhdF9nZXRfZGJfc3RhdF9yZXNldF90aW1lKFBHX0ZVTkNUSU9OX0FSR1MpCkBAIC0xMDk5 LDYgKzExMDEsNyBAQCBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9hbGwoUEdfRlVOQ1RJT05f QVJHUykKIAkJcmVzdWx0ID0gKGludDY0KSAoZGJlbnRyeS0+Y29uZmxpY3RfdGFibGVzcGFj ZSArCiAJCQkJCQkgIGRiZW50cnktPmNvbmZsaWN0X2xvY2sgKwogCQkJCQkJICBkYmVudHJ5 LT5jb25mbGljdF9zbmFwc2hvdCArCisJCQkJCQkgIGRiZW50cnktPmNvbmZsaWN0X2xvZ2lj YWxzbG90ICsKIAkJCQkJCSAgZGJlbnRyeS0+Y29uZmxpY3RfYnVmZmVycGluICsKIAkJCQkJ CSAgZGJlbnRyeS0+Y29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayk7CiAKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3Byb2MuZGF0CmluZGV4IGMwZjJhOGE3N2MuLmM4ZTExYWI3MTAgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19wcm9jLmRhdApAQCAtNTU3Nyw2ICs1NTc3LDExIEBACiAgIHByb25hbWUgPT4g J3BnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3NuYXBzaG90JywgcHJvdm9sYXRpbGUgPT4gJ3Mn LAogICBwcm9wYXJhbGxlbCA9PiAncicsIHByb3JldHR5cGUgPT4gJ2ludDgnLCBwcm9hcmd0 eXBlcyA9PiAnb2lkJywKICAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9kYl9jb25mbGljdF9z bmFwc2hvdCcgfSwKK3sgb2lkID0+ICc5OTAxJywKKyAgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6 IHJlY292ZXJ5IGNvbmZsaWN0cyBpbiBkYXRhYmFzZSBjYXVzZWQgYnkgbG9naWNhbCByZXBs aWNhdGlvbiBzbG90JywKKyAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rf bG9naWNhbHNsb3QnLCBwcm92b2xhdGlsZSA9PiAncycsCisgIHByb3BhcmFsbGVsID0+ICdy JywgcHJvcmV0dHlwZSA9PiAnaW50OCcsIHByb2FyZ3R5cGVzID0+ICdvaWQnLAorICBwcm9z cmMgPT4gJ3BnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xvZ2ljYWxzbG90JyB9LAogeyBvaWQg PT4gJzMwNjgnLAogICBkZXNjciA9PiAnc3RhdGlzdGljczogcmVjb3ZlcnkgY29uZmxpY3Rz IGluIGRhdGFiYXNlIGNhdXNlZCBieSBzaGFyZWQgYnVmZmVyIHBpbicsCiAgIHByb25hbWUg PT4gJ3BnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2J1ZmZlcnBpbicsIHByb3ZvbGF0aWxlID0+ ICdzJywKQEAgLTEwOTQ2LDkgKzEwOTUxLDkgQEAKICAgcHJvbmFtZSA9PiAncGdfZ2V0X3Jl cGxpY2F0aW9uX3Nsb3RzJywgcHJvcm93cyA9PiAnMTAnLCBwcm9pc3N0cmljdCA9PiAnZics CiAgIHByb3JldHNldCA9PiAndCcsIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcmV0dHlwZSA9 PiAncmVjb3JkJywKICAgcHJvYXJndHlwZXMgPT4gJycsCi0gIHByb2FsbGFyZ3R5cGVzID0+ ICd7bmFtZSxuYW1lLHRleHQsb2lkLGJvb2wsYm9vbCxpbnQ0LHhpZCx4aWQscGdfbHNuLHBn X2xzbix0ZXh0LGludDgsYm9vbH0nLAotICBwcm9hcmdtb2RlcyA9PiAne28sbyxvLG8sbyxv LG8sbyxvLG8sbyxvLG8sb30nLAotICBwcm9hcmduYW1lcyA9PiAne3Nsb3RfbmFtZSxwbHVn aW4sc2xvdF90eXBlLGRhdG9pZCx0ZW1wb3JhcnksYWN0aXZlLGFjdGl2ZV9waWQseG1pbixj YXRhbG9nX3htaW4scmVzdGFydF9sc24sY29uZmlybWVkX2ZsdXNoX2xzbix3YWxfc3RhdHVz LHNhZmVfd2FsX3NpemUsdHdvX3BoYXNlfScsCisgIHByb2FsbGFyZ3R5cGVzID0+ICd7bmFt ZSxuYW1lLHRleHQsb2lkLGJvb2wsYm9vbCxpbnQ0LHhpZCx4aWQscGdfbHNuLHBnX2xzbix0 ZXh0LGludDgsYm9vbCxib29sfScsCisgIHByb2FyZ21vZGVzID0+ICd7byxvLG8sbyxvLG8s byxvLG8sbyxvLG8sbyxvLG99JywKKyAgcHJvYXJnbmFtZXMgPT4gJ3tzbG90X25hbWUscGx1 Z2luLHNsb3RfdHlwZSxkYXRvaWQsdGVtcG9yYXJ5LGFjdGl2ZSxhY3RpdmVfcGlkLHhtaW4s Y2F0YWxvZ194bWluLHJlc3RhcnRfbHNuLGNvbmZpcm1lZF9mbHVzaF9sc24sd2FsX3N0YXR1 cyxzYWZlX3dhbF9zaXplLHR3b19waGFzZSxjb25mbGljdGluZ30nLAogICBwcm9zcmMgPT4g J3BnX2dldF9yZXBsaWNhdGlvbl9zbG90cycgfSwKIHsgb2lkID0+ICczNzg2JywgZGVzY3Ig PT4gJ3NldCB1cCBhIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCcsCiAgIHByb25hbWUgPT4g J3BnX2NyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9uX3Nsb3QnLCBwcm92b2xhdGlsZSA9PiAn dicsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wZ3N0YXQuaCBiL3NyYy9pbmNsdWRlL3Bn c3RhdC5oCmluZGV4IDVlMzMyNmEzYjkuLjg3MmViMzU3NTcgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3Bnc3RhdC5oCisrKyBiL3NyYy9pbmNsdWRlL3Bnc3RhdC5oCkBAIC0yOTEsNiAr MjkxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X1N0YXREQkVudHJ5CiAJUGdTdGF0X0Nv dW50ZXIgY29uZmxpY3RfdGFibGVzcGFjZTsKIAlQZ1N0YXRfQ291bnRlciBjb25mbGljdF9s b2NrOwogCVBnU3RhdF9Db3VudGVyIGNvbmZsaWN0X3NuYXBzaG90OworCVBnU3RhdF9Db3Vu dGVyIGNvbmZsaWN0X2xvZ2ljYWxzbG90OwogCVBnU3RhdF9Db3VudGVyIGNvbmZsaWN0X2J1 ZmZlcnBpbjsKIAlQZ1N0YXRfQ291bnRlciBjb25mbGljdF9zdGFydHVwX2RlYWRsb2NrOwog CVBnU3RhdF9Db3VudGVyIHRlbXBfZmlsZXM7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9zbG90LmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmgKaW5k ZXggODg3MmM4MGNkZi4uMjM2ZWJjZGJkYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vc2xvdC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaApA QCAtMTcsNiArMTcsOCBAQAogI2luY2x1ZGUgInN0b3JhZ2Uvc3Bpbi5oIgogI2luY2x1ZGUg InJlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgiCiAKKyNkZWZpbmUgTG9naWNhbFJlcGxpY2F0 aW9uU2xvdElzSW52YWxpZChzKSAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHMtPmRhdGEueG1p bikgJiYgXAorCQkJCQkJCQkJCQkgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHMtPmRhdGEuY2F0 YWxvZ194bWluKSkKIC8qCiAgKiBCZWhhdmlvdXIgb2YgcmVwbGljYXRpb24gc2xvdHMsIHVw b24gcmVsZWFzZSBvciBjcmFzaC4KICAqCkBAIC0yMTUsNyArMjE3LDcgQEAgZXh0ZXJuIHZv aWQgUmVwbGljYXRpb25TbG90c0NvbXB1dGVSZXF1aXJlZExTTih2b2lkKTsKIGV4dGVybiBY TG9nUmVjUHRyIFJlcGxpY2F0aW9uU2xvdHNDb21wdXRlTG9naWNhbFJlc3RhcnRMU04odm9p ZCk7CiBleHRlcm4gYm9vbCBSZXBsaWNhdGlvblNsb3RzQ291bnREQlNsb3RzKE9pZCBkYm9p ZCwgaW50ICpuc2xvdHMsIGludCAqbmFjdGl2ZSk7CiBleHRlcm4gdm9pZCBSZXBsaWNhdGlv blNsb3RzRHJvcERCU2xvdHMoT2lkIGRib2lkKTsKLWV4dGVybiBib29sIEludmFsaWRhdGVP YnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMoWExvZ1NlZ05vIG9sZGVzdFNlZ25vKTsKK2V4dGVy biB2b2lkIEludmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMoWExvZ1NlZ05vIG9s ZGVzdFNlZ25vLCBib29sICppbnZhbGlkYXRlZCwgT2lkIGRib2lkLCBUcmFuc2FjdGlvbklk ICp4aWQpOwogZXh0ZXJuIFJlcGxpY2F0aW9uU2xvdCAqU2VhcmNoTmFtZWRSZXBsaWNhdGlv blNsb3QoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBuZWVkX2xvY2spOwogZXh0ZXJuIGludAlS ZXBsaWNhdGlvblNsb3RJbmRleChSZXBsaWNhdGlvblNsb3QgKnNsb3QpOwogZXh0ZXJuIGJv b2wgUmVwbGljYXRpb25TbG90TmFtZShpbnQgaW5kZXgsIE5hbWUgbmFtZSk7CkBAIC0yMjcs NSArMjI5LDYgQEAgZXh0ZXJuIHZvaWQgQ2hlY2tQb2ludFJlcGxpY2F0aW9uU2xvdHModm9p ZCk7CiAKIGV4dGVybiB2b2lkIENoZWNrU2xvdFJlcXVpcmVtZW50cyh2b2lkKTsKIGV4dGVy biB2b2lkIENoZWNrU2xvdFBlcm1pc3Npb25zKHZvaWQpOworZXh0ZXJuIHZvaWQgUmVzb2x2 ZVJlY292ZXJ5Q29uZmxpY3RXaXRoTG9naWNhbFNsb3RzKE9pZCBkYm9pZCwgVHJhbnNhY3Rp b25JZCB4aWQsIGNoYXIgKnJlYXNvbik7CiAKICNlbmRpZgkJCQkJCQkvKiBTTE9UX0ggKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oIGIvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKaW5kZXggOTA1YWYyMjMxYi4uMmY1MjEwMGIw MCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKKysrIGIv c3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKQEAgLTQyLDYgKzQyLDcgQEAgdHlw ZWRlZiBlbnVtCiAJUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9UQUJMRVNQQUNFLAogCVBS T0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9DSywKIAlQUk9DU0lHX1JFQ09WRVJZX0NPTkZM SUNUX1NOQVBTSE9ULAorCVBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1Qs CiAJUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9CVUZGRVJQSU4sCiAJUFJPQ1NJR19SRUNP VkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NLLAogCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9zdG9yYWdlL3N0YW5kYnkuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5o CmluZGV4IDJlZmZkZWExMjYuLjQxZjRkYzM3MmUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3N0b3JhZ2Uvc3RhbmRieS5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5o CkBAIC0zMCw4ICszMCwxMCBAQCBleHRlcm4gdm9pZCBJbml0UmVjb3ZlcnlUcmFuc2FjdGlv bkVudmlyb25tZW50KHZvaWQpOwogZXh0ZXJuIHZvaWQgU2h1dGRvd25SZWNvdmVyeVRyYW5z YWN0aW9uRW52aXJvbm1lbnQodm9pZCk7CiAKIGV4dGVybiB2b2lkIFJlc29sdmVSZWNvdmVy eUNvbmZsaWN0V2l0aFNuYXBzaG90KFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhv cml6b24sCisJCQkJCQkJCQkJCQlib29sIGlzQ2F0YWxvZ1JlbCwKIAkJCQkJCQkJCQkJCVJl bEZpbGVMb2NhdG9yIGxvY2F0b3IpOwogZXh0ZXJuIHZvaWQgUmVzb2x2ZVJlY292ZXJ5Q29u ZmxpY3RXaXRoU25hcHNob3RGdWxsWGlkKEZ1bGxUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29u ZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQkJCSAgIGJvb2wgaXNDYXRhbG9nUmVsLAogCQkJ CQkJCQkJCQkJCSAgIFJlbEZpbGVMb2NhdG9yIGxvY2F0b3IpOwogZXh0ZXJuIHZvaWQgUmVz b2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoVGFibGVzcGFjZShPaWQgdHNpZCk7CiBleHRlcm4g dm9pZCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhEYXRhYmFzZShPaWQgZGJpZCk7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CmluZGV4IGU3YTJmNTg1NmEuLjExZWEy MDYzMzcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0 CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CkBAIC0xNDcyLDgg KzE0NzIsOSBAQCBwZ19yZXBsaWNhdGlvbl9zbG90c3wgU0VMRUNUIGwuc2xvdF9uYW1lLAog ICAgIGwuY29uZmlybWVkX2ZsdXNoX2xzbiwKICAgICBsLndhbF9zdGF0dXMsCiAgICAgbC5z YWZlX3dhbF9zaXplLAotICAgIGwudHdvX3BoYXNlCi0gICBGUk9NIChwZ19nZXRfcmVwbGlj YXRpb25fc2xvdHMoKSBsKHNsb3RfbmFtZSwgcGx1Z2luLCBzbG90X3R5cGUsIGRhdG9pZCwg dGVtcG9yYXJ5LCBhY3RpdmUsIGFjdGl2ZV9waWQsIHhtaW4sIGNhdGFsb2dfeG1pbiwgcmVz dGFydF9sc24sIGNvbmZpcm1lZF9mbHVzaF9sc24sIHdhbF9zdGF0dXMsIHNhZmVfd2FsX3Np emUsIHR3b19waGFzZSkKKyAgICBsLnR3b19waGFzZSwKKyAgICBsLmNvbmZsaWN0aW5nCisg ICBGUk9NIChwZ19nZXRfcmVwbGljYXRpb25fc2xvdHMoKSBsKHNsb3RfbmFtZSwgcGx1Z2lu LCBzbG90X3R5cGUsIGRhdG9pZCwgdGVtcG9yYXJ5LCBhY3RpdmUsIGFjdGl2ZV9waWQsIHht aW4sIGNhdGFsb2dfeG1pbiwgcmVzdGFydF9sc24sIGNvbmZpcm1lZF9mbHVzaF9sc24sIHdh bF9zdGF0dXMsIHNhZmVfd2FsX3NpemUsIHR3b19waGFzZSwgY29uZmxpY3RpbmcpCiAgICAg IExFRlQgSk9JTiBwZ19kYXRhYmFzZSBkIE9OICgobC5kYXRvaWQgPSBkLm9pZCkpKTsKIHBn X3JvbGVzfCBTRUxFQ1QgcGdfYXV0aGlkLnJvbG5hbWUsCiAgICAgcGdfYXV0aGlkLnJvbHN1 cGVyLApAQCAtMTg2OCw3ICsxODY5LDggQEAgcGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHN8 IFNFTEVDVCBvaWQgQVMgZGF0aWQsCiAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfbG9j ayhvaWQpIEFTIGNvbmZsX2xvY2ssCiAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc25h cHNob3Qob2lkKSBBUyBjb25mbF9zbmFwc2hvdCwKICAgICBwZ19zdGF0X2dldF9kYl9jb25m bGljdF9idWZmZXJwaW4ob2lkKSBBUyBjb25mbF9idWZmZXJwaW4sCi0gICAgcGdfc3RhdF9n ZXRfZGJfY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayhvaWQpIEFTIGNvbmZsX2RlYWRsb2Nr CisgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayhvaWQpIEFT IGNvbmZsX2RlYWRsb2NrLAorICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xvZ2ljYWxz bG90KG9pZCkgQVMgY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90CiAgICBGUk9NIHBnX2RhdGFi YXNlIGQ7CiBwZ19zdGF0X2dzc2FwaXwgU0VMRUNUIHBpZCwKICAgICBnc3NfYXV0aCBBUyBn c3NfYXV0aGVudGljYXRlZCwKLS0gCjIuMzQuMQoK --------------xW006q159UiWPtHw9wcHAuVA Content-Type: text/plain; charset=UTF-8; name="v48-0001-Add-info-in-WAL-records-in-preparation-for-logic.patch" Content-Disposition: attachment; filename*0="v48-0001-Add-info-in-WAL-records-in-preparation-for-logic.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAyYzc1M2Y3MzJlZjkyZDZkMTc4MGNkNDc3OGRiYThkMDllMTZhNWIwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA3IEZlYiAyMDIzIDA4OjU1OjE5ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2NDggMS82XSBBZGQgaW5mbyBpbiBXQUwgcmVjb3JkcyBpbiBwcmVwYXJhdGlvbiBmb3Ig bG9naWNhbAogc2xvdCBjb25mbGljdCBoYW5kbGluZy4KTUlNRS1WZXJzaW9uOiAxLjAKQ29u dGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXIt RW5jb2Rpbmc6IDhiaXQKCk92ZXJhbGwgZGVzaWduOgoKMS4gV2Ugd2FudCB0byBlbmFibGUg bG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5cywgYnV0IHJlcGxheSBvZiBXQUwKZnJvbSB0 aGUgcHJpbWFyeSBtaWdodCByZW1vdmUgZGF0YSB0aGF0IGlzIG5lZWRlZCBieSBsb2dpY2Fs IGRlY29kaW5nLApjYXVzaW5nIGVycm9yKHMpIG9uIHRoZSBzdGFuZGJ5LiBUbyBwcmV2ZW50 IHRob3NlIGVycm9ycywgYSBuZXcgcmVwbGljYXRpb24KY29uZmxpY3Qgc2NlbmFyaW8gbmVl ZHMgdG8gYmUgYWRkcmVzc2VkIChhcyBtdWNoIGFzIGhvdCBzdGFuZGJ5IGRvZXMpLgoKMi4g T3VyIGNob3NlbiBzdHJhdGVneSBmb3IgZGVhbGluZyB3aXRoIHRoaXMgdHlwZSBvZiByZXBs aWNhdGlvbiBzbG90CmlzIHRvIGludmFsaWRhdGUgbG9naWNhbCBzbG90cyBmb3Igd2hpY2gg bmVlZGVkIGRhdGEgaGFzIGJlZW4gcmVtb3ZlZC4KCjMuIFRvIGRvIHRoaXMgd2UgbmVlZCB0 aGUgbGF0ZXN0UmVtb3ZlZFhpZCBmb3IgZWFjaCBjaGFuZ2UsIGp1c3QgYXMgd2UKZG8gZm9y IHBoeXNpY2FsIHJlcGxpY2F0aW9uIGNvbmZsaWN0cywgYnV0IHdlIGFsc28gbmVlZCB0byBr bm93CndoZXRoZXIgYW55IHBhcnRpY3VsYXIgY2hhbmdlIHdhcyB0byBkYXRhIHRoYXQgbG9n aWNhbCByZXBsaWNhdGlvbgptaWdodCBhY2Nlc3MuIFRoYXQgd2F5LCBkdXJpbmcgV0FMIHJl cGxheSwgd2Uga25vdyB3aGVuIHRoZXJlIGlzIGEgcmlzayBvZgpjb25mbGljdCBhbmQsIGlm IHNvLCBpZiB0aGVyZSBpcyBhIGNvbmZsaWN0LgoKNC4gV2UgY2FuJ3QgcmVseSBvbiB0aGUg c3RhbmRieSdzIHJlbGNhY2hlIGVudHJpZXMgZm9yIHRoaXMgcHVycG9zZSBpbgphbnkgd2F5 LCBiZWNhdXNlIHRoZSBzdGFydHVwIHByb2Nlc3MgY2FuJ3QgYWNjZXNzIGNhdGFsb2cgY29u dGVudHMuCgo1LiBUaGVyZWZvcmUgZXZlcnkgV0FMIHJlY29yZCB0aGF0IHBvdGVudGlhbGx5 IHJlbW92ZXMgZGF0YSBmcm9tIHRoZQppbmRleCBvciBoZWFwIG11c3QgY2FycnkgYSBmbGFn IGluZGljYXRpbmcgd2hldGhlciBvciBub3QgaXQgaXMgb25lCnRoYXQgbWlnaHQgYmUgYWNj ZXNzZWQgZHVyaW5nIGxvZ2ljYWwgZGVjb2RpbmcuCgpXaHkgZG8gd2UgbmVlZCB0aGlzIGZv ciBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnk/CgpGaXJzdCwgbGV0J3MgZm9yZ2V0IGFi b3V0IGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieSBhbmQgcmVjYWxsIHRoYXQKb24gYSBw cmltYXJ5IGRhdGFiYXNlLCBhbnkgY2F0YWxvZyByb3dzIHRoYXQgbWF5IGJlIG5lZWRlZCBi eSBhIGxvZ2ljYWwKZGVjb2RpbmcgcmVwbGljYXRpb24gc2xvdCBhcmUgbm90IHJlbW92ZWQu CgpUaGlzIGlzIGRvbmUgdGhhbmtzIHRvIHRoZSBjYXRhbG9nX3htaW4gYXNzb2NpYXRlZCB3 aXRoIHRoZSBsb2dpY2FsCnJlcGxpY2F0aW9uIHNsb3QuCgpCdXQsIHdpdGggbG9naWNhbCBk ZWNvZGluZyBvbiBzdGFuZGJ5LCBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOgoKLSBob3Rfc3Rh bmRieV9mZWVkYmFjayBpcyBvZmYKLSBob3Rfc3RhbmRieV9mZWVkYmFjayBpcyBvbiBidXQg dGhlcmUgaXMgbm8gYSBwaHlzaWNhbCBzbG90IGJldHdlZW4KICB0aGUgcHJpbWFyeSBhbmQg dGhlIHN0YW5kYnkuIFRoZW4sIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIHdpbGwgd29yaywKICBi dXQgb25seSB3aGlsZSB0aGUgY29ubmVjdGlvbiBpcyBhbGl2ZSAoZm9yIGV4YW1wbGUgYSBu b2RlIHJlc3RhcnQKICB3b3VsZCBicmVhayBpdCkKClRoZW4sIHRoZSBwcmltYXJ5IG1heSBk ZWxldGUgc3lzdGVtIGNhdGFsb2cgcm93cyB0aGF0IGNvdWxkIGJlIG5lZWRlZApieSB0aGUg bG9naWNhbCBkZWNvZGluZyBvbiB0aGUgc3RhbmRieSAoYXMgaXQgZG9lcyBub3Qga25vdyBh Ym91dCB0aGUKY2F0YWxvZ194bWluIG9uIHRoZSBzdGFuZGJ5KS4KClNvLCBpdOKAmXMgbWFu ZGF0b3J5IHRvIGlkZW50aWZ5IHRob3NlIHJvd3MgYW5kIGludmFsaWRhdGUgdGhlIHNsb3Rz CnRoYXQgbWF5IG5lZWQgdGhlbSBpZiBhbnkuIElkZW50aWZ5aW5nIHRob3NlIHJvd3MgaXMg dGhlIHB1cnBvc2Ugb2YKdGhpcyBjb21taXQuCgpJbXBsZW1lbnRhdGlvbjoKCldoZW4gYSBX QUwgcmVwbGF5IG9uIHN0YW5kYnkgaW5kaWNhdGVzIHRoYXQgYSBjYXRhbG9nIHRhYmxlIHR1 cGxlIGlzCnRvIGJlIGRlbGV0ZWQgYnkgYW4geGlkIHRoYXQgaXMgZ3JlYXRlciB0aGFuIGEg bG9naWNhbCBzbG90J3MKY2F0YWxvZ194bWluLCB0aGVuIHRoYXQgbWVhbnMgdGhlIHNsb3Qn cyBjYXRhbG9nX3htaW4gY29uZmxpY3RzIHdpdGgKdGhlIHhpZCwgYW5kIHdlIG5lZWQgdG8g aGFuZGxlIHRoZSBjb25mbGljdC4gV2hpbGUgc3Vic2VxdWVudCBjb21taXRzCndpbGwgZG8g dGhlIGFjdHVhbCBjb25mbGljdCBoYW5kbGluZywgdGhpcyBjb21taXQgYWRkcyBhIG5ldyBm aWVsZAppc0NhdGFsb2dSZWwgaW4gc3VjaCBXQUwgcmVjb3JkcyAoYW5kIGEgbmV3IGJpdCBz ZXQgaW4gdGhlCnhsX2hlYXBfdmlzaWJsZSBmbGFncyBmaWVsZCksIHRoYXQgaXMgdHJ1ZSBm b3IgY2F0YWxvZyB0YWJsZXMsIHNvIGFzIHRvCmFycmFuZ2UgZm9yIGNvbmZsaWN0IGhhbmRs aW5nLgoKVGhlIGFmZmVjdGVkIFdBTCByZWNvcmRzIGFyZSB0aGUgb25lcyB0aGF0IGFscmVh ZHkgY29udGFpbiB0aGUKc25hcHNob3RDb25mbGljdEhvcml6b24gZmllbGQsIG5hbWVseToK Ci0gZ2lzdHhsb2dEZWxldGUKLSBnaXN0eGxvZ1BhZ2VSZXVzZQotIHhsX2hhc2hfdmFjdXVt X29uZV9wYWdlCi0geGxfaGVhcF9wcnVuZQotIHhsX2hlYXBfZnJlZXplX3BhZ2UKLSB4bF9o ZWFwX3Zpc2libGUKLSB4bF9idHJlZV9yZXVzZV9wYWdlCi0geGxfYnRyZWVfZGVsZXRlCi0g c3BneGxvZ1ZhY3V1bVJlZGlyZWN0CgpEdWUgdG8gdGhpcyBuZXcgZmllbGQgYmVpbmcgYWRk ZWQsIHhsX2hhc2hfdmFjdXVtX29uZV9wYWdlIGFuZApnaXN0eGxvZ0RlbGV0ZSBkbyBub3cg Y29udGFpbiB0aGUgb2Zmc2V0cyB0byBiZSBkZWxldGVkIGFzIGEKRkxFWElCTEVfQVJSQVlf TUVNQkVSLiBUaGlzIGlzIG5lZWRlZCB0byBlbnN1cmUgY29ycmVjdCBhbGlnbmVtZW50LgpJ dCdzIG5vdCBuZWVkZWQgb24gdGhlIG90aGVycyBzdHJ1Y3Qgd2hlcmUgaXNDYXRhbG9nUmVs IGhhcwpiZWVuIGFkZGVkLgoKQXV0aG9yOiBBbmRyZXMgRnJldW5kIChpbiBhbiBvbGRlciB2 ZXJzaW9uKSwgQW1pdCBLaGFuZGVrYXIsIEJlcnRyYW5kCkRyb3V2b3QKUmV2aWV3ZWQtQnk6 IEJlcnRyYW5kIERyb3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVydCBIYWFzLCBGYWJyaXpp byBkZQpSb3llcyBNZWxsbywgTWVsYW5pZSBQbGFnZW1hbgotLS0KIGNvbnRyaWIvYW1jaGVj ay92ZXJpZnlfbmJ0cmVlLmMgICAgICAgICAgICB8ICAxNSArLS0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9naXN0L2dpc3QuYyAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2dpc3QvZ2lzdGJ1aWxkLmMgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nl c3MvZ2lzdC9naXN0dXRpbC5jICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2FjY2Vz cy9naXN0L2dpc3R4bG9nLmMgICAgICAgICB8ICAxNyArKy0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvaGFzaC9oYXNoX3hsb2cuYyAgICAgICAgfCAgMTIgKy0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvaGFzaC9oYXNoaW5zZXJ0LmMgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtLmMgICAgICAgICAgIHwgICA1ICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9oZWFwYW1faGFuZGxlci5jICAgfCAgIDkgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmlzaWJpbGl0eW1hcC5jICAgIHwgICAzICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idGluc2VydC5jICAgICAgfCAgOTEgKysrKysrKysrLS0tLS0tLS0KIHNyYy9iYWNrZW5k L2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5jICAgICAgICB8IDExMSArKysrKysrKysrKy0tLS0t LS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVlLmMgICAgICAgICB8ICAg NCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzZWFyY2guYyAgICAgIHwgIDUw ICsrKysrKy0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jICAgICAg ICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR1dGlscy5jICAgICAg IHwgICA3ICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jICAgICAg fCAgIDkgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICAgICB8 ICAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMgICAgICAgICAgICAgfCAg IDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyAgICAgIHwgICA2 ICsrCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMgICAgICAgfCAgIDIg Ky0KIHNyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYyB8ICAgNSAr LQogc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmggICAgICAgICAgICAgICAgIHwgICAxICsK IHNyYy9pbmNsdWRlL2FjY2Vzcy9naXN0X3ByaXZhdGUuaCAgICAgICAgICB8ICAgNyArLQog c3JjL2luY2x1ZGUvYWNjZXNzL2dpc3R4bG9nLmggICAgICAgICAgICAgIHwgIDEzICsrLQog c3JjL2luY2x1ZGUvYWNjZXNzL2hhc2hfeGxvZy5oICAgICAgICAgICAgIHwgICA4ICstCiBz cmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaCAgICAgICAgICAgfCAgMTAgKy0KIHNy Yy9pbmNsdWRlL2FjY2Vzcy9uYnRyZWUuaCAgICAgICAgICAgICAgICB8ICAzNyArKysrLS0t CiBzcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0eGxvZy5oICAgICAgICAgICAgICAgfCAgIDggKy0K IHNyYy9pbmNsdWRlL2FjY2Vzcy9zcGd4bG9nLmggICAgICAgICAgICAgICB8ICAgMiArCiBz cmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaCAgICAgfCAgMTAgKy0KIHNy Yy9pbmNsdWRlL3V0aWxzL3JlbC5oICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMv aW5jbHVkZS91dGlscy90dXBsZXNvcnQuaCAgICAgICAgICAgICAgfCAgIDQgKy0KIDM1IGZp bGVzIGNoYW5nZWQsIDI2MyBpbnNlcnRpb25zKCspLCAyMDMgZGVsZXRpb25zKC0pCiAgIDMu MyUgY29udHJpYi9hbWNoZWNrLwogICA0LjclIHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0Lwog ICA0LjElIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwLwogIDU5LjAlIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9uYnRyZWUvCiAgIDMuNyUgc3JjL2JhY2tlbmQvYWNjZXNzLwogIDIyLjAlIHNyYy9p bmNsdWRlL2FjY2Vzcy8KCmRpZmYgLS1naXQgYS9jb250cmliL2FtY2hlY2svdmVyaWZ5X25i dHJlZS5jIGIvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYwppbmRleCAyNTdjZmY2 NzFiLi5lYjI4MGQ0ODkzIDEwMDY0NAotLS0gYS9jb250cmliL2FtY2hlY2svdmVyaWZ5X25i dHJlZS5jCisrKyBiL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMKQEAgLTE4Myw2 ICsxODMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaW52YXJpYW50X2xfbm9udGFyZ2V0X29m ZnNldChCdHJlZUNoZWNrU3RhdGUgKnN0YXRlLAogCQkJCQkJCQkJCQkJT2Zmc2V0TnVtYmVy IHVwcGVyYm91bmQpOwogc3RhdGljIFBhZ2UgcGFsbG9jX2J0cmVlX3BhZ2UoQnRyZWVDaGVj a1N0YXRlICpzdGF0ZSwgQmxvY2tOdW1iZXIgYmxvY2tudW0pOwogc3RhdGljIGlubGluZSBC VFNjYW5JbnNlcnQgYnRfbWtzY2Fua2V5X3Bpdm90c2VhcmNoKFJlbGF0aW9uIHJlbCwKKwkJ CQkJCQkJCQkJCQlSZWxhdGlvbiBoZWFwcmVsLAogCQkJCQkJCQkJCQkJCUluZGV4VHVwbGUg aXR1cCk7CiBzdGF0aWMgSXRlbUlkIFBhZ2VHZXRJdGVtSWRDYXJlZnVsKEJ0cmVlQ2hlY2tT dGF0ZSAqc3RhdGUsIEJsb2NrTnVtYmVyIGJsb2NrLAogCQkJCQkJCQkgICBQYWdlIHBhZ2Us IE9mZnNldE51bWJlciBvZmZzZXQpOwpAQCAtMzMxLDcgKzMzMiw3IEBAIGJ0X2luZGV4X2No ZWNrX2ludGVybmFsKE9pZCBpbmRyZWxpZCwgYm9vbCBwYXJlbnRjaGVjaywgYm9vbCBoZWFw YWxsaW5kZXhlZCwKIAkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpbmRyZWwpKSkp OwogCiAJCS8qIEV4dHJhY3QgbWV0YWRhdGEgZnJvbSBtZXRhcGFnZSwgYW5kIHNhbml0aXpl IGl0IGluIHBhc3NpbmcgKi8KLQkJX2J0X21ldGF2ZXJzaW9uKGluZHJlbCwgJmhlYXBrZXlz cGFjZSwgJmFsbGVxdWFsaW1hZ2UpOworCQlfYnRfbWV0YXZlcnNpb24oaW5kcmVsLCBoZWFw cmVsLCAmaGVhcGtleXNwYWNlLCAmYWxsZXF1YWxpbWFnZSk7CiAJCWlmIChhbGxlcXVhbGlt YWdlICYmICFoZWFwa2V5c3BhY2UpCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29k ZShFUlJDT0RFX0lOREVYX0NPUlJVUFRFRCksCkBAIC0xMjU4LDcgKzEyNTksNyBAQCBidF90 YXJnZXRfcGFnZV9jaGVjayhCdHJlZUNoZWNrU3RhdGUgKnN0YXRlKQogCQl9CiAKIAkJLyog QnVpbGQgaW5zZXJ0aW9uIHNjYW5rZXkgZm9yIGN1cnJlbnQgcGFnZSBvZmZzZXQgKi8KLQkJ c2tleSA9IGJ0X21rc2NhbmtleV9waXZvdHNlYXJjaChzdGF0ZS0+cmVsLCBpdHVwKTsKKwkJ c2tleSA9IGJ0X21rc2NhbmtleV9waXZvdHNlYXJjaChzdGF0ZS0+cmVsLCBzdGF0ZS0+aGVh cHJlbCwgaXR1cCk7CiAKIAkJLyoKIAkJICogTWFrZSBzdXJlIHR1cGxlIHNpemUgZG9lcyBu b3QgZXhjZWVkIHRoZSByZWxldmFudCBCVFJFRV9WRVJTSU9OCkBAIC0xNzY4LDcgKzE3Njks NyBAQCBidF9yaWdodF9wYWdlX2NoZWNrX3NjYW5rZXkoQnRyZWVDaGVja1N0YXRlICpzdGF0 ZSkKIAkgKiBtZW1vcnkgcmVtYWluaW5nIGFsbG9jYXRlZC4KIAkgKi8KIAlmaXJzdGl0dXAg PSAoSW5kZXhUdXBsZSkgUGFnZUdldEl0ZW0ocmlnaHRwYWdlLCByaWdodGl0ZW0pOwotCXJl dHVybiBidF9ta3NjYW5rZXlfcGl2b3RzZWFyY2goc3RhdGUtPnJlbCwgZmlyc3RpdHVwKTsK KwlyZXR1cm4gYnRfbWtzY2Fua2V5X3Bpdm90c2VhcmNoKHN0YXRlLT5yZWwsIHN0YXRlLT5o ZWFwcmVsLCBmaXJzdGl0dXApOwogfQogCiAvKgpAQCAtMjY4MSw3ICsyNjgyLDcgQEAgYnRf cm9vdGRlc2NlbmQoQnRyZWVDaGVja1N0YXRlICpzdGF0ZSwgSW5kZXhUdXBsZSBpdHVwKQog CUJ1ZmZlcgkJbGJ1ZjsKIAlib29sCQlleGlzdHM7CiAKLQlrZXkgPSBfYnRfbWtzY2Fua2V5 KHN0YXRlLT5yZWwsIGl0dXApOworCWtleSA9IF9idF9ta3NjYW5rZXkoc3RhdGUtPnJlbCwg c3RhdGUtPmhlYXByZWwsIGl0dXApOwogCUFzc2VydChrZXktPmhlYXBrZXlzcGFjZSAmJiBr ZXktPnNjYW50aWQgIT0gTlVMTCk7CiAKIAkvKgpAQCAtMjY5NCw3ICsyNjk1LDcgQEAgYnRf cm9vdGRlc2NlbmQoQnRyZWVDaGVja1N0YXRlICpzdGF0ZSwgSW5kZXhUdXBsZSBpdHVwKQog CSAqLwogCUFzc2VydChzdGF0ZS0+cmVhZG9ubHkgJiYgc3RhdGUtPnJvb3RkZXNjZW5kKTsK IAlleGlzdHMgPSBmYWxzZTsKLQlzdGFjayA9IF9idF9zZWFyY2goc3RhdGUtPnJlbCwga2V5 LCAmbGJ1ZiwgQlRfUkVBRCwgTlVMTCk7CisJc3RhY2sgPSBfYnRfc2VhcmNoKHN0YXRlLT5y ZWwsIHN0YXRlLT5oZWFwcmVsLCBrZXksICZsYnVmLCBCVF9SRUFELCBOVUxMKTsKIAogCWlm IChCdWZmZXJJc1ZhbGlkKGxidWYpKQogCXsKQEAgLTMxMzMsMTEgKzMxMzQsMTEgQEAgcGFs bG9jX2J0cmVlX3BhZ2UoQnRyZWVDaGVja1N0YXRlICpzdGF0ZSwgQmxvY2tOdW1iZXIgYmxv Y2tudW0pCiAgKiB0aGUgc2NhbmtleSBpcyBncmVhdGVyLgogICovCiBzdGF0aWMgaW5saW5l IEJUU2Nhbkluc2VydAotYnRfbWtzY2Fua2V5X3Bpdm90c2VhcmNoKFJlbGF0aW9uIHJlbCwg SW5kZXhUdXBsZSBpdHVwKQorYnRfbWtzY2Fua2V5X3Bpdm90c2VhcmNoKFJlbGF0aW9uIHJl bCwgUmVsYXRpb24gaGVhcHJlbCwgSW5kZXhUdXBsZSBpdHVwKQogewogCUJUU2Nhbkluc2Vy dCBza2V5OwogCi0Jc2tleSA9IF9idF9ta3NjYW5rZXkocmVsLCBpdHVwKTsKKwlza2V5ID0g X2J0X21rc2NhbmtleShyZWwsIGhlYXByZWwsIGl0dXApOwogCXNrZXktPnBpdm90c2VhcmNo ID0gdHJ1ZTsKIAogCXJldHVybiBza2V5OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2dpc3QvZ2lzdC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdC5jCmluZGV4 IGJhMzk0ZjA4ZjYuLjNhYzY4ZWMzYjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9naXN0L2dpc3QuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0LmMKQEAg LTM0OCw3ICszNDgsNyBAQCBnaXN0cGxhY2V0b3BhZ2UoUmVsYXRpb24gcmVsLCBTaXplIGZy ZWVzcGFjZSwgR0lTVFNUQVRFICpnaXN0c3RhdGUsCiAJCWZvciAoOyBwdHI7IHB0ciA9IHB0 ci0+bmV4dCkKIAkJewogCQkJLyogQWxsb2NhdGUgbmV3IHBhZ2UgKi8KLQkJCXB0ci0+YnVm ZmVyID0gZ2lzdE5ld0J1ZmZlcihyZWwpOworCQkJcHRyLT5idWZmZXIgPSBnaXN0TmV3QnVm ZmVyKHJlbCwgaGVhcFJlbCk7CiAJCQlHSVNUSW5pdEJ1ZmZlcihwdHItPmJ1ZmZlciwgKGlz X2xlYWYpID8gRl9MRUFGIDogMCk7CiAJCQlwdHItPnBhZ2UgPSBCdWZmZXJHZXRQYWdlKHB0 ci0+YnVmZmVyKTsKIAkJCXB0ci0+YmxvY2suYmxrbm8gPSBCdWZmZXJHZXRCbG9ja051bWJl cihwdHItPmJ1ZmZlcik7CkBAIC0xNjk0LDcgKzE2OTQsOCBAQCBnaXN0cHJ1bmVwYWdlKFJl bGF0aW9uIHJlbCwgUGFnZSBwYWdlLCBCdWZmZXIgYnVmZmVyLCBSZWxhdGlvbiBoZWFwUmVs KQogCiAJCQlyZWNwdHIgPSBnaXN0WExvZ0RlbGV0ZShidWZmZXIsCiAJCQkJCQkJCQlkZWxl dGFibGUsIG5kZWxldGFibGUsCi0JCQkJCQkJCQlzbmFwc2hvdENvbmZsaWN0SG9yaXpvbik7 CisJCQkJCQkJCQlzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCWhlYXBSZWwp OwogCiAJCQlQYWdlU2V0TFNOKHBhZ2UsIHJlY3B0cik7CiAJCX0KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2dpc3QvZ2lzdGJ1aWxkLmMKaW5kZXggN2E2ZDkzYmI4Ny4uMWYwNDQ4NDBkNCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMKQEAgLTI5OCw3ICsyOTgsNyBAQCBnaXN0 YnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJ bmZvKQogCQlQYWdlCQlwYWdlOwogCiAJCS8qIGluaXRpYWxpemUgdGhlIHJvb3QgcGFnZSAq LwotCQlidWZmZXIgPSBnaXN0TmV3QnVmZmVyKGluZGV4KTsKKwkJYnVmZmVyID0gZ2lzdE5l d0J1ZmZlcihpbmRleCwgaGVhcCk7CiAJCUFzc2VydChCdWZmZXJHZXRCbG9ja051bWJlcihi dWZmZXIpID09IEdJU1RfUk9PVF9CTEtOTyk7CiAJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1 ZmZlcik7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R1dGls LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0dXRpbC5jCmluZGV4IGI0ZDg0M2Ew ZmYuLmE2MDc0NjRiOTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dp c3R1dGlsLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwuYwpAQCAt ODIxLDcgKzgyMSw3IEBAIGdpc3RjaGVja3BhZ2UoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVm KQogICogQ2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBpbml0aWFsaXppbmcgdGhlIHBhZ2Ug YnkgY2FsbGluZyBHSVNUSW5pdEJ1ZmZlcgogICovCiBCdWZmZXIKLWdpc3ROZXdCdWZmZXIo UmVsYXRpb24gcikKK2dpc3ROZXdCdWZmZXIoUmVsYXRpb24gciwgUmVsYXRpb24gaGVhcHJl bCkKIHsKIAlCdWZmZXIJCWJ1ZmZlcjsKIAlib29sCQluZWVkTG9jazsKQEAgLTg2NSw3ICs4 NjUsNyBAQCBnaXN0TmV3QnVmZmVyKFJlbGF0aW9uIHIpCiAJCQkJICogcGFnZSdzIGRlbGV0 ZVhpZC4KIAkJCQkgKi8KIAkJCQlpZiAoWExvZ1N0YW5kYnlJbmZvQWN0aXZlKCkgJiYgUmVs YXRpb25OZWVkc1dBTChyKSkKLQkJCQkJZ2lzdFhMb2dQYWdlUmV1c2UociwgYmxrbm8sIEdp c3RQYWdlR2V0RGVsZXRlWGlkKHBhZ2UpKTsKKwkJCQkJZ2lzdFhMb2dQYWdlUmV1c2Uociwg aGVhcHJlbCwgYmxrbm8sIEdpc3RQYWdlR2V0RGVsZXRlWGlkKHBhZ2UpKTsKIAogCQkJCXJl dHVybiBidWZmZXI7CiAJCQl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lz dC9naXN0eGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYwppbmRl eCBmNjU4NjQyNTRhLi5iNzY3OGYzYzE0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvZ2lzdC9naXN0eGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4 bG9nLmMKQEAgLTE3Nyw2ICsxNzcsNyBAQCBnaXN0UmVkb0RlbGV0ZVJlY29yZChYTG9nUmVh ZGVyU3RhdGUgKnJlY29yZCkKIAlnaXN0eGxvZ0RlbGV0ZSAqeGxkYXRhID0gKGdpc3R4bG9n RGVsZXRlICopIFhMb2dSZWNHZXREYXRhKHJlY29yZCk7CiAJQnVmZmVyCQlidWZmZXI7CiAJ UGFnZQkJcGFnZTsKKwlPZmZzZXROdW1iZXIgKnRvRGVsZXRlID0geGxkYXRhLT5vZmZzZXRz OwogCiAJLyoKIAkgKiBJZiB3ZSBoYXZlIGFueSBjb25mbGljdCBwcm9jZXNzaW5nIHRvIGRv LCBpdCBtdXN0IGhhcHBlbiBiZWZvcmUgd2UKQEAgLTIwMywxNCArMjA0LDcgQEAgZ2lzdFJl ZG9EZWxldGVSZWNvcmQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJewogCQlwYWdlID0g KFBhZ2UpIEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKIAotCQlpZiAoWExvZ1JlY0dldERhdGFM ZW4ocmVjb3JkKSA+IFNpemVPZkdpc3R4bG9nRGVsZXRlKQotCQl7Ci0JCQlPZmZzZXROdW1i ZXIgKnRvZGVsZXRlOwotCi0JCQl0b2RlbGV0ZSA9IChPZmZzZXROdW1iZXIgKikgKChjaGFy ICopIHhsZGF0YSArIFNpemVPZkdpc3R4bG9nRGVsZXRlKTsKLQotCQkJUGFnZUluZGV4TXVs dGlEZWxldGUocGFnZSwgdG9kZWxldGUsIHhsZGF0YS0+bnRvZGVsZXRlKTsKLQkJfQorCQlQ YWdlSW5kZXhNdWx0aURlbGV0ZShwYWdlLCB0b0RlbGV0ZSwgeGxkYXRhLT5udG9kZWxldGUp OwogCiAJCUdpc3RDbGVhclBhZ2VIYXNHYXJiYWdlKHBhZ2UpOwogCQlHaXN0TWFya1R1cGxl c0RlbGV0ZWQocGFnZSk7CkBAIC01OTcsNyArNTkxLDggQEAgZ2lzdFhMb2dBc3NpZ25MU04o dm9pZCkKICAqIFdyaXRlIFhMT0cgcmVjb3JkIGFib3V0IHJldXNlIG9mIGEgZGVsZXRlZCBw YWdlLgogICovCiB2b2lkCi1naXN0WExvZ1BhZ2VSZXVzZShSZWxhdGlvbiByZWwsIEJsb2Nr TnVtYmVyIGJsa25vLCBGdWxsVHJhbnNhY3Rpb25JZCBkZWxldGVYaWQpCitnaXN0WExvZ1Bh Z2VSZXVzZShSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsCisJCQkJICBCbG9ja051 bWJlciBibGtubywgRnVsbFRyYW5zYWN0aW9uSWQgZGVsZXRlWGlkKQogewogCWdpc3R4bG9n UGFnZVJldXNlIHhscmVjX3JldXNlOwogCkBAIC02MDgsNiArNjAzLDcgQEAgZ2lzdFhMb2dQ YWdlUmV1c2UoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBibGtubywgRnVsbFRyYW5zYWN0 aW9uSWQgZGVsZXRlWGlkKQogCSAqLwogCiAJLyogWExPRyBzdHVmZiAqLworCXhscmVjX3Jl dXNlLmlzQ2F0YWxvZ1JlbCA9IFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2Rp bmcoaGVhcHJlbCk7CiAJeGxyZWNfcmV1c2UubG9jYXRvciA9IHJlbC0+cmRfbG9jYXRvcjsK IAl4bHJlY19yZXVzZS5ibG9jayA9IGJsa25vOwogCXhscmVjX3JldXNlLnNuYXBzaG90Q29u ZmxpY3RIb3Jpem9uID0gZGVsZXRlWGlkOwpAQCAtNjcyLDExICs2NjgsMTIgQEAgZ2lzdFhM b2dVcGRhdGUoQnVmZmVyIGJ1ZmZlciwKICAqLwogWExvZ1JlY1B0cgogZ2lzdFhMb2dEZWxl dGUoQnVmZmVyIGJ1ZmZlciwgT2Zmc2V0TnVtYmVyICp0b2RlbGV0ZSwgaW50IG50b2RlbGV0 ZSwKLQkJCSAgIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24pCisJCQkg ICBUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLCBSZWxhdGlvbiBoZWFw cmVsKQogewogCWdpc3R4bG9nRGVsZXRlIHhscmVjOwogCVhMb2dSZWNQdHIJcmVjcHRyOwog CisJeGxyZWMuaXNDYXRhbG9nUmVsID0gUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxE ZWNvZGluZyhoZWFwcmVsKTsKIAl4bHJlYy5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IHNu YXBzaG90Q29uZmxpY3RIb3Jpem9uOwogCXhscmVjLm50b2RlbGV0ZSA9IG50b2RlbGV0ZTsK IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoX3hsb2cuYwppbmRleCBmMzhiNDJlZmI5Li4w OGNlYjkxMjg4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoX3hs b2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoX3hsb2cuYwpAQCAtOTgw LDggKzk4MCwxMCBAQCBoYXNoX3hsb2dfdmFjdXVtX29uZV9wYWdlKFhMb2dSZWFkZXJTdGF0 ZSAqcmVjb3JkKQogCVBhZ2UJCXBhZ2U7CiAJWExvZ1JlZG9BY3Rpb24gYWN0aW9uOwogCUhh c2hQYWdlT3BhcXVlIHBhZ2VvcGFxdWU7CisJT2Zmc2V0TnVtYmVyICp0b0RlbGV0ZTsKIAog CXhsZGF0YSA9ICh4bF9oYXNoX3ZhY3V1bV9vbmVfcGFnZSAqKSBYTG9nUmVjR2V0RGF0YShy ZWNvcmQpOworCXRvRGVsZXRlID0geGxkYXRhLT5vZmZzZXRzOwogCiAJLyoKIAkgKiBJZiB3 ZSBoYXZlIGFueSBjb25mbGljdCBwcm9jZXNzaW5nIHRvIGRvLCBpdCBtdXN0IGhhcHBlbiBi ZWZvcmUgd2UKQEAgLTEwMTAsMTUgKzEwMTIsNyBAQCBoYXNoX3hsb2dfdmFjdXVtX29uZV9w YWdlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCXsKIAkJcGFnZSA9IChQYWdlKSBCdWZm ZXJHZXRQYWdlKGJ1ZmZlcik7CiAKLQkJaWYgKFhMb2dSZWNHZXREYXRhTGVuKHJlY29yZCkg PiBTaXplT2ZIYXNoVmFjdXVtT25lUGFnZSkKLQkJewotCQkJT2Zmc2V0TnVtYmVyICp1bnVz ZWQ7Ci0KLQkJCXVudXNlZCA9IChPZmZzZXROdW1iZXIgKikgKChjaGFyICopIHhsZGF0YSAr IFNpemVPZkhhc2hWYWN1dW1PbmVQYWdlKTsKLQotCQkJUGFnZUluZGV4TXVsdGlEZWxldGUo cGFnZSwgdW51c2VkLCB4bGRhdGEtPm50dXBsZXMpOwotCQl9Ci0KKwkJUGFnZUluZGV4TXVs dGlEZWxldGUocGFnZSwgdG9EZWxldGUsIHhsZGF0YS0+bnR1cGxlcyk7CiAJCS8qCiAJCSAq IE1hcmsgdGhlIHBhZ2UgYXMgbm90IGNvbnRhaW5pbmcgYW55IExQX0RFQUQgaXRlbXMuIFNl ZSBjb21tZW50cyBpbgogCQkgKiBfaGFzaF92YWN1dW1fb25lX3BhZ2UoKSBmb3IgZGV0YWls cy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hpbnNlcnQuYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hpbnNlcnQuYwppbmRleCBhNjA0ZTMxODkx Li4yMjY1NmIyNGUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNo aW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGluc2VydC5jCkBA IC00MzIsNiArNDMyLDcgQEAgX2hhc2hfdmFjdXVtX29uZV9wYWdlKFJlbGF0aW9uIHJlbCwg UmVsYXRpb24gaHJlbCwgQnVmZmVyIG1ldGFidWYsIEJ1ZmZlciBidWYpCiAJCQl4bF9oYXNo X3ZhY3V1bV9vbmVfcGFnZSB4bHJlYzsKIAkJCVhMb2dSZWNQdHIJcmVjcHRyOwogCisJCQl4 bHJlYy5pc0NhdGFsb2dSZWwgPSBSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29k aW5nKGhyZWwpOwogCQkJeGxyZWMuc25hcHNob3RDb25mbGljdEhvcml6b24gPSBzbmFwc2hv dENvbmZsaWN0SG9yaXpvbjsKIAkJCXhscmVjLm50dXBsZXMgPSBuZGVsZXRhYmxlOwogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmluZGV4IDdlYjc5Y2VlNTguLjA0ZTliYzVlYjIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC02NjY3LDYgKzY2NjcsNyBAQCBo ZWFwX2ZyZWV6ZV9leGVjdXRlX3ByZXBhcmVkKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZmZl ciwKIAkJbnBsYW5zID0gaGVhcF9sb2dfZnJlZXplX3BsYW4odHVwbGVzLCBudHVwbGVzLCBw bGFucywgb2Zmc2V0cyk7CiAKIAkJeGxyZWMuc25hcHNob3RDb25mbGljdEhvcml6b24gPSBz bmFwc2hvdENvbmZsaWN0SG9yaXpvbjsKKwkJeGxyZWMuaXNDYXRhbG9nUmVsID0gUmVsYXRp b25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhyZWwpOwogCQl4bHJlYy5ucGxhbnMg PSBucGxhbnM7CiAKIAkJWExvZ0JlZ2luSW5zZXJ0KCk7CkBAIC04MjM3LDcgKzgyMzgsNyBA QCBib3R0b211cF9zb3J0X2FuZF9zaHJpbmsoVE1fSW5kZXhEZWxldGVPcCAqZGVsc3RhdGUp CiAgKiB1cGRhdGUgdGhlIGhlYXAgcGFnZSdzIExTTi4KICAqLwogWExvZ1JlY1B0cgotbG9n X2hlYXBfdmlzaWJsZShSZWxGaWxlTG9jYXRvciBybG9jYXRvciwgQnVmZmVyIGhlYXBfYnVm ZmVyLCBCdWZmZXIgdm1fYnVmZmVyLAorbG9nX2hlYXBfdmlzaWJsZShSZWxhdGlvbiByZWws IEJ1ZmZlciBoZWFwX2J1ZmZlciwgQnVmZmVyIHZtX2J1ZmZlciwKIAkJCQkgVHJhbnNhY3Rp b25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwgdWludDggdm1mbGFncykKIHsKIAl4bF9o ZWFwX3Zpc2libGUgeGxyZWM7CkBAIC04MjQ5LDYgKzgyNTAsOCBAQCBsb2dfaGVhcF92aXNp YmxlKFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yLCBCdWZmZXIgaGVhcF9idWZmZXIsIEJ1ZmZl ciB2bV9idWZmZXIsCiAKIAl4bHJlYy5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IHNuYXBz aG90Q29uZmxpY3RIb3Jpem9uOwogCXhscmVjLmZsYWdzID0gdm1mbGFnczsKKwlpZiAoUmVs YXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhyZWwpKQorCQl4bHJlYy5mbGFn cyB8PSBWSVNJQklMSVRZTUFQX0lTX0NBVEFMT0dfUkVMOwogCVhMb2dCZWdpbkluc2VydCgp OwogCVhMb2dSZWdpc3RlckRhdGEoKGNoYXIgKikgJnhscmVjLCBTaXplT2ZIZWFwVmlzaWJs ZSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5k bGVyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4 IGM0YjE5MTZkMzYuLjM5MmM2ZTY1OWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtX2hhbmRsZXIuYwpAQCAtNzIwLDkgKzcyMCwxNCBAQCBoZWFwYW1fcmVsYXRpb25f Y29weV9mb3JfY2x1c3RlcihSZWxhdGlvbiBPbGRIZWFwLCBSZWxhdGlvbiBOZXdIZWFwLAog CQkJCQkJCQkgKm11bHRpX2N1dG9mZik7CiAKIAotCS8qIFNldCB1cCBzb3J0aW5nIGlmIHdh bnRlZCAqLworCS8qCisJICogU2V0IHVwIHNvcnRpbmcgaWYgd2FudGVkLiBOZXdIZWFwIGlz IGJlaW5nIHBhc3NlZCB0bworCSAqIHR1cGxlc29ydF9iZWdpbl9jbHVzdGVyKCksIGl0IGNv dWxkIGhhdmUgYmVlbiBPbGRIZWFwIHRvby4gSXQgZG9lcyBub3QKKwkgKiByZWFsbHkgbWF0 dGVyLCBhcyB0aGUgZ29hbCBpcyB0byBoYXZlIGEgaGVhcCByZWxhdGlvbiBiZWluZyBwYXNz ZWQgdG8KKwkgKiBfYnRfbG9nX3JldXNlX3BhZ2UoKSAod2hpY2ggc2hvdWxkIG5vdCBiZSBj YWxsZWQgZnJvbSB0aGlzIGNvZGUgcGF0aCkuCisJICovCiAJaWYgKHVzZV9zb3J0KQotCQl0 dXBsZXNvcnQgPSB0dXBsZXNvcnRfYmVnaW5fY2x1c3RlcihvbGRUdXBEZXNjLCBPbGRJbmRl eCwKKwkJdHVwbGVzb3J0ID0gdHVwbGVzb3J0X2JlZ2luX2NsdXN0ZXIob2xkVHVwRGVzYywg T2xkSW5kZXgsIE5ld0hlYXAsCiAJCQkJCQkJCQkJCW1haW50ZW5hbmNlX3dvcmtfbWVtLAog CQkJCQkJCQkJCQlOVUxMLCBUVVBMRVNPUlRfTk9ORSk7CiAJZWxzZQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCA0ZTY1Y2JjYWRmLi4zZjAzNDIzNTFmIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtNDE4LDYgKzQxOCw3IEBAIGhl YXBfcGFnZV9wcnVuZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCXhs X2hlYXBfcHJ1bmUgeGxyZWM7CiAJCQlYTG9nUmVjUHRyCXJlY3B0cjsKIAorCQkJeGxyZWMu aXNDYXRhbG9nUmVsID0gUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhy ZWxhdGlvbik7CiAJCQl4bHJlYy5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IHByc3RhdGUu c25hcHNob3RDb25mbGljdEhvcml6b247CiAJCQl4bHJlYy5ucmVkaXJlY3RlZCA9IHByc3Rh dGUubnJlZGlyZWN0ZWQ7CiAJCQl4bHJlYy5uZGVhZCA9IHByc3RhdGUubmRlYWQ7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggOGYxNGNmODVmMy4uYWU2Mjhk NzQ3ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtMjcxMCw2 ICsyNzEwLDcgQEAgbGF6eV92YWN1dW1fb25lX2luZGV4KFJlbGF0aW9uIGluZHJlbCwgSW5k ZXhCdWxrRGVsZXRlUmVzdWx0ICppc3RhdCwKIAlpdmluZm8ubWVzc2FnZV9sZXZlbCA9IERF QlVHMjsKIAlpdmluZm8ubnVtX2hlYXBfdHVwbGVzID0gcmVsdHVwbGVzOwogCWl2aW5mby5z dHJhdGVneSA9IHZhY3JlbC0+YnN0cmF0ZWd5OworCWl2aW5mby5oZWFwcmVsID0gdmFjcmVs LT5yZWw7CiAKIAkvKgogCSAqIFVwZGF0ZSBlcnJvciB0cmFjZWJhY2sgaW5mb3JtYXRpb24u CkBAIC0yNzU5LDYgKzI3NjAsNyBAQCBsYXp5X2NsZWFudXBfb25lX2luZGV4KFJlbGF0aW9u IGluZHJlbCwgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICppc3RhdCwKIAogCWl2aW5mby5udW1f aGVhcF90dXBsZXMgPSByZWx0dXBsZXM7CiAJaXZpbmZvLnN0cmF0ZWd5ID0gdmFjcmVsLT5i c3RyYXRlZ3k7CisJaXZpbmZvLmhlYXByZWwgPSB2YWNyZWwtPnJlbDsKIAogCS8qCiAJICog VXBkYXRlIGVycm9yIHRyYWNlYmFjayBpbmZvcm1hdGlvbi4KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3Zpc2liaWxpdHltYXAuYwppbmRleCA3NGZmMDFiYjE3Li5kMWJhODU5ODUxIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCkBAIC0yODgsOCAr Mjg4LDcgQEAgdmlzaWJpbGl0eW1hcF9zZXQoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBo ZWFwQmxrLCBCdWZmZXIgaGVhcEJ1ZiwKIAkJCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKHJl Y3B0cikpCiAJCQl7CiAJCQkJQXNzZXJ0KCFJblJlY292ZXJ5KTsKLQkJCQlyZWNwdHIgPSBs b2dfaGVhcF92aXNpYmxlKHJlbC0+cmRfbG9jYXRvciwgaGVhcEJ1Ziwgdm1CdWYsCi0JCQkJ CQkJCQkJICBjdXRvZmZfeGlkLCBmbGFncyk7CisJCQkJcmVjcHRyID0gbG9nX2hlYXBfdmlz aWJsZShyZWwsIGhlYXBCdWYsIHZtQnVmLCBjdXRvZmZfeGlkLCBmbGFncyk7CiAKIAkJCQkv KgogCQkJCSAqIElmIGRhdGEgY2hlY2tzdW1zIGFyZSBlbmFibGVkIChvciB3YWxfbG9nX2hp bnRzPW9uKSwgd2UKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 aW5zZXJ0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGluc2VydC5jCmluZGV4 IGY0YzFhOTc0ZWYuLjhjNmU4NjdjNjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9uYnRyZWUvbmJ0aW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRpbnNlcnQuYwpAQCAtMzAsNyArMzAsOCBAQAogI2RlZmluZSBCVFJFRV9GQVNUUEFUSF9N SU5fTEVWRUwJMgogCiAKLXN0YXRpYyBCVFN0YWNrIF9idF9zZWFyY2hfaW5zZXJ0KFJlbGF0 aW9uIHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSk7CitzdGF0aWMgQlRTdGFjayBf YnRfc2VhcmNoX2luc2VydChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsCisJCQkJ CQkJCSBCVEluc2VydFN0YXRlIGluc2VydHN0YXRlKTsKIHN0YXRpYyBUcmFuc2FjdGlvbklk IF9idF9jaGVja191bmlxdWUoUmVsYXRpb24gcmVsLCBCVEluc2VydFN0YXRlIGluc2VydHN0 YXRlLAogCQkJCQkJCQkJICBSZWxhdGlvbiBoZWFwUmVsLAogCQkJCQkJCQkJICBJbmRleFVu aXF1ZUNoZWNrIGNoZWNrVW5pcXVlLCBib29sICppc191bmlxdWUsCkBAIC00MSw4ICs0Miw5 IEBAIHN0YXRpYyBPZmZzZXROdW1iZXIgX2J0X2ZpbmRpbnNlcnRsb2MoUmVsYXRpb24gcmVs LAogCQkJCQkJCQkJICBib29sIGluZGV4VW5jaGFuZ2VkLAogCQkJCQkJCQkJICBCVFN0YWNr IHN0YWNrLAogCQkJCQkJCQkJICBSZWxhdGlvbiBoZWFwUmVsKTsKLXN0YXRpYyB2b2lkIF9i dF9zdGVwcmlnaHQoUmVsYXRpb24gcmVsLCBCVEluc2VydFN0YXRlIGluc2VydHN0YXRlLCBC VFN0YWNrIHN0YWNrKTsKLXN0YXRpYyB2b2lkIF9idF9pbnNlcnRvbnBnKFJlbGF0aW9uIHJl bCwgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5LAorc3RhdGljIHZvaWQgX2J0X3N0ZXByaWdodChS ZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsCisJCQkJCQkgIEJUSW5zZXJ0U3RhdGUg aW5zZXJ0c3RhdGUsIEJUU3RhY2sgc3RhY2spOworc3RhdGljIHZvaWQgX2J0X2luc2VydG9u cGcoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCVFNjYW5JbnNlcnQgaXR1cF9r ZXksCiAJCQkJCQkgICBCdWZmZXIgYnVmLAogCQkJCQkJICAgQnVmZmVyIGNidWYsCiAJCQkJ CQkgICBCVFN0YWNrIHN0YWNrLApAQCAtNTEsMTMgKzUzLDEzIEBAIHN0YXRpYyB2b2lkIF9i dF9pbnNlcnRvbnBnKFJlbGF0aW9uIHJlbCwgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5LAogCQkJ CQkJICAgT2Zmc2V0TnVtYmVyIG5ld2l0ZW1vZmYsCiAJCQkJCQkgICBpbnQgcG9zdGluZ29m ZiwKIAkJCQkJCSAgIGJvb2wgc3BsaXRfb25seV9wYWdlKTsKLXN0YXRpYyBCdWZmZXIgX2J0 X3NwbGl0KFJlbGF0aW9uIHJlbCwgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5LCBCdWZmZXIgYnVm LAotCQkJCQkJQnVmZmVyIGNidWYsIE9mZnNldE51bWJlciBuZXdpdGVtb2ZmLCBTaXplIG5l d2l0ZW1zeiwKLQkJCQkJCUluZGV4VHVwbGUgbmV3aXRlbSwgSW5kZXhUdXBsZSBvcmlnbmV3 aXRlbSwKK3N0YXRpYyBCdWZmZXIgX2J0X3NwbGl0KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24g aGVhcHJlbCwgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5LAorCQkJCQkJQnVmZmVyIGJ1ZiwgQnVm ZmVyIGNidWYsIE9mZnNldE51bWJlciBuZXdpdGVtb2ZmLAorCQkJCQkJU2l6ZSBuZXdpdGVt c3osIEluZGV4VHVwbGUgbmV3aXRlbSwgSW5kZXhUdXBsZSBvcmlnbmV3aXRlbSwKIAkJCQkJ CUluZGV4VHVwbGUgbnBvc3RpbmcsIHVpbnQxNiBwb3N0aW5nb2ZmKTsKLXN0YXRpYyB2b2lk IF9idF9pbnNlcnRfcGFyZW50KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwgQnVmZmVyIHJi dWYsCi0JCQkJCQkJICBCVFN0YWNrIHN0YWNrLCBib29sIGlzcm9vdCwgYm9vbCBpc29ubHkp Owotc3RhdGljIEJ1ZmZlciBfYnRfbmV3cm9vdChSZWxhdGlvbiByZWwsIEJ1ZmZlciBsYnVm LCBCdWZmZXIgcmJ1Zik7CitzdGF0aWMgdm9pZCBfYnRfaW5zZXJ0X3BhcmVudChSZWxhdGlv biByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJ1ZmZlciBidWYsCisJCQkJCQkJICBCdWZmZXIg cmJ1ZiwgQlRTdGFjayBzdGFjaywgYm9vbCBpc3Jvb3QsIGJvb2wgaXNvbmx5KTsKK3N0YXRp YyBCdWZmZXIgX2J0X25ld3Jvb3QoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBC dWZmZXIgbGJ1ZiwgQnVmZmVyIHJidWYpOwogc3RhdGljIGlubGluZSBib29sIF9idF9wZ2Fk ZHR1cChQYWdlIHBhZ2UsIFNpemUgaXRlbXNpemUsIEluZGV4VHVwbGUgaXR1cCwKIAkJCQkJ CQkJT2Zmc2V0TnVtYmVyIGl0dXBfb2ZmLCBib29sIG5ld2ZpcnN0ZGF0YWl0ZW0pOwogc3Rh dGljIHZvaWQgX2J0X2RlbGV0ZV9vcl9kZWR1cF9vbmVfcGFnZShSZWxhdGlvbiByZWwsIFJl bGF0aW9uIGhlYXBSZWwsCkBAIC0xMDgsNyArMTEwLDcgQEAgX2J0X2RvaW5zZXJ0KFJlbGF0 aW9uIHJlbCwgSW5kZXhUdXBsZSBpdHVwLAogCWJvb2wJCWNoZWNraW5ndW5pcXVlID0gKGNo ZWNrVW5pcXVlICE9IFVOSVFVRV9DSEVDS19OTyk7CiAKIAkvKiB3ZSBuZWVkIGFuIGluc2Vy dGlvbiBzY2FuIGtleSB0byBkbyBvdXIgc2VhcmNoLCBzbyBidWlsZCBvbmUgKi8KLQlpdHVw X2tleSA9IF9idF9ta3NjYW5rZXkocmVsLCBpdHVwKTsKKwlpdHVwX2tleSA9IF9idF9ta3Nj YW5rZXkocmVsLCBoZWFwUmVsLCBpdHVwKTsKIAogCWlmIChjaGVja2luZ3VuaXF1ZSkKIAl7 CkBAIC0xNjIsNyArMTY0LDcgQEAgc2VhcmNoOgogCSAqIHNlYXJjaGluZyBmcm9tIHRoZSBy b290IHBhZ2UuICBpbnNlcnRzdGF0ZS5idWYgd2lsbCBob2xkIGEgYnVmZmVyIHRoYXQKIAkg KiBpcyBsb2NrZWQgaW4gZXhjbHVzaXZlIG1vZGUgYWZ0ZXJ3YXJkcy4KIAkgKi8KLQlzdGFj ayA9IF9idF9zZWFyY2hfaW5zZXJ0KHJlbCwgJmluc2VydHN0YXRlKTsKKwlzdGFjayA9IF9i dF9zZWFyY2hfaW5zZXJ0KHJlbCwgaGVhcFJlbCwgJmluc2VydHN0YXRlKTsKIAogCS8qCiAJ ICogY2hlY2tpbmd1bmlxdWUgaW5zZXJ0cyBhcmUgbm90IGFsbG93ZWQgdG8gZ28gYWhlYWQg d2hlbiB0d28gdHVwbGVzIHdpdGgKQEAgLTI1NSw4ICsyNTcsOCBAQCBzZWFyY2g6CiAJCSAq LwogCQluZXdpdGVtb2ZmID0gX2J0X2ZpbmRpbnNlcnRsb2MocmVsLCAmaW5zZXJ0c3RhdGUs IGNoZWNraW5ndW5pcXVlLAogCQkJCQkJCQkJICAgaW5kZXhVbmNoYW5nZWQsIHN0YWNrLCBo ZWFwUmVsKTsKLQkJX2J0X2luc2VydG9ucGcocmVsLCBpdHVwX2tleSwgaW5zZXJ0c3RhdGUu YnVmLCBJbnZhbGlkQnVmZmVyLCBzdGFjaywKLQkJCQkJICAgaXR1cCwgaW5zZXJ0c3RhdGUu aXRlbXN6LCBuZXdpdGVtb2ZmLAorCQlfYnRfaW5zZXJ0b25wZyhyZWwsIGhlYXBSZWwsIGl0 dXBfa2V5LCBpbnNlcnRzdGF0ZS5idWYsIEludmFsaWRCdWZmZXIsCisJCQkJCSAgIHN0YWNr LCBpdHVwLCBpbnNlcnRzdGF0ZS5pdGVtc3osIG5ld2l0ZW1vZmYsCiAJCQkJCSAgIGluc2Vy dHN0YXRlLnBvc3RpbmdvZmYsIGZhbHNlKTsKIAl9CiAJZWxzZQpAQCAtMzEyLDcgKzMxNCw3 IEBAIHNlYXJjaDoKICAqIHNpbmNlIGVhY2ggcGVyLWJhY2tlbmQgY2FjaGUgd29uJ3Qgc3Rh eSB2YWxpZCBmb3IgbG9uZy4KICAqLwogc3RhdGljIEJUU3RhY2sKLV9idF9zZWFyY2hfaW5z ZXJ0KFJlbGF0aW9uIHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSkKK19idF9zZWFy Y2hfaW5zZXJ0KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQlRJbnNlcnRTdGF0 ZSBpbnNlcnRzdGF0ZSkKIHsKIAlBc3NlcnQoaW5zZXJ0c3RhdGUtPmJ1ZiA9PSBJbnZhbGlk QnVmZmVyKTsKIAlBc3NlcnQoIWluc2VydHN0YXRlLT5ib3VuZHNfdmFsaWQpOwpAQCAtMzc1 LDggKzM3Nyw4IEBAIF9idF9zZWFyY2hfaW5zZXJ0KFJlbGF0aW9uIHJlbCwgQlRJbnNlcnRT dGF0ZSBpbnNlcnRzdGF0ZSkKIAl9CiAKIAkvKiBDYW5ub3QgdXNlIG9wdGltaXphdGlvbiAt LSBkZXNjZW5kIHRyZWUsIHJldHVybiBwcm9wZXIgZGVzY2VudCBzdGFjayAqLwotCXJldHVy biBfYnRfc2VhcmNoKHJlbCwgaW5zZXJ0c3RhdGUtPml0dXBfa2V5LCAmaW5zZXJ0c3RhdGUt PmJ1ZiwgQlRfV1JJVEUsCi0JCQkJCSAgTlVMTCk7CisJcmV0dXJuIF9idF9zZWFyY2gocmVs LCBoZWFwcmVsLCBpbnNlcnRzdGF0ZS0+aXR1cF9rZXksICZpbnNlcnRzdGF0ZS0+YnVmLAor CQkJCQkgIEJUX1dSSVRFLCBOVUxMKTsKIH0KIAogLyoKQEAgLTg4NSw3ICs4ODcsNyBAQCBf YnRfZmluZGluc2VydGxvYyhSZWxhdGlvbiByZWwsCiAJCQkJCV9idF9jb21wYXJlKHJlbCwg aXR1cF9rZXksIHBhZ2UsIFBfSElLRVkpIDw9IDApCiAJCQkJCWJyZWFrOwogCi0JCQkJX2J0 X3N0ZXByaWdodChyZWwsIGluc2VydHN0YXRlLCBzdGFjayk7CisJCQkJX2J0X3N0ZXByaWdo dChyZWwsIGhlYXBSZWwsIGluc2VydHN0YXRlLCBzdGFjayk7CiAJCQkJLyogVXBkYXRlIGxv Y2FsIHN0YXRlIGFmdGVyIHN0ZXBwaW5nIHJpZ2h0ICovCiAJCQkJcGFnZSA9IEJ1ZmZlckdl dFBhZ2UoaW5zZXJ0c3RhdGUtPmJ1Zik7CiAJCQkJb3BhcXVlID0gQlRQYWdlR2V0T3BhcXVl KHBhZ2UpOwpAQCAtOTY5LDcgKzk3MSw3IEBAIF9idF9maW5kaW5zZXJ0bG9jKFJlbGF0aW9u IHJlbCwKIAkJCQlwZ19wcm5nX3VpbnQzMigmcGdfZ2xvYmFsX3Bybmdfc3RhdGUpIDw9IChQ R19VSU5UMzJfTUFYIC8gMTAwKSkKIAkJCQlicmVhazsKIAotCQkJX2J0X3N0ZXByaWdodChy ZWwsIGluc2VydHN0YXRlLCBzdGFjayk7CisJCQlfYnRfc3RlcHJpZ2h0KHJlbCwgaGVhcFJl bCwgaW5zZXJ0c3RhdGUsIHN0YWNrKTsKIAkJCS8qIFVwZGF0ZSBsb2NhbCBzdGF0ZSBhZnRl ciBzdGVwcGluZyByaWdodCAqLwogCQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoaW5zZXJ0c3Rh dGUtPmJ1Zik7CiAJCQlvcGFxdWUgPSBCVFBhZ2VHZXRPcGFxdWUocGFnZSk7CkBAIC0xMDIy LDcgKzEwMjQsNyBAQCBfYnRfZmluZGluc2VydGxvYyhSZWxhdGlvbiByZWwsCiAgKiBpbmRl eGVzLgogICovCiBzdGF0aWMgdm9pZAotX2J0X3N0ZXByaWdodChSZWxhdGlvbiByZWwsIEJU SW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUsIEJUU3RhY2sgc3RhY2spCitfYnRfc3RlcHJpZ2h0 KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRz dGF0ZSwgQlRTdGFjayBzdGFjaykKIHsKIAlQYWdlCQlwYWdlOwogCUJUUGFnZU9wYXF1ZSBv cGFxdWU7CkBAIC0xMDQ4LDcgKzEwNTAsNyBAQCBfYnRfc3RlcHJpZ2h0KFJlbGF0aW9uIHJl bCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSwgQlRTdGFjayBzdGFjaykKIAkJICovCiAJ CWlmIChQX0lOQ09NUExFVEVfU1BMSVQob3BhcXVlKSkKIAkJewotCQkJX2J0X2ZpbmlzaF9z cGxpdChyZWwsIHJidWYsIHN0YWNrKTsKKwkJCV9idF9maW5pc2hfc3BsaXQocmVsLCBoZWFw cmVsLCByYnVmLCBzdGFjayk7CiAJCQlyYnVmID0gSW52YWxpZEJ1ZmZlcjsKIAkJCWNvbnRp bnVlOwogCQl9CkBAIC0xMDk5LDYgKzExMDEsNyBAQCBfYnRfc3RlcHJpZ2h0KFJlbGF0aW9u IHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSwgQlRTdGFjayBzdGFjaykKICAqLwog c3RhdGljIHZvaWQKIF9idF9pbnNlcnRvbnBnKFJlbGF0aW9uIHJlbCwKKwkJCSAgIFJlbGF0 aW9uIGhlYXByZWwsCiAJCQkgICBCVFNjYW5JbnNlcnQgaXR1cF9rZXksCiAJCQkgICBCdWZm ZXIgYnVmLAogCQkJICAgQnVmZmVyIGNidWYsCkBAIC0xMjA5LDggKzEyMTIsOCBAQCBfYnRf aW5zZXJ0b25wZyhSZWxhdGlvbiByZWwsCiAJCUFzc2VydCghc3BsaXRfb25seV9wYWdlKTsK IAogCQkvKiBzcGxpdCB0aGUgYnVmZmVyIGludG8gbGVmdCBhbmQgcmlnaHQgaGFsdmVzICov Ci0JCXJidWYgPSBfYnRfc3BsaXQocmVsLCBpdHVwX2tleSwgYnVmLCBjYnVmLCBuZXdpdGVt b2ZmLCBpdGVtc3osIGl0dXAsCi0JCQkJCQkgb3JpZ2l0dXAsIG5wb3N0aW5nLCBwb3N0aW5n b2ZmKTsKKwkJcmJ1ZiA9IF9idF9zcGxpdChyZWwsIGhlYXByZWwsIGl0dXBfa2V5LCBidWYs IGNidWYsIG5ld2l0ZW1vZmYsIGl0ZW1zeiwKKwkJCQkJCSBpdHVwLCBvcmlnaXR1cCwgbnBv c3RpbmcsIHBvc3RpbmdvZmYpOwogCQlQcmVkaWNhdGVMb2NrUGFnZVNwbGl0KHJlbCwKIAkJ CQkJCQkgICBCdWZmZXJHZXRCbG9ja051bWJlcihidWYpLAogCQkJCQkJCSAgIEJ1ZmZlckdl dEJsb2NrTnVtYmVyKHJidWYpKTsKQEAgLTEyMzMsNyArMTIzNiw3IEBAIF9idF9pbnNlcnRv bnBnKFJlbGF0aW9uIHJlbCwKIAkJICogcGFnZS4KIAkJICotLS0tLS0tLS0tCiAJCSAqLwot CQlfYnRfaW5zZXJ0X3BhcmVudChyZWwsIGJ1ZiwgcmJ1Ziwgc3RhY2ssIGlzcm9vdCwgaXNv bmx5KTsKKwkJX2J0X2luc2VydF9wYXJlbnQocmVsLCBoZWFwcmVsLCBidWYsIHJidWYsIHN0 YWNrLCBpc3Jvb3QsIGlzb25seSk7CiAJfQogCWVsc2UKIAl7CkBAIC0xMjU0LDcgKzEyNTcs NyBAQCBfYnRfaW5zZXJ0b25wZyhSZWxhdGlvbiByZWwsCiAJCQlBc3NlcnQoIWlzbGVhZik7 CiAJCQlBc3NlcnQoQnVmZmVySXNWYWxpZChjYnVmKSk7CiAKLQkJCW1ldGFidWYgPSBfYnRf Z2V0YnVmKHJlbCwgQlRSRUVfTUVUQVBBR0UsIEJUX1dSSVRFKTsKKwkJCW1ldGFidWYgPSBf YnRfZ2V0YnVmKHJlbCwgaGVhcHJlbCwgQlRSRUVfTUVUQVBBR0UsIEJUX1dSSVRFKTsKIAkJ CW1ldGFwZyA9IEJ1ZmZlckdldFBhZ2UobWV0YWJ1Zik7CiAJCQltZXRhZCA9IEJUUGFnZUdl dE1ldGEobWV0YXBnKTsKIApAQCAtMTQxOCw3ICsxNDIxLDcgQEAgX2J0X2luc2VydG9ucGco UmVsYXRpb24gcmVsLAogCQkgKiBjYWxsIF9idF9nZXRyb290aGVpZ2h0IHdoaWxlIGhvbGRp bmcgYSBidWZmZXIgbG9jay4KIAkJICovCiAJCWlmIChCbG9ja051bWJlcklzVmFsaWQoYmxv Y2tjYWNoZSkgJiYKLQkJCV9idF9nZXRyb290aGVpZ2h0KHJlbCkgPj0gQlRSRUVfRkFTVFBB VEhfTUlOX0xFVkVMKQorCQkJX2J0X2dldHJvb3RoZWlnaHQocmVsLCBoZWFwcmVsKSA+PSBC VFJFRV9GQVNUUEFUSF9NSU5fTEVWRUwpCiAJCQlSZWxhdGlvblNldFRhcmdldEJsb2NrKHJl bCwgYmxvY2tjYWNoZSk7CiAJfQogCkBAIC0xNDU5LDggKzE0NjIsOCBAQCBfYnRfaW5zZXJ0 b25wZyhSZWxhdGlvbiByZWwsCiAgKgkJVGhlIHBpbiBhbmQgbG9jayBvbiBidWYgYXJlIG1h aW50YWluZWQuCiAgKi8KIHN0YXRpYyBCdWZmZXIKLV9idF9zcGxpdChSZWxhdGlvbiByZWws IEJUU2Nhbkluc2VydCBpdHVwX2tleSwgQnVmZmVyIGJ1ZiwgQnVmZmVyIGNidWYsCi0JCSAg T2Zmc2V0TnVtYmVyIG5ld2l0ZW1vZmYsIFNpemUgbmV3aXRlbXN6LCBJbmRleFR1cGxlIG5l d2l0ZW0sCitfYnRfc3BsaXQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCVFNj YW5JbnNlcnQgaXR1cF9rZXksIEJ1ZmZlciBidWYsCisJCSAgQnVmZmVyIGNidWYsIE9mZnNl dE51bWJlciBuZXdpdGVtb2ZmLCBTaXplIG5ld2l0ZW1zeiwgSW5kZXhUdXBsZSBuZXdpdGVt LAogCQkgIEluZGV4VHVwbGUgb3JpZ25ld2l0ZW0sIEluZGV4VHVwbGUgbnBvc3RpbmcsIHVp bnQxNiBwb3N0aW5nb2ZmKQogewogCUJ1ZmZlcgkJcmJ1ZjsKQEAgLTE3MTIsNyArMTcxNSw3 IEBAIF9idF9zcGxpdChSZWxhdGlvbiByZWwsIEJUU2Nhbkluc2VydCBpdHVwX2tleSwgQnVm ZmVyIGJ1ZiwgQnVmZmVyIGNidWYsCiAJICogd2F5IGJlY2F1c2UgaXQgYXZvaWRzIGFuIHVu bmVjZXNzYXJ5IFBBTklDIHdoZW4gZWl0aGVyIG9yaWdwYWdlIG9yIGl0cwogCSAqIGV4aXN0 aW5nIHNpYmxpbmcgcGFnZSBhcmUgY29ycnVwdC4KIAkgKi8KLQlyYnVmID0gX2J0X2dldGJ1 ZihyZWwsIFBfTkVXLCBCVF9XUklURSk7CisJcmJ1ZiA9IF9idF9nZXRidWYocmVsLCBoZWFw cmVsLCBQX05FVywgQlRfV1JJVEUpOwogCXJpZ2h0cGFnZSA9IEJ1ZmZlckdldFBhZ2UocmJ1 Zik7CiAJcmlnaHRwYWdlbnVtYmVyID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIocmJ1Zik7CiAJ LyogcmlnaHRwYWdlIHdhcyBpbml0aWFsaXplZCBieSBfYnRfZ2V0YnVmICovCkBAIC0xODg1 LDcgKzE4ODgsNyBAQCBfYnRfc3BsaXQoUmVsYXRpb24gcmVsLCBCVFNjYW5JbnNlcnQgaXR1 cF9rZXksIEJ1ZmZlciBidWYsIEJ1ZmZlciBjYnVmLAogCSAqLwogCWlmICghaXNyaWdodG1v c3QpCiAJewotCQlzYnVmID0gX2J0X2dldGJ1ZihyZWwsIG9vcGFxdWUtPmJ0cG9fbmV4dCwg QlRfV1JJVEUpOworCQlzYnVmID0gX2J0X2dldGJ1ZihyZWwsIGhlYXByZWwsIG9vcGFxdWUt PmJ0cG9fbmV4dCwgQlRfV1JJVEUpOwogCQlzcGFnZSA9IEJ1ZmZlckdldFBhZ2Uoc2J1Zik7 CiAJCXNvcGFxdWUgPSBCVFBhZ2VHZXRPcGFxdWUoc3BhZ2UpOwogCQlpZiAoc29wYXF1ZS0+ YnRwb19wcmV2ICE9IG9yaWdwYWdlbnVtYmVyKQpAQCAtMjA5Miw2ICsyMDk1LDcgQEAgX2J0 X3NwbGl0KFJlbGF0aW9uIHJlbCwgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5LCBCdWZmZXIgYnVm LCBCdWZmZXIgY2J1ZiwKICAqLwogc3RhdGljIHZvaWQKIF9idF9pbnNlcnRfcGFyZW50KFJl bGF0aW9uIHJlbCwKKwkJCQkgIFJlbGF0aW9uIGhlYXByZWwsCiAJCQkJICBCdWZmZXIgYnVm LAogCQkJCSAgQnVmZmVyIHJidWYsCiAJCQkJICBCVFN0YWNrIHN0YWNrLApAQCAtMjExOCw3 ICsyMTIyLDcgQEAgX2J0X2luc2VydF9wYXJlbnQoUmVsYXRpb24gcmVsLAogCQlBc3NlcnQo c3RhY2sgPT0gTlVMTCk7CiAJCUFzc2VydChpc29ubHkpOwogCQkvKiBjcmVhdGUgYSBuZXcg cm9vdCBub2RlIGFuZCB1cGRhdGUgdGhlIG1ldGFwYWdlICovCi0JCXJvb3RidWYgPSBfYnRf bmV3cm9vdChyZWwsIGJ1ZiwgcmJ1Zik7CisJCXJvb3RidWYgPSBfYnRfbmV3cm9vdChyZWws IGhlYXByZWwsIGJ1ZiwgcmJ1Zik7CiAJCS8qIHJlbGVhc2UgdGhlIHNwbGl0IGJ1ZmZlcnMg Ki8KIAkJX2J0X3JlbGJ1ZihyZWwsIHJvb3RidWYpOwogCQlfYnRfcmVsYnVmKHJlbCwgcmJ1 Zik7CkBAIC0yMTU3LDcgKzIxNjEsOCBAQCBfYnRfaW5zZXJ0X3BhcmVudChSZWxhdGlvbiBy ZWwsCiAJCQkJCSBCbG9ja051bWJlcklzVmFsaWQoUmVsYXRpb25HZXRUYXJnZXRCbG9jayhy ZWwpKSkpOwogCiAJCQkvKiBGaW5kIHRoZSBsZWZ0bW9zdCBwYWdlIGF0IHRoZSBuZXh0IGxl dmVsIHVwICovCi0JCQlwYnVmID0gX2J0X2dldF9lbmRwb2ludChyZWwsIG9wYXF1ZS0+YnRw b19sZXZlbCArIDEsIGZhbHNlLCBOVUxMKTsKKwkJCXBidWYgPSBfYnRfZ2V0X2VuZHBvaW50 KHJlbCwgaGVhcHJlbCwgb3BhcXVlLT5idHBvX2xldmVsICsgMSwgZmFsc2UsCisJCQkJCQkJ CQlOVUxMKTsKIAkJCS8qIFNldCB1cCBhIHBob255IHN0YWNrIGVudHJ5IHBvaW50aW5nIHRo ZXJlICovCiAJCQlzdGFjayA9ICZmYWtlc3RhY2s7CiAJCQlzdGFjay0+YnRzX2Jsa25vID0g QnVmZmVyR2V0QmxvY2tOdW1iZXIocGJ1Zik7CkBAIC0yMTgzLDcgKzIxODgsNyBAQCBfYnRf aW5zZXJ0X3BhcmVudChSZWxhdGlvbiByZWwsCiAJCSAqIG5ldyBkb3dubGluayB3aWxsIGJl IGluc2VydGVkIGF0IHRoZSBjb3JyZWN0IG9mZnNldC4gRXZlbiBidWYncwogCQkgKiBwYXJl bnQgbWF5IGhhdmUgY2hhbmdlZC4KIAkJICovCi0JCXBidWYgPSBfYnRfZ2V0c3RhY2tidWYo cmVsLCBzdGFjaywgYmtudW0pOworCQlwYnVmID0gX2J0X2dldHN0YWNrYnVmKHJlbCwgaGVh cHJlbCwgc3RhY2ssIGJrbnVtKTsKIAogCQkvKgogCQkgKiBVbmxvY2sgdGhlIHJpZ2h0IGNo aWxkLiAgVGhlIGxlZnQgY2hpbGQgd2lsbCBiZSB1bmxvY2tlZCBpbgpAQCAtMjIwNyw3ICsy MjEyLDcgQEAgX2J0X2luc2VydF9wYXJlbnQoUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJIFJl bGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCksIGJrbnVtLCByYmtudW0pKSk7CiAKIAkJLyog UmVjdXJzaXZlbHkgaW5zZXJ0IGludG8gdGhlIHBhcmVudCAqLwotCQlfYnRfaW5zZXJ0b25w ZyhyZWwsIE5VTEwsIHBidWYsIGJ1Ziwgc3RhY2stPmJ0c19wYXJlbnQsCisJCV9idF9pbnNl cnRvbnBnKHJlbCwgaGVhcHJlbCwgTlVMTCwgcGJ1ZiwgYnVmLCBzdGFjay0+YnRzX3BhcmVu dCwKIAkJCQkJICAgbmV3X2l0ZW0sIE1BWEFMSUdOKEluZGV4VHVwbGVTaXplKG5ld19pdGVt KSksCiAJCQkJCSAgIHN0YWNrLT5idHNfb2Zmc2V0ICsgMSwgMCwgaXNvbmx5KTsKIApAQCAt MjIyNyw3ICsyMjMyLDcgQEAgX2J0X2luc2VydF9wYXJlbnQoUmVsYXRpb24gcmVsLAogICog YW5kIHVucGlubmVkLgogICovCiB2b2lkCi1fYnRfZmluaXNoX3NwbGl0KFJlbGF0aW9uIHJl bCwgQnVmZmVyIGxidWYsIEJUU3RhY2sgc3RhY2spCitfYnRfZmluaXNoX3NwbGl0KFJlbGF0 aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQnVmZmVyIGxidWYsIEJUU3RhY2sgc3RhY2sp CiB7CiAJUGFnZQkJbHBhZ2UgPSBCdWZmZXJHZXRQYWdlKGxidWYpOwogCUJUUGFnZU9wYXF1 ZSBscGFnZW9wID0gQlRQYWdlR2V0T3BhcXVlKGxwYWdlKTsKQEAgLTIyNDAsNyArMjI0NSw3 IEBAIF9idF9maW5pc2hfc3BsaXQoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGJ1ZiwgQlRTdGFj ayBzdGFjaykKIAlBc3NlcnQoUF9JTkNPTVBMRVRFX1NQTElUKGxwYWdlb3ApKTsKIAogCS8q IExvY2sgcmlnaHQgc2libGluZywgdGhlIG9uZSBtaXNzaW5nIHRoZSBkb3dubGluayAqLwot CXJidWYgPSBfYnRfZ2V0YnVmKHJlbCwgbHBhZ2VvcC0+YnRwb19uZXh0LCBCVF9XUklURSk7 CisJcmJ1ZiA9IF9idF9nZXRidWYocmVsLCBoZWFwcmVsLCBscGFnZW9wLT5idHBvX25leHQs IEJUX1dSSVRFKTsKIAlycGFnZSA9IEJ1ZmZlckdldFBhZ2UocmJ1Zik7CiAJcnBhZ2VvcCA9 IEJUUGFnZUdldE9wYXF1ZShycGFnZSk7CiAKQEAgLTIyNTIsNyArMjI1Nyw3IEBAIF9idF9m aW5pc2hfc3BsaXQoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGJ1ZiwgQlRTdGFjayBzdGFjaykK IAkJQlRNZXRhUGFnZURhdGEgKm1ldGFkOwogCiAJCS8qIGFjcXVpcmUgbG9jayBvbiB0aGUg bWV0YXBhZ2UgKi8KLQkJbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFH RSwgQlRfV1JJVEUpOworCQltZXRhYnVmID0gX2J0X2dldGJ1ZihyZWwsIGhlYXByZWwsIEJU UkVFX01FVEFQQUdFLCBCVF9XUklURSk7CiAJCW1ldGFwZyA9IEJ1ZmZlckdldFBhZ2UobWV0 YWJ1Zik7CiAJCW1ldGFkID0gQlRQYWdlR2V0TWV0YShtZXRhcGcpOwogCkBAIC0yMjY5LDcg KzIyNzQsNyBAQCBfYnRfZmluaXNoX3NwbGl0KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxidWYs IEJUU3RhY2sgc3RhY2spCiAJZWxvZyhERUJVRzEsICJmaW5pc2hpbmcgaW5jb21wbGV0ZSBz cGxpdCBvZiAldS8ldSIsCiAJCSBCdWZmZXJHZXRCbG9ja051bWJlcihsYnVmKSwgQnVmZmVy R2V0QmxvY2tOdW1iZXIocmJ1ZikpOwogCi0JX2J0X2luc2VydF9wYXJlbnQocmVsLCBsYnVm LCByYnVmLCBzdGFjaywgd2Fzcm9vdCwgd2Fzb25seSk7CisJX2J0X2luc2VydF9wYXJlbnQo cmVsLCBoZWFwcmVsLCBsYnVmLCByYnVmLCBzdGFjaywgd2Fzcm9vdCwgd2Fzb25seSk7CiB9 CiAKIC8qCkBAIC0yMzA0LDcgKzIzMDksNyBAQCBfYnRfZmluaXNoX3NwbGl0KFJlbGF0aW9u IHJlbCwgQnVmZmVyIGxidWYsIEJUU3RhY2sgc3RhY2spCiAgKgkJb2Zmc2V0IG51bWJlciBi dHNfb2Zmc2V0ICsgMS4KICAqLwogQnVmZmVyCi1fYnRfZ2V0c3RhY2tidWYoUmVsYXRpb24g cmVsLCBCVFN0YWNrIHN0YWNrLCBCbG9ja051bWJlciBjaGlsZCkKK19idF9nZXRzdGFja2J1 ZihSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJUU3RhY2sgc3RhY2ssIEJsb2Nr TnVtYmVyIGNoaWxkKQogewogCUJsb2NrTnVtYmVyIGJsa25vOwogCU9mZnNldE51bWJlciBz dGFydDsKQEAgLTIzMTgsMTMgKzIzMjMsMTMgQEAgX2J0X2dldHN0YWNrYnVmKFJlbGF0aW9u IHJlbCwgQlRTdGFjayBzdGFjaywgQmxvY2tOdW1iZXIgY2hpbGQpCiAJCVBhZ2UJCXBhZ2U7 CiAJCUJUUGFnZU9wYXF1ZSBvcGFxdWU7CiAKLQkJYnVmID0gX2J0X2dldGJ1ZihyZWwsIGJs a25vLCBCVF9XUklURSk7CisJCWJ1ZiA9IF9idF9nZXRidWYocmVsLCBoZWFwcmVsLCBibGtu bywgQlRfV1JJVEUpOwogCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWYpOwogCQlvcGFxdWUg PSBCVFBhZ2VHZXRPcGFxdWUocGFnZSk7CiAKIAkJaWYgKFBfSU5DT01QTEVURV9TUExJVChv cGFxdWUpKQogCQl7Ci0JCQlfYnRfZmluaXNoX3NwbGl0KHJlbCwgYnVmLCBzdGFjay0+YnRz X3BhcmVudCk7CisJCQlfYnRfZmluaXNoX3NwbGl0KHJlbCwgaGVhcHJlbCwgYnVmLCBzdGFj ay0+YnRzX3BhcmVudCk7CiAJCQljb250aW51ZTsKIAkJfQogCkBAIC0yNDI4LDcgKzI0MzMs NyBAQCBfYnRfZ2V0c3RhY2tidWYoUmVsYXRpb24gcmVsLCBCVFN0YWNrIHN0YWNrLCBCbG9j a051bWJlciBjaGlsZCkKICAqCQlsYnVmLCByYnVmICYgcm9vdGJ1Zi4KICAqLwogc3RhdGlj IEJ1ZmZlcgotX2J0X25ld3Jvb3QoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGJ1ZiwgQnVmZmVy IHJidWYpCitfYnRfbmV3cm9vdChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJ1 ZmZlciBsYnVmLCBCdWZmZXIgcmJ1ZikKIHsKIAlCdWZmZXIJCXJvb3RidWY7CiAJUGFnZQkJ bHBhZ2UsCkBAIC0yNDU0LDEyICsyNDU5LDEyIEBAIF9idF9uZXdyb290KFJlbGF0aW9uIHJl bCwgQnVmZmVyIGxidWYsIEJ1ZmZlciByYnVmKQogCWxvcGFxdWUgPSBCVFBhZ2VHZXRPcGFx dWUobHBhZ2UpOwogCiAJLyogZ2V0IGEgbmV3IHJvb3QgcGFnZSAqLwotCXJvb3RidWYgPSBf YnRfZ2V0YnVmKHJlbCwgUF9ORVcsIEJUX1dSSVRFKTsKKwlyb290YnVmID0gX2J0X2dldGJ1 ZihyZWwsIGhlYXByZWwsIFBfTkVXLCBCVF9XUklURSk7CiAJcm9vdHBhZ2UgPSBCdWZmZXJH ZXRQYWdlKHJvb3RidWYpOwogCXJvb3RibGtudW0gPSBCdWZmZXJHZXRCbG9ja051bWJlcihy b290YnVmKTsKIAogCS8qIGFjcXVpcmUgbG9jayBvbiB0aGUgbWV0YXBhZ2UgKi8KLQltZXRh YnVmID0gX2J0X2dldGJ1ZihyZWwsIEJUUkVFX01FVEFQQUdFLCBCVF9XUklURSk7CisJbWV0 YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBoZWFwcmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRfV1JJ VEUpOwogCW1ldGFwZyA9IEJ1ZmZlckdldFBhZ2UobWV0YWJ1Zik7CiAJbWV0YWQgPSBCVFBh Z2VHZXRNZXRhKG1ldGFwZyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9u YnRyZWUvbmJ0cGFnZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRwYWdlLmMK aW5kZXggM2ZlZWUyOGQxOS4uMTUxYWQzN2E1NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL25idHJlZS9uYnRwYWdlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJl ZS9uYnRwYWdlLmMKQEAgLTM4LDI1ICszOCwyNCBAQAogI2luY2x1ZGUgInV0aWxzL3NuYXBt Z3IuaCIKIAogc3RhdGljIEJUTWV0YVBhZ2VEYXRhICpfYnRfZ2V0bWV0YShSZWxhdGlvbiBy ZWwsIEJ1ZmZlciBtZXRhYnVmKTsKLXN0YXRpYyB2b2lkIF9idF9sb2dfcmV1c2VfcGFnZShS ZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGJsa25vLAorc3RhdGljIHZvaWQgX2J0X2xvZ19y ZXVzZV9wYWdlKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQmxvY2tOdW1iZXIg Ymxrbm8sCiAJCQkJCQkJICAgRnVsbFRyYW5zYWN0aW9uSWQgc2FmZXhpZCk7Ci1zdGF0aWMg dm9pZCBfYnRfZGVsaXRlbXNfZGVsZXRlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKK3N0 YXRpYyB2b2lkIF9idF9kZWxpdGVtc19kZWxldGUoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBo ZWFwcmVsLCBCdWZmZXIgYnVmLAogCQkJCQkJCQlUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29u ZmxpY3RIb3Jpem9uLAogCQkJCQkJCQlPZmZzZXROdW1iZXIgKmRlbGV0YWJsZSwgaW50IG5k ZWxldGFibGUsCiAJCQkJCQkJCUJUVmFjdXVtUG9zdGluZyAqdXBkYXRhYmxlLCBpbnQgbnVw ZGF0YWJsZSk7CiBzdGF0aWMgY2hhciAqX2J0X2RlbGl0ZW1zX3VwZGF0ZShCVFZhY3V1bVBv c3RpbmcgKnVwZGF0YWJsZSwgaW50IG51cGRhdGFibGUsCiAJCQkJCQkJCSBPZmZzZXROdW1i ZXIgKnVwZGF0ZWRvZmZzZXRzLAogCQkJCQkJCQkgU2l6ZSAqdXBkYXRlZGJ1ZmxlbiwgYm9v bCBuZWVkc3dhbCk7Ci1zdGF0aWMgYm9vbCBfYnRfbWFya19wYWdlX2hhbGZkZWFkKFJlbGF0 aW9uIHJlbCwgQnVmZmVyIGxlYWZidWYsCi0JCQkJCQkJCSAgIEJUU3RhY2sgc3RhY2spOwor c3RhdGljIGJvb2wgX2J0X21hcmtfcGFnZV9oYWxmZGVhZChSZWxhdGlvbiByZWwsIFJlbGF0 aW9uIGhlYXByZWwsCisJCQkJCQkJCSAgIEJ1ZmZlciBsZWFmYnVmLCBCVFN0YWNrIHN0YWNr KTsKIHN0YXRpYyBib29sIF9idF91bmxpbmtfaGFsZmRlYWRfcGFnZShSZWxhdGlvbiByZWws IEJ1ZmZlciBsZWFmYnVmLAogCQkJCQkJCQkJIEJsb2NrTnVtYmVyIHNjYW5ibGtubywKIAkJ CQkJCQkJCSBib29sICpyaWdodHNpYl9lbXB0eSwKIAkJCQkJCQkJCSBCVFZhY1N0YXRlICp2 c3RhdGUpOwotc3RhdGljIGJvb2wgX2J0X2xvY2tfc3VidHJlZV9wYXJlbnQoUmVsYXRpb24g cmVsLCBCbG9ja051bWJlciBjaGlsZCwKLQkJCQkJCQkJCUJUU3RhY2sgc3RhY2ssCi0JCQkJ CQkJCQlCdWZmZXIgKnN1YnRyZWVwYXJlbnQsCi0JCQkJCQkJCQlPZmZzZXROdW1iZXIgKnBv ZmZzZXQsCitzdGF0aWMgYm9vbCBfYnRfbG9ja19zdWJ0cmVlX3BhcmVudChSZWxhdGlvbiBy ZWwsIFJlbGF0aW9uIGhlYXByZWwsCisJCQkJCQkJCQlCbG9ja051bWJlciBjaGlsZCwgQlRT dGFjayBzdGFjaywKKwkJCQkJCQkJCUJ1ZmZlciAqc3VidHJlZXBhcmVudCwgT2Zmc2V0TnVt YmVyICpwb2Zmc2V0LAogCQkJCQkJCQkJQmxvY2tOdW1iZXIgKnRvcHBhcmVudCwKIAkJCQkJ CQkJCUJsb2NrTnVtYmVyICp0b3BwYXJlbnRyaWdodHNpYik7CiBzdGF0aWMgdm9pZCBfYnRf cGVuZGluZ2ZzbV9hZGQoQlRWYWNTdGF0ZSAqdnN0YXRlLCBCbG9ja051bWJlciB0YXJnZXQs CkBAIC0xNzgsNyArMTc3LDcgQEAgX2J0X2dldG1ldGEoUmVsYXRpb24gcmVsLCBCdWZmZXIg bWV0YWJ1ZikKICAqIGluZGV4IHR1cGxlcyBuZWVkZWQgdG8gYmUgZGVsZXRlZC4KICAqLwog Ym9vbAotX2J0X3ZhY3V1bV9uZWVkc19jbGVhbnVwKFJlbGF0aW9uIHJlbCkKK19idF92YWN1 dW1fbmVlZHNfY2xlYW51cChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwpCiB7CiAJ QnVmZmVyCQltZXRhYnVmOwogCVBhZ2UJCW1ldGFwZzsKQEAgLTE5MSw3ICsxOTAsNyBAQCBf YnRfdmFjdXVtX25lZWRzX2NsZWFudXAoUmVsYXRpb24gcmVsKQogCSAqCiAJICogTm90ZSB0 aGF0IHdlIGRlbGliZXJhdGVseSBhdm9pZCB1c2luZyBjYWNoZWQgdmVyc2lvbiBvZiBtZXRh cGFnZSBoZXJlLgogCSAqLwotCW1ldGFidWYgPSBfYnRfZ2V0YnVmKHJlbCwgQlRSRUVfTUVU QVBBR0UsIEJUX1JFQUQpOworCW1ldGFidWYgPSBfYnRfZ2V0YnVmKHJlbCwgaGVhcHJlbCwg QlRSRUVfTUVUQVBBR0UsIEJUX1JFQUQpOwogCW1ldGFwZyA9IEJ1ZmZlckdldFBhZ2UobWV0 YWJ1Zik7CiAJbWV0YWQgPSBCVFBhZ2VHZXRNZXRhKG1ldGFwZyk7CiAJYnRtX3ZlcnNpb24g PSBtZXRhZC0+YnRtX3ZlcnNpb247CkBAIC0yMzEsNyArMjMwLDcgQEAgX2J0X3ZhY3V1bV9u ZWVkc19jbGVhbnVwKFJlbGF0aW9uIHJlbCkKICAqIGZpbmFsaXplZC4KICAqLwogdm9pZAot X2J0X3NldF9jbGVhbnVwX2luZm8oUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBudW1fZGVs cGFnZXMpCitfYnRfc2V0X2NsZWFudXBfaW5mbyhSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhl YXByZWwsIEJsb2NrTnVtYmVyIG51bV9kZWxwYWdlcykKIHsKIAlCdWZmZXIJCW1ldGFidWY7 CiAJUGFnZQkJbWV0YXBnOwpAQCAtMjU1LDcgKzI1NCw3IEBAIF9idF9zZXRfY2xlYW51cF9p bmZvKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgbnVtX2RlbHBhZ2VzKQogCSAqIG5vIGxv bmdlciB1c2VkIGFzIG9mIFBvc3RncmVTUUwgMTQuICBXZSBzZXQgaXQgdG8gLTEuMCBvbiBy ZXdyaXRlLCBqdXN0CiAJICogdG8gYmUgY29uc2lzdGVudC4KIAkgKi8KLQltZXRhYnVmID0g X2J0X2dldGJ1ZihyZWwsIEJUUkVFX01FVEFQQUdFLCBCVF9SRUFEKTsKKwltZXRhYnVmID0g X2J0X2dldGJ1ZihyZWwsIGhlYXByZWwsIEJUUkVFX01FVEFQQUdFLCBCVF9SRUFEKTsKIAlt ZXRhcGcgPSBCdWZmZXJHZXRQYWdlKG1ldGFidWYpOwogCW1ldGFkID0gQlRQYWdlR2V0TWV0 YShtZXRhcGcpOwogCkBAIC0zNDAsNyArMzM5LDcgQEAgX2J0X3NldF9jbGVhbnVwX2luZm8o UmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBudW1fZGVscGFnZXMpCiAgKgkJVGhlIG1ldGFk YXRhIHBhZ2UgaXMgbm90IGxvY2tlZCBvciBwaW5uZWQgb24gZXhpdC4KICAqLwogQnVmZmVy Ci1fYnRfZ2V0cm9vdChSZWxhdGlvbiByZWwsIGludCBhY2Nlc3MpCitfYnRfZ2V0cm9vdChS ZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIGludCBhY2Nlc3MpCiB7CiAJQnVmZmVy CQltZXRhYnVmOwogCUJ1ZmZlcgkJcm9vdGJ1ZjsKQEAgLTM3MCw3ICszNjksNyBAQCBfYnRf Z2V0cm9vdChSZWxhdGlvbiByZWwsIGludCBhY2Nlc3MpCiAJCUFzc2VydChyb290Ymxrbm8g IT0gUF9OT05FKTsKIAkJcm9vdGxldmVsID0gbWV0YWQtPmJ0bV9mYXN0bGV2ZWw7CiAKLQkJ cm9vdGJ1ZiA9IF9idF9nZXRidWYocmVsLCByb290Ymxrbm8sIEJUX1JFQUQpOworCQlyb290 YnVmID0gX2J0X2dldGJ1ZihyZWwsIGhlYXByZWwsIHJvb3RibGtubywgQlRfUkVBRCk7CiAJ CXJvb3RwYWdlID0gQnVmZmVyR2V0UGFnZShyb290YnVmKTsKIAkJcm9vdG9wYXF1ZSA9IEJU UGFnZUdldE9wYXF1ZShyb290cGFnZSk7CiAKQEAgLTM5Niw3ICszOTUsNyBAQCBfYnRfZ2V0 cm9vdChSZWxhdGlvbiByZWwsIGludCBhY2Nlc3MpCiAJCXJlbC0+cmRfYW1jYWNoZSA9IE5V TEw7CiAJfQogCi0JbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFHRSwg QlRfUkVBRCk7CisJbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBoZWFwcmVsLCBCVFJFRV9N RVRBUEFHRSwgQlRfUkVBRCk7CiAJbWV0YWQgPSBfYnRfZ2V0bWV0YShyZWwsIG1ldGFidWYp OwogCiAJLyogaWYgbm8gcm9vdCBwYWdlIGluaXRpYWxpemVkIHlldCwgZG8gaXQgKi8KQEAg LTQyOSw3ICs0MjgsNyBAQCBfYnRfZ2V0cm9vdChSZWxhdGlvbiByZWwsIGludCBhY2Nlc3Mp CiAJCQkgKiB0byBvcHRpbWl6ZSB0aGlzIGNhc2UuKQogCQkJICovCiAJCQlfYnRfcmVsYnVm KHJlbCwgbWV0YWJ1Zik7Ci0JCQlyZXR1cm4gX2J0X2dldHJvb3QocmVsLCBhY2Nlc3MpOwor CQkJcmV0dXJuIF9idF9nZXRyb290KHJlbCwgaGVhcHJlbCwgYWNjZXNzKTsKIAkJfQogCiAJ CS8qCkBAIC00MzcsNyArNDM2LDcgQEAgX2J0X2dldHJvb3QoUmVsYXRpb24gcmVsLCBpbnQg YWNjZXNzKQogCQkgKiB0aGUgbmV3IHJvb3QgcGFnZS4gIFNpbmNlIHRoaXMgaXMgdGhlIGZp cnN0IHBhZ2UgaW4gdGhlIHRyZWUsIGl0J3MKIAkJICogYSBsZWFmIGFzIHdlbGwgYXMgdGhl IHJvb3QuCiAJCSAqLwotCQlyb290YnVmID0gX2J0X2dldGJ1ZihyZWwsIFBfTkVXLCBCVF9X UklURSk7CisJCXJvb3RidWYgPSBfYnRfZ2V0YnVmKHJlbCwgaGVhcHJlbCwgUF9ORVcsIEJU X1dSSVRFKTsKIAkJcm9vdGJsa25vID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIocm9vdGJ1Zik7 CiAJCXJvb3RwYWdlID0gQnVmZmVyR2V0UGFnZShyb290YnVmKTsKIAkJcm9vdG9wYXF1ZSA9 IEJUUGFnZUdldE9wYXF1ZShyb290cGFnZSk7CkBAIC01NzQsNyArNTczLDcgQEAgX2J0X2dl dHJvb3QoUmVsYXRpb24gcmVsLCBpbnQgYWNjZXNzKQogICogbW92aW5nIHRvIHRoZSByb290 IC0tLSB0aGF0J2QgZGVhZGxvY2sgYWdhaW5zdCBhbnkgY29uY3VycmVudCByb290IHNwbGl0 LikKICAqLwogQnVmZmVyCi1fYnRfZ2V0dHJ1ZXJvb3QoUmVsYXRpb24gcmVsKQorX2J0X2dl dHRydWVyb290KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCkKIHsKIAlCdWZmZXIJ CW1ldGFidWY7CiAJUGFnZQkJbWV0YXBnOwpAQCAtNTk2LDcgKzU5NSw3IEBAIF9idF9nZXR0 cnVlcm9vdChSZWxhdGlvbiByZWwpCiAJCXBmcmVlKHJlbC0+cmRfYW1jYWNoZSk7CiAJcmVs LT5yZF9hbWNhY2hlID0gTlVMTDsKIAotCW1ldGFidWYgPSBfYnRfZ2V0YnVmKHJlbCwgQlRS RUVfTUVUQVBBR0UsIEJUX1JFQUQpOworCW1ldGFidWYgPSBfYnRfZ2V0YnVmKHJlbCwgaGVh cHJlbCwgQlRSRUVfTUVUQVBBR0UsIEJUX1JFQUQpOwogCW1ldGFwZyA9IEJ1ZmZlckdldFBh Z2UobWV0YWJ1Zik7CiAJbWV0YW9wYXF1ZSA9IEJUUGFnZUdldE9wYXF1ZShtZXRhcGcpOwog CW1ldGFkID0gQlRQYWdlR2V0TWV0YShtZXRhcGcpOwpAQCAtNjY5LDcgKzY2OCw3IEBAIF9i dF9nZXR0cnVlcm9vdChSZWxhdGlvbiByZWwpCiAgKgkJYWJvdXQgdXBkYXRpbmcgcHJldmlv dXNseSBjYWNoZWQgZGF0YS4KICAqLwogaW50Ci1fYnRfZ2V0cm9vdGhlaWdodChSZWxhdGlv biByZWwpCitfYnRfZ2V0cm9vdGhlaWdodChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXBy ZWwpCiB7CiAJQlRNZXRhUGFnZURhdGEgKm1ldGFkOwogCkBAIC02NzcsNyArNjc2LDcgQEAg X2J0X2dldHJvb3RoZWlnaHQoUmVsYXRpb24gcmVsKQogCXsKIAkJQnVmZmVyCQltZXRhYnVm OwogCi0JCW1ldGFidWYgPSBfYnRfZ2V0YnVmKHJlbCwgQlRSRUVfTUVUQVBBR0UsIEJUX1JF QUQpOworCQltZXRhYnVmID0gX2J0X2dldGJ1ZihyZWwsIGhlYXByZWwsIEJUUkVFX01FVEFQ QUdFLCBCVF9SRUFEKTsKIAkJbWV0YWQgPSBfYnRfZ2V0bWV0YShyZWwsIG1ldGFidWYpOwog CiAJCS8qCkBAIC03MzMsNyArNzMyLDcgQEAgX2J0X2dldHJvb3RoZWlnaHQoUmVsYXRpb24g cmVsKQogICoJCXBnX3VwZ3JhZGUnZCBmcm9tIFBvc3RncmVzIDEyLgogICovCiB2b2lkCi1f YnRfbWV0YXZlcnNpb24oUmVsYXRpb24gcmVsLCBib29sICpoZWFwa2V5c3BhY2UsIGJvb2wg KmFsbGVxdWFsaW1hZ2UpCitfYnRfbWV0YXZlcnNpb24oUmVsYXRpb24gcmVsLCBSZWxhdGlv biBoZWFwcmVsLCBib29sICpoZWFwa2V5c3BhY2UsIGJvb2wgKmFsbGVxdWFsaW1hZ2UpCiB7 CiAJQlRNZXRhUGFnZURhdGEgKm1ldGFkOwogCkBAIC03NDEsNyArNzQwLDcgQEAgX2J0X21l dGF2ZXJzaW9uKFJlbGF0aW9uIHJlbCwgYm9vbCAqaGVhcGtleXNwYWNlLCBib29sICphbGxl cXVhbGltYWdlKQogCXsKIAkJQnVmZmVyCQltZXRhYnVmOwogCi0JCW1ldGFidWYgPSBfYnRf Z2V0YnVmKHJlbCwgQlRSRUVfTUVUQVBBR0UsIEJUX1JFQUQpOworCQltZXRhYnVmID0gX2J0 X2dldGJ1ZihyZWwsIGhlYXByZWwsIEJUUkVFX01FVEFQQUdFLCBCVF9SRUFEKTsKIAkJbWV0 YWQgPSBfYnRfZ2V0bWV0YShyZWwsIG1ldGFidWYpOwogCiAJCS8qCkBAIC04MjUsNyArODI0 LDggQEAgX2J0X2NoZWNrcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYpCiAgKiBMb2cg dGhlIHJldXNlIG9mIGEgcGFnZSBmcm9tIHRoZSBGU00uCiAgKi8KIHN0YXRpYyB2b2lkCi1f YnRfbG9nX3JldXNlX3BhZ2UoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBibGtubywgRnVs bFRyYW5zYWN0aW9uSWQgc2FmZXhpZCkKK19idF9sb2dfcmV1c2VfcGFnZShSZWxhdGlvbiBy ZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJsb2NrTnVtYmVyIGJsa25vLAorCQkJCSAgIEZ1bGxU cmFuc2FjdGlvbklkIHNhZmV4aWQpCiB7CiAJeGxfYnRyZWVfcmV1c2VfcGFnZSB4bHJlY19y ZXVzZTsKIApAQCAtODM2LDYgKzgzNiw3IEBAIF9idF9sb2dfcmV1c2VfcGFnZShSZWxhdGlv biByZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBGdWxsVHJhbnNhY3Rpb25JZCBzYWZleGlkKQog CSAqLwogCiAJLyogWExPRyBzdHVmZiAqLworCXhscmVjX3JldXNlLmlzQ2F0YWxvZ1JlbCA9 IFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcoaGVhcHJlbCk7CiAJeGxy ZWNfcmV1c2UubG9jYXRvciA9IHJlbC0+cmRfbG9jYXRvcjsKIAl4bHJlY19yZXVzZS5ibG9j ayA9IGJsa25vOwogCXhscmVjX3JldXNlLnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uID0gc2Fm ZXhpZDsKQEAgLTg2OCw3ICs4NjksNyBAQCBfYnRfbG9nX3JldXNlX3BhZ2UoUmVsYXRpb24g cmVsLCBCbG9ja051bWJlciBibGtubywgRnVsbFRyYW5zYWN0aW9uSWQgc2FmZXhpZCkKICAq CQlhcyBfYnRfbG9ja2J1ZigpLgogICovCiBCdWZmZXIKLV9idF9nZXRidWYoUmVsYXRpb24g cmVsLCBCbG9ja051bWJlciBibGtubywgaW50IGFjY2VzcykKK19idF9nZXRidWYoUmVsYXRp b24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCbG9ja051bWJlciBibGtubywgaW50IGFjY2Vz cykKIHsKIAlCdWZmZXIJCWJ1ZjsKIApAQCAtOTQzLDcgKzk0NCw3IEBAIF9idF9nZXRidWYo UmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBibGtubywgaW50IGFjY2VzcykKIAkJCQkJICog dGhhbiBzYWZleGlkIHZhbHVlCiAJCQkJCSAqLwogCQkJCQlpZiAoWExvZ1N0YW5kYnlJbmZv QWN0aXZlKCkgJiYgUmVsYXRpb25OZWVkc1dBTChyZWwpKQotCQkJCQkJX2J0X2xvZ19yZXVz ZV9wYWdlKHJlbCwgYmxrbm8sCisJCQkJCQlfYnRfbG9nX3JldXNlX3BhZ2UocmVsLCBoZWFw cmVsLCBibGtubywKIAkJCQkJCQkJCQkgICBCVFBhZ2VHZXREZWxldGVYaWQocGFnZSkpOwog CiAJCQkJCS8qIE9rYXkgdG8gdXNlIHBhZ2UuICBSZS1pbml0aWFsaXplIGFuZCByZXR1cm4g aXQuICovCkBAIC0xMjkzLDcgKzEyOTQsNyBAQCBfYnRfZGVsaXRlbXNfdmFjdXVtKFJlbGF0 aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKICAqIGNsZWFyIHBhZ2UncyBWQUNVVU0gY3ljbGUgSUQu CiAgKi8KIHN0YXRpYyB2b2lkCi1fYnRfZGVsaXRlbXNfZGVsZXRlKFJlbGF0aW9uIHJlbCwg QnVmZmVyIGJ1ZiwKK19idF9kZWxpdGVtc19kZWxldGUoUmVsYXRpb24gcmVsLCBSZWxhdGlv biBoZWFwcmVsLCBCdWZmZXIgYnVmLAogCQkJCQlUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29u ZmxpY3RIb3Jpem9uLAogCQkJCQlPZmZzZXROdW1iZXIgKmRlbGV0YWJsZSwgaW50IG5kZWxl dGFibGUsCiAJCQkJCUJUVmFjdXVtUG9zdGluZyAqdXBkYXRhYmxlLCBpbnQgbnVwZGF0YWJs ZSkKQEAgLTEzNTgsNiArMTM1OSw3IEBAIF9idF9kZWxpdGVtc19kZWxldGUoUmVsYXRpb24g cmVsLCBCdWZmZXIgYnVmLAogCQlYTG9nUmVjUHRyCXJlY3B0cjsKIAkJeGxfYnRyZWVfZGVs ZXRlIHhscmVjX2RlbGV0ZTsKIAorCQl4bHJlY19kZWxldGUuaXNDYXRhbG9nUmVsID0gUmVs YXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhoZWFwcmVsKTsKIAkJeGxyZWNf ZGVsZXRlLnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uID0gc25hcHNob3RDb25mbGljdEhvcml6 b247CiAJCXhscmVjX2RlbGV0ZS5uZGVsZXRlZCA9IG5kZWxldGFibGU7CiAJCXhscmVjX2Rl bGV0ZS5udXBkYXRlZCA9IG51cGRhdGFibGU7CkBAIC0xNjg0LDggKzE2ODYsOCBAQCBfYnRf ZGVsaXRlbXNfZGVsZXRlX2NoZWNrKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwgUmVsYXRp b24gaGVhcFJlbCwKIAl9CiAKIAkvKiBQaHlzaWNhbGx5IGRlbGV0ZSB0dXBsZXMgKG9yIFRJ RHMpIHVzaW5nIGRlbGV0YWJsZSAob3IgdXBkYXRhYmxlKSAqLwotCV9idF9kZWxpdGVtc19k ZWxldGUocmVsLCBidWYsIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAotCQkJCQkJZGVsZXRh YmxlLCBuZGVsZXRhYmxlLCB1cGRhdGFibGUsIG51cGRhdGFibGUpOworCV9idF9kZWxpdGVt c19kZWxldGUocmVsLCBoZWFwUmVsLCBidWYsIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLCBk ZWxldGFibGUsCisJCQkJCQluZGVsZXRhYmxlLCB1cGRhdGFibGUsIG51cGRhdGFibGUpOwog CiAJLyogYmUgdGlkeSAqLwogCWZvciAoaW50IGkgPSAwOyBpIDwgbnVwZGF0YWJsZTsgaSsr KQpAQCAtMTcwNiw3ICsxNzA4LDggQEAgX2J0X2RlbGl0ZW1zX2RlbGV0ZV9jaGVjayhSZWxh dGlvbiByZWwsIEJ1ZmZlciBidWYsIFJlbGF0aW9uIGhlYXBSZWwsCiAgKiBzYW1lIGxldmVs IG11c3QgYWx3YXlzIGJlIGxvY2tlZCBsZWZ0IHRvIHJpZ2h0IHRvIGF2b2lkIGRlYWRsb2Nr cy4KICAqLwogc3RhdGljIGJvb2wKLV9idF9sZWZ0c2liX3NwbGl0ZmxhZyhSZWxhdGlvbiBy ZWwsIEJsb2NrTnVtYmVyIGxlZnRzaWIsIEJsb2NrTnVtYmVyIHRhcmdldCkKK19idF9sZWZ0 c2liX3NwbGl0ZmxhZyhSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJsb2NrTnVt YmVyIGxlZnRzaWIsCisJCQkJCSAgQmxvY2tOdW1iZXIgdGFyZ2V0KQogewogCUJ1ZmZlcgkJ YnVmOwogCVBhZ2UJCXBhZ2U7CkBAIC0xNzE3LDcgKzE3MjAsNyBAQCBfYnRfbGVmdHNpYl9z cGxpdGZsYWcoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBsZWZ0c2liLCBCbG9ja051bWJl ciB0YXJnZXQpCiAJaWYgKGxlZnRzaWIgPT0gUF9OT05FKQogCQlyZXR1cm4gZmFsc2U7CiAK LQlidWYgPSBfYnRfZ2V0YnVmKHJlbCwgbGVmdHNpYiwgQlRfUkVBRCk7CisJYnVmID0gX2J0 X2dldGJ1ZihyZWwsIGhlYXByZWwsIGxlZnRzaWIsIEJUX1JFQUQpOwogCXBhZ2UgPSBCdWZm ZXJHZXRQYWdlKGJ1Zik7CiAJb3BhcXVlID0gQlRQYWdlR2V0T3BhcXVlKHBhZ2UpOwogCkBA IC0xNzYzLDcgKzE3NjYsNyBAQCBfYnRfbGVmdHNpYl9zcGxpdGZsYWcoUmVsYXRpb24gcmVs LCBCbG9ja051bWJlciBsZWZ0c2liLCBCbG9ja051bWJlciB0YXJnZXQpCiAgKiB0by1iZS1k ZWxldGVkIHN1YnRyZWUuKQogICovCiBzdGF0aWMgYm9vbAotX2J0X3JpZ2h0c2liX2hhbGZk ZWFkZmxhZyhSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGxlYWZyaWdodHNpYikKK19idF9y aWdodHNpYl9oYWxmZGVhZGZsYWcoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBC bG9ja051bWJlciBsZWFmcmlnaHRzaWIpCiB7CiAJQnVmZmVyCQlidWY7CiAJUGFnZQkJcGFn ZTsKQEAgLTE3NzIsNyArMTc3NSw3IEBAIF9idF9yaWdodHNpYl9oYWxmZGVhZGZsYWcoUmVs YXRpb24gcmVsLCBCbG9ja051bWJlciBsZWFmcmlnaHRzaWIpCiAKIAlBc3NlcnQobGVhZnJp Z2h0c2liICE9IFBfTk9ORSk7CiAKLQlidWYgPSBfYnRfZ2V0YnVmKHJlbCwgbGVhZnJpZ2h0 c2liLCBCVF9SRUFEKTsKKwlidWYgPSBfYnRfZ2V0YnVmKHJlbCwgaGVhcHJlbCwgbGVhZnJp Z2h0c2liLCBCVF9SRUFEKTsKIAlwYWdlID0gQnVmZmVyR2V0UGFnZShidWYpOwogCW9wYXF1 ZSA9IEJUUGFnZUdldE9wYXF1ZShwYWdlKTsKIApAQCAtMTk2MSwxNyArMTk2NCwxOCBAQCBf YnRfcGFnZWRlbChSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVmLCBCVFZhY1N0YXRlICp2 c3RhdGUpCiAJCQkJICogbWFya2VkIHdpdGggSU5DT01QTEVURV9TUExJVCBmbGFnIGJlZm9y ZSBwcm9jZWVkaW5nCiAJCQkJICovCiAJCQkJQXNzZXJ0KGxlYWZibGtubyA9PSBzY2FuYmxr bm8pOwotCQkJCWlmIChfYnRfbGVmdHNpYl9zcGxpdGZsYWcocmVsLCBsZWZ0c2liLCBsZWFm Ymxrbm8pKQorCQkJCWlmIChfYnRfbGVmdHNpYl9zcGxpdGZsYWcocmVsLCB2c3RhdGUtPmlu Zm8tPmhlYXByZWwsIGxlZnRzaWIsIGxlYWZibGtubykpCiAJCQkJewogCQkJCQlSZWxlYXNl QnVmZmVyKGxlYWZidWYpOwogCQkJCQlyZXR1cm47CiAJCQkJfQogCiAJCQkJLyogd2UgbmVl ZCBhbiBpbnNlcnRpb24gc2NhbiBrZXkgZm9yIHRoZSBzZWFyY2gsIHNvIGJ1aWxkIG9uZSAq LwotCQkJCWl0dXBfa2V5ID0gX2J0X21rc2NhbmtleShyZWwsIHRhcmdldGtleSk7CisJCQkJ aXR1cF9rZXkgPSBfYnRfbWtzY2Fua2V5KHJlbCwgdnN0YXRlLT5pbmZvLT5oZWFwcmVsLCB0 YXJnZXRrZXkpOwogCQkJCS8qIGZpbmQgdGhlIGxlZnRtb3N0IGxlYWYgcGFnZSB3aXRoIG1h dGNoaW5nIHBpdm90L2hpZ2gga2V5ICovCiAJCQkJaXR1cF9rZXktPnBpdm90c2VhcmNoID0g dHJ1ZTsKLQkJCQlzdGFjayA9IF9idF9zZWFyY2gocmVsLCBpdHVwX2tleSwgJnNsZWFmYnVm LCBCVF9SRUFELCBOVUxMKTsKKwkJCQlzdGFjayA9IF9idF9zZWFyY2gocmVsLCB2c3RhdGUt PmluZm8tPmhlYXByZWwsIGl0dXBfa2V5LAorCQkJCQkJCQkgICAmc2xlYWZidWYsIEJUX1JF QUQsIE5VTEwpOwogCQkJCS8qIHdvbid0IG5lZWQgYSBzZWNvbmQgbG9jayBvciBwaW4gb24g bGVhZmJ1ZiAqLwogCQkJCV9idF9yZWxidWYocmVsLCBzbGVhZmJ1Zik7CiAKQEAgLTIwMDIs NyArMjAwNiw3IEBAIF9idF9wYWdlZGVsKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxlYWZidWYs IEJUVmFjU3RhdGUgKnZzdGF0ZSkKIAkJCSAqIGxlYWZidWYgcGFnZSBoYWxmLWRlYWQuCiAJ CQkgKi8KIAkJCUFzc2VydChQX0lTTEVBRihvcGFxdWUpICYmICFQX0lHTk9SRShvcGFxdWUp KTsKLQkJCWlmICghX2J0X21hcmtfcGFnZV9oYWxmZGVhZChyZWwsIGxlYWZidWYsIHN0YWNr KSkKKwkJCWlmICghX2J0X21hcmtfcGFnZV9oYWxmZGVhZChyZWwsIHZzdGF0ZS0+aW5mby0+ aGVhcHJlbCwgbGVhZmJ1Ziwgc3RhY2spKQogCQkJewogCQkJCV9idF9yZWxidWYocmVsLCBs ZWFmYnVmKTsKIAkJCQlyZXR1cm47CkBAIC0yMDY1LDcgKzIwNjksNyBAQCBfYnRfcGFnZWRl bChSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVmLCBCVFZhY1N0YXRlICp2c3RhdGUpCiAJ CWlmICghcmlnaHRzaWJfZW1wdHkpCiAJCQlicmVhazsKIAotCQlsZWFmYnVmID0gX2J0X2dl dGJ1ZihyZWwsIHJpZ2h0c2liLCBCVF9XUklURSk7CisJCWxlYWZidWYgPSBfYnRfZ2V0YnVm KHJlbCwgdnN0YXRlLT5pbmZvLT5oZWFwcmVsLCByaWdodHNpYiwgQlRfV1JJVEUpOwogCX0K IH0KIApAQCAtMjA4NCw3ICsyMDg4LDggQEAgX2J0X3BhZ2VkZWwoUmVsYXRpb24gcmVsLCBC dWZmZXIgbGVhZmJ1ZiwgQlRWYWNTdGF0ZSAqdnN0YXRlKQogICogc3VjY2Vzc2Z1bGx5Lgog ICovCiBzdGF0aWMgYm9vbAotX2J0X21hcmtfcGFnZV9oYWxmZGVhZChSZWxhdGlvbiByZWws IEJ1ZmZlciBsZWFmYnVmLCBCVFN0YWNrIHN0YWNrKQorX2J0X21hcmtfcGFnZV9oYWxmZGVh ZChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJ1ZmZlciBsZWFmYnVmLAorCQkJ CQkgICBCVFN0YWNrIHN0YWNrKQogewogCUJsb2NrTnVtYmVyIGxlYWZibGtubzsKIAlCbG9j a051bWJlciBsZWFmcmlnaHRzaWI7CkBAIC0yMTE5LDcgKzIxMjQsNyBAQCBfYnRfbWFya19w YWdlX2hhbGZkZWFkKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxlYWZidWYsIEJUU3RhY2sgc3Rh Y2spCiAJICogZGVsZXRlIHRoZSBkb3dubGluay4gIEl0IHdvdWxkIGZhaWwgdGhlICJyaWdo dCBzaWJsaW5nIG9mIHRhcmdldCBwYWdlCiAJICogaXMgYWxzbyB0aGUgbmV4dCBjaGlsZCBp biBwYXJlbnQgcGFnZSIgY3Jvc3MtY2hlY2sgYmVsb3cuCiAJICovCi0JaWYgKF9idF9yaWdo dHNpYl9oYWxmZGVhZGZsYWcocmVsLCBsZWFmcmlnaHRzaWIpKQorCWlmIChfYnRfcmlnaHRz aWJfaGFsZmRlYWRmbGFnKHJlbCwgaGVhcHJlbCwgbGVhZnJpZ2h0c2liKSkKIAl7CiAJCWVs b2coREVCVUcxLCAiY291bGQgbm90IGRlbGV0ZSBwYWdlICV1IGJlY2F1c2UgaXRzIHJpZ2h0 IHNpYmxpbmcgJXUgaXMgaGFsZi1kZWFkIiwKIAkJCSBsZWFmYmxrbm8sIGxlYWZyaWdodHNp Yik7CkBAIC0yMTQzLDcgKzIxNDgsNyBAQCBfYnRfbWFya19wYWdlX2hhbGZkZWFkKFJlbGF0 aW9uIHJlbCwgQnVmZmVyIGxlYWZidWYsIEJUU3RhY2sgc3RhY2spCiAJICovCiAJdG9wcGFy ZW50ID0gbGVhZmJsa25vOwogCXRvcHBhcmVudHJpZ2h0c2liID0gbGVhZnJpZ2h0c2liOwot CWlmICghX2J0X2xvY2tfc3VidHJlZV9wYXJlbnQocmVsLCBsZWFmYmxrbm8sIHN0YWNrLAor CWlmICghX2J0X2xvY2tfc3VidHJlZV9wYXJlbnQocmVsLCBoZWFwcmVsLCBsZWFmYmxrbm8s IHN0YWNrLAogCQkJCQkJCQkgJnN1YnRyZWVwYXJlbnQsICZwb2Zmc2V0LAogCQkJCQkJCQkg JnRvcHBhcmVudCwgJnRvcHBhcmVudHJpZ2h0c2liKSkKIAkJcmV0dXJuIGZhbHNlOwpAQCAt MjM2Myw3ICsyMzY4LDcgQEAgX2J0X3VubGlua19oYWxmZGVhZF9wYWdlKFJlbGF0aW9uIHJl bCwgQnVmZmVyIGxlYWZidWYsIEJsb2NrTnVtYmVyIHNjYW5ibGtubywKIAkJQXNzZXJ0KHRh cmdldCAhPSBsZWFmYmxrbm8pOwogCiAJCS8qIEZldGNoIHRoZSBibG9jayBudW1iZXIgb2Yg dGhlIHRhcmdldCdzIGxlZnQgc2libGluZyAqLwotCQlidWYgPSBfYnRfZ2V0YnVmKHJlbCwg dGFyZ2V0LCBCVF9SRUFEKTsKKwkJYnVmID0gX2J0X2dldGJ1ZihyZWwsIHZzdGF0ZS0+aW5m by0+aGVhcHJlbCwgdGFyZ2V0LCBCVF9SRUFEKTsKIAkJcGFnZSA9IEJ1ZmZlckdldFBhZ2Uo YnVmKTsKIAkJb3BhcXVlID0gQlRQYWdlR2V0T3BhcXVlKHBhZ2UpOwogCQlsZWZ0c2liID0g b3BhcXVlLT5idHBvX3ByZXY7CkBAIC0yMzkwLDcgKzIzOTUsNyBAQCBfYnRfdW5saW5rX2hh bGZkZWFkX3BhZ2UoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGVhZmJ1ZiwgQmxvY2tOdW1iZXIg c2NhbmJsa25vLAogCQlfYnRfbG9ja2J1ZihyZWwsIGxlYWZidWYsIEJUX1dSSVRFKTsKIAlp ZiAobGVmdHNpYiAhPSBQX05PTkUpCiAJewotCQlsYnVmID0gX2J0X2dldGJ1ZihyZWwsIGxl ZnRzaWIsIEJUX1dSSVRFKTsKKwkJbGJ1ZiA9IF9idF9nZXRidWYocmVsLCB2c3RhdGUtPmlu Zm8tPmhlYXByZWwsIGxlZnRzaWIsIEJUX1dSSVRFKTsKIAkJcGFnZSA9IEJ1ZmZlckdldFBh Z2UobGJ1Zik7CiAJCW9wYXF1ZSA9IEJUUGFnZUdldE9wYXF1ZShwYWdlKTsKIAkJd2hpbGUg KFBfSVNERUxFVEVEKG9wYXF1ZSkgfHwgb3BhcXVlLT5idHBvX25leHQgIT0gdGFyZ2V0KQpA QCAtMjQ0MCw3ICsyNDQ1LDcgQEAgX2J0X3VubGlua19oYWxmZGVhZF9wYWdlKFJlbGF0aW9u IHJlbCwgQnVmZmVyIGxlYWZidWYsIEJsb2NrTnVtYmVyIHNjYW5ibGtubywKIAkJCUNIRUNL X0ZPUl9JTlRFUlJVUFRTKCk7CiAKIAkJCS8qIHN0ZXAgcmlnaHQgb25lIHBhZ2UgKi8KLQkJ CWxidWYgPSBfYnRfZ2V0YnVmKHJlbCwgbGVmdHNpYiwgQlRfV1JJVEUpOworCQkJbGJ1ZiA9 IF9idF9nZXRidWYocmVsLCB2c3RhdGUtPmluZm8tPmhlYXByZWwsIGxlZnRzaWIsIEJUX1dS SVRFKTsKIAkJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGxidWYpOwogCQkJb3BhcXVlID0gQlRQ YWdlR2V0T3BhcXVlKHBhZ2UpOwogCQl9CkBAIC0yNTA0LDcgKzI1MDksNyBAQCBfYnRfdW5s aW5rX2hhbGZkZWFkX3BhZ2UoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGVhZmJ1ZiwgQmxvY2tO dW1iZXIgc2NhbmJsa25vLAogCSAqIEFuZCBuZXh0IHdyaXRlLWxvY2sgdGhlIChjdXJyZW50 KSByaWdodCBzaWJsaW5nLgogCSAqLwogCXJpZ2h0c2liID0gb3BhcXVlLT5idHBvX25leHQ7 Ci0JcmJ1ZiA9IF9idF9nZXRidWYocmVsLCByaWdodHNpYiwgQlRfV1JJVEUpOworCXJidWYg PSBfYnRfZ2V0YnVmKHJlbCwgdnN0YXRlLT5pbmZvLT5oZWFwcmVsLCByaWdodHNpYiwgQlRf V1JJVEUpOwogCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKHJidWYpOwogCW9wYXF1ZSA9IEJUUGFn ZUdldE9wYXF1ZShwYWdlKTsKIAlpZiAob3BhcXVlLT5idHBvX3ByZXYgIT0gdGFyZ2V0KQpA QCAtMjUzMyw3ICsyNTM4LDggQEAgX2J0X3VubGlua19oYWxmZGVhZF9wYWdlKFJlbGF0aW9u IHJlbCwgQnVmZmVyIGxlYWZidWYsIEJsb2NrTnVtYmVyIHNjYW5ibGtubywKIAkJaWYgKFBf UklHSFRNT1NUKG9wYXF1ZSkpCiAJCXsKIAkJCS8qIHJpZ2h0c2liIHdpbGwgYmUgdGhlIG9u bHkgb25lIGxlZnQgb24gdGhlIGxldmVsICovCi0JCQltZXRhYnVmID0gX2J0X2dldGJ1Zihy ZWwsIEJUUkVFX01FVEFQQUdFLCBCVF9XUklURSk7CisJCQltZXRhYnVmID0gX2J0X2dldGJ1 ZihyZWwsIHZzdGF0ZS0+aW5mby0+aGVhcHJlbCwgQlRSRUVfTUVUQVBBR0UsCisJCQkJCQkJ CSBCVF9XUklURSk7CiAJCQltZXRhcGcgPSBCdWZmZXJHZXRQYWdlKG1ldGFidWYpOwogCQkJ bWV0YWQgPSBCVFBhZ2VHZXRNZXRhKG1ldGFwZyk7CiAKQEAgLTI3NzMsOSArMjc3OSwxMCBA QCBfYnRfdW5saW5rX2hhbGZkZWFkX3BhZ2UoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGVhZmJ1 ZiwgQmxvY2tOdW1iZXIgc2NhbmJsa25vLAogICogcGFyZW50IGJsb2NrIGluIHRoZSBsZWFm YnVmIHBhZ2UgdXNpbmcgQlRyZWVUdXBsZVNldFRvcFBhcmVudCgpKS4KICAqLwogc3RhdGlj IGJvb2wKLV9idF9sb2NrX3N1YnRyZWVfcGFyZW50KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1i ZXIgY2hpbGQsIEJUU3RhY2sgc3RhY2ssCi0JCQkJCQlCdWZmZXIgKnN1YnRyZWVwYXJlbnQs IE9mZnNldE51bWJlciAqcG9mZnNldCwKLQkJCQkJCUJsb2NrTnVtYmVyICp0b3BwYXJlbnQs IEJsb2NrTnVtYmVyICp0b3BwYXJlbnRyaWdodHNpYikKK19idF9sb2NrX3N1YnRyZWVfcGFy ZW50KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQmxvY2tOdW1iZXIgY2hpbGQs CisJCQkJCQlCVFN0YWNrIHN0YWNrLCBCdWZmZXIgKnN1YnRyZWVwYXJlbnQsCisJCQkJCQlP ZmZzZXROdW1iZXIgKnBvZmZzZXQsIEJsb2NrTnVtYmVyICp0b3BwYXJlbnQsCisJCQkJCQlC bG9ja051bWJlciAqdG9wcGFyZW50cmlnaHRzaWIpCiB7CiAJQmxvY2tOdW1iZXIgcGFyZW50 LAogCQkJCWxlZnRzaWJwYXJlbnQ7CkBAIC0yNzg5LDcgKzI3OTYsNyBAQCBfYnRfbG9ja19z dWJ0cmVlX3BhcmVudChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGNoaWxkLCBCVFN0YWNr IHN0YWNrLAogCSAqIExvY2F0ZSB0aGUgcGl2b3QgdHVwbGUgd2hvc2UgZG93bmxpbmsgcG9p bnRzIHRvICJjaGlsZCIuICBXcml0ZSBsb2NrCiAJICogdGhlIHBhcmVudCBwYWdlIGl0c2Vs Zi4KIAkgKi8KLQlwYnVmID0gX2J0X2dldHN0YWNrYnVmKHJlbCwgc3RhY2ssIGNoaWxkKTsK KwlwYnVmID0gX2J0X2dldHN0YWNrYnVmKHJlbCwgaGVhcHJlbCwgc3RhY2ssIGNoaWxkKTsK IAlpZiAocGJ1ZiA9PSBJbnZhbGlkQnVmZmVyKQogCXsKIAkJLyoKQEAgLTI4ODksMTEgKzI4 OTYsMTEgQEAgX2J0X2xvY2tfc3VidHJlZV9wYXJlbnQoUmVsYXRpb24gcmVsLCBCbG9ja051 bWJlciBjaGlsZCwgQlRTdGFjayBzdGFjaywKIAkgKgogCSAqIE5vdGU6IFdlIGRlbGliZXJh dGVseSBhdm9pZCBjb21wbGV0aW5nIGluY29tcGxldGUgc3BsaXRzIGhlcmUuCiAJICovCi0J aWYgKF9idF9sZWZ0c2liX3NwbGl0ZmxhZyhyZWwsIGxlZnRzaWJwYXJlbnQsIHBhcmVudCkp CisJaWYgKF9idF9sZWZ0c2liX3NwbGl0ZmxhZyhyZWwsIGhlYXByZWwsIGxlZnRzaWJwYXJl bnQsIHBhcmVudCkpCiAJCXJldHVybiBmYWxzZTsKIAogCS8qIFJlY3Vyc2UgdG8gZXhhbWlu ZSBjaGlsZCBwYWdlJ3MgZ3JhbmRwYXJlbnQgcGFnZSAqLwotCXJldHVybiBfYnRfbG9ja19z dWJ0cmVlX3BhcmVudChyZWwsIHBhcmVudCwgc3RhY2stPmJ0c19wYXJlbnQsCisJcmV0dXJu IF9idF9sb2NrX3N1YnRyZWVfcGFyZW50KHJlbCwgaGVhcHJlbCwgcGFyZW50LCBzdGFjay0+ YnRzX3BhcmVudCwKIAkJCQkJCQkJICAgc3VidHJlZXBhcmVudCwgcG9mZnNldCwKIAkJCQkJ CQkJICAgdG9wcGFyZW50LCB0b3BwYXJlbnRyaWdodHNpYik7CiB9CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L25idHJlZS9uYnRyZWUuYwppbmRleCAxY2M4OGRhMDMyLi40ZThhODVmYjVkIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlZS5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVlLmMKQEAgLTgzNCw3ICs4MzQsNyBAQCBidHZhY3V1 bWNsZWFudXAoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQg KnN0YXRzKQogCWlmIChzdGF0cyA9PSBOVUxMKQogCXsKIAkJLyogQ2hlY2sgaWYgVkFDVVVN IG9wZXJhdGlvbiBjYW4gZW50aXJlbHkgYXZvaWQgYnR2YWN1dW1zY2FuKCkgY2FsbCAqLwot CQlpZiAoIV9idF92YWN1dW1fbmVlZHNfY2xlYW51cChpbmZvLT5pbmRleCkpCisJCWlmICgh X2J0X3ZhY3V1bV9uZWVkc19jbGVhbnVwKGluZm8tPmluZGV4LCBpbmZvLT5oZWFwcmVsKSkK IAkJCXJldHVybiBOVUxMOwogCiAJCS8qCkBAIC04NzAsNyArODcwLDcgQEAgYnR2YWN1dW1j bGVhbnVwKEluZGV4VmFjdXVtSW5mbyAqaW5mbywgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpz dGF0cykKIAkgKi8KIAlBc3NlcnQoc3RhdHMtPnBhZ2VzX2RlbGV0ZWQgPj0gc3RhdHMtPnBh Z2VzX2ZyZWUpOwogCW51bV9kZWxwYWdlcyA9IHN0YXRzLT5wYWdlc19kZWxldGVkIC0gc3Rh dHMtPnBhZ2VzX2ZyZWU7Ci0JX2J0X3NldF9jbGVhbnVwX2luZm8oaW5mby0+aW5kZXgsIG51 bV9kZWxwYWdlcyk7CisJX2J0X3NldF9jbGVhbnVwX2luZm8oaW5mby0+aW5kZXgsIGluZm8t PmhlYXByZWwsIG51bV9kZWxwYWdlcyk7CiAKIAkvKgogCSAqIEl0J3MgcXVpdGUgcG9zc2li bGUgZm9yIHVzIHRvIGJlIGZvb2xlZCBieSBjb25jdXJyZW50IHBhZ2Ugc3BsaXRzIGludG8K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c2VhcmNoLmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNlYXJjaC5jCmluZGV4IGM0M2MxYTI4MzAu LjVjNzI4ZTM1M2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 c2VhcmNoLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzZWFyY2guYwpA QCAtNDIsNyArNDIsOCBAQCBzdGF0aWMgYm9vbCBfYnRfc3RlcHBhZ2UoSW5kZXhTY2FuRGVz YyBzY2FuLCBTY2FuRGlyZWN0aW9uIGRpcik7CiBzdGF0aWMgYm9vbCBfYnRfcmVhZG5leHRw YWdlKEluZGV4U2NhbkRlc2Mgc2NhbiwgQmxvY2tOdW1iZXIgYmxrbm8sIFNjYW5EaXJlY3Rp b24gZGlyKTsKIHN0YXRpYyBib29sIF9idF9wYXJhbGxlbF9yZWFkcGFnZShJbmRleFNjYW5E ZXNjIHNjYW4sIEJsb2NrTnVtYmVyIGJsa25vLAogCQkJCQkJCQkgIFNjYW5EaXJlY3Rpb24g ZGlyKTsKLXN0YXRpYyBCdWZmZXIgX2J0X3dhbGtfbGVmdChSZWxhdGlvbiByZWwsIEJ1ZmZl ciBidWYsIFNuYXBzaG90IHNuYXBzaG90KTsKK3N0YXRpYyBCdWZmZXIgX2J0X3dhbGtfbGVm dChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJ1ZmZlciBidWYsCisJCQkJCQkJ U25hcHNob3Qgc25hcHNob3QpOwogc3RhdGljIGJvb2wgX2J0X2VuZHBvaW50KEluZGV4U2Nh bkRlc2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpOwogc3RhdGljIGlubGluZSB2b2lkIF9i dF9pbml0aWFsaXplX21vcmVfZGF0YShCVFNjYW5PcGFxdWUgc28sIFNjYW5EaXJlY3Rpb24g ZGlyKTsKIApAQCAtOTMsMTQgKzk0LDE0IEBAIF9idF9kcm9wX2xvY2tfYW5kX21heWJlX3Bp bihJbmRleFNjYW5EZXNjIHNjYW4sIEJUU2NhblBvcyBzcCkKICAqIGR1cmluZyB0aGUgc2Vh cmNoIHdpbGwgYmUgZmluaXNoZWQuCiAgKi8KIEJUU3RhY2sKLV9idF9zZWFyY2goUmVsYXRp b24gcmVsLCBCVFNjYW5JbnNlcnQga2V5LCBCdWZmZXIgKmJ1ZlAsIGludCBhY2Nlc3MsCi0J CSAgIFNuYXBzaG90IHNuYXBzaG90KQorX2J0X3NlYXJjaChSZWxhdGlvbiByZWwsIFJlbGF0 aW9uIGhlYXByZWwsIEJUU2Nhbkluc2VydCBrZXksIEJ1ZmZlciAqYnVmUCwKKwkJICAgaW50 IGFjY2VzcywgU25hcHNob3Qgc25hcHNob3QpCiB7CiAJQlRTdGFjawkJc3RhY2tfaW4gPSBO VUxMOwogCWludAkJCXBhZ2VfYWNjZXNzID0gQlRfUkVBRDsKIAogCS8qIEdldCB0aGUgcm9v dCBwYWdlIHRvIHN0YXJ0IHdpdGggKi8KLQkqYnVmUCA9IF9idF9nZXRyb290KHJlbCwgYWNj ZXNzKTsKKwkqYnVmUCA9IF9idF9nZXRyb290KHJlbCwgaGVhcHJlbCwgYWNjZXNzKTsKIAog CS8qIElmIGluZGV4IGlzIGVtcHR5IGFuZCBhY2Nlc3MgPSBCVF9SRUFELCBubyByb290IHBh Z2UgaXMgY3JlYXRlZC4gKi8KIAlpZiAoIUJ1ZmZlcklzVmFsaWQoKmJ1ZlApKQpAQCAtMTI5 LDggKzEzMCw4IEBAIF9idF9zZWFyY2goUmVsYXRpb24gcmVsLCBCVFNjYW5JbnNlcnQga2V5 LCBCdWZmZXIgKmJ1ZlAsIGludCBhY2Nlc3MsCiAJCSAqIGFsc28gdGFrZW4gY2FyZSBvZiBp biBfYnRfZ2V0c3RhY2tidWYpLiAgQnV0IHRoaXMgaXMgYSBnb29kCiAJCSAqIG9wcG9ydHVu aXR5IHRvIGZpbmlzaCBzcGxpdHMgb2YgaW50ZXJuYWwgcGFnZXMgdG9vLgogCQkgKi8KLQkJ KmJ1ZlAgPSBfYnRfbW92ZXJpZ2h0KHJlbCwga2V5LCAqYnVmUCwgKGFjY2VzcyA9PSBCVF9X UklURSksIHN0YWNrX2luLAotCQkJCQkJCSAgcGFnZV9hY2Nlc3MsIHNuYXBzaG90KTsKKwkJ KmJ1ZlAgPSBfYnRfbW92ZXJpZ2h0KHJlbCwgaGVhcHJlbCwga2V5LCAqYnVmUCwgKGFjY2Vz cyA9PSBCVF9XUklURSksCisJCQkJCQkJICBzdGFja19pbiwgcGFnZV9hY2Nlc3MsIHNuYXBz aG90KTsKIAogCQkvKiBpZiB0aGlzIGlzIGEgbGVhZiBwYWdlLCB3ZSdyZSBkb25lICovCiAJ CXBhZ2UgPSBCdWZmZXJHZXRQYWdlKCpidWZQKTsKQEAgLTE5MCw3ICsxOTEsNyBAQCBfYnRf c2VhcmNoKFJlbGF0aW9uIHJlbCwgQlRTY2FuSW5zZXJ0IGtleSwgQnVmZmVyICpidWZQLCBp bnQgYWNjZXNzLAogCQkgKiBidXQgYmVmb3JlIHdlIGFjcXVpcmVkIGEgd3JpdGUgbG9jay4g IElmIGl0IGhhcywgd2UgbWF5IG5lZWQgdG8KIAkJICogbW92ZSByaWdodCB0byBpdHMgbmV3 IHNpYmxpbmcuICBEbyB0aGF0LgogCQkgKi8KLQkJKmJ1ZlAgPSBfYnRfbW92ZXJpZ2h0KHJl bCwga2V5LCAqYnVmUCwgdHJ1ZSwgc3RhY2tfaW4sIEJUX1dSSVRFLAorCQkqYnVmUCA9IF9i dF9tb3ZlcmlnaHQocmVsLCBoZWFwcmVsLCBrZXksICpidWZQLCB0cnVlLCBzdGFja19pbiwg QlRfV1JJVEUsCiAJCQkJCQkJICBzbmFwc2hvdCk7CiAJfQogCkBAIC0yMzQsNiArMjM1LDcg QEAgX2J0X3NlYXJjaChSZWxhdGlvbiByZWwsIEJUU2Nhbkluc2VydCBrZXksIEJ1ZmZlciAq YnVmUCwgaW50IGFjY2VzcywKICAqLwogQnVmZmVyCiBfYnRfbW92ZXJpZ2h0KFJlbGF0aW9u IHJlbCwKKwkJCSAgUmVsYXRpb24gaGVhcHJlbCwKIAkJCSAgQlRTY2FuSW5zZXJ0IGtleSwK IAkJCSAgQnVmZmVyIGJ1ZiwKIAkJCSAgYm9vbCBmb3J1cGRhdGUsCkBAIC0yODgsMTIgKzI5 MCwxMiBAQCBfYnRfbW92ZXJpZ2h0KFJlbGF0aW9uIHJlbCwKIAkJCX0KIAogCQkJaWYgKFBf SU5DT01QTEVURV9TUExJVChvcGFxdWUpKQotCQkJCV9idF9maW5pc2hfc3BsaXQocmVsLCBi dWYsIHN0YWNrKTsKKwkJCQlfYnRfZmluaXNoX3NwbGl0KHJlbCwgaGVhcHJlbCwgYnVmLCBz dGFjayk7CiAJCQllbHNlCiAJCQkJX2J0X3JlbGJ1ZihyZWwsIGJ1Zik7CiAKIAkJCS8qIHJl LWFjcXVpcmUgdGhlIGxvY2sgaW4gdGhlIHJpZ2h0IG1vZGUsIGFuZCByZS1jaGVjayAqLwot CQkJYnVmID0gX2J0X2dldGJ1ZihyZWwsIGJsa25vLCBhY2Nlc3MpOworCQkJYnVmID0gX2J0 X2dldGJ1ZihyZWwsIGhlYXByZWwsIGJsa25vLCBhY2Nlc3MpOwogCQkJY29udGludWU7CiAJ CX0KIApAQCAtODYwLDYgKzg2Miw3IEBAIGJvb2wKIF9idF9maXJzdChJbmRleFNjYW5EZXNj IHNjYW4sIFNjYW5EaXJlY3Rpb24gZGlyKQogewogCVJlbGF0aW9uCXJlbCA9IHNjYW4tPmlu ZGV4UmVsYXRpb247CisJUmVsYXRpb24gCWhlYXByZWwgPSBzY2FuLT5oZWFwUmVsYXRpb247 CiAJQlRTY2FuT3BhcXVlIHNvID0gKEJUU2Nhbk9wYXF1ZSkgc2Nhbi0+b3BhcXVlOwogCUJ1 ZmZlcgkJYnVmOwogCUJUU3RhY2sJCXN0YWNrOwpAQCAtMTM1Miw3ICsxMzU1LDcgQEAgX2J0 X2ZpcnN0KEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpCiAJfQogCiAJ LyogSW5pdGlhbGl6ZSByZW1haW5pbmcgaW5zZXJ0aW9uIHNjYW4ga2V5IGZpZWxkcyAqLwot CV9idF9tZXRhdmVyc2lvbihyZWwsICZpbnNrZXkuaGVhcGtleXNwYWNlLCAmaW5za2V5LmFs bGVxdWFsaW1hZ2UpOworCV9idF9tZXRhdmVyc2lvbihyZWwsIGhlYXByZWwsICZpbnNrZXku aGVhcGtleXNwYWNlLCAmaW5za2V5LmFsbGVxdWFsaW1hZ2UpOwogCWluc2tleS5hbnludWxs a2V5cyA9IGZhbHNlOyAvKiB1bnVzZWQgKi8KIAlpbnNrZXkubmV4dGtleSA9IG5leHRrZXk7 CiAJaW5za2V5LnBpdm90c2VhcmNoID0gZmFsc2U7CkBAIC0xMzYzLDcgKzEzNjYsNyBAQCBf YnRfZmlyc3QoSW5kZXhTY2FuRGVzYyBzY2FuLCBTY2FuRGlyZWN0aW9uIGRpcikKIAkgKiBV c2UgdGhlIG1hbnVmYWN0dXJlZCBpbnNlcnRpb24gc2NhbiBrZXkgdG8gZGVzY2VuZCB0aGUg dHJlZSBhbmQKIAkgKiBwb3NpdGlvbiBvdXJzZWx2ZXMgb24gdGhlIHRhcmdldCBsZWFmIHBh Z2UuCiAJICovCi0Jc3RhY2sgPSBfYnRfc2VhcmNoKHJlbCwgJmluc2tleSwgJmJ1ZiwgQlRf UkVBRCwgc2Nhbi0+eHNfc25hcHNob3QpOworCXN0YWNrID0gX2J0X3NlYXJjaChyZWwsIGhl YXByZWwsICZpbnNrZXksICZidWYsIEJUX1JFQUQsIHNjYW4tPnhzX3NuYXBzaG90KTsKIAog CS8qIGRvbid0IG5lZWQgdG8ga2VlcCB0aGUgc3RhY2sgYXJvdW5kLi4uICovCiAJX2J0X2Zy ZWVzdGFjayhzdGFjayk7CkBAIC0yMDA0LDcgKzIwMDcsNyBAQCBfYnRfcmVhZG5leHRwYWdl KEluZGV4U2NhbkRlc2Mgc2NhbiwgQmxvY2tOdW1iZXIgYmxrbm8sIFNjYW5EaXJlY3Rpb24g ZGlyKQogCQkJLyogY2hlY2sgZm9yIGludGVycnVwdHMgd2hpbGUgd2UncmUgbm90IGhvbGRp bmcgYW55IGJ1ZmZlciBsb2NrICovCiAJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCQkJ Lyogc3RlcCByaWdodCBvbmUgcGFnZSAqLwotCQkJc28tPmN1cnJQb3MuYnVmID0gX2J0X2dl dGJ1ZihyZWwsIGJsa25vLCBCVF9SRUFEKTsKKwkJCXNvLT5jdXJyUG9zLmJ1ZiA9IF9idF9n ZXRidWYocmVsLCBzY2FuLT5oZWFwUmVsYXRpb24sIGJsa25vLCBCVF9SRUFEKTsKIAkJCXBh Z2UgPSBCdWZmZXJHZXRQYWdlKHNvLT5jdXJyUG9zLmJ1Zik7CiAJCQlUZXN0Rm9yT2xkU25h cHNob3Qoc2Nhbi0+eHNfc25hcHNob3QsIHJlbCwgcGFnZSk7CiAJCQlvcGFxdWUgPSBCVFBh Z2VHZXRPcGFxdWUocGFnZSk7CkBAIC0yMDc4LDcgKzIwODEsOCBAQCBfYnRfcmVhZG5leHRw YWdlKEluZGV4U2NhbkRlc2Mgc2NhbiwgQmxvY2tOdW1iZXIgYmxrbm8sIFNjYW5EaXJlY3Rp b24gZGlyKQogCQlpZiAoQlRTY2FuUG9zSXNQaW5uZWQoc28tPmN1cnJQb3MpKQogCQkJX2J0 X2xvY2tidWYocmVsLCBzby0+Y3VyclBvcy5idWYsIEJUX1JFQUQpOwogCQllbHNlCi0JCQlz by0+Y3VyclBvcy5idWYgPSBfYnRfZ2V0YnVmKHJlbCwgc28tPmN1cnJQb3MuY3VyclBhZ2Us IEJUX1JFQUQpOworCQkJc28tPmN1cnJQb3MuYnVmID0gX2J0X2dldGJ1ZihyZWwsIHNjYW4t PmhlYXBSZWxhdGlvbiwKKwkJCQkJCQkJCQkgc28tPmN1cnJQb3MuY3VyclBhZ2UsIEJUX1JF QUQpOwogCiAJCWZvciAoOzspCiAJCXsKQEAgLTIwOTIsOCArMjA5Niw4IEBAIF9idF9yZWFk bmV4dHBhZ2UoSW5kZXhTY2FuRGVzYyBzY2FuLCBCbG9ja051bWJlciBibGtubywgU2NhbkRp cmVjdGlvbiBkaXIpCiAJCQl9CiAKIAkJCS8qIFN0ZXAgdG8gbmV4dCBwaHlzaWNhbCBwYWdl ICovCi0JCQlzby0+Y3VyclBvcy5idWYgPSBfYnRfd2Fsa19sZWZ0KHJlbCwgc28tPmN1cnJQ b3MuYnVmLAotCQkJCQkJCQkJCQlzY2FuLT54c19zbmFwc2hvdCk7CisJCQlzby0+Y3VyclBv cy5idWYgPSBfYnRfd2Fsa19sZWZ0KHJlbCwgc2Nhbi0+aGVhcFJlbGF0aW9uLAorCQkJCQkJ CQkJCQlzby0+Y3VyclBvcy5idWYsIHNjYW4tPnhzX3NuYXBzaG90KTsKIAogCQkJLyogaWYg d2UncmUgcGh5c2ljYWxseSBhdCBlbmQgb2YgaW5kZXgsIHJldHVybiBmYWlsdXJlICovCiAJ CQlpZiAoc28tPmN1cnJQb3MuYnVmID09IEludmFsaWRCdWZmZXIpCkBAIC0yMTQwLDcgKzIx NDQsOCBAQCBfYnRfcmVhZG5leHRwYWdlKEluZGV4U2NhbkRlc2Mgc2NhbiwgQmxvY2tOdW1i ZXIgYmxrbm8sIFNjYW5EaXJlY3Rpb24gZGlyKQogCQkJCQlCVFNjYW5Qb3NJbnZhbGlkYXRl KHNvLT5jdXJyUG9zKTsKIAkJCQkJcmV0dXJuIGZhbHNlOwogCQkJCX0KLQkJCQlzby0+Y3Vy clBvcy5idWYgPSBfYnRfZ2V0YnVmKHJlbCwgYmxrbm8sIEJUX1JFQUQpOworCQkJCXNvLT5j dXJyUG9zLmJ1ZiA9IF9idF9nZXRidWYocmVsLCBzY2FuLT5oZWFwUmVsYXRpb24sIGJsa25v LAorCQkJCQkJCQkJCQkgQlRfUkVBRCk7CiAJCQl9CiAJCX0KIAl9CkBAIC0yMTg1LDcgKzIx OTAsNyBAQCBfYnRfcGFyYWxsZWxfcmVhZHBhZ2UoSW5kZXhTY2FuRGVzYyBzY2FuLCBCbG9j a051bWJlciBibGtubywgU2NhbkRpcmVjdGlvbiBkaXIpCiAgKiBhZ2FpbiBpZiBpdCdzIGlt cG9ydGFudC4KICAqLwogc3RhdGljIEJ1ZmZlcgotX2J0X3dhbGtfbGVmdChSZWxhdGlvbiBy ZWwsIEJ1ZmZlciBidWYsIFNuYXBzaG90IHNuYXBzaG90KQorX2J0X3dhbGtfbGVmdChSZWxh dGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJ1ZmZlciBidWYsIFNuYXBzaG90IHNuYXBz aG90KQogewogCVBhZ2UJCXBhZ2U7CiAJQlRQYWdlT3BhcXVlIG9wYXF1ZTsKQEAgLTIyMTMs NyArMjIxOCw3IEBAIF9idF93YWxrX2xlZnQoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLCBT bmFwc2hvdCBzbmFwc2hvdCkKIAkJX2J0X3JlbGJ1ZihyZWwsIGJ1Zik7CiAJCS8qIGNoZWNr IGZvciBpbnRlcnJ1cHRzIHdoaWxlIHdlJ3JlIG5vdCBob2xkaW5nIGFueSBidWZmZXIgbG9j ayAqLwogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwotCQlidWYgPSBfYnRfZ2V0YnVmKHJl bCwgYmxrbm8sIEJUX1JFQUQpOworCQlidWYgPSBfYnRfZ2V0YnVmKHJlbCwgaGVhcHJlbCwg Ymxrbm8sIEJUX1JFQUQpOwogCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWYpOwogCQlUZXN0 Rm9yT2xkU25hcHNob3Qoc25hcHNob3QsIHJlbCwgcGFnZSk7CiAJCW9wYXF1ZSA9IEJUUGFn ZUdldE9wYXF1ZShwYWdlKTsKQEAgLTIzMDQsNyArMjMwOSw3IEBAIF9idF93YWxrX2xlZnQo UmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLCBTbmFwc2hvdCBzbmFwc2hvdCkKICAqIFRoZSBy ZXR1cm5lZCBidWZmZXIgaXMgcGlubmVkIGFuZCByZWFkLWxvY2tlZC4KICAqLwogQnVmZmVy Ci1fYnRfZ2V0X2VuZHBvaW50KFJlbGF0aW9uIHJlbCwgdWludDMyIGxldmVsLCBib29sIHJp Z2h0bW9zdCwKK19idF9nZXRfZW5kcG9pbnQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFw cmVsLCB1aW50MzIgbGV2ZWwsIGJvb2wgcmlnaHRtb3N0LAogCQkJCSBTbmFwc2hvdCBzbmFw c2hvdCkKIHsKIAlCdWZmZXIJCWJ1ZjsKQEAgLTIzMjAsOSArMjMyNSw5IEBAIF9idF9nZXRf ZW5kcG9pbnQoUmVsYXRpb24gcmVsLCB1aW50MzIgbGV2ZWwsIGJvb2wgcmlnaHRtb3N0LAog CSAqIHNtYXJ0ZXIgYWJvdXQgaW50ZXJtZWRpYXRlIGxldmVscy4pCiAJICovCiAJaWYgKGxl dmVsID09IDApCi0JCWJ1ZiA9IF9idF9nZXRyb290KHJlbCwgQlRfUkVBRCk7CisJCWJ1ZiA9 IF9idF9nZXRyb290KHJlbCwgaGVhcHJlbCwgQlRfUkVBRCk7CiAJZWxzZQotCQlidWYgPSBf YnRfZ2V0dHJ1ZXJvb3QocmVsKTsKKwkJYnVmID0gX2J0X2dldHRydWVyb290KHJlbCwgaGVh cHJlbCk7CiAKIAlpZiAoIUJ1ZmZlcklzVmFsaWQoYnVmKSkKIAkJcmV0dXJuIEludmFsaWRC dWZmZXI7CkBAIC0yNDAzLDcgKzI0MDgsOCBAQCBfYnRfZW5kcG9pbnQoSW5kZXhTY2FuRGVz YyBzY2FuLCBTY2FuRGlyZWN0aW9uIGRpcikKIAkgKiB2ZXJzaW9uIG9mIF9idF9zZWFyY2go KS4gIFdlIGRvbid0IG1haW50YWluIGEgc3RhY2sgc2luY2Ugd2Uga25vdyB3ZQogCSAqIHdv bid0IG5lZWQgaXQuCiAJICovCi0JYnVmID0gX2J0X2dldF9lbmRwb2ludChyZWwsIDAsIFNj YW5EaXJlY3Rpb25Jc0JhY2t3YXJkKGRpciksIHNjYW4tPnhzX3NuYXBzaG90KTsKKwlidWYg PSBfYnRfZ2V0X2VuZHBvaW50KHJlbCwgc2Nhbi0+aGVhcFJlbGF0aW9uLCAwLAorCQkJCQkJ ICAgU2NhbkRpcmVjdGlvbklzQmFja3dhcmQoZGlyKSwgc2Nhbi0+eHNfc25hcHNob3QpOwog CiAJaWYgKCFCdWZmZXJJc1ZhbGlkKGJ1ZikpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idHNvcnQuYwppbmRleCA2N2I3YjE3MTBjLi44YzU4ZmRiOGQxIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvbmJ0cmVlL25idHNvcnQuYwpAQCAtNTY2LDcgKzU2Niw3IEBAIF9idF9sZWFmYnVp bGQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIpCiAKIAl3c3RhdGUuaGVh cCA9IGJ0c3Bvb2wtPmhlYXA7CiAJd3N0YXRlLmluZGV4ID0gYnRzcG9vbC0+aW5kZXg7Ci0J d3N0YXRlLmluc2tleSA9IF9idF9ta3NjYW5rZXkod3N0YXRlLmluZGV4LCBOVUxMKTsKKwl3 c3RhdGUuaW5za2V5ID0gX2J0X21rc2NhbmtleSh3c3RhdGUuaW5kZXgsIGJ0c3Bvb2wtPmhl YXAsIE5VTEwpOwogCS8qIF9idF9ta3NjYW5rZXkoKSB3b24ndCBzZXQgYWxsZXF1YWxpbWFn ZSB3aXRob3V0IG1ldGFwYWdlICovCiAJd3N0YXRlLmluc2tleS0+YWxsZXF1YWxpbWFnZSA9 IF9idF9hbGxlcXVhbGltYWdlKHdzdGF0ZS5pbmRleCwgdHJ1ZSk7CiAJd3N0YXRlLmJ0d3Nf dXNlX3dhbCA9IFJlbGF0aW9uTmVlZHNXQUwod3N0YXRlLmluZGV4KTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0dXRpbHMuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9uYnRyZWUvbmJ0dXRpbHMuYwppbmRleCA3ZGE0OTljNGRkLi4wNWFiZjM2MDMyIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR1dGlscy5jCkBAIC04Nyw3ICs4Nyw3IEBA IHN0YXRpYyBpbnQJX2J0X2tlZXBfbmF0dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxh c3RsZWZ0LAogICoJCWZpZWxkIHRoZW1zZWx2ZXMuCiAgKi8KIEJUU2Nhbkluc2VydAotX2J0 X21rc2NhbmtleShSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgaXR1cCkKK19idF9ta3NjYW5r ZXkoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBJbmRleFR1cGxlIGl0dXApCiB7 CiAJQlRTY2FuSW5zZXJ0IGtleTsKIAlTY2FuS2V5CQlza2V5OwpAQCAtMTEyLDcgKzExMiw3 IEBAIF9idF9ta3NjYW5rZXkoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGl0dXApCiAJa2V5 ID0gcGFsbG9jKG9mZnNldG9mKEJUU2Nhbkluc2VydERhdGEsIHNjYW5rZXlzKSArCiAJCQkJ IHNpemVvZihTY2FuS2V5RGF0YSkgKiBpbmRua2V5YXR0cyk7CiAJaWYgKGl0dXApCi0JCV9i dF9tZXRhdmVyc2lvbihyZWwsICZrZXktPmhlYXBrZXlzcGFjZSwgJmtleS0+YWxsZXF1YWxp bWFnZSk7CisJCV9idF9tZXRhdmVyc2lvbihyZWwsIGhlYXByZWwsICZrZXktPmhlYXBrZXlz cGFjZSwgJmtleS0+YWxsZXF1YWxpbWFnZSk7CiAJZWxzZQogCXsKIAkJLyogVXRpbGl0eSBz dGF0ZW1lbnQgY2FsbGVycyBjYW4gc2V0IHRoZXNlIGZpZWxkcyB0aGVtc2VsdmVzICovCkBA IC0xNzYxLDcgKzE3NjEsOCBAQCBfYnRfa2lsbGl0ZW1zKEluZGV4U2NhbkRlc2Mgc2NhbikK IAogCQlkcm9wcGVkcGluID0gdHJ1ZTsKIAkJLyogQXR0ZW1wdCB0byByZS1yZWFkIHRoZSBi dWZmZXIsIGdldHRpbmcgcGluIGFuZCBsb2NrLiAqLwotCQlidWYgPSBfYnRfZ2V0YnVmKHNj YW4tPmluZGV4UmVsYXRpb24sIHNvLT5jdXJyUG9zLmN1cnJQYWdlLCBCVF9SRUFEKTsKKwkJ YnVmID0gX2J0X2dldGJ1ZihzY2FuLT5pbmRleFJlbGF0aW9uLCBzY2FuLT5oZWFwUmVsYXRp b24sCisJCQkJCQkgc28tPmN1cnJQb3MuY3VyclBhZ2UsIEJUX1JFQUQpOwogCiAJCXBhZ2Ug PSBCdWZmZXJHZXRQYWdlKGJ1Zik7CiAJCWlmIChCdWZmZXJHZXRMU05BdG9taWMoYnVmKSA9 PSBzby0+Y3VyclBvcy5sc24pCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Bn aXN0L3NwZ3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0u YwppbmRleCAzYWRiMThmMmQ4Li4yZjRhNGFhZDI0IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9z cGdpc3Qvc3BndmFjdXVtLmMKQEAgLTQ4OSw3ICs0ODksNyBAQCB2YWN1dW1MZWFmUm9vdChz cGdCdWxrRGVsZXRlU3RhdGUgKmJkcywgUmVsYXRpb24gaW5kZXgsIEJ1ZmZlciBidWZmZXIp CiAgKiBVbmxpa2UgdGhlIHJvdXRpbmVzIGFib3ZlLCB0aGlzIHdvcmtzIG9uIGJvdGggbGVh ZiBhbmQgaW5uZXIgcGFnZXMuCiAgKi8KIHN0YXRpYyB2b2lkCi12YWN1dW1SZWRpcmVjdEFu ZFBsYWNlaG9sZGVyKFJlbGF0aW9uIGluZGV4LCBCdWZmZXIgYnVmZmVyKQordmFjdXVtUmVk aXJlY3RBbmRQbGFjZWhvbGRlcihSZWxhdGlvbiBpbmRleCwgUmVsYXRpb24gaGVhcHJlbCwg QnVmZmVyIGJ1ZmZlcikKIHsKIAlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIp OwogCVNwR2lzdFBhZ2VPcGFxdWUgb3BhcXVlID0gU3BHaXN0UGFnZUdldE9wYXF1ZShwYWdl KTsKQEAgLTUwMyw2ICs1MDMsNyBAQCB2YWN1dW1SZWRpcmVjdEFuZFBsYWNlaG9sZGVyKFJl bGF0aW9uIGluZGV4LCBCdWZmZXIgYnVmZmVyKQogCXNwZ3hsb2dWYWN1dW1SZWRpcmVjdCB4 bHJlYzsKIAlHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdDsKIAorCXhscmVjLmlzQ2F0YWxvZ1Jl bCA9IFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcoaGVhcHJlbCk7CiAJ eGxyZWMublRvUGxhY2Vob2xkZXIgPSAwOwogCXhscmVjLnNuYXBzaG90Q29uZmxpY3RIb3Jp em9uID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKQEAgLTY0MywxMyArNjQ0LDEzIEBAIHNw Z3ZhY3V1bXBhZ2Uoc3BnQnVsa0RlbGV0ZVN0YXRlICpiZHMsIEJsb2NrTnVtYmVyIGJsa25v KQogCQllbHNlCiAJCXsKIAkJCXZhY3V1bUxlYWZQYWdlKGJkcywgaW5kZXgsIGJ1ZmZlciwg ZmFsc2UpOwotCQkJdmFjdXVtUmVkaXJlY3RBbmRQbGFjZWhvbGRlcihpbmRleCwgYnVmZmVy KTsKKwkJCXZhY3V1bVJlZGlyZWN0QW5kUGxhY2Vob2xkZXIoaW5kZXgsIGJkcy0+aW5mby0+ aGVhcHJlbCwgYnVmZmVyKTsKIAkJfQogCX0KIAllbHNlCiAJewogCQkvKiBpbm5lciBwYWdl ICovCi0JCXZhY3V1bVJlZGlyZWN0QW5kUGxhY2Vob2xkZXIoaW5kZXgsIGJ1ZmZlcik7CisJ CXZhY3V1bVJlZGlyZWN0QW5kUGxhY2Vob2xkZXIoaW5kZXgsIGJkcy0+aW5mby0+aGVhcHJl bCwgYnVmZmVyKTsKIAl9CiAKIAkvKgpAQCAtNzE5LDcgKzcyMCw3IEBAIHNwZ3Byb2Nlc3Nw ZW5kaW5nKHNwZ0J1bGtEZWxldGVTdGF0ZSAqYmRzKQogCQkJLyogZGVhbCB3aXRoIGFueSBk ZWxldGFibGUgdHVwbGVzICovCiAJCQl2YWN1dW1MZWFmUGFnZShiZHMsIGluZGV4LCBidWZm ZXIsIHRydWUpOwogCQkJLyogbWlnaHQgYXMgd2VsbCBkbyB0aGlzIHdoaWxlIHdlIGFyZSBo ZXJlICovCi0JCQl2YWN1dW1SZWRpcmVjdEFuZFBsYWNlaG9sZGVyKGluZGV4LCBidWZmZXIp OworCQkJdmFjdXVtUmVkaXJlY3RBbmRQbGFjZWhvbGRlcihpbmRleCwgYmRzLT5pbmZvLT5o ZWFwcmVsLCBidWZmZXIpOwogCiAJCQlTcEdpc3RTZXRMYXN0VXNlZFBhZ2UoaW5kZXgsIGJ1 ZmZlcik7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCA0MWIxNmNiODliLi40OGQxZDZiNTA2 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKKysrIGIvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9pbmRleC5jCkBAIC0zMzUyLDYgKzMzNTIsNyBAQCB2YWxpZGF0ZV9p bmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgU25hcHNob3Qgc25hcHNob3QpCiAJaXZp bmZvLm1lc3NhZ2VfbGV2ZWwgPSBERUJVRzI7CiAJaXZpbmZvLm51bV9oZWFwX3R1cGxlcyA9 IGhlYXBSZWxhdGlvbi0+cmRfcmVsLT5yZWx0dXBsZXM7CiAJaXZpbmZvLnN0cmF0ZWd5ID0g TlVMTDsKKwlpdmluZm8uaGVhcHJlbCA9IGhlYXBSZWxhdGlvbjsKIAogCS8qCiAJICogRW5j b2RlIFRJRHMgYXMgaW50OCB2YWx1ZXMgZm9yIHRoZSBzb3J0LCByYXRoZXIgdGhhbiBkaXJl Y3RseSBzb3J0aW5nCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXpl LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKaW5kZXggNjU3NTA5NThiYi4u MDE3ODE4NmQzOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYwpAQCAtNzEyLDYgKzcxMiw3 IEBAIGRvX2FuYWx5emVfcmVsKFJlbGF0aW9uIG9uZXJlbCwgVmFjdXVtUGFyYW1zICpwYXJh bXMsCiAJCQlpdmluZm8ubWVzc2FnZV9sZXZlbCA9IGVsZXZlbDsKIAkJCWl2aW5mby5udW1f aGVhcF90dXBsZXMgPSBvbmVyZWwtPnJkX3JlbC0+cmVsdHVwbGVzOwogCQkJaXZpbmZvLnN0 cmF0ZWd5ID0gdmFjX3N0cmF0ZWd5OworCQkJaXZpbmZvLmhlYXByZWwgPSBvbmVyZWw7CiAK IAkJCXN0YXRzID0gaW5kZXhfdmFjdXVtX2NsZWFudXAoJml2aW5mbywgTlVMTCk7CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCmluZGV4IGJjZDQwYzgwYTEuLjJj ZGJkMTgyYjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFs bGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwpAQCAt MTQ4LDYgKzE0OCw5IEBAIHN0cnVjdCBQYXJhbGxlbFZhY3V1bVN0YXRlCiAJLyogTlVMTCBm b3Igd29ya2VyIHByb2Nlc3NlcyAqLwogCVBhcmFsbGVsQ29udGV4dCAqcGN4dDsKIAorCS8q IFBhcmVudCBIZWFwIFJlbGF0aW9uICovCisJUmVsYXRpb24JaGVhcHJlbDsKKwogCS8qIFRh cmdldCBpbmRleGVzICovCiAJUmVsYXRpb24gICAqaW5kcmVsczsKIAlpbnQJCQluaW5kZXhl czsKQEAgLTI2Niw2ICsyNjksNyBAQCBwYXJhbGxlbF92YWN1dW1faW5pdChSZWxhdGlvbiBy ZWwsIFJlbGF0aW9uICppbmRyZWxzLCBpbnQgbmluZGV4ZXMsCiAJcHZzLT5uaW5kZXhlcyA9 IG5pbmRleGVzOwogCXB2cy0+d2lsbF9wYXJhbGxlbF92YWN1dW0gPSB3aWxsX3BhcmFsbGVs X3ZhY3V1bTsKIAlwdnMtPmJzdHJhdGVneSA9IGJzdHJhdGVneTsKKwlwdnMtPmhlYXByZWwg PSByZWw7CiAKIAlFbnRlclBhcmFsbGVsTW9kZSgpOwogCXBjeHQgPSBDcmVhdGVQYXJhbGxl bENvbnRleHQoInBvc3RncmVzIiwgInBhcmFsbGVsX3ZhY3V1bV9tYWluIiwKQEAgLTgzOCw2 ICs4NDIsNyBAQCBwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19vbmVfaW5kZXgoUGFyYWxsZWxW YWN1dW1TdGF0ZSAqcHZzLCBSZWxhdGlvbiBpbmRyZWwsCiAJaXZpbmZvLmVzdGltYXRlZF9j b3VudCA9IHB2cy0+c2hhcmVkLT5lc3RpbWF0ZWRfY291bnQ7CiAJaXZpbmZvLm51bV9oZWFw X3R1cGxlcyA9IHB2cy0+c2hhcmVkLT5yZWx0dXBsZXM7CiAJaXZpbmZvLnN0cmF0ZWd5ID0g cHZzLT5ic3RyYXRlZ3k7CisJaXZpbmZvLmhlYXByZWwgPSBwdnMtPmhlYXByZWw7CiAKIAkv KiBVcGRhdGUgZXJyb3IgdHJhY2ViYWNrIGluZm9ybWF0aW9uICovCiAJcHZzLT5pbmRuYW1l ID0gcHN0cmR1cChSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpbmRyZWwpKTsKQEAgLTEwMDcs NiArMTAxMiw3IEBAIHBhcmFsbGVsX3ZhY3V1bV9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNo bV90b2MgKnRvYykKIAlwdnMuZGVhZF9pdGVtcyA9IGRlYWRfaXRlbXM7CiAJcHZzLnJlbG5h bWVzcGFjZSA9IGdldF9uYW1lc3BhY2VfbmFtZShSZWxhdGlvbkdldE5hbWVzcGFjZShyZWwp KTsKIAlwdnMucmVsbmFtZSA9IHBzdHJkdXAoUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVs KSk7CisJcHZzLmhlYXByZWwgPSByZWw7CiAKIAkvKiBUaGVzZSBmaWVsZHMgd2lsbCBiZSBm aWxsZWQgZHVyaW5nIGluZGV4IHZhY3V1bSBvciBjbGVhbnVwICovCiAJcHZzLmluZG5hbWUg PSBOVUxMOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNh dC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jCmluZGV4IGQ1OGM0 YTEwNzguLmUzODI0ZWZlOWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91 dGlsL3BsYW5jYXQuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0 LmMKQEAgLTQ2Miw3ICs0NjIsNyBAQCBnZXRfcmVsYXRpb25faW5mbyhQbGFubmVySW5mbyAq cm9vdCwgT2lkIHJlbGF0aW9uT2JqZWN0SWQsIGJvb2wgaW5ocGFyZW50LAogCQkJCQkgKiBG b3IgYnRyZWVzLCBnZXQgdHJlZSBoZWlnaHQgd2hpbGUgd2UgaGF2ZSB0aGUgaW5kZXgKIAkJ CQkJICogb3BlbgogCQkJCQkgKi8KLQkJCQkJaW5mby0+dHJlZV9oZWlnaHQgPSBfYnRfZ2V0 cm9vdGhlaWdodChpbmRleFJlbGF0aW9uKTsKKwkJCQkJaW5mby0+dHJlZV9oZWlnaHQgPSBf YnRfZ2V0cm9vdGhlaWdodChpbmRleFJlbGF0aW9uLCByZWxhdGlvbik7CiAJCQkJfQogCQkJ CWVsc2UKIAkJCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxl c29ydHZhcmlhbnRzLmMgYi9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29ydHZhcmlh bnRzLmMKaW5kZXggZWI2Y2ZjZmQwMC4uMDE4ODEwNjkyNSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvc29ydC90dXBsZXNvcnR2YXJpYW50cy5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYwpAQCAtMjA3LDYgKzIwNyw3IEBAIHR1 cGxlc29ydF9iZWdpbl9oZWFwKFR1cGxlRGVzYyB0dXBEZXNjLAogVHVwbGVzb3J0c3RhdGUg KgogdHVwbGVzb3J0X2JlZ2luX2NsdXN0ZXIoVHVwbGVEZXNjIHR1cERlc2MsCiAJCQkJCQlS ZWxhdGlvbiBpbmRleFJlbCwKKwkJCQkJCVJlbGF0aW9uIGhlYXByZWwsCiAJCQkJCQlpbnQg d29ya01lbSwKIAkJCQkJCVNvcnRDb29yZGluYXRlIGNvb3JkaW5hdGUsIGludCBzb3J0b3B0 KQogewpAQCAtMjYwLDcgKzI2MSw3IEBAIHR1cGxlc29ydF9iZWdpbl9jbHVzdGVyKFR1cGxl RGVzYyB0dXBEZXNjLAogCiAJYXJnLT50dXBEZXNjID0gdHVwRGVzYzsJCS8qIGFzc3VtZSB3 ZSBuZWVkIG5vdCBjb3B5IHR1cERlc2MgKi8KIAotCWluZGV4U2NhbktleSA9IF9idF9ta3Nj YW5rZXkoaW5kZXhSZWwsIE5VTEwpOworCWluZGV4U2NhbktleSA9IF9idF9ta3NjYW5rZXko aW5kZXhSZWwsIGhlYXByZWwsIE5VTEwpOwogCiAJaWYgKGFyZy0+aW5kZXhJbmZvLT5paV9F eHByZXNzaW9ucyAhPSBOVUxMKQogCXsKQEAgLTM2MSw3ICszNjIsNyBAQCB0dXBsZXNvcnRf YmVnaW5faW5kZXhfYnRyZWUoUmVsYXRpb24gaGVhcFJlbCwKIAlhcmctPmVuZm9yY2VVbmlx dWUgPSBlbmZvcmNlVW5pcXVlOwogCWFyZy0+dW5pcXVlTnVsbHNOb3REaXN0aW5jdCA9IHVu aXF1ZU51bGxzTm90RGlzdGluY3Q7CiAKLQlpbmRleFNjYW5LZXkgPSBfYnRfbWtzY2Fua2V5 KGluZGV4UmVsLCBOVUxMKTsKKwlpbmRleFNjYW5LZXkgPSBfYnRfbWtzY2Fua2V5KGluZGV4 UmVsLCBoZWFwUmVsLCBOVUxMKTsKIAogCS8qIFByZXBhcmUgU29ydFN1cHBvcnQgZGF0YSBm b3IgZWFjaCBjb2x1bW4gKi8KIAliYXNlLT5zb3J0S2V5cyA9IChTb3J0U3VwcG9ydCkgcGFs bG9jMChiYXNlLT5uS2V5cyAqCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2Vu YW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oCmluZGV4IDgzZGJlZTBmZTYuLjc3 MDhiODJkN2QgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oCisrKyBi L3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oCkBAIC01MCw2ICs1MCw3IEBAIHR5cGVkZWYg c3RydWN0IEluZGV4VmFjdXVtSW5mbwogCWludAkJCW1lc3NhZ2VfbGV2ZWw7CS8qIGVyZXBv cnQgbGV2ZWwgZm9yIHByb2dyZXNzIG1lc3NhZ2VzICovCiAJZG91YmxlCQludW1faGVhcF90 dXBsZXM7CS8qIHR1cGxlcyByZW1haW5pbmcgaW4gaGVhcCAqLwogCUJ1ZmZlckFjY2Vzc1N0 cmF0ZWd5IHN0cmF0ZWd5OwkvKiBhY2Nlc3Mgc3RyYXRlZ3kgZm9yIHJlYWRzICovCisJUmVs YXRpb24gCWhlYXByZWw7CQkvKiB0aGUgaGVhcCByZWxhdGlvbiB0aGUgaW5kZXggYmVsb25n cyB0byAqLwogfSBJbmRleFZhY3V1bUluZm87CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9hY2Nlc3MvZ2lzdF9wcml2YXRlLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdF9w cml2YXRlLmgKaW5kZXggOGFmMzNkN2I0MC4uZWUyNzU2NTBiZCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvYWNjZXNzL2dpc3RfcHJpdmF0ZS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vz cy9naXN0X3ByaXZhdGUuaApAQCAtNDQwLDcgKzQ0MCw3IEBAIGV4dGVybiBYTG9nUmVjUHRy IGdpc3RYTG9nUGFnZURlbGV0ZShCdWZmZXIgYnVmZmVyLAogCQkJCQkJCQkJIEZ1bGxUcmFu c2FjdGlvbklkIHhpZCwgQnVmZmVyIHBhcmVudEJ1ZmZlciwKIAkJCQkJCQkJCSBPZmZzZXRO dW1iZXIgZG93bmxpbmtPZmZzZXQpOwogCi1leHRlcm4gdm9pZCBnaXN0WExvZ1BhZ2VSZXVz ZShSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGJsa25vLAorZXh0ZXJuIHZvaWQgZ2lzdFhM b2dQYWdlUmV1c2UoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCbG9ja051bWJl ciBibGtubywKIAkJCQkJCQkgIEZ1bGxUcmFuc2FjdGlvbklkIGRlbGV0ZVhpZCk7CiAKIGV4 dGVybiBYTG9nUmVjUHRyIGdpc3RYTG9nVXBkYXRlKEJ1ZmZlciBidWZmZXIsCkBAIC00NDks NyArNDQ5LDggQEAgZXh0ZXJuIFhMb2dSZWNQdHIgZ2lzdFhMb2dVcGRhdGUoQnVmZmVyIGJ1 ZmZlciwKIAkJCQkJCQkJIEJ1ZmZlciBsZWZ0Y2hpbGRidWYpOwogCiBleHRlcm4gWExvZ1Jl Y1B0ciBnaXN0WExvZ0RlbGV0ZShCdWZmZXIgYnVmZmVyLCBPZmZzZXROdW1iZXIgKnRvZGVs ZXRlLAotCQkJCQkJCQkgaW50IG50b2RlbGV0ZSwgVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENv bmZsaWN0SG9yaXpvbik7CisJCQkJCQkJCSBpbnQgbnRvZGVsZXRlLCBUcmFuc2FjdGlvbklk IHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkgUmVsYXRpb24gaGVhcHJlbCk7 CiAKIGV4dGVybiBYTG9nUmVjUHRyIGdpc3RYTG9nU3BsaXQoYm9vbCBwYWdlX2lzX2xlYWYs CiAJCQkJCQkJCVNwbGl0ZWRQYWdlTGF5b3V0ICpkaXN0LApAQCAtNDg1LDcgKzQ4Niw3IEBA IGV4dGVybiBib29sIGdpc3Rwcm9wZXJ0eShPaWQgaW5kZXhfb2lkLCBpbnQgYXR0bm8sCiBl eHRlcm4gYm9vbCBnaXN0Zml0cGFnZShJbmRleFR1cGxlICppdHZlYywgaW50IGxlbik7CiBl eHRlcm4gYm9vbCBnaXN0bm9zcGFjZShQYWdlIHBhZ2UsIEluZGV4VHVwbGUgKml0dmVjLCBp bnQgbGVuLCBPZmZzZXROdW1iZXIgdG9kZWxldGUsIFNpemUgZnJlZXNwYWNlKTsKIGV4dGVy biB2b2lkIGdpc3RjaGVja3BhZ2UoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmKTsKLWV4dGVy biBCdWZmZXIgZ2lzdE5ld0J1ZmZlcihSZWxhdGlvbiByKTsKK2V4dGVybiBCdWZmZXIgZ2lz dE5ld0J1ZmZlcihSZWxhdGlvbiByLCBSZWxhdGlvbiBoZWFwcmVsKTsKIGV4dGVybiBib29s IGdpc3RQYWdlUmVjeWNsYWJsZShQYWdlIHBhZ2UpOwogZXh0ZXJuIHZvaWQgZ2lzdGZpbGxi dWZmZXIoUGFnZSBwYWdlLCBJbmRleFR1cGxlICppdHVwLCBpbnQgbGVuLAogCQkJCQkJICAg T2Zmc2V0TnVtYmVyIG9mZik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lz dHhsb2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0eGxvZy5oCmluZGV4IDA5ZjliMGY4 YzYuLjJlZWE4NjZmMDYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0eGxv Zy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0eGxvZy5oCkBAIC01MSwxMyArNTEs MTQgQEAgdHlwZWRlZiBzdHJ1Y3QgZ2lzdHhsb2dEZWxldGUKIHsKIAlUcmFuc2FjdGlvbklk IHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwogCXVpbnQxNgkJbnRvZGVsZXRlOwkJLyogbnVt YmVyIG9mIGRlbGV0ZWQgb2Zmc2V0cyAqLworCWJvb2wgICAgICAgIGlzQ2F0YWxvZ1JlbDsJ LyogdG8gaGFuZGxlIHJlY292ZXJ5IGNvbmZsaWN0IGR1cmluZyBsb2dpY2FsCisJCQkJCQkJ CSAqIGRlY29kaW5nIG9uIHN0YW5kYnkgKi8KIAotCS8qCi0JICogSW4gcGF5bG9hZCBvZiBi bGsgMCA6IHRvZGVsZXRlIE9mZnNldE51bWJlcnMKLQkgKi8KKwkvKiBUT0RFTEVURSBPRkZT RVQgTlVNQkVSUyAqLworCU9mZnNldE51bWJlciBvZmZzZXRzW0ZMRVhJQkxFX0FSUkFZX01F TUJFUl07CiB9IGdpc3R4bG9nRGVsZXRlOwogCi0jZGVmaW5lIFNpemVPZkdpc3R4bG9nRGVs ZXRlCShvZmZzZXRvZihnaXN0eGxvZ0RlbGV0ZSwgbnRvZGVsZXRlKSArIHNpemVvZih1aW50 MTYpKQorI2RlZmluZSBTaXplT2ZHaXN0eGxvZ0RlbGV0ZSBvZmZzZXRvZihnaXN0eGxvZ0Rl bGV0ZSwgb2Zmc2V0cykKIAogLyoKICAqIEJhY2t1cCBCbGsgMDogSWYgdGhpcyBvcGVyYXRp b24gY29tcGxldGVzIGEgcGFnZSBzcGxpdCwgYnkgaW5zZXJ0aW5nIGEKQEAgLTEwMCw5ICsx MDEsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgZ2lzdHhsb2dQYWdlUmV1c2UKIAlSZWxGaWxlTG9j YXRvciBsb2NhdG9yOwogCUJsb2NrTnVtYmVyIGJsb2NrOwogCUZ1bGxUcmFuc2FjdGlvbklk IHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOworCWJvb2wgICAgICAgIGlzQ2F0YWxvZ1JlbDsJ LyogdG8gaGFuZGxlIHJlY292ZXJ5IGNvbmZsaWN0IGR1cmluZyBsb2dpY2FsCisJCQkJCQkJ CSAqIGRlY29kaW5nIG9uIHN0YW5kYnkgKi8KIH0gZ2lzdHhsb2dQYWdlUmV1c2U7CiAKLSNk ZWZpbmUgU2l6ZU9mR2lzdHhsb2dQYWdlUmV1c2UJKG9mZnNldG9mKGdpc3R4bG9nUGFnZVJl dXNlLCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbikgKyBzaXplb2YoRnVsbFRyYW5zYWN0aW9u SWQpKQorI2RlZmluZSBTaXplT2ZHaXN0eGxvZ1BhZ2VSZXVzZQkob2Zmc2V0b2YoZ2lzdHhs b2dQYWdlUmV1c2UsIGlzQ2F0YWxvZ1JlbCkgKyBzaXplb2YoYm9vbCkpCiAKIGV4dGVybiB2 b2lkIGdpc3RfcmVkbyhYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7CiBleHRlcm4gdm9pZCBn aXN0X2Rlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKTsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oYXNoX3hsb2cuaCBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9oYXNoX3hsb2cuaAppbmRleCBhMmYwZjM5MjEzLi43ZTllNDdjZTY3IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGFzaF94bG9nLmgKKysrIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL2hhc2hfeGxvZy5oCkBAIC0yNTIsMTIgKzI1MiwxNCBAQCB0eXBlZGVmIHN0 cnVjdCB4bF9oYXNoX3ZhY3V1bV9vbmVfcGFnZQogewogCVRyYW5zYWN0aW9uSWQgc25hcHNo b3RDb25mbGljdEhvcml6b247CiAJaW50CQkJbnR1cGxlczsKKwlib29sCQlpc0NhdGFsb2dS ZWw7CS8qIHRvIGhhbmRsZSByZWNvdmVyeSBjb25mbGljdCBkdXJpbmcgbG9naWNhbAorCQkJ CQkJCQkgKiBkZWNvZGluZyBvbiBzdGFuZGJ5ICovCiAKLQkvKiBUQVJHRVQgT0ZGU0VUIE5V TUJFUlMgRk9MTE9XIEFUIFRIRSBFTkQgKi8KKwkvKiBUQVJHRVQgT0ZGU0VUIE5VTUJFUlMg Ki8KKwlPZmZzZXROdW1iZXIgb2Zmc2V0c1tGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOwogfSB4 bF9oYXNoX3ZhY3V1bV9vbmVfcGFnZTsKIAotI2RlZmluZSBTaXplT2ZIYXNoVmFjdXVtT25l UGFnZSBcCi0JKG9mZnNldG9mKHhsX2hhc2hfdmFjdXVtX29uZV9wYWdlLCBudHVwbGVzKSAr IHNpemVvZihpbnQpKQorI2RlZmluZSBTaXplT2ZIYXNoVmFjdXVtT25lUGFnZSBvZmZzZXRv Zih4bF9oYXNoX3ZhY3V1bV9vbmVfcGFnZSwgb2Zmc2V0cykKIAogZXh0ZXJuIHZvaWQgaGFz aF9yZWRvKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKTsKIGV4dGVybiB2b2lkIGhhc2hfZGVz YyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpOwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmggYi9zcmMvaW5jbHVkZS9hY2Nl c3MvaGVhcGFtX3hsb2cuaAppbmRleCA4Y2IwZDhkYTE5Li4yMjNkYjRiMTk5IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaAorKysgYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaApAQCAtMjQ1LDEwICsyNDUsMTIgQEAgdHlwZWRlZiBz dHJ1Y3QgeGxfaGVhcF9wcnVuZQogCVRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhv cml6b247CiAJdWludDE2CQlucmVkaXJlY3RlZDsKIAl1aW50MTYJCW5kZWFkOworCWJvb2wg ICAgICAgIGlzQ2F0YWxvZ1JlbDsJLyogdG8gaGFuZGxlIHJlY292ZXJ5IGNvbmZsaWN0IGR1 cmluZyBsb2dpY2FsCisJCQkJCQkJCSAqIGRlY29kaW5nIG9uIHN0YW5kYnkgKi8KIAkvKiBP RkZTRVQgTlVNQkVSUyBhcmUgaW4gdGhlIGJsb2NrIHJlZmVyZW5jZSAwICovCiB9IHhsX2hl YXBfcHJ1bmU7CiAKLSNkZWZpbmUgU2l6ZU9mSGVhcFBydW5lIChvZmZzZXRvZih4bF9oZWFw X3BydW5lLCBuZGVhZCkgKyBzaXplb2YodWludDE2KSkKKyNkZWZpbmUgU2l6ZU9mSGVhcFBy dW5lIChvZmZzZXRvZih4bF9oZWFwX3BydW5lLCBpc0NhdGFsb2dSZWwpICsgc2l6ZW9mKGJv b2wpKQogCiAvKgogICogVGhlIHZhY3V1bSBwYWdlIHJlY29yZCBpcyBzaW1pbGFyIHRvIHRo ZSBwcnVuZSByZWNvcmQsIGJ1dCBjYW4gb25seSBtYXJrCkBAIC0zNDQsMTIgKzM0NiwxNCBA QCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX2ZyZWV6ZV9wYWdlCiB7CiAJVHJhbnNhY3Rpb25J ZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsKIAl1aW50MTYJCW5wbGFuczsKKwlib29sICAg ICAgICBpc0NhdGFsb2dSZWw7CS8qIHRvIGhhbmRsZSByZWNvdmVyeSBjb25mbGljdCBkdXJp bmcgbG9naWNhbAorCQkJCQkJCQkgKiBkZWNvZGluZyBvbiBzdGFuZGJ5ICovCiAKIAkvKiBG UkVFWkUgUExBTlMgRk9MTE9XICovCiAJLyogT0ZGU0VUIE5VTUJFUiBBUlJBWSBGT0xMT1dT ICovCiB9IHhsX2hlYXBfZnJlZXplX3BhZ2U7CiAKLSNkZWZpbmUgU2l6ZU9mSGVhcEZyZWV6 ZVBhZ2UgKG9mZnNldG9mKHhsX2hlYXBfZnJlZXplX3BhZ2UsIG5wbGFucykgKyBzaXplb2Yo dWludDE2KSkKKyNkZWZpbmUgU2l6ZU9mSGVhcEZyZWV6ZVBhZ2UgKG9mZnNldG9mKHhsX2hl YXBfZnJlZXplX3BhZ2UsIGlzQ2F0YWxvZ1JlbCkgKyBzaXplb2YoYm9vbCkpCiAKIC8qCiAg KiBUaGlzIGlzIHdoYXQgd2UgbmVlZCB0byBrbm93IGFib3V0IHNldHRpbmcgYSB2aXNpYmls aXR5IG1hcCBiaXQKQEAgLTQwOCw3ICs0MTIsNyBAQCBleHRlcm4gdm9pZCBoZWFwMl9kZXNj KFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7CiBleHRlcm4gY29u c3QgY2hhciAqaGVhcDJfaWRlbnRpZnkodWludDggaW5mbyk7CiBleHRlcm4gdm9pZCBoZWFw X3hsb2dfbG9naWNhbF9yZXdyaXRlKFhMb2dSZWFkZXJTdGF0ZSAqcik7CiAKLWV4dGVybiBY TG9nUmVjUHRyIGxvZ19oZWFwX3Zpc2libGUoUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IsIEJ1 ZmZlciBoZWFwX2J1ZmZlciwKK2V4dGVybiBYTG9nUmVjUHRyIGxvZ19oZWFwX3Zpc2libGUo UmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIsCiAJCQkJCQkJCSAgIEJ1ZmZlciB2 bV9idWZmZXIsCiAJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhv cml6b24sCiAJCQkJCQkJCSAgIHVpbnQ4IHZtZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL25idHJlZS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL25idHJlZS5oCmlu ZGV4IDhmNDg5NjBmOWQuLjZkZWUzMDcwNDIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9uYnRyZWUuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmgKQEAgLTEx ODIsOCArMTE4MiwxMCBAQCBleHRlcm4gSW5kZXhUdXBsZSBfYnRfc3dhcF9wb3N0aW5nKElu ZGV4VHVwbGUgbmV3aXRlbSwgSW5kZXhUdXBsZSBvcG9zdGluZywKIGV4dGVybiBib29sIF9i dF9kb2luc2VydChSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgaXR1cCwKIAkJCQkJCSBJbmRl eFVuaXF1ZUNoZWNrIGNoZWNrVW5pcXVlLCBib29sIGluZGV4VW5jaGFuZ2VkLAogCQkJCQkJ IFJlbGF0aW9uIGhlYXBSZWwpOwotZXh0ZXJuIHZvaWQgX2J0X2ZpbmlzaF9zcGxpdChSZWxh dGlvbiByZWwsIEJ1ZmZlciBsYnVmLCBCVFN0YWNrIHN0YWNrKTsKLWV4dGVybiBCdWZmZXIg X2J0X2dldHN0YWNrYnVmKFJlbGF0aW9uIHJlbCwgQlRTdGFjayBzdGFjaywgQmxvY2tOdW1i ZXIgY2hpbGQpOworZXh0ZXJuIHZvaWQgX2J0X2ZpbmlzaF9zcGxpdChSZWxhdGlvbiByZWws IFJlbGF0aW9uIGhlYXByZWwsIEJ1ZmZlciBsYnVmLAorCQkJCQkJCSBCVFN0YWNrIHN0YWNr KTsKK2V4dGVybiBCdWZmZXIgX2J0X2dldHN0YWNrYnVmKFJlbGF0aW9uIHJlbCwgUmVsYXRp b24gaGVhcHJlbCwgQlRTdGFjayBzdGFjaywKKwkJCQkJCQkgIEJsb2NrTnVtYmVyIGNoaWxk KTsKIAogLyoKICAqIHByb3RvdHlwZXMgZm9yIGZ1bmN0aW9ucyBpbiBuYnRzcGxpdGxvYy5j CkBAIC0xMTk3LDE2ICsxMTk5LDE4IEBAIGV4dGVybiBPZmZzZXROdW1iZXIgX2J0X2ZpbmRz cGxpdGxvYyhSZWxhdGlvbiByZWwsIFBhZ2Ugb3JpZ3BhZ2UsCiAgKi8KIGV4dGVybiB2b2lk IF9idF9pbml0bWV0YXBhZ2UoUGFnZSBwYWdlLCBCbG9ja051bWJlciByb290YmtudW0sIHVp bnQzMiBsZXZlbCwKIAkJCQkJCQkgYm9vbCBhbGxlcXVhbGltYWdlKTsKLWV4dGVybiBib29s IF9idF92YWN1dW1fbmVlZHNfY2xlYW51cChSZWxhdGlvbiByZWwpOwotZXh0ZXJuIHZvaWQg X2J0X3NldF9jbGVhbnVwX2luZm8oUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBudW1fZGVs cGFnZXMpOworZXh0ZXJuIGJvb2wgX2J0X3ZhY3V1bV9uZWVkc19jbGVhbnVwKFJlbGF0aW9u IHJlbCwgUmVsYXRpb24gaGVhcHJlbCk7CitleHRlcm4gdm9pZCBfYnRfc2V0X2NsZWFudXBf aW5mbyhSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsCisJCQkJCQkJCSBCbG9ja051 bWJlciBudW1fZGVscGFnZXMpOwogZXh0ZXJuIHZvaWQgX2J0X3VwZ3JhZGVtZXRhcGFnZShQ YWdlIHBhZ2UpOwotZXh0ZXJuIEJ1ZmZlciBfYnRfZ2V0cm9vdChSZWxhdGlvbiByZWwsIGlu dCBhY2Nlc3MpOwotZXh0ZXJuIEJ1ZmZlciBfYnRfZ2V0dHJ1ZXJvb3QoUmVsYXRpb24gcmVs KTsKLWV4dGVybiBpbnQJX2J0X2dldHJvb3RoZWlnaHQoUmVsYXRpb24gcmVsKTsKLWV4dGVy biB2b2lkIF9idF9tZXRhdmVyc2lvbihSZWxhdGlvbiByZWwsIGJvb2wgKmhlYXBrZXlzcGFj ZSwKK2V4dGVybiBCdWZmZXIgX2J0X2dldHJvb3QoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBo ZWFwcmVsLCBpbnQgYWNjZXNzKTsKK2V4dGVybiBCdWZmZXIgX2J0X2dldHRydWVyb290KFJl bGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCk7CitleHRlcm4gaW50CV9idF9nZXRyb290 aGVpZ2h0KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCk7CitleHRlcm4gdm9pZCBf YnRfbWV0YXZlcnNpb24oUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBib29sICpo ZWFwa2V5c3BhY2UsCiAJCQkJCQkJYm9vbCAqYWxsZXF1YWxpbWFnZSk7CiBleHRlcm4gdm9p ZCBfYnRfY2hlY2twYWdlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1Zik7Ci1leHRlcm4gQnVm ZmVyIF9idF9nZXRidWYoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBibGtubywgaW50IGFj Y2Vzcyk7CitleHRlcm4gQnVmZmVyIF9idF9nZXRidWYoUmVsYXRpb24gcmVsLCBSZWxhdGlv biBoZWFwcmVsLCBCbG9ja051bWJlciBibGtubywKKwkJCQkJCSBpbnQgYWNjZXNzKTsKIGV4 dGVybiBCdWZmZXIgX2J0X3JlbGFuZGdldGJ1ZihSZWxhdGlvbiByZWwsIEJ1ZmZlciBvYnVm LAogCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGJsa25vLCBpbnQgYWNjZXNzKTsKIGV4dGVybiB2 b2lkIF9idF9yZWxidWYoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmKTsKQEAgLTEyMjksMjEg KzEyMzMsMjIgQEAgZXh0ZXJuIHZvaWQgX2J0X3BlbmRpbmdmc21fZmluYWxpemUoUmVsYXRp b24gcmVsLCBCVFZhY1N0YXRlICp2c3RhdGUpOwogLyoKICAqIHByb3RvdHlwZXMgZm9yIGZ1 bmN0aW9ucyBpbiBuYnRzZWFyY2guYwogICovCi1leHRlcm4gQlRTdGFjayBfYnRfc2VhcmNo KFJlbGF0aW9uIHJlbCwgQlRTY2FuSW5zZXJ0IGtleSwgQnVmZmVyICpidWZQLAotCQkJCQkJ ICBpbnQgYWNjZXNzLCBTbmFwc2hvdCBzbmFwc2hvdCk7Ci1leHRlcm4gQnVmZmVyIF9idF9t b3ZlcmlnaHQoUmVsYXRpb24gcmVsLCBCVFNjYW5JbnNlcnQga2V5LCBCdWZmZXIgYnVmLAot CQkJCQkJCWJvb2wgZm9ydXBkYXRlLCBCVFN0YWNrIHN0YWNrLCBpbnQgYWNjZXNzLCBTbmFw c2hvdCBzbmFwc2hvdCk7CitleHRlcm4gQlRTdGFjayBfYnRfc2VhcmNoKFJlbGF0aW9uIHJl bCwgUmVsYXRpb24gaGVhcHJlbCwgQlRTY2FuSW5zZXJ0IGtleSwKKwkJCQkJCSAgQnVmZmVy ICpidWZQLCBpbnQgYWNjZXNzLCBTbmFwc2hvdCBzbmFwc2hvdCk7CitleHRlcm4gQnVmZmVy IF9idF9tb3ZlcmlnaHQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCVFNjYW5J bnNlcnQga2V5LAorCQkJCQkJCUJ1ZmZlciBidWYsIGJvb2wgZm9ydXBkYXRlLCBCVFN0YWNr IHN0YWNrLAorCQkJCQkJCWludCBhY2Nlc3MsIFNuYXBzaG90IHNuYXBzaG90KTsKIGV4dGVy biBPZmZzZXROdW1iZXIgX2J0X2JpbnNyY2hfaW5zZXJ0KFJlbGF0aW9uIHJlbCwgQlRJbnNl cnRTdGF0ZSBpbnNlcnRzdGF0ZSk7CiBleHRlcm4gaW50MzIgX2J0X2NvbXBhcmUoUmVsYXRp b24gcmVsLCBCVFNjYW5JbnNlcnQga2V5LCBQYWdlIHBhZ2UsIE9mZnNldE51bWJlciBvZmZu dW0pOwogZXh0ZXJuIGJvb2wgX2J0X2ZpcnN0KEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbkRp cmVjdGlvbiBkaXIpOwogZXh0ZXJuIGJvb2wgX2J0X25leHQoSW5kZXhTY2FuRGVzYyBzY2Fu LCBTY2FuRGlyZWN0aW9uIGRpcik7Ci1leHRlcm4gQnVmZmVyIF9idF9nZXRfZW5kcG9pbnQo UmVsYXRpb24gcmVsLCB1aW50MzIgbGV2ZWwsIGJvb2wgcmlnaHRtb3N0LAotCQkJCQkJCSAg IFNuYXBzaG90IHNuYXBzaG90KTsKK2V4dGVybiBCdWZmZXIgX2J0X2dldF9lbmRwb2ludChS ZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIHVpbnQzMiBsZXZlbCwKKwkJCQkJCQkg ICBib29sIHJpZ2h0bW9zdCwgU25hcHNob3Qgc25hcHNob3QpOwogCiAvKgogICogcHJvdG90 eXBlcyBmb3IgZnVuY3Rpb25zIGluIG5idHV0aWxzLmMKICAqLwotZXh0ZXJuIEJUU2Nhbklu c2VydCBfYnRfbWtzY2Fua2V5KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBpdHVwKTsKK2V4 dGVybiBCVFNjYW5JbnNlcnQgX2J0X21rc2NhbmtleShSZWxhdGlvbiByZWwsIFJlbGF0aW9u IGhlYXByZWwsIEluZGV4VHVwbGUgaXR1cCk7CiBleHRlcm4gdm9pZCBfYnRfZnJlZXN0YWNr KEJUU3RhY2sgc3RhY2spOwogZXh0ZXJuIHZvaWQgX2J0X3ByZXByb2Nlc3NfYXJyYXlfa2V5 cyhJbmRleFNjYW5EZXNjIHNjYW4pOwogZXh0ZXJuIHZvaWQgX2J0X3N0YXJ0X2FycmF5X2tl eXMoSW5kZXhTY2FuRGVzYyBzY2FuLCBTY2FuRGlyZWN0aW9uIGRpcik7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0eGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL25i dHhsb2cuaAppbmRleCBlZGQxMzMzZDliLi4xZTQ1ZDU4ODQ1IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9hY2Nlc3MvbmJ0eGxvZy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnR4 bG9nLmgKQEAgLTE4OCw5ICsxODgsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfYnRyZWVfcmV1 c2VfcGFnZQogCVJlbEZpbGVMb2NhdG9yIGxvY2F0b3I7CiAJQmxvY2tOdW1iZXIgYmxvY2s7 CiAJRnVsbFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b247CisJYm9vbCAg ICAgICAgaXNDYXRhbG9nUmVsOwkvKiB0byBoYW5kbGUgcmVjb3ZlcnkgY29uZmxpY3QgZHVy aW5nIGxvZ2ljYWwKKwkJCQkJCQkJICogZGVjb2Rpbmcgb24gc3RhbmRieSAqLwogfSB4bF9i dHJlZV9yZXVzZV9wYWdlOwogCi0jZGVmaW5lIFNpemVPZkJ0cmVlUmV1c2VQYWdlCShzaXpl b2YoeGxfYnRyZWVfcmV1c2VfcGFnZSkpCisjZGVmaW5lIFNpemVPZkJ0cmVlUmV1c2VQYWdl CShvZmZzZXRvZih4bF9idHJlZV9yZXVzZV9wYWdlLCBpc0NhdGFsb2dSZWwpICsgc2l6ZW9m KGJvb2wpKQogCiAvKgogICogeGxfYnRyZWVfdmFjdXVtIGFuZCB4bF9idHJlZV9kZWxldGUg cmVjb3JkcyBkZXNjcmliZSBkZWxldGlvbiBvZiBpbmRleApAQCAtMjM1LDEzICsyMzcsMTUg QEAgdHlwZWRlZiBzdHJ1Y3QgeGxfYnRyZWVfZGVsZXRlCiAJVHJhbnNhY3Rpb25JZCBzbmFw c2hvdENvbmZsaWN0SG9yaXpvbjsKIAl1aW50MTYJCW5kZWxldGVkOwogCXVpbnQxNgkJbnVw ZGF0ZWQ7CisJYm9vbCAgICAgICAgaXNDYXRhbG9nUmVsOwkvKiB0byBoYW5kbGUgcmVjb3Zl cnkgY29uZmxpY3QgZHVyaW5nIGxvZ2ljYWwKKwkJCQkJCQkJICogZGVjb2Rpbmcgb24gc3Rh bmRieSAqLwogCiAJLyogREVMRVRFRCBUQVJHRVQgT0ZGU0VUIE5VTUJFUlMgRk9MTE9XICov CiAJLyogVVBEQVRFRCBUQVJHRVQgT0ZGU0VUIE5VTUJFUlMgRk9MTE9XICovCiAJLyogVVBE QVRFRCBUVVBMRVMgTUVUQURBVEEgKHhsX2J0cmVlX3VwZGF0ZSkgQVJSQVkgRk9MTE9XUyAq LwogfSB4bF9idHJlZV9kZWxldGU7CiAKLSNkZWZpbmUgU2l6ZU9mQnRyZWVEZWxldGUJKG9m ZnNldG9mKHhsX2J0cmVlX2RlbGV0ZSwgbnVwZGF0ZWQpICsgc2l6ZW9mKHVpbnQxNikpCisj ZGVmaW5lIFNpemVPZkJ0cmVlRGVsZXRlCShvZmZzZXRvZih4bF9idHJlZV9kZWxldGUsIGlz Q2F0YWxvZ1JlbCkgKyBzaXplb2YoYm9vbCkpCiAKIC8qCiAgKiBUaGUgb2Zmc2V0cyB0aGF0 IGFwcGVhciBpbiB4bF9idHJlZV91cGRhdGUgbWV0YWRhdGEgYXJlIG9mZnNldHMgaW50byB0 aGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9zcGd4bG9nLmggYi9zcmMvaW5j bHVkZS9hY2Nlc3Mvc3BneGxvZy5oCmluZGV4IGI5ZDY3NTM1MzMuLjc1MjY3YTQ5MTQgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9zcGd4bG9nLmgKKysrIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3NwZ3hsb2cuaApAQCAtMjQwLDYgKzI0MCw4IEBAIHR5cGVkZWYgc3RydWN0 IHNwZ3hsb2dWYWN1dW1SZWRpcmVjdAogCXVpbnQxNgkJblRvUGxhY2Vob2xkZXI7IC8qIG51 bWJlciBvZiByZWRpcmVjdHMgdG8gbWFrZSBwbGFjZWhvbGRlcnMgKi8KIAlPZmZzZXROdW1i ZXIgZmlyc3RQbGFjZWhvbGRlcjsJLyogZmlyc3QgcGxhY2Vob2xkZXIgdHVwbGUgdG8gcmVt b3ZlICovCiAJVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsJLyogbmV3 ZXN0IFhJRCBvZiByZW1vdmVkIHJlZGlyZWN0cyAqLworCWJvb2wgICAgICAgIGlzQ2F0YWxv Z1JlbDsJLyogdG8gaGFuZGxlIHJlY292ZXJ5IGNvbmZsaWN0IGR1cmluZyBsb2dpY2FsCisJ CQkJCQkJCSAqIGRlY29kaW5nIG9uIHN0YW5kYnkgKi8KIAogCS8qIG9mZnNldHMgb2YgcmVk aXJlY3QgdHVwbGVzIHRvIG1ha2UgcGxhY2Vob2xkZXJzIGZvbGxvdyAqLwogCU9mZnNldE51 bWJlciBvZmZzZXRzW0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaCBiL3NyYy9pbmNsdWRlL2FjY2Vz cy92aXNpYmlsaXR5bWFwZGVmcy5oCmluZGV4IDkxNjViOTQ1NmIuLjczMDZhMWMzZWUgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oCisrKyBi L3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oCkBAIC0xNyw5ICsxNywx MSBAQAogI2RlZmluZSBCSVRTX1BFUl9IRUFQQkxPQ0sgMgogCiAvKiBGbGFncyBmb3IgYml0 IG1hcCAqLwotI2RlZmluZSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFCTB4MDEKLSNkZWZp bmUgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOCTB4MDIKLSNkZWZpbmUgVklTSUJJTElUWU1B UF9WQUxJRF9CSVRTCTB4MDMJLyogT1Igb2YgYWxsIHZhbGlkIHZpc2liaWxpdHltYXAKLQkJ CQkJCQkJCQkJICogZmxhZ3MgYml0cyAqLworI2RlZmluZSBWSVNJQklMSVRZTUFQX0FMTF9W SVNJQkxFCQkJCQkJCQkweDAxCisjZGVmaW5lIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTgkJ CQkJCQkJMHgwMgorI2RlZmluZSBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMJCQkJCQkJCTB4 MDMJLyogT1Igb2YgYWxsIHZhbGlkIHZpc2liaWxpdHltYXAKKwkJCQkJCQkJCQkJCQkJCQkJ CSAqIGZsYWdzIGJpdHMgKi8KKyNkZWZpbmUgVklTSUJJTElUWU1BUF9JU19DQVRBTE9HX1JF TAkJCQkJCQkweDA0CS8qIHRvIGhhbmRsZSByZWNvdmVyeSBjb25mbGljdCBkdXJpbmcgbG9n aWNhbAorCQkJCQkJCQkJCQkJCQkJCQkJICogZGVjb2Rpbmcgb24gc3RhbmRieSAqLwogCiAj ZW5kaWYJCQkJCQkJLyogVklTSUJJTElUWU1BUERFRlNfSCAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvdXRpbHMvcmVsLmggYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaAppbmRleCBh Zjk3ODUwMzhkLi4wY2ZlMDJhYTRhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9y ZWwuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaApAQCAtMjcsNiArMjcsNyBAQAog I2luY2x1ZGUgInN0b3JhZ2Uvc21nci5oIgogI2luY2x1ZGUgInV0aWxzL3JlbGNhY2hlLmgi CiAjaW5jbHVkZSAidXRpbHMvcmVsdHJpZ2dlci5oIgorI2luY2x1ZGUgImNhdGFsb2cvY2F0 YWxvZy5oIgogCiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy90dXBsZXNv cnQuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc29ydC5oCmluZGV4IDEyNTc4ZTQyYmMu LjM5NWFiZmU1OTYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc29ydC5o CisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc29ydC5oCkBAIC0zOTksNyArMzk5LDkg QEAgZXh0ZXJuIFR1cGxlc29ydHN0YXRlICp0dXBsZXNvcnRfYmVnaW5faGVhcChUdXBsZURl c2MgdHVwRGVzYywKIAkJCQkJCQkJCQkJaW50IHdvcmtNZW0sIFNvcnRDb29yZGluYXRlIGNv b3JkaW5hdGUsCiAJCQkJCQkJCQkJCWludCBzb3J0b3B0KTsKIGV4dGVybiBUdXBsZXNvcnRz dGF0ZSAqdHVwbGVzb3J0X2JlZ2luX2NsdXN0ZXIoVHVwbGVEZXNjIHR1cERlc2MsCi0JCQkJ CQkJCQkJCSAgIFJlbGF0aW9uIGluZGV4UmVsLCBpbnQgd29ya01lbSwKKwkJCQkJCQkJCQkJ ICAgUmVsYXRpb24gaW5kZXhSZWwsCisJCQkJCQkJCQkJCSAgIFJlbGF0aW9uIGhlYXByZWws CisJCQkJCQkJCQkJCSAgIGludCB3b3JrTWVtLAogCQkJCQkJCQkJCQkgICBTb3J0Q29vcmRp bmF0ZSBjb29yZGluYXRlLAogCQkJCQkJCQkJCQkgICBpbnQgc29ydG9wdCk7CiBleHRlcm4g VHVwbGVzb3J0c3RhdGUgKnR1cGxlc29ydF9iZWdpbl9pbmRleF9idHJlZShSZWxhdGlvbiBo ZWFwUmVsLAotLSAKMi4zNC4xCgo= --------------xW006q159UiWPtHw9wcHAuVA--