Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kQota-0004uu-D9 for pgsql-hackers@arkaria.postgresql.org; Fri, 09 Oct 2020 09:41:03 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1kQotX-00052S-MD for pgsql-hackers@arkaria.postgresql.org; Fri, 09 Oct 2020 09:40:59 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kQotW-00050J-Dd for pgsql-hackers@lists.postgresql.org; Fri, 09 Oct 2020 09:40:59 +0000 Received: from wforward1-smtp.messagingengine.com ([64.147.123.30]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kQotL-0007bV-PZ for pgsql-hackers@postgresql.org; Fri, 09 Oct 2020 09:40:57 +0000 Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailforward.west.internal (Postfix) with ESMTP id C0583AAE; Fri, 9 Oct 2020 05:40:43 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute1.internal (MEProxy); Fri, 09 Oct 2020 05:40:43 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; bh=3Zqmlf a9OelJuwN9zQm3rEYF8conzb0/I3Z6jxhEdYk=; b=Tl1BrN3N8A6IscEkzXB0hf mn2Lm4MGDVwhblA+dwkqaeqpdTlH1Oml1g941P+W0IEXBI+m+0VbyX/1qBzotSSb GTiNHSmeMSleav56y9Txk8IoQP3b4Fm5R/1UrxHKnzMOs/SReH5otTQPxvL5a0h5 R1tT2HKa/GrcfS/eLZB4Np5RheO4o2ghSXlpm+C3Ii84ZTVrilI0Y2cfqfVvu6KM yBKUKQELa2O48/qELLdFvAZ3fq0YEJeLpi95SqNAIdFUYvVvikouh6x/wy14gK9/ uhU/2ynqB+od6YjYh/TTEdu6xLn9qfZy45fQo4mkuKJQ/kgrww8uGP3Bs1xl22Yg == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedujedrhedugddulecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefuvfhfhfhokffffgggjggtsehmtderredtfeejnecuhfhrohhmpefrvghtvghr ucfgihhsvghnthhrrghuthcuoehpvghtvghrrdgvihhsvghnthhrrghuthesvdhnughquh grughrrghnthdrtghomheqnecuggftrfgrthhtvghrnhepudfgueevieeluefggeeludfg hfeuhffhjeehfefgledufedtieevudfggeevgfejnecuffhomhgrihhnpedvnhguqhhurg gurhgrnhhtrdgtohhmnecukfhppeelfedrvddtvddrvdehvddrleejnecuvehluhhsthgv rhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepphgvthgvrhdrvghishgvnh htrhgruhhtsedvnhguqhhurggurhgrnhhtrdgtohhm X-ME-Proxy: Received: from april.pezone.net (p5dcafc61.dip0.t-ipconnect.de [93.202.252.97]) by mail.messagingengine.com (Postfix) with ESMTPA id EC764328005A; Fri, 9 Oct 2020 05:40:41 -0400 (EDT) Subject: Re: SEARCH and CYCLE clauses To: Pavel Stehule References: Cc: pgsql-hackers From: Peter Eisentraut Organization: 2ndQuadrant Message-ID: <52beaf44-ccc3-0ba1-45c7-74aa251cd6ab@2ndquadrant.com> Date: Fri, 9 Oct 2020 11:40:40 +0200 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------05468B89AB8B875F4A7610F1" Content-Language: en-US List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This is a multi-part message in MIME format. --------------05468B89AB8B875F4A7610F1 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit On 2020-09-22 20:29, Pavel Stehule wrote: > The result is correct. When I tried to use UNION instead UNION ALL, the > pg crash I fixed the crash, but UNION [DISTINCT] won't actually work here because row/record types are not hashable. I'm leaving the partial support in, but I'm documenting it as currently not supported. > looks so clause USING in cycle detection is unsupported for DB2 and > Oracle - the examples from these databases doesn't work on PG without > modifications Yeah, the path clause is actually not necessary from a user's perspective, but it's required for internal bookkeeping. We could perhaps come up with a mechanism to make it invisible coming out of the CTE (maybe give the CTE a target list internally), but that seems like a separate project. The attached patch fixes the issues you have reported (also the view issue from the other email). I have also moved the whole rewrite support to a new file to not blow up rewriteHandler.c so much. -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services --------------05468B89AB8B875F4A7610F1 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="v3-0001-SEARCH-and-CYCLE-clauses.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v3-0001-SEARCH-and-CYCLE-clauses.patch" RnJvbSA0YjM2ZTgxZGVmNTBiZTQ0YmQxZjY4MjQ3ZTMzYTIyMzQzNTIwYjVlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogRnJpLCA5IE9jdCAyMDIwIDExOjMyOjEwICswMjAwClN1YmplY3Q6 IFtQQVRDSCB2M10gU0VBUkNIIGFuZCBDWUNMRSBjbGF1c2VzCgpEaXNjdXNzaW9uOiBodHRw czovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2ZsYXQvZGI4MGNlZWUtNmY5Ny05 YjRhLThlZTgtM2JhMGM1OGU1YmUyQDJuZHF1YWRyYW50LmNvbQotLS0KIGRvYy9zcmMvc2dt bC9xdWVyaWVzLnNnbWwgICAgICAgICAgICAgICAgfCAyMTMgKysrKysrLQogZG9jL3NyYy9z Z21sL3JlZi9zZWxlY3Quc2dtbCAgICAgICAgICAgICB8ICA0NCArKwogc3JjL2JhY2tlbmQv bm9kZXMvY29weWZ1bmNzLmMgICAgICAgICAgICB8ICAzOSArKwogc3JjL2JhY2tlbmQvbm9k ZXMvZXF1YWxmdW5jcy5jICAgICAgICAgICB8ICAzNSArKwogc3JjL2JhY2tlbmQvbm9kZXMv bm9kZUZ1bmNzLmMgICAgICAgICAgICB8ICAgNiArCiBzcmMvYmFja2VuZC9ub2Rlcy9vdXRm dW5jcy5jICAgICAgICAgICAgIHwgIDM1ICsrCiBzcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVu Y3MuYyAgICAgICAgICAgIHwgIDQzICsrCiBzcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5j ICAgICAgICAgICAgIHwgIDQ3ICstCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAg ICAgICAgICAgIHwgIDU4ICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMgICAg ICAgICAgIHwgICA3ICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jdGUuYyAgICAgICAg ICAgfCAxMTcgKysrKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyAgICAgICAg ICB8ICAgNCArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jICAgICAgICAgIHwg ICAzICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jICAgICAgfCAgNTQg Ky0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYyAgICAgICAgfCAgMjEgKy0K IHNyYy9iYWNrZW5kL3Jld3JpdGUvTWFrZWZpbGUgICAgICAgICAgICAgfCAgIDEgKwogc3Jj L2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jICAgICB8ICAxOCArCiBzcmMvYmFj a2VuZC9yZXdyaXRlL3Jld3JpdGVTZWFyY2hDeWNsZS5jIHwgNzA5ICsrKysrKysrKysrKysr KysrKysrKysrCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgICAgICAgIHwg IDQ3ICsrCiBzcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oICAgICAgICAgICAgICAgIHwgICAy ICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAgfCAgMjggKy0K IHNyYy9pbmNsdWRlL3BhcnNlci9hbmFseXplLmggICAgICAgICAgICAgfCAgIDIgKwogc3Jj L2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvaW5j bHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oICAgICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRl L3Jld3JpdGUvcmV3cml0ZVNlYXJjaEN5Y2xlLmggfCAgMjEgKwogc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC93aXRoLm91dCAgICAgICB8IDQzMyArKysrKysrKysrKysrKwogc3JjL3Rl c3QvcmVncmVzcy9zcWwvd2l0aC5zcWwgICAgICAgICAgICB8IDIxMCArKysrKysrCiAyNyBm aWxlcyBjaGFuZ2VkLCAyMTUzIGluc2VydGlvbnMoKyksIDQ4IGRlbGV0aW9ucygtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZVNlYXJjaEN5Y2xl LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9yZXdyaXRlL3Jld3JpdGVTZWFy Y2hDeWNsZS5oCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3F1ZXJpZXMuc2dtbCBiL2Rv Yy9zcmMvc2dtbC9xdWVyaWVzLnNnbWwKaW5kZXggNzdmYjE5OTFhZS4uMzRiM2U0ODk4NiAx MDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3F1ZXJpZXMuc2dtbAorKysgYi9kb2Mvc3JjL3Nn bWwvcXVlcmllcy5zZ21sCkBAIC0yMDExLDYgKzIwMTEsMTAgQEAgPHRpdGxlPjxjb21tYW5k PlNFTEVDVDwvY29tbWFuZD4gaW4gPGxpdGVyYWw+V0lUSDwvbGl0ZXJhbD48L3RpdGxlPgog ICAgYnV0IHdlJ2QgaGF2ZSBuZWVkZWQgdHdvIGxldmVscyBvZiBuZXN0ZWQgc3ViLTxjb21t YW5kPlNFTEVDVDwvY29tbWFuZD5zLiAgSXQncyBhIGJpdAogICAgZWFzaWVyIHRvIGZvbGxv dyB0aGlzIHdheS4KICAgPC9wYXJhPgorIDwvc2VjdDI+CisKKyA8c2VjdDIgaWQ9InF1ZXJp ZXMtd2l0aC1yZWN1cnNpdmUiPgorICA8dGl0bGU+UmVjdXJzaXZlIFF1ZXJpZXM8L3RpdGxl PgogCiAgIDxwYXJhPgogICAgPGluZGV4dGVybT4KQEAgLTIxMTQsNiArMjExOCwxNTMgQEAg PHRpdGxlPlJlY3Vyc2l2ZSBRdWVyeSBFdmFsdWF0aW9uPC90aXRsZT4KIDwvcHJvZ3JhbWxp c3Rpbmc+CiAgIDwvcGFyYT4KIAorICA8c2VjdDMgaWQ9InF1ZXJpZXMtd2l0aC1zZWFyY2gi PgorICAgPHRpdGxlPlNlYXJjaCBPcmRlcjwvdGl0bGU+CisKKyAgIDxwYXJhPgorICAgIFdo ZW4gY29tcHV0aW5nIGEgdHJlZSB0cmF2ZXJzYWwgdXNpbmcgYSByZWN1cnNpdmUgcXVlcnks IHlvdSBtaWdodCB3YW50IHRvCisgICAgb3JkZXIgdGhlIHJlc3VsdHMgaW4gZWl0aGVyIGRl cHRoLWZpcnN0IG9yIGJyZWFkdGgtZmlyc3Qgb3JkZXIuICBUaGlzIGNhbgorICAgIGJlIGRv bmUgYnkgY29tcHV0aW5nIGFuIG9yZGVyaW5nIGNvbHVtbiBhbG9uZ3NpZGUgdGhlIG90aGVy IGRhdGEgY29sdW1ucworICAgIGFuZCB1c2luZyB0aGF0IHRvIHNvcnQgdGhlIHJlc3VsdHMg YXQgdGhlIGVuZC4gIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90CisgICAgYWN0dWFsbHkgY29u dHJvbCBpbiB3aGljaCBvcmRlciB0aGUgcXVlcnkgZXZhbHVhdGlvbiB2aXNpdHMgdGhlIHJv d3M7IHRoYXQKKyAgICBpcyBhcyBhbHdheXMgaW4gU1FMIGltcGxlbWVudGF0aW9uLWRlcGVu ZGVudC4gIFRoaXMgYXBwcm9hY2ggbWVyZWx5CisgICAgcHJvdmlkZXMgYSBjb252ZW5pZW50 IHdheSB0byBvcmRlciB0aGUgcmVzdWx0cyBhZnRlcndhcmRzLgorICAgPC9wYXJhPgorCisg ICA8cGFyYT4KKyAgICBUbyBjcmVhdGUgYSBkZXB0aC1maXJzdCBvcmRlciwgd2UgY29tcHV0 ZSBmb3IgZWFjaCByZXN1bHQgcm93IGFuIGFycmF5IG9mCisgICAgcm93cyB0aGF0IHdlIGhh dmUgdmlzaXRlZCBzbyBmYXIuICBGb3IgZXhhbXBsZSwgY29uc2lkZXIgdGhlIGZvbGxvd2lu ZworICAgIHF1ZXJ5IHRoYXQgc2VhcmNoZXMgYSB0YWJsZSA8c3RydWN0bmFtZT50cmVlPC9z dHJ1Y3RuYW1lPiB1c2luZyBhCisgICAgPHN0cnVjdGZpZWxkPmxpbms8L3N0cnVjdGZpZWxk PiBmaWVsZDoKKworPHByb2dyYW1saXN0aW5nPgorV0lUSCBSRUNVUlNJVkUgc2VhcmNoX3Ry ZWUoaWQsIGxpbmssIGRhdGEpIEFTICgKKyAgICBTRUxFQ1QgdC5pZCwgdC5saW5rLCB0LmRh dGEKKyAgICBGUk9NIHRyZWUgdAorICBVTklPTiBBTEwKKyAgICBTRUxFQ1QgdC5pZCwgdC5s aW5rLCB0LmRhdGEKKyAgICBGUk9NIHRyZWUgdCwgc2VhcmNoX3RyZWUgc3QKKyAgICBXSEVS RSB0LmlkID0gc3QubGluaworKQorU0VMRUNUICogRlJPTSBzZWFyY2hfdHJlZTsKKzwvcHJv Z3JhbWxpc3Rpbmc+CisKKyAgICBUbyBhZGQgZGVwdGgtZmlyc3Qgb3JkZXJpbmcgaW5mb3Jt YXRpb24sIHlvdSBjYW4gd3JpdGUgdGhpczoKKworPHByb2dyYW1saXN0aW5nPgorV0lUSCBS RUNVUlNJVkUgc2VhcmNoX3RyZWUoaWQsIGxpbmssIGRhdGEsIDxlbXBoYXNpcz5wYXRoPC9l bXBoYXNpcz4pIEFTICgKKyAgICBTRUxFQ1QgdC5pZCwgdC5saW5rLCB0LmRhdGEsIDxlbXBo YXNpcz5BUlJBWVt0LmlkXTwvZW1waGFzaXM+CisgICAgRlJPTSB0cmVlIHQKKyAgVU5JT04g QUxMCisgICAgU0VMRUNUIHQuaWQsIHQubGluaywgdC5kYXRhLCA8ZW1waGFzaXM+cGF0aCB8 fCB0LmlkPC9lbXBoYXNpcz4KKyAgICBGUk9NIHRyZWUgdCwgc2VhcmNoX3RyZWUgc3QKKyAg ICBXSEVSRSB0LmlkID0gc3QubGluaworKQorU0VMRUNUICogRlJPTSBzZWFyY2hfdHJlZSA8 ZW1waGFzaXM+T1JERVIgQlkgcGF0aDwvZW1waGFzaXM+OworPC9wcm9ncmFtbGlzdGluZz4K KyAgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIEluIHRoZSBnZW5lcmFsIGNhc2Ugd2hlcmUg bW9yZSB0aGFuIG9uZSBmaWVsZCBuZWVkcyB0byBiZSB1c2VkIHRvIGlkZW50aWZ5CisgICBh IHJvdywgdXNlIGFuIGFycmF5IG9mIHJvd3MuICBGb3IgZXhhbXBsZSwgaWYgd2UgbmVlZGVk IHRvIHRyYWNrIGZpZWxkcworICAgPHN0cnVjdGZpZWxkPmYxPC9zdHJ1Y3RmaWVsZD4gYW5k IDxzdHJ1Y3RmaWVsZD5mMjwvc3RydWN0ZmllbGQ+OgorCis8cHJvZ3JhbWxpc3Rpbmc+CitX SVRIIFJFQ1VSU0lWRSBzZWFyY2hfdHJlZShpZCwgbGluaywgZGF0YSwgPGVtcGhhc2lzPnBh dGg8L2VtcGhhc2lzPikgQVMgKAorICAgIFNFTEVDVCB0LmlkLCB0LmxpbmssIHQuZGF0YSwg PGVtcGhhc2lzPkFSUkFZW1JPVyh0LmYxLCB0LmYyKV08L2VtcGhhc2lzPgorICAgIEZST00g dHJlZSB0CisgIFVOSU9OIEFMTAorICAgIFNFTEVDVCB0LmlkLCB0LmxpbmssIHQuZGF0YSwg PGVtcGhhc2lzPnBhdGggfHwgUk9XKHQuZjEsIHQuZjIpPC9lbXBoYXNpcz4KKyAgICBGUk9N IHRyZWUgdCwgc2VhcmNoX3RyZWUgc3QKKyAgICBXSEVSRSB0LmlkID0gc3QubGluaworKQor U0VMRUNUICogRlJPTSBzZWFyY2hfdHJlZSA8ZW1waGFzaXM+T1JERVIgQlkgcGF0aDwvZW1w aGFzaXM+OworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgorCisgIDxub3RlPgorICAg PHBhcmE+CisgICAgVGhlIHF1ZXJpZXMgc2hvd24gaW4gdGhpcyBhbmQgdGhlIGZvbGxvd2lu ZyBzZWN0aW9uIGludm9sdmluZyAoZXhwbGljaXQKKyAgICBvciBpbXBsaWNpdCkgPGxpdGVy YWw+Uk9XPC9saXRlcmFsPiBjb25zdHJ1Y3RvcnMgaW4gdGhlIHRhcmdldCBsaXN0IG9ubHkK KyAgICBzdXBwb3J0IDxsaXRlcmFsPlVOSU9OIEFMTDwvbGl0ZXJhbD4gKG5vdCBwbGFpbiA8 bGl0ZXJhbD5VTklPTjwvbGl0ZXJhbD4pCisgICAgaW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50 YXRpb24uCisgICA8L3BhcmE+CisgIDwvbm90ZT4KKworICA8dGlwPgorICAgPHBhcmE+Cisg ICAgT21pdCB0aGUgPGxpdGVyYWw+Uk9XKCk8L2xpdGVyYWw+IHN5bnRheCBpbiB0aGUgY29t bW9uIGNhc2Ugd2hlcmUgb25seSBvbmUKKyAgICBmaWVsZCBuZWVkcyB0byBiZSB0cmFja2Vk LiAgVGhpcyBhbGxvd3MgYSBzaW1wbGUgYXJyYXkgcmF0aGVyIHRoYW4gYQorICAgIGNvbXBv c2l0ZS10eXBlIGFycmF5IHRvIGJlIHVzZWQsIGdhaW5pbmcgZWZmaWNpZW5jeS4KKyAgIDwv cGFyYT4KKyAgPC90aXA+CisKKyAgPHBhcmE+CisgICBUbyBjcmVhdGUgYSBicmVhZHRoLWZp cnN0IG9yZGVyLCB5b3UgY2FuIGFkZCBhIGNvbHVtbiB0aGF0IHRyYWNrcyB0aGUgZGVwdGgK KyAgIG9mIHRoZSBzZWFyY2gsIGZvciBleGFtcGxlOgorCis8cHJvZ3JhbWxpc3Rpbmc+CitX SVRIIFJFQ1VSU0lWRSBzZWFyY2hfdHJlZShpZCwgbGluaywgZGF0YSwgPGVtcGhhc2lzPmxl dmVsPC9lbXBoYXNpcz4pIEFTICgKKyAgICBTRUxFQ1QgdC5pZCwgdC5saW5rLCB0LmRhdGEs IDxlbXBoYXNpcz4wPC9lbXBoYXNpcz4KKyAgICBGUk9NIHRyZWUgdAorICBVTklPTiBBTEwK KyAgICBTRUxFQ1QgdC5pZCwgdC5saW5rLCB0LmRhdGEsIDxlbXBoYXNpcz5sZXZlbCArIDE8 L2VtcGhhc2lzPgorICAgIEZST00gdHJlZSB0LCBzZWFyY2hfdHJlZSBzdAorICAgIFdIRVJF IHQuaWQgPSBzdC5saW5rCispCitTRUxFQ1QgKiBGUk9NIHNlYXJjaF90cmVlIDxlbXBoYXNp cz5PUkRFUiBCWSBsZXZlbDwvZW1waGFzaXM+OworPC9wcm9ncmFtbGlzdGluZz4KKworICAg VG8gZ2V0IGEgc3RhYmxlIHNvcnQsIGFkZCBkYXRhIGNvbHVtbnMgYXMgc2Vjb25kYXJ5IHNv cnRpbmcgY29sdW1ucy4KKyAgPC9wYXJhPgorCisgIDx0aXA+CisgICA8cGFyYT4KKyAgICBU aGUgcmVjdXJzaXZlIHF1ZXJ5IGV2YWx1YXRpb24gYWxnb3JpdGhtIHByb2R1Y2VzIGl0cyBv dXRwdXQgaW4KKyAgICBicmVhZHRoLWZpcnN0IHNlYXJjaCBvcmRlci4gIEhvd2V2ZXIsIHRo aXMgaXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsIGFuZAorICAgIGl0IGlzIHBlcmhhcHMg dW5zb3VuZCB0byByZWx5IG9uIGl0LiAgVGhlIG9yZGVyIG9mIHRoZSByb3dzIHdpdGhpbiBl YWNoCisgICAgbGV2ZWwgaXMgY2VydGFpbmx5IHVuZGVmaW5lZCwgc28gc29tZSBleHBsaWNp dCBvcmRlcmluZyBtaWdodCBiZSBkZXNpcmVkCisgICAgaW4gYW55IGNhc2UuCisgICA8L3Bh cmE+CisgIDwvdGlwPgorCisgIDxwYXJhPgorICAgVGhlcmUgaXMgYnVpbHQtaW4gc3ludGF4 IHRvIGNvbXB1dGUgYSBkZXB0aC0gb3IgYnJlYWR0aC1maXJzdCBzb3J0IGNvbHVtbi4KKyAg IEZvciBleGFtcGxlOgorCis8cHJvZ3JhbWxpc3Rpbmc+CitXSVRIIFJFQ1VSU0lWRSBzZWFy Y2hfdHJlZShpZCwgbGluaywgZGF0YSkgQVMgKAorICAgIFNFTEVDVCB0LmlkLCB0Lmxpbmss IHQuZGF0YQorICAgIEZST00gdHJlZSB0CisgIFVOSU9OIEFMTAorICAgIFNFTEVDVCB0Lmlk LCB0LmxpbmssIHQuZGF0YQorICAgIEZST00gdHJlZSB0LCBzZWFyY2hfdHJlZSBzdAorICAg IFdIRVJFIHQuaWQgPSBzdC5saW5rCispIDxlbXBoYXNpcz5TRUFSQ0ggREVQVEggRklSU1Qg QlkgaWQgU0VUIG9yZGVyY29sPC9lbXBoYXNpcz4KK1NFTEVDVCAqIEZST00gc2VhcmNoX3Ry ZWUgT1JERVIgQlkgb3JkZXJjb2w7CisKK1dJVEggUkVDVVJTSVZFIHNlYXJjaF90cmVlKGlk LCBsaW5rLCBkYXRhKSBBUyAoCisgICAgU0VMRUNUIHQuaWQsIHQubGluaywgdC5kYXRhCisg ICAgRlJPTSB0cmVlIHQKKyAgVU5JT04gQUxMCisgICAgU0VMRUNUIHQuaWQsIHQubGluaywg dC5kYXRhCisgICAgRlJPTSB0cmVlIHQsIHNlYXJjaF90cmVlIHN0CisgICAgV0hFUkUgdC5p ZCA9IHN0LmxpbmsKKykgPGVtcGhhc2lzPlNFQVJDSCBCUkVBRFRIIEZJUlNUIEJZIGlkIFNF VCBvcmRlcmNvbDwvZW1waGFzaXM+CitTRUxFQ1QgKiBGUk9NIHNlYXJjaF90cmVlIE9SREVS IEJZIG9yZGVyY29sOworPC9wcm9ncmFtbGlzdGluZz4KKyAgIFRoaXMgc3ludGF4IGlzIGlu dGVybmFsbHkgZXhwYW5kZWQgdG8gc29tZXRoaW5nIHNpbWlsYXIgdG8gdGhlIGFib3ZlCisg ICBoYW5kLXdyaXR0ZW4gZm9ybXMuICBUaGUgPGxpdGVyYWw+U0VBUkNIPC9saXRlcmFsPiBj bGF1c2Ugc3BlY2lmaWVzIHdoZXRoZXIKKyAgIGRlcHRoLSBvciBicmVhZHRoIGZpcnN0IHNl YXJjaCBpcyB3YW50ZWQsIHRoZSBsaXN0IG9mIGNvbHVtbnMgdG8gdHJhY2sgZm9yCisgICBz b3J0aW5nLCBhbmQgYSBjb2x1bW4gbmFtZSB0aGF0IHdpbGwgY29udGFpbiB0aGUgcmVzdWx0 IGRhdGEgdGhhdCBjYW4gYmUKKyAgIHVzZWQgZm9yIHNvcnRpbmcuICBUaGF0IGNvbHVtbiB3 aWxsIGltcGxpY2l0bHkgYmUgYWRkZWQgdG8gdGhlIG91dHB1dCByb3dzCisgICBvZiB0aGUg Q1RFLgorICA8L3BhcmE+CisgIDwvc2VjdDM+CisKKyAgPHNlY3QzIGlkPSJxdWVyaWVzLXdp dGgtY3ljbGUiPgorICAgPHRpdGxlPkN5Y2xlIERldGVjdGlvbjwvdGl0bGU+CisKICAgPHBh cmE+CiAgICBXaGVuIHdvcmtpbmcgd2l0aCByZWN1cnNpdmUgcXVlcmllcyBpdCBpcyBpbXBv cnRhbnQgdG8gYmUgc3VyZSB0aGF0CiAgICB0aGUgcmVjdXJzaXZlIHBhcnQgb2YgdGhlIHF1 ZXJ5IHdpbGwgZXZlbnR1YWxseSByZXR1cm4gbm8gdHVwbGVzLApAQCAtMjE0NCwxOCArMjI5 NSwxOCBAQCA8dGl0bGU+UmVjdXJzaXZlIFF1ZXJ5IEV2YWx1YXRpb248L3RpdGxlPgogICAg PGxpdGVyYWw+VU5JT04gQUxMPC9saXRlcmFsPiB0byA8bGl0ZXJhbD5VTklPTjwvbGl0ZXJh bD4gd291bGQgbm90IGVsaW1pbmF0ZSB0aGUgbG9vcGluZy4KICAgIEluc3RlYWQgd2UgbmVl ZCB0byByZWNvZ25pemUgd2hldGhlciB3ZSBoYXZlIHJlYWNoZWQgdGhlIHNhbWUgcm93IGFn YWluCiAgICB3aGlsZSBmb2xsb3dpbmcgYSBwYXJ0aWN1bGFyIHBhdGggb2YgbGlua3MuICBX ZSBhZGQgdHdvIGNvbHVtbnMKLSAgIDxzdHJ1Y3RmaWVsZD5wYXRoPC9zdHJ1Y3RmaWVsZD4g YW5kIDxzdHJ1Y3RmaWVsZD5jeWNsZTwvc3RydWN0ZmllbGQ+IHRvIHRoZSBsb29wLXByb25l IHF1ZXJ5OgorICAgPHN0cnVjdGZpZWxkPmlzX2N5Y2xlPC9zdHJ1Y3RmaWVsZD4gYW5kIDxz dHJ1Y3RmaWVsZD5wYXRoPC9zdHJ1Y3RmaWVsZD4gdG8gdGhlIGxvb3AtcHJvbmUgcXVlcnk6 CiAKIDxwcm9ncmFtbGlzdGluZz4KLVdJVEggUkVDVVJTSVZFIHNlYXJjaF9ncmFwaChpZCwg bGluaywgZGF0YSwgZGVwdGgsIHBhdGgsIGN5Y2xlKSBBUyAoCitXSVRIIFJFQ1VSU0lWRSBz ZWFyY2hfZ3JhcGgoaWQsIGxpbmssIGRhdGEsIGRlcHRoLCBpc19jeWNsZSwgcGF0aCkgQVMg KAogICAgIFNFTEVDVCBnLmlkLCBnLmxpbmssIGcuZGF0YSwgMSwKLSAgICAgIEFSUkFZW2cu aWRdLAotICAgICAgZmFsc2UKKyAgICAgIGZhbHNlLAorICAgICAgQVJSQVlbZy5pZF0KICAg ICBGUk9NIGdyYXBoIGcKICAgVU5JT04gQUxMCiAgICAgU0VMRUNUIGcuaWQsIGcubGluaywg Zy5kYXRhLCBzZy5kZXB0aCArIDEsCi0gICAgICBwYXRoIHx8IGcuaWQsCi0gICAgICBnLmlk ID0gQU5ZKHBhdGgpCisgICAgICBnLmlkID0gQU5ZKHBhdGgpLAorICAgICAgcGF0aCB8fCBn LmlkCiAgICAgRlJPTSBncmFwaCBnLCBzZWFyY2hfZ3JhcGggc2cKICAgICBXSEVSRSBnLmlk ID0gc2cubGluayBBTkQgTk9UIGN5Y2xlCiApCkBAIC0yMTcyLDE1ICsyMzIzLDE1IEBAIDx0 aXRsZT5SZWN1cnNpdmUgUXVlcnkgRXZhbHVhdGlvbjwvdGl0bGU+CiAgICBjb21wYXJlIGZp ZWxkcyA8c3RydWN0ZmllbGQ+ZjE8L3N0cnVjdGZpZWxkPiBhbmQgPHN0cnVjdGZpZWxkPmYy PC9zdHJ1Y3RmaWVsZD46CiAKIDxwcm9ncmFtbGlzdGluZz4KLVdJVEggUkVDVVJTSVZFIHNl YXJjaF9ncmFwaChpZCwgbGluaywgZGF0YSwgZGVwdGgsIHBhdGgsIGN5Y2xlKSBBUyAoCitX SVRIIFJFQ1VSU0lWRSBzZWFyY2hfZ3JhcGgoaWQsIGxpbmssIGRhdGEsIGRlcHRoLCBpc19j eWNsZSwgcGF0aCkgQVMgKAogICAgIFNFTEVDVCBnLmlkLCBnLmxpbmssIGcuZGF0YSwgMSwK LSAgICAgIEFSUkFZW1JPVyhnLmYxLCBnLmYyKV0sCi0gICAgICBmYWxzZQorICAgICAgZmFs c2UsCisgICAgICBBUlJBWVtST1coZy5mMSwgZy5mMildCiAgICAgRlJPTSBncmFwaCBnCiAg IFVOSU9OIEFMTAogICAgIFNFTEVDVCBnLmlkLCBnLmxpbmssIGcuZGF0YSwgc2cuZGVwdGgg KyAxLAotICAgICAgcGF0aCB8fCBST1coZy5mMSwgZy5mMiksCi0gICAgICBST1coZy5mMSwg Zy5mMikgPSBBTlkocGF0aCkKKyAgICAgIFJPVyhnLmYxLCBnLmYyKSA9IEFOWShwYXRoKSwK KyAgICAgIHBhdGggfHwgUk9XKGcuZjEsIGcuZjIpCiAgICAgRlJPTSBncmFwaCBnLCBzZWFy Y2hfZ3JhcGggc2cKICAgICBXSEVSRSBnLmlkID0gc2cubGluayBBTkQgTk9UIGN5Y2xlCiAp CkBAIC0yMTk2LDEyICsyMzQ3LDM5IEBAIDx0aXRsZT5SZWN1cnNpdmUgUXVlcnkgRXZhbHVh dGlvbjwvdGl0bGU+CiAgICA8L3BhcmE+CiAgIDwvdGlwPgogCisgIDxwYXJhPgorICAgVGhl cmUgaXMgYnVpbHQtaW4gc3ludGF4IHRvIHNpbXBsaWZ5IGN5Y2xlIGRldGVjdGlvbi4gIFRo ZSBhYm92ZSBxdWVyeSBjYW4KKyAgIGFsc28gYmUgd3JpdHRlbiBsaWtlIHRoaXM6Cis8cHJv Z3JhbWxpc3Rpbmc+CitXSVRIIFJFQ1VSU0lWRSBzZWFyY2hfZ3JhcGgoaWQsIGxpbmssIGRh dGEsIGRlcHRoKSBBUyAoCisgICAgU0VMRUNUIGcuaWQsIGcubGluaywgZy5kYXRhLCAxCisg ICAgRlJPTSBncmFwaCBnCisgIFVOSU9OIEFMTAorICAgIFNFTEVDVCBnLmlkLCBnLmxpbmss IGcuZGF0YSwgc2cuZGVwdGggKyAxCisgICAgRlJPTSBncmFwaCBnLCBzZWFyY2hfZ3JhcGgg c2cKKyAgICBXSEVSRSBnLmlkID0gc2cubGluaworKSA8ZW1waGFzaXM+Q1lDTEUgaWQgU0VU IGlzX2N5Y2xlIFRPIHRydWUgREVGQVVMVCBmYWxzZSBVU0lORyBwYXRoPC9lbXBoYXNpcz4K K1NFTEVDVCAqIEZST00gc2VhcmNoX2dyYXBoOworPC9wcm9ncmFtbGlzdGluZz4KKyAgIGFu ZCBpdCB3aWxsIGJlIGludGVybmFsbHkgcmV3cml0dGVuIHRvIHRoZSBhYm92ZSBmb3JtLiAg VGhlCisgICA8bGl0ZXJhbD5DWUNMRTwvbGl0ZXJhbD4gY2xhdXNlIHNwZWNpZmllcyBmaXJz dCB0aGUgbGlzdCBvZiBjb2x1bW5zIHRvCisgICB0cmFjayBmb3IgY3ljbGUgZGV0ZWN0aW9u LCB0aGVuIGEgY29sdW1uIG5hbWUgdGhhdCB3aWxsIHNob3cgd2hldGhlciBhCisgICBjeWNs ZSBoYXMgYmVlbiBkZXRlY3RlZCwgdGhlbiB0d28gdmFsdWVzIHRvIHVzZSBpbiB0aGF0IGNv bHVtbiBmb3IgdGhlIHllcworICAgYW5kIG5vIGNhc2VzLCBhbmQgZmluYWxseSB0aGUgbmFt ZSBvZiBhbm90aGVyIGNvbHVtbiB0aGF0IHdpbGwgdHJhY2sgdGhlCisgICBwYXRoLiAgVGhl IGN5Y2xlIGFuZCBwYXRoIGNvbHVtbnMgd2lsbCBpbXBsaWNpdGx5IGJlIGFkZGVkIHRvIHRo ZSBvdXRwdXQKKyAgIHJvd3Mgb2YgdGhlIENURS4KKyAgPC9wYXJhPgorCiAgIDx0aXA+CiAg ICA8cGFyYT4KLSAgICBUaGUgcmVjdXJzaXZlIHF1ZXJ5IGV2YWx1YXRpb24gYWxnb3JpdGht IHByb2R1Y2VzIGl0cyBvdXRwdXQgaW4KLSAgICBicmVhZHRoLWZpcnN0IHNlYXJjaCBvcmRl ci4gIFlvdSBjYW4gZGlzcGxheSB0aGUgcmVzdWx0cyBpbiBkZXB0aC1maXJzdAotICAgIHNl YXJjaCBvcmRlciBieSBtYWtpbmcgdGhlIG91dGVyIHF1ZXJ5IDxsaXRlcmFsPk9SREVSIEJZ PC9saXRlcmFsPiBhCi0gICAgPHF1b3RlPnBhdGg8L3F1b3RlPiBjb2x1bW4gY29uc3RydWN0 ZWQgaW4gdGhpcyB3YXkuCisgICAgVGhlIGN5Y2xlIHBhdGggY29sdW1uIGlzIGNvbXB1dGVk IGluIHRoZSBzYW1lIHdheSBhcyB0aGUgZGVwdGgtZmlyc3QKKyAgICBvcmRlcmluZyBjb2x1 bW4gc2hvdyBpbiB0aGUgcHJldmlvdXMgc2VjdGlvbi4gIEEgcXVlcnkgY2FuIGhhdmUgYm90 aCBhCisgICAgPGxpdGVyYWw+U0VBUkNIPC9saXRlcmFsPiBhbmQgYSA8bGl0ZXJhbD5DWUNM RTwvbGl0ZXJhbD4gY2xhdXNlLCBidXQgYQorICAgIGRlcHRoLWZpcnN0IHNlYXJjaCBzcGVj aWZpY2F0aW9uIGFuZCBhIGN5Y2xlIGRldGVjdGlvbiBzcGVjaWZpY2F0aW9uIHdvdWxkCisg ICAgY3JlYXRlIHJlZHVuZGFudCBjb21wdXRhdGlvbnMsIHNvIGl0J3MgbW9yZSBlZmZpY2ll bnQgdG8ganVzdCB1c2UgdGhlCisgICAgPGxpdGVyYWw+Q1lDTEU8L2xpdGVyYWw+IGNsYXVz ZSBhbmQgb3JkZXIgYnkgdGhlIHBhdGggY29sdW1uLiAgSWYKKyAgICBicmVhZHRoLWZpcnN0 IG9yZGVyaW5nIGlzIHdhbnRlZCwgdGhlbiBzcGVjaWZ5aW5nIGJvdGgKKyAgICA8bGl0ZXJh bD5TRUFSQ0g8L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD5DWUNMRTwvbGl0ZXJhbD4gY2FuIGJl IHVzZWZ1bC4KICAgIDwvcGFyYT4KICAgPC90aXA+CiAKQEAgLTIyMjksNiArMjQwNywxMSBA QCA8dGl0bGU+UmVjdXJzaXZlIFF1ZXJ5IEV2YWx1YXRpb248L3RpdGxlPgogICAgb3V0ZXIg cXVlcnkgd2lsbCB1c3VhbGx5IHRyeSB0byBmZXRjaCBhbGwgb2YgdGhlIDxsaXRlcmFsPldJ VEg8L2xpdGVyYWw+IHF1ZXJ5J3MKICAgIG91dHB1dCBhbnl3YXkuCiAgIDwvcGFyYT4KKyAg PC9zZWN0Mz4KKyA8L3NlY3QyPgorCisgPHNlY3QyPgorICA8dGl0bGU+Q29tbW9uIFRhYmxl IEV4cHJlc3Npb24gTWF0ZXJpYWxpemF0aW9uPC90aXRsZT4KIAogICA8cGFyYT4KICAgIEEg dXNlZnVsIHByb3BlcnR5IG9mIDxsaXRlcmFsPldJVEg8L2xpdGVyYWw+IHF1ZXJpZXMgaXMg dGhhdCB0aGV5IGFyZQpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9zZWxlY3Quc2dt bCBiL2RvYy9zcmMvc2dtbC9yZWYvc2VsZWN0LnNnbWwKaW5kZXggYjRkZWE5YjZhYy4uN2I3 OWM2ZmU5MSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9zZWxlY3Quc2dtbAorKysg Yi9kb2Mvc3JjL3NnbWwvcmVmL3NlbGVjdC5zZ21sCkBAIC03Myw2ICs3Myw4IEBACiA8cGhy YXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+d2l0aF9xdWVyeTwvcmVw bGFjZWFibGU+IGlzOjwvcGhyYXNlPgogCiAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPndpdGhfcXVlcnlfbmFtZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkg XSBBUyBbIFsgTk9UIF0gTUFURVJJQUxJWkVEIF0gKCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+c2VsZWN0PC9yZXBsYWNlYWJsZT4gfCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+dmFsdWVzPC9yZXBsYWNlYWJsZT4gfCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+aW5zZXJ0PC9yZXBsYWNlYWJsZT4gfCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+dXBkYXRlPC9yZXBsYWNlYWJsZT4gfCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+ZGVsZXRlPC9yZXBsYWNlYWJsZT4gKQorICAgICAgICBbIFNFQVJDSCB7IEJS RUFEVEggfCBERVBUSCB9IEZJUlNUIEJZIDxyZXBsYWNlYWJsZT5jb2x1bW5fbmFtZTwvcmVw bGFjZWFibGU+IFssIC4uLl0gU0VUIDxyZXBsYWNlYWJsZT5zZWFyY2hfc2VxX2NvbF9uYW1l PC9yZXBsYWNlYWJsZT4gXQorICAgICAgICBbIENZQ0xFIDxyZXBsYWNlYWJsZT5jb2x1bW5f bmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gU0VUIDxyZXBsYWNlYWJsZT5jeWNsZV9tYXJr X2NvbF9uYW1lPC9yZXBsYWNlYWJsZT4gVE8gPHJlcGxhY2VhYmxlPmN5Y2xlX21hcmtfdmFs dWU8L3JlcGxhY2VhYmxlPiBERUZBVUxUIDxyZXBsYWNlYWJsZT5jeWNsZV9tYXJrX2RlZmF1 bHQ8L3JlcGxhY2VhYmxlPiBVU0lORyA8cmVwbGFjZWFibGU+Y3ljbGVfcGF0aF9jb2xfbmFt ZTwvcmVwbGFjZWFibGU+IF0KIAogVEFCTEUgWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICogXQogPC9zeW5vcHNp cz4KQEAgLTI3Niw2ICsyNzgsNDggQEAgPHRpdGxlPjxsaXRlcmFsPldJVEg8L2xpdGVyYWw+ IENsYXVzZTwvdGl0bGU+CiAgICAgcXVlcmllcyB0aGF0IGRvIG5vdCB1c2UgcmVjdXJzaW9u IG9yIGZvcndhcmQgcmVmZXJlbmNlcy4KICAgIDwvcGFyYT4KIAorICAgPHBhcmE+CisgICAg VGhlIG9wdGlvbmFsIDxsaXRlcmFsPlNFQVJDSDwvbGl0ZXJhbD4gY2xhdXNlIGNvbXB1dGVz IGEgPGZpcnN0dGVybT5zZWFyY2gKKyAgICBzZXF1ZW5jZSBjb2x1bW48L2ZpcnN0dGVybT4g dGhhdCBjYW4gYmUgdXNlZCBmb3Igb3JkZXJpbmcgdGhlIHJlc3VsdHMgb2YgYQorICAgIHJl Y3Vyc2l2ZSBxdWVyeSBpbiBlaXRoZXIgYnJlYWR0aC1maXJzdCBvciBkZXB0aC1maXJzdCBv cmRlci4gIFRoZQorICAgIHN1cHBsaWVkIGNvbHVtbiBuYW1lIGxpc3Qgc3BlY2lmaWVzIHRo ZSByb3cga2V5IHRoYXQgaXMgdG8gYmUgdXNlZCBmb3IKKyAgICBrZWVwaW5nIHRyYWNrIG9m IHZpc2l0ZWQgcm93cy4gIEEgY29sdW1uIG5hbWVkCisgICAgPHJlcGxhY2VhYmxlPnNlYXJj aF9zZXFfY29sX25hbWU8L3JlcGxhY2VhYmxlPiB3aWxsIGJlIGFkZGVkIHRvIHRoZSByZXN1 bHQKKyAgICBjb2x1bW4gbGlzdCBvZiB0aGUgPGxpdGVyYWw+V0lUSDwvbGl0ZXJhbD4gcXVl cnkuICBUaGlzIGNvbHVtbiBjYW4gYmUKKyAgICBvcmRlcmVkIGJ5IGluIHRoZSBvdXRlciBx dWVyeSB0byBhY2hpZXZlIHRoZSByZXNwZWN0aXZlIG9yZGVyaW5nLiAgU2VlCisgICAgPHhy ZWYgbGlua2VuZD0icXVlcmllcy13aXRoLXNlYXJjaCIvPiBmb3IgZXhhbXBsZXMuCisgICA8 L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIFRoZSBvcHRpb25hbCA8bGl0ZXJhbD5DWUNMRTwv bGl0ZXJhbD4gY2xhdXNlIGlzIHVzZWQgdG8gZGV0ZWN0IGN5Y2xlcyBpbgorICAgIHJlY3Vy c2l2ZSBxdWVyaWVzLiAgVGhlIHN1cHBsaWVkIGNvbHVtbiBuYW1lIGxpc3Qgc3BlY2lmaWVz IHRoZSByb3cga2V5CisgICAgdGhhdCBpcyB0byBiZSB1c2VkIGZvciBrZWVwaW5nIHRyYWNr IG9mIHZpc2l0ZWQgcm93cy4gIEEgY29sdW1uIG5hbWVkCisgICAgPHJlcGxhY2VhYmxlPmN5 Y2xlX21hcmtfY29sX25hbWU8L3JlcGxhY2VhYmxlPiB3aWxsIGJlIGFkZGVkIHRvIHRoZSBy ZXN1bHQKKyAgICBjb2x1bW4gbGlzdCBvZiB0aGUgPGxpdGVyYWw+V0lUSDwvbGl0ZXJhbD4g cXVlcnkuICBUaGlzIGNvbHVtbiB3aWxsIGJlIHNldAorICAgIHRvIDxyZXBsYWNlYWJsZT5j eWNsZV9tYXJrX3ZhbHVlPC9yZXBsYWNlYWJsZT4gd2hlbiBhIGN5Y2xlIGhhcyBiZWVuCisg ICAgZGV0ZWN0ZWQsIGVsc2UgdG8gPHJlcGxhY2VhYmxlPmN5Y2xlX21hcmtfZGVmYXVsdDwv cmVwbGFjZWFibGU+LgorICAgIEZ1cnRoZXJtb3JlLCBwcm9jZXNzaW5nIG9mIHRoZSByZWN1 cnNpdmUgdW5pb24gd2lsbCBzdG9wIHdoZW4gYSBjeWNsZSBoYXMKKyAgICBiZWVuIGRldGVj dGVkLiAgPHJlcGxhY2VhYmxlPmN5Y2xlX21hcmtfdmFsdWU8L3JlcGxhY2VhYmxlPiBhbmQK KyAgICA8cmVwbGFjZWFibGU+Y3ljbGVfbWFya19kZWZhdWx0PC9yZXBsYWNlYWJsZT4gbXVz dCBiZSBjb25zdGFudHMgYW5kIHRoZXkKKyAgICBtdXN0IGJlIGNvZXJjaWJsZSB0byBhIGNv bW1vbiBkYXRhIHR5cGUsIGFuZCB0aGUgZGF0YSB0eXBlIG11c3QgaGF2ZSBhbgorICAgIGlu ZXF1YWxpdHkgb3BlcmF0b3IuICAoVGhlIFNRTCBzdGFuZGFyZCByZXF1aXJlcyB0aGF0IHRo ZXkgYmUgY2hhcmFjdGVyCisgICAgc3RyaW5ncywgYnV0IFBvc3RncmVTUUwgZG9lcyBub3Qg cmVxdWlyZSB0aGF0LikgIEZ1cnRoZXJtb3JlLCBhIGNvbHVtbgorICAgIG5hbWVkIDxyZXBs YWNlYWJsZT5jeWNsZV9wYXRoX2NvbF9uYW1lPC9yZXBsYWNlYWJsZT4gd2lsbCBiZSBhZGRl ZCB0byB0aGUKKyAgICByZXN1bHQgY29sdW1uIGxpc3Qgb2YgdGhlIDxsaXRlcmFsPldJVEg8 L2xpdGVyYWw+IHF1ZXJ5LiAgVGhpcyBjb2x1bW4gaXMKKyAgICB1c2VkIGludGVybmFsbHkg Zm9yIHRyYWNraW5nIHZpc2l0ZWQgcm93cy4gIFNlZSA8eHJlZgorICAgIGxpbmtlbmQ9InF1 ZXJpZXMtd2l0aC1jeWNsZSIvPiBmb3IgZXhhbXBsZXMuCisgICA8L3BhcmE+CisKKyAgIDxw YXJhPgorICAgIEJvdGggdGhlIDxsaXRlcmFsPlNFQVJDSDwvbGl0ZXJhbD4gYW5kIHRoZSA8 bGl0ZXJhbD5DWUNMRTwvbGl0ZXJhbD4gY2xhdXNlCisgICAgYXJlIG9ubHkgdmFsaWQgZm9y IHJlY3Vyc2l2ZSA8bGl0ZXJhbD5XSVRIPC9saXRlcmFsPiBxdWVyaWVzLiAgVGhlIGN1cnJl bnQKKyAgICBpbXBsZW1lbnRhdGlvbiBvbmx5IHN1cHBvcnRzIHJlY3Vyc2l2ZSBxdWVyaWVz IHVzaW5nIDxsaXRlcmFsPlVOSU9OCisgICAgQUxMPC9saXRlcmFsPiAobm90IHBsYWluIDxs aXRlcmFsPlVOSU9OPC9saXRlcmFsPiBvciBlcXVpdmFsZW50bHkKKyAgICA8bGl0ZXJhbD5V TklPTiBESVNUSU5DVDwvbGl0ZXJhbD4pLiAgSWYgYm90aCBjbGF1c2VzIGFyZSB1c2VkLCB0 aGUgY29sdW1uCisgICAgYWRkZWQgYnkgdGhlIDxsaXRlcmFsPlNFQVJDSDwvbGl0ZXJhbD4g Y2xhdXNlIGFwcGVhcnMgYmVmb3JlIHRoZSBjb2x1bW5zCisgICAgYWRkZWQgYnkgdGhlIDxs aXRlcmFsPkNZQ0xFPC9saXRlcmFsPiBjbGF1c2UuCisgICA8L3BhcmE+CisKICAgIDxwYXJh PgogICAgIFRoZSBwcmltYXJ5IHF1ZXJ5IGFuZCB0aGUgPGxpdGVyYWw+V0lUSDwvbGl0ZXJh bD4gcXVlcmllcyBhcmUgYWxsCiAgICAgKG5vdGlvbmFsbHkpIGV4ZWN1dGVkIGF0IHRoZSBz YW1lIHRpbWUuICBUaGlzIGltcGxpZXMgdGhhdCB0aGUgZWZmZWN0cyBvZgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9j b3B5ZnVuY3MuYwppbmRleCAwNDA5YTQwYjgyLi5lZDQwZDc3YTlkIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9j b3B5ZnVuY3MuYwpAQCAtMjU4OCw2ICsyNTg4LDM3IEBAIF9jb3B5T25Db25mbGljdENsYXVz ZShjb25zdCBPbkNvbmZsaWN0Q2xhdXNlICpmcm9tKQogCXJldHVybiBuZXdub2RlOwogfQog CitzdGF0aWMgQ1RFU2VhcmNoQ2xhdXNlICoKK19jb3B5Q1RFU2VhcmNoQ2xhdXNlKGNvbnN0 IENURVNlYXJjaENsYXVzZSAqZnJvbSkKK3sKKwlDVEVTZWFyY2hDbGF1c2UgKm5ld25vZGUg PSBtYWtlTm9kZShDVEVTZWFyY2hDbGF1c2UpOworCisJQ09QWV9OT0RFX0ZJRUxEKHNlYXJj aF9jb2xfbGlzdCk7CisJQ09QWV9TQ0FMQVJfRklFTEQoc2VhcmNoX2JyZWFkdGhfZmlyc3Qp OworCUNPUFlfU1RSSU5HX0ZJRUxEKHNlYXJjaF9zZXFfY29sdW1uKTsKKwlDT1BZX0xPQ0FU SU9OX0ZJRUxEKGxvY2F0aW9uKTsKKworCXJldHVybiBuZXdub2RlOworfQorCitzdGF0aWMg Q1RFQ3ljbGVDbGF1c2UgKgorX2NvcHlDVEVDeWNsZUNsYXVzZShjb25zdCBDVEVDeWNsZUNs YXVzZSAqZnJvbSkKK3sKKwlDVEVDeWNsZUNsYXVzZSAqbmV3bm9kZSA9IG1ha2VOb2RlKENU RUN5Y2xlQ2xhdXNlKTsKKworCUNPUFlfTk9ERV9GSUVMRChjeWNsZV9jb2xfbGlzdCk7CisJ Q09QWV9TVFJJTkdfRklFTEQoY3ljbGVfbWFya19jb2x1bW4pOworCUNPUFlfTk9ERV9GSUVM RChjeWNsZV9tYXJrX3ZhbHVlKTsKKwlDT1BZX05PREVfRklFTEQoY3ljbGVfbWFya19kZWZh dWx0KTsKKwlDT1BZX1NDQUxBUl9GSUVMRChjeWNsZV9tYXJrX3R5cGUpOworCUNPUFlfU0NB TEFSX0ZJRUxEKGN5Y2xlX21hcmtfdHlwbW9kKTsKKwlDT1BZX1NDQUxBUl9GSUVMRChjeWNs ZV9tYXJrX2NvbGxhdGlvbik7CisJQ09QWV9TVFJJTkdfRklFTEQoY3ljbGVfcGF0aF9jb2x1 bW4pOworCUNPUFlfTE9DQVRJT05fRklFTEQobG9jYXRpb24pOworCisJcmV0dXJuIG5ld25v ZGU7Cit9CisKIHN0YXRpYyBDb21tb25UYWJsZUV4cHIgKgogX2NvcHlDb21tb25UYWJsZUV4 cHIoY29uc3QgQ29tbW9uVGFibGVFeHByICpmcm9tKQogewpAQCAtMjYwNCw2ICsyNjM1LDgg QEAgX2NvcHlDb21tb25UYWJsZUV4cHIoY29uc3QgQ29tbW9uVGFibGVFeHByICpmcm9tKQog CUNPUFlfTk9ERV9GSUVMRChjdGVjb2x0eXBlcyk7CiAJQ09QWV9OT0RFX0ZJRUxEKGN0ZWNv bHR5cG1vZHMpOwogCUNPUFlfTk9ERV9GSUVMRChjdGVjb2xjb2xsYXRpb25zKTsKKwlDT1BZ X05PREVfRklFTEQoc2VhcmNoX2NsYXVzZSk7CisJQ09QWV9OT0RFX0ZJRUxEKGN5Y2xlX2Ns YXVzZSk7CiAKIAlyZXR1cm4gbmV3bm9kZTsKIH0KQEAgLTU2NzIsNiArNTcwNSwxMiBAQCBj b3B5T2JqZWN0SW1wbChjb25zdCB2b2lkICpmcm9tKQogCQljYXNlIFRfT25Db25mbGljdENs YXVzZToKIAkJCXJldHZhbCA9IF9jb3B5T25Db25mbGljdENsYXVzZShmcm9tKTsKIAkJCWJy ZWFrOworCQljYXNlIFRfQ1RFU2VhcmNoQ2xhdXNlOgorCQkJcmV0dmFsID0gX2NvcHlDVEVT ZWFyY2hDbGF1c2UoZnJvbSk7CisJCQlicmVhazsKKwkJY2FzZSBUX0NURUN5Y2xlQ2xhdXNl OgorCQkJcmV0dmFsID0gX2NvcHlDVEVDeWNsZUNsYXVzZShmcm9tKTsKKwkJCWJyZWFrOwog CQljYXNlIFRfQ29tbW9uVGFibGVFeHByOgogCQkJcmV0dmFsID0gX2NvcHlDb21tb25UYWJs ZUV4cHIoZnJvbSk7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVz L2VxdWFsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYwppbmRleCBl MmQxYjk4N2JmLi42YmFjZWUzODgyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9l cXVhbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCkBAIC0y ODMwLDYgKzI4MzAsMzMgQEAgX2VxdWFsT25Db25mbGljdENsYXVzZShjb25zdCBPbkNvbmZs aWN0Q2xhdXNlICphLCBjb25zdCBPbkNvbmZsaWN0Q2xhdXNlICpiKQogCXJldHVybiB0cnVl OwogfQogCitzdGF0aWMgYm9vbAorX2VxdWFsQ1RFU2VhcmNoQ2xhdXNlKGNvbnN0IENURVNl YXJjaENsYXVzZSAqYSwgY29uc3QgQ1RFU2VhcmNoQ2xhdXNlICpiKQoreworCUNPTVBBUkVf Tk9ERV9GSUVMRChzZWFyY2hfY29sX2xpc3QpOworCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKHNl YXJjaF9icmVhZHRoX2ZpcnN0KTsKKwlDT01QQVJFX1NUUklOR19GSUVMRChzZWFyY2hfc2Vx X2NvbHVtbik7CisJQ09NUEFSRV9MT0NBVElPTl9GSUVMRChsb2NhdGlvbik7CisKKwlyZXR1 cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wKK19lcXVhbENURUN5Y2xlQ2xhdXNlKGNvbnN0 IENURUN5Y2xlQ2xhdXNlICphLCBjb25zdCBDVEVDeWNsZUNsYXVzZSAqYikKK3sKKwlDT01Q QVJFX05PREVfRklFTEQoY3ljbGVfY29sX2xpc3QpOworCUNPTVBBUkVfU1RSSU5HX0ZJRUxE KGN5Y2xlX21hcmtfY29sdW1uKTsKKwlDT01QQVJFX05PREVfRklFTEQoY3ljbGVfbWFya192 YWx1ZSk7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKGN5Y2xlX21hcmtfZGVmYXVsdCk7CisJQ09N UEFSRV9TQ0FMQVJfRklFTEQoY3ljbGVfbWFya190eXBlKTsKKwlDT01QQVJFX1NDQUxBUl9G SUVMRChjeWNsZV9tYXJrX3R5cG1vZCk7CisJQ09NUEFSRV9TQ0FMQVJfRklFTEQoY3ljbGVf bWFya19jb2xsYXRpb24pOworCUNPTVBBUkVfU1RSSU5HX0ZJRUxEKGN5Y2xlX3BhdGhfY29s dW1uKTsKKwlDT01QQVJFX0xPQ0FUSU9OX0ZJRUxEKGxvY2F0aW9uKTsKKworCXJldHVybiB0 cnVlOworfQorCiBzdGF0aWMgYm9vbAogX2VxdWFsQ29tbW9uVGFibGVFeHByKGNvbnN0IENv bW1vblRhYmxlRXhwciAqYSwgY29uc3QgQ29tbW9uVGFibGVFeHByICpiKQogewpAQCAtMjg0 NCw2ICsyODcxLDggQEAgX2VxdWFsQ29tbW9uVGFibGVFeHByKGNvbnN0IENvbW1vblRhYmxl RXhwciAqYSwgY29uc3QgQ29tbW9uVGFibGVFeHByICpiKQogCUNPTVBBUkVfTk9ERV9GSUVM RChjdGVjb2x0eXBlcyk7CiAJQ09NUEFSRV9OT0RFX0ZJRUxEKGN0ZWNvbHR5cG1vZHMpOwog CUNPTVBBUkVfTk9ERV9GSUVMRChjdGVjb2xjb2xsYXRpb25zKTsKKwlDT01QQVJFX05PREVf RklFTEQoc2VhcmNoX2NsYXVzZSk7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKGN5Y2xlX2NsYXVz ZSk7CiAKIAlyZXR1cm4gdHJ1ZTsKIH0KQEAgLTM3MjQsNiArMzc1MywxMiBAQCBlcXVhbChj b25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQogCQljYXNlIFRfT25Db25mbGljdENsYXVz ZToKIAkJCXJldHZhbCA9IF9lcXVhbE9uQ29uZmxpY3RDbGF1c2UoYSwgYik7CiAJCQlicmVh azsKKwkJY2FzZSBUX0NURVNlYXJjaENsYXVzZToKKwkJCXJldHZhbCA9IF9lcXVhbENURVNl YXJjaENsYXVzZShhLCBiKTsKKwkJCWJyZWFrOworCQljYXNlIFRfQ1RFQ3ljbGVDbGF1c2U6 CisJCQlyZXR2YWwgPSBfZXF1YWxDVEVDeWNsZUNsYXVzZShhLCBiKTsKKwkJCWJyZWFrOwog CQljYXNlIFRfQ29tbW9uVGFibGVFeHByOgogCQkJcmV0dmFsID0gX2VxdWFsQ29tbW9uVGFi bGVFeHByKGEsIGIpOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rl cy9ub2RlRnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCmluZGV4IDFk Yzg3M2VkMjUuLmFiZDYzMmExYjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL25v ZGVGdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCkBAIC0xNTc1 LDYgKzE1NzUsMTIgQEAgZXhwckxvY2F0aW9uKGNvbnN0IE5vZGUgKmV4cHIpCiAJCWNhc2Ug VF9PbkNvbmZsaWN0Q2xhdXNlOgogCQkJbG9jID0gKChjb25zdCBPbkNvbmZsaWN0Q2xhdXNl ICopIGV4cHIpLT5sb2NhdGlvbjsKIAkJCWJyZWFrOworCQljYXNlIFRfQ1RFU2VhcmNoQ2xh dXNlOgorCQkJbG9jID0gKChjb25zdCBDVEVTZWFyY2hDbGF1c2UgKikgZXhwciktPmxvY2F0 aW9uOworCQkJYnJlYWs7CisJCWNhc2UgVF9DVEVDeWNsZUNsYXVzZToKKwkJCWxvYyA9ICgo Y29uc3QgQ1RFQ3ljbGVDbGF1c2UgKikgZXhwciktPmxvY2F0aW9uOworCQkJYnJlYWs7CiAJ CWNhc2UgVF9Db21tb25UYWJsZUV4cHI6CiAJCQlsb2MgPSAoKGNvbnN0IENvbW1vblRhYmxl RXhwciAqKSBleHByKS0+bG9jYXRpb247CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL25vZGVzL291dGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5j CmluZGV4IGYwMzg2NDgwYWIuLmU4OGFhNzQyMzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L25vZGVzL291dGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwpA QCAtMzA0Nyw2ICszMDQ3LDMzIEBAIF9vdXRXaXRoQ2xhdXNlKFN0cmluZ0luZm8gc3RyLCBj b25zdCBXaXRoQ2xhdXNlICpub2RlKQogCVdSSVRFX0xPQ0FUSU9OX0ZJRUxEKGxvY2F0aW9u KTsKIH0KIAorc3RhdGljIHZvaWQKK19vdXRDVEVTZWFyY2hDbGF1c2UoU3RyaW5nSW5mbyBz dHIsIGNvbnN0IENURVNlYXJjaENsYXVzZSAqbm9kZSkKK3sKKwlXUklURV9OT0RFX1RZUEUo IkNURVNFQVJDSENMQVVTRSIpOworCisJV1JJVEVfTk9ERV9GSUVMRChzZWFyY2hfY29sX2xp c3QpOworCVdSSVRFX0JPT0xfRklFTEQoc2VhcmNoX2JyZWFkdGhfZmlyc3QpOworCVdSSVRF X1NUUklOR19GSUVMRChzZWFyY2hfc2VxX2NvbHVtbik7CisJV1JJVEVfTE9DQVRJT05fRklF TEQobG9jYXRpb24pOworfQorCitzdGF0aWMgdm9pZAorX291dENURUN5Y2xlQ2xhdXNlKFN0 cmluZ0luZm8gc3RyLCBjb25zdCBDVEVDeWNsZUNsYXVzZSAqbm9kZSkKK3sKKwlXUklURV9O T0RFX1RZUEUoIkNURUNZQ0xFQ0xBVVNFIik7CisKKwlXUklURV9OT0RFX0ZJRUxEKGN5Y2xl X2NvbF9saXN0KTsKKwlXUklURV9TVFJJTkdfRklFTEQoY3ljbGVfbWFya19jb2x1bW4pOwor CVdSSVRFX05PREVfRklFTEQoY3ljbGVfbWFya192YWx1ZSk7CisJV1JJVEVfTk9ERV9GSUVM RChjeWNsZV9tYXJrX2RlZmF1bHQpOworCVdSSVRFX09JRF9GSUVMRChjeWNsZV9tYXJrX3R5 cGUpOworCVdSSVRFX0lOVF9GSUVMRChjeWNsZV9tYXJrX3R5cG1vZCk7CisJV1JJVEVfT0lE X0ZJRUxEKGN5Y2xlX21hcmtfY29sbGF0aW9uKTsKKwlXUklURV9TVFJJTkdfRklFTEQoY3lj bGVfcGF0aF9jb2x1bW4pOworCVdSSVRFX0xPQ0FUSU9OX0ZJRUxEKGxvY2F0aW9uKTsKK30K Kwogc3RhdGljIHZvaWQKIF9vdXRDb21tb25UYWJsZUV4cHIoU3RyaW5nSW5mbyBzdHIsIGNv bnN0IENvbW1vblRhYmxlRXhwciAqbm9kZSkKIHsKQEAgLTMwNjMsNiArMzA5MCw4IEBAIF9v dXRDb21tb25UYWJsZUV4cHIoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IENvbW1vblRhYmxlRXhw ciAqbm9kZSkKIAlXUklURV9OT0RFX0ZJRUxEKGN0ZWNvbHR5cGVzKTsKIAlXUklURV9OT0RF X0ZJRUxEKGN0ZWNvbHR5cG1vZHMpOwogCVdSSVRFX05PREVfRklFTEQoY3RlY29sY29sbGF0 aW9ucyk7CisJV1JJVEVfTk9ERV9GSUVMRChzZWFyY2hfY2xhdXNlKTsKKwlXUklURV9OT0RF X0ZJRUxEKGN5Y2xlX2NsYXVzZSk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC00MjMzLDYgKzQy NjIsMTIgQEAgb3V0Tm9kZShTdHJpbmdJbmZvIHN0ciwgY29uc3Qgdm9pZCAqb2JqKQogCQkJ Y2FzZSBUX1dpdGhDbGF1c2U6CiAJCQkJX291dFdpdGhDbGF1c2Uoc3RyLCBvYmopOwogCQkJ CWJyZWFrOworCQkJY2FzZSBUX0NURVNlYXJjaENsYXVzZToKKwkJCQlfb3V0Q1RFU2VhcmNo Q2xhdXNlKHN0ciwgb2JqKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgVF9DVEVDeWNsZUNsYXVz ZToKKwkJCQlfb3V0Q1RFQ3ljbGVDbGF1c2Uoc3RyLCBvYmopOworCQkJCWJyZWFrOwogCQkJ Y2FzZSBUX0NvbW1vblRhYmxlRXhwcjoKIAkJCQlfb3V0Q29tbW9uVGFibGVFeHByKHN0ciwg b2JqKTsKIAkJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRm dW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKaW5kZXggNDIwNTBhYjcx OS4uNDNmODhkNmM5NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNz LmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKQEAgLTQwOSw2ICs0MDks NDMgQEAgX3JlYWRSb3dNYXJrQ2xhdXNlKHZvaWQpCiAJUkVBRF9ET05FKCk7CiB9CiAKKy8q CisgKiBfcmVhZENURVNlYXJjaENsYXVzZQorICovCitzdGF0aWMgQ1RFU2VhcmNoQ2xhdXNl ICoKK19yZWFkQ1RFU2VhcmNoQ2xhdXNlKHZvaWQpCit7CisJUkVBRF9MT0NBTFMoQ1RFU2Vh cmNoQ2xhdXNlKTsKKworCVJFQURfTk9ERV9GSUVMRChzZWFyY2hfY29sX2xpc3QpOworCVJF QURfQk9PTF9GSUVMRChzZWFyY2hfYnJlYWR0aF9maXJzdCk7CisJUkVBRF9TVFJJTkdfRklF TEQoc2VhcmNoX3NlcV9jb2x1bW4pOworCVJFQURfTE9DQVRJT05fRklFTEQobG9jYXRpb24p OworCisJUkVBRF9ET05FKCk7Cit9CisKKy8qCisgKiBfcmVhZENURUN5Y2xlQ2xhdXNlCisg Ki8KK3N0YXRpYyBDVEVDeWNsZUNsYXVzZSAqCitfcmVhZENURUN5Y2xlQ2xhdXNlKHZvaWQp Cit7CisJUkVBRF9MT0NBTFMoQ1RFQ3ljbGVDbGF1c2UpOworCisJUkVBRF9OT0RFX0ZJRUxE KGN5Y2xlX2NvbF9saXN0KTsKKwlSRUFEX1NUUklOR19GSUVMRChjeWNsZV9tYXJrX2NvbHVt bik7CisJUkVBRF9OT0RFX0ZJRUxEKGN5Y2xlX21hcmtfdmFsdWUpOworCVJFQURfTk9ERV9G SUVMRChjeWNsZV9tYXJrX2RlZmF1bHQpOworCVJFQURfT0lEX0ZJRUxEKGN5Y2xlX21hcmtf dHlwZSk7CisJUkVBRF9JTlRfRklFTEQoY3ljbGVfbWFya190eXBtb2QpOworCVJFQURfT0lE X0ZJRUxEKGN5Y2xlX21hcmtfY29sbGF0aW9uKTsKKwlSRUFEX1NUUklOR19GSUVMRChjeWNs ZV9wYXRoX2NvbHVtbik7CisJUkVBRF9MT0NBVElPTl9GSUVMRChsb2NhdGlvbik7CisKKwlS RUFEX0RPTkUoKTsKK30KKwogLyoKICAqIF9yZWFkQ29tbW9uVGFibGVFeHByCiAgKi8KQEAg LTQyOCw2ICs0NjUsOCBAQCBfcmVhZENvbW1vblRhYmxlRXhwcih2b2lkKQogCVJFQURfTk9E RV9GSUVMRChjdGVjb2x0eXBlcyk7CiAJUkVBRF9OT0RFX0ZJRUxEKGN0ZWNvbHR5cG1vZHMp OwogCVJFQURfTk9ERV9GSUVMRChjdGVjb2xjb2xsYXRpb25zKTsKKwlSRUFEX05PREVfRklF TEQoc2VhcmNoX2NsYXVzZSk7CisJUkVBRF9OT0RFX0ZJRUxEKGN5Y2xlX2NsYXVzZSk7CiAK IAlSRUFEX0RPTkUoKTsKIH0KQEAgLTI2NTIsNiArMjY5MSwxMCBAQCBwYXJzZU5vZGVTdHJp bmcodm9pZCkKIAkJcmV0dXJuX3ZhbHVlID0gX3JlYWRXaW5kb3dDbGF1c2UoKTsKIAllbHNl IGlmIChNQVRDSCgiUk9XTUFSS0NMQVVTRSIsIDEzKSkKIAkJcmV0dXJuX3ZhbHVlID0gX3Jl YWRSb3dNYXJrQ2xhdXNlKCk7CisJZWxzZSBpZiAoTUFUQ0goIkNURVNFQVJDSENMQVVTRSIs IDE1KSkKKwkJcmV0dXJuX3ZhbHVlID0gX3JlYWRDVEVTZWFyY2hDbGF1c2UoKTsKKwllbHNl IGlmIChNQVRDSCgiQ1RFQ1lDTEVDTEFVU0UiLCAxNCkpCisJCXJldHVybl92YWx1ZSA9IF9y ZWFkQ1RFQ3ljbGVDbGF1c2UoKTsKIAllbHNlIGlmIChNQVRDSCgiQ09NTU9OVEFCTEVFWFBS IiwgMTUpKQogCQlyZXR1cm5fdmFsdWUgPSBfcmVhZENvbW1vblRhYmxlRXhwcigpOwogCWVs c2UgaWYgKE1BVENIKCJTRVRPUEVSQVRJT05TVE1UIiwgMTYpKQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXpl LmMKaW5kZXggYzE1OWZiMjk1Ny4uOTYwMjZhYjY2OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcGFyc2VyL2FuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5j CkBAIC0xODExLDYgKzE4MTEsMzMgQEAgdHJhbnNmb3JtU2V0T3BlcmF0aW9uU3RtdChQYXJz ZVN0YXRlICpwc3RhdGUsIFNlbGVjdFN0bXQgKnN0bXQpCiAJcmV0dXJuIHFyeTsKIH0KIAor LyoKKyAqIE1ha2UgYSBTb3J0R3JvdXBDbGF1c2Ugbm9kZSBmb3IgYSBTZXRPcGVyYXRpb25T dG10J3MgZ3JvdXBDbGF1c2VzCisgKi8KK1NvcnRHcm91cENsYXVzZSAqCittYWtlU29ydEdy b3VwQ2xhdXNlRm9yU2V0T3AoT2lkIHJlc2NvbHR5cGUpCit7CisJU29ydEdyb3VwQ2xhdXNl ICpncnBjbCA9IG1ha2VOb2RlKFNvcnRHcm91cENsYXVzZSk7CisJT2lkCQkJc29ydG9wOwor CU9pZAkJCWVxb3A7CisJYm9vbAkJaGFzaGFibGU7CisKKwkvKiBkZXRlcm1pbmUgdGhlIGVx b3AgYW5kIG9wdGlvbmFsIHNvcnRvcCAqLworCWdldF9zb3J0X2dyb3VwX29wZXJhdG9ycyhy ZXNjb2x0eXBlLAorCQkJCQkJCSBmYWxzZSwgdHJ1ZSwgZmFsc2UsCisJCQkJCQkJICZzb3J0 b3AsICZlcW9wLCBOVUxMLAorCQkJCQkJCSAmaGFzaGFibGUpOworCisJLyogd2UgZG9uJ3Qg aGF2ZSBhIHRsaXN0IHlldCwgc28gY2FuJ3QgYXNzaWduIHNvcnRncm91cHJlZnMgKi8KKwln cnBjbC0+dGxlU29ydEdyb3VwUmVmID0gMDsKKwlncnBjbC0+ZXFvcCA9IGVxb3A7CisJZ3Jw Y2wtPnNvcnRvcCA9IHNvcnRvcDsKKwlncnBjbC0+bnVsbHNfZmlyc3QgPSBmYWxzZTsgLyog T0sgd2l0aCBvciB3aXRob3V0IHNvcnRvcCAqLworCWdycGNsLT5oYXNoYWJsZSA9IGhhc2hh YmxlOworCisJcmV0dXJuIGdycGNsOworfQorCiAvKgogICogdHJhbnNmb3JtU2V0T3BlcmF0 aW9uVHJlZQogICoJCVJlY3Vyc2l2ZWx5IHRyYW5zZm9ybSBsZWF2ZXMgYW5kIGludGVybmFs IG5vZGVzIG9mIGEgc2V0LW9wIHRyZWUKQEAgLTIxMTQsMzEgKzIxNDEsMTUgQEAgdHJhbnNm b3JtU2V0T3BlcmF0aW9uVHJlZShQYXJzZVN0YXRlICpwc3RhdGUsIFNlbGVjdFN0bXQgKnN0 bXQsCiAJCQkgKi8KIAkJCWlmIChvcC0+b3AgIT0gU0VUT1BfVU5JT04gfHwgIW9wLT5hbGwp CiAJCQl7Ci0JCQkJU29ydEdyb3VwQ2xhdXNlICpncnBjbCA9IG1ha2VOb2RlKFNvcnRHcm91 cENsYXVzZSk7Ci0JCQkJT2lkCQkJc29ydG9wOwotCQkJCU9pZAkJCWVxb3A7Ci0JCQkJYm9v bAkJaGFzaGFibGU7CiAJCQkJUGFyc2VDYWxsYmFja1N0YXRlIHBjYnN0YXRlOwogCiAJCQkJ c2V0dXBfcGFyc2VyX2VycnBvc2l0aW9uX2NhbGxiYWNrKCZwY2JzdGF0ZSwgcHN0YXRlLAog CQkJCQkJCQkJCQkJICBiZXN0bG9jYXRpb24pOwogCi0JCQkJLyogZGV0ZXJtaW5lIHRoZSBl cW9wIGFuZCBvcHRpb25hbCBzb3J0b3AgKi8KLQkJCQlnZXRfc29ydF9ncm91cF9vcGVyYXRv cnMocmVzY29sdHlwZSwKLQkJCQkJCQkJCQkgZmFsc2UsIHRydWUsIGZhbHNlLAotCQkJCQkJ CQkJCSAmc29ydG9wLCAmZXFvcCwgTlVMTCwKLQkJCQkJCQkJCQkgJmhhc2hhYmxlKTsKKwkJ CQlvcC0+Z3JvdXBDbGF1c2VzID0gbGFwcGVuZChvcC0+Z3JvdXBDbGF1c2VzLAorCQkJCQkJ CQkJCSAgIG1ha2VTb3J0R3JvdXBDbGF1c2VGb3JTZXRPcChyZXNjb2x0eXBlKSk7CiAKIAkJ CQljYW5jZWxfcGFyc2VyX2VycnBvc2l0aW9uX2NhbGxiYWNrKCZwY2JzdGF0ZSk7Ci0KLQkJ CQkvKiB3ZSBkb24ndCBoYXZlIGEgdGxpc3QgeWV0LCBzbyBjYW4ndCBhc3NpZ24gc29ydGdy b3VwcmVmcyAqLwotCQkJCWdycGNsLT50bGVTb3J0R3JvdXBSZWYgPSAwOwotCQkJCWdycGNs LT5lcW9wID0gZXFvcDsKLQkJCQlncnBjbC0+c29ydG9wID0gc29ydG9wOwotCQkJCWdycGNs LT5udWxsc19maXJzdCA9IGZhbHNlOyAvKiBPSyB3aXRoIG9yIHdpdGhvdXQgc29ydG9wICov Ci0JCQkJZ3JwY2wtPmhhc2hhYmxlID0gaGFzaGFibGU7Ci0KLQkJCQlvcC0+Z3JvdXBDbGF1 c2VzID0gbGFwcGVuZChvcC0+Z3JvdXBDbGF1c2VzLCBncnBjbCk7CiAJCQl9CiAKIAkJCS8q CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQv cGFyc2VyL2dyYW0ueQppbmRleCA0ODBkMTY4MzQ2Li4xNjRkYWQwYjg5IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9n cmFtLnkKQEAgLTQ5NSw2ICs0OTUsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZp ZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwog JXR5cGUgPGxpc3Q+CXJvdyBleHBsaWNpdF9yb3cgaW1wbGljaXRfcm93IHR5cGVfbGlzdCBh cnJheV9leHByX2xpc3QKICV0eXBlIDxub2RlPgljYXNlX2V4cHIgY2FzZV9hcmcgd2hlbl9j bGF1c2UgY2FzZV9kZWZhdWx0CiAldHlwZSA8bGlzdD4Jd2hlbl9jbGF1c2VfbGlzdAorJXR5 cGUgPG5vZGU+CW9wdF9zZWFyY2hfY2xhdXNlIG9wdF9jeWNsZV9jbGF1c2UKICV0eXBlIDxp dmFsPglzdWJfdHlwZSBvcHRfbWF0ZXJpYWxpemVkCiAldHlwZSA8dmFsdWU+CU51bWVyaWNP bmx5CiAldHlwZSA8bGlzdD4JTnVtZXJpY09ubHlfbGlzdApAQCAtNjMxLDcgKzYzMiw3IEBA IHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBM aXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJQVNTRVJUSU9OIEFTU0lHTk1FTlQgQVNZ TU1FVFJJQyBBVCBBVFRBQ0ggQVRUUklCVVRFIEFVVEhPUklaQVRJT04KIAogCUJBQ0tXQVJE IEJFRk9SRSBCRUdJTl9QIEJFVFdFRU4gQklHSU5UIEJJTkFSWSBCSVQKLQlCT09MRUFOX1Ag Qk9USCBCWQorCUJPT0xFQU5fUCBCT1RIIEJSRUFEVEggQlkKIAogCUNBQ0hFIENBTEwgQ0FM TEVEIENBU0NBREUgQ0FTQ0FERUQgQ0FTRSBDQVNUIENBVEFMT0dfUCBDSEFJTiBDSEFSX1AK IAlDSEFSQUNURVIgQ0hBUkFDVEVSSVNUSUNTIENIRUNLIENIRUNLUE9JTlQgQ0xBU1MgQ0xP U0UKQEAgLTY0Myw3ICs2NDQsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdT ZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCUNV UlJFTlRfVElNRSBDVVJSRU5UX1RJTUVTVEFNUCBDVVJSRU5UX1VTRVIgQ1VSU09SIENZQ0xF CiAKIAlEQVRBX1AgREFUQUJBU0UgREFZX1AgREVBTExPQ0FURSBERUMgREVDSU1BTF9QIERF Q0xBUkUgREVGQVVMVCBERUZBVUxUUwotCURFRkVSUkFCTEUgREVGRVJSRUQgREVGSU5FUiBE RUxFVEVfUCBERUxJTUlURVIgREVMSU1JVEVSUyBERVBFTkRTIERFU0MKKwlERUZFUlJBQkxF IERFRkVSUkVEIERFRklORVIgREVMRVRFX1AgREVMSU1JVEVSIERFTElNSVRFUlMgREVQRU5E UyBERVBUSCBERVNDCiAJREVUQUNIIERJQ1RJT05BUlkgRElTQUJMRV9QIERJU0NBUkQgRElT VElOQ1QgRE8gRE9DVU1FTlRfUCBET01BSU5fUAogCURPVUJMRV9QIERST1AKIApAQCAtMTEz NDAsOCArMTEzNDEsNiBAQCBzaW1wbGVfc2VsZWN0OgogICogV0lUSCBbIFJFQ1VSU0lWRSBd IDxxdWVyeSBuYW1lPiBbICg8Y29sdW1uPiwuLi4pIF0KICAqCQlBUyAocXVlcnkpIFsgU0VB UkNIIG9yIENZQ0xFIGNsYXVzZSBdCiAgKgotICogV2UgZG9uJ3QgY3VycmVudGx5IHN1cHBv cnQgdGhlIFNFQVJDSCBvciBDWUNMRSBjbGF1c2UuCi0gKgogICogUmVjb2duaXppbmcgV0lU SF9MQSBoZXJlIGFsbG93cyBhIENURSB0byBiZSBuYW1lZCBUSU1FIG9yIE9SRElOQUxJVFku CiAgKi8KIHdpdGhfY2xhdXNlOgpAQCAtMTEzNzMsMTMgKzExMzcyLDE1IEBAIGN0ZV9saXN0 OgogCQl8IGN0ZV9saXN0ICcsJyBjb21tb25fdGFibGVfZXhwcgkJeyAkJCA9IGxhcHBlbmQo JDEsICQzKTsgfQogCQk7CiAKLWNvbW1vbl90YWJsZV9leHByOiAgbmFtZSBvcHRfbmFtZV9s aXN0IEFTIG9wdF9tYXRlcmlhbGl6ZWQgJygnIFByZXBhcmFibGVTdG10ICcpJworY29tbW9u X3RhYmxlX2V4cHI6ICBuYW1lIG9wdF9uYW1lX2xpc3QgQVMgb3B0X21hdGVyaWFsaXplZCAn KCcgUHJlcGFyYWJsZVN0bXQgJyknIG9wdF9zZWFyY2hfY2xhdXNlIG9wdF9jeWNsZV9jbGF1 c2UKIAkJCXsKIAkJCQlDb21tb25UYWJsZUV4cHIgKm4gPSBtYWtlTm9kZShDb21tb25UYWJs ZUV4cHIpOwogCQkJCW4tPmN0ZW5hbWUgPSAkMTsKIAkJCQluLT5hbGlhc2NvbG5hbWVzID0g JDI7CiAJCQkJbi0+Y3RlbWF0ZXJpYWxpemVkID0gJDQ7CiAJCQkJbi0+Y3RlcXVlcnkgPSAk NjsKKwkJCQluLT5zZWFyY2hfY2xhdXNlID0gY2FzdE5vZGUoQ1RFU2VhcmNoQ2xhdXNlLCAk OCk7CisJCQkJbi0+Y3ljbGVfY2xhdXNlID0gY2FzdE5vZGUoQ1RFQ3ljbGVDbGF1c2UsICQ5 KTsKIAkJCQluLT5sb2NhdGlvbiA9IEAxOwogCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCX0K QEAgLTExMzkxLDYgKzExMzkyLDQ5IEBAIG9wdF9tYXRlcmlhbGl6ZWQ6CiAJCXwgLypFTVBU WSovCQkJCQkJCQl7ICQkID0gQ1RFTWF0ZXJpYWxpemVEZWZhdWx0OyB9CiAJCTsKIAorb3B0 X3NlYXJjaF9jbGF1c2U6CisJCVNFQVJDSCBERVBUSCBGSVJTVF9QIEJZIGNvbHVtbkxpc3Qg U0VUIENvbElkCisJCQl7CisJCQkJQ1RFU2VhcmNoQ2xhdXNlICpuID0gbWFrZU5vZGUoQ1RF U2VhcmNoQ2xhdXNlKTsKKwkJCQluLT5zZWFyY2hfY29sX2xpc3QgPSAkNTsKKwkJCQluLT5z ZWFyY2hfYnJlYWR0aF9maXJzdCA9IGZhbHNlOworCQkJCW4tPnNlYXJjaF9zZXFfY29sdW1u ID0gJDc7CisJCQkJbi0+bG9jYXRpb24gPSBAMTsKKwkJCQkkJCA9IChOb2RlICopIG47CisJ CQl9CisJCXwgU0VBUkNIIEJSRUFEVEggRklSU1RfUCBCWSBjb2x1bW5MaXN0IFNFVCBDb2xJ ZAorCQkJeworCQkJCUNURVNlYXJjaENsYXVzZSAqbiA9IG1ha2VOb2RlKENURVNlYXJjaENs YXVzZSk7CisJCQkJbi0+c2VhcmNoX2NvbF9saXN0ID0gJDU7CisJCQkJbi0+c2VhcmNoX2Jy ZWFkdGhfZmlyc3QgPSB0cnVlOworCQkJCW4tPnNlYXJjaF9zZXFfY29sdW1uID0gJDc7CisJ CQkJbi0+bG9jYXRpb24gPSBAMTsKKwkJCQkkJCA9IChOb2RlICopIG47CisJCQl9CisJCXwg LypFTVBUWSovCisJCQl7CisJCQkJJCQgPSBOVUxMOworCQkJfQorCQk7CisKK29wdF9jeWNs ZV9jbGF1c2U6CisJCUNZQ0xFIGNvbHVtbkxpc3QgU0VUIENvbElkIFRPIEFleHByQ29uc3Qg REVGQVVMVCBBZXhwckNvbnN0IFVTSU5HIENvbElkCisJCQl7CisJCQkJQ1RFQ3ljbGVDbGF1 c2UgKm4gPSBtYWtlTm9kZShDVEVDeWNsZUNsYXVzZSk7CisJCQkJbi0+Y3ljbGVfY29sX2xp c3QgPSAkMjsKKwkJCQluLT5jeWNsZV9tYXJrX2NvbHVtbiA9ICQ0OworCQkJCW4tPmN5Y2xl X21hcmtfdmFsdWUgPSAkNjsKKwkJCQluLT5jeWNsZV9tYXJrX2RlZmF1bHQgPSAkODsKKwkJ CQluLT5jeWNsZV9wYXRoX2NvbHVtbiA9ICQxMDsKKwkJCQluLT5sb2NhdGlvbiA9IEAxOwor CQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCX0KKwkJfCAvKkVNUFRZKi8KKwkJCXsKKwkJCQkk JCA9IE5VTEw7CisJCQl9CisJCTsKKwogb3B0X3dpdGhfY2xhdXNlOgogCQl3aXRoX2NsYXVz ZQkJCQkJCQkJeyAkJCA9ICQxOyB9CiAJCXwgLypFTVBUWSovCQkJCQkJCQl7ICQkID0gTlVM TDsgfQpAQCAtMTUwNzksNiArMTUxMjMsNyBAQCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8 IEJBQ0tXQVJECiAJCQl8IEJFRk9SRQogCQkJfCBCRUdJTl9QCisJCQl8IEJSRUFEVEgKIAkJ CXwgQlkKIAkJCXwgQ0FDSEUKIAkJCXwgQ0FMTApAQCAtMTUxMjMsNiArMTUxNjgsNyBAQCB1 bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IERFTElNSVRFUgogCQkJfCBERUxJTUlURVJTCiAJ CQl8IERFUEVORFMKKwkJCXwgREVQVEgKIAkJCXwgREVUQUNICiAJCQl8IERJQ1RJT05BUlkK IAkJCXwgRElTQUJMRV9QCkBAIC0xNTU5MCw2ICsxNTYzNiw3IEBAIGJhcmVfbGFiZWxfa2V5 d29yZDoKIAkJCXwgQklUCiAJCQl8IEJPT0xFQU5fUAogCQkJfCBCT1RICisJCQl8IEJSRUFE VEgKIAkJCXwgQlkKIAkJCXwgQ0FDSEUKIAkJCXwgQ0FMTApAQCAtMTU2NTQsNiArMTU3MDEs NyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IERFTElNSVRFUgogCQkJfCBERUxJTUlU RVJTCiAJCQl8IERFUEVORFMKKwkJCXwgREVQVEgKIAkJCXwgREVTQwogCQkJfCBERVRBQ0gK IAkJCXwgRElDVElPTkFSWQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X2FnZy5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jCmluZGV4IDc4M2YzZmU4 ZjIuLmRkM2Q5N2Q4NWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9h Z2cuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMKQEAgLTU0NSw2ICs1 NDUsMTAgQEAgY2hlY2tfYWdnbGV2ZWxzX2FuZF9jb25zdHJhaW50cyhQYXJzZVN0YXRlICpw c3RhdGUsIE5vZGUgKmV4cHIpCiAKIAkJCWJyZWFrOwogCisJCWNhc2UgRVhQUl9LSU5EX0NZ Q0xFX01BUks6CisJCQllcnJraW5kID0gdHJ1ZTsKKwkJCWJyZWFrOworCiAJCQkvKgogCQkJ ICogVGhlcmUgaXMgaW50ZW50aW9uYWxseSBubyBkZWZhdWx0OiBjYXNlIGhlcmUsIHNvIHRo YXQgdGhlCiAJCQkgKiBjb21waWxlciB3aWxsIHdhcm4gaWYgd2UgYWRkIGEgbmV3IFBhcnNl RXhwcktpbmQgd2l0aG91dApAQCAtOTMzLDYgKzkzNyw5IEBAIHRyYW5zZm9ybVdpbmRvd0Z1 bmNDYWxsKFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2luZG93RnVuYyAqd2Z1bmMsCiAJCWNhc2Ug RVhQUl9LSU5EX0dFTkVSQVRFRF9DT0xVTU46CiAJCQllcnIgPSBfKCJ3aW5kb3cgZnVuY3Rp b25zIGFyZSBub3QgYWxsb3dlZCBpbiBjb2x1bW4gZ2VuZXJhdGlvbiBleHByZXNzaW9ucyIp OwogCQkJYnJlYWs7CisJCWNhc2UgRVhQUl9LSU5EX0NZQ0xFX01BUks6CisJCQllcnJraW5k ID0gdHJ1ZTsKKwkJCWJyZWFrOwogCiAJCQkvKgogCQkJICogVGhlcmUgaXMgaW50ZW50aW9u YWxseSBubyBkZWZhdWx0OiBjYXNlIGhlcmUsIHNvIHRoYXQgdGhlCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY3RlLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfY3RlLmMKaW5kZXggMWZjYTc0ODVjYS4uODdkZWRiNGMyOCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX2N0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9jdGUuYwpAQCAtMTgsNyArMTgsMTAgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5 cGUuaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKICNpbmNsdWRlICJwYXJzZXIv YW5hbHl6ZS5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV9jb2VyY2UuaCIKKyNpbmNsdWRl ICJwYXJzZXIvcGFyc2VfY29sbGF0ZS5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9jdGUu aCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2VfZXhwci5oIgogI2luY2x1ZGUgInV0aWxzL2J1 aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAKQEAgLTMzNCw2ICsz MzcsMTIwIEBAIGFuYWx5emVDVEUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb21tb25UYWJsZUV4 cHIgKmN0ZSkKIAkJaWYgKGxjdHlwICE9IE5VTEwgfHwgbGN0eXBtb2QgIT0gTlVMTCB8fCBs Y2NvbGwgIT0gTlVMTCkJLyogc2hvdWxkbid0IGhhcHBlbiAqLwogCQkJZWxvZyhFUlJPUiwg Indyb25nIG51bWJlciBvZiBvdXRwdXQgY29sdW1ucyBpbiBXSVRIIik7CiAJfQorCisJaWYg KGN0ZS0+c2VhcmNoX2NsYXVzZSB8fCBjdGUtPmN5Y2xlX2NsYXVzZSkKKwl7CisJCWlmICgh Y3RlLT5jdGVyZWN1cnNpdmUpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShF UlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCSBlcnJtc2coIldJVEggcXVlcnkgaXMgbm90 IHJlY3Vyc2l2ZSIpLAorCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgY3RlLT5s b2NhdGlvbikpKTsKKworCQkvKgorCQkgKiBTUUwgcmVxdWlyZXMgYSBXSVRIIGxpc3QgZWxl bWVudCAoQ1RFKSB0byBiZSAiZXhwYW5kYWJsZSIgaW4gb3JkZXIKKwkJICogdG8gYWxsb3cg YSBzZWFyY2ggb3IgY3ljbGUgY2xhdXNlLiAgVGhhdCBpcyBhIHN0cm9uZ2VyIHJlcXVpcmVt ZW50CisJCSAqIHRoYW4ganVzdCBiZWluZyByZWN1cnNpdmUuICBBcyBvZiB0aGlzIHdyaXRp bmcsIFBvc3RncmVTUUwgb25seQorCQkgKiBhbGxvd3MgZXhwYW5kYWJsZSBDVEVzIGFzIHJl Y3Vyc2l2ZSBDVEVzIGFueXdheS4gIEluIHRoZSBmdXR1cmUsCisJCSAqIHRoZXJlIG1pZ2h0 IGJlIGZ1cnRoZXIgY2hlY2tzIHJlcXVpcmVkIGhlcmUuCisJCSAqLworCX0KKworCWlmIChj dGUtPnNlYXJjaF9jbGF1c2UpCisJeworCQlMaXN0Q2VsbCAgICpsYzsKKwkJTGlzdAkgICAq c2VlbiA9IE5JTDsKKworCQlmb3JlYWNoKGxjLCBjdGUtPnNlYXJjaF9jbGF1c2UtPnNlYXJj aF9jb2xfbGlzdCkKKwkJeworCQkJVmFsdWUJICAgKmNvbG5hbWUgPSBsZmlyc3QobGMpOwor CisJCQlpZiAoIWxpc3RfbWVtYmVyKGN0ZS0+Y3RlY29sbmFtZXMsIGNvbG5hbWUpKQorCQkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiks CisJCQkJCQkgZXJybXNnKCJzZWFyY2ggY29sdW1uIFwiJXNcIiBub3QgaW4gV0lUSCBxdWVy eSBjb2x1bW4gbGlzdCIsCisJCQkJCQkJCXN0clZhbChjb2xuYW1lKSksCisJCQkJCQkgcGFy c2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgY3RlLT5zZWFyY2hfY2xhdXNlLT5sb2NhdGlvbikp KTsKKworCQkJaWYgKGxpc3RfbWVtYmVyKHNlZW4sIGNvbG5hbWUpKQorCQkJCWVyZXBvcnQo RVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9DT0xVTU4pLAorCQkJ CQkJIGVycm1zZygic2VhcmNoIGNvbHVtbiBcIiVzXCIgc3BlY2lmaWVkIG1vcmUgdGhhbiBv bmNlIiwKKwkJCQkJCQkJc3RyVmFsKGNvbG5hbWUpKSwKKwkJCQkJCSBwYXJzZXJfZXJycG9z aXRpb24ocHN0YXRlLCBjdGUtPnNlYXJjaF9jbGF1c2UtPmxvY2F0aW9uKSkpOworCQkJc2Vl biA9IGxhcHBlbmQoc2VlbiwgY29sbmFtZSk7CisJCX0KKworCQlpZiAobGlzdF9tZW1iZXIo Y3RlLT5jdGVjb2xuYW1lcywgbWFrZVN0cmluZyhjdGUtPnNlYXJjaF9jbGF1c2UtPnNlYXJj aF9zZXFfY29sdW1uKSkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNP REVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJZXJybXNnKCJzZWFyY2ggc2VxdWVuY2UgY29sdW1u IG5hbWUgXCIlc1wiIGFscmVhZHkgdXNlZCBpbiBXSVRIIHF1ZXJ5IGNvbHVtbiBsaXN0IiwK KwkJCQkJCSAgIGN0ZS0+c2VhcmNoX2NsYXVzZS0+c2VhcmNoX3NlcV9jb2x1bW4pLAorCQkJ CQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBjdGUtPnNlYXJjaF9jbGF1c2UtPmxvY2F0 aW9uKSk7CisJfQorCisJaWYgKGN0ZS0+Y3ljbGVfY2xhdXNlKQorCXsKKwkJTGlzdENlbGwg ICAqbGM7CisJCUxpc3QJICAgKnNlZW4gPSBOSUw7CisJCWludAkJCXR5cG1vZDE7CisJCWlu dAkJCXR5cG1vZDI7CisKKwkJZm9yZWFjaChsYywgY3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xl X2NvbF9saXN0KQorCQl7CisJCQlWYWx1ZQkgICAqY29sbmFtZSA9IGxmaXJzdChsYyk7CisK KwkJCWlmICghbGlzdF9tZW1iZXIoY3RlLT5jdGVjb2xuYW1lcywgY29sbmFtZSkpCisJCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwK KwkJCQkJCSBlcnJtc2coImN5Y2xlIGNvbHVtbiBcIiVzXCIgbm90IGluIFdJVEggcXVlcnkg Y29sdW1uIGxpc3QiLAorCQkJCQkJCQlzdHJWYWwoY29sbmFtZSkpLAorCQkJCQkJIHBhcnNl cl9lcnJwb3NpdGlvbihwc3RhdGUsIGN0ZS0+Y3ljbGVfY2xhdXNlLT5sb2NhdGlvbikpKTsK KworCQkJaWYgKGxpc3RfbWVtYmVyKHNlZW4sIGNvbG5hbWUpKQorCQkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9DT0xVTU4pLAorCQkJCQkJ IGVycm1zZygiY3ljbGUgY29sdW1uIFwiJXNcIiBzcGVjaWZpZWQgbW9yZSB0aGFuIG9uY2Ui LAorCQkJCQkJCQlzdHJWYWwoY29sbmFtZSkpLAorCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlv bihwc3RhdGUsIGN0ZS0+Y3ljbGVfY2xhdXNlLT5sb2NhdGlvbikpKTsKKwkJCXNlZW4gPSBs YXBwZW5kKHNlZW4sIGNvbG5hbWUpOworCQl9CisKKwkJaWYgKGxpc3RfbWVtYmVyKGN0ZS0+ Y3RlY29sbmFtZXMsIG1ha2VTdHJpbmcoY3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtf Y29sdW1uKSkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfU1lO VEFYX0VSUk9SKSwKKwkJCQkJZXJybXNnKCJjeWNsZSBjb2x1bW4gbmFtZSBcIiVzXCIgYWxy ZWFkeSB1c2VkIGluIFdJVEggcXVlcnkgY29sdW1uIGxpc3QiLAorCQkJCQkJICAgY3RlLT5j eWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtfY29sdW1uKSwKKwkJCQkJcGFyc2VyX2VycnBvc2l0 aW9uKHBzdGF0ZSwgY3RlLT5jeWNsZV9jbGF1c2UtPmxvY2F0aW9uKSk7CisKKwkJY3RlLT5j eWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtfdmFsdWUgPSB0cmFuc2Zvcm1FeHByKHBzdGF0ZSwg Y3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtfdmFsdWUsCisJCQkJCQkJCQkJCQkJCQlF WFBSX0tJTkRfQ1lDTEVfTUFSSyk7CisJCWN0ZS0+Y3ljbGVfY2xhdXNlLT5jeWNsZV9tYXJr X2RlZmF1bHQgPSB0cmFuc2Zvcm1FeHByKHBzdGF0ZSwgY3RlLT5jeWNsZV9jbGF1c2UtPmN5 Y2xlX21hcmtfZGVmYXVsdCwKKwkJCQkJCQkJCQkJCQkJCSAgRVhQUl9LSU5EX0NZQ0xFX01B UkspOworCQljdGUtPmN5Y2xlX2NsYXVzZS0+Y3ljbGVfbWFya190eXBlID0gc2VsZWN0X2Nv bW1vbl90eXBlKHBzdGF0ZSwKKwkJCQkJCQkJCQkJCQkJCQlsaXN0X21ha2UyKGN0ZS0+Y3lj bGVfY2xhdXNlLT5jeWNsZV9tYXJrX3ZhbHVlLAorCQkJCQkJCQkJCQkJCQkJCQkJICAgY3Rl LT5jeWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtfZGVmYXVsdCksCisJCQkJCQkJCQkJCQkJCQkJ IkNZQ0xFIiwgTlVMTCk7CisJCWN0ZS0+Y3ljbGVfY2xhdXNlLT5jeWNsZV9tYXJrX3ZhbHVl ID0gY29lcmNlX3RvX2NvbW1vbl90eXBlKHBzdGF0ZSwKKwkJCQkJCQkJCQkJCQkJCQkJY3Rl LT5jeWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtfdmFsdWUsCisJCQkJCQkJCQkJCQkJCQkJCWN0 ZS0+Y3ljbGVfY2xhdXNlLT5jeWNsZV9tYXJrX3R5cGUsCisJCQkJCQkJCQkJCQkJCQkJCSJD WUNMRS9TRVQvVE8iKTsKKwkJY3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtfZGVmYXVs dCA9IGNvZXJjZV90b19jb21tb25fdHlwZShwc3RhdGUsCisJCQkJCQkJCQkJCQkJCQkJCSAg Y3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtfZGVmYXVsdCwKKwkJCQkJCQkJCQkJCQkJ CQkJICBjdGUtPmN5Y2xlX2NsYXVzZS0+Y3ljbGVfbWFya190eXBlLAorCQkJCQkJCQkJCQkJ CQkJCQkgICJDWUNMRS9TRVQvREVGQVVMVCIpOworCisJCXR5cG1vZDEgPSBleHByVHlwbW9k KGN0ZS0+Y3ljbGVfY2xhdXNlLT5jeWNsZV9tYXJrX3ZhbHVlKTsKKwkJdHlwbW9kMiA9IGV4 cHJUeXBtb2QoY3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtfZGVmYXVsdCk7CisJCWlm ICh0eXBtb2QxID09IHR5cG1vZDIpCisJCQljdGUtPmN5Y2xlX2NsYXVzZS0+Y3ljbGVfbWFy a190eXBtb2QgPSB0eXBtb2QxOworCQllbHNlCisJCQljdGUtPmN5Y2xlX2NsYXVzZS0+Y3lj bGVfbWFya190eXBtb2QgPSAtMTsKKworCQljdGUtPmN5Y2xlX2NsYXVzZS0+Y3ljbGVfbWFy a19jb2xsYXRpb24gPSBzZWxlY3RfY29tbW9uX2NvbGxhdGlvbihwc3RhdGUsCisJCQkJCQkJ CQkJCQkJCQkJCQkgIGxpc3RfbWFrZTIoY3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtf dmFsdWUsCisJCQkJCQkJCQkJCQkJCQkJCQkJCQkgY3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xl X21hcmtfZGVmYXVsdCksCisJCQkJCQkJCQkJCQkJCQkJCQkgIHRydWUpOworCX0KIH0KIAog LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IGQyNDQyMGM1ODMuLmE5MWViY2U3 ZWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIv c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAtNTcxLDYgKzU3MSw3IEBAIHRy YW5zZm9ybUNvbHVtblJlZihQYXJzZVN0YXRlICpwc3RhdGUsIENvbHVtblJlZiAqY3JlZikK IAkJY2FzZSBFWFBSX0tJTkRfQ0FMTF9BUkdVTUVOVDoKIAkJY2FzZSBFWFBSX0tJTkRfQ09Q WV9XSEVSRToKIAkJY2FzZSBFWFBSX0tJTkRfR0VORVJBVEVEX0NPTFVNTjoKKwkJY2FzZSBF WFBSX0tJTkRfQ1lDTEVfTUFSSzoKIAkJCS8qIG9rYXkgKi8KIAkJCWJyZWFrOwogCkBAIC0x ODk3LDYgKzE4OTgsNyBAQCB0cmFuc2Zvcm1TdWJMaW5rKFBhcnNlU3RhdGUgKnBzdGF0ZSwg U3ViTGluayAqc3VibGluaykKIAkJY2FzZSBFWFBSX0tJTkRfUkVUVVJOSU5HOgogCQljYXNl IEVYUFJfS0lORF9WQUxVRVM6CiAJCWNhc2UgRVhQUl9LSU5EX1ZBTFVFU19TSU5HTEU6CisJ CWNhc2UgRVhQUl9LSU5EX0NZQ0xFX01BUks6CiAJCQkvKiBva2F5ICovCiAJCQlicmVhazsK IAkJY2FzZSBFWFBSX0tJTkRfQ0hFQ0tfQ09OU1RSQUlOVDoKQEAgLTM1NDEsNiArMzU0Myw4 IEBAIFBhcnNlRXhwcktpbmROYW1lKFBhcnNlRXhwcktpbmQgZXhwcktpbmQpCiAJCQlyZXR1 cm4gIldIRVJFIjsKIAkJY2FzZSBFWFBSX0tJTkRfR0VORVJBVEVEX0NPTFVNTjoKIAkJCXJl dHVybiAiR0VORVJBVEVEIEFTIjsKKwkJY2FzZSBFWFBSX0tJTkRfQ1lDTEVfTUFSSzoKKwkJ CXJldHVybiAiQ1lDTEUiOwogCiAJCQkvKgogCQkJICogVGhlcmUgaXMgaW50ZW50aW9uYWxs eSBubyBkZWZhdWx0OiBjYXNlIGhlcmUsIHNvIHRoYXQgdGhlCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X2Z1bmMuYwppbmRleCA5YzNiNmFkOTE2Li41N2MzNzZhNGFkIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9mdW5jLmMKQEAgLTI1MTksNiArMjUxOSw5IEBAIGNoZWNrX3NyZl9jYWxsX3BsYWNl bWVudChQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmxhc3Rfc3JmLCBpbnQgbG9jYXRpb24p CiAJCWNhc2UgRVhQUl9LSU5EX0dFTkVSQVRFRF9DT0xVTU46CiAJCQllcnIgPSBfKCJzZXQt cmV0dXJuaW5nIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gY29sdW1uIGdlbmVyYXRp b24gZXhwcmVzc2lvbnMiKTsKIAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lORF9DWUNMRV9N QVJLOgorCQkJZXJya2luZCA9IHRydWU7CisJCQlicmVhazsKIAogCQkJLyoKIAkJCSAqIFRo ZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0IHRo ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmMgYi9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYwppbmRleCBhNTZiZDg2MTgxLi5h NWVmZDM5NDk5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRp b24uYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYwpAQCAtMjIz NSw2ICsyMjM1LDggQEAgYWRkUmFuZ2VUYWJsZUVudHJ5Rm9yQ1RFKFBhcnNlU3RhdGUgKnBz dGF0ZSwKIAlpbnQJCQludW1hbGlhc2VzOwogCWludAkJCXZhcmF0dG5vOwogCUxpc3RDZWxs ICAgKmxjOworCWludAkJCW5fZG9udGV4cGFuZF9jb2x1bW5zID0gMDsKKwlQYXJzZU5hbWVz cGFjZUl0ZW0gKnBzaTsKIAogCUFzc2VydChwc3RhdGUgIT0gTlVMTCk7CiAKQEAgLTIyNjcs OSArMjI2OSw5IEBAIGFkZFJhbmdlVGFibGVFbnRyeUZvckNURShQYXJzZVN0YXRlICpwc3Rh dGUsCiAJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBydi0+bG9jYXRpb24pKSk7 CiAJfQogCi0JcnRlLT5jb2x0eXBlcyA9IGN0ZS0+Y3RlY29sdHlwZXM7Ci0JcnRlLT5jb2x0 eXBtb2RzID0gY3RlLT5jdGVjb2x0eXBtb2RzOwotCXJ0ZS0+Y29sY29sbGF0aW9ucyA9IGN0 ZS0+Y3RlY29sY29sbGF0aW9uczsKKwlydGUtPmNvbHR5cGVzID0gbGlzdF9jb3B5KGN0ZS0+ Y3RlY29sdHlwZXMpOworCXJ0ZS0+Y29sdHlwbW9kcyA9IGxpc3RfY29weShjdGUtPmN0ZWNv bHR5cG1vZHMpOworCXJ0ZS0+Y29sY29sbGF0aW9ucyA9IGxpc3RfY29weShjdGUtPmN0ZWNv bGNvbGxhdGlvbnMpOwogCiAJcnRlLT5hbGlhcyA9IGFsaWFzOwogCWlmIChhbGlhcykKQEAg LTIyOTQsNiArMjI5NiwzNCBAQCBhZGRSYW5nZVRhYmxlRW50cnlGb3JDVEUoUGFyc2VTdGF0 ZSAqcHN0YXRlLAogCiAJcnRlLT5lcmVmID0gZXJlZjsKIAorCWlmIChjdGUtPnNlYXJjaF9j bGF1c2UpCisJeworCQlydGUtPmVyZWYtPmNvbG5hbWVzID0gbGFwcGVuZChydGUtPmVyZWYt PmNvbG5hbWVzLCBtYWtlU3RyaW5nKGN0ZS0+c2VhcmNoX2NsYXVzZS0+c2VhcmNoX3NlcV9j b2x1bW4pKTsKKwkJaWYgKGN0ZS0+c2VhcmNoX2NsYXVzZS0+c2VhcmNoX2JyZWFkdGhfZmly c3QpCisJCQlydGUtPmNvbHR5cGVzID0gbGFwcGVuZF9vaWQocnRlLT5jb2x0eXBlcywgUkVD T1JET0lEKTsKKwkJZWxzZQorCQkJcnRlLT5jb2x0eXBlcyA9IGxhcHBlbmRfb2lkKHJ0ZS0+ Y29sdHlwZXMsIFJFQ09SREFSUkFZT0lEKTsKKwkJcnRlLT5jb2x0eXBtb2RzID0gbGFwcGVu ZF9pbnQocnRlLT5jb2x0eXBtb2RzLCAtMSk7CisJCXJ0ZS0+Y29sY29sbGF0aW9ucyA9IGxh cHBlbmRfb2lkKHJ0ZS0+Y29sY29sbGF0aW9ucywgSW52YWxpZE9pZCk7CisKKwkJbl9kb250 ZXhwYW5kX2NvbHVtbnMgKz0gMTsKKwl9CisKKwlpZiAoY3RlLT5jeWNsZV9jbGF1c2UpCisJ eworCQlydGUtPmVyZWYtPmNvbG5hbWVzID0gbGFwcGVuZChydGUtPmVyZWYtPmNvbG5hbWVz LCBtYWtlU3RyaW5nKGN0ZS0+Y3ljbGVfY2xhdXNlLT5jeWNsZV9tYXJrX2NvbHVtbikpOwor CQlydGUtPmNvbHR5cGVzID0gbGFwcGVuZF9vaWQocnRlLT5jb2x0eXBlcywgY3RlLT5jeWNs ZV9jbGF1c2UtPmN5Y2xlX21hcmtfdHlwZSk7CisJCXJ0ZS0+Y29sdHlwbW9kcyA9IGxhcHBl bmRfaW50KHJ0ZS0+Y29sdHlwbW9kcywgY3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtf dHlwbW9kKTsKKwkJcnRlLT5jb2xjb2xsYXRpb25zID0gbGFwcGVuZF9vaWQocnRlLT5jb2xj b2xsYXRpb25zLCBjdGUtPmN5Y2xlX2NsYXVzZS0+Y3ljbGVfbWFya19jb2xsYXRpb24pOwor CisJCXJ0ZS0+ZXJlZi0+Y29sbmFtZXMgPSBsYXBwZW5kKHJ0ZS0+ZXJlZi0+Y29sbmFtZXMs IG1ha2VTdHJpbmcoY3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xlX3BhdGhfY29sdW1uKSk7CisJ CXJ0ZS0+Y29sdHlwZXMgPSBsYXBwZW5kX29pZChydGUtPmNvbHR5cGVzLCBSRUNPUkRBUlJB WU9JRCk7CisJCXJ0ZS0+Y29sdHlwbW9kcyA9IGxhcHBlbmRfaW50KHJ0ZS0+Y29sdHlwbW9k cywgLTEpOworCQlydGUtPmNvbGNvbGxhdGlvbnMgPSBsYXBwZW5kX29pZChydGUtPmNvbGNv bGxhdGlvbnMsIEludmFsaWRPaWQpOworCisJCW5fZG9udGV4cGFuZF9jb2x1bW5zICs9IDI7 CisJfQorCiAJLyoKIAkgKiBTZXQgZmxhZ3MgYW5kIGFjY2VzcyBwZXJtaXNzaW9ucy4KIAkg KgpAQCAtMjMyMSw5ICsyMzUxLDE5IEBAIGFkZFJhbmdlVGFibGVFbnRyeUZvckNURShQYXJz ZVN0YXRlICpwc3RhdGUsCiAJICogQnVpbGQgYSBQYXJzZU5hbWVzcGFjZUl0ZW0sIGJ1dCBk b24ndCBhZGQgaXQgdG8gdGhlIHBzdGF0ZSdzIG5hbWVzcGFjZQogCSAqIGxpc3QgLS0tIGNh bGxlciBtdXN0IGRvIHRoYXQgaWYgYXBwcm9wcmlhdGUuCiAJICovCi0JcmV0dXJuIGJ1aWxk TlNJdGVtRnJvbUxpc3RzKHJ0ZSwgbGlzdF9sZW5ndGgocHN0YXRlLT5wX3J0YWJsZSksCisJ cHNpID0gYnVpbGROU0l0ZW1Gcm9tTGlzdHMocnRlLCBsaXN0X2xlbmd0aChwc3RhdGUtPnBf cnRhYmxlKSwKIAkJCQkJCQkJcnRlLT5jb2x0eXBlcywgcnRlLT5jb2x0eXBtb2RzLAogCQkJ CQkJCQlydGUtPmNvbGNvbGxhdGlvbnMpOworCisJLyoKKwkgKiBUaGUgY29sdW1ucyBhZGRl ZCBieSBzZWFyY2ggYW5kIGN5Y2xlIGNsYXVzZXMgYXJlIG5vdCBpbmNsdWRlZCBpbiBzdGFy CisJICogZXhwYW5zaW9uIGluIHF1ZXJpZXMgY29udGFpbmVkIGluIHRoZSBDVEUuCisJICov CisJaWYgKHJ0ZS0+Y3RlbGV2ZWxzdXAgPiAwKQorCQlmb3IgKGludCBpID0gMDsgaSA8IG5f ZG9udGV4cGFuZF9jb2x1bW5zOyBpKyspCisJCQlwc2ktPnBfbnNjb2x1bW5zW2xpc3RfbGVu Z3RoKHBzaS0+cF9ydGUtPmVyZWYtPmNvbG5hbWVzKSAtIDEgLSBpXS5wX2RvbnRleHBhbmQg PSB0cnVlOworCisJcmV0dXJuIHBzaTsKIH0KIAogLyoKQEAgLTMwMDgsNyArMzA0OCwxMSBA QCBleHBhbmROU0l0ZW1WYXJzKFBhcnNlTmFtZXNwYWNlSXRlbSAqbnNpdGVtLAogCQljb25z dCBjaGFyICpjb2xuYW1lID0gc3RyVmFsKGNvbG5hbWV2YWwpOwogCQlQYXJzZU5hbWVzcGFj ZUNvbHVtbiAqbnNjb2wgPSBuc2l0ZW0tPnBfbnNjb2x1bW5zICsgY29saW5kZXg7CiAKLQkJ aWYgKGNvbG5hbWVbMF0pCisJCWlmIChuc2NvbC0+cF9kb250ZXhwYW5kKQorCQl7CisJCQkv KiBza2lwICovCisJCX0KKwkJZWxzZSBpZiAoY29sbmFtZVswXSkKIAkJewogCQkJVmFyCQkg ICAqdmFyOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0 LmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKaW5kZXggNTY2YzUxNzgz Ny4uNzAxMjBiYjUzNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Rh cmdldC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYwpAQCAtNDA5 LDEwICs0MDksMjUgQEAgbWFya1RhcmdldExpc3RPcmlnaW4oUGFyc2VTdGF0ZSAqcHN0YXRl LCBUYXJnZXRFbnRyeSAqdGxlLAogCQkJewogCQkJCUNvbW1vblRhYmxlRXhwciAqY3RlID0g R2V0Q1RFRm9yUlRFKHBzdGF0ZSwgcnRlLCBuZXRsZXZlbHN1cCk7CiAJCQkJVGFyZ2V0RW50 cnkgKnN0ZTsKKwkJCQlMaXN0CSAgICp0bCA9IEdldENURVRhcmdldExpc3QoY3RlKTsKKwkJ CQlpbnQJCQlleHRyYV9jb2xzID0gMDsKKworCQkJCS8qCisJCQkJICogUlRFIGZvciBDVEUg d2lsbCBhbHJlYWR5IGhhdmUgdGhlIHNlYXJjaCBhbmQgY3ljbGUgY29sdW1ucworCQkJCSAq IGFkZGVkLCBidXQgdGhlIHN1YnF1ZXJ5IHdvbid0LCBzbyBza2lwIGxvb2tpbmcgdGhvc2Ug dXAuCisJCQkJICovCisJCQkJaWYgKGN0ZS0+c2VhcmNoX2NsYXVzZSkKKwkJCQkJZXh0cmFf Y29scyArPSAxOworCQkJCWlmIChjdGUtPmN5Y2xlX2NsYXVzZSkKKwkJCQkJZXh0cmFfY29s cyArPSAyOworCQkJCWlmIChleHRyYV9jb2xzICYmCisJCQkJCWF0dG51bSA+IGxpc3RfbGVu Z3RoKHRsKSAmJgorCQkJCQlhdHRudW0gPD0gbGlzdF9sZW5ndGgodGwpICsgZXh0cmFfY29s cykKKwkJCQkJYnJlYWs7CiAKLQkJCQlzdGUgPSBnZXRfdGxlX2J5X3Jlc25vKEdldENURVRh cmdldExpc3QoY3RlKSwgYXR0bnVtKTsKKwkJCQlzdGUgPSBnZXRfdGxlX2J5X3Jlc25vKHRs LCBhdHRudW0pOwogCQkJCWlmIChzdGUgPT0gTlVMTCB8fCBzdGUtPnJlc2p1bmspCi0JCQkJ CWVsb2coRVJST1IsICJzdWJxdWVyeSAlcyBkb2VzIG5vdCBoYXZlIGF0dHJpYnV0ZSAlZCIs CisJCQkJCWVsb2coRVJST1IsICJDVEUgJXMgZG9lcyBub3QgaGF2ZSBhdHRyaWJ1dGUgJWQi LAogCQkJCQkJIHJ0ZS0+ZXJlZi0+YWxpYXNuYW1lLCBhdHRudW0pOwogCQkJCXRsZS0+cmVz b3JpZ3RibCA9IHN0ZS0+cmVzb3JpZ3RibDsKIAkJCQl0bGUtPnJlc29yaWdjb2wgPSBzdGUt PnJlc29yaWdjb2w7CkBAIC0xNjA2LDcgKzE2MjEsNyBAQCBleHBhbmRSZWNvcmRWYXJpYWJs ZShQYXJzZVN0YXRlICpwc3RhdGUsIFZhciAqdmFyLCBpbnQgbGV2ZWxzdXApCiAKIAkJCQlz dGUgPSBnZXRfdGxlX2J5X3Jlc25vKEdldENURVRhcmdldExpc3QoY3RlKSwgYXR0bnVtKTsK IAkJCQlpZiAoc3RlID09IE5VTEwgfHwgc3RlLT5yZXNqdW5rKQotCQkJCQllbG9nKEVSUk9S LCAic3VicXVlcnkgJXMgZG9lcyBub3QgaGF2ZSBhdHRyaWJ1dGUgJWQiLAorCQkJCQllbG9n KEVSUk9SLCAiQ1RFICVzIGRvZXMgbm90IGhhdmUgYXR0cmlidXRlICVkIiwKIAkJCQkJCSBy dGUtPmVyZWYtPmFsaWFzbmFtZSwgYXR0bnVtKTsKIAkJCQlleHByID0gKE5vZGUgKikgc3Rl LT5leHByOwogCQkJCWlmIChJc0EoZXhwciwgVmFyKSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3Jld3JpdGUvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9yZXdyaXRlL01ha2VmaWxlCmlu ZGV4IGI0MzViM2U5ODUuLjQ2ODA3NTJlNmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jl d3JpdGUvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvcmV3cml0ZS9NYWtlZmlsZQpAQCAt MTcsNiArMTcsNyBAQCBPQkpTID0gXAogCXJld3JpdGVIYW5kbGVyLm8gXAogCXJld3JpdGVN YW5pcC5vIFwKIAlyZXdyaXRlUmVtb3ZlLm8gXAorCXJld3JpdGVTZWFyY2hDeWNsZS5vIFwK IAlyZXdyaXRlU3VwcG9ydC5vIFwKIAlyb3dzZWN1cml0eS5vCiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL3Jld3Jp dGUvcmV3cml0ZUhhbmRsZXIuYwppbmRleCBmZTc3N2MzMTAzLi43NGIwZmE3Y2RmIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMKKysrIGIvc3Jj L2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jCkBAIC0zNyw2ICszNyw3IEBACiAj aW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlRGVmaW5lLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9y ZXdyaXRlSGFuZGxlci5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZU1hbmlwLmgiCisj aW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlU2VhcmNoQ3ljbGUuaCIKICNpbmNsdWRlICJyZXdy aXRlL3Jvd3NlY3VyaXR5LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNs dWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKQEAgLTE4NjQsNiArMTg2NSwyMyBAQCBmaXJlUklS cnVsZXMoUXVlcnkgKnBhcnNldHJlZSwgTGlzdCAqYWN0aXZlUklScykKIAlpbnQJCQlydF9p bmRleDsKIAlMaXN0Q2VsbCAgICpsYzsKIAorCS8qCisJICogRXhwYW5kIFNFQVJDSCBhbmQg Q1lDTEUgY2xhdXNlcyBpbiBDVEVzLgorCSAqCisJICogVGhpcyBpcyBqdXN0IGEgY29udmVu aWVudCBwbGFjZSB0byBkbyB0aGlzLCBzaW5jZSB3ZSBhcmUgYWxyZWFkeQorCSAqIGxvb2tp bmcgYXQgZWFjaCBRdWVyeS4KKwkgKi8KKwlmb3JlYWNoKGxjLCBwYXJzZXRyZWUtPmN0ZUxp c3QpCisJeworCQlDb21tb25UYWJsZUV4cHIgKmN0ZSA9IGxmaXJzdF9ub2RlKENvbW1vblRh YmxlRXhwciwgbGMpOworCisJCWlmIChjdGUtPnNlYXJjaF9jbGF1c2UgfHwgY3RlLT5jeWNs ZV9jbGF1c2UpCisJCXsKKwkJCWN0ZSA9IHJld3JpdGVTZWFyY2hBbmRDeWNsZShjdGUpOwor CQkJbGZpcnN0KGxjKSA9IGN0ZTsKKwkJfQorCX0KKwogCS8qCiAJICogZG9uJ3QgdHJ5IHRv IGNvbnZlcnQgdGhpcyBpbnRvIGEgZm9yZWFjaCBsb29wLCBiZWNhdXNlIHJ0YWJsZSBsaXN0 IGNhbgogCSAqIGdldCBjaGFuZ2VkIGVhY2ggdGltZSB0aHJvdWdoLi4uCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVTZWFyY2hDeWNsZS5jIGIvc3JjL2JhY2tl bmQvcmV3cml0ZS9yZXdyaXRlU2VhcmNoQ3ljbGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwLi44MDUzZmVhOTA3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2Jh Y2tlbmQvcmV3cml0ZS9yZXdyaXRlU2VhcmNoQ3ljbGUuYwpAQCAtMCwwICsxLDcwOSBAQAor LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogcmV3cml0ZVNlYXJjaEN5Y2xlLmMKKyAq CQlTdXBwb3J0IGZvciByZXdyaXRpbmcgU0VBUkNIIGFuZCBDWUNMRSBjbGF1c2VzLgorICoK KyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDIwLCBQb3N0Z3JlU1FMIEdsb2Jh bCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBS ZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBJREVOVElG SUNBVElPTgorICoJICBzcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVTZWFyY2hDeWNsZS5j CisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJwb3N0Z3Jlcy5o IgorCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGVyYXRvcl9kLmgiCisjaW5jbHVkZSAiY2F0 YWxvZy9wZ190eXBlX2QuaCIKKyNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKKyNpbmNs dWRlICJub2Rlcy9wZ19saXN0LmgiCisjaW5jbHVkZSAicGFyc2VyL2FuYWx5emUuaCIKKyNp bmNsdWRlICJwYXJzZXIvcGFyc2V0cmVlLmgiCisjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRl TWFuaXAuaCIKKyNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVTZWFyY2hDeWNsZS5oIgorI2lu Y2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIK KyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy90eXBjYWNo ZS5oIgorCisKKy8qLS0tLS0tLS0tLQorICogUmV3cml0ZSBhIENURSB3aXRoIFNFQVJDSCBv ciBDWUNMRSBjbGF1c2UKKyAqCisgKiBDb25zaWRlciBhIENURSBsaWtlCisgKgorICogV0lU SCBSRUNVUlNJVkUgY3RlbmFtZSAoY29sMSwgY29sMiwgY29sMykgQVMgKAorICogICAgIHF1 ZXJ5MQorICogICBVTklPTiBbQUxMXQorICogICAgIFNFTEVDVCB0cm9zbCBGUk9NIGN0ZW5h bWUKKyAqICkKKyAqCisgKiBXaXRoIGEgc2VhcmNoIGNsYXVzZQorICoKKyAqIFNFQVJDSCBC UkVBRFRIIEZJUlNUIEJZIGNvbDEsIGNvbDIgU0VUIHNxYworICoKKyAqIHRoZSBDVEUgaXMg cmV3cml0dGVuIHRvCisgKgorICogV0lUSCBSRUNVUlNJVkUgY3RlbmFtZSAoY29sMSwgY29s MiwgY29sMywgc3FjKSBBUyAoCisgKiAgICAgU0VMRUNUIGNvbDEsIGNvbDIsIGNvbDMsICAg ICAgICAgICAgICAgLS0gb3JpZ2luYWwgV0lUSCBjb2x1bW4gbGlzdAorICogICAgICAgICAg ICBST1coMCwgY29sMSwgY29sMikgICAgICAgICAgICAgIC0tIGluaXRpYWwgcm93IG9mIHNl YXJjaCBjb2x1bW5zCisgKiAgICAgICBGUk9NIChxdWVyeTEpICIqVExPQ1JOKiIgKGNvbDEs IGNvbDIsIGNvbDMpCisgKiAgIFVOSU9OIFtBTExdCisgKiAgICAgU0VMRUNUIGNvbDEsIGNv bDIsIGNvbDMsICAgICAgICAgICAgICAgLS0gc2FtZSBhcyBhYm92ZQorICogICAgICAgICAg ICBST1coc3FjLmxldmVsICsgMSwgY29sMSwgY29sMikgIC0tIGNvdW50IGxldmVscworICog ICAgICAgRlJPTSAoU0VMRUNUIHRyb3NsLCBjdGVuYW1lLnNxYyBGUk9NIGN0ZW5hbWUpICIq VFJPQ1JOKiIgKGNvbDEsIGNvbDIsIGNvbDMsIHNxYykKKyAqICkKKyAqCisgKiAoVGhpcyBp c24ndCBxdWl0ZSBsZWdhbCBTUUw6IHNxYy5sZXZlbCBpcyBtZWFudCB0byByZWZlciB0byB0 aGUgZmlyc3QKKyAqIGNvbHVtbiBvZiBzcWMsIHdoaWNoIGhhcyBhIHJvdyB0eXBlLCBidXQg dGhlIGZpZWxkIG5hbWVzIGFyZSBub3QgZGVmaW5lZAorICogaGVyZS4gIFJlcHJlc2VudGlu ZyB0aGlzIHByb3Blcmx5IGluIFNRTCB3b3VsZCBiZSBtb3JlIGNvbXBsaWNhdGVkIChhbmQg dGhlCisgKiBTUUwgc3RhbmRhcmQgYWN0dWFsbHkgZG9lcyBpdCBpbiB0aGF0IG1vcmUgY29t cGxpY2F0ZWQgd2F5KSwgYnV0IHRoZQorICogaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gYWxs b3dzIHVzIHRvIGNvbnN0cnVjdCBpdCB0aGlzIHdheS4pCisgKgorICogV2l0aCBhIHNlYXJj aCBjYWx1c2UKKyAqCisgKiBTRUFSQ0ggREVQVEggRklSU1QgQlkgY29sMSwgY29sMiBTRVQg c3FjCisgKgorICogdGhlIENURSBpcyByZXdyaXR0ZW4gdG8KKyAqCisgKiBXSVRIIFJFQ1VS U0lWRSBjdGVuYW1lIChjb2wxLCBjb2wyLCBjb2wzLCBzcWMpIEFTICgKKyAqICAgICBTRUxF Q1QgY29sMSwgY29sMiwgY29sMywgICAgICAgICAgICAgICAtLSBvcmlnaW5hbCBXSVRIIGNv bHVtbiBsaXN0CisgKiAgICAgICAgICAgIEFSUkFZW1JPVyhjb2wxLCBjb2wyKV0gICAgICAg ICAgLS0gaW5pdGlhbCByb3cgb2Ygc2VhcmNoIGNvbHVtbnMKKyAqICAgICAgIEZST00gKHF1 ZXJ5MSkgIipUTE9DUk4qIiAoY29sMSwgY29sMiwgY29sMykKKyAqICAgVU5JT04gW0FMTF0K KyAqICAgICBTRUxFQ1QgY29sMSwgY29sMiwgY29sMywgICAgICAgICAgICAgICAtLSBzYW1l IGFzIGFib3ZlCisgKiAgICAgICAgICAgIHNxYyB8fCBBUlJBWVtST1coY29sMSwgY29sMild ICAgLS0gcmVjb3JkIHJvd3Mgc2VlbgorICogICAgICAgRlJPTSAoU0VMRUNUIHRyb3NsLCBj dGVuYW1lLnNxYyBGUk9NIGN0ZW5hbWUpICIqVFJPQ1JOKiIgKGNvbDEsIGNvbDIsIGNvbDMs IHNxYykKKyAqICkKKyAqCisgKiBXaXRoIGEgY3ljbGUgY2xhdXNlCisgKgorICogQ1lDTEUg Y29sMSwgY29sMiBTRVQgY21jIFRPICdZJyBERUZBVUxUICdOJyBVU0lORyBjcGEKKyAqCisg KiAoY21jID0gY3ljbGUgbWFyayBjb2x1bW4sIGNwYSA9IGN5Y2xlIHBhdGgpIHRoZSBDVEUg aXMgcmV3cml0dGVuIHRvCisgKgorICogV0lUSCBSRUNVUlNJVkUgY3RlbmFtZSAoY29sMSwg Y29sMiwgY29sMywgY21jLCBjcGEpIEFTICgKKyAqICAgICBTRUxFQ1QgY29sMSwgY29sMiwg Y29sMywgICAgICAgICAgICAgICAtLSBvcmlnaW5hbCBXSVRIIGNvbHVtbiBsaXN0CisgKiAg ICAgICAgICAgICdOJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gY3ljbGUgbWFy ayBkZWZhdWx0CisgKiAgICAgICAgICAgIEFSUkFZW1JPVyhjb2wxLCBjb2wyKV0gICAgICAg ICAgLS0gaW5pdGlhbCByb3cgb2YgY3ljbGUgY29sdW1ucworICogICAgICAgRlJPTSAocXVl cnkxKSAiKlRMT0NSTioiIChjb2wxLCBjb2wyLCBjb2wzKQorICogICBVTklPTiBbQUxMXQor ICogICAgIFNFTEVDVCBjb2wxLCBjb2wyLCBjb2wzLCAgICAgICAgICAgICAgIC0tIHNhbWUg YXMgYWJvdmUKKyAqICAgICAgICAgICAgQ0FTRSBXSEVOIFJPVyhjb2wxLCBjb2wyKSA9IEFO WSAoQVJSQVlbY3BhXSkgVEhFTiAnWScgRUxTRSAnTicgRU5ELCAgLS0gY29tcHV0ZSBjeWNs ZSBtYXJrIGNvbHVtbgorICogICAgICAgICAgICBjcGEgfHwgQVJSQVlbUk9XKGNvbDEsIGNv bDIpXSAgIC0tIHJlY29yZCByb3dzIHNlZW4KKyAqICAgICAgIEZST00gKFNFTEVDVCB0cm9z bCwgY3RlbmFtZS5jbWMsIGN0ZW5hbWUuY3BhIEZST00gY3RlbmFtZSkgIipUUk9DUk4qIiAo Y29sMSwgY29sMiwgY29sMywgY21jLCBjcGEpCisgKiAgICAgICBXSEVSRSBjbWMgPD4gJ1kn CisgKiApCisgKgorICogVGhlIGV4cHJlc3Npb24gdG8gY29tcHV0ZSB0aGUgY3ljbGUgbWFy ayBjb2x1bW4gaW4gdGhlIHJpZ2h0LWhhbmQgcXVlcnkgaXMKKyAqIHdyaXR0ZW4gYXMKKyAq CisgKiBDQVNFIFdIRU4gUk9XKGNvbDEsIGNvbDIpIElOIChTRUxFQ1QgcC4qIEZST00gVEFC TEUoY3BhKSBwKSBUSEVOIGNtdiBFTFNFIGNtZCBFTkQKKyAqCisgKiBpbiB0aGUgU1FMIHN0 YW5kYXJkLCBidXQgaW4gUG9zdGdyZVNRTCB3ZSBjYW4gdXNlIHRoZSBzY2FsYXItYXJyYXkg b3BlcmF0b3IKKyAqIGV4cHJlc3Npb24gc2hvd24gYWJvdmUuCisgKgorICogQWxzbywgaW4g c29tZSBvZiB0aGUgY2FzZXMgd2hlcmUgb3BlcmF0b3JzIGFyZSBzaG93biBhYm92ZSB3ZSBh Y3R1YWxseQorICogZGlyZWN0bHkgcHJvZHVjZSB0aGUgdW5kZXJseWluZyBmdW5jdGlvbiBj YWxsLgorICoKKyAqIElmIGJvdGggYSBzZWFyY2ggY2xhdXNlIGFuZCBhIGN5Y2xlIGNsYXVz ZSBpcyBzcGVjaWZpZWQsIHRoZW4gdGhlIHNlYXJjaAorICogY2xhdXNlIGNvbHVtbiBpcyBh ZGRlZCBiZWZvcmUgdGhlIGN5Y2xlIGNsYXVzZSBjb2x1bW5zLgorICovCisKKy8qCisgKiBN YWtlIGEgUm93RXhwciBmcm9tIHRoZSBzcGVjaWZpZWQgY29sdW1uIG5hbWVzLCB3aGljaCBo YXZlIHRvIGJlIGFtb25nIHRoZQorICogb3V0cHV0IGNvbHVtbnMgb2YgdGhlIENURS4KKyAq CisgKiBYWFggV2UgYWxyZWFkeSBsb29rZWQgdXAgdGhlIGNvbHVtbnMgaW4gcGFyc2VfY3Rl LmMuICBNYXliZSB3ZSBzaG91bGQKKyAqIHJlY29yZCB0aGUgcG9zaXRpb25zIHRoZXJlIGlu c3RlYWQgb2YgbG9va2luZyB0aGVtIHVwIGFnYWluIGhlcmUuCisgKi8KK3N0YXRpYyBSb3dF eHByICoKK21ha2VfcGF0aF9yb3dleHByKGNvbnN0IENvbW1vblRhYmxlRXhwciAqY3RlLCBj b25zdCBMaXN0ICpjb2xfbGlzdCkKK3sKKwlSb3dFeHByICAgICpyb3dleHByOworCUxpc3RD ZWxsICAgKmxjOworCisJcm93ZXhwciA9IG1ha2VOb2RlKFJvd0V4cHIpOworCXJvd2V4cHIt PnJvd190eXBlaWQgPSBSRUNPUkRPSUQ7CisJcm93ZXhwci0+cm93X2Zvcm1hdCA9IENPRVJD RV9JTVBMSUNJVF9DQVNUOworCXJvd2V4cHItPmxvY2F0aW9uID0gLTE7CisKKwlmb3JlYWNo KGxjLCBjb2xfbGlzdCkKKwl7CisJCWNoYXIJICAgKmNvbG5hbWUgPSBzdHJWYWwobGZpcnN0 KGxjKSk7CisKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBsaXN0X2xlbmd0aChjdGUtPmN0ZWNv bG5hbWVzKTsgaSsrKQorCQl7CisJCQljaGFyCSAgICpjb2xuYW1lMiA9IHN0clZhbChsaXN0 X250aChjdGUtPmN0ZWNvbG5hbWVzLCBpKSk7CisKKwkJCWlmIChzdHJjbXAoY29sbmFtZSwg Y29sbmFtZTIpID09IDApCisJCQl7CisJCQkJVmFyCQkgICAqdmFyOworCisJCQkJdmFyID0g bWFrZVZhcigxLCBpICsgMSwKKwkJCQkJCQkgIGxpc3RfbnRoX29pZChjdGUtPmN0ZWNvbHR5 cGVzLCBpKSwKKwkJCQkJCQkgIGxpc3RfbnRoX2ludChjdGUtPmN0ZWNvbHR5cG1vZHMsIGkp LAorCQkJCQkJCSAgbGlzdF9udGhfb2lkKGN0ZS0+Y3RlY29sY29sbGF0aW9ucywgaSksCisJ CQkJCQkJICAwKTsKKwkJCQlyb3dleHByLT5hcmdzID0gbGFwcGVuZChyb3dleHByLT5hcmdz LCB2YXIpOworCQkJCXJvd2V4cHItPmNvbG5hbWVzID0gbGFwcGVuZChyb3dleHByLT5jb2xu YW1lcywgbWFrZVN0cmluZyhjb2xuYW1lKSk7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwl9 CisKKwlyZXR1cm4gcm93ZXhwcjsKK30KKworLyoKKyAqIFdyYXAgYSBSb3dFeHByIGluIGFu IEFycmF5RXhwciwgZm9yIHRoZSBpbml0aWFsIHNlYXJjaCBkZXB0aCBmaXJzdCBvciBjeWNs ZQorICogcm93LgorICovCitzdGF0aWMgRXhwciAqCittYWtlX3BhdGhfaW5pdGlhbF9hcnJh eShSb3dFeHByICpyb3dleHByKQoreworCUFycmF5RXhwciAgKmFycjsKKworCWFyciA9IG1h a2VOb2RlKEFycmF5RXhwcik7CisJYXJyLT5hcnJheV90eXBlaWQgPSBSRUNPUkRBUlJBWU9J RDsKKwlhcnItPmVsZW1lbnRfdHlwZWlkID0gUkVDT1JET0lEOworCWFyci0+bG9jYXRpb24g PSAtMTsKKwlhcnItPmVsZW1lbnRzID0gbGlzdF9tYWtlMShyb3dleHByKTsKKworCXJldHVy biAoRXhwciAqKSBhcnI7Cit9CisKKy8qCisgKiBNYWtlIGFuIGFycmF5IGNhdGVuYXRpb24g ZXhwcmVzc2lvbiBsaWtlCisgKgorICogY3BhIHx8IEFSUkFZW1JPVyhjb2xzKV0KKyAqCisg KiB3aGVyZSB0aGUgdmFyYXR0bm8gb2YgY3BhIGlzIHByb3ZpZGVkIGFzIHBhdGhfdmFyYXR0 bm8uCisgKi8KK3N0YXRpYyBFeHByICoKK21ha2VfcGF0aF9jYXRfZXhwcihSb3dFeHByICpy b3dleHByLCBBdHRyTnVtYmVyIHBhdGhfdmFyYXR0bm8pCit7CisJQXJyYXlFeHByICAqYXJy OworCUZ1bmNFeHByICAgKmZleHByOworCisJYXJyID0gbWFrZU5vZGUoQXJyYXlFeHByKTsK KwlhcnItPmFycmF5X3R5cGVpZCA9IFJFQ09SREFSUkFZT0lEOworCWFyci0+ZWxlbWVudF90 eXBlaWQgPSBSRUNPUkRPSUQ7CisJYXJyLT5sb2NhdGlvbiA9IC0xOworCWFyci0+ZWxlbWVu dHMgPSBsaXN0X21ha2UxKHJvd2V4cHIpOworCisJZmV4cHIgPSBtYWtlRnVuY0V4cHIoRl9B UlJBWV9DQVQsIFJFQ09SREFSUkFZT0lELAorCQkJCQkJIGxpc3RfbWFrZTIobWFrZVZhcigx LCBwYXRoX3ZhcmF0dG5vLCBSRUNPUkRBUlJBWU9JRCwgLTEsIDAsIDApLAorCQkJCQkJCQkJ YXJyKSwKKwkJCQkJCSBJbnZhbGlkT2lkLCBJbnZhbGlkT2lkLCBDT0VSQ0VfRVhQTElDSVRf Q0FMTCk7CisKKwlyZXR1cm4gKEV4cHIgKikgZmV4cHI7Cit9CisKKy8qCisgKiBUaGUgcmVh bCB3b3JrIGhhcHBlbnMgaGVyZS4KKyAqLworQ29tbW9uVGFibGVFeHByICoKK3Jld3JpdGVT ZWFyY2hBbmRDeWNsZShDb21tb25UYWJsZUV4cHIgKmN0ZSkKK3sKKwlRdWVyeQkgICAqY3Rl cXVlcnk7CisJU2V0T3BlcmF0aW9uU3RtdCAqc29zOworCWludAkJCXJ0aTEsCisJCQkJcnRp MjsKKwlSYW5nZVRibEVudHJ5ICpydGUxLAorCQkJICAgKnJ0ZTIsCisJCQkgICAqbmV3cnRl OworCVF1ZXJ5CSAgICpuZXdxMSwKKwkJCSAgICpuZXdxMjsKKwlRdWVyeQkgICAqbmV3c3Vi cXVlcnk7CisJUmFuZ2VUYmxSZWYgKnJ0cjsKKwlPaWQJCQlzZWFyY2hfc2VxX3R5cGUgPSBJ bnZhbGlkT2lkOworCUF0dHJOdW1iZXIJc3FjX2F0dG5vID0gSW52YWxpZEF0dHJOdW1iZXI7 CisJQXR0ck51bWJlcgljbWNfYXR0bm8gPSBJbnZhbGlkQXR0ck51bWJlcjsKKwlBdHRyTnVt YmVyCWNwYV9hdHRubyA9IEludmFsaWRBdHRyTnVtYmVyOworCVRhcmdldEVudHJ5ICp0bGU7 CisJUm93RXhwciAgICAqY3ljbGVfY29sX3Jvd2V4cHIgPSBOVUxMOworCVJvd0V4cHIgICAg KnNlYXJjaF9jb2xfcm93ZXhwciA9IE5VTEw7CisJTGlzdAkgICAqZXdjbDsKKwlpbnQJCQlj dGVfcnRpbmRleCA9IC0xOworCisJQXNzZXJ0KGN0ZS0+c2VhcmNoX2NsYXVzZSB8fCBjdGUt PmN5Y2xlX2NsYXVzZSk7CisKKwljdGUgPSBjb3B5T2JqZWN0KGN0ZSk7CisKKwljdGVxdWVy eSA9IGNhc3ROb2RlKFF1ZXJ5LCBjdGUtPmN0ZXF1ZXJ5KTsKKworCS8qCisJICogVGhlIHRv cCBsZXZlbCBvZiB0aGUgQ1RFJ3MgcXVlcnkgc2hvdWxkIGJlIGEgVU5JT04uICBGaW5kIHRo ZSB0d28KKwkgKiBzdWJxdWVyaWVzLgorCSAqLworCUFzc2VydChjdGVxdWVyeS0+c2V0T3Bl cmF0aW9ucyk7CisJc29zID0gY2FzdE5vZGUoU2V0T3BlcmF0aW9uU3RtdCwgY3RlcXVlcnkt PnNldE9wZXJhdGlvbnMpOworCUFzc2VydChzb3MtPm9wID09IFNFVE9QX1VOSU9OKTsKKwor CS8qCisJICogWFhYIFRoZSBTRUFSQ0ggYW5kIENZQ0xFIGNsYXVzZXMgd29uJ3QgY3VycmVu dGx5IHdvcmsgd2l0aCBVTklPTgorCSAqIERJU1RJTkNULCBiZWNhdXNlIHRoZSByZWNvcmQg YW5kIF9yZWNvcmQgdHlwZXMgYXJlIG5vdCBoYXNoYWJsZS4gIFRoaXMKKwkgKiB3b3VsZCBy ZXN1bHQgaW4gYSBwZXJoYXBzIHNsaWdodGx5IGNvbmZ1c2luZyBlcnJvciBtZXNzYWdlIGxh dGVyLCBzbworCSAqIHdlJ2xsIGdpdmUgYSBtb3JlIHByZWNpc2UgbWVzc2FnZSBoZXJlLiAg SWYgdGhhdCByZXN0cmljdGlvbiBpcyBldmVyCisJICogbGlmdGVkLCB0aGlzIGNhbiBiZSBy ZW1vdmVkLgorCSAqLworCWlmICghc29zLT5hbGwpCisJeworCQlpZiAoY3RlLT5zZWFyY2hf Y2xhdXNlKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRV UkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCWVycm1zZygiU0VBUkNIIGNsYXVzZSBub3Qgc3Vw cG9ydGVkIHdpdGggVU5JT04gRElTVElOQ1QiKSk7CisJCWlmIChjdGUtPmN5Y2xlX2NsYXVz ZSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05P VF9TVVBQT1JURUQpLAorCQkJCQllcnJtc2coIkNZQ0xFIGNsYXVzZSBub3Qgc3VwcG9ydGVk IHdpdGggVU5JT04gRElTVElOQ1QiKSk7CisJfQorCisJcnRpMSA9IGNhc3ROb2RlKFJhbmdl VGJsUmVmLCBzb3MtPmxhcmcpLT5ydGluZGV4OworCXJ0aTIgPSBjYXN0Tm9kZShSYW5nZVRi bFJlZiwgc29zLT5yYXJnKS0+cnRpbmRleDsKKworCXJ0ZTEgPSBydF9mZXRjaChydGkxLCBj dGVxdWVyeS0+cnRhYmxlKTsKKwlydGUyID0gcnRfZmV0Y2gocnRpMiwgY3RlcXVlcnktPnJ0 YWJsZSk7CisKKwlBc3NlcnQocnRlMS0+cnRla2luZCA9PSBSVEVfU1VCUVVFUlkpOworCUFz c2VydChydGUyLT5ydGVraW5kID09IFJURV9TVUJRVUVSWSk7CisKKwkvKgorCSAqIFdlJ2xs IG5lZWQgdGhpcyBhIGZldyB0aW1lcyBsYXRlci4KKwkgKi8KKwlpZiAoY3RlLT5zZWFyY2hf Y2xhdXNlKQorCXsKKwkJaWYgKGN0ZS0+c2VhcmNoX2NsYXVzZS0+c2VhcmNoX2JyZWFkdGhf Zmlyc3QpCisJCQlzZWFyY2hfc2VxX3R5cGUgPSBSRUNPUkRPSUQ7CisJCWVsc2UKKwkJCXNl YXJjaF9zZXFfdHlwZSA9IFJFQ09SREFSUkFZT0lEOworCX0KKworCS8qCisJICogQXR0cmli dXRlIG51bWJlcnMgb2YgdGhlIGFkZGVkIGNvbHVtbnMgaW4gdGhlIENURSdzIGNvbHVtbiBs aXN0CisJICovCisJaWYgKGN0ZS0+c2VhcmNoX2NsYXVzZSkKKwkJc3FjX2F0dG5vID0gbGlz dF9sZW5ndGgoY3RlLT5jdGVjb2xuYW1lcykgKyAxOworCWlmIChjdGUtPmN5Y2xlX2NsYXVz ZSkKKwl7CisJCWNtY19hdHRubyA9IGxpc3RfbGVuZ3RoKGN0ZS0+Y3RlY29sbmFtZXMpICsg MTsKKwkJY3BhX2F0dG5vID0gbGlzdF9sZW5ndGgoY3RlLT5jdGVjb2xuYW1lcykgKyAyOwor CQlpZiAoY3RlLT5zZWFyY2hfY2xhdXNlKQorCQl7CisJCQljbWNfYXR0bm8rKzsKKwkJCWNw YV9hdHRubysrOworCQl9CisJfQorCisJLyoKKwkgKiBNYWtlIG5ldyBsZWZ0IHN1YnF1ZXJ5 CisJICovCisJbmV3cTEgPSBtYWtlTm9kZShRdWVyeSk7CisJbmV3cTEtPmNvbW1hbmRUeXBl ID0gQ01EX1NFTEVDVDsKKwluZXdxMS0+Y2FuU2V0VGFnID0gdHJ1ZTsKKworCW5ld3J0ZSA9 IG1ha2VOb2RlKFJhbmdlVGJsRW50cnkpOworCW5ld3J0ZS0+cnRla2luZCA9IFJURV9TVUJR VUVSWTsKKwluZXdydGUtPmFsaWFzID0gbWFrZUFsaWFzKCIqVExPQ1JOKiIsIGN0ZS0+Y3Rl Y29sbmFtZXMpOworCW5ld3J0ZS0+ZXJlZiA9IG5ld3J0ZS0+YWxpYXM7CisJbmV3c3VicXVl cnkgPSBjb3B5T2JqZWN0KHJ0ZTEtPnN1YnF1ZXJ5KTsKKwlJbmNyZW1lbnRWYXJTdWJsZXZl bHNVcCgoTm9kZSAqKSBuZXdzdWJxdWVyeSwgMSwgMSk7CisJbmV3cnRlLT5zdWJxdWVyeSA9 IG5ld3N1YnF1ZXJ5OworCW5ld3J0ZS0+aW5Gcm9tQ2wgPSB0cnVlOworCW5ld3ExLT5ydGFi bGUgPSBsaXN0X21ha2UxKG5ld3J0ZSk7CisKKwlydHIgPSBtYWtlTm9kZShSYW5nZVRibFJl Zik7CisJcnRyLT5ydGluZGV4ID0gMTsKKwluZXdxMS0+am9pbnRyZWUgPSBtYWtlRnJvbUV4 cHIobGlzdF9tYWtlMShydHIpLCBOVUxMKTsKKworCS8qCisJICogTWFrZSB0YXJnZXQgbGlz dAorCSAqLworCWZvciAoaW50IGkgPSAwOyBpIDwgbGlzdF9sZW5ndGgoY3RlLT5jdGVjb2xu YW1lcyk7IGkrKykKKwl7CisJCVZhcgkJICAgKnZhcjsKKworCQl2YXIgPSBtYWtlVmFyKDEs IGkgKyAxLAorCQkJCQkgIGxpc3RfbnRoX29pZChjdGUtPmN0ZWNvbHR5cGVzLCBpKSwKKwkJ CQkJICBsaXN0X250aF9pbnQoY3RlLT5jdGVjb2x0eXBtb2RzLCBpKSwKKwkJCQkJICBsaXN0 X250aF9vaWQoY3RlLT5jdGVjb2xjb2xsYXRpb25zLCBpKSwKKwkJCQkJICAwKTsKKwkJdGxl ID0gbWFrZVRhcmdldEVudHJ5KChFeHByICopIHZhciwgaSArIDEsIHN0clZhbChsaXN0X250 aChjdGUtPmN0ZWNvbG5hbWVzLCBpKSksIGZhbHNlKTsKKwkJdGxlLT5yZXNvcmlndGJsID0g Y2FzdE5vZGUoVGFyZ2V0RW50cnksIGxpc3RfbnRoKHJ0ZTEtPnN1YnF1ZXJ5LT50YXJnZXRM aXN0LCBpKSktPnJlc29yaWd0Ymw7CisJCXRsZS0+cmVzb3JpZ2NvbCA9IGNhc3ROb2RlKFRh cmdldEVudHJ5LCBsaXN0X250aChydGUxLT5zdWJxdWVyeS0+dGFyZ2V0TGlzdCwgaSkpLT5y ZXNvcmlnY29sOworCQluZXdxMS0+dGFyZ2V0TGlzdCA9IGxhcHBlbmQobmV3cTEtPnRhcmdl dExpc3QsIHRsZSk7CisJfQorCisJaWYgKGN0ZS0+c2VhcmNoX2NsYXVzZSkKKwl7CisJCUV4 cHIJICAgKnRleHByOworCisJCXNlYXJjaF9jb2xfcm93ZXhwciA9IG1ha2VfcGF0aF9yb3dl eHByKGN0ZSwgY3RlLT5zZWFyY2hfY2xhdXNlLT5zZWFyY2hfY29sX2xpc3QpOworCQlpZiAo Y3RlLT5zZWFyY2hfY2xhdXNlLT5zZWFyY2hfYnJlYWR0aF9maXJzdCkKKwkJeworCQkJc2Vh cmNoX2NvbF9yb3dleHByLT5hcmdzID0gbGNvbnMobWFrZUNvbnN0KElOVDhPSUQsIC0xLCBJ bnZhbGlkT2lkLCBzaXplb2YoaW50NjQpLAorCQkJCQkJCQkJCQkJCSAgIEludDY0R2V0RGF0 dW0oMCksIGZhbHNlLCBGTE9BVDhQQVNTQllWQUwpLAorCQkJCQkJCQkJCQkgc2VhcmNoX2Nv bF9yb3dleHByLT5hcmdzKTsKKwkJCXNlYXJjaF9jb2xfcm93ZXhwci0+Y29sbmFtZXMgPSBs Y29ucyhtYWtlU3RyaW5nKCIqTEVWRUwqIiksIHNlYXJjaF9jb2xfcm93ZXhwci0+Y29sbmFt ZXMpOworCQkJdGV4cHIgPSAoRXhwciAqKSBzZWFyY2hfY29sX3Jvd2V4cHI7CisJCX0KKwkJ ZWxzZQorCQkJdGV4cHIgPSBtYWtlX3BhdGhfaW5pdGlhbF9hcnJheShzZWFyY2hfY29sX3Jv d2V4cHIpOworCQl0bGUgPSBtYWtlVGFyZ2V0RW50cnkodGV4cHIsCisJCQkJCQkJICBsaXN0 X2xlbmd0aChuZXdxMS0+dGFyZ2V0TGlzdCkgKyAxLAorCQkJCQkJCSAgY3RlLT5zZWFyY2hf Y2xhdXNlLT5zZWFyY2hfc2VxX2NvbHVtbiwKKwkJCQkJCQkgIGZhbHNlKTsKKwkJbmV3cTEt PnRhcmdldExpc3QgPSBsYXBwZW5kKG5ld3ExLT50YXJnZXRMaXN0LCB0bGUpOworCX0KKwlp ZiAoY3RlLT5jeWNsZV9jbGF1c2UpCisJeworCQl0bGUgPSBtYWtlVGFyZ2V0RW50cnkoKEV4 cHIgKikgY3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtfZGVmYXVsdCwKKwkJCQkJCQkg IGxpc3RfbGVuZ3RoKG5ld3ExLT50YXJnZXRMaXN0KSArIDEsCisJCQkJCQkJICBjdGUtPmN5 Y2xlX2NsYXVzZS0+Y3ljbGVfbWFya19jb2x1bW4sCisJCQkJCQkJICBmYWxzZSk7CisJCW5l d3ExLT50YXJnZXRMaXN0ID0gbGFwcGVuZChuZXdxMS0+dGFyZ2V0TGlzdCwgdGxlKTsKKwkJ Y3ljbGVfY29sX3Jvd2V4cHIgPSBtYWtlX3BhdGhfcm93ZXhwcihjdGUsIGN0ZS0+Y3ljbGVf Y2xhdXNlLT5jeWNsZV9jb2xfbGlzdCk7CisJCXRsZSA9IG1ha2VUYXJnZXRFbnRyeShtYWtl X3BhdGhfaW5pdGlhbF9hcnJheShjeWNsZV9jb2xfcm93ZXhwciksCisJCQkJCQkJICBsaXN0 X2xlbmd0aChuZXdxMS0+dGFyZ2V0TGlzdCkgKyAxLAorCQkJCQkJCSAgY3RlLT5jeWNsZV9j bGF1c2UtPmN5Y2xlX3BhdGhfY29sdW1uLAorCQkJCQkJCSAgZmFsc2UpOworCQluZXdxMS0+ dGFyZ2V0TGlzdCA9IGxhcHBlbmQobmV3cTEtPnRhcmdldExpc3QsIHRsZSk7CisJfQorCisJ cnRlMS0+c3VicXVlcnkgPSBuZXdxMTsKKworCWlmIChjdGUtPnNlYXJjaF9jbGF1c2UpCisJ eworCQlydGUxLT5lcmVmLT5jb2xuYW1lcyA9IGxhcHBlbmQocnRlMS0+ZXJlZi0+Y29sbmFt ZXMsIG1ha2VTdHJpbmcoY3RlLT5zZWFyY2hfY2xhdXNlLT5zZWFyY2hfc2VxX2NvbHVtbikp OworCX0KKwlpZiAoY3RlLT5jeWNsZV9jbGF1c2UpCisJeworCQlydGUxLT5lcmVmLT5jb2xu YW1lcyA9IGxhcHBlbmQocnRlMS0+ZXJlZi0+Y29sbmFtZXMsIG1ha2VTdHJpbmcoY3RlLT5j eWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtfY29sdW1uKSk7CisJCXJ0ZTEtPmVyZWYtPmNvbG5h bWVzID0gbGFwcGVuZChydGUxLT5lcmVmLT5jb2xuYW1lcywgbWFrZVN0cmluZyhjdGUtPmN5 Y2xlX2NsYXVzZS0+Y3ljbGVfcGF0aF9jb2x1bW4pKTsKKwl9CisKKwkvKgorCSAqIE1ha2Ug bmV3IHJpZ2h0IHN1YnF1ZXJ5CisJICovCisJbmV3cTIgPSBtYWtlTm9kZShRdWVyeSk7CisJ bmV3cTItPmNvbW1hbmRUeXBlID0gQ01EX1NFTEVDVDsKKwluZXdxMi0+Y2FuU2V0VGFnID0g dHJ1ZTsKKworCW5ld3J0ZSA9IG1ha2VOb2RlKFJhbmdlVGJsRW50cnkpOworCW5ld3J0ZS0+ cnRla2luZCA9IFJURV9TVUJRVUVSWTsKKwlld2NsID0gY29weU9iamVjdChjdGUtPmN0ZWNv bG5hbWVzKTsKKwlpZiAoY3RlLT5zZWFyY2hfY2xhdXNlKQorCXsKKwkJZXdjbCA9IGxhcHBl bmQoZXdjbCwgbWFrZVN0cmluZyhjdGUtPnNlYXJjaF9jbGF1c2UtPnNlYXJjaF9zZXFfY29s dW1uKSk7CisJfQorCWlmIChjdGUtPmN5Y2xlX2NsYXVzZSkKKwl7CisJCWV3Y2wgPSBsYXBw ZW5kKGV3Y2wsIG1ha2VTdHJpbmcoY3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtfY29s dW1uKSk7CisJCWV3Y2wgPSBsYXBwZW5kKGV3Y2wsIG1ha2VTdHJpbmcoY3RlLT5jeWNsZV9j bGF1c2UtPmN5Y2xlX3BhdGhfY29sdW1uKSk7CisJfQorCW5ld3J0ZS0+YWxpYXMgPSBtYWtl QWxpYXMoIipUUk9DUk4qIiwgZXdjbCk7CisJbmV3cnRlLT5lcmVmID0gbmV3cnRlLT5hbGlh czsKKworCS8qCisJICogRmluZCB0aGUgcmVmZXJlbmNlIHRvIG91ciBDVEUgaW4gdGhlIHJh bmdlIHRhYmxlCisJICovCisJZm9yIChpbnQgcnRpID0gMTsgcnRpIDw9IGxpc3RfbGVuZ3Ro KHJ0ZTItPnN1YnF1ZXJ5LT5ydGFibGUpOyBydGkrKykKKwl7CisJCVJhbmdlVGJsRW50cnkg KmUgPSBydF9mZXRjaChydGksIHJ0ZTItPnN1YnF1ZXJ5LT5ydGFibGUpOworCisJCWlmIChl LT5ydGVraW5kID09IFJURV9DVEUgJiYgc3RyY21wKGN0ZS0+Y3RlbmFtZSwgZS0+Y3RlbmFt ZSkgPT0gMCkKKwkJeworCQkJY3RlX3J0aW5kZXggPSBydGk7CisJCQlicmVhazsKKwkJfQor CX0KKwlBc3NlcnQoY3RlX3J0aW5kZXggPiAwKTsKKworCW5ld3N1YnF1ZXJ5ID0gY29weU9i amVjdChydGUyLT5zdWJxdWVyeSk7CisJSW5jcmVtZW50VmFyU3VibGV2ZWxzVXAoKE5vZGUg KikgbmV3c3VicXVlcnksIDEsIDEpOworCisJLyoKKwkgKiBBZGQgZXh0cmEgY29sdW1ucyB0 byB0YXJnZXQgbGlzdCBvZiBzdWJxdWVyeSBvZiByaWdodCBzdWJxdWVyeQorCSAqLworCWlm IChjdGUtPnNlYXJjaF9jbGF1c2UpCisJeworCQlWYXIJCSAgICp2YXI7CisKKwkJLyogY3Rl bmFtZS5zcWMgKi8KKwkJdmFyID0gbWFrZVZhcihjdGVfcnRpbmRleCwgc3FjX2F0dG5vLAor CQkJCQkgIHNlYXJjaF9zZXFfdHlwZSwgLTEsIEludmFsaWRPaWQsIDApOworCQl0bGUgPSBt YWtlVGFyZ2V0RW50cnkoKEV4cHIgKikgdmFyLAorCQkJCQkJCSAgbGlzdF9sZW5ndGgobmV3 c3VicXVlcnktPnRhcmdldExpc3QpICsgMSwKKwkJCQkJCQkgIGN0ZS0+c2VhcmNoX2NsYXVz ZS0+c2VhcmNoX3NlcV9jb2x1bW4sCisJCQkJCQkJICBmYWxzZSk7CisJCW5ld3N1YnF1ZXJ5 LT50YXJnZXRMaXN0ID0gbGFwcGVuZChuZXdzdWJxdWVyeS0+dGFyZ2V0TGlzdCwgdGxlKTsK Kwl9CisJaWYgKGN0ZS0+Y3ljbGVfY2xhdXNlKQorCXsKKwkJVmFyCQkgICAqdmFyOworCisJ CS8qIGN0ZW5hbWUuY21jICovCisJCXZhciA9IG1ha2VWYXIoY3RlX3J0aW5kZXgsIGNtY19h dHRubywKKwkJCQkJICBjdGUtPmN5Y2xlX2NsYXVzZS0+Y3ljbGVfbWFya190eXBlLAorCQkJ CQkgIGN0ZS0+Y3ljbGVfY2xhdXNlLT5jeWNsZV9tYXJrX3R5cG1vZCwKKwkJCQkJICBjdGUt PmN5Y2xlX2NsYXVzZS0+Y3ljbGVfbWFya19jb2xsYXRpb24sIDApOworCQl0bGUgPSBtYWtl VGFyZ2V0RW50cnkoKEV4cHIgKikgdmFyLAorCQkJCQkJCSAgbGlzdF9sZW5ndGgobmV3c3Vi cXVlcnktPnRhcmdldExpc3QpICsgMSwKKwkJCQkJCQkgIGN0ZS0+Y3ljbGVfY2xhdXNlLT5j eWNsZV9tYXJrX2NvbHVtbiwKKwkJCQkJCQkgIGZhbHNlKTsKKwkJbmV3c3VicXVlcnktPnRh cmdldExpc3QgPSBsYXBwZW5kKG5ld3N1YnF1ZXJ5LT50YXJnZXRMaXN0LCB0bGUpOworCisJ CS8qIGN0ZW5hbWUuY3BhICovCisJCXZhciA9IG1ha2VWYXIoY3RlX3J0aW5kZXgsIGNwYV9h dHRubywKKwkJCQkJICBSRUNPUkRBUlJBWU9JRCwgLTEsIEludmFsaWRPaWQsIDApOworCQl0 bGUgPSBtYWtlVGFyZ2V0RW50cnkoKEV4cHIgKikgdmFyLAorCQkJCQkJCSAgbGlzdF9sZW5n dGgobmV3c3VicXVlcnktPnRhcmdldExpc3QpICsgMSwKKwkJCQkJCQkgIGN0ZS0+Y3ljbGVf Y2xhdXNlLT5jeWNsZV9wYXRoX2NvbHVtbiwKKwkJCQkJCQkgIGZhbHNlKTsKKwkJbmV3c3Vi cXVlcnktPnRhcmdldExpc3QgPSBsYXBwZW5kKG5ld3N1YnF1ZXJ5LT50YXJnZXRMaXN0LCB0 bGUpOworCX0KKworCW5ld3J0ZS0+c3VicXVlcnkgPSBuZXdzdWJxdWVyeTsKKwluZXdydGUt PmluRnJvbUNsID0gdHJ1ZTsKKwluZXdxMi0+cnRhYmxlID0gbGlzdF9tYWtlMShuZXdydGUp OworCisJcnRyID0gbWFrZU5vZGUoUmFuZ2VUYmxSZWYpOworCXJ0ci0+cnRpbmRleCA9IDE7 CisKKwlpZiAoY3RlLT5jeWNsZV9jbGF1c2UpCisJeworCQlUeXBlQ2FjaGVFbnRyeSAqdHlw ZW50cnk7CisJCU9pZAkJCW9wOworCQlPcEV4cHIJICAgKm9wZXhwcjsKKworCQkvKgorCQkg KiBBZGQgY21jIDw+IGNtdiBjb25kaXRpb24KKwkJICovCisKKwkJdHlwZW50cnkgPSBsb29r dXBfdHlwZV9jYWNoZShjdGUtPmN5Y2xlX2NsYXVzZS0+Y3ljbGVfbWFya190eXBlLCBUWVBF Q0FDSEVfRVFfT1BSKTsKKwkJaWYgKCF0eXBlbnRyeS0+ZXFfb3ByKQorCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9GVU5DVElPTiksCisJCQkJ CWVycm1zZygiY291bGQgbm90IGlkZW50aWZ5IGFuIGVxdWFsaXR5IG9wZXJhdG9yIGZvciB0 eXBlICVzIiwKKwkJCQkJCSAgIGZvcm1hdF90eXBlX2JlKGN0ZS0+Y3ljbGVfY2xhdXNlLT5j eWNsZV9tYXJrX3R5cGUpKSk7CisJCW9wID0gZ2V0X25lZ2F0b3IodHlwZW50cnktPmVxX29w cik7CisJCWlmICghb3ApCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNP REVfVU5ERUZJTkVEX0ZVTkNUSU9OKSwKKwkJCQkJZXJybXNnKCJjb3VsZCBub3QgaWRlbnRp ZnkgYW4gaW5lcXVhbGl0eSBvcGVyYXRvciBmb3IgdHlwZSAlcyIsCisJCQkJCQkgICBmb3Jt YXRfdHlwZV9iZShjdGUtPmN5Y2xlX2NsYXVzZS0+Y3ljbGVfbWFya190eXBlKSkpOworCisJ CW9wZXhwciA9IG1ha2VOb2RlKE9wRXhwcik7CisJCW9wZXhwci0+bG9jYXRpb24gPSAtMTsK KwkJb3BleHByLT5vcG5vID0gb3A7CisJCW9wZXhwci0+b3ByZXN1bHR0eXBlID0gQk9PTE9J RDsKKwkJb3BleHByLT5pbnB1dGNvbGxpZCA9IGN0ZS0+Y3ljbGVfY2xhdXNlLT5jeWNsZV9t YXJrX2NvbGxhdGlvbjsKKwkJb3BleHByLT5hcmdzID0gbGlzdF9tYWtlMihtYWtlVmFyKDEs IGNtY19hdHRubywKKwkJCQkJCQkJCQkgIGN0ZS0+Y3ljbGVfY2xhdXNlLT5jeWNsZV9tYXJr X3R5cGUsCisJCQkJCQkJCQkJICBjdGUtPmN5Y2xlX2NsYXVzZS0+Y3ljbGVfbWFya190eXBt b2QsCisJCQkJCQkJCQkJICBjdGUtPmN5Y2xlX2NsYXVzZS0+Y3ljbGVfbWFya19jb2xsYXRp b24sIDApLAorCQkJCQkJCQkgIGN0ZS0+Y3ljbGVfY2xhdXNlLT5jeWNsZV9tYXJrX3ZhbHVl KTsKKworCQluZXdxMi0+am9pbnRyZWUgPSBtYWtlRnJvbUV4cHIobGlzdF9tYWtlMShydHIp LCAoTm9kZSAqKSBvcGV4cHIpOworCX0KKwllbHNlCisJCW5ld3EyLT5qb2ludHJlZSA9IG1h a2VGcm9tRXhwcihsaXN0X21ha2UxKHJ0ciksIE5VTEwpOworCisJLyoKKwkgKiBNYWtlIHRh cmdldCBsaXN0CisJICovCisJZm9yIChpbnQgaSA9IDA7IGkgPCBsaXN0X2xlbmd0aChjdGUt PmN0ZWNvbG5hbWVzKTsgaSsrKQorCXsKKwkJVmFyCQkgICAqdmFyOworCisJCXZhciA9IG1h a2VWYXIoMSwgaSArIDEsCisJCQkJCSAgbGlzdF9udGhfb2lkKGN0ZS0+Y3RlY29sdHlwZXMs IGkpLAorCQkJCQkgIGxpc3RfbnRoX2ludChjdGUtPmN0ZWNvbHR5cG1vZHMsIGkpLAorCQkJ CQkgIGxpc3RfbnRoX29pZChjdGUtPmN0ZWNvbGNvbGxhdGlvbnMsIGkpLAorCQkJCQkgIDAp OworCQl0bGUgPSBtYWtlVGFyZ2V0RW50cnkoKEV4cHIgKikgdmFyLCBpICsgMSwgc3RyVmFs KGxpc3RfbnRoKGN0ZS0+Y3RlY29sbmFtZXMsIGkpKSwgZmFsc2UpOworCQl0bGUtPnJlc29y aWd0YmwgPSBjYXN0Tm9kZShUYXJnZXRFbnRyeSwgbGlzdF9udGgocnRlMi0+c3VicXVlcnkt PnRhcmdldExpc3QsIGkpKS0+cmVzb3JpZ3RibDsKKwkJdGxlLT5yZXNvcmlnY29sID0gY2Fz dE5vZGUoVGFyZ2V0RW50cnksIGxpc3RfbnRoKHJ0ZTItPnN1YnF1ZXJ5LT50YXJnZXRMaXN0 LCBpKSktPnJlc29yaWdjb2w7CisJCW5ld3EyLT50YXJnZXRMaXN0ID0gbGFwcGVuZChuZXdx Mi0+dGFyZ2V0TGlzdCwgdGxlKTsKKwl9CisKKwlpZiAoY3RlLT5zZWFyY2hfY2xhdXNlKQor CXsKKwkJRXhwcgkgICAqdGV4cHI7CisKKwkJaWYgKGN0ZS0+c2VhcmNoX2NsYXVzZS0+c2Vh cmNoX2JyZWFkdGhfZmlyc3QpCisJCXsKKwkJCUZpZWxkU2VsZWN0ICpmczsKKwkJCUZ1bmNF eHByICAgKmZleHByOworCisJCQkvKgorCQkJICogUk9XKHNxYy5sZXZlbCArIDEsIGNvbHMp CisJCQkgKi8KKworCQkJc2VhcmNoX2NvbF9yb3dleHByID0gY29weU9iamVjdChzZWFyY2hf Y29sX3Jvd2V4cHIpOworCisJCQlmcyA9IG1ha2VOb2RlKEZpZWxkU2VsZWN0KTsKKwkJCWZz LT5hcmcgPSAoRXhwciAqKSBtYWtlVmFyKDEsIHNxY19hdHRubywgUkVDT1JET0lELCAtMSwg MCwgMCk7CisJCQlmcy0+ZmllbGRudW0gPSAxOworCQkJZnMtPnJlc3VsdHR5cGUgPSBJTlQ4 T0lEOworCQkJZnMtPnJlc3VsdHR5cG1vZCA9IC0xOworCisJCQlmZXhwciA9IG1ha2VGdW5j RXhwcihGX0lOVDhJTkMsIElOVDhPSUQsIGxpc3RfbWFrZTEoZnMpLCBJbnZhbGlkT2lkLCBJ bnZhbGlkT2lkLCBDT0VSQ0VfRVhQTElDSVRfQ0FMTCk7CisKKwkJCWxmaXJzdChsaXN0X2hl YWQoc2VhcmNoX2NvbF9yb3dleHByLT5hcmdzKSkgPSBmZXhwcjsKKworCQkJdGV4cHIgPSAo RXhwciAqKSBzZWFyY2hfY29sX3Jvd2V4cHI7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgor CQkJICogc3FjIHx8IEFSUkFZW1JPVyhjb2xzKV0KKwkJCSAqLworCQkJdGV4cHIgPSBtYWtl X3BhdGhfY2F0X2V4cHIoc2VhcmNoX2NvbF9yb3dleHByLCBzcWNfYXR0bm8pOworCQl9CisJ CXRsZSA9IG1ha2VUYXJnZXRFbnRyeSh0ZXhwciwKKwkJCQkJCQkgIGxpc3RfbGVuZ3RoKG5l d3EyLT50YXJnZXRMaXN0KSArIDEsCisJCQkJCQkJICBjdGUtPnNlYXJjaF9jbGF1c2UtPnNl YXJjaF9zZXFfY29sdW1uLAorCQkJCQkJCSAgZmFsc2UpOworCQluZXdxMi0+dGFyZ2V0TGlz dCA9IGxhcHBlbmQobmV3cTItPnRhcmdldExpc3QsIHRsZSk7CisJfQorCisJaWYgKGN0ZS0+ Y3ljbGVfY2xhdXNlKQorCXsKKwkJU2NhbGFyQXJyYXlPcEV4cHIgKnNhb2U7CisJCUNhc2VF eHByICAgKmNhc2VleHByOworCQlDYXNlV2hlbiAgICpjYXNld2hlbjsKKworCQkvKgorCQkg KiBDQVNFIFdIRU4gUk9XKGNvbHMpID0gQU5ZIChBUlJBWVtjcGFdKSBUSEVOIGNtdiBFTFNF IGNtZCBFTkQKKwkJICovCisKKwkJc2FvZSA9IG1ha2VOb2RlKFNjYWxhckFycmF5T3BFeHBy KTsKKwkJc2FvZS0+bG9jYXRpb24gPSAtMTsKKwkJc2FvZS0+b3BubyA9IFJFQ09SRF9FUV9P UDsKKwkJc2FvZS0+dXNlT3IgPSB0cnVlOworCQlzYW9lLT5hcmdzID0gbGlzdF9tYWtlMihj eWNsZV9jb2xfcm93ZXhwciwKKwkJCQkJCQkJbWFrZVZhcigxLCBjcGFfYXR0bm8sIFJFQ09S REFSUkFZT0lELCAtMSwgMCwgMCkpOworCisJCWNhc2VleHByID0gbWFrZU5vZGUoQ2FzZUV4 cHIpOworCQljYXNlZXhwci0+bG9jYXRpb24gPSAtMTsKKwkJY2FzZWV4cHItPmNhc2V0eXBl ID0gY3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtfdHlwZTsKKwkJY2FzZWV4cHItPmNh c2Vjb2xsaWQgPSBjdGUtPmN5Y2xlX2NsYXVzZS0+Y3ljbGVfbWFya19jb2xsYXRpb247CisJ CWNhc2V3aGVuID0gbWFrZU5vZGUoQ2FzZVdoZW4pOworCQljYXNld2hlbi0+bG9jYXRpb24g PSAtMTsKKwkJY2FzZXdoZW4tPmV4cHIgPSAoRXhwciAqKSBzYW9lOworCQljYXNld2hlbi0+ cmVzdWx0ID0gKEV4cHIgKikgY3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtfdmFsdWU7 CisJCWNhc2VleHByLT5hcmdzID0gbGlzdF9tYWtlMShjYXNld2hlbik7CisJCWNhc2VleHBy LT5kZWZyZXN1bHQgPSAoRXhwciAqKSBjdGUtPmN5Y2xlX2NsYXVzZS0+Y3ljbGVfbWFya19k ZWZhdWx0OworCisJCXRsZSA9IG1ha2VUYXJnZXRFbnRyeSgoRXhwciAqKSBjYXNlZXhwciwK KwkJCQkJCQkgIGxpc3RfbGVuZ3RoKG5ld3EyLT50YXJnZXRMaXN0KSArIDEsCisJCQkJCQkJ ICBjdGUtPmN5Y2xlX2NsYXVzZS0+Y3ljbGVfbWFya19jb2x1bW4sCisJCQkJCQkJICBmYWxz ZSk7CisJCW5ld3EyLT50YXJnZXRMaXN0ID0gbGFwcGVuZChuZXdxMi0+dGFyZ2V0TGlzdCwg dGxlKTsKKworCQkvKgorCQkgKiBjcGEgfHwgQVJSQVlbUk9XKGNvbHMpXQorCQkgKi8KKwkJ dGxlID0gbWFrZVRhcmdldEVudHJ5KG1ha2VfcGF0aF9jYXRfZXhwcihjeWNsZV9jb2xfcm93 ZXhwciwgY3BhX2F0dG5vKSwKKwkJCQkJCQkgIGxpc3RfbGVuZ3RoKG5ld3EyLT50YXJnZXRM aXN0KSArIDEsCisJCQkJCQkJICBjdGUtPmN5Y2xlX2NsYXVzZS0+Y3ljbGVfcGF0aF9jb2x1 bW4sCisJCQkJCQkJICBmYWxzZSk7CisJCW5ld3EyLT50YXJnZXRMaXN0ID0gbGFwcGVuZChu ZXdxMi0+dGFyZ2V0TGlzdCwgdGxlKTsKKwl9CisKKwlydGUyLT5zdWJxdWVyeSA9IG5ld3Ey OworCisJaWYgKGN0ZS0+c2VhcmNoX2NsYXVzZSkKKwl7CisJCXJ0ZTItPmVyZWYtPmNvbG5h bWVzID0gbGFwcGVuZChydGUyLT5lcmVmLT5jb2xuYW1lcywgbWFrZVN0cmluZyhjdGUtPnNl YXJjaF9jbGF1c2UtPnNlYXJjaF9zZXFfY29sdW1uKSk7CisJfQorCWlmIChjdGUtPmN5Y2xl X2NsYXVzZSkKKwl7CisJCXJ0ZTItPmVyZWYtPmNvbG5hbWVzID0gbGFwcGVuZChydGUyLT5l cmVmLT5jb2xuYW1lcywgbWFrZVN0cmluZyhjdGUtPmN5Y2xlX2NsYXVzZS0+Y3ljbGVfbWFy a19jb2x1bW4pKTsKKwkJcnRlMi0+ZXJlZi0+Y29sbmFtZXMgPSBsYXBwZW5kKHJ0ZTItPmVy ZWYtPmNvbG5hbWVzLCBtYWtlU3RyaW5nKGN0ZS0+Y3ljbGVfY2xhdXNlLT5jeWNsZV9wYXRo X2NvbHVtbikpOworCX0KKworCS8qCisJICogQWRkIHRoZSBhZGRpdGlvbmFsIGNvbHVtbnMg dG8gdGhlIFNldE9wZXJhdGlvblN0bXQKKwkgKi8KKwlpZiAoY3RlLT5zZWFyY2hfY2xhdXNl KQorCXsKKwkJc29zLT5jb2xUeXBlcyA9IGxhcHBlbmRfb2lkKHNvcy0+Y29sVHlwZXMsIHNl YXJjaF9zZXFfdHlwZSk7CisJCXNvcy0+Y29sVHlwbW9kcyA9IGxhcHBlbmRfaW50KHNvcy0+ Y29sVHlwbW9kcywgLTEpOworCQlzb3MtPmNvbENvbGxhdGlvbnMgPSBsYXBwZW5kX29pZChz b3MtPmNvbENvbGxhdGlvbnMsIEludmFsaWRPaWQpOworCQlpZiAoIXNvcy0+YWxsKQorCQkJ c29zLT5ncm91cENsYXVzZXMgPSBsYXBwZW5kKHNvcy0+Z3JvdXBDbGF1c2VzLAorCQkJCQkJ CQkJCW1ha2VTb3J0R3JvdXBDbGF1c2VGb3JTZXRPcChzZWFyY2hfc2VxX3R5cGUpKTsKKwl9 CisJaWYgKGN0ZS0+Y3ljbGVfY2xhdXNlKQorCXsKKwkJc29zLT5jb2xUeXBlcyA9IGxhcHBl bmRfb2lkKHNvcy0+Y29sVHlwZXMsIGN0ZS0+Y3ljbGVfY2xhdXNlLT5jeWNsZV9tYXJrX3R5 cGUpOworCQlzb3MtPmNvbFR5cG1vZHMgPSBsYXBwZW5kX2ludChzb3MtPmNvbFR5cG1vZHMs IGN0ZS0+Y3ljbGVfY2xhdXNlLT5jeWNsZV9tYXJrX3R5cG1vZCk7CisJCXNvcy0+Y29sQ29s bGF0aW9ucyA9IGxhcHBlbmRfb2lkKHNvcy0+Y29sQ29sbGF0aW9ucywgY3RlLT5jeWNsZV9j bGF1c2UtPmN5Y2xlX21hcmtfY29sbGF0aW9uKTsKKwkJaWYgKCFzb3MtPmFsbCkKKwkJCXNv cy0+Z3JvdXBDbGF1c2VzID0gbGFwcGVuZChzb3MtPmdyb3VwQ2xhdXNlcywKKwkJCQkJCQkJ CQltYWtlU29ydEdyb3VwQ2xhdXNlRm9yU2V0T3AoY3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xl X21hcmtfdHlwZSkpOworCisJCXNvcy0+Y29sVHlwZXMgPSBsYXBwZW5kX29pZChzb3MtPmNv bFR5cGVzLCBSRUNPUkRBUlJBWU9JRCk7CisJCXNvcy0+Y29sVHlwbW9kcyA9IGxhcHBlbmRf aW50KHNvcy0+Y29sVHlwbW9kcywgLTEpOworCQlzb3MtPmNvbENvbGxhdGlvbnMgPSBsYXBw ZW5kX29pZChzb3MtPmNvbENvbGxhdGlvbnMsIEludmFsaWRPaWQpOworCQlpZiAoIXNvcy0+ YWxsKQorCQkJc29zLT5ncm91cENsYXVzZXMgPSBsYXBwZW5kKHNvcy0+Z3JvdXBDbGF1c2Vz LAorCQkJCQkJCQkJCW1ha2VTb3J0R3JvdXBDbGF1c2VGb3JTZXRPcChSRUNPUkRBUlJBWU9J RCkpOworCX0KKworCS8qCisJICogQWRkIHRoZSBhZGRpdGlvbmFsIGNvbHVtbnMgdG8gdGhl IENURSBxdWVyeSdzIHRhcmdldCBsaXN0CisJICovCisJaWYgKGN0ZS0+c2VhcmNoX2NsYXVz ZSkKKwl7CisJCWN0ZXF1ZXJ5LT50YXJnZXRMaXN0ID0gbGFwcGVuZChjdGVxdWVyeS0+dGFy Z2V0TGlzdCwKKwkJCQkJCQkJCSAgIG1ha2VUYXJnZXRFbnRyeSgoRXhwciAqKSBtYWtlVmFy KDEsIHNxY19hdHRubywKKwkJCQkJCQkJCQkJCQkJCQkJCXNlYXJjaF9zZXFfdHlwZSwgLTEs IEludmFsaWRPaWQsIDApLAorCQkJCQkJCQkJCQkJCSAgIGxpc3RfbGVuZ3RoKGN0ZXF1ZXJ5 LT50YXJnZXRMaXN0KSArIDEsCisJCQkJCQkJCQkJCQkJICAgY3RlLT5zZWFyY2hfY2xhdXNl LT5zZWFyY2hfc2VxX2NvbHVtbiwKKwkJCQkJCQkJCQkJCQkgICBmYWxzZSkpOworCX0KKwlp ZiAoY3RlLT5jeWNsZV9jbGF1c2UpCisJeworCQljdGVxdWVyeS0+dGFyZ2V0TGlzdCA9IGxh cHBlbmQoY3RlcXVlcnktPnRhcmdldExpc3QsCisJCQkJCQkJCQkgICBtYWtlVGFyZ2V0RW50 cnkoKEV4cHIgKikgbWFrZVZhcigxLCBjbWNfYXR0bm8sCisJCQkJCQkJCQkJCQkJCQkJCQlj dGUtPmN5Y2xlX2NsYXVzZS0+Y3ljbGVfbWFya190eXBlLAorCQkJCQkJCQkJCQkJCQkJCQkJ Y3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtfdHlwbW9kLAorCQkJCQkJCQkJCQkJCQkJ CQkJY3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtfY29sbGF0aW9uLCAwKSwKKwkJCQkJ CQkJCQkJCQkgICBsaXN0X2xlbmd0aChjdGVxdWVyeS0+dGFyZ2V0TGlzdCkgKyAxLAorCQkJ CQkJCQkJCQkJCSAgIGN0ZS0+Y3ljbGVfY2xhdXNlLT5jeWNsZV9tYXJrX2NvbHVtbiwKKwkJ CQkJCQkJCQkJCQkgICBmYWxzZSkpOworCQljdGVxdWVyeS0+dGFyZ2V0TGlzdCA9IGxhcHBl bmQoY3RlcXVlcnktPnRhcmdldExpc3QsCisJCQkJCQkJCQkgICBtYWtlVGFyZ2V0RW50cnko KEV4cHIgKikgbWFrZVZhcigxLCBjcGFfYXR0bm8sCisJCQkJCQkJCQkJCQkJCQkJCQlSRUNP UkRBUlJBWU9JRCwgLTEsIEludmFsaWRPaWQsIDApLAorCQkJCQkJCQkJCQkJCSAgIGxpc3Rf bGVuZ3RoKGN0ZXF1ZXJ5LT50YXJnZXRMaXN0KSArIDEsCisJCQkJCQkJCQkJCQkJICAgY3Rl LT5jeWNsZV9jbGF1c2UtPmN5Y2xlX3BhdGhfY29sdW1uLAorCQkJCQkJCQkJCQkJCSAgIGZh bHNlKSk7CisJfQorCisJLyoKKwkgKiBBZGQgdGhlIGFkZGl0aW9uYWwgY29sdW1ucyB0byB0 aGUgQ1RFJ3Mgb3V0cHV0IGNvbHVtbnMKKwkgKi8KKwljdGUtPmN0ZWNvbG5hbWVzID0gZXdj bDsKKwlpZiAoY3RlLT5zZWFyY2hfY2xhdXNlKQorCXsKKwkJY3RlLT5jdGVjb2x0eXBlcyA9 IGxhcHBlbmRfb2lkKGN0ZS0+Y3RlY29sdHlwZXMsIHNlYXJjaF9zZXFfdHlwZSk7CisJCWN0 ZS0+Y3RlY29sdHlwbW9kcyA9IGxhcHBlbmRfaW50KGN0ZS0+Y3RlY29sdHlwbW9kcywgLTEp OworCQljdGUtPmN0ZWNvbGNvbGxhdGlvbnMgPSBsYXBwZW5kX29pZChjdGUtPmN0ZWNvbGNv bGxhdGlvbnMsIEludmFsaWRPaWQpOworCX0KKwlpZiAoY3RlLT5jeWNsZV9jbGF1c2UpCisJ eworCQljdGUtPmN0ZWNvbHR5cGVzID0gbGFwcGVuZF9vaWQoY3RlLT5jdGVjb2x0eXBlcywg Y3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtfdHlwZSk7CisJCWN0ZS0+Y3RlY29sdHlw bW9kcyA9IGxhcHBlbmRfaW50KGN0ZS0+Y3RlY29sdHlwbW9kcywgY3RlLT5jeWNsZV9jbGF1 c2UtPmN5Y2xlX21hcmtfdHlwbW9kKTsKKwkJY3RlLT5jdGVjb2xjb2xsYXRpb25zID0gbGFw cGVuZF9vaWQoY3RlLT5jdGVjb2xjb2xsYXRpb25zLCBjdGUtPmN5Y2xlX2NsYXVzZS0+Y3lj bGVfbWFya19jb2xsYXRpb24pOworCisJCWN0ZS0+Y3RlY29sdHlwZXMgPSBsYXBwZW5kX29p ZChjdGUtPmN0ZWNvbHR5cGVzLCBSRUNPUkRBUlJBWU9JRCk7CisJCWN0ZS0+Y3RlY29sdHlw bW9kcyA9IGxhcHBlbmRfaW50KGN0ZS0+Y3RlY29sdHlwbW9kcywgLTEpOworCQljdGUtPmN0 ZWNvbGNvbGxhdGlvbnMgPSBsYXBwZW5kX29pZChjdGUtPmN0ZWNvbGNvbGxhdGlvbnMsIElu dmFsaWRPaWQpOworCX0KKworCXJldHVybiBjdGU7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVs ZXV0aWxzLmMKaW5kZXggNjIwMjNjMjBiMi4uZGVkNDA1ZjQzNSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9ydWxldXRpbHMuYwpAQCAtNTE3Miw2ICs1MTcyLDUzIEBAIGdldF93aXRoX2NsYXVz ZShRdWVyeSAqcXVlcnksIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCkKIAkJaWYgKFBSRVRU WV9JTkRFTlQoY29udGV4dCkpCiAJCQlhcHBlbmRDb250ZXh0S2V5d29yZChjb250ZXh0LCAi IiwgMCwgMCwgMCk7CiAJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyknKTsKKworCQlp ZiAoY3RlLT5zZWFyY2hfY2xhdXNlKQorCQl7CisJCQlib29sCQlmaXJzdCA9IHRydWU7CisJ CQlMaXN0Q2VsbCAgICpsYzsKKworCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIgU0VBUkNI ICVzIEZJUlNUIEJZICIsCisJCQkJCQkJIGN0ZS0+c2VhcmNoX2NsYXVzZS0+c2VhcmNoX2Jy ZWFkdGhfZmlyc3QgPyAiQlJFQURUSCIgOiAiREVQVEgiKTsKKworCQkJZm9yZWFjaChsYywg Y3RlLT5zZWFyY2hfY2xhdXNlLT5zZWFyY2hfY29sX2xpc3QpCisJCQl7CisJCQkJaWYgKGZp cnN0KQorCQkJCQlmaXJzdCA9IGZhbHNlOworCQkJCWVsc2UKKwkJCQkJYXBwZW5kU3RyaW5n SW5mb1N0cmluZyhidWYsICIsICIpOworCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVm LAorCQkJCQkJCQkJICAgcXVvdGVfaWRlbnRpZmllcihzdHJWYWwobGZpcnN0KGxjKSkpKTsK KwkJCX0KKworCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIgU0VUICVzIiwgcXVvdGVfaWRl bnRpZmllcihjdGUtPnNlYXJjaF9jbGF1c2UtPnNlYXJjaF9zZXFfY29sdW1uKSk7CisJCX0K KworCQlpZiAoY3RlLT5jeWNsZV9jbGF1c2UpCisJCXsKKwkJCWJvb2wJCWZpcnN0ID0gdHJ1 ZTsKKwkJCUxpc3RDZWxsICAgKmxjOworCisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1 ZiwgIiBDWUNMRSAiKTsKKworCQkJZm9yZWFjaChsYywgY3RlLT5jeWNsZV9jbGF1c2UtPmN5 Y2xlX2NvbF9saXN0KQorCQkJeworCQkJCWlmIChmaXJzdCkKKwkJCQkJZmlyc3QgPSBmYWxz ZTsKKwkJCQllbHNlCisJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiLCAiKTsK KwkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwKKwkJCQkJCQkJCSAgIHF1b3RlX2lk ZW50aWZpZXIoc3RyVmFsKGxmaXJzdChsYykpKSk7CisJCQl9CisKKwkJCWFwcGVuZFN0cmlu Z0luZm8oYnVmLCAiIFNFVCAlcyIsIHF1b3RlX2lkZW50aWZpZXIoY3RlLT5jeWNsZV9jbGF1 c2UtPmN5Y2xlX21hcmtfY29sdW1uKSk7CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1 ZiwgIiBUTyAiKTsKKwkJCWdldF9ydWxlX2V4cHIoY3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xl X21hcmtfdmFsdWUsIGNvbnRleHQsIGZhbHNlKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoYnVmLCAiIERFRkFVTFQgIik7CisJCQlnZXRfcnVsZV9leHByKGN0ZS0+Y3ljbGVfY2xh dXNlLT5jeWNsZV9tYXJrX2RlZmF1bHQsIGNvbnRleHQsIGZhbHNlKTsKKwkJCWFwcGVuZFN0 cmluZ0luZm8oYnVmLCAiIFVTSU5HICVzIiwgcXVvdGVfaWRlbnRpZmllcihjdGUtPmN5Y2xl X2NsYXVzZS0+Y3ljbGVfcGF0aF9jb2x1bW4pKTsKKwkJfQorCiAJCXNlcCA9ICIsICI7CiAJ fQogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oIGIvc3JjL2luY2x1 ZGUvbm9kZXMvbm9kZXMuaAppbmRleCA3ZGRkOGMwMTFiLi5iMzc1YzExM2UxIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVz L25vZGVzLmgKQEAgLTQ3MSw2ICs0NzEsOCBAQCB0eXBlZGVmIGVudW0gTm9kZVRhZwogCVRf V2l0aENsYXVzZSwKIAlUX0luZmVyQ2xhdXNlLAogCVRfT25Db25mbGljdENsYXVzZSwKKwlU X0NURVNlYXJjaENsYXVzZSwKKwlUX0NURUN5Y2xlQ2xhdXNlLAogCVRfQ29tbW9uVGFibGVF eHByLAogCVRfUm9sZVNwZWMsCiAJVF9UcmlnZ2VyVHJhbnNpdGlvbiwKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3Bh cnNlbm9kZXMuaAppbmRleCA2MGMyZjQ1NDY2Li4xYjU0ZTZiZDUxIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oCkBAIC0xNDM1LDkgKzE0MzUsOCBAQCB0eXBlZGVmIHN0cnVjdCBPbkNv bmZsaWN0Q2xhdXNlCiAvKgogICogQ29tbW9uVGFibGVFeHByIC0KICAqCSAgIHJlcHJlc2Vu dGF0aW9uIG9mIFdJVEggbGlzdCBlbGVtZW50Ci0gKgotICogV2UgZG9uJ3QgY3VycmVudGx5 IHN1cHBvcnQgdGhlIFNFQVJDSCBvciBDWUNMRSBjbGF1c2UuCiAgKi8KKwogdHlwZWRlZiBl bnVtIENURU1hdGVyaWFsaXplCiB7CiAJQ1RFTWF0ZXJpYWxpemVEZWZhdWx0LAkJLyogbm8g b3B0aW9uIHNwZWNpZmllZCAqLwpAQCAtMTQ0NSw2ICsxNDQ0LDI5IEBAIHR5cGVkZWYgZW51 bSBDVEVNYXRlcmlhbGl6ZQogCUNURU1hdGVyaWFsaXplTmV2ZXIJCQkvKiBOT1QgTUFURVJJ QUxJWkVEICovCiB9IENURU1hdGVyaWFsaXplOwogCit0eXBlZGVmIHN0cnVjdCBDVEVTZWFy Y2hDbGF1c2UKK3sKKwlOb2RlVGFnCQl0eXBlOworCUxpc3QJICAgKnNlYXJjaF9jb2xfbGlz dDsKKwlib29sCQlzZWFyY2hfYnJlYWR0aF9maXJzdDsKKwljaGFyCSAgICpzZWFyY2hfc2Vx X2NvbHVtbjsKKwlpbnQJCQlsb2NhdGlvbjsKK30gQ1RFU2VhcmNoQ2xhdXNlOworCit0eXBl ZGVmIHN0cnVjdCBDVEVDeWNsZUNsYXVzZQoreworCU5vZGVUYWcJCXR5cGU7CisJTGlzdAkg ICAqY3ljbGVfY29sX2xpc3Q7CisJY2hhcgkgICAqY3ljbGVfbWFya19jb2x1bW47CisJTm9k ZQkgICAqY3ljbGVfbWFya192YWx1ZTsKKwlOb2RlCSAgICpjeWNsZV9tYXJrX2RlZmF1bHQ7 CisJT2lkCQkJY3ljbGVfbWFya190eXBlOwkvKiB0eXBlIG9mIF92YWx1ZSBhbmQgX2RlZmF1 bHQgKi8KKwlpbnQJCQljeWNsZV9tYXJrX3R5cG1vZDsKKwlPaWQJCQljeWNsZV9tYXJrX2Nv bGxhdGlvbjsKKwljaGFyCSAgICpjeWNsZV9wYXRoX2NvbHVtbjsKKwlpbnQJCQlsb2NhdGlv bjsKK30gQ1RFQ3ljbGVDbGF1c2U7CisKIHR5cGVkZWYgc3RydWN0IENvbW1vblRhYmxlRXhw cgogewogCU5vZGVUYWcJCXR5cGU7CkBAIC0xNDYyLDYgKzE0ODQsOCBAQCB0eXBlZGVmIHN0 cnVjdCBDb21tb25UYWJsZUV4cHIKIAlMaXN0CSAgICpjdGVjb2x0eXBlczsJLyogT0lEIGxp c3Qgb2Ygb3V0cHV0IGNvbHVtbiB0eXBlIE9JRHMgKi8KIAlMaXN0CSAgICpjdGVjb2x0eXBt b2RzOwkvKiBpbnRlZ2VyIGxpc3Qgb2Ygb3V0cHV0IGNvbHVtbiB0eXBtb2RzICovCiAJTGlz dAkgICAqY3RlY29sY29sbGF0aW9uczsJLyogT0lEIGxpc3Qgb2YgY29sdW1uIGNvbGxhdGlv biBPSURzICovCisJQ1RFU2VhcmNoQ2xhdXNlICpzZWFyY2hfY2xhdXNlOworCUNURUN5Y2xl Q2xhdXNlICpjeWNsZV9jbGF1c2U7CiB9IENvbW1vblRhYmxlRXhwcjsKIAogLyogQ29udmVu aWVuY2UgbWFjcm8gdG8gZ2V0IHRoZSBvdXRwdXQgdGxpc3Qgb2YgYSBDVEUncyBxdWVyeSAq LwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2FuYWx5emUuaCBiL3NyYy9pbmNs dWRlL3BhcnNlci9hbmFseXplLmgKaW5kZXggOWQwOWEwMjE0MS4uNTJkZjQ4MmNhOCAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL2FuYWx5emUuaAorKysgYi9zcmMvaW5jbHVk ZS9wYXJzZXIvYW5hbHl6ZS5oCkBAIC00Niw2ICs0Niw4IEBAIGV4dGVybiB2b2lkIGFwcGx5 TG9ja2luZ0NsYXVzZShRdWVyeSAqcXJ5LCBJbmRleCBydGluZGV4LAogZXh0ZXJuIExpc3Qg KkJ1aWxkT25Db25mbGljdEV4Y2x1ZGVkVGFyZ2V0bGlzdChSZWxhdGlvbiB0YXJnZXRyZWws CiAJCQkJCQkJCQkJCSAgIEluZGV4IGV4Y2xSZWxJbmRleCk7CiAKK2V4dGVybiBTb3J0R3Jv dXBDbGF1c2UgKm1ha2VTb3J0R3JvdXBDbGF1c2VGb3JTZXRPcChPaWQgcmVzY29sdHlwZSk7 CisKIGV4dGVybiB2b2lkIGZpbGxfZXh0cmFVcGRhdGVkQ29scyhSYW5nZVRibEVudHJ5ICp0 YXJnZXRfcnRlLCBUdXBsZURlc2MgdHVwZGVzYyk7CiAKICNlbmRpZgkJCQkJCQkvKiBBTkFM WVpFX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCBiL3Ny Yy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAppbmRleCA3MWRjZGYyODg5Li45Y2VhYjMxYTJh IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKKysrIGIvc3JjL2lu Y2x1ZGUvcGFyc2VyL2t3bGlzdC5oCkBAIC02MCw2ICs2MCw3IEBAIFBHX0tFWVdPUkQoImJp bmFyeSIsIEJJTkFSWSwgVFlQRV9GVU5DX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoImJpdCIsIEJJVCwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoImJvb2xlYW4iLCBCT09MRUFOX1AsIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVf TEFCRUwpCiBQR19LRVlXT1JEKCJib3RoIiwgQk9USCwgUkVTRVJWRURfS0VZV09SRCwgQkFS RV9MQUJFTCkKK1BHX0tFWVdPUkQoImJyZWFkdGgiLCBCUkVBRFRILCBVTlJFU0VSVkVEX0tF WVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJieSIsIEJZLCBVTlJFU0VSVkVEX0tF WVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJjYWNoZSIsIENBQ0hFLCBVTlJFU0VS VkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJjYWxsIiwgQ0FMTCwgVU5S RVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQpAQCAtMTI4LDYgKzEyOSw3IEBAIFBHX0tF WVdPUkQoImRlbGV0ZSIsIERFTEVURV9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFC RUwpCiBQR19LRVlXT1JEKCJkZWxpbWl0ZXIiLCBERUxJTUlURVIsIFVOUkVTRVJWRURfS0VZ V09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImRlbGltaXRlcnMiLCBERUxJTUlURVJT LCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJkZXBlbmRz IiwgREVQRU5EUywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09S RCgiZGVwdGgiLCBERVBUSCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdf S0VZV09SRCgiZGVzYyIsIERFU0MsIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQ R19LRVlXT1JEKCJkZXRhY2giLCBERVRBQ0gsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9M QUJFTCkKIFBHX0tFWVdPUkQoImRpY3Rpb25hcnkiLCBESUNUSU9OQVJZLCBVTlJFU0VSVkVE X0tFWVdPUkQsIEJBUkVfTEFCRUwpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIv cGFyc2Vfbm9kZS5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaAppbmRleCBk MjU4MTlhYTI4Li45NWU4ZWM4NWYyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIv cGFyc2Vfbm9kZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKQEAg LTc4LDYgKzc4LDcgQEAgdHlwZWRlZiBlbnVtIFBhcnNlRXhwcktpbmQKIAlFWFBSX0tJTkRf Q0FMTF9BUkdVTUVOVCwJLyogcHJvY2VkdXJlIGFyZ3VtZW50IGluIENBTEwgKi8KIAlFWFBS X0tJTkRfQ09QWV9XSEVSRSwJCS8qIFdIRVJFIGNvbmRpdGlvbiBpbiBDT1BZIEZST00gKi8K IAlFWFBSX0tJTkRfR0VORVJBVEVEX0NPTFVNTiwgLyogZ2VuZXJhdGlvbiBleHByZXNzaW9u IGZvciBhIGNvbHVtbiAqLworCUVYUFJfS0lORF9DWUNMRV9NQVJLLAkJLyogY3ljbGUgbWFy ayB2YWx1ZSAqLwogfSBQYXJzZUV4cHJLaW5kOwogCiAKQEAgLTI5NCw2ICsyOTUsNyBAQCBz dHJ1Y3QgUGFyc2VOYW1lc3BhY2VDb2x1bW4KIAlPaWQJCQlwX3ZhcmNvbGxpZDsJLyogT0lE IG9mIGNvbGxhdGlvbiwgb3IgSW52YWxpZE9pZCAqLwogCUluZGV4CQlwX3Zhcm5vc3luOwkJ LyogcmFuZ2V0YWJsZSBpbmRleCBvZiBzeW50YWN0aWMgcmVmZXJlbnQgKi8KIAlBdHRyTnVt YmVyCXBfdmFyYXR0bm9zeW47CS8qIGF0dHJpYnV0ZSBudW1iZXIgb2Ygc3ludGFjdGljIHJl ZmVyZW50ICovCisJYm9vbAkJcF9kb250ZXhwYW5kOwkvKiBub3QgaW5jbHVkZWQgaW4gc3Rh ciBleHBhbnNpb24gKi8KIH07CiAKIC8qIFN1cHBvcnQgZm9yIHBhcnNlcl9lcnJwb3NpdGlv bl9jYWxsYmFjayBmdW5jdGlvbiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmV3cml0 ZS9yZXdyaXRlU2VhcmNoQ3ljbGUuaCBiL3NyYy9pbmNsdWRlL3Jld3JpdGUvcmV3cml0ZVNl YXJjaEN5Y2xlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMjU3 ZmI3Y2RhYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL3Jld3JpdGUvcmV3cml0 ZVNlYXJjaEN5Y2xlLmgKQEAgLTAsMCArMSwyMSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgKgorICogcmV3cml0ZVNlYXJjaEN5Y2xlLmgKKyAqCQlTdXBwb3J0IGZvciByZXdyaXRp bmcgU0VBUkNIIGFuZCBDWUNMRSBjbGF1c2VzLgorICoKKyAqCisgKiBQb3J0aW9ucyBDb3B5 cmlnaHQgKGMpIDE5OTYtMjAyMCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3Jv dXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5p dmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogc3JjL2luY2x1ZGUvcmV3cml0ZS9yZXdy aXRlU2VhcmNoQ3ljbGUuaAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaWZu ZGVmIFJFV1JJVEVTRUFSQ0hDWUNMRV9ICisjZGVmaW5lIFJFV1JJVEVTRUFSQ0hDWUNMRV9I CisKKyNpbmNsdWRlICJub2Rlcy9wYXJzZW5vZGVzLmgiCisKK2V4dGVybiBDb21tb25UYWJs ZUV4cHIgKnJld3JpdGVTZWFyY2hBbmRDeWNsZShDb21tb25UYWJsZUV4cHIgKmN0ZSk7CisK KyNlbmRpZgkJCQkJCQkvKiBSRVdSSVRFU0VBUkNIQ1lDTEVfSCAqLwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRoLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvd2l0aC5vdXQKaW5kZXggNjdlYWViNGYzZS4uYWM5Y2I2MGE4MyAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRoLm91dAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3dpdGgub3V0CkBAIC01NjgsNiArNTY4LDE0OCBAQCBTRUxF Q1QgdDEuaWQsIHQyLnBhdGgsIHQyIEZST00gdCBBUyB0MSBKT0lOIHQgQVMgdDIgT04KICAx NiB8IHszLDcsMTEsMTZ9IHwgKDE2LCJ7Myw3LDExLDE2fSIpCiAoMTYgcm93cykKIAorLS0g U0VBUkNIIGNsYXVzZQorY3JlYXRlIHRlbXAgdGFibGUgZ3JhcGgwKCBmIGludCwgdCBpbnQs IGxhYmVsIHRleHQgKTsKK2luc2VydCBpbnRvIGdyYXBoMCB2YWx1ZXMKKwkoMSwgMiwgJ2Fy YyAxIC0+IDInKSwKKwkoMSwgMywgJ2FyYyAxIC0+IDMnKSwKKwkoMiwgMywgJ2FyYyAyIC0+ IDMnKSwKKwkoMSwgNCwgJ2FyYyAxIC0+IDQnKSwKKwkoNCwgNSwgJ2FyYyA0IC0+IDUnKTsK K3dpdGggcmVjdXJzaXZlIHNlYXJjaF9ncmFwaChmLCB0LCBsYWJlbCkgYXMgKAorCXNlbGVj dCAqIGZyb20gZ3JhcGgwIGcKKwl1bmlvbiBhbGwKKwlzZWxlY3QgZy4qCisJZnJvbSBncmFw aDAgZywgc2VhcmNoX2dyYXBoIHNnCisJd2hlcmUgZy5mID0gc2cudAorKSBzZWFyY2ggZGVw dGggZmlyc3QgYnkgZiwgdCBzZXQgc2VxCitzZWxlY3QgKiBmcm9tIHNlYXJjaF9ncmFwaCBv cmRlciBieSBzZXE7CisgZiB8IHQgfCAgIGxhYmVsICAgIHwgICAgICAgIHNlcSAgICAgICAg CistLS0rLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCisgMSB8IDIgfCBh cmMgMSAtPiAyIHwgeyIoMSwyKSJ9CisgMiB8IDMgfCBhcmMgMiAtPiAzIHwgeyIoMSwyKSIs IigyLDMpIn0KKyAxIHwgMyB8IGFyYyAxIC0+IDMgfCB7IigxLDMpIn0KKyAxIHwgNCB8IGFy YyAxIC0+IDQgfCB7IigxLDQpIn0KKyA0IHwgNSB8IGFyYyA0IC0+IDUgfCB7IigxLDQpIiwi KDQsNSkifQorIDIgfCAzIHwgYXJjIDIgLT4gMyB8IHsiKDIsMykifQorIDQgfCA1IHwgYXJj IDQgLT4gNSB8IHsiKDQsNSkifQorKDcgcm93cykKKword2l0aCByZWN1cnNpdmUgc2VhcmNo X2dyYXBoKGYsIHQsIGxhYmVsKSBhcyAoCisJc2VsZWN0ICogZnJvbSBncmFwaDAgZworCXVu aW9uIGRpc3RpbmN0CisJc2VsZWN0IGcuKgorCWZyb20gZ3JhcGgwIGcsIHNlYXJjaF9ncmFw aCBzZworCXdoZXJlIGcuZiA9IHNnLnQKKykgc2VhcmNoIGRlcHRoIGZpcnN0IGJ5IGYsIHQg c2V0IHNlcQorc2VsZWN0ICogZnJvbSBzZWFyY2hfZ3JhcGggb3JkZXIgYnkgc2VxOworRVJS T1I6ICBTRUFSQ0ggY2xhdXNlIG5vdCBzdXBwb3J0ZWQgd2l0aCBVTklPTiBESVNUSU5DVAor d2l0aCByZWN1cnNpdmUgc2VhcmNoX2dyYXBoKGYsIHQsIGxhYmVsKSBhcyAoCisJc2VsZWN0 ICogZnJvbSBncmFwaDAgZworCXVuaW9uIGFsbAorCXNlbGVjdCBnLioKKwlmcm9tIGdyYXBo MCBnLCBzZWFyY2hfZ3JhcGggc2cKKwl3aGVyZSBnLmYgPSBzZy50CispIHNlYXJjaCBicmVh ZHRoIGZpcnN0IGJ5IGYsIHQgc2V0IHNlcQorc2VsZWN0ICogZnJvbSBzZWFyY2hfZ3JhcGgg b3JkZXIgYnkgc2VxOworIGYgfCB0IHwgICBsYWJlbCAgICB8ICAgc2VxICAgCistLS0rLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0KKyAxIHwgMiB8IGFyYyAxIC0+IDIgfCAoMCwxLDIp CisgMSB8IDMgfCBhcmMgMSAtPiAzIHwgKDAsMSwzKQorIDEgfCA0IHwgYXJjIDEgLT4gNCB8 ICgwLDEsNCkKKyAyIHwgMyB8IGFyYyAyIC0+IDMgfCAoMCwyLDMpCisgNCB8IDUgfCBhcmMg NCAtPiA1IHwgKDAsNCw1KQorIDIgfCAzIHwgYXJjIDIgLT4gMyB8ICgxLDIsMykKKyA0IHwg NSB8IGFyYyA0IC0+IDUgfCAoMSw0LDUpCisoNyByb3dzKQorCit3aXRoIHJlY3Vyc2l2ZSBz ZWFyY2hfZ3JhcGgoZiwgdCwgbGFiZWwpIGFzICgKKwlzZWxlY3QgKiBmcm9tIGdyYXBoMCBn CisJdW5pb24gZGlzdGluY3QKKwlzZWxlY3QgZy4qCisJZnJvbSBncmFwaDAgZywgc2VhcmNo X2dyYXBoIHNnCisJd2hlcmUgZy5mID0gc2cudAorKSBzZWFyY2ggYnJlYWR0aCBmaXJzdCBi eSBmLCB0IHNldCBzZXEKK3NlbGVjdCAqIGZyb20gc2VhcmNoX2dyYXBoIG9yZGVyIGJ5IHNl cTsKK0VSUk9SOiAgU0VBUkNIIGNsYXVzZSBub3Qgc3VwcG9ydGVkIHdpdGggVU5JT04gRElT VElOQ1QKKy0tIHZhcmlvdXMgc3ludGF4IGVycm9ycword2l0aCByZWN1cnNpdmUgc2VhcmNo X2dyYXBoKGYsIHQsIGxhYmVsKSBhcyAoCisJc2VsZWN0ICogZnJvbSBncmFwaDAgZworCXVu aW9uIGFsbAorCXNlbGVjdCBnLioKKwlmcm9tIGdyYXBoMCBnLCBzZWFyY2hfZ3JhcGggc2cK Kwl3aGVyZSBnLmYgPSBzZy50CispIHNlYXJjaCBkZXB0aCBmaXJzdCBieSBmb28sIHRhciBz ZXQgc2VxCitzZWxlY3QgKiBmcm9tIHNlYXJjaF9ncmFwaDsKK0VSUk9SOiAgc2VhcmNoIGNv bHVtbiAiZm9vIiBub3QgaW4gV0lUSCBxdWVyeSBjb2x1bW4gbGlzdAorTElORSA3OiApIHNl YXJjaCBkZXB0aCBmaXJzdCBieSBmb28sIHRhciBzZXQgc2VxCisgICAgICAgICAgXgord2l0 aCByZWN1cnNpdmUgc2VhcmNoX2dyYXBoKGYsIHQsIGxhYmVsKSBhcyAoCisJc2VsZWN0ICog ZnJvbSBncmFwaDAgZworCXVuaW9uIGFsbAorCXNlbGVjdCBnLioKKwlmcm9tIGdyYXBoMCBn LCBzZWFyY2hfZ3JhcGggc2cKKwl3aGVyZSBnLmYgPSBzZy50CispIHNlYXJjaCBkZXB0aCBm aXJzdCBieSBmLCB0IHNldCBsYWJlbAorc2VsZWN0ICogZnJvbSBzZWFyY2hfZ3JhcGg7CitF UlJPUjogIHNlYXJjaCBzZXF1ZW5jZSBjb2x1bW4gbmFtZSAibGFiZWwiIGFscmVhZHkgdXNl ZCBpbiBXSVRIIHF1ZXJ5IGNvbHVtbiBsaXN0CitMSU5FIDc6ICkgc2VhcmNoIGRlcHRoIGZp cnN0IGJ5IGYsIHQgc2V0IGxhYmVsCisgICAgICAgICAgXgord2l0aCByZWN1cnNpdmUgc2Vh cmNoX2dyYXBoKGYsIHQsIGxhYmVsKSBhcyAoCisJc2VsZWN0ICogZnJvbSBncmFwaDAgZwor CXVuaW9uIGFsbAorCXNlbGVjdCBnLioKKwlmcm9tIGdyYXBoMCBnLCBzZWFyY2hfZ3JhcGgg c2cKKwl3aGVyZSBnLmYgPSBzZy50CispIHNlYXJjaCBkZXB0aCBmaXJzdCBieSBmLCB0LCBm IHNldCBzZXEKK3NlbGVjdCAqIGZyb20gc2VhcmNoX2dyYXBoOworRVJST1I6ICBzZWFyY2gg Y29sdW1uICJmIiBzcGVjaWZpZWQgbW9yZSB0aGFuIG9uY2UKK0xJTkUgNzogKSBzZWFyY2gg ZGVwdGggZmlyc3QgYnkgZiwgdCwgZiBzZXQgc2VxCisgICAgICAgICAgXgorLS0gdGVzdCBy dWxldXRpbHMgYW5kIHZpZXcgZXhwYW5zaW9uCitjcmVhdGUgdGVtcCB2aWV3IHZfc2VhcmNo IGFzCit3aXRoIHJlY3Vyc2l2ZSBzZWFyY2hfZ3JhcGgoZiwgdCwgbGFiZWwpIGFzICgKKwlz ZWxlY3QgKiBmcm9tIGdyYXBoMCBnCisJdW5pb24gYWxsCisJc2VsZWN0IGcuKgorCWZyb20g Z3JhcGgwIGcsIHNlYXJjaF9ncmFwaCBzZworCXdoZXJlIGcuZiA9IHNnLnQKKykgc2VhcmNo IGRlcHRoIGZpcnN0IGJ5IGYsIHQgc2V0IHNlcQorc2VsZWN0IGYsIHQsIGxhYmVsIGZyb20g c2VhcmNoX2dyYXBoOworc2VsZWN0IHBnX2dldF92aWV3ZGVmKCd2X3NlYXJjaCcpOworICAg ICAgICAgICAgICAgICBwZ19nZXRfdmlld2RlZiAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgV0lUSCBSRUNV UlNJVkUgc2VhcmNoX2dyYXBoKGYsIHQsIGxhYmVsKSBBUyAoKworICAgICAgICAgIFNFTEVD VCBnLmYsICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgZy50LCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICBnLmxhYmVsICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgRlJPTSBncmFwaDAgZyAg ICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICBVTklPTiBBTEwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgICAgICAgICBTRUxFQ1QgZy5mLCAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgICAgICAgICAgIGcudCwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArCisgICAgICAgICAgICAgZy5sYWJlbCAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgICAgICAgICAgIEZST00gZ3JhcGgwIGcsICAgICAgICAgICAgICAgICAgICAg KworICAgICAgICAgICAgIHNlYXJjaF9ncmFwaCBzZyAgICAgICAgICAgICAgICAgICArCisg ICAgICAgICAgIFdIRVJFIChnLmYgPSBzZy50KSAgICAgICAgICAgICAgICAgICsKKyAgICAg ICAgICkgU0VBUkNIIERFUFRIIEZJUlNUIEJZIGYsIHQgU0VUIHNlcSAgKworICBTRUxFQ1Qg c2VhcmNoX2dyYXBoLmYsICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIHNlYXJjaF9n cmFwaC50LCAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgc2VhcmNoX2dyYXBo LmxhYmVsICAgICAgICAgICAgICAgICAgICAgICAgKworICAgIEZST00gc2VhcmNoX2dyYXBo OworKDEgcm93KQorCitzZWxlY3QgKiBmcm9tIHZfc2VhcmNoOworIGYgfCB0IHwgICBsYWJl bCAgICAKKy0tLSstLS0rLS0tLS0tLS0tLS0tCisgMSB8IDIgfCBhcmMgMSAtPiAyCisgMSB8 IDMgfCBhcmMgMSAtPiAzCisgMiB8IDMgfCBhcmMgMiAtPiAzCisgMSB8IDQgfCBhcmMgMSAt PiA0CisgNCB8IDUgfCBhcmMgNCAtPiA1CisgMiB8IDMgfCBhcmMgMiAtPiAzCisgNCB8IDUg fCBhcmMgNCAtPiA1CisoNyByb3dzKQorCiAtLQogLS0gdGVzdCBjeWNsZSBkZXRlY3Rpb24K IC0tCkBAIC02NTQsNiArNzk2LDI5NyBAQCBzZWxlY3QgKiBmcm9tIHNlYXJjaF9ncmFwaCBv cmRlciBieSBwYXRoOwogIDUgfCAxIHwgYXJjIDUgLT4gMSB8IHsiKDUsMSkiLCIoMSw0KSIs Iig0LDUpIiwiKDUsMSkifSAgICAgICAgIHwgdAogKDI1IHJvd3MpCiAKKy0tIENZQ0xFIGNs YXVzZQord2l0aCByZWN1cnNpdmUgc2VhcmNoX2dyYXBoKGYsIHQsIGxhYmVsKSBhcyAoCisJ c2VsZWN0ICogZnJvbSBncmFwaCBnCisJdW5pb24gYWxsCisJc2VsZWN0IGcuKgorCWZyb20g Z3JhcGggZywgc2VhcmNoX2dyYXBoIHNnCisJd2hlcmUgZy5mID0gc2cudAorKSBjeWNsZSBm LCB0IHNldCBpc19jeWNsZSB0byB0cnVlIGRlZmF1bHQgZmFsc2UgdXNpbmcgcGF0aAorc2Vs ZWN0ICogZnJvbSBzZWFyY2hfZ3JhcGg7CisgZiB8IHQgfCAgIGxhYmVsICAgIHwgaXNfY3lj bGUgfCAgICAgICAgICAgICAgICAgICBwYXRoICAgICAgICAgICAgICAgICAgICAKKy0tLSst LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIDEgfCAyIHwgYXJjIDEgLT4gMiB8IGYgICAgICAgIHwgeyIo MSwyKSJ9CisgMSB8IDMgfCBhcmMgMSAtPiAzIHwgZiAgICAgICAgfCB7IigxLDMpIn0KKyAy IHwgMyB8IGFyYyAyIC0+IDMgfCBmICAgICAgICB8IHsiKDIsMykifQorIDEgfCA0IHwgYXJj IDEgLT4gNCB8IGYgICAgICAgIHwgeyIoMSw0KSJ9CisgNCB8IDUgfCBhcmMgNCAtPiA1IHwg ZiAgICAgICAgfCB7Iig0LDUpIn0KKyA1IHwgMSB8IGFyYyA1IC0+IDEgfCBmICAgICAgICB8 IHsiKDUsMSkifQorIDEgfCAyIHwgYXJjIDEgLT4gMiB8IGYgICAgICAgIHwgeyIoNSwxKSIs IigxLDIpIn0KKyAxIHwgMyB8IGFyYyAxIC0+IDMgfCBmICAgICAgICB8IHsiKDUsMSkiLCIo MSwzKSJ9CisgMSB8IDQgfCBhcmMgMSAtPiA0IHwgZiAgICAgICAgfCB7Iig1LDEpIiwiKDEs NCkifQorIDIgfCAzIHwgYXJjIDIgLT4gMyB8IGYgICAgICAgIHwgeyIoMSwyKSIsIigyLDMp In0KKyA0IHwgNSB8IGFyYyA0IC0+IDUgfCBmICAgICAgICB8IHsiKDEsNCkiLCIoNCw1KSJ9 CisgNSB8IDEgfCBhcmMgNSAtPiAxIHwgZiAgICAgICAgfCB7Iig0LDUpIiwiKDUsMSkifQor IDEgfCAyIHwgYXJjIDEgLT4gMiB8IGYgICAgICAgIHwgeyIoNCw1KSIsIig1LDEpIiwiKDEs MikifQorIDEgfCAzIHwgYXJjIDEgLT4gMyB8IGYgICAgICAgIHwgeyIoNCw1KSIsIig1LDEp IiwiKDEsMykifQorIDEgfCA0IHwgYXJjIDEgLT4gNCB8IGYgICAgICAgIHwgeyIoNCw1KSIs Iig1LDEpIiwiKDEsNCkifQorIDIgfCAzIHwgYXJjIDIgLT4gMyB8IGYgICAgICAgIHwgeyIo NSwxKSIsIigxLDIpIiwiKDIsMykifQorIDQgfCA1IHwgYXJjIDQgLT4gNSB8IGYgICAgICAg IHwgeyIoNSwxKSIsIigxLDQpIiwiKDQsNSkifQorIDUgfCAxIHwgYXJjIDUgLT4gMSB8IGYg ICAgICAgIHwgeyIoMSw0KSIsIig0LDUpIiwiKDUsMSkifQorIDEgfCAyIHwgYXJjIDEgLT4g MiB8IGYgICAgICAgIHwgeyIoMSw0KSIsIig0LDUpIiwiKDUsMSkiLCIoMSwyKSJ9CisgMSB8 IDMgfCBhcmMgMSAtPiAzIHwgZiAgICAgICAgfCB7IigxLDQpIiwiKDQsNSkiLCIoNSwxKSIs IigxLDMpIn0KKyAxIHwgNCB8IGFyYyAxIC0+IDQgfCB0ICAgICAgICB8IHsiKDEsNCkiLCIo NCw1KSIsIig1LDEpIiwiKDEsNCkifQorIDIgfCAzIHwgYXJjIDIgLT4gMyB8IGYgICAgICAg IHwgeyIoNCw1KSIsIig1LDEpIiwiKDEsMikiLCIoMiwzKSJ9CisgNCB8IDUgfCBhcmMgNCAt PiA1IHwgdCAgICAgICAgfCB7Iig0LDUpIiwiKDUsMSkiLCIoMSw0KSIsIig0LDUpIn0KKyA1 IHwgMSB8IGFyYyA1IC0+IDEgfCB0ICAgICAgICB8IHsiKDUsMSkiLCIoMSw0KSIsIig0LDUp IiwiKDUsMSkifQorIDIgfCAzIHwgYXJjIDIgLT4gMyB8IGYgICAgICAgIHwgeyIoMSw0KSIs Iig0LDUpIiwiKDUsMSkiLCIoMSwyKSIsIigyLDMpIn0KKygyNSByb3dzKQorCit3aXRoIHJl Y3Vyc2l2ZSBzZWFyY2hfZ3JhcGgoZiwgdCwgbGFiZWwpIGFzICgKKwlzZWxlY3QgKiBmcm9t IGdyYXBoIGcKKwl1bmlvbiBkaXN0aW5jdAorCXNlbGVjdCBnLioKKwlmcm9tIGdyYXBoIGcs IHNlYXJjaF9ncmFwaCBzZworCXdoZXJlIGcuZiA9IHNnLnQKKykgY3ljbGUgZiwgdCBzZXQg aXNfY3ljbGUgdG8gdHJ1ZSBkZWZhdWx0IGZhbHNlIHVzaW5nIHBhdGgKK3NlbGVjdCAqIGZy b20gc2VhcmNoX2dyYXBoOworRVJST1I6ICBDWUNMRSBjbGF1c2Ugbm90IHN1cHBvcnRlZCB3 aXRoIFVOSU9OIERJU1RJTkNUCistLSBtdWx0aXBsZSBDVEVzCit3aXRoIHJlY3Vyc2l2ZQor Z3JhcGgoZiwgdCwgbGFiZWwpIGFzICgKKyAgdmFsdWVzICgxLCAyLCAnYXJjIDEgLT4gMicp LAorICAgICAgICAgKDEsIDMsICdhcmMgMSAtPiAzJyksCisgICAgICAgICAoMiwgMywgJ2Fy YyAyIC0+IDMnKSwKKyAgICAgICAgICgxLCA0LCAnYXJjIDEgLT4gNCcpLAorICAgICAgICAg KDQsIDUsICdhcmMgNCAtPiA1JyksCisgICAgICAgICAoNSwgMSwgJ2FyYyA1IC0+IDEnKQor KSwKK3NlYXJjaF9ncmFwaChmLCB0LCBsYWJlbCkgYXMgKAorICAgICAgICBzZWxlY3QgKiBm cm9tIGdyYXBoIGcKKyAgICAgICAgdW5pb24gYWxsCisgICAgICAgIHNlbGVjdCBnLioKKyAg ICAgICAgZnJvbSBncmFwaCBnLCBzZWFyY2hfZ3JhcGggc2cKKyAgICAgICAgd2hlcmUgZy5m ID0gc2cudAorKSBjeWNsZSBmLCB0IHNldCBpc19jeWNsZSB0byB0cnVlIGRlZmF1bHQgZmFs c2UgdXNpbmcgcGF0aAorc2VsZWN0IGYsIHQsIGxhYmVsIGZyb20gc2VhcmNoX2dyYXBoOwor IGYgfCB0IHwgICBsYWJlbCAgICAKKy0tLSstLS0rLS0tLS0tLS0tLS0tCisgMSB8IDIgfCBh cmMgMSAtPiAyCisgMSB8IDMgfCBhcmMgMSAtPiAzCisgMiB8IDMgfCBhcmMgMiAtPiAzCisg MSB8IDQgfCBhcmMgMSAtPiA0CisgNCB8IDUgfCBhcmMgNCAtPiA1CisgNSB8IDEgfCBhcmMg NSAtPiAxCisgMiB8IDMgfCBhcmMgMiAtPiAzCisgNCB8IDUgfCBhcmMgNCAtPiA1CisgNSB8 IDEgfCBhcmMgNSAtPiAxCisgMSB8IDQgfCBhcmMgMSAtPiA0CisgMSB8IDMgfCBhcmMgMSAt PiAzCisgMSB8IDIgfCBhcmMgMSAtPiAyCisgNSB8IDEgfCBhcmMgNSAtPiAxCisgMSB8IDQg fCBhcmMgMSAtPiA0CisgMSB8IDMgfCBhcmMgMSAtPiAzCisgMSB8IDIgfCBhcmMgMSAtPiAy CisgNCB8IDUgfCBhcmMgNCAtPiA1CisgMiB8IDMgfCBhcmMgMiAtPiAzCisgMSB8IDQgfCBh cmMgMSAtPiA0CisgMSB8IDMgfCBhcmMgMSAtPiAzCisgMSB8IDIgfCBhcmMgMSAtPiAyCisg NCB8IDUgfCBhcmMgNCAtPiA1CisgMiB8IDMgfCBhcmMgMiAtPiAzCisgNSB8IDEgfCBhcmMg NSAtPiAxCisgMiB8IDMgfCBhcmMgMiAtPiAzCisoMjUgcm93cykKKworLS0gc3RhciBleHBh bnNpb24KK3dpdGggcmVjdXJzaXZlIGEgYXMgKAorCXNlbGVjdCAxIGFzIGIKKwl1bmlvbiBh bGwKKwlzZWxlY3QgKiBmcm9tIGEKKykgY3ljbGUgYiBzZXQgYyB0byB0cnVlIGRlZmF1bHQg ZmFsc2UgdXNpbmcgcAorc2VsZWN0ICogZnJvbSBhOworIGIgfCBjIHwgICAgIHAgICAgIAor LS0tKy0tLSstLS0tLS0tLS0tLQorIDEgfCBmIHwgeygxKX0KKyAxIHwgdCB8IHsoMSksKDEp fQorKDIgcm93cykKKworLS0gc2VhcmNoK2N5Y2xlCit3aXRoIHJlY3Vyc2l2ZSBzZWFyY2hf Z3JhcGgoZiwgdCwgbGFiZWwpIGFzICgKKwlzZWxlY3QgKiBmcm9tIGdyYXBoIGcKKwl1bmlv biBhbGwKKwlzZWxlY3QgZy4qCisJZnJvbSBncmFwaCBnLCBzZWFyY2hfZ3JhcGggc2cKKwl3 aGVyZSBnLmYgPSBzZy50CispIHNlYXJjaCBkZXB0aCBmaXJzdCBieSBmLCB0IHNldCBzZXEK KyAgY3ljbGUgZiwgdCBzZXQgaXNfY3ljbGUgdG8gdHJ1ZSBkZWZhdWx0IGZhbHNlIHVzaW5n IHBhdGgKK3NlbGVjdCAqIGZyb20gc2VhcmNoX2dyYXBoOworIGYgfCB0IHwgICBsYWJlbCAg ICB8ICAgICAgICAgICAgICAgICAgICBzZXEgICAgICAgICAgICAgICAgICAgIHwgaXNfY3lj bGUgfCAgICAgICAgICAgICAgICAgICBwYXRoICAgICAgICAgICAgICAgICAgICAKKy0tLSst LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgMSB8IDIgfCBhcmMgMSAtPiAyIHwgeyIoMSwyKSJ9ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCBmICAgICAgICB8IHsiKDEsMikifQorIDEgfCAzIHwgYXJj IDEgLT4gMyB8IHsiKDEsMykifSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgfCB7IigxLDMpIn0KKyAyIHwgMyB8IGFyYyAyIC0+IDMgfCB7IigyLDMpIn0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGYgICAgICAgIHwgeyIoMiwzKSJ9 CisgMSB8IDQgfCBhcmMgMSAtPiA0IHwgeyIoMSw0KSJ9ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCBmICAgICAgICB8IHsiKDEsNCkifQorIDQgfCA1IHwgYXJjIDQgLT4g NSB8IHsiKDQsNSkifSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZiAgICAg ICAgfCB7Iig0LDUpIn0KKyA1IHwgMSB8IGFyYyA1IC0+IDEgfCB7Iig1LDEpIn0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8IGYgICAgICAgIHwgeyIoNSwxKSJ9CisgMSB8 IDIgfCBhcmMgMSAtPiAyIHwgeyIoNSwxKSIsIigxLDIpIn0gICAgICAgICAgICAgICAgICAg ICAgICAgfCBmICAgICAgICB8IHsiKDUsMSkiLCIoMSwyKSJ9CisgMSB8IDMgfCBhcmMgMSAt PiAzIHwgeyIoNSwxKSIsIigxLDMpIn0gICAgICAgICAgICAgICAgICAgICAgICAgfCBmICAg ICAgICB8IHsiKDUsMSkiLCIoMSwzKSJ9CisgMSB8IDQgfCBhcmMgMSAtPiA0IHwgeyIoNSwx KSIsIigxLDQpIn0gICAgICAgICAgICAgICAgICAgICAgICAgfCBmICAgICAgICB8IHsiKDUs MSkiLCIoMSw0KSJ9CisgMiB8IDMgfCBhcmMgMiAtPiAzIHwgeyIoMSwyKSIsIigyLDMpIn0g ICAgICAgICAgICAgICAgICAgICAgICAgfCBmICAgICAgICB8IHsiKDEsMikiLCIoMiwzKSJ9 CisgNCB8IDUgfCBhcmMgNCAtPiA1IHwgeyIoMSw0KSIsIig0LDUpIn0gICAgICAgICAgICAg ICAgICAgICAgICAgfCBmICAgICAgICB8IHsiKDEsNCkiLCIoNCw1KSJ9CisgNSB8IDEgfCBh cmMgNSAtPiAxIHwgeyIoNCw1KSIsIig1LDEpIn0gICAgICAgICAgICAgICAgICAgICAgICAg fCBmICAgICAgICB8IHsiKDQsNSkiLCIoNSwxKSJ9CisgMSB8IDIgfCBhcmMgMSAtPiAyIHwg eyIoNCw1KSIsIig1LDEpIiwiKDEsMikifSAgICAgICAgICAgICAgICAgfCBmICAgICAgICB8 IHsiKDQsNSkiLCIoNSwxKSIsIigxLDIpIn0KKyAxIHwgMyB8IGFyYyAxIC0+IDMgfCB7Iig0 LDUpIiwiKDUsMSkiLCIoMSwzKSJ9ICAgICAgICAgICAgICAgICB8IGYgICAgICAgIHwgeyIo NCw1KSIsIig1LDEpIiwiKDEsMykifQorIDEgfCA0IHwgYXJjIDEgLT4gNCB8IHsiKDQsNSki LCIoNSwxKSIsIigxLDQpIn0gICAgICAgICAgICAgICAgIHwgZiAgICAgICAgfCB7Iig0LDUp IiwiKDUsMSkiLCIoMSw0KSJ9CisgMiB8IDMgfCBhcmMgMiAtPiAzIHwgeyIoNSwxKSIsIigx LDIpIiwiKDIsMykifSAgICAgICAgICAgICAgICAgfCBmICAgICAgICB8IHsiKDUsMSkiLCIo MSwyKSIsIigyLDMpIn0KKyA0IHwgNSB8IGFyYyA0IC0+IDUgfCB7Iig1LDEpIiwiKDEsNCki LCIoNCw1KSJ9ICAgICAgICAgICAgICAgICB8IGYgICAgICAgIHwgeyIoNSwxKSIsIigxLDQp IiwiKDQsNSkifQorIDUgfCAxIHwgYXJjIDUgLT4gMSB8IHsiKDEsNCkiLCIoNCw1KSIsIig1 LDEpIn0gICAgICAgICAgICAgICAgIHwgZiAgICAgICAgfCB7IigxLDQpIiwiKDQsNSkiLCIo NSwxKSJ9CisgMSB8IDIgfCBhcmMgMSAtPiAyIHwgeyIoMSw0KSIsIig0LDUpIiwiKDUsMSki LCIoMSwyKSJ9ICAgICAgICAgfCBmICAgICAgICB8IHsiKDEsNCkiLCIoNCw1KSIsIig1LDEp IiwiKDEsMikifQorIDEgfCAzIHwgYXJjIDEgLT4gMyB8IHsiKDEsNCkiLCIoNCw1KSIsIig1 LDEpIiwiKDEsMykifSAgICAgICAgIHwgZiAgICAgICAgfCB7IigxLDQpIiwiKDQsNSkiLCIo NSwxKSIsIigxLDMpIn0KKyAxIHwgNCB8IGFyYyAxIC0+IDQgfCB7IigxLDQpIiwiKDQsNSki LCIoNSwxKSIsIigxLDQpIn0gICAgICAgICB8IHQgICAgICAgIHwgeyIoMSw0KSIsIig0LDUp IiwiKDUsMSkiLCIoMSw0KSJ9CisgMiB8IDMgfCBhcmMgMiAtPiAzIHwgeyIoNCw1KSIsIig1 LDEpIiwiKDEsMikiLCIoMiwzKSJ9ICAgICAgICAgfCBmICAgICAgICB8IHsiKDQsNSkiLCIo NSwxKSIsIigxLDIpIiwiKDIsMykifQorIDQgfCA1IHwgYXJjIDQgLT4gNSB8IHsiKDQsNSki LCIoNSwxKSIsIigxLDQpIiwiKDQsNSkifSAgICAgICAgIHwgdCAgICAgICAgfCB7Iig0LDUp IiwiKDUsMSkiLCIoMSw0KSIsIig0LDUpIn0KKyA1IHwgMSB8IGFyYyA1IC0+IDEgfCB7Iig1 LDEpIiwiKDEsNCkiLCIoNCw1KSIsIig1LDEpIn0gICAgICAgICB8IHQgICAgICAgIHwgeyIo NSwxKSIsIigxLDQpIiwiKDQsNSkiLCIoNSwxKSJ9CisgMiB8IDMgfCBhcmMgMiAtPiAzIHwg eyIoMSw0KSIsIig0LDUpIiwiKDUsMSkiLCIoMSwyKSIsIigyLDMpIn0gfCBmICAgICAgICB8 IHsiKDEsNCkiLCIoNCw1KSIsIig1LDEpIiwiKDEsMikiLCIoMiwzKSJ9CisoMjUgcm93cykK Kword2l0aCByZWN1cnNpdmUgc2VhcmNoX2dyYXBoKGYsIHQsIGxhYmVsKSBhcyAoCisJc2Vs ZWN0ICogZnJvbSBncmFwaCBnCisJdW5pb24gYWxsCisJc2VsZWN0IGcuKgorCWZyb20gZ3Jh cGggZywgc2VhcmNoX2dyYXBoIHNnCisJd2hlcmUgZy5mID0gc2cudAorKSBzZWFyY2ggYnJl YWR0aCBmaXJzdCBieSBmLCB0IHNldCBzZXEKKyAgY3ljbGUgZiwgdCBzZXQgaXNfY3ljbGUg dG8gdHJ1ZSBkZWZhdWx0IGZhbHNlIHVzaW5nIHBhdGgKK3NlbGVjdCAqIGZyb20gc2VhcmNo X2dyYXBoOworIGYgfCB0IHwgICBsYWJlbCAgICB8ICAgc2VxICAgfCBpc19jeWNsZSB8ICAg ICAgICAgICAgICAgICAgIHBhdGggICAgICAgICAgICAgICAgICAgIAorLS0tKy0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgfCAyIHwgYXJjIDEgLT4gMiB8ICgwLDEsMikgfCBm ICAgICAgICB8IHsiKDEsMikifQorIDEgfCAzIHwgYXJjIDEgLT4gMyB8ICgwLDEsMykgfCBm ICAgICAgICB8IHsiKDEsMykifQorIDIgfCAzIHwgYXJjIDIgLT4gMyB8ICgwLDIsMykgfCBm ICAgICAgICB8IHsiKDIsMykifQorIDEgfCA0IHwgYXJjIDEgLT4gNCB8ICgwLDEsNCkgfCBm ICAgICAgICB8IHsiKDEsNCkifQorIDQgfCA1IHwgYXJjIDQgLT4gNSB8ICgwLDQsNSkgfCBm ICAgICAgICB8IHsiKDQsNSkifQorIDUgfCAxIHwgYXJjIDUgLT4gMSB8ICgwLDUsMSkgfCBm ICAgICAgICB8IHsiKDUsMSkifQorIDEgfCAyIHwgYXJjIDEgLT4gMiB8ICgxLDEsMikgfCBm ICAgICAgICB8IHsiKDUsMSkiLCIoMSwyKSJ9CisgMSB8IDMgfCBhcmMgMSAtPiAzIHwgKDEs MSwzKSB8IGYgICAgICAgIHwgeyIoNSwxKSIsIigxLDMpIn0KKyAxIHwgNCB8IGFyYyAxIC0+ IDQgfCAoMSwxLDQpIHwgZiAgICAgICAgfCB7Iig1LDEpIiwiKDEsNCkifQorIDIgfCAzIHwg YXJjIDIgLT4gMyB8ICgxLDIsMykgfCBmICAgICAgICB8IHsiKDEsMikiLCIoMiwzKSJ9Cisg NCB8IDUgfCBhcmMgNCAtPiA1IHwgKDEsNCw1KSB8IGYgICAgICAgIHwgeyIoMSw0KSIsIig0 LDUpIn0KKyA1IHwgMSB8IGFyYyA1IC0+IDEgfCAoMSw1LDEpIHwgZiAgICAgICAgfCB7Iig0 LDUpIiwiKDUsMSkifQorIDEgfCAyIHwgYXJjIDEgLT4gMiB8ICgyLDEsMikgfCBmICAgICAg ICB8IHsiKDQsNSkiLCIoNSwxKSIsIigxLDIpIn0KKyAxIHwgMyB8IGFyYyAxIC0+IDMgfCAo MiwxLDMpIHwgZiAgICAgICAgfCB7Iig0LDUpIiwiKDUsMSkiLCIoMSwzKSJ9CisgMSB8IDQg fCBhcmMgMSAtPiA0IHwgKDIsMSw0KSB8IGYgICAgICAgIHwgeyIoNCw1KSIsIig1LDEpIiwi KDEsNCkifQorIDIgfCAzIHwgYXJjIDIgLT4gMyB8ICgyLDIsMykgfCBmICAgICAgICB8IHsi KDUsMSkiLCIoMSwyKSIsIigyLDMpIn0KKyA0IHwgNSB8IGFyYyA0IC0+IDUgfCAoMiw0LDUp IHwgZiAgICAgICAgfCB7Iig1LDEpIiwiKDEsNCkiLCIoNCw1KSJ9CisgNSB8IDEgfCBhcmMg NSAtPiAxIHwgKDIsNSwxKSB8IGYgICAgICAgIHwgeyIoMSw0KSIsIig0LDUpIiwiKDUsMSki fQorIDEgfCAyIHwgYXJjIDEgLT4gMiB8ICgzLDEsMikgfCBmICAgICAgICB8IHsiKDEsNCki LCIoNCw1KSIsIig1LDEpIiwiKDEsMikifQorIDEgfCAzIHwgYXJjIDEgLT4gMyB8ICgzLDEs MykgfCBmICAgICAgICB8IHsiKDEsNCkiLCIoNCw1KSIsIig1LDEpIiwiKDEsMykifQorIDEg fCA0IHwgYXJjIDEgLT4gNCB8ICgzLDEsNCkgfCB0ICAgICAgICB8IHsiKDEsNCkiLCIoNCw1 KSIsIig1LDEpIiwiKDEsNCkifQorIDIgfCAzIHwgYXJjIDIgLT4gMyB8ICgzLDIsMykgfCBm ICAgICAgICB8IHsiKDQsNSkiLCIoNSwxKSIsIigxLDIpIiwiKDIsMykifQorIDQgfCA1IHwg YXJjIDQgLT4gNSB8ICgzLDQsNSkgfCB0ICAgICAgICB8IHsiKDQsNSkiLCIoNSwxKSIsIigx LDQpIiwiKDQsNSkifQorIDUgfCAxIHwgYXJjIDUgLT4gMSB8ICgzLDUsMSkgfCB0ICAgICAg ICB8IHsiKDUsMSkiLCIoMSw0KSIsIig0LDUpIiwiKDUsMSkifQorIDIgfCAzIHwgYXJjIDIg LT4gMyB8ICg0LDIsMykgfCBmICAgICAgICB8IHsiKDEsNCkiLCIoNCw1KSIsIig1LDEpIiwi KDEsMikiLCIoMiwzKSJ9CisoMjUgcm93cykKKworLS0gdmFyaW91cyBzeW50YXggZXJyb3Jz Cit3aXRoIHJlY3Vyc2l2ZSBzZWFyY2hfZ3JhcGgoZiwgdCwgbGFiZWwpIGFzICgKKwlzZWxl Y3QgKiBmcm9tIGdyYXBoIGcKKwl1bmlvbiBhbGwKKwlzZWxlY3QgZy4qCisJZnJvbSBncmFw aCBnLCBzZWFyY2hfZ3JhcGggc2cKKwl3aGVyZSBnLmYgPSBzZy50CispIGN5Y2xlIGZvbywg dGFyIHNldCBpc19jeWNsZSB0byB0cnVlIGRlZmF1bHQgZmFsc2UgdXNpbmcgcGF0aAorc2Vs ZWN0ICogZnJvbSBzZWFyY2hfZ3JhcGg7CitFUlJPUjogIGN5Y2xlIGNvbHVtbiAiZm9vIiBu b3QgaW4gV0lUSCBxdWVyeSBjb2x1bW4gbGlzdAorTElORSA3OiApIGN5Y2xlIGZvbywgdGFy IHNldCBpc19jeWNsZSB0byB0cnVlIGRlZmF1bHQgZmFsc2UgdXNpbmcgcGEuLi4KKyAgICAg ICAgICBeCit3aXRoIHJlY3Vyc2l2ZSBzZWFyY2hfZ3JhcGgoZiwgdCwgbGFiZWwpIGFzICgK KwlzZWxlY3QgKiBmcm9tIGdyYXBoIGcKKwl1bmlvbiBhbGwKKwlzZWxlY3QgZy4qCisJZnJv bSBncmFwaCBnLCBzZWFyY2hfZ3JhcGggc2cKKwl3aGVyZSBnLmYgPSBzZy50CispIGN5Y2xl IGYsIHQgc2V0IGlzX2N5Y2xlIHRvIHRydWUgZGVmYXVsdCA1NSB1c2luZyBwYXRoCitzZWxl Y3QgKiBmcm9tIHNlYXJjaF9ncmFwaDsKK0VSUk9SOiAgQ1lDTEUgdHlwZXMgYm9vbGVhbiBh bmQgaW50ZWdlciBjYW5ub3QgYmUgbWF0Y2hlZAorTElORSA3OiApIGN5Y2xlIGYsIHQgc2V0 IGlzX2N5Y2xlIHRvIHRydWUgZGVmYXVsdCA1NSB1c2luZyBwYXRoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK3dpdGggcmVjdXJzaXZl IHNlYXJjaF9ncmFwaChmLCB0LCBsYWJlbCkgYXMgKAorCXNlbGVjdCAqIGZyb20gZ3JhcGgg ZworCXVuaW9uIGFsbAorCXNlbGVjdCBnLioKKwlmcm9tIGdyYXBoIGcsIHNlYXJjaF9ncmFw aCBzZworCXdoZXJlIGcuZiA9IHNnLnQKKykgY3ljbGUgZiwgdCBzZXQgZiB0byB0cnVlIGRl ZmF1bHQgZmFsc2UgdXNpbmcgcGF0aAorc2VsZWN0ICogZnJvbSBzZWFyY2hfZ3JhcGg7CitF UlJPUjogIGN5Y2xlIGNvbHVtbiBuYW1lICJmIiBhbHJlYWR5IHVzZWQgaW4gV0lUSCBxdWVy eSBjb2x1bW4gbGlzdAorTElORSA3OiApIGN5Y2xlIGYsIHQgc2V0IGYgdG8gdHJ1ZSBkZWZh dWx0IGZhbHNlIHVzaW5nIHBhdGgKKyAgICAgICAgICBeCit3aXRoIHJlY3Vyc2l2ZSBzZWFy Y2hfZ3JhcGgoZiwgdCwgbGFiZWwpIGFzICgKKwlzZWxlY3QgKiBmcm9tIGdyYXBoIGcKKwl1 bmlvbiBhbGwKKwlzZWxlY3QgZy4qCisJZnJvbSBncmFwaCBnLCBzZWFyY2hfZ3JhcGggc2cK Kwl3aGVyZSBnLmYgPSBzZy50CispIGN5Y2xlIGYsIHQsIGYgc2V0IGlzX2N5Y2xlIHRvIHRy dWUgZGVmYXVsdCBmYWxzZSB1c2luZyBwYXRoCitzZWxlY3QgKiBmcm9tIHNlYXJjaF9ncmFw aDsKK0VSUk9SOiAgY3ljbGUgY29sdW1uICJmIiBzcGVjaWZpZWQgbW9yZSB0aGFuIG9uY2UK K0xJTkUgNzogKSBjeWNsZSBmLCB0LCBmIHNldCBpc19jeWNsZSB0byB0cnVlIGRlZmF1bHQg ZmFsc2UgdXNpbmcgcGF0Li4uCisgICAgICAgICAgXgorLS0gdGVzdCBydWxldXRpbHMgYW5k IHZpZXcgZXhwYW5zaW9uCitjcmVhdGUgdGVtcCB2aWV3IHZfY3ljbGUgYXMKK3dpdGggcmVj dXJzaXZlIHNlYXJjaF9ncmFwaChmLCB0LCBsYWJlbCkgYXMgKAorCXNlbGVjdCAqIGZyb20g Z3JhcGggZworCXVuaW9uIGFsbAorCXNlbGVjdCBnLioKKwlmcm9tIGdyYXBoIGcsIHNlYXJj aF9ncmFwaCBzZworCXdoZXJlIGcuZiA9IHNnLnQKKykgY3ljbGUgZiwgdCBzZXQgaXNfY3lj bGUgdG8gdHJ1ZSBkZWZhdWx0IGZhbHNlIHVzaW5nIHBhdGgKK3NlbGVjdCBmLCB0LCBsYWJl bCBmcm9tIHNlYXJjaF9ncmFwaDsKK3NlbGVjdCBwZ19nZXRfdmlld2RlZigndl9jeWNsZScp OworICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X3ZpZXdkZWYgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFdJVEggUkVDVVJTSVZFIHNl YXJjaF9ncmFwaChmLCB0LCBsYWJlbCkgQVMgKCAgICAgICAgICAgICAgICAgICAgKworICAg ICAgICAgIFNFTEVDVCBnLmYsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgICAgICAgICAgICBnLnQsICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgZy5sYWJlbCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAg ICAgRlJPTSBncmFwaCBnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgICAgICAgIFVOSU9OIEFMTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgU0VMRUNUIGcuZiwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgIGcu dCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsK KyAgICAgICAgICAgICBnLmxhYmVsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgICAgICAgICAgICBGUk9NIGdyYXBoIGcsICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgIHNlYXJjaF9n cmFwaCBzZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAg ICAgICAgV0hFUkUgKGcuZiA9IHNnLnQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArCisgICAgICAgICApIENZQ0xFIGYsIHQgU0VUIGlzX2N5Y2xlIFRPIHRydWUg REVGQVVMVCBmYWxzZSBVU0lORyBwYXRoKworICBTRUxFQ1Qgc2VhcmNoX2dyYXBoLmYsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgc2VhcmNo X2dyYXBoLnQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgICAgIHNlYXJjaF9ncmFwaC5sYWJlbCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKworICAgIEZST00gc2VhcmNoX2dyYXBoOworKDEgcm93KQor CitzZWxlY3QgKiBmcm9tIHZfY3ljbGU7CisgZiB8IHQgfCAgIGxhYmVsICAgIAorLS0tKy0t LSstLS0tLS0tLS0tLS0KKyAxIHwgMiB8IGFyYyAxIC0+IDIKKyAxIHwgMyB8IGFyYyAxIC0+ IDMKKyAyIHwgMyB8IGFyYyAyIC0+IDMKKyAxIHwgNCB8IGFyYyAxIC0+IDQKKyA0IHwgNSB8 IGFyYyA0IC0+IDUKKyA1IHwgMSB8IGFyYyA1IC0+IDEKKyAxIHwgMiB8IGFyYyAxIC0+IDIK KyAxIHwgMyB8IGFyYyAxIC0+IDMKKyAxIHwgNCB8IGFyYyAxIC0+IDQKKyAyIHwgMyB8IGFy YyAyIC0+IDMKKyA0IHwgNSB8IGFyYyA0IC0+IDUKKyA1IHwgMSB8IGFyYyA1IC0+IDEKKyAx IHwgMiB8IGFyYyAxIC0+IDIKKyAxIHwgMyB8IGFyYyAxIC0+IDMKKyAxIHwgNCB8IGFyYyAx IC0+IDQKKyAyIHwgMyB8IGFyYyAyIC0+IDMKKyA0IHwgNSB8IGFyYyA0IC0+IDUKKyA1IHwg MSB8IGFyYyA1IC0+IDEKKyAxIHwgMiB8IGFyYyAxIC0+IDIKKyAxIHwgMyB8IGFyYyAxIC0+ IDMKKyAxIHwgNCB8IGFyYyAxIC0+IDQKKyAyIHwgMyB8IGFyYyAyIC0+IDMKKyA0IHwgNSB8 IGFyYyA0IC0+IDUKKyA1IHwgMSB8IGFyYyA1IC0+IDEKKyAyIHwgMyB8IGFyYyAyIC0+IDMK KygyNSByb3dzKQorCiAtLQogLS0gdGVzdCBtdWx0aXBsZSBXSVRIIHF1ZXJpZXMKIC0tCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRoLnNxbCBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3dpdGguc3FsCmluZGV4IGY4NTY0NWVmZGUuLmFmNjMyOTE2NWMgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGguc3FsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3dpdGguc3FsCkBAIC0yOTUsNiArMjk1LDk2IEBAIENSRUFURSBURU1QT1JB UlkgVEFCTEUgdHJlZSgKIFNFTEVDVCB0MS5pZCwgdDIucGF0aCwgdDIgRlJPTSB0IEFTIHQx IEpPSU4gdCBBUyB0MiBPTgogKHQxLmlkPXQyLmlkKTsKIAorLS0gU0VBUkNIIGNsYXVzZQor CitjcmVhdGUgdGVtcCB0YWJsZSBncmFwaDAoIGYgaW50LCB0IGludCwgbGFiZWwgdGV4dCAp OworCitpbnNlcnQgaW50byBncmFwaDAgdmFsdWVzCisJKDEsIDIsICdhcmMgMSAtPiAyJyks CisJKDEsIDMsICdhcmMgMSAtPiAzJyksCisJKDIsIDMsICdhcmMgMiAtPiAzJyksCisJKDEs IDQsICdhcmMgMSAtPiA0JyksCisJKDQsIDUsICdhcmMgNCAtPiA1Jyk7CisKK3dpdGggcmVj dXJzaXZlIHNlYXJjaF9ncmFwaChmLCB0LCBsYWJlbCkgYXMgKAorCXNlbGVjdCAqIGZyb20g Z3JhcGgwIGcKKwl1bmlvbiBhbGwKKwlzZWxlY3QgZy4qCisJZnJvbSBncmFwaDAgZywgc2Vh cmNoX2dyYXBoIHNnCisJd2hlcmUgZy5mID0gc2cudAorKSBzZWFyY2ggZGVwdGggZmlyc3Qg YnkgZiwgdCBzZXQgc2VxCitzZWxlY3QgKiBmcm9tIHNlYXJjaF9ncmFwaCBvcmRlciBieSBz ZXE7CisKK3dpdGggcmVjdXJzaXZlIHNlYXJjaF9ncmFwaChmLCB0LCBsYWJlbCkgYXMgKAor CXNlbGVjdCAqIGZyb20gZ3JhcGgwIGcKKwl1bmlvbiBkaXN0aW5jdAorCXNlbGVjdCBnLioK Kwlmcm9tIGdyYXBoMCBnLCBzZWFyY2hfZ3JhcGggc2cKKwl3aGVyZSBnLmYgPSBzZy50Cisp IHNlYXJjaCBkZXB0aCBmaXJzdCBieSBmLCB0IHNldCBzZXEKK3NlbGVjdCAqIGZyb20gc2Vh cmNoX2dyYXBoIG9yZGVyIGJ5IHNlcTsKKword2l0aCByZWN1cnNpdmUgc2VhcmNoX2dyYXBo KGYsIHQsIGxhYmVsKSBhcyAoCisJc2VsZWN0ICogZnJvbSBncmFwaDAgZworCXVuaW9uIGFs bAorCXNlbGVjdCBnLioKKwlmcm9tIGdyYXBoMCBnLCBzZWFyY2hfZ3JhcGggc2cKKwl3aGVy ZSBnLmYgPSBzZy50CispIHNlYXJjaCBicmVhZHRoIGZpcnN0IGJ5IGYsIHQgc2V0IHNlcQor c2VsZWN0ICogZnJvbSBzZWFyY2hfZ3JhcGggb3JkZXIgYnkgc2VxOworCit3aXRoIHJlY3Vy c2l2ZSBzZWFyY2hfZ3JhcGgoZiwgdCwgbGFiZWwpIGFzICgKKwlzZWxlY3QgKiBmcm9tIGdy YXBoMCBnCisJdW5pb24gZGlzdGluY3QKKwlzZWxlY3QgZy4qCisJZnJvbSBncmFwaDAgZywg c2VhcmNoX2dyYXBoIHNnCisJd2hlcmUgZy5mID0gc2cudAorKSBzZWFyY2ggYnJlYWR0aCBm aXJzdCBieSBmLCB0IHNldCBzZXEKK3NlbGVjdCAqIGZyb20gc2VhcmNoX2dyYXBoIG9yZGVy IGJ5IHNlcTsKKworLS0gdmFyaW91cyBzeW50YXggZXJyb3JzCit3aXRoIHJlY3Vyc2l2ZSBz ZWFyY2hfZ3JhcGgoZiwgdCwgbGFiZWwpIGFzICgKKwlzZWxlY3QgKiBmcm9tIGdyYXBoMCBn CisJdW5pb24gYWxsCisJc2VsZWN0IGcuKgorCWZyb20gZ3JhcGgwIGcsIHNlYXJjaF9ncmFw aCBzZworCXdoZXJlIGcuZiA9IHNnLnQKKykgc2VhcmNoIGRlcHRoIGZpcnN0IGJ5IGZvbywg dGFyIHNldCBzZXEKK3NlbGVjdCAqIGZyb20gc2VhcmNoX2dyYXBoOworCit3aXRoIHJlY3Vy c2l2ZSBzZWFyY2hfZ3JhcGgoZiwgdCwgbGFiZWwpIGFzICgKKwlzZWxlY3QgKiBmcm9tIGdy YXBoMCBnCisJdW5pb24gYWxsCisJc2VsZWN0IGcuKgorCWZyb20gZ3JhcGgwIGcsIHNlYXJj aF9ncmFwaCBzZworCXdoZXJlIGcuZiA9IHNnLnQKKykgc2VhcmNoIGRlcHRoIGZpcnN0IGJ5 IGYsIHQgc2V0IGxhYmVsCitzZWxlY3QgKiBmcm9tIHNlYXJjaF9ncmFwaDsKKword2l0aCBy ZWN1cnNpdmUgc2VhcmNoX2dyYXBoKGYsIHQsIGxhYmVsKSBhcyAoCisJc2VsZWN0ICogZnJv bSBncmFwaDAgZworCXVuaW9uIGFsbAorCXNlbGVjdCBnLioKKwlmcm9tIGdyYXBoMCBnLCBz ZWFyY2hfZ3JhcGggc2cKKwl3aGVyZSBnLmYgPSBzZy50CispIHNlYXJjaCBkZXB0aCBmaXJz dCBieSBmLCB0LCBmIHNldCBzZXEKK3NlbGVjdCAqIGZyb20gc2VhcmNoX2dyYXBoOworCist LSB0ZXN0IHJ1bGV1dGlscyBhbmQgdmlldyBleHBhbnNpb24KK2NyZWF0ZSB0ZW1wIHZpZXcg dl9zZWFyY2ggYXMKK3dpdGggcmVjdXJzaXZlIHNlYXJjaF9ncmFwaChmLCB0LCBsYWJlbCkg YXMgKAorCXNlbGVjdCAqIGZyb20gZ3JhcGgwIGcKKwl1bmlvbiBhbGwKKwlzZWxlY3QgZy4q CisJZnJvbSBncmFwaDAgZywgc2VhcmNoX2dyYXBoIHNnCisJd2hlcmUgZy5mID0gc2cudAor KSBzZWFyY2ggZGVwdGggZmlyc3QgYnkgZiwgdCBzZXQgc2VxCitzZWxlY3QgZiwgdCwgbGFi ZWwgZnJvbSBzZWFyY2hfZ3JhcGg7CisKK3NlbGVjdCBwZ19nZXRfdmlld2RlZigndl9zZWFy Y2gnKTsKKworc2VsZWN0ICogZnJvbSB2X3NlYXJjaDsKKwogLS0KIC0tIHRlc3QgY3ljbGUg ZGV0ZWN0aW9uCiAtLQpAQCAtMzI3LDYgKzQxNywxMjYgQEAgQ1JFQVRFIFRFTVBPUkFSWSBU QUJMRSB0cmVlKAogKQogc2VsZWN0ICogZnJvbSBzZWFyY2hfZ3JhcGggb3JkZXIgYnkgcGF0 aDsKIAorLS0gQ1lDTEUgY2xhdXNlCisKK3dpdGggcmVjdXJzaXZlIHNlYXJjaF9ncmFwaChm LCB0LCBsYWJlbCkgYXMgKAorCXNlbGVjdCAqIGZyb20gZ3JhcGggZworCXVuaW9uIGFsbAor CXNlbGVjdCBnLioKKwlmcm9tIGdyYXBoIGcsIHNlYXJjaF9ncmFwaCBzZworCXdoZXJlIGcu ZiA9IHNnLnQKKykgY3ljbGUgZiwgdCBzZXQgaXNfY3ljbGUgdG8gdHJ1ZSBkZWZhdWx0IGZh bHNlIHVzaW5nIHBhdGgKK3NlbGVjdCAqIGZyb20gc2VhcmNoX2dyYXBoOworCit3aXRoIHJl Y3Vyc2l2ZSBzZWFyY2hfZ3JhcGgoZiwgdCwgbGFiZWwpIGFzICgKKwlzZWxlY3QgKiBmcm9t IGdyYXBoIGcKKwl1bmlvbiBkaXN0aW5jdAorCXNlbGVjdCBnLioKKwlmcm9tIGdyYXBoIGcs IHNlYXJjaF9ncmFwaCBzZworCXdoZXJlIGcuZiA9IHNnLnQKKykgY3ljbGUgZiwgdCBzZXQg aXNfY3ljbGUgdG8gdHJ1ZSBkZWZhdWx0IGZhbHNlIHVzaW5nIHBhdGgKK3NlbGVjdCAqIGZy b20gc2VhcmNoX2dyYXBoOworCistLSBtdWx0aXBsZSBDVEVzCit3aXRoIHJlY3Vyc2l2ZQor Z3JhcGgoZiwgdCwgbGFiZWwpIGFzICgKKyAgdmFsdWVzICgxLCAyLCAnYXJjIDEgLT4gMicp LAorICAgICAgICAgKDEsIDMsICdhcmMgMSAtPiAzJyksCisgICAgICAgICAoMiwgMywgJ2Fy YyAyIC0+IDMnKSwKKyAgICAgICAgICgxLCA0LCAnYXJjIDEgLT4gNCcpLAorICAgICAgICAg KDQsIDUsICdhcmMgNCAtPiA1JyksCisgICAgICAgICAoNSwgMSwgJ2FyYyA1IC0+IDEnKQor KSwKK3NlYXJjaF9ncmFwaChmLCB0LCBsYWJlbCkgYXMgKAorICAgICAgICBzZWxlY3QgKiBm cm9tIGdyYXBoIGcKKyAgICAgICAgdW5pb24gYWxsCisgICAgICAgIHNlbGVjdCBnLioKKyAg ICAgICAgZnJvbSBncmFwaCBnLCBzZWFyY2hfZ3JhcGggc2cKKyAgICAgICAgd2hlcmUgZy5m ID0gc2cudAorKSBjeWNsZSBmLCB0IHNldCBpc19jeWNsZSB0byB0cnVlIGRlZmF1bHQgZmFs c2UgdXNpbmcgcGF0aAorc2VsZWN0IGYsIHQsIGxhYmVsIGZyb20gc2VhcmNoX2dyYXBoOwor CistLSBzdGFyIGV4cGFuc2lvbgord2l0aCByZWN1cnNpdmUgYSBhcyAoCisJc2VsZWN0IDEg YXMgYgorCXVuaW9uIGFsbAorCXNlbGVjdCAqIGZyb20gYQorKSBjeWNsZSBiIHNldCBjIHRv IHRydWUgZGVmYXVsdCBmYWxzZSB1c2luZyBwCitzZWxlY3QgKiBmcm9tIGE7CisKKy0tIHNl YXJjaCtjeWNsZQord2l0aCByZWN1cnNpdmUgc2VhcmNoX2dyYXBoKGYsIHQsIGxhYmVsKSBh cyAoCisJc2VsZWN0ICogZnJvbSBncmFwaCBnCisJdW5pb24gYWxsCisJc2VsZWN0IGcuKgor CWZyb20gZ3JhcGggZywgc2VhcmNoX2dyYXBoIHNnCisJd2hlcmUgZy5mID0gc2cudAorKSBz ZWFyY2ggZGVwdGggZmlyc3QgYnkgZiwgdCBzZXQgc2VxCisgIGN5Y2xlIGYsIHQgc2V0IGlz X2N5Y2xlIHRvIHRydWUgZGVmYXVsdCBmYWxzZSB1c2luZyBwYXRoCitzZWxlY3QgKiBmcm9t IHNlYXJjaF9ncmFwaDsKKword2l0aCByZWN1cnNpdmUgc2VhcmNoX2dyYXBoKGYsIHQsIGxh YmVsKSBhcyAoCisJc2VsZWN0ICogZnJvbSBncmFwaCBnCisJdW5pb24gYWxsCisJc2VsZWN0 IGcuKgorCWZyb20gZ3JhcGggZywgc2VhcmNoX2dyYXBoIHNnCisJd2hlcmUgZy5mID0gc2cu dAorKSBzZWFyY2ggYnJlYWR0aCBmaXJzdCBieSBmLCB0IHNldCBzZXEKKyAgY3ljbGUgZiwg dCBzZXQgaXNfY3ljbGUgdG8gdHJ1ZSBkZWZhdWx0IGZhbHNlIHVzaW5nIHBhdGgKK3NlbGVj dCAqIGZyb20gc2VhcmNoX2dyYXBoOworCistLSB2YXJpb3VzIHN5bnRheCBlcnJvcnMKK3dp dGggcmVjdXJzaXZlIHNlYXJjaF9ncmFwaChmLCB0LCBsYWJlbCkgYXMgKAorCXNlbGVjdCAq IGZyb20gZ3JhcGggZworCXVuaW9uIGFsbAorCXNlbGVjdCBnLioKKwlmcm9tIGdyYXBoIGcs IHNlYXJjaF9ncmFwaCBzZworCXdoZXJlIGcuZiA9IHNnLnQKKykgY3ljbGUgZm9vLCB0YXIg c2V0IGlzX2N5Y2xlIHRvIHRydWUgZGVmYXVsdCBmYWxzZSB1c2luZyBwYXRoCitzZWxlY3Qg KiBmcm9tIHNlYXJjaF9ncmFwaDsKKword2l0aCByZWN1cnNpdmUgc2VhcmNoX2dyYXBoKGYs IHQsIGxhYmVsKSBhcyAoCisJc2VsZWN0ICogZnJvbSBncmFwaCBnCisJdW5pb24gYWxsCisJ c2VsZWN0IGcuKgorCWZyb20gZ3JhcGggZywgc2VhcmNoX2dyYXBoIHNnCisJd2hlcmUgZy5m ID0gc2cudAorKSBjeWNsZSBmLCB0IHNldCBpc19jeWNsZSB0byB0cnVlIGRlZmF1bHQgNTUg dXNpbmcgcGF0aAorc2VsZWN0ICogZnJvbSBzZWFyY2hfZ3JhcGg7CisKK3dpdGggcmVjdXJz aXZlIHNlYXJjaF9ncmFwaChmLCB0LCBsYWJlbCkgYXMgKAorCXNlbGVjdCAqIGZyb20gZ3Jh cGggZworCXVuaW9uIGFsbAorCXNlbGVjdCBnLioKKwlmcm9tIGdyYXBoIGcsIHNlYXJjaF9n cmFwaCBzZworCXdoZXJlIGcuZiA9IHNnLnQKKykgY3ljbGUgZiwgdCBzZXQgZiB0byB0cnVl IGRlZmF1bHQgZmFsc2UgdXNpbmcgcGF0aAorc2VsZWN0ICogZnJvbSBzZWFyY2hfZ3JhcGg7 CisKK3dpdGggcmVjdXJzaXZlIHNlYXJjaF9ncmFwaChmLCB0LCBsYWJlbCkgYXMgKAorCXNl bGVjdCAqIGZyb20gZ3JhcGggZworCXVuaW9uIGFsbAorCXNlbGVjdCBnLioKKwlmcm9tIGdy YXBoIGcsIHNlYXJjaF9ncmFwaCBzZworCXdoZXJlIGcuZiA9IHNnLnQKKykgY3ljbGUgZiwg dCwgZiBzZXQgaXNfY3ljbGUgdG8gdHJ1ZSBkZWZhdWx0IGZhbHNlIHVzaW5nIHBhdGgKK3Nl bGVjdCAqIGZyb20gc2VhcmNoX2dyYXBoOworCistLSB0ZXN0IHJ1bGV1dGlscyBhbmQgdmll dyBleHBhbnNpb24KK2NyZWF0ZSB0ZW1wIHZpZXcgdl9jeWNsZSBhcword2l0aCByZWN1cnNp dmUgc2VhcmNoX2dyYXBoKGYsIHQsIGxhYmVsKSBhcyAoCisJc2VsZWN0ICogZnJvbSBncmFw aCBnCisJdW5pb24gYWxsCisJc2VsZWN0IGcuKgorCWZyb20gZ3JhcGggZywgc2VhcmNoX2dy YXBoIHNnCisJd2hlcmUgZy5mID0gc2cudAorKSBjeWNsZSBmLCB0IHNldCBpc19jeWNsZSB0 byB0cnVlIGRlZmF1bHQgZmFsc2UgdXNpbmcgcGF0aAorc2VsZWN0IGYsIHQsIGxhYmVsIGZy b20gc2VhcmNoX2dyYXBoOworCitzZWxlY3QgcGdfZ2V0X3ZpZXdkZWYoJ3ZfY3ljbGUnKTsK Kworc2VsZWN0ICogZnJvbSB2X2N5Y2xlOworCiAtLQogLS0gdGVzdCBtdWx0aXBsZSBXSVRI IHF1ZXJpZXMKIC0tCgpiYXNlLWNvbW1pdDogZjEzZjJlNDg0MTcyYTFjODY1Y2QwNjc3OTZj ZWUzNTY4NDY3ZGQ1MQotLSAKMi4yOC4wCgo= --------------05468B89AB8B875F4A7610F1--