From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=104.47.2.43; helo=eur01-db5-obe.outbound.protection.outlook.com; envelope-from=meenakshi.aggarwal@nxp.com; receiver=edk2-devel@lists.01.org Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01on0043.outbound.protection.outlook.com [104.47.2.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 81929220EE075 for ; Sun, 3 Dec 2017 22:14:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=m5WEL1ayuDtNPsOhcVxT1D23GDWOLH/9cGhOjtvoesU=; b=G7CCLmWXBz/laJ6jFLnC77q3x4XxUdG16Sl8mf16VMfE6mxr/9vuGk9J2NA5QwMMBR6dHFOpzzzQq4Aabe3qNfTjzBKlXZDbSzV+h7G5xFdaZskKYOH5fOE/9TfpGH6GiBUPkXcA/Gl5Lz0Vo/oGr0pA6N2mH74bmkdtC8uVNpw= Received: from DB5PR04MB0998.eurprd04.prod.outlook.com (10.161.199.12) by AM0PR0402MB3332.eurprd04.prod.outlook.com (52.133.44.153) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.282.5; Mon, 4 Dec 2017 06:18:50 +0000 Received: from DB5PR04MB0998.eurprd04.prod.outlook.com ([fe80::1d9f:72df:a04f:ddb6]) by DB5PR04MB0998.eurprd04.prod.outlook.com ([fe80::1d9f:72df:a04f:ddb6%17]) with mapi id 15.20.0260.006; Mon, 4 Dec 2017 06:18:49 +0000 From: Meenakshi Aggarwal To: "Kinney, Michael D" , Leif Lindholm CC: "edk2-devel@lists.01.org" , "Gao, Liming" , Ard Biesheuvel , "Varun Sethi" , Udit Kumar Thread-Topic: [edk2] [PATCH 1/1] MdePkg/IoLib: Add support for big-endian MMIO Thread-Index: AQHSJf8g4WbKjSWeTUGVohhhcxe8iqCr++gAgAAQ+YCAADsgAIAAJeEAgjcV3KCABIjHYIAAVAOQgEHVTuCAA5+mAIAAbgqAgAAGkgCAAIrCwIACBZUAgAB1YwCAAE86AIADoc1A Date: Mon, 4 Dec 2017 06:18:49 +0000 Message-ID: References: <4A89E2EF3DFEDB4C8BFDE51014F606A14E16B65D@SHSMSX104.ccr.corp.intel.com> <20171129125114.i3y446ds4qrkohxl@bivouac.eciton.net> <20171129194836.dqsbtbqi5budvppl@bivouac.eciton.net> <20171201105744.mlspp4gsmibbpolz@bivouac.eciton.net> In-Reply-To: Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=meenakshi.aggarwal@nxp.com; x-originating-ip: [192.88.169.1] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; AM0PR0402MB3332; 6:mk9KwKpkF2X6pQcIwxt6GO9bd7fKtqLcz9uk5fGvi3v7VjpULie7MEoLIDGphY5lizP8iA/42PGPhmzpvAwYv4j8JBHSzlCiF6uQJRzp1rQDELzLta7H+p9XlZeH4oGQrhtFYgdzuVAeVTDqPU7vdlEyE+mq+zmwraqhxY40izfmo/OFF0QOWsTold2kZ223LqcVEJUS+5oVh0/zQcOsnL5kcsAoC6VHcMPcgkvRO1a5OkDkNYK6lO+Sq4HVc7/4S93Z8ao4e+j0Xcl2vC6Ig6TBLt7m/zXhbY/C8SS+6ADAvIO6Rzh6nBMoVQa5CAuVXnYixNrqOfAKyGfZYrwCX7BnSgkynUrbeOf1KyfxQbc=; 5:TjuQxbGImfI8v4T41Zg6Z/55dCctwkC2nkWf6avlFB/lxNTXn0b/imNHOVTE7C7+Zey4cMBG19r/ECGTPBa8RQj8eHZdsJOLEuvP9opSuqqv+advUaZyteLuguLyNctrHhMsA3WeRJK/uqI2jcoxB9F6v2Upd19PDvePSU8ZQZU=; 24:BNxQ8MDWisp7QeyZ+XAu2IEy8Cw2XHzrM7U8yZpA2ZWPohE9nebBaRYG8FasDE/RYeGpI3DLq1OzRncEs52OledZd0xYLZgJrZND1aVYuIs=; 7:eLdldVJEmKrG89EmSY/5C0nGFESa8VuV2jZwrfUfV3ceSXsHSZ7aMEYrvA9jAvN/5B8Kln4XI8I1IAmtOXEZjUF3UMH35t9g5H9Eo7clh+4N+hE2fMMNsN5x1eY5bdM1ysOd2BW6vkJSiomduJLWBDnHbSXjM9tqU7qcHmGH+yQfx7JyJfyj6GvF3WE9oEE3ifBf20vYnkdpnpx4531wUcBnMEeaXbvMoXEJYGRh2GzujGlmHRl06JXo8jPicYou x-ms-exchange-antispam-srfa-diagnostics: SSOS;SSOR; x-forefront-antispam-report: SFV:SKI; SCL:-1; SFV:NSPM; SFS:(10009020)(6029001)(6009001)(376002)(366004)(346002)(39860400002)(189002)(53754006)(43544003)(199003)(24454002)(13464003)(6436002)(6506006)(33656002)(229853002)(45080400002)(478600001)(53546010)(9686003)(55016002)(2950100002)(3280700002)(66066001)(6306002)(7696005)(54356011)(76176011)(2900100001)(2906002)(93886005)(305945005)(14454004)(7736002)(189998001)(86362001)(966005)(106356001)(74316002)(53936002)(5660300001)(8676002)(97736004)(25786009)(81166006)(81156014)(68736007)(105586002)(3846002)(102836003)(6116002)(101416001)(110136005)(54906003)(3660700001)(5250100002)(99286004)(53946003)(316002)(4326008)(6246003)(8936002)(579004)(559001); DIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR0402MB3332; H:DB5PR04MB0998.eurprd04.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: c16f056f-c392-4ae2-f46c-08d53adee22e x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603286); SRVR:AM0PR0402MB3332; x-ms-traffictypediagnostic: AM0PR0402MB3332: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(189930954265078)(185117386973197)(162533806227266)(45079756050767)(228905959029699); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(6040450)(2401047)(5005006)(8121501046)(93006095)(93001095)(3002001)(3231022)(10201501046)(6055026)(6041248)(20161123558100)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123560025)(20161123564025)(6072148)(201708071742011); SRVR:AM0PR0402MB3332; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:AM0PR0402MB3332; x-forefront-prvs: 051158ECBB received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: c16f056f-c392-4ae2-f46c-08d53adee22e X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Dec 2017 06:18:49.3265 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0402MB3332 Subject: Re: [PATCH 1/1] MdePkg/IoLib: Add support for big-endian MMIO X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 04 Dec 2017 06:14:26 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgTGVpZiwNCg0KDQpNaWNoYWVsIGlzIGluIGZhdm9yIG9mIGFkZGluZyBzZXBhcmF0ZSBBUElz IGZvciBieXRlIHN3YXAgb3BlcmF0aW9uIGFuZCANCldlIGFsc28gcHJlZmVyIGtlZXBpbmcgaXQg YXMgYSBzZXBhcmF0ZSBsaWJyYXJ5IGJlY2F1c2Ugb2YgZm9sbG93aW5nIHVzZSBjYXNlOg0KDQpE cml2ZXIgd2hpY2ggaXMgaW4gQkUgbW9kZSwgYW5kIGlzIHVzaW5nIERlYnVnTGliIHdoaWNoIHVz ZXMgU2VyaWFsUG9ydExpYiwgd2hpY2ggaXMgaW4gTEUgbW9kZS4NClRoaXMgaXMgdGhlIG1haW4g aXNzdWUgYmVjYXVzZSBvZiB3aGljaCB3ZSBjYW5ub3QgdXNlIHNhbWUgQVBJcyBmb3IgYnl0ZSBz d2FwcGluZy4NCg0KDQpQbGVhc2UgZ2l2ZSB5b3VyIHZpZXdzLg0KDQoNClRoYW5rcywNCk1lZW5h a3NoaQ0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEtpbm5leSwgTWlj aGFlbCBEIFttYWlsdG86bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb21dDQo+IFNlbnQ6IFNhdHVy ZGF5LCBEZWNlbWJlciAwMiwgMjAxNyA0OjExIEFNDQo+IFRvOiBVZGl0IEt1bWFyIDx1ZGl0Lmt1 bWFyQG54cC5jb20+OyBMZWlmIExpbmRob2xtDQo+IDxsZWlmLmxpbmRob2xtQGxpbmFyby5vcmc+ OyBNZWVuYWtzaGkgQWdnYXJ3YWwNCj4gPG1lZW5ha3NoaS5hZ2dhcndhbEBueHAuY29tPjsgVmFy dW4gU2V0aGkgPFYuU2V0aGlAbnhwLmNvbT47IEtpbm5leSwNCj4gTWljaGFlbCBEIDxtaWNoYWVs LmQua2lubmV5QGludGVsLmNvbT4NCj4gQ2M6IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnOyBHYW8s IExpbWluZyA8bGltaW5nLmdhb0BpbnRlbC5jb20+OyBBcmQNCj4gQmllc2hldXZlbCA8YXJkLmJp ZXNoZXV2ZWxAbGluYXJvLm9yZz4NCj4gU3ViamVjdDogUkU6IFtlZGsyXSBbUEFUQ0ggMS8xXSBN ZGVQa2cvSW9MaWI6IEFkZCBzdXBwb3J0IGZvciBiaWctZW5kaWFuDQo+IE1NSU8NCj4gDQo+IFVk aXQsDQo+IA0KPiBJIGFncmVlIHdpdGggeW91ciBjb25jZXJuLg0KPiANCj4gSSBhbSBpbiBmYXZv ciBvZiBhZGRpbmcgbmV3IEFQSXMgdGhhdCBwZXJmb3JtIHRoZQ0KPiBieXRlIHN3YXAgb3BlcmF0 aW9ucy4NCj4gDQo+IE1pa2UNCj4gDQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4g PiBGcm9tOiBVZGl0IEt1bWFyIFttYWlsdG86dWRpdC5rdW1hckBueHAuY29tXQ0KPiA+IFNlbnQ6 IEZyaWRheSwgRGVjZW1iZXIgMSwgMjAxNyA5OjU4IEFNDQo+ID4gVG86IExlaWYgTGluZGhvbG0g PGxlaWYubGluZGhvbG1AbGluYXJvLm9yZz47IE1lZW5ha3NoaQ0KPiA+IEFnZ2Fyd2FsIDxtZWVu YWtzaGkuYWdnYXJ3YWxAbnhwLmNvbT47IFZhcnVuIFNldGhpDQo+ID4gPFYuU2V0aGlAbnhwLmNv bT4NCj4gPiBDYzogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29t PjsgZWRrMi0NCj4gPiBkZXZlbEBsaXN0cy4wMS5vcmc7IEdhbywgTGltaW5nIDxsaW1pbmcuZ2Fv QGludGVsLmNvbT47DQo+ID4gQXJkIEJpZXNoZXV2ZWwgPGFyZC5iaWVzaGV1dmVsQGxpbmFyby5v cmc+DQo+ID4gU3ViamVjdDogUkU6IFtlZGsyXSBbUEFUQ0ggMS8xXSBNZGVQa2cvSW9MaWI6IEFk ZCBzdXBwb3J0DQo+ID4gZm9yIGJpZy1lbmRpYW4gTU1JTw0KPiA+DQo+ID4gVGhhbmtzIExlaWYs DQo+ID4NCj4gPiA+IEl0IG1heSByZXF1aXJlIGEgbGl0dGxlIGJpdCBtb3JlIG9mIHVwLWZyb250 IHdvcmssIGJ1dA0KPiA+IHRoZSBlbmQgcmVzdWx0IHdpbGwgYmUgYQ0KPiA+ID4gcGxhdGZvcm0g cG9ydCB0aGF0IHdvcmtzIHdpdGggdGhlIGludGVuZGVkIGVkazIgZGVzaWduDQo+ID4gcHJpbmNp cGxlcyByYXRoZXIgdGhhbg0KPiA+DQo+ID4gWWVzLCB0aGlzIHdpbGwgYmUgcmUtZGVzaWduL2Nv ZGUgZm9yIHVzLCBicmVha2luZyBhbGwNCj4gPiBzb2Z0d2FyZSBwaWVjZXMgaW50bw0KPiA+IHNt YWxsZXIgYmxvY2tzIGFuZCBleHBvc2luZyBwcm90b2NvbCBmcm9tIHRoZSBzYW1lLg0KPiA+IFRo aXMgY291bGQgYmUgbWFuYWdlZC4NCj4gPg0KPiA+IEJ1dCBob3cgZG8geW91IHNlZSwgIGlmIHRo ZXJlIGlzIHN1Y2ggZGVwZW5kZW5jeSBvTiBsaWIuDQo+ID4gU2F5IGEgZHJpdmVyIHdoaWNoIGlz IGluIEJFIG1vZGUsIGFuZCBpcyB1c2luZyBEZWJ1Z0xpYg0KPiA+IChCYXNlRGVidWdMaWJTZXJp YWxQb3J0KQ0KPiA+IEFuZCBEZWJ1Z0xpYiB1c2VzIFNlcmlhbFBvcnRMaWIsIHdoaWNoIGlzIGlu IExFIG1vZGUNCj4gPg0KPiA+IFRoYW5rcw0KPiA+IFVkaXQNCj4gPg0KPiA+ID4gLS0tLS1Pcmln aW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206IGVkazItZGV2ZWwgW21haWx0bzplZGsyLWRl dmVsLQ0KPiA+IGJvdW5jZXNAbGlzdHMuMDEub3JnXSBPbiBCZWhhbGYgT2YgTGVpZg0KPiA+ID4g TGluZGhvbG0NCj4gPiA+IFNlbnQ6IEZyaWRheSwgRGVjZW1iZXIgMDEsIDIwMTcgNDoyOCBQTQ0K PiA+ID4gVG86IE1lZW5ha3NoaSBBZ2dhcndhbCA8bWVlbmFrc2hpLmFnZ2Fyd2FsQG54cC5jb20+ DQo+ID4gPiBDYzogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29t PjsNCj4gPiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzsNCj4gPiA+IEdhbywgTGltaW5nIDxsaW1p bmcuZ2FvQGludGVsLmNvbT47IEFyZCBCaWVzaGV1dmVsDQo+ID4gPiA8YXJkLmJpZXNoZXV2ZWxA bGluYXJvLm9yZz4NCj4gPiA+IFN1YmplY3Q6IFJlOiBbZWRrMl0gW1BBVENIIDEvMV0gTWRlUGtn L0lvTGliOiBBZGQNCj4gPiBzdXBwb3J0IGZvciBiaWctZW5kaWFuDQo+ID4gPiBNTUlPDQo+ID4g Pg0KPiA+ID4gT24gVGh1LCBOb3YgMzAsIDIwMTcgYXQgMDQ6MTU6MzhBTSArMDAwMCwgTWVlbmFr c2hpDQo+ID4gQWdnYXJ3YWwgd3JvdGU6DQo+ID4gPiA+IEhpIExlaWYsIE1pa2UsDQo+ID4gPiA+ DQo+ID4gPiA+DQo+ID4gPiA+IE5YUCBib2FyZHMsIGF0IHByZXNlbnQsIGhhdmUgZmV3IGNvbnRy b2xsZXJzIHdpdGggYmlnDQo+ID4gZW5kaWFuIGFuZCBvdGhlcg0KPiA+ID4gPiB3aXRoIGxpdHRs ZSBlbmRpYW4gbWVtb3J5IGFjY2Vzcy4NCj4gPiA+DQo+ID4gPiBTdXJlLCB0aGlzIGlzIG5vdCBh IHByb2JsZW0uDQo+ID4gPg0KPiA+ID4gPiBNYXhpbXVtIGNvbnRyb2xsZXJzIGRlcGVuZCBvbiBT b2NMaWIgbGlicmFyeSBmb3INCj4gPiBjbG9jayBpbmZvcm1hdGlvbiBhbmQNCj4gPiA+ID4gZW5k aWFubmVzcyBmb3IgU29jTGliIGFuZCBjb250cm9sbGVycyBpcyBkaWZmZXJlbnQuDQo+ID4gPg0K PiA+ID4gT0ssIEkgc2VlIGluIFNvY0xpYiB5b3UgaGF2ZSBzb21ldGhpbmcgY2FsbGVkIGEgR3Vy DQo+ID4gdGhhdCBpcyByZWFkIG9uY2UgKGFuZCBhZ2Fpbg0KPiA+ID4gZG9lcyBhIHNwZWNpYWwg cGVyLWRldmljZSBQY2QgZGFuY2UgZm9yIHJ1bnRpbWUNCj4gPiBzZWxlY3Rpb24gYmV0d2Vlbg0K PiA+ID4gYnl0ZXN3YXBwaW5nIE1taW8gYW5kIHBsYWluIE1taW8pLg0KPiA+ID4NCj4gPiA+ID4g U28gdGhpcyBvcHRpb24gd2lsbCBub3Qgd29yayBmb3IgdXMsDQo+ID4gPiA+ICAgWW91IHdvdWxk IHRoZW4ganVzdCBkbyAoaW4geW91ciAuZHNjKToNCj4gPiA+ID4gICBQbGF0Zm9ybS9OWFAvRHJp dmVycy9XYXRjaERvZy9XYXRjaERvZ0R4ZS5pbmYgew0KPiA+ID4gPiAgICAgICBJb0xpYnw8cGF0 aCB0byBCZUlvTGliIC5pbmY+DQo+ID4gPiA+ICAgfQ0KPiA+ID4gPg0KPiA+ID4gPiBCZWNhdXNl IGFsbCBsaWJyYXJpZXMgaW5jbHVkZWQgYnkgV2F0Y2hEb2cgd2lsbCB0aGVuDQo+ID4gYWNjZXNz IEJFIG1vZGUgTW1pbw0KPiA+ID4gQVBJcy4NCj4gPiA+DQo+ID4gPiBXaGljaCBsaWJyYXJpZXMg cGVyZm9ybWluZyBNbWlvIGFjY2Vzc2VzIGFyZSB5b3UNCj4gPiBpbnRlbmRpbmcgdG8gaW5jbHVk ZSBpbiB5b3VyDQo+ID4gPiB3YXRjaGRvZyBkcml2ZXI/IFlvdSBoYXZlIHN1Ym1pdHRlZCBub25l IGFzIHBhcnQgb2YNCj4gPiB0aGlzIHNlcmllcy4NCj4gPiA+DQo+ID4gPiA+IEFuZCBicmVha2lu ZyBjb2RlIGludG8gc2VwYXJhdGUgbW9kdWxlcyB3aXRoDQo+ID4gZGlmZmVyZW50IGFjY2VzcyB3 aWxsIGJlDQo+ID4gPiA+IHZlcnkgZGlmZmljdWx0Lg0KPiA+ID4NCj4gPiA+IEl0IG1heSByZXF1 aXJlIGEgbGl0dGxlIGJpdCBtb3JlIG9mIHVwLWZyb250IHdvcmssIGJ1dA0KPiA+IHRoZSBlbmQg cmVzdWx0IHdpbGwgYmUgYQ0KPiA+ID4gcGxhdGZvcm0gcG9ydCB0aGF0IHdvcmtzIHdpdGggdGhl IGludGVuZGVkIGVkazIgZGVzaWduDQo+ID4gcHJpbmNpcGxlcyByYXRoZXIgdGhhbg0KPiA+ID4g YWdhaW5zdCB0aGVtLiBBbmQgdGhhdCB3aWxsIHJlZHVjZSB0aGUgb3ZlcmFsbCBlZmZvcnQNCj4g PiAobm90IHRvIG1lbnRpb24gY29kZQ0KPiA+ID4gZHVwbGljYXRpb24pLg0KPiA+ID4NCj4gPiA+ IEZyb20gdGhlIHBhdGNoZXMgeW91IGhhdmUgc2VudCwgdGhlIG9ubHkgcmVxdWlyZWQNCj4gPiBj aGFuZ2UgSSBzZWUgKGlmIGENCj4gPiA+IGJ5dGVzd2FwcGluZyBJb0xpYiB3YXMgYWRkZWQgdG8g ZWRrMikgd291bGQgYmUgdG8NCj4gPiBjcmVhdGUgYSB0aW55IGRyaXZlciBmb3IgdGhpcw0KPiA+ ID4gIkd1ciIgZGV2aWNlIHRoYXQgaW5zdGFsbHMgYSBwcm90b2NvbCBjb250YWluaW5nIGENCj4g PiBzaW5nbGUgZnVuY3Rpb24gZm9yIHJlYWRpbmcNCj4gPiA+IGZyb20gdGhhdCBkZXZpY2UncyBy ZWdpc3RlciBzcGFjZS4gVGhhdCBkcml2ZXIgY2FuIGJlDQo+ID4gYnVpbHQgYWdhaW5zdCB0aGUg c3dhcHBpbmcNCj4gPiA+IG9yIG5vbi1zd2FwcGluZyBJb0xpYiBhcyBhcHByb3ByaWF0ZS4NCj4g PiA+DQo+ID4gPiA+IFdhdGNoZG9nIGlzIG5vdCB0aGUgb25seSBtb2R1bGUgd2hpY2ggbmVlZCBC RSBNbWlvDQo+ID4gQVBJcywgd2UgaGF2ZSBNTUMNCj4gPiA+ID4gYW5kIG90aGVyIGNvbnRyb2xs ZXJzIGFsc28gd2l0aCBzYW1lIHJlcXVpcmVtZW50Lg0KPiA+ID4NCj4gPiA+IEFuZCB0aGUgc2Ft ZSBzb2x1dGlvbnMgYXJlIHBvc3NpYmxlIGV2ZXJ5d2hlcmUuDQo+ID4gPg0KPiA+ID4gQmVzdCBS ZWdhcmRzLA0KPiA+ID4NCj4gPiA+IExlaWYNCj4gPiA+DQo+ID4gPiA+IFdlIG5lZWQgQkUgTW1p byBBUElzIHdpdGggYSBkaWZmZXJlbnQgbmFtZS4NCj4gPiA+ID4NCj4gPiA+ID4gUGxlYXNlIHNl ZSB0aGUgcG9zc2liaWxpdHkuDQo+ID4gPiA+DQo+ID4gPiA+IFRoYW5rcyAmIFJlZ2FyZHMsDQo+ ID4gPiA+IE1lZW5ha3NoaQ0KPiA+ID4gPg0KPiA+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2Fn ZS0tLS0tDQo+ID4gPiA+ID4gRnJvbTogTGVpZiBMaW5kaG9sbQ0KPiA+IFttYWlsdG86bGVpZi5s aW5kaG9sbUBsaW5hcm8ub3JnXQ0KPiA+ID4gPiA+IFNlbnQ6IFRodXJzZGF5LCBOb3ZlbWJlciAz MCwgMjAxNyAxOjE5IEFNDQo+ID4gPiA+ID4gVG86IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVs LmQua2lubmV5QGludGVsLmNvbT4NCj4gPiA+ID4gPiBDYzogTWVlbmFrc2hpIEFnZ2Fyd2FsDQo+ ID4gPG1lZW5ha3NoaS5hZ2dhcndhbEBueHAuY29tPjsgR2FvLCBMaW1pbmcNCj4gPiA+ID4gPiA8 bGltaW5nLmdhb0BpbnRlbC5jb20+OyBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzsNCj4gPiBBcmQg Qmllc2hldXZlbA0KPiA+ID4gPiA+IDxhcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnPg0KPiA+ID4g PiA+IFN1YmplY3Q6IFJlOiBbZWRrMl0gW1BBVENIIDEvMV0gTWRlUGtnL0lvTGliOiBBZGQNCj4g PiBzdXBwb3J0IGZvcg0KPiA+ID4gPiA+IGJpZy1lbmRpYW4gTU1JTw0KPiA+ID4gPiA+DQo+ID4g PiA+ID4gSSBndWVzcyB0aGVyZSBpcyBubyBzdHJpY3QgcnVsZSBhYm91dCBhIGRyaXZlciBvbmx5 DQo+ID4gZGlyZWN0bHkNCj4gPiA+ID4gPiBhY2Nlc3Npbmcgb25lIHBpZWNlIG9mIEhXPw0KPiA+ ID4gPiA+DQo+ID4gPiA+ID4gU3RpbGwsIHRoYXQgd291bGQgYmUgb25lIHBvc3NpYmxlIHNvbHV0 aW9uOg0KPiA+IGJyZWFraW5nIGFjY2Vzc2VzIHRvIGENCj4gPiA+ID4gPiBzZXBhcmF0ZSBIVyBp biBuZWVkIG9mIGJ5dGVzd2FwcGluZyBvdXQgaW50byBpdHMNCj4gPiBvd24gbW9kdWxlIGFuZA0K PiA+ID4gPiA+IGxldHRpbmcgaXQgb3ZlcnJpZGUgSW9MaWIgdmVyc2lvbiB0aGVyZS4NCj4gPiA+ ID4gPg0KPiA+ID4gPiA+IFJlZ2FyZHMsDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBMZWlmDQo+ID4g PiA+ID4NCj4gPiA+ID4gPiBPbiBXZWQsIE5vdiAyOSwgMjAxNyBhdCAwNzoyNTowNVBNICswMDAw LCBLaW5uZXksDQo+ID4gTWljaGFlbCBEIHdyb3RlOg0KPiA+ID4gPiA+ID4gTGVpZiwNCj4gPiA+ ID4gPiA+DQo+ID4gPiA+ID4gPiBJIGFncmVlIHRoYXQgdGhpcyBzaG91bGQgYmUgZGVzY3JpYmVk IGFzIGJ5dGUNCj4gPiBzd2FwcGluZy4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBXaGF0IGFi b3V0IGEgbW9kdWxlIHRoYXQgbmVlZHMgdG8gYWNjZXNzIEhXIHdpdGgNCj4gPiBhbmQgd2l0aG91 dCB0aGUNCj4gPiA+ID4gPiA+IGJ5dGVzIHN3YXBwZWQ/ICBJdCBnZXRzIG1vcmUgY29tcGxleCBp ZiBhIG1vZHVsZQ0KPiA+IGlzIGxpbmtlZCBhZ2FpbnN0DQo+ID4gPiA+ID4gPiBzZXZlcmFsIGxp YnMgYW5kIHNvbWUgbGlicyBhY2Nlc3MgSFcgd2l0aCBieXRlcw0KPiA+IHN3YXBwZWQgYW5kIHNv bWUNCj4gPiA+ID4gPiA+IGRvIG5vdC4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBUaGFua3Ms DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gTWlrZQ0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4gPiA+ID4gRnJvbTogZWRrMi1k ZXZlbCBbbWFpbHRvOmVkazItZGV2ZWwtDQo+ID4gYm91bmNlc0BsaXN0cy4wMS5vcmddIE9uDQo+ ID4gPiA+ID4gPiA+IEJlaGFsZiBPZiBMZWlmIExpbmRob2xtDQo+ID4gPiA+ID4gPiA+IFNlbnQ6 IFdlZG5lc2RheSwgTm92ZW1iZXIgMjksIDIwMTcgNDo1MSBBTQ0KPiA+ID4gPiA+ID4gPiBUbzog TWVlbmFrc2hpIEFnZ2Fyd2FsDQo+ID4gPG1lZW5ha3NoaS5hZ2dhcndhbEBueHAuY29tPjsgR2Fv LCBMaW1pbmcNCj4gPiA+ID4gPiA+ID4gPGxpbWluZy5nYW9AaW50ZWwuY29tPg0KPiA+ID4gPiA+ ID4gPiBDYzogS2lubmV5LCBNaWNoYWVsIEQNCj4gPiA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5j b20+Ow0KPiA+ID4gPiA+ID4gPiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzsgQXJkIEJpZXNoZXV2 ZWwNCj4gPiA+ID4gPiA+ID4gPGFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmc+DQo+ID4gPiA+ID4g PiA+IFN1YmplY3Q6IFJlOiBbZWRrMl0gW1BBVENIIDEvMV0gTWRlUGtnL0lvTGliOg0KPiA+IEFk ZCBzdXBwb3J0IGZvcg0KPiA+ID4gPiA+ID4gPiBiaWctZW5kaWFuIE1NSU8NCj4gPiA+ID4gPiA+ ID4NCj4gPiA+ID4gPiA+ID4gSGkgTWVlbmFrc2hpLA0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ ID4gPiBJIGZpbmFsbHkgZ290IGFyb3VuZCB0byBsb29raW5nIGF0IHRoZSB3YXRjaGRvZw0KPiA+ IGNvZGUgKHRoYXQgdXNlcw0KPiA+ID4gPiA+ID4gPiB0aGlzIGxpYnJhcnkpLCBhbmQgdGhhdCBo YXMgY29udmluY2VkIG1lIHRoZQ0KPiA+IGJlc3Qgc29sdXRpb24gaXMgdG8NCj4gPiA+ID4gPiA+ ID4gZG8gd2hhdCBMaW1pbmcgcHJvcG9zZWQuDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ IExvb2tpbmcgYXQgdGhpcyBzbmlwcGV0Og0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ ICtTVEFUSUMNCj4gPiA+ID4gPiA+ID4gPiArVUlOVDE2DQo+ID4gPiA+ID4gPiA+ID4gK0VGSUFQ SQ0KPiA+ID4gPiA+ID4gPiA+ICtXZG9nUmVhZCAoDQo+ID4gPiA+ID4gPiA+ID4gKyDCoElOIMKg VUlOVE4gwqAgwqAgQWRkcmVzcw0KPiA+ID4gPiA+ID4gPiA+ICsgwqApDQo+ID4gPiA+ID4gPiA+ ID4gK3sNCj4gPiA+ID4gPiA+ID4gPiArIMKgaWYgKEZpeGVkUGNkR2V0Qm9vbCAoUGNkV2RvZ0Jp Z0VuZGlhbikpIHsNCj4gPiA+ID4gPiA+ID4gPiArIMKgIMKgcmV0dXJuIEJlTW1pb1JlYWQxNiAo QWRkcmVzcyk7DQo+ID4gPiA+ID4gPiA+ID4gKyDCoH0gZWxzZSB7DQo+ID4gPiA+ID4gPiA+ID4g KyDCoCDCoHJldHVybiBNbWlvUmVhZDE2KEFkZHJlc3MpOw0KPiA+ID4gPiA+ID4gPiA+ICsgwqB9 DQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IFRoaXMgaXMgYWN0dWFsbHkgYSBwcmV0dHkg Z29vZCBkZW1vbnN0cmF0aW9uIG9mDQo+ID4gdGhlIGFyZ3VtZW50cw0KPiA+ID4gPiA+ID4gPiB0 aGF0IHdlcmUgbWFkZSB3aXRoIHJlZ2FyZHMgdG8gaG93IHRoZSBCZUlvTGliDQo+ID4gY291bGQg YmUganVzdA0KPiA+ID4gPiA+ID4gPiBhbm90aGVyIGltcGxlbWVudGF0aW9uIG9mIElvTGliLg0K PiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBZb3Ugd291bGQgdGhlbiBqdXN0IGRvIChpbiB5 b3VyIC5kc2MpOg0KPiA+ID4gPiA+ID4gPiDCoCBQbGF0Zm9ybS9OWFAvRHJpdmVycy9XYXRjaERv Zy9XYXRjaERvZ0R4ZS5pbmYNCj4gPiB7DQo+ID4gPiA+ID4gPiA+IMKgIMKgIElvTGlifDxwYXRo IHRvIEJlSW9MaWIgLmluZj4NCj4gPiA+ID4gPiA+ID4gwqAgfQ0KPiA+ID4gPiA+ID4gPg0KPiA+ ID4gPiA+ID4gPiBUaGlzIGNhdXNlcyB0aGUgYmlnLWVuZGlhbiB2ZXJzaW9uIG9mIHRoZQ0KPiA+ IGxpYnJhcnkgdG8gYmUgdXNlZCBmb3INCj4gPiA+ID4gPiA+ID4gdGhpcyBjb21wb25lbnQuIFRo aXMgbWFrZXMgdGhlc2UgV2RvZzxhY2Nlc3M+DQo+ID4gZnVuY3Rpb25zIGFuZCB0aGUNCj4gPiA+ ID4gPiA+ID4gUGNkIHJlZHVuZGFudCwgYW5kIHRoZSByZXN0IG9mIHRoZSBjb2RlIGNhbiB1c2UN Cj4gPiA+ID4gPiA+ID4gTW1pb1JlYWQxNigpL01taW9Xcml0ZTE2KCkNCj4gPiA+ID4gPiA+ID4g ZGlyZWN0bHkuDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IEJ1dCB0aGVuLCBpdCBpcyBu b3QgcmVhbGx5IGEgYmlnLWVuZGlhbiBvcg0KPiA+IGxpdHRlLWVuZGlhbiB2ZXJzaW9uDQo+ID4g PiA+ID4gPiA+IG9mIHRoZSBsaWJyYXJ5IHdlIG5lZWQuIFdlIGFsd2F5cyBrbm93IHdoaWNoDQo+ ID4gZW5kaWFubmVzcyB3ZSBhcmUNCj4gPiA+ID4gPiA+ID4gYnVpbGRpbmcgZm9yLg0KPiA+ID4g PiA+ID4gPiBXaGF0IHdlIG5lZWQgaXMgYSBieXRlc3dhcHBpbmcgZmxhdm91ciBvZg0KPiA+IElv TGliLg0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBTbyBMaW1pbmcsIHdoYXQgaWYgd2Ug ZG8gc29tZXRoaW5nIGxpa2UgYWRkaW5nDQo+ID4gYQ0KPiA+ID4gPiA+ID4gPg0KPiA+IE1kZVBr Zy9MaWJyYXJ5L0Jhc2VJb0xpYkludHJpbnNpYy9CYXNlSW9MaWJJbnRyaW5zaWNTd2ENCj4gPiA+ ID4gPiA+ID4gcC5pbmYNCj4gPiA+ID4gPiA+ID4gLS0tDQo+ID4gPiA+ID4gPiA+IFtEZWZpbmVz XQ0KPiA+ID4gPiA+ID4gPiAgIElORl9WRVJTSU9OICAgICAgICAgICAgICAgICAgICA9IDB4MDAw MTAwMUENCj4gPiA+ID4gPiA+ID4gICBCQVNFX05BTUUgICAgICAgICAgICAgICAgICAgICAgPQ0K PiA+ID4gPiA+ID4gPiBCYXNlSW9MaWJJbnRyaW5zaWNTd2FwDQo+ID4gPiA+ID4gPiA+ICAgTU9E VUxFX1VOSV9GSUxFICAgICAgICAgICAgICAgID0NCj4gPiA+ID4gPiA+ID4gQmFzZUlvTGliSW50 cmluc2ljLnVuaQ0KPiA+ID4gPiA+ID4gPiAgIEZJTEVfR1VJRCAgICAgICAgICAgICAgICAgICAg ICA9IGQ0YTYwZDQ0LQ0KPiA+IDM2ODgtNGE1MC0NCj4gPiA+ID4gPiA+ID4gYjJkMC01YzZmYzI0 MjI1MjMNCj4gPiA+ID4gPiA+ID4gICBNT0RVTEVfVFlQRSAgICAgICAgICAgICAgICAgICAgPSBC QVNFDQo+ID4gPiA+ID4gPiA+ICAgVkVSU0lPTl9TVFJJTkcgICAgICAgICAgICAgICAgID0gMS4w DQo+ID4gPiA+ID4gPiA+ICAgTElCUkFSWV9DTEFTUyAgICAgICAgICAgICAgICAgID0gSW9MaWIN Cj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gIw0KPiA+ID4gPiA+ ID4gPiAjICBWQUxJRF9BUkNISVRFQ1RVUkVTICAgICAgICAgICA9IElBMzIgWDY0IEVCQw0KPiA+ IElQRiBBUk0NCj4gPiA+ID4gPiA+ID4gQUFSQ0g2NA0KPiA+ID4gPiA+ID4gPiAjDQo+ID4gPiA+ ID4gPiA+DQo+ID4gPiA+ID4gPiA+IFtTb3VyY2VzXQ0KPiA+ID4gPiA+ID4gPiAgIEJhc2VJb0xp YkludHJpbnNpY0ludGVybmFsLmgNCj4gPiA+ID4gPiA+ID4gICBJb0hpZ2hMZXZlbC5jDQo+ID4g PiA+ID4gPiA+ICAgSW9MaWIuYw0KPiA+ID4gPiA+ID4gPiAgIElvTGliRWJjLmMgICAgICAgICAj IEFzc2VydHMgb24gYWxsIGkvbyBwb3J0DQo+ID4gYWNjZXNzZXMNCj4gPiA+ID4gPiA+ID4gICBJ b0xpYk1taW9CdWZmZXIuYw0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBbUGFja2FnZXNd DQo+ID4gPiA+ID4gPiA+ICAgTWRlUGtnL01kZVBrZy5kZWMNCj4gPiA+ID4gPiA+ID4NCj4gPiA+ ID4gPiA+ID4gW0xpYnJhcnlDbGFzc2VzXQ0KPiA+ID4gPiA+ID4gPiAgIERlYnVnTGliDQo+ID4g PiA+ID4gPiA+ICAgQmFzZUxpYg0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBbQnVpbGRP cHRpb25zXQ0KPiA+ID4gPiA+ID4gPiAgIEdDQzoqXypfKl9DQ19GTEFHUyAgPSAtRFNXQVBfQllU RVMNCj4gPiA+ID4gPiA+ID4gLS0tDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IEFuZCB0 aGVuIGFkZA0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiAjaWZkZWYgU1dBUF9CWVRFUw0K PiA+ID4gPiA+ID4gPiAgIHJldHVybiBTd2FwQnl0ZXNYWCAoVmFsdWUpOw0KPiA+ID4gPiA+ID4g PiAjZWxzZQ0KPiA+ID4gPiA+ID4gPiAgIHJldHVybiBWYWx1ZTsNCj4gPiA+ID4gPiA+ID4gI2Zp DQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IGZvciB0aGUgcmVhZCBvcGVyYXRpb25zIGFu ZA0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiAjaWZkZWYgU1dBUF9CWVRFUw0KPiA+ID4g PiA+ID4gPiAgICoodHlwZSlBZGRyZXNzID0gU3dhcEJ5dGVzWFggKFZhbHVlKTsgI2Vsc2UNCj4g PiA+ID4gPiA+ID4gICAqKHR5cGUpQWRkcmVzcyA9IFZhbHVlOw0KPiA+ID4gPiA+ID4gPiAjZmkN Cj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gZm9yIHRoZSB3cml0ZSBvcGVyYXRpb25zIGlu IElvTGliLmM/DQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IC8NCj4gPiA+ID4gPiA+ID4g ICAgIExlaWYNCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gT24gTW9uLCBOb3YgMjcsIDIw MTcgYXQgMDY6MDY6MzNBTSArMDAwMCwNCj4gPiBNZWVuYWtzaGkgQWdnYXJ3YWwNCj4gPiA+ID4g PiA+ID4gd3JvdGU6DQo+ID4gPiA+ID4gPiA+ID4gSGkgTGVpZiwNCj4gPiA+ID4gPiA+ID4gPg0K PiA+ID4gPiA+ID4gPiA+IFRoaXMgaXMgcmVnYXJkaW5nIEJpZy1FbmRpYW4gTGlicmFyeSBwYXRj aA0KPiA+IChbUEFUQ0ggdjINCj4gPiA+ID4gPiA+ID4gMS85XQ0KPiA+ID4gPiA+ID4gPiA+IFBs YXRmb3JtL05YUDogQWRkIHN1cHBvcnQgZm9yIEJpZyBFbmRpYW4gTW1pbw0KPiA+IEFQSXMpDQo+ ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiBXZSBoYXZlIHN0YXJ0ZWQgdGhpcyBkaXNj dXNzaW9uIGJlZm9yZSBhbmQNCj4gPiB0aGUNCj4gPiA+ID4gPiA+ID4gc3VnZ2VzdGlvbiB3YXMg dG8NCj4gPiA+ID4gPiA+ID4gPiBjcmVhdGUgYSBzZXBhcmF0ZSAuaW5mIGZpbGUga2VlcGluZyBB UElzIG5hbWUNCj4gPiBzYW1lIGUuZy4NCj4gPiA+ID4gPiA+ID4gPiBNbWlvUmVhZC9NbWlvV3Jp dGUgaW4gTWRlUGtnLg0KPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gQnV0IHdlIGNh bid0IGdvIHdpdGggdGhpcyBhcHByb2FjaCAocmVhc29uDQo+ID4gbWVudGlvbmVkDQo+ID4gPiA+ ID4gPiA+IGJ5IFVkaXQpLg0KPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gU28gcGxl YXNlIHN1Z2dlc3QgaWYgd2Ugc2hvdWxkIGtlZXAgdGhpcw0KPiA+IGxpYnJhcnkNCj4gPiA+ID4g PiA+ID4gdW5kZXIgUGxhdGZvcm0vTlhQDQo+ID4gPiA+ID4gPiA+ID4gb3IgSSBzZW5kIGEgbmV3 IHBhdGNoIG1vdmluZyB0aGlzIGxpYnJhcnkgaW4NCj4gPiBNZGVQa2cuDQo+ID4gPiA+ID4gPiA+ ID4NCj4gPiA+ID4gPiA+ID4gPiBCdXQgd2UgaGF2ZSB0byBrZWVwIGEgZGlmZmVyZW50IG5hbWUg Zm9yIEJpZw0KPiA+IEVuZGlhbg0KPiA+ID4gPiA+ID4gPiBNTUlPIEFQSXMuDQo+ID4gPiA+ID4g PiA+ID4NCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+IFRoYW5rcywNCj4gPiA+ID4g PiA+ID4gPiBNZWVuYWtzaGkNCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+DQo+ID4g PiA+ID4gPiA+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiA+ID4gPiA+ ID4gRnJvbTogVWRpdCBLdW1hcg0KPiA+ID4gPiA+ID4gPiA+ID4gU2VudDogTW9uZGF5LCBPY3Rv YmVyIDIzLCAyMDE3IDEyOjM4IFBNDQo+ID4gPiA+ID4gPiA+ID4gPiBUbzogR2FvLCBMaW1pbmcg PGxpbWluZy5nYW9AaW50ZWwuY29tPjsNCj4gPiBNZWVuYWtzaGkNCj4gPiA+ID4gPiA+ID4gQWdn YXJ3YWwNCj4gPiA+ID4gPiA+ID4gPiA+IDxtZWVuYWtzaGkuYWdnYXJ3YWxAbnhwLmNvbT47IEFy ZA0KPiA+IEJpZXNoZXV2ZWwNCj4gPiA+ID4gPiA+ID4gPiA+IDxhcmQuYmllc2hldXZlbEBsaW5h cm8ub3JnPjsgS2lubmV5LA0KPiA+IE1pY2hhZWwgRA0KPiA+ID4gPiA+ID4gPiA+ID4gPG1pY2hh ZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgZWRrMi0NCj4gPiA+ID4gPiA+ID4gZGV2ZWxAbGlzdHMu MDEub3JnDQo+ID4gPiA+ID4gPiA+ID4gPiBTdWJqZWN0OiBSRTogW2VkazJdIFtQQVRDSCAxLzFd DQo+ID4gTWRlUGtnL0lvTGliOiBBZGQNCj4gPiA+ID4gPiA+ID4gc3VwcG9ydCBmb3IgYmlnLWVu ZGlhbg0KPiA+ID4gPiA+ID4gPiA+ID4gTU1JTw0KPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4g PiA+ID4gPiA+IEhpIE1lZW5ha3NoaS9MaW1pbmcsDQo+ID4gPiA+ID4gPiA+ID4gPiBNeSAyIGNl bnRzLCBhcm91bmQgdGhpcy4NCj4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiAx KQ0KPiA+ID4gPiA+ID4gPiA+ID4gSGF2aW5nIGEgbmV3IGxpYiBmb3IgQkUgcmVhZCBtaWdodCBu b3QgYmUNCj4gPiBoZWxwZnVsDQo+ID4gPiA+ID4gPiA+IGZvciB1cywgZS5nLiBhIElQIHdoaWNo IGlzIGluDQo+ID4gPiA+ID4gPiA+ID4gPiBCRSBtb2RlIGFjY2VzcyB0aGUgVUFSVCBmb3IgcHJp bnQgb3Igc3lzdGVtDQo+ID4gPiA+ID4gPiA+IHJlZ2lzdGVycyB3aGljaCBhcmUgaW4gTEUsIHRo ZW4NCj4gPiA+ID4gPiA+ID4gPiA+IHdpdGggbmV3IExpYiwgd2Ugd2lsbCBnZXQgYWxsIHJlYWQv d3JpdGUgaW4NCj4gPiBCRSBtb2RlDQo+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ ID4gMikNCj4gPiA+ID4gPiA+ID4gPiA+IEVzcGVjaWFsbHkgZm9yIG91ciBJUHMsIHdoaWNoIGFy ZSBjaGFuZ2luZw0KPiA+IGZyb20gQkUNCj4gPiA+ID4gPiA+ID4gdG8gTEUgZGVwZW5kaW5nIG9u DQo+ID4gPiA+ID4gPiA+ID4gPiBwbGF0Zm9ybS4NCj4gPiA+ID4gPiA+ID4gPiA+IEFzIHNhaWQg YmVmb3JlLCBoYXZpbmcgQkUgcmVhZCBsaWIgd2l0aCBBUEkNCj4gPiBuYW1lIG9mDQo+ID4gPiA+ ID4gPiA+IE1taW9SZWFkMzIgZXRjLCB3aWxsIG5vdA0KPiA+ID4gPiA+ID4gPiA+ID4gaGVscCAo SSBndWVzcyBNZWVuYWtzaGkgYWxyZWFkeSBzZWVuIHNvbWUNCj4gPiBwcm9ibGVtcw0KPiA+ID4g PiA+ID4gPiBhcm91bmQgdGhpcykgQWRkaW5nIGENCj4gPiA+ID4gPiA+ID4gPiA+IG5ldyBsaWIg d2l0aCBNbWlvUmVhZDMyQkUgQVBJIG5hbWUgY291bGQNCj4gPiBoZWxwLCBidXQNCj4gPiA+ID4g PiA+ID4gSVAgZHJpdmVyIHdlIG5lZWQgdG8NCj4gPiA+ID4gPiA+ID4gPiA+IHRha2UgY2FyZSBv ZiBJUCBtb2RlIGVpdGhlciBieSBQY2Qgb3INCj4gPiAjZGVmaW5lLCB0bw0KPiA+ID4gPiA+ID4g PiBzZWxlY3QgTW1pb1JlYWQzMiBvcg0KPiA+ID4gPiA+ID4gPiA+ID4gTW1pb1JlYWQzMkJFLg0K PiA+ID4gPiA+ID4gPiA+ID4gVGhpcyBjb25kaXRpb25hbCBjb21waWxlIG5lZWRzIHRvIGJlIGRv bmUNCj4gPiBmb3IgYWxsDQo+ID4gPiA+ID4gPiA+IElQcyAod2hpY2ggd29ya3MgaW4gQkUvTEUN Cj4gPiA+ID4gPiA+ID4gPiA+IG1vZGUgb24gZGlmZmVyZW50IHBsYXRmb3JtcykuDQo+ID4gPiA+ ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gTXkgcHJlZmVycmVkIHdheSBvZiBpbXBsZW1l bnRhdGlvbiB0byB1c2UNCj4gPiBvbmUNCj4gPiA+ID4gPiA+ID4gZnVuY3Rpb24gaW4gSVAgZHJp dmVyLCBBbmQNCj4gPiA+ID4gPiA+ID4gPiA+IGJhc2VkIG9uIElQIG1vZGUsIGRvIHRoZSBzd2l0 Y2guDQo+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gTmV3IExpYiBjb3VsZCBo YXZlIGZ1bmN0aW9uIGxpa2UgYmVsb3cNCj4gPiA+ID4gPiA+ID4gPiA+IE1taW9SZWFkMzJHZW5l cmljKElOICBVSU5UTiAgICAgQWRkcmVzcywNCj4gPiBCT09MDQo+ID4gPiA+ID4gPiA+IElzSVBC RSkgew0KPiA+ID4gPiA+ID4gPiA+ID4gICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFZhbHVlOw0KPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ICAgIEFTU0VS VCAoKEFkZHJlc3MgJiAzKSA9PSAwKTsNCj4gPiA+ID4gPiA+ID4gPiA+ICAgIFZhbHVlID0gKih2 b2xhdGlsZSBVSU5UMzIqKUFkZHJlc3M7DQo+ID4gPiA+ID4gPiA+ID4gPiAgICBJZihJc0lQQkUp DQo+ID4gPiA+ID4gPiA+ID4gPiAgICAgIFZhbHVlID0gU3dhcEJ5dGVzMzIoVmFsdWUpOyAgcmV0 dXJuDQo+ID4gVmFsdWU7IH0NCj4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiBB bmQgSVAgZHJpdmVyIGNhbiB1c2UgaXQNCj4gPiA+ID4gPiA+ID4gPiA+IE1taW9SZWFkMzJHZW5l cmljKEFERFIsDQo+ID4gPiA+ID4gPiA+ID4gPiBGaXhlZFBjZEdldChUaGlzX0lQX01vZGVfRm9y X1RoaXNfcGxhdGZvcm0pDQo+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gQ29t bWVudHMgYXJlIHdlbGNvbWUuDQo+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4g UmVnYXJkcw0KPiA+ID4gPiA+ID4gPiA+ID4gVWRpdA0KPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ ID4gPiA+ID4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4gPiA+ID4g PiA+ID4gRnJvbTogZWRrMi1kZXZlbCBbbWFpbHRvOmVkazItZGV2ZWwtDQo+ID4gPiA+ID4gPiA+ IGJvdW5jZXNAbGlzdHMuMDEub3JnXSBPbiBCZWhhbGYgT2YNCj4gPiA+ID4gPiA+ID4gPiA+ID4g R2FvLCBMaW1pbmcNCj4gPiA+ID4gPiA+ID4gPiA+ID4gU2VudDogTW9uZGF5LCBPY3RvYmVyIDE2 LCAyMDE3IDg6NDggQU0NCj4gPiA+ID4gPiA+ID4gPiA+ID4gVG86IE1lZW5ha3NoaSBBZ2dhcndh bA0KPiA+ID4gPiA+ID4gPiA8bWVlbmFrc2hpLmFnZ2Fyd2FsQG54cC5jb20+OyBBcmQgQmllc2hl dXZlbA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA8YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZz47IEtp bm5leSwNCj4gPiBNaWNoYWVsIEQNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPG1pY2hhZWwuZC5raW5u ZXlAaW50ZWwuY29tPjsgZWRrMi0NCj4gPiA+ID4gPiA+ID4gZGV2ZWxAbGlzdHMuMDEub3JnDQo+ ID4gPiA+ID4gPiA+ID4gPiA+IFN1YmplY3Q6IFJlOiBbZWRrMl0gW1BBVENIIDEvMV0NCj4gPiBN ZGVQa2cvSW9MaWI6IEFkZA0KPiA+ID4gPiA+ID4gPiBzdXBwb3J0IGZvcg0KPiA+ID4gPiA+ID4g PiA+ID4gPiBiaWctZW5kaWFuIE1NSU8NCj4gPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ ID4gPiA+ID4gTWVlbmFrc2hpOg0KPiA+ID4gPiA+ID4gPiA+ID4gPiAgIEkgc3VnZ2VzdCB0byBp bnRyb2R1Y2UgbmV3IElvTGliDQo+ID4gbGlicmFyeQ0KPiA+ID4gPiA+ID4gPiBpbnN0YW5jZSwg bm90IHRvIGFkZCBuZXcgSW9MaWINCj4gPiA+ID4gPiA+ID4gPiA+IEFQSXMuDQo+ID4gPiA+ID4g PiA+ID4gPiA+IE5ldyBJb0xpYiBsaWJyYXJ5IGluc3RhbmNlIHdpbGwgcGVyZm9ybQ0KPiA+IElP DQo+ID4gPiA+ID4gPiA+IG9wZXJhdGlvbiBhcyB0aGUgYmlnDQo+ID4gPiA+ID4gPiA+ID4gPiA+ IGVuZGlhbi4gWW91IGNhbiB1cGRhdGUNCj4gPiA+ID4gPiA+ID4gTWRlUGtnL0xpYnJhcnkvQmFz ZUlvTGliSW50cmluc2ljIGluc3RhbmNlLCBhZGQNCj4gPiA+ID4gPiA+ID4gPiA+ID4gbmV3IHNv dXJjZSBmaWxlIGFuZCBuZXcgSU5GIGZvciBpdC4NCj4gPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ ID4gPiA+ID4gPiA+ID4gVUlOVDMyDQo+ID4gPiA+ID4gPiA+ID4gPiA+IEVGSUFQSQ0KPiA+ID4g PiA+ID4gPiA+ID4gPiBNbWlvUmVhZDMyICgNCj4gPiA+ID4gPiA+ID4gPiA+ID4gICBJTiAgVUlO VE4gICAgIEFkZHJlc3MNCj4gPiA+ID4gPiA+ID4gPiA+ID4gICApDQo+ID4gPiA+ID4gPiA+ID4g PiA+IHsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gICBVSU5UMzINCj4gPiBWYWx1ZTsNCj4gPiA+ID4g PiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gICBBU1NFUlQgKChBZGRyZXNzICYgMykg PT0gMCk7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ICAgVmFsdWUgPSAqKHZvbGF0aWxlIFVJTlQzMiop QWRkcmVzczsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gICByZXR1cm4gU3dhcEJ5dGVzMzIoVmFsdWUp OyB9DQo+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+IFRoYW5rcw0KPiA+ ID4gPiA+ID4gPiA+ID4gPiBMaW1pbmcNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPi0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID5Gcm9tOiBNZWVuYWtzaGkgQWdn YXJ3YWwNCj4gPiA+ID4gPiA+ID4gW21haWx0bzptZWVuYWtzaGkuYWdnYXJ3YWxAbnhwLmNvbV0N Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPlNlbnQ6IEZyaWRheSwgT2N0b2JlciAxMywgMjAxNyAyOjA3 IFBNDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID5UbzogQXJkIEJpZXNoZXV2ZWwNCj4gPiA8YXJkLmJp ZXNoZXV2ZWxAbGluYXJvLm9yZz47DQo+ID4gPiA+ID4gPiA+IEtpbm5leSwgTWljaGFlbCBEDQo+ ID4gPiA+ID4gPiA+ID4gPiA+ID48bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBlZGsyLQ0K PiA+ID4gPiA+ID4gPiBkZXZlbEBsaXN0cy4wMS5vcmc7IEdhbywgTGltaW5nDQo+ID4gPiA+ID4g PiA+ID4gPiA+ID48bGltaW5nLmdhb0BpbnRlbC5jb20+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID5T dWJqZWN0OiBSRTogW2VkazJdIFtQQVRDSCAxLzFdDQo+ID4gTWRlUGtnL0lvTGliOg0KPiA+ID4g PiA+ID4gPiBBZGQgc3VwcG9ydCBmb3INCj4gPiA+ID4gPiA+ID4gPiA+ID4gPmJpZy1lbmRpYW4g TU1JTw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID5IaSBBbGws DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ ID4gPiA+ID4gPiA+SXTigJlzIGEgcHJldHR5IG9sZCBkaXNjdXNzaW9uLCB3ZSBoYXZlDQo+ID4g bGVmdCB0aGUNCj4gPiA+ID4gPiA+ID4gdXBzdHJlYW1pbmcgb2YgTlhQDQo+ID4gPiA+ID4gPiA+ ID4gPiA+ID5wYWNrYWdlIGluIGJldHdlZW4gYmVjYXVzZSBvZiBzb21lIG90aGVyDQo+ID4gd29y aywNCj4gPiA+ID4gPiA+ID4gYnV0IGhhdmUgc3RhcnRlZCBpdA0KPiA+ID4gPiA+ID4gPiA+ID4g PiA+YWdhaW4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gbm93Lg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPklzc3VlICA6IEZl dyBOWFAgbW9kdWxlcyBzdXBwb3J0IEJpZw0KPiA+IEVuZGlhbg0KPiA+ID4gPiA+ID4gPiBNTUlP cyBhcyB0aGVzZSBhcmUgcG9ydGVkDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID5mcm9tIFBvd2VyUEMu DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPlNvbHV0aW9uIHN1 Z2dlc3RlZCA6IENyZWF0ZSBhIHNlcGFyYXRlDQo+ID4gbGlicmFyeQ0KPiA+ID4gPiA+ID4gPiBm b3IgQkUgTU1JTyBBUElzLg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4g PiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPlNvIHdoYXQgSSBoYXZlIGRvbmUgaXMsIEkgaGF2 ZSBjcmVhdGVkIGENCj4gPiA+ID4gPiA+ID4gc2VwYXJhdGUgbGlicmFyeSB0byBzdXBwb3J0DQo+ ID4gPiA+ID4gPiA+ID4gPiA+ID5CRSBNTUlPIEFQSXMgYW5kIGN1cnJlbnRseSBrZWVwaW5nIGl0 IHRvDQo+ID4gbXkNCj4gPiA+ID4gPiA+ID4gcGFja2FnZS4NCj4gPiA+ID4gPiA+ID4gPiA+ID4g PlRoaXMgbGlicmFyeSBpcyBiYXNpY2FsbHkgYSB3cmFwcGVyIG92ZXINCj4gPiA+ID4gPiA+ID4g ZXhpc3RpbmcgTU1JTyBBUElzLg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ ID4gPiA+ID5VSU5UMzINCj4gPiA+ID4gPiA+ID4gPiA+ID4gPkVGSUFQSQ0KPiA+ID4gPiA+ID4g PiA+ID4gPiA+QmVNbWlvUmVhZDMyICgNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAgSU4gIFVJTlRO ICAgICBBZGRyZXNzDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gICkNCj4gPiA+ID4gPiA+ID4gPiA+ ID4gPnsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAgVUlOVDMyICBWYWx1ZTsNCj4gPiA+ID4gPiA+ ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICBWYWx1ZSA9IE1taW9SZWFkMzIoQWRk cmVzcyk7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAgcmV0 dXJuIFN3YXBCeXRlczMyKFZhbHVlKTsgfQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPk5lZWQgeW91ciBvcGluaW9uIG9u IGJlbG93IG9wdGlub3M6DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ ID4gPjEuIFdpbGwgdGhpcyBiZSBhIGdvb2QgaWRlYSB0byBtYWtlIHRoaXMNCj4gPiBsaWJyYXJ5 DQo+ID4gPiA+ID4gPiA+IGEgcGFydCBvZiBNZGVQa2c/IE9SDQo+ID4gPiA+ID4gPiA+ID4gPiA+ ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPjIuIEFkZCBhIG5ldyBmaWxlIGUuZy4gSW9CZU1taW8u YyBsaWtlDQo+ID4gPiA+ID4gPiA+IElvSGlnaExldmVsLmMgaW4NCj4gPiA+ID4gPiA+ID4gPiA+ ID4gPk1kZVBrZy9MaWJyYXJ5L0Jhc2VJb0xpYkludHJpbnNpYy8NCj4gPiA+ID4gPiA+ID4gPiA+ ID4gPiBBbmQgbWFkZSB0aGVzZSBBUElzIGEgcGFydCBvZiBJb0xpYg0KPiA+IGl0c2VsZi4gT1IN Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+My4gS2VlcCB0aGlz IGxpYnJhcnkgaW50ZXJuYWwgdG8gTlhQDQo+ID4gcGFja2FnZS4NCj4gPiA+ID4gPiA+ID4gPiA+ ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID5QbGVhc2Ug cHJvdmlkZSB5b3VyIGlucHV0cy4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g PiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID5UaGFua3MgJiBSZWdhcmRzLA0KPiA+ID4g PiA+ID4gPiA+ID4gPiA+TWVlbmFrc2hpDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4g PiA+ID4gPiA+ID4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4gPiA+ID4g PiA+ID4gPj4gRnJvbTogQmh1cGVzaCBTaGFybWENCj4gPiA+ID4gPiA+ID4gPiA+ID4gPj4gU2Vu dDogTW9uZGF5LCBPY3RvYmVyIDE3LCAyMDE2IDM6MjggUE0NCj4gPiA+ID4gPiA+ID4gPiA+ID4g Pj4gVG86IEFyZCBCaWVzaGV1dmVsDQo+ID4gPiA+ID4gPiA+IDxhcmQuYmllc2hldXZlbEBsaW5h cm8ub3JnPjsgS2lubmV5LCBNaWNoYWVsIEQNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPj4gPG1pY2hh ZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+PiBDYzogR2FvLCBM aW1pbmcNCj4gPiA8bGltaW5nLmdhb0BpbnRlbC5jb20+OyBlZGsyLQ0KPiA+ID4gPiA+ID4gPiBk ZXZlbEBtbDAxLjAxLm9yZzsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPj4gTWVlbmFrc2hpIEFnZ2Fy d2FsDQo+ID4gPiA+ID4gPiA+IDxtZWVuYWtzaGkuYWdnYXJ3YWxAbnhwLmNvbT4NCj4gPiA+ID4g PiA+ID4gPiA+ID4gPj4gU3ViamVjdDogUkU6IFtlZGsyXSBbUEFUQ0ggMS8xXQ0KPiA+IE1kZVBr Zy9Jb0xpYjoNCj4gPiA+ID4gPiA+ID4gQWRkIHN1cHBvcnQgZm9yDQo+ID4gPiA+ID4gPiA+ID4g PiA+ID4+IGJpZy1lbmRpYW4gTU1JTw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+Pg0KPiA+ID4gPiA+ ID4gPiA+ID4gPiA+PiBIaSBBcmQsDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4+DQo+ID4gPiA+ID4g PiA+ID4gPiA+ID4+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4gPiA+ID4g PiA+ID4gPj4gPiBGcm9tOiBBcmQgQmllc2hldXZlbA0KPiA+ID4gPiA+ID4gPiBbbWFpbHRvOmFy ZC5iaWVzaGV1dmVsQGxpbmFyby5vcmddDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4+ID4gU2VudDog TW9uZGF5LCBPY3RvYmVyIDE3LCAyMDE2IDE6MTINCj4gPiBQTQ0KPiA+ID4gPiA+ID4gPiA+ID4g PiA+PiA+IFRvOiBLaW5uZXksIE1pY2hhZWwgRA0KPiA+ID4gPiA+ID4gPiA8bWljaGFlbC5kLmtp bm5leUBpbnRlbC5jb20+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4+ID4gQ2M6IEdhbywgTGltaW5n DQo+ID4gPGxpbWluZy5nYW9AaW50ZWwuY29tPjsNCj4gPiA+ID4gPiA+ID4gQmh1cGVzaCBTaGFy bWENCj4gPiA+ID4gPiA+ID4gPiA+ID4gPj4gPiA8Ymh1cGVzaC5zaGFybWFAbnhwLmNvbT47IGVk azItDQo+ID4gPiA+ID4gPiA+IGRldmVsQG1sMDEuMDEub3JnDQo+ID4gPiA+ID4gPiA+ID4gPiA+ ID4+ID4gU3ViamVjdDogUmU6IFtlZGsyXSBbUEFUQ0ggMS8xXQ0KPiA+ID4gPiA+ID4gPiBNZGVQ a2cvSW9MaWI6IEFkZCBzdXBwb3J0IGZvcg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+PiA+IGJpZy0g ZW5kaWFuIE1NSU8NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPj4gPg0KPiA+ID4gPiA+ID4gPiA+ID4g PiA+PiA+IE9uIDE3IE9jdG9iZXIgMjAxNiBhdCAwNToxMCwgS2lubmV5LA0KPiA+IE1pY2hhZWwN Cj4gPiA+ID4gPiA+ID4gRA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+PiA+IDxtaWNoYWVsLmQua2lu bmV5QGludGVsLmNvbT4gd3JvdGU6DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4+ID4gPiBCaHVwZXNo LA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+PiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPj4gPiA+ IEl0IGlzIGFsc28gcG9zc2libGUgdG8gYWRkIGFuIEFSTQ0KPiA+IHNwZWNpZmljDQo+ID4gPiA+ ID4gPiA+IFBDRCB0byBzZWxlY3QNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPj4gPiA+IGVuZGlhbm5l c3MgYW5kIHVwZGF0ZQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+PiA+ID4NCj4gPiA+ID4gPiA+ID4g TWRlUGtnL0xpYnJhcnkvQmFzZUlvTGliSW50cmluc2ljL0lvTGliQXJtLmMgdG8NCj4gPiB1c2Ug dGhhdCBQQ0QgaW4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPj4gPiA+IE1taW9SZWFkL1dyaXRlKCkg QVBJcyBpbiB0aGF0IGZpbGUNCj4gPiB0bw0KPiA+ID4gPiA+ID4gPiBzdXBwb3J0IGJvdGggZW5k aWFuIHR5cGVzLg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+PiA+ID4gWW91IGNhbiB1c2UgdGhlIFN3 YXBCeXRlc3h4KCkNCj4gPiBmdW5jdGlvbnMNCj4gPiA+ID4gPiA+ID4gZnJvbSBCYXNlTGliKGFz DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4+ID4gTGFzemxvDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4+ ID4gPiBzdWdnZXN0ZWQpIGJhc2VkIG9uIHRoZSBzZXR0aW5nIG9mDQo+ID4gdGhpcw0KPiA+ID4g PiA+ID4gPiBBUk0gc3BlY2lmaWMgUENELg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+PiA+ID4NCj4g PiA+ID4gPiA+ID4gPiA+ID4gPj4gPiA+IE1vZHVsZXMgdGhhdCBsaW5rIGFnYWluc3QgdGhpcyBs aWINCj4gPiBjYW4NCj4gPiA+ID4gPiA+ID4gc2VsZWN0IGVuZGlhbm5lc3MgYnkNCj4gPiA+ID4g PiA+ID4gPiA+ID4gPj4gPiA+IHNldHRpbmcgUENEIGluIHRoZSBzY29wZSBvZiB0aGF0DQo+ID4g bW9kdWxlLg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+PiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4g Pj4gPiA+IFRoZSBJUEYgdmVyc2lvbiBvZiBJb0xpYiB1c2VzIGFuDQo+ID4gSVBGDQo+ID4gPiA+ ID4gPiA+IHNwZWNpZmljIFBDRCB0byB0cmFuc2xhdGUNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPj4g PiA+IEkvTyBwb3J0IGFjY2Vzc2VzIHRvIE1NSU8NCj4gPiBhY2Nlc3Nlcy4gIFNvDQo+ID4gPiA+ ID4gPiA+IHRoZXJlIGlzIGFscmVhZHkgYW4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPj4gPiA+IGV4 YW1wbGUgb2YgYW4gYXJjaCBzcGVjaWZpYyBQQ0QgaW4NCj4gPiB0aGlzDQo+ID4gPiA+ID4gPiA+ IGxpYiBpbnN0YW5jZS4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPj4gPiA+DQo+ID4gPiA+ID4gPiA+ ID4gPiA+ID4+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPj4gPiBUaGlzIGlzIG5vdCBhIHBsYXRm b3JtIHdpZGUgdGhpbmcsDQo+ID4gaXQgaXMgYQ0KPiA+ID4gPiA+ID4gPiBwZXItZGV2aWNlIHBy b3BlcnR5DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4+ID4gd2hldGhlciB0aGUgTU1JTyBvY2N1cnMg aW4gYmlnDQo+ID4gZW5kaWFuIG9yDQo+ID4gPiA+ID4gPiA+IGxpdHRsZSBlbmRpYW4gbWFubmVy Lg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+PiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4+ID4gU28g SSB0aGluayBMaW1pbmcncyBzdWdnZXN0aW9uIG1ha2VzDQo+ID4gc2Vuc2U6DQo+ID4gPiA+ID4g PiA+IGNyZWF0ZSBhbiBJb0xpYg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+PiA+IGltcGxlbWVudGF0 aW9uIHRoYXQgcGVyZm9ybXMgdGhlDQo+ID4gYnl0ZQ0KPiA+ID4gPiA+ID4gPiBzd2FwcGluZywg YW5kIHNlbGVjdGl2ZWx5DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4+ID4gaW5jb3Jwb3JhdGUgaXQg aW50byBkcml2ZXJzIHRoYXQNCj4gPiByZXF1aXJlIGl0DQo+ID4gPiA+ID4gPiA+IHVzaW5nDQo+ ID4gPiA+ID4gPiA+ID4gPiA+ID4+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPj4gPiBCZU1taW9E ZXZpY2VEeGUuaW5mIHsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPj4gPiAgIDxMaWJyYXJ5Q2xhc3Nl cz4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPj4gPg0KPiA+IElvTGlifFNvbWVQa2cvTGlicmFyeS9C aWdFbmRpYW5Jb0xpYi5pbmYNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPj4gPiB9DQo+ID4gPiA+ID4g PiA+ID4gPiA+ID4+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4+IFRoYXQncyBjb3JyZWN0LiBJIHRo aW5rIGNyZWF0aW5nIGENCj4gPiBzZXBhcmF0ZQ0KPiA+ID4gPiA+ID4gPiBJb0xpYiBmb3IgYnl0 ZS1zd2FwcGluZw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+PiBtYWtlcyBzZW5zZS4NCj4gPiA+ID4g PiA+ID4gPiA+ID4gPj4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPj4gV2Ugd2lsbCByZXdvcmsgdGhl IHBhdGNoIGFjY29yZGluZ2x5Lg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+Pg0KPiA+ID4gPiA+ID4g PiA+ID4gPiA+PiBSZWdhcmRzLA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+PiBCaHVwZXNoDQo+ID4g PiA+ID4gPiA+ID4gPiA+DQo+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18NCj4gPiA+ID4gPiA+ID4gPiA+ID4gZWRrMi1kZXZlbCBtYWlsaW5nIGxpc3QN Cj4gPiA+ID4gPiA+ID4gPiA+ID4gZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gPiA+ID4gPiA+ ID4gPiA+ID4NCj4gPiA+ID4gPg0KPiA+IGh0dHBzOi8vZW1lYTAxLnNhZmVsaW5rcy5wcm90ZWN0 aW9uLm91dGxvb2suY29tLz91cmw9aHR0cA0KPiA+IHMlM0ElMkYlMkZsDQo+ID4gPiA+ID4gaXN0 DQo+ID4gPiA+ID4gcy4wMS5vcmclMkZtYWlsbWFuJTJGbGlzdGluZm8lMkZlZGsyLQ0KPiA+ID4g PiA+DQo+ID4gPg0KPiA+IGRldmVsJmRhdGE9MDIlN0MwMSU3Q21lZW5ha3NoaS5hZ2dhcndhbCU0 MG54cC5jb20lN0M2OTVlNA0KPiA+IDNjYmI1MQ0KPiA+ID4gPiA+DQo+ID4gPg0KPiA+IGE0NzFj ZDQ0NjA4ZDUzNzYyMzBiMCU3QzY4NmVhMWQzYmMyYjRjNmZhOTJjZDk5YzVjMzAxNjM1JQ0KPiA+ IDdDMCU3QzANCj4gPiA+ID4gPg0KPiA+ICU3QzYzNjQ3NTgxNzIyMDY2MzYxMiZzZGF0YT1od1Fo OGRmVWtWR3ptN3VRQjklMkZpcmV4bVlFaw0KPiA+IGRFUQ0KPiA+ID4gPiA+ICUyQnU5NzYwNkwl MkZIRWZnJTNEJnJlc2VydmVkPTANCj4gPiA+ID4gPiA+ID4gX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18NCj4gPiA+ID4gPiA+ID4gZWRrMi1kZXZlbCBtYWls aW5nIGxpc3QNCj4gPiA+ID4gPiA+ID4gZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gPiA+ID4g PiA+ID4NCj4gPiA+ID4gPg0KPiA+IGh0dHBzOi8vZW1lYTAxLnNhZmVsaW5rcy5wcm90ZWN0aW9u Lm91dGxvb2suY29tLz91cmw9aHR0cA0KPiA+IHMlM0ElMkYlMkZsDQo+ID4gPiA+ID4gaXN0DQo+ ID4gPiA+ID4gcy4wMS5vcmclMkZtYWlsbWFuJTJGbGlzdGluZm8lMkZlZGsyLQ0KPiA+ID4gPiA+ DQo+ID4gPg0KPiA+IGRldmVsJmRhdGE9MDIlN0MwMSU3Q21lZW5ha3NoaS5hZ2dhcndhbCU0MG54 cC5jb20lN0M2OTVlNA0KPiA+IDNjYmI1MQ0KPiA+ID4gPiA+DQo+ID4gPg0KPiA+IGE0NzFjZDQ0 NjA4ZDUzNzYyMzBiMCU3QzY4NmVhMWQzYmMyYjRjNmZhOTJjZDk5YzVjMzAxNjM1JQ0KPiA+IDdD MCU3QzANCj4gPiA+ID4gPg0KPiA+ICU3QzYzNjQ3NTgxNzIyMDY2MzYxMiZzZGF0YT1od1FoOGRm VWtWR3ptN3VRQjklMkZpcmV4bVlFaw0KPiA+IGRFUQ0KPiA+ID4gPiA+ICUyQnU5NzYwNkwlMkZI RWZnJTNEJnJlc2VydmVkPTANCj4gPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fDQo+ID4gPiBlZGsyLWRldmVsIG1haWxpbmcgbGlzdA0KPiA+ID4gZWRr Mi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gPiA+DQo+ID4gaHR0cHM6Ly9lbWVhMDEuc2FmZWxpbmtz LnByb3RlY3Rpb24ub3V0bG9vay5jb20vP3VybD1odHRwDQo+ID4gcyUzQSUyRiUyRmxpc3RzLjAx DQo+ID4gPiAub3JnJTJGbWFpbG1hbiUyRmxpc3RpbmZvJTJGZWRrMi0NCj4gPiA+DQo+ID4gZGV2 ZWwmZGF0YT0wMiU3QzAxJTdDdWRpdC5rdW1hciU0MG54cC5jb20lN0NkMDYwMTgzMzZhMDY0DQo+ ID4gOGZhOGU0NDANCj4gPiA+DQo+ID4gOGQ1MzhhYTVmMTklN0M2ODZlYTFkM2JjMmI0YzZmYTky Y2Q5OWM1YzMwMTYzNSU3QzAlN0MwJTdDDQo+ID4gNjM2NDc3Mg0KPiA+ID4NCj4gPiAyNjc2MTI1 MzEyNCZzZGF0YT1iQVUlMkJPaWRiemJLdzc2T09xNSUyRlVwbHdRYm84aU1uRTNhbEgNCj4gPiBZ NHB0QVgNCj4gPiA+IE1VJTNEJnJlc2VydmVkPTANCg==