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 1nZy41-0008TA-LG for pgsql-hackers@arkaria.postgresql.org; Thu, 31 Mar 2022 16:54:26 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nZy40-0004ak-JB for pgsql-hackers@arkaria.postgresql.org; Thu, 31 Mar 2022 16:54:24 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nZy40-0004ab-58 for pgsql-hackers@lists.postgresql.org; Thu, 31 Mar 2022 16:54:24 +0000 Received: from sfr-1.cri.mines-paristech.fr ([77.158.180.225] helo=smtp.cri.ensmp.fr) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nZy3v-00078B-Fq for pgsql-hackers@lists.postgresql.org; Thu, 31 Mar 2022 16:54:23 +0000 Received: from pseudo (185.141.6.84.rev.sfr.net [84.6.141.185]) by smtp.cri.ensmp.fr (Postfix) with ESMTPSA id 0115EC00AA; Thu, 31 Mar 2022 18:57:41 +0200 (CEST) Date: Thu, 31 Mar 2022 18:54:17 +0200 (CEST) From: Fabien COELHO X-X-Sender: fabien@pseudo Reply-To: Fabien COELHO To: Peter Eisentraut cc: "pgsql-hackers@lists.postgresql.org" Subject: Re: psql - add SHOW_ALL_RESULTS option In-Reply-To: Message-ID: References: <18c78a01-4a34-9dd4-f78b-6860f1420c8e@enterprisedb.com> <2570e2ae-fa0f-aac9-f72f-bb59a9983a20@enterprisedb.com> <46259d13-5f90-1475-3c85-d7a597a2b862@enterprisedb.com> <20220113054433.wdjhidtm7gvyhfts@alap3.anarazel.de> <805c0496-d60d-802b-3d61-73fed38dea16@enterprisedb.com> <63350f81-6a43-f536-24e6-b30f48797732@enterprisedb.com> User-Agent: Alpine 2.22 (DEB 394 2020-01-19) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="2056645051-273700721-1648745657=:1072349" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: 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-273700721-1648745657=:1072349 Content-Type: text/plain; charset=US-ASCII; format=flowed Attached a rebase. -- Fabien. --2056645051-273700721-1648745657=:1072349 Content-Type: text/x-diff; name=psql-show-all-results-19.patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=psql-show-all-results-19.patch ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVj dGVkL3BnX3N0YXRfc3RhdGVtZW50cy5vdXQgYi9jb250cmliL3BnX3N0YXRf c3RhdGVtZW50cy9leHBlY3RlZC9wZ19zdGF0X3N0YXRlbWVudHMub3V0DQpp bmRleCBlMGFiZTM0YmI2Li44ZjdmOTMxNzJhIDEwMDY0NA0KLS0tIGEvY29u dHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvcGdfc3RhdF9zdGF0 ZW1lbnRzLm91dA0KKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMv ZXhwZWN0ZWQvcGdfc3RhdF9zdGF0ZW1lbnRzLm91dA0KQEAgLTUwLDggKzUw LDI4IEBAIEJFR0lOIFw7DQogU0VMRUNUIDIuMCBBUyAiZmxvYXQiIFw7DQog U0VMRUNUICd3b3JsZCcgQVMgInRleHQiIFw7DQogQ09NTUlUOw0KKyBmbG9h dCANCistLS0tLS0tDQorICAgMi4wDQorKDEgcm93KQ0KKw0KKyB0ZXh0ICAN CistLS0tLS0tDQorIHdvcmxkDQorKDEgcm93KQ0KKw0KIC0tIGNvbXBvdW5k IHdpdGggZW1wdHkgc3RhdGVtZW50cyBhbmQgc3B1cmlvdXMgbGVhZGluZyBz cGFjaW5nDQogXDtcOyAgIFNFTEVDVCAzICsgMyBcO1w7XDsgICBTRUxFQ1Qg JyAnIHx8ICcgIScgXDtcOyAgIFNFTEVDVCAxICsgNCBcOzsNCisgP2NvbHVt bj8gDQorLS0tLS0tLS0tLQ0KKyAgICAgICAgNg0KKygxIHJvdykNCisNCisg P2NvbHVtbj8gDQorLS0tLS0tLS0tLQ0KKyAgICENCisoMSByb3cpDQorDQog ID9jb2x1bW4/IA0KIC0tLS0tLS0tLS0NCiAgICAgICAgIDUNCkBAIC02MSw2 ICs4MSwxMSBAQCBDT01NSVQ7DQogU0VMRUNUIDEgKyAxICsgMSBBUyAiYWRk IiBcZ3NldA0KIFNFTEVDVCA6YWRkICsgMSArIDEgQVMgImFkZCIgXDsNCiBT RUxFQ1QgOmFkZCArIDEgKyAxIEFTICJhZGQiIFxnc2V0DQorIGFkZCANCist LS0tLQ0KKyAgIDUNCisoMSByb3cpDQorDQogLS0gc2V0IG9wZXJhdG9yDQog U0VMRUNUIDEgQVMgaSBVTklPTiBTRUxFQ1QgMiBPUkRFUiBCWSBpOw0KICBp IA0KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dt bCBiL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbA0KaW5kZXggY2Fh YmIwNmM1My4uZjAxYWRiMWZkMiAxMDA2NDQNCi0tLSBhL2RvYy9zcmMvc2dt bC9yZWYvcHNxbC1yZWYuc2dtbA0KKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9w c3FsLXJlZi5zZ21sDQpAQCAtMTI3LDE4ICsxMjcsMTEgQEAgZWNobyAnXHgg XFwgU0VMRUNUICogRlJPTSBmb287JyB8IHBzcWwNCiAgICAgICAgY29tbWFu ZHMgaW5jbHVkZWQgaW4gdGhlIHN0cmluZyB0byBkaXZpZGUgaXQgaW50byBt dWx0aXBsZQ0KICAgICAgICB0cmFuc2FjdGlvbnMuICAoU2VlIDx4cmVmIGxp bmtlbmQ9InByb3RvY29sLWZsb3ctbXVsdGktc3RhdGVtZW50Ii8+DQogICAg ICAgIGZvciBtb3JlIGRldGFpbHMgYWJvdXQgaG93IHRoZSBzZXJ2ZXIgaGFu ZGxlcyBtdWx0aS1xdWVyeSBzdHJpbmdzLikNCi0gICAgICAgQWxzbywgPGFw cGxpY2F0aW9uPnBzcWw8L2FwcGxpY2F0aW9uPiBvbmx5IHByaW50cyB0aGUN Ci0gICAgICAgcmVzdWx0IG9mIHRoZSBsYXN0IDxhY3JvbnltPlNRTDwvYWNy b255bT4gY29tbWFuZCBpbiB0aGUgc3RyaW5nLg0KLSAgICAgICBUaGlzIGlz IGRpZmZlcmVudCBmcm9tIHRoZSBiZWhhdmlvciB3aGVuIHRoZSBzYW1lIHN0 cmluZyBpcyByZWFkIGZyb20NCi0gICAgICAgYSBmaWxlIG9yIGZlZCB0byA8 YXBwbGljYXRpb24+cHNxbDwvYXBwbGljYXRpb24+J3Mgc3RhbmRhcmQgaW5w dXQsDQotICAgICAgIGJlY2F1c2UgdGhlbiA8YXBwbGljYXRpb24+cHNxbDwv YXBwbGljYXRpb24+IHNlbmRzDQotICAgICAgIGVhY2ggPGFjcm9ueW0+U1FM PC9hY3JvbnltPiBjb21tYW5kIHNlcGFyYXRlbHkuDQogICAgICAgPC9wYXJh Pg0KICAgICAgIDxwYXJhPg0KLSAgICAgICBCZWNhdXNlIG9mIHRoaXMgYmVo YXZpb3IsIHB1dHRpbmcgbW9yZSB0aGFuIG9uZSBTUUwgY29tbWFuZCBpbiBh DQotICAgICAgIHNpbmdsZSA8b3B0aW9uPi1jPC9vcHRpb24+IHN0cmluZyBv ZnRlbiBoYXMgdW5leHBlY3RlZCByZXN1bHRzLg0KLSAgICAgICBJdCdzIGJl dHRlciB0byB1c2UgcmVwZWF0ZWQgPG9wdGlvbj4tYzwvb3B0aW9uPiBjb21t YW5kcyBvciBmZWVkDQotICAgICAgIG11bHRpcGxlIGNvbW1hbmRzIHRvIDxh cHBsaWNhdGlvbj5wc3FsPC9hcHBsaWNhdGlvbj4ncyBzdGFuZGFyZCBpbnB1 dCwNCisgICAgICAgSWYgaGF2aW5nIHNldmVyYWwgY29tbWFuZHMgZXhlY3V0 ZWQgaW4gb25lIHRyYW5zYWN0aW9uIGlzIG5vdCBkZXNpcmVkLCANCisgICAg ICAgdXNlIHJlcGVhdGVkIDxvcHRpb24+LWM8L29wdGlvbj4gY29tbWFuZHMg b3IgZmVlZCBtdWx0aXBsZSBjb21tYW5kcyB0bw0KKyAgICAgICA8YXBwbGlj YXRpb24+cHNxbDwvYXBwbGljYXRpb24+J3Mgc3RhbmRhcmQgaW5wdXQsDQog ICAgICAgIGVpdGhlciB1c2luZyA8YXBwbGljYXRpb24+ZWNobzwvYXBwbGlj YXRpb24+IGFzIGlsbHVzdHJhdGVkIGFib3ZlLCBvcg0KICAgICAgICB2aWEg YSBzaGVsbCBoZXJlLWRvY3VtZW50LCBmb3IgZXhhbXBsZToNCiA8cHJvZ3Jh bWxpc3Rpbmc+DQpAQCAtMzU3MCwxMCArMzU2Myw2IEBAIHNlbGVjdCAxXDsg c2VsZWN0IDJcOyBzZWxlY3QgMzsNCiAgICAgICAgIGNvbW1hbmRzIGluY2x1 ZGVkIGluIHRoZSBzdHJpbmcgdG8gZGl2aWRlIGl0IGludG8gbXVsdGlwbGUN CiAgICAgICAgIHRyYW5zYWN0aW9ucy4gIChTZWUgPHhyZWYgbGlua2VuZD0i cHJvdG9jb2wtZmxvdy1tdWx0aS1zdGF0ZW1lbnQiLz4NCiAgICAgICAgIGZv ciBtb3JlIGRldGFpbHMgYWJvdXQgaG93IHRoZSBzZXJ2ZXIgaGFuZGxlcyBt dWx0aS1xdWVyeSBzdHJpbmdzLikNCi0gICAgICAgIDxhcHBsaWNhdGlvbj5w c3FsPC9hcHBsaWNhdGlvbj4gcHJpbnRzIG9ubHkgdGhlIGxhc3QgcXVlcnkg cmVzdWx0DQotICAgICAgICBpdCByZWNlaXZlcyBmb3IgZWFjaCByZXF1ZXN0 OyBpbiB0aGlzIGV4YW1wbGUsIGFsdGhvdWdoIGFsbA0KLSAgICAgICAgdGhy ZWUgPGNvbW1hbmQ+U0VMRUNUPC9jb21tYW5kPnMgYXJlIGluZGVlZCBleGVj dXRlZCwgPGFwcGxpY2F0aW9uPnBzcWw8L2FwcGxpY2F0aW9uPg0KLSAgICAg ICAgb25seSBwcmludHMgdGhlIDxsaXRlcmFsPjM8L2xpdGVyYWw+Lg0KICAg ICAgICAgPC9wYXJhPg0KICAgICAgICAgPC9saXN0aXRlbT4NCiAgICAgICA8 L3Zhcmxpc3RlbnRyeT4NCkBAIC00MTYwLDYgKzQxNDksMTggQEAgYmFyDQog ICAgICAgPC92YXJsaXN0ZW50cnk+DQogDQogICAgICAgPHZhcmxpc3RlbnRy eT4NCisgICAgICAgIDx0ZXJtPjx2YXJuYW1lPlNIT1dfQUxMX1JFU1VMVFM8 L3Zhcm5hbWU+PC90ZXJtPg0KKyAgICAgICAgPGxpc3RpdGVtPg0KKyAgICAg ICAgPHBhcmE+DQorICAgICAgICBXaGVuIHRoaXMgdmFyaWFibGUgaXMgc2V0 IHRvIDxsaXRlcmFsPm9mZjwvbGl0ZXJhbD4sIG9ubHkgdGhlIGxhc3QNCisg ICAgICAgIHJlc3VsdCBvZiBhIGNvbWJpbmVkIHF1ZXJ5ICg8bGl0ZXJhbD5c OzwvbGl0ZXJhbD4pIGlzIHNob3duIGluc3RlYWQgb2YNCisgICAgICAgIGFs bCBvZiB0aGVtLiAgVGhlIGRlZmF1bHQgaXMgPGxpdGVyYWw+b248L2xpdGVy YWw+LiAgVGhlIG9mZiBiZWhhdmlvcg0KKyAgICAgICAgaXMgZm9yIGNvbXBh dGliaWxpdHkgd2l0aCBvbGRlciB2ZXJzaW9ucyBvZiBwc3FsLg0KKyAgICAg ICAgPC9wYXJhPg0KKyAgICAgICAgPC9saXN0aXRlbT4NCisgICAgICA8L3Zh cmxpc3RlbnRyeT4NCisNCisgICAgICAgPHZhcmxpc3RlbnRyeT4NCiAgICAg ICAgIDx0ZXJtPjx2YXJuYW1lPlNIT1dfQ09OVEVYVDwvdmFybmFtZT48L3Rl cm0+DQogICAgICAgICA8bGlzdGl0ZW0+DQogICAgICAgICA8cGFyYT4NCmRp ZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvY29tbW9uLmMgYi9zcmMvYmluL3Bz cWwvY29tbW9uLmMNCmluZGV4IGQ2NWI5YTEyNGYuLmM4NDY4OGU4OWMgMTAw NjQ0DQotLS0gYS9zcmMvYmluL3BzcWwvY29tbW9uLmMNCisrKyBiL3NyYy9i aW4vcHNxbC9jb21tb24uYw0KQEAgLTM0LDYgKzM0LDggQEAgc3RhdGljIGJv b2wgRGVzY3JpYmVRdWVyeShjb25zdCBjaGFyICpxdWVyeSwgZG91YmxlICpl bGFwc2VkX21zZWMpOw0KIHN0YXRpYyBib29sIEV4ZWNRdWVyeVVzaW5nQ3Vy c29yKGNvbnN0IGNoYXIgKnF1ZXJ5LCBkb3VibGUgKmVsYXBzZWRfbXNlYyk7 DQogc3RhdGljIGJvb2wgY29tbWFuZF9ub19iZWdpbihjb25zdCBjaGFyICpx dWVyeSk7DQogc3RhdGljIGJvb2wgaXNfc2VsZWN0X2NvbW1hbmQoY29uc3Qg Y2hhciAqcXVlcnkpOw0KK3N0YXRpYyBpbnQgU2VuZFF1ZXJ5QW5kUHJvY2Vz c1Jlc3VsdHMoY29uc3QgY2hhciAqcXVlcnksIGRvdWJsZSAqcGVsYXBzZWRf bXNlYywNCisJYm9vbCBpc193YXRjaCwgY29uc3QgcHJpbnRRdWVyeU9wdCAq b3B0LCBGSUxFICpwcmludFF1ZXJ5Rm91dCwgYm9vbCAqdHhfZW5kZWQpOw0K IA0KIA0KIC8qDQpAQCAtMzU0LDcgKzM1Niw3IEBAIENoZWNrQ29ubmVjdGlv bih2b2lkKQ0KICAqIFJldHVybnMgdHJ1ZSBmb3IgdmFsaWQgcmVzdWx0LCBm YWxzZSBmb3IgZXJyb3Igc3RhdGUuDQogICovDQogc3RhdGljIGJvb2wNCi1B Y2NlcHRSZXN1bHQoY29uc3QgUEdyZXN1bHQgKnJlc3VsdCkNCitBY2NlcHRS ZXN1bHQoY29uc3QgUEdyZXN1bHQgKnJlc3VsdCwgYm9vbCBzaG93X2Vycm9y KQ0KIHsNCiAJYm9vbAkJT0s7DQogDQpAQCAtMzg1LDcgKzM4Nyw3IEBAIEFj Y2VwdFJlc3VsdChjb25zdCBQR3Jlc3VsdCAqcmVzdWx0KQ0KIAkJCQlicmVh azsNCiAJCX0NCiANCi0JaWYgKCFPSykNCisJaWYgKCFPSyAmJiBzaG93X2Vy cm9yKQ0KIAl7DQogCQljb25zdCBjaGFyICplcnJvciA9IFBRZXJyb3JNZXNz YWdlKHBzZXQuZGIpOw0KIA0KQEAgLTQ3Myw2ICs0NzUsMTggQEAgQ2xlYXJP clNhdmVSZXN1bHQoUEdyZXN1bHQgKnJlc3VsdCkNCiAJfQ0KIH0NCiANCisv Kg0KKyAqIENvbnN1bWUgYWxsIHJlc3VsdHMNCisgKi8NCitzdGF0aWMgdm9p ZA0KK0NsZWFyT3JTYXZlQWxsUmVzdWx0cygpDQorew0KKwlQR3Jlc3VsdAkq cmVzdWx0Ow0KKw0KKwl3aGlsZSAoKHJlc3VsdCA9IFBRZ2V0UmVzdWx0KHBz ZXQuZGIpKSAhPSBOVUxMKQ0KKwkJQ2xlYXJPclNhdmVSZXN1bHQocmVzdWx0 KTsNCit9DQorDQogDQogLyoNCiAgKiBQcmludCBtaWNyb3RpbWluZyBvdXRw dXQuICBBbHdheXMgcHJpbnQgcmF3IG1pbGxpc2Vjb25kczsgaWYgdGhlIGlu dGVydmFsDQpAQCAtNTczLDcgKzU4Nyw3IEBAIFBTUUxleGVjKGNvbnN0IGNo YXIgKnF1ZXJ5KQ0KIA0KIAlSZXNldENhbmNlbENvbm4oKTsNCiANCi0JaWYg KCFBY2NlcHRSZXN1bHQocmVzKSkNCisJaWYgKCFBY2NlcHRSZXN1bHQocmVz LCB0cnVlKSkNCiAJew0KIAkJQ2xlYXJPclNhdmVSZXN1bHQocmVzKTsNCiAJ CXJlcyA9IE5VTEw7DQpAQCAtNTk2LDExICs2MTAsOCBAQCBpbnQNCiBQU1FM ZXhlY1dhdGNoKGNvbnN0IGNoYXIgKnF1ZXJ5LCBjb25zdCBwcmludFF1ZXJ5 T3B0ICpvcHQsIEZJTEUgKnByaW50UXVlcnlGb3V0KQ0KIHsNCiAJYm9vbAkJ dGltaW5nID0gcHNldC50aW1pbmc7DQotCVBHcmVzdWx0ICAgKnJlczsNCiAJ ZG91YmxlCQllbGFwc2VkX21zZWMgPSAwOw0KLQlpbnN0cl90aW1lCWJlZm9y ZTsNCi0JaW5zdHJfdGltZQlhZnRlcjsNCi0JRklMRQkgICAqZm91dDsNCisJ aW50CQkJcmVzOw0KIA0KIAlpZiAoIXBzZXQuZGIpDQogCXsNCkBAIC02MDks NzcgKzYyMCwxNCBAQCBQU1FMZXhlY1dhdGNoKGNvbnN0IGNoYXIgKnF1ZXJ5 LCBjb25zdCBwcmludFF1ZXJ5T3B0ICpvcHQsIEZJTEUgKnByaW50UXVlcnlG b3V0KQ0KIAl9DQogDQogCVNldENhbmNlbENvbm4ocHNldC5kYik7DQotDQot CWlmICh0aW1pbmcpDQotCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGJlZm9y ZSk7DQotDQotCXJlcyA9IFBRZXhlYyhwc2V0LmRiLCBxdWVyeSk7DQotDQor CXJlcyA9IFNlbmRRdWVyeUFuZFByb2Nlc3NSZXN1bHRzKHF1ZXJ5LCAmZWxh cHNlZF9tc2VjLCB0cnVlLCBvcHQsIHByaW50UXVlcnlGb3V0LCBOVUxMKTsN CiAJUmVzZXRDYW5jZWxDb25uKCk7DQogDQotCWlmICghQWNjZXB0UmVzdWx0 KHJlcykpDQotCXsNCi0JCUNsZWFyT3JTYXZlUmVzdWx0KHJlcyk7DQotCQly ZXR1cm4gMDsNCi0JfQ0KLQ0KLQlpZiAodGltaW5nKQ0KLQl7DQotCQlJTlNU Ul9USU1FX1NFVF9DVVJSRU5UKGFmdGVyKTsNCi0JCUlOU1RSX1RJTUVfU1VC VFJBQ1QoYWZ0ZXIsIGJlZm9yZSk7DQotCQllbGFwc2VkX21zZWMgPSBJTlNU Ul9USU1FX0dFVF9NSUxMSVNFQyhhZnRlcik7DQotCX0NCi0NCi0JLyoNCi0J ICogSWYgU0lHSU5UIGlzIHNlbnQgd2hpbGUgdGhlIHF1ZXJ5IGlzIHByb2Nl c3NpbmcsIHRoZSBpbnRlcnJ1cHQgd2lsbCBiZQ0KLQkgKiBjb25zdW1lZC4g IFRoZSB1c2VyJ3MgaW50ZW50aW9uLCB0aG91Z2gsIGlzIHRvIGNhbmNlbCB0 aGUgZW50aXJlIHdhdGNoDQotCSAqIHByb2Nlc3MsIHNvIGRldGVjdCBhIHNl bnQgY2FuY2VsbGF0aW9uIHJlcXVlc3QgYW5kIGV4aXQgaW4gdGhpcyBjYXNl Lg0KLQkgKi8NCi0JaWYgKGNhbmNlbF9wcmVzc2VkKQ0KLQl7DQotCQlQUWNs ZWFyKHJlcyk7DQotCQlyZXR1cm4gMDsNCi0JfQ0KLQ0KLQlmb3V0ID0gcHJp bnRRdWVyeUZvdXQgPyBwcmludFF1ZXJ5Rm91dCA6IHBzZXQucXVlcnlGb3V0 Ow0KLQ0KLQlzd2l0Y2ggKFBRcmVzdWx0U3RhdHVzKHJlcykpDQotCXsNCi0J CWNhc2UgUEdSRVNfVFVQTEVTX09LOg0KLQkJCXByaW50UXVlcnkocmVzLCBv cHQsIGZvdXQsIGZhbHNlLCBwc2V0LmxvZ2ZpbGUpOw0KLQkJCWJyZWFrOw0K LQ0KLQkJY2FzZSBQR1JFU19DT01NQU5EX09LOg0KLQkJCWZwcmludGYoZm91 dCwgIiVzXG4lc1xuXG4iLCBvcHQtPnRpdGxlLCBQUWNtZFN0YXR1cyhyZXMp KTsNCi0JCQlicmVhazsNCi0NCi0JCWNhc2UgUEdSRVNfRU1QVFlfUVVFUlk6 DQotCQkJcGdfbG9nX2Vycm9yKCJcXHdhdGNoIGNhbm5vdCBiZSB1c2VkIHdp dGggYW4gZW1wdHkgcXVlcnkiKTsNCi0JCQlQUWNsZWFyKHJlcyk7DQotCQkJ cmV0dXJuIC0xOw0KLQ0KLQkJY2FzZSBQR1JFU19DT1BZX09VVDoNCi0JCWNh c2UgUEdSRVNfQ09QWV9JTjoNCi0JCWNhc2UgUEdSRVNfQ09QWV9CT1RIOg0K LQkJCXBnX2xvZ19lcnJvcigiXFx3YXRjaCBjYW5ub3QgYmUgdXNlZCB3aXRo IENPUFkiKTsNCi0JCQlQUWNsZWFyKHJlcyk7DQotCQkJcmV0dXJuIC0xOw0K LQ0KLQkJZGVmYXVsdDoNCi0JCQlwZ19sb2dfZXJyb3IoInVuZXhwZWN0ZWQg cmVzdWx0IHN0YXR1cyBmb3IgXFx3YXRjaCIpOw0KLQkJCVBRY2xlYXIocmVz KTsNCi0JCQlyZXR1cm4gLTE7DQotCX0NCi0NCi0JUFFjbGVhcihyZXMpOw0K LQ0KLQlmZmx1c2goZm91dCk7DQotDQogCS8qIFBvc3NpYmxlIG1pY3JvdGlt aW5nIG91dHB1dCAqLw0KIAlpZiAodGltaW5nKQ0KIAkJUHJpbnRUaW1pbmco ZWxhcHNlZF9tc2VjKTsNCiANCi0JcmV0dXJuIDE7DQorCXJldHVybiByZXM7 DQogfQ0KIA0KIA0KQEAgLTcxNCw3ICs2NjIsNyBAQCBQcmludE5vdGlmaWNh dGlvbnModm9pZCkNCiAgKiBSZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bCwg ZmFsc2Ugb3RoZXJ3aXNlLg0KICAqLw0KIHN0YXRpYyBib29sDQotUHJpbnRR dWVyeVR1cGxlcyhjb25zdCBQR3Jlc3VsdCAqcmVzdWx0KQ0KK1ByaW50UXVl cnlUdXBsZXMoY29uc3QgUEdyZXN1bHQgKnJlc3VsdCwgY29uc3QgcHJpbnRR dWVyeU9wdCAqb3B0LCBGSUxFICpwcmludFF1ZXJ5Rm91dCkNCiB7DQogCWJv b2wJCW9rID0gdHJ1ZTsNCiANCkBAIC03NDYsOCArNjk0LDkgQEAgUHJpbnRR dWVyeVR1cGxlcyhjb25zdCBQR3Jlc3VsdCAqcmVzdWx0KQ0KIAl9DQogCWVs c2UNCiAJew0KLQkJcHJpbnRRdWVyeShyZXN1bHQsICZwc2V0LnBvcHQsIHBz ZXQucXVlcnlGb3V0LCBmYWxzZSwgcHNldC5sb2dmaWxlKTsNCi0JCWlmIChm ZXJyb3IocHNldC5xdWVyeUZvdXQpKQ0KKwkJRklMRSAqZm91dCA9IHByaW50 UXVlcnlGb3V0ID8gcHJpbnRRdWVyeUZvdXQgOiBwc2V0LnF1ZXJ5Rm91dDsN CisJCXByaW50UXVlcnkocmVzdWx0LCBvcHQgPyBvcHQgOiAmcHNldC5wb3B0 LCBmb3V0LCBmYWxzZSwgcHNldC5sb2dmaWxlKTsNCisJCWlmIChmZXJyb3Io Zm91dCkpDQogCQl7DQogCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgcHJp bnQgcmVzdWx0IHRhYmxlOiAlbSIpOw0KIAkJCW9rID0gZmFsc2U7DQpAQCAt ODkyLDIxMyArODQxLDEzMSBAQCBsb29wX2V4aXQ6DQogDQogDQogLyoNCi0g KiBQcm9jZXNzUmVzdWx0OiB1dGlsaXR5IGZ1bmN0aW9uIGZvciB1c2UgYnkg U2VuZFF1ZXJ5KCkgb25seQ0KLSAqDQotICogV2hlbiBvdXIgY29tbWFuZCBz dHJpbmcgY29udGFpbmVkIGEgQ09QWSBGUk9NIFNURElOIG9yIENPUFkgVE8g U1RET1VULA0KLSAqIFBRZXhlYygpIGhhcyBzdG9wcGVkIGF0IHRoZSBQR3Jl c3VsdCBhc3NvY2lhdGVkIHdpdGggdGhlIGZpcnN0IHN1Y2gNCi0gKiBjb21t YW5kLiAgSW4gdGhhdCBldmVudCwgd2UnbGwgbWFyc2hhbCBkYXRhIGZvciB0 aGUgQ09QWSBhbmQgdGhlbiBjeWNsZQ0KLSAqIHRocm91Z2ggYW55IHN1YnNl cXVlbnQgUEdyZXN1bHQgb2JqZWN0cy4NCi0gKg0KLSAqIFdoZW4gdGhlIGNv bW1hbmQgc3RyaW5nIGNvbnRhaW5lZCBubyBzdWNoIENPUFkgY29tbWFuZCwg dGhpcyBmdW5jdGlvbg0KLSAqIGRlZ2VuZXJhdGVzIHRvIGFuIEFjY2VwdFJl c3VsdCgpIGNhbGwuDQotICoNCi0gKiBDaGFuZ2VzIGl0cyBhcmd1bWVudCB0 byBwb2ludCB0byB0aGUgbGFzdCBQR3Jlc3VsdCBvZiB0aGUgY29tbWFuZCBz dHJpbmcsDQotICogb3IgTlVMTCBpZiB0aGF0IHJlc3VsdCB3YXMgZm9yIGEg Q09QWSBUTyBTVERPVVQuICAoUmV0dXJuaW5nIE5VTEwgcHJldmVudHMNCi0g KiB0aGUgY29tbWFuZCBzdGF0dXMgZnJvbSBiZWluZyBwcmludGVkLCB3aGlj aCB3ZSB3YW50IGluIHRoYXQgY2FzZSBzbyB0aGF0DQotICogdGhlIHN0YXR1 cyBsaW5lIGRvZXNuJ3QgZ2V0IHRha2VuIGFzIHBhcnQgb2YgdGhlIENPUFkg ZGF0YS4pDQotICoNCi0gKiBSZXR1cm5zIHRydWUgb24gY29tcGxldGUgc3Vj Y2VzcywgZmFsc2Ugb3RoZXJ3aXNlLiAgUG9zc2libGUgZmFpbHVyZSBtb2Rl cw0KLSAqIGluY2x1ZGUgcHVyZWx5IGNsaWVudC1zaWRlIHByb2JsZW1zOyBj aGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdHVzIGZvciB0aGUNCi0gKiBzZXJ2 ZXItc2lkZSBvcGluaW9uLg0KKyAqIE1hcnNoYWwgdGhlIENPUFkgZGF0YS4g IEVpdGhlciBzdWJyb3V0aW5lIHdpbGwgZ2V0IHRoZQ0KKyAqIGNvbm5lY3Rp b24gb3V0IG9mIGl0cyBDT1BZIHN0YXRlLCB0aGVuIGNhbGwgUFFyZXN1bHRT dGF0dXMoKQ0KKyAqIG9uY2UgYW5kIHJlcG9ydCBhbnkgZXJyb3IuIFJldHVy biB3aGV0aGVyIGFsbCB3YXMgb2suDQorICoNCisgKiBGb3IgQ09QWSBPVVQs IGRpcmVjdCB0aGUgb3V0cHV0IHRvIHBzZXQuY29weVN0cmVhbSBpZiBpdCdz IHNldCwNCisgKiBvdGhlcndpc2UgdG8gcHNldC5nZm5hbWUgaWYgaXQncyBz ZXQsIG90aGVyd2lzZSB0byBxdWVyeUZvdXQuDQorICogRm9yIENPUFkgSU4s IHVzZSBwc2V0LmNvcHlTdHJlYW0gYXMgZGF0YSBzb3VyY2UgaWYgaXQncyBz ZXQsDQorICogb3RoZXJ3aXNlIGN1cl9jbWRfc291cmNlLg0KKyAqDQorICog VXBkYXRlIHJlc3VsdCBpZiBmdXJ0aGVyIHByb2Nlc3NpbmcgaXMgbmVjZXNz YXJ5LCBvciBOVUxMIG90aGVyd2lzZS4NCisgKiBSZXR1cm4gYSByZXN1bHQg d2hlbiBxdWVyeUZvdXQgY2FuIHNhZmVseSBvdXRwdXQgYSByZXN1bHQgc3Rh dHVzOg0KKyAqIG9uIENPUFkgSU4sIG9yIG9uIENPUFkgT1VUIGlmIHdyaXR0 ZW4gdG8gc29tZXRoaW5nIG90aGVyIHRoYW4gcHNldC5xdWVyeUZvdXQuDQor ICogUmV0dXJuaW5nIE5VTEwgcHJldmVudHMgdGhlIGNvbW1hbmQgc3RhdHVz IGZyb20gYmVpbmcgcHJpbnRlZCwgd2hpY2gNCisgKiB3ZSB3YW50IGlmIHRo ZSBzdGF0dXMgbGluZSBkb2Vzbid0IGdldCB0YWtlbiBhcyBwYXJ0IG9mIHRo ZSBDT1BZIGRhdGEuDQogICovDQogc3RhdGljIGJvb2wNCi1Qcm9jZXNzUmVz dWx0KFBHcmVzdWx0ICoqcmVzdWx0cCkNCitIYW5kbGVDb3B5UmVzdWx0KFBH cmVzdWx0ICoqcmVzdWx0cCkNCiB7DQotCWJvb2wJCXN1Y2Nlc3MgPSB0cnVl Ow0KLQlib29sCQlmaXJzdF9jeWNsZSA9IHRydWU7DQorCWJvb2wJCXN1Y2Nl c3M7DQorCUZJTEUJICAgKmNvcHlzdHJlYW07DQorCVBHcmVzdWx0ICAgKmNv cHlfcmVzdWx0Ow0KKwlFeGVjU3RhdHVzVHlwZSByZXN1bHRfc3RhdHVzID0g UFFyZXN1bHRTdGF0dXMoKnJlc3VsdHApOw0KIA0KLQlmb3IgKDs7KQ0KKwlB c3NlcnQocmVzdWx0X3N0YXR1cyA9PSBQR1JFU19DT1BZX09VVCB8fA0KKwkJ ICAgcmVzdWx0X3N0YXR1cyA9PSBQR1JFU19DT1BZX0lOKTsNCisNCisJU2V0 Q2FuY2VsQ29ubihwc2V0LmRiKTsNCisNCisJaWYgKHJlc3VsdF9zdGF0dXMg PT0gUEdSRVNfQ09QWV9PVVQpDQogCXsNCi0JCUV4ZWNTdGF0dXNUeXBlIHJl c3VsdF9zdGF0dXM7DQotCQlib29sCQlpc19jb3B5Ow0KLQkJUEdyZXN1bHQg ICAqbmV4dF9yZXN1bHQ7DQorCQlib29sCQluZWVkX2Nsb3NlID0gZmFsc2U7 DQorCQlib29sCQlpc19waXBlID0gZmFsc2U7DQogDQotCQlpZiAoIUFjY2Vw dFJlc3VsdCgqcmVzdWx0cCkpDQorCQlpZiAocHNldC5jb3B5U3RyZWFtKQ0K IAkJew0KLQkJCS8qDQotCQkJICogRmFpbHVyZSBhdCB0aGlzIHBvaW50IGlz IGFsd2F5cyBhIHNlcnZlci1zaWRlIGZhaWx1cmUgb3IgYQ0KLQkJCSAqIGZh aWx1cmUgdG8gc3VibWl0IHRoZSBjb21tYW5kIHN0cmluZy4gIEVpdGhlciB3 YXksIHdlJ3JlDQotCQkJICogZmluaXNoZWQgd2l0aCB0aGlzIGNvbW1hbmQg c3RyaW5nLg0KLQkJCSAqLw0KLQkJCXN1Y2Nlc3MgPSBmYWxzZTsNCi0JCQli cmVhazsNCisJCQkvKiBpbnZva2VkIGJ5IFxjb3B5ICovDQorCQkJY29weXN0 cmVhbSA9IHBzZXQuY29weVN0cmVhbTsNCiAJCX0NCi0NCi0JCXJlc3VsdF9z dGF0dXMgPSBQUXJlc3VsdFN0YXR1cygqcmVzdWx0cCk7DQotCQlzd2l0Y2gg KHJlc3VsdF9zdGF0dXMpDQorCQllbHNlIGlmIChwc2V0LmdmbmFtZSkNCiAJ CXsNCi0JCQljYXNlIFBHUkVTX0VNUFRZX1FVRVJZOg0KLQkJCWNhc2UgUEdS RVNfQ09NTUFORF9PSzoNCi0JCQljYXNlIFBHUkVTX1RVUExFU19PSzoNCi0J CQkJaXNfY29weSA9IGZhbHNlOw0KLQkJCQlicmVhazsNCi0NCi0JCQljYXNl IFBHUkVTX0NPUFlfT1VUOg0KLQkJCWNhc2UgUEdSRVNfQ09QWV9JTjoNCi0J CQkJaXNfY29weSA9IHRydWU7DQotCQkJCWJyZWFrOw0KLQ0KLQkJCWRlZmF1 bHQ6DQotCQkJCS8qIEFjY2VwdFJlc3VsdCgpIHNob3VsZCBoYXZlIGNhdWdo dCBhbnl0aGluZyBlbHNlLiAqLw0KLQkJCQlpc19jb3B5ID0gZmFsc2U7DQot CQkJCXBnX2xvZ19lcnJvcigidW5leHBlY3RlZCBQUXJlc3VsdFN0YXR1czog JWQiLCByZXN1bHRfc3RhdHVzKTsNCi0JCQkJYnJlYWs7DQotCQl9DQotDQot CQlpZiAoaXNfY29weSkNCi0JCXsNCi0JCQkvKg0KLQkJCSAqIE1hcnNoYWwg dGhlIENPUFkgZGF0YS4gIEVpdGhlciBzdWJyb3V0aW5lIHdpbGwgZ2V0IHRo ZQ0KLQkJCSAqIGNvbm5lY3Rpb24gb3V0IG9mIGl0cyBDT1BZIHN0YXRlLCB0 aGVuIGNhbGwgUFFyZXN1bHRTdGF0dXMoKQ0KLQkJCSAqIG9uY2UgYW5kIHJl cG9ydCBhbnkgZXJyb3IuDQotCQkJICoNCi0JCQkgKiBGb3IgQ09QWSBPVVQs IGRpcmVjdCB0aGUgb3V0cHV0IHRvIHBzZXQuY29weVN0cmVhbSBpZiBpdCdz IHNldCwNCi0JCQkgKiBvdGhlcndpc2UgdG8gcHNldC5nZm5hbWUgaWYgaXQn cyBzZXQsIG90aGVyd2lzZSB0byBxdWVyeUZvdXQuDQotCQkJICogRm9yIENP UFkgSU4sIHVzZSBwc2V0LmNvcHlTdHJlYW0gYXMgZGF0YSBzb3VyY2UgaWYg aXQncyBzZXQsDQotCQkJICogb3RoZXJ3aXNlIGN1cl9jbWRfc291cmNlLg0K LQkJCSAqLw0KLQkJCUZJTEUJICAgKmNvcHlzdHJlYW07DQotCQkJUEdyZXN1 bHQgICAqY29weV9yZXN1bHQ7DQotDQotCQkJU2V0Q2FuY2VsQ29ubihwc2V0 LmRiKTsNCi0JCQlpZiAocmVzdWx0X3N0YXR1cyA9PSBQR1JFU19DT1BZX09V VCkNCisJCQkvKiBpbnZva2VkIGJ5IFxnICovDQorCQkJaWYgKG9wZW5RdWVy eU91dHB1dEZpbGUocHNldC5nZm5hbWUsDQorCQkJCQkJCQkJJmNvcHlzdHJl YW0sICZpc19waXBlKSkNCiAJCQl7DQotCQkJCWJvb2wJCW5lZWRfY2xvc2Ug PSBmYWxzZTsNCi0JCQkJYm9vbAkJaXNfcGlwZSA9IGZhbHNlOw0KLQ0KLQkJ CQlpZiAocHNldC5jb3B5U3RyZWFtKQ0KLQkJCQl7DQotCQkJCQkvKiBpbnZv a2VkIGJ5IFxjb3B5ICovDQotCQkJCQljb3B5c3RyZWFtID0gcHNldC5jb3B5 U3RyZWFtOw0KLQkJCQl9DQotCQkJCWVsc2UgaWYgKHBzZXQuZ2ZuYW1lKQ0K LQkJCQl7DQotCQkJCQkvKiBpbnZva2VkIGJ5IFxnICovDQotCQkJCQlpZiAo b3BlblF1ZXJ5T3V0cHV0RmlsZShwc2V0LmdmbmFtZSwNCi0JCQkJCQkJCQkJ CSZjb3B5c3RyZWFtLCAmaXNfcGlwZSkpDQotCQkJCQl7DQotCQkJCQkJbmVl ZF9jbG9zZSA9IHRydWU7DQotCQkJCQkJaWYgKGlzX3BpcGUpDQotCQkJCQkJ CWRpc2FibGVfc2lncGlwZV90cmFwKCk7DQotCQkJCQl9DQotCQkJCQllbHNl DQotCQkJCQkJY29weXN0cmVhbSA9IE5VTEw7CS8qIGRpc2NhcmQgQ09QWSBk YXRhIGVudGlyZWx5ICovDQotCQkJCX0NCi0JCQkJZWxzZQ0KLQkJCQl7DQot CQkJCQkvKiBmYWxsIGJhY2sgdG8gdGhlIGdlbmVyaWMgcXVlcnkgb3V0cHV0 IHN0cmVhbSAqLw0KLQkJCQkJY29weXN0cmVhbSA9IHBzZXQucXVlcnlGb3V0 Ow0KLQkJCQl9DQotDQotCQkJCXN1Y2Nlc3MgPSBoYW5kbGVDb3B5T3V0KHBz ZXQuZGIsDQotCQkJCQkJCQkJCWNvcHlzdHJlYW0sDQotCQkJCQkJCQkJCSZj b3B5X3Jlc3VsdCkNCi0JCQkJCSYmIHN1Y2Nlc3MNCi0JCQkJCSYmIChjb3B5 c3RyZWFtICE9IE5VTEwpOw0KLQ0KLQkJCQkvKg0KLQkJCQkgKiBTdXBwcmVz cyBzdGF0dXMgcHJpbnRpbmcgaWYgdGhlIHJlcG9ydCB3b3VsZCBnbyB0byB0 aGUgc2FtZQ0KLQkJCQkgKiBwbGFjZSBhcyB0aGUgQ09QWSBkYXRhIGp1c3Qg d2VudC4gIE5vdGUgdGhpcyBkb2Vzbid0DQotCQkJCSAqIHByZXZlbnQgZXJy b3IgcmVwb3J0aW5nLCBzaW5jZSBoYW5kbGVDb3B5T3V0IGRpZCB0aGF0Lg0K LQkJCQkgKi8NCi0JCQkJaWYgKGNvcHlzdHJlYW0gPT0gcHNldC5xdWVyeUZv dXQpDQotCQkJCXsNCi0JCQkJCVBRY2xlYXIoY29weV9yZXN1bHQpOw0KLQkJ CQkJY29weV9yZXN1bHQgPSBOVUxMOw0KLQkJCQl9DQotDQotCQkJCWlmIChu ZWVkX2Nsb3NlKQ0KLQkJCQl7DQotCQkJCQkvKiBjbG9zZSBcZyBhcmd1bWVu dCBmaWxlL3BpcGUgKi8NCi0JCQkJCWlmIChpc19waXBlKQ0KLQkJCQkJew0K LQkJCQkJCXBjbG9zZShjb3B5c3RyZWFtKTsNCi0JCQkJCQlyZXN0b3JlX3Np Z3BpcGVfdHJhcCgpOw0KLQkJCQkJfQ0KLQkJCQkJZWxzZQ0KLQkJCQkJew0K LQkJCQkJCWZjbG9zZShjb3B5c3RyZWFtKTsNCi0JCQkJCX0NCi0JCQkJfQ0K KwkJCQluZWVkX2Nsb3NlID0gdHJ1ZTsNCisJCQkJaWYgKGlzX3BpcGUpDQor CQkJCQlkaXNhYmxlX3NpZ3BpcGVfdHJhcCgpOw0KIAkJCX0NCiAJCQllbHNl DQotCQkJew0KLQkJCQkvKiBDT1BZIElOICovDQotCQkJCWNvcHlzdHJlYW0g PSBwc2V0LmNvcHlTdHJlYW0gPyBwc2V0LmNvcHlTdHJlYW0gOiBwc2V0LmN1 cl9jbWRfc291cmNlOw0KLQkJCQlzdWNjZXNzID0gaGFuZGxlQ29weUluKHBz ZXQuZGIsDQotCQkJCQkJCQkJICAgY29weXN0cmVhbSwNCi0JCQkJCQkJCQkg ICBQUWJpbmFyeVR1cGxlcygqcmVzdWx0cCksDQotCQkJCQkJCQkJICAgJmNv cHlfcmVzdWx0KSAmJiBzdWNjZXNzOw0KLQkJCX0NCi0JCQlSZXNldENhbmNl bENvbm4oKTsNCi0NCi0JCQkvKg0KLQkJCSAqIFJlcGxhY2UgdGhlIFBHUkVT X0NPUFlfT1VUL0lOIHJlc3VsdCB3aXRoIENPUFkgY29tbWFuZCdzIGV4aXQN Ci0JCQkgKiBzdGF0dXMsIG9yIHdpdGggTlVMTCBpZiB3ZSB3YW50IHRvIHN1 cHByZXNzIHByaW50aW5nIGFueXRoaW5nLg0KLQkJCSAqLw0KLQkJCVBRY2xl YXIoKnJlc3VsdHApOw0KLQkJCSpyZXN1bHRwID0gY29weV9yZXN1bHQ7DQor CQkJCWNvcHlzdHJlYW0gPSBOVUxMOwkvKiBkaXNjYXJkIENPUFkgZGF0YSBl bnRpcmVseSAqLw0KIAkJfQ0KLQkJZWxzZSBpZiAoZmlyc3RfY3ljbGUpDQor CQllbHNlDQogCQl7DQotCQkJLyogZmFzdCBwYXRoOiBubyBDT1BZIGNvbW1h bmRzOyBQUWV4ZWMgdmlzaXRlZCBhbGwgcmVzdWx0cyAqLw0KLQkJCWJyZWFr Ow0KKwkJCS8qIGZhbGwgYmFjayB0byB0aGUgZ2VuZXJpYyBxdWVyeSBvdXRw dXQgc3RyZWFtICovDQorCQkJY29weXN0cmVhbSA9IHBzZXQucXVlcnlGb3V0 Ow0KIAkJfQ0KIA0KKwkJc3VjY2VzcyA9IGhhbmRsZUNvcHlPdXQocHNldC5k YiwNCisJCQkJCQkJCWNvcHlzdHJlYW0sDQorCQkJCQkJCQkmY29weV9yZXN1 bHQpDQorCQkJJiYgKGNvcHlzdHJlYW0gIT0gTlVMTCk7DQorDQogCQkvKg0K LQkJICogQ2hlY2sgUFFnZXRSZXN1bHQoKSBhZ2Fpbi4gIEluIHRoZSB0eXBp Y2FsIGNhc2Ugb2YgYSBzaW5nbGUtY29tbWFuZA0KLQkJICogc3RyaW5nLCBp dCB3aWxsIHJldHVybiBOVUxMLiAgT3RoZXJ3aXNlLCB3ZSdsbCBoYXZlIG90 aGVyIHJlc3VsdHMNCi0JCSAqIHRvIHByb2Nlc3MgdGhhdCBtYXkgaW5jbHVk ZSBvdGhlciBDT1BZcy4gIFdlIGtlZXAgdGhlIGxhc3QgcmVzdWx0Lg0KKwkJ ICogU3VwcHJlc3Mgc3RhdHVzIHByaW50aW5nIGlmIHRoZSByZXBvcnQgd291 bGQgZ28gdG8gdGhlIHNhbWUNCisJCSAqIHBsYWNlIGFzIHRoZSBDT1BZIGRh dGEganVzdCB3ZW50LiAgTm90ZSB0aGlzIGRvZXNuJ3QNCisJCSAqIHByZXZl bnQgZXJyb3IgcmVwb3J0aW5nLCBzaW5jZSBoYW5kbGVDb3B5T3V0IGRpZCB0 aGF0Lg0KIAkJICovDQotCQluZXh0X3Jlc3VsdCA9IFBRZ2V0UmVzdWx0KHBz ZXQuZGIpOw0KLQkJaWYgKCFuZXh0X3Jlc3VsdCkNCi0JCQlicmVhazsNCisJ CWlmIChjb3B5c3RyZWFtID09IHBzZXQucXVlcnlGb3V0KQ0KKwkJew0KKwkJ CVBRY2xlYXIoY29weV9yZXN1bHQpOw0KKwkJCWNvcHlfcmVzdWx0ID0gTlVM TDsNCisJCX0NCiANCi0JCVBRY2xlYXIoKnJlc3VsdHApOw0KLQkJKnJlc3Vs dHAgPSBuZXh0X3Jlc3VsdDsNCi0JCWZpcnN0X2N5Y2xlID0gZmFsc2U7DQor CQlpZiAobmVlZF9jbG9zZSkNCisJCXsNCisJCQkvKiBjbG9zZSBcZyBhcmd1 bWVudCBmaWxlL3BpcGUgKi8NCisJCQlpZiAoaXNfcGlwZSkNCisJCQl7DQor CQkJCXBjbG9zZShjb3B5c3RyZWFtKTsNCisJCQkJcmVzdG9yZV9zaWdwaXBl X3RyYXAoKTsNCisJCQl9DQorCQkJZWxzZQ0KKwkJCXsNCisJCQkJZmNsb3Nl KGNvcHlzdHJlYW0pOw0KKwkJCX0NCisJCX0NCisJfQ0KKwllbHNlDQorCXsN CisJCS8qIENPUFkgSU4gKi8NCisJCWNvcHlzdHJlYW0gPSBwc2V0LmNvcHlT dHJlYW0gPyBwc2V0LmNvcHlTdHJlYW0gOiBwc2V0LmN1cl9jbWRfc291cmNl Ow0KKwkJc3VjY2VzcyA9IGhhbmRsZUNvcHlJbihwc2V0LmRiLA0KKwkJCQkJ CQkgICBjb3B5c3RyZWFtLA0KKwkJCQkJCQkgICBQUWJpbmFyeVR1cGxlcygq cmVzdWx0cCksDQorCQkJCQkJCSAgICZjb3B5X3Jlc3VsdCk7DQogCX0NCiAN Ci0JU2V0UmVzdWx0VmFyaWFibGVzKCpyZXN1bHRwLCBzdWNjZXNzKTsNCi0N Ci0JLyogbWF5IG5lZWQgdGhpcyB0byByZWNvdmVyIGZyb20gY29ubiBsb3Nz IGR1cmluZyBDT1BZICovDQotCWlmICghZmlyc3RfY3ljbGUgJiYgIUNoZWNr Q29ubmVjdGlvbigpKQ0KLQkJcmV0dXJuIGZhbHNlOw0KKwlSZXNldENhbmNl bENvbm4oKTsNCisJUFFjbGVhcigqcmVzdWx0cCk7DQorCSpyZXN1bHRwID0g Y29weV9yZXN1bHQ7DQogDQogCXJldHVybiBzdWNjZXNzOw0KIH0NCiANCi0N CiAvKg0KICAqIFByaW50UXVlcnlTdGF0dXM6IHJlcG9ydCBjb21tYW5kIHN0 YXR1cyBhcyByZXF1aXJlZA0KICAqDQotICogTm90ZTogVXRpbGl0eSBmdW5j dGlvbiBmb3IgdXNlIGJ5IFByaW50UXVlcnlSZXN1bHQoKSBvbmx5Lg0KKyAq IE5vdGU6IFV0aWxpdHkgZnVuY3Rpb24gZm9yIHVzZSBieSBIYW5kbGVRdWVy eVJlc3VsdCgpIG9ubHkuDQogICovDQogc3RhdGljIHZvaWQNCi1QcmludFF1 ZXJ5U3RhdHVzKFBHcmVzdWx0ICpyZXN1bHQpDQorUHJpbnRRdWVyeVN0YXR1 cyhQR3Jlc3VsdCAqcmVzdWx0LCBGSUxFICpwcmludFF1ZXJ5Rm91dCkNCiB7 DQogCWNoYXIJCWJ1ZlsxNl07DQorCUZJTEUJICAgKmZvdXQgPSBwcmludFF1 ZXJ5Rm91dCA/IHByaW50UXVlcnlGb3V0IDogcHNldC5xdWVyeUZvdXQ7DQog DQogCWlmICghcHNldC5xdWlldCkNCiAJew0KIAkJaWYgKHBzZXQucG9wdC50 b3B0LmZvcm1hdCA9PSBQUklOVF9IVE1MKQ0KIAkJew0KLQkJCWZwdXRzKCI8 cD4iLCBwc2V0LnF1ZXJ5Rm91dCk7DQotCQkJaHRtbF9lc2NhcGVkX3ByaW50 KFBRY21kU3RhdHVzKHJlc3VsdCksIHBzZXQucXVlcnlGb3V0KTsNCi0JCQlm cHV0cygiPC9wPlxuIiwgcHNldC5xdWVyeUZvdXQpOw0KKwkJCWZwdXRzKCI8 cD4iLCBmb3V0KTsNCisJCQlodG1sX2VzY2FwZWRfcHJpbnQoUFFjbWRTdGF0 dXMocmVzdWx0KSwgZm91dCk7DQorCQkJZnB1dHMoIjwvcD5cbiIsIGZvdXQp Ow0KIAkJfQ0KIAkJZWxzZQ0KLQkJCWZwcmludGYocHNldC5xdWVyeUZvdXQs ICIlc1xuIiwgUFFjbWRTdGF0dXMocmVzdWx0KSk7DQorCQkJZnByaW50Zihm b3V0LCAiJXNcbiIsIFBRY21kU3RhdHVzKHJlc3VsdCkpOw0KIAl9DQogDQog CWlmIChwc2V0LmxvZ2ZpbGUpDQpAQCAtMTExMCw0MyArOTc3LDUwIEBAIFBy aW50UXVlcnlTdGF0dXMoUEdyZXN1bHQgKnJlc3VsdCkNCiANCiANCiAvKg0K LSAqIFByaW50UXVlcnlSZXN1bHQ6IHByaW50IG91dCAob3Igc3RvcmUgb3Ig ZXhlY3V0ZSkgcXVlcnkgcmVzdWx0IGFzIHJlcXVpcmVkDQotICoNCi0gKiBO b3RlOiBVdGlsaXR5IGZ1bmN0aW9uIGZvciB1c2UgYnkgU2VuZFF1ZXJ5KCkg b25seS4NCisgKiBIYW5kbGVRdWVyeVJlc3VsdDogcHJpbnQgb3V0LCBzdG9y ZSBvciBleGVjdXRlIG9uZSBxdWVyeSByZXN1bHQNCisgKiBhcyByZXF1aXJl ZC4NCiAgKg0KICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcXVlcnkgZXhlY3V0 ZWQgc3VjY2Vzc2Z1bGx5LCBmYWxzZSBvdGhlcndpc2UuDQogICovDQogc3Rh dGljIGJvb2wNCi1QcmludFF1ZXJ5UmVzdWx0KFBHcmVzdWx0ICpyZXN1bHQp DQorSGFuZGxlUXVlcnlSZXN1bHQoUEdyZXN1bHQgKnJlc3VsdCwgYm9vbCBs YXN0LCBib29sIGlzX3dhdGNoLCBjb25zdCBwcmludFF1ZXJ5T3B0ICpvcHQs IEZJTEUgKnByaW50UXVlcnlGb3V0KQ0KIHsNCiAJYm9vbAkJc3VjY2VzczsN CiAJY29uc3QgY2hhciAqY21kc3RhdHVzOw0KIA0KLQlpZiAoIXJlc3VsdCkN CisJaWYgKHJlc3VsdCA9PSBOVUxMKQ0KIAkJcmV0dXJuIGZhbHNlOw0KIA0K IAlzd2l0Y2ggKFBRcmVzdWx0U3RhdHVzKHJlc3VsdCkpDQogCXsNCiAJCWNh c2UgUEdSRVNfVFVQTEVTX09LOg0KIAkJCS8qIHN0b3JlIG9yIGV4ZWN1dGUg b3IgcHJpbnQgdGhlIGRhdGEgLi4uICovDQotCQkJaWYgKHBzZXQuZ3NldF9w cmVmaXgpDQorCQkJaWYgKGxhc3QgJiYgcHNldC5nc2V0X3ByZWZpeCkNCiAJ CQkJc3VjY2VzcyA9IFN0b3JlUXVlcnlUdXBsZShyZXN1bHQpOw0KLQkJCWVs c2UgaWYgKHBzZXQuZ2V4ZWNfZmxhZykNCisJCQllbHNlIGlmIChsYXN0ICYm IHBzZXQuZ2V4ZWNfZmxhZykNCiAJCQkJc3VjY2VzcyA9IEV4ZWNRdWVyeVR1 cGxlcyhyZXN1bHQpOw0KLQkJCWVsc2UgaWYgKHBzZXQuY3Jvc3N0YWJfZmxh ZykNCisJCQllbHNlIGlmIChsYXN0ICYmIHBzZXQuY3Jvc3N0YWJfZmxhZykN CiAJCQkJc3VjY2VzcyA9IFByaW50UmVzdWx0SW5Dcm9zc3RhYihyZXN1bHQp Ow0KKwkJCWVsc2UgaWYgKGxhc3QgfHwgcHNldC5zaG93X2FsbF9yZXN1bHRz KQ0KKwkJCQlzdWNjZXNzID0gUHJpbnRRdWVyeVR1cGxlcyhyZXN1bHQsIG9w dCwgcHJpbnRRdWVyeUZvdXQpOw0KIAkJCWVsc2UNCi0JCQkJc3VjY2VzcyA9 IFByaW50UXVlcnlUdXBsZXMocmVzdWx0KTsNCisJCQkJc3VjY2VzcyA9IHRy dWU7DQorDQogCQkJLyogaWYgaXQncyBJTlNFUlQvVVBEQVRFL0RFTEVURSBS RVRVUk5JTkcsIGFsc28gcHJpbnQgc3RhdHVzICovDQotCQkJY21kc3RhdHVz ID0gUFFjbWRTdGF0dXMocmVzdWx0KTsNCi0JCQlpZiAoc3RybmNtcChjbWRz dGF0dXMsICJJTlNFUlQiLCA2KSA9PSAwIHx8DQotCQkJCXN0cm5jbXAoY21k c3RhdHVzLCAiVVBEQVRFIiwgNikgPT0gMCB8fA0KLQkJCQlzdHJuY21wKGNt ZHN0YXR1cywgIkRFTEVURSIsIDYpID09IDApDQotCQkJCVByaW50UXVlcnlT dGF0dXMocmVzdWx0KTsNCisJCQlpZiAobGFzdCB8fCBwc2V0LnNob3dfYWxs X3Jlc3VsdHMpDQorCQkJew0KKwkJCQljbWRzdGF0dXMgPSBQUWNtZFN0YXR1 cyhyZXN1bHQpOw0KKwkJCQlpZiAoc3RybmNtcChjbWRzdGF0dXMsICJJTlNF UlQiLCA2KSA9PSAwIHx8DQorCQkJCQlzdHJuY21wKGNtZHN0YXR1cywgIlVQ REFURSIsIDYpID09IDAgfHwNCisJCQkJCXN0cm5jbXAoY21kc3RhdHVzLCAi REVMRVRFIiwgNikgPT0gMCkNCisJCQkJCVByaW50UXVlcnlTdGF0dXMocmVz dWx0LCBwcmludFF1ZXJ5Rm91dCk7DQorCQkJfQ0KKw0KIAkJCWJyZWFrOw0K IA0KIAkJY2FzZSBQR1JFU19DT01NQU5EX09LOg0KLQkJCVByaW50UXVlcnlT dGF0dXMocmVzdWx0KTsNCisJCQlpZiAobGFzdCB8fCBwc2V0LnNob3dfYWxs X3Jlc3VsdHMpDQorCQkJCVByaW50UXVlcnlTdGF0dXMocmVzdWx0LCBwcmlu dFF1ZXJ5Rm91dCk7DQogCQkJc3VjY2VzcyA9IHRydWU7DQogCQkJYnJlYWs7 DQogDQpAQCAtMTE1Niw3ICsxMDMwLDcgQEAgUHJpbnRRdWVyeVJlc3VsdChQ R3Jlc3VsdCAqcmVzdWx0KQ0KIA0KIAkJY2FzZSBQR1JFU19DT1BZX09VVDoN CiAJCWNhc2UgUEdSRVNfQ09QWV9JTjoNCi0JCQkvKiBub3RoaW5nIHRvIGRv IGhlcmUgKi8NCisJCQkvKiBub3RoaW5nIHRvIGRvIGhlcmU6IGFscmVhZHkg cHJvY2Vzc2VkICovDQogCQkJc3VjY2VzcyA9IHRydWU7DQogCQkJYnJlYWs7 DQogDQpAQCAtMTE3MywxMSArMTA0NywyNTIgQEAgUHJpbnRRdWVyeVJlc3Vs dChQR3Jlc3VsdCAqcmVzdWx0KQ0KIAkJCWJyZWFrOw0KIAl9DQogDQotCWZm bHVzaChwc2V0LnF1ZXJ5Rm91dCk7DQorCWZmbHVzaChwcmludFF1ZXJ5Rm91 dCA/IHByaW50UXVlcnlGb3V0IDogcHNldC5xdWVyeUZvdXQpOw0KIA0KIAly ZXR1cm4gc3VjY2VzczsNCiB9DQogDQorLyoNCisgKiBEYXRhIHN0cnVjdHVy ZSBhbmQgZnVuY3Rpb25zIHRvIHJlY29yZCBub3RpY2VzIHdoaWxlIHRoZXkg YXJlDQorICogZW1pdHRlZCwgc28gdGhhdCB0aGV5IGNhbiBiZSBzaG93biBs YXRlci4NCisgKg0KKyAqIFdlIG5lZWQgdG8ga25vdyB3aGljaCByZXN1bHQg aXMgbGFzdCwgd2hpY2ggcmVxdWlyZXMgdG8gZXh0cmFjdA0KKyAqIG9uZSBy ZXN1bHQgaW4gYWR2YW5jZSwgaGVuY2UgdHdvIGJ1ZmZlcnMgYXJlIG5lZWRl ZC4NCisgKi8NCit0eXBlZGVmIHN0cnVjdCB7DQorCVBRRXhwQnVmZmVyRGF0 YQltZXNzYWdlc1syXTsNCisJaW50CQkJCWN1cnJlbnQ7DQorfSB0X25vdGlj ZV9tZXNzYWdlczsNCisNCisvKg0KKyAqIFN0b3JlIG5vdGljZXMgaW4gYXBw cm9wcmlhdGUgYnVmZmVyLCBmb3IgbGF0ZXIgZGlzcGxheS4NCisgKi8NCitz dGF0aWMgdm9pZA0KK0FwcGVuZE5vdGljZU1lc3NhZ2Uodm9pZCAqYXJnLCBj b25zdCBjaGFyICptc2cpDQorew0KKwl0X25vdGljZV9tZXNzYWdlcyAqbm90 ZXMgPSAodF9ub3RpY2VfbWVzc2FnZXMqKSBhcmc7DQorCWFwcGVuZFBRRXhw QnVmZmVyU3RyKCZub3Rlcy0+bWVzc2FnZXNbbm90ZXMtPmN1cnJlbnRdLCBt c2cpOw0KK30NCisNCisvKg0KKyAqIFNob3cgbm90aWNlcyBzdG9yZWQgaW4g YnVmZmVyLCB3aGljaCBpcyB0aGVuIHJlc2V0Lg0KKyAqLw0KK3N0YXRpYyB2 b2lkDQorU2hvd05vdGljZU1lc3NhZ2UodF9ub3RpY2VfbWVzc2FnZXMgKm5v dGVzKQ0KK3sNCisJUFFFeHBCdWZmZXJEYXRhCSpjdXJyZW50ID0gJm5vdGVz LT5tZXNzYWdlc1tub3Rlcy0+Y3VycmVudF07DQorCWlmICgqY3VycmVudC0+ ZGF0YSAhPSAnXDAnKQ0KKwkJcGdfbG9nX2luZm8oIiVzIiwgY3VycmVudC0+ ZGF0YSk7DQorCXJlc2V0UFFFeHBCdWZmZXIoY3VycmVudCk7DQorfQ0KKw0K Ky8qDQorICogU2VuZFF1ZXJ5QW5kUHJvY2Vzc1Jlc3VsdHM6IHV0aWxpdHkg ZnVuY3Rpb24gZm9yIHVzZSBieSBTZW5kUXVlcnkoKQ0KKyAqIGFuZCBQU1FM ZXhlY1dhdGNoKCkuDQorICoNCisgKiBTZW5kcyBxdWVyeSBhbmQgY3ljbGVz IHRocm91Z2ggUEdyZXN1bHQgb2JqZWN0cy4NCisgKg0KKyAqIFdoZW4gbm90 IHVuZGVyIFx3YXRjaCBhbmQgaWYgb3VyIGNvbW1hbmQgc3RyaW5nIGNvbnRh aW5lZCBhIENPUFkgRlJPTSBTVERJTg0KKyAqIG9yIENPUFkgVE8gU1RET1VU LCB0aGUgUEdyZXN1bHQgYXNzb2NpYXRlZCB3aXRoIHRoZXNlIGNvbW1hbmRz IG11c3QgYmUNCisgKiBwcm9jZXNzZWQgYnkgcHJvdmlkaW5nIGFuIGlucHV0 IG9yIG91dHB1dCBzdHJlYW0uICBJbiB0aGF0IGV2ZW50LCB3ZSdsbA0KKyAq IG1hcnNoYWwgZGF0YSBmb3IgdGhlIENPUFkuDQorICoNCisgKiBGb3Igb3Ro ZXIgY29tbWFuZHMsIHRoZSByZXN1bHRzIGFyZSBwcm9jZXNzZWQgbm9ybWFs bHksIGRlcGVuZGluZyBvbiB0aGVpcg0KKyAqIHN0YXR1cy4NCisgKg0KKyAq IFJldHVybnMgMSBvbiBjb21wbGV0ZSBzdWNjZXNzLCAwIG9uIGludGVycnVw dCBhbmQgLTEgb3IgZXJyb3JzLiAgUG9zc2libGUNCisgKiBmYWlsdXJlIG1v ZGVzIGluY2x1ZGUgcHVyZWx5IGNsaWVudC1zaWRlIHByb2JsZW1zOyBjaGVj ayB0aGUgdHJhbnNhY3Rpb24NCisgKiBzdGF0dXMgZm9yIHRoZSBzZXJ2ZXIt c2lkZSBvcGluaW9uLg0KKyAqDQorICogTm90ZSB0aGF0IG9uIGEgY29tYmlu ZWQgcXVlcnksIGZhaWx1cmUgZG9lcyBub3QgbWVhbiB0aGF0IG5vdGhpbmcg d2FzDQorICogY29tbWl0dGVkLg0KKyAqLw0KK3N0YXRpYyBpbnQNCitTZW5k UXVlcnlBbmRQcm9jZXNzUmVzdWx0cyhjb25zdCBjaGFyICpxdWVyeSwgZG91 YmxlICpwZWxhcHNlZF9tc2VjLA0KKwlib29sIGlzX3dhdGNoLCBjb25zdCBw cmludFF1ZXJ5T3B0ICpvcHQsIEZJTEUgKnByaW50UXVlcnlGb3V0LCBib29s ICp0eF9lbmRlZCkNCit7DQorCWJvb2wJCQkJdGltaW5nID0gcHNldC50aW1p bmc7DQorCWJvb2wJCQkJc3VjY2VzczsNCisJaW5zdHJfdGltZQkJCWJlZm9y ZTsNCisJUEdyZXN1bHQJCSAgICpyZXN1bHQ7DQorCXRfbm90aWNlX21lc3Nh Z2VzCW5vdGVzOw0KKw0KKwlpZiAodGltaW5nKQ0KKwkJSU5TVFJfVElNRV9T RVRfQ1VSUkVOVChiZWZvcmUpOw0KKw0KKwlzdWNjZXNzID0gUFFzZW5kUXVl cnkocHNldC5kYiwgcXVlcnkpOw0KKw0KKwlpZiAoIXN1Y2Nlc3MpDQorCXsN CisJCWNvbnN0IGNoYXIgKmVycm9yID0gUFFlcnJvck1lc3NhZ2UocHNldC5k Yik7DQorDQorCQlpZiAoc3RybGVuKGVycm9yKSkNCisJCQlwZ19sb2dfaW5m bygiJXMiLCBlcnJvcik7DQorDQorCQlDaGVja0Nvbm5lY3Rpb24oKTsNCisN CisJCXJldHVybiAtMTsNCisJfQ0KKw0KKwkvKg0KKwkgKiBJZiBTSUdJTlQg aXMgc2VudCB3aGlsZSB0aGUgcXVlcnkgaXMgcHJvY2Vzc2luZywgdGhlIGlu dGVycnVwdCB3aWxsIGJlDQorCSAqIGNvbnN1bWVkLiAgVGhlIHVzZXIncyBp bnRlbnRpb24sIHRob3VnaCwgaXMgdG8gY2FuY2VsIHRoZSBlbnRpcmUgd2F0 Y2gNCisJICogcHJvY2Vzcywgc28gZGV0ZWN0IGEgc2VudCBjYW5jZWxsYXRp b24gcmVxdWVzdCBhbmQgZXhpdCBpbiB0aGlzIGNhc2UuDQorCSAqLw0KKwlp ZiAoaXNfd2F0Y2ggJiYgY2FuY2VsX3ByZXNzZWQpDQorCXsNCisJCUNsZWFy T3JTYXZlQWxsUmVzdWx0cygpOw0KKwkJcmV0dXJuIDA7DQorCX0NCisNCisJ LyogaW50ZXJjZXB0IG5vdGljZXMgKi8NCisJbm90ZXMuY3VycmVudCA9IDA7 DQorCWluaXRQUUV4cEJ1ZmZlcigmbm90ZXMubWVzc2FnZXNbMF0pOw0KKwlp bml0UFFFeHBCdWZmZXIoJm5vdGVzLm1lc3NhZ2VzWzFdKTsNCisJUFFzZXRO b3RpY2VQcm9jZXNzb3IocHNldC5kYiwgQXBwZW5kTm90aWNlTWVzc2FnZSwg Jm5vdGVzKTsNCisNCisJLyogZmlyc3QgcmVzdWx0ICovDQorCXJlc3VsdCA9 IFBRZ2V0UmVzdWx0KHBzZXQuZGIpOw0KKw0KKwl3aGlsZSAocmVzdWx0ICE9 IE5VTEwpDQorCXsNCisJCUV4ZWNTdGF0dXNUeXBlIHJlc3VsdF9zdGF0dXM7 DQorCQlQR3Jlc3VsdCAgICpuZXh0X3Jlc3VsdDsNCisJCWJvb2wJCWxhc3Q7 DQorDQorCQlpZiAoIUFjY2VwdFJlc3VsdChyZXN1bHQsIGZhbHNlKSkNCisJ CXsNCisJCQkvKg0KKwkJCSAqIFNvbWUgZXJyb3Igb2NjdXJlZCwgZWl0aGVy IGEgc2VydmVyLXNpZGUgZmFpbHVyZSBvcg0KKwkJCSAqIGEgZmFpbHVyZSB0 byBzdWJtaXQgdGhlIGNvbW1hbmQgc3RyaW5nLiAgUmVjb3JkIHRoYXQuDQor CQkJICovDQorCQkJY29uc3QgY2hhciAqZXJyb3IgPSBQUXJlc3VsdEVycm9y TWVzc2FnZShyZXN1bHQpOw0KKw0KKwkJCVNob3dOb3RpY2VNZXNzYWdlKCZu b3Rlcyk7DQorCQkJaWYgKHN0cmxlbihlcnJvcikpDQorCQkJCXBnX2xvZ19p bmZvKCIlcyIsIGVycm9yKTsNCisNCisJCQlDaGVja0Nvbm5lY3Rpb24oKTsN CisJCQlpZiAoIWlzX3dhdGNoKQ0KKwkJCQlTZXRSZXN1bHRWYXJpYWJsZXMo cmVzdWx0LCBmYWxzZSk7DQorDQorCQkJLyoga2VlcCB0aGUgcmVzdWx0IHN0 YXR1cyBiZWZvcmUgY2xlYXJpbmcgaXQgKi8NCisJCQlyZXN1bHRfc3RhdHVz ID0gUFFyZXN1bHRTdGF0dXMocmVzdWx0KTsNCisJCQlDbGVhck9yU2F2ZVJl c3VsdChyZXN1bHQpOw0KKwkJCXJlc3VsdCA9IE5VTEw7DQorCQkJc3VjY2Vz cyA9IGZhbHNlOw0KKw0KKwkJCS8qIHN3aXRjaCB0byBuZXh0IHJlc3VsdCAq Lw0KKwkJCWlmIChyZXN1bHRfc3RhdHVzID09IFBHUkVTX0NPUFlfQk9USCB8 fA0KKwkJCQlyZXN1bHRfc3RhdHVzID09IFBHUkVTX0NPUFlfT1VUIHx8DQor CQkJCXJlc3VsdF9zdGF0dXMgPT0gUEdSRVNfQ09QWV9JTikNCisJCQkJLyoN CisJCQkJICogRm9yIHNvbWUgb2JzY3VyZSByZWFzb24gUFFnZXRSZXN1bHQg ZG9lcyAqbm90KiByZXR1cm4gYSBOVUxMIGluIGNvcHkNCisJCQkJICogY2Fz ZXMgZGVzcGl0ZSB0aGUgcmVzdWx0IGhhdmluZyBiZWVuIGNsZWFyZWQsIGJ1 dCBrZWVwcyByZXR1cm5pbmcgYW4NCisJCQkJICogImVtcHR5IiByZXN1bHQg dGhhdCB3ZSBoYXZlIHRvIGlnbm9yZSBtYW51YWxseS4NCisJCQkJICovDQor CQkJCTsNCisJCQllbHNlDQorCQkJCXJlc3VsdCA9IFBRZ2V0UmVzdWx0KHBz ZXQuZGIpOw0KKw0KKwkJCWNvbnRpbnVlOw0KKwkJfQ0KKwkJZWxzZSBpZiAo dHhfZW5kZWQgIT0gTlVMTCAmJiAhICp0eF9lbmRlZCkNCisJCXsNCisJCQkv KiBvbiBzdWNjZXNzLCB0ZWxsIHdoZXRoZXIgdGhlICJjdXJyZW50IiB0cmFu c2FjdGlvbiBzZXF1ZW5jZSBlbmRlZCAqLw0KKwkJCWNvbnN0IGNoYXIgKmNt ZCA9IFBRY21kU3RhdHVzKHJlc3VsdCk7DQorCQkJKnR4X2VuZGVkID0gc3Ry Y21wKGNtZCwgIkNPTU1JVCIpID09IDAgfHwgc3RyY21wKGNtZCwgIlJPTExC QUNLIikgPT0gMCB8fA0KKwkJCQlzdHJjbXAoY21kLCAiU0FWRVBPSU5UIikg PT0gMCB8fCBzdHJjbXAoY21kLCAiUkVMRUFTRSIpID09IDA7DQorCQl9DQor DQorCQlyZXN1bHRfc3RhdHVzID0gUFFyZXN1bHRTdGF0dXMocmVzdWx0KTsN CisNCisJCS8qIG11c3QgaGFuZGxlIENPUFkgYmVmb3JlIGNoYW5naW5nIHRo ZSBjdXJyZW50IHJlc3VsdCAqLw0KKwkJQXNzZXJ0KHJlc3VsdF9zdGF0dXMg IT0gUEdSRVNfQ09QWV9CT1RIKTsNCisJCWlmIChyZXN1bHRfc3RhdHVzID09 IFBHUkVTX0NPUFlfSU4gfHwNCisJCQlyZXN1bHRfc3RhdHVzID09IFBHUkVT X0NPUFlfT1VUKQ0KKwkJew0KKwkJCVNob3dOb3RpY2VNZXNzYWdlKCZub3Rl cyk7DQorDQorCQkJaWYgKGlzX3dhdGNoKQ0KKwkJCXsNCisJCQkJQ2xlYXJP clNhdmVBbGxSZXN1bHRzKCk7DQorCQkJCXBnX2xvZ19lcnJvcigiXFx3YXRj aCBjYW5ub3QgYmUgdXNlZCB3aXRoIENPUFkiKTsNCisJCQkJcmV0dXJuIC0x Ow0KKwkJCX0NCisNCisJCQkvKiB1c2Ugbm9ybWFsIG5vdGljZSBwcm9jZXNz b3IgZHVyaW5nIENPUFkgKi8NCisJCQlQUXNldE5vdGljZVByb2Nlc3Nvcihw c2V0LmRiLCBOb3RpY2VQcm9jZXNzb3IsIE5VTEwpOw0KKw0KKwkJCXN1Y2Nl c3MgJj0gSGFuZGxlQ29weVJlc3VsdCgmcmVzdWx0KTsNCisNCisJCQlQUXNl dE5vdGljZVByb2Nlc3Nvcihwc2V0LmRiLCBBcHBlbmROb3RpY2VNZXNzYWdl LCAmbm90ZXMpOw0KKwkJfQ0KKw0KKwkJLyoNCisJCSAqIENoZWNrIFBRZ2V0 UmVzdWx0KCkgYWdhaW4uICBJbiB0aGUgdHlwaWNhbCBjYXNlIG9mIGEgc2lu Z2xlLWNvbW1hbmQNCisJCSAqIHN0cmluZywgaXQgd2lsbCByZXR1cm4gTlVM TC4gIE90aGVyd2lzZSwgd2UnbGwgaGF2ZSBvdGhlciByZXN1bHRzDQorCQkg KiB0byBwcm9jZXNzLiBXZSBuZWVkIHRvIGRvIHRoYXQgdG8gY2hlY2sgd2hl dGhlciB0aGlzIGlzIHRoZSBsYXN0Lg0KKwkJICovDQorCQlub3Rlcy5jdXJy ZW50IF49IDE7DQorCQluZXh0X3Jlc3VsdCA9IFBRZ2V0UmVzdWx0KHBzZXQu ZGIpOw0KKwkJbm90ZXMuY3VycmVudCBePSAxOw0KKwkJbGFzdCA9IChuZXh0 X3Jlc3VsdCA9PSBOVUxMKTsNCisNCisJCS8qDQorCQkgKiBHZXQgdGltaW5n IG1lYXN1cmUgYmVmb3JlIHByaW50aW5nIHRoZSBsYXN0IHJlc3VsdC4NCisJ CSAqDQorCQkgKiBJdCB3aWxsIGluY2x1ZGUgdGhlIGRpc3BsYXkgb2YgcHJl dmlvdXMgcmVzdWx0cywgaWYgYW55Lg0KKwkJICogVGhpcyBjYW5ub3QgYmUg aGVscGVkIGJlY2F1c2UgdGhlIHNlcnZlciBnb2VzIG9uIHByb2Nlc3NpbmcN CisJCSAqIGZ1cnRoZXIgcXVlcmllcyBhbnl3YXkgd2hpbGUgdGhlIHByZXZp b3VzIG9uZXMgYXJlIGJlaW5nIGRpc3BsYXllZC4NCisJCSAqIFRoZSBwYXJh bGxlbCBleGVjdXRpb24gb2YgdGhlIGNsaWVudCBkaXNwbGF5IGhpZGVzIHRo ZSBzZXJ2ZXIgdGltZQ0KKwkJICogd2hlbiBpdCBpcyBzaG9ydGVyLg0KKwkJ ICoNCisJCSAqIFdpdGggY29tYmluZWQgcXVlcmllcywgdGltaW5nIG11c3Qg YmUgdW5kZXJzdG9vZCBhcyBhbiB1cHBlciBib3VuZA0KKwkJICogb2YgdGhl IHRpbWUgc3BlbnQgcHJvY2Vzc2luZyB0aGVtLg0KKwkJICovDQorCQlpZiAo bGFzdCAmJiB0aW1pbmcpDQorCQl7DQorCQkJaW5zdHJfdGltZQlub3c7DQor CQkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChub3cpOw0KKwkJCUlOU1RSX1RJ TUVfU1VCVFJBQ1Qobm93LCBiZWZvcmUpOw0KKwkJCSpwZWxhcHNlZF9tc2Vj ID0gSU5TVFJfVElNRV9HRVRfTUlMTElTRUMobm93KTsNCisJCX0NCisNCisJ CS8qIG5vdGljZXMgYWxyZWFkeSBzaG93biBhYm92ZSBmb3IgY29weSAqLw0K KwkJU2hvd05vdGljZU1lc3NhZ2UoJm5vdGVzKTsNCisNCisJCS8qIHRoaXMg bWF5IG9yIG1heSBub3QgcHJpbnQgc29tZXRoaW5nIGRlcGVuZGluZyBvbiBz ZXR0aW5ncyAqLw0KKwkJaWYgKHJlc3VsdCAhPSBOVUxMKQ0KKwkJCXN1Y2Nl c3MgJj0gSGFuZGxlUXVlcnlSZXN1bHQocmVzdWx0LCBsYXN0LCBmYWxzZSwg b3B0LCBwcmludFF1ZXJ5Rm91dCk7DQorDQorCQkvKiBzZXQgdmFyaWFibGVz IG9uIGxhc3QgcmVzdWx0IGlmIGFsbCB3ZW50IHdlbGwgKi8NCisJCWlmICgh aXNfd2F0Y2ggJiYgbGFzdCAmJiBzdWNjZXNzKQ0KKwkJCVNldFJlc3VsdFZh cmlhYmxlcyhyZXN1bHQsIHRydWUpOw0KKw0KKwkJQ2xlYXJPclNhdmVSZXN1 bHQocmVzdWx0KTsNCisJCW5vdGVzLmN1cnJlbnQgXj0gMTsNCisJCXJlc3Vs dCA9IG5leHRfcmVzdWx0Ow0KKw0KKwkJaWYgKGNhbmNlbF9wcmVzc2VkKQ0K KwkJew0KKwkJCUNsZWFyT3JTYXZlQWxsUmVzdWx0cygpOw0KKwkJCWJyZWFr Ow0KKwkJfQ0KKwl9DQorDQorCS8qIHJlc2V0IG5vdGljZSBob29rICovDQor CVBRc2V0Tm90aWNlUHJvY2Vzc29yKHBzZXQuZGIsIE5vdGljZVByb2Nlc3Nv ciwgTlVMTCk7DQorCXRlcm1QUUV4cEJ1ZmZlcigmbm90ZXMubWVzc2FnZXNb MF0pOw0KKwl0ZXJtUFFFeHBCdWZmZXIoJm5vdGVzLm1lc3NhZ2VzWzFdKTsN CisNCisJLyogbWF5IG5lZWQgdGhpcyB0byByZWNvdmVyIGZyb20gY29ubiBs b3NzIGR1cmluZyBDT1BZICovDQorCWlmICghQ2hlY2tDb25uZWN0aW9uKCkp DQorCQlyZXR1cm4gLTE7DQorDQorCXJldHVybiBjYW5jZWxfcHJlc3NlZCA/ IDAgOiBzdWNjZXNzID8gMSA6IC0xOw0KK30NCisNCiANCiAvKg0KICAqIFNl bmRRdWVyeTogc2VuZCB0aGUgcXVlcnkgc3RyaW5nIHRvIHRoZSBiYWNrZW5k DQpAQCAtMTE5NSwxMiArMTMxMCwxNCBAQCBib29sDQogU2VuZFF1ZXJ5KGNv bnN0IGNoYXIgKnF1ZXJ5KQ0KIHsNCiAJYm9vbAkJdGltaW5nID0gcHNldC50 aW1pbmc7DQotCVBHcmVzdWx0ICAgKnJlc3VsdDsNCisJUEdyZXN1bHQgICAg KnJlc3VsdCA9IE5VTEw7DQogCVBHVHJhbnNhY3Rpb25TdGF0dXNUeXBlIHRy YW5zYWN0aW9uX3N0YXR1czsNCiAJZG91YmxlCQllbGFwc2VkX21zZWMgPSAw Ow0KIAlib29sCQlPSyA9IGZhbHNlOw0KKwlib29sCQlyZXNfZXJyb3I7DQog CWludAkJCWk7DQogCWJvb2wJCW9uX2Vycm9yX3JvbGxiYWNrX3NhdmVwb2lu dCA9IGZhbHNlOw0KKwlib29sCQl0eF9lbmRlZCA9IGZhbHNlOw0KIA0KIAlp ZiAoIXBzZXQuZGIpDQogCXsNCkBAIC0xMjM5LDgyICsxMzU2LDcxIEBAIFNl bmRRdWVyeShjb25zdCBjaGFyICpxdWVyeSkNCiAJCWZmbHVzaChwc2V0Lmxv Z2ZpbGUpOw0KIAl9DQogDQorCS8qIGdsb2JhbCBxdWVyeSBjYW5jZWxsYXRp b24gZm9yIHRoaXMgcXVlcnkgKi8NCiAJU2V0Q2FuY2VsQ29ubihwc2V0LmRi KTsNCiANCiAJdHJhbnNhY3Rpb25fc3RhdHVzID0gUFF0cmFuc2FjdGlvblN0 YXR1cyhwc2V0LmRiKTsNCiANCisJLyogaXNzdWUgYSBCRUdJTiBpZiBuZWVk ZWQsIGNvcnJlc3BvbmRpbmcgQ09NTUlUL1JPTExCQUNLIGJ5IHVzZXIgKi8N CiAJaWYgKHRyYW5zYWN0aW9uX3N0YXR1cyA9PSBQUVRSQU5TX0lETEUgJiYN CiAJCSFwc2V0LmF1dG9jb21taXQgJiYNCiAJCSFjb21tYW5kX25vX2JlZ2lu KHF1ZXJ5KSkNCiAJew0KKwkJUEdyZXN1bHQgICAgKnJlc3VsdDsNCiAJCXJl c3VsdCA9IFBRZXhlYyhwc2V0LmRiLCAiQkVHSU4iKTsNCi0JCWlmIChQUXJl c3VsdFN0YXR1cyhyZXN1bHQpICE9IFBHUkVTX0NPTU1BTkRfT0spDQorCQly ZXNfZXJyb3IgPSBQUXJlc3VsdFN0YXR1cyhyZXN1bHQpICE9IFBHUkVTX0NP TU1BTkRfT0s7DQorCQlDbGVhck9yU2F2ZVJlc3VsdChyZXN1bHQpOw0KKwkJ cmVzdWx0ID0gTlVMTDsNCisNCisJCWlmIChyZXNfZXJyb3IpDQogCQl7DQog CQkJcGdfbG9nX2luZm8oIiVzIiwgUFFlcnJvck1lc3NhZ2UocHNldC5kYikp Ow0KLQkJCUNsZWFyT3JTYXZlUmVzdWx0KHJlc3VsdCk7DQotCQkJUmVzZXRD YW5jZWxDb25uKCk7DQogCQkJZ290byBzZW5kcXVlcnlfY2xlYW51cDsNCiAJ CX0NCi0JCUNsZWFyT3JTYXZlUmVzdWx0KHJlc3VsdCk7DQorDQorCQkvKiBt dXN0IGJlIFBRVFJBTlNfSU5UUkFOUyBhZnRlciBhIEJFR0lOICovDQogCQl0 cmFuc2FjdGlvbl9zdGF0dXMgPSBQUXRyYW5zYWN0aW9uU3RhdHVzKHBzZXQu ZGIpOw0KIAl9DQogDQorCS8qIGNyZWF0ZSBhdXRvbWF0aWMgc2F2ZXBvaW50 IGlmIG5lZWRlZCBhbmQgcG9zc2libGUgKi8NCiAJaWYgKHRyYW5zYWN0aW9u X3N0YXR1cyA9PSBQUVRSQU5TX0lOVFJBTlMgJiYNCiAJCXBzZXQub25fZXJy b3Jfcm9sbGJhY2sgIT0gUFNRTF9FUlJPUl9ST0xMQkFDS19PRkYgJiYNCiAJ CShwc2V0LmN1cl9jbWRfaW50ZXJhY3RpdmUgfHwNCiAJCSBwc2V0Lm9uX2Vy cm9yX3JvbGxiYWNrID09IFBTUUxfRVJST1JfUk9MTEJBQ0tfT04pKQ0KIAl7 DQorCQlQR3Jlc3VsdCAgICpyZXN1bHQ7DQogCQlyZXN1bHQgPSBQUWV4ZWMo cHNldC5kYiwgIlNBVkVQT0lOVCBwZ19wc3FsX3RlbXBvcmFyeV9zYXZlcG9p bnQiKTsNCi0JCWlmIChQUXJlc3VsdFN0YXR1cyhyZXN1bHQpICE9IFBHUkVT X0NPTU1BTkRfT0spDQorCQlyZXNfZXJyb3IgPSBQUXJlc3VsdFN0YXR1cyhy ZXN1bHQpICE9IFBHUkVTX0NPTU1BTkRfT0s7DQorCQlDbGVhck9yU2F2ZVJl c3VsdChyZXN1bHQpOw0KKwkJcmVzdWx0ID0gTlVMTDsNCisNCisJCWlmIChy ZXNfZXJyb3IpDQogCQl7DQogCQkJcGdfbG9nX2luZm8oIiVzIiwgUFFlcnJv ck1lc3NhZ2UocHNldC5kYikpOw0KLQkJCUNsZWFyT3JTYXZlUmVzdWx0KHJl c3VsdCk7DQotCQkJUmVzZXRDYW5jZWxDb25uKCk7DQogCQkJZ290byBzZW5k cXVlcnlfY2xlYW51cDsNCiAJCX0NCi0JCUNsZWFyT3JTYXZlUmVzdWx0KHJl c3VsdCk7DQorDQogCQlvbl9lcnJvcl9yb2xsYmFja19zYXZlcG9pbnQgPSB0 cnVlOw0KIAl9DQogDQorCS8qIHByb2Nlc3MgdGhlIHF1ZXJ5LCBvbmUgd2F5 IG9yIHRoZSBvdGhlciAqLw0KIAlpZiAocHNldC5nZGVzY19mbGFnKQ0KIAl7 DQogCQkvKiBEZXNjcmliZSBxdWVyeSdzIHJlc3VsdCBjb2x1bW5zLCB3aXRo b3V0IGV4ZWN1dGluZyBpdCAqLw0KIAkJT0sgPSBEZXNjcmliZVF1ZXJ5KHF1 ZXJ5LCAmZWxhcHNlZF9tc2VjKTsNCi0JCVJlc2V0Q2FuY2VsQ29ubigpOw0K IAkJcmVzdWx0ID0gTlVMTDsJCQkvKiBQUWNsZWFyKE5VTEwpIGRvZXMgbm90 aGluZyAqLw0KIAl9DQogCWVsc2UgaWYgKHBzZXQuZmV0Y2hfY291bnQgPD0g MCB8fCBwc2V0LmdleGVjX2ZsYWcgfHwNCiAJCQkgcHNldC5jcm9zc3RhYl9m bGFnIHx8ICFpc19zZWxlY3RfY29tbWFuZChxdWVyeSkpDQogCXsNCiAJCS8q IERlZmF1bHQgZmV0Y2gtaXQtYWxsLWFuZC1wcmludCBtb2RlICovDQotCQlp bnN0cl90aW1lCWJlZm9yZSwNCi0JCQkJCWFmdGVyOw0KLQ0KLQkJaWYgKHRp bWluZykNCi0JCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGJlZm9yZSk7DQot DQotCQlyZXN1bHQgPSBQUWV4ZWMocHNldC5kYiwgcXVlcnkpOw0KLQ0KLQkJ LyogdGhlc2Ugb3BlcmF0aW9ucyBhcmUgaW5jbHVkZWQgaW4gdGhlIHRpbWlu ZyByZXN1bHQ6ICovDQotCQlSZXNldENhbmNlbENvbm4oKTsNCi0JCU9LID0g UHJvY2Vzc1Jlc3VsdCgmcmVzdWx0KTsNCi0NCi0JCWlmICh0aW1pbmcpDQot CQl7DQotCQkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChhZnRlcik7DQotCQkJ SU5TVFJfVElNRV9TVUJUUkFDVChhZnRlciwgYmVmb3JlKTsNCi0JCQllbGFw c2VkX21zZWMgPSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhhZnRlcik7DQot CQl9DQotDQotCQkvKiBidXQgcHJpbnRpbmcgcmVzdWx0IGlzbid0OiAqLw0K LQkJaWYgKE9LICYmIHJlc3VsdCkNCi0JCQlPSyA9IFByaW50UXVlcnlSZXN1 bHQocmVzdWx0KTsNCisJCWludCByZXMgPSBTZW5kUXVlcnlBbmRQcm9jZXNz UmVzdWx0cyhxdWVyeSwgJmVsYXBzZWRfbXNlYywgZmFsc2UsIE5VTEwsIE5V TEwsICZ0eF9lbmRlZCk7DQorCQlPSyA9IChyZXMgPj0gMCk7DQogCX0NCiAJ ZWxzZQ0KIAl7DQogCQkvKiBGZXRjaC1pbi1zZWdtZW50cyBtb2RlICovDQog CQlPSyA9IEV4ZWNRdWVyeVVzaW5nQ3Vyc29yKHF1ZXJ5LCAmZWxhcHNlZF9t c2VjKTsNCi0JCVJlc2V0Q2FuY2VsQ29ubigpOw0KIAkJcmVzdWx0ID0gTlVM TDsJCQkvKiBQUWNsZWFyKE5VTEwpIGRvZXMgbm90aGluZyAqLw0KIAl9DQog DQpAQCAtMTM0NywxMSArMTQ1Myw3IEBAIFNlbmRRdWVyeShjb25zdCBjaGFy ICpxdWVyeSkNCiAJCQkJICogc2F2ZXBvaW50IGlzIGdvbmUuIElmIHRoZXkg aXNzdWVkIGEgU0FWRVBPSU5ULCByZWxlYXNpbmcNCiAJCQkJICogb3VycyB3 b3VsZCByZW1vdmUgdGhlaXJzLg0KIAkJCQkgKi8NCi0JCQkJaWYgKHJlc3Vs dCAmJg0KLQkJCQkJKHN0cmNtcChQUWNtZFN0YXR1cyhyZXN1bHQpLCAiQ09N TUlUIikgPT0gMCB8fA0KLQkJCQkJIHN0cmNtcChQUWNtZFN0YXR1cyhyZXN1 bHQpLCAiU0FWRVBPSU5UIikgPT0gMCB8fA0KLQkJCQkJIHN0cmNtcChQUWNt ZFN0YXR1cyhyZXN1bHQpLCAiUkVMRUFTRSIpID09IDAgfHwNCi0JCQkJCSBz dHJjbXAoUFFjbWRTdGF0dXMocmVzdWx0KSwgIlJPTExCQUNLIikgPT0gMCkp DQorCQkJCWlmICh0eF9lbmRlZCkNCiAJCQkJCXN2cHRjbWQgPSBOVUxMOw0K IAkJCQllbHNlDQogCQkJCQlzdnB0Y21kID0gIlJFTEVBU0UgcGdfcHNxbF90 ZW1wb3Jhcnlfc2F2ZXBvaW50IjsNCkBAIC0xMzczLDE0ICsxNDc1LDE1IEBA IFNlbmRRdWVyeShjb25zdCBjaGFyICpxdWVyeSkNCiAJCQlQR3Jlc3VsdCAg ICpzdnB0cmVzOw0KIA0KIAkJCXN2cHRyZXMgPSBQUWV4ZWMocHNldC5kYiwg c3ZwdGNtZCk7DQotCQkJaWYgKFBRcmVzdWx0U3RhdHVzKHN2cHRyZXMpICE9 IFBHUkVTX0NPTU1BTkRfT0spDQorCQkJcmVzX2Vycm9yID0gUFFyZXN1bHRT dGF0dXMoc3ZwdHJlcykgIT0gUEdSRVNfQ09NTUFORF9PSzsNCisNCisJCQlp ZiAocmVzX2Vycm9yKQ0KIAkJCXsNCiAJCQkJcGdfbG9nX2luZm8oIiVzIiwg UFFlcnJvck1lc3NhZ2UocHNldC5kYikpOw0KIAkJCQlDbGVhck9yU2F2ZVJl c3VsdChzdnB0cmVzKTsNCiAJCQkJT0sgPSBmYWxzZTsNCiANCiAJCQkJUFFj bGVhcihyZXN1bHQpOw0KLQkJCQlSZXNldENhbmNlbENvbm4oKTsNCiAJCQkJ Z290byBzZW5kcXVlcnlfY2xlYW51cDsNCiAJCQl9DQogCQkJUFFjbGVhcihz dnB0cmVzKTsNCkBAIC0xNDExLDYgKzE1MTQsOSBAQCBTZW5kUXVlcnkoY29u c3QgY2hhciAqcXVlcnkpDQogDQogc2VuZHF1ZXJ5X2NsZWFudXA6DQogDQor CS8qIGdsb2JhbCBjYW5jZWxsYXRpb24gcmVzZXQgKi8NCisJUmVzZXRDYW5j ZWxDb25uKCk7DQorDQogCS8qIHJlc2V0IFxnJ3Mgb3V0cHV0LXRvLWZpbGVu YW1lIHRyaWdnZXIgKi8NCiAJaWYgKHBzZXQuZ2ZuYW1lKQ0KIAl7DQpAQCAt MTQ5MSw3ICsxNTk3LDcgQEAgRGVzY3JpYmVRdWVyeShjb25zdCBjaGFyICpx dWVyeSwgZG91YmxlICplbGFwc2VkX21zZWMpDQogCVBRY2xlYXIocmVzdWx0 KTsNCiANCiAJcmVzdWx0ID0gUFFkZXNjcmliZVByZXBhcmVkKHBzZXQuZGIs ICIiKTsNCi0JT0sgPSBBY2NlcHRSZXN1bHQocmVzdWx0KSAmJg0KKwlPSyA9 IEFjY2VwdFJlc3VsdChyZXN1bHQsIHRydWUpICYmDQogCQkoUFFyZXN1bHRT dGF0dXMocmVzdWx0KSA9PSBQR1JFU19DT01NQU5EX09LKTsNCiAJaWYgKE9L ICYmIHJlc3VsdCkNCiAJew0KQEAgLTE1MzksNyArMTY0NSw3IEBAIERlc2Ny aWJlUXVlcnkoY29uc3QgY2hhciAqcXVlcnksIGRvdWJsZSAqZWxhcHNlZF9t c2VjKQ0KIAkJCVBRY2xlYXIocmVzdWx0KTsNCiANCiAJCQlyZXN1bHQgPSBQ UWV4ZWMocHNldC5kYiwgYnVmLmRhdGEpOw0KLQkJCU9LID0gQWNjZXB0UmVz dWx0KHJlc3VsdCk7DQorCQkJT0sgPSBBY2NlcHRSZXN1bHQocmVzdWx0LCB0 cnVlKTsNCiANCiAJCQlpZiAodGltaW5nKQ0KIAkJCXsNCkBAIC0xNTQ5LDcg KzE2NTUsNyBAQCBEZXNjcmliZVF1ZXJ5KGNvbnN0IGNoYXIgKnF1ZXJ5LCBk b3VibGUgKmVsYXBzZWRfbXNlYykNCiAJCQl9DQogDQogCQkJaWYgKE9LICYm IHJlc3VsdCkNCi0JCQkJT0sgPSBQcmludFF1ZXJ5UmVzdWx0KHJlc3VsdCk7 DQorCQkJCU9LID0gSGFuZGxlUXVlcnlSZXN1bHQocmVzdWx0LCB0cnVlLCBm YWxzZSwgTlVMTCwgTlVMTCk7DQogDQogCQkJdGVybVBRRXhwQnVmZmVyKCZi dWYpOw0KIAkJfQ0KQEAgLTE2MDksNyArMTcxNSw3IEBAIEV4ZWNRdWVyeVVz aW5nQ3Vyc29yKGNvbnN0IGNoYXIgKnF1ZXJ5LCBkb3VibGUgKmVsYXBzZWRf bXNlYykNCiAJaWYgKFBRdHJhbnNhY3Rpb25TdGF0dXMocHNldC5kYikgPT0g UFFUUkFOU19JRExFKQ0KIAl7DQogCQlyZXN1bHQgPSBQUWV4ZWMocHNldC5k YiwgIkJFR0lOIik7DQotCQlPSyA9IEFjY2VwdFJlc3VsdChyZXN1bHQpICYm DQorCQlPSyA9IEFjY2VwdFJlc3VsdChyZXN1bHQsIHRydWUpICYmDQogCQkJ KFBRcmVzdWx0U3RhdHVzKHJlc3VsdCkgPT0gUEdSRVNfQ09NTUFORF9PSyk7 DQogCQlDbGVhck9yU2F2ZVJlc3VsdChyZXN1bHQpOw0KIAkJaWYgKCFPSykN CkBAIC0xNjIzLDcgKzE3MjksNyBAQCBFeGVjUXVlcnlVc2luZ0N1cnNvcihj b25zdCBjaGFyICpxdWVyeSwgZG91YmxlICplbGFwc2VkX21zZWMpDQogCQkJ CQkgIHF1ZXJ5KTsNCiANCiAJcmVzdWx0ID0gUFFleGVjKHBzZXQuZGIsIGJ1 Zi5kYXRhKTsNCi0JT0sgPSBBY2NlcHRSZXN1bHQocmVzdWx0KSAmJg0KKwlP SyA9IEFjY2VwdFJlc3VsdChyZXN1bHQsIHRydWUpICYmDQogCQkoUFFyZXN1 bHRTdGF0dXMocmVzdWx0KSA9PSBQR1JFU19DT01NQU5EX09LKTsNCiAJaWYg KCFPSykNCiAJCVNldFJlc3VsdFZhcmlhYmxlcyhyZXN1bHQsIE9LKTsNCkBA IC0xNjk2LDcgKzE4MDIsNyBAQCBFeGVjUXVlcnlVc2luZ0N1cnNvcihjb25z dCBjaGFyICpxdWVyeSwgZG91YmxlICplbGFwc2VkX21zZWMpDQogCQkJCWlz X3BhZ2VyID0gZmFsc2U7DQogCQkJfQ0KIA0KLQkJCU9LID0gQWNjZXB0UmVz dWx0KHJlc3VsdCk7DQorCQkJT0sgPSBBY2NlcHRSZXN1bHQocmVzdWx0LCB0 cnVlKTsNCiAJCQlBc3NlcnQoIU9LKTsNCiAJCQlTZXRSZXN1bHRWYXJpYWJs ZXMocmVzdWx0LCBPSyk7DQogCQkJQ2xlYXJPclNhdmVSZXN1bHQocmVzdWx0 KTsNCkBAIC0xODA1LDcgKzE5MTEsNyBAQCBjbGVhbnVwOg0KIAlyZXN1bHQg PSBQUWV4ZWMocHNldC5kYiwgIkNMT1NFIF9wc3FsX2N1cnNvciIpOw0KIAlp ZiAoT0spDQogCXsNCi0JCU9LID0gQWNjZXB0UmVzdWx0KHJlc3VsdCkgJiYN CisJCU9LID0gQWNjZXB0UmVzdWx0KHJlc3VsdCwgdHJ1ZSkgJiYNCiAJCQko UFFyZXN1bHRTdGF0dXMocmVzdWx0KSA9PSBQR1JFU19DT01NQU5EX09LKTsN CiAJCUNsZWFyT3JTYXZlUmVzdWx0KHJlc3VsdCk7DQogCX0NCkBAIC0xODE1 LDcgKzE5MjEsNyBAQCBjbGVhbnVwOg0KIAlpZiAoc3RhcnRlZF90eG4pDQog CXsNCiAJCXJlc3VsdCA9IFBRZXhlYyhwc2V0LmRiLCBPSyA/ICJDT01NSVQi IDogIlJPTExCQUNLIik7DQotCQlPSyAmPSBBY2NlcHRSZXN1bHQocmVzdWx0 KSAmJg0KKwkJT0sgJj0gQWNjZXB0UmVzdWx0KHJlc3VsdCwgdHJ1ZSkgJiYN CiAJCQkoUFFyZXN1bHRTdGF0dXMocmVzdWx0KSA9PSBQR1JFU19DT01NQU5E X09LKTsNCiAJCUNsZWFyT3JTYXZlUmVzdWx0KHJlc3VsdCk7DQogCX0NCmRp ZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvaGVscC5jIGIvc3JjL2Jpbi9wc3Fs L2hlbHAuYw0KaW5kZXggNTZhZmE2ODE3ZS4uYjM5NzFiY2U2NCAxMDA2NDQN Ci0tLSBhL3NyYy9iaW4vcHNxbC9oZWxwLmMNCisrKyBiL3NyYy9iaW4vcHNx bC9oZWxwLmMNCkBAIC00MTMsNiArNDEzLDggQEAgaGVscFZhcmlhYmxlcyh1 bnNpZ25lZCBzaG9ydCBpbnQgcGFnZXIpDQogCWZwcmludGYob3V0cHV0LCBf KCIgIFNFUlZFUl9WRVJTSU9OX05BTUVcbiINCiAJCQkJCSAgIiAgU0VSVkVS X1ZFUlNJT05fTlVNXG4iDQogCQkJCQkgICIgICAgc2VydmVyJ3MgdmVyc2lv biAoaW4gc2hvcnQgc3RyaW5nIG9yIG51bWVyaWMgZm9ybWF0KVxuIikpOw0K KwlmcHJpbnRmKG91dHB1dCwgXygiICBTSE9XX0FMTF9SRVNVTFRTXG4iDQor CQkJCQkgICIgICAgc2hvdyBhbGwgcmVzdWx0cyBvZiBhIGNvbWJpbmVkIHF1 ZXJ5IChcXDspIGluc3RlYWQgb2Ygb25seSB0aGUgbGFzdFxuIikpOw0KIAlm cHJpbnRmKG91dHB1dCwgXygiICBTSE9XX0NPTlRFWFRcbiINCiAJCQkJCSAg IiAgICBjb250cm9scyBkaXNwbGF5IG9mIG1lc3NhZ2UgY29udGV4dCBmaWVs ZHMgW25ldmVyLCBlcnJvcnMsIGFsd2F5c11cbiIpKTsNCiAJZnByaW50Zihv dXRwdXQsIF8oIiAgU0lOR0xFTElORVxuIg0KZGlmZiAtLWdpdCBhL3NyYy9i aW4vcHNxbC9zZXR0aW5ncy5oIGIvc3JjL2Jpbi9wc3FsL3NldHRpbmdzLmgN CmluZGV4IDgwZGJlYTllZmQuLjIzOTljZmZhM2YgMTAwNjQ0DQotLS0gYS9z cmMvYmluL3BzcWwvc2V0dGluZ3MuaA0KKysrIGIvc3JjL2Jpbi9wc3FsL3Nl dHRpbmdzLmgNCkBAIC0xNDgsNiArMTQ4LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg X3BzcWxTZXR0aW5ncw0KIAljb25zdCBjaGFyICpwcm9tcHQyOw0KIAljb25z dCBjaGFyICpwcm9tcHQzOw0KIAlQR1ZlcmJvc2l0eSB2ZXJib3NpdHk7CQkv KiBjdXJyZW50IGVycm9yIHZlcmJvc2l0eSBsZXZlbCAqLw0KKwlib29sCQlz aG93X2FsbF9yZXN1bHRzOw0KIAlQR0NvbnRleHRWaXNpYmlsaXR5IHNob3df Y29udGV4dDsJLyogY3VycmVudCBjb250ZXh0IGRpc3BsYXkgbGV2ZWwgKi8N CiB9IFBzcWxTZXR0aW5nczsNCiANCmRpZmYgLS1naXQgYS9zcmMvYmluL3Bz cWwvc3RhcnR1cC5jIGIvc3JjL2Jpbi9wc3FsL3N0YXJ0dXAuYw0KaW5kZXgg YmU5ZGVjNzQ5ZC4uZDA4YjE1ODg2YSAxMDA2NDQNCi0tLSBhL3NyYy9iaW4v cHNxbC9zdGFydHVwLmMNCisrKyBiL3NyYy9iaW4vcHNxbC9zdGFydHVwLmMN CkBAIC0yMDMsNiArMjAzLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJn dltdKQ0KIAlTZXRWYXJpYWJsZShwc2V0LnZhcnMsICJQUk9NUFQxIiwgREVG QVVMVF9QUk9NUFQxKTsNCiAJU2V0VmFyaWFibGUocHNldC52YXJzLCAiUFJP TVBUMiIsIERFRkFVTFRfUFJPTVBUMik7DQogCVNldFZhcmlhYmxlKHBzZXQu dmFycywgIlBST01QVDMiLCBERUZBVUxUX1BST01QVDMpOw0KKwlTZXRWYXJp YWJsZUJvb2wocHNldC52YXJzLCAiU0hPV19BTExfUkVTVUxUUyIpOw0KIA0K IAlwYXJzZV9wc3FsX29wdGlvbnMoYXJnYywgYXJndiwgJm9wdGlvbnMpOw0K IA0KQEAgLTExNTAsNiArMTE1MSwxMiBAQCB2ZXJib3NpdHlfaG9vayhjb25z dCBjaGFyICpuZXd2YWwpDQogCXJldHVybiB0cnVlOw0KIH0NCiANCitzdGF0 aWMgYm9vbA0KK3Nob3dfYWxsX3Jlc3VsdHNfaG9vayhjb25zdCBjaGFyICpu ZXd2YWwpDQorew0KKwlyZXR1cm4gUGFyc2VWYXJpYWJsZUJvb2wobmV3dmFs LCAiU0hPV19BTExfUkVTVUxUUyIsICZwc2V0LnNob3dfYWxsX3Jlc3VsdHMp Ow0KK30NCisNCiBzdGF0aWMgY2hhciAqDQogc2hvd19jb250ZXh0X3N1YnN0 aXR1dGVfaG9vayhjaGFyICpuZXd2YWwpDQogew0KQEAgLTEyNTEsNiArMTI1 OCw5IEBAIEVzdGFibGlzaFZhcmlhYmxlU3BhY2Uodm9pZCkNCiAJU2V0VmFy aWFibGVIb29rcyhwc2V0LnZhcnMsICJWRVJCT1NJVFkiLA0KIAkJCQkJIHZl cmJvc2l0eV9zdWJzdGl0dXRlX2hvb2ssDQogCQkJCQkgdmVyYm9zaXR5X2hv b2spOw0KKwlTZXRWYXJpYWJsZUhvb2tzKHBzZXQudmFycywgIlNIT1dfQUxM X1JFU1VMVFMiLA0KKwkJCQkJIGJvb2xfc3Vic3RpdHV0ZV9ob29rLA0KKwkJ CQkJIHNob3dfYWxsX3Jlc3VsdHNfaG9vayk7DQogCVNldFZhcmlhYmxlSG9v a3MocHNldC52YXJzLCAiU0hPV19DT05URVhUIiwNCiAJCQkJCSBzaG93X2Nv bnRleHRfc3Vic3RpdHV0ZV9ob29rLA0KIAkJCQkJIHNob3dfY29udGV4dF9o b29rKTsNCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdC8wMDFfYmFzaWMu cGwgYi9zcmMvYmluL3BzcWwvdC8wMDFfYmFzaWMucGwNCmluZGV4IDY2Nzk2 ZjQ5NzguLjhlY2I5YjI1ODMgMTAwNjQ0DQotLS0gYS9zcmMvYmluL3BzcWwv dC8wMDFfYmFzaWMucGwNCisrKyBiL3NyYy9iaW4vcHNxbC90LzAwMV9iYXNp Yy5wbA0KQEAgLTEyNiw3ICsxMjYsNyBAQCBpcygkcmV0LCAyLCAnc2VydmVy IGNyYXNoOiBwc3FsIGV4aXQgY29kZScpOw0KIGxpa2UoJG91dCwgcXIvYmVm b3JlLywgJ3NlcnZlciBjcmFzaDogb3V0cHV0IGJlZm9yZSBjcmFzaCcpOw0K IG9rKCRvdXQgIX4gcXIvQUZURVIvLCAnc2VydmVyIGNyYXNoOiBubyBvdXRw dXQgYWZ0ZXIgY3Jhc2gnKTsNCiBpcygkZXJyLCAncHNxbDo8c3RkaW4+OjI6 IEZBVEFMOiAgdGVybWluYXRpbmcgY29ubmVjdGlvbiBkdWUgdG8gYWRtaW5p c3RyYXRvciBjb21tYW5kDQotc2VydmVyIGNsb3NlZCB0aGUgY29ubmVjdGlv biB1bmV4cGVjdGVkbHkNCitwc3FsOjxzdGRpbj46Mjogc2VydmVyIGNsb3Nl ZCB0aGUgY29ubmVjdGlvbiB1bmV4cGVjdGVkbHkNCiAJVGhpcyBwcm9iYWJs eSBtZWFucyB0aGUgc2VydmVyIHRlcm1pbmF0ZWQgYWJub3JtYWxseQ0KIAli ZWZvcmUgb3Igd2hpbGUgcHJvY2Vzc2luZyB0aGUgcmVxdWVzdC4NCiBwc3Fs OjxzdGRpbj46MjogZmF0YWw6IGNvbm5lY3Rpb24gdG8gc2VydmVyIHdhcyBs b3N0JywNCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRl LmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMNCmluZGV4IDNmOWRm ZmZkNTcuLjQ3Y2RkMmViN2UgMTAwNjQ0DQotLS0gYS9zcmMvYmluL3BzcWwv dGFiLWNvbXBsZXRlLmMNCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxl dGUuYw0KQEAgLTQ2MjcsNyArNDYyNyw3IEBAIHBzcWxfY29tcGxldGlvbihj b25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpDQogCQltYXRj aGVzID0gY29tcGxldGVfZnJvbV92YXJpYWJsZXModGV4dCwgIiIsICIiLCBm YWxzZSk7DQogCWVsc2UgaWYgKFRhaWxNYXRjaGVzQ1MoIlxcc2V0IiwgTWF0 Y2hBbnkpKQ0KIAl7DQotCQlpZiAoVGFpbE1hdGNoZXNDUygiQVVUT0NPTU1J VHxPTl9FUlJPUl9TVE9QfFFVSUVUfCINCisJCWlmIChUYWlsTWF0Y2hlc0NT KCJBVVRPQ09NTUlUfE9OX0VSUk9SX1NUT1B8UVVJRVR8U0hPV19BTExfUkVT VUxUU3wiDQogCQkJCQkJICAiU0lOR0xFTElORXxTSU5HTEVTVEVQIikpDQog CQkJQ09NUExFVEVfV0lUSF9DUygib24iLCAib2ZmIik7DQogCQllbHNlIGlm IChUYWlsTWF0Y2hlc0NTKCJDT01QX0tFWVdPUkRfQ0FTRSIpKQ0KZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weXNlbGVjdC5v dXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHlzZWxlY3Qub3V0 DQppbmRleCA3Mjg2NWZlMWViLi5iYjllMDI2ZjkxIDEwMDY0NA0KLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5c2VsZWN0Lm91dA0KKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5c2VsZWN0Lm91dA0K QEAgLTEyNiw3ICsxMjYsNyBAQCBjb3B5IChzZWxlY3QgMSkgdG8gc3Rkb3V0 XDsgc2VsZWN0IDEvMDsJLS0gcm93LCB0aGVuIGVycm9yDQogRVJST1I6ICBk aXZpc2lvbiBieSB6ZXJvDQogc2VsZWN0IDEvMFw7IGNvcHkgKHNlbGVjdCAx KSB0byBzdGRvdXQ7IC0tIGVycm9yIG9ubHkNCiBFUlJPUjogIGRpdmlzaW9u IGJ5IHplcm8NCi1jb3B5IChzZWxlY3QgMSkgdG8gc3Rkb3V0XDsgY29weSAo c2VsZWN0IDIpIHRvIHN0ZG91dFw7IHNlbGVjdCAwXDsgc2VsZWN0IDM7IC0t IDEgMiAzDQorY29weSAoc2VsZWN0IDEpIHRvIHN0ZG91dFw7IGNvcHkgKHNl bGVjdCAyKSB0byBzdGRvdXRcOyBzZWxlY3QgM1w7IHNlbGVjdCA0OyAtLSAx IDIgMyA0DQogMQ0KIDINCiAgP2NvbHVtbj8gDQpAQCAtMTM0LDggKzEzNCwx OCBAQCBjb3B5IChzZWxlY3QgMSkgdG8gc3Rkb3V0XDsgY29weSAoc2VsZWN0 IDIpIHRvIHN0ZG91dFw7IHNlbGVjdCAwXDsgc2VsZWN0IDM7IC0tDQogICAg ICAgICAzDQogKDEgcm93KQ0KIA0KKyA/Y29sdW1uPyANCistLS0tLS0tLS0t DQorICAgICAgICA0DQorKDEgcm93KQ0KKw0KIGNyZWF0ZSB0YWJsZSB0ZXN0 MyAoYyBpbnQpOw0KLXNlbGVjdCAwXDsgY29weSB0ZXN0MyBmcm9tIHN0ZGlu XDsgY29weSB0ZXN0MyBmcm9tIHN0ZGluXDsgc2VsZWN0IDE7IC0tIDENCitz ZWxlY3QgMFw7IGNvcHkgdGVzdDMgZnJvbSBzdGRpblw7IGNvcHkgdGVzdDMg ZnJvbSBzdGRpblw7IHNlbGVjdCAxOyAtLSAwIDENCisgP2NvbHVtbj8gDQor LS0tLS0tLS0tLQ0KKyAgICAgICAgMA0KKygxIHJvdykNCisNCiAgP2NvbHVt bj8gDQogLS0tLS0tLS0tLQ0KICAgICAgICAgMQ0KZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0DQppbmRleCA2NDI4ZWJjNTA3Li4x ODVjNTA1MzEyIDEwMDY0NA0KLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9wc3FsLm91dA0KKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9wc3FsLm91dA0KQEAgLTUyOTAsMyArNTI5MCwyNDUgQEAgRVJST1I6ICBy ZWxhdGlvbiAibm90ZXhpc3RzIiBkb2VzIG5vdCBleGlzdA0KIExJTkUgMTog U0VMRUNUICogRlJPTSBub3RleGlzdHM7DQogICAgICAgICAgICAgICAgICAg ICAgIF4NCiBTVEFURU1FTlQ6ICBTRUxFQ1QgKiBGUk9NIG5vdGV4aXN0czsN CistLQ0KKy0tIGNvbWJpbmVkIHF1ZXJpZXMNCistLQ0KK0NSRUFURSBGVU5D VElPTiB3YXJuKG1zZyBURVhUKSBSRVRVUk5TIEJPT0xFQU4gTEFOR1VBR0Ug cGxwZ3NxbA0KK0FTICQkDQorICBCRUdJTiBSQUlTRSBOT1RJQ0UgJ3dhcm4g JScsIG1zZyA7IFJFVFVSTiBUUlVFIDsgRU5EDQorJCQ7DQorLS0gc2hvdyBi b3RoDQorU0VMRUNUIDEgQVMgb25lIFw7IFNFTEVDVCB3YXJuKCcxLjUnKSBc OyBTRUxFQ1QgMiBBUyB0d28gOw0KKyBvbmUgDQorLS0tLS0NCisgICAxDQor KDEgcm93KQ0KKw0KK05PVElDRTogIHdhcm4gMS41DQorQ09OVEVYVDogIFBM L3BnU1FMIGZ1bmN0aW9uIHdhcm4odGV4dCkgbGluZSAyIGF0IFJBSVNFDQor IHdhcm4gDQorLS0tLS0tDQorIHQNCisoMSByb3cpDQorDQorIHR3byANCist LS0tLQ0KKyAgIDINCisoMSByb3cpDQorDQorLS0gXGdzZXQgYXBwbGllcyB0 byBsYXN0IHF1ZXJ5IG9ubHkNCitTRUxFQ1QgMyBBUyB0aHJlZSBcOyBTRUxF Q1Qgd2FybignMy41JykgXDsgU0VMRUNUIDQgQVMgZm91ciBcZ3NldA0KKyB0 aHJlZSANCistLS0tLS0tDQorICAgICAzDQorKDEgcm93KQ0KKw0KK05PVElD RTogIHdhcm4gMy41DQorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIHdh cm4odGV4dCkgbGluZSAyIGF0IFJBSVNFDQorIHdhcm4gDQorLS0tLS0tDQor IHQNCisoMSByb3cpDQorDQorXGVjaG8gOnRocmVlIDpmb3VyDQorOnRocmVl IDQNCistLSBzeW50YXggZXJyb3Igc3RvcHMgYWxsIHByb2Nlc3NpbmcNCitT RUxFQ1QgNSBcOyBTRUxFQ1QgNiArIFw7IFNFTEVDVCB3YXJuKCc2LjUnKSBc OyBTRUxFQ1QgNyA7DQorRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVh ciAiOyINCitMSU5FIDE6IFNFTEVDVCA1IDsgU0VMRUNUIDYgKyA7IFNFTEVD VCB3YXJuKCc2LjUnKSA7IFNFTEVDVCA3IDsNCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBeDQorLS0gd2l0aCBhYm9ydGVkIHRyYW5zYWN0aW9u LCBzdG9wIG9uIGZpcnN0IGVycm9yDQorQkVHSU4gXDsgU0VMRUNUIDggQVMg ZWlnaHQgXDsgU0VMRUNUIDkvMCBBUyBuaW5lIFw7IFJPTExCQUNLIFw7IFNF TEVDVCAxMCBBUyB0ZW4gOw0KKyBlaWdodCANCistLS0tLS0tDQorICAgICA4 DQorKDEgcm93KQ0KKw0KK0VSUk9SOiAgZGl2aXNpb24gYnkgemVybw0KKy0t IGNsb3NlIHByZXZpb3VzbHkgYWJvcnRlZCB0cmFuc2FjdGlvbg0KK1JPTExC QUNLOw0KKy0tIG1pc2NlbGxhbmVvdXMgU1FMIGNvbW1hbmRzDQorLS0gKG5v biBTRUxFQ1Qgb3V0cHV0IGlzIHNlbnQgdG8gc3RkZXJyLCB0aHVzIGlzIG5v dCBzaG93biBpbiBleHBlY3RlZCByZXN1bHRzKQ0KK1NFTEVDVCAnb2snIEFT ICJiZWdpbiIgXDsNCitDUkVBVEUgVEFCTEUgcHNxbF9jb21pY3MocyBURVhU KSBcOw0KK0lOU0VSVCBJTlRPIHBzcWxfY29taWNzIFZBTFVFUyAoJ0NhbHZp bicpLCAoJ2hvYmJlcycpIFw7DQorQ09QWSBwc3FsX2NvbWljcyBGUk9NIFNU RElOIFw7DQorVVBEQVRFIHBzcWxfY29taWNzIFNFVCBzID0gJ0hvYmJlcycg V0hFUkUgcyA9ICdob2JiZXMnIFw7DQorREVMRVRFIEZST00gcHNxbF9jb21p Y3MgV0hFUkUgcyA9ICdNb2UnIFw7DQorQ09QWSBwc3FsX2NvbWljcyBUTyBT VERPVVQgXDsNCitUUlVOQ0FURSBwc3FsX2NvbWljcyBcOw0KK0RST1AgVEFC TEUgcHNxbF9jb21pY3MgXDsNCitTRUxFQ1QgJ29rJyBBUyAiZG9uZSIgOw0K KyBiZWdpbiANCistLS0tLS0tDQorIG9rDQorKDEgcm93KQ0KKw0KK0NhbHZp bg0KK1N1c2llDQorSG9iYmVzDQorIGRvbmUgDQorLS0tLS0tDQorIG9rDQor KDEgcm93KQ0KKw0KK1xzZXQgU0hPV19BTExfUkVTVUxUUyBvZmYNCitTRUxF Q1QgMSBBUyBvbmUgXDsgU0VMRUNUIHdhcm4oJzEuNScpIFw7IFNFTEVDVCAy IEFTIHR3byA7DQorTk9USUNFOiAgd2FybiAxLjUNCitDT05URVhUOiAgUEwv cGdTUUwgZnVuY3Rpb24gd2Fybih0ZXh0KSBsaW5lIDIgYXQgUkFJU0UNCisg dHdvIA0KKy0tLS0tDQorICAgMg0KKygxIHJvdykNCisNCitcc2V0IFNIT1df QUxMX1JFU1VMVFMgb24NCitEUk9QIEZVTkNUSU9OIHdhcm4oVEVYVCk7DQor LS0NCistLSBBVVRPQ09NTUlUIGFuZCBjb21iaW5lZCBxdWVyaWVzDQorLS0N Citcc2V0IEFVVE9DT01NSVQgb2ZmDQorXGVjaG8gJyMgQVVUT0NPTU1JVDon IDpBVVRPQ09NTUlUDQorIyBBVVRPQ09NTUlUOiBvZmYNCistLSBCRUdJTiBp cyBub3cgaW1wbGljaXQNCitDUkVBVEUgVEFCTEUgZm9vKHMgVEVYVCkgXDsN CitST0xMQkFDSzsNCitDUkVBVEUgVEFCTEUgZm9vKHMgVEVYVCkgXDsNCitJ TlNFUlQgSU5UTyBmb28ocykgVkFMVUVTICgnaGVsbG8nKSwgKCd3b3JsZCcp IFw7DQorQ09NTUlUOw0KK0RST1AgVEFCTEUgZm9vIFw7DQorUk9MTEJBQ0s7 DQorLS0gdGFibGUgZm9vIGlzIHN0aWxsIHRoZXJlDQorU0VMRUNUICogRlJP TSBmb28gT1JERVIgQlkgMSBcOw0KK0RST1AgVEFCTEUgZm9vIFw7DQorQ09N TUlUOw0KKyAgIHMgICANCistLS0tLS0tDQorIGhlbGxvDQorIHdvcmxkDQor KDIgcm93cykNCisNCitcc2V0IEFVVE9DT01NSVQgb24NCitcZWNobyAnIyBB VVRPQ09NTUlUOicgOkFVVE9DT01NSVQNCisjIEFVVE9DT01NSVQ6IG9uDQor LS0gQkVHSU4gbm93IGV4cGxpY2l0IGZvciBtdWx0aS1zdGF0ZW1lbnQgdHJh bnNhY3Rpb25zDQorQkVHSU4gXDsNCitDUkVBVEUgVEFCTEUgZm9vKHMgVEVY VCkgXDsNCitJTlNFUlQgSU5UTyBmb28ocykgVkFMVUVTICgnaGVsbG8nKSwg KCd3b3JsZCcpIFw7DQorQ09NTUlUOw0KK0JFR0lOIFw7DQorRFJPUCBUQUJM RSBmb28gXDsNCitST0xMQkFDSyBcOw0KKy0tIGltcGxpY2l0IHRyYW5zYWN0 aW9ucw0KK1NFTEVDVCAqIEZST00gZm9vIE9SREVSIEJZIDEgXDsNCitEUk9Q IFRBQkxFIGZvbzsNCisgICBzICAgDQorLS0tLS0tLQ0KKyBoZWxsbw0KKyB3 b3JsZA0KKygyIHJvd3MpDQorDQorLS0NCistLSB0ZXN0IE9OX0VSUk9SX1JP TExCQUNLIGFuZCBjb21iaW5lZCBxdWVyaWVzDQorLS0NCitDUkVBVEUgRlVO Q1RJT04gcHNxbF9lcnJvcihtc2cgVEVYVCkgUkVUVVJOUyBCT09MRUFOIEFT ICQkDQorICBCRUdJTg0KKyAgICBSQUlTRSBFWENFUFRJT04gJ2Vycm9yICUn LCBtc2c7DQorICBFTkQ7DQorJCQgTEFOR1VBR0UgcGxwZ3NxbDsNCitcc2V0 IE9OX0VSUk9SX1JPTExCQUNLIG9uDQorXGVjaG8gJyMgT05fRVJST1JfUk9M TEJBQ0s6JyA6T05fRVJST1JfUk9MTEJBQ0sNCisjIE9OX0VSUk9SX1JPTExC QUNLOiBvbg0KK1xlY2hvICcjIEFVVE9DT01NSVQ6JyA6QVVUT0NPTU1JVA0K KyMgQVVUT0NPTU1JVDogb24NCitCRUdJTjsNCitDUkVBVEUgVEFCTEUgYmxh KHMgTk9fU1VDSF9UWVBFKTsgICAgICAgICAgICAgICAtLSBmYWlscw0KK0VS Uk9SOiAgdHlwZSAibm9fc3VjaF90eXBlIiBkb2VzIG5vdCBleGlzdA0KK0xJ TkUgMTogQ1JFQVRFIFRBQkxFIGJsYShzIE5PX1NVQ0hfVFlQRSk7DQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgXg0KK0NSRUFURSBUQUJMRSBibGEo cyBURVhUKTsgICAgICAgICAgICAgICAgICAgICAgIC0tIHN1Y2NlZWRzDQor U0VMRUNUIHBzcWxfZXJyb3IoJ29vcHMhJyk7ICAgICAgICAgICAgICAgICAg ICAgLS0gZmFpbHMNCitFUlJPUjogIGVycm9yIG9vcHMhDQorQ09OVEVYVDog IFBML3BnU1FMIGZ1bmN0aW9uIHBzcWxfZXJyb3IodGV4dCkgbGluZSAzIGF0 IFJBSVNFDQorSU5TRVJUIElOVE8gYmxhIFZBTFVFUyAoJ0NhbHZpbicpLCAo J0hvYmJlcycpOw0KK0NPTU1JVDsNCitTRUxFQ1QgKiBGUk9NIGJsYSBPUkRF UiBCWSAxOw0KKyAgIHMgICAgDQorLS0tLS0tLS0NCisgQ2FsdmluDQorIEhv YmJlcw0KKygyIHJvd3MpDQorDQorQkVHSU47DQorSU5TRVJUIElOVE8gYmxh IFZBTFVFUyAoJ1N1c2llJyk7ICAgICAgICAgLS0gc3VjY2VlZHMNCistLSBu b3cgd2l0aCBjb21iaW5lZCBxdWVyaWVzDQorSU5TRVJUIElOVE8gYmxhIFZB TFVFUyAoJ1Jvc2FseW4nKSBcOyAgICAgLS0gd2lsbCByb2xsYmFjaw0KK1NF TEVDVCAnYmVmb3JlIGVycm9yJyBBUyBzaG93IFw7ICAgICAgICAgIC0tIHdp bGwgc2hvdyBuZXZlcnRoZWxlc3MhDQorICBTRUxFQ1QgcHNxbF9lcnJvcign Ym91bSEnKSBcOyAgICAgICAgICAgLS0gZmFpbHVyZQ0KKyAgU0VMRUNUICdh ZnRlciBlcnJvcicgQVMgbm9zaG93OyAgICAgICAgIC0tIGhpZGRlbiBieSBw cmVjZWVkaW5nIGVycm9yDQorICAgICBzaG93ICAgICANCistLS0tLS0tLS0t LS0tLQ0KKyBiZWZvcmUgZXJyb3INCisoMSByb3cpDQorDQorRVJST1I6ICBl cnJvciBib3VtIQ0KK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBwc3Fs X2Vycm9yKHRleHQpIGxpbmUgMyBhdCBSQUlTRQ0KK0lOU0VSVCBJTlRPIGJs YShzKSBWQUxVRVMgKCdNb2UnKSBcOyAgICAgIC0tIHdpbGwgcm9sbGJhY2sN CisgIFNFTEVDVCBwc3FsX2Vycm9yKCdiYW0hJyk7DQorRVJST1I6ICBlcnJv ciBiYW0hDQorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIHBzcWxfZXJy b3IodGV4dCkgbGluZSAzIGF0IFJBSVNFDQorSU5TRVJUIElOVE8gYmxhIFZB TFVFUyAoJ01pc3MgV29ybXdvb2QnKTsgLS0gc3VjY2VlZHMNCitDT01NSVQ7 DQorU0VMRUNUICogRlJPTSBibGEgT1JERVIgQlkgMTsNCisgICAgICAgcyAg ICAgICANCistLS0tLS0tLS0tLS0tLS0NCisgQ2FsdmluDQorIEhvYmJlcw0K KyBNaXNzIFdvcm13b29kDQorIFN1c2llDQorKDQgcm93cykNCisNCistLSBz b21lIHdpdGggYXV0b2NvbW1pdCBvZmYNCitcc2V0IEFVVE9DT01NSVQgb2Zm DQorXGVjaG8gJyMgQVVUT0NPTU1JVDonIDpBVVRPQ09NTUlUDQorIyBBVVRP Q09NTUlUOiBvZmYNCistLSBpbXBsaWNpdCBCRUdJTg0KK0lOU0VSVCBJTlRP IGJsYSBWQUxVRVMgKCdEYWQnKTsgICAgICAgICAgIC0tIHN1Y2NlZWRzDQor U0VMRUNUIHBzcWxfZXJyb3IoJ2JhZCEnKTsgICAgICAgICAgICAgICAgLS0g aW1wbGljaXQgcGFydGlhbCByb2xsYmFjaw0KK0VSUk9SOiAgZXJyb3IgYmFk IQ0KK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBwc3FsX2Vycm9yKHRl eHQpIGxpbmUgMyBhdCBSQUlTRQ0KK0lOU0VSVCBJTlRPIGJsYSBWQUxVRVMg KCdNdW0nKSBcOyAgICAgICAgIC0tIHdpbGwgcm9sbGJhY2sNCitTRUxFQ1Qg Q09VTlQoKikgQVMgIiNtdW0iDQorRlJPTSBibGEgV0hFUkUgcyA9ICdNdW0n IFw7ICAgICAgICAgICAgICAgLS0gYnV0IGJlIGNvdW50ZWQgaGVyZQ0KK1NF TEVDVCBwc3FsX2Vycm9yKCdiYWQhJyk7ICAgICAgICAgICAgICAgIC0tIGlt cGxpY2l0IHBhcnRpYWwgcm9sbGJhY2sNCisgI211bSANCistLS0tLS0NCisg ICAgMQ0KKygxIHJvdykNCisNCitFUlJPUjogIGVycm9yIGJhZCENCitDT05U RVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gcHNxbF9lcnJvcih0ZXh0KSBsaW5l IDMgYXQgUkFJU0UNCitDT01NSVQ7DQorU0VMRUNUIENPVU5UKCopIEFTICIj bXVtIg0KK0ZST00gYmxhIFdIRVJFIHMgPSAnTXVtJyBcOyAgICAgICAgICAg ICAgIC0tIG5vIG11bSBoZXJlDQorU0VMRUNUICogRlJPTSBibGEgT1JERVIg QlkgMTsNCisgI211bSANCistLS0tLS0NCisgICAgMA0KKygxIHJvdykNCisN CisgICAgICAgcyAgICAgICANCistLS0tLS0tLS0tLS0tLS0NCisgQ2Fsdmlu DQorIERhZA0KKyBIb2JiZXMNCisgTWlzcyBXb3Jtd29vZA0KKyBTdXNpZQ0K Kyg1IHJvd3MpDQorDQorLS0gcmVzZXQgYWxsDQorXHNldCBBVVRPQ09NTUlU IG9uDQorXHNldCBPTl9FUlJPUl9ST0xMQkFDSyBvZmYNCitcZWNobyAnIyBm aW5hbCBPTl9FUlJPUl9ST0xMQkFDSzonIDpPTl9FUlJPUl9ST0xMQkFDSw0K KyMgZmluYWwgT05fRVJST1JfUk9MTEJBQ0s6IG9mZg0KK0RST1AgVEFCTEUg YmxhOw0KK0RST1AgRlVOQ1RJT04gcHNxbF9lcnJvcjsNCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RyYW5zYWN0aW9ucy5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RyYW5zYWN0aW9ucy5vdXQN CmluZGV4IDU5OWQ1MTFhNjcuLmE0NmZhNWQ0OGEgMTAwNjQ0DQotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RyYW5zYWN0aW9ucy5vdXQNCisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHJhbnNhY3Rpb25zLm91 dA0KQEAgLTkwNCw4ICs5MDQsMTggQEAgRFJPUCBUQUJMRSBhYmM7DQogLS0g dGVzdHMgcmVseSBvbiB0aGUgZmFjdCB0aGF0IHBzcWwgd2lsbCBub3QgYnJl YWsgU1FMIGNvbW1hbmRzIGFwYXJ0IGF0IGENCiAtLSBiYWNrc2xhc2gtcXVv dGVkIHNlbWljb2xvbiwgYnV0IHdpbGwgc2VuZCB0aGVtIGFzIG9uZSBRdWVy eS4NCiBjcmVhdGUgdGVtcCB0YWJsZSBpX3RhYmxlIChmMSBpbnQpOw0KLS0t IHBzcWwgd2lsbCBzaG93IG9ubHkgdGhlIGxhc3QgcmVzdWx0IGluIGEgbXVs dGktc3RhdGVtZW50IFF1ZXJ5DQorLS0gcHNxbCB3aWxsIHNob3cgYWxsIHJl c3VsdHMgb2YgYSBtdWx0aS1zdGF0ZW1lbnQgUXVlcnkNCiBTRUxFQ1QgMVw7 IFNFTEVDVCAyXDsgU0VMRUNUIDM7DQorID9jb2x1bW4/IA0KKy0tLS0tLS0t LS0NCisgICAgICAgIDENCisoMSByb3cpDQorDQorID9jb2x1bW4/IA0KKy0t LS0tLS0tLS0NCisgICAgICAgIDINCisoMSByb3cpDQorDQogID9jb2x1bW4/ IA0KIC0tLS0tLS0tLS0NCiAgICAgICAgIDMNCkBAIC05MjAsNiArOTMwLDEy IEBAIGluc2VydCBpbnRvIGlfdGFibGUgdmFsdWVzKDEpXDsgc2VsZWN0ICog ZnJvbSBpX3RhYmxlOw0KIA0KIC0tIDEvMCBlcnJvciB3aWxsIGNhdXNlIHJv bGxpbmcgYmFjayB0aGUgd2hvbGUgaW1wbGljaXQgdHJhbnNhY3Rpb24NCiBp bnNlcnQgaW50byBpX3RhYmxlIHZhbHVlcygyKVw7IHNlbGVjdCAqIGZyb20g aV90YWJsZVw7IHNlbGVjdCAxLzA7DQorIGYxIA0KKy0tLS0NCisgIDENCisg IDINCisoMiByb3dzKQ0KKw0KIEVSUk9SOiAgZGl2aXNpb24gYnkgemVybw0K IHNlbGVjdCAqIGZyb20gaV90YWJsZTsNCiAgZjEgDQpAQCAtOTM5LDggKzk1 NSwxOCBAQCBXQVJOSU5HOiAgdGhlcmUgaXMgbm8gdHJhbnNhY3Rpb24gaW4g cHJvZ3Jlc3MNCiAtLSBiZWdpbiBjb252ZXJ0cyBpbXBsaWNpdCB0cmFuc2Fj dGlvbiBpbnRvIGEgcmVndWxhciBvbmUgdGhhdA0KIC0tIGNhbiBleHRlbmQg cGFzdCB0aGUgZW5kIG9mIHRoZSBRdWVyeQ0KIHNlbGVjdCAxXDsgYmVnaW5c OyBpbnNlcnQgaW50byBpX3RhYmxlIHZhbHVlcyg1KTsNCisgP2NvbHVtbj8g DQorLS0tLS0tLS0tLQ0KKyAgICAgICAgMQ0KKygxIHJvdykNCisNCiBjb21t aXQ7DQogc2VsZWN0IDFcOyBiZWdpblw7IGluc2VydCBpbnRvIGlfdGFibGUg dmFsdWVzKDYpOw0KKyA/Y29sdW1uPyANCistLS0tLS0tLS0tDQorICAgICAg ICAxDQorKDEgcm93KQ0KKw0KIHJvbGxiYWNrOw0KIC0tIGNvbW1pdCBpbiBp bXBsaWNpdC10cmFuc2FjdGlvbiBzdGF0ZSBjb21taXRzIGJ1dCBpc3N1ZXMg YSB3YXJuaW5nLg0KIGluc2VydCBpbnRvIGlfdGFibGUgdmFsdWVzKDcpXDsg Y29tbWl0XDsgaW5zZXJ0IGludG8gaV90YWJsZSB2YWx1ZXMoOClcOyBzZWxl Y3QgMS8wOw0KQEAgLTk2NywyMiArOTkzLDUyIEBAIHJvbGxiYWNrOyAgLS0g d2UgYXJlIG5vdCBpbiBhIHRyYW5zYWN0aW9uIGF0IHRoaXMgcG9pbnQNCiBX QVJOSU5HOiAgdGhlcmUgaXMgbm8gdHJhbnNhY3Rpb24gaW4gcHJvZ3Jlc3MN CiAtLSBpbXBsaWNpdCB0cmFuc2FjdGlvbiBibG9jayBpcyBzdGlsbCBhIHRy YW5zYWN0aW9uIGJsb2NrLCBmb3IgZS5nLiBWQUNVVU0NCiBTRUxFQ1QgMVw7 IFZBQ1VVTTsNCisgP2NvbHVtbj8gDQorLS0tLS0tLS0tLQ0KKyAgICAgICAg MQ0KKygxIHJvdykNCisNCiBFUlJPUjogIFZBQ1VVTSBjYW5ub3QgcnVuIGlu c2lkZSBhIHRyYW5zYWN0aW9uIGJsb2NrDQogU0VMRUNUIDFcOyBDT01NSVRc OyBWQUNVVU07DQogV0FSTklORzogIHRoZXJlIGlzIG5vIHRyYW5zYWN0aW9u IGluIHByb2dyZXNzDQorID9jb2x1bW4/IA0KKy0tLS0tLS0tLS0NCisgICAg ICAgIDENCisoMSByb3cpDQorDQogRVJST1I6ICBWQUNVVU0gY2Fubm90IHJ1 biBpbnNpZGUgYSB0cmFuc2FjdGlvbiBibG9jaw0KIC0tIHdlIGRpc2FsbG93 IHNhdmVwb2ludC1yZWxhdGVkIGNvbW1hbmRzIGluIGltcGxpY2l0LXRyYW5z YWN0aW9uIHN0YXRlDQogU0VMRUNUIDFcOyBTQVZFUE9JTlQgc3A7DQorID9j b2x1bW4/IA0KKy0tLS0tLS0tLS0NCisgICAgICAgIDENCisoMSByb3cpDQor DQogRVJST1I6ICBTQVZFUE9JTlQgY2FuIG9ubHkgYmUgdXNlZCBpbiB0cmFu c2FjdGlvbiBibG9ja3MNCiBTRUxFQ1QgMVw7IENPTU1JVFw7IFNBVkVQT0lO VCBzcDsNCiBXQVJOSU5HOiAgdGhlcmUgaXMgbm8gdHJhbnNhY3Rpb24gaW4g cHJvZ3Jlc3MNCisgP2NvbHVtbj8gDQorLS0tLS0tLS0tLQ0KKyAgICAgICAg MQ0KKygxIHJvdykNCisNCiBFUlJPUjogIFNBVkVQT0lOVCBjYW4gb25seSBi ZSB1c2VkIGluIHRyYW5zYWN0aW9uIGJsb2Nrcw0KIFJPTExCQUNLIFRPIFNB VkVQT0lOVCBzcFw7IFNFTEVDVCAyOw0KIEVSUk9SOiAgUk9MTEJBQ0sgVE8g U0FWRVBPSU5UIGNhbiBvbmx5IGJlIHVzZWQgaW4gdHJhbnNhY3Rpb24gYmxv Y2tzDQogU0VMRUNUIDJcOyBSRUxFQVNFIFNBVkVQT0lOVCBzcFw7IFNFTEVD VCAzOw0KKyA/Y29sdW1uPyANCistLS0tLS0tLS0tDQorICAgICAgICAyDQor KDEgcm93KQ0KKw0KIEVSUk9SOiAgUkVMRUFTRSBTQVZFUE9JTlQgY2FuIG9u bHkgYmUgdXNlZCBpbiB0cmFuc2FjdGlvbiBibG9ja3MNCiAtLSBidXQgdGhp cyBpcyBPSywgYmVjYXVzZSB0aGUgQkVHSU4gY29udmVydHMgaXQgdG8gYSBy ZWd1bGFyIHhhY3QNCiBTRUxFQ1QgMVw7IEJFR0lOXDsgU0FWRVBPSU5UIHNw XDsgUk9MTEJBQ0sgVE8gU0FWRVBPSU5UIHNwXDsgQ09NTUlUOw0KKyA/Y29s dW1uPyANCistLS0tLS0tLS0tDQorICAgICAgICAxDQorKDEgcm93KQ0KKw0K IC0tIFRlc3RzIGZvciBBTkQgQ0hBSU4gaW4gaW1wbGljaXQgdHJhbnNhY3Rp b24gYmxvY2tzDQogU0VUIFRSQU5TQUNUSU9OIFJFQUQgT05MWVw7IENPTU1J VCBBTkQgQ0hBSU47ICAtLSBlcnJvcg0KIEVSUk9SOiAgQ09NTUlUIEFORCBD SEFJTiBjYW4gb25seSBiZSB1c2VkIGluIHRyYW5zYWN0aW9uIGJsb2Nrcw0K ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHlzZWxlY3Qu c3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weXNlbGVjdC5zcWwNCmlu ZGV4IDFkOThkYWQzYzguLmUzMmE0ZjhlMzggMTAwNjQ0DQotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9jb3B5c2VsZWN0LnNxbA0KKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvY29weXNlbGVjdC5zcWwNCkBAIC04NCwxMCArODQs MTAgQEAgZHJvcCB0YWJsZSB0ZXN0MTsNCiAtLSBwc3FsIGhhbmRsaW5nIG9m IENPUFkgaW4gbXVsdGktY29tbWFuZCBzdHJpbmdzDQogY29weSAoc2VsZWN0 IDEpIHRvIHN0ZG91dFw7IHNlbGVjdCAxLzA7CS0tIHJvdywgdGhlbiBlcnJv cg0KIHNlbGVjdCAxLzBcOyBjb3B5IChzZWxlY3QgMSkgdG8gc3Rkb3V0OyAt LSBlcnJvciBvbmx5DQotY29weSAoc2VsZWN0IDEpIHRvIHN0ZG91dFw7IGNv cHkgKHNlbGVjdCAyKSB0byBzdGRvdXRcOyBzZWxlY3QgMFw7IHNlbGVjdCAz OyAtLSAxIDIgMw0KK2NvcHkgKHNlbGVjdCAxKSB0byBzdGRvdXRcOyBjb3B5 IChzZWxlY3QgMikgdG8gc3Rkb3V0XDsgc2VsZWN0IDNcOyBzZWxlY3QgNDsg LS0gMSAyIDMgNA0KIA0KIGNyZWF0ZSB0YWJsZSB0ZXN0MyAoYyBpbnQpOw0K LXNlbGVjdCAwXDsgY29weSB0ZXN0MyBmcm9tIHN0ZGluXDsgY29weSB0ZXN0 MyBmcm9tIHN0ZGluXDsgc2VsZWN0IDE7IC0tIDENCitzZWxlY3QgMFw7IGNv cHkgdGVzdDMgZnJvbSBzdGRpblw7IGNvcHkgdGVzdDMgZnJvbSBzdGRpblw7 IHNlbGVjdCAxOyAtLSAwIDENCiAxDQogXC4NCiAyDQpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvcHNxbC5zcWwgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9wc3FsLnNxbA0KaW5kZXggMGY1Mjg3Zjc3Yi4uOGY0OWE1ZjM0 NyAxMDA2NDQNCi0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BzcWwuc3Fs DQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wc3FsLnNxbA0KQEAgLTEz MTYsMyArMTMxNiwxNDQgQEAgRFJPUCBUQUJMRSBvZXJfdGVzdDsNCiBcc2V0 IEVDSE8gZXJyb3JzDQogU0VMRUNUICogRlJPTSBub3RleGlzdHM7DQogXHNl dCBFQ0hPIGFsbA0KKw0KKy0tDQorLS0gY29tYmluZWQgcXVlcmllcw0KKy0t DQorQ1JFQVRFIEZVTkNUSU9OIHdhcm4obXNnIFRFWFQpIFJFVFVSTlMgQk9P TEVBTiBMQU5HVUFHRSBwbHBnc3FsDQorQVMgJCQNCisgIEJFR0lOIFJBSVNF IE5PVElDRSAnd2FybiAlJywgbXNnIDsgUkVUVVJOIFRSVUUgOyBFTkQNCisk JDsNCisNCistLSBzaG93IGJvdGgNCitTRUxFQ1QgMSBBUyBvbmUgXDsgU0VM RUNUIHdhcm4oJzEuNScpIFw7IFNFTEVDVCAyIEFTIHR3byA7DQorLS0gXGdz ZXQgYXBwbGllcyB0byBsYXN0IHF1ZXJ5IG9ubHkNCitTRUxFQ1QgMyBBUyB0 aHJlZSBcOyBTRUxFQ1Qgd2FybignMy41JykgXDsgU0VMRUNUIDQgQVMgZm91 ciBcZ3NldA0KK1xlY2hvIDp0aHJlZSA6Zm91cg0KKy0tIHN5bnRheCBlcnJv ciBzdG9wcyBhbGwgcHJvY2Vzc2luZw0KK1NFTEVDVCA1IFw7IFNFTEVDVCA2 ICsgXDsgU0VMRUNUIHdhcm4oJzYuNScpIFw7IFNFTEVDVCA3IDsNCistLSB3 aXRoIGFib3J0ZWQgdHJhbnNhY3Rpb24sIHN0b3Agb24gZmlyc3QgZXJyb3IN CitCRUdJTiBcOyBTRUxFQ1QgOCBBUyBlaWdodCBcOyBTRUxFQ1QgOS8wIEFT IG5pbmUgXDsgUk9MTEJBQ0sgXDsgU0VMRUNUIDEwIEFTIHRlbiA7DQorLS0g Y2xvc2UgcHJldmlvdXNseSBhYm9ydGVkIHRyYW5zYWN0aW9uDQorUk9MTEJB Q0s7DQorDQorLS0gbWlzY2VsbGFuZW91cyBTUUwgY29tbWFuZHMNCistLSAo bm9uIFNFTEVDVCBvdXRwdXQgaXMgc2VudCB0byBzdGRlcnIsIHRodXMgaXMg bm90IHNob3duIGluIGV4cGVjdGVkIHJlc3VsdHMpDQorU0VMRUNUICdvaycg QVMgImJlZ2luIiBcOw0KK0NSRUFURSBUQUJMRSBwc3FsX2NvbWljcyhzIFRF WFQpIFw7DQorSU5TRVJUIElOVE8gcHNxbF9jb21pY3MgVkFMVUVTICgnQ2Fs dmluJyksICgnaG9iYmVzJykgXDsNCitDT1BZIHBzcWxfY29taWNzIEZST00g U1RESU4gXDsNCitVUERBVEUgcHNxbF9jb21pY3MgU0VUIHMgPSAnSG9iYmVz JyBXSEVSRSBzID0gJ2hvYmJlcycgXDsNCitERUxFVEUgRlJPTSBwc3FsX2Nv bWljcyBXSEVSRSBzID0gJ01vZScgXDsNCitDT1BZIHBzcWxfY29taWNzIFRP IFNURE9VVCBcOw0KK1RSVU5DQVRFIHBzcWxfY29taWNzIFw7DQorRFJPUCBU QUJMRSBwc3FsX2NvbWljcyBcOw0KK1NFTEVDVCAnb2snIEFTICJkb25lIiA7 DQorTW9lDQorU3VzaWUNCitcLg0KKw0KK1xzZXQgU0hPV19BTExfUkVTVUxU UyBvZmYNCitTRUxFQ1QgMSBBUyBvbmUgXDsgU0VMRUNUIHdhcm4oJzEuNScp IFw7IFNFTEVDVCAyIEFTIHR3byA7DQorDQorXHNldCBTSE9XX0FMTF9SRVNV TFRTIG9uDQorRFJPUCBGVU5DVElPTiB3YXJuKFRFWFQpOw0KKw0KKy0tDQor LS0gQVVUT0NPTU1JVCBhbmQgY29tYmluZWQgcXVlcmllcw0KKy0tDQorXHNl dCBBVVRPQ09NTUlUIG9mZg0KK1xlY2hvICcjIEFVVE9DT01NSVQ6JyA6QVVU T0NPTU1JVA0KKy0tIEJFR0lOIGlzIG5vdyBpbXBsaWNpdA0KKw0KK0NSRUFU RSBUQUJMRSBmb28ocyBURVhUKSBcOw0KK1JPTExCQUNLOw0KKw0KK0NSRUFU RSBUQUJMRSBmb28ocyBURVhUKSBcOw0KK0lOU0VSVCBJTlRPIGZvbyhzKSBW QUxVRVMgKCdoZWxsbycpLCAoJ3dvcmxkJykgXDsNCitDT01NSVQ7DQorDQor RFJPUCBUQUJMRSBmb28gXDsNCitST0xMQkFDSzsNCisNCistLSB0YWJsZSBm b28gaXMgc3RpbGwgdGhlcmUNCitTRUxFQ1QgKiBGUk9NIGZvbyBPUkRFUiBC WSAxIFw7DQorRFJPUCBUQUJMRSBmb28gXDsNCitDT01NSVQ7DQorDQorXHNl dCBBVVRPQ09NTUlUIG9uDQorXGVjaG8gJyMgQVVUT0NPTU1JVDonIDpBVVRP Q09NTUlUDQorLS0gQkVHSU4gbm93IGV4cGxpY2l0IGZvciBtdWx0aS1zdGF0 ZW1lbnQgdHJhbnNhY3Rpb25zDQorDQorQkVHSU4gXDsNCitDUkVBVEUgVEFC TEUgZm9vKHMgVEVYVCkgXDsNCitJTlNFUlQgSU5UTyBmb28ocykgVkFMVUVT ICgnaGVsbG8nKSwgKCd3b3JsZCcpIFw7DQorQ09NTUlUOw0KKw0KK0JFR0lO IFw7DQorRFJPUCBUQUJMRSBmb28gXDsNCitST0xMQkFDSyBcOw0KKw0KKy0t IGltcGxpY2l0IHRyYW5zYWN0aW9ucw0KK1NFTEVDVCAqIEZST00gZm9vIE9S REVSIEJZIDEgXDsNCitEUk9QIFRBQkxFIGZvbzsNCisNCistLQ0KKy0tIHRl c3QgT05fRVJST1JfUk9MTEJBQ0sgYW5kIGNvbWJpbmVkIHF1ZXJpZXMNCist LQ0KK0NSRUFURSBGVU5DVElPTiBwc3FsX2Vycm9yKG1zZyBURVhUKSBSRVRV Uk5TIEJPT0xFQU4gQVMgJCQNCisgIEJFR0lODQorICAgIFJBSVNFIEVYQ0VQ VElPTiAnZXJyb3IgJScsIG1zZzsNCisgIEVORDsNCiskJCBMQU5HVUFHRSBw bHBnc3FsOw0KKw0KK1xzZXQgT05fRVJST1JfUk9MTEJBQ0sgb24NCitcZWNo byAnIyBPTl9FUlJPUl9ST0xMQkFDSzonIDpPTl9FUlJPUl9ST0xMQkFDSw0K K1xlY2hvICcjIEFVVE9DT01NSVQ6JyA6QVVUT0NPTU1JVA0KKw0KK0JFR0lO Ow0KK0NSRUFURSBUQUJMRSBibGEocyBOT19TVUNIX1RZUEUpOyAgICAgICAg ICAgICAgIC0tIGZhaWxzDQorQ1JFQVRFIFRBQkxFIGJsYShzIFRFWFQpOyAg ICAgICAgICAgICAgICAgICAgICAgLS0gc3VjY2VlZHMNCitTRUxFQ1QgcHNx bF9lcnJvcignb29wcyEnKTsgICAgICAgICAgICAgICAgICAgICAtLSBmYWls cw0KK0lOU0VSVCBJTlRPIGJsYSBWQUxVRVMgKCdDYWx2aW4nKSwgKCdIb2Ji ZXMnKTsNCitDT01NSVQ7DQorDQorU0VMRUNUICogRlJPTSBibGEgT1JERVIg QlkgMTsNCisNCitCRUdJTjsNCitJTlNFUlQgSU5UTyBibGEgVkFMVUVTICgn U3VzaWUnKTsgICAgICAgICAtLSBzdWNjZWVkcw0KKy0tIG5vdyB3aXRoIGNv bWJpbmVkIHF1ZXJpZXMNCitJTlNFUlQgSU5UTyBibGEgVkFMVUVTICgnUm9z YWx5bicpIFw7ICAgICAtLSB3aWxsIHJvbGxiYWNrDQorU0VMRUNUICdiZWZv cmUgZXJyb3InIEFTIHNob3cgXDsgICAgICAgICAgLS0gd2lsbCBzaG93IG5l dmVydGhlbGVzcyENCisgIFNFTEVDVCBwc3FsX2Vycm9yKCdib3VtIScpIFw7 ICAgICAgICAgICAtLSBmYWlsdXJlDQorICBTRUxFQ1QgJ2FmdGVyIGVycm9y JyBBUyBub3Nob3c7ICAgICAgICAgLS0gaGlkZGVuIGJ5IHByZWNlZWRpbmcg ZXJyb3INCitJTlNFUlQgSU5UTyBibGEocykgVkFMVUVTICgnTW9lJykgXDsg ICAgICAtLSB3aWxsIHJvbGxiYWNrDQorICBTRUxFQ1QgcHNxbF9lcnJvcign YmFtIScpOw0KK0lOU0VSVCBJTlRPIGJsYSBWQUxVRVMgKCdNaXNzIFdvcm13 b29kJyk7IC0tIHN1Y2NlZWRzDQorQ09NTUlUOw0KK1NFTEVDVCAqIEZST00g YmxhIE9SREVSIEJZIDE7DQorDQorLS0gc29tZSB3aXRoIGF1dG9jb21taXQg b2ZmDQorXHNldCBBVVRPQ09NTUlUIG9mZg0KK1xlY2hvICcjIEFVVE9DT01N SVQ6JyA6QVVUT0NPTU1JVA0KKw0KKy0tIGltcGxpY2l0IEJFR0lODQorSU5T RVJUIElOVE8gYmxhIFZBTFVFUyAoJ0RhZCcpOyAgICAgICAgICAgLS0gc3Vj Y2VlZHMNCitTRUxFQ1QgcHNxbF9lcnJvcignYmFkIScpOyAgICAgICAgICAg ICAgICAtLSBpbXBsaWNpdCBwYXJ0aWFsIHJvbGxiYWNrDQorDQorSU5TRVJU IElOVE8gYmxhIFZBTFVFUyAoJ011bScpIFw7ICAgICAgICAgLS0gd2lsbCBy b2xsYmFjaw0KK1NFTEVDVCBDT1VOVCgqKSBBUyAiI211bSINCitGUk9NIGJs YSBXSEVSRSBzID0gJ011bScgXDsgICAgICAgICAgICAgICAtLSBidXQgYmUg Y291bnRlZCBoZXJlDQorU0VMRUNUIHBzcWxfZXJyb3IoJ2JhZCEnKTsgICAg ICAgICAgICAgICAgLS0gaW1wbGljaXQgcGFydGlhbCByb2xsYmFjaw0KK0NP TU1JVDsNCisNCitTRUxFQ1QgQ09VTlQoKikgQVMgIiNtdW0iDQorRlJPTSBi bGEgV0hFUkUgcyA9ICdNdW0nIFw7ICAgICAgICAgICAgICAgLS0gbm8gbXVt IGhlcmUNCitTRUxFQ1QgKiBGUk9NIGJsYSBPUkRFUiBCWSAxOw0KKw0KKy0t IHJlc2V0IGFsbA0KK1xzZXQgQVVUT0NPTU1JVCBvbg0KK1xzZXQgT05fRVJS T1JfUk9MTEJBQ0sgb2ZmDQorXGVjaG8gJyMgZmluYWwgT05fRVJST1JfUk9M TEJBQ0s6JyA6T05fRVJST1JfUk9MTEJBQ0sNCitEUk9QIFRBQkxFIGJsYTsN CitEUk9QIEZVTkNUSU9OIHBzcWxfZXJyb3I7DQpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvdHJhbnNhY3Rpb25zLnNxbCBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3RyYW5zYWN0aW9ucy5zcWwNCmluZGV4IDBhNzE2YjUw NmIuLmQ3MWMzY2U5M2UgMTAwNjQ0DQotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC90cmFuc2FjdGlvbnMuc3FsDQorKysgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC90cmFuc2FjdGlvbnMuc3FsDQpAQCAtNTA2LDcgKzUwNiw3IEBAIERS T1AgVEFCTEUgYWJjOw0KIA0KIGNyZWF0ZSB0ZW1wIHRhYmxlIGlfdGFibGUg KGYxIGludCk7DQogDQotLS0gcHNxbCB3aWxsIHNob3cgb25seSB0aGUgbGFz dCByZXN1bHQgaW4gYSBtdWx0aS1zdGF0ZW1lbnQgUXVlcnkNCistLSBwc3Fs IHdpbGwgc2hvdyBhbGwgcmVzdWx0cyBvZiBhIG11bHRpLXN0YXRlbWVudCBR dWVyeQ0KIFNFTEVDVCAxXDsgU0VMRUNUIDJcOyBTRUxFQ1QgMzsNCiANCiAt LSB0aGlzIGltcGxpY2l0bHkgY29tbWl0czoNCg== --2056645051-273700721-1648745657=:1072349--