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 1r5EyA-00CX4g-Gl for pgsql-hackers@arkaria.postgresql.org; Tue, 21 Nov 2023 00:50:27 +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 1r5Ey6-00Br9N-Ty for pgsql-hackers@arkaria.postgresql.org; Tue, 21 Nov 2023 00:50:22 +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 1r5Ey6-00Br9E-BI for pgsql-hackers@lists.postgresql.org; Tue, 21 Nov 2023 00:50:22 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1r5Ey2-007WCc-82 for pgsql-hackers@postgresql.org; Tue, 21 Nov 2023 00:50:21 +0000 Received: from [10.4.15.19] (unknown [93.174.131.141]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: a.rybakina@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id 0991FE20FDC; Tue, 21 Nov 2023 03:50:16 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1700527816; bh=H9vXEtp+PGtn8n1pDIy3sGJ84dWOye86BA3fAj57rcg=; h=Message-ID:Date:User-Agent:Subject:To:Cc:References:From: In-Reply-To:From; b=W96HL5wvrqZWjcQO8faVQArt7/eMzYEB6Qf3lWrGLlxtBmrfbdrDmowFZuAF/8WHi fwr2CxZV0XGXRbgJ4+zFW7pSA9obzDoeGnv77T2XP/yJ+NneyTvq1RNzE6abl7rZJd rPu3fCZgL8iwAB66a3WZmVJo4gmdXFe/zkWf+zx/+VNNMUxoE9HRqFnlNmZXfnZjWX 6Zlgzn7dwHzOPw/enXGlm+qkMqIaGTVyd/uEBCuV6zJVl12TiDNt1kKoauLimZAYCg oL5MwEJK87y6H/sFTsv3sOlC5t2M9351m6U1D83FSRIuiF1eS2jkkQRWx0L6+FXfsC za2TgzG3+f3EA== Content-Type: multipart/mixed; boundary="------------N0aTNekncQIFu0h7ROPj40Aw" Message-ID: <4c1c2c0b-802f-45ae-a7cd-007bfd8957cf@postgrespro.ru> Date: Tue, 21 Nov 2023 03:50:15 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: POC, WIP: OR-clause support for indexes Content-Language: en-US To: Andrei Lepikhov , pgsql-hackers@postgresql.org Cc: Peter Geoghegan , Robert Haas , "Finnerty, Jim" , Marcos Pegoraro , teodor@sigaev.ru, Ranier Vilela , Tomas Vondra , Peter Eisentraut , Alexander Korotkov References: <567ED6CA.2040504@sigaev.ru> <89fb769c-7d45-f0c5-a9b3-b706c9661c57@postgrespro.ru> <668892c1-fb11-3a79-ce5e-1c194b7b3263@postgrespro.ru> <16a7e3aa-24c0-4986-8820-ea2857bd7b6b@postgrespro.ru> <421656a9-5df7-41bb-9d58-1c1edbd5dc3e@postgrespro.ru> <28c727ba-5260-42a8-88b0-4ecdeeca6ef8@postgrespro.ru> From: Alena Rybakina In-Reply-To: <28c727ba-5260-42a8-88b0-4ecdeeca6ef8@postgrespro.ru> 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. --------------N0aTNekncQIFu0h7ROPj40Aw Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 20.11.2023 11:52, Andrei Lepikhov wrote: > Looking into the patch, I found some trivial improvements (see > attachment). > Also, it is not obvious that using a string representation of the > clause as a hash table key is needed here. Also, by making a copy of > the node in the get_key_nconst_node(), you replace the location field, > but in the case of complex expression, you don't do the same with > other nodes. > I propose to generate expression hash instead + prove the equality of > two expressions by calling equal(). > I was thinking about your last email and a possible error where the location field may not be cleared in complex expressions. Unfortunately, I didn't come up with any examples either, but I think I was able to handle this with a special function that removes location-related patterns. The alternative to this is to bypass this expression, but I think it will be more invasive. In addition, I have added changes related to the hash table: now the key is of type int. All changes are displayed in the attached v9-0001-Replace-OR-clause-to_ANY.diff.txt file. I haven't measured it yet. But what do you think about these changes? -- Regards, Alena Rybakina Postgres Professional --------------N0aTNekncQIFu0h7ROPj40Aw Content-Type: text/x-patch; charset=UTF-8; name="v9-0001-PATCH-Replace-OR-clause-to-ANY-expressions.patch" Content-Disposition: attachment; filename="v9-0001-PATCH-Replace-OR-clause-to-ANY-expressions.patch" Content-Transfer-Encoding: base64 RnJvbSA4ZTU3OWIwNTlmZmQ0MTVmYzQ3N2UwZTg5MzBlNzE4MDg0ZTU4NjgzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVuYSBSeWJha2luYSA8YS5yeWJha2luYUBwb3N0 Z3Jlc3Byby5ydT4KRGF0ZTogVHVlLCAyMSBOb3YgMjAyMyAwMzoyMjoxMyArMDMwMApTdWJq ZWN0OiBbUEFUQ0hdIFtQQVRDSF0gUmVwbGFjZSBPUiBjbGF1c2UgdG8gQU5ZIGV4cHJlc3Np b25zLiBSZXBsYWNlIChYPU4xKQogT1IgKFg9TjIpIC4uLiB3aXRoIFggPSBBTlkoTjEsIE4y KSBvbiB0aGUgc3RhZ2Ugb2YgdGhlIG9wdGltaXNlciB3aGVuIHdlIGFyZQogc3RpbGwgd29y a2luZyB3aXRoIGEgdHJlZSBleHByZXNzaW9uLiBGaXJzdGx5LCB3ZSBkbyBub3QgdHJ5IHRv IG1ha2UgYQogdHJhbnNmb3JtYXRpb24gZm9yICJub24tb3IiIGV4cHJlc3Npb25zIG9yIGlu ZXF1YWxpdGllcyBhbmQgdGhlIGNyZWF0aW9uIG9mIGEKIHJlbGF0aW9uIHdpdGggIm9yIiBl eHByZXNzaW9ucyBvY2N1cnMgYWNjb3JkaW5nIHRvIHRoZSBzYW1lIHNjZW5hcmlvLgogU2Vj b25kbHksIHdlIGRvIG5vdCBtYWtlIHRyYW5zZm9ybWF0aW9ucyBpZiB0aGVyZSBhcmUgbGVz cyB0aGFuIHNldAogb3JfdHJhbnNmb3JtX2xpbWl0LiBUaGlyZGx5LCBpdCBpcyB3b3J0aCBj b25zaWRlcmluZyB0aGF0IHdlIGNvbnNpZGVyICJvciIKIGV4cHJlc3Npb25zIG9ubHkgYXQg dGhlIGN1cnJlbnQgbGV2ZWwuCgpBdXRob3JzOiBBbGVuYSBSeWJha2luYSA8bGVuYS5yaWJh Y2tpbmFAeWFuZGV4LnJ1PiwgQW5kcmV5IExlcGlraG92IDxhLmxlcGlraG92QHBvc3RncmVz cHJvLnJ1PgpSZXZpZXdlZC1ieTogUGV0ZXIgR2VvZ2hlZ2FuIDxwZ0Bib3d0LmllPiwgUmFu aWVyIFZpbGVsYSA8cmFuaWVyLnZmQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEFsZXhhbmRl ciBLb3JvdGtvdiA8YWVrb3JvdGtvdkBnbWFpbC5jb20+LCBSb2JlcnQgSGFhcyA8cm9iZXJ0 bWhhYXNAZ21haWwuY29tPgotLS0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMg ICAgICAgICAgICAgICB8IDI4MCArKysrKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL3V0 aWxzL21pc2MvZ3VjX3RhYmxlcy5jICAgICAgICAgICB8ICAxMCArCiBzcmMvaW5jbHVkZS9w YXJzZXIvcGFyc2VfZXhwci5oICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0ICAgIHwgMTE1ICsrKysrKysKIHNyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ3VjLm91dCAgICAgICAgICAgICB8ICAgMyArLQogc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2luLm91dCAgICAgICAgICAgIHwgIDUwICsrKysK IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91dCB8IDE1NiAr KysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91dCAgICAg ICAgfCAgIDMgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdGlkc2Nhbi5vdXQgICAg ICAgICB8ICAxNyArKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbCAg ICAgICAgIHwgIDMyICsrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9qb2luLnNxbCAgICAgICAg ICAgICAgICAgfCAgMTAgKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3BydW5l LnNxbCAgICAgIHwgIDIyICsrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC90aWRzY2FuLnNxbCAg ICAgICAgICAgICAgfCAgIDYgKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3Qg ICAgICAgICAgICAgIHwgICAxICsKIDE0IGZpbGVzIGNoYW5nZWQsIDcwMyBpbnNlcnRpb25z KCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9leHByLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IDY0 YzU4MmMzNDRjLi4yOTA0MjIwMDVhMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX2V4cHIuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCkBA IC0xOCw2ICsxOCw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19hZ2dyZWdhdGUuaCIKICNp bmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUu aCIKKyNpbmNsdWRlICJjb21tb24vaGFzaGZuLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGJj b21tYW5kcy5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL21h a2VmdW5jcy5oIgpAQCAtNDMsNiArNDQsNyBAQAogCiAvKiBHVUMgcGFyYW1ldGVycyAqLwog Ym9vbAkJVHJhbnNmb3JtX251bGxfZXF1YWxzID0gZmFsc2U7Citib29sCQllbmFibGVfb3Jf dHJhbnNmb3JtYXRpb24gPSBmYWxzZTsKIAogCiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtRXhw clJlY3Vyc2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHByKTsKQEAgLTk4LDcgKzEw MCwyODMgQEAgc3RhdGljIEV4cHIgKm1ha2VfZGlzdGluY3Rfb3AoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBMaXN0ICpvcG5hbWUsCiAJCQkJCQkJICBOb2RlICpsdHJlZSwgTm9kZSAqcnRyZWUs IGludCBsb2NhdGlvbik7CiBzdGF0aWMgTm9kZSAqbWFrZV9udWxsdGVzdF9mcm9tX2Rpc3Rp bmN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJCQkgQV9FeHByICpkaXN0aW5jdGEs IE5vZGUgKmFyZyk7Cit0eXBlZGVmIHN0cnVjdCBPckNsYXVzZUdyb3VwRW50cnkKK3sKKwlp bnQzMgkJCWhhc2hfbGVmdHZhcl9rZXk7CisKKwlOb2RlCQkgICAqbm9kZTsKKwlMaXN0CQkg ICAqY29uc3RzOworCU9pZAkJCQlzY2FsYXJfdHlwZTsKKwlPaWQJCQkJb3BubzsKKwlOb2Rl IAkJICAgKmV4cHI7Cit9IE9yQ2xhdXNlR3JvdXBFbnRyeTsKKworLyoKKyAqIFRPRE86IGNv bnNpZGVyIGRpZmZlcmVudCBhbGdvcml0aG0gdG8gbWFuYWdlIGNvbXBsZXhpdHkKKyAqIGlu IHRoZSBjYXNlIG9mIG1hbnkgZGlmZmVyZW50IGNsYXVzZXMsCisgKiBsaWtlIFJhYmluLUth cnAgb3IgQm95ZXLigJNNb29yZSBhbGdvcml0aG1zLgorICovCitzdGF0aWMgY2hhciAqCitj bGVhcl9wYXR0ZXJucyhjb25zdCBjaGFyICpzdHIsIGNvbnN0IGNoYXIgKnN0YXJ0X3BhdHRl cm4pCit7CisJaW50CQkJaSA9IDA7CisJaW50CQkJaiA9IDA7CisJaW50CQkJc3RhcnRfcGF0 dGVybl9sZW4gPSBzdHJsZW4oc3RhcnRfcGF0dGVybik7CisJY2hhcgkgICAqcmVzID0gcGFs bG9jMChzaXplb2YoKnJlcykgKiAoc3RybGVuKHN0cikgKyAxKSk7CisKKwlmb3IgKGkgPSAw OyBzdHJbaV07KQorCXsKKwkJaWYgKGkgPj0gc3RhcnRfcGF0dGVybl9sZW4gJiYgc3RybmNt cCgmc3RyW2kgLSBzdGFydF9wYXR0ZXJuX2xlbl0sCisJCQkJCQkJCQkJCSAgc3RhcnRfcGF0 dGVybiwKKwkJCQkJCQkJCQkJICBzdGFydF9wYXR0ZXJuX2xlbikgPT0gMCkKKwkJeworCQkJ d2hpbGUgKHN0cltpXSAmJiAhKHN0cltpXSA9PSAneycgfHwgc3RyW2ldID09ICd9JykpCisJ CQkJaSsrOworCQl9CisJCWlmIChzdHJbaV0pCisJCQlyZXNbaisrXSA9IHN0cltpKytdOwor CX0KKworCXJldHVybiByZXM7Cit9CisKK3N0YXRpYyBpbnQzMgorZ2V0X2tleV9uY29uc3Rf bm9kZShOb2RlICpuY29uc3Rfbm9kZSkKK3sKKwljaGFyICpzdHIgPSBub2RlVG9TdHJpbmco bmNvbnN0X25vZGUpOworCisJc3RyID0gY2xlYXJfcGF0dGVybnMoc3RyLCAiIDpsb2NhdGlv biIpOworCisJaWYgKHN0ciA9PSBOVUxMKQorCQlyZXR1cm4gMDsKKworCXJldHVybiBEYXR1 bUdldEludDMyKGhhc2hfYW55KCh1bnNpZ25lZCBjaGFyICopc3RyLCBzdHJsZW4oc3RyKSkp OworfQorCitzdGF0aWMgTm9kZSAqCit0cmFuc2Zvcm1Cb29sRXhwck9yKFBhcnNlU3RhdGUg KnBzdGF0ZSwgQm9vbEV4cHIgKmV4cHJfb3JpZykKK3sKKwlMaXN0CQkgICAqb3JfbGlzdCA9 IE5JTDsKKwlMaXN0Q2VsbAkgICAqbGM7CisJSEFTSENUTAkJCWluZm87CisJSFRBQiAJCSAg ICpvcl9ncm91cF9odGFiID0gTlVMTDsKKwlpbnQgCQkJbGVuX29ycyA9IGxpc3RfbGVuZ3Ro KGV4cHJfb3JpZy0+YXJncyk7CisKKwlNZW1TZXQoJmluZm8sIDAsIHNpemVvZihpbmZvKSk7 CisJaW5mby5rZXlzaXplID0gc2l6ZW9mKGludCk7CisJaW5mby5lbnRyeXNpemUgPSBzaXpl b2YoT3JDbGF1c2VHcm91cEVudHJ5KTsKKwlvcl9ncm91cF9odGFiID0gaGFzaF9jcmVhdGUo Ik9SIEdyb3VwcyIsCisJCQkJCQkJCQkgIGxlbl9vcnMsCisJCQkJCQkJCQkgICZpbmZvLAor CQkJCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwor CS8qIElmIHRoaXMgaXMgbm90IGFuICdPUicgZXhwcmVzc2lvbiwgc2tpcCB0aGUgdHJhbnNm b3JtYXRpb24gKi8KKwlpZiAoZXhwcl9vcmlnLT5ib29sb3AgIT0gT1JfRVhQUiB8fCAhZW5h YmxlX29yX3RyYW5zZm9ybWF0aW9uIHx8IGxlbl9vcnMgPT0gMSB8fCAhb3JfZ3JvdXBfaHRh YikKKwkJcmV0dXJuIHRyYW5zZm9ybUJvb2xFeHByKHBzdGF0ZSwgKEJvb2xFeHByICopIGV4 cHJfb3JpZyk7CisKKwlmb3JlYWNoKGxjLCBleHByX29yaWctPmFyZ3MpCisJeworCQlOb2Rl CQkJICAgKmFyZyA9IGxmaXJzdChsYyk7CisJCU5vZGUJCQkgICAqb3JxdWFsID0gTlVMTDsK KwkJTm9kZQkJCSAgICpjb25zdF9leHByID0gTlVMTDsKKwkJTm9kZQkJCSAgICpuY29uc3Rf ZXhwciA9IE5VTEw7CisJCU9yQ2xhdXNlR3JvdXBFbnRyeSAqZ2VudHJ5ID0gTlVMTDsKKwkJ Ym9vbAkJCQlmb3VuZDsKKwkJaW50MzIJCQkJaGFzaDsKKworCQkvKiBBdCBmaXJzdCwgdHJh bnNmb3JtIHRoZSBhcmcgYW5kIGV2YWx1YXRlIGNvbnN0YW50IGV4cHJlc3Npb25zLiAqLwor CQlvcnF1YWwgPSB0cmFuc2Zvcm1FeHByUmVjdXJzZShwc3RhdGUsIChOb2RlICopIGFyZyk7 CisJCW9ycXVhbCA9IGNvZXJjZV90b19ib29sZWFuKHBzdGF0ZSwgb3JxdWFsLCAiT1IiKTsK KwkJb3JxdWFsID0gZXZhbF9jb25zdF9leHByZXNzaW9ucyhOVUxMLCBvcnF1YWwpOworCisJ CWlmICghSXNBKG9ycXVhbCwgT3BFeHByKSkKKwkJeworCQkJb3JfbGlzdCA9IGxhcHBlbmQo b3JfbGlzdCwgb3JxdWFsKTsKKwkJCWNvbnRpbnVlOworCQl9CiAKKwkJLyoKKwkJICogRGV0 ZWN0IHRoZSBjb25zdGFudCBzaWRlIG9mIHRoZSBjbGF1c2UuIFJlY2FsbCBub24tY29uc3Rh bnQKKwkJICogZXhwcmVzc2lvbiBjYW4gYmUgbWFkZSBub3Qgb25seSB3aXRoIFZhcnMsIGJ1 dCBhbHNvIHdpdGggUGFyYW1zLAorCQkgKiB3aGljaCBpcyBub3QgYm9uZGVkIHdpdGggYW55 IHJlbGF0aW9uLiBUaHVzLCB3ZSBkZXRlY3QgdGhlIGNvbnN0CisJCSAqIHNpZGUgLSBpZiBh bm90aGVyIHNpZGUgaXMgY29uc3RhbnQgdG9vLCB0aGUgb3JxdWFsIGNvdWxkbid0IGJlCisJ CSAqIGFuIE9wRXhwci4KKwkJICogR2V0IHBvaW50ZXJzIHRvIGNvbnN0YW50IGFuZCBleHBy ZXNzaW9uIHNpZGVzIG9mIHRoZSBxdWFsLgorCQkgKi8KKwkJaWYgKElzQShnZXRfbGVmdG9w KG9ycXVhbCksIENvbnN0KSkKKwkJeworCQkJbmNvbnN0X2V4cHIgPSBnZXRfcmlnaHRvcChv cnF1YWwpOworCQkJY29uc3RfZXhwciA9IGdldF9sZWZ0b3Aob3JxdWFsKTsKKwkJfQorCQll bHNlIGlmIChJc0EoZ2V0X3JpZ2h0b3Aob3JxdWFsKSwgQ29uc3QpKQorCQl7CisJCQljb25z dF9leHByID0gZ2V0X3JpZ2h0b3Aob3JxdWFsKTsKKwkJCW5jb25zdF9leHByID0gZ2V0X2xl ZnRvcChvcnF1YWwpOworCQl9CisJCWVsc2UKKwkJeworCQkJb3JfbGlzdCA9IGxhcHBlbmQo b3JfbGlzdCwgb3JxdWFsKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJaGFzaCA9IGdldF9r ZXlfbmNvbnN0X25vZGUobmNvbnN0X2V4cHIpOworCisJCWlmICghb3BfbWVyZ2Vqb2luYWJs ZSgoKE9wRXhwciAqKSBvcnF1YWwpLT5vcG5vLCBleHByVHlwZShuY29uc3RfZXhwcikpIHx8 IGhhc2ggPT0gMCkKKwkJeworCQkJb3JfbGlzdCA9IGxhcHBlbmQob3JfbGlzdCwgb3JxdWFs KTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJLyoKKwkJKiBBdCB0aGlzIHBvaW50IHdlIGRl ZmluaXRlbHkgaGF2ZSBhIHRyYW5zZm9ybWFibGUgY2xhdXNlLgorCQkqIENsYXNzaWZ5IGl0 IGFuZCBhZGQgaW50byBzcGVjaWZpYyBncm91cCBvZiBjbGF1c2VzLCBvciBjcmVhdGUgbmV3 CisJCSogZ3JvdXAuCisJCSogVE9ETzogdG8gbWFuYWdlIGNvbXBsZXhpdHkgaW4gdGhlIGNh c2Ugb2YgbWFueSBkaWZmZXJlbnQgY2xhdXNlcworCQkqIChYMT1DMSkgT1IgKFgyPUMyIE9S KSAuLi4gKFhOID0gQ04pIHdlIGNvdWxkIGludmVudCBzb21ldGhpbmcKKwkJKiBsaWtlIGEg aGFzaCB0YWJsZS4gQnV0IGFsc28gd2UgYmVsaWV2ZSwgdGhhdCB0aGUgY2FzZSBvZiBtYW55 CisJCSogZGlmZmVyZW50IHZhcmlhYmxlIHNpZGVzIGlzIHZlcnkgcmFyZS4KKwkJKi8KKwkJ Z2VudHJ5ID0gaGFzaF9zZWFyY2gob3JfZ3JvdXBfaHRhYiwgJmhhc2gsIEhBU0hfRklORCwg JmZvdW5kKTsKKworCQlpZiAoZm91bmQpCisJCXsKKwkJCWdlbnRyeS0+Y29uc3RzID0gbGFw cGVuZChnZW50cnktPmNvbnN0cywgY29uc3RfZXhwcik7CisJCQkvKgorCQkJCSogVGhlIGNs YXVzZSBjbGFzc2lmaWVkIHN1Y2Nlc3NmdWxseSBhbmQgYWRkZWQgaW50byBleGlzdGVkCisJ CQkJKiBjbGF1c2UgZ3JvdXAuCisJCQkJKi8KKwkJCWNvbnRpbnVlOworCQl9CisKKwkJLyog TmV3IGNsYXVzZSBncm91cCBuZWVkZWQgKi8KKwkJZ2VudHJ5ID0gaGFzaF9zZWFyY2gob3Jf Z3JvdXBfaHRhYiwgJmhhc2gsIEhBU0hfRU5URVIsICZmb3VuZCk7CisJCWdlbnRyeS0+bm9k ZSA9IG5jb25zdF9leHByOworCQlnZW50cnktPmNvbnN0cyA9IGxpc3RfbWFrZTEoY29uc3Rf ZXhwcik7CisJCWdlbnRyeS0+ZXhwciA9IG9ycXVhbDsKKwkJZ2VudHJ5LT5oYXNoX2xlZnR2 YXJfa2V5ID0gaGFzaDsKKwl9CisKKwlpZiAob3JfZ3JvdXBfaHRhYiAmJiAoaGFzaF9nZXRf bnVtX2VudHJpZXMob3JfZ3JvdXBfaHRhYikgPCAxIHx8CisJICAgICAgICAgICAgICAgICAg ICAgICAgIGhhc2hfZ2V0X251bV9lbnRyaWVzKG9yX2dyb3VwX2h0YWIpID09IGxlbl9vcnMp KQorCXsKKwkJLyoKKwkJKiBObyBhbnkgdHJhbnNmb3JtYXRpb25zIHBvc3NpYmxlIHdpdGgg dGhpcyBsaXN0IG9mIGFyZ3VtZW50cy4gSGVyZSB3ZQorCQkqIGFscmVhZHkgbWFkZSBhbGwg dW5kZXJseWluZyB0cmFuc2Zvcm1hdGlvbnMuIFRodXMsIGp1c3QgcmV0dXJuIHRoZQorCQkq IHRyYW5zZm9ybWVkIGJvb2wgZXhwcmVzc2lvbi4KKwkJKi8KKwkJaGFzaF9kZXN0cm95KG9y X2dyb3VwX2h0YWIpOworCQlyZXR1cm4gKE5vZGUgKikgbWFrZUJvb2xFeHByKE9SX0VYUFIs IG9yX2xpc3QsIGV4cHJfb3JpZy0+bG9jYXRpb24pOworCX0KKwllbHNlCisJeworCQlIQVNI X1NFUV9TVEFUVVMJCWhhc2hfc2VxOworCQlPckNsYXVzZUdyb3VwRW50cnkgKmdlbnRyeTsK KworCQloYXNoX3NlcV9pbml0KCZoYXNoX3NlcSwgb3JfZ3JvdXBfaHRhYik7CisKKwkJLyog TGV0J3MgY29udmVydCBlYWNoIGdyb3VwIG9mIGNsYXVzZXMgdG8gYW4gSU4gb3BlcmF0aW9u LiAqLworCisJCS8qCisJCSogR28gdGhyb3VnaCB0aGUgbGlzdCBvZiBncm91cHMgYW5kIGNv bnZlcnQgZWFjaCwgd2hlcmUgbnVtYmVyIG9mCisJCSogY29uc3RzIG1vcmUgdGhhbiAxLiB0 cml2aWFsIGdyb3VwcyBtb3ZlIHRvIE9SLWxpc3QgYWdhaW4KKwkJKi8KKworCQl3aGlsZSAo KGdlbnRyeSA9IChPckNsYXVzZUdyb3VwRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZoYXNo X3NlcSkpICE9IE5VTEwpCisJCXsKKwkJCUxpc3QJCQkgICAqYWxsZXhwcnM7CisJCQlPaWQJ CQkJICAgIHNjYWxhcl90eXBlOworCQkJT2lkCQkJCQlhcnJheV90eXBlOworCisJCQlBc3Nl cnQobGlzdF9sZW5ndGgoZ2VudHJ5LT5jb25zdHMpID4gMCk7CisKKwkJCWlmIChsaXN0X2xl bmd0aChnZW50cnktPmNvbnN0cykgPT0gMSkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIE9ubHkg b25lIGVsZW1lbnQgaW4gdGhlIGNsYXNzLiBSZXR1cm4gcmluZm8gaW50byB0aGUgQm9vbEV4 cHIKKwkJCQkgKiBhcmdzIGxpc3QgdW5jaGFuZ2VkLgorCQkJCSAqLworCQkJCWxpc3RfZnJl ZShnZW50cnktPmNvbnN0cyk7CisJCQkJb3JfbGlzdCA9IGxhcHBlbmQob3JfbGlzdCwgZ2Vu dHJ5LT5leHByKTsKKwkJCQljb250aW51ZTsKKwkJCX0KKworCQkJLyoKKwkJCSAqIERvIHRo ZSB0cmFuc2Zvcm1hdGlvbi4KKwkJCSAqCisJCQkgKiBGaXJzdCBvZiBhbGwsIHRyeSB0byBz ZWxlY3QgYSBjb21tb24gdHlwZSBmb3IgdGhlIGFycmF5IGVsZW1lbnRzLgorCQkJICogTm90 ZSB0aGF0IHNpbmNlIHRoZSBMSFMnIHR5cGUgaXMgZmlyc3QgaW4gdGhlIGxpc3QsIGl0IHdp bGwgYmUKKwkJCSAqIHByZWZlcnJlZCB3aGVuIHRoZXJlIGlzIGRvdWJ0IChlZywgd2hlbiBh bGwgdGhlIFJIUyBpdGVtcyBhcmUKKwkJCSAqIHVua25vd24gbGl0ZXJhbHMpLgorCQkJICoK KwkJCSAqIE5vdGU6IHVzZSBsaXN0X2NvbmNhdCBoZXJlIG5vdCBsY29ucywgdG8gYXZvaWQg ZGFtYWdpbmcgcm5vbnZhcnMuCisJCQkgKgorCQkJICogQXMgYSBzb3VyY2Ugb2YgaW5zaWRl cywgdXNlIG1ha2Vfc2NhbGFyX2FycmF5X29wKCkKKwkJCSAqLworCQkJYWxsZXhwcnMgPSBs aXN0X2NvbmNhdChsaXN0X21ha2UxKGdlbnRyeS0+bm9kZSksIGdlbnRyeS0+Y29uc3RzKTsK KwkJCXNjYWxhcl90eXBlID0gc2VsZWN0X2NvbW1vbl90eXBlKE5VTEwsIGFsbGV4cHJzLCBO VUxMLCBOVUxMKTsKKworCQkJaWYgKHNjYWxhcl90eXBlICE9IFJFQ09SRE9JRCAmJiBPaWRJ c1ZhbGlkKHNjYWxhcl90eXBlKSkKKwkJCQlhcnJheV90eXBlID0gZ2V0X2FycmF5X3R5cGUo c2NhbGFyX3R5cGUpOworCQkJZWxzZQorCQkJCWFycmF5X3R5cGUgPSBJbnZhbGlkT2lkOwor CisJCQlpZiAoYXJyYXlfdHlwZSAhPSBJbnZhbGlkT2lkKQorCQkJeworCQkJCS8qCisJCQkJ ICogT0s6IGNvZXJjZSBhbGwgdGhlIHJpZ2h0LWhhbmQgbm9uLVZhciBpbnB1dHMgdG8gdGhl IGNvbW1vbgorCQkJCSAqIHR5cGUgYW5kIGJ1aWxkIGFuIEFycmF5RXhwciBmb3IgdGhlbS4K KwkJCQkgKi8KKwkJCQlMaXN0CSAgICphZXhwcnMgPSBOSUw7CisJCQkJQXJyYXlFeHByICAq bmV3YSA9IE5VTEw7CisJCQkJU2NhbGFyQXJyYXlPcEV4cHIgKnNhb3BleHByID0gTlVMTDsK KwkJCQlMaXN0Q2VsbCAqbDsKKworCQkJCWFleHBycyA9IE5JTDsKKworCQkJCWZvcmVhY2go bCwgZ2VudHJ5LT5jb25zdHMpCisJCQkJeworCQkJCQlOb2RlCSAgICpyZXhwciA9IChOb2Rl ICopIGxmaXJzdChsKTsKKworCQkJCQlyZXhwciA9IGNvZXJjZV90b19jb21tb25fdHlwZShw c3RhdGUsIHJleHByLAorCQkJCQkJCQkJCQkJc2NhbGFyX3R5cGUsCisJCQkJCQkJCQkJCQki SU4iKTsKKwkJCQkJYWV4cHJzID0gbGFwcGVuZChhZXhwcnMsIHJleHByKTsKKwkJCQl9CisK KwkJCQluZXdhID0gbWFrZU5vZGUoQXJyYXlFeHByKTsKKwkJCQkvKiBhcnJheV9jb2xsaWQg d2lsbCBiZSBzZXQgYnkgcGFyc2VfY29sbGF0ZS5jICovCisJCQkJbmV3YS0+ZWxlbWVudF90 eXBlaWQgPSBzY2FsYXJfdHlwZTsKKwkJCQluZXdhLT5hcnJheV90eXBlaWQgPSBhcnJheV90 eXBlOworCQkJCW5ld2EtPm11bHRpZGltcyA9IGZhbHNlOworCQkJCW5ld2EtPmVsZW1lbnRz ID0gYWV4cHJzOworCQkJCW5ld2EtPmxvY2F0aW9uID0gLTE7CisKKwkJCQlzYW9wZXhwciA9 CisJCQkJCShTY2FsYXJBcnJheU9wRXhwciAqKQorCQkJCQkJbWFrZV9zY2FsYXJfYXJyYXlf b3AocHN0YXRlLAorCQkJCQkJCQkJCQkgbGlzdF9tYWtlMShtYWtlU3RyaW5nKChjaGFyICop ICI9IikpLAorCQkJCQkJCQkJCQkgdHJ1ZSwKKwkJCQkJCQkJCQkJIGdlbnRyeS0+bm9kZSwK KwkJCQkJCQkJCQkJIChOb2RlICopIG5ld2EsCisJCQkJCQkJCQkJCSAtMSk7CisKKwkJCQlv cl9saXN0ID0gbGFwcGVuZChvcl9saXN0LCAodm9pZCAqKSBzYW9wZXhwcik7CisJCQl9CisJ CQllbHNlCisJCQl7CisJCQkJbGlzdF9mcmVlKGdlbnRyeS0+Y29uc3RzKTsKKwkJCQlvcl9s aXN0ID0gbGFwcGVuZChvcl9saXN0LCBnZW50cnktPmV4cHIpOworCQkJfQorCQkJaGFzaF9z ZWFyY2gob3JfZ3JvdXBfaHRhYiwgJmdlbnRyeS0+aGFzaF9sZWZ0dmFyX2tleSwgSEFTSF9S RU1PVkUsIE5VTEwpOworCQl9CisJCWhhc2hfZGVzdHJveShvcl9ncm91cF9odGFiKTsKKwl9 CisKKwkvKiBPbmUgbW9yZSB0cmljazogYXNzZW1ibGUgY29ycmVjdCBjbGF1c2UgKi8KKwly ZXR1cm4gKE5vZGUgKikgKChsaXN0X2xlbmd0aChvcl9saXN0KSA+IDEpID8KKwkJCQkJCW1h a2VCb29sRXhwcihPUl9FWFBSLCBvcl9saXN0LCBleHByX29yaWctPmxvY2F0aW9uKSA6CisJ CQkJCQlsaW5pdGlhbChvcl9saXN0KSk7Cit9CiAKIC8qCiAgKiB0cmFuc2Zvcm1FeHByIC0K QEAgLTIxMiw3ICs0OTAsNyBAQCB0cmFuc2Zvcm1FeHByUmVjdXJzZShQYXJzZVN0YXRlICpw c3RhdGUsIE5vZGUgKmV4cHIpCiAJCQl9CiAKIAkJY2FzZSBUX0Jvb2xFeHByOgotCQkJcmVz dWx0ID0gdHJhbnNmb3JtQm9vbEV4cHIocHN0YXRlLCAoQm9vbEV4cHIgKikgZXhwcik7CisJ CQlyZXN1bHQgPSAoTm9kZSAqKXRyYW5zZm9ybUJvb2xFeHByT3IocHN0YXRlLCAoQm9vbEV4 cHIgKikgZXhwcik7CiAJCQlicmVhazsKIAogCQljYXNlIFRfRnVuY0NhbGw6CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCmluZGV4IGI3NjRlZjY5OTgwLi5lMjQ5NTUyOWQy OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKQEAgLTEwNDgsNiArMTA0 OCwxNiBAQCBzdHJ1Y3QgY29uZmlnX2Jvb2wgQ29uZmlndXJlTmFtZXNCb29sW10gPQogCQl0 cnVlLAogCQlOVUxMLCBOVUxMLCBOVUxMCiAJfSwKKwl7CisJCXsiZW5hYmxlX29yX3RyYW5z Zm9ybWF0aW9uIiwgUEdDX1VTRVJTRVQsIFFVRVJZX1RVTklOR19PVEhFUiwKKwkJCWdldHRl eHRfbm9vcCgiVHJhbnNmb3JtIGEgc2VxdWVuY2Ugb2YgT1IgY2xhdXNlcyB0byBhbiBJTiBl eHByZXNzaW9uLiIpLAorCQkJZ2V0dGV4dF9ub29wKCJUaGUgcGxhbm5lciB3aWxsIHJlcGxh Y2UgY2xhdXNlcyBsaWtlICd4PWMxIE9SIHg9YzIgLi4iCisJCQkJCQkgInRvIHRoZSBjbGF1 c2UgJ3ggSU4gKGMxLGMyLC4uLiknIikKKwkJfSwKKwkJJmVuYWJsZV9vcl90cmFuc2Zvcm1h dGlvbiwKKwkJZmFsc2UsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9LAogCXsKIAkJLyoKIAkJ ICogTm90IGZvciBnZW5lcmFsIHVzZSAtLS0gdXNlZCBieSBTRVQgU0VTU0lPTiBBVVRIT1JJ WkFUSU9OIGFuZCBTRVQKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9l eHByLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfZXhwci5oCmluZGV4IDdkMzhjYTc1 ZjdiLi4zYTg3ZGUwMjg1OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNl X2V4cHIuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfZXhwci5oCkBAIC0xNyw2 ICsxNyw3IEBACiAKIC8qIEdVQyBwYXJhbWV0ZXJzICovCiBleHRlcm4gUEdETExJTVBPUlQg Ym9vbCBUcmFuc2Zvcm1fbnVsbF9lcXVhbHM7CitleHRlcm4gUEdETExJTVBPUlQgYm9vbCBl bmFibGVfb3JfdHJhbnNmb3JtYXRpb247CiAKIGV4dGVybiBOb2RlICp0cmFuc2Zvcm1FeHBy KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwciwgUGFyc2VFeHByS2luZCBleHByS2lu ZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2lu ZGV4Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dApp bmRleCBhY2ZkOWQxZjRmNy4uZGJjOGJjM2JlZDAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQKQEAgLTE4ODMsNiArMTg4MywxMjEgQEAgU0VM RUNUIGNvdW50KCopIEZST00gdGVuazEKICAgICAxMAogKDEgcm93KQogCitTRVQgZW5hYmxl X29yX3RyYW5zZm9ybWF0aW9uID0gb247CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qg KiBGUk9NIHRlbmsxCisgIFdIRVJFIHRob3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEg T1IgdGVudGhvdXMgPSAzIE9SIHRlbnRob3VzID0gNDIpOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJbmRleCBTY2FuIHVzaW5nIHRl bmsxX3Rob3VzX3RlbnRob3VzIG9uIHRlbmsxCisgICBJbmRleCBDb25kOiAoKHRob3VzYW5k ID0gNDIpIEFORCAodGVudGhvdXMgPSBBTlkgKCd7MSwzLDQyfSc6OmludGVnZXJbXSkpKQor KDIgcm93cykKKworU0VMRUNUICogRlJPTSB0ZW5rMQorICBXSEVSRSB0aG91c2FuZCA9IDQy IEFORCAodGVudGhvdXMgPSAxIE9SIHRlbnRob3VzID0gMyBPUiB0ZW50aG91cyA9IDQyKTsK KyB1bmlxdWUxIHwgdW5pcXVlMiB8IHR3byB8IGZvdXIgfCB0ZW4gfCB0d2VudHkgfCBodW5k cmVkIHwgdGhvdXNhbmQgfCB0d290aG91c2FuZCB8IGZpdmV0aG91cyB8IHRlbnRob3VzIHwg b2RkIHwgZXZlbiB8IHN0cmluZ3UxIHwgc3RyaW5ndTIgfCBzdHJpbmc0IAorLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLSstLS0tLS0rLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tKy0tLS0t LSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgICAgICA0MiB8ICAgIDU1MzAg fCAgIDAgfCAgICAyIHwgICAyIHwgICAgICAyIHwgICAgICA0MiB8ICAgICAgIDQyIHwgICAg ICAgICAgNDIgfCAgICAgICAgNDIgfCAgICAgICA0MiB8ICA4NCB8ICAgODUgfCBRQkFBQUEg ICB8IFNFSUFBQSAgIHwgT09PT3h4CisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikK K1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQg KHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0 ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEKKyAgICAgICAgIFJlY2hlY2sg Q29uZDogKChodW5kcmVkID0gNDIpIEFORCAodGhvdXNhbmQgPSBBTlkgKCd7NDIsOTl9Jzo6 aW50ZWdlcltdKSkpCisgICAgICAgICAtPiAgQml0bWFwQW5kCisgICAgICAgICAgICAgICAt PiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfaHVuZHJlZAorICAgICAgICAgICAgICAg ICAgICAgSW5kZXggQ29uZDogKGh1bmRyZWQgPSA0MikKKyAgICAgICAgICAgICAgIC0+ICBC aXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cworICAgICAgICAgICAg ICAgICAgICAgSW5kZXggQ29uZDogKHRob3VzYW5kID0gQU5ZICgnezQyLDk5fSc6OmludGVn ZXJbXSkpCisoOCByb3dzKQorCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVS RSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkpOwor IGNvdW50IAorLS0tLS0tLQorICAgIDEwCisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9G RikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIHRob3VzYW5kID0gNDIg QU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAzKSBPUiB0aG91c2FuZCA9IDQxOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdn cmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMQorICAgICAgICAgUmVj aGVjayBDb25kOiAoKCh0aG91c2FuZCA9IDQyKSBBTkQgKHRlbnRob3VzID0gQU5ZICgnezEs M30nOjppbnRlZ2VyW10pKSkgT1IgKHRob3VzYW5kID0gNDEpKQorICAgICAgICAgLT4gIEJp dG1hcE9yCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFf dGhvdXNfdGVudGhvdXMKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICgodGhv dXNhbmQgPSA0MikgQU5EICh0ZW50aG91cyA9IEFOWSAoJ3sxLDN9Jzo6aW50ZWdlcltdKSkp CisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNf dGVudGhvdXMKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh0aG91c2FuZCA9 IDQxKQorKDggcm93cykKKworU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUg dGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3VzID0gMSBPUiB0ZW50aG91cyA9IDMpIE9SIHRo b3VzYW5kID0gNDE7CisgY291bnQgCistLS0tLS0tCisgICAgMTAKKygxIHJvdykKKworRVhQ TEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUg aHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5IE9SIHRl bnRob3VzIDwgMikgT1IgdGhvdXNhbmQgPSA0MTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24g dGVuazEKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKCgoaHVuZHJlZCA9IDQyKSBBTkQgKCh0 ZW50aG91cyA8IDIpIE9SICh0aG91c2FuZCA9IEFOWSAoJ3s0Miw5OX0nOjppbnRlZ2VyW10p KSkpIE9SICh0aG91c2FuZCA9IDQxKSkKKyAgICAgICAgIC0+ICBCaXRtYXBPcgorICAgICAg ICAgICAgICAgLT4gIEJpdG1hcEFuZAorICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1h cCBJbmRleCBTY2FuIG9uIHRlbmsxX2h1bmRyZWQKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIEluZGV4IENvbmQ6IChodW5kcmVkID0gNDIpCisgICAgICAgICAgICAgICAgICAgICAt PiAgQml0bWFwT3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5k ZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSW5kZXggQ29uZDogKHRlbnRob3VzIDwgMikKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50 aG91cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHRo b3VzYW5kID0gQU5ZICgnezQyLDk5fSc6OmludGVnZXJbXSkpCisgICAgICAgICAgICAgICAt PiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKKyAgICAgICAg ICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh0aG91c2FuZCA9IDQxKQorKDE0IHJvd3MpCisK K1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQg KHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSBPUiB0ZW50aG91cyA8IDIpIE9SIHRo b3VzYW5kID0gNDE7CisgY291bnQgCistLS0tLS0tCisgICAgMjAKKygxIHJvdykKKworRVhQ TEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUg aHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDQxIE9SIHRo b3VzYW5kID0gOTkgQU5EIHRlbnRob3VzID0gMik7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4g b24gdGVuazEKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChodW5kcmVkID0gNDIpIEFORCAo KCh0aG91c2FuZCA9IDk5KSBBTkQgKHRlbnRob3VzID0gMikpIE9SICh0aG91c2FuZCA9IEFO WSAoJ3s0Miw0MX0nOjppbnRlZ2VyW10pKSkpCisgICAgICAgICAtPiAgQml0bWFwQW5kCisg ICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfaHVuZHJlZAor ICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGh1bmRyZWQgPSA0MikKKyAgICAg ICAgICAgICAgIC0+ICBCaXRtYXBPcgorICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1h cCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCisgICAgICAgICAgICAgICAg ICAgICAgICAgICBJbmRleCBDb25kOiAoKHRob3VzYW5kID0gOTkpIEFORCAodGVudGhvdXMg PSAyKSkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0 ZW5rMV90aG91c190ZW50aG91cworICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXgg Q29uZDogKHRob3VzYW5kID0gQU5ZICgnezQyLDQxfSc6OmludGVnZXJbXSkpCisoMTEgcm93 cykKKworU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQy IEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDQxIE9SIHRob3VzYW5kID0gOTkg QU5EIHRlbnRob3VzID0gMik7CisgY291bnQgCistLS0tLS0tCisgICAgMTAKKygxIHJvdykK KworUkVTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uOwogLS0KIC0tIENoZWNrIGJlaGF2 aW9yIHdpdGggZHVwbGljYXRlIGluZGV4IGNvbHVtbiBjb250ZW50cwogLS0KZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ3VjLm91dCBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvZ3VjLm91dAppbmRleCAxMjdjOTUzMjk3Ni4uMGYyYjFiMTYyMDAgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ3VjLm91dAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2d1Yy5vdXQKQEAgLTg2MSw3ICs4NjEsOCBAQCBTRUxF Q1QgbmFtZSBGUk9NIHRhYl9zZXR0aW5nc19mbGFncwogICAgICAgICAgICBuYW1lICAgICAg ICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBkZWZhdWx0X3N0YXRpc3Rp Y3NfdGFyZ2V0Ci0oMSByb3cpCisgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uCisoMiByb3dz KQogCiAtLSBSdW50aW1lLWNvbXB1dGVkIEdVQ3Mgc2hvdWxkIGJlIHBhcnQgb2YgdGhlIHBy ZXNldCBjYXRlZ29yeS4KIFNFTEVDVCBuYW1lIEZST00gdGFiX3NldHRpbmdzX2ZsYWdzCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4ub3V0IGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9qb2luLm91dAppbmRleCAyYzczMjcwMTQzYi4uNWFmMmNm MDkxMDcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2luLm91dApAQCAtNDIzMyw2ICs0 MjMzLDU2IEBAIHNlbGVjdCAqIGZyb20gdGVuazEgYSBqb2luIHRlbmsxIGIgb24KICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUyID0gNykKICgxOSBy b3dzKQogCitTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uID0gb247CitleHBsYWluIChj b3N0cyBvZmYpCitzZWxlY3QgKiBmcm9tIHRlbmsxIGEgam9pbiB0ZW5rMSBiIG9uCisgIChh LnVuaXF1ZTEgPSAxIGFuZCBiLnVuaXF1ZTEgPSAyKSBvcgorICAoKGEudW5pcXVlMiA9IDMg b3IgYS51bmlxdWUyID0gNykgYW5kIGIuaHVuZHJlZCA9IDQpOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBOZXN0ZWQgTG9vcAorICAgSm9pbiBGaWx0ZXI6ICgoKGEudW5pcXVl MSA9IDEpIEFORCAoYi51bmlxdWUxID0gMikpIE9SICgoYS51bmlxdWUyID0gQU5ZICgnezMs N30nOjppbnRlZ2VyW10pKSBBTkQgKGIuaHVuZHJlZCA9IDQpKSkKKyAgIC0+ICBCaXRtYXAg SGVhcCBTY2FuIG9uIHRlbmsxIGIKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKCh1bmlxdWUx ID0gMikgT1IgKGh1bmRyZWQgPSA0KSkKKyAgICAgICAgIC0+ICBCaXRtYXBPcgorICAgICAg ICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTEKKyAgICAg ICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gMikKKyAgICAgICAgICAg ICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV9odW5kcmVkCisgICAgICAgICAg ICAgICAgICAgICBJbmRleCBDb25kOiAoaHVuZHJlZCA9IDQpCisgICAtPiAgTWF0ZXJpYWxp emUKKyAgICAgICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxIGEKKyAgICAgICAg ICAgICAgIFJlY2hlY2sgQ29uZDogKCh1bmlxdWUxID0gMSkgT1IgKHVuaXF1ZTIgPSBBTlkg KCd7Myw3fSc6OmludGVnZXJbXSkpKQorICAgICAgICAgICAgICAgLT4gIEJpdG1hcE9yCisg ICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5p cXVlMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTEg PSAxKQorICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRl bmsxX3VuaXF1ZTIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1 bmlxdWUyID0gQU5ZICgnezMsN30nOjppbnRlZ2VyW10pKQorKDE3IHJvd3MpCisKK2V4cGxh aW4gKGNvc3RzIG9mZikKK3NlbGVjdCAqIGZyb20gdGVuazEgYSBqb2luIHRlbmsxIGIgb24K KyAgKGEudW5pcXVlMSA8IDIwIG9yIGEudW5pcXVlMSA9IDMgb3IgYS51bmlxdWUxID0gMSBh bmQgYi51bmlxdWUxID0gMikgb3IKKyAgKChhLnVuaXF1ZTIgPSAzIG9yIGEudW5pcXVlMiA9 IDcpIGFuZCBiLmh1bmRyZWQgPSA0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgTmVzdGVkIExvb3AKKyAgIEpvaW4gRmlsdGVyOiAo KGEudW5pcXVlMSA8IDIwKSBPUiAoKGEudW5pcXVlMSA9IDEpIEFORCAoYi51bmlxdWUxID0g MikpIE9SICgoYS51bmlxdWUyID0gQU5ZICgnezMsN30nOjppbnRlZ2VyW10pKSBBTkQgKGIu aHVuZHJlZCA9IDQpKSBPUiAoYS51bmlxdWUxID0gMykpCisgICAtPiAgU2VxIFNjYW4gb24g dGVuazEgYgorICAgLT4gIE1hdGVyaWFsaXplCisgICAgICAgICAtPiAgQml0bWFwIEhlYXAg U2NhbiBvbiB0ZW5rMSBhCisgICAgICAgICAgICAgICBSZWNoZWNrIENvbmQ6ICgodW5pcXVl MSA8IDIwKSBPUiAodW5pcXVlMSA9IDEpIE9SICh1bmlxdWUyID0gQU5ZICgnezMsN30nOjpp bnRlZ2VyW10pKSBPUiAodW5pcXVlMSA9IDMpKQorICAgICAgICAgICAgICAgLT4gIEJpdG1h cE9yCisgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVu azFfdW5pcXVlMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVu aXF1ZTEgPCAyMCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2Nh biBvbiB0ZW5rMV91bmlxdWUxCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBD b25kOiAodW5pcXVlMSA9IDEpCisgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIElu ZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMgorICAgICAgICAgICAgICAgICAgICAgICAgICAg SW5kZXggQ29uZDogKHVuaXF1ZTIgPSBBTlkgKCd7Myw3fSc6OmludGVnZXJbXSkpCisgICAg ICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVl MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTEgPSAz KQorKDE1IHJvd3MpCisKK1JFU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbjsKIC0tCiAt LSB0ZXN0IHBsYWNlbWVudCBvZiBtb3ZhYmxlIHF1YWxzIGluIGEgcGFyYW1ldGVyaXplZCBq b2luIHRyZWUKIC0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Bh cnRpdGlvbl9wcnVuZS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlv bl9wcnVuZS5vdXQKaW5kZXggOWE0YzQ4YzA1NTYuLjgwNGZlYTlmMzRjIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9wcnVuZS5vdXQKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fcHJ1bmUub3V0CkBAIC0xMDEs NiArMTAxLDI4IEBAIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVy ZSBhIGlzIG5vdCBudWxsIGFuZCAoYSA9ICdhJyBvciBhID0gJ2MnCiAgICAgICAgICBGaWx0 ZXI6ICgoYSBJUyBOT1QgTlVMTCkgQU5EICgoYSA9ICdhJzo6YnBjaGFyKSBPUiAoYSA9ICdj Jzo6YnBjaGFyKSkpCiAoNSByb3dzKQogCitTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9u ID0gb247CitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSA9 ICdhJyBvciBhID0gJ2MnOworICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgQXBwZW5kCisgICAtPiAgU2VxIFNjYW4gb24gbHBfYWQgbHBfMQorICAgICAg ICAgRmlsdGVyOiAoYSA9IEFOWSAoJ3thLGN9Jzo6YnBjaGFyW10pKQorICAgLT4gIFNlcSBT Y2FuIG9uIGxwX2JjIGxwXzIKKyAgICAgICAgIEZpbHRlcjogKGEgPSBBTlkgKCd7YSxjfSc6 OmJwY2hhcltdKSkKKyg1IHJvd3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICog ZnJvbSBscCB3aGVyZSBhIGlzIG5vdCBudWxsIGFuZCAoYSA9ICdhJyBvciBhID0gJ2MnKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQXBwZW5kCisgICAtPiAgU2Vx IFNjYW4gb24gbHBfYWQgbHBfMQorICAgICAgICAgRmlsdGVyOiAoKGEgSVMgTk9UIE5VTEwp IEFORCAoYSA9IEFOWSAoJ3thLGN9Jzo6YnBjaGFyW10pKSkKKyAgIC0+ICBTZXEgU2NhbiBv biBscF9iYyBscF8yCisgICAgICAgICBGaWx0ZXI6ICgoYSBJUyBOT1QgTlVMTCkgQU5EIChh ID0gQU5ZICgne2EsY30nOjpicGNoYXJbXSkpKQorKDUgcm93cykKKworUkVTRVQgZW5hYmxl X29yX3RyYW5zZm9ybWF0aW9uOwogZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9t IGxwIHdoZXJlIGEgPD4gJ2cnOwogICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTY3MSw2ICs2 OTMsMTQwIEBAIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUg KGEgPSAxIGFuZCBhID0gMykgb3IgKGEgPiAxIGFuZCBhID0KICAgICAgICAgIEZpbHRlcjog KCgoYSA9IDEpIEFORCAoYSA9IDMpKSBPUiAoKGEgPiAxKSBBTkQgKGEgPSAxNSkpKQogKDEx IHJvd3MpCiAKK1NFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gPSBvbjsKK2V4cGxhaW4g KGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA9IDEgb3IgYSA9IDc7Cisg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHJscDIgcmxw CisgICBGaWx0ZXI6IChhID0gQU5ZICgnezEsN30nOjppbnRlZ2VyW10pKQorKDIgcm93cykK KworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0gMSBv ciBiID0gJ2FiJzsKKyAgICAgICAgUVVFUlkgUExBTiAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFJlc3VsdAorICAgT25lLVRpbWUgRmlsdGVyOiBmYWxzZQorKDIg cm93cykKKworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBh ID4gMjAgYW5kIGEgPCAyNzsKKyAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFw cGVuZAorICAgLT4gIFNlcSBTY2FuIG9uIHJscDRfMSBybHBfMQorICAgICAgICAgRmlsdGVy OiAoKGEgPiAyMCkgQU5EIChhIDwgMjcpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDRfMiBy bHBfMgorICAgICAgICAgRmlsdGVyOiAoKGEgPiAyMCkgQU5EIChhIDwgMjcpKQorKDUgcm93 cykKKworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0g Mjk7CisgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHJscDRfZGVmYXVsdCBybHAKKyAgIEZpbHRl cjogKGEgPSAyOSkKKygyIHJvd3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICog ZnJvbSBybHAgd2hlcmUgYSA+PSAyOTsKKyAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgQXBwZW5kCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNF9kZWZhdWx0IHJs cF8xCisgICAgICAgICBGaWx0ZXI6IChhID49IDI5KQorICAgLT4gIFNlcSBTY2FuIG9uIHJs cDVfMSBybHBfMgorICAgICAgICAgRmlsdGVyOiAoYSA+PSAyOSkKKyAgIC0+ICBTZXEgU2Nh biBvbiBybHA1X2RlZmF1bHQgcmxwXzMKKyAgICAgICAgIEZpbHRlcjogKGEgPj0gMjkpCisg ICAtPiAgU2VxIFNjYW4gb24gcmxwX2RlZmF1bHRfMzAgcmxwXzQKKyAgICAgICAgIEZpbHRl cjogKGEgPj0gMjkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwX2RlZmF1bHRfZGVmYXVsdCBy bHBfNQorICAgICAgICAgRmlsdGVyOiAoYSA+PSAyOSkKKygxMSByb3dzKQorCitleHBsYWlu IChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPCAxIG9yIChhID4gMjAg YW5kIGEgPCAyNSk7CisgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIEFwcGVuZAorICAgLT4gIFNlcSBTY2FuIG9uIHJscDEgcmxw XzEKKyAgICAgICAgIEZpbHRlcjogKChhIDwgMSkgT1IgKChhID4gMjApIEFORCAoYSA8IDI1 KSkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNF8xIHJscF8yCisgICAgICAgICBGaWx0ZXI6 ICgoYSA8IDEpIE9SICgoYSA+IDIwKSBBTkQgKGEgPCAyNSkpKQorKDUgcm93cykKKworZXhw bGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0gMjAgb3IgYSA9 IDQwOworICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgQXBwZW5kCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNF8xIHJscF8xCisgICAgICAgICBG aWx0ZXI6IChhID0gQU5ZICgnezIwLDQwfSc6OmludGVnZXJbXSkpCisgICAtPiAgU2VxIFNj YW4gb24gcmxwNV9kZWZhdWx0IHJscF8yCisgICAgICAgICBGaWx0ZXI6IChhID0gQU5ZICgn ezIwLDQwfSc6OmludGVnZXJbXSkpCisoNSByb3dzKQorCitleHBsYWluIChjb3N0cyBvZmYp IHNlbGVjdCAqIGZyb20gcmxwMyB3aGVyZSBhID0gMjA7ICAgLyogZW1wdHkgKi8KKyAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFJl c3VsdAorICAgT25lLVRpbWUgRmlsdGVyOiBmYWxzZQorKDIgcm93cykKKworZXhwbGFpbiAo Y29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID4gMSBhbmQgYSA9IDEwOwkv KiBvbmx5IGRlZmF1bHQgKi8KKyAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBybHBf ZGVmYXVsdF8xMCBybHAKKyAgIEZpbHRlcjogKChhID4gMSkgQU5EIChhID0gMTApKQorKDIg cm93cykKKworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBh ID4gMSBhbmQgYSA+PTE1OwkvKiBybHAzIG9ud2FyZHMsIGluY2x1ZGluZyBkZWZhdWx0ICov CisgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQXBwZW5kCisg ICAtPiAgU2VxIFNjYW4gb24gcmxwM2FiY2QgcmxwXzEKKyAgICAgICAgIEZpbHRlcjogKChh ID4gMSkgQU5EIChhID49IDE1KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHAzZWZnaCBybHBf MgorICAgICAgICAgRmlsdGVyOiAoKGEgPiAxKSBBTkQgKGEgPj0gMTUpKQorICAgLT4gIFNl cSBTY2FuIG9uIHJscDNudWxseHkgcmxwXzMKKyAgICAgICAgIEZpbHRlcjogKChhID4gMSkg QU5EIChhID49IDE1KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHAzX2RlZmF1bHQgcmxwXzQK KyAgICAgICAgIEZpbHRlcjogKChhID4gMSkgQU5EIChhID49IDE1KSkKKyAgIC0+ICBTZXEg U2NhbiBvbiBybHA0XzEgcmxwXzUKKyAgICAgICAgIEZpbHRlcjogKChhID4gMSkgQU5EIChh ID49IDE1KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA0XzIgcmxwXzYKKyAgICAgICAgIEZp bHRlcjogKChhID4gMSkgQU5EIChhID49IDE1KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA0 X2RlZmF1bHQgcmxwXzcKKyAgICAgICAgIEZpbHRlcjogKChhID4gMSkgQU5EIChhID49IDE1 KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA1XzEgcmxwXzgKKyAgICAgICAgIEZpbHRlcjog KChhID4gMSkgQU5EIChhID49IDE1KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA1X2RlZmF1 bHQgcmxwXzkKKyAgICAgICAgIEZpbHRlcjogKChhID4gMSkgQU5EIChhID49IDE1KSkKKyAg IC0+ICBTZXEgU2NhbiBvbiBybHBfZGVmYXVsdF8zMCBybHBfMTAKKyAgICAgICAgIEZpbHRl cjogKChhID4gMSkgQU5EIChhID49IDE1KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHBfZGVm YXVsdF9kZWZhdWx0IHJscF8xMQorICAgICAgICAgRmlsdGVyOiAoKGEgPiAxKSBBTkQgKGEg Pj0gMTUpKQorKDIzIHJvd3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJv bSBybHAgd2hlcmUgYSA9IDEgYW5kIGEgPSAzOwkvKiBlbXB0eSAqLworICAgICAgICBRVUVS WSBQTEFOICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUmVzdWx0Cisg ICBPbmUtVGltZSBGaWx0ZXI6IGZhbHNlCisoMiByb3dzKQorCitleHBsYWluIChjb3N0cyBv ZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIChhID0gMSBhbmQgYSA9IDMpIG9yIChhID4g MSBhbmQgYSA9IDE1KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBcHBlbmQK KyAgIC0+ICBTZXEgU2NhbiBvbiBybHAyIHJscF8xCisgICAgICAgICBGaWx0ZXI6ICgoKGEg PSAxKSBBTkQgKGEgPSAzKSkgT1IgKChhID4gMSkgQU5EIChhID0gMTUpKSkKKyAgIC0+ICBT ZXEgU2NhbiBvbiBybHAzYWJjZCBybHBfMgorICAgICAgICAgRmlsdGVyOiAoKChhID0gMSkg QU5EIChhID0gMykpIE9SICgoYSA+IDEpIEFORCAoYSA9IDE1KSkpCisgICAtPiAgU2VxIFNj YW4gb24gcmxwM2VmZ2ggcmxwXzMKKyAgICAgICAgIEZpbHRlcjogKCgoYSA9IDEpIEFORCAo YSA9IDMpKSBPUiAoKGEgPiAxKSBBTkQgKGEgPSAxNSkpKQorICAgLT4gIFNlcSBTY2FuIG9u IHJscDNudWxseHkgcmxwXzQKKyAgICAgICAgIEZpbHRlcjogKCgoYSA9IDEpIEFORCAoYSA9 IDMpKSBPUiAoKGEgPiAxKSBBTkQgKGEgPSAxNSkpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJs cDNfZGVmYXVsdCBybHBfNQorICAgICAgICAgRmlsdGVyOiAoKChhID0gMSkgQU5EIChhID0g MykpIE9SICgoYSA+IDEpIEFORCAoYSA9IDE1KSkpCisoMTEgcm93cykKKworUkVTRVQgZW5h YmxlX29yX3RyYW5zZm9ybWF0aW9uOwogLS0gbXVsdGktY29sdW1uIGtleXMKIGNyZWF0ZSB0 YWJsZSBtYzNwIChhIGludCwgYiBpbnQsIGMgaW50KSBwYXJ0aXRpb24gYnkgcmFuZ2UgKGEs IGFicyhiKSwgYyk7CiBjcmVhdGUgdGFibGUgbWMzcF9kZWZhdWx0IHBhcnRpdGlvbiBvZiBt YzNwIGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5 c3ZpZXdzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0Cmlu ZGV4IDI3MTMxM2ViZjg2Li41NjZmNTFkZjQyOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9zeXN2aWV3cy5vdXQKQEAgLTEyMyw2ICsxMjMsNyBAQCBzZWxlY3QgbmFtZSwgc2V0 dGluZyBmcm9tIHBnX3NldHRpbmdzIHdoZXJlIG5hbWUgbGlrZSAnZW5hYmxlJSc7CiAgZW5h YmxlX21lbW9pemUgICAgICAgICAgICAgICAgIHwgb24KICBlbmFibGVfbWVyZ2Vqb2luICAg ICAgICAgICAgICAgfCBvbgogIGVuYWJsZV9uZXN0bG9vcCAgICAgICAgICAgICAgICB8IG9u CisgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uICAgICAgIHwgb2ZmCiAgZW5hYmxlX3BhcmFs bGVsX2FwcGVuZCAgICAgICAgIHwgb24KICBlbmFibGVfcGFyYWxsZWxfaGFzaCAgICAgICAg ICAgfCBvbgogIGVuYWJsZV9wYXJ0aXRpb25fcHJ1bmluZyAgICAgICB8IG9uCkBAIC0xMzMs NyArMTM0LDcgQEAgc2VsZWN0IG5hbWUsIHNldHRpbmcgZnJvbSBwZ19zZXR0aW5ncyB3aGVy ZSBuYW1lIGxpa2UgJ2VuYWJsZSUnOwogIGVuYWJsZV9zZXFzY2FuICAgICAgICAgICAgICAg ICB8IG9uCiAgZW5hYmxlX3NvcnQgICAgICAgICAgICAgICAgICAgIHwgb24KICBlbmFibGVf dGlkc2NhbiAgICAgICAgICAgICAgICAgfCBvbgotKDIyIHJvd3MpCisoMjMgcm93cykKIAog LS0gVGhlcmUgYXJlIGFsd2F5cyB3YWl0IGV2ZW50IGRlc2NyaXB0aW9ucyBmb3IgdmFyaW91 cyB0eXBlcy4KIHNlbGVjdCB0eXBlLCBjb3VudCgqKSA+IDAgYXMgb2sgRlJPTSBwZ193YWl0 X2V2ZW50cwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90aWRzY2Fu Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdGlkc2Nhbi5vdXQKaW5kZXggZjEz M2I1YTRhYzcuLmJlNGQ4ODIwMGI2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3RpZHNjYW4ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdGlk c2Nhbi5vdXQKQEAgLTU2LDYgKzU2LDIzIEBAIFNFTEVDVCBjdGlkLCAqIEZST00gdGlkc2Nh biBXSEVSRSBjdGlkID0gJygwLDIpJyBPUiAnKDAsMSknID0gY3RpZDsKICAoMCwyKSB8ICAy CiAoMiByb3dzKQogCitTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uID0gb247CitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY3RpZCwgKiBGUk9NIHRpZHNjYW4gV0hFUkUgY3Rp ZCA9ICcoMCwyKScgT1IgJygwLDEpJyA9IGN0aWQ7CisgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgVGlkIFNjYW4gb24gdGlk c2NhbgorICAgVElEIENvbmQ6IChjdGlkID0gQU5ZICgneyIoMCwyKSIsIigwLDEpIn0nOjp0 aWRbXSkpCisoMiByb3dzKQorCitTRUxFQ1QgY3RpZCwgKiBGUk9NIHRpZHNjYW4gV0hFUkUg Y3RpZCA9ICcoMCwyKScgT1IgJygwLDEpJyA9IGN0aWQ7CisgY3RpZCAgfCBpZCAKKy0tLS0t LS0rLS0tLQorICgwLDEpIHwgIDEKKyAoMCwyKSB8ICAyCisoMiByb3dzKQorCitSRVNFVCBl bmFibGVfb3JfdHJhbnNmb3JtYXRpb247CiAtLSBjdGlkID0gU2NhbGFyQXJyYXlPcCAtIGlt cGxlbWVudGVkIGFzIHRpZHNjYW4KIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCBjdGlk LCAqIEZST00gdGlkc2NhbiBXSEVSRSBjdGlkID0gQU5ZKEFSUkFZWycoMCwxKScsICcoMCwy KSddOjp0aWRbXSk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVf aW5kZXguc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbAppbmRl eCBkNDljZTlmMzAwNy4uNDhiYjFiYzBhMGEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3Jl YXRlX2luZGV4LnNxbApAQCAtNzM3LDYgKzczNywzOCBAQCBTRUxFQ1QgY291bnQoKikgRlJP TSB0ZW5rMQogU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKICAgV0hFUkUgaHVuZHJlZCA9 IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5KTsKIAorU0VUIGVuYWJs ZV9vcl90cmFuc2Zvcm1hdGlvbiA9IG9uOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNU ICogRlJPTSB0ZW5rMQorICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMgPSAx IE9SIHRlbnRob3VzID0gMyBPUiB0ZW50aG91cyA9IDQyKTsKK1NFTEVDVCAqIEZST00gdGVu azEKKyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3VzID0gMSBPUiB0ZW50aG91 cyA9IDMgT1IgdGVudGhvdXMgPSA0Mik7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVD VCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3Vz YW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSk7CitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5r MQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5k ID0gOTkpOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0 ZW5rMQorICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMgPSAxIE9SIHRlbnRo b3VzID0gMykgT1IgdGhvdXNhbmQgPSA0MTsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsx CisgIFdIRVJFIHRob3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMg PSAzKSBPUiB0aG91c2FuZCA9IDQxOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qg Y291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2Fu ZCA9IDQyIE9SIHRob3VzYW5kID0gOTkgT1IgdGVudGhvdXMgPCAyKSBPUiB0aG91c2FuZCA9 IDQxOworU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQy IEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5IE9SIHRlbnRob3VzIDwgMikg T1IgdGhvdXNhbmQgPSA0MTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50 KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0 MiBPUiB0aG91c2FuZCA9IDQxIE9SIHRob3VzYW5kID0gOTkgQU5EIHRlbnRob3VzID0gMik7 CitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5E ICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gNDEgT1IgdGhvdXNhbmQgPSA5OSBBTkQg dGVudGhvdXMgPSAyKTsKK1JFU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbjsKKwogLS0K IC0tIENoZWNrIGJlaGF2aW9yIHdpdGggZHVwbGljYXRlIGluZGV4IGNvbHVtbiBjb250ZW50 cwogLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW4uc3FsIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvam9pbi5zcWwKaW5kZXggOGE4YTYzYmQyZjEuLjU1ZDdlMmFl N2Q2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qb2luLnNxbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9qb2luLnNxbApAQCAtMTQwOCw2ICsxNDA4LDE2IEBAIGV4 cGxhaW4gKGNvc3RzIG9mZikKIHNlbGVjdCAqIGZyb20gdGVuazEgYSBqb2luIHRlbmsxIGIg b24KICAgKGEudW5pcXVlMSA9IDEgYW5kIGIudW5pcXVlMSA9IDIpIG9yCiAgICgoYS51bmlx dWUyID0gMyBvciBhLnVuaXF1ZTIgPSA3KSBhbmQgYi5odW5kcmVkID0gNCk7CitTRVQgZW5h YmxlX29yX3RyYW5zZm9ybWF0aW9uID0gb247CitleHBsYWluIChjb3N0cyBvZmYpCitzZWxl Y3QgKiBmcm9tIHRlbmsxIGEgam9pbiB0ZW5rMSBiIG9uCisgIChhLnVuaXF1ZTEgPSAxIGFu ZCBiLnVuaXF1ZTEgPSAyKSBvcgorICAoKGEudW5pcXVlMiA9IDMgb3IgYS51bmlxdWUyID0g NykgYW5kIGIuaHVuZHJlZCA9IDQpOworZXhwbGFpbiAoY29zdHMgb2ZmKQorc2VsZWN0ICog ZnJvbSB0ZW5rMSBhIGpvaW4gdGVuazEgYiBvbgorICAoYS51bmlxdWUxIDwgMjAgb3IgYS51 bmlxdWUxID0gMyBvciBhLnVuaXF1ZTEgPSAxIGFuZCBiLnVuaXF1ZTEgPSAyKSBvcgorICAo KGEudW5pcXVlMiA9IDMgb3IgYS51bmlxdWUyID0gNykgYW5kIGIuaHVuZHJlZCA9IDQpOwor UkVTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uOwogCiAtLQogLS0gdGVzdCBwbGFjZW1l bnQgb2YgbW92YWJsZSBxdWFscyBpbiBhIHBhcmFtZXRlcml6ZWQgam9pbiB0cmVlCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fcHJ1bmUuc3FsIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3BydW5lLnNxbAppbmRleCA3YmYzOTIwODI3 Zi4uMWUyNzBhZTljMDYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRp dGlvbl9wcnVuZS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3By dW5lLnNxbApAQCAtMjEsNiArMjEsMTIgQEAgZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3Qg KiBmcm9tIGxwIHdoZXJlIGEgaXMgbm90IG51bGw7CiBleHBsYWluIChjb3N0cyBvZmYpIHNl bGVjdCAqIGZyb20gbHAgd2hlcmUgYSBpcyBudWxsOwogZXhwbGFpbiAoY29zdHMgb2ZmKSBz ZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgPSAnYScgb3IgYSA9ICdjJzsKIGV4cGxhaW4gKGNv c3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIGlzIG5vdCBudWxsIGFuZCAoYSA9 ICdhJyBvciBhID0gJ2MnKTsKKworU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbiA9IG9u OworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgPSAnYScg b3IgYSA9ICdjJzsKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVy ZSBhIGlzIG5vdCBudWxsIGFuZCAoYSA9ICdhJyBvciBhID0gJ2MnKTsKK1JFU0VUIGVuYWJs ZV9vcl90cmFuc2Zvcm1hdGlvbjsKKwogZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBm cm9tIGxwIHdoZXJlIGEgPD4gJ2cnOwogZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBm cm9tIGxwIHdoZXJlIGEgPD4gJ2EnIGFuZCBhIDw+ICdkJzsKIGV4cGxhaW4gKGNvc3RzIG9m Zikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIG5vdCBpbiAoJ2EnLCAnZCcpOwpAQCAtOTks NiArMTA1LDIyIEBAIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hl cmUgYSA+IDEgYW5kIGEgPj0xNTsJLyogcmxwMyBvbndhcmRzLCBpCiBleHBsYWluIChjb3N0 cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPSAxIGFuZCBhID0gMzsJLyogZW1w dHkgKi8KIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgKGEg PSAxIGFuZCBhID0gMykgb3IgKGEgPiAxIGFuZCBhID0gMTUpOwogCisKK1NFVCBlbmFibGVf b3JfdHJhbnNmb3JtYXRpb24gPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICog ZnJvbSBybHAgd2hlcmUgYSA9IDEgb3IgYSA9IDc7CitleHBsYWluIChjb3N0cyBvZmYpIHNl bGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPSAxIG9yIGIgPSAnYWInOworZXhwbGFpbiAoY29z dHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID4gMjAgYW5kIGEgPCAyNzsKK2V4 cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA9IDI5OworZXhw bGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID49IDI5OworZXhw bGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhIDwgMSBvciAoYSA+ IDIwIGFuZCBhIDwgMjUpOworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJs cCB3aGVyZSBhID0gMjAgb3IgYSA9IDQwOworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3Qg KiBmcm9tIHJscDMgd2hlcmUgYSA9IDIwOyAgIC8qIGVtcHR5ICovCitleHBsYWluIChjb3N0 cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPiAxIGFuZCBhID0gMTA7CS8qIG9u bHkgZGVmYXVsdCAqLworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3 aGVyZSBhID4gMSBhbmQgYSA+PTE1OwkvKiBybHAzIG9ud2FyZHMsIGluY2x1ZGluZyBkZWZh dWx0ICovCitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEg PSAxIGFuZCBhID0gMzsJLyogZW1wdHkgKi8KK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0 ICogZnJvbSBybHAgd2hlcmUgKGEgPSAxIGFuZCBhID0gMykgb3IgKGEgPiAxIGFuZCBhID0g MTUpOworUkVTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uOworCiAtLSBtdWx0aS1jb2x1 bW4ga2V5cwogY3JlYXRlIHRhYmxlIG1jM3AgKGEgaW50LCBiIGludCwgYyBpbnQpIHBhcnRp dGlvbiBieSByYW5nZSAoYSwgYWJzKGIpLCBjKTsKIGNyZWF0ZSB0YWJsZSBtYzNwX2RlZmF1 bHQgcGFydGl0aW9uIG9mIG1jM3AgZGVmYXVsdDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3RpZHNjYW4uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdGlkc2Nhbi5z cWwKaW5kZXggMzEzZTBmYjliNjcuLjA0OTliZWRiOWViIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC90aWRzY2FuLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC90 aWRzY2FuLnNxbApAQCAtMjIsNiArMjIsMTIgQEAgRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VM RUNUIGN0aWQsICogRlJPTSB0aWRzY2FuIFdIRVJFIGN0aWQgPSAnKDAsMiknIE9SICcoMCwx KScgPSBjdGlkOwogU0VMRUNUIGN0aWQsICogRlJPTSB0aWRzY2FuIFdIRVJFIGN0aWQgPSAn KDAsMiknIE9SICcoMCwxKScgPSBjdGlkOwogCitTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0 aW9uID0gb247CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY3RpZCwgKiBGUk9NIHRp ZHNjYW4gV0hFUkUgY3RpZCA9ICcoMCwyKScgT1IgJygwLDEpJyA9IGN0aWQ7CitTRUxFQ1Qg Y3RpZCwgKiBGUk9NIHRpZHNjYW4gV0hFUkUgY3RpZCA9ICcoMCwyKScgT1IgJygwLDEpJyA9 IGN0aWQ7CitSRVNFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb247CisKIC0tIGN0aWQgPSBT Y2FsYXJBcnJheU9wIC0gaW1wbGVtZW50ZWQgYXMgdGlkc2NhbgogRVhQTEFJTiAoQ09TVFMg T0ZGKQogU0VMRUNUIGN0aWQsICogRlJPTSB0aWRzY2FuIFdIRVJFIGN0aWQgPSBBTlkoQVJS QVlbJygwLDEpJywgJygwLDIpJ106OnRpZFtdKTsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QKaW5kZXggZGJhMzQ5OGExM2UuLmM5MDA0MjUwYTVmIDEwMDY0NAotLS0gYS9zcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdApAQCAtMTY0MSw2ICsxNjQxLDcgQEAgTnVtZXJpY1ZhcgogT01fdWludDMy CiBPUAogT1NBUGVyR3JvdXBTdGF0ZQorT3JDbGF1c2VHcm91cEVudHJ5CiBPU0FQZXJRdWVy eVN0YXRlCiBPU0luZm8KIE9TU0xDaXBoZXIKLS0gCjIuMzQuMQoK --------------N0aTNekncQIFu0h7ROPj40Aw Content-Type: text/plain; charset=UTF-8; name="v9-0001-Replace-OR-clause-to_ANY.diff.txt" Content-Disposition: attachment; filename="v9-0001-Replace-OR-clause-to_ANY.diff.txt" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IDQ2MjEyYTc3YzY0Li4yOTA0MjIwMDVh MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYworKysgYi9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCkBAIC0xMDIsNyArMTAyLDcgQEAgc3Rh dGljIE5vZGUgKm1ha2VfbnVsbHRlc3RfZnJvbV9kaXN0aW5jdChQYXJzZVN0YXRlICpwc3Rh dGUsCiAJCQkJCQkJCQkJIEFfRXhwciAqZGlzdGluY3RhLCBOb2RlICphcmcpOwogdHlwZWRl ZiBzdHJ1Y3QgT3JDbGF1c2VHcm91cEVudHJ5CiB7Ci0JY2hhcgkJICAgKmhhc2hfbGVmdHZh cl9rZXk7CisJaW50MzIJCQloYXNoX2xlZnR2YXJfa2V5OwogCiAJTm9kZQkJICAgKm5vZGU7 CiAJTGlzdAkJICAgKmNvbnN0czsKQEAgLTExMSw2MyArMTExLDQ3IEBAIHR5cGVkZWYgc3Ry dWN0IE9yQ2xhdXNlR3JvdXBFbnRyeQogCU5vZGUgCQkgICAqZXhwcjsKIH0gT3JDbGF1c2VH cm91cEVudHJ5OwogCi1zdGF0aWMgaW50Ci1vcl9uYW1lX21hdGNoKGNvbnN0IHZvaWQgKmtl eTEsIGNvbnN0IHZvaWQgKmtleTIsIFNpemUga2V5c2l6ZSkKKy8qCisgKiBUT0RPOiBjb25z aWRlciBkaWZmZXJlbnQgYWxnb3JpdGhtIHRvIG1hbmFnZSBjb21wbGV4aXR5CisgKiBpbiB0 aGUgY2FzZSBvZiBtYW55IGRpZmZlcmVudCBjbGF1c2VzLAorICogbGlrZSBSYWJpbi1LYXJw IG9yIEJveWVy4oCTTW9vcmUgYWxnb3JpdGhtcy4KKyAqLworc3RhdGljIGNoYXIgKgorY2xl YXJfcGF0dGVybnMoY29uc3QgY2hhciAqc3RyLCBjb25zdCBjaGFyICpzdGFydF9wYXR0ZXJu KQogewotCWNvbnN0IGNoYXIgKm5hbWUxID0gKihjb25zdCBjaGFyICpjb25zdCAqKSBrZXkx OwotCWNvbnN0IGNoYXIgKm5hbWUyID0gKihjb25zdCBjaGFyICpjb25zdCAqKSBrZXkyOwor CWludAkJCWkgPSAwOworCWludAkJCWogPSAwOworCWludAkJCXN0YXJ0X3BhdHRlcm5fbGVu ID0gc3RybGVuKHN0YXJ0X3BhdHRlcm4pOworCWNoYXIJICAgKnJlcyA9IHBhbGxvYzAoc2l6 ZW9mKCpyZXMpICogKHN0cmxlbihzdHIpICsgMSkpOwogCi0JcmV0dXJuIHN0cmNtcChuYW1l MSwgbmFtZTIpOwotfQotCi1zdGF0aWMgdWludDMyCi1vcl9uYW1lX2hhc2goY29uc3Qgdm9p ZCAqa2V5LCBTaXplIGtleXNpemUpCi17Ci0JY29uc3QgY2hhciAqbmFtZSA9ICooY29uc3Qg Y2hhciAqY29uc3QgKikga2V5OworCWZvciAoaSA9IDA7IHN0cltpXTspCisJeworCQlpZiAo aSA+PSBzdGFydF9wYXR0ZXJuX2xlbiAmJiBzdHJuY21wKCZzdHJbaSAtIHN0YXJ0X3BhdHRl cm5fbGVuXSwKKwkJCQkJCQkJCQkJICBzdGFydF9wYXR0ZXJuLAorCQkJCQkJCQkJCQkgIHN0 YXJ0X3BhdHRlcm5fbGVuKSA9PSAwKQorCQl7CisJCQl3aGlsZSAoc3RyW2ldICYmICEoc3Ry W2ldID09ICd7JyB8fCBzdHJbaV0gPT0gJ30nKSkKKwkJCQlpKys7CisJCX0KKwkJaWYgKHN0 cltpXSkKKwkJCXJlc1tqKytdID0gc3RyW2krK107CisJfQogCi0JcmV0dXJuIERhdHVtR2V0 SW50MzIoaGFzaF9hbnkoKHVuc2lnbmVkIGNoYXIgKiluYW1lLCBzdHJsZW4obmFtZSkpKTsK KwlyZXR1cm4gcmVzOwogfQogCi1zdGF0aWMgY2hhciAqCitzdGF0aWMgaW50MzIKIGdldF9r ZXlfbmNvbnN0X25vZGUoTm9kZSAqbmNvbnN0X25vZGUpCiB7Ci0JaWYgKElzQShuY29uc3Rf bm9kZSwgT3BFeHByKSkKLQl7Ci0JCU9wRXhwciAJICAgKmNsYXVzZSA9IChPcEV4cHIqKSBu Y29uc3Rfbm9kZTsKLQkJT3BFeHByCSAgICp0ZW1wID0gbWFrZU5vZGUoT3BFeHByKTsKLQot CQl0ZW1wLT5vcG5vID0gY2xhdXNlLT5vcG5vOwotCQl0ZW1wLT5vcGZ1bmNpZCA9IEludmFs aWRPaWQ7Ci0JCXRlbXAtPm9wcmVzdWx0dHlwZSA9IGNsYXVzZS0+b3ByZXN1bHR0eXBlOwot CQl0ZW1wLT5vcHJldHNldCA9IGNsYXVzZS0+b3ByZXRzZXQ7Ci0JCXRlbXAtPm9wY29sbGlk ID0gY2xhdXNlLT5vcGNvbGxpZDsKLQkJdGVtcC0+aW5wdXRjb2xsaWQgPSBjbGF1c2UtPmlu cHV0Y29sbGlkOwotCQl0ZW1wLT5sb2NhdGlvbiA9IC0xOwotCi0JCXRlbXAtPmFyZ3MgPSBs aXN0X2NvcHkoY2xhdXNlLT5hcmdzKTsKLQkJcmV0dXJuIG5vZGVUb1N0cmluZyh0ZW1wKTsK LQl9Ci0JZWxzZSBpZiAoSXNBKG5jb25zdF9ub2RlLCBWYXIpKQotCXsKLQkJVmFyCSAgICpj bGF1c2UgPSAoVmFyKikgbmNvbnN0X25vZGU7Ci0JCVZhcgkgICAqdmFyID0gbWFrZU5vZGUo VmFyKTsKLQotCQl2YXItPnZhcm5vID0gY2xhdXNlLT52YXJubzsKLQkJdmFyLT52YXJhdHRu byA9IGNsYXVzZS0+dmFyYXR0bm87Ci0JCXZhci0+dmFydHlwZSA9IGNsYXVzZS0+dmFydHlw ZTsKLQkJdmFyLT52YXJ0eXBtb2QgPSBjbGF1c2UtPnZhcnR5cG1vZDsKLQkJdmFyLT52YXJj b2xsaWQgPSBjbGF1c2UtPnZhcmNvbGxpZDsKLQkJdmFyLT52YXJsZXZlbHN1cCA9IGNsYXVz ZS0+dmFybGV2ZWxzdXA7Ci0JCXZhci0+dmFyYXR0bm9zeW4gPSBjbGF1c2UtPnZhcmF0dG5v OwotCQl2YXItPmxvY2F0aW9uID0gLTE7Ci0KLQkJcmV0dXJuIG5vZGVUb1N0cmluZyh2YXIp OwotCX0KLQllbHNlCi0JewotCQlyZXR1cm4gTlVMTDsKLQl9Ci0gfQorCWNoYXIgKnN0ciA9 IG5vZGVUb1N0cmluZyhuY29uc3Rfbm9kZSk7CisKKwlzdHIgPSBjbGVhcl9wYXR0ZXJucyhz dHIsICIgOmxvY2F0aW9uIik7CisKKwlpZiAoc3RyID09IE5VTEwpCisJCXJldHVybiAwOwor CisJcmV0dXJuIERhdHVtR2V0SW50MzIoaGFzaF9hbnkoKHVuc2lnbmVkIGNoYXIgKilzdHIs IHN0cmxlbihzdHIpKSk7Cit9CiAKIHN0YXRpYyBOb2RlICoKIHRyYW5zZm9ybUJvb2xFeHBy T3IoUGFyc2VTdGF0ZSAqcHN0YXRlLCBCb29sRXhwciAqZXhwcl9vcmlnKQpAQCAtMTc5LDE0 ICsxNjMsMTIgQEAgdHJhbnNmb3JtQm9vbEV4cHJPcihQYXJzZVN0YXRlICpwc3RhdGUsIEJv b2xFeHByICpleHByX29yaWcpCiAJaW50IAkJCWxlbl9vcnMgPSBsaXN0X2xlbmd0aChleHBy X29yaWctPmFyZ3MpOwogCiAJTWVtU2V0KCZpbmZvLCAwLCBzaXplb2YoaW5mbykpOwotCWlu Zm8ua2V5c2l6ZSA9IHNpemVvZihjaGFyICopOworCWluZm8ua2V5c2l6ZSA9IHNpemVvZihp bnQpOwogCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKE9yQ2xhdXNlR3JvdXBFbnRyeSk7Ci0J aW5mby5oYXNoID0gb3JfbmFtZV9oYXNoOwotCWluZm8ubWF0Y2ggPSBvcl9uYW1lX21hdGNo OwogCW9yX2dyb3VwX2h0YWIgPSBoYXNoX2NyZWF0ZSgiT1IgR3JvdXBzIiwKIAkJCQkJCQkJ CSAgbGVuX29ycywKIAkJCQkJCQkJCSAgJmluZm8sCi0JCQkJCQkJCQkgIEhBU0hfRUxFTSB8 IEhBU0hfRlVOQ1RJT04gfCBIQVNIX0NPTVBBUkUpOworCQkJCQkJCQkJICBIQVNIX0VMRU0g fCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKIAogCS8qIElmIHRoaXMgaXMgbm90IGFu ICdPUicgZXhwcmVzc2lvbiwgc2tpcCB0aGUgdHJhbnNmb3JtYXRpb24gKi8KIAlpZiAoZXhw cl9vcmlnLT5ib29sb3AgIT0gT1JfRVhQUiB8fCAhZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9u IHx8IGxlbl9vcnMgPT0gMSB8fCAhb3JfZ3JvdXBfaHRhYikKQEAgLTIwMCw3ICsxODIsNyBA QCB0cmFuc2Zvcm1Cb29sRXhwck9yKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQm9vbEV4cHIgKmV4 cHJfb3JpZykKIAkJTm9kZQkJCSAgICpuY29uc3RfZXhwciA9IE5VTEw7CiAJCU9yQ2xhdXNl R3JvdXBFbnRyeSAqZ2VudHJ5ID0gTlVMTDsKIAkJYm9vbAkJCQlmb3VuZDsKLQkJY2hhcgkJ ICAgCSAgICpzdHI7CisJCWludDMyCQkJCWhhc2g7CiAKIAkJLyogQXQgZmlyc3QsIHRyYW5z Zm9ybSB0aGUgYXJnIGFuZCBldmFsdWF0ZSBjb25zdGFudCBleHByZXNzaW9ucy4gKi8KIAkJ b3JxdWFsID0gdHJhbnNmb3JtRXhwclJlY3Vyc2UocHN0YXRlLCAoTm9kZSAqKSBhcmcpOwpA QCAtMjM3LDkgKzIxOSw5IEBAIHRyYW5zZm9ybUJvb2xFeHByT3IoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBCb29sRXhwciAqZXhwcl9vcmlnKQogCQkJY29udGludWU7CiAJCX0KIAotCQlzdHIg PSBnZXRfa2V5X25jb25zdF9ub2RlKG5jb25zdF9leHByKTsKKwkJaGFzaCA9IGdldF9rZXlf bmNvbnN0X25vZGUobmNvbnN0X2V4cHIpOwogCi0JCWlmICghb3BfbWVyZ2Vqb2luYWJsZSgo KE9wRXhwciAqKSBvcnF1YWwpLT5vcG5vLCBleHByVHlwZShuY29uc3RfZXhwcikpIHx8IHN0 ciA9PSBOVUxMKQorCQlpZiAoIW9wX21lcmdlam9pbmFibGUoKChPcEV4cHIgKikgb3JxdWFs KS0+b3BubywgZXhwclR5cGUobmNvbnN0X2V4cHIpKSB8fCBoYXNoID09IDApCiAJCXsKIAkJ CW9yX2xpc3QgPSBsYXBwZW5kKG9yX2xpc3QsIG9ycXVhbCk7CiAJCQljb250aW51ZTsKQEAg LTI1NCw3ICsyMzYsNyBAQCB0cmFuc2Zvcm1Cb29sRXhwck9yKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgQm9vbEV4cHIgKmV4cHJfb3JpZykKIAkJKiBsaWtlIGEgaGFzaCB0YWJsZS4gQnV0IGFs c28gd2UgYmVsaWV2ZSwgdGhhdCB0aGUgY2FzZSBvZiBtYW55CiAJCSogZGlmZmVyZW50IHZh cmlhYmxlIHNpZGVzIGlzIHZlcnkgcmFyZS4KIAkJKi8KLQkJZ2VudHJ5ID0gaGFzaF9zZWFy Y2gob3JfZ3JvdXBfaHRhYiwgJnN0ciwgSEFTSF9GSU5ELCAmZm91bmQpOworCQlnZW50cnkg PSBoYXNoX3NlYXJjaChvcl9ncm91cF9odGFiLCAmaGFzaCwgSEFTSF9GSU5ELCAmZm91bmQp OwogCiAJCWlmIChmb3VuZCkKIAkJewpAQCAtMjY3LDExICsyNDksMTEgQEAgdHJhbnNmb3Jt Qm9vbEV4cHJPcihQYXJzZVN0YXRlICpwc3RhdGUsIEJvb2xFeHByICpleHByX29yaWcpCiAJ CX0KIAogCQkvKiBOZXcgY2xhdXNlIGdyb3VwIG5lZWRlZCAqLwotCQlnZW50cnkgPSBoYXNo X3NlYXJjaChvcl9ncm91cF9odGFiLCAmc3RyLCBIQVNIX0VOVEVSLCAmZm91bmQpOworCQln ZW50cnkgPSBoYXNoX3NlYXJjaChvcl9ncm91cF9odGFiLCAmaGFzaCwgSEFTSF9FTlRFUiwg JmZvdW5kKTsKIAkJZ2VudHJ5LT5ub2RlID0gbmNvbnN0X2V4cHI7CiAJCWdlbnRyeS0+Y29u c3RzID0gbGlzdF9tYWtlMShjb25zdF9leHByKTsKIAkJZ2VudHJ5LT5leHByID0gb3JxdWFs OwotCQlnZW50cnktPmhhc2hfbGVmdHZhcl9rZXkgPSBzdHI7CisJCWdlbnRyeS0+aGFzaF9s ZWZ0dmFyX2tleSA9IGhhc2g7CiAJfQogCiAJaWYgKG9yX2dyb3VwX2h0YWIgJiYgKGhhc2hf Z2V0X251bV9lbnRyaWVzKG9yX2dyb3VwX2h0YWIpIDwgMSB8fApkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fcHJ1bmUub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fcHJ1bmUub3V0CmluZGV4IGZlODE1NDE3YzEz Li44MDRmZWE5ZjM0YyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w YXJ0aXRpb25fcHJ1bmUub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFy dGl0aW9uX3BydW5lLm91dApAQCAtNzAyLDM0ICs3MDIsMTEgQEAgZXhwbGFpbiAoY29zdHMg b2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0gMSBvciBhID0gNzsKICgyIHJvd3Mp CiAKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA9IDEg b3IgYiA9ICdhYic7Ci0gICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCi0gQXBwZW5kCi0gICAtPiAgU2VxIFNjYW4gb24gcmxwMSBy bHBfMQotICAgICAgICAgRmlsdGVyOiAoKChiKTo6dGV4dCA9ICdhYic6OnRleHQpIE9SIChh ID0gMSkpCi0gICAtPiAgU2VxIFNjYW4gb24gcmxwMiBybHBfMgotICAgICAgICAgRmlsdGVy OiAoKChiKTo6dGV4dCA9ICdhYic6OnRleHQpIE9SIChhID0gMSkpCi0gICAtPiAgU2VxIFNj YW4gb24gcmxwM2FiY2QgcmxwXzMKLSAgICAgICAgIEZpbHRlcjogKCgoYik6OnRleHQgPSAn YWInOjp0ZXh0KSBPUiAoYSA9IDEpKQotICAgLT4gIFNlcSBTY2FuIG9uIHJscDRfMSBybHBf NAotICAgICAgICAgRmlsdGVyOiAoKChiKTo6dGV4dCA9ICdhYic6OnRleHQpIE9SIChhID0g MSkpCi0gICAtPiAgU2VxIFNjYW4gb24gcmxwNF8yIHJscF81Ci0gICAgICAgICBGaWx0ZXI6 ICgoKGIpOjp0ZXh0ID0gJ2FiJzo6dGV4dCkgT1IgKGEgPSAxKSkKLSAgIC0+ICBTZXEgU2Nh biBvbiBybHA0X2RlZmF1bHQgcmxwXzYKLSAgICAgICAgIEZpbHRlcjogKCgoYik6OnRleHQg PSAnYWInOjp0ZXh0KSBPUiAoYSA9IDEpKQotICAgLT4gIFNlcSBTY2FuIG9uIHJscDVfMSBy bHBfNwotICAgICAgICAgRmlsdGVyOiAoKChiKTo6dGV4dCA9ICdhYic6OnRleHQpIE9SIChh ID0gMSkpCi0gICAtPiAgU2VxIFNjYW4gb24gcmxwNV9kZWZhdWx0IHJscF84Ci0gICAgICAg ICBGaWx0ZXI6ICgoKGIpOjp0ZXh0ID0gJ2FiJzo6dGV4dCkgT1IgKGEgPSAxKSkKLSAgIC0+ ICBTZXEgU2NhbiBvbiBybHBfZGVmYXVsdF8xMCBybHBfOQotICAgICAgICAgRmlsdGVyOiAo KChiKTo6dGV4dCA9ICdhYic6OnRleHQpIE9SIChhID0gMSkpCi0gICAtPiAgU2VxIFNjYW4g b24gcmxwX2RlZmF1bHRfMzAgcmxwXzEwCi0gICAgICAgICBGaWx0ZXI6ICgoKGIpOjp0ZXh0 ID0gJ2FiJzo6dGV4dCkgT1IgKGEgPSAxKSkKLSAgIC0+ICBTZXEgU2NhbiBvbiBybHBfZGVm YXVsdF9udWxsIHJscF8xMQotICAgICAgICAgRmlsdGVyOiAoKChiKTo6dGV4dCA9ICdhYic6 OnRleHQpIE9SIChhID0gMSkpCi0gICAtPiAgU2VxIFNjYW4gb24gcmxwX2RlZmF1bHRfZGVm YXVsdCBybHBfMTIKLSAgICAgICAgIEZpbHRlcjogKCgoYik6OnRleHQgPSAnYWInOjp0ZXh0 KSBPUiAoYSA9IDEpKQotKDI1IHJvd3MpCisgICAgICAgIFFVRVJZIFBMQU4gICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBSZXN1bHQKKyAgIE9uZS1UaW1lIEZpbHRl cjogZmFsc2UKKygyIHJvd3MpCiAKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJv bSBybHAgd2hlcmUgYSA+IDIwIGFuZCBhIDwgMjc7CiAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9zeXN2aWV3cy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdz Lm91dAppbmRleCA4YTM4MGMyOWE0Yy4uNTY2ZjUxZGY0MjggMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0CkBAIC0xMzQsNyArMTM0LDcgQEAgc2VsZWN0IG5h bWUsIHNldHRpbmcgZnJvbSBwZ19zZXR0aW5ncyB3aGVyZSBuYW1lIGxpa2UgJ2VuYWJsZSUn OwogIGVuYWJsZV9zZXFzY2FuICAgICAgICAgICAgICAgICB8IG9uCiAgZW5hYmxlX3NvcnQg ICAgICAgICAgICAgICAgICAgIHwgb24KICBlbmFibGVfdGlkc2NhbiAgICAgICAgICAgICAg ICAgfCBvbgotKDIyIHJvd3MpCisoMjMgcm93cykKIAogLS0gVGhlcmUgYXJlIGFsd2F5cyB3 YWl0IGV2ZW50IGRlc2NyaXB0aW9ucyBmb3IgdmFyaW91cyB0eXBlcy4KIHNlbGVjdCB0eXBl LCBjb3VudCgqKSA+IDAgYXMgb2sgRlJPTSBwZ193YWl0X2V2ZW50cwo= --------------N0aTNekncQIFu0h7ROPj40Aw--