From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.24; helo=mga09.intel.com; envelope-from=liming.gao@intel.com; receiver=edk2-devel@lists.01.org Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id AC746208D6134 for ; Mon, 11 Feb 2019 06:15:43 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 11 Feb 2019 06:15:42 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.58,358,1544515200"; d="scan'208";a="132687867" Received: from fmsmsx107.amr.corp.intel.com ([10.18.124.205]) by FMSMGA003.fm.intel.com with ESMTP; 11 Feb 2019 06:15:40 -0800 Received: from fmsmsx116.amr.corp.intel.com (10.18.116.20) by fmsmsx107.amr.corp.intel.com (10.18.124.205) with Microsoft SMTP Server (TLS) id 14.3.408.0; Mon, 11 Feb 2019 06:15:40 -0800 Received: from shsmsx154.ccr.corp.intel.com (10.239.6.54) by fmsmsx116.amr.corp.intel.com (10.18.116.20) with Microsoft SMTP Server (TLS) id 14.3.408.0; Mon, 11 Feb 2019 06:15:39 -0800 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.102]) by SHSMSX154.ccr.corp.intel.com ([169.254.7.232]) with mapi id 14.03.0415.000; Mon, 11 Feb 2019 22:15:37 +0800 From: "Gao, Liming" To: Ming Huang , "Ni, Ray" , "linaro-uefi@lists.linaro.org" , "edk2-devel@lists.01.org" , "Kinney, Michael D" CC: "huangming23@huawei.com" , "Dong, Eric" , "zhangjinsong2@huawei.com" , "wanghuiqiang@huawei.com" , "waip23@126.com" , "Zeng, Star" , "huangdaode@hisilicon.com" , "Gao, Liming" Thread-Topic: [edk2] [MdePkg/BaseLib v1 1/1] MdePkg BaseLib: Add new API CalculateCrc16() Thread-Index: AQHUufOrZ3SypCERlkOf7wCaKv0oGKXJ9zkAgAAJiQCAAN1QcIAA+DiAgA7by0A= Date: Mon, 11 Feb 2019 14:15:36 +0000 Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14E3DB024@SHSMSX104.ccr.corp.intel.com> References: <20190201060152.55724-1-ming.huang@linaro.org> <20190201060152.55724-2-ming.huang@linaro.org> <734D49CCEBEEF84792F5B80ED585239D5C0044AE@SHSMSX104.ccr.corp.intel.com> <71326949-5594-f4e7-5795-b16ef2c0f991@linaro.org> <4A89E2EF3DFEDB4C8BFDE51014F606A14E3D4CD0@SHSMSX104.ccr.corp.intel.com> <1f63821b-5671-9312-2d02-2c6d22f60ff7@linaro.org> In-Reply-To: <1f63821b-5671-9312-2d02-2c6d22f60ff7@linaro.org> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNGI0NDgwYjMtOGQxMS00OTRkLWI2YjUtODM4ZmJmMWE5ZDY1IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoieWplZFwvMlhXeFwvU1dFWDg0M084YTdOamdwVFVzXC9HK3ptNnRwc3RkblFTTXNvdnVBbWRQeVRyNzN2TERPMzk4MSJ9 dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [MdePkg/BaseLib v1 1/1] MdePkg BaseLib: Add new API CalculateCrc16() X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 11 Feb 2019 14:15:43 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 TWluZzoNCiAgU28sIHRoZXJlIGlzIG5vIGNvbW1vbiBDUkMxNiBhbGdvcml0aG0gaW4gZWRrMi4g SSBzdWdnZXN0IHRvIGNvbGxlY3QgYWxsIENSQzE2IHJlcXVlc3QgaW4gdGhlIGZpcm13YXJlIGNv ZGUsIHRoZW4gZGlzY3Vzc2lvbiBob3cgdG8gYWRkIENhbGN1bGF0ZUNyYzE2KCkgQVBJIGluIEJh c2VMaWIuIFRoZXJlIG1heSBiZSBtb3JlIHRoYW4gb25lIENhbGN1bGF0ZUNyYzE2KCkgQVBJIHdp dGggdGhlIGRpZmZlcmVudCBwb3N0Zml4IGZvciB0aGUgZGlmZmVyZW50IGFsZ29yaXRobS4gQmVz aWRlcyBlZXByb20gYW5kIERlYnVnQWdlbnQsIGFyZSB0aGVyZSBvdGhlciB1c2FnZXM/DQoNClRo YW5rcw0KTGltaW5nDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IE1pbmcg SHVhbmcgW21haWx0bzptaW5nLmh1YW5nQGxpbmFyby5vcmddDQo+IFNlbnQ6IFNhdHVyZGF5LCBG ZWJydWFyeSAyLCAyMDE5IDc6MTIgUE0NCj4gVG86IEdhbywgTGltaW5nIDxsaW1pbmcuZ2FvQGlu dGVsLmNvbT47IE5pLCBSYXkgPHJheS5uaUBpbnRlbC5jb20+OyBsaW5hcm8tdWVmaUBsaXN0cy5s aW5hcm8ub3JnOyBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzsgS2lubmV5LA0KPiBNaWNoYWVsIEQg PG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiBDYzogaHVhbmdtaW5nMjNAaHVhd2VpLmNv bTsgRG9uZywgRXJpYyA8ZXJpYy5kb25nQGludGVsLmNvbT47IHpoYW5namluc29uZzJAaHVhd2Vp LmNvbTsgd2FuZ2h1aXFpYW5nQGh1YXdlaS5jb207DQo+IHdhaXAyM0AxMjYuY29tOyBaZW5nLCBT dGFyIDxzdGFyLnplbmdAaW50ZWwuY29tPjsgaHVhbmdkYW9kZUBoaXNpbGljb24uY29tDQo+IFN1 YmplY3Q6IFJlOiBbZWRrMl0gW01kZVBrZy9CYXNlTGliIHYxIDEvMV0gTWRlUGtnIEJhc2VMaWI6 IEFkZCBuZXcgQVBJIENhbGN1bGF0ZUNyYzE2KCkNCj4gDQo+IA0KPiANCj4gT24gMi8xLzIwMTkg ODoyNSBQTSwgR2FvLCBMaW1pbmcgd3JvdGU6DQo+ID4gTWluZzoNCj4gPiAgIFdoYXQncyB1c2Fn ZSBtb2RlbCBvZiBuZXcgQ3JjMTYoKT8gQ2FuIHRoZXkgdXNlIHRoZSBzYW1lIGFsZ29yaXRobSBp biBEZWJ1Z0FnZW50Pw0KPiANCj4gSXQgaXMgdXNlZCBpbiBjaGVjayBNQUMgcmVhZCBmcm9tIGVl cHJvbS4gSSB0aGluayB0aGV5IGNhbm4ndCB1c2UgdGhlIGFsZ29yaXRobSBpbg0KPiBEZWJ1Z0Fn ZW50Lg0KPiANCj4gVGhhbmtzLg0KPiANCj4gPg0KPiA+IFRoYW5rcw0KPiA+IExpbWluZw0KPiA+ PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+PiBGcm9tOiBlZGsyLWRldmVsIFttYWls dG86ZWRrMi1kZXZlbC1ib3VuY2VzQGxpc3RzLjAxLm9yZ10gT24gQmVoYWxmIE9mIE1pbmcgSHVh bmcNCj4gPj4gU2VudDogRnJpZGF5LCBGZWJydWFyeSAxLCAyMDE5IDM6MTIgUE0NCj4gPj4gVG86 IE5pLCBSYXkgPHJheS5uaUBpbnRlbC5jb20+OyBsaW5hcm8tdWVmaUBsaXN0cy5saW5hcm8ub3Jn OyBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzsgS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5r aW5uZXlAaW50ZWwuY29tPjsNCj4gPj4gR2FvLCBMaW1pbmcgPGxpbWluZy5nYW9AaW50ZWwuY29t Pg0KPiA+PiBDYzogaHVhbmdtaW5nMjNAaHVhd2VpLmNvbTsgRG9uZywgRXJpYyA8ZXJpYy5kb25n QGludGVsLmNvbT47IHpoYW5namluc29uZzJAaHVhd2VpLmNvbTsgd2FuZ2h1aXFpYW5nQGh1YXdl aS5jb207DQo+ID4+IHdhaXAyM0AxMjYuY29tOyBaZW5nLCBTdGFyIDxzdGFyLnplbmdAaW50ZWwu Y29tPjsgaHVhbmdkYW9kZUBoaXNpbGljb24uY29tDQo+ID4+IFN1YmplY3Q6IFJlOiBbZWRrMl0g W01kZVBrZy9CYXNlTGliIHYxIDEvMV0gTWRlUGtnIEJhc2VMaWI6IEFkZCBuZXcgQVBJIENhbGN1 bGF0ZUNyYzE2KCkNCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4gT24gMi8xLzIwMTkgMjozNyBQTSwg TmksIFJheSB3cm90ZToNCj4gPj4+IFRoZXJlIGlzIGFuIENSQzE2IGNhbGN1bGF0aW9uIGltcGxl bWVudGF0aW9uIGluDQo+ID4+PiBTb3VyY2VMZXZlbERlYnVnUGtnL0xpYnJhcnkvRGVidWdBZ2Vu dC9EZWJ1Z0FnZW50Q29tbW9uL0RlYnVnQWdlbnQuYw0KPiA+Pj4NCj4gPj4+IERvZXMgeW91ciBp bXBsZW1lbnRhdGlvbiBnZW5lcmF0ZSB0aGUgc2FtZSBDUkMxNiBhcyBhYm92ZSBvbmU/DQo+ID4+ DQo+ID4+IEl0IGlzIG5vdCB0aGUgc2FtZSB3aXRoIGFib3ZlIG9uZS4NCj4gPj4NCj4gPj4+DQo+ ID4+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4+PiBGcm9tOiBlZGsyLWRldmVs IDxlZGsyLWRldmVsLWJvdW5jZXNAbGlzdHMuMDEub3JnPiBPbiBCZWhhbGYgT2YgTWluZw0KPiA+ Pj4+IEh1YW5nDQo+ID4+Pj4gU2VudDogRnJpZGF5LCBGZWJydWFyeSAxLCAyMDE5IDI6MDIgUE0N Cj4gPj4+PiBUbzogbGluYXJvLXVlZmlAbGlzdHMubGluYXJvLm9yZzsgZWRrMi1kZXZlbEBsaXN0 cy4wMS5vcmc7IEtpbm5leSwgTWljaGFlbCBEDQo+ID4+Pj4gPG1pY2hhZWwuZC5raW5uZXlAaW50 ZWwuY29tPjsgR2FvLCBMaW1pbmcgPGxpbWluZy5nYW9AaW50ZWwuY29tPg0KPiA+Pj4+IENjOiBo dWFuZ21pbmcyM0BodWF3ZWkuY29tOyBEb25nLCBFcmljIDxlcmljLmRvbmdAaW50ZWwuY29tPjsN Cj4gPj4+PiB6aGFuZ2ppbnNvbmcyQGh1YXdlaS5jb207IFplbmcsIFN0YXIgPHN0YXIuemVuZ0Bp bnRlbC5jb20+Ow0KPiA+Pj4+IHdhaXAyM0AxMjYuY29tOyB3YW5naHVpcWlhbmdAaHVhd2VpLmNv bTsgaHVhbmdkYW9kZUBoaXNpbGljb24uY29tDQo+ID4+Pj4gU3ViamVjdDogW2VkazJdIFtNZGVQ a2cvQmFzZUxpYiB2MSAxLzFdIE1kZVBrZyBCYXNlTGliOiBBZGQgbmV3IEFQSQ0KPiA+Pj4+IENh bGN1bGF0ZUNyYzE2KCkNCj4gPj4+Pg0KPiA+Pj4+IENhbGN1bGF0ZUNyYzE2KCkgYmFzZXMgb24g dGhlIGluaXRpYWxpemVkIG1DcmNUYWJsZS4gV2hlbiBDYWxjdWxhdGVDcmMxNigpIGlzDQo+ID4+ Pj4gdXNlZCwgbUNyY1RhYmxlMTYgd2lsbCB0YWtlIDUxMkJ5dGVzIHNpemUgaW4gdGhlIGltYWdl LiBXaGVuDQo+ID4+Pj4gQ2FsY3VsYXRlQ3JjMTYoKSBpcyBub3QgdXNlZCwgbUNyY1RhYmxlMTYg d2lsbCBub3QgYmUgYnVpbHQgaW4gdGhlIGltYWdlLCBhbmQNCj4gPj4+PiBubyBzaXplIGltcGFj dC4NCj4gPj4+Pg0KPiA+Pj4+IENvbnRyaWJ1dGVkLXVuZGVyOiBUaWFub0NvcmUgQ29udHJpYnV0 aW9uIEFncmVlbWVudCAxLjENCj4gPj4+PiBTaWduZWQtb2ZmLWJ5OiBNaW5nIEh1YW5nIDxtaW5n Lmh1YW5nQGxpbmFyby5vcmc+DQo+ID4+Pj4gLS0tDQo+ID4+Pj4gIE1kZVBrZy9JbmNsdWRlL0xp YnJhcnkvQmFzZUxpYi5oICB8IDIwICsrKysrKw0KPiA+Pj4+IE1kZVBrZy9MaWJyYXJ5L0Jhc2VM aWIvQ2hlY2tTdW0uYyB8IDczICsrKysrKysrKysrKysrKysrKysrDQo+ID4+Pj4gIDIgZmlsZXMg Y2hhbmdlZCwgOTMgaW5zZXJ0aW9ucygrKQ0KPiA+Pj4+DQo+ID4+Pj4gZGlmZiAtLWdpdCBhL01k ZVBrZy9JbmNsdWRlL0xpYnJhcnkvQmFzZUxpYi5oDQo+ID4+Pj4gYi9NZGVQa2cvSW5jbHVkZS9M aWJyYXJ5L0Jhc2VMaWIuaA0KPiA+Pj4+IGluZGV4IDFlYjg0MjM4NGVlMi4uOTU2Yjk3MWU1YzY5 IDEwMDY0NA0KPiA+Pj4+IC0tLSBhL01kZVBrZy9JbmNsdWRlL0xpYnJhcnkvQmFzZUxpYi5oDQo+ ID4+Pj4gKysrIGIvTWRlUGtnL0luY2x1ZGUvTGlicmFyeS9CYXNlTGliLmgNCj4gPj4+PiBAQCAt NDg1NSw2ICs0ODU1LDI2IEBAIENhbGN1bGF0ZUNyYzMyKA0KPiA+Pj4+ICAgIElOICBVSU5UTiAg ICAgICAgICAgICAgICAgICAgICAgIExlbmd0aA0KPiA+Pj4+ICAgICk7DQo+ID4+Pj4NCj4gPj4+ PiArLyoqDQo+ID4+Pj4gKyAgQ29tcHV0ZXMgYW5kIHJldHVybnMgYSAxNi1iaXQgQ1JDIGZvciBh IGRhdGEgYnVmZmVyLg0KPiA+Pj4+ICsgIENSQzE2IHZhbHVlIGJhc2VzIG9uIENDSVRULg0KPiA+ Pj4+ICsNCj4gPj4+PiArICBJZiBCdWZmZXIgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPj4+ PiArICBJZiBMZW5ndGggaXMgZ3JlYXRlciB0aGFuIChNQVhfQUREUkVTUyAtIEJ1ZmZlciArIDEp LCB0aGVuIEFTU0VSVCgpLg0KPiA+Pj4+ICsNCj4gPj4+PiArICBAcGFyYW1baW5dICBCdWZmZXIg ICAgICAgQSBwb2ludGVyIHRvIHRoZSBidWZmZXIgb24gd2hpY2ggdGhlIDE2LWJpdCBDUkMgaXMg dG8NCj4gPj4+PiBiZSBjb21wdXRlZC4NCj4gPj4+PiArICBAcGFyYW1baW5dICBMZW5ndGggICAg ICBUaGUgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBidWZmZXIgRGF0YS4NCj4gPj4+PiArDQo+ID4+ Pj4gKyAgQHJldHZhbCBDcmMxNiAgICAgICAgICAgIFRoZSAxNi1iaXQgQ1JDIHdhcyBjb21wdXRl ZCBmb3IgdGhlIGRhdGEgYnVmZmVyLg0KPiA+Pj4+ICsNCj4gPj4+PiArKiovDQo+ID4+Pj4gK1VJ TlQxNg0KPiA+Pj4+ICtFRklBUEkNCj4gPj4+PiArQ2FsY3VsYXRlQ3JjMTYoDQo+ID4+Pj4gKyAg SU4gIFZPSUQgICAgICAgICAgICAgICAgICAgICAgICAgKkJ1ZmZlciwNCj4gPj4+PiArICBJTiAg VUlOVE4gICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGgNCj4gPj4+PiArICApOw0KPiA+Pj4+ ICsNCj4gPj4+PiAgLy8NCj4gPj4+PiAgLy8gQmFzZSBMaWJyYXJ5IENQVSBGdW5jdGlvbnMNCj4g Pj4+PiAgLy8NCj4gPj4+PiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9DaGVj a1N1bS5jDQo+ID4+Pj4gYi9NZGVQa2cvTGlicmFyeS9CYXNlTGliL0NoZWNrU3VtLmMNCj4gPj4+ PiBpbmRleCAwM2Q0OWFmYzVlNmMuLjRlMjdhZWJlNDRiYyAxMDA2NDQNCj4gPj4+PiAtLS0gYS9N ZGVQa2cvTGlicmFyeS9CYXNlTGliL0NoZWNrU3VtLmMNCj4gPj4+PiArKysgYi9NZGVQa2cvTGli cmFyeS9CYXNlTGliL0NoZWNrU3VtLmMNCj4gPj4+PiBAQCAtNjMwLDMgKzYzMCw3NiBAQCBDYWxj dWxhdGVDcmMzMigNCj4gPj4+Pg0KPiA+Pj4+ICAgIHJldHVybiBDcmMgXiAweGZmZmZmZmZmOw0K PiA+Pj4+ICB9DQo+ID4+Pj4gKw0KPiA+Pj4+ICtHTE9CQUxfUkVNT1ZFX0lGX1VOUkVGRVJFTkNF RCBDT05TVCBVSU5UMTYgIG1DcmNUYWJsZTE2WzI1Nl0gPQ0KPiA+Pj4+IHsNCj4gPj4+PiArICAw eDAwMDAsIDB4MTAyMSwgMHgyMDQyLCAweDMwNjMsIDB4NDA4NCwgMHg1MEE1LCAweDYwQzYsIDB4 NzBFNywNCj4gPj4+PiArICAweDgxMDgsIDB4OTEyOSwgMHhBMTRBLCAweEIxNkIsIDB4QzE4Qywg MHhEMUFELCAweEUxQ0UsIDB4RjFFRiwNCj4gPj4+PiArICAweDEyMzEsIDB4MDIxMCwgMHgzMjcz LCAweDIyNTIsIDB4NTJCNSwgMHg0Mjk0LCAweDcyRjcsIDB4NjJENiwNCj4gPj4+PiArICAweDkz MzksIDB4ODMxOCwgMHhCMzdCLCAweEEzNUEsIDB4RDNCRCwgMHhDMzlDLCAweEYzRkYsIDB4RTNE RSwNCj4gPj4+PiArICAweDI0NjIsIDB4MzQ0MywgMHgwNDIwLCAweDE0MDEsIDB4NjRFNiwgMHg3 NEM3LCAweDQ0QTQsIDB4NTQ4NSwNCj4gPj4+PiArICAweEE1NkEsIDB4QjU0QiwgMHg4NTI4LCAw eDk1MDksIDB4RTVFRSwgMHhGNUNGLCAweEM1QUMsIDB4RDU4RCwNCj4gPj4+PiArICAweDM2NTMs IDB4MjY3MiwgMHgxNjExLCAweDA2MzAsIDB4NzZENywgMHg2NkY2LCAweDU2OTUsIDB4NDZCNCwN Cj4gPj4+PiArICAweEI3NUIsIDB4QTc3QSwgMHg5NzE5LCAweDg3MzgsIDB4RjdERiwgMHhFN0ZF LCAweEQ3OUQsIDB4QzdCQywNCj4gPj4+PiArICAweDQ4QzQsIDB4NThFNSwgMHg2ODg2LCAweDc4 QTcsIDB4MDg0MCwgMHgxODYxLCAweDI4MDIsIDB4MzgyMywNCj4gPj4+PiArICAweEM5Q0MsIDB4 RDlFRCwgMHhFOThFLCAweEY5QUYsIDB4ODk0OCwgMHg5OTY5LCAweEE5MEEsIDB4QjkyQiwNCj4g Pj4+PiArICAweDVBRjUsIDB4NEFENCwgMHg3QUI3LCAweDZBOTYsIDB4MUE3MSwgMHgwQTUwLCAw eDNBMzMsIDB4MkExMiwNCj4gPj4+PiArICAweERCRkQsIDB4Q0JEQywgMHhGQkJGLCAweEVCOUUs IDB4OUI3OSwgMHg4QjU4LCAweEJCM0IsIDB4QUIxQSwNCj4gPj4+PiArICAweDZDQTYsIDB4N0M4 NywgMHg0Q0U0LCAweDVDQzUsIDB4MkMyMiwgMHgzQzAzLCAweDBDNjAsIDB4MUM0MSwNCj4gPj4+ PiArICAweEVEQUUsIDB4RkQ4RiwgMHhDREVDLCAweEREQ0QsIDB4QUQyQSwgMHhCRDBCLCAweDhE NjgsIDB4OUQ0OSwNCj4gPj4+PiArICAweDdFOTcsIDB4NkVCNiwgMHg1RUQ1LCAweDRFRjQsIDB4 M0UxMywgMHgyRTMyLCAweDFFNTEsIDB4MEU3MCwNCj4gPj4+PiArICAweEZGOUYsIDB4RUZCRSwg MHhERkRELCAweENGRkMsIDB4QkYxQiwgMHhBRjNBLCAweDlGNTksIDB4OEY3OCwNCj4gPj4+PiAr ICAweDkxODgsIDB4ODFBOSwgMHhCMUNBLCAweEExRUIsIDB4RDEwQywgMHhDMTJELCAweEYxNEUs IDB4RTE2RiwNCj4gPj4+PiArICAweDEwODAsIDB4MDBBMSwgMHgzMEMyLCAweDIwRTMsIDB4NTAw NCwgMHg0MDI1LCAweDcwNDYsIDB4NjA2NywNCj4gPj4+PiArICAweDgzQjksIDB4OTM5OCwgMHhB M0ZCLCAweEIzREEsIDB4QzMzRCwgMHhEMzFDLCAweEUzN0YsIDB4RjM1RSwNCj4gPj4+PiArICAw eDAyQjEsIDB4MTI5MCwgMHgyMkYzLCAweDMyRDIsIDB4NDIzNSwgMHg1MjE0LCAweDYyNzcsIDB4 NzI1NiwNCj4gPj4+PiArICAweEI1RUEsIDB4QTVDQiwgMHg5NUE4LCAweDg1ODksIDB4RjU2RSwg MHhFNTRGLCAweEQ1MkMsIDB4QzUwRCwNCj4gPj4+PiArICAweDM0RTIsIDB4MjRDMywgMHgxNEEw LCAweDA0ODEsIDB4NzQ2NiwgMHg2NDQ3LCAweDU0MjQsIDB4NDQwNSwNCj4gPj4+PiArICAweEE3 REIsIDB4QjdGQSwgMHg4Nzk5LCAweDk3QjgsIDB4RTc1RiwgMHhGNzdFLCAweEM3MUQsIDB4RDcz QywNCj4gPj4+PiArICAweDI2RDMsIDB4MzZGMiwgMHgwNjkxLCAweDE2QjAsIDB4NjY1NywgMHg3 Njc2LCAweDQ2MTUsIDB4NTYzNCwNCj4gPj4+PiArICAweEQ5NEMsIDB4Qzk2RCwgMHhGOTBFLCAw eEU5MkYsIDB4OTlDOCwgMHg4OUU5LCAweEI5OEEsIDB4QTlBQiwNCj4gPj4+PiArICAweDU4NDQs IDB4NDg2NSwgMHg3ODA2LCAweDY4MjcsIDB4MThDMCwgMHgwOEUxLCAweDM4ODIsIDB4MjhBMywN Cj4gPj4+PiArICAweENCN0QsIDB4REI1QywgMHhFQjNGLCAweEZCMUUsIDB4OEJGOSwgMHg5QkQ4 LCAweEFCQkIsIDB4QkI5QSwNCj4gPj4+PiArICAweDRBNzUsIDB4NUE1NCwgMHg2QTM3LCAweDdB MTYsIDB4MEFGMSwgMHgxQUQwLCAweDJBQjMsIDB4M0E5MiwNCj4gPj4+PiArICAweEZEMkUsIDB4 RUQwRiwgMHhERDZDLCAweENENEQsIDB4QkRBQSwgMHhBRDhCLCAweDlERTgsIDB4OERDOSwNCj4g Pj4+PiArICAweDdDMjYsIDB4NkMwNywgMHg1QzY0LCAweDRDNDUsIDB4M0NBMiwgMHgyQzgzLCAw eDFDRTAsIDB4MENDMSwNCj4gPj4+PiArICAweEVGMUYsIDB4RkYzRSwgMHhDRjVELCAweERGN0Ms IDB4QUY5QiwgMHhCRkJBLCAweDhGRDksIDB4OUZGOCwNCj4gPj4+PiArICAweDZFMTcsIDB4N0Uz NiwgMHg0RTU1LCAweDVFNzQsIDB4MkU5MywgMHgzRUIyLCAweDBFRDEsIDB4MUVGMCB9Ow0KPiA+ Pj4+ICsNCj4gPj4+PiArLyoqDQo+ID4+Pj4gKyAgQ29tcHV0ZXMgYW5kIHJldHVybnMgYSAxNi1i aXQgQ1JDIGZvciBhIGRhdGEgYnVmZmVyLg0KPiA+Pj4+ICsgIENSQzE2IHZhbHVlIGJhc2VzIG9u IENDSVRULg0KPiA+Pj4+ICsNCj4gPj4+PiArICBJZiBCdWZmZXIgaXMgTlVMTCwgdGhlbiBBU1NF UlQoKS4NCj4gPj4+PiArICBJZiBMZW5ndGggaXMgZ3JlYXRlciB0aGFuIChNQVhfQUREUkVTUyAt IEJ1ZmZlciArIDEpLCB0aGVuIEFTU0VSVCgpLg0KPiA+Pj4+ICsNCj4gPj4+PiArICBAcGFyYW1b aW5dICBCdWZmZXIgICAgICAgQSBwb2ludGVyIHRvIHRoZSBidWZmZXIgb24gd2hpY2ggdGhlIDE2 LWJpdCBDUkMgaXMgdG8NCj4gPj4+PiBiZSBjb21wdXRlZC4NCj4gPj4+PiArICBAcGFyYW1baW5d ICBMZW5ndGggICAgICBUaGUgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBidWZmZXIgRGF0YS4NCj4g Pj4+PiArDQo+ID4+Pj4gKyAgQHJldHZhbCBDcmMxNiAgICAgICAgICAgIFRoZSAxNi1iaXQgQ1JD IHdhcyBjb21wdXRlZCBmb3IgdGhlIGRhdGEgYnVmZmVyLg0KPiA+Pj4+ICsNCj4gPj4+PiArKiov DQo+ID4+Pj4gK1VJTlQxNg0KPiA+Pj4+ICtFRklBUEkNCj4gPj4+PiArQ2FsY3VsYXRlQ3JjMTYo DQo+ID4+Pj4gKyAgSU4gIFZPSUQgICAgICAgICAgICAgICAgICAgICAgICAgKkJ1ZmZlciwNCj4g Pj4+PiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGgNCj4gPj4+PiAr ICApDQo+ID4+Pj4gK3sNCj4gPj4+PiArICBVSU5UMTYgIENyYzsNCj4gPj4+PiArICBVSU5UOCAg ICpQdHI7DQo+ID4+Pj4gKw0KPiA+Pj4+ICsgIEFTU0VSVCAoQnVmZmVyICE9IE5VTEwpOw0KPiA+ Pj4+ICsgIEFTU0VSVCAoTGVuZ3RoIDw9IChNQVhfQUREUkVTUyAtICgoVUlOVE4pIEJ1ZmZlcikg KyAxKSk7DQo+ID4+Pj4gKw0KPiA+Pj4+ICsgIENyYyA9IDA7DQo+ID4+Pj4gKyAgUHRyID0gKFVJ TlQ4ICopQnVmZmVyOw0KPiA+Pj4+ICsgIHdoaWxlIChMZW5ndGgpIHsNCj4gPj4+PiArICAgIENy YyA9IG1DcmNUYWJsZTE2WygoVUlOVDgpKChDcmMgPj4gOCkgJiAweGZmKSkgXiAqKFB0cisrKV0g Xg0KPiA+Pj4+ICsgICAgICAgICAgICAoKFVJTlQxNikoQ3JjIDw8IDgpKTsNCj4gPj4+PiArICAg IExlbmd0aC0tOw0KPiA+Pj4+ICsgIH0NCj4gPj4+PiArDQo+ID4+Pj4gKyAgcmV0dXJuIENyYzsN Cj4gPj4+PiArfQ0KPiA+Pj4+ICsNCj4gPj4+PiAtLQ0KPiA+Pj4+IDIuOS41DQo+ID4+Pj4NCj4g Pj4+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiA+ Pj4+IGVkazItZGV2ZWwgbWFpbGluZyBsaXN0DQo+ID4+Pj4gZWRrMi1kZXZlbEBsaXN0cy4wMS5v cmcNCj4gPj4+PiBodHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2VkazItZGV2 ZWwNCj4gPj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18N Cj4gPj4gZWRrMi1kZXZlbCBtYWlsaW5nIGxpc3QNCj4gPj4gZWRrMi1kZXZlbEBsaXN0cy4wMS5v cmcNCj4gPj4gaHR0cHM6Ly9saXN0cy4wMS5vcmcvbWFpbG1hbi9saXN0aW5mby9lZGsyLWRldmVs DQo=