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 1nJEeF-0003f0-B2 for pgsql-hackers@arkaria.postgresql.org; Sun, 13 Feb 2022 13:10:40 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nJEeC-0001wX-Ev for pgsql-hackers@arkaria.postgresql.org; Sun, 13 Feb 2022 13:10:36 +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 1nJEeB-0001w9-LO for pgsql-hackers@lists.postgresql.org; Sun, 13 Feb 2022 13:10:36 +0000 Received: from mail-ej1-x62d.google.com ([2a00:1450:4864:20::62d]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1nJEe5-0006fZ-QS for pgsql-hackers@lists.postgresql.org; Sun, 13 Feb 2022 13:10:34 +0000 Received: by mail-ej1-x62d.google.com with SMTP id lw4so1384214ejb.12 for ; Sun, 13 Feb 2022 05:10:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; h=message-id:date:mime-version:user-agent:subject:content-language :from:to:cc:references:in-reply-to; bh=R9xAQWRuk8PlwQhNn+RGolGYc4PF29hGyVH3VV5hP5M=; b=dHgJ3afzdk/ysZIlbrfmz44todLxBEsaJbjHERi3BIx5mfgiF/Uzzg5fcpfZMstFhR JjWnDq4syMI6yfy8+Cs7TW48oeCsvbK+UDHWgDascZOay/whr+WMAnPATsVl3hbPa2lC aQLptoPAusrjI9383dqVkToGZH+cP6LD9fnOcg6vGk2cLOO6PF0jD3/GO1bjuOXzjaZh Rt6pgeze5TA9hAV09UzPANoT26jVgaEDY3ZL4h1t4ohjGV9W2VJ4f1kUA2QLJqZW0vAj KTVmWlayr/QmyjcH7A8bVcS9jgFjW01ONdXQWqlr9CtqzDKsVbpnN3Ofr5+CKAufpmeg /XYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :content-language:from:to:cc:references:in-reply-to; bh=R9xAQWRuk8PlwQhNn+RGolGYc4PF29hGyVH3VV5hP5M=; b=NLDu7eppCG6znXKFRW0XOuYoZ3KxyH5XcAOmtHAKNWXtq08r8nfq/Gwz/2pv/jsr47 S8unnTOkErdpYpX/+AdkvVdqko2iuHuxf+jY1mnWDQQcGmyBCoeIZXPkApjayZ/EIi1s eciH1UAQCY5GK23K9+GwE1d1q84lpaCK25twx+ldDjugCUum7CY/UpyXwE+/c1U0ZEEZ mMJiSA1/U2igjh/11CjCCqGkOFXgtzrBVCyv1SIKqlQ/Y3PR/Y2LAFoYV8nrS8f/hf+P D7FlRyyEHdGSZCNg7gDyfTLHDqpFxh9HOLS13C8Yfx9jJX5Klw57VDxymgxXvdm4wIlX JxXA== X-Gm-Message-State: AOAM531HVg5KKRqQQCJ7hA33/CLt6bvH1MXeX3UPviqyQQ2Uf6PRP/rv /4hJGM+GwIiyQsUU+f/5i0WjqhxnFXDJEB2E08j5nlop24uWmlYWJeRU8S6ZfqZMmbkYEqDfKFR 5unSNYKXN+Ae7InpJZMYG9Q/ABtq+UPNwKcJBn9JTzwzQupWX3Xmtup2Hbv0gzmZ6dyUX8UAO9E DTbN3ZhU1fwrBPjQP4CTnqOX/n5v0w46/5dYr+AKWwVc6YiX6U1wVXZTJYsgdPYyg= X-Google-Smtp-Source: ABdhPJxg6OVNMr2h+LEHdGZlypdEsB+NaPh3NaO+qOwbm4AXuteuvlZyTCFQWoTjLHuMsTXrwiwNHQ== X-Received: by 2002:a17:906:51c9:: with SMTP id v9mr4774805ejk.113.1644757828225; Sun, 13 Feb 2022 05:10:28 -0800 (PST) Received: from [10.137.0.19] (ip-86-49-251-241.net.upcbroadband.cz. [86.49.251.241]) by smtp.gmail.com with ESMTPSA id i22sm7490478ejx.128.2022.02.13.05.10.26 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 13 Feb 2022 05:10:27 -0800 (PST) Content-Type: multipart/mixed; boundary="------------FyoxFoByZK72zC8MDOhgNTNp" Message-ID: <2eed0f76-3a1a-8b8b-ac1b-e0f9a0d98287@enterprisedb.com> Date: Sun, 13 Feb 2022 14:10:25 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 Subject: Re: logical decoding and replication of sequences Content-Language: en-US From: Tomas Vondra To: Peter Eisentraut , Petr Jelinek Cc: Amit Kapila , PostgreSQL Hackers References: <118b249f-e4ef-2faf-8e25-dd25236dc964@enterprisedb.com> <90b4e402-3f07-14f4-deca-5eaca31f70a3@enterprisedb.com> <22aef14d-0ea1-9044-c2e7-29f88762eaec@enterprisedb.com> <32540e16-fab6-f790-b99b-5a8fca8bde52@enterprisedb.com> <3B014BE4-EE61-4834-8FF6-937B43C46BC7@enterprisedb.com> <3d68b45a-ceb5-6824-3a39-f53411fd0c88@enterprisedb.com> <802f8b1b-a798-be52-c829-7f0fb9faafd5@enterprisedb.com> <983bf0c7-9757-fd13-3896-8452cf4c4c52@enterprisedb.com> <9211312a-6501-1caf-ee7b-c0d4814b6091@enterprisedb.com> <41ada110-bc7c-32a3-08bd-fb5023dd74ba@enterprisedb.com> In-Reply-To: X-CLOUD-SEC-AV-Info: enterprisedb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 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. --------------FyoxFoByZK72zC8MDOhgNTNp Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 2/12/22 20:58, Tomas Vondra wrote: > On 2/12/22 01:34, Tomas Vondra wrote: >> On 2/10/22 19:17, Tomas Vondra wrote: >>> I've polished & pushed the first part adding sequence decoding >>> infrastructure etc. Attached are the two remaining parts. >>> >>> I plan to wait a day or two and then push the test_decoding part. The >>> last part (for built-in replication) will need more work and maybe >>> rethinking the grammar etc. >>> >> >> I've pushed the second part, adding sequences to test_decoding. >> >> Here's the remaining part, rebased, with a small tweak in the TAP test >> to eliminate the issue with not waiting for sequence increments. I've >> kept the tweak in a separate patch, so that we can throw it away easily >> if we happen to resolve the issue. >> > > Hmm, cfbot was not happy about this, so here's a version fixing the > elog() format issue reported by CirrusCI/mingw by ditching the log > message. It was useful for debugging, but otherwise just noise. > There was another elog() making mingw unhappy, so here's a fix for that. This should also fix an issue on the macOS machine. This is a thinko in the tests, because wait_for_catchup() may not wait for all the sequence increments after a rollback. The default mode is "write" which uses pg_current_wal_lsn(), and that may be a bit stale after a rollback. Doing a simple insert after the rollback fixes this (using other LSN, like pg_current_wal_insert_lsn() would work too, but it'd cause long waits in the test). regards -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company --------------FyoxFoByZK72zC8MDOhgNTNp Content-Type: text/x-patch; charset=UTF-8; name="0001-Add-support-for-decoding-sequences-to-built-20220213.patch" Content-Disposition: attachment; filename*0="0001-Add-support-for-decoding-sequences-to-built-20220213.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBjMmFiNjMzYmE0NTdmNTU2Mzc2OWJkMzEzZGFjNjA3OGI0MWU0MzliIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogVGh1LCAxMCBGZWIgMjAyMiAxNToxODo1OSArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggMS8yXSBBZGQgc3VwcG9ydCBmb3IgZGVjb2Rpbmcgc2VxdWVuY2VzIHRv IGJ1aWx0LWluCiByZXBsaWNhdGlvbgoKLS0tCiBkb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dt bCAgICAgICAgICAgICAgICAgIHwgIDcxICsrKysKIGRvYy9zcmMvc2dtbC9yZWYvYWx0ZXJf cHVibGljYXRpb24uc2dtbCAgICAgfCAgMjQgKy0KIGRvYy9zcmMvc2dtbC9yZWYvYWx0ZXJf c3Vic2NyaXB0aW9uLnNnbWwgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdf cHVibGljYXRpb24uYyAgICAgICAgfCAxNDkgKysrKysrKystCiBzcmMvYmFja2VuZC9jYXRh bG9nL3N5c3RlbV92aWV3cy5zcWwgICAgICAgIHwgIDEwICsKIHNyYy9iYWNrZW5kL2NvbW1h bmRzL3B1YmxpY2F0aW9uY21kcy5jICAgICAgfCAzNTAgKysrKysrKysrKysrKysrKysrKy0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMgICAgICAgICAgICAgfCAgNzkgKysr KysKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICAgfCAyNzIg KysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24u YyAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYyAgICAgICAg ICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYyAgICAgICAg ICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAg ICAgICB8ICAzMiArKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5j ICAgICB8ICA1MiArKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVz eW5jLmMgfCAxMTQgKysrKysrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93 b3JrZXIuYyAgICB8ICA1NiArKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1 dC9wZ291dHB1dC5jIHwgIDg1ICsrKystCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxj YWNoZS5jICAgICAgICAgIHwgICA0ICstCiBzcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMg ICAgICAgICAgICAgICAgIHwgIDE0ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2Mu ZGF0ICAgICAgICAgICAgIHwgICA1ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGlj YXRpb24uaCAgICAgICAgfCAgMTQgKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvc2VxdWVuY2Uu aCAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgg ICAgICAgICAgICAgIHwgICA2ICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxw cm90by5oICAgICAgfCAgMTkgKysKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0 LmggICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5v dXQgICAgICAgICB8ICAgOCArCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjhfc2VxdWVu Y2VzLnBsICAgIHwgMjAxICsrKysrKysrKysrCiAyNiBmaWxlcyBjaGFuZ2VkLCAxNTM5IGlu c2VydGlvbnMoKyksIDM2IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAyOF9zZXF1ZW5jZXMucGwKCmRpZmYgLS1naXQgYS9kb2Mv c3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmlu ZGV4IDg3OWQyZGJjZTAzLi4yNzFkYzAzZTVhMiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTk1 NDAsNiArOTU0MCwxMSBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0 aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogICAgICAgPGVu dHJ5PnByZXBhcmVkIHRyYW5zYWN0aW9uczwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAg IDxyb3c+CisgICAgICA8ZW50cnk+PGxpbmsgbGlua2VuZD0idmlldy1wZy1wdWJsaWNhdGlv bi1zZXF1ZW5jZXMiPjxzdHJ1Y3RuYW1lPnBnX3B1YmxpY2F0aW9uX3NlcXVlbmNlczwvc3Ry dWN0bmFtZT48L2xpbms+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5wdWJsaWNhdGlvbnMgYW5k IHRoZWlyIGFzc29jaWF0ZWQgc2VxdWVuY2VzPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAg ICAgPHJvdz4KICAgICAgIDxlbnRyeT48bGluayBsaW5rZW5kPSJ2aWV3LXBnLXB1YmxpY2F0 aW9uLXRhYmxlcyI+PHN0cnVjdG5hbWU+cGdfcHVibGljYXRpb25fdGFibGVzPC9zdHJ1Y3Ru YW1lPjwvbGluaz48L2VudHJ5PgogICAgICAgPGVudHJ5PnB1YmxpY2F0aW9ucyBhbmQgdGhl aXIgYXNzb2NpYXRlZCB0YWJsZXM8L2VudHJ5PgpAQCAtMTEzNzUsNiArMTEzODAsNzIgQEAg U0VMRUNUICogRlJPTSBwZ19sb2NrcyBwbCBMRUZUIEpPSU4gcGdfcHJlcGFyZWRfeGFjdHMg cHB4CiAKICA8L3NlY3QxPgogCisgPHNlY3QxIGlkPSJ2aWV3LXBnLXB1YmxpY2F0aW9uLXNl cXVlbmNlcyI+CisgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19wdWJsaWNhdGlvbl9zZXF1ZW5j ZXM8L3N0cnVjdG5hbWU+PC90aXRsZT4KKworICA8aW5kZXh0ZXJtIHpvbmU9InZpZXctcGct cHVibGljYXRpb24tc2VxdWVuY2VzIj4KKyAgIDxwcmltYXJ5PnBnX3B1YmxpY2F0aW9uX3Nl cXVlbmNlczwvcHJpbWFyeT4KKyAgPC9pbmRleHRlcm0+CisKKyAgPHBhcmE+CisgICBUaGUg dmlldyA8c3RydWN0bmFtZT5wZ19wdWJsaWNhdGlvbl9zZXF1ZW5jZXM8L3N0cnVjdG5hbWU+ IHByb3ZpZGVzCisgICBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbWFwcGluZyBiZXR3ZWVuIHB1 YmxpY2F0aW9ucyBhbmQgdGhlIHNlcXVlbmNlcyB0aGV5CisgICBjb250YWluLiAgVW5saWtl IHRoZSB1bmRlcmx5aW5nIGNhdGFsb2cKKyAgIDxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGct cHVibGljYXRpb24tcmVsIj48c3RydWN0bmFtZT5wZ19wdWJsaWNhdGlvbl9yZWw8L3N0cnVj dG5hbWU+PC9saW5rPiwKKyAgIHRoaXMgdmlldyBleHBhbmRzCisgICBwdWJsaWNhdGlvbnMg ZGVmaW5lZCBhcyA8bGl0ZXJhbD5GT1IgQUxMIFNFUVVFTkNFUzwvbGl0ZXJhbD4sIHNvIGZv ciBzdWNoCisgICBwdWJsaWNhdGlvbnMgdGhlcmUgd2lsbCBiZSBhIHJvdyBmb3IgZWFjaCBl bGlnaWJsZSBzZXF1ZW5jZS4KKyAgPC9wYXJhPgorCisgIDx0YWJsZT4KKyAgIDx0aXRsZT48 c3RydWN0bmFtZT5wZ19wdWJsaWNhdGlvbl9zZXF1ZW5jZXM8L3N0cnVjdG5hbWU+IENvbHVt bnM8L3RpdGxlPgorICAgPHRncm91cCBjb2xzPSIxIj4KKyAgICA8dGhlYWQ+CisgICAgIDxy b3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9s ZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIENvbHVtbiBUeXBlCisgICAgICA8L3Bh cmE+CisgICAgICA8cGFyYT4KKyAgICAgICBEZXNjcmlwdGlvbgorICAgICAgPC9wYXJhPjwv ZW50cnk+CisgICAgIDwvcm93PgorICAgIDwvdGhlYWQ+CisKKyAgICA8dGJvZHk+CisgICAg IDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEg cm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wdWJuYW1l PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+bmFtZTwvdHlwZT4KKyAgICAgICAocmVmZXJlbmNlcyA8 bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLXB1YmxpY2F0aW9uIj48c3RydWN0bmFtZT5wZ19w dWJsaWNhdGlvbjwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5wdWJuYW1lPC9z dHJ1Y3RmaWVsZD4pCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBOYW1l IG9mIHB1YmxpY2F0aW9uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisK KyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48 cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnNj aGVtYW5hbWU8L3N0cnVjdGZpZWxkPiA8dHlwZT5uYW1lPC90eXBlPgorICAgICAgIChyZWZl cmVuY2VzIDxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctbmFtZXNwYWNlIj48c3RydWN0bmFt ZT5wZ19uYW1lc3BhY2U8L3N0cnVjdG5hbWU+PC9saW5rPi48c3RydWN0ZmllbGQ+bnNwbmFt ZTwvc3RydWN0ZmllbGQ+KQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAg TmFtZSBvZiBzY2hlbWEgY29udGFpbmluZyBzZXF1ZW5jZQorICAgICAgPC9wYXJhPjwvZW50 cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0 YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAg ICAgIDxzdHJ1Y3RmaWVsZD5zZXF1ZW5jZW5hbWU8L3N0cnVjdGZpZWxkPiA8dHlwZT5uYW1l PC90eXBlPgorICAgICAgIChyZWZlcmVuY2VzIDxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGct Y2xhc3MiPjxzdHJ1Y3RuYW1lPnBnX2NsYXNzPC9zdHJ1Y3RuYW1lPjwvbGluaz4uPHN0cnVj dGZpZWxkPnJlbG5hbWU8L3N0cnVjdGZpZWxkPikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxw YXJhPgorICAgICAgIE5hbWUgb2Ygc2VxdWVuY2UKKyAgICAgIDwvcGFyYT48L2VudHJ5Pgor ICAgICA8L3Jvdz4KKyAgICA8L3Rib2R5PgorICAgPC90Z3JvdXA+CisgIDwvdGFibGU+Cisg PC9zZWN0MT4KKwogIDxzZWN0MSBpZD0idmlldy1wZy1wdWJsaWNhdGlvbi10YWJsZXMiPgog ICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfcHVibGljYXRpb25fdGFibGVzPC9zdHJ1Y3RuYW1l PjwvdGl0bGU+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGlj YXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbApp bmRleCA3YzdjMjdiZjdjZS4uOWRhODI3NGFlMmMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2Fs dGVyX3B1YmxpY2F0aW9uLnNnbWwKQEAgLTMxLDcgKzMxLDkgQEAgQUxURVIgUFVCTElDQVRJ T04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBS RU5BTUUgVE8gPHIKIDxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnB1YmxpY2F0aW9uX29iamVjdDwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFz ZT4KIAogICAgIFRBQkxFIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0gWywgLi4uIF0KKyAgICBTRVFVRU5D RSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2VxdWVuY2VfbmFtZTwvcmVwbGFj ZWFibGU+IFsgKiBdIFssIC4uLiBdCiAgICAgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgeyA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2NoZW1hX25hbWU8L3JlcGxhY2VhYmxlPiB8 IENVUlJFTlRfU0NIRU1BIH0gWywgLi4uIF0KKyAgICBBTEwgU0VRVUVOQ0VTIElOIFNDSEVN QSB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zY2hlbWFfbmFtZTwvcmVwbGFj ZWFibGU+IHwgQ1VSUkVOVF9TQ0hFTUEgfSBbLCAuLi4gXQogPC9zeW5vcHNpcz4KICA8L3Jl ZnN5bm9wc2lzZGl2PgogCkBAIC01Niw3ICs1OCwxOCBAQCBBTFRFUiBQVUJMSUNBVElPTiA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFN RSBUTyA8cgogICA8L3BhcmE+CiAKICAgPHBhcmE+Ci0gICBUaGUgZm91cnRoIHZhcmlhbnQg b2YgdGhpcyBjb21tYW5kIGxpc3RlZCBpbiB0aGUgc3lub3BzaXMgY2FuIGNoYW5nZQorICAg VGhlIG5leHQgdGhyZWUgdmFyaWFudHMgY2hhbmdlIHdoaWNoIHNlcXVlbmNlcyBhcmUgcGFy dCBvZiB0aGUgcHVibGljYXRpb24uCisgICBUaGUgPGxpdGVyYWw+U0VUIFNFUVVFTkNFPC9s aXRlcmFsPiBjbGF1c2Ugd2lsbCByZXBsYWNlIHRoZSBsaXN0IG9mIHNlcXVlbmNlcworICAg aW4gdGhlIHB1YmxpY2F0aW9uIHdpdGggdGhlIHNwZWNpZmllZCBvbmUuICBUaGUgPGxpdGVy YWw+QUREIFNFUVVFTkNFPC9saXRlcmFsPgorICAgYW5kIDxsaXRlcmFsPkRST1AgU0VRVUVO Q0U8L2xpdGVyYWw+IGNsYXVzZXMgd2lsbCBhZGQgYW5kIHJlbW92ZSBvbmUgb3IgbW9yZQor ICAgc2VxdWVuY2VzIGZyb20gdGhlIHB1YmxpY2F0aW9uLiAgTm90ZSB0aGF0IGFkZGluZyBz ZXF1ZW5jZXMgdG8gYSBwdWJsaWNhdGlvbgorICAgdGhhdCBpcyBhbHJlYWR5IHN1YnNjcmli ZWQgdG8gd2lsbCByZXF1aXJlIGEgPGxpdGVyYWw+QUxURVIgU1VCU0NSSVBUSU9OCisgICAu Li4gUkVGUkVTSCBQVUJMSUNBVElPTjwvbGl0ZXJhbD4gYWN0aW9uIG9uIHRoZSBzdWJzY3Jp YmluZyBzaWRlIGluIG9yZGVyCisgICB0byBiZWNvbWUgZWZmZWN0aXZlLgorICA8L3BhcmE+ CisKKyAgPHBhcmE+CisgICBUaGUgc2V2ZW50aCB2YXJpYW50IG9mIHRoaXMgY29tbWFuZCBs aXN0ZWQgaW4gdGhlIHN5bm9wc2lzIGNhbiBjaGFuZ2UKICAgIGFsbCBvZiB0aGUgcHVibGlj YXRpb24gcHJvcGVydGllcyBzcGVjaWZpZWQgaW4KICAgIDx4cmVmIGxpbmtlbmQ9InNxbC1j cmVhdGVwdWJsaWNhdGlvbiIvPi4gIFByb3BlcnRpZXMgbm90IG1lbnRpb25lZCBpbiB0aGUK ICAgIGNvbW1hbmQgcmV0YWluIHRoZWlyIHByZXZpb3VzIHNldHRpbmdzLgpAQCAtMTIzLDYg KzEzNiwxNSBAQCBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFNRSBUTyA8cgogICAgIDwvbGlzdGl0ZW0+ CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2VxdWVuY2VfbmFtZTwvcmVwbGFjZWFi bGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBOYW1lIG9m IGFuIGV4aXN0aW5nIHNlcXVlbmNlLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4K KyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxs aXRlcmFsPlNFVCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlv bl9wYXJhbWV0ZXI8L3JlcGxhY2VhYmxlPiBbPSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+dmFsdWU8L3JlcGxhY2VhYmxlPl0gWywgLi4uIF0gKTwvbGl0ZXJhbD48L3Rlcm0+ CiAgICAgPGxpc3RpdGVtPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9z dWJzY3JpcHRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9u LnNnbWwKaW5kZXggMGIwMjdjYzM0NjIuLjhmMjhjZjAzZjQwIDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwKQEAgLTE0Nyw3ICsxNDcsNyBAQCBBTFRF UiBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3Jl cGxhY2VhYmxlPiBSRU5BTUUgVE8gPAogICAgIDxsaXN0aXRlbT4KICAgICAgPHBhcmE+CiAg ICAgICBGZXRjaCBtaXNzaW5nIHRhYmxlIGluZm9ybWF0aW9uIGZyb20gcHVibGlzaGVyLiAg VGhpcyB3aWxsIHN0YXJ0Ci0gICAgICByZXBsaWNhdGlvbiBvZiB0YWJsZXMgdGhhdCB3ZXJl IGFkZGVkIHRvIHRoZSBzdWJzY3JpYmVkLXRvIHB1YmxpY2F0aW9ucworICAgICAgcmVwbGlj YXRpb24gb2YgdGFibGVzIGFuZCBzZXF1ZW5jZXMgdGhhdCB3ZXJlIGFkZGVkIHRvIHRoZSBz dWJzY3JpYmVkLXRvIHB1YmxpY2F0aW9ucwogICAgICAgc2luY2UgPGNvbW1hbmQ+Q1JFQVRF IFNVQlNDUklQVElPTjwvY29tbWFuZD4gb3IKICAgICAgIHRoZSBsYXN0IGludm9jYXRpb24g b2YgPGNvbW1hbmQ+UkVGUkVTSCBQVUJMSUNBVElPTjwvY29tbWFuZD4uCiAgICAgIDwvcGFy YT4KQEAgLTE2NCw3ICsxNjQsNyBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPAogICAg ICAgICAgIFNwZWNpZmllcyB3aGV0aGVyIHRvIGNvcHkgcHJlLWV4aXN0aW5nIGRhdGEgaW4g dGhlIHB1YmxpY2F0aW9ucwogICAgICAgICAgIHRoYXQgYXJlIGJlaW5nIHN1YnNjcmliZWQg dG8gd2hlbiB0aGUgcmVwbGljYXRpb24gc3RhcnRzLgogICAgICAgICAgIFRoZSBkZWZhdWx0 IGlzIDxsaXRlcmFsPnRydWU8L2xpdGVyYWw+LiAgKFByZXZpb3VzbHktc3Vic2NyaWJlZAot ICAgICAgICAgIHRhYmxlcyBhcmUgbm90IGNvcGllZC4pCisgICAgICAgICAgdGFibGVzIGFu ZCBzZXF1ZW5jZXMgYXJlIG5vdCBjb3BpZWQuKQogICAgICAgICAgPC9wYXJhPgogICAgICAg ICA8L2xpc3RpdGVtPgogICAgICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19wdWJsaWNhdGlvbi5jCmluZGV4IGUxNGNhMmY1NjMwLi4xYTllMDViYTk4YiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwpAQCAtNTQsNyArNTQsOCBAQCBj aGVja19wdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oUmVsYXRpb24gdGFyZ2V0cmVsKQogewog CS8qIE11c3QgYmUgYSByZWd1bGFyIG9yIHBhcnRpdGlvbmVkIHRhYmxlICovCiAJaWYgKFJl bGF0aW9uR2V0Rm9ybSh0YXJnZXRyZWwpLT5yZWxraW5kICE9IFJFTEtJTkRfUkVMQVRJT04g JiYKLQkJUmVsYXRpb25HZXRGb3JtKHRhcmdldHJlbCktPnJlbGtpbmQgIT0gUkVMS0lORF9Q QVJUSVRJT05FRF9UQUJMRSkKKwkJUmVsYXRpb25HZXRGb3JtKHRhcmdldHJlbCktPnJlbGtp bmQgIT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSAmJgorCQlSZWxhdGlvbkdldEZvcm0o dGFyZ2V0cmVsKS0+cmVsa2luZCAhPSBSRUxLSU5EX1NFUVVFTkNFKQogCQllcmVwb3J0KEVS Uk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAog CQkJCSBlcnJtc2coImNhbm5vdCBhZGQgcmVsYXRpb24gXCIlc1wiIHRvIHB1YmxpY2F0aW9u IiwKQEAgLTEzMSw3ICsxMzIsOCBAQCBzdGF0aWMgYm9vbAogaXNfcHVibGlzaGFibGVfY2xh c3MoT2lkIHJlbGlkLCBGb3JtX3BnX2NsYXNzIHJlbHR1cGxlKQogewogCXJldHVybiAocmVs dHVwbGUtPnJlbGtpbmQgPT0gUkVMS0lORF9SRUxBVElPTiB8fAotCQkJcmVsdHVwbGUtPnJl bGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkgJiYKKwkJCXJlbHR1cGxlLT5y ZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUgfHwKKwkJCXJlbHR1cGxlLT5y ZWxraW5kID09IFJFTEtJTkRfU0VRVUVOQ0UpICYmCiAJCSFJc0NhdGFsb2dSZWxhdGlvbk9p ZChyZWxpZCkgJiYKIAkJcmVsdHVwbGUtPnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RF TkNFX1BFUk1BTkVOVCAmJgogCQlyZWxpZCA+PSBGaXJzdE5vcm1hbE9iamVjdElkOwpAQCAt NTAzLDYgKzUwNSwxMSBAQCBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIFB1 YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCkKIAkJRm9ybV9wZ19wdWJsaWNhdGlvbl9y ZWwgcHVicmVsOwogCiAJCXB1YnJlbCA9IChGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCkgR0VU U1RSVUNUKHR1cCk7CisKKwkJLyogc2tpcCBzZXF1ZW5jZXMgaGVyZSAqLworCQlpZiAoZ2V0 X3JlbF9yZWxraW5kKHB1YnJlbC0+cHJyZWxpZCkgPT0gUkVMS0lORF9TRVFVRU5DRSkKKwkJ CWNvbnRpbnVlOworCiAJCXJlc3VsdCA9IEdldFB1YlBhcnRpdGlvbk9wdGlvblJlbGF0aW9u cyhyZXN1bHQsIHB1Yl9wYXJ0b3B0LAogCQkJCQkJCQkJCQkJcHVicmVsLT5wcnJlbGlkKTsK IAl9CkBAIC01MTcsNiArNTI0LDQ5IEBAIEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBw dWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQogCXJldHVybiByZXN1bHQ7 CiB9CiAKKy8qCisgKiBHZXRzIGxpc3Qgb2YgcmVsYXRpb24gb2lkcyBmb3IgYSBwdWJsaWNh dGlvbiAoc2VxdWVuY2VzIG9ubHkpLgorICoKKyAqIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNl ZCBmb3Igbm9ybWFsIHB1YmxpY2F0aW9ucywgdGhlIEZPUiBBTEwgVEFCTEVTCisgKiBzaG91 bGQgdXNlIEdldEFsbFNlcXVlbmNlc1B1YmxpY2F0aW9uUmVsYXRpb25zKCkuCisgKi8KK0xp c3QgKgorR2V0UHVibGljYXRpb25TZXF1ZW5jZVJlbGF0aW9ucyhPaWQgcHViaWQpCit7CisJ TGlzdAkgICAqcmVzdWx0OworCVJlbGF0aW9uCXB1YnJlbHNyZWw7CisJU2NhbktleURhdGEg c2NhbmtleTsKKwlTeXNTY2FuRGVzYyBzY2FuOworCUhlYXBUdXBsZQl0dXA7CisKKwkvKiBG aW5kIGFsbCBwdWJsaWNhdGlvbnMgYXNzb2NpYXRlZCB3aXRoIHRoZSByZWxhdGlvbi4gKi8K KwlwdWJyZWxzcmVsID0gdGFibGVfb3BlbihQdWJsaWNhdGlvblJlbFJlbGF0aW9uSWQsIEFj Y2Vzc1NoYXJlTG9jayk7CisKKwlTY2FuS2V5SW5pdCgmc2NhbmtleSwKKwkJCQlBbnVtX3Bn X3B1YmxpY2F0aW9uX3JlbF9wcnB1YmlkLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwg Rl9PSURFUSwKKwkJCQlPYmplY3RJZEdldERhdHVtKHB1YmlkKSk7CisKKwlzY2FuID0gc3lz dGFibGVfYmVnaW5zY2FuKHB1YnJlbHNyZWwsIFB1YmxpY2F0aW9uUmVsUHJyZWxpZFBycHVi aWRJbmRleElkLAorCQkJCQkJCSAgdHJ1ZSwgTlVMTCwgMSwgJnNjYW5rZXkpOworCisJcmVz dWx0ID0gTklMOworCXdoaWxlIChIZWFwVHVwbGVJc1ZhbGlkKHR1cCA9IHN5c3RhYmxlX2dl dG5leHQoc2NhbikpKQorCXsKKwkJRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwgcHVicmVsOwor CisJCXB1YnJlbCA9IChGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCkgR0VUU1RSVUNUKHR1cCk7 CisKKwkJaWYgKGdldF9yZWxfcmVsa2luZChwdWJyZWwtPnBycmVsaWQpID09IFJFTEtJTkRf U0VRVUVOQ0UpCisJCQlyZXN1bHQgPSBsYXBwZW5kX29pZChyZXN1bHQsIHB1YnJlbC0+cHJy ZWxpZCk7CisJfQorCisJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKKwl0YWJsZV9jbG9zZShw dWJyZWxzcmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCisJcmV0dXJuIHJlc3VsdDsKK30KKwog LyoKICAqIEdldHMgbGlzdCBvZiBwdWJsaWNhdGlvbiBvaWRzIGZvciBwdWJsaWNhdGlvbnMg bWFya2VkIGFzIEZPUiBBTEwgVEFCTEVTLgogICovCkBAIC03NjIsNiArODEyLDQ2IEBAIEdl dEFsbFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25Q YXJ0T3B0IHB1Yl9wYXJ0b3B0KQogCXJldHVybiByZXN1bHQ7CiB9CiAKKy8qCisgKiBHZXRz IGxpc3Qgb2YgYWxsIHJlbGF0aW9uIHB1Ymxpc2hlZCBieSBGT1IgQUxMIFRBQkxFUyBwdWJs aWNhdGlvbihzKS4KKyAqCisgKiBJZiB0aGUgcHVibGljYXRpb24gcHVibGlzaGVzIHBhcnRp dGlvbiBjaGFuZ2VzIHZpYSB0aGVpciByZXNwZWN0aXZlIHJvb3QKKyAqIHBhcnRpdGlvbmVk IHRhYmxlcywgd2UgbXVzdCBleGNsdWRlIHBhcnRpdGlvbnMgaW4gZmF2b3Igb2YgaW5jbHVk aW5nIHRoZQorICogcm9vdCBwYXJ0aXRpb25lZCB0YWJsZXMuCisgKi8KK0xpc3QgKgorR2V0 QWxsU2VxdWVuY2VzUHVibGljYXRpb25SZWxhdGlvbnModm9pZCkKK3sKKwlSZWxhdGlvbglj bGFzc1JlbDsKKwlTY2FuS2V5RGF0YSBrZXlbMV07CisJVGFibGVTY2FuRGVzYyBzY2FuOwor CUhlYXBUdXBsZQl0dXBsZTsKKwlMaXN0CSAgICpyZXN1bHQgPSBOSUw7CisKKwljbGFzc1Jl bCA9IHRhYmxlX29wZW4oUmVsYXRpb25SZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOwor CisJU2NhbktleUluaXQoJmtleVswXSwKKwkJCQlBbnVtX3BnX2NsYXNzX3JlbGtpbmQsCisJ CQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX0NIQVJFUSwKKwkJCQlDaGFyR2V0RGF0dW0o UkVMS0lORF9TRVFVRU5DRSkpOworCisJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9jYXRhbG9n KGNsYXNzUmVsLCAxLCBrZXkpOworCisJd2hpbGUgKCh0dXBsZSA9IGhlYXBfZ2V0bmV4dChz Y2FuLCBGb3J3YXJkU2NhbkRpcmVjdGlvbikpICE9IE5VTEwpCisJeworCQlGb3JtX3BnX2Ns YXNzIHJlbEZvcm0gPSAoRm9ybV9wZ19jbGFzcykgR0VUU1RSVUNUKHR1cGxlKTsKKwkJT2lk CQkJcmVsaWQgPSByZWxGb3JtLT5vaWQ7CisKKwkJaWYgKGlzX3B1Ymxpc2hhYmxlX2NsYXNz KHJlbGlkLCByZWxGb3JtKSkKKwkJCXJlc3VsdCA9IGxhcHBlbmRfb2lkKHJlc3VsdCwgcmVs aWQpOworCX0KKworCXRhYmxlX2VuZHNjYW4oc2Nhbik7CisKKwl0YWJsZV9jbG9zZShjbGFz c1JlbCwgQWNjZXNzU2hhcmVMb2NrKTsKKwlyZXR1cm4gcmVzdWx0OworfQorCiAvKgogICog R2V0IHB1YmxpY2F0aW9uIHVzaW5nIG9pZAogICoKQEAgLTc4NCwxMCArODc0LDEyIEBAIEdl dFB1YmxpY2F0aW9uKE9pZCBwdWJpZCkKIAlwdWItPm9pZCA9IHB1YmlkOwogCXB1Yi0+bmFt ZSA9IHBzdHJkdXAoTmFtZVN0cihwdWJmb3JtLT5wdWJuYW1lKSk7CiAJcHViLT5hbGx0YWJs ZXMgPSBwdWJmb3JtLT5wdWJhbGx0YWJsZXM7CisJcHViLT5hbGxzZXF1ZW5jZXMgPSBwdWJm b3JtLT5wdWJhbGxzZXF1ZW5jZXM7CiAJcHViLT5wdWJhY3Rpb25zLnB1Ymluc2VydCA9IHB1 YmZvcm0tPnB1Ymluc2VydDsKIAlwdWItPnB1YmFjdGlvbnMucHVidXBkYXRlID0gcHViZm9y bS0+cHVidXBkYXRlOwogCXB1Yi0+cHViYWN0aW9ucy5wdWJkZWxldGUgPSBwdWJmb3JtLT5w dWJkZWxldGU7CiAJcHViLT5wdWJhY3Rpb25zLnB1YnRydW5jYXRlID0gcHViZm9ybS0+cHVi dHJ1bmNhdGU7CisJcHViLT5wdWJhY3Rpb25zLnB1YnNlcXVlbmNlID0gcHViZm9ybS0+cHVi c2VxdWVuY2U7CiAJcHViLT5wdWJ2aWFyb290ID0gcHViZm9ybS0+cHVidmlhcm9vdDsKIAog CVJlbGVhc2VTeXNDYWNoZSh0dXApOwpAQCAtOTM3LDMgKzEwMjksNTYgQEAgcGdfZ2V0X3B1 YmxpY2F0aW9uX3RhYmxlcyhQR19GVU5DVElPTl9BUkdTKQogCiAJU1JGX1JFVFVSTl9ET05F KGZ1bmNjdHgpOwogfQorCisvKgorICogUmV0dXJucyBPaWRzIG9mIHNlcXVlbmNlcyBpbiBh IHB1YmxpY2F0aW9uLgorICovCitEYXR1bQorcGdfZ2V0X3B1YmxpY2F0aW9uX3NlcXVlbmNl cyhQR19GVU5DVElPTl9BUkdTKQoreworCUZ1bmNDYWxsQ29udGV4dCAqZnVuY2N0eDsKKwlj aGFyCSAgICpwdWJuYW1lID0gdGV4dF90b19jc3RyaW5nKFBHX0dFVEFSR19URVhUX1BQKDAp KTsKKwlQdWJsaWNhdGlvbiAqcHVibGljYXRpb247CisJTGlzdAkgICAqc2VxdWVuY2VzOwor CisJLyogc3R1ZmYgZG9uZSBvbmx5IG9uIHRoZSBmaXJzdCBjYWxsIG9mIHRoZSBmdW5jdGlv biAqLworCWlmIChTUkZfSVNfRklSU1RDQUxMKCkpCisJeworCQlNZW1vcnlDb250ZXh0IG9s ZGNvbnRleHQ7CisKKwkJLyogY3JlYXRlIGEgZnVuY3Rpb24gY29udGV4dCBmb3IgY3Jvc3Mt Y2FsbCBwZXJzaXN0ZW5jZSAqLworCQlmdW5jY3R4ID0gU1JGX0ZJUlNUQ0FMTF9JTklUKCk7 CisKKwkJLyogc3dpdGNoIHRvIG1lbW9yeSBjb250ZXh0IGFwcHJvcHJpYXRlIGZvciBtdWx0 aXBsZSBmdW5jdGlvbiBjYWxscyAqLworCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3 aXRjaFRvKGZ1bmNjdHgtPm11bHRpX2NhbGxfbWVtb3J5X2N0eCk7CisKKwkJcHVibGljYXRp b24gPSBHZXRQdWJsaWNhdGlvbkJ5TmFtZShwdWJuYW1lLCBmYWxzZSk7CisKKwkJLyoKKwkJ ICogUHVibGljYXRpb25zIHN1cHBvcnQgcGFydGl0aW9uZWQgdGFibGVzLCBhbHRob3VnaCBh bGwgY2hhbmdlcyBhcmUKKwkJICogcmVwbGljYXRlZCB1c2luZyBsZWFmIHBhcnRpdGlvbiBp ZGVudGl0eSBhbmQgc2NoZW1hLCBzbyB3ZSBvbmx5CisJCSAqIG5lZWQgdGhvc2UuCisJCSAq LworCQlpZiAocHVibGljYXRpb24tPmFsbHNlcXVlbmNlcykKKwkJCXNlcXVlbmNlcyA9IEdl dEFsbFNlcXVlbmNlc1B1YmxpY2F0aW9uUmVsYXRpb25zKCk7CisJCWVsc2UKKwkJCXNlcXVl bmNlcyA9IEdldFB1YmxpY2F0aW9uU2VxdWVuY2VSZWxhdGlvbnMocHVibGljYXRpb24tPm9p ZCk7CisKKwkJZnVuY2N0eC0+dXNlcl9mY3R4ID0gKHZvaWQgKikgc2VxdWVuY2VzOworCisJ CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKwl9CisKKwkvKiBzdHVmZiBk b25lIG9uIGV2ZXJ5IGNhbGwgb2YgdGhlIGZ1bmN0aW9uICovCisJZnVuY2N0eCA9IFNSRl9Q RVJDQUxMX1NFVFVQKCk7CisJc2VxdWVuY2VzID0gKExpc3QgKikgZnVuY2N0eC0+dXNlcl9m Y3R4OworCisJaWYgKGZ1bmNjdHgtPmNhbGxfY250ciA8IGxpc3RfbGVuZ3RoKHNlcXVlbmNl cykpCisJeworCQlPaWQJCQlyZWxpZCA9IGxpc3RfbnRoX29pZChzZXF1ZW5jZXMsIGZ1bmNj dHgtPmNhbGxfY250cik7CisKKwkJU1JGX1JFVFVSTl9ORVhUKGZ1bmNjdHgsIE9iamVjdElk R2V0RGF0dW0ocmVsaWQpKTsKKwl9CisKKwlTUkZfUkVUVVJOX0RPTkUoZnVuY2N0eCk7Cit9 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgYi9z cmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKaW5kZXggM2NiNjliMWY4N2Iu LmI1Y2MzM2FjYTM0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92 aWV3cy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCkBA IC0zNzQsNiArMzc0LDE2IEBAIENSRUFURSBWSUVXIHBnX3B1YmxpY2F0aW9uX3RhYmxlcyBB UwogICAgICAgICAgcGdfY2xhc3MgQyBKT0lOIHBnX25hbWVzcGFjZSBOIE9OIChOLm9pZCA9 IEMucmVsbmFtZXNwYWNlKQogICAgIFdIRVJFIEMub2lkID0gR1BULnJlbGlkOwogCitDUkVB VEUgVklFVyBwZ19wdWJsaWNhdGlvbl9zZXF1ZW5jZXMgQVMKKyAgICBTRUxFQ1QKKyAgICAg ICAgUC5wdWJuYW1lIEFTIHB1Ym5hbWUsCisgICAgICAgIE4ubnNwbmFtZSBBUyBzY2hlbWFu YW1lLAorICAgICAgICBDLnJlbG5hbWUgQVMgc2VxdWVuY2VuYW1lCisgICAgRlJPTSBwZ19w dWJsaWNhdGlvbiBQLAorICAgICAgICAgTEFURVJBTCBwZ19nZXRfcHVibGljYXRpb25fc2Vx dWVuY2VzKFAucHVibmFtZSkgR1BULAorICAgICAgICAgcGdfY2xhc3MgQyBKT0lOIHBnX25h bWVzcGFjZSBOIE9OIChOLm9pZCA9IEMucmVsbmFtZXNwYWNlKQorICAgIFdIRVJFIEMub2lk ID0gR1BULnJlbGlkOworCiBDUkVBVEUgVklFVyBwZ19sb2NrcyBBUwogICAgIFNFTEVDVCAq IEZST00gcGdfbG9ja19zdGF0dXMoKSBBUyBMOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1 YmxpY2F0aW9uY21kcy5jCmluZGV4IDBlNGJiOTdmYjczLi4zYmMyZThjY2I2NiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKQEAgLTE2LDYgKzE2LDcgQEAK IAogI2luY2x1ZGUgImFjY2Vzcy9nZW5hbS5oIgogI2luY2x1ZGUgImFjY2Vzcy9odHVwX2Rl dGFpbHMuaCIKKyNpbmNsdWRlICJhY2Nlc3MvcmVsYXRpb24uaCIKICNpbmNsdWRlICJhY2Nl c3MvdGFibGUuaCIKICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgogI2luY2x1ZGUgImNhdGFs b2cvY2F0YWxvZy5oIgpAQCAtNTksNiArNjAsMTIgQEAgc3RhdGljIHZvaWQgUHVibGljYXRp b25BZGRTY2hlbWFzKE9pZCBwdWJpZCwgTGlzdCAqc2NoZW1hcywgYm9vbCBpZl9ub3RfZXhp c3RzLAogCQkJCQkJCQkgIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10KTsKIHN0YXRpYyB2 b2lkIFB1YmxpY2F0aW9uRHJvcFNjaGVtYXMoT2lkIHB1YmlkLCBMaXN0ICpzY2hlbWFzLCBi b29sIG1pc3Npbmdfb2spOwogCitzdGF0aWMgTGlzdCAqT3BlblNlcXVlbmNlTGlzdChMaXN0 ICpzZXF1ZW5jZXMpOworc3RhdGljIHZvaWQgQ2xvc2VTZXF1ZW5jZUxpc3QoTGlzdCAqcmVs cyk7CitzdGF0aWMgdm9pZCBQdWJsaWNhdGlvbkFkZFNlcXVlbmNlcyhPaWQgcHViaWQsIExp c3QgKnJlbHMsIGJvb2wgaWZfbm90X2V4aXN0cywKKwkJCQkJCQkJIEFsdGVyUHVibGljYXRp b25TdG10ICpzdG10KTsKK3N0YXRpYyB2b2lkIFB1YmxpY2F0aW9uRHJvcFNlcXVlbmNlcyhP aWQgcHViaWQsIExpc3QgKnJlbHMsIGJvb2wgbWlzc2luZ19vayk7CisKIHN0YXRpYyB2b2lk CiBwYXJzZV9wdWJsaWNhdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJ CSAgTGlzdCAqb3B0aW9ucywKQEAgLTc3LDYgKzg0LDcgQEAgcGFyc2VfcHVibGljYXRpb25f b3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJcHViYWN0aW9ucy0+cHVidXBkYXRlID0g dHJ1ZTsKIAlwdWJhY3Rpb25zLT5wdWJkZWxldGUgPSB0cnVlOwogCXB1YmFjdGlvbnMtPnB1 YnRydW5jYXRlID0gdHJ1ZTsKKwlwdWJhY3Rpb25zLT5wdWJzZXF1ZW5jZSA9IHRydWU7CiAJ KnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gZmFsc2U7CiAKIAkvKiBQYXJzZSBvcHRp b25zICovCkBAIC0xMDEsNiArMTA5LDcgQEAgcGFyc2VfcHVibGljYXRpb25fb3B0aW9ucyhQ YXJzZVN0YXRlICpwc3RhdGUsCiAJCQlwdWJhY3Rpb25zLT5wdWJ1cGRhdGUgPSBmYWxzZTsK IAkJCXB1YmFjdGlvbnMtPnB1YmRlbGV0ZSA9IGZhbHNlOwogCQkJcHViYWN0aW9ucy0+cHVi dHJ1bmNhdGUgPSBmYWxzZTsKKwkJCXB1YmFjdGlvbnMtPnB1YnNlcXVlbmNlID0gZmFsc2U7 CiAKIAkJCSpwdWJsaXNoX2dpdmVuID0gdHJ1ZTsKIAkJCXB1Ymxpc2ggPSBkZWZHZXRTdHJp bmcoZGVmZWwpOwpAQCAtMTIzLDYgKzEzMiw4IEBAIHBhcnNlX3B1YmxpY2F0aW9uX29wdGlv bnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQlwdWJhY3Rpb25zLT5wdWJkZWxldGUgPSB0 cnVlOwogCQkJCWVsc2UgaWYgKHN0cmNtcChwdWJsaXNoX29wdCwgInRydW5jYXRlIikgPT0g MCkKIAkJCQkJcHViYWN0aW9ucy0+cHVidHJ1bmNhdGUgPSB0cnVlOworCQkJCWVsc2UgaWYg KHN0cmNtcChwdWJsaXNoX29wdCwgInNlcXVlbmNlIikgPT0gMCkKKwkJCQkJcHViYWN0aW9u cy0+cHVic2VxdWVuY2UgPSB0cnVlOwogCQkJCWVsc2UKIAkJCQkJZXJlcG9ydChFUlJPUiwK IAkJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCkBAIC0xNDksNyArMTYw LDkgQEAgcGFyc2VfcHVibGljYXRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAg Ki8KIHN0YXRpYyB2b2lkCiBPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhMaXN0ICpwdWJv YmpzcGVjX2xpc3QsIFBhcnNlU3RhdGUgKnBzdGF0ZSwKLQkJCQkJCSAgIExpc3QgKipyZWxz LCBMaXN0ICoqc2NoZW1hcykKKwkJCQkJCSAgIExpc3QgKip0YWJsZXMsIExpc3QgKipzZXF1 ZW5jZXMsCisJCQkJCQkgICBMaXN0ICoqdGFibGVzX3NjaGVtYXMsIExpc3QgKipzZXF1ZW5j ZXNfc2NoZW1hcywKKwkJCQkJCSAgIExpc3QgKipzY2hlbWFzKQogewogCUxpc3RDZWxsICAg KmNlbGw7CiAJUHVibGljYXRpb25PYmpTcGVjICpwdWJvYmo7CkBAIC0xNjcsMTIgKzE4MCwy MyBAQCBPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhMaXN0ICpwdWJvYmpzcGVjX2xpc3Qs IFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJc3dpdGNoIChwdWJvYmotPnB1Ym9ianR5cGUpCiAJ CXsKIAkJCWNhc2UgUFVCTElDQVRJT05PQkpfVEFCTEU6Ci0JCQkJKnJlbHMgPSBsYXBwZW5k KCpyZWxzLCBwdWJvYmotPnB1YnRhYmxlKTsKKwkJCQkqdGFibGVzID0gbGFwcGVuZCgqdGFi bGVzLCBwdWJvYmotPnB1YnRhYmxlKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgUFVCTElDQVRJ T05PQkpfU0VRVUVOQ0U6CisJCQkJKnNlcXVlbmNlcyA9IGxhcHBlbmQoKnNlcXVlbmNlcywg cHVib2JqLT5wdWJ0YWJsZSk7CiAJCQkJYnJlYWs7CiAJCQljYXNlIFBVQkxJQ0FUSU9OT0JK X1RBQkxFU19JTl9TQ0hFTUE6CiAJCQkJc2NoZW1haWQgPSBnZXRfbmFtZXNwYWNlX29pZChw dWJvYmotPm5hbWUsIGZhbHNlKTsKIAogCQkJCS8qIEZpbHRlciBvdXQgZHVwbGljYXRlcyBp ZiB1c2VyIHNwZWNpZmllcyAic2NoMSwgc2NoMSIgKi8KKwkJCQkqdGFibGVzX3NjaGVtYXMg PSBsaXN0X2FwcGVuZF91bmlxdWVfb2lkKCp0YWJsZXNfc2NoZW1hcywgc2NoZW1haWQpOwor CQkJCSpzY2hlbWFzID0gbGlzdF9hcHBlbmRfdW5pcXVlX29pZCgqc2NoZW1hcywgc2NoZW1h aWQpOworCQkJCWJyZWFrOworCQkJY2FzZSBQVUJMSUNBVElPTk9CSl9TRVFVRU5DRVNfSU5f U0NIRU1BOgorCQkJCXNjaGVtYWlkID0gZ2V0X25hbWVzcGFjZV9vaWQocHVib2JqLT5uYW1l LCBmYWxzZSk7CisKKwkJCQkvKiBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgaWYgdXNlciBzcGVj aWZpZXMgInNjaDEsIHNjaDEiICovCisJCQkJKnNlcXVlbmNlc19zY2hlbWFzID0gbGlzdF9h cHBlbmRfdW5pcXVlX29pZCgqc2VxdWVuY2VzX3NjaGVtYXMsIHNjaGVtYWlkKTsKIAkJCQkq c2NoZW1hcyA9IGxpc3RfYXBwZW5kX3VuaXF1ZV9vaWQoKnNjaGVtYXMsIHNjaGVtYWlkKTsK IAkJCQlicmVhazsKIAkJCWNhc2UgUFVCTElDQVRJT05PQkpfVEFCTEVTX0lOX0NVUl9TQ0hF TUE6CkBAIC0xODYsNiArMjEwLDIxIEBAIE9iamVjdHNJblB1YmxpY2F0aW9uVG9PaWRzKExp c3QgKnB1Ym9ianNwZWNfbGlzdCwgUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCWxpc3RfZnJl ZShzZWFyY2hfcGF0aCk7CiAKIAkJCQkvKiBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgaWYgdXNl ciBzcGVjaWZpZXMgInNjaDEsIHNjaDEiICovCisJCQkJKnRhYmxlc19zY2hlbWFzID0gbGlz dF9hcHBlbmRfdW5pcXVlX29pZCgqdGFibGVzX3NjaGVtYXMsIHNjaGVtYWlkKTsKKwkJCQkq c2NoZW1hcyA9IGxpc3RfYXBwZW5kX3VuaXF1ZV9vaWQoKnNjaGVtYXMsIHNjaGVtYWlkKTsK KwkJCQlicmVhazsKKwkJCWNhc2UgUFVCTElDQVRJT05PQkpfU0VRVUVOQ0VTX0lOX0NVUl9T Q0hFTUE6CisJCQkJc2VhcmNoX3BhdGggPSBmZXRjaF9zZWFyY2hfcGF0aChmYWxzZSk7CisJ CQkJaWYgKHNlYXJjaF9wYXRoID09IE5JTCkgLyogbm90aGluZyB2YWxpZCBpbiBzZWFyY2hf cGF0aD8gKi8KKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQllcnJjb2RlKEVSUkNPREVf VU5ERUZJTkVEX1NDSEVNQSksCisJCQkJCQkJZXJybXNnKCJubyBzY2hlbWEgaGFzIGJlZW4g c2VsZWN0ZWQgZm9yIENVUlJFTlRfU0NIRU1BIikpOworCisJCQkJc2NoZW1haWQgPSBsaW5p dGlhbF9vaWQoc2VhcmNoX3BhdGgpOworCQkJCWxpc3RfZnJlZShzZWFyY2hfcGF0aCk7CisK KwkJCQkvKiBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgaWYgdXNlciBzcGVjaWZpZXMgInNjaDEs IHNjaDEiICovCisJCQkJKnNlcXVlbmNlc19zY2hlbWFzID0gbGlzdF9hcHBlbmRfdW5pcXVl X29pZCgqc2VxdWVuY2VzX3NjaGVtYXMsIHNjaGVtYWlkKTsKIAkJCQkqc2NoZW1hcyA9IGxp c3RfYXBwZW5kX3VuaXF1ZV9vaWQoKnNjaGVtYXMsIHNjaGVtYWlkKTsKIAkJCQlicmVhazsK IAkJCWRlZmF1bHQ6CkBAIC0yNTEsNyArMjkwLDEwIEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBh cnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCWJvb2wJ CXB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290X2dpdmVuOwogCWJvb2wJCXB1Ymxpc2hfdmlh X3BhcnRpdGlvbl9yb290OwogCUFjbFJlc3VsdAlhY2xyZXN1bHQ7Ci0JTGlzdAkgICAqcmVs YXRpb25zID0gTklMOworCUxpc3QJICAgKnRhYmxlcyA9IE5JTDsKKwlMaXN0CSAgICpzZXF1 ZW5jZXMgPSBOSUw7CisJTGlzdAkgICAqdGFibGVzX3NjaGVtYWlkbGlzdCA9IE5JTDsKKwlM aXN0CSAgICpzZXF1ZW5jZXNfc2NoZW1haWRsaXN0ID0gTklMOwogCUxpc3QJICAgKnNjaGVt YWlkbGlzdCA9IE5JTDsKIAogCS8qIG11c3QgaGF2ZSBDUkVBVEUgcHJpdmlsZWdlIG9uIGRh dGFiYXNlICovCkBAIC0zMDYsNiArMzQ4LDggQEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VT dGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJCUJvb2xHZXRE YXR1bShwdWJhY3Rpb25zLnB1YmRlbGV0ZSk7CiAJdmFsdWVzW0FudW1fcGdfcHVibGljYXRp b25fcHVidHJ1bmNhdGUgLSAxXSA9CiAJCUJvb2xHZXREYXR1bShwdWJhY3Rpb25zLnB1YnRy dW5jYXRlKTsKKwl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJzZXF1ZW5jZSAtIDFd ID0KKwkJQm9vbEdldERhdHVtKHB1YmFjdGlvbnMucHVic2VxdWVuY2UpOwogCXZhbHVlc1tB bnVtX3BnX3B1YmxpY2F0aW9uX3B1YnZpYXJvb3QgLSAxXSA9CiAJCUJvb2xHZXREYXR1bShw dWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCk7CiAKQEAgLTMzMCwyNiArMzc0LDQwIEBAIENy ZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25T dG10ICpzdG10KQogCX0KIAllbHNlCiAJewotCQlPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lk cyhzdG10LT5wdWJvYmplY3RzLCBwc3RhdGUsICZyZWxhdGlvbnMsCisJCU9iamVjdHNJblB1 YmxpY2F0aW9uVG9PaWRzKHN0bXQtPnB1Ym9iamVjdHMsIHBzdGF0ZSwKKwkJCQkJCQkJICAg JnRhYmxlcywgJnNlcXVlbmNlcywKKwkJCQkJCQkJICAgJnRhYmxlc19zY2hlbWFpZGxpc3Qs CisJCQkJCQkJCSAgICZzZXF1ZW5jZXNfc2NoZW1haWRsaXN0LAogCQkJCQkJCQkgICAmc2No ZW1haWRsaXN0KTsKIAogCQkvKiBGT1IgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcmVxdWlyZXMg c3VwZXJ1c2VyICovCi0JCWlmIChsaXN0X2xlbmd0aChzY2hlbWFpZGxpc3QpID4gMCAmJiAh c3VwZXJ1c2VyKCkpCisJCWlmIChsaXN0X2xlbmd0aCh0YWJsZXNfc2NoZW1haWRsaXN0KSA+ IDAgJiYgIXN1cGVydXNlcigpKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJZXJyY29kZShF UlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLAogCQkJCQllcnJtc2coIm11c3QgYmUg c3VwZXJ1c2VyIHRvIGNyZWF0ZSBGT1IgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHVibGljYXRp b24iKSk7CiAKLQkJaWYgKGxpc3RfbGVuZ3RoKHJlbGF0aW9ucykgPiAwKQorCQlpZiAobGlz dF9sZW5ndGgodGFibGVzKSA+IDApCiAJCXsKIAkJCUxpc3QJICAgKnJlbHM7CiAKLQkJCXJl bHMgPSBPcGVuVGFibGVMaXN0KHJlbGF0aW9ucyk7Ci0JCQlDaGVja09ialNjaGVtYU5vdEFs cmVhZHlJblB1YmxpY2F0aW9uKHJlbHMsIHNjaGVtYWlkbGlzdCwKKwkJCXJlbHMgPSBPcGVu VGFibGVMaXN0KHRhYmxlcyk7CisJCQlDaGVja09ialNjaGVtYU5vdEFscmVhZHlJblB1Ymxp Y2F0aW9uKHJlbHMsIHRhYmxlc19zY2hlbWFpZGxpc3QsCiAJCQkJCQkJCQkJCQkgIFBVQkxJ Q0FUSU9OT0JKX1RBQkxFKTsKIAkJCVB1YmxpY2F0aW9uQWRkVGFibGVzKHB1Ym9pZCwgcmVs cywgdHJ1ZSwgTlVMTCk7CiAJCQlDbG9zZVRhYmxlTGlzdChyZWxzKTsKIAkJfQogCisJCWlm IChsaXN0X2xlbmd0aChzZXF1ZW5jZXMpID4gMCkKKwkJeworCQkJTGlzdAkgICAqcmVsczsK KworCQkJcmVscyA9IE9wZW5TZXF1ZW5jZUxpc3Qoc2VxdWVuY2VzKTsKKwkJCUNoZWNrT2Jq U2NoZW1hTm90QWxyZWFkeUluUHVibGljYXRpb24ocmVscywgc2VxdWVuY2VzX3NjaGVtYWlk bGlzdCwKKwkJCQkJCQkJCQkJCSAgUFVCTElDQVRJT05PQkpfU0VRVUVOQ0UpOworCQkJUHVi bGljYXRpb25BZGRUYWJsZXMocHVib2lkLCByZWxzLCB0cnVlLCBOVUxMKTsKKwkJCUNsb3Nl U2VxdWVuY2VMaXN0KHJlbHMpOworCQl9CisKIAkJaWYgKGxpc3RfbGVuZ3RoKHNjaGVtYWlk bGlzdCkgPiAwKQogCQl7CiAJCQkvKgpAQCAtNjUzLDEyICs3MTEsMTMgQEAgQWx0ZXJQdWJs aWNhdGlvblNjaGVtYXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAgKi8KIHN0YXRp YyB2b2lkCiBDaGVja0FsdGVyUHVibGljYXRpb24oQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0 bXQsIEhlYXBUdXBsZSB0dXAsCi0JCQkJCSAgTGlzdCAqdGFibGVzLCBMaXN0ICpzY2hlbWFp ZGxpc3QpCisJCQkJCSAgTGlzdCAqdGFibGVzLCBMaXN0ICp0YWJsZXNfc2NoZW1haWRsaXN0 LAorCQkJCQkgIExpc3QgKnNlcXVlbmNlcywgTGlzdCAqc2VxdWVuY2VzX3NjaGVtYWlkbGlz dCkKIHsKIAlGb3JtX3BnX3B1YmxpY2F0aW9uIHB1YmZvcm0gPSAoRm9ybV9wZ19wdWJsaWNh dGlvbikgR0VUU1RSVUNUKHR1cCk7CiAKIAlpZiAoKHN0bXQtPmFjdGlvbiA9PSBBUF9BZGRP YmplY3RzIHx8IHN0bXQtPmFjdGlvbiA9PSBBUF9TZXRPYmplY3RzKSAmJgotCQlzY2hlbWFp ZGxpc3QgJiYgIXN1cGVydXNlcigpKQorCQkodGFibGVzX3NjaGVtYWlkbGlzdCB8fCBzZXF1 ZW5jZXNfc2NoZW1haWRsaXN0KSAmJiAhc3VwZXJ1c2VyKCkpCiAJCWVyZXBvcnQoRVJST1Is CiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKIAkJCQkg ZXJybXNnKCJtdXN0IGJlIHN1cGVydXNlciB0byBhZGQgb3Igc2V0IHNjaGVtYXMiKSkpOwpA QCAtNjY3LDEzICs3MjYsMjQgQEAgQ2hlY2tBbHRlclB1YmxpY2F0aW9uKEFsdGVyUHVibGlj YXRpb25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCSAqIENoZWNrIHRoYXQgdXNlciBp cyBhbGxvd2VkIHRvIG1hbmlwdWxhdGUgdGhlIHB1YmxpY2F0aW9uIHRhYmxlcyBpbgogCSAq IHNjaGVtYQogCSAqLwotCWlmIChzY2hlbWFpZGxpc3QgJiYgcHViZm9ybS0+cHViYWxsdGFi bGVzKQorCWlmICh0YWJsZXNfc2NoZW1haWRsaXN0ICYmIHB1YmZvcm0tPnB1YmFsbHRhYmxl cykKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1Rf SU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKIAkJCQkgZXJybXNnKCJwdWJsaWNhdGlvbiBcIiVz XCIgaXMgZGVmaW5lZCBhcyBGT1IgQUxMIFRBQkxFUyIsCiAJCQkJCQlOYW1lU3RyKHB1YmZv cm0tPnB1Ym5hbWUpKSwKIAkJCQkgZXJyZGV0YWlsKCJUYWJsZXMgZnJvbSBzY2hlbWEgY2Fu bm90IGJlIGFkZGVkIHRvLCBkcm9wcGVkIGZyb20sIG9yIHNldCBvbiBGT1IgQUxMIFRBQkxF UyBwdWJsaWNhdGlvbnMuIikpKTsKIAorCS8qCisJICogQ2hlY2sgdGhhdCB1c2VyIGlzIGFs bG93ZWQgdG8gbWFuaXB1bGF0ZSB0aGUgcHVibGljYXRpb24gc2VxdWVuY2VzIGluCisJICog c2NoZW1hCisJICovCisJaWYgKHNlcXVlbmNlc19zY2hlbWFpZGxpc3QgJiYgcHViZm9ybS0+ cHViYWxsc2VxdWVuY2VzKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNP REVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJtc2coInB1 YmxpY2F0aW9uIFwiJXNcIiBpcyBkZWZpbmVkIGFzIEZPUiBBTEwgU0VRVUVOQ0VTIiwKKwkJ CQkJCU5hbWVTdHIocHViZm9ybS0+cHVibmFtZSkpLAorCQkJCSBlcnJkZXRhaWwoIlNlcXVl bmNlcyBmcm9tIHNjaGVtYSBjYW5ub3QgYmUgYWRkZWQgdG8sIGRyb3BwZWQgZnJvbSwgb3Ig c2V0IG9uIEZPUiBBTEwgU0VRVUVOQ0VTIHB1YmxpY2F0aW9ucy4iKSkpOworCiAJLyogQ2hl Y2sgdGhhdCB1c2VyIGlzIGFsbG93ZWQgdG8gbWFuaXB1bGF0ZSB0aGUgcHVibGljYXRpb24g dGFibGVzLiAqLwogCWlmICh0YWJsZXMgJiYgcHViZm9ybS0+cHViYWxsdGFibGVzKQogCQll cmVwb3J0KEVSUk9SLApAQCAtNjgxLDYgKzc1MSwxMDggQEAgQ2hlY2tBbHRlclB1YmxpY2F0 aW9uKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCQkJCSBl cnJtc2coInB1YmxpY2F0aW9uIFwiJXNcIiBpcyBkZWZpbmVkIGFzIEZPUiBBTEwgVEFCTEVT IiwKIAkJCQkJCU5hbWVTdHIocHViZm9ybS0+cHVibmFtZSkpLAogCQkJCSBlcnJkZXRhaWwo IlRhYmxlcyBjYW5ub3QgYmUgYWRkZWQgdG8gb3IgZHJvcHBlZCBmcm9tIEZPUiBBTEwgVEFC TEVTIHB1YmxpY2F0aW9ucy4iKSkpOworCisJLyogQ2hlY2sgdGhhdCB1c2VyIGlzIGFsbG93 ZWQgdG8gbWFuaXB1bGF0ZSB0aGUgcHVibGljYXRpb24gdGFibGVzLiAqLworCWlmIChzZXF1 ZW5jZXMgJiYgcHViZm9ybS0+cHViYWxsc2VxdWVuY2VzKQorCQllcmVwb3J0KEVSUk9SLAor CQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUp LAorCQkJCSBlcnJtc2coInB1YmxpY2F0aW9uIFwiJXNcIiBpcyBkZWZpbmVkIGFzIEZPUiBB TEwgU0VRVUVOQ0VTIiwKKwkJCQkJCU5hbWVTdHIocHViZm9ybS0+cHVibmFtZSkpLAorCQkJ CSBlcnJkZXRhaWwoIlNlcXVlbmNlcyBjYW5ub3QgYmUgYWRkZWQgdG8gb3IgZHJvcHBlZCBm cm9tIEZPUiBBTEwgU0VRVUVOQ0VTIHB1YmxpY2F0aW9ucy4iKSkpOworfQorCisvKgorICog QWRkIG9yIHJlbW92ZSBzZXF1ZW5jZSB0by9mcm9tIHB1YmxpY2F0aW9uLgorICovCitzdGF0 aWMgdm9pZAorQWx0ZXJQdWJsaWNhdGlvblNlcXVlbmNlcyhBbHRlclB1YmxpY2F0aW9uU3Rt dCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKKwkJCQkJCSAgTGlzdCAqc2VxdWVuY2VzLCBMaXN0 ICpzY2hlbWFpZGxpc3QpCit7CisJTGlzdAkgICAqcmVscyA9IE5JTDsKKwlGb3JtX3BnX3B1 YmxpY2F0aW9uIHB1YmZvcm0gPSAoRm9ybV9wZ19wdWJsaWNhdGlvbikgR0VUU1RSVUNUKHR1 cCk7CisJT2lkCQkJcHViaWQgPSBwdWJmb3JtLT5vaWQ7CisKKwkvKgorCSAqIEl0IGlzIHF1 aXRlIHBvc3NpYmxlIHRoYXQgZm9yIHRoZSBTRVQgY2FzZSB1c2VyIGhhcyBub3Qgc3BlY2lm aWVkIGFueQorCSAqIHRhYmxlcyBpbiB3aGljaCBjYXNlIHdlIG5lZWQgdG8gcmVtb3ZlIGFs bCB0aGUgZXhpc3RpbmcgdGFibGVzLgorCSAqLworCWlmICghc2VxdWVuY2VzICYmIHN0bXQt PmFjdGlvbiAhPSBBUF9TZXRPYmplY3RzKQorCQlyZXR1cm47CisKKwlyZWxzID0gT3BlblNl cXVlbmNlTGlzdChzZXF1ZW5jZXMpOworCisJaWYgKHN0bXQtPmFjdGlvbiA9PSBBUF9BZGRP YmplY3RzKQorCXsKKwkJTGlzdAkgICAqc2NoZW1hcyA9IE5JTDsKKworCQkvKgorCQkgKiBD aGVjayBpZiB0aGUgcmVsYXRpb24gaXMgbWVtYmVyIG9mIHRoZSBleGlzdGluZyBzY2hlbWEg aW4gdGhlCisJCSAqIHB1YmxpY2F0aW9uIG9yIG1lbWJlciBvZiB0aGUgc2NoZW1hIGxpc3Qg c3BlY2lmaWVkLgorCQkgKi8KKwkJc2NoZW1hcyA9IGxpc3RfY29uY2F0X2NvcHkoc2NoZW1h aWRsaXN0LCBHZXRQdWJsaWNhdGlvblNjaGVtYXMocHViaWQpKTsKKwkJQ2hlY2tPYmpTY2hl bWFOb3RBbHJlYWR5SW5QdWJsaWNhdGlvbihyZWxzLCBzY2hlbWFzLAorCQkJCQkJCQkJCQkg IFBVQkxJQ0FUSU9OT0JKX1NFUVVFTkNFKTsKKwkJUHVibGljYXRpb25BZGRTZXF1ZW5jZXMo cHViaWQsIHJlbHMsIGZhbHNlLCBzdG10KTsKKwl9CisJZWxzZSBpZiAoc3RtdC0+YWN0aW9u ID09IEFQX0Ryb3BPYmplY3RzKQorCQlQdWJsaWNhdGlvbkRyb3BTZXF1ZW5jZXMocHViaWQs IHJlbHMsIGZhbHNlKTsKKwllbHNlCQkJCQkJLyogREVGRUxFTV9TRVQgKi8KKwl7CisJCUxp c3QJICAgKm9sZHJlbGlkcyA9IEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmlkLAorCQkJ CQkJCQkJCQkJCQlQVUJMSUNBVElPTl9QQVJUX1JPT1QpOworCQlMaXN0CSAgICpkZWxyZWxz ID0gTklMOworCQlMaXN0Q2VsbCAgICpvbGRsYzsKKworCQlDaGVja09ialNjaGVtYU5vdEFs cmVhZHlJblB1YmxpY2F0aW9uKHJlbHMsIHNjaGVtYWlkbGlzdCwKKwkJCQkJCQkJCQkJICBQ VUJMSUNBVElPTk9CSl9TRVFVRU5DRSk7CisKKwkJLyogQ2FsY3VsYXRlIHdoaWNoIHJlbGF0 aW9ucyB0byBkcm9wLiAqLworCQlmb3JlYWNoKG9sZGxjLCBvbGRyZWxpZHMpCisJCXsKKwkJ CU9pZAkJCW9sZHJlbGlkID0gbGZpcnN0X29pZChvbGRsYyk7CisJCQlMaXN0Q2VsbCAgICpu ZXdsYzsKKwkJCWJvb2wJCWZvdW5kID0gZmFsc2U7CisKKwkJCWZvcmVhY2gobmV3bGMsIHJl bHMpCisJCQl7CisJCQkJUHVibGljYXRpb25SZWxJbmZvICpuZXdwdWJyZWw7CisKKwkJCQlu ZXdwdWJyZWwgPSAoUHVibGljYXRpb25SZWxJbmZvICopIGxmaXJzdChuZXdsYyk7CisJCQkJ aWYgKFJlbGF0aW9uR2V0UmVsaWQobmV3cHVicmVsLT5yZWxhdGlvbikgPT0gb2xkcmVsaWQp CisJCQkJeworCQkJCQlmb3VuZCA9IHRydWU7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0K KwkJCS8qIE5vdCB5ZXQgaW4gdGhlIGxpc3QsIG9wZW4gaXQgYW5kIGFkZCB0byB0aGUgbGlz dCAqLworCQkJaWYgKCFmb3VuZCkKKwkJCXsKKwkJCQlSZWxhdGlvbglvbGRyZWw7CisJCQkJ UHVibGljYXRpb25SZWxJbmZvICpwdWJyZWw7CisKKwkJCQkvKiBXcmFwIHJlbGF0aW9uIGlu dG8gUHVibGljYXRpb25SZWxJbmZvICovCisJCQkJb2xkcmVsID0gdGFibGVfb3BlbihvbGRy ZWxpZCwgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKKworCQkJCXB1YnJlbCA9IHBhbGxv YyhzaXplb2YoUHVibGljYXRpb25SZWxJbmZvKSk7CisJCQkJcHVicmVsLT5yZWxhdGlvbiA9 IG9sZHJlbDsKKworCQkJCWRlbHJlbHMgPSBsYXBwZW5kKGRlbHJlbHMsIHB1YnJlbCk7CisJ CQl9CisJCX0KKworCQkvKiBBbmQgZHJvcCB0aGVtLiAqLworCQlQdWJsaWNhdGlvbkRyb3BT ZXF1ZW5jZXMocHViaWQsIGRlbHJlbHMsIHRydWUpOworCisJCS8qCisJCSAqIERvbid0IGJv dGhlciBjYWxjdWxhdGluZyB0aGUgZGlmZmVyZW5jZSBmb3IgYWRkaW5nLCB3ZSdsbCBjYXRj aCBhbmQKKwkJICogc2tpcCBleGlzdGluZyBvbmVzIHdoZW4gZG9pbmcgY2F0YWxvZyB1cGRh dGUuCisJCSAqLworCQlQdWJsaWNhdGlvbkFkZFNlcXVlbmNlcyhwdWJpZCwgcmVscywgdHJ1 ZSwgc3RtdCk7CisKKwkJQ2xvc2VTZXF1ZW5jZUxpc3QoZGVscmVscyk7CisJfQorCisJQ2xv c2VTZXF1ZW5jZUxpc3QocmVscyk7CiB9CiAKIC8qCkBAIC03MTgsMTMgKzg5MCwyMSBAQCBB bHRlclB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0 bXQgKnN0bXQpCiAJCUFsdGVyUHVibGljYXRpb25PcHRpb25zKHBzdGF0ZSwgc3RtdCwgcmVs LCB0dXApOwogCWVsc2UKIAl7Ci0JCUxpc3QJICAgKnJlbGF0aW9ucyA9IE5JTDsKKwkJTGlz dAkgICAqdGFibGVzID0gTklMOworCQlMaXN0CSAgICpzZXF1ZW5jZXMgPSBOSUw7CisJCUxp c3QJICAgKnRhYmxlc19zY2hlbWFpZGxpc3QgPSBOSUw7CisJCUxpc3QJICAgKnNlcXVlbmNl c19zY2hlbWFpZGxpc3QgPSBOSUw7CiAJCUxpc3QJICAgKnNjaGVtYWlkbGlzdCA9IE5JTDsK IAotCQlPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhzdG10LT5wdWJvYmplY3RzLCBwc3Rh dGUsICZyZWxhdGlvbnMsCisJCU9iamVjdHNJblB1YmxpY2F0aW9uVG9PaWRzKHN0bXQtPnB1 Ym9iamVjdHMsIHBzdGF0ZSwKKwkJCQkJCQkJICAgJnRhYmxlcywgJnNlcXVlbmNlcywKKwkJ CQkJCQkJICAgJnRhYmxlc19zY2hlbWFpZGxpc3QsCisJCQkJCQkJCSAgICZzZXF1ZW5jZXNf c2NoZW1haWRsaXN0LAogCQkJCQkJCQkgICAmc2NoZW1haWRsaXN0KTsKIAotCQlDaGVja0Fs dGVyUHVibGljYXRpb24oc3RtdCwgdHVwLCByZWxhdGlvbnMsIHNjaGVtYWlkbGlzdCk7CisJ CUNoZWNrQWx0ZXJQdWJsaWNhdGlvbihzdG10LCB0dXAsCisJCQkJCQkJICB0YWJsZXMsIHRh Ymxlc19zY2hlbWFpZGxpc3QsCisJCQkJCQkJICBzZXF1ZW5jZXMsIHNlcXVlbmNlc19zY2hl bWFpZGxpc3QpOwogCiAJCS8qCiAJCSAqIExvY2sgdGhlIHB1YmxpY2F0aW9uIHNvIG5vYm9k eSBlbHNlIGNhbiBkbyBhbnl0aGluZyB3aXRoIGl0LiBUaGlzCkBAIC03NDksNyArOTI5LDkg QEAgQWx0ZXJQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRp b25TdG10ICpzdG10KQogCQkJCQllcnJtc2coInB1YmxpY2F0aW9uIFwiJXNcIiBkb2VzIG5v dCBleGlzdCIsCiAJCQkJCQkgICBzdG10LT5wdWJuYW1lKSk7CiAKLQkJQWx0ZXJQdWJsaWNh dGlvblRhYmxlcyhzdG10LCB0dXAsIHJlbGF0aW9ucywgc2NoZW1haWRsaXN0KTsKKwkJQWx0 ZXJQdWJsaWNhdGlvblRhYmxlcyhzdG10LCB0dXAsIHRhYmxlcywgdGFibGVzX3NjaGVtYWlk bGlzdCk7CisJCUFsdGVyUHVibGljYXRpb25TZXF1ZW5jZXMoc3RtdCwgdHVwLCBzZXF1ZW5j ZXMsIHNlcXVlbmNlc19zY2hlbWFpZGxpc3QpOworCiAJCUFsdGVyUHVibGljYXRpb25TY2hl bWFzKHN0bXQsIHR1cCwgc2NoZW1haWRsaXN0KTsKIAl9CiAKQEAgLTExNTcsNiArMTMzOSwx NDQgQEAgUHVibGljYXRpb25Ecm9wU2NoZW1hcyhPaWQgcHViaWQsIExpc3QgKnNjaGVtYXMs IGJvb2wgbWlzc2luZ19vaykKIAl9CiB9CiAKKy8qCisgKiBPcGVuIHJlbGF0aW9ucyBzcGVj aWZpZWQgYnkgYSBQdWJsaWNhdGlvblRhYmxlIGxpc3QuCisgKiBJbiB0aGUgcmV0dXJuZWQg bGlzdCBvZiBQdWJsaWNhdGlvblJlbEluZm8sIHRhYmxlcyBhcmUgbG9ja2VkCisgKiBpbiBT aGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2sgbW9kZSBpbiBvcmRlciB0byBhZGQgdGhlbSB0byBh IHB1YmxpY2F0aW9uLgorICovCitzdGF0aWMgTGlzdCAqCitPcGVuU2VxdWVuY2VMaXN0KExp c3QgKnNlcXVlbmNlcykKK3sKKwlMaXN0CSAgICpyZWxpZHMgPSBOSUw7CisJTGlzdAkgICAq cmVscyA9IE5JTDsKKwlMaXN0Q2VsbCAgICpsYzsKKworCS8qCisJICogT3Blbiwgc2hhcmUt bG9jaywgYW5kIGNoZWNrIGFsbCB0aGUgZXhwbGljaXRseS1zcGVjaWZpZWQgcmVsYXRpb25z CisJICovCisJZm9yZWFjaChsYywgc2VxdWVuY2VzKQorCXsKKwkJUHVibGljYXRpb25UYWJs ZSAqcyA9IGxmaXJzdF9ub2RlKFB1YmxpY2F0aW9uVGFibGUsIGxjKTsKKwkJUmVsYXRpb24J cmVsOworCQlPaWQJCQlteXJlbGlkOworCQlQdWJsaWNhdGlvblJlbEluZm8gKnB1Yl9yZWw7 CisKKwkJLyogQWxsb3cgcXVlcnkgY2FuY2VsIGluIGNhc2UgdGhpcyB0YWtlcyBhIGxvbmcg dGltZSAqLworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCXJlbCA9IHRhYmxlX29w ZW5ydihzLT5yZWxhdGlvbiwgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKKwkJbXlyZWxp ZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsKTsKKworCQkvKgorCQkgKiBGaWx0ZXIgb3V0IGR1 cGxpY2F0ZXMgaWYgdXNlciBzcGVjaWZpZXMgImZvbywgZm9vIi4KKwkJICoKKwkJICogTm90 ZSB0aGF0IHRoaXMgYWxnb3JpdGhtIGlzIGtub3duIHRvIG5vdCBiZSB2ZXJ5IGVmZmljaWVu dCAoTyhOXjIpKQorCQkgKiBidXQgZ2l2ZW4gdGhhdCBpdCBvbmx5IHdvcmtzIG9uIGxpc3Qg b2YgdGFibGVzIGdpdmVuIHRvIHVzIGJ5IHVzZXIKKwkJICogaXQncyBkZWVtZWQgYWNjZXB0 YWJsZS4KKwkJICovCisJCWlmIChsaXN0X21lbWJlcl9vaWQocmVsaWRzLCBteXJlbGlkKSkK KwkJeworCQkJdGFibGVfY2xvc2UocmVsLCBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOwor CQkJY29udGludWU7CisJCX0KKworCQlwdWJfcmVsID0gcGFsbG9jKHNpemVvZihQdWJsaWNh dGlvblJlbEluZm8pKTsKKwkJcHViX3JlbC0+cmVsYXRpb24gPSByZWw7CisJCXJlbHMgPSBs YXBwZW5kKHJlbHMsIHB1Yl9yZWwpOworCQlyZWxpZHMgPSBsYXBwZW5kX29pZChyZWxpZHMs IG15cmVsaWQpOworCX0KKworCWxpc3RfZnJlZShyZWxpZHMpOworCisJcmV0dXJuIHJlbHM7 Cit9CisKKy8qCisgKiBDbG9zZSBhbGwgcmVsYXRpb25zIGluIHRoZSBsaXN0LgorICovCitz dGF0aWMgdm9pZAorQ2xvc2VTZXF1ZW5jZUxpc3QoTGlzdCAqcmVscykKK3sKKwlMaXN0Q2Vs bCAgICpsYzsKKworCWZvcmVhY2gobGMsIHJlbHMpCisJeworCQlQdWJsaWNhdGlvblJlbElu Zm8gKnB1Yl9yZWw7CisKKwkJcHViX3JlbCA9IChQdWJsaWNhdGlvblJlbEluZm8gKikgbGZp cnN0KGxjKTsKKwkJdGFibGVfY2xvc2UocHViX3JlbC0+cmVsYXRpb24sIE5vTG9jayk7CisJ fQorfQorCisvKgorICogQWRkIGxpc3RlZCB0YWJsZXMgdG8gdGhlIHB1YmxpY2F0aW9uLgor ICovCitzdGF0aWMgdm9pZAorUHVibGljYXRpb25BZGRTZXF1ZW5jZXMoT2lkIHB1YmlkLCBM aXN0ICpyZWxzLCBib29sIGlmX25vdF9leGlzdHMsCisJCQkJCQlBbHRlclB1YmxpY2F0aW9u U3RtdCAqc3RtdCkKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKworCUFzc2VydCghc3RtdCB8fCAh c3RtdC0+Zm9yX2FsbF9zZXF1ZW5jZXMpOworCisJZm9yZWFjaChsYywgcmVscykKKwl7CisJ CVB1YmxpY2F0aW9uUmVsSW5mbyAqcHViX3JlbCA9IChQdWJsaWNhdGlvblJlbEluZm8gKikg bGZpcnN0KGxjKTsKKwkJUmVsYXRpb24JcmVsID0gcHViX3JlbC0+cmVsYXRpb247CisJCU9i amVjdEFkZHJlc3Mgb2JqOworCisJCS8qIE11c3QgYmUgb3duZXIgb2YgdGhlIHNlcXVlbmNl IG9yIHN1cGVydXNlci4gKi8KKwkJaWYgKCFwZ19jbGFzc19vd25lcmNoZWNrKFJlbGF0aW9u R2V0UmVsaWQocmVsKSwgR2V0VXNlcklkKCkpKQorCQkJYWNsY2hlY2tfZXJyb3IoQUNMQ0hF Q0tfTk9UX09XTkVSLCBnZXRfcmVsa2luZF9vYmp0eXBlKHJlbC0+cmRfcmVsLT5yZWxraW5k KSwKKwkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpOworCisJCW9iaiA9 IHB1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihwdWJpZCwgcHViX3JlbCwgaWZfbm90X2V4aXN0 cyk7CisJCWlmIChzdG10KQorCQl7CisJCQlFdmVudFRyaWdnZXJDb2xsZWN0U2ltcGxlQ29t bWFuZChvYmosIEludmFsaWRPYmplY3RBZGRyZXNzLAorCQkJCQkJCQkJCQkgKE5vZGUgKikg c3RtdCk7CisKKwkJCUludm9rZU9iamVjdFBvc3RDcmVhdGVIb29rKFB1YmxpY2F0aW9uUmVs UmVsYXRpb25JZCwKKwkJCQkJCQkJCSAgIG9iai5vYmplY3RJZCwgMCk7CisJCX0KKwl9Cit9 CisKKy8qCisgKiBSZW1vdmUgbGlzdGVkIHNlcXVlbmNlcyBmcm9tIHRoZSBwdWJsaWNhdGlv bi4KKyAqLworc3RhdGljIHZvaWQKK1B1YmxpY2F0aW9uRHJvcFNlcXVlbmNlcyhPaWQgcHVi aWQsIExpc3QgKnJlbHMsIGJvb2wgbWlzc2luZ19vaykKK3sKKwlPYmplY3RBZGRyZXNzIG9i ajsKKwlMaXN0Q2VsbCAgICpsYzsKKwlPaWQJCQlwcmlkOworCisJZm9yZWFjaChsYywgcmVs cykKKwl7CisJCVJlbGF0aW9uCXJlbCA9IChSZWxhdGlvbikgbGZpcnN0KGxjKTsKKwkJT2lk CQkJcmVsaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbCk7CisKKwkJcHJpZCA9IEdldFN5c0Nh Y2hlT2lkMihQVUJMSUNBVElPTlJFTE1BUCwgQW51bV9wZ19wdWJsaWNhdGlvbl9yZWxfb2lk LAorCQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0ocmVsaWQpLAorCQkJCQkJCSAgIE9iamVj dElkR2V0RGF0dW0ocHViaWQpKTsKKwkJaWYgKCFPaWRJc1ZhbGlkKHByaWQpKQorCQl7CisJ CQlpZiAobWlzc2luZ19vaykKKwkJCQljb250aW51ZTsKKworCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQkJIGVycm1z ZygicmVsYXRpb24gXCIlc1wiIGlzIG5vdCBwYXJ0IG9mIHRoZSBwdWJsaWNhdGlvbiIsCisJ CQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsKKwkJfQorCisJCU9iamVj dEFkZHJlc3NTZXQob2JqLCBQdWJsaWNhdGlvblJlbFJlbGF0aW9uSWQsIHByaWQpOworCQlw ZXJmb3JtRGVsZXRpb24oJm9iaiwgRFJPUF9DQVNDQURFLCAwKTsKKwl9Cit9CisKKwogLyoK ICAqIEludGVybmFsIHdvcmtob3JzZSBmb3IgY2hhbmdpbmcgYSBwdWJsaWNhdGlvbiBvd25l cgogICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYwppbmRleCBhYjU5MmNlMmYxNS4uZmU0 ZjIxZWM0MzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYwpAQCAtMzM2LDYgKzMzNiw4 NSBAQCBSZXNldFNlcXVlbmNlKE9pZCBzZXFfcmVsaWQpCiAJcmVsYXRpb25fY2xvc2Uoc2Vx X3JlbCwgTm9Mb2NrKTsKIH0KIAorLyoKKyAqIFJlc2V0IGEgc2VxdWVuY2UgdG8gaXRzIGlu aXRpYWwgdmFsdWUuCisgKgorICogVGhlIGNoYW5nZSBpcyBtYWRlIHRyYW5zYWN0aW9uYWxs eSwgc28gdGhhdCBvbiBmYWlsdXJlIG9mIHRoZSBjdXJyZW50CisgKiB0cmFuc2FjdGlvbiwg dGhlIHNlcXVlbmNlIHdpbGwgYmUgcmVzdG9yZWQgdG8gaXRzIHByZXZpb3VzIHN0YXRlLgor ICogV2UgZG8gdGhhdCBieSBjcmVhdGluZyBhIHdob2xlIG5ldyByZWxmaWxlbm9kZSBmb3Ig dGhlIHNlcXVlbmNlOyBzbyB0aGlzCisgKiB3b3JrcyBtdWNoIGxpa2UgdGhlIHJld3JpdGlu ZyBmb3JtcyBvZiBBTFRFUiBUQUJMRS4KKyAqCisgKiBDYWxsZXIgaXMgYXNzdW1lZCB0byBo YXZlIGFjcXVpcmVkIEFjY2Vzc0V4Y2x1c2l2ZUxvY2sgb24gdGhlIHNlcXVlbmNlLAorICog d2hpY2ggbXVzdCBub3QgYmUgcmVsZWFzZWQgdW50aWwgZW5kIG9mIHRyYW5zYWN0aW9uLiAg Q2FsbGVyIGlzIGFsc28KKyAqIHJlc3BvbnNpYmxlIGZvciBwZXJtaXNzaW9ucyBjaGVja2lu Zy4KKyAqLwordm9pZAorUmVzZXRTZXF1ZW5jZTIoT2lkIHNlcV9yZWxpZCwgaW50NjQgbGFz dF92YWx1ZSwgaW50NjQgbG9nX2NudCwgYm9vbCBpc19jYWxsZWQpCit7CisJUmVsYXRpb24J c2VxX3JlbDsKKwlTZXFUYWJsZQllbG07CisJRm9ybV9wZ19zZXF1ZW5jZV9kYXRhIHNlcTsK KwlCdWZmZXIJCWJ1ZjsKKwlIZWFwVHVwbGVEYXRhIHNlcWRhdGF0dXBsZTsKKwlIZWFwVHVw bGUJdHVwbGU7CisKKwkvKgorCSAqIFJlYWQgdGhlIG9sZCBzZXF1ZW5jZS4gIFRoaXMgZG9l cyBhIGJpdCBtb3JlIHdvcmsgdGhhbiByZWFsbHkKKwkgKiBuZWNlc3NhcnksIGJ1dCBpdCdz IHNpbXBsZSwgYW5kIHdlIGRvIHdhbnQgdG8gZG91YmxlLWNoZWNrIHRoYXQgaXQncworCSAq IGluZGVlZCBhIHNlcXVlbmNlLgorCSAqLworCWluaXRfc2VxdWVuY2Uoc2VxX3JlbGlkLCAm ZWxtLCAmc2VxX3JlbCk7CisJKHZvaWQpIHJlYWRfc2VxX3R1cGxlKHNlcV9yZWwsICZidWYs ICZzZXFkYXRhdHVwbGUpOworCisJLyoKKwkgKiBDb3B5IHRoZSBleGlzdGluZyBzZXF1ZW5j ZSB0dXBsZS4KKwkgKi8KKwl0dXBsZSA9IGhlYXBfY29weXR1cGxlKCZzZXFkYXRhdHVwbGUp OworCisJLyogTm93IHdlJ3JlIGRvbmUgd2l0aCB0aGUgb2xkIHBhZ2UgKi8KKwlVbmxvY2tS ZWxlYXNlQnVmZmVyKGJ1Zik7CisKKwkvKgorCSAqIE1vZGlmeSB0aGUgY29waWVkIHR1cGxl IHRvIGV4ZWN1dGUgdGhlIHJlc3RhcnQgKGNvbXBhcmUgdGhlIFJFU1RBUlQKKwkgKiBhY3Rp b24gaW4gQWx0ZXJTZXF1ZW5jZSkKKwkgKi8KKwlzZXEgPSAoRm9ybV9wZ19zZXF1ZW5jZV9k YXRhKSBHRVRTVFJVQ1QodHVwbGUpOworCXNlcS0+bGFzdF92YWx1ZSA9IGxhc3RfdmFsdWU7 CisJc2VxLT5pc19jYWxsZWQgPSBpc19jYWxsZWQ7CisJc2VxLT5sb2dfY250ID0gbG9nX2Nu dDsKKworCS8qCisJICogQ3JlYXRlIGEgbmV3IHN0b3JhZ2UgZmlsZSBmb3IgdGhlIHNlcXVl bmNlLgorCSAqLworCVJlbGF0aW9uU2V0TmV3UmVsZmlsZW5vZGUoc2VxX3JlbCwgc2VxX3Jl bC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSk7CisKKwkvKgorCSAqIEVuc3VyZSBzZXF1ZW5j ZSdzIHJlbGZyb3plbnhpZCBpcyBhdCAwLCBzaW5jZSBpdCB3b24ndCBjb250YWluIGFueQor CSAqIHVuZnJvemVuIFhJRHMuICBTYW1lIHdpdGggcmVsbWlubXhpZCwgc2luY2UgYSBzZXF1 ZW5jZSB3aWxsIG5ldmVyCisJICogY29udGFpbiBtdWx0aXhhY3RzLgorCSAqLworCUFzc2Vy dChzZXFfcmVsLT5yZF9yZWwtPnJlbGZyb3plbnhpZCA9PSBJbnZhbGlkVHJhbnNhY3Rpb25J ZCk7CisJQXNzZXJ0KHNlcV9yZWwtPnJkX3JlbC0+cmVsbWlubXhpZCA9PSBJbnZhbGlkTXVs dGlYYWN0SWQpOworCisJLyoKKwkgKiBJbnNlcnQgdGhlIG1vZGlmaWVkIHR1cGxlIGludG8g dGhlIG5ldyBzdG9yYWdlIGZpbGUuCisJICoKKwkgKiBYWFggTWF5YmUgdGhpcyBzaG91bGQg YWxzbyB1c2UgY3JlYXRlZD10cnVlLCBqdXN0IGxpa2UgdGhlIG90aGVyIHBsYWNlcworCSAq IGNhbGxpbmcgZmlsbF9zZXFfd2l0aF9kYXRhLiBUaGF0J3MgcHJvYmFibHkgbmVlZGVkIGZv ciBjb3JyZWN0IGNhc2NhZGluZworCSAqIHJlcGxpY2F0aW9uLgorCSAqCisJICogWFhYIFRo YXQnZCBtZWFuIGFsbCBmaWxsX3NlcV93aXRoX2RhdGEgY2FsbGVycyB1c2UgY3JlYXRlZD10 cnVlLCBtYWtpbmcKKwkgKiB0aGUgcGFyYW1ldGVyIHVubmVjZXNzYXJ5LgorCSAqLworCWZp bGxfc2VxX3dpdGhfZGF0YShzZXFfcmVsLCB0dXBsZSk7CisKKwkvKiBDbGVhciBsb2NhbCBj YWNoZSBzbyB0aGF0IHdlIGRvbid0IHRoaW5rIHdlIGhhdmUgY2FjaGVkIG51bWJlcnMgKi8K KwkvKiBOb3RlIHRoYXQgd2UgZG8gbm90IGNoYW5nZSB0aGUgY3VycnZhbCgpIHN0YXRlICov CisJZWxtLT5jYWNoZWQgPSBlbG0tPmxhc3Q7CisKKwlyZWxhdGlvbl9jbG9zZShzZXFfcmVs LCBOb0xvY2spOworfQorCiAvKgogICogSW5pdGlhbGl6ZSBhIHNlcXVlbmNlJ3MgcmVsYXRp b24gd2l0aCB0aGUgc3BlY2lmaWVkIHR1cGxlIGFzIGNvbnRlbnQKICAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCmluZGV4IDNlZjY2MDdkMjQ2Li41YmVi NjdlNzY1MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9u Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpA QCAtODUsNiArODUsNyBAQCB0eXBlZGVmIHN0cnVjdCBTdWJPcHRzCiB9IFN1Yk9wdHM7CiAK IHN0YXRpYyBMaXN0ICpmZXRjaF90YWJsZV9saXN0KFdhbFJlY2VpdmVyQ29ubiAqd3Jjb25u LCBMaXN0ICpwdWJsaWNhdGlvbnMpOworc3RhdGljIExpc3QgKmZldGNoX3NlcXVlbmNlX2xp c3QoV2FsUmVjZWl2ZXJDb25uICp3cmNvbm4sIExpc3QgKnB1YmxpY2F0aW9ucyk7CiBzdGF0 aWMgdm9pZCBjaGVja19kdXBsaWNhdGVzX2luX3B1Ymxpc3QoTGlzdCAqcHVibGlzdCwgRGF0 dW0gKmRhdHVtcyk7CiBzdGF0aWMgTGlzdCAqbWVyZ2VfcHVibGljYXRpb25zKExpc3QgKm9s ZHB1Ymxpc3QsIExpc3QgKm5ld3B1Ymxpc3QsIGJvb2wgYWRkcHViLCBjb25zdCBjaGFyICpz dWJuYW1lKTsKIHN0YXRpYyB2b2lkIFJlcG9ydFNsb3RDb25uZWN0aW9uRXJyb3IoTGlzdCAq cnN0YXRlcywgT2lkIHN1YmlkLCBjaGFyICpzbG90bmFtZSwgY2hhciAqZXJyKTsKQEAgLTQ5 Niw2ICs0OTcsNyBAQCBDcmVhdGVTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBD cmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCQljaGFyCSAgICplcnI7CiAJCVdhbFJl Y2VpdmVyQ29ubiAqd3Jjb25uOwogCQlMaXN0CSAgICp0YWJsZXM7CisJCUxpc3QJICAgKnNl cXVlbmNlczsKIAkJTGlzdENlbGwgICAqbGM7CiAJCWNoYXIJCXRhYmxlX3N0YXRlOwogCkBA IC01MzQsNiArNTM2LDI2IEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3Rh dGUsIENyZWF0ZVN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJCQkJCQkJSW52YWxpZFhM b2dSZWNQdHIpOwogCQkJfQogCisJCQkvKgorCQkJICogR2V0IHRoZSBzZXF1ZW5jZSBsaXN0 IGZyb20gcHVibGlzaGVyIGFuZCBidWlsZCBsb2NhbCBzZXF1ZW5jZQorCQkJICogc3RhdHVz IGluZm8uCisJCQkgKi8KKwkJCXNlcXVlbmNlcyA9IGZldGNoX3NlcXVlbmNlX2xpc3Qod3Jj b25uLCBwdWJsaWNhdGlvbnMpOworCQkJZm9yZWFjaChsYywgc2VxdWVuY2VzKQorCQkJewor CQkJCVJhbmdlVmFyICAgKnJ2ID0gKFJhbmdlVmFyICopIGxmaXJzdChsYyk7CisJCQkJT2lk CQkJcmVsaWQ7CisKKwkJCQlyZWxpZCA9IFJhbmdlVmFyR2V0UmVsaWQocnYsIEFjY2Vzc1No YXJlTG9jaywgZmFsc2UpOworCisJCQkJLyogQ2hlY2sgZm9yIHN1cHBvcnRlZCByZWxraW5k LiAqLworCQkJCUNoZWNrU3Vic2NyaXB0aW9uUmVsa2luZChnZXRfcmVsX3JlbGtpbmQocmVs aWQpLAorCQkJCQkJCQkJCSBydi0+c2NoZW1hbmFtZSwgcnYtPnJlbG5hbWUpOworCisJCQkJ QWRkU3Vic2NyaXB0aW9uUmVsU3RhdGUoc3ViaWQsIHJlbGlkLCB0YWJsZV9zdGF0ZSwKKwkJ CQkJCQkJCQlJbnZhbGlkWExvZ1JlY1B0cik7CisJCQl9CisKIAkJCS8qCiAJCQkgKiBJZiBy ZXF1ZXN0ZWQsIGNyZWF0ZSBwZXJtYW5lbnQgc2xvdCBmb3IgdGhlIHN1YnNjcmlwdGlvbi4g V2UKIAkJCSAqIHdvbid0IHVzZSB0aGUgaW5pdGlhbCBzbmFwc2hvdCBmb3IgYW55dGhpbmcs IHNvIG5vIG5lZWQgdG8KQEAgLTcwNiw2ICs3MjgsMTAgQEAgQWx0ZXJTdWJzY3JpcHRpb25f cmVmcmVzaChTdWJzY3JpcHRpb24gKnN1YiwgYm9vbCBjb3B5X2RhdGEpCiAJCXsKIAkJCU9p ZAkJCXJlbGlkID0gc3VicmVsX2xvY2FsX29pZHNbb2ZmXTsKIAorCQkJLyogWFhYIGlnbm9y ZSBzZXF1ZW5jZXMgLSBtYXliZSBkbyB0aGlzIGluIEdldFN1YnNjcmlwdGlvblJlbGF0aW9u cz8gKi8KKwkJCWlmIChnZXRfcmVsX3JlbGtpbmQocmVsaWQpID09IFJFTEtJTkRfU0VRVUVO Q0UpCisJCQkJY29udGludWU7CisKIAkJCWlmICghYnNlYXJjaCgmcmVsaWQsIHB1YnJlbF9s b2NhbF9vaWRzLAogCQkJCQkJIGxpc3RfbGVuZ3RoKHB1YnJlbF9uYW1lcyksIHNpemVvZihP aWQpLCBvaWRfY21wKSkKIAkJCXsKQEAgLTc5Nyw2ICs4MjMsMTgzIEBAIEFsdGVyU3Vic2Ny aXB0aW9uX3JlZnJlc2goU3Vic2NyaXB0aW9uICpzdWIsIGJvb2wgY29weV9kYXRhKQogCQkJ CVJlcGxpY2F0aW9uU2xvdERyb3BBdFB1Yk5vZGUod3Jjb25uLCBzeW5jc2xvdG5hbWUsIHRy dWUpOwogCQkJfQogCQl9CisKKwkJLyoKKwkJICogWFhYIG5vdyBkbyB0aGUgc2FtZSB0aGlu ZyBmb3Igc2VxdWVuY2VzLCBtYXliZSBiZWZvcmUgdGhlIHByZWNlZGluZworCQkgKiBibG9j aywgb3IgZWFybGllcj8KKwkJICovCisKKwkJLyogR2V0IHRoZSB0YWJsZSBsaXN0IGZyb20g cHVibGlzaGVyLiAqLworCQlwdWJyZWxfbmFtZXMgPSBmZXRjaF9zZXF1ZW5jZV9saXN0KHdy Y29ubiwgc3ViLT5wdWJsaWNhdGlvbnMpOworCisJCS8qIEdldCBsb2NhbCB0YWJsZSBsaXN0 LiAqLworCQlzdWJyZWxfc3RhdGVzID0gR2V0U3Vic2NyaXB0aW9uUmVsYXRpb25zKHN1Yi0+ b2lkKTsKKworCQkvKgorCQkgKiBCdWlsZCBxc29ydGVkIGFycmF5IG9mIGxvY2FsIHRhYmxl IG9pZHMgZm9yIGZhc3RlciBsb29rdXAuIFRoaXMgY2FuCisJCSAqIHBvdGVudGlhbGx5IGNv bnRhaW4gYWxsIHRhYmxlcyBpbiB0aGUgZGF0YWJhc2Ugc28gc3BlZWQgb2YgbG9va3VwCisJ CSAqIGlzIGltcG9ydGFudC4KKwkJICovCisJCXN1YnJlbF9sb2NhbF9vaWRzID0gcGFsbG9j KGxpc3RfbGVuZ3RoKHN1YnJlbF9zdGF0ZXMpICogc2l6ZW9mKE9pZCkpOworCQlvZmYgPSAw OworCQlmb3JlYWNoKGxjLCBzdWJyZWxfc3RhdGVzKQorCQl7CisJCQlTdWJzY3JpcHRpb25S ZWxTdGF0ZSAqcmVsc3RhdGUgPSAoU3Vic2NyaXB0aW9uUmVsU3RhdGUgKikgbGZpcnN0KGxj KTsKKworCQkJc3VicmVsX2xvY2FsX29pZHNbb2ZmKytdID0gcmVsc3RhdGUtPnJlbGlkOwor CQl9CisJCXFzb3J0KHN1YnJlbF9sb2NhbF9vaWRzLCBsaXN0X2xlbmd0aChzdWJyZWxfc3Rh dGVzKSwKKwkJCSAgc2l6ZW9mKE9pZCksIG9pZF9jbXApOworCisJCS8qCisJCSAqIFJlbHMg dGhhdCB3ZSB3YW50IHRvIHJlbW92ZSBmcm9tIHN1YnNjcmlwdGlvbiBhbmQgZHJvcCBhbnkg c2xvdHMKKwkJICogYW5kIG9yaWdpbnMgY29ycmVzcG9uZGluZyB0byB0aGVtLgorCQkgKi8K KwkJc3ViX3JlbW92ZV9yZWxzID0gcGFsbG9jKGxpc3RfbGVuZ3RoKHN1YnJlbF9zdGF0ZXMp ICogc2l6ZW9mKFN1YlJlbW92ZVJlbHMpKTsKKworCQkvKgorCQkgKiBXYWxrIG92ZXIgdGhl IHJlbW90ZSB0YWJsZXMgYW5kIHRyeSB0byBtYXRjaCB0aGVtIHRvIGxvY2FsbHkga25vd24K KwkJICogdGFibGVzLiBJZiB0aGUgdGFibGUgaXMgbm90IGtub3duIGxvY2FsbHkgY3JlYXRl IGEgbmV3IHN0YXRlIGZvcgorCQkgKiBpdC4KKwkJICoKKwkJICogQWxzbyBidWlsZHMgYXJy YXkgb2YgbG9jYWwgb2lkcyBvZiByZW1vdGUgdGFibGVzIGZvciB0aGUgbmV4dCBzdGVwLgor CQkgKi8KKwkJb2ZmID0gMDsKKwkJcHVicmVsX2xvY2FsX29pZHMgPSBwYWxsb2MobGlzdF9s ZW5ndGgocHVicmVsX25hbWVzKSAqIHNpemVvZihPaWQpKTsKKworCQlmb3JlYWNoKGxjLCBw dWJyZWxfbmFtZXMpCisJCXsKKwkJCVJhbmdlVmFyICAgKnJ2ID0gKFJhbmdlVmFyICopIGxm aXJzdChsYyk7CisJCQlPaWQJCQlyZWxpZDsKKworCQkJcmVsaWQgPSBSYW5nZVZhckdldFJl bGlkKHJ2LCBBY2Nlc3NTaGFyZUxvY2ssIGZhbHNlKTsKKworCQkJLyogQ2hlY2sgZm9yIHN1 cHBvcnRlZCByZWxraW5kLiAqLworCQkJQ2hlY2tTdWJzY3JpcHRpb25SZWxraW5kKGdldF9y ZWxfcmVsa2luZChyZWxpZCksCisJCQkJCQkJCQkgcnYtPnNjaGVtYW5hbWUsIHJ2LT5yZWxu YW1lKTsKKworCQkJcHVicmVsX2xvY2FsX29pZHNbb2ZmKytdID0gcmVsaWQ7CisKKwkJCWlm ICghYnNlYXJjaCgmcmVsaWQsIHN1YnJlbF9sb2NhbF9vaWRzLAorCQkJCQkJIGxpc3RfbGVu Z3RoKHN1YnJlbF9zdGF0ZXMpLCBzaXplb2YoT2lkKSwgb2lkX2NtcCkpCisJCQl7CisJCQkJ QWRkU3Vic2NyaXB0aW9uUmVsU3RhdGUoc3ViLT5vaWQsIHJlbGlkLAorCQkJCQkJCQkJCWNv cHlfZGF0YSA/IFNVQlJFTF9TVEFURV9JTklUIDogU1VCUkVMX1NUQVRFX1JFQURZLAorCQkJ CQkJCQkJCUludmFsaWRYTG9nUmVjUHRyKTsKKwkJCQllcmVwb3J0KERFQlVHMSwKKwkJCQkJ CShlcnJtc2dfaW50ZXJuYWwoInRhYmxlIFwiJXMuJXNcIiBhZGRlZCB0byBzdWJzY3JpcHRp b24gXCIlc1wiIiwKKwkJCQkJCQkJCQkgcnYtPnNjaGVtYW5hbWUsIHJ2LT5yZWxuYW1lLCBz dWItPm5hbWUpKSk7CisJCQl9CisJCX0KKworCQkvKgorCQkgKiBOZXh0IHJlbW92ZSBzdGF0 ZSBmb3IgdGFibGVzIHdlIHNob3VsZCBub3QgY2FyZSBhYm91dCBhbnltb3JlIHVzaW5nCisJ CSAqIHRoZSBkYXRhIHdlIGNvbGxlY3RlZCBhYm92ZQorCQkgKi8KKwkJcXNvcnQocHVicmVs X2xvY2FsX29pZHMsIGxpc3RfbGVuZ3RoKHB1YnJlbF9uYW1lcyksCisJCQkgIHNpemVvZihP aWQpLCBvaWRfY21wKTsKKworCQlyZW1vdmVfcmVsX2xlbiA9IDA7CisJCWZvciAob2ZmID0g MDsgb2ZmIDwgbGlzdF9sZW5ndGgoc3VicmVsX3N0YXRlcyk7IG9mZisrKQorCQl7CisJCQlP aWQJCQlyZWxpZCA9IHN1YnJlbF9sb2NhbF9vaWRzW29mZl07CisKKwkJCS8qIFhYWCBpZ25v cmUgbm9uLXNlcXVlbmNlcyAtIG1heWJlIGRvIHRoaXMgaW4gR2V0U3Vic2NyaXB0aW9uUmVs YXRpb25zPyAqLworCQkJaWYgKGdldF9yZWxfcmVsa2luZChyZWxpZCkgIT0gUkVMS0lORF9T RVFVRU5DRSkKKwkJCQljb250aW51ZTsKKworCQkJaWYgKCFic2VhcmNoKCZyZWxpZCwgcHVi cmVsX2xvY2FsX29pZHMsCisJCQkJCQkgbGlzdF9sZW5ndGgocHVicmVsX25hbWVzKSwgc2l6 ZW9mKE9pZCksIG9pZF9jbXApKQorCQkJeworCQkJCWNoYXIJCXN0YXRlOworCQkJCVhMb2dS ZWNQdHIJc3RhdGVsc247CisKKwkJCQkvKgorCQkJCSAqIExvY2sgcGdfc3Vic2NyaXB0aW9u X3JlbCB3aXRoIEFjY2Vzc0V4Y2x1c2l2ZUxvY2sgdG8KKwkJCQkgKiBwcmV2ZW50IGFueSBy YWNlIGNvbmRpdGlvbnMgd2l0aCB0aGUgYXBwbHkgd29ya2VyCisJCQkJICogcmUtbGF1bmNo aW5nIHdvcmtlcnMgYXQgdGhlIHNhbWUgdGltZSB0aGlzIGNvZGUgaXMgdHJ5aW5nCisJCQkJ ICogdG8gcmVtb3ZlIHRob3NlIHRhYmxlcy4KKwkJCQkgKgorCQkJCSAqIEV2ZW4gaWYgbmV3 IHdvcmtlciBmb3IgdGhpcyBwYXJ0aWN1bGFyIHJlbCBpcyByZXN0YXJ0ZWQgaXQKKwkJCQkg KiB3b24ndCBiZSBhYmxlIHRvIG1ha2UgYW55IHByb2dyZXNzIGFzIHdlIGhvbGQgZXhjbHVz aXZlCisJCQkJICogbG9jayBvbiBzdWJzY3JpcHRpb25fcmVsIHRpbGwgdGhlIHRyYW5zYWN0 aW9uIGVuZC4gSXQgd2lsbAorCQkJCSAqIHNpbXBseSBleGl0IGFzIHRoZXJlIGlzIG5vIGNv cnJlc3BvbmRpbmcgcmVsIGVudHJ5LgorCQkJCSAqCisJCQkJICogVGhpcyBsb2NraW5nIGFs c28gZW5zdXJlcyB0aGF0IHRoZSBzdGF0ZSBvZiByZWxzIHdvbid0CisJCQkJICogY2hhbmdl IHRpbGwgd2UgYXJlIGRvbmUgd2l0aCB0aGlzIHJlZnJlc2ggb3BlcmF0aW9uLgorCQkJCSAq LworCQkJCWlmICghcmVsKQorCQkJCQlyZWwgPSB0YWJsZV9vcGVuKFN1YnNjcmlwdGlvblJl bFJlbGF0aW9uSWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCisJCQkJLyogTGFzdCBrbm93 biByZWwgc3RhdGUuICovCisJCQkJc3RhdGUgPSBHZXRTdWJzY3JpcHRpb25SZWxTdGF0ZShz dWItPm9pZCwgcmVsaWQsICZzdGF0ZWxzbik7CisKKwkJCQlzdWJfcmVtb3ZlX3JlbHNbcmVt b3ZlX3JlbF9sZW5dLnJlbGlkID0gcmVsaWQ7CisJCQkJc3ViX3JlbW92ZV9yZWxzW3JlbW92 ZV9yZWxfbGVuKytdLnN0YXRlID0gc3RhdGU7CisKKwkJCQlSZW1vdmVTdWJzY3JpcHRpb25S ZWwoc3ViLT5vaWQsIHJlbGlkKTsKKworCQkJCWxvZ2ljYWxyZXBfd29ya2VyX3N0b3Aoc3Vi LT5vaWQsIHJlbGlkKTsKKworCQkJCS8qCisJCQkJICogRm9yIFJFQURZIHN0YXRlLCB3ZSB3 b3VsZCBoYXZlIGFscmVhZHkgZHJvcHBlZCB0aGUKKwkJCQkgKiB0YWJsZXN5bmMgb3JpZ2lu LgorCQkJCSAqLworCQkJCWlmIChzdGF0ZSAhPSBTVUJSRUxfU1RBVEVfUkVBRFkpCisJCQkJ eworCQkJCQljaGFyCQlvcmlnaW5uYW1lW05BTUVEQVRBTEVOXTsKKworCQkJCQkvKgorCQkJ CQkgKiBEcm9wIHRoZSB0YWJsZXN5bmMncyBvcmlnaW4gdHJhY2tpbmcgaWYgZXhpc3RzLgor CQkJCQkgKgorCQkJCQkgKiBJdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSBvcmlnaW4gaXMgbm90 IHlldCBjcmVhdGVkIGZvcgorCQkJCQkgKiB0YWJsZXN5bmMgd29ya2VyLCB0aGlzIGNhbiBo YXBwZW4gZm9yIHRoZSBzdGF0ZXMgYmVmb3JlCisJCQkJCSAqIFNVQlJFTF9TVEFURV9GSU5J U0hFRENPUFkuIFRoZSBhcHBseSB3b3JrZXIgY2FuIGFsc28KKwkJCQkJICogY29uY3VycmVu dGx5IHRyeSB0byBkcm9wIHRoZSBvcmlnaW4gYW5kIGJ5IHRoaXMgdGltZQorCQkJCQkgKiB0 aGUgb3JpZ2luIG1pZ2h0IGJlIGFscmVhZHkgcmVtb3ZlZC4gRm9yIHRoZXNlIHJlYXNvbnMs CisJCQkJCSAqIHBhc3NpbmcgbWlzc2luZ19vayA9IHRydWUuCisJCQkJCSAqLworCQkJCQlS ZXBsaWNhdGlvbk9yaWdpbk5hbWVGb3JUYWJsZXN5bmMoc3ViLT5vaWQsIHJlbGlkLCBvcmln aW5uYW1lLAorCQkJCQkJCQkJCQkJCSAgc2l6ZW9mKG9yaWdpbm5hbWUpKTsKKwkJCQkJcmVw bG9yaWdpbl9kcm9wX2J5X25hbWUob3JpZ2lubmFtZSwgdHJ1ZSwgZmFsc2UpOworCQkJCX0K KworCQkJCWVyZXBvcnQoREVCVUcxLAorCQkJCQkJKGVycm1zZ19pbnRlcm5hbCgidGFibGUg XCIlcy4lc1wiIHJlbW92ZWQgZnJvbSBzdWJzY3JpcHRpb24gXCIlc1wiIiwKKwkJCQkJCQkJ CQkgZ2V0X25hbWVzcGFjZV9uYW1lKGdldF9yZWxfbmFtZXNwYWNlKHJlbGlkKSksCisJCQkJ CQkJCQkJIGdldF9yZWxfbmFtZShyZWxpZCksCisJCQkJCQkJCQkJIHN1Yi0+bmFtZSkpKTsK KwkJCX0KKwkJfQorCisJCS8qCisJCSAqIERyb3AgdGhlIHRhYmxlc3luYyBzbG90cyBhc3Nv Y2lhdGVkIHdpdGggcmVtb3ZlZCB0YWJsZXMuIFRoaXMgaGFzCisJCSAqIHRvIGJlIGF0IHRo ZSBlbmQgYmVjYXVzZSBvdGhlcndpc2UgaWYgdGhlcmUgaXMgYW4gZXJyb3Igd2hpbGUgZG9p bmcKKwkJICogdGhlIGRhdGFiYXNlIG9wZXJhdGlvbnMgd2Ugd29uJ3QgYmUgYWJsZSB0byBy b2xsYmFjayBkcm9wcGVkIHNsb3RzLgorCQkgKi8KKwkJZm9yIChvZmYgPSAwOyBvZmYgPCBy ZW1vdmVfcmVsX2xlbjsgb2ZmKyspCisJCXsKKwkJCWlmIChzdWJfcmVtb3ZlX3JlbHNbb2Zm XS5zdGF0ZSAhPSBTVUJSRUxfU1RBVEVfUkVBRFkgJiYKKwkJCQlzdWJfcmVtb3ZlX3JlbHNb b2ZmXS5zdGF0ZSAhPSBTVUJSRUxfU1RBVEVfU1lOQ0RPTkUpCisJCQl7CisJCQkJY2hhcgkJ c3luY3Nsb3RuYW1lW05BTUVEQVRBTEVOXSA9IHswfTsKKworCQkJCS8qCisJCQkJICogRm9y IFJFQURZL1NZTkNET05FIHN0YXRlcyB3ZSBrbm93IHRoZSB0YWJsZXN5bmMgc2xvdCBoYXMK KwkJCQkgKiBhbHJlYWR5IGJlZW4gZHJvcHBlZCBieSB0aGUgdGFibGVzeW5jIHdvcmtlci4K KwkJCQkgKgorCQkJCSAqIEZvciBvdGhlciBzdGF0ZXMsIHRoZXJlIGlzIG5vIGNlcnRhaW50 eSwgbWF5YmUgdGhlIHNsb3QKKwkJCQkgKiBkb2VzIG5vdCBleGlzdCB5ZXQuIEFsc28sIGlm IHdlIGZhaWwgYWZ0ZXIgcmVtb3Zpbmcgc29tZSBvZgorCQkJCSAqIHRoZSBzbG90cywgbmV4 dCB0aW1lLCBpdCB3aWxsIGFnYWluIHRyeSB0byBkcm9wIGFscmVhZHkKKwkJCQkgKiBkcm9w cGVkIHNsb3RzIGFuZCBmYWlsLiBGb3IgdGhlc2UgcmVhc29ucywgd2UgYWxsb3cKKwkJCQkg KiBtaXNzaW5nX29rID0gdHJ1ZSBmb3IgdGhlIGRyb3AuCisJCQkJICovCisJCQkJUmVwbGlj YXRpb25TbG90TmFtZUZvclRhYmxlc3luYyhzdWItPm9pZCwgc3ViX3JlbW92ZV9yZWxzW29m Zl0ucmVsaWQsCisJCQkJCQkJCQkJCQlzeW5jc2xvdG5hbWUsIHNpemVvZihzeW5jc2xvdG5h bWUpKTsKKwkJCQlSZXBsaWNhdGlvblNsb3REcm9wQXRQdWJOb2RlKHdyY29ubiwgc3luY3Ns b3RuYW1lLCB0cnVlKTsKKwkJCX0KKwkJfQorCiAJfQogCVBHX0ZJTkFMTFkoKTsKIAl7CkBA IC0xNjE2LDYgKzE4MTksNzUgQEAgZmV0Y2hfdGFibGVfbGlzdChXYWxSZWNlaXZlckNvbm4g KndyY29ubiwgTGlzdCAqcHVibGljYXRpb25zKQogCXJldHVybiB0YWJsZWxpc3Q7CiB9CiAK Ky8qCisgKiBHZXQgdGhlIGxpc3Qgb2Ygc2VxdWVuY2VzIHdoaWNoIGJlbG9uZyB0byBzcGVj aWZpZWQgcHVibGljYXRpb25zIG9uIHRoZQorICogcHVibGlzaGVyIGNvbm5lY3Rpb24uCisg Ki8KK3N0YXRpYyBMaXN0ICoKK2ZldGNoX3NlcXVlbmNlX2xpc3QoV2FsUmVjZWl2ZXJDb25u ICp3cmNvbm4sIExpc3QgKnB1YmxpY2F0aW9ucykKK3sKKwlXYWxSY3ZFeGVjUmVzdWx0ICpy ZXM7CisJU3RyaW5nSW5mb0RhdGEgY21kOworCVR1cGxlVGFibGVTbG90ICpzbG90OworCU9p ZAkJCXRhYmxlUm93WzJdID0ge1RFWFRPSUQsIFRFWFRPSUR9OworCUxpc3RDZWxsICAgKmxj OworCWJvb2wJCWZpcnN0OworCUxpc3QJICAgKnRhYmxlbGlzdCA9IE5JTDsKKworCUFzc2Vy dChsaXN0X2xlbmd0aChwdWJsaWNhdGlvbnMpID4gMCk7CisKKwlpbml0U3RyaW5nSW5mbygm Y21kKTsKKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZjbWQsICJTRUxFQ1QgRElTVElOQ1Qg cy5zY2hlbWFuYW1lLCBzLnNlcXVlbmNlbmFtZVxuIgorCQkJCQkJICAgIiAgRlJPTSBwZ19j YXRhbG9nLnBnX3B1YmxpY2F0aW9uX3NlcXVlbmNlcyBzXG4iCisJCQkJCQkgICAiIFdIRVJF IHMucHVibmFtZSBJTiAoIik7CisJZmlyc3QgPSB0cnVlOworCWZvcmVhY2gobGMsIHB1Ymxp Y2F0aW9ucykKKwl7CisJCWNoYXIJICAgKnB1Ym5hbWUgPSBzdHJWYWwobGZpcnN0KGxjKSk7 CisKKwkJaWYgKGZpcnN0KQorCQkJZmlyc3QgPSBmYWxzZTsKKwkJZWxzZQorCQkJYXBwZW5k U3RyaW5nSW5mb1N0cmluZygmY21kLCAiLCAiKTsKKworCQlhcHBlbmRTdHJpbmdJbmZvU3Ry aW5nKCZjbWQsIHF1b3RlX2xpdGVyYWxfY3N0cihwdWJuYW1lKSk7CisJfQorCWFwcGVuZFN0 cmluZ0luZm9DaGFyKCZjbWQsICcpJyk7CisKKwlyZXMgPSB3YWxyY3ZfZXhlYyh3cmNvbm4s IGNtZC5kYXRhLCAyLCB0YWJsZVJvdyk7CisJcGZyZWUoY21kLmRhdGEpOworCisJaWYgKHJl cy0+c3RhdHVzICE9IFdBTFJDVl9PS19UVVBMRVMpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ KGVycm1zZygiY291bGQgbm90IHJlY2VpdmUgbGlzdCBvZiByZXBsaWNhdGVkIHRhYmxlcyBm cm9tIHRoZSBwdWJsaXNoZXI6ICVzIiwKKwkJCQkJCXJlcy0+ZXJyKSkpOworCisJLyogUHJv Y2VzcyB0YWJsZXMuICovCisJc2xvdCA9IE1ha2VTaW5nbGVUdXBsZVRhYmxlU2xvdChyZXMt PnR1cGxlZGVzYywgJlRUU09wc01pbmltYWxUdXBsZSk7CisJd2hpbGUgKHR1cGxlc3RvcmVf Z2V0dHVwbGVzbG90KHJlcy0+dHVwbGVzdG9yZSwgdHJ1ZSwgZmFsc2UsIHNsb3QpKQorCXsK KwkJY2hhcgkgICAqbnNwbmFtZTsKKwkJY2hhcgkgICAqcmVsbmFtZTsKKwkJYm9vbAkJaXNu dWxsOworCQlSYW5nZVZhciAgICpydjsKKworCQluc3BuYW1lID0gVGV4dERhdHVtR2V0Q1N0 cmluZyhzbG90X2dldGF0dHIoc2xvdCwgMSwgJmlzbnVsbCkpOworCQlBc3NlcnQoIWlzbnVs bCk7CisJCXJlbG5hbWUgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKHNsb3RfZ2V0YXR0cihzbG90 LCAyLCAmaXNudWxsKSk7CisJCUFzc2VydCghaXNudWxsKTsKKworCQlydiA9IG1ha2VSYW5n ZVZhcihuc3BuYW1lLCByZWxuYW1lLCAtMSk7CisJCXRhYmxlbGlzdCA9IGxhcHBlbmQodGFi bGVsaXN0LCBydik7CisKKwkJRXhlY0NsZWFyVHVwbGUoc2xvdCk7CisJfQorCUV4ZWNEcm9w U2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CisKKwl3YWxyY3ZfY2xlYXJfcmVzdWx0KHJl cyk7CisKKwlyZXR1cm4gdGFibGVsaXN0OworfQorCiAvKgogICogVGhpcyBpcyB0byByZXBv cnQgdGhlIGNvbm5lY3Rpb24gZmFpbHVyZSB3aGlsZSBkcm9wcGluZyByZXBsaWNhdGlvbiBz bG90cy4KICAqIEhlcmUsIHdlIHJlcG9ydCB0aGUgV0FSTklORyBmb3IgYWxsIHRhYmxlc3lu YyBzbG90cyBzbyB0aGF0IHVzZXIgY2FuIGRyb3AKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1JlcGxpY2F0aW9uLmMKaW5kZXggMzEzYzg3Mzk4YjIuLjc4ZjE0MTE5ZDk4IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYwpAQCAtNjA4LDcgKzYwOCw3IEBA IHZvaWQKIENoZWNrU3Vic2NyaXB0aW9uUmVsa2luZChjaGFyIHJlbGtpbmQsIGNvbnN0IGNo YXIgKm5zcG5hbWUsCiAJCQkJCQkgY29uc3QgY2hhciAqcmVsbmFtZSkKIHsKLQlpZiAocmVs a2luZCAhPSBSRUxLSU5EX1JFTEFUSU9OICYmIHJlbGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJ T05FRF9UQUJMRSkKKwlpZiAocmVsa2luZCAhPSBSRUxLSU5EX1JFTEFUSU9OICYmIHJlbGtp bmQgIT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSAmJiByZWxraW5kICE9IFJFTEtJTkRf U0VRVUVOQ0UpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9O R19PQkpFQ1RfVFlQRSksCiAJCQkJIGVycm1zZygiY2Fubm90IHVzZSByZWxhdGlvbiBcIiVz LiVzXCIgYXMgbG9naWNhbCByZXBsaWNhdGlvbiB0YXJnZXQiLApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVu Y3MuYwppbmRleCA2YmQ5NWJiY2UyNC4uOGI3ZTk3MTA0MDEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlm dW5jcy5jCkBAIC00ODUyLDYgKzQ4NTIsNyBAQCBfY29weUNyZWF0ZVB1YmxpY2F0aW9uU3Rt dChjb25zdCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKmZyb20pCiAJQ09QWV9OT0RFX0ZJRUxE KG9wdGlvbnMpOwogCUNPUFlfTk9ERV9GSUVMRChwdWJvYmplY3RzKTsKIAlDT1BZX1NDQUxB Ul9GSUVMRChmb3JfYWxsX3RhYmxlcyk7CisJQ09QWV9TQ0FMQVJfRklFTEQoZm9yX2FsbF9z ZXF1ZW5jZXMpOwogCiAJcmV0dXJuIG5ld25vZGU7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNz LmMKaW5kZXggNDEyNjUxNjIyMmIuLjU1YTdkYmJkZGYzIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxm dW5jcy5jCkBAIC0yMzM3LDYgKzIzMzcsNyBAQCBfZXF1YWxBbHRlclB1YmxpY2F0aW9uU3Rt dChjb25zdCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqYSwKIAlDT01QQVJFX05PREVfRklFTEQo b3B0aW9ucyk7CiAJQ09NUEFSRV9OT0RFX0ZJRUxEKHB1Ym9iamVjdHMpOwogCUNPTVBBUkVf U0NBTEFSX0ZJRUxEKGZvcl9hbGxfdGFibGVzKTsKKwlDT01QQVJFX1NDQUxBUl9GSUVMRChm b3JfYWxsX3NlcXVlbmNlcyk7CiAJQ09NUEFSRV9TQ0FMQVJfRklFTEQoYWN0aW9uKTsKIAog CXJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBi L3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggYzRmMzI0MjUwNjAuLmJiZGU3NjVj ZjU2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9i YWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTk3NzEsNiArOTc3MSwyNiBAQCBQdWJsaWNhdGlv bk9ialNwZWM6CiAJCQkJCSQkLT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05PQkpfVEFCTEVT X0lOX0NVUl9TQ0hFTUE7CiAJCQkJCSQkLT5sb2NhdGlvbiA9IEA1OwogCQkJCX0KKwkJCXwg U0VRVUVOQ0UgcmVsYXRpb25fZXhwcgorCQkJCXsKKwkJCQkJJCQgPSBtYWtlTm9kZShQdWJs aWNhdGlvbk9ialNwZWMpOworCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JK X1NFUVVFTkNFOworCQkJCQkkJC0+cHVidGFibGUgPSBtYWtlTm9kZShQdWJsaWNhdGlvblRh YmxlKTsKKwkJCQkJJCQtPnB1YnRhYmxlLT5yZWxhdGlvbiA9ICQyOworCQkJCX0KKwkJCXwg QUxMIFNFUVVFTkNFUyBJTl9QIFNDSEVNQSBDb2xJZAorCQkJCXsKKwkJCQkJJCQgPSBtYWtl Tm9kZShQdWJsaWNhdGlvbk9ialNwZWMpOworCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJ Q0FUSU9OT0JKX1NFUVVFTkNFU19JTl9TQ0hFTUE7CisJCQkJCSQkLT5uYW1lID0gJDU7CisJ CQkJCSQkLT5sb2NhdGlvbiA9IEA1OworCQkJCX0KKwkJCXwgQUxMIFNFUVVFTkNFUyBJTl9Q IFNDSEVNQSBDVVJSRU5UX1NDSEVNQQorCQkJCXsKKwkJCQkJJCQgPSBtYWtlTm9kZShQdWJs aWNhdGlvbk9ialNwZWMpOworCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JK X1NFUVVFTkNFU19JTl9DVVJfU0NIRU1BOworCQkJCQkkJC0+bG9jYXRpb24gPSBANTsKKwkJ CQl9CiAJCQl8IENvbElkCiAJCQkJewogCQkJCQkkJCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9u T2JqU3BlYyk7CkBAIC0xMDEwNiw2ICsxMDEyNiwxMiBAQCBVbmxpc3RlblN0bXQ6CiAJCQkJ fQogCQk7CiAKKy8qCisgKiBGSVhNRQorICoKKyAqIG9wdF9wdWJsaWNhdGlvbl9mb3Jfc2Vx dWVuY2VzIGFuZCBwdWJsaWNhdGlvbl9mb3Jfc2VxdWVuY2VzIHNob3VsZCBiZQorICogY29w aWVzIGZvciBzZXF1ZW5jZXMKKyAqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAq CkBAIC0xMDExNCw2ICsxMDE0MCwxMiBAQCBVbmxpc3RlblN0bXQ6CiAgKgkJQkVHSU4gLyBD T01NSVQgLyBST0xMQkFDSwogICoJCShhbHNvIG9sZGVyIHZlcnNpb25zIEVORCAvIEFCT1JU KQogICoKKyAqIEFMVEVSIFBVQkxJQ0FUSU9OIG5hbWUgQUREIFNFUVVFTkNFIHNlcXVlbmNl IFssIHNlcXVlbmNlMl0KKyAqCisgKiBBTFRFUiBQVUJMSUNBVElPTiBuYW1lIERST1AgU0VR VUVOQ0Ugc2VxdWVuY2UgWywgc2VxdWVuY2UyXQorICoKKyAqIEFMVEVSIFBVQkxJQ0FUSU9O IG5hbWUgU0VUIFNFUVVFTkNFIHNlcXVlbmNlIFssIHNlcXVlbmNlMl0KKyAqCiAgKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCiAKIFRyYW5zYWN0aW9uU3RtdDoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwppbmRleCA5NTM5NDI2OTJjZS4uZThlYWQxMzg3 YWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8u YworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKQEAgLTY0 Nyw2ICs2NDcsNTYgQEAgbG9naWNhbHJlcF93cml0ZV9tZXNzYWdlKFN0cmluZ0luZm8gb3V0 LCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24sCiAJcHFfc2VuZGJ5dGVzKG91 dCwgbWVzc2FnZSwgc3opOwogfQogCisvKgorICogV3JpdGUgU0VRVUVOQ0UgdG8gc3RyZWFt CisgKi8KK3ZvaWQKK2xvZ2ljYWxyZXBfd3JpdGVfc2VxdWVuY2UoU3RyaW5nSW5mbyBvdXQs IFJlbGF0aW9uIHJlbCwgVHJhbnNhY3Rpb25JZCB4aWQsCisJCQkJCQkgIFhMb2dSZWNQdHIg bHNuLCBib29sIHRyYW5zYWN0aW9uYWwsCisJCQkJCQkgIGludDY0IGxhc3RfdmFsdWUsIGlu dDY0IGxvZ19jbnQsIGJvb2wgaXNfY2FsbGVkKQoreworCXVpbnQ4CQlmbGFncyA9IDA7CisJ Y2hhcgkgICAqcmVsbmFtZTsKKworCXBxX3NlbmRieXRlKG91dCwgTE9HSUNBTF9SRVBfTVNH X1NFUVVFTkNFKTsKKworCS8qIHRyYW5zYWN0aW9uIElEIChpZiBub3QgdmFsaWQsIHdlJ3Jl IG5vdCBzdHJlYW1pbmcpICovCisJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkpCisJ CXBxX3NlbmRpbnQzMihvdXQsIHhpZCk7CisKKwlwcV9zZW5kaW50OChvdXQsIGZsYWdzKTsK KwlwcV9zZW5kaW50NjQob3V0LCBsc24pOworCisJbG9naWNhbHJlcF93cml0ZV9uYW1lc3Bh Y2Uob3V0LCBSZWxhdGlvbkdldE5hbWVzcGFjZShyZWwpKTsKKwlyZWxuYW1lID0gUmVsYXRp b25HZXRSZWxhdGlvbk5hbWUocmVsKTsKKwlwcV9zZW5kc3RyaW5nKG91dCwgcmVsbmFtZSk7 CisKKwlwcV9zZW5kaW50OChvdXQsIHRyYW5zYWN0aW9uYWwpOworCXBxX3NlbmRpbnQ2NChv dXQsIGxhc3RfdmFsdWUpOworCXBxX3NlbmRpbnQ2NChvdXQsIGxvZ19jbnQpOworCXBxX3Nl bmRpbnQ4KG91dCwgaXNfY2FsbGVkKTsKK30KKworLyoKKyAqIFJlYWQgU0VRVUVOQ0UgZnJv bSB0aGUgc3RyZWFtLgorICovCit2b2lkCitsb2dpY2FscmVwX3JlYWRfc2VxdWVuY2UoU3Ry aW5nSW5mbyBpbiwgTG9naWNhbFJlcFNlcXVlbmNlICpzZXFkYXRhKQoreworCS8qIFhYWCBz a2lwcGluZyBmbGFncyBhbmQgbHNuICovCisJcHFfZ2V0bXNnaW50KGluLCAxKTsKKwlwcV9n ZXRtc2dpbnQ2NChpbik7CisKKwkvKiBSZWFkIHJlbGF0aW9uIG5hbWUgZnJvbSBzdHJlYW0g Ki8KKwlzZXFkYXRhLT5uc3BuYW1lID0gcHN0cmR1cChsb2dpY2FscmVwX3JlYWRfbmFtZXNw YWNlKGluKSk7CisJc2VxZGF0YS0+c2VxbmFtZSA9IHBzdHJkdXAocHFfZ2V0bXNnc3RyaW5n KGluKSk7CisKKwlzZXFkYXRhLT50cmFuc2FjdGlvbmFsID0gcHFfZ2V0bXNnaW50KGluLCAx KTsKKwlzZXFkYXRhLT5sYXN0X3ZhbHVlID0gcHFfZ2V0bXNnaW50NjQoaW4pOworCXNlcWRh dGEtPmxvZ19jbnQgPSBwcV9nZXRtc2dpbnQ2NChpbik7CisJc2VxZGF0YS0+aXNfY2FsbGVk ID0gcHFfZ2V0bXNnaW50KGluLCAxKTsKK30KKwogLyoKICAqIFdyaXRlIHJlbGF0aW9uIGRl c2NyaXB0aW9uIHRvIHRoZSBvdXRwdXQgc3RyZWFtLgogICovCkBAIC0xMjAzLDYgKzEyNTMs OCBAQCBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24p CiAJCQlyZXR1cm4gIlNUUkVBTSBBQk9SVCI7CiAJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX1NU UkVBTV9QUkVQQVJFOgogCQkJcmV0dXJuICJTVFJFQU0gUFJFUEFSRSI7CisJCWNhc2UgTE9H SUNBTF9SRVBfTVNHX1NFUVVFTkNFOgorCQkJcmV0dXJuICJTRVFVRU5DRSI7CiAJfQogCiAJ ZWxvZyhFUlJPUiwgImludmFsaWQgbG9naWNhbCByZXBsaWNhdGlvbiBtZXNzYWdlIHR5cGUg XCIlY1wiIiwgYWN0aW9uKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvdGFibGVzeW5jLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3RhYmxlc3luYy5jCmluZGV4IGU1OTZiNjlkNDY2Li5mNzQ2YzEzY2E0NCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYworKysgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCkBAIC0xMDAsNiAr MTAwLDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbl9yZWwuaCIKICNp bmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9jb3B5Lmgi CisjaW5jbHVkZSAiY29tbWFuZHMvc2VxdWVuY2UuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4u aCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfcmVsYXRpb24uaCIKICNpbmNsdWRlICJwZ3N0 YXQuaCIKQEAgLTM1OSw2ICszNjAsMTIgQEAgcHJvY2Vzc19zeW5jaW5nX3RhYmxlc19mb3Jf c3luYyhYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKQogICoKICAqIElmIHRoZSBzeW5jaHJvbml6 YXRpb24gcG9zaXRpb24gaXMgcmVhY2hlZCAoU1lOQ0RPTkUpLCB0aGVuIHRoZSB0YWJsZSBj YW4KICAqIGJlIG1hcmtlZCBhcyBSRUFEWSBhbmQgaXMgbm8gbG9uZ2VyIHRyYWNrZWQuCisg KgorICogWFhYIFRoaXMgbmVlZHMgdG8gaGFuZGxlIHNlcXVlbmNlcyB0b28gLSBhZnRlciBB bHRlclN1YnNjcmlwdGlvbl9yZWZyZXNoCisgKiBzdGFydHMgY2FyaW5nIGFib3V0IHNlcXVl bmNlcywgR2V0U3Vic2NyaXB0aW9uTm90UmVhZHlSZWxhdGlvbnMgd29uJ3QKKyAqIHJldHVy biBqdXN0IHRhYmxlcywgYW5kIHdlJ2xsIGhhdmUgdG8gc3luYyB0aGVtIGhlcmUuIE5vdCBz dXJlIGl0J3Mgd29ydGgKKyAqIGNyZWF0aW5nIGEgbmV3ICJzeW5jIiB3b3JrZXIgcGVyIHNl cXVlbmNlLCBtYXliZSB3ZSBzaG91bGQganVzdCBzeW5jIHRoZW0KKyAqIGluIHRoZSBjdXJy ZW50IHByb2Nlc3MgKGl0J3MgcHJldHR5IGxpZ2h0LXdlaWdodCkuCiAgKi8KIHN0YXRpYyB2 b2lkCiBwcm9jZXNzX3N5bmNpbmdfdGFibGVzX2Zvcl9hcHBseShYTG9nUmVjUHRyIGN1cnJl bnRfbHNuKQpAQCAtODczLDYgKzg4MCw5NSBAQCBjb3B5X3RhYmxlKFJlbGF0aW9uIHJlbCkK IAlsb2dpY2FscmVwX3JlbF9jbG9zZShyZWxtYXBlbnRyeSwgTm9Mb2NrKTsKIH0KIAorCisK Ky8qCisgKiBGSVhNRSBhZGQgY29tbWVudAorICovCitzdGF0aWMgdm9pZAorZmV0Y2hfc2Vx dWVuY2VfZGF0YShjaGFyICpuc3BuYW1lLCBjaGFyICpyZWxuYW1lLAorCQkJCQlpbnQ2NCAq bGFzdF92YWx1ZSwgaW50NjQgKmxvZ19jbnQsIGJvb2wgKmlzX2NhbGxlZCkKK3sKKwlXYWxS Y3ZFeGVjUmVzdWx0ICpyZXM7CisJU3RyaW5nSW5mb0RhdGEgY21kOworCVR1cGxlVGFibGVT bG90ICpzbG90OworCU9pZAkJCXRhYmxlUm93WzNdID0ge0lOVDhPSUQsIElOVDhPSUQsIEJP T0xPSUR9OworCisJaW5pdFN0cmluZ0luZm8oJmNtZCk7CisJYXBwZW5kU3RyaW5nSW5mbygm Y21kLCAiU0VMRUNUIGxhc3RfdmFsdWUsIGxvZ19jbnQsIGlzX2NhbGxlZFxuIgorCQkJCQkg ICAiICBGUk9NICVzIiwgcXVvdGVfcXVhbGlmaWVkX2lkZW50aWZpZXIobnNwbmFtZSwgcmVs bmFtZSkpOworCisJcmVzID0gd2FscmN2X2V4ZWMoTG9nUmVwV29ya2VyV2FsUmN2Q29ubiwg Y21kLmRhdGEsIDMsIHRhYmxlUm93KTsKKwlwZnJlZShjbWQuZGF0YSk7CisKKwlpZiAocmVz LT5zdGF0dXMgIT0gV0FMUkNWX09LX1RVUExFUykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQko ZXJybXNnKCJjb3VsZCBub3QgcmVjZWl2ZSBsaXN0IG9mIHJlcGxpY2F0ZWQgdGFibGVzIGZy b20gdGhlIHB1Ymxpc2hlcjogJXMiLAorCQkJCQkJcmVzLT5lcnIpKSk7CisKKwkvKiBQcm9j ZXNzIHRoZSBzZXF1ZW5jZS4gKi8KKwlzbG90ID0gTWFrZVNpbmdsZVR1cGxlVGFibGVTbG90 KHJlcy0+dHVwbGVkZXNjLCAmVFRTT3BzTWluaW1hbFR1cGxlKTsKKwl3aGlsZSAodHVwbGVz dG9yZV9nZXR0dXBsZXNsb3QocmVzLT50dXBsZXN0b3JlLCB0cnVlLCBmYWxzZSwgc2xvdCkp CisJeworCQlib29sCQlpc251bGw7CisKKwkJKmxhc3RfdmFsdWUgPSBEYXR1bUdldEludDY0 KHNsb3RfZ2V0YXR0cihzbG90LCAxLCAmaXNudWxsKSk7CisJCUFzc2VydCghaXNudWxsKTsK KworCQkqbG9nX2NudCA9IERhdHVtR2V0SW50NjQoc2xvdF9nZXRhdHRyKHNsb3QsIDIsICZp c251bGwpKTsKKwkJQXNzZXJ0KCFpc251bGwpOworCisJCSppc19jYWxsZWQgPSBEYXR1bUdl dEJvb2woc2xvdF9nZXRhdHRyKHNsb3QsIDMsICZpc251bGwpKTsKKwkJQXNzZXJ0KCFpc251 bGwpOworCisJCUV4ZWNDbGVhclR1cGxlKHNsb3QpOworCX0KKwlFeGVjRHJvcFNpbmdsZVR1 cGxlVGFibGVTbG90KHNsb3QpOworCisJd2FscmN2X2NsZWFyX3Jlc3VsdChyZXMpOworfQor CisvKgorICogQ29weSBleGlzdGluZyBkYXRhIG9mIGEgc2VxdWVuY2UgZnJvbSBwdWJsaXNo ZXIuCisgKgorICogQ2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBsb2NraW5nIHRoZSBsb2Nh bCByZWxhdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK2NvcHlfc2VxdWVuY2UoUmVsYXRpb24g cmVsKQoreworCUxvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsbWFwZW50cnk7CisJTG9naWNh bFJlcFJlbGF0aW9uIGxyZWw7CisJU3RyaW5nSW5mb0RhdGEgY21kOworCWludDY0CQlsYXN0 X3ZhbHVlID0gMCwKKwkJCQlsb2dfY250ID0gMDsKKwlib29sCQlpc19jYWxsZWQgPSAwOwor CisJLyogR2V0IHRoZSBwdWJsaXNoZXIgcmVsYXRpb24gaW5mby4gKi8KKwlmZXRjaF9yZW1v dGVfdGFibGVfaW5mbyhnZXRfbmFtZXNwYWNlX25hbWUoUmVsYXRpb25HZXROYW1lc3BhY2Uo cmVsKSksCisJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSwgJmxyZWwpOwor CisJLyogUHV0IHRoZSByZWxhdGlvbiBpbnRvIHJlbG1hcC4gKi8KKwlsb2dpY2FscmVwX3Jl bG1hcF91cGRhdGUoJmxyZWwpOworCisJLyogTWFwIHRoZSBwdWJsaXNoZXIgcmVsYXRpb24g dG8gbG9jYWwgb25lLiAqLworCXJlbG1hcGVudHJ5ID0gbG9naWNhbHJlcF9yZWxfb3Blbihs cmVsLnJlbW90ZWlkLCBOb0xvY2spOworCUFzc2VydChyZWwgPT0gcmVsbWFwZW50cnktPmxv Y2FscmVsKTsKKworCS8qIFN0YXJ0IGNvcHkgb24gdGhlIHB1Ymxpc2hlci4gKi8KKwlpbml0 U3RyaW5nSW5mbygmY21kKTsKKworCUFzc2VydChscmVsLnJlbGtpbmQgPT0gUkVMS0lORF9T RVFVRU5DRSk7CisKKwlmZXRjaF9zZXF1ZW5jZV9kYXRhKGxyZWwubnNwbmFtZSwgbHJlbC5y ZWxuYW1lLCAmbGFzdF92YWx1ZSwgJmxvZ19jbnQsICZpc19jYWxsZWQpOworCisJUmVzZXRT ZXF1ZW5jZTIoUmVsYXRpb25HZXRSZWxpZChyZWwpLCBsYXN0X3ZhbHVlLCBsb2dfY250LCBp c19jYWxsZWQpOworCisJbG9naWNhbHJlcF9yZWxfY2xvc2UocmVsbWFwZW50cnksIE5vTG9j ayk7Cit9CisKKworCisKIC8qCiAgKiBEZXRlcm1pbmUgdGhlIHRhYmxlc3luYyBzbG90IG5h bWUuCiAgKgpAQCAtMTEzNCwxMCArMTIzMCwyMCBAQCBMb2dpY2FsUmVwU3luY1RhYmxlU3Rh cnQoWExvZ1JlY1B0ciAqb3JpZ2luX3N0YXJ0cG9zKQogCQkJCQkJb3JpZ2lubmFtZSkpKTsK IAl9CiAKLQkvKiBOb3cgZG8gdGhlIGluaXRpYWwgZGF0YSBjb3B5ICovCi0JUHVzaEFjdGl2 ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7Ci0JY29weV90YWJsZShyZWwp OwotCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJaWYgKGdldF9yZWxfcmVsa2luZChSZWxhdGlv bkdldFJlbGlkKHJlbCkpID09IFJFTEtJTkRfU0VRVUVOQ0UpCisJeworCQkvKiBOb3cgZG8g dGhlIGluaXRpYWwgc2VxdWVuY2UgY29weSAqLworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0 VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJY29weV9zZXF1ZW5jZShyZWwpOworCQlQb3BB Y3RpdmVTbmFwc2hvdCgpOworCX0KKwllbHNlCisJeworCQkvKiBOb3cgZG8gdGhlIGluaXRp YWwgZGF0YSBjb3B5ICovCisJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNu YXBzaG90KCkpOworCQljb3B5X3RhYmxlKHJlbCk7CisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7 CisJfQogCiAJcmVzID0gd2FscmN2X2V4ZWMoTG9nUmVwV29ya2VyV2FsUmN2Q29ubiwgIkNP TU1JVCIsIDAsIE5VTEwpOwogCWlmIChyZXMtPnN0YXR1cyAhPSBXQUxSQ1ZfT0tfQ09NTUFO RCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2Vy LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IGQ3 N2JiMzJiYjllLi5jZDA0YzY4NjgxMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3dvcmtlci5jCkBAIC0xNDQsNiArMTQ0LDcgQEAKICNpbmNsdWRlICJjYXRhbG9n L3BnX3RhYmxlc3BhY2UuaCIKICNpbmNsdWRlICJjb21tYW5kcy90YWJsZWNtZHMuaCIKICNp bmNsdWRlICJjb21tYW5kcy90YWJsZXNwYWNlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc2Vx dWVuY2UuaCIKICNpbmNsdWRlICJjb21tYW5kcy90cmlnZ2VyLmgiCiAjaW5jbHVkZSAiZXhl Y3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjUGFydGl0aW9uLmgi CkBAIC0xMDkzLDYgKzEwOTQsNTcgQEAgYXBwbHlfaGFuZGxlX29yaWdpbihTdHJpbmdJbmZv IHMpCiAJCQkJIGVycm1zZ19pbnRlcm5hbCgiT1JJR0lOIG1lc3NhZ2Ugc2VudCBvdXQgb2Yg b3JkZXIiKSkpOwogfQogCisvKgorICogSGFuZGxlIFNFUVVFTkNFIG1lc3NhZ2UuCisgKi8K K3N0YXRpYyB2b2lkCithcHBseV9oYW5kbGVfc2VxdWVuY2UoU3RyaW5nSW5mbyBzKQorewor CUxvZ2ljYWxSZXBTZXF1ZW5jZQlzZXE7CisJT2lkCQkJCQlyZWxpZDsKKworCWlmIChoYW5k bGVfc3RyZWFtZWRfdHJhbnNhY3Rpb24oTE9HSUNBTF9SRVBfTVNHX1NFUVVFTkNFLCBzKSkK KwkJcmV0dXJuOworCisJbG9naWNhbHJlcF9yZWFkX3NlcXVlbmNlKHMsICZzZXEpOworCisJ LyoKKwkgKiBOb24tdHJhbnNhY3Rpb25hbCBzZXF1ZW5jZSB1cGRhdGVzIHNob3VsZCBub3Qg YmUgcGFydCBvZiBhIHJlbW90ZQorCSAqIHRyYW5zYWN0aW9uLiBUaGVyZSBzaG91bGQgbm90 IGJlIGFueSBydW5uaW5nIHRyYW5zYWN0aW9uLgorCSAqLworCUFzc2VydCgoIXNlcS50cmFu c2FjdGlvbmFsKSB8fCBpbl9yZW1vdGVfdHJhbnNhY3Rpb24pOworCUFzc2VydCghKCFzZXEu dHJhbnNhY3Rpb25hbCAmJiBpbl9yZW1vdGVfdHJhbnNhY3Rpb24pKTsKKwlBc3NlcnQoISgh c2VxLnRyYW5zYWN0aW9uYWwgJiYgSXNUcmFuc2FjdGlvblN0YXRlKCkpKTsKKworCS8qCisJ ICogTWFrZSBzdXJlIHdlJ3JlIGluIGEgdHJhbnNhY3Rpb24gKG5lZWRlZCBieSBSZXNldFNl cXVlbmNlMikuIEZvcgorCSAqIG5vbi10cmFuc2FjdGlvbmFsIHVwZGF0ZXMgd2UncmUgZ3Vh cmFudGVlZCB0byBzdGFydCBhIG5ldyBvbmUsCisJICogYW5kIHdlJ2xsIGNvbW1pdCBpdCBh dCB0aGUgZW5kLgorCSAqLworCWlmICghSXNUcmFuc2FjdGlvblN0YXRlKCkpCisJeworCQlT dGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQltYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9u KCk7CisJfQorCisJcmVsaWQgPSBSYW5nZVZhckdldFJlbGlkKG1ha2VSYW5nZVZhcihzZXEu bnNwbmFtZSwKKwkJCQkJCQkJCQkgIHNlcS5zZXFuYW1lLCAtMSksCisJCQkJCQkJIFJvd0V4 Y2x1c2l2ZUxvY2ssIGZhbHNlKTsKKworCS8qIGxvY2sgdGhlIHNlcXVlbmNlIGluIEFjY2Vz c0V4Y2x1c2l2ZUxvY2ssIGFzIGV4cGVjdGVkIGJ5IFJlc2V0U2VxdWVuY2UyICovCisJTG9j a1JlbGF0aW9uT2lkKHJlbGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKworCS8qIGFwcGx5 IHRoZSBzZXF1ZW5jZSBjaGFuZ2UgKi8KKwlSZXNldFNlcXVlbmNlMihyZWxpZCwgc2VxLmxh c3RfdmFsdWUsIHNlcS5sb2dfY250LCBzZXEuaXNfY2FsbGVkKTsKKworCS8qCisJICogQ29t bWl0IHRoZSBwZXItc3RyZWFtIHRyYW5zYWN0aW9uICh3ZSBvbmx5IGRvIHRoaXMgd2hlbiBu b3QgaW4KKwkgKiByZW1vdGUgdHJhbnNhY3Rpb24sIGkuZS4gZm9yIG5vbi10cmFuc2FjdGlv bmFsIHNlcXVlbmNlIHVwZGF0ZXMuCisJICovCisJaWYgKCFpbl9yZW1vdGVfdHJhbnNhY3Rp b24pCisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworfQorCiAvKgogICogSGFuZGxl IFNUUkVBTSBTVEFSVCBtZXNzYWdlLgogICovCkBAIC0yNDIxLDYgKzI0NzMsMTAgQEAgYXBw bHlfZGlzcGF0Y2goU3RyaW5nSW5mbyBzKQogCQkJICovCiAJCQlicmVhazsKIAorCQljYXNl IExPR0lDQUxfUkVQX01TR19TRVFVRU5DRToKKwkJCWFwcGx5X2hhbmRsZV9zZXF1ZW5jZShz KTsKKwkJCXJldHVybjsKKwogCQljYXNlIExPR0lDQUxfUkVQX01TR19TVFJFQU1fU1RBUlQ6 CiAJCQlhcHBseV9oYW5kbGVfc3RyZWFtX3N0YXJ0KHMpOwogCQkJYnJlYWs7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwppbmRleCA2ZGY3MDVm OTBmZi4uYjgyYzZiMTAzMDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3Bnb3V0cHV0L3Bnb3V0cHV0LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdv dXRwdXQvcGdvdXRwdXQuYwpAQCAtNDksNiArNDksMTAgQEAgc3RhdGljIHZvaWQgcGdvdXRw dXRfbWVzc2FnZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJCQkJCQkJIFJlb3Jk ZXJCdWZmZXJUWE4gKnR4biwgWExvZ1JlY1B0ciBtZXNzYWdlX2xzbiwKIAkJCQkJCQkgYm9v bCB0cmFuc2FjdGlvbmFsLCBjb25zdCBjaGFyICpwcmVmaXgsCiAJCQkJCQkJIFNpemUgc3os IGNvbnN0IGNoYXIgKm1lc3NhZ2UpOworc3RhdGljIHZvaWQgcGdvdXRwdXRfc2VxdWVuY2Uo TG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAorCQkJCQkJCSAgUmVvcmRlckJ1ZmZlclRY TiAqdHhuLCBYTG9nUmVjUHRyIHNlcXVlbmNlX2xzbiwKKwkJCQkJCQkgIFJlbGF0aW9uIHJl bCwgYm9vbCB0cmFuc2FjdGlvbmFsLAorCQkJCQkJCSAgaW50NjQgbGFzdF92YWx1ZSwgaW50 NjQgbG9nX2NudCwgYm9vbCBpc19jYWxsZWQpOwogc3RhdGljIGJvb2wgcGdvdXRwdXRfb3Jp Z2luX2ZpbHRlcihMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJCQkJCQkJCSAgIFJl cE9yaWdpbklkIG9yaWdpbl9pZCk7CiBzdGF0aWMgdm9pZCBwZ291dHB1dF9iZWdpbl9wcmVw YXJlX3R4bihMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCkBAIC0xNjEsNiArMTY1LDcg QEAgX1BHX291dHB1dF9wbHVnaW5faW5pdChPdXRwdXRQbHVnaW5DYWxsYmFja3MgKmNiKQog CWNiLT5jaGFuZ2VfY2IgPSBwZ291dHB1dF9jaGFuZ2U7CiAJY2ItPnRydW5jYXRlX2NiID0g cGdvdXRwdXRfdHJ1bmNhdGU7CiAJY2ItPm1lc3NhZ2VfY2IgPSBwZ291dHB1dF9tZXNzYWdl OworCWNiLT5zZXF1ZW5jZV9jYiA9IHBnb3V0cHV0X3NlcXVlbmNlOwogCWNiLT5jb21taXRf Y2IgPSBwZ291dHB1dF9jb21taXRfdHhuOwogCiAJY2ItPmJlZ2luX3ByZXBhcmVfY2IgPSBw Z291dHB1dF9iZWdpbl9wcmVwYXJlX3R4bjsKQEAgLTE3Nyw2ICsxODIsNyBAQCBfUEdfb3V0 cHV0X3BsdWdpbl9pbml0KE91dHB1dFBsdWdpbkNhbGxiYWNrcyAqY2IpCiAJY2ItPnN0cmVh bV9jb21taXRfY2IgPSBwZ291dHB1dF9zdHJlYW1fY29tbWl0OwogCWNiLT5zdHJlYW1fY2hh bmdlX2NiID0gcGdvdXRwdXRfY2hhbmdlOwogCWNiLT5zdHJlYW1fbWVzc2FnZV9jYiA9IHBn b3V0cHV0X21lc3NhZ2U7CisJY2ItPnN0cmVhbV9zZXF1ZW5jZV9jYiA9IHBnb3V0cHV0X3Nl cXVlbmNlOwogCWNiLT5zdHJlYW1fdHJ1bmNhdGVfY2IgPSBwZ291dHB1dF90cnVuY2F0ZTsK IAkvKiB0cmFuc2FjdGlvbiBzdHJlYW1pbmcgLSB0d28tcGhhc2UgY29tbWl0ICovCiAJY2It PnN0cmVhbV9wcmVwYXJlX2NiID0gcGdvdXRwdXRfc3RyZWFtX3ByZXBhcmVfdHhuOwpAQCAt MTkwLDYgKzE5Niw3IEBAIHBhcnNlX291dHB1dF9wYXJhbWV0ZXJzKExpc3QgKm9wdGlvbnMs IFBHT3V0cHV0RGF0YSAqZGF0YSkKIAlib29sCQlwdWJsaWNhdGlvbl9uYW1lc19naXZlbiA9 IGZhbHNlOwogCWJvb2wJCWJpbmFyeV9vcHRpb25fZ2l2ZW4gPSBmYWxzZTsKIAlib29sCQlt ZXNzYWdlc19vcHRpb25fZ2l2ZW4gPSBmYWxzZTsKKwlib29sCQlzZXF1ZW5jZXNfb3B0aW9u X2dpdmVuID0gZmFsc2U7CiAJYm9vbAkJc3RyZWFtaW5nX2dpdmVuID0gZmFsc2U7CiAJYm9v bAkJdHdvX3BoYXNlX29wdGlvbl9naXZlbiA9IGZhbHNlOwogCkBAIC0xOTcsNiArMjA0LDcg QEAgcGFyc2Vfb3V0cHV0X3BhcmFtZXRlcnMoTGlzdCAqb3B0aW9ucywgUEdPdXRwdXREYXRh ICpkYXRhKQogCWRhdGEtPnN0cmVhbWluZyA9IGZhbHNlOwogCWRhdGEtPm1lc3NhZ2VzID0g ZmFsc2U7CiAJZGF0YS0+dHdvX3BoYXNlID0gZmFsc2U7CisJZGF0YS0+c2VxdWVuY2VzID0g dHJ1ZTsKIAogCWZvcmVhY2gobGMsIG9wdGlvbnMpCiAJewpAQCAtMjYyLDYgKzI3MCwxNiBA QCBwYXJzZV9vdXRwdXRfcGFyYW1ldGVycyhMaXN0ICpvcHRpb25zLCBQR091dHB1dERhdGEg KmRhdGEpCiAKIAkJCWRhdGEtPm1lc3NhZ2VzID0gZGVmR2V0Qm9vbGVhbihkZWZlbCk7CiAJ CX0KKwkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAic2VxdWVuY2VzIikgPT0g MCkKKwkJeworCQkJaWYgKHNlcXVlbmNlc19vcHRpb25fZ2l2ZW4pCisJCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCSBl cnJtc2coImNvbmZsaWN0aW5nIG9yIHJlZHVuZGFudCBvcHRpb25zIikpKTsKKwkJCXNlcXVl bmNlc19vcHRpb25fZ2l2ZW4gPSB0cnVlOworCisJCQlkYXRhLT5zZXF1ZW5jZXMgPSBkZWZH ZXRCb29sZWFuKGRlZmVsKTsKKwkJfQogCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5h bWUsICJzdHJlYW1pbmciKSA9PSAwKQogCQl7CiAJCQlpZiAoc3RyZWFtaW5nX2dpdmVuKQpA QCAtODU4LDYgKzg3Niw1MSBAQCBwZ291dHB1dF9tZXNzYWdlKExvZ2ljYWxEZWNvZGluZ0Nv bnRleHQgKmN0eCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCU91dHB1dFBsdWdpbldyaXRl KGN0eCwgdHJ1ZSk7CiB9CiAKK3N0YXRpYyB2b2lkCitwZ291dHB1dF9zZXF1ZW5jZShMb2dp Y2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCisJCQkJICBSZW9yZGVyQnVmZmVyVFhOICp0eG4s IFhMb2dSZWNQdHIgc2VxdWVuY2VfbHNuLAorCQkJCSAgUmVsYXRpb24gcmVsLCBib29sIHRy YW5zYWN0aW9uYWwsCisJCQkJICBpbnQ2NCBsYXN0X3ZhbHVlLCBpbnQ2NCBsb2dfY250LCBi b29sIGlzX2NhbGxlZCkKK3sKKwlQR091dHB1dERhdGEgKmRhdGEgPSAoUEdPdXRwdXREYXRh ICopIGN0eC0+b3V0cHV0X3BsdWdpbl9wcml2YXRlOworCVRyYW5zYWN0aW9uSWQgeGlkID0g SW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJUmVsYXRpb25TeW5jRW50cnkgKnJlbGVudHJ5Owor CisJaWYgKCFkYXRhLT5zZXF1ZW5jZXMpCisJCXJldHVybjsKKworCWlmICghaXNfcHVibGlz aGFibGVfcmVsYXRpb24ocmVsKSkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBSZW1lbWJlciB0 aGUgeGlkIGZvciB0aGUgbWVzc2FnZSBpbiBzdHJlYW1pbmcgbW9kZS4gU2VlCisJICogcGdv dXRwdXRfY2hhbmdlLgorCSAqLworCWlmIChpbl9zdHJlYW1pbmcpCisJCXhpZCA9IHR4bi0+ eGlkOworCisJcmVsZW50cnkgPSBnZXRfcmVsX3N5bmNfZW50cnkoZGF0YSwgUmVsYXRpb25H ZXRSZWxpZChyZWwpKTsKKworCS8qCisJICogRmlyc3QgY2hlY2sgdGhlIHNlcXVlbmNlIGZp bHRlci4KKwkgKgorCSAqIFdlIGhhbmRsZSBqdXN0IFJFT1JERVJfQlVGRkVSX0NIQU5HRV9T RVFVRU5DRSBoZXJlLgorCSAqLworCWlmICghcmVsZW50cnktPnB1YmFjdGlvbnMucHVic2Vx dWVuY2UpCisJCXJldHVybjsKKworCU91dHB1dFBsdWdpblByZXBhcmVXcml0ZShjdHgsIHRy dWUpOworCWxvZ2ljYWxyZXBfd3JpdGVfc2VxdWVuY2UoY3R4LT5vdXQsCisJCQkJCQkJICBy ZWwsCisJCQkJCQkJICB4aWQsCisJCQkJCQkJICBzZXF1ZW5jZV9sc24sCisJCQkJCQkJICB0 cmFuc2FjdGlvbmFsLAorCQkJCQkJCSAgbGFzdF92YWx1ZSwKKwkJCQkJCQkgIGxvZ19jbnQs CisJCQkJCQkJICBpc19jYWxsZWQpOworCU91dHB1dFBsdWdpbldyaXRlKGN0eCwgdHJ1ZSk7 Cit9CisKIC8qCiAgKiBDdXJyZW50bHkgd2UgYWx3YXlzIGZvcndhcmQuCiAgKi8KQEAgLTEx NDEsNyArMTIwNCw4IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEs IE9pZCByZWxpZCkKIAkJZW50cnktPnNjaGVtYV9zZW50ID0gZmFsc2U7CiAJCWVudHJ5LT5z dHJlYW1lZF90eG5zID0gTklMOwogCQllbnRyeS0+cHViYWN0aW9ucy5wdWJpbnNlcnQgPSBl bnRyeS0+cHViYWN0aW9ucy5wdWJ1cGRhdGUgPQotCQkJZW50cnktPnB1YmFjdGlvbnMucHVi ZGVsZXRlID0gZW50cnktPnB1YmFjdGlvbnMucHVidHJ1bmNhdGUgPSBmYWxzZTsKKwkJCWVu dHJ5LT5wdWJhY3Rpb25zLnB1YmRlbGV0ZSA9IGVudHJ5LT5wdWJhY3Rpb25zLnB1YnRydW5j YXRlID0KKwkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YnNlcXVlbmNlID0gZmFsc2U7CiAJCWVu dHJ5LT5wdWJsaXNoX2FzX3JlbGlkID0gSW52YWxpZE9pZDsKIAkJZW50cnktPm1hcCA9IE5V TEw7CQkvKiB3aWxsIGJlIHNldCBieSBtYXliZV9zZW5kX3NjaGVtYSgpIGlmCiAJCQkJCQkJ CSAqIG5lZWRlZCAqLwpAQCAtMTE2Myw2ICsxMjI3LDcgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5 KFBHT3V0cHV0RGF0YSAqZGF0YSwgT2lkIHJlbGlkKQogCQlPaWQJCQlwdWJsaXNoX2FzX3Jl bGlkID0gcmVsaWQ7CiAJCWJvb2wJCWFtX3BhcnRpdGlvbiA9IGdldF9yZWxfcmVsaXNwYXJ0 aXRpb24ocmVsaWQpOwogCQljaGFyCQlyZWxraW5kID0gZ2V0X3JlbF9yZWxraW5kKHJlbGlk KTsKKwkJYm9vbAkJaXNfc2VxdWVuY2UgPSAoZ2V0X3JlbF9yZWxraW5kKHJlbGlkKSA9PSBS RUxLSU5EX1NFUVVFTkNFKTsKIAogCQkvKiBSZWxvYWQgcHVibGljYXRpb25zIGlmIG5lZWRl ZCBiZWZvcmUgdXNlLiAqLwogCQlpZiAoIXB1YmxpY2F0aW9uc192YWxpZCkKQEAgLTExOTEs NiArMTI1Niw3IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIE9p ZCByZWxpZCkKIAkJZW50cnktPnB1YmFjdGlvbnMucHVidXBkYXRlID0gZmFsc2U7CiAJCWVu dHJ5LT5wdWJhY3Rpb25zLnB1YmRlbGV0ZSA9IGZhbHNlOwogCQllbnRyeS0+cHViYWN0aW9u cy5wdWJ0cnVuY2F0ZSA9IGZhbHNlOworCQllbnRyeS0+cHViYWN0aW9ucy5wdWJzZXF1ZW5j ZSA9IGZhbHNlOwogCQlpZiAoZW50cnktPm1hcCkKIAkJewogCQkJLyoKQEAgLTEyMTMsMTIg KzEyNzksMjMgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgT2lk IHJlbGlkKQogCQkJUHVibGljYXRpb24gKnB1YiA9IGxmaXJzdChsYyk7CiAJCQlib29sCQlw dWJsaXNoID0gZmFsc2U7CiAKLQkJCWlmIChwdWItPmFsbHRhYmxlcykKKwkJCWlmIChwdWIt PmFsbHRhYmxlcyAmJiAoIWlzX3NlcXVlbmNlKSkKIAkJCXsKIAkJCQlwdWJsaXNoID0gdHJ1 ZTsKIAkJCQlpZiAocHViLT5wdWJ2aWFyb290ICYmIGFtX3BhcnRpdGlvbikKIAkJCQkJcHVi bGlzaF9hc19yZWxpZCA9IGxsYXN0X29pZChnZXRfcGFydGl0aW9uX2FuY2VzdG9ycyhyZWxp ZCkpOwogCQkJfQorCQkJZWxzZSBpZiAocHViLT5hbGxzZXF1ZW5jZXMgJiYgaXNfc2VxdWVu Y2UpCisJCQl7CisJCQkJcHVibGlzaCA9IHRydWU7CisJCQl9CisKKwkJCS8qIGlmIGEgc2Vx dWVuY2UsIGp1c3QgY3Jvc3MtY2hlY2sgdGhlIGxpc3Qgb2YgcHVibGljYXRpb25zICovCisJ CQlpZiAoIXB1Ymxpc2ggJiYgaXNfc2VxdWVuY2UpCisJCQl7CisJCQkJaWYgKGxpc3RfbWVt YmVyX29pZChwdWJpZHMsIHB1Yi0+b2lkKSkKKwkJCQkJcHVibGlzaCA9IHRydWU7CisJCQl9 CiAKIAkJCWlmICghcHVibGlzaCkKIAkJCXsKQEAgLTEyNzUsMTAgKzEzNTIsMTIgQEAgZ2V0 X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgT2lkIHJlbGlkKQogCQkJCWVu dHJ5LT5wdWJhY3Rpb25zLnB1YnVwZGF0ZSB8PSBwdWItPnB1YmFjdGlvbnMucHVidXBkYXRl OwogCQkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YmRlbGV0ZSB8PSBwdWItPnB1YmFjdGlvbnMu cHViZGVsZXRlOwogCQkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YnRydW5jYXRlIHw9IHB1Yi0+ cHViYWN0aW9ucy5wdWJ0cnVuY2F0ZTsKKwkJCQllbnRyeS0+cHViYWN0aW9ucy5wdWJzZXF1 ZW5jZSB8PSBwdWItPnB1YmFjdGlvbnMucHVic2VxdWVuY2U7CiAJCQl9CiAKIAkJCWlmIChl bnRyeS0+cHViYWN0aW9ucy5wdWJpbnNlcnQgJiYgZW50cnktPnB1YmFjdGlvbnMucHVidXBk YXRlICYmCi0JCQkJZW50cnktPnB1YmFjdGlvbnMucHViZGVsZXRlICYmIGVudHJ5LT5wdWJh Y3Rpb25zLnB1YnRydW5jYXRlKQorCQkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YmRlbGV0ZSAm JiBlbnRyeS0+cHViYWN0aW9ucy5wdWJ0cnVuY2F0ZSAmJgorCQkJCWVudHJ5LT5wdWJhY3Rp b25zLnB1YnNlcXVlbmNlKQogCQkJCWJyZWFrOwogCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9yZWxjYWNoZS5jCmluZGV4IDI3MDdmZWQxMmY0Li40NWE4YjNlNDkwYSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCkBAIC01NTg2LDYgKzU1ODYsNyBAQCBHZXRSZWxh dGlvblB1YmxpY2F0aW9uQWN0aW9ucyhSZWxhdGlvbiByZWxhdGlvbikKIAkJcHViYWN0aW9u cy0+cHVidXBkYXRlIHw9IHB1YmZvcm0tPnB1YnVwZGF0ZTsKIAkJcHViYWN0aW9ucy0+cHVi ZGVsZXRlIHw9IHB1YmZvcm0tPnB1YmRlbGV0ZTsKIAkJcHViYWN0aW9ucy0+cHVidHJ1bmNh dGUgfD0gcHViZm9ybS0+cHVidHJ1bmNhdGU7CisJCXB1YmFjdGlvbnMtPnB1YnNlcXVlbmNl IHw9IHB1YmZvcm0tPnB1YnNlcXVlbmNlOwogCiAJCVJlbGVhc2VTeXNDYWNoZSh0dXApOwog CkBAIC01NTk0LDcgKzU1OTUsOCBAQCBHZXRSZWxhdGlvblB1YmxpY2F0aW9uQWN0aW9ucyhS ZWxhdGlvbiByZWxhdGlvbikKIAkJICogb3RoZXIgcHVibGljYXRpb25zLgogCQkgKi8KIAkJ aWYgKHB1YmFjdGlvbnMtPnB1Ymluc2VydCAmJiBwdWJhY3Rpb25zLT5wdWJ1cGRhdGUgJiYK LQkJCXB1YmFjdGlvbnMtPnB1YmRlbGV0ZSAmJiBwdWJhY3Rpb25zLT5wdWJ0cnVuY2F0ZSkK KwkJCXB1YmFjdGlvbnMtPnB1YmRlbGV0ZSAmJiBwdWJhY3Rpb25zLT5wdWJ0cnVuY2F0ZSAm JgorCQkJcHViYWN0aW9ucy0+cHVic2VxdWVuY2UpCiAJCQlicmVhazsKIAl9CiAKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYyBiL3NyYy9iaW4vcHNxbC90YWIt Y29tcGxldGUuYwppbmRleCA5ODg4MjI3MjEzMC4uNDkwMGM0OGZmMTkgMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNv bXBsZXRlLmMKQEAgLTE3ODIsMjAgKzE3ODIsMjAgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0 IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkJQ09NUExFVEVfV0lUSCgiQURE IiwgIkRST1AiLCAiT1dORVIgVE8iLCAiUkVOQU1FIFRPIiwgIlNFVCIpOwogCS8qIEFMVEVS IFBVQkxJQ0FUSU9OIDxuYW1lPiBBREQgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIs ICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiQUREIikpCi0JCUNPTVBMRVRFX1dJVEgoIkFM TCBUQUJMRVMgSU4gU0NIRU1BIiwgIlRBQkxFIik7Ci0JZWxzZSBpZiAoTWF0Y2hlcygiQUxU RVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkFERHxTRVQiLCAiVEFCTEUiKSB8fAot CQkJIChIZWFkTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkFE RHxTRVQiLCAiVEFCTEUiKSAmJgorCQlDT01QTEVURV9XSVRIKCJBTEwgVEFCTEVTIElOIFND SEVNQSIsICJUQUJMRXxTRVFVRU5DRSIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwg IlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJBRER8U0VUIiwgIlRBQkxFfFNFUVVFTkNFIikg fHwKKwkJCSAoSGVhZE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnks ICJBRER8U0VUIiwgIlRBQkxFfFNFUVVFTkNFIikgJiYKIAkJCSAgZW5kc193aXRoKHByZXZf d2QsICcsJykpKQogCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlz dF9vZl90YWJsZXMpOwotCWVsc2UgaWYgKEhlYWRNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNB VElPTiIsIE1hdGNoQW55LCAiQUREfFNFVCIsICJUQUJMRSIpKQorCWVsc2UgaWYgKEhlYWRN YXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiQUREfFNFVCIsICJU QUJMRXxTRVFVRU5DRSIpKQogCQlDT01QTEVURV9XSVRIKCIsIik7CiAJLyogQUxURVIgUFVC TElDQVRJT04gPG5hbWU+IERST1AgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQ VUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRFJPUCIpKQotCQlDT01QTEVURV9XSVRIKCJBTEwg VEFCTEVTIElOIFNDSEVNQSIsICJUQUJMRSIpOworCQlDT01QTEVURV9XSVRIKCJBTEwgVEFC TEVTIElOIFNDSEVNQSIsICJUQUJMRXxTRVFVRU5DRSIpOwogCS8qIEFMVEVSIFBVQkxJQ0FU SU9OIDxuYW1lPiBTRVQgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNB VElPTiIsIE1hdGNoQW55LCAiU0VUIikpCi0JCUNPTVBMRVRFX1dJVEgoIigiLCAiQUxMIFRB QkxFUyBJTiBTQ0hFTUEiLCAiVEFCTEUiKTsKLQllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIs ICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiQUREfERST1B8U0VUIiwgIkFMTCIsICJUQUJM RVMiLCAiSU4iLCAiU0NIRU1BIikpCisJCUNPTVBMRVRFX1dJVEgoIigiLCAiQUxMIFRBQkxF UyBJTiBTQ0hFTUEiLCAiVEFCTEV8U0VRVUVOQ0UiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJB TFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiQUREfERST1B8U0VUIiwgIkFMTCIs ICJUQUJMRVN8U0VRVUVOQ0VTIiwgIklOIiwgIlNDSEVNQSIpKQogCQlDT01QTEVURV9XSVRI X1FVRVJZX1BMVVMoUXVlcnlfZm9yX2xpc3Rfb2Zfc2NoZW1hcwogCQkJCQkJCQkgIiBBTkQg bnNwbmFtZSBOT1QgTElLRSBFJ3BnXFxcXF8lJyIsCiAJCQkJCQkJCSAiQ1VSUkVOVF9TQ0hF TUEiKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDYyZjM2ZGFhOTgxLi5hNjZl YjgxMDlkMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAor KysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC0xMTU0Niw2ICsxMTU0 NiwxMSBAQAogICBwcm92b2xhdGlsZSA9PiAncycsIHByb3JldHR5cGUgPT4gJ29pZCcsIHBy b2FyZ3R5cGVzID0+ICd0ZXh0JywKICAgcHJvYWxsYXJndHlwZXMgPT4gJ3t0ZXh0LG9pZH0n LCBwcm9hcmdtb2RlcyA9PiAne2ksb30nLAogICBwcm9hcmduYW1lcyA9PiAne3B1Ym5hbWUs cmVsaWR9JywgcHJvc3JjID0+ICdwZ19nZXRfcHVibGljYXRpb25fdGFibGVzJyB9LAoreyBv aWQgPT4gJzgwMDAnLCBkZXNjciA9PiAnZ2V0IE9JRHMgb2Ygc2VxdWVuY2VzIGluIGEgcHVi bGljYXRpb24nLAorICBwcm9uYW1lID0+ICdwZ19nZXRfcHVibGljYXRpb25fc2VxdWVuY2Vz JywgcHJvcm93cyA9PiAnMTAwMCcsIHByb3JldHNldCA9PiAndCcsCisgIHByb3ZvbGF0aWxl ID0+ICdzJywgcHJvcmV0dHlwZSA9PiAnb2lkJywgcHJvYXJndHlwZXMgPT4gJ3RleHQnLAor ICBwcm9hbGxhcmd0eXBlcyA9PiAne3RleHQsb2lkfScsIHByb2FyZ21vZGVzID0+ICd7aSxv fScsCisgIHByb2FyZ25hbWVzID0+ICd7cHVibmFtZSxyZWxpZH0nLCBwcm9zcmMgPT4gJ3Bn X2dldF9wdWJsaWNhdGlvbl9zZXF1ZW5jZXMnIH0sCiB7IG9pZCA9PiAnNjEyMScsCiAgIGRl c2NyID0+ICdyZXR1cm5zIHdoZXRoZXIgYSByZWxhdGlvbiBjYW4gYmUgcGFydCBvZiBhIHB1 YmxpY2F0aW9uJywKICAgcHJvbmFtZSA9PiAncGdfcmVsYXRpb25faXNfcHVibGlzaGFibGUn LCBwcm92b2xhdGlsZSA9PiAncycsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3B1YmxpY2F0aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9u LmgKaW5kZXggODQxYjliNmMyNTMuLmU1NjI4Njc3MmY0IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wdWJsaWNhdGlvbi5oCkBAIC00MCw2ICs0MCwxMiBAQCBDQVRBTE9HKHBnX3B1Ymxp Y2F0aW9uLDYxMDQsUHVibGljYXRpb25SZWxhdGlvbklkKQogCSAqLwogCWJvb2wJCXB1YmFs bHRhYmxlczsKIAorCS8qCisJICogaW5kaWNhdGVzIHRoYXQgdGhpcyBpcyBzcGVjaWFsIHB1 YmxpY2F0aW9uIHdoaWNoIHNob3VsZCBlbmNvbXBhc3MgYWxsCisJICogc2VxdWVuY2VzIGlu IHRoZSBkYXRhYmFzZSAoZXhjZXB0IGZvciB0aGUgdW5sb2dnZWQgYW5kIHRlbXAgb25lcykK KwkgKi8KKwlib29sCQlwdWJhbGxzZXF1ZW5jZXM7CisKIAkvKiB0cnVlIGlmIGluc2VydHMg YXJlIHB1Ymxpc2hlZCAqLwogCWJvb2wJCXB1Ymluc2VydDsKIApAQCAtNTIsNiArNTgsOSBA QCBDQVRBTE9HKHBnX3B1YmxpY2F0aW9uLDYxMDQsUHVibGljYXRpb25SZWxhdGlvbklkKQog CS8qIHRydWUgaWYgdHJ1bmNhdGVzIGFyZSBwdWJsaXNoZWQgKi8KIAlib29sCQlwdWJ0cnVu Y2F0ZTsKIAorCS8qIHRydWUgaWYgc2VxdWVuY2VzIGFyZSBwdWJsaXNoZWQgKi8KKwlib29s CQlwdWJzZXF1ZW5jZTsKKwogCS8qIHRydWUgaWYgcGFydGl0aW9uIGNoYW5nZXMgYXJlIHB1 Ymxpc2hlZCB1c2luZyByb290IHNjaGVtYSAqLwogCWJvb2wJCXB1YnZpYXJvb3Q7CiB9IEZv cm1EYXRhX3BnX3B1YmxpY2F0aW9uOwpAQCAtNzIsNiArODEsNyBAQCB0eXBlZGVmIHN0cnVj dCBQdWJsaWNhdGlvbkFjdGlvbnMKIAlib29sCQlwdWJ1cGRhdGU7CiAJYm9vbAkJcHViZGVs ZXRlOwogCWJvb2wJCXB1YnRydW5jYXRlOworCWJvb2wJCXB1YnNlcXVlbmNlOwogfSBQdWJs aWNhdGlvbkFjdGlvbnM7CiAKIHR5cGVkZWYgc3RydWN0IFB1YmxpY2F0aW9uCkBAIC03OSw2 ICs4OSw3IEBAIHR5cGVkZWYgc3RydWN0IFB1YmxpY2F0aW9uCiAJT2lkCQkJb2lkOwogCWNo YXIJICAgKm5hbWU7CiAJYm9vbAkJYWxsdGFibGVzOworCWJvb2wJCWFsbHNlcXVlbmNlczsK IAlib29sCQlwdWJ2aWFyb290OwogCVB1YmxpY2F0aW9uQWN0aW9ucyBwdWJhY3Rpb25zOwog fSBQdWJsaWNhdGlvbjsKQEAgLTEyMSw2ICsxMzIsOSBAQCBleHRlcm4gTGlzdCAqR2V0UHVi UGFydGl0aW9uT3B0aW9uUmVsYXRpb25zKExpc3QgKnJlc3VsdCwKIAkJCQkJCQkJCQkJUHVi bGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0LAogCQkJCQkJCQkJCQlPaWQgcmVsaWQpOwog CitleHRlcm4gTGlzdCAqR2V0QWxsU2VxdWVuY2VzUHVibGljYXRpb25SZWxhdGlvbnModm9p ZCk7CitleHRlcm4gTGlzdCAqR2V0UHVibGljYXRpb25TZXF1ZW5jZVJlbGF0aW9ucyhPaWQg cHViaWQpOworCiBleHRlcm4gYm9vbCBpc19wdWJsaXNoYWJsZV9yZWxhdGlvbihSZWxhdGlv biByZWwpOwogZXh0ZXJuIGJvb2wgaXNfc2NoZW1hX3B1YmxpY2F0aW9uKE9pZCBwdWJpZCk7 CiBleHRlcm4gT2JqZWN0QWRkcmVzcyBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oT2lkIHB1 YmlkLCBQdWJsaWNhdGlvblJlbEluZm8gKnRhcmdldHJlbCwKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2NvbW1hbmRzL3NlcXVlbmNlLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9zZXF1 ZW5jZS5oCmluZGV4IDlmZWNjNDE5NTRlLi5kOGMyNTVhN2FmNSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY29tbWFuZHMvc2VxdWVuY2UuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5k cy9zZXF1ZW5jZS5oCkBAIC02MCw2ICs2MCw3IEBAIGV4dGVybiBPYmplY3RBZGRyZXNzIERl ZmluZVNlcXVlbmNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU2VxU3RtdCAqc3RtdCk7 CiBleHRlcm4gT2JqZWN0QWRkcmVzcyBBbHRlclNlcXVlbmNlKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgQWx0ZXJTZXFTdG10ICpzdG10KTsKIGV4dGVybiB2b2lkIERlbGV0ZVNlcXVlbmNlVHVw bGUoT2lkIHJlbGlkKTsKIGV4dGVybiB2b2lkIFJlc2V0U2VxdWVuY2UoT2lkIHNlcV9yZWxp ZCk7CitleHRlcm4gdm9pZCBSZXNldFNlcXVlbmNlMihPaWQgc2VxX3JlbGlkLCBpbnQ2NCBs YXN0X3ZhbHVlLCBpbnQ2NCBsb2dfY250LCBib29sIGlzX2NhbGxlZCk7CiBleHRlcm4gdm9p ZCBSZXNldFNlcXVlbmNlQ2FjaGVzKHZvaWQpOwogCiBleHRlcm4gdm9pZCBzZXFfcmVkbyhY TG9nUmVhZGVyU3RhdGUgKnJwdHIpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDM3 ZmNjNGM5YjVhLi40YTk5MDM2NGU0YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAt MzY1Niw2ICszNjU2LDEwIEBAIHR5cGVkZWYgZW51bSBQdWJsaWNhdGlvbk9ialNwZWNUeXBl CiAJUFVCTElDQVRJT05PQkpfVEFCTEVTX0lOX1NDSEVNQSwJLyogQWxsIHRhYmxlcyBpbiBz Y2hlbWEgKi8KIAlQVUJMSUNBVElPTk9CSl9UQUJMRVNfSU5fQ1VSX1NDSEVNQSwJLyogQWxs IHRhYmxlcyBpbiBmaXJzdCBlbGVtZW50IG9mCiAJCQkJCQkJCQkJCSAqIHNlYXJjaF9wYXRo ICovCisJUFVCTElDQVRJT05PQkpfU0VRVUVOQ0UsCQkvKiBTZXF1ZW5jZSB0eXBlICovCisJ UFVCTElDQVRJT05PQkpfU0VRVUVOQ0VTX0lOX1NDSEVNQSwgLyogU2VxdWVuY2VzIGluIHNj aGVtYSB0eXBlICovCisJUFVCTElDQVRJT05PQkpfU0VRVUVOQ0VTX0lOX0NVUl9TQ0hFTUEs IC8qIEdldCB0aGUgZmlyc3QgZWxlbWVudCBvZgorCQkJCQkJCQkJCQkgKiBzZWFyY2hfcGF0 aCAqLwogCVBVQkxJQ0FUSU9OT0JKX0NPTlRJTlVBVElPTiAvKiBDb250aW51YXRpb24gb2Yg cHJldmlvdXMgdHlwZSAqLwogfSBQdWJsaWNhdGlvbk9ialNwZWNUeXBlOwogCkBAIC0zNjc1 LDYgKzM2NzksNyBAQCB0eXBlZGVmIHN0cnVjdCBDcmVhdGVQdWJsaWNhdGlvblN0bXQKIAlM aXN0CSAgICpvcHRpb25zOwkJLyogTGlzdCBvZiBEZWZFbGVtIG5vZGVzICovCiAJTGlzdAkg ICAqcHVib2JqZWN0czsJCS8qIE9wdGlvbmFsIGxpc3Qgb2YgcHVibGljYXRpb24gb2JqZWN0 cyAqLwogCWJvb2wJCWZvcl9hbGxfdGFibGVzOyAvKiBTcGVjaWFsIHB1YmxpY2F0aW9uIGZv ciBhbGwgdGFibGVzIGluIGRiICovCisJYm9vbAkJZm9yX2FsbF9zZXF1ZW5jZXM7IC8qIFNw ZWNpYWwgcHVibGljYXRpb24gZm9yIGFsbCBzZXF1ZW5jZXMgaW4gZGIgKi8KIH0gQ3JlYXRl UHVibGljYXRpb25TdG10OwogCiB0eXBlZGVmIGVudW0gQWx0ZXJQdWJsaWNhdGlvbkFjdGlv bgpAQCAtMzY5OCw2ICszNzAzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQWx0ZXJQdWJsaWNhdGlv blN0bXQKIAkgKi8KIAlMaXN0CSAgICpwdWJvYmplY3RzOwkJLyogT3B0aW9uYWwgbGlzdCBv ZiBwdWJsaWNhdGlvbiBvYmplY3RzICovCiAJYm9vbAkJZm9yX2FsbF90YWJsZXM7IC8qIFNw ZWNpYWwgcHVibGljYXRpb24gZm9yIGFsbCB0YWJsZXMgaW4gZGIgKi8KKwlib29sCQlmb3Jf YWxsX3NlcXVlbmNlczsgLyogU3BlY2lhbCBwdWJsaWNhdGlvbiBmb3IgYWxsIHNlcXVlbmNl cyBpbiBkYiAqLwogCUFsdGVyUHVibGljYXRpb25BY3Rpb24gYWN0aW9uOwkvKiBXaGF0IGFj dGlvbiB0byBwZXJmb3JtIHdpdGggdGhlIGdpdmVuCiAJCQkJCQkJCQkgKiBvYmplY3RzICov CiB9IEFsdGVyUHVibGljYXRpb25TdG10OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vbG9naWNhbHByb3RvLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dp Y2FscHJvdG8uaAppbmRleCAyMmZmZmFjYTYyZC4uOGY4YzMyNTUyMmQgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oCisrKyBiL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oCkBAIC02MCw2ICs2MCw3IEBAIHR5cGVk ZWYgZW51bSBMb2dpY2FsUmVwTXNnVHlwZQogCUxPR0lDQUxfUkVQX01TR19SRUxBVElPTiA9 ICdSJywKIAlMT0dJQ0FMX1JFUF9NU0dfVFlQRSA9ICdZJywKIAlMT0dJQ0FMX1JFUF9NU0df TUVTU0FHRSA9ICdNJywKKwlMT0dJQ0FMX1JFUF9NU0dfU0VRVUVOQ0UgPSAnWCcsCS8qIEZJ WE1FIGNoYW5nZSAqLwogCUxPR0lDQUxfUkVQX01TR19CRUdJTl9QUkVQQVJFID0gJ2InLAog CUxPR0lDQUxfUkVQX01TR19QUkVQQVJFID0gJ1AnLAogCUxPR0lDQUxfUkVQX01TR19DT01N SVRfUFJFUEFSRUQgPSAnSycsCkBAIC0xMTcsNiArMTE4LDE4IEBAIHR5cGVkZWYgc3RydWN0 IExvZ2ljYWxSZXBUeXAKIAljaGFyCSAgICp0eXBuYW1lOwkJLyogbmFtZSBvZiB0aGUgcmVt b3RlIHR5cGUgKi8KIH0gTG9naWNhbFJlcFR5cDsKIAorLyogU2VxdWVuY2UgaW5mbyAqLwor dHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFNlcXVlbmNlCit7CisJT2lkCQkJcmVtb3RlaWQ7 CQkvKiB1bmlxdWUgaWQgb2YgdGhlIHJlbW90ZSBzZXF1ZW5jZSAqLworCWNoYXIJICAgKm5z cG5hbWU7CQkvKiBzY2hlbWEgbmFtZSBvZiByZW1vdGUgc2VxdWVuY2UgKi8KKwljaGFyCSAg ICpzZXFuYW1lOwkJLyogbmFtZSBvZiB0aGUgcmVtb3RlIHNlcXVlbmNlICovCisJYm9vbAkJ dHJhbnNhY3Rpb25hbDsKKwlpbnQ2NAkJbGFzdF92YWx1ZTsKKwlpbnQ2NAkJbG9nX2NudDsK Kwlib29sCQlpc19jYWxsZWQ7Cit9IExvZ2ljYWxSZXBTZXF1ZW5jZTsKKwogLyogVHJhbnNh Y3Rpb24gaW5mbyAqLwogdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcEJlZ2luRGF0YQogewpA QCAtMjI3LDYgKzI0MCwxMiBAQCBleHRlcm4gTGlzdCAqbG9naWNhbHJlcF9yZWFkX3RydW5j YXRlKFN0cmluZ0luZm8gaW4sCiAJCQkJCQkJCQkgIGJvb2wgKmNhc2NhZGUsIGJvb2wgKnJl c3RhcnRfc2Vxcyk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX21lc3NhZ2UoU3Ry aW5nSW5mbyBvdXQsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbiwKIAkJCQkJ CQkJCSBib29sIHRyYW5zYWN0aW9uYWwsIGNvbnN0IGNoYXIgKnByZWZpeCwgU2l6ZSBzeiwg Y29uc3QgY2hhciAqbWVzc2FnZSk7CitleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX3Nl cXVlbmNlKFN0cmluZ0luZm8gb3V0LCBSZWxhdGlvbiByZWwsCisJCQkJCQkJCQkgIFRyYW5z YWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbiwKKwkJCQkJCQkJCSAgYm9vbCB0cmFuc2Fj dGlvbmFsLAorCQkJCQkJCQkJICBpbnQ2NCBsYXN0X3ZhbHVlLCBpbnQ2NCBsb2dfY250LAor CQkJCQkJCQkJICBib29sIGlzX2NhbGxlZCk7CitleHRlcm4gdm9pZCBsb2dpY2FscmVwX3Jl YWRfc2VxdWVuY2UoU3RyaW5nSW5mbyBpbiwgTG9naWNhbFJlcFNlcXVlbmNlICpzZXFkYXRh KTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd3JpdGVfcmVsKFN0cmluZ0luZm8gb3V0LCBU cmFuc2FjdGlvbklkIHhpZCwKIAkJCQkJCQkJIFJlbGF0aW9uIHJlbCk7CiBleHRlcm4gTG9n aWNhbFJlcFJlbGF0aW9uICpsb2dpY2FscmVwX3JlYWRfcmVsKFN0cmluZ0luZm8gaW4pOwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcGdvdXRwdXQuaCBiL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmgKaW5kZXggNzhhYTkxNTFlZjUuLmE2ZjY4 NDNhZGE2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9wZ291dHB1dC5o CisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmgKQEAgLTI4LDYgKzI4 LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUEdPdXRwdXREYXRhCiAJYm9vbAkJc3RyZWFtaW5nOwog CWJvb2wJCW1lc3NhZ2VzOwogCWJvb2wJCXR3b19waGFzZTsKKwlib29sCQlzZXF1ZW5jZXM7 CiB9IFBHT3V0cHV0RGF0YTsKIAogI2VuZGlmCQkJCQkJCS8qIFBHT1VUUFVUX0ggKi8KZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKaW5kZXggMTQyMDI4OGQ2N2IuLjNmNTBl MTAwZjhkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApAQCAtMTQyOSw2 ICsxNDI5LDE0IEBAIHBnX3ByZXBhcmVkX3hhY3RzfCBTRUxFQ1QgcC50cmFuc2FjdGlvbiwK ICAgIEZST00gKChwZ19wcmVwYXJlZF94YWN0KCkgcCh0cmFuc2FjdGlvbiwgZ2lkLCBwcmVw YXJlZCwgb3duZXJpZCwgZGJpZCkKICAgICAgTEVGVCBKT0lOIHBnX2F1dGhpZCB1IE9OICgo cC5vd25lcmlkID0gdS5vaWQpKSkKICAgICAgTEVGVCBKT0lOIHBnX2RhdGFiYXNlIGQgT04g KChwLmRiaWQgPSBkLm9pZCkpKTsKK3BnX3B1YmxpY2F0aW9uX3NlcXVlbmNlc3wgU0VMRUNU IHAucHVibmFtZSwKKyAgICBuLm5zcG5hbWUgQVMgc2NoZW1hbmFtZSwKKyAgICBjLnJlbG5h bWUgQVMgc2VxdWVuY2VuYW1lCisgICBGUk9NIHBnX3B1YmxpY2F0aW9uIHAsCisgICAgTEFU RVJBTCBwZ19nZXRfcHVibGljYXRpb25fc2VxdWVuY2VzKChwLnB1Ym5hbWUpOjp0ZXh0KSBn cHQocmVsaWQpLAorICAgIChwZ19jbGFzcyBjCisgICAgIEpPSU4gcGdfbmFtZXNwYWNlIG4g T04gKChuLm9pZCA9IGMucmVsbmFtZXNwYWNlKSkpCisgIFdIRVJFIChjLm9pZCA9IGdwdC5y ZWxpZCk7CiBwZ19wdWJsaWNhdGlvbl90YWJsZXN8IFNFTEVDVCBwLnB1Ym5hbWUsCiAgICAg bi5uc3BuYW1lIEFTIHNjaGVtYW5hbWUsCiAgICAgYy5yZWxuYW1lIEFTIHRhYmxlbmFtZQpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDI4X3NlcXVlbmNlcy5wbCBi L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyOF9zZXF1ZW5jZXMucGwKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjA2ZDA1NjQwNTg5Ci0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDI4X3NlcXVlbmNlcy5wbApAQCAtMCww ICsxLDIwMSBAQAorCisjIENvcHlyaWdodCAoYykgMjAyMSwgUG9zdGdyZVNRTCBHbG9iYWwg RGV2ZWxvcG1lbnQgR3JvdXAKKworIyBUaGlzIHRlc3RzIHRoYXQgc2VxdWVuY2VzIGFyZSBy ZXBsaWNhdGVkIGNvcnJlY3RseSBieSBsb2dpY2FsIHJlcGxpY2F0aW9uCit1c2Ugc3RyaWN0 OwordXNlIHdhcm5pbmdzOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2Ug UG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZSB0ZXN0cyA9PiA2Owor CisjIEluaXRpYWxpemUgcHVibGlzaGVyIG5vZGUKK215ICRub2RlX3B1Ymxpc2hlciA9IFBv c3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7Ciskbm9kZV9wdWJs aXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOworJG5vZGVfcHVi bGlzaGVyLT5zdGFydDsKKworIyBDcmVhdGUgc3Vic2NyaWJlciBub2RlCitteSAkbm9kZV9z dWJzY3JpYmVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdWJzY3JpYmVy Jyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2lj YWwnKTsKKyRub2RlX3N1YnNjcmliZXItPnN0YXJ0OworCisjIENyZWF0ZSBzb21lIHByZWV4 aXN0aW5nIGNvbnRlbnQgb24gcHVibGlzaGVyCitteSAkZGRsID0gcXEoCisJQ1JFQVRFIFNF UVVFTkNFIHM7CispOworCisjIFNldHVwIHN0cnVjdHVyZSBvbiB0aGUgcHVibGlzaGVyCisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAkZGRsKTsKKworIyBDcmVh dGUgc29tZSB0aGUgc2FtZSBzdHJ1Y3R1cmUgb24gc3Vic2NyaWJlciwgYW5kIGFuIGV4dHJh IHNlcXVlbmNlIHRoYXQKKyMgd2UnbGwgY3JlYXRlIG9uIHRoZSBwdWJsaXNoZXIgbGF0ZXIK KyRkZGwgPSBxcSgKKwlDUkVBVEUgU0VRVUVOQ0UgczsKKwlDUkVBVEUgU0VRVUVOQ0UgczI7 CispOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJGRkbCk7 CisKKyMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbgorbXkgJHB1Ymxpc2hlcl9jb25uc3Ry ID0gJG5vZGVfcHVibGlzaGVyLT5jb25uc3RyIC4gJyBkYm5hbWU9cG9zdGdyZXMnOworJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFBVQkxJQ0FU SU9OIHNlcV9wdWIiKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiQUxURVIgUFVCTElDQVRJT04gc2VxX3B1YiBBREQgU0VRVUVOQ0UgcyIpOworCisk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNVQlND UklQVElPTiBzZXFfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicgUFVCTElD QVRJT04gc2VxX3B1YiBXSVRIIChzbG90X25hbWUgPSBzZXFfc3ViX3Nsb3QpIgorKTsKKwor JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdzZXFfc3ViJyk7CisKKyMgV2Fp dCBmb3IgaW5pdGlhbCBzeW5jIHRvIGZpbmlzaCBhcyB3ZWxsCitteSAkc3luY2VkX3F1ZXJ5 ID0KKyAgIlNFTEVDVCBjb3VudCgxKSA9IDAgRlJPTSBwZ19zdWJzY3JpcHRpb25fcmVsIFdI RVJFIHNyc3Vic3RhdGUgTk9UIElOICgncycsICdyJyk7IjsKKyRub2RlX3N1YnNjcmliZXIt PnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywgJHN5bmNlZF9xdWVyeSkKKyAgb3IgZGll ICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3Igc3Vic2NyaWJlciB0byBzeW5jaHJvbml6 ZSBkYXRhIjsKKworIyBJbnNlcnQgaW5pdGlhbCB0ZXN0IGRhdGEKKyRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCS0tIGdlbmVyYXRlIGEgbnVtYmVy IG9mIHZhbHVlcyB1c2luZyB0aGUgc2VxdWVuY2UKKwlTRUxFQ1QgbmV4dHZhbCgncycpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwKTsKKykpOworCiskbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJ3NlcV9zdWInKTsKKworIyBDaGVjayB0aGUgZGF0YSBvbiBzdWJz Y3JpYmVyCitteSAkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdw b3N0Z3JlcycsIHFxKAorCVNFTEVDVCAqIEZST00gczsKKykpOworCitpcyggJHJlc3VsdCwg JzEzMnwwfHQnLAorCSdjaGVjayByZXBsaWNhdGVkIHNlcXVlbmNlIHZhbHVlcyBvbiBzdWJz Y3JpYmVyJyk7CisKKworIyBhZHZhbmNlIHRoZSBzZXF1ZW5jZSBpbiBhIHJvbGxlZC1iYWNr IHRyYW5zYWN0aW9uIC0gdGhlIHJvbGxiYWNrCisjIGRvZXMgbm90IHdhaXQgZm9yIHRoZSBy ZXBsaWNhdGlvbiwgc28gd2UgY291bGQgc2VlIGFueSBpbnRlcm1lZGlhdGUgc3RhdGUKKyMg c28gZG8gc29tZXRoaW5nIGVsc2UgYWZ0ZXIgdGhlIHRlc3QsIHRvIGVuc3VyZSB3ZSB3YWl0 IGZvciBldmVyeXRoaW5nCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdy ZXMnLCBxcSgKKwlCRUdJTjsKKwlTRUxFQ1QgbmV4dHZhbCgncycpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEsMTAwKTsKKwlST0xMQkFDSzsKKwlJTlNFUlQgSU5UTyBzZXFfdGVzdCBWQUxV RVMgKC0xKTsKKykpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3Nl cV9zdWInKTsKKworIyBDaGVjayB0aGUgZGF0YSBvbiBzdWJzY3JpYmVyCiskcmVzdWx0ID0g JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCVNFTEVD VCAqIEZST00gczsKKykpOworCitpcyggJHJlc3VsdCwgJzIzMXwwfHQnLAorCSdjaGVjayBy ZXBsaWNhdGVkIHNlcXVlbmNlIHZhbHVlcyBvbiBzdWJzY3JpYmVyJyk7CisKKworIyBjcmVh dGUgYSBuZXcgc2VxdWVuY2UgYW5kIHJvbGwgaXQgYmFjayAtIHNob3VsZCBub3QgYmUgcmVw bGljYXRlZCwgZHVlIHRvCisjIHRoZSB0cmFuc2FjdGlvbmFsIGJlaGF2aW9yCiskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlCRUdJTjsKKwlDUkVB VEUgU0VRVUVOQ0UgczI7CisJQUxURVIgUFVCTElDQVRJT04gc2VxX3B1YiBBREQgU0VRVUVO Q0UgczI7CisJU0VMRUNUIG5leHR2YWwoJ3MyJykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwx MDApOworCVJPTExCQUNLOworKSk7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgnc2VxX3N1YicpOworCisjIENoZWNrIHRoZSBkYXRhIG9uIHN1YnNjcmliZXIKKyRy ZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEo CisJU0VMRUNUICogRlJPTSBzMjsKKykpOworCitpcyggJHJlc3VsdCwgJzF8MHxmJywKKwkn Y2hlY2sgcmVwbGljYXRlZCBzZXF1ZW5jZSB2YWx1ZXMgb24gc3Vic2NyaWJlcicpOworCisK KyMgY3JlYXRlIGEgbmV3IHNlcXVlbmNlLCBhZHZhbmNlIGl0IGluIGEgcm9sbGVkLWJhY2sg dHJhbnNhY3Rpb24sIGJ1dCBjb21taXQKKyMgdGhlIGNyZWF0ZSAtIHRoZSBhZHZhbmNlIHNo b3VsZCBiZSByZXBsaWNhdGVkIG5ldmVydGhlbGVzcworJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQkVHSU47CisJQ1JFQVRFIFNFUVVFTkNFIHMy OworCUFMVEVSIFBVQkxJQ0FUSU9OIHNlcV9wdWIgQUREIFNFUVVFTkNFIHMyOworCVNBVkVQ T0lOVCBzcDE7CisJU0VMRUNUIG5leHR2YWwoJ3MyJykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwxMDApOworCVJPTExCQUNLIFRPIHNwMTsKKwlDT01NSVQ7CispKTsKKworJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdzZXFfc3ViJyk7CisKKyMgV2FpdCBmb3Igc3lu YyBvZiB0aGUgc2Vjb25kIHNlcXVlbmNlIHdlIGp1c3QgYWRkZWQgdG8gZmluaXNoCiskc3lu Y2VkX3F1ZXJ5ID0KKyAgIlNFTEVDVCBjb3VudCgxKSA9IDAgRlJPTSBwZ19zdWJzY3JpcHRp b25fcmVsIFdIRVJFIHNyc3Vic3RhdGUgTk9UIElOICgncycsICdyJyk7IjsKKyRub2RlX3N1 YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywgJHN5bmNlZF9xdWVyeSkK KyAgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3Igc3Vic2NyaWJlciB0byBz eW5jaHJvbml6ZSBkYXRhIjsKKworIyBDaGVjayB0aGUgZGF0YSBvbiBzdWJzY3JpYmVyCisk cmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFx KAorCVNFTEVDVCAqIEZST00gczI7CispKTsKKworaXMoICRyZXN1bHQsICcxMzJ8MHx0JywK KwknY2hlY2sgcmVwbGljYXRlZCBzZXF1ZW5jZSB2YWx1ZXMgb24gc3Vic2NyaWJlcicpOwor CisKKyMgYWR2YW5jZSB0aGUgbmV3IHNlcXVlbmNlIGluIGEgdHJhbnNhY3Rpb24sIGFuZCBy b2xsIGl0IGJhY2sgLSB0aGUgcm9sbGJhY2sKKyMgZG9lcyBub3Qgd2FpdCBmb3IgdGhlIHJl cGxpY2F0aW9uLCBzbyB3ZSBjb3VsZCBzZWUgYW55IGludGVybWVkaWF0ZSBzdGF0ZQorIyBz byBkbyBzb21ldGhpbmcgZWxzZSBhZnRlciB0aGUgdGVzdCwgdG8gZW5zdXJlIHdlIHdhaXQg Zm9yIGV2ZXJ5dGhpbmcKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jl cycsIHFxKAorCUJFR0lOOworCVNFTEVDVCBuZXh0dmFsKCdzMicpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEsMTAwKTsKKwlST0xMQkFDSzsKKwlJTlNFUlQgSU5UTyBzZXFfdGVzdCBWQUxV RVMgKC0xKTsKKykpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3Nl cV9zdWInKTsKKworIyBDaGVjayB0aGUgZGF0YSBvbiBzdWJzY3JpYmVyCiskcmVzdWx0ID0g JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCVNFTEVD VCAqIEZST00gczI7CispKTsKKworaXMoICRyZXN1bHQsICcyMzF8MHx0JywKKwknY2hlY2sg cmVwbGljYXRlZCBzZXF1ZW5jZSB2YWx1ZXMgb24gc3Vic2NyaWJlcicpOworCisKKyMgYWR2 YW5jZSB0aGUgc2VxdWVuY2UgaW4gYSBzdWJ0cmFuc2FjdGlvbiAtIHRoZSBzdWJ0cmFuc2Fj dGlvbiBnZXRzIHJvbGxlZAorIyBiYWNrLCBidXQgY29tbWl0IHRoZSBtYWluIG9uZSAtIHRo ZSBjaGFuZ2VzIHNob3VsZCBzdGlsbCBiZSByZXBsaWNhdGVkCiskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlCRUdJTjsKKwlTQVZFUE9JTlQgczE7 CisJU0VMRUNUIG5leHR2YWwoJ3MyJykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDApOwor CVJPTExCQUNLIFRPIHMxOworCUNPTU1JVDsKKykpOworCiskbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJ3NlcV9zdWInKTsKKworIyBDaGVjayB0aGUgZGF0YSBvbiBzdWJz Y3JpYmVyCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0 Z3JlcycsIHFxKAorCVNFTEVDVCAqIEZST00gczI7CispKTsKKworaXMoICRyZXN1bHQsICcz MzB8MHx0JywKKwknY2hlY2sgcmVwbGljYXRlZCBzZXF1ZW5jZSB2YWx1ZXMgb24gc3Vic2Ny aWJlcicpOworCisKKyRub2RlX3N1YnNjcmliZXItPnN0b3AoJ2Zhc3QnKTsKKyRub2RlX3B1 Ymxpc2hlci0+c3RvcCgnZmFzdCcpOwotLSAKMi4zNC4xCgo= --------------FyoxFoByZK72zC8MDOhgNTNp Content-Type: text/x-patch; charset=UTF-8; name="0002-tweak-test-20220213.patch" Content-Disposition: attachment; filename="0002-tweak-test-20220213.patch" Content-Transfer-Encoding: base64 RnJvbSBlZjViMDk1OWZlOTdlY2U1ZDY1N2NlMGFhM2E3NWY4NWZjNWRhZGRmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQDJuZHF1YWRyYW50 LmNvbT4KRGF0ZTogU2F0LCAxMiBGZWIgMjAyMiAwMToyNDo0NyArMDEwMApTdWJqZWN0OiBb UEFUQ0ggMi8yXSB0d2VhayB0ZXN0CgotLS0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAy OF9zZXF1ZW5jZXMucGwgfCAxNCArKysrKysrKy0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDgg aW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMjhfc2VxdWVuY2VzLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDI4X3NlcXVlbmNlcy5wbAppbmRleCAwNmQwNTY0MDU4OS4uMzg0MzQ0MDk0NjMgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyOF9zZXF1ZW5jZXMucGwKKysr IGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDI4X3NlcXVlbmNlcy5wbApAQCAtMjAsNiAr MjAsNyBAQCAkbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKIAogIyBDcmVhdGUgc29tZSBwcmVl eGlzdGluZyBjb250ZW50IG9uIHB1Ymxpc2hlcgogbXkgJGRkbCA9IHFxKAorCUNSRUFURSBU QUJMRSBzZXFfdGVzdCAodiBCSUdJTlQpOwogCUNSRUFURSBTRVFVRU5DRSBzOwogKTsKIApA QCAtMjksNiArMzAsNyBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAkZGRsKTsKICMgQ3JlYXRlIHNvbWUgdGhlIHNhbWUgc3RydWN0dXJlIG9uIHN1YnNjcmli ZXIsIGFuZCBhbiBleHRyYSBzZXF1ZW5jZSB0aGF0CiAjIHdlJ2xsIGNyZWF0ZSBvbiB0aGUg cHVibGlzaGVyIGxhdGVyCiAkZGRsID0gcXEoCisJQ1JFQVRFIFRBQkxFIHNlcV90ZXN0ICh2 IEJJR0lOVCk7CiAJQ1JFQVRFIFNFUVVFTkNFIHM7CiAJQ1JFQVRFIFNFUVVFTkNFIHMyOwog KTsKQEAgLTU5LDcgKzYxLDcgQEAgJG5vZGVfc3Vic2NyaWJlci0+cG9sbF9xdWVyeV91bnRp bCgncG9zdGdyZXMnLCAkc3luY2VkX3F1ZXJ5KQogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoCiAJJ3Bvc3RncmVzJywgcXEoCiAJLS0gZ2VuZXJhdGUgYSBudW1iZXIgb2YgdmFsdWVz IHVzaW5nIHRoZSBzZXF1ZW5jZQotCVNFTEVDVCBuZXh0dmFsKCdzJykgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwxMDApOworCUlOU0VSVCBJTlRPIHNlcV90ZXN0IFNFTEVDVCBuZXh0dmFs KCdzJykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDApOwogKSk7CiAKICRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnc2VxX3N1YicpOwpAQCAtODAsNyArODIsNyBAQCBp cyggJHJlc3VsdCwgJzEzMnwwfHQnLAogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCiAJ J3Bvc3RncmVzJywgcXEoCiAJQkVHSU47Ci0JU0VMRUNUIG5leHR2YWwoJ3MnKSBGUk9NIGdl bmVyYXRlX3NlcmllcygxLDEwMCk7CisJSU5TRVJUIElOVE8gc2VxX3Rlc3QgU0VMRUNUIG5l eHR2YWwoJ3MnKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCk7CiAJUk9MTEJBQ0s7CiAJ SU5TRVJUIElOVE8gc2VxX3Rlc3QgVkFMVUVTICgtMSk7CiApKTsKQEAgLTEwNCw3ICsxMDYs NyBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKIAlCRUdJTjsKIAlDUkVBVEUgU0VR VUVOQ0UgczI7CiAJQUxURVIgUFVCTElDQVRJT04gc2VxX3B1YiBBREQgU0VRVUVOQ0UgczI7 Ci0JU0VMRUNUIG5leHR2YWwoJ3MyJykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDApOwor CUlOU0VSVCBJTlRPIHNlcV90ZXN0IFNFTEVDVCBuZXh0dmFsKCdzMicpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsMTAwKTsKIAlST0xMQkFDSzsKICkpOwogCkBAIC0xMjgsNyArMTMwLDcg QEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCiAJQ1JFQVRFIFNFUVVFTkNFIHMyOwog CUFMVEVSIFBVQkxJQ0FUSU9OIHNlcV9wdWIgQUREIFNFUVVFTkNFIHMyOwogCVNBVkVQT0lO VCBzcDE7Ci0JU0VMRUNUIG5leHR2YWwoJ3MyJykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwx MDApOworCUlOU0VSVCBJTlRPIHNlcV90ZXN0IFNFTEVDVCBuZXh0dmFsKCdzMicpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsMTAwKTsKIAlST0xMQkFDSyBUTyBzcDE7CiAJQ09NTUlUOwog KSk7CkBAIC0xNTcsNyArMTU5LDcgQEAgaXMoICRyZXN1bHQsICcxMzJ8MHx0JywKICRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogCSdwb3N0Z3JlcycsIHFxKAogCUJFR0lOOwotCVNF TEVDVCBuZXh0dmFsKCdzMicpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwKTsKKwlJTlNF UlQgSU5UTyBzZXFfdGVzdCBTRUxFQ1QgbmV4dHZhbCgnczInKSBGUk9NIGdlbmVyYXRlX3Nl cmllcygxLDEwMCk7CiAJUk9MTEJBQ0s7CiAJSU5TRVJUIElOVE8gc2VxX3Rlc3QgVkFMVUVT ICgtMSk7CiApKTsKQEAgLTE4MCw3ICsxODIsNyBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKIAkncG9zdGdyZXMnLCBxcSgKIAlCRUdJTjsKIAlTQVZFUE9JTlQgczE7Ci0JU0VM RUNUIG5leHR2YWwoJ3MyJykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDApOworCUlOU0VS VCBJTlRPIHNlcV90ZXN0IFNFTEVDVCBuZXh0dmFsKCdzMicpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsMTAwKTsKIAlST0xMQkFDSyBUTyBzMTsKIAlDT01NSVQ7CiApKTsKLS0gCjIuMzQu MQoK --------------FyoxFoByZK72zC8MDOhgNTNp--