From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by mx.groups.io with SMTP id smtpd.web11.6097.1594367687792241096 for ; Fri, 10 Jul 2020 00:54:48 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=zIdOh5Sv; spf=pass (domain: intel.com, ip: 192.55.52.151, mailfrom: liming.gao@intel.com) IronPort-SDR: SnTdnaaoc+K1Xxu4cjSxwSgt1OUdmWd3KjFzI0x4qWvQ7qGBvW/GsmUtojv3nkQAJNCaQxdAy9 5HvPvFKl882g== X-IronPort-AV: E=McAfee;i="6000,8403,9677"; a="128231733" X-IronPort-AV: E=Sophos;i="5.75,335,1589266800"; d="scan'208";a="128231733" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Jul 2020 00:54:46 -0700 IronPort-SDR: lklLGVop1uoAb7YpmbfYmGZt7WCNK3+bgGDR/kk3VH/OWP48QKOjL93MYsOHPDzgLf7uOqLUFV F+EQQVqetKnQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,335,1589266800"; d="scan'208";a="298349505" Received: from orsmsx108.amr.corp.intel.com ([10.22.240.6]) by orsmga002.jf.intel.com with ESMTP; 10 Jul 2020 00:54:46 -0700 Received: from orsmsx158.amr.corp.intel.com (10.22.240.20) by ORSMSX108.amr.corp.intel.com (10.22.240.6) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 10 Jul 2020 00:54:46 -0700 Received: from ORSEDG001.ED.cps.intel.com (10.7.248.4) by ORSMSX158.amr.corp.intel.com (10.22.240.20) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 10 Jul 2020 00:54:45 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.46) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 10 Jul 2020 00:54:45 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZftmneX3Q9/yB7ZdrDtEYtgSewm7r85cQBaTpqEQhpIxWflT1jQyihs4XDf0LemfqUpYqADcL+Av5m2hRmc3nYY7qg8urXm/U3HuK90V1oVSKM1AI1pbm0TWpIlxfPIpbAnx4P9okPdUMW/V4v//WcLVpmO7KVQGwm7CsVkEN+fPiGwf9cpJrnHXDBg+Z5hs144TMFUEaXau7vMczPABl8jdw8fnq/DFEgt+c0H8RVOrIkwR/taIoiV3AmKgmh6mzgN/NTzwKeq3fVXR9q4v1IS1WKhAvm2uqSE9Yh2xBIx5I3BMj9cb5eACcqPF6sylZkwCKjQPs3C7eWUZmtzlZA== 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=iutoo3D5Z6iUSnys+m7Grm8aix8bDEgSSO5EWkjq9pg=; b=P56xAJcKXEZz2ldIiWgLpZVUrL+Sl9tfuuiJQCZXptpnHKvA47ZDUugHoIFFxETlDHncOL/7kVeyY0j+0sxY81L4XgPHUM935Y+M40fWxv954Kxb5PvlugIoTnOOhnKLbkV/pSDLpEdvcS2LyS8ytt0yUySEOpB65UXnkuQYLMUMlvzOKZ7KPYdpkUs9CZIbaa8hwYa9eJh5D/zO2uxay196UgRnOjvbLaAsfIVqJSeDTMzVGG0KWFBion9I4FMvM5bYkfi/m5x1XODKzmcxyEpmLic6QQN64ELkIXJPk8MDpbw6FuU0y1sSrL18Z+0hr1sb+AjTdQ6nxPCljRtRNw== 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=iutoo3D5Z6iUSnys+m7Grm8aix8bDEgSSO5EWkjq9pg=; b=zIdOh5SvKAmZNjwhve7wbJ5QC0nHmmjGRMdpU0L7LrWh/2hB99mrz3gI1HlQOk9BBYFsJuZhkTB5PayQFY9sRl7SPHXMK8iK+VagSX4S5KvnXBFts75wqqzIGKVUVG+fI4essggaS3TUHxy61e+bOAinV1tLfxK4wgPdvWd1oa8= Received: from MWHPR11MB1630.namprd11.prod.outlook.com (2603:10b6:301:e::7) by MWHPR11MB1485.namprd11.prod.outlook.com (2603:10b6:301:d::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3153.28; Fri, 10 Jul 2020 07:54:42 +0000 Received: from MWHPR11MB1630.namprd11.prod.outlook.com ([fe80::7847:b564:1b55:b67e]) by MWHPR11MB1630.namprd11.prod.outlook.com ([fe80::7847:b564:1b55:b67e%6]) with mapi id 15.20.3174.023; Fri, 10 Jul 2020 07:54:42 +0000 From: "Liming Gao" To: "Kinney, Michael D" , "devel@edk2.groups.io" CC: Sean Brogan , Bret Barkelew , "Yao, Jiewen" Subject: Re: [Patch v2 05/16] MdePkg/Library/BaseLib: Add BaseLib instance for host based unit tests Thread-Topic: [Patch v2 05/16] MdePkg/Library/BaseLib: Add BaseLib instance for host based unit tests Thread-Index: AQHWVaY56V7OmJPqKUW/lUYJkXQX1Kj/SevAgAAxD4CAAPge4A== Date: Fri, 10 Jul 2020 07:54:42 +0000 Message-ID: References: <20200709040521.3748-1-michael.d.kinney@intel.com> <20200709040521.3748-6-michael.d.kinney@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.2.0.6 dlp-product: dlpe-windows dlp-reaction: no-action authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.198.147.217] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 37911556-c498-419a-95c5-08d824a68143 x-ms-traffictypediagnostic: MWHPR11MB1485: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8273; x-forefront-prvs: 046060344D x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 6ZyebGtGmk/432RJ3uH4qQMCpKZmF/KxK24TVckfJmUIQRwVjGkuksxCiq2PkJZx6e8rDSsyPn8fDRrO1z3xCd/xRAt7BDcSdul+RbnSlpreHICjnowMG3nAn9X3bWF3khKhy/aLtRZgCzs6bi7eKBubcds9DC2I2BzBaHDwkT9uPb2u4iin0mhkr9gWcVCfOTO0wGOTM8JMyA5blV3lzMLuxZ49WVOIWa7s2HjgJibyzxbqOA3GhN6lB01wafcg5a5fwtP81/WUBom4a5DTJccMTT3WLePeFWSoUOj/A4i0l9ZDFiMNRdfl0Bg/g1doTxaTm69nJxCmK/oxG95neDWaMFggOpZ8GMT+M8P+qdMfK+qfZjlMm7I1q3MC2gXroKgyL5kgkm+97r7PzDVs+lZHo9k0xxFPkRgIjaScRcznVGxwYg+dldYWEHl0AYni x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MWHPR11MB1630.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(4636009)(396003)(376002)(39860400002)(346002)(366004)(136003)(83380400001)(7696005)(30864003)(55016002)(9686003)(186003)(26005)(4326008)(76116006)(66476007)(66946007)(966005)(66556008)(66446008)(478600001)(52536014)(64756008)(53546011)(107886003)(86362001)(6506007)(110136005)(54906003)(19627235002)(2906002)(33656002)(8676002)(8936002)(316002)(71200400001)(5660300002)(559001)(569008);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: dPQIb34WI9tZPoOv6pdVeac+k8/+27LR61D1STTy8UoacoqiXVe3D2k4tX/S+vdh1ceXr9BzJL9VEdi9AYnMKH+coxj6ek832D6ApB5+N/O/feqTG29qvQ2xzLPkYOkmq2LDYDGpetfuUIUdQrij9KtQIWfrcrDRIOg4MksnHfaEOEr1ww4eo9MILWM0ybkOvVD2S2ZuhFJQGk4h9Bgq6YpLXEIoSt7mmTMSyOEBLxF7RIy+Wp0VjF5N+SBzhYE9SlZ8aK7i1Mgji6+7zsYJ3EvJuxXS1xlgKqc6cRioF38GxMZj0Un059ephWCeyJeDNgVe4rBJr+FX6Fz96Fbc3F8k93T/1t5FRnDLhM5mUhOL1XQni64vzgKmbgaLoqE6odanhTgYKHBQU5A8YzWVLZbqLWY8CYOdZvJpSXkL0XhsNw7aIXpEg8Yxx7oewA/Ig0ZmtdTQNKSswS4RFZ0g8qKrUtCn+AIuJPA3Culdn+KgkCH48dDcDVldTOs6ewD4 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MWHPR11MB1630.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 37911556-c498-419a-95c5-08d824a68143 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jul 2020 07:54:42.1527 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: lYm8Nehkjs/yvA5BGE5X2oQl7GRR1WASBg+iVp7ngOWtSkwb8el2lQjyP+YU1xrdUM3TnR6xskjPO9sI1xVcDw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR11MB1485 Return-Path: liming.gao@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 TWlrZToNCiAgU28sIHRoaXMgbmV3IGxpYnJhcnkgaW5zdGFuY2UgcHJvZHVjZXMgdHdvIGxpYnJh cnkgY2xhc3NlczogQmFzZUxpYiBhbmQgVW5pdFRlc3RIb3N0QmFzZUxpYi4gQ2FuIHlvdSBzcGVj aWZ5IHR3byBsaWJyYXJ5IGNsYXNzZXMgaW4gaXRzIElORiBmaWxlPw0KDQpUaGFua3MNCkxpbWlu Zw0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IEtpbm5leSwgTWljaGFlbCBEIDxt aWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4gDQpTZW50OiAyMDIw5bm0N+aciDEw5pelIDE6MDUN ClRvOiBHYW8sIExpbWluZyA8bGltaW5nLmdhb0BpbnRlbC5jb20+OyBkZXZlbEBlZGsyLmdyb3Vw cy5pbzsgS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KQ2M6 IFNlYW4gQnJvZ2FuIDxzZWFuLmJyb2dhbkBtaWNyb3NvZnQuY29tPjsgQnJldCBCYXJrZWxldyA8 QnJldC5CYXJrZWxld0BtaWNyb3NvZnQuY29tPjsgWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50 ZWwuY29tPg0KU3ViamVjdDogUkU6IFtQYXRjaCB2MiAwNS8xNl0gTWRlUGtnL0xpYnJhcnkvQmFz ZUxpYjogQWRkIEJhc2VMaWIgaW5zdGFuY2UgZm9yIGhvc3QgYmFzZWQgdW5pdCB0ZXN0cw0KDQpI aSBMaW1pbmcsDQoNCkkgbWFkZSB0aGUgTElCUkFSWV9DTEFTUyBCYXNlTGliIG9uIHB1cnBvc2Uu DQoNCiAgTElCUkFSWV9DTEFTUyAgICAgICAgICAgICAgICAgID0gQmFzZUxpYnxIT1NUX0FQUExJ Q0FUSU9ODQoNCldoZW4gYnVpbGRpbmcgYSBob3N0IGJhc2VkIHRlc3QgZm9yIGNvZGUgdW5kZXIg dGVzdCwNCnRoYXQgY29kZSB1bmRlciB0ZXN0IG1heSBoYXZlIGEgZGVwZW5kZW5jeSBvbiB0aGUN CkJhc2VMaWIgY2xhc3MgYW5kIHRoYXQgbWVhbnMgd2UgbmVlZCBhIEJhc2VMaWIgaW5zdGFuY2UN CnRvIGJlIHJlc29sdmVkLiAgTm90aWNlIHRoYXQgdGhpcyBuZXcgaW5zdGFuY2Ugb2YgdGhlDQpC YXNlTGliIGNsYXNzIGlzIGRlY2xhcmVkIHRvIG9ubHkgYmUgY29tcGF0aWJsZSB3aXRoDQptb2R1 bGVzIG9mIHR5cGUgSE9TVF9BUFBMSUNBVElPTiwgc28gaXQgY2FuIG5vdCBiZSANCmFjY2lkZW50 bHkgdXNlZCB3aXRoIGEgRlcgbW9kdWxlLg0KDQpCZXN0IHJlZ2FyZHMsDQoNCk1pa2UNCg0KPiAt LS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBHYW8sIExpbWluZyA8bGltaW5nLmdh b0BpbnRlbC5jb20+DQo+IFNlbnQ6IFRodXJzZGF5LCBKdWx5IDksIDIwMjAgNzoxMyBBTQ0KPiBU bzogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsNCj4gZGV2 ZWxAZWRrMi5ncm91cHMuaW8NCj4gQ2M6IFNlYW4gQnJvZ2FuIDxzZWFuLmJyb2dhbkBtaWNyb3Nv ZnQuY29tPjsgQnJldA0KPiBCYXJrZWxldyA8QnJldC5CYXJrZWxld0BtaWNyb3NvZnQuY29tPjsg WWFvLCBKaWV3ZW4NCj4gPGppZXdlbi55YW9AaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSRTogW1Bh dGNoIHYyIDA1LzE2XSBNZGVQa2cvTGlicmFyeS9CYXNlTGliOg0KPiBBZGQgQmFzZUxpYiBpbnN0 YW5jZSBmb3IgaG9zdCBiYXNlZCB1bml0IHRlc3RzDQo+IA0KPiBNaWtlOg0KPiAgIE5ldyBsaWJy YXJ5IGluc3RhbmNlIGxpYnJhcnkgY2xhc3Mgc2hvdWxkIGJlDQo+IFVuaXRUZXN0SG9zdEJhc2VM aWIgaW5zdGVhZCBvZiBCYXNlTGliLg0KPiANCj4gVGhhbmtzDQo+IExpbWluZw0KPiA+IC0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hh ZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+IFNlbnQ6IFRodXJzZGF5LCBKdWx5IDksIDIwMjAg MTI6MDUgUE0NCj4gPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gPiBDYzogR2FvLCBMaW1p bmcgPGxpbWluZy5nYW9AaW50ZWwuY29tPjsgU2VhbiBCcm9nYW4NCj4gPHNlYW4uYnJvZ2FuQG1p Y3Jvc29mdC5jb20+OyBCcmV0IEJhcmtlbGV3DQo+IDxCcmV0LkJhcmtlbGV3QG1pY3Jvc29mdC5j b20+Ow0KPiA+IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbT4NCj4gPiBTdWJqZWN0 OiBbUGF0Y2ggdjIgMDUvMTZdIE1kZVBrZy9MaWJyYXJ5L0Jhc2VMaWI6IEFkZA0KPiBCYXNlTGli IGluc3RhbmNlIGZvciBob3N0IGJhc2VkIHVuaXQgdGVzdHMNCj4gPg0KPiA+IFJFRjoNCj4gaHR0 cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD0yODAwDQo+ID4NCj4g PiBBZGQgYSBuZXcgdmVyc2lvbiBvZiBCYXNlTGliIHRoYXQgaXMgc2FmZSBmb3IgdXNlIGZyb20N Cj4gaG9zdCBiYXNlZA0KPiA+IHVuaXQgdGVzdCBhcHBsaWNhdGlvbnMuICBIb3N0IGJhc2VkIHVu aXQgdGVzdA0KPiBhcHBsaWNhdGlvbnMgbWF5IG5lZWQNCj4gPiB0byBwcm92aWRlIGltcGxlbWVu dGF0aW9ucyBvZiBzb21lIEJhc2VMaWIgZnVuY3Rpb25zDQo+IHRoYXQgcHJvdmlkZQ0KPiA+IHNp bXBsZSBlbXVsYXRpb24gdG8gZXhlcmNpc2UgdGhlIGNvZGUgdW5kZXIgdGVzdC4gIFRoZQ0KPiBz dHJ1Y3R1cmUNCj4gPiBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQiBpcyBmaWxsZWQgaW4gd2l0aCBz ZXJ2aWNlcw0KPiB0aGF0IHByb3ZpZGUNCj4gPiBkZWZhdWx0IGVtdWxhdGlvbiBmb3IgQmFzZUxp YiBBUElzIHRoYXQgd291bGQgbm9ybWFsbHkNCj4gZ2VuZXJhdGUNCj4gPiBleGNlcHRpb25zIGlu IGEgaG9zdCBiYXNlZCB1bml0IHRlc3QgYXBwbGljYXRpb24uDQo+IFRoaXMgc3RydWN0dXJlDQo+ ID4gYWxsb3dzIGFuIGluZGl2aWR1YWwgdW5pdCB0ZXN0IHRvIHJlcGxhY2UgdGhlIGRlZmF1bHQN Cj4gZW11bGF0aW9uIG9mDQo+ID4gYSBCYXNlTGliIHNlcnZpY2Ugd2l0aCBhbiBhbHRlcm5hdGUg dmVyc2lvbiB0aGF0IGlzDQo+IHJlcXVpcmVkIGJ5IGENCj4gPiBzcGVjaWZpYyB1bml0IHRlc3Qu DQo+ID4NCj4gPiBOb3JtYWxseSBjbW9ja2Egd291bGQgYmUgdXNlZCB0byBtb2NrIHNlcnZpY2Vz IHRoZQ0KPiBjb2RlIHVuZGVyDQo+ID4gdGVzdCBjYWxscy4gIEhvd2V2ZXIsIHRoZSBCYXNlTGli IGlzIHVzZWQgYnkgdGhlIFVuaXQNCj4gVGVzdA0KPiA+IEZyYW1ld29yayBpdHNlbGYsIHNvIHVz aW5nIGEgbW9ja2VkIGludGVyZmFjZSBpcyBub3QNCj4gcG9zc2libGUuDQo+ID4gVGhlIHVzZSBv ZiBhIHN0cnVjdHVyZSB0byBwcm92aWRlIGhvb2tzIGZvciB1bml0IHRlc3QNCj4gaXMgbm90DQo+ ID4gZXhwZWN0ZWQgdG8gYmUgYSBjb21tb24gZmVhdHVyZS4gIEl0IHNob3VsZCBvbmx5IGJlDQo+ IHJlcXVpcmVkDQo+ID4gZm9yIGxpYnJhcmllcyB0aGF0IGFyZSB1c2VkIGJ5IGJvdGggdGhlIFVu aXQgVGVzdA0KPiBGcmFtZXdvcmsgYW5kDQo+ID4gdGhlIGNvZGUgdW5kZXIgdGVzdCB3aGVyZSB0 aGUgY29kZSB1bmRlciB0ZXN0IHJlcXVpcmVzDQo+IGENCj4gPiBkaWZmZXJlbnQgYmVoYXZpb3Ig dGhhbiB0aGUgVW5pdCBUZXN0IEZyYW1ld29yay4NCj4gPg0KPiA+IENjOiBMaW1pbmcgR2FvIDxs aW1pbmcuZ2FvQGludGVsLmNvbT4NCj4gPiBDYzogU2VhbiBCcm9nYW4gPHNlYW4uYnJvZ2FuQG1p Y3Jvc29mdC5jb20+DQo+ID4gQ2M6IEJyZXQgQmFya2VsZXcgPEJyZXQuQmFya2VsZXdAbWljcm9z b2Z0LmNvbT4NCj4gPiBDYzogSmlld2VuIFlhbyA8amlld2VuLnlhb0BpbnRlbC5jb20+DQo+ID4g U2lnbmVkLW9mZi1ieTogTWljaGFlbCBEIEtpbm5leQ0KPiA8bWljaGFlbC5kLmtpbm5leUBpbnRl bC5jb20+DQo+ID4gLS0tDQo+ID4gIE1kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvVW5pdFRlc3RIb3N0 LmMgICAgICAgICB8ICAxNDANCj4gKw0KPiA+ICBNZGVQa2cvTGlicmFyeS9CYXNlTGliL1VuaXRU ZXN0SG9zdC5oICAgICAgICAgfCAgIDY2DQo+ICsNCj4gPiAgLi4uL0xpYnJhcnkvQmFzZUxpYi9V bml0VGVzdEhvc3RCYXNlTGliLmluZiAgIHwgIDIxNg0KPiArKw0KPiA+ICAuLi4vTGlicmFyeS9C YXNlTGliL1VuaXRUZXN0SG9zdEJhc2VMaWIudW5pICAgfCAgIDExDQo+ICsNCj4gPiAgTWRlUGtn L0xpYnJhcnkvQmFzZUxpYi9YODZVbml0VGVzdEhvc3QuYyAgICAgIHwgMjk3Nw0KPiArKysrKysr KysrKysrKysrKw0KPiA+ICBNZGVQa2cvTWRlUGtnLmRlYyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgICAzDQo+ICstDQo+ID4gIE1kZVBrZy9UZXN0L01kZVBrZ0hvc3RUZXN0LmRzYyAg ICAgICAgICAgICAgICB8ICAgIDUNCj4gKw0KPiA+ICAuLi4vSW5jbHVkZS9Ib3N0VGVzdC9Vbml0 VGVzdEhvc3RCYXNlTGliLmggICAgfCAgNTgyDQo+ICsrKysNCj4gPiAgOCBmaWxlcyBjaGFuZ2Vk LCAzOTk5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkNCj4gPiAgY3JlYXRlIG1vZGUgMTAw NjQ0DQo+IE1kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvVW5pdFRlc3RIb3N0LmMNCj4gPiAgY3JlYXRl IG1vZGUgMTAwNjQ0DQo+IE1kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvVW5pdFRlc3RIb3N0LmgNCj4g PiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+IE1kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvVW5pdFRlc3RI b3N0QmFzZUxpYi5pbmYNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+IE1kZVBrZy9MaWJyYXJ5 L0Jhc2VMaWIvVW5pdFRlc3RIb3N0QmFzZUxpYi51bmkNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0 DQo+IE1kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvWDg2VW5pdFRlc3RIb3N0LmMNCj4gPiAgY3JlYXRl IG1vZGUgMTAwNjQ0DQo+IE1kZVBrZy9UZXN0L1VuaXRUZXN0L0luY2x1ZGUvSG9zdFRlc3QvVW5p dFRlc3RIb3N0QmFzZUxpDQo+IGIuaA0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL01kZVBrZy9MaWJy YXJ5L0Jhc2VMaWIvVW5pdFRlc3RIb3N0LmMNCj4gYi9NZGVQa2cvTGlicmFyeS9CYXNlTGliL1Vu aXRUZXN0SG9zdC5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAw MDAwLi43OWVlYzdjYWNhDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL01kZVBrZy9MaWJy YXJ5L0Jhc2VMaWIvVW5pdFRlc3RIb3N0LmMNCj4gPiBAQCAtMCwwICsxLDE0MCBAQA0KPiA+ICsv KiogQGZpbGUNCj4gPiArICBDb21tb24gVW5pdCBUZXN0IEhvc3QgZnVuY3Rpb25zLg0KPiA+ICsN Cj4gPiArICBDb3B5cmlnaHQgKGMpIDIwMjAsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRz DQo+IHJlc2VydmVkLjxCUj4NCj4gPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTIt Q2xhdXNlLVBhdGVudA0KPiA+ICsNCj4gPiArKiovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSAiVW5p dFRlc3RIb3N0LmgiDQo+ID4gKw0KPiA+ICsvLy8NCj4gPiArLy8vIE1vZHVsZSBnbG9iYWwgdmFy aWFibGUgZm9yIHNpbXBsZSBzeXN0ZW0NCj4gZW11bGF0aW9uIG9mIGludGVycnVwdCBzdGF0ZQ0K PiA+ICsvLy8NCj4gPiArU1RBVElDIEJPT0xFQU4NCj4gbVVuaXRUZXN0SG9zdEJhc2VMaWJJbnRl cnJ1cHRTdGF0ZTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEVuYWJsZXMgQ1BVIGludGVycnVw dHMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRl c3RIb3N0QmFzZUxpYkVuYWJsZUludGVycnVwdHMgKA0KPiA+ICsgIFZPSUQNCj4gPiArICApDQo+ ID4gK3sNCj4gPiArICBtVW5pdFRlc3RIb3N0QmFzZUxpYkludGVycnVwdFN0YXRlID0gVFJVRTsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgRGlzYWJsZXMgQ1BVIGludGVycnVwdHMu DQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RI b3N0QmFzZUxpYkRpc2FibGVJbnRlcnJ1cHRzICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ ICt7DQo+ID4gKyAgbVVuaXRUZXN0SG9zdEJhc2VMaWJJbnRlcnJ1cHRTdGF0ZSA9IEZBTFNFOw0K PiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBFbmFibGVzIENQVSBpbnRlcnJ1cHRzIGZv ciB0aGUgc21hbGxlc3Qgd2luZG93DQo+IHJlcXVpcmVkIHRvIGNhcHR1cmUgYW55DQo+ID4gKyAg cGVuZGluZyBpbnRlcnJ1cHRzLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1ZPSUQNCj4gPiArRUZJ QVBJDQo+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJFbmFibGVEaXNhYmxlSW50ZXJydXB0cyAoDQo+ ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIG1Vbml0VGVzdEhvc3RCYXNlTGli SW50ZXJydXB0U3RhdGUgPSBGQUxTRTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAg U2V0IHRoZSBjdXJyZW50IENQVSBpbnRlcnJ1cHQgc3RhdGUuDQo+ID4gKw0KPiA+ICsgIFNldHMg dGhlIGN1cnJlbnQgQ1BVIGludGVycnVwdCBzdGF0ZSB0byB0aGUgc3RhdGUNCj4gc3BlY2lmaWVk IGJ5DQo+ID4gKyAgSW50ZXJydXB0U3RhdGUuIElmIEludGVycnVwdFN0YXRlIGlzIFRSVUUsIHRo ZW4NCj4gaW50ZXJydXB0cyBhcmUgZW5hYmxlZC4gSWYNCj4gPiArICBJbnRlcnJ1cHRTdGF0ZSBp cyBGQUxTRSwgdGhlbiBpbnRlcnJ1cHRzIGFyZQ0KPiBkaXNhYmxlZC4gSW50ZXJydXB0U3RhdGUg aXMNCj4gPiArICByZXR1cm5lZC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBJbnRlcnJ1cHRTdGF0 ZSAgVFJVRSBpZiBpbnRlcnJ1cHRzIHNob3VsZA0KPiBlbmFibGVkLiBGQUxTRSBpZg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgIGludGVycnVwdHMgc2hvdWxkIGJlDQo+IGRpc2FibGVk Lg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIEludGVycnVwdFN0YXRlDQo+ID4gKw0KPiA+ICsqKi8N Cj4gPiArQk9PTEVBTg0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkdldElu dGVycnVwdFN0YXRlICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0 dXJuIG1Vbml0VGVzdEhvc3RCYXNlTGliSW50ZXJydXB0U3RhdGU7DQo+ID4gK30NCj4gPiArDQo+ ID4gKy8qKg0KPiA+ICsgIEVuYWJsZXMgQ1BVIGludGVycnVwdHMuDQo+ID4gKw0KPiA+ICsqKi8N Cj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArRW5hYmxlSW50ZXJydXB0cyAoDQo+ID4gKyAg Vk9JRA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIGdVbml0VGVzdEhvc3RCYXNlTGliLkNvbW1v bi0+RW5hYmxlSW50ZXJydXB0cyAoKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAg RGlzYWJsZXMgQ1BVIGludGVycnVwdHMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVk9JRA0KPiA+ ICtFRklBUEkNCj4gPiArRGlzYWJsZUludGVycnVwdHMgKA0KPiA+ICsgIFZPSUQNCj4gPiArICAp DQo+ID4gK3sNCj4gPiArICBnVW5pdFRlc3RIb3N0QmFzZUxpYi5Db21tb24tPkRpc2FibGVJbnRl cnJ1cHRzICgpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBFbmFibGVzIENQVSBp bnRlcnJ1cHRzIGZvciB0aGUgc21hbGxlc3Qgd2luZG93DQo+IHJlcXVpcmVkIHRvIGNhcHR1cmUg YW55DQo+ID4gKyAgcGVuZGluZyBpbnRlcnJ1cHRzLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1ZP SUQNCj4gPiArRUZJQVBJDQo+ID4gK0VuYWJsZURpc2FibGVJbnRlcnJ1cHRzICgNCj4gPiArICBW T0lEDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgZ1VuaXRUZXN0SG9zdEJhc2VMaWIuQ29tbW9u LQ0KPiA+RW5hYmxlRGlzYWJsZUludGVycnVwdHMgKCk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgIFNldCB0aGUgY3VycmVudCBDUFUgaW50ZXJydXB0IHN0YXRlLg0KPiA+ICsNCj4g PiArICBTZXRzIHRoZSBjdXJyZW50IENQVSBpbnRlcnJ1cHQgc3RhdGUgdG8gdGhlIHN0YXRlDQo+ IHNwZWNpZmllZCBieQ0KPiA+ICsgIEludGVycnVwdFN0YXRlLiBJZiBJbnRlcnJ1cHRTdGF0ZSBp cyBUUlVFLCB0aGVuDQo+IGludGVycnVwdHMgYXJlIGVuYWJsZWQuIElmDQo+ID4gKyAgSW50ZXJy dXB0U3RhdGUgaXMgRkFMU0UsIHRoZW4gaW50ZXJydXB0cyBhcmUNCj4gZGlzYWJsZWQuIEludGVy cnVwdFN0YXRlIGlzDQo+ID4gKyAgcmV0dXJuZWQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgSW50 ZXJydXB0U3RhdGUgIFRSVUUgaWYgaW50ZXJydXB0cyBzaG91bGQNCj4gZW5hYmxlZC4gRkFMU0Ug aWYNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnJ1cHRzIHNob3VsZCBiZQ0K PiBkaXNhYmxlZC4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBJbnRlcnJ1cHRTdGF0ZQ0KPiA+ICsN Cj4gPiArKiovDQo+ID4gK0JPT0xFQU4NCj4gPiArRUZJQVBJDQo+ID4gK0dldEludGVycnVwdFN0 YXRlICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIGdVbml0 VGVzdEhvc3RCYXNlTGliLkNvbW1vbi0NCj4gPkdldEludGVycnVwdFN0YXRlICgpOw0KPiA+ICt9 DQo+ID4gZGlmZiAtLWdpdCBhL01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvVW5pdFRlc3RIb3N0LmgN Cj4gYi9NZGVQa2cvTGlicmFyeS9CYXNlTGliL1VuaXRUZXN0SG9zdC5oDQo+ID4gbmV3IGZpbGUg bW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwLi42YTUxZmI0NjhjDQo+ID4gLS0tIC9k ZXYvbnVsbA0KPiA+ICsrKyBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvVW5pdFRlc3RIb3N0LmgN Cj4gPiBAQCAtMCwwICsxLDY2IEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIFVuaXQgVGVzdCBI b3N0IGZ1bmN0aW9ucy4NCj4gPiArDQo+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDIwLCBJbnRlbCBD b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cw0KPiByZXNlcnZlZC48QlI+DQo+ID4gKyAgU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiArDQo+ID4gKyoqLw0KPiA+ ICsNCj4gPiArI2lmbmRlZiBfX1VOSVRfVEVTVF9IT1NUX0hfXw0KPiA+ICsjZGVmaW5lIF9fVU5J VF9URVNUX0hPU1RfSF9fDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSAiQmFzZUxpYkludGVybmFscy5o Ig0KPiA+ICsjaW5jbHVkZSA8SG9zdFRlc3QvVW5pdFRlc3RIb3N0QmFzZUxpYi5oPg0KPiA+ICsN Cj4gPiArLyoqDQo+ID4gKyAgRW5hYmxlcyBDUFUgaW50ZXJydXB0cy4NCj4gPiArDQo+ID4gKyoq Lw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVzdEhvc3RCYXNlTGliRW5hYmxl SW50ZXJydXB0cyAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKioNCj4g PiArICBEaXNhYmxlcyBDUFUgaW50ZXJydXB0cy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtWT0lE DQo+ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVzdEhvc3RCYXNlTGliRGlzYWJsZUludGVycnVwdHMg KA0KPiA+ICsgIFZPSUQNCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgRW5hYmxl cyBDUFUgaW50ZXJydXB0cyBmb3IgdGhlIHNtYWxsZXN0IHdpbmRvdw0KPiByZXF1aXJlZCB0byBj YXB0dXJlIGFueQ0KPiA+ICsgIHBlbmRpbmcgaW50ZXJydXB0cy4NCj4gPiArDQo+ID4gKyoqLw0K PiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVzdEhvc3RCYXNlTGliRW5hYmxlRGlz YWJsZUludGVycnVwdHMgKA0KPiA+ICsgIFZPSUQNCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoq DQo+ID4gKyAgU2V0IHRoZSBjdXJyZW50IENQVSBpbnRlcnJ1cHQgc3RhdGUuDQo+ID4gKw0KPiA+ ICsgIFNldHMgdGhlIGN1cnJlbnQgQ1BVIGludGVycnVwdCBzdGF0ZSB0byB0aGUgc3RhdGUNCj4g c3BlY2lmaWVkIGJ5DQo+ID4gKyAgSW50ZXJydXB0U3RhdGUuIElmIEludGVycnVwdFN0YXRlIGlz IFRSVUUsIHRoZW4NCj4gaW50ZXJydXB0cyBhcmUgZW5hYmxlZC4gSWYNCj4gPiArICBJbnRlcnJ1 cHRTdGF0ZSBpcyBGQUxTRSwgdGhlbiBpbnRlcnJ1cHRzIGFyZQ0KPiBkaXNhYmxlZC4gSW50ZXJy dXB0U3RhdGUgaXMNCj4gPiArICByZXR1cm5lZC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBJbnRl cnJ1cHRTdGF0ZSAgVFJVRSBpZiBpbnRlcnJ1cHRzIHNob3VsZA0KPiBlbmFibGVkLiBGQUxTRSBp Zg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVycnVwdHMgc2hvdWxkIGJlDQo+ IGRpc2FibGVkLg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIEludGVycnVwdFN0YXRlDQo+ID4gKw0K PiA+ICsqKi8NCj4gPiArQk9PTEVBTg0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RIb3N0QmFz ZUxpYkdldEludGVycnVwdFN0YXRlICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKTsNCj4gPiArDQo+ ID4gKyNlbmRpZg0KPiA+IGRpZmYgLS1naXQNCj4gYS9NZGVQa2cvTGlicmFyeS9CYXNlTGliL1Vu aXRUZXN0SG9zdEJhc2VMaWIuaW5mDQo+IGIvTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9Vbml0VGVz dEhvc3RCYXNlTGliLmluZg0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAw MDAwMDAwMC4uZjk1ZGFhNWUzMw0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9NZGVQa2cv TGlicmFyeS9CYXNlTGliL1VuaXRUZXN0SG9zdEJhc2VMaWIuaW5mDQo+ID4gQEAgLTAsMCArMSwy MTYgQEANCj4gPiArIyMgQGZpbGUNCj4gPiArIyAgQmFzZSBMaWJyYXJ5IGltcGxlbWVudGF0aW9u IGZvciB1c2Ugd2l0aCBob3N0DQo+IGJhc2VkIHVuaXQgdGVzdHMuDQo+ID4gKyMNCj4gPiArIyAg Q29weXJpZ2h0IChjKSAyMDA3IC0gMjAyMCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbA0KPiByaWdo dHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICsjICBQb3J0aW9ucyBjb3B5cmlnaHQgKGMpIDIwMDggLSAy MDA5LCBBcHBsZSBJbmMuIEFsbA0KPiByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICsjICBQb3J0 aW9ucyBjb3B5cmlnaHQgKGMpIDIwMTEgLSAyMDEzLCBBUk0gTHRkLiBBbGwNCj4gcmlnaHRzIHJl c2VydmVkLjxCUj4NCj4gPiArIyAgQ29weXJpZ2h0IChjKSAyMDIwLCBIZXdsZXR0IFBhY2thcmQg RW50ZXJwcmlzZQ0KPiBEZXZlbG9wbWVudCBMUC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ ID4gKyMNCj4gPiArIyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRl bnQNCj4gPiArIw0KPiA+ICsjDQo+ID4gKyMjDQo+ID4gKw0KPiA+ICtbRGVmaW5lc10NCj4gPiAr ICBJTkZfVkVSU0lPTiAgICAgICAgICAgICAgICAgICAgPSAweDAwMDEwMDA1DQo+ID4gKyAgQkFT RV9OQU1FICAgICAgICAgICAgICAgICAgICAgID0NCj4gVW5pdFRlc3RIb3N0QmFzZUxpYg0KPiA+ ICsgIE1PRFVMRV9VTklfRklMRSAgICAgICAgICAgICAgICA9DQo+IFVuaXRUZXN0SG9zdEJhc2VM aWIudW5pDQo+ID4gKyAgRklMRV9HVUlEICAgICAgICAgICAgICAgICAgICAgID0gOTU1NUEwRDMt MDlCQS0NCj4gNDZDNC1BNTFBLTQ1MTk4RTNDNzY1RQ0KPiA+ICsgIE1PRFVMRV9UWVBFICAgICAg ICAgICAgICAgICAgICA9IEJBU0UNCj4gPiArICBWRVJTSU9OX1NUUklORyAgICAgICAgICAgICAg ICAgPSAxLjENCj4gPiArICBMSUJSQVJZX0NMQVNTICAgICAgICAgICAgICAgICAgPQ0KPiBCYXNl TGlifEhPU1RfQVBQTElDQVRJT04NCj4gPiArDQo+ID4gKyMNCj4gPiArIyAgVkFMSURfQVJDSElU RUNUVVJFUyAgICAgICAgICAgPSBJQTMyIFg2NCBFQkMgQVJNDQo+IEFBUkNINjQgUklTQ1Y2NA0K PiA+ICsjDQo+ID4gKw0KPiA+ICtbU291cmNlc10NCj4gPiArICBDaGVja1N1bS5jDQo+ID4gKyAg U3dpdGNoU3RhY2suYw0KPiA+ICsgIFN3YXBCeXRlczY0LmMNCj4gPiArICBTd2FwQnl0ZXMzMi5j DQo+ID4gKyAgU3dhcEJ5dGVzMTYuYw0KPiA+ICsgIExvbmdKdW1wLmMNCj4gPiArICBTZXRKdW1w LmMNCj4gPiArICBSU2hpZnRVNjQuYw0KPiA+ICsgIFJSb3RVNjQuYw0KPiA+ICsgIFJSb3RVMzIu Yw0KPiA+ICsgIE11bHRVNjR4NjQuYw0KPiA+ICsgIE11bHRVNjR4MzIuYw0KPiA+ICsgIE11bHRT NjR4NjQuYw0KPiA+ICsgIE1vZFU2NHgzMi5jDQo+ID4gKyAgTFNoaWZ0VTY0LmMNCj4gPiArICBM Um90VTY0LmMNCj4gPiArICBMUm90VTMyLmMNCj4gPiArICBMb3dCaXRTZXQ2NC5jDQo+ID4gKyAg TG93Qml0U2V0MzIuYw0KPiA+ICsgIEhpZ2hCaXRTZXQ2NC5jDQo+ID4gKyAgSGlnaEJpdFNldDMy LmMNCj4gPiArICBHZXRQb3dlck9mVHdvNjQuYw0KPiA+ICsgIEdldFBvd2VyT2ZUd28zMi5jDQo+ ID4gKyAgRGl2VTY0eDY0UmVtYWluZGVyLmMNCj4gPiArICBEaXZVNjR4MzJSZW1haW5kZXIuYw0K PiA+ICsgIERpdlU2NHgzMi5jDQo+ID4gKyAgRGl2UzY0eDY0UmVtYWluZGVyLmMNCj4gPiArICBB UlNoaWZ0VTY0LmMNCj4gPiArICBCaXRGaWVsZC5jDQo+ID4gKyAgQ3B1RGVhZExvb3AuYw0KPiA+ ICsgIENwdS5jDQo+ID4gKyAgTGlua2VkTGlzdC5jDQo+ID4gKyAgU2FmZVN0cmluZy5jDQo+ID4g KyAgU3RyaW5nLmMNCj4gPiArICBGaWxlUGF0aHMuYw0KPiA+ICsgIEJhc2VMaWJJbnRlcm5hbHMu aA0KPiA+ICsgIFVuaXRUZXN0SG9zdC5jDQo+ID4gKyAgVW5pdFRlc3RIb3N0LmgNCj4gPiArDQo+ ID4gK1tTb3VyY2VzLklhMzJdDQo+ID4gKyAgSWEzMi9Td2FwQnl0ZXM2NC5jIHwgTVNGVA0KPiA+ ICsgIElhMzIvUlJvdFU2NC5jIHwgTVNGVA0KPiA+ICsgIElhMzIvUlNoaWZ0VTY0LmMgfCBNU0ZU DQo+ID4gKyAgSWEzMi9SZWFkVHNjLmMgfCBNU0ZUDQo+ID4gKyAgSWEzMi9SZWFkRWZsYWdzLmMg fCBNU0ZUDQo+ID4gKyAgSWEzMi9Nb2RVNjR4MzIuYyB8IE1TRlQNCj4gPiArICBJYTMyL011bHRV NjR4NjQuYyB8IE1TRlQNCj4gPiArICBJYTMyL011bHRVNjR4MzIuYyB8IE1TRlQNCj4gPiArICBJ YTMyL0xTaGlmdFU2NC5jIHwgTVNGVA0KPiA+ICsgIElhMzIvTFJvdFU2NC5jIHwgTVNGVA0KPiA+ ICsgIElhMzIvRnhSZXN0b3JlLmMgfCBNU0ZUDQo+ID4gKyAgSWEzMi9GeFNhdmUuYyB8IE1TRlQN Cj4gPiArICBJYTMyL0RpdlU2NHgzMlJlbWFpbmRlci5jIHwgTVNGVA0KPiA+ICsgIElhMzIvRGl2 VTY0eDMyLmMgfCBNU0ZUDQo+ID4gKyAgSWEzMi9DcHVQYXVzZS5jIHwgTVNGVA0KPiA+ICsgIElh MzIvQ3B1QnJlYWtwb2ludC5jIHwgTVNGVA0KPiA+ICsgIElhMzIvQVJTaGlmdFU2NC5jIHwgTVNG VA0KPiA+ICsgIElhMzIvR2NjSW5saW5lLmMgfCBHQ0MNCj4gPiArICBJYTMyL0xvbmdKdW1wLm5h c20NCj4gPiArICBJYTMyL1NldEp1bXAubmFzbQ0KPiA+ICsgIElhMzIvU3dhcEJ5dGVzNjQubmFz bXwgR0NDDQo+ID4gKyAgSWEzMi9EaXZVNjR4NjRSZW1haW5kZXIubmFzbQ0KPiA+ICsgIElhMzIv RGl2VTY0eDMyUmVtYWluZGVyLm5hc218IEdDQw0KPiA+ICsgIElhMzIvTW9kVTY0eDMyLm5hc218 IEdDQw0KPiA+ICsgIElhMzIvRGl2VTY0eDMyLm5hc218IEdDQw0KPiA+ICsgIElhMzIvTXVsdFU2 NHg2NC5uYXNtfCBHQ0MNCj4gPiArICBJYTMyL011bHRVNjR4MzIubmFzbXwgR0NDDQo+ID4gKyAg SWEzMi9SUm90VTY0Lm5hc218IEdDQw0KPiA+ICsgIElhMzIvTFJvdFU2NC5uYXNtfCBHQ0MNCj4g PiArICBJYTMyL0FSU2hpZnRVNjQubmFzbXwgR0NDDQo+ID4gKyAgSWEzMi9SU2hpZnRVNjQubmFz bXwgR0NDDQo+ID4gKyAgSWEzMi9MU2hpZnRVNjQubmFzbXwgR0NDDQo+ID4gKyAgSWEzMi9SZFJh bmQubmFzbQ0KPiA+ICsgIElhMzIvRGl2UzY0eDY0UmVtYWluZGVyLmMNCj4gPiArICBJYTMyL0lu dGVybmFsU3dpdGNoU3RhY2suYyB8IE1TRlQNCj4gPiArICBJYTMyL0ludGVybmFsU3dpdGNoU3Rh Y2submFzbSB8IEdDQw0KPiA+ICsgIElhMzIvTm9uLWV4aXN0aW5nLmMNCj4gPiArICBVbmFsaWdu ZWQuYw0KPiA+ICsgIFg4NkZ4U2F2ZS5jDQo+ID4gKyAgWDg2RnhSZXN0b3JlLmMNCj4gPiArICBY ODZNc3IuYw0KPiA+ICsgIFg4NlJkUmFuZC5jDQo+ID4gKyAgWDg2U3BlY3VsYXRpb25CYXJyaWVy LmMNCj4gPiArICBYODZVbml0VGVzdEhvc3QuYw0KPiA+ICsNCj4gPiArW1NvdXJjZXMuWDY0XQ0K PiA+ICsgIFg2NC9Mb25nSnVtcC5uYXNtDQo+ID4gKyAgWDY0L1NldEp1bXAubmFzbQ0KPiA+ICsg IFg2NC9Td2l0Y2hTdGFjay5uYXNtDQo+ID4gKyAgWDY0L0NwdUJyZWFrcG9pbnQuYyB8IE1TRlQN Cj4gPiArICBYNjQvQ3B1UGF1c2UubmFzbXwgTVNGVA0KPiA+ICsgIFg2NC9SZWFkVHNjLm5hc218 IE1TRlQNCj4gPiArICBYNjQvRnhSZXN0b3JlLm5hc218IE1TRlQNCj4gPiArICBYNjQvRnhTYXZl Lm5hc218IE1TRlQNCj4gPiArICBYNjQvUmVhZEVmbGFncy5uYXNtfCBNU0ZUDQo+ID4gKyAgWDY0 L05vbi1leGlzdGluZy5jDQo+ID4gKyAgTWF0aDY0LmMNCj4gPiArICBVbmFsaWduZWQuYw0KPiA+ ICsgIFg4NkZ4U2F2ZS5jDQo+ID4gKyAgWDg2RnhSZXN0b3JlLmMNCj4gPiArICBYODZNc3IuYw0K PiA+ICsgIFg4NlJkUmFuZC5jDQo+ID4gKyAgWDg2U3BlY3VsYXRpb25CYXJyaWVyLmMNCj4gPiAr ICBYNjQvR2NjSW5saW5lLmMgfCBHQ0MNCj4gPiArICBYNjQvUmRSYW5kLm5hc20NCj4gPiArICBD aGtTdGtHY2MuYyAgfCBHQ0MNCj4gPiArICBYODZVbml0VGVzdEhvc3QuYw0KPiA+ICsNCj4gPiAr W1NvdXJjZXMuRUJDXQ0KPiA+ICsgIEViYy9DcHVCcmVha3BvaW50LmMNCj4gPiArICBFYmMvU2V0 SnVtcExvbmdKdW1wLmMNCj4gPiArICBFYmMvU3dpdGNoU3RhY2suYw0KPiA+ICsgIEViYy9TcGVj dWxhdGlvbkJhcnJpZXIuYw0KPiA+ICsgIFVuYWxpZ25lZC5jDQo+ID4gKyAgTWF0aDY0LmMNCj4g PiArDQo+ID4gK1tTb3VyY2VzLkFSTV0NCj4gPiArICBBcm0vSW50ZXJuYWxTd2l0Y2hTdGFjay5j DQo+ID4gKyAgQXJtL1VuYWxpZ25lZC5jDQo+ID4gKyAgTWF0aDY0LmMgICAgICAgICAgICAgICAg ICAgfCBSVkNUDQo+ID4gKyAgTWF0aDY0LmMgICAgICAgICAgICAgICAgICAgfCBNU0ZUDQo+ID4g Kw0KPiA+ICsgIEFybS9Td2l0Y2hTdGFjay5hc20gICAgICAgIHwgUlZDVA0KPiA+ICsgIEFybS9T ZXRKdW1wTG9uZ0p1bXAuYXNtICAgIHwgUlZDVA0KPiA+ICsgIEFybS9DcHVQYXVzZS5hc20gICAg ICAgICAgIHwgUlZDVA0KPiA+ICsgIEFybS9DcHVCcmVha3BvaW50LmFzbSAgICAgIHwgUlZDVA0K PiA+ICsgIEFybS9NZW1vcnlGZW5jZS5hc20gICAgICAgIHwgUlZDVA0KPiA+ICsgIEFybS9TcGVj dWxhdGlvbkJhcnJpZXIuUyAgIHwgUlZDVA0KPiA+ICsNCj4gPiArICBBcm0vU3dpdGNoU3RhY2su YXNtICAgICAgICB8IE1TRlQNCj4gPiArICBBcm0vU2V0SnVtcExvbmdKdW1wLmFzbSAgICB8IE1T RlQNCj4gPiArICBBcm0vQ3B1UGF1c2UuYXNtICAgICAgICAgICB8IE1TRlQNCj4gPiArICBBcm0v Q3B1QnJlYWtwb2ludC5hc20gICAgICB8IE1TRlQNCj4gPiArICBBcm0vTWVtb3J5RmVuY2UuYXNt ICAgICAgICB8IE1TRlQNCj4gPiArICBBcm0vU3BlY3VsYXRpb25CYXJyaWVyLmFzbSB8IE1TRlQN Cj4gPiArDQo+ID4gKyAgQXJtL01hdGg2NC5TICAgICAgICAgICAgICAgICAgfCBHQ0MNCj4gPiAr ICBBcm0vU3dpdGNoU3RhY2suUyAgICAgICAgICAgICB8IEdDQw0KPiA+ICsgIEFybS9TZXRKdW1w TG9uZ0p1bXAuUyAgICAgICAgIHwgR0NDDQo+ID4gKyAgQXJtL0NwdUJyZWFrcG9pbnQuUyAgICAg ICAgICAgfCBHQ0MNCj4gPiArICBBcm0vTWVtb3J5RmVuY2UuUyAgICAgICAgICAgICB8IEdDQw0K PiA+ICsgIEFybS9TcGVjdWxhdGlvbkJhcnJpZXIuUyAgICAgIHwgR0NDDQo+ID4gKw0KPiA+ICtb U291cmNlcy5BQVJDSDY0XQ0KPiA+ICsgIEFybS9JbnRlcm5hbFN3aXRjaFN0YWNrLmMNCj4gPiAr ICBBcm0vVW5hbGlnbmVkLmMNCj4gPiArICBNYXRoNjQuYw0KPiA+ICsNCj4gPiArICBBQXJjaDY0 L01lbW9yeUZlbmNlLlMgICAgICAgICAgICAgfCBHQ0MNCj4gPiArICBBQXJjaDY0L1N3aXRjaFN0 YWNrLlMgICAgICAgICAgICAgfCBHQ0MNCj4gPiArICBBQXJjaDY0L1NldEp1bXBMb25nSnVtcC5T ICAgICAgICAgfCBHQ0MNCj4gPiArICBBQXJjaDY0L0NwdUJyZWFrcG9pbnQuUyAgICAgICAgICAg fCBHQ0MNCj4gPiArICBBQXJjaDY0L1NwZWN1bGF0aW9uQmFycmllci5TICAgICAgfCBHQ0MNCj4g PiArDQo+ID4gKyAgQUFyY2g2NC9NZW1vcnlGZW5jZS5hc20gICAgICAgICAgIHwgTVNGVA0KPiA+ ICsgIEFBcmNoNjQvU3dpdGNoU3RhY2suYXNtICAgICAgICAgICB8IE1TRlQNCj4gPiArICBBQXJj aDY0L1NldEp1bXBMb25nSnVtcC5hc20gICAgICAgfCBNU0ZUDQo+ID4gKyAgQUFyY2g2NC9DcHVC cmVha3BvaW50LmFzbSAgICAgICAgIHwgTVNGVA0KPiA+ICsgIEFBcmNoNjQvU3BlY3VsYXRpb25C YXJyaWVyLmFzbSAgICB8IE1TRlQNCj4gPiArDQo+ID4gK1tTb3VyY2VzLlJJU0NWNjRdDQo+ID4g KyAgTWF0aDY0LmMNCj4gPiArICBVbmFsaWduZWQuYw0KPiA+ICsgIFJpc2NWNjQvSW50ZXJuYWxT d2l0Y2hTdGFjay5jDQo+ID4gKyAgUmlzY1Y2NC9DcHVCcmVha3BvaW50LmMNCj4gPiArICBSaXNj VjY0L0NwdVBhdXNlLmMNCj4gPiArICBSaXNjVjY0L1Jpc2NWU2V0SnVtcExvbmdKdW1wLlMgICAg fCBHQ0MNCj4gPiArICBSaXNjVjY0L1Jpc2NWQ3B1QnJlYWtwb2ludC5TICAgICAgfCBHQ0MNCj4g PiArICBSaXNjVjY0L1Jpc2NWQ3B1UGF1c2UuUyAgICAgICAgICAgfCBHQ0MNCj4gPiArICBSaXNj VjY0L1Jpc2NWSW50ZXJydXB0LlMgICAgICAgICAgfCBHQ0MNCj4gPiArICBSaXNjVjY0L0ZsdXNo Q2FjaGUuUyAgICAgICAgICAgICAgfCBHQ0MNCj4gPiArDQo+ID4gK1tQYWNrYWdlc10NCj4gPiAr ICBNZGVQa2cvTWRlUGtnLmRlYw0KPiA+ICsNCj4gPiArW0xpYnJhcnlDbGFzc2VzXQ0KPiA+ICsg IFBjZExpYg0KPiA+ICsgIERlYnVnTGliDQo+ID4gKyAgQmFzZU1lbW9yeUxpYg0KPiA+ICsNCj4g PiArW1BjZF0NCj4gPiArICBnRWZpTWRlUGtnVG9rZW5TcGFjZUd1aWQuUGNkTWF4aW11bUxpbmtl ZExpc3RMZW5ndGgNCj4gIyMgU09NRVRJTUVTX0NPTlNVTUVTDQo+ID4gKw0KPiBnRWZpTWRlUGtn VG9rZW5TcGFjZUd1aWQuUGNkTWF4aW11bUFzY2lpU3RyaW5nTGVuZ3RoDQo+ICMjIFNPTUVUSU1F U19DT05TVU1FUw0KPiA+ICsNCj4gZ0VmaU1kZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZE1heGltdW1V bmljb2RlU3RyaW5nTGVuZ3RoDQo+ICMjIFNPTUVUSU1FU19DT05TVU1FUw0KPiA+ICsNCj4gZ0Vm aU1kZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZENvbnRyb2xGbG93RW5mb3JjZW1lbnRQcm9wZXINCj4g dHlNYXNrICAgIyMgU09NRVRJTUVTX0NPTlNVTUVTDQo+ID4gKyAgZ0VmaU1kZVBrZ1Rva2VuU3Bh Y2VHdWlkLlBjZFNwZWN1bGF0aW9uQmFycmllclR5cGUNCj4gIyMgU09NRVRJTUVTX0NPTlNVTUVT DQo+ID4gKw0KPiA+ICtbRmVhdHVyZVBjZF0NCj4gPiArICBnRWZpTWRlUGtnVG9rZW5TcGFjZUd1 aWQuUGNkVmVyaWZ5Tm9kZUluTGlzdCAgIyMNCj4gQ09OU1VNRVMNCj4gPiBkaWZmIC0tZ2l0DQo+ IGEvTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9Vbml0VGVzdEhvc3RCYXNlTGliLnVuaQ0KPiBiL01k ZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvVW5pdFRlc3RIb3N0QmFzZUxpYi51bmkNCj4gPiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLmU2M2VjZWY4MmMNCj4gPiAtLS0g L2Rldi9udWxsDQo+ID4gKysrIGIvTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9Vbml0VGVzdEhvc3RC YXNlTGliLnVuaQ0KPiA+IEBAIC0wLDAgKzEsMTEgQEANCj4gPiArLy8gLyoqIEBmaWxlDQo+ID4g Ky8vIEJhc2UgTGlicmFyeSBpbXBsZW1lbnRhdGlvbiBmb3IgdXNlIHdpdGggaG9zdA0KPiBiYXNl ZCB1bml0IHRlc3RzLg0KPiA+ICsvLw0KPiA+ICsvLyBDb3B5cmlnaHQgKGMpIDIwMjAsIEludGVs IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+IHJlc2VydmVkLjxCUj4NCj4gPiArLy8gU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiArLy8NCj4gPiArLy8g KiovDQo+ID4gKw0KPiA+ICsjc3RyaW5nIFNUUl9NT0RVTEVfQUJTVFJBQ1QgICAgICAgICAgICAg I2xhbmd1YWdlIGVuLQ0KPiBVUyAiQmFzZSBMaWJyYXJ5IGltcGxlbWVudGF0aW9uIGZvciB1c2Ug d2l0aCBob3N0IGJhc2VkDQo+IHVuaXQgdGVzdHMuIg0KPiA+ICsNCj4gPiArI3N0cmluZyBTVFJf TU9EVUxFX0RFU0NSSVBUSU9OICAgICAgICAgICNsYW5ndWFnZSBlbi0NCj4gVVMgIkJhc2UgTGli cmFyeSBpbXBsZW1lbnRhdGlvbiBmb3IgdXNlIHdpdGggaG9zdCBiYXNlZA0KPiB1bml0IHRlc3Rz LiINCj4gPiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9YODZVbml0VGVzdEhv c3QuYw0KPiBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvWDg2VW5pdFRlc3RIb3N0LmMNCj4gPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLmQwZTQyODQ1N2UNCj4g PiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9YODZVbml0 VGVzdEhvc3QuYw0KPiA+IEBAIC0wLDAgKzEsMjk3NyBAQA0KPiA+ICsvKiogQGZpbGUNCj4gPiAr ICBJQTMyL1g2NCBzcGVjaWZpYyBVbml0IFRlc3QgSG9zdCBmdW5jdGlvbnMuDQo+ID4gKw0KPiA+ ICsgIENvcHlyaWdodCAoYykgMjAyMCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMNCj4g cmVzZXJ2ZWQuPEJSPg0KPiA+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1 c2UtUGF0ZW50DQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArDQo+ID4gKyNpbmNsdWRlICJVbml0VGVz dEhvc3QuaCINCj4gPiArDQo+ID4gKy8vLw0KPiA+ICsvLy8gRGVmaW5lcyBmb3IgbVVuaXRUZXN0 SG9zdEJhc2VMaWJTZWdtZW50IGluZGV4ZXMNCj4gPiArLy8vDQo+ID4gKyNkZWZpbmUgVU5JVF9U RVNUX0hPU1RfQkFTRV9MSUJfU0VHTUVOVF9DUyAgICAwDQo+ID4gKyNkZWZpbmUgVU5JVF9URVNU X0hPU1RfQkFTRV9MSUJfU0VHTUVOVF9EUyAgICAxDQo+ID4gKyNkZWZpbmUgVU5JVF9URVNUX0hP U1RfQkFTRV9MSUJfU0VHTUVOVF9FUyAgICAyDQo+ID4gKyNkZWZpbmUgVU5JVF9URVNUX0hPU1Rf QkFTRV9MSUJfU0VHTUVOVF9GUyAgICAzDQo+ID4gKyNkZWZpbmUgVU5JVF9URVNUX0hPU1RfQkFT RV9MSUJfU0VHTUVOVF9HUyAgICA0DQo+ID4gKyNkZWZpbmUgVU5JVF9URVNUX0hPU1RfQkFTRV9M SUJfU0VHTUVOVF9TUyAgICA1DQo+ID4gKyNkZWZpbmUgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJf U0VHTUVOVF9UUiAgICA2DQo+ID4gKyNkZWZpbmUgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfU0VH TUVOVF9MRFRSICA3DQo+ID4gKw0KPiA+ICsvLy8NCj4gPiArLy8vIE1vZHVsZSBnbG9iYWwgdmFy aWFibGVzIGZvciBzaW1wbGUgc3lzdGVtDQo+IGVtdWxhdGlvbiBvZiBNU1JzLCBDUngsIERSeCwN Cj4gPiArLy8vIEdEVFIsIElEVFIsIGFuZCBTZWdtZW50IFNlbGVjdG9ycy4NCj4gPiArLy8vDQo+ ID4gK1NUQVRJQyBVSU5UNjQNCj4gbVVuaXRUZXN0SG9zdEJhc2VMaWJNc3JbMl1bMHgxMDAwXTsN Cj4gPiArU1RBVElDIFVJTlROICAgICAgICAgICAgbVVuaXRUZXN0SG9zdEJhc2VMaWJDcls1XTsN Cj4gPiArU1RBVElDIFVJTlROICAgICAgICAgICAgbVVuaXRUZXN0SG9zdEJhc2VMaWJEcls4XTsN Cj4gPiArU1RBVElDIFVJTlQxNg0KPiBtVW5pdFRlc3RIb3N0QmFzZUxpYlNlZ21lbnRbOF07DQo+ ID4gK1NUQVRJQyBJQTMyX0RFU0NSSVBUT1IgIG1Vbml0VGVzdEhvc3RCYXNlTGliR2R0cjsNCj4g PiArU1RBVElDIElBMzJfREVTQ1JJUFRPUiAgbVVuaXRUZXN0SG9zdEJhc2VMaWJJZHRyOw0KPiA+ ICsNCj4gPiArLyoqDQo+ID4gKyAgUmV0cmlldmVzIENQVUlEIGluZm9ybWF0aW9uLg0KPiA+ICsN Cj4gPiArICBFeGVjdXRlcyB0aGUgQ1BVSUQgaW5zdHJ1Y3Rpb24gd2l0aCBFQVggc2V0IHRvIHRo ZQ0KPiB2YWx1ZSBzcGVjaWZpZWQgYnkgSW5kZXguDQo+ID4gKyAgVGhpcyBmdW5jdGlvbiBhbHdh eXMgcmV0dXJucyBJbmRleC4NCj4gPiArICBJZiBFYXggaXMgbm90IE5VTEwsIHRoZW4gdGhlIHZh bHVlIG9mIEVBWCBhZnRlcg0KPiBDUFVJRCBpcyByZXR1cm5lZCBpbiBFYXguDQo+ID4gKyAgSWYg RWJ4IGlzIG5vdCBOVUxMLCB0aGVuIHRoZSB2YWx1ZSBvZiBFQlggYWZ0ZXINCj4gQ1BVSUQgaXMg cmV0dXJuZWQgaW4gRWJ4Lg0KPiA+ICsgIElmIEVjeCBpcyBub3QgTlVMTCwgdGhlbiB0aGUgdmFs dWUgb2YgRUNYIGFmdGVyDQo+IENQVUlEIGlzIHJldHVybmVkIGluIEVjeC4NCj4gPiArICBJZiBF ZHggaXMgbm90IE5VTEwsIHRoZW4gdGhlIHZhbHVlIG9mIEVEWCBhZnRlcg0KPiBDUFVJRCBpcyBy ZXR1cm5lZCBpbiBFZHguDQo+ID4gKyAgVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBv biBJQS0zMiBhbmQgeDY0Lg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIEluZGV4IFRoZSAzMi1iaXQg dmFsdWUgdG8gbG9hZCBpbnRvIEVBWA0KPiBwcmlvciB0byBpbnZva2luZyB0aGUgQ1BVSUQNCj4g PiArICAgICAgICAgICAgICAgIGluc3RydWN0aW9uLg0KPiA+ICsgIEBwYXJhbSAgRWF4ICAgVGhl IHBvaW50ZXIgdG8gdGhlIDMyLWJpdCBFQVggdmFsdWUNCj4gcmV0dXJuZWQgYnkgdGhlIENQVUlE DQo+ID4gKyAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbi4gVGhpcyBpcyBhbiBvcHRpb25hbA0K PiBwYXJhbWV0ZXIgdGhhdCBtYXkgYmUgTlVMTC4NCj4gPiArICBAcGFyYW0gIEVieCAgIFRoZSBw b2ludGVyIHRvIHRoZSAzMi1iaXQgRUJYIHZhbHVlDQo+IHJldHVybmVkIGJ5IHRoZSBDUFVJRA0K PiA+ICsgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24uIFRoaXMgaXMgYW4gb3B0aW9uYWwNCj4g cGFyYW1ldGVyIHRoYXQgbWF5IGJlIE5VTEwuDQo+ID4gKyAgQHBhcmFtICBFY3ggICBUaGUgcG9p bnRlciB0byB0aGUgMzItYml0IEVDWCB2YWx1ZQ0KPiByZXR1cm5lZCBieSB0aGUgQ1BVSUQNCj4g PiArICAgICAgICAgICAgICAgIGluc3RydWN0aW9uLiBUaGlzIGlzIGFuIG9wdGlvbmFsDQo+IHBh cmFtZXRlciB0aGF0IG1heSBiZSBOVUxMLg0KPiA+ICsgIEBwYXJhbSAgRWR4ICAgVGhlIHBvaW50 ZXIgdG8gdGhlIDMyLWJpdCBFRFggdmFsdWUNCj4gcmV0dXJuZWQgYnkgdGhlIENQVUlEDQo+ID4g KyAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbi4gVGhpcyBpcyBhbiBvcHRpb25hbA0KPiBwYXJh bWV0ZXIgdGhhdCBtYXkgYmUgTlVMTC4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBJbmRleC4NCj4g PiArDQo+ID4gKyoqLw0KPiA+ICtVSU5UMzINCj4gPiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0SG9z dEJhc2VMaWJBc21DcHVpZCAoDQo+ID4gKyAgSU4gICAgICBVSU5UMzIgICAgICAgICAgICAgICAg ICAgIEluZGV4LA0KPiA+ICsgIE9VVCAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAqRWF4 LCAgT1BUSU9OQUwNCj4gPiArICBPVVQgICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgKkVi eCwgIE9QVElPTkFMDQo+ID4gKyAgT1VUICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICpF Y3gsICBPUFRJT05BTA0KPiA+ICsgIE9VVCAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAq RWR4ICAgT1BUSU9OQUwNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBpZiAoRWF4ICE9IE5VTEwp IHsNCj4gPiArICAgICpFYXggPSAwOw0KPiA+ICsgIH0NCj4gPiArICBpZiAoRWJ4ICE9IE5VTEwp IHsNCj4gPiArICAgICpFYnggPSAwOw0KPiA+ICsgIH0NCj4gPiArICBpZiAoRWN4ICE9IE5VTEwp IHsNCj4gPiArICAgICpFY3ggPSAwOw0KPiA+ICsgIH0NCj4gPiArICBpZiAoRWR4ICE9IE5VTEwp IHsNCj4gPiArICAgICpFZHggPSAwOw0KPiA+ICsgIH0NCj4gPiArICByZXR1cm4gSW5kZXg7DQo+ ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFJldHJpZXZlcyBDUFVJRCBpbmZvcm1hdGlv biB1c2luZyBhbiBleHRlbmRlZCBsZWFmDQo+IGlkZW50aWZpZXIuDQo+ID4gKw0KPiA+ICsgIEV4 ZWN1dGVzIHRoZSBDUFVJRCBpbnN0cnVjdGlvbiB3aXRoIEVBWCBzZXQgdG8gdGhlDQo+IHZhbHVl IHNwZWNpZmllZCBieSBJbmRleA0KPiA+ICsgIGFuZCBFQ1ggc2V0IHRvIHRoZSB2YWx1ZSBzcGVj aWZpZWQgYnkgU3ViSW5kZXguDQo+IFRoaXMgZnVuY3Rpb24gYWx3YXlzIHJldHVybnMNCj4gPiAr ICBJbmRleC4gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQNCj4g eDY0Lg0KPiA+ICsNCj4gPiArICBJZiBFYXggaXMgbm90IE5VTEwsIHRoZW4gdGhlIHZhbHVlIG9m IEVBWCBhZnRlcg0KPiBDUFVJRCBpcyByZXR1cm5lZCBpbiBFYXguDQo+ID4gKyAgSWYgRWJ4IGlz IG5vdCBOVUxMLCB0aGVuIHRoZSB2YWx1ZSBvZiBFQlggYWZ0ZXINCj4gQ1BVSUQgaXMgcmV0dXJu ZWQgaW4gRWJ4Lg0KPiA+ICsgIElmIEVjeCBpcyBub3QgTlVMTCwgdGhlbiB0aGUgdmFsdWUgb2Yg RUNYIGFmdGVyDQo+IENQVUlEIGlzIHJldHVybmVkIGluIEVjeC4NCj4gPiArICBJZiBFZHggaXMg bm90IE5VTEwsIHRoZW4gdGhlIHZhbHVlIG9mIEVEWCBhZnRlcg0KPiBDUFVJRCBpcyByZXR1cm5l ZCBpbiBFZHguDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgSW5kZXggICAgIFRoZSAzMi1iaXQgdmFs dWUgdG8gbG9hZCBpbnRvIEVBWA0KPiBwcmlvciB0byBpbnZva2luZyB0aGUNCj4gPiArICAgICAg ICAgICAgICAgICAgICBDUFVJRCBpbnN0cnVjdGlvbi4NCj4gPiArICBAcGFyYW0gIFN1YkluZGV4 ICBUaGUgMzItYml0IHZhbHVlIHRvIGxvYWQgaW50byBFQ1gNCj4gcHJpb3IgdG8gaW52b2tpbmcg dGhlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgQ1BVSUQgaW5zdHJ1Y3Rpb24uDQo+ID4gKyAg QHBhcmFtICBFYXggICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIDMyLWJpdCBFQVgNCj4gdmFsdWUg cmV0dXJuZWQgYnkgdGhlIENQVUlEDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rp b24uIFRoaXMgaXMgYW4gb3B0aW9uYWwNCj4gcGFyYW1ldGVyIHRoYXQgbWF5IGJlDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgTlVMTC4NCj4gPiArICBAcGFyYW0gIEVieCAgICAgICBUaGUgcG9p bnRlciB0byB0aGUgMzItYml0IEVCWA0KPiB2YWx1ZSByZXR1cm5lZCBieSB0aGUgQ1BVSUQNCj4g PiArICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbi4gVGhpcyBpcyBhbiBvcHRpb25hbA0K PiBwYXJhbWV0ZXIgdGhhdCBtYXkgYmUNCj4gPiArICAgICAgICAgICAgICAgICAgICBOVUxMLg0K PiA+ICsgIEBwYXJhbSAgRWN4ICAgICAgIFRoZSBwb2ludGVyIHRvIHRoZSAzMi1iaXQgRUNYDQo+ IHZhbHVlIHJldHVybmVkIGJ5IHRoZSBDUFVJRA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlu c3RydWN0aW9uLiBUaGlzIGlzIGFuIG9wdGlvbmFsDQo+IHBhcmFtZXRlciB0aGF0IG1heSBiZQ0K PiA+ICsgICAgICAgICAgICAgICAgICAgIE5VTEwuDQo+ID4gKyAgQHBhcmFtICBFZHggICAgICAg VGhlIHBvaW50ZXIgdG8gdGhlIDMyLWJpdCBFRFgNCj4gdmFsdWUgcmV0dXJuZWQgYnkgdGhlIENQ VUlEDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24uIFRoaXMgaXMgYW4gb3B0 aW9uYWwNCj4gcGFyYW1ldGVyIHRoYXQgbWF5IGJlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg TlVMTC4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBJbmRleC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ ICtVSU5UMzINCj4gPiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJBc21DcHVpZEV4 ICgNCj4gPiArICBJTiAgICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgSW5kZXgsDQo+ID4g KyAgSU4gICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIFN1YkluZGV4LA0KPiA+ICsgIE9V VCAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAqRWF4LCAgT1BUSU9OQUwNCj4gPiArICBP VVQgICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgKkVieCwgIE9QVElPTkFMDQo+ID4gKyAg T1VUICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICpFY3gsICBPUFRJT05BTA0KPiA+ICsg IE9VVCAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAqRWR4ICAgT1BUSU9OQUwNCj4gPiAr ICApDQo+ID4gK3sNCj4gPiArICBpZiAoRWF4ICE9IE5VTEwpIHsNCj4gPiArICAgICpFYXggPSAw Ow0KPiA+ICsgIH0NCj4gPiArICBpZiAoRWJ4ICE9IE5VTEwpIHsNCj4gPiArICAgICpFYnggPSAw Ow0KPiA+ICsgIH0NCj4gPiArICBpZiAoRWN4ICE9IE5VTEwpIHsNCj4gPiArICAgICpFY3ggPSAw Ow0KPiA+ICsgIH0NCj4gPiArICBpZiAoRWR4ICE9IE5VTEwpIHsNCj4gPiArICAgICpFZHggPSAw Ow0KPiA+ICsgIH0NCj4gPiArICByZXR1cm4gSW5kZXg7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgIFNldCBDRCBiaXQgYW5kIGNsZWFyIE5XIGJpdCBvZiBDUjAgZm9sbG93ZWQgYnkg YQ0KPiBXQklOVkQuDQo+ID4gKw0KPiA+ICsgIERpc2FibGVzIHRoZSBjYWNoZXMgYnkgc2V0dGlu ZyB0aGUgQ0QgYml0IG9mIENSMCB0bw0KPiAxLCBjbGVhcmluZyB0aGUgTlcgYml0IG9mIENSMCB0 byAwLA0KPiA+ICsgIGFuZCBleGVjdXRpbmcgYSBXQklOVkQgaW5zdHJ1Y3Rpb24uICBUaGlzIGZ1 bmN0aW9uDQo+IGlzIG9ubHkgYXZhaWxhYmxlIG9uIElBLTMyIGFuZCB4NjQuDQo+ID4gKw0KPiA+ ICsqKi8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkFz bURpc2FibGVDYWNoZSAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICt9DQo+ ID4gKw0KPiA+ICsvKioNCj4gPiArICBQZXJmb3JtIGEgV0JJTlZEIGFuZCBjbGVhciBib3RoIHRo ZSBDRCBhbmQgTlcgYml0cw0KPiBvZiBDUjAuDQo+ID4gKw0KPiA+ICsgIEVuYWJsZXMgdGhlIGNh Y2hlcyBieSBleGVjdXRpbmcgYSBXQklOVkQNCj4gaW5zdHJ1Y3Rpb24gYW5kIHRoZW4gY2xlYXIg Ym90aCB0aGUgQ0QgYW5kIE5XDQo+ID4gKyAgYml0cyBvZiBDUjAgdG8gMC4gIFRoaXMgZnVuY3Rp b24gaXMgb25seSBhdmFpbGFibGUNCj4gb24gSUEtMzIgYW5kIHg2NC4NCj4gPiArDQo+ID4gKyoq Lw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVzdEhvc3RCYXNlTGliQXNtRW5h YmxlQ2FjaGUgKA0KPiA+ICsgIFZPSUQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArfQ0KPiA+ICsN Cj4gPiArLyoqDQo+ID4gKyAgUmV0dXJucyBhIDY0LWJpdCBNYWNoaW5lIFNwZWNpZmljIFJlZ2lz dGVyKE1TUikuDQo+ID4gKw0KPiA+ICsgIFJlYWRzIGFuZCByZXR1cm5zIHRoZSA2NC1iaXQgTVNS IHNwZWNpZmllZCBieQ0KPiBJbmRleC4gTm8gcGFyYW1ldGVyIGNoZWNraW5nIGlzDQo+ID4gKyAg cGVyZm9ybWVkIG9uIEluZGV4LCBhbmQgc29tZSBJbmRleCB2YWx1ZXMgbWF5IGNhdXNlDQo+IENQ VSBleGNlcHRpb25zLiBUaGUNCj4gPiArICBjYWxsZXIgbXVzdCBlaXRoZXIgZ3VhcmFudGVlIHRo YXQgSW5kZXggaXMgdmFsaWQsDQo+IG9yIHRoZSBjYWxsZXIgbXVzdCBzZXQgdXANCj4gPiArICBl eGNlcHRpb24gaGFuZGxlcnMgdG8gY2F0Y2ggdGhlIGV4Y2VwdGlvbnMuIFRoaXMNCj4gZnVuY3Rp b24gaXMgb25seSBhdmFpbGFibGUNCj4gPiArICBvbiBJQS0zMiBhbmQgeDY0Lg0KPiA+ICsNCj4g PiArICBAcGFyYW0gIEluZGV4IFRoZSAzMi1iaXQgTVNSIGluZGV4IHRvIHJlYWQuDQo+ID4gKw0K PiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIG9mIHRoZSBNU1IgaWRlbnRpZmllZCBieSBJbmRleC4N Cj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5UNjQNCj4gPiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0 SG9zdEJhc2VMaWJBc21SZWFkTXNyNjQgKA0KPiA+ICsgIElOICAgICAgVUlOVDMyICAgICAgICAg ICAgICAgICAgICBJbmRleA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIGlmIChJbmRleCA8IDB4 MTAwMCkgew0KPiA+ICsgICAgcmV0dXJuIG1Vbml0VGVzdEhvc3RCYXNlTGliTXNyWzBdW0luZGV4 XTsNCj4gPiArICB9DQo+ID4gKyAgaWYgKEluZGV4ID49IDB4QzAwMDAwMDAgJiYgSW5kZXggPCAw eEMwMDAxMDAwKSB7DQo+ID4gKyAgICByZXR1cm4gbVVuaXRUZXN0SG9zdEJhc2VMaWJNc3JbMV1b SW5kZXhdOw0KPiA+ICsgIH0NCj4gPiArICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAgV3JpdGVzIGEgNjQtYml0IHZhbHVlIHRvIGEgTWFjaGluZSBTcGVjaWZpYw0K PiBSZWdpc3RlcihNU1IpLCBhbmQgcmV0dXJucyB0aGUNCj4gPiArICB2YWx1ZS4NCj4gPiArDQo+ ID4gKyAgV3JpdGVzIHRoZSA2NC1iaXQgdmFsdWUgc3BlY2lmaWVkIGJ5IFZhbHVlIHRvIHRoZQ0K PiBNU1Igc3BlY2lmaWVkIGJ5IEluZGV4LiBUaGUNCj4gPiArICA2NC1iaXQgdmFsdWUgd3JpdHRl biB0byB0aGUgTVNSIGlzIHJldHVybmVkLiBObw0KPiBwYXJhbWV0ZXIgY2hlY2tpbmcgaXMNCj4g PiArICBwZXJmb3JtZWQgb24gSW5kZXggb3IgVmFsdWUsIGFuZCBzb21lIG9mIHRoZXNlIG1heQ0K PiBjYXVzZSBDUFUgZXhjZXB0aW9ucy4gVGhlDQo+ID4gKyAgY2FsbGVyIG11c3QgZWl0aGVyIGd1 YXJhbnRlZSB0aGF0IEluZGV4IGFuZCBWYWx1ZQ0KPiBhcmUgdmFsaWQsIG9yIHRoZSBjYWxsZXIN Cj4gPiArICBtdXN0IGVzdGFibGlzaCBwcm9wZXIgZXhjZXB0aW9uIGhhbmRsZXJzLiBUaGlzDQo+ IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gKyAgSUEtMzIgYW5kIHg2NC4NCj4g PiArDQo+ID4gKyAgQHBhcmFtICBJbmRleCBUaGUgMzItYml0IE1TUiBpbmRleCB0byB3cml0ZS4N Cj4gPiArICBAcGFyYW0gIFZhbHVlIFRoZSA2NC1iaXQgdmFsdWUgdG8gd3JpdGUgdG8gdGhlIE1T Ui4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBWYWx1ZQ0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1VJ TlQ2NA0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVdyaXRlTXNyNjQg KA0KPiA+ICsgIElOICAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBJbmRleCwNCj4gPiAr ICBJTiAgICAgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgVmFsdWUNCj4gPiArICApDQo+ID4g K3sNCj4gPiArICBpZiAoSW5kZXggPCAweDEwMDApIHsNCj4gPiArICAgIG1Vbml0VGVzdEhvc3RC YXNlTGliTXNyWzBdW0luZGV4XSA9IFZhbHVlOw0KPiA+ICsgIH0NCj4gPiArICBpZiAoSW5kZXgg Pj0gMHhDMDAwMDAwMCAmJiBJbmRleCA8IDB4QzAwMDEwMDApIHsNCj4gPiArICAgIG1Vbml0VGVz dEhvc3RCYXNlTGliTXNyWzFdW0luZGV4IC0gMHhDMDAwMDAwMDBdID0NCj4gVmFsdWU7DQo+ID4g KyAgfQ0KPiA+ICsgIHJldHVybiBWYWx1ZTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4g KyAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIENvbnRyb2wgUmVnaXN0ZXIgMA0KPiAo Q1IwKS4NCj4gPiArDQo+ID4gKyAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUg b2YgQ1IwLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gKyAgb24gSUEt MzIgYW5kIHg2NC4gVGhpcyByZXR1cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+IElBLTMyIGFuZCBh IDY0LWJpdCB2YWx1ZSBvbg0KPiA+ICsgIHg2NC4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBUaGUg dmFsdWUgb2YgdGhlIENvbnRyb2wgUmVnaXN0ZXIgMCAoQ1IwKS4NCj4gPiArDQo+ID4gKyoqLw0K PiA+ICtVSU5UTg0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVJlYWRD cjAgKA0KPiA+ICsgIFZPSUQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gbVVuaXRU ZXN0SG9zdEJhc2VMaWJDclswXTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUmVh ZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIENvbnRyb2wgUmVnaXN0ZXIgMg0KPiAoQ1IyKS4N Cj4gPiArDQo+ID4gKyAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgQ1Iy LiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gKyAgb24gSUEtMzIgYW5k IHg2NC4gVGhpcyByZXR1cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+IElBLTMyIGFuZCBhIDY0LWJp dCB2YWx1ZSBvbg0KPiA+ICsgIHg2NC4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBUaGUgdmFsdWUg b2YgdGhlIENvbnRyb2wgUmVnaXN0ZXIgMiAoQ1IyKS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtV SU5UTg0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVJlYWRDcjIgKA0K PiA+ICsgIFZPSUQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gbVVuaXRUZXN0SG9z dEJhc2VMaWJDclsyXTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUmVhZHMgdGhl IGN1cnJlbnQgdmFsdWUgb2YgdGhlIENvbnRyb2wgUmVnaXN0ZXIgMw0KPiAoQ1IzKS4NCj4gPiAr DQo+ID4gKyAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgQ1IzLiBUaGlz DQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gKyAgb24gSUEtMzIgYW5kIHg2NC4g VGhpcyByZXR1cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+IElBLTMyIGFuZCBhIDY0LWJpdCB2YWx1 ZSBvbg0KPiA+ICsgIHg2NC4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgb2YgdGhl IENvbnRyb2wgUmVnaXN0ZXIgMyAoQ1IzKS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5UTg0K PiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVJlYWRDcjMgKA0KPiA+ICsg IFZPSUQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gbVVuaXRUZXN0SG9zdEJhc2VM aWJDclszXTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUmVhZHMgdGhlIGN1cnJl bnQgdmFsdWUgb2YgdGhlIENvbnRyb2wgUmVnaXN0ZXIgNA0KPiAoQ1I0KS4NCj4gPiArDQo+ID4g KyAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgQ1I0LiBUaGlzDQo+IGZ1 bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gKyAgb24gSUEtMzIgYW5kIHg2NC4gVGhpcyBy ZXR1cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+IElBLTMyIGFuZCBhIDY0LWJpdCB2YWx1ZSBvbg0K PiA+ICsgIHg2NC4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgb2YgdGhlIENvbnRy b2wgUmVnaXN0ZXIgNCAoQ1I0KS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5UTg0KPiA+ICtF RklBUEkNCj4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVJlYWRDcjQgKA0KPiA+ICsgIFZPSUQN Cj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gbVVuaXRUZXN0SG9zdEJhc2VMaWJDcls0 XTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgV3JpdGVzIGEgdmFsdWUgdG8gQ29u dHJvbCBSZWdpc3RlciAwIChDUjApLg0KPiA+ICsNCj4gPiArICBXcml0ZXMgYW5kIHJldHVybnMg YSBuZXcgdmFsdWUgdG8gQ1IwLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9u DQo+ID4gKyAgSUEtMzIgYW5kIHg2NC4gVGhpcyB3cml0ZXMgYSAzMi1iaXQgdmFsdWUgb24gSUEt MzINCj4gYW5kIGEgNjQtYml0IHZhbHVlIG9uIHg2NC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBD cjAgVGhlIHZhbHVlIHRvIHdyaXRlIHRvIENSMC4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBUaGUg dmFsdWUgd3JpdHRlbiB0byBDUjAuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVE4NCj4gPiAr RUZJQVBJDQo+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJBc21Xcml0ZUNyMCAoDQo+ID4gKyAgVUlO VE4gIENyMA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIG1Vbml0VGVzdEhvc3RCYXNlTGliQ3Jb MF0gPSBDcjA7DQo+ID4gKyAgcmV0dXJuIENyMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ ID4gKyAgV3JpdGVzIGEgdmFsdWUgdG8gQ29udHJvbCBSZWdpc3RlciAyIChDUjIpLg0KPiA+ICsN Cj4gPiArICBXcml0ZXMgYW5kIHJldHVybnMgYSBuZXcgdmFsdWUgdG8gQ1IyLiBUaGlzDQo+IGZ1 bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gKyAgSUEtMzIgYW5kIHg2NC4gVGhpcyB3 cml0ZXMgYSAzMi1iaXQgdmFsdWUgb24gSUEtMzINCj4gYW5kIGEgNjQtYml0IHZhbHVlIG9uIHg2 NC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBDcjIgVGhlIHZhbHVlIHRvIHdyaXRlIHRvIENSMi4N Cj4gPiArDQo+ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbiB0byBDUjIuDQo+ID4gKw0K PiA+ICsqKi8NCj4gPiArVUlOVE4NCj4gPiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0SG9zdEJhc2VM aWJBc21Xcml0ZUNyMiAoDQo+ID4gKyAgVUlOVE4gIENyMg0KPiA+ICsgICkNCj4gPiArew0KPiA+ ICsgIG1Vbml0VGVzdEhvc3RCYXNlTGliQ3JbMl0gPSBDcjI7DQo+ID4gKyAgcmV0dXJuIENyMjsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgV3JpdGVzIGEgdmFsdWUgdG8gQ29udHJv bCBSZWdpc3RlciAzIChDUjMpLg0KPiA+ICsNCj4gPiArICBXcml0ZXMgYW5kIHJldHVybnMgYSBu ZXcgdmFsdWUgdG8gQ1IzLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ ID4gKyAgSUEtMzIgYW5kIHg2NC4gVGhpcyB3cml0ZXMgYSAzMi1iaXQgdmFsdWUgb24gSUEtMzIN Cj4gYW5kIGEgNjQtYml0IHZhbHVlIG9uIHg2NC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBDcjMg VGhlIHZhbHVlIHRvIHdyaXRlIHRvIENSMy4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBUaGUgdmFs dWUgd3JpdHRlbiB0byBDUjMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVE4NCj4gPiArRUZJ QVBJDQo+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJBc21Xcml0ZUNyMyAoDQo+ID4gKyAgVUlOVE4g IENyMw0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIG1Vbml0VGVzdEhvc3RCYXNlTGliQ3JbM10g PSBDcjM7DQo+ID4gKyAgcmV0dXJuIENyMzsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4g KyAgV3JpdGVzIGEgdmFsdWUgdG8gQ29udHJvbCBSZWdpc3RlciA0IChDUjQpLg0KPiA+ICsNCj4g PiArICBXcml0ZXMgYW5kIHJldHVybnMgYSBuZXcgdmFsdWUgdG8gQ1I0LiBUaGlzDQo+IGZ1bmN0 aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gKyAgSUEtMzIgYW5kIHg2NC4gVGhpcyB3cml0 ZXMgYSAzMi1iaXQgdmFsdWUgb24gSUEtMzINCj4gYW5kIGEgNjQtYml0IHZhbHVlIG9uIHg2NC4N Cj4gPiArDQo+ID4gKyAgQHBhcmFtICBDcjQgVGhlIHZhbHVlIHRvIHdyaXRlIHRvIENSNC4NCj4g PiArDQo+ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbiB0byBDUjQuDQo+ID4gKw0KPiA+ ICsqKi8NCj4gPiArVUlOVE4NCj4gPiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJB c21Xcml0ZUNyNCAoDQo+ID4gKyAgVUlOVE4gIENyNA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsg IG1Vbml0VGVzdEhvc3RCYXNlTGliQ3JbNF0gPSBDcjQ7DQo+ID4gKyAgcmV0dXJuIENyNDsNCj4g PiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2Yg RGVidWcgUmVnaXN0ZXIgMCAoRFIwKS4NCj4gPiArDQo+ID4gKyAgUmVhZHMgYW5kIHJldHVybnMg dGhlIGN1cnJlbnQgdmFsdWUgb2YgRFIwLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxh YmxlDQo+ID4gKyAgb24gSUEtMzIgYW5kIHg2NC4gVGhpcyByZXR1cm5zIGEgMzItYml0IHZhbHVl IG9uDQo+IElBLTMyIGFuZCBhIDY0LWJpdCB2YWx1ZSBvbg0KPiA+ICsgIHg2NC4NCj4gPiArDQo+ ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgb2YgRGVidWcgUmVnaXN0ZXIgMCAoRFIwKS4NCj4gPiAr DQo+ID4gKyoqLw0KPiA+ICtVSU5UTg0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RIb3N0QmFz ZUxpYkFzbVJlYWREcjAgKA0KPiA+ICsgIFZPSUQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBy ZXR1cm4gbVVuaXRUZXN0SG9zdEJhc2VMaWJEclswXTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoq DQo+ID4gKyAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRGVidWcgUmVnaXN0ZXIgMSAoRFIx KS4NCj4gPiArDQo+ID4gKyAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2Yg RFIxLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gKyAgb24gSUEtMzIg YW5kIHg2NC4gVGhpcyByZXR1cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+IElBLTMyIGFuZCBhIDY0 LWJpdCB2YWx1ZSBvbg0KPiA+ICsgIHg2NC4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBUaGUgdmFs dWUgb2YgRGVidWcgUmVnaXN0ZXIgMSAoRFIxKS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5U Tg0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVJlYWREcjEgKA0KPiA+ ICsgIFZPSUQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gbVVuaXRUZXN0SG9zdEJh c2VMaWJEclsxXTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUmVhZHMgdGhlIGN1 cnJlbnQgdmFsdWUgb2YgRGVidWcgUmVnaXN0ZXIgMiAoRFIyKS4NCj4gPiArDQo+ID4gKyAgUmVh ZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRFIyLiBUaGlzDQo+IGZ1bmN0aW9u IGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gKyAgb24gSUEtMzIgYW5kIHg2NC4gVGhpcyByZXR1cm5z IGEgMzItYml0IHZhbHVlIG9uDQo+IElBLTMyIGFuZCBhIDY0LWJpdCB2YWx1ZSBvbg0KPiA+ICsg IHg2NC4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgb2YgRGVidWcgUmVnaXN0ZXIg MiAoRFIyKS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5UTg0KPiA+ICtFRklBUEkNCj4gPiAr VW5pdFRlc3RIb3N0QmFzZUxpYkFzbVJlYWREcjIgKA0KPiA+ICsgIFZPSUQNCj4gPiArICApDQo+ ID4gK3sNCj4gPiArICByZXR1cm4gbVVuaXRUZXN0SG9zdEJhc2VMaWJEclsyXTsNCj4gPiArfQ0K PiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRGVidWcg UmVnaXN0ZXIgMyAoRFIzKS4NCj4gPiArDQo+ID4gKyAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1 cnJlbnQgdmFsdWUgb2YgRFIzLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ ID4gKyAgb24gSUEtMzIgYW5kIHg2NC4gVGhpcyByZXR1cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+ IElBLTMyIGFuZCBhIDY0LWJpdCB2YWx1ZSBvbg0KPiA+ICsgIHg2NC4NCj4gPiArDQo+ID4gKyAg QHJldHVybiBUaGUgdmFsdWUgb2YgRGVidWcgUmVnaXN0ZXIgMyAoRFIzKS4NCj4gPiArDQo+ID4g KyoqLw0KPiA+ICtVSU5UTg0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkFz bVJlYWREcjMgKA0KPiA+ICsgIFZPSUQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4g bVVuaXRUZXN0SG9zdEJhc2VMaWJEclszXTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4g KyAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRGVidWcgUmVnaXN0ZXIgNCAoRFI0KS4NCj4g PiArDQo+ID4gKyAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRFI0LiBU aGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gKyAgb24gSUEtMzIgYW5kIHg2 NC4gVGhpcyByZXR1cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+IElBLTMyIGFuZCBhIDY0LWJpdCB2 YWx1ZSBvbg0KPiA+ICsgIHg2NC4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgb2Yg RGVidWcgUmVnaXN0ZXIgNCAoRFI0KS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5UTg0KPiA+ ICtFRklBUEkNCj4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVJlYWREcjQgKA0KPiA+ICsgIFZP SUQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gbVVuaXRUZXN0SG9zdEJhc2VMaWJE cls0XTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUmVhZHMgdGhlIGN1cnJlbnQg dmFsdWUgb2YgRGVidWcgUmVnaXN0ZXIgNSAoRFI1KS4NCj4gPiArDQo+ID4gKyAgUmVhZHMgYW5k IHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRFI1LiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9u bHkgYXZhaWxhYmxlDQo+ID4gKyAgb24gSUEtMzIgYW5kIHg2NC4gVGhpcyByZXR1cm5zIGEgMzIt Yml0IHZhbHVlIG9uDQo+IElBLTMyIGFuZCBhIDY0LWJpdCB2YWx1ZSBvbg0KPiA+ICsgIHg2NC4N Cj4gPiArDQo+ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgb2YgRGVidWcgUmVnaXN0ZXIgNSAoRFI1 KS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5UTg0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRl c3RIb3N0QmFzZUxpYkFzbVJlYWREcjUgKA0KPiA+ICsgIFZPSUQNCj4gPiArICApDQo+ID4gK3sN Cj4gPiArICByZXR1cm4gbVVuaXRUZXN0SG9zdEJhc2VMaWJEcls1XTsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArLyoqDQo+ID4gKyAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRGVidWcgUmVnaXN0 ZXIgNiAoRFI2KS4NCj4gPiArDQo+ID4gKyAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQg dmFsdWUgb2YgRFI2LiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gKyAg b24gSUEtMzIgYW5kIHg2NC4gVGhpcyByZXR1cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+IElBLTMy IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbg0KPiA+ICsgIHg2NC4NCj4gPiArDQo+ID4gKyAgQHJldHVy biBUaGUgdmFsdWUgb2YgRGVidWcgUmVnaXN0ZXIgNiAoRFI2KS4NCj4gPiArDQo+ID4gKyoqLw0K PiA+ICtVSU5UTg0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVJlYWRE cjYgKA0KPiA+ICsgIFZPSUQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gbVVuaXRU ZXN0SG9zdEJhc2VMaWJEcls2XTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUmVh ZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRGVidWcgUmVnaXN0ZXIgNyAoRFI3KS4NCj4gPiArDQo+ ID4gKyAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRFI3LiBUaGlzDQo+ IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gKyAgb24gSUEtMzIgYW5kIHg2NC4gVGhp cyByZXR1cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+IElBLTMyIGFuZCBhIDY0LWJpdCB2YWx1ZSBv bg0KPiA+ICsgIHg2NC4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgb2YgRGVidWcg UmVnaXN0ZXIgNyAoRFI3KS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5UTg0KPiA+ICtFRklB UEkNCj4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVJlYWREcjcgKA0KPiA+ICsgIFZPSUQNCj4g PiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gbVVuaXRUZXN0SG9zdEJhc2VMaWJEcls3XTsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgV3JpdGVzIGEgdmFsdWUgdG8gRGVidWcg UmVnaXN0ZXIgMCAoRFIwKS4NCj4gPiArDQo+ID4gKyAgV3JpdGVzIGFuZCByZXR1cm5zIGEgbmV3 IHZhbHVlIHRvIERSMC4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ ICsgIElBLTMyIGFuZCB4NjQuIFRoaXMgd3JpdGVzIGEgMzItYml0IHZhbHVlIG9uIElBLTMyDQo+ IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiB4NjQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgRHIwIFRo ZSB2YWx1ZSB0byB3cml0ZSB0byBEcjAuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVl IHdyaXR0ZW4gdG8gRGVidWcgUmVnaXN0ZXIgMA0KPiAoRFIwKS4NCj4gPiArDQo+ID4gKyoqLw0K PiA+ICtVSU5UTg0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVdyaXRl RHIwICgNCj4gPiArICBVSU5UTiAgRHIwDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgbVVuaXRU ZXN0SG9zdEJhc2VMaWJEclswXSA9IERyMDsNCj4gPiArICByZXR1cm4gRHIwOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICsvKioNCj4gPiArICBXcml0ZXMgYSB2YWx1ZSB0byBEZWJ1ZyBSZWdpc3RlciAx IChEUjEpLg0KPiA+ICsNCj4gPiArICBXcml0ZXMgYW5kIHJldHVybnMgYSBuZXcgdmFsdWUgdG8g RFIxLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gKyAgSUEtMzIg YW5kIHg2NC4gVGhpcyB3cml0ZXMgYSAzMi1iaXQgdmFsdWUgb24gSUEtMzINCj4gYW5kIGEgNjQt Yml0IHZhbHVlIG9uIHg2NC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBEcjEgVGhlIHZhbHVlIHRv IHdyaXRlIHRvIERyMS4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbiB0 byBEZWJ1ZyBSZWdpc3RlciAxDQo+IChEUjEpLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1VJTlRO DQo+ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVzdEhvc3RCYXNlTGliQXNtV3JpdGVEcjEgKA0KPiA+ ICsgIFVJTlROICBEcjENCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBtVW5pdFRlc3RIb3N0QmFz ZUxpYkRyWzFdID0gRHIxOw0KPiA+ICsgIHJldHVybiBEcjE7DQo+ID4gK30NCj4gPiArDQo+ID4g Ky8qKg0KPiA+ICsgIFdyaXRlcyBhIHZhbHVlIHRvIERlYnVnIFJlZ2lzdGVyIDIgKERSMikuDQo+ ID4gKw0KPiA+ICsgIFdyaXRlcyBhbmQgcmV0dXJucyBhIG5ldyB2YWx1ZSB0byBEUjIuIFRoaXMN Cj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiArICBJQS0zMiBhbmQgeDY0LiBU aGlzIHdyaXRlcyBhIDMyLWJpdCB2YWx1ZSBvbiBJQS0zMg0KPiBhbmQgYSA2NC1iaXQgdmFsdWUg b24geDY0Lg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIERyMiBUaGUgdmFsdWUgdG8gd3JpdGUgdG8g RHIyLg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIFRoZSB2YWx1ZSB3cml0dGVuIHRvIERlYnVnIFJl Z2lzdGVyIDINCj4gKERSMikuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVE4NCj4gPiArRUZJ QVBJDQo+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJBc21Xcml0ZURyMiAoDQo+ID4gKyAgVUlOVE4g IERyMg0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIG1Vbml0VGVzdEhvc3RCYXNlTGliRHJbMl0g PSBEcjI7DQo+ID4gKyAgcmV0dXJuIERyMjsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4g KyAgV3JpdGVzIGEgdmFsdWUgdG8gRGVidWcgUmVnaXN0ZXIgMyAoRFIzKS4NCj4gPiArDQo+ID4g KyAgV3JpdGVzIGFuZCByZXR1cm5zIGEgbmV3IHZhbHVlIHRvIERSMy4gVGhpcw0KPiBmdW5jdGlv biBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ICsgIElBLTMyIGFuZCB4NjQuIFRoaXMgd3JpdGVz IGEgMzItYml0IHZhbHVlIG9uIElBLTMyDQo+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiB4NjQuDQo+ ID4gKw0KPiA+ICsgIEBwYXJhbSAgRHIzIFRoZSB2YWx1ZSB0byB3cml0ZSB0byBEcjMuDQo+ID4g Kw0KPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gdG8gRGVidWcgUmVnaXN0ZXIgMw0K PiAoRFIzKS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5UTg0KPiA+ICtFRklBUEkNCj4gPiAr VW5pdFRlc3RIb3N0QmFzZUxpYkFzbVdyaXRlRHIzICgNCj4gPiArICBVSU5UTiAgRHIzDQo+ID4g KyAgKQ0KPiA+ICt7DQo+ID4gKyAgbVVuaXRUZXN0SG9zdEJhc2VMaWJEclszXSA9IERyMzsNCj4g PiArICByZXR1cm4gRHIzOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBXcml0ZXMg YSB2YWx1ZSB0byBEZWJ1ZyBSZWdpc3RlciA0IChEUjQpLg0KPiA+ICsNCj4gPiArICBXcml0ZXMg YW5kIHJldHVybnMgYSBuZXcgdmFsdWUgdG8gRFI0LiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkg YXZhaWxhYmxlIG9uDQo+ID4gKyAgSUEtMzIgYW5kIHg2NC4gVGhpcyB3cml0ZXMgYSAzMi1iaXQg dmFsdWUgb24gSUEtMzINCj4gYW5kIGEgNjQtYml0IHZhbHVlIG9uIHg2NC4NCj4gPiArDQo+ID4g KyAgQHBhcmFtICBEcjQgVGhlIHZhbHVlIHRvIHdyaXRlIHRvIERyNC4NCj4gPiArDQo+ID4gKyAg QHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbiB0byBEZWJ1ZyBSZWdpc3RlciA0DQo+IChEUjQpLg0K PiA+ICsNCj4gPiArKiovDQo+ID4gK1VJTlRODQo+ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVzdEhv c3RCYXNlTGliQXNtV3JpdGVEcjQgKA0KPiA+ICsgIFVJTlROICBEcjQNCj4gPiArICApDQo+ID4g K3sNCj4gPiArICBtVW5pdFRlc3RIb3N0QmFzZUxpYkRyWzRdID0gRHI0Ow0KPiA+ICsgIHJldHVy biBEcjQ7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFdyaXRlcyBhIHZhbHVlIHRv IERlYnVnIFJlZ2lzdGVyIDUgKERSNSkuDQo+ID4gKw0KPiA+ICsgIFdyaXRlcyBhbmQgcmV0dXJu cyBhIG5ldyB2YWx1ZSB0byBEUjUuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUg b24NCj4gPiArICBJQS0zMiBhbmQgeDY0LiBUaGlzIHdyaXRlcyBhIDMyLWJpdCB2YWx1ZSBvbiBJ QS0zMg0KPiBhbmQgYSA2NC1iaXQgdmFsdWUgb24geDY0Lg0KPiA+ICsNCj4gPiArICBAcGFyYW0g IERyNSBUaGUgdmFsdWUgdG8gd3JpdGUgdG8gRHI1Lg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIFRo ZSB2YWx1ZSB3cml0dGVuIHRvIERlYnVnIFJlZ2lzdGVyIDUNCj4gKERSNSkuDQo+ID4gKw0KPiA+ ICsqKi8NCj4gPiArVUlOVE4NCj4gPiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJB c21Xcml0ZURyNSAoDQo+ID4gKyAgVUlOVE4gIERyNQ0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsg IG1Vbml0VGVzdEhvc3RCYXNlTGliRHJbNV0gPSBEcjU7DQo+ID4gKyAgcmV0dXJuIERyNTsNCj4g PiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgV3JpdGVzIGEgdmFsdWUgdG8gRGVidWcgUmVn aXN0ZXIgNiAoRFI2KS4NCj4gPiArDQo+ID4gKyAgV3JpdGVzIGFuZCByZXR1cm5zIGEgbmV3IHZh bHVlIHRvIERSNi4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ICsg IElBLTMyIGFuZCB4NjQuIFRoaXMgd3JpdGVzIGEgMzItYml0IHZhbHVlIG9uIElBLTMyDQo+IGFu ZCBhIDY0LWJpdCB2YWx1ZSBvbiB4NjQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgRHI2IFRoZSB2 YWx1ZSB0byB3cml0ZSB0byBEcjYuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIHdy aXR0ZW4gdG8gRGVidWcgUmVnaXN0ZXIgNg0KPiAoRFI2KS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ ICtVSU5UTg0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVdyaXRlRHI2 ICgNCj4gPiArICBVSU5UTiAgRHI2DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgbVVuaXRUZXN0 SG9zdEJhc2VMaWJEcls2XSA9IERyNjsNCj4gPiArICByZXR1cm4gRHI2Ow0KPiA+ICt9DQo+ID4g Kw0KPiA+ICsvKioNCj4gPiArICBXcml0ZXMgYSB2YWx1ZSB0byBEZWJ1ZyBSZWdpc3RlciA3IChE UjcpLg0KPiA+ICsNCj4gPiArICBXcml0ZXMgYW5kIHJldHVybnMgYSBuZXcgdmFsdWUgdG8gRFI3 LiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gKyAgSUEtMzIgYW5k IHg2NC4gVGhpcyB3cml0ZXMgYSAzMi1iaXQgdmFsdWUgb24gSUEtMzINCj4gYW5kIGEgNjQtYml0 IHZhbHVlIG9uIHg2NC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBEcjcgVGhlIHZhbHVlIHRvIHdy aXRlIHRvIERyNy4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbiB0byBE ZWJ1ZyBSZWdpc3RlciA3DQo+IChEUjcpLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1VJTlRODQo+ ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVzdEhvc3RCYXNlTGliQXNtV3JpdGVEcjcgKA0KPiA+ICsg IFVJTlROICBEcjcNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBtVW5pdFRlc3RIb3N0QmFzZUxp YkRyWzddID0gRHI3Ow0KPiA+ICsgIHJldHVybiBEcjc7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIENvZGUgU2VnbWVudCBSZWdpc3Rl cg0KPiAoQ1MpLg0KPiA+ICsNCj4gPiArICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2 YWx1ZSBvZiBDUy4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ICsg IElBLTMyIGFuZCB4NjQuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIGN1cnJlbnQgdmFsdWUg b2YgQ1MuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVDE2DQo+ID4gK0VGSUFQSQ0KPiA+ICtV bml0VGVzdEhvc3RCYXNlTGliQXNtUmVhZENzICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ ICt7DQo+ID4gKyAgcmV0dXJuDQo+IG1Vbml0VGVzdEhvc3RCYXNlTGliU2VnbWVudFtVTklUX1RF U1RfSE9TVF9CQVNFX0xJQl9TRUdNDQo+IEVOVF9DU107DQo+ID4gK30NCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIERhdGEgU2VnbWVudCBSZWdpc3Rl cg0KPiAoRFMpLg0KPiA+ICsNCj4gPiArICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2 YWx1ZSBvZiBEUy4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ICsg IElBLTMyIGFuZCB4NjQuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIGN1cnJlbnQgdmFsdWUg b2YgRFMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVDE2DQo+ID4gK0VGSUFQSQ0KPiA+ICtV bml0VGVzdEhvc3RCYXNlTGliQXNtUmVhZERzICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ ICt7DQo+ID4gKyAgcmV0dXJuDQo+IG1Vbml0VGVzdEhvc3RCYXNlTGliU2VnbWVudFtVTklUX1RF U1RfSE9TVF9CQVNFX0xJQl9TRUdNDQo+IEVOVF9EU107DQo+ID4gK30NCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIEV4dHJhIFNlZ21lbnQgUmVnaXN0 ZXINCj4gKEVTKS4NCj4gPiArDQo+ID4gKyAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQg dmFsdWUgb2YgRVMuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiAr ICBJQS0zMiBhbmQgeDY0Lg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIFRoZSBjdXJyZW50IHZhbHVl IG9mIEVTLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1VJTlQxNg0KPiA+ICtFRklBUEkNCj4gPiAr VW5pdFRlc3RIb3N0QmFzZUxpYkFzbVJlYWRFcyAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4g PiArew0KPiA+ICsgIHJldHVybg0KPiBtVW5pdFRlc3RIb3N0QmFzZUxpYlNlZ21lbnRbVU5JVF9U RVNUX0hPU1RfQkFTRV9MSUJfU0VHTQ0KPiBFTlRfRVNdOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsv KioNCj4gPiArICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBGUyBEYXRhIFNlZ21lbnQgUmVn aXN0ZXINCj4gKEZTKS4NCj4gPiArDQo+ID4gKyAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJl bnQgdmFsdWUgb2YgRlMuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4g PiArICBJQS0zMiBhbmQgeDY0Lg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIFRoZSBjdXJyZW50IHZh bHVlIG9mIEZTLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1VJTlQxNg0KPiA+ICtFRklBUEkNCj4g PiArVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVJlYWRGcyAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkN Cj4gPiArew0KPiA+ICsgIHJldHVybg0KPiBtVW5pdFRlc3RIb3N0QmFzZUxpYlNlZ21lbnRbVU5J VF9URVNUX0hPU1RfQkFTRV9MSUJfU0VHTQ0KPiBFTlRfRlNdOw0KPiA+ICt9DQo+ID4gKw0KPiA+ ICsvKioNCj4gPiArICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBHUyBEYXRhIFNlZ21lbnQg UmVnaXN0ZXINCj4gKEdTKS4NCj4gPiArDQo+ID4gKyAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1 cnJlbnQgdmFsdWUgb2YgR1MuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24N Cj4gPiArICBJQS0zMiBhbmQgeDY0Lg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIFRoZSBjdXJyZW50 IHZhbHVlIG9mIEdTLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1VJTlQxNg0KPiA+ICtFRklBUEkN Cj4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVJlYWRHcyAoDQo+ID4gKyAgVk9JRA0KPiA+ICsg ICkNCj4gPiArew0KPiA+ICsgIHJldHVybg0KPiBtVW5pdFRlc3RIb3N0QmFzZUxpYlNlZ21lbnRb VU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfU0VHTQ0KPiBFTlRfR1NdOw0KPiA+ICt9DQo+ID4gKw0K PiA+ICsvKioNCj4gPiArICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBTdGFjayBTZWdtZW50 IFJlZ2lzdGVyDQo+IChTUykuDQo+ID4gKw0KPiA+ICsgIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBj dXJyZW50IHZhbHVlIG9mIFNTLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9u DQo+ID4gKyAgSUEtMzIgYW5kIHg2NC4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBUaGUgY3VycmVu dCB2YWx1ZSBvZiBTUy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5UMTYNCj4gPiArRUZJQVBJ DQo+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJBc21SZWFkU3MgKA0KPiA+ICsgIFZPSUQNCj4gPiAr ICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4NCj4gbVVuaXRUZXN0SG9zdEJhc2VMaWJTZWdtZW50 W1VOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1NFR00NCj4gRU5UX1NTXTsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArLyoqDQo+ID4gKyAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgVGFzayBSZWdpc3Rl ciAoVFIpLg0KPiA+ICsNCj4gPiArICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1 ZSBvZiBUUi4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ICsgIElB LTMyIGFuZCB4NjQuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIGN1cnJlbnQgdmFsdWUgb2Yg VFIuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVDE2DQo+ID4gK0VGSUFQSQ0KPiA+ICtVbml0 VGVzdEhvc3RCYXNlTGliQXNtUmVhZFRyICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7 DQo+ID4gKyAgcmV0dXJuDQo+IG1Vbml0VGVzdEhvc3RCYXNlTGliU2VnbWVudFtVTklUX1RFU1Rf SE9TVF9CQVNFX0xJQl9TRUdNDQo+IEVOVF9UUl07DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0K PiA+ICsgIFJlYWRzIHRoZSBjdXJyZW50IEdsb2JhbCBEZXNjcmlwdG9yIFRhYmxlDQo+IFJlZ2lz dGVyKEdEVFIpIGRlc2NyaXB0b3IuDQo+ID4gKw0KPiA+ICsgIFJlYWRzIGFuZCByZXR1cm5zIHRo ZSBjdXJyZW50IEdEVFIgZGVzY3JpcHRvciBhbmQNCj4gcmV0dXJucyBpdCBpbiBHZHRyLiBUaGlz DQo+ID4gKyAgZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24gSUEtMzIgYW5kIHg2NC4NCj4g PiArDQo+ID4gKyAgSWYgR2R0ciBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+ICsNCj4gPiAr ICBAcGFyYW0gIEdkdHIgIFRoZSBwb2ludGVyIHRvIGEgR0RUUiBkZXNjcmlwdG9yLg0KPiA+ICsN Cj4gPiArKiovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0SG9zdEJhc2VM aWJBc21SZWFkR2R0ciAoDQo+ID4gKyAgT1VUICAgICBJQTMyX0RFU0NSSVBUT1IgICAgICAgICAg ICpHZHRyDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgR2R0ciA9ICZtVW5pdFRlc3RIb3N0QmFz ZUxpYkdkdHI7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFdyaXRlcyB0aGUgY3Vy cmVudCBHbG9iYWwgRGVzY3JpcHRvciBUYWJsZSBSZWdpc3Rlcg0KPiAoR0RUUikgZGVzY3JpcHRv ci4NCj4gPiArDQo+ID4gKyAgV3JpdGVzIGFuZCB0aGUgY3VycmVudCBHRFRSIGRlc2NyaXB0b3Ig c3BlY2lmaWVkIGJ5DQo+IEdkdHIuIFRoaXMgZnVuY3Rpb24gaXMNCj4gPiArICBvbmx5IGF2YWls YWJsZSBvbiBJQS0zMiBhbmQgeDY0Lg0KPiA+ICsNCj4gPiArICBJZiBHZHRyIGlzIE5VTEwsIHRo ZW4gQVNTRVJUKCkuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgR2R0ciAgVGhlIHBvaW50ZXIgdG8g YSBHRFRSIGRlc2NyaXB0b3IuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVk9JRA0KPiA+ICtFRklB UEkNCj4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVdyaXRlR2R0ciAoDQo+ID4gKyAgSU4gICAg ICBDT05TVCBJQTMyX0RFU0NSSVBUT1IgICAgICpHZHRyDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4g KyAgQ29weU1lbSAoJm1Vbml0VGVzdEhvc3RCYXNlTGliR2R0ciwgR2R0ciwgc2l6ZW9mDQo+IChJ QTMyX0RFU0NSSVBUT1IpKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUmVhZHMg dGhlIGN1cnJlbnQgSW50ZXJydXB0IERlc2NyaXB0b3IgVGFibGUNCj4gUmVnaXN0ZXIoSURUUikg ZGVzY3JpcHRvci4NCj4gPiArDQo+ID4gKyAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQg SURUUiBkZXNjcmlwdG9yIGFuZA0KPiByZXR1cm5zIGl0IGluIElkdHIuIFRoaXMNCj4gPiArICBm dW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQgeDY0Lg0KPiA+ICsNCj4gPiAr ICBJZiBJZHRyIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAg SWR0ciAgVGhlIHBvaW50ZXIgdG8gYSBJRFRSIGRlc2NyaXB0b3IuDQo+ID4gKw0KPiA+ICsqKi8N Cj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVJlYWRJ ZHRyICgNCj4gPiArICBPVVQgICAgIElBMzJfREVTQ1JJUFRPUiAgICAgICAgICAgKklkdHINCj4g PiArICApDQo+ID4gK3sNCj4gPiArICBJZHRyID0gJm1Vbml0VGVzdEhvc3RCYXNlTGliSWR0cjsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgV3JpdGVzIHRoZSBjdXJyZW50IEludGVy cnVwdCBEZXNjcmlwdG9yIFRhYmxlDQo+IFJlZ2lzdGVyKElEVFIpIGRlc2NyaXB0b3IuDQo+ID4g Kw0KPiA+ICsgIFdyaXRlcyB0aGUgY3VycmVudCBJRFRSIGRlc2NyaXB0b3IgYW5kIHJldHVybnMg aXQNCj4gaW4gSWR0ci4gVGhpcyBmdW5jdGlvbiBpcw0KPiA+ICsgIG9ubHkgYXZhaWxhYmxlIG9u IElBLTMyIGFuZCB4NjQuDQo+ID4gKw0KPiA+ICsgIElmIElkdHIgaXMgTlVMTCwgdGhlbiBBU1NF UlQoKS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBJZHRyICBUaGUgcG9pbnRlciB0byBhIElEVFIg ZGVzY3JpcHRvci4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ ICtVbml0VGVzdEhvc3RCYXNlTGliQXNtV3JpdGVJZHRyICgNCj4gPiArICBJTiAgICAgIENPTlNU IElBMzJfREVTQ1JJUFRPUiAgICAgKklkdHINCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBDb3B5 TWVtICgmbVVuaXRUZXN0SG9zdEJhc2VMaWJJZHRyLCBJZHRyLCBzaXplb2YNCj4gKElBMzJfREVT Q1JJUFRPUikpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBSZWFkcyB0aGUgY3Vy cmVudCBMb2NhbCBEZXNjcmlwdG9yIFRhYmxlDQo+IFJlZ2lzdGVyKExEVFIpIHNlbGVjdG9yLg0K PiA+ICsNCj4gPiArICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCAxNi1iaXQgTERUUg0K PiBkZXNjcmlwdG9yIHZhbHVlLiBUaGlzIGZ1bmN0aW9uIGlzDQo+ID4gKyAgb25seSBhdmFpbGFi bGUgb24gSUEtMzIgYW5kIHg2NC4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBUaGUgY3VycmVudCBz ZWxlY3RvciBvZiBMRFQuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVDE2DQo+ID4gK0VGSUFQ SQ0KPiA+ICtVbml0VGVzdEhvc3RCYXNlTGliQXNtUmVhZExkdHIgKA0KPiA+ICsgIFZPSUQNCj4g PiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4NCj4gbVVuaXRUZXN0SG9zdEJhc2VMaWJTZWdt ZW50W1VOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1NFR00NCj4gRU5UX0xEVFJdOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICsvKioNCj4gPiArICBXcml0ZXMgdGhlIGN1cnJlbnQgTG9jYWwgRGVzY3JpcHRv ciBUYWJsZSBSZWdpc3Rlcg0KPiAoTERUUikgc2VsZWN0b3IuDQo+ID4gKw0KPiA+ICsgIFdyaXRl cyBhbmQgdGhlIGN1cnJlbnQgTERUUiBkZXNjcmlwdG9yIHNwZWNpZmllZCBieQ0KPiBMZHRyLiBU aGlzIGZ1bmN0aW9uIGlzDQo+ID4gKyAgb25seSBhdmFpbGFibGUgb24gSUEtMzIgYW5kIHg2NC4N Cj4gPiArDQo+ID4gKyAgQHBhcmFtICBMZHRyICAxNi1iaXQgTERUUiBzZWxlY3RvciB2YWx1ZS4N Cj4gPiArDQo+ID4gKyoqLw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVzdEhv c3RCYXNlTGliQXNtV3JpdGVMZHRyICgNCj4gPiArICBJTiAgICAgIFVJTlQxNiAgICAgICAgICAg ICAgICAgICAgTGR0cg0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsNCj4gbVVuaXRUZXN0SG9zdEJh c2VMaWJTZWdtZW50W1VOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1NFR00NCj4gRU5UX0xEVFJdID0g TGR0cjsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUmVhZHMgdGhlIGN1cnJlbnQg dmFsdWUgb2YgYSBQZXJmb3JtYW5jZSBDb3VudGVyDQo+IChQTUMpLg0KPiA+ICsNCj4gPiArICBS ZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBwZXJmb3JtYW5jZQ0KPiBjb3Vu dGVyIHNwZWNpZmllZCBieQ0KPiA+ICsgIEluZGV4LiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgYXZh aWxhYmxlIG9uIElBLTMyIGFuZA0KPiB4NjQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgSW5kZXgg VGhlIDMyLWJpdCBQZXJmb3JtYW5jZSBDb3VudGVyIGluZGV4DQo+IHRvIHJlYWQuDQo+ID4gKw0K PiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIG9mIHRoZSBQTUMgc3BlY2lmaWVkIGJ5IEluZGV4Lg0K PiA+ICsNCj4gPiArKiovDQo+ID4gK1VJTlQ2NA0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RI b3N0QmFzZUxpYkFzbVJlYWRQbWMgKA0KPiA+ICsgIElOICAgICAgVUlOVDMyICAgICAgICAgICAg ICAgICAgICBJbmRleA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIHJldHVybiAwOw0KPiA+ICt9 DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBTZXRzIHVwIGEgbW9uaXRvciBidWZmZXIgdGhhdCBp cyB1c2VkIGJ5DQo+IEFzbU13YWl0KCkuDQo+ID4gKw0KPiA+ICsgIEV4ZWN1dGVzIGEgTU9OSVRP UiBpbnN0cnVjdGlvbiB3aXRoIHRoZSByZWdpc3Rlcg0KPiBzdGF0ZSBzcGVjaWZpZWQgYnkgRWF4 LCBFY3gNCj4gPiArICBhbmQgRWR4LiBSZXR1cm5zIEVheC4gVGhpcyBmdW5jdGlvbiBpcyBvbmx5 DQo+IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQgeDY0Lg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIEVh eCBUaGUgdmFsdWUgdG8gbG9hZCBpbnRvIEVBWCBvciBSQVgNCj4gYmVmb3JlIGV4ZWN1dGluZyB0 aGUgTU9OSVRPUg0KPiA+ICsgICAgICAgICAgICAgIGluc3RydWN0aW9uLg0KPiA+ICsgIEBwYXJh bSAgRWN4IFRoZSB2YWx1ZSB0byBsb2FkIGludG8gRUNYIG9yIFJDWA0KPiBiZWZvcmUgZXhlY3V0 aW5nIHRoZSBNT05JVE9SDQo+ID4gKyAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24uDQo+ID4gKyAg QHBhcmFtICBFZHggVGhlIHZhbHVlIHRvIGxvYWQgaW50byBFRFggb3IgUkRYDQo+IGJlZm9yZSBl eGVjdXRpbmcgdGhlIE1PTklUT1INCj4gPiArICAgICAgICAgICAgICBpbnN0cnVjdGlvbi4NCj4g PiArDQo+ID4gKyAgQHJldHVybiBFYXgNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5UTg0KPiA+ ICtFRklBUEkNCj4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkFzbU1vbml0b3IgKA0KPiA+ICsgIElO ICAgICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBFYXgsDQo+ID4gKyAgSU4gICAgICBVSU5U TiAgICAgICAgICAgICAgICAgICAgIEVjeCwNCj4gPiArICBJTiAgICAgIFVJTlROICAgICAgICAg ICAgICAgICAgICAgRWR4DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIEVheDsNCj4g PiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgRXhlY3V0ZXMgYW4gTVdBSVQgaW5zdHJ1Y3Rp b24uDQo+ID4gKw0KPiA+ICsgIEV4ZWN1dGVzIGFuIE1XQUlUIGluc3RydWN0aW9uIHdpdGggdGhl IHJlZ2lzdGVyDQo+IHN0YXRlIHNwZWNpZmllZCBieSBFYXggYW5kDQo+ID4gKyAgRWN4LiBSZXR1 cm5zIEVheC4gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiBvbiBJQS0zMiBhbmQg eDY0Lg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIEVheCBUaGUgdmFsdWUgdG8gbG9hZCBpbnRvIEVB WCBvciBSQVgNCj4gYmVmb3JlIGV4ZWN1dGluZyB0aGUgTU9OSVRPUg0KPiA+ICsgICAgICAgICAg ICAgIGluc3RydWN0aW9uLg0KPiA+ICsgIEBwYXJhbSAgRWN4IFRoZSB2YWx1ZSB0byBsb2FkIGlu dG8gRUNYIG9yIFJDWA0KPiBiZWZvcmUgZXhlY3V0aW5nIHRoZSBNT05JVE9SDQo+ID4gKyAgICAg ICAgICAgICAgaW5zdHJ1Y3Rpb24uDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gRWF4DQo+ID4gKw0K PiA+ICsqKi8NCj4gPiArVUlOVE4NCj4gPiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0SG9zdEJhc2VM aWJBc21Nd2FpdCAoDQo+ID4gKyAgSU4gICAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIEVh eCwNCj4gPiArICBJTiAgICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgRWN4DQo+ID4gKyAg KQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIEVheDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ ID4gKyAgRXhlY3V0ZXMgYSBXQklOVkQgaW5zdHJ1Y3Rpb24uDQo+ID4gKw0KPiA+ICsgIEV4ZWN1 dGVzIGEgV0JJTlZEIGluc3RydWN0aW9uLiBUaGlzIGZ1bmN0aW9uIGlzDQo+IG9ubHkgYXZhaWxh YmxlIG9uIElBLTMyIGFuZA0KPiA+ICsgIHg2NC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtWT0lE DQo+ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVzdEhvc3RCYXNlTGliQXNtV2JpbnZkICgNCj4gPiAr ICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsg IEV4ZWN1dGVzIGEgSU5WRCBpbnN0cnVjdGlvbi4NCj4gPiArDQo+ID4gKyAgRXhlY3V0ZXMgYSBJ TlZEIGluc3RydWN0aW9uLiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkNCj4gYXZhaWxhYmxlIG9uIElB LTMyIGFuZA0KPiA+ICsgIHg2NC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtWT0lEDQo+ID4gK0VG SUFQSQ0KPiA+ICtVbml0VGVzdEhvc3RCYXNlTGliQXNtSW52ZCAoDQo+ID4gKyAgVk9JRA0KPiA+ ICsgICkNCj4gPiArew0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBGbHVzaGVzIGEg Y2FjaGUgbGluZSBmcm9tIGFsbCB0aGUgaW5zdHJ1Y3Rpb24gYW5kDQo+IGRhdGEgY2FjaGVzIHdp dGhpbiB0aGUNCj4gPiArICBjb2hlcmVuY3kgZG9tYWluIG9mIHRoZSBDUFUuDQo+ID4gKw0KPiA+ ICsgIEZsdXNoZWQgdGhlIGNhY2hlIGxpbmUgc3BlY2lmaWVkIGJ5IExpbmVhckFkZHJlc3MsDQo+ IGFuZCByZXR1cm5zIExpbmVhckFkZHJlc3MuDQo+ID4gKyAgVGhpcyBmdW5jdGlvbiBpcyBvbmx5 IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQgeDY0Lg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIExpbmVh ckFkZHJlc3MgVGhlIGFkZHJlc3Mgb2YgdGhlIGNhY2hlIGxpbmUNCj4gdG8gZmx1c2guIElmIHRo ZSBDUFUgaXMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgaW4gYSBwaHlzaWNhbCBhZGRy ZXNzaW5nDQo+IG1vZGUsIHRoZW4gTGluZWFyQWRkcmVzcyBpcyBhDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgIHBoeXNpY2FsIGFkZHJlc3MuIElmIHRoZSBDUFUNCj4gaXMgaW4gYSB2aXJ0 dWFsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3NpbmcgbW9kZSwgdGhlbg0K PiBMaW5lYXJBZGRyZXNzIGlzIGEgdmlydHVhbA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICBhZGRyZXNzLg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIExpbmVhckFkZHJlc3MuDQo+ID4gKyoq Lw0KPiA+ICtWT0lEICoNCj4gPiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJBc21G bHVzaENhY2hlTGluZSAoDQo+ID4gKyAgSU4gICAgICBWT0lEICAgICAgICAgICAgICAgICAgICAg ICpMaW5lYXJBZGRyZXNzDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIExpbmVhckFk ZHJlc3M7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEVuYWJsZXMgdGhlIDMyLWJp dCBwYWdpbmcgbW9kZSBvbiB0aGUgQ1BVLg0KPiA+ICsNCj4gPiArICBFbmFibGVzIHRoZSAzMi1i aXQgcGFnaW5nIG1vZGUgb24gdGhlIENQVS4gQ1IwLA0KPiBDUjMsIENSNCwgYW5kIHRoZSBwYWdl IHRhYmxlcw0KPiA+ICsgIG11c3QgYmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQgcHJpb3IgdG8gY2Fs bGluZyB0aGlzDQo+IHNlcnZpY2UuIFRoaXMgZnVuY3Rpb24NCj4gPiArICBhc3N1bWVzIHRoZSBj dXJyZW50IGV4ZWN1dGlvbiBtb2RlIGlzIDMyLWJpdA0KPiBwcm90ZWN0ZWQgbW9kZS4gVGhpcyBm dW5jdGlvbiBpcw0KPiA+ICsgIG9ubHkgYXZhaWxhYmxlIG9uIElBLTMyLiBBZnRlciB0aGUgMzIt Yml0IHBhZ2luZw0KPiBtb2RlIGlzIGVuYWJsZWQsIGNvbnRyb2wgaXMNCj4gPiArICB0cmFuc2Zl cnJlZCB0byB0aGUgZnVuY3Rpb24gc3BlY2lmaWVkIGJ5IEVudHJ5UG9pbnQNCj4gdXNpbmcgdGhl IG5ldyBzdGFjaw0KPiA+ICsgIHNwZWNpZmllZCBieSBOZXdTdGFjayBhbmQgcGFzc2luZyBpbiB0 aGUgcGFyYW1ldGVycw0KPiBzcGVjaWZpZWQgYnkgQ29udGV4dDEgYW5kDQo+ID4gKyAgQ29udGV4 dDIuIENvbnRleHQxIGFuZCBDb250ZXh0MiBhcmUgb3B0aW9uYWwgYW5kDQo+IG1heSBiZSBOVUxM LiBUaGUgZnVuY3Rpb24NCj4gPiArICBFbnRyeVBvaW50IG11c3QgbmV2ZXIgcmV0dXJuLg0KPiA+ ICsNCj4gPiArICBJZiB0aGUgY3VycmVudCBleGVjdXRpb24gbW9kZSBpcyBub3QgMzItYml0DQo+ IHByb3RlY3RlZCBtb2RlLCB0aGVuIEFTU0VSVCgpLg0KPiA+ICsgIElmIEVudHJ5UG9pbnQgaXMg TlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPiArICBJZiBOZXdTdGFjayBpcyBOVUxMLCB0aGVuIEFT U0VSVCgpLg0KPiA+ICsNCj4gPiArICBUaGVyZSBhcmUgYSBudW1iZXIgb2YgY29uc3RyYWludHMg dGhhdCBtdXN0IGJlDQo+IGZvbGxvd2VkIGJlZm9yZSBjYWxsaW5nIHRoaXMNCj4gPiArICBmdW5j dGlvbjoNCj4gPiArICAxKSAgSW50ZXJydXB0cyBtdXN0IGJlIGRpc2FibGVkLg0KPiA+ICsgIDIp ICBUaGUgY2FsbGVyIG11c3QgYmUgaW4gMzItYml0IHByb3RlY3RlZCBtb2RlDQo+IHdpdGggZmxh dCBkZXNjcmlwdG9ycy4gVGhpcw0KPiA+ICsgICAgICBtZWFucyBhbGwgZGVzY3JpcHRvcnMgbXVz dCBoYXZlIGEgYmFzZSBvZiAwIGFuZA0KPiBhIGxpbWl0IG9mIDRHQi4NCj4gPiArICAzKSAgQ1Iw IGFuZCBDUjQgbXVzdCBiZSBjb21wYXRpYmxlIHdpdGggMzItYml0DQo+IHByb3RlY3RlZCBtb2Rl IHdpdGggZmxhdA0KPiA+ICsgICAgICBkZXNjcmlwdG9ycy4NCj4gPiArICA0KSAgQ1IzIG11c3Qg cG9pbnQgdG8gdmFsaWQgcGFnZSB0YWJsZXMgdGhhdCB3aWxsDQo+IGJlIHVzZWQgb25jZSB0aGUg dHJhbnNpdGlvbg0KPiA+ICsgICAgICBpcyBjb21wbGV0ZSwgYW5kIHRob3NlIHBhZ2UgdGFibGVz IG11c3QNCj4gZ3VhcmFudGVlIHRoYXQgdGhlIHBhZ2VzIGZvciB0aGlzDQo+ID4gKyAgICAgIGZ1 bmN0aW9uIGFuZCB0aGUgc3RhY2sgYXJlIGlkZW50aXR5IG1hcHBlZC4NCj4gPiArDQo+ID4gKyAg QHBhcmFtICBFbnRyeVBvaW50ICBBIHBvaW50ZXIgdG8gZnVuY3Rpb24gdG8gY2FsbA0KPiB3aXRo IHRoZSBuZXcgc3RhY2sgYWZ0ZXINCj4gPiArICAgICAgICAgICAgICAgICAgICAgIHBhZ2luZyBp cyBlbmFibGVkLg0KPiA+ICsgIEBwYXJhbSAgQ29udGV4dDEgICAgQSBwb2ludGVyIHRvIHRoZSBj b250ZXh0IHRvDQo+IHBhc3MgaW50byB0aGUgRW50cnlQb2ludA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgZnVuY3Rpb24gYXMgdGhlIGZpcnN0IHBhcmFtZXRlcg0KPiBhZnRlciBwYWdpbmcg aXMgZW5hYmxlZC4NCj4gPiArICBAcGFyYW0gIENvbnRleHQyICAgIEEgcG9pbnRlciB0byB0aGUg Y29udGV4dCB0bw0KPiBwYXNzIGludG8gdGhlIEVudHJ5UG9pbnQNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgIGZ1bmN0aW9uIGFzIHRoZSBzZWNvbmQNCj4gcGFyYW1ldGVyIGFmdGVyIHBhZ2lu ZyBpcyBlbmFibGVkLg0KPiA+ICsgIEBwYXJhbSAgTmV3U3RhY2sgICAgQSBwb2ludGVyIHRvIHRo ZSBuZXcgc3RhY2sgdG8NCj4gdXNlIGZvciB0aGUgRW50cnlQb2ludA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgZnVuY3Rpb24gYWZ0ZXIgcGFnaW5nIGlzDQo+IGVuYWJsZWQuDQo+ID4gKw0K PiA+ICsqKi8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RIb3N0QmFzZUxp YkFzbUVuYWJsZVBhZ2luZzMyICgNCj4gPiArICBJTiAgICAgIFNXSVRDSF9TVEFDS19FTlRSWV9Q T0lOVCAgRW50cnlQb2ludCwNCj4gPiArICBJTiAgICAgIFZPSUQgICAgICAgICAgICAgICAgICAg ICAgKkNvbnRleHQxLA0KPiBPUFRJT05BTA0KPiA+ICsgIElOICAgICAgVk9JRCAgICAgICAgICAg ICAgICAgICAgICAqQ29udGV4dDIsDQo+IE9QVElPTkFMDQo+ID4gKyAgSU4gICAgICBWT0lEICAg ICAgICAgICAgICAgICAgICAgICpOZXdTdGFjaw0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVu dHJ5UG9pbnQgKENvbnRleHQxLCBDb250ZXh0Mik7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0K PiA+ICsgIERpc2FibGVzIHRoZSAzMi1iaXQgcGFnaW5nIG1vZGUgb24gdGhlIENQVS4NCj4gPiAr DQo+ID4gKyAgRGlzYWJsZXMgdGhlIDMyLWJpdCBwYWdpbmcgbW9kZSBvbiB0aGUgQ1BVIGFuZA0K PiByZXR1cm5zIHRvIDMyLWJpdCBwcm90ZWN0ZWQNCj4gPiArICBtb2RlLiBUaGlzIGZ1bmN0aW9u IGFzc3VtZXMgdGhlIGN1cnJlbnQgZXhlY3V0aW9uDQo+IG1vZGUgaXMgMzItcGFnZWQgcHJvdGVj dGVkDQo+ID4gKyAgbW9kZS4gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbiBJQS0z Mi4NCj4gQWZ0ZXIgdGhlIDMyLWJpdCBwYWdpbmcgbW9kZQ0KPiA+ICsgIGlzIGRpc2FibGVkLCBj b250cm9sIGlzIHRyYW5zZmVycmVkIHRvIHRoZSBmdW5jdGlvbg0KPiBzcGVjaWZpZWQgYnkgRW50 cnlQb2ludA0KPiA+ICsgIHVzaW5nIHRoZSBuZXcgc3RhY2sgc3BlY2lmaWVkIGJ5IE5ld1N0YWNr IGFuZA0KPiBwYXNzaW5nIGluIHRoZSBwYXJhbWV0ZXJzDQo+ID4gKyAgc3BlY2lmaWVkIGJ5IENv bnRleHQxIGFuZCBDb250ZXh0Mi4gQ29udGV4dDEgYW5kDQo+IENvbnRleHQyIGFyZSBvcHRpb25h bCBhbmQNCj4gPiArICBtYXkgYmUgTlVMTC4gVGhlIGZ1bmN0aW9uIEVudHJ5UG9pbnQgbXVzdCBu ZXZlcg0KPiByZXR1cm4uDQo+ID4gKw0KPiA+ICsgIElmIHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBt b2RlIGlzIG5vdCAzMi1iaXQgcGFnZWQNCj4gbW9kZSwgdGhlbiBBU1NFUlQoKS4NCj4gPiArICBJ ZiBFbnRyeVBvaW50IGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4gKyAgSWYgTmV3U3RhY2sg aXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPiArDQo+ID4gKyAgVGhlcmUgYXJlIGEgbnVtYmVy IG9mIGNvbnN0cmFpbnRzIHRoYXQgbXVzdCBiZQ0KPiBmb2xsb3dlZCBiZWZvcmUgY2FsbGluZyB0 aGlzDQo+ID4gKyAgZnVuY3Rpb246DQo+ID4gKyAgMSkgIEludGVycnVwdHMgbXVzdCBiZSBkaXNh YmxlZC4NCj4gPiArICAyKSAgVGhlIGNhbGxlciBtdXN0IGJlIGluIDMyLWJpdCBwYWdlZCBtb2Rl Lg0KPiA+ICsgIDMpICBDUjAsIENSMywgYW5kIENSNCBtdXN0IGJlIGNvbXBhdGlibGUgd2l0aCAz Mi0NCj4gYml0IHBhZ2VkIG1vZGUuDQo+ID4gKyAgNCkgIENSMyBtdXN0IHBvaW50IHRvIHZhbGlk IHBhZ2UgdGFibGVzIHRoYXQNCj4gZ3VhcmFudGVlIHRoYXQgdGhlIHBhZ2VzIGZvcg0KPiA+ICsg ICAgICB0aGlzIGZ1bmN0aW9uIGFuZCB0aGUgc3RhY2sgYXJlIGlkZW50aXR5DQo+IG1hcHBlZC4N Cj4gPiArDQo+ID4gKyAgQHBhcmFtICBFbnRyeVBvaW50ICBBIHBvaW50ZXIgdG8gZnVuY3Rpb24g dG8gY2FsbA0KPiB3aXRoIHRoZSBuZXcgc3RhY2sgYWZ0ZXINCj4gPiArICAgICAgICAgICAgICAg ICAgICAgIHBhZ2luZyBpcyBkaXNhYmxlZC4NCj4gPiArICBAcGFyYW0gIENvbnRleHQxICAgIEEg cG9pbnRlciB0byB0aGUgY29udGV4dCB0bw0KPiBwYXNzIGludG8gdGhlIEVudHJ5UG9pbnQNCj4g PiArICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGFzIHRoZSBmaXJzdCBwYXJhbWV0ZXIN Cj4gYWZ0ZXIgcGFnaW5nIGlzIGRpc2FibGVkLg0KPiA+ICsgIEBwYXJhbSAgQ29udGV4dDIgICAg QSBwb2ludGVyIHRvIHRoZSBjb250ZXh0IHRvDQo+IHBhc3MgaW50byB0aGUgRW50cnlQb2ludA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYXMgdGhlIHNlY29uZA0KPiBwYXJh bWV0ZXIgYWZ0ZXIgcGFnaW5nIGlzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxl ZC4NCj4gPiArICBAcGFyYW0gIE5ld1N0YWNrICAgIEEgcG9pbnRlciB0byB0aGUgbmV3IHN0YWNr IHRvDQo+IHVzZSBmb3IgdGhlIEVudHJ5UG9pbnQNCj4gPiArICAgICAgICAgICAgICAgICAgICAg IGZ1bmN0aW9uIGFmdGVyIHBhZ2luZyBpcw0KPiBkaXNhYmxlZC4NCj4gPiArDQo+ID4gKyoqLw0K PiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVzdEhvc3RCYXNlTGliQXNtRGlzYWJs ZVBhZ2luZzMyICgNCj4gPiArICBJTiAgICAgIFNXSVRDSF9TVEFDS19FTlRSWV9QT0lOVCAgRW50 cnlQb2ludCwNCj4gPiArICBJTiAgICAgIFZPSUQgICAgICAgICAgICAgICAgICAgICAgKkNvbnRl eHQxLA0KPiBPUFRJT05BTA0KPiA+ICsgIElOICAgICAgVk9JRCAgICAgICAgICAgICAgICAgICAg ICAqQ29udGV4dDIsDQo+IE9QVElPTkFMDQo+ID4gKyAgSU4gICAgICBWT0lEICAgICAgICAgICAg ICAgICAgICAgICpOZXdTdGFjaw0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVudHJ5UG9pbnQg KENvbnRleHQxLCBDb250ZXh0Mik7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEVu YWJsZXMgdGhlIDY0LWJpdCBwYWdpbmcgbW9kZSBvbiB0aGUgQ1BVLg0KPiA+ICsNCj4gPiArICBF bmFibGVzIHRoZSA2NC1iaXQgcGFnaW5nIG1vZGUgb24gdGhlIENQVS4gQ1IwLA0KPiBDUjMsIENS NCwgYW5kIHRoZSBwYWdlIHRhYmxlcw0KPiA+ICsgIG11c3QgYmUgcHJvcGVybHkgaW5pdGlhbGl6 ZWQgcHJpb3IgdG8gY2FsbGluZyB0aGlzDQo+IHNlcnZpY2UuIFRoaXMgZnVuY3Rpb24NCj4gPiAr ICBhc3N1bWVzIHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBtb2RlIGlzIDMyLWJpdA0KPiBwcm90ZWN0 ZWQgbW9kZSB3aXRoIGZsYXQNCj4gPiArICBkZXNjcmlwdG9ycy4gVGhpcyBmdW5jdGlvbiBpcyBv bmx5IGF2YWlsYWJsZSBvbiBJQS0NCj4gMzIuIEFmdGVyIHRoZSA2NC1iaXQNCj4gPiArICBwYWdp bmcgbW9kZSBpcyBlbmFibGVkLCBjb250cm9sIGlzIHRyYW5zZmVycmVkIHRvDQo+IHRoZSBmdW5j dGlvbiBzcGVjaWZpZWQgYnkNCj4gPiArICBFbnRyeVBvaW50IHVzaW5nIHRoZSBuZXcgc3RhY2sg c3BlY2lmaWVkIGJ5DQo+IE5ld1N0YWNrIGFuZCBwYXNzaW5nIGluIHRoZQ0KPiA+ICsgIHBhcmFt ZXRlcnMgc3BlY2lmaWVkIGJ5IENvbnRleHQxIGFuZCBDb250ZXh0Mi4NCj4gQ29udGV4dDEgYW5k IENvbnRleHQyIGFyZQ0KPiA+ICsgIG9wdGlvbmFsIGFuZCBtYXkgYmUgMC4gVGhlIGZ1bmN0aW9u IEVudHJ5UG9pbnQgbXVzdA0KPiBuZXZlciByZXR1cm4uDQo+ID4gKw0KPiA+ICsgIElmIHRoZSBj dXJyZW50IGV4ZWN1dGlvbiBtb2RlIGlzIG5vdCAzMi1iaXQNCj4gcHJvdGVjdGVkIG1vZGUgd2l0 aCBmbGF0DQo+ID4gKyAgZGVzY3JpcHRvcnMsIHRoZW4gQVNTRVJUKCkuDQo+ID4gKyAgSWYgRW50 cnlQb2ludCBpcyAwLCB0aGVuIEFTU0VSVCgpLg0KPiA+ICsgIElmIE5ld1N0YWNrIGlzIDAsIHRo ZW4gQVNTRVJUKCkuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgQ3MgICAgICAgICAgVGhlIDE2LWJp dCBzZWxlY3RvciB0byBsb2FkIGluDQo+IHRoZSBDUyBiZWZvcmUgRW50cnlQb2ludA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgaXMgY2FsbGVkLiBUaGUgZGVzY3JpcHRvciBpbg0KPiB0aGUg R0RUIHRoYXQgdGhpcyBzZWxlY3Rvcg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgcmVmZXJl bmNlcyBtdXN0IGJlIHNldHVwIGZvcg0KPiBsb25nIG1vZGUuDQo+ID4gKyAgQHBhcmFtICBFbnRy eVBvaW50ICBUaGUgNjQtYml0IHZpcnR1YWwgYWRkcmVzcyBvZg0KPiB0aGUgZnVuY3Rpb24gdG8g Y2FsbCB3aXRoDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICB0aGUgbmV3IHN0YWNrIGFmdGVy IHBhZ2luZyBpcw0KPiBlbmFibGVkLg0KPiA+ICsgIEBwYXJhbSAgQ29udGV4dDEgICAgVGhlIDY0 LWJpdCB2aXJ0dWFsIGFkZHJlc3Mgb2YNCj4gdGhlIGNvbnRleHQgdG8gcGFzcyBpbnRvDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICB0aGUgRW50cnlQb2ludCBmdW5jdGlvbiBhcyB0aGUNCj4g Zmlyc3QgcGFyYW1ldGVyIGFmdGVyDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBwYWdpbmcg aXMgZW5hYmxlZC4NCj4gPiArICBAcGFyYW0gIENvbnRleHQyICAgIFRoZSA2NC1iaXQgdmlydHVh bCBhZGRyZXNzIG9mDQo+IHRoZSBjb250ZXh0IHRvIHBhc3MgaW50bw0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgdGhlIEVudHJ5UG9pbnQgZnVuY3Rpb24gYXMgdGhlDQo+IHNlY29uZCBwYXJh bWV0ZXIgYWZ0ZXINCj4gPiArICAgICAgICAgICAgICAgICAgICAgIHBhZ2luZyBpcyBlbmFibGVk Lg0KPiA+ICsgIEBwYXJhbSAgTmV3U3RhY2sgICAgVGhlIDY0LWJpdCB2aXJ0dWFsIGFkZHJlc3Mg b2YNCj4gdGhlIG5ldyBzdGFjayB0byB1c2UgZm9yDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICB0aGUgRW50cnlQb2ludCBmdW5jdGlvbiBhZnRlcg0KPiBwYWdpbmcgaXMgZW5hYmxlZC4NCj4g PiArDQo+ID4gKyoqLw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVzdEhvc3RC YXNlTGliQXNtRW5hYmxlUGFnaW5nNjQgKA0KPiA+ICsgIElOICAgICAgVUlOVDE2ICAgICAgICAg ICAgICAgICAgICBDcywNCj4gPiArICBJTiAgICAgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAg RW50cnlQb2ludCwNCj4gPiArICBJTiAgICAgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgQ29u dGV4dDEsDQo+IE9QVElPTkFMDQo+ID4gKyAgSU4gICAgICBVSU5UNjQgICAgICAgICAgICAgICAg ICAgIENvbnRleHQyLA0KPiBPUFRJT05BTA0KPiA+ICsgIElOICAgICAgVUlOVDY0ICAgICAgICAg ICAgICAgICAgICBOZXdTdGFjaw0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIFNXSVRDSF9TVEFD S19FTlRSWV9QT0lOVCAgTmV3RW50cnlQb2ludDsNCj4gPiArDQo+ID4gKyAgTmV3RW50cnlQb2lu dCA9DQo+IChTV0lUQ0hfU1RBQ0tfRU5UUllfUE9JTlQpKFVJTlROKShFbnRyeVBvaW50KTsNCj4g PiArICBOZXdFbnRyeVBvaW50ICgoVk9JRCAqKShVSU5UTilDb250ZXh0MSwgKFZPSUQNCj4gKiko VUlOVE4pQ29udGV4dDIpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBEaXNhYmxl cyB0aGUgNjQtYml0IHBhZ2luZyBtb2RlIG9uIHRoZSBDUFUuDQo+ID4gKw0KPiA+ICsgIERpc2Fi bGVzIHRoZSA2NC1iaXQgcGFnaW5nIG1vZGUgb24gdGhlIENQVSBhbmQNCj4gcmV0dXJucyB0byAz Mi1iaXQgcHJvdGVjdGVkDQo+ID4gKyAgbW9kZS4gVGhpcyBmdW5jdGlvbiBhc3N1bWVzIHRoZSBj dXJyZW50IGV4ZWN1dGlvbg0KPiBtb2RlIGlzIDY0LXBhZ2luZyBtb2RlLg0KPiA+ICsgIFRoaXMg ZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24geDY0LiBBZnRlciB0aGUNCj4gNjQtYml0IHBh Z2luZyBtb2RlIGlzDQo+ID4gKyAgZGlzYWJsZWQsIGNvbnRyb2wgaXMgdHJhbnNmZXJyZWQgdG8g dGhlIGZ1bmN0aW9uDQo+IHNwZWNpZmllZCBieSBFbnRyeVBvaW50DQo+ID4gKyAgdXNpbmcgdGhl IG5ldyBzdGFjayBzcGVjaWZpZWQgYnkgTmV3U3RhY2sgYW5kDQo+IHBhc3NpbmcgaW4gdGhlIHBh cmFtZXRlcnMNCj4gPiArICBzcGVjaWZpZWQgYnkgQ29udGV4dDEgYW5kIENvbnRleHQyLiBDb250 ZXh0MSBhbmQNCj4gQ29udGV4dDIgYXJlIG9wdGlvbmFsIGFuZA0KPiA+ICsgIG1heSBiZSAwLiBU aGUgZnVuY3Rpb24gRW50cnlQb2ludCBtdXN0IG5ldmVyDQo+IHJldHVybi4NCj4gPiArDQo+ID4g KyAgSWYgdGhlIGN1cnJlbnQgZXhlY3V0aW9uIG1vZGUgaXMgbm90IDY0LWJpdCBwYWdlZA0KPiBt b2RlLCB0aGVuIEFTU0VSVCgpLg0KPiA+ICsgIElmIEVudHJ5UG9pbnQgaXMgMCwgdGhlbiBBU1NF UlQoKS4NCj4gPiArICBJZiBOZXdTdGFjayBpcyAwLCB0aGVuIEFTU0VSVCgpLg0KPiA+ICsNCj4g PiArICBAcGFyYW0gIENzICAgICAgICAgIFRoZSAxNi1iaXQgc2VsZWN0b3IgdG8gbG9hZCBpbg0K PiB0aGUgQ1MgYmVmb3JlIEVudHJ5UG9pbnQNCj4gPiArICAgICAgICAgICAgICAgICAgICAgIGlz IGNhbGxlZC4gVGhlIGRlc2NyaXB0b3IgaW4NCj4gdGhlIEdEVCB0aGF0IHRoaXMgc2VsZWN0b3IN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZXMgbXVzdCBiZSBzZXR1cCBmb3IN Cj4gMzItYml0IHByb3RlY3RlZCBtb2RlLg0KPiA+ICsgIEBwYXJhbSAgRW50cnlQb2ludCAgVGhl IDY0LWJpdCB2aXJ0dWFsIGFkZHJlc3Mgb2YNCj4gdGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgdGhlIG5ldyBzdGFjayBhZnRlciBwYWdpbmcgaXMN Cj4gZGlzYWJsZWQuDQo+ID4gKyAgQHBhcmFtICBDb250ZXh0MSAgICBUaGUgNjQtYml0IHZpcnR1 YWwgYWRkcmVzcyBvZg0KPiB0aGUgY29udGV4dCB0byBwYXNzIGludG8NCj4gPiArICAgICAgICAg ICAgICAgICAgICAgIHRoZSBFbnRyeVBvaW50IGZ1bmN0aW9uIGFzIHRoZQ0KPiBmaXJzdCBwYXJh bWV0ZXIgYWZ0ZXINCj4gPiArICAgICAgICAgICAgICAgICAgICAgIHBhZ2luZyBpcyBkaXNhYmxl ZC4NCj4gPiArICBAcGFyYW0gIENvbnRleHQyICAgIFRoZSA2NC1iaXQgdmlydHVhbCBhZGRyZXNz IG9mDQo+IHRoZSBjb250ZXh0IHRvIHBhc3MgaW50bw0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgdGhlIEVudHJ5UG9pbnQgZnVuY3Rpb24gYXMgdGhlDQo+IHNlY29uZCBwYXJhbWV0ZXIgYWZ0 ZXINCj4gPiArICAgICAgICAgICAgICAgICAgICAgIHBhZ2luZyBpcyBkaXNhYmxlZC4NCj4gPiAr ICBAcGFyYW0gIE5ld1N0YWNrICAgIFRoZSA2NC1iaXQgdmlydHVhbCBhZGRyZXNzIG9mDQo+IHRo ZSBuZXcgc3RhY2sgdG8gdXNlIGZvcg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgdGhlIEVu dHJ5UG9pbnQgZnVuY3Rpb24gYWZ0ZXINCj4gcGFnaW5nIGlzIGRpc2FibGVkLg0KPiA+ICsNCj4g PiArKiovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJB c21EaXNhYmxlUGFnaW5nNjQgKA0KPiA+ICsgIElOICAgICAgVUlOVDE2ICAgICAgICAgICAgICAg ICAgICBDcywNCj4gPiArICBJTiAgICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgRW50cnlQ b2ludCwNCj4gPiArICBJTiAgICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgQ29udGV4dDEs DQo+IE9QVElPTkFMDQo+ID4gKyAgSU4gICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIENv bnRleHQyLA0KPiBPUFRJT05BTA0KPiA+ICsgIElOICAgICAgVUlOVDMyICAgICAgICAgICAgICAg ICAgICBOZXdTdGFjaw0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIFNXSVRDSF9TVEFDS19FTlRS WV9QT0lOVCAgTmV3RW50cnlQb2ludDsNCj4gPiArDQo+ID4gKyAgTmV3RW50cnlQb2ludCA9DQo+ IChTV0lUQ0hfU1RBQ0tfRU5UUllfUE9JTlQpKFVJTlROKShFbnRyeVBvaW50KTsNCj4gPiArICBO ZXdFbnRyeVBvaW50ICgoVk9JRCAqKShVSU5UTilDb250ZXh0MSwgKFZPSUQNCj4gKikoVUlOVE4p Q29udGV4dDIpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBSZXRyaWV2ZXMgdGhl IHByb3BlcnRpZXMgZm9yIDE2LWJpdCB0aHVuaw0KPiBmdW5jdGlvbnMuDQo+ID4gKw0KPiA+ICsg IENvbXB1dGVzIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgYW5kIHN0YWNrIGJlbG93IDFNQg0KPiBy ZXF1aXJlZCB0byB1c2UgdGhlDQo+ID4gKyAgQXNtUHJlcGFyZVRodW5rMTYoKSwgQXNtVGh1bmsx NigpIGFuZA0KPiBBc21QcmVwYXJlQW5kVGh1bmsxNigpIGZ1bmN0aW9ucy4gVGhpcw0KPiA+ICsg IGJ1ZmZlciBzaXplIGlzIHJldHVybmVkIGluIFJlYWxNb2RlQnVmZmVyU2l6ZSwgYW5kDQo+IHRo ZSBzdGFjayBzaXplIGlzIHJldHVybmVkDQo+ID4gKyAgaW4gRXh0cmFTdGFja1NpemUuIElmIHBh cmFtZXRlcnMgYXJlIHBhc3NlZCB0byB0aGUNCj4gMTYtYml0IHJlYWwgbW9kZSBjb2RlLA0KPiA+ ICsgIHRoZW4gdGhlIGFjdHVhbCBtaW5pbXVtIHN0YWNrIHNpemUgaXMNCj4gRXh0cmFTdGFja1Np emUgcGx1cyB0aGUgbWF4aW11bSBudW1iZXINCj4gPiArICBvZiBieXRlcyB0aGF0IG5lZWQgdG8g YmUgcGFzc2VkIHRvIHRoZSAxNi1iaXQgcmVhbA0KPiBtb2RlIGNvZGUuDQo+ID4gKw0KPiA+ICsg IElmIFJlYWxNb2RlQnVmZmVyU2l6ZSBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+ICsgIElm IEV4dHJhU3RhY2tTaXplIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4gKw0KPiA+ICsgIEBw YXJhbSAgUmVhbE1vZGVCdWZmZXJTaXplICBBIHBvaW50ZXIgdG8gdGhlIHNpemUNCj4gb2YgdGhl IGJ1ZmZlciBiZWxvdyAxTUINCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVx dWlyZWQgdG8gdXNlIHRoZSAxNi0NCj4gYml0IHRodW5rIGZ1bmN0aW9ucy4NCj4gPiArICBAcGFy YW0gIEV4dHJhU3RhY2tTaXplICAgICAgQSBwb2ludGVyIHRvIHRoZSBleHRyYQ0KPiBzaXplIG9m IHN0YWNrIGJlbG93IDFNQg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0 IHRoZSAxNi1iaXQgdGh1bmsNCj4gZnVuY3Rpb25zIHJlcXVpcmUgZm9yDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRlbXBvcmFyeSBzdG9yYWdlIGluDQo+IHRoZSB0cmFuc2l0 aW9uIHRvIGFuZCBmcm9tDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LWJp dCByZWFsIG1vZGUuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4g PiArVW5pdFRlc3RIb3N0QmFzZUxpYkFzbUdldFRodW5rMTZQcm9wZXJ0aWVzICgNCj4gPiArICBP VVQgICAgIFVJTlQzMg0KPiAqUmVhbE1vZGVCdWZmZXJTaXplLA0KPiA+ICsgIE9VVCAgICAgVUlO VDMyICAgICAgICAgICAgICAgICAgICAqRXh0cmFTdGFja1NpemUNCj4gPiArICApDQo+ID4gK3sN Cj4gPiArICAqUmVhbE1vZGVCdWZmZXJTaXplID0gMDsNCj4gPiArICAqRXh0cmFTdGFja1NpemUg ICAgID0gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUHJlcGFyZXMgYWxsIHN0 cnVjdHVyZXMgYSBjb2RlIHJlcXVpcmVkIHRvIHVzZQ0KPiBBc21UaHVuazE2KCkuDQo+ID4gKw0K PiA+ICsgIFByZXBhcmVzIGFsbCBzdHJ1Y3R1cmVzIGFuZCBjb2RlIHJlcXVpcmVkIHRvIHVzZQ0K PiBBc21UaHVuazE2KCkuDQo+ID4gKw0KPiA+ICsgIFRoaXMgaW50ZXJmYWNlIGlzIGxpbWl0ZWQg dG8gYmUgdXNlZCBpbiBlaXRoZXINCj4gcGh5c2ljYWwgbW9kZSBvciB2aXJ0dWFsIG1vZGVzIHdp dGggcGFnaW5nIGVuYWJsZWQgd2hlcmUNCj4gdGhlDQo+ID4gKyAgdmlydHVhbCB0byBwaHlzaWNh bCBtYXBwaW5ncyBmb3INCj4gVGh1bmtDb250ZXh0LlJlYWxNb2RlQnVmZmVyIGlzIG1hcHBlZCAx OjEuDQo+ID4gKw0KPiA+ICsgIElmIFRodW5rQ29udGV4dCBpcyBOVUxMLCB0aGVuIEFTU0VSVCgp Lg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIFRodW5rQ29udGV4dCAgQSBwb2ludGVyIHRvIHRoZSBj b250ZXh0DQo+IHN0cnVjdHVyZSB0aGF0IGRlc2NyaWJlcyB0aGUNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgMTYtYml0IHJlYWwgbW9kZSBjb2RlIHRvDQo+IGNhbGwuDQo+ID4gKw0KPiA+ ICsqKi8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkFz bVByZXBhcmVUaHVuazE2ICgNCj4gPiArICBJTiBPVVQgIFRIVU5LX0NPTlRFWFQgICAgICAgICAg ICAgKlRodW5rQ29udGV4dA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICt9DQo+ID4gKw0KPiA+ICsv KioNCj4gPiArICBUcmFuc2ZlcnMgY29udHJvbCB0byBhIDE2LWJpdCByZWFsIG1vZGUgZW50cnkg cG9pbnQNCj4gYW5kIHJldHVybnMgdGhlIHJlc3VsdHMuDQo+ID4gKw0KPiA+ICsgIFRyYW5zZmVy cyBjb250cm9sIHRvIGEgMTYtYml0IHJlYWwgbW9kZSBlbnRyeSBwb2ludA0KPiBhbmQgcmV0dXJu cyB0aGUgcmVzdWx0cy4NCj4gPiArICBBc21QcmVwYXJlVGh1bmsxNigpIG11c3QgYmUgY2FsbGVk IHdpdGgNCj4gVGh1bmtDb250ZXh0IGJlZm9yZSB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQuDQo+ID4g KyAgVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCB3aXRoIGludGVycnVwdHMNCj4gZGlzYWJs ZWQuDQo+ID4gKw0KPiA+ICsgIFRoZSByZWdpc3RlciBzdGF0ZSBmcm9tIHRoZSBSZWFsTW9kZVN0 YXRlIGZpZWxkIG9mDQo+IFRodW5rQ29udGV4dCBpcyByZXN0b3JlZCBqdXN0IHByaW9yDQo+ID4g KyAgdG8gY2FsbGluZyB0aGUgMTYtYml0IHJlYWwgbW9kZSBlbnRyeSBwb2ludC4gIFRoaXMNCj4g aW5jbHVkZXMgdGhlIEVGTEFHUyBmaWVsZCBvZiBSZWFsTW9kZVN0YXRlLA0KPiA+ICsgIHdoaWNo IGlzIHVzZWQgdG8gc2V0IHRoZSBpbnRlcnJ1cHQgc3RhdGUgd2hlbiBhIDE2LQ0KPiBiaXQgcmVh bCBtb2RlIGVudHJ5IHBvaW50IGlzIGNhbGxlZC4NCj4gPiArICBDb250cm9sIGlzIHRyYW5zZmVy cmVkIHRvIHRoZSAxNi1iaXQgcmVhbCBtb2RlDQo+IGVudHJ5IHBvaW50IHNwZWNpZmllZCBieSB0 aGUgQ1MgYW5kIEVpcCBmaWVsZHMgb2YNCj4gUmVhbE1vZGVTdGF0ZS4NCj4gPiArICBUaGUgc3Rh Y2sgaXMgaW5pdGlhbGl6ZWQgdG8gdGhlIFNTIGFuZCBFU1AgZmllbGRzDQo+IG9mIFJlYWxNb2Rl U3RhdGUuICBBbnkgcGFyYW1ldGVycyBwYXNzZWQgdG8NCj4gPiArICB0aGUgMTYtYml0IHJlYWwg bW9kZSBjb2RlIG11c3QgYmUgcG9wdWxhdGVkIGJ5IHRoZQ0KPiBjYWxsZXIgYXQgU1M6RVNQIHBy aW9yIHRvIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4NCj4gPiArICBUaGUgMTYtYml0IHJlYWwgbW9k ZSBlbnRyeSBwb2ludCBpcyBpbnZva2VkIHdpdGggYQ0KPiAxNi1iaXQgQ0FMTCBGQVIgaW5zdHJ1 Y3Rpb24sDQo+ID4gKyAgc28gd2hlbiBhY2Nlc3Npbmcgc3RhY2sgY29udGVudHMsIHRoZSAxNi1i aXQgcmVhbA0KPiBtb2RlIGNvZGUgbXVzdCBhY2NvdW50IGZvciB0aGUgMTYtYml0IHNlZ21lbnQN Cj4gPiArICBhbmQgMTYtYml0IG9mZnNldCBvZiB0aGUgcmV0dXJuIGFkZHJlc3MgdGhhdCB3ZXJl DQo+IHB1c2hlZCBvbnRvIHRoZSBzdGFjay4gVGhlIDE2LWJpdCByZWFsIG1vZGUgZW50cnkNCj4g PiArICBwb2ludCBtdXN0IGV4aXQgd2l0aCBhIFJFVEYgaW5zdHJ1Y3Rpb24uIFRoZQ0KPiByZWdp c3RlciBzdGF0ZSBpcyBjYXB0dXJlZCBpbnRvIFJlYWxNb2RlU3RhdGUNCj4gaW1tZWRpYXRlbHkN Cj4gPiArICBhZnRlciB0aGUgUkVURiBpbnN0cnVjdGlvbiBpcyBleGVjdXRlZC4NCj4gPiArDQo+ ID4gKyAgSWYgRUZMQUdTIHNwZWNpZmllcyBpbnRlcnJ1cHRzIGVuYWJsZWQsIG9yIGFueSBvZg0K PiB0aGUgMTYtYml0IHJlYWwgbW9kZSBjb2RlIGVuYWJsZXMgaW50ZXJydXB0cywNCj4gPiArICBv ciBhbnkgb2YgdGhlIDE2LWJpdCByZWFsIG1vZGUgY29kZSBtYWtlcyBhIFNXDQo+IGludGVycnVw dCwgdGhlbiB0aGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBtYWtpbmcNCj4gc3VyZQ0KPiA+ ICsgIHRoZSBJRFQgYXQgYWRkcmVzcyAwIGlzIGluaXRpYWxpemVkIHRvIGhhbmRsZSBhbnkNCj4g SFcgb3IgU1cgaW50ZXJydXB0cyB0aGF0IG1heSBvY2N1ciB3aGlsZSBpbiAxNi1iaXQgcmVhbA0K PiBtb2RlLg0KPiA+ICsNCj4gPiArICBJZiBFRkxBR1Mgc3BlY2lmaWVzIGludGVycnVwdHMgZW5h YmxlZCwgb3IgYW55IG9mDQo+IHRoZSAxNi1iaXQgcmVhbCBtb2RlIGNvZGUgZW5hYmxlcyBpbnRl cnJ1cHRzLA0KPiA+ICsgIHRoZW4gdGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgbWFraW5n IHN1cmUgdGhlDQo+IDgyNTkgUElDIGlzIGluIGEgc3RhdGUgY29tcGF0aWJsZSB3aXRoIDE2LWJp dCByZWFsIG1vZGUuDQo+ID4gKyAgVGhpcyBpbmNsdWRlcyB0aGUgYmFzZSB2ZWN0b3JzLCB0aGUg aW50ZXJydXB0DQo+IG1hc2tzLCBhbmQgdGhlIGVkZ2UvbGV2ZWwgdHJpZ2dlciBtb2RlLg0KPiA+ ICsNCj4gPiArICBJZiBUSFVOS19BVFRSSUJVVEVfQklHX1JFQUxfTU9ERSBpcyBzZXQgaW4gdGhl DQo+IFRodW5rQXR0cmlidXRlcyBmaWVsZCBvZiBUaHVua0NvbnRleHQsIHRoZW4gdGhlIHVzZXIN Cj4gY29kZQ0KPiA+ICsgIGlzIGludm9rZWQgaW4gYmlnIHJlYWwgbW9kZS4gIE90aGVyd2lzZSwg dGhlIHVzZXINCj4gY29kZSBpcyBpbnZva2VkIGluIDE2LWJpdCByZWFsIG1vZGUgd2l0aCA2NEtC IHNlZ21lbnQNCj4gbGltaXRzLg0KPiA+ICsNCj4gPiArICBJZiBuZWl0aGVyIFRIVU5LX0FUVFJJ QlVURV9ESVNBQkxFX0EyMF9NQVNLX0lOVF8xNQ0KPiBub3IgVEhVTktfQVRUUklCVVRFX0RJU0FC TEVfQTIwX01BU0tfS0JEX0NUUkwgYXJlIHNldCBpbg0KPiA+ICsgIFRodW5rQXR0cmlidXRlcywg dGhlbiBpdCBpcyBhc3N1bWVkIHRoYXQgdGhlIHVzZXINCj4gY29kZSBkaWQgbm90IGVuYWJsZSB0 aGUgQTIwIG1hc2ssIGFuZCBubyBhdHRlbXB0IGlzIG1hZGUNCj4gdG8NCj4gPiArICBkaXNhYmxl IHRoZSBBMjAgbWFzay4NCj4gPiArDQo+ID4gKyAgSWYgVEhVTktfQVRUUklCVVRFX0RJU0FCTEVf QTIwX01BU0tfSU5UXzE1IGlzIHNldA0KPiBhbmQgVEhVTktfQVRUUklCVVRFX0RJU0FCTEVfQTIw X01BU0tfS0JEX0NUUkwgaXMgY2xlYXINCj4gaW4NCj4gPiArICBUaHVua0F0dHJpYnV0ZXMsIHRo ZW4gYXR0ZW1wdCB0byB1c2UgdGhlIElOVCAxNQ0KPiBzZXJ2aWNlIHRvIGRpc2FibGUgdGhlIEEy MCBtYXNrLiAgSWYgdGhpcyBJTlQgMTUgY2FsbA0KPiBmYWlscywNCj4gPiArICB0aGVuIGF0dGVt cHQgdG8gZGlzYWJsZSB0aGUgQTIwIG1hc2sgYnkgZGlyZWN0bHkNCj4gYWNjZXNzaW5nIHRoZSA4 MDQyIGtleWJvYXJkIGNvbnRyb2xsZXIgSS9PIHBvcnRzLg0KPiA+ICsNCj4gPiArICBJZiBUSFVO S19BVFRSSUJVVEVfRElTQUJMRV9BMjBfTUFTS19JTlRfMTUgaXMgY2xlYXINCj4gYW5kIFRIVU5L X0FUVFJJQlVURV9ESVNBQkxFX0EyMF9NQVNLX0tCRF9DVFJMIGlzIHNldCBpbg0KPiA+ICsgIFRo dW5rQXR0cmlidXRlcywgdGhlbiBhdHRlbXB0IHRvIGRpc2FibGUgdGhlIEEyMA0KPiBtYXNrIGJ5 IGRpcmVjdGx5IGFjY2Vzc2luZyB0aGUgODA0MiBrZXlib2FyZCBjb250cm9sbGVyDQo+IEkvTyBw b3J0cy4NCj4gPiArDQo+ID4gKyAgSWYgVGh1bmtDb250ZXh0IGlzIE5VTEwsIHRoZW4gQVNTRVJU KCkuDQo+ID4gKyAgSWYgQXNtUHJlcGFyZVRodW5rMTYoKSB3YXMgbm90IHByZXZpb3VzbHkgY2Fs bGVkDQo+IHdpdGggVGh1bmtDb250ZXh0LCB0aGVuIEFTU0VSVCgpLg0KPiA+ICsgIElmIGJvdGgg VEhVTktfQVRUUklCVVRFX0RJU0FCTEVfQTIwX01BU0tfSU5UXzE1IGFuZA0KPiBUSFVOS19BVFRS SUJVVEVfRElTQUJMRV9BMjBfTUFTS19LQkRfQ1RSTCBhcmUgc2V0IGluDQo+ID4gKyAgVGh1bmtB dHRyaWJ1dGVzLCB0aGVuIEFTU0VSVCgpLg0KPiA+ICsNCj4gPiArICBUaGlzIGludGVyZmFjZSBp cyBsaW1pdGVkIHRvIGJlIHVzZWQgaW4gZWl0aGVyDQo+IHBoeXNpY2FsIG1vZGUgb3IgdmlydHVh bCBtb2RlcyB3aXRoIHBhZ2luZyBlbmFibGVkIHdoZXJlDQo+IHRoZQ0KPiA+ICsgIHZpcnR1YWwg dG8gcGh5c2ljYWwgbWFwcGluZ3MgZm9yDQo+IFRodW5rQ29udGV4dC5SZWFsTW9kZUJ1ZmZlciBh cmUgbWFwcGVkIDE6MS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBUaHVua0NvbnRleHQgIEEgcG9p bnRlciB0byB0aGUgY29udGV4dA0KPiBzdHJ1Y3R1cmUgdGhhdCBkZXNjcmliZXMgdGhlDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgIDE2LWJpdCByZWFsIG1vZGUgY29kZSB0bw0KPiBjYWxs Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0 SG9zdEJhc2VMaWJBc21UaHVuazE2ICgNCj4gPiArICBJTiBPVVQgIFRIVU5LX0NPTlRFWFQgICAg ICAgICAgICAgKlRodW5rQ29udGV4dA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICt9DQo+ID4gKw0K PiA+ICsvKioNCj4gPiArICBQcmVwYXJlcyBhbGwgc3RydWN0dXJlcyBhbmQgY29kZSBmb3IgYSAx Ni1iaXQgcmVhbA0KPiBtb2RlIHRodW5rLCB0cmFuc2ZlcnMNCj4gPiArICBjb250cm9sIHRvIGEg MTYtYml0IHJlYWwgbW9kZSBlbnRyeSBwb2ludCwgYW5kDQo+IHJldHVybnMgdGhlIHJlc3VsdHMu DQo+ID4gKw0KPiA+ICsgIFByZXBhcmVzIGFsbCBzdHJ1Y3R1cmVzIGFuZCBjb2RlIGZvciBhIDE2 LWJpdCByZWFsDQo+IG1vZGUgdGh1bmssIHRyYW5zZmVycw0KPiA+ICsgIGNvbnRyb2wgdG8gYSAx Ni1iaXQgcmVhbCBtb2RlIGVudHJ5IHBvaW50LCBhbmQNCj4gcmV0dXJucyB0aGUgcmVzdWx0cy4g SWYgdGhlDQo+ID4gKyAgY2FsbGVyIG9ubHkgbmVlZCB0byBwZXJmb3JtIGEgc2luZ2xlIDE2LWJp dCByZWFsDQo+IG1vZGUgdGh1bmssIHRoZW4gdGhpcw0KPiA+ICsgIHNlcnZpY2Ugc2hvdWxkIGJl IHVzZWQuIElmIHRoZSBjYWxsZXIgaW50ZW5kcyB0bw0KPiBtYWtlIG1vcmUgdGhhbiBvbmUgMTYt Yml0DQo+ID4gKyAgcmVhbCBtb2RlIHRodW5rLCB0aGVuIGl0IGlzIG1vcmUgZWZmaWNpZW50IGlm DQo+IEFzbVByZXBhcmVUaHVuazE2KCkgaXMgY2FsbGVkDQo+ID4gKyAgb25jZSBhbmQgQXNtVGh1 bmsxNigpIGNhbiBiZSBjYWxsZWQgZm9yIGVhY2ggMTYtYml0DQo+IHJlYWwgbW9kZSB0aHVuay4N Cj4gPiArDQo+ID4gKyAgVGhpcyBpbnRlcmZhY2UgaXMgbGltaXRlZCB0byBiZSB1c2VkIGluIGVp dGhlcg0KPiBwaHlzaWNhbCBtb2RlIG9yIHZpcnR1YWwgbW9kZXMgd2l0aCBwYWdpbmcgZW5hYmxl ZCB3aGVyZQ0KPiB0aGUNCj4gPiArICB2aXJ0dWFsIHRvIHBoeXNpY2FsIG1hcHBpbmdzIGZvcg0K PiBUaHVua0NvbnRleHQuUmVhbE1vZGVCdWZmZXIgaXMgbWFwcGVkIDE6MS4NCj4gPiArDQo+ID4g KyAgU2VlIEFzbVByZXBhcmVUaHVuazE2KCkgYW5kIEFzbVRodW5rMTYoKSBmb3IgdGhlDQo+IGRl dGFpbGVkIGRlc2NyaXB0aW9uIGFuZCBBU1NFUlQoKSBjb25kaXRpb25zLg0KPiA+ICsNCj4gPiAr ICBAcGFyYW0gIFRodW5rQ29udGV4dCAgQSBwb2ludGVyIHRvIHRoZSBjb250ZXh0DQo+IHN0cnVj dHVyZSB0aGF0IGRlc2NyaWJlcyB0aGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgMTYt Yml0IHJlYWwgbW9kZSBjb2RlIHRvDQo+IGNhbGwuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVk9J RA0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVByZXBhcmVBbmRUaHVu azE2ICgNCj4gPiArICBJTiBPVVQgIFRIVU5LX0NPTlRFWFQgICAgICAgICAgICAgKlRodW5rQ29u dGV4dA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBM b2FkIGdpdmVuIHNlbGVjdG9yIGludG8gVFIgcmVnaXN0ZXIuDQo+ID4gKw0KPiA+ICsgIEBwYXJh bVtpbl0gU2VsZWN0b3IgICAgIFRhc2sgc2VnbWVudCBzZWxlY3Rvcg0KPiA+ICsqKi8NCj4gPiAr Vk9JRA0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVdyaXRlVHIgKA0K PiA+ICsgIElOIFVJTlQxNiBTZWxlY3Rvcg0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsNCj4gbVVu aXRUZXN0SG9zdEJhc2VMaWJTZWdtZW50W1VOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1NFR00NCj4g RU5UX1RSXSA9IFNlbGVjdG9yOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBQZXJm b3JtcyBhIHNlcmlhbGl6aW5nIG9wZXJhdGlvbiBvbiBhbGwgbG9hZC1mcm9tLQ0KPiBtZW1vcnkg aW5zdHJ1Y3Rpb25zIHRoYXQNCj4gPiArICB3ZXJlIGlzc3VlZCBwcmlvciB0aGUgQXNtTGZlbmNl IGZ1bmN0aW9uLg0KPiA+ICsNCj4gPiArICBFeGVjdXRlcyBhIExGRU5DRSBpbnN0cnVjdGlvbi4g VGhpcyBmdW5jdGlvbiBpcw0KPiBvbmx5IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQgeDY0Lg0KPiA+ ICsNCj4gPiArKiovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0SG9zdEJh c2VMaWJBc21MZmVuY2UgKA0KPiA+ICsgIFZPSUQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArfQ0K PiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUGF0Y2ggdGhlIGltbWVkaWF0ZSBvcGVyYW5kIG9mIGFu IElBMzIgb3IgWDY0DQo+IGluc3RydWN0aW9uIHN1Y2ggdGhhdCB0aGUgYnl0ZSwNCj4gPiArICB3 b3JkLCBkd29yZCBvciBxd29yZCBvcGVyYW5kIGlzIGVuY29kZWQgYXQgdGhlIGVuZA0KPiBvZiB0 aGUgaW5zdHJ1Y3Rpb24ncw0KPiA+ICsgIGJpbmFyeSByZXByZXNlbnRhdGlvbi4NCj4gPiArDQo+ ID4gKyAgVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgdXNlZCB0byB1cGRhdGUgb2JqZWN0IGNvZGUN Cj4gdGhhdCB3YXMgY29tcGlsZWQgd2l0aA0KPiA+ICsgIE5BU00gZnJvbSBhc3NlbWJseSBzb3Vy Y2UgY29kZS4gRXhhbXBsZToNCj4gPiArDQo+ID4gKyAgTkFTTSBzb3VyY2UgY29kZToNCj4gPiAr DQo+ID4gKyAgICAgICAgbW92ICAgICBlYXgsIHN0cmljdCBkd29yZCAwIDsgdGhlIGltbTMyIHpl cm8NCj4gb3BlcmFuZCB3aWxsIGJlIHBhdGNoZWQNCj4gPiArICAgIEFTTV9QRlgoZ1BhdGNoQ3Iz KToNCj4gPiArICAgICAgICBtb3YgICAgIGNyMywgZWF4DQo+ID4gKw0KPiA+ICsgIEMgc291cmNl IGNvZGU6DQo+ID4gKw0KPiA+ICsgICAgWDg2X0FTU0VNQkxZX1BBVENIX0xBQkVMIGdQYXRjaENy MzsNCj4gPiArICAgIFBhdGNoSW5zdHJ1Y3Rpb25YODYgKGdQYXRjaENyMywgQXNtUmVhZENyMyAo KSwNCj4gNCk7DQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtvdXRdIEluc3RydWN0aW9uRW5kICBQb2lu dGVyIHJpZ2h0IHBhc3QgdGhlDQo+IGluc3RydWN0aW9uIHRvIHBhdGNoLiBUaGUNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1tZWRpYXRlIG9wZXJhbmQgdG8NCj4gcGF0Y2gg aXMgZXhwZWN0ZWQgdG8NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJp c2UgdGhlIHRyYWlsaW5nDQo+IGJ5dGVzIG9mIHRoZSBpbnN0cnVjdGlvbi4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgSWYgSW5zdHJ1Y3Rpb25FbmQgaXMNCj4gY2xvc2VyIHRv IGFkZHJlc3MgMCB0aGFuDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVl U2l6ZSBwZXJtaXRzLCB0aGVuDQo+IEFTU0VSVCgpLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5d IFBhdGNoVmFsdWUgICAgICAgVGhlIGNvbnN0YW50IHRvIHdyaXRlDQo+IHRvIHRoZSBpbW1lZGlh dGUgb3BlcmFuZC4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGNhbGxl ciBpcw0KPiByZXNwb25zaWJsZSBmb3IgZW5zdXJpbmcgdGhhdA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQYXRjaFZhbHVlIGNhbiBiZQ0KPiByZXByZXNlbnRlZCBpbiB0aGUg Ynl0ZSwgd29yZCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHdvcmQgb3Ig cXdvcmQgb3BlcmFuZA0KPiAoYXMgaW5kaWNhdGVkIHRocm91Z2gNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgVmFsdWVTaXplKTsgb3RoZXJ3aXNlDQo+IEFTU0VSVCgpLg0KPiA+ ICsNCj4gPiArICBAcGFyYW1baW5dIFZhbHVlU2l6ZSAgICAgICAgVGhlIHNpemUgb2YgdGhlIG9w ZXJhbmQNCj4gaW4gYnl0ZXM7IG11c3QgYmUgMSwgMiwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgNCwgb3IgOC4gQVNTRVJUKCkNCj4gb3RoZXJ3aXNlLg0KPiA+ICsqKi8NCj4g PiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYlBhdGNoSW5zdHJ1 Y3Rpb25YODYgKA0KPiA+ICsgIE9VVCBYODZfQVNTRU1CTFlfUEFUQ0hfTEFCRUwgKkluc3RydWN0 aW9uRW5kLA0KPiA+ICsgIElOICBVSU5UNjQgICAgICAgICAgICAgICAgICAgUGF0Y2hWYWx1ZSwN Cj4gPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgIFZhbHVlU2l6ZQ0KPiA+ICsgICkN Cj4gPiArew0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBSZXRyaWV2ZXMgQ1BVSUQg aW5mb3JtYXRpb24uDQo+ID4gKw0KPiA+ICsgIEV4ZWN1dGVzIHRoZSBDUFVJRCBpbnN0cnVjdGlv biB3aXRoIEVBWCBzZXQgdG8gdGhlDQo+IHZhbHVlIHNwZWNpZmllZCBieSBJbmRleC4NCj4gPiAr ICBUaGlzIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zIEluZGV4Lg0KPiA+ICsgIElmIEVheCBpcyBu b3QgTlVMTCwgdGhlbiB0aGUgdmFsdWUgb2YgRUFYIGFmdGVyDQo+IENQVUlEIGlzIHJldHVybmVk IGluIEVheC4NCj4gPiArICBJZiBFYnggaXMgbm90IE5VTEwsIHRoZW4gdGhlIHZhbHVlIG9mIEVC WCBhZnRlcg0KPiBDUFVJRCBpcyByZXR1cm5lZCBpbiBFYnguDQo+ID4gKyAgSWYgRWN4IGlzIG5v dCBOVUxMLCB0aGVuIHRoZSB2YWx1ZSBvZiBFQ1ggYWZ0ZXINCj4gQ1BVSUQgaXMgcmV0dXJuZWQg aW4gRWN4Lg0KPiA+ICsgIElmIEVkeCBpcyBub3QgTlVMTCwgdGhlbiB0aGUgdmFsdWUgb2YgRURY IGFmdGVyDQo+IENQVUlEIGlzIHJldHVybmVkIGluIEVkeC4NCj4gPiArICBUaGlzIGZ1bmN0aW9u IGlzIG9ubHkgYXZhaWxhYmxlIG9uIElBLTMyIGFuZCB4NjQuDQo+ID4gKw0KPiA+ICsgIEBwYXJh bSAgSW5kZXggVGhlIDMyLWJpdCB2YWx1ZSB0byBsb2FkIGludG8gRUFYDQo+IHByaW9yIHRvIGlu dm9raW5nIHRoZSBDUFVJRA0KPiA+ICsgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24uDQo+ID4g KyAgQHBhcmFtICBFYXggICBUaGUgcG9pbnRlciB0byB0aGUgMzItYml0IEVBWCB2YWx1ZQ0KPiBy ZXR1cm5lZCBieSB0aGUgQ1BVSUQNCj4gPiArICAgICAgICAgICAgICAgIGluc3RydWN0aW9uLiBU aGlzIGlzIGFuIG9wdGlvbmFsDQo+IHBhcmFtZXRlciB0aGF0IG1heSBiZSBOVUxMLg0KPiA+ICsg IEBwYXJhbSAgRWJ4ICAgVGhlIHBvaW50ZXIgdG8gdGhlIDMyLWJpdCBFQlggdmFsdWUNCj4gcmV0 dXJuZWQgYnkgdGhlIENQVUlEDQo+ID4gKyAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbi4gVGhp cyBpcyBhbiBvcHRpb25hbA0KPiBwYXJhbWV0ZXIgdGhhdCBtYXkgYmUgTlVMTC4NCj4gPiArICBA cGFyYW0gIEVjeCAgIFRoZSBwb2ludGVyIHRvIHRoZSAzMi1iaXQgRUNYIHZhbHVlDQo+IHJldHVy bmVkIGJ5IHRoZSBDUFVJRA0KPiA+ICsgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24uIFRoaXMg aXMgYW4gb3B0aW9uYWwNCj4gcGFyYW1ldGVyIHRoYXQgbWF5IGJlIE5VTEwuDQo+ID4gKyAgQHBh cmFtICBFZHggICBUaGUgcG9pbnRlciB0byB0aGUgMzItYml0IEVEWCB2YWx1ZQ0KPiByZXR1cm5l ZCBieSB0aGUgQ1BVSUQNCj4gPiArICAgICAgICAgICAgICAgIGluc3RydWN0aW9uLiBUaGlzIGlz IGFuIG9wdGlvbmFsDQo+IHBhcmFtZXRlciB0aGF0IG1heSBiZSBOVUxMLg0KPiA+ICsNCj4gPiAr ICBAcmV0dXJuIEluZGV4Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1VJTlQzMg0KPiA+ICtFRklB UEkNCj4gPiArQXNtQ3B1aWQgKA0KPiA+ICsgIElOICAgICAgVUlOVDMyICAgICAgICAgICAgICAg ICAgICBJbmRleCwNCj4gPiArICBPVVQgICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgKkVh eCwgIE9QVElPTkFMDQo+ID4gKyAgT1VUICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICpF YngsICBPUFRJT05BTA0KPiA+ICsgIE9VVCAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAq RWN4LCAgT1BUSU9OQUwNCj4gPiArICBPVVQgICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAg KkVkeCAgIE9QVElPTkFMDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIGdVbml0VGVz dEhvc3RCYXNlTGliLlg4Ni0+QXNtQ3B1aWQgKEluZGV4LA0KPiBFYXgsIEVieCwgRWN4LCBFZHgp Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBSZXRyaWV2ZXMgQ1BVSUQgaW5mb3Jt YXRpb24gdXNpbmcgYW4gZXh0ZW5kZWQgbGVhZg0KPiBpZGVudGlmaWVyLg0KPiA+ICsNCj4gPiAr ICBFeGVjdXRlcyB0aGUgQ1BVSUQgaW5zdHJ1Y3Rpb24gd2l0aCBFQVggc2V0IHRvIHRoZQ0KPiB2 YWx1ZSBzcGVjaWZpZWQgYnkgSW5kZXgNCj4gPiArICBhbmQgRUNYIHNldCB0byB0aGUgdmFsdWUg c3BlY2lmaWVkIGJ5IFN1YkluZGV4Lg0KPiBUaGlzIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zDQo+ ID4gKyAgSW5kZXguIFRoaXMgZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24gSUEtMzIgYW5k DQo+IHg2NC4NCj4gPiArDQo+ID4gKyAgSWYgRWF4IGlzIG5vdCBOVUxMLCB0aGVuIHRoZSB2YWx1 ZSBvZiBFQVggYWZ0ZXINCj4gQ1BVSUQgaXMgcmV0dXJuZWQgaW4gRWF4Lg0KPiA+ICsgIElmIEVi eCBpcyBub3QgTlVMTCwgdGhlbiB0aGUgdmFsdWUgb2YgRUJYIGFmdGVyDQo+IENQVUlEIGlzIHJl dHVybmVkIGluIEVieC4NCj4gPiArICBJZiBFY3ggaXMgbm90IE5VTEwsIHRoZW4gdGhlIHZhbHVl IG9mIEVDWCBhZnRlcg0KPiBDUFVJRCBpcyByZXR1cm5lZCBpbiBFY3guDQo+ID4gKyAgSWYgRWR4 IGlzIG5vdCBOVUxMLCB0aGVuIHRoZSB2YWx1ZSBvZiBFRFggYWZ0ZXINCj4gQ1BVSUQgaXMgcmV0 dXJuZWQgaW4gRWR4Lg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIEluZGV4ICAgICBUaGUgMzItYml0 IHZhbHVlIHRvIGxvYWQgaW50byBFQVgNCj4gcHJpb3IgdG8gaW52b2tpbmcgdGhlDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgQ1BVSUQgaW5zdHJ1Y3Rpb24uDQo+ID4gKyAgQHBhcmFtICBTdWJJ bmRleCAgVGhlIDMyLWJpdCB2YWx1ZSB0byBsb2FkIGludG8gRUNYDQo+IHByaW9yIHRvIGludm9r aW5nIHRoZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgIENQVUlEIGluc3RydWN0aW9uLg0KPiA+ ICsgIEBwYXJhbSAgRWF4ICAgICAgIFRoZSBwb2ludGVyIHRvIHRoZSAzMi1iaXQgRUFYDQo+IHZh bHVlIHJldHVybmVkIGJ5IHRoZSBDUFVJRA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGluc3Ry dWN0aW9uLiBUaGlzIGlzIGFuIG9wdGlvbmFsDQo+IHBhcmFtZXRlciB0aGF0IG1heSBiZQ0KPiA+ ICsgICAgICAgICAgICAgICAgICAgIE5VTEwuDQo+ID4gKyAgQHBhcmFtICBFYnggICAgICAgVGhl IHBvaW50ZXIgdG8gdGhlIDMyLWJpdCBFQlgNCj4gdmFsdWUgcmV0dXJuZWQgYnkgdGhlIENQVUlE DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24uIFRoaXMgaXMgYW4gb3B0aW9u YWwNCj4gcGFyYW1ldGVyIHRoYXQgbWF5IGJlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgTlVM TC4NCj4gPiArICBAcGFyYW0gIEVjeCAgICAgICBUaGUgcG9pbnRlciB0byB0aGUgMzItYml0IEVD WA0KPiB2YWx1ZSByZXR1cm5lZCBieSB0aGUgQ1BVSUQNCj4gPiArICAgICAgICAgICAgICAgICAg ICBpbnN0cnVjdGlvbi4gVGhpcyBpcyBhbiBvcHRpb25hbA0KPiBwYXJhbWV0ZXIgdGhhdCBtYXkg YmUNCj4gPiArICAgICAgICAgICAgICAgICAgICBOVUxMLg0KPiA+ICsgIEBwYXJhbSAgRWR4ICAg ICAgIFRoZSBwb2ludGVyIHRvIHRoZSAzMi1iaXQgRURYDQo+IHZhbHVlIHJldHVybmVkIGJ5IHRo ZSBDUFVJRA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9uLiBUaGlzIGlzIGFu IG9wdGlvbmFsDQo+IHBhcmFtZXRlciB0aGF0IG1heSBiZQ0KPiA+ICsgICAgICAgICAgICAgICAg ICAgIE5VTEwuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gSW5kZXguDQo+ID4gKw0KPiA+ICsqKi8N Cj4gPiArVUlOVDMyDQo+ID4gK0VGSUFQSQ0KPiA+ICtBc21DcHVpZEV4ICgNCj4gPiArICBJTiAg ICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgSW5kZXgsDQo+ID4gKyAgSU4gICAgICBVSU5U MzIgICAgICAgICAgICAgICAgICAgIFN1YkluZGV4LA0KPiA+ICsgIE9VVCAgICAgVUlOVDMyICAg ICAgICAgICAgICAgICAgICAqRWF4LCAgT1BUSU9OQUwNCj4gPiArICBPVVQgICAgIFVJTlQzMiAg ICAgICAgICAgICAgICAgICAgKkVieCwgIE9QVElPTkFMDQo+ID4gKyAgT1VUICAgICBVSU5UMzIg ICAgICAgICAgICAgICAgICAgICpFY3gsICBPUFRJT05BTA0KPiA+ICsgIE9VVCAgICAgVUlOVDMy ICAgICAgICAgICAgICAgICAgICAqRWR4ICAgT1BUSU9OQUwNCj4gPiArICApDQo+ID4gK3sNCj4g PiArICByZXR1cm4gZ1VuaXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5Bc21DcHVpZEV4IChJbmRleCwN Cj4gU3ViSW5kZXgsIEVheCwgRWJ4LCBFY3gsIEVkeCk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgIFNldCBDRCBiaXQgYW5kIGNsZWFyIE5XIGJpdCBvZiBDUjAgZm9sbG93ZWQgYnkg YQ0KPiBXQklOVkQuDQo+ID4gKw0KPiA+ICsgIERpc2FibGVzIHRoZSBjYWNoZXMgYnkgc2V0dGlu ZyB0aGUgQ0QgYml0IG9mIENSMCB0bw0KPiAxLCBjbGVhcmluZyB0aGUgTlcgYml0IG9mIENSMCB0 byAwLA0KPiA+ICsgIGFuZCBleGVjdXRpbmcgYSBXQklOVkQgaW5zdHJ1Y3Rpb24uICBUaGlzIGZ1 bmN0aW9uDQo+IGlzIG9ubHkgYXZhaWxhYmxlIG9uIElBLTMyIGFuZCB4NjQuDQo+ID4gKw0KPiA+ ICsqKi8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArQXNtRGlzYWJsZUNhY2hlICgNCj4g PiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgZ1VuaXRUZXN0SG9zdEJhc2VMaWIu WDg2LT5Bc21EaXNhYmxlQ2FjaGUgKCk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsg IFBlcmZvcm0gYSBXQklOVkQgYW5kIGNsZWFyIGJvdGggdGhlIENEIGFuZCBOVyBiaXRzDQo+IG9m IENSMC4NCj4gPiArDQo+ID4gKyAgRW5hYmxlcyB0aGUgY2FjaGVzIGJ5IGV4ZWN1dGluZyBhIFdC SU5WRA0KPiBpbnN0cnVjdGlvbiBhbmQgdGhlbiBjbGVhciBib3RoIHRoZSBDRCBhbmQgTlcNCj4g PiArICBiaXRzIG9mIENSMCB0byAwLiAgVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0K PiBvbiBJQS0zMiBhbmQgeDY0Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1ZPSUQNCj4gPiArRUZJ QVBJDQo+ID4gK0FzbUVuYWJsZUNhY2hlICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7 DQo+ID4gKyAgZ1VuaXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5Bc21FbmFibGVDYWNoZSAoKTsNCj4g PiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUmV0dXJucyBhIDY0LWJpdCBNYWNoaW5lIFNw ZWNpZmljIFJlZ2lzdGVyKE1TUikuDQo+ID4gKw0KPiA+ICsgIFJlYWRzIGFuZCByZXR1cm5zIHRo ZSA2NC1iaXQgTVNSIHNwZWNpZmllZCBieQ0KPiBJbmRleC4gTm8gcGFyYW1ldGVyIGNoZWNraW5n IGlzDQo+ID4gKyAgcGVyZm9ybWVkIG9uIEluZGV4LCBhbmQgc29tZSBJbmRleCB2YWx1ZXMgbWF5 IGNhdXNlDQo+IENQVSBleGNlcHRpb25zLiBUaGUNCj4gPiArICBjYWxsZXIgbXVzdCBlaXRoZXIg Z3VhcmFudGVlIHRoYXQgSW5kZXggaXMgdmFsaWQsDQo+IG9yIHRoZSBjYWxsZXIgbXVzdCBzZXQg dXANCj4gPiArICBleGNlcHRpb24gaGFuZGxlcnMgdG8gY2F0Y2ggdGhlIGV4Y2VwdGlvbnMuIFRo aXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUNCj4gPiArICBvbiBJQS0zMiBhbmQgeDY0 Lg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIEluZGV4IFRoZSAzMi1iaXQgTVNSIGluZGV4IHRvIHJl YWQuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIG9mIHRoZSBNU1IgaWRlbnRpZmll ZCBieSBJbmRleC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5UNjQNCj4gPiArRUZJQVBJDQo+ ID4gK0FzbVJlYWRNc3I2NCAoDQo+ID4gKyAgSU4gICAgICBVSU5UMzIgICAgICAgICAgICAgICAg ICAgIEluZGV4DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIGdVbml0VGVzdEhvc3RC YXNlTGliLlg4Ni0+QXNtUmVhZE1zcjY0DQo+IChJbmRleCk7DQo+ID4gK30NCj4gPiArDQo+ID4g Ky8qKg0KPiA+ICsgIFdyaXRlcyBhIDY0LWJpdCB2YWx1ZSB0byBhIE1hY2hpbmUgU3BlY2lmaWMN Cj4gUmVnaXN0ZXIoTVNSKSwgYW5kIHJldHVybnMgdGhlDQo+ID4gKyAgdmFsdWUuDQo+ID4gKw0K PiA+ICsgIFdyaXRlcyB0aGUgNjQtYml0IHZhbHVlIHNwZWNpZmllZCBieSBWYWx1ZSB0byB0aGUN Cj4gTVNSIHNwZWNpZmllZCBieSBJbmRleC4gVGhlDQo+ID4gKyAgNjQtYml0IHZhbHVlIHdyaXR0 ZW4gdG8gdGhlIE1TUiBpcyByZXR1cm5lZC4gTm8NCj4gcGFyYW1ldGVyIGNoZWNraW5nIGlzDQo+ ID4gKyAgcGVyZm9ybWVkIG9uIEluZGV4IG9yIFZhbHVlLCBhbmQgc29tZSBvZiB0aGVzZSBtYXkN Cj4gY2F1c2UgQ1BVIGV4Y2VwdGlvbnMuIFRoZQ0KPiA+ICsgIGNhbGxlciBtdXN0IGVpdGhlciBn dWFyYW50ZWUgdGhhdCBJbmRleCBhbmQgVmFsdWUNCj4gYXJlIHZhbGlkLCBvciB0aGUgY2FsbGVy DQo+ID4gKyAgbXVzdCBlc3RhYmxpc2ggcHJvcGVyIGV4Y2VwdGlvbiBoYW5kbGVycy4gVGhpcw0K PiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ICsgIElBLTMyIGFuZCB4NjQuDQo+ ID4gKw0KPiA+ICsgIEBwYXJhbSAgSW5kZXggVGhlIDMyLWJpdCBNU1IgaW5kZXggdG8gd3JpdGUu DQo+ID4gKyAgQHBhcmFtICBWYWx1ZSBUaGUgNjQtYml0IHZhbHVlIHRvIHdyaXRlIHRvIHRoZSBN U1IuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVmFsdWUNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtV SU5UNjQNCj4gPiArRUZJQVBJDQo+ID4gK0FzbVdyaXRlTXNyNjQgKA0KPiA+ICsgIElOICAgICAg VUlOVDMyICAgICAgICAgICAgICAgICAgICBJbmRleCwNCj4gPiArICBJTiAgICAgIFVJTlQ2NCAg ICAgICAgICAgICAgICAgICAgVmFsdWUNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4g Z1VuaXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5Bc21Xcml0ZU1zcjY0DQo+IChJbmRleCwgVmFsdWUp Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBSZWFkcyB0aGUgY3VycmVudCB2YWx1 ZSBvZiB0aGUgQ29udHJvbCBSZWdpc3RlciAwDQo+IChDUjApLg0KPiA+ICsNCj4gPiArICBSZWFk cyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBDUjAuIFRoaXMNCj4gZnVuY3Rpb24g aXMgb25seSBhdmFpbGFibGUNCj4gPiArICBvbiBJQS0zMiBhbmQgeDY0LiBUaGlzIHJldHVybnMg YSAzMi1iaXQgdmFsdWUgb24NCj4gSUEtMzIgYW5kIGEgNjQtYml0IHZhbHVlIG9uDQo+ID4gKyAg eDY0Lg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiB0aGUgQ29udHJvbCBSZWdp c3RlciAwIChDUjApLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1VJTlRODQo+ID4gK0VGSUFQSQ0K PiA+ICtBc21SZWFkQ3IwICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAg cmV0dXJuIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+QXNtUmVhZENyMCAoKTsNCj4gPiArfQ0K PiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIENv bnRyb2wgUmVnaXN0ZXIgMg0KPiAoQ1IyKS4NCj4gPiArDQo+ID4gKyAgUmVhZHMgYW5kIHJldHVy bnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgQ1IyLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZh aWxhYmxlDQo+ID4gKyAgb24gSUEtMzIgYW5kIHg2NC4gVGhpcyByZXR1cm5zIGEgMzItYml0IHZh bHVlIG9uDQo+IElBLTMyIGFuZCBhIDY0LWJpdCB2YWx1ZSBvbg0KPiA+ICsgIHg2NC4NCj4gPiAr DQo+ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgb2YgdGhlIENvbnRyb2wgUmVnaXN0ZXIgMiAoQ1Iy KS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5UTg0KPiA+ICtFRklBUEkNCj4gPiArQXNtUmVh ZENyMiAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIHJldHVybiBnVW5p dFRlc3RIb3N0QmFzZUxpYi5YODYtPkFzbVJlYWRDcjIgKCk7DQo+ID4gK30NCj4gPiArDQo+ID4g Ky8qKg0KPiA+ICsgIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBDb250cm9sIFJlZ2lz dGVyIDMNCj4gKENSMykuDQo+ID4gKw0KPiA+ICsgIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJy ZW50IHZhbHVlIG9mIENSMy4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ ICsgIG9uIElBLTMyIGFuZCB4NjQuIFRoaXMgcmV0dXJucyBhIDMyLWJpdCB2YWx1ZSBvbg0KPiBJ QS0zMiBhbmQgYSA2NC1iaXQgdmFsdWUgb24NCj4gPiArICB4NjQuDQo+ID4gKw0KPiA+ICsgIEBy ZXR1cm4gVGhlIHZhbHVlIG9mIHRoZSBDb250cm9sIFJlZ2lzdGVyIDMgKENSMykuDQo+ID4gKw0K PiA+ICsqKi8NCj4gPiArVUlOVE4NCj4gPiArRUZJQVBJDQo+ID4gK0FzbVJlYWRDcjMgKA0KPiA+ ICsgIFZPSUQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gZ1VuaXRUZXN0SG9zdEJh c2VMaWIuWDg2LT5Bc21SZWFkQ3IzICgpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiAr ICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgQ29udHJvbCBSZWdpc3RlciA0DQo+IChD UjQpLg0KPiA+ICsNCj4gPiArICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBv ZiBDUjQuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUNCj4gPiArICBvbiBJQS0z MiBhbmQgeDY0LiBUaGlzIHJldHVybnMgYSAzMi1iaXQgdmFsdWUgb24NCj4gSUEtMzIgYW5kIGEg NjQtYml0IHZhbHVlIG9uDQo+ID4gKyAgeDY0Lg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIFRoZSB2 YWx1ZSBvZiB0aGUgQ29udHJvbCBSZWdpc3RlciA0IChDUjQpLg0KPiA+ICsNCj4gPiArKiovDQo+ ID4gK1VJTlRODQo+ID4gK0VGSUFQSQ0KPiA+ICtBc21SZWFkQ3I0ICgNCj4gPiArICBWT0lEDQo+ ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+ QXNtUmVhZENyNCAoKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgV3JpdGVzIGEg dmFsdWUgdG8gQ29udHJvbCBSZWdpc3RlciAwIChDUjApLg0KPiA+ICsNCj4gPiArICBXcml0ZXMg YW5kIHJldHVybnMgYSBuZXcgdmFsdWUgdG8gQ1IwLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkg YXZhaWxhYmxlIG9uDQo+ID4gKyAgSUEtMzIgYW5kIHg2NC4gVGhpcyB3cml0ZXMgYSAzMi1iaXQg dmFsdWUgb24gSUEtMzINCj4gYW5kIGEgNjQtYml0IHZhbHVlIG9uIHg2NC4NCj4gPiArDQo+ID4g KyAgQHBhcmFtICBDcjAgVGhlIHZhbHVlIHRvIHdyaXRlIHRvIENSMC4NCj4gPiArDQo+ID4gKyAg QHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbiB0byBDUjAuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiAr VUlOVE4NCj4gPiArRUZJQVBJDQo+ID4gK0FzbVdyaXRlQ3IwICgNCj4gPiArICBVSU5UTiAgQ3Iw DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4 Ni0+QXNtV3JpdGVDcjAgKENyMCk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFdy aXRlcyBhIHZhbHVlIHRvIENvbnRyb2wgUmVnaXN0ZXIgMiAoQ1IyKS4NCj4gPiArDQo+ID4gKyAg V3JpdGVzIGFuZCByZXR1cm5zIGEgbmV3IHZhbHVlIHRvIENSMi4gVGhpcw0KPiBmdW5jdGlvbiBp cyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ICsgIElBLTMyIGFuZCB4NjQuIFRoaXMgd3JpdGVzIGEg MzItYml0IHZhbHVlIG9uIElBLTMyDQo+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiB4NjQuDQo+ID4g Kw0KPiA+ICsgIEBwYXJhbSAgQ3IyIFRoZSB2YWx1ZSB0byB3cml0ZSB0byBDUjIuDQo+ID4gKw0K PiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gdG8gQ1IyLg0KPiA+ICsNCj4gPiArKiov DQo+ID4gK1VJTlRODQo+ID4gK0VGSUFQSQ0KPiA+ICtBc21Xcml0ZUNyMiAoDQo+ID4gKyAgVUlO VE4gIENyMg0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIHJldHVybiBnVW5pdFRlc3RIb3N0QmFz ZUxpYi5YODYtPkFzbVdyaXRlQ3IyIChDcjIpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4g PiArICBXcml0ZXMgYSB2YWx1ZSB0byBDb250cm9sIFJlZ2lzdGVyIDMgKENSMykuDQo+ID4gKw0K PiA+ICsgIFdyaXRlcyBhbmQgcmV0dXJucyBhIG5ldyB2YWx1ZSB0byBDUjMuIFRoaXMNCj4gZnVu Y3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiArICBJQS0zMiBhbmQgeDY0LiBUaGlzIHdy aXRlcyBhIDMyLWJpdCB2YWx1ZSBvbiBJQS0zMg0KPiBhbmQgYSA2NC1iaXQgdmFsdWUgb24geDY0 Lg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIENyMyBUaGUgdmFsdWUgdG8gd3JpdGUgdG8gQ1IzLg0K PiA+ICsNCj4gPiArICBAcmV0dXJuIFRoZSB2YWx1ZSB3cml0dGVuIHRvIENSMy4NCj4gPiArDQo+ ID4gKyoqLw0KPiA+ICtVSU5UTg0KPiA+ICtFRklBUEkNCj4gPiArQXNtV3JpdGVDcjMgKA0KPiA+ ICsgIFVJTlROICBDcjMNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gZ1VuaXRUZXN0 SG9zdEJhc2VMaWIuWDg2LT5Bc21Xcml0ZUNyMyAoQ3IzKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAgV3JpdGVzIGEgdmFsdWUgdG8gQ29udHJvbCBSZWdpc3RlciA0IChDUjQpLg0K PiA+ICsNCj4gPiArICBXcml0ZXMgYW5kIHJldHVybnMgYSBuZXcgdmFsdWUgdG8gQ1I0LiBUaGlz DQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gKyAgSUEtMzIgYW5kIHg2NC4g VGhpcyB3cml0ZXMgYSAzMi1iaXQgdmFsdWUgb24gSUEtMzINCj4gYW5kIGEgNjQtYml0IHZhbHVl IG9uIHg2NC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBDcjQgVGhlIHZhbHVlIHRvIHdyaXRlIHRv IENSNC4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbiB0byBDUjQuDQo+ ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVE4NCj4gPiArRUZJQVBJDQo+ID4gK0FzbVdyaXRlQ3I0 ICgNCj4gPiArICBVSU5UTiAgQ3I0DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIGdV bml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+QXNtV3JpdGVDcjQgKENyNCk7DQo+ID4gK30NCj4gPiAr DQo+ID4gKy8qKg0KPiA+ICsgIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIERlYnVnIFJlZ2lz dGVyIDAgKERSMCkuDQo+ID4gKw0KPiA+ICsgIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50 IHZhbHVlIG9mIERSMC4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ICsg IG9uIElBLTMyIGFuZCB4NjQuIFRoaXMgcmV0dXJucyBhIDMyLWJpdCB2YWx1ZSBvbg0KPiBJQS0z MiBhbmQgYSA2NC1iaXQgdmFsdWUgb24NCj4gPiArICB4NjQuDQo+ID4gKw0KPiA+ICsgIEByZXR1 cm4gVGhlIHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDAgKERSMCkuDQo+ID4gKw0KPiA+ICsqKi8N Cj4gPiArVUlOVE4NCj4gPiArRUZJQVBJDQo+ID4gK0FzbVJlYWREcjAgKA0KPiA+ICsgIFZPSUQN Cj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gZ1VuaXRUZXN0SG9zdEJhc2VMaWIuWDg2 LT5Bc21SZWFkRHIwICgpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBSZWFkcyB0 aGUgY3VycmVudCB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciAxIChEUjEpLg0KPiA+ICsNCj4gPiAr ICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEUjEuIFRoaXMNCj4gZnVu Y3Rpb24gaXMgb25seSBhdmFpbGFibGUNCj4gPiArICBvbiBJQS0zMiBhbmQgeDY0LiBUaGlzIHJl dHVybnMgYSAzMi1iaXQgdmFsdWUgb24NCj4gSUEtMzIgYW5kIGEgNjQtYml0IHZhbHVlIG9uDQo+ ID4gKyAgeDY0Lg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiBEZWJ1ZyBSZWdp c3RlciAxIChEUjEpLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1VJTlRODQo+ID4gK0VGSUFQSQ0K PiA+ICtBc21SZWFkRHIxICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAg cmV0dXJuIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+QXNtUmVhZERyMSAoKTsNCj4gPiArfQ0K PiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRGVidWcg UmVnaXN0ZXIgMiAoRFIyKS4NCj4gPiArDQo+ID4gKyAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1 cnJlbnQgdmFsdWUgb2YgRFIyLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ ID4gKyAgb24gSUEtMzIgYW5kIHg2NC4gVGhpcyByZXR1cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+ IElBLTMyIGFuZCBhIDY0LWJpdCB2YWx1ZSBvbg0KPiA+ICsgIHg2NC4NCj4gPiArDQo+ID4gKyAg QHJldHVybiBUaGUgdmFsdWUgb2YgRGVidWcgUmVnaXN0ZXIgMiAoRFIyKS4NCj4gPiArDQo+ID4g KyoqLw0KPiA+ICtVSU5UTg0KPiA+ICtFRklBUEkNCj4gPiArQXNtUmVhZERyMiAoDQo+ID4gKyAg Vk9JRA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIHJldHVybiBnVW5pdFRlc3RIb3N0QmFzZUxp Yi5YODYtPkFzbVJlYWREcjIgKCk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFJl YWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDMgKERSMykuDQo+ID4gKw0K PiA+ICsgIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIERSMy4gVGhpcw0K PiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ICsgIG9uIElBLTMyIGFuZCB4NjQuIFRo aXMgcmV0dXJucyBhIDMyLWJpdCB2YWx1ZSBvbg0KPiBJQS0zMiBhbmQgYSA2NC1iaXQgdmFsdWUg b24NCj4gPiArICB4NjQuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIG9mIERlYnVn IFJlZ2lzdGVyIDMgKERSMykuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVE4NCj4gPiArRUZJ QVBJDQo+ID4gK0FzbVJlYWREcjMgKA0KPiA+ICsgIFZPSUQNCj4gPiArICApDQo+ID4gK3sNCj4g PiArICByZXR1cm4gZ1VuaXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5Bc21SZWFkRHIzICgpOw0KPiA+ ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBE ZWJ1ZyBSZWdpc3RlciA0IChEUjQpLg0KPiA+ICsNCj4gPiArICBSZWFkcyBhbmQgcmV0dXJucyB0 aGUgY3VycmVudCB2YWx1ZSBvZiBEUjQuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFi bGUNCj4gPiArICBvbiBJQS0zMiBhbmQgeDY0LiBUaGlzIHJldHVybnMgYSAzMi1iaXQgdmFsdWUg b24NCj4gSUEtMzIgYW5kIGEgNjQtYml0IHZhbHVlIG9uDQo+ID4gKyAgeDY0Lg0KPiA+ICsNCj4g PiArICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciA0IChEUjQpLg0KPiA+ICsN Cj4gPiArKiovDQo+ID4gK1VJTlRODQo+ID4gK0VGSUFQSQ0KPiA+ICtBc21SZWFkRHI0ICgNCj4g PiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIGdVbml0VGVzdEhvc3RC YXNlTGliLlg4Ni0+QXNtUmVhZERyNCAoKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4g KyAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRGVidWcgUmVnaXN0ZXIgNSAoRFI1KS4NCj4g PiArDQo+ID4gKyAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRFI1LiBU aGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gKyAgb24gSUEtMzIgYW5kIHg2 NC4gVGhpcyByZXR1cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+IElBLTMyIGFuZCBhIDY0LWJpdCB2 YWx1ZSBvbg0KPiA+ICsgIHg2NC4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgb2Yg RGVidWcgUmVnaXN0ZXIgNSAoRFI1KS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5UTg0KPiA+ ICtFRklBUEkNCj4gPiArQXNtUmVhZERyNSAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4gPiAr ew0KPiA+ICsgIHJldHVybiBnVW5pdFRlc3RIb3N0QmFzZUxpYi5YODYtPkFzbVJlYWREcjUgKCk7 DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVl IG9mIERlYnVnIFJlZ2lzdGVyIDYgKERSNikuDQo+ID4gKw0KPiA+ICsgIFJlYWRzIGFuZCByZXR1 cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIERSNi4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2 YWlsYWJsZQ0KPiA+ICsgIG9uIElBLTMyIGFuZCB4NjQuIFRoaXMgcmV0dXJucyBhIDMyLWJpdCB2 YWx1ZSBvbg0KPiBJQS0zMiBhbmQgYSA2NC1iaXQgdmFsdWUgb24NCj4gPiArICB4NjQuDQo+ID4g Kw0KPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDYgKERSNikuDQo+ ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVE4NCj4gPiArRUZJQVBJDQo+ID4gK0FzbVJlYWREcjYg KA0KPiA+ICsgIFZPSUQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gZ1VuaXRUZXN0 SG9zdEJhc2VMaWIuWDg2LT5Bc21SZWFkRHI2ICgpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioN Cj4gPiArICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciA3IChEUjcp Lg0KPiA+ICsNCj4gPiArICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBE UjcuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUNCj4gPiArICBvbiBJQS0zMiBh bmQgeDY0LiBUaGlzIHJldHVybnMgYSAzMi1iaXQgdmFsdWUgb24NCj4gSUEtMzIgYW5kIGEgNjQt Yml0IHZhbHVlIG9uDQo+ID4gKyAgeDY0Lg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIFRoZSB2YWx1 ZSBvZiBEZWJ1ZyBSZWdpc3RlciA3IChEUjcpLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1VJTlRO DQo+ID4gK0VGSUFQSQ0KPiA+ICtBc21SZWFkRHI3ICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0K PiA+ICt7DQo+ID4gKyAgcmV0dXJuIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+QXNtUmVhZERy NyAoKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgV3JpdGVzIGEgdmFsdWUgdG8g RGVidWcgUmVnaXN0ZXIgMCAoRFIwKS4NCj4gPiArDQo+ID4gKyAgV3JpdGVzIGFuZCByZXR1cm5z IGEgbmV3IHZhbHVlIHRvIERSMC4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBv bg0KPiA+ICsgIElBLTMyIGFuZCB4NjQuIFRoaXMgd3JpdGVzIGEgMzItYml0IHZhbHVlIG9uIElB LTMyDQo+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiB4NjQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAg RHIwIFRoZSB2YWx1ZSB0byB3cml0ZSB0byBEcjAuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhl IHZhbHVlIHdyaXR0ZW4gdG8gRGVidWcgUmVnaXN0ZXIgMA0KPiAoRFIwKS4NCj4gPiArDQo+ID4g KyoqLw0KPiA+ICtVSU5UTg0KPiA+ICtFRklBUEkNCj4gPiArQXNtV3JpdGVEcjAgKA0KPiA+ICsg IFVJTlROICBEcjANCj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gZ1VuaXRUZXN0SG9z dEJhc2VMaWIuWDg2LT5Bc21Xcml0ZURyMCAoRHIwKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoq DQo+ID4gKyAgV3JpdGVzIGEgdmFsdWUgdG8gRGVidWcgUmVnaXN0ZXIgMSAoRFIxKS4NCj4gPiAr DQo+ID4gKyAgV3JpdGVzIGFuZCByZXR1cm5zIGEgbmV3IHZhbHVlIHRvIERSMS4gVGhpcw0KPiBm dW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ICsgIElBLTMyIGFuZCB4NjQuIFRoaXMg d3JpdGVzIGEgMzItYml0IHZhbHVlIG9uIElBLTMyDQo+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiB4 NjQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgRHIxIFRoZSB2YWx1ZSB0byB3cml0ZSB0byBEcjEu DQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gdG8gRGVidWcgUmVnaXN0 ZXIgMQ0KPiAoRFIxKS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5UTg0KPiA+ICtFRklBUEkN Cj4gPiArQXNtV3JpdGVEcjEgKA0KPiA+ICsgIFVJTlROICBEcjENCj4gPiArICApDQo+ID4gK3sN Cj4gPiArICByZXR1cm4gZ1VuaXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5Bc21Xcml0ZURyMSAoRHIx KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgV3JpdGVzIGEgdmFsdWUgdG8gRGVi dWcgUmVnaXN0ZXIgMiAoRFIyKS4NCj4gPiArDQo+ID4gKyAgV3JpdGVzIGFuZCByZXR1cm5zIGEg bmV3IHZhbHVlIHRvIERSMi4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0K PiA+ICsgIElBLTMyIGFuZCB4NjQuIFRoaXMgd3JpdGVzIGEgMzItYml0IHZhbHVlIG9uIElBLTMy DQo+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiB4NjQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgRHIy IFRoZSB2YWx1ZSB0byB3cml0ZSB0byBEcjIuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIHZh bHVlIHdyaXR0ZW4gdG8gRGVidWcgUmVnaXN0ZXIgMg0KPiAoRFIyKS4NCj4gPiArDQo+ID4gKyoq Lw0KPiA+ICtVSU5UTg0KPiA+ICtFRklBUEkNCj4gPiArQXNtV3JpdGVEcjIgKA0KPiA+ICsgIFVJ TlROICBEcjINCj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gZ1VuaXRUZXN0SG9zdEJh c2VMaWIuWDg2LT5Bc21Xcml0ZURyMiAoRHIyKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ ID4gKyAgV3JpdGVzIGEgdmFsdWUgdG8gRGVidWcgUmVnaXN0ZXIgMyAoRFIzKS4NCj4gPiArDQo+ ID4gKyAgV3JpdGVzIGFuZCByZXR1cm5zIGEgbmV3IHZhbHVlIHRvIERSMy4gVGhpcw0KPiBmdW5j dGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ICsgIElBLTMyIGFuZCB4NjQuIFRoaXMgd3Jp dGVzIGEgMzItYml0IHZhbHVlIG9uIElBLTMyDQo+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiB4NjQu DQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgRHIzIFRoZSB2YWx1ZSB0byB3cml0ZSB0byBEcjMuDQo+ ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gdG8gRGVidWcgUmVnaXN0ZXIg Mw0KPiAoRFIzKS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5UTg0KPiA+ICtFRklBUEkNCj4g PiArQXNtV3JpdGVEcjMgKA0KPiA+ICsgIFVJTlROICBEcjMNCj4gPiArICApDQo+ID4gK3sNCj4g PiArICByZXR1cm4gZ1VuaXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5Bc21Xcml0ZURyMyAoRHIzKTsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgV3JpdGVzIGEgdmFsdWUgdG8gRGVidWcg UmVnaXN0ZXIgNCAoRFI0KS4NCj4gPiArDQo+ID4gKyAgV3JpdGVzIGFuZCByZXR1cm5zIGEgbmV3 IHZhbHVlIHRvIERSNC4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ ICsgIElBLTMyIGFuZCB4NjQuIFRoaXMgd3JpdGVzIGEgMzItYml0IHZhbHVlIG9uIElBLTMyDQo+ IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiB4NjQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgRHI0IFRo ZSB2YWx1ZSB0byB3cml0ZSB0byBEcjQuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVl IHdyaXR0ZW4gdG8gRGVidWcgUmVnaXN0ZXIgNA0KPiAoRFI0KS4NCj4gPiArDQo+ID4gKyoqLw0K PiA+ICtVSU5UTg0KPiA+ICtFRklBUEkNCj4gPiArQXNtV3JpdGVEcjQgKA0KPiA+ICsgIFVJTlRO ICBEcjQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gZ1VuaXRUZXN0SG9zdEJhc2VM aWIuWDg2LT5Bc21Xcml0ZURyNCAoRHI0KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4g KyAgV3JpdGVzIGEgdmFsdWUgdG8gRGVidWcgUmVnaXN0ZXIgNSAoRFI1KS4NCj4gPiArDQo+ID4g KyAgV3JpdGVzIGFuZCByZXR1cm5zIGEgbmV3IHZhbHVlIHRvIERSNS4gVGhpcw0KPiBmdW5jdGlv biBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ICsgIElBLTMyIGFuZCB4NjQuIFRoaXMgd3JpdGVz IGEgMzItYml0IHZhbHVlIG9uIElBLTMyDQo+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiB4NjQuDQo+ ID4gKw0KPiA+ICsgIEBwYXJhbSAgRHI1IFRoZSB2YWx1ZSB0byB3cml0ZSB0byBEcjUuDQo+ID4g Kw0KPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gdG8gRGVidWcgUmVnaXN0ZXIgNQ0K PiAoRFI1KS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5UTg0KPiA+ICtFRklBUEkNCj4gPiAr QXNtV3JpdGVEcjUgKA0KPiA+ICsgIFVJTlROICBEcjUNCj4gPiArICApDQo+ID4gK3sNCj4gPiAr ICByZXR1cm4gZ1VuaXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5Bc21Xcml0ZURyNSAoRHI1KTsNCj4g PiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgV3JpdGVzIGEgdmFsdWUgdG8gRGVidWcgUmVn aXN0ZXIgNiAoRFI2KS4NCj4gPiArDQo+ID4gKyAgV3JpdGVzIGFuZCByZXR1cm5zIGEgbmV3IHZh bHVlIHRvIERSNi4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ICsg IElBLTMyIGFuZCB4NjQuIFRoaXMgd3JpdGVzIGEgMzItYml0IHZhbHVlIG9uIElBLTMyDQo+IGFu ZCBhIDY0LWJpdCB2YWx1ZSBvbiB4NjQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgRHI2IFRoZSB2 YWx1ZSB0byB3cml0ZSB0byBEcjYuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIHdy aXR0ZW4gdG8gRGVidWcgUmVnaXN0ZXIgNg0KPiAoRFI2KS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ ICtVSU5UTg0KPiA+ICtFRklBUEkNCj4gPiArQXNtV3JpdGVEcjYgKA0KPiA+ICsgIFVJTlROICBE cjYNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gZ1VuaXRUZXN0SG9zdEJhc2VMaWIu WDg2LT5Bc21Xcml0ZURyNiAoRHI2KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAg V3JpdGVzIGEgdmFsdWUgdG8gRGVidWcgUmVnaXN0ZXIgNyAoRFI3KS4NCj4gPiArDQo+ID4gKyAg V3JpdGVzIGFuZCByZXR1cm5zIGEgbmV3IHZhbHVlIHRvIERSNy4gVGhpcw0KPiBmdW5jdGlvbiBp cyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ICsgIElBLTMyIGFuZCB4NjQuIFRoaXMgd3JpdGVzIGEg MzItYml0IHZhbHVlIG9uIElBLTMyDQo+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiB4NjQuDQo+ID4g Kw0KPiA+ICsgIEBwYXJhbSAgRHI3IFRoZSB2YWx1ZSB0byB3cml0ZSB0byBEcjcuDQo+ID4gKw0K PiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gdG8gRGVidWcgUmVnaXN0ZXIgNw0KPiAo RFI3KS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5UTg0KPiA+ICtFRklBUEkNCj4gPiArQXNt V3JpdGVEcjcgKA0KPiA+ICsgIFVJTlROICBEcjcNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBy ZXR1cm4gZ1VuaXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5Bc21Xcml0ZURyNyAoRHI3KTsNCj4gPiAr fQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgQ29k ZSBTZWdtZW50IFJlZ2lzdGVyDQo+IChDUykuDQo+ID4gKw0KPiA+ICsgIFJlYWRzIGFuZCByZXR1 cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIENTLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZh aWxhYmxlIG9uDQo+ID4gKyAgSUEtMzIgYW5kIHg2NC4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBU aGUgY3VycmVudCB2YWx1ZSBvZiBDUy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5UMTYNCj4g PiArRUZJQVBJDQo+ID4gK0FzbVJlYWRDcyAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4gPiAr ew0KPiA+ICsgIHJldHVybiBnVW5pdFRlc3RIb3N0QmFzZUxpYi5YODYtPkFzbVJlYWRDcyAoKTsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUg b2YgRGF0YSBTZWdtZW50IFJlZ2lzdGVyDQo+IChEUykuDQo+ID4gKw0KPiA+ICsgIFJlYWRzIGFu ZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIERTLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9u bHkgYXZhaWxhYmxlIG9uDQo+ID4gKyAgSUEtMzIgYW5kIHg2NC4NCj4gPiArDQo+ID4gKyAgQHJl dHVybiBUaGUgY3VycmVudCB2YWx1ZSBvZiBEUy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5U MTYNCj4gPiArRUZJQVBJDQo+ID4gK0FzbVJlYWREcyAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkN Cj4gPiArew0KPiA+ICsgIHJldHVybiBnVW5pdFRlc3RIb3N0QmFzZUxpYi5YODYtPkFzbVJlYWRE cyAoKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUmVhZHMgdGhlIGN1cnJlbnQg dmFsdWUgb2YgRXh0cmEgU2VnbWVudCBSZWdpc3Rlcg0KPiAoRVMpLg0KPiA+ICsNCj4gPiArICBS ZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBFUy4gVGhpcw0KPiBmdW5jdGlv biBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ICsgIElBLTMyIGFuZCB4NjQuDQo+ID4gKw0KPiA+ ICsgIEByZXR1cm4gVGhlIGN1cnJlbnQgdmFsdWUgb2YgRVMuDQo+ID4gKw0KPiA+ICsqKi8NCj4g PiArVUlOVDE2DQo+ID4gK0VGSUFQSQ0KPiA+ICtBc21SZWFkRXMgKA0KPiA+ICsgIFZPSUQNCj4g PiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gZ1VuaXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5B c21SZWFkRXMgKCk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFJlYWRzIHRoZSBj dXJyZW50IHZhbHVlIG9mIEZTIERhdGEgU2VnbWVudCBSZWdpc3Rlcg0KPiAoRlMpLg0KPiA+ICsN Cj4gPiArICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBGUy4gVGhpcw0K PiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ICsgIElBLTMyIGFuZCB4NjQuDQo+ ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIGN1cnJlbnQgdmFsdWUgb2YgRlMuDQo+ID4gKw0KPiA+ ICsqKi8NCj4gPiArVUlOVDE2DQo+ID4gK0VGSUFQSQ0KPiA+ICtBc21SZWFkRnMgKA0KPiA+ICsg IFZPSUQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gZ1VuaXRUZXN0SG9zdEJhc2VM aWIuWDg2LT5Bc21SZWFkRnMgKCk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFJl YWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIEdTIERhdGEgU2VnbWVudCBSZWdpc3Rlcg0KPiAoR1Mp Lg0KPiA+ICsNCj4gPiArICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBH Uy4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ICsgIElBLTMyIGFu ZCB4NjQuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIGN1cnJlbnQgdmFsdWUgb2YgR1MuDQo+ ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVDE2DQo+ID4gK0VGSUFQSQ0KPiA+ICtBc21SZWFkR3Mg KA0KPiA+ICsgIFZPSUQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gZ1VuaXRUZXN0 SG9zdEJhc2VMaWIuWDg2LT5Bc21SZWFkR3MgKCk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0K PiA+ICsgIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIFN0YWNrIFNlZ21lbnQgUmVnaXN0ZXIN Cj4gKFNTKS4NCj4gPiArDQo+ID4gKyAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFs dWUgb2YgU1MuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiArICBJ QS0zMiBhbmQgeDY0Lg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIFRoZSBjdXJyZW50IHZhbHVlIG9m IFNTLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1VJTlQxNg0KPiA+ICtFRklBUEkNCj4gPiArQXNt UmVhZFNzICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIGdV bml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+QXNtUmVhZFNzICgpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ ICsvKioNCj4gPiArICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBUYXNrIFJlZ2lzdGVyIChU UikuDQo+ID4gKw0KPiA+ICsgIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9m IFRSLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gKyAgSUEtMzIg YW5kIHg2NC4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBUaGUgY3VycmVudCB2YWx1ZSBvZiBUUi4N Cj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5UMTYNCj4gPiArRUZJQVBJDQo+ID4gK0FzbVJlYWRU ciAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIHJldHVybiBnVW5pdFRl c3RIb3N0QmFzZUxpYi5YODYtPkFzbVJlYWRUciAoKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoq DQo+ID4gKyAgUmVhZHMgdGhlIGN1cnJlbnQgR2xvYmFsIERlc2NyaXB0b3IgVGFibGUNCj4gUmVn aXN0ZXIoR0RUUikgZGVzY3JpcHRvci4NCj4gPiArDQo+ID4gKyAgUmVhZHMgYW5kIHJldHVybnMg dGhlIGN1cnJlbnQgR0RUUiBkZXNjcmlwdG9yIGFuZA0KPiByZXR1cm5zIGl0IGluIEdkdHIuIFRo aXMNCj4gPiArICBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQgeDY0Lg0K PiA+ICsNCj4gPiArICBJZiBHZHRyIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4gKw0KPiA+ ICsgIEBwYXJhbSAgR2R0ciAgVGhlIHBvaW50ZXIgdG8gYSBHRFRSIGRlc2NyaXB0b3IuDQo+ID4g Kw0KPiA+ICsqKi8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArQXNtUmVhZEdkdHIgKA0K PiA+ICsgIE9VVCAgICAgSUEzMl9ERVNDUklQVE9SICAgICAgICAgICAqR2R0cg0KPiA+ICsgICkN Cj4gPiArew0KPiA+ICsgIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+QXNtUmVhZEdkdHIgKEdk dHIpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBXcml0ZXMgdGhlIGN1cnJlbnQg R2xvYmFsIERlc2NyaXB0b3IgVGFibGUgUmVnaXN0ZXINCj4gKEdEVFIpIGRlc2NyaXB0b3IuDQo+ ID4gKw0KPiA+ICsgIFdyaXRlcyBhbmQgdGhlIGN1cnJlbnQgR0RUUiBkZXNjcmlwdG9yIHNwZWNp ZmllZCBieQ0KPiBHZHRyLiBUaGlzIGZ1bmN0aW9uIGlzDQo+ID4gKyAgb25seSBhdmFpbGFibGUg b24gSUEtMzIgYW5kIHg2NC4NCj4gPiArDQo+ID4gKyAgSWYgR2R0ciBpcyBOVUxMLCB0aGVuIEFT U0VSVCgpLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIEdkdHIgIFRoZSBwb2ludGVyIHRvIGEgR0RU UiBkZXNjcmlwdG9yLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ ID4gK0FzbVdyaXRlR2R0ciAoDQo+ID4gKyAgSU4gICAgICBDT05TVCBJQTMyX0RFU0NSSVBUT1Ig ICAgICpHZHRyDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgZ1VuaXRUZXN0SG9zdEJhc2VMaWIu WDg2LT5Bc21Xcml0ZUdkdHIgKEdkdHIpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiAr ICBSZWFkcyB0aGUgY3VycmVudCBJbnRlcnJ1cHQgRGVzY3JpcHRvciBUYWJsZQ0KPiBSZWdpc3Rl cihJRFRSKSBkZXNjcmlwdG9yLg0KPiA+ICsNCj4gPiArICBSZWFkcyBhbmQgcmV0dXJucyB0aGUg Y3VycmVudCBJRFRSIGRlc2NyaXB0b3IgYW5kDQo+IHJldHVybnMgaXQgaW4gSWR0ci4gVGhpcw0K PiA+ICsgIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uIElBLTMyIGFuZCB4NjQuDQo+ID4g Kw0KPiA+ICsgIElmIElkdHIgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPiArDQo+ID4gKyAg QHBhcmFtICBJZHRyICBUaGUgcG9pbnRlciB0byBhIElEVFIgZGVzY3JpcHRvci4NCj4gPiArDQo+ ID4gKyoqLw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtBc21SZWFkSWR0ciAoDQo+ID4g KyAgT1VUICAgICBJQTMyX0RFU0NSSVBUT1IgICAgICAgICAgICpJZHRyDQo+ID4gKyAgKQ0KPiA+ ICt7DQo+ID4gKyAgZ1VuaXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5Bc21SZWFkSWR0ciAoSWR0cik7 DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFdyaXRlcyB0aGUgY3VycmVudCBJbnRl cnJ1cHQgRGVzY3JpcHRvciBUYWJsZQ0KPiBSZWdpc3RlcihJRFRSKSBkZXNjcmlwdG9yLg0KPiA+ ICsNCj4gPiArICBXcml0ZXMgdGhlIGN1cnJlbnQgSURUUiBkZXNjcmlwdG9yIGFuZCByZXR1cm5z IGl0DQo+IGluIElkdHIuIFRoaXMgZnVuY3Rpb24gaXMNCj4gPiArICBvbmx5IGF2YWlsYWJsZSBv biBJQS0zMiBhbmQgeDY0Lg0KPiA+ICsNCj4gPiArICBJZiBJZHRyIGlzIE5VTEwsIHRoZW4gQVNT RVJUKCkuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgSWR0ciAgVGhlIHBvaW50ZXIgdG8gYSBJRFRS IGRlc2NyaXB0b3IuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4g PiArQXNtV3JpdGVJZHRyICgNCj4gPiArICBJTiAgICAgIENPTlNUIElBMzJfREVTQ1JJUFRPUiAg ICAgKklkdHINCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBnVW5pdFRlc3RIb3N0QmFzZUxpYi5Y ODYtPkFzbVdyaXRlSWR0ciAoSWR0cik7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsg IFJlYWRzIHRoZSBjdXJyZW50IExvY2FsIERlc2NyaXB0b3IgVGFibGUNCj4gUmVnaXN0ZXIoTERU Uikgc2VsZWN0b3IuDQo+ID4gKw0KPiA+ICsgIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50 IDE2LWJpdCBMRFRSDQo+IGRlc2NyaXB0b3IgdmFsdWUuIFRoaXMgZnVuY3Rpb24gaXMNCj4gPiAr ICBvbmx5IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQgeDY0Lg0KPiA+ICsNCj4gPiArICBAcmV0dXJu IFRoZSBjdXJyZW50IHNlbGVjdG9yIG9mIExEVC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5U MTYNCj4gPiArRUZJQVBJDQo+ID4gK0FzbVJlYWRMZHRyICgNCj4gPiArICBWT0lEDQo+ID4gKyAg KQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+QXNtUmVh ZExkdHIgKCk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFdyaXRlcyB0aGUgY3Vy cmVudCBMb2NhbCBEZXNjcmlwdG9yIFRhYmxlIFJlZ2lzdGVyDQo+IChMRFRSKSBzZWxlY3Rvci4N Cj4gPiArDQo+ID4gKyAgV3JpdGVzIGFuZCB0aGUgY3VycmVudCBMRFRSIGRlc2NyaXB0b3Igc3Bl Y2lmaWVkIGJ5DQo+IExkdHIuIFRoaXMgZnVuY3Rpb24gaXMNCj4gPiArICBvbmx5IGF2YWlsYWJs ZSBvbiBJQS0zMiBhbmQgeDY0Lg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIExkdHIgIDE2LWJpdCBM RFRSIHNlbGVjdG9yIHZhbHVlLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1ZPSUQNCj4gPiArRUZJ QVBJDQo+ID4gK0FzbVdyaXRlTGR0ciAoDQo+ID4gKyAgSU4gICAgICBVSU5UMTYgICAgICAgICAg ICAgICAgICAgIExkdHINCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBnVW5pdFRlc3RIb3N0QmFz ZUxpYi5YODYtPkFzbVdyaXRlTGR0ciAoTGR0cik7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0K PiA+ICsgIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIGEgUGVyZm9ybWFuY2UgQ291bnRlcg0K PiAoUE1DKS4NCj4gPiArDQo+ID4gKyAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFs dWUgb2YgcGVyZm9ybWFuY2UNCj4gY291bnRlciBzcGVjaWZpZWQgYnkNCj4gPiArICBJbmRleC4g VGhpcyBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQNCj4geDY0Lg0KPiA+ ICsNCj4gPiArICBAcGFyYW0gIEluZGV4IFRoZSAzMi1iaXQgUGVyZm9ybWFuY2UgQ291bnRlciBp bmRleA0KPiB0byByZWFkLg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiB0aGUg UE1DIHNwZWNpZmllZCBieSBJbmRleC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5UNjQNCj4g PiArRUZJQVBJDQo+ID4gK0FzbVJlYWRQbWMgKA0KPiA+ICsgIElOICAgICAgVUlOVDMyICAgICAg ICAgICAgICAgICAgICBJbmRleA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIHJldHVybiBnVW5p dFRlc3RIb3N0QmFzZUxpYi5YODYtPkFzbVJlYWRQbWMNCj4gKEluZGV4KTsNCj4gPiArfQ0KPiA+ ICsNCj4gPiArLyoqDQo+ID4gKyAgU2V0cyB1cCBhIG1vbml0b3IgYnVmZmVyIHRoYXQgaXMgdXNl ZCBieQ0KPiBBc21Nd2FpdCgpLg0KPiA+ICsNCj4gPiArICBFeGVjdXRlcyBhIE1PTklUT1IgaW5z dHJ1Y3Rpb24gd2l0aCB0aGUgcmVnaXN0ZXINCj4gc3RhdGUgc3BlY2lmaWVkIGJ5IEVheCwgRWN4 DQo+ID4gKyAgYW5kIEVkeC4gUmV0dXJucyBFYXguIFRoaXMgZnVuY3Rpb24gaXMgb25seQ0KPiBh dmFpbGFibGUgb24gSUEtMzIgYW5kIHg2NC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBFYXggVGhl IHZhbHVlIHRvIGxvYWQgaW50byBFQVggb3IgUkFYDQo+IGJlZm9yZSBleGVjdXRpbmcgdGhlIE1P TklUT1INCj4gPiArICAgICAgICAgICAgICBpbnN0cnVjdGlvbi4NCj4gPiArICBAcGFyYW0gIEVj eCBUaGUgdmFsdWUgdG8gbG9hZCBpbnRvIEVDWCBvciBSQ1gNCj4gYmVmb3JlIGV4ZWN1dGluZyB0 aGUgTU9OSVRPUg0KPiA+ICsgICAgICAgICAgICAgIGluc3RydWN0aW9uLg0KPiA+ICsgIEBwYXJh bSAgRWR4IFRoZSB2YWx1ZSB0byBsb2FkIGludG8gRURYIG9yIFJEWA0KPiBiZWZvcmUgZXhlY3V0 aW5nIHRoZSBNT05JVE9SDQo+ID4gKyAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24uDQo+ID4gKw0K PiA+ICsgIEByZXR1cm4gRWF4DQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVE4NCj4gPiArRUZJ QVBJDQo+ID4gK0FzbU1vbml0b3IgKA0KPiA+ICsgIElOICAgICAgVUlOVE4gICAgICAgICAgICAg ICAgICAgICBFYXgsDQo+ID4gKyAgSU4gICAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIEVj eCwNCj4gPiArICBJTiAgICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgRWR4DQo+ID4gKyAg KQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+QXNtTW9u aXRvciAoRWF4LA0KPiBFY3gsIEVkeCk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsg IEV4ZWN1dGVzIGFuIE1XQUlUIGluc3RydWN0aW9uLg0KPiA+ICsNCj4gPiArICBFeGVjdXRlcyBh biBNV0FJVCBpbnN0cnVjdGlvbiB3aXRoIHRoZSByZWdpc3Rlcg0KPiBzdGF0ZSBzcGVjaWZpZWQg YnkgRWF4IGFuZA0KPiA+ICsgIEVjeC4gUmV0dXJucyBFYXguIFRoaXMgZnVuY3Rpb24gaXMgb25s eSBhdmFpbGFibGUNCj4gb24gSUEtMzIgYW5kIHg2NC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBF YXggVGhlIHZhbHVlIHRvIGxvYWQgaW50byBFQVggb3IgUkFYDQo+IGJlZm9yZSBleGVjdXRpbmcg dGhlIE1PTklUT1INCj4gPiArICAgICAgICAgICAgICBpbnN0cnVjdGlvbi4NCj4gPiArICBAcGFy YW0gIEVjeCBUaGUgdmFsdWUgdG8gbG9hZCBpbnRvIEVDWCBvciBSQ1gNCj4gYmVmb3JlIGV4ZWN1 dGluZyB0aGUgTU9OSVRPUg0KPiA+ICsgICAgICAgICAgICAgIGluc3RydWN0aW9uLg0KPiA+ICsN Cj4gPiArICBAcmV0dXJuIEVheA0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1VJTlRODQo+ID4gK0VG SUFQSQ0KPiA+ICtBc21Nd2FpdCAoDQo+ID4gKyAgSU4gICAgICBVSU5UTiAgICAgICAgICAgICAg ICAgICAgIEVheCwNCj4gPiArICBJTiAgICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgRWN4 DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4 Ni0+QXNtTXdhaXQgKEVheCwNCj4gRWN4KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4g KyAgRXhlY3V0ZXMgYSBXQklOVkQgaW5zdHJ1Y3Rpb24uDQo+ID4gKw0KPiA+ICsgIEV4ZWN1dGVz IGEgV0JJTlZEIGluc3RydWN0aW9uLiBUaGlzIGZ1bmN0aW9uIGlzDQo+IG9ubHkgYXZhaWxhYmxl IG9uIElBLTMyIGFuZA0KPiA+ICsgIHg2NC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtWT0lEDQo+ ID4gK0VGSUFQSQ0KPiA+ICtBc21XYmludmQgKA0KPiA+ICsgIFZPSUQNCj4gPiArICApDQo+ID4g K3sNCj4gPiArICBnVW5pdFRlc3RIb3N0QmFzZUxpYi5YODYtPkFzbVdiaW52ZCAoKTsNCj4gPiAr fQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgRXhlY3V0ZXMgYSBJTlZEIGluc3RydWN0aW9uLg0K PiA+ICsNCj4gPiArICBFeGVjdXRlcyBhIElOVkQgaW5zdHJ1Y3Rpb24uIFRoaXMgZnVuY3Rpb24g aXMgb25seQ0KPiBhdmFpbGFibGUgb24gSUEtMzIgYW5kDQo+ID4gKyAgeDY0Lg0KPiA+ICsNCj4g PiArKiovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK0FzbUludmQgKA0KPiA+ICsgIFZP SUQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBnVW5pdFRlc3RIb3N0QmFzZUxpYi5YODYtPkFz bUludmQgKCk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEZsdXNoZXMgYSBjYWNo ZSBsaW5lIGZyb20gYWxsIHRoZSBpbnN0cnVjdGlvbiBhbmQNCj4gZGF0YSBjYWNoZXMgd2l0aGlu IHRoZQ0KPiA+ICsgIGNvaGVyZW5jeSBkb21haW4gb2YgdGhlIENQVS4NCj4gPiArDQo+ID4gKyAg Rmx1c2hlZCB0aGUgY2FjaGUgbGluZSBzcGVjaWZpZWQgYnkgTGluZWFyQWRkcmVzcywNCj4gYW5k IHJldHVybnMgTGluZWFyQWRkcmVzcy4NCj4gPiArICBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgYXZh aWxhYmxlIG9uIElBLTMyIGFuZCB4NjQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgTGluZWFyQWRk cmVzcyBUaGUgYWRkcmVzcyBvZiB0aGUgY2FjaGUgbGluZQ0KPiB0byBmbHVzaC4gSWYgdGhlIENQ VSBpcw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBpbiBhIHBoeXNpY2FsIGFkZHJlc3Np bmcNCj4gbW9kZSwgdGhlbiBMaW5lYXJBZGRyZXNzIGlzIGENCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgcGh5c2ljYWwgYWRkcmVzcy4gSWYgdGhlIENQVQ0KPiBpcyBpbiBhIHZpcnR1YWwN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc2luZyBtb2RlLCB0aGVuDQo+IExp bmVhckFkZHJlc3MgaXMgYSB2aXJ0dWFsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGFk ZHJlc3MuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gTGluZWFyQWRkcmVzcy4NCj4gPiArKiovDQo+ ID4gK1ZPSUQgKg0KPiA+ICtFRklBUEkNCj4gPiArQXNtRmx1c2hDYWNoZUxpbmUgKA0KPiA+ICsg IElOICAgICAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAqTGluZWFyQWRkcmVzcw0KPiA+ICsg ICkNCj4gPiArew0KPiA+ICsgIHJldHVybiBnVW5pdFRlc3RIb3N0QmFzZUxpYi5YODYtPkFzbUZs dXNoQ2FjaGVMaW5lDQo+IChMaW5lYXJBZGRyZXNzKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoq DQo+ID4gKyAgRW5hYmxlcyB0aGUgMzItYml0IHBhZ2luZyBtb2RlIG9uIHRoZSBDUFUuDQo+ID4g Kw0KPiA+ICsgIEVuYWJsZXMgdGhlIDMyLWJpdCBwYWdpbmcgbW9kZSBvbiB0aGUgQ1BVLiBDUjAs DQo+IENSMywgQ1I0LCBhbmQgdGhlIHBhZ2UgdGFibGVzDQo+ID4gKyAgbXVzdCBiZSBwcm9wZXJs eSBpbml0aWFsaXplZCBwcmlvciB0byBjYWxsaW5nIHRoaXMNCj4gc2VydmljZS4gVGhpcyBmdW5j dGlvbg0KPiA+ICsgIGFzc3VtZXMgdGhlIGN1cnJlbnQgZXhlY3V0aW9uIG1vZGUgaXMgMzItYml0 DQo+IHByb3RlY3RlZCBtb2RlLiBUaGlzIGZ1bmN0aW9uIGlzDQo+ID4gKyAgb25seSBhdmFpbGFi bGUgb24gSUEtMzIuIEFmdGVyIHRoZSAzMi1iaXQgcGFnaW5nDQo+IG1vZGUgaXMgZW5hYmxlZCwg Y29udHJvbCBpcw0KPiA+ICsgIHRyYW5zZmVycmVkIHRvIHRoZSBmdW5jdGlvbiBzcGVjaWZpZWQg YnkgRW50cnlQb2ludA0KPiB1c2luZyB0aGUgbmV3IHN0YWNrDQo+ID4gKyAgc3BlY2lmaWVkIGJ5 IE5ld1N0YWNrIGFuZCBwYXNzaW5nIGluIHRoZSBwYXJhbWV0ZXJzDQo+IHNwZWNpZmllZCBieSBD b250ZXh0MSBhbmQNCj4gPiArICBDb250ZXh0Mi4gQ29udGV4dDEgYW5kIENvbnRleHQyIGFyZSBv cHRpb25hbCBhbmQNCj4gbWF5IGJlIE5VTEwuIFRoZSBmdW5jdGlvbg0KPiA+ICsgIEVudHJ5UG9p bnQgbXVzdCBuZXZlciByZXR1cm4uDQo+ID4gKw0KPiA+ICsgIElmIHRoZSBjdXJyZW50IGV4ZWN1 dGlvbiBtb2RlIGlzIG5vdCAzMi1iaXQNCj4gcHJvdGVjdGVkIG1vZGUsIHRoZW4gQVNTRVJUKCku DQo+ID4gKyAgSWYgRW50cnlQb2ludCBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+ICsgIElm IE5ld1N0YWNrIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4gKw0KPiA+ICsgIFRoZXJlIGFy ZSBhIG51bWJlciBvZiBjb25zdHJhaW50cyB0aGF0IG11c3QgYmUNCj4gZm9sbG93ZWQgYmVmb3Jl IGNhbGxpbmcgdGhpcw0KPiA+ICsgIGZ1bmN0aW9uOg0KPiA+ICsgIDEpICBJbnRlcnJ1cHRzIG11 c3QgYmUgZGlzYWJsZWQuDQo+ID4gKyAgMikgIFRoZSBjYWxsZXIgbXVzdCBiZSBpbiAzMi1iaXQg cHJvdGVjdGVkIG1vZGUNCj4gd2l0aCBmbGF0IGRlc2NyaXB0b3JzLiBUaGlzDQo+ID4gKyAgICAg IG1lYW5zIGFsbCBkZXNjcmlwdG9ycyBtdXN0IGhhdmUgYSBiYXNlIG9mIDAgYW5kDQo+IGEgbGlt aXQgb2YgNEdCLg0KPiA+ICsgIDMpICBDUjAgYW5kIENSNCBtdXN0IGJlIGNvbXBhdGlibGUgd2l0 aCAzMi1iaXQNCj4gcHJvdGVjdGVkIG1vZGUgd2l0aCBmbGF0DQo+ID4gKyAgICAgIGRlc2NyaXB0 b3JzLg0KPiA+ICsgIDQpICBDUjMgbXVzdCBwb2ludCB0byB2YWxpZCBwYWdlIHRhYmxlcyB0aGF0 IHdpbGwNCj4gYmUgdXNlZCBvbmNlIHRoZSB0cmFuc2l0aW9uDQo+ID4gKyAgICAgIGlzIGNvbXBs ZXRlLCBhbmQgdGhvc2UgcGFnZSB0YWJsZXMgbXVzdA0KPiBndWFyYW50ZWUgdGhhdCB0aGUgcGFn ZXMgZm9yIHRoaXMNCj4gPiArICAgICAgZnVuY3Rpb24gYW5kIHRoZSBzdGFjayBhcmUgaWRlbnRp dHkgbWFwcGVkLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIEVudHJ5UG9pbnQgIEEgcG9pbnRlciB0 byBmdW5jdGlvbiB0byBjYWxsDQo+IHdpdGggdGhlIG5ldyBzdGFjayBhZnRlcg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgcGFnaW5nIGlzIGVuYWJsZWQuDQo+ID4gKyAgQHBhcmFtICBDb250 ZXh0MSAgICBBIHBvaW50ZXIgdG8gdGhlIGNvbnRleHQgdG8NCj4gcGFzcyBpbnRvIHRoZSBFbnRy eVBvaW50DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBhcyB0aGUgZmlyc3Qg cGFyYW1ldGVyDQo+IGFmdGVyIHBhZ2luZyBpcyBlbmFibGVkLg0KPiA+ICsgIEBwYXJhbSAgQ29u dGV4dDIgICAgQSBwb2ludGVyIHRvIHRoZSBjb250ZXh0IHRvDQo+IHBhc3MgaW50byB0aGUgRW50 cnlQb2ludA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYXMgdGhlIHNlY29u ZA0KPiBwYXJhbWV0ZXIgYWZ0ZXIgcGFnaW5nIGlzIGVuYWJsZWQuDQo+ID4gKyAgQHBhcmFtICBO ZXdTdGFjayAgICBBIHBvaW50ZXIgdG8gdGhlIG5ldyBzdGFjayB0bw0KPiB1c2UgZm9yIHRoZSBF bnRyeVBvaW50DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBhZnRlciBwYWdp bmcgaXMNCj4gZW5hYmxlZC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQ SQ0KPiA+ICtBc21FbmFibGVQYWdpbmczMiAoDQo+ID4gKyAgSU4gICAgICBTV0lUQ0hfU1RBQ0tf RU5UUllfUE9JTlQgIEVudHJ5UG9pbnQsDQo+ID4gKyAgSU4gICAgICBWT0lEICAgICAgICAgICAg ICAgICAgICAgICpDb250ZXh0MSwNCj4gT1BUSU9OQUwNCj4gPiArICBJTiAgICAgIFZPSUQgICAg ICAgICAgICAgICAgICAgICAgKkNvbnRleHQyLA0KPiBPUFRJT05BTA0KPiA+ICsgIElOICAgICAg Vk9JRCAgICAgICAgICAgICAgICAgICAgICAqTmV3U3RhY2sNCj4gPiArICApDQo+ID4gK3sNCj4g PiArICBnVW5pdFRlc3RIb3N0QmFzZUxpYi5YODYtPkFzbUVuYWJsZVBhZ2luZzMyDQo+IChFbnRy eVBvaW50LCBDb250ZXh0MSwgQ29udGV4dDIsIE5ld1N0YWNrKTsNCj4gPiArfQ0KPiA+ICsNCj4g PiArLyoqDQo+ID4gKyAgRGlzYWJsZXMgdGhlIDMyLWJpdCBwYWdpbmcgbW9kZSBvbiB0aGUgQ1BV Lg0KPiA+ICsNCj4gPiArICBEaXNhYmxlcyB0aGUgMzItYml0IHBhZ2luZyBtb2RlIG9uIHRoZSBD UFUgYW5kDQo+IHJldHVybnMgdG8gMzItYml0IHByb3RlY3RlZA0KPiA+ICsgIG1vZGUuIFRoaXMg ZnVuY3Rpb24gYXNzdW1lcyB0aGUgY3VycmVudCBleGVjdXRpb24NCj4gbW9kZSBpcyAzMi1wYWdl ZCBwcm90ZWN0ZWQNCj4gPiArICBtb2RlLiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxl IG9uIElBLTMyLg0KPiBBZnRlciB0aGUgMzItYml0IHBhZ2luZyBtb2RlDQo+ID4gKyAgaXMgZGlz YWJsZWQsIGNvbnRyb2wgaXMgdHJhbnNmZXJyZWQgdG8gdGhlIGZ1bmN0aW9uDQo+IHNwZWNpZmll ZCBieSBFbnRyeVBvaW50DQo+ID4gKyAgdXNpbmcgdGhlIG5ldyBzdGFjayBzcGVjaWZpZWQgYnkg TmV3U3RhY2sgYW5kDQo+IHBhc3NpbmcgaW4gdGhlIHBhcmFtZXRlcnMNCj4gPiArICBzcGVjaWZp ZWQgYnkgQ29udGV4dDEgYW5kIENvbnRleHQyLiBDb250ZXh0MSBhbmQNCj4gQ29udGV4dDIgYXJl IG9wdGlvbmFsIGFuZA0KPiA+ICsgIG1heSBiZSBOVUxMLiBUaGUgZnVuY3Rpb24gRW50cnlQb2lu dCBtdXN0IG5ldmVyDQo+IHJldHVybi4NCj4gPiArDQo+ID4gKyAgSWYgdGhlIGN1cnJlbnQgZXhl Y3V0aW9uIG1vZGUgaXMgbm90IDMyLWJpdCBwYWdlZA0KPiBtb2RlLCB0aGVuIEFTU0VSVCgpLg0K PiA+ICsgIElmIEVudHJ5UG9pbnQgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPiArICBJZiBO ZXdTdGFjayBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+ICsNCj4gPiArICBUaGVyZSBhcmUg YSBudW1iZXIgb2YgY29uc3RyYWludHMgdGhhdCBtdXN0IGJlDQo+IGZvbGxvd2VkIGJlZm9yZSBj YWxsaW5nIHRoaXMNCj4gPiArICBmdW5jdGlvbjoNCj4gPiArICAxKSAgSW50ZXJydXB0cyBtdXN0 IGJlIGRpc2FibGVkLg0KPiA+ICsgIDIpICBUaGUgY2FsbGVyIG11c3QgYmUgaW4gMzItYml0IHBh Z2VkIG1vZGUuDQo+ID4gKyAgMykgIENSMCwgQ1IzLCBhbmQgQ1I0IG11c3QgYmUgY29tcGF0aWJs ZSB3aXRoIDMyLQ0KPiBiaXQgcGFnZWQgbW9kZS4NCj4gPiArICA0KSAgQ1IzIG11c3QgcG9pbnQg dG8gdmFsaWQgcGFnZSB0YWJsZXMgdGhhdA0KPiBndWFyYW50ZWUgdGhhdCB0aGUgcGFnZXMgZm9y DQo+ID4gKyAgICAgIHRoaXMgZnVuY3Rpb24gYW5kIHRoZSBzdGFjayBhcmUgaWRlbnRpdHkNCj4g bWFwcGVkLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIEVudHJ5UG9pbnQgIEEgcG9pbnRlciB0byBm dW5jdGlvbiB0byBjYWxsDQo+IHdpdGggdGhlIG5ldyBzdGFjayBhZnRlcg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgcGFnaW5nIGlzIGRpc2FibGVkLg0KPiA+ICsgIEBwYXJhbSAgQ29udGV4 dDEgICAgQSBwb2ludGVyIHRvIHRoZSBjb250ZXh0IHRvDQo+IHBhc3MgaW50byB0aGUgRW50cnlQ b2ludA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYXMgdGhlIGZpcnN0IHBh cmFtZXRlcg0KPiBhZnRlciBwYWdpbmcgaXMgZGlzYWJsZWQuDQo+ID4gKyAgQHBhcmFtICBDb250 ZXh0MiAgICBBIHBvaW50ZXIgdG8gdGhlIGNvbnRleHQgdG8NCj4gcGFzcyBpbnRvIHRoZSBFbnRy eVBvaW50DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBhcyB0aGUgc2Vjb25k DQo+IHBhcmFtZXRlciBhZnRlciBwYWdpbmcgaXMNCj4gPiArICAgICAgICAgICAgICAgICAgICAg IGRpc2FibGVkLg0KPiA+ICsgIEBwYXJhbSAgTmV3U3RhY2sgICAgQSBwb2ludGVyIHRvIHRoZSBu ZXcgc3RhY2sgdG8NCj4gdXNlIGZvciB0aGUgRW50cnlQb2ludA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgZnVuY3Rpb24gYWZ0ZXIgcGFnaW5nIGlzDQo+IGRpc2FibGVkLg0KPiA+ICsNCj4g PiArKiovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK0FzbURpc2FibGVQYWdpbmczMiAo DQo+ID4gKyAgSU4gICAgICBTV0lUQ0hfU1RBQ0tfRU5UUllfUE9JTlQgIEVudHJ5UG9pbnQsDQo+ ID4gKyAgSU4gICAgICBWT0lEICAgICAgICAgICAgICAgICAgICAgICpDb250ZXh0MSwNCj4gT1BU SU9OQUwNCj4gPiArICBJTiAgICAgIFZPSUQgICAgICAgICAgICAgICAgICAgICAgKkNvbnRleHQy LA0KPiBPUFRJT05BTA0KPiA+ICsgIElOICAgICAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAq TmV3U3RhY2sNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBnVW5pdFRlc3RIb3N0QmFzZUxpYi5Y ODYtPkFzbURpc2FibGVQYWdpbmczMg0KPiAoRW50cnlQb2ludCwgQ29udGV4dDEsIENvbnRleHQy LCBOZXdTdGFjayk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEVuYWJsZXMgdGhl IDY0LWJpdCBwYWdpbmcgbW9kZSBvbiB0aGUgQ1BVLg0KPiA+ICsNCj4gPiArICBFbmFibGVzIHRo ZSA2NC1iaXQgcGFnaW5nIG1vZGUgb24gdGhlIENQVS4gQ1IwLA0KPiBDUjMsIENSNCwgYW5kIHRo ZSBwYWdlIHRhYmxlcw0KPiA+ICsgIG11c3QgYmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQgcHJpb3Ig dG8gY2FsbGluZyB0aGlzDQo+IHNlcnZpY2UuIFRoaXMgZnVuY3Rpb24NCj4gPiArICBhc3N1bWVz IHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBtb2RlIGlzIDMyLWJpdA0KPiBwcm90ZWN0ZWQgbW9kZSB3 aXRoIGZsYXQNCj4gPiArICBkZXNjcmlwdG9ycy4gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGF2YWls YWJsZSBvbiBJQS0NCj4gMzIuIEFmdGVyIHRoZSA2NC1iaXQNCj4gPiArICBwYWdpbmcgbW9kZSBp cyBlbmFibGVkLCBjb250cm9sIGlzIHRyYW5zZmVycmVkIHRvDQo+IHRoZSBmdW5jdGlvbiBzcGVj aWZpZWQgYnkNCj4gPiArICBFbnRyeVBvaW50IHVzaW5nIHRoZSBuZXcgc3RhY2sgc3BlY2lmaWVk IGJ5DQo+IE5ld1N0YWNrIGFuZCBwYXNzaW5nIGluIHRoZQ0KPiA+ICsgIHBhcmFtZXRlcnMgc3Bl Y2lmaWVkIGJ5IENvbnRleHQxIGFuZCBDb250ZXh0Mi4NCj4gQ29udGV4dDEgYW5kIENvbnRleHQy IGFyZQ0KPiA+ICsgIG9wdGlvbmFsIGFuZCBtYXkgYmUgMC4gVGhlIGZ1bmN0aW9uIEVudHJ5UG9p bnQgbXVzdA0KPiBuZXZlciByZXR1cm4uDQo+ID4gKw0KPiA+ICsgIElmIHRoZSBjdXJyZW50IGV4 ZWN1dGlvbiBtb2RlIGlzIG5vdCAzMi1iaXQNCj4gcHJvdGVjdGVkIG1vZGUgd2l0aCBmbGF0DQo+ ID4gKyAgZGVzY3JpcHRvcnMsIHRoZW4gQVNTRVJUKCkuDQo+ID4gKyAgSWYgRW50cnlQb2ludCBp cyAwLCB0aGVuIEFTU0VSVCgpLg0KPiA+ICsgIElmIE5ld1N0YWNrIGlzIDAsIHRoZW4gQVNTRVJU KCkuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgQ3MgICAgICAgICAgVGhlIDE2LWJpdCBzZWxlY3Rv ciB0byBsb2FkIGluDQo+IHRoZSBDUyBiZWZvcmUgRW50cnlQb2ludA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgaXMgY2FsbGVkLiBUaGUgZGVzY3JpcHRvciBpbg0KPiB0aGUgR0RUIHRoYXQg dGhpcyBzZWxlY3Rvcg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlcyBtdXN0 IGJlIHNldHVwIGZvcg0KPiBsb25nIG1vZGUuDQo+ID4gKyAgQHBhcmFtICBFbnRyeVBvaW50ICBU aGUgNjQtYml0IHZpcnR1YWwgYWRkcmVzcyBvZg0KPiB0aGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRo DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICB0aGUgbmV3IHN0YWNrIGFmdGVyIHBhZ2luZyBp cw0KPiBlbmFibGVkLg0KPiA+ICsgIEBwYXJhbSAgQ29udGV4dDEgICAgVGhlIDY0LWJpdCB2aXJ0 dWFsIGFkZHJlc3Mgb2YNCj4gdGhlIGNvbnRleHQgdG8gcGFzcyBpbnRvDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICB0aGUgRW50cnlQb2ludCBmdW5jdGlvbiBhcyB0aGUNCj4gZmlyc3QgcGFy YW1ldGVyIGFmdGVyDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBwYWdpbmcgaXMgZW5hYmxl ZC4NCj4gPiArICBAcGFyYW0gIENvbnRleHQyICAgIFRoZSA2NC1iaXQgdmlydHVhbCBhZGRyZXNz IG9mDQo+IHRoZSBjb250ZXh0IHRvIHBhc3MgaW50bw0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgdGhlIEVudHJ5UG9pbnQgZnVuY3Rpb24gYXMgdGhlDQo+IHNlY29uZCBwYXJhbWV0ZXIgYWZ0 ZXINCj4gPiArICAgICAgICAgICAgICAgICAgICAgIHBhZ2luZyBpcyBlbmFibGVkLg0KPiA+ICsg IEBwYXJhbSAgTmV3U3RhY2sgICAgVGhlIDY0LWJpdCB2aXJ0dWFsIGFkZHJlc3Mgb2YNCj4gdGhl IG5ldyBzdGFjayB0byB1c2UgZm9yDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICB0aGUgRW50 cnlQb2ludCBmdW5jdGlvbiBhZnRlcg0KPiBwYWdpbmcgaXMgZW5hYmxlZC4NCj4gPiArDQo+ID4g KyoqLw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtBc21FbmFibGVQYWdpbmc2NCAoDQo+ ID4gKyAgSU4gICAgICBVSU5UMTYgICAgICAgICAgICAgICAgICAgIENzLA0KPiA+ICsgIElOICAg ICAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBFbnRyeVBvaW50LA0KPiA+ICsgIElOICAgICAg VUlOVDY0ICAgICAgICAgICAgICAgICAgICBDb250ZXh0MSwNCj4gT1BUSU9OQUwNCj4gPiArICBJ TiAgICAgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgQ29udGV4dDIsDQo+IE9QVElPTkFMDQo+ ID4gKyAgSU4gICAgICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIE5ld1N0YWNrDQo+ID4gKyAg KQ0KPiA+ICt7DQo+ID4gKyAgZ1VuaXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5Bc21FbmFibGVQYWdp bmc2NCAoQ3MsDQo+IEVudHJ5UG9pbnQsIENvbnRleHQxLCBDb250ZXh0MiwgTmV3U3RhY2spOw0K PiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBEaXNhYmxlcyB0aGUgNjQtYml0IHBhZ2lu ZyBtb2RlIG9uIHRoZSBDUFUuDQo+ID4gKw0KPiA+ICsgIERpc2FibGVzIHRoZSA2NC1iaXQgcGFn aW5nIG1vZGUgb24gdGhlIENQVSBhbmQNCj4gcmV0dXJucyB0byAzMi1iaXQgcHJvdGVjdGVkDQo+ ID4gKyAgbW9kZS4gVGhpcyBmdW5jdGlvbiBhc3N1bWVzIHRoZSBjdXJyZW50IGV4ZWN1dGlvbg0K PiBtb2RlIGlzIDY0LXBhZ2luZyBtb2RlLg0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gaXMgb25seSBh dmFpbGFibGUgb24geDY0LiBBZnRlciB0aGUNCj4gNjQtYml0IHBhZ2luZyBtb2RlIGlzDQo+ID4g KyAgZGlzYWJsZWQsIGNvbnRyb2wgaXMgdHJhbnNmZXJyZWQgdG8gdGhlIGZ1bmN0aW9uDQo+IHNw ZWNpZmllZCBieSBFbnRyeVBvaW50DQo+ID4gKyAgdXNpbmcgdGhlIG5ldyBzdGFjayBzcGVjaWZp ZWQgYnkgTmV3U3RhY2sgYW5kDQo+IHBhc3NpbmcgaW4gdGhlIHBhcmFtZXRlcnMNCj4gPiArICBz cGVjaWZpZWQgYnkgQ29udGV4dDEgYW5kIENvbnRleHQyLiBDb250ZXh0MSBhbmQNCj4gQ29udGV4 dDIgYXJlIG9wdGlvbmFsIGFuZA0KPiA+ICsgIG1heSBiZSAwLiBUaGUgZnVuY3Rpb24gRW50cnlQ b2ludCBtdXN0IG5ldmVyDQo+IHJldHVybi4NCj4gPiArDQo+ID4gKyAgSWYgdGhlIGN1cnJlbnQg ZXhlY3V0aW9uIG1vZGUgaXMgbm90IDY0LWJpdCBwYWdlZA0KPiBtb2RlLCB0aGVuIEFTU0VSVCgp Lg0KPiA+ICsgIElmIEVudHJ5UG9pbnQgaXMgMCwgdGhlbiBBU1NFUlQoKS4NCj4gPiArICBJZiBO ZXdTdGFjayBpcyAwLCB0aGVuIEFTU0VSVCgpLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIENzICAg ICAgICAgIFRoZSAxNi1iaXQgc2VsZWN0b3IgdG8gbG9hZCBpbg0KPiB0aGUgQ1MgYmVmb3JlIEVu dHJ5UG9pbnQNCj4gPiArICAgICAgICAgICAgICAgICAgICAgIGlzIGNhbGxlZC4gVGhlIGRlc2Ny aXB0b3IgaW4NCj4gdGhlIEdEVCB0aGF0IHRoaXMgc2VsZWN0b3INCj4gPiArICAgICAgICAgICAg ICAgICAgICAgIHJlZmVyZW5jZXMgbXVzdCBiZSBzZXR1cCBmb3INCj4gMzItYml0IHByb3RlY3Rl ZCBtb2RlLg0KPiA+ICsgIEBwYXJhbSAgRW50cnlQb2ludCAgVGhlIDY0LWJpdCB2aXJ0dWFsIGFk ZHJlc3Mgb2YNCj4gdGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgdGhlIG5ldyBzdGFjayBhZnRlciBwYWdpbmcgaXMNCj4gZGlzYWJsZWQuDQo+ID4g KyAgQHBhcmFtICBDb250ZXh0MSAgICBUaGUgNjQtYml0IHZpcnR1YWwgYWRkcmVzcyBvZg0KPiB0 aGUgY29udGV4dCB0byBwYXNzIGludG8NCj4gPiArICAgICAgICAgICAgICAgICAgICAgIHRoZSBF bnRyeVBvaW50IGZ1bmN0aW9uIGFzIHRoZQ0KPiBmaXJzdCBwYXJhbWV0ZXIgYWZ0ZXINCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgIHBhZ2luZyBpcyBkaXNhYmxlZC4NCj4gPiArICBAcGFyYW0g IENvbnRleHQyICAgIFRoZSA2NC1iaXQgdmlydHVhbCBhZGRyZXNzIG9mDQo+IHRoZSBjb250ZXh0 IHRvIHBhc3MgaW50bw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgdGhlIEVudHJ5UG9pbnQg ZnVuY3Rpb24gYXMgdGhlDQo+IHNlY29uZCBwYXJhbWV0ZXIgYWZ0ZXINCj4gPiArICAgICAgICAg ICAgICAgICAgICAgIHBhZ2luZyBpcyBkaXNhYmxlZC4NCj4gPiArICBAcGFyYW0gIE5ld1N0YWNr ICAgIFRoZSA2NC1iaXQgdmlydHVhbCBhZGRyZXNzIG9mDQo+IHRoZSBuZXcgc3RhY2sgdG8gdXNl IGZvcg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgdGhlIEVudHJ5UG9pbnQgZnVuY3Rpb24g YWZ0ZXINCj4gcGFnaW5nIGlzIGRpc2FibGVkLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1ZPSUQN Cj4gPiArRUZJQVBJDQo+ID4gK0FzbURpc2FibGVQYWdpbmc2NCAoDQo+ID4gKyAgSU4gICAgICBV SU5UMTYgICAgICAgICAgICAgICAgICAgIENzLA0KPiA+ICsgIElOICAgICAgVUlOVDMyICAgICAg ICAgICAgICAgICAgICBFbnRyeVBvaW50LA0KPiA+ICsgIElOICAgICAgVUlOVDMyICAgICAgICAg ICAgICAgICAgICBDb250ZXh0MSwNCj4gT1BUSU9OQUwNCj4gPiArICBJTiAgICAgIFVJTlQzMiAg ICAgICAgICAgICAgICAgICAgQ29udGV4dDIsDQo+IE9QVElPTkFMDQo+ID4gKyAgSU4gICAgICBV SU5UMzIgICAgICAgICAgICAgICAgICAgIE5ld1N0YWNrDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4g KyAgZ1VuaXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5Bc21EaXNhYmxlUGFnaW5nNjQgKENzLA0KPiBF bnRyeVBvaW50LCBDb250ZXh0MSwgQ29udGV4dDIsIE5ld1N0YWNrKTsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArLyoqDQo+ID4gKyAgUmV0cmlldmVzIHRoZSBwcm9wZXJ0aWVzIGZvciAxNi1iaXQgdGh1 bmsNCj4gZnVuY3Rpb25zLg0KPiA+ICsNCj4gPiArICBDb21wdXRlcyB0aGUgc2l6ZSBvZiB0aGUg YnVmZmVyIGFuZCBzdGFjayBiZWxvdyAxTUINCj4gcmVxdWlyZWQgdG8gdXNlIHRoZQ0KPiA+ICsg IEFzbVByZXBhcmVUaHVuazE2KCksIEFzbVRodW5rMTYoKSBhbmQNCj4gQXNtUHJlcGFyZUFuZFRo dW5rMTYoKSBmdW5jdGlvbnMuIFRoaXMNCj4gPiArICBidWZmZXIgc2l6ZSBpcyByZXR1cm5lZCBp biBSZWFsTW9kZUJ1ZmZlclNpemUsIGFuZA0KPiB0aGUgc3RhY2sgc2l6ZSBpcyByZXR1cm5lZA0K PiA+ICsgIGluIEV4dHJhU3RhY2tTaXplLiBJZiBwYXJhbWV0ZXJzIGFyZSBwYXNzZWQgdG8gdGhl DQo+IDE2LWJpdCByZWFsIG1vZGUgY29kZSwNCj4gPiArICB0aGVuIHRoZSBhY3R1YWwgbWluaW11 bSBzdGFjayBzaXplIGlzDQo+IEV4dHJhU3RhY2tTaXplIHBsdXMgdGhlIG1heGltdW0gbnVtYmVy DQo+ID4gKyAgb2YgYnl0ZXMgdGhhdCBuZWVkIHRvIGJlIHBhc3NlZCB0byB0aGUgMTYtYml0IHJl YWwNCj4gbW9kZSBjb2RlLg0KPiA+ICsNCj4gPiArICBJZiBSZWFsTW9kZUJ1ZmZlclNpemUgaXMg TlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPiArICBJZiBFeHRyYVN0YWNrU2l6ZSBpcyBOVUxMLCB0 aGVuIEFTU0VSVCgpLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIFJlYWxNb2RlQnVmZmVyU2l6ZSAg QSBwb2ludGVyIHRvIHRoZSBzaXplDQo+IG9mIHRoZSBidWZmZXIgYmVsb3cgMU1CDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkIHRvIHVzZSB0aGUgMTYtDQo+IGJp dCB0aHVuayBmdW5jdGlvbnMuDQo+ID4gKyAgQHBhcmFtICBFeHRyYVN0YWNrU2l6ZSAgICAgIEEg cG9pbnRlciB0byB0aGUgZXh0cmENCj4gc2l6ZSBvZiBzdGFjayBiZWxvdyAxTUINCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCB0aGUgMTYtYml0IHRodW5rDQo+IGZ1bmN0 aW9ucyByZXF1aXJlIGZvcg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1w b3Jhcnkgc3RvcmFnZSBpbg0KPiB0aGUgdHJhbnNpdGlvbiB0byBhbmQgZnJvbQ0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAxNi1iaXQgcmVhbCBtb2RlLg0KPiA+ICsNCj4gPiAr KiovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK0FzbUdldFRodW5rMTZQcm9wZXJ0aWVz ICgNCj4gPiArICBPVVQgICAgIFVJTlQzMg0KPiAqUmVhbE1vZGVCdWZmZXJTaXplLA0KPiA+ICsg IE9VVCAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAqRXh0cmFTdGFja1NpemUNCj4gPiAr ICApDQo+ID4gK3sNCj4gPiArICBnVW5pdFRlc3RIb3N0QmFzZUxpYi5YODYtPkFzbUdldFRodW5r MTZQcm9wZXJ0aWVzDQo+IChSZWFsTW9kZUJ1ZmZlclNpemUsIEV4dHJhU3RhY2tTaXplKTsNCj4g PiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUHJlcGFyZXMgYWxsIHN0cnVjdHVyZXMgYSBj b2RlIHJlcXVpcmVkIHRvIHVzZQ0KPiBBc21UaHVuazE2KCkuDQo+ID4gKw0KPiA+ICsgIFByZXBh cmVzIGFsbCBzdHJ1Y3R1cmVzIGFuZCBjb2RlIHJlcXVpcmVkIHRvIHVzZQ0KPiBBc21UaHVuazE2 KCkuDQo+ID4gKw0KPiA+ICsgIFRoaXMgaW50ZXJmYWNlIGlzIGxpbWl0ZWQgdG8gYmUgdXNlZCBp biBlaXRoZXINCj4gcGh5c2ljYWwgbW9kZSBvciB2aXJ0dWFsIG1vZGVzIHdpdGggcGFnaW5nIGVu YWJsZWQgd2hlcmUNCj4gdGhlDQo+ID4gKyAgdmlydHVhbCB0byBwaHlzaWNhbCBtYXBwaW5ncyBm b3INCj4gVGh1bmtDb250ZXh0LlJlYWxNb2RlQnVmZmVyIGlzIG1hcHBlZCAxOjEuDQo+ID4gKw0K PiA+ICsgIElmIFRodW5rQ29udGV4dCBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+ICsNCj4g PiArICBAcGFyYW0gIFRodW5rQ29udGV4dCAgQSBwb2ludGVyIHRvIHRoZSBjb250ZXh0DQo+IHN0 cnVjdHVyZSB0aGF0IGRlc2NyaWJlcyB0aGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg MTYtYml0IHJlYWwgbW9kZSBjb2RlIHRvDQo+IGNhbGwuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiAr Vk9JRA0KPiA+ICtFRklBUEkNCj4gPiArQXNtUHJlcGFyZVRodW5rMTYgKA0KPiA+ICsgIElOIE9V VCAgVEhVTktfQ09OVEVYVCAgICAgICAgICAgICAqVGh1bmtDb250ZXh0DQo+ID4gKyAgKQ0KPiA+ ICt7DQo+ID4gKyAgZ1VuaXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5Bc21QcmVwYXJlVGh1bmsxNg0K PiAoVGh1bmtDb250ZXh0KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgVHJhbnNm ZXJzIGNvbnRyb2wgdG8gYSAxNi1iaXQgcmVhbCBtb2RlIGVudHJ5IHBvaW50DQo+IGFuZCByZXR1 cm5zIHRoZSByZXN1bHRzLg0KPiA+ICsNCj4gPiArICBUcmFuc2ZlcnMgY29udHJvbCB0byBhIDE2 LWJpdCByZWFsIG1vZGUgZW50cnkgcG9pbnQNCj4gYW5kIHJldHVybnMgdGhlIHJlc3VsdHMuDQo+ ID4gKyAgQXNtUHJlcGFyZVRodW5rMTYoKSBtdXN0IGJlIGNhbGxlZCB3aXRoDQo+IFRodW5rQ29u dGV4dCBiZWZvcmUgdGhpcyBmdW5jdGlvbiBpcyB1c2VkLg0KPiA+ICsgIFRoaXMgZnVuY3Rpb24g bXVzdCBiZSBjYWxsZWQgd2l0aCBpbnRlcnJ1cHRzDQo+IGRpc2FibGVkLg0KPiA+ICsNCj4gPiAr ICBUaGUgcmVnaXN0ZXIgc3RhdGUgZnJvbSB0aGUgUmVhbE1vZGVTdGF0ZSBmaWVsZCBvZg0KPiBU aHVua0NvbnRleHQgaXMgcmVzdG9yZWQganVzdCBwcmlvcg0KPiA+ICsgIHRvIGNhbGxpbmcgdGhl IDE2LWJpdCByZWFsIG1vZGUgZW50cnkgcG9pbnQuICBUaGlzDQo+IGluY2x1ZGVzIHRoZSBFRkxB R1MgZmllbGQgb2YgUmVhbE1vZGVTdGF0ZSwNCj4gPiArICB3aGljaCBpcyB1c2VkIHRvIHNldCB0 aGUgaW50ZXJydXB0IHN0YXRlIHdoZW4gYSAxNi0NCj4gYml0IHJlYWwgbW9kZSBlbnRyeSBwb2lu dCBpcyBjYWxsZWQuDQo+ID4gKyAgQ29udHJvbCBpcyB0cmFuc2ZlcnJlZCB0byB0aGUgMTYtYml0 IHJlYWwgbW9kZQ0KPiBlbnRyeSBwb2ludCBzcGVjaWZpZWQgYnkgdGhlIENTIGFuZCBFaXAgZmll bGRzIG9mDQo+IFJlYWxNb2RlU3RhdGUuDQo+ID4gKyAgVGhlIHN0YWNrIGlzIGluaXRpYWxpemVk IHRvIHRoZSBTUyBhbmQgRVNQIGZpZWxkcw0KPiBvZiBSZWFsTW9kZVN0YXRlLiAgQW55IHBhcmFt ZXRlcnMgcGFzc2VkIHRvDQo+ID4gKyAgdGhlIDE2LWJpdCByZWFsIG1vZGUgY29kZSBtdXN0IGJl IHBvcHVsYXRlZCBieSB0aGUNCj4gY2FsbGVyIGF0IFNTOkVTUCBwcmlvciB0byBjYWxsaW5nIHRo aXMgZnVuY3Rpb24uDQo+ID4gKyAgVGhlIDE2LWJpdCByZWFsIG1vZGUgZW50cnkgcG9pbnQgaXMg aW52b2tlZCB3aXRoIGENCj4gMTYtYml0IENBTEwgRkFSIGluc3RydWN0aW9uLA0KPiA+ICsgIHNv IHdoZW4gYWNjZXNzaW5nIHN0YWNrIGNvbnRlbnRzLCB0aGUgMTYtYml0IHJlYWwNCj4gbW9kZSBj b2RlIG11c3QgYWNjb3VudCBmb3IgdGhlIDE2LWJpdCBzZWdtZW50DQo+ID4gKyAgYW5kIDE2LWJp dCBvZmZzZXQgb2YgdGhlIHJldHVybiBhZGRyZXNzIHRoYXQgd2VyZQ0KPiBwdXNoZWQgb250byB0 aGUgc3RhY2suIFRoZSAxNi1iaXQgcmVhbCBtb2RlIGVudHJ5DQo+ID4gKyAgcG9pbnQgbXVzdCBl eGl0IHdpdGggYSBSRVRGIGluc3RydWN0aW9uLiBUaGUNCj4gcmVnaXN0ZXIgc3RhdGUgaXMgY2Fw dHVyZWQgaW50byBSZWFsTW9kZVN0YXRlDQo+IGltbWVkaWF0ZWx5DQo+ID4gKyAgYWZ0ZXIgdGhl IFJFVEYgaW5zdHJ1Y3Rpb24gaXMgZXhlY3V0ZWQuDQo+ID4gKw0KPiA+ICsgIElmIEVGTEFHUyBz cGVjaWZpZXMgaW50ZXJydXB0cyBlbmFibGVkLCBvciBhbnkgb2YNCj4gdGhlIDE2LWJpdCByZWFs IG1vZGUgY29kZSBlbmFibGVzIGludGVycnVwdHMsDQo+ID4gKyAgb3IgYW55IG9mIHRoZSAxNi1i aXQgcmVhbCBtb2RlIGNvZGUgbWFrZXMgYSBTVw0KPiBpbnRlcnJ1cHQsIHRoZW4gdGhlIGNhbGxl ciBpcyByZXNwb25zaWJsZSBmb3IgbWFraW5nDQo+IHN1cmUNCj4gPiArICB0aGUgSURUIGF0IGFk ZHJlc3MgMCBpcyBpbml0aWFsaXplZCB0byBoYW5kbGUgYW55DQo+IEhXIG9yIFNXIGludGVycnVw dHMgdGhhdCBtYXkgb2NjdXIgd2hpbGUgaW4gMTYtYml0IHJlYWwNCj4gbW9kZS4NCj4gPiArDQo+ ID4gKyAgSWYgRUZMQUdTIHNwZWNpZmllcyBpbnRlcnJ1cHRzIGVuYWJsZWQsIG9yIGFueSBvZg0K PiB0aGUgMTYtYml0IHJlYWwgbW9kZSBjb2RlIGVuYWJsZXMgaW50ZXJydXB0cywNCj4gPiArICB0 aGVuIHRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIG1ha2luZyBzdXJlIHRoZQ0KPiA4MjU5 IFBJQyBpcyBpbiBhIHN0YXRlIGNvbXBhdGlibGUgd2l0aCAxNi1iaXQgcmVhbCBtb2RlLg0KPiA+ ICsgIFRoaXMgaW5jbHVkZXMgdGhlIGJhc2UgdmVjdG9ycywgdGhlIGludGVycnVwdA0KPiBtYXNr cywgYW5kIHRoZSBlZGdlL2xldmVsIHRyaWdnZXIgbW9kZS4NCj4gPiArDQo+ID4gKyAgSWYgVEhV TktfQVRUUklCVVRFX0JJR19SRUFMX01PREUgaXMgc2V0IGluIHRoZQ0KPiBUaHVua0F0dHJpYnV0 ZXMgZmllbGQgb2YgVGh1bmtDb250ZXh0LCB0aGVuIHRoZSB1c2VyDQo+IGNvZGUNCj4gPiArICBp cyBpbnZva2VkIGluIGJpZyByZWFsIG1vZGUuICBPdGhlcndpc2UsIHRoZSB1c2VyDQo+IGNvZGUg aXMgaW52b2tlZCBpbiAxNi1iaXQgcmVhbCBtb2RlIHdpdGggNjRLQiBzZWdtZW50DQo+IGxpbWl0 cy4NCj4gPiArDQo+ID4gKyAgSWYgbmVpdGhlciBUSFVOS19BVFRSSUJVVEVfRElTQUJMRV9BMjBf TUFTS19JTlRfMTUNCj4gbm9yIFRIVU5LX0FUVFJJQlVURV9ESVNBQkxFX0EyMF9NQVNLX0tCRF9D VFJMIGFyZSBzZXQgaW4NCj4gPiArICBUaHVua0F0dHJpYnV0ZXMsIHRoZW4gaXQgaXMgYXNzdW1l ZCB0aGF0IHRoZSB1c2VyDQo+IGNvZGUgZGlkIG5vdCBlbmFibGUgdGhlIEEyMCBtYXNrLCBhbmQg bm8gYXR0ZW1wdCBpcyBtYWRlDQo+IHRvDQo+ID4gKyAgZGlzYWJsZSB0aGUgQTIwIG1hc2suDQo+ ID4gKw0KPiA+ICsgIElmIFRIVU5LX0FUVFJJQlVURV9ESVNBQkxFX0EyMF9NQVNLX0lOVF8xNSBp cyBzZXQNCj4gYW5kIFRIVU5LX0FUVFJJQlVURV9ESVNBQkxFX0EyMF9NQVNLX0tCRF9DVFJMIGlz IGNsZWFyDQo+IGluDQo+ID4gKyAgVGh1bmtBdHRyaWJ1dGVzLCB0aGVuIGF0dGVtcHQgdG8gdXNl IHRoZSBJTlQgMTUNCj4gc2VydmljZSB0byBkaXNhYmxlIHRoZSBBMjAgbWFzay4gIElmIHRoaXMg SU5UIDE1IGNhbGwNCj4gZmFpbHMsDQo+ID4gKyAgdGhlbiBhdHRlbXB0IHRvIGRpc2FibGUgdGhl IEEyMCBtYXNrIGJ5IGRpcmVjdGx5DQo+IGFjY2Vzc2luZyB0aGUgODA0MiBrZXlib2FyZCBjb250 cm9sbGVyIEkvTyBwb3J0cy4NCj4gPiArDQo+ID4gKyAgSWYgVEhVTktfQVRUUklCVVRFX0RJU0FC TEVfQTIwX01BU0tfSU5UXzE1IGlzIGNsZWFyDQo+IGFuZCBUSFVOS19BVFRSSUJVVEVfRElTQUJM RV9BMjBfTUFTS19LQkRfQ1RSTCBpcyBzZXQgaW4NCj4gPiArICBUaHVua0F0dHJpYnV0ZXMsIHRo ZW4gYXR0ZW1wdCB0byBkaXNhYmxlIHRoZSBBMjANCj4gbWFzayBieSBkaXJlY3RseSBhY2Nlc3Np bmcgdGhlIDgwNDIga2V5Ym9hcmQgY29udHJvbGxlcg0KPiBJL08gcG9ydHMuDQo+ID4gKw0KPiA+ ICsgIElmIFRodW5rQ29udGV4dCBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+ICsgIElmIEFz bVByZXBhcmVUaHVuazE2KCkgd2FzIG5vdCBwcmV2aW91c2x5IGNhbGxlZA0KPiB3aXRoIFRodW5r Q29udGV4dCwgdGhlbiBBU1NFUlQoKS4NCj4gPiArICBJZiBib3RoIFRIVU5LX0FUVFJJQlVURV9E SVNBQkxFX0EyMF9NQVNLX0lOVF8xNSBhbmQNCj4gVEhVTktfQVRUUklCVVRFX0RJU0FCTEVfQTIw X01BU0tfS0JEX0NUUkwgYXJlIHNldCBpbg0KPiA+ICsgIFRodW5rQXR0cmlidXRlcywgdGhlbiBB U1NFUlQoKS4NCj4gPiArDQo+ID4gKyAgVGhpcyBpbnRlcmZhY2UgaXMgbGltaXRlZCB0byBiZSB1 c2VkIGluIGVpdGhlcg0KPiBwaHlzaWNhbCBtb2RlIG9yIHZpcnR1YWwgbW9kZXMgd2l0aCBwYWdp bmcgZW5hYmxlZCB3aGVyZQ0KPiB0aGUNCj4gPiArICB2aXJ0dWFsIHRvIHBoeXNpY2FsIG1hcHBp bmdzIGZvcg0KPiBUaHVua0NvbnRleHQuUmVhbE1vZGVCdWZmZXIgYXJlIG1hcHBlZCAxOjEuDQo+ ID4gKw0KPiA+ICsgIEBwYXJhbSAgVGh1bmtDb250ZXh0ICBBIHBvaW50ZXIgdG8gdGhlIGNvbnRl eHQNCj4gc3RydWN0dXJlIHRoYXQgZGVzY3JpYmVzIHRoZQ0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAxNi1iaXQgcmVhbCBtb2RlIGNvZGUgdG8NCj4gY2FsbC4NCj4gPiArDQo+ID4gKyoq Lw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtBc21UaHVuazE2ICgNCj4gPiArICBJTiBP VVQgIFRIVU5LX0NPTlRFWFQgICAgICAgICAgICAgKlRodW5rQ29udGV4dA0KPiA+ICsgICkNCj4g PiArew0KPiA+ICsgIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+QXNtVGh1bmsxNg0KPiAoVGh1 bmtDb250ZXh0KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUHJlcGFyZXMgYWxs IHN0cnVjdHVyZXMgYW5kIGNvZGUgZm9yIGEgMTYtYml0IHJlYWwNCj4gbW9kZSB0aHVuaywgdHJh bnNmZXJzDQo+ID4gKyAgY29udHJvbCB0byBhIDE2LWJpdCByZWFsIG1vZGUgZW50cnkgcG9pbnQs IGFuZA0KPiByZXR1cm5zIHRoZSByZXN1bHRzLg0KPiA+ICsNCj4gPiArICBQcmVwYXJlcyBhbGwg c3RydWN0dXJlcyBhbmQgY29kZSBmb3IgYSAxNi1iaXQgcmVhbA0KPiBtb2RlIHRodW5rLCB0cmFu c2ZlcnMNCj4gPiArICBjb250cm9sIHRvIGEgMTYtYml0IHJlYWwgbW9kZSBlbnRyeSBwb2ludCwg YW5kDQo+IHJldHVybnMgdGhlIHJlc3VsdHMuIElmIHRoZQ0KPiA+ICsgIGNhbGxlciBvbmx5IG5l ZWQgdG8gcGVyZm9ybSBhIHNpbmdsZSAxNi1iaXQgcmVhbA0KPiBtb2RlIHRodW5rLCB0aGVuIHRo aXMNCj4gPiArICBzZXJ2aWNlIHNob3VsZCBiZSB1c2VkLiBJZiB0aGUgY2FsbGVyIGludGVuZHMg dG8NCj4gbWFrZSBtb3JlIHRoYW4gb25lIDE2LWJpdA0KPiA+ICsgIHJlYWwgbW9kZSB0aHVuaywg dGhlbiBpdCBpcyBtb3JlIGVmZmljaWVudCBpZg0KPiBBc21QcmVwYXJlVGh1bmsxNigpIGlzIGNh bGxlZA0KPiA+ICsgIG9uY2UgYW5kIEFzbVRodW5rMTYoKSBjYW4gYmUgY2FsbGVkIGZvciBlYWNo IDE2LWJpdA0KPiByZWFsIG1vZGUgdGh1bmsuDQo+ID4gKw0KPiA+ICsgIFRoaXMgaW50ZXJmYWNl IGlzIGxpbWl0ZWQgdG8gYmUgdXNlZCBpbiBlaXRoZXINCj4gcGh5c2ljYWwgbW9kZSBvciB2aXJ0 dWFsIG1vZGVzIHdpdGggcGFnaW5nIGVuYWJsZWQgd2hlcmUNCj4gdGhlDQo+ID4gKyAgdmlydHVh bCB0byBwaHlzaWNhbCBtYXBwaW5ncyBmb3INCj4gVGh1bmtDb250ZXh0LlJlYWxNb2RlQnVmZmVy IGlzIG1hcHBlZCAxOjEuDQo+ID4gKw0KPiA+ICsgIFNlZSBBc21QcmVwYXJlVGh1bmsxNigpIGFu ZCBBc21UaHVuazE2KCkgZm9yIHRoZQ0KPiBkZXRhaWxlZCBkZXNjcmlwdGlvbiBhbmQgQVNTRVJU KCkgY29uZGl0aW9ucy4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBUaHVua0NvbnRleHQgIEEgcG9p bnRlciB0byB0aGUgY29udGV4dA0KPiBzdHJ1Y3R1cmUgdGhhdCBkZXNjcmliZXMgdGhlDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgIDE2LWJpdCByZWFsIG1vZGUgY29kZSB0bw0KPiBjYWxs Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK0FzbVByZXBh cmVBbmRUaHVuazE2ICgNCj4gPiArICBJTiBPVVQgIFRIVU5LX0NPTlRFWFQgICAgICAgICAgICAg KlRodW5rQ29udGV4dA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIGdVbml0VGVzdEhvc3RCYXNl TGliLlg4Ni0+QXNtUHJlcGFyZUFuZFRodW5rMTYNCj4gKFRodW5rQ29udGV4dCk7DQo+ID4gK30N Cj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIExvYWQgZ2l2ZW4gc2VsZWN0b3IgaW50byBUUiByZWdp c3Rlci4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSBTZWxlY3RvciAgICAgVGFzayBzZWdtZW50 IHNlbGVjdG9yDQo+ID4gKyoqLw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtBc21Xcml0 ZVRyICgNCj4gPiArICBJTiBVSU5UMTYgU2VsZWN0b3INCj4gPiArICApDQo+ID4gK3sNCj4gPiAr ICBnVW5pdFRlc3RIb3N0QmFzZUxpYi5YODYtPkFzbVdyaXRlVHIgKFNlbGVjdG9yKTsNCj4gPiAr fQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUGVyZm9ybXMgYSBzZXJpYWxpemluZyBvcGVyYXRp b24gb24gYWxsIGxvYWQtZnJvbS0NCj4gbWVtb3J5IGluc3RydWN0aW9ucyB0aGF0DQo+ID4gKyAg d2VyZSBpc3N1ZWQgcHJpb3IgdGhlIEFzbUxmZW5jZSBmdW5jdGlvbi4NCj4gPiArDQo+ID4gKyAg RXhlY3V0ZXMgYSBMRkVOQ0UgaW5zdHJ1Y3Rpb24uIFRoaXMgZnVuY3Rpb24gaXMNCj4gb25seSBh dmFpbGFibGUgb24gSUEtMzIgYW5kIHg2NC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtWT0lEDQo+ ID4gK0VGSUFQSQ0KPiA+ICtBc21MZmVuY2UgKA0KPiA+ICsgIFZPSUQNCj4gPiArICApDQo+ID4g K3sNCj4gPiArICBnVW5pdFRlc3RIb3N0QmFzZUxpYi5YODYtPkFzbUxmZW5jZSAoKTsNCj4gPiAr fQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUGF0Y2ggdGhlIGltbWVkaWF0ZSBvcGVyYW5kIG9m IGFuIElBMzIgb3IgWDY0DQo+IGluc3RydWN0aW9uIHN1Y2ggdGhhdCB0aGUgYnl0ZSwNCj4gPiAr ICB3b3JkLCBkd29yZCBvciBxd29yZCBvcGVyYW5kIGlzIGVuY29kZWQgYXQgdGhlIGVuZA0KPiBv ZiB0aGUgaW5zdHJ1Y3Rpb24ncw0KPiA+ICsgIGJpbmFyeSByZXByZXNlbnRhdGlvbi4NCj4gPiAr DQo+ID4gKyAgVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgdXNlZCB0byB1cGRhdGUgb2JqZWN0IGNv ZGUNCj4gdGhhdCB3YXMgY29tcGlsZWQgd2l0aA0KPiA+ICsgIE5BU00gZnJvbSBhc3NlbWJseSBz b3VyY2UgY29kZS4gRXhhbXBsZToNCj4gPiArDQo+ID4gKyAgTkFTTSBzb3VyY2UgY29kZToNCj4g PiArDQo+ID4gKyAgICAgICAgbW92ICAgICBlYXgsIHN0cmljdCBkd29yZCAwIDsgdGhlIGltbTMy IHplcm8NCj4gb3BlcmFuZCB3aWxsIGJlIHBhdGNoZWQNCj4gPiArICAgIEFTTV9QRlgoZ1BhdGNo Q3IzKToNCj4gPiArICAgICAgICBtb3YgICAgIGNyMywgZWF4DQo+ID4gKw0KPiA+ICsgIEMgc291 cmNlIGNvZGU6DQo+ID4gKw0KPiA+ICsgICAgWDg2X0FTU0VNQkxZX1BBVENIX0xBQkVMIGdQYXRj aENyMzsNCj4gPiArICAgIFBhdGNoSW5zdHJ1Y3Rpb25YODYgKGdQYXRjaENyMywgQXNtUmVhZENy MyAoKSwNCj4gNCk7DQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtvdXRdIEluc3RydWN0aW9uRW5kICBQ b2ludGVyIHJpZ2h0IHBhc3QgdGhlDQo+IGluc3RydWN0aW9uIHRvIHBhdGNoLiBUaGUNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1tZWRpYXRlIG9wZXJhbmQgdG8NCj4gcGF0 Y2ggaXMgZXhwZWN0ZWQgdG8NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29t cHJpc2UgdGhlIHRyYWlsaW5nDQo+IGJ5dGVzIG9mIHRoZSBpbnN0cnVjdGlvbi4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgSW5zdHJ1Y3Rpb25FbmQgaXMNCj4gY2xvc2Vy IHRvIGFkZHJlc3MgMCB0aGFuDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh bHVlU2l6ZSBwZXJtaXRzLCB0aGVuDQo+IEFTU0VSVCgpLg0KPiA+ICsNCj4gPiArICBAcGFyYW1b aW5dIFBhdGNoVmFsdWUgICAgICAgVGhlIGNvbnN0YW50IHRvIHdyaXRlDQo+IHRvIHRoZSBpbW1l ZGlhdGUgb3BlcmFuZC4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGNh bGxlciBpcw0KPiByZXNwb25zaWJsZSBmb3IgZW5zdXJpbmcgdGhhdA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQYXRjaFZhbHVlIGNhbiBiZQ0KPiByZXByZXNlbnRlZCBpbiB0 aGUgYnl0ZSwgd29yZCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHdvcmQg b3IgcXdvcmQgb3BlcmFuZA0KPiAoYXMgaW5kaWNhdGVkIHRocm91Z2gNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgVmFsdWVTaXplKTsgb3RoZXJ3aXNlDQo+IEFTU0VSVCgpLg0K PiA+ICsNCj4gPiArICBAcGFyYW1baW5dIFZhbHVlU2l6ZSAgICAgICAgVGhlIHNpemUgb2YgdGhl IG9wZXJhbmQNCj4gaW4gYnl0ZXM7IG11c3QgYmUgMSwgMiwNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgNCwgb3IgOC4gQVNTRVJUKCkNCj4gb3RoZXJ3aXNlLg0KPiA+ICsqKi8N Cj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArUGF0Y2hJbnN0cnVjdGlvblg4NiAoDQo+ID4g KyAgT1VUIFg4Nl9BU1NFTUJMWV9QQVRDSF9MQUJFTCAqSW5zdHJ1Y3Rpb25FbmQsDQo+ID4gKyAg SU4gIFVJTlQ2NCAgICAgICAgICAgICAgICAgICBQYXRjaFZhbHVlLA0KPiA+ICsgIElOICBVSU5U TiAgICAgICAgICAgICAgICAgICAgVmFsdWVTaXplDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAg Z1VuaXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5QYXRjaEluc3RydWN0aW9uWDg2DQo+IChJbnN0cnVj dGlvbkVuZCwgUGF0Y2hWYWx1ZSwgVmFsdWVTaXplKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLy8v DQo+ID4gKy8vLyBDb21tb24gc2VydmljZXMNCj4gPiArLy8vDQo+ID4gK1NUQVRJQyBVTklUX1RF U1RfSE9TVF9CQVNFX0xJQl9DT01NT04NCj4gbVVuaXRUZXN0SG9zdEJhc2VMaWJDb21tb24gPSB7 DQo+ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxpYkVuYWJsZUludGVycnVwdHMsDQo+ID4gKyAgVW5p dFRlc3RIb3N0QmFzZUxpYkRpc2FibGVJbnRlcnJ1cHRzLA0KPiA+ICsgIFVuaXRUZXN0SG9zdEJh c2VMaWJFbmFibGVEaXNhYmxlSW50ZXJydXB0cywNCj4gPiArICBVbml0VGVzdEhvc3RCYXNlTGli R2V0SW50ZXJydXB0U3RhdGUsDQo+ID4gK307DQo+ID4gKw0KPiA+ICsvLy8NCj4gPiArLy8vIElB MzIvWDY0IHNlcnZpY2VzDQo+ID4gKy8vLw0KPiA+ICtTVEFUSUMgVU5JVF9URVNUX0hPU1RfQkFT RV9MSUJfWDg2DQo+IG1Vbml0VGVzdEhvc3RCYXNlTGliWDg2ID0gew0KPiA+ICsgIFVuaXRUZXN0 SG9zdEJhc2VMaWJBc21DcHVpZCwNCj4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNtQ3B1aWRF eCwNCj4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNtRGlzYWJsZUNhY2hlLA0KPiA+ICsgIFVu aXRUZXN0SG9zdEJhc2VMaWJBc21FbmFibGVDYWNoZSwNCj4gPiArICBVbml0VGVzdEhvc3RCYXNl TGliQXNtUmVhZE1zcjY0LA0KPiA+ICsgIFVuaXRUZXN0SG9zdEJhc2VMaWJBc21Xcml0ZU1zcjY0 LA0KPiA+ICsgIFVuaXRUZXN0SG9zdEJhc2VMaWJBc21SZWFkQ3IwLA0KPiA+ICsgIFVuaXRUZXN0 SG9zdEJhc2VMaWJBc21SZWFkQ3IyLA0KPiA+ICsgIFVuaXRUZXN0SG9zdEJhc2VMaWJBc21SZWFk Q3IzLA0KPiA+ICsgIFVuaXRUZXN0SG9zdEJhc2VMaWJBc21SZWFkQ3I0LA0KPiA+ICsgIFVuaXRU ZXN0SG9zdEJhc2VMaWJBc21Xcml0ZUNyMCwNCj4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNt V3JpdGVDcjIsDQo+ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVdyaXRlQ3IzLA0KPiA+ICsg IFVuaXRUZXN0SG9zdEJhc2VMaWJBc21Xcml0ZUNyNCwNCj4gPiArICBVbml0VGVzdEhvc3RCYXNl TGliQXNtUmVhZERyMCwNCj4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNtUmVhZERyMSwNCj4g PiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNtUmVhZERyMiwNCj4gPiArICBVbml0VGVzdEhvc3RC YXNlTGliQXNtUmVhZERyMywNCj4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNtUmVhZERyNCwN Cj4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNtUmVhZERyNSwNCj4gPiArICBVbml0VGVzdEhv c3RCYXNlTGliQXNtUmVhZERyNiwNCj4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNtUmVhZERy NywNCj4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNtV3JpdGVEcjAsDQo+ID4gKyAgVW5pdFRl c3RIb3N0QmFzZUxpYkFzbVdyaXRlRHIxLA0KPiA+ICsgIFVuaXRUZXN0SG9zdEJhc2VMaWJBc21X cml0ZURyMiwNCj4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNtV3JpdGVEcjMsDQo+ID4gKyAg VW5pdFRlc3RIb3N0QmFzZUxpYkFzbVdyaXRlRHI0LA0KPiA+ICsgIFVuaXRUZXN0SG9zdEJhc2VM aWJBc21Xcml0ZURyNSwNCj4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNtV3JpdGVEcjYsDQo+ ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVdyaXRlRHI3LA0KPiA+ICsgIFVuaXRUZXN0SG9z dEJhc2VMaWJBc21SZWFkQ3MsDQo+ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVJlYWREcywN Cj4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNtUmVhZEVzLA0KPiA+ICsgIFVuaXRUZXN0SG9z dEJhc2VMaWJBc21SZWFkRnMsDQo+ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVJlYWRHcywN Cj4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNtUmVhZFNzLA0KPiA+ICsgIFVuaXRUZXN0SG9z dEJhc2VMaWJBc21SZWFkVHIsDQo+ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVJlYWRHZHRy LA0KPiA+ICsgIFVuaXRUZXN0SG9zdEJhc2VMaWJBc21Xcml0ZUdkdHIsDQo+ID4gKyAgVW5pdFRl c3RIb3N0QmFzZUxpYkFzbVJlYWRJZHRyLA0KPiA+ICsgIFVuaXRUZXN0SG9zdEJhc2VMaWJBc21X cml0ZUlkdHIsDQo+ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVJlYWRMZHRyLA0KPiA+ICsg IFVuaXRUZXN0SG9zdEJhc2VMaWJBc21Xcml0ZUxkdHIsDQo+ID4gKyAgVW5pdFRlc3RIb3N0QmFz ZUxpYkFzbVJlYWRQbWMsDQo+ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxpYkFzbU1vbml0b3IsDQo+ ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxpYkFzbU13YWl0LA0KPiA+ICsgIFVuaXRUZXN0SG9zdEJh c2VMaWJBc21XYmludmQsDQo+ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxpYkFzbUludmQsDQo+ID4g KyAgVW5pdFRlc3RIb3N0QmFzZUxpYkFzbUZsdXNoQ2FjaGVMaW5lLA0KPiA+ICsgIFVuaXRUZXN0 SG9zdEJhc2VMaWJBc21FbmFibGVQYWdpbmczMiwNCj4gPiArICBVbml0VGVzdEhvc3RCYXNlTGli QXNtRGlzYWJsZVBhZ2luZzMyLA0KPiA+ICsgIFVuaXRUZXN0SG9zdEJhc2VMaWJBc21FbmFibGVQ YWdpbmc2NCwNCj4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNtRGlzYWJsZVBhZ2luZzY0LA0K PiA+ICsgIFVuaXRUZXN0SG9zdEJhc2VMaWJBc21HZXRUaHVuazE2UHJvcGVydGllcywNCj4gPiAr ICBVbml0VGVzdEhvc3RCYXNlTGliQXNtUHJlcGFyZVRodW5rMTYsDQo+ID4gKyAgVW5pdFRlc3RI b3N0QmFzZUxpYkFzbVRodW5rMTYsDQo+ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVByZXBh cmVBbmRUaHVuazE2LA0KPiA+ICsgIFVuaXRUZXN0SG9zdEJhc2VMaWJBc21Xcml0ZVRyLA0KPiA+ ICsgIFVuaXRUZXN0SG9zdEJhc2VMaWJBc21MZmVuY2UsDQo+ID4gKyAgVW5pdFRlc3RIb3N0QmFz ZUxpYlBhdGNoSW5zdHJ1Y3Rpb25YODYNCj4gPiArfTsNCj4gPiArDQo+ID4gKy8vLw0KPiA+ICsv Ly8gU3RydWN0dXJlIG9mIGhvb2sgZnVuY3Rpb25zIGZvciBCYXNlTGliIGZ1bmN0aW9ucw0KPiB0 aGF0IGNhbiBub3QgYmUgdXNlZCBmcm9tDQo+ID4gKy8vLyBhIGhvc3QgYXBwbGljYXRpb24uICBB IHNpbXBsZSBlbXVsYXRpb24gb2YgdGhlc2UNCj4gZnVuY3Rpb24gaXMgcHJvdmlkZWQgYnkNCj4g PiArLy8vIGRlZmF1bHQuICBBIHNwZWNpZmljIHVuaXQgdGVzdCBjYW4gcHJvdmlkZSBpdHMNCj4g b3duIGltcGxlbWVudGF0aW9uIGZvciBhbnkNCj4gPiArLy8vIG9mIHRoZXNlIGZ1bmN0aW9ucy4N Cj4gPiArLy8vDQo+ID4gK1VOSVRfVEVTVF9IT1NUX0JBU0VfTElCICBnVW5pdFRlc3RIb3N0QmFz ZUxpYiA9IHsNCj4gPiArICAmbVVuaXRUZXN0SG9zdEJhc2VMaWJDb21tb24sDQo+ID4gKyAgJm1V bml0VGVzdEhvc3RCYXNlTGliWDg2DQo+ID4gK307DQo+ID4gZGlmZiAtLWdpdCBhL01kZVBrZy9N ZGVQa2cuZGVjIGIvTWRlUGtnL01kZVBrZy5kZWMNCj4gPiBpbmRleCA2ODJlNjFjYjg4Li44NTUw MTIxNzJkIDEwMDY0NA0KPiA+IC0tLSBhL01kZVBrZy9NZGVQa2cuZGVjDQo+ID4gKysrIGIvTWRl UGtnL01kZVBrZy5kZWMNCj4gPiBAQCAtNCw3ICs0LDcgQEANCj4gPiAgIyBJdCBhbHNvIHByb3Zp ZGVzIHRoZSBkZWZpbml0aW9ucyhpbmNsdWRpbmcNCj4gUFBJcy9QUk9UT0NPTHMvR1VJRHMpIG9m DQo+ID4gICMgRUZJMS4xMC9VRUZJMi43L1BJMS43IGFuZCBzb21lIEluZHVzdHJ5IFN0YW5kYXJk cy4NCj4gPiAgIw0KPiA+IC0jIENvcHlyaWdodCAoYykgMjAwNyAtIDIwMTksIEludGVsIENvcnBv cmF0aW9uLiBBbGwNCj4gcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiArIyBDb3B5cmlnaHQgKGMp IDIwMDcgLSAyMDIwLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsDQo+IHJpZ2h0cyByZXNlcnZlZC48 QlI+DQo+ID4gICMgUG9ydGlvbnMgY29weXJpZ2h0IChjKSAyMDA4IC0gMjAwOSwgQXBwbGUgSW5j LiBBbGwNCj4gcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiAgIyAoQykgQ29weXJpZ2h0IDIwMTYg LSAyMDIwIEhld2xldHQgUGFja2FyZA0KPiBFbnRlcnByaXNlIERldmVsb3BtZW50IExQPEJSPg0K PiA+ICAjDQo+ID4gQEAgLTIzLDYgKzIzLDcgQEAgW0RlZmluZXNdDQo+ID4NCj4gPiAgW0luY2x1 ZGVzXQ0KPiA+ICAgIEluY2x1ZGUNCj4gPiArICBUZXN0L1VuaXRUZXN0L0luY2x1ZGUNCj4gPg0K PiA+ICBbSW5jbHVkZXMuSUEzMl0NCj4gPiAgICBJbmNsdWRlL0lhMzINCj4gPiBkaWZmIC0tZ2l0 IGEvTWRlUGtnL1Rlc3QvTWRlUGtnSG9zdFRlc3QuZHNjDQo+IGIvTWRlUGtnL1Rlc3QvTWRlUGtn SG9zdFRlc3QuZHNjDQo+ID4gaW5kZXggM2Q2NzdlZTc1Yy4uMGNhYzE0ZjBlNSAxMDA2NDQNCj4g PiAtLS0gYS9NZGVQa2cvVGVzdC9NZGVQa2dIb3N0VGVzdC5kc2MNCj4gPiArKysgYi9NZGVQa2cv VGVzdC9NZGVQa2dIb3N0VGVzdC5kc2MNCj4gPiBAQCAtMjgsMyArMjgsOCBAQCBbQ29tcG9uZW50 c10NCj4gPiAgICAjDQo+ID4NCj4gTWRlUGtnL1Rlc3QvVW5pdFRlc3QvTGlicmFyeS9CYXNlU2Fm ZUludExpYi9UZXN0QmFzZVNhZmUNCj4gSW50TGliSG9zdC5pbmYNCj4gPg0KPiBNZGVQa2cvVGVz dC9Vbml0VGVzdC9MaWJyYXJ5L0Jhc2VMaWIvQmFzZUxpYlVuaXRUZXN0c0hvcw0KPiB0LmluZg0K PiA+ICsNCj4gPiArICAjDQo+ID4gKyAgIyBCdWlsZCBIT1NUX0FQUExJQ0FUSU9OIExpYnJhcmll cw0KPiA+ICsgICMNCj4gPiArICBNZGVQa2cvTGlicmFyeS9CYXNlTGliL1VuaXRUZXN0SG9zdEJh c2VMaWIuaW5mDQo+ID4gZGlmZiAtLWdpdA0KPiBhL01kZVBrZy9UZXN0L1VuaXRUZXN0L0luY2x1 ZGUvSG9zdFRlc3QvVW5pdFRlc3RIb3N0QmFzZQ0KPiBMaWIuaA0KPiA+DQo+IGIvTWRlUGtnL1Rl c3QvVW5pdFRlc3QvSW5jbHVkZS9Ib3N0VGVzdC9Vbml0VGVzdEhvc3RCYXNlDQo+IExpYi5oDQo+ ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwLi40YWQwNWE1YWYx DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKw0KPiBiL01kZVBrZy9UZXN0L1VuaXRUZXN0L0lu Y2x1ZGUvSG9zdFRlc3QvVW5pdFRlc3RIb3N0QmFzZQ0KPiBMaWIuaA0KPiA+IEBAIC0wLDAgKzEs NTgyIEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIFVuaXQgVGVzdCBIb3N0IEJhc2VMaWIgaG9v a3MuDQo+ID4gKw0KPiA+ICsgIENvcHlyaWdodCAoYykgMjAyMCwgSW50ZWwgQ29ycG9yYXRpb24u IEFsbCByaWdodHMNCj4gcmVzZXJ2ZWQuPEJSPg0KPiA+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArDQo+ID4gKyNp Zm5kZWYgX19VTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9IX18NCj4gPiArI2RlZmluZSBfX1VOSVRf VEVTVF9IT1NUX0JBU0VfTElCX0hfXw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUHJvdG90eXBl IG9mIHNlcnZpY2Ugd2l0aCBubyBwYXJhbWV0ZXJzIGFuZCBubw0KPiByZXR1cm4gdmFsdWUuDQo+ ID4gKyoqLw0KPiA+ICt0eXBlZGVmDQo+ID4gK1ZPSUQNCj4gPiArKEVGSUFQSSAqVU5JVF9URVNU X0hPU1RfQkFTRV9MSUJfVk9JRCkoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ ICsvKioNCj4gPiArICBQcm90b3R5cGUgb2Ygc2VydmljZSB0aGF0IHJlYWRzIGFuZCByZXR1cm5z IGENCj4gQk9PTEVBTiB2YWx1ZS4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgcmVh ZC4NCj4gPiArKiovDQo+ID4gK3R5cGVkZWYNCj4gPiArQk9PTEVBTg0KPiA+ICsoRUZJQVBJICpV TklUX1RFU1RfSE9TVF9CQVNFX0xJQl9SRUFEX0JPT0xFQU4pKA0KPiA+ICsgIFZPSUQNCj4gPiAr ICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUHJvdG90eXBlIG9mIHNlcnZpY2UgdGhhdCBy ZWFkcyBhbmQgcmV0dXJucyBhDQo+IFVJTlQxNiB2YWx1ZS4NCj4gPiArDQo+ID4gKyAgQHJldHVy biBUaGUgdmFsdWUgcmVhZC4NCj4gPiArKiovDQo+ID4gK3R5cGVkZWYNCj4gPiArVUlOVDE2DQo+ ID4gKyhFRklBUEkgKlVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1JFQURfVUlOVDE2KSgNCj4gPiAr ICBWT0lEDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFByb3RvdHlwZSBvZiBz ZXJ2aWNlIHRoYXQgcmVhZHMgYW5kIHJldHVybnMgYSBVSU5UTg0KPiB2YWx1ZS4NCj4gPiArDQo+ ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgcmVhZC4NCj4gPiArKiovDQo+ID4gK3R5cGVkZWYNCj4g PiArVUlOVE4NCj4gPiArKEVGSUFQSSAqVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfUkVBRF9VSU5U TikoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBQcm90 b3R5cGUgb2Ygc2VydmljZSB0aGF0IHdyaXRlcyBhbmQgcmV0dXJucyBhDQo+IFVJTlQxNiB2YWx1 ZS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgVmFsdWUgIFRoZSB2YWx1ZSB0byB3cml0ZS4N Cj4gPiArDQo+ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbi4NCj4gPiArKiovDQo+ID4g K3R5cGVkZWYNCj4gPiArVk9JRA0KPiA+ICsoRUZJQVBJICpVTklUX1RFU1RfSE9TVF9CQVNFX0xJ Ql9XUklURV9VSU5UMTYpKA0KPiA+ICsgIElOIFVJTlQxNiAgVmFsdWUNCj4gPiArICApOw0KPiA+ ICsNCj4gPiArLyoqDQo+ID4gKyAgUHJvdG90eXBlIG9mIHNlcnZpY2UgdGhhdCB3cml0ZXMgYW5k IHJldHVybnMgYQ0KPiBVSU5UTiB2YWx1ZS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgVmFs dWUgIFRoZSB2YWx1ZSB0byB3cml0ZS4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBUaGUgdmFsdWUg d3JpdHRlbi4NCj4gPiArKiovDQo+ID4gK3R5cGVkZWYNCj4gPiArVUlOVE4NCj4gPiArKEVGSUFQ SSAqVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfV1JJVEVfVUlOVE4pKA0KPiA+ICsgIElOIFVJTlRO ICBWYWx1ZQ0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBQcm90b3R5cGUgb2Yg c2VydmljZSB0aGF0IHJlYWRzIGFuZCByZXR1cm5zIGFuDQo+IElBMzJfREVTQ1JJUFRPUi4NCj4g PiArDQo+ID4gKyAgQHBhcmFtW291dF0gIElhMzJEZXNjcmlwdG9yICBQb2ludGVyIHRvIHRoZQ0K PiBkZXNjcmlwdG9yIHJlYWQuDQo+ID4gKyoqLw0KPiA+ICt0eXBlZGVmDQo+ID4gK1ZPSUQNCj4g PiArKEVGSUFQSQ0KPiAqVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfQVNNX1JFQURfSUEzMl9ERVND UklQVE9SKSgNCj4gPiArICBPVVQgSUEzMl9ERVNDUklQVE9SICAgICAgICAgICAqSWEzMkRlc2Ny aXB0b3INCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUHJvdG90eXBlIG9mIHNl cnZpY2UgdGhhdCB3cml0ZXMgYW4NCj4gSUEzMl9ERVNDUklQVE9SLg0KPiA+ICsNCj4gPiArICBA cGFyYW1baW5dICBJYTMyRGVzY3JpcHRvciAgUG9pbnRlciB0byB0aGUNCj4gZGVzY3JpcHRvciB0 byB3cml0ZS4NCj4gPiArKiovDQo+ID4gK3R5cGVkZWYNCj4gPiArVk9JRA0KPiA+ICsoRUZJQVBJ DQo+ICpVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9BU01fV1JJVEVfSUEzMl9ERVNDUklQVE9SKSgN Cj4gPiArICBJTiBDT05TVCBJQTMyX0RFU0NSSVBUT1IgICAgICpJYTMyRGVzY3JpcHRvcg0KPiA+ ICsgICk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBSZXRyaWV2ZXMgQ1BVSUQgaW5mb3JtYXRp b24uDQo+ID4gKw0KPiA+ICsgIEV4ZWN1dGVzIHRoZSBDUFVJRCBpbnN0cnVjdGlvbiB3aXRoIEVB WCBzZXQgdG8gdGhlDQo+IHZhbHVlIHNwZWNpZmllZCBieSBJbmRleC4NCj4gPiArICBUaGlzIGZ1 bmN0aW9uIGFsd2F5cyByZXR1cm5zIEluZGV4Lg0KPiA+ICsgIElmIEVheCBpcyBub3QgTlVMTCwg dGhlbiB0aGUgdmFsdWUgb2YgRUFYIGFmdGVyDQo+IENQVUlEIGlzIHJldHVybmVkIGluIEVheC4N Cj4gPiArICBJZiBFYnggaXMgbm90IE5VTEwsIHRoZW4gdGhlIHZhbHVlIG9mIEVCWCBhZnRlcg0K PiBDUFVJRCBpcyByZXR1cm5lZCBpbiBFYnguDQo+ID4gKyAgSWYgRWN4IGlzIG5vdCBOVUxMLCB0 aGVuIHRoZSB2YWx1ZSBvZiBFQ1ggYWZ0ZXINCj4gQ1BVSUQgaXMgcmV0dXJuZWQgaW4gRWN4Lg0K PiA+ICsgIElmIEVkeCBpcyBub3QgTlVMTCwgdGhlbiB0aGUgdmFsdWUgb2YgRURYIGFmdGVyDQo+ IENQVUlEIGlzIHJldHVybmVkIGluIEVkeC4NCj4gPiArICBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkg YXZhaWxhYmxlIG9uIElBLTMyIGFuZCB4NjQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgSW5kZXgg VGhlIDMyLWJpdCB2YWx1ZSB0byBsb2FkIGludG8gRUFYDQo+IHByaW9yIHRvIGludm9raW5nIHRo ZSBDUFVJRA0KPiA+ICsgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24uDQo+ID4gKyAgQHBhcmFt ICBFYXggICBUaGUgcG9pbnRlciB0byB0aGUgMzItYml0IEVBWCB2YWx1ZQ0KPiByZXR1cm5lZCBi eSB0aGUgQ1BVSUQNCj4gPiArICAgICAgICAgICAgICAgIGluc3RydWN0aW9uLiBUaGlzIGlzIGFu IG9wdGlvbmFsDQo+IHBhcmFtZXRlciB0aGF0IG1heSBiZSBOVUxMLg0KPiA+ICsgIEBwYXJhbSAg RWJ4ICAgVGhlIHBvaW50ZXIgdG8gdGhlIDMyLWJpdCBFQlggdmFsdWUNCj4gcmV0dXJuZWQgYnkg dGhlIENQVUlEDQo+ID4gKyAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbi4gVGhpcyBpcyBhbiBv cHRpb25hbA0KPiBwYXJhbWV0ZXIgdGhhdCBtYXkgYmUgTlVMTC4NCj4gPiArICBAcGFyYW0gIEVj eCAgIFRoZSBwb2ludGVyIHRvIHRoZSAzMi1iaXQgRUNYIHZhbHVlDQo+IHJldHVybmVkIGJ5IHRo ZSBDUFVJRA0KPiA+ICsgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24uIFRoaXMgaXMgYW4gb3B0 aW9uYWwNCj4gcGFyYW1ldGVyIHRoYXQgbWF5IGJlIE5VTEwuDQo+ID4gKyAgQHBhcmFtICBFZHgg ICBUaGUgcG9pbnRlciB0byB0aGUgMzItYml0IEVEWCB2YWx1ZQ0KPiByZXR1cm5lZCBieSB0aGUg Q1BVSUQNCj4gPiArICAgICAgICAgICAgICAgIGluc3RydWN0aW9uLiBUaGlzIGlzIGFuIG9wdGlv bmFsDQo+IHBhcmFtZXRlciB0aGF0IG1heSBiZSBOVUxMLg0KPiA+ICsNCj4gPiArICBAcmV0dXJu IEluZGV4Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK3R5cGVkZWYNCj4gPiArVUlOVDMyDQo+ID4g KyhFRklBUEkgKlVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX0FTTV9DUFVJRCkoDQo+ID4gKyAgSU4g ICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIEluZGV4LA0KPiA+ICsgIE9VVCAgICAgVUlO VDMyICAgICAgICAgICAgICAgICAgICAqRWF4LCAgT1BUSU9OQUwNCj4gPiArICBPVVQgICAgIFVJ TlQzMiAgICAgICAgICAgICAgICAgICAgKkVieCwgIE9QVElPTkFMDQo+ID4gKyAgT1VUICAgICBV SU5UMzIgICAgICAgICAgICAgICAgICAgICpFY3gsICBPUFRJT05BTA0KPiA+ICsgIE9VVCAgICAg VUlOVDMyICAgICAgICAgICAgICAgICAgICAqRWR4ICAgT1BUSU9OQUwNCj4gPiArICApOw0KPiA+ ICsNCj4gPiArLyoqDQo+ID4gKyAgUmV0cmlldmVzIENQVUlEIGluZm9ybWF0aW9uIHVzaW5nIGFu IGV4dGVuZGVkIGxlYWYNCj4gaWRlbnRpZmllci4NCj4gPiArDQo+ID4gKyAgRXhlY3V0ZXMgdGhl IENQVUlEIGluc3RydWN0aW9uIHdpdGggRUFYIHNldCB0byB0aGUNCj4gdmFsdWUgc3BlY2lmaWVk IGJ5IEluZGV4DQo+ID4gKyAgYW5kIEVDWCBzZXQgdG8gdGhlIHZhbHVlIHNwZWNpZmllZCBieSBT dWJJbmRleC4NCj4gVGhpcyBmdW5jdGlvbiBhbHdheXMgcmV0dXJucw0KPiA+ICsgIEluZGV4LiBU aGlzIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uIElBLTMyIGFuZA0KPiB4NjQuDQo+ID4g Kw0KPiA+ICsgIElmIEVheCBpcyBub3QgTlVMTCwgdGhlbiB0aGUgdmFsdWUgb2YgRUFYIGFmdGVy DQo+IENQVUlEIGlzIHJldHVybmVkIGluIEVheC4NCj4gPiArICBJZiBFYnggaXMgbm90IE5VTEws IHRoZW4gdGhlIHZhbHVlIG9mIEVCWCBhZnRlcg0KPiBDUFVJRCBpcyByZXR1cm5lZCBpbiBFYngu DQo+ID4gKyAgSWYgRWN4IGlzIG5vdCBOVUxMLCB0aGVuIHRoZSB2YWx1ZSBvZiBFQ1ggYWZ0ZXIN Cj4gQ1BVSUQgaXMgcmV0dXJuZWQgaW4gRWN4Lg0KPiA+ICsgIElmIEVkeCBpcyBub3QgTlVMTCwg dGhlbiB0aGUgdmFsdWUgb2YgRURYIGFmdGVyDQo+IENQVUlEIGlzIHJldHVybmVkIGluIEVkeC4N Cj4gPiArDQo+ID4gKyAgQHBhcmFtICBJbmRleCAgICAgVGhlIDMyLWJpdCB2YWx1ZSB0byBsb2Fk IGludG8gRUFYDQo+IHByaW9yIHRvIGludm9raW5nIHRoZQ0KPiA+ICsgICAgICAgICAgICAgICAg ICAgIENQVUlEIGluc3RydWN0aW9uLg0KPiA+ICsgIEBwYXJhbSAgU3ViSW5kZXggIFRoZSAzMi1i aXQgdmFsdWUgdG8gbG9hZCBpbnRvIEVDWA0KPiBwcmlvciB0byBpbnZva2luZyB0aGUNCj4gPiAr ICAgICAgICAgICAgICAgICAgICBDUFVJRCBpbnN0cnVjdGlvbi4NCj4gPiArICBAcGFyYW0gIEVh eCAgICAgICBUaGUgcG9pbnRlciB0byB0aGUgMzItYml0IEVBWA0KPiB2YWx1ZSByZXR1cm5lZCBi eSB0aGUgQ1BVSUQNCj4gPiArICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbi4gVGhpcyBp cyBhbiBvcHRpb25hbA0KPiBwYXJhbWV0ZXIgdGhhdCBtYXkgYmUNCj4gPiArICAgICAgICAgICAg ICAgICAgICBOVUxMLg0KPiA+ICsgIEBwYXJhbSAgRWJ4ICAgICAgIFRoZSBwb2ludGVyIHRvIHRo ZSAzMi1iaXQgRUJYDQo+IHZhbHVlIHJldHVybmVkIGJ5IHRoZSBDUFVJRA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIGluc3RydWN0aW9uLiBUaGlzIGlzIGFuIG9wdGlvbmFsDQo+IHBhcmFtZXRl ciB0aGF0IG1heSBiZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgIE5VTEwuDQo+ID4gKyAgQHBh cmFtICBFY3ggICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIDMyLWJpdCBFQ1gNCj4gdmFsdWUgcmV0 dXJuZWQgYnkgdGhlIENQVUlEDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24u IFRoaXMgaXMgYW4gb3B0aW9uYWwNCj4gcGFyYW1ldGVyIHRoYXQgbWF5IGJlDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgTlVMTC4NCj4gPiArICBAcGFyYW0gIEVkeCAgICAgICBUaGUgcG9pbnRl ciB0byB0aGUgMzItYml0IEVEWA0KPiB2YWx1ZSByZXR1cm5lZCBieSB0aGUgQ1BVSUQNCj4gPiAr ICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbi4gVGhpcyBpcyBhbiBvcHRpb25hbA0KPiBw YXJhbWV0ZXIgdGhhdCBtYXkgYmUNCj4gPiArICAgICAgICAgICAgICAgICAgICBOVUxMLg0KPiA+ ICsNCj4gPiArICBAcmV0dXJuIEluZGV4Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK3R5cGVkZWYN Cj4gPiArVUlOVDMyDQo+ID4gKyhFRklBUEkgKlVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX0FTTV9D UFVJRF9FWCkoDQo+ID4gKyAgSU4gICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIEluZGV4 LA0KPiA+ICsgIElOICAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBTdWJJbmRleCwNCj4g PiArICBPVVQgICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgKkVheCwgIE9QVElPTkFMDQo+ ID4gKyAgT1VUICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICpFYngsICBPUFRJT05BTA0K PiA+ICsgIE9VVCAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAqRWN4LCAgT1BUSU9OQUwN Cj4gPiArICBPVVQgICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgKkVkeCAgIE9QVElPTkFM DQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFJldHVybnMgYSA2NC1iaXQgTWFj aGluZSBTcGVjaWZpYyBSZWdpc3RlcihNU1IpLg0KPiA+ICsNCj4gPiArICBSZWFkcyBhbmQgcmV0 dXJucyB0aGUgNjQtYml0IE1TUiBzcGVjaWZpZWQgYnkNCj4gSW5kZXguIE5vIHBhcmFtZXRlciBj aGVja2luZyBpcw0KPiA+ICsgIHBlcmZvcm1lZCBvbiBJbmRleCwgYW5kIHNvbWUgSW5kZXggdmFs dWVzIG1heSBjYXVzZQ0KPiBDUFUgZXhjZXB0aW9ucy4gVGhlDQo+ID4gKyAgY2FsbGVyIG11c3Qg ZWl0aGVyIGd1YXJhbnRlZSB0aGF0IEluZGV4IGlzIHZhbGlkLA0KPiBvciB0aGUgY2FsbGVyIG11 c3Qgc2V0IHVwDQo+ID4gKyAgZXhjZXB0aW9uIGhhbmRsZXJzIHRvIGNhdGNoIHRoZSBleGNlcHRp b25zLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gKyAgb24gSUEtMzIg YW5kIHg2NC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBJbmRleCBUaGUgMzItYml0IE1TUiBpbmRl eCB0byByZWFkLg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiB0aGUgTVNSIGlk ZW50aWZpZWQgYnkgSW5kZXguDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArdHlwZWRlZg0KPiA+ICtV SU5UNjQNCj4gPiArKEVGSUFQSSAqVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfQVNNX1JFQURfTVNS XzY0KSgNCj4gPiArICBJTiAgICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgSW5kZXgNCj4g PiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgV3JpdGVzIGEgNjQtYml0IHZhbHVlIHRv IGEgTWFjaGluZSBTcGVjaWZpYw0KPiBSZWdpc3RlcihNU1IpLCBhbmQgcmV0dXJucyB0aGUNCj4g PiArICB2YWx1ZS4NCj4gPiArDQo+ID4gKyAgV3JpdGVzIHRoZSA2NC1iaXQgdmFsdWUgc3BlY2lm aWVkIGJ5IFZhbHVlIHRvIHRoZQ0KPiBNU1Igc3BlY2lmaWVkIGJ5IEluZGV4LiBUaGUNCj4gPiAr ICA2NC1iaXQgdmFsdWUgd3JpdHRlbiB0byB0aGUgTVNSIGlzIHJldHVybmVkLiBObw0KPiBwYXJh bWV0ZXIgY2hlY2tpbmcgaXMNCj4gPiArICBwZXJmb3JtZWQgb24gSW5kZXggb3IgVmFsdWUsIGFu ZCBzb21lIG9mIHRoZXNlIG1heQ0KPiBjYXVzZSBDUFUgZXhjZXB0aW9ucy4gVGhlDQo+ID4gKyAg Y2FsbGVyIG11c3QgZWl0aGVyIGd1YXJhbnRlZSB0aGF0IEluZGV4IGFuZCBWYWx1ZQ0KPiBhcmUg dmFsaWQsIG9yIHRoZSBjYWxsZXINCj4gPiArICBtdXN0IGVzdGFibGlzaCBwcm9wZXIgZXhjZXB0 aW9uIGhhbmRsZXJzLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4g KyAgSUEtMzIgYW5kIHg2NC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBJbmRleCBUaGUgMzItYml0 IE1TUiBpbmRleCB0byB3cml0ZS4NCj4gPiArICBAcGFyYW0gIFZhbHVlIFRoZSA2NC1iaXQgdmFs dWUgdG8gd3JpdGUgdG8gdGhlIE1TUi4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBWYWx1ZQ0KPiA+ ICsNCj4gPiArKiovDQo+ID4gK3R5cGVkZWYNCj4gPiArVUlOVDY0DQo+ID4gKyhFRklBUEkgKlVO SVRfVEVTVF9IT1NUX0JBU0VfTElCX0FTTV9XUklURV9NU1JfNjQpKA0KPiA+ICsgIElOICAgICAg VUlOVDMyICAgICAgICAgICAgICAgICAgICBJbmRleCwNCj4gPiArICBJTiAgICAgIFVJTlQ2NCAg ICAgICAgICAgICAgICAgICAgVmFsdWUNCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4g KyAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgYSBQZXJmb3JtYW5jZSBDb3VudGVyDQo+IChQ TUMpLg0KPiA+ICsNCj4gPiArICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBv ZiBwZXJmb3JtYW5jZQ0KPiBjb3VudGVyIHNwZWNpZmllZCBieQ0KPiA+ICsgIEluZGV4LiBUaGlz IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uIElBLTMyIGFuZA0KPiB4NjQuDQo+ID4gKw0K PiA+ICsgIEBwYXJhbSAgSW5kZXggVGhlIDMyLWJpdCBQZXJmb3JtYW5jZSBDb3VudGVyIGluZGV4 DQo+IHRvIHJlYWQuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIG9mIHRoZSBQTUMg c3BlY2lmaWVkIGJ5IEluZGV4Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK3R5cGVkZWYNCj4gPiAr VUlOVDY0DQo+ID4gKyhFRklBUEkgKlVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX0FTTV9SRUFEX1BN QykoDQo+ID4gKyAgSU4gICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIEluZGV4DQo+ID4g KyAgKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFNldHMgdXAgYSBtb25pdG9yIGJ1ZmZlciB0 aGF0IGlzIHVzZWQgYnkNCj4gQXNtTXdhaXQoKS4NCj4gPiArDQo+ID4gKyAgRXhlY3V0ZXMgYSBN T05JVE9SIGluc3RydWN0aW9uIHdpdGggdGhlIHJlZ2lzdGVyDQo+IHN0YXRlIHNwZWNpZmllZCBi eSBFYXgsIEVjeA0KPiA+ICsgIGFuZCBFZHguIFJldHVybnMgRWF4LiBUaGlzIGZ1bmN0aW9uIGlz IG9ubHkNCj4gYXZhaWxhYmxlIG9uIElBLTMyIGFuZCB4NjQuDQo+ID4gKw0KPiA+ICsgIEBwYXJh bSAgRWF4IFRoZSB2YWx1ZSB0byBsb2FkIGludG8gRUFYIG9yIFJBWA0KPiBiZWZvcmUgZXhlY3V0 aW5nIHRoZSBNT05JVE9SDQo+ID4gKyAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24uDQo+ID4gKyAg QHBhcmFtICBFY3ggVGhlIHZhbHVlIHRvIGxvYWQgaW50byBFQ1ggb3IgUkNYDQo+IGJlZm9yZSBl eGVjdXRpbmcgdGhlIE1PTklUT1INCj4gPiArICAgICAgICAgICAgICBpbnN0cnVjdGlvbi4NCj4g PiArICBAcGFyYW0gIEVkeCBUaGUgdmFsdWUgdG8gbG9hZCBpbnRvIEVEWCBvciBSRFgNCj4gYmVm b3JlIGV4ZWN1dGluZyB0aGUgTU9OSVRPUg0KPiA+ICsgICAgICAgICAgICAgIGluc3RydWN0aW9u Lg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIEVheA0KPiA+ICsNCj4gPiArKiovDQo+ID4gK3R5cGVk ZWYNCj4gPiArVUlOVE4NCj4gPiArKEVGSUFQSSAqVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfQVNN X01PTklUT1IpKA0KPiA+ICsgIElOICAgICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBFYXgs DQo+ID4gKyAgSU4gICAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIEVjeCwNCj4gPiArICBJ TiAgICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgRWR4DQo+ID4gKyAgKTsNCj4gPiArDQo+ ID4gKy8qKg0KPiA+ICsgIEV4ZWN1dGVzIGFuIE1XQUlUIGluc3RydWN0aW9uLg0KPiA+ICsNCj4g PiArICBFeGVjdXRlcyBhbiBNV0FJVCBpbnN0cnVjdGlvbiB3aXRoIHRoZSByZWdpc3Rlcg0KPiBz dGF0ZSBzcGVjaWZpZWQgYnkgRWF4IGFuZA0KPiA+ICsgIEVjeC4gUmV0dXJucyBFYXguIFRoaXMg ZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUNCj4gb24gSUEtMzIgYW5kIHg2NC4NCj4gPiArDQo+ ID4gKyAgQHBhcmFtICBFYXggVGhlIHZhbHVlIHRvIGxvYWQgaW50byBFQVggb3IgUkFYDQo+IGJl Zm9yZSBleGVjdXRpbmcgdGhlIE1PTklUT1INCj4gPiArICAgICAgICAgICAgICBpbnN0cnVjdGlv bi4NCj4gPiArICBAcGFyYW0gIEVjeCBUaGUgdmFsdWUgdG8gbG9hZCBpbnRvIEVDWCBvciBSQ1gN Cj4gYmVmb3JlIGV4ZWN1dGluZyB0aGUgTU9OSVRPUg0KPiA+ICsgICAgICAgICAgICAgIGluc3Ry dWN0aW9uLg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIEVheA0KPiA+ICsNCj4gPiArKiovDQo+ID4g K3R5cGVkZWYNCj4gPiArVUlOVE4NCj4gPiArKEVGSUFQSSAqVU5JVF9URVNUX0hPU1RfQkFTRV9M SUJfQVNNX01XQUlUKSgNCj4gPiArICBJTiAgICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAg RWF4LA0KPiA+ICsgIElOICAgICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBFY3gNCj4gPiAr ICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgRmx1c2hlcyBhIGNhY2hlIGxpbmUgZnJvbSBh bGwgdGhlIGluc3RydWN0aW9uIGFuZA0KPiBkYXRhIGNhY2hlcyB3aXRoaW4gdGhlDQo+ID4gKyAg Y29oZXJlbmN5IGRvbWFpbiBvZiB0aGUgQ1BVLg0KPiA+ICsNCj4gPiArICBGbHVzaGVkIHRoZSBj YWNoZSBsaW5lIHNwZWNpZmllZCBieSBMaW5lYXJBZGRyZXNzLA0KPiBhbmQgcmV0dXJucyBMaW5l YXJBZGRyZXNzLg0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24gSUEt MzIgYW5kIHg2NC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBMaW5lYXJBZGRyZXNzIFRoZSBhZGRy ZXNzIG9mIHRoZSBjYWNoZSBsaW5lDQo+IHRvIGZsdXNoLiBJZiB0aGUgQ1BVIGlzDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgIGluIGEgcGh5c2ljYWwgYWRkcmVzc2luZw0KPiBtb2RlLCB0 aGVuIExpbmVhckFkZHJlc3MgaXMgYQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBwaHlz aWNhbCBhZGRyZXNzLiBJZiB0aGUgQ1BVDQo+IGlzIGluIGEgdmlydHVhbA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICBhZGRyZXNzaW5nIG1vZGUsIHRoZW4NCj4gTGluZWFyQWRkcmVzcyBp cyBhIHZpcnR1YWwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzcy4NCj4gPiAr DQo+ID4gKyAgQHJldHVybiBMaW5lYXJBZGRyZXNzLg0KPiA+ICsqKi8NCj4gPiArdHlwZWRlZg0K PiA+ICtWT0lEICoNCj4gPiArKEVGSUFQSQ0KPiAqVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfQVNN X0ZMVVNIX0NBQ0hFX0xJTkUpKA0KPiA+ICsgIElOICAgICAgVk9JRCAgICAgICAgICAgICAgICAg ICAgICAqTGluZWFyQWRkcmVzcw0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBQ cm90b3R5cGUgb2Ygc2VydmljZSB0aGF0IGVuYWJsZXMgb3QgZGlzYWJsZXMgMzItDQo+IGJpdCBw YWdpbmcgbW9kZXMuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgRW50cnlQb2ludCAgQSBwb2ludGVy IHRvIGZ1bmN0aW9uIHRvIGNhbGwNCj4gd2l0aCB0aGUgbmV3IHN0YWNrIGFmdGVyDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICBwYWdpbmcgaXMgZW5hYmxlZC4NCj4gPiArICBAcGFyYW0gIENv bnRleHQxICAgIEEgcG9pbnRlciB0byB0aGUgY29udGV4dCB0bw0KPiBwYXNzIGludG8gdGhlIEVu dHJ5UG9pbnQNCj4gPiArICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGFzIHRoZSBmaXJz dCBwYXJhbWV0ZXINCj4gYWZ0ZXIgcGFnaW5nIGlzIGVuYWJsZWQuDQo+ID4gKyAgQHBhcmFtICBD b250ZXh0MiAgICBBIHBvaW50ZXIgdG8gdGhlIGNvbnRleHQgdG8NCj4gcGFzcyBpbnRvIHRoZSBF bnRyeVBvaW50DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBhcyB0aGUgc2Vj b25kDQo+IHBhcmFtZXRlciBhZnRlciBwYWdpbmcgaXMgZW5hYmxlZC4NCj4gPiArICBAcGFyYW0g IE5ld1N0YWNrICAgIEEgcG9pbnRlciB0byB0aGUgbmV3IHN0YWNrIHRvDQo+IHVzZSBmb3IgdGhl IEVudHJ5UG9pbnQNCj4gPiArICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGFmdGVyIHBh Z2luZyBpcw0KPiBlbmFibGVkLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK3R5cGVkZWYNCj4gPiAr Vk9JRA0KPiA+ICsoRUZJQVBJICpVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9BU01fUEFHSU5HXzMy KSgNCj4gPiArICBJTiAgICAgIFNXSVRDSF9TVEFDS19FTlRSWV9QT0lOVCAgRW50cnlQb2ludCwN Cj4gPiArICBJTiAgICAgIFZPSUQgICAgICAgICAgICAgICAgICAgICAgKkNvbnRleHQxLA0KPiBP UFRJT05BTA0KPiA+ICsgIElOICAgICAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAqQ29udGV4 dDIsDQo+IE9QVElPTkFMDQo+ID4gKyAgSU4gICAgICBWT0lEICAgICAgICAgICAgICAgICAgICAg ICpOZXdTdGFjaw0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBFbmFibGVzIHRo ZSA2NC1iaXQgcGFnaW5nIG1vZGUgb24gdGhlIENQVS4NCj4gPiArDQo+ID4gKyAgRW5hYmxlcyB0 aGUgNjQtYml0IHBhZ2luZyBtb2RlIG9uIHRoZSBDUFUuIENSMCwNCj4gQ1IzLCBDUjQsIGFuZCB0 aGUgcGFnZSB0YWJsZXMNCj4gPiArICBtdXN0IGJlIHByb3Blcmx5IGluaXRpYWxpemVkIHByaW9y IHRvIGNhbGxpbmcgdGhpcw0KPiBzZXJ2aWNlLiBUaGlzIGZ1bmN0aW9uDQo+ID4gKyAgYXNzdW1l cyB0aGUgY3VycmVudCBleGVjdXRpb24gbW9kZSBpcyAzMi1iaXQNCj4gcHJvdGVjdGVkIG1vZGUg d2l0aCBmbGF0DQo+ID4gKyAgZGVzY3JpcHRvcnMuIFRoaXMgZnVuY3Rpb24gaXMgb25seSBhdmFp bGFibGUgb24gSUEtDQo+IDMyLiBBZnRlciB0aGUgNjQtYml0DQo+ID4gKyAgcGFnaW5nIG1vZGUg aXMgZW5hYmxlZCwgY29udHJvbCBpcyB0cmFuc2ZlcnJlZCB0bw0KPiB0aGUgZnVuY3Rpb24gc3Bl Y2lmaWVkIGJ5DQo+ID4gKyAgRW50cnlQb2ludCB1c2luZyB0aGUgbmV3IHN0YWNrIHNwZWNpZmll ZCBieQ0KPiBOZXdTdGFjayBhbmQgcGFzc2luZyBpbiB0aGUNCj4gPiArICBwYXJhbWV0ZXJzIHNw ZWNpZmllZCBieSBDb250ZXh0MSBhbmQgQ29udGV4dDIuDQo+IENvbnRleHQxIGFuZCBDb250ZXh0 MiBhcmUNCj4gPiArICBvcHRpb25hbCBhbmQgbWF5IGJlIDAuIFRoZSBmdW5jdGlvbiBFbnRyeVBv aW50IG11c3QNCj4gbmV2ZXIgcmV0dXJuLg0KPiA+ICsNCj4gPiArICBJZiB0aGUgY3VycmVudCBl eGVjdXRpb24gbW9kZSBpcyBub3QgMzItYml0DQo+IHByb3RlY3RlZCBtb2RlIHdpdGggZmxhdA0K PiA+ICsgIGRlc2NyaXB0b3JzLCB0aGVuIEFTU0VSVCgpLg0KPiA+ICsgIElmIEVudHJ5UG9pbnQg aXMgMCwgdGhlbiBBU1NFUlQoKS4NCj4gPiArICBJZiBOZXdTdGFjayBpcyAwLCB0aGVuIEFTU0VS VCgpLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIENzICAgICAgICAgIFRoZSAxNi1iaXQgc2VsZWN0 b3IgdG8gbG9hZCBpbg0KPiB0aGUgQ1MgYmVmb3JlIEVudHJ5UG9pbnQNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgIGlzIGNhbGxlZC4gVGhlIGRlc2NyaXB0b3IgaW4NCj4gdGhlIEdEVCB0aGF0 IHRoaXMgc2VsZWN0b3INCj4gPiArICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZXMgbXVz dCBiZSBzZXR1cCBmb3INCj4gbG9uZyBtb2RlLg0KPiA+ICsgIEBwYXJhbSAgRW50cnlQb2ludCAg VGhlIDY0LWJpdCB2aXJ0dWFsIGFkZHJlc3Mgb2YNCj4gdGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0 aA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgdGhlIG5ldyBzdGFjayBhZnRlciBwYWdpbmcg aXMNCj4gZW5hYmxlZC4NCj4gPiArICBAcGFyYW0gIENvbnRleHQxICAgIFRoZSA2NC1iaXQgdmly dHVhbCBhZGRyZXNzIG9mDQo+IHRoZSBjb250ZXh0IHRvIHBhc3MgaW50bw0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgdGhlIEVudHJ5UG9pbnQgZnVuY3Rpb24gYXMgdGhlDQo+IGZpcnN0IHBh cmFtZXRlciBhZnRlcg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgcGFnaW5nIGlzIGVuYWJs ZWQuDQo+ID4gKyAgQHBhcmFtICBDb250ZXh0MiAgICBUaGUgNjQtYml0IHZpcnR1YWwgYWRkcmVz cyBvZg0KPiB0aGUgY29udGV4dCB0byBwYXNzIGludG8NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgIHRoZSBFbnRyeVBvaW50IGZ1bmN0aW9uIGFzIHRoZQ0KPiBzZWNvbmQgcGFyYW1ldGVyIGFm dGVyDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBwYWdpbmcgaXMgZW5hYmxlZC4NCj4gPiAr ICBAcGFyYW0gIE5ld1N0YWNrICAgIFRoZSA2NC1iaXQgdmlydHVhbCBhZGRyZXNzIG9mDQo+IHRo ZSBuZXcgc3RhY2sgdG8gdXNlIGZvcg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgdGhlIEVu dHJ5UG9pbnQgZnVuY3Rpb24gYWZ0ZXINCj4gcGFnaW5nIGlzIGVuYWJsZWQuDQo+ID4gKw0KPiA+ ICsqKi8NCj4gPiArdHlwZWRlZg0KPiA+ICtWT0lEDQo+ID4gKyhFRklBUEkNCj4gKlVOSVRfVEVT VF9IT1NUX0JBU0VfTElCX0FTTV9FTkFCTEVfUEFHSU5HXzY0KSgNCj4gPiArICBJTiAgICAgIFVJ TlQxNiAgICAgICAgICAgICAgICAgICAgQ3MsDQo+ID4gKyAgSU4gICAgICBVSU5UNjQgICAgICAg ICAgICAgICAgICAgIEVudHJ5UG9pbnQsDQo+ID4gKyAgSU4gICAgICBVSU5UNjQgICAgICAgICAg ICAgICAgICAgIENvbnRleHQxLA0KPiBPUFRJT05BTA0KPiA+ICsgIElOICAgICAgVUlOVDY0ICAg ICAgICAgICAgICAgICAgICBDb250ZXh0MiwNCj4gT1BUSU9OQUwNCj4gPiArICBJTiAgICAgIFVJ TlQ2NCAgICAgICAgICAgICAgICAgICAgTmV3U3RhY2sNCj4gPiArICApOw0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAgRGlzYWJsZXMgdGhlIDY0LWJpdCBwYWdpbmcgbW9kZSBvbiB0aGUgQ1BVLg0K PiA+ICsNCj4gPiArICBEaXNhYmxlcyB0aGUgNjQtYml0IHBhZ2luZyBtb2RlIG9uIHRoZSBDUFUg YW5kDQo+IHJldHVybnMgdG8gMzItYml0IHByb3RlY3RlZA0KPiA+ICsgIG1vZGUuIFRoaXMgZnVu Y3Rpb24gYXNzdW1lcyB0aGUgY3VycmVudCBleGVjdXRpb24NCj4gbW9kZSBpcyA2NC1wYWdpbmcg bW9kZS4NCj4gPiArICBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uIHg2NC4gQWZ0 ZXIgdGhlDQo+IDY0LWJpdCBwYWdpbmcgbW9kZSBpcw0KPiA+ICsgIGRpc2FibGVkLCBjb250cm9s IGlzIHRyYW5zZmVycmVkIHRvIHRoZSBmdW5jdGlvbg0KPiBzcGVjaWZpZWQgYnkgRW50cnlQb2lu dA0KPiA+ICsgIHVzaW5nIHRoZSBuZXcgc3RhY2sgc3BlY2lmaWVkIGJ5IE5ld1N0YWNrIGFuZA0K PiBwYXNzaW5nIGluIHRoZSBwYXJhbWV0ZXJzDQo+ID4gKyAgc3BlY2lmaWVkIGJ5IENvbnRleHQx IGFuZCBDb250ZXh0Mi4gQ29udGV4dDEgYW5kDQo+IENvbnRleHQyIGFyZSBvcHRpb25hbCBhbmQN Cj4gPiArICBtYXkgYmUgMC4gVGhlIGZ1bmN0aW9uIEVudHJ5UG9pbnQgbXVzdCBuZXZlcg0KPiBy ZXR1cm4uDQo+ID4gKw0KPiA+ICsgIElmIHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBtb2RlIGlzIG5v dCA2NC1iaXQgcGFnZWQNCj4gbW9kZSwgdGhlbiBBU1NFUlQoKS4NCj4gPiArICBJZiBFbnRyeVBv aW50IGlzIDAsIHRoZW4gQVNTRVJUKCkuDQo+ID4gKyAgSWYgTmV3U3RhY2sgaXMgMCwgdGhlbiBB U1NFUlQoKS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBDcyAgICAgICAgICBUaGUgMTYtYml0IHNl bGVjdG9yIHRvIGxvYWQgaW4NCj4gdGhlIENTIGJlZm9yZSBFbnRyeVBvaW50DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICBpcyBjYWxsZWQuIFRoZSBkZXNjcmlwdG9yIGluDQo+IHRoZSBHRFQg dGhhdCB0aGlzIHNlbGVjdG9yDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2Vz IG11c3QgYmUgc2V0dXAgZm9yDQo+IDMyLWJpdCBwcm90ZWN0ZWQgbW9kZS4NCj4gPiArICBAcGFy YW0gIEVudHJ5UG9pbnQgIFRoZSA2NC1iaXQgdmlydHVhbCBhZGRyZXNzIG9mDQo+IHRoZSBmdW5j dGlvbiB0byBjYWxsIHdpdGgNCj4gPiArICAgICAgICAgICAgICAgICAgICAgIHRoZSBuZXcgc3Rh Y2sgYWZ0ZXIgcGFnaW5nIGlzDQo+IGRpc2FibGVkLg0KPiA+ICsgIEBwYXJhbSAgQ29udGV4dDEg ICAgVGhlIDY0LWJpdCB2aXJ0dWFsIGFkZHJlc3Mgb2YNCj4gdGhlIGNvbnRleHQgdG8gcGFzcyBp bnRvDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICB0aGUgRW50cnlQb2ludCBmdW5jdGlvbiBh cyB0aGUNCj4gZmlyc3QgcGFyYW1ldGVyIGFmdGVyDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICBwYWdpbmcgaXMgZGlzYWJsZWQuDQo+ID4gKyAgQHBhcmFtICBDb250ZXh0MiAgICBUaGUgNjQt Yml0IHZpcnR1YWwgYWRkcmVzcyBvZg0KPiB0aGUgY29udGV4dCB0byBwYXNzIGludG8NCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgIHRoZSBFbnRyeVBvaW50IGZ1bmN0aW9uIGFzIHRoZQ0KPiBz ZWNvbmQgcGFyYW1ldGVyIGFmdGVyDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBwYWdpbmcg aXMgZGlzYWJsZWQuDQo+ID4gKyAgQHBhcmFtICBOZXdTdGFjayAgICBUaGUgNjQtYml0IHZpcnR1 YWwgYWRkcmVzcyBvZg0KPiB0aGUgbmV3IHN0YWNrIHRvIHVzZSBmb3INCj4gPiArICAgICAgICAg ICAgICAgICAgICAgIHRoZSBFbnRyeVBvaW50IGZ1bmN0aW9uIGFmdGVyDQo+IHBhZ2luZyBpcyBk aXNhYmxlZC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICt0eXBlZGVmDQo+ID4gK1ZPSUQNCj4gPiAr KEVGSUFQSQ0KPiAqVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfQVNNX0RJU0FCTEVfUEFHSU5HXzY0 KSgNCj4gPiArICBJTiAgICAgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgQ3MsDQo+ID4gKyAg SU4gICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIEVudHJ5UG9pbnQsDQo+ID4gKyAgSU4g ICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIENvbnRleHQxLA0KPiBPUFRJT05BTA0KPiA+ ICsgIElOICAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBDb250ZXh0MiwNCj4gT1BUSU9O QUwNCj4gPiArICBJTiAgICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgTmV3U3RhY2sNCj4g PiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUmV0cmlldmVzIHRoZSBwcm9wZXJ0aWVz IGZvciAxNi1iaXQgdGh1bmsNCj4gZnVuY3Rpb25zLg0KPiA+ICsNCj4gPiArICBDb21wdXRlcyB0 aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIGFuZCBzdGFjayBiZWxvdyAxTUINCj4gcmVxdWlyZWQgdG8g dXNlIHRoZQ0KPiA+ICsgIEFzbVByZXBhcmVUaHVuazE2KCksIEFzbVRodW5rMTYoKSBhbmQNCj4g QXNtUHJlcGFyZUFuZFRodW5rMTYoKSBmdW5jdGlvbnMuIFRoaXMNCj4gPiArICBidWZmZXIgc2l6 ZSBpcyByZXR1cm5lZCBpbiBSZWFsTW9kZUJ1ZmZlclNpemUsIGFuZA0KPiB0aGUgc3RhY2sgc2l6 ZSBpcyByZXR1cm5lZA0KPiA+ICsgIGluIEV4dHJhU3RhY2tTaXplLiBJZiBwYXJhbWV0ZXJzIGFy ZSBwYXNzZWQgdG8gdGhlDQo+IDE2LWJpdCByZWFsIG1vZGUgY29kZSwNCj4gPiArICB0aGVuIHRo ZSBhY3R1YWwgbWluaW11bSBzdGFjayBzaXplIGlzDQo+IEV4dHJhU3RhY2tTaXplIHBsdXMgdGhl IG1heGltdW0gbnVtYmVyDQo+ID4gKyAgb2YgYnl0ZXMgdGhhdCBuZWVkIHRvIGJlIHBhc3NlZCB0 byB0aGUgMTYtYml0IHJlYWwNCj4gbW9kZSBjb2RlLg0KPiA+ICsNCj4gPiArICBJZiBSZWFsTW9k ZUJ1ZmZlclNpemUgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPiArICBJZiBFeHRyYVN0YWNr U2l6ZSBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIFJlYWxN b2RlQnVmZmVyU2l6ZSAgQSBwb2ludGVyIHRvIHRoZSBzaXplDQo+IG9mIHRoZSBidWZmZXIgYmVs b3cgMU1CDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkIHRvIHVz ZSB0aGUgMTYtDQo+IGJpdCB0aHVuayBmdW5jdGlvbnMuDQo+ID4gKyAgQHBhcmFtICBFeHRyYVN0 YWNrU2l6ZSAgICAgIEEgcG9pbnRlciB0byB0aGUgZXh0cmENCj4gc2l6ZSBvZiBzdGFjayBiZWxv dyAxTUINCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCB0aGUgMTYtYml0 IHRodW5rDQo+IGZ1bmN0aW9ucyByZXF1aXJlIGZvcg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0ZW1wb3Jhcnkgc3RvcmFnZSBpbg0KPiB0aGUgdHJhbnNpdGlvbiB0byBhbmQg ZnJvbQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi1iaXQgcmVhbCBtb2Rl Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK3R5cGVkZWYNCj4gPiArVk9JRA0KPiA+ICsoRUZJQVBJ DQo+ICpVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9BU01fR0VUX1RIVU5LXzE2X1BST1BFUlRJRVMp KA0KPiA+ICsgIE9VVCAgICAgVUlOVDMyDQo+ICpSZWFsTW9kZUJ1ZmZlclNpemUsDQo+ID4gKyAg T1VUICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICpFeHRyYVN0YWNrU2l6ZQ0KPiA+ICsg ICk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBQcm90b3R5cGUgb2Ygc2VydmljZXMgdGhhdCBv cGVyYXRlcyBvbiBhDQo+IFRIVU5LX0NPTlRFWFQgc3RydWN0dXJlLg0KPiA+ICsNCj4gPiArICBA cGFyYW0gIFRodW5rQ29udGV4dCAgQSBwb2ludGVyIHRvIHRoZSBjb250ZXh0DQo+IHN0cnVjdHVy ZSB0aGF0IGRlc2NyaWJlcyB0aGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgMTYtYml0 IHJlYWwgbW9kZSBjb2RlIHRvDQo+IGNhbGwuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArdHlwZWRl Zg0KPiA+ICtWT0lEDQo+ID4gKyhFRklBUEkgKlVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX0FTTV9U SFVOS18xNikoDQo+ID4gKyAgSU4gT1VUICBUSFVOS19DT05URVhUICAgICAgICAgICAgICpUaHVu a0NvbnRleHQNCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUGF0Y2ggdGhlIGlt bWVkaWF0ZSBvcGVyYW5kIG9mIGFuIElBMzIgb3IgWDY0DQo+IGluc3RydWN0aW9uIHN1Y2ggdGhh dCB0aGUgYnl0ZSwNCj4gPiArICB3b3JkLCBkd29yZCBvciBxd29yZCBvcGVyYW5kIGlzIGVuY29k ZWQgYXQgdGhlIGVuZA0KPiBvZiB0aGUgaW5zdHJ1Y3Rpb24ncw0KPiA+ICsgIGJpbmFyeSByZXBy ZXNlbnRhdGlvbi4NCj4gPiArDQo+ID4gKyAgVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgdXNlZCB0 byB1cGRhdGUgb2JqZWN0IGNvZGUNCj4gdGhhdCB3YXMgY29tcGlsZWQgd2l0aA0KPiA+ICsgIE5B U00gZnJvbSBhc3NlbWJseSBzb3VyY2UgY29kZS4gRXhhbXBsZToNCj4gPiArDQo+ID4gKyAgTkFT TSBzb3VyY2UgY29kZToNCj4gPiArDQo+ID4gKyAgICAgICAgbW92ICAgICBlYXgsIHN0cmljdCBk d29yZCAwIDsgdGhlIGltbTMyIHplcm8NCj4gb3BlcmFuZCB3aWxsIGJlIHBhdGNoZWQNCj4gPiAr ICAgIEFTTV9QRlgoZ1BhdGNoQ3IzKToNCj4gPiArICAgICAgICBtb3YgICAgIGNyMywgZWF4DQo+ ID4gKw0KPiA+ICsgIEMgc291cmNlIGNvZGU6DQo+ID4gKw0KPiA+ICsgICAgWDg2X0FTU0VNQkxZ X1BBVENIX0xBQkVMIGdQYXRjaENyMzsNCj4gPiArICAgIFBhdGNoSW5zdHJ1Y3Rpb25YODYgKGdQ YXRjaENyMywgQXNtUmVhZENyMyAoKSwNCj4gNCk7DQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtvdXRd IEluc3RydWN0aW9uRW5kICBQb2ludGVyIHJpZ2h0IHBhc3QgdGhlDQo+IGluc3RydWN0aW9uIHRv IHBhdGNoLiBUaGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1tZWRpYXRl IG9wZXJhbmQgdG8NCj4gcGF0Y2ggaXMgZXhwZWN0ZWQgdG8NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29tcHJpc2UgdGhlIHRyYWlsaW5nDQo+IGJ5dGVzIG9mIHRoZSBpbnN0 cnVjdGlvbi4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgSW5zdHJ1Y3Rp b25FbmQgaXMNCj4gY2xvc2VyIHRvIGFkZHJlc3MgMCB0aGFuDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFZhbHVlU2l6ZSBwZXJtaXRzLCB0aGVuDQo+IEFTU0VSVCgpLg0KPiA+ ICsNCj4gPiArICBAcGFyYW1baW5dIFBhdGNoVmFsdWUgICAgICAgVGhlIGNvbnN0YW50IHRvIHdy aXRlDQo+IHRvIHRoZSBpbW1lZGlhdGUgb3BlcmFuZC4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgVGhlIGNhbGxlciBpcw0KPiByZXNwb25zaWJsZSBmb3IgZW5zdXJpbmcgdGhh dA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRjaFZhbHVlIGNhbiBiZQ0K PiByZXByZXNlbnRlZCBpbiB0aGUgYnl0ZSwgd29yZCwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZHdvcmQgb3IgcXdvcmQgb3BlcmFuZA0KPiAoYXMgaW5kaWNhdGVkIHRocm91 Z2gNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVTaXplKTsgb3RoZXJ3 aXNlDQo+IEFTU0VSVCgpLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIFZhbHVlU2l6ZSAgICAg ICAgVGhlIHNpemUgb2YgdGhlIG9wZXJhbmQNCj4gaW4gYnl0ZXM7IG11c3QgYmUgMSwgMiwNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNCwgb3IgOC4gQVNTRVJUKCkNCj4gb3Ro ZXJ3aXNlLg0KPiA+ICsqKi8NCj4gPiArdHlwZWRlZg0KPiA+ICtWT0lEDQo+ID4gKyhFRklBUEkN Cj4gKlVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX0FTTV9QQVRDSF9JTlNUUlVDVElPTl9YODYpKA0K PiA+ICsgIE9VVCBYODZfQVNTRU1CTFlfUEFUQ0hfTEFCRUwgKkluc3RydWN0aW9uRW5kLA0KPiA+ ICsgIElOICBVSU5UNjQgICAgICAgICAgICAgICAgICAgUGF0Y2hWYWx1ZSwNCj4gPiArICBJTiAg VUlOVE4gICAgICAgICAgICAgICAgICAgIFZhbHVlU2l6ZQ0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ ICsvLy8NCj4gPiArLy8vIENvbW1vbiBzZXJ2aWNlcw0KPiA+ICsvLy8NCj4gPiArdHlwZWRlZiBz dHJ1Y3Qgew0KPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1ZPSUQNCj4gRW5hYmxlSW50 ZXJydXB0czsNCj4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9WT0lEDQo+IERpc2FibGVJ bnRlcnJ1cHRzOw0KPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1ZPSUQNCj4gRW5hYmxl RGlzYWJsZUludGVycnVwdHM7DQo+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfUkVBRF9C T09MRUFODQo+IEdldEludGVycnVwdFN0YXRlOw0KPiA+ICt9IFVOSVRfVEVTVF9IT1NUX0JBU0Vf TElCX0NPTU1PTjsNCj4gPiArDQo+ID4gKy8vLw0KPiA+ICsvLy8gSUEzMi9YNjQgc2VydmljZXMN Cj4gPiArLy8vDQo+ID4gK3R5cGVkZWYgc3RydWN0IHsNCj4gPiArICBVTklUX1RFU1RfSE9TVF9C QVNFX0xJQl9BU01fQ1BVSUQNCj4gQXNtQ3B1aWQ7DQo+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFT RV9MSUJfQVNNX0NQVUlEX0VYDQo+IEFzbUNwdWlkRXg7DQo+ID4gKyAgVU5JVF9URVNUX0hPU1Rf QkFTRV9MSUJfVk9JRA0KPiBBc21EaXNhYmxlQ2FjaGU7DQo+ID4gKyAgVU5JVF9URVNUX0hPU1Rf QkFTRV9MSUJfVk9JRA0KPiBBc21FbmFibGVDYWNoZTsNCj4gPiArICBVTklUX1RFU1RfSE9TVF9C QVNFX0xJQl9BU01fUkVBRF9NU1JfNjQNCj4gQXNtUmVhZE1zcjY0Ow0KPiA+ICsgIFVOSVRfVEVT VF9IT1NUX0JBU0VfTElCX0FTTV9XUklURV9NU1JfNjQNCj4gQXNtV3JpdGVNc3I2NDsNCj4gPiAr ICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9SRUFEX1VJTlRODQo+IEFzbVJlYWRDcjA7DQo+ID4g KyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfUkVBRF9VSU5UTg0KPiBBc21SZWFkQ3IyOw0KPiA+ ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1JFQURfVUlOVE4NCj4gQXNtUmVhZENyMzsNCj4g PiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9SRUFEX1VJTlRODQo+IEFzbVJlYWRDcjQ7DQo+ ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfV1JJVEVfVUlOVE4NCj4gQXNtV3JpdGVDcjA7 DQo+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfV1JJVEVfVUlOVE4NCj4gQXNtV3JpdGVD cjI7DQo+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfV1JJVEVfVUlOVE4NCj4gQXNtV3Jp dGVDcjM7DQo+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfV1JJVEVfVUlOVE4NCj4gQXNt V3JpdGVDcjQ7DQo+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfUkVBRF9VSU5UTg0KPiBB c21SZWFkRHIwOw0KPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1JFQURfVUlOVE4NCj4g QXNtUmVhZERyMTsNCj4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9SRUFEX1VJTlRODQo+ IEFzbVJlYWREcjI7DQo+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfUkVBRF9VSU5UTg0K PiBBc21SZWFkRHIzOw0KPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1JFQURfVUlOVE4N Cj4gQXNtUmVhZERyNDsNCj4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9SRUFEX1VJTlRO DQo+IEFzbVJlYWREcjU7DQo+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfUkVBRF9VSU5U Tg0KPiBBc21SZWFkRHI2Ow0KPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1JFQURfVUlO VE4NCj4gQXNtUmVhZERyNzsNCj4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9XUklURV9V SU5UTg0KPiBBc21Xcml0ZURyMDsNCj4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9XUklU RV9VSU5UTg0KPiBBc21Xcml0ZURyMTsNCj4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9X UklURV9VSU5UTg0KPiBBc21Xcml0ZURyMjsNCj4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJ Ql9XUklURV9VSU5UTg0KPiBBc21Xcml0ZURyMzsNCj4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNF X0xJQl9XUklURV9VSU5UTg0KPiBBc21Xcml0ZURyNDsNCj4gPiArICBVTklUX1RFU1RfSE9TVF9C QVNFX0xJQl9XUklURV9VSU5UTg0KPiBBc21Xcml0ZURyNTsNCj4gPiArICBVTklUX1RFU1RfSE9T VF9CQVNFX0xJQl9XUklURV9VSU5UTg0KPiBBc21Xcml0ZURyNjsNCj4gPiArICBVTklUX1RFU1Rf SE9TVF9CQVNFX0xJQl9XUklURV9VSU5UTg0KPiBBc21Xcml0ZURyNzsNCj4gPiArICBVTklUX1RF U1RfSE9TVF9CQVNFX0xJQl9SRUFEX1VJTlQxNg0KPiBBc21SZWFkQ3M7DQo+ID4gKyAgVU5JVF9U RVNUX0hPU1RfQkFTRV9MSUJfUkVBRF9VSU5UMTYNCj4gQXNtUmVhZERzOw0KPiA+ICsgIFVOSVRf VEVTVF9IT1NUX0JBU0VfTElCX1JFQURfVUlOVDE2DQo+IEFzbVJlYWRFczsNCj4gPiArICBVTklU X1RFU1RfSE9TVF9CQVNFX0xJQl9SRUFEX1VJTlQxNg0KPiBBc21SZWFkRnM7DQo+ID4gKyAgVU5J VF9URVNUX0hPU1RfQkFTRV9MSUJfUkVBRF9VSU5UMTYNCj4gQXNtUmVhZEdzOw0KPiA+ICsgIFVO SVRfVEVTVF9IT1NUX0JBU0VfTElCX1JFQURfVUlOVDE2DQo+IEFzbVJlYWRTczsNCj4gPiArICBV TklUX1RFU1RfSE9TVF9CQVNFX0xJQl9SRUFEX1VJTlQxNg0KPiBBc21SZWFkVHI7DQo+ID4gKyAg VU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfQVNNX1JFQURfSUEzMl9ERVNDUklQVE9SDQo+IEFzbVJl YWRHZHRyOw0KPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX0FTTV9XUklURV9JQTMyX0RF U0NSSVBUT1INCj4gQXNtV3JpdGVHZHRyOw0KPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElC X0FTTV9SRUFEX0lBMzJfREVTQ1JJUFRPUg0KPiBBc21SZWFkSWR0cjsNCj4gPiArICBVTklUX1RF U1RfSE9TVF9CQVNFX0xJQl9BU01fV1JJVEVfSUEzMl9ERVNDUklQVE9SDQo+IEFzbVdyaXRlSWR0 cjsNCj4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9SRUFEX1VJTlQxNg0KPiBBc21SZWFk TGR0cjsNCj4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9XUklURV9VSU5UMTYNCj4gQXNt V3JpdGVMZHRyOw0KPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX0FTTV9SRUFEX1BNQw0K PiBBc21SZWFkUG1jOw0KPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX0FTTV9NT05JVE9S DQo+IEFzbU1vbml0b3I7DQo+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfQVNNX01XQUlU DQo+IEFzbU13YWl0Ow0KPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1ZPSUQNCj4gQXNt V2JpbnZkOw0KPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1ZPSUQNCj4gQXNtSW52ZDsN Cj4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9BU01fRkxVU0hfQ0FDSEVfTElORQ0KPiBB c21GbHVzaENhY2hlTGluZTsNCj4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9BU01fUEFH SU5HXzMyDQo+IEFzbUVuYWJsZVBhZ2luZzMyOw0KPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0Vf TElCX0FTTV9QQUdJTkdfMzINCj4gQXNtRGlzYWJsZVBhZ2luZzMyOw0KPiA+ICsgIFVOSVRfVEVT VF9IT1NUX0JBU0VfTElCX0FTTV9FTkFCTEVfUEFHSU5HXzY0DQo+IEFzbUVuYWJsZVBhZ2luZzY0 Ow0KPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX0FTTV9ESVNBQkxFX1BBR0lOR182NA0K PiBBc21EaXNhYmxlUGFnaW5nNjQ7DQo+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfQVNN X0dFVF9USFVOS18xNl9QUk9QRVJUSUVTDQo+IEFzbUdldFRodW5rMTZQcm9wZXJ0aWVzOw0KPiA+ ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX0FTTV9USFVOS18xNg0KPiBBc21QcmVwYXJlVGh1 bmsxNjsNCj4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9BU01fVEhVTktfMTYNCj4gQXNt VGh1bmsxNjsNCj4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9BU01fVEhVTktfMTYNCj4g QXNtUHJlcGFyZUFuZFRodW5rMTY7DQo+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfV1JJ VEVfVUlOVDE2DQo+IEFzbVdyaXRlVHI7DQo+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJf Vk9JRA0KPiBBc21MZmVuY2U7DQo+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfQVNNX1BB VENIX0lOU1RSVUNUSU9OX1g4Ng0KPiBQYXRjaEluc3RydWN0aW9uWDg2Ow0KPiA+ICt9IFVOSVRf VEVTVF9IT1NUX0JBU0VfTElCX1g4NjsNCj4gPiArDQo+ID4gKy8vLw0KPiA+ICsvLy8gRGF0YSBz dHJ1Y3R1cmUgdGhhdCBjb250YWlucyBwb2ludGVycyBzdHJ1Y3R1cmVzDQo+IG9mIGNvbW1vbiBz ZXJ2aWNlcyBhbmQgQ1BVDQo+ID4gKy8vLyBhcmNoaXRjdHVpcmUgc3BlY2lmaWMgc2VydmljZXMu ICBTdXBwb3J0IGZvcg0KPiBhZGRpdGlvbmFsIENQVSBhcmNoaXRlY3R1cmVzDQo+ID4gKy8vLyBj YW4gYmUgYWRkZWQgdG8gdGhlIGVuZCBvZiB0aGlzIHN0cnVjdHVyZS4NCj4gPiArLy8vDQo+ID4g K3R5cGVkZWYgc3RydWN0IHsNCj4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9DT01NT04g ICpDb21tb247DQo+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfWDg2ICAgICAqWDg2Ow0K PiA+ICt9IFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCOw0KPiA+ICsNCj4gPiArZXh0ZXJuIFVOSVRf VEVTVF9IT1NUX0JBU0VfTElCICBnVW5pdFRlc3RIb3N0QmFzZUxpYjsNCj4gPiArDQo+ID4gKyNl bmRpZg0KPiA+IC0tDQo+ID4gMi4yMS4wLndpbmRvd3MuMQ0KDQo=