From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 192.55.52.88, mailfrom: liming.gao@intel.com) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by groups.io with SMTP; Thu, 18 Apr 2019 08:18:45 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 18 Apr 2019 08:18:45 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.60,366,1549958400"; d="scan'208";a="162765763" Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203]) by fmsmga002.fm.intel.com with ESMTP; 18 Apr 2019 08:18:45 -0700 Received: from fmsmsx151.amr.corp.intel.com (10.18.125.4) by FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS) id 14.3.408.0; Thu, 18 Apr 2019 08:18:44 -0700 Received: from shsmsx102.ccr.corp.intel.com (10.239.4.154) by FMSMSX151.amr.corp.intel.com (10.18.125.4) with Microsoft SMTP Server (TLS) id 14.3.408.0; Thu, 18 Apr 2019 08:18:44 -0700 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.92]) by shsmsx102.ccr.corp.intel.com ([169.254.2.206]) with mapi id 14.03.0415.000; Thu, 18 Apr 2019 23:18:42 +0800 From: "Liming Gao" To: Laszlo Ersek , "devel@edk2.groups.io" , "Justen, Jordan L" , Andrew Fish CC: "Kinney, Michael D" Subject: Re: [edk2-devel] [PATCH 02/10] MdePkg/PiFirmwareFile: fix undefined behavior in SECTION_SIZE Thread-Topic: [edk2-devel] [PATCH 02/10] MdePkg/PiFirmwareFile: fix undefined behavior in SECTION_SIZE Thread-Index: AQHU8Yfi5l5GY17WQEe6JuXdBpZ/vKY6u6gAgAIoEICAARn5AIAAICYAgACDBoCAAE1ggIAAuZcAgAAU9wCAADZngIAATPSAgADrtoCAANU4UA== Date: Thu, 18 Apr 2019 15:18:42 +0000 Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14E42B1BB@SHSMSX104.ccr.corp.intel.com> References: <20190412233128.4756-1-lersek@redhat.com> <155522637661.21857.4743822681286277764@jljusten-skl> <3bbbb85e-5557-d99b-1c3b-50a844455d20@redhat.com> <155540548458.13612.11281694046292591090@jljusten-skl> <413ac018-bcf2-f510-00d0-33315974a3c2@redhat.com> <155544052538.15733.153410443320244157@jljusten-skl> <940201E3-0EDB-40B8-8680-CDE68DA0FD06@apple.com> <71e4f508-75f2-79a7-967e-d7a6a0e34341@redhat.com> <3a4d9e9b-ffc2-3034-dc20-29b665524b75@redhat.com> <155552970738.28368.15192384950564316161@jljusten-skl> <4d610ca7-d0ed-b009-6da1-92be09cb6d68@redhat.com> In-Reply-To: <4d610ca7-d0ed-b009-6da1-92be09cb6d68@redhat.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiZDIzY2JlYzktYmRiNy00ZTA1LWIzZmItNzYyMGY0MjkzY2IwIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiQnFScjBuVzh0bGJYelZzcGhlUkpuWWorcXhPOW5lMEpKTGpXMGkyRmlkWjhPcWtWVUdSMVFReW4rRm00aXVMNSJ9 dlp-product: dlpe-windows dlp-version: 11.0.600.7 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Return-Path: liming.gao@intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBMYXN6bG8gRXJzZWsgW21haWx0 bzpsZXJzZWtAcmVkaGF0LmNvbV0NCj4gU2VudDogVGh1cnNkYXksIEFwcmlsIDE4LCAyMDE5IDU6 MzkgUE0NCj4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBKdXN0ZW4sIEpvcmRhbiBMIDxqb3Jk YW4ubC5qdXN0ZW5AaW50ZWwuY29tPjsgQW5kcmV3IEZpc2ggPGFmaXNoQGFwcGxlLmNvbT4NCj4g Q2M6IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47IEdhbywg TGltaW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVs XSBbUEFUQ0ggMDIvMTBdIE1kZVBrZy9QaUZpcm13YXJlRmlsZTogZml4IHVuZGVmaW5lZCBiZWhh dmlvciBpbiBTRUNUSU9OX1NJWkUNCj4gDQo+IE9uIDA0LzE3LzE5IDIxOjM1LCBKb3JkYW4gSnVz dGVuIHdyb3RlOg0KPiA+IE9uIDIwMTktMDQtMTcgMDc6NTk6NDEsIExhc3psbyBFcnNlayB3cm90 ZToNCj4gPj4gT24gMDQvMTcvMTkgMTM6NDQsIEFuZHJldyBGaXNoIHdyb3RlOg0KPiA+Pg0KPiA+ Pj4gU29ycnkgSSBkaWdyZXNzZWQgaW50byB0aGUgQyBzcGVjaWZpY2F0aW9uIGRpc2N1c3Npb24s IGFuZCBkaWQgbm90DQo+ID4+PiBkZWFsIHdpdGggdGhlIHBhdGNoIGluIGdlbmVyYWwuIE15IHBv aW50IGlzIHRoZSBvcmlnaW5hbCBjb2RlIGlzIGxlZ2FsDQo+ID4+PiBDIGNvZGUuIElmIHlvdSBs b29rdXAgQ1dFLTExOSBpdCBpcyB3cml0dGVuIGFzIGEgcmVzdHJpY3Rpb24gb24gd2hhdA0KPiA+ Pj4gdGhlIEMgbGFuZ3VhZ2UgYWxsb3dzLg0KPiA+Pj4NCj4gPj4+IEFzIEkgbWVudGlvbmVkIGNh c3RpbmcgdG8gc3BlY2lmaWMgYWxpZ25tZW50IGlzIGxlZ2FsLCBhcyBpcyBkZWZpbmluZw0KPiA+ Pj4gYSBzdHJ1Y3R1cmUgdGhhdCBpcyBwcmFnbWEgcGFjaygxKSB0aGF0IGNhbiBtYWtlIGEgVUlO VDMyIG5vdCBiZSA0DQo+ID4+PiBieXRlIGFsaWduZWQuIFRodXMgdGhlIGNhc3QgY3JlYXRlZCBh IGxlZ2FsIFVJTlQzMiB2YWx1ZS4gQSBjYXN0IHRvDQo+ID4+PiAqKFVJTlQzMiAqKSBpcyBkaWZm ZXJlbnQgdGhhdCBhIGNhc3QgdG8gKFVJTlQzMiAqKS4gVGhlIHJ1bGVzIHlvdQ0KPiA+Pj4gcXVv dGUgYSB0cmlnZ2VyZWQgYnkgdGhlID0gYW5kIG5vdCB0aGUgY2FzdC4NCj4gPj4+DQo+ID4+PiBU aHVzIHRoaXMgaXMgdW5kZWZpbmVkIGJlaGF2aW9yIGluIEM6DQo+ID4+PiAgIFVJTlQzMiAqVWIg PSAoVUlOVDMyICopZ1NlY3Rpb24uU2VjLlNpemU7DQo+ID4+PiAgIFNpemUgPSAqVWIgJiAweDAw ZmZmZmZmOw0KPiA+Pj4NCj4gPj4+IEFuZCB0aGlzIGlzIG5vdCBVbmRlZmluZWQgYmVoYXZpb3I6 DQo+ID4+PiAgIFVJTlQzMiBOb3RVYiA9ICooVUlOVDMyICopZ1NlY3Rpb24uU2VjLlNpemUgJiAw eDAwZmZmZmZmOw0KPiA+Pg0KPiA+PiBJIGFncmVlIHRoZSAybmQgc25pcHBldCBtYXkgbm90IGJl IFVCIGR1ZSB0byBhbGlnbm1lbnQgdmlvbGF0aW9ucw0KPiA+PiAqYWxvbmUqLg0KPiA+Pg0KPiA+ PiBJdCBpcyBzdGlsbCBVQiBkdWUgdG8gdmlvbGF0aW5nIHRoZSBlZmZlY3RpdmUgdHlwZSBydWxl cy4NCj4gPj4NCj4gPj4+IEkgYWxzbyBoYWQgYSBoYXJkIHRpbWUgaW50ZXJwcmV0aW5nIHdoYXQg QyBzcGVjIHdhcyBzYXlpbmcsIGJ1dA0KPiA+Pj4gdGFsa2luZyB0byB0aGUgcGVvcGxlIHdobyB3 cml0ZSB0aGUgY29tcGlsZXIgYW5kIHVic2FuIGNsZWFyZWQgaXQgdXANCj4gPj4+IGZvciBtZS4g SXQgYWxzbyBtYWtlcyBzZW5zZSB3aGVuIHlvdSB0aGluayBhYm91dCBpdC4gSWYgeW91IHRlbGwg dGhlDQo+ID4+PiBjb21waWxlciAqKFVJTlQzMiAqKSBpdCBjYW4ga25vdyB0byBnZW5lcmF0ZSBi eXRlIHJlYWRzIGlmIHRoZQ0KPiA+Pj4gaGFyZHdhcmUgcmVxdWlyZXMgYWxpZ25lZCBhY2Nlc3Mu IElmIHlvdSBkbyBhIChVSU5UMzIgKikgdGhhdCBuZXcNCj4gPj4+IHBvaW50ZXIgbm8gbG9uZ2Vy IGNhcnJpZXMgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBhbGlnbm1lbnQNCj4gPj4+IHJlcXVp cmVtZW50LiBUaHVzIHRoZSAgKihVSU5UMzIgKikgY2FzdCBpcyBsaWtlIG1ha2luZyBhIHBhY2tl ZA0KPiA+Pj4gc3RydWN0dXJlLg0KPiA+Pg0KPiA+PiBZZXMsIEkgdGhpbmsgSSdtIGNsZWFyIG9u IGhvdyB0aGUgYWxpZ25tZW50IGluZm9ybWF0aW9uIGlzIGNhcnJpZWQNCj4gPj4gYXJvdW5kLCBh bmQgd2hlbiBpdCBpcyBsb3N0LiBJbiB5b3VyIGZpcnN0IGV4YW1wbGUgYWJvdmUsIGR1ZSB0byB1 cw0KPiA+PiBmb3JtaW5nIGEgc2VwYXJhdGUgKHN0YW5kYWxvbmUpIHBvaW50ZXIsIHdlIGxvc2Ug dGhlIGFsaWdubWVudA0KPiA+PiBpbmZvcm1hdGlvbiwgYW5kIHRoZW4gdGhlIGFzc2lnbm1lbnQg aXMgdW5kZWZpbmVkIGR1ZSB0byBhbiBhbGlnbm1lbnQNCj4gPj4gdmlvbGF0aW9uLiBXaGlsZSBp biB0aGUgc2Vjb25kIGV4YW1wbGUsIHRoZSBhbGlnbm1lbnQgaW5mb3JtYXRpb24gaXMgbm90DQo+ ID4+IGxvc3QsIGFuZCB0aGUgYXNzaWdubWVudCBpcyBub3QgdW5kZWZpbmVkIG9uIGFuIGFsaWdu bWVudCBiYXNpcyAqYWxvbmUqLg0KPiA+Pg0KPiA+PiBIb3dldmVyOiB0aGUgc2Vjb25kIGFzc2ln bm1lbnQgaXMgKnN0aWxsKiB1bmRlZmluZWQsIGJlY2F1c2UgaXQgdmlvbGF0ZXMNCj4gPj4gdGhl IGVmZmVjdGl2ZSB0eXBlIHJ1bGVzLiBIZXJlJ3MgYSBtb3JlIGRpcmVjdCBleGFtcGxlIGZvciB0 aGUgc2FtZToNCj4gPj4NCj4gPj4gU1RBVElDIFVJTlQ2NCBtVWludDY0Ow0KPiA+Pg0KPiA+PiBp bnQgbWFpbih2b2lkKQ0KPiA+PiB7DQo+ID4+ICAgVUlOVDE2ICpVaW50MTZQdHI7DQo+ID4+DQo+ ID4+ICAgVWludDE2UHRyID0gKFVJTlQxNiAqKSZtVWludDY0Ow0KPiA+PiAgICpVaW50MTZQdHIg PSAxOw0KPiA+PiAgIHJldHVybiAwOw0KPiA+PiB9DQo+ID4+DQo+ID4+IFRoZSBhc3NpZ25tZW50 IHRvICgqVWludDE2UHRyKSBpcyBmaW5lIGZyb20gdGhlIGFsaWdubWVudCBwZXJzcGVjdGl2ZSwN Cj4gPj4gYnV0IGl0IGlzIG5ldmVydGhlbGVzcyB1bmRlZmluZWQsIGJlY2F1c2UgaXQgYnJlYWtz IHRoZSBlZmZlY3RpdmUgdHlwZQ0KPiA+PiBydWxlcy4gTmFtZWx5LCBVSU5UMTYgKHRoZSB0eXBl IHVzZWQgZm9yIHRoZSBhY2Nlc3MpIGlzIG5vdCBjb21wYXRpYmxlDQo+ID4+IHdpdGggVUlOVDY0 ICh0aGUgZWZmZWN0aXZlIHR5cGUgb2YgbVVpbnQ2NCkuDQo+ID4+DQo+ID4+IE5vcm1hbGx5LCB3 ZSBkb24ndCBjYXJlIGFib3V0IHRoaXMgc2l0dWF0aW9uIGluIGVkazIgLS0gaW4gZmFjdCB3ZSB3 cml0ZQ0KPiA+PiBsb2FkcyBvZiBjb2RlIGxpa2UgdGhlIGFib3ZlIC0tLCBidXQgd2UgZ2V0IGF3 YXkgd2l0aCB0aGF0IG9ubHkgYmVjYXVzZQ0KPiA+PiB3ZSBmb3JjZSB0aGUgdG9vbGNoYWlucyB0 byBpZ25vcmUgdGhlIGVmZmVjdGl2ZSB0eXBlIHJ1bGVzLiBGb3IgR0NDIGluDQo+ID4+IHBhcnRp Y3VsYXIsIHRoZSBvcHRpb24gaXMgIi1mbm8tc3RyaWN0LWFsaWFzaW5nIi4NCj4gPj4NCj4gPj4g VGhlIG9ubHkgcmVhc29uIEkndmUgcG9zdGVkIHRoaXMgcGF0Y2ggaXMgdGhhdCAiY3BwY2hlY2si IChpbnZva2VkIGFzIGENCj4gPj4gcGFydCBvZiAiUkggY292c2NhbiIpIGRvZXNuJ3QgY2FyZSBh Ym91dCAiLWZuby1zdHJpY3QtYWxpYXNpbmciLiBBbmQNCj4gPj4gd2hpbGUgImNwcGNoZWNrIiBo YXBwZW5zIHRvIHJlcG9ydCB0aGUgb3ZlcnJ1biwgYW5kIG5vdCB0aGUgdHlwZQ0KPiA+PiBwdW5u aW5nLCB0aGUgd2F5IHRvIHJlbW92ZSB0aGUgd2FybmluZyBpcyB0byBhZGhlcmUgdG8gYWxsIHRo ZSBDIHJ1bGVzDQo+ID4+IGluIHRoZSBleHByZXNzaW9uLCBldmVuIHRob3VnaCB3ZSBoYXZlICIt Zm5vLXN0cmljdC1hbGlhc2luZyIgaW4gcGxhY2UuDQo+ID4+DQo+ID4+PiBJIGFncmVlIHRoZSB1 bmlvbiBpcyBhIGdvb2Qgc29sdXRpb24gdG8gQ1dFLTExOSBhbmQgaXQgYmV0dGVyIG1hdGNoZXMN Cj4gPj4+IHRoZSBhbGlnbm1lbnQgcmVxdWlyZW1lbnQgaW4gdGhlIFBJIHNwZWMuDQo+ID4+DQo+ ID4+IFRoYW5rIHlvdS4NCj4gPj4NCj4gPj4gSSdsbCB3YWl0IGEgYml0IGxvbmdlciB0byBzZWUg aWYgSm9yZGFuIGFjY2VwdHMgdGhpcyAwMi8xMCBwYXRjaCBiYXNlZA0KPiA+PiBvbiB0aGUgbW9z dCByZWNlbnQgY29tbWVudHMsIGFuZCB3aGV0aGVyIExpbWluZyBvciBNaWtlIGFjY2VwdHMgMDQv MTAuDQo+ID4+DQo+ID4+IElmIEpvcmRhbiByZW1haW5zIHVuY29udmluY2VkIG9uIFNFQ1RJT05f U0laRSAoaW4gdGhpcyAwMi8xMCBwYXRjaCksIGFuZA0KPiA+PiBMaW1pbmcgb3IgTWlrZSBhcmUg ZmluZSB3aXRoIDA0LzEwLCBJIGNhbiByZXdvcmsgMDIvMTAgdG8gZm9sbG93IDA0LzEwLg0KPiA+ Pg0KPiA+PiBJZiBKb3JkYW4gcmVtYWlucyB1bmNvbnZpbmNlZCBidXQgTWlrZSBvciBMaW1pbmcg cHJlZmVycyB0aGUgdW5pb24sIHRoZW4NCj4gPj4gd2UgaGF2ZSBhIHN0YWxlbWF0ZSBhbmQgSSds bCBhYmFuZG9uIHRoZSBwYXRjaCBzZXQuDQo+ID4NCj4gPiBJIGRpZCBoYXZlIGEgKHNsaWdodCkg Y29uY2VybiBhYm91dCBhZGRpbmcgYSB0eXBlZGVmIHRvIGEgcHVibGljDQo+ID4gaGVhZGVyIHRo YXQgd2Fzbid0IGluIHRoZSBzcGVjLiBJdCBzZWVtZWQgbGlrZSBzb21ldGhpbmcgdGhhdCBzb21l b25lDQo+ID4gc29tZXdoZXJlIG1pZ2h0IG5vdCBsaWtlIGluIGNhc2UgaXQgY291bGQgaW50ZXJm ZXJlIHdpdGggZnV0dXJlDQo+ID4gdmVyc2lvbnMgb2YgdGhlIHNwZWMuIEFjY29yZGluZyB0byBM aW1pbmcsIHdlIGRvbid0IGhhdmUgdG8gd29ycnkNCj4gPiBhYm91dCB0aGF0Lg0KPiA+DQo+ID4g UmVnYXJkaW5nIHRoZSBVSU5UMzIqIGRpc2N1c3Npb24sIEkgZGlkbid0IHRoaW5rIHRoZSB1bmlv biByZWFsbHkNCj4gPiB3b3VsZCBtYWtlIGEgZGlmZmVyZW5jZSB2cyBza2lwcGluZyB0aGUgdW5p b24gYW5kIGNhc3RpbmcgdGhlIG9yaWdpbmFsDQo+ID4gc3RydWN0IHBvaW50ZXIgZGlyZWN0bHkg dG8gYSBVSU5UMzIqLg0KPiANCj4gVGhlIGdjYyBkb2NzIG9uICItZnN0cmljdC1hbGlhc2luZyIg c2VlbSB0byBzdWdnZXN0IHRoZSBzYW1lLCB1c2luZyBhbg0KPiBleGFtcGxlIC0tIGJ1dCB0byBt ZSB0aGF0IGV4YW1wbGUgbG9va3Mgd3JvbmcgKGl0IHNlZW1zIHdlbGwtZGVmaW5lZCwNCj4gYmFz ZWQgb24gdGhlIHNhbWUgcnVsZXMgSSBxdW90ZWQgZnJvbSB0aGUgc3RhbmRhcmQpOyBpLmUuIHRo YXQgbG9va3MNCj4gbGlrZSBhIGJ1ZyB0byBtZSBpbiB0aGUgZ2NjIGRvY3MuIEkndmUgY29udGFj dGVkIGEgY29sbGVhZ3VlIGF0IFJIIGluDQo+IHRoZSB0b29sY2hhaW4gdGVhbSBhYm91dCBpdC4N Cj4gDQo+ID4gSSBjYW4gc2VlIEFuZHJldydzIHBvaW50IHRoYXQgdGhlIHVuaW9uIG1heSBhZGQg c29tZSBhbGlnbm1lbnQNCj4gPiBhc3N1bXB0aW9ucyB0byB0aGUgZGVyZWZlcmVuY2UsIHNvIEkg Y2FuIHNlZSBob3cgdGhhdCBkb2VzIHBvdGVudGlhbGx5DQo+ID4gY2hhbmdlIHNvbWV0aGluZyBz dWJ0bGUuIE1heWJlIG9uIHNvbWUgbWFjaGluZXMgaXQgd2lsbCBhbGxvdyBmb3IgbW9yZQ0KPiA+ IGVmZmljaWVudCByZWFkaW5nIG9mIHRoZSBkYXRhIHdpdGggdGhlICh2YWxpZCkgYWxpZ25tZW50 IGFzc3VtcHRpb24uDQo+ID4NCj4gPiBJIHdhcyBhbHNvIG5vdCBzZWVpbmcgd2h5IHlvdSB3ZXJl IHNheWluZyBpdCBwcm9kdWNlZCAqdW5kZWZpbmVkKg0KPiA+IHJlc3VsdHMuIEkgZG9uJ3QgdGhp bmsgaXQgZG9lcyBpbiBvdXIgY2FzZSwgYnV0IHdoZW4geW91IHBvaW50IG91dA0KPiA+IHRoYXQg d2UgYXJlIGFsaWFzaW5nIGRhdGEgYWNjZXNzLCBJIGNhbiBzZWUgaG93IHRoYXQgcXVpY2tseSBn ZXRzIGludG8NCj4gPiAqdW5kZWZpbmVkKiB0ZXJyaXRvcnkgZnJvbSBhIGNvbXBpbGVyJ3MgcGVy c3BlY3RpdmUuDQo+IA0KPiBSaWdodCwgSSBhcHByb2FjaGVkIHRoaXMgcHVyZWx5IGZyb20gdGhl IHN0YW5kYXJkJ3MgcGVyc3BlY3RpdmUuIFRoZQ0KPiBzdGFuZGFyZCBzYXlzLCBpbiAiNC4gQ29u Zm9ybWFuY2UiOg0KPiANCj4gMSBJbiB0aGlzIEludGVybmF0aW9uYWwgU3RhbmRhcmQsIOKAmOKA mHNoYWxs4oCZ4oCZIGlzIHRvIGJlIGludGVycHJldGVkIGFzIGENCj4gICByZXF1aXJlbWVudCBv biBhbiBpbXBsZW1lbnRhdGlvbiBvciBvbiBhIHByb2dyYW07IGNvbnZlcnNlbHksIOKAmOKAmHNo YWxsDQo+ICAgbm904oCZ4oCZIGlzIHRvIGJlIGludGVycHJldGVkIGFzIGEgcHJvaGliaXRpb24u DQo+IA0KPiAyIElmIGEg4oCY4oCYc2hhbGzigJnigJkgb3Ig4oCY4oCYc2hhbGwgbm904oCZ4oCZ IHJlcXVpcmVtZW50IHRoYXQgYXBwZWFycyBvdXRzaWRlIG9mIGENCj4gICBjb25zdHJhaW50IGlz IHZpb2xhdGVkLCB0aGUgYmVoYXZpb3IgaXMgdW5kZWZpbmVkLiBVbmRlZmluZWQgYmVoYXZpb3IN Cj4gICBpcyBvdGhlcndpc2UgaW5kaWNhdGVkIGluIHRoaXMgSW50ZXJuYXRpb25hbCBTdGFuZGFy ZCBieSB0aGUgd29yZHMNCj4gICDigJjigJh1bmRlZmluZWQgYmVoYXZpb3LigJnigJkgb3IgYnkg dGhlIG9taXNzaW9uIG9mIGFueSBleHBsaWNpdCBkZWZpbml0aW9uDQo+ICAgb2YgYmVoYXZpb3Iu IFRoZXJlIGlzIG5vIGRpZmZlcmVuY2UgaW4gZW1waGFzaXMgYW1vbmcgdGhlc2UgdGhyZWU7DQo+ ICAgdGhleSBhbGwgZGVzY3JpYmUg4oCY4oCYYmVoYXZpb3IgdGhhdCBpcyB1bmRlZmluZWTigJni gJkuDQo+IA0KPiBJbiB0aGlzIHBhcnRpY3VsYXIgY2FzZSwgNi41cDcgZ29lcyAiQW4gb2JqZWN0 ICpzaGFsbCogaGF2ZSBpdHMgc3RvcmVkDQo+IHZhbHVlIGFjY2Vzc2VkICpvbmx5KiBieSBbLi4u XSIgKGVtcGhhc2lzIG1pbmUpLCBhbmQgdGhhdCBwYXJhZ3JhcGgNCj4gZG9lc24ndCBmYWxsIGlu IGEgQ29uc3RyYWludHMgc2VjdGlvbiwgc28gNHAyIGNsZWFybHkgYXBwbGllcy4NCj4gDQo+IFRo YXQncyB3aHkgSSBjYWxsZWQgaXQgdW5kZWZpbmVkIC0tIGl0IG1pZ2h0IHdvcmsgcGVyZmVjdGx5 IHdlbGwgaW4NCj4gcHJhY3RpY2Ugb24gYWxsIHRoZSBlZGsyIHBsYXRmb3JtcywgcG9zc2libHkg ZHVlIHRvIG91ciBjYXJlZnVsbHkNCj4gc2VsZWN0ZWQgY29tcGlsZXIgc3dpdGNoZXMsIGJ1dCB0 aGF0J3Mgbm90IHdoYXQgc3RhdGljIGFuYWx5emVycyBjYXJlDQo+IGFib3V0LiBBSVVJIHRoZXkg b25seSBjYXJlIGFib3V0IHRoZSBzdGFuZGFyZCwgaGVuY2UgbXkgZm9jdXMgb24gdGhlDQo+IHN0 YW5kYXJkIGZvciB0aGUgZml4Lg0KPiANCj4gKA0KPiANCj4gU2lkZSBub3RlOiB0aGUgY2xhc3Np ZmljYXRpb24gIm91dHNpZGUgb2YgYSBjb25zdHJhaW50IiBpbiA0cDIgYWJvdmUgaXMNCj4gcmVs ZXZhbnQgYmVjYXVzZSB3ZSBhbHNvIGhhdmU6DQo+IA0KPiA1LjEuMS4zIERpYWdub3N0aWNzDQo+ IA0KPiAxIEEgY29uZm9ybWluZyBpbXBsZW1lbnRhdGlvbiBzaGFsbCBwcm9kdWNlIGF0IGxlYXN0 IG9uZSBkaWFnbm9zdGljDQo+ICAgbWVzc2FnZSAoaWRlbnRpZmllZCBpbiBhbiBpbXBsZW1lbnRh dGlvbi1kZWZpbmVkIG1hbm5lcikgaWYgYQ0KPiAgIHByZXByb2Nlc3NpbmcgdHJhbnNsYXRpb24g dW5pdCBvciB0cmFuc2xhdGlvbiB1bml0IGNvbnRhaW5zIGENCj4gICB2aW9sYXRpb24gb2YgYW55 IHN5bnRheCBydWxlIG9yIGNvbnN0cmFpbnQsIGV2ZW4gaWYgdGhlIGJlaGF2aW9yIGlzDQo+ICAg YWxzbyBleHBsaWNpdGx5IHNwZWNpZmllZCBhcyB1bmRlZmluZWQgb3IgaW1wbGVtZW50YXRpb24t ZGVmaW5lZC4NCj4gICBbLi4uXQ0KPiANCj4gSU9XLCBpZiB3ZSBicmVhayBhICJzaGFsbCIgb3Ig InNoYWxsIG5vdCIgdGhhdCBpcyB1bmRlciBhIENvbnN0cmFpbnQsDQo+IHRoZW4gdGhlIGNvbXBp bGVyICptdXN0KiB5ZWxsIGF0IHVzOyBpdCBjYW5ub3QgYWxsb3cgdGhlIFVCIHRvIHNsaXAgb3Vy DQo+IGF0dGVudGlvbi4NCj4gDQo+ICkNCj4gDQo+ID4gQW55d2F5LCBnaXZlbiBMaW1pbmcncyBm ZWVkYmFjayB0aGF0IGl0IGlzIG9rIHRvIGFkZCB0aGUgdW5pb24sIEknbSBvaw0KPiA+IHdpdGgg dGhpcyBwYXRjaC4NCj4gDQo+IEZ1bm5pbHkgZW5vdWdoLCBpbiBwYXJhbGxlbCwgTWlrZSBoYXMg ZXhwcmVzc2VkIGEgcHJlZmVyZW5jZSBmb3IgdGhlDQo+IGJ5dGUtd2lzZSBhY2Nlc3MgcGx1cyB0 aGUgc2hpZnRpbmcgKHdpdGhvdXQgaGVscGVyIG1hY3JvcykgOikNCj4gDQo+IEkgZG9uJ3Qgc2Vl IHdoeSBMaW1pbmcgd291bGQgZGlzbGlrZSB0aGF0LCBhbmQgSSBnYXRoZXIgeW91IHRvbyB3b3Vs ZA0KPiBzdGlsbCBwcmVmZXIgdGhhdCB0byB0aGUgdW5pb24sIHNvIEknbSBnb2luZyB0byBpbmNv cnBvcmF0ZSBpdCBpbiB2Mi4NCj4gDQpJIGFtIE9LIGZvciBib3RoIHNvbHV0aW9uLiBJIGRvbid0 IHRoaW5rIHVuaW9uIGJyZWFrcyBzb21ldGhpbmcuIEkgYWdyZWUgYnl0ZSBhY2Nlc3Mgd2F5IGlz IHRoZSBjb25zaXN0ZW50IHNvbHV0aW9uIGluIHNlY3Rpb24gaGVhZGVyIGFuZCBmZnMgaGVhZGVy LiBTbywgSSBhbSBPSyBmb3IgdGhlbSBib3RoLg0KDQo+IFRoYW5rIHlvdSENCj4gTGFzemxvDQo+ IA0KPiA+IA0KPiA+DQoNCg==