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 1ijhGC-0004bH-Va for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Dec 2019 10: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 1ijhGB-0000dZ-4O for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Dec 2019 10:17:51 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1ijhGA-0000dS-PR for pgsql-hackers@lists.postgresql.org; Tue, 24 Dec 2019 10:17:50 +0000 Received: from courriel.mines-paristech.fr ([77.158.173.149] helo=antispam-1.ensmp.fr) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ijhG7-0001yS-6u for pgsql-hackers@lists.postgresql.org; Tue, 24 Dec 2019 10:17:49 +0000 Received: from smtp-4.mines-paristech.fr (smtp-4.ensmp.fr [77.158.173.143]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by antispam-1.ensmp.fr (antispam.mines-paristech.fr) with ESMTPS id 05D2F5634C; Tue, 24 Dec 2019 11:17:33 +0100 (CET) Received: from pc54.home (agrenoble-653-1-506-79.w92-129.abo.wanadoo.fr [92.129.18.79]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp-4.mines-paristech.fr (Postfix) with ESMTPSA id 2D3FF2C0228; Tue, 24 Dec 2019 11:17:32 +0100 (CET) Date: Tue, 24 Dec 2019 11:17:31 +0100 (CET) From: Fabien COELHO X-X-Sender: fabien@pseudo Reply-To: Fabien COELHO To: Michael Paquier , PostgreSQL Developers Subject: pgbench - use pg logging capabilities Message-ID: User-Agent: Alpine 2.21 (DEB 202 2017-01-01) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="2056645051-626870154-1577182652=:3339" X-CLAMAV-SCAN: ok X-VRSPAM-SCORE: -100 X-VRSPAM-STATE: legit X-VRSPAM-CAUSE: gggruggvucftvghtrhhoucdtuddrgedufedrvddvvddgtdejucetufdoteggodetrfcurfhrohhfihhlvgemucggtfgfnhhsuhgsshgtrhhisggvnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjughrpeffhfhrvffukfgfgggtsehmtderredtreelnecuhfhrohhmpefhrggsihgvnhcuvefqgffnjffquceotghovghlhhhosegtrhhirdgvnhhsmhhprdhfrheqnecukfhppeelvddruddvledrudekrdejleenucfrrghrrghmpehmohguvgepshhmthhpohhuth X-VRSPAM-EXTCAUSE: mhhouggvpehsmhhtphhouhht List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --2056645051-626870154-1577182652=:3339 Content-Type: text/plain; format=flowed; charset=ISO-8859-15 Content-Transfer-Encoding: 8BIT Bonjour Michaël, hello devs, As suggested in "cce64a51", this patch make pgbench use postgres logging capabilities. I tried to use fatal/error/warning/info/debug where appropriate. Some printing to stderr remain for some pgbench specific output. The patch fixes a inconsistent test case name that I noticed in passing. -- Fabien. --2056645051-626870154-1577182652=:3339 Content-Type: text/x-diff; name=pgbench-logging-1.patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=pgbench-logging-1.patch ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9zcmMv YmluL3BnYmVuY2gvcGdiZW5jaC5jDQppbmRleCA2YWI3OWVlZjk5Li5hOTVm MjM4MTI3IDEwMDY0NA0KLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2gu Yw0KKysrIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYw0KQEAgLTcwLDYg KzcwLDE0IEBADQogI2RlZmluZSBNX1BJIDMuMTQxNTkyNjUzNTg5NzkzMjM4 NDYNCiAjZW5kaWYNCiANCisvKg0KKyAqIENvbnZlbmllbnQgc2hvcmN1dHMN CisgKi8NCisjZGVmaW5lIGZhdGFsIHBnX2xvZ19mYXRhbA0KKyNkZWZpbmUg ZXJyb3IgcGdfbG9nX2Vycm9yDQorI2RlZmluZSB3YXJuaW5nIHBnX2xvZ193 YXJuaW5nDQorI2RlZmluZSBpbmZvIHBnX2xvZ19pbmZvDQorI2RlZmluZSBk ZWJ1ZyBwZ19sb2dfZGVidWcNCiANCiAjZGVmaW5lIEVSUkNPREVfVU5ERUZJ TkVEX1RBQkxFICAiNDJQMDEiDQogDQpAQCAtNTQxLDcgKzU0OSw3IEBAIHN0 YXRpYyBQYXJzZWRTY3JpcHQgc3FsX3NjcmlwdFtNQVhfU0NSSVBUU107CS8q IFNRTCBzY3JpcHQgZmlsZXMgKi8NCiBzdGF0aWMgaW50CW51bV9zY3JpcHRz OwkJLyogbnVtYmVyIG9mIHNjcmlwdHMgaW4gc3FsX3NjcmlwdFtdICovDQog c3RhdGljIGludDY0IHRvdGFsX3dlaWdodCA9IDA7DQogDQotc3RhdGljIGlu dAlkZWJ1ZyA9IDA7CQkJLyogZGVidWcgZmxhZyAqLw0KK3N0YXRpYyBpbnQJ ZGVidWdfbGV2ZWwgPSAwOwkvKiBkZWJ1ZyBmbGFnICovDQogDQogLyogQnVp bHRpbiB0ZXN0IHNjcmlwdHMgKi8NCiB0eXBlZGVmIHN0cnVjdCBCdWlsdGlu U2NyaXB0DQpAQCAtNzg3LDE0ICs3OTUsMTIgQEAgc3RydG9pbnQ2NChjb25z dCBjaGFyICpzdHIsIGJvb2wgZXJyb3JPSywgaW50NjQgKnJlc3VsdCkNCiAN CiBvdXRfb2ZfcmFuZ2U6DQogCWlmICghZXJyb3JPSykNCi0JCWZwcmludGYo c3RkZXJyLA0KLQkJCQkidmFsdWUgXCIlc1wiIGlzIG91dCBvZiByYW5nZSBm b3IgdHlwZSBiaWdpbnRcbiIsIHN0cik7DQorCQllcnJvcigidmFsdWUgXCIl c1wiIGlzIG91dCBvZiByYW5nZSBmb3IgdHlwZSBiaWdpbnQiLCBzdHIpOw0K IAlyZXR1cm4gZmFsc2U7DQogDQogaW52YWxpZF9zeW50YXg6DQogCWlmICgh ZXJyb3JPSykNCi0JCWZwcmludGYoc3RkZXJyLA0KLQkJCQkiaW52YWxpZCBp bnB1dCBzeW50YXggZm9yIHR5cGUgYmlnaW50OiBcIiVzXCJcbiIsIHN0cik7 DQorCQllcnJvcigiaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgYmln aW50OiBcIiVzXCIiLCBzdHIpOw0KIAlyZXR1cm4gZmFsc2U7DQogfQ0KIA0K QEAgLTgxMCwxNiArODE2LDE0IEBAIHN0cnRvZG91YmxlKGNvbnN0IGNoYXIg KnN0ciwgYm9vbCBlcnJvck9LLCBkb3VibGUgKmR2KQ0KIAlpZiAodW5saWtl bHkoZXJybm8gIT0gMCkpDQogCXsNCiAJCWlmICghZXJyb3JPSykNCi0JCQlm cHJpbnRmKHN0ZGVyciwNCi0JCQkJCSJ2YWx1ZSBcIiVzXCIgaXMgb3V0IG9m IHJhbmdlIGZvciB0eXBlIGRvdWJsZVxuIiwgc3RyKTsNCisJCQllcnJvcigi dmFsdWUgXCIlc1wiIGlzIG91dCBvZiByYW5nZSBmb3IgdHlwZSBkb3VibGUi LCBzdHIpOw0KIAkJcmV0dXJuIGZhbHNlOw0KIAl9DQogDQogCWlmICh1bmxp a2VseShlbmQgPT0gc3RyIHx8ICplbmQgIT0gJ1wwJykpDQogCXsNCiAJCWlm ICghZXJyb3JPSykNCi0JCQlmcHJpbnRmKHN0ZGVyciwNCi0JCQkJCSJpbnZh bGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBkb3VibGU6IFwiJXNcIlxuIiwg c3RyKTsNCisJCQllcnJvcigiaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5 cGUgZG91YmxlOiBcIiVzXCIiLCBzdHIpOw0KIAkJcmV0dXJuIGZhbHNlOw0K IAl9DQogCXJldHVybiB0cnVlOw0KQEAgLTExNDksNyArMTE1Myw3IEBAIGV4 ZWN1dGVTdGF0ZW1lbnQoUEdjb25uICpjb24sIGNvbnN0IGNoYXIgKnNxbCkN CiAJcmVzID0gUFFleGVjKGNvbiwgc3FsKTsNCiAJaWYgKFBRcmVzdWx0U3Rh dHVzKHJlcykgIT0gUEdSRVNfQ09NTUFORF9PSykNCiAJew0KLQkJZnByaW50 ZihzdGRlcnIsICIlcyIsIFBRZXJyb3JNZXNzYWdlKGNvbikpOw0KKwkJZmF0 YWwoIiVzIiwgUFFlcnJvck1lc3NhZ2UoY29uKSk7DQogCQlleGl0KDEpOw0K IAl9DQogCVBRY2xlYXIocmVzKTsNCkBAIC0xMTY0LDggKzExNjgsOCBAQCB0 cnlFeGVjdXRlU3RhdGVtZW50KFBHY29ubiAqY29uLCBjb25zdCBjaGFyICpz cWwpDQogCXJlcyA9IFBRZXhlYyhjb24sIHNxbCk7DQogCWlmIChQUXJlc3Vs dFN0YXR1cyhyZXMpICE9IFBHUkVTX0NPTU1BTkRfT0spDQogCXsNCi0JCWZw cmludGYoc3RkZXJyLCAiJXMiLCBQUWVycm9yTWVzc2FnZShjb24pKTsNCi0J CWZwcmludGYoc3RkZXJyLCAiKGlnbm9yaW5nIHRoaXMgZXJyb3IgYW5kIGNv bnRpbnVpbmcgYW55d2F5KVxuIik7DQorCQllcnJvcigiJXMiLCBQUWVycm9y TWVzc2FnZShjb24pKTsNCisJCWluZm8oIihpZ25vcmluZyB0aGlzIGVycm9y IGFuZCBjb250aW51aW5nIGFueXdheSkiKTsNCiAJfQ0KIAlQUWNsZWFyKHJl cyk7DQogfQ0KQEAgLTEyMTEsOCArMTIxNSw3IEBAIGRvQ29ubmVjdCh2b2lk KQ0KIA0KIAkJaWYgKCFjb25uKQ0KIAkJew0KLQkJCWZwcmludGYoc3RkZXJy LCAiY29ubmVjdGlvbiB0byBkYXRhYmFzZSBcIiVzXCIgZmFpbGVkXG4iLA0K LQkJCQkJZGJOYW1lKTsNCisJCQllcnJvcigiY29ubmVjdGlvbiB0byBkYXRh YmFzZSBcIiVzXCIgZmFpbGVkIiwgZGJOYW1lKTsNCiAJCQlyZXR1cm4gTlVM TDsNCiAJCX0NCiANCkBAIC0xMjMwLDggKzEyMzMsOCBAQCBkb0Nvbm5lY3Qo dm9pZCkNCiAJLyogY2hlY2sgdG8gc2VlIHRoYXQgdGhlIGJhY2tlbmQgY29u bmVjdGlvbiB3YXMgc3VjY2Vzc2Z1bGx5IG1hZGUgKi8NCiAJaWYgKFBRc3Rh dHVzKGNvbm4pID09IENPTk5FQ1RJT05fQkFEKQ0KIAl7DQotCQlmcHJpbnRm KHN0ZGVyciwgImNvbm5lY3Rpb24gdG8gZGF0YWJhc2UgXCIlc1wiIGZhaWxl ZDpcbiVzIiwNCi0JCQkJZGJOYW1lLCBQUWVycm9yTWVzc2FnZShjb25uKSk7 DQorCQllcnJvcigiY29ubmVjdGlvbiB0byBkYXRhYmFzZSBcIiVzXCIgZmFp bGVkIiwgZGJOYW1lKTsNCisJCWVycm9yKCIlcyIsIFBRZXJyb3JNZXNzYWdl KGNvbm4pKTsNCiAJCVBRZmluaXNoKGNvbm4pOw0KIAkJcmV0dXJuIE5VTEw7 DQogCX0NCkBAIC0xMzYwLDkgKzEzNjMsOCBAQCBtYWtlVmFyaWFibGVWYWx1 ZShWYXJpYWJsZSAqdmFyKQ0KIA0KIAkJaWYgKCFzdHJ0b2RvdWJsZSh2YXIt PnN2YWx1ZSwgdHJ1ZSwgJmR2KSkNCiAJCXsNCi0JCQlmcHJpbnRmKHN0ZGVy ciwNCi0JCQkJCSJtYWxmb3JtZWQgdmFyaWFibGUgXCIlc1wiIHZhbHVlOiBc IiVzXCJcbiIsDQotCQkJCQl2YXItPm5hbWUsIHZhci0+c3ZhbHVlKTsNCisJ CQllcnJvcigibWFsZm9ybWVkIHZhcmlhYmxlIFwiJXNcIiB2YWx1ZTogXCIl c1wiIiwNCisJCQkJICB2YXItPm5hbWUsIHZhci0+c3ZhbHVlKTsNCiAJCQly ZXR1cm4gZmFsc2U7DQogCQl9DQogCQlzZXREb3VibGVWYWx1ZSgmdmFyLT52 YWx1ZSwgZHYpOw0KQEAgLTE0MjUsOCArMTQyNyw3IEBAIGxvb2t1cENyZWF0 ZVZhcmlhYmxlKENTdGF0ZSAqc3QsIGNvbnN0IGNoYXIgKmNvbnRleHQsIGNo YXIgKm5hbWUpDQogCQkgKi8NCiAJCWlmICghdmFsaWRfdmFyaWFibGVfbmFt ZShuYW1lKSkNCiAJCXsNCi0JCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiBpbnZh bGlkIHZhcmlhYmxlIG5hbWU6IFwiJXNcIlxuIiwNCi0JCQkJCWNvbnRleHQs IG5hbWUpOw0KKwkJCWVycm9yKCIlczogaW52YWxpZCB2YXJpYWJsZSBuYW1l OiBcIiVzXCIiLCBjb250ZXh0LCBuYW1lKTsNCiAJCQlyZXR1cm4gTlVMTDsN CiAJCX0NCiANCkBAIC0xNjM1LDcgKzE2MzYsNyBAQCBjb2VyY2VUb0Jvb2wo UGdCZW5jaFZhbHVlICpwdmFsLCBib29sICpidmFsKQ0KIAl9DQogCWVsc2UJ CQkJCQkvKiBOVUxMLCBJTlQgb3IgRE9VQkxFICovDQogCXsNCi0JCWZwcmlu dGYoc3RkZXJyLCAiY2Fubm90IGNvZXJjZSAlcyB0byBib29sZWFuXG4iLCB2 YWx1ZVR5cGVOYW1lKHB2YWwpKTsNCisJCWVycm9yKCJjYW5ub3QgY29lcmNl ICVzIHRvIGJvb2xlYW4iLCB2YWx1ZVR5cGVOYW1lKHB2YWwpKTsNCiAJCSpi dmFsID0gZmFsc2U7CQkJLyogc3VwcHJlc3MgdW5pbml0aWFsaXplZC12YXJp YWJsZSB3YXJuaW5ncyAqLw0KIAkJcmV0dXJuIGZhbHNlOw0KIAl9DQpAQCAt MTY4MCw3ICsxNjgxLDcgQEAgY29lcmNlVG9JbnQoUGdCZW5jaFZhbHVlICpw dmFsLCBpbnQ2NCAqaXZhbCkNCiANCiAJCWlmIChpc25hbihkdmFsKSB8fCAh RkxPQVQ4X0ZJVFNfSU5fSU5UNjQoZHZhbCkpDQogCQl7DQotCQkJZnByaW50 ZihzdGRlcnIsICJkb3VibGUgdG8gaW50IG92ZXJmbG93IGZvciAlZlxuIiwg ZHZhbCk7DQorCQkJZXJyb3IoImRvdWJsZSB0byBpbnQgb3ZlcmZsb3cgZm9y ICVmIiwgZHZhbCk7DQogCQkJcmV0dXJuIGZhbHNlOw0KIAkJfQ0KIAkJKml2 YWwgPSAoaW50NjQpIGR2YWw7DQpAQCAtMTY4OCw3ICsxNjg5LDcgQEAgY29l cmNlVG9JbnQoUGdCZW5jaFZhbHVlICpwdmFsLCBpbnQ2NCAqaXZhbCkNCiAJ fQ0KIAllbHNlCQkJCQkJLyogQk9PTEVBTiBvciBOVUxMICovDQogCXsNCi0J CWZwcmludGYoc3RkZXJyLCAiY2Fubm90IGNvZXJjZSAlcyB0byBpbnRcbiIs IHZhbHVlVHlwZU5hbWUocHZhbCkpOw0KKwkJZXJyb3IoImNhbm5vdCBjb2Vy Y2UgJXMgdG8gaW50IiwgdmFsdWVUeXBlTmFtZShwdmFsKSk7DQogCQlyZXR1 cm4gZmFsc2U7DQogCX0NCiB9DQpAQCAtMTcwOSw3ICsxNzEwLDcgQEAgY29l cmNlVG9Eb3VibGUoUGdCZW5jaFZhbHVlICpwdmFsLCBkb3VibGUgKmR2YWwp DQogCX0NCiAJZWxzZQkJCQkJCS8qIEJPT0xFQU4gb3IgTlVMTCAqLw0KIAl7 DQotCQlmcHJpbnRmKHN0ZGVyciwgImNhbm5vdCBjb2VyY2UgJXMgdG8gZG91 YmxlXG4iLCB2YWx1ZVR5cGVOYW1lKHB2YWwpKTsNCisJCWVycm9yKCJjYW5u b3QgY29lcmNlICVzIHRvIGRvdWJsZSIsIHZhbHVlVHlwZU5hbWUocHZhbCkp Ow0KIAkJcmV0dXJuIGZhbHNlOw0KIAl9DQogfQ0KQEAgLTE4OTAsOCArMTg5 MSw3IEBAIGV2YWxTdGFuZGFyZEZ1bmMoQ1N0YXRlICpzdCwNCiANCiAJaWYg KGwgIT0gTlVMTCkNCiAJew0KLQkJZnByaW50ZihzdGRlcnIsDQotCQkJCSJ0 b28gbWFueSBmdW5jdGlvbiBhcmd1bWVudHMsIG1heGltdW0gaXMgJWRcbiIs IE1BWF9GQVJHUyk7DQorCQllcnJvcigidG9vIG1hbnkgZnVuY3Rpb24gYXJn dW1lbnRzLCBtYXhpbXVtIGlzICVkIiwgTUFYX0ZBUkdTKTsNCiAJCXJldHVy biBmYWxzZTsNCiAJfQ0KIA0KQEAgLTE5ODYsNyArMTk4Niw3IEBAIGV2YWxT dGFuZGFyZEZ1bmMoQ1N0YXRlICpzdCwNCiAJCQkJCQljYXNlIFBHQkVOQ0hf QUREOg0KIAkJCQkJCQlpZiAocGdfYWRkX3M2NF9vdmVyZmxvdyhsaSwgcmks ICZyZXMpKQ0KIAkJCQkJCQl7DQotCQkJCQkJCQlmcHJpbnRmKHN0ZGVyciwg ImJpZ2ludCBhZGQgb3V0IG9mIHJhbmdlXG4iKTsNCisJCQkJCQkJCWVycm9y KCJiaWdpbnQgYWRkIG91dCBvZiByYW5nZSIpOw0KIAkJCQkJCQkJcmV0dXJu IGZhbHNlOw0KIAkJCQkJCQl9DQogCQkJCQkJCXNldEludFZhbHVlKHJldHZh bCwgcmVzKTsNCkBAIC0xOTk1LDcgKzE5OTUsNyBAQCBldmFsU3RhbmRhcmRG dW5jKENTdGF0ZSAqc3QsDQogCQkJCQkJY2FzZSBQR0JFTkNIX1NVQjoNCiAJ CQkJCQkJaWYgKHBnX3N1Yl9zNjRfb3ZlcmZsb3cobGksIHJpLCAmcmVzKSkN CiAJCQkJCQkJew0KLQkJCQkJCQkJZnByaW50ZihzdGRlcnIsICJiaWdpbnQg c3ViIG91dCBvZiByYW5nZVxuIik7DQorCQkJCQkJCQllcnJvcigiYmlnaW50 IHN1YiBvdXQgb2YgcmFuZ2UiKTsNCiAJCQkJCQkJCXJldHVybiBmYWxzZTsN CiAJCQkJCQkJfQ0KIAkJCQkJCQlzZXRJbnRWYWx1ZShyZXR2YWwsIHJlcyk7 DQpAQCAtMjAwNCw3ICsyMDA0LDcgQEAgZXZhbFN0YW5kYXJkRnVuYyhDU3Rh dGUgKnN0LA0KIAkJCQkJCWNhc2UgUEdCRU5DSF9NVUw6DQogCQkJCQkJCWlm IChwZ19tdWxfczY0X292ZXJmbG93KGxpLCByaSwgJnJlcykpDQogCQkJCQkJ CXsNCi0JCQkJCQkJCWZwcmludGYoc3RkZXJyLCAiYmlnaW50IG11bCBvdXQg b2YgcmFuZ2VcbiIpOw0KKwkJCQkJCQkJZXJyb3IoImJpZ2ludCBtdWwgb3V0 IG9mIHJhbmdlIik7DQogCQkJCQkJCQlyZXR1cm4gZmFsc2U7DQogCQkJCQkJ CX0NCiAJCQkJCQkJc2V0SW50VmFsdWUocmV0dmFsLCByZXMpOw0KQEAgLTIw MzAsNyArMjAzMCw3IEBAIGV2YWxTdGFuZGFyZEZ1bmMoQ1N0YXRlICpzdCwN CiAJCQkJCQljYXNlIFBHQkVOQ0hfTU9EOg0KIAkJCQkJCQlpZiAocmkgPT0g MCkNCiAJCQkJCQkJew0KLQkJCQkJCQkJZnByaW50ZihzdGRlcnIsICJkaXZp c2lvbiBieSB6ZXJvXG4iKTsNCisJCQkJCQkJCWVycm9yKCJkaXZpc2lvbiBi eSB6ZXJvIik7DQogCQkJCQkJCQlyZXR1cm4gZmFsc2U7DQogCQkJCQkJCX0N CiAJCQkJCQkJLyogc3BlY2lhbCBoYW5kbGluZyBvZiAtMSBkaXZpc29yICov DQpAQCAtMjA0MSw3ICsyMDQxLDcgQEAgZXZhbFN0YW5kYXJkRnVuYyhDU3Rh dGUgKnN0LA0KIAkJCQkJCQkJCS8qIG92ZXJmbG93IGNoZWNrIChuZWVkZWQg Zm9yIElOVDY0X01JTikgKi8NCiAJCQkJCQkJCQlpZiAobGkgPT0gUEdfSU5U NjRfTUlOKQ0KIAkJCQkJCQkJCXsNCi0JCQkJCQkJCQkJZnByaW50ZihzdGRl cnIsICJiaWdpbnQgZGl2IG91dCBvZiByYW5nZVxuIik7DQorCQkJCQkJCQkJ CWVycm9yKCJiaWdpbnQgZGl2IG91dCBvZiByYW5nZSIpOw0KIAkJCQkJCQkJ CQlyZXR1cm4gZmFsc2U7DQogCQkJCQkJCQkJfQ0KIAkJCQkJCQkJCWVsc2UN CkBAIC0yMjgxLDEzICsyMjgxLDEzIEBAIGV2YWxTdGFuZGFyZEZ1bmMoQ1N0 YXRlICpzdCwNCiAJCQkJLyogY2hlY2sgcmFuZG9tIHJhbmdlICovDQogCQkJ CWlmIChpbWluID4gaW1heCkNCiAJCQkJew0KLQkJCQkJZnByaW50ZihzdGRl cnIsICJlbXB0eSByYW5nZSBnaXZlbiB0byByYW5kb21cbiIpOw0KKwkJCQkJ ZXJyb3IoImVtcHR5IHJhbmdlIGdpdmVuIHRvIHJhbmRvbSIpOw0KIAkJCQkJ cmV0dXJuIGZhbHNlOw0KIAkJCQl9DQogCQkJCWVsc2UgaWYgKGltYXggLSBp bWluIDwgMCB8fCAoaW1heCAtIGltaW4pICsgMSA8IDApDQogCQkJCXsNCiAJ CQkJCS8qIHByZXZlbnQgaW50IG92ZXJmbG93cyBpbiByYW5kb20gZnVuY3Rp b25zICovDQotCQkJCQlmcHJpbnRmKHN0ZGVyciwgInJhbmRvbSByYW5nZSBp cyB0b28gbGFyZ2VcbiIpOw0KKwkJCQkJZXJyb3IoInJhbmRvbSByYW5nZSBp cyB0b28gbGFyZ2UiKTsNCiAJCQkJCXJldHVybiBmYWxzZTsNCiAJCQkJfQ0K IA0KQEAgLTIzMDksOSArMjMwOSw4IEBAIGV2YWxTdGFuZGFyZEZ1bmMoQ1N0 YXRlICpzdCwNCiAJCQkJCXsNCiAJCQkJCQlpZiAocGFyYW0gPCBNSU5fR0FV U1NJQU5fUEFSQU0pDQogCQkJCQkJew0KLQkJCQkJCQlmcHJpbnRmKHN0ZGVy ciwNCi0JCQkJCQkJCQkiZ2F1c3NpYW4gcGFyYW1ldGVyIG11c3QgYmUgYXQg bGVhc3QgJWYgIg0KLQkJCQkJCQkJCSIobm90ICVmKVxuIiwgTUlOX0dBVVNT SUFOX1BBUkFNLCBwYXJhbSk7DQorCQkJCQkJCWVycm9yKCJnYXVzc2lhbiBw YXJhbWV0ZXIgbXVzdCBiZSBhdCBsZWFzdCAiDQorCQkJCQkJCQkgICIlZiAo bm90ICVmKSIsIE1JTl9HQVVTU0lBTl9QQVJBTSwgcGFyYW0pOw0KIAkJCQkJ CQlyZXR1cm4gZmFsc2U7DQogCQkJCQkJfQ0KIA0KQEAgLTIzMjMsMTAgKzIz MjIsOSBAQCBldmFsU3RhbmRhcmRGdW5jKENTdGF0ZSAqc3QsDQogCQkJCQl7 DQogCQkJCQkJaWYgKHBhcmFtIDwgTUlOX1pJUEZJQU5fUEFSQU0gfHwgcGFy YW0gPiBNQVhfWklQRklBTl9QQVJBTSkNCiAJCQkJCQl7DQotCQkJCQkJCWZw cmludGYoc3RkZXJyLA0KLQkJCQkJCQkJCSJ6aXBmaWFuIHBhcmFtZXRlciBt dXN0IGJlIGluIHJhbmdlIFslLjNmLCAlLjBmXSINCi0JCQkJCQkJCQkiIChu b3QgJWYpXG4iLA0KLQkJCQkJCQkJCU1JTl9aSVBGSUFOX1BBUkFNLCBNQVhf WklQRklBTl9QQVJBTSwgcGFyYW0pOw0KKwkJCQkJCQllcnJvcigiemlwZmlh biBwYXJhbWV0ZXIgbXVzdCBiZSBpbiByYW5nZSAiDQorCQkJCQkJCQkgICJb JS4zZiwgJS4wZl0gKG5vdCAlZikiLA0KKwkJCQkJCQkJICBNSU5fWklQRklB Tl9QQVJBTSwgTUFYX1pJUEZJQU5fUEFSQU0sIHBhcmFtKTsNCiAJCQkJCQkJ cmV0dXJuIGZhbHNlOw0KIAkJCQkJCX0NCiANCkBAIC0yMzM3LDkgKzIzMzUs OCBAQCBldmFsU3RhbmRhcmRGdW5jKENTdGF0ZSAqc3QsDQogCQkJCQl7DQog CQkJCQkJaWYgKHBhcmFtIDw9IDAuMCkNCiAJCQkJCQl7DQotCQkJCQkJCWZw cmludGYoc3RkZXJyLA0KLQkJCQkJCQkJCSJleHBvbmVudGlhbCBwYXJhbWV0 ZXIgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVybyINCi0JCQkJCQkJCQkiIChu b3QgJWYpXG4iLCBwYXJhbSk7DQorCQkJCQkJCWVycm9yKCJleHBvbmVudGlh bCBwYXJhbWV0ZXIgbXVzdCBiZSAiDQorCQkJCQkJCQkgICJncmVhdGVyIHRo YW4gemVybyAobm90ICVmKSIsIHBhcmFtKTsNCiAJCQkJCQkJcmV0dXJuIGZh bHNlOw0KIAkJCQkJCX0NCiANCkBAIC0yNDUwLDggKzI0NDcsNyBAQCBldmFs dWF0ZUV4cHIoQ1N0YXRlICpzdCwgUGdCZW5jaEV4cHIgKmV4cHIsIFBnQmVu Y2hWYWx1ZSAqcmV0dmFsKQ0KIA0KIAkJCQlpZiAoKHZhciA9IGxvb2t1cFZh cmlhYmxlKHN0LCBleHByLT51LnZhcmlhYmxlLnZhcm5hbWUpKSA9PSBOVUxM KQ0KIAkJCQl7DQotCQkJCQlmcHJpbnRmKHN0ZGVyciwgInVuZGVmaW5lZCB2 YXJpYWJsZSBcIiVzXCJcbiIsDQotCQkJCQkJCWV4cHItPnUudmFyaWFibGUu dmFybmFtZSk7DQorCQkJCQllcnJvcigidW5kZWZpbmVkIHZhcmlhYmxlIFwi JXNcIiIsIGV4cHItPnUudmFyaWFibGUudmFybmFtZSk7DQogCQkJCQlyZXR1 cm4gZmFsc2U7DQogCQkJCX0NCiANCkBAIC0yNDcwLDggKzI0NjYsNyBAQCBl dmFsdWF0ZUV4cHIoQ1N0YXRlICpzdCwgUGdCZW5jaEV4cHIgKmV4cHIsIFBn QmVuY2hWYWx1ZSAqcmV0dmFsKQ0KIA0KIAkJZGVmYXVsdDoNCiAJCQkvKiBp bnRlcm5hbCBlcnJvciB3aGljaCBzaG91bGQgbmV2ZXIgb2NjdXIgKi8NCi0J CQlmcHJpbnRmKHN0ZGVyciwgInVuZXhwZWN0ZWQgZW5vZGUgdHlwZSBpbiBl dmFsdWF0aW9uOiAlZFxuIiwNCi0JCQkJCWV4cHItPmV0eXBlKTsNCisJCQlm YXRhbCgidW5leHBlY3RlZCBlbm9kZSB0eXBlIGluIGV2YWx1YXRpb246ICVk IiwgZXhwci0+ZXR5cGUpOw0KIAkJCWV4aXQoMSk7DQogCX0NCiB9DQpAQCAt MjU0NywxNSArMjU0MiwxNCBAQCBydW5TaGVsbENvbW1hbmQoQ1N0YXRlICpz dCwgY2hhciAqdmFyaWFibGUsIGNoYXIgKiphcmd2LCBpbnQgYXJnYykNCiAJ CX0NCiAJCWVsc2UgaWYgKChhcmcgPSBnZXRWYXJpYWJsZShzdCwgYXJndltp XSArIDEpKSA9PSBOVUxMKQ0KIAkJew0KLQkJCWZwcmludGYoc3RkZXJyLCAi JXM6IHVuZGVmaW5lZCB2YXJpYWJsZSBcIiVzXCJcbiIsDQotCQkJCQlhcmd2 WzBdLCBhcmd2W2ldKTsNCisJCQllcnJvcigiJXM6IHVuZGVmaW5lZCB2YXJp YWJsZSBcIiVzXCIiLCBhcmd2WzBdLCBhcmd2W2ldKTsNCiAJCQlyZXR1cm4g ZmFsc2U7DQogCQl9DQogDQogCQlhcmdsZW4gPSBzdHJsZW4oYXJnKTsNCiAJ CWlmIChsZW4gKyBhcmdsZW4gKyAoaSA+IDAgPyAxIDogMCkgPj0gU0hFTExf Q09NTUFORF9TSVpFIC0gMSkNCiAJCXsNCi0JCQlmcHJpbnRmKHN0ZGVyciwg IiVzOiBzaGVsbCBjb21tYW5kIGlzIHRvbyBsb25nXG4iLCBhcmd2WzBdKTsN CisJCQllcnJvcigiJXM6IHNoZWxsIGNvbW1hbmQgaXMgdG9vIGxvbmciLCBh cmd2WzBdKTsNCiAJCQlyZXR1cm4gZmFsc2U7DQogCQl9DQogDQpAQCAtMjU3 Myw3ICsyNTY3LDcgQEAgcnVuU2hlbGxDb21tYW5kKENTdGF0ZSAqc3QsIGNo YXIgKnZhcmlhYmxlLCBjaGFyICoqYXJndiwgaW50IGFyZ2MpDQogCQlpZiAo c3lzdGVtKGNvbW1hbmQpKQ0KIAkJew0KIAkJCWlmICghdGltZXJfZXhjZWVk ZWQpDQotCQkJCWZwcmludGYoc3RkZXJyLCAiJXM6IGNvdWxkIG5vdCBsYXVu Y2ggc2hlbGwgY29tbWFuZFxuIiwgYXJndlswXSk7DQorCQkJCWVycm9yKCJj b3VsZCBub3QgbGF1bmNoIHNoZWxsIGNvbW1hbmQiKTsNCiAJCQlyZXR1cm4g ZmFsc2U7DQogCQl9DQogCQlyZXR1cm4gdHJ1ZTsNCkBAIC0yNTgyLDE5ICsy NTc2LDE5IEBAIHJ1blNoZWxsQ29tbWFuZChDU3RhdGUgKnN0LCBjaGFyICp2 YXJpYWJsZSwgY2hhciAqKmFyZ3YsIGludCBhcmdjKQ0KIAkvKiBFeGVjdXRl IHRoZSBjb21tYW5kIHdpdGggcGlwZSBhbmQgcmVhZCB0aGUgc3RhbmRhcmQg b3V0cHV0LiAqLw0KIAlpZiAoKGZwID0gcG9wZW4oY29tbWFuZCwgInIiKSkg PT0gTlVMTCkNCiAJew0KLQkJZnByaW50ZihzdGRlcnIsICIlczogY291bGQg bm90IGxhdW5jaCBzaGVsbCBjb21tYW5kXG4iLCBhcmd2WzBdKTsNCisJCWVy cm9yKCJjb3VsZCBub3QgbGF1bmNoIHNoZWxsIGNvbW1hbmQiKTsNCiAJCXJl dHVybiBmYWxzZTsNCiAJfQ0KIAlpZiAoZmdldHMocmVzLCBzaXplb2YocmVz KSwgZnApID09IE5VTEwpDQogCXsNCiAJCWlmICghdGltZXJfZXhjZWVkZWQp DQotCQkJZnByaW50ZihzdGRlcnIsICIlczogY291bGQgbm90IHJlYWQgcmVz dWx0IG9mIHNoZWxsIGNvbW1hbmRcbiIsIGFyZ3ZbMF0pOw0KKwkJCWVycm9y KCJjb3VsZCBub3QgcmVhZCByZXN1bHQgb2Ygc2hlbGwgY29tbWFuZCIpOw0K IAkJKHZvaWQpIHBjbG9zZShmcCk7DQogCQlyZXR1cm4gZmFsc2U7DQogCX0N CiAJaWYgKHBjbG9zZShmcCkgPCAwKQ0KIAl7DQotCQlmcHJpbnRmKHN0ZGVy ciwgIiVzOiBjb3VsZCBub3QgY2xvc2Ugc2hlbGwgY29tbWFuZFxuIiwgYXJn dlswXSk7DQorCQllcnJvcigiY291bGQgbm90IGNsb3NlIHNoZWxsIGNvbW1h bmQiKTsNCiAJCXJldHVybiBmYWxzZTsNCiAJfQ0KIA0KQEAgLTI2MDQsOCAr MjU5OCw3IEBAIHJ1blNoZWxsQ29tbWFuZChDU3RhdGUgKnN0LCBjaGFyICp2 YXJpYWJsZSwgY2hhciAqKmFyZ3YsIGludCBhcmdjKQ0KIAkJZW5kcHRyKys7 DQogCWlmICgqcmVzID09ICdcMCcgfHwgKmVuZHB0ciAhPSAnXDAnKQ0KIAl7 DQotCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiBzaGVsbCBjb21tYW5kIG11c3Qg cmV0dXJuIGFuIGludGVnZXIgKG5vdCBcIiVzXCIpXG4iLA0KLQkJCQlhcmd2 WzBdLCByZXMpOw0KKwkJZXJyb3IoInNoZWxsIGNvbW1hbmQgbXVzdCByZXR1 cm4gYW4gaW50ZWdlciAobm90IFwiJXNcIikiLCByZXMpOw0KIAkJcmV0dXJu IGZhbHNlOw0KIAl9DQogCWlmICghcHV0VmFyaWFibGVJbnQoc3QsICJzZXRz aGVsbCIsIHZhcmlhYmxlLCByZXR2YWwpKQ0KQEAgLTI2MjcsOSArMjYyMCw4 IEBAIHByZXBhcmVkU3RhdGVtZW50TmFtZShjaGFyICpidWZmZXIsIGludCBm aWxlLCBpbnQgc3RhdGUpDQogc3RhdGljIHZvaWQNCiBjb21tYW5kRmFpbGVk KENTdGF0ZSAqc3QsIGNvbnN0IGNoYXIgKmNtZCwgY29uc3QgY2hhciAqbWVz c2FnZSkNCiB7DQotCWZwcmludGYoc3RkZXJyLA0KLQkJCSJjbGllbnQgJWQg YWJvcnRlZCBpbiBjb21tYW5kICVkICglcykgb2Ygc2NyaXB0ICVkOyAlc1xu IiwNCi0JCQlzdC0+aWQsIHN0LT5jb21tYW5kLCBjbWQsIHN0LT51c2VfZmls ZSwgbWVzc2FnZSk7DQorCWVycm9yKCJjbGllbnQgJWQgYWJvcnRlZCBpbiBj b21tYW5kICVkICglcykgb2Ygc2NyaXB0ICVkOyAlcyIsDQorCQkgIHN0LT5p ZCwgc3QtPmNvbW1hbmQsIGNtZCwgc3QtPnVzZV9maWxlLCBtZXNzYWdlKTsN CiB9DQogDQogLyogcmV0dXJuIGEgc2NyaXB0IG51bWJlciB3aXRoIGEgd2Vp Z2h0ZWQgY2hvaWNlLiAqLw0KQEAgLTI2NjQsOCArMjY1Niw3IEBAIHNlbmRD b21tYW5kKENTdGF0ZSAqc3QsIENvbW1hbmQgKmNvbW1hbmQpDQogCQlzcWwg PSBwZ19zdHJkdXAoY29tbWFuZC0+YXJndlswXSk7DQogCQlzcWwgPSBhc3Np Z25WYXJpYWJsZXMoc3QsIHNxbCk7DQogDQotCQlpZiAoZGVidWcpDQotCQkJ ZnByaW50ZihzdGRlcnIsICJjbGllbnQgJWQgc2VuZGluZyAlc1xuIiwgc3Qt PmlkLCBzcWwpOw0KKwkJZGVidWcoImNsaWVudCAlZCBzZW5kaW5nICVzIiwg c3QtPmlkLCBzcWwpOw0KIAkJciA9IFBRc2VuZFF1ZXJ5KHN0LT5jb24sIHNx bCk7DQogCQlmcmVlKHNxbCk7DQogCX0NCkBAIC0yNjc2LDggKzI2NjcsNyBA QCBzZW5kQ29tbWFuZChDU3RhdGUgKnN0LCBDb21tYW5kICpjb21tYW5kKQ0K IA0KIAkJZ2V0UXVlcnlQYXJhbXMoc3QsIGNvbW1hbmQsIHBhcmFtcyk7DQog DQotCQlpZiAoZGVidWcpDQotCQkJZnByaW50ZihzdGRlcnIsICJjbGllbnQg JWQgc2VuZGluZyAlc1xuIiwgc3QtPmlkLCBzcWwpOw0KKwkJZGVidWcoImNs aWVudCAlZCBzZW5kaW5nICVzIiwgc3QtPmlkLCBzcWwpOw0KIAkJciA9IFBR c2VuZFF1ZXJ5UGFyYW1zKHN0LT5jb24sIHNxbCwgY29tbWFuZC0+YXJnYyAt IDEsDQogCQkJCQkJCSAgTlVMTCwgcGFyYW1zLCBOVUxMLCBOVUxMLCAwKTsN CiAJfQ0KQEAgLTI3MDIsNyArMjY5Miw3IEBAIHNlbmRDb21tYW5kKENTdGF0 ZSAqc3QsIENvbW1hbmQgKmNvbW1hbmQpDQogCQkJCXJlcyA9IFBRcHJlcGFy ZShzdC0+Y29uLCBuYW1lLA0KIAkJCQkJCQkJY29tbWFuZHNbal0tPmFyZ3Zb MF0sIGNvbW1hbmRzW2pdLT5hcmdjIC0gMSwgTlVMTCk7DQogCQkJCWlmIChQ UXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX0NPTU1BTkRfT0spDQotCQkJ CQlmcHJpbnRmKHN0ZGVyciwgIiVzIiwgUFFlcnJvck1lc3NhZ2Uoc3QtPmNv bikpOw0KKwkJCQkJZXJyb3IoIiVzIiwgUFFlcnJvck1lc3NhZ2Uoc3QtPmNv bikpOw0KIAkJCQlQUWNsZWFyKHJlcyk7DQogCQkJfQ0KIAkJCXN0LT5wcmVw YXJlZFtzdC0+dXNlX2ZpbGVdID0gdHJ1ZTsNCkBAIC0yNzExLDggKzI3MDEs NyBAQCBzZW5kQ29tbWFuZChDU3RhdGUgKnN0LCBDb21tYW5kICpjb21tYW5k KQ0KIAkJZ2V0UXVlcnlQYXJhbXMoc3QsIGNvbW1hbmQsIHBhcmFtcyk7DQog CQlwcmVwYXJlZFN0YXRlbWVudE5hbWUobmFtZSwgc3QtPnVzZV9maWxlLCBz dC0+Y29tbWFuZCk7DQogDQotCQlpZiAoZGVidWcpDQotCQkJZnByaW50Zihz dGRlcnIsICJjbGllbnQgJWQgc2VuZGluZyAlc1xuIiwgc3QtPmlkLCBuYW1l KTsNCisJCWRlYnVnKCJjbGllbnQgJWQgc2VuZGluZyAlcyIsIHN0LT5pZCwg bmFtZSk7DQogCQlyID0gUFFzZW5kUXVlcnlQcmVwYXJlZChzdC0+Y29uLCBu YW1lLCBjb21tYW5kLT5hcmdjIC0gMSwNCiAJCQkJCQkJCXBhcmFtcywgTlVM TCwgTlVMTCwgMCk7DQogCX0NCkBAIC0yNzIxLDkgKzI3MTAsNyBAQCBzZW5k Q29tbWFuZChDU3RhdGUgKnN0LCBDb21tYW5kICpjb21tYW5kKQ0KIA0KIAlp ZiAociA9PSAwKQ0KIAl7DQotCQlpZiAoZGVidWcpDQotCQkJZnByaW50Zihz dGRlcnIsICJjbGllbnQgJWQgY291bGQgbm90IHNlbmQgJXNcbiIsDQotCQkJ CQlzdC0+aWQsIGNvbW1hbmQtPmFyZ3ZbMF0pOw0KKwkJZGVidWcoImNsaWVu dCAlZCBjb3VsZCBub3Qgc2VuZCAlcyIsIHN0LT5pZCwgY29tbWFuZC0+YXJn dlswXSk7DQogCQlzdC0+ZWNudCsrOw0KIAkJcmV0dXJuIGZhbHNlOw0KIAl9 DQpAQCAtMjc2Miw5ICsyNzQ5LDggQEAgcmVhZENvbW1hbmRSZXNwb25zZShD U3RhdGUgKnN0LCBjaGFyICp2YXJwcmVmaXgpDQogCQkJY2FzZSBQR1JFU19F TVBUWV9RVUVSWTogLyogbWF5IGJlIHVzZWQgZm9yIHRlc3Rpbmcgbm8tb3Ag b3ZlcmhlYWQgKi8NCiAJCQkJaWYgKGlzX2xhc3QgJiYgdmFycHJlZml4ICE9 IE5VTEwpDQogCQkJCXsNCi0JCQkJCWZwcmludGYoc3RkZXJyLA0KLQkJCQkJ CQkiY2xpZW50ICVkIHNjcmlwdCAlZCBjb21tYW5kICVkIHF1ZXJ5ICVkOiBl eHBlY3RlZCBvbmUgcm93LCBnb3QgJWRcbiIsDQotCQkJCQkJCXN0LT5pZCwg c3QtPnVzZV9maWxlLCBzdC0+Y29tbWFuZCwgcXJ5bnVtLCAwKTsNCisJCQkJ CWVycm9yKCJjbGllbnQgJWQgc2NyaXB0ICVkIGNvbW1hbmQgJWQgcXVlcnkg JWQ6IGV4cGVjdGVkIG9uZSByb3csIGdvdCAlZCIsDQorCQkJCQkJICBzdC0+ aWQsIHN0LT51c2VfZmlsZSwgc3QtPmNvbW1hbmQsIHFyeW51bSwgMCk7DQog CQkJCQlnb3RvIGVycm9yOw0KIAkJCQl9DQogCQkJCWJyZWFrOw0KQEAgLTI3 NzQsOSArMjc2MCw5IEBAIHJlYWRDb21tYW5kUmVzcG9uc2UoQ1N0YXRlICpz dCwgY2hhciAqdmFycHJlZml4KQ0KIAkJCQl7DQogCQkJCQlpZiAoUFFudHVw bGVzKHJlcykgIT0gMSkNCiAJCQkJCXsNCi0JCQkJCQlmcHJpbnRmKHN0ZGVy ciwNCi0JCQkJCQkJCSJjbGllbnQgJWQgc2NyaXB0ICVkIGNvbW1hbmQgJWQg cXVlcnkgJWQ6IGV4cGVjdGVkIG9uZSByb3csIGdvdCAlZFxuIiwNCi0JCQkJ CQkJCXN0LT5pZCwgc3QtPnVzZV9maWxlLCBzdC0+Y29tbWFuZCwgcXJ5bnVt LCBQUW50dXBsZXMocmVzKSk7DQorCQkJCQkJZXJyb3IoImNsaWVudCAlZCBz Y3JpcHQgJWQgY29tbWFuZCAlZCBxdWVyeSAlZDogZXhwZWN0ZWQgb25lIHJv dywgZ290ICVkIiwNCisJCQkJCQkJICBzdC0+aWQsIHN0LT51c2VfZmlsZSwg c3QtPmNvbW1hbmQsIHFyeW51bSwNCisJCQkJCQkJICBQUW50dXBsZXMocmVz KSk7DQogCQkJCQkJZ290byBlcnJvcjsNCiAJCQkJCX0NCiANCkBAIC0yNzk0 LDEwICsyNzgwLDggQEAgcmVhZENvbW1hbmRSZXNwb25zZShDU3RhdGUgKnN0 LCBjaGFyICp2YXJwcmVmaXgpDQogCQkJCQkJCQkJCSBQUWdldHZhbHVlKHJl cywgMCwgZmxkKSkpDQogCQkJCQkJew0KIAkJCQkJCQkvKiBpbnRlcm5hbCBl cnJvciAqLw0KLQkJCQkJCQlmcHJpbnRmKHN0ZGVyciwNCi0JCQkJCQkJCQki Y2xpZW50ICVkIHNjcmlwdCAlZCBjb21tYW5kICVkIHF1ZXJ5ICVkOiBlcnJv ciBzdG9yaW5nIGludG8gdmFyaWFibGUgJXNcbiIsDQotCQkJCQkJCQkJc3Qt PmlkLCBzdC0+dXNlX2ZpbGUsIHN0LT5jb21tYW5kLCBxcnludW0sDQotCQkJ CQkJCQkJdmFybmFtZSk7DQorCQkJCQkJCWVycm9yKCJjbGllbnQgJWQgc2Ny aXB0ICVkIGNvbW1hbmQgJWQgcXVlcnkgJWQ6IGVycm9yIHN0b3JpbmcgaW50 byB2YXJpYWJsZSAlcyIsDQorCQkJCQkJCQkgIHN0LT5pZCwgc3QtPnVzZV9m aWxlLCBzdC0+Y29tbWFuZCwgcXJ5bnVtLCB2YXJuYW1lKTsNCiAJCQkJCQkJ Z290byBlcnJvcjsNCiAJCQkJCQl9DQogDQpAQCAtMjgxMCwxMCArMjc5NCw5 IEBAIHJlYWRDb21tYW5kUmVzcG9uc2UoQ1N0YXRlICpzdCwgY2hhciAqdmFy cHJlZml4KQ0KIA0KIAkJCWRlZmF1bHQ6DQogCQkJCS8qIGFueXRoaW5nIGVs c2UgaXMgdW5leHBlY3RlZCAqLw0KLQkJCQlmcHJpbnRmKHN0ZGVyciwNCi0J CQkJCQkiY2xpZW50ICVkIHNjcmlwdCAlZCBhYm9ydGVkIGluIGNvbW1hbmQg JWQgcXVlcnkgJWQ6ICVzIiwNCi0JCQkJCQlzdC0+aWQsIHN0LT51c2VfZmls ZSwgc3QtPmNvbW1hbmQsIHFyeW51bSwNCi0JCQkJCQlQUWVycm9yTWVzc2Fn ZShzdC0+Y29uKSk7DQorCQkJCWVycm9yKCJjbGllbnQgJWQgc2NyaXB0ICVk IGFib3J0ZWQgaW4gY29tbWFuZCAlZCBxdWVyeSAlZDogJXMiLA0KKwkJCQkJ ICBzdC0+aWQsIHN0LT51c2VfZmlsZSwgc3QtPmNvbW1hbmQsIHFyeW51bSwN CisJCQkJCSAgUFFlcnJvck1lc3NhZ2Uoc3QtPmNvbikpOw0KIAkJCQlnb3Rv IGVycm9yOw0KIAkJfQ0KIA0KQEAgLTI4MjQsNyArMjgwNyw3IEBAIHJlYWRD b21tYW5kUmVzcG9uc2UoQ1N0YXRlICpzdCwgY2hhciAqdmFycHJlZml4KQ0K IA0KIAlpZiAocXJ5bnVtID09IDApDQogCXsNCi0JCWZwcmludGYoc3RkZXJy LCAiY2xpZW50ICVkIGNvbW1hbmQgJWQ6IG5vIHJlc3VsdHNcbiIsIHN0LT5p ZCwgc3QtPmNvbW1hbmQpOw0KKwkJZXJyb3IoImNsaWVudCAlZCBjb21tYW5k ICVkOiBubyByZXN1bHRzIiwgc3QtPmlkLCBzdC0+Y29tbWFuZCk7DQogCQlz dC0+ZWNudCsrOw0KIAkJcmV0dXJuIGZhbHNlOw0KIAl9DQpAQCAtMjg1OCw4 ICsyODQxLDcgQEAgZXZhbHVhdGVTbGVlcChDU3RhdGUgKnN0LCBpbnQgYXJn YywgY2hhciAqKmFyZ3YsIGludCAqdXNlY3MpDQogCXsNCiAJCWlmICgodmFy ID0gZ2V0VmFyaWFibGUoc3QsIGFyZ3ZbMV0gKyAxKSkgPT0gTlVMTCkNCiAJ CXsNCi0JCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiB1bmRlZmluZWQgdmFyaWFi bGUgXCIlc1wiXG4iLA0KLQkJCQkJYXJndlswXSwgYXJndlsxXSk7DQorCQkJ ZXJyb3IoIiVzOiB1bmRlZmluZWQgdmFyaWFibGUgXCIlc1wiIiwgYXJndlsw XSwgYXJndlsxXSArIDEpOw0KIAkJCXJldHVybiBmYWxzZTsNCiAJCX0NCiAJ CXVzZWMgPSBhdG9pKHZhcik7DQpAQCAtMjkxOSw5ICsyOTAxLDggQEAgYWR2 YW5jZUNvbm5lY3Rpb25TdGF0ZShUU3RhdGUgKnRocmVhZCwgQ1N0YXRlICpz dCwgU3RhdHNEYXRhICphZ2cpDQogCQkJCXN0LT51c2VfZmlsZSA9IGNob29z ZVNjcmlwdCh0aHJlYWQpOw0KIAkJCQlBc3NlcnQoY29uZGl0aW9uYWxfc3Rh Y2tfZW1wdHkoc3QtPmNzdGFjaykpOw0KIA0KLQkJCQlpZiAoZGVidWcpDQot CQkJCQlmcHJpbnRmKHN0ZGVyciwgImNsaWVudCAlZCBleGVjdXRpbmcgc2Ny aXB0IFwiJXNcIlxuIiwgc3QtPmlkLA0KLQkJCQkJCQlzcWxfc2NyaXB0W3N0 LT51c2VfZmlsZV0uZGVzYyk7DQorCQkJCWRlYnVnKCJjbGllbnQgJWQgZXhl Y3V0aW5nIHNjcmlwdCBcIiVzXCIiLA0KKwkJCQkJICBzdC0+aWQsIHNxbF9z Y3JpcHRbc3QtPnVzZV9maWxlXS5kZXNjKTsNCiANCiAJCQkJLyoNCiAJCQkJ ICogSWYgdGltZSBpcyBvdmVyLCB3ZSdyZSBkb25lOyBvdGhlcndpc2UsIGdl dCByZWFkeSB0byBzdGFydA0KQEAgLTI5NDMsOCArMjkyNCw4IEBAIGFkdmFu Y2VDb25uZWN0aW9uU3RhdGUoVFN0YXRlICp0aHJlYWQsIENTdGF0ZSAqc3Qs IFN0YXRzRGF0YSAqYWdnKQ0KIAkJCQkJc3RhcnQgPSBub3c7DQogCQkJCQlp ZiAoKHN0LT5jb24gPSBkb0Nvbm5lY3QoKSkgPT0gTlVMTCkNCiAJCQkJCXsN Ci0JCQkJCQlmcHJpbnRmKHN0ZGVyciwgImNsaWVudCAlZCBhYm9ydGVkIHdo aWxlIGVzdGFibGlzaGluZyBjb25uZWN0aW9uXG4iLA0KLQkJCQkJCQkJc3Qt PmlkKTsNCisJCQkJCQllcnJvcigiY2xpZW50ICVkIGFib3J0ZWQgd2hpbGUg ZXN0YWJsaXNoaW5nIGNvbm5lY3Rpb24iLA0KKwkJCQkJCQkgIHN0LT5pZCk7 DQogCQkJCQkJc3QtPnN0YXRlID0gQ1NUQVRFX0FCT1JURUQ7DQogCQkJCQkJ YnJlYWs7DQogCQkJCQl9DQpAQCAtMzIwMSw4ICszMTgyLDcgQEAgYWR2YW5j ZUNvbm5lY3Rpb25TdGF0ZShUU3RhdGUgKnRocmVhZCwgQ1N0YXRlICpzdCwg U3RhdHNEYXRhICphZ2cpDQogCQkJCSAqIFdhaXQgZm9yIHRoZSBjdXJyZW50 IFNRTCBjb21tYW5kIHRvIGNvbXBsZXRlDQogCQkJCSAqLw0KIAkJCWNhc2Ug Q1NUQVRFX1dBSVRfUkVTVUxUOg0KLQkJCQlpZiAoZGVidWcpDQotCQkJCQlm cHJpbnRmKHN0ZGVyciwgImNsaWVudCAlZCByZWNlaXZpbmdcbiIsIHN0LT5p ZCk7DQorCQkJCWRlYnVnKCJjbGllbnQgJWQgcmVjZWl2aW5nIiwgc3QtPmlk KTsNCiAJCQkJaWYgKCFQUWNvbnN1bWVJbnB1dChzdC0+Y29uKSkNCiAJCQkJ ew0KIAkJCQkJLyogdGhlcmUncyBzb21ldGhpbmcgd3JvbmcgKi8NCkBAIC0z MzI5LDcgKzMzMDksNyBAQCBleGVjdXRlTWV0YUNvbW1hbmQoQ1N0YXRlICpz dCwgaW5zdHJfdGltZSAqbm93KQ0KIAlhcmdjID0gY29tbWFuZC0+YXJnYzsN CiAJYXJndiA9IGNvbW1hbmQtPmFyZ3Y7DQogDQotCWlmIChkZWJ1ZykNCisJ aWYgKGRlYnVnX2xldmVsKQ0KIAl7DQogCQlmcHJpbnRmKHN0ZGVyciwgImNs aWVudCAlZCBleGVjdXRpbmcgXFwlcyIsIHN0LT5pZCwgYXJndlswXSk7DQog CQlmb3IgKGludCBpID0gMTsgaSA8IGFyZ2M7IGkrKykNCkBAIC0zODc3LDcg KzM4NTcsNyBAQCBpbml0R2VuZXJhdGVEYXRhQ2xpZW50U2lkZShQR2Nvbm4g KmNvbikNCiAJcmVzID0gUFFleGVjKGNvbiwgImNvcHkgcGdiZW5jaF9hY2Nv dW50cyBmcm9tIHN0ZGluIik7DQogCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMp ICE9IFBHUkVTX0NPUFlfSU4pDQogCXsNCi0JCWZwcmludGYoc3RkZXJyLCAi JXMiLCBQUWVycm9yTWVzc2FnZShjb24pKTsNCisJCWZhdGFsKCIlcyIsIFBR ZXJyb3JNZXNzYWdlKGNvbikpOw0KIAkJZXhpdCgxKTsNCiAJfQ0KIAlQUWNs ZWFyKHJlcyk7DQpAQCAtMzg5NCw3ICszODc0LDcgQEAgaW5pdEdlbmVyYXRl RGF0YUNsaWVudFNpZGUoUEdjb25uICpjb24pDQogCQkJCSBqLCBrIC8gbmFj Y291bnRzICsgMSwgMCk7DQogCQlpZiAoUFFwdXRsaW5lKGNvbiwgc3FsKSkN CiAJCXsNCi0JCQlmcHJpbnRmKHN0ZGVyciwgIlBRcHV0bGluZSBmYWlsZWRc biIpOw0KKwkJCWZhdGFsKCJQUXB1dGxpbmUgZmFpbGVkIik7DQogCQkJZXhp dCgxKTsNCiAJCX0NCiANCkBAIC0zOTQ1LDEyICszOTI1LDEyIEBAIGluaXRH ZW5lcmF0ZURhdGFDbGllbnRTaWRlKFBHY29ubiAqY29uKQ0KIA0KIAlpZiAo UFFwdXRsaW5lKGNvbiwgIlxcLlxuIikpDQogCXsNCi0JCWZwcmludGYoc3Rk ZXJyLCAidmVyeSBsYXN0IFBRcHV0bGluZSBmYWlsZWRcbiIpOw0KKwkJZmF0 YWwoInZlcnkgbGFzdCBQUXB1dGxpbmUgZmFpbGVkIik7DQogCQlleGl0KDEp Ow0KIAl9DQogCWlmIChQUWVuZGNvcHkoY29uKSkNCiAJew0KLQkJZnByaW50 ZihzdGRlcnIsICJQUWVuZGNvcHkgZmFpbGVkXG4iKTsNCisJCWZhdGFsKCJQ UWVuZGNvcHkgZmFpbGVkIik7DQogCQlleGl0KDEpOw0KIAl9DQogDQpAQCAt NDA4NCw3ICs0MDY0LDcgQEAgY2hlY2tJbml0U3RlcHMoY29uc3QgY2hhciAq aW5pdGlhbGl6ZV9zdGVwcykNCiB7DQogCWlmIChpbml0aWFsaXplX3N0ZXBz WzBdID09ICdcMCcpDQogCXsNCi0JCWZwcmludGYoc3RkZXJyLCAibm8gaW5p dGlhbGl6YXRpb24gc3RlcHMgc3BlY2lmaWVkXG4iKTsNCisJCWZhdGFsKCJu byBpbml0aWFsaXphdGlvbiBzdGVwcyBzcGVjaWZpZWQiKTsNCiAJCWV4aXQo MSk7DQogCX0NCiANCkBAIC00MDkyLDExICs0MDcyLDggQEAgY2hlY2tJbml0 U3RlcHMoY29uc3QgY2hhciAqaW5pdGlhbGl6ZV9zdGVwcykNCiAJew0KIAkJ aWYgKHN0cmNocihBTExfSU5JVF9TVEVQUyAiICIsICpzdGVwKSA9PSBOVUxM KQ0KIAkJew0KLQkJCWZwcmludGYoc3RkZXJyLA0KLQkJCQkJInVucmVjb2du aXplZCBpbml0aWFsaXphdGlvbiBzdGVwIFwiJWNcIlxuIiwNCi0JCQkJCSpz dGVwKTsNCi0JCQlmcHJpbnRmKHN0ZGVyciwNCi0JCQkJCSJBbGxvd2VkIHN0 ZXAgY2hhcmFjdGVycyBhcmU6IFwiIiBBTExfSU5JVF9TVEVQUyAiXCIuXG4i KTsNCisJCQlmYXRhbCgidW5yZWNvZ25pemVkIGluaXRpYWxpemF0aW9uIHN0 ZXAgXCIlY1wiIiwgKnN0ZXApOw0KKwkJCWluZm8oIkFsbG93ZWQgc3RlcCBj aGFyYWN0ZXJzIGFyZTogXCIiIEFMTF9JTklUX1NURVBTICJcIi4iKTsNCiAJ CQlleGl0KDEpOw0KIAkJfQ0KIAl9DQpAQCAtNDE2Miw4ICs0MTM5LDcgQEAg cnVuSW5pdFN0ZXBzKGNvbnN0IGNoYXIgKmluaXRpYWxpemVfc3RlcHMpDQog CQkJY2FzZSAnICc6DQogCQkJCWJyZWFrOwkJCS8qIGlnbm9yZSAqLw0KIAkJ CWRlZmF1bHQ6DQotCQkJCWZwcmludGYoc3RkZXJyLCAidW5yZWNvZ25pemVk IGluaXRpYWxpemF0aW9uIHN0ZXAgXCIlY1wiXG4iLA0KLQkJCQkJCSpzdGVw KTsNCisJCQkJZmF0YWwoInVucmVjb2duaXplZCBpbml0aWFsaXphdGlvbiBz dGVwIFwiJWNcIiIsICpzdGVwKTsNCiAJCQkJUFFmaW5pc2goY29uKTsNCiAJ CQkJZXhpdCgxKTsNCiAJCX0NCkBAIC00MjEyLDI4ICs0MTg4LDI2IEBAIEdl dFRhYmxlSW5mbyhQR2Nvbm4gKmNvbiwgYm9vbCBzY2FsZV9naXZlbikNCiAJ ew0KIAkJY2hhcgkgICAqc3FsU3RhdGUgPSBQUXJlc3VsdEVycm9yRmllbGQo cmVzLCBQR19ESUFHX1NRTFNUQVRFKTsNCiANCi0JCWZwcmludGYoc3RkZXJy LCAiJXMiLCBQUWVycm9yTWVzc2FnZShjb24pKTsNCisJCWZhdGFsKCIlcyIs IFBRZXJyb3JNZXNzYWdlKGNvbikpOw0KIAkJaWYgKHNxbFN0YXRlICYmIHN0 cmNtcChzcWxTdGF0ZSwgRVJSQ09ERV9VTkRFRklORURfVEFCTEUpID09IDAp DQotCQl7DQotCQkJZnByaW50ZihzdGRlcnIsICJQZXJoYXBzIHlvdSBuZWVk IHRvIGRvIGluaXRpYWxpemF0aW9uIChcInBnYmVuY2ggLWlcIikgaW4gZGF0 YWJhc2UgXCIlc1wiXG4iLCBQUWRiKGNvbikpOw0KLQkJfQ0KKwkJCWluZm8o IlBlcmhhcHMgeW91IG5lZWQgdG8gZG8gaW5pdGlhbGl6YXRpb24gKFwicGdi ZW5jaCAtaVwiKSBpbiBkYXRhYmFzZSBcIiVzXCIiLA0KKwkJCQkgUFFkYihj b24pKTsNCiANCiAJCWV4aXQoMSk7DQogCX0NCiAJc2NhbGUgPSBhdG9pKFBR Z2V0dmFsdWUocmVzLCAwLCAwKSk7DQogCWlmIChzY2FsZSA8IDApDQogCXsN Ci0JCWZwcmludGYoc3RkZXJyLCAiaW52YWxpZCBjb3VudCgqKSBmcm9tIHBn YmVuY2hfYnJhbmNoZXM6IFwiJXNcIlxuIiwNCi0JCQkJUFFnZXR2YWx1ZShy ZXMsIDAsIDApKTsNCisJCWZhdGFsKCJpbnZhbGlkIGNvdW50KCopIGZyb20g cGdiZW5jaF9icmFuY2hlczogXCIlc1wiIiwNCisJCQkgIFBRZ2V0dmFsdWUo cmVzLCAwLCAwKSk7DQogCQlleGl0KDEpOw0KIAl9DQogCVBRY2xlYXIocmVz KTsNCiANCiAJLyogd2FybiBpZiB3ZSBvdmVycmlkZSB1c2VyLWdpdmVuIC1z IHN3aXRjaCAqLw0KIAlpZiAoc2NhbGVfZ2l2ZW4pDQotCQlmcHJpbnRmKHN0 ZGVyciwNCi0JCQkJInNjYWxlIG9wdGlvbiBpZ25vcmVkLCB1c2luZyBjb3Vu dCBmcm9tIHBnYmVuY2hfYnJhbmNoZXMgdGFibGUgKCVkKVxuIiwNCi0JCQkJ c2NhbGUpOw0KKwkJd2FybmluZygic2NhbGUgb3B0aW9uIGlnbm9yZWQsIHVz aW5nIGNvdW50IGZyb20gcGdiZW5jaF9icmFuY2hlcyB0YWJsZSAoJWQpIiwN CisJCQkJCSAgIHNjYWxlKTsNCiANCiAJLyoNCiAJICogR2V0IHRoZSBwYXJ0 aXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBmaXJzdCAicGdiZW5jaF9hY2Nv dW50cyIgdGFibGUNCkBAIC00Mjc0LDkgKzQyNDgsOCBAQCBHZXRUYWJsZUlu Zm8oUEdjb25uICpjb24sIGJvb2wgc2NhbGVfZ2l2ZW4pDQogCQkgKiBUaGlz IGNhc2UgaXMgdW5saWtlbHkgYXMgcGdiZW5jaCBhbHJlYWR5IGZvdW5kICJw Z2JlbmNoX2JyYW5jaGVzIg0KIAkJICogYWJvdmUgdG8gY29tcHV0ZSB0aGUg c2NhbGUuDQogCQkgKi8NCi0JCWZwcmludGYoc3RkZXJyLA0KLQkJCQkibm8g cGdiZW5jaF9hY2NvdW50cyB0YWJsZSBmb3VuZCBpbiBzZWFyY2hfcGF0aFxu Ig0KLQkJCQkiUGVyaGFwcyB5b3UgbmVlZCB0byBkbyBpbml0aWFsaXphdGlv biAoXCJwZ2JlbmNoIC1pXCIpIGluIGRhdGFiYXNlIFwiJXNcIi5cbiIsIFBR ZGIoY29uKSk7DQorCQlmYXRhbCgibm8gcGdiZW5jaF9hY2NvdW50cyB0YWJs ZSBmb3VuZCBpbiBzZWFyY2hfcGF0aCIpOw0KKwkJaW5mbygiUGVyaGFwcyB5 b3UgbmVlZCB0byBkbyBpbml0aWFsaXphdGlvbiAoXCJwZ2JlbmNoIC1pXCIp IGluIGRhdGFiYXNlIFwiJXNcIi4iLCBQUWRiKGNvbikpOw0KIAkJZXhpdCgx KTsNCiAJfQ0KIAllbHNlCQkJCQkJLyogUFFudHVwZXMocmVzKSA9PSAxICov DQpAQCAtNDI5OCw3ICs0MjcxLDcgQEAgR2V0VGFibGVJbmZvKFBHY29ubiAq Y29uLCBib29sIHNjYWxlX2dpdmVuKQ0KIAkJCWVsc2UNCiAJCQl7DQogCQkJ CS8qIHBvc3NpYmx5IGEgbmV3ZXIgdmVyc2lvbiB3aXRoIG5ldyBwYXJ0aXRp b24gbWV0aG9kICovDQotCQkJCWZwcmludGYoc3RkZXJyLCAidW5leHBlY3Rl ZCBwYXJ0aXRpb24gbWV0aG9kOiBcIiVzXCJcbiIsIHBzKTsNCisJCQkJZmF0 YWwoInVuZXhwZWN0ZWQgcGFydGl0aW9uIG1ldGhvZDogXCIlc1wiIiwgcHMp Ow0KIAkJCQlleGl0KDEpOw0KIAkJCX0NCiAJCX0NCkBAIC00MzQ0LDggKzQz MTcsOCBAQCBwYXJzZVF1ZXJ5KENvbW1hbmQgKmNtZCkNCiAJCSAqLw0KIAkJ aWYgKGNtZC0+YXJnYyA+PSBNQVhfQVJHUykNCiAJCXsNCi0JCQlmcHJpbnRm KHN0ZGVyciwgInN0YXRlbWVudCBoYXMgdG9vIG1hbnkgYXJndW1lbnRzICht YXhpbXVtIGlzICVkKTogJXNcbiIsDQotCQkJCQlNQVhfQVJHUyAtIDEsIGNt ZC0+bGluZXMuZGF0YSk7DQorCQkJZXJyb3IoInN0YXRlbWVudCBoYXMgdG9v IG1hbnkgYXJndW1lbnRzIChtYXhpbXVtIGlzICVkKTogJXMiLA0KKwkJCQkg IE1BWF9BUkdTIC0gMSwgY21kLT5saW5lcy5kYXRhKTsNCiAJCQlwZ19mcmVl KG5hbWUpOw0KIAkJCXJldHVybiBmYWxzZTsNCiAJCX0NCkBAIC00NzEwLDkg KzQ2ODMsOCBAQCBwcm9jZXNzX2JhY2tzbGFzaF9jb21tYW5kKFBzcWxTY2Fu U3RhdGUgc3N0YXRlLCBjb25zdCBjaGFyICpzb3VyY2UpDQogc3RhdGljIHZv aWQNCiBDb25kaXRpb25FcnJvcihjb25zdCBjaGFyICpkZXNjLCBpbnQgY21k biwgY29uc3QgY2hhciAqbXNnKQ0KIHsNCi0JZnByaW50ZihzdGRlcnIsDQot CQkJImNvbmRpdGlvbiBlcnJvciBpbiBzY3JpcHQgXCIlc1wiIGNvbW1hbmQg JWQ6ICVzXG4iLA0KLQkJCWRlc2MsIGNtZG4sIG1zZyk7DQorCWZhdGFsKCJj b25kaXRpb24gZXJyb3IgaW4gc2NyaXB0IFwiJXNcIiBjb21tYW5kICVkOiAl cyIsDQorCQkgIGRlc2MsIGNtZG4sIG1zZyk7DQogCWV4aXQoMSk7DQogfQ0K IA0KQEAgLTQ5NDcsOCArNDkxOSw3IEBAIHByb2Nlc3NfZmlsZShjb25zdCBj aGFyICpmaWxlbmFtZSwgaW50IHdlaWdodCkNCiAJCWZkID0gc3RkaW47DQog CWVsc2UgaWYgKChmZCA9IGZvcGVuKGZpbGVuYW1lLCAiciIpKSA9PSBOVUxM KQ0KIAl7DQotCQlmcHJpbnRmKHN0ZGVyciwgImNvdWxkIG5vdCBvcGVuIGZp bGUgXCIlc1wiOiAlc1xuIiwNCi0JCQkJZmlsZW5hbWUsIHN0cmVycm9yKGVy cm5vKSk7DQorCQlmYXRhbCgiY291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCI6 ICVtIiwgZmlsZW5hbWUpOw0KIAkJZXhpdCgxKTsNCiAJfQ0KIA0KQEAgLTQ5 NTYsOCArNDkyNyw3IEBAIHByb2Nlc3NfZmlsZShjb25zdCBjaGFyICpmaWxl bmFtZSwgaW50IHdlaWdodCkNCiANCiAJaWYgKGZlcnJvcihmZCkpDQogCXsN Ci0JCWZwcmludGYoc3RkZXJyLCAiY291bGQgbm90IHJlYWQgZmlsZSBcIiVz XCI6ICVzXG4iLA0KLQkJCQlmaWxlbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsN CisJCWZhdGFsKCJjb3VsZCBub3QgcmVhZCBmaWxlIFwiJXNcIjogJW0iLCBm aWxlbmFtZSk7DQogCQlleGl0KDEpOw0KIAl9DQogDQpAQCAtNTAxMiwxMCAr NDk4Miw5IEBAIGZpbmRCdWlsdGluKGNvbnN0IGNoYXIgKm5hbWUpDQogDQog CS8qIGVycm9yIGNhc2VzICovDQogCWlmIChmb3VuZCA9PSAwKQ0KLQkJZnBy aW50ZihzdGRlcnIsICJubyBidWlsdGluIHNjcmlwdCBmb3VuZCBmb3IgbmFt ZSBcIiVzXCJcbiIsIG5hbWUpOw0KKwkJZmF0YWwoIm5vIGJ1aWx0aW4gc2Ny aXB0IGZvdW5kIGZvciBuYW1lIFwiJXNcIiIsIG5hbWUpOw0KIAllbHNlCQkJ CQkJLyogZm91bmQgPiAxICovDQotCQlmcHJpbnRmKHN0ZGVyciwNCi0JCQkJ ImFtYmlndW91cyBidWlsdGluIG5hbWU6ICVkIGJ1aWx0aW4gc2NyaXB0cyBm b3VuZCBmb3IgcHJlZml4IFwiJXNcIlxuIiwgZm91bmQsIG5hbWUpOw0KKwkJ ZmF0YWwoImFtYmlndW91cyBidWlsdGluIG5hbWU6ICVkIGJ1aWx0aW4gc2Ny aXB0cyBmb3VuZCBmb3IgcHJlZml4IFwiJXNcIiIsIGZvdW5kLCBuYW1lKTsN CiANCiAJbGlzdEF2YWlsYWJsZVNjcmlwdHMoKTsNCiAJZXhpdCgxKTsNCkBA IC01MDQ4LDE0ICs1MDE3LDEzIEBAIHBhcnNlU2NyaXB0V2VpZ2h0KGNvbnN0 IGNoYXIgKm9wdGlvbiwgY2hhciAqKnNjcmlwdCkNCiAJCXd0bXAgPSBzdHJ0 b2woc2VwICsgMSwgJmJhZHAsIDEwKTsNCiAJCWlmIChlcnJubyAhPSAwIHx8 IGJhZHAgPT0gc2VwICsgMSB8fCAqYmFkcCAhPSAnXDAnKQ0KIAkJew0KLQkJ CWZwcmludGYoc3RkZXJyLCAiaW52YWxpZCB3ZWlnaHQgc3BlY2lmaWNhdGlv bjogJXNcbiIsIHNlcCk7DQorCQkJZmF0YWwoImludmFsaWQgd2VpZ2h0IHNw ZWNpZmljYXRpb246ICVzIiwgc2VwKTsNCiAJCQlleGl0KDEpOw0KIAkJfQ0K IAkJaWYgKHd0bXAgPiBJTlRfTUFYIHx8IHd0bXAgPCAwKQ0KIAkJew0KLQkJ CWZwcmludGYoc3RkZXJyLA0KLQkJCQkJIndlaWdodCBzcGVjaWZpY2F0aW9u IG91dCBvZiByYW5nZSAoMCAuLiAldSk6ICIgSU5UNjRfRk9STUFUICJcbiIs DQotCQkJCQlJTlRfTUFYLCAoaW50NjQpIHd0bXApOw0KKwkJCWZhdGFsKCJ3 ZWlnaHQgc3BlY2lmaWNhdGlvbiBvdXQgb2YgcmFuZ2UgKDAgLi4gJXUpOiAi IElOVDY0X0ZPUk1BVCwNCisJCQkJICBJTlRfTUFYLCAoaW50NjQpIHd0bXAp Ow0KIAkJCWV4aXQoMSk7DQogCQl9DQogCQl3ZWlnaHQgPSB3dG1wOw0KQEAg LTUwNzUsMTMgKzUwNDMsMTMgQEAgYWRkU2NyaXB0KFBhcnNlZFNjcmlwdCBz Y3JpcHQpDQogew0KIAlpZiAoc2NyaXB0LmNvbW1hbmRzID09IE5VTEwgfHwg c2NyaXB0LmNvbW1hbmRzWzBdID09IE5VTEwpDQogCXsNCi0JCWZwcmludGYo c3RkZXJyLCAiZW1wdHkgY29tbWFuZCBsaXN0IGZvciBzY3JpcHQgXCIlc1wi XG4iLCBzY3JpcHQuZGVzYyk7DQorCQlmYXRhbCgiZW1wdHkgY29tbWFuZCBs aXN0IGZvciBzY3JpcHQgXCIlc1wiIiwgc2NyaXB0LmRlc2MpOw0KIAkJZXhp dCgxKTsNCiAJfQ0KIA0KIAlpZiAobnVtX3NjcmlwdHMgPj0gTUFYX1NDUklQ VFMpDQogCXsNCi0JCWZwcmludGYoc3RkZXJyLCAiYXQgbW9zdCAlZCBTUUwg c2NyaXB0cyBhcmUgYWxsb3dlZFxuIiwgTUFYX1NDUklQVFMpOw0KKwkJZmF0 YWwoImF0IG1vc3QgJWQgU1FMIHNjcmlwdHMgYXJlIGFsbG93ZWQiLCBNQVhf U0NSSVBUUyk7DQogCQlleGl0KDEpOw0KIAl9DQogDQpAQCAtNTM1Myw3ICs1 MzIxLDcgQEAgc2V0X3JhbmRvbV9zZWVkKGNvbnN0IGNoYXIgKnNlZWQpDQog CQkvKiB1c2Ugc29tZSAic3Ryb25nIiByYW5kb20gc291cmNlICovDQogCQlp ZiAoIXBnX3N0cm9uZ19yYW5kb20oJmlzZWVkLCBzaXplb2YoaXNlZWQpKSkN CiAJCXsNCi0JCQlmcHJpbnRmKHN0ZGVyciwgImNvdWxkIG5vdCBnZW5lcmF0 ZSByYW5kb20gc2VlZC5cbiIpOw0KKwkJCWVycm9yKCJjb3VsZCBub3QgZ2Vu ZXJhdGUgcmFuZG9tIHNlZWQiKTsNCiAJCQlyZXR1cm4gZmFsc2U7DQogCQl9 DQogCX0NCkBAIC01MzY2LDE2ICs1MzM0LDE1IEBAIHNldF9yYW5kb21fc2Vl ZChjb25zdCBjaGFyICpzZWVkKQ0KIAkJLyogRG9uJ3QgdHJ5IHRvIHVzZSBV SU5UNjRfRk9STUFUIGhlcmU7IGl0IG1pZ2h0IG5vdCB3b3JrIGZvciBzc2Nh bmYgKi8NCiAJCWlmIChzc2NhbmYoc2VlZCwgIiVsdSVjIiwgJnVsc2VlZCwg JmdhcmJhZ2UpICE9IDEpDQogCQl7DQotCQkJZnByaW50ZihzdGRlcnIsDQot CQkJCQkidW5yZWNvZ25pemVkIHJhbmRvbSBzZWVkIG9wdGlvbiBcIiVzXCI6 IGV4cGVjdGluZyBhbiB1bnNpZ25lZCBpbnRlZ2VyLCBcInRpbWVcIiBvciBc InJhbmRcIlxuIiwNCi0JCQkJCXNlZWQpOw0KKwkJCWVycm9yKCJ1bnJlY29n bml6ZWQgcmFuZG9tIHNlZWQgb3B0aW9uIFwiJXNcIjogZXhwZWN0aW5nIGFu IHVuc2lnbmVkIGludGVnZXIsIFwidGltZVwiIG9yIFwicmFuZFwiIiwNCisJ CQkJICBzZWVkKTsNCiAJCQlyZXR1cm4gZmFsc2U7DQogCQl9DQogCQlpc2Vl ZCA9ICh1aW50NjQpIHVsc2VlZDsNCiAJfQ0KIA0KIAlpZiAoc2VlZCAhPSBO VUxMKQ0KLQkJZnByaW50ZihzdGRlcnIsICJzZXR0aW5nIHJhbmRvbSBzZWVk IHRvICIgVUlOVDY0X0ZPUk1BVCAiXG4iLCBpc2VlZCk7DQorCQlpbmZvKCJz ZXR0aW5nIHJhbmRvbSBzZWVkIHRvICIgVUlOVDY0X0ZPUk1BVCwgaXNlZWQp Ow0KIAlyYW5kb21fc2VlZCA9IGlzZWVkOw0KIA0KIAkvKiBGaWxsIGJhc2Vf cmFuZG9tX3NlcXVlbmNlIHdpdGggbG93LW9yZGVyIGJpdHMgb2Ygc2VlZCAq Lw0KQEAgLTU0OTgsNyArNTQ2NSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIg Kiphcmd2KQ0KIAkvKiBzZXQgcmFuZG9tIHNlZWQgZWFybHksIGJlY2F1c2Ug aXQgbWF5IGJlIHVzZWQgd2hpbGUgcGFyc2luZyBzY3JpcHRzLiAqLw0KIAlp ZiAoIXNldF9yYW5kb21fc2VlZChnZXRlbnYoIlBHQkVOQ0hfUkFORE9NX1NF RUQiKSkpDQogCXsNCi0JCWZwcmludGYoc3RkZXJyLCAiZXJyb3Igd2hpbGUg c2V0dGluZyByYW5kb20gc2VlZCBmcm9tIFBHQkVOQ0hfUkFORE9NX1NFRUQg ZW52aXJvbm1lbnQgdmFyaWFibGVcbiIpOw0KKwkJZmF0YWwoImVycm9yIHdo aWxlIHNldHRpbmcgcmFuZG9tIHNlZWQgZnJvbSBQR0JFTkNIX1JBTkRPTV9T RUVEIGVudmlyb25tZW50IHZhcmlhYmxlIik7DQogCQlleGl0KDEpOw0KIAl9 DQogDQpAQCAtNTUzMiwxNSArNTQ5OSwxNSBAQCBtYWluKGludCBhcmdjLCBj aGFyICoqYXJndikNCiAJCQkJcGdwb3J0ID0gcGdfc3RyZHVwKG9wdGFyZyk7 DQogCQkJCWJyZWFrOw0KIAkJCWNhc2UgJ2QnOg0KLQkJCQlkZWJ1ZysrOw0K KwkJCQlkZWJ1Z19sZXZlbCsrOw0KKwkJCQlwZ19sb2dnaW5nX3NldF9sZXZl bChQR19MT0dfREVCVUcpOw0KIAkJCQlicmVhazsNCiAJCQljYXNlICdjJzoN CiAJCQkJYmVuY2htYXJraW5nX29wdGlvbl9zZXQgPSB0cnVlOw0KIAkJCQlu Y2xpZW50cyA9IGF0b2kob3B0YXJnKTsNCiAJCQkJaWYgKG5jbGllbnRzIDw9 IDApDQogCQkJCXsNCi0JCQkJCWZwcmludGYoc3RkZXJyLCAiaW52YWxpZCBu dW1iZXIgb2YgY2xpZW50czogXCIlc1wiXG4iLA0KLQkJCQkJCQlvcHRhcmcp Ow0KKwkJCQkJZmF0YWwoImludmFsaWQgbnVtYmVyIG9mIGNsaWVudHM6IFwi JXNcIiIsIG9wdGFyZyk7DQogCQkJCQlleGl0KDEpOw0KIAkJCQl9DQogI2lm ZGVmIEhBVkVfR0VUUkxJTUlUDQpAQCAtNTU1MCwxNCArNTUxNywxNCBAQCBt YWluKGludCBhcmdjLCBjaGFyICoqYXJndikNCiAJCQkJaWYgKGdldHJsaW1p dChSTElNSVRfT0ZJTEUsICZybGltKSA9PSAtMSkNCiAjZW5kaWYJCQkJCQkJ LyogUkxJTUlUX05PRklMRSAqLw0KIAkJCQl7DQotCQkJCQlmcHJpbnRmKHN0 ZGVyciwgImdldHJsaW1pdCBmYWlsZWQ6ICVzXG4iLCBzdHJlcnJvcihlcnJu bykpOw0KKwkJCQkJZmF0YWwoImdldHJsaW1pdCBmYWlsZWQ6ICVtIik7DQog CQkJCQlleGl0KDEpOw0KIAkJCQl9DQogCQkJCWlmIChybGltLnJsaW1fY3Vy IDwgbmNsaWVudHMgKyAzKQ0KIAkJCQl7DQotCQkJCQlmcHJpbnRmKHN0ZGVy ciwgIm5lZWQgYXQgbGVhc3QgJWQgb3BlbiBmaWxlcywgYnV0IHN5c3RlbSBs aW1pdCBpcyAlbGRcbiIsDQotCQkJCQkJCW5jbGllbnRzICsgMywgKGxvbmcp IHJsaW0ucmxpbV9jdXIpOw0KLQkJCQkJZnByaW50ZihzdGRlcnIsICJSZWR1 Y2UgbnVtYmVyIG9mIGNsaWVudHMsIG9yIHVzZSBsaW1pdC91bGltaXQgdG8g aW5jcmVhc2UgdGhlIHN5c3RlbSBsaW1pdC5cbiIpOw0KKwkJCQkJZmF0YWwo Im5lZWQgYXQgbGVhc3QgJWQgb3BlbiBmaWxlcywgYnV0IHN5c3RlbSBsaW1p dCBpcyAlbGQiLA0KKwkJCQkJCSAgbmNsaWVudHMgKyAzLCAobG9uZykgcmxp bS5ybGltX2N1cik7DQorCQkJCQlpbmZvKCJSZWR1Y2UgbnVtYmVyIG9mIGNs aWVudHMsIG9yIHVzZSBsaW1pdC91bGltaXQgdG8gaW5jcmVhc2UgdGhlIHN5 c3RlbSBsaW1pdC4iKTsNCiAJCQkJCWV4aXQoMSk7DQogCQkJCX0NCiAjZW5k aWYJCQkJCQkJLyogSEFWRV9HRVRSTElNSVQgKi8NCkBAIC01NTY3LDE0ICs1 NTM0LDEzIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQ0KIAkJCQlu dGhyZWFkcyA9IGF0b2kob3B0YXJnKTsNCiAJCQkJaWYgKG50aHJlYWRzIDw9 IDApDQogCQkJCXsNCi0JCQkJCWZwcmludGYoc3RkZXJyLCAiaW52YWxpZCBu dW1iZXIgb2YgdGhyZWFkczogXCIlc1wiXG4iLA0KLQkJCQkJCQlvcHRhcmcp Ow0KKwkJCQkJZmF0YWwoImludmFsaWQgbnVtYmVyIG9mIHRocmVhZHM6IFwi JXNcIiIsIG9wdGFyZyk7DQogCQkJCQlleGl0KDEpOw0KIAkJCQl9DQogI2lm bmRlZiBFTkFCTEVfVEhSRUFEX1NBRkVUWQ0KIAkJCQlpZiAobnRocmVhZHMg IT0gMSkNCiAJCQkJew0KLQkJCQkJZnByaW50ZihzdGRlcnIsICJ0aHJlYWRz IGFyZSBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm07IHVzZSAtajFc biIpOw0KKwkJCQkJZmF0YWwoInRocmVhZHMgYXJlIG5vdCBzdXBwb3J0ZWQg b24gdGhpcyBwbGF0Zm9ybTsgdXNlIC1qMSIpOw0KIAkJCQkJZXhpdCgxKTsN CiAJCQkJfQ0KICNlbmRpZgkJCQkJCQkvKiAhRU5BQkxFX1RIUkVBRF9TQUZF VFkgKi8NCkBAIC01NTkyLDcgKzU1NTgsNyBAQCBtYWluKGludCBhcmdjLCBj aGFyICoqYXJndikNCiAJCQkJc2NhbGUgPSBhdG9pKG9wdGFyZyk7DQogCQkJ CWlmIChzY2FsZSA8PSAwKQ0KIAkJCQl7DQotCQkJCQlmcHJpbnRmKHN0ZGVy ciwgImludmFsaWQgc2NhbGluZyBmYWN0b3I6IFwiJXNcIlxuIiwgb3B0YXJn KTsNCisJCQkJCWZhdGFsKCJpbnZhbGlkIHNjYWxpbmcgZmFjdG9yOiBcIiVz XCIiLCBvcHRhcmcpOw0KIAkJCQkJZXhpdCgxKTsNCiAJCQkJfQ0KIAkJCQli cmVhazsNCkBAIC01NjAxLDggKzU1NjcsNyBAQCBtYWluKGludCBhcmdjLCBj aGFyICoqYXJndikNCiAJCQkJbnhhY3RzID0gYXRvaShvcHRhcmcpOw0KIAkJ CQlpZiAobnhhY3RzIDw9IDApDQogCQkJCXsNCi0JCQkJCWZwcmludGYoc3Rk ZXJyLCAiaW52YWxpZCBudW1iZXIgb2YgdHJhbnNhY3Rpb25zOiBcIiVzXCJc biIsDQotCQkJCQkJCW9wdGFyZyk7DQorCQkJCQlmYXRhbCgiaW52YWxpZCBu dW1iZXIgb2YgdHJhbnNhY3Rpb25zOiBcIiVzXCIiLCBvcHRhcmcpOw0KIAkJ CQkJZXhpdCgxKTsNCiAJCQkJfQ0KIAkJCQlicmVhazsNCkBAIC01NjExLDcg KzU1NzYsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikNCiAJCQkJ ZHVyYXRpb24gPSBhdG9pKG9wdGFyZyk7DQogCQkJCWlmIChkdXJhdGlvbiA8 PSAwKQ0KIAkJCQl7DQotCQkJCQlmcHJpbnRmKHN0ZGVyciwgImludmFsaWQg ZHVyYXRpb246IFwiJXNcIlxuIiwgb3B0YXJnKTsNCisJCQkJCWZhdGFsKCJp bnZhbGlkIGR1cmF0aW9uOiBcIiVzXCIiLCBvcHRhcmcpOw0KIAkJCQkJZXhp dCgxKTsNCiAJCQkJfQ0KIAkJCQlicmVhazsNCkBAIC01NjYwLDggKzU2MjUs NyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikNCiANCiAJCQkJCWlm ICgocCA9IHN0cmNocihvcHRhcmcsICc9JykpID09IE5VTEwgfHwgcCA9PSBv cHRhcmcgfHwgKihwICsgMSkgPT0gJ1wwJykNCiAJCQkJCXsNCi0JCQkJCQlm cHJpbnRmKHN0ZGVyciwgImludmFsaWQgdmFyaWFibGUgZGVmaW5pdGlvbjog XCIlc1wiXG4iLA0KLQkJCQkJCQkJb3B0YXJnKTsNCisJCQkJCQlmYXRhbCgi aW52YWxpZCB2YXJpYWJsZSBkZWZpbml0aW9uOiBcIiVzXCIiLCBvcHRhcmcp Ow0KIAkJCQkJCWV4aXQoMSk7DQogCQkJCQl9DQogDQpAQCAtNTY3NSw3ICs1 NjM5LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpDQogCQkJCWZp bGxmYWN0b3IgPSBhdG9pKG9wdGFyZyk7DQogCQkJCWlmIChmaWxsZmFjdG9y IDwgMTAgfHwgZmlsbGZhY3RvciA+IDEwMCkNCiAJCQkJew0KLQkJCQkJZnBy aW50ZihzdGRlcnIsICJpbnZhbGlkIGZpbGxmYWN0b3I6IFwiJXNcIlxuIiwg b3B0YXJnKTsNCisJCQkJCWZhdGFsKCJpbnZhbGlkIGZpbGxmYWN0b3I6IFwi JXNcIiIsIG9wdGFyZyk7DQogCQkJCQlleGl0KDEpOw0KIAkJCQl9DQogCQkJ CWJyZWFrOw0KQEAgLTU2ODYsOCArNTY1MCw3IEBAIG1haW4oaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQ0KIAkJCQkJCWJyZWFrOw0KIAkJCQlpZiAocXVlcnlt b2RlID49IE5VTV9RVUVSWU1PREUpDQogCQkJCXsNCi0JCQkJCWZwcmludGYo c3RkZXJyLCAiaW52YWxpZCBxdWVyeSBtb2RlICgtTSk6IFwiJXNcIlxuIiwN Ci0JCQkJCQkJb3B0YXJnKTsNCisJCQkJCWZhdGFsKCJpbnZhbGlkIHF1ZXJ5 IG1vZGUgKC1NKTogXCIlc1wiIiwgb3B0YXJnKTsNCiAJCQkJCWV4aXQoMSk7 DQogCQkJCX0NCiAJCQkJYnJlYWs7DQpAQCAtNTY5Niw4ICs1NjU5LDcgQEAg bWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpDQogCQkJCXByb2dyZXNzID0g YXRvaShvcHRhcmcpOw0KIAkJCQlpZiAocHJvZ3Jlc3MgPD0gMCkNCiAJCQkJ ew0KLQkJCQkJZnByaW50ZihzdGRlcnIsICJpbnZhbGlkIHRocmVhZCBwcm9n cmVzcyBkZWxheTogXCIlc1wiXG4iLA0KLQkJCQkJCQlvcHRhcmcpOw0KKwkJ CQkJZmF0YWwoImludmFsaWQgdGhyZWFkIHByb2dyZXNzIGRlbGF5OiBcIiVz XCIiLCBvcHRhcmcpOw0KIAkJCQkJZXhpdCgxKTsNCiAJCQkJfQ0KIAkJCQli cmVhazsNCkBAIC01NzEwLDcgKzU2NzIsNyBAQCBtYWluKGludCBhcmdjLCBj aGFyICoqYXJndikNCiANCiAJCQkJCWlmICh0aHJvdHRsZV92YWx1ZSA8PSAw LjApDQogCQkJCQl7DQotCQkJCQkJZnByaW50ZihzdGRlcnIsICJpbnZhbGlk IHJhdGUgbGltaXQ6IFwiJXNcIlxuIiwgb3B0YXJnKTsNCisJCQkJCQlmYXRh bCgiaW52YWxpZCByYXRlIGxpbWl0OiBcIiVzXCIiLCBvcHRhcmcpOw0KIAkJ CQkJCWV4aXQoMSk7DQogCQkJCQl9DQogCQkJCQkvKiBJbnZlcnQgcmF0ZSBs aW1pdCBpbnRvIHBlci10cmFuc2FjdGlvbiBkZWxheSBpbiB1c2VjICovDQpA QCAtNTcyMyw4ICs1Njg1LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy Z3YpDQogDQogCQkJCQlpZiAobGltaXRfbXMgPD0gMC4wKQ0KIAkJCQkJew0K LQkJCQkJCWZwcmludGYoc3RkZXJyLCAiaW52YWxpZCBsYXRlbmN5IGxpbWl0 OiBcIiVzXCJcbiIsDQotCQkJCQkJCQlvcHRhcmcpOw0KKwkJCQkJCWZhdGFs KCJpbnZhbGlkIGxhdGVuY3kgbGltaXQ6IFwiJXNcIiIsIG9wdGFyZyk7DQog CQkJCQkJZXhpdCgxKTsNCiAJCQkJCX0NCiAJCQkJCWJlbmNobWFya2luZ19v cHRpb25fc2V0ID0gdHJ1ZTsNCkBAIC01NzQ4LDcgKzU3MDksNyBAQCBtYWlu KGludCBhcmdjLCBjaGFyICoqYXJndikNCiAJCQkJc2FtcGxlX3JhdGUgPSBh dG9mKG9wdGFyZyk7DQogCQkJCWlmIChzYW1wbGVfcmF0ZSA8PSAwLjAgfHwg c2FtcGxlX3JhdGUgPiAxLjApDQogCQkJCXsNCi0JCQkJCWZwcmludGYoc3Rk ZXJyLCAiaW52YWxpZCBzYW1wbGluZyByYXRlOiBcIiVzXCJcbiIsIG9wdGFy Zyk7DQorCQkJCQlmYXRhbCgiaW52YWxpZCBzYW1wbGluZyByYXRlOiBcIiVz XCIiLCBvcHRhcmcpOw0KIAkJCQkJZXhpdCgxKTsNCiAJCQkJfQ0KIAkJCQli cmVhazsNCkBAIC01NzU3LDggKzU3MTgsNyBAQCBtYWluKGludCBhcmdjLCBj aGFyICoqYXJndikNCiAJCQkJYWdnX2ludGVydmFsID0gYXRvaShvcHRhcmcp Ow0KIAkJCQlpZiAoYWdnX2ludGVydmFsIDw9IDApDQogCQkJCXsNCi0JCQkJ CWZwcmludGYoc3RkZXJyLCAiaW52YWxpZCBudW1iZXIgb2Ygc2Vjb25kcyBm b3IgYWdncmVnYXRpb246IFwiJXNcIlxuIiwNCi0JCQkJCQkJb3B0YXJnKTsN CisJCQkJCWZhdGFsKCJpbnZhbGlkIG51bWJlciBvZiBzZWNvbmRzIGZvciBh Z2dyZWdhdGlvbjogXCIlc1wiIiwgb3B0YXJnKTsNCiAJCQkJCWV4aXQoMSk7 DQogCQkJCX0NCiAJCQkJYnJlYWs7DQpAQCAtNTc3OCw3ICs1NzM4LDcgQEAg bWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpDQogCQkJCWJlbmNobWFya2lu Z19vcHRpb25fc2V0ID0gdHJ1ZTsNCiAJCQkJaWYgKCFzZXRfcmFuZG9tX3Nl ZWQob3B0YXJnKSkNCiAJCQkJew0KLQkJCQkJZnByaW50ZihzdGRlcnIsICJl cnJvciB3aGlsZSBzZXR0aW5nIHJhbmRvbSBzZWVkIGZyb20gLS1yYW5kb20t c2VlZCBvcHRpb25cbiIpOw0KKwkJCQkJZmF0YWwoImVycm9yIHdoaWxlIHNl dHRpbmcgcmFuZG9tIHNlZWQgZnJvbSAtLXJhbmRvbS1zZWVkIG9wdGlvbiIp Ow0KIAkJCQkJZXhpdCgxKTsNCiAJCQkJfQ0KIAkJCQlicmVhazsNCkBAIC01 Nzk1LDggKzU3NTUsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikN CiAJCQkJcGFydGl0aW9ucyA9IGF0b2kob3B0YXJnKTsNCiAJCQkJaWYgKHBh cnRpdGlvbnMgPCAwKQ0KIAkJCQl7DQotCQkJCQlmcHJpbnRmKHN0ZGVyciwg ImludmFsaWQgbnVtYmVyIG9mIHBhcnRpdGlvbnM6IFwiJXNcIlxuIiwNCi0J CQkJCQkJb3B0YXJnKTsNCisJCQkJCWZhdGFsKCJpbnZhbGlkIG51bWJlciBv ZiBwYXJ0aXRpb25zOiBcIiVzXCIiLCBvcHRhcmcpOw0KIAkJCQkJZXhpdCgx KTsNCiAJCQkJfQ0KIAkJCQlicmVhazsNCkBAIC01ODA4LDggKzU3NjcsOCBA QCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikNCiAJCQkJCXBhcnRpdGlv bl9tZXRob2QgPSBQQVJUX0hBU0g7DQogCQkJCWVsc2UNCiAJCQkJew0KLQkJ CQkJZnByaW50ZihzdGRlcnIsICJpbnZhbGlkIHBhcnRpdGlvbiBtZXRob2Qs IGV4cGVjdGluZyBcInJhbmdlXCIgb3IgXCJoYXNoXCIsIg0KLQkJCQkJCQki IGdvdDogXCIlc1wiXG4iLCBvcHRhcmcpOw0KKwkJCQkJZmF0YWwoImludmFs aWQgcGFydGl0aW9uIG1ldGhvZCwgZXhwZWN0aW5nIFwicmFuZ2VcIiBvciBc Imhhc2hcIiwiDQorCQkJCQkJICAiIGdvdDogXCIlc1wiIiwgb3B0YXJnKTsN CiAJCQkJCWV4aXQoMSk7DQogCQkJCX0NCiAJCQkJYnJlYWs7DQpAQCAtNTg0 Myw3ICs1ODAyLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpDQog DQogCWlmICh0b3RhbF93ZWlnaHQgPT0gMCAmJiAhaXNfaW5pdF9tb2RlKQ0K IAl7DQotCQlmcHJpbnRmKHN0ZGVyciwgInRvdGFsIHNjcmlwdCB3ZWlnaHQg bXVzdCBub3QgYmUgemVyb1xuIik7DQorCQlmYXRhbCgidG90YWwgc2NyaXB0 IHdlaWdodCBtdXN0IG5vdCBiZSB6ZXJvIik7DQogCQlleGl0KDEpOw0KIAl9 DQogDQpAQCAtNTg4MCw5ICs1ODM5LDkgQEAgbWFpbihpbnQgYXJnYywgY2hh ciAqKmFyZ3YpDQogDQogCWlmIChvcHRpbmQgPCBhcmdjKQ0KIAl7DQotCQlm cHJpbnRmKHN0ZGVyciwgXygiJXM6IHRvbyBtYW55IGNvbW1hbmQtbGluZSBh cmd1bWVudHMgKGZpcnN0IGlzIFwiJXNcIilcbiIpLA0KLQkJCQlwcm9nbmFt ZSwgYXJndltvcHRpbmRdKTsNCi0JCWZwcmludGYoc3RkZXJyLCBfKCJUcnkg XCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLCBwcm9n bmFtZSk7DQorCQlmYXRhbCgidG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3Vt ZW50cyAoZmlyc3QgaXMgXCIlc1wiKSIsDQorCQkJICBhcmd2W29wdGluZF0p Ow0KKwkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZv ciBtb3JlIGluZm9ybWF0aW9uLiIpLCBwcm9nbmFtZSk7DQogCQlleGl0KDEp Ow0KIAl9DQogDQpAQCAtNTg5MCwxMyArNTg0OSwxMyBAQCBtYWluKGludCBh cmdjLCBjaGFyICoqYXJndikNCiAJew0KIAkJaWYgKGJlbmNobWFya2luZ19v cHRpb25fc2V0KQ0KIAkJew0KLQkJCWZwcmludGYoc3RkZXJyLCAic29tZSBv ZiB0aGUgc3BlY2lmaWVkIG9wdGlvbnMgY2Fubm90IGJlIHVzZWQgaW4gaW5p dGlhbGl6YXRpb24gKC1pKSBtb2RlXG4iKTsNCisJCQlmYXRhbCgic29tZSBv ZiB0aGUgc3BlY2lmaWVkIG9wdGlvbnMgY2Fubm90IGJlIHVzZWQgaW4gaW5p dGlhbGl6YXRpb24gKC1pKSBtb2RlIik7DQogCQkJZXhpdCgxKTsNCiAJCX0N CiANCiAJCWlmIChwYXJ0aXRpb25zID09IDAgJiYgcGFydGl0aW9uX21ldGhv ZCAhPSBQQVJUX05PTkUpDQogCQl7DQotCQkJZnByaW50ZihzdGRlcnIsICIt LXBhcnRpdGlvbi1tZXRob2QgcmVxdWlyZXMgZ3JlYXRlciB0aGFuIHplcm8g LS1wYXJ0aXRpb25zXG4iKTsNCisJCQlmYXRhbCgiLS1wYXJ0aXRpb24tbWV0 aG9kIHJlcXVpcmVzIGdyZWF0ZXIgdGhhbiB6ZXJvIC0tcGFydGl0aW9ucyIp Ow0KIAkJCWV4aXQoMSk7DQogCQl9DQogDQpAQCAtNTkzNSwxNCArNTg5NCwx NCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikNCiAJew0KIAkJaWYg KGluaXRpYWxpemF0aW9uX29wdGlvbl9zZXQpDQogCQl7DQotCQkJZnByaW50 ZihzdGRlcnIsICJzb21lIG9mIHRoZSBzcGVjaWZpZWQgb3B0aW9ucyBjYW5u b3QgYmUgdXNlZCBpbiBiZW5jaG1hcmtpbmcgbW9kZVxuIik7DQorCQkJZmF0 YWwoInNvbWUgb2YgdGhlIHNwZWNpZmllZCBvcHRpb25zIGNhbm5vdCBiZSB1 c2VkIGluIGJlbmNobWFya2luZyBtb2RlIik7DQogCQkJZXhpdCgxKTsNCiAJ CX0NCiAJfQ0KIA0KIAlpZiAobnhhY3RzID4gMCAmJiBkdXJhdGlvbiA+IDAp DQogCXsNCi0JCWZwcmludGYoc3RkZXJyLCAic3BlY2lmeSBlaXRoZXIgYSBu dW1iZXIgb2YgdHJhbnNhY3Rpb25zICgtdCkgb3IgYSBkdXJhdGlvbiAoLVQp LCBub3QgYm90aFxuIik7DQorCQlmYXRhbCgic3BlY2lmeSBlaXRoZXIgYSBu dW1iZXIgb2YgdHJhbnNhY3Rpb25zICgtdCkgb3IgYSBkdXJhdGlvbiAoLVQp LCBub3QgYm90aCIpOw0KIAkJZXhpdCgxKTsNCiAJfQ0KIA0KQEAgLTU5NTMs NDQgKzU5MTIsNDQgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpDQog CS8qIC0tc2FtcGxpbmctcmF0ZSBtYXkgYmUgdXNlZCBvbmx5IHdpdGggLWwg Ki8NCiAJaWYgKHNhbXBsZV9yYXRlID4gMC4wICYmICF1c2VfbG9nKQ0KIAl7 DQotCQlmcHJpbnRmKHN0ZGVyciwgImxvZyBzYW1wbGluZyAoLS1zYW1wbGlu Zy1yYXRlKSBpcyBhbGxvd2VkIG9ubHkgd2hlbiBsb2dnaW5nIHRyYW5zYWN0 aW9ucyAoLWwpXG4iKTsNCisJCWZhdGFsKCJsb2cgc2FtcGxpbmcgKC0tc2Ft cGxpbmctcmF0ZSkgaXMgYWxsb3dlZCBvbmx5IHdoZW4gbG9nZ2luZyB0cmFu c2FjdGlvbnMgKC1sKSIpOw0KIAkJZXhpdCgxKTsNCiAJfQ0KIA0KIAkvKiAt LXNhbXBsaW5nLXJhdGUgbWF5IG5vdCBiZSB1c2VkIHdpdGggLS1hZ2dyZWdh dGUtaW50ZXJ2YWwgKi8NCiAJaWYgKHNhbXBsZV9yYXRlID4gMC4wICYmIGFn Z19pbnRlcnZhbCA+IDApDQogCXsNCi0JCWZwcmludGYoc3RkZXJyLCAibG9n IHNhbXBsaW5nICgtLXNhbXBsaW5nLXJhdGUpIGFuZCBhZ2dyZWdhdGlvbiAo LS1hZ2dyZWdhdGUtaW50ZXJ2YWwpIGNhbm5vdCBiZSB1c2VkIGF0IHRoZSBz YW1lIHRpbWVcbiIpOw0KKwkJZmF0YWwoImxvZyBzYW1wbGluZyAoLS1zYW1w bGluZy1yYXRlKSBhbmQgYWdncmVnYXRpb24gKC0tYWdncmVnYXRlLWludGVy dmFsKSBjYW5ub3QgYmUgdXNlZCBhdCB0aGUgc2FtZSB0aW1lIik7DQogCQll eGl0KDEpOw0KIAl9DQogDQogCWlmIChhZ2dfaW50ZXJ2YWwgPiAwICYmICF1 c2VfbG9nKQ0KIAl7DQotCQlmcHJpbnRmKHN0ZGVyciwgImxvZyBhZ2dyZWdh dGlvbiBpcyBhbGxvd2VkIG9ubHkgd2hlbiBhY3R1YWxseSBsb2dnaW5nIHRy YW5zYWN0aW9uc1xuIik7DQorCQlmYXRhbCgibG9nIGFnZ3JlZ2F0aW9uIGlz IGFsbG93ZWQgb25seSB3aGVuIGFjdHVhbGx5IGxvZ2dpbmcgdHJhbnNhY3Rp b25zIik7DQogCQlleGl0KDEpOw0KIAl9DQogDQogCWlmICghdXNlX2xvZyAm JiBsb2dmaWxlX3ByZWZpeCkNCiAJew0KLQkJZnByaW50ZihzdGRlcnIsICJs b2cgZmlsZSBwcmVmaXggKC0tbG9nLXByZWZpeCkgaXMgYWxsb3dlZCBvbmx5 IHdoZW4gbG9nZ2luZyB0cmFuc2FjdGlvbnMgKC1sKVxuIik7DQorCQlmYXRh bCgibG9nIGZpbGUgcHJlZml4ICgtLWxvZy1wcmVmaXgpIGlzIGFsbG93ZWQg b25seSB3aGVuIGxvZ2dpbmcgdHJhbnNhY3Rpb25zICgtbCkiKTsNCiAJCWV4 aXQoMSk7DQogCX0NCiANCiAJaWYgKGR1cmF0aW9uID4gMCAmJiBhZ2dfaW50 ZXJ2YWwgPiBkdXJhdGlvbikNCiAJew0KLQkJZnByaW50ZihzdGRlcnIsICJu dW1iZXIgb2Ygc2Vjb25kcyBmb3IgYWdncmVnYXRpb24gKCVkKSBtdXN0IG5v dCBiZSBoaWdoZXIgdGhhbiB0ZXN0IGR1cmF0aW9uICglZClcbiIsIGFnZ19p bnRlcnZhbCwgZHVyYXRpb24pOw0KKwkJZmF0YWwoIm51bWJlciBvZiBzZWNv bmRzIGZvciBhZ2dyZWdhdGlvbiAoJWQpIG11c3Qgbm90IGJlIGhpZ2hlciB0 aGFuIHRlc3QgZHVyYXRpb24gKCVkKSIsIGFnZ19pbnRlcnZhbCwgZHVyYXRp b24pOw0KIAkJZXhpdCgxKTsNCiAJfQ0KIA0KIAlpZiAoZHVyYXRpb24gPiAw ICYmIGFnZ19pbnRlcnZhbCA+IDAgJiYgZHVyYXRpb24gJSBhZ2dfaW50ZXJ2 YWwgIT0gMCkNCiAJew0KLQkJZnByaW50ZihzdGRlcnIsICJkdXJhdGlvbiAo JWQpIG11c3QgYmUgYSBtdWx0aXBsZSBvZiBhZ2dyZWdhdGlvbiBpbnRlcnZh bCAoJWQpXG4iLCBkdXJhdGlvbiwgYWdnX2ludGVydmFsKTsNCisJCWZhdGFs KCJkdXJhdGlvbiAoJWQpIG11c3QgYmUgYSBtdWx0aXBsZSBvZiBhZ2dyZWdh dGlvbiBpbnRlcnZhbCAoJWQpIiwgZHVyYXRpb24sIGFnZ19pbnRlcnZhbCk7 DQogCQlleGl0KDEpOw0KIAl9DQogDQogCWlmIChwcm9ncmVzc190aW1lc3Rh bXAgJiYgcHJvZ3Jlc3MgPT0gMCkNCiAJew0KLQkJZnByaW50ZihzdGRlcnIs ICItLXByb2dyZXNzLXRpbWVzdGFtcCBpcyBhbGxvd2VkIG9ubHkgdW5kZXIg LS1wcm9ncmVzc1xuIik7DQorCQlmYXRhbCgiLS1wcm9ncmVzcy10aW1lc3Rh bXAgaXMgYWxsb3dlZCBvbmx5IHVuZGVyIC0tcHJvZ3Jlc3MiKTsNCiAJCWV4 aXQoMSk7DQogCX0NCiANCkBAIC02MDM4LDcgKzU5OTcsNyBAQCBtYWluKGlu dCBhcmdjLCBjaGFyICoqYXJndikNCiAJCWluaXRSYW5kb21TdGF0ZSgmc3Rh dGVbaV0uY3NfZnVuY19ycyk7DQogCX0NCiANCi0JaWYgKGRlYnVnKQ0KKwlp ZiAoZGVidWdfbGV2ZWwpDQogCXsNCiAJCWlmIChkdXJhdGlvbiA8PSAwKQ0K IAkJCXByaW50ZigicGdob3N0OiAlcyBwZ3BvcnQ6ICVzIG5jbGllbnRzOiAl ZCBueGFjdHM6ICVkIGRiTmFtZTogJXNcbiIsDQpAQCAtNjA1NSw4ICs2MDE0 LDggQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpDQogDQogCWlmIChQ UXN0YXR1cyhjb24pID09IENPTk5FQ1RJT05fQkFEKQ0KIAl7DQotCQlmcHJp bnRmKHN0ZGVyciwgImNvbm5lY3Rpb24gdG8gZGF0YWJhc2UgXCIlc1wiIGZh aWxlZFxuIiwgZGJOYW1lKTsNCi0JCWZwcmludGYoc3RkZXJyLCAiJXMiLCBQ UWVycm9yTWVzc2FnZShjb24pKTsNCisJCWZhdGFsKCJjb25uZWN0aW9uIHRv IGRhdGFiYXNlIFwiJXNcIiBmYWlsZWQiLCBkYk5hbWUpOw0KKwkJZmF0YWwo IiVzIiwgUFFlcnJvck1lc3NhZ2UoY29uKSk7DQogCQlleGl0KDEpOw0KIAl9 DQogDQpAQCAtNjE3Niw3ICs2MTM1LDcgQEAgbWFpbihpbnQgYXJnYywgY2hh ciAqKmFyZ3YpDQogDQogCQkJaWYgKGVyciAhPSAwIHx8IHRocmVhZC0+dGhy ZWFkID09IElOVkFMSURfVEhSRUFEKQ0KIAkJCXsNCi0JCQkJZnByaW50Zihz dGRlcnIsICJjb3VsZCBub3QgY3JlYXRlIHRocmVhZDogJXNcbiIsIHN0cmVy cm9yKGVycikpOw0KKwkJCQlmYXRhbCgiY291bGQgbm90IGNyZWF0ZSB0aHJl YWQ6ICVtIik7DQogCQkJCWV4aXQoMSk7DQogCQkJfQ0KIAkJfQ0KQEAgLTYy NDEsNyArNjIwMCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQ0K IAlwcmludFJlc3VsdHMoJnN0YXRzLCB0b3RhbF90aW1lLCBjb25uX3RvdGFs X3RpbWUsIGxhdGVuY3lfbGF0ZSk7DQogDQogCWlmIChleGl0X2NvZGUgIT0g MCkNCi0JCWZwcmludGYoc3RkZXJyLCAiUnVuIHdhcyBhYm9ydGVkOyB0aGUg YWJvdmUgcmVzdWx0cyBhcmUgaW5jb21wbGV0ZS5cbiIpOw0KKwkJZmF0YWwo IlJ1biB3YXMgYWJvcnRlZDsgdGhlIGFib3ZlIHJlc3VsdHMgYXJlIGluY29t cGxldGUuIik7DQogDQogCXJldHVybiBleGl0X2NvZGU7DQogfQ0KQEAgLTYy OTQsOCArNjI1Myw3IEBAIHRocmVhZFJ1bih2b2lkICphcmcpDQogDQogCQlp ZiAodGhyZWFkLT5sb2dmaWxlID09IE5VTEwpDQogCQl7DQotCQkJZnByaW50 ZihzdGRlcnIsICJjb3VsZCBub3Qgb3BlbiBsb2dmaWxlIFwiJXNcIjogJXNc biIsDQotCQkJCQlsb2dwYXRoLCBzdHJlcnJvcihlcnJubykpOw0KKwkJCWZh dGFsKCJjb3VsZCBub3Qgb3BlbiBsb2dmaWxlIFwiJXNcIjogJW0iLCBsb2dw YXRoKTsNCiAJCQlnb3RvIGRvbmU7DQogCQl9DQogCX0NCkBAIC02MzY4LDgg KzYzMjYsNyBAQCB0aHJlYWRSdW4odm9pZCAqYXJnKQ0KIA0KIAkJCQlpZiAo c29jayA8IDApDQogCQkJCXsNCi0JCQkJCWZwcmludGYoc3RkZXJyLCAiaW52 YWxpZCBzb2NrZXQ6ICVzIiwNCi0JCQkJCQkJUFFlcnJvck1lc3NhZ2Uoc3Qt PmNvbikpOw0KKwkJCQkJZXJyb3IoImludmFsaWQgc29ja2V0OiAlcyIsIFBR ZXJyb3JNZXNzYWdlKHN0LT5jb24pKTsNCiAJCQkJCWdvdG8gZG9uZTsNCiAJ CQkJfQ0KIA0KQEAgLTY0MzcsNyArNjM5NCw3IEBAIHRocmVhZFJ1bih2b2lk ICphcmcpDQogCQkJCQljb250aW51ZTsNCiAJCQkJfQ0KIAkJCQkvKiBtdXN0 IGJlIHNvbWV0aGluZyB3cm9uZyAqLw0KLQkJCQlmcHJpbnRmKHN0ZGVyciwg IiVzKCkgZmFpbGVkOiAlc1xuIiwgU09DS0VUX1dBSVRfTUVUSE9ELCBzdHJl cnJvcihlcnJubykpOw0KKwkJCQlmYXRhbCgiJXMoKSBmYWlsZWQ6ICVtIiwg U09DS0VUX1dBSVRfTUVUSE9EKTsNCiAJCQkJZ290byBkb25lOw0KIAkJCX0N CiAJCX0NCkBAIC02NDYyLDggKzY0MTksNyBAQCB0aHJlYWRSdW4odm9pZCAq YXJnKQ0KIA0KIAkJCQlpZiAoc29jayA8IDApDQogCQkJCXsNCi0JCQkJCWZw cmludGYoc3RkZXJyLCAiaW52YWxpZCBzb2NrZXQ6ICVzIiwNCi0JCQkJCQkJ UFFlcnJvck1lc3NhZ2Uoc3QtPmNvbikpOw0KKwkJCQkJZXJyb3IoImludmFs aWQgc29ja2V0OiAlcyIsIFBRZXJyb3JNZXNzYWdlKHN0LT5jb24pKTsNCiAJ CQkJCWdvdG8gZG9uZTsNCiAJCQkJfQ0KIA0KQEAgLTY1ODcsNyArNjU0Myw3 IEBAIHNldGFsYXJtKGludCBzZWNvbmRzKQ0KIAkJCQkJCQkgICB3aW4zMl90 aW1lcl9jYWxsYmFjaywgTlVMTCwgc2Vjb25kcyAqIDEwMDAsIDAsDQogCQkJ CQkJCSAgIFdUX0VYRUNVVEVJTlRJTUVSVEhSRUFEIHwgV1RfRVhFQ1VURU9O TFlPTkNFKSkNCiAJew0KLQkJZnByaW50ZihzdGRlcnIsICJmYWlsZWQgdG8g c2V0IHRpbWVyXG4iKTsNCisJCWZhdGFsKCJmYWlsZWQgdG8gc2V0IHRpbWVy Iik7DQogCQlleGl0KDEpOw0KIAl9DQogfQ0KQEAgLTY3MzMsNyArNjY4OSw3 IEBAIGFkZF9zb2NrZXRfdG9fc2V0KHNvY2tldF9zZXQgKnNhLCBpbnQgZmQs IGludCBpZHgpDQogCQkgKiBEb2luZyBhIGhhcmQgZXhpdCBoZXJlIGlzIGEg Yml0IGdyb3R0eSwgYnV0IGl0IGRvZXNuJ3Qgc2VlbSB3b3J0aA0KIAkJICog Y29tcGxpY2F0aW5nIHRoZSBBUEkgdG8gbWFrZSBpdCBsZXNzIGdyb3R0eS4N CiAJCSAqLw0KLQkJZnByaW50ZihzdGRlcnIsICJ0b28gbWFueSBjbGllbnQg Y29ubmVjdGlvbnMgZm9yIHNlbGVjdCgpXG4iKTsNCisJCWZhdGFsKCJ0b28g bWFueSBjbGllbnQgY29ubmVjdGlvbnMgZm9yIHNlbGVjdCgpIik7DQogCQll eGl0KDEpOw0KIAl9DQogCUZEX1NFVChmZCwgJnNhLT5mZHMpOw0KZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdiZW5jaC90LzAwMl9wZ2JlbmNoX25vX3NlcnZl ci5wbCBiL3NyYy9iaW4vcGdiZW5jaC90LzAwMl9wZ2JlbmNoX25vX3NlcnZl ci5wbA0KaW5kZXggOGI2ZDQ0MjgxMi4uZmU1NTUzMzE0MSAxMDA2NDQNCi0t LSBhL3NyYy9iaW4vcGdiZW5jaC90LzAwMl9wZ2JlbmNoX25vX3NlcnZlci5w bA0KKysrIGIvc3JjL2Jpbi9wZ2JlbmNoL3QvMDAyX3BnYmVuY2hfbm9fc2Vy dmVyLnBsDQpAQCAtMTU3LDcgKzE1Nyw3IEBAIG15IEBvcHRpb25zID0gKA0K IAkJCXFye2Vycm9yIHdoaWxlIHNldHRpbmcgcmFuZG9tIHNlZWQgZnJvbSAt LXJhbmRvbS1zZWVkIG9wdGlvbn0NCiAJCV0NCiAJXSwNCi0JWyAnYmFkIHBh cnRpdGlvbiB0eXBlJywgJy1pIC0tcGFydGl0aW9uLW1ldGhvZD1CQUQnLCBb cXJ7InJhbmdlIn0sIHFyeyJoYXNoIn0sIHFyeyJCQUQifV0gXSwNCisJWyAn YmFkIHBhcnRpdGlvbiBtZXRob2QnLCAnLWkgLS1wYXJ0aXRpb24tbWV0aG9k PUJBRCcsIFtxcnsicmFuZ2UifSwgcXJ7Imhhc2gifSwgcXJ7IkJBRCJ9XSBd LA0KIAlbICdiYWQgcGFydGl0aW9uIG51bWJlcicsICctaSAtLXBhcnRpdGlv bnMgLTEnLCBbIHFye2ludmFsaWQgbnVtYmVyIG9mIHBhcnRpdGlvbnM6ICIt MSJ9IF0gXSwNCiAJWw0KIAkJJ3BhcnRpdGlvbiBtZXRob2Qgd2l0aG91dCBw YXJ0aXRpb25pbmcnLA0K --2056645051-626870154-1577182652=:3339--