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 1lTFPA-0003wH-Kp for pgsql-hackers@arkaria.postgresql.org; Mon, 05 Apr 2021 02:55:56 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1lTFP9-0003FC-FI for pgsql-hackers@arkaria.postgresql.org; Mon, 05 Apr 2021 02:55:55 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lTFP8-0003F5-V1 for pgsql-hackers@lists.postgresql.org; Mon, 05 Apr 2021 02:55:55 +0000 Received: from oss.nttdata.com ([49.212.34.109]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lTFP5-0008BH-69 for pgsql-hackers@postgresql.org; Mon, 05 Apr 2021 02:55:53 +0000 Received: from oss.nttdata.com (localhost [127.0.0.1]) by oss.nttdata.com (Postfix) with ESMTP id 1123B623EC; Mon, 5 Apr 2021 11:55:47 +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="=_8526501781ae1bcaa994792628b912f9" Date: Mon, 05 Apr 2021 11:55:47 +0900 From: torikoshia To: Fujii Masao Cc: Kyotaro Horiguchi , pgsql-hackers@postgresql.org, tgl@sss.pgh.pa.us, gkokolatos@protonmail.com, kasahara.tatsuhito@gmail.com, craig@2ndquadrant.com Subject: Re: Get memory contexts of an arbitrary backend process In-Reply-To: <65fbf059-bcff-1585-59a1-1ec6a6f5ac75@oss.nttdata.com> References: <1f259e90-08c8-2202-be66-f7ee05d22cd2@oss.nttdata.com> <20210331.151612.259240960686480846.horikyota.ntt@gmail.com> <65fbf059-bcff-1585-59a1-1ec6a6f5ac75@oss.nttdata.com> Message-ID: 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: Archived-At: Precedence: bulk --=_8526501781ae1bcaa994792628b912f9 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2021-04-01 19:13, Fujii Masao wrote: > On 2021/03/31 15:16, Kyotaro Horiguchi wrote: >>> + The memory contexts will be logged based on the log configuration >>> set. For example: >>> >>> How do you think? >> >> How about "The memory contexts will be logged in the server log" ? >> I think "server log" doesn't suggest any concrete target. > > Or just using "logged" is enough? > > Also I'd like to document that one message for each memory context is > logged. > So what about the following? > > One message for each memory context will be logged. For example, Agreed. BTW, there was a conflict since c30f54ad732(Detect POLLHUP/POLLRDHUP while running queries), attached v9. Regards, --=_8526501781ae1bcaa994792628b912f9 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v9-0001-add-memorycontext-elog-print.patch Content-Disposition: attachment; filename=v9-0001-add-memorycontext-elog-print.patch; size=26920 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZnVuYy5z Z21sCmluZGV4IDNjZjI0M2ExNmEuLmEyMGJlNDM1Y2EgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9mdW5jLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbApAQCAtMjQ5MTMsNiArMjQ5 MTMsMjMgQEAgU0VMRUNUIGNvbGxhdGlvbiBmb3IgKCdmb28nIENPTExBVEUgImRlX0RFIik7CiAg ICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgICA8L3Jvdz4KIAorICAgICAgPHJvdz4KKyAgICAg ICA8ZW50cnkgcm9sZT0iZnVuY190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1 cmUiPgorICAgICAgICA8aW5kZXh0ZXJtPgorICAgICAgICAgPHByaW1hcnk+cGdfbG9nX2JhY2tl bmRfbWVtb3J5X2NvbnRleHRzPC9wcmltYXJ5PgorICAgICAgICA8L2luZGV4dGVybT4KKyAgICAg ICAgPGZ1bmN0aW9uPnBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0czwvZnVuY3Rpb24+ICgg PHBhcmFtZXRlcj5waWQ8L3BhcmFtZXRlcj4gPHR5cGU+aW50ZWdlcjwvdHlwZT4gKQorICAgICAg ICA8cmV0dXJudmFsdWU+Ym9vbGVhbjwvcmV0dXJudmFsdWU+CisgICAgICAgPC9wYXJhPgorICAg ICAgIDxwYXJhPgorICAgICAgICBMb2dzIHRoZSBtZW1vcnkgY29udGV4dHMgd2hvc2UgYmFja2Vu ZCBwcm9jZXNzIGhhcyB0aGUgc3BlY2lmaWVkCisgICAgICAgIHByb2Nlc3MgSUQuCisgICAgICAg IE1lbW9yeSBjb250ZXh0cyB3aWxsIGJlIGxvZ2dlZCBiYXNlZCBvbiB0aGUgbG9nIGNvbmZpZ3Vy YXRpb24gc2V0LgorICAgICAgICBTZWUgPHhyZWYgbGlua2VuZD0icnVudGltZS1jb25maWctbG9n Z2luZyIvPiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgT25seSBzdXBlcnVzZXJzIGNh biBsb2cgdGhlIG1lbW9yeSBjb250ZXh0cy4KKyAgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAg IDwvcm93PgorCiAgICAgICA8cm93PgogICAgICAgIDxlbnRyeSByb2xlPSJmdW5jX3RhYmxlX2Vu dHJ5Ij48cGFyYSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+CiAgICAgICAgIDxpbmRleHRlcm0+CkBA IC0yNDk4Myw2ICsyNTAwMCwzNiBAQCBTRUxFQ1QgY29sbGF0aW9uIGZvciAoJ2ZvbycgQ09MTEFU RSAiZGVfREUiKTsKICAgICA8c3RydWN0bmFtZT5wZ19zdGF0X2FjdGl2aXR5PC9zdHJ1Y3RuYW1l PiB2aWV3LgogICAgPC9wYXJhPgogCisgICA8cGFyYT4KKyAgICA8ZnVuY3Rpb24+cGdfbG9nX2Jh Y2tlbmRfbWVtb3J5X2NvbnRleHRzPC9mdW5jdGlvbj4gY2FuIGJlIHVzZWQKKyAgICB0byBsb2cg dGhlIG1lbW9yeSBjb250ZXh0cyBvZiB0aGUgYmFja2VuZCBwcm9jZXNzLiBGb3IgZXhhbXBsZSwK Kzxwcm9ncmFtbGlzdGluZz4KK3Bvc3RncmVzPSMgU0VMRUNUIHBnX2xvZ19iYWNrZW5kX21lbW9y eV9jb250ZXh0cyhwZ19iYWNrZW5kX3BpZCgpKTsKKyBwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29u dGV4dHMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKzwv cHJvZ3JhbWxpc3Rpbmc+CitPbmUgbWVzc2FnZSBmb3IgZWFjaCBtZW1vcnkgY29udGV4dCB3aWxs IGJlIGxvZ2dlZC4gRm9yIGV4YW1wbGU6Cis8c2NyZWVuPgorTE9HOiAgbG9nZ2luZyBtZW1vcnkg Y29udGV4dHMgb2YgUElEIDEwMzc3CitTVEFURU1FTlQ6ICBTRUxFQ1QgcGdfbG9nX2JhY2tlbmRf bWVtb3J5X2NvbnRleHRzKHBnX2JhY2tlbmRfcGlkKCkpOworTE9HOiAgbGV2ZWw6IDA7IFRvcE1l bW9yeUNvbnRleHQ6IDgwODAwIHRvdGFsIGluIDYgYmxvY2tzOyAxNDQzMiBmcmVlICg1IGNodW5r cyk7IDY2MzY4IHVzZWQKK0xPRzogIGxldmVsOiAxOyBwZ3N0YXQgVGFiU3RhdHVzQXJyYXkgbG9v a3VwIGhhc2ggdGFibGU6IDgxOTIgdG90YWwgaW4gMSBibG9ja3M7IDE0MDggZnJlZSAoMCBjaHVu a3MpOyA2Nzg0IHVzZWQKK0xPRzogIGxldmVsOiAxOyBUb3BUcmFuc2FjdGlvbkNvbnRleHQ6IDgx OTIgdG90YWwgaW4gMSBibG9ja3M7IDc3MjAgZnJlZSAoMSBjaHVua3MpOyA0NzIgdXNlZAorTE9H OiAgbGV2ZWw6IDE7IFJvd0Rlc2NyaXB0aW9uQ29udGV4dDogODE5MiB0b3RhbCBpbiAxIGJsb2Nr czsgNjg4MCBmcmVlICgwIGNodW5rcyk7IDEzMTIgdXNlZAorTE9HOiAgbGV2ZWw6IDE7IE1lc3Nh Z2VDb250ZXh0OiAxNjM4NCB0b3RhbCBpbiAyIGJsb2NrczsgNTE1MiBmcmVlICgwIGNodW5rcyk7 IDExMjMyIHVzZWQKK0xPRzogIGxldmVsOiAxOyBPcGVyYXRvciBjbGFzcyBjYWNoZTogODE5MiB0 b3RhbCBpbiAxIGJsb2NrczsgNTEyIGZyZWUgKDAgY2h1bmtzKTsgNzY4MCB1c2VkCitMT0c6ICBs ZXZlbDogMTsgc21nciByZWxhdGlvbiB0YWJsZTogMTYzODQgdG90YWwgaW4gMiBibG9ja3M7IDQ1 NDQgZnJlZSAoMyBjaHVua3MpOyAxMTg0MCB1c2VkCitMT0c6ICBsZXZlbDogMTsgVHJhbnNhY3Rp b25BYm9ydENvbnRleHQ6IDMyNzY4IHRvdGFsIGluIDEgYmxvY2tzOyAzMjUwNCBmcmVlICgwIGNo dW5rcyk7IDI2NCB1c2VkCisuLi4KK0xPRzogIGxldmVsOiAxOyBFcnJvckNvbnRleHQ6IDgxOTIg dG90YWwgaW4gMSBibG9ja3M7IDc5MjggZnJlZSAoMyBjaHVua3MpOyAyNjQgdXNlZAorTE9HOiAg R3JhbmQgdG90YWw6IDE2NTE5MjAgYnl0ZXMgaW4gMjAxIGJsb2NrczsgNjIyMzYwIGZyZWUgKDg4 IGNodW5rcyk7IDEwMjk1NjAgdXNlZAorPC9zY3JlZW4+CisgICAgRm9yIG1vcmUgdGhhbiAxMDAg Y2hpbGQgY29udGV4dHMgdW5kZXIgdGhlIHNhbWUgcGFyZW50IG9uZSwKKyAgICAxMDAgY2hpbGQg Y29udGV4dHMgYW5kIGEgc3VtbWFyeSBvZiB0aGUgcmVtYWluaW5nIG9uZXMgd2lsbCBiZSBsb2dn ZWQuCisgICA8L3BhcmE+CisKICAgPC9zZWN0Mj4KIAogICA8c2VjdDIgaWQ9ImZ1bmN0aW9ucy1h ZG1pbi1iYWNrdXAiPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3Np Z25hbC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCmluZGV4IGM2YThk NDYxMWUuLmVhYzY4OTUxNDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3By b2NzaWduYWwuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKQEAg LTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9zaW52YWwuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCisjaW5jbHVkZSAidXRp bHMvbWVtdXRpbHMuaCIKIAogLyoKICAqIFRoZSBTSUdVU1IxIHNpZ25hbCBpcyBtdWx0aXBsZXhl ZCB0byBzdXBwb3J0IHNpZ25hbGluZyBtdWx0aXBsZSBldmVudApAQCAtNjU3LDYgKzY1OCw5IEBA IHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKFNJR05BTF9BUkdTKQogCWlmIChDaGVja1Byb2NT aWduYWwoUFJPQ1NJR19CQVJSSUVSKSkKIAkJSGFuZGxlUHJvY1NpZ25hbEJhcnJpZXJJbnRlcnJ1 cHQoKTsKIAorCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19MT0dfTUVNT1JZX0NPTlRFWFQp KQorCQlIYW5kbGVMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KCk7CisKIAlpZiAoQ2hlY2tQcm9j U2lnbmFsKFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfREFUQUJBU0UpKQogCQlSZWNvdmVyeUNv bmZsaWN0SW50ZXJydXB0KFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfREFUQUJBU0UpOwogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29w L3Bvc3RncmVzLmMKaW5kZXggYWQzNTFlMmZkMS4uMzMwZWM1YjAyOCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMu YwpAQCAtMzMyNyw2ICszMzI3LDkgQEAgUHJvY2Vzc0ludGVycnVwdHModm9pZCkKIAogCWlmIChQ YXJhbGxlbE1lc3NhZ2VQZW5kaW5nKQogCQlIYW5kbGVQYXJhbGxlbE1lc3NhZ2VzKCk7CisKKwlp ZiAoTG9nTWVtb3J5Q29udGV4dFBlbmRpbmcpCisJCVByb2Nlc3NMb2dNZW1vcnlDb250ZXh0SW50 ZXJydXB0KCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRm dW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5jCmluZGV4IGMwMmZhNDc1 NTAuLmZlOWI3OTc5ZTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tY3h0ZnVu Y3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbWN4dGZ1bmNzLmMKQEAgLTE4LDYgKzE4 LDggQEAKICNpbmNsdWRlICJmdW5jYXBpLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5j bHVkZSAibWIvcGdfd2NoYXIuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKKyNpbmNsdWRl ICJzdG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAKIC8q IC0tLS0tLS0tLS0KQEAgLTYxLDcgKzYzLDcgQEAgUHV0TWVtb3J5Q29udGV4dHNTdGF0c1R1cGxl U3RvcmUoVHVwbGVzdG9yZXN0YXRlICp0dXBzdG9yZSwKIAogCS8qIEV4YW1pbmUgdGhlIGNvbnRl eHQgaXRzZWxmICovCiAJbWVtc2V0KCZzdGF0LCAwLCBzaXplb2Yoc3RhdCkpOwotCSgqY29udGV4 dC0+bWV0aG9kcy0+c3RhdHMpIChjb250ZXh0LCBOVUxMLCAodm9pZCAqKSAmbGV2ZWwsICZzdGF0 KTsKKwkoKmNvbnRleHQtPm1ldGhvZHMtPnN0YXRzKSAoY29udGV4dCwgTlVMTCwgKHZvaWQgKikg JmxldmVsLCAmc3RhdCwgdHJ1ZSk7CiAKIAltZW1zZXQodmFsdWVzLCAwLCBzaXplb2YodmFsdWVz KSk7CiAJbWVtc2V0KG51bGxzLCAwLCBzaXplb2YobnVsbHMpKTsKQEAgLTE1NSwzICsxNTcsNTkg QEAgcGdfZ2V0X2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAly ZXR1cm4gKERhdHVtKSAwOwogfQorCisvKgorICogcGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRl eHRzCisgKgkJU2lnbmFsIGEgYmFja2VuZCBwcm9jZXNzIHRvIGxvZyBpdHMgbWVtb3J5IGNvbnRl eHRzLgorICoKKyAqIE9ubHkgc3VwZXJ1c2VycyBhcmUgYWxsb3dlZCB0byBzaWduYWwgdG8gbG9n IHRoZSBtZW1vcnkgY29udGV4dHMKKyAqIGJlY2F1c2UgYWxsb3dpbmcgYW55IHVzZXJzIHRvIGlz c3VlIHRoaXMgcmVxdWVzdCBhdCBhbiB1bmJvdW5kZWQKKyAqIHJhdGUgd291bGQgY2F1c2UgbG90 cyBvZiBsb2cgbWVzc2FnZXMgYW5kIHdoaWNoIGNhbiBsZWFkIHRvCisgKiBkZW5pYWwgb2Ygc2Vy dmljZS4KKyAqCisgKiBPbiByZWNlaXB0IG9mIHRoaXMgc2lnbmFsLCBhIGJhY2tlbmQgc2V0cyB0 aGUgZmxhZyBpbiB0aGUgc2lnbmFsCisgKiBoYW5kbGVyLCBhbmQgdGhlbiB3aGljaCBjYXVzZXMg dGhlIG5leHQgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKQorICogdG8gbG9nIHRoZSBtZW1vcnkgY29u dGV4dHMuCisgKi8KK0RhdHVtCitwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMoUEdfRlVO Q1RJT05fQVJHUykKK3sKKwlpbnQJCQlwaWQgPSBQR19HRVRBUkdfSU5UMzIoMCk7CisJUEdQUk9D CSAgICpwcm9jID0gQmFja2VuZFBpZEdldFByb2MocGlkKTsKKworCS8qCisJICogQmFja2VuZFBp ZEdldFByb2MgcmV0dXJucyBOVUxMIGlmIHRoZSBwaWQgaXNuJ3QgdmFsaWQ7IGJ1dCBieSB0aGUg dGltZQorCSAqIHdlIHJlYWNoIGtpbGwoKSwgYSBwcm9jZXNzIGZvciB3aGljaCB3ZSBnZXQgYSB2 YWxpZCBwcm9jIGhlcmUgbWlnaHQKKwkgKiBoYXZlIHRlcm1pbmF0ZWQgb24gaXRzIG93bi4gIFRo ZXJlJ3Mgbm8gd2F5IHRvIGFjcXVpcmUgYSBsb2NrIG9uIGFuCisJICogYXJiaXRyYXJ5IHByb2Nl c3MgdG8gcHJldmVudCB0aGF0LiBCdXQgc2luY2UgdGhpcyBtZWNoYW5pc20gaXMgdXN1YWxseQor CSAqIHVzZWQgdG8gZGVidWcgYSBiYWNrZW5kIHJ1bm5pbmcgYW5kIGNvbnN1bWluZyBsb3RzIG9m IG1lbW9yeSwgdGhhdCBpdAorCSAqIG1pZ2h0IGVuZCBvbiBpdHMgb3duIGZpcnN0IGFuZCBpdHMg bWVtb3J5IGNvbnRleHRzIGFyZSBub3QgbG9nZ2VkIGlzCisJICogbm90IGEgcHJvYmxlbS4KKwkg Ki8KKwlpZiAocHJvYyA9PSBOVUxMKQorCXsKKwkJLyoKKwkJICogVGhpcyBpcyBqdXN0IGEgd2Fy bmluZyBzbyBhIGxvb3AtdGhyb3VnaC1yZXN1bHRzZXQgd2lsbCBub3QgYWJvcnQKKwkJICogaWYg b25lIGJhY2tlbmQgbG9nZ2VkIGl0cyBtZW1vcnkgY29udGV4dHMgZHVyaW5nIHRoZSBydW4uCisJ CSAqLworCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJKGVycm1zZygiUElEICVkIGlzIG5vdCBhIFBv c3RncmVTUUwgc2VydmVyIHByb2Nlc3MiLCBwaWQpKSk7CisJCVBHX1JFVFVSTl9CT09MKGZhbHNl KTsKKwl9CisKKwkvKiBPbmx5IGFsbG93IHN1cGVydXNlcnMgdG8gbG9nIG1lbW9yeSBjb250ZXh0 cy4gKi8KKwlpZiAoIXN1cGVydXNlcigpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2Rl KEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCisJCQkJIGVycm1zZygibXVzdCBiZSBh IHN1cGVydXNlciB0byBsb2cgbWVtb3J5IGNvbnRleHRzIikpKTsKKworCWlmIChTZW5kUHJvY1Np Z25hbChwaWQsIFBST0NTSUdfTE9HX01FTU9SWV9DT05URVhULCBwcm9jLT5iYWNrZW5kSWQpIDwg MCkKKwl7CisJCS8qIEFnYWluLCBqdXN0IGEgd2FybmluZyB0byBhbGxvdyBsb29wcyAqLworCQll cmVwb3J0KFdBUk5JTkcsCisJCQkJKGVycm1zZygiY291bGQgbm90IHNlbmQgc2lnbmFsIHRvIHBy b2Nlc3MgJWQ6ICVtIiwgcGlkKSkpOworCQlQR19SRVRVUk5fQk9PTChmYWxzZSk7CisJfQorCisJ UEdfUkVUVVJOX0JPT0wodHJ1ZSk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9p bml0L2dsb2JhbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCmluZGV4IGE5 ZjBmYzMwMTcuLjM4MWQ5ZTU0OGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQv Z2xvYmFscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCkBAIC0zNSw2 ICszNSw3IEBAIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBDbGllbnRDb25uZWN0aW9uTG9zdCA9IGZh bHNlOwogdm9sYXRpbGUgc2lnX2F0b21pY190IElkbGVJblRyYW5zYWN0aW9uU2Vzc2lvblRpbWVv dXRQZW5kaW5nID0gZmFsc2U7CiB2b2xhdGlsZSBzaWdfYXRvbWljX3QgSWRsZVNlc3Npb25UaW1l b3V0UGVuZGluZyA9IGZhbHNlOwogdm9sYXRpbGUgc2lnX2F0b21pY190IFByb2NTaWduYWxCYXJy aWVyUGVuZGluZyA9IGZhbHNlOwordm9sYXRpbGUgc2lnX2F0b21pY190IExvZ01lbW9yeUNvbnRl eHRQZW5kaW5nID0gZmFsc2U7CiB2b2xhdGlsZSB1aW50MzIgSW50ZXJydXB0SG9sZG9mZkNvdW50 ID0gMDsKIHZvbGF0aWxlIHVpbnQzMiBRdWVyeUNhbmNlbEhvbGRvZmZDb3VudCA9IDA7CiB2b2xh dGlsZSB1aW50MzIgQ3JpdFNlY3Rpb25Db3VudCA9IDA7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9tbWdyL2FzZXQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvYXNldC5jCmluZGV4 IGVjNmMxMzBkMGYuLjc3ODcyZTc3YmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21t Z3IvYXNldC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvYXNldC5jCkBAIC0yNzIsNyAr MjcyLDggQEAgc3RhdGljIFNpemUgQWxsb2NTZXRHZXRDaHVua1NwYWNlKE1lbW9yeUNvbnRleHQg Y29udGV4dCwgdm9pZCAqcG9pbnRlcik7CiBzdGF0aWMgYm9vbCBBbGxvY1NldElzRW1wdHkoTWVt b3J5Q29udGV4dCBjb250ZXh0KTsKIHN0YXRpYyB2b2lkIEFsbG9jU2V0U3RhdHMoTWVtb3J5Q29u dGV4dCBjb250ZXh0LAogCQkJCQkJICBNZW1vcnlTdGF0c1ByaW50RnVuYyBwcmludGZ1bmMsIHZv aWQgKnBhc3N0aHJ1LAotCQkJCQkJICBNZW1vcnlDb250ZXh0Q291bnRlcnMgKnRvdGFscyk7CisJ CQkJCQkgIE1lbW9yeUNvbnRleHRDb3VudGVycyAqdG90YWxzLAorCQkJCQkJICBib29sIHByaW50 X3RvX3N0ZGVycik7CiAKICNpZmRlZiBNRU1PUllfQ09OVEVYVF9DSEVDS0lORwogc3RhdGljIHZv aWQgQWxsb2NTZXRDaGVjayhNZW1vcnlDb250ZXh0IGNvbnRleHQpOwpAQCAtMTMzNiwxMSArMTMz NywxMiBAQCBBbGxvY1NldElzRW1wdHkoTWVtb3J5Q29udGV4dCBjb250ZXh0KQogICogcHJpbnRm dW5jOiBpZiBub3QgTlVMTCwgcGFzcyBhIGh1bWFuLXJlYWRhYmxlIHN0YXRzIHN0cmluZyB0byB0 aGlzLgogICogcGFzc3RocnU6IHBhc3MgdGhpcyBwb2ludGVyIHRocm91Z2ggdG8gcHJpbnRmdW5j LgogICogdG90YWxzOiBpZiBub3QgTlVMTCwgYWRkIHN0YXRzIGFib3V0IHRoaXMgY29udGV4dCBp bnRvICp0b3RhbHMuCisgKiBwcmludF90b19zdGRlcnI6IHByaW50IHN0YXRzIHRvIHN0ZGVyciBp ZiB0cnVlLCBlbG9nIG90aGVyd2lzZS4KICAqLwogc3RhdGljIHZvaWQKIEFsbG9jU2V0U3RhdHMo TWVtb3J5Q29udGV4dCBjb250ZXh0LAogCQkJICBNZW1vcnlTdGF0c1ByaW50RnVuYyBwcmludGZ1 bmMsIHZvaWQgKnBhc3N0aHJ1LAotCQkJICBNZW1vcnlDb250ZXh0Q291bnRlcnMgKnRvdGFscykK KwkJCSAgTWVtb3J5Q29udGV4dENvdW50ZXJzICp0b3RhbHMsIGJvb2wgcHJpbnRfdG9fc3RkZXJy KQogewogCUFsbG9jU2V0CXNldCA9IChBbGxvY1NldCkgY29udGV4dDsKIAlTaXplCQluYmxvY2tz ID0gMDsKQEAgLTEzNzksNyArMTM4MSw3IEBAIEFsbG9jU2V0U3RhdHMoTWVtb3J5Q29udGV4dCBj b250ZXh0LAogCQkJCSAiJXp1IHRvdGFsIGluICV6ZCBibG9ja3M7ICV6dSBmcmVlICglemQgY2h1 bmtzKTsgJXp1IHVzZWQiLAogCQkJCSB0b3RhbHNwYWNlLCBuYmxvY2tzLCBmcmVlc3BhY2UsIGZy ZWVjaHVua3MsCiAJCQkJIHRvdGFsc3BhY2UgLSBmcmVlc3BhY2UpOwotCQlwcmludGZ1bmMoY29u dGV4dCwgcGFzc3RocnUsIHN0YXRzX3N0cmluZyk7CisJCXByaW50ZnVuYyhjb250ZXh0LCBwYXNz dGhydSwgc3RhdHNfc3RyaW5nLCBwcmludF90b19zdGRlcnIpOwogCX0KIAogCWlmICh0b3RhbHMp CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL2dlbmVyYXRpb24uYyBiL3NyYy9i YWNrZW5kL3V0aWxzL21tZ3IvZ2VuZXJhdGlvbi5jCmluZGV4IDJiOTAwMzQ3NjQuLjU4NGNkNjE0 ZGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvZ2VuZXJhdGlvbi5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvZ2VuZXJhdGlvbi5jCkBAIC0xNTUsNyArMTU1LDggQEAg c3RhdGljIFNpemUgR2VuZXJhdGlvbkdldENodW5rU3BhY2UoTWVtb3J5Q29udGV4dCBjb250ZXh0 LCB2b2lkICpwb2ludGVyKTsKIHN0YXRpYyBib29sIEdlbmVyYXRpb25Jc0VtcHR5KE1lbW9yeUNv bnRleHQgY29udGV4dCk7CiBzdGF0aWMgdm9pZCBHZW5lcmF0aW9uU3RhdHMoTWVtb3J5Q29udGV4 dCBjb250ZXh0LAogCQkJCQkJCU1lbW9yeVN0YXRzUHJpbnRGdW5jIHByaW50ZnVuYywgdm9pZCAq cGFzc3RocnUsCi0JCQkJCQkJTWVtb3J5Q29udGV4dENvdW50ZXJzICp0b3RhbHMpOworCQkJCQkJ CU1lbW9yeUNvbnRleHRDb3VudGVycyAqdG90YWxzLAorCQkJCQkJCWJvb2wgcHJpbnRfdG9fc3Rk ZXJyKTsKIAogI2lmZGVmIE1FTU9SWV9DT05URVhUX0NIRUNLSU5HCiBzdGF0aWMgdm9pZCBHZW5l cmF0aW9uQ2hlY2soTWVtb3J5Q29udGV4dCBjb250ZXh0KTsKQEAgLTY2NSw2ICs2NjYsNyBAQCBH ZW5lcmF0aW9uSXNFbXB0eShNZW1vcnlDb250ZXh0IGNvbnRleHQpCiAgKiBwcmludGZ1bmM6IGlm IG5vdCBOVUxMLCBwYXNzIGEgaHVtYW4tcmVhZGFibGUgc3RhdHMgc3RyaW5nIHRvIHRoaXMuCiAg KiBwYXNzdGhydTogcGFzcyB0aGlzIHBvaW50ZXIgdGhyb3VnaCB0byBwcmludGZ1bmMuCiAgKiB0 b3RhbHM6IGlmIG5vdCBOVUxMLCBhZGQgc3RhdHMgYWJvdXQgdGhpcyBjb250ZXh0IGludG8gKnRv dGFscy4KKyAqIHByaW50X3RvX3N0ZGVycjogcHJpbnQgc3RhdHMgdG8gc3RkZXJyIGlmIHRydWUs IGVsb2cgb3RoZXJ3aXNlLgogICoKICAqIFhYWCBmcmVlc3BhY2Ugb25seSBhY2NvdW50cyBmb3Ig ZW1wdHkgc3BhY2UgYXQgdGhlIGVuZCBvZiB0aGUgYmxvY2ssIG5vdAogICogc3BhY2Ugb2YgZnJl ZWQgY2h1bmtzICh3aGljaCBpcyB1bmtub3duKS4KQEAgLTY3Miw3ICs2NzQsNyBAQCBHZW5lcmF0 aW9uSXNFbXB0eShNZW1vcnlDb250ZXh0IGNvbnRleHQpCiBzdGF0aWMgdm9pZAogR2VuZXJhdGlv blN0YXRzKE1lbW9yeUNvbnRleHQgY29udGV4dCwKIAkJCQlNZW1vcnlTdGF0c1ByaW50RnVuYyBw cmludGZ1bmMsIHZvaWQgKnBhc3N0aHJ1LAotCQkJCU1lbW9yeUNvbnRleHRDb3VudGVycyAqdG90 YWxzKQorCQkJCU1lbW9yeUNvbnRleHRDb3VudGVycyAqdG90YWxzLCBib29sIHByaW50X3RvX3N0 ZGVycikKIHsKIAlHZW5lcmF0aW9uQ29udGV4dCAqc2V0ID0gKEdlbmVyYXRpb25Db250ZXh0ICop IGNvbnRleHQ7CiAJU2l6ZQkJbmJsb2NrcyA9IDA7CkBAIC03MDQsNyArNzA2LDcgQEAgR2VuZXJh dGlvblN0YXRzKE1lbW9yeUNvbnRleHQgY29udGV4dCwKIAkJCQkgIiV6dSB0b3RhbCBpbiAlemQg YmxvY2tzICglemQgY2h1bmtzKTsgJXp1IGZyZWUgKCV6ZCBjaHVua3MpOyAlenUgdXNlZCIsCiAJ CQkJIHRvdGFsc3BhY2UsIG5ibG9ja3MsIG5jaHVua3MsIGZyZWVzcGFjZSwKIAkJCQkgbmZyZWVj aHVua3MsIHRvdGFsc3BhY2UgLSBmcmVlc3BhY2UpOwotCQlwcmludGZ1bmMoY29udGV4dCwgcGFz c3RocnUsIHN0YXRzX3N0cmluZyk7CisJCXByaW50ZnVuYyhjb250ZXh0LCBwYXNzdGhydSwgc3Rh dHNfc3RyaW5nLCBwcmludF90b19zdGRlcnIpOwogCX0KIAogCWlmICh0b3RhbHMpCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL21jeHQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21t Z3IvbWN4dC5jCmluZGV4IDg0NDcyYjkxNTguLmJkNDFmOGQzMWEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL21tZ3IvbWN4dC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvbWN4 dC5jCkBAIC0yMyw2ICsyMywxMCBAQAogCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKICNpbmNs dWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKKyNpbmNsdWRlICJz dG9yYWdlL3Byb2NhcnJheS5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgorI2lu Y2x1ZGUgInV0aWxzL2ZtZ3Jwcm90b3MuaCIKICNpbmNsdWRlICJ1dGlscy9tZW1kZWJ1Zy5oIgog I2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAKQEAgLTU1LDkgKzU5LDExIEBAIE1lbW9yeUNv bnRleHQgUG9ydGFsQ29udGV4dCA9IE5VTEw7CiBzdGF0aWMgdm9pZCBNZW1vcnlDb250ZXh0Q2Fs bFJlc2V0Q2FsbGJhY2tzKE1lbW9yeUNvbnRleHQgY29udGV4dCk7CiBzdGF0aWMgdm9pZCBNZW1v cnlDb250ZXh0U3RhdHNJbnRlcm5hbChNZW1vcnlDb250ZXh0IGNvbnRleHQsIGludCBsZXZlbCwK IAkJCQkJCQkJCSAgIGJvb2wgcHJpbnQsIGludCBtYXhfY2hpbGRyZW4sCi0JCQkJCQkJCQkgICBN ZW1vcnlDb250ZXh0Q291bnRlcnMgKnRvdGFscyk7CisJCQkJCQkJCQkgICBNZW1vcnlDb250ZXh0 Q291bnRlcnMgKnRvdGFscywKKwkJCQkJCQkJCSAgIGJvb2wgcHJpbnRfdG9fc3RkZXJyKTsKIHN0 YXRpYyB2b2lkIE1lbW9yeUNvbnRleHRTdGF0c1ByaW50KE1lbW9yeUNvbnRleHQgY29udGV4dCwg dm9pZCAqcGFzc3RocnUsCi0JCQkJCQkJCQljb25zdCBjaGFyICpzdGF0c19zdHJpbmcpOworCQkJ CQkJCQkJY29uc3QgY2hhciAqc3RhdHNfc3RyaW5nLAorCQkJCQkJCQkJYm9vbCBwcmludF90b19z dGRlcnIpOwogCiAvKgogICogWW91IHNob3VsZCBub3QgZG8gbWVtb3J5IGFsbG9jYXRpb25zIHdp dGhpbiBhIGNyaXRpY2FsIHNlY3Rpb24sIGJlY2F1c2UKQEAgLTQ5OSw3ICs1MDUsNyBAQCB2b2lk CiBNZW1vcnlDb250ZXh0U3RhdHMoTWVtb3J5Q29udGV4dCBjb250ZXh0KQogewogCS8qIEEgaGFy ZC13aXJlZCBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIGlzIHVzdWFsbHkgZ29vZCBl bm91Z2ggKi8KLQlNZW1vcnlDb250ZXh0U3RhdHNEZXRhaWwoY29udGV4dCwgMTAwKTsKKwlNZW1v cnlDb250ZXh0U3RhdHNEZXRhaWwoY29udGV4dCwgMTAwLCB0cnVlKTsKIH0KIAogLyoKQEAgLTUw OCwxOSArNTE0LDM0IEBAIE1lbW9yeUNvbnRleHRTdGF0cyhNZW1vcnlDb250ZXh0IGNvbnRleHQp CiAgKiBFbnRyeSBwb2ludCBmb3IgdXNlIGlmIHlvdSB3YW50IHRvIHZhcnkgdGhlIG51bWJlciBv ZiBjaGlsZCBjb250ZXh0cyBzaG93bi4KICAqLwogdm9pZAotTWVtb3J5Q29udGV4dFN0YXRzRGV0 YWlsKE1lbW9yeUNvbnRleHQgY29udGV4dCwgaW50IG1heF9jaGlsZHJlbikKK01lbW9yeUNvbnRl eHRTdGF0c0RldGFpbChNZW1vcnlDb250ZXh0IGNvbnRleHQsIGludCBtYXhfY2hpbGRyZW4sCisJ CQkJCQkgYm9vbCBwcmludF90b19zdGRlcnIpCiB7CiAJTWVtb3J5Q29udGV4dENvdW50ZXJzIGdy YW5kX3RvdGFsczsKIAogCW1lbXNldCgmZ3JhbmRfdG90YWxzLCAwLCBzaXplb2YoZ3JhbmRfdG90 YWxzKSk7CiAKLQlNZW1vcnlDb250ZXh0U3RhdHNJbnRlcm5hbChjb250ZXh0LCAwLCB0cnVlLCBt YXhfY2hpbGRyZW4sICZncmFuZF90b3RhbHMpOworCU1lbW9yeUNvbnRleHRTdGF0c0ludGVybmFs KGNvbnRleHQsIDAsIHRydWUsIG1heF9jaGlsZHJlbiwgJmdyYW5kX3RvdGFscywgcHJpbnRfdG9f c3RkZXJyKTsKIAotCWZwcmludGYoc3RkZXJyLAotCQkJIkdyYW5kIHRvdGFsOiAlenUgYnl0ZXMg aW4gJXpkIGJsb2NrczsgJXp1IGZyZWUgKCV6ZCBjaHVua3MpOyAlenUgdXNlZFxuIiwKLQkJCWdy YW5kX3RvdGFscy50b3RhbHNwYWNlLCBncmFuZF90b3RhbHMubmJsb2NrcywKLQkJCWdyYW5kX3Rv dGFscy5mcmVlc3BhY2UsIGdyYW5kX3RvdGFscy5mcmVlY2h1bmtzLAotCQkJZ3JhbmRfdG90YWxz LnRvdGFsc3BhY2UgLSBncmFuZF90b3RhbHMuZnJlZXNwYWNlKTsKKwlpZiAocHJpbnRfdG9fc3Rk ZXJyKQorCQlmcHJpbnRmKHN0ZGVyciwKKwkJCQkiR3JhbmQgdG90YWw6ICV6dSBieXRlcyBpbiAl emQgYmxvY2tzOyAlenUgZnJlZSAoJXpkIGNodW5rcyk7ICV6dSB1c2VkXG4iLAorCQkJCWdyYW5k X3RvdGFscy50b3RhbHNwYWNlLCBncmFuZF90b3RhbHMubmJsb2NrcywKKwkJCQlncmFuZF90b3Rh bHMuZnJlZXNwYWNlLCBncmFuZF90b3RhbHMuZnJlZWNodW5rcywKKwkJCQlncmFuZF90b3RhbHMu dG90YWxzcGFjZSAtIGdyYW5kX3RvdGFscy5mcmVlc3BhY2UpOworCWVsc2UKKworCQkvKgorCQkg KiBVc2UgTE9HX1NFUlZFUl9PTkxZIHRvIHByZXZlbnQgdGhlIG1lbW9yeSBjb250ZXh0cyBmcm9t IGJlaW5nIHNlbnQKKwkJICogdG8gdGhlIGNvbm5lY3RlZCBjbGllbnQuCisJCSAqLworCQllcmVw b3J0KExPR19TRVJWRVJfT05MWSwKKwkJCQkoZXJyaGlkZXN0bXQodHJ1ZSksCisJCQkJIGVycmhp ZGVjb250ZXh0KHRydWUpLAorCQkJCSBlcnJtc2dfaW50ZXJuYWwoIkdyYW5kIHRvdGFsOiAlenUg Ynl0ZXMgaW4gJXpkIGJsb2NrczsgJXp1IGZyZWUgKCV6ZCBjaHVua3MpOyAlenUgdXNlZCIsCisJ CQkJCQkJCSBncmFuZF90b3RhbHMudG90YWxzcGFjZSwgZ3JhbmRfdG90YWxzLm5ibG9ja3MsCisJ CQkJCQkJCSBncmFuZF90b3RhbHMuZnJlZXNwYWNlLCBncmFuZF90b3RhbHMuZnJlZWNodW5rcywK KwkJCQkJCQkJIGdyYW5kX3RvdGFscy50b3RhbHNwYWNlIC0gZ3JhbmRfdG90YWxzLmZyZWVzcGFj ZSkpKTsKIH0KIAogLyoKQEAgLTUzMyw3ICs1NTQsOCBAQCBNZW1vcnlDb250ZXh0U3RhdHNEZXRh aWwoTWVtb3J5Q29udGV4dCBjb250ZXh0LCBpbnQgbWF4X2NoaWxkcmVuKQogc3RhdGljIHZvaWQK IE1lbW9yeUNvbnRleHRTdGF0c0ludGVybmFsKE1lbW9yeUNvbnRleHQgY29udGV4dCwgaW50IGxl dmVsLAogCQkJCQkJICAgYm9vbCBwcmludCwgaW50IG1heF9jaGlsZHJlbiwKLQkJCQkJCSAgIE1l bW9yeUNvbnRleHRDb3VudGVycyAqdG90YWxzKQorCQkJCQkJICAgTWVtb3J5Q29udGV4dENvdW50 ZXJzICp0b3RhbHMsCisJCQkJCQkgICBib29sIHByaW50X3RvX3N0ZGVycikKIHsKIAlNZW1vcnlD b250ZXh0Q291bnRlcnMgbG9jYWxfdG90YWxzOwogCU1lbW9yeUNvbnRleHQgY2hpbGQ7CkBAIC01 NDUsNyArNTY3LDcgQEAgTWVtb3J5Q29udGV4dFN0YXRzSW50ZXJuYWwoTWVtb3J5Q29udGV4dCBj b250ZXh0LCBpbnQgbGV2ZWwsCiAJY29udGV4dC0+bWV0aG9kcy0+c3RhdHMoY29udGV4dCwKIAkJ CQkJCQlwcmludCA/IE1lbW9yeUNvbnRleHRTdGF0c1ByaW50IDogTlVMTCwKIAkJCQkJCQkodm9p ZCAqKSAmbGV2ZWwsCi0JCQkJCQkJdG90YWxzKTsKKwkJCQkJCQl0b3RhbHMsIHByaW50X3RvX3N0 ZGVycik7CiAKIAkvKgogCSAqIEV4YW1pbmUgY2hpbGRyZW4uICBJZiB0aGVyZSBhcmUgbW9yZSB0 aGFuIG1heF9jaGlsZHJlbiBvZiB0aGVtLCB3ZSBkbwpAQCAtNTYwLDExICs1ODIsMTMgQEAgTWVt b3J5Q29udGV4dFN0YXRzSW50ZXJuYWwoTWVtb3J5Q29udGV4dCBjb250ZXh0LCBpbnQgbGV2ZWws CiAJCWlmIChpY2hpbGQgPCBtYXhfY2hpbGRyZW4pCiAJCQlNZW1vcnlDb250ZXh0U3RhdHNJbnRl cm5hbChjaGlsZCwgbGV2ZWwgKyAxLAogCQkJCQkJCQkJICAgcHJpbnQsIG1heF9jaGlsZHJlbiwK LQkJCQkJCQkJCSAgIHRvdGFscyk7CisJCQkJCQkJCQkgICB0b3RhbHMsCisJCQkJCQkJCQkgICBw cmludF90b19zdGRlcnIpOwogCQllbHNlCiAJCQlNZW1vcnlDb250ZXh0U3RhdHNJbnRlcm5hbChj aGlsZCwgbGV2ZWwgKyAxLAogCQkJCQkJCQkJICAgZmFsc2UsIG1heF9jaGlsZHJlbiwKLQkJCQkJ CQkJCSAgICZsb2NhbF90b3RhbHMpOworCQkJCQkJCQkJICAgJmxvY2FsX3RvdGFscywKKwkJCQkJ CQkJCSAgIHByaW50X3RvX3N0ZGVycik7CiAJfQogCiAJLyogRGVhbCB3aXRoIGV4Y2VzcyBjaGls ZHJlbiAqLwpAQCAtNTcyLDE4ICs1OTYsMzMgQEAgTWVtb3J5Q29udGV4dFN0YXRzSW50ZXJuYWwo TWVtb3J5Q29udGV4dCBjb250ZXh0LCBpbnQgbGV2ZWwsCiAJewogCQlpZiAocHJpbnQpCiAJCXsK LQkJCWludAkJCWk7Ci0KLQkJCWZvciAoaSA9IDA7IGkgPD0gbGV2ZWw7IGkrKykKLQkJCQlmcHJp bnRmKHN0ZGVyciwgIiAgIik7Ci0JCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJIiVkIG1vcmUgY2hp bGQgY29udGV4dHMgY29udGFpbmluZyAlenUgdG90YWwgaW4gJXpkIGJsb2NrczsgJXp1IGZyZWUg KCV6ZCBjaHVua3MpOyAlenUgdXNlZFxuIiwKLQkJCQkJaWNoaWxkIC0gbWF4X2NoaWxkcmVuLAot CQkJCQlsb2NhbF90b3RhbHMudG90YWxzcGFjZSwKLQkJCQkJbG9jYWxfdG90YWxzLm5ibG9ja3Ms Ci0JCQkJCWxvY2FsX3RvdGFscy5mcmVlc3BhY2UsCi0JCQkJCWxvY2FsX3RvdGFscy5mcmVlY2h1 bmtzLAotCQkJCQlsb2NhbF90b3RhbHMudG90YWxzcGFjZSAtIGxvY2FsX3RvdGFscy5mcmVlc3Bh Y2UpOworCQkJaWYgKHByaW50X3RvX3N0ZGVycikKKwkJCXsKKwkJCQlpbnQJCQlpOworCisJCQkJ Zm9yIChpID0gMDsgaSA8PSBsZXZlbDsgaSsrKQorCQkJCQlmcHJpbnRmKHN0ZGVyciwgIiAgIik7 CisJCQkJZnByaW50ZihzdGRlcnIsCisJCQkJCQkiJWQgbW9yZSBjaGlsZCBjb250ZXh0cyBjb250 YWluaW5nICV6dSB0b3RhbCBpbiAlemQgYmxvY2tzOyAlenUgZnJlZSAoJXpkIGNodW5rcyk7ICV6 dSB1c2VkXG4iLAorCQkJCQkJaWNoaWxkIC0gbWF4X2NoaWxkcmVuLAorCQkJCQkJbG9jYWxfdG90 YWxzLnRvdGFsc3BhY2UsCisJCQkJCQlsb2NhbF90b3RhbHMubmJsb2NrcywKKwkJCQkJCWxvY2Fs X3RvdGFscy5mcmVlc3BhY2UsCisJCQkJCQlsb2NhbF90b3RhbHMuZnJlZWNodW5rcywKKwkJCQkJ CWxvY2FsX3RvdGFscy50b3RhbHNwYWNlIC0gbG9jYWxfdG90YWxzLmZyZWVzcGFjZSk7CisJCQl9 CisJCQllbHNlCisJCQkJZXJlcG9ydChMT0dfU0VSVkVSX09OTFksCisJCQkJCQkoZXJyaGlkZXN0 bXQodHJ1ZSksCisJCQkJCQkgZXJyaGlkZWNvbnRleHQodHJ1ZSksCisJCQkJCQkgZXJybXNnX2lu dGVybmFsKCJsZXZlbDogJWQ7ICVkIG1vcmUgY2hpbGQgY29udGV4dHMgY29udGFpbmluZyAlenUg dG90YWwgaW4gJXpkIGJsb2NrczsgJXp1IGZyZWUgKCV6ZCBjaHVua3MpOyAlenUgdXNlZCIsCisJ CQkJCQkJCQkJIGxldmVsLAorCQkJCQkJCQkJCSBpY2hpbGQgLSBtYXhfY2hpbGRyZW4sCisJCQkJ CQkJCQkJIGxvY2FsX3RvdGFscy50b3RhbHNwYWNlLAorCQkJCQkJCQkJCSBsb2NhbF90b3RhbHMu bmJsb2NrcywKKwkJCQkJCQkJCQkgbG9jYWxfdG90YWxzLmZyZWVzcGFjZSwKKwkJCQkJCQkJCQkg bG9jYWxfdG90YWxzLmZyZWVjaHVua3MsCisJCQkJCQkJCQkJIGxvY2FsX3RvdGFscy50b3RhbHNw YWNlIC0gbG9jYWxfdG90YWxzLmZyZWVzcGFjZSkpKTsKIAkJfQogCiAJCWlmICh0b3RhbHMpCkBA IC02MDUsMTEgKzY0NCwxMyBAQCBNZW1vcnlDb250ZXh0U3RhdHNJbnRlcm5hbChNZW1vcnlDb250 ZXh0IGNvbnRleHQsIGludCBsZXZlbCwKICAqLwogc3RhdGljIHZvaWQKIE1lbW9yeUNvbnRleHRT dGF0c1ByaW50KE1lbW9yeUNvbnRleHQgY29udGV4dCwgdm9pZCAqcGFzc3RocnUsCi0JCQkJCQlj b25zdCBjaGFyICpzdGF0c19zdHJpbmcpCisJCQkJCQljb25zdCBjaGFyICpzdGF0c19zdHJpbmcs CisJCQkJCQlib29sIHByaW50X3RvX3N0ZGVycikKIHsKIAlpbnQJCQlsZXZlbCA9ICooaW50ICop IHBhc3N0aHJ1OwogCWNvbnN0IGNoYXIgKm5hbWUgPSBjb250ZXh0LT5uYW1lOwogCWNvbnN0IGNo YXIgKmlkZW50ID0gY29udGV4dC0+aWRlbnQ7CisJY2hhcgkJdHJ1bmNhdGVkX2lkZW50WzExMF07 CiAJaW50CQkJaTsKIAogCS8qCkBAIC02MjMsOSArNjY0LDggQEAgTWVtb3J5Q29udGV4dFN0YXRz UHJpbnQoTWVtb3J5Q29udGV4dCBjb250ZXh0LCB2b2lkICpwYXNzdGhydSwKIAkJaWRlbnQgPSBO VUxMOwogCX0KIAotCWZvciAoaSA9IDA7IGkgPCBsZXZlbDsgaSsrKQotCQlmcHJpbnRmKHN0ZGVy ciwgIiAgIik7Ci0JZnByaW50ZihzdGRlcnIsICIlczogJXMiLCBuYW1lLCBzdGF0c19zdHJpbmcp OworCXRydW5jYXRlZF9pZGVudFswXSA9ICdcMCc7CisKIAlpZiAoaWRlbnQpCiAJewogCQkvKgpA QCAtNjM3LDI0ICs2NzcsNDEgQEAgTWVtb3J5Q29udGV4dFN0YXRzUHJpbnQoTWVtb3J5Q29udGV4 dCBjb250ZXh0LCB2b2lkICpwYXNzdGhydSwKIAkJaW50CQkJaWRsZW4gPSBzdHJsZW4oaWRlbnQp OwogCQlib29sCQl0cnVuY2F0ZWQgPSBmYWxzZTsKIAorCQlzdHJjcHkodHJ1bmNhdGVkX2lkZW50 LCAiOiAiKTsKKwkJaSA9IHN0cmxlbih0cnVuY2F0ZWRfaWRlbnQpOworCiAJCWlmIChpZGxlbiA+ IDEwMCkKIAkJewogCQkJaWRsZW4gPSBwZ19tYmNsaXBsZW4oaWRlbnQsIGlkbGVuLCAxMDApOwog CQkJdHJ1bmNhdGVkID0gdHJ1ZTsKIAkJfQotCQlmcHJpbnRmKHN0ZGVyciwgIjogIik7CisKIAkJ d2hpbGUgKGlkbGVuLS0gPiAwKQogCQl7CiAJCQl1bnNpZ25lZCBjaGFyIGMgPSAqaWRlbnQrKzsK IAogCQkJaWYgKGMgPCAnICcpCiAJCQkJYyA9ICcgJzsKLQkJCWZwdXRjKGMsIHN0ZGVycik7CisJ CQl0cnVuY2F0ZWRfaWRlbnRbaSsrXSA9IGM7CiAJCX0KKwkJdHJ1bmNhdGVkX2lkZW50W2ldID0g J1wwJzsKKwogCQlpZiAodHJ1bmNhdGVkKQotCQkJZnByaW50ZihzdGRlcnIsICIuLi4iKTsKKwkJ CXN0cmNhdCh0cnVuY2F0ZWRfaWRlbnQsICIuLi4iKTsKIAl9Ci0JZnB1dGMoJ1xuJywgc3RkZXJy KTsKKworCWlmIChwcmludF90b19zdGRlcnIpCisJeworCQlmb3IgKGkgPSAwOyBpIDwgbGV2ZWw7 IGkrKykKKwkJCWZwcmludGYoc3RkZXJyLCAiICAiKTsKKwkJZnByaW50ZihzdGRlcnIsICIlczog JXMlc1xuIiwgbmFtZSwgc3RhdHNfc3RyaW5nLCB0cnVuY2F0ZWRfaWRlbnQpOworCX0KKwllbHNl CisJCWVyZXBvcnQoTE9HX1NFUlZFUl9PTkxZLAorCQkJCShlcnJoaWRlc3RtdCh0cnVlKSwKKwkJ CQkgZXJyaGlkZWNvbnRleHQodHJ1ZSksCisJCQkJIGVycm1zZ19pbnRlcm5hbCgibGV2ZWw6ICVk OyAlczogJXMlcyIsCisJCQkJCQkJCSBsZXZlbCwgbmFtZSwgc3RhdHNfc3RyaW5nLCB0cnVuY2F0 ZWRfaWRlbnQpKSk7CiB9CiAKIC8qCkBAIC05NDYsNiArMTAwMyw1MiBAQCBNZW1vcnlDb250ZXh0 QWxsb2NFeHRlbmRlZChNZW1vcnlDb250ZXh0IGNvbnRleHQsIFNpemUgc2l6ZSwgaW50IGZsYWdz KQogCXJldHVybiByZXQ7CiB9CiAKKy8qCisgKiBIYW5kbGVMb2dNZW1vcnlDb250ZXh0SW50ZXJy dXB0CisgKgkJSGFuZGxlIHJlY2VpcHQgb2YgYW4gaW50ZXJydXB0IGluZGljYXRpbmcgbG9nZ2lu ZyBvZiBtZW1vcnkKKyAqCQljb250ZXh0cy4KKyAqCisgKiBBbGwgdGhlIGFjdHVhbCB3b3JrIGlz IGRlZmVycmVkIHRvIFByb2Nlc3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KCksCisgKiBiZWNh dXNlIHdlIGNhbm5vdCBzYWZlbHkgZW1pdCBhIGxvZyBtZXNzYWdlIGluc2lkZSB0aGUgc2lnbmFs IGhhbmRsZXIuCisgKi8KK3ZvaWQKK0hhbmRsZUxvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQodm9p ZCkKK3sKKwlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKKwlMb2dNZW1vcnlDb250ZXh0UGVuZGlu ZyA9IHRydWU7CisJLyogbGF0Y2ggd2lsbCBiZSBzZXQgYnkgcHJvY3NpZ25hbF9zaWd1c3IxX2hh bmRsZXIgKi8KK30KKworLyoKKyAqIFByb2Nlc3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0Cisg KiAJCVBlcmZvcm0gbG9nZ2luZyBvZiBtZW1vcnkgY29udGV4dHMgb2YgdGhpcyBiYWNrZW5kIHBy b2Nlc3MuCisgKgorICogQW55IGJhY2tlbmQgdGhhdCBwYXJ0aWNpcGF0ZXMgaW4gUHJvY1NpZ25h bCBzaWduYWxpbmcgbXVzdCBhcnJhbmdlCisgKiB0byBjYWxsIHRoaXMgZnVuY3Rpb24gaWYgd2Ug c2VlIExvZ01lbW9yeUNvbnRleHRQZW5kaW5nIHNldC4KKyAqIEl0IGlzIGNhbGxlZCBmcm9tIENI RUNLX0ZPUl9JTlRFUlJVUFRTKCksIHdoaWNoIGlzIGVub3VnaCBiZWNhdXNlCisgKiB0aGUgdGFy Z2V0IHByb2Nlc3MgZm9yIGxvZ2dpbmcgb2YgbWVtb3J5IGNvbnRleHRzIGlzIGEgYmFja2VuZC4K KyAqLwordm9pZAorUHJvY2Vzc0xvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQodm9pZCkKK3sKKwlM b2dNZW1vcnlDb250ZXh0UGVuZGluZyA9IGZhbHNlOworCisJZXJlcG9ydChMT0csCisJCQkoZXJy bXNnKCJsb2dnaW5nIG1lbW9yeSBjb250ZXh0cyBvZiBQSUQgJWQiLCBNeVByb2NQaWQpKSk7CisK KwkvKgorCSAqIFdoZW4gYSBiYWNrZW5kIHByb2Nlc3MgaXMgY29uc3VtaW5nIGh1Z2UgbWVtb3J5 LCBsb2dnaW5nIGFsbCBpdHMgbWVtb3J5CisJICogY29udGV4dHMgbWlnaHQgb3ZlcnJ1biBhdmFp bGFibGUgZGlzayBzcGFjZS4gVG8gcHJldmVudCB0aGlzLCB3ZSBsaW1pdAorCSAqIHRoZSBudW1i ZXIgb2YgY2hpbGQgY29udGV4dHMgdG8gbG9nIHBlciBwYXJlbnQgdG8gMTAwLgorCSAqCisJICog QXMgd2l0aCBNZW1vcnlDb250ZXh0U3RhdHMoKSwgd2Ugc3VwcG9zZSB0aGF0IHByYWN0aWNhbCBj YXNlcyB3aGVyZSB0aGUKKwkgKiBkdW1wIGdldHMgbG9uZyB3aWxsIHR5cGljYWxseSBiZSBodWdl IG51bWJlcnMgb2Ygc2libGluZ3MgdW5kZXIgdGhlCisJICogc2FtZSBwYXJlbnQgY29udGV4dDsg d2hpbGUgdGhlIGFkZGl0aW9uYWwgZGVidWdnaW5nIHZhbHVlIGZyb20gc2VlaW5nCisJICogZGV0 YWlscyBhYm91dCBpbmRpdmlkdWFsIHNpYmxpbmdzIGJleW9uZCAxMDAgd2lsbCBub3QgYmUgbGFy Z2UuCisJICovCisJTWVtb3J5Q29udGV4dFN0YXRzRGV0YWlsKFRvcE1lbW9yeUNvbnRleHQsIDEw MCwgZmFsc2UpOworfQorCiB2b2lkICoKIHBhbGxvYyhTaXplIHNpemUpCiB7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3NsYWIuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3Iv c2xhYi5jCmluZGV4IDkyMTNiZTdjOTUuLjU1M2RkN2Y2NjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL21tZ3Ivc2xhYi5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3Ivc2xhYi5j CkBAIC0xMzUsNyArMTM1LDggQEAgc3RhdGljIFNpemUgU2xhYkdldENodW5rU3BhY2UoTWVtb3J5 Q29udGV4dCBjb250ZXh0LCB2b2lkICpwb2ludGVyKTsKIHN0YXRpYyBib29sIFNsYWJJc0VtcHR5 KE1lbW9yeUNvbnRleHQgY29udGV4dCk7CiBzdGF0aWMgdm9pZCBTbGFiU3RhdHMoTWVtb3J5Q29u dGV4dCBjb250ZXh0LAogCQkJCQkgIE1lbW9yeVN0YXRzUHJpbnRGdW5jIHByaW50ZnVuYywgdm9p ZCAqcGFzc3RocnUsCi0JCQkJCSAgTWVtb3J5Q29udGV4dENvdW50ZXJzICp0b3RhbHMpOworCQkJ CQkgIE1lbW9yeUNvbnRleHRDb3VudGVycyAqdG90YWxzLAorCQkJCQkgIGJvb2wgcHJpbnRfdG9f c3RkZXJyKTsKICNpZmRlZiBNRU1PUllfQ09OVEVYVF9DSEVDS0lORwogc3RhdGljIHZvaWQgU2xh YkNoZWNrKE1lbW9yeUNvbnRleHQgY29udGV4dCk7CiAjZW5kaWYKQEAgLTYzMiwxMSArNjMzLDEz IEBAIFNsYWJJc0VtcHR5KE1lbW9yeUNvbnRleHQgY29udGV4dCkKICAqIHByaW50ZnVuYzogaWYg bm90IE5VTEwsIHBhc3MgYSBodW1hbi1yZWFkYWJsZSBzdGF0cyBzdHJpbmcgdG8gdGhpcy4KICAq IHBhc3N0aHJ1OiBwYXNzIHRoaXMgcG9pbnRlciB0aHJvdWdoIHRvIHByaW50ZnVuYy4KICAqIHRv dGFsczogaWYgbm90IE5VTEwsIGFkZCBzdGF0cyBhYm91dCB0aGlzIGNvbnRleHQgaW50byAqdG90 YWxzLgorICogcHJpbnRfdG9fc3RkZXJyOiBwcmludCBzdGF0cyB0byBzdGRlcnIgaWYgdHJ1ZSwg ZWxvZyBvdGhlcndpc2UuCiAgKi8KIHN0YXRpYyB2b2lkCiBTbGFiU3RhdHMoTWVtb3J5Q29udGV4 dCBjb250ZXh0LAogCQkgIE1lbW9yeVN0YXRzUHJpbnRGdW5jIHByaW50ZnVuYywgdm9pZCAqcGFz c3RocnUsCi0JCSAgTWVtb3J5Q29udGV4dENvdW50ZXJzICp0b3RhbHMpCisJCSAgTWVtb3J5Q29u dGV4dENvdW50ZXJzICp0b3RhbHMsCisJCSAgYm9vbCBwcmludF90b19zdGRlcnIpCiB7CiAJU2xh YkNvbnRleHQgKnNsYWIgPSBjYXN0Tm9kZShTbGFiQ29udGV4dCwgY29udGV4dCk7CiAJU2l6ZQkJ bmJsb2NrcyA9IDA7CkBAIC02NzEsNyArNjc0LDcgQEAgU2xhYlN0YXRzKE1lbW9yeUNvbnRleHQg Y29udGV4dCwKIAkJCQkgIiV6dSB0b3RhbCBpbiAlemQgYmxvY2tzOyAlenUgZnJlZSAoJXpkIGNo dW5rcyk7ICV6dSB1c2VkIiwKIAkJCQkgdG90YWxzcGFjZSwgbmJsb2NrcywgZnJlZXNwYWNlLCBm cmVlY2h1bmtzLAogCQkJCSB0b3RhbHNwYWNlIC0gZnJlZXNwYWNlKTsKLQkJcHJpbnRmdW5jKGNv bnRleHQsIHBhc3N0aHJ1LCBzdGF0c19zdHJpbmcpOworCQlwcmludGZ1bmMoY29udGV4dCwgcGFz c3RocnUsIHN0YXRzX3N0cmluZywgcHJpbnRfdG9fc3RkZXJyKTsKIAl9CiAKIAlpZiAodG90YWxz KQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggNjlmZmQwYzNmNC4uNzIwOGZiZTcwZCAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC03OTQ2LDYgKzc5NDYsMTIgQEAKICAgcHJvYXJnbmFt ZXMgPT4gJ3tuYW1lLCBpZGVudCwgcGFyZW50LCBsZXZlbCwgdG90YWxfYnl0ZXMsIHRvdGFsX25i bG9ja3MsIGZyZWVfYnl0ZXMsIGZyZWVfY2h1bmtzLCB1c2VkX2J5dGVzfScsCiAgIHByb3NyYyA9 PiAncGdfZ2V0X2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzJyB9LAogCisjIGxvZyBtZW1vcnkgY29u dGV4dHMgb2YgdGhlIHNwZWNpZmllZCBiYWNrZW5kCit7IG9pZCA9PiAnNDU0MycsIGRlc2NyID0+ ICdsb2cgbWVtb3J5IGNvbnRleHRzIG9mIHRoZSBzcGVjaWZpZWQgYmFja2VuZCcsCisgIHByb25h bWUgPT4gJ3BnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cycsCisgIHByb3ZvbGF0aWxlID0+ ICd2JywgcHJvcmV0dHlwZSA9PiAnYm9vbCcsCisgIHByb2FyZ3R5cGVzID0+ICdpbnQ0JywgcHJv c3JjID0+ICdwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMnIH0sCisKICMgbm9uLXBlcnNp c3RlbnQgc2VyaWVzIGdlbmVyYXRvcgogeyBvaWQgPT4gJzEwNjYnLCBkZXNjciA9PiAnbm9uLXBl cnNpc3RlbnQgc2VyaWVzIGdlbmVyYXRvcicsCiAgIHByb25hbWUgPT4gJ2dlbmVyYXRlX3Nlcmll cycsIHByb3Jvd3MgPT4gJzEwMDAnLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbWlzY2FkbWlu LmggYi9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAppbmRleCA2ZjgyNTFlMGIwLi45NTIwMmQzN2Fm IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAorKysgYi9zcmMvaW5jbHVkZS9t aXNjYWRtaW4uaApAQCAtODQsNiArODQsNyBAQCBleHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUg c2lnX2F0b21pY190IFByb2NEaWVQZW5kaW5nOwogZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxl IHNpZ19hdG9taWNfdCBJZGxlSW5UcmFuc2FjdGlvblNlc3Npb25UaW1lb3V0UGVuZGluZzsKIGV4 dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgSWRsZVNlc3Npb25UaW1lb3V0 UGVuZGluZzsKIGV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgUHJvY1Np Z25hbEJhcnJpZXJQZW5kaW5nOworZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9t aWNfdCBMb2dNZW1vcnlDb250ZXh0UGVuZGluZzsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0 aWxlIHNpZ19hdG9taWNfdCBDaGVja0NsaWVudENvbm5lY3Rpb25QZW5kaW5nOwogZXh0ZXJuIFBH RExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBDbGllbnRDb25uZWN0aW9uTG9zdDsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL21lbW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rl cy9tZW1ub2Rlcy5oCmluZGV4IDkzMzFlZjgwZmQuLmU2YTc1N2Q2YTAgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL25vZGVzL21lbW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvbWVtbm9k ZXMuaApAQCAtNTIsNyArNTIsOCBAQCB0eXBlZGVmIHN0cnVjdCBNZW1vcnlDb250ZXh0Q291bnRl cnMKICAqLwogCiB0eXBlZGVmIHZvaWQgKCpNZW1vcnlTdGF0c1ByaW50RnVuYykgKE1lbW9yeUNv bnRleHQgY29udGV4dCwgdm9pZCAqcGFzc3RocnUsCi0JCQkJCQkJCQkgIGNvbnN0IGNoYXIgKnN0 YXRzX3N0cmluZyk7CisJCQkJCQkJCQkgIGNvbnN0IGNoYXIgKnN0YXRzX3N0cmluZywKKwkJCQkJ CQkJCSAgYm9vbCBwcmludF90b19zdGRlcnIpOwogCiB0eXBlZGVmIHN0cnVjdCBNZW1vcnlDb250 ZXh0TWV0aG9kcwogewpAQCAtNjYsNyArNjcsOCBAQCB0eXBlZGVmIHN0cnVjdCBNZW1vcnlDb250 ZXh0TWV0aG9kcwogCWJvb2wJCSgqaXNfZW1wdHkpIChNZW1vcnlDb250ZXh0IGNvbnRleHQpOwog CXZvaWQJCSgqc3RhdHMpIChNZW1vcnlDb250ZXh0IGNvbnRleHQsCiAJCQkJCQkgIE1lbW9yeVN0 YXRzUHJpbnRGdW5jIHByaW50ZnVuYywgdm9pZCAqcGFzc3RocnUsCi0JCQkJCQkgIE1lbW9yeUNv bnRleHRDb3VudGVycyAqdG90YWxzKTsKKwkJCQkJCSAgTWVtb3J5Q29udGV4dENvdW50ZXJzICp0 b3RhbHMsCisJCQkJCQkgIGJvb2wgcHJpbnRfdG9fc3RkZXJyKTsKICNpZmRlZiBNRU1PUllfQ09O VEVYVF9DSEVDS0lORwogCXZvaWQJCSgqY2hlY2spIChNZW1vcnlDb250ZXh0IGNvbnRleHQpOwog I2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaCBiL3Ny Yy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCmluZGV4IDRhZTdkYzMzYjguLmVlYzE4NmJl MmUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCisrKyBiL3Ny Yy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCkBAIC0zNCw2ICszNCw3IEBAIHR5cGVkZWYg ZW51bQogCVBST0NTSUdfUEFSQUxMRUxfTUVTU0FHRSwJLyogbWVzc2FnZSBmcm9tIGNvb3BlcmF0 aW5nIHBhcmFsbGVsIGJhY2tlbmQgKi8KIAlQUk9DU0lHX1dBTFNORF9JTklUX1NUT1BQSU5HLAkv KiBhc2sgd2Fsc2VuZGVycyB0byBwcmVwYXJlIGZvciBzaHV0ZG93biAgKi8KIAlQUk9DU0lHX0JB UlJJRVIsCQkJLyogZ2xvYmFsIGJhcnJpZXIgaW50ZXJydXB0ICAqLworCVBST0NTSUdfTE9HX01F TU9SWV9DT05URVhULCAvKiBhc2sgYmFja2VuZCB0byBsb2cgdGhlIG1lbW9yeSBjb250ZXh0cyAq LwogCiAJLyogUmVjb3ZlcnkgY29uZmxpY3QgcmVhc29ucyAqLwogCVBST0NTSUdfUkVDT1ZFUllf Q09ORkxJQ1RfREFUQUJBU0UsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9tZW11dGls cy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvbWVtdXRpbHMuaAppbmRleCAzNmFhZTRlNTFjLi5mZjg3 MjI3NGQ0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9tZW11dGlscy5oCisrKyBiL3Ny Yy9pbmNsdWRlL3V0aWxzL21lbXV0aWxzLmgKQEAgLTg0LDcgKzg0LDggQEAgZXh0ZXJuIE1lbW9y eUNvbnRleHQgTWVtb3J5Q29udGV4dEdldFBhcmVudChNZW1vcnlDb250ZXh0IGNvbnRleHQpOwog ZXh0ZXJuIGJvb2wgTWVtb3J5Q29udGV4dElzRW1wdHkoTWVtb3J5Q29udGV4dCBjb250ZXh0KTsK IGV4dGVybiBTaXplIE1lbW9yeUNvbnRleHRNZW1BbGxvY2F0ZWQoTWVtb3J5Q29udGV4dCBjb250 ZXh0LCBib29sIHJlY3Vyc2UpOwogZXh0ZXJuIHZvaWQgTWVtb3J5Q29udGV4dFN0YXRzKE1lbW9y eUNvbnRleHQgY29udGV4dCk7Ci1leHRlcm4gdm9pZCBNZW1vcnlDb250ZXh0U3RhdHNEZXRhaWwo TWVtb3J5Q29udGV4dCBjb250ZXh0LCBpbnQgbWF4X2NoaWxkcmVuKTsKK2V4dGVybiB2b2lkIE1l bW9yeUNvbnRleHRTdGF0c0RldGFpbChNZW1vcnlDb250ZXh0IGNvbnRleHQsIGludCBtYXhfY2hp bGRyZW4sCisJCQkJCQkJCQkgYm9vbCBwcmludF90b19zdGRlcnIpOwogZXh0ZXJuIHZvaWQgTWVt b3J5Q29udGV4dEFsbG93SW5Dcml0aWNhbFNlY3Rpb24oTWVtb3J5Q29udGV4dCBjb250ZXh0LAog CQkJCQkJCQkJCQkJYm9vbCBhbGxvdyk7CiAKQEAgLTE0NCw2ICsxNDUsOCBAQCBleHRlcm4gdm9p ZCBNZW1vcnlDb250ZXh0Q3JlYXRlKE1lbW9yeUNvbnRleHQgbm9kZSwKIAkJCQkJCQkJTWVtb3J5 Q29udGV4dCBwYXJlbnQsCiAJCQkJCQkJCWNvbnN0IGNoYXIgKm5hbWUpOwogCitleHRlcm4gdm9p ZCBIYW5kbGVMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KHZvaWQpOworZXh0ZXJuIHZvaWQgUHJv Y2Vzc0xvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQodm9pZCk7CiAKIC8qCiAgKiBNZW1vcnktY29u dGV4dC10eXBlLXNwZWNpZmljIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9taXNjX2Z1bmN0aW9ucy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L21pc2NfZnVuY3Rpb25zLm91dAppbmRleCBkM2FjYjk4ZDA0Li5lODQ1MDQyZDM4IDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL21pc2NfZnVuY3Rpb25zLm91dAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL21pc2NfZnVuY3Rpb25zLm91dApAQCAtMTMzLDYgKzEz MywxOSBAQCBFUlJPUjogIGZ1bmN0aW9uIG51bV9udWxscygpIGRvZXMgbm90IGV4aXN0CiBMSU5F IDE6IFNFTEVDVCBudW1fbnVsbHMoKTsKICAgICAgICAgICAgICAgIF4KIEhJTlQ6ICBObyBmdW5j dGlvbiBtYXRjaGVzIHRoZSBnaXZlbiBuYW1lIGFuZCBhcmd1bWVudCB0eXBlcy4gWW91IG1pZ2h0 IG5lZWQgdG8gYWRkIGV4cGxpY2l0IHR5cGUgY2FzdHMuCistLQorLS0gcGdfbG9nX2JhY2tlbmRf bWVtb3J5X2NvbnRleHRzKCkKKy0tCistLSBNZW1vcnkgY29udGV4dHMgYXJlIGxvZ2dlZCBhbmQg dGhleSBhcmUgbm90IHJldHVybmVkIHRvIHRoZSBmdW5jdGlvbi4KKy0tIEZ1cnRoZXJtb3JlLCB0 aGVpciBjb250ZW50cyBjYW4gdmFyeSBkZXBlbmRpbmcgb24gdGhlIHRpbWluZy4gSG93ZXZlciwK Ky0tIHdlIGNhbiBhdCBsZWFzdCB2ZXJpZnkgdGhhdCB0aGUgY29kZSBkb2Vzbid0IGZhaWwuCist LQorU0VMRUNUICogRlJPTSBwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMocGdfYmFja2Vu ZF9waWQoKSk7CisgcGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKIC0tCiAtLSBUZXN0IHNvbWUgYnVp bHQtaW4gU1JGcwogLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL21pc2NfZnVu Y3Rpb25zLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL21pc2NfZnVuY3Rpb25zLnNxbAppbmRl eCAwOTRlOGY4Mjk2Li5hMzk4MzQ5YWZjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9taXNjX2Z1bmN0aW9ucy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbWlzY19mdW5j dGlvbnMuc3FsCkBAIC0zMCw2ICszMCwxNSBAQCBTRUxFQ1QgbnVtX251bGxzKFZBUklBRElDICd7 fSc6OmludFtdKTsKIFNFTEVDVCBudW1fbm9ubnVsbHMoKTsKIFNFTEVDVCBudW1fbnVsbHMoKTsK IAorLS0KKy0tIHBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cygpCistLQorLS0gTWVtb3J5 IGNvbnRleHRzIGFyZSBsb2dnZWQgYW5kIHRoZXkgYXJlIG5vdCByZXR1cm5lZCB0byB0aGUgZnVu Y3Rpb24uCistLSBGdXJ0aGVybW9yZSwgdGhlaXIgY29udGVudHMgY2FuIHZhcnkgZGVwZW5kaW5n IG9uIHRoZSB0aW1pbmcuIEhvd2V2ZXIsCistLSB3ZSBjYW4gYXQgbGVhc3QgdmVyaWZ5IHRoYXQg dGhlIGNvZGUgZG9lc24ndCBmYWlsLgorLS0KK1NFTEVDVCAqIEZST00gcGdfbG9nX2JhY2tlbmRf bWVtb3J5X2NvbnRleHRzKHBnX2JhY2tlbmRfcGlkKCkpOworCiAtLQogLS0gVGVzdCBzb21lIGJ1 aWx0LWluIFNSRnMKIC0tCg== --=_8526501781ae1bcaa994792628b912f9--