From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03on0629.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe48::629]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 5B7D081AD2 for ; Mon, 9 Jan 2017 06:36:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=TPJZOFXXzMuiGcaxImeYFhr4LbdIcmCPRyw5ECp8l6Q=; b=FHxR+PsozdTkWoaTMBEdYCjkSb2BlNwauXN8N2Y8n22ES66Se+cGn2falc4KymY+nGLd/+M6nHVbRDJFL1ScT4IY3xKd+FTRmbpW/mpavscoxct3ae1eU9npK3h+MM9CkZzxSCIp9AYr0VPlnN7oqpWJzV4BYJ8zgy09PurquyI= Received: from DM5PR12MB1243.namprd12.prod.outlook.com (10.168.237.22) by SN1PR12MB0671.namprd12.prod.outlook.com (10.163.208.29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.817.10; Mon, 9 Jan 2017 14:36:54 +0000 Received: from DM5PR12MB1243.namprd12.prod.outlook.com ([10.168.237.22]) by DM5PR12MB1243.namprd12.prod.outlook.com ([10.168.237.22]) with mapi id 15.01.0829.013; Mon, 9 Jan 2017 14:36:53 +0000 From: "Duran, Leo" To: "'Gao, Liming'" , "'Justen, Jordan L'" , 'Laszlo Ersek' , "'edk2-devel@lists.01.org'" CC: "Singh, Brijesh" , "'Fan, Jeff'" , "'Kinney, Michael D'" , "'Ma, Maurice'" , "'Agyeman, Prince'" , "'Ni, Ruiyu'" , "'Steele, Kelly'" , "'Wei, David'" , "'Guo, Mang'" Thread-Topic: [PATCH v3 0/4] BaseIoFifoLib Thread-Index: AQHSZ52cOmPc+CcC30G0SQfvf+/kGaEq9c2AgABWXgCAAEV48IAAnvoAgAERYuCAAjq6gIAAuKcQgAAEgyCAAAHbIA== Date: Mon, 9 Jan 2017 14:36:53 +0000 Message-ID: References: <1483652965-14357-1-git-send-email-leo.duran@amd.com> <4A89E2EF3DFEDB4C8BFDE51014F606A14D6CA2BD@shsmsx102.ccr.corp.intel.com> <9bf84287-cdec-b5c0-26c6-16f5cd1e453f@redhat.com> <148375017874.13659.3185969071926290103@jljusten-ivb> <4A89E2EF3DFEDB4C8BFDE51014F606A14D6CAC20@shsmsx102.ccr.corp.intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=leo.duran@amd.com; x-originating-ip: [165.204.77.1] x-microsoft-exchange-diagnostics: 1; SN1PR12MB0671; 7:6j8NVOyWu9oYNqm4+oMoTpCx57G5NOcmg3nqKdJMFculs11VxgLackHZq3pAmC4e4W54b/AyfPjkC6DDN29OrMA1zUnSff7IX+xTQziHIFoHcGiBWTFxKQI/iZMTmsDYc+ZdM7IgJpJcWkY7gJhCJ5d7gv2Bu1STdXMcXOT8GEhZ9Cuu0XaUpAPC/jhEr7199zNcvAbgNWpxj8L6QSDqez8T+l4hyVUIghpoFSWfnjtjMmOYIPSMFM2SPTCVRBhP3cn+gtFEjlKS/McNH1Gah45fbNyYYFpy4SvLqnVAGEpHVcgIL40j7bCck0OdZtcjlTBb7MPXkkX7FsbCBlei85Gy+awjEOIQDsZeqpBleCb1k03Kf+tGCQqncl7SFOaJzxr0maMXm6QvRP/YN8G/RbHof2aL8+jl8RlgheanDi4HJ5zeA/Cl7WGHR/zy4u2azwFIujlyijT+K1gGKN9VqA==; 20:SFwf3/wIu2572+0s3g/rX0FGf32uW23XvzpadHhcd0BNIFHphLGHYevCnaVcIuqohv3ZQs4VGaXTnfttsvslRFQjOQlM4b68cFLGfdKKn726in7uM5Cpy5DalZZo5sQhPPD56QAifqFrhWPvKotdxdEVG/Ax2asmXZ4aTQT4yoWGVUBOgYM0ln1t3yJOhtnOc6xt+PvE7fv/oO6UpYx3oBV25Yarzf0hWYKXQEFyfNNjhFvM23NjwqXS/0UHXMiL x-forefront-antispam-report: SFV:SKI; SCL:-1SFV:NSPM; SFS:(10009020)(6029001)(6009001)(7916002)(39840400002)(39860400002)(39450400003)(39410400002)(39850400002)(377424004)(189002)(377454003)(199003)(13464003)(24454002)(74316002)(50986999)(305945005)(54356999)(7736002)(92566002)(76176999)(2900100001)(101416001)(122556002)(8676002)(38730400001)(8936002)(6116002)(81156014)(4326007)(86362001)(68736007)(2906002)(81166006)(54906002)(66066001)(102836003)(3846002)(229853002)(77096006)(33656002)(6506006)(99286003)(55016002)(25786008)(6436002)(5001770100001)(106356001)(105586002)(93886004)(189998001)(106116001)(3900700001)(3660700001)(2950100002)(9686003)(3280700002)(7416002)(97736004)(5660300001)(7696004)(491001)(19627235001); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR12MB0671; H:DM5PR12MB1243.namprd12.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; x-ms-office365-filtering-correlation-id: eb2f3010-cccb-4d6b-a2b7-08d4389cf463 x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:SN1PR12MB0671; x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(767451399110)(162533806227266)(228905959029699); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6055026)(6041248)(20161123562025)(20161123555025)(20161123564025)(20161123560025)(6072148); SRVR:SN1PR12MB0671; BCL:0; PCL:0; RULEID:; SRVR:SN1PR12MB0671; x-forefront-prvs: 0182DBBB05 received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Jan 2017 14:36:53.0354 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB0671 Subject: Re: [PATCH v3 0/4] BaseIoFifoLib X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 09 Jan 2017 14:36:56 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 UGxlYXNlIHBhcmRvbiB0aGUgY2h1cm4uLi4NCg0KSXQganVzdCBvY2N1cnJlZCB0byBtZSB0aGF0 IHBlcmhhcHMgcmVuYW1pbmcgdGhlIGxpYnJhcnkgbWF5IGp1c3RpZnkgaXRzIHN0YW5kYWxvbmUg ZXhpc3RlbmNlLi4uIEhvdyBhYm91dCBpZiBJIGNhbGwgaXQ6IFg4NklvRmlmb0xpYj8NCihzaW5j ZSB0aGUgaW50ZW5kZWQgY29uc3VtZXJzIGFyZSB4ODYgcGFja2FnZXMpDQoNCkxlby4NCg0KPiAt LS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBEdXJhbiwgTGVvDQo+IFNlbnQ6IE1v bmRheSwgSmFudWFyeSAwOSwgMjAxNyA4OjMxIEFNDQo+IFRvOiAnR2FvLCBMaW1pbmcnIDxsaW1p bmcuZ2FvQGludGVsLmNvbT47ICdKdXN0ZW4sIEpvcmRhbiBMJw0KPiA8am9yZGFuLmwuanVzdGVu QGludGVsLmNvbT47ICdMYXN6bG8gRXJzZWsnIDxsZXJzZWtAcmVkaGF0LmNvbT47ICdlZGsyLQ0K PiBkZXZlbEBsaXN0cy4wMS5vcmcnIDxlZGsyLWRldmVsQGxpc3RzLjAxLm9yZz4NCj4gQ2M6IFNp bmdoLCBCcmlqZXNoIDxicmlqZXNoLnNpbmdoQGFtZC5jb20+OyAnRmFuLCBKZWZmJw0KPiA8amVm Zi5mYW5AaW50ZWwuY29tPjsgJ0tpbm5leSwgTWljaGFlbCBEJyA8bWljaGFlbC5kLmtpbm5leUBp bnRlbC5jb20+Ow0KPiAnTWEsIE1hdXJpY2UnIDxtYXVyaWNlLm1hQGludGVsLmNvbT47ICdBZ3ll bWFuLCBQcmluY2UnDQo+IDxwcmluY2UuYWd5ZW1hbkBpbnRlbC5jb20+OyAnTmksIFJ1aXl1JyA8 cnVpeXUubmlAaW50ZWwuY29tPjsgJ1N0ZWVsZSwNCj4gS2VsbHknIDxrZWxseS5zdGVlbGVAaW50 ZWwuY29tPjsgJ1dlaSwgRGF2aWQnIDxkYXZpZC53ZWlAaW50ZWwuY29tPjsgJ0d1bywNCj4gTWFu ZycgPG1hbmcuZ3VvQGludGVsLmNvbT4NCj4gU3ViamVjdDogUkU6IFtQQVRDSCB2MyAwLzRdIEJh c2VJb0ZpZm9MaWINCj4gDQo+IEJUVywNCj4gSSBhbHNvIHlvdSBzaG91bGQgaGF2ZSBtZW50aW9u ZWQgdGhhdCB0aGUgcHJvcG9zZWQgSW9GaWZvTGliIGlzIGludGVuZGVkIHRvDQo+IHN1cHBvcnQg anVzdCB4ODYgKElBMzIgKyBYNjQpLi4uIFdoZXJlYXMgSW9MSWIgaXMgdW5pdmVyc2FsLg0KPiBM ZW8uDQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogRHVyYW4s IExlbw0KPiA+IFNlbnQ6IE1vbmRheSwgSmFudWFyeSAwOSwgMjAxNyA4OjIzIEFNDQo+ID4gVG86 ICdHYW8sIExpbWluZycgPGxpbWluZy5nYW9AaW50ZWwuY29tPjsgSnVzdGVuLCBKb3JkYW4gTA0K PiA+IDxqb3JkYW4ubC5qdXN0ZW5AaW50ZWwuY29tPjsgJ0xhc3psbyBFcnNlaycgPGxlcnNla0By ZWRoYXQuY29tPjsgZWRrMi0NCj4gPiBkZXZlbEBsaXN0cy4wMS5vcmcNCj4gPiBDYzogU2luZ2gs IEJyaWplc2ggPGJyaWplc2guc2luZ2hAYW1kLmNvbT47IEZhbiwgSmVmZg0KPiA+IDxqZWZmLmZh bkBpbnRlbC5jb20+OyBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5j b20+Ow0KPiA+IE1hLCBNYXVyaWNlIDxtYXVyaWNlLm1hQGludGVsLmNvbT47IEFneWVtYW4sIFBy aW5jZQ0KPiA+IDxwcmluY2UuYWd5ZW1hbkBpbnRlbC5jb20+OyBOaSwgUnVpeXUgPHJ1aXl1Lm5p QGludGVsLmNvbT47IFN0ZWVsZSwNCj4gPiBLZWxseSA8a2VsbHkuc3RlZWxlQGludGVsLmNvbT47 IFdlaSwgRGF2aWQgPGRhdmlkLndlaUBpbnRlbC5jb20+OyBHdW8sDQo+ID4gTWFuZyA8bWFuZy5n dW9AaW50ZWwuY29tPg0KPiA+IFN1YmplY3Q6IFJFOiBbUEFUQ0ggdjMgMC80XSBCYXNlSW9GaWZv TGliDQo+ID4NCj4gPg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZy b206IEdhbywgTGltaW5nIFttYWlsdG86bGltaW5nLmdhb0BpbnRlbC5jb21dDQo+ID4gPiBTZW50 OiBTdW5kYXksIEphbnVhcnkgMDgsIDIwMTcgOToxMSBQTQ0KPiA+ID4gVG86IER1cmFuLCBMZW8g PGxlby5kdXJhbkBhbWQuY29tPjsgSnVzdGVuLCBKb3JkYW4gTA0KPiA+ID4gPGpvcmRhbi5sLmp1 c3RlbkBpbnRlbC5jb20+OyAnTGFzemxvIEVyc2VrJyA8bGVyc2VrQHJlZGhhdC5jb20+Ow0KPiA+ ID4gZWRrMi0gZGV2ZWxAbGlzdHMuMDEub3JnDQo+ID4gPiBDYzogU2luZ2gsIEJyaWplc2ggPGJy aWplc2guc2luZ2hAYW1kLmNvbT47IEZhbiwgSmVmZg0KPiA+ID4gPGplZmYuZmFuQGludGVsLmNv bT47IEtpbm5leSwgTWljaGFlbCBEDQo+ID4gPiA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+ OyBNYSwgTWF1cmljZSA8bWF1cmljZS5tYUBpbnRlbC5jb20+Ow0KPiA+ID4gQWd5ZW1hbiwgUHJp bmNlIDxwcmluY2UuYWd5ZW1hbkBpbnRlbC5jb20+OyBOaSwgUnVpeXUNCj4gPiA+IDxydWl5dS5u aUBpbnRlbC5jb20+OyBTdGVlbGUsIEtlbGx5IDxrZWxseS5zdGVlbGVAaW50ZWwuY29tPjsgV2Vp LA0KPiA+ID4gRGF2aWQgPGRhdmlkLndlaUBpbnRlbC5jb20+OyBHdW8sIE1hbmcgPG1hbmcuZ3Vv QGludGVsLmNvbT4NCj4gPiA+IFN1YmplY3Q6IFJFOiBbUEFUQ0ggdjMgMC80XSBCYXNlSW9GaWZv TGliDQo+ID4gPg0KPiA+ID4gTGVvOg0KPiA+ID4gICBJb0xpYiBMaWJyYXJ5IGNsYXNzIGlzIGRl c2lnbmVkIGZyb20gdGhlIGZ1bmN0aW9uYWxpdHksIG5vdCBjb2RlDQo+ID4gPiBpbXBsZW1lbnRh dGlvbi4gU28sIG1hbnkgSU8gb3BlcmF0aW9ucyBhcmUgaW5jbHVkZWQgaW4gdGhpcyBsaWJyYXJ5 DQo+ID4gPiBjbGFzcy4gSWYgZGV2ZWxvcGVycyB3YW50IHRvIHVzZSBJTyBBUEksIHRoZXkgb25s eSBuZWVkIHRvIGNoZWNrDQo+ID4gPiBJb0xpYiBsaWJyYXJ5DQo+ID4gY2xhc3MuDQo+ID4gPiBB ZnRlciBhZGQgbmV3IEFQSXMsIHdlIG5lZWQgdG8gdXBkYXRlIGFsbCBJb0xpYiBsaWJyYXJ5IGlu c3RhbmNlcyB0bw0KPiA+ID4gaW1wbGVtZW50IHRoZW0uIEFuZCwgaWYgYW55IGxpYnJhcnkgQVBJ IGltcGxlbWVudGF0aW9uIGhhcyB0aGUNCj4gPiA+IGRpZmZlcmVudCB2ZXJzaW9uLCB0aGUgZnVs bCBsaWJyYXJ5IGluc3RhbmNlIHdpbGwgaGF2ZSB0byBiZSBjb3BpZWQNCj4gPiA+IHRvIGFub3Ro ZXIgaW5zdGFuY2UuIEkga25vdyB5b3VyIGNvbmNlcm4gaXMgdG8gZHVwbGljYXRlIHRoZSBsaWJy YXJ5DQo+ID4gPiBpbXBsZW1lbnRhdGlvbi4gQnV0LCBJIHRoaW5rIHRoaXMgaXMgdGhlIHNlcGFy YXRlIHRvcGljIHRvIG9wdGltaXplDQo+ID4gPiB0aGUgbGlicmFyeSBpbXBsZW1lbnRhdGlvbiBh bmQgcmV1c2UgdGhlIHNhbWUgc291cmNlIGZpbGUuIE90aGVyDQo+ID4gPiBsaWJyYXJ5IGluc3Rh bmNlcyBtYXkgaGF2ZSB0aGUgc2FtZSBpc3N1ZS4gU28sIEkgc3VnZ2VzdCB5b3Ugc3VibWl0DQo+ ID4gPiBidWd6aWxsYSBmb3IgdGhpcyBvcHRpbWl6YXRpb24gcmVxdWVzdC4gV2Ugd2lsbCBmaWd1 cmUgb3V0IHRoZQ0KPiA+ID4gc29sdXRpb24gYW5kDQo+ID4gcmV2aWV3IGl0IGluIHRoaXMgbWFp bCBsaXN0Lg0KPiA+ID4NCj4gPiA+IFRoYW5rcw0KPiA+ID4gTGltaW5nDQo+ID4gW0R1cmFuLCBM ZW9dDQo+ID4gSGkgTGltaW5nLA0KPiA+DQo+ID4gSSdtIG5vdCBzdXJlIEkgZm9sbG93IHdoYXQg eW91IG1lYW4gYnkgYW4gJ29wdGltaXphdGlvbiByZXF1ZXN0Jy4NCj4gPiBBdCBwcmVzZW50IElv TEliIGRvZXMgKm5vdCogaW5jbHVkZSB0aGUgRmlmbyByb3V0aW5lcyB0aGF0IEkndmUNCj4gPiBy ZWZlcnJlZCB0bywgc28gSSdtIHNpbXBseSBwcm9wb3NpbmcgdG8gd3JhcCB0aGUgRmlmbyByb3V0 aW5lcyBpbnRvIGluIGENCj4gbGlicmFyeS4NCj4gPiBNb3Jlb3ZlciwgYXMgeW91IGp1c3Qgc2Fp ZCwgSeKAmW0gYWxzbyBwcm9wb3Npbmcgbm90IHVzaW5nIElvTGliIHRvDQo+ID4gYXZvaWQgaGF2 aW5nIHRvIGR1cGxpY2F0ZSBhbGwgb2YgdGhlIGZ1bmN0aW9uYWxpdHkgaW4gSW9MaWIuDQo+ID4N Cj4gPiBDYW4geW91IHBsZWFzZSBnaXZlIG1lIGEgYml0IG1vcmUgZGV0YWlsIGFzIHRvIHdoYXQg dGhlICdvcHRpbWl6YXRpb24NCj4gPiByZXF1ZXN0JyB3b3VsZCBiZT8NCj4gPiAoaS5lLiwgc2hv dWxkIHRoYXQgcmVxdWVzdCByZWFkIGV4YWN0bHkgYXMgSSd2ZSBwcm9wb3NlZCBzbyBmYXIsDQo+ ID4gcHJvcG9zaW5nIHRoZSBjcmVhdGlvbiBvZiBhbiBJb0ZpZm9MaWI/KSBJJ2xsIHN1Ym1pdCBC dWd6aWxsYSBvbmNlIEkNCj4gPiBiZXR0ZXIgdW5kZXJzdGFuZCB3aGF0IG5lZWRzIHRvIGJlIGlu IGl0Lg0KPiA+DQo+ID4gVGhhbmtzLA0KPiA+IExlbw0KPiA+DQo+ID4NCj4gPg0KPiA+ID4gPi0t LS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+RnJvbTogRHVyYW4sIExlbyBbbWFpbHRv Omxlby5kdXJhbkBhbWQuY29tXQ0KPiA+ID4gPlNlbnQ6IFN1bmRheSwgSmFudWFyeSAwOCwgMjAx NyAxOjE3IEFNDQo+ID4gPiA+VG86IEp1c3RlbiwgSm9yZGFuIEwgPGpvcmRhbi5sLmp1c3RlbkBp bnRlbC5jb20+OyAnTGFzemxvIEVyc2VrJw0KPiA+ID4gPjxsZXJzZWtAcmVkaGF0LmNvbT47IEdh bywgTGltaW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbT47IGVkazItDQo+ID4gPiA+ZGV2ZWxAbGlz dHMuMDEub3JnDQo+ID4gPiA+Q2M6IFNpbmdoLCBCcmlqZXNoIDxicmlqZXNoLnNpbmdoQGFtZC5j b20+OyBGYW4sIEplZmYNCj4gPiA+ID48amVmZi5mYW5AaW50ZWwuY29tPjsgS2lubmV5LCBNaWNo YWVsIEQNCj4gPiA+ID48bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBNYSwgTWF1cmljZSA8 bWF1cmljZS5tYUBpbnRlbC5jb20+Ow0KPiA+ID4gPkFneWVtYW4sIFByaW5jZSA8cHJpbmNlLmFn eWVtYW5AaW50ZWwuY29tPjsgTmksIFJ1aXl1DQo+ID4gPiA+PHJ1aXl1Lm5pQGludGVsLmNvbT47 IFN0ZWVsZSwgS2VsbHkgPGtlbGx5LnN0ZWVsZUBpbnRlbC5jb20+OyBXZWksDQo+ID4gPiA+RGF2 aWQgPGRhdmlkLndlaUBpbnRlbC5jb20+OyBHdW8sIE1hbmcgPG1hbmcuZ3VvQGludGVsLmNvbT4N Cj4gPiA+ID5TdWJqZWN0OiBSRTogW1BBVENIIHYzIDAvNF0gQmFzZUlvRmlmb0xpYg0KPiA+ID4g Pg0KPiA+ID4gPkpvcmRhbiwgTGltaW5nLCBldCBhbCwNCj4gPiA+ID4NCj4gPiA+ID5JdCB0dXJu cyBvdXQgdGhhdCB0aGUgcnVudGltZSBlbmFibGVtZW50IG9mIFNFViBmZWF0dXJlIHRoYXQgSQ0K PiA+ID4gPnJlZmVycmVkIHRvIGNhbiBiZSBkZXRlY3RlZCBpbiBoYXJkd2FyZTsgc28gaW5zdGVh ZCBvZiByZXF1aXJpbmcNCj4gPiA+ID4nZHJpdmVyJyBjb2RlIHRvIHNldCBhIGR5bmFtaWMgUENE LCB0aGUgb3ZlcnJpZGUgRmlmbyByb3V0aW5lcw0KPiA+ID4gPmNvdWxkIGRvIGEgcnVudGltZSBj aGVjayBsaWtlIHRoaXM6DQo+ID4gPiA+DQo+ID4gPiA+Ly8gSW4gb3ZlcnJpZGUgdmVyc2lvbiBv ZiB0aGUgRmlmbyBsaWJyYXJ5DQo+ID4gPiA+Zmlmb19mb28oKQ0KPiA+ID4gPnsNCj4gPiA+ID4J SWYgKFNFVl9FbmFibGVkKCkpIHsNCj4gPiA+ID4JCS8vIGRvbid0IHVzZSBSRVAgaW5zL291dHMN Cj4gPiA+ID4JfSBlbHNlIHsNCj4gPiA+ID4JCS8vIHVzZSBSRVAgaW5zL291dHMNCj4gPiA+ID4J fQ0KPiA+ID4gPn0NCj4gPiA+ID5JbiBlc3NlbmNlIHdlIGFscmVhZHkgaGF2ZSBhIGhhcmR3YXJl LWJhc2VkIGR5bmFtaWMgUENELCBzbyB0aGUNCj4gPiA+ID5pZGVhIGlzIHRvIGxldmVyYWdlIGl0 Lg0KPiA+ID4gPg0KPiA+ID4gPkFuZCBzaW5jZSB3ZSdyZSBpbnRlcmVzdGVkIGluIG92ZXJyaWRp bmcganVzdCB0aGUgRmlmbyByb3V0aW5lcywgaXQNCj4gPiA+ID53b3VsZCBtYWtlIGJldHRlciBz ZW5zZSB0byBrZWVwIHRoZW0gaW4gYSBzZXBhcmF0ZSBsaWJyYXJ5IChhcw0KPiA+ID4gPnByb3Bv c2VkIGluDQo+ID4gPiB0aGUgcGF0Y2ggc2V0KS4NCj4gPiA+ID5MZW8uDQo+ID4gPiA+DQo+ID4g PiA+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPj4gRnJvbTogSm9yZGFuIEp1 c3RlbiBbbWFpbHRvOmpvcmRhbi5sLmp1c3RlbkBpbnRlbC5jb21dDQo+ID4gPiA+PiBTZW50OiBG cmlkYXksIEphbnVhcnkgMDYsIDIwMTcgNjo1MCBQTQ0KPiA+ID4gPj4gVG86IER1cmFuLCBMZW8g PGxlby5kdXJhbkBhbWQuY29tPjsgJ0xhc3psbyBFcnNlaycNCj4gPiA+ID4+IDxsZXJzZWtAcmVk aGF0LmNvbT47IEdhbywgTGltaW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbT47DQo+ID4gPiA+PiBl ZGsyLWRldmVsQGxpc3RzLjAxLm9yZw0KPiA+ID4gPj4gQ2M6IFNpbmdoLCBCcmlqZXNoIDxicmlq ZXNoLnNpbmdoQGFtZC5jb20+OyBGYW4sIEplZmYNCj4gPiA+ID4+IDxqZWZmLmZhbkBpbnRlbC5j b20+OyBLaW5uZXksIE1pY2hhZWwgRA0KPiA+ID4gPj4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwu Y29tPjsgTWEsIE1hdXJpY2UNCj4gPG1hdXJpY2UubWFAaW50ZWwuY29tPjsNCj4gPiA+ID4+IEFn eWVtYW4sIFByaW5jZSA8cHJpbmNlLmFneWVtYW5AaW50ZWwuY29tPjsgTmksIFJ1aXl1DQo+ID4g PiA+PiA8cnVpeXUubmlAaW50ZWwuY29tPjsgU3RlZWxlLCBLZWxseSA8a2VsbHkuc3RlZWxlQGlu dGVsLmNvbT47DQo+ID4gPiA+PiBXZWksIERhdmlkIDxkYXZpZC53ZWlAaW50ZWwuY29tPjsgR3Vv LCBNYW5nDQo+IDxtYW5nLmd1b0BpbnRlbC5jb20+DQo+ID4gPiA+PiBTdWJqZWN0OiBSRTogW1BB VENIIHYzIDAvNF0gQmFzZUlvRmlmb0xpYg0KPiA+ID4gPj4NCj4gPiA+ID4+IE9uIDIwMTctMDEt MDYgMDc6MjM6NDcsIER1cmFuLCBMZW8gd3JvdGU6DQo+ID4gPiA+PiA+DQo+ID4gPiA+PiA+DQo+ ID4gPiA+PiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4+ID4gPiBGcm9t OiBMYXN6bG8gRXJzZWsgW21haWx0bzpsZXJzZWtAcmVkaGF0LmNvbV0NCj4gPiA+ID4+ID4gPiBT ZW50OiBGcmlkYXksIEphbnVhcnkgMDYsIDIwMTcgNToxMiBBTQ0KPiA+ID4gPj4gPiA+IFRvOiBH YW8sIExpbWluZyA8bGltaW5nLmdhb0BpbnRlbC5jb20+OyBEdXJhbiwgTGVvDQo+ID4gPiA+PiA+ ID4gPGxlby5kdXJhbkBhbWQuY29tPjsgZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gPiA+ID4+ ID4gPiA8ZWRrMi1kZXZlbEBtbDAxLjAxLm9yZz4NCj4gPiA+ID4+ID4gPiBDYzogU2luZ2gsIEJy aWplc2ggPGJyaWplc2guc2luZ2hAYW1kLmNvbT47IEp1c3RlbiwgSm9yZGFuIEwNCj4gPiA+ID4+ ID4gPiA8am9yZGFuLmwuanVzdGVuQGludGVsLmNvbT47IEZhbiwgSmVmZiA8amVmZi5mYW5AaW50 ZWwuY29tPjsNCj4gPiA+ID4+ID4gPiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5l eUBpbnRlbC5jb20+OyBNYSwgTWF1cmljZQ0KPiA+ID4gPj4gPiA+IDxtYXVyaWNlLm1hQGludGVs LmNvbT47IEFneWVtYW4sIFByaW5jZQ0KPiA+ID4gPj4gPHByaW5jZS5hZ3llbWFuQGludGVsLmNv bT47DQo+ID4gPiA+PiA+ID4gTmksIFJ1aXl1IDxydWl5dS5uaUBpbnRlbC5jb20+OyBTdGVlbGUs IEtlbGx5DQo+ID4gPiA+PiA+ID4gPGtlbGx5LnN0ZWVsZUBpbnRlbC5jb20+OyBXZWksIERhdmlk IDxkYXZpZC53ZWlAaW50ZWwuY29tPjsNCj4gPiA+ID4+ID4gPiBHdW8sIE1hbmcgPG1hbmcuZ3Vv QGludGVsLmNvbT4NCj4gPiA+ID4+ID4gPiBTdWJqZWN0OiBSZTogW1BBVENIIHYzIDAvNF0gQmFz ZUlvRmlmb0xpYg0KPiA+ID4gPj4gPiA+DQo+ID4gPiA+PiA+ID4gT24gMDEvMDYvMTcgMDc6MDIs IEdhbywgTGltaW5nIHdyb3RlOg0KPiA+ID4gPj4gPiA+ID4gTGVvOg0KPiA+ID4gPj4gPiA+ID4g Rmlmb0lvIGlzIG9uZSB3aWR0aCB0eXBlIG9mIEVGSV9DUFVfSU9fUFJPVE9DT0xfV0lEVEguIFNv LA0KPiA+ID4gPj4gPiA+ID4gaG93IGFib3V0IGFkZCBuZXcgQVBJcyBpbnRvIElvTGliIHRvZ2V0 aGVyIHdpdGggb3RoZXIgSW8NCj4gPiA+ID4+ID4gPiA+IEFQSXM/IElmIHNvLCBubyBuZXcgbGli cmFyeSBjbGFzcyBpcyByZXF1aXJlZC4gUGxhdGZvcm0gRFNDDQo+ID4gPiA+PiA+ID4gPiBmaWxl cyBhcmUgbm90IHJlcXVpcmVkIHRvIGJlIGNoYW5nZWQuDQo+ID4gPiA+PiA+ID4NCj4gPiA+ID4+ ID4gPiBCdXQgdGhlbiBhbGwgb2YgdGhlIElvTGliIGluc3RhbmNlcyB3aWxsIGhhdmUgdG8gYmUg ZXh0ZW5kZWQgdG9vOg0KPiA+ID4gPj4gPiA+DQo+ID4gPiA+PiA+ID4gSW50ZWxGcmFtZXdvcmtQ a2cvTGlicmFyeS9EeGVJb0xpYkNwdUlvL0R4ZUlvTGliQ3B1SW8uaW5mDQo+ID4gPiA+PiA+ID4g TWRlUGtnL0xpYnJhcnkvQmFzZUlvTGliSW50cmluc2ljL0Jhc2VJb0xpYkludHJpbnNpYy5pbmYN Cj4gPiA+ID4+ID4gPiBNZGVQa2cvTGlicmFyeS9EeGVJb0xpYkNwdUlvMi9EeGVJb0xpYkNwdUlv Mi5pbmYNCj4gPiA+ID4+ID4gPiBNZGVQa2cvTGlicmFyeS9EeGVJb0xpYkVzYWwvRHhlSW9MaWJF c2FsLmluZg0KPiA+ID4gPj4gPiA+IE1kZVBrZy9MaWJyYXJ5L1BlaUlvTGliQ3B1SW8vUGVpSW9M aWJDcHVJby5pbmYNCj4gPiA+ID4+ID4gPiBNZGVQa2cvTGlicmFyeS9TbW1Jb0xpYlNtbUNwdUlv Mi9TbW1Jb0xpYlNtbUNwdUlvMi5pbmYNCj4gPiA+ID4+ID4gPg0KPiA+ID4gPj4gPiA+IFRoYW5r cywNCj4gPiA+ID4+ID4gPiBMYXN6bG8NCj4gPiA+ID4+ID4gPg0KPiA+ID4gPj4gPiBbRHVyYW4s IExlb10gQ29ycmVjdC4NCj4gPiA+ID4+ID4gQXMgSSBtZW50aW9uZWQsIG9uZSBvZiB0aGUgcmVh c29ucyBmb3IgdGhlIG5ldyBJb0ZpZm8gbGlicmFyeQ0KPiA+ID4gPj4gPiBpcyB0byBiZSBhYmxl IHRvIG92ZXJyaWRlIGl0IHdpdGhvdXQgaGF2aW5nIHRvIGR1cGxpY2F0ZSB0aGUNCj4gPiA+ID4+ ID4gY29tcGxldGUNCj4gPiBJb0xpYi4NCj4gPiA+ID4+ID4NCj4gPiA+ID4+DQo+ID4gPiA+PiBJ IGFncmVlIHdpdGggTGltaW5nIGFib3V0IGFkZGluZyB0aGUgZnVuY3Rpb25zIHRvIElvTGliIGlu c3RlYWQuDQo+ID4gPiA+Pg0KPiA+ID4gPj4gUGVyaGFwcyBhIFBDRCBjb3VsZCBiZSBhZGRlZCB0 byBjb250cm9sIGlmIHJlcCBpL28gaW5zdHJ1Y3Rpb25zDQo+ID4gPiA+PiBhcmUgdXNlZC4NCj4g PiA+ID4+DQo+ID4gPiA+PiAtSm9yZGFuDQo=