From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 70291 invoked by alias); 13 Jan 2020 20:20:47 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 70274 invoked by uid 89); 13 Jan 2020 20:20:46 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-19.4 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_SHORT,SPAM_BODY,SPF_HELO_PASS autolearn=ham version=3.3.1 spammy=HX-Spam-Relays-External:10.253.24.52, H*RU:10.253.24.52 X-HELO: mga12.intel.com Received: from mga12.intel.com (HELO mga12.intel.com) (192.55.52.136) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 13 Jan 2020 20:20:41 +0000 Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Jan 2020 12:20:39 -0800 Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by fmsmga007.fm.intel.com with ESMTP; 13 Jan 2020 12:20:39 -0800 Received: from fmsmsx608.amr.corp.intel.com (10.18.126.88) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 13 Jan 2020 12:20:39 -0800 Received: from fmsmsx608.amr.corp.intel.com (10.18.126.88) by fmsmsx608.amr.corp.intel.com (10.18.126.88) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Mon, 13 Jan 2020 12:20:39 -0800 Received: from FMSEDG002.ED.cps.intel.com (10.1.192.134) by fmsmsx608.amr.corp.intel.com (10.18.126.88) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Mon, 13 Jan 2020 12:20:39 -0800 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.169) by edgegateway.intel.com (192.55.55.69) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 13 Jan 2020 12:20:35 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lOIviVvBPg+n8vB4oCPGSXYeTd5gRt90LowIVKWwjMTOw4GSbjb9N8UQVwy5teGr/arT8NJVfYu/B9lWqa4f7k3Q5nYfrPx1DK0CLxj+UyYTUs919unt0X0WpyataWa6u97G2dr3lx7+320LWwpxYXdKF6Chel7CIe+NyN5WlLNB9cjgU34GYRhEx3FulFdy+v7TKDV+FSif5Fcqio82FJjyURs4Sul0Rjaw7Y1ZbEDVuAzOZRE2J9CeGDoMtZllrzBCW9v6qmSVaUK5hJR7usyBhuT2QXHDHgZrFscp6Grz4FXGD6UN0AW4T4hk6FQ62sivT9lvLWecCgxbc5DK/A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jAIj+OYoupIH+viX66A42xWnyj4fhHzg081tVfpZ6Iw=; b=SnG8A0JEvNhCt7fY7H1WZazNHxcgNY8umRoJOg0eIsqOuzhZFcuQVkyhELyvtmKOjWuj+VlZnUTl4AjTatyNTZQ/P0t/SXM8VoZmGlfN3OKgrSG3Ox5JTPKIN/ytk9YxvNf9BASmAxoE3+/7SvF0bXFmrI5Bq7vRldpvbhXSsKsdInLEw2s7IIrugsuZEV8YJGp3wz7gLap0Tgkue7EcIzuQzytKL/YxOZ9AQt4/BVN0ZHS1A6/xGWvZFTMc/JFIK0IwlNWHSP5rXvqt8gxcqaVq1f8WZy7V9fzGndqFpwVOCePYA+tCKXcEYSkAGcM5CQV/Sb0/xps3U6PKGRd1iQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jAIj+OYoupIH+viX66A42xWnyj4fhHzg081tVfpZ6Iw=; b=STehyKGeBDatLniM1rcVYDBIVeanZ1PC5OKczDNe5C3dkktCl9BvqGYwNoHorDhkEo2FCGngWd3N84lnSKy6+RcS8XuwwE5hvQmcNiIc88m6SHCMR6UJEDiXB24PHMmyPRaBqZ1fuAr/DBkGBnv7We8icK5Z/K5cSK/CdBsNQFk= Received: from BYAPR11MB3030.namprd11.prod.outlook.com (20.177.225.91) by BYAPR11MB2822.namprd11.prod.outlook.com (52.135.228.28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2623.13; Mon, 13 Jan 2020 20:20:32 +0000 Received: from BYAPR11MB3030.namprd11.prod.outlook.com ([fe80::2c94:a4bd:2d9c:30b]) by BYAPR11MB3030.namprd11.prod.outlook.com ([fe80::2c94:a4bd:2d9c:30b%6]) with mapi id 15.20.2623.015; Mon, 13 Jan 2020 20:20:32 +0000 From: "Aktemur, Tankut Baris" To: Luis Machado , "tromey@sourceware.org" , "gdb-patches@sourceware.org" , "Tankut Baris Aktemur (Code Review)" Subject: RE: [review v3] testsuite, cp: increase the coverage of testing pass-by-ref arguments Date: Mon, 13 Jan 2020 20:21:00 -0000 Message-ID: References: <20191214095325.3864520AF6@gnutoolchain-gerrit.osci.io> <80c8502f-a350-6a2b-0b72-bbc903f53bc3@linaro.org> In-Reply-To: authentication-results: spf=none (sender IP is ) smtp.mailfrom=tankut.baris.aktemur@intel.com; x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 3B56a368CRfw2wIcjLvWM98vp5RgT1zurVA/T/8DA133jOac4QQjxrskEi1kujSmFdkZscH+YyIqE2huuCEpCRC/I8ieUULeAfbDguSaeNk= Return-Path: tankut.baris.aktemur@intel.com Content-Transfer-Encoding: base64 X-IsSubscribed: yes X-SW-Source: 2020-01/txt/msg00353.txt.bz2 T24gTW9uZGF5LCBKYW51YXJ5IDEzLCAyMDIwIDg6MzggUE0sIEx1aXMgTWFj aGFkbyB3cm90ZToNCj4gDQo+IE9uIDEvMTMvMjAgNDozNSBQTSwgQWt0ZW11 ciwgVGFua3V0IEJhcmlzIHdyb3RlOg0KPiA+IE9uIE1vbmRheSwgSmFudWFy eSAxMywgMjAyMCA3OjIxIFBNLCBMdWlzIE1hY2hhZG8gd3JvdGU6DQo+ID4+ DQo+ID4+IEhpLA0KPiA+Pg0KPiA+PiBJIG5vdGljZWQgdGhlc2UgbmV3IHRl c3RzIGZhaWwgKGluIGxhcmdlIG51bWJlcnMpIGZvciBHQ0MgNS40LnguIElz IGl0DQo+ID4+IGV4cGVjdGVkPyBJZiBzbywgaXQgbWF5IGJlIHdvcnRoIG1h a2luZyB0aGlzIHRlc3QgY29uZGl0aW9uYWwgb24gbmV3ZXINCj4gPj4gR0ND IHZlcnNpb25zLg0KPiA+Pg0KPiA+DQo+ID4gWWVzLCB0aGlzIGlzIGV4cGVj dGVkLiBPbGRlciBHQ0MgdmVyc2lvbnMgZGlkIG5vdCBlbWl0IGNlcnRhaW4g RFdBUkYgYXR0cmlidXRlcw0KPiA+IChEV19BVF9kZWxldGVkLCBEV19BVF9k ZWZhdWx0ZWQpLiAgVGhpcyBwcmV2ZW50cyBHREIgZnJvbSBtYWtpbmcgdGhl IHJpZ2h0DQo+ID4gcGFzcy1ieS1yZWZlcmVuY2UgZGVjaXNpb24uICBJJ2xs IHN1Ym1pdCBhIHBhdGNoIGZvciB0aGlzLg0KPiANCj4gVGhhbmtzIGZvciBj bGFyaWZ5aW5nIHRoaXMuDQo+IA0KPiBJIGNhbiBzdWJtaXQgdGhhdCBwYXRj aCBpZiB5b3UgbGlrZS4gSSBoYXZlIGEgYm94IHJ1bm5pbmcgYW4gb2xkZXIg R0NDLA0KPiBzbyBpIG5vdGljZWQgdGhhdCBhbmQgdGhvdWdodCBpJ2QgY2hl Y2suDQo+IA0KPiBMdWlzDQoNClllcywgc3VyZS4NCg0KVGhhbmsgeW91Lg0K DQotQmFyaXMNCg0KPiANCj4gPg0KPiA+IFRoYW5rcyBmb3IgdGhlIHN1Z2dl c3Rpb24uDQo+ID4NCj4gPiAtQmFyaXMNCj4gPg0KPiA+PiBPbiAxMi8xNC8x OSA2OjUzIEFNLCBUYW5rdXQgQmFyaXMgQWt0ZW11ciAoQ29kZSBSZXZpZXcp IHdyb3RlOg0KPiA+Pj4gQ2hhbmdlIFVSTDogaHR0cHM6Ly9nbnV0b29sY2hh aW4tZ2Vycml0Lm9zY2kuaW8vci9jL2JpbnV0aWxzLWdkYi8rLzE0Mg0KPiA+ Pj4gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLg0KPiA+Pj4NCj4gPj4+IHRl c3RzdWl0ZSwgY3A6IGluY3JlYXNlIHRoZSBjb3ZlcmFnZSBvZiB0ZXN0aW5n IHBhc3MtYnktcmVmIGFyZ3VtZW50cw0KPiA+Pj4NCj4gPj4+IEV4dGVuZCB0 ZXN0Y2FzZXMgZm9yIEdEQidzIGluZmNhbGwgb2YgY2FsbC1ieS12YWx1ZSBm dW5jdGlvbnMgdGhhdA0KPiA+Pj4gdGFrZSBhZ2dyZWdhdGUgdmFsdWVzIGFz IHBhcmFtZXRlcnMuICBJbiBwYXJ0aWN1bGFyLCBleGlzdGluZyB0ZXN0IGhh cw0KPiA+Pj4gYmVlbiBzdWJzdGFudGlhbGx5IGV4dGVuZGVkIHdpdGggY2xh c3MgZGVmaW5pdGlvbnMgd2hvc2UgZGVmaW5pdGlvbnMNCj4gPj4+IG9mIGNv cHkgY29uc3RydWN0b3IsIGRlc3RydWN0b3IsIGFuZCBtb3ZlIGNvbnN0cnVj dG9yIGZ1bmN0aW9ucyBhcmUgYQ0KPiA+Pj4gY29tYmluYXRpb24gb2YNCj4g Pj4+DQo+ID4+PiAoMSkgZXhwbGljaXRseSBkZWZpbmVkIGJ5IHRoZSB1c2Vy LA0KPiA+Pj4gKDIpIGRlZmF1bHRlZCBpbnNpZGUgdGhlIGNsYXNzIGRlY2xh cmF0aW9uLA0KPiA+Pj4gKDMpIGRlZmF1bHRlZCBvdXRzaWRlIHRoZSBjbGFz cyBkZWNsYXJhdGlvbiwNCj4gPj4+ICg0KSBkZWxldGVkDQo+ID4+PiAoNSkg bm90IGRlZmluZWQgaW4gdGhlIHNvdXJjZS4NCj4gPj4+DQo+ID4+PiBGb3Ig ZWFjaCBjb21iaW5hdGlvbiwgYSBzbWFsbCBhbmQgYSBsYXJnZSBjbGFzcyBp cyBnZW5lcmF0ZWQgYXMgd2VsbA0KPiA+Pj4gYXMgYSBkZXJpdmVkIGNsYXNz IGFuZCBhIGNvbnRhaW5lciBjbGFzcy4gIEFkZGl0aW9uYWxseSwgdGhlIGZv bGxvd2luZw0KPiA+Pj4gbWFudWFsbHktd3JpdHRlbiBjYXNlcyBhcmUgcHJv dmlkZWQ6DQo+ID4+Pg0KPiA+Pj4gLSBhIGR5bmFtaWMgY2xhc3MgKGkuZS4g Y2xhc3Mgd2l0aCBhIHZpcnR1YWwgbWV0aG9kKQ0KPiA+Pj4gLSBjbGFzc2Vz IHRoYXQgY29udGFpbiBhbiBhcnJheSBmaWVsZA0KPiA+Pj4gLSBhIGNsYXNz IHdob3NlIGNvcHkgY3RvciBpcyBpbmxpbmVkDQo+ID4+PiAtIGEgY2xhc3Mg d2hvc2UgZGVzdHJ1Y3RvciBpcyBkZWxldGVkDQo+ID4+PiAtIGNsYXNzZXMg d2l0aCBtdWx0aXBsZSBjb3B5IGFuZC9vciBtb3ZlIGN0b3JzDQo+ID4+Pg0K PiA+Pj4gVGVzdCBjYXNlcyBjaGVjayB3aGV0aGVyIEdEQiBtYWtlcyB0aGUg cmlnaHQgZGVjaXNpb24gdG8gcGFzcyBhbg0KPiA+Pj4gb2JqZWN0IGJ5IHZh bHVlIG9yIGltcGxpY2l0bHkgYnkgcmVmZXJlbmNlLCB3aGV0aGVyIHJlYWxs eSBhIGNvcHkgb2YNCj4gPj4+IHRoZSBhcmd1bWVudCBpcyBwYXNzZWQsIGFu ZCB3aGV0aGVyIHRoZSBjb3B5IGNvbnN0cnVjdG9yIGFuZA0KPiA+Pj4gZGVz dHJ1Y3RvciBvZiB0aGUgY2xvbmUgb2YgdGhlIGFyZ3VtZW50IGFyZSBpbnZv a2VkIHByb3Blcmx5Lg0KPiA+Pj4NCj4gPj4+IFRoZSBpbnB1dCBwcm9ncmFt IHBhc3MtYnktcmVmLmNjIGlzIGdlbmVyYXRlZCBpbiB0aGUgdGVzdCdzIG91 dHB1dA0KPiA+Pj4gZGlyZWN0b3J5LiAgVGhlIGlucHV0IHByb2dyYW0gcGFz cy1ieS1yZWYtMi5jYyBpcyBtYW51YWxseS13cml0dGVuLg0KPiA+Pj4NCj4g Pj4+IFRlc3RzIGhhdmUgYmVlbiB2ZXJpZmllZCBvbiB0aGUgWDg2XzY0IGFy Y2hpdGVjdHVyZSB3aXRoDQo+ID4+PiBHQ0MgNy40LjAsIDguMi4wLCBhbmQg OS4yLjEuDQo+ID4+Pg0KPiA+Pj4gZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6 DQo+ID4+PiAyMDE5LTExLTA3ICBUYW5rdXQgQmFyaXMgQWt0ZW11ciAgPHRh bmt1dC5iYXJpcy5ha3RlbXVyQGludGVsLmNvbT4NCj4gPj4+DQo+ID4+PiAJ KiBnZGIuY3AvcGFzcy1ieS1yZWYuY2M6IERlbGV0ZS4gIEdlbmVyYXRlZCBp biB0aGUgb3V0cHV0DQo+ID4+PiAJZGlyZWN0b3J5IGluc3RlYWQuDQo+ID4+ PiAJKiBnZGIuY3AvcGFzcy1ieS1yZWYuZXhwOiBFeHRlbmQgd2l0aCBtb3Jl IGNhc2VzLg0KPiA+Pj4gCSogZ2RiLmNwL3Bhc3MtYnktcmVmLTIuY2M6IE5l dyBmaWxlLg0KPiA+Pj4gCSogZ2RiLmNwL3Bhc3MtYnktcmVmLTIuZXhwOiBO ZXcgZmlsZS4NCj4gPj4+DQo+ID4+PiBDaGFuZ2UtSWQ6IEllOGFiMWYyNjBj NmFkNWVlNGViMzRiMmMxNTk3Y2UyNGFmMDRhYmI2DQo+ID4+PiAtLS0NCj4g Pj4+IEEgZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvcGFzcy1ieS1yZWYtMi5jYw0K PiA+Pj4gQSBnZGIvdGVzdHN1aXRlL2dkYi5jcC9wYXNzLWJ5LXJlZi0yLmV4 cA0KPiA+Pj4gRCBnZGIvdGVzdHN1aXRlL2dkYi5jcC9wYXNzLWJ5LXJlZi5j Yw0KPiA+Pj4gTSBnZGIvdGVzdHN1aXRlL2dkYi5jcC9wYXNzLWJ5LXJlZi5l eHANCj4gPj4+IDQgZmlsZXMgY2hhbmdlZCwgNzkxIGluc2VydGlvbnMoKyks IDg2IGRlbGV0aW9ucygtKQ0KPiA+Pj4NCj4gPj4+DQo+ID4+Pg0KPiA+Pj4g ZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3Bhc3MtYnktcmVm LTIuY2MgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9wYXNzLWJ5LXJlZi0yLmNj DQo+ID4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+Pj4gaW5kZXggMDAw MDAwMC4uMWNkNWExNg0KPiA+Pj4gLS0tIC9kZXYvbnVsbA0KPiA+Pj4gKysr IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvcGFzcy1ieS1yZWYtMi5jYw0KPiA+ Pj4gQEAgLTAsMCArMSwyOTUgQEANCj4gPj4+ICsvKiBUaGlzIHRlc3RjYXNl IGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLg0KPiA+Pj4gKw0K PiA+Pj4gKyAgIENvcHlyaWdodCAyMDE5IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLg0KPiA+Pj4gKw0KPiA+Pj4gKyAgIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5DQo+ID4+PiArICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkN Cj4gPj4+ICsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcg0KPiA+Pj4gKyAgIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQo+ID4+PiArDQo+ ID4+PiArICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQo+ID4+PiArICAgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YNCj4gPj4+ICsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlDQo+ID4+ PiArICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4NCj4gPj4+ICsNCj4gPj4+ICsgICBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQ0KPiA+Pj4gKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90 LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8NCj4g Pj4+ICsNCj4gPj4+ICtjbGFzcyBCeVZhbCB7DQo+ID4+PiArcHVibGljOg0K PiA+Pj4gKyAgQnlWYWwgKHZvaWQpOw0KPiA+Pj4gKw0KPiA+Pj4gKyAgaW50 IHg7DQo+ID4+PiArfTsNCj4gPj4+ICsNCj4gPj4+ICtCeVZhbDo6QnlWYWwg KHZvaWQpDQo+ID4+PiArew0KPiA+Pj4gKyAgeCA9IDI7DQo+ID4+PiArfQ0K PiA+Pj4gKw0KPiA+Pj4gK2NsYXNzIEJ5UmVmIHsNCj4gPj4+ICtwdWJsaWM6 DQo+ID4+PiArICBCeVJlZiAodm9pZCk7DQo+ID4+PiArDQo+ID4+PiArICBC eVJlZiAoY29uc3QgQnlSZWYgJnJocyk7DQo+ID4+PiArDQo+ID4+PiArICBp bnQgeDsNCj4gPj4+ICt9Ow0KPiA+Pj4gKw0KPiA+Pj4gK0J5UmVmOjpCeVJl ZiAodm9pZCkNCj4gPj4+ICt7DQo+ID4+PiArICB4ID0gMjsNCj4gPj4+ICt9 DQo+ID4+PiArDQo+ID4+PiArQnlSZWY6OkJ5UmVmIChjb25zdCBCeVJlZiAm cmhzKQ0KPiA+Pj4gK3sNCj4gPj4+ICsgIHggPSAzOyAvKiBCeVJlZi1jY3Rv ciAqLw0KPiA+Pj4gK30NCj4gPj4+ICsNCj4gPj4+ICtjbGFzcyBBcnJheUNv bnRhaW5lckJ5VmFsIHsNCj4gPj4+ICtwdWJsaWM6DQo+ID4+PiArICBCeVZh bCBpdGVtc1syXTsNCj4gPj4+ICt9Ow0KPiA+Pj4gKw0KPiA+Pj4gK2ludA0K PiA+Pj4gK2NidkFycmF5Q29udGFpbmVyQnlWYWwgKEFycmF5Q29udGFpbmVy QnlWYWwgYXJnKQ0KPiA+Pj4gK3sNCj4gPj4+ICsgIGFyZy5pdGVtc1swXS54 ICs9IDQ7ICAvLyBpbnRlbnRpb25hbGx5IG1vZGlmeQ0KPiA+Pj4gKyAgcmV0 dXJuIGFyZy5pdGVtc1swXS54Ow0KPiA+Pj4gK30NCj4gPj4+ICsNCj4gPj4+ ICtjbGFzcyBBcnJheUNvbnRhaW5lckJ5UmVmIHsNCj4gPj4+ICtwdWJsaWM6 DQo+ID4+PiArICBCeVJlZiBpdGVtc1syXTsNCj4gPj4+ICt9Ow0KPiA+Pj4g Kw0KPiA+Pj4gK2ludA0KPiA+Pj4gK2NidkFycmF5Q29udGFpbmVyQnlSZWYg KEFycmF5Q29udGFpbmVyQnlSZWYgYXJnKQ0KPiA+Pj4gK3sNCj4gPj4+ICsg IGFyZy5pdGVtc1swXS54ICs9IDQ7ICAvLyBpbnRlbnRpb25hbGx5IG1vZGlm eQ0KPiA+Pj4gKyAgcmV0dXJuIGFyZy5pdGVtc1swXS54Ow0KPiA+Pj4gK30N Cj4gPj4+ICsNCj4gPj4+ICtjbGFzcyBEeW5hbWljQmFzZSB7DQo+ID4+PiAr cHVibGljOg0KPiA+Pj4gKyAgRHluYW1pY0Jhc2UgKHZvaWQpOw0KPiA+Pj4g Kw0KPiA+Pj4gKyAgdmlydHVhbCBpbnQgZ2V0ICh2b2lkKTsNCj4gPj4+ICsN Cj4gPj4+ICsgIGludCB4Ow0KPiA+Pj4gK307DQo+ID4+PiArDQo+ID4+PiAr RHluYW1pY0Jhc2U6OkR5bmFtaWNCYXNlICh2b2lkKQ0KPiA+Pj4gK3sNCj4g Pj4+ICsgIHggPSAyOw0KPiA+Pj4gK30NCj4gPj4+ICsNCj4gPj4+ICtpbnQN Cj4gPj4+ICtEeW5hbWljQmFzZTo6Z2V0ICh2b2lkKQ0KPiA+Pj4gK3sNCj4g Pj4+ICsgIHJldHVybiA0MjsNCj4gPj4+ICt9DQo+ID4+PiArDQo+ID4+PiAr Y2xhc3MgRHluYW1pYyA6IHB1YmxpYyBEeW5hbWljQmFzZSB7DQo+ID4+PiAr cHVibGljOg0KPiA+Pj4gKyAgdmlydHVhbCBpbnQgZ2V0ICh2b2lkKTsNCj4g Pj4+ICt9Ow0KPiA+Pj4gKw0KPiA+Pj4gK2ludA0KPiA+Pj4gK0R5bmFtaWM6 OmdldCAodm9pZCkNCj4gPj4+ICt7DQo+ID4+PiArICByZXR1cm4gOTk5OTsN Cj4gPj4+ICt9DQo+ID4+PiArDQo+ID4+PiAraW50DQo+ID4+PiArY2J2RHlu YW1pYyAoRHluYW1pY0Jhc2UgYXJnKQ0KPiA+Pj4gK3sNCj4gPj4+ICsgIGFy Zy54ICs9IDQ7ICAvLyBpbnRlbnRpb25hbGx5IG1vZGlmeQ0KPiA+Pj4gKyAg cmV0dXJuIGFyZy54ICsgYXJnLmdldCAoKTsNCj4gPj4+ICt9DQo+ID4+PiAr DQo+ID4+PiArY2xhc3MgSW5saW5lZCB7DQo+ID4+PiArcHVibGljOg0KPiA+ Pj4gKyAgSW5saW5lZCAodm9pZCk7DQo+ID4+PiArDQo+ID4+PiArICBfX2F0 dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkNCj4gPj4+ICsgIElubGluZWQg KGNvbnN0IElubGluZWQgJnJocykNCj4gPj4+ICsgIHsNCj4gPj4+ICsgICAg eCA9IDM7DQo+ID4+PiArICB9DQo+ID4+PiArDQo+ID4+PiArICBpbnQgeDsN Cj4gPj4+ICt9Ow0KPiA+Pj4gKw0KPiA+Pj4gK0lubGluZWQ6OklubGluZWQg KHZvaWQpDQo+ID4+PiArew0KPiA+Pj4gKyAgeCA9IDI7DQo+ID4+PiArfQ0K PiA+Pj4gKw0KPiA+Pj4gK2ludA0KPiA+Pj4gK2NidklubGluZWQgKElubGlu ZWQgYXJnKQ0KPiA+Pj4gK3sNCj4gPj4+ICsgIGFyZy54ICs9IDQ7ICAvLyBp bnRlbnRpb25hbGx5IG1vZGlmeQ0KPiA+Pj4gKyAgcmV0dXJuIGFyZy54Ow0K PiA+Pj4gK30NCj4gPj4+ICsNCj4gPj4+ICtjbGFzcyBEdG9yRGVsIHsNCj4g Pj4+ICtwdWJsaWM6DQo+ID4+PiArICBEdG9yRGVsICh2b2lkKTsNCj4gPj4+ ICsNCj4gPj4+ICsgIH5EdG9yRGVsICh2b2lkKSA9IGRlbGV0ZTsNCj4gPj4+ ICsNCj4gPj4+ICsgIGludCB4Ow0KPiA+Pj4gK307DQo+ID4+PiArDQo+ID4+ PiArRHRvckRlbDo6RHRvckRlbCAodm9pZCkNCj4gPj4+ICt7DQo+ID4+PiAr ICB4ID0gMjsNCj4gPj4+ICt9DQo+ID4+PiArDQo+ID4+PiAraW50DQo+ID4+ PiArY2J2RHRvckRlbCAoRHRvckRlbCBhcmcpDQo+ID4+PiArew0KPiA+Pj4g KyAgLy8gQ2FsbGluZyB0aGlzIG1ldGhvZCBzaG91bGQgYmUgcmVqZWN0ZWQN Cj4gPj4+ICsgIHJldHVybiBhcmcueDsNCj4gPj4+ICt9DQo+ID4+PiArDQo+ ID4+PiArY2xhc3MgRm91ckNDdG9yIHsNCj4gPj4+ICtwdWJsaWM6DQo+ID4+ PiArICBGb3VyQ0N0b3IgKHZvaWQpOw0KPiA+Pj4gKw0KPiA+Pj4gKyAgRm91 ckNDdG9yIChGb3VyQ0N0b3IgJnJocyk7DQo+ID4+PiArICBGb3VyQ0N0b3Ig KGNvbnN0IEZvdXJDQ3RvciAmcmhzKTsNCj4gPj4+ICsgIEZvdXJDQ3RvciAo dm9sYXRpbGUgRm91ckNDdG9yICZyaHMpOw0KPiA+Pj4gKyAgRm91ckNDdG9y IChjb25zdCB2b2xhdGlsZSBGb3VyQ0N0b3IgJnJocyk7DQo+ID4+PiArDQo+ ID4+PiArICBpbnQgeDsNCj4gPj4+ICt9Ow0KPiA+Pj4gKw0KPiA+Pj4gK0Zv dXJDQ3Rvcjo6Rm91ckNDdG9yICh2b2lkKQ0KPiA+Pj4gK3sNCj4gPj4+ICsg IHggPSAyOw0KPiA+Pj4gK30NCj4gPj4+ICsNCj4gPj4+ICtGb3VyQ0N0b3I6 OkZvdXJDQ3RvciAoRm91ckNDdG9yICZyaHMpDQo+ID4+PiArew0KPiA+Pj4g KyAgeCA9IDM7DQo+ID4+PiArfQ0KPiA+Pj4gKw0KPiA+Pj4gK0ZvdXJDQ3Rv cjo6Rm91ckNDdG9yIChjb25zdCBGb3VyQ0N0b3IgJnJocykNCj4gPj4+ICt7 DQo+ID4+PiArICB4ID0gNDsNCj4gPj4+ICt9DQo+ID4+PiArDQo+ID4+PiAr Rm91ckNDdG9yOjpGb3VyQ0N0b3IgKHZvbGF0aWxlIEZvdXJDQ3RvciAmcmhz KQ0KPiA+Pj4gK3sNCj4gPj4+ICsgIHggPSA1Ow0KPiA+Pj4gK30NCj4gPj4+ ICsNCj4gPj4+ICtGb3VyQ0N0b3I6OkZvdXJDQ3RvciAoY29uc3Qgdm9sYXRp bGUgRm91ckNDdG9yICZyaHMpDQo+ID4+PiArew0KPiA+Pj4gKyAgeCA9IDY7 DQo+ID4+PiArfQ0KPiA+Pj4gKw0KPiA+Pj4gK2ludA0KPiA+Pj4gK2NidkZv dXJDQ3RvciAoRm91ckNDdG9yIGFyZykNCj4gPj4+ICt7DQo+ID4+PiArICBh cmcueCArPSAxMDsgIC8vIGludGVudGlvbmFsbHkgbW9kaWZ5DQo+ID4+PiAr ICByZXR1cm4gYXJnLng7DQo+ID4+PiArfQ0KPiA+Pj4gKw0KPiA+Pj4gK2Ns YXNzIFR3b01DdG9yIHsNCj4gPj4+ICtwdWJsaWM6DQo+ID4+PiArICBUd29N Q3RvciAodm9pZCk7DQo+ID4+PiArDQo+ID4+PiArICAvKiBFdmVuIHRob3Vn aCBvbmUgbW92ZSBjdG9yIGlzIGRlZmF1bHRlZCwgdGhlIG90aGVyDQo+ID4+ PiArICAgICBpcyBleHBsaWNpdC4gICovDQo+ID4+PiArICBUd29NQ3RvciAo Y29uc3QgVHdvTUN0b3IgJiZyaHMpOw0KPiA+Pj4gKyAgVHdvTUN0b3IgKFR3 b01DdG9yICYmcmhzKSA9IGRlZmF1bHQ7DQo+ID4+PiArDQo+ID4+PiArICBp bnQgeDsNCj4gPj4+ICt9Ow0KPiA+Pj4gKw0KPiA+Pj4gK1R3b01DdG9yOjpU d29NQ3RvciAodm9pZCkNCj4gPj4+ICt7DQo+ID4+PiArICB4ID0gMjsNCj4g Pj4+ICt9DQo+ID4+PiArDQo+ID4+PiArVHdvTUN0b3I6OlR3b01DdG9yIChj b25zdCBUd29NQ3RvciAmJnJocykNCj4gPj4+ICt7DQo+ID4+PiArICB4ID0g MzsNCj4gPj4+ICt9DQo+ID4+PiArDQo+ID4+PiAraW50DQo+ID4+PiArY2J2 VHdvTUN0b3IgKFR3b01DdG9yIGFyZykNCj4gPj4+ICt7DQo+ID4+PiArICBh cmcueCArPSAxMDsgIC8vIGludGVudGlvbmFsbHkgbW9kaWZ5DQo+ID4+PiAr ICByZXR1cm4gYXJnLng7DQo+ID4+PiArfQ0KPiA+Pj4gKw0KPiA+Pj4gK2Ns YXNzIFR3b01DdG9yQW5kQ0N0b3Igew0KPiA+Pj4gK3B1YmxpYzoNCj4gPj4+ ICsgIFR3b01DdG9yQW5kQ0N0b3IgKHZvaWQpOw0KPiA+Pj4gKw0KPiA+Pj4g KyAgVHdvTUN0b3JBbmRDQ3RvciAoY29uc3QgVHdvTUN0b3JBbmRDQ3RvciAm cmhzKSA9IGRlZmF1bHQ7DQo+ID4+PiArDQo+ID4+PiArICAvKiBFdmVuIHRo b3VnaCBvbmUgbW92ZSBjdG9yIGlzIGRlZmF1bHRlZCwgdGhlIG90aGVyDQo+ ID4+PiArICAgICBpcyBleHBsaWNpdC4gIFRoaXMgbWFrZXMgdGhlIHR5cGUg cGFzcy1ieS1yZWYuICAqLw0KPiA+Pj4gKyAgVHdvTUN0b3JBbmRDQ3RvciAo Y29uc3QgVHdvTUN0b3JBbmRDQ3RvciAmJnJocyk7DQo+ID4+PiArICBUd29N Q3RvckFuZENDdG9yIChUd29NQ3RvckFuZENDdG9yICYmcmhzKSA9IGRlZmF1 bHQ7DQo+ID4+PiArDQo+ID4+PiArICBpbnQgeDsNCj4gPj4+ICt9Ow0KPiA+ Pj4gKw0KPiA+Pj4gK1R3b01DdG9yQW5kQ0N0b3I6OlR3b01DdG9yQW5kQ0N0 b3IgKHZvaWQpDQo+ID4+PiArew0KPiA+Pj4gKyAgeCA9IDI7DQo+ID4+PiAr fQ0KPiA+Pj4gKw0KPiA+Pj4gK1R3b01DdG9yQW5kQ0N0b3I6OlR3b01DdG9y QW5kQ0N0b3IgKGNvbnN0IFR3b01DdG9yQW5kQ0N0b3IgJiZyaHMpDQo+ID4+ PiArew0KPiA+Pj4gKyAgeCA9IDQ7DQo+ID4+PiArfQ0KPiA+Pj4gKw0KPiA+ Pj4gK2ludA0KPiA+Pj4gK2NidlR3b01DdG9yQW5kQ0N0b3IgKFR3b01DdG9y QW5kQ0N0b3IgYXJnKQ0KPiA+Pj4gK3sNCj4gPj4+ICsgIGFyZy54ICs9IDEw OyAgLy8gaW50ZW50aW9uYWxseSBtb2RpZnkNCj4gPj4+ICsgIHJldHVybiBh cmcueDsNCj4gPj4+ICt9DQo+ID4+PiArDQo+ID4+PiArQXJyYXlDb250YWlu ZXJCeVZhbCBhcnJheUNvbnRhaW5lckJ5VmFsOw0KPiA+Pj4gK0FycmF5Q29u dGFpbmVyQnlSZWYgYXJyYXlDb250YWluZXJCeVJlZjsNCj4gPj4+ICtEeW5h bWljIGR5bmFtaWM7DQo+ID4+PiArSW5saW5lZCBpbmxpbmVkOw0KPiA+Pj4g Ky8vIENhbm5vdCBzdGFjay1hbGxvY2F0ZSBEdG9yRGVsDQo+ID4+PiArRHRv ckRlbCAqZHRvckRlbDsNCj4gPj4+ICtGb3VyQ0N0b3IgZm91ckNjdG9yX2Mw djA7DQo+ID4+PiArY29uc3QgRm91ckNDdG9yIGZvdXJDY3Rvcl9jMXYwOw0K PiA+Pj4gK3ZvbGF0aWxlIEZvdXJDQ3RvciBmb3VyQ2N0b3JfYzB2MTsNCj4g Pj4+ICtjb25zdCB2b2xhdGlsZSBGb3VyQ0N0b3IgZm91ckNjdG9yX2MxdjE7 DQo+ID4+PiArVHdvTUN0b3IgdHdvTWN0b3I7DQo+ID4+PiArVHdvTUN0b3JB bmRDQ3RvciB0d29NY3RvckFuZENjdG9yOw0KPiA+Pj4gKw0KPiA+Pj4gK2lu dA0KPiA+Pj4gK21haW4gKHZvaWQpDQo+ID4+PiArew0KPiA+Pj4gKyAgaW50 IHY7DQo+ID4+PiArICBkdG9yRGVsID0gbmV3IER0b3JEZWw7DQo+ID4+PiAr ICAvKiBFeHBsaWNpdGx5IGNhbGwgdGhlIGNidiBmdW5jdGlvbiB0byBtYWtl IHN1cmUgdGhlIGNvbXBpbGVyDQo+ID4+PiArICAgICB3aWxsIG5vdCBvbWl0 IGFueSBjb2RlIGluIHRoZSBiaW5hcnkuICAqLw0KPiA+Pj4gKyAgdiA9IGNi dkFycmF5Q29udGFpbmVyQnlWYWwgKGFycmF5Q29udGFpbmVyQnlWYWwpOw0K PiA+Pj4gKyAgdiA9IGNidkFycmF5Q29udGFpbmVyQnlSZWYgKGFycmF5Q29u dGFpbmVyQnlSZWYpOw0KPiA+Pj4gKyAgdiA9IGNidkR5bmFtaWMgKGR5bmFt aWMpOw0KPiA+Pj4gKyAgdiA9IGNidklubGluZWQgKGlubGluZWQpOw0KPiA+ Pj4gKyAgdiA9IGNidkZvdXJDQ3RvciAoZm91ckNjdG9yX2MwdjApOw0KPiA+ Pj4gKyAgdiA9IGNidkZvdXJDQ3RvciAoZm91ckNjdG9yX2MxdjApOw0KPiA+ Pj4gKyAgdiA9IGNidkZvdXJDQ3RvciAoZm91ckNjdG9yX2MwdjEpOw0KPiA+ Pj4gKyAgdiA9IGNidkZvdXJDQ3RvciAoZm91ckNjdG9yX2MxdjEpOw0KPiA+ Pj4gKyAgLyogdiA9IGNidlR3b01DdG9yICh0d29NY3Rvcik7ICovIC8vIFRo aXMgaXMgaWxsZWdhbCwgY2N0b3IgaXMgZGVsZXRlZA0KPiA+Pj4gKyAgdiA9 IGNidlR3b01DdG9yQW5kQ0N0b3IgKHR3b01jdG9yQW5kQ2N0b3IpOw0KPiA+ Pj4gKw0KPiA+Pj4gKyAgLyogc3RvcCBoZXJlICovDQo+ID4+PiArDQo+ID4+ PiArICByZXR1cm4gMDsNCj4gPj4+ICt9DQo+ID4+PiBkaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuY3AvcGFzcy1ieS1yZWYtMi5leHAgYi9nZGIv dGVzdHN1aXRlL2dkYi5jcC9wYXNzLWJ5LXJlZi0yLmV4cA0KPiA+Pj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4+IGluZGV4IDAwMDAwMDAuLjdjY2U4 ODYNCj4gPj4+IC0tLSAvZGV2L251bGwNCj4gPj4+ICsrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmNwL3Bhc3MtYnktcmVmLTIuZXhwDQo+ID4+PiBAQCAtMCww ICsxLDExNCBAQA0KPiA+Pj4gKyMgQ29weXJpZ2h0IDIwMTkgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQo+ID4+PiArDQo+ID4+PiArIyBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQ0KPiA+Pj4gKyMgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkNCj4gPj4+ICsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yDQo+ID4+ PiArIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KPiA+ Pj4gKyMNCj4gPj4+ICsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KPiA+Pj4gKyMg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YNCj4gPj4+ICsjIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUN Cj4gPj4+ICsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuDQo+ID4+PiArIw0KPiA+Pj4gKyMgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UNCj4gPj4+ICsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lg0KPiA+ Pj4gKw0KPiA+Pj4gKyMgQ2hlY2sgdGhhdCBHREIgY2FuIGNhbGwgQysrIGZ1 bmN0aW9ucyB3aG9zZSBwYXJhbWV0ZXJzIGhhdmUNCj4gPj4+ICsjIG9iamVj dCB0eXBlLCBhbmQgYXJlIGVpdGhlciBwYXNzZWQgYnkgdmFsdWUgb3IgaW1w bGljaXRseSBieSByZWZlcmVuY2UuDQo+ID4+PiArIw0KPiA+Pj4gKyMgVGhp cyBpcyBhIGNvbXBhbmlvbiB0ZXN0IHRvIHBhc3MtYnktcmVmLmV4cC4gIElu IHRoaXMgdGVzdCwgdGhlIGlucHV0DQo+ID4+PiArIyBpcyBtYW51YWxseS13 cml0dGVuLiAgSW4gcGFzcy1ieS1yZWYuZXhwLCB0aGUgdGVzdCBpbnB1dCBp cyBnZW5lcmF0ZWQuDQo+ID4+PiArIw0KPiA+Pj4gKyMgV2UgaW5jbHVkZSB0 ZXN0cyBmb3IgY2xhc3NlcyB0aGF0DQo+ID4+PiArIyAtIGNvbnRhaW4gYXJy YXlzIGFzIGZpZWxkcywNCj4gPj4+ICsjIC0gYXJlIGR5bmFtaWMgKGkuZS4g aGF2ZSB2aXJ0dWFsIG1ldGhvZHMpDQo+ID4+PiArIyAtIGhhdmUgaW5saW5l ZCBjb3B5IGN0b3INCj4gPj4+ICsjIC0gaGF2ZSBkZWxldGVkIGRlc3RydWN0 b3INCj4gPj4+ICsNCj4gPj4+ICtpZiB7W3NraXBfY3BsdXNfdGVzdHNdfSB7 DQo+ID4+PiArICAgIHVudGVzdGVkICJjKysgdGVzdCBza2lwcGVkIg0KPiA+ Pj4gKyAgICBjb250aW51ZQ0KPiA+Pj4gK30NCj4gPj4+ICsNCj4gPj4+ICtz dGFuZGFyZF90ZXN0ZmlsZSAuY2MNCj4gPj4+ICsNCj4gPj4+ICtzZXQgb3B0 aW9ucyB7ZGVidWcgYysrIGFkZGl0aW9uYWxfZmxhZ3M9LXN0ZD1jKysxMX0N Cj4gPj4+ICtpZiB7W3ByZXBhcmVfZm9yX3Rlc3RpbmcgImZhaWxlZCB0byBw cmVwYXJlIiAkdGVzdGZpbGUgJHNyY2ZpbGUgJG9wdGlvbnNdfSB7DQo+ID4+ PiArICAgIHJldHVybiAtMQ0KPiA+Pj4gK30NCj4gPj4+ICsNCj4gPj4+ICtp ZiB7IVtydW50b19tYWluXX0gew0KPiA+Pj4gKyAgICB1bnRlc3RlZCAiZmFp bGVkIHRvIHJ1biB0byBtYWluIg0KPiA+Pj4gKyAgICByZXR1cm4gLTENCj4g Pj4+ICt9DQo+ID4+PiArDQo+ID4+PiArc2V0IGJwX2xvY2F0aW9uIFtnZGJf Z2V0X2xpbmVfbnVtYmVyICJzdG9wIGhlcmUiXQ0KPiA+Pj4gK2dkYl9icmVh a3BvaW50ICRicF9sb2NhdGlvbg0KPiA+Pj4gK2dkYl9jb250aW51ZV90b19i cmVha3BvaW50ICJlbmQgb2YgbWFpbiIgIi4qcmV0dXJuIC4qOyINCj4gPj4+ ICsNCj4gPj4+ICtnZGJfdGVzdCAicHJpbnQgY2J2QXJyYXlDb250YWluZXJC eVZhbCAoYXJyYXlDb250YWluZXJCeVZhbCkiICI2IiBcDQo+ID4+PiArICAg ICJjYWxsIGNidkFycmF5Q29udGFpbmVyQnlWYWwiDQo+ID4+PiArZ2RiX3Rl c3QgInByaW50IGFycmF5Q29udGFpbmVyQnlWYWwuaXRlbXNcWzBcXS54IiAi MiIgXA0KPiA+Pj4gKyAgICAiY2J2IGFyZ3VtZW50ICdhcnJheUNvbnRhaW5l ckJ5VmFsJyBzaG91bGQgbm90IGNoYW5nZSINCj4gPj4+ICsNCj4gPj4+ICtn ZGJfdGVzdCAicHJpbnQgY2J2QXJyYXlDb250YWluZXJCeVJlZiAoYXJyYXlD b250YWluZXJCeVJlZikiICI3IiBcDQo+ID4+PiArICAgICJjYWxsIGNidkFy cmF5Q29udGFpbmVyQnlSZWYiDQo+ID4+PiArZ2RiX3Rlc3QgInByaW50IGFy cmF5Q29udGFpbmVyQnlSZWYuaXRlbXNcWzBcXS54IiAiMiIgXA0KPiA+Pj4g KyAgICAiY2J2IGFyZ3VtZW50ICdhcnJheUNvbnRhaW5lckJ5UmVmJyBzaG91 bGQgbm90IGNoYW5nZSINCj4gPj4+ICsNCj4gPj4+ICtnZGJfdGVzdCAicHJp bnQgY2J2RHluYW1pYyAoZHluYW1pYykiICI0OCIgXA0KPiA+Pj4gKyAgICAi Y2FsbCBjYnZEeW5hbWljIg0KPiA+Pj4gK2dkYl90ZXN0ICJwcmludCBkeW5h bWljLngiICIyIiBcDQo+ID4+PiArICAgICJjYnYgYXJndW1lbnQgJ2R5bmFt aWMnIHNob3VsZCBub3QgY2hhbmdlIg0KPiA+Pj4gKw0KPiA+Pj4gK3NldCBz aWcgIlwiSW5saW5lZFw6XDpJbmxpbmVkXFwoLipJbmxpbmVkIGNvbnN0XCZc XClcIiINCj4gPj4+ICtnZGJfdGVzdCAicHJpbnQgY2J2SW5saW5lZCAoaW5s aW5lZCkiIFwNCj4gPj4+ICsgICAgImV4cHJlc3Npb24gY2Fubm90IGJlIGV2 YWx1YXRlZCAuKiBcXChtYXliZSBpbmxpbmVkXFw/XFwpIg0KPiA+Pj4gKw0K PiA+Pj4gK2dkYl90ZXN0ICJwcmludCBjYnZEdG9yRGVsICgqZHRvckRlbCki IFwNCj4gPj4+ICsgICAgIi4qIGNhbm5vdCBiZSBldmFsdWF0ZWQgLiogJ0R0 b3JEZWwnIGlzIG5vdCBkZXN0cnVjdGlibGUiIFwNCj4gPj4+ICsgICAgInR5 cGUgbm90IGRlc3RydWN0aWJsZSINCj4gPj4+ICsNCj4gPj4+ICsjIFRlc3Qg dGhhdCBHREIgY2FsbHMgdGhlIGNvcnJlY3QgY29weSBjdG9yDQo+ID4+PiAr Z2RiX3Rlc3QgInByaW50IGNidkZvdXJDQ3RvciAoZm91ckNjdG9yX2MwdjAp IiAiMTMiIFwNCj4gPj4+ICsgICAgImNhbGwgY2J2Rm91ckNDdG9yIChjMHYw KSINCj4gPj4+ICtnZGJfdGVzdCAicHJpbnQgZm91ckNjdG9yX2MwdjAueCIg IjIiIFwNCj4gPj4+ICsgICAgImNidiBhcmd1bWVudCAndHdvQ2N0b3JfYzB2 MCcgc2hvdWxkIG5vdCBjaGFuZ2UiDQo+ID4+PiArDQo+ID4+PiArZ2RiX3Rl c3QgInByaW50IGNidkZvdXJDQ3RvciAoZm91ckNjdG9yX2MxdjApIiAiMTQi IFwNCj4gPj4+ICsgICAgImNhbGwgY2J2Rm91ckNDdG9yIChjMXYwKSINCj4g Pj4+ICtnZGJfdGVzdCAicHJpbnQgZm91ckNjdG9yX2MxdjAueCIgIjIiIFwN Cj4gPj4+ICsgICAgImNidiBhcmd1bWVudCAndHdvQ2N0b3JfYzF2MCcgc2hv dWxkIG5vdCBjaGFuZ2UiDQo+ID4+PiArDQo+ID4+PiArZ2RiX3Rlc3QgInBy aW50IGNidkZvdXJDQ3RvciAoZm91ckNjdG9yX2MwdjEpIiAiMTUiIFwNCj4g Pj4+ICsgICAgImNhbGwgY2J2Rm91ckNDdG9yIChjMHYxKSINCj4gPj4+ICtn ZGJfdGVzdCAicHJpbnQgZm91ckNjdG9yX2MwdjEueCIgIjIiIFwNCj4gPj4+ ICsgICAgImNidiBhcmd1bWVudCAndHdvQ2N0b3JfYzB2MScgc2hvdWxkIG5v dCBjaGFuZ2UiDQo+ID4+PiArDQo+ID4+PiArZ2RiX3Rlc3QgInByaW50IGNi dkZvdXJDQ3RvciAoZm91ckNjdG9yX2MxdjEpIiAiMTYiIFwNCj4gPj4+ICsg ICAgImNhbGwgY2J2Rm91ckNDdG9yIChjMXYxKSINCj4gPj4+ICtnZGJfdGVz dCAicHJpbnQgZm91ckNjdG9yX2MxdjEueCIgIjIiIFwNCj4gPj4+ICsgICAg ImNidiBhcmd1bWVudCAndHdvQ2N0b3JfYzF2MScgc2hvdWxkIG5vdCBjaGFu Z2UiDQo+ID4+PiArDQo+ID4+PiArZ2RiX3Rlc3QgInByaW50IGNidlR3b01D dG9yICh0d29NY3RvcikiIFwNCj4gPj4+ICsgICAgIi4qIGNhbm5vdCBiZSBl dmFsdWF0ZWQgLiogJ1R3b01DdG9yJyBpcyBub3QgY29weSBjb25zdHJ1Y3Rp YmxlIiBcDQo+ID4+PiArICAgICJjb3B5IGN0b3IgaXMgaW1wbGljaXRseSBk ZWxldGVkIg0KPiA+Pj4gKw0KPiA+Pj4gK2dkYl90ZXN0ICJwcmludCBjYnZU d29NQ3RvckFuZENDdG9yICh0d29NY3RvckFuZENjdG9yKSIgIjEyIiBcDQo+ ID4+PiArICAgICJjYWxsIGNidlR3b01DdG9yQW5kQ0N0b3IiDQo+ID4+PiAr Z2RiX3Rlc3QgInByaW50IHR3b01jdG9yQW5kQ2N0b3IueCIgIjIiIFwNCj4g Pj4+ICsgICAgImNidiBhcmd1bWVudCAndHdvTWN0b3JBbmRDdG9yJyBzaG91 bGQgbm90IGNoYW5nZSINCj4gPj4+ICsNCj4gPj4+ICsjIFRlc3QgdGhhdCB3 ZSBnZXQgYSBicmVha3BvaW50IGZyb20gdGhlIGNjdG9yIGR1cmluZyBpbmZj YWxsIGFuZA0KPiA+Pj4gKyMgd2UgY2FuIGV4YW1pbmUgYXJndW1lbnRzLiAg VGhpcyBpcyBhIHRlc3QgdGhhdCB0aGUgZHVtbXkgZnJhbWUNCj4gPj4+ICsj IG9mIHRoZSBjb3B5IGNvbnN0cnVjdG9yIGlzIHNldCB1cCBjb3JyZWN0bHkg YnkgdGhlIGluZmNhbGwgbWVjaGFuaXNtLg0KPiA+Pj4gK3NldCBicF9sb2Nh dGlvbiBbZ2RiX2dldF9saW5lX251bWJlciAiQnlSZWYtY2N0b3IiXQ0KPiA+ Pj4gK2dkYl9icmVha3BvaW50ICRicF9sb2NhdGlvbg0KPiA+Pj4gK2dkYl90 ZXN0ICJwcmludCBjYnZBcnJheUNvbnRhaW5lckJ5UmVmIChhcnJheUNvbnRh aW5lckJ5UmVmKSIgXA0KPiA+Pj4gKyAgICAiLipUaGUgcHJvZ3JhbSBiZWlu ZyBkZWJ1Z2dlZCBzdG9wcGVkLioiIFwNCj4gPj4+ICsgICAgImNhbGwgY2J2 QXJyYXlDb250YWluZXJCeVJlZiB3aXRoIEJQIg0KPiA+Pj4gK2dkYl90ZXN0 ICJiYWNrdHJhY2UiIFttdWx0aV9saW5lIFwNCj4gPj4+ICsgICAgIiMwICBC eVJlZlw6XDpCeVJlZiAuKiBhdCAuKiRzcmNmaWxlOiRicF9sb2NhdGlvbiIg XA0KPiA+Pj4gKyAgICAiIzEgIC4qIEFycmF5Q29udGFpbmVyQnlSZWY6OkFy cmF5Q29udGFpbmVyQnlSZWYgLioiIFwNCj4gPj4+ICsgICAgIiMyICA8ZnVu Y3Rpb24gY2FsbGVkIGZyb20gZ2RiPiIgXA0KPiA+Pj4gKyAgICAiIzMgIG1h aW4uKiJdDQo+ID4+PiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu Y3AvcGFzcy1ieS1yZWYuY2MgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9wYXNz LWJ5LXJlZi5jYw0KPiA+Pj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0DQo+ ID4+PiBpbmRleCBiYmU0NTBhLi4wMDAwMDAwDQo+ID4+PiAtLS0gYS9nZGIv dGVzdHN1aXRlL2dkYi5jcC9wYXNzLWJ5LXJlZi5jYw0KPiA+Pj4gKysrIC9k ZXYvbnVsbA0KPiA+Pj4gQEAgLTEsNzkgKzAsMCBAQA0KPiA+Pj4gLS8qIFRo aXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIu DQo+ID4+PiAtDQo+ID4+PiAtICAgQ29weXJpZ2h0IDIwMDctMjAxOSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4NCj4gPj4+IC0NCj4gPj4+IC0g ICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KPiA+Pj4gLSAgIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5DQo+ID4+PiAtICAgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwg b3INCj4gPj4+IC0gICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLg0KPiA+Pj4gLQ0KPiA+Pj4gLSAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0K PiA+Pj4gLSAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQo+ID4+PiAtICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQ0KPiA+Pj4gLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuDQo+ID4+PiAtDQo+ID4+PiAtICAgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UNCj4gPj4+IC0gICBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4gICovDQo+ID4+PiAtDQo+ID4+PiAtY2xhc3MgT2JqIHsNCj4g Pj4+IC1wdWJsaWM6DQo+ID4+PiAtICBPYmogKCk7DQo+ID4+PiAtICBPYmog KGNvbnN0IE9iaiAmKTsNCj4gPj4+IC0gIH5PYmogKCk7DQo+ID4+PiAtICBp bnQgdmFyWzJdOw0KPiA+Pj4gLX07DQo+ID4+PiAtDQo+ID4+PiAtaW50IGZv byAoT2JqIGFyZykNCj4gPj4+IC17DQo+ID4+PiAtICByZXR1cm4gYXJnLnZh clswXSArIGFyZy52YXJbMV07DQo+ID4+PiAtfQ0KPiA+Pj4gLQ0KPiA+Pj4g LU9iajo6T2JqICgpDQo+ID4+PiAtew0KPiA+Pj4gLSAgdmFyWzBdID0gMTsN Cj4gPj4+IC0gIHZhclsxXSA9IDI7DQo+ID4+PiAtfQ0KPiA+Pj4gLQ0KPiA+ Pj4gLU9iajo6T2JqIChjb25zdCBPYmogJm9iaikNCj4gPj4+IC17DQo+ID4+ PiAtICB2YXJbMF0gPSBvYmoudmFyWzBdOw0KPiA+Pj4gLSAgdmFyWzFdID0g b2JqLnZhclsxXTsNCj4gPj4+IC19DQo+ID4+PiAtDQo+ID4+PiAtT2JqOjp+ T2JqICgpDQo+ID4+PiAtew0KPiA+Pj4gLQ0KPiA+Pj4gLX0NCj4gPj4+IC0N Cj4gPj4+IC1zdHJ1Y3QgRGVyaXZlZCA6IHB1YmxpYyBPYmoNCj4gPj4+IC17 DQo+ID4+PiAtICBpbnQgb3RoZXI7DQo+ID4+PiAtfTsNCj4gPj4+IC0NCj4g Pj4+IC1pbnQgYmxhcCAoRGVyaXZlZCBhcmcpDQo+ID4+PiAtew0KPiA+Pj4g LSAgcmV0dXJuIGZvbyAoYXJnKTsNCj4gPj4+IC19DQo+ID4+PiAtDQo+ID4+ PiAtc3RydWN0IENvbnRhaW5lcg0KPiA+Pj4gLXsNCj4gPj4+IC0gIE9iaiBv Ymo7DQo+ID4+PiAtfTsNCj4gPj4+IC0NCj4gPj4+IC1pbnQgYmxpcCAoQ29u dGFpbmVyIGFyZykNCj4gPj4+IC17DQo+ID4+PiAtICByZXR1cm4gZm9vIChh cmcub2JqKTsNCj4gPj4+IC19DQo+ID4+PiAtDQo+ID4+PiAtT2JqIGdsb2Jh bF9vYmo7DQo+ID4+PiAtRGVyaXZlZCBnbG9iYWxfZGVyaXZlZDsNCj4gPj4+ IC1Db250YWluZXIgZ2xvYmFsX2NvbnRhaW5lcjsNCj4gPj4+IC0NCj4gPj4+ IC1pbnQNCj4gPj4+IC1tYWluICgpDQo+ID4+PiAtew0KPiA+Pj4gLSAgaW50 IGJhciA9IGZvbyAoZ2xvYmFsX29iaik7DQo+ID4+PiAtICBibGFwIChnbG9i YWxfZGVyaXZlZCk7DQo+ID4+PiAtICBibGlwIChnbG9iYWxfY29udGFpbmVy KTsNCj4gPj4+IC0gIHJldHVybiBiYXI7DQo+ID4+PiAtfQ0KPiA+Pj4gZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3Bhc3MtYnktcmVmLmV4 cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3Bhc3MtYnktcmVmLmV4cA0KPiA+ Pj4gaW5kZXggOTRkZDM0NS4uZjQ0YmU3NyAxMDA2NDQNCj4gPj4+IC0tLSBh L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3Bhc3MtYnktcmVmLmV4cA0KPiA+Pj4g KysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvcGFzcy1ieS1yZWYuZXhwDQo+ ID4+PiBAQCAtMTQsMjAgKzE0LDM5NSBAQA0KPiA+Pj4gICAgIyBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4NCj4gPj4+DQo+ID4+PiAgICAjIENoZWNrIHRo YXQgR0RCIGNhbiBjYWxsIEMrKyBmdW5jdGlvbnMgd2hvc2UgcGFyYW1ldGVy cyBoYXZlDQo+ID4+PiAtIyBvYmplY3QgdHlwZSwgYnV0IGFyZSBwYXNzZWQg YnkgcmVmZXJlbmNlLg0KPiA+Pj4gKyMgb2JqZWN0IHR5cGUsIGFuZCBhcmUg ZWl0aGVyIHBhc3NlZCBieSB2YWx1ZSBvciBpbXBsaWNpdGx5IGJ5IHJlZmVy ZW5jZS4NCj4gPj4+ICsjDQo+ID4+PiArIyBTdXBwb3NlIEYgaXMgYSBmdW5j dGlvbiB0aGF0IGhhcyBhIGNhbGwtYnktdmFsdWUgcGFyYW1ldGVyIHdob3Nl DQo+ID4+PiArIyB0eXBlIGlzIGNsYXNzIEMuICBXaGVuIGNhbGxpbmcgRiB3 aXRoIGFuIGFyZ3VtZW50IEEsIGEgY29weSBvZiBBIHNob3VsZA0KPiA+Pj4g KyMgYmUgY3JlYXRlZCBhbmQgcGFzc2VkIHRvIEYuICBJZiBDIGlzIGEgdHJp dmlhbGx5LWNvcHlhYmxlIHR5cGUsIEEgY2FuDQo+ID4+PiArIyBiZSBjb3Bp ZWQgYnkgYSBzdHJhaWdodGZvcndhcmQgbWVtb3J5IGNvcHkuICBIb3dldmVy LCByb3VnaGx5IHNwZWFraW5nLA0KPiA+Pj4gKyMgaWYgQyBoYXMgYSB1c2Vy LWRlZmluZWQgY29weSBjb25zdHJ1Y3RvciBhbmQvb3IgYSB1c2VyLWRlZmlu ZWQNCj4gPj4+ICsjIGRlc3RydWN0b3IsIHRoZSBjb3B5IGN0b3Igc2hvdWxk IGJlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgY29weSBvZiBBDQo+ID4+PiAr IyBiZWZvcmUgY2FsbGluZyBGLCBhbmQgYSByZWZlcmVuY2UgdG8gdGhhdCBj b3B5IGlzIHBhc3NlZCB0byBGLiAgQWZ0ZXINCj4gPj4+ICsjIHRoZSBmdW5j dGlvbiByZXR1cm5zLCB0aGUgZGVzdHJ1Y3RvciBzaG91bGQgYmUgY2FsbGVk IHRvIGRlc3RydWN0IHRoZQ0KPiA+Pj4gKyMgY29weS4gIEluIHRoaXMgY2Fz ZSwgQyBpcyBzYWlkIHRvIGJlIGEgJ3Bhc3MtYnktcmVmZXJlbmNlJyB0eXBl Lg0KPiA+Pj4gKyMgRGV0ZXJtaW5pbmcgd2hldGhlciBDIGlzIHBhc3MtYnkt cmVmIGRlcGVuZHMgb24NCj4gPj4+ICsjIGhvdyB0aGUgY29weSBjdG9yLCBk ZXN0cnVjdG9yLCBhbmQgdGhlIG1vdmUgY3RvciBvZiBDIGFyZSBkZWZpbmVk Lg0KPiA+Pj4gKyMgRmlyc3Qgb2YgYWxsLCBDIGlzIG5vdCBjb3B5IGNvbnN0 cnVjdGlibGUgaWYgaXRzIGNvcHkgY29uc3RydWN0b3IgaXMNCj4gPj4+ICsj IGV4cGxpY2l0bHkgb3IgaW1wbGljaXRseSBkZWxldGVkLiAgSW4gdGhpcyBj YXNlLCBpdCB3b3VsZCBiZSBpbGxlZ2FsDQo+ID4+PiArIyB0byBwYXNzIHZh bHVlcyBvZiB0eXBlIEMgdG8gYSBmdW5jdGlvbi4gIEMgaXMgcGFzcy1ieS12 YWx1ZSwgaWYgYWxsIG9mDQo+ID4+PiArIyBpdHMgY29weSBjdG9yLCBkdG9y LCBhbmQgbW92ZSBjdG9yIGFyZSB0cml2aWFsbHkgZGVmaW5lZC4NCj4gPj4+ ICsjIE90aGVyd2lzZSwgaXQgaXMgcGFzcy1ieS1yZWYuDQo+ID4+PiArIw0K PiA+Pj4gKyMgVG8gY292ZXIgdGhlIG1hbnkgcG9zc2libGUgY29tYmluYXRp b25zLCB0aGlzIHRlc3QgZ2VuZXJhdGVzIGNsYXNzZXMNCj4gPj4+ICsjIHRo YXQgY29udGFpbiB0aHJlZSBzcGVjaWFsIGZ1bmN0aW9uczoNCj4gPj4+ICsj ICAgKDEpIGEgY29weSBjb25zdHJ1Y3RvciwNCj4gPj4+ICsjICAgKDIpIGEg ZGVzdHJ1Y3RvciwgYW5kDQo+ID4+PiArIyAgICgzKSBhIG1vdmUgY29uc3Ry dWN0b3IuDQo+ID4+PiArIyBBIHNwZWNpYWwgZnVuY3Rpb24gaXMgaW4gb25l IG9mIHRoZSBmb2xsb3dpbmcgc3RhdGVzOg0KPiA+Pj4gKyMgICogZXhwbGlj aXQ6IFRoZSBmdW5jdGlvbiBpcyBleHBsaWNpdGx5IGRlZmluZWQgYnkgdGhl IHVzZXIuDQo+ID4+PiArIyAgKiBkZWZhdWx0ZWRJbjogVGhlIGZ1bmN0aW9u IGlzIGRlZmF1bHRlZCBpbnNpZGUgdGhlIGNsYXNzIGRlY2wsDQo+ID4+PiAr IyAgICAgIHVzaW5nIHRoZSAnZGVmYXVsdCcga2V5d29yZC4NCj4gPj4+ICsj ICAqIGRlZmF1bHRlZE91dDogVGhlIGZ1bmN0aW9uIGlzIGRlY2xhcmVkIGlu c2lkZSB0aGUgY2xhc3MgZGVjbCwNCj4gPj4+ICsjICAgICAgYW5kIGRlZmF1 bHRlZCBvdXRzaWRlIHVzaW5nIHRoZSAnZGVmYXVsdCcga2V5d29yZC4NCj4g Pj4+ICsjICAqIGRlbGV0ZWQ6IFRoZSBmdW5jdGlvbiBpcyBleHBsaWNpdGx5 IGRlbGV0ZWQgYnkgdGhlIHVzZXIsDQo+ID4+PiArIyAgICAgIHVzaW5nIHRo ZSAnZGVsZXRlJyBrZXl3b3JkLg0KPiA+Pj4gKyMgICogYWJzZW50OiBUaGUg ZnVuY3Rpb24gaXMgbm90IGRlY2xhcmVkIGJ5IHRoZSB1c2VyIChpLmUuIGl0 IGRvZXMgbm90DQo+ID4+PiArIyAgICAgIGV4aXN0IGluIHRoZSBzb3VyY2Uu ICBUaGUgY29tcGlsZXIgZ2VuZXJhdGVzIChvciBkZWxldGVzKSB0aGUNCj4g Pj4+ICsjICAgICAgZGVmaW5pdGlvbiBpbiB0aGlzIGNhc2UuDQo+ID4+PiAr Iw0KPiA+Pj4gKyMgVGhlIEMrKyBBQkkgZGVjaWRlcyBpZiBhIGNsYXNzIGlz IHBhc3MtYnktdmFsdWUgb3IgcGFzcy1ieS1yZWYNCj4gPj4+ICsjIChpLmUu ICB0cml2aWFsbHkgY29weWFibGUgb3Igbm90KSBmaXJzdCBhdCB0aGUgbGFu Z3VhZ2UgbGV2ZWwsIGJhc2VkDQo+ID4+PiArIyBvbiB0aGUgc3RhdGUgb2Yg dGhlIHNwZWNpYWwgZnVuY3Rpb25zLiAgVGhlbiwgYXQgdGhlIHRhcmdldCBs ZXZlbCwgYQ0KPiA+Pj4gKyMgY2xhc3MgbWF5IGJlIGRldGVybWluZWQgdG8g YmUgcGFzcy1ieS1yZWYgYmVjYXVzZSBvZiBpdHMgc2l6ZQ0KPiA+Pj4gKyMg KGUuZy4gIGlmIGl0IGlzIHRvbyBsYXJnZSB0byBmaXQgb24gcmVnaXN0ZXJz KS4gIEZvciB0aGlzIHJlYXNvbiwgdGhpcw0KPiA+Pj4gKyMgdGVzdCBnZW5l cmF0ZXMgYm90aCBhIHNtYWxsIGFuZCBhIGxhcmdlIHZlcnNpb24gZm9yIHRo ZSBzYW1lDQo+ID4+PiArIyBjb21iaW5hdGlvbiBvZiBzcGVjaWFsIGZ1bmN0 aW9uIHN0YXRlcy4NCj4gPj4+ICsjDQo+ID4+PiArIyBBIGNsYXNzIGlzIG5v dCB0cml2aWFsbHktY29weWFibGUgaWYgYSBiYXNlIGNsYXNzIG9yIGEgZmll bGQgaXMgbm90DQo+ID4+PiArIyB0cml2aWFsbHktY29weWFibGUsIGV2ZW4g dGhvdWdoIHRoZSBjbGFzcyBkZWZpbml0aW9uIGl0c2VsZiBzZWVtcw0KPiA+ Pj4gKyMgdHJpdmlhbC4gIFRvIHRlc3QgdGhlc2UgY2FzZXMsIHdlIGFsc28g Z2VuZXJhdGUgZGVyaXZlZCBjbGFzc2VzIGFuZA0KPiA+Pj4gKyMgY29udGFp bmVyIGNsYXNzZXMuDQo+ID4+PiArIw0KPiA+Pj4gKyMgVGhlIGdlbmVyYXRl ZCBjb2RlIGlzIHBsYWNlZCBpbiB0aGUgdGVzdCBvdXRwdXQgZGlyZWN0b3J5 Lg0KPiA+Pj4gKyMNCj4gPj4+ICsjIFRoZSBjb21wYW5pb24gdGVzdCBmaWxl IHBhc3MtYnktcmVmLTIuZXhwIGFsc28gY29udGFpbnMNCj4gPj4+ICsjIG1h bnVhbGx5LXdyaXR0ZW4gY2FzZXMuDQo+ID4+Pg0KPiA+Pj4gLWlmIHsgW3Nr aXBfY3BsdXNfdGVzdHNdIH0geyBjb250aW51ZSB9DQo+ID4+PiAraWYge1tz a2lwX2NwbHVzX3Rlc3RzXX0gew0KPiA+Pj4gKyAgICB1bnRlc3RlZCAiYysr IHRlc3Qgc2tpcHBlZCINCj4gPj4+ICsgICAgY29udGludWUNCj4gPj4+ICt9 DQo+ID4+Pg0KPiA+Pj4gKyMgVGhlIHByb2dyYW0gc291cmNlIGlzIGdlbmVy YXRlZCBpbiB0aGUgb3V0cHV0IGRpcmVjdG9yeS4NCj4gPj4+ICsjIFdlIHVz ZSBzdGFuZGFyZF90ZXN0ZmlsZSBoZXJlIHRvIHNldCBjb252ZW5pZW5jZSB2 YXJpYWJsZXMuDQo+ID4+PiAgICBzdGFuZGFyZF90ZXN0ZmlsZSAuY2MNCj4g Pj4+DQo+ID4+PiAtaWYge1twcmVwYXJlX2Zvcl90ZXN0aW5nICJmYWlsZWQg dG8gcHJlcGFyZSIgJHRlc3RmaWxlICRzcmNmaWxlIHtkZWJ1ZyBjKyt9XX0g ew0KPiA+Pj4gKyMgU29tZSBjb25zdGFudCB2YWx1ZXMgdXNlZCB3aGVuIGdl bmVyYXRpbmcgdGhlIHNvdXJjZQ0KPiA+Pj4gKw0KPiA+Pj4gK3NldCBTTUFM TCAgICAyDQo+ID4+PiArc2V0IExBUkdFICAgIDE1MA0KPiA+Pj4gK3NldCBP UklHSU5BTCAyDQo+ID4+PiArc2V0IENVU1RPTSAgIDMNCj4gPj4+ICtzZXQg QURERUQgICAgNA0KPiA+Pj4gK3NldCBUUkFDRSAgICA1DQo+ID4+PiArDQo+ ID4+PiArDQo+ID4+PiArIyBSZXR1cm4gMSBpZiB0aGUgY2xhc3Mgd2hvc2Ug c3BlY2lhbCBmdW5jdGlvbiBzdGF0ZXMgYXJlIFNUQVRFUw0KPiA+Pj4gKyMg aXMgY29weWFibGUuICBPdGhlcndpc2UgcmV0dXJuIDAuDQo+ID4+PiArDQo+ ID4+PiArcHJvYyBpc19jb3B5X2NvbnN0cnVjdGlibGUgeyBzdGF0ZXMgfSB7 DQo+ID4+PiArICAgIHNldCBjY3RvciBbbGluZGV4ICRzdGF0ZXMgMF0NCj4g Pj4+ICsgICAgc2V0IGR0b3IgIFtsaW5kZXggJHN0YXRlcyAxXQ0KPiA+Pj4g KyAgICBzZXQgbWN0b3IgW2xpbmRleCAkc3RhdGVzIDJdDQo+ID4+PiArDQo+ ID4+PiArICAgIGlmIHskY2N0b3IgPT0gImRlbGV0ZWQiIHx8ICgkY2N0b3Ig PT0gImFic2VudCIgJiYgJG1jdG9yICE9ICJhYnNlbnQiKX0gew0KPiA+Pj4g KwlyZXR1cm4gMA0KPiA+Pj4gKyAgICB9DQo+ID4+PiArICAgIHJldHVybiAx DQo+ID4+PiArfQ0KPiA+Pj4gKw0KPiA+Pj4gKyMgR2VuZXJhdGUgYSBkZWNs YXJhdGlvbiBhbmQgYW4gb3V0LW9mLWNsYXNzIGRlZmluaXRpb24gZm9yIGEg ZnVuY3Rpb24NCj4gPj4+ICsjIHdpdGggdGhlIHByb3ZpZGVkIHNpZ25hdHVy ZS4gIFRoZSBTVEFURSBzaG91bGQgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6 DQo+ID4+PiArIyAtIGV4cGxpY2l0LCBkZWZhdWx0ZWRJbiwgZGVmYXVsdGVk T3V0LCBkZWxldGVkLCBhYnNlbnQNCj4gPj4+ICsNCj4gPj4+ICtwcm9jIGdl bmVyYXRlX21lbWJlcl9mdW5jdGlvbiB7IGNsYXNzbmFtZSBzaWduYXR1cmUg bGVuZ3RoIHN0YXRlIH0gew0KPiA+Pj4gKyAgICBzZXQgZGVjbGFyYXRpb24g IiINCj4gPj4+ICsgICAgc2V0IGRlZmluaXRpb24gIiINCj4gPj4+ICsNCj4g Pj4+ICsgICAgZ2xvYmFsIENVU1RPTQ0KPiA+Pj4gKyAgICBnbG9iYWwgVFJB Q0UNCj4gPj4+ICsNCj4gPj4+ICsgICAgc3dpdGNoICRzdGF0ZSB7DQo+ID4+ PiArCWV4cGxpY2l0IHsNCj4gPj4+ICsJICAgIHNldCBkZWNsYXJhdGlvbiAi JHNpZ25hdHVyZTtcbiINCj4gPj4+ICsJICAgIHNldCBkZWZpbml0aW9uICIk Y2xhc3NuYW1lXDpcOiRzaWduYXR1cmUNCj4gPj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgew0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRhdGFcWzBcXSA9ICRDVVNUT007DQo+ID4+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVxbW2V4cHIgJGxlbmd0aCAt IDFdXF0gPSAkQ1VTVE9NOw0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRyYWNlciA9ICRUUkFDRTsNCj4gPj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfVxuIg0KPiA+Pj4gKwl9DQo+ID4+PiArCWRl ZmF1bHRlZEluIHsNCj4gPj4+ICsJICAgIHNldCBkZWNsYXJhdGlvbiAiJHNp Z25hdHVyZSA9IGRlZmF1bHQ7XG4iDQo+ID4+PiArCX0NCj4gPj4+ICsJZGVm YXVsdGVkT3V0IHsNCj4gPj4+ICsJICAgIHNldCBkZWNsYXJhdGlvbiAiJHNp Z25hdHVyZTtcbiINCj4gPj4+ICsJICAgIHNldCBkZWZpbml0aW9uICIkY2xh c3NuYW1lXDpcOiRzaWduYXR1cmUgPSBkZWZhdWx0O1xuIg0KPiA+Pj4gKwl9 DQo+ID4+PiArCWRlbGV0ZWQgew0KPiA+Pj4gKwkgICAgc2V0IGRlY2xhcmF0 aW9uICIkc2lnbmF0dXJlID0gZGVsZXRlO1xuIg0KPiA+Pj4gKwl9DQo+ID4+ PiArCWRlZmF1bHQgew0KPiA+Pj4gKwkgICAgIyBmdW5jdGlvbiBpcyBub3Qg dXNlci1kZWZpbmVkIGluIHRoaXMgY2FzZQ0KPiA+Pj4gKwl9DQo+ID4+PiAr ICAgIH0NCj4gPj4+ICsNCj4gPj4+ICsgICAgcmV0dXJuIFtsaXN0ICRkZWNs YXJhdGlvbiAkZGVmaW5pdGlvbl0NCj4gPj4+ICt9DQo+ID4+PiArDQo+ID4+ PiArIyBHZW5lcmF0ZSBhIEMrKyBjbGFzcyB3aXRoIHRoZSBnaXZlbiBDTEFT U05BTUUgYW5kIExFTkdUSC1tYW55DQo+ID4+PiArIyBpbnRlZ2VyIGVsZW1l bnRzLiAgVGhlIFNUQVRFUyBpcyBhbiBhcnJheSBvZiAzIGl0ZW1zDQo+ID4+ PiArIyBjb250YWluaW5nIHRoZSBkZXNpcmVkIHN0YXRlIG9mIHRoZSBzcGVj aWFsIGZ1bmN0aW9ucw0KPiA+Pj4gKyMgaW4gdGhpcyBvcmRlcjoNCj4gPj4+ ICsjIGNvcHkgY29uc3RydWN0b3IsIGRlc3RydWN0b3IsIG1vdmUgY29uc3Ry dWN0b3INCj4gPj4+ICsNCj4gPj4+ICtwcm9jIGdlbmVyYXRlX2NsYXNzIHsg Y2xhc3NuYW1lIGxlbmd0aCBzdGF0ZXMgfSB7DQo+ID4+PiArICAgIHNldCBk ZWNsYXJhdGlvbnMgIiINCj4gPj4+ICsgICAgc2V0IGRlZmluaXRpb25zICIi DQo+ID4+PiArICAgIHNldCBjbGFzc25hbWUgIiR7Y2xhc3NuYW1lfV9bam9p biAkc3RhdGVzIF9dIg0KPiA+Pj4gKw0KPiA+Pj4gKyAgICBmb3Ige3NldCBp IDB9IHskaSA8IFtsbGVuZ3RoICRzdGF0ZXNdfSB7aW5jciBpfSB7DQo+ID4+ PiArCXNldCBzaWcgIiINCj4gPj4+ICsJc3dpdGNoICRpIHsNCj4gPj4+ICsJ ICAgIDAge3NldCBzaWcgIiRjbGFzc25hbWUgKGNvbnN0ICRjbGFzc25hbWUg XCZyaHMpIn0NCj4gPj4+ICsJICAgIDEge3NldCBzaWcgIlx+JGNsYXNzbmFt ZSAodm9pZCkifQ0KPiA+Pj4gKwkgICAgMiB7c2V0IHNpZyAiJGNsYXNzbmFt ZSAoJGNsYXNzbmFtZSBcJlwmcmhzKSJ9DQo+ID4+PiArCX0NCj4gPj4+ICsN Cj4gPj4+ICsJc2V0IHN0YXRlIFtsaW5kZXggJHN0YXRlcyAkaV0NCj4gPj4+ ICsJc2V0IGNvZGUgW2dlbmVyYXRlX21lbWJlcl9mdW5jdGlvbiAkY2xhc3Nu YW1lICRzaWcgJGxlbmd0aCAkc3RhdGVdDQo+ID4+PiArCWFwcGVuZCBkZWNs YXJhdGlvbnMgW2xpbmRleCAkY29kZSAwXQ0KPiA+Pj4gKwlhcHBlbmQgZGVm aW5pdGlvbnMgW2xpbmRleCAkY29kZSAxXQ0KPiA+Pj4gKyAgICB9DQo+ID4+ PiArDQo+ID4+PiArICAgIGdsb2JhbCBPUklHSU5BTA0KPiA+Pj4gKw0KPiA+ Pj4gKyAgICByZXR1cm4gIg0KPiA+Pj4gKyAgICAvKioqIEMrKyBjbGFzcyAk Y2xhc3NuYW1lICoqKi8NCj4gPj4+ICsgICAgY2xhc3MgJHtjbGFzc25hbWV9 IHsNCj4gPj4+ICsgICAgcHVibGljOg0KPiA+Pj4gKyAgICAgICAgJGNsYXNz bmFtZSAodm9pZCk7DQo+ID4+PiArICAgICAgICAkZGVjbGFyYXRpb25zDQo+ ID4+PiArDQo+ID4+PiArICAgICAgICBpbnQgZGF0YVxbJGxlbmd0aFxdOw0K PiA+Pj4gKyAgICB9Ow0KPiA+Pj4gKw0KPiA+Pj4gKyAgICAkY2xhc3NuYW1l XDpcOiRjbGFzc25hbWUgKHZvaWQpDQo+ID4+PiArICAgIHsNCj4gPj4+ICsg ICAgICAgIGRhdGFcWzBcXSA9ICRPUklHSU5BTDsNCj4gPj4+ICsgICAgICAg IGRhdGFcW1tleHByICRsZW5ndGggLSAxXVxdID0gJE9SSUdJTkFMOw0KPiA+ Pj4gKyAgICB9DQo+ID4+PiArDQo+ID4+PiArICAgICRkZWZpbml0aW9ucw0K PiA+Pj4gKw0KPiA+Pj4gKyAgICAkY2xhc3NuYW1lICR7Y2xhc3NuYW1lfV92 YXI7IC8qIGdsb2JhbCB2YXIgKi8NCj4gPj4+ICsNCj4gPj4+ICsgICAgdGVt cGxhdGUgaW50IGNidjwkY2xhc3NuYW1lPiAoJGNsYXNzbmFtZSBhcmcpOyIN Cj4gPj4+ICt9DQo+ID4+PiArDQo+ID4+PiArIyBHZW5lcmF0ZSBhIHNtYWxs IEMrKyBjbGFzcw0KPiA+Pj4gKw0KPiA+Pj4gK3Byb2MgZ2VuZXJhdGVfc21h bGxfY2xhc3MgeyBzdGF0ZXMgfSB7DQo+ID4+PiArICAgIGdsb2JhbCBTTUFM TA0KPiA+Pj4gKyAgICByZXR1cm4gW2dlbmVyYXRlX2NsYXNzIFNtYWxsICRT TUFMTCAkc3RhdGVzXTsNCj4gPj4+ICt9DQo+ID4+PiArDQo+ID4+PiArIyBH ZW5lcmF0ZSBhIGxhcmdlIEMrKyBjbGFzcw0KPiA+Pj4gKw0KPiA+Pj4gK3By b2MgZ2VuZXJhdGVfbGFyZ2VfY2xhc3MgeyBzdGF0ZXMgfSB7DQo+ID4+PiAr ICAgIGdsb2JhbCBMQVJHRQ0KPiA+Pj4gKyAgICByZXR1cm4gW2dlbmVyYXRl X2NsYXNzIExhcmdlICRMQVJHRSAkc3RhdGVzXTsNCj4gPj4+ICt9DQo+ID4+ PiArDQo+ID4+PiArIyBHZW5lcmF0ZSBhIGNsYXNzIHRoYXQgZGVyaXZlcyBm cm9tIGEgc21hbGwgY2xhc3MNCj4gPj4+ICsNCj4gPj4+ICtwcm9jIGdlbmVy YXRlX2Rlcml2ZWRfY2xhc3MgeyBzdGF0ZXMgfSB7DQo+ID4+PiArICAgIHNl dCBiYXNlICJTbWFsbF9bam9pbiAkc3RhdGVzIF9dIg0KPiA+Pj4gKyAgICBz ZXQgY2xhc3NuYW1lICJEZXJpdmVkX1tqb2luICRzdGF0ZXMgX10iDQo+ID4+ PiArDQo+ID4+PiArICAgIHJldHVybiAiDQo+ID4+PiArICAgIC8qKiogQ2xh c3MgZGVyaXZlZCBmcm9tICRiYXNlICoqKi8NCj4gPj4+ICsgICAgY2xhc3Mg JGNsYXNzbmFtZSA6IHB1YmxpYyAkYmFzZSB7DQo+ID4+PiArICAgIHB1Ymxp YzoNCj4gPj4+ICsgICAgfTsNCj4gPj4+ICsNCj4gPj4+ICsgICAgJGNsYXNz bmFtZSAke2NsYXNzbmFtZX1fdmFyOyAvKiBnbG9iYWwgdmFyICovDQo+ID4+ PiArDQo+ID4+PiArICAgIHRlbXBsYXRlIGludCBjYnY8JGNsYXNzbmFtZT4g KCRjbGFzc25hbWUgYXJnKTsiDQo+ID4+PiArfQ0KPiA+Pj4gKw0KPiA+Pj4g KyMgR2VuZXJhdGUgYSBjbGFzcyB0aGF0IGNvbnRhaW5zIGEgc21hbGwgY2xh c3MgaXRlbQ0KPiA+Pj4gKw0KPiA+Pj4gK3Byb2MgZ2VuZXJhdGVfY29udGFp bmVyX2NsYXNzIHsgc3RhdGVzIH0gew0KPiA+Pj4gKyAgICBzZXQgY29udGFp bmVkICJTbWFsbF9bam9pbiAkc3RhdGVzIF9dIg0KPiA+Pj4gKyAgICBzZXQg Y2xhc3NuYW1lICJDb250YWluZXJfW2pvaW4gJHN0YXRlcyBfXSINCj4gPj4+ ICsNCj4gPj4+ICsgICAgcmV0dXJuICINCj4gPj4+ICsgICAgLyoqKiBDbGFz cyB0aGF0IGNvbnRhaW5zICRjb250YWluZWQgKioqLw0KPiA+Pj4gKyAgICBj bGFzcyAkY2xhc3NuYW1lIHsNCj4gPj4+ICsgICAgcHVibGljOg0KPiA+Pj4g KyAgICAgICAgJGNvbnRhaW5lZCBpdGVtOw0KPiA+Pj4gKyAgICB9Ow0KPiA+ Pj4gKw0KPiA+Pj4gKyAgICAkY2xhc3NuYW1lICR7Y2xhc3NuYW1lfV92YXI7 IC8qIGdsb2JhbCB2YXIgKi8NCj4gPj4+ICsNCj4gPj4+ICsgICAgdGVtcGxh dGUgaW50IGNidl9jb250YWluZXI8JGNsYXNzbmFtZT4gKCRjbGFzc25hbWUg YXJnKTsiDQo+ID4+PiArfQ0KPiA+Pj4gKw0KPiA+Pj4gKyMgR2VuZXJhdGUg dXNlZnVsIHN0YXRlbWVudHMgdGhhdCB1c2UgYSBjbGFzcyBpbiB0aGUgZGVi dWdlZSBwcm9ncmFtDQo+ID4+PiArDQo+ID4+PiArcHJvYyBnZW5lcmF0ZV9z dG10cyB7IGNsYXNzcHJlZml4IHN0YXRlcyB7Y2J2ZnVuICJjYnYifX0gew0K PiA+Pj4gKyAgICBzZXQgY2xhc3NuYW1lICIke2NsYXNzcHJlZml4fV9bam9p biAkc3RhdGVzIF9dIg0KPiA+Pj4gKw0KPiA+Pj4gKyAgICAjIEhhdmluZyBh biBleHBsaWNpdCBjYWxsIHRvIHRoZSBjYnYgZnVuY3Rpb24gaW4gdGhlIGRl YnVnZWUgcHJvZ3JhbQ0KPiA+Pj4gKyAgICAjIGVuc3VyZXMgdGhhdCB0aGUg Y29tcGlsZXIgd2lsbCBlbWl0IG5lY2Vzc2FyeSBmdW5jdGlvbiBpbiB0aGUg YmluYXJ5Lg0KPiA+Pj4gKyAgICBpZiB7W2lzX2NvcHlfY29uc3RydWN0aWJs ZSAkc3RhdGVzXX0gew0KPiA+Pj4gKwlzZXQgY2J2Y2FsbCAiJGNidmZ1bjwk Y2xhc3NuYW1lPiAoJHtjbGFzc25hbWV9X3Zhcik7XG4iDQo+ID4+PiArICAg IH0gZWxzZSB7DQo+ID4+PiArCXNldCBjYnZjYWxsICIiDQo+ID4+PiArICAg IH0NCj4gPj4+ICsNCj4gPj4+ICsgICAgcmV0dXJuICIkY2J2Y2FsbCINCj4g Pj4+ICt9DQo+ID4+PiArDQo+ID4+PiArIyBHZW5lcmF0ZSB0aGUgY29tcGxl dGUgZGVidWdlZSBwcm9ncmFtDQo+ID4+PiArDQo+ID4+PiArcHJvYyBnZW5l cmF0ZV9wcm9ncmFtIHsgY2xhc3NlcyBzdG10cyB9IHsNCj4gPj4+ICsgICAg Z2xvYmFsIEFEREVEDQo+ID4+PiArDQo+ID4+PiArICAgIHJldHVybiAiDQo+ ID4+PiArICAgIC8qKiogVEhJUyBGSUxFIElTIEdFTkVSQVRFRCBCWSBUSEUg VEVTVC4gICoqKi8NCj4gPj4+ICsNCj4gPj4+ICsgICAgc3RhdGljIGludCB0 cmFjZXIgPSAwOw0KPiA+Pj4gKw0KPiA+Pj4gKyAgICAvKiBUaGUgY2FsbC1i eS12YWx1ZSBmdW5jdGlvbi4gICovDQo+ID4+PiArICAgIHRlbXBsYXRlIDxj bGFzcyBUPg0KPiA+Pj4gKyAgICBpbnQNCj4gPj4+ICsgICAgY2J2IChUIGFy ZykNCj4gPj4+ICsgICAgew0KPiA+Pj4gKyAgICAgIGFyZy5kYXRhXFswXF0g Kz0gJEFEREVEOyAvLyBpbnRlbnRpb25hbGx5IG1vZGlmeSB0aGUgYXJnDQo+ ID4+PiArICAgICAgcmV0dXJuIGFyZy5kYXRhXFswXF07DQo+ID4+PiArICAg IH0NCj4gPj4+ICsNCj4gPj4+ICsgICAgdGVtcGxhdGUgPGNsYXNzIFQ+DQo+ ID4+PiArICAgIGludA0KPiA+Pj4gKyAgICBjYnZfY29udGFpbmVyIChUIGFy ZykNCj4gPj4+ICsgICAgew0KPiA+Pj4gKyAgICAgIGFyZy5pdGVtLmRhdGFc WzBcXSArPSAkQURERUQ7ICAvLyBpbnRlbnRpb25hbGx5IG1vZGlmeQ0KPiA+ Pj4gKyAgICAgIHJldHVybiBhcmcuaXRlbS5kYXRhXFswXF07DQo+ID4+PiAr ICAgIH0NCj4gPj4+ICsNCj4gPj4+ICsgICAgJGNsYXNzZXMNCj4gPj4+ICsN Cj4gPj4+ICsgICAgaW50DQo+ID4+PiArICAgIG1haW4gKHZvaWQpDQo+ID4+ PiArICAgIHsNCj4gPj4+ICsgICAgICAkc3RtdHMNCj4gPj4+ICsNCj4gPj4+ ICsgICAgICAvKiBzdG9wIGhlcmUgKi8NCj4gPj4+ICsNCj4gPj4+ICsgICAg ICByZXR1cm4gMDsNCj4gPj4+ICsgICAgfSINCj4gPj4+ICt9DQo+ID4+PiAr DQo+ID4+PiArIyBDb21wdXRlIGFsbCB0aGUgY29tYmluYXRpb25zIG9mIHNw ZWNpYWwgZnVuY3Rpb24gc3RhdGVzLg0KPiA+Pj4gKyMgV2UgZG8gbm90IGNv bnRhaW4gdGhlICdkZWxldGVkJyBzdGF0ZSBmb3IgdGhlIGRlc3RydWN0b3Is DQo+ID4+PiArIyBiZWNhdXNlIGl0IGlzIGlsbGVnYWwgdG8gaGF2ZSBzdGFj ay1hbGxvY2F0ZWQgb2JqZWN0cw0KPiA+Pj4gKyMgd2hvc2UgZGVzdHJ1Y3Rv ciBoYXZlIGJlZW4gZGVsZXRlZC4gIFRoaXMgY2FzZSBpcyBjb3ZlcmVkDQo+ ID4+PiArIyBpbiBwYXNzLWJ5LXJlZi0yIHZpYSBoZWFwLWFsbG9jYXRlZCBv YmplY3RzLg0KPiA+Pj4gKw0KPiA+Pj4gK3NldCBvcHRpb25zX25vZGVsZXRl IFtsaXN0IGFic2VudCBleHBsaWNpdCBkZWZhdWx0ZWRJbiBkZWZhdWx0ZWRP dXRdDQo+ID4+PiArc2V0IG9wdGlvbnMgW2NvbmNhdCAkb3B0aW9uc19ub2Rl bGV0ZSB7ZGVsZXRlZH1dDQo+ID4+PiArc2V0IGFsbF9jb21iaW5hdGlvbnMg e30NCj4gPj4+ICsNCj4gPj4+ICtmb3JlYWNoIGNjdG9yICRvcHRpb25zIHsN Cj4gPj4+ICsgICAgZm9yZWFjaCBkdG9yICRvcHRpb25zX25vZGVsZXRlIHsN Cj4gPj4+ICsJZm9yZWFjaCBtY3RvciAkb3B0aW9ucyB7DQo+ID4+PiArCSAg ICBsYXBwZW5kIGFsbF9jb21iaW5hdGlvbnMgW2xpc3QgJGNjdG9yICRkdG9y ICRtY3Rvcl0NCj4gPj4+ICsJfQ0KPiA+Pj4gKyAgICB9DQo+ID4+PiArfQ0K PiA+Pj4gKw0KPiA+Pj4gKyMgR2VuZXJhdGUgdGhlIGNsYXNzZXMuDQo+ID4+ PiArDQo+ID4+PiArc2V0IGNsYXNzZXMgIiINCj4gPj4+ICtzZXQgc3RtdHMg IiINCj4gPj4+ICsNCj4gPj4+ICtmb3JlYWNoIHN0YXRlICRhbGxfY29tYmlu YXRpb25zIHsNCj4gPj4+ICsgICAgYXBwZW5kIGNsYXNzZXMgW2dlbmVyYXRl X3NtYWxsX2NsYXNzICRzdGF0ZV0NCj4gPj4+ICsgICAgYXBwZW5kIHN0bXRz IFtnZW5lcmF0ZV9zdG10cyAiU21hbGwiICRzdGF0ZV0NCj4gPj4+ICsNCj4g Pj4+ICsgICAgYXBwZW5kIGNsYXNzZXMgW2dlbmVyYXRlX2xhcmdlX2NsYXNz ICRzdGF0ZV0NCj4gPj4+ICsgICAgYXBwZW5kIHN0bXRzIFtnZW5lcmF0ZV9z dG10cyAiTGFyZ2UiICRzdGF0ZV0NCj4gPj4+ICsNCj4gPj4+ICsgICAgYXBw ZW5kIGNsYXNzZXMgW2dlbmVyYXRlX2Rlcml2ZWRfY2xhc3MgJHN0YXRlXQ0K PiA+Pj4gKyAgICBhcHBlbmQgc3RtdHMgW2dlbmVyYXRlX3N0bXRzICJEZXJp dmVkIiAkc3RhdGVdDQo+ID4+PiArDQo+ID4+PiArICAgIGFwcGVuZCBjbGFz c2VzIFtnZW5lcmF0ZV9jb250YWluZXJfY2xhc3MgJHN0YXRlXQ0KPiA+Pj4g KyAgICBhcHBlbmQgc3RtdHMgW2dlbmVyYXRlX3N0bXRzICJDb250YWluZXIi ICRzdGF0ZSAiY2J2X2NvbnRhaW5lciJdDQo+ID4+PiArfQ0KPiA+Pj4gKw0K PiA+Pj4gKyMgR2VuZXJhdGUgdGhlIHByb2dyYW0gY29kZSBhbmQgY29tcGls ZQ0KPiA+Pj4gK3NldCBwcm9ncmFtIFtnZW5lcmF0ZV9wcm9ncmFtICRjbGFz c2VzICRzdG10c10NCj4gPj4+ICtzZXQgc3JjZmlsZSBbc3RhbmRhcmRfb3V0 cHV0X2ZpbGUgJHtzcmNmaWxlfV0NCj4gPj4+ICtnZGJfcHJvZHVjZV9zb3Vy Y2UgJHNyY2ZpbGUgJHByb2dyYW0NCj4gPj4+ICsNCj4gPj4+ICtzZXQgb3B0 aW9ucyB7ZGVidWcgYysrIGFkZGl0aW9uYWxfZmxhZ3M9LXN0ZD1jKysxMX0N Cj4gPj4+ICtpZiB7W3ByZXBhcmVfZm9yX3Rlc3RpbmcgImZhaWxlZCB0byBw cmVwYXJlIiAkdGVzdGZpbGUgJHNyY2ZpbGUgJG9wdGlvbnNdfSB7DQo+ID4+ PiAgICAgICAgcmV0dXJuIC0xDQo+ID4+PiAgICB9DQo+ID4+Pg0KPiA+Pj4g LWlmICFbcnVudG9fbWFpbl0gdGhlbiB7DQo+ID4+PiAraWYgeyFbcnVudG9f bWFpbl19IHsNCj4gPj4+ICsgICAgdW50ZXN0ZWQgImZhaWxlZCB0byBydW4g dG8gbWFpbiINCj4gPj4+ICAgICAgICByZXR1cm4gLTENCj4gPj4+ICAgIH0N Cj4gPj4+DQo+ID4+PiAtZ2RiX3Rlc3QgInByaW50IGZvbyAoZ2xvYmFsX29i aikiICIgPSAzIiAiY2FsbCBmdW5jdGlvbiBpbiBvYmoiDQo+ID4+PiAtZ2Ri X3Rlc3QgInByaW50IGJsYXAgKGdsb2JhbF9kZXJpdmVkKSIgIiA9IDMiICJj YWxsIGZ1bmN0aW9uIGluIGRlcml2ZWQiDQo+ID4+PiAtZ2RiX3Rlc3QgInBy aW50IGJsaXAgKGdsb2JhbF9jb250YWluZXIpIiAiID0gMyIgImNhbGwgZnVu Y3Rpb24gaW4gY29udGFpbmVyIg0KPiA+Pj4gK3NldCBicF9sb2NhdGlvbiBb Z2RiX2dldF9saW5lX251bWJlciAic3RvcCBoZXJlIl0NCj4gPj4+ICtnZGJf YnJlYWtwb2ludCAkYnBfbG9jYXRpb24NCj4gPj4+ICtnZGJfY29udGludWVf dG9fYnJlYWtwb2ludCAiZW5kIG9mIG1haW4iICIuKnJldHVybiAuKjsiDQo+ ID4+PiArDQo+ID4+PiArIyBEbyB0aGUgY2hlY2tzIGZvciBhIGdpdmVuIGNs YXNzIHdob3NlIG5hbWUgaXMgcHJlZml4ZWQgd2l0aCBQUkVGSVgsDQo+ID4+ PiArIyBhbmQgd2hvc2Ugc3BlY2lhbCBmdW5jdGlvbnMgaGF2ZSB0aGUgc3Rh dGVzIGdpdmVuIGluIFNUQVRFUy4NCj4gPj4+ICsjIFRoZSBuYW1lIG9mIHRo ZSBjYWxsLWJ5LXZhbHVlIGZ1bmN0aW9uIGFuZCB0aGUgZXhwcmVzc2lvbiB0 byBhY2Nlc3MNCj4gPj4+ICsjIHRoZSBkYXRhIGZpZWxkIGNhbiBiZSBzcGVj aWZpZWQgZXhwbGljaXRseSBpZiB0aGUgZGVmYXVsdCB2YWx1ZXMNCj4gPj4+ ICsjIGRvIG5vdCB3b3JrLg0KPiA+Pj4gKw0KPiA+Pj4gK3Byb2MgdGVzdF9m b3JfY2xhc3MgeyBwcmVmaXggc3RhdGVzIGNidmZ1biBkYXRhX2ZpZWxkIGxl bmd0aH0gew0KPiA+Pj4gKyAgICBzZXQgbmFtZSAiJHtwcmVmaXh9X1tqb2lu ICRzdGF0ZXMgX10iDQo+ID4+PiArDQo+ID4+PiArICAgIHNldCBjY3RvciBb bGluZGV4ICRzdGF0ZXMgMF0NCj4gPj4+ICsgICAgc2V0IGR0b3IgIFtsaW5k ZXggJHN0YXRlcyAxXQ0KPiA+Pj4gKyAgICBzZXQgbWN0b3IgW2xpbmRleCAk c3RhdGVzIDJdDQo+ID4+PiArDQo+ID4+PiArICAgIGdsb2JhbCBPUklHSU5B TA0KPiA+Pj4gKyAgICBnbG9iYWwgQ1VTVE9NDQo+ID4+PiArICAgIGdsb2Jh bCBBRERFRA0KPiA+Pj4gKyAgICBnbG9iYWwgVFJBQ0UNCj4gPj4+ICsNCj4g Pj4+ICsgICAgd2l0aF90ZXN0X3ByZWZpeCAkbmFtZSB7DQo+ID4+PiArCWlm IHtbaXNfY29weV9jb25zdHJ1Y3RpYmxlICRzdGF0ZXNdfSB7DQo+ID4+PiAr CSAgICBzZXQgZXhwZWN0ZWQgW2V4cHIgeyRPUklHSU5BTCArICRBRERFRH1d DQo+ID4+PiArCSAgICBpZiB7JGNjdG9yID09ICJleHBsaWNpdCJ9IHsNCj4g Pj4+ICsJCXNldCBleHBlY3RlZCBbZXhwciB7JENVU1RPTSArICRBRERFRH1d DQo+ID4+PiArCSAgICB9DQo+ID4+PiArCSAgICBpZiB7JGR0b3IgPT0gImV4 cGxpY2l0In0gew0KPiA+Pj4gKwkJZ2RiX3Rlc3QgInByaW50IHRyYWNlciA9 IDAiICIgPSAwIiAicmVzZXQgdGhlIHRyYWNlciINCj4gPj4+ICsJICAgIH0N Cj4gPj4+ICsJICAgIGdkYl90ZXN0ICJwcmludCAke2NidmZ1bn08JG5hbWU+ ICgke25hbWV9X3ZhcikiICIgPSAkZXhwZWN0ZWQiIFwNCj4gPj4+ICsJCSJj YWxsICckY2J2ZnVuJyINCj4gPj4+ICsJICAgIGdkYl90ZXN0ICJwcmludCAk e25hbWV9X3Zhci4ke2RhdGFfZmllbGR9XFswXF0iICIgPSAkT1JJR0lOQUwi IFwNCj4gPj4+ICsJCSJjYnYgYXJndW1lbnQgc2hvdWxkIG5vdCBjaGFuZ2Ug KGl0ZW0gMCkiDQo+ID4+PiArCSAgICBpZiB7JGxlbmd0aCA+IDF9IHsNCj4g Pj4+ICsJCXNldCBsYXN0X2luZGV4IFtleHByICRsZW5ndGggLSAxXQ0KPiA+ Pj4gKwkJZ2RiX3Rlc3QgInByaW50ICR7bmFtZX1fdmFyLiR7ZGF0YV9maWVs ZH1cWyRsYXN0X2luZGV4XF0iIFwNCj4gPj4+ICsJCSAgICAiID0gJE9SSUdJ TkFMIiBcDQo+ID4+PiArCQkgICAgImNidiBhcmd1bWVudCBzaG91bGQgbm90 IGNoYW5nZSAoaXRlbSAkbGFzdF9pbmRleCkiDQo+ID4+PiArCSAgICB9DQo+ ID4+PiArCSAgICBpZiB7JGR0b3IgPT0gImV4cGxpY2l0In0gew0KPiA+Pj4g KwkJZ2RiX3Rlc3QgInByaW50IHRyYWNlciIgIiA9ICRUUkFDRSIgXA0KPiA+ Pj4gKwkJICAgICJkZXN0cnVjdG9yIHNob3VsZCBiZSBjYWxsZWQiDQo+ID4+ PiArCSAgICB9DQo+ID4+PiArCX0gZWxzZSB7DQo+ID4+PiArCSAgICBnZGJf dGVzdCAicHJpbnQgJHtjYnZmdW59PCRuYW1lPiAoJHtuYW1lfV92YXIpIiBc DQo+ID4+PiArCQkiLiogY2Fubm90IGJlIGV2YWx1YXRlZCAuKiAnJHtuYW1l fScgaXMgbm90IGNvcHkgY29uc3RydWN0aWJsZSIgXA0KPiA+Pj4gKwkJImNh bGxpbmcgJyRjYnZmdW4nIHNob3VsZCBiZSByZWZ1c2VkIg0KPiA+Pj4gKwl9 DQo+ID4+PiArICAgIH0NCj4gPj4+ICt9DQo+ID4+PiArDQo+ID4+PiArZm9y ZWFjaCBzdGF0ZSAkYWxsX2NvbWJpbmF0aW9ucyB7DQo+ID4+PiArICAgIHRl c3RfZm9yX2NsYXNzICJTbWFsbCIgICAgICRzdGF0ZSAiY2J2IiAgICAgICAg ICAgImRhdGEiICAgICAgJFNNQUxMDQo+ID4+PiArICAgIHRlc3RfZm9yX2Ns YXNzICJMYXJnZSIgICAgICRzdGF0ZSAiY2J2IiAgICAgICAgICAgImRhdGEi ICAgICAgJExBUkdFDQo+ID4+PiArICAgIHRlc3RfZm9yX2NsYXNzICJEZXJp dmVkIiAgICRzdGF0ZSAiY2J2IiAgICAgICAgICAgImRhdGEiICAgICAgMQ0K PiA+Pj4gKyAgICB0ZXN0X2Zvcl9jbGFzcyAiQ29udGFpbmVyIiAkc3RhdGUg ImNidl9jb250YWluZXIiICJpdGVtLmRhdGEiIDENCj4gPj4+ICt9DQo+ID4+ Pg0KPiA+IEludGVsIERldXRzY2hsYW5kIEdtYkgNCj4gPiBSZWdpc3RlcmVk IEFkZHJlc3M6IEFtIENhbXBlb24gMTAtMTIsIDg1NTc5IE5ldWJpYmVyZywg R2VybWFueQ0KPiA+IFRlbDogKzQ5IDg5IDk5IDg4NTMtMCwgd3d3LmludGVs LmRlDQo+ID4gTWFuYWdpbmcgRGlyZWN0b3JzOiBDaHJpc3RpbiBFaXNlbnNj aG1pZCwgR2FyeSBLZXJzaGF3DQo+ID4gQ2hhaXJwZXJzb24gb2YgdGhlIFN1 cGVydmlzb3J5IEJvYXJkOiBOaWNvbGUgTGF1DQo+ID4gUmVnaXN0ZXJlZCBP ZmZpY2U6IE11bmljaA0KPiA+IENvbW1lcmNpYWwgUmVnaXN0ZXI6IEFtdHNn ZXJpY2h0IE11ZW5jaGVuIEhSQiAxODY5MjgNCj4gPg0KSW50ZWwgRGV1dHNj aGxhbmQgR21iSApSZWdpc3RlcmVkIEFkZHJlc3M6IEFtIENhbXBlb24gMTAt MTIsIDg1NTc5IE5ldWJpYmVyZywgR2VybWFueQpUZWw6ICs0OSA4OSA5OSA4 ODUzLTAsIHd3dy5pbnRlbC5kZQpNYW5hZ2luZyBEaXJlY3RvcnM6IENocmlz dGluIEVpc2Vuc2NobWlkLCBHYXJ5IEtlcnNoYXcKQ2hhaXJwZXJzb24gb2Yg dGhlIFN1cGVydmlzb3J5IEJvYXJkOiBOaWNvbGUgTGF1ClJlZ2lzdGVyZWQg T2ZmaWNlOiBNdW5pY2gKQ29tbWVyY2lhbCBSZWdpc3RlcjogQW10c2dlcmlj aHQgTXVlbmNoZW4gSFJCIDE4NjkyOAo= >From gdb-patches-return-163041-listarch-gdb-patches=sources.redhat.com@sourceware.org Mon Jan 13 20:46:36 2020 Return-Path: Delivered-To: listarch-gdb-patches@sources.redhat.com Received: (qmail 45152 invoked by alias); 13 Jan 2020 20:46:35 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 45143 invoked by uid 89); 13 Jan 2020 20:46:35 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-11.9 required=5.0 tests=BAYES_00,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.1 spammy=Prevent, H*RU:209.85.221.65, HX-Spam-Relays-External:209.85.221.65 X-HELO: mail-wr1-f65.google.com Received: from mail-wr1-f65.google.com (HELO mail-wr1-f65.google.com) (209.85.221.65) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 13 Jan 2020 20:46:33 +0000 Received: by mail-wr1-f65.google.com with SMTP id c9so10050306wrw.8 for ; Mon, 13 Jan 2020 12:46:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=embecosm.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=kFGbDYtYN3XDNN0d4p6dSMOV5h7KUaV/aPordkj/Snk=; b=Lb2uK6AJ8bSjFdjb+5A0/I/bd3QdB2u3TwPQ6kpPpD5pvM4KpZG4qkR+q4IlMWa2r6 WjdxWn53KxNw5uwuptZuTo41Lf5YWQQmmW23OhlalkVh/KSkAKI5aTutFh2bFbcMpS+1 iLFMfog9dJyZrIioGM/36/Lshup2ONJtt/+8OXG36YxqCUOjysWSwn1xGKsGHp8aK9Lc hdUddTEViVP/2PkrjOXZtGbOfZ2VBAbqdshAN6HoftqNPlAMWGtjSFTANHAlvsNPOk0R biYoKEt3BUJ/I6P3hM4cwxOU0ZvsLslYjUanukNyDPIy3ZhfwsvdWrW2fZJ42RAML30u yXNg== Return-Path: Received: from localhost (cust242-dsl59.idnet.net. [212.69.59.242]) by smtp.gmail.com with ESMTPSA id q14sm16221716wmj.14.2020.01.13.12.46.30 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 13 Jan 2020 12:46:30 -0800 (PST) From: Andrew Burgess To: gdb-patches@sourceware.org Cc: Shahab Vahedi , Pedro Alves , Tom Tromey , Andrew Burgess Subject: [PATCH 0/2] gdb/tui: Assembler window scrolling fixes Date: Mon, 13 Jan 2020 20:46:00 -0000 Message-Id: In-Reply-To: <20200110143056.GD3815@gmail.com> References: <20200110143056.GD3815@gmail.com> X-IsSubscribed: yes X-SW-Source: 2020-01/txt/msg00355.txt.bz2 Content-length: 872 Patch #1 is Pedro's patch to stop exceptions trying to cross readline which was posted elsewhere in this thread and really should be included before its lost. Patch #2 is a reworking of assembler window scrolling that allows it to handle trying to disassemble invalid memory, and also makes the whole scrolling experience more robust (I believe). -- Andrew Burgess (1): gdb/tui: asm window handles invalid memory and scrolls better Pedro Alves (1): gdb/tui: Prevent exceptions from trying to cross readline gdb/ChangeLog | 12 ++ gdb/testsuite/ChangeLog | 4 + gdb/testsuite/gdb.tui/tui-layout-asm.exp | 41 ++++++ gdb/tui/tui-disasm.c | 216 +++++++++++++++++++++++-------- gdb/tui/tui-io.c | 31 ++++- 5 files changed, 245 insertions(+), 59 deletions(-) -- 2.14.5