From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 134.134.136.126, mailfrom: jian.j.wang@intel.com) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by groups.io with SMTP; Tue, 30 Apr 2019 03:47:23 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 30 Apr 2019 03:47:22 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.60,413,1549958400"; d="scan'208";a="295754276" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by orsmga004.jf.intel.com with ESMTP; 30 Apr 2019 03:47:22 -0700 Received: from fmsmsx116.amr.corp.intel.com (10.18.116.20) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.408.0; Tue, 30 Apr 2019 03:47:21 -0700 Received: from shsmsx104.ccr.corp.intel.com (10.239.4.70) by fmsmsx116.amr.corp.intel.com (10.18.116.20) with Microsoft SMTP Server (TLS) id 14.3.408.0; Tue, 30 Apr 2019 03:47:21 -0700 Received: from shsmsx107.ccr.corp.intel.com ([169.254.9.7]) by SHSMSX104.ccr.corp.intel.com ([169.254.5.33]) with mapi id 14.03.0415.000; Tue, 30 Apr 2019 18:47:19 +0800 From: "Wang, Jian J" To: "devel@edk2.groups.io" , "lersek@redhat.com" , "Lu, XiaoyuX" CC: "Ye, Ting" Subject: Re: [edk2-devel] [PATCH 3/3] CryptoPkg/BaseCryptLib: updata HMAC_ctx size Thread-Topic: [edk2-devel] [PATCH 3/3] CryptoPkg/BaseCryptLib: updata HMAC_ctx size Thread-Index: AQHU/mPfKCBpyRd39kqrXhMlrx57lKZS8JQAgADyfgCAABhkgIAAh6dg Date: Tue, 30 Apr 2019 10:47:19 +0000 Message-ID: References: <1556525727-14875-1-git-send-email-xiaoyux.lu@intel.com> <1556525727-14875-4-git-send-email-xiaoyux.lu@intel.com> <68d920c5-f8d0-b00a-39a3-9a58e9ede494@redhat.com> In-Reply-To: <68d920c5-f8d0-b00a-39a3-9a58e9ede494@redhat.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMWQ0ZTAxMDktNWIzNS00MGNlLThjZWYtMmUxNzdkOWRkY2M3IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiVEw3MkNuaE85NTV1V0tEb1BtSGRUc2hocFdxY3FabDFJWXZBQ3pNTDlySit4ZFRIVitZcCtzbWxtUkNjSlFySyJ9 x-ctpclassification: CTP_NT 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: jian.j.wang@intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 TGFzemxvLA0KDQpZZXMsIHdlIGhhdmUgaW50ZXJuYWwgcGxhdGZvcm1zIHVzaW5nIHRoZW0uIEkn bGwgZmlsZSBhIEJaIHRvIHJlbW92ZSB0aG9zZSBBUElzIGluIG5leHQNCnN0YWJsZSB0YWcuDQoN ClJlZ2FyZHMsDQpKaWFuDQoNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9t OiBkZXZlbEBlZGsyLmdyb3Vwcy5pbyBbbWFpbHRvOmRldmVsQGVkazIuZ3JvdXBzLmlvXSBPbiBC ZWhhbGYgT2YNCj4gTGFzemxvIEVyc2VrDQo+IFNlbnQ6IFR1ZXNkYXksIEFwcmlsIDMwLCAyMDE5 IDY6MjcgUE0NCj4gVG86IFdhbmcsIEppYW4gSiA8amlhbi5qLndhbmdAaW50ZWwuY29tPjsgZGV2 ZWxAZWRrMi5ncm91cHMuaW87IEx1LCBYaWFveXVYDQo+IDx4aWFveXV4Lmx1QGludGVsLmNvbT4N Cj4gQ2M6IFllLCBUaW5nIDx0aW5nLnllQGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6IFtlZGsy LWRldmVsXSBbUEFUQ0ggMy8zXSBDcnlwdG9Qa2cvQmFzZUNyeXB0TGliOiB1cGRhdGENCj4gSE1B Q19jdHggc2l6ZQ0KPiANCj4gT24gMDQvMzAvMTkgMDM6MTYsIFdhbmcsIEppYW4gSiB3cm90ZToN Cj4gPiBMYXN6bG8sDQo+ID4NCj4gPg0KPiA+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0K PiA+PiBGcm9tOiBMYXN6bG8gRXJzZWsgW21haWx0bzpsZXJzZWtAcmVkaGF0LmNvbV0NCj4gPj4g U2VudDogVHVlc2RheSwgQXByaWwgMzAsIDIwMTkgMjozMSBBTQ0KPiA+PiBUbzogZGV2ZWxAZWRr Mi5ncm91cHMuaW87IEx1LCBYaWFveXVYIDx4aWFveXV4Lmx1QGludGVsLmNvbT4NCj4gPj4gQ2M6 IFdhbmcsIEppYW4gSiA8amlhbi5qLndhbmdAaW50ZWwuY29tPjsgWWUsIFRpbmcgPHRpbmcueWVA aW50ZWwuY29tPg0KPiA+PiBTdWJqZWN0OiBSZTogW2VkazItZGV2ZWxdIFtQQVRDSCAzLzNdIENy eXB0b1BrZy9CYXNlQ3J5cHRMaWI6IHVwZGF0YQ0KPiA+PiBITUFDX2N0eCBzaXplDQo+ID4+DQo+ ID4+IE9uIDA0LzI5LzE5IDEwOjE1LCBYaWFveXUgbHUgd3JvdGU6DQo+ID4+PiBGcm9tOiBYaWFv eXUgTHUgPHhpYW95dXgubHVAaW50ZWwuY29tPg0KPiA+Pj4NCj4gPj4+IE9wZW5zc2wgaW50ZXJu YWxseSByZWRlZmluZXMgdGhlIHNpemUgb2YgSE1BQ19DVFgsDQo+ID4+PiBidXQgdGhlcmUgaXMg bm8gZXh0ZXJuYWwgZGVmaW5pdGlvbi4NCj4gPj4+IFNvIGFkZCBhbiBhZGRpdGlvbmFsIG51Ym1l ci4NCj4gPj4+DQo+ID4+PiBDYzogSmlhbiBKIFdhbmcgPGppYW4uai53YW5nQGludGVsLmNvbT4N Cj4gPj4+IENjOiBUaW5nIFllIDx0aW5nLnllQGludGVsLmNvbT4NCj4gPj4+IFNpZ25lZC1vZmYt Ynk6IFhpYW95dSBMdSA8eGlhb3l1eC5sdUBpbnRlbC5jb20+DQo+ID4+PiAtLS0NCj4gPj4+ICBD cnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvSG1hYy9DcnlwdEhtYWNNZDUuYyAgICB8IDEx DQo+ICsrKysrKysrKystDQo+ID4+PiAgQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0ht YWMvQ3J5cHRIbWFjU2hhMS5jICAgfCAxMg0KPiArKysrKysrKysrLS0NCj4gPj4+ICBDcnlwdG9Q a2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvSG1hYy9DcnlwdEhtYWNTaGEyNTYuYyB8IDEyDQo+ICsr KysrKysrKystDQo+ID4+IC0NCj4gPj4+ICAzIGZpbGVzIGNoYW5nZWQsIDMwIGluc2VydGlvbnMo KyksIDUgZGVsZXRpb25zKC0pDQo+ID4+Pg0KPiA+Pj4gZGlmZiAtLWdpdCBhL0NyeXB0b1BrZy9M aWJyYXJ5L0Jhc2VDcnlwdExpYi9IbWFjL0NyeXB0SG1hY01kNS5jDQo+ID4+IGIvQ3J5cHRvUGtn L0xpYnJhcnkvQmFzZUNyeXB0TGliL0htYWMvQ3J5cHRIbWFjTWQ1LmMNCj4gPj4+IGluZGV4IDMx MzQ4MDYuLjNmZmI4ZTIgMTAwNjQ0DQo+ID4+PiAtLS0gYS9DcnlwdG9Qa2cvTGlicmFyeS9CYXNl Q3J5cHRMaWIvSG1hYy9DcnlwdEhtYWNNZDUuYw0KPiA+Pj4gKysrIGIvQ3J5cHRvUGtnL0xpYnJh cnkvQmFzZUNyeXB0TGliL0htYWMvQ3J5cHRIbWFjTWQ1LmMNCj4gPj4+IEBAIC05LDggKzksMTcg QEAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPj4+ICAj aW5jbHVkZSAiSW50ZXJuYWxDcnlwdExpYi5oIg0KPiA+Pj4gICNpbmNsdWRlIDxvcGVuc3NsL2ht YWMuaD4NCj4gPj4+DQo+ID4+PiArLy8NCj4gPj4+ICsvLyBOT1RFOiBITUFDX01BWF9NRF9DQkxP Q0sgaXMgZGVwcmVjYXRlZC4NCj4gPj4+ICsvLyAgICAgICAjZGVmaW5lIEhNQUNfTUFYX01EX0NC TE9DSyAxMjgNCj4gPj4+ICsvLyAgICAgICBPcGVuc3NsIHJlZGVmaW5lcyB0aGUgc2l6ZSBvZiBI TUFDX0NUWCBhdCBjcnlwdG8vaG1hYy9obWFjX2xjbC5oDQo+ID4+PiArLy8gICAgICAgI2RlZmlu ZSBITUFDX01BWF9NRF9DQkxPQ0tfU0laRSAgICAgMTQ0DQo+ID4+PiArLy8gICAgICAgQnV0IHdl IG5lZWQgdG8gY29tcGF0aWJsZSB3aXRoIHByZXZpb3VzIEFQSS4NCj4gPj4+ICsvLyAgICAgICBT byBmaXggaXQgd2l0aCBjb3JyZWN0IHNpemUgMTQ0LTEyOCA9IDE2Lg0KPiA+Pj4gKy8vDQo+ID4+ PiAgI2RlZmluZSBITUFDX01ENV9DVFhfU0laRSAgICBzaXplb2Yodm9pZCAqKSAqIDQgKyBzaXpl b2YodW5zaWduZWQgaW50KSArIFwNCj4gPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNpemVvZih1bnNpZ25lZCBjaGFyKSAqIEhNQUNfTUFYX01EX0NCTE9DSw0KPiA+Pj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHVuc2lnbmVkIGNoYXIpICogKEhNQUNfTUFY X01EX0NCTE9DSyArIDE2KQ0KPiA+Pj4gKw0KPiA+Pj4NCj4gPj4+ICAvKioNCj4gPj4+ICAgIFJl dHJpZXZlcyB0aGUgc2l6ZSwgaW4gYnl0ZXMsIG9mIHRoZSBjb250ZXh0IGJ1ZmZlciByZXF1aXJl ZCBmb3IgSE1BQy1NRDUNCj4gPj4gb3BlcmF0aW9ucy4NCj4gPj4+IGRpZmYgLS1naXQgYS9Dcnlw dG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvSG1hYy9DcnlwdEhtYWNTaGExLmMNCj4gPj4gYi9D cnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvSG1hYy9DcnlwdEhtYWNTaGExLmMNCj4gPj4+ IGluZGV4IGJiZTNkZjQuLmU1OTYwMmUgMTAwNjQ0DQo+ID4+PiAtLS0gYS9DcnlwdG9Qa2cvTGli cmFyeS9CYXNlQ3J5cHRMaWIvSG1hYy9DcnlwdEhtYWNTaGExLmMNCj4gPj4+ICsrKyBiL0NyeXB0 b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9IbWFjL0NyeXB0SG1hY1NoYTEuYw0KPiA+Pj4gQEAg LTksOCArOSwxNiBAQCBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVu dA0KPiA+Pj4gICNpbmNsdWRlICJJbnRlcm5hbENyeXB0TGliLmgiDQo+ID4+PiAgI2luY2x1ZGUg PG9wZW5zc2wvaG1hYy5oPg0KPiA+Pj4NCj4gPj4+IC0jZGVmaW5lIEhNQUNfU0hBMV9DVFhfU0la RSAgIHNpemVvZih2b2lkICopICogNCArIHNpemVvZih1bnNpZ25lZCBpbnQpICsgXA0KPiA+Pj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHVuc2lnbmVkIGNoYXIpICogSE1B Q19NQVhfTURfQ0JMT0NLDQo+ID4+PiArLy8NCj4gPj4+ICsvLyBOT1RFOiBITUFDX01BWF9NRF9D QkxPQ0sgaXMgZGVwcmVjYXRlZC4NCj4gPj4+ICsvLyAgICAgICAjZGVmaW5lIEhNQUNfTUFYX01E X0NCTE9DSyAxMjgNCj4gPj4+ICsvLyAgICAgICBPcGVuc3NsIHJlZGVmaW5lcyB0aGUgc2l6ZSBv ZiBITUFDX0NUWCBhdCBjcnlwdG8vaG1hYy9obWFjX2xjbC5oDQo+ID4+PiArLy8gICAgICAgI2Rl ZmluZSBITUFDX01BWF9NRF9DQkxPQ0tfU0laRSAgICAgMTQ0DQo+ID4+PiArLy8gICAgICAgQnV0 IHdlIG5lZWQgdG8gY29tcGF0aWJsZSB3aXRoIHByZXZpb3VzIEFQSS4NCj4gPj4+ICsvLyAgICAg ICBTbyBmaXggaXQgd2l0aCBjb3JyZWN0IHNpemUgMTQ0LTEyOCA9IDE2Lg0KPiA+Pj4gKy8vDQo+ ID4+PiArI2RlZmluZSAgSE1BQ19TSEExX0NUWF9TSVpFICAgc2l6ZW9mKHZvaWQgKikgKiA0ICsg c2l6ZW9mKHVuc2lnbmVkIGludCkgKw0KPiBcDQo+ID4+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzaXplb2YodW5zaWduZWQgY2hhcikgKiAoSE1BQ19NQVhfTURfQ0JMT0NLICsgMTYp DQo+ID4+Pg0KPiA+Pj4gIC8qKg0KPiA+Pj4gICAgUmV0cmlldmVzIHRoZSBzaXplLCBpbiBieXRl cywgb2YgdGhlIGNvbnRleHQgYnVmZmVyIHJlcXVpcmVkIGZvciBITUFDLVNIQTENCj4gPj4gb3Bl cmF0aW9ucy4NCj4gPj4+IGRpZmYgLS1naXQgYS9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRM aWIvSG1hYy9DcnlwdEhtYWNTaGEyNTYuYw0KPiA+PiBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VD cnlwdExpYi9IbWFjL0NyeXB0SG1hY1NoYTI1Ni5jDQo+ID4+PiBpbmRleCBhYzkwODRmLi44ZDA1 NzBiIDEwMDY0NA0KPiA+Pj4gLS0tIGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0ht YWMvQ3J5cHRIbWFjU2hhMjU2LmMNCj4gPj4+ICsrKyBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VD cnlwdExpYi9IbWFjL0NyeXB0SG1hY1NoYTI1Ni5jDQo+ID4+PiBAQCAtOSw4ICs5LDE2IEBAIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4+PiAgI2luY2x1 ZGUgIkludGVybmFsQ3J5cHRMaWIuaCINCj4gPj4+ICAjaW5jbHVkZSA8b3BlbnNzbC9obWFjLmg+ DQo+ID4+Pg0KPiA+Pj4gLSNkZWZpbmUgSE1BQ19TSEEyNTZfQ1RYX1NJWkUgICBzaXplb2Yodm9p ZCAqKSAqIDQgKyBzaXplb2YodW5zaWduZWQgaW50KQ0KPiArIFwNCj4gPj4+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHVuc2lnbmVkIGNoYXIpICogSE1BQ19NQVhfTURf Q0JMT0NLDQo+ID4+PiArLy8NCj4gPj4+ICsvLyBOT1RFOiBITUFDX01BWF9NRF9DQkxPQ0sgaXMg ZGVwcmVjYXRlZC4NCj4gPj4+ICsvLyAgICAgICAjZGVmaW5lIEhNQUNfTUFYX01EX0NCTE9DSyAx MjgNCj4gPj4+ICsvLyAgICAgICBPcGVuc3NsIHJlZGVmaW5lcyB0aGUgc2l6ZSBvZiBITUFDX0NU WCBhdCBjcnlwdG8vaG1hYy9obWFjX2xjbC5oDQo+ID4+PiArLy8gICAgICAgI2RlZmluZSBITUFD X01BWF9NRF9DQkxPQ0tfU0laRSAgICAgMTQ0DQo+ID4+PiArLy8gICAgICAgQnV0IHdlIG5lZWQg dG8gY29tcGF0aWJsZSB3aXRoIHByZXZpb3VzIEFQSS4NCj4gPj4+ICsvLyAgICAgICBTbyBmaXgg aXQgd2l0aCBjb3JyZWN0IHNpemUgMTQ0LTEyOCA9IDE2Lg0KPiA+Pj4gKy8vDQo+ID4+PiArI2Rl ZmluZSBITUFDX1NIQTI1Nl9DVFhfU0laRSAgICBzaXplb2Yodm9pZCAqKSAqIDQgKyBzaXplb2Yo dW5zaWduZWQgaW50KQ0KPiArDQo+ID4+IFwNCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNpemVvZih1bnNpZ25lZCBjaGFyKSAqIChITUFDX01BWF9NRF9DQkxPQ0sgKyAxNikN Cj4gPj4+DQo+ID4+PiAgLyoqDQo+ID4+PiAgICBSZXRyaWV2ZXMgdGhlIHNpemUsIGluIGJ5dGVz LCBvZiB0aGUgY29udGV4dCBidWZmZXIgcmVxdWlyZWQgZm9yIEhNQUMtDQo+IFNIQTI1Ng0KPiA+ PiBvcGVyYXRpb25zLg0KPiA+Pj4NCj4gPj4NCj4gPj4gSSBiZWxpZXZlIEkgZGlzYWdyZWUgd2l0 aCB0aGlzIHBhdGNoLg0KPiA+Pg0KPiA+PiBUaGUgaXNzdWUgaXMgd2VsbCBkZXNjcmliZWQgaGVy ZToNCj4gPj4NCj4gPj4gICBodHRwczovL2dpdGh1Yi5jb20vb3BlbnNzbC9vcGVuc3NsL3B1bGwv NDMzOA0KPiA+Pg0KPiA+PiBBbmQgdGhlIHJlYWwgc29sdXRpb24sIGZvciBlZGsyLCBpcyBhcHBh cmVudGx5IGRlc2NyaWJlZCBpbiBlZGsyDQo+ID4+IGFscmVhZHk6DQo+ID4+DQo+ID4+IFtDcnlw dG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvSG1hYy9DcnlwdEhtYWNNZDUuY106DQo+ID4+DQo+ ID4+PiAvKioNCj4gPj4+ICAgUmV0cmlldmVzIHRoZSBzaXplLCBpbiBieXRlcywgb2YgdGhlIGNv bnRleHQgYnVmZmVyIHJlcXVpcmVkIGZvciBITUFDLU1ENQ0KPiA+PiBvcGVyYXRpb25zLg0KPiA+ Pj4gICAoTk9URTogVGhpcyBBUEkgaXMgZGVwcmVjYXRlZC4NCj4gPj4+ICAgICAgICAgIFVzZSBI bWFjTWQ1TmV3KCkgLyBIbWFjTWQ1RnJlZSgpIGZvciBITUFDLU1ENSBDb250ZXh0DQo+ID4+IG9w ZXJhdGlvbnMuKQ0KPiA+Pj4NCj4gPj4+ICAgQHJldHVybiAgVGhlIHNpemUsIGluIGJ5dGVzLCBv ZiB0aGUgY29udGV4dCBidWZmZXIgcmVxdWlyZWQgZm9yIEhNQUMtTUQ1DQo+ID4+IG9wZXJhdGlv bnMuDQo+ID4+Pg0KPiA+Pj4gKiovDQo+ID4+PiBVSU5UTg0KPiA+Pj4gRUZJQVBJDQo+ID4+PiBI bWFjTWQ1R2V0Q29udGV4dFNpemUgKA0KPiA+Pj4gICBWT0lEDQo+ID4+PiAgICkNCj4gPj4+IHsN Cj4gPj4+ICAgLy8NCj4gPj4+ICAgLy8gUmV0cmlldmVzIHRoZSBPcGVuU1NMIEhNQUMtTUQ1IENv bnRleHQgU2l6ZQ0KPiA+Pj4gICAvLyBOT1RFOiBITUFDX0NUWCBvYmplY3Qgd2FzIG1hZGUgb3Bh cXVlIGluIG9wZW5zc2wtMS4xLngsIGhlcmUgd2UNCj4ganVzdA0KPiA+PiB1c2UgdGhlDQo+ID4+ PiAgIC8vICAgICAgIGZpeGVkIHNpemUgYXMgYSB3b3JrYXJvdW5kIHRvIG1ha2UgdGhpcyBBUEkg d29yayBmb3IgY29tcGF0aWJpbGl0eS4NCj4gPj4+ICAgLy8gICAgICAgV2Ugc2hvdWxkIHJldGly ZSBIbWFjTWQ1R2V0Q29udGV4dFNpemUoKSBpbiBmdXR1cmUsIGFuZCB1c2UNCj4gPj4gSG1hY01k NU5ldygpDQo+ID4+PiAgIC8vICAgICAgIGFuZCBIbWFjTWQ1RnJlZSgpIGZvciBjb250ZXh0IGFs bG9jYXRpb24gYW5kIHJlbGVhc2UuDQo+ID4+PiAgIC8vDQo+ID4+PiAgIHJldHVybiAoVUlOVE4p IEhNQUNfTUQ1X0NUWF9TSVpFOw0KPiA+Pj4gfQ0KPiA+Pg0KPiA+PiBbQ3J5cHRvUGtnL0xpYnJh cnkvQmFzZUNyeXB0TGliL0htYWMvQ3J5cHRIbWFjU2hhMS5jXToNCj4gPj4NCj4gPj4+IC8qKg0K PiA+Pj4gICBSZXRyaWV2ZXMgdGhlIHNpemUsIGluIGJ5dGVzLCBvZiB0aGUgY29udGV4dCBidWZm ZXIgcmVxdWlyZWQgZm9yIEhNQUMtU0hBMQ0KPiA+PiBvcGVyYXRpb25zLg0KPiA+Pj4gICAoTk9U RTogVGhpcyBBUEkgaXMgZGVwcmVjYXRlZC4NCj4gPj4+ICAgICAgICAgIFVzZSBIbWFjU2hhMU5l dygpIC8gSG1hY1NoYTFGcmVlKCkgZm9yIEhNQUMtU0hBMSBDb250ZXh0DQo+ID4+IG9wZXJhdGlv bnMuKQ0KPiA+Pj4NCj4gPj4+ICAgQHJldHVybiAgVGhlIHNpemUsIGluIGJ5dGVzLCBvZiB0aGUg Y29udGV4dCBidWZmZXIgcmVxdWlyZWQgZm9yIEhNQUMtU0hBMQ0KPiA+PiBvcGVyYXRpb25zLg0K PiA+Pj4NCj4gPj4+ICoqLw0KPiA+Pj4gVUlOVE4NCj4gPj4+IEVGSUFQSQ0KPiA+Pj4gSG1hY1No YTFHZXRDb250ZXh0U2l6ZSAoDQo+ID4+PiAgIFZPSUQNCj4gPj4+ICAgKQ0KPiA+Pj4gew0KPiA+ Pj4gICAvLw0KPiA+Pj4gICAvLyBSZXRyaWV2ZXMgdGhlIE9wZW5TU0wgSE1BQy1TSEExIENvbnRl eHQgU2l6ZQ0KPiA+Pj4gICAvLyBOT1RFOiBITUFDX0NUWCBvYmplY3Qgd2FzIG1hZGUgb3BhcXVl IGluIG9wZW5zc2wtMS4xLngsIGhlcmUgd2UNCj4ganVzdA0KPiA+PiB1c2UgdGhlDQo+ID4+PiAg IC8vICAgICAgIGZpeGVkIHNpemUgYXMgYSB3b3JrYXJvdW5kIHRvIG1ha2UgdGhpcyBBUEkgd29y ayBmb3IgY29tcGF0aWJpbGl0eS4NCj4gPj4+ICAgLy8gICAgICAgV2Ugc2hvdWxkIHJldGlyZSBI bWFjU2hhMTVHZXRDb250ZXh0U2l6ZSgpIGluIGZ1dHVyZSwgYW5kIHVzZQ0KPiA+PiBIbWFjU2hh MU5ldygpDQo+ID4+PiAgIC8vICAgICAgIGFuZCBIbWFjU2hhMUZyZWUoKSBmb3IgY29udGV4dCBh bGxvY2F0aW9uIGFuZCByZWxlYXNlLg0KPiA+Pj4gICAvLw0KPiA+Pj4gICByZXR1cm4gKFVJTlRO KSBITUFDX1NIQTFfQ1RYX1NJWkU7DQo+ID4+PiB9DQo+ID4+DQo+ID4+IFtDcnlwdG9Qa2cvTGli cmFyeS9CYXNlQ3J5cHRMaWIvSG1hYy9DcnlwdEhtYWNTaGEyNTYuY106DQo+ID4+DQo+ID4+PiAv KioNCj4gPj4+ICAgUmV0cmlldmVzIHRoZSBzaXplLCBpbiBieXRlcywgb2YgdGhlIGNvbnRleHQg YnVmZmVyIHJlcXVpcmVkIGZvciBITUFDLQ0KPiBTSEEyNTYNCj4gPj4gb3BlcmF0aW9ucy4NCj4g Pj4+ICAgKE5PVEU6IFRoaXMgQVBJIGlzIGRlcHJlY2F0ZWQuDQo+ID4+PiAgICAgICAgICBVc2Ug SG1hY1NoYTI1Nk5ldygpIC8gSG1hY1NoYTI1NkZyZWUoKSBmb3IgSE1BQy1TSEEyNTYNCj4gQ29u dGV4dA0KPiA+PiBvcGVyYXRpb25zLikNCj4gPj4+DQo+ID4+PiAgIEByZXR1cm4gIFRoZSBzaXpl LCBpbiBieXRlcywgb2YgdGhlIGNvbnRleHQgYnVmZmVyIHJlcXVpcmVkIGZvciBITUFDLQ0KPiBT SEEyNTYNCj4gPj4gb3BlcmF0aW9ucy4NCj4gPj4+DQo+ID4+PiAqKi8NCj4gPj4+IFVJTlRODQo+ ID4+PiBFRklBUEkNCj4gPj4+IEhtYWNTaGEyNTZHZXRDb250ZXh0U2l6ZSAoDQo+ID4+PiAgIFZP SUQNCj4gPj4+ICAgKQ0KPiA+Pj4gew0KPiA+Pj4gICAvLw0KPiA+Pj4gICAvLyBSZXRyaWV2ZXMg dGhlIE9wZW5TU0wgSE1BQy1TSEEyNTYgQ29udGV4dCBTaXplDQo+ID4+PiAgIC8vIE5PVEU6IEhN QUNfQ1RYIG9iamVjdCB3YXMgbWFkZSBvcGFxdWUgaW4gb3BlbnNzbC0xLjEueCwgaGVyZSB3ZQ0K PiBqdXN0DQo+ID4+IHVzZSB0aGUNCj4gPj4+ICAgLy8gICAgICAgZml4ZWQgc2l6ZSBhcyBhIHdv cmthcm91bmQgdG8gbWFrZSB0aGlzIEFQSSB3b3JrIGZvciBjb21wYXRpYmlsaXR5Lg0KPiA+Pj4g ICAvLyAgICAgICBXZSBzaG91bGQgcmV0aXJlIEhtYWNTaGEyNTZHZXRDb250ZXh0U2l6ZSgpIGlu IGZ1dHVyZSwgYW5kIHVzZQ0KPiA+PiBIbWFjU2hhMjU2TmV3KCkNCj4gPj4+ICAgLy8gICAgICAg YW5kIEhtYWNTaGEyNTZGcmVlKCkgZm9yIGNvbnRleHQgYWxsb2NhdGlvbiBhbmQgcmVsZWFzZS4N Cj4gPj4+ICAgLy8NCj4gPj4+ICAgcmV0dXJuIChVSU5UTilITUFDX1NIQTI1Nl9DVFhfU0laRTsN Cj4gPj4+IH0NCj4gPj4NCj4gPj4gSXMgdGhlcmUgYW55IHJlYXNvbiB3aHkgd2UgY2FuJ3QgY2xl YW4gdXAgdGhpcyBjb2RlIGZpcnN0LCBpbiBhIHNlcGFyYXRlDQo+ID4+IHBhdGNoIHNlcmllcywg YmVmb3JlIG1vdmluZyB0byBPcGVuU1NMIDEuMS4xPw0KPiA+Pg0KPiA+PiBCZWNhdXNlLCB0aGUg Ik5PVEUicyBhcmUgbW9yZSB0aGFuIHR3byB5ZWFycyBvbGQgbm93Li4uIFRoZXkgY29tZSBmcm9t DQo+ID4+IGNvbW1pdCA0YzI3MDI0Mzk5NWEgKCJDcnlwdG9Qa2c6IFVwZGF0ZSBITUFDIFdyYXBw ZXIgd2l0aCBvcGFxdWUNCj4gPj4gSE1BQ19DVFggb2JqZWN0LiIsIDIwMTctMDMtMjkpLg0KPiA+ Pg0KPiA+PiBUaGlzIGhhcyBiZWVuIG91ciB0ZWNobmljYWwgZGVidCBldmVyIHNpbmNlLCB2aW9s YXRpbmcgdGhlIE9wZW5TU0wNCj4gPj4gZWZmb3J0IHRvIGhpZGUgaW1wbGVtZW50YXRpb24gZGV0 YWlscy4gSSB0aGluayB3ZSBzaG91bGQgZWxpbWluYXRlIHRoaXMNCj4gPj4gZGVidCwgcmF0aGVy IHRoYW4gbWFrZSBpdCB3b3JzZS4NCj4gPj4NCj4gPj4gKE9idmlvdXNseSB0aGlzIGlzIGp1c3Qg bXkgb3BpbmlvbiwgYW5kIEknbSBub3QgYSBDcnlwdG9Qa2cNCj4gPj4gY28tbWFpbnRhaW5lci4p DQo+ID4+DQo+ID4NCj4gPiBJIGFncmVlIHRoYXQgd2UgbmVlZCB0byBjbGVhbiB1cCB0aGUgZGVw cmVjYXRlZCBtYWNyb3MgYW5kIGFwaS4gVGhlIHByb2JsZW0NCj4gPiBpcyB0aGF0IFh4eEdldENv bnRleHRTaXplKCkgYXJlIHB1YmxpYyBBUElzIGFuZCB0aGVyZSdyZSBkb3plbnMgb2YgbW9kdWxl cw0KPiB3aGljaA0KPiA+IHN0aWxsIGNhbGwgdGhlbS4gVGhpcyBjYW4ndCBiZSBkb25lIGluIHNo b3J0IHRpbWUuIFdoYXQgYWJvdXQgd2UgZmlsZSBhIEJaIHRvDQo+IHRyYWNrDQo+ID4gdGhpcyBp c3N1ZSBhbmQgdGFyZ2V0IHRvIG5leHQgc3RhYmxlIHRhZz8NCj4gDQo+IEkgZG9uJ3Qgc2VlIGFu eSBjYWxscyB0byBlaXRoZXIgb2YgSG1hY01kNUdldENvbnRleHRTaXplLA0KPiBIbWFjU2hhMUdl dENvbnRleHRTaXplLCBhbmQgSG1hY1NoYTI1NkdldENvbnRleHRTaXplIGluIHRoZSBvcGVuIHNv dXJjZQ0KPiBlZGsyIHRyZWUuDQo+IA0KPiBEbyB5b3UgbWVhbiB0aG9zZSBkb3plbnMgb2YgY2Fs bHMgYXJlIGluIHRoZSBlZGsyLXBsYXRmb3JtcyBwcm9qZWN0LCBvcg0KPiBpbiBwcm9wcmlldGFy eSBwbGF0Zm9tcz8NCj4gDQo+IEkgZG8gc2VlIHRoYXQgdGhlIGNoYW5nZSBhZmZlY3RzIHRoZSA8 QmFzZUNyeXB0TGliLmg+IGxpYiBjbGFzcyBoZWFkZXIsDQo+IHNvIGl0IHNlZW1zIGp1c3RpZmll ZCB0byBwb3N0cG9uZSB0aGUgcmVhbCBmaXggdG8gdGhlIG5leHQgc3RhYmxlIHRhZy4NCj4gUGxl YXNlIGZpbGUgYSBCWiBmb3IgdGhpcy4NCj4gDQo+IFJlZ2FyZGluZyB0aGlzIHBhdGNoOg0KPiAN Cj4gKDEpIFRoZSBjb21taXQgbWVzc2FnZSBzaG91bGQgZXhwbGFpbiB0aGUgc2l0dWF0aW9uIGEg bG90IG1vcmUgY2xlYXJseS4NCj4gSXQgc2hvdWxkIHJlZmVyZW5jZSBib3RoDQo+IA0KPiAtIGh0 dHBzOi8vZ2l0aHViLmNvbS9vcGVuc3NsL29wZW5zc2wvcHVsbC80MzM4DQo+IA0KPiBhbmQNCj4g DQo+IC0gT3BlblNTTCBjb21taXQgZTA4MTBlMzUwMmJiICgiRml4IEhNQUMgU0hBMy0yMjQgYW5k IEhNQUMgU0hBMy0yNTYuIiwNCj4gMjAxOC0wOS0wNCkNCj4gDQo+ICgyKSBUaGUgY29tbWl0IG1l c3NhZ2Ugc2hvdWxkIGFsc28gcmVmZXJlbmNlIHRoZSBuZXcgVGlhbm9Db3JlIEJaIChhYm91dA0K PiByZW1vdmluZyB0aGVzZSBmdW5jdGlvbnMgZnJvbSB0aGUgbGliIGNsYXNzKS4NCj4gDQo+ICgz KSBUaGUgY29kZSBjb21tZW50cyBhcmUgY29uZnVzaW5nLCBhbmQgc2hvdWxkIGJlIGRlbGV0ZWQs IGluIG15DQo+IG9waW5pb24uIEEgZ29vZCBjb21taXQgbWVzc2FnZSB3aWxsIHN1ZmZpY2UuDQo+ IA0KPiBJbiBwYXJ0aWN1bGFyLCB0aGUgZm9sbG93aW5nIHBhcnQgb2YgdGhlIGNvbW1lbnQ6DQo+ IA0KPiAgICJ3ZSBuZWVkIHRvIGNvbXBhdGlibGUgd2l0aCBwcmV2aW91cyBBUEkiDQo+IA0KPiBp cyB2ZXJ5IGNvbmZ1c2luZywgYXMgaXQgZmlyc3QgbWFkZSBtZSB0aGluayB0aGF0IHdlIHNob3Vs ZCBzdGljayB3aXRoDQo+IHRoZSAqcHJldmlvdXMqIHZhbHVlLCBpLmUuIDEyOCwgZm9yIGNvbXBh dGliaWxpdHkgd2l0aCBjYWxsZXJzIG9mIHRoZXNlDQo+IGZ1bmN0aW9ucy4NCj4gDQo+ICg0KSBJ biB0aGUgcGF0Y2ggKD0gdGhlIG5ldyBjb2RlKSwgSE1BQ19NQVhfTURfQ0JMT0NLIHNob3VsZCBi ZQ0KPiBlbGltaW5hdGVkIGNvbXBsZXRlbHksIGFuZCB0aGUgc3VtIChITUFDX01BWF9NRF9DQkxP Q0sgKyAxNikgc2hvdWxkIGJlDQo+IHJlcGxhY2VkIHdpdGggdGhlIGNvbnN0YW50IDE0NC4NCj4g DQo+IFRoZSBmYWN0IHRoYXQgdGhlIG5ldyBjb250ZXh0IHNpemUgaXMgMTYgYnl0ZXMgbGFyZ2Vy IHRoYW4gd2hhdCBpdCB1c2VkDQo+IHRvIGJlIChkdWUgdG8gdGhlIGludHJvZHVjdGlvbiBvZiBT SEEzLTIyNCkgaXMgY2lyY3Vtc3RhbnRpYWwuIFRoZSBvbGQNCj4gdmFsdWUgKDEyOCkgaXMgaXJy ZWxldmFudCwgc28gd2Ugc2hvdWxkbid0IGV4cHJlc3MgdGhlIG5ldyB2YWx1ZQ0KPiByZWxhdGl2 ZSB0byB0aGUgb2xkIHZhbHVlLiBUaGUgbmV3IHNpemUgaXMgMTQ0IGJ5dGVzIGJlY2F1c2UgdGhl IG5ldw0KPiBzaXplIGlzIDE0NCBieXRlcy4NCj4gDQo+IFRoYW5rcw0KPiBMYXN6bG8NCj4gDQo+ IA0KDQo=