From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: "Ser, Simon" Date: Thu, 18 Jul 2019 11:46:11 +0000 Message-ID: References: <296f249138cb4f55466294b07a7aba25801ff146.1560374714.git.rodrigosiqueiramelo@gmail.com> <7eca4f4def5f732d1f9269e2c75eca8da62a78b2.camel@intel.com> <20190712024435.bed52lodxms6rz7y@smtp.gmail.com> <20190716152207.GC13094@e110455-lin.cambridge.arm.com> <20190718094926.GB5942@e110455-lin.cambridge.arm.com> <20190718111502.GC5942@e110455-lin.cambridge.arm.com> In-Reply-To: <20190718111502.GC5942@e110455-lin.cambridge.arm.com> Content-Language: en-US Content-ID: <76BDAF82269BE74FA7C53DC666D39B36@intel.com> MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH V6 i-g-t 2/6] kms_writeback: Add initial writeback tests List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: "Liviu.Dudau@arm.com" Cc: "Latvala, Petri" , "intel-gfx@lists.freedesktop.org" , "igt-dev@lists.freedesktop.org" , "daniel@ffwll.ch" , "nd@arm.com" , "Brian.Starkey@arm.com" List-ID: T24gVGh1LCAyMDE5LTA3LTE4IGF0IDEyOjE1ICswMTAwLCBMaXZpdS5EdWRhdUBhcm0uY29tIHdy b3RlOg0KPiBPbiBUaHUsIEp1bCAxOCwgMjAxOSBhdCAwOTo1NjozOUFNICswMDAwLCBTZXIsIFNp bW9uIHdyb3RlOg0KPiA+IE9uIFRodSwgMjAxOS0wNy0xOCBhdCAxMDo0OSArMDEwMCwgTGl2aXUu RHVkYXVAYXJtLmNvbSB3cm90ZToNCj4gPiA+IE9uIFdlZCwgSnVsIDE3LCAyMDE5IGF0IDExOjQ2 OjM5QU0gKzAwMDAsIFNlciwgU2ltb24gd3JvdGU6DQo+ID4gPiA+IFRoYW5rcyBmb3IgdGhlIGNs YXJpZmljYXRpb24hDQo+ID4gPiA+IA0KPiA+ID4gPiBPbiBUdWUsIDIwMTktMDctMTYgYXQgMTY6 MjIgKzAxMDAsIExpdml1LkR1ZGF1QGFybS5jb20gd3JvdGU6DQo+ID4gPiA+ID4gPiA+ID4gK3N0 YXRpYyB2b2lkIGludmFsaWRfb3V0X2ZlbmNlKGlndF9vdXRwdXRfdCAqb3V0cHV0LCBpZ3RfZmJf dCAqdmFsaWRfZmIsIGlndF9mYl90ICppbnZhbGlkX2ZiKQ0KPiA+ID4gPiA+ID4gPiA+ICt7DQo+ ID4gPiA+ID4gPiA+ID4gKwlpbnQgaSwgcmV0Ow0KPiA+ID4gPiA+ID4gPiA+ICsJaW50MzJfdCBv dXRfZmVuY2U7DQo+ID4gPiA+ID4gPiA+ID4gKwlzdHJ1Y3Qgew0KPiA+ID4gPiA+ID4gPiA+ICsJ CXVpbnQzMl90IGZiX2lkOw0KPiA+ID4gPiA+ID4gPiA+ICsJCWJvb2wgcHRyX3ZhbGlkOw0KPiA+ ID4gPiA+ID4gPiA+ICsJCWludDMyX3QgKm91dF9mZW5jZV9wdHI7DQo+ID4gPiA+ID4gPiA+ID4g Kwl9IGludmFsaWRfdGVzdHNbXSA9IHsNCj4gPiA+ID4gPiA+ID4gPiArCQl7DQo+ID4gPiA+ID4g PiA+ID4gKwkJCS8qIE5vIG91dHB1dCBidWZmZXIsIGJ1dCB0aGUgV1JJVEVCQUNLX09VVF9GRU5D RV9QVFIgc2V0LiAqLw0KPiA+ID4gPiA+ID4gPiA+ICsJCQkuZmJfaWQgPSAwLA0KPiA+ID4gPiA+ ID4gPiA+ICsJCQkucHRyX3ZhbGlkID0gdHJ1ZSwNCj4gPiA+ID4gPiA+ID4gPiArCQkJLm91dF9m ZW5jZV9wdHIgPSAmb3V0X2ZlbmNlLA0KPiA+ID4gPiA+ID4gPiA+ICsJCX0sDQo+ID4gPiA+ID4g PiA+ID4gKwkJew0KPiA+ID4gPiA+ID4gPiA+ICsJCQkvKiBJbnZhbGlkIG91dHB1dCBidWZmZXIu ICovDQo+ID4gPiA+ID4gPiA+ID4gKwkJCS5mYl9pZCA9IGludmFsaWRfZmItPmZiX2lkLA0KPiA+ ID4gPiA+ID4gPiA+ICsJCQkucHRyX3ZhbGlkID0gdHJ1ZSwNCj4gPiA+ID4gPiA+ID4gPiArCQkJ Lm91dF9mZW5jZV9wdHIgPSAmb3V0X2ZlbmNlLA0KPiA+ID4gPiA+ID4gPiA+ICsJCX0sDQo+ID4g PiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiBUaGlzIGRvZXNuJ3QgYmVsb25nIGluIHRoaXMgZnVu Y3Rpb24gKGludmFsaWRfb3V0X2ZlbmNlKSwgc2luY2UgdGhpcw0KPiA+ID4gPiA+ID4gPiBjaGVj a3MgYW4gaW52YWxpZCBmcmFtZWJ1ZmZlciwgbm90IGFuIGludmFsaWQgZmVuY2UuIFdlIHNob3Vs ZCBwcm9iYWJseQ0KPiA+ID4gPiA+ID4gPiBtb3ZlIGl0IHRvIHdyaXRlYmFja19mYl9pZCAoYW5k IHJlbmFtZSB0aGF0IGZ1bmN0aW9uIHRvIHRlc3RfZmI/KS4NCj4gPiA+ID4gPiANCj4gPiA+ID4g PiBJdCB0cmllcyB0byB0ZXN0IHRoYXQgeW91IGNhbid0IHRyaWNrIHRoZSBkcml2ZXIgdG8gZG8g YW55IHdvcmsgb24gYSBmZW5jZSBpZg0KPiA+ID4gPiA+IHRoZSBmcmFtZWJ1ZmZlciBpcyBpbnZh bGlkLCBzbyB0aGUgc2V0IG9mIHRlc3RzIHRyaWVzOiBubyBmYiB3aXRoIHZhbGlkIGZlbmNlLA0K PiA+ID4gPiA+IGludmFsaWQgZmIgd2l0aCB2YWxpZCBmZW5jZSwgdmFsaWQgZmIgYnV0IGludmFs aWQgZmVuY2UgYW5kIGFzc3VtZXMgdGhhdCBubw0KPiA+ID4gPiA+IGZiIHdpdGggaW52YWxpZCBm ZW5jZSBpcyBhIE5PUCBhbnl3YXkuDQo+ID4gPiA+IA0KPiA+ID4gPiBZZWFoLCB0aGF0IG1ha2Vz IHNlbnNlLCBpdCdzIGp1c3QgY29uZnVzaW5nIHRvIHB1dCBpdCBpbiBhIGZ1bmN0aW9uDQo+ID4g PiA+IG5hbWVkIGludmFsaWRfb3V0X2ZlbmNlLiBIZXJlIHRoZSBvdXQgZmVuY2UgaXMgdmFsaWQs IGJ1dCB0aGUgb3V0cHV0DQo+ID4gPiA+IGJ1ZmZlciBpc24ndCwgc28gaXQgc2hvdWxkIHByb2Jh Ymx5IGJlIG1vdmVkIGF3YXkgKG9yIHRoaXMgZnVuY3Rpb24NCj4gPiA+ID4gc2hvdWxkIGJlIHJl bmFtZWQpLg0KPiA+ID4gDQo+ID4gPiBEb24ndCB3YW50IHRvIG9mZmVuZCBvciBhbnl0aGluZywg YnV0IHRoaXMgZG9lcyBzb3VuZCBsaWtlIGJpa2VzaGVkZGluZy4gWW91DQo+ID4gPiBoYXZlIGEg Y291cGxlIG9mIHBhcmFtZXRlcnMgdGhhdCB5b3Ugd2FudCB0byBoYXZlIGEgdGVzdCBmb3IgYmVj YXVzZSB0aGV5IGFyZQ0KPiA+ID4gbGlua2VkIHRvZ2V0aGVyIChvdXRwdXQgZnJhbWVidWZmZXIg YW5kIGZlbmNlKSBhbmQgeW91IGdvIHRocm91Z2ggdGhlDQo+ID4gPiBjb21iaW5hdGlvbiBvZiBw b3NzaWJsZSBiYWQgb3B0aW9ucyBpbiB0aGUgdGVzdC4gTm90IHN1cmUgd2hhdCBuYW1lIHdlIGNh biB1c2UNCj4gPiA+IGZvciB0aGUgZnVuY3Rpb24sIG90aGVyIHRoYW4gbWF5YmUgJ3Rlc3RfaW52 YWxpZF9wYXJhbWV0ZXJzJz8gR2l2ZW4gdGhhdCAyLzMNCj4gPiA+IHRlc3RzIGFuIGludmFsaWQg b3V0IGZlbmNlLCB0aGUgbmFtZSB3YXMgdGhvdWdodCB0byBiZSByZWxldmFudC4NCj4gPiA+IA0K PiA+ID4gSGF2aW5nIGludmFsaWQgb3V0IGJ1ZmZlciB0ZXN0IHNlcGFyYXRlIGludG8gaXRzIG93 biB0ZXN0IGJyaW5ncyBubyBiZW5lZml0cywgSU1ITy4NCj4gPiANCj4gPiBXZWxsLCB0aGUgaXNz dWUgaXMgdGhhdCBJJ3ZlIGJlZW4gY29uZnVzZWQgd2hlbiByZXZpZXdpbmcgdGhlIHBhdGNoDQo+ ID4gc2VyaWVzLiBJIGhhZCB0cm91YmxlIHVuZGVyc3RhbmRpbmcgd2hhdCB0aGUgdGVzdCBkb2Vz IGFuZCB3aHkuIEkgYWxzbw0KPiA+IGhhZCB0cm91YmxlIHRvIGlkZW50aWZ5IHRoYXQgZG9fd3Jp dGViYWNrX3Rlc3QgbmV2ZXIgc3VibWl0cyBhDQo+ID4gd3JpdGViYWNrIG9wZXJhdGlvbiAoc2Vl IG90aGVyIGUtbWFpbCkuDQo+ID4gDQo+ID4gQSBuYW1lIHRoYXQgaXMgcmVsZXZhbnQgImFsbCB0 aGUgdGltZSwgbW9zdCBvZiB0aGUgdGltZSIsIGlzIG5vdA0KPiA+IHJlbGV2YW50IGF0IGFsbCBp biBteSBvcGluaW9uLiBJdCBqdXN0IHRyaWNrcyB0aGUgcmVhZGVyIGludG8gdGhpbmtpbmcNCj4g PiB0aGUgdGVzdCBkb2VzIG9uZSB0aGluZywgd2hpbGUgaXQgYWxzbyBkb2VzIHNvbWV0aGluZyBl bHNlLg0KPiA+IA0KPiA+IElmIGl0IHdvdWxkIGJlIG9idmlvdXMsIEkgd291bGRuJ3QgbWluZC4g QnV0IGhlcmUgSU1ITyBpdCBodXJ0cw0KPiA+IHJlYWRhYmlsaXR5LiBTbyBJJ2QgcHJlZmVyIHRv IHJlbmFtZSB0aGUgZnVuY3Rpb24uDQo+IA0KPiBJIHRha2UgeW91ciBjb21tZW50cyBhcyBhIHZh bGlkIHBvaW50Lg0KPiANCj4gRG9lcyAidGVzdF9pbnZhbGlkX3BhcmFtZXRlcnMiIHNvdW5kIGxp a2UgYSBnb29kIG5hbWUgZm9yIHRoZSBmdW5jdGlvbj8gSXMgc28sDQo+IFJvZHJpZ28sIGNhbiB5 b3UgcGxlYXNlIHVzZSB0aGF0IG5hbWUgaW4gdGhlIG5leHQgcmV2aXNpb24gb2YgdGhlIHBhdGNo Pw0KDQpZZXMsIHRoaXMgbmFtZSBzb3VuZHMgcGVyZmVjdGx5IGZpbmUgOikNCg0KPiA+IElmIHlv dSB0aGluayBpdCdzIG9idmlvdXMsIHRoZW4gbWF5YmUgaXQncyBqdXN0IG1lLiBJJ2QgbG92ZSB0 byBoZWFyDQo+ID4gZnJvbSBvdGhlcnMgaWYgdGhleSBoYXZlIGEgZGlmZmVyZW50IG9waW5pb24u DQo+ID4gDQo+ID4gKEFzIGEgc2lkZSBub3RlLCBJIGFncmVlIEkgaGF2ZSBhIHRlbmRlbmN5IHRv IGJpa2VzaGVkLCBJIHRyeSB0byBtYXJrDQo+ID4gbXkgYmlrZXNoZWRkaW5ncyBiZWhpbmQgIm5p dDoiIGZsYWdzLikNCj4gDQo+IEkndmUgb25seSBzYWlkICJpdCBzb3VuZGVkIGxpa2UiIDopDQoN CkVoZWggOlANCg0KPiBCZXN0IHJlZ2FyZHMsDQo+IExpdml1DQo+IA0KPiA+ID4gQmVzdCByZWdh cmRzLA0KPiA+ID4gTGl2aXUNCj4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+ICsJCXsNCj4gPiA+ID4g PiA+ID4gPiArCQkJLyogSW52YWxpZCBXUklURUJBQ0tfT1VUX0ZFTkNFX1BUUi4gKi8NCj4gPiA+ ID4gPiA+ID4gPiArCQkJLmZiX2lkID0gdmFsaWRfZmItPmZiX2lkLA0KPiA+ID4gPiA+ID4gPiA+ ICsJCQkucHRyX3ZhbGlkID0gZmFsc2UsDQo+ID4gPiA+ID4gPiA+ID4gKwkJCS5vdXRfZmVuY2Vf cHRyID0gKGludDMyX3QgKikweDgsDQo+ID4gPiA+ID4gPiA+ID4gKwkJfSwNCj4gPiA+ID4gPiA+ ID4gPiArCX07DQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiA+ICsJZm9yIChpID0g MDsgaSA8IEFSUkFZX1NJWkUoaW52YWxpZF90ZXN0cyk7IGkrKykgew0KPiA+ID4gPiA+ID4gPiA+ ICsJCXJldCA9IGRvX3dyaXRlYmFja190ZXN0KG91dHB1dCwgRFJNX01PREVfQVRPTUlDX0FMTE9X X01PREVTRVQsDQo+ID4gPiA+ID4gPiA+ID4gKwkJCQkJaW52YWxpZF90ZXN0c1tpXS5mYl9pZCwN Cj4gPiA+ID4gPiA+ID4gPiArCQkJCQlpbnZhbGlkX3Rlc3RzW2ldLm91dF9mZW5jZV9wdHIsDQo+ ID4gPiA+ID4gPiA+ID4gKwkJCQkJaW52YWxpZF90ZXN0c1tpXS5wdHJfdmFsaWQpOw0KPiA+ID4g PiA+ID4gPiA+ICsJCWlndF9hc3NlcnQocmV0ICE9IDApOw0KPiA+ID4gPiA+ID4gPiANCj4gPiA+ ID4gPiA+ID4gTWF5YmUgd2UgY2FuIGNoZWNrIGZvciAtcmV0ID09IEVJTlZBTD8NCj4gPiA+ID4g PiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gKwl9DQo+ID4gPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4g PiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gK3N0YXRpYyB2b2lkIHdyaXRlYmFja19mYl9pZChp Z3Rfb3V0cHV0X3QgKm91dHB1dCwgaWd0X2ZiX3QgKnZhbGlkX2ZiLCBpZ3RfZmJfdCAqaW52YWxp ZF9mYikNCj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+IGludmFsaWRfZmIgZG9lc24ndCBz ZWVtIHRvIGJlIHVzZWQgaGVyZS4gdmFsaWRfZmIgc2VlbXMgdG8gYmUgc2V0IHRvDQo+ID4gPiA+ ID4gPiA+IHRoZSBpbnB1dCBmcmFtZWJ1ZmZlci4gSXQncyBwcm9iYWJseSBub3QgYSBnb29kIGlk ZWEgdG8gdXNlIHRoZSBzYW1lIEZCDQo+ID4gPiA+ID4gPiA+IGZvciBpbnB1dCBhbmQgd3JpdGVi YWNrIG91dHB1dC4NCj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4g PiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gKwlpbnQgcmV0Ow0KPiA+ID4gPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiA+ID4gPiArCS8qIFZhbGlkIG91dHB1dCBidWZmZXIgKi8NCj4gPiA+ID4gPiA+ ID4gPiArCXJldCA9IGRvX3dyaXRlYmFja190ZXN0KG91dHB1dCwgRFJNX01PREVfQVRPTUlDX0FM TE9XX01PREVTRVQsDQo+ID4gPiA+ID4gPiA+ID4gKwkJCQl2YWxpZF9mYi0+ZmJfaWQsIE5VTEws IGZhbHNlKTsNCj4gPiA+ID4gPiA+ID4gPiArCWlndF9hc3NlcnQocmV0ID09IDApOw0KPiA+ID4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiArCS8qIEludmFsaWQgb2JqZWN0IGZvciBXUklU RUJBQ0tfRkJfSUQgKi8NCj4gPiA+ID4gPiA+ID4gPiArCXJldCA9IGRvX3dyaXRlYmFja190ZXN0 KG91dHB1dCwgRFJNX01PREVfQVRPTUlDX0FMTE9XX01PREVTRVQsDQo+ID4gPiA+ID4gPiA+ID4g KwkJCQlvdXRwdXQtPmlkLCBOVUxMLCBmYWxzZSk7DQo+ID4gPiA+ID4gPiA+ID4gKwlpZ3RfYXNz ZXJ0KHJldCA9PSAtRUlOVkFMKTsNCj4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4g KwkvKiBaZXJvIFdSSVRFQkFDS19GQl9JRCAqLw0KPiA+ID4gPiA+ID4gPiA+ICsJcmV0ID0gZG9f d3JpdGViYWNrX3Rlc3Qob3V0cHV0LCBEUk1fTU9ERV9BVE9NSUNfQUxMT1dfTU9ERVNFVCwNCj4g PiA+ID4gPiA+ID4gPiArCQkJCTAsIE5VTEwsIGZhbHNlKTsNCj4gPiA+ID4gPiA+ID4gPiArCWln dF9hc3NlcnQocmV0ID09IDApOw0KPiA+ID4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ID4gPiA+ICtpZ3RfbWFpbg0KPiA+ID4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ ID4gPiA+ID4gKwlpZ3RfZGlzcGxheV90IGRpc3BsYXk7DQo+ID4gPiA+ID4gPiA+ID4gKwlpZ3Rf b3V0cHV0X3QgKm91dHB1dDsNCj4gPiA+ID4gPiA+ID4gPiArCWlndF9wbGFuZV90ICpwbGFuZTsN Cj4gPiA+ID4gPiA+ID4gPiArCWlndF9mYl90IGlucHV0X2ZiOw0KPiA+ID4gPiA+ID4gPiA+ICsJ ZHJtTW9kZU1vZGVJbmZvIG1vZGU7DQo+ID4gPiA+ID4gPiA+ID4gKwlpbnQgcmV0Ow0KPiA+ID4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiArCW1lbXNldCgmZGlzcGxheSwgMCwgc2l6ZW9m KGRpc3BsYXkpKTsNCj4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gKwlpZ3RfZml4 dHVyZSB7DQo+ID4gPiA+ID4gPiA+ID4gKwkJZGlzcGxheS5kcm1fZmQgPSBkcm1fb3Blbl9kcml2 ZXJfbWFzdGVyKERSSVZFUl9BTlkpOw0KPiA+ID4gPiA+ID4gPiA+ICsJCWlndF9kaXNwbGF5X3Jl cXVpcmUoJmRpc3BsYXksIGRpc3BsYXkuZHJtX2ZkKTsNCj4gPiA+ID4gPiA+ID4gPiArDQo+ID4g PiA+ID4gPiA+ID4gKwkJa21zdGVzdF9zZXRfdnRfZ3JhcGhpY3NfbW9kZSgpOw0KPiA+ID4gPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiArCQlpZ3RfZGlzcGxheV9yZXF1aXJlKCZkaXNwbGF5 LCBkaXNwbGF5LmRybV9mZCk7DQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiA+ICsJ CWlndF9yZXF1aXJlKGRpc3BsYXkuaXNfYXRvbWljKTsNCj4gPiA+ID4gPiA+ID4gPiArDQo+ID4g PiA+ID4gPiA+ID4gKwkJb3V0cHV0ID0ga21zX3dyaXRlYmFja19nZXRfb3V0cHV0KCZkaXNwbGF5 KTsNCj4gPiA+ID4gPiA+ID4gPiArCQlpZ3RfcmVxdWlyZShvdXRwdXQpOw0KPiA+ID4gPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiA+ID4gPiArCQlpZiAob3V0cHV0LT51c2Vfb3ZlcnJpZGVfbW9kZSkN Cj4gPiA+ID4gPiA+ID4gPiArCQkJbWVtY3B5KCZtb2RlLCAmb3V0cHV0LT5vdmVycmlkZV9tb2Rl LCBzaXplb2YobW9kZSkpOw0KPiA+ID4gPiA+ID4gPiA+ICsJCWVsc2UNCj4gPiA+ID4gPiA+ID4g PiArCQkJbWVtY3B5KCZtb2RlLCAmb3V0cHV0LT5jb25maWcuZGVmYXVsdF9tb2RlLCBzaXplb2Yo bW9kZSkpOw0KPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiArCQlwbGFuZSA9IGln dF9vdXRwdXRfZ2V0X3BsYW5lX3R5cGUob3V0cHV0LCBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsN Cj4gPiA+ID4gPiA+ID4gPiArCQlpZ3RfcmVxdWlyZShwbGFuZSk7DQo+ID4gPiA+ID4gPiA+IA0K PiA+ID4gPiA+ID4gPiBNYXliZSB3ZSBjYW4gYXNzZXJ0IG9uIHRoaXM/DQo+ID4gPiA+ID4gPiA+ IA0KPiA+ID4gPiA+ID4gPiA+ICsJCXJldCA9IGlndF9jcmVhdGVfZmIoZGlzcGxheS5kcm1fZmQs IG1vZGUuaGRpc3BsYXksDQo+ID4gPiA+ID4gPiA+ID4gKwkJCQkgICAgbW9kZS52ZGlzcGxheSwN Cj4gPiA+ID4gPiA+ID4gPiArCQkJCSAgICBEUk1fRk9STUFUX1hSR0I4ODg4LA0KPiA+ID4gPiA+ ID4gPiA+ICsJCQkJICAgIGlndF9mYl9tb2RfdG9fdGlsaW5nKDApLA0KPiA+ID4gPiA+ID4gPiAN Cj4gPiA+ID4gPiA+ID4gVGhpcyBpcyBzdXBwb3NlZCB0byB0YWtlIGEgbW9kaWZpZXIuIERSTV9G T1JNQVRfTU9EX0xJTkVBUiB3b3VsZCBiZQ0KPiA+ID4gPiA+ID4gPiBiZXR0ZXIgdG8gbWFrZSB0 aGlzIGNsZWFyLg0KPiA+ID4gPiA+IA0KPiA+ID4gPiA+IEFncmVlLiBUaGUgcGF0Y2hzZXQgcHJl LWRhdGVzIHRoZSBtb2RpZmllcnMgc3VwcG9ydCAob3IgaGFzIHRoZSBzYW1lIGFnZSwgSQ0KPiA+ ID4gPiA+IGZvcmdvdCkNCj4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gKEFwcGxpZXMgdG8gb3Ro ZXIgbGluZXMgb2YgdGhpcyBwYXRjaCkNCj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4g KwkJCQkgICAgJmlucHV0X2ZiKTsNCj4gPiA+ID4gPiA+ID4gPiArCQlpZ3RfYXNzZXJ0KHJldCA+ PSAwKTsNCj4gPiA+ID4gPiA+ID4gPiArCQlpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5lLCAmaW5wdXRf ZmIpOw0KPiA+ID4gPiA+ID4gPiA+ICsJfQ0KPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ ID4gPiArCWlndF9zdWJ0ZXN0KCJ3cml0ZWJhY2stcGl4ZWwtZm9ybWF0cyIpIHsNCj4gPiA+ID4g PiA+ID4gPiArCQlkcm1Nb2RlUHJvcGVydHlCbG9iUmVzICpmb3JtYXRzX2Jsb2IgPSBnZXRfd3Jp dGViYWNrX2Zvcm1hdHNfYmxvYihvdXRwdXQpOw0KPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ ID4gTmVlZCB0byBkcm1Nb2RlRnJlZVByb3BlcnR5QmxvYiB0aGlzLg0KPiA+ID4gPiA+ID4gPiAN Cj4gPiA+ID4gPiA+ID4gPiArCQljb25zdCBjaGFyICp2YWxpZF9jaGFycyA9ICIwMTIzNDU2IEFC Q0dOUlVWWFkiOw0KPiA+ID4gPiA+ID4gPiA+ICsJCXVuc2lnbmVkIGludCBpOw0KPiA+ID4gPiA+ ID4gPiA+ICsJCWNoYXIgKmM7DQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiA+ICsJ CS8qDQo+ID4gPiA+ID4gPiA+ID4gKwkJICogV2UgZG9uJ3QgaGF2ZSBhIGNvbXByZWhlbnNpdmUg bGlzdCBvZiBmb3JtYXRzLCBzbyBqdXN0IGNoZWNrDQo+ID4gPiA+ID4gPiA+ID4gKwkJICogdGhh dCB0aGUgYmxvYiBsZW5ndGggaXMgc2Vuc2libGUgYW5kIHRoYXQgaXQgZG9lc24ndCBjb250YWlu DQo+ID4gPiA+ID4gPiA+ID4gKwkJICogYW55IG91dGxhbmRpc2ggY2hhcmFjdGVycw0KPiA+ID4g PiA+ID4gPiA+ICsJCSAqLw0KPiA+ID4gPiA+ID4gPiA+ICsJCWlndF9hc3NlcnQoIShmb3JtYXRz X2Jsb2ItPmxlbmd0aCAlIDQpKTsNCj4gPiA+ID4gPiA+ID4gPiArCQljID0gZm9ybWF0c19ibG9i LT5kYXRhOw0KPiA+ID4gPiA+ID4gPiA+ICsJCWZvciAoaSA9IDA7IGkgPCBmb3JtYXRzX2Jsb2It Pmxlbmd0aDsgaSsrKQ0KPiA+ID4gPiA+ID4gPiA+ICsJCQlpZ3RfYXNzZXJ0X2Yoc3RyY2hyKHZh bGlkX2NoYXJzLCBjW2ldKSwNCj4gPiA+ID4gPiA+ID4gPiArCQkJCSAgICAgIlVuZXhwZWN0ZWQg Y2hhcmFjdGVyICVjXG4iLCBjW2ldKTsNCj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+IEhv bmVzdGx5LCBJJ20gbm90IGEgZmFuIG9mIHRoaXMgY2hlY2suIFRoZXJlJ3Mgbm8gZ3VhcmFudGVl IHRoYXQgZm91cmNjDQo+ID4gPiA+ID4gPiA+IGNvZGVzIHdpbGwgYmUgbWFkZSBmcm9tIEFTQ0lJ IGNoYXJhY3RlcnMsIGluIGZhY3Qgc29tZSBmb3JtYXRzIGFscmVhZHkNCj4gPiA+ID4gPiA+ID4g aGF2ZSBub24tcHJpbnRhYmxlIGNoYXJzIGluIHRoZW0uIEkgZG9uJ3Qgd2FudCB0byBoYXZlIHRv IHVwZGF0ZSB0aGlzDQo+ID4gPiA+ID4gPiA+IHRlc3Qgd2hlbiBhIG5ldyBmb3VyY2MgZm9ybWF0 IGlzIGFkZGVkLg0KPiA+ID4gPiA+IA0KPiA+ID4gPiA+IExpa2UgdGhlIGNvbW1lbnRzIHNheXMs IHdlIGRvbid0IGhhdmUgYSBmdWxsIGxpc3Qgb2YgZm9ybWF0cyB0byBjaGVjayBhZ2FpbnN0Lg0K PiA+ID4gPiA+IFN1Z2dlc3Rpb25zIG9uIGhvdyB0byBpbXByb3ZlIGFyZSB3ZWxjb21lLCBidXQg SSBkb24ndCB0aGluayB3ZSBzaG91bGQgZGVsYXkNCj4gPiA+ID4gPiAoYW55IGxvbmdlcikgdGhl IHBhdGNoc2V0IGR1ZSB0byB0aGlzLg0KPiA+ID4gPiANCj4gPiA+ID4gQWdyZWVkLg0KPiA+ID4g PiANCj4gPiA+ID4gPiBCZXN0IHJlZ2FyZHMsDQo+ID4gPiA+ID4gTGl2aXUNCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0 CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldg==