From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id F078C89A5C for ; Tue, 16 Mar 2021 13:08:59 +0000 (UTC) Date: Tue, 16 Mar 2021 14:08:54 +0100 From: Zbigniew =?utf-8?Q?Kempczy=C5=84ski?= Message-ID: <20210316130854.GB14270@zkempczy-mobl2> References: <20210315165842.64488-1-zbigniew.kempczynski@intel.com> <20210315165842.64488-38-zbigniew.kempczynski@intel.com> <161589380568.9605.17854219310890388301@build.alporthouse.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <161589380568.9605.17854219310890388301@build.alporthouse.com> Subject: Re: [igt-dev] [PATCH i-g-t v23 37/37] tests/gem_linear_blits: Use intel allocator 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: Chris Wilson Cc: igt-dev@lists.freedesktop.org List-ID: T24gVHVlLCBNYXIgMTYsIDIwMjEgYXQgMTE6MjM6MjVBTSArMDAwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IFF1b3RpbmcgWmJpZ25pZXcgS2VtcGN6ecWEc2tpICgyMDIxLTAzLTE1IDE2OjU4OjQy KQo+ID4gRnJvbTogRG9taW5payBHcnplZ29yemVrIDxkb21pbmlrLmdyemVnb3J6ZWtAaW50ZWwu Y29tPgo+ID4gCj4gPiBVc2UgaW50ZWwgYWxsb2NhdG9yIGRpcmVjdGx5LCB3aXRob3V0IGludGVs LWJiIGluZnJhc3RydWN0dXJlLgo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBEb21pbmlrIEdyemVn b3J6ZWsgPGRvbWluaWsuZ3J6ZWdvcnpla0BpbnRlbC5jb20+Cj4gPiBDYzogWmJpZ25pZXcgS2Vt cGN6ecWEc2tpIDx6Ymlnbmlldy5rZW1wY3p5bnNraUBpbnRlbC5jb20+Cj4gPiBDYzogQ2hyaXMg V2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gPiAtLS0KPiA+ICB0ZXN0cy9pOTE1 L2dlbV9saW5lYXJfYmxpdHMuYyB8IDEyMCArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0t LS0tCj4gPiAgMSBmaWxlIGNoYW5nZWQsIDg0IGluc2VydGlvbnMoKyksIDM2IGRlbGV0aW9ucygt KQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fbGluZWFyX2JsaXRzLmMgYi90 ZXN0cy9pOTE1L2dlbV9saW5lYXJfYmxpdHMuYwo+ID4gaW5kZXggY2FlNDJkNTJhLi5iODVmZDlm ZWYgMTAwNjQ0Cj4gPiAtLS0gYS90ZXN0cy9pOTE1L2dlbV9saW5lYXJfYmxpdHMuYwo+ID4gKysr IGIvdGVzdHMvaTkxNS9nZW1fbGluZWFyX2JsaXRzLmMKPiA+IEBAIC01MywxMCArNTMsMTMgQEAg SUdUX1RFU1RfREVTQ1JJUFRJT04oIlRlc3QgZG9pbmcgbWFueSBibGl0cyB3aXRoIGEgd29ya2lu ZyBzZXQgbGFyZ2VyIHRoYW4gdGhlIgo+ID4gICNkZWZpbmUgV0lEVEggNTEyCj4gPiAgI2RlZmlu ZSBIRUlHSFQgNTEyCj4gPiAgCj4gPiArLyogV2UgZG9uJ3QgaGF2ZSBhbGlnbm1lbnQgZGV0ZWN0 aW9uIHlldCwgc28gYXNzdW1lIHdvcnN0IGNhc2Ugc2NlbmFyaW8gKi8KPiA+ICsjZGVmaW5lIEFM SUdOTUVOVCAoMjA0OCoxMDI0KQo+ID4gKwo+ID4gIHN0YXRpYyB1aW50MzJfdCBsaW5lYXJbV0lE VEgqSEVJR0hUXTsKPiA+ICAKPiA+IC1zdGF0aWMgdm9pZAo+ID4gLWNvcHkoaW50IGZkLCB1aW50 MzJfdCBkc3QsIHVpbnQzMl90IHNyYykKPiA+ICtzdGF0aWMgdm9pZCBjb3B5KGludCBmZCwgdWlu dDY0X3QgYWhuZCwgdWludDMyX3QgZHN0LCB1aW50MzJfdCBzcmMsCj4gPiArICAgICAgICAgICAg ICAgIHVpbnQ2NF90IGRzdF9vZmZzZXQsIHVpbnQ2NF90IHNyY19vZmZzZXQsIGJvb2wgZG9fcmVs b2NzKQo+ID4gIHsKPiA+ICAgICAgICAgdWludDMyX3QgYmF0Y2hbMTJdOwo+ID4gICAgICAgICBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50cnkgcmVsb2NbMl07Cj4gPiBAQCAtNjQs NiArNjcsMjMgQEAgY29weShpbnQgZmQsIHVpbnQzMl90IGRzdCwgdWludDMyX3Qgc3JjKQo+ID4g ICAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGV4ZWM7Cj4gPiAgICAgICAg IGludCBpID0gMDsKPiA+ICAKPiA+ICsgICAgICAgbWVtc2V0KG9iaiwgMCwgc2l6ZW9mKG9iaikp Owo+ID4gKyAgICAgICBvYmpbMF0uaGFuZGxlID0gZHN0Owo+ID4gKyAgICAgICBvYmpbMF0ub2Zm c2V0ID0gQ0FOT05JQ0FMKGRzdF9vZmZzZXQpOwo+ID4gKyAgICAgICBvYmpbMF0uZmxhZ3MgPSBF WEVDX09CSkVDVF9QSU5ORUQgfCBFWEVDX09CSkVDVF9XUklURSB8Cj4gPiArICAgICAgICAgICAg ICAgICAgICAgIEVYRUNfT0JKRUNUX1NVUFBPUlRTXzQ4Ql9BRERSRVNTOwo+ID4gKyAgICAgICBv YmpbMV0uaGFuZGxlID0gc3JjOwo+ID4gKyAgICAgICBvYmpbMV0ub2Zmc2V0ID0gQ0FOT05JQ0FM KHNyY19vZmZzZXQpOwo+ID4gKyAgICAgICBvYmpbMV0uZmxhZ3MgPSBFWEVDX09CSkVDVF9QSU5O RUQgfAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBFWEVDX09CSkVDVF9TVVBQT1JUU180OEJf QUREUkVTUzsKPiA+ICsKPiA+ICsgICAgICAgb2JqWzJdLmhhbmRsZSA9IGdlbV9jcmVhdGUoZmQs IDQwOTYpOwo+ID4gKyAgICAgICBvYmpbMl0ub2Zmc2V0ID0gaW50ZWxfYWxsb2NhdG9yX2FsbG9j KGFobmQsIG9ialsyXS5oYW5kbGUsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICA0MDk2LCBB TElHTk1FTlQpOwo+ID4gKyAgICAgICBvYmpbMl0ub2Zmc2V0ID0gQ0FOT05JQ0FMKG9ialsyXS5v ZmZzZXQpOwo+ID4gKyAgICAgICBvYmpbMl0uZmxhZ3MgPSBFWEVDX09CSkVDVF9QSU5ORUQgfAo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICBFWEVDX09CSkVDVF9TVVBQT1JUU180OEJfQUREUkVT UzsKPiA+ICsKPiA+ICAgICAgICAgYmF0Y2hbaSsrXSA9IFhZX1NSQ19DT1BZX0JMVF9DTUQgfAo+ ID4gICAgICAgICAgICAgICAgICAgWFlfU1JDX0NPUFlfQkxUX1dSSVRFX0FMUEhBIHwKPiA+ICAg ICAgICAgICAgICAgICAgIFhZX1NSQ19DT1BZX0JMVF9XUklURV9SR0I7Cj4gPiBAQCAtNzcsNDkg Kzk3LDUyIEBAIGNvcHkoaW50IGZkLCB1aW50MzJfdCBkc3QsIHVpbnQzMl90IHNyYykKPiA+ICAg ICAgICAgICAgICAgICAgIFdJRFRIKjQ7Cj4gPiAgICAgICAgIGJhdGNoW2krK10gPSAwOyAvKiBk c3QgeDEseTEgKi8KPiA+ICAgICAgICAgYmF0Y2hbaSsrXSA9IChIRUlHSFQgPDwgMTYpIHwgV0lE VEg7IC8qIGRzdCB4Mix5MiAqLwo+ID4gLSAgICAgICBiYXRjaFtpKytdID0gMDsgLyogZHN0IHJl bG9jICovCj4gPiArICAgICAgIGJhdGNoW2krK10gPSBvYmpbMF0ub2Zmc2V0Owo+ID4gICAgICAg ICBpZiAoaW50ZWxfZ2VuKGludGVsX2dldF9kcm1fZGV2aWQoZmQpKSA+PSA4KQo+ID4gLSAgICAg ICAgICAgICAgIGJhdGNoW2krK10gPSAwOwo+ID4gKyAgICAgICAgICAgICAgIGJhdGNoW2krK10g PSBvYmpbMF0ub2Zmc2V0ID4+IDMyOwo+ID4gICAgICAgICBiYXRjaFtpKytdID0gMDsgLyogc3Jj IHgxLHkxICovCj4gPiAgICAgICAgIGJhdGNoW2krK10gPSBXSURUSCo0Owo+ID4gLSAgICAgICBi YXRjaFtpKytdID0gMDsgLyogc3JjIHJlbG9jICovCj4gPiArICAgICAgIGJhdGNoW2krK10gPSBv YmpbMV0ub2Zmc2V0Owo+ID4gICAgICAgICBpZiAoaW50ZWxfZ2VuKGludGVsX2dldF9kcm1fZGV2 aWQoZmQpKSA+PSA4KQo+ID4gLSAgICAgICAgICAgICAgIGJhdGNoW2krK10gPSAwOwo+ID4gKyAg ICAgICAgICAgICAgIGJhdGNoW2krK10gPSBvYmpbMV0ub2Zmc2V0ID4+IDMyOwo+ID4gICAgICAg ICBiYXRjaFtpKytdID0gTUlfQkFUQ0hfQlVGRkVSX0VORDsKPiA+ICAgICAgICAgYmF0Y2hbaSsr XSA9IE1JX05PT1A7Cj4gPiAgCj4gPiAtICAgICAgIG1lbXNldChyZWxvYywgMCwgc2l6ZW9mKHJl bG9jKSk7Cj4gPiAtICAgICAgIHJlbG9jWzBdLnRhcmdldF9oYW5kbGUgPSBkc3Q7Cj4gPiAtICAg ICAgIHJlbG9jWzBdLmRlbHRhID0gMDsKPiA+IC0gICAgICAgcmVsb2NbMF0ub2Zmc2V0ID0gNCAq IHNpemVvZihiYXRjaFswXSk7Cj4gPiAtICAgICAgIHJlbG9jWzBdLnByZXN1bWVkX29mZnNldCA9 IDA7Cj4gPiAtICAgICAgIHJlbG9jWzBdLnJlYWRfZG9tYWlucyA9IEk5MTVfR0VNX0RPTUFJTl9S RU5ERVI7Cj4gPiAtICAgICAgIHJlbG9jWzBdLndyaXRlX2RvbWFpbiA9IEk5MTVfR0VNX0RPTUFJ Tl9SRU5ERVI7Cj4gPiAtCj4gPiAtICAgICAgIHJlbG9jWzFdLnRhcmdldF9oYW5kbGUgPSBzcmM7 Cj4gPiAtICAgICAgIHJlbG9jWzFdLmRlbHRhID0gMDsKPiA+IC0gICAgICAgcmVsb2NbMV0ub2Zm c2V0ID0gNyAqIHNpemVvZihiYXRjaFswXSk7Cj4gPiAtICAgICAgIGlmIChpbnRlbF9nZW4oaW50 ZWxfZ2V0X2RybV9kZXZpZChmZCkpID49IDgpCj4gPiAtICAgICAgICAgICAgICAgcmVsb2NbMV0u b2Zmc2V0ICs9IHNpemVvZihiYXRjaFswXSk7Cj4gPiAtICAgICAgIHJlbG9jWzFdLnByZXN1bWVk X29mZnNldCA9IDA7Cj4gPiAtICAgICAgIHJlbG9jWzFdLnJlYWRfZG9tYWlucyA9IEk5MTVfR0VN X0RPTUFJTl9SRU5ERVI7Cj4gPiAtICAgICAgIHJlbG9jWzFdLndyaXRlX2RvbWFpbiA9IDA7Cj4g PiAtCj4gPiAtICAgICAgIG1lbXNldChvYmosIDAsIHNpemVvZihvYmopKTsKPiA+IC0gICAgICAg b2JqWzBdLmhhbmRsZSA9IGRzdDsKPiA+IC0gICAgICAgb2JqWzFdLmhhbmRsZSA9IHNyYzsKPiA+ IC0gICAgICAgb2JqWzJdLmhhbmRsZSA9IGdlbV9jcmVhdGUoZmQsIDQwOTYpOwo+ID4gICAgICAg ICBnZW1fd3JpdGUoZmQsIG9ialsyXS5oYW5kbGUsIDAsIGJhdGNoLCBpICogc2l6ZW9mKGJhdGNo WzBdKSk7Cj4gPiAtICAgICAgIG9ialsyXS5yZWxvY2F0aW9uX2NvdW50ID0gMjsKPiA+IC0gICAg ICAgb2JqWzJdLnJlbG9jc19wdHIgPSB0b191c2VyX3BvaW50ZXIocmVsb2MpOwo+ID4gKwo+ID4g KyAgICAgICBpZiAoZG9fcmVsb2NzKSB7Cj4gPiArICAgICAgICAgICAgICAgbWVtc2V0KHJlbG9j LCAwLCBzaXplb2YocmVsb2MpKTsKPiA+ICsgICAgICAgICAgICAgICByZWxvY1swXS50YXJnZXRf aGFuZGxlID0gZHN0Owo+ID4gKyAgICAgICAgICAgICAgIHJlbG9jWzBdLmRlbHRhID0gMDsKPiA+ ICsgICAgICAgICAgICAgICByZWxvY1swXS5vZmZzZXQgPSA0ICogc2l6ZW9mKGJhdGNoWzBdKTsK PiA+ICsgICAgICAgICAgICAgICByZWxvY1swXS5wcmVzdW1lZF9vZmZzZXQgPSBvYmpbMF0ub2Zm c2V0Owo+ID4gKyAgICAgICAgICAgICAgIHJlbG9jWzBdLnJlYWRfZG9tYWlucyA9IEk5MTVfR0VN X0RPTUFJTl9SRU5ERVI7Cj4gPiArICAgICAgICAgICAgICAgcmVsb2NbMF0ud3JpdGVfZG9tYWlu ID0gSTkxNV9HRU1fRE9NQUlOX1JFTkRFUjsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgICByZWxv Y1sxXS50YXJnZXRfaGFuZGxlID0gc3JjOwo+ID4gKyAgICAgICAgICAgICAgIHJlbG9jWzFdLmRl bHRhID0gMDsKPiA+ICsgICAgICAgICAgICAgICByZWxvY1sxXS5vZmZzZXQgPSA3ICogc2l6ZW9m KGJhdGNoWzBdKTsKPiA+ICsgICAgICAgICAgICAgICBpZiAoaW50ZWxfZ2VuKGludGVsX2dldF9k cm1fZGV2aWQoZmQpKSA+PSA4KQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmVsb2NbMV0u b2Zmc2V0ICs9IHNpemVvZihiYXRjaFswXSk7Cj4gPiArICAgICAgICAgICAgICAgcmVsb2NbMV0u cHJlc3VtZWRfb2Zmc2V0ID0gb2JqWzFdLm9mZnNldDsKPiA+ICsgICAgICAgICAgICAgICByZWxv Y1sxXS5yZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fUkVOREVSOwo+ID4gKyAgICAgICAg ICAgICAgIHJlbG9jWzFdLndyaXRlX2RvbWFpbiA9IDA7Cj4gPiArCj4gPiArICAgICAgICAgICAg ICAgb2JqWzBdLmZsYWdzICY9IH5FWEVDX09CSkVDVF9QSU5ORUQ7Cj4gPiArICAgICAgICAgICAg ICAgb2JqWzFdLmZsYWdzICY9IH5FWEVDX09CSkVDVF9QSU5ORUQ7Cj4gPiArICAgICAgICAgICAg ICAgb2JqWzJdLmZsYWdzICY9IH5FWEVDX09CSkVDVF9QSU5ORUQ7Cj4gPiArICAgICAgICAgICAg ICAgb2JqWzJdLnJlbG9jYXRpb25fY291bnQgPSBBUlJBWV9TSVpFKHJlbG9jKTsKPiA+ICsgICAg ICAgICAgICAgICBvYmpbMl0ucmVsb2NzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcihyZWxvYyk7Cj4g PiArICAgICAgIH0KPiA+ICAKPiA+ICAgICAgICAgbWVtc2V0KCZleGVjLCAwLCBzaXplb2YoZXhl YykpOwo+ID4gICAgICAgICBleGVjLmJ1ZmZlcnNfcHRyID0gdG9fdXNlcl9wb2ludGVyKG9iaik7 Cj4gPiAtICAgICAgIGV4ZWMuYnVmZmVyX2NvdW50ID0gMzsKPiA+ICsgICAgICAgZXhlYy5idWZm ZXJfY291bnQgPSBBUlJBWV9TSVpFKG9iaik7Cj4gPiAgICAgICAgIGV4ZWMuYmF0Y2hfbGVuID0g aSAqIHNpemVvZihiYXRjaFswXSk7Cj4gPiAgICAgICAgIGV4ZWMuZmxhZ3MgPSBnZW1faGFzX2Js dChmZCkgPyBJOTE1X0VYRUNfQkxUIDogMDsKPiA+IC0KPiA+ICAgICAgICAgZ2VtX2V4ZWNidWYo ZmQsICZleGVjKTsKPiA+ICsKPiA+ICsgICAgICAgaW50ZWxfYWxsb2NhdG9yX2ZyZWUoYWhuZCwg b2JqWzJdLmhhbmRsZSk7Cj4gPiAgICAgICAgIGdlbV9jbG9zZShmZCwgb2JqWzJdLmhhbmRsZSk7 Cj4gPiAgfQo+IAo+IAo+IEBAIC02NCw2ICs2NywyMCBAQCBjb3B5KGludCBmZCwgdWludDMyX3Qg ZHN0LCB1aW50MzJfdCBzcmMpCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGV4 ZWM7Cj4gIAlpbnQgaSA9IDA7Cj4gIAo+ICsJbWVtc2V0KG9iaiwgMCwgc2l6ZW9mKG9iaikpOwo+ ICsJb2JqWzBdLmhhbmRsZSA9IGRzdDsKPiArCW9ialswXS5vZmZzZXQgPSBDQU5PTklDQUwoZHN0 X29mZnNldCk7Cj4gKwlvYmpbMF0uZmxhZ3MgPSBFWEVDX09CSkVDVF9XUklURSB8IEVYRUNfT0JK RUNUX1NVUFBPUlRTXzQ4Ql9BRERSRVNTOwo+ICsJb2JqWzFdLmhhbmRsZSA9IHNyYzsKPiArCW9i alsxXS5vZmZzZXQgPSBDQU5PTklDQUwoc3JjX29mZnNldCk7Cj4gKwlvYmpbMV0uZmxhZ3MgPSBF WEVDX09CSkVDVF9TVVBQT1JUU180OEJfQUREUkVTUzsKPiArCj4gKwlvYmpbMl0uaGFuZGxlID0g Z2VtX2NyZWF0ZShmZCwgNDA5Nik7Cj4gKwlvYmpbMl0ub2Zmc2V0ID0gaW50ZWxfYWxsb2NhdG9y X2FsbG9jKGFobmQsIG9ialsyXS5oYW5kbGUsCj4gKwkJCTQwOTYsIEFMSUdOTUVOVCk7Cj4gKwlv YmpbMl0ub2Zmc2V0ID0gQ0FOT05JQ0FMKG9ialsyXS5vZmZzZXQpOwo+ICsJb2JqWzJdLmZsYWdz ID0gRVhFQ19PQkpFQ1RfU1VQUE9SVFNfNDhCX0FERFJFU1M7Cj4gKwo+ICAJYmF0Y2hbaSsrXSA9 IFhZX1NSQ19DT1BZX0JMVF9DTUQgfAo+ICAJCSAgWFlfU1JDX0NPUFlfQkxUX1dSSVRFX0FMUEhB IHwKPiAgCQkgIFhZX1NSQ19DT1BZX0JMVF9XUklURV9SR0I7Cj4gQEAgLTc3LDE0ICs5NCwxNCBA QCBjb3B5KGludCBmZCwgdWludDMyX3QgZHN0LCB1aW50MzJfdCBzcmMpCj4gIAkJICBXSURUSCo0 Owo+ICAJYmF0Y2hbaSsrXSA9IDA7IC8qIGRzdCB4MSx5MSAqLwo+ICAJYmF0Y2hbaSsrXSA9IChI RUlHSFQgPDwgMTYpIHwgV0lEVEg7IC8qIGRzdCB4Mix5MiAqLwo+IC0JYmF0Y2hbaSsrXSA9IDA7 IC8qIGRzdCByZWxvYyAqLwo+ICsJYmF0Y2hbaSsrXSA9IG9ialswXS5vZmZzZXQ7Cj4gIAlpZiAo aW50ZWxfZ2VuKGludGVsX2dldF9kcm1fZGV2aWQoZmQpKSA+PSA4KQo+IC0JCWJhdGNoW2krK10g PSAwOwo+ICsJCWJhdGNoW2krK10gPSBvYmpbMF0ub2Zmc2V0ID4+IDMyOwo+ICAJYmF0Y2hbaSsr XSA9IDA7IC8qIHNyYyB4MSx5MSAqLwo+ICAJYmF0Y2hbaSsrXSA9IFdJRFRIKjQ7Cj4gLQliYXRj aFtpKytdID0gMDsgLyogc3JjIHJlbG9jICovCj4gKwliYXRjaFtpKytdID0gb2JqWzFdLm9mZnNl dDsKPiAgCWlmIChpbnRlbF9nZW4oaW50ZWxfZ2V0X2RybV9kZXZpZChmZCkpID49IDgpCj4gLQkJ YmF0Y2hbaSsrXSA9IDA7Cj4gKwkJYmF0Y2hbaSsrXSA9IG9ialsxXS5vZmZzZXQgPj4gMzI7Cj4g IAliYXRjaFtpKytdID0gTUlfQkFUQ0hfQlVGRkVSX0VORDsKPiAgCWJhdGNoW2krK10gPSBNSV9O T09QOwo+ICAKPiBAQCAtOTIsNyArMTA5LDcgQEAgY29weShpbnQgZmQsIHVpbnQzMl90IGRzdCwg dWludDMyX3Qgc3JjKQo+ICAJcmVsb2NbMF0udGFyZ2V0X2hhbmRsZSA9IGRzdDsKPiAgCXJlbG9j WzBdLmRlbHRhID0gMDsKPiAgCXJlbG9jWzBdLm9mZnNldCA9IDQgKiBzaXplb2YoYmF0Y2hbMF0p Owo+IC0JcmVsb2NbMF0ucHJlc3VtZWRfb2Zmc2V0ID0gMDsKPiArCXJlbG9jWzBdLnByZXN1bWVk X29mZnNldCA9IG9ialswXS5vZmZzZXQ7Cj4gIAlyZWxvY1swXS5yZWFkX2RvbWFpbnMgPSBJOTE1 X0dFTV9ET01BSU5fUkVOREVSOwo+ICAJcmVsb2NbMF0ud3JpdGVfZG9tYWluID0gSTkxNV9HRU1f RE9NQUlOX1JFTkRFUjsKPiAgCj4gQEAgLTEwMSwyNSArMTE4LDI5IEBAIGNvcHkoaW50IGZkLCB1 aW50MzJfdCBkc3QsIHVpbnQzMl90IHNyYykKPiAgCXJlbG9jWzFdLm9mZnNldCA9IDcgKiBzaXpl b2YoYmF0Y2hbMF0pOwo+ICAJaWYgKGludGVsX2dlbihpbnRlbF9nZXRfZHJtX2RldmlkKGZkKSkg Pj0gOCkKPiAgCQlyZWxvY1sxXS5vZmZzZXQgKz0gc2l6ZW9mKGJhdGNoWzBdKTsKPiAtCXJlbG9j WzFdLnByZXN1bWVkX29mZnNldCA9IDA7Cj4gKwlyZWxvY1sxXS5wcmVzdW1lZF9vZmZzZXQgPSBv YmpbMV0ub2Zmc2V0Owo+ICAJcmVsb2NbMV0ucmVhZF9kb21haW5zID0gSTkxNV9HRU1fRE9NQUlO X1JFTkRFUjsKPiAgCXJlbG9jWzFdLndyaXRlX2RvbWFpbiA9IDA7Cj4gIAo+IC0JbWVtc2V0KG9i aiwgMCwgc2l6ZW9mKG9iaikpOwo+IC0Jb2JqWzBdLmhhbmRsZSA9IGRzdDsKPiAtCW9ialsxXS5o YW5kbGUgPSBzcmM7Cj4gLQlvYmpbMl0uaGFuZGxlID0gZ2VtX2NyZWF0ZShmZCwgNDA5Nik7Cj4g IAlnZW1fd3JpdGUoZmQsIG9ialsyXS5oYW5kbGUsIDAsIGJhdGNoLCBpICogc2l6ZW9mKGJhdGNo WzBdKSk7Cj4gLQlvYmpbMl0ucmVsb2NhdGlvbl9jb3VudCA9IDI7Cj4gLQlvYmpbMl0ucmVsb2Nz X3B0ciA9IHRvX3VzZXJfcG9pbnRlcihyZWxvYyk7Cj4gKwo+ICsJaWYgKGRvX3JlbG9jcykgewo+ ICsJCW9ialsyXS5yZWxvY2F0aW9uX2NvdW50ID0gQVJSQVlfU0laRShyZWxvYyk7Cj4gKwkJb2Jq WzJdLnJlbG9jc19wdHIgPSB0b191c2VyX3BvaW50ZXIocmVsb2MpOwo+ICsJfSBlbHNlIHsKPiAr CQlvYmpbMF0uZmxhZ3MgfD0gRVhFQ19PQkpFQ1RfUElOTkVEOwo+ICsJCW9ialsxXS5mbGFncyB8 PSBFWEVDX09CSkVDVF9QSU5ORUQ7Cj4gKwkJb2JqWzJdLmZsYWdzIHw9IEVYRUNfT0JKRUNUX1BJ Tk5FRDsKPiArCX0KPiAgCj4gIAltZW1zZXQoJmV4ZWMsIDAsIHNpemVvZihleGVjKSk7Cj4gIAll eGVjLmJ1ZmZlcnNfcHRyID0gdG9fdXNlcl9wb2ludGVyKG9iaik7Cj4gLQlleGVjLmJ1ZmZlcl9j b3VudCA9IDM7Cj4gKwlleGVjLmJ1ZmZlcl9jb3VudCA9IEFSUkFZX1NJWkUob2JqKTsKPiAgCWV4 ZWMuYmF0Y2hfbGVuID0gaSAqIHNpemVvZihiYXRjaFswXSk7Cj4gIAlleGVjLmZsYWdzID0gZ2Vt X2hhc19ibHQoZmQpID8gSTkxNV9FWEVDX0JMVCA6IDA7Cj4gLQo+ICAJZ2VtX2V4ZWNidWYoZmQs ICZleGVjKTsKPiArCj4gKwlpbnRlbF9hbGxvY2F0b3JfZnJlZShhaG5kLCBvYmpbMl0uaGFuZGxl KTsKPiAgCWdlbV9jbG9zZShmZCwgb2JqWzJdLmhhbmRsZSk7Cj4gIH0KPiAKPiAKPiBJcyBtb3Jl IGNvbmNpc2UsIGJvdGggaW4gZGVsdGEgYW5kIHRlc3QgZmxvdy4KCkFib3ZlIG1ha2VzIHNlbnNl LCBsb29rcyBiZXR0ZXIuIEknbGwgc2VudCB0aGlzIGluIGFuIGhvdXIuCgotLQpaYmlnbmlldwoK PiAKPiBJdCBhbHNvIHN1Z2dlc3RzIHNvbWV0aGluZyBsaWtlCj4gCj4gaW50ZWxfYWxsb2NhdG9y X2FwcGx5X3JlbG9jYXRpb25zKGFobmQsICZleGVjKToKPiAJZm9yZWFjaChleGVjLm9iaikgewo+ IAkJZm9yZWFjaChleGVjb2JqLnJlbG9jKSB7Cj4gCQkJaWYgKHJlbG9jLndyaXRlX2RvbWFpbikK PiAJCQkJZXhlY29iai5mbGFncyB8PSBFWEVDX09CSkVDVF9XUklURTsKPiAKPiAJCQlpZiAocmVs b2MucHJlc3VtZWRfb2Zmc2V0ID09IHJlbG9jLnRhcmdldC0+b2Zmc2V0KQo+IAkJCQljb250aW51 ZTsKPiAKPiAJCQlyZWxvYy5wcmVzdW1lZF9vZmZzZXQgPSBsb29rdXBfZXhlY19vZmZzZXQoZXhl YywgcmVsb2MudGFyZ2V0KTsKPiAJCQl1NjQgYWRkcmVzcyA9IHJlbG9jLnByZXN1bWVkX29mZnNl dCArIChpbnQpcmVsb2MuZGVsdGE7Cj4gCQkJbWVtY3B5KG1tYXAoZXhlY29iaikgKyByZWxvYy5v ZmZzZXQsICZhZGRyZXNzLCBhaG5kLT5hZGRyZXNzX3NpemUpOwo+IAkJfQo+IAkJaWYgKCFhaG5k LT51c2VfcmVsb2NzKSB7Cj4gCQkJZXhlY29iai5yZWxvYyA9IHt9Owo+IAkJCWV4ZWNvYmouZmxh Z3MgfD0gRVhFQ19PQkpFQ1RfUElOTkVEOwo+IAkJfQo+IAl9Cj4gCWV4ZWMuZmxhZ3MgfD0gSTkx NV9FWEVDX05PUkVMT0M7Cj4gCj4gCj4gd291bGQgYmUgcmVhbGx5IHVzZWZ1bCBmb3IgY29udmVy dGluZyB0ZXN0cy4KCkknbSBnb2luZyB0byBkbyB0aGlzIGluIG5leHQgc2VyaWVzIHdoZW4gSSBz dGFydCByZXdyaXRpbmcgdGVzdHMuCkN1cnJlbnQgc2VyaWVzIGhhcyB0byBtdWNoIGl0ZXJhdGlv bnMgYW5kIEkgd291bGQgbGlrZSB0byBhZGQgCmFsbCBjb252aW5pZW5jZSBjb2RlIGxhdGVyIHdo ZW4gdGhpcyBzZXJpZXMgd2lsbCBiZSBtZXJnZWQuCgpCdXQgeWVzLCB5b3UncmUgcmlnaHQgYW5k IHRoaXMgY291bGQgc2F2ZSBhIGxvdCBvZiB0aW1lIGR1cmluZwpyZXdyaXRpbmcuCgotLQpaYmln bmlldwo+IAo+IAo+ID4gQEAgLTE1NywxNyArMTgwLDI4IEBAIGNoZWNrX2JvKGludCBmZCwgdWlu dDMyX3QgaGFuZGxlLCB1aW50MzJfdCB2YWwpCj4gPiAgICAgICAgIGlndF9hc3NlcnRfZXEobnVt X2Vycm9ycywgMCk7Cj4gPiAgfQo+ID4gIAo+ID4gLXN0YXRpYyB2b2lkIHJ1bl90ZXN0KGludCBm ZCwgaW50IGNvdW50KQo+ID4gK3N0YXRpYyB2b2lkIHJ1bl90ZXN0KGludCBmZCwgaW50IGNvdW50 LCBib29sIGRvX3JlbG9jcykKPiA+ICB7Cj4gPiAgICAgICAgIHVpbnQzMl90ICpoYW5kbGUsICpz dGFydF92YWw7Cj4gPiArICAgICAgIHVpbnQ2NF90ICpvZmZzZXQsIGFobmQ7Cj4gPiAgICAgICAg IHVpbnQzMl90IHN0YXJ0ID0gMDsKPiA+ICAgICAgICAgaW50IGk7Cj4gPiAgCj4gPiArICAgICAg IGFobmQgPSBpbnRlbF9hbGxvY2F0b3Jfb3BlbihmZCwgMCwgZG9fcmVsb2NzID8KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5URUxfQUxMT0NBVE9SX1JF TE9DIDoKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5U RUxfQUxMT0NBVE9SX1NJTVBMRSk7Cj4gPiArCj4gPiAgICAgICAgIGhhbmRsZSA9IG1hbGxvYyhz aXplb2YodWludDMyX3QpICogY291bnQgKiAyKTsKPiA+ICsgICAgICAgb2Zmc2V0ID0gY2FsbG9j KDEsIHNpemVvZih1aW50NjRfdCkgKiBjb3VudCk7Cj4gCj4gY2FsbG9jKGNvdW50LCBzaXplb2Yo dWludDY0X3QpCj4gCj4gPiArICAgICAgIGlndF9hc3NlcnRfZihoYW5kbGUgJiYgb2Zmc2V0LCAi QWxsb2NhdGlvbiBmYWlsZWRcbiIpOwo+ID4gICAgICAgICBzdGFydF92YWwgPSBoYW5kbGUgKyBj b3VudDsKPiA+ICAKPiA+ICAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKPiA+ ICAgICAgICAgICAgICAgICBoYW5kbGVbaV0gPSBjcmVhdGVfYm8oZmQsIHN0YXJ0KTsKPiA+ICsK PiA+ICsgICAgICAgICAgICAgICBvZmZzZXRbaV0gPSBpbnRlbF9hbGxvY2F0b3JfYWxsb2MoYWhu ZCwgaGFuZGxlW2ldLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzaXplb2YobGluZWFyKSwgQUxJR05NRU5UKTsKPiA+ICsKPiA+ICAgICAgICAg ICAgICAgICBzdGFydF92YWxbaV0gPSBzdGFydDsKPiA+ICAgICAgICAgICAgICAgICBzdGFydCAr PSAxMDI0ICogMTAyNCAvIDQ7Cj4gPiAgICAgICAgIH0KPiA+IEBAIC0xNzgsMTcgKzIxMiwyMiBA QCBzdGF0aWMgdm9pZCBydW5fdGVzdChpbnQgZmQsIGludCBjb3VudCkKPiA+ICAKPiA+ICAgICAg ICAgICAgICAgICBpZiAoc3JjID09IGRzdCkKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnRpbnVlOwo+ID4gKyAgICAgICAgICAgICAgIGNvcHkoZmQsIGFobmQsIGhhbmRsZVtkc3RdLCBo YW5kbGVbc3JjXSwKPiA+ICsgICAgICAgICAgICAgICAgICAgIG9mZnNldFtkc3RdLCBvZmZzZXRb c3JjXSwgZG9fcmVsb2NzKTsKPiA+ICAKPiA+IC0gICAgICAgICAgICAgICBjb3B5KGZkLCBoYW5k bGVbZHN0XSwgaGFuZGxlW3NyY10pOwo+ID4gICAgICAgICAgICAgICAgIHN0YXJ0X3ZhbFtkc3Rd ID0gc3RhcnRfdmFsW3NyY107Cj4gPiAgICAgICAgIH0KPiA+ICAKPiA+ICAgICAgICAgZm9yIChp ID0gMDsgaSA8IGNvdW50OyBpKyspIHsKPiA+ICAgICAgICAgICAgICAgICBjaGVja19ibyhmZCwg aGFuZGxlW2ldLCBzdGFydF92YWxbaV0pOwo+ID4gKyAgICAgICAgICAgICAgIGludGVsX2FsbG9j YXRvcl9mcmVlKGFobmQsIGhhbmRsZVtpXSk7Cj4gPiAgICAgICAgICAgICAgICAgZ2VtX2Nsb3Nl KGZkLCBoYW5kbGVbaV0pOwo+ID4gICAgICAgICB9Cj4gPiAgCj4gPiAgICAgICAgIGZyZWUoaGFu ZGxlKTsKPiA+ICsgICAgICAgZnJlZShvZmZzZXQpOwo+ID4gKwo+ID4gKyAgICAgICBpbnRlbF9h bGxvY2F0b3JfY2xvc2UoYWhuZCk7Cj4gPiAgfQo+ID4gIAo+ID4gICNkZWZpbmUgTUFYXzMyYiAo KDF1bGwgPDwgMzIpIC0gNDA5NikKPiA+IEBAIC0xOTcsMTYgKzIzNiwyMSBAQCBpZ3RfbWFpbgo+ ID4gIHsKPiA+ICAgICAgICAgY29uc3QgaW50IG5jcHVzID0gc3lzY29uZihfU0NfTlBST0NFU1NP UlNfT05MTik7Cj4gPiAgICAgICAgIHVpbnQ2NF90IGNvdW50ID0gMDsKPiA+ICsgICAgICAgYm9v bCBkb19yZWxvY3M7Cj4gPiAgICAgICAgIGludCBmZCA9IC0xOwo+ID4gIAo+ID4gICAgICAgICBp Z3RfZml4dHVyZSB7Cj4gPiAgICAgICAgICAgICAgICAgZmQgPSBkcm1fb3Blbl9kcml2ZXIoRFJJ VkVSX0lOVEVMKTsKPiA+ICAgICAgICAgICAgICAgICBpZ3RfcmVxdWlyZV9nZW0oZmQpOwo+ID4g ICAgICAgICAgICAgICAgIGdlbV9yZXF1aXJlX2JsaXR0ZXIoZmQpOwo+ID4gKyAgICAgICAgICAg ICAgIGRvX3JlbG9jcyA9ICFnZW1fdXNlc19wcGd0dChmZCk7Cj4gPiAgCj4gPiAgICAgICAgICAg ICAgICAgY291bnQgPSBnZW1fYXBlcnR1cmVfc2l6ZShmZCk7Cj4gPiAgICAgICAgICAgICAgICAg aWYgKGNvdW50ID4+IDMyKQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgY291bnQgPSBNQVhf MzJiOwo+ID4gKyAgICAgICAgICAgICAgIGVsc2UKPiA+ICsgICAgICAgICAgICAgICAgICAgICAg IGRvX3JlbG9jcyA9IHRydWU7Cj4gCj4gU28gdGhpcyBjYXRjaGVzIEJyYXN3ZWxsIChoYXMgYSAz MmIgZnVsbC1wcGd0dCkgYW5kIG9ubHkgQnJhc3dlbGwuCj4gQW55IHJlYXNvbiB3aHkgdGhlIHNp bXBsZSBhbGxvY2F0b3IgY2Fubm90IGhhbmRsZSBsZXNzIHRoYW4gMzJiIG9mCj4gYWRkcmVzcyBz cGFjZT8KPiAKPiA+ICsKPiA+ICAgICAgICAgICAgICAgICBjb3VudCA9IDMgKyBjb3VudCAvICgx MDI0KjEwMjQpOwo+ID4gICAgICAgICAgICAgICAgIGlndF9yZXF1aXJlKGNvdW50ID4gMSk7Cj4g PiAgICAgICAgICAgICAgICAgaW50ZWxfcmVxdWlyZV9tZW1vcnkoY291bnQsIHNpemVvZihsaW5l YXIpLCBDSEVDS19SQU0pOwo+ID4gQEAgLTIxNiwxOSArMjYwLDIzIEBAIGlndF9tYWluCj4gPiAg ICAgICAgIH0KPiA+ICAKPiA+ICAgICAgICAgaWd0X3N1YnRlc3QoImJhc2ljIikKPiA+IC0gICAg ICAgICAgICAgICBydW5fdGVzdChmZCwgMik7Cj4gPiArICAgICAgICAgICAgICAgcnVuX3Rlc3Qo ZmQsIDIsIGRvX3JlbG9jcyk7Cj4gPiAgCj4gPiAgICAgICAgIGlndF9zdWJ0ZXN0KCJub3JtYWwi KSB7Cj4gPiArICAgICAgICAgICAgICAgaW50ZWxfYWxsb2NhdG9yX211bHRpcHJvY2Vzc19zdGFy dCgpOwo+ID4gICAgICAgICAgICAgICAgIGlndF9mb3JrKGNoaWxkLCBuY3B1cykKPiA+IC0gICAg ICAgICAgICAgICAgICAgICAgIHJ1bl90ZXN0KGZkLCBjb3VudCk7Cj4gPiArICAgICAgICAgICAg ICAgICAgICAgICBydW5fdGVzdChmZCwgY291bnQsIGRvX3JlbG9jcyk7Cj4gPiAgICAgICAgICAg ICAgICAgaWd0X3dhaXRjaGlsZHJlbigpOwo+ID4gKyAgICAgICAgICAgICAgIGludGVsX2FsbG9j YXRvcl9tdWx0aXByb2Nlc3Nfc3RvcCgpOwo+ID4gICAgICAgICB9Cj4gPiAgCj4gPiAgICAgICAg IGlndF9zdWJ0ZXN0KCJpbnRlcnJ1cHRpYmxlIikgewo+ID4gKyAgICAgICAgICAgICAgIGludGVs X2FsbG9jYXRvcl9tdWx0aXByb2Nlc3Nfc3RhcnQoKTsKPiA+ICAgICAgICAgICAgICAgICBpZ3Rf Zm9ya19zaWduYWxfaGVscGVyKCk7Cj4gPiAgICAgICAgICAgICAgICAgaWd0X2ZvcmsoY2hpbGQs IG5jcHVzKQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgcnVuX3Rlc3QoZmQsIGNvdW50KTsK PiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJ1bl90ZXN0KGZkLCBjb3VudCwgZG9fcmVsb2Nz KTsKPiA+ICAgICAgICAgICAgICAgICBpZ3Rfd2FpdGNoaWxkcmVuKCk7Cj4gPiAgICAgICAgICAg ICAgICAgaWd0X3N0b3Bfc2lnbmFsX2hlbHBlcigpOwo+ID4gKyAgICAgICAgICAgICAgIGludGVs X2FsbG9jYXRvcl9tdWx0aXByb2Nlc3Nfc3RvcCgpOwo+ID4gICAgICAgICB9Cj4gPiAgfQo+ID4g LS0gCj4gPiAyLjI2LjAKPiA+IAo+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KPiA+IGlndC1kZXYgbWFpbGluZyBsaXN0Cj4gPiBpZ3QtZGV2QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwo+ID4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pZ3QtZGV2Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRl dgo=