Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1irkQa-0003X1-OT for pgsql-hackers@arkaria.postgresql.org; Wed, 15 Jan 2020 15:17:53 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1irkQZ-0002gp-7k for pgsql-hackers@arkaria.postgresql.org; Wed, 15 Jan 2020 15:17:51 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1irkQX-0002gf-S3 for pgsql-hackers@lists.postgresql.org; Wed, 15 Jan 2020 15:17:50 +0000 Received: from wout1-smtp.messagingengine.com ([64.147.123.24]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1irkQL-0005oU-7U for pgsql-hackers@postgresql.org; Wed, 15 Jan 2020 15:17:48 +0000 Received: from compute7.internal (compute7.nyi.internal [10.202.2.47]) by mailout.west.internal (Postfix) with ESMTP id 42958664; Wed, 15 Jan 2020 10:17:35 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute7.internal (MEProxy); Wed, 15 Jan 2020 10:17:35 -0500 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=CjJyA4 wAgV/nVzZMkZ4d/eA21dooG2X8XEKZrPVDpcQ=; b=NfhToP5lcZoTARzk5DJxDY LV1Z6g1P1ZhKFcajgOGacG4cHjSdsjQ28e0EWR3Ox1uJ/qetXPXW2rQwl6n/Mazp 4RQM0Pj002+ipzJrqAbamnU98WR1EUYrlzZnCPJfkUbXMa3CLGvJwahdZ9spwTra 345g1oGDAJytFE9JslRuM7S5PCVQfuLVUV1EIDhqxmNPwzBnoPb2VJ56V6cBv4/T nQtQAk5IL0VSwRNugcSemn36StzH/3btRBV6U0GpnpGZYDwY3ro7D8PPXe51Ew2O CNmTVGw6jwzX2ftdJiEEle80H0/tnUkrqIaop4yJxExfUhaQ36Et4fwBQ5vgrq3w == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedugedrtdefgdejfecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefuvfhfhfhokffffgggjggtsehmtderredtfeejnecuhfhrohhmpefrvghtvghr ucfgihhsvghnthhrrghuthcuoehpvghtvghrrdgvihhsvghnthhrrghuthesvdhnughquh grughrrghnthdrtghomheqnecuffhomhgrihhnpedvnhguqhhurggurhgrnhhtrdgtohhm necukfhppeelfedrvdegfedrudeifedrvddvjeenucfrrghrrghmpehmrghilhhfrhhomh epphgvthgvrhdrvghishgvnhhtrhgruhhtsedvnhguqhhurggurhgrnhhtrdgtohhmnecu vehluhhsthgvrhfuihiivgeptd X-ME-Proxy: Received: from april.pezone.net (p5df3a3e3.dip0.t-ipconnect.de [93.243.163.227]) by mail.messagingengine.com (Postfix) with ESMTPA id B922030607BE; Wed, 15 Jan 2020 10:17:30 -0500 (EST) Subject: Re: base backup client as auxiliary backend process To: Masahiko Sawada References: <61b8d18d-c922-ac99-b990-a31ba63cdcbb@2ndquadrant.com> <62e860f2-ae4b-67a1-b65d-04c3d1bf6aff@2ndquadrant.com> <20190918083110.GB22307@paquier.xyz> <3f197f5e-9f55-bef3-adc7-2b44c8f8a74f@2ndquadrant.com> <20191107041630.GK1768@paquier.xyz> <4792e456-d75f-8e6a-2d47-34b8f78c266f@2ndquadrant.com> <116725031573825947@iva1-ef4837f8671e.qloud-c.yandex.net> <8d8c851a-c951-f98e-22c2-f62621c32d3b@2ndquadrant.com> <4c79f835-b443-7b02-9097-aa1a40f46be9@2ndquadrant.com> <7925a361-d48c-db03-30b4-fcd331ef7f02@2ndquadrant.com> Cc: Sergei Kornilov , Michael Paquier , pgsql-hackers From: Peter Eisentraut Organization: 2ndQuadrant Message-ID: <5686daaa-e39f-3814-7ece-e96462f20616@2ndquadrant.com> Date: Wed, 15 Jan 2020 16:17:29 +0100 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="------------9DBBCC9C3C5455B631633476" 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. --------------9DBBCC9C3C5455B631633476 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit On 2020-01-15 01:40, Masahiko Sawada wrote: > Could you rebase the main patch that adds base backup client as > auxiliary backend process since the previous version patch (v3) > conflicts with the current HEAD? attached -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services --------------9DBBCC9C3C5455B631633476 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="v4-0001-Base-backup-client-as-auxiliary-backend-process.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="v4-0001-Base-backup-client-as-auxiliary-backend-process.patc"; filename*1="h" RnJvbSA4OTJiYTQzMTk1NmM3ZDkzNjU1NWY3NThlZmM4NzRmNThiMzY3OWU4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogV2VkLCAxNSBKYW4gMjAyMCAxNjoxNTowNiArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjRdIEJhc2UgYmFja3VwIGNsaWVudCBhcyBhdXhpbGlhcnkgYmFja2VuZCBw cm9jZXNzCgpEaXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdl LWlkL2ZsYXQvNjFiOGQxOGQtYzkyMi1hYzk5LWI5OTAtYTMxYmE2M2NkY2JiQDJuZHF1YWRy YW50LmNvbQotLS0KIGRvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sICAgICAgICAgICAgICAg ICAgICB8ICAxMiArLQogZG9jL3NyYy9zZ21sL3JlZi9pbml0ZGIuc2dtbCAgICAgICAgICAg ICAgICAgIHwgIDE3ICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyAgICAg ICAgICAgICB8IDEwMiArKystLQogc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3RzdHJhcC5j ICAgICAgICAgICAgIHwgICA5ICsKIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdzdGF0LmMg ICAgICAgICAgICAgICB8ICAgNiArCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0 ZXIuYyAgICAgICAgICAgfCAxMTQgKysrKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2Jh c2ViYWNrdXAuYyAgICAgICAgICB8ICA3MCArKysKIC4uLi9saWJwcXdhbHJlY2VpdmVyL2xp YnBxd2FscmVjZWl2ZXIuYyAgICAgICB8IDQwMCArKysrKysrKysrKysrKysrKysKIHNyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3JlcGxfZ3JhbS55ICAgICAgICAgICB8ICAgOSArLQogc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vcmVwbF9zY2FubmVyLmwgICAgICAgIHwgICAxICsKIHNy Yy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9mZC5jICAgICAgICAgICAgICAgICB8ICAzNiArLQog c3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDM5ICst CiBzcmMvYmluL3BnX3Jlc2V0d2FsL3BnX3Jlc2V0d2FsLmMgICAgICAgICAgICAgfCAgIDYg Ky0KIHNyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmggICAgICAgICAgICAgICAgICAgICB8ICAg OCArLQogc3JjL2luY2x1ZGUvbWlzY2FkbWluLmggICAgICAgICAgICAgICAgICAgICAgIHwg ICAyICsKIHNyYy9pbmNsdWRlL3Bnc3RhdC5oICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgMSArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9iYXNlYmFja3VwLmggICAgICAgICAg fCAgIDIgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCAgICAgICAg IHwgICA0ICsKIHNyYy9pbmNsdWRlL3N0b3JhZ2UvZmQuaCAgICAgICAgICAgICAgICAgICAg ICB8ICAgMiArLQogc3JjL2luY2x1ZGUvdXRpbHMvZ3VjLmggICAgICAgICAgICAgICAgICAg ICAgIHwgICAyICstCiBzcmMvdGVzdC9yZWNvdmVyeS90LzAxOF9iYXNlYmFja3VwLnBsICAg ICAgICAgfCAgMjkgKysKIDIxIGZpbGVzIGNoYW5nZWQsIDc4MyBpbnNlcnRpb25zKCspLCA4 OCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWNvdmVyeS90 LzAxOF9iYXNlYmFja3VwLnBsCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Byb3RvY29s LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbAppbmRleCA4MDI3NTIxNWUwLi5m NTRiODIwZWRmIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbAorKysg Yi9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbApAQCAtMjQ2Niw3ICsyNDY2LDcgQEAgPHRp dGxlPlN0cmVhbWluZyBSZXBsaWNhdGlvbiBQcm90b2NvbDwvdGl0bGU+CiAgIDwvdmFybGlz dGVudHJ5PgogCiAgIDx2YXJsaXN0ZW50cnk+Ci0gICAgPHRlcm0+PGxpdGVyYWw+QkFTRV9C QUNLVVA8L2xpdGVyYWw+IFsgPGxpdGVyYWw+TEFCRUw8L2xpdGVyYWw+IDxyZXBsYWNlYWJs ZT4nbGFiZWwnPC9yZXBsYWNlYWJsZT4gXSBbIDxsaXRlcmFsPlBST0dSRVNTPC9saXRlcmFs PiBdIFsgPGxpdGVyYWw+RkFTVDwvbGl0ZXJhbD4gXSBbIDxsaXRlcmFsPldBTDwvbGl0ZXJh bD4gXSBbIDxsaXRlcmFsPk5PV0FJVDwvbGl0ZXJhbD4gXSBbIDxsaXRlcmFsPk1BWF9SQVRF PC9saXRlcmFsPiA8cmVwbGFjZWFibGU+cmF0ZTwvcmVwbGFjZWFibGU+IF0gWyA8bGl0ZXJh bD5UQUJMRVNQQUNFX01BUDwvbGl0ZXJhbD4gXSBbIDxsaXRlcmFsPk5PVkVSSUZZX0NIRUNL U1VNUzwvbGl0ZXJhbD4gXQorICAgIDx0ZXJtPjxsaXRlcmFsPkJBU0VfQkFDS1VQPC9saXRl cmFsPiBbIDxsaXRlcmFsPkxBQkVMPC9saXRlcmFsPiA8cmVwbGFjZWFibGU+J2xhYmVsJzwv cmVwbGFjZWFibGU+IF0gWyA8bGl0ZXJhbD5QUk9HUkVTUzwvbGl0ZXJhbD4gXSBbIDxsaXRl cmFsPkZBU1Q8L2xpdGVyYWw+IF0gWyA8bGl0ZXJhbD5XQUw8L2xpdGVyYWw+IF0gWyA8bGl0 ZXJhbD5OT1dBSVQ8L2xpdGVyYWw+IF0gWyA8bGl0ZXJhbD5NQVhfUkFURTwvbGl0ZXJhbD4g PHJlcGxhY2VhYmxlPnJhdGU8L3JlcGxhY2VhYmxlPiBdIFsgPGxpdGVyYWw+VEFCTEVTUEFD RV9NQVA8L2xpdGVyYWw+IF0gWyA8bGl0ZXJhbD5OT1ZFUklGWV9DSEVDS1NVTVM8L2xpdGVy YWw+IF0gWyA8bGl0ZXJhbD5FWENMVURFX0NPTkY8L2xpdGVyYWw+IF0KICAgICAgPGluZGV4 dGVybT48cHJpbWFyeT5CQVNFX0JBQ0tVUDwvcHJpbWFyeT48L2luZGV4dGVybT4KICAgICA8 L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpAQCAtMjU3Niw2ICsyNTc2LDE2IEBAIDx0aXRsZT5T dHJlYW1pbmcgUmVwbGljYXRpb24gUHJvdG9jb2w8L3RpdGxlPgogICAgICAgICAgPC9wYXJh PgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAg ICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgPHRlcm0+PGxpdGVyYWw+RVhDTFVERV9DT05G PC9saXRlcmFsPjwvdGVybT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgPHBhcmE+ CisgICAgICAgICAgRG8gbm90IGNvcHkgY29uZmlndXJhdGlvbiBmaWxlcywgdGhhdCBpcywg ZmlsZXMgdGhhdCBlbmQgaW4KKyAgICAgICAgICA8ZmlsZW5hbWU+LmNvbmY8L2ZpbGVuYW1l Pi4KKyAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICA8L3Zh cmxpc3RlbnRyeT4KICAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgICA8L3BhcmE+CiAgICAg IDxwYXJhPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9pbml0ZGIuc2dtbCBiL2Rv Yy9zcmMvc2dtbC9yZWYvaW5pdGRiLnNnbWwKaW5kZXggZGE1YzhmNTMwNy4uMTI2MWUwMmQ1 OSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9pbml0ZGIuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvcmVmL2luaXRkYi5zZ21sCkBAIC0yODYsNiArMjg2LDIzIEBAIDx0aXRsZT5P cHRpb25zPC90aXRsZT4KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5 PgogCisgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICA8dGVybT48b3B0aW9uPi1yPC9vcHRp b24+PC90ZXJtPgorICAgICAgPHRlcm0+PG9wdGlvbj4tLXJlcGxpY2E8L29wdGlvbj48L3Rl cm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIEluaXRpYWxp emUgYSBkYXRhIGRpcmVjdG9yeSBmb3IgYSBwaHlzaWNhbCByZXBsaWNhdGlvbiByZXBsaWNh LiAgVGhlCisgICAgICAgIGRhdGEgZGlyZWN0b3J5IHdpbGwgbm90IGJlIGluaXRpYWxpemVk IHdpdGggYSBmdWxsIGRhdGFiYXNlIHN5c3RlbSwKKyAgICAgICAgYnV0IHdpbGwgaW5zdGVh ZCBvbmx5IGNvbnRhaW4gYSBtaW5pbWFsIHNldCBvZiBmaWxlcy4gIEEgc2VydmVyIHRoYXQK KyAgICAgICAgaXMgc3RhcnRlZCBvbiB0aGlzIGRhdGEgZGlyZWN0b3J5IHdpbGwgZmlyc3Qg ZmV0Y2ggYSBiYXNlIGJhY2t1cCBhbmQKKyAgICAgICAgdGhlbiBzd2l0Y2ggdG8gc3RhbmRi eSBtb2RlLiAgVGhlIGNvbm5lY3Rpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBiYXNlCisgICAg ICAgIGJhY2t1cCBoYXMgdG8gYmUgY29uZmlndXJlZCBieSBzZXR0aW5nIDx4cmVmCisgICAg ICAgIGxpbmtlbmQ9Imd1Yy1wcmltYXJ5LWNvbm5pbmZvIi8+LCBhbmQgb3RoZXIgcGFyYW1l dGVycyBhcyBkZXNpcmVkLAorICAgICAgICBiZWZvcmUgdGhlIHNlcnZlciBpcyBzdGFydGVk LgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVu dHJ5PgorCiAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICA8dGVybT48b3B0aW9uPi1TPC9v cHRpb24+PC90ZXJtPgogICAgICAgPHRlcm0+PG9wdGlvbj4tLXN5bmMtb25seTwvb3B0aW9u PjwvdGVybT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cu YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwppbmRleCA3ZjRmNzg0YzBl Li4zNmM2Y2RlZjgyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCkBAIC05MDMs OCArOTAzLDYgQEAgc3RhdGljIHZvaWQgQ2hlY2tSZWNvdmVyeUNvbnNpc3RlbmN5KHZvaWQp Owogc3RhdGljIFhMb2dSZWNvcmQgKlJlYWRDaGVja3BvaW50UmVjb3JkKFhMb2dSZWFkZXJT dGF0ZSAqeGxvZ3JlYWRlciwKIAkJCQkJCQkJCQlYTG9nUmVjUHRyIFJlY1B0ciwgaW50IHdo aWNoQ2hrcHQsIGJvb2wgcmVwb3J0KTsKIHN0YXRpYyBib29sIHJlc2NhbkxhdGVzdFRpbWVM aW5lKHZvaWQpOwotc3RhdGljIHZvaWQgV3JpdGVDb250cm9sRmlsZSh2b2lkKTsKLXN0YXRp YyB2b2lkIFJlYWRDb250cm9sRmlsZSh2b2lkKTsKIHN0YXRpYyBjaGFyICpzdHJfdGltZShw Z190aW1lX3QgdG5vdyk7CiBzdGF0aWMgYm9vbCBDaGVja0ZvclN0YW5kYnlUcmlnZ2VyKHZv aWQpOwogCkBAIC00NDk0LDcgKzQ0OTIsNyBAQCByZXNjYW5MYXRlc3RUaW1lTGluZSh2b2lk KQogICogUmVhZENvbnRyb2xGaWxlKCkgdmVyaWZpZXMgdGhleSBhcmUgY29ycmVjdC4gIFdl IGNvdWxkIHNwbGl0IG91dCB0aGUKICAqIEkvTyBhbmQgY29tcGF0aWJpbGl0eS1jaGVjayBm dW5jdGlvbnMsIGJ1dCB0aGVyZSBzZWVtcyBubyBuZWVkIGN1cnJlbnRseS4KICAqLwotc3Rh dGljIHZvaWQKK3ZvaWQKIFdyaXRlQ29udHJvbEZpbGUodm9pZCkKIHsKIAlpbnQJCQlmZDsK QEAgLTQ1ODUsNyArNDU4Myw3IEBAIFdyaXRlQ29udHJvbEZpbGUodm9pZCkKIAkJCQkJCVhM T0dfQ09OVFJPTF9GSUxFKSkpOwogfQogCi1zdGF0aWMgdm9pZAordm9pZAogUmVhZENvbnRy b2xGaWxlKHZvaWQpCiB7CiAJcGdfY3JjMzJjCWNyYzsKQEAgLTUwNzUsNiArNTA3Myw0MSBA QCBYTE9HU2htZW1Jbml0KHZvaWQpCiAJSW5pdFNoYXJlZExhdGNoKCZYTG9nQ3RsLT5yZWNv dmVyeVdha2V1cExhdGNoKTsKIH0KIAordm9pZAorSW5pdENvbnRyb2xGaWxlKHVpbnQ2NCBz eXNpZGVudGlmaWVyKQoreworCWNoYXIJCW1vY2tfYXV0aF9ub25jZVtNT0NLX0FVVEhfTk9O Q0VfTEVOXTsKKworCS8qCisJICogR2VuZXJhdGUgYSByYW5kb20gbm9uY2UuIFRoaXMgaXMg dXNlZCBmb3IgYXV0aGVudGljYXRpb24gcmVxdWVzdHMgdGhhdAorCSAqIHdpbGwgZmFpbCBi ZWNhdXNlIHRoZSB1c2VyIGRvZXMgbm90IGV4aXN0LiBUaGUgbm9uY2UgaXMgdXNlZCB0byBj cmVhdGUKKwkgKiBhIGdlbnVpbmUtbG9va2luZyBwYXNzd29yZCBjaGFsbGVuZ2UgZm9yIHRo ZSBub24tZXhpc3RlbnQgdXNlciwgaW4gbGlldQorCSAqIG9mIGFuIGFjdHVhbCBzdG9yZWQg cGFzc3dvcmQuCisJICovCisJaWYgKCFwZ19zdHJvbmdfcmFuZG9tKG1vY2tfYXV0aF9ub25j ZSwgTU9DS19BVVRIX05PTkNFX0xFTikpCisJCWVyZXBvcnQoUEFOSUMsCisJCQkJKGVycmNv ZGUoRVJSQ09ERV9JTlRFUk5BTF9FUlJPUiksCisJCQkJIGVycm1zZygiY291bGQgbm90IGdl bmVyYXRlIHNlY3JldCBhdXRob3JpemF0aW9uIHRva2VuIikpKTsKKworCW1lbXNldChDb250 cm9sRmlsZSwgMCwgc2l6ZW9mKENvbnRyb2xGaWxlRGF0YSkpOworCS8qIEluaXRpYWxpemUg cGdfY29udHJvbCBzdGF0dXMgZmllbGRzICovCisJQ29udHJvbEZpbGUtPnN5c3RlbV9pZGVu dGlmaWVyID0gc3lzaWRlbnRpZmllcjsKKwltZW1jcHkoQ29udHJvbEZpbGUtPm1vY2tfYXV0 aGVudGljYXRpb25fbm9uY2UsIG1vY2tfYXV0aF9ub25jZSwgTU9DS19BVVRIX05PTkNFX0xF Tik7CisJQ29udHJvbEZpbGUtPnN0YXRlID0gREJfU0hVVERPV05FRDsKKwlDb250cm9sRmls ZS0+dW5sb2dnZWRMU04gPSBGaXJzdE5vcm1hbFVubG9nZ2VkTFNOOworCisJLyogU2V0IGlt cG9ydGFudCBwYXJhbWV0ZXIgdmFsdWVzIGZvciB1c2Ugd2hlbiByZXBsYXlpbmcgV0FMICov CisJQ29udHJvbEZpbGUtPk1heENvbm5lY3Rpb25zID0gTWF4Q29ubmVjdGlvbnM7CisJQ29u dHJvbEZpbGUtPm1heF93b3JrZXJfcHJvY2Vzc2VzID0gbWF4X3dvcmtlcl9wcm9jZXNzZXM7 CisJQ29udHJvbEZpbGUtPm1heF93YWxfc2VuZGVycyA9IG1heF93YWxfc2VuZGVyczsKKwlD b250cm9sRmlsZS0+bWF4X3ByZXBhcmVkX3hhY3RzID0gbWF4X3ByZXBhcmVkX3hhY3RzOwor CUNvbnRyb2xGaWxlLT5tYXhfbG9ja3NfcGVyX3hhY3QgPSBtYXhfbG9ja3NfcGVyX3hhY3Q7 CisJQ29udHJvbEZpbGUtPndhbF9sZXZlbCA9IHdhbF9sZXZlbDsKKwlDb250cm9sRmlsZS0+ d2FsX2xvZ19oaW50cyA9IHdhbF9sb2dfaGludHM7CisJQ29udHJvbEZpbGUtPnRyYWNrX2Nv bW1pdF90aW1lc3RhbXAgPSB0cmFja19jb21taXRfdGltZXN0YW1wOworCUNvbnRyb2xGaWxl LT5kYXRhX2NoZWNrc3VtX3ZlcnNpb24gPSBib290c3RyYXBfZGF0YV9jaGVja3N1bV92ZXJz aW9uOworfQorCiAvKgogICogVGhpcyBmdW5jIG11c3QgYmUgY2FsbGVkIE9OQ0Ugb24gc3lz dGVtIGluc3RhbGwuICBJdCBjcmVhdGVzIHBnX2NvbnRyb2wKICAqIGFuZCB0aGUgaW5pdGlh bCBYTE9HIHNlZ21lbnQuCkBAIC01MDkwLDcgKzUxMjMsNiBAQCBCb290U3RyYXBYTE9HKHZv aWQpCiAJY2hhcgkgICAqcmVjcHRyOwogCWJvb2wJCXVzZV9leGlzdGVudDsKIAl1aW50NjQJ CXN5c2lkZW50aWZpZXI7Ci0JY2hhcgkJbW9ja19hdXRoX25vbmNlW01PQ0tfQVVUSF9OT05D RV9MRU5dOwogCXN0cnVjdCB0aW1ldmFsIHR2OwogCXBnX2NyYzMyYwljcmM7CiAKQEAgLTUx MTEsMTcgKzUxNDMsNiBAQCBCb290U3RyYXBYTE9HKHZvaWQpCiAJc3lzaWRlbnRpZmllciB8 PSAoKHVpbnQ2NCkgdHYudHZfdXNlYykgPDwgMTI7CiAJc3lzaWRlbnRpZmllciB8PSBnZXRw aWQoKSAmIDB4RkZGOwogCi0JLyoKLQkgKiBHZW5lcmF0ZSBhIHJhbmRvbSBub25jZS4gVGhp cyBpcyB1c2VkIGZvciBhdXRoZW50aWNhdGlvbiByZXF1ZXN0cyB0aGF0Ci0JICogd2lsbCBm YWlsIGJlY2F1c2UgdGhlIHVzZXIgZG9lcyBub3QgZXhpc3QuIFRoZSBub25jZSBpcyB1c2Vk IHRvIGNyZWF0ZQotCSAqIGEgZ2VudWluZS1sb29raW5nIHBhc3N3b3JkIGNoYWxsZW5nZSBm b3IgdGhlIG5vbi1leGlzdGVudCB1c2VyLCBpbiBsaWV1Ci0JICogb2YgYW4gYWN0dWFsIHN0 b3JlZCBwYXNzd29yZC4KLQkgKi8KLQlpZiAoIXBnX3N0cm9uZ19yYW5kb20obW9ja19hdXRo X25vbmNlLCBNT0NLX0FVVEhfTk9OQ0VfTEVOKSkKLQkJZXJlcG9ydChQQU5JQywKLQkJCQko ZXJyY29kZShFUlJDT0RFX0lOVEVSTkFMX0VSUk9SKSwKLQkJCQkgZXJybXNnKCJjb3VsZCBu b3QgZ2VuZXJhdGUgc2VjcmV0IGF1dGhvcml6YXRpb24gdG9rZW4iKSkpOwotCiAJLyogRmly c3QgdGltZWxpbmUgSUQgaXMgYWx3YXlzIDEgKi8KIAlUaGlzVGltZUxpbmVJRCA9IDE7CiAK QEAgLTUyMjksMzAgKzUyNTAsMTIgQEAgQm9vdFN0cmFwWExPRyh2b2lkKQogCW9wZW5Mb2dG aWxlID0gLTE7CiAKIAkvKiBOb3cgY3JlYXRlIHBnX2NvbnRyb2wgKi8KLQotCW1lbXNldChD b250cm9sRmlsZSwgMCwgc2l6ZW9mKENvbnRyb2xGaWxlRGF0YSkpOwotCS8qIEluaXRpYWxp emUgcGdfY29udHJvbCBzdGF0dXMgZmllbGRzICovCi0JQ29udHJvbEZpbGUtPnN5c3RlbV9p ZGVudGlmaWVyID0gc3lzaWRlbnRpZmllcjsKLQltZW1jcHkoQ29udHJvbEZpbGUtPm1vY2tf YXV0aGVudGljYXRpb25fbm9uY2UsIG1vY2tfYXV0aF9ub25jZSwgTU9DS19BVVRIX05PTkNF X0xFTik7Ci0JQ29udHJvbEZpbGUtPnN0YXRlID0gREJfU0hVVERPV05FRDsKKwlJbml0Q29u dHJvbEZpbGUoc3lzaWRlbnRpZmllcik7CiAJQ29udHJvbEZpbGUtPnRpbWUgPSBjaGVja1Bv aW50LnRpbWU7CiAJQ29udHJvbEZpbGUtPmNoZWNrUG9pbnQgPSBjaGVja1BvaW50LnJlZG87 CiAJQ29udHJvbEZpbGUtPmNoZWNrUG9pbnRDb3B5ID0gY2hlY2tQb2ludDsKLQlDb250cm9s RmlsZS0+dW5sb2dnZWRMU04gPSBGaXJzdE5vcm1hbFVubG9nZ2VkTFNOOwotCi0JLyogU2V0 IGltcG9ydGFudCBwYXJhbWV0ZXIgdmFsdWVzIGZvciB1c2Ugd2hlbiByZXBsYXlpbmcgV0FM ICovCi0JQ29udHJvbEZpbGUtPk1heENvbm5lY3Rpb25zID0gTWF4Q29ubmVjdGlvbnM7Ci0J Q29udHJvbEZpbGUtPm1heF93b3JrZXJfcHJvY2Vzc2VzID0gbWF4X3dvcmtlcl9wcm9jZXNz ZXM7Ci0JQ29udHJvbEZpbGUtPm1heF93YWxfc2VuZGVycyA9IG1heF93YWxfc2VuZGVyczsK LQlDb250cm9sRmlsZS0+bWF4X3ByZXBhcmVkX3hhY3RzID0gbWF4X3ByZXBhcmVkX3hhY3Rz OwotCUNvbnRyb2xGaWxlLT5tYXhfbG9ja3NfcGVyX3hhY3QgPSBtYXhfbG9ja3NfcGVyX3hh Y3Q7Ci0JQ29udHJvbEZpbGUtPndhbF9sZXZlbCA9IHdhbF9sZXZlbDsKLQlDb250cm9sRmls ZS0+d2FsX2xvZ19oaW50cyA9IHdhbF9sb2dfaGludHM7Ci0JQ29udHJvbEZpbGUtPnRyYWNr X2NvbW1pdF90aW1lc3RhbXAgPSB0cmFja19jb21taXRfdGltZXN0YW1wOwotCUNvbnRyb2xG aWxlLT5kYXRhX2NoZWNrc3VtX3ZlcnNpb24gPSBib290c3RyYXBfZGF0YV9jaGVja3N1bV92 ZXJzaW9uOwogCiAJLyogc29tZSBhZGRpdGlvbmFsIENvbnRyb2xGaWxlIGZpZWxkcyBhcmUg c2V0IGluIFdyaXRlQ29udHJvbEZpbGUoKSAqLwotCiAJV3JpdGVDb250cm9sRmlsZSgpOwog CiAJLyogQm9vdHN0cmFwIHRoZSBjb21taXQgbG9nLCB0b28gKi8KQEAgLTYyOTcsMjQgKzYz MDAsMzEgQEAgU3RhcnR1cFhMT0codm9pZCkKIAkgKi8KIAlWYWxpZGF0ZVhMT0dEaXJlY3Rv cnlTdHJ1Y3R1cmUoKTsKIAotCS8qLS0tLS0tLS0tLQorCS8qCiAJICogSWYgd2UgcHJldmlv dXNseSBjcmFzaGVkLCBwZXJmb3JtIGEgY291cGxlIG9mIGFjdGlvbnM6CisJICoKIAkgKgkt IFRoZSBwZ193YWwgZGlyZWN0b3J5IG1heSBzdGlsbCBpbmNsdWRlIHNvbWUgdGVtcG9yYXJ5 IFdBTCBzZWdtZW50cwotCSAqIHVzZWQgd2hlbiBjcmVhdGluZyBhIG5ldyBzZWdtZW50LCBz byBwZXJmb3JtIHNvbWUgY2xlYW4gdXAgdG8gbm90Ci0JICogYmxvYXQgdGhpcyBwYXRoLiAg VGhpcyBpcyBkb25lIGZpcnN0IGFzIHRoZXJlIGlzIG5vIHBvaW50IHRvIHN5bmMgdGhpcwot CSAqIHRlbXBvcmFyeSBkYXRhLgotCSAqCS0gVGhlcmUgbWlnaHQgYmUgZGF0YSB3aGljaCB3 ZSBoYWQgd3JpdHRlbiwgaW50ZW5kaW5nIHRvIGZzeW5jIGl0LAotCSAqIGJ1dCB3aGljaCB3 ZSBoYWQgbm90IGFjdHVhbGx5IGZzeW5jJ2QgeWV0LiBUaGVyZWZvcmUsIGEgcG93ZXIgZmFp bHVyZQotCSAqIGluIHRoZSBuZWFyIGZ1dHVyZSBtaWdodCBjYXVzZSBlYXJsaWVyIHVuZmx1 c2hlZCB3cml0ZXMgdG8gYmUgbG9zdCwKLQkgKiBldmVuIHRob3VnaCBtb3JlIHJlY2VudCBk YXRhIHdyaXR0ZW4gdG8gZGlzayBmcm9tIGhlcmUgb24gd291bGQgYmUKLQkgKiBwZXJzaXN0 ZWQuICBUbyBhdm9pZCB0aGF0LCBmc3luYyB0aGUgZW50aXJlIGRhdGEgZGlyZWN0b3J5Lgot CSAqLS0tLS0tLS0tCisJICogICAgdXNlZCB3aGVuIGNyZWF0aW5nIGEgbmV3IHNlZ21lbnQs IHNvIHBlcmZvcm0gc29tZSBjbGVhbiB1cCB0byBub3QKKwkgKiAgICBibG9hdCB0aGlzIHBh dGguICBUaGlzIGlzIGRvbmUgZmlyc3QgYXMgdGhlcmUgaXMgbm8gcG9pbnQgdG8gc3luYwor CSAqICAgIHRoaXMgdGVtcG9yYXJ5IGRhdGEuCisJICoKKwkgKgktIFRoZXJlIG1pZ2h0IGJl IGRhdGEgd2hpY2ggd2UgaGFkIHdyaXR0ZW4sIGludGVuZGluZyB0byBmc3luYyBpdCwgYnV0 CisJICogICAgd2hpY2ggd2UgaGFkIG5vdCBhY3R1YWxseSBmc3luYydkIHlldC4gIFRoZXJl Zm9yZSwgYSBwb3dlciBmYWlsdXJlCisJICogICAgaW4gdGhlIG5lYXIgZnV0dXJlIG1pZ2h0 IGNhdXNlIGVhcmxpZXIgdW5mbHVzaGVkIHdyaXRlcyB0byBiZSBsb3N0LAorCSAqICAgIGV2 ZW4gdGhvdWdoIG1vcmUgcmVjZW50IGRhdGEgd3JpdHRlbiB0byBkaXNrIGZyb20gaGVyZSBv biB3b3VsZCBiZQorCSAqICAgIHBlcnNpc3RlZC4gIFRvIGF2b2lkIHRoYXQsIGZzeW5jIHRo ZSBlbnRpcmUgZGF0YSBkaXJlY3RvcnkuICBFcnJvcnMKKwkgKiAgICBhcmUgbG9nZ2VkIGJ1 dCBub3QgY29uc2lkZXJlZCBmYXRhbC4gIEFib3J0aW5nIG9uIGVycm9yIHdvdWxkIHJlc3Vs dAorCSAqICAgIGluIGZhaWx1cmUgdG8gc3RhcnQgZm9yIGhhcm1sZXNzIGNhc2VzIHN1Y2gg YXMgcmVhZC1vbmx5IGZpbGVzIGluCisJICogICAgdGhlIGRhdGEgZGlyZWN0b3J5LCBhbmQg dGhhdCdzIG5vdCBnb29kIGVpdGhlci4KKwkgKgorCSAqICAgIE5vdGUgdGhhdCBpZiB3ZSBw cmV2aW91c2x5IGNyYXNoZWQgZHVlIHRvIGEgUEFOSUMgb24gZnN5bmMoKSwgd2UnbGwKKwkg KiAgICBiZSByZXdyaXRpbmcgYWxsIGNoYW5nZXMgYWdhaW4gZHVyaW5nIHJlY292ZXJ5Lgog CSAqLwogCWlmIChDb250cm9sRmlsZS0+c3RhdGUgIT0gREJfU0hVVERPV05FRCAmJgogCQlD b250cm9sRmlsZS0+c3RhdGUgIT0gREJfU0hVVERPV05FRF9JTl9SRUNPVkVSWSkKIAl7CiAJ CVJlbW92ZVRlbXBYbG9nRmlsZXMoKTsKLQkJU3luY0RhdGFEaXJlY3RvcnkoKTsKKwkJU3lu Y0RhdGFEaXJlY3RvcnkodHJ1ZSwgTE9HKTsKIAl9CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jIGIvc3JjL2JhY2tlbmQvYm9vdHN0cmFw L2Jvb3RzdHJhcC5jCmluZGV4IGJmYzYyOWM3NTMuLmM0ZDJiZmYwYjMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290c3RyYXAuYworKysgYi9zcmMvYmFja2VuZC9i b290c3RyYXAvYm9vdHN0cmFwLmMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJwb3N0 bWFzdGVyL2Jnd3JpdGVyLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9zdGFydHVwLmgiCiAj aW5jbHVkZSAicG9zdG1hc3Rlci93YWx3cml0ZXIuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlv bi9iYXNlYmFja3VwLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCIK ICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmcGFn ZS5oIgpAQCAtMzI2LDYgKzMyNyw5IEBAIEF1eGlsaWFyeVByb2Nlc3NNYWluKGludCBhcmdj LCBjaGFyICphcmd2W10pCiAJCQljYXNlIFN0YXJ0dXBQcm9jZXNzOgogCQkJCXN0YXRtc2cg PSBwZ3N0YXRfZ2V0X2JhY2tlbmRfZGVzYyhCX1NUQVJUVVApOwogCQkJCWJyZWFrOworCQkJ Y2FzZSBCYXNlQmFja3VwUHJvY2VzczoKKwkJCQlzdGF0bXNnID0gcGdzdGF0X2dldF9iYWNr ZW5kX2Rlc2MoQl9CQVNFX0JBQ0tVUCk7CisJCQkJYnJlYWs7CiAJCQljYXNlIEJnV3JpdGVy UHJvY2VzczoKIAkJCQlzdGF0bXNnID0gcGdzdGF0X2dldF9iYWNrZW5kX2Rlc2MoQl9CR19X UklURVIpOwogCQkJCWJyZWFrOwpAQCAtNDUxLDYgKzQ1NSwxMSBAQCBBdXhpbGlhcnlQcm9j ZXNzTWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkJU3RhcnR1cFByb2Nlc3NNYWlu KCk7CiAJCQlwcm9jX2V4aXQoMSk7CQkvKiBzaG91bGQgbmV2ZXIgcmV0dXJuICovCiAKKwkJ Y2FzZSBCYXNlQmFja3VwUHJvY2VzczoKKwkJCS8qIGRvbid0IHNldCBzaWduYWxzLCBiYXNl YmFja3VwIGhhcyBpdHMgb3duIGFnZW5kYSAqLworCQkJQmFzZUJhY2t1cE1haW4oKTsKKwkJ CXByb2NfZXhpdCgxKTsJCS8qIHNob3VsZCBuZXZlciByZXR1cm4gKi8KKwogCQljYXNlIEJn V3JpdGVyUHJvY2VzczoKIAkJCS8qIGRvbid0IHNldCBzaWduYWxzLCBiZ3dyaXRlciBoYXMg aXRzIG93biBhZ2VuZGEgKi8KIAkJCUJhY2tncm91bmRXcml0ZXJNYWluKCk7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bnc3RhdC5jIGIvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9wZ3N0YXQuYwppbmRleCA1MWM0ODZiZWJkLi5mNGJiNDE5MmI3IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bnc3RhdC5jCisrKyBiL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvcGdzdGF0LmMKQEAgLTI5MjcsNiArMjkyNyw5IEBAIHBnc3RhdF9iZXN0 YXJ0KHZvaWQpCiAJCQljYXNlIFN0YXJ0dXBQcm9jZXNzOgogCQkJCWxiZWVudHJ5LnN0X2Jh Y2tlbmRUeXBlID0gQl9TVEFSVFVQOwogCQkJCWJyZWFrOworCQkJY2FzZSBCYXNlQmFja3Vw UHJvY2VzczoKKwkJCQlsYmVlbnRyeS5zdF9iYWNrZW5kVHlwZSA9IEJfQkFTRV9CQUNLVVA7 CisJCQkJYnJlYWs7CiAJCQljYXNlIEJnV3JpdGVyUHJvY2VzczoKIAkJCQlsYmVlbnRyeS5z dF9iYWNrZW5kVHlwZSA9IEJfQkdfV1JJVEVSOwogCQkJCWJyZWFrOwpAQCAtNDI4NSw2ICs0 Mjg4LDkgQEAgcGdzdGF0X2dldF9iYWNrZW5kX2Rlc2MoQmFja2VuZFR5cGUgYmFja2VuZFR5 cGUpCiAJCWNhc2UgQl9CR19XT1JLRVI6CiAJCQliYWNrZW5kRGVzYyA9ICJiYWNrZ3JvdW5k IHdvcmtlciI7CiAJCQlicmVhazsKKwkJY2FzZSBCX0JBU0VfQkFDS1VQOgorCQkJYmFja2Vu ZERlc2MgPSAiYmFzZSBiYWNrdXAiOworCQkJYnJlYWs7CiAJCWNhc2UgQl9CR19XUklURVI6 CiAJCQliYWNrZW5kRGVzYyA9ICJiYWNrZ3JvdW5kIHdyaXRlciI7CiAJCQlicmVhazsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jIGIvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMKaW5kZXggN2E5MmRhYzUyNS4uMDc1NTVh NTVkNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMK KysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMKQEAgLTExNiw2ICsx MTYsNyBAQAogI2luY2x1ZGUgInBvc3RtYXN0ZXIvcG9zdG1hc3Rlci5oIgogI2luY2x1ZGUg InBvc3RtYXN0ZXIvc3lzbG9nZ2VyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNh bGxhdW5jaGVyLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCIKICNp bmNsdWRlICJyZXBsaWNhdGlvbi93YWxzZW5kZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2Zk LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKQEAgLTI0OCw2ICsyNDksNyBAQCBib29s CQlyZXN0YXJ0X2FmdGVyX2NyYXNoID0gdHJ1ZTsKIAogLyogUElEcyBvZiBzcGVjaWFsIGNo aWxkIHByb2Nlc3NlczsgMCB3aGVuIG5vdCBydW5uaW5nICovCiBzdGF0aWMgcGlkX3QgU3Rh cnR1cFBJRCA9IDAsCisJCQlCYXNlQmFja3VwUElEID0gMCwKIAkJCUJnV3JpdGVyUElEID0g MCwKIAkJCUNoZWNrcG9pbnRlclBJRCA9IDAsCiAJCQlXYWxXcml0ZXJQSUQgPSAwLApAQCAt NTM5LDYgKzU0MSw3IEBAIHN0YXRpYyB2b2lkIFNobWVtQmFja2VuZEFycmF5UmVtb3ZlKEJh Y2tlbmQgKmJuKTsKICNlbmRpZgkJCQkJCQkvKiBFWEVDX0JBQ0tFTkQgKi8KIAogI2RlZmlu ZSBTdGFydHVwRGF0YUJhc2UoKQkJU3RhcnRDaGlsZFByb2Nlc3MoU3RhcnR1cFByb2Nlc3Mp CisjZGVmaW5lIFN0YXJ0QmFzZUJhY2t1cCgpCQlTdGFydENoaWxkUHJvY2VzcyhCYXNlQmFj a3VwUHJvY2VzcykKICNkZWZpbmUgU3RhcnRCYWNrZ3JvdW5kV3JpdGVyKCkgU3RhcnRDaGls ZFByb2Nlc3MoQmdXcml0ZXJQcm9jZXNzKQogI2RlZmluZSBTdGFydENoZWNrcG9pbnRlcigp CQlTdGFydENoaWxkUHJvY2VzcyhDaGVja3BvaW50ZXJQcm9jZXNzKQogI2RlZmluZSBTdGFy dFdhbFdyaXRlcigpCQlTdGFydENoaWxkUHJvY2VzcyhXYWxXcml0ZXJQcm9jZXNzKQpAQCAt NTcyLDYgKzU3NSw4IEBAIFBvc3RtYXN0ZXJNYWluKGludCBhcmdjLCBjaGFyICphcmd2W10p CiAJYm9vbAkJbGlzdGVuX2FkZHJfc2F2ZWQgPSBmYWxzZTsKIAlpbnQJCQlpOwogCWNoYXIJ ICAgKm91dHB1dF9jb25maWdfdmFyaWFibGUgPSBOVUxMOworCXN0cnVjdCBzdGF0IHN0YXRf YnVmOworCWJvb2wJCWJhc2ViYWNrdXBfc2lnbmFsX2ZpbGVfZm91bmQgPSBmYWxzZTsKIAog CUluaXRQcm9jZXNzR2xvYmFscygpOwogCkBAIC04ODYsMTIgKzg5MSwyNyBAQCBQb3N0bWFz dGVyTWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCS8qIFZlcmlmeSB0aGF0IERhdGFE aXIgbG9va3MgcmVhc29uYWJsZSAqLwogCWNoZWNrRGF0YURpcigpOwogCi0JLyogQ2hlY2sg dGhhdCBwZ19jb250cm9sIGV4aXN0cyAqLwotCWNoZWNrQ29udHJvbEZpbGUoKTsKLQogCS8q IEFuZCBzd2l0Y2ggd29ya2luZyBkaXJlY3RvcnkgaW50byBpdCAqLwogCUNoYW5nZVRvRGF0 YURpcigpOwogCisJaWYgKHN0YXQoQkFTRUJBQ0tVUF9TSUdOQUxfRklMRSwgJnN0YXRfYnVm KSA9PSAwKQorCXsKKwkJaW50ICAgICAgICAgZmQ7CisKKwkJZmQgPSBCYXNpY09wZW5GaWxl UGVybShTVEFOREJZX1NJR05BTF9GSUxFLCBPX1JEV1IgfCBQR19CSU5BUlksCisJCQkJCQkJ ICAgU19JUlVTUiB8IFNfSVdVU1IpOworCQlpZiAoZmQgPj0gMCkKKwkJeworCQkJKHZvaWQp IHBnX2ZzeW5jKGZkKTsKKwkJCWNsb3NlKGZkKTsKKwkJfQorCQliYXNlYmFja3VwX3NpZ25h bF9maWxlX2ZvdW5kID0gdHJ1ZTsKKwl9CisKKwkvKiBDaGVjayB0aGF0IHBnX2NvbnRyb2wg ZXhpc3RzICovCisJaWYgKCFiYXNlYmFja3VwX3NpZ25hbF9maWxlX2ZvdW5kKQorCQljaGVj a0NvbnRyb2xGaWxlKCk7CisKIAkvKgogCSAqIENoZWNrIGZvciBpbnZhbGlkIGNvbWJpbmF0 aW9ucyBvZiBHVUMgc2V0dGluZ3MuCiAJICovCkBAIC05NzAsNyArOTkwLDggQEAgUG9zdG1h c3Rlck1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkgKiBwcm9jZXNzZXMgd2lsbCBp bmhlcml0IHRoZSBjb3JyZWN0IGZ1bmN0aW9uIHBvaW50ZXIgYW5kIG5vdCBuZWVkIHRvCiAJ ICogcmVwZWF0IHRoZSB0ZXN0LgogCSAqLwotCUxvY2FsUHJvY2Vzc0NvbnRyb2xGaWxlKGZh bHNlKTsKKwlpZiAoIWJhc2ViYWNrdXBfc2lnbmFsX2ZpbGVfZm91bmQpCisJCUxvY2FsUHJv Y2Vzc0NvbnRyb2xGaWxlKGZhbHNlKTsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSBTU0wgbGli cmFyeSwgaWYgc3BlY2lmaWVkLgpAQCAtMTM4Niw2ICsxNDA3LDM5IEBAIFBvc3RtYXN0ZXJN YWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJICovCiAJQWRkVG9EYXRhRGlyTG9ja0Zp bGUoTE9DS19GSUxFX0xJTkVfUE1fU1RBVFVTLCBQTV9TVEFUVVNfU1RBUlRJTkcpOwogCisJ aWYgKGJhc2ViYWNrdXBfc2lnbmFsX2ZpbGVfZm91bmQpCisJeworCQlCYXNlQmFja3VwUElE ID0gU3RhcnRCYXNlQmFja3VwKCk7CisKKwkJLyoKKwkJICogV2FpdCB1bnRpbCBkb25lLiAg U3RhcnQgV0FMIHJlY2VpdmVyIGluIHRoZSBtZWFudGltZSwgb25jZSBiYXNlCisJCSAqIGJh Y2t1cCBoYXMgcmVjZWl2ZWQgdGhlIHN0YXJ0aW5nIHBvc2l0aW9uLgorCQkgKi8KKwkJd2hp bGUgKEJhc2VCYWNrdXBQSUQgIT0gMCkKKwkJeworCQkJUEdfU0VUTUFTSygmVW5CbG9ja1Np Zyk7CisJCQlwZ191c2xlZXAoMTAwMDAwMEwpOworCQkJUEdfU0VUTUFTSygmQmxvY2tTaWcp OworCQkJTWF5YmVTdGFydFdhbFJlY2VpdmVyKCk7CisJCX0KKworCQkvKgorCQkgKiBYWFgg U2h1dCBkb3duIFdBTCByZWNlaXZlci4gIEl0IHdpbGwgYmUgcmVzdGFydGVkIGxhdGVyIGlu IHhsb2cuYywKKwkJICogYW5kIHRoYXQgd2lsbCBjb21wbGFpbiBpZiBpdCdzIGFscmVhZHkg cnVubmluZy4KKwkJICovCisJCVNodXRkb3duV2FsUmN2KCk7CisKKwkJLyoKKwkJICogQmFz ZSBiYWNrdXAgZG9uZSwgbm93IHNpZ25hbCBzdGFuZGJ5IG1vZGUuCisJCSAqLworCQlkdXJh YmxlX3JlbmFtZShCQVNFQkFDS1VQX1NJR05BTF9GSUxFLCBTVEFOREJZX1NJR05BTF9GSUxF LCBGQVRBTCk7CisKKwkJLyoKKwkJICogUmVyZWFkIHRoZSBjb250cm9sIGZpbGUgdGhhdCBj YW1lIGluIHdpdGggdGhlIGJhc2UgYmFja3VwLgorCQkgKi8KKwkJUmVhZENvbnRyb2xGaWxl KCk7CisJfQorCiAJLyoKIAkgKiBXZSdyZSByZWFkeSB0byByb2NrIGFuZCByb2xsLi4uCiAJ ICovCkBAIC0yNjY1LDYgKzI3MTksOCBAQCBTSUdIVVBfaGFuZGxlcihTSUdOQUxfQVJHUykK IAkJU2lnbmFsQ2hpbGRyZW4oU0lHSFVQKTsKIAkJaWYgKFN0YXJ0dXBQSUQgIT0gMCkKIAkJ CXNpZ25hbF9jaGlsZChTdGFydHVwUElELCBTSUdIVVApOworCQlpZiAoQmFzZUJhY2t1cFBJ RCAhPSAwKQorCQkJc2lnbmFsX2NoaWxkKEJhc2VCYWNrdXBQSUQsIFNJR0hVUCk7CiAJCWlm IChCZ1dyaXRlclBJRCAhPSAwKQogCQkJc2lnbmFsX2NoaWxkKEJnV3JpdGVyUElELCBTSUdI VVApOwogCQlpZiAoQ2hlY2twb2ludGVyUElEICE9IDApCkBAIC0yODI0LDYgKzI4ODAsOCBA QCBwbWRpZShTSUdOQUxfQVJHUykKIAogCQkJaWYgKFN0YXJ0dXBQSUQgIT0gMCkKIAkJCQlz aWduYWxfY2hpbGQoU3RhcnR1cFBJRCwgU0lHVEVSTSk7CisJCQlpZiAoQmFzZUJhY2t1cFBJ RCAhPSAwKQorCQkJCXNpZ25hbF9jaGlsZChCYXNlQmFja3VwUElELCBTSUdURVJNKTsKIAkJ CWlmIChCZ1dyaXRlclBJRCAhPSAwKQogCQkJCXNpZ25hbF9jaGlsZChCZ1dyaXRlclBJRCwg U0lHVEVSTSk7CiAJCQlpZiAoV2FsUmVjZWl2ZXJQSUQgIT0gMCkKQEAgLTMwNjIsNiArMzEy MCwyMyBAQCByZWFwZXIoU0lHTkFMX0FSR1MpCiAJCQljb250aW51ZTsKIAkJfQogCisJCS8q CisJCSAqIFdhcyBpdCB0aGUgYmFzZSBiYWNrdXAgcHJvY2Vzcz8KKwkJICovCisJCWlmIChw aWQgPT0gQmFzZUJhY2t1cFBJRCkKKwkJeworCQkJQmFzZUJhY2t1cFBJRCA9IDA7CisJCQlp ZiAoRVhJVF9TVEFUVVNfMChleGl0c3RhdHVzKSkKKwkJCQk7CisJCQllbHNlIGlmIChFWElU X1NUQVRVU18xKGV4aXRzdGF0dXMpKQorCQkJCWVyZXBvcnQoRkFUQUwsCisJCQkJCQkoZXJy bXNnKCJiYXNlIGJhY2t1cCBmYWlsZWQiKSkpOworCQkJZWxzZQorCQkJCUhhbmRsZUNoaWxk Q3Jhc2gocGlkLCBleGl0c3RhdHVzLAorCQkJCQkJCQkgXygiYmFzZSBiYWNrdXAgcHJvY2Vz cyIpKTsKKwkJCWNvbnRpbnVlOworCQl9CisKIAkJLyoKIAkJICogV2FzIGl0IHRoZSBiZ3dy aXRlcj8gIE5vcm1hbCBleGl0IGNhbiBiZSBpZ25vcmVkOyB3ZSdsbCBzdGFydCBhIG5ldwog CQkgKiBvbmUgYXQgdGhlIG5leHQgaXRlcmF0aW9uIG9mIHRoZSBwb3N0bWFzdGVyJ3MgbWFp biBsb29wLCBpZgpAQCAtMzU4Myw2ICszNjU4LDE4IEBAIEhhbmRsZUNoaWxkQ3Jhc2goaW50 IHBpZCwgaW50IGV4aXRzdGF0dXMsIGNvbnN0IGNoYXIgKnByb2NuYW1lKQogCQlTdGFydHVw U3RhdHVzID0gU1RBUlRVUF9TSUdOQUxFRDsKIAl9CiAKKwkvKiBUYWtlIGNhcmUgb2YgdGhl IGJhc2UgYmFja3VwIHByb2Nlc3MgdG9vICovCisJaWYgKHBpZCA9PSBCYXNlQmFja3VwUElE KQorCQlCYXNlQmFja3VwUElEID0gMDsKKwllbHNlIGlmIChCYXNlQmFja3VwUElEICE9IDAg JiYgdGFrZV9hY3Rpb24pCisJeworCQllcmVwb3J0KERFQlVHMiwKKwkJCQkoZXJybXNnX2lu dGVybmFsKCJzZW5kaW5nICVzIHRvIHByb2Nlc3MgJWQiLAorCQkJCQkJCQkgKFNlbmRTdG9w ID8gIlNJR1NUT1AiIDogIlNJR1FVSVQiKSwKKwkJCQkJCQkJIChpbnQpIEJhc2VCYWNrdXBQ SUQpKSk7CisJCXNpZ25hbF9jaGlsZChCYXNlQmFja3VwUElELCAoU2VuZFN0b3AgPyBTSUdT VE9QIDogU0lHUVVJVCkpOworCX0KKwogCS8qIFRha2UgY2FyZSBvZiB0aGUgYmd3cml0ZXIg dG9vICovCiAJaWYgKHBpZCA9PSBCZ1dyaXRlclBJRCkKIAkJQmdXcml0ZXJQSUQgPSAwOwpA QCAtMzgxNyw2ICszOTA0LDcgQEAgUG9zdG1hc3RlclN0YXRlTWFjaGluZSh2b2lkKQogCQlp ZiAoQ291bnRDaGlsZHJlbihCQUNLRU5EX1RZUEVfTk9STUFMIHwgQkFDS0VORF9UWVBFX1dP UktFUikgPT0gMCAmJgogCQkJU3RhcnR1cFBJRCA9PSAwICYmCiAJCQlXYWxSZWNlaXZlclBJ RCA9PSAwICYmCisJCQlCYXNlQmFja3VwUElEID09IDAgJiYKIAkJCUJnV3JpdGVyUElEID09 IDAgJiYKIAkJCShDaGVja3BvaW50ZXJQSUQgPT0gMCB8fAogCQkJICghRmF0YWxFcnJvciAm JiBTaHV0ZG93biA8IEltbWVkaWF0ZVNodXRkb3duKSkgJiYKQEAgLTM5MTEsNiArMzk5OSw3 IEBAIFBvc3RtYXN0ZXJTdGF0ZU1hY2hpbmUodm9pZCkKIAkJCS8qIFRoZXNlIG90aGVyIGd1 eXMgc2hvdWxkIGJlIGRlYWQgYWxyZWFkeSAqLwogCQkJQXNzZXJ0KFN0YXJ0dXBQSUQgPT0g MCk7CiAJCQlBc3NlcnQoV2FsUmVjZWl2ZXJQSUQgPT0gMCk7CisJCQlBc3NlcnQoQmFzZUJh Y2t1cFBJRCA9PSAwKTsKIAkJCUFzc2VydChCZ1dyaXRlclBJRCA9PSAwKTsKIAkJCUFzc2Vy dChDaGVja3BvaW50ZXJQSUQgPT0gMCk7CiAJCQlBc3NlcnQoV2FsV3JpdGVyUElEID09IDAp OwpAQCAtNDA5NCw2ICs0MTgzLDggQEAgVGVybWluYXRlQ2hpbGRyZW4oaW50IHNpZ25hbCkK IAkJaWYgKHNpZ25hbCA9PSBTSUdRVUlUIHx8IHNpZ25hbCA9PSBTSUdLSUxMKQogCQkJU3Rh cnR1cFN0YXR1cyA9IFNUQVJUVVBfU0lHTkFMRUQ7CiAJfQorCWlmIChCYXNlQmFja3VwUElE ICE9IDApCisJCXNpZ25hbF9jaGlsZChCZ1dyaXRlclBJRCwgc2lnbmFsKTsKIAlpZiAoQmdX cml0ZXJQSUQgIT0gMCkKIAkJc2lnbmFsX2NoaWxkKEJnV3JpdGVyUElELCBzaWduYWwpOwog CWlmIChDaGVja3BvaW50ZXJQSUQgIT0gMCkKQEAgLTQ5MTksNiArNTAxMCw3IEBAIFN1YlBv c3RtYXN0ZXJNYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCXN0cmNtcChhcmd2WzFd LCAiLS1mb3JrYXZsYXVuY2hlciIpID09IDAgfHwKIAkJc3RyY21wKGFyZ3ZbMV0sICItLWZv cmthdndvcmtlciIpID09IDAgfHwKIAkJc3RyY21wKGFyZ3ZbMV0sICItLWZvcmtib290Iikg PT0gMCB8fAorCQlzdHJjbXAoYXJndlsxXSwgIi0tZm9ya2Jhc2ViYWNrdXAiKSA9PSAwIHx8 CiAJCXN0cm5jbXAoYXJndlsxXSwgIi0tZm9ya2Jnd29ya2VyPSIsIDE1KSA9PSAwKQogCQlQ R1NoYXJlZE1lbW9yeVJlQXR0YWNoKCk7CiAJZWxzZQpAQCAtNDk1OCw3ICs1MDUwLDggQEAg U3ViUG9zdG1hc3Rlck1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkgKiAocmUtKXJl YWQgY29udHJvbCBmaWxlLCBhcyBpdCBjb250YWlucyBjb25maWcuIFRoZSBwb3N0bWFzdGVy IHdpbGwKIAkgKiBhbHJlYWR5IGhhdmUgcmVhZCB0aGlzLCBidXQgdGhpcyBwcm9jZXNzIGRv ZXNuJ3Qga25vdyBhYm91dCB0aGF0LgogCSAqLwotCUxvY2FsUHJvY2Vzc0NvbnRyb2xGaWxl KGZhbHNlKTsKKwlpZiAoc3RyY21wKGFyZ3ZbMV0sICItLWZvcmtiYXNlYmFja3VwIikgIT0g MCkKKwkJTG9jYWxQcm9jZXNzQ29udHJvbEZpbGUoZmFsc2UpOwogCiAJLyoKIAkgKiBSZWxv YWQgYW55IGxpYnJhcmllcyB0aGF0IHdlcmUgcHJlbG9hZGVkIGJ5IHRoZSBwb3N0bWFzdGVy LiAgU2luY2Ugd2UKQEAgLTUwMTksNyArNTExMiw4IEBAIFN1YlBvc3RtYXN0ZXJNYWluKGlu dCBhcmdjLCBjaGFyICphcmd2W10pCiAJCS8qIEFuZCBydW4gdGhlIGJhY2tlbmQgKi8KIAkJ QmFja2VuZFJ1bigmcG9ydCk7CQkvKiBkb2VzIG5vdCByZXR1cm4gKi8KIAl9Ci0JaWYgKHN0 cmNtcChhcmd2WzFdLCAiLS1mb3JrYm9vdCIpID09IDApCisJaWYgKHN0cmNtcChhcmd2WzFd LCAiLS1mb3JrYm9vdCIpID09IDAgfHwKKwkJc3RyY21wKGFyZ3ZbMV0sICItLWZvcmtiYXNl YmFja3VwIikgPT0gMCkKIAl7CiAJCS8qIFJlc3RvcmUgYmFzaWMgc2hhcmVkIG1lbW9yeSBw b2ludGVycyAqLwogCQlJbml0U2htZW1BY2Nlc3MoVXNlZFNobWVtU2VnQWRkcik7CkBAIC01 NDMxLDcgKzU1MjUsNyBAQCBTdGFydENoaWxkUHJvY2VzcyhBdXhQcm9jVHlwZSB0eXBlKQog CWF2W2FjKytdID0gInBvc3RncmVzIjsKIAogI2lmZGVmIEVYRUNfQkFDS0VORAotCWF2W2Fj KytdID0gIi0tZm9ya2Jvb3QiOworCWF2W2FjKytdID0gKHR5cGUgPT0gQmFzZUJhY2t1cFBy b2Nlc3MpID8gIi0tZm9ya2Jhc2ViYWNrdXAiIDogIi0tZm9ya2Jvb3QiOwogCWF2W2FjKytd ID0gTlVMTDsJCQkvKiBmaWxsZWQgaW4gYnkgcG9zdG1hc3Rlcl9mb3JrZXhlYyAqLwogI2Vu ZGlmCiAKQEAgLTU0NzUsNiArNTU2OSwxMCBAQCBTdGFydENoaWxkUHJvY2VzcyhBdXhQcm9j VHlwZSB0eXBlKQogCQkJCWVyZXBvcnQoTE9HLAogCQkJCQkJKGVycm1zZygiY291bGQgbm90 IGZvcmsgc3RhcnR1cCBwcm9jZXNzOiAlbSIpKSk7CiAJCQkJYnJlYWs7CisJCQljYXNlIEJh c2VCYWNrdXBQcm9jZXNzOgorCQkJCWVyZXBvcnQoTE9HLAorCQkJCQkJKGVycm1zZygiY291 bGQgbm90IGZvcmsgYmFzZSBiYWNrdXAgcHJvY2VzczogJW0iKSkpOworCQkJCWJyZWFrOwog CQkJY2FzZSBCZ1dyaXRlclByb2Nlc3M6CiAJCQkJZXJlcG9ydChMT0csCiAJCQkJCQkoZXJy bXNnKCJjb3VsZCBub3QgZm9yayBiYWNrZ3JvdW5kIHdyaXRlciBwcm9jZXNzOiAlbSIpKSk7 CkBAIC01NjE2LDcgKzU3MTQsNyBAQCBzdGF0aWMgdm9pZAogTWF5YmVTdGFydFdhbFJlY2Vp dmVyKHZvaWQpCiB7CiAJaWYgKFdhbFJlY2VpdmVyUElEID09IDAgJiYKLQkJKHBtU3RhdGUg PT0gUE1fU1RBUlRVUCB8fCBwbVN0YXRlID09IFBNX1JFQ09WRVJZIHx8CisJCShwbVN0YXRl ID09IFBNX0lOSVQgfHwgcG1TdGF0ZSA9PSBQTV9TVEFSVFVQIHx8IHBtU3RhdGUgPT0gUE1f UkVDT1ZFUlkgfHwKIAkJIHBtU3RhdGUgPT0gUE1fSE9UX1NUQU5EQlkgfHwgcG1TdGF0ZSA9 PSBQTV9XQUlUX1JFQURPTkxZKSAmJgogCQlTaHV0ZG93biA9PSBOb1NodXRkb3duKQogCXsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2Jhc2ViYWNrdXAuYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2Jhc2ViYWNrdXAuYwppbmRleCBkZWE4YWFiNDVlLi5l MmY4OGEyZjExIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9iYXNlYmFj a3VwLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vYmFzZWJhY2t1cC5jCkBAIC0y OSw2ICsyOSw3IEBACiAjaW5jbHVkZSAicG9ydC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIv c3lzbG9nZ2VyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vYmFzZWJhY2t1cC5oIgorI2lu Y2x1ZGUgInJlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRp b24vd2Fsc2VuZGVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2Fsc2VuZGVyX3ByaXZh dGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1ZnBhZ2UuaCIKQEAgLTM4LDYgKzM5LDcgQEAK ICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcmVpbml0Lmgi CiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9ndWMuaCIK ICNpbmNsdWRlICJ1dGlscy9wc19zdGF0dXMuaCIKICNpbmNsdWRlICJ1dGlscy9yZWxjYWNo ZS5oIgogI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgpAQCAtMTIxLDYgKzEyMyw5IEBA IHN0YXRpYyBsb25nIGxvbmcgaW50IHRvdGFsX2NoZWNrc3VtX2ZhaWx1cmVzOwogLyogRG8g bm90IHZlcmlmeSBjaGVja3N1bXMuICovCiBzdGF0aWMgYm9vbCBub3ZlcmlmeV9jaGVja3N1 bXMgPSBmYWxzZTsKIAorLyogRG8gbm90IGNvcHkgY29uZmlnIGZpbGVzLiAqLworc3RhdGlj IGJvb2wgZXhjbHVkZV9jb25mID0gZmFsc2U7CisKIC8qCiAgKiBUaGUgY29udGVudHMgb2Yg dGhlc2UgZGlyZWN0b3JpZXMgYXJlIHJlbW92ZWQgb3IgcmVjcmVhdGVkIGR1cmluZyBzZXJ2 ZXIKICAqIHN0YXJ0IHNvIHRoZXkgYXJlIG5vdCBpbmNsdWRlZCBpbiBiYWNrdXBzLiAgVGhl IGRpcmVjdG9yaWVzIHRoZW1zZWx2ZXMgYXJlCkBAIC02MzksNiArNjQ0LDcgQEAgcGFyc2Vf YmFzZWJhY2t1cF9vcHRpb25zKExpc3QgKm9wdGlvbnMsIGJhc2ViYWNrdXBfb3B0aW9ucyAq b3B0KQogCWJvb2wJCW9fbWF4cmF0ZSA9IGZhbHNlOwogCWJvb2wJCW9fdGFibGVzcGFjZV9t YXAgPSBmYWxzZTsKIAlib29sCQlvX25vdmVyaWZ5X2NoZWNrc3VtcyA9IGZhbHNlOworCWJv b2wJCW9fZXhjbHVkZV9jb25mID0gZmFsc2U7CiAKIAlNZW1TZXQob3B0LCAwLCBzaXplb2Yo Km9wdCkpOwogCWZvcmVhY2gobG9wdCwgb3B0aW9ucykKQEAgLTcyNyw2ICs3MzMsMTUgQEAg cGFyc2VfYmFzZWJhY2t1cF9vcHRpb25zKExpc3QgKm9wdGlvbnMsIGJhc2ViYWNrdXBfb3B0 aW9ucyAqb3B0KQogCQkJbm92ZXJpZnlfY2hlY2tzdW1zID0gdHJ1ZTsKIAkJCW9fbm92ZXJp ZnlfY2hlY2tzdW1zID0gdHJ1ZTsKIAkJfQorCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRl Zm5hbWUsICJleGNsdWRlX2NvbmYiKSA9PSAwKQorCQl7CisJCQlpZiAob19leGNsdWRlX2Nv bmYpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFY X0VSUk9SKSwKKwkJCQkJCSBlcnJtc2coImR1cGxpY2F0ZSBvcHRpb24gXCIlc1wiIiwgZGVm ZWwtPmRlZm5hbWUpKSk7CisJCQlleGNsdWRlX2NvbmYgPSB0cnVlOworCQkJb19leGNsdWRl X2NvbmYgPSB0cnVlOworCQl9CiAJCWVsc2UKIAkJCWVsb2coRVJST1IsICJvcHRpb24gXCIl c1wiIG5vdCByZWNvZ25pemVkIiwKIAkJCQkgZGVmZWwtPmRlZm5hbWUpOwpAQCAtMTEzNiw2 ICsxMTUxLDE4IEBAIHNlbmREaXIoY29uc3QgY2hhciAqcGF0aCwgaW50IGJhc2VwYXRobGVu LCBib29sIHNpemVvbmx5LCBMaXN0ICp0YWJsZXNwYWNlcywKIAkJCWNvbnRpbnVlOwogCQl9 CiAKKwkJaWYgKGV4Y2x1ZGVfY29uZikKKwkJeworCQkJY2hhcgkgICAqZG90ID0gc3RycmNo cihkZS0+ZF9uYW1lLCAnLicpOworCQkJaWYgKGRvdCAmJiBzdHJjbXAoZG90LCAiLmNvbmYi KSA9PSAwKQorCQkJeworCQkJCWVsb2coREVCVUcyLAorCQkJCQkgImNvbmZpZ3VyYXRpb24g ZmlsZSBcIiVzXCIgZXhjbHVkZWQgZnJvbSBiYWNrdXAiLAorCQkJCQkgZGUtPmRfbmFtZSk7 CisJCQkJY29udGludWU7CisJCQl9CisJCX0KKwogCQlzbnByaW50ZihwYXRoYnVmLCBzaXpl b2YocGF0aGJ1ZiksICIlcy8lcyIsIHBhdGgsIGRlLT5kX25hbWUpOwogCiAJCS8qIFNraXAg cGdfY29udHJvbCBoZXJlIHRvIGJhY2sgdXAgaXQgbGFzdCAqLwpAQCAtMTczMCwzICsxNzU3 LDQ2IEBAIHRocm90dGxlKHNpemVfdCBpbmNyZW1lbnQpCiAJICovCiAJdGhyb3R0bGVkX2xh c3QgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CiB9CisKKworLyoKKyAqIGJhc2UgYmFja3Vw IHdvcmtlciBwcm9jZXNzIChjbGllbnQpIG1haW4gZnVuY3Rpb24KKyAqLwordm9pZAorQmFz ZUJhY2t1cE1haW4odm9pZCkKK3sKKwlXYWxSZWNlaXZlckNvbm4gKndyY29ubiA9IE5VTEw7 CisJY2hhcgkgICAqZXJyOworCVRpbWVMaW5lSUQJcHJpbWFyeVRMSTsKKwl1aW50NjQJCXBy aW1hcnlfc3lzaWQ7CisKKwkvKiBMb2FkIHRoZSBsaWJwcS1zcGVjaWZpYyBmdW5jdGlvbnMg Ki8KKwlsb2FkX2ZpbGUoImxpYnBxd2FscmVjZWl2ZXIiLCBmYWxzZSk7CisJaWYgKFdhbFJl Y2VpdmVyRnVuY3Rpb25zID09IE5VTEwpCisJCWVsb2coRVJST1IsICJsaWJwcXdhbHJlY2Vp dmVyIGRpZG4ndCBpbml0aWFsaXplIGNvcnJlY3RseSIpOworCisJLyogRXN0YWJsaXNoIHRo ZSBjb25uZWN0aW9uIHRvIHRoZSBwcmltYXJ5ICovCisJd3Jjb25uID0gd2FscmN2X2Nvbm5l Y3QoUHJpbWFyeUNvbm5JbmZvLCBmYWxzZSwgY2x1c3Rlcl9uYW1lWzBdID8gY2x1c3Rlcl9u YW1lIDogImJhc2ViYWNrdXAiLCAmZXJyKTsKKwlpZiAoIXdyY29ubikKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJybXNnKCJjb3VsZCBub3QgY29ubmVjdCB0byB0aGUgcHJpbWFyeSBz ZXJ2ZXI6ICVzIiwgZXJyKSkpOworCisJLyoKKwkgKiBHZXQgdGhlIHJlbW90ZSBzeXNpZCBh bmQgc3RpY2sgaXQgaW50byB0aGUgbG9jYWwgY29udHJvbCBmaWxlLCBzbyB0aGF0CisJICog dGhlIHdhbHJlY2VpdmVyIGlzIGhhcHB5LiAgVGhlIGNvbnRyb2wgZmlsZSB3aWxsIGxhdGVy IGJlIG92ZXJ3cml0dGVuCisJICogYnkgdGhlIGJhc2UgYmFja3VwLgorCSAqLworCXByaW1h cnlfc3lzaWQgPSBzdHJ0b3VsbCh3YWxyY3ZfaWRlbnRpZnlfc3lzdGVtKHdyY29ubiwgJnBy aW1hcnlUTEkpLCBOVUxMLCAxMCk7CisJSW5pdENvbnRyb2xGaWxlKHByaW1hcnlfc3lzaWQp OworCVdyaXRlQ29udHJvbEZpbGUoKTsKKworCXdhbHJjdl9iYXNlX2JhY2t1cCh3cmNvbm4p OworCisJd2FscmN2X2Rpc2Nvbm5lY3Qod3Jjb25uKTsKKworCVN5bmNEYXRhRGlyZWN0b3J5 KGZhbHNlLCBFUlJPUik7CisKKwllcmVwb3J0KExPRywKKwkJCShlcnJtc2coImJhc2UgYmFj a3VwIGNvbXBsZXRlZCIpKSk7CisJcHJvY19leGl0KDApOworfQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVy LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2Fs cmVjZWl2ZXIuYwppbmRleCBlNGZkMWY5YmI2Li41MjgxOWQ1MDRjIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2 ZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xp YnBxd2FscmVjZWl2ZXIuYwpAQCAtMTcsMjAgKzE3LDI5IEBACiAjaW5jbHVkZSAicG9zdGdy ZXMuaCIKIAogI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAj aW5jbHVkZSA8c3lzL3RpbWUuaD4KIAorI2lmZGVmIFVTRV9TWVNURU1ECisjaW5jbHVkZSA8 c3lzdGVtZC9zZC1kYWVtb24uaD4KKyNlbmRpZgorCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2cu aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNsdWRlICJjb21tb24vc3Ry aW5nLmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgogI2luY2x1ZGUgImxpYnBxLWZlLmgiCiAj aW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNs dWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJwZ3Rhci5oIgogI2luY2x1ZGUgInBxZXhwYnVm ZmVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCIKICNpbmNsdWRl ICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgogI2luY2x1ZGUg InV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcGdfbHNuLmgiCisjaW5jbHVk ZSAidXRpbHMvcHNfc3RhdHVzLmgiCiAjaW5jbHVkZSAidXRpbHMvdHVwbGVzdG9yZS5oIgog CiBQR19NT0RVTEVfTUFHSUM7CkBAIC02MSw2ICs3MCw3IEBAIHN0YXRpYyBpbnQJbGlicHFy Y3Zfc2VydmVyX3ZlcnNpb24oV2FsUmVjZWl2ZXJDb25uICpjb25uKTsKIHN0YXRpYyB2b2lk IGxpYnBxcmN2X3JlYWR0aW1lbGluZWhpc3RvcnlmaWxlKFdhbFJlY2VpdmVyQ29ubiAqY29u biwKIAkJCQkJCQkJCQkJIFRpbWVMaW5lSUQgdGxpLCBjaGFyICoqZmlsZW5hbWUsCiAJCQkJ CQkJCQkJCSBjaGFyICoqY29udGVudCwgaW50ICpsZW4pOworc3RhdGljIHZvaWQgbGlicHFy Y3ZfYmFzZV9iYWNrdXAoV2FsUmVjZWl2ZXJDb25uICpjb25uKTsKIHN0YXRpYyBib29sIGxp YnBxcmN2X3N0YXJ0c3RyZWFtaW5nKFdhbFJlY2VpdmVyQ29ubiAqY29ubiwKIAkJCQkJCQkJ CWNvbnN0IFdhbFJjdlN0cmVhbU9wdGlvbnMgKm9wdGlvbnMpOwogc3RhdGljIHZvaWQgbGli cHFyY3ZfZW5kc3RyZWFtaW5nKFdhbFJlY2VpdmVyQ29ubiAqY29ubiwKQEAgLTg5LDYgKzk5 LDcgQEAgc3RhdGljIFdhbFJlY2VpdmVyRnVuY3Rpb25zVHlwZSBQUVdhbFJlY2VpdmVyRnVu Y3Rpb25zID0gewogCWxpYnBxcmN2X2lkZW50aWZ5X3N5c3RlbSwKIAlsaWJwcXJjdl9zZXJ2 ZXJfdmVyc2lvbiwKIAlsaWJwcXJjdl9yZWFkdGltZWxpbmVoaXN0b3J5ZmlsZSwKKwlsaWJw cXJjdl9iYXNlX2JhY2t1cCwKIAlsaWJwcXJjdl9zdGFydHN0cmVhbWluZywKIAlsaWJwcXJj dl9lbmRzdHJlYW1pbmcsCiAJbGlicHFyY3ZfcmVjZWl2ZSwKQEAgLTM1OCw2ICszNjksMzk1 IEBAIGxpYnBxcmN2X3NlcnZlcl92ZXJzaW9uKFdhbFJlY2VpdmVyQ29ubiAqY29ubikKIAly ZXR1cm4gUFFzZXJ2ZXJWZXJzaW9uKGNvbm4tPnN0cmVhbUNvbm4pOwogfQogCisvKgorICog WFhYIGNvcGllZCBmcm9tIHBnX2Jhc2ViYWNrdXAuYworICovCisKK3Vuc2lnbmVkIGxvbmcg bG9uZyB0b3RhbGRvbmU7Cit1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxzaXplX2tiOworaW50 IHRhYmxlc3BhY2VudW07CitpbnQgdGFibGVzcGFjZWNvdW50OworCitzdGF0aWMgdm9pZAor YmFzZV9iYWNrdXBfcmVwb3J0X3Byb2dyZXNzKHZvaWQpCit7CisJaW50CQkJcGVyY2VudDsK KwljaGFyCSAgICpwcm9ncmVzczsKKworCXBlcmNlbnQgPSB0b3RhbHNpemVfa2IgPyAoaW50 KSAoKHRvdGFsZG9uZSAvIDEwMjQpICogMTAwIC8gdG90YWxzaXplX2tiKSA6IDA7CisKKwkv KgorCSAqIEF2b2lkIG92ZXJmbG93aW5nIHBhc3QgMTAwJSBvciB0aGUgZnVsbCBzaXplLiBU aGlzIG1heSBtYWtlIHRoZSB0b3RhbAorCSAqIHNpemUgbnVtYmVyIGNoYW5nZSBhcyB3ZSBh cHByb2FjaCB0aGUgZW5kIG9mIHRoZSBiYWNrdXAgKHRoZSBlc3RpbWF0ZQorCSAqIHdpbGwg YWx3YXlzIGJlIHdyb25nIGlmIFdBTCBpcyBpbmNsdWRlZCksIGJ1dCB0aGF0J3MgYmV0dGVy IHRoYW4gaGF2aW5nCisJICogdGhlIGRvbmUgY29sdW1uIGJlIGJpZ2dlciB0aGFuIHRoZSB0 b3RhbC4KKwkgKi8KKwlpZiAocGVyY2VudCA+IDEwMCkKKwkJcGVyY2VudCA9IDEwMDsKKwlp ZiAodG90YWxkb25lIC8gMTAyNCA+IHRvdGFsc2l6ZV9rYikKKwkJdG90YWxzaXplX2tiID0g dG90YWxkb25lIC8gMTAyNDsKKworCS8qIE5vdGU6IG5vIHRyYW5zbGF0aW9uIG9mIHBzIHN0 YXR1cyAqLworCXByb2dyZXNzID0gcHNwcmludGYoKHRhYmxlc3BhY2Vjb3VudCA9PSAxID8K KwkJCQkJCSAiJWxsdS8lbGx1IGtCICglZCUlKSwgJWQvJWQgdGFibGVzcGFjZSIgOgorCQkJ CQkJICIlbGx1LyVsbHUga0IgKCVkJSUpLCAlZC8lZCB0YWJsZXNwYWNlcyIpLAorCQkJCQkJ dG90YWxkb25lIC8gMTAyNCwKKwkJCQkJCXRvdGFsc2l6ZV9rYiwKKwkJCQkJCXBlcmNlbnQs CisJCQkJCQl0YWJsZXNwYWNlbnVtLAorCQkJCQkJdGFibGVzcGFjZWNvdW50KTsKKworCXNl dF9wc19kaXNwbGF5KHByb2dyZXNzLCBmYWxzZSk7CisjaWZkZWYgVVNFX1NZU1RFTUQKKwlz ZF9waWRfbm90aWZ5ZihQb3N0bWFzdGVyUGlkLCAwLCAiU1RBVFVTPWJhc2UgYmFja3VwICVz IiwgcHJvZ3Jlc3MpOworI2VuZGlmCisKKwlwZnJlZShwcm9ncmVzcyk7Cit9CisKK3N0YXRp YyB2b2lkCitSZWNlaXZlQW5kVW5wYWNrVGFyRmlsZShQR2Nvbm4gKmNvbm4sIFBHcmVzdWx0 ICpyZXMpCit7CisJY2hhcgkJY3VycmVudF9wYXRoW01BWFBHUEFUSF07CisJY2hhcgkJZmls ZW5hbWVbTUFYUEdQQVRIXTsKKwlwZ29mZl90CQljdXJyZW50X2xlbl9sZWZ0ID0gMDsKKwlp bnQJCQljdXJyZW50X3BhZGRpbmcgPSAwOworCWNoYXIJICAgKmNvcHlidWYgPSBOVUxMOwor CUZJTEUJICAgKmZpbGUgPSBOVUxMOworCW9mZl90CQlmbHVzaF9vZmZzZXQ7CisKKwlzdHJs Y3B5KGN1cnJlbnRfcGF0aCwgRGF0YURpciwgc2l6ZW9mKGN1cnJlbnRfcGF0aCkpOworCisJ LyoKKwkgKiBHZXQgdGhlIENPUFkgZGF0YQorCSAqLworCXJlcyA9IFBRZ2V0UmVzdWx0KGNv bm4pOworCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX0NPUFlfT1VUKQorCQll cmVwb3J0KEVSUk9SLAorCQkJCShlcnJtc2coImNvdWxkIG5vdCBnZXQgQ09QWSBkYXRhIHN0 cmVhbTogJXMiLAorCQkJCQkJUFFlcnJvck1lc3NhZ2UoY29ubikpKSk7CisKKwl3aGlsZSAo MSkKKwl7CisJCWludAkJCXI7CisKKwkJaWYgKGNvcHlidWYgIT0gTlVMTCkKKwkJeworCQkJ UFFmcmVlbWVtKGNvcHlidWYpOworCQkJY29weWJ1ZiA9IE5VTEw7CisJCX0KKworCQlyID0g UFFnZXRDb3B5RGF0YShjb25uLCAmY29weWJ1ZiwgMCk7CisKKwkJaWYgKHIgPT0gLTEpCisJ CXsKKwkJCS8qCisJCQkgKiBFbmQgb2YgY2h1bmsKKwkJCSAqLworCQkJaWYgKGZpbGUpCisJ CQkJZmNsb3NlKGZpbGUpOworCisJCQlicmVhazsKKwkJfQorCQllbHNlIGlmIChyID09IC0y KQorCQl7CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJybXNnKCJjb3VsZCBub3QgcmVh ZCBDT1BZIGRhdGE6ICVzIiwKKwkJCQkJCQlQUWVycm9yTWVzc2FnZShjb25uKSkpKTsKKwkJ fQorCisJCWlmIChmaWxlID09IE5VTEwpCisJCXsKKwkJCWludAkJCWZpbGVtb2RlOworCisJ CQkvKgorCQkJICogTm8gY3VycmVudCBmaWxlLCBzbyB0aGlzIG11c3QgYmUgdGhlIGhlYWRl ciBmb3IgYSBuZXcgZmlsZQorCQkJICovCisJCQlpZiAociAhPSA1MTIpCisJCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkJCShlcnJtc2coImludmFsaWQgdGFyIGJsb2NrIGhlYWRlciBzaXpl OiAlZCIsIHIpKSk7CisKKwkJCWN1cnJlbnRfbGVuX2xlZnQgPSByZWFkX3Rhcl9udW1iZXIo JmNvcHlidWZbMTI0XSwgMTIpOworCisJCQkvKiBTZXQgcGVybWlzc2lvbnMgb24gdGhlIGZp bGUgKi8KKwkJCWZpbGVtb2RlID0gcmVhZF90YXJfbnVtYmVyKCZjb3B5YnVmWzEwMF0sIDgp OworCisJCQkvKgorCQkJICogQWxsIGZpbGVzIGFyZSBwYWRkZWQgdXAgdG8gNTEyIGJ5dGVz CisJCQkgKi8KKwkJCWN1cnJlbnRfcGFkZGluZyA9CisJCQkJKChjdXJyZW50X2xlbl9sZWZ0 ICsgNTExKSAmIH41MTEpIC0gY3VycmVudF9sZW5fbGVmdDsKKworCQkJLyoKKwkJCSAqIEZp cnN0IHBhcnQgb2YgaGVhZGVyIGlzIHplcm8gdGVybWluYXRlZCBmaWxlbmFtZQorCQkJICov CisJCQlzbnByaW50ZihmaWxlbmFtZSwgc2l6ZW9mKGZpbGVuYW1lKSwgIiVzLyVzIiwgY3Vy cmVudF9wYXRoLAorCQkJCQkgY29weWJ1Zik7CisJCQlpZiAoZmlsZW5hbWVbc3RybGVuKGZp bGVuYW1lKSAtIDFdID09ICcvJykKKwkJCXsKKwkJCQkvKgorCQkJCSAqIEVuZHMgaW4gYSBz bGFzaCBtZWFucyBkaXJlY3Rvcnkgb3Igc3ltbGluayB0byBkaXJlY3RvcnkKKwkJCQkgKi8K KwkJCQlpZiAoY29weWJ1ZlsxNTZdID09ICc1JykKKwkJCQl7CisJCQkJCS8qCisJCQkJCSAq IERpcmVjdG9yeQorCQkJCQkgKi8KKwkJCQkJZmlsZW5hbWVbc3RybGVuKGZpbGVuYW1lKSAt IDFdID0gJ1wwJzsJLyogUmVtb3ZlIHRyYWlsaW5nIHNsYXNoICovCisJCQkJCWlmIChNYWtl UEdEaXJlY3RvcnkoZmlsZW5hbWUpICE9IDApCisJCQkJCXsKKwkJCQkJCWlmIChlcnJubyAh PSBFRVhJU1QpCisJCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJCShlcnJjb2RlX2Zv cl9maWxlX2FjY2VzcygpLAorCQkJCQkJCQkJIGVycm1zZygiY291bGQgbm90IGNyZWF0ZSBk aXJlY3RvcnkgXCIlc1wiOiAlbSIsCisJCQkJCQkJCQkJCWZpbGVuYW1lKSkpOworCQkJCQl9 CisjaWZuZGVmIFdJTjMyCisJCQkJCWlmIChjaG1vZChmaWxlbmFtZSwgKG1vZGVfdCkgZmls ZW1vZGUpKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNvZGVfZm9yX2Zp bGVfYWNjZXNzKCksCisJCQkJCQkJCSBlcnJtc2coImNvdWxkIG5vdCBzZXQgcGVybWlzc2lv bnMgb24gZGlyZWN0b3J5IFwiJXNcIjogJW0iLAorCQkJCQkJCQkJCWZpbGVuYW1lKSkpOwor I2VuZGlmCisJCQkJfQorCQkJCS8qCisJCQkJICogU3ltYm9saWMgbGluaworCQkJCSAqLwor CQkJCWVsc2UgaWYgKGNvcHlidWZbMTU2XSA9PSAnMicpCisJCQkJeworCQkJCQkvKiBUT0RP OiB0YWJsZXNwYWNlIG1hcHBpbmcgKi8KKwkJCQkJY29uc3QgY2hhciAqdGJsc3BjX3BhdGgg PSAmY29weWJ1ZlsxNTddOworCisJCQkJCWZpbGVuYW1lW3N0cmxlbihmaWxlbmFtZSkgLSAx XSA9ICdcMCc7CS8qIFJlbW92ZSB0cmFpbGluZyBzbGFzaCAqLworCisJCQkJCWlmIChzeW1s aW5rKHRibHNwY19wYXRoLCBmaWxlbmFtZSkgIT0gMCkKKwkJCQkJCWVyZXBvcnQoRVJST1Is CisJCQkJCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAorCQkJCQkJCQkgZXJybXNn KCJjb3VsZCBub3QgY3JlYXRlIHN5bWJvbGljIGxpbmsgZnJvbSBcIiVzXCIgdG8gXCIlc1wi OiAlbSIsCisJCQkJCQkJCQkJZmlsZW5hbWUsIHRibHNwY19wYXRoKSkpOworCQkJCX0KKwkJ CQllbHNlCisJCQkJeworCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJtc2coInVu cmVjb2duaXplZCBsaW5rIGluZGljYXRvciBcIiVjXCIiLAorCQkJCQkJCQkJY29weWJ1Zlsx NTZdKSkpOworCQkJCX0KKwkJCQljb250aW51ZTsJCS8qIGRpcmVjdG9yeSBvciBsaW5rIGhh bmRsZWQgKi8KKwkJCX0KKworCQkJLyoKKwkJCSAqIHJlZ3VsYXIgZmlsZQorCQkJICovCisJ CQlmaWxlID0gZm9wZW4oZmlsZW5hbWUsICJ3YiIpOworCQkJaWYgKCFmaWxlKQorCQkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwKKwkJCQkJ CSAoZXJybXNnKCJjb3VsZCBub3QgY3JlYXRlIGZpbGUgXCIlc1wiOiAlbSIsIGZpbGVuYW1l KSkpKTsKKworCQkJZmx1c2hfb2Zmc2V0ID0gMDsKKworI2lmbmRlZiBXSU4zMgorCQkJaWYg KGNobW9kKGZpbGVuYW1lLCAobW9kZV90KSBmaWxlbW9kZSkpCisJCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAorCQkJCQkJIChlcnJtc2co ImNvdWxkIG5vdCBzZXQgcGVybWlzc2lvbnMgb24gZmlsZSBcIiVzXCI6ICVtIiwKKwkJCQkJ CQkJIGZpbGVuYW1lKSkpKTsKKyNlbmRpZgorCisJCQlpZiAoY3VycmVudF9sZW5fbGVmdCA9 PSAwKQorCQkJeworCQkJCS8qCisJCQkJICogRG9uZSB3aXRoIHRoaXMgZmlsZSwgbmV4dCBv bmUgd2lsbCBiZSBhIG5ldyB0YXIgaGVhZGVyCisJCQkJICovCisJCQkJZmNsb3NlKGZpbGUp OworCQkJCWZpbGUgPSBOVUxMOworCQkJCWNvbnRpbnVlOworCQkJfQorCQl9CQkJCQkJLyog bmV3IGZpbGUgKi8KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJICogQ29udGludWluZyBibG9j a3MgaW4gZXhpc3RpbmcgZmlsZQorCQkJICovCisJCQlpZiAoY3VycmVudF9sZW5fbGVmdCA9 PSAwICYmIHIgPT0gY3VycmVudF9wYWRkaW5nKQorCQkJeworCQkJCS8qCisJCQkJICogUmVj ZWl2ZWQgdGhlIHBhZGRpbmcgYmxvY2sgZm9yIHRoaXMgZmlsZSwgaWdub3JlIGl0IGFuZAor CQkJCSAqIGNsb3NlIHRoZSBmaWxlLCB0aGVuIG1vdmUgb24gdG8gdGhlIG5leHQgdGFyIGhl YWRlci4KKwkJCQkgKi8KKwkJCQlmY2xvc2UoZmlsZSk7CisJCQkJZmlsZSA9IE5VTEw7CisJ CQkJY29udGludWU7CisJCQl9CisKKwkJCWlmIChmd3JpdGUoY29weWJ1ZiwgciwgMSwgZmls ZSkgIT0gMSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGVfZm9yX2ZpbGVf YWNjZXNzKCksCisJCQkJCQkgZXJybXNnKCJjb3VsZCBub3Qgd3JpdGUgdG8gZmlsZSBcIiVz XCI6ICVtIiwgZmlsZW5hbWUpKSk7CisKKwkJCXBnX2ZsdXNoX2RhdGEoZmlsZW5vKGZpbGUp LCBmbHVzaF9vZmZzZXQsIHIpOworCQkJZmx1c2hfb2Zmc2V0ICs9IHI7CisJCQl0b3RhbGRv bmUgKz0gcjsKKwkJCWJhc2VfYmFja3VwX3JlcG9ydF9wcm9ncmVzcygpOworCisJCQljdXJy ZW50X2xlbl9sZWZ0IC09IHI7CisJCQlpZiAoY3VycmVudF9sZW5fbGVmdCA9PSAwICYmIGN1 cnJlbnRfcGFkZGluZyA9PSAwKQorCQkJeworCQkJCS8qCisJCQkJICogUmVjZWl2ZWQgdGhl IGxhc3QgYmxvY2ssIGFuZCB0aGVyZSBpcyBubyBwYWRkaW5nIHRvIGJlCisJCQkJICogZXhw ZWN0ZWQuIENsb3NlIHRoZSBmaWxlIGFuZCBtb3ZlIG9uIHRvIHRoZSBuZXh0IHRhcgorCQkJ CSAqIGhlYWRlci4KKwkJCQkgKi8KKwkJCQlmY2xvc2UoZmlsZSk7CisJCQkJZmlsZSA9IE5V TEw7CisJCQkJY29udGludWU7CisJCQl9CisJCX0JCQkJCQkvKiBjb250aW51aW5nIGRhdGEg aW4gZXhpc3RpbmcgZmlsZSAqLworCX0JCQkJCQkJLyogbG9vcCBvdmVyIGFsbCBkYXRhIGJs b2NrcyAqLworCWJhc2VfYmFja3VwX3JlcG9ydF9wcm9ncmVzcygpOworCisJaWYgKGZpbGUg IT0gTlVMTCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJybXNnKCJDT1BZIHN0cmVhbSBl bmRlZCBiZWZvcmUgbGFzdCBmaWxlIHdhcyBmaW5pc2hlZCIpKSk7CisKKwlpZiAoY29weWJ1 ZiAhPSBOVUxMKQorCQlQUWZyZWVtZW0oY29weWJ1Zik7Cit9CisKKy8qCisgKiBNYWtlIGJh c2UgYmFja3VwIGZyb20gcmVtb3RlIGFuZCB3cml0ZSB0byBsb2NhbCBkaXNrLgorICovCitz dGF0aWMgdm9pZAorbGlicHFyY3ZfYmFzZV9iYWNrdXAoV2FsUmVjZWl2ZXJDb25uICpjb25u KQoreworCVN0cmluZ0luZm9EYXRhIHN0bXQ7CisJUEdyZXN1bHQgICAqcmVzOworCWNoYXIJ CXhsb2dzdGFydFs2NF07CisJVGltZUxpbmVJRAlzdGFydHRsaTsKKwlYTG9nUmVjUHRyCXJl Y3B0cjsKKwlib29sCQllcnJvcjsKKworCWVyZXBvcnQoTE9HLAorCQkJKGVycm1zZygiaW5p dGlhdGluZyBiYXNlIGJhY2t1cCwgd2FpdGluZyBmb3IgcmVtb3RlIGNoZWNrcG9pbnQgdG8g Y29tcGxldGUiKSkpOworCXNldF9wc19kaXNwbGF5KCJ3YWl0aW5nIGZvciBjaGVja3BvaW50 IiwgZmFsc2UpOworCisJaW5pdFN0cmluZ0luZm8oJnN0bXQpOworCWFwcGVuZFN0cmluZ0lu Zm8oJnN0bXQsICJCQVNFX0JBQ0tVUCBQUk9HUkVTUyBOT1dBSVQgRVhDTFVERV9DT05GIik7 CisJaWYgKGNsdXN0ZXJfbmFtZSAmJiBjbHVzdGVyX25hbWVbMF0pCisJCWFwcGVuZFN0cmlu Z0luZm8oJnN0bXQsICIgTEFCRUwgJXMiLCBxdW90ZV9saXRlcmFsX2NzdHIoY2x1c3Rlcl9u YW1lKSk7CisKKwlpZiAoUFFzZW5kUXVlcnkoY29ubi0+c3RyZWFtQ29ubiwgc3RtdC5kYXRh KSA9PSAwKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJtc2coImNvdWxkIG5vdCBzdGFy dCBiYXNlIGJhY2t1cCBvbiByZW1vdGUgc2VydmVyOiAlcyIsCisJCQkJCQlwY2hvbXAoUFFl cnJvck1lc3NhZ2UoY29ubi0+c3RyZWFtQ29ubikpKSkpOworCisJLyoKKwkgKiBGaXJzdCBy ZXN1bHQgc2V0OiBXQUwgc3RhcnQgcG9zaXRpb24gYW5kIHRpbWVsaW5lIElECisJICovCisJ cmVzID0gUFFnZXRSZXN1bHQoY29ubi0+c3RyZWFtQ29ubik7CisJaWYgKFBRcmVzdWx0U3Rh dHVzKHJlcykgIT0gUEdSRVNfVFVQTEVTX09LKQorCXsKKwkJUFFjbGVhcihyZXMpOworCQll cmVwb3J0KEVSUk9SLAorCQkJCShlcnJtc2coImNvdWxkIG5vdCBzdGFydCBiYXNlIGJhY2t1 cCBvbiByZW1vdGUgc2VydmVyOiAlcyIsCisJCQkJCQlwY2hvbXAoUFFlcnJvck1lc3NhZ2Uo Y29ubi0+c3RyZWFtQ29ubikpKSkpOworCX0KKwlpZiAoUFFudHVwbGVzKHJlcykgIT0gMSkK Kwl7CisJCVBRY2xlYXIocmVzKTsKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJybXNnKCJz ZXJ2ZXIgcmV0dXJuZWQgdW5leHBlY3RlZCByZXNwb25zZSB0byBCQVNFX0JBQ0tVUCBjb21t YW5kOyBnb3QgJWQgcm93cyBhbmQgJWQgZmllbGRzLCBleHBlY3RlZCAlZCByb3dzIGFuZCAl ZCBmaWVsZHMiLAorCQkJCQkJUFFudHVwbGVzKHJlcyksIFBRbmZpZWxkcyhyZXMpLCAxLCAy KSkpOworCX0KKworCWVyZXBvcnQoTE9HLAorCQkJKGVycm1zZygicmVtb3RlIGNoZWNrcG9p bnQgY29tcGxldGVkIikpKTsKKworCXN0cmxjcHkoeGxvZ3N0YXJ0LCBQUWdldHZhbHVlKHJl cywgMCwgMCksIHNpemVvZih4bG9nc3RhcnQpKTsKKwlzdGFydHRsaSA9IGF0b2koUFFnZXR2 YWx1ZShyZXMsIDAsIDEpKTsKKwlQUWNsZWFyKHJlcyk7CisJZWxvZyhERUJVRzEsICJ3cml0 ZS1haGVhZCBsb2cgc3RhcnQgcG9pbnQ6ICVzIG9uIHRpbWVsaW5lICV1IiwKKwkJIHhsb2dz dGFydCwgc3RhcnR0bGkpOworCXJlY3B0ciA9IHBnX2xzbl9pbl9pbnRlcm5hbCh4bG9nc3Rh cnQsICZlcnJvcik7CisJaWYgKGVycm9yKQorCQllbG9nKEVSUk9SLCAiaW52YWxpZCBMU04g cmVjZWl2ZWQ6ICVzIiwgeGxvZ3N0YXJ0KTsKKworCS8qCisJICogU2Vjb25kIHJlc3VsdCBz ZXQ6IHRhYmxlc3BhY2UgaW5mb3JtYXRpb24KKwkgKi8KKwlyZXMgPSBQUWdldFJlc3VsdChj b25uLT5zdHJlYW1Db25uKTsKKwlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19U VVBMRVNfT0spCisJeworCQlQUWNsZWFyKHJlcyk7CisJCWVyZXBvcnQoRVJST1IsCisJCQkJ KGVycm1zZygiY291bGQgbm90IGdldCBiYWNrdXAgaGVhZGVyOiAlcyIsCisJCQkJCQlwY2hv bXAoUFFlcnJvck1lc3NhZ2UoY29ubi0+c3RyZWFtQ29ubikpKSkpOworCX0KKwlpZiAoUFFu dHVwbGVzKHJlcykgPCAxKQorCXsKKwkJUFFjbGVhcihyZXMpOworCQllcmVwb3J0KEVSUk9S LAorCQkJCShlcnJtc2coIm5vIGRhdGEgcmV0dXJuZWQgZnJvbSBzZXJ2ZXIiKSkpOworCX0K KworCXRvdGFsc2l6ZV9rYiA9IHRvdGFsZG9uZSA9IDA7CisJdGFibGVzcGFjZWNvdW50ID0g UFFudHVwbGVzKHJlcyk7CisJZm9yIChpbnQgaSA9IDA7IGkgPCBQUW50dXBsZXMocmVzKTsg aSsrKQorCXsKKwkJdG90YWxzaXplX2tiICs9IGF0b2woUFFnZXR2YWx1ZShyZXMsIGksIDIp KTsKKwl9CisKKwlSZXF1ZXN0WExvZ1N0cmVhbWluZyhzdGFydHRsaSwgcmVjcHRyLCBQcmlt YXJ5Q29ubkluZm8sIFByaW1hcnlTbG90TmFtZSk7CisKKwkvKgorCSAqIFN0YXJ0IHJlY2Vp dmluZyBjaHVua3MKKwkgKi8KKwlmb3IgKGludCBpID0gMDsgaSA8IFBRbnR1cGxlcyhyZXMp OyBpKyspCisJeworCQl0YWJsZXNwYWNlbnVtID0gaTsKKwkJUmVjZWl2ZUFuZFVucGFja1Rh ckZpbGUoY29ubi0+c3RyZWFtQ29ubiwgcmVzKTsKKwl9CisJdGFibGVzcGFjZW51bSsrOwor CWJhc2VfYmFja3VwX3JlcG9ydF9wcm9ncmVzcygpOworCisJUFFjbGVhcihyZXMpOworCisJ LyoKKwkgKiBGaW5hbCByZXN1bHQgc2V0OiBXQUwgZW5kIHBvc2l0aW9uIGFuZCB0aW1lbGlu ZSBJRAorCSAqLworCXJlcyA9IFBRZ2V0UmVzdWx0KGNvbm4tPnN0cmVhbUNvbm4pOworCWlm IChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX1RVUExFU19PSykKKwl7CisJCVBRY2xl YXIocmVzKTsKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJybXNnKCJjb3VsZCBub3QgZ2V0 IHdyaXRlLWFoZWFkIGxvZyBlbmQgcG9zaXRpb24gZnJvbSBzZXJ2ZXI6ICVzIiwKKwkJCQkJ CXBjaG9tcChQUWVycm9yTWVzc2FnZShjb25uLT5zdHJlYW1Db25uKSkpKSk7CisJfQorCWlm IChQUW50dXBsZXMocmVzKSAhPSAxKQorCXsKKwkJUFFjbGVhcihyZXMpOworCQllcmVwb3J0 KEVSUk9SLAorCQkJCShlcnJtc2coIm5vIHdyaXRlLWFoZWFkIGxvZyBlbmQgcG9zaXRpb24g cmV0dXJuZWQgZnJvbSBzZXJ2ZXIiKSkpOworCX0KKwlQUWNsZWFyKHJlcyk7CisKKwlyZXMg PSBQUWdldFJlc3VsdChjb25uLT5zdHJlYW1Db25uKTsKKwlpZiAoUFFyZXN1bHRTdGF0dXMo cmVzKSAhPSBQR1JFU19DT01NQU5EX09LKQorCXsKKwkJY29uc3QgY2hhciAqc3Fsc3RhdGUg PSBQUXJlc3VsdEVycm9yRmllbGQocmVzLCBQR19ESUFHX1NRTFNUQVRFKTsKKworCQlpZiAo c3Fsc3RhdGUgJiYKKwkJCXN0cmNtcChzcWxzdGF0ZSwgIlhYMDAxIiAvKkVSUkNPREVfREFU QV9DT1JSVVBURUQqLykgPT0gMCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJtc2co ImNoZWNrc3VtIGVycm9yIG9jY3VycmVkIikpKTsKKwkJZWxzZQorCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJKGVycm1zZygiZmluYWwgcmVjZWl2ZSBmYWlsZWQ6ICVzIiwKKwkJCQkJCQlw Y2hvbXAoUFFlcnJvck1lc3NhZ2UoY29ubi0+c3RyZWFtQ29ubikpKSkpOworCX0KKwlQUWNs ZWFyKHJlcyk7Cit9CisKIC8qCiAgKiBTdGFydCBzdHJlYW1pbmcgV0FMIGRhdGEgZnJvbSBn aXZlbiBzdHJlYW1pbmcgb3B0aW9ucy4KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9yZXBsX2dyYW0ueSBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3JlcGxf Z3JhbS55CmluZGV4IDJkOTY1Njc0MDkuLjBhNjc5ZWEwZWUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3JlcGxfZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3JlcGxfZ3JhbS55CkBAIC03OCw2ICs3OCw3IEBAIHN0YXRpYyBTUUxDbWQgKm1h a2Vfc3FsY21kKHZvaWQpOwogJXRva2VuIEtfV0FMCiAldG9rZW4gS19UQUJMRVNQQUNFX01B UAogJXRva2VuIEtfTk9WRVJJRllfQ0hFQ0tTVU1TCisldG9rZW4gS19FWENMVURFX0NPTkYK ICV0b2tlbiBLX1RJTUVMSU5FCiAldG9rZW4gS19QSFlTSUNBTAogJXRva2VuIEtfTE9HSUNB TApAQCAtMTU0LDggKzE1NSw3IEBAIHZhcl9uYW1lOglJREVOVAl7ICQkID0gJDE7IH0KIAkJ OwogCiAvKgotICogQkFTRV9CQUNLVVAgW0xBQkVMICc8bGFiZWw+J10gW1BST0dSRVNTXSBb RkFTVF0gW1dBTF0gW05PV0FJVF0KLSAqIFtNQVhfUkFURSAlZF0gW1RBQkxFU1BBQ0VfTUFQ XSBbTk9WRVJJRllfQ0hFQ0tTVU1TXQorICogQkFTRV9CQUNLVVAgW29wdGlvbl0uLi4KICAq LwogYmFzZV9iYWNrdXA6CiAJCQlLX0JBU0VfQkFDS1VQIGJhc2VfYmFja3VwX29wdF9saXN0 CkBAIC0yMTQsNiArMjE0LDExIEBAIGJhc2VfYmFja3VwX29wdDoKIAkJCQkgICQkID0gbWFr ZURlZkVsZW0oIm5vdmVyaWZ5X2NoZWNrc3VtcyIsCiAJCQkJCQkJCSAgIChOb2RlICopbWFr ZUludGVnZXIodHJ1ZSksIC0xKTsKIAkJCQl9CisJCQl8IEtfRVhDTFVERV9DT05GCisJCQkJ eworCQkJCSAgJCQgPSBtYWtlRGVmRWxlbSgiZXhjbHVkZV9jb25mIiwKKwkJCQkJCQkJICAg KE5vZGUgKiltYWtlSW50ZWdlcih0cnVlKSwgLTEpOworCQkJCX0KIAkJCTsKIAogY3JlYXRl X3JlcGxpY2F0aW9uX3Nsb3Q6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9yZXBsX3NjYW5uZXIubCBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3JlcGxfc2Nhbm5l ci5sCmluZGV4IDE0YzlhMWU3OTguLmMyZTJhY2VkN2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3JlcGxfc2Nhbm5lci5sCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3JlcGxfc2Nhbm5lci5sCkBAIC05Myw2ICs5Myw3IEBAIE1BWF9SQVRFCQl7IHJl dHVybiBLX01BWF9SQVRFOyB9CiBXQUwJCQl7IHJldHVybiBLX1dBTDsgfQogVEFCTEVTUEFD RV9NQVAJCQl7IHJldHVybiBLX1RBQkxFU1BBQ0VfTUFQOyB9CiBOT1ZFUklGWV9DSEVDS1NV TVMJeyByZXR1cm4gS19OT1ZFUklGWV9DSEVDS1NVTVM7IH0KK0VYQ0xVREVfQ09ORgkJCXsg cmV0dXJuIEtfRVhDTFVERV9DT05GOyB9CiBUSU1FTElORQkJCXsgcmV0dXJuIEtfVElNRUxJ TkU7IH0KIFNUQVJUX1JFUExJQ0FUSU9OCXsgcmV0dXJuIEtfU1RBUlRfUkVQTElDQVRJT047 IH0KIENSRUFURV9SRVBMSUNBVElPTl9TTE9UCQl7IHJldHVybiBLX0NSRUFURV9SRVBMSUNB VElPTl9TTE9UOyB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvZmQu YyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9mZC5jCmluZGV4IGZhNzliNDVmNjMuLjZk ZDdlMmY5MzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9mZC5jCisr KyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9mZC5jCkBAIC0zMTU0LDIxICszMTU0LDE0 IEBAIGxvb2tzX2xpa2VfdGVtcF9yZWxfbmFtZShjb25zdCBjaGFyICpuYW1lKQogICogT3Ro ZXIgc3ltbGlua3MgYXJlIHByZXN1bWVkIHRvIHBvaW50IGF0IGZpbGVzIHdlJ3JlIG5vdCBy ZXNwb25zaWJsZQogICogZm9yIGZzeW5jaW5nLCBhbmQgbWlnaHQgbm90IGhhdmUgcHJpdmls ZWdlcyB0byB3cml0ZSBhdCBhbGwuCiAgKgotICogRXJyb3JzIGFyZSBsb2dnZWQgYnV0IG5v dCBjb25zaWRlcmVkIGZhdGFsOyB0aGF0J3MgYmVjYXVzZSB0aGlzIGlzIHVzZWQKLSAqIG9u bHkgZHVyaW5nIGRhdGFiYXNlIHN0YXJ0dXAsIHRvIGRlYWwgd2l0aCB0aGUgcG9zc2liaWxp dHkgdGhhdCB0aGVyZSBhcmUKLSAqIGlzc3VlZC1idXQtdW5zeW5jZWQgd3JpdGVzIHBlbmRp bmcgYWdhaW5zdCB0aGUgZGF0YSBkaXJlY3RvcnkuICBXZSB3YW50IHRvCi0gKiBlbnN1cmUg dGhhdCBzdWNoIHdyaXRlcyByZWFjaCBkaXNrIGJlZm9yZSBhbnl0aGluZyB0aGF0J3MgZG9u ZSBpbiB0aGUgbmV3Ci0gKiBydW4uICBIb3dldmVyLCBhYm9ydGluZyBvbiBlcnJvciB3b3Vs ZCByZXN1bHQgaW4gZmFpbHVyZSB0byBzdGFydCBmb3IKLSAqIGhhcm1sZXNzIGNhc2VzIHN1 Y2ggYXMgcmVhZC1vbmx5IGZpbGVzIGluIHRoZSBkYXRhIGRpcmVjdG9yeSwgYW5kIHRoYXQn cwotICogbm90IGdvb2QgZWl0aGVyLgotICoKLSAqIE5vdGUgdGhhdCBpZiB3ZSBwcmV2aW91 c2x5IGNyYXNoZWQgZHVlIHRvIGEgUEFOSUMgb24gZnN5bmMoKSwgd2UnbGwgYmUKLSAqIHJl d3JpdGluZyBhbGwgY2hhbmdlcyBhZ2FpbiBkdXJpbmcgcmVjb3ZlcnkuCisgKiBJZiBwcmVf c3luYyBpcyB0cnVlLCBpc3N1ZSBmbHVzaCByZXF1ZXN0cyB0byB0aGUga2VybmVsIGJlZm9y ZSBzdGFydGluZyB0aGUKKyAqIGFjdHVhbCBmc3luYyBjYWxscy4gIFRoaXMgY2FuIGJlIHNr aXBwZWQgaWYgdGhlIGNhbGxlciBoYXMgYWxyZWFkeSBkb25lIGl0CisgKiBpdHNlbGYuCiAg KgogICogTm90ZSB3ZSBhc3N1bWUgd2UncmUgY2hkaXInZCBpbnRvIFBHREFUQSB0byBiZWdp biB3aXRoLgogICovCiB2b2lkCi1TeW5jRGF0YURpcmVjdG9yeSh2b2lkKQorU3luY0RhdGFE aXJlY3RvcnkoYm9vbCBwcmVfc3luYywgaW50IGxvZ2xldmVsKQogewogCWJvb2wJCXhsb2df aXNfc3ltbGluazsKIApAQCAtMzE4Nyw3ICszMTgwLDcgQEAgU3luY0RhdGFEaXJlY3Rvcnko dm9pZCkKIAkJc3RydWN0IHN0YXQgc3Q7CiAKIAkJaWYgKGxzdGF0KCJwZ193YWwiLCAmc3Qp IDwgMCkKLQkJCWVyZXBvcnQoTE9HLAorCQkJZXJlcG9ydChsb2dsZXZlbCwKIAkJCQkJKGVy cmNvZGVfZm9yX2ZpbGVfYWNjZXNzKCksCiAJCQkJCSBlcnJtc2coImNvdWxkIG5vdCBzdGF0 IGZpbGUgXCIlc1wiOiAlbSIsCiAJCQkJCQkJInBnX3dhbCIpKSk7CkBAIC0zMjAxLDE1ICsz MTk0LDE4IEBAIFN5bmNEYXRhRGlyZWN0b3J5KHZvaWQpCiAKIAkvKgogCSAqIElmIHBvc3Np YmxlLCBoaW50IHRvIHRoZSBrZXJuZWwgdGhhdCB3ZSdyZSBzb29uIGdvaW5nIHRvIGZzeW5j IHRoZSBkYXRhCi0JICogZGlyZWN0b3J5IGFuZCBpdHMgY29udGVudHMuICBFcnJvcnMgaW4g dGhpcyBzdGVwIGFyZSBldmVuIGxlc3MKKwkgKiBkaXJlY3RvcnkgYW5kIGl0cyBjb250ZW50 cy4gIEVycm9ycyBpbiB0aGlzIHN0ZXAgYXJlIGxlc3MKIAkgKiBpbnRlcmVzdGluZyB0aGFu IG5vcm1hbCwgc28gbG9nIHRoZW0gb25seSBhdCBERUJVRzEuCiAJICovCisJaWYgKHByZV9z eW5jKQorCXsKICNpZmRlZiBQR19GTFVTSF9EQVRBX1dPUktTCi0Jd2Fsa2RpcigiLiIsIHBy ZV9zeW5jX2ZuYW1lLCBmYWxzZSwgREVCVUcxKTsKLQlpZiAoeGxvZ19pc19zeW1saW5rKQot CQl3YWxrZGlyKCJwZ193YWwiLCBwcmVfc3luY19mbmFtZSwgZmFsc2UsIERFQlVHMSk7Ci0J d2Fsa2RpcigicGdfdGJsc3BjIiwgcHJlX3N5bmNfZm5hbWUsIHRydWUsIERFQlVHMSk7CisJ CXdhbGtkaXIoIi4iLCBwcmVfc3luY19mbmFtZSwgZmFsc2UsIERFQlVHMSk7CisJCWlmICh4 bG9nX2lzX3N5bWxpbmspCisJCQl3YWxrZGlyKCJwZ193YWwiLCBwcmVfc3luY19mbmFtZSwg ZmFsc2UsIERFQlVHMSk7CisJCXdhbGtkaXIoInBnX3RibHNwYyIsIHByZV9zeW5jX2ZuYW1l LCB0cnVlLCBERUJVRzEpOwogI2VuZGlmCisJfQogCiAJLyoKIAkgKiBOb3cgd2UgZG8gdGhl IGZzeW5jKClzIGluIHRoZSBzYW1lIG9yZGVyLgpAQCAtMzIyMCwxMCArMzIxNiwxMCBAQCBT eW5jRGF0YURpcmVjdG9yeSh2b2lkKQogCSAqIGluIHBnX3RibHNwYywgdGhleSdsbCBnZXQg ZnN5bmMnZCB0d2ljZS4gIFRoYXQncyBub3QgYW4gZXhwZWN0ZWQgY2FzZQogCSAqIHNvIHdl IGRvbid0IHdvcnJ5IGFib3V0IG9wdGltaXppbmcgaXQuCiAJICovCi0Jd2Fsa2RpcigiLiIs IGRhdGFkaXJfZnN5bmNfZm5hbWUsIGZhbHNlLCBMT0cpOworCXdhbGtkaXIoIi4iLCBkYXRh ZGlyX2ZzeW5jX2ZuYW1lLCBmYWxzZSwgbG9nbGV2ZWwpOwogCWlmICh4bG9nX2lzX3N5bWxp bmspCi0JCXdhbGtkaXIoInBnX3dhbCIsIGRhdGFkaXJfZnN5bmNfZm5hbWUsIGZhbHNlLCBM T0cpOwotCXdhbGtkaXIoInBnX3RibHNwYyIsIGRhdGFkaXJfZnN5bmNfZm5hbWUsIHRydWUs IExPRyk7CisJCXdhbGtkaXIoInBnX3dhbCIsIGRhdGFkaXJfZnN5bmNfZm5hbWUsIGZhbHNl LCBsb2dsZXZlbCk7CisJd2Fsa2RpcigicGdfdGJsc3BjIiwgZGF0YWRpcl9mc3luY19mbmFt ZSwgdHJ1ZSwgbG9nbGV2ZWwpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9pbml0 ZGIvaW5pdGRiLmMgYi9zcmMvYmluL2luaXRkYi9pbml0ZGIuYwppbmRleCBlYzZkMGJkZjhl Li5mYzhjYTVhNjViIDEwMDY0NAotLS0gYS9zcmMvYmluL2luaXRkYi9pbml0ZGIuYworKysg Yi9zcmMvYmluL2luaXRkYi9pbml0ZGIuYwpAQCAtMTM2LDYgKzEzNiw3IEBAIHN0YXRpYyBj aGFyICpwd2ZpbGVuYW1lID0gTlVMTDsKIHN0YXRpYyBjaGFyICpzdXBlcnVzZXJfcGFzc3dv cmQgPSBOVUxMOwogc3RhdGljIGNvbnN0IGNoYXIgKmF1dGhtZXRob2Rob3N0ID0gTlVMTDsK IHN0YXRpYyBjb25zdCBjaGFyICphdXRobWV0aG9kbG9jYWwgPSBOVUxMOworc3RhdGljIGJv b2wgcmVwbGljYSA9IGZhbHNlOwogc3RhdGljIGJvb2wgZGVidWcgPSBmYWxzZTsKIHN0YXRp YyBib29sIG5vY2xlYW4gPSBmYWxzZTsKIHN0YXRpYyBib29sIGRvX3N5bmMgPSB0cnVlOwpA QCAtMjkzNSw2ICsyOTM2LDIyIEBAIGluaXRpYWxpemVfZGF0YV9kaXJlY3Rvcnkodm9pZCkK IAkvKiBOb3cgY3JlYXRlIGFsbCB0aGUgdGV4dCBjb25maWcgZmlsZXMgKi8KIAlzZXR1cF9j b25maWcoKTsKIAorCS8qCisJICogSWYgZGF0YSBkaXJlY3RvcnkgZm9yIHJlcGxpY2EgcmVx dWVzdGVkLCB3cml0ZSBiYXNlYmFja3VwLnNpZ25hbCwgYW5kCisJICogdGhlbiB3ZSBhcmUg ZG9uZSBoZXJlLgorCSAqLworCWlmIChyZXBsaWNhKQorCXsKKwkJY2hhcgkgICAqcGF0aDsK KwkJY2hhcgkgICAqbGluZXNbMV0gPSB7TlVMTH07CisKKwkJcGF0aCA9IHBzcHJpbnRmKCIl cy9iYXNlYmFja3VwLnNpZ25hbCIsIHBnX2RhdGEpOworCQl3cml0ZWZpbGUocGF0aCwgbGlu ZXMpOworCQlmcmVlKHBhdGgpOworCisJCXJldHVybjsKKwl9CisKIAkvKiBCb290c3RyYXAg dGVtcGxhdGUxICovCiAJYm9vdHN0cmFwX3RlbXBsYXRlMSgpOwogCkBAIC0zMDI2LDYgKzMw NDMsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCXsid2FsLXNlZ3NpemUi LCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgMTJ9LAogCQl7ImRhdGEtY2hlY2tzdW1zIiwg bm9fYXJndW1lbnQsIE5VTEwsICdrJ30sCiAJCXsiYWxsb3ctZ3JvdXAtYWNjZXNzIiwgbm9f YXJndW1lbnQsIE5VTEwsICdnJ30sCisJCXsicmVwbGljYSIsIG5vX2FyZ3VtZW50LCBOVUxM LCAncid9LAogCQl7TlVMTCwgMCwgTlVMTCwgMH0KIAl9OwogCkBAIC0zMDY3LDcgKzMwODUs NyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAKIAkvKiBwcm9jZXNzIGNvbW1h bmQtbGluZSBvcHRpb25zICovCiAKLQl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyhhcmdjLCBh cmd2LCAiZEQ6RTprTDpuTlU6V0E6c1NUOlg6ZyIsIGxvbmdfb3B0aW9ucywgJm9wdGlvbl9p bmRleCkpICE9IC0xKQorCXdoaWxlICgoYyA9IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsICJk RDpFOmtMOm5OclU6V0E6c1NUOlg6ZyIsIGxvbmdfb3B0aW9ucywgJm9wdGlvbl9pbmRleCkp ICE9IC0xKQogCXsKIAkJc3dpdGNoIChjKQogCQl7CkBAIC0zMTEzLDYgKzMxMzEsOSBAQCBt YWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQljYXNlICdOJzoKIAkJCQlkb19zeW5j ID0gZmFsc2U7CiAJCQkJYnJlYWs7CisJCQljYXNlICdyJzoKKwkJCQlyZXBsaWNhID0gdHJ1 ZTsKKwkJCQlicmVhazsKIAkJCWNhc2UgJ1MnOgogCQkJCXN5bmNfb25seSA9IHRydWU7CiAJ CQkJYnJlYWs7CkBAIC0zMzM0LDkgKzMzNTUsMTkgQEAgbWFpbihpbnQgYXJnYywgY2hhciAq YXJndltdKQogCS8qIHRyYW5zbGF0b3I6IFRoaXMgaXMgYSBwbGFjZWhvbGRlciBpbiBhIHNo ZWxsIGNvbW1hbmQuICovCiAJYXBwZW5kUFFFeHBCdWZmZXIoc3RhcnRfZGJfY21kLCAiIC1s ICVzIHN0YXJ0IiwgXygibG9nZmlsZSIpKTsKIAotCXByaW50ZihfKCJcblN1Y2Nlc3MuIFlv dSBjYW4gbm93IHN0YXJ0IHRoZSBkYXRhYmFzZSBzZXJ2ZXIgdXNpbmc6XG5cbiIKLQkJCSAi ICAgICVzXG5cbiIpLAotCQkgICBzdGFydF9kYl9jbWQtPmRhdGEpOworCWlmICghcmVwbGlj YSkKKwl7CisJCXByaW50ZihfKCJcblN1Y2Nlc3MuIFlvdSBjYW4gbm93IHN0YXJ0IHRoZSBk YXRhYmFzZSBzZXJ2ZXIgdXNpbmc6XG5cbiIKKwkJCQkgIiAgICAlc1xuXG4iKSwKKwkJCSAg IHN0YXJ0X2RiX2NtZC0+ZGF0YSk7CisJfQorCWVsc2UKKwl7CisJCXByaW50ZihfKCJcblNv IGZhciBzbyBnb29kLiBOb3cgY29uZmlndXJlIHRoZSByZXBsaWNhdGlvbiBjb25uZWN0aW9u IGluXG4iCisJCQkJICJwb3N0Z3Jlc3FsLmNvbmYsIGFuZCB0aGVuIHN0YXJ0IHRoZSBkYXRh YmFzZSBzZXJ2ZXIgdXNpbmc6XG5cbiIKKwkJCQkgIiAgICAlc1xuXG4iKSwKKwkJCSAgIHN0 YXJ0X2RiX2NtZC0+ZGF0YSk7CisJfQogCiAJZGVzdHJveVBRRXhwQnVmZmVyKHN0YXJ0X2Ri X2NtZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfcmVzZXR3YWwvcGdfcmVzZXR3YWwu YyBiL3NyYy9iaW4vcGdfcmVzZXR3YWwvcGdfcmVzZXR3YWwuYwppbmRleCBmOWNmZWFlMjY0 Li5jOWVkZWI1NGQzIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3Jlc2V0d2FsL3BnX3Jlc2V0 d2FsLmMKKysrIGIvc3JjL2Jpbi9wZ19yZXNldHdhbC9wZ19yZXNldHdhbC5jCkBAIC03Niw3 ICs3Niw3IEBAIHN0YXRpYyBpbnQJV2FsU2VnU3o7CiBzdGF0aWMgaW50CXNldF93YWxfc2Vn c2l6ZTsKIAogc3RhdGljIHZvaWQgQ2hlY2tEYXRhVmVyc2lvbih2b2lkKTsKLXN0YXRpYyBi b29sIFJlYWRDb250cm9sRmlsZSh2b2lkKTsKK3N0YXRpYyBib29sIHJlYWRfY29udHJvbGZp bGUodm9pZCk7CiBzdGF0aWMgdm9pZCBHdWVzc0NvbnRyb2xWYWx1ZXModm9pZCk7CiBzdGF0 aWMgdm9pZCBQcmludENvbnRyb2xWYWx1ZXMoYm9vbCBndWVzc2VkKTsKIHN0YXRpYyB2b2lk IFByaW50TmV3Q29udHJvbFZhbHVlcyh2b2lkKTsKQEAgLTM5Myw3ICszOTMsNyBAQCBtYWlu KGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJLyoKIAkgKiBBdHRlbXB0IHRvIHJlYWQgdGhl IGV4aXN0aW5nIHBnX2NvbnRyb2wgZmlsZQogCSAqLwotCWlmICghUmVhZENvbnRyb2xGaWxl KCkpCisJaWYgKCFyZWFkX2NvbnRyb2xmaWxlKCkpCiAJCUd1ZXNzQ29udHJvbFZhbHVlcygp OwogCiAJLyoKQEAgLTU3OCw3ICs1NzgsNyBAQCBDaGVja0RhdGFWZXJzaW9uKHZvaWQpCiAg KiB0byB0aGUgY3VycmVudCBmb3JtYXQuICAoQ3VycmVudGx5IHdlIGRvbid0IGRvIGFueXRo aW5nIG9mIHRoZSBzb3J0LikKICAqLwogc3RhdGljIGJvb2wKLVJlYWRDb250cm9sRmlsZSh2 b2lkKQorcmVhZF9jb250cm9sZmlsZSh2b2lkKQogewogCWludAkJCWZkOwogCWludAkJCWxl bjsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MveGxvZy5oCmluZGV4IDk4YjAzM2ZjMjAuLmU1NmQ4NWE5NmQgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNz L3hsb2cuaApAQCAtMTI3LDggKzEyNyw4IEBAIGV4dGVybiBjaGFyICphcmNoaXZlQ2xlYW51 cENvbW1hbmQ7CiBleHRlcm4gYm9vbCByZWNvdmVyeVRhcmdldEluY2x1c2l2ZTsKIGV4dGVy biBpbnQJcmVjb3ZlcnlUYXJnZXRBY3Rpb247CiBleHRlcm4gaW50CXJlY292ZXJ5X21pbl9h cHBseV9kZWxheTsKLWV4dGVybiBjaGFyICpQcmltYXJ5Q29ubkluZm87Ci1leHRlcm4gY2hh ciAqUHJpbWFyeVNsb3ROYW1lOworZXh0ZXJuIFBHRExMSU1QT1JUIGNoYXIgKlByaW1hcnlD b25uSW5mbzsKK2V4dGVybiBQR0RMTElNUE9SVCBjaGFyICpQcmltYXJ5U2xvdE5hbWU7CiAK IC8qIGluZGlyZWN0bHkgc2V0IHZpYSBHVUMgc3lzdGVtICovCiBleHRlcm4gVHJhbnNhY3Rp b25JZCByZWNvdmVyeVRhcmdldFhpZDsKQEAgLTI5OCw2ICsyOTgsOSBAQCBleHRlcm4gU2l6 ZSBYTE9HU2htZW1TaXplKHZvaWQpOwogZXh0ZXJuIHZvaWQgWExPR1NobWVtSW5pdCh2b2lk KTsKIGV4dGVybiB2b2lkIEJvb3RTdHJhcFhMT0codm9pZCk7CiBleHRlcm4gdm9pZCBMb2Nh bFByb2Nlc3NDb250cm9sRmlsZShib29sIHJlc2V0KTsKK2V4dGVybiB2b2lkIEluaXRDb250 cm9sRmlsZSh1aW50NjQgc3lzaWRlbnRpZmllcik7CitleHRlcm4gdm9pZCBXcml0ZUNvbnRy b2xGaWxlKHZvaWQpOworZXh0ZXJuIHZvaWQgUmVhZENvbnRyb2xGaWxlKHZvaWQpOwogZXh0 ZXJuIHZvaWQgU3RhcnR1cFhMT0codm9pZCk7CiBleHRlcm4gdm9pZCBTaHV0ZG93blhMT0co aW50IGNvZGUsIERhdHVtIGFyZyk7CiBleHRlcm4gdm9pZCBJbml0WExPR0FjY2Vzcyh2b2lk KTsKQEAgLTM1NCw2ICszNTcsNyBAQCBleHRlcm4gdm9pZCByZWdpc3Rlcl9wZXJzaXN0ZW50 X2Fib3J0X2JhY2t1cF9oYW5kbGVyKHZvaWQpOwogZXh0ZXJuIFNlc3Npb25CYWNrdXBTdGF0 ZSBnZXRfYmFja3VwX3N0YXR1cyh2b2lkKTsKIAogLyogRmlsZSBwYXRoIG5hbWVzIChhbGwg cmVsYXRpdmUgdG8gJFBHREFUQSkgKi8KKyNkZWZpbmUgQkFTRUJBQ0tVUF9TSUdOQUxfRklM RQkiYmFzZWJhY2t1cC5zaWduYWwiCiAjZGVmaW5lIFJFQ09WRVJZX1NJR05BTF9GSUxFCSJy ZWNvdmVyeS5zaWduYWwiCiAjZGVmaW5lIFNUQU5EQllfU0lHTkFMX0ZJTEUJCSJzdGFuZGJ5 LnNpZ25hbCIKICNkZWZpbmUgQkFDS1VQX0xBQkVMX0ZJTEUJCSJiYWNrdXBfbGFiZWwiCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaCBiL3NyYy9pbmNsdWRlL21pc2Nh ZG1pbi5oCmluZGV4IDYyZDY0YWEwYTEuLjM4MzExYjA1YTEgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL21pc2NhZG1pbi5oCisrKyBiL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCkBAIC0z OTYsNiArMzk2LDcgQEAgdHlwZWRlZiBlbnVtCiAJQ2hlY2tlclByb2Nlc3MgPSAwLAogCUJv b3RzdHJhcFByb2Nlc3MsCiAJU3RhcnR1cFByb2Nlc3MsCisJQmFzZUJhY2t1cFByb2Nlc3Ms CiAJQmdXcml0ZXJQcm9jZXNzLAogCUNoZWNrcG9pbnRlclByb2Nlc3MsCiAJV2FsV3JpdGVy UHJvY2VzcywKQEAgLTQwOCw2ICs0MDksNyBAQCBleHRlcm4gQXV4UHJvY1R5cGUgTXlBdXhQ cm9jVHlwZTsKIAogI2RlZmluZSBBbUJvb3RzdHJhcFByb2Nlc3MoKQkJKE15QXV4UHJvY1R5 cGUgPT0gQm9vdHN0cmFwUHJvY2VzcykKICNkZWZpbmUgQW1TdGFydHVwUHJvY2VzcygpCQkJ KE15QXV4UHJvY1R5cGUgPT0gU3RhcnR1cFByb2Nlc3MpCisjZGVmaW5lIEFtQmFzZUJhY2t1 cFByb2Nlc3MoKQkJKE15QXV4UHJvY1R5cGUgPT0gQmFzZUJhY2t1cFByb2Nlc3MpCiAjZGVm aW5lIEFtQmFja2dyb3VuZFdyaXRlclByb2Nlc3MoKSAoTXlBdXhQcm9jVHlwZSA9PSBCZ1dy aXRlclByb2Nlc3MpCiAjZGVmaW5lIEFtQ2hlY2twb2ludGVyUHJvY2VzcygpCQkoTXlBdXhQ cm9jVHlwZSA9PSBDaGVja3BvaW50ZXJQcm9jZXNzKQogI2RlZmluZSBBbVdhbFdyaXRlclBy b2Nlc3MoKQkJKE15QXV4UHJvY1R5cGUgPT0gV2FsV3JpdGVyUHJvY2VzcykKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3Bnc3RhdC5oIGIvc3JjL2luY2x1ZGUvcGdzdGF0LmgKaW5kZXgg MzZiNTMwYmMyNy4uMmY4N2VmNjNhNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGdzdGF0 LmgKKysrIGIvc3JjL2luY2x1ZGUvcGdzdGF0LmgKQEAgLTcyMSw2ICs3MjEsNyBAQCB0eXBl ZGVmIGVudW0gQmFja2VuZFR5cGUKIAlCX0FVVE9WQUNfTEFVTkNIRVIsCiAJQl9BVVRPVkFD X1dPUktFUiwKIAlCX0JBQ0tFTkQsCisJQl9CQVNFX0JBQ0tVUCwKIAlCX0JHX1dPUktFUiwK IAlCX0JHX1dSSVRFUiwKIAlCX0NIRUNLUE9JTlRFUiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL2Jhc2ViYWNrdXAuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L2Jhc2ViYWNrdXAuaAppbmRleCAwN2VkMjgxYmQ2Li4wNzY0YTdiNjdiIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9iYXNlYmFja3VwLmgKKysrIGIvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vYmFzZWJhY2t1cC5oCkBAIC0zMyw0ICszMyw2IEBAIGV4dGVybiB2 b2lkIFNlbmRCYXNlQmFja3VwKEJhc2VCYWNrdXBDbWQgKmNtZCk7CiAKIGV4dGVybiBpbnQ2 NCBzZW5kVGFibGVzcGFjZShjaGFyICpwYXRoLCBib29sIHNpemVvbmx5KTsKIAorZXh0ZXJu IHZvaWQgQmFzZUJhY2t1cE1haW4odm9pZCk7CisKICNlbmRpZgkJCQkJCQkvKiBfQkFTRUJB Q0tVUF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNl aXZlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaAppbmRleCBl MDhhZmM2NTQ4Li44M2ZjNGIzZmIwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi93YWxyZWNlaXZlci5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJl Y2VpdmVyLmgKQEAgLTIyMSw2ICsyMjEsNyBAQCB0eXBlZGVmIHZvaWQgKCp3YWxyY3ZfcmVh ZHRpbWVsaW5laGlzdG9yeWZpbGVfZm4pIChXYWxSZWNlaXZlckNvbm4gKmNvbm4sCiAJCQkJ CQkJCQkJCQkgICBUaW1lTGluZUlEIHRsaSwKIAkJCQkJCQkJCQkJCSAgIGNoYXIgKipmaWxl bmFtZSwKIAkJCQkJCQkJCQkJCSAgIGNoYXIgKipjb250ZW50LCBpbnQgKnNpemUpOwordHlw ZWRlZiB2b2lkICgqd2FscmN2X2Jhc2VfYmFja3VwX2ZuKSAoV2FsUmVjZWl2ZXJDb25uICpj b25uKTsKIHR5cGVkZWYgYm9vbCAoKndhbHJjdl9zdGFydHN0cmVhbWluZ19mbikgKFdhbFJl Y2VpdmVyQ29ubiAqY29ubiwKIAkJCQkJCQkJCQkgIGNvbnN0IFdhbFJjdlN0cmVhbU9wdGlv bnMgKm9wdGlvbnMpOwogdHlwZWRlZiB2b2lkICgqd2FscmN2X2VuZHN0cmVhbWluZ19mbikg KFdhbFJlY2VpdmVyQ29ubiAqY29ubiwKQEAgLTI0OSw2ICsyNTAsNyBAQCB0eXBlZGVmIHN0 cnVjdCBXYWxSZWNlaXZlckZ1bmN0aW9uc1R5cGUKIAl3YWxyY3ZfaWRlbnRpZnlfc3lzdGVt X2ZuIHdhbHJjdl9pZGVudGlmeV9zeXN0ZW07CiAJd2FscmN2X3NlcnZlcl92ZXJzaW9uX2Zu IHdhbHJjdl9zZXJ2ZXJfdmVyc2lvbjsKIAl3YWxyY3ZfcmVhZHRpbWVsaW5laGlzdG9yeWZp bGVfZm4gd2FscmN2X3JlYWR0aW1lbGluZWhpc3RvcnlmaWxlOworCXdhbHJjdl9iYXNlX2Jh Y2t1cF9mbiB3YWxyY3ZfYmFzZV9iYWNrdXA7CiAJd2FscmN2X3N0YXJ0c3RyZWFtaW5nX2Zu IHdhbHJjdl9zdGFydHN0cmVhbWluZzsKIAl3YWxyY3ZfZW5kc3RyZWFtaW5nX2ZuIHdhbHJj dl9lbmRzdHJlYW1pbmc7CiAJd2FscmN2X3JlY2VpdmVfZm4gd2FscmN2X3JlY2VpdmU7CkBA IC0yNzUsNiArMjc3LDggQEAgZXh0ZXJuIFBHRExMSU1QT1JUIFdhbFJlY2VpdmVyRnVuY3Rp b25zVHlwZSAqV2FsUmVjZWl2ZXJGdW5jdGlvbnM7CiAJV2FsUmVjZWl2ZXJGdW5jdGlvbnMt PndhbHJjdl9zZXJ2ZXJfdmVyc2lvbihjb25uKQogI2RlZmluZSB3YWxyY3ZfcmVhZHRpbWVs aW5laGlzdG9yeWZpbGUoY29ubiwgdGxpLCBmaWxlbmFtZSwgY29udGVudCwgc2l6ZSkgXAog CVdhbFJlY2VpdmVyRnVuY3Rpb25zLT53YWxyY3ZfcmVhZHRpbWVsaW5laGlzdG9yeWZpbGUo Y29ubiwgdGxpLCBmaWxlbmFtZSwgY29udGVudCwgc2l6ZSkKKyNkZWZpbmUgd2FscmN2X2Jh c2VfYmFja3VwKGNvbm4pIFwKKwlXYWxSZWNlaXZlckZ1bmN0aW9ucy0+d2FscmN2X2Jhc2Vf YmFja3VwKGNvbm4pCiAjZGVmaW5lIHdhbHJjdl9zdGFydHN0cmVhbWluZyhjb25uLCBvcHRp b25zKSBcCiAJV2FsUmVjZWl2ZXJGdW5jdGlvbnMtPndhbHJjdl9zdGFydHN0cmVhbWluZyhj b25uLCBvcHRpb25zKQogI2RlZmluZSB3YWxyY3ZfZW5kc3RyZWFtaW5nKGNvbm4sIG5leHRf dGxpKSBcCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2ZkLmggYi9zcmMvaW5j bHVkZS9zdG9yYWdlL2ZkLmgKaW5kZXggYzZjZTdlYWNmMi4uNWIzMTUzNDU1YyAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9mZC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3Jh Z2UvZmQuaApAQCAtMTQ4LDcgKzE0OCw3IEBAIGV4dGVybiB2b2lkIGZzeW5jX2ZuYW1lKGNv bnN0IGNoYXIgKmZuYW1lLCBib29sIGlzZGlyKTsKIGV4dGVybiBpbnQJZHVyYWJsZV9yZW5h bWUoY29uc3QgY2hhciAqb2xkZmlsZSwgY29uc3QgY2hhciAqbmV3ZmlsZSwgaW50IGxvZ2xl dmVsKTsKIGV4dGVybiBpbnQJZHVyYWJsZV91bmxpbmsoY29uc3QgY2hhciAqZm5hbWUsIGlu dCBsb2dsZXZlbCk7CiBleHRlcm4gaW50CWR1cmFibGVfbGlua19vcl9yZW5hbWUoY29uc3Qg Y2hhciAqb2xkZmlsZSwgY29uc3QgY2hhciAqbmV3ZmlsZSwgaW50IGxvZ2xldmVsKTsKLWV4 dGVybiB2b2lkIFN5bmNEYXRhRGlyZWN0b3J5KHZvaWQpOworZXh0ZXJuIHZvaWQgU3luY0Rh dGFEaXJlY3RvcnkoYm9vbCBwcmVfc3luYywgaW50IGxvZ2xldmVsKTsKIGV4dGVybiBpbnQJ ZGF0YV9zeW5jX2VsZXZlbChpbnQgZWxldmVsKTsKIAogLyogRmlsZW5hbWUgY29tcG9uZW50 cyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvZ3VjLmggYi9zcmMvaW5jbHVk ZS91dGlscy9ndWMuaAppbmRleCBjZTkzYWNlNzZjLi5jMDg3YzUxZGJlIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS91dGlscy9ndWMuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9ndWMu aApAQCAtMjY0LDcgKzI2NCw3IEBAIGV4dGVybiBpbnQJdGVtcF9maWxlX2xpbWl0OwogCiBl eHRlcm4gaW50CW51bV90ZW1wX2J1ZmZlcnM7CiAKLWV4dGVybiBjaGFyICpjbHVzdGVyX25h bWU7CitleHRlcm4gUEdETExJTVBPUlQgY2hhciAqY2x1c3Rlcl9uYW1lOwogZXh0ZXJuIFBH RExMSU1QT1JUIGNoYXIgKkNvbmZpZ0ZpbGVOYW1lOwogZXh0ZXJuIGNoYXIgKkhiYUZpbGVO YW1lOwogZXh0ZXJuIGNoYXIgKklkZW50RmlsZU5hbWU7CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWNvdmVyeS90LzAxOF9iYXNlYmFja3VwLnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8w MThfYmFzZWJhY2t1cC5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw Li45OTczMWZjMzg4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8w MThfYmFzZWJhY2t1cC5wbApAQCAtMCwwICsxLDI5IEBACisjIFRlc3QgYmFzZWJhY2t1cCB3 b3JrZXIgZnVuY3Rpb25hbGl0eQordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBQ b3N0Z3Jlc05vZGU7Cit1c2UgVGVzdExpYjsKK3VzZSBUZXN0OjpNb3JlIHRlc3RzID0+IDI7 CisKK215ICRub2RlMSA9IGdldF9uZXdfbm9kZSgnbm9kZTEnKTsKKyRub2RlMS0+aW5pdChh bGxvd3Nfc3RyZWFtaW5nID0+IDEpOworJG5vZGUxLT5zdGFydDsKKworJG5vZGUxLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJCQkgICJDUkVBVEUgVEFCTEUgdGFiX2ludCBBUyBTRUxF Q1QgZ2VuZXJhdGVfc2VyaWVzKDEsMTAwMCkgQVMgYSIpOworCitteSAkbm9kZTIgPSBnZXRf bmV3X25vZGUoJ25vZGUyJyk7Ciskbm9kZTItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAx LCBleHRyYSA9PiBbICctLXJlcGxpY2EnIF0pOworJG5vZGUyLT5hcHBlbmRfY29uZigncG9z dGdyZXNxbC5jb25mJywgInByaW1hcnlfY29ubmluZm8gPSAnIiAuICRub2RlMS0+Y29ubnN0 ciAuICInIik7CitteSAkb2xkX210aW1lID0gKHN0YXQoJG5vZGUyLT5kYXRhX2RpciAuICcv cG9zdGdyZXNxbC5jb25mJykpWzldOworJG5vZGUyLT5zdGFydDsKKworJG5vZGUxLT53YWl0 X2Zvcl9jYXRjaHVwKCRub2RlMiwgJ3JlcGxheScsICRub2RlMS0+bHNuKCdpbnNlcnQnKSk7 CisKK2lzKCRub2RlMi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikg RlJPTSB0YWJfaW50IiksCisgICBxcSgxMDAwKSwKKyAgICdjaGVjayBjb250ZW50IG9mIHN0 YW5kYnknKTsKKworbXkgJG5ld19tdGltZSA9IChzdGF0KCRub2RlMi0+ZGF0YV9kaXIgLiAn L3Bvc3RncmVzcWwuY29uZicpKVs5XTsKK2lzKCRuZXdfbXRpbWUsICRvbGRfbXRpbWUsCisg ICAnY29uZmlndXJhdGlvbiBmaWxlcyB3ZXJlIG5vdCBjb3BpZWQnKTsKCmJhc2UtY29tbWl0 OiBhMTY2ZDQwOGViMGIzNTAyM2MxNjllNzY1ZjQ2NjRjM2IxMTRiNTJlCi0tIAoyLjI0LjEK Cg== --------------9DBBCC9C3C5455B631633476--