Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rrLpz-0005yD-I3 for pgsql-hackers@arkaria.postgresql.org; Mon, 01 Apr 2024 17:52:52 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rrLpx-000Q2D-Pk for pgsql-hackers@arkaria.postgresql.org; Mon, 01 Apr 2024 17:52:50 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rrLpx-000Q25-Bm for pgsql-hackers@lists.postgresql.org; Mon, 01 Apr 2024 17:52:50 +0000 Received: from dverite2024.planet-service.net ([185.16.44.252] helo=mail.verite.pro) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rrLpu-000123-1r for pgsql-hackers@postgresql.org; Mon, 01 Apr 2024 17:52:49 +0000 Received: by mail.verite.pro (Postfix, from userid 1000) id 7ED412C0CCE; Mon, 1 Apr 2024 19:52:44 +0200 (CEST) MIME-Version: 1.0 From: "Daniel Verite" Subject: Re: psql's FETCH_COUNT (cursor) is not being respected for CTEs To: Laurenz Albe , Laurenz Albe Cc: PostgreSQL Hackers , Tom Lane , Robert Haas , Jakub Wartak In-Reply-To: <56ac94b3670febcffdd9faf10a08fa9255ca0f04.camel@cybertec.at> Date: Mon, 01 Apr 2024 19:52:42 +0200 Message-Id: <57a408d0-4c64-4bf2-ad20-9b459afeda33@manitou-mail.org> X-Mailer: Manitou v1.7.3 Content-type: multipart/mixed; boundary="----------=_1711993964-47309-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... ------------=_1711993964-47309-0 Content-Type: text/plain; charset="iso-8859-15" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Laurenz Albe wrote: > Here is the code review for patch number 2: > +static void > +CloseGOutput(FILE *gfile_fout, bool is_pipe) >=20 > It makes sense to factor out this code. > But shouldn't these functions have a prototype at the beginning of the fi= le? Looking at the other static functions in psql/common.c, there are 22 of them but only 3 have prototypes at the top of the file. These 3 functions are called before being defined, so these prototypes are mandatory. The other static functions that are defined before being called happen not to have forward declarations, so SetupGOutput() and CloseGOutput() follow that model. > Here is a suggestion for a consolidated comment: >=20 > Fetch the result in chunks if FETCH_COUNT is set. We don't enable chunki= ng > if SHOW_ALL_RESULTS is false, since that requires us to accumulate all ro= ws > before we can tell what should be displayed, which would counter the id= ea > of FETCH_COUNT. Chunk fetching is also disabled if \gset, \crosstab, > \gexec and \watch are used. OK, done like that. > > + if (fetch_count > 0 && result_status =3D=3D PGRES_TUPLES_CHUNK) >=20 > Could it be that result_status =3D=3D PGRES_TUPLES_CHUNK, but fetch_count= is 0? > if not, perhaps there should be an Assert that verifies that, and the "if" > statement should only check for the latter condition. Good point. In fact it can be simplified to if (result_status =3D=3D PGRES_TUPLES_CHUNK), and fetch_count as a variable can be removed from the function. Done that way. > > --- a/src/bin/psql/t/001_basic.pl > > +++ b/src/bin/psql/t/001_basic.pl > > @@ -184,10 +184,10 @@ like( > > "\\set FETCH_COUNT 1\nSELECT error;\n\\errverbose", > > on_error_stop =3D> 0))[2], > > qr/\A^psql::2: ERROR: .*$ > > -^LINE 2: SELECT error;$ > > +^LINE 1: SELECT error;$ > > ^ *^.*$ > > ^psql::3: error: ERROR: [0-9A-Z]{5}: .*$ > > -^LINE 2: SELECT error;$ > > +^LINE 1: SELECT error;$ >=20 > Why does the output change? Perhaps there is a good and harmless > explanation, but the na=EFve expectation would be that it doesn't. Unpatched, psql builds this query: DECLARE _psql_cursor NO SCROLL CURSOR FOR \n therefore the user query starts at line 2. With the patch, the user query is sent as-is, starting at line1, hence the different error location. > After fixing the problem manually, it builds without warning. > The regression tests pass, and the feature works as expected. Thanks for testing. Updated patches are attached. Best regards, --=20 Daniel V=E9rit=E9 https://postgresql.verite.pro/ Twitter: @DanielVerite ------------=_1711993964-47309-0 Content-Type: text-x-patch; name="v7-0001-Implement-retrieval-of-results-in-chunks-with-lib.patch" Content-Disposition: attachment; filename="v7-0001-Implement-retrieval-of-results-in-chunks-with-lib.patch" Content-Transfer-Encoding: base64 RnJvbSAwZmVmYWVlN2Q1YjMwMDNhZDBkMDg5ZWE5ZTkyNjc1YzZmNTAyNDVm IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/RGFu aWVsPTIwVj1DMz1BOXJpdD1DMz1BOT89IDxkYW5pZWxAbWFuaXRvdS1tYWls Lm9yZz4KRGF0ZTogTW9uLCAxIEFwciAyMDI0IDE5OjQ2OjIwICswMjAwClN1 YmplY3Q6IFtQQVRDSCB2NyAxLzJdIEltcGxlbWVudCByZXRyaWV2YWwgb2Yg cmVzdWx0cyBpbiBjaHVua3Mgd2l0aCBsaWJwcS4KClRoaXMgbW9kZSBpcyBz aW1pbGFyIHRvIHRoZSBzaW5nbGUtcm93IG1vZGUgZXhjZXB0IHRoYXQgY2h1 bmtzCm9mIHJlc3VsdHMgY29udGFpbiB1cCB0byBOIHJvd3MgaW5zdGVhZCBv ZiBhIHNpbmdsZSByb3cuCkl0IGlzIG1lYW50IHRvIHJlZHVjZSB0aGUgb3Zl cmhlYWQgb2YgdGhlIHJvdy1ieS1yb3cgYWxsb2NhdGlvbnMKZm9yIGxhcmdl IHJlc3VsdCBzZXRzLgpUaGUgbW9kZSBpcyBzZWxlY3RlZCB3aXRoIFBRc2V0 Q2h1bmtlZFJvd3NNb2RlKGludCBtYXhSb3dzKSBhbmQgcmVzdWx0cwpoYXZl IHRoZSBuZXcgc3RhdHVzIGNvZGUgUEdSRVNfVFVQTEVTX0NIVU5LLgotLS0K IGRvYy9zcmMvc2dtbC9saWJwcS5zZ21sICAgICAgICAgICAgICAgICAgICAg ICB8ICA5OCArKysrKysrKysrKy0tLS0KIC4uLi9saWJwcXdhbHJlY2VpdmVy L2xpYnBxd2FscmVjZWl2ZXIuYyAgICAgICB8ICAgMSArCiBzcmMvYmluL3Bn X2FtY2hlY2svcGdfYW1jaGVjay5jICAgICAgICAgICAgICAgfCAgIDEgKwog c3JjL2ludGVyZmFjZXMvbGlicHEvZXhwb3J0cy50eHQgICAgICAgICAgICAg IHwgICAxICsKIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWV4ZWMuYyAgICAg ICAgICAgICAgICB8IDExNyArKysrKysrKysrKysrKystLS0KIHNyYy9pbnRl cmZhY2VzL2xpYnBxL2xpYnBxLWZlLmggICAgICAgICAgICAgICB8ICAgNCAr LQogc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmggICAgICAgICAg ICAgIHwgICA3ICstCiA3IGZpbGVzIGNoYW5nZWQsIDE4NSBpbnNlcnRpb25z KCspLCA0NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvbGlicHEuc2dtbCBiL2RvYy9zcmMvc2dtbC9saWJwcS5zZ21sCmluZGV4 IGQzZTg3MDU2ZjIuLjE4MTQ5MjFkNWEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9saWJwcS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9saWJwcS5zZ21s CkBAIC0zNTQ1LDcgKzM1NDUsMjAgQEAgRXhlY1N0YXR1c1R5cGUgUFFyZXN1 bHRTdGF0dXMoY29uc3QgUEdyZXN1bHQgKnJlcyk7CiAgICAgICAgICAgICBU aGUgPHN0cnVjdG5hbWU+UEdyZXN1bHQ8L3N0cnVjdG5hbWU+IGNvbnRhaW5z IGEgc2luZ2xlIHJlc3VsdCB0dXBsZQogICAgICAgICAgICAgZnJvbSB0aGUg Y3VycmVudCBjb21tYW5kLiAgVGhpcyBzdGF0dXMgb2NjdXJzIG9ubHkgd2hl bgogICAgICAgICAgICAgc2luZ2xlLXJvdyBtb2RlIGhhcyBiZWVuIHNlbGVj dGVkIGZvciB0aGUgcXVlcnkKLSAgICAgICAgICAgIChzZWUgPHhyZWYgbGlu a2VuZD0ibGlicHEtc2luZ2xlLXJvdy1tb2RlIi8+KS4KKyAgICAgICAgICAg IChzZWUgPHhyZWYgbGlua2VuZD0ibGlicHEtY2h1bmtlZC1yZXN1bHRzLW1v ZGVzIi8+KS4KKyAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDwvbGlz dGl0ZW0+CisgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAgICAg PHZhcmxpc3RlbnRyeSBpZD0ibGlicHEtcGdyZXMtdHVwbGVzLWNodW5rIj4K KyAgICAgICAgICA8dGVybT48bGl0ZXJhbD5QR1JFU19UVVBMRVNfQ0hVTks8 L2xpdGVyYWw+PC90ZXJtPgorICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAg ICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgPHN0cnVjdG5hbWU+UEdy ZXN1bHQ8L3N0cnVjdG5hbWU+IGNvbnRhaW5zIHNldmVyYWwgdHVwbGVzCisg ICAgICAgICAgICBmcm9tIHRoZSBjdXJyZW50IGNvbW1hbmQuIFRoZSBjb3Vu dCBvZiB0dXBsZXMgY2Fubm90IGV4Y2VlZAorICAgICAgICAgICAgdGhlIG1h eGltdW0gcGFzc2VkIHRvIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRc2V0Q2h1 bmtlZFJvd3NNb2RlIi8+LgorICAgICAgICAgICAgVGhpcyBzdGF0dXMgb2Nj dXJzIG9ubHkgd2hlbiB0aGUgY2h1bmtlZCBtb2RlIGhhcyBiZWVuIHNlbGVj dGVkCisgICAgICAgICAgICBmb3IgdGhlIHF1ZXJ5IChzZWUgPHhyZWYgbGlu a2VuZD0ibGlicHEtY2h1bmtlZC1yZXN1bHRzLW1vZGVzIi8+KS4KICAgICAg ICAgICAgPC9wYXJhPgogICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAg ICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTUxOTcsOCArNTIxMCw4IEBAIFBHcmVz dWx0ICpQUWdldFJlc3VsdChQR2Nvbm4gKmNvbm4pOwogICA8cGFyYT4KICAg IEFub3RoZXIgZnJlcXVlbnRseS1kZXNpcmVkIGZlYXR1cmUgdGhhdCBjYW4g YmUgb2J0YWluZWQgd2l0aAogICAgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFz ZW5kUXVlcnkiLz4gYW5kIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRZ2V0UmVz dWx0Ii8+Ci0gICBpcyByZXRyaWV2aW5nIGxhcmdlIHF1ZXJ5IHJlc3VsdHMg YSByb3cgYXQgYSB0aW1lLiAgVGhpcyBpcyBkaXNjdXNzZWQKLSAgIGluIDx4 cmVmIGxpbmtlbmQ9ImxpYnBxLXNpbmdsZS1yb3ctbW9kZSIvPi4KKyAgIGlz IHJldHJpZXZpbmcgbGFyZ2UgcXVlcnkgcmVzdWx0cyBhIGxpbWl0ZWQgbnVt YmVyIG9mIHJvd3MgYXQgYSB0aW1lLiAgVGhpcyBpcyBkaXNjdXNzZWQKKyAg IGluIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLWNodW5rZWQtcmVzdWx0cy1tb2Rl cyIvPi4KICAgPC9wYXJhPgogCiAgIDxwYXJhPgpAQCAtNTU2MiwxMiArNTU3 NSwxMyBAQCBpbnQgUFFmbHVzaChQR2Nvbm4gKmNvbm4pOwogICAgIDwvcGFy YT4KIAogICAgIDxwYXJhPgotICAgICBUbyBlbnRlciBzaW5nbGUtcm93IG1v ZGUsIGNhbGwgPGZ1bmN0aW9uPlBRc2V0U2luZ2xlUm93TW9kZTwvZnVuY3Rp b24+Ci0gICAgIGJlZm9yZSByZXRyaWV2aW5nIHJlc3VsdHMgd2l0aCA8ZnVu Y3Rpb24+UFFnZXRSZXN1bHQ8L2Z1bmN0aW9uPi4KLSAgICAgVGhpcyBtb2Rl IHNlbGVjdGlvbiBpcyBlZmZlY3RpdmUgb25seSBmb3IgdGhlIHF1ZXJ5IGN1 cnJlbnRseQotICAgICBiZWluZyBwcm9jZXNzZWQuIEZvciBtb3JlIGluZm9y bWF0aW9uIG9uIHRoZSB1c2Ugb2YKLSAgICAgPGZ1bmN0aW9uPlBRc2V0U2lu Z2xlUm93TW9kZTwvZnVuY3Rpb24+LAotICAgICByZWZlciB0byA8eHJlZiBs aW5rZW5kPSJsaWJwcS1zaW5nbGUtcm93LW1vZGUiLz4uCisgICAgIFRvIGVu dGVyIHNpbmdsZS1yb3cgb3IgY2h1bmtlZCBtb2RlcywgY2FsbAorICAgICBy ZXNwZWN0aXZlbHkgPGZ1bmN0aW9uPlBRc2V0U2luZ2xlUm93TW9kZTwvZnVu Y3Rpb24+CisgICAgIG9yIDxmdW5jdGlvbj5QUXNldENodW5rZWRSb3dzTW9k ZTwvZnVuY3Rpb24+IGJlZm9yZSByZXRyaWV2aW5nIHJlc3VsdHMKKyAgICAg d2l0aCA8ZnVuY3Rpb24+UFFnZXRSZXN1bHQ8L2Z1bmN0aW9uPi4gIFRoaXMg bW9kZSBzZWxlY3Rpb24gaXMgZWZmZWN0aXZlCisgICAgIG9ubHkgZm9yIHRo ZSBxdWVyeSBjdXJyZW50bHkgYmVpbmcgcHJvY2Vzc2VkLiBGb3IgbW9yZSBp bmZvcm1hdGlvbiBvbiB0aGUKKyAgICAgdXNlIG9mIHRoZXNlIGZ1bmN0aW9u cyByZWZlcgorICAgICB0byA8eHJlZiBsaW5rZW5kPSJsaWJwcS1jaHVua2Vk LXJlc3VsdHMtbW9kZXMiIC8+LgogICAgIDwvcGFyYT4KIAogICAgIDxwYXJh PgpAQCAtNTkzNCwxMCArNTk0OCwxMCBAQCBVUERBVEUgbXl0YWJsZSBTRVQg eCA9IHggKyAxIFdIRVJFIGlkID0gNDI7CiAgIDwvc2VjdDI+CiAgPC9zZWN0 MT4KIAotIDxzZWN0MSBpZD0ibGlicHEtc2luZ2xlLXJvdy1tb2RlIj4KLSAg PHRpdGxlPlJldHJpZXZpbmcgUXVlcnkgUmVzdWx0cyBSb3ctYnktUm93PC90 aXRsZT4KKyA8c2VjdDEgaWQ9ImxpYnBxLWNodW5rZWQtcmVzdWx0cy1tb2Rl cyI+CisgIDx0aXRsZT5SZXRyaWV2aW5nIFF1ZXJ5IFJlc3VsdHMgaW4gY2h1 bmtzPC90aXRsZT4KIAotICA8aW5kZXh0ZXJtIHpvbmU9ImxpYnBxLXNpbmds ZS1yb3ctbW9kZSI+CisgIDxpbmRleHRlcm0gem9uZT0ibGlicHEtY2h1bmtl ZC1yZXN1bHRzLW1vZGVzIj4KICAgIDxwcmltYXJ5PmxpYnBxPC9wcmltYXJ5 PgogICAgPHNlY29uZGFyeT5zaW5nbGUtcm93IG1vZGU8L3NlY29uZGFyeT4K ICAgPC9pbmRleHRlcm0+CkBAIC01OTQ4LDEzICs1OTYyLDE1IEBAIFVQREFU RSBteXRhYmxlIFNFVCB4ID0geCArIDEgV0hFUkUgaWQgPSA0MjsKICAgIDxz dHJ1Y3RuYW1lPlBHcmVzdWx0PC9zdHJ1Y3RuYW1lPi4gIFRoaXMgY2FuIGJl IHVud29ya2FibGUgZm9yIGNvbW1hbmRzCiAgICB0aGF0IHJldHVybiBhIGxh cmdlIG51bWJlciBvZiByb3dzLiAgRm9yIHN1Y2ggY2FzZXMsIGFwcGxpY2F0 aW9ucyBjYW4gdXNlCiAgICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUXNlbmRR dWVyeSIvPiBhbmQgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFnZXRSZXN1bHQi Lz4gaW4KLSAgIDxmaXJzdHRlcm0+c2luZ2xlLXJvdyBtb2RlPC9maXJzdHRl cm0+LiAgSW4gdGhpcyBtb2RlLCB0aGUgcmVzdWx0IHJvdyhzKSBhcmUKLSAg IHJldHVybmVkIHRvIHRoZSBhcHBsaWNhdGlvbiBvbmUgYXQgYSB0aW1lLCBh cyB0aGV5IGFyZSByZWNlaXZlZCBmcm9tIHRoZQotICAgc2VydmVyLgorICAg PGZpcnN0dGVybT5zaW5nbGUtcm93IG1vZGU8L2ZpcnN0dGVybT4gb3IgPGZp cnN0dGVybT5jaHVua2VkIG1vZGU8L2ZpcnN0dGVybT4uCisgICBJbiB0aGVz ZSBtb2RlcywgdGhlIHJlc3VsdCByb3cocykgYXJlIHJldHVybmVkIHRvIHRo ZSBhcHBsaWNhdGlvbiBvbmUgYXQgYQorICAgdGltZSBmb3IgdGhlIHNpbmds ZS1yb3cgbW9kZSBhbmQgYnkgY2h1bmtzIGZvciB0aGUgY2h1bmtlZCBtb2Rl LCBhcyB0aGV5CisgICBhcmUgcmVjZWl2ZWQgZnJvbSB0aGUgc2VydmVyLgog ICA8L3BhcmE+CiAKICAgPHBhcmE+Ci0gICBUbyBlbnRlciBzaW5nbGUtcm93 IG1vZGUsIGNhbGwgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFzZXRTaW5nbGVS b3dNb2RlIi8+CisgICBUbyBlbnRlciB0aGVzZSBtb2RlcywgY2FsbCA8eHJl ZiBsaW5rZW5kPSJsaWJwcS1QUXNldFNpbmdsZVJvd01vZGUiLz4KKyAgICBv ciA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUXNldENodW5rZWRSb3dzTW9kZSIv PgogICAgaW1tZWRpYXRlbHkgYWZ0ZXIgYSBzdWNjZXNzZnVsIGNhbGwgb2Yg PHhyZWYgbGlua2VuZD0ibGlicHEtUFFzZW5kUXVlcnkiLz4KICAgIChvciBh IHNpYmxpbmcgZnVuY3Rpb24pLiAgVGhpcyBtb2RlIHNlbGVjdGlvbiBpcyBl ZmZlY3RpdmUgb25seSBmb3IgdGhlCiAgICBjdXJyZW50bHkgZXhlY3V0aW5n IHF1ZXJ5LiAgVGhlbiBjYWxsIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRZ2V0 UmVzdWx0Ii8+CkBAIC01OTYyLDcgKzU5NzgsOCBAQCBVUERBVEUgbXl0YWJs ZSBTRVQgeCA9IHggKyAxIFdIRVJFIGlkID0gNDI7CiAgICBsaW5rZW5kPSJs aWJwcS1hc3luYyIvPi4gIElmIHRoZSBxdWVyeSByZXR1cm5zIGFueSByb3dz LCB0aGV5IGFyZSByZXR1cm5lZAogICAgYXMgaW5kaXZpZHVhbCA8c3RydWN0 bmFtZT5QR3Jlc3VsdDwvc3RydWN0bmFtZT4gb2JqZWN0cywgd2hpY2ggbG9v ayBsaWtlCiAgICBub3JtYWwgcXVlcnkgcmVzdWx0cyBleGNlcHQgZm9yIGhh dmluZyBzdGF0dXMgY29kZQotICAgPGxpdGVyYWw+UEdSRVNfU0lOR0xFX1RV UExFPC9saXRlcmFsPiBpbnN0ZWFkIG9mCisgICA8bGl0ZXJhbD5QR1JFU19T SU5HTEVfVFVQTEU8L2xpdGVyYWw+IGZvciB0aGUgc2luZ2xlLXJvdyBtb2Rl IGFuZAorICAgPGxpdGVyYWw+UEdSRVNfVFVQTEVTX0NIVU5LPC9saXRlcmFs PiBmb3IgdGhlIGNodW5rZWQgbW9kZSwgaW5zdGVhZCBvZgogICAgPGxpdGVy YWw+UEdSRVNfVFVQTEVTX09LPC9saXRlcmFsPi4gIEFmdGVyIHRoZSBsYXN0 IHJvdywgb3IgaW1tZWRpYXRlbHkgaWYKICAgIHRoZSBxdWVyeSByZXR1cm5z IHplcm8gcm93cywgYSB6ZXJvLXJvdyBvYmplY3Qgd2l0aCBzdGF0dXMKICAg IDxsaXRlcmFsPlBHUkVTX1RVUExFU19PSzwvbGl0ZXJhbD4gaXMgcmV0dXJu ZWQ7IHRoaXMgaXMgdGhlIHNpZ25hbCB0aGF0IG5vCkBAIC01OTc1LDkgKzU5 OTIsOSBAQCBVUERBVEUgbXl0YWJsZSBTRVQgeCA9IHggKyAxIFdIRVJFIGlk ID0gNDI7CiAgIDwvcGFyYT4KIAogICA8cGFyYT4KLSAgIFdoZW4gdXNpbmcg cGlwZWxpbmUgbW9kZSwgc2luZ2xlLXJvdyBtb2RlIG5lZWRzIHRvIGJlIGFj dGl2YXRlZCBmb3IgZWFjaAotICAgcXVlcnkgaW4gdGhlIHBpcGVsaW5lIGJl Zm9yZSByZXRyaWV2aW5nIHJlc3VsdHMgZm9yIHRoYXQgcXVlcnkKLSAgIHdp dGggPGZ1bmN0aW9uPlBRZ2V0UmVzdWx0PC9mdW5jdGlvbj4uCisgICBXaGVu IHVzaW5nIHBpcGVsaW5lIG1vZGUsIHRoZSBzaW5nbGUtcm93IG9yIGNodW5r ZWQgbW9kZSBuZWVkIHRvIGJlCisgICBhY3RpdmF0ZWQgZm9yIGVhY2ggcXVl cnkgaW4gdGhlIHBpcGVsaW5lIGJlZm9yZSByZXRyaWV2aW5nIHJlc3VsdHMg Zm9yIHRoYXQKKyAgIHF1ZXJ5IHdpdGggPGZ1bmN0aW9uPlBRZ2V0UmVzdWx0 PC9mdW5jdGlvbj4uCiAgICBTZWUgPHhyZWYgbGlua2VuZD0ibGlicHEtcGlw ZWxpbmUtbW9kZSIvPiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgPC9wYXJh PgogCkBAIC02MDExLDE0ICs2MDI4LDQ5IEBAIGludCBQUXNldFNpbmdsZVJv d01vZGUoUEdjb25uICpjb25uKTsKICAgIDwvdmFyaWFibGVsaXN0PgogICA8 L3BhcmE+CiAKKyAgICA8cGFyYT4KKyAgIDx2YXJpYWJsZWxpc3Q+CisgICAg PHZhcmxpc3RlbnRyeSBpZD0ibGlicHEtUFFzZXRDaHVua2VkUm93c01vZGUi PgorICAgICAgPHRlcm0+PGZ1bmN0aW9uPlBRc2V0Q2h1bmtlZFJvd3NNb2Rl PC9mdW5jdGlvbj4KKyAgICAgICAgPGluZGV4dGVybT48cHJpbWFyeT5QUXNl dENodW5rZWRSb3dzTW9kZTwvcHJpbWFyeT48L2luZGV4dGVybT48L3Rlcm0+ CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgU2VsZWN0 IHRvIHJlY2VpdmUgdGhlIHJlc3VsdHMgZm9yIHRoZSBjdXJyZW50bHktZXhl Y3V0aW5nIHF1ZXJ5IGluIGNodW5rcy4KKworPHN5bm9wc2lzPgorICBpbnQg UFFzZXRDaHVua2VkUm93c01vZGUoUEdjb25uICpjb25uLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IG1heFJvd3MpOworPC9zeW5vcHNpcz4K KyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgVGhpcyBm dW5jdGlvbiBpcyBzaW1pbGFyIHRvIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBR c2V0U2luZ2xlUm93TW9kZSIvPiwKKyAgICAgICBleGNlcHQgdGhhdCBpdCBj YW4gcmV0cmlldmUgPHJlcGxhY2VhYmxlPm1heFJvd3M8L3JlcGxhY2VhYmxl PiByb3dzCisgICAgICAgcGVyIGNhbGwgdG8gPHhyZWYgbGlua2VuZD0ibGli cHEtUFFnZXRSZXN1bHQiLz4gaW5zdGVhZCBvZiBhIHNpbmdsZSByb3cuCisg ICAgICAgVGhpcyBmdW5jdGlvbiBjYW4gb25seSBiZSBjYWxsZWQgaW1tZWRp YXRlbHkgYWZ0ZXIKKyAgICAgICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUXNl bmRRdWVyeSIvPiBvciBvbmUgb2YgaXRzIHNpYmxpbmcgZnVuY3Rpb25zLAor ICAgICAgIGJlZm9yZSBhbnkgb3RoZXIgb3BlcmF0aW9uIG9uIHRoZSBjb25u ZWN0aW9uIHN1Y2ggYXMKKyAgICAgICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1Q UWNvbnN1bWVJbnB1dCIvPiBvcgorICAgICAgIDx4cmVmIGxpbmtlbmQ9Imxp YnBxLVBRZ2V0UmVzdWx0Ii8+LiAgSWYgY2FsbGVkIGF0IHRoZSBjb3JyZWN0 IHRpbWUsCisgICAgICAgdGhlIGZ1bmN0aW9uIGFjdGl2YXRlcyB0aGUgY2h1 bmtlZCBtb2RlIGZvciB0aGUgY3VycmVudCBxdWVyeSBhbmQKKyAgICAgICBy ZXR1cm5zIDEuICBPdGhlcndpc2UgdGhlIG1vZGUgc3RheXMgdW5jaGFuZ2Vk IGFuZCB0aGUgZnVuY3Rpb24KKyAgICAgICByZXR1cm5zIDAuICBJbiBhbnkg Y2FzZSwgdGhlIG1vZGUgcmV2ZXJ0cyB0byBub3JtYWwgYWZ0ZXIKKyAgICAg ICBjb21wbGV0aW9uIG9mIHRoZSBjdXJyZW50IHF1ZXJ5LgorICAgICAgPC9w YXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgIDwvdmFybGlzdGVudHJ5Pgor ICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcGFyYT4KKwogICA8Y2F1dGlvbj4K ICAgIDxwYXJhPgogICAgIFdoaWxlIHByb2Nlc3NpbmcgYSBxdWVyeSwgdGhl IHNlcnZlciBtYXkgcmV0dXJuIHNvbWUgcm93cyBhbmQgdGhlbgogICAgIGVu Y291bnRlciBhbiBlcnJvciwgY2F1c2luZyB0aGUgcXVlcnkgdG8gYmUgYWJv cnRlZC4gIE9yZGluYXJpbHksCiAgICAgPGFwcGxpY2F0aW9uPmxpYnBxPC9h cHBsaWNhdGlvbj4gZGlzY2FyZHMgYW55IHN1Y2ggcm93cyBhbmQgcmVwb3J0 cyBvbmx5IHRoZQotICAgIGVycm9yLiAgQnV0IGluIHNpbmdsZS1yb3cgbW9k ZSwgdGhvc2Ugcm93cyB3aWxsIGhhdmUgYWxyZWFkeSBiZWVuCi0gICAgcmV0 dXJuZWQgdG8gdGhlIGFwcGxpY2F0aW9uLiAgSGVuY2UsIHRoZSBhcHBsaWNh dGlvbiB3aWxsIHNlZSBzb21lCi0gICAgPGxpdGVyYWw+UEdSRVNfU0lOR0xF X1RVUExFPC9saXRlcmFsPiA8c3RydWN0bmFtZT5QR3Jlc3VsdDwvc3RydWN0 bmFtZT4KKyAgICBlcnJvci4gIEJ1dCBpbiB0aGUgc2luZ2xlLXJvdyBvciBj aHVua2VkIG1vZGVzLCB0aG9zZSByb3dzIHdpbGwgaGF2ZSBhbHJlYWR5Cisg ICAgYmVlbiByZXR1cm5lZCB0byB0aGUgYXBwbGljYXRpb24uIEhlbmNlLCB0 aGUgYXBwbGljYXRpb24gd2lsbCBzZWUgc29tZQorICAgIDxsaXRlcmFsPlBH UkVTX1NJTkdMRV9UVVBMRTwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+UEdSRVNf VFVQTEVTX0NIVU5LPC9saXRlcmFsPgorICAgIDxzdHJ1Y3RuYW1lPlBHcmVz dWx0PC9zdHJ1Y3RuYW1lPgogICAgIG9iamVjdHMgZm9sbG93ZWQgYnkgYSA8 bGl0ZXJhbD5QR1JFU19GQVRBTF9FUlJPUjwvbGl0ZXJhbD4gb2JqZWN0LiAg Rm9yCiAgICAgcHJvcGVyIHRyYW5zYWN0aW9uYWwgYmVoYXZpb3IsIHRoZSBh cHBsaWNhdGlvbiBtdXN0IGJlIGRlc2lnbmVkIHRvCiAgICAgZGlzY2FyZCBv ciB1bmRvIHdoYXRldmVyIGhhcyBiZWVuIGRvbmUgd2l0aCB0aGUgcHJldmlv dXNseS1wcm9jZXNzZWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJw cXdhbHJlY2VpdmVyLmMKaW5kZXggNzYxYmYwZjY3Ny4uODNhNDY1YTM5MCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxy ZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMKKysrIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVy LmMKQEAgLTEyNDksNiArMTI0OSw3IEBAIGxpYnBxcmN2X2V4ZWMoV2FsUmVj ZWl2ZXJDb25uICpjb25uLCBjb25zdCBjaGFyICpxdWVyeSwKIAlzd2l0Y2gg KFBRcmVzdWx0U3RhdHVzKHBncmVzKSkKIAl7CiAJCWNhc2UgUEdSRVNfU0lO R0xFX1RVUExFOgorCQljYXNlIFBHUkVTX1RVUExFU19DSFVOSzoKIAkJY2Fz ZSBQR1JFU19UVVBMRVNfT0s6CiAJCQl3YWxyZXMtPnN0YXR1cyA9IFdBTFJD Vl9PS19UVVBMRVM7CiAJCQlsaWJwcXJjdl9wcm9jZXNzVHVwbGVzKHBncmVz LCB3YWxyZXMsIG5SZXRUeXBlcywgcmV0VHlwZXMpOwpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ19hbWNoZWNrL3BnX2FtY2hlY2suYyBiL3NyYy9iaW4vcGdf YW1jaGVjay9wZ19hbWNoZWNrLmMKaW5kZXggZTVmOWVlZGM0Ny4uNzI4MzA1 YTdjZiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19hbWNoZWNrL3BnX2FtY2hl Y2suYworKysgYi9zcmMvYmluL3BnX2FtY2hlY2svcGdfYW1jaGVjay5jCkBA IC05ODksNiArOTg5LDcgQEAgc2hvdWxkX3Byb2Nlc3NpbmdfY29udGludWUo UEdyZXN1bHQgKnJlcykKIAkJY2FzZSBQR1JFU19DT1BZX0lOOgogCQljYXNl IFBHUkVTX0NPUFlfQk9USDoKIAkJY2FzZSBQR1JFU19TSU5HTEVfVFVQTEU6 CisJCWNhc2UgUEdSRVNfVFVQTEVTX0NIVU5LOgogCQljYXNlIFBHUkVTX1BJ UEVMSU5FX1NZTkM6CiAJCWNhc2UgUEdSRVNfUElQRUxJTkVfQUJPUlRFRDoK IAkJCXJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2Vz L2xpYnBxL2V4cG9ydHMudHh0IGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZXhw b3J0cy50eHQKaW5kZXggOWZiZDNkMzQwNy4uYzdkMDE5NThhYiAxMDA2NDQK LS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZXhwb3J0cy50eHQKKysrIGIv c3JjL2ludGVyZmFjZXMvbGlicHEvZXhwb3J0cy50eHQKQEAgLTIwMiwzICsy MDIsNCBAQCBQUWNhbmNlbFNvY2tldCAgICAgICAgICAgIDE5OQogUFFjYW5j ZWxFcnJvck1lc3NhZ2UgICAgICAyMDAKIFBRY2FuY2VsUmVzZXQgICAgICAg ICAgICAgMjAxCiBQUWNhbmNlbEZpbmlzaCAgICAgICAgICAgIDIwMgorUFFz ZXRDaHVua2VkUm93c01vZGUJICAyMDMKZGlmZiAtLWdpdCBhL3NyYy9pbnRl cmZhY2VzL2xpYnBxL2ZlLWV4ZWMuYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBx L2ZlLWV4ZWMuYwppbmRleCBjMDJhOTE4MGIyLi5iOWE3M2I1ODNlIDEwMDY0 NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1leGVjLmMKKysrIGIv c3JjL2ludGVyZmFjZXMvbGlicHEvZmUtZXhlYy5jCkBAIC00MSw3ICs0MSw4 IEBAIGNoYXIJICAgKmNvbnN0IHBncmVzU3RhdHVzW10gPSB7CiAJIlBHUkVT X0NPUFlfQk9USCIsCiAJIlBHUkVTX1NJTkdMRV9UVVBMRSIsCiAJIlBHUkVT X1BJUEVMSU5FX1NZTkMiLAotCSJQR1JFU19QSVBFTElORV9BQk9SVEVEIgor CSJQR1JFU19QSVBFTElORV9BQk9SVEVEIiwKKwkiUEdSRVNfVFVQTEVTX0NI VU5LIgogfTsKIAogLyogV2UgcmV0dXJuIHRoaXMgaWYgd2UncmUgdW5hYmxl IHRvIG1ha2UgYSBQR3Jlc3VsdCBhdCBhbGwgKi8KQEAgLTgzLDcgKzg0LDcg QEAgc3RhdGljIGludAljaGVja19maWVsZF9udW1iZXIoY29uc3QgUEdyZXN1 bHQgKnJlcywgaW50IGZpZWxkX251bSk7CiBzdGF0aWMgdm9pZCBwcVBpcGVs aW5lUHJvY2Vzc1F1ZXVlKFBHY29ubiAqY29ubik7CiBzdGF0aWMgaW50CXBx UGlwZWxpbmVTeW5jSW50ZXJuYWwoUEdjb25uICpjb25uLCBib29sIGltbWVk aWF0ZV9mbHVzaCk7CiBzdGF0aWMgaW50CXBxUGlwZWxpbmVGbHVzaChQR2Nv bm4gKmNvbm4pOwotCitzdGF0aWMgYm9vbCBjYW5DaGFuZ2VSb3dNb2RlKFBH Y29ubiAqY29ubik7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KICAqIFNwYWNl IG1hbmFnZW1lbnQgZm9yIFBHcmVzdWx0LgpAQCAtMjAwLDYgKzIwMSw3IEBA IFBRbWFrZUVtcHR5UEdyZXN1bHQoUEdjb25uICpjb25uLCBFeGVjU3RhdHVz VHlwZSBzdGF0dXMpCiAJCQljYXNlIFBHUkVTX0NPUFlfSU46CiAJCQljYXNl IFBHUkVTX0NPUFlfQk9USDoKIAkJCWNhc2UgUEdSRVNfU0lOR0xFX1RVUExF OgorCQkJY2FzZSBQR1JFU19UVVBMRVNfQ0hVTks6CiAJCQkJLyogbm9uLWVy cm9yIGNhc2VzICovCiAJCQkJYnJlYWs7CiAJCQlkZWZhdWx0OgpAQCAtOTEz LDggKzkxNSw5IEBAIHBxUHJlcGFyZUFzeW5jUmVzdWx0KFBHY29ubiAqY29u bikKIAkvKgogCSAqIFJlcGxhY2UgY29ubi0+cmVzdWx0IHdpdGggbmV4dF9y ZXN1bHQsIGlmIGFueS4gIEluIHRoZSBub3JtYWwgY2FzZQogCSAqIHRoZXJl IGlzbid0IGEgbmV4dCByZXN1bHQgYW5kIHdlJ3JlIGp1c3QgZHJvcHBpbmcg b3duZXJzaGlwIG9mIHRoZQotCSAqIGN1cnJlbnQgcmVzdWx0LiAgSW4gc2lu Z2xlLXJvdyBtb2RlIHRoaXMgcmVzdG9yZXMgdGhlIHNpdHVhdGlvbiB0byB3 aGF0Ci0JICogaXQgd2FzIGJlZm9yZSB3ZSBjcmVhdGVkIHRoZSBjdXJyZW50 IHNpbmdsZS1yb3cgcmVzdWx0LgorCSAqIGN1cnJlbnQgcmVzdWx0LiAgSW4g c2luZ2xlLXJvdyBhbmQgY2h1bmtlZCBtb2RlcyB0aGlzIHJlc3RvcmVzIHRo ZQorCSAqIHNpdHVhdGlvbiB0byB3aGF0IGl0IHdhcyBiZWZvcmUgd2UgY3Jl YXRlZCB0aGUgY3VycmVudCBzaW5nbGUtcm93IG9yCisJICogY2h1bmstb2Yt cm93cyByZXN1bHQuCiAJICovCiAJY29ubi0+cmVzdWx0ID0gY29ubi0+bmV4 dF9yZXN1bHQ7CiAJY29ubi0+ZXJyb3JfcmVzdWx0ID0gZmFsc2U7IC8qIG5l eHRfcmVzdWx0IGlzIG5ldmVyIGFuIGVycm9yICovCkBAIC0xMjAwLDEwICsx MjAzLDExIEBAIHBxU2F2ZVBhcmFtZXRlclN0YXR1cyhQR2Nvbm4gKmNvbm4s IGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQogICogKFN1 Y2ggYSBzdHJpbmcgc2hvdWxkIGFscmVhZHkgYmUgdHJhbnNsYXRlZCB2aWEg bGlicHFfZ2V0dGV4dCgpLikKICAqIElmIGl0IGlzIGxlZnQgTlVMTCwgdGhl IGVycm9yIGlzIHByZXN1bWVkIHRvIGJlICJvdXQgb2YgbWVtb3J5Ii4KICAq Ci0gKiBJbiBzaW5nbGUtcm93IG1vZGUsIHdlIGNyZWF0ZSBhIG5ldyByZXN1 bHQgaG9sZGluZyBqdXN0IHRoZSBjdXJyZW50IHJvdywKLSAqIHN0YXNoaW5n IHRoZSBwcmV2aW91cyByZXN1bHQgaW4gY29ubi0+bmV4dF9yZXN1bHQgc28g dGhhdCBpdCBiZWNvbWVzCi0gKiBhY3RpdmUgYWdhaW4gYWZ0ZXIgcHFQcmVw YXJlQXN5bmNSZXN1bHQoKS4gIFRoaXMgYWxsb3dzIHRoZSByZXN1bHQgbWV0 YWRhdGEKLSAqIChjb2x1bW4gZGVzY3JpcHRpb25zKSB0byBiZSBjYXJyaWVk IGZvcndhcmQgdG8gZWFjaCByZXN1bHQgcm93LgorICogSW4gc2luZ2xlLXJv dyBvciBjaHVua2VkIG1vZGUsIHdlIGNyZWF0ZSBhIG5ldyByZXN1bHQgaG9s ZGluZyBqdXN0IHRoZQorICogY3VycmVudCBzZXQgb2Ygcm93cywgc3Rhc2hp bmcgdGhlIHByZXZpb3VzIHJlc3VsdCBpbiBjb25uLT5uZXh0X3Jlc3VsdCBz bworICogdGhhdCBpdCBiZWNvbWVzIGFjdGl2ZSBhZ2FpbiBhZnRlciBwcVBy ZXBhcmVBc3luY1Jlc3VsdCgpLiAgVGhpcyBhbGxvd3MgdGhlCisgKiByZXN1 bHQgbWV0YWRhdGEgKGNvbHVtbiBkZXNjcmlwdGlvbnMpIHRvIGJlIGNhcnJp ZWQgZm9yd2FyZCB0byBlYWNoIHJlc3VsdAorICogcm93LgogICovCiBpbnQK IHBxUm93UHJvY2Vzc29yKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqKmVy cm1zZ3ApCkBAIC0xMjI4LDYgKzEyMzIsMjggQEAgcHFSb3dQcm9jZXNzb3Io UEdjb25uICpjb25uLCBjb25zdCBjaGFyICoqZXJybXNncCkKIAkJaWYgKCFy ZXMpCiAJCQlyZXR1cm4gMDsKIAl9CisJZWxzZSBpZiAoY29ubi0+cm93c0No dW5rU2l6ZSA+IDApCisJeworCQkvKgorCQkgKiBJbiBjaHVua2VkIG1vZGUs IG1ha2UgYSBuZXcgUEdyZXN1bHQgdGhhdCB3aWxsIGhvbGQgTiByb3dzOyB0 aGUKKwkJICogb3JpZ2luYWwgY29ubi0+cmVzdWx0IGlzIGxlZnQgdW5jaGFu Z2VkLCBhcyBpbiB0aGUgc2luZ2xlLXJvdyBtb2RlLgorCQkgKi8KKwkJaWYg KCFjb25uLT5jaHVua19yZXN1bHQpCisJCXsKKwkJCS8qIEFsbG9jYXRlIGFu ZCBpbml0aWFsaXplIHRoZSByZXN1bHQgdG8gaG9sZCBhIGNodW5rIG9mIHJv d3MgKi8KKwkJCXJlcyA9IFBRY29weVJlc3VsdChyZXMsCisJCQkJCQkJICAg UEdfQ09QWVJFU19BVFRSUyB8IFBHX0NPUFlSRVNfRVZFTlRTIHwKKwkJCQkJ CQkgICBQR19DT1BZUkVTX05PVElDRUhPT0tTKTsKKwkJCWlmICghcmVzKQor CQkJCXJldHVybiAwOworCQkJLyogQ2hhbmdlIHJlc3VsdCBzdGF0dXMgdG8g c3BlY2lhbCBjaHVuay1vZi1yb3dzIHZhbHVlICovCisJCQlyZXMtPnJlc3Vs dFN0YXR1cyA9IFBHUkVTX1RVUExFU19DSFVOSzsKKwkJCS8qIEtlZXAgdGhp cyByZXN1bHQgdG8gcmV1c2UgZm9yIHRoZSBuZXh0IHJvd3Mgb2YgdGhlIGNo dW5rICovCisJCQljb25uLT5jaHVua19yZXN1bHQgPSByZXM7CisJCX0KKwkJ ZWxzZQorCQkJcmVzID0gY29ubi0+Y2h1bmtfcmVzdWx0OwkvKiBVc2UgdGhl IGN1cnJlbnQgY2h1bmsgKi8KKwl9CiAKIAkvKgogCSAqIEJhc2ljYWxseSB3 ZSBqdXN0IGFsbG9jYXRlIHNwYWNlIGluIHRoZSBQR3Jlc3VsdCBmb3IgZWFj aCBmaWVsZCBhbmQKQEAgLTEyOTAsNiArMTMxNiwyMSBAQCBwcVJvd1Byb2Nl c3NvcihQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKiplcnJtc2dwKQogCQlj b25uLT5hc3luY1N0YXR1cyA9IFBHQVNZTkNfUkVBRFlfTU9SRTsKIAl9CiAK KwkvKgorCSAqIEluIGNodW5rZWQgbW9kZSwgaWYgdGhlIGNvdW50IGhhcyBy ZWFjaGVkIHRoZSByZXF1ZXN0ZWQgbGltaXQsIG1ha2UgdGhlCisJICogcm93 cyBvZiB0aGUgY3VycmVudCBjaHVuayBhdmFpbGFibGUgaW1tZWRpYXRlbHku CisJICovCisJZWxzZSBpZiAoY29ubi0+cm93c0NodW5rU2l6ZSA+IDAgJiYg cmVzLT5udHVwcyA+PSBjb25uLT5yb3dzQ2h1bmtTaXplKQorCXsKKwkJLyog U3Rhc2ggb2xkIHJlc3VsdCBmb3IgcmUtdXNlIGxhdGVyICovCisJCWNvbm4t Pm5leHRfcmVzdWx0ID0gY29ubi0+cmVzdWx0OworCQljb25uLT5yZXN1bHQg PSByZXM7CisJCS8qIERvIG5vdCByZXVzZSB0aGF0IGNodW5rIG9mIHJlc3Vs dHMgKi8KKwkJY29ubi0+Y2h1bmtfcmVzdWx0ID0gTlVMTDsKKwkJLyogQW5k IG1hcmsgdGhlIHJlc3VsdCByZWFkeSB0byByZXR1cm4gKi8KKwkJY29ubi0+ YXN5bmNTdGF0dXMgPSBQR0FTWU5DX1JFQURZX01PUkU7CisJfQorCiAJcmV0 dXJuIDE7CiAKIGZhaWw6CkBAIC0xNzQ1LDggKzE3ODYsOSBAQCBQUXNlbmRR dWVyeVN0YXJ0KFBHY29ubiAqY29ubiwgYm9vbCBuZXdRdWVyeSkKIAkJICov CiAJCXBxQ2xlYXJBc3luY1Jlc3VsdChjb25uKTsKIAotCQkvKiByZXNldCBz aW5nbGUtcm93IHByb2Nlc3NpbmcgbW9kZSAqLworCQkvKiByZXNldCByb3ct Ynktcm93IGFuZCBjaHVua2VkIHByb2Nlc3NpbmcgbW9kZXMgKi8KIAkJY29u bi0+c2luZ2xlUm93TW9kZSA9IGZhbHNlOworCQljb25uLT5yb3dzQ2h1bmtT aXplID0gMDsKIAl9CiAKIAkvKiByZWFkeSB0byBzZW5kIGNvbW1hbmQgbWVz c2FnZSAqLwpAQCAtMTkzMCwyNSArMTk3Miw1MSBAQCBzZW5kRmFpbGVkOgog ICovCiBpbnQKIFBRc2V0U2luZ2xlUm93TW9kZShQR2Nvbm4gKmNvbm4pCit7 CisJaWYgKGNhbkNoYW5nZVJvd01vZGUoY29ubikpCisJeworCQljb25uLT5z aW5nbGVSb3dNb2RlID0gdHJ1ZTsKKwkJcmV0dXJuIDE7CisJfQorCWVsc2UK KwkJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBTZWxlY3QgY2h1bmtlZCByZXN1 bHRzIHByb2Nlc3NpbmcgbW9kZQorICovCitpbnQKK1BRc2V0Q2h1bmtlZFJv d3NNb2RlKFBHY29ubiAqY29ubiwgaW50IGNodW5rU2l6ZSkKK3sKKwlpZiAo Y2h1bmtTaXplID49IDAgJiYgY2FuQ2hhbmdlUm93TW9kZShjb25uKSkKKwl7 CisJCWNvbm4tPnJvd3NDaHVua1NpemUgPSBjaHVua1NpemU7CisJCXJldHVy biAxOworCX0KKwllbHNlCisJCXJldHVybiAwOworfQorCitzdGF0aWMKK2Jv b2wKK2NhbkNoYW5nZVJvd01vZGUoUEdjb25uICpjb25uKQogewogCS8qCi0J ICogT25seSBhbGxvdyBzZXR0aW5nIHRoZSBmbGFnIHdoZW4gd2UgaGF2ZSBs YXVuY2hlZCBhIHF1ZXJ5IGFuZCBub3QgeWV0Ci0JICogcmVjZWl2ZWQgYW55 IHJlc3VsdHMuCisJICogT25seSBhbGxvdyBzZXR0aW5nIHRoZSByb3ctYnkt cm93IG9yIGJ5LWNodW5rcyBtb2RlcyB3aGVuIHdlIGhhdmUKKwkgKiBsYXVu Y2hlZCBhIHF1ZXJ5IGFuZCBub3QgeWV0IHJlY2VpdmVkIGFueSByZXN1bHRz LgogCSAqLwogCWlmICghY29ubikKLQkJcmV0dXJuIDA7CisJCXJldHVybiBm YWxzZTsKIAlpZiAoY29ubi0+YXN5bmNTdGF0dXMgIT0gUEdBU1lOQ19CVVNZ KQotCQlyZXR1cm4gMDsKKwkJcmV0dXJuIGZhbHNlOwogCWlmICghY29ubi0+ Y21kX3F1ZXVlX2hlYWQgfHwKIAkJKGNvbm4tPmNtZF9xdWV1ZV9oZWFkLT5x dWVyeWNsYXNzICE9IFBHUVVFUllfU0lNUExFICYmCiAJCSBjb25uLT5jbWRf cXVldWVfaGVhZC0+cXVlcnljbGFzcyAhPSBQR1FVRVJZX0VYVEVOREVEKSkK LQkJcmV0dXJuIDA7CisJCXJldHVybiBmYWxzZTsKIAlpZiAocGdIYXZlUGVu ZGluZ1Jlc3VsdChjb25uKSkKLQkJcmV0dXJuIDA7CisJCXJldHVybiBmYWxz ZTsKIAotCS8qIE9LLCBzZXQgZmxhZyAqLwotCWNvbm4tPnNpbmdsZVJvd01v ZGUgPSB0cnVlOwotCXJldHVybiAxOworCXJldHVybiB0cnVlOwogfQogCiAv KgpAQCAtMjExNSw2ICsyMTgzLDE2IEBAIFBRZ2V0UmVzdWx0KFBHY29ubiAq Y29ubikKIAkJCWJyZWFrOwogCiAJCWNhc2UgUEdBU1lOQ19SRUFEWToKKwkJ CS8qCisJCQkgKiBJZiB0aGVyZSBpcyBhIHBlbmRpbmcgY2h1bmsgb2YgcmVz dWx0cywgcmV0dXJuIGl0CisJCQkgKi8KKwkJCWlmIChjb25uLT5jaHVua19y ZXN1bHQgIT0gTlVMTCkKKwkJCXsKKwkJCQlyZXMgPSBjb25uLT5jaHVua19y ZXN1bHQ7CisJCQkJY29ubi0+Y2h1bmtfcmVzdWx0ID0gTlVMTDsKKwkJCQli cmVhazsKKwkJCX0KKwogCQkJcmVzID0gcHFQcmVwYXJlQXN5bmNSZXN1bHQo Y29ubik7CiAKIAkJCS8qIEFkdmFuY2UgdGhlIHF1ZXVlIGFzIGFwcHJvcHJp YXRlICovCkBAIC0zMTczLDEwICszMjUxLDExIEBAIHBxUGlwZWxpbmVQcm9j ZXNzUXVldWUoUEdjb25uICpjb25uKQogCX0KIAogCS8qCi0JICogUmVzZXQg c2luZ2xlLXJvdyBwcm9jZXNzaW5nIG1vZGUuICAoQ2xpZW50IGhhcyB0byBz ZXQgaXQgdXAgZm9yIGVhY2gKKwkgKiBSZXNldCB0byBmdWxsIHJlc3VsdCBz ZXRzIG1vZGUuIChDbGllbnQgaGFzIHRvIHNldCBpdCB1cCBmb3IgZWFjaAog CSAqIHF1ZXJ5LCBpZiBkZXNpcmVkLikKIAkgKi8KIAljb25uLT5zaW5nbGVS b3dNb2RlID0gZmFsc2U7CisJY29ubi0+cm93c0NodW5rU2l6ZSA9IDA7CiAK IAkvKgogCSAqIElmIHRoZXJlIGFyZSBubyBmdXJ0aGVyIGNvbW1hbmRzIHRv IHByb2Nlc3MgaW4gdGhlIHF1ZXVlLCBnZXQgdXMgaW4KZGlmZiAtLWdpdCBh L3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWZlLmggYi9zcmMvaW50ZXJm YWNlcy9saWJwcS9saWJwcS1mZS5oCmluZGV4IDA5YjQ4NWJkMmIuLjBjZWE0 ZjZiNWIgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBx LWZlLmgKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtZmUuaApA QCAtMTEyLDggKzExMiw5IEBAIHR5cGVkZWYgZW51bQogCVBHUkVTX0NPUFlf Qk9USCwJCQkvKiBDb3B5IEluL091dCBkYXRhIHRyYW5zZmVyIGluIHByb2dy ZXNzICovCiAJUEdSRVNfU0lOR0xFX1RVUExFLAkJCS8qIHNpbmdsZSB0dXBs ZSBmcm9tIGxhcmdlciByZXN1bHRzZXQgKi8KIAlQR1JFU19QSVBFTElORV9T WU5DLAkJLyogcGlwZWxpbmUgc3luY2hyb25pemF0aW9uIHBvaW50ICovCi0J UEdSRVNfUElQRUxJTkVfQUJPUlRFRAkJLyogQ29tbWFuZCBkaWRuJ3QgcnVu IGJlY2F1c2Ugb2YgYW4gYWJvcnQKKwlQR1JFU19QSVBFTElORV9BQk9SVEVE LAkJLyogQ29tbWFuZCBkaWRuJ3QgcnVuIGJlY2F1c2Ugb2YgYW4gYWJvcnQK IAkJCQkJCQkJICogZWFybGllciBpbiBhIHBpcGVsaW5lICovCisJUEdSRVNf VFVQTEVTX0NIVU5LCQkJLyogc2V0IG9mIHR1cGxlcyBmcm9tIGxhcmdlciBy ZXN1bHRzZXQgKi8KIH0gRXhlY1N0YXR1c1R5cGU7CiAKIHR5cGVkZWYgZW51 bQpAQCAtNDg5LDYgKzQ5MCw3IEBAIGV4dGVybiBpbnQJUFFzZW5kUXVlcnlQ cmVwYXJlZChQR2Nvbm4gKmNvbm4sCiAJCQkJCQkJCWNvbnN0IGludCAqcGFy YW1Gb3JtYXRzLAogCQkJCQkJCQlpbnQgcmVzdWx0Rm9ybWF0KTsKIGV4dGVy biBpbnQJUFFzZXRTaW5nbGVSb3dNb2RlKFBHY29ubiAqY29ubik7CitleHRl cm4gaW50CVBRc2V0Q2h1bmtlZFJvd3NNb2RlKFBHY29ubiAqY29ubiwgaW50 IGNodW5rU2l6ZSk7CiBleHRlcm4gUEdyZXN1bHQgKlBRZ2V0UmVzdWx0KFBH Y29ubiAqY29ubik7CiAKIC8qIFJvdXRpbmVzIGZvciBtYW5hZ2luZyBhbiBh c3luY2hyb25vdXMgcXVlcnkgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZh Y2VzL2xpYnBxL2xpYnBxLWludC5oIGIvc3JjL2ludGVyZmFjZXMvbGlicHEv bGlicHEtaW50LmgKaW5kZXggOWMwNWYxMWE2ZS4uMjNjN2EzOTlhYiAxMDA2 NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmgKKysr IGIvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmgKQEAgLTQzNSw2 ICs0MzUsOCBAQCBzdHJ1Y3QgcGdfY29ubgogCQkJCQkJCQkgKiBzZW5kaW5n IHNlbWFudGljcyAqLwogCVBHcGlwZWxpbmVTdGF0dXMgcGlwZWxpbmVTdGF0 dXM7CS8qIHN0YXR1cyBvZiBwaXBlbGluZSBtb2RlICovCiAJYm9vbAkJc2lu Z2xlUm93TW9kZTsJLyogcmV0dXJuIGN1cnJlbnQgcXVlcnkgcmVzdWx0IHJv dy1ieS1yb3c/ICovCisJaW50CQkJcm93c0NodW5rU2l6ZTsJLyogbm9uLXpl cm8gdG8gcmV0dXJuIHF1ZXJ5IHJlc3VsdHMgYnkgY2h1bmtzCisJCQkJCQkJ CSAqIG5vdCBleGNlZWRpbmcgdGhhdCBudW1iZXIgb2Ygcm93cyAqLwogCWNo YXIJCWNvcHlfaXNfYmluYXJ5OyAvKiAxID0gY29weSBiaW5hcnksIDAgPSBj b3B5IHRleHQgKi8KIAlpbnQJCQljb3B5X2FscmVhZHlfZG9uZTsJLyogIyBi eXRlcyBhbHJlYWR5IHJldHVybmVkIGluIENPUFkgT1VUICovCiAJUEdub3Rp ZnkgICAqbm90aWZ5SGVhZDsJCS8qIG9sZGVzdCB1bnJlcG9ydGVkIE5vdGlm eSBtc2cgKi8KQEAgLTU0MCw3ICs1NDIsMTAgQEAgc3RydWN0IHBnX2Nvbm4K IAkgKi8KIAlQR3Jlc3VsdCAgICpyZXN1bHQ7CQkJLyogcmVzdWx0IGJlaW5n IGNvbnN0cnVjdGVkICovCiAJYm9vbAkJZXJyb3JfcmVzdWx0OwkvKiBkbyB3 ZSBuZWVkIHRvIG1ha2UgYW4gRVJST1IgcmVzdWx0PyAqLwotCVBHcmVzdWx0 ICAgKm5leHRfcmVzdWx0OwkvKiBuZXh0IHJlc3VsdCAodXNlZCBpbiBzaW5n bGUtcm93IG1vZGUpICovCisJUEdyZXN1bHQgICAqbmV4dF9yZXN1bHQ7CS8q IG5leHQgcmVzdWx0ICh1c2VkIGluIHNpbmdsZS1yb3cgYW5kCisJCQkJCQkJ CSAqIGJ5LWNodW5rcyBtb2RlcykgKi8KKwlQR3Jlc3VsdCAgICpjaHVua19y ZXN1bHQ7CS8qIGN1cnJlbnQgY2h1bmsgb2YgcmVzdWx0cyAobGltaXRlZCB0 bworCQkJCQkJCQkgKiByb3dzQ2h1bmtTaXplKSAqLwogCiAJLyogQXNzb3J0 ZWQgc3RhdGUgZm9yIFNBU0wsIFNTTCwgR1NTLCBldGMgKi8KIAljb25zdCBw Z19mZV9zYXNsX21lY2ggKnNhc2w7Ci0tIAoyLjM0LjEKCg== ------------=_1711993964-47309-0 Content-Type: text-x-patch; name="v7-0002-Reimplement-FETCH_COUNT-with-the-chunked-mode-in-.patch" Content-Disposition: attachment; filename="v7-0002-Reimplement-FETCH_COUNT-with-the-chunked-mode-in-.patch" Content-Transfer-Encoding: base64 RnJvbSAzM2YwNDNhZWFmMzk2OWU2NmY2YzgwYWY2ZWY2ZWEyNzQ5OWI0NzQw IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/RGFu aWVsPTIwVj1DMz1BOXJpdD1DMz1BOT89IDxkYW5pZWxAbWFuaXRvdS1tYWls Lm9yZz4KRGF0ZTogTW9uLCAxIEFwciAyMDI0IDE5OjQ2OjQyICswMjAwClN1 YmplY3Q6IFtQQVRDSCB2NyAyLzJdIFJlaW1wbGVtZW50IEZFVENIX0NPVU5U IHdpdGggdGhlIGNodW5rZWQgbW9kZSBpbgogbGlicHEuCgpDdXJzb3JzIHdl cmUgdXNlZCBvbmx5IHdoZW4gdGhlIGNvbW1hbmQgc3RhcnRzIHdpdGggdGhl IGtleXdvcmQgIlNFTEVDVCIsCmV4Y2x1ZGluZyBxdWVyaWVzIHRoYXQgc3Rh cnQgd2l0aCAiV0lUSCIgb3IgIlVQREFURSIgb3IgIklOU0VSVCIgdGhhdApt YXkgYWxzbyByZXR1cm4gbGFyZ2UgcmVzdWx0IHNldHMuCi0tLQogc3JjL2Jp bi9wc3FsL2NvbW1vbi5jICAgICAgICAgICAgICB8IDUzOCArKysrKysrKysr LS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjL2Jpbi9wc3FsL3QvMDAxX2Jhc2lj LnBsICAgICAgICB8ICAgNiArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9wc3FsLm91dCB8ICAgOSArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHNx bC5zcWwgICAgICB8ICAgNCArLQogNCBmaWxlcyBjaGFuZ2VkLCAxODkgaW5z ZXJ0aW9ucygrKSwgMzY4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcHNxbC9jb21tb24uYyBiL3NyYy9iaW4vcHNxbC9jb21tb24uYwpp bmRleCAyODMwYmRlNDk1Li4yMTEyZTFhNDIzIDEwMDY0NAotLS0gYS9zcmMv YmluL3BzcWwvY29tbW9uLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2NvbW1vbi5j CkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAic2V0dGluZ3MuaCIKIAog c3RhdGljIGJvb2wgRGVzY3JpYmVRdWVyeShjb25zdCBjaGFyICpxdWVyeSwg ZG91YmxlICplbGFwc2VkX21zZWMpOwotc3RhdGljIGJvb2wgRXhlY1F1ZXJ5 VXNpbmdDdXJzb3IoY29uc3QgY2hhciAqcXVlcnksIGRvdWJsZSAqZWxhcHNl ZF9tc2VjKTsKIHN0YXRpYyBpbnQJRXhlY1F1ZXJ5QW5kUHJvY2Vzc1Jlc3Vs dHMoY29uc3QgY2hhciAqcXVlcnksCiAJCQkJCQkJCQkgICBkb3VibGUgKmVs YXBzZWRfbXNlYywKIAkJCQkJCQkJCSAgIGJvb2wgKnN2cHRfZ29uZV9wLApA QCAtNDAsOCArMzksNiBAQCBzdGF0aWMgaW50CUV4ZWNRdWVyeUFuZFByb2Nl c3NSZXN1bHRzKGNvbnN0IGNoYXIgKnF1ZXJ5LAogCQkJCQkJCQkJICAgY29u c3QgcHJpbnRRdWVyeU9wdCAqb3B0LAogCQkJCQkJCQkJICAgRklMRSAqcHJp bnRRdWVyeUZvdXQpOwogc3RhdGljIGJvb2wgY29tbWFuZF9ub19iZWdpbihj b25zdCBjaGFyICpxdWVyeSk7Ci1zdGF0aWMgYm9vbCBpc19zZWxlY3RfY29t bWFuZChjb25zdCBjaGFyICpxdWVyeSk7Ci0KIAogLyoKICAqIG9wZW5RdWVy eU91dHB1dEZpbGUgLS0tIGF0dGVtcHQgdG8gb3BlbiBhIHF1ZXJ5IG91dHB1 dCBmaWxlCkBAIC0zNzMsNiArMzcwLDcgQEAgQWNjZXB0UmVzdWx0KGNvbnN0 IFBHcmVzdWx0ICpyZXN1bHQsIGJvb2wgc2hvd19lcnJvcikKIAkJewogCQkJ Y2FzZSBQR1JFU19DT01NQU5EX09LOgogCQkJY2FzZSBQR1JFU19UVVBMRVNf T0s6CisJCQljYXNlIFBHUkVTX1RVUExFU19DSFVOSzoKIAkJCWNhc2UgUEdS RVNfRU1QVFlfUVVFUlk6CiAJCQljYXNlIFBHUkVTX0NPUFlfSU46CiAJCQlj YXNlIFBHUkVTX0NPUFlfT1VUOgpAQCAtMTEzNSwxNiArMTEzMywxMCBAQCBT ZW5kUXVlcnkoY29uc3QgY2hhciAqcXVlcnkpCiAJCS8qIERlc2NyaWJlIHF1 ZXJ5J3MgcmVzdWx0IGNvbHVtbnMsIHdpdGhvdXQgZXhlY3V0aW5nIGl0ICov CiAJCU9LID0gRGVzY3JpYmVRdWVyeShxdWVyeSwgJmVsYXBzZWRfbXNlYyk7 CiAJfQotCWVsc2UgaWYgKHBzZXQuZmV0Y2hfY291bnQgPD0gMCB8fCBwc2V0 LmdleGVjX2ZsYWcgfHwKLQkJCSBwc2V0LmNyb3NzdGFiX2ZsYWcgfHwgIWlz X3NlbGVjdF9jb21tYW5kKHF1ZXJ5KSkKLQl7Ci0JCS8qIERlZmF1bHQgZmV0 Y2gtaXQtYWxsLWFuZC1wcmludCBtb2RlICovCi0JCU9LID0gKEV4ZWNRdWVy eUFuZFByb2Nlc3NSZXN1bHRzKHF1ZXJ5LCAmZWxhcHNlZF9tc2VjLCAmc3Zw dF9nb25lLCBmYWxzZSwgMCwgTlVMTCwgTlVMTCkgPiAwKTsKLQl9CiAJZWxz ZQogCXsKLQkJLyogRmV0Y2gtaW4tc2VnbWVudHMgbW9kZSAqLwotCQlPSyA9 IEV4ZWNRdWVyeVVzaW5nQ3Vyc29yKHF1ZXJ5LCAmZWxhcHNlZF9tc2VjKTsK KwkJLyogRGVmYXVsdCBmZXRjaC1hbmQtcHJpbnQgbW9kZSAqLworCQlPSyA9 IChFeGVjUXVlcnlBbmRQcm9jZXNzUmVzdWx0cyhxdWVyeSwgJmVsYXBzZWRf bXNlYywgJnN2cHRfZ29uZSwgZmFsc2UsIDAsIE5VTEwsIE5VTEwpID4gMCk7 CiAJfQogCiAJaWYgKCFPSyAmJiBwc2V0LmVjaG8gPT0gUFNRTF9FQ0hPX0VS Uk9SUykKQEAgLTEzOTYsNiArMTM4OCw0NyBAQCBEZXNjcmliZVF1ZXJ5KGNv bnN0IGNoYXIgKnF1ZXJ5LCBkb3VibGUgKmVsYXBzZWRfbXNlYykKIAlyZXR1 cm4gT0s7CiB9CiAKKy8qCisgKiBDaGVjayBpZiBhbiBvdXRwdXQgc3RyZWFt IGZvciBcZyBuZWVkcyB0byBiZSBvcGVuZWQsIGFuZCBpZgorICogeWVzLCBv cGVuIGl0LgorICogUmV0dXJuIGZhbHNlIGlmIGFuIGVycm9yIG9jY3VycmVk LCB0cnVlIG90aGVyd2lzZS4KKyAqLworc3RhdGljIGJvb2wKK1NldHVwR091 dHB1dChQR3Jlc3VsdCAqcmVzdWx0LCBGSUxFICoqZ2ZpbGVfZm91dCwgYm9v bCAqaXNfcGlwZSkKK3sKKwlFeGVjU3RhdHVzVHlwZSBzdGF0dXMgPSBQUXJl c3VsdFN0YXR1cyhyZXN1bHQpOworCWlmIChwc2V0LmdmbmFtZSAhPSBOVUxM ICYmCQkJLyogdGhlcmUgaXMgYSBcZyBmaWxlIG9yIHByb2dyYW0gKi8KKwkJ KmdmaWxlX2ZvdXQgPT0gTlVMTCAmJiAgICAgICAgICAgLyogYW5kIGl0J3Mg bm90IGFscmVhZHkgb3BlbmVkICovCisJCShzdGF0dXMgPT0gUEdSRVNfVFVQ TEVTX09LIHx8CisJCSBzdGF0dXMgPT0gUEdSRVNfVFVQTEVTX0NIVU5LIHx8 CisJCSBzdGF0dXMgPT0gUEdSRVNfQ09QWV9PVVQpKQorCXsKKwkJaWYgKG9w ZW5RdWVyeU91dHB1dEZpbGUocHNldC5nZm5hbWUsIGdmaWxlX2ZvdXQsIGlz X3BpcGUpKQorCQl7CisJCQlpZiAoaXNfcGlwZSkKKwkJCQlkaXNhYmxlX3Np Z3BpcGVfdHJhcCgpOworCQl9CisJCWVsc2UKKwkJCXJldHVybiBmYWxzZTsK Kwl9CisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyB2b2lkCitDbG9zZUdP dXRwdXQoRklMRSAqZ2ZpbGVfZm91dCwgYm9vbCBpc19waXBlKQoreworCS8q IGNsb3NlIFxnIGZpbGUgaWYgd2Ugb3BlbmVkIGl0ICovCisJaWYgKGdmaWxl X2ZvdXQpCisJeworCQlpZiAoaXNfcGlwZSkKKwkJeworCQkJU2V0U2hlbGxS ZXN1bHRWYXJpYWJsZXMocGNsb3NlKGdmaWxlX2ZvdXQpKTsKKwkJCXJlc3Rv cmVfc2lncGlwZV90cmFwKCk7CisJCX0KKwkJZWxzZQorCQkJZmNsb3NlKGdm aWxlX2ZvdXQpOworCX0KK30KIAogLyoKICAqIEV4ZWNRdWVyeUFuZFByb2Nl c3NSZXN1bHRzOiB1dGlsaXR5IGZ1bmN0aW9uIGZvciB1c2UgYnkgU2VuZFF1 ZXJ5KCkKQEAgLTE0MjksOSArMTQ2MiwxNCBAQCBFeGVjUXVlcnlBbmRQcm9j ZXNzUmVzdWx0cyhjb25zdCBjaGFyICpxdWVyeSwKIAlpbnN0cl90aW1lCWJl Zm9yZSwKIAkJCQlhZnRlcjsKIAlQR3Jlc3VsdCAgICpyZXN1bHQ7CisKIAlG SUxFCSAgICpnZmlsZV9mb3V0ID0gTlVMTDsKIAlib29sCQlnZmlsZV9pc19w aXBlID0gZmFsc2U7CiAKKwlpbnQ2NAkJdG90YWxfdHVwbGVzID0gMDsKKwlp bnQJCQlmbHVzaF9lcnJvciA9IDA7CisJYm9vbAkJaXNfcGFnZXIgPSBmYWxz ZTsKKwogCWlmICh0aW1pbmcpCiAJCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQo YmVmb3JlKTsKIAllbHNlCkBAIC0xNDU0LDYgKzE0OTIsMjMgQEAgRXhlY1F1 ZXJ5QW5kUHJvY2Vzc1Jlc3VsdHMoY29uc3QgY2hhciAqcXVlcnksCiAJCXJl dHVybiAtMTsKIAl9CiAKKwkvKgorCSAqIEZldGNoIHRoZSByZXN1bHQgaW4g Y2h1bmtzIGlmIEZFVENIX0NPVU5UIGlzIHNldC4KKwkgKiBXZSBkb24ndCBl bmFibGUgY2h1bmtpbmcgaWYgU0hPV19BTExfUkVTVUxUUyBpcyBmYWxzZSwg c2luY2UgdGhhdAorCSAqIHJlcXVpcmVzIHVzIHRvIGFjY3VtdWxhdGUgYWxs IHJvd3MgYmVmb3JlIHdlIGNhbiB0ZWxsIHdoYXQgc2hvdWxkIGJlCisJICog ZGlzcGxheWVkLCB3aGljaCB3b3VsZCBjb3VudGVyIHRoZSBpZGVhIG9mIEZF VENIX0NPVU5ULgorCSAqIENodW5rIGZldGNoaW5nIGlzIGFsc28gZGlzYWJs ZWQgaWYgXGdzZXQsIFxjcm9zc3RhYiwgXGdleGVjIGFuZCBcd2F0Y2gKKwkg KiBhcmUgdXNlZC4KKwkgKi8KKwlpZiAocHNldC5mZXRjaF9jb3VudCA+IDAg JiYgIXBzZXQuY3Jvc3N0YWJfZmxhZyAmJiAhcHNldC5nZXhlY19mbGFnICYm ICFpc193YXRjaAorCQkmJiAhcHNldC5nc2V0X3ByZWZpeCAmJiBwc2V0LnNo b3dfYWxsX3Jlc3VsdHMpCisJeworCQlpZiAoIVBRc2V0Q2h1bmtlZFJvd3NN b2RlKHBzZXQuZGIsIHBzZXQuZmV0Y2hfY291bnQpKQorCQl7CisJCQlwZ19s b2dfd2FybmluZygiZmV0Y2hpbmcgcmVzdWx0cyBpbiBjaHVua3MgbW9kZSBp cyB1bmF2YWlsYWJsZSIpOworCQl9CisJfQorCiAJLyoKIAkgKiBJZiBTSUdJ TlQgaXMgc2VudCB3aGlsZSB0aGUgcXVlcnkgaXMgcHJvY2Vzc2luZywgdGhl IGludGVycnVwdCB3aWxsIGJlCiAJICogY29uc3VtZWQuICBUaGUgdXNlcidz IGludGVudGlvbiwgdGhvdWdoLCBpcyB0byBjYW5jZWwgdGhlIGVudGlyZSB3 YXRjaApAQCAtMTQ3Nyw2ICsxNTMyLDggQEAgRXhlY1F1ZXJ5QW5kUHJvY2Vz c1Jlc3VsdHMoY29uc3QgY2hhciAqcXVlcnksCiAJCUV4ZWNTdGF0dXNUeXBl IHJlc3VsdF9zdGF0dXM7CiAJCVBHcmVzdWx0ICAgKm5leHRfcmVzdWx0Owog CQlib29sCQlsYXN0OworCQkvKiB3aGV0aGVyIHRoZSBvdXRwdXQgc3RhcnRz IGJlZm9yZSByZXN1bHRzIGFyZSBmdWxseSBmZXRjaGVkICovCisJCWJvb2wJ CXBhcnRpYWxfZGlzcGxheSA9IGZhbHNlOwogCiAJCWlmICghQWNjZXB0UmVz dWx0KHJlc3VsdCwgZmFsc2UpKQogCQl7CkBAIC0xNTcyLDIwICsxNjI5LDkg QEAgRXhlY1F1ZXJ5QW5kUHJvY2Vzc1Jlc3VsdHMoY29uc3QgY2hhciAqcXVl cnksCiAJCQkJfQogCQkJCWVsc2UgaWYgKHBzZXQuZ2ZuYW1lKQogCQkJCXsK LQkJCQkJLyogc2VuZCB0byBcZyBmaWxlLCB3aGljaCB3ZSBtYXkgaGF2ZSBv cGVuZWQgYWxyZWFkeSAqLwotCQkJCQlpZiAoZ2ZpbGVfZm91dCA9PSBOVUxM KQotCQkJCQl7Ci0JCQkJCQlpZiAob3BlblF1ZXJ5T3V0cHV0RmlsZShwc2V0 LmdmbmFtZSwKLQkJCQkJCQkJCQkJCSZnZmlsZV9mb3V0LCAmZ2ZpbGVfaXNf cGlwZSkpCi0JCQkJCQl7Ci0JCQkJCQkJaWYgKGdmaWxlX2lzX3BpcGUpCi0J CQkJCQkJCWRpc2FibGVfc2lncGlwZV90cmFwKCk7Ci0JCQkJCQkJY29weV9z dHJlYW0gPSBnZmlsZV9mb3V0OwotCQkJCQkJfQotCQkJCQkJZWxzZQotCQkJ CQkJCXN1Y2Nlc3MgPSBmYWxzZTsKLQkJCQkJfQotCQkJCQllbHNlCisJCQkJ CS8qIENPUFkgZm9sbG93ZWQgYnkgXGcgZmlsZW5hbWUgb3IgXGcgfHByb2dy YW0gKi8KKwkJCQkJc3VjY2VzcyA9IFNldHVwR091dHB1dChyZXN1bHQsICZn ZmlsZV9mb3V0LCAmZ2ZpbGVfaXNfcGlwZSk7CisJCQkJCWlmIChzdWNjZXNz KQogCQkJCQkJY29weV9zdHJlYW0gPSBnZmlsZV9mb3V0OwogCQkJCX0KIAkJ CQllbHNlCkBAIC0xNjAzLDYgKzE2NDksOTAgQEAgRXhlY1F1ZXJ5QW5kUHJv Y2Vzc1Jlc3VsdHMoY29uc3QgY2hhciAqcXVlcnksCiAJCQlzdWNjZXNzICY9 IEhhbmRsZUNvcHlSZXN1bHQoJnJlc3VsdCwgY29weV9zdHJlYW0pOwogCQl9 CiAKKwkJaWYgKHJlc3VsdF9zdGF0dXMgPT0gUEdSRVNfVFVQTEVTX0NIVU5L KQorCQl7CisJCQlGSUxFCSAgICp0dXBsZXNfZm91dCA9IHByaW50UXVlcnlG b3V0ID8gcHJpbnRRdWVyeUZvdXQgOiBzdGRvdXQ7CisJCQlwcmludFF1ZXJ5 T3B0IG15X3BvcHQgPSBwc2V0LnBvcHQ7CisKKwkJCXRvdGFsX3R1cGxlcyA9 IDA7CisJCQlwYXJ0aWFsX2Rpc3BsYXkgPSB0cnVlOworCisJCQlzdWNjZXNz ID0gU2V0dXBHT3V0cHV0KHJlc3VsdCwgJmdmaWxlX2ZvdXQsICZnZmlsZV9p c19waXBlKTsKKwkJCWlmIChnZmlsZV9mb3V0KQorCQkJCXR1cGxlc19mb3V0 ID0gZ2ZpbGVfZm91dDsKKworCQkJLyogaW5pdGlhbGl6ZSBwcmludCBvcHRp b25zIGZvciBwYXJ0aWFsIHRhYmxlIG91dHB1dCAqLworCQkJbXlfcG9wdC50 b3B0LnN0YXJ0X3RhYmxlID0gdHJ1ZTsKKwkJCW15X3BvcHQudG9wdC5zdG9w X3RhYmxlID0gZmFsc2U7CisJCQlteV9wb3B0LnRvcHQucHJpb3JfcmVjb3Jk cyA9IDA7CisKKwkJCXdoaWxlIChzdWNjZXNzKQorCQkJeworCQkJCS8qIHBh Z2VyOiBvcGVuIGF0IG1vc3Qgb25jZSBwZXIgcmVzdWx0c2V0ICovCisJCQkJ aWYgKHR1cGxlc19mb3V0ID09IHN0ZG91dCAmJiAhaXNfcGFnZXIpCisJCQkJ eworCQkJCQl0dXBsZXNfZm91dCA9IFBhZ2VPdXRwdXQoSU5UX01BWCwgJiht eV9wb3B0LnRvcHQpKTsKKwkJCQkJaXNfcGFnZXIgPSB0cnVlOworCQkJCX0K KwkJCQkvKiBkaXNwbGF5IHRoZSBjdXJyZW50IGNodW5rIG9mIHJlc3VsdHMg dW5sZXNzIHRoZSBvdXRwdXQgc3RyZWFtIGlzIG5vdCB3b3JraW5nICovCisJ CQkJaWYgKCFmbHVzaF9lcnJvcikKKwkJCQl7CisJCQkJCXByaW50UXVlcnko cmVzdWx0LCAmbXlfcG9wdCwgdHVwbGVzX2ZvdXQsIGlzX3BhZ2VyLCBwc2V0 LmxvZ2ZpbGUpOworCQkJCQlmbHVzaF9lcnJvciA9IGZmbHVzaCh0dXBsZXNf Zm91dCk7CisJCQkJfQorCisJCQkJLyogYWZ0ZXIgdGhlIGZpcnN0IHJlc3Vs dCBzZXQsIGRpc2FsbG93IGhlYWRlciBkZWNvcmF0aW9uICovCisJCQkJbXlf cG9wdC50b3B0LnN0YXJ0X3RhYmxlID0gZmFsc2U7CisJCQkJbXlfcG9wdC50 b3B0LnByaW9yX3JlY29yZHMgKz0gUFFudHVwbGVzKHJlc3VsdCk7CisJCQkJ dG90YWxfdHVwbGVzICs9IFBRbnR1cGxlcyhyZXN1bHQpOworCisJCQkJQ2xl YXJPclNhdmVSZXN1bHQocmVzdWx0KTsKKworCQkJCXJlc3VsdCA9IFBRZ2V0 UmVzdWx0KHBzZXQuZGIpOworCQkJCWlmIChyZXN1bHQgPT0gTlVMTCkKKwkJ CQl7CisJCQkJCS8qCisJCQkJCSAqIEVycm9yLiBXZSBleHBlY3QgYSBQR1JF U19UVVBMRVNfT0sgcmVzdWx0IHdpdGgKKwkJCQkJICogemVybyB0dXBsZSBp biBpdCB0byBmaW5pc2ggdGhlIGZldGNoIHNlcXVlbmNlLgorCQkJCQkgKi8K KwkJCQkJc3VjY2VzcyA9IGZhbHNlOworCQkJCQlpZiAoaXNfcGFnZXIpCisJ CQkJCQlDbG9zZVBhZ2VyKHR1cGxlc19mb3V0KTsKKwkJCQkJYnJlYWs7CisJ CQkJfQorCQkJCWVsc2UgaWYgKFBRcmVzdWx0U3RhdHVzKHJlc3VsdCkgPT0g UEdSRVNfVFVQTEVTX09LKQorCQkJCXsKKwkJCQkJLyoKKwkJCQkJICogVGhl IGxhc3Qgcm93IGhhcyBiZWVuIHJlYWQuIERpc3BsYXkgdGhlIGZvb3Rlci4K KwkJCQkJICovCisJCQkJCW15X3BvcHQudG9wdC5zdG9wX3RhYmxlID0gdHJ1 ZTsKKwkJCQkJcHJpbnRRdWVyeShyZXN1bHQsICZteV9wb3B0LCB0dXBsZXNf Zm91dCwgaXNfcGFnZXIsIHBzZXQubG9nZmlsZSk7CisJCQkJCXRvdGFsX3R1 cGxlcyArPSBQUW50dXBsZXMocmVzdWx0KTsKKworCQkJCQlpZiAoaXNfcGFn ZXIpCisJCQkJCQlDbG9zZVBhZ2VyKHR1cGxlc19mb3V0KTsKKwkJCQkJQ2xl YXJPclNhdmVSZXN1bHQocmVzdWx0KTsKKwkJCQkJcmVzdWx0ID0gTlVMTDsK KwkJCQkJYnJlYWs7CisJCQkJfQorCQkJCWVsc2UgaWYgKFBRcmVzdWx0U3Rh dHVzKHJlc3VsdCkgIT0gUEdSRVNfVFVQTEVTX0NIVU5LKQorCQkJCXsKKwkJ CQkJLyoKKwkJCQkJICogRXJyb3IuIFdlIGV4cGVjdCBlaXRoZXIgUEdSRVNf VFVQTEVTX0NIVU5LIG9yCisJCQkJCSAqIFBHUkVTX1RVUExFU19PSy4KKwkJ CQkJICovCisJCQkJCWlmIChpc19wYWdlcikKKwkJCQkJCUNsb3NlUGFnZXIo dHVwbGVzX2ZvdXQpOworCQkJCQlzdWNjZXNzID0gZmFsc2U7CisJCQkJCUFj Y2VwdFJlc3VsdChyZXN1bHQsIHRydWUpOyAvKiBkaXNwbGF5IGVycm9yIHdo ZW5ldmVyIGFwcHJvcHJpYXRlICovCisJCQkJCVNldFJlc3VsdFZhcmlhYmxl cyhyZXN1bHQsIHN1Y2Nlc3MpOworCQkJCQlicmVhazsKKwkJCQl9CisJCQl9 CisJCX0KKwkJZWxzZQorCQkJcGFydGlhbF9kaXNwbGF5ID0gZmFsc2U7CisK IAkJLyoKIAkJICogQ2hlY2sgUFFnZXRSZXN1bHQoKSBhZ2Fpbi4gIEluIHRo ZSB0eXBpY2FsIGNhc2Ugb2YgYSBzaW5nbGUtY29tbWFuZAogCQkgKiBzdHJp bmcsIGl0IHdpbGwgcmV0dXJuIE5VTEwuICBPdGhlcndpc2UsIHdlJ2xsIGhh dmUgb3RoZXIgcmVzdWx0cwpAQCAtMTYzMSw3ICsxNzYxLDcgQEAgRXhlY1F1 ZXJ5QW5kUHJvY2Vzc1Jlc3VsdHMoY29uc3QgY2hhciAqcXVlcnksCiAJCX0K IAogCQkvKiB0aGlzIG1heSBvciBtYXkgbm90IHByaW50IHNvbWV0aGluZyBk ZXBlbmRpbmcgb24gc2V0dGluZ3MgKi8KLQkJaWYgKHJlc3VsdCAhPSBOVUxM KQorCQlpZiAocmVzdWx0ICE9IE5VTEwgJiYgIXBhcnRpYWxfZGlzcGxheSkK IAkJewogCQkJLyoKIAkJCSAqIElmIHJlc3VsdHMgbmVlZCB0byBiZSBwcmlu dGVkIGludG8gdGhlIGZpbGUgc3BlY2lmaWVkIGJ5IFxnLApAQCAtMTY0MCwz MiArMTc3MCwzMyBAQCBFeGVjUXVlcnlBbmRQcm9jZXNzUmVzdWx0cyhjb25z dCBjaGFyICpxdWVyeSwKIAkJCSAqIHR1cGxlIG91dHB1dCwgYnV0IGl0J3Mg c3RpbGwgdXNlZCBmb3Igc3RhdHVzIG91dHB1dC4KIAkJCSAqLwogCQkJRklM RQkgICAqdHVwbGVzX2ZvdXQgPSBwcmludFF1ZXJ5Rm91dDsKLQkJCWJvb2wJ CWRvX3ByaW50ID0gdHJ1ZTsKLQotCQkJaWYgKFBRcmVzdWx0U3RhdHVzKHJl c3VsdCkgPT0gUEdSRVNfVFVQTEVTX09LICYmCi0JCQkJcHNldC5nZm5hbWUp Ci0JCQl7Ci0JCQkJaWYgKGdmaWxlX2ZvdXQgPT0gTlVMTCkKLQkJCQl7Ci0J CQkJCWlmIChvcGVuUXVlcnlPdXRwdXRGaWxlKHBzZXQuZ2ZuYW1lLAotCQkJ CQkJCQkJCQkmZ2ZpbGVfZm91dCwgJmdmaWxlX2lzX3BpcGUpKQotCQkJCQl7 Ci0JCQkJCQlpZiAoZ2ZpbGVfaXNfcGlwZSkKLQkJCQkJCQlkaXNhYmxlX3Np Z3BpcGVfdHJhcCgpOwotCQkJCQl9Ci0JCQkJCWVsc2UKLQkJCQkJCXN1Y2Nl c3MgPSBkb19wcmludCA9IGZhbHNlOwotCQkJCX0KKwkJCXN1Y2Nlc3MgPSBT ZXR1cEdPdXRwdXQocmVzdWx0LCAmZ2ZpbGVfZm91dCwgJmdmaWxlX2lzX3Bp cGUpOworCQkJaWYgKGdmaWxlX2ZvdXQpCiAJCQkJdHVwbGVzX2ZvdXQgPSBn ZmlsZV9mb3V0OwotCQkJfQotCQkJaWYgKGRvX3ByaW50KQorCQkJaWYgKHN1 Y2Nlc3MpCiAJCQkJc3VjY2VzcyAmPSBQcmludFF1ZXJ5UmVzdWx0KHJlc3Vs dCwgbGFzdCwgb3B0LAogCQkJCQkJCQkJCQl0dXBsZXNfZm91dCwgcHJpbnRR dWVyeUZvdXQpOwogCQl9CiAKIAkJLyogc2V0IHZhcmlhYmxlcyBmcm9tIGxh c3QgcmVzdWx0ICovCiAJCWlmICghaXNfd2F0Y2ggJiYgbGFzdCkKLQkJCVNl dFJlc3VsdFZhcmlhYmxlcyhyZXN1bHQsIHN1Y2Nlc3MpOworCQl7CisJCQlp ZiAoIXBhcnRpYWxfZGlzcGxheSkKKwkJCQlTZXRSZXN1bHRWYXJpYWJsZXMo cmVzdWx0LCBzdWNjZXNzKTsKKwkJCWVsc2UgaWYgKHN1Y2Nlc3MpCisJCQl7 CisJCQkJLyoKKwkJCQkgKiBmYWtlIFNldFJlc3VsdFZhcmlhYmxlcygpLiBJ ZiBhbiBlcnJvciBvY2N1cnJlZCB3aGVuCisJCQkJICogcmV0cmlldmluZyBj aHVua3MsIHRoZXNlIHZhcmlhYmxlcyBoYXZlIGJlZW4gc2V0IGFscmVhZHku CisJCQkJICovCisJCQkJY2hhcgkJYnVmWzMyXTsKKworCQkJCVNldFZhcmlh YmxlKHBzZXQudmFycywgIkVSUk9SIiwgImZhbHNlIik7CisJCQkJU2V0VmFy aWFibGUocHNldC52YXJzLCAiU1FMU1RBVEUiLCAiMDAwMDAiKTsKKwkJCQlz bnByaW50ZihidWYsIHNpemVvZihidWYpLCBJTlQ2NF9GT1JNQVQsIHRvdGFs X3R1cGxlcyk7CisJCQkJU2V0VmFyaWFibGUocHNldC52YXJzLCAiUk9XX0NP VU5UIiwgYnVmKTsKKwkJCX0KKwkJfQogCiAJCUNsZWFyT3JTYXZlUmVzdWx0 KHJlc3VsdCk7CiAJCXJlc3VsdCA9IG5leHRfcmVzdWx0OwpAQCAtMTY3Nywx NyArMTgwOCw3IEBAIEV4ZWNRdWVyeUFuZFByb2Nlc3NSZXN1bHRzKGNvbnN0 IGNoYXIgKnF1ZXJ5LAogCQl9CiAJfQogCi0JLyogY2xvc2UgXGcgZmlsZSBp ZiB3ZSBvcGVuZWQgaXQgKi8KLQlpZiAoZ2ZpbGVfZm91dCkKLQl7Ci0JCWlm IChnZmlsZV9pc19waXBlKQotCQl7Ci0JCQlTZXRTaGVsbFJlc3VsdFZhcmlh YmxlcyhwY2xvc2UoZ2ZpbGVfZm91dCkpOwotCQkJcmVzdG9yZV9zaWdwaXBl X3RyYXAoKTsKLQkJfQotCQllbHNlCi0JCQlmY2xvc2UoZ2ZpbGVfZm91dCk7 Ci0JfQorCUNsb3NlR091dHB1dChnZmlsZV9mb3V0LCBnZmlsZV9pc19waXBl KTsKIAogCS8qIG1heSBuZWVkIHRoaXMgdG8gcmVjb3ZlciBmcm9tIGNvbm4g bG9zcyBkdXJpbmcgQ09QWSAqLwogCWlmICghQ2hlY2tDb25uZWN0aW9uKCkp CkBAIC0xNzAwLDI3NCArMTgyMSw2IEBAIEV4ZWNRdWVyeUFuZFByb2Nlc3NS ZXN1bHRzKGNvbnN0IGNoYXIgKnF1ZXJ5LAogfQogCiAKLS8qCi0gKiBFeGVj UXVlcnlVc2luZ0N1cnNvcjogcnVuIGEgU0VMRUNULWxpa2UgcXVlcnkgdXNp bmcgYSBjdXJzb3IKLSAqCi0gKiBUaGlzIGZlYXR1cmUgYWxsb3dzIHJlc3Vs dCBzZXRzIGxhcmdlciB0aGFuIFJBTSB0byBiZSBkZWFsdCB3aXRoLgotICoK LSAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcXVlcnkgZXhlY3V0ZWQgc3VjY2Vz c2Z1bGx5LCBmYWxzZSBvdGhlcndpc2UuCi0gKgotICogSWYgcHNldC50aW1p bmcgaXMgb24sIHRvdGFsIHF1ZXJ5IHRpbWUgKGV4Y2x1c2l2ZSBvZiByZXN1 bHQtcHJpbnRpbmcpIGlzCi0gKiBzdG9yZWQgaW50byAqZWxhcHNlZF9tc2Vj LgotICovCi1zdGF0aWMgYm9vbAotRXhlY1F1ZXJ5VXNpbmdDdXJzb3IoY29u c3QgY2hhciAqcXVlcnksIGRvdWJsZSAqZWxhcHNlZF9tc2VjKQotewotCWJv b2wJCU9LID0gdHJ1ZTsKLQlQR3Jlc3VsdCAgICpyZXN1bHQ7Ci0JUFFFeHBC dWZmZXJEYXRhIGJ1ZjsKLQlwcmludFF1ZXJ5T3B0IG15X3BvcHQgPSBwc2V0 LnBvcHQ7Ci0JYm9vbAkJdGltaW5nID0gcHNldC50aW1pbmc7Ci0JRklMRQkg ICAqZm91dDsKLQlib29sCQlpc19waXBlOwotCWJvb2wJCWlzX3BhZ2VyID0g ZmFsc2U7Ci0JYm9vbAkJc3RhcnRlZF90eG4gPSBmYWxzZTsKLQlpbnQ2NAkJ dG90YWxfdHVwbGVzID0gMDsKLQlpbnQJCQludHVwbGVzOwotCWludAkJCWZl dGNoX2NvdW50OwotCWNoYXIJCWZldGNoX2NtZFs2NF07Ci0JaW5zdHJfdGlt ZQliZWZvcmUsCi0JCQkJYWZ0ZXI7Ci0JaW50CQkJZmx1c2hfZXJyb3I7Ci0K LQkqZWxhcHNlZF9tc2VjID0gMDsKLQotCS8qIGluaXRpYWxpemUgcHJpbnQg b3B0aW9ucyBmb3IgcGFydGlhbCB0YWJsZSBvdXRwdXQgKi8KLQlteV9wb3B0 LnRvcHQuc3RhcnRfdGFibGUgPSB0cnVlOwotCW15X3BvcHQudG9wdC5zdG9w X3RhYmxlID0gZmFsc2U7Ci0JbXlfcG9wdC50b3B0LnByaW9yX3JlY29yZHMg PSAwOwotCi0JaWYgKHRpbWluZykKLQkJSU5TVFJfVElNRV9TRVRfQ1VSUkVO VChiZWZvcmUpOwotCWVsc2UKLQkJSU5TVFJfVElNRV9TRVRfWkVSTyhiZWZv cmUpOwotCi0JLyogaWYgd2UncmUgbm90IGluIGEgdHJhbnNhY3Rpb24sIHN0 YXJ0IG9uZSAqLwotCWlmIChQUXRyYW5zYWN0aW9uU3RhdHVzKHBzZXQuZGIp ID09IFBRVFJBTlNfSURMRSkKLQl7Ci0JCXJlc3VsdCA9IFBRZXhlYyhwc2V0 LmRiLCAiQkVHSU4iKTsKLQkJT0sgPSBBY2NlcHRSZXN1bHQocmVzdWx0LCB0 cnVlKSAmJgotCQkJKFBRcmVzdWx0U3RhdHVzKHJlc3VsdCkgPT0gUEdSRVNf Q09NTUFORF9PSyk7Ci0JCUNsZWFyT3JTYXZlUmVzdWx0KHJlc3VsdCk7Ci0J CWlmICghT0spCi0JCQlyZXR1cm4gZmFsc2U7Ci0JCXN0YXJ0ZWRfdHhuID0g dHJ1ZTsKLQl9Ci0KLQkvKiBTZW5kIERFQ0xBUkUgQ1VSU09SICovCi0JaW5p dFBRRXhwQnVmZmVyKCZidWYpOwotCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYs ICJERUNMQVJFIF9wc3FsX2N1cnNvciBOTyBTQ1JPTEwgQ1VSU09SIEZPUlxu JXMiLAotCQkJCQkgIHF1ZXJ5KTsKLQotCXJlc3VsdCA9IFBRZXhlYyhwc2V0 LmRiLCBidWYuZGF0YSk7Ci0JT0sgPSBBY2NlcHRSZXN1bHQocmVzdWx0LCB0 cnVlKSAmJgotCQkoUFFyZXN1bHRTdGF0dXMocmVzdWx0KSA9PSBQR1JFU19D T01NQU5EX09LKTsKLQlpZiAoIU9LKQotCQlTZXRSZXN1bHRWYXJpYWJsZXMo cmVzdWx0LCBPSyk7Ci0JQ2xlYXJPclNhdmVSZXN1bHQocmVzdWx0KTsKLQl0 ZXJtUFFFeHBCdWZmZXIoJmJ1Zik7Ci0JaWYgKCFPSykKLQkJZ290byBjbGVh bnVwOwotCi0JaWYgKHRpbWluZykKLQl7Ci0JCUlOU1RSX1RJTUVfU0VUX0NV UlJFTlQoYWZ0ZXIpOwotCQlJTlNUUl9USU1FX1NVQlRSQUNUKGFmdGVyLCBi ZWZvcmUpOwotCQkqZWxhcHNlZF9tc2VjICs9IElOU1RSX1RJTUVfR0VUX01J TExJU0VDKGFmdGVyKTsKLQl9Ci0KLQkvKgotCSAqIEluIFxnc2V0IG1vZGUs IHdlIGZvcmNlIHRoZSBmZXRjaCBjb3VudCB0byBiZSAyLCBzbyB0aGF0IHdl IHdpbGwgdGhyb3cKLQkgKiB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgaWYgdGhl IHF1ZXJ5IHJldHVybnMgbW9yZSB0aGFuIG9uZSByb3cuCi0JICovCi0JaWYg KHBzZXQuZ3NldF9wcmVmaXgpCi0JCWZldGNoX2NvdW50ID0gMjsKLQllbHNl Ci0JCWZldGNoX2NvdW50ID0gcHNldC5mZXRjaF9jb3VudDsKLQotCXNucHJp bnRmKGZldGNoX2NtZCwgc2l6ZW9mKGZldGNoX2NtZCksCi0JCQkgIkZFVENI IEZPUldBUkQgJWQgRlJPTSBfcHNxbF9jdXJzb3IiLAotCQkJIGZldGNoX2Nv dW50KTsKLQotCS8qIHByZXBhcmUgdG8gd3JpdGUgb3V0cHV0IHRvIFxnIGFy Z3VtZW50LCBpZiBhbnkgKi8KLQlpZiAocHNldC5nZm5hbWUpCi0JewotCQlp ZiAoIW9wZW5RdWVyeU91dHB1dEZpbGUocHNldC5nZm5hbWUsICZmb3V0LCAm aXNfcGlwZSkpCi0JCXsKLQkJCU9LID0gZmFsc2U7Ci0JCQlnb3RvIGNsZWFu dXA7Ci0JCX0KLQkJaWYgKGlzX3BpcGUpCi0JCQlkaXNhYmxlX3NpZ3BpcGVf dHJhcCgpOwotCX0KLQllbHNlCi0JewotCQlmb3V0ID0gcHNldC5xdWVyeUZv dXQ7Ci0JCWlzX3BpcGUgPSBmYWxzZTsJCS8qIGRvZXNuJ3QgbWF0dGVyICov Ci0JfQotCi0JLyogY2xlYXIgYW55IHByZS1leGlzdGluZyBlcnJvciBpbmRp Y2F0aW9uIG9uIHRoZSBvdXRwdXQgc3RyZWFtICovCi0JY2xlYXJlcnIoZm91 dCk7Ci0KLQlmb3IgKDs7KQotCXsKLQkJaWYgKHRpbWluZykKLQkJCUlOU1RS X1RJTUVfU0VUX0NVUlJFTlQoYmVmb3JlKTsKLQotCQkvKiBnZXQgZmV0Y2hf Y291bnQgdHVwbGVzIGF0IGEgdGltZSAqLwotCQlyZXN1bHQgPSBQUWV4ZWMo cHNldC5kYiwgZmV0Y2hfY21kKTsKLQotCQlpZiAodGltaW5nKQotCQl7Ci0J CQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGFmdGVyKTsKLQkJCUlOU1RSX1RJ TUVfU1VCVFJBQ1QoYWZ0ZXIsIGJlZm9yZSk7Ci0JCQkqZWxhcHNlZF9tc2Vj ICs9IElOU1RSX1RJTUVfR0VUX01JTExJU0VDKGFmdGVyKTsKLQkJfQotCi0J CWlmIChQUXJlc3VsdFN0YXR1cyhyZXN1bHQpICE9IFBHUkVTX1RVUExFU19P SykKLQkJewotCQkJLyogc2h1dCBkb3duIHBhZ2VyIGJlZm9yZSBwcmludGlu ZyBlcnJvciBtZXNzYWdlICovCi0JCQlpZiAoaXNfcGFnZXIpCi0JCQl7Ci0J CQkJQ2xvc2VQYWdlcihmb3V0KTsKLQkJCQlpc19wYWdlciA9IGZhbHNlOwot CQkJfQotCi0JCQlPSyA9IEFjY2VwdFJlc3VsdChyZXN1bHQsIHRydWUpOwot CQkJQXNzZXJ0KCFPSyk7Ci0JCQlTZXRSZXN1bHRWYXJpYWJsZXMocmVzdWx0 LCBPSyk7Ci0JCQlDbGVhck9yU2F2ZVJlc3VsdChyZXN1bHQpOwotCQkJYnJl YWs7Ci0JCX0KLQotCQlpZiAocHNldC5nc2V0X3ByZWZpeCkKLQkJewotCQkJ LyogU3RvcmVRdWVyeVR1cGxlIHdpbGwgY29tcGxhaW4gaWYgbm90IGV4YWN0 bHkgb25lIHJvdyAqLwotCQkJT0sgPSBTdG9yZVF1ZXJ5VHVwbGUocmVzdWx0 KTsKLQkJCUNsZWFyT3JTYXZlUmVzdWx0KHJlc3VsdCk7Ci0JCQlicmVhazsK LQkJfQotCi0JCS8qCi0JCSAqIE5vdGUgd2UgZG8gbm90IGRlYWwgd2l0aCBc Z2Rlc2MsIFxnZXhlYyBvciBcY3Jvc3N0YWJ2aWV3IG1vZGVzIGhlcmUKLQkJ ICovCi0KLQkJbnR1cGxlcyA9IFBRbnR1cGxlcyhyZXN1bHQpOwotCQl0b3Rh bF90dXBsZXMgKz0gbnR1cGxlczsKLQotCQlpZiAobnR1cGxlcyA8IGZldGNo X2NvdW50KQotCQl7Ci0JCQkvKiB0aGlzIGlzIHRoZSBsYXN0IHJlc3VsdCBz ZXQsIHNvIGFsbG93IGZvb3RlciBkZWNvcmF0aW9uICovCi0JCQlteV9wb3B0 LnRvcHQuc3RvcF90YWJsZSA9IHRydWU7Ci0JCX0KLQkJZWxzZSBpZiAoZm91 dCA9PSBzdGRvdXQgJiYgIWlzX3BhZ2VyKQotCQl7Ci0JCQkvKgotCQkJICog SWYgcXVlcnkgcmVxdWlyZXMgbXVsdGlwbGUgcmVzdWx0IHNldHMsIGhhY2sg dG8gZW5zdXJlIHRoYXQKLQkJCSAqIG9ubHkgb25lIHBhZ2VyIGluc3RhbmNl IGlzIHVzZWQgZm9yIHRoZSB3aG9sZSBtZXNzCi0JCQkgKi8KLQkJCWZvdXQg PSBQYWdlT3V0cHV0KElOVF9NQVgsICYobXlfcG9wdC50b3B0KSk7Ci0JCQlp c19wYWdlciA9IHRydWU7Ci0JCX0KLQotCQlwcmludFF1ZXJ5KHJlc3VsdCwg Jm15X3BvcHQsIGZvdXQsIGlzX3BhZ2VyLCBwc2V0LmxvZ2ZpbGUpOwotCi0J CUNsZWFyT3JTYXZlUmVzdWx0KHJlc3VsdCk7Ci0KLQkJLyogYWZ0ZXIgdGhl IGZpcnN0IHJlc3VsdCBzZXQsIGRpc2FsbG93IGhlYWRlciBkZWNvcmF0aW9u ICovCi0JCW15X3BvcHQudG9wdC5zdGFydF90YWJsZSA9IGZhbHNlOwotCQlt eV9wb3B0LnRvcHQucHJpb3JfcmVjb3JkcyArPSBudHVwbGVzOwotCi0JCS8q Ci0JCSAqIE1ha2Ugc3VyZSB0byBmbHVzaCB0aGUgb3V0cHV0IHN0cmVhbSwg c28gaW50ZXJtZWRpYXRlIHJlc3VsdHMgYXJlCi0JCSAqIHZpc2libGUgdG8g dGhlIGNsaWVudCBpbW1lZGlhdGVseS4gIFdlIGNoZWNrIHRoZSByZXN1bHRz IGJlY2F1c2UgaWYKLQkJICogdGhlIHBhZ2VyIGRpZXMvZXhpdHMvZXRjLCB0 aGVyZSdzIG5vIHNlbnNlIHRocm93aW5nIG1vcmUgZGF0YSBhdAotCQkgKiBp dC4KLQkJICovCi0JCWZsdXNoX2Vycm9yID0gZmZsdXNoKGZvdXQpOwotCi0J CS8qCi0JCSAqIENoZWNrIGlmIHdlIGFyZSBhdCB0aGUgZW5kLCBpZiBhIGNh bmNlbCB3YXMgcHJlc3NlZCwgb3IgaWYgdGhlcmUKLQkJICogd2VyZSBhbnkg ZXJyb3JzIGVpdGhlciB0cnlpbmcgdG8gZmx1c2ggb3V0IHRoZSByZXN1bHRz LCBvciBtb3JlCi0JCSAqIGdlbmVyYWxseSBvbiB0aGUgb3V0cHV0IHN0cmVh bSBhdCBhbGwuICBJZiB3ZSBoaXQgYW55IGVycm9ycwotCQkgKiB3cml0aW5n IHRoaW5ncyB0byB0aGUgc3RyZWFtLCB3ZSBwcmVzdW1lICRQQUdFUiBoYXMg ZGlzYXBwZWFyZWQgYW5kCi0JCSAqIHN0b3AgYm90aGVyaW5nIHRvIHB1bGwg ZG93biBtb3JlIGRhdGEuCi0JCSAqLwotCQlpZiAobnR1cGxlcyA8IGZldGNo X2NvdW50IHx8IGNhbmNlbF9wcmVzc2VkIHx8IGZsdXNoX2Vycm9yIHx8Ci0J CQlmZXJyb3IoZm91dCkpCi0JCQlicmVhazsKLQl9Ci0KLQlpZiAocHNldC5n Zm5hbWUpCi0JewotCQkvKiBjbG9zZSBcZyBhcmd1bWVudCBmaWxlL3BpcGUg Ki8KLQkJaWYgKGlzX3BpcGUpCi0JCXsKLQkJCVNldFNoZWxsUmVzdWx0VmFy aWFibGVzKHBjbG9zZShmb3V0KSk7Ci0JCQlyZXN0b3JlX3NpZ3BpcGVfdHJh cCgpOwotCQl9Ci0JCWVsc2UKLQkJCWZjbG9zZShmb3V0KTsKLQl9Ci0JZWxz ZSBpZiAoaXNfcGFnZXIpCi0JewotCQkvKiBjbG9zZSB0cmFuc2llbnQgcGFn ZXIgKi8KLQkJQ2xvc2VQYWdlcihmb3V0KTsKLQl9Ci0KLQlpZiAoT0spCi0J ewotCQkvKgotCQkgKiBXZSBkb24ndCBoYXZlIGEgUEdyZXN1bHQgaGVyZSwg YW5kIGV2ZW4gaWYgd2UgZGlkIGl0IHdvdWxkbid0IGhhdmUKLQkJICogdGhl IHJpZ2h0IHJvdyBjb3VudCwgc28gZmFrZSBTZXRSZXN1bHRWYXJpYWJsZXMo KS4gIEluIGVycm9yIGNhc2VzLAotCQkgKiB3ZSBhbHJlYWR5IHNldCB0aGUg cmVzdWx0IHZhcmlhYmxlcyBhYm92ZS4KLQkJICovCi0JCWNoYXIJCWJ1Zlsz Ml07Ci0KLQkJU2V0VmFyaWFibGUocHNldC52YXJzLCAiRVJST1IiLCAiZmFs c2UiKTsKLQkJU2V0VmFyaWFibGUocHNldC52YXJzLCAiU1FMU1RBVEUiLCAi MDAwMDAiKTsKLQkJc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgSU5UNjRf Rk9STUFULCB0b3RhbF90dXBsZXMpOwotCQlTZXRWYXJpYWJsZShwc2V0LnZh cnMsICJST1dfQ09VTlQiLCBidWYpOwotCX0KLQotY2xlYW51cDoKLQlpZiAo dGltaW5nKQotCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGJlZm9yZSk7Ci0K LQkvKgotCSAqIFdlIHRyeSB0byBjbG9zZSB0aGUgY3Vyc29yIG9uIGVpdGhl ciBzdWNjZXNzIG9yIGZhaWx1cmUsIGJ1dCBvbiBmYWlsdXJlCi0JICogaWdu b3JlIHRoZSByZXN1bHQgKGl0J3MgcHJvYmFibHkganVzdCBhIGJsZWF0IGFi b3V0IGJlaW5nIGluIGFuIGFib3J0ZWQKLQkgKiB0cmFuc2FjdGlvbikKLQkg Ki8KLQlyZXN1bHQgPSBQUWV4ZWMocHNldC5kYiwgIkNMT1NFIF9wc3FsX2N1 cnNvciIpOwotCWlmIChPSykKLQl7Ci0JCU9LID0gQWNjZXB0UmVzdWx0KHJl c3VsdCwgdHJ1ZSkgJiYKLQkJCShQUXJlc3VsdFN0YXR1cyhyZXN1bHQpID09 IFBHUkVTX0NPTU1BTkRfT0spOwotCQlDbGVhck9yU2F2ZVJlc3VsdChyZXN1 bHQpOwotCX0KLQllbHNlCi0JCVBRY2xlYXIocmVzdWx0KTsKLQotCWlmIChz dGFydGVkX3R4bikKLQl7Ci0JCXJlc3VsdCA9IFBRZXhlYyhwc2V0LmRiLCBP SyA/ICJDT01NSVQiIDogIlJPTExCQUNLIik7Ci0JCU9LICY9IEFjY2VwdFJl c3VsdChyZXN1bHQsIHRydWUpICYmCi0JCQkoUFFyZXN1bHRTdGF0dXMocmVz dWx0KSA9PSBQR1JFU19DT01NQU5EX09LKTsKLQkJQ2xlYXJPclNhdmVSZXN1 bHQocmVzdWx0KTsKLQl9Ci0KLQlpZiAodGltaW5nKQotCXsKLQkJSU5TVFJf VElNRV9TRVRfQ1VSUkVOVChhZnRlcik7Ci0JCUlOU1RSX1RJTUVfU1VCVFJB Q1QoYWZ0ZXIsIGJlZm9yZSk7Ci0JCSplbGFwc2VkX21zZWMgKz0gSU5TVFJf VElNRV9HRVRfTUlMTElTRUMoYWZ0ZXIpOwotCX0KLQotCXJldHVybiBPSzsK LX0KLQotCiAvKgogICogQWR2YW5jZSB0aGUgZ2l2ZW4gY2hhciBwb2ludGVy IG92ZXIgd2hpdGUgc3BhY2UgYW5kIFNRTCBjb21tZW50cy4KICAqLwpAQCAt MjI0Nyw0MyArMjEwMCw2IEBAIGNvbW1hbmRfbm9fYmVnaW4oY29uc3QgY2hh ciAqcXVlcnkpCiB9CiAKIAotLyoKLSAqIENoZWNrIHdoZXRoZXIgdGhlIHNw ZWNpZmllZCBjb21tYW5kIGlzIGEgU0VMRUNUIChvciBWQUxVRVMpLgotICov Ci1zdGF0aWMgYm9vbAotaXNfc2VsZWN0X2NvbW1hbmQoY29uc3QgY2hhciAq cXVlcnkpCi17Ci0JaW50CQkJd29yZGxlbjsKLQotCS8qCi0JICogRmlyc3Qg YWR2YW5jZSBvdmVyIGFueSB3aGl0ZXNwYWNlLCBjb21tZW50cyBhbmQgbGVm dCBwYXJlbnRoZXNlcy4KLQkgKi8KLQlmb3IgKDs7KQotCXsKLQkJcXVlcnkg PSBza2lwX3doaXRlX3NwYWNlKHF1ZXJ5KTsKLQkJaWYgKHF1ZXJ5WzBdID09 ICcoJykKLQkJCXF1ZXJ5Kys7Ci0JCWVsc2UKLQkJCWJyZWFrOwotCX0KLQot CS8qCi0JICogQ2hlY2sgd29yZCBsZW5ndGggKHNpbmNlICJzZWxlY3R4IiBp cyBub3QgInNlbGVjdCIpLgotCSAqLwotCXdvcmRsZW4gPSAwOwotCXdoaWxl IChpc2FscGhhKCh1bnNpZ25lZCBjaGFyKSBxdWVyeVt3b3JkbGVuXSkpCi0J CXdvcmRsZW4gKz0gUFFtYmxlbkJvdW5kZWQoJnF1ZXJ5W3dvcmRsZW5dLCBw c2V0LmVuY29kaW5nKTsKLQotCWlmICh3b3JkbGVuID09IDYgJiYgcGdfc3Ry bmNhc2VjbXAocXVlcnksICJzZWxlY3QiLCA2KSA9PSAwKQotCQlyZXR1cm4g dHJ1ZTsKLQotCWlmICh3b3JkbGVuID09IDYgJiYgcGdfc3RybmNhc2VjbXAo cXVlcnksICJ2YWx1ZXMiLCA2KSA9PSAwKQotCQlyZXR1cm4gdHJ1ZTsKLQot CXJldHVybiBmYWxzZTsKLX0KLQotCiAvKgogICogVGVzdCBpZiB0aGUgY3Vy cmVudCB1c2VyIGlzIGEgZGF0YWJhc2Ugc3VwZXJ1c2VyLgogICovCmRpZmYg LS1naXQgYS9zcmMvYmluL3BzcWwvdC8wMDFfYmFzaWMucGwgYi9zcmMvYmlu L3BzcWwvdC8wMDFfYmFzaWMucGwKaW5kZXggOWYwYjZjZjhjYS4uYjVmZWRi YzA5MSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3QvMDAxX2Jhc2ljLnBs CisrKyBiL3NyYy9iaW4vcHNxbC90LzAwMV9iYXNpYy5wbApAQCAtMTYxLDcg KzE2MSw3IEBAIHBzcWxfbGlrZSgKIAknXGVycnZlcmJvc2Ugd2l0aCBubyBw cmV2aW91cyBlcnJvcicpOwogCiAjIFRoZXJlIGFyZSB0aHJlZSBtYWluIHdh eXMgdG8gcnVuIGEgcXVlcnkgdGhhdCBtaWdodCBhZmZlY3QKLSMgXGVycnZl cmJvc2U6IFRoZSBub3JtYWwgd2F5LCB1c2luZyBhIGN1cnNvciBieSBzZXR0 aW5nIEZFVENIX0NPVU5ULAorIyBcZXJydmVyYm9zZTogVGhlIG5vcm1hbCB3 YXksIHBpZWNlbWVhbCByZXRyaWV2YWwgdXNpbmcgRkVUQ0hfQ09VTlQsCiAj IGFuZCB1c2luZyBcZ2Rlc2MuICBUZXN0IHRoZW0gYWxsLgogCiBsaWtlKApA QCAtMTg0LDEwICsxODQsMTAgQEAgbGlrZSgKIAkJCSJcXHNldCBGRVRDSF9D T1VOVCAxXG5TRUxFQ1QgZXJyb3I7XG5cXGVycnZlcmJvc2UiLAogCQkJb25f ZXJyb3Jfc3RvcCA9PiAwKSlbMl0sCiAJcXIvXEFecHNxbDo8c3RkaW4+OjI6 IEVSUk9SOiAgLiokCi1eTElORSAyOiBTRUxFQ1QgZXJyb3I7JAorXkxJTkUg MTogU0VMRUNUIGVycm9yOyQKIF4gKl4uKiQKIF5wc3FsOjxzdGRpbj46Mzog ZXJyb3I6IEVSUk9SOiAgWzAtOUEtWl17NX06IC4qJAotXkxJTkUgMjogU0VM RUNUIGVycm9yOyQKK15MSU5FIDE6IFNFTEVDVCBlcnJvcjskCiBeICpeLiok CiBeTE9DQVRJT046IC4qJC9tLAogCSdcZXJydmVyYm9zZSBhZnRlciBGRVRD SF9DT1VOVCBxdWVyeSB3aXRoIGVycm9yJyk7CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9wc3FsLm91dAppbmRleCA2OTA2MGZlM2MwLi44NTgw ZGI3YzAwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3BzcWwub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNx bC5vdXQKQEAgLTQ3NTUsNyArNDc1NSw3IEBAIG51bWJlciBvZiByb3dzOiAw CiBsYXN0IGVycm9yIG1lc3NhZ2U6IHN5bnRheCBlcnJvciBhdCBlbmQgb2Yg aW5wdXQKIFxlY2hvICdsYXN0IGVycm9yIGNvZGU6JyA6TEFTVF9FUlJPUl9T UUxTVEFURQogbGFzdCBlcnJvciBjb2RlOiA0MjYwMQotLS0gY2hlY2sgcm93 IGNvdW50IGZvciBhIGN1cnNvci1mZXRjaGVkIHF1ZXJ5CistLSBjaGVjayBy b3cgY291bnQgZm9yIGEgcXVlcnkgd2l0aCBjaHVua2VkIHJlc3VsdHMKIFxz ZXQgRkVUQ0hfQ09VTlQgMTAKIHNlbGVjdCB1bmlxdWUyIGZyb20gdGVuazEg b3JkZXIgYnkgdW5pcXVlMiBsaW1pdCAxOTsKICB1bmlxdWUyIApAQCAtNDc4 Nyw3ICs0Nzg3LDcgQEAgZXJyb3I6IGZhbHNlCiBlcnJvciBjb2RlOiAwMDAw MAogXGVjaG8gJ251bWJlciBvZiByb3dzOicgOlJPV19DT1VOVAogbnVtYmVy IG9mIHJvd3M6IDE5Ci0tLSBjdXJzb3ItZmV0Y2hlZCBxdWVyeSB3aXRoIGFu IGVycm9yIGFmdGVyIHRoZSBmaXJzdCBncm91cAorLS0gY2h1bmtlZCByZXN1 bHRzIHdpdGggYW4gZXJyb3IgYWZ0ZXIgdGhlIGZpcnN0IGNodW5rCiBzZWxl Y3QgMS8oMTUtdW5pcXVlMikgZnJvbSB0ZW5rMSBvcmRlciBieSB1bmlxdWUy IGxpbWl0IDE5OwogID9jb2x1bW4/IAogLS0tLS0tLS0tLQpAQCAtNDgwMSw2 ICs0ODAxLDExIEBAIHNlbGVjdCAxLygxNS11bmlxdWUyKSBmcm9tIHRlbmsx IG9yZGVyIGJ5IHVuaXF1ZTIgbGltaXQgMTk7CiAgICAgICAgIDAKICAgICAg ICAgMAogICAgICAgICAwCisgICAgICAgIDAKKyAgICAgICAgMAorICAgICAg ICAwCisgICAgICAgIDAKKyAgICAgICAgMQogRVJST1I6ICBkaXZpc2lvbiBi eSB6ZXJvCiBcZWNobyAnZXJyb3I6JyA6RVJST1IKIGVycm9yOiB0cnVlCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wc3FsLnNxbCBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3BzcWwuc3FsCmluZGV4IDEyOWY4NTMzNTMu LjMzMDc2Y2FkNzkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3BzcWwuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BzcWwuc3Fs CkBAIC0xMTYxLDE0ICsxMTYxLDE0IEBAIFNFTEVDVCA0IEFTIFxnZGVzYwog XGVjaG8gJ2xhc3QgZXJyb3IgbWVzc2FnZTonIDpMQVNUX0VSUk9SX01FU1NB R0UKIFxlY2hvICdsYXN0IGVycm9yIGNvZGU6JyA6TEFTVF9FUlJPUl9TUUxT VEFURQogCi0tLSBjaGVjayByb3cgY291bnQgZm9yIGEgY3Vyc29yLWZldGNo ZWQgcXVlcnkKKy0tIGNoZWNrIHJvdyBjb3VudCBmb3IgYSBxdWVyeSB3aXRo IGNodW5rZWQgcmVzdWx0cwogXHNldCBGRVRDSF9DT1VOVCAxMAogc2VsZWN0 IHVuaXF1ZTIgZnJvbSB0ZW5rMSBvcmRlciBieSB1bmlxdWUyIGxpbWl0IDE5 OwogXGVjaG8gJ2Vycm9yOicgOkVSUk9SCiBcZWNobyAnZXJyb3IgY29kZTon IDpTUUxTVEFURQogXGVjaG8gJ251bWJlciBvZiByb3dzOicgOlJPV19DT1VO VAogCi0tLSBjdXJzb3ItZmV0Y2hlZCBxdWVyeSB3aXRoIGFuIGVycm9yIGFm dGVyIHRoZSBmaXJzdCBncm91cAorLS0gY2h1bmtlZCByZXN1bHRzIHdpdGgg YW4gZXJyb3IgYWZ0ZXIgdGhlIGZpcnN0IGNodW5rCiBzZWxlY3QgMS8oMTUt dW5pcXVlMikgZnJvbSB0ZW5rMSBvcmRlciBieSB1bmlxdWUyIGxpbWl0IDE5 OwogXGVjaG8gJ2Vycm9yOicgOkVSUk9SCiBcZWNobyAnZXJyb3IgY29kZTon IDpTUUxTVEFURQotLSAKMi4zNC4xCgo= ------------=_1711993964-47309-0--