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.126; helo=mga18.intel.com; envelope-from=liming.gao@intel.com; receiver=edk2-devel@lists.01.org Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) (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 D00B72118F78B for ; Fri, 30 Nov 2018 07:47:55 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 30 Nov 2018 07:47:54 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,299,1539673200"; d="scan'208";a="279341967" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by orsmga005.jf.intel.com with ESMTP; 30 Nov 2018 07:47:52 -0800 Received: from fmsmsx158.amr.corp.intel.com (10.18.116.75) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.408.0; Fri, 30 Nov 2018 07:47:32 -0800 Received: from shsmsx152.ccr.corp.intel.com (10.239.6.52) by fmsmsx158.amr.corp.intel.com (10.18.116.75) with Microsoft SMTP Server (TLS) id 14.3.408.0; Fri, 30 Nov 2018 07:47:32 -0800 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.203]) by SHSMSX152.ccr.corp.intel.com ([169.254.6.176]) with mapi id 14.03.0415.000; Fri, 30 Nov 2018 23:47:30 +0800 From: "Gao, Liming" To: Ard Biesheuvel CC: "edk2-devel@lists.01.org" , Laszlo Ersek , "Zhu, Yonghong" , "Feng, Bob C" Thread-Topic: [PATCH 1/6] BaseTools/CommonLib: avoid using 'native' word size in IP address handling Thread-Index: AQHUh998Ih91k0p+GEawE1FGmnf3VaVm22pw//97BoCAAIZwUP//ersAgAIggcA= Date: Fri, 30 Nov 2018 15:47:29 +0000 Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14E382570@SHSMSX104.ccr.corp.intel.com> References: <20181129123129.25095-1-ard.biesheuvel@linaro.org> <20181129123129.25095-2-ard.biesheuvel@linaro.org> <4A89E2EF3DFEDB4C8BFDE51014F606A14E380C03@SHSMSX104.ccr.corp.intel.com> <4A89E2EF3DFEDB4C8BFDE51014F606A14E380C35@SHSMSX104.ccr.corp.intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiYTk0YWEyZTctZDQxNi00NWZlLWJiMWYtODBhOWJkNDcyOTA2IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiRHJ4SCtcL3YzY04wN0huWm5telUzUnZlVnp5T3hSQnZYeUNUVEo5UGVJRmo2VUhnbXd0OEEyelE3cFczRXJLd0EifQ== 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: [PATCH 1/6] BaseTools/CommonLib: avoid using 'native' word size in IP address handling 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: Fri, 30 Nov 2018 15:47:57 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 QXJkOiANCiAgT0suIFdpbGwgeW91IHNlbmQgdjIgcGF0Y2ggdG8gZml4IHRoaXMgaXNzdWU/DQoN Cj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQXJkIEJpZXNoZXV2ZWwgW21h aWx0bzphcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnXQ0KPiBTZW50OiBUaHVyc2RheSwgTm92ZW1i ZXIgMjksIDIwMTggMTE6MTggUE0NCj4gVG86IEdhbywgTGltaW5nIDxsaW1pbmcuZ2FvQGludGVs LmNvbT4NCj4gQ2M6IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnOyBMYXN6bG8gRXJzZWsgPGxlcnNl a0ByZWRoYXQuY29tPjsgWmh1LCBZb25naG9uZyA8eW9uZ2hvbmcuemh1QGludGVsLmNvbT47IEZl bmcsIEJvYiBDDQo+IDxib2IuYy5mZW5nQGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6IFtQQVRD SCAxLzZdIEJhc2VUb29scy9Db21tb25MaWI6IGF2b2lkIHVzaW5nICduYXRpdmUnIHdvcmQgc2l6 ZSBpbiBJUCBhZGRyZXNzIGhhbmRsaW5nDQo+IA0KPiBPbiBUaHUsIDI5IE5vdiAyMDE4IGF0IDE2 OjE1LCBHYW8sIExpbWluZyA8bGltaW5nLmdhb0BpbnRlbC5jb20+IHdyb3RlOg0KPiA+DQo+ID4g RG8geW91IHZlcmlmeSB3aGljaCBHQ0MgYXJjaD8gMzJiaXQgb3IgNjRiaXQgb3IgQVJNPw0KPiA+ DQo+IA0KPiA2NC1iaXQgQVJNDQo+IA0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N Cj4gPiA+IEZyb206IEFyZCBCaWVzaGV1dmVsIFttYWlsdG86YXJkLmJpZXNoZXV2ZWxAbGluYXJv Lm9yZ10NCj4gPiA+IFNlbnQ6IFRodXJzZGF5LCBOb3ZlbWJlciAyOSwgMjAxOCAxMToxNCBQTQ0K PiA+ID4gVG86IEdhbywgTGltaW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbT4NCj4gPiA+IENjOiBl ZGsyLWRldmVsQGxpc3RzLjAxLm9yZzsgTGFzemxvIEVyc2VrIDxsZXJzZWtAcmVkaGF0LmNvbT47 IFpodSwgWW9uZ2hvbmcgPHlvbmdob25nLnpodUBpbnRlbC5jb20+OyBGZW5nLCBCb2IgQw0KPiA+ ID4gPGJvYi5jLmZlbmdAaW50ZWwuY29tPg0KPiA+ID4gU3ViamVjdDogUmU6IFtQQVRDSCAxLzZd IEJhc2VUb29scy9Db21tb25MaWI6IGF2b2lkIHVzaW5nICduYXRpdmUnIHdvcmQgc2l6ZSBpbiBJ UCBhZGRyZXNzIGhhbmRsaW5nDQo+ID4gPg0KPiA+ID4gT24gVGh1LCAyOSBOb3YgMjAxOCBhdCAx NjoxMSwgR2FvLCBMaW1pbmcgPGxpbWluZy5nYW9AaW50ZWwuY29tPiB3cm90ZToNCj4gPiA+ID4N Cj4gPiA+ID4gQXJkOg0KPiA+ID4gPiAgIEkgbWVhbiB0aGUgYnVpbGQgZXJyb3IuIEJlc2lkZXMs IHdoYXQgdGVzdCBoYXZlIHlvdSBkb25lIHdpdGggdGhpcyBwYXRjaCBzZXQ/DQo+ID4gPiA+DQo+ ID4gPiA+IENvbW1vbkxpYi5jKDE2NTEpOiBlcnJvciBDMjIyMDogd2FybmluZyB0cmVhdGVkIGFz IGVycm9yIC0gbm8gJ29iamVjdCcgZmlsZSBnZW5lcmF0ZWQNCj4gPiA+ID4gQ29tbW9uTGliLmMo MTY1MSk6IHdhcm5pbmcgQzQxMzM6ICdmdW5jdGlvbic6IGluY29tcGF0aWJsZSB0eXBlcyAtIGZy b20gJ1VJTlROIConIHRvICdVSU5UNjQgKicNCj4gPiA+ID4gTk1BS0UgOiBmYXRhbCBlcnJvciBV MTA3NzogJyJDOlxQcm9ncmFtIEZpbGVzICh4ODYpXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIDE0 LjBcVkNcQklOXGNsLmV4ZSInIDogcmV0dXJuIGNvZGUgJzB4MicNCj4gPiA+ID4NCj4gPiA+DQo+ ID4gPiBBcG9sb2dpZXMsIGkgbWlzc2VkIHRoaXMgY2hhbmdlIGF0IGxpbmUgMTYyNA0KPiA+ID4N Cj4gPiA+IC0gIFVJTlROICAgICAgICAgICAgICAgICAgVWludDY0Ow0KPiA+ID4gKyAgVUlOVDY0 ICAgICAgICAgICAgICAgICBVaW50NjQ7DQo+ID4gPg0KPiA+ID4gSXQgYnVpbGRzIGZpbmUgd2l0 aCBHQ0MgdGhvdWdoLg0KPiA+ID4NCj4gPiA+ID4gQmVsb3cgPiArICBVSU5UTiAgICAgICAgICAg ICAgICAgIFVpbnQ2NDsgPT0+ID4gKyAgVUlOVDY0ICAgICAgICAgICAgICAgICAgVWludDY0Ow0K PiA+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+ID4gRnJvbTogQXJk IEJpZXNoZXV2ZWwgW21haWx0bzphcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnXQ0KPiA+ID4gPiA+ IFNlbnQ6IFRodXJzZGF5LCBOb3ZlbWJlciAyOSwgMjAxOCA4OjMxIFBNDQo+ID4gPiA+ID4gVG86 IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnDQo+ID4gPiA+ID4gQ2M6IEFyZCBCaWVzaGV1dmVsIDxh cmQuYmllc2hldXZlbEBsaW5hcm8ub3JnPjsgTGFzemxvIEVyc2VrIDxsZXJzZWtAcmVkaGF0LmNv bT47IFpodSwgWW9uZ2hvbmcgPHlvbmdob25nLnpodUBpbnRlbC5jb20+Ow0KPiA+ID4gR2FvLA0K PiA+ID4gPiA+IExpbWluZyA8bGltaW5nLmdhb0BpbnRlbC5jb20+OyBGZW5nLCBCb2IgQyA8Ym9i LmMuZmVuZ0BpbnRlbC5jb20+DQo+ID4gPiA+ID4gU3ViamVjdDogW1BBVENIIDEvNl0gQmFzZVRv b2xzL0NvbW1vbkxpYjogYXZvaWQgdXNpbmcgJ25hdGl2ZScgd29yZCBzaXplIGluIElQIGFkZHJl c3MgaGFuZGxpbmcNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IEluIHRoZSBjb250ZXh0IG9mIHRoZSBC YXNlVG9vbHMsIHRoZXJlIGlzIG5vIHN1Y2ggdGhpbmcgYXMgYSBuYXRpdmUgd29yZA0KPiA+ID4g PiA+IHNpemUsIGdpdmVuIHRoYXQgdGhlIHNhbWUgc2V0IG9mIHRvb2xzIG1heSBiZSB1c2VkIHRv IGJ1aWxkIGEgZmlybXdhcmUNCj4gPiA+ID4gPiBpbWFnZSBjb25zaXN0aW5nIG9mIGJvdGggMzIt Yml0IGFuZCA2NC1iaXQgbW9kdWxlcy4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFNvIHVwZGF0ZSBT dHJUb0lwdjRBZGRyZXNzKCkgYW5kIFN0clRvSXB2NkFkZHJlc3MoKSB0byB1c2UgVUlOVDY0DQo+ ID4gPiA+ID4gdHlwZXMgaW5zdGVhZCBvZiBVSU5UTiB0eXBlcyB3aGVuIHBhcnNpbmcgc3RyaW5n cy4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IENvbnRyaWJ1dGVkLXVuZGVyOiBUaWFub0NvcmUgQ29u dHJpYnV0aW9uIEFncmVlbWVudCAxLjENCj4gPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBBcmQgQmll c2hldXZlbCA8YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZz4NCj4gPiA+ID4gPiAtLS0NCj4gPiA+ ID4gPiAgQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9Db21tb25MaWIuYyB8IDI4ICsrKysrKysr KystLS0tLS0tLS0tDQo+ID4gPiA+ID4gIDEgZmlsZSBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCsp LCAxNCBkZWxldGlvbnMoLSkNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9CYXNl VG9vbHMvU291cmNlL0MvQ29tbW9uL0NvbW1vbkxpYi5jIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0Nv bW1vbi9Db21tb25MaWIuYw0KPiA+ID4gPiA+IGluZGV4IDYxOGFhZGFjNzgxYS4uYmVhNmFmMGE0 NWIxIDEwMDY0NA0KPiA+ID4gPiA+IC0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvQy9Db21tb24vQ29t bW9uTGliLmMNCj4gPiA+ID4gPiArKysgYi9CYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL0NvbW1v bkxpYi5jDQo+ID4gPiA+ID4gQEAgLTE3ODUsNyArMTc4NSw3IEBAIFN0clRvSXB2NEFkZHJlc3Mg KA0KPiA+ID4gPiA+ICB7DQo+ID4gPiA+ID4gICAgUkVUVVJOX1NUQVRVUyAgICAgICAgICBTdGF0 dXM7DQo+ID4gPiA+ID4gICAgVUlOVE4gICAgICAgICAgICAgICAgICBBZGRyZXNzSW5kZXg7DQo+ ID4gPiA+ID4gLSAgVUlOVE4gICAgICAgICAgICAgICAgICBVaW50bjsNCj4gPiA+ID4gPiArICBV SU5UTiAgICAgICAgICAgICAgICAgIFVpbnQ2NDsNCj4gPiA+ID4gPiAgICBFRklfSVB2NF9BRERS RVNTICAgICAgIExvY2FsQWRkcmVzczsNCj4gPiA+ID4gPiAgICBVSU5UOCAgICAgICAgICAgICAg ICAgIExvY2FsUHJlZml4TGVuZ3RoOw0KPiA+ID4gPiA+ICAgIENIQVIxNiAgICAgICAgICAgICAg ICAgKlBvaW50ZXI7DQo+ID4gPiA+ID4gQEAgLTE4MTIsNyArMTgxMiw3IEBAIFN0clRvSXB2NEFk ZHJlc3MgKA0KPiA+ID4gPiA+ICAgICAgLy8NCj4gPiA+ID4gPiAgICAgIC8vIEdldCBEIG9yIFAu DQo+ID4gPiA+ID4gICAgICAvLw0KPiA+ID4gPiA+IC0gICAgU3RhdHVzID0gU3RyRGVjaW1hbFRv VWludG5TICgoQ09OU1QgQ0hBUjE2ICopIFBvaW50ZXIsICZQb2ludGVyLCAmVWludG4pOw0KPiA+ ID4gPiA+ICsgICAgU3RhdHVzID0gU3RyRGVjaW1hbFRvVWludDY0UyAoKENPTlNUIENIQVIxNiAq KSBQb2ludGVyLCAmUG9pbnRlciwgJlVpbnQ2NCk7DQo+ID4gPiA+ID4gICAgICBpZiAoUkVUVVJO X0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiA+ID4gICAgICAgIHJldHVybiBSRVRVUk5fVU5TVVBQ T1JURUQ7DQo+ID4gPiA+ID4gICAgICB9DQo+ID4gPiA+ID4gQEAgLTE4MjAsMTggKzE4MjAsMTgg QEAgU3RyVG9JcHY0QWRkcmVzcyAoDQo+ID4gPiA+ID4gICAgICAgIC8vDQo+ID4gPiA+ID4gICAg ICAgIC8vIEl0J3MgUC4NCj4gPiA+ID4gPiAgICAgICAgLy8NCj4gPiA+ID4gPiAtICAgICAgaWYg KFVpbnRuID4gMzIpIHsNCj4gPiA+ID4gPiArICAgICAgaWYgKFVpbnQ2NCA+IDMyKSB7DQo+ID4g PiA+ID4gICAgICAgICAgcmV0dXJuIFJFVFVSTl9VTlNVUFBPUlRFRDsNCj4gPiA+ID4gPiAgICAg ICAgfQ0KPiA+ID4gPiA+IC0gICAgICBMb2NhbFByZWZpeExlbmd0aCA9IChVSU5UOCkgVWludG47 DQo+ID4gPiA+ID4gKyAgICAgIExvY2FsUHJlZml4TGVuZ3RoID0gKFVJTlQ4KSBVaW50NjQ7DQo+ ID4gPiA+ID4gICAgICB9IGVsc2Ugew0KPiA+ID4gPiA+ICAgICAgICAvLw0KPiA+ID4gPiA+ICAg ICAgICAvLyBJdCdzIEQuDQo+ID4gPiA+ID4gICAgICAgIC8vDQo+ID4gPiA+ID4gLSAgICAgIGlm IChVaW50biA+IE1BWF9VSU5UOCkgew0KPiA+ID4gPiA+ICsgICAgICBpZiAoVWludDY0ID4gTUFY X1VJTlQ4KSB7DQo+ID4gPiA+ID4gICAgICAgICAgcmV0dXJuIFJFVFVSTl9VTlNVUFBPUlRFRDsN Cj4gPiA+ID4gPiAgICAgICAgfQ0KPiA+ID4gPiA+IC0gICAgICBMb2NhbEFkZHJlc3MuQWRkcltB ZGRyZXNzSW5kZXhdID0gKFVJTlQ4KSBVaW50bjsNCj4gPiA+ID4gPiArICAgICAgTG9jYWxBZGRy ZXNzLkFkZHJbQWRkcmVzc0luZGV4XSA9IChVSU5UOCkgVWludDY0Ow0KPiA+ID4gPiA+ICAgICAg ICBBZGRyZXNzSW5kZXgrKzsNCj4gPiA+ID4gPiAgICAgIH0NCj4gPiA+ID4gPg0KPiA+ID4gPiA+ IEBAIC0xODg4LDcgKzE4ODgsNyBAQCBTdHJUb0lwdjZBZGRyZXNzICgNCj4gPiA+ID4gPiAgew0K PiA+ID4gPiA+ICAgIFJFVFVSTl9TVEFUVVMgICAgICAgICAgU3RhdHVzOw0KPiA+ID4gPiA+ICAg IFVJTlROICAgICAgICAgICAgICAgICAgQWRkcmVzc0luZGV4Ow0KPiA+ID4gPiA+IC0gIFVJTlRO ICAgICAgICAgICAgICAgICAgVWludG47DQo+ID4gPiA+ID4gKyAgVUlOVDY0ICAgICAgICAgICAg ICAgICBVaW50NjQ7DQo+ID4gPiA+ID4gICAgRUZJX0lQdjZfQUREUkVTUyAgICAgICBMb2NhbEFk ZHJlc3M7DQo+ID4gPiA+ID4gICAgVUlOVDggICAgICAgICAgICAgICAgICBMb2NhbFByZWZpeExl bmd0aDsNCj4gPiA+ID4gPiAgICBDT05TVCBDSEFSMTYgICAgICAgICAgICpQb2ludGVyOw0KPiA+ ID4gPiA+IEBAIC0xOTY5LDcgKzE5NjksNyBAQCBTdHJUb0lwdjZBZGRyZXNzICgNCj4gPiA+ID4g PiAgICAgICAgICAvLw0KPiA+ID4gPiA+ICAgICAgICAgIC8vIEdldCBYLg0KPiA+ID4gPiA+ICAg ICAgICAgIC8vDQo+ID4gPiA+ID4gLSAgICAgICAgU3RhdHVzID0gU3RySGV4VG9VaW50blMgKFBv aW50ZXIsICZFbmQsICZVaW50bik7DQo+ID4gPiA+ID4gKyAgICAgICAgU3RhdHVzID0gU3RySGV4 VG9VaW50NjRTIChQb2ludGVyLCAmRW5kLCAmVWludDY0KTsNCj4gPiA+ID4gPiAgICAgICAgICBp ZiAoUkVUVVJOX0VSUk9SIChTdGF0dXMpIHx8IEVuZCAtIFBvaW50ZXIgPiA0KSB7DQo+ID4gPiA+ ID4gICAgICAgICAgICAvLw0KPiA+ID4gPiA+ICAgICAgICAgICAgLy8gTnVtYmVyIG9mIGhleGFk ZWNpbWFsIGRpZ2l0IGNoYXJhY3RlcnMgaXMgbm8gbW9yZSB0aGFuIDQuDQo+ID4gPiA+ID4gQEAg LTE5NzgsMjQgKzE5NzgsMjQgQEAgU3RyVG9JcHY2QWRkcmVzcyAoDQo+ID4gPiA+ID4gICAgICAg ICAgfQ0KPiA+ID4gPiA+ICAgICAgICAgIFBvaW50ZXIgPSBFbmQ7DQo+ID4gPiA+ID4gICAgICAg ICAgLy8NCj4gPiA+ID4gPiAtICAgICAgICAvLyBVaW50biB3b24ndCBleGNlZWQgTUFYX1VJTlQx NiBpZiBudW1iZXIgb2YgaGV4YWRlY2ltYWwgZGlnaXQgY2hhcmFjdGVycyBpcyBubyBtb3JlIHRo YW4gNC4NCj4gPiA+ID4gPiArICAgICAgICAvLyBVaW50NjQgd29uJ3QgZXhjZWVkIE1BWF9VSU5U MTYgaWYgbnVtYmVyIG9mIGhleGFkZWNpbWFsIGRpZ2l0IGNoYXJhY3RlcnMgaXMgbm8gbW9yZSB0 aGFuIDQuDQo+ID4gPiA+ID4gICAgICAgICAgLy8NCj4gPiA+ID4gPiAgICAgICAgICBBU1NFUlQg KEFkZHJlc3NJbmRleCArIDEgPCBBUlJBWV9TSVpFIChBZGRyZXNzLT5BZGRyKSk7DQo+ID4gPiA+ ID4gLSAgICAgICAgTG9jYWxBZGRyZXNzLkFkZHJbQWRkcmVzc0luZGV4XSA9IChVSU5UOCkgKChV SU5UMTYpIFVpbnRuID4+IDgpOw0KPiA+ID4gPiA+IC0gICAgICAgIExvY2FsQWRkcmVzcy5BZGRy W0FkZHJlc3NJbmRleCArIDFdID0gKFVJTlQ4KSBVaW50bjsNCj4gPiA+ID4gPiArICAgICAgICBM b2NhbEFkZHJlc3MuQWRkcltBZGRyZXNzSW5kZXhdID0gKFVJTlQ4KSAoKFVJTlQxNikgVWludDY0 ID4+IDgpOw0KPiA+ID4gPiA+ICsgICAgICAgIExvY2FsQWRkcmVzcy5BZGRyW0FkZHJlc3NJbmRl eCArIDFdID0gKFVJTlQ4KSBVaW50NjQ7DQo+ID4gPiA+ID4gICAgICAgICAgQWRkcmVzc0luZGV4 ICs9IDI7DQo+ID4gPiA+ID4gICAgICAgIH0gZWxzZSB7DQo+ID4gPiA+ID4gICAgICAgICAgLy8N Cj4gPiA+ID4gPiAgICAgICAgICAvLyBHZXQgUCwgdGhlbiBleGl0IHRoZSBsb29wLg0KPiA+ID4g PiA+ICAgICAgICAgIC8vDQo+ID4gPiA+ID4gLSAgICAgICAgU3RhdHVzID0gU3RyRGVjaW1hbFRv VWludG5TIChQb2ludGVyLCAmRW5kLCAmVWludG4pOw0KPiA+ID4gPiA+IC0gICAgICAgIGlmIChS RVRVUk5fRVJST1IgKFN0YXR1cykgfHwgRW5kID09IFBvaW50ZXIgfHwgVWludG4gPiAxMjgpIHsN Cj4gPiA+ID4gPiArICAgICAgICBTdGF0dXMgPSBTdHJEZWNpbWFsVG9VaW50NjRTIChQb2ludGVy LCAmRW5kLCAmVWludDY0KTsNCj4gPiA+ID4gPiArICAgICAgICBpZiAoUkVUVVJOX0VSUk9SIChT dGF0dXMpIHx8IEVuZCA9PSBQb2ludGVyIHx8IFVpbnQ2NCA+IDEyOCkgew0KPiA+ID4gPiA+ICAg ICAgICAgICAgLy8NCj4gPiA+ID4gPiAgICAgICAgICAgIC8vIFByZWZpeCBsZW5ndGggc2hvdWxk IG5vdCBleGNlZWQgMTI4Lg0KPiA+ID4gPiA+ICAgICAgICAgICAgLy8NCj4gPiA+ID4gPiAgICAg ICAgICAgIHJldHVybiBSRVRVUk5fVU5TVVBQT1JURUQ7DQo+ID4gPiA+ID4gICAgICAgICAgfQ0K PiA+ID4gPiA+IC0gICAgICAgIExvY2FsUHJlZml4TGVuZ3RoID0gKFVJTlQ4KSBVaW50bjsNCj4g PiA+ID4gPiArICAgICAgICBMb2NhbFByZWZpeExlbmd0aCA9IChVSU5UOCkgVWludDY0Ow0KPiA+ ID4gPiA+ICAgICAgICAgIFBvaW50ZXIgPSBFbmQ7DQo+ID4gPiA+ID4gICAgICAgICAgYnJlYWs7 DQo+ID4gPiA+ID4gICAgICAgIH0NCj4gPiA+ID4gPiAtLQ0KPiA+ID4gPiA+IDIuMTkuMQ0KPiA+ ID4gPg0K