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 1uW72E-008Q5Z-Vh for pgsql-hackers@arkaria.postgresql.org; Mon, 30 Jun 2025 05:26:31 +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 1uW72B-00E2CZ-4O for pgsql-hackers@arkaria.postgresql.org; Mon, 30 Jun 2025 05:26:27 +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 1uW72A-00E2CR-IS for pgsql-hackers@lists.postgresql.org; Mon, 30 Jun 2025 05:26:27 +0000 Received: from meldrar.postgresql.org ([2a02:c0:301:0:ffff::31]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1uW728-004qVY-17 for pgsql-hackers@postgresql.org; Mon, 30 Jun 2025 05:26:26 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=postgresql.org; s=20171124; h=Content-Transfer-Encoding:Content-Type: Mime-Version:References:In-Reply-To:From:Subject:Cc:To:Message-Id:Date:Sender :Reply-To:Content-ID:Content-Description; bh=U2YKMtxZU4gcWQGKUapPjVFGIWwn8zNSX4BHPLiGj68=; b=pCPLC6dkfLPVYrnf+tKXoswHtT U/JTzEetEKBae6REepfWp0ArMJbK+Lp/8eck9PbUMh+bKfAVGVau9W/lJ+V4RLVRKVOp2GpNNWkUu ctHnwbSekxIPfstc9YGnQ6QgfbEL6WYiGcV3yZ9QLBXhvMVOkHueGBrIzK3gLmTfKXa42zjjjQK/D cLNTYrMnzFsuBMJ1BAasOsy8sx32GNSUtIlIx7gssXUIJm+7g7bl0wJDPnM0TgSxVsDND/vvk4ZxA 1hrdWceASAk7y7clXrm+0/11IduWPeSm3voTQbsAaQ9nlDcM8o30Mjhx17TfKKqSqVzpTdBSuvUtu yVs0yD4A==; Received: from [2409:11:4120:300:cd76:3763:65f7:e285] (helo=localhost) by meldrar.postgresql.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.96) (envelope-from ) id 1uW71y-000nO7-1a; Mon, 30 Jun 2025 05:26:18 +0000 Date: Mon, 30 Jun 2025 14:25:56 +0900 (JST) Message-Id: <20250630.142556.158881195489030489.ishii@postgresql.org> To: krasiyan@gmail.com, ojford@gmail.com, tgl@sss.pgh.pa.us, vik@postgresfriends.org, andrew@tao11.riddles.org.uk, david@fetter.org Cc: pgsql-hackers@postgresql.org Subject: Re: Add RESPECT/IGNORE NULLS and FROM FIRST/LAST options From: Tatsuo Ishii In-Reply-To: <20250625.161903.68476237519416014.ishii@postgresql.org> References: <20250612.075235.1886649649521129924.ishii@postgresql.org> <20250619.152111.77843597600729081.ishii@postgresql.org> <20250625.161903.68476237519416014.ishii@postgresql.org> X-Mailer: Mew version 6.8 on Emacs 26.3 Mime-Version: 1.0 Content-Type: Multipart/Mixed; boundary="--Next_Part(Mon_Jun_30_14_25_56_2025_606)--" Content-Transfer-Encoding: 7bit X-Host-Lookup-Failed: Reverse DNS lookup failed for 2409:11:4120:300:cd76:3763:65f7:e285 (failed) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk ----Next_Part(Mon_Jun_30_14_25_56_2025_606)-- Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Attached is the v15 patch to fix CFbot complains. Other than that, nothing has been changed since v14. Best regards, -- Tatsuo Ishii SRA OSS K.K. English: http://www.sraoss.co.jp/index_en/ Japanese:http://www.sraoss.co.jp ----Next_Part(Mon_Jun_30_14_25_56_2025_606)-- Content-Type: Application/Octet-Stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v15-0001-Add-IGNORE-NULLS-RESPECT-NULLS-option-to-Window-.patch" RnJvbSBmYjYzZTlhNzNjNDc1YmU1MThjMzkzZDQzOGI2ZGRkYjNiNGNhODMzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYXRzdW8gSXNoaWkgPGlzaGlpQHBvc3RncmVzcWwub3JnPgpE YXRlOiBNb24sIDMwIEp1biAyMDI1IDE0OjIxOjQ4ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2MTVd IEFkZCBJR05PUkUgTlVMTFMvUkVTUEVDVCBOVUxMUyBvcHRpb24gdG8gV2luZG93CiBmdW5jdGlv bnMuCgpBZGQgSUdOT1JFIE5VTExTL1JFU1BFQ1QgTlVMTFMgb3B0aW9uIHRvIGxlYWQsIGxhZywg Zmlyc3RfdmFsdWUsCmxhc3RfdmFsdWUgYW5kIG50aF92YWx1ZS4KLS0tCiBkb2Mvc3JjL3NnbWwv ZnVuYy5zZ21sICAgICAgICAgICAgICAgfCAgMzggKystCiBkb2Mvc3JjL3NnbWwvc3ludGF4LnNn bWwgICAgICAgICAgICAgfCAgMTAgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVz LnR4dCB8ICAgMiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jIHwgNDQ3 ICsrKysrKysrKysrKysrKysrKysrKysrKystLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwv Y2xhdXNlcy5jIHwgICAxICsKIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICB8 ICAxOSArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYyAgICAgIHwgICA5ICsKIHNy Yy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyAgICB8ICAgNyArLQogc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3dpbmRvd2Z1bmNzLmMgIHwgIDEwICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNl bm9kZXMuaCAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaCAgICAg ICAgfCAgMTMgKwogc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oICAgICAgICAgIHwgICAyICsK IHNyYy9pbmNsdWRlL3dpbmRvd2FwaS5oICAgICAgICAgICAgICB8ICAgNiArCiBzcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3dpbmRvdy5vdXQgfCAzMTEgKysrKysrKysrKysrKysrKysrKwogc3Jj L3Rlc3QvcmVncmVzcy9zcWwvd2luZG93LnNxbCAgICAgIHwgMTQ3ICsrKysrKysrKwogMTUgZmls ZXMgY2hhbmdlZCwgOTcyIGluc2VydGlvbnMoKyksIDUxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sCmluZGV4 IDIyNGQ0ZmU1YTlmLi5hOTVmZGJhYjAzMSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Z1bmMu c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sCkBAIC0yMzU0Myw3ICsyMzU0Myw3IEBA IFNFTEVDVCBjb3VudCgqKSBGUk9NIHNvbWV0YWJsZTsKICAgICAgICAgPC9pbmRleHRlcm0+CiAg ICAgICAgIDxmdW5jdGlvbj5sYWc8L2Z1bmN0aW9uPiAoIDxwYXJhbWV0ZXI+dmFsdWU8L3BhcmFt ZXRlcj4gPHR5cGU+YW55Y29tcGF0aWJsZTwvdHlwZT4KICAgICAgICAgICA8b3B0aW9uYWw+LCA8 cGFyYW1ldGVyPm9mZnNldDwvcGFyYW1ldGVyPiA8dHlwZT5pbnRlZ2VyPC90eXBlPgotICAgICAg ICAgIDxvcHRpb25hbD4sIDxwYXJhbWV0ZXI+ZGVmYXVsdDwvcGFyYW1ldGVyPiA8dHlwZT5hbnlj b21wYXRpYmxlPC90eXBlPiA8L29wdGlvbmFsPjwvb3B0aW9uYWw+ICkKKyAgICAgICAgICA8b3B0 aW9uYWw+LCA8cGFyYW1ldGVyPmRlZmF1bHQ8L3BhcmFtZXRlcj4gPHR5cGU+YW55Y29tcGF0aWJs ZTwvdHlwZT4gPC9vcHRpb25hbD48L29wdGlvbmFsPiApIDxvcHRpb25hbD4gPHBhcmFtZXRlcj5u dWxsIHRyZWF0bWVudDwvcGFyYW1ldGVyPiA8L29wdGlvbmFsPgogICAgICAgICA8cmV0dXJudmFs dWU+YW55Y29tcGF0aWJsZTwvcmV0dXJudmFsdWU+CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxw YXJhPgpAQCAtMjM1NjgsNyArMjM1NjgsNyBAQCBTRUxFQ1QgY291bnQoKikgRlJPTSBzb21ldGFi bGU7CiAgICAgICAgIDwvaW5kZXh0ZXJtPgogICAgICAgICA8ZnVuY3Rpb24+bGVhZDwvZnVuY3Rp b24+ICggPHBhcmFtZXRlcj52YWx1ZTwvcGFyYW1ldGVyPiA8dHlwZT5hbnljb21wYXRpYmxlPC90 eXBlPgogICAgICAgICAgIDxvcHRpb25hbD4sIDxwYXJhbWV0ZXI+b2Zmc2V0PC9wYXJhbWV0ZXI+ IDx0eXBlPmludGVnZXI8L3R5cGU+Ci0gICAgICAgICAgPG9wdGlvbmFsPiwgPHBhcmFtZXRlcj5k ZWZhdWx0PC9wYXJhbWV0ZXI+IDx0eXBlPmFueWNvbXBhdGlibGU8L3R5cGU+IDwvb3B0aW9uYWw+ PC9vcHRpb25hbD4gKQorICAgICAgICAgIDxvcHRpb25hbD4sIDxwYXJhbWV0ZXI+ZGVmYXVsdDwv cGFyYW1ldGVyPiA8dHlwZT5hbnljb21wYXRpYmxlPC90eXBlPiA8L29wdGlvbmFsPjwvb3B0aW9u YWw+ICkgPG9wdGlvbmFsPiA8cGFyYW1ldGVyPm51bGwgdHJlYXRtZW50PC9wYXJhbWV0ZXI+IDwv b3B0aW9uYWw+CiAgICAgICAgIDxyZXR1cm52YWx1ZT5hbnljb21wYXRpYmxlPC9yZXR1cm52YWx1 ZT4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CkBAIC0yMzU5MSw3ICsyMzU5MSw3IEBA IFNFTEVDVCBjb3VudCgqKSBGUk9NIHNvbWV0YWJsZTsKICAgICAgICAgPGluZGV4dGVybT4KICAg ICAgICAgIDxwcmltYXJ5PmZpcnN0X3ZhbHVlPC9wcmltYXJ5PgogICAgICAgICA8L2luZGV4dGVy bT4KLSAgICAgICAgPGZ1bmN0aW9uPmZpcnN0X3ZhbHVlPC9mdW5jdGlvbj4gKCA8cGFyYW1ldGVy PnZhbHVlPC9wYXJhbWV0ZXI+IDx0eXBlPmFueWVsZW1lbnQ8L3R5cGU+ICkKKyAgICAgICAgPGZ1 bmN0aW9uPmZpcnN0X3ZhbHVlPC9mdW5jdGlvbj4gKCA8cGFyYW1ldGVyPnZhbHVlPC9wYXJhbWV0 ZXI+IDx0eXBlPmFueWVsZW1lbnQ8L3R5cGU+ICkgPG9wdGlvbmFsPiA8cGFyYW1ldGVyPm51bGwg dHJlYXRtZW50PC9wYXJhbWV0ZXI+IDwvb3B0aW9uYWw+CiAgICAgICAgIDxyZXR1cm52YWx1ZT5h bnllbGVtZW50PC9yZXR1cm52YWx1ZT4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CkBA IC0yMzYwNSw3ICsyMzYwNSw3IEBAIFNFTEVDVCBjb3VudCgqKSBGUk9NIHNvbWV0YWJsZTsKICAg ICAgICAgPGluZGV4dGVybT4KICAgICAgICAgIDxwcmltYXJ5Pmxhc3RfdmFsdWU8L3ByaW1hcnk+ CiAgICAgICAgIDwvaW5kZXh0ZXJtPgotICAgICAgICA8ZnVuY3Rpb24+bGFzdF92YWx1ZTwvZnVu Y3Rpb24+ICggPHBhcmFtZXRlcj52YWx1ZTwvcGFyYW1ldGVyPiA8dHlwZT5hbnllbGVtZW50PC90 eXBlPiApCisgICAgICAgIDxmdW5jdGlvbj5sYXN0X3ZhbHVlPC9mdW5jdGlvbj4gKCA8cGFyYW1l dGVyPnZhbHVlPC9wYXJhbWV0ZXI+IDx0eXBlPmFueWVsZW1lbnQ8L3R5cGU+ICkgPG9wdGlvbmFs PiA8cGFyYW1ldGVyPm51bGwgdHJlYXRtZW50PC9wYXJhbWV0ZXI+IDwvb3B0aW9uYWw+CiAgICAg ICAgIDxyZXR1cm52YWx1ZT5hbnllbGVtZW50PC9yZXR1cm52YWx1ZT4KICAgICAgICA8L3BhcmE+ CiAgICAgICAgPHBhcmE+CkBAIC0yMzYxOSw3ICsyMzYxOSw3IEBAIFNFTEVDVCBjb3VudCgqKSBG Uk9NIHNvbWV0YWJsZTsKICAgICAgICAgPGluZGV4dGVybT4KICAgICAgICAgIDxwcmltYXJ5Pm50 aF92YWx1ZTwvcHJpbWFyeT4KICAgICAgICAgPC9pbmRleHRlcm0+Ci0gICAgICAgIDxmdW5jdGlv bj5udGhfdmFsdWU8L2Z1bmN0aW9uPiAoIDxwYXJhbWV0ZXI+dmFsdWU8L3BhcmFtZXRlcj4gPHR5 cGU+YW55ZWxlbWVudDwvdHlwZT4sIDxwYXJhbWV0ZXI+bjwvcGFyYW1ldGVyPiA8dHlwZT5pbnRl Z2VyPC90eXBlPiApCisgICAgICAgIDxmdW5jdGlvbj5udGhfdmFsdWU8L2Z1bmN0aW9uPiAoIDxw YXJhbWV0ZXI+dmFsdWU8L3BhcmFtZXRlcj4gPHR5cGU+YW55ZWxlbWVudDwvdHlwZT4sIDxwYXJh bWV0ZXI+bjwvcGFyYW1ldGVyPiA8dHlwZT5pbnRlZ2VyPC90eXBlPiApIDxvcHRpb25hbD4gPHBh cmFtZXRlcj5udWxsIHRyZWF0bWVudDwvcGFyYW1ldGVyPiA8L29wdGlvbmFsPgogICAgICAgICA8 cmV0dXJudmFsdWU+YW55ZWxlbWVudDwvcmV0dXJudmFsdWU+CiAgICAgICAgPC9wYXJhPgogICAg ICAgIDxwYXJhPgpAQCAtMjM2NjgsMTggKzIzNjY4LDI2IEBAIFNFTEVDVCBjb3VudCgqKSBGUk9N IHNvbWV0YWJsZTsKICAgIE90aGVyIGZyYW1lIHNwZWNpZmljYXRpb25zIGNhbiBiZSB1c2VkIHRv IG9idGFpbiBvdGhlciBlZmZlY3RzLgogICA8L3BhcmE+CiAKKyAgPHBhcmE+CisgICBUaGUgPGxp dGVyYWw+bnVsbCB0cmVhdG1lbnQ8L2xpdGVyYWw+IG9wdGlvbiBtdXN0IGJlIG9uZSBvZjoKKzxz eW5vcHNpcz4KKyAgUkVTUEVDVCBOVUxMUworICBJR05PUkUgTlVMTFMKKzwvc3lub3BzaXM+Cisg ICBJZiB1bnNwZWNpZmllZCwgdGhlIGRlZmF1bHQgaXMgPGxpdGVyYWw+UkVTUEVDVCBOVUxMUzwv bGl0ZXJhbD4gd2hpY2ggaW5jbHVkZXMgTlVMTAorICAgdmFsdWVzIGluIGFueSByZXN1bHQgY2Fs Y3VsYXRpb24uIDxsaXRlcmFsPklHTk9SRSBOVUxMUzwvbGl0ZXJhbD4gaWdub3JlcyBOVUxMIHZh bHVlcy4KKyAgIFRoaXMgb3B0aW9uIGlzIG9ubHkgYWxsb3dlZCBmb3IgdGhlIGZvbGxvd2luZyBm dW5jdGlvbnM6IDxmdW5jdGlvbj5sYWc8L2Z1bmN0aW9uPiwKKyAgIDxmdW5jdGlvbj5sZWFkPC9m dW5jdGlvbj4sIDxmdW5jdGlvbj5maXJzdF92YWx1ZTwvZnVuY3Rpb24+LCA8ZnVuY3Rpb24+bGFz dF92YWx1ZTwvZnVuY3Rpb24+LAorICAgPGZ1bmN0aW9uPm50aF92YWx1ZTwvZnVuY3Rpb24+Lgor ICA8L3BhcmE+CisKICAgPG5vdGU+CiAgICA8cGFyYT4KLSAgICBUaGUgU1FMIHN0YW5kYXJkIGRl ZmluZXMgYSA8bGl0ZXJhbD5SRVNQRUNUIE5VTExTPC9saXRlcmFsPiBvcgotICAgIDxsaXRlcmFs PklHTk9SRSBOVUxMUzwvbGl0ZXJhbD4gb3B0aW9uIGZvciA8ZnVuY3Rpb24+bGVhZDwvZnVuY3Rp b24+LCA8ZnVuY3Rpb24+bGFnPC9mdW5jdGlvbj4sCi0gICAgPGZ1bmN0aW9uPmZpcnN0X3ZhbHVl PC9mdW5jdGlvbj4sIDxmdW5jdGlvbj5sYXN0X3ZhbHVlPC9mdW5jdGlvbj4sIGFuZAotICAgIDxm dW5jdGlvbj5udGhfdmFsdWU8L2Z1bmN0aW9uPi4gIFRoaXMgaXMgbm90IGltcGxlbWVudGVkIGlu Ci0gICAgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPjogdGhlIGJlaGF2aW9y IGlzIGFsd2F5cyB0aGUKLSAgICBzYW1lIGFzIHRoZSBzdGFuZGFyZCdzIGRlZmF1bHQsIG5hbWVs eSA8bGl0ZXJhbD5SRVNQRUNUIE5VTExTPC9saXRlcmFsPi4KLSAgICBMaWtld2lzZSwgdGhlIHN0 YW5kYXJkJ3MgPGxpdGVyYWw+RlJPTSBGSVJTVDwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+RlJPTSBM QVNUPC9saXRlcmFsPgotICAgIG9wdGlvbiBmb3IgPGZ1bmN0aW9uPm50aF92YWx1ZTwvZnVuY3Rp b24+IGlzIG5vdCBpbXBsZW1lbnRlZDogb25seSB0aGUKLSAgICBkZWZhdWx0IDxsaXRlcmFsPkZS T00gRklSU1Q8L2xpdGVyYWw+IGJlaGF2aW9yIGlzIHN1cHBvcnRlZC4gIChZb3UgY2FuIGFjaGll dmUKLSAgICB0aGUgcmVzdWx0IG9mIDxsaXRlcmFsPkZST00gTEFTVDwvbGl0ZXJhbD4gYnkgcmV2 ZXJzaW5nIHRoZSA8bGl0ZXJhbD5PUkRFUiBCWTwvbGl0ZXJhbD4KKyAgICBUaGUgU1FMIHN0YW5k YXJkIGRlZmluZXMgYSA8bGl0ZXJhbD5GUk9NIEZJUlNUPC9saXRlcmFsPiBvciA8bGl0ZXJhbD5G Uk9NIExBU1Q8L2xpdGVyYWw+CisgICAgb3B0aW9uIGZvciA8ZnVuY3Rpb24+bnRoX3ZhbHVlPC9m dW5jdGlvbj4uIFRoaXMgaXMgbm90IGltcGxlbWVudGVkIGluCisgICAgPHByb2R1Y3RuYW1lPlBv c3RncmVTUUw8L3Byb2R1Y3RuYW1lPjogb25seSB0aGUgZGVmYXVsdCA8bGl0ZXJhbD5GUk9NIEZJ UlNUPC9saXRlcmFsPgorICAgIGJlaGF2aW9yIGlzIHN1cHBvcnRlZC4gKFlvdSBjYW4gYWNoaWV2 ZSB0aGUgcmVzdWx0IG9mIDxsaXRlcmFsPkZST00gTEFTVDwvbGl0ZXJhbD4gYnkKKyAgICByZXZl cnNpbmcgdGhlIDxsaXRlcmFsPk9SREVSIEJZPC9saXRlcmFsPgogICAgIG9yZGVyaW5nLikKICAg IDwvcGFyYT4KICAgPC9ub3RlPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3N5bnRheC5zZ21s IGIvZG9jL3NyYy9zZ21sL3N5bnRheC5zZ21sCmluZGV4IDkxNjE4OWE3ZDY4Li4yMzdkNzMwNmZl OCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3N5bnRheC5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9zeW50YXguc2dtbApAQCAtMTgzNCw4ICsxODM0LDggQEAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwxMCkgQVMgcyhpKTsKICAgICBUaGUgc3ludGF4IG9mIGEgd2luZG93IGZ1bmN0aW9uIGNhbGwg aXMgb25lIG9mIHRoZSBmb2xsb3dpbmc6CiAKIDxzeW5vcHNpcz4KLTxyZXBsYWNlYWJsZT5mdW5j dGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4gKDxvcHRpb25hbD48cmVwbGFjZWFibGU+ZXhwcmVzc2lv bjwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4sIDxyZXBsYWNlYWJsZT5leHByZXNzaW9uPC9yZXBs YWNlYWJsZT4gLi4uIDwvb3B0aW9uYWw+PC9vcHRpb25hbD4pIFsgRklMVEVSICggV0hFUkUgPHJl cGxhY2VhYmxlPmZpbHRlcl9jbGF1c2U8L3JlcGxhY2VhYmxlPiApIF0gT1ZFUiA8cmVwbGFjZWFi bGU+d2luZG93X25hbWU8L3JlcGxhY2VhYmxlPgotPHJlcGxhY2VhYmxlPmZ1bmN0aW9uX25hbWU8 L3JlcGxhY2VhYmxlPiAoPG9wdGlvbmFsPjxyZXBsYWNlYWJsZT5leHByZXNzaW9uPC9yZXBsYWNl YWJsZT4gPG9wdGlvbmFsPiwgPHJlcGxhY2VhYmxlPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiAu Li4gPC9vcHRpb25hbD48L29wdGlvbmFsPikgWyBGSUxURVIgKCBXSEVSRSA8cmVwbGFjZWFibGU+ ZmlsdGVyX2NsYXVzZTwvcmVwbGFjZWFibGU+ICkgXSBPVkVSICggPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPndpbmRvd19kZWZpbml0aW9uPC9yZXBsYWNlYWJsZT4gKQorPHJlcGxhY2Vh YmxlPmZ1bmN0aW9uX25hbWU8L3JlcGxhY2VhYmxlPiAoPG9wdGlvbmFsPjxyZXBsYWNlYWJsZT5l eHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gPG9wdGlvbmFsPiwgPHJlcGxhY2VhYmxlPmV4cHJlc3Np b248L3JlcGxhY2VhYmxlPiAuLi4gPC9vcHRpb25hbD48L29wdGlvbmFsPikgPG9wdGlvbmFsPm51 bGwgdHJlYXRtZW50PC9vcHRpb25hbD4gWyBGSUxURVIgKCBXSEVSRSA8cmVwbGFjZWFibGU+Zmls dGVyX2NsYXVzZTwvcmVwbGFjZWFibGU+ICkgXSBPVkVSIDxyZXBsYWNlYWJsZT53aW5kb3dfbmFt ZTwvcmVwbGFjZWFibGU+Cis8cmVwbGFjZWFibGU+ZnVuY3Rpb25fbmFtZTwvcmVwbGFjZWFibGU+ ICg8b3B0aW9uYWw+PHJlcGxhY2VhYmxlPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiA8b3B0aW9u YWw+LCA8cmVwbGFjZWFibGU+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IC4uLiA8L29wdGlvbmFs Pjwvb3B0aW9uYWw+KSA8b3B0aW9uYWw+bnVsbCB0cmVhdG1lbnQ8L29wdGlvbmFsPiBbIEZJTFRF UiAoIFdIRVJFIDxyZXBsYWNlYWJsZT5maWx0ZXJfY2xhdXNlPC9yZXBsYWNlYWJsZT4gKSBdIE9W RVIgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+d2luZG93X2RlZmluaXRpb248L3Jl cGxhY2VhYmxlPiApCiA8cmVwbGFjZWFibGU+ZnVuY3Rpb25fbmFtZTwvcmVwbGFjZWFibGU+ICgg KiApIFsgRklMVEVSICggV0hFUkUgPHJlcGxhY2VhYmxlPmZpbHRlcl9jbGF1c2U8L3JlcGxhY2Vh YmxlPiApIF0gT1ZFUiA8cmVwbGFjZWFibGU+d2luZG93X25hbWU8L3JlcGxhY2VhYmxlPgogPHJl cGxhY2VhYmxlPmZ1bmN0aW9uX25hbWU8L3JlcGxhY2VhYmxlPiAoICogKSBbIEZJTFRFUiAoIFdI RVJFIDxyZXBsYWNlYWJsZT5maWx0ZXJfY2xhdXNlPC9yZXBsYWNlYWJsZT4gKSBdIE9WRVIgKCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+d2luZG93X2RlZmluaXRpb248L3JlcGxhY2Vh YmxlPiApCiA8L3N5bm9wc2lzPgpAQCAtMTg3Myw3ICsxODczLDkgQEAgRVhDTFVERSBOTyBPVEhF UlMKIAogICAgPHBhcmE+CiAgICAgSGVyZSwgPHJlcGxhY2VhYmxlPmV4cHJlc3Npb248L3JlcGxh Y2VhYmxlPiByZXByZXNlbnRzIGFueSB2YWx1ZQotICAgIGV4cHJlc3Npb24gdGhhdCBkb2VzIG5v dCBpdHNlbGYgY29udGFpbiB3aW5kb3cgZnVuY3Rpb24gY2FsbHMuCisgICAgZXhwcmVzc2lvbiB0 aGF0IGRvZXMgbm90IGl0c2VsZiBjb250YWluIHdpbmRvdyBmdW5jdGlvbiBjYWxscy4gU29tZQor ICAgIG5vbi1hZ2dyZWdhdGUgZnVuY3Rpb25zIGFsbG93IGEgPGxpdGVyYWw+bnVsbCB0cmVhdG1l bnQ8L2xpdGVyYWw+IGNsYXVzZSwKKyAgICBkZXNjcmliZWQgaW4gPHhyZWYgbGlua2VuZD0iZnVu Y3Rpb25zLXdpbmRvdyIvPi4KICAgIDwvcGFyYT4KIAogICAgPHBhcmE+CkBAIC0yMDQ4LDcgKzIw NTAsNyBAQCBFWENMVURFIE5PIE9USEVSUwogCiAgICA8cGFyYT4KICAgICBUaGUgYnVpbHQtaW4g d2luZG93IGZ1bmN0aW9ucyBhcmUgZGVzY3JpYmVkIGluIDx4cmVmCi0gICAgbGlua2VuZD0iZnVu Y3Rpb25zLXdpbmRvdy10YWJsZSIvPi4gIE90aGVyIHdpbmRvdyBmdW5jdGlvbnMgY2FuIGJlIGFk ZGVkIGJ5CisgICAgbGlua2VuZD0iZnVuY3Rpb25zLXdpbmRvdy10YWJsZSIvPi4gT3RoZXIgd2lu ZG93IGZ1bmN0aW9ucyBjYW4gYmUgYWRkZWQgYnkKICAgICB0aGUgdXNlci4gIEFsc28sIGFueSBi dWlsdC1pbiBvciB1c2VyLWRlZmluZWQgZ2VuZXJhbC1wdXJwb3NlIG9yCiAgICAgc3RhdGlzdGlj YWwgYWdncmVnYXRlIGNhbiBiZSB1c2VkIGFzIGEgd2luZG93IGZ1bmN0aW9uLiAgKE9yZGVyZWQt c2V0CiAgICAgYW5kIGh5cG90aGV0aWNhbC1zZXQgYWdncmVnYXRlcyBjYW5ub3QgcHJlc2VudGx5 IGJlIHVzZWQgYXMgd2luZG93IGZ1bmN0aW9ucy4pCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j YXRhbG9nL3NxbF9mZWF0dXJlcy50eHQgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJl cy50eHQKaW5kZXggZWJlODUzMzdjMjguLjNhOGFkMjAxNjA3IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9z cWxfZmVhdHVyZXMudHh0CkBAIC01MTgsNyArNTE4LDcgQEAgVDYxMglBZHZhbmNlZCBPTEFQIG9w ZXJhdGlvbnMJCQlZRVMKIFQ2MTMJU2FtcGxpbmcJCQlZRVMJCiBUNjE0CU5USUxFIGZ1bmN0aW9u CQkJWUVTCQogVDYxNQlMRUFEIGFuZCBMQUcgZnVuY3Rpb25zCQkJWUVTCQotVDYxNglOdWxsIHRy ZWF0bWVudCBvcHRpb24gZm9yIExFQUQgYW5kIExBRyBmdW5jdGlvbnMJCQlOTwkKK1Q2MTYJTnVs bCB0cmVhdG1lbnQgb3B0aW9uIGZvciBMRUFEIGFuZCBMQUcgZnVuY3Rpb25zCQkJWUVTCQogVDYx NwlGSVJTVF9WQUxVRSBhbmQgTEFTVF9WQUxVRSBmdW5jdGlvbnMJCQlZRVMJCiBUNjE4CU5USF9W QUxVRSBmdW5jdGlvbgkJCU5PCWZ1bmN0aW9uIGV4aXN0cywgYnV0IHNvbWUgb3B0aW9ucyBtaXNz aW5nCiBUNjE5CU5lc3RlZCB3aW5kb3cgZnVuY3Rpb25zCQkJTk8JCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlV2luZG93QWdnLmMKaW5kZXggOWExYWNjZTJiNWQuLjkyNjVjMjc1NGE3IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCkBAIC02OSw2ICs2OSw5IEBAIHR5cGVkZWYgc3RydWN0 IFdpbmRvd09iamVjdERhdGEKIAlpbnQJCQlyZWFkcHRyOwkJLyogdHVwbGVzdG9yZSByZWFkIHBv aW50ZXIgZm9yIHRoaXMgZm4gKi8KIAlpbnQ2NAkJbWFya3BvczsJCS8qIHJvdyB0aGF0IG1hcmtw dHIgaXMgcG9zaXRpb25lZCBvbiAqLwogCWludDY0CQlzZWVrcG9zOwkJLyogcm93IHRoYXQgcmVh ZHB0ciBpcyBwb3NpdGlvbmVkIG9uICovCisJdWludDgJICAgKm5vdG51bGxfaW5mbzsJLyogbm90 IG51bGwgaW5mbyAqLworCWludAkJCW51bV9ub3RudWxsX2luZm87CS8qIHRyYWNrIHNpemUgb2Yg dGhlIG5vdG51bGxfaW5mbyBhcnJheSAqLworCWludAkJCWlnbm9yZV9udWxsczsJLyogaWdub3Jl IG51bGxzICovCiB9IFdpbmRvd09iamVjdERhdGE7CiAKIC8qCkBAIC05Niw2ICs5OSw3IEBAIHR5 cGVkZWYgc3RydWN0IFdpbmRvd1N0YXRlUGVyRnVuY0RhdGEKIAogCWJvb2wJCXBsYWluX2FnZzsJ CS8qIGlzIGl0IGp1c3QgYSBwbGFpbiBhZ2dyZWdhdGUgZnVuY3Rpb24/ICovCiAJaW50CQkJYWdn bm87CQkJLyogaWYgc28sIGluZGV4IG9mIGl0cyBXaW5kb3dTdGF0ZVBlckFnZ0RhdGEgKi8KKwlp bnQJCQlpZ25vcmVfbnVsbHM7CS8qIGlnbm9yZSBudWxscyAqLwogCiAJV2luZG93T2JqZWN0IHdp bm9iajsJCS8qIG9iamVjdCB1c2VkIGluIHdpbmRvdyBmdW5jdGlvbiBBUEkgKi8KIH0JCQlXaW5k b3dTdGF0ZVBlckZ1bmNEYXRhOwpAQCAtMTk4LDYgKzIwMiwzMyBAQCBzdGF0aWMgYm9vbCBhcmVf cGVlcnMoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdDEsCiBz dGF0aWMgYm9vbCB3aW5kb3dfZ2V0dHVwbGVzbG90KFdpbmRvd09iamVjdCB3aW5vYmosIGludDY0 IHBvcywKIAkJCQkJCQkJVHVwbGVUYWJsZVNsb3QgKnNsb3QpOwogCitzdGF0aWMgRGF0dW0gaWdu b3JlbnVsbHNfZ2V0ZnVuY2FyZ2luZnJhbWUoV2luZG93T2JqZWN0IHdpbm9iaiwgaW50IGFyZ25v LAorCQkJCQkJCQkJCSAgIGludCByZWxwb3MsIGludCBzZWVrdHlwZSwKKwkJCQkJCQkJCQkgICBi b29sIHNldF9tYXJrLCBib29sICppc251bGwsCisJCQkJCQkJCQkJICAgYm9vbCAqaXNvdXQpOwor c3RhdGljIERhdHVtIGdldHR1cGxlX2V2YWxfcGFydGl0aW9uKFdpbmRvd09iamVjdCB3aW5vYmos IGludCBhcmdubywKKwkJCQkJCQkJCSBpbnQ2NCBhYnNfcG9zLCBib29sICppc251bGwsIGJvb2wg Kmlzb3V0KTsKK3N0YXRpYyB2b2lkIGluaXRfbm90bnVsbF9pbmZvKFdpbmRvd09iamVjdCB3aW5v YmopOworc3RhdGljIHZvaWQgZ3Jvd19ub3RudWxsX2luZm8oV2luZG93T2JqZWN0IHdpbm9iaiwg aW50NjQgcG9zKTsKK3N0YXRpYyB1aW50OCBnZXRfbm90bnVsbF9pbmZvKFdpbmRvd09iamVjdCB3 aW5vYmosIGludDY0IHBvcyk7CitzdGF0aWMgdm9pZCBwdXRfbm90bnVsbF9pbmZvKFdpbmRvd09i amVjdCB3aW5vYmosIGludDY0IHBvcywgYm9vbCBpc251bGwpOworCisvKgorICogTm90IG51bGwg aW5mbyBiaXQgYXJyYXkgY29uc2lzdHMgb2YgMi1iaXQgaXRlbXMKKyAqLworI2RlZmluZQlOTl9V TktOT1dOCTB4MDAJCS8qIHZhbHVlIG5vdCBjYWxjdWxhdGVkIHlldCAqLworI2RlZmluZQlOTl9O VUxMCQkweDAxCQkvKiBOVUxMICovCisjZGVmaW5lCU5OX05PVE5VTEwJMHgwMgkJLyogTk9UIE5V TEwgKi8KKyNkZWZpbmUJTk5fTUFTSwkJMHgwMwkJLyogbWFzayBmb3IgTk9UIE5VTEwgTUFQICov CisjZGVmaW5lIE5OX0JJVFNfUEVSX01FTUJFUgkyCS8qIG51bWJlciBvZiBiaXQgaW4gbm90IG51 bGwgbWFwICovCisvKiBudW1iZXIgb2YgaXRlbXMgcGVyIHZhcmlhYmxlICovCisjZGVmaW5lIE5O X0lURU1fUEVSX1ZBUgkoQklUU19QRVJfQllURSAvIE5OX0JJVFNfUEVSX01FTUJFUikKKy8qIGNv bnZlcnQgbWFwIHBvc2l0aW9uIHRvIGJ5dGUgb2Zmc2V0ICovCisjZGVmaW5lIE5OX1BPU19UT19C WVRFUyhwb3MpCSgocG9zKSAvIE5OX0lURU1fUEVSX1ZBUikKKy8qIGJ5dGVzIG9mZnNldCB0byBt YXAgcG9zaXRpb24gKi8KKyNkZWZpbmUgTk5fQllURVNfVE9fUE9TKGJ5dGVzKQkoKGJ5dGVzKSAq IE5OX0lURU1fUEVSX1ZBUikKKy8qIGNhY3VsYXRlIHNoaWZ0IGJpdHMgKi8KKyNkZWZpbmUJTk5f U0hJRlQocG9zKQkoKHBvcykgJSBOTl9JVEVNX1BFUl9WQVIpICogTk5fQklUU19QRVJfTUVNQkVS CiAKIC8qCiAgKiBpbml0aWFsaXplX3dpbmRvd2FnZ3JlZ2F0ZQpAQCAtMTI2Myw2ICsxMjk0LDEx IEBAIGJlZ2luX3BhcnRpdGlvbihXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUpCiAKIAkJCXdpbm9i ai0+bWFya3BvcyA9IC0xOwogCQkJd2lub2JqLT5zZWVrcG9zID0gLTE7CisKKwkJCS8qIHJlc2V0 IG51bGwgbWFwICovCisJCQlpZiAocGVyZnVuY3N0YXRlLT53aW5vYmotPmlnbm9yZV9udWxscyA9 PSBJR05PUkVfTlVMTFMpCisJCQkJbWVtc2V0KHBlcmZ1bmNzdGF0ZS0+d2lub2JqLT5ub3RudWxs X2luZm8sIDAsCisJCQkJCSAgIE5OX1BPU19UT19CWVRFUyhwZXJmdW5jc3RhdGUtPndpbm9iai0+ bnVtX25vdG51bGxfaW5mbykpOwogCQl9CiAJfQogCkBAIC0yNjE5LDE0ICsyNjU1LDE3IEBAIEV4 ZWNJbml0V2luZG93QWdnKFdpbmRvd0FnZyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJCQllbG9nKEVSUk9SLCAiV2luZG93RnVuYyB3aXRoIHdpbnJlZiAldSBhc3NpZ25lZCB0 byBXaW5kb3dBZ2cgd2l0aCB3aW5yZWYgJXUiLAogCQkJCSB3ZnVuYy0+d2lucmVmLCBub2RlLT53 aW5yZWYpOwogCi0JCS8qIExvb2sgZm9yIGEgcHJldmlvdXMgZHVwbGljYXRlIHdpbmRvdyBmdW5j dGlvbiAqLworCQkvKgorCQkgKiBMb29rIGZvciBhIHByZXZpb3VzIGR1cGxpY2F0ZSB3aW5kb3cg ZnVuY3Rpb24sIHdoaWNoIG5lZWRzIHRoZSBzYW1lCisJCSAqIGlnbm9yZV9udWxscyB2YWx1ZQor CQkgKi8KIAkJZm9yIChpID0gMDsgaSA8PSB3ZnVuY25vOyBpKyspCiAJCXsKIAkJCWlmIChlcXVh bCh3ZnVuYywgcGVyZnVuY1tpXS53ZnVuYykgJiYKIAkJCQkhY29udGFpbl92b2xhdGlsZV9mdW5j dGlvbnMoKE5vZGUgKikgd2Z1bmMpKQogCQkJCWJyZWFrOwogCQl9Ci0JCWlmIChpIDw9IHdmdW5j bm8pCisJCWlmIChpIDw9IHdmdW5jbm8gJiYgd2Z1bmMtPmlnbm9yZV9udWxscyA9PSBwZXJmdW5j W2ldLmlnbm9yZV9udWxscykKIAkJewogCQkJLyogRm91bmQgYSBtYXRjaCB0byBhbiBleGlzdGlu ZyBlbnRyeSwgc28ganVzdCBtYXJrIGl0ICovCiAJCQl3ZnVuY3N0YXRlLT53ZnVuY25vID0gaTsK QEAgLTI2NzksNiArMjcxOCw4IEBAIEV4ZWNJbml0V2luZG93QWdnKFdpbmRvd0FnZyAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCQl3aW5vYmotPmFyZ3N0YXRlcyA9IHdmdW5j c3RhdGUtPmFyZ3M7CiAJCQl3aW5vYmotPmxvY2FsbWVtID0gTlVMTDsKIAkJCXBlcmZ1bmNzdGF0 ZS0+d2lub2JqID0gd2lub2JqOworCQkJd2lub2JqLT5pZ25vcmVfbnVsbHMgPSB3ZnVuYy0+aWdu b3JlX251bGxzOworCQkJaW5pdF9ub3RudWxsX2luZm8od2lub2JqKTsKIAogCQkJLyogSXQncyBh IHJlYWwgd2luZG93IGZ1bmN0aW9uLCBzbyBzZXQgdXAgdG8gY2FsbCBpdC4gKi8KIAkJCWZtZ3Jf aW5mb19jeHQod2Z1bmMtPndpbmZub2lkLCAmcGVyZnVuY3N0YXRlLT5mbGluZm8sCkBAIC0zMjE0 LDEyICszMjU1LDMwOCBAQCB3aW5kb3dfZ2V0dHVwbGVzbG90KFdpbmRvd09iamVjdCB3aW5vYmos IGludDY0IHBvcywgVHVwbGVUYWJsZVNsb3QgKnNsb3QpCiAJcmV0dXJuIHRydWU7CiB9CiAKKy8q CisgKiBnZXQgdHVwcGxlIGFuZCBldmFsdWF0ZSBpbiBhIHBhcnRpdGlvbgorICovCitzdGF0aWMg RGF0dW0KK2dldHR1cGxlX2V2YWxfcGFydGl0aW9uKFdpbmRvd09iamVjdCB3aW5vYmosIGludCBh cmdubywKKwkJCQkJCWludDY0IGFic19wb3MsIGJvb2wgKmlzbnVsbCwgYm9vbCAqaXNvdXQpCit7 CisJV2luZG93QWdnU3RhdGUgKndpbnN0YXRlOworCUV4cHJDb250ZXh0ICplY29udGV4dDsKKwlU dXBsZVRhYmxlU2xvdCAqc2xvdDsKKworCXdpbnN0YXRlID0gd2lub2JqLT53aW5zdGF0ZTsKKwlz bG90ID0gd2luc3RhdGUtPnRlbXBfc2xvdF8xOworCWlmICghd2luZG93X2dldHR1cGxlc2xvdCh3 aW5vYmosIGFic19wb3MsIHNsb3QpKQorCXsKKwkJLyogb3V0IG9mIHBhcnRpdGlvbiAqLworCQlp ZiAoaXNvdXQpCisJCQkqaXNvdXQgPSB0cnVlOworCQkqaXNudWxsID0gdHJ1ZTsKKwkJcmV0dXJu IChEYXR1bSkgMDsKKwl9CisKKwlpZiAoaXNvdXQpCisJCSppc291dCA9IGZhbHNlOworCWVjb250 ZXh0ID0gd2luc3RhdGUtPnNzLnBzLnBzX0V4cHJDb250ZXh0OworCWVjb250ZXh0LT5lY3h0X291 dGVydHVwbGUgPSBzbG90OworCXJldHVybiBFeGVjRXZhbEV4cHIoKEV4cHJTdGF0ZSAqKSBsaXN0 X250aCh3aW5vYmotPmFyZ3N0YXRlcywgYXJnbm8pLAorCQkJCQkJZWNvbnRleHQsIGlzbnVsbCk7 Cit9CisKKy8qCisgKiBpZ25vcmVudWxsc19nZXRmdW5jYXJnaW5mcmFtZQorICogRm9yIElHTk9S RSBOVUxMUywgZ2V0IHRoZSBuZXh0IG5vbm51bGwgdmFsdWUgaW4gdGhlIGZyYW1lLCBtb3Zpbmcg Zm9yd2FyZAorICogb3IgYmFja3dhcmQgdW50aWwgd2UgZmluZCBhIHZhbHVlIG9yIHJlYWNoIHRo ZSBmcmFtZSdzIGVuZC4KKyAqLworc3RhdGljIERhdHVtCitpZ25vcmVudWxsc19nZXRmdW5jYXJn aW5mcmFtZShXaW5kb3dPYmplY3Qgd2lub2JqLCBpbnQgYXJnbm8sCisJCQkJCQkJICBpbnQgcmVs cG9zLCBpbnQgc2Vla3R5cGUsIGJvb2wgc2V0X21hcmssCisJCQkJCQkJICBib29sICppc251bGws IGJvb2wgKmlzb3V0KQoreworCVdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZTsKKwlFeHByQ29udGV4 dCAqZWNvbnRleHQ7CisJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7CisJRGF0dW0JCWRhdHVtOworCWlu dDY0CQlhYnNfcG9zOworCWludDY0CQltYXJrX3BvczsKKwlpbnQJCQlub3RudWxsX29mZnNldDsK KwlpbnQJCQlub3RudWxsX3JlbHBvczsKKwlpbnQJCQlmb3J3YXJkOworCWludAkJCWZyYW1lT3B0 aW9uczsKKworCUFzc2VydChXaW5kb3dPYmplY3RJc1ZhbGlkKHdpbm9iaikpOworCXdpbnN0YXRl ID0gd2lub2JqLT53aW5zdGF0ZTsKKwllY29udGV4dCA9IHdpbnN0YXRlLT5zcy5wcy5wc19FeHBy Q29udGV4dDsKKwlzbG90ID0gd2luc3RhdGUtPnRlbXBfc2xvdF8xOworCWRhdHVtID0gKERhdHVt KSAwOworCW5vdG51bGxfb2Zmc2V0ID0gMDsKKwlub3RudWxsX3JlbHBvcyA9IGFicyhyZWxwb3Mp OworCWZyYW1lT3B0aW9ucyA9IHdpbnN0YXRlLT5mcmFtZU9wdGlvbnM7CisKKwlzd2l0Y2ggKHNl ZWt0eXBlKQorCXsKKwkJY2FzZSBXSU5ET1dfU0VFS19DVVJSRU5UOgorCQkJZWxvZyhFUlJPUiwg IldJTkRPV19TRUVLX0NVUlJFTlQgaXMgbm90IHN1cHBvcnRlZCBmb3IgV2luR2V0RnVuY0FyZ0lu RnJhbWUiKTsKKwkJCWFic19wb3MgPSBtYXJrX3BvcyA9IDA7IC8qIGtlZXAgY29tcGlsZXIgcXVp ZXQgKi8KKwkJCWJyZWFrOworCQljYXNlIFdJTkRPV19TRUVLX0hFQUQ6CisJCQkvKiByZWplY3Rp bmcgcmVscG9zIDwgMCBpcyBlYXN5IGFuZCBzaW1wbGlmaWVzIGNvZGUgYmVsb3cgKi8KKwkJCWlm IChyZWxwb3MgPCAwKQorCQkJCWdvdG8gb3V0X29mX2ZyYW1lOworCQkJdXBkYXRlX2ZyYW1laGVh ZHBvcyh3aW5zdGF0ZSk7CisJCQlhYnNfcG9zID0gd2luc3RhdGUtPmZyYW1laGVhZHBvczsKKwkJ CW1hcmtfcG9zID0gd2luc3RhdGUtPmZyYW1laGVhZHBvczsKKwkJCWZvcndhcmQgPSAxOworCQkJ YnJlYWs7CisJCWNhc2UgV0lORE9XX1NFRUtfVEFJTDoKKwkJCS8qIHJlamVjdGluZyByZWxwb3Mg PiAwIGlzIGVhc3kgYW5kIHNpbXBsaWZpZXMgY29kZSBiZWxvdyAqLworCQkJaWYgKHJlbHBvcyA+ IDApCisJCQkJZ290byBvdXRfb2ZfZnJhbWU7CisJCQl1cGRhdGVfZnJhbWV0YWlscG9zKHdpbnN0 YXRlKTsKKwkJCWFic19wb3MgPSB3aW5zdGF0ZS0+ZnJhbWV0YWlscG9zIC0gMTsKKwkJCW1hcmtf cG9zID0gMDsJCS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KKwkJCWZvcndhcmQgPSAtMTsKKwkJ CWJyZWFrOworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCB3aW5kb3cg c2VlayB0eXBlOiAlZCIsIHNlZWt0eXBlKTsKKwkJCWFic19wb3MgPSBtYXJrX3BvcyA9IDA7IC8q IGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KKwkJCWJyZWFrOworCX0KKworCS8qCisJICogR2V0IHRo ZSBuZXh0IG5vbm51bGwgdmFsdWUgaW4gdGhlIGZyYW1lLCBtb3ZpbmcgZm9yd2FyZCBvciBiYWNr d2FyZAorCSAqIHVudGlsIHdlIGZpbmQgYSB2YWx1ZSBvciByZWFjaCB0aGUgZnJhbWUncyBlbmQu CisJICovCisJZG8KKwl7CisJCWludAkJCWluZnJhbWU7CisJCWludAkJCXY7CisJCWJvb2wJCWdv dHR1cGxlID0gZmFsc2U7CisKKwkJLyoKKwkJICogQ2hlY2sgYXBwYXJlbnQgb3V0IG9mIGZyYW1l IGNhc2UuICBXZSBuZWVkIHRvIGRvIHRoaXMgYmVjYXVzZSB3ZQorCQkgKiBtYXkgbm90IGNhbGwg d2luZG93X2dldHR1cGxlc2xvdCBiZWZvcmUgcm93X2lzX2luX2ZyYW1lLCB3aGljaAorCQkgKiBz dXBwb3NlcyBhYnNfcG9zIGlzIG5ldmVyIG5lZ2F0aXZlLgorCQkgKi8KKwkJaWYgKGFic19wb3Mg PCAwKQorCQkJZ290byBvdXRfb2ZfZnJhbWU7CisKKwkJLyoKKwkJICogcm93X2lzX2luX2ZyYW1l IHJlcXVpcmVzIHNsb3QgaWYgZm9sbG93aW5nIGZyYW1lIG9wdGlvbnMgYXJlIHNldC4KKwkJICov CisJCWlmIChmcmFtZU9wdGlvbnMgJiBGUkFNRU9QVElPTl9FTkRfQ1VSUkVOVF9ST1cgJiYKKwkJ CWZyYW1lT3B0aW9ucyAmIChGUkFNRU9QVElPTl9SQU5HRSB8IEZSQU1FT1BUSU9OX0dST1VQUykp CisJCXsKKwkJCWlmICghd2luZG93X2dldHR1cGxlc2xvdCh3aW5vYmosIGFic19wb3MsIHNsb3Qp KQorCQkJCWdvdG8gb3V0X29mX2ZyYW1lOworCQkJZ290dHVwbGUgPSB0cnVlOworCQl9CisKKwkJ LyogY2hlY2sgd2hldGhlciByb3cgaXMgaW4gZnJhbWUgKi8KKwkJaW5mcmFtZSA9IHJvd19pc19p bl9mcmFtZSh3aW5zdGF0ZSwgYWJzX3Bvcywgc2xvdCk7CisJCWlmIChpbmZyYW1lID09IC0xKQor CQkJZ290byBvdXRfb2ZfZnJhbWU7CisJCWVsc2UgaWYgKGluZnJhbWUgPT0gMCkKKwkJCWdvdG8g YWR2YW5jZTsKKworCQlpZiAoaXNvdXQpCisJCQkqaXNvdXQgPSBmYWxzZTsKKworCQl2ID0gZ2V0 X25vdG51bGxfaW5mbyh3aW5vYmosIGFic19wb3MpOworCQlpZiAodiA9PSBOTl9OVUxMKQkJLyog dGhpcyByb3cgaXMga25vd24gdG8gYmUgTlVMTCAqLworCQkJZ290byBhZHZhbmNlOworCisJCWVs c2UgaWYgKHYgPT0gTk5fVU5LTk9XTikJLyogbmVlZCB0byBjaGVjayBOVUxMIG9yIG5vdCAqLwor CQl7CisJCQlpZiAoIWdvdHR1cGxlKQorCQkJeworCQkJCWlmICghd2luZG93X2dldHR1cGxlc2xv dCh3aW5vYmosIGFic19wb3MsIHNsb3QpKQorCQkJCQlnb3RvIG91dF9vZl9mcmFtZTsKKwkJCX0K KwkJCWVjb250ZXh0LT5lY3h0X291dGVydHVwbGUgPSBzbG90OworCQkJZGF0dW0gPSBFeGVjRXZh bEV4cHIoCisJCQkJCQkJCSAoRXhwclN0YXRlICopIGxpc3RfbnRoKHdpbm9iai0+YXJnc3RhdGVz LCBhcmdubyksCisJCQkJCQkJCSBlY29udGV4dCwgaXNudWxsKTsKKwkJCWlmICghKmlzbnVsbCkK KwkJCQlub3RudWxsX29mZnNldCsrOworCisJCQkvKiByZWNvcmQgdGhlIHJvdyBzdGF0dXMgKi8K KwkJCXB1dF9ub3RudWxsX2luZm8od2lub2JqLCBhYnNfcG9zLCAqaXNudWxsKTsKKwkJfQorCQll bHNlCQkJCQkvKiB0aGlzIHJvdyBpcyBrbm93biB0byBiZSBOT1QgTlVMTCAqLworCQl7CisJCQlu b3RudWxsX29mZnNldCsrOworCQkJaWYgKG5vdG51bGxfb2Zmc2V0ID4gbm90bnVsbF9yZWxwb3Mp CisJCQl7CisJCQkJLyogdG8gcHJlcGFyZSBleGl0aW5nIHRoaXMgbG9vcCwgZGF0dW0gbmVlZHMg dG8gYmUgc2V0ICovCisJCQkJaWYgKCFnb3R0dXBsZSkKKwkJCQl7CisJCQkJCWlmICghd2luZG93 X2dldHR1cGxlc2xvdCh3aW5vYmosIGFic19wb3MsIHNsb3QpKQorCQkJCQkJZ290byBvdXRfb2Zf ZnJhbWU7CisJCQkJfQorCQkJCWVjb250ZXh0LT5lY3h0X291dGVydHVwbGUgPSBzbG90OworCQkJ CWRhdHVtID0gRXhlY0V2YWxFeHByKAorCQkJCQkJCQkJIChFeHByU3RhdGUgKikgbGlzdF9udGgo d2lub2JqLT5hcmdzdGF0ZXMsIGFyZ25vKSwKKwkJCQkJCQkJCSBlY29udGV4dCwgaXNudWxsKTsK KwkJCX0KKwkJfQorYWR2YW5jZToKKwkJYWJzX3BvcyArPSBmb3J3YXJkOworCX0gd2hpbGUgKG5v dG51bGxfb2Zmc2V0IDw9IG5vdG51bGxfcmVscG9zKTsKKworCWlmIChzZXRfbWFyaykKKwkJV2lu U2V0TWFya1Bvc2l0aW9uKHdpbm9iaiwgbWFya19wb3MpOworCisJcmV0dXJuIGRhdHVtOworCitv dXRfb2ZfZnJhbWU6CisJaWYgKGlzb3V0KQorCQkqaXNvdXQgPSB0cnVlOworCSppc251bGwgPSB0 cnVlOworCXJldHVybiAoRGF0dW0pIDA7Cit9CisKKworLyoKKyAqIGluaXRfbm90bnVsbF9pbmZv CisgKiBJbml0aWFsaXplIG5vbiBudWxsIG1hcC4KKyAqLworc3RhdGljIHZvaWQKK2luaXRfbm90 bnVsbF9pbmZvKFdpbmRvd09iamVjdCB3aW5vYmopCit7CisjZGVmaW5lCUlOSVRfTk9UX05VTExf SU5GT19OVU0JMTI4IC8qIGluaXRpYWwgbnVtYmVyIG9mIG5vdG51bGwgaW5mbyBtZW1iZXJzICov CisKKwlpZiAod2lub2JqLT5pZ25vcmVfbnVsbHMgPT0gUEFSU0VSX0lHTk9SRV9OVUxMUykKKwl7 CisJCVNpemUJCXNpemUgPSBOTl9QT1NfVE9fQllURVMoSU5JVF9OT1RfTlVMTF9JTkZPX05VTSk7 CisKKwkJd2lub2JqLT5ub3RudWxsX2luZm8gPSBwYWxsb2MwKHNpemUpOworCQl3aW5vYmotPm51 bV9ub3RudWxsX2luZm8gPSBJTklUX05PVF9OVUxMX0lORk9fTlVNOworCX0KK30KKworLyoKKyAq IGdyb3dfbm90bnVsbF9pbmZvCisgKiBleHBhbmQgbm90bnVsbF9pbmZvIGlmIG5lY2Vzc2FyeS4K KyAqIHBvczogbm90IG51bGwgaW5mbyBwb3NpdGlvbgorKi8KK3N0YXRpYyB2b2lkCitncm93X25v dG51bGxfaW5mbyhXaW5kb3dPYmplY3Qgd2lub2JqLCBpbnQ2NCBwb3MpCit7CisJaWYgKHBvcyA+ PSB3aW5vYmotPm51bV9ub3RudWxsX2luZm8pCisJeworCQlmb3IgKDs7KQorCQl7CisJCQlTaXpl CQlvbGRzaXplID0gTk5fUE9TX1RPX0JZVEVTKHdpbm9iai0+bnVtX25vdG51bGxfaW5mbyk7CisJ CQlTaXplCQluZXdzaXplID0gb2xkc2l6ZSAqIDI7CisKKwkJCXdpbm9iai0+bm90bnVsbF9pbmZv ID0KKwkJCQlyZXBhbGxvYzAod2lub2JqLT5ub3RudWxsX2luZm8sIG9sZHNpemUsIG5ld3NpemUp OworCQkJd2lub2JqLT5udW1fbm90bnVsbF9pbmZvID0gTk5fQllURVNfVE9fUE9TKG5ld3NpemUp OworCQkJaWYgKHdpbm9iai0+bnVtX25vdG51bGxfaW5mbyA+IHBvcykKKwkJCQlicmVhazsKKwkJ fQorCX0KK30KKworLyoKKyAqIGdldF9ub3RudWxsX2luZm8KKyAqIHJldHJpZXZlIGEgbWFwCisg KiBwb3M6IG1hcCBwb3NpdGlvbgorICovCitzdGF0aWMgdWludDgKK2dldF9ub3RudWxsX2luZm8o V2luZG93T2JqZWN0IHdpbm9iaiwgaW50NjQgcG9zKQoreworCXVpbnQ4CQltYjsKKwlpbnQ2NAkJ YnBvczsKKworCWdyb3dfbm90bnVsbF9pbmZvKHdpbm9iaiwgcG9zKTsKKwlicG9zID0gTk5fUE9T X1RPX0JZVEVTKHBvcyk7CisJbWIgPSB3aW5vYmotPm5vdG51bGxfaW5mb1ticG9zXTsKKwlyZXR1 cm4gKG1iID4+IChOTl9TSElGVChwb3MpKSkgJiBOTl9NQVNLOworfQorCisvKgorICogcHV0X25v dG51bGxfaW5mbworICogdXBkYXRlIG1hcAorICogcG9zOiBtYXAgcG9zaXRpb24KKyAqLworc3Rh dGljIHZvaWQKK3B1dF9ub3RudWxsX2luZm8oV2luZG93T2JqZWN0IHdpbm9iaiwgaW50NjQgcG9z LCBib29sIGlzbnVsbCkKK3sKKwl1aW50OAkJbWI7CisJaW50NjQJCWJwb3M7CisJdWludDgJCXZh bCA9IGlzbnVsbCA/IE5OX05VTEwgOiBOTl9OT1ROVUxMOworCWludAkJCXNoaWZ0OworCisJZ3Jv d19ub3RudWxsX2luZm8od2lub2JqLCBwb3MpOworCWJwb3MgPSBOTl9QT1NfVE9fQllURVMocG9z KTsKKwltYiA9IHdpbm9iai0+bm90bnVsbF9pbmZvW2Jwb3NdOworCXNoaWZ0ID0gTk5fU0hJRlQo cG9zKTsKKwltYiAmPSB+KE5OX01BU0sgPDwgc2hpZnQpOwkvKiBjbGVhciBtYXAgKi8KKwltYiB8 PSAodmFsIDw8IHNoaWZ0KTsJCS8qIHVwZGF0ZSBtYXAgKi8KKwl3aW5vYmotPm5vdG51bGxfaW5m b1ticG9zXSA9IG1iOworfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIEFQSSBleHBvc2VkIHRvIHdp bmRvdyBmdW5jdGlvbnMKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogCisvKgorICogV2luQ2hlY2tBbmRJ bml0aWFsaXplTnVsbFRyZWF0bWVudAorICoJCUNoZWNrIG51bGwgdHJlYXRtZW50IGNsYXVzZSBh bmQgc2V0cyBpZ25vcmVfbnVsbHMKKyAqCisgKiBXaW5kb3cgZnVuY3Rpb25zIHNob3VsZCBjYWxs IHRoaXMgdG8gY2hlY2sgaWYgdGhleSBhcmUgYmVpbmcgY2FsbGVkIHdpdGgKKyAqIGEgbnVsbCB0 cmVhdG1lbnQgY2xhdXNlIHdoZW4gdGhleSBkb24ndCBhbGxvdyBpdCwgb3IgdG8gc2V0IGlnbm9y ZV9udWxscy4KKyAqLwordm9pZAorV2luQ2hlY2tBbmRJbml0aWFsaXplTnVsbFRyZWF0bWVudChX aW5kb3dPYmplY3Qgd2lub2JqLAorCQkJCQkJCQkgICBib29sIGFsbG93TnVsbFRyZWF0bWVudCwK KwkJCQkJCQkJICAgRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8pCit7CisJaWYgKHdpbm9iai0+aWdu b3JlX251bGxzICE9IE5PX05VTExUUkVBVE1FTlQgJiYgIWFsbG93TnVsbFRyZWF0bWVudCkKKwl7 CisJCUhlYXBUdXBsZQlwcm9jdHVwOworCQlGb3JtX3BnX3Byb2MgcHJvY2Zvcm07CisJCU9pZAkJ CWZ1bmNpZDsKKworCQlmdW5jaWQgPSBmY2luZm8tPmZsaW5mby0+Zm5fb2lkOworCQlwcm9jdHVw ID0gU2VhcmNoU3lzQ2FjaGUxKFBST0NPSUQsCisJCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShm dW5jaWQpKTsKKwkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHByb2N0dXApKQorCQkJZWxvZyhFUlJP UiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGZ1bmN0aW9uICV1IiwgZnVuY2lkKTsKKwkJcHJv Y2Zvcm0gPSAoRm9ybV9wZ19wcm9jKSBHRVRTVFJVQ1QocHJvY3R1cCk7CisJCWVsb2coRVJST1Is ICJmdW5jdGlvbiAlcyBkb2VzIG5vdCBhbGxvdyBSRVNQRUNUL0lHTk9SRSBOVUxMUyIsCisJCQkg TmFtZVN0cihwcm9jZm9ybS0+cHJvbmFtZSkpOworCX0KKwllbHNlIGlmICh3aW5vYmotPmlnbm9y ZV9udWxscyA9PSBQQVJTRVJfSUdOT1JFX05VTExTKQorCQl3aW5vYmotPmlnbm9yZV9udWxscyA9 IElHTk9SRV9OVUxMUzsKKworfQorCiAvKgogICogV2luR2V0UGFydGl0aW9uTG9jYWxNZW1vcnkK ICAqCQlHZXQgd29ya2luZyBtZW1vcnkgdGhhdCBsaXZlcyB0aWxsIGVuZCBvZiBwYXJ0aXRpb24g cHJvY2Vzc2luZwpAQCAtMzM3OCwyMyArMzcxNSwzNyBAQCBXaW5HZXRGdW5jQXJnSW5QYXJ0aXRp b24oV2luZG93T2JqZWN0IHdpbm9iaiwgaW50IGFyZ25vLAogCQkJCQkJIGJvb2wgKmlzbnVsbCwg Ym9vbCAqaXNvdXQpCiB7CiAJV2luZG93QWdnU3RhdGUgKndpbnN0YXRlOwotCUV4cHJDb250ZXh0 ICplY29udGV4dDsKLQlUdXBsZVRhYmxlU2xvdCAqc2xvdDsKLQlib29sCQlnb3R0dXBsZTsKIAlp bnQ2NAkJYWJzX3BvczsKKwlEYXR1bQkJZGF0dW07CisJYm9vbAkJbnVsbF90cmVhdG1lbnQgPSBm YWxzZTsKKwlpbnQJCQlub3RudWxsX29mZnNldDsKKwlpbnQJCQlub3RudWxsX3JlbHBvczsKKwlp bnQJCQlmb3J3YXJkOwogCiAJQXNzZXJ0KFdpbmRvd09iamVjdElzVmFsaWQod2lub2JqKSk7CiAJ d2luc3RhdGUgPSB3aW5vYmotPndpbnN0YXRlOwotCWVjb250ZXh0ID0gd2luc3RhdGUtPnNzLnBz LnBzX0V4cHJDb250ZXh0OwotCXNsb3QgPSB3aW5zdGF0ZS0+dGVtcF9zbG90XzE7CisKKwlpZiAo d2lub2JqLT5pZ25vcmVfbnVsbHMgPT0gSUdOT1JFX05VTExTICYmIHJlbHBvcyAhPSAwKQorCXsK KwkJbnVsbF90cmVhdG1lbnQgPSB0cnVlOworCQlub3RudWxsX29mZnNldCA9IDA7CisJCW5vdG51 bGxfcmVscG9zID0gYWJzKHJlbHBvcyk7CisJCWZvcndhcmQgPSByZWxwb3MgPiAwID8gMSA6IC0x OworCX0KIAogCXN3aXRjaCAoc2Vla3R5cGUpCiAJewogCQljYXNlIFdJTkRPV19TRUVLX0NVUlJF TlQ6Ci0JCQlhYnNfcG9zID0gd2luc3RhdGUtPmN1cnJlbnRwb3MgKyByZWxwb3M7CisJCQlpZiAo bnVsbF90cmVhdG1lbnQpCisJCQkJYWJzX3BvcyA9IHdpbnN0YXRlLT5jdXJyZW50cG9zOworCQkJ ZWxzZQorCQkJCWFic19wb3MgPSB3aW5zdGF0ZS0+Y3VycmVudHBvcyArIHJlbHBvczsKIAkJCWJy ZWFrOwogCQljYXNlIFdJTkRPV19TRUVLX0hFQUQ6Ci0JCQlhYnNfcG9zID0gcmVscG9zOworCQkJ aWYgKG51bGxfdHJlYXRtZW50KQorCQkJCWFic19wb3MgPSAwOworCQkJZWxzZQorCQkJCWFic19w b3MgPSByZWxwb3M7CiAJCQlicmVhazsKIAkJY2FzZSBXSU5ET1dfU0VFS19UQUlMOgogCQkJc3Bv b2xfdHVwbGVzKHdpbnN0YXRlLCAtMSk7CkBAIC0zNDA2LDI1ICszNzU3LDY3IEBAIFdpbkdldEZ1 bmNBcmdJblBhcnRpdGlvbihXaW5kb3dPYmplY3Qgd2lub2JqLCBpbnQgYXJnbm8sCiAJCQlicmVh azsKIAl9CiAKLQlnb3R0dXBsZSA9IHdpbmRvd19nZXR0dXBsZXNsb3Qod2lub2JqLCBhYnNfcG9z LCBzbG90KTsKLQotCWlmICghZ290dHVwbGUpCi0JewotCQlpZiAoaXNvdXQpCi0JCQkqaXNvdXQg PSB0cnVlOwotCQkqaXNudWxsID0gdHJ1ZTsKLQkJcmV0dXJuIChEYXR1bSkgMDsKLQl9Ci0JZWxz ZQorCWlmICghbnVsbF90cmVhdG1lbnQpCQkvKiBJR05PUkUgTlVMTFMgaXMgbm90IHNwZWNpZmll ZCAqLwogCXsKLQkJaWYgKGlzb3V0KQotCQkJKmlzb3V0ID0gZmFsc2U7Ci0JCWlmIChzZXRfbWFy aykKKwkJZGF0dW0gPSBnZXR0dXBsZV9ldmFsX3BhcnRpdGlvbih3aW5vYmosIGFyZ25vLAorCQkJ CQkJCQkJCWFic19wb3MsIGlzbnVsbCwgaXNvdXQpOworCQlpZiAoISppc291dCAmJiBzZXRfbWFy aykKIAkJCVdpblNldE1hcmtQb3NpdGlvbih3aW5vYmosIGFic19wb3MpOwotCQllY29udGV4dC0+ ZWN4dF9vdXRlcnR1cGxlID0gc2xvdDsKLQkJcmV0dXJuIEV4ZWNFdmFsRXhwcigoRXhwclN0YXRl ICopIGxpc3RfbnRoKHdpbm9iai0+YXJnc3RhdGVzLCBhcmdubyksCi0JCQkJCQkJZWNvbnRleHQs IGlzbnVsbCk7CisJCXJldHVybiBkYXR1bTsKIAl9CisKKwkvKgorCSAqIEdldCB0aGUgbmV4dCBu b25udWxsIHZhbHVlIGluIHRoZSBwYXJ0aXRpb24sIG1vdmluZyBmb3J3YXJkIG9yIGJhY2t3YXJk CisJICogdW50aWwgd2UgZmluZCBhIHZhbHVlIG9yIHJlYWNoIHRoZSBwYXJ0aXRpb24ncyBlbmQu CisJICovCisJZG8KKwl7CisJCWFic19wb3MgKz0gZm9yd2FyZDsKKwkJaWYgKGFic19wb3MgPCAw KQorCQl7CisJCQkvKiBvdXQgb2YgcGFydGl0aW9uICovCisJCQlpZiAoaXNvdXQpCisJCQkJKmlz b3V0ID0gdHJ1ZTsKKwkJCSppc251bGwgPSB0cnVlOworCQkJZGF0dW0gPSAwOworCQkJYnJlYWs7 CisJCX0KKworCQlzd2l0Y2ggKGdldF9ub3RudWxsX2luZm8od2lub2JqLCBhYnNfcG9zKSkKKwkJ eworCQkJY2FzZSBOTl9OT1ROVUxMOgkvKiB0aGlzIHJvdyBpcyBrbm93biB0byBiZSBOT1QgTlVM TCAqLworCQkJCW5vdG51bGxfb2Zmc2V0Kys7CisJCQkJaWYgKG5vdG51bGxfb2Zmc2V0ID49IG5v dG51bGxfcmVscG9zKQorCQkJCXsKKwkJCQkJLyogcHJlcGFyZSB0byBleGl0IHRoaXMgbG9vcCAq LworCQkJCQlkYXR1bSA9IGdldHR1cGxlX2V2YWxfcGFydGl0aW9uKHdpbm9iaiwgYXJnbm8sCisJ CQkJCQkJCQkJCQkJYWJzX3BvcywgaXNudWxsLCBpc291dCk7CisJCQkJfQorCQkJCWJyZWFrOwor CQkJY2FzZSBOTl9OVUxMOgkJLyogdGhpcyByb3cgaXMga25vd24gdG8gYmUgTlVMTCAqLworCQkJ CWlmIChpc291dCkKKwkJCQkJKmlzb3V0ID0gZmFsc2U7CisJCQkJKmlzbnVsbCA9IHRydWU7CisJ CQkJZGF0dW0gPSAwOworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoJCQkvKiBuZWVkIHRvIGNoZWNr IE5VTEwgb3Igbm90ICovCisJCQkJZGF0dW0gPSBnZXR0dXBsZV9ldmFsX3BhcnRpdGlvbih3aW5v YmosIGFyZ25vLAorCQkJCQkJCQkJCQkJYWJzX3BvcywgaXNudWxsLCBpc291dCk7CisJCQkJaWYg KCppc291dCkJCS8qIG91dCBvZiBwYXJ0aXRpb24/ICovCisJCQkJCXJldHVybiBkYXR1bTsKKwor CQkJCWlmICghKmlzbnVsbCkKKwkJCQkJbm90bnVsbF9vZmZzZXQrKzsKKwkJCQkvKiByZWNvcmQg dGhlIHJvdyBzdGF0dXMgKi8KKwkJCQlwdXRfbm90bnVsbF9pbmZvKHdpbm9iaiwgYWJzX3Bvcywg KmlzbnVsbCk7CisJCQkJYnJlYWs7CisJCX0KKwl9IHdoaWxlIChub3RudWxsX29mZnNldCA8IG5v dG51bGxfcmVscG9zKTsKKworCWlmICghKmlzb3V0ICYmIHNldF9tYXJrKQorCQlXaW5TZXRNYXJr UG9zaXRpb24od2lub2JqLCBhYnNfcG9zKTsKKworCXJldHVybiBkYXR1bTsKIH0KIAogLyoKQEAg LTM0NzYsNiArMzg2OSwxMCBAQCBXaW5HZXRGdW5jQXJnSW5GcmFtZShXaW5kb3dPYmplY3Qgd2lu b2JqLCBpbnQgYXJnbm8sCiAJZWNvbnRleHQgPSB3aW5zdGF0ZS0+c3MucHMucHNfRXhwckNvbnRl eHQ7CiAJc2xvdCA9IHdpbnN0YXRlLT50ZW1wX3Nsb3RfMTsKIAorCWlmICh3aW5vYmotPmlnbm9y ZV9udWxscyA9PSBJR05PUkVfTlVMTFMpCisJCXJldHVybiBpZ25vcmVudWxsc19nZXRmdW5jYXJn aW5mcmFtZSh3aW5vYmosIGFyZ25vLCByZWxwb3MsIHNlZWt0eXBlLAorCQkJCQkJCQkJCQkgc2V0 X21hcmssIGlzbnVsbCwgaXNvdXQpOworCiAJc3dpdGNoIChzZWVrdHlwZSkKIAl7CiAJCWNhc2Ug V0lORE9XX1NFRUtfQ1VSUkVOVDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91 dGlsL2NsYXVzZXMuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYwppbmRl eCAyNmEzZTA1MDA4Ni4uOTcwNWM4ZWYyZTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGlt aXplci91dGlsL2NsYXVzZXMuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1 c2VzLmMKQEAgLTI1NzIsNiArMjU3Miw3IEBAIGV2YWxfY29uc3RfZXhwcmVzc2lvbnNfbXV0YXRv cihOb2RlICpub2RlLAogCQkJCW5ld2V4cHItPndpbnJlZiA9IGV4cHItPndpbnJlZjsKIAkJCQlu ZXdleHByLT53aW5zdGFyID0gZXhwci0+d2luc3RhcjsKIAkJCQluZXdleHByLT53aW5hZ2cgPSBl eHByLT53aW5hZ2c7CisJCQkJbmV3ZXhwci0+aWdub3JlX251bGxzID0gZXhwci0+aWdub3JlX251 bGxzOwogCQkJCW5ld2V4cHItPmxvY2F0aW9uID0gZXhwci0+bG9jYXRpb247CiAKIAkJCQlyZXR1 cm4gKE5vZGUgKikgbmV3ZXhwcjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFt LnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IDUwZjUzMTU5ZDU4Li41NDdiN2Y3 ZTQ2NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFj a2VuZC9wYXJzZXIvZ3JhbS55CkBAIC02MzEsNyArNjMxLDcgQEAgc3RhdGljIE5vZGUgKm1ha2VS ZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1 ZXJ5KTsKICV0eXBlIDxsaXN0Pgl3aW5kb3dfY2xhdXNlIHdpbmRvd19kZWZpbml0aW9uX2xpc3Qg b3B0X3BhcnRpdGlvbl9jbGF1c2UKICV0eXBlIDx3aW5kZWY+CXdpbmRvd19kZWZpbml0aW9uIG92 ZXJfY2xhdXNlIHdpbmRvd19zcGVjaWZpY2F0aW9uCiAJCQkJb3B0X2ZyYW1lX2NsYXVzZSBmcmFt ZV9leHRlbnQgZnJhbWVfYm91bmQKLSV0eXBlIDxpdmFsPglvcHRfd2luZG93X2V4Y2x1c2lvbl9j bGF1c2UKKyV0eXBlIDxpdmFsPgludWxsX3RyZWF0bWVudCBvcHRfd2luZG93X2V4Y2x1c2lvbl9j bGF1c2UKICV0eXBlIDxzdHI+CQlvcHRfZXhpc3Rpbmdfd2luZG93X25hbWUKICV0eXBlIDxib29s ZWFuPiBvcHRfaWZfbm90X2V4aXN0cwogJXR5cGUgPGJvb2xlYW4+IG9wdF91bmlxdWVfbnVsbF90 cmVhdG1lbnQKQEAgLTcyOSw3ICs3MjksNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZp ZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCiAJ SEFORExFUiBIQVZJTkcgSEVBREVSX1AgSE9MRCBIT1VSX1AKIAotCUlERU5USVRZX1AgSUZfUCBJ TElLRSBJTU1FRElBVEUgSU1NVVRBQkxFIElNUExJQ0lUX1AgSU1QT1JUX1AgSU5fUCBJTkNMVURF CisJSURFTlRJVFlfUCBJRl9QIElHTk9SRV9QIElMSUtFIElNTUVESUFURSBJTU1VVEFCTEUgSU1Q TElDSVRfUCBJTVBPUlRfUCBJTl9QIElOQ0xVREUKIAlJTkNMVURJTkcgSU5DUkVNRU5UIElOREVO VCBJTkRFWCBJTkRFWEVTIElOSEVSSVQgSU5IRVJJVFMgSU5JVElBTExZIElOTElORV9QCiAJSU5O RVJfUCBJTk9VVCBJTlBVVF9QIElOU0VOU0lUSVZFIElOU0VSVCBJTlNURUFEIElOVF9QIElOVEVH RVIKIAlJTlRFUlNFQ1QgSU5URVJWQUwgSU5UTyBJTlZPS0VSIElTIElTTlVMTCBJU09MQVRJT04K QEAgLTc2NCw3ICs3NjQsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3Qo Y2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCiAJUkFOR0UgUkVB RCBSRUFMIFJFQVNTSUdOIFJFQ1VSU0lWRSBSRUZfUCBSRUZFUkVOQ0VTIFJFRkVSRU5DSU5HCiAJ UkVGUkVTSCBSRUlOREVYIFJFTEFUSVZFX1AgUkVMRUFTRSBSRU5BTUUgUkVQRUFUQUJMRSBSRVBM QUNFIFJFUExJQ0EKLQlSRVNFVCBSRVNUQVJUIFJFU1RSSUNUIFJFVFVSTiBSRVRVUk5JTkcgUkVU VVJOUyBSRVZPS0UgUklHSFQgUk9MRSBST0xMQkFDSyBST0xMVVAKKwlSRVNFVCBSRVNQRUNUX1Ag UkVTVEFSVCBSRVNUUklDVCBSRVRVUk4gUkVUVVJOSU5HIFJFVFVSTlMgUkVWT0tFIFJJR0hUIFJP TEUgUk9MTEJBQ0sgUk9MTFVQCiAJUk9VVElORSBST1VUSU5FUyBST1cgUk9XUyBSVUxFCiAKIAlT QVZFUE9JTlQgU0NBTEFSIFNDSEVNQSBTQ0hFTUFTIFNDUk9MTCBTRUFSQ0ggU0VDT05EX1AgU0VD VVJJVFkgU0VMRUNUCkBAIC0xNTczOCw3ICsxNTczOCw3IEBAIGZ1bmNfYXBwbGljYXRpb246IGZ1 bmNfbmFtZSAnKCcgJyknCiAgKiAoTm90ZSB0aGF0IG1hbnkgb2YgdGhlIHNwZWNpYWwgU1FMIGZ1 bmN0aW9ucyB3b3VsZG4ndCBhY3R1YWxseSBtYWtlIGFueQogICogc2Vuc2UgYXMgZnVuY3Rpb25h bCBpbmRleCBlbnRyaWVzLCBidXQgd2UgaWdub3JlIHRoYXQgY29uc2lkZXJhdGlvbiBoZXJlLikK ICAqLwotZnVuY19leHByOiBmdW5jX2FwcGxpY2F0aW9uIHdpdGhpbl9ncm91cF9jbGF1c2UgZmls dGVyX2NsYXVzZSBvdmVyX2NsYXVzZQorZnVuY19leHByOiBmdW5jX2FwcGxpY2F0aW9uIHdpdGhp bl9ncm91cF9jbGF1c2UgZmlsdGVyX2NsYXVzZSBudWxsX3RyZWF0bWVudCBvdmVyX2NsYXVzZQog CQkJCXsKIAkJCQkJRnVuY0NhbGwgICAqbiA9IChGdW5jQ2FsbCAqKSAkMTsKIApAQCAtMTU3NzEs NyArMTU3NzEsOCBAQCBmdW5jX2V4cHI6IGZ1bmNfYXBwbGljYXRpb24gd2l0aGluX2dyb3VwX2Ns YXVzZSBmaWx0ZXJfY2xhdXNlIG92ZXJfY2xhdXNlCiAJCQkJCQluLT5hZ2dfd2l0aGluX2dyb3Vw ID0gdHJ1ZTsKIAkJCQkJfQogCQkJCQluLT5hZ2dfZmlsdGVyID0gJDM7Ci0JCQkJCW4tPm92ZXIg PSAkNDsKKwkJCQkJbi0+aWdub3JlX251bGxzID0gJDQ7CisJCQkJCW4tPm92ZXIgPSAkNTsKIAkJ CQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KIAkJCXwganNvbl9hZ2dyZWdhdGVfZnVuYyBmaWx0 ZXJfY2xhdXNlIG92ZXJfY2xhdXNlCkBAIC0xNjM2Nyw2ICsxNjM2OCwxMiBAQCBmaWx0ZXJfY2xh dXNlOgogLyoKICAqIFdpbmRvdyBEZWZpbml0aW9ucwogICovCitudWxsX3RyZWF0bWVudDoKKwkJ CUlHTk9SRV9QIE5VTExTX1AJCQkJCQl7ICQkID0gUEFSU0VSX0lHTk9SRV9OVUxMUzsgfQorCQkJ fCBSRVNQRUNUX1AgTlVMTFNfUAkJCQkJCXsgJCQgPSBQQVJTRVJfUkVTUEVDVF9OVUxMUzsgfQor CQkJfCAvKkVNUFRZKi8JCQkJCQkJCXsgJCQgPSBOT19OVUxMVFJFQVRNRU5UOyB9CisJCTsKKwog d2luZG93X2NsYXVzZToKIAkJCVdJTkRPVyB3aW5kb3dfZGVmaW5pdGlvbl9saXN0CQkJeyAkJCA9 ICQyOyB9CiAJCQl8IC8qRU1QVFkqLwkJCQkJCQkJeyAkJCA9IE5JTDsgfQpAQCAtMTc3OTMsNiAr MTc4MDAsNyBAQCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IEhPVVJfUAogCQkJfCBJREVOVElU WV9QCiAJCQl8IElGX1AKKwkJCXwgSUdOT1JFX1AKIAkJCXwgSU1NRURJQVRFCiAJCQl8IElNTVVU QUJMRQogCQkJfCBJTVBMSUNJVF9QCkBAIC0xNzkxMSw2ICsxNzkxOSw3IEBAIHVucmVzZXJ2ZWRf a2V5d29yZDoKIAkJCXwgUkVQTEFDRQogCQkJfCBSRVBMSUNBCiAJCQl8IFJFU0VUCisJCQl8IFJF U1BFQ1RfUAogCQkJfCBSRVNUQVJUCiAJCQl8IFJFU1RSSUNUCiAJCQl8IFJFVFVSTgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9mdW5jLmMKaW5kZXggNTgzYmJiZjIzMmYuLjM3NzJjNTE0YjFlIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9mdW5jLmMKQEAgLTk4LDYgKzk4LDcgQEAgUGFyc2VGdW5jT3JDb2x1bW4oUGFyc2VT dGF0ZSAqcHN0YXRlLCBMaXN0ICpmdW5jbmFtZSwgTGlzdCAqZmFyZ3MsCiAJYm9vbAkJYWdnX3N0 YXIgPSAoZm4gPyBmbi0+YWdnX3N0YXIgOiBmYWxzZSk7CiAJYm9vbAkJYWdnX2Rpc3RpbmN0ID0g KGZuID8gZm4tPmFnZ19kaXN0aW5jdCA6IGZhbHNlKTsKIAlib29sCQlmdW5jX3ZhcmlhZGljID0g KGZuID8gZm4tPmZ1bmNfdmFyaWFkaWMgOiBmYWxzZSk7CisJaW50CQkJaWdub3JlX251bGxzID0g KGZuID8gZm4tPmlnbm9yZV9udWxscyA6IDApOwogCUNvZXJjaW9uRm9ybSBmdW5jZm9ybWF0ID0g KGZuID8gZm4tPmZ1bmNmb3JtYXQgOiBDT0VSQ0VfRVhQTElDSVRfQ0FMTCk7CiAJYm9vbAkJY291 bGRfYmVfcHJvamVjdGlvbjsKIAlPaWQJCQlyZXR0eXBlOwpAQCAtNTE0LDYgKzUxNSwxMyBAQCBQ YXJzZUZ1bmNPckNvbHVtbihQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKmZ1bmNuYW1lLCBMaXN0 ICpmYXJncywKIAkJCQkJCSBlcnJtc2coIiVzIGlzIG5vdCBhbiBvcmRlcmVkLXNldCBhZ2dyZWdh dGUsIHNvIGl0IGNhbm5vdCBoYXZlIFdJVEhJTiBHUk9VUCIsCiAJCQkJCQkJCU5hbWVMaXN0VG9T dHJpbmcoZnVuY25hbWUpKSwKIAkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBsb2Nh dGlvbikpKTsKKworCQkJLyogSXQgYWxzbyBjYW4ndCB0cmVhdCBudWxscyBhcyBhIHdpbmRvdyBm dW5jdGlvbiAqLworCQkJaWYgKGlnbm9yZV9udWxscyAhPSBOT19OVUxMVFJFQVRNRU5UKQorCQkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBF KSwKKwkJCQkJCSBlcnJtc2coImFnZ3JlZ2F0ZSBmdW5jdGlvbnMgZG8gbm90IGFjY2VwdCBSRVNQ RUNUL0lHTk9SRSBOVUxMUyIpLAorCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGxv Y2F0aW9uKSkpOwogCQl9CiAJfQogCWVsc2UgaWYgKGZkcmVzdWx0ID09IEZVTkNERVRBSUxfV0lO RE9XRlVOQykKQEAgLTgzNCw2ICs4NDIsNyBAQCBQYXJzZUZ1bmNPckNvbHVtbihQYXJzZVN0YXRl ICpwc3RhdGUsIExpc3QgKmZ1bmNuYW1lLCBMaXN0ICpmYXJncywKIAkJd2Z1bmMtPndpbnN0YXIg PSBhZ2dfc3RhcjsKIAkJd2Z1bmMtPndpbmFnZyA9IChmZHJlc3VsdCA9PSBGVU5DREVUQUlMX0FH R1JFR0FURSk7CiAJCXdmdW5jLT5hZ2dmaWx0ZXIgPSBhZ2dfZmlsdGVyOworCQl3ZnVuYy0+aWdu b3JlX251bGxzID0gaWdub3JlX251bGxzOwogCQl3ZnVuYy0+cnVuQ29uZGl0aW9uID0gTklMOwog CQl3ZnVuYy0+bG9jYXRpb24gPSBsb2NhdGlvbjsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5j CmluZGV4IDNkNmU2YmRiZmQyLi40ZTgzN2QyYWZlYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRp bHMuYwpAQCAtMTEwOTAsNyArMTEwOTAsMTIgQEAgZ2V0X3dpbmRvd2Z1bmNfZXhwcl9oZWxwZXIo V2luZG93RnVuYyAqd2Z1bmMsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwKIAkJZ2V0X3J1bGVf ZXhwcigoTm9kZSAqKSB3ZnVuYy0+YWdnZmlsdGVyLCBjb250ZXh0LCBmYWxzZSk7CiAJfQogCi0J YXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIpIE9WRVIgIik7CisJYXBwZW5kU3RyaW5nSW5m b1N0cmluZyhidWYsICIpICIpOworCisJaWYgKHdmdW5jLT5pZ25vcmVfbnVsbHMgPT0gUEFSU0VS X0lHTk9SRV9OVUxMUykKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICJJR05PUkUgTlVM TFMgIik7CisKKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIk9WRVIgIik7CiAKIAlpZiAo Y29udGV4dC0+d2luZG93Q2xhdXNlKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC93aW5kb3dmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3dpbmRvd2Z1bmNzLmMK aW5kZXggYmIzNWYzYmM0YTkuLjk2OWYwMmFhNTliIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvd2luZG93ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvd2luZG93 ZnVuY3MuYwpAQCAtODYsNiArODYsNyBAQCB3aW5kb3dfcm93X251bWJlcihQR19GVU5DVElPTl9B UkdTKQogCVdpbmRvd09iamVjdCB3aW5vYmogPSBQR19XSU5ET1dfT0JKRUNUKCk7CiAJaW50NjQJ CWN1cnBvcyA9IFdpbkdldEN1cnJlbnRQb3NpdGlvbih3aW5vYmopOwogCisJV2luQ2hlY2tBbmRJ bml0aWFsaXplTnVsbFRyZWF0bWVudCh3aW5vYmosIGZhbHNlLCBmY2luZm8pOwogCVdpblNldE1h cmtQb3NpdGlvbih3aW5vYmosIGN1cnBvcyk7CiAJUEdfUkVUVVJOX0lOVDY0KGN1cnBvcyArIDEp OwogfQpAQCAtMTQxLDYgKzE0Miw3IEBAIHdpbmRvd19yYW5rKFBHX0ZVTkNUSU9OX0FSR1MpCiAJ cmFua19jb250ZXh0ICpjb250ZXh0OwogCWJvb2wJCXVwOwogCisJV2luQ2hlY2tBbmRJbml0aWFs aXplTnVsbFRyZWF0bWVudCh3aW5vYmosIGZhbHNlLCBmY2luZm8pOwogCXVwID0gcmFua191cCh3 aW5vYmopOwogCWNvbnRleHQgPSAocmFua19jb250ZXh0ICopCiAJCVdpbkdldFBhcnRpdGlvbkxv Y2FsTWVtb3J5KHdpbm9iaiwgc2l6ZW9mKHJhbmtfY29udGV4dCkpOwpAQCAtMjAzLDYgKzIwNSw3 IEBAIHdpbmRvd19kZW5zZV9yYW5rKFBHX0ZVTkNUSU9OX0FSR1MpCiAJcmFua19jb250ZXh0ICpj b250ZXh0OwogCWJvb2wJCXVwOwogCisJV2luQ2hlY2tBbmRJbml0aWFsaXplTnVsbFRyZWF0bWVu dCh3aW5vYmosIGZhbHNlLCBmY2luZm8pOwogCXVwID0gcmFua191cCh3aW5vYmopOwogCWNvbnRl eHQgPSAocmFua19jb250ZXh0ICopCiAJCVdpbkdldFBhcnRpdGlvbkxvY2FsTWVtb3J5KHdpbm9i aiwgc2l6ZW9mKHJhbmtfY29udGV4dCkpOwpAQCAtMjY2LDYgKzI2OSw3IEBAIHdpbmRvd19wZXJj ZW50X3JhbmsoUEdfRlVOQ1RJT05fQVJHUykKIAlpbnQ2NAkJdG90YWxyb3dzID0gV2luR2V0UGFy dGl0aW9uUm93Q291bnQod2lub2JqKTsKIAogCUFzc2VydCh0b3RhbHJvd3MgPiAwKTsKKwlXaW5D aGVja0FuZEluaXRpYWxpemVOdWxsVHJlYXRtZW50KHdpbm9iaiwgZmFsc2UsIGZjaW5mbyk7CiAK IAl1cCA9IHJhbmtfdXAod2lub2JqKTsKIAljb250ZXh0ID0gKHJhbmtfY29udGV4dCAqKQpAQCAt MzM1LDYgKzMzOSw3IEBAIHdpbmRvd19jdW1lX2Rpc3QoUEdfRlVOQ1RJT05fQVJHUykKIAlpbnQ2 NAkJdG90YWxyb3dzID0gV2luR2V0UGFydGl0aW9uUm93Q291bnQod2lub2JqKTsKIAogCUFzc2Vy dCh0b3RhbHJvd3MgPiAwKTsKKwlXaW5DaGVja0FuZEluaXRpYWxpemVOdWxsVHJlYXRtZW50KHdp bm9iaiwgZmFsc2UsIGZjaW5mbyk7CiAKIAl1cCA9IHJhbmtfdXAod2lub2JqKTsKIAljb250ZXh0 ID0gKHJhbmtfY29udGV4dCAqKQpAQCAtNDEzLDYgKzQxOCw3IEBAIHdpbmRvd19udGlsZShQR19G VU5DVElPTl9BUkdTKQogCVdpbmRvd09iamVjdCB3aW5vYmogPSBQR19XSU5ET1dfT0JKRUNUKCk7 CiAJbnRpbGVfY29udGV4dCAqY29udGV4dDsKIAorCVdpbkNoZWNrQW5kSW5pdGlhbGl6ZU51bGxU cmVhdG1lbnQod2lub2JqLCBmYWxzZSwgZmNpbmZvKTsKIAljb250ZXh0ID0gKG50aWxlX2NvbnRl eHQgKikKIAkJV2luR2V0UGFydGl0aW9uTG9jYWxNZW1vcnkod2lub2JqLCBzaXplb2YobnRpbGVf Y29udGV4dCkpOwogCkBAIC01MzUsNiArNTQxLDcgQEAgbGVhZGxhZ19jb21tb24oRnVuY3Rpb25D YWxsSW5mbyBmY2luZm8sCiAJYm9vbAkJaXNudWxsOwogCWJvb2wJCWlzb3V0OwogCisJV2luQ2hl Y2tBbmRJbml0aWFsaXplTnVsbFRyZWF0bWVudCh3aW5vYmosIHRydWUsIGZjaW5mbyk7CiAJaWYg KHdpdGhvZmZzZXQpCiAJewogCQlvZmZzZXQgPSBEYXR1bUdldEludDMyKFdpbkdldEZ1bmNBcmdD dXJyZW50KHdpbm9iaiwgMSwgJmlzbnVsbCkpOwpAQCAtNjUyLDYgKzY1OSw3IEBAIHdpbmRvd19m aXJzdF92YWx1ZShQR19GVU5DVElPTl9BUkdTKQogCURhdHVtCQlyZXN1bHQ7CiAJYm9vbAkJaXNu dWxsOwogCisJV2luQ2hlY2tBbmRJbml0aWFsaXplTnVsbFRyZWF0bWVudCh3aW5vYmosIHRydWUs IGZjaW5mbyk7CiAJcmVzdWx0ID0gV2luR2V0RnVuY0FyZ0luRnJhbWUod2lub2JqLCAwLAogCQkJ CQkJCQkgIDAsIFdJTkRPV19TRUVLX0hFQUQsIHRydWUsCiAJCQkJCQkJCSAgJmlzbnVsbCwgTlVM TCk7CkBAIC02NzMsNiArNjgxLDcgQEAgd2luZG93X2xhc3RfdmFsdWUoUEdfRlVOQ1RJT05fQVJH UykKIAlEYXR1bQkJcmVzdWx0OwogCWJvb2wJCWlzbnVsbDsKIAorCVdpbkNoZWNrQW5kSW5pdGlh bGl6ZU51bGxUcmVhdG1lbnQod2lub2JqLCB0cnVlLCBmY2luZm8pOwogCXJlc3VsdCA9IFdpbkdl dEZ1bmNBcmdJbkZyYW1lKHdpbm9iaiwgMCwKIAkJCQkJCQkJICAwLCBXSU5ET1dfU0VFS19UQUlM LCB0cnVlLAogCQkJCQkJCQkgICZpc251bGwsIE5VTEwpOwpAQCAtNjk2LDYgKzcwNSw3IEBAIHdp bmRvd19udGhfdmFsdWUoUEdfRlVOQ1RJT05fQVJHUykKIAlib29sCQlpc251bGw7CiAJaW50MzIJ CW50aDsKIAorCVdpbkNoZWNrQW5kSW5pdGlhbGl6ZU51bGxUcmVhdG1lbnQod2lub2JqLCB0cnVl LCBmY2luZm8pOwogCW50aCA9IERhdHVtR2V0SW50MzIoV2luR2V0RnVuY0FyZ0N1cnJlbnQod2lu b2JqLCAxLCAmaXNudWxsKSk7CiAJaWYgKGlzbnVsbCkKIAkJUEdfUkVUVVJOX05VTEwoKTsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25v ZGVzL3BhcnNlbm9kZXMuaAppbmRleCBiYTEyNjc4ZDFjYi4uOGJlZGFmMmY3NTAgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rl cy9wYXJzZW5vZGVzLmgKQEAgLTQ1Miw2ICs0NTIsNyBAQCB0eXBlZGVmIHN0cnVjdCBGdW5jQ2Fs bAogCUxpc3QJICAgKmFnZ19vcmRlcjsJCS8qIE9SREVSIEJZIChsaXN0IG9mIFNvcnRCeSkgKi8K IAlOb2RlCSAgICphZ2dfZmlsdGVyOwkJLyogRklMVEVSIGNsYXVzZSwgaWYgYW55ICovCiAJc3Ry dWN0IFdpbmRvd0RlZiAqb3ZlcjsJCS8qIE9WRVIgY2xhdXNlLCBpZiBhbnkgKi8KKwlpbnQJCQlp Z25vcmVfbnVsbHM7CS8qIGlnbm9yZSBudWxscyBmb3Igd2luZG93IGZ1bmN0aW9uICovCiAJYm9v bAkJYWdnX3dpdGhpbl9ncm91cDsJLyogT1JERVIgQlkgYXBwZWFyZWQgaW4gV0lUSElOIEdST1VQ ICovCiAJYm9vbAkJYWdnX3N0YXI7CQkvKiBhcmd1bWVudCB3YXMgcmVhbGx5ICcqJyAqLwogCWJv b2wJCWFnZ19kaXN0aW5jdDsJLyogYXJndW1lbnRzIHdlcmUgbGFiZWxlZCBESVNUSU5DVCAqLwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmggYi9zcmMvaW5jbHVkZS9u b2Rlcy9wcmltbm9kZXMuaAppbmRleCA2ZGZjYTNjYjM1Yi4uZTlkOGJmNzQxNDUgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVz L3ByaW1ub2Rlcy5oCkBAIC01NzksNiArNTc5LDE3IEBAIHR5cGVkZWYgc3RydWN0IEdyb3VwaW5n RnVuYwogICogQ29sbGF0aW9uIGluZm9ybWF0aW9uIGlzIGlycmVsZXZhbnQgZm9yIHRoZSBxdWVy eSBqdW1ibGluZywgYXMgaXMgdGhlCiAgKiBpbnRlcm5hbCBzdGF0ZSBpbmZvcm1hdGlvbiBvZiB0 aGUgbm9kZSBsaWtlICJ3aW5zdGFyIiBhbmQgIndpbmFnZyIuCiAgKi8KKworLyoKKyAqIE51bGwg VHJlYXRtZW50IG9wdGlvbnMuIElmIHNwZWNpZmllZCwgaW5pdGlhbGx5IHNldCB0byBQQVJTRVJf SUdOT1JFX05VTExTCisgKiB3aGljaCBpcyB0aGVuIGNvbnZlcnRlZCB0byBJR05PUkVfTlVMTFMg aWYgdGhlIHdpbmRvdyBmdW5jdGlvbiBhbGxvd3MgdGhlCisgKiBudWxsIHRyZWF0bWVudCBjbGF1 c2UuCisgKi8KKyNkZWZpbmUgTk9fTlVMTFRSRUFUTUVOVCAwCisjZGVmaW5lIFBBUlNFUl9JR05P UkVfTlVMTFMgMQorI2RlZmluZSBQQVJTRVJfUkVTUEVDVF9OVUxMUyAyCisjZGVmaW5lIElHTk9S RV9OVUxMUyAzCisKIHR5cGVkZWYgc3RydWN0IFdpbmRvd0Z1bmMKIHsKIAlFeHByCQl4cHI7CkBA IC02MDIsNiArNjEzLDggQEAgdHlwZWRlZiBzdHJ1Y3QgV2luZG93RnVuYwogCWJvb2wJCXdpbnN0 YXIgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwogCS8qIGlzIGZ1bmN0aW9uIGEg c2ltcGxlIGFnZ3JlZ2F0ZT8gKi8KIAlib29sCQl3aW5hZ2cgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1 bWJsZV9pZ25vcmUpOworCS8qIGlnbm9yZSBudWxscy4gT25lIG9mIHRoZSBOdWxsIFRyZWF0bWVu dCBvcHRpb25zICovCisJaW50CQkJaWdub3JlX251bGxzOwogCS8qIHRva2VuIGxvY2F0aW9uLCBv ciAtMSBpZiB1bmtub3duICovCiAJUGFyc2VMb2MJbG9jYXRpb247CiB9IFdpbmRvd0Z1bmM7CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggYi9zcmMvaW5jbHVkZS9wYXJz ZXIva3dsaXN0LmgKaW5kZXggYTRhZjNmNzE3YTEuLjg0MTgyZWFhYWUyIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlz dC5oCkBAIC0yMDIsNiArMjAyLDcgQEAgUEdfS0VZV09SRCgiaG9sZCIsIEhPTEQsIFVOUkVTRVJW RURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImhvdXIiLCBIT1VSX1AsIFVOUkVT RVJWRURfS0VZV09SRCwgQVNfTEFCRUwpCiBQR19LRVlXT1JEKCJpZGVudGl0eSIsIElERU5USVRZ X1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImlmIiwgSUZf UCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgiaWdub3JlIiwg SUdOT1JFX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQVNfTEFCRUwpCiBQR19LRVlXT1JEKCJpbGlr ZSIsIElMSUtFLCBUWVBFX0ZVTkNfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09S RCgiaW1tZWRpYXRlIiwgSU1NRURJQVRFLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwp CiBQR19LRVlXT1JEKCJpbW11dGFibGUiLCBJTU1VVEFCTEUsIFVOUkVTRVJWRURfS0VZV09SRCwg QkFSRV9MQUJFTCkKQEAgLTM3OCw2ICszNzksNyBAQCBQR19LRVlXT1JEKCJyZXBlYXRhYmxlIiwg UkVQRUFUQUJMRSwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgi cmVwbGFjZSIsIFJFUExBQ0UsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tF WVdPUkQoInJlcGxpY2EiLCBSRVBMSUNBLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwp CiBQR19LRVlXT1JEKCJyZXNldCIsIFJFU0VULCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFC RUwpCitQR19LRVlXT1JEKCJyZXNwZWN0IiwgUkVTUEVDVF9QLCBVTlJFU0VSVkVEX0tFWVdPUkQs IEFTX0xBQkVMKQogUEdfS0VZV09SRCgicmVzdGFydCIsIFJFU1RBUlQsIFVOUkVTRVJWRURfS0VZ V09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInJlc3RyaWN0IiwgUkVTVFJJQ1QsIFVOUkVT RVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInJldHVybiIsIFJFVFVSTiwg VU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv d2luZG93YXBpLmggYi9zcmMvaW5jbHVkZS93aW5kb3dhcGkuaAppbmRleCBjYjJlY2UxNjZiNi4u MjBjZmQ5ZTlkZDkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3dpbmRvd2FwaS5oCisrKyBiL3Ny Yy9pbmNsdWRlL3dpbmRvd2FwaS5oCkBAIC0yOCw2ICsyOCw4IEBACiAjaWZuZGVmIFdJTkRPV0FQ SV9ICiAjZGVmaW5lIFdJTkRPV0FQSV9ICiAKKyNpbmNsdWRlICJmbWdyLmgiCisKIC8qIHZhbHVl cyBvZiAic2Vla3R5cGUiICovCiAjZGVmaW5lIFdJTkRPV19TRUVLX0NVUlJFTlQgMAogI2RlZmlu ZSBXSU5ET1dfU0VFS19IRUFEIDEKQEAgLTQxLDYgKzQzLDEwIEBAIHR5cGVkZWYgc3RydWN0IFdp bmRvd09iamVjdERhdGEgKldpbmRvd09iamVjdDsKICNkZWZpbmUgV2luZG93T2JqZWN0SXNWYWxp ZCh3aW5vYmopIFwKIAkoKHdpbm9iaikgIT0gTlVMTCAmJiBJc0Eod2lub2JqLCBXaW5kb3dPYmpl Y3REYXRhKSkKIAorZXh0ZXJuIHZvaWQgV2luQ2hlY2tBbmRJbml0aWFsaXplTnVsbFRyZWF0bWVu dChXaW5kb3dPYmplY3Qgd2lub2JqLAorCQkJCQkJCQkJCQkgICBib29sIGFsbG93TnVsbFRyZWF0 bWVudCwKKwkJCQkJCQkJCQkJICAgRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8pOworCiBleHRlcm4g dm9pZCAqV2luR2V0UGFydGl0aW9uTG9jYWxNZW1vcnkoV2luZG93T2JqZWN0IHdpbm9iaiwgU2l6 ZSBzeik7CiAKIGV4dGVybiBpbnQ2NCBXaW5HZXRDdXJyZW50UG9zaXRpb24oV2luZG93T2JqZWN0 IHdpbm9iaik7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpbmRvdy5v dXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpbmRvdy5vdXQKaW5kZXggYjg2YjY2OGY0 MzMuLmY5MjlkODFiYzhhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dp bmRvdy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aW5kb3cub3V0CkBAIC01 NDUzLDMgKzU0NTMsMzE0IEBAIFNFTEVDVCAqIEZST00gcGdfdGVtcC5mKDIpOwogIHs1fQogKDUg cm93cykKIAorLS0gSUdOT1JFIE5VTExTIHRlc3RzCitDUkVBVEUgVEVNUE9SQVJZIFRBQkxFIHBs YW5ldHMgKAorICAgIG5hbWUgdGV4dCwKKyAgICBkaXN0YW5jZSB0ZXh0LAorICAgIG9yYml0IGlu dGVnZXIKKyk7CitJTlNFUlQgSU5UTyBwbGFuZXRzIFZBTFVFUworICAoJ21lcmN1cnknLCAnY2xv c2UnLCA4OCksCisgICgndmVudXMnLCAnY2xvc2UnLCAyMjQpLAorICAoJ2VhcnRoJywgJ2Nsb3Nl JywgTlVMTCksCisgICgnbWFycycsICdjbG9zZScsIE5VTEwpLAorICAoJ2p1cGl0ZXInLCAnY2xv c2UnLCA0MzMyKSwKKyAgKCdzYXR1cm4nLCAnZmFyJywgMjQ0OTEpLAorICAoJ3VyYW51cycsICdm YXInLCBOVUxMKSwKKyAgKCduZXB0dW5lJywgJ2ZhcicsIDYwMTgyKSwKKyAgKCdwbHV0bycsICdm YXInLCA5MDU2MCksCisgICgneHl6enknLCAnZmFyJywgTlVMTCk7CistLSB0ZXN0IHJ1bGV1dGls cworQ1JFQVRFIFZJRVcgcGxhbmV0c192aWV3IEFTCitTRUxFQ1QgbmFtZSwKKyAgICAgICBvcmJp dCwKKyAgICAgICBsYWcob3JiaXQpIE9WRVIgdyBBUyBsYWcsCisgICAgICAgbGFnKG9yYml0KSBS RVNQRUNUIE5VTExTIE9WRVIgdyBBUyBsYWdfcmVzcGVjdCwKKyAgICAgICBsYWcob3JiaXQpIElH Tk9SRSBOVUxMUyBPVkVSIHcgQVMgbGFnX2lnbm9yZQorRlJPTSBwbGFuZXRzCitXSU5ET1cgdyBB UyAoT1JERVIgQlkgbmFtZSkKKzsKK05PVElDRTogIHZpZXcgInBsYW5ldHNfdmlldyIgd2lsbCBi ZSBhIHRlbXBvcmFyeSB2aWV3CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3BsYW5ldHNfdmlldycp OworICAgICAgICAgICAgICAgICAgcGdfZ2V0X3ZpZXdkZWYgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFNFTEVD VCBuYW1lLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICBvcmJpdCwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgbGFnKG9yYml0KSBP VkVSIHcgQVMgbGFnLCAgICAgICAgICAgICAgICAgICArCisgICAgIGxhZyhvcmJpdCkgT1ZFUiB3 IEFTIGxhZ19yZXNwZWN0LCAgICAgICAgICAgKworICAgICBsYWcob3JiaXQpIElHTk9SRSBOVUxM UyBPVkVSIHcgQVMgbGFnX2lnbm9yZSsKKyAgICBGUk9NIHBsYW5ldHMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArCisgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgbmFtZSk7CisoMSBy b3cpCisKKy0tIGxhZworU0VMRUNUIG5hbWUsCisgICAgICAgb3JiaXQsCisgICAgICAgbGFnKG9y Yml0KSBPVkVSIHcgQVMgbGFnLAorICAgICAgIGxhZyhvcmJpdCkgUkVTUEVDVCBOVUxMUyBPVkVS IHcgQVMgbGFnX3Jlc3BlY3QsCisgICAgICAgbGFnKG9yYml0KSBJR05PUkUgTlVMTFMgT1ZFUiB3 IEFTIGxhZ19pZ25vcmUKK0ZST00gcGxhbmV0cworV0lORE9XIHcgQVMgKE9SREVSIEJZIG5hbWUp Cis7CisgIG5hbWUgICB8IG9yYml0IHwgIGxhZyAgfCBsYWdfcmVzcGVjdCB8IGxhZ19pZ25vcmUg CistLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisg ZWFydGggICB8ICAgICAgIHwgICAgICAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBqdXBp dGVyIHwgIDQzMzIgfCAgICAgICB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIG1hcnMgICAg fCAgICAgICB8ICA0MzMyIHwgICAgICAgIDQzMzIgfCAgICAgICA0MzMyCisgbWVyY3VyeSB8ICAg IDg4IHwgICAgICAgfCAgICAgICAgICAgICB8ICAgICAgIDQzMzIKKyBuZXB0dW5lIHwgNjAxODIg fCAgICA4OCB8ICAgICAgICAgIDg4IHwgICAgICAgICA4OAorIHBsdXRvICAgfCA5MDU2MCB8IDYw MTgyIHwgICAgICAgNjAxODIgfCAgICAgIDYwMTgyCisgc2F0dXJuICB8IDI0NDkxIHwgOTA1NjAg fCAgICAgICA5MDU2MCB8ICAgICAgOTA1NjAKKyB1cmFudXMgIHwgICAgICAgfCAyNDQ5MSB8ICAg ICAgIDI0NDkxIHwgICAgICAyNDQ5MQorIHZlbnVzICAgfCAgIDIyNCB8ICAgICAgIHwgICAgICAg ICAgICAgfCAgICAgIDI0NDkxCisgeHl6enkgICB8ICAgICAgIHwgICAyMjQgfCAgICAgICAgIDIy NCB8ICAgICAgICAyMjQKKygxMCByb3dzKQorCistLSBsZWFkCitTRUxFQ1QgbmFtZSwKKyAgICAg ICBvcmJpdCwKKyAgICAgICBsZWFkKG9yYml0KSBPVkVSIHcgQVMgbGVhZCwKKyAgICAgICBsZWFk KG9yYml0KSBSRVNQRUNUIE5VTExTIE9WRVIgdyBBUyBsZWFkX3Jlc3BlY3QsCisgICAgICAgbGVh ZChvcmJpdCkgSUdOT1JFIE5VTExTIE9WRVIgdyBBUyBsZWFkX2lnbm9yZQorRlJPTSBwbGFuZXRz CitXSU5ET1cgdyBBUyAoT1JERVIgQlkgbmFtZSkKKzsKKyAgbmFtZSAgIHwgb3JiaXQgfCBsZWFk ICB8IGxlYWRfcmVzcGVjdCB8IGxlYWRfaWdub3JlIAorLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0t LSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgZWFydGggICB8ICAgICAgIHwgIDQzMzIg fCAgICAgICAgIDQzMzIgfCAgICAgICAgNDMzMgorIGp1cGl0ZXIgfCAgNDMzMiB8ICAgICAgIHwg ICAgICAgICAgICAgIHwgICAgICAgICAgODgKKyBtYXJzICAgIHwgICAgICAgfCAgICA4OCB8ICAg ICAgICAgICA4OCB8ICAgICAgICAgIDg4CisgbWVyY3VyeSB8ICAgIDg4IHwgNjAxODIgfCAgICAg ICAgNjAxODIgfCAgICAgICA2MDE4MgorIG5lcHR1bmUgfCA2MDE4MiB8IDkwNTYwIHwgICAgICAg IDkwNTYwIHwgICAgICAgOTA1NjAKKyBwbHV0byAgIHwgOTA1NjAgfCAyNDQ5MSB8ICAgICAgICAy NDQ5MSB8ICAgICAgIDI0NDkxCisgc2F0dXJuICB8IDI0NDkxIHwgICAgICAgfCAgICAgICAgICAg ICAgfCAgICAgICAgIDIyNAorIHVyYW51cyAgfCAgICAgICB8ICAgMjI0IHwgICAgICAgICAgMjI0 IHwgICAgICAgICAyMjQKKyB2ZW51cyAgIHwgICAyMjQgfCAgICAgICB8ICAgICAgICAgICAgICB8 ICAgICAgICAgICAgCisgeHl6enkgICB8ICAgICAgIHwgICAgICAgfCAgICAgICAgICAgICAgfCAg ICAgICAgICAgIAorKDEwIHJvd3MpCisKKy0tIGZpcnN0X3ZhbHVlCitTRUxFQ1QgbmFtZSwKKyAg ICAgICBvcmJpdCwKKyAgICAgICBmaXJzdF92YWx1ZShvcmJpdCkgUkVTUEVDVCBOVUxMUyBPVkVS IHcxLAorICAgICAgIGZpcnN0X3ZhbHVlKG9yYml0KSBJR05PUkUgTlVMTFMgT1ZFUiB3MSwKKyAg ICAgICBmaXJzdF92YWx1ZShvcmJpdCkgUkVTUEVDVCBOVUxMUyBPVkVSIHcyLAorICAgICAgIGZp cnN0X3ZhbHVlKG9yYml0KSBJR05PUkUgTlVMTFMgT1ZFUiB3MgorRlJPTSBwbGFuZXRzCitXSU5E T1cgdzEgQVMgKE9SREVSIEJZIG5hbWUgUk9XUyBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpLAorICAgICAgIHcyIEFTIChPUkRFUiBCWSBuYW1lIFJP V1MgQkVUV0VFTiAyIFBSRUNFRElORyBBTkQgMiBGT0xMT1dJTkcpCis7CisgIG5hbWUgICB8IG9y Yml0IHwgZmlyc3RfdmFsdWUgfCBmaXJzdF92YWx1ZSB8IGZpcnN0X3ZhbHVlIHwgZmlyc3RfdmFs dWUgCistLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tCisgZWFydGggICB8ICAgICAgIHwgICAgICAgICAgICAgfCAg ICAgICAgNDMzMiB8ICAgICAgICAgICAgIHwgICAgICAgIDQzMzIKKyBqdXBpdGVyIHwgIDQzMzIg fCAgICAgICAgICAgICB8ICAgICAgICA0MzMyIHwgICAgICAgICAgICAgfCAgICAgICAgNDMzMgor IG1hcnMgICAgfCAgICAgICB8ICAgICAgICAgICAgIHwgICAgICAgIDQzMzIgfCAgICAgICAgICAg ICB8ICAgICAgICA0MzMyCisgbWVyY3VyeSB8ICAgIDg4IHwgICAgICAgICAgICAgfCAgICAgICAg NDMzMiB8ICAgICAgICA0MzMyIHwgICAgICAgIDQzMzIKKyBuZXB0dW5lIHwgNjAxODIgfCAgICAg ICAgICAgICB8ICAgICAgICA0MzMyIHwgICAgICAgICAgICAgfCAgICAgICAgICA4OAorIHBsdXRv ICAgfCA5MDU2MCB8ICAgICAgICAgICAgIHwgICAgICAgIDQzMzIgfCAgICAgICAgICA4OCB8ICAg ICAgICAgIDg4Cisgc2F0dXJuICB8IDI0NDkxIHwgICAgICAgICAgICAgfCAgICAgICAgNDMzMiB8 ICAgICAgIDYwMTgyIHwgICAgICAgNjAxODIKKyB1cmFudXMgIHwgICAgICAgfCAgICAgICAgICAg ICB8ICAgICAgICA0MzMyIHwgICAgICAgOTA1NjAgfCAgICAgICA5MDU2MAorIHZlbnVzICAgfCAg IDIyNCB8ICAgICAgICAgICAgIHwgICAgICAgIDQzMzIgfCAgICAgICAyNDQ5MSB8ICAgICAgIDI0 NDkxCisgeHl6enkgICB8ICAgICAgIHwgICAgICAgICAgICAgfCAgICAgICAgNDMzMiB8ICAgICAg ICAgICAgIHwgICAgICAgICAyMjQKKygxMCByb3dzKQorCistLSBudGhfdmFsdWUKK1NFTEVDVCBu YW1lLAorICAgICAgIG9yYml0LAorICAgICAgIG50aF92YWx1ZShvcmJpdCwgMikgUkVTUEVDVCBO VUxMUyBPVkVSIHcxLAorICAgICAgIG50aF92YWx1ZShvcmJpdCwgMikgSUdOT1JFIE5VTExTIE9W RVIgdzEsCisgICAgICAgbnRoX3ZhbHVlKG9yYml0LCAyKSBSRVNQRUNUIE5VTExTIE9WRVIgdzIs CisgICAgICAgbnRoX3ZhbHVlKG9yYml0LCAyKSBJR05PUkUgTlVMTFMgT1ZFUiB3MgorRlJPTSBw bGFuZXRzCitXSU5ET1cgdzEgQVMgKE9SREVSIEJZIG5hbWUgUk9XUyBCRVRXRUVOIFVOQk9VTkRF RCBQUkVDRURJTkcgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpLAorICAgICAgIHcyIEFTIChPUkRF UiBCWSBuYW1lIFJPV1MgQkVUV0VFTiAyIFBSRUNFRElORyBBTkQgMiBGT0xMT1dJTkcpCis7Cisg IG5hbWUgICB8IG9yYml0IHwgbnRoX3ZhbHVlIHwgbnRoX3ZhbHVlIHwgbnRoX3ZhbHVlIHwgbnRo X3ZhbHVlIAorLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0KKyBlYXJ0aCAgIHwgICAgICAgfCAgICAgIDQzMzIgfCAgICAgICAg ODggfCAgICAgIDQzMzIgfCAgICAgICAgICAKKyBqdXBpdGVyIHwgIDQzMzIgfCAgICAgIDQzMzIg fCAgICAgICAgODggfCAgICAgIDQzMzIgfCAgICAgICAgODgKKyBtYXJzICAgIHwgICAgICAgfCAg ICAgIDQzMzIgfCAgICAgICAgODggfCAgICAgIDQzMzIgfCAgICAgICAgODgKKyBtZXJjdXJ5IHwg ICAgODggfCAgICAgIDQzMzIgfCAgICAgICAgODggfCAgICAgICAgICAgfCAgICAgICAgODgKKyBu ZXB0dW5lIHwgNjAxODIgfCAgICAgIDQzMzIgfCAgICAgICAgODggfCAgICAgICAgODggfCAgICAg NjAxODIKKyBwbHV0byAgIHwgOTA1NjAgfCAgICAgIDQzMzIgfCAgICAgICAgODggfCAgICAgNjAx ODIgfCAgICAgNjAxODIKKyBzYXR1cm4gIHwgMjQ0OTEgfCAgICAgIDQzMzIgfCAgICAgICAgODgg fCAgICAgOTA1NjAgfCAgICAgOTA1NjAKKyB1cmFudXMgIHwgICAgICAgfCAgICAgIDQzMzIgfCAg ICAgICAgODggfCAgICAgMjQ0OTEgfCAgICAgMjQ0OTEKKyB2ZW51cyAgIHwgICAyMjQgfCAgICAg IDQzMzIgfCAgICAgICAgODggfCAgICAgICAgICAgfCAgICAgICAyMjQKKyB4eXp6eSAgIHwgICAg ICAgfCAgICAgIDQzMzIgfCAgICAgICAgODggfCAgICAgICAyMjQgfCAgICAgICAgICAKKygxMCBy b3dzKQorCistLSBsYXN0X3ZhbHVlCitTRUxFQ1QgbmFtZSwKKyAgICAgICBvcmJpdCwKKyAgICAg ICBsYXN0X3ZhbHVlKG9yYml0KSBSRVNQRUNUIE5VTExTIE9WRVIgdzEsCisgICAgICAgbGFzdF92 YWx1ZShvcmJpdCkgSUdOT1JFIE5VTExTIE9WRVIgdzEsCisgICAgICAgbGFzdF92YWx1ZShvcmJp dCkgUkVTUEVDVCBOVUxMUyBPVkVSIHcyLAorICAgICAgIGxhc3RfdmFsdWUob3JiaXQpIElHTk9S RSBOVUxMUyBPVkVSIHcyCitGUk9NIHBsYW5ldHMKK1dJTkRPVyB3MSBBUyAoT1JERVIgQlkgbmFt ZSBST1dTIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RyksCisgICAgICAgdzIgQVMgKE9SREVSIEJZIG5hbWUgUk9XUyBCRVRXRUVOIDIgUFJFQ0VESU5H IEFORCAyIEZPTExPV0lORykKKzsKKyAgbmFtZSAgIHwgb3JiaXQgfCBsYXN0X3ZhbHVlIHwgbGFz dF92YWx1ZSB8IGxhc3RfdmFsdWUgfCBsYXN0X3ZhbHVlIAorLS0tLS0tLS0tKy0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgZWFydGgg ICB8ICAgICAgIHwgICAgICAgICAgICB8ICAgICAgICAyMjQgfCAgICAgICAgICAgIHwgICAgICAg NDMzMgorIGp1cGl0ZXIgfCAgNDMzMiB8ICAgICAgICAgICAgfCAgICAgICAgMjI0IHwgICAgICAg ICA4OCB8ICAgICAgICAgODgKKyBtYXJzICAgIHwgICAgICAgfCAgICAgICAgICAgIHwgICAgICAg IDIyNCB8ICAgICAgNjAxODIgfCAgICAgIDYwMTgyCisgbWVyY3VyeSB8ICAgIDg4IHwgICAgICAg ICAgICB8ICAgICAgICAyMjQgfCAgICAgIDkwNTYwIHwgICAgICA5MDU2MAorIG5lcHR1bmUgfCA2 MDE4MiB8ICAgICAgICAgICAgfCAgICAgICAgMjI0IHwgICAgICAyNDQ5MSB8ICAgICAgMjQ0OTEK KyBwbHV0byAgIHwgOTA1NjAgfCAgICAgICAgICAgIHwgICAgICAgIDIyNCB8ICAgICAgICAgICAg fCAgICAgIDI0NDkxCisgc2F0dXJuICB8IDI0NDkxIHwgICAgICAgICAgICB8ICAgICAgICAyMjQg fCAgICAgICAgMjI0IHwgICAgICAgIDIyNAorIHVyYW51cyAgfCAgICAgICB8ICAgICAgICAgICAg fCAgICAgICAgMjI0IHwgICAgICAgICAgICB8ICAgICAgICAyMjQKKyB2ZW51cyAgIHwgICAyMjQg fCAgICAgICAgICAgIHwgICAgICAgIDIyNCB8ICAgICAgICAgICAgfCAgICAgICAgMjI0CisgeHl6 enkgICB8ICAgICAgIHwgICAgICAgICAgICB8ICAgICAgICAyMjQgfCAgICAgICAgICAgIHwgICAg ICAgIDIyNAorKDEwIHJvd3MpCisKKy0tIGV4Y2x1ZGUgY3VycmVudCByb3cKK1NFTEVDVCBuYW1l LAorICAgICAgIG9yYml0LAorICAgICAgIGZpcnN0X3ZhbHVlKG9yYml0KSBJR05PUkUgTlVMTFMg T1ZFUiB3LAorICAgICAgIGxhc3RfdmFsdWUob3JiaXQpIElHTk9SRSBOVUxMUyBPVkVSIHcsCisg ICAgICAgbnRoX3ZhbHVlKG9yYml0LCAyKSBJR05PUkUgTlVMTFMgT1ZFUiB3LAorICAgICAgIGxl YWQob3JiaXQsIDEpIElHTk9SRSBOVUxMUyBPVkVSIHcgQVMgbGVhZF9pZ25vcmUsCisgICAgICAg bGFnKG9yYml0LCAxKSBJR05PUkUgTlVMTFMgT1ZFUiB3IEFTIGxhZ19pZ25vcmUKK0ZST00gcGxh bmV0cworV0lORE9XIHcgQVMgKE9SREVSIEJZIG5hbWUgUk9XUyBCRVRXRUVOIDIgUFJFQ0VESU5H IEFORCAyIEZPTExPV0lORyBFWENMVURFIENVUlJFTlQgUk9XKQorOworICBuYW1lICAgfCBvcmJp dCB8IGZpcnN0X3ZhbHVlIHwgbGFzdF92YWx1ZSB8IG50aF92YWx1ZSB8IGxlYWRfaWdub3JlIHwg bGFnX2lnbm9yZSAKKy0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgZWFydGggICB8ICAgICAg IHwgICAgICAgIDQzMzIgfCAgICAgICA0MzMyIHwgICAgICAgICAgIHwgICAgICAgIDQzMzIgfCAg ICAgICAgICAgCisganVwaXRlciB8ICA0MzMyIHwgICAgICAgICAgODggfCAgICAgICAgIDg4IHwg ICAgICAgICAgIHwgICAgICAgICAgODggfCAgICAgICAgICAgCisgbWFycyAgICB8ICAgICAgIHwg ICAgICAgIDQzMzIgfCAgICAgIDYwMTgyIHwgICAgICAgIDg4IHwgICAgICAgICAgODggfCAgICAg ICA0MzMyCisgbWVyY3VyeSB8ICAgIDg4IHwgICAgICAgIDQzMzIgfCAgICAgIDkwNTYwIHwgICAg IDYwMTgyIHwgICAgICAgNjAxODIgfCAgICAgICA0MzMyCisgbmVwdHVuZSB8IDYwMTgyIHwgICAg ICAgICAgODggfCAgICAgIDI0NDkxIHwgICAgIDkwNTYwIHwgICAgICAgOTA1NjAgfCAgICAgICAg IDg4CisgcGx1dG8gICB8IDkwNTYwIHwgICAgICAgICAgODggfCAgICAgIDI0NDkxIHwgICAgIDYw MTgyIHwgICAgICAgMjQ0OTEgfCAgICAgIDYwMTgyCisgc2F0dXJuICB8IDI0NDkxIHwgICAgICAg NjAxODIgfCAgICAgICAgMjI0IHwgICAgIDkwNTYwIHwgICAgICAgICAyMjQgfCAgICAgIDkwNTYw CisgdXJhbnVzICB8ICAgICAgIHwgICAgICAgOTA1NjAgfCAgICAgICAgMjI0IHwgICAgIDI0NDkx IHwgICAgICAgICAyMjQgfCAgICAgIDI0NDkxCisgdmVudXMgICB8ICAgMjI0IHwgICAgICAgMjQ0 OTEgfCAgICAgIDI0NDkxIHwgICAgICAgICAgIHwgICAgICAgICAgICAgfCAgICAgIDI0NDkxCisg eHl6enkgICB8ICAgICAgIHwgICAgICAgICAyMjQgfCAgICAgICAgMjI0IHwgICAgICAgICAgIHwg ICAgICAgICAgICAgfCAgICAgICAgMjI0CisoMTAgcm93cykKKworLS0gdmFsaWQgYW5kIGludmFs aWQgZnVuY3Rpb25zCitTRUxFQ1Qgc3VtKG9yYml0KSBPVkVSICgpIEZST00gcGxhbmV0czsgLS0g c3VjY2VlZHMKKyAgc3VtICAgCistLS0tLS0tLQorIDE3OTg3NworIDE3OTg3NworIDE3OTg3Nwor IDE3OTg3NworIDE3OTg3NworIDE3OTg3NworIDE3OTg3NworIDE3OTg3NworIDE3OTg3NworIDE3 OTg3NworKDEwIHJvd3MpCisKK1NFTEVDVCBzdW0ob3JiaXQpIFJFU1BFQ1QgTlVMTFMgT1ZFUiAo KSBGUk9NIHBsYW5ldHM7IC0tIGZhaWxzCitFUlJPUjogIGFnZ3JlZ2F0ZSBmdW5jdGlvbnMgZG8g bm90IGFjY2VwdCBSRVNQRUNUL0lHTk9SRSBOVUxMUworTElORSAxOiBTRUxFQ1Qgc3VtKG9yYml0 KSBSRVNQRUNUIE5VTExTIE9WRVIgKCkgRlJPTSBwbGFuZXRzOworICAgICAgICAgICAgICAgXgor U0VMRUNUIHN1bShvcmJpdCkgSUdOT1JFIE5VTExTIE9WRVIgKCkgRlJPTSBwbGFuZXRzOyAtLSBm YWlscworRVJST1I6ICBhZ2dyZWdhdGUgZnVuY3Rpb25zIGRvIG5vdCBhY2NlcHQgUkVTUEVDVC9J R05PUkUgTlVMTFMKK0xJTkUgMTogU0VMRUNUIHN1bShvcmJpdCkgSUdOT1JFIE5VTExTIE9WRVIg KCkgRlJPTSBwbGFuZXRzOworICAgICAgICAgICAgICAgXgorU0VMRUNUIHJvd19udW1iZXIoKSBP VkVSICgpIEZST00gcGxhbmV0czsgLS0gc3VjY2VlZHMKKyByb3dfbnVtYmVyIAorLS0tLS0tLS0t LS0tCisgICAgICAgICAgMQorICAgICAgICAgIDIKKyAgICAgICAgICAzCisgICAgICAgICAgNAor ICAgICAgICAgIDUKKyAgICAgICAgICA2CisgICAgICAgICAgNworICAgICAgICAgIDgKKyAgICAg ICAgICA5CisgICAgICAgICAxMAorKDEwIHJvd3MpCisKK1NFTEVDVCByb3dfbnVtYmVyKCkgUkVT UEVDVCBOVUxMUyBPVkVSICgpIEZST00gcGxhbmV0czsgLS0gZmFpbHMKK0VSUk9SOiAgZnVuY3Rp b24gcm93X251bWJlciBkb2VzIG5vdCBhbGxvdyBSRVNQRUNUL0lHTk9SRSBOVUxMUworU0VMRUNU IHJvd19udW1iZXIoKSBJR05PUkUgTlVMTFMgT1ZFUiAoKSBGUk9NIHBsYW5ldHM7IC0tIGZhaWxz CitFUlJPUjogIGZ1bmN0aW9uIHJvd19udW1iZXIgZG9lcyBub3QgYWxsb3cgUkVTUEVDVC9JR05P UkUgTlVMTFMKKy0tIHRlc3QgdHdvIGNvbnNlY3V0aXZlIG51bGxzCit1cGRhdGUgcGxhbmV0cyBz ZXQgb3JiaXQ9bnVsbCB3aGVyZSBuYW1lPSdqdXBpdGVyJzsKK1NFTEVDVCBuYW1lLAorICAgICAg IG9yYml0LAorICAgICAgIGZpcnN0X3ZhbHVlKG9yYml0KSBJR05PUkUgTlVMTFMgT1ZFUiB3LAor ICAgICAgIGxhc3RfdmFsdWUob3JiaXQpIElHTk9SRSBOVUxMUyBPVkVSIHcsCisgICAgICAgbnRo X3ZhbHVlKG9yYml0LCAyKSBJR05PUkUgTlVMTFMgT1ZFUiB3LAorICAgICAgIGxlYWQob3JiaXQs IDEpIElHTk9SRSBOVUxMUyBPVkVSIHcgQVMgbGVhZF9pZ25vcmUsCisgICAgICAgbGFnKG9yYml0 LCAxKSBJR05PUkUgTlVMTFMgT1ZFUiB3IEFTIGxhZ19pZ25vcmUKK0ZST00gcGxhbmV0cworV0lO RE9XIHcgQVMgKE9SREVSIEJZIG5hbWUgUk9XUyBCRVRXRUVOIDIgUFJFQ0VESU5HIEFORCAyIEZP TExPV0lORykKKzsKKyAgbmFtZSAgIHwgb3JiaXQgfCBmaXJzdF92YWx1ZSB8IGxhc3RfdmFsdWUg fCBudGhfdmFsdWUgfCBsZWFkX2lnbm9yZSB8IGxhZ19pZ25vcmUgCistLS0tLS0tLS0rLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLQorIGVhcnRoICAgfCAgICAgICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8 ICAgICAgICAgICB8ICAgICAgICAgIDg4IHwgICAgICAgICAgIAorIGp1cGl0ZXIgfCAgICAgICB8 ICAgICAgICAgIDg4IHwgICAgICAgICA4OCB8ICAgICAgICAgICB8ICAgICAgICAgIDg4IHwgICAg ICAgICAgIAorIG1hcnMgICAgfCAgICAgICB8ICAgICAgICAgIDg4IHwgICAgICA2MDE4MiB8ICAg ICA2MDE4MiB8ICAgICAgICAgIDg4IHwgICAgICAgICAgIAorIG1lcmN1cnkgfCAgICA4OCB8ICAg ICAgICAgIDg4IHwgICAgICA5MDU2MCB8ICAgICA2MDE4MiB8ICAgICAgIDYwMTgyIHwgICAgICAg ICAgIAorIG5lcHR1bmUgfCA2MDE4MiB8ICAgICAgICAgIDg4IHwgICAgICAyNDQ5MSB8ICAgICA2 MDE4MiB8ICAgICAgIDkwNTYwIHwgICAgICAgICA4OAorIHBsdXRvICAgfCA5MDU2MCB8ICAgICAg ICAgIDg4IHwgICAgICAyNDQ5MSB8ICAgICA2MDE4MiB8ICAgICAgIDI0NDkxIHwgICAgICA2MDE4 MgorIHNhdHVybiAgfCAyNDQ5MSB8ICAgICAgIDYwMTgyIHwgICAgICAgIDIyNCB8ICAgICA5MDU2 MCB8ICAgICAgICAgMjI0IHwgICAgICA5MDU2MAorIHVyYW51cyAgfCAgICAgICB8ICAgICAgIDkw NTYwIHwgICAgICAgIDIyNCB8ICAgICAyNDQ5MSB8ICAgICAgICAgMjI0IHwgICAgICAyNDQ5MQor IHZlbnVzICAgfCAgIDIyNCB8ICAgICAgIDI0NDkxIHwgICAgICAgIDIyNCB8ICAgICAgIDIyNCB8 ICAgICAgICAgICAgIHwgICAgICAyNDQ5MQorIHh5enp5ICAgfCAgICAgICB8ICAgICAgICAgMjI0 IHwgICAgICAgIDIyNCB8ICAgICAgICAgICB8ICAgICAgICAgICAgIHwgICAgICAgIDIyNAorKDEw IHJvd3MpCisKKy0tIHRlc3QgcGFydGl0aW9ucworU0VMRUNUIG5hbWUsCisgICAgICAgZGlzdGFu Y2UsCisgICAgICAgb3JiaXQsCisgICAgICAgZmlyc3RfdmFsdWUob3JiaXQpIElHTk9SRSBOVUxM UyBPVkVSIHcsCisgICAgICAgbGFzdF92YWx1ZShvcmJpdCkgSUdOT1JFIE5VTExTIE9WRVIgdywK KyAgICAgICBudGhfdmFsdWUob3JiaXQsIDIpIElHTk9SRSBOVUxMUyBPVkVSIHcsCisgICAgICAg bGVhZChvcmJpdCwgMSkgSUdOT1JFIE5VTExTIE9WRVIgdyBBUyBsZWFkX2lnbm9yZSwKKyAgICAg ICBsYWcob3JiaXQsIDEpIElHTk9SRSBOVUxMUyBPVkVSIHcgQVMgbGFnX2lnbm9yZQorRlJPTSBw bGFuZXRzCitXSU5ET1cgdyBBUyAoUEFSVElUSU9OIEJZIGRpc3RhbmNlIE9SREVSIEJZIG5hbWUg Uk9XUyBCRVRXRUVOIDIgUFJFQ0VESU5HIEFORCAyIEZPTExPV0lORykKKzsKKyAgbmFtZSAgIHwg ZGlzdGFuY2UgfCBvcmJpdCB8IGZpcnN0X3ZhbHVlIHwgbGFzdF92YWx1ZSB8IG50aF92YWx1ZSB8 IGxlYWRfaWdub3JlIHwgbGFnX2lnbm9yZSAKKy0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0KKyBlYXJ0aCAgIHwgY2xvc2UgICAgfCAgICAgICB8ICAgICAgICAgICAgIHwgICAg ICAgICAgICB8ICAgICAgICAgICB8ICAgICAgICAgIDg4IHwgICAgICAgICAgIAorIGp1cGl0ZXIg fCBjbG9zZSAgICB8ICAgICAgIHwgICAgICAgICAgODggfCAgICAgICAgIDg4IHwgICAgICAgICAg IHwgICAgICAgICAgODggfCAgICAgICAgICAgCisgbWFycyAgICB8IGNsb3NlICAgIHwgICAgICAg fCAgICAgICAgICA4OCB8ICAgICAgICAyMjQgfCAgICAgICAyMjQgfCAgICAgICAgICA4OCB8ICAg ICAgICAgICAKKyBtZXJjdXJ5IHwgY2xvc2UgICAgfCAgICA4OCB8ICAgICAgICAgIDg4IHwgICAg ICAgIDIyNCB8ICAgICAgIDIyNCB8ICAgICAgICAgMjI0IHwgICAgICAgICAgIAorIHZlbnVzICAg fCBjbG9zZSAgICB8ICAgMjI0IHwgICAgICAgICAgODggfCAgICAgICAgMjI0IHwgICAgICAgMjI0 IHwgICAgICAgICAgICAgfCAgICAgICAgIDg4CisgbmVwdHVuZSB8IGZhciAgICAgIHwgNjAxODIg fCAgICAgICA2MDE4MiB8ICAgICAgMjQ0OTEgfCAgICAgOTA1NjAgfCAgICAgICA5MDU2MCB8ICAg ICAgICAgICAKKyBwbHV0byAgIHwgZmFyICAgICAgfCA5MDU2MCB8ICAgICAgIDYwMTgyIHwgICAg ICAyNDQ5MSB8ICAgICA5MDU2MCB8ICAgICAgIDI0NDkxIHwgICAgICA2MDE4MgorIHNhdHVybiAg fCBmYXIgICAgICB8IDI0NDkxIHwgICAgICAgNjAxODIgfCAgICAgIDI0NDkxIHwgICAgIDkwNTYw IHwgICAgICAgICAgICAgfCAgICAgIDkwNTYwCisgdXJhbnVzICB8IGZhciAgICAgIHwgICAgICAg fCAgICAgICA5MDU2MCB8ICAgICAgMjQ0OTEgfCAgICAgMjQ0OTEgfCAgICAgICAgICAgICB8ICAg ICAgMjQ0OTEKKyB4eXp6eSAgIHwgZmFyICAgICAgfCAgICAgICB8ICAgICAgIDI0NDkxIHwgICAg ICAyNDQ5MSB8ICAgICAgICAgICB8ICAgICAgICAgICAgIHwgICAgICAyNDQ5MQorKDEwIHJvd3Mp CisKKy0tIG50aF92YWx1ZSB3aXRob3V0IG51bGxzCitTRUxFQ1QgeCwKKyAgICAgICBudGhfdmFs dWUoeCwyKSBJR05PUkUgTlVMTFMgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDUpIGco eCkKK1dJTkRPVyB3IEFTIChPUkRFUiBCWSB4IFJPV1MgQkVUV0VFTiAyIFBSRUNFRElORyBBTkQg MiBGT0xMT1dJTkcgRVhDTFVERSBDVVJSRU5UIFJPVyk7CisgeCB8IG50aF92YWx1ZSAKKy0tLSst LS0tLS0tLS0tLQorIDEgfCAgICAgICAgIDMKKyAyIHwgICAgICAgICAzCisgMyB8ICAgICAgICAg MgorIDQgfCAgICAgICAgIDMKKyA1IHwgICAgICAgICA0CisoNSByb3dzKQorCitTRUxFQ1QgeCwK KyAgICAgICBudGhfdmFsdWUoeCwyKSBJR05PUkUgTlVMTFMgT1ZFUiB3CitGUk9NIGdlbmVyYXRl X3NlcmllcygxLDUpIGcoeCkKK1dJTkRPVyB3IEFTIChPUkRFUiBCWSB4IFJPV1MgQkVUV0VFTiAy IFBSRUNFRElORyBBTkQgMiBGT0xMT1dJTkcpOworIHggfCBudGhfdmFsdWUgCistLS0rLS0tLS0t LS0tLS0KKyAxIHwgICAgICAgICAyCisgMiB8ICAgICAgICAgMgorIDMgfCAgICAgICAgIDIKKyA0 IHwgICAgICAgICAzCisgNSB8ICAgICAgICAgNAorKDUgcm93cykKKworLS1jbGVhbnVwCitEUk9Q IFRBQkxFIHBsYW5ldHMgQ0FTQ0FERTsKK05PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gdmlldyBw bGFuZXRzX3ZpZXcKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpbmRvdy5zcWwg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aW5kb3cuc3FsCmluZGV4IDAyZjEwNWYwNzBlLi4xZjhj ODY2OTQzNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2luZG93LnNxbAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aW5kb3cuc3FsCkBAIC0xOTU4LDMgKzE5NTgsMTUwIEBA ICQkIExBTkdVQUdFIFNRTCBTVEFCTEU7CiAKIEVYUExBSU4gKGNvc3RzIG9mZikgU0VMRUNUICog RlJPTSBwZ190ZW1wLmYoMik7CiBTRUxFQ1QgKiBGUk9NIHBnX3RlbXAuZigyKTsKKworLS0gSUdO T1JFIE5VTExTIHRlc3RzCisKK0NSRUFURSBURU1QT1JBUlkgVEFCTEUgcGxhbmV0cyAoCisgICAg bmFtZSB0ZXh0LAorICAgIGRpc3RhbmNlIHRleHQsCisgICAgb3JiaXQgaW50ZWdlcgorKTsKKwor SU5TRVJUIElOVE8gcGxhbmV0cyBWQUxVRVMKKyAgKCdtZXJjdXJ5JywgJ2Nsb3NlJywgODgpLAor ICAoJ3ZlbnVzJywgJ2Nsb3NlJywgMjI0KSwKKyAgKCdlYXJ0aCcsICdjbG9zZScsIE5VTEwpLAor ICAoJ21hcnMnLCAnY2xvc2UnLCBOVUxMKSwKKyAgKCdqdXBpdGVyJywgJ2Nsb3NlJywgNDMzMiks CisgICgnc2F0dXJuJywgJ2ZhcicsIDI0NDkxKSwKKyAgKCd1cmFudXMnLCAnZmFyJywgTlVMTCks CisgICgnbmVwdHVuZScsICdmYXInLCA2MDE4MiksCisgICgncGx1dG8nLCAnZmFyJywgOTA1NjAp LAorICAoJ3h5enp5JywgJ2ZhcicsIE5VTEwpOworCistLSB0ZXN0IHJ1bGV1dGlscworQ1JFQVRF IFZJRVcgcGxhbmV0c192aWV3IEFTCitTRUxFQ1QgbmFtZSwKKyAgICAgICBvcmJpdCwKKyAgICAg ICBsYWcob3JiaXQpIE9WRVIgdyBBUyBsYWcsCisgICAgICAgbGFnKG9yYml0KSBSRVNQRUNUIE5V TExTIE9WRVIgdyBBUyBsYWdfcmVzcGVjdCwKKyAgICAgICBsYWcob3JiaXQpIElHTk9SRSBOVUxM UyBPVkVSIHcgQVMgbGFnX2lnbm9yZQorRlJPTSBwbGFuZXRzCitXSU5ET1cgdyBBUyAoT1JERVIg QlkgbmFtZSkKKzsKK1NFTEVDVCBwZ19nZXRfdmlld2RlZigncGxhbmV0c192aWV3Jyk7CisKKy0t IGxhZworU0VMRUNUIG5hbWUsCisgICAgICAgb3JiaXQsCisgICAgICAgbGFnKG9yYml0KSBPVkVS IHcgQVMgbGFnLAorICAgICAgIGxhZyhvcmJpdCkgUkVTUEVDVCBOVUxMUyBPVkVSIHcgQVMgbGFn X3Jlc3BlY3QsCisgICAgICAgbGFnKG9yYml0KSBJR05PUkUgTlVMTFMgT1ZFUiB3IEFTIGxhZ19p Z25vcmUKK0ZST00gcGxhbmV0cworV0lORE9XIHcgQVMgKE9SREVSIEJZIG5hbWUpCis7CisKKy0t IGxlYWQKK1NFTEVDVCBuYW1lLAorICAgICAgIG9yYml0LAorICAgICAgIGxlYWQob3JiaXQpIE9W RVIgdyBBUyBsZWFkLAorICAgICAgIGxlYWQob3JiaXQpIFJFU1BFQ1QgTlVMTFMgT1ZFUiB3IEFT IGxlYWRfcmVzcGVjdCwKKyAgICAgICBsZWFkKG9yYml0KSBJR05PUkUgTlVMTFMgT1ZFUiB3IEFT IGxlYWRfaWdub3JlCitGUk9NIHBsYW5ldHMKK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBuYW1lKQor OworCistLSBmaXJzdF92YWx1ZQorU0VMRUNUIG5hbWUsCisgICAgICAgb3JiaXQsCisgICAgICAg Zmlyc3RfdmFsdWUob3JiaXQpIFJFU1BFQ1QgTlVMTFMgT1ZFUiB3MSwKKyAgICAgICBmaXJzdF92 YWx1ZShvcmJpdCkgSUdOT1JFIE5VTExTIE9WRVIgdzEsCisgICAgICAgZmlyc3RfdmFsdWUob3Ji aXQpIFJFU1BFQ1QgTlVMTFMgT1ZFUiB3MiwKKyAgICAgICBmaXJzdF92YWx1ZShvcmJpdCkgSUdO T1JFIE5VTExTIE9WRVIgdzIKK0ZST00gcGxhbmV0cworV0lORE9XIHcxIEFTIChPUkRFUiBCWSBu YW1lIFJPV1MgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HKSwKKyAgICAgICB3MiBBUyAoT1JERVIgQlkgbmFtZSBST1dTIEJFVFdFRU4gMiBQUkVDRURJ TkcgQU5EIDIgRk9MTE9XSU5HKQorOworCistLSBudGhfdmFsdWUKK1NFTEVDVCBuYW1lLAorICAg ICAgIG9yYml0LAorICAgICAgIG50aF92YWx1ZShvcmJpdCwgMikgUkVTUEVDVCBOVUxMUyBPVkVS IHcxLAorICAgICAgIG50aF92YWx1ZShvcmJpdCwgMikgSUdOT1JFIE5VTExTIE9WRVIgdzEsCisg ICAgICAgbnRoX3ZhbHVlKG9yYml0LCAyKSBSRVNQRUNUIE5VTExTIE9WRVIgdzIsCisgICAgICAg bnRoX3ZhbHVlKG9yYml0LCAyKSBJR05PUkUgTlVMTFMgT1ZFUiB3MgorRlJPTSBwbGFuZXRzCitX SU5ET1cgdzEgQVMgKE9SREVSIEJZIG5hbWUgUk9XUyBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJ TkcgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpLAorICAgICAgIHcyIEFTIChPUkRFUiBCWSBuYW1l IFJPV1MgQkVUV0VFTiAyIFBSRUNFRElORyBBTkQgMiBGT0xMT1dJTkcpCis7CisKKy0tIGxhc3Rf dmFsdWUKK1NFTEVDVCBuYW1lLAorICAgICAgIG9yYml0LAorICAgICAgIGxhc3RfdmFsdWUob3Ji aXQpIFJFU1BFQ1QgTlVMTFMgT1ZFUiB3MSwKKyAgICAgICBsYXN0X3ZhbHVlKG9yYml0KSBJR05P UkUgTlVMTFMgT1ZFUiB3MSwKKyAgICAgICBsYXN0X3ZhbHVlKG9yYml0KSBSRVNQRUNUIE5VTExT IE9WRVIgdzIsCisgICAgICAgbGFzdF92YWx1ZShvcmJpdCkgSUdOT1JFIE5VTExTIE9WRVIgdzIK K0ZST00gcGxhbmV0cworV0lORE9XIHcxIEFTIChPUkRFUiBCWSBuYW1lIFJPV1MgQkVUV0VFTiBV TkJPVU5ERUQgUFJFQ0VESU5HIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKSwKKyAgICAgICB3MiBB UyAoT1JERVIgQlkgbmFtZSBST1dTIEJFVFdFRU4gMiBQUkVDRURJTkcgQU5EIDIgRk9MTE9XSU5H KQorOworCistLSBleGNsdWRlIGN1cnJlbnQgcm93CitTRUxFQ1QgbmFtZSwKKyAgICAgICBvcmJp dCwKKyAgICAgICBmaXJzdF92YWx1ZShvcmJpdCkgSUdOT1JFIE5VTExTIE9WRVIgdywKKyAgICAg ICBsYXN0X3ZhbHVlKG9yYml0KSBJR05PUkUgTlVMTFMgT1ZFUiB3LAorICAgICAgIG50aF92YWx1 ZShvcmJpdCwgMikgSUdOT1JFIE5VTExTIE9WRVIgdywKKyAgICAgICBsZWFkKG9yYml0LCAxKSBJ R05PUkUgTlVMTFMgT1ZFUiB3IEFTIGxlYWRfaWdub3JlLAorICAgICAgIGxhZyhvcmJpdCwgMSkg SUdOT1JFIE5VTExTIE9WRVIgdyBBUyBsYWdfaWdub3JlCitGUk9NIHBsYW5ldHMKK1dJTkRPVyB3 IEFTIChPUkRFUiBCWSBuYW1lIFJPV1MgQkVUV0VFTiAyIFBSRUNFRElORyBBTkQgMiBGT0xMT1dJ TkcgRVhDTFVERSBDVVJSRU5UIFJPVykKKzsKKworLS0gdmFsaWQgYW5kIGludmFsaWQgZnVuY3Rp b25zCitTRUxFQ1Qgc3VtKG9yYml0KSBPVkVSICgpIEZST00gcGxhbmV0czsgLS0gc3VjY2VlZHMK K1NFTEVDVCBzdW0ob3JiaXQpIFJFU1BFQ1QgTlVMTFMgT1ZFUiAoKSBGUk9NIHBsYW5ldHM7IC0t IGZhaWxzCitTRUxFQ1Qgc3VtKG9yYml0KSBJR05PUkUgTlVMTFMgT1ZFUiAoKSBGUk9NIHBsYW5l dHM7IC0tIGZhaWxzCitTRUxFQ1Qgcm93X251bWJlcigpIE9WRVIgKCkgRlJPTSBwbGFuZXRzOyAt LSBzdWNjZWVkcworU0VMRUNUIHJvd19udW1iZXIoKSBSRVNQRUNUIE5VTExTIE9WRVIgKCkgRlJP TSBwbGFuZXRzOyAtLSBmYWlscworU0VMRUNUIHJvd19udW1iZXIoKSBJR05PUkUgTlVMTFMgT1ZF UiAoKSBGUk9NIHBsYW5ldHM7IC0tIGZhaWxzCisKKy0tIHRlc3QgdHdvIGNvbnNlY3V0aXZlIG51 bGxzCit1cGRhdGUgcGxhbmV0cyBzZXQgb3JiaXQ9bnVsbCB3aGVyZSBuYW1lPSdqdXBpdGVyJzsK K1NFTEVDVCBuYW1lLAorICAgICAgIG9yYml0LAorICAgICAgIGZpcnN0X3ZhbHVlKG9yYml0KSBJ R05PUkUgTlVMTFMgT1ZFUiB3LAorICAgICAgIGxhc3RfdmFsdWUob3JiaXQpIElHTk9SRSBOVUxM UyBPVkVSIHcsCisgICAgICAgbnRoX3ZhbHVlKG9yYml0LCAyKSBJR05PUkUgTlVMTFMgT1ZFUiB3 LAorICAgICAgIGxlYWQob3JiaXQsIDEpIElHTk9SRSBOVUxMUyBPVkVSIHcgQVMgbGVhZF9pZ25v cmUsCisgICAgICAgbGFnKG9yYml0LCAxKSBJR05PUkUgTlVMTFMgT1ZFUiB3IEFTIGxhZ19pZ25v cmUKK0ZST00gcGxhbmV0cworV0lORE9XIHcgQVMgKE9SREVSIEJZIG5hbWUgUk9XUyBCRVRXRUVO IDIgUFJFQ0VESU5HIEFORCAyIEZPTExPV0lORykKKzsKKworLS0gdGVzdCBwYXJ0aXRpb25zCitT RUxFQ1QgbmFtZSwKKyAgICAgICBkaXN0YW5jZSwKKyAgICAgICBvcmJpdCwKKyAgICAgICBmaXJz dF92YWx1ZShvcmJpdCkgSUdOT1JFIE5VTExTIE9WRVIgdywKKyAgICAgICBsYXN0X3ZhbHVlKG9y Yml0KSBJR05PUkUgTlVMTFMgT1ZFUiB3LAorICAgICAgIG50aF92YWx1ZShvcmJpdCwgMikgSUdO T1JFIE5VTExTIE9WRVIgdywKKyAgICAgICBsZWFkKG9yYml0LCAxKSBJR05PUkUgTlVMTFMgT1ZF UiB3IEFTIGxlYWRfaWdub3JlLAorICAgICAgIGxhZyhvcmJpdCwgMSkgSUdOT1JFIE5VTExTIE9W RVIgdyBBUyBsYWdfaWdub3JlCitGUk9NIHBsYW5ldHMKK1dJTkRPVyB3IEFTIChQQVJUSVRJT04g QlkgZGlzdGFuY2UgT1JERVIgQlkgbmFtZSBST1dTIEJFVFdFRU4gMiBQUkVDRURJTkcgQU5EIDIg Rk9MTE9XSU5HKQorOworCistLSBudGhfdmFsdWUgd2l0aG91dCBudWxscworU0VMRUNUIHgsCisg ICAgICAgbnRoX3ZhbHVlKHgsMikgSUdOT1JFIE5VTExTIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSw1KSBnKHgpCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgeCBST1dTIEJFVFdFRU4gMiBQ UkVDRURJTkcgQU5EIDIgRk9MTE9XSU5HIEVYQ0xVREUgQ1VSUkVOVCBST1cpOworU0VMRUNUIHgs CisgICAgICAgbnRoX3ZhbHVlKHgsMikgSUdOT1JFIE5VTExTIE9WRVIgdworRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSw1KSBnKHgpCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgeCBST1dTIEJFVFdFRU4g MiBQUkVDRURJTkcgQU5EIDIgRk9MTE9XSU5HKTsKKworLS1jbGVhbnVwCitEUk9QIFRBQkxFIHBs YW5ldHMgQ0FTQ0FERTsKLS0gCjIuMjUuMQoK ----Next_Part(Mon_Jun_30_14_25_56_2025_606)----