From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by dpdk.org (Postfix) with ESMTP id A3C281E2F; Tue, 16 Oct 2018 10:59:38 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 16 Oct 2018 01:59:37 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.54,388,1534834800"; d="scan'208";a="95609105" Received: from pgsmsx111.gar.corp.intel.com ([10.108.55.200]) by fmsmga002.fm.intel.com with ESMTP; 16 Oct 2018 01:59:35 -0700 Received: from pgsmsx103.gar.corp.intel.com ([169.254.2.13]) by PGSMSX111.gar.corp.intel.com ([169.254.2.202]) with mapi id 14.03.0319.002; Tue, 16 Oct 2018 16:59:34 +0800 From: "Zhao1, Wei" To: Ilya Maximets , "Zhang, Qi Z" , Laurent Hardy CC: "Lu, Wenzhuo" , "Ananyev, Konstantin" , "stable@dpdk.org" , "dev@dpdk.org" Thread-Topic: [dpdk-dev] [PATCH] net/ixgbe: fix busy polling while fiber link update Thread-Index: AQHUSRgNQX2uzJKLekeq5MEAlIUV2aTrsTgAgAAVKwCALe+P8P//y6IAgAH3Y5D//5ePgIAEw23Q///ZJwAAQvpdMA== Date: Tue, 16 Oct 2018 08:59:33 +0000 Message-ID: References: <20180831123824eucas1p1cd2981c716c4764703e24c3eeb4d33c7~P_GOOSRuf0867908679eucas1p1K@eucas1p1.samsung.com> <039ED4275CED7440929022BC67E706115327FA5E@SHSMSX103.ccr.corp.intel.com> <20180910150708eucas1p220c16857c4277b311ddc000b9337d9cb~TEk8KngQJ1365413654eucas1p2a@eucas1p2.samsung.com> <039ED4275CED7440929022BC67E7061153284304@SHSMSX103.ccr.corp.intel.com> <20180912080338eucas1p1bfdacb30aa969cd607ccf99f64d6bf80~TmFveK2Dy2157121571eucas1p1U@eucas1p1.samsung.com> <20181011102428eucas1p2fe26b12282d2b456ddc2cb96ad7552f0~cht-bhDPv2507925079eucas1p2L@eucas1p2.samsung.com> <20181012101219eucas1p15ec4079f2144dca8faac241f7b8d7e86~c1MrB5N3j3123931239eucas1p16@eucas1p1.samsung.com> <20181015083746eucas1p10736210af8e85e7e155e7289be855452~du19oFpAT1784617846eucas1p1V@eucas1p1.samsung.com> In-Reply-To: <20181015083746eucas1p10736210af8e85e7e155e7289be855452~du19oFpAT1784617846eucas1p1V@eucas1p1.samsung.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-originating-ip: [172.30.20.206] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH] net/ixgbe: fix busy polling while fiber link update X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Oct 2018 08:59:39 -0000 SGksIElseWEgTWF4aW1ldHMNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9t OiBJbHlhIE1heGltZXRzIFttYWlsdG86aS5tYXhpbWV0c0BzYW1zdW5nLmNvbV0NCj4gU2VudDog TW9uZGF5LCBPY3RvYmVyIDE1LCAyMDE4IDQ6NDAgUE0NCj4gVG86IFpoYW8xLCBXZWkgPHdlaS56 aGFvMUBpbnRlbC5jb20+OyBaaGFuZywgUWkgWiA8cWkuei56aGFuZ0BpbnRlbC5jb20+Ow0KPiBM YXVyZW50IEhhcmR5IDxsYXVyZW50LmhhcmR5QDZ3aW5kLmNvbT4NCj4gQ2M6IEx1LCBXZW56aHVv IDx3ZW56aHVvLmx1QGludGVsLmNvbT47IEFuYW55ZXYsIEtvbnN0YW50aW4NCj4gPGtvbnN0YW50 aW4uYW5hbnlldkBpbnRlbC5jb20+OyBzdGFibGVAZHBkay5vcmc7IGRldkBkcGRrLm9yZw0KPiBT dWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0hdIG5ldC9peGdiZTogZml4IGJ1c3kgcG9sbGlu ZyB3aGlsZSBmaWJlciBsaW5rDQo+IHVwZGF0ZQ0KPiANCj4gT24gMTUuMTAuMjAxOCAwNjowMywg WmhhbzEsIFdlaSB3cm90ZToNCj4gPiBIae+8jCBJbHlhIE1heGltZXRzDQo+ID4NCj4gPj4gLS0t LS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4gRnJvbTogSWx5YSBNYXhpbWV0cyBbbWFpbHRv OmkubWF4aW1ldHNAc2Ftc3VuZy5jb21dDQo+ID4+IFNlbnQ6IEZyaWRheSwgT2N0b2JlciAxMiwg MjAxOCA2OjE1IFBNDQo+ID4+IFRvOiBaaGFvMSwgV2VpIDx3ZWkuemhhbzFAaW50ZWwuY29tPjsg WmhhbmcsIFFpIFoNCj4gPj4gPHFpLnouemhhbmdAaW50ZWwuY29tPjsgTGF1cmVudCBIYXJkeSA8 bGF1cmVudC5oYXJkeUA2d2luZC5jb20+DQo+ID4+IENjOiBMdSwgV2Vuemh1byA8d2Vuemh1by5s dUBpbnRlbC5jb20+OyBBbmFueWV2LCBLb25zdGFudGluDQo+ID4+IDxrb25zdGFudGluLmFuYW55 ZXZAaW50ZWwuY29tPjsgc3RhYmxlQGRwZGsub3JnOyBkZXZAZHBkay5vcmcNCj4gPj4gU3ViamVj dDogUmU6IFtkcGRrLWRldl0gW1BBVENIXSBuZXQvaXhnYmU6IGZpeCBidXN5IHBvbGxpbmcgd2hp bGUNCj4gPj4gZmliZXIgbGluayB1cGRhdGUNCj4gPj4NCj4gPj4gT24gMTIuMTAuMjAxOCAxMjox OSwgWmhhbzEsIFdlaSB3cm90ZToNCj4gPj4+IEhp77yMDQo+ID4+Pg0KPiA+Pj4+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+Pj4gRnJvbTogSWx5YSBNYXhpbWV0cyBbbWFpbHRvOmku bWF4aW1ldHNAc2Ftc3VuZy5jb21dDQo+ID4+Pj4gU2VudDogVGh1cnNkYXksIE9jdG9iZXIgMTEs IDIwMTggNjoyNyBQTQ0KPiA+Pj4+IFRvOiBaaGFvMSwgV2VpIDx3ZWkuemhhbzFAaW50ZWwuY29t PjsgWmhhbmcsIFFpIFoNCj4gPj4+PiA8cWkuei56aGFuZ0BpbnRlbC5jb20+OyBMYXVyZW50IEhh cmR5IDxsYXVyZW50LmhhcmR5QDZ3aW5kLmNvbT4NCj4gPj4+PiBDYzogTHUsIFdlbnpodW8gPHdl bnpodW8ubHVAaW50ZWwuY29tPjsgQW5hbnlldiwgS29uc3RhbnRpbg0KPiA+Pj4+IDxrb25zdGFu dGluLmFuYW55ZXZAaW50ZWwuY29tPjsgc3RhYmxlQGRwZGsub3JnOyBkZXZAZHBkay5vcmcNCj4g Pj4+PiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0hdIG5ldC9peGdiZTogZml4IGJ1c3kg cG9sbGluZyB3aGlsZQ0KPiA+Pj4+IGZpYmVyIGxpbmsgdXBkYXRlDQo+ID4+Pj4NCj4gPj4+PiBP biAxMS4xMC4yMDE4IDEyOjU2LCBaaGFvMSwgV2VpIHdyb3RlOg0KPiA+Pj4+PiBIaSwgIElseWEg TWF4aW1ldHMgQU5EIGxhdXJlbnQuaGFyZHkNCj4gPj4+Pg0KPiA+Pj4+IEhpLCB0aGFua3MgZm9y IHNoYXJpbmcgeW91ciB0aG91Z2h0cy4NCj4gPj4+PiBDb21tZW50cyBpbmxpbmUuDQo+ID4+Pj4N Cj4gPj4+Pj4NCj4gPj4+Pj4NCj4gPj4+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ ID4+Pj4+PiBGcm9tOiBkZXYgW21haWx0bzpkZXYtYm91bmNlc0BkcGRrLm9yZ10gT24gQmVoYWxm IE9mIElseWENCj4gPj4+Pj4+IE1heGltZXRzDQo+ID4+Pj4+PiBTZW50OiBXZWRuZXNkYXksIFNl cHRlbWJlciAxMiwgMjAxOCA0OjA1IFBNDQo+ID4+Pj4+PiBUbzogWmhhbmcsIFFpIFogPHFpLnou emhhbmdAaW50ZWwuY29tPjsgZGV2QGRwZGsub3JnDQo+ID4+Pj4+PiBDYzogTHUsIFdlbnpodW8g PHdlbnpodW8ubHVAaW50ZWwuY29tPjsgQW5hbnlldiwgS29uc3RhbnRpbg0KPiA+Pj4+Pj4gPGtv bnN0YW50aW4uYW5hbnlldkBpbnRlbC5jb20+OyBMYXVyZW50IEhhcmR5DQo+ID4+Pj4+PiA8bGF1 cmVudC5oYXJkeUA2d2luZC5jb20+OyBEYWksIFdlaSA8d2VpLmRhaUBpbnRlbC5jb20+Ow0KPiA+ Pj4+Pj4gc3RhYmxlQGRwZGsub3JnDQo+ID4+Pj4+PiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBb UEFUQ0hdIG5ldC9peGdiZTogZml4IGJ1c3kgcG9sbGluZyB3aGlsZQ0KPiA+Pj4+Pj4gZmliZXIg bGluayB1cGRhdGUNCj4gPj4+Pj4+DQo+ID4+Pj4+PiBPbiAxMi4wOS4yMDE4IDA5OjQ5LCBaaGFu ZywgUWkgWiB3cm90ZToNCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+Pj4+Pj4+IEZyb206IElseWEgTWF4aW1ldHMgW21haWx0 bzppLm1heGltZXRzQHNhbXN1bmcuY29tXQ0KPiA+Pj4+Pj4+PiBTZW50OiBNb25kYXksIFNlcHRl bWJlciAxMCwgMjAxOCAxMTowOSBQTQ0KPiA+Pj4+Pj4+PiBUbzogWmhhbmcsIFFpIFogPHFpLnou emhhbmdAaW50ZWwuY29tPjsgZGV2QGRwZGsub3JnDQo+ID4+Pj4+Pj4+IENjOiBMdSwgV2Vuemh1 byA8d2Vuemh1by5sdUBpbnRlbC5jb20+OyBBbmFueWV2LCBLb25zdGFudGluDQo+ID4+Pj4+Pj4+ IDxrb25zdGFudGluLmFuYW55ZXZAaW50ZWwuY29tPjsgTGF1cmVudCBIYXJkeQ0KPiA+Pj4+Pj4+ PiA8bGF1cmVudC5oYXJkeUA2d2luZC5jb20+OyBEYWksIFdlaSA8d2VpLmRhaUBpbnRlbC5jb20+ Ow0KPiA+Pj4+Pj4+PiBzdGFibGVAZHBkay5vcmcNCj4gPj4+Pj4+Pj4gU3ViamVjdDogUmU6IFtk cGRrLWRldl0gW1BBVENIXSBuZXQvaXhnYmU6IGZpeCBidXN5IHBvbGxpbmcNCj4gPj4+Pj4+Pj4g d2hpbGUgZmliZXIgbGluayB1cGRhdGUNCj4gPj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4gT24gMDQuMDku MjAxOCAwOTowOCwgWmhhbmcsIFFpIFogd3JvdGU6DQo+ID4+Pj4+Pj4+PiBIaSBJbHlhOg0KPiA+ Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+Pj4+ Pj4+Pj4+IEZyb206IGRldiBbbWFpbHRvOmRldi1ib3VuY2VzQGRwZGsub3JnXSBPbiBCZWhhbGYg T2YgSWx5YQ0KPiA+Pj4+Pj4+Pj4+IE1heGltZXRzDQo+ID4+Pj4+Pj4+Pj4gU2VudDogRnJpZGF5 LCBBdWd1c3QgMzEsIDIwMTggODo0MCBQTQ0KPiA+Pj4+Pj4+Pj4+IFRvOiBkZXZAZHBkay5vcmcN Cj4gPj4+Pj4+Pj4+PiBDYzogTHUsIFdlbnpodW8gPHdlbnpodW8ubHVAaW50ZWwuY29tPjsgQW5h bnlldiwNCj4gS29uc3RhbnRpbg0KPiA+Pj4+Pj4+Pj4+IDxrb25zdGFudGluLmFuYW55ZXZAaW50 ZWwuY29tPjsgTGF1cmVudCBIYXJkeQ0KPiA+Pj4+Pj4+Pj4+IDxsYXVyZW50LmhhcmR5QDZ3aW5k LmNvbT47IERhaSwgV2VpIDx3ZWkuZGFpQGludGVsLmNvbT47DQo+IElseWENCj4gPj4+Pj4+Pj4+ PiBNYXhpbWV0cyA8aS5tYXhpbWV0c0BzYW1zdW5nLmNvbT47IHN0YWJsZUBkcGRrLm9yZw0KPiA+ Pj4+Pj4+Pj4+IFN1YmplY3Q6IFtkcGRrLWRldl0gW1BBVENIXSBuZXQvaXhnYmU6IGZpeCBidXN5 IHBvbGxpbmcgd2hpbGUNCj4gPj4+Pj4+Pj4+PiBmaWJlciBsaW5rIHVwZGF0ZQ0KPiA+Pj4+Pj4+ Pj4+DQo+ID4+Pj4+Pj4+Pj4gSWYgdGhlIG11bHRpc3BlZWQgZmliZXIgbGluayBpcyBpbiBET1dO IHN0YXRlLA0KPiA+Pj4+Pj4+Pj4+IGl4Z2JlX3NldHVwX2xpbmsgY291bGQgdGFrZSBhcm91bmQg YSBzZWNvbmQgb2YgYnVzeSBwb2xsaW5nLg0KPiA+Pj4+Pj4+Pj4+IFRoaXMgaXMgaGlnaGx5IGlu Y29udmVuaWVudCBmb3IgdGhlIGNhc2Ugd2hlcmUgc2luZ2xlIHRocmVhZA0KPiA+Pj4+Pj4+Pj4+ IHBlcmlvZGljYWxseSBjaGVja3MgdGhlDQo+ID4+Pj4+PiBsaW5rIHN0YXR1c2VzLg0KPiA+Pj4+ Pj4+Pj4+IEZvciBleGFtcGxlLCBPVlMgbWFpbiB0aHJlYWQgcGVyaW9kaWNhbGx5IHVwZGF0ZXMg dGhlIGxpbmsNCj4gPj4+Pj4+Pj4+PiBzdGF0dXNlcyBhbmQgaGFuZ3MgZm9yIGEgcmVhbGx5IGxv bmcgdGltZSBidXN5IHdhaXRpbmcgb24NCj4gPj4+Pj4+Pj4+PiBpeGdiZV9zZXR1cF9saW5rKCkg Zm9yIGEgRE9XTiBmaWJlciBwb3J0cy4gRm9yIGNhc2Ugd2l0aCAzDQo+ID4+Pj4+Pj4+Pj4gZG93 biBwb3J0cyBpdCBoYW5ncyBmb3IgYSAzIHNlY29uZHMgYW5kIHVuYWJsZSB0byBkbyBhbnl0aGlu Zw0KPiA+Pj4+Pj4+Pj4+IGluY2x1ZGluZw0KPiA+Pj4+IHBhY2tldCBwcm9jZXNzaW5nLg0KPiA+ Pj4+Pj4+Pj4+IEZpeCB0aGF0IGJ5IHNoaWZ0aW5nIHRoYXQgd29ya2Fyb3VuZCB0byBhIHNlcGFy YXRlIHRocmVhZCBieQ0KPiA+Pj4+Pj4+Pj4+IGFsYXJtIGhhbmRsZXIgdGhhdCB3aWxsIHRyeSB0 byBzZXQgdXAgbGluayBpZiBpdCBpcyBET1dOLg0KPiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+IERv ZXMgdGhhdCBtZWFuIHdlIHdpbGwgYmxvY2sgdGhlIGludGVycnVwdCB0aHJlYWQgZm9yIDMgc2Vj b25kcz8NCj4gPj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4gVGhyZWUgdGltZXMgZm9yIG9uZSBzZWNvbmQu IE90aGVyIHdvcmsgY291bGQgYmUgc2NoZWR1bGVkDQo+ID4+IGJldHdlZW4uDQo+ID4+Pj4+Pj4+ IElNSE8sIGl0J3MgbXVjaCBiZXR0ZXIgdGhhbiBibG9ja2luZyB1c3VhbCBjYWxsZXIgZm9yIDMg c2Vjb25kcy4NCj4gPj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+IEFsc28sIGNhbiB3ZSBndWFyYW50ZWUg dGhlcmUgd2lsbCBub3QgYmUgYW55IHJhY2UgY29uZGl0aW9uIGlmDQo+ID4+Pj4+Pj4+PiB3ZSBj YWxsDQo+ID4+Pj4+Pj4+IGl4Z2JlX3NldHVwX2xpbmsgYXQgYW5vdGhlciB0aHJlYWQsIHRoZSBi YXNlIGNvZGUgQVBJIGlzIG5vdA0KPiA+Pj4+Pj4+PiBhc3N1bWVkIHRvIGJlIHRocmVhZC1zYWZl IGFzIEkga25vdy4NCj4gPj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4gVGhlIG9ubHkgdXNlciBvZiAnaXhn YmVfc2V0dXBfbGluaycgaXMgJ2l4Z2JlX2Rldl9zdGFydCcsIGJ1dA0KPiA+Pj4+Pj4+PiBpdCBj b3VsZCBiZSBjYWxsZWQgb25seSBpZiBkZXZpY2Ugc3RvcHBlZC4gJ2l4Z2JlX2Rldl9zdG9wJw0K PiA+Pj4+Pj4+PiBjYW5jZWxzIHRoZQ0KPiA+Pj4+IGFsYXJtLg0KPiA+Pj4+Pj4+PiBSYWNlIHdp dGggJ2xpbmtfdXBkYXRlJyBhdm9pZGVkIGJ5DQo+ID4+ICdJWEdCRV9GTEFHX05FRURfTElOS19D T05GSUcnDQo+ID4+Pj4+PiBmbGFnLg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gSSBndWVzcywgaXQn IG5vdCBvbmx5IGFib3V0IHdoZW4gaXhnYl9zZXR1cF9saW5rIHJhY2Ugd2l0aA0KPiA+Pj4+Pj4+ IGl0c2VsZiwgYnV0IGFsc28NCj4gPj4+Pj4+IHdoZW4gaXQgcmFjZSB3aXRoIG90aGVyIEFQSXMu DQo+ID4+Pj4+Pj4gQWxzbyB0aGUgY29uY2VybiBpcywgZXZlbiBpbiBjdXJyZW50IHZlcnNpb24s IHdlIGNhbiBwcm92ZSB0aGVyZQ0KPiA+Pj4+Pj4+IGlzIG5vIGlzc3VlLA0KPiA+Pj4+Pj4gaG93 IGNhbiB3ZSBndWFyYW50ZWUgd2UgYXJlIHNhZmUgZm9yIGZ1dHVyZSBiYXNlIGNvZGUgdXBkYXRl Pw0KPiA+Pj4+Pj4gSXQncyBub3QgZGVzaWduZWQgYXMgdGhyZWFkLXNhZmUuDQo+ID4+Pj4+Pj4g Rm9yIG15IG9wdGlvbiwgdGhlIGNoYW5nZSBpcyByaXNreS4NCj4gPj4+Pj4+DQo+ID4+Pj4+PiBJ biBjdXJyZW50IGltcGxlbWVudGF0aW9uIGludGVycnVwdCBoYW5kbGVyIGFscmVhZHkgY2FsbHMg dGhlDQo+ID4+Pj4+PiAnaXhnYmVfZGV2X2xpbmtfdXBkYXRlJyB3aGljaCBzdWJzZXF1ZW50bHkg Y2FsbHMgJ2l4Z2JlX3NldHVwX2xpbmsnDQo+ID4+Pj4+PiBpbiBvdXIgY2FzZSBpZiBMU0MgaW50 ZXJydXB0cyBlbmFibGVkLiBTbywgbXkgY2hhbmdlIG1ha2VzIHRoZQ0KPiA+Pj4+Pj4gZHJpdmVy IGV2ZW4gc2FmZXIgYnkgbW92aW5nICdpeGdiZV9zZXR1cF9saW5rJyB0byB0aGUgc2FtZQ0KPiA+ Pj4+Pj4gaW50ZXJydXB0DQo+ID4+IHRocmVhZC4NCj4gPj4+Pj4+IE90aGVyd2lzZSB0d28gdGhy ZWFkcyAoaW50ZXJydXB0cyBoYW5kbGVyIGFuZCB0aGUgbGluayBzdGF0dXMNCj4gPj4+Pj4+IGNo ZWNraW5nDQo+ID4+Pj4+PiB0aHJlYWQpIGNvdWxkIGNhbGwgJ2l4Z2JlX3NldHVwX2xpbmsnIHNp bXVsdGFuZW91c2x5Lg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+IEJ0dywgc2luY2Ug aXhnYmUgc3VwcG9ydCBMU0MsIGl0IGlzIG5vdCBuZWNlc3NhcnkgZm9yICJzaW5nbGUNCj4gPj4+ Pj4+PiB0aHJlYWQNCj4gPj4+Pj4+IHBlcmlvZGljYWxseSBjaGVja3MgdGhlIGxpbmsgc3RhdHVz ZXMiLCByaWdodD8NCj4gPj4+Pj4+DQo+ID4+Pj4+PiBJbiBjdXJyZW50IGltcGxlbWVudGF0aW9u IGl0IHdpbGwgdGFrZSBhdCBsZWFzdCA1IHNlY29uZHMgKDQgKyAxKQ0KPiA+Pj4+Pj4gZm9yIHRo ZSBpbnRlcnJ1cHQgaGFuZGxlciB0byBkZXRlY3QgRE9XTiBsaW5rIHN0YXRlIGZvciBpeGdiZQ0K PiA+Pj4+Pj4gbXVsdGlzcGVlZCBmaWJlci4gVGhpcyBpcyB0b28gbXVjaCBmb3IgbWFueSByZWFs IHdvcmxkIGNhc2VzLg0KPiA+Pj4+Pg0KPiA+Pj4+PiBJIGhhdmUgcmV2aWV3ZWQgIHRoaXMgcGF0 Y2gsIG5vdyBJIGFncmVlIHdpdGggeW91IG9mIHRoZSBwb2ludA0KPiA+Pj4+PiB0aGF0IHdoZW4g cG9ydCBpcyBkb3duLCAiIG1haW4gdGhyZWFkIHBlcmlvZGljYWxseSB1cGRhdGVzIHRoZQ0KPiA+ Pj4+PiBsaW5rIHN0YXR1c2VzIGFuZA0KPiA+Pj4+IGhhbmdzIGZvciBhIHJlYWxseSBsb25nIHRp bWUgYnVzeSB3YWl0aW5nIG9uIGl4Z2JlX3NldHVwX2xpbmsoKSBmb3INCj4gPj4+PiBhIERPV04g ZmliZXIgcG9ydHMgIi4NCj4gPj4+Pj4gVGhpcyBpcyBpbnRyb2R1Y2VkIGJ5IGEgcGF0Y2ggaW4g dGhlIGZvbGxvd2luZzoNCj4gPj4+Pj4gU0hBLTE6IGMxMmQyMmY2NWIxMzJjNTZkYjdiNGZkYmZk NWRkY2UyN2QxZTk1NzINCj4gPj4+Pj4gKiBuZXQvaXhnYmU6IGVuc3VyZSBsaW5rIHN0YXR1cyBp cyB1cGRhdGVkDQo+ID4+Pj4+DQo+ID4+Pj4+IEJlY2F1c2UgaW4gdGhpcyBwYXRjaCwgaXhnYmVf c2V0dXBfbGluaygpIGlzIGNhbGxlZCB3aXRoIGlucHV0DQo+ID4+Pj4+IHBhcmFtZXRlcg0KPiA+ Pj4+IGF1dG9uZWdfd2FpdF90b19jb21wbGV0ZT0xLCB0aGlzIHdpbGwgY2F1c2UgbG9vcCBjaGVj ayBhbmQgc2xlZXANCj4gZGVsYXkuDQo+ID4+Pj4+IEF0IGxlYXN0IDgyNTk5IHNlZW1zIGhhcyB0 aGlzIGRlbGF5LihCVFcsIHdoaXZoIHR5cGUgb2YgTklDIGFyZQ0KPiA+Pj4+PiB5b3UgdXNlPyBY NTUwIG9yIDgyNTk5KQ0KPiA+Pj4+DQo+ID4+Pj4gSSBoYXZlIDgyNTk5Lg0KPiA+Pj4+DQo+ID4+ Pj4+IFlvdXIgc29sdXRpb24gaXMgYWRkIGEgZWFsX2FsYXJtX3NldCBmb3IgaXhnYmVfc2V0dXBf bGluayBpbiB0aGUNCj4gPj4+Pj4gdGhyZWFkIG9mDQo+ID4+Pj4gUE1EIGRyaXZlciwgYW5kIGRv IHRoZSBzZXQgdXAgd29yayBpbiB0aGF0IHRocmVhZCwgaXMgdGhhdCByaWdodD8NCj4gPj4+Pj4g QW5kIG1haW4gdGhyZWFkIGF2b2lkIGhhbmcgYnkgdGhlIGZsYWcgb2YNCj4gPj4+PiBJWEdCRV9G TEFHX05FRURfTElOS19DT05GSUcuDQo+ID4+Pj4+IEkgdGhpbmsgdGhpcyBpcyBhIGdvb2QgaWRl YSBmb3IgdGhpcyBwcm9ibGVtLCBidXQgaXQgbWF5IGNhdXNlDQo+ID4+Pj4+IHByb2JsZW0gZm9y IG90aGVyIGxlZ2FjeSB1c2VyIG9mIGl4Z2JlIHBtZCwgYmVjYXVzZSB0aGVpciBsZWdhY3kNCj4g Pj4+Pj4gY29kZSwgd2hpY2ggdXNlDQo+ID4+Pj4gbWFpbiB0aHJlYWQgIHRvIGNoZWNrIGxpbmsg c3RhdGUgYW5kIHNldHVwX2xpbmsgd2hlbiBwb3J0IGlzIGRvd24sDQo+ID4+Pj4gYW5kIHRoZXkg YXJlIG5vdCBhd2FyZSBvZiBpdCBpcyBkb25lIGJ5IG90aGVyIHRocmVhZCBpZiBhZGQgeW91ciBw YXRjaC4NCj4gPj4+Pg0KPiA+Pj4+IFdoYXQgYXJlIHRoZXNlIGFwcGxpY2F0aW9ucz8gSSBzZWUg bm8gcHVibGljIEFQSSBmb3Igc2V0dXBfbGluayBmdW5jdGlvbi4NCj4gPj4+PiBJdCdzIGludGVy bmFsIHRvIGRyaXZlciBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGV4dGVybmFsbHkuDQo+ID4+Pj4g QW0gSSBtaXNzaW5nIHNvbWV0aGluZz8NCj4gPj4+DQo+ID4+PiBydGVfZXRoX2xpbmtfZ2V0KCkg LCAgaXQgd2lsbCBhbHNvIGNhbGwgdGhlIGZ1bmN0aW9uIG9mIGl4Z2JlX3NldHVwX2xpbmsoKS4N Cj4gPj4+DQo+ID4+DQo+ID4+IHJ0ZV9ldGhfbGlua19nZXQoKSBkb2VzIG5vdCBjYWxsIGl4Z2Jl X3NldHVwX2xpbmsoKS4NCj4gPj4gSXQgb25seSBjYWxscyBkZXZfb3BzLT5saW5rX3VwZGF0ZSgp Lg0KPiA+DQo+ID4gTm8sICBkZXZfb3BzLT5saW5rX3VwZGF0ZSBjYWxsIGZ1bmN0aW9uIGl4Z2Jl X2Rldl9saW5rX3VwZGF0ZSgpDQo+ID4gLT4gaXhnYmVfZGV2X2xpbmtfdXBkYXRlX3NoYXJlKCkg LT4gaXhnYmVfc2V0dXBfbGluaygpDQo+IA0KPiBCdXQgd2l0aCBteSBwYXRjaCwgY2FsbGluZyBv ZiBpeGdiZV9zZXR1cF9saW5rKCkgaGFwcGVucyBpbiBhIHNlcGFyYXRlDQo+IChpbnRlcnJ1cHQp IHRocmVhZC4gVGhlcmUgaXMgbm8gZGlyZWN0IGNhbGwgZnJvbQ0KPiBpeGdiZV9kZXZfbGlua191 cGRhdGVfc2hhcmUoKS4NCj4gQWxsIHRoZSBjYWxscyBmcm9tIHRoZSBpbnRlcnJ1cHQgdGhyZWFk IGFyZSBzZXF1ZW5jZWQgYnkgaW1wbGVtZW50YXRpb24uDQoNClllcywgdGhhdCBpcyBqdXN0IHRo ZSBwb2ludCB0aGF0IEkgd29ycnkgYWJvdXQuDQppeGdiZV9zZXR1cF9saW5rKCkgcHJvY2VzcyB3 aWxsIGhhbmcgMXMgYXQgbGVhc3QgaW4gb3RoZXIgdGhyZWFkIGV2ZW4gaWYgaXQgaXMgbW92ZSBv dXQgZnJvbSB0aGUgbGluayBzdGF0dXMgdXBkYXRlIHdoaWNoIGlzIGJlaW5nIGhhbmRsZSBpbiB1 c2VyIHRocmVhZCBub3cuDQpJIGNhbiBub3QgZm9yZXNlZSB3aGF0IGltcGFjdCBpdCB3aWxsIGhh dmUgdG8gaXhnYmUgUE1EIHRocmVhZCB0aGF0IGxvbmcgdGltZSwgaXQgbWF5IGJlIGEgaGlkZGVu IGRhbmdlci4gDQpBbmQgdGhlIHdhaXQgdGltZSBvZiAxcyBvZiBsaW5rIHNldHVwIGNhbiBub3Qg ZWxpbWluYXRlIGFsc28uIFRoZSBkaWZmZXJlbmNlIGlzIHdoaWNoIHRocmVhZCB0byBibG9jay4N CkkgYWdyZWUgd2l0aCB5b3Ugb2YgdGhlIGV4aXN0IG9mIHRoaXMgaGFuZyB0aW1lIGZvciB1c2Vy IHRocmVhZCBpbiBsaW5rIHN0YXR1cyB1cGRhdGUgZm9yIHNldCB1cCBsaW5rIHdoZW4gcG9ydCBp cyBkb3duLCANCmJ1dCBJIGNhbiBub3Qgc3VwcG9ydCB0aGUgY29kZSB0byBtb3ZlIGhhbmcgdGlt ZSB0byBhbm90aGVyIHRocmVhZCB3aXRoIHJlYXNvbiBhYm92ZS4NClRoYW5rIHlvdSBmb3IgeW91 ciBleHBsYW5hdGlvbi4gDQpJIGFtIHdpbGxpbmcgdG8gc2VlIGlmIGFueW9uZSBjYW4gZ2l2ZSBh biBkZWZpbml0ZSBjb25jbHVzaW9uIGZvciB0aGlzIGNvZGUgY2hhbmdlIGFuZCBBQ0sgdGhpcyBw YXRjaC4NCg0KUmV2aWV3ZWQtYnk6IFdlaSBaaGFvIDx3ZWkuemhhbzFAaW50ZWwuY29tPg0KIA0K DQo+IA0KPiA+DQo+ID4NCj4gPj4NCj4gPj4+DQo+ID4+Pj4NCj4gPj4+Pj4NCj4gPj4+Pj4gQW5k IGlzIHRoYXQgb2sgaWYgd2UgY2hhbmdlIGNvZGUgaW4gaXhnYmVfZGV2X2xpbmtfdXBkYXRlX3No YXJlKCkNCj4gPj4+Pj4gdG8NCj4gPj4+Pj4NCj4gPj4+Pj4gaXhnYmVfZGV2X2xpbmtfdXBkYXRl X3NoYXJlKCkNCj4gPj4+Pj4gew0KPiA+Pj4+Pg0KPiA+Pj4+PiAJLyogY2hlY2sgaWYgaXQgbmVl ZHMgdG8gd2FpdCB0byBjb21wbGV0ZSwgaWYgbHNjIGludGVycnVwdCBpcyBlbmFibGVkICovDQo+ ID4+Pj4+IAlpZiAod2FpdF90b19jb21wbGV0ZSA9PSAwIHx8IGRldi0+ZGF0YS0+ZGV2X2NvbmYu aW50cl9jb25mLmxzYyAhPSAwKQ0KPiA+Pj4+PiAJCXdhaXQgPSAwOw0KPiA+Pj4+Pg0KPiA+Pj4+ PiAJaWYgKChpbnRyLT5mbGFncyAmIElYR0JFX0ZMQUdfTkVFRF9MSU5LX0NPTkZJRykgJiYNCj4g Pj4+Pj4gCQlpeGdiZV9nZXRfbWVkaWFfdHlwZShodykgPT0gaXhnYmVfbWVkaWFfdHlwZV9maWJl cikgew0KPiA+Pj4+PiAJCXNwZWVkID0gaHctPnBoeS5hdXRvbmVnX2FkdmVydGlzZWQ7DQo+ID4+ Pj4+IAkJaWYgKCFzcGVlZCkNCj4gPj4+Pj4gCQkJaXhnYmVfZ2V0X2xpbmtfY2FwYWJpbGl0aWVz KGh3LCAmc3BlZWQsICZhdXRvbmVnKTsNCj4gPj4+Pj4gCQlpeGdiZV9zZXR1cF9saW5rKGh3LCBz cGVlZCwgd2FpdCk7DQo+ID4+Pj4+IAl9DQo+ID4+Pj4+IH0NCj4gPj4+Pj4NCj4gPj4+Pj4gVGhl biwgeW91ciBhcHBsaWNhdGlvbiBjYW4gY2FsbCBydGVfZXRoX2xpbmtfZ2V0X25vd2FpdCAoKSB0 byBtYWtlDQo+ID4+Pj4+IHdhaXRfdG9fY29tcGxldGU9MCB3aGVuIGRvaW5nIHBlcmlvZGljIGxp bmsgc3RhdGUgY2hlY2ssIFdoaWNoDQo+ID4+Pj4+IHdpbGwgbm90DQo+ID4+Pj4gY2F1c2UgIGxv b3AgY2hlY2sgYW5kIHNsZWVwIGRlbGF5LiBMZWdhY3kgY29kZSBvZiBvdGhlciB1c2VyIGNhbGwN Cj4gPj4+PiBydGVfZXRoX2xpbmtfZ2V0KCkgIHdpbGwgbm90IGJlIGFmZmVjdGVkIGFsc28uDQo+ ID4+Pj4+IEJ1dCwgSSBhbSBOT1QgY29uZmlkZW50ICx3aGV0aGVyIHRoaXMgd2lsbCBpbnRyb2R1 Y2UgbmV3IHByb2JsZW0NCj4gPj4+Pj4gd2hlbg0KPiA+Pj4+IHNldCB1cCBsaW5rIHdpdGhvdXQg d2FpdCENCj4gPj4+Pj4gU28sIHRoaXMgaXMganVzdCBhIGRpc2N1c3Npb24gdG9waWMuDQo+ID4+ Pj4NCj4gPj4+PiBVbmZvcnR1bmF0ZWx5IHRoaXMgd2lsbCBub3QgaGVscC4gVGFrZSBhIGxvb2sg dG8gdGhlIGZ1bmN0aW9uDQo+ID4+Pj4gJ2l4Z2JlX3NldHVwX21hY19saW5rX211bHRpc3BlZWRf ZmliZXIoKScsIHdoaWNoIGlzIHRoZSBtYWluDQo+ID4+Pj4gcHJvYmxlbWF0aWMgZnVuY3Rpb24g aGVyZS4gJ3dhaXRfdG9fY29tcGxldGUnIGhlcmUgdXNlZCBvbmx5IGFzDQo+ID4+Pj4gYXJndW1l bnQgZm9yIGl4Z2JlX3NldHVwX21hY19saW5rKCksIGFuZCB0aGUgYnVzeSB3YWl0aW5nIGxvb3Bz IGFyZQ0KPiA+PiBvdXRzaWRlIG9mIGl0Lg0KPiA+Pj4+IFJlZ2FyZGxlc3Mgb2YgdGhlICd3YWl0 X3RvX2NvbXBsZXRlJyB2YWx1ZSwgdGhpcyBmdW5jdGlvbiB3aWxsIGJ1c3kNCj4gPj4+PiBwb2xs IHRoZSBsaW5rIGZvciAxMDQwIG1zIHRyeWluZyB0byBzZXR1cCAxMEdCIHNwZWVkIGFuZCAxNDBt cyBtb3JlDQo+ID4+Pj4gdHJ5aW5nIHRvIHNldHVwIDFHQiBzcGVlZC4gQWZ0ZXIgdGhhdCwgaXQg d2lsbCBjYWxsIGl0c2VsZg0KPiA+Pj4+IHJlY3Vyc2l2ZWx5IGFuZCB3YWl0IGFnYWluLi4uIExv b2tzIGxpa2UgSSBtaXNjYWxjdWxhdGVkIGxhc3QgdGltZS4NCj4gPj4+PiBSaWdodCBub3cgaXQn bGwgYmUgbW9yZSB0aGFuIDIgc2Vjb25kcyBmb3IgZWFjaCBkb3duIHBvcnQgc2luY2UNCj4gPj4+ PiBmb2xsb3dpbmcNCj4gPj4gcGF0Y2ggbWVyZ2VkOg0KPiA+Pj4+IDhmYzFmMzJmYTYxNSAoIm5l dC9peGdiZTogd2FpdCBsb25nZXIgZm9yIGxpbmsgYWZ0ZXIgZmliZXIgTUFDIHNldHVwIikuDQo+ ID4+Pg0KPiA+Pj4gWWVzLCB5b3UgYXJlIHJpZ2h0LCBsaW5rIHN0YXRlIGNoZWNrIGxvb3AgaW4g ZnVuY3Rpb24NCj4gPj4+IGl4Z2JlX3NldHVwX21hY19saW5rX211bHRpc3BlZWRfZmliZXIoKSBh cmUgbm90IGJsb2NrZWQgYnkgYm9vbA0KPiA+PiBhdXRvbmVnX3dhaXRfdG9fY29tcGxldGUsIEl0 IHdpbGwgY2F1c2UgYWJvdXQgMXMgd2FpdCB3aGVuIHBvcnQgaXMgZG93bi4NCj4gPj4+IEFuZCBh bHNvLCBjYW4gd2UgdXBkYXRlIGNvZGUgaW4gZnVuY3Rpb24NCj4gPj4gaXhnYmVfc2V0dXBfbWFj X2xpbmtfbXVsdGlzcGVlZF9maWJlcigpIHRvICBibG9jayBsaW5rIHN0YXRlIGNoZWNrDQo+ID4+ IGxvb3AgdXNpbmcgYXV0b25lZ193YWl0X3RvX2NvbXBsZXRlPw0KPiA+Pj4gSSBhbSBub3Qgc3Vy ZS4gQmVjYXVzZSB0aGVyZSBpcyBhIGNvbW1lbnQgZm9yIHRoaXMgbG9vcCBjaGVjazoNCj4gPj4+ IAkJLyoNCj4gPj4+IAkJICogV2FpdCBmb3IgdGhlIGNvbnRyb2xsZXIgdG8gYWNxdWlyZSBsaW5r LiAgUGVyIElFRUUgODAyLjNhcCwNCj4gPj4+IAkJICogU2VjdGlvbiA3My4xMC4yLCB3ZSBtYXkg aGF2ZSB0byB3YWl0IHVwIHRvIDUwMG1zIGlmIEtSIGlzDQo+ID4+PiAJCSAqIGF0dGVtcHRlZC4g IDgyNTk5IHVzZXMgdGhlIHNhbWUgdGltaW5nIGZvciAxMGcgU0ZJLg0KPiA+Pj4gCQkgKi8NCj4g Pj4+IEl0IHNlZW1zIHdlIGhhdmUgdG8gd2FpdCBmb3IgYXQgbGVhc3QgNTAwbXMgZm9yIHNwZWMg cmVxdWlyZW1lbnQNCj4gPj4+IGJlZm9yZQ0KPiA+PiB3ZSBjaGVjayBsaW5rIGFmdGVyIGNvbmZp Z3VyYXRpb24uDQo+ID4+PiBJZiB0aGF0IGlzIHRydWUsIHdlIGNhbiBub3QgZG8gYW55IGNoYW5n ZSB0byB0aGVzZSBsb29wIGNoZWNrLg0KPiA+Pj4gQnV0IHdoeSBub3QgbWFpbiB0aHJlYWQgdGFr ZSBzb21lIGFjdGlvbiB0byBzdG9wIHBlcmlvZGljIGxpbmsgc2F0ZQ0KPiA+Pj4gY2hlY2sNCj4g Pj4gd2hlbiBpdCBmaW5kIGl0IGhhcyBiZWVuIGhhbmcgb3IgbGluayBpcyBkb3duPw0KPiA+Pg0K PiA+PiBUbyBmaW5kIHRoYXQgZGV2aWNlIGlzIERPV04sIHRocmVhZCB3aWxsIGhhdmUgdG8gY2Fs bCB0aGlzIGZ1bmN0aW9uDQo+ID4+IGF0IGxlYXN0IG9uY2UgZm9yIGVhY2ggcG9ydCBhbmQgd2Fp dCBhIGZldyBzZWNvbmRzLg0KPiA+PiBBbmQgaG93IGluIHRoYXQgY2FzZSB3ZSdsbCBrbm93IHRo YXQgZGV2aWNlIGlzIFVQIGFnYWluPw0KPiA+PiBBcyBJIGFscmVhZHkgd3JvdGUgaW4gZGlzY3Vz c2lvbiBmb3IgdGhpcyBwYXRjaCwgTFNDIGlzIG5vdCBhbg0KPiA+PiBvcHRpb24sIGJlY2F1c2Ug aXQgdGFrZXMgYXQgbGVhc3QgNSBzZWNvbmRzIHRvIGRldGVjdCBsaW5rIHN0YXRlDQo+ID4+IGNo YW5nZSwgd2hpY2ggaXMgd2F5IHRvbyBtdWNoIGZvciBtYW55IHJlYWwgd29ybGQgYXBwcy4NCj4g Pj4NCj4gPj4+DQo+ID4+Pg0KPiA+Pj4NCj4gPj4+Pg0KPiA+Pj4+Pg0KPiA+Pj4+PiBIaSwgbGF1 cmVudC5oYXJkeQ0KPiA+Pj4+PiAgWW91IGFyZSB0aGUgYXV0aG9yIGZvciB0aGUgcGF0Y2ggKCog bmV0L2l4Z2JlOiBlbnN1cmUgbGluayBzdGF0dXMNCj4gPj4+Pj4gaXMNCj4gPj4+PiB1cGRhdGVk KSwgd2h5IGRvIHlvdSBpbXBsZW1lbnQgY29kZSB0aGF0IHdheT8NCj4gPj4+Pj4gSXMgdGhhdCBt dXN0IHRoYXQgIHNldCB1cCBsaW5rIHdpdGggd2FpdD8NCj4gPj4+Pj4NCj4gPj4+Pj4gaXhnYmVf c2V0dXBfbGluayhodywgc3BlZWQsIHRydWUpOw0KPiA+Pj4+Pg0KPiA+Pj4+Pg0KPiA+Pj4+Pg0K PiA+Pj4+Pj4NCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+ IFJlZ2FyZHMNCj4gPj4+Pj4+Pj4+IFFpDQo+ID4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+DQo+ID4+ Pj4+Pj4+Pj4gRml4ZXM6IGMxMmQyMmY2NWIxMyAoIm5ldC9peGdiZTogZW5zdXJlIGxpbmsgc3Rh dHVzIGlzDQo+ID4+Pj4+Pj4+Pj4gdXBkYXRlZCIpDQo+ID4+Pj4+Pj4+Pj4gQ0M6IHN0YWJsZUBk cGRrLm9yZw0KPiA+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogSWx5YSBN YXhpbWV0cyA8aS5tYXhpbWV0c0BzYW1zdW5nLmNvbT4NCj4gPj4+Pj4+Pj4+PiAtLS0NCj4gPj4+ Pj4+Pj4+PiAgZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfZXRoZGV2LmMgfCA0Mw0KPiA+Pj4+Pj4+ Pj4+ICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tDQo+ID4+Pj4+Pj4+Pj4gIDEgZmls ZSBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkNCj4gPj4+Pj4+Pj4+ Pg0KPiA+Pj4+Pj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9peGdiZS9peGdiZV9ldGhk ZXYuYw0KPiA+Pj4+Pj4+Pj4+IGIvZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfZXRoZGV2LmMNCj4g Pj4+Pj4+Pj4+PiBpbmRleCAyNmIxOTI3MzcuLmEzM2I5YTZlOCAxMDA2NDQNCj4gPj4+Pj4+Pj4+ PiAtLS0gYS9kcml2ZXJzL25ldC9peGdiZS9peGdiZV9ldGhkZXYuYw0KPiA+Pj4+Pj4+Pj4+ICsr KyBiL2RyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX2V0aGRldi5jDQo+ID4+Pj4+Pj4+Pj4gQEAgLTIy MSw2ICsyMjEsOCBAQCBzdGF0aWMgaW50DQo+ID4+Pj4+Pj4+Pj4gaXhnYmVfZGV2X2ludGVycnVw dF9hY3Rpb24oc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4+Pj4+Pj4+Pj4gIAkJCQkgICAg ICBzdHJ1Y3QgcnRlX2ludHJfaGFuZGxlICpoYW5kbGUpOw0KPiA+Pj4+IHN0YXRpYw0KPiA+Pj4+ Pj4gdm9pZA0KPiA+Pj4+Pj4+Pj4+IGl4Z2JlX2Rldl9pbnRlcnJ1cHRfaGFuZGxlcih2b2lkICpw YXJhbSk7ICBzdGF0aWMgdm9pZA0KPiA+Pj4+Pj4+Pj4+IGl4Z2JlX2Rldl9pbnRlcnJ1cHRfZGVs YXllZF9oYW5kbGVyKHZvaWQgKnBhcmFtKTsNCj4gPj4+Pj4+Pj4+PiArc3RhdGljIHZvaWQgaXhn YmVfZGV2X3NldHVwX2xpbmtfYWxhcm1faGFuZGxlcih2b2lkDQo+ICpwYXJhbSk7DQo+ID4+Pj4+ Pj4+Pj4gKw0KPiA+Pj4+Pj4+Pj4+ICBzdGF0aWMgaW50IGl4Z2JlX2FkZF9yYXIoc3RydWN0IHJ0 ZV9ldGhfZGV2ICpkZXYsIHN0cnVjdA0KPiA+Pj4+Pj4+Pj4+IGV0aGVyX2FkZHIgKm1hY19hZGRy LA0KPiA+Pj4+Pj4+Pj4+ICAJCQkgdWludDMyX3QgaW5kZXgsIHVpbnQzMl90IHBvb2wpOyAgc3Rh dGljIHZvaWQNCj4gPj4+Pj4+Pj4+PiBpeGdiZV9yZW1vdmVfcmFyKHN0cnVjdCBydGVfZXRoX2Rl diAqZGV2LCB1aW50MzJfdCBpbmRleCk7DQo+IEBADQo+ID4+Pj4+Pj4+Pj4gLTI3OTEsNiArMjc5 Myw4IEBAIGl4Z2JlX2Rldl9zdG9wKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KQ0KPiA+Pj4+Pj4+ Pj4+DQo+ID4+Pj4+Pj4+Pj4gIAlQTURfSU5JVF9GVU5DX1RSQUNFKCk7DQo+ID4+Pj4+Pj4+Pj4N Cj4gPj4+Pj4+Pj4+PiArCXJ0ZV9lYWxfYWxhcm1fY2FuY2VsKGl4Z2JlX2Rldl9zZXR1cF9saW5r X2FsYXJtX2hhbmRsZXIsDQo+ID4+Pj4gZGV2KTsNCj4gPj4+Pj4+Pj4+PiArDQo+ID4+Pj4+Pj4+ Pj4gIAkvKiBkaXNhYmxlIGludGVycnVwdHMgKi8NCj4gPj4+Pj4+Pj4+PiAgCWl4Z2JlX2Rpc2Fi bGVfaW50cihodyk7DQo+ID4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+PiBAQCAtMzk2OSw2ICszOTcz LDI1IEBAIGl4Z2JldmZfY2hlY2tfbGluayhzdHJ1Y3QgaXhnYmVfaHcNCj4gPj4gKmh3LA0KPiA+ Pj4+Pj4+Pj4+IGl4Z2JlX2xpbmtfc3BlZWQgKnNwZWVkLA0KPiA+Pj4+Pj4+Pj4+ICAJcmV0dXJu IHJldF92YWw7DQo+ID4+Pj4+Pj4+Pj4gIH0NCj4gPj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+ICtz dGF0aWMgdm9pZA0KPiA+Pj4+Pj4+Pj4+ICtpeGdiZV9kZXZfc2V0dXBfbGlua19hbGFybV9oYW5k bGVyKHZvaWQgKnBhcmFtKSB7DQo+ID4+Pj4+Pj4+Pj4gKwlzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRl diA9IChzdHJ1Y3QgcnRlX2V0aF9kZXYgKilwYXJhbTsNCj4gPj4+Pj4+Pj4+PiArCXN0cnVjdCBp eGdiZV9odyAqaHcgPQ0KPiA+Pj4+Pj4+Pj4+IElYR0JFX0RFVl9QUklWQVRFX1RPX0hXKGRldi0+ ZGF0YS0+ZGV2X3ByaXZhdGUpOw0KPiA+Pj4+Pj4+Pj4+ICsJc3RydWN0IGl4Z2JlX2ludGVycnVw dCAqaW50ciA9DQo+ID4+Pj4+Pj4+Pj4gKwkJSVhHQkVfREVWX1BSSVZBVEVfVE9fSU5UUihkZXYt PmRhdGEtDQo+ID4+Pj4+IGRldl9wcml2YXRlKTsNCj4gPj4+Pj4+Pj4+PiArCXUzMiBzcGVlZDsN Cj4gPj4+Pj4+Pj4+PiArCWJvb2wgYXV0b25lZyA9IGZhbHNlOw0KPiA+Pj4+Pj4+Pj4+ICsNCj4g Pj4+Pj4+Pj4+PiArCXNwZWVkID0gaHctPnBoeS5hdXRvbmVnX2FkdmVydGlzZWQ7DQo+ID4+Pj4+ Pj4+Pj4gKwlpZiAoIXNwZWVkKQ0KPiA+Pj4+Pj4+Pj4+ICsJCWl4Z2JlX2dldF9saW5rX2NhcGFi aWxpdGllcyhodywgJnNwZWVkLCAmYXV0b25lZyk7DQo+ID4+Pj4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ Pj4+ICsJaXhnYmVfc2V0dXBfbGluayhodywgc3BlZWQsIHRydWUpOw0KPiA+Pj4+Pj4+Pj4+ICsN Cj4gPj4+Pj4+Pj4+PiArCWludHItPmZsYWdzICY9IH5JWEdCRV9GTEFHX05FRURfTElOS19DT05G SUc7IH0NCj4gPj4+Pj4+Pj4+PiArDQo+ID4+Pj4+Pj4+Pj4gIC8qIHJldHVybiAwIG1lYW5zIGxp bmsgc3RhdHVzIGNoYW5nZWQsIC0xIG1lYW5zIG5vdCBjaGFuZ2VkDQo+ID4+Pj4+Pj4+Pj4gKi8g aW50IGl4Z2JlX2Rldl9saW5rX3VwZGF0ZV9zaGFyZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwN Cj4gPj4+Pj4+Pj4+PiBAQCAtDQo+ID4+Pj4+PiAzOTgxLDkNCj4gPj4+Pj4+Pj4+PiArNDAwNCw3 IEBAIGl4Z2JlX2Rldl9saW5rX3VwZGF0ZV9zaGFyZShzdHJ1Y3QgcnRlX2V0aF9kZXYNCj4gPj4+ PiAqZGV2LA0KPiA+Pj4+Pj4+Pj4+ICAJCUlYR0JFX0RFVl9QUklWQVRFX1RPX0lOVFIoZGV2LT5k YXRhLQ0KPiA+Pj4+PiBkZXZfcHJpdmF0ZSk7DQo+ID4+Pj4+Pj4+Pj4gIAlpbnQgbGlua191cDsN Cj4gPj4+Pj4+Pj4+PiAgCWludCBkaWFnOw0KPiA+Pj4+Pj4+Pj4+IC0JdTMyIHNwZWVkID0gMDsN Cj4gPj4+Pj4+Pj4+PiAgCWludCB3YWl0ID0gMTsNCj4gPj4+Pj4+Pj4+PiAtCWJvb2wgYXV0b25l ZyA9IGZhbHNlOw0KPiA+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4gIAltZW1zZXQoJmxpbmssIDAs IHNpemVvZihsaW5rKSk7DQo+ID4+Pj4+Pj4+Pj4gIAlsaW5rLmxpbmtfc3RhdHVzID0gRVRIX0xJ TktfRE9XTjsgQEAgLTM5OTMsMTMgKzQwMTQsOA0KPiA+Pj4+IEBADQo+ID4+Pj4+Pj4+Pj4gaXhn YmVfZGV2X2xpbmtfdXBkYXRlX3NoYXJlKHN0cnVjdA0KPiA+Pj4+Pj4+PiBydGVfZXRoX2Rldg0K PiA+Pj4+Pj4+Pj4+ICpkZXYsDQo+ID4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+PiAgCWh3LT5tYWMu Z2V0X2xpbmtfc3RhdHVzID0gdHJ1ZTsNCj4gPj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+IC0JaWYg KChpbnRyLT5mbGFncyAmIElYR0JFX0ZMQUdfTkVFRF9MSU5LX0NPTkZJRykgJiYNCj4gPj4+Pj4+ Pj4+PiAtCQlpeGdiZV9nZXRfbWVkaWFfdHlwZShodykgPT0NCj4gPj4+PiBpeGdiZV9tZWRpYV90 eXBlX2ZpYmVyKSB7DQo+ID4+Pj4+Pj4+Pj4gLQkJc3BlZWQgPSBody0+cGh5LmF1dG9uZWdfYWR2 ZXJ0aXNlZDsNCj4gPj4+Pj4+Pj4+PiAtCQlpZiAoIXNwZWVkKQ0KPiA+Pj4+Pj4+Pj4+IC0JCQlp eGdiZV9nZXRfbGlua19jYXBhYmlsaXRpZXMoaHcsICZzcGVlZCwNCj4gPj4+PiAmYXV0b25lZyk7 DQo+ID4+Pj4+Pj4+Pj4gLQkJaXhnYmVfc2V0dXBfbGluayhodywgc3BlZWQsIHRydWUpOw0KPiA+ Pj4+Pj4+Pj4+IC0JfQ0KPiA+Pj4+Pj4+Pj4+ICsJaWYgKGludHItPmZsYWdzICYgSVhHQkVfRkxB R19ORUVEX0xJTktfQ09ORklHKQ0KPiA+Pj4+Pj4+Pj4+ICsJCXJldHVybiBydGVfZXRoX2xpbmtz dGF0dXNfc2V0KGRldiwgJmxpbmspOw0KPiA+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4gIAkvKiBj aGVjayBpZiBpdCBuZWVkcyB0byB3YWl0IHRvIGNvbXBsZXRlLCBpZiBsc2MgaW50ZXJydXB0DQo+ ID4+Pj4+Pj4+Pj4gaXMNCj4gPj4+PiBlbmFibGVkICovDQo+ID4+Pj4+Pj4+Pj4gIAlpZiAod2Fp dF90b19jb21wbGV0ZSA9PSAwIHx8IGRldi0+ZGF0YS0NCj4gPj4+Pj4gZGV2X2NvbmYuaW50cl9j b25mLmxzYw0KPiA+Pj4+Pj4+Pj4+ICE9DQo+ID4+Pj4+Pj4+Pj4gMCkgQEANCj4gPj4+Pj4+Pj4+ PiAtNDAxNywxMSArNDAzMywxNCBAQCBpeGdiZV9kZXZfbGlua191cGRhdGVfc2hhcmUoc3RydWN0 DQo+ID4+Pj4+PiBydGVfZXRoX2Rldg0KPiA+Pj4+Pj4+PiAqZGV2LA0KPiA+Pj4+Pj4+Pj4+ICAJ fQ0KPiA+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4gIAlpZiAobGlua191cCA9PSAwKSB7DQo+ID4+ Pj4+Pj4+Pj4gLQkJaW50ci0+ZmxhZ3MgfD0gSVhHQkVfRkxBR19ORUVEX0xJTktfQ09ORklHOw0K PiA+Pj4+Pj4+Pj4+ICsJCWlmIChpeGdiZV9nZXRfbWVkaWFfdHlwZShodykgPT0NCj4gPj4+PiBp eGdiZV9tZWRpYV90eXBlX2ZpYmVyKQ0KPiA+Pj4+Pj4gew0KPiA+Pj4+Pj4+Pj4+ICsJCQlpbnRy LT5mbGFncyB8PQ0KPiA+Pj4+IElYR0JFX0ZMQUdfTkVFRF9MSU5LX0NPTkZJRzsNCj4gPj4+Pj4+ Pj4+PiArCQkJcnRlX2VhbF9hbGFybV9zZXQoMTAsDQo+ID4+Pj4+Pj4+Pj4gKw0KPiA+Pj4+IAlp eGdiZV9kZXZfc2V0dXBfbGlua19hbGFybV9oYW5kbGVyLCBkZXYpOw0KPiA+Pj4+Pj4+Pj4+ICsJ CX0NCj4gPj4+Pj4+Pj4+PiAgCQlyZXR1cm4gcnRlX2V0aF9saW5rc3RhdHVzX3NldChkZXYsICZs aW5rKTsNCj4gPj4+Pj4+Pj4+PiAgCX0NCj4gPj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+IC0JaW50 ci0+ZmxhZ3MgJj0gfklYR0JFX0ZMQUdfTkVFRF9MSU5LX0NPTkZJRzsNCj4gPj4+Pj4+Pj4+PiAg CWxpbmsubGlua19zdGF0dXMgPSBFVEhfTElOS19VUDsNCj4gPj4+Pj4+Pj4+PiAgCWxpbmsubGlu a19kdXBsZXggPSBFVEhfTElOS19GVUxMX0RVUExFWDsNCj4gPj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+ Pj4+IEBAIC01MTI4LDYgKzUxNDcsOCBAQCBpeGdiZXZmX2Rldl9zdG9wKHN0cnVjdCBydGVfZXRo X2Rldg0KPiA+Pj4+ICpkZXYpDQo+ID4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+PiAgCVBNRF9JTklU X0ZVTkNfVFJBQ0UoKTsNCj4gPj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+ICsJcnRlX2VhbF9hbGFy bV9jYW5jZWwoaXhnYmVfZGV2X3NldHVwX2xpbmtfYWxhcm1faGFuZGxlciwNCj4gPj4+PiBkZXYp Ow0KPiA+Pj4+Pj4+Pj4+ICsNCj4gPj4+Pj4+Pj4+PiAgCWl4Z2JldmZfaW50cl9kaXNhYmxlKGRl dik7DQo+ID4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+PiAgCWh3LT5hZGFwdGVyX3N0b3BwZWQgPSAx Ow0KPiA+Pj4+Pj4+Pj4+IC0tDQo+ID4+Pj4+Pj4+Pj4gMi4xNy4xDQo+ID4+Pj4+Pj4+Pg0K