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 1kzzbn-0005In-S2 for pgsql-hackers@arkaria.postgresql.org; Thu, 14 Jan 2021 10:12:04 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1kzzbH-00081Z-Af for pgsql-hackers@arkaria.postgresql.org; Thu, 14 Jan 2021 10:11:31 +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 1kzzbG-00081R-Vn for pgsql-hackers@lists.postgresql.org; Thu, 14 Jan 2021 10:11:31 +0000 Received: from oss.nttdata.com ([49.212.34.109]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kzzbD-0005Ac-J0 for pgsql-hackers@postgresql.org; Thu, 14 Jan 2021 10:11:30 +0000 Received: from oss.nttdata.com (localhost [127.0.0.1]) by oss.nttdata.com (Postfix) with ESMTP id 4055661692; Thu, 14 Jan 2021 19:11:23 +0900 (JST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.102.3 at oss.nttdata.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_9a2253ef1cbdc73b72aa234b019609a2" Date: Thu, 14 Jan 2021 19:11:23 +0900 From: torikoshia To: Kasahara Tatsuhito Cc: Tom Lane , Fujii Masao , Georgios Kokolatos , PostgreSQL-development Subject: Re: Get memory contexts of an arbitrary backend process In-Reply-To: <4ae7b086a5b49fdfec7c1154d6fc7a40@oss.nttdata.com> References: <0271f440ac77f2a4180e0e56ebd944d1@oss.nttdata.com> <270ec80dbbebfb5c6f2b9fdd7a7858b5@oss.nttdata.com> <160502083340.7362.4386116585349115146.pgcf@coridan.postgresql.org> <064d510f2d33edc37dfd6b8f3b6bd30e@oss.nttdata.com> <1685539.1606959410@sss.pgh.pa.us> <83ff0aff04fffc95cbd1fc1637a0fccc@oss.nttdata.com> <28e1feb71b94ac9918830bc4a0c1844f@oss.nttdata.com> <9a59401241e9269254e70c8e0ef1cc7a@oss.nttdata.com> <4ae7b086a5b49fdfec7c1154d6fc7a40@oss.nttdata.com> Message-ID: <40c1a4b19ad03beacee2642a3cd61c14@oss.nttdata.com> X-Sender: torikoshia@oss.nttdata.com User-Agent: Roundcube Webmail/1.1.9 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --=_9a2253ef1cbdc73b72aa234b019609a2 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed Since pg_get_target_backend_memory_contexts() waits to dump memory and it could lead dead lock as below. - session1 BEGIN; TRUNCATE t; - session2 BEGIN; TRUNCATE t; -- wait - session1 SELECT * FROM pg_get_target_backend_memory_contexts(); --wait Thanks for notifying me, Fujii-san. Attached v8 patch that prohibited calling the function inside transactions. Regards, -- Atsushi Torikoshi --=_9a2253ef1cbdc73b72aa234b019609a2 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v8-0001-Add-pg_get_target_backend_memory_contexts-to-coll.patch Content-Disposition: attachment; filename=v8-0001-Add-pg_get_target_backend_memory_contexts-to-coll.patch; size=34903 RnJvbSA4NDAxODVjMWFkNDBjYjdiYzQwMzMzYWIzODkyNzY2N2M0ZDQ4YzFkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYUBvc3MubnR0 ZGF0YS5jb20+CkRhdGU6IFRodSwgMTQgSmFuIDIwMjEgMTg6MjA6NDMgKzA5MDAKU3ViamVjdDog W1BBVENIIHY4XSBBZnRlciBjb21taXQgM2U5OGMwYmFmYjI4ZGUsIHdlIGNhbiBkaXNwbGF5IHRo ZSB1c2FnZSBvZgogdGhlIG1lbW9yeSBjb250ZXh0cyB1c2luZyBwZ19iYWNrZW5kX21lbW9yeV9j b250ZXh0cyBzeXN0ZW0gdmlldy4gSG93ZXZlciwKIGl0cyB0YXJnZXQgaXMgbGltaXRlZCB0byB0 aGUgcHJvY2VzcyBhdHRhY2hlZCB0byB0aGUgY3VycmVudCBzZXNzaW9uLiBUaGlzCiBwYXRjaCBp bnRyb2R1Y2VzIHBnX2dldF90YXJnZXRfYmFja2VuZF9tZW1vcnlfY29udGV4dHMoKSBhbmQgbWFr ZXMgaXQKIHBvc3NpYmxlIHRvIGNvbGxlY3QgbWVtb3J5IGNvbnRleHRzIG9mIHRoZSBzcGVjaWZp ZWQgcHJvY2Vzcy4KCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jICAgICAg ICAgICAgfCAgIDcgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAgICAg ICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdzdGF0LmMgICAgICAgICAgICAg IHwgICAzICsKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2Jhc2ViYWNrdXAuYyAgICAgICAgIHwg ICAzICsKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYyAgICAgICAgICAgICAgIHwgICAy ICsKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYyAgICAgICAgIHwgICA0ICsK IHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sd2xvY2tuYW1lcy50eHQgICAgIHwgICAxICsKIHNy Yy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyAgICAgICAgICAgICAgICAgIHwgICA1ICsKIHNyYy9i YWNrZW5kL3V0aWxzL2FkdC9tY3h0ZnVuY3MuYyAgICAgICAgICAgIHwgNzQyICsrKysrKysrKysr KysrKysrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jICAgICAgICAgICAgIHwg ICAxICsKIHNyYy9iaW4vaW5pdGRiL2luaXRkYi5jICAgICAgICAgICAgICAgICAgICAgIHwgICAz ICstCiBzcmMvYmluL3BnX2Jhc2ViYWNrdXAvdC8wMTBfcGdfYmFzZWJhY2t1cC5wbCB8ICAgNCAr LQogc3JjL2Jpbi9wZ19yZXdpbmQvZmlsZW1hcC5jICAgICAgICAgICAgICAgICAgfCAgIDMgKwog c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICAgICAgfCAgMTIgKy0KIHNy Yy9pbmNsdWRlL21pc2NhZG1pbi5oICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9p bmNsdWRlL3Bnc3RhdC5oICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzICstCiBzcmMvaW5j bHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaCAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVk ZS91dGlscy9tY3h0ZnVuY3MuaCAgICAgICAgICAgICAgICB8ICA0NCArKwogMTggZmlsZXMgY2hh bmdlZCwgODIxIGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy9pbmNsdWRlL3V0aWxzL21jeHRmdW5jcy5oCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxv Zy5jCmluZGV4IGIxODI1N2MxOTguLjQ1MzgxYzM0M2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9nLmMKQEAgLTc0LDYgKzc0LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3N5bmMuaCIKICNpbmNs dWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgorI2luY2x1ZGUg InV0aWxzL21jeHRmdW5jcy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVk ZSAidXRpbHMvcHNfc3RhdHVzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsbWFwcGVyLmgiCkBAIC03 MDA5LDYgKzcwMTAsMTIgQEAgU3RhcnR1cFhMT0codm9pZCkKIAkJICovCiAJCXBnc3RhdF9yZXNl dF9hbGwoKTsKIAorCQkvKgorCQkgKiBSZXNldCBkdW1wIGZpbGVzIGluIHBnX21lbXVzYWdlLCBi ZWNhdXNlIHRhcmdldCBwcm9jZXNzZXMgZG8KKwkJICogbm90IGV4aXN0IGFueSBtb3JlLgorCQkg Ki8KKwkJUmVtb3ZlTWVtY3h0RmlsZSgwKTsKKwogCQkvKgogCQkgKiBJZiB0aGVyZSB3YXMgYSBi YWNrdXAgbGFiZWwgZmlsZSwgaXQncyBkb25lIGl0cyBqb2IgYW5kIHRoZSBpbmZvCiAJCSAqIGhh cyBub3cgYmVlbiBwcm9wYWdhdGVkIGludG8gcGdfY29udHJvbC4gIFdlIG11c3QgZ2V0IHJpZCBv ZiB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAppbmRleCA1ZDg5ZTc3ZGJlLi43 NDE5YzQ5NmIyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5z cWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCkBAIC01NTgsNyAr NTU4LDggQEAgQ1JFQVRFIFZJRVcgcGdfYmFja2VuZF9tZW1vcnlfY29udGV4dHMgQVMKICAgICBT RUxFQ1QgKiBGUk9NIHBnX2dldF9iYWNrZW5kX21lbW9yeV9jb250ZXh0cygpOwogCiBSRVZPS0Ug QUxMIE9OIHBnX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzIEZST00gUFVCTElDOwotUkVWT0tFIEVY RUNVVEUgT04gRlVOQ1RJT04gcGdfZ2V0X2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKCkgRlJPTSBQ VUJMSUM7CitSRVZPS0UgRVhFQ1VURSBPTiBGVU5DVElPTiBwZ19nZXRfYmFja2VuZF9tZW1vcnlf Y29udGV4dHMgRlJPTSBQVUJMSUM7CitSRVZPS0UgRVhFQ1VURSBPTiBGVU5DVElPTiBwZ19nZXRf dGFyZ2V0X2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzIEZST00gUFVCTElDOwogCiAtLSBTdGF0aXN0 aWNzIHZpZXdzCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdzdGF0LmMg Yi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bnc3RhdC5jCmluZGV4IDNmMjRhMzNlZjEuLjhlYjJk MDYyYjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdzdGF0LmMKKysrIGIv c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ3N0YXQuYwpAQCAtNDA0NSw2ICs0MDQ1LDkgQEAgcGdz dGF0X2dldF93YWl0X2lwYyhXYWl0RXZlbnRJUEMgdykKIAkJY2FzZSBXQUlUX0VWRU5UX1hBQ1Rf R1JPVVBfVVBEQVRFOgogCQkJZXZlbnRfbmFtZSA9ICJYYWN0R3JvdXBVcGRhdGUiOwogCQkJYnJl YWs7CisJCWNhc2UgV0FJVF9FVkVOVF9EVU1QX01FTU9SWV9DT05URVhUOgorCQkJZXZlbnRfbmFt ZSA9ICJEdW1wTWVtb3J5Q29udGV4dCI7CisJCQlicmVhazsKIAkJCS8qIG5vIGRlZmF1bHQgY2Fz ZSwgc28gdGhhdCBjb21waWxlciB3aWxsIHdhcm4gKi8KIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2Jhc2ViYWNrdXAuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2Jhc2ViYWNrdXAuYwppbmRleCAwZjU0NjM1NTUwLi5jNjdlNzFkNzliIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9iYXNlYmFja3VwLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vYmFzZWJhY2t1cC5jCkBAIC0xODQsNiArMTg0LDkgQEAgc3RhdGljIGNvbnN0IGNo YXIgKmNvbnN0IGV4Y2x1ZGVEaXJDb250ZW50c1tdID0KIAkvKiBDb250ZW50cyB6ZXJvZWQgb24g c3RhcnR1cCwgc2VlIFN0YXJ0dXBTVUJUUkFOUygpLiAqLwogCSJwZ19zdWJ0cmFucyIsCiAKKwkv KiBTa2lwIG1lbW9yeSBjb250ZXh0IGR1bXAgZmlsZXMuICovCisJInBnX21lbXVzYWdlIiwKKwog CS8qIGVuZCBvZiBsaXN0ICovCiAJTlVMTAogfTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvaXBjL2lwY2kuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYwppbmRleCBm OWJiZTk3YjUwLi4xOGExZGQ1YTc0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9pcGNpLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jCkBAIC00NSw2ICs0 NSw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9zaW52YWxhZHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NwaW4uaCIKKyNpbmNsdWRlICJ1dGls cy9tY3h0ZnVuY3MuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCiAKIC8qIEdVQ3MgKi8K QEAgLTI2Nyw2ICsyNjgsNyBAQCBDcmVhdGVTaGFyZWRNZW1vcnlBbmRTZW1hcGhvcmVzKHZvaWQp CiAJQlRyZWVTaG1lbUluaXQoKTsKIAlTeW5jU2NhblNobWVtSW5pdCgpOwogCUFzeW5jU2htZW1J bml0KCk7CisJTWN4dER1bXBTaG1lbUluaXQoKTsKIAogI2lmZGVmIEVYRUNfQkFDS0VORAogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKaW5kZXggNTgzZWZhZWNmZi4uMTA2ZTEyNWNj MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCisrKyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwpAQCAtMjgsNiArMjgsNyBAQAog I2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKICNpbmNsdWRlICJzdG9yYWdlL3NpbnZhbC5oIgog I2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKKyNpbmNsdWRlICJ1dGlscy9tY3h0ZnVuY3MuaCIK IAogLyoKICAqIFRoZSBTSUdVU1IxIHNpZ25hbCBpcyBtdWx0aXBsZXhlZCB0byBzdXBwb3J0IHNp Z25hbGluZyBtdWx0aXBsZSBldmVudApAQCAtNTY3LDYgKzU2OCw5IEBAIHByb2NzaWduYWxfc2ln dXNyMV9oYW5kbGVyKFNJR05BTF9BUkdTKQogCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19C QVJSSUVSKSkKIAkJSGFuZGxlUHJvY1NpZ25hbEJhcnJpZXJJbnRlcnJ1cHQoKTsKIAorCWlmIChD aGVja1Byb2NTaWduYWwoUFJPQ1NJR19EVU1QX01FTUNYVCkpCisJCUhhbmRsZVByb2NTaWduYWxE dW1wTWVtb3J5Q29udGV4dCgpOworCiAJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX1JFQ09W RVJZX0NPTkZMSUNUX0RBVEFCQVNFKSkKIAkJUmVjb3ZlcnlDb25mbGljdEludGVycnVwdChQUk9D U0lHX1JFQ09WRVJZX0NPTkZMSUNUX0RBVEFCQVNFKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9sbWdyL2x3bG9ja25hbWVzLnR4dCBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1n ci9sd2xvY2tuYW1lcy50eHQKaW5kZXggNzc0MjkyZmQ5NC4uNmI0ZmY2ZjA4YiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9ja25hbWVzLnR4dAorKysgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrbmFtZXMudHh0CkBAIC01MywzICs1Myw0IEBAIFhhY3RU cnVuY2F0aW9uTG9jawkJCQkJNDQKICMgNDUgd2FzIFhhY3RUcnVuY2F0aW9uTG9jayB1bnRpbCBy ZW1vdmFsIG9mIEJhY2tlbmRSYW5kb21Mb2NrCiBXcmFwTGltaXRzVmFjdXVtTG9jawkJCQk0Ngog Tm90aWZ5UXVldWVUYWlsTG9jawkJCQkJNDcKK01jeHREdW1wTG9jawkJCQkJNDgKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdy ZXMuYwppbmRleCAyODA1NTY4MGFhLi45ODYyMjVlODAyIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC90Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC03 Niw2ICs3Niw3IEBACiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgogI2luY2x1ZGUgInRjb3Av dXRpbGl0eS5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxz L21jeHRmdW5jcy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRp bHMvcHNfc3RhdHVzLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgpAQCAtNTQwLDYgKzU0 MSwxMCBAQCBQcm9jZXNzQ2xpZW50UmVhZEludGVycnVwdChib29sIGJsb2NrZWQpCiAJCS8qIFBy b2Nlc3Mgbm90aWZ5IGludGVycnVwdHMsIGlmIGFueSAqLwogCQlpZiAobm90aWZ5SW50ZXJydXB0 UGVuZGluZykKIAkJCVByb2Nlc3NOb3RpZnlJbnRlcnJ1cHQoKTsKKworCQkvKiBQcm9jZXNzIG1l bW9yeSBjb250ZXh0cyBkdW1wIGludGVycnVwdHMsIGlmIGFueSAqLworCQlpZiAoUHJvY1NpZ25h bER1bXBNZW1vcnlDb250ZXh0UGVuZGluZykKKwkJCVByb2Nlc3NEdW1wTWVtb3J5Q29udGV4dElu dGVycnVwdCgpOwogCX0KIAllbHNlIGlmIChQcm9jRGllUGVuZGluZykKIAl7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9hZHQvbWN4dGZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvbWN4dGZ1bmNzLmMKaW5kZXggYzAyZmE0NzU1MC4uMjY2MzcwNzlkOCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9tY3h0ZnVuY3MuYwpAQCAtMTUsMzAgKzE1LDEwMSBAQAogCiAjaW5jbHVkZSAicG9zdGdy ZXMuaCIKIAorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKyNp bmNsdWRlICJhY2Nlc3MveGFjdC5oIgorI2luY2x1ZGUgImNvbW1vbi9sb2dnaW5nLmgiCiAjaW5j bHVkZSAiZnVuY2FwaS5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm1iL3Bn X3djaGFyLmgiCisjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIK KyNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCisj aW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWdu YWwuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRp bnMuaCIKKyNpbmNsdWRlICJ1dGlscy9tY3h0ZnVuY3MuaCIKKworLyogVGhlIG1heCBieXRlcyBm b3Igc2hvd2luZyBuYW1lcyBhbmQgaWRlbnRpZmllcnMgb2YgTWVtb3J5Q29udGV4dC4gKi8KKyNk ZWZpbmUgTUVNT1JZX0NPTlRFWFRfRElTUExBWV9TSVpFCTEwMjQKKworLyogTnVtYmVyIG9mIGNv bHVtbnMgaW4gcGdfYmFja2VuZF9tZW1vcnlfY29udGV4dHMgdmlldyAqLworI2RlZmluZSBQR19H RVRfQkFDS0VORF9NRU1PUllfQ09OVEVYVFNfQ09MUwk5CisKKy8qIFNoYXJlZCBtZW1vcnkgc3Ry dWN0IGZvciBtYW5hZ2luZyB0aGUgc3RhdHVzIG9mIG1lbW9yeSBjb250ZXh0IGR1bXAuICovCitz dGF0aWMgbWN4dGR1bXBTaG1lbVN0cnVjdCAqbWN4dGR1bXBTaG1lbSA9ICBOVUxMOwogCi0vKiAt LS0tLS0tLS0tCi0gKiBUaGUgbWF4IGJ5dGVzIGZvciBzaG93aW5nIGlkZW50aWZpZXJzIG9mIE1l bW9yeUNvbnRleHQuCi0gKiAtLS0tLS0tLS0tCisvKgorICogTWN4dFJlcUNsZWFudXAKKyAqCQlF cnJvciBjbGVhbnVwIGNhbGxiYWNrIGZvciBtZW1vcnkgY29udGV4dCByZXF1ZXN0b3IuCiAgKi8K LSNkZWZpbmUgTUVNT1JZX0NPTlRFWFRfSURFTlRfRElTUExBWV9TSVpFCTEwMjQKK3N0YXRpYyB2 b2lkCitNY3h0UmVxQ2xlYW51cChpbnQgY29kZSwgRGF0dW0gYXJnKQoreworCWludAkJZHN0X3Bp ZCA9IERhdHVtR2V0SW50MzIoYXJnKTsKKworCUxXTG9ja0FjcXVpcmUoTWN4dER1bXBMb2NrLCBM V19FWENMVVNJVkUpOworCisJaWYgKG1jeHRkdW1wU2htZW0tPnNyY19waWQgIT0gTXlQcm9jUGlk KQorCXsKKwkJLyoKKwkJICogSWYgdGhlIHJlcXVlc3RvciBpcyBub3QgbWUsIHNpbXBseSBleGl0 LgorCQkgKi8KKwkJTFdMb2NrUmVsZWFzZShNY3h0RHVtcExvY2spOworCQlyZXR1cm47CisJfQor CisJaWYgKG1jeHRkdW1wU2htZW0tPmR1bXBfc3RhdHVzID09IE1DWFREVU1QU1RBVFVTX1JFUVVF U1RJTkcpCisJeworCQkvKgorCQkgKiBTaW5jZSB0aGUgZHVtcGVyIGhhcyBub3QgcmVjZWl2ZWQg dGhlIGR1bXAgb3JkZXIgeWV0LCBjbGVhbiB1cAorCQkgKiB0aGluZ3MgYnkgbXlzZWxmLgorCQkg Ki8KKwkJbWN4dGR1bXBTaG1lbS0+ZHN0X3BpZCA9IDA7CisJCW1jeHRkdW1wU2htZW0tPnNyY19w aWQgPSAwOworCQltY3h0ZHVtcFNobWVtLT5kdW1wX3N0YXR1cyA9IE1DWFREVU1QU1RBVFVTX0FD Q0VQVEFCTEU7CisJfQorCWVsc2UgaWYgKG1jeHRkdW1wU2htZW0tPmR1bXBfc3RhdHVzID09IE1D WFREVU1QU1RBVFVTX0RVTVBJTkcpCisJeworCQkvKgorCQkgKiBTaW5jZSB0aGUgZHVtcGVyIGhh cyByZWNlaXZlZCB0aGUgcmVxdWVzdCBhbHJlYWR5LAorCQkgKiByZXF1ZXN0b3IganVzdCBjaGFu Z2UgdGhlIHN0YXR1cyBhbmQgdGhlIGR1bXBlciBjbGVhbnMgdXAKKwkJICogdGhpbmdzIGxhdGVy LgorCQkgKi8KKwkJbWN4dGR1bXBTaG1lbS0+ZHVtcF9zdGF0dXMgPSBNQ1hURFVNUFNUQVRVU19D QU5DRUxJTkc7CisJfQorCWVsc2UgaWYgKG1jeHRkdW1wU2htZW0tPmR1bXBfc3RhdHVzID09IE1D WFREVU1QU1RBVFVTX0RPTkUpCisJeworCQkvKgorCQkgKiBTaW5jZSB0aGUgZHVtcGVyIGhhcyBh bHJlYWR5IGZpbmlzaGVkIGR1bXBpbmcsIGNsZWFuIHVwIHRoaW5ncworCQkgKiBieSBteXNlbGYu CisJCSAqLworCQltY3h0ZHVtcFNobWVtLT5kc3RfcGlkID0gMDsKKwkJbWN4dGR1bXBTaG1lbS0+ c3JjX3BpZCA9IDA7CisJCW1jeHRkdW1wU2htZW0tPmR1bXBfc3RhdHVzID0gTUNYVERVTVBTVEFU VVNfQUNDRVBUQUJMRTsKKworCQlSZW1vdmVNZW1jeHRGaWxlKGRzdF9waWQpOworCX0KKwlMV0xv Y2tSZWxlYXNlKE1jeHREdW1wTG9jayk7Cit9CiAKIC8qCiAgKiBQdXRNZW1vcnlDb250ZXh0c1N0 YXRzVHVwbGVTdG9yZQogICoJCU9uZSByZWN1cnNpb24gbGV2ZWwgZm9yIHBnX2dldF9iYWNrZW5k X21lbW9yeV9jb250ZXh0cy4KKyAqCisgKiBOb3RlOiBXaGVuIGZwb3V0IGlzIG5vdCBOVUxMLCBm ZXJyb3IoKSBjaGVjayBtdXN0IGJlIGRvbmUgYnkgdGhlIGNhbGxlci4KICAqLwogc3RhdGljIHZv aWQKIFB1dE1lbW9yeUNvbnRleHRzU3RhdHNUdXBsZVN0b3JlKFR1cGxlc3RvcmVzdGF0ZSAqdHVw c3RvcmUsCiAJCQkJCQkJCVR1cGxlRGVzYyB0dXBkZXNjLCBNZW1vcnlDb250ZXh0IGNvbnRleHQs Ci0JCQkJCQkJCWNvbnN0IGNoYXIgKnBhcmVudCwgaW50IGxldmVsKQorCQkJCQkJCQljb25zdCBj aGFyICpwYXJlbnQsIGludCBsZXZlbCwgRklMRSAqZnBvdXQpCiB7Ci0jZGVmaW5lIFBHX0dFVF9C QUNLRU5EX01FTU9SWV9DT05URVhUU19DT0xTCTkKLQogCURhdHVtCQl2YWx1ZXNbUEdfR0VUX0JB Q0tFTkRfTUVNT1JZX0NPTlRFWFRTX0NPTFNdOwogCWJvb2wJCW51bGxzW1BHX0dFVF9CQUNLRU5E X01FTU9SWV9DT05URVhUU19DT0xTXTsKKwljaGFyCQljbGlwcGVkX2lkZW50W01FTU9SWV9DT05U RVhUX0RJU1BMQVlfU0laRV07CiAJTWVtb3J5Q29udGV4dENvdW50ZXJzIHN0YXQ7CiAJTWVtb3J5 Q29udGV4dCBjaGlsZDsKIAljb25zdCBjaGFyICpuYW1lOwpAQCAtNzQsMTQgKzE0NSwxMiBAQCBQ dXRNZW1vcnlDb250ZXh0c1N0YXRzVHVwbGVTdG9yZShUdXBsZXN0b3Jlc3RhdGUgKnR1cHN0b3Jl LAogCWlmIChpZGVudCkKIAl7CiAJCWludAkJaWRsZW4gPSBzdHJsZW4oaWRlbnQpOwotCQljaGFy CQljbGlwcGVkX2lkZW50W01FTU9SWV9DT05URVhUX0lERU5UX0RJU1BMQVlfU0laRV07Ci0KIAkJ LyoKIAkJICogU29tZSBpZGVudGlmaWVycyBzdWNoIGFzIFNRTCBxdWVyeSBzdHJpbmcgY2FuIGJl IHZlcnkgbG9uZywKIAkJICogdHJ1bmNhdGUgb3ZlcnNpemUgaWRlbnRpZmllcnMuCiAJCSAqLwot CQlpZiAoaWRsZW4gPj0gTUVNT1JZX0NPTlRFWFRfSURFTlRfRElTUExBWV9TSVpFKQotCQkJaWRs ZW4gPSBwZ19tYmNsaXBsZW4oaWRlbnQsIGlkbGVuLCBNRU1PUllfQ09OVEVYVF9JREVOVF9ESVNQ TEFZX1NJWkUgLSAxKTsKKwkJaWYgKGlkbGVuID49IE1FTU9SWV9DT05URVhUX0RJU1BMQVlfU0la RSkKKwkJCWlkbGVuID0gcGdfbWJjbGlwbGVuKGlkZW50LCBpZGxlbiwgTUVNT1JZX0NPTlRFWFRf RElTUExBWV9TSVpFIC0gMSk7CiAKIAkJbWVtY3B5KGNsaXBwZWRfaWRlbnQsIGlkZW50LCBpZGxl bik7CiAJCWNsaXBwZWRfaWRlbnRbaWRsZW5dID0gJ1wwJzsKQEAgLTEwMSwxOCArMTcwLDIwMyBA QCBQdXRNZW1vcnlDb250ZXh0c1N0YXRzVHVwbGVTdG9yZShUdXBsZXN0b3Jlc3RhdGUgKnR1cHN0 b3JlLAogCXZhbHVlc1s2XSA9IEludDY0R2V0RGF0dW0oc3RhdC5mcmVlc3BhY2UpOwogCXZhbHVl c1s3XSA9IEludDY0R2V0RGF0dW0oc3RhdC5mcmVlY2h1bmtzKTsKIAl2YWx1ZXNbOF0gPSBJbnQ2 NEdldERhdHVtKHN0YXQudG90YWxzcGFjZSAtIHN0YXQuZnJlZXNwYWNlKTsKLQl0dXBsZXN0b3Jl X3B1dHZhbHVlcyh0dXBzdG9yZSwgdHVwZGVzYywgdmFsdWVzLCBudWxscyk7CisKKwkvKgorCSAq IFNpbmNlIHBnX2dldF9iYWNrZW5kX21lbW9yeV9jb250ZXh0cygpIGlzIGNhbGxlZCBmcm9tIGxv Y2FsIHByb2Nlc3MsCisJICogc2ltcGx5IHB1dCB0dXBsZXMuCisJICovCisJaWYoZnBvdXQgPT0g TlVMTCkKKwkJdHVwbGVzdG9yZV9wdXR2YWx1ZXModHVwc3RvcmUsIHR1cGRlc2MsIHZhbHVlcywg bnVsbHMpOworCisJLyoKKwkgKiBXcml0ZSBvdXQgdGhlIGN1cnJlbnQgbWVtb3J5IGNvbnRleHQg aW5mb3JtYXRpb24gaW4gdGhlIGZvcm0gb2YKKwkgKiAia2V5OiB2YWx1ZSIgcGFpcnMgdG8gdGhl IGZpbGUgc3BlY2lmaWVkIGJ5IHRoZSByZXF1ZXN0b3IuCisJICovCisJZWxzZQorCXsKKwkJLyoK KwkJICogTWFrZSBlYWNoIG1lbW9yeSBjb250ZXh0IGluZm9ybWF0aW9uIHN0YXJ0cyB3aXRoICdE Jy4KKwkJICogVGhpcyBpcyBjaGVja2VkIGJ5IHRoZSByZXF1ZXN0b3Igd2hlbiByZWFkaW5nIHRo ZSBmaWxlLgorCQkgKi8KKwkJZnB1dGMoJ0QnLCBmcG91dCk7CisKKwkJZnByaW50ZihmcG91dCwK KwkJCSJuYW1lOiAlcywgaWRlbnQ6ICVzLCBwYXJlbnQ6ICVzLCBsZXZlbDogJWQsIHRvdGFsX2J5 dGVzOiAlbHUsIFwKKwkJCXRvdGFsX25ibG9ja3M6ICVsdSwgZnJlZV9ieXRlczogJWx1LCBmcmVl X2NodW5rczogJWx1LCB1c2VkX2J5dGVzOiAlbHUsXG4iLAorCQkJbmFtZSwKKwkJCWlkZW50ID8g Y2xpcHBlZF9pZGVudCA6ICJub25lIiwKKwkJCXBhcmVudCA/IHBhcmVudCA6ICJub25lIiwgbGV2 ZWwsCisJCQlzdGF0LnRvdGFsc3BhY2UsCisJCQlzdGF0Lm5ibG9ja3MsCisJCQlzdGF0LmZyZWVz cGFjZSwKKwkJCXN0YXQuZnJlZWNodW5rcywKKwkJCXN0YXQudG90YWxzcGFjZSAtIHN0YXQuZnJl ZXNwYWNlKTsKKwl9CiAKIAlmb3IgKGNoaWxkID0gY29udGV4dC0+Zmlyc3RjaGlsZDsgY2hpbGQg IT0gTlVMTDsgY2hpbGQgPSBjaGlsZC0+bmV4dGNoaWxkKQogCXsKIAkJUHV0TWVtb3J5Q29udGV4 dHNTdGF0c1R1cGxlU3RvcmUodHVwc3RvcmUsIHR1cGRlc2MsCi0JCQkJCQkJCSAgY2hpbGQsIG5h bWUsIGxldmVsICsgMSk7CisJCQkJCQkJCSAgY2hpbGQsIG5hbWUsIGxldmVsICsgMSwgZnBvdXQp OworCX0KK30KKworLyoKKyAqIFNldHVwTWN4dGR1bXBTaGVtCisgKiAJCVNldHVwIHNoYXJlZCBt ZW1vcnkgc3RydWN0IGZvciBkdW1waW5nIHNwZWNpZmllZCBQSUQuCisgKi8KK3N0YXRpYyBib29s CitTZXR1cE1jeHRkdW1wU2htZW0oaW50IHBpZCkKK3sKKwkvKgorCSAqIFdlIG9ubHkgYWxsb3cg b25lIHNlc3Npb24gcGVyIHRhcmdldCBwcm9jZXNzIHRvIHJlcXVlc3QgbWVtb3J5CisJICogY29u dGV4dHMgZHVtcCBhdCBhIHRpbWUuCisJICovCisJTFdMb2NrQWNxdWlyZShNY3h0RHVtcExvY2ss IExXX0VYQ0xVU0lWRSk7CisKKwlpZiAobWN4dGR1bXBTaG1lbS0+ZHVtcF9zdGF0dXMgPT0gTUNY VERVTVBTVEFUVVNfQUNDRVBUQUJMRSkKKwl7CisJCW1jeHRkdW1wU2htZW0tPmR1bXBfc3RhdHVz ID0gTUNYVERVTVBTVEFUVVNfUkVRVUVTVElORzsKKwkJbWN4dGR1bXBTaG1lbS0+c3JjX3BpZCA9 IE15UHJvY1BpZDsKKwkJbWN4dGR1bXBTaG1lbS0+ZHN0X3BpZCA9IHBpZDsKKworCQkvKgorCQkg KiBEdW1wIGZpbGVzIHNob3VsZCBub3QgZXhpc3Qgbm93LCBidXQgZGVsZXRlIGFueSBvZgorCQkg KiB0aGVtIGp1c3QgaW4gY2FzZS4KKwkJICoKKwkJICogTm90ZTogVGhpcyBpcyBwb3NzaWJsZSBi ZWNhdXNlIG9ubHkgb25lIHNlc3Npb24gY2FuCisJCSAqIHJlcXVlc3QgbWVtb3J5IGNvbnRleHRz IHBlciBpbnN0YW5jZS4KKwkJICovCisJCVJlbW92ZU1lbWN4dEZpbGUoMCk7CisKKwkJTFdMb2Nr UmVsZWFzZShNY3h0RHVtcExvY2spOworCisJCXJldHVybiB0cnVlOworCX0KKwllbHNlCisJewor CQlMV0xvY2tSZWxlYXNlKE1jeHREdW1wTG9jayk7CisKKwkJZXJlcG9ydChXQVJOSU5HLAorCQkJ CShlcnJtc2coIk9ubHkgb25lIHNlc3Npb24gY2FuIGR1bXAgYXQgYSB0aW1lIGFuZCBhbm90aGVy IHNlc3Npb24gaXMgZHVtcGluZyBjdXJyZW50bHkuIikpKTsKKworCQlyZXR1cm4gZmFsc2U7CiAJ fQogfQogCisvKgorICogUHV0RHVtcGVkVmFsdWVzT25UdXBsZXN0b3JlCisgKgkJUmVhZCBzcGVj aWZpZWQgbWVtb3J5IGNvbnRleHQgZHVtcCBmaWxlIGFuZCBwdXQgaXRzIHZhbHVlcworICoJCW9u IHRoZSB0dXBsZXN0b3JlLgorICovCitzdGF0aWMgdm9pZAorUHV0RHVtcGVkVmFsdWVzT25UdXBs ZXN0b3JlKGNoYXIgKmR1bXBmaWxlLCBUdXBsZXN0b3Jlc3RhdGUgKnR1cHN0b3JlLAorCQkJCQkJ CQlUdXBsZURlc2MgdHVwZGVzYywgaW50IHBpZCkKK3sKKwlGSUxFCSAJKmZwaW47CisJaW50CQlm b3JtYXRfaWQ7CisKKwlpZiAoKGZwaW4gPSBBbGxvY2F0ZUZpbGUoZHVtcGZpbGUsICJyIikpID09 IE5VTEwpCisJeworCQlpZiAoZXJybm8gIT0gRU5PRU5UKQorCQkJZXJlcG9ydChMT0csIChlcnJj b2RlX2Zvcl9maWxlX2FjY2VzcygpLAorCQkJCWVycm1zZygiY291bGQgbm90IG9wZW4gbWVtb3J5 IGNvbnRleHQgZHVtcCBmaWxlIFwiJXNcIjogJW0iLAorCQkJCQlkdW1wZmlsZSkpKTsKKwl9CisK KwkvKiBWZXJpZnkgaXQncyBvZiB0aGUgZXhwZWN0ZWQgZm9ybWF0LiAqLworCWlmIChmcmVhZCgm Zm9ybWF0X2lkLCAxLCBzaXplb2YoZm9ybWF0X2lkKSwgZnBpbikgIT0gc2l6ZW9mKGZvcm1hdF9p ZCkgfHwKKwkJZm9ybWF0X2lkICE9IFBHX01DWFRfRklMRV9GT1JNQVRfSUQpCisJeworCQllcmVw b3J0KFdBUk5JTkcsCisJCQkJKGVycm1zZygiY29ycnVwdGVkIG1lbW9yeSBjb250ZXh0IGR1bXAg ZmlsZSBcIiVzXCIiLCBkdW1wZmlsZSkpKTsKKwkJZ290byBkb25lOworCX0KKworCS8qIFJlYWQg ZHVtcCBmaWxlIGFuZCBwdXQgdmFsdWVzIG9uIHR1cGxlIHN0b3JlLiAqLworCXdoaWxlICh0cnVl KQorCXsKKwkJRGF0dW0JCXZhbHVlc1tQR19HRVRfQkFDS0VORF9NRU1PUllfQ09OVEVYVFNfQ09M U107CisJCWJvb2wJCW51bGxzW1BHX0dFVF9CQUNLRU5EX01FTU9SWV9DT05URVhUU19DT0xTXTsK KwkJY2hhciAJCW5hbWVbTUVNT1JZX0NPTlRFWFRfRElTUExBWV9TSVpFXTsKKwkJY2hhciAJCXBh cmVudFtNRU1PUllfQ09OVEVYVF9ESVNQTEFZX1NJWkVdOworCQljaGFyIAkJY2xpcHBlZF9pZGVu dFtNRU1PUllfQ09OVEVYVF9ESVNQTEFZX1NJWkVdOworCQlpbnQgCQlsZXZlbDsKKwkJU2l6ZQl0 b3RhbF9ieXRlczsKKwkJU2l6ZQl0b3RhbF9uYmxvY2tzOworCQlTaXplCWZyZWVfYnl0ZXM7CisJ CVNpemUJZnJlZV9jaHVua3M7CisJCVNpemUJdXNlZF9ieXRlczsKKworCQltZW1zZXQodmFsdWVz LCAwLCBzaXplb2YodmFsdWVzKSk7CisJCW1lbXNldChudWxscywgMCwgc2l6ZW9mKG51bGxzKSk7 CisKKwkJc3dpdGNoIChmZ2V0YyhmcGluKSkKKwkJeworCQkJLyogJ0QnCUEgbWVtb3J5IGNvbnRl eHQgaW5mb3JtYXRpb24gZm9sbG93cyAqLworCQkJY2FzZSAnRCc6CisJCQkJaWYgKGZzY2FuZihm cGluLCAibmFtZTogJTEwMjNbXixdLCBpZGVudDogJTEwMjNbXixdLCBwYXJlbnQ6ICUxMDIzW14s XSwgXAorCQkJCQlsZXZlbDogJWQsIHRvdGFsX2J5dGVzOiAlbHUsIHRvdGFsX25ibG9ja3M6ICVs dSwgXAorCQkJCQlmcmVlX2J5dGVzOiAlbHUsIGZyZWVfY2h1bmtzOiAlbHUsIHVzZWRfYnl0ZXM6 ICVsdSxcbiIsCisJCQkJCW5hbWUsIGNsaXBwZWRfaWRlbnQsIHBhcmVudCwgJmxldmVsLCAmdG90 YWxfYnl0ZXMsICZ0b3RhbF9uYmxvY2tzLAorCQkJCQkJJmZyZWVfYnl0ZXMsICZmcmVlX2NodW5r cywgJnVzZWRfYnl0ZXMpCisJCQkJCSE9IFBHX0dFVF9CQUNLRU5EX01FTU9SWV9DT05URVhUU19D T0xTKQorCQkJCXsKKwkJCQkJZXJlcG9ydChXQVJOSU5HLAorCQkJCQkJKGVycm1zZygiY29ycnVw dGVkIG1lbW9yeSBjb250ZXh0IGR1bXAgZmlsZSBcIiVzXCIiLAorCQkJCQkJCWR1bXBmaWxlKSkp OworCQkJCQlnb3RvIGRvbmU7CisJCQkJfQorCisJCQkJdmFsdWVzWzBdID0gQ1N0cmluZ0dldFRl eHREYXR1bShuYW1lKTsKKworCQkJCWlmIChzdHJjbXAoY2xpcHBlZF9pZGVudCwgIm5vbmUiKSkK KwkJCQkJdmFsdWVzWzFdID0gQ1N0cmluZ0dldFRleHREYXR1bShjbGlwcGVkX2lkZW50KTsKKwkJ CQllbHNlCisJCQkJCW51bGxzWzFdID0gdHJ1ZTsKKworCQkJCWlmIChzdHJjbXAocGFyZW50LCAi bm9uZSIpKQorCQkJCQl2YWx1ZXNbMl0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKHBhcmVudCk7CisJ CQkJZWxzZQorCQkJCQludWxsc1syXSA9IHRydWU7CisKKwkJCQl2YWx1ZXNbM10gPSBJbnQzMkdl dERhdHVtKGxldmVsKTsKKwkJCQl2YWx1ZXNbNF0gPSBJbnQ2NEdldERhdHVtKHRvdGFsX2J5dGVz KTsKKwkJCQl2YWx1ZXNbNV0gPSBJbnQ2NEdldERhdHVtKHRvdGFsX25ibG9ja3MpOworCQkJCXZh bHVlc1s2XSA9IEludDY0R2V0RGF0dW0oZnJlZV9ieXRlcyk7CisJCQkJdmFsdWVzWzddID0gSW50 NjRHZXREYXR1bShmcmVlX2NodW5rcyk7CisJCQkJdmFsdWVzWzhdID0gSW50NjRHZXREYXR1bSh1 c2VkX2J5dGVzKTsKKworCQkJCXR1cGxlc3RvcmVfcHV0dmFsdWVzKHR1cHN0b3JlLCB0dXBkZXNj LCB2YWx1ZXMsIG51bGxzKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSAnRSc6CisJCQkJZ290byBk b25lOworCisJCQlkZWZhdWx0OgorCQkJCWVyZXBvcnQoV0FSTklORywKKwkJCQkJCShlcnJtc2co ImNvcnJ1cHRlZCBtZW1vcnkgY29udGV4dCBkdW1wIGZpbGUgXCIlc1wiIiwKKwkJCQkJCQlkdW1w ZmlsZSkpKTsKKwkJCQlnb3RvIGRvbmU7CisJCX0KKwl9Citkb25lOgorCUZyZWVGaWxlKGZwaW4p OworCXVubGluayhkdW1wZmlsZSk7CisKKwlMV0xvY2tBY3F1aXJlKE1jeHREdW1wTG9jaywgTFdf RVhDTFVTSVZFKTsKKworCUFzc2VydChtY3h0ZHVtcFNobWVtLT5zcmNfcGlkID09IE15UHJvY1Bp ZCk7CisKKwltY3h0ZHVtcFNobWVtLT5kc3RfcGlkID0gMDsKKwltY3h0ZHVtcFNobWVtLT5zcmNf cGlkID0gMDsKKwltY3h0ZHVtcFNobWVtLT5kdW1wX3N0YXR1cyA9IE1DWFREVU1QU1RBVFVTX0FD Q0VQVEFCTEU7CisKKwlMV0xvY2tSZWxlYXNlKE1jeHREdW1wTG9jayk7Cit9CisKIC8qCiAgKiBw Z19nZXRfYmFja2VuZF9tZW1vcnlfY29udGV4dHMKLSAqCQlTUUwgU1JGIHNob3dpbmcgYmFja2Vu ZCBtZW1vcnkgY29udGV4dC4KKyAqCQlTUUwgU1JGIHNob3dpbmcgbG9jYWwgYmFja2VuZCBtZW1v cnkgY29udGV4dC4KICAqLwogRGF0dW0KIHBnX2dldF9iYWNrZW5kX21lbW9yeV9jb250ZXh0cyhQ R19GVU5DVElPTl9BUkdTKQpAQCAtMTQ4LDEwICs0MDIsNDY4IEBAIHBnX2dldF9iYWNrZW5kX21l bW9yeV9jb250ZXh0cyhQR19GVU5DVElPTl9BUkdTKQogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhv bGRjb250ZXh0KTsKIAogCVB1dE1lbW9yeUNvbnRleHRzU3RhdHNUdXBsZVN0b3JlKHR1cHN0b3Jl LCB0dXBkZXNjLAotCQkJCQkJCQlUb3BNZW1vcnlDb250ZXh0LCBOVUxMLCAwKTsKKwkJCQkJCQlU b3BNZW1vcnlDb250ZXh0LCAiIiwgMCwgTlVMTCk7CisKKwkvKiBjbGVhbiB1cCBhbmQgcmV0dXJu IHRoZSB0dXBsZXN0b3JlICovCisJdHVwbGVzdG9yZV9kb25lc3RvcmluZyh0dXBzdG9yZSk7CisK KwlyZXR1cm4gKERhdHVtKSAwOworfQorCisvKgorICogcGdfZ2V0X3RhcmdldF9iYWNrZW5kX21l bW9yeV9jb250ZXh0cworICoJCVNRTCBTUkYgc2hvd2luZyBzcGVjaWZpZWQgcHJvY2VzcydzIGJh Y2tlbmQgbWVtb3J5IGNvbnRleHQuCisgKi8KK0RhdHVtCitwZ19nZXRfdGFyZ2V0X2JhY2tlbmRf bWVtb3J5X2NvbnRleHRzKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJaW50CQlkc3RfcGlkID0gUEdf R0VUQVJHX0lOVDMyKDApOworCisJUmV0dXJuU2V0SW5mbyAqcnNpbmZvID0gKFJldHVyblNldElu Zm8gKikgZmNpbmZvLT5yZXN1bHRpbmZvOworCVR1cGxlRGVzYwl0dXBkZXNjOworCVR1cGxlc3Rv cmVzdGF0ZSAqdHVwc3RvcmU7CisJTWVtb3J5Q29udGV4dCBwZXJfcXVlcnlfY3R4OworCU1lbW9y eUNvbnRleHQgb2xkY29udGV4dDsKKwljaGFyCQlkdW1wZmlsZVtNQVhQR1BBVEhdOworCVBHUFJP QwkgCSpwcm9jOworCVBnQmFja2VuZFN0YXR1cyAqYmVlbnRyeTsKKworCXNucHJpbnRmKGR1bXBm aWxlLCBzaXplb2YoZHVtcGZpbGUpLCAiJXMvJWQiLCBQR19NRU1VU0FHRV9ESVIsIGRzdF9waWQp OworCisJLyoKKwkgKiBQcm9oaWJpdCBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gaW5zaWRlIGEgdHJh bnNhY3Rpb24gc2luY2UKKwkgKiBpdCBjYW4gY2F1c2UgZGVhZCBsb2NrLgorCSAqLworCWlmIChJ c1RyYW5zYWN0aW9uQmxvY2soKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJD T0RFX0FDVElWRV9TUUxfVFJBTlNBQ1RJT04pLAorCQkJCSBlcnJtc2coInBnX2dldF90YXJnZXRf YmFja2VuZF9tZW1vcnlfY29udGV4dHMgY2Fubm90IHJ1biBpbnNpZGUgYSB0cmFuc2FjdGlvbiBi bG9jayIpKSk7CisKKwkvKiBJZiB0aGUgdGFyZ2V0IHByb2Nlc3MgaXMgaXRzZWxmLCBjYWxsIGEg ZGVkaWNhdGVkIGZ1bmN0aW9uLiAqLworCWlmIChkc3RfcGlkID09IE15UHJvY1BpZCkKKwl7CisJ CXBnX2dldF9iYWNrZW5kX21lbW9yeV9jb250ZXh0cyhmY2luZm8pOworCQlyZXR1cm4gKERhdHVt KSAwOworCX0KKworCS8qIGNoZWNrIHRvIHNlZSBpZiBjYWxsZXIgc3VwcG9ydHMgdXMgcmV0dXJu aW5nIGEgdHVwbGVzdG9yZSAqLworCWlmIChyc2luZm8gPT0gTlVMTCB8fCAhSXNBKHJzaW5mbywg UmV0dXJuU2V0SW5mbykpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9G RUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2coInNldC12YWx1ZWQgZnVuY3Rpb24g Y2FsbGVkIGluIGNvbnRleHQgdGhhdCBjYW5ub3QgYWNjZXB0IGEgc2V0IikpKTsKKwlpZiAoIShy c2luZm8tPmFsbG93ZWRNb2RlcyAmIFNGUk1fTWF0ZXJpYWxpemUpKQorCQllcmVwb3J0KEVSUk9S LAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJy bXNnKCJtYXRlcmlhbGl6ZSBtb2RlIHJlcXVpcmVkLCBidXQgaXQgaXMgbm90IGFsbG93ZWQgaW4g dGhpcyBjb250ZXh0IikpKTsKKworCS8qIEJ1aWxkIGEgdHVwbGUgZGVzY3JpcHRvciBmb3Igb3Vy IHJlc3VsdCB0eXBlICovCisJaWYgKGdldF9jYWxsX3Jlc3VsdF90eXBlKGZjaW5mbywgTlVMTCwg JnR1cGRlc2MpICE9IFRZUEVGVU5DX0NPTVBPU0lURSkKKwkJZWxvZyhFUlJPUiwgInJldHVybiB0 eXBlIG11c3QgYmUgYSByb3cgdHlwZSIpOworCisJcGVyX3F1ZXJ5X2N0eCA9IHJzaW5mby0+ZWNv bnRleHQtPmVjeHRfcGVyX3F1ZXJ5X21lbW9yeTsKKwlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4 dFN3aXRjaFRvKHBlcl9xdWVyeV9jdHgpOworCisJdHVwc3RvcmUgPSB0dXBsZXN0b3JlX2JlZ2lu X2hlYXAodHJ1ZSwgZmFsc2UsIHdvcmtfbWVtKTsKKwlyc2luZm8tPnJldHVybk1vZGUgPSBTRlJN X01hdGVyaWFsaXplOworCXJzaW5mby0+c2V0UmVzdWx0ID0gdHVwc3RvcmU7CisJcnNpbmZvLT5z ZXREZXNjID0gdHVwZGVzYzsKKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsK KworCS8qCisJICogQ2hlY2sgd2hldGhlciB0aGUgdGFyZ2V0IHByb2Nlc3MgaXMgUG9zdGdyZVNR TCBiYWNrZW5kIHByb2Nlc3MuCisJICovCisJcHJvYyA9IEJhY2tlbmRQaWRHZXRQcm9jKGRzdF9w aWQpOworCisJaWYgKHByb2MgPT0gTlVMTCkKKwl7CisJCXByb2MgPSBBdXhpbGlhcnlQaWRHZXRQ cm9jKGRzdF9waWQpOworCisJCWlmIChwcm9jID09IE5VTEwpCisJCQllcmVwb3J0KFdBUk5JTkcs CisJCQkJKGVycm1zZygiUElEICVkIGlzIG5vdCBhIFBvc3RncmVTUUwgc2VydmVyIHByb2Nlc3Mu IiwgZHN0X3BpZCkpKTsKKwkJZWxzZQorCQkJZXJlcG9ydChXQVJOSU5HLAorCQkJCShlcnJtc2co IlBJRCAlZCBpcyBub3QgYSBQb3N0Z3JlU1FMIGJhY2tlbmQgcHJvY2VzcyBidXQgYW4gYXV4aWxp YXJ5IHByb2Nlc3MuIiwgZHN0X3BpZCkpKTsKKworCQl0dXBsZXN0b3JlX2RvbmVzdG9yaW5nKHR1 cHN0b3JlKTsKKwkJcmV0dXJuIChEYXR1bSkgMTsKKwl9CisKKwliZWVudHJ5ID0gcGdzdGF0X2Zl dGNoX3N0YXRfYmVlbnRyeShwcm9jLT5iYWNrZW5kSWQpOworCisJaWYgKGJlZW50cnktPnN0X2Jh Y2tlbmRUeXBlICE9IEJfQkFDS0VORCkKKwl7CisJCWVyZXBvcnQoV0FSTklORywKKwkJCQkoZXJy bXNnKCJQSUQgJWQgaXMgbm90IGEgUG9zdGdyZVNRTCBiYWNrZW5kIHByb2Nlc3MiLCBkc3RfcGlk KSkpOworCisJCXR1cGxlc3RvcmVfZG9uZXN0b3JpbmcodHVwc3RvcmUpOworCQlyZXR1cm4gKERh dHVtKSAxOworCX0KKworCS8qCisJICogVGhlIEVOU1VSRSBzdHVmZiBlbnN1cmVzIHdlIGNsZWFu IHVwIHRoZSBzaGFyZWQgbWVtb3J5IHN0cnVjdCBhbmQgZmlsZXMKKwkgKiBvbiBmYWlsdXJlLgor CSAqLworCVBHX0VOU1VSRV9FUlJPUl9DTEVBTlVQKE1jeHRSZXFDbGVhbnVwLCAoRGF0dW0pIElu dDMyR2V0RGF0dW0oZHN0X3BpZCkpOworCXsKKwkJaWYoIVNldHVwTWN4dGR1bXBTaG1lbShkc3Rf cGlkKSkKKwkJeworCQkJLyogU29tZW9uZSB1c2VzIG1jeHRkdW1wU2htZW0sIHNpbXBseSBleGl0 LiAqLworCQkJdHVwbGVzdG9yZV9kb25lc3RvcmluZyh0dXBzdG9yZSk7CisJCQlyZXR1cm4gKERh dHVtKSAxOworCQl9CisKKwkJU2VuZFByb2NTaWduYWwoZHN0X3BpZCwgUFJPQ1NJR19EVU1QX01F TUNYVCwgSW52YWxpZEJhY2tlbmRJZCk7CisKKwkJLyogV2FpdCB1bnRpbCB0YXJnZXQgcHJvY2Vz cyBmaW5pc2hlcyBkdW1waW5nIGZpbGUuICovCisJCWZvciAoOzspCisJCXsKKwkJCS8qIENoZWNr IGZvciBkdW1wIGNhbmNlbCByZXF1ZXN0LiAqLworCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsK KworCQkJLyogTXVzdCByZXNldCB0aGUgbGF0Y2ggYmVmb3JlIHRlc3Rpbmcgc3RhdGUuICovCisJ CQlSZXNldExhdGNoKE15TGF0Y2gpOworCisJCQlMV0xvY2tBY3F1aXJlKE1jeHREdW1wTG9jaywg TFdfU0hBUkVEKTsKKworCQkJaWYgKG1jeHRkdW1wU2htZW0tPnNyY19waWQgIT0gTXlQcm9jUGlk KQorCQkJeworCQkJCS8qCisJCQkJICogSXQgc2VlbXMgdGhlIGR1bXBlciBleGl0ZWQgYW5kIHN1 YnNlcXVlbnRseSBhbm90aGVyCisJCQkJICogcHJvY2VzcyBpcyByZXF1ZXN0aW5nIGR1bXBpbmcu CisJCQkJICovCisJCQkJTFdMb2NrUmVsZWFzZShNY3h0RHVtcExvY2spOworCisJCQkJZXJlcG9y dChJTkZPLAorCQkJCQkoZXJybXNnKCJUaGUgcmVxdWVzdCBoYXMgZmFpbGVkIGFuZCBub3cgUElE ICVkIGlzIHJlcXVzdGluZyBkdW1waW5nLiIsCisJCQkJCQltY3h0ZHVtcFNobWVtLT5zcmNfcGlk KSkpOworCisJCQkJdHVwbGVzdG9yZV9kb25lc3RvcmluZyh0dXBzdG9yZSk7CisKKwkJCQlyZXR1 cm4gKERhdHVtKSAwOworCQkJfQorCQkJZWxzZSBpZiAobWN4dGR1bXBTaG1lbS0+ZHVtcF9zdGF0 dXMgPT0gTUNYVERVTVBTVEFUVVNfQUNDRVBUQUJMRSkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIER1 bXBlciBzZWVtcyB0byBoYXZlIGNsZWFuZWQgdXAgdGhpbmdzIGFscmVhZHkgYmVjYXVzZQorCQkJ CSAqIG9mIGZhaWx1cmVzIG9yIGNhbmNlbGxhdGlvbi4KKwkJCQkgKiBTaW5jZSB0aGUgZHVtcGVy IGhhcyBhbHJlYWR5IHJlbW92ZWQgdGhlIGR1bXAgZmlsZSwKKwkJCQkgKiBzaW1wbHkgZXhpdC4K KwkJCQkgKi8KKwkJCQlMV0xvY2tSZWxlYXNlKE1jeHREdW1wTG9jayk7CisJCQkJdHVwbGVzdG9y ZV9kb25lc3RvcmluZyh0dXBzdG9yZSk7CisKKwkJCQlyZXR1cm4gKERhdHVtKSAwOworCQkJfQor CQkJZWxzZSBpZiAobWN4dGR1bXBTaG1lbS0+ZHVtcF9zdGF0dXMgPT0gTUNYVERVTVBTVEFUVVNf Q0FOQ0VMSU5HKQorCQkJeworCQkJCS8qCisJCQkJICogUmVxdWVzdCBoYXMgYmVlbiBjYW5jZWxl ZC4gRXhpdCB3aXRob3V0IGR1bXBpbmcuCisJCQkJICovCisJCQkJTFdMb2NrUmVsZWFzZShNY3h0 RHVtcExvY2spOworCQkJCXR1cGxlc3RvcmVfZG9uZXN0b3JpbmcodHVwc3RvcmUpOworCisJCQkJ cmV0dXJuIChEYXR1bSkgMDsKKwkJCX0KKworCQkJZWxzZSBpZiAobWN4dGR1bXBTaG1lbS0+ZHVt cF9zdGF0dXMgPT0gTUNYVERVTVBTVEFUVVNfRE9ORSkKKwkJCXsKKwkJCQkvKiBEdW1waW5nIGhh cyBjb21wbGV0ZWQuICovCisJCQkJTFdMb2NrUmVsZWFzZShNY3h0RHVtcExvY2spOworCQkJCWJy ZWFrOworCQkJfQorCQkJLyoKKwkJCSAqIFRoZSBkdW1wZXIgbXVzdCBiZSBpbiB0aGUgbWlkZGxl IG9mIGEgZHVtcGluZyBvciB0aGUgcmVxdWVzdAorCQkJICogaGFzbid0IGJlZW4gcmVhY2hlZCB5 ZXQuCisJCQkgKi8KKwkJCUFzc2VydChtY3h0ZHVtcFNobWVtLT5kdW1wX3N0YXR1cyA9PSBNQ1hU RFVNUFNUQVRVU19SRVFVRVNUSU5HIHx8CisJCQkJbWN4dGR1bXBTaG1lbS0+ZHVtcF9zdGF0dXMg PT0gTUNYVERVTVBTVEFUVVNfRFVNUElORyk7CisKKwkJCS8qCisJCQkgKiBBbHRob3VnaCB3ZSBo YXZlIGNoZWNrZWQgdGhlIHRhcmdldCBwcm9jZXNzLAorCQkJICogaXQgbWlnaHQgaGF2ZSBiZWVu IHRlcm1pbmF0ZWQgYWZ0ZXIgdGhlIGNoZWNrLgorCQkJICogRW5zdXJlIGl0IGFnYWluLgorCQkJ ICovCisJCQlwcm9jID0gQmFja2VuZFBpZEdldFByb2MoZHN0X3BpZCk7CisKKwkJCWlmIChwcm9j ID09IE5VTEwpCisJCQl7CisJCQkJZXJlcG9ydChXQVJOSU5HLAorCQkJCQkJKGVycm1zZygiUElE ICVkIHNlZW1zIHRvIGV4aXQgYmVmb3JlIGR1bXBpbmcuIiwgZHN0X3BpZCkpKTsKKworCQkJCS8q IEluaXRpYWxpemUgdGhlIHNoYXJlZCBtZW1vcnkgYW5kIGV4aXQuICovCisJCQkJTFdMb2NrUmVs ZWFzZShNY3h0RHVtcExvY2spOworCQkJCUxXTG9ja0FjcXVpcmUoTWN4dER1bXBMb2NrLCBMV19F WENMVVNJVkUpOworCisJCQkJbWN4dGR1bXBTaG1lbS0+ZHN0X3BpZCA9IDA7CisJCQkJbWN4dGR1 bXBTaG1lbS0+c3JjX3BpZCA9IDA7CisJCQkJbWN4dGR1bXBTaG1lbS0+ZHVtcF9zdGF0dXMgPSBN Q1hURFVNUFNUQVRVU19BQ0NFUFRBQkxFOworCisJCQkJTFdMb2NrUmVsZWFzZShNY3h0RHVtcExv Y2spOworCisJCQkJdHVwbGVzdG9yZV9kb25lc3RvcmluZyh0dXBzdG9yZSk7CisJCQkJcmV0dXJu IChEYXR1bSkgMTsKKwkJCX0KKwkJCUxXTG9ja1JlbGVhc2UoTWN4dER1bXBMb2NrKTsKKworCQkJ LyoKKwkJCSAqIFdhaXQuIFdlIGV4cGVjdCB0byBnZXQgYSBsYXRjaCBzaWduYWwgYmFjayBmcm9t IHRoZSBkdW1wZXIuCisJCQkgKiBVc2UgYSB0aW1lb3V0IHRvIGVuYWJsZSBjYW5jZWxsYXRpb24u CisJCQkgKi8KKwkJCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwKKwkJCQkJV0xfTEFUQ0hfU0VU IHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCTEwMDBMLCBXQUlUX0VW RU5UX0RVTVBfTUVNT1JZX0NPTlRFWFQpOworCQl9CisJfQorCVBHX0VORF9FTlNVUkVfRVJST1Jf Q0xFQU5VUChNY3h0UmVxQ2xlYW51cCwgKERhdHVtKSBJbnQzMkdldERhdHVtKGRzdF9waWQpKTsK KworCS8qIFJlYWQgdmFsdWVzIGZyb20gdGhlIGR1bXAgZmlsZSBhbmQgcHV0IHRoZW0gb24gdHVw bGVzdG9yZS4gKi8KKwlQdXREdW1wZWRWYWx1ZXNPblR1cGxlc3RvcmUoZHVtcGZpbGUsIHR1cHN0 b3JlLCB0dXBkZXNjLCBkc3RfcGlkKTsKIAogCS8qIGNsZWFuIHVwIGFuZCByZXR1cm4gdGhlIHR1 cGxlc3RvcmUgKi8KIAl0dXBsZXN0b3JlX2RvbmVzdG9yaW5nKHR1cHN0b3JlKTsKIAogCXJldHVy biAoRGF0dW0pIDA7CiB9CisKKy8qCisgKiBkdW1wX21lbW9yeV9jb250ZXh0cworICogCQlEdW1w IGxvY2FsIG1lbW9yeSBjb250ZXh0cyB0byBhIGZpbGUuCisgKi8KK3N0YXRpYyB2b2lkCitkdW1w X21lbW9yeV9jb250ZXh0cyh2b2lkKQoreworCUZJTEUJCSpmcG91dDsKKwljaGFyCQlkdW1wZmls ZVtNQVhQR1BBVEhdOworCWludAkJZm9ybWF0X2lkOworCXBpZF90CQlzcmNfcGlkOworCVBHUFJP QwkgCSpzcmNfcHJvYzsKKworCXNucHJpbnRmKGR1bXBmaWxlLCBzaXplb2YoZHVtcGZpbGUpLCAi JXMvJWQiLCBQR19NRU1VU0FHRV9ESVIsIE15UHJvY1BpZCk7CisKKwlMV0xvY2tBY3F1aXJlKE1j eHREdW1wTG9jaywgTFdfRVhDTFVTSVZFKTsKKworCWlmIChtY3h0ZHVtcFNobWVtLT5kdW1wX3N0 YXR1cyA9PSBNQ1hURFVNUFNUQVRVU19BQ0NFUFRBQkxFKQorCXsKKwkJLyoKKwkJICogVGhlIHJl cXVlc3RvciBjYW5jZWxlZCB0aGUgcmVxdWVzdCBhbmQgaW5pdGlhbGl6ZWQKKwkJICogdGhlIHNo YXJlZCBtZW1vcnkuIFNpbXBseSBleGl0LgorCQkgKi8KKwkJTFdMb2NrUmVsZWFzZShNY3h0RHVt cExvY2spOworCisJCXJldHVybjsKKwl9CisKKwlpZiAobWN4dGR1bXBTaG1lbS0+ZHVtcF9zdGF0 dXMgPT0gTUNYVERVTVBTVEFUVVNfQ0FOQ0VMSU5HKQorCXsKKwkJLyoKKwkJICogVGhlIHJlcXVl c3RvciBjYW5jZWxlZCB0aGUgcmVxdWVzdC4KKwkJICogSW5pdGlhbGl6ZSB0aGUgc2hhcmVkIG1l bW9yeSBhbmQgZXhpdC4KKwkJICovCisJCW1jeHRkdW1wU2htZW0tPmRzdF9waWQgPSAwOworCQlt Y3h0ZHVtcFNobWVtLT5zcmNfcGlkID0gMDsKKwkJbWN4dGR1bXBTaG1lbS0+ZHVtcF9zdGF0dXMg PSBNQ1hURFVNUFNUQVRVU19BQ0NFUFRBQkxFOworCisJCUxXTG9ja1JlbGVhc2UoTWN4dER1bXBM b2NrKTsKKworCQlyZXR1cm47CisJfQorCisJQXNzZXJ0KG1jeHRkdW1wU2htZW0tPmR1bXBfc3Rh dHVzID09IE1DWFREVU1QU1RBVFVTX1JFUVVFU1RJTkcpOworCisJbWN4dGR1bXBTaG1lbS0+ZHVt cF9zdGF0dXMgPSBNQ1hURFVNUFNUQVRVU19EVU1QSU5HOworCXNyY19waWQgPSBtY3h0ZHVtcFNo bWVtLT5zcmNfcGlkOworCisJTFdMb2NrUmVsZWFzZShNY3h0RHVtcExvY2spOworCisJZnBvdXQg PSBBbGxvY2F0ZUZpbGUoZHVtcGZpbGUsICJ3Iik7CisKKwlpZiAoZnBvdXQgPT0gTlVMTCkKKwl7 CisJCWVyZXBvcnQoTE9HLAorCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAorCQkJCSBl cnJtc2coImNvdWxkIG5vdCB3cml0ZSBkdW1wIGZpbGUgXCIlc1wiOiAlbSIsCisJCQkJCQlkdW1w ZmlsZSkpKTsKKwkJRnJlZUZpbGUoZnBvdXQpOworCisJCUxXTG9ja0FjcXVpcmUoTWN4dER1bXBM b2NrLCBMV19FWENMVVNJVkUpOworCisJCW1jeHRkdW1wU2htZW0tPmRzdF9waWQgPSAwOworCQlt Y3h0ZHVtcFNobWVtLT5zcmNfcGlkID0gMDsKKwkJbWN4dGR1bXBTaG1lbS0+ZHVtcF9zdGF0dXMg PSBNQ1hURFVNUFNUQVRVU19BQ0NFUFRBQkxFOworCisJCUxXTG9ja1JlbGVhc2UoTWN4dER1bXBM b2NrKTsKKworCQlyZXR1cm47CisJfQorCWZvcm1hdF9pZCA9IFBHX01DWFRfRklMRV9GT1JNQVRf SUQ7CisJZndyaXRlKCZmb3JtYXRfaWQsIHNpemVvZihmb3JtYXRfaWQpLCAxLCBmcG91dCk7CisK KwkvKiBMb29rIGludG8gZWFjaCBtZW1vcnkgY29udGV4dCBmcm9tIFRvcE1lbW9yeUNvbnRleHQg cmVjdXJzaXZlbHkuICovCisJUHV0TWVtb3J5Q29udGV4dHNTdGF0c1R1cGxlU3RvcmUoTlVMTCwg TlVMTCwKKwkJCQkJCQlUb3BNZW1vcnlDb250ZXh0LCBOVUxMLCAwLCBmcG91dCk7CisKKwkvKgor CSAqIE1ha2UgZHVtcCBmaWxlIGVuZHMgd2l0aCAnRScuCisJICogVGhpcyBpcyBjaGVja2VkIGJ5 IHRoZSByZXF1ZXN0b3IgbGF0ZXIuCisJICovCisJZnB1dGMoJ0UnLCBmcG91dCk7CisKKwlpZiAo ZmVycm9yKGZwb3V0KSkKKwl7CisJCWVyZXBvcnQoTE9HLAorCQkJCShlcnJjb2RlX2Zvcl9maWxl X2FjY2VzcygpLAorCQkJCSBlcnJtc2coImNvdWxkIG5vdCB3cml0ZSBkdW1wIGZpbGUgXCIlc1wi OiAlbSIsCisJCQkJCQlkdW1wZmlsZSkpKTsKKwkJRnJlZUZpbGUoZnBvdXQpOworCQl1bmxpbmso ZHVtcGZpbGUpOworCisJCUxXTG9ja0FjcXVpcmUoTWN4dER1bXBMb2NrLCBMV19FWENMVVNJVkUp OworCisJCW1jeHRkdW1wU2htZW0tPmRzdF9waWQgPSAwOworCQltY3h0ZHVtcFNobWVtLT5zcmNf cGlkID0gMDsKKwkJbWN4dGR1bXBTaG1lbS0+ZHVtcF9zdGF0dXMgPSBNQ1hURFVNUFNUQVRVU19B Q0NFUFRBQkxFOworCisJCUxXTG9ja1JlbGVhc2UoTWN4dER1bXBMb2NrKTsKKworCQlyZXR1cm47 CisJfQorCisJLyogTm8gbW9yZSBvdXRwdXQgdG8gYmUgZG9uZS4gQ2xvc2UgZmlsZS4gKi8KKwll bHNlIGlmIChGcmVlRmlsZShmcG91dCkgPCAwKQorCXsKKwkJZXJlcG9ydChMT0csCisJCQkJKGVy cmNvZGVfZm9yX2ZpbGVfYWNjZXNzKCksCisJCQkJIGVycm1zZygiY291bGQgbm90IGNsb3NlIGR1 bXAgZmlsZSBcIiVzXCI6ICVtIiwKKwkJCQkJCWR1bXBmaWxlKSkpOworCX0KKworCUxXTG9ja0Fj cXVpcmUoTWN4dER1bXBMb2NrLCBMV19FWENMVVNJVkUpOworCisJaWYgKG1jeHRkdW1wU2htZW0t PmR1bXBfc3RhdHVzID09IE1DWFREVU1QU1RBVFVTX0NBTkNFTElORykKKwl7CisJCS8qIER1cmlu ZyBkdW1waW5nLCB0aGUgcmVxdWVzdG9yIGNhbmNlbGVkIHRoZSByZXF1ZXN0LiAqLworCQl1bmxp bmsoZHVtcGZpbGUpOworCisJCW1jeHRkdW1wU2htZW0tPmRzdF9waWQgPSAwOworCQltY3h0ZHVt cFNobWVtLT5zcmNfcGlkID0gMDsKKwkJbWN4dGR1bXBTaG1lbS0+ZHVtcF9zdGF0dXMgPSBNQ1hU RFVNUFNUQVRVU19BQ0NFUFRBQkxFOworCisJCUxXTG9ja1JlbGVhc2UoTWN4dER1bXBMb2NrKTsK KworCQlyZXR1cm47CisJfQorCisJLyogRHVtcGluZyBoYXMgc3VjY2VlZGVkLCBub3RpZnkgaXQg dG8gdGhlIHJlcXVlc3Rvci4gKi8KKwltY3h0ZHVtcFNobWVtLT5kdW1wX3N0YXR1cyA9IE1DWFRE VU1QU1RBVFVTX0RPTkU7CisJTFdMb2NrUmVsZWFzZShNY3h0RHVtcExvY2spOworCXNyY19wcm9j ID0gQmFja2VuZFBpZEdldFByb2Moc3JjX3BpZCk7CisJU2V0TGF0Y2goJihzcmNfcHJvYy0+cHJv Y0xhdGNoKSk7CisKKwlyZXR1cm47Cit9CisKKy8qCisgKiBQcm9jZXNzRHVtcE1lbW9yeUNvbnRl eHRJbnRlcnJ1cHQKKyAqCQlUaGUgcG9ydGlvbiBvZiBtZW1vcnkgY29udGV4dCBkdW1wIGludGVy cnVwdCBoYW5kbGluZyB0aGF0IHJ1bnMKKyAqCQlvdXRzaWRlIG9mIHRoZSBzaWduYWwgaGFuZGxl ci4KKyAqLwordm9pZAorUHJvY2Vzc0R1bXBNZW1vcnlDb250ZXh0SW50ZXJydXB0KHZvaWQpCit7 CisJUHJvY1NpZ25hbER1bXBNZW1vcnlDb250ZXh0UGVuZGluZyA9IGZhbHNlOworCWR1bXBfbWVt b3J5X2NvbnRleHRzKCk7Cit9CisKKy8qCisgKiBIYW5kbGVQcm9jU2lnbmFsRHVtcE1lbW9yeUNv bnRleHQKKyAqIAkJSGFuZGxlIHJlY2VpcHQgb2YgYW4gaW50ZXJydXB0IGluZGljYXRpbmcgYSBt ZW1vcnkgY29udGV4dCBkdW1wLgorICoJCVNpZ25hbCBoYW5kbGVyIHBvcnRpb24gb2YgaW50ZXJy dXB0IGhhbmRsaW5nLgorICovCit2b2lkCitIYW5kbGVQcm9jU2lnbmFsRHVtcE1lbW9yeUNvbnRl eHQodm9pZCkKK3sKKwlQcm9jU2lnbmFsRHVtcE1lbW9yeUNvbnRleHRQZW5kaW5nID0gdHJ1ZTsK K30KKworLyoKKyAqIE1jeHREdW1wU2htZW1Jbml0CisgKiAJCUluaXRpYWxpemUgbWN4dGR1bXAg c2hhcmVkIG1lbW9yeSBzdHJ1Y3QuCisgKi8KK3ZvaWQKK01jeHREdW1wU2htZW1Jbml0KHZvaWQp Cit7CisJYm9vbAkJZm91bmQ7CisKKwltY3h0ZHVtcFNobWVtID0gKG1jeHRkdW1wU2htZW1TdHJ1 Y3QgKikKKwkJU2htZW1Jbml0U3RydWN0KCJNZW1vcnkgQ29udGV4dCBEdW1wIERhdGEiLAorCQkJ CQkJc2l6ZW9mKG1jeHRkdW1wU2htZW1TdHJ1Y3QpLAorCQkJCQkJJmZvdW5kKTsKKwlpZiAoIWZv dW5kKQorCXsKKwkJbWN4dGR1bXBTaG1lbS0+ZHN0X3BpZCA9IDA7CisJCW1jeHRkdW1wU2htZW0t PnNyY19waWQgPSAwOworCQltY3h0ZHVtcFNobWVtLT5kdW1wX3N0YXR1cyA9IE1DWFREVU1QU1RB VFVTX0FDQ0VQVEFCTEU7CisJfQorfQorCisvKgorICogUmVtb3ZlTWVtY3h0RmlsZQorICoJIAlS ZW1vdmUgZHVtcCBmaWxlcy4KKyAqLwordm9pZAorUmVtb3ZlTWVtY3h0RmlsZShpbnQgcGlkKQor eworCURJUgkJKmRpcjsKKwlzdHJ1Y3QgCWRpcmVudCAqZHVtcGZpbGU7CisKKwlpZiAocGlkID09 IDApCisJeworCQkvKiBkZWxldGUgYWxsIGR1bXAgZmlsZXMgKi8KKwkJZGlyID0gQWxsb2NhdGVE aXIoUEdfTUVNVVNBR0VfRElSKTsKKwkJd2hpbGUgKChkdW1wZmlsZSA9IFJlYWREaXIoZGlyLCBQ R19NRU1VU0FHRV9ESVIpKSAhPSBOVUxMKQorCQl7CisJCQljaGFyCQlkdW1wZmlsZXBhdGhbMzJd OworCisJCQlpZiAoc3RyY21wKGR1bXBmaWxlLT5kX25hbWUsICIuIikgPT0gMCB8fCBzdHJjbXAo ZHVtcGZpbGUtPmRfbmFtZSwgIi4uIikgPT0gMCkKKwkJCQljb250aW51ZTsKKworCQkJc3ByaW50 ZihkdW1wZmlsZXBhdGgsICIlcy8lcyIsIFBHX01FTVVTQUdFX0RJUiwgZHVtcGZpbGUtPmRfbmFt ZSk7CisKKwkJCWVyZXBvcnQoREVCVUcyLAorCQkJCQkoZXJybXNnKCJyZW1vdmluZyBmaWxlIFwi JXNcIiIsIGR1bXBmaWxlcGF0aCkpKTsKKworCQkJaWYgKHVubGluayhkdW1wZmlsZXBhdGgpIDwg MCkKKwkJCXsKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZV9mb3JfZmlsZV9hY2Nl c3MoKSwKKwkJCQkJIGVycm1zZygiY291bGQgbm90IHJlbW92ZSBmaWxlIFwiJXNcIjogJW0iLCBk dW1wZmlsZXBhdGgpKSk7CisJCQl9CisJCX0KKwkJRnJlZURpcihkaXIpOworCX0KKwllbHNlCisJ eworCQkvKiBkZWxldGUgc3BlY2lmaWVkIGR1bXAgZmlsZSAqLworCQljaGFyCQlzdHJfcGlkWzEy XTsKKwkJY2hhcgkJZHVtcGZpbGVwYXRoWzMyXTsKKwkJc3RydWN0IAkJc3RhdCBzdGF0X3RtcDsK KworCQlwZ19sdG9hKHBpZCwgc3RyX3BpZCk7CisJCXNwcmludGYoZHVtcGZpbGVwYXRoLCAiJXMv JXMiLCBQR19NRU1VU0FHRV9ESVIsIHN0cl9waWQpOworCisJCWVyZXBvcnQoREVCVUcyLAorCQkJ CShlcnJtc2coInJlbW92aW5nIGZpbGUgXCIlc1wiIiwgZHVtcGZpbGVwYXRoKSkpOworCisJCWlm IChzdGF0KGR1bXBmaWxlcGF0aCwgJnN0YXRfdG1wKSA9PSAwKQorCQl7CisJCQlpZiAodW5saW5r KGR1bXBmaWxlcGF0aCkgPCAwKQorCQkJeworCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJj b2RlX2Zvcl9maWxlX2FjY2VzcygpLAorCQkJCQkgZXJybXNnKCJjb3VsZCBub3QgcmVtb3ZlIGZp bGUgXCIlc1wiOiAlbSIsIGR1bXBmaWxlcGF0aCkpKTsKKwkJCX0KKwkJfQorCX0KK30KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvaW5pdC9nbG9iYWxzLmMKaW5kZXggZWEyODc2OWQ2YS4uNDM3YWUyMjEzYSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvaW5pdC9nbG9iYWxzLmMKQEAgLTMyLDYgKzMyLDcgQEAgdm9sYXRpbGUgc2lnX2F0b21pY190 IFF1ZXJ5Q2FuY2VsUGVuZGluZyA9IGZhbHNlOwogdm9sYXRpbGUgc2lnX2F0b21pY190IFByb2NE aWVQZW5kaW5nID0gZmFsc2U7CiB2b2xhdGlsZSBzaWdfYXRvbWljX3QgQ2xpZW50Q29ubmVjdGlv bkxvc3QgPSBmYWxzZTsKIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBJZGxlSW5UcmFuc2FjdGlvblNl c3Npb25UaW1lb3V0UGVuZGluZyA9IGZhbHNlOwordm9sYXRpbGUgc2lnX2F0b21pY190IFByb2NT aWduYWxEdW1wTWVtb3J5Q29udGV4dFBlbmRpbmcgPSBmYWxzZTsKIHZvbGF0aWxlIHNpZ19hdG9t aWNfdCBJZGxlU2Vzc2lvblRpbWVvdXRQZW5kaW5nID0gZmFsc2U7CiB2b2xhdGlsZSBzaWdfYXRv bWljX3QgUHJvY1NpZ25hbEJhcnJpZXJQZW5kaW5nID0gZmFsc2U7CiB2b2xhdGlsZSB1aW50MzIg SW50ZXJydXB0SG9sZG9mZkNvdW50ID0gMDsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vaW5pdGRiL2lu aXRkYi5jIGIvc3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMKaW5kZXggYzg1NDIyMWEzMC4uOGNlYmEy ZmU0MiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMKKysrIGIvc3JjL2Jpbi9p bml0ZGIvaW5pdGRiLmMKQEAgLTIyMSw3ICsyMjEsOCBAQCBzdGF0aWMgY29uc3QgY2hhciAqY29u c3Qgc3ViZGlyc1tdID0gewogCSJwZ194YWN0IiwKIAkicGdfbG9naWNhbCIsCiAJInBnX2xvZ2lj YWwvc25hcHNob3RzIiwKLQkicGdfbG9naWNhbC9tYXBwaW5ncyIKKwkicGdfbG9naWNhbC9tYXBw aW5ncyIsCisJInBnX21lbXVzYWdlIgogfTsKIAogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2Jh c2ViYWNrdXAvdC8wMTBfcGdfYmFzZWJhY2t1cC5wbCBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC90 LzAxMF9wZ19iYXNlYmFja3VwLnBsCmluZGV4IGY2NzRhN2M5NGUuLjM0MGE4MGZjMTEgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC90LzAxMF9wZ19iYXNlYmFja3VwLnBsCisrKyBi L3NyYy9iaW4vcGdfYmFzZWJhY2t1cC90LzAxMF9wZ19iYXNlYmFja3VwLnBsCkBAIC02LDcgKzYs NyBAQCB1c2UgRmlsZTo6QmFzZW5hbWUgcXcoYmFzZW5hbWUgZGlybmFtZSk7CiB1c2UgRmlsZTo6 UGF0aCBxdyhybXRyZWUpOwogdXNlIFBvc3RncmVzTm9kZTsKIHVzZSBUZXN0TGliOwotdXNlIFRl c3Q6Ok1vcmUgdGVzdHMgPT4gMTA5OwordXNlIFRlc3Q6Ok1vcmUgdGVzdHMgPT4gMTEwOwogCiBw cm9ncmFtX2hlbHBfb2soJ3BnX2Jhc2ViYWNrdXAnKTsKIHByb2dyYW1fdmVyc2lvbl9vaygncGdf YmFzZWJhY2t1cCcpOwpAQCAtMTI0LDcgKzEyNCw3IEBAIGlzX2RlZXBseSgKIAogIyBDb250ZW50 cyBvZiB0aGVzZSBkaXJlY3RvcmllcyBzaG91bGQgbm90IGJlIGNvcGllZC4KIGZvcmVhY2ggbXkg JGRpcm5hbWUgKAotCXF3KHBnX2R5bnNobWVtIHBnX25vdGlmeSBwZ19yZXBsc2xvdCBwZ19zZXJp YWwgcGdfc25hcHNob3RzIHBnX3N0YXRfdG1wIHBnX3N1YnRyYW5zKQorCXF3KHBnX2R5bnNobWVt IHBnX25vdGlmeSBwZ19yZXBsc2xvdCBwZ19zZXJpYWwgcGdfc25hcHNob3RzIHBnX3N0YXRfdG1w IHBnX3N1YnRyYW5zIHBnX21lbXVzYWdlKQogICApCiB7CiAJaXNfZGVlcGx5KApkaWZmIC0tZ2l0 IGEvc3JjL2Jpbi9wZ19yZXdpbmQvZmlsZW1hcC5jIGIvc3JjL2Jpbi9wZ19yZXdpbmQvZmlsZW1h cC5jCmluZGV4IDI2MThiNGM5NTcuLjMzZGE1NzA1OTggMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf cmV3aW5kL2ZpbGVtYXAuYworKysgYi9zcmMvYmluL3BnX3Jld2luZC9maWxlbWFwLmMKQEAgLTEx OSw2ICsxMTksOSBAQCBzdGF0aWMgY29uc3QgY2hhciAqZXhjbHVkZURpckNvbnRlbnRzW10gPQog CS8qIENvbnRlbnRzIHplcm9lZCBvbiBzdGFydHVwLCBzZWUgU3RhcnR1cFNVQlRSQU5TKCkuICov CiAJInBnX3N1YnRyYW5zIiwKIAorCS8qIFNraXAgbWVtb3J5IGNvbnRleHQgZHVtcGVkIGZpbGVz LiAqLworCSJwZ19tZW11c2FnZSIsCisKIAkvKiBlbmQgb2YgbGlzdCAqLwogCU5VTEwKIH07CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCBkMjczMzZhZGNkLi45Zjc4MTE5ODdlIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHJvYy5kYXQKQEAgLTc4NTQsMTUgKzc4NTQsMjUgQEAKIAogIyBtZW1vcnkgY29u dGV4dCBvZiBsb2NhbCBiYWNrZW5kCiB7IG9pZCA9PiAnMjI4MicsCi0gIGRlc2NyID0+ICdpbmZv cm1hdGlvbiBhYm91dCBhbGwgbWVtb3J5IGNvbnRleHRzIG9mIGxvY2FsIGJhY2tlbmQnLAogICBw cm9uYW1lID0+ICdwZ19nZXRfYmFja2VuZF9tZW1vcnlfY29udGV4dHMnLCBwcm9yb3dzID0+ICcx MDAnLAogICBwcm9yZXRzZXQgPT4gJ3QnLCBwcm92b2xhdGlsZSA9PiAndicsIHByb3BhcmFsbGVs ID0+ICdyJywKICAgcHJvcmV0dHlwZSA9PiAncmVjb3JkJywgcHJvYXJndHlwZXMgPT4gJycsCiAg IHByb2FsbGFyZ3R5cGVzID0+ICd7dGV4dCx0ZXh0LHRleHQsaW50NCxpbnQ4LGludDgsaW50OCxp bnQ4LGludDh9JywKICAgcHJvYXJnbW9kZXMgPT4gJ3tvLG8sbyxvLG8sbyxvLG8sb30nLAogICBw cm9hcmduYW1lcyA9PiAne25hbWUsIGlkZW50LCBwYXJlbnQsIGxldmVsLCB0b3RhbF9ieXRlcywg dG90YWxfbmJsb2NrcywgZnJlZV9ieXRlcywgZnJlZV9jaHVua3MsIHVzZWRfYnl0ZXN9JywKKyAg ZGVzY3IgPT4gJ2luZm9ybWF0aW9uIGFib3V0IGFsbCBtZW1vcnkgY29udGV4dHMgb2YgbG9jYWwg YmFja2VuZCcsCiAgIHByb3NyYyA9PiAncGdfZ2V0X2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzJyB9 LAogCisjIG1lbW9yeSBjb250ZXh0IG9mIHNwZWNpZmllZCBiYWNrZW5kCit7IG9pZCA9PiAnNDU0 MycsCisgIGRlc2NyID0+ICdpbmZvcm1hdGlvbiBhYm91dCBhbGwgbWVtb3J5IGNvbnRleHRzIG9m IHNwZWNpZmllZCBiYWNrZW5kJywKKyAgcHJvbmFtZSA9PiAncGdfZ2V0X3RhcmdldF9iYWNrZW5k X21lbW9yeV9jb250ZXh0cycsIHByb3Jvd3MgPT4gJzEwMCcsIHByb2lzc3RyaWN0ID0+ICdmJywK KyAgcHJvcmV0c2V0ID0+ICd0JywgcHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9wYXJhbGxlbCA9PiAn cicsIHByb3JldHR5cGUgPT4gJ3JlY29yZCcsCisgIHByb2FyZ3R5cGVzID0+ICdpbnQ0JywgcHJv YWxsYXJndHlwZXMgPT4gJ3tpbnQ0LHRleHQsdGV4dCx0ZXh0LGludDQsaW50OCxpbnQ4LGludDgs aW50OCxpbnQ4fScsCisgIHByb2FyZ21vZGVzID0+ICd7aSxvLG8sbyxvLG8sbyxvLG8sb30nLAor ICBwcm9hcmduYW1lcyA9PiAne3BpZCwgbmFtZSwgaWRlbnQsIHBhcmVudCwgbGV2ZWwsIHRvdGFs X2J5dGVzLCB0b3RhbF9uYmxvY2tzLCBmcmVlX2J5dGVzLCBmcmVlX2NodW5rcywgdXNlZF9ieXRl c30nLAorICBwcm9zcmMgPT4gJ3BnX2dldF90YXJnZXRfYmFja2VuZF9tZW1vcnlfY29udGV4dHMn IH0sCisKICMgbm9uLXBlcnNpc3RlbnQgc2VyaWVzIGdlbmVyYXRvcgogeyBvaWQgPT4gJzEwNjYn LCBkZXNjciA9PiAnbm9uLXBlcnNpc3RlbnQgc2VyaWVzIGdlbmVyYXRvcicsCiAgIHByb25hbWUg PT4gJ2dlbmVyYXRlX3NlcmllcycsIHByb3Jvd3MgPT4gJzEwMDAnLApkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvbWlzY2FkbWluLmggYi9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAppbmRleCAxYmRj OTdlMzA4Li5kMDU4NDIyYmVkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAor KysgYi9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaApAQCAtODIsNiArODIsNyBAQCBleHRlcm4gUEdE TExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0b21pY190IEludGVycnVwdFBlbmRpbmc7CiBleHRlcm4g UEdETExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0b21pY190IFF1ZXJ5Q2FuY2VsUGVuZGluZzsKIGV4 dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgUHJvY0RpZVBlbmRpbmc7CiBl eHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0b21pY190IElkbGVJblRyYW5zYWN0aW9u U2Vzc2lvblRpbWVvdXRQZW5kaW5nOworZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19h dG9taWNfdCBQcm9jU2lnbmFsRHVtcE1lbW9yeUNvbnRleHRQZW5kaW5nOwogZXh0ZXJuIFBHRExM SU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBJZGxlU2Vzc2lvblRpbWVvdXRQZW5kaW5nOwog ZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBQcm9jU2lnbmFsQmFycmll clBlbmRpbmc7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bnc3RhdC5oIGIvc3JjL2luY2x1 ZGUvcGdzdGF0LmgKaW5kZXggYzM4YjY4OTcxMC4uZmQzODQxODNmNiAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvcGdzdGF0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGdzdGF0LmgKQEAgLTk2NCw3ICs5 NjQsOCBAQCB0eXBlZGVmIGVudW0KIAlXQUlUX0VWRU5UX1JFUExJQ0FUSU9OX1NMT1RfRFJPUCwK IAlXQUlUX0VWRU5UX1NBRkVfU05BUFNIT1QsCiAJV0FJVF9FVkVOVF9TWU5DX1JFUCwKLQlXQUlU X0VWRU5UX1hBQ1RfR1JPVVBfVVBEQVRFCisJV0FJVF9FVkVOVF9YQUNUX0dST1VQX1VQREFURSwK KwlXQUlUX0VWRU5UX0RVTVBfTUVNT1JZX0NPTlRFWFQKIH0gV2FpdEV2ZW50SVBDOwogCiAvKiAt LS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaCBi L3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCmluZGV4IDRhZTdkYzMzYjguLmQwMjUz ODFhZTggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCisrKyBi L3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCkBAIC0zNCw2ICszNCw3IEBAIHR5cGVk ZWYgZW51bQogCVBST0NTSUdfUEFSQUxMRUxfTUVTU0FHRSwJLyogbWVzc2FnZSBmcm9tIGNvb3Bl cmF0aW5nIHBhcmFsbGVsIGJhY2tlbmQgKi8KIAlQUk9DU0lHX1dBTFNORF9JTklUX1NUT1BQSU5H LAkvKiBhc2sgd2Fsc2VuZGVycyB0byBwcmVwYXJlIGZvciBzaHV0ZG93biAgKi8KIAlQUk9DU0lH X0JBUlJJRVIsCQkJLyogZ2xvYmFsIGJhcnJpZXIgaW50ZXJydXB0ICAqLworCVBST0NTSUdfRFVN UF9NRU1DWFQsCQkvKiByZXF1ZXN0IGR1bXBpbmcgbWVtb3J5IGNvbnRleHQgaW50ZXJydXB0ICov CiAKIAkvKiBSZWNvdmVyeSBjb25mbGljdCByZWFzb25zICovCiAJUFJPQ1NJR19SRUNPVkVSWV9D T05GTElDVF9EQVRBQkFTRSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL21jeHRmdW5j cy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvbWN4dGZ1bmNzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMC4uZWZmMmM2MmNiYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNs dWRlL3V0aWxzL21jeHRmdW5jcy5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICoKKyAqIG1jeHRmdW5jcy5oCisgKgkgIERlY2xhcmF0aW9ucyBmb3Igc2hvd2luZyBiYWNr ZW5kIG1lbW9yeSBjb250ZXh0LgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0y MDIwLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29w eXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEK KyAqCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvdXRpbHMvbWN4dGZ1 bmNzLmgKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lmbmRlZiBNQ1hUX0gKKyNkZWZp bmUgTUNYVF9ICisKKy8qIERpcmVjdG9yeSB0byBzdG9yZSBkdW1wZWQgbWVtb3J5IGZpbGVzICov CisjZGVmaW5lIFBHX01FTVVTQUdFX0RJUgkJInBnX21lbXVzYWdlIgorCisjZGVmaW5lIFBHX01D WFRfRklMRV9GT1JNQVRfSUQJMHgwMUI1QkM5RQorCit0eXBlZGVmIGVudW0gTWN4dER1bXBTdGF0 dXMKK3sKKwlNQ1hURFVNUFNUQVRVU19BQ0NFUFRBQkxFLAkJLyogbm8gb25lIGlzIHJlcXVlc3Rp bmcgZHVtcGluZyAqLworCU1DWFREVU1QU1RBVFVTX1JFUVVFU1RJTkcsCQkvKiByZXF1ZXN0IGhh cyBiZWVuIGlzc3VlZCwgYnV0IGR1bXBlciBoYXMgbm90IHJlY2VpdmVkIGl0IHlldCAqLworCU1D WFREVU1QU1RBVFVTX0RVTVBJTkcsCQkJLyogZHVtcGVyIGlzIGR1bXBpbmcgZmlsZXMgKi8KKwlN Q1hURFVNUFNUQVRVU19ET05FLAkJCS8qIGR1bXBlciBoYXMgZmluaXNoZWQgZHVtcGluZyBhbmQg dGhlIHJlcXVlc3RvciBpcyB3b3JraW5nICovCisJTUNYVERVTVBTVEFUVVNfQ0FOQ0VMSU5HCQkv KiByZXF1ZXN0b3IgY2FuY2VsZWQgdGhlIGR1bXBpbmcgKi8KK30gTWN4dER1bXBTdGF0dXM7CisK K3R5cGVkZWYgc3RydWN0IG1jeHRkdW1wU2htZW1TdHJ1Y3QKK3sKKwlwaWRfdAkJZHN0X3BpZDsJ CS8qIHBpZCBvZiB0aGUgc2lnbmFsIHJlY2VpdmVyICovCisJcGlkX3QJCXNyY19waWQ7CQkvKiBw aWQgb2YgdGhlIHNpZ25hbCBzZW5kZXIgKi8KKwlNY3h0RHVtcFN0YXR1cwlkdW1wX3N0YXR1czsJ CS8qIGR1bXAgc3RhdHVzICovCit9IG1jeHRkdW1wU2htZW1TdHJ1Y3Q7CisKK2V4dGVybiB2b2lk IFByb2Nlc3NEdW1wTWVtb3J5Q29udGV4dEludGVycnVwdCh2b2lkKTsKK2V4dGVybiB2b2lkIEhh bmRsZVByb2NTaWduYWxEdW1wTWVtb3J5Q29udGV4dCh2b2lkKTsKK2V4dGVybiB2b2lkIE1jeHRE dW1wU2htZW1Jbml0KHZvaWQpOworZXh0ZXJuIHZvaWQgUmVtb3ZlTWN4dER1bXBGaWxlKGludCk7 CitleHRlcm4gdm9pZCBSZW1vdmVNZW1jeHRGaWxlKGludCk7CisjZW5kaWYJCQkJCQkJLyogTUNY VF9IICovCi0tIAoyLjE4LjEKCg== --=_9a2253ef1cbdc73b72aa234b019609a2--