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 gabe.freedesktop.org (Postfix) with ESMTPS id B79D86E5F7 for ; Tue, 5 Feb 2019 15:18:48 +0000 (UTC) References: <1548419427-16597-1-git-send-email-juhapekka.heikkila@gmail.com> <16cb8f0f-1a3d-8e73-5fa9-ef69c2a7d158@gmail.com> <79cf764e56384a486f1e65a83c05ef328b72b0f7.camel@intel.com> From: Juha-Pekka Heikkila Message-ID: <49804376-deea-9097-3dbf-50a04542ee8f@gmail.com> Date: Tue, 5 Feb 2019 17:18:35 +0200 MIME-Version: 1.0 In-Reply-To: <79cf764e56384a486f1e65a83c05ef328b72b0f7.camel@intel.com> Content-Language: en-US Subject: Re: [igt-dev] [PATCH i-g-t] tests/kms_available_modes_crc: Fix handling of test comparisons List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: juhapekka.heikkila@gmail.com Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: dhinakaran.pandiyan@intel.com, igt-dev@lists.freedesktop.org List-ID: T24gMzAuMS4yMDE5IDIwLjIzLCBEaGluYWthcmFuIFBhbmRpeWFuIHdyb3RlOgo+IE9uIFdlZCwg MjAxOS0wMS0zMCBhdCAxMzoyNSArMDIwMCwgSnVoYS1QZWtrYSBIZWlra2lsYSB3cm90ZToKPj4g T24gMzAuMS4yMDE5IDguNDAsIERoaW5ha2FyYW4gUGFuZGl5YW4gd3JvdGU6Cj4+PiBPbiBGcmks IDIwMTktMDEtMjUgYXQgMTQ6MzAgKzAyMDAsIEp1aGEtUGVra2EgSGVpa2tpbGEgd3JvdGU6Cj4+ Pj4gRml4ZWQgaGFuZGxpbmcgb2Ygc2luZ2xlIHBsYW5lIG1vZGVzIHNvIHVzZWQgYnBwIG5ldmVy IGdldCB0bwo+Pj4+IGJlIDAuCj4+Pj4KPj4+PiBSZWR1Y2UgdmVyYm9zZW5lc3MgaWYgdGhlcmUn cyBubyBlcnJvcnMuCj4+Pj4KPj4+PiBCdWd6aWxsYTogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9w Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NzAxCj4+Pj4gU2lnbmVkLW9mZi1ieTogSnVoYS1QZWtr YSBIZWlra2lsYSA8anVoYXBla2thLmhlaWtraWxhQGdtYWlsLmNvbT4KPj4+PiAtLS0KPj4+PiAg ICB0ZXN0cy9rbXNfYXZhaWxhYmxlX21vZGVzX2NyYy5jIHwgMTIzICsrKysrKysrKysrKysrKysr KysrLS0tLS0KPj4+PiAtLS0KPj4+PiAtLS0tLS0tLS0tLS0KPj4+PiAgICAxIGZpbGUgY2hhbmdl ZCwgNjEgaW5zZXJ0aW9ucygrKSwgNjIgZGVsZXRpb25zKC0pCj4+Pj4KPj4+PiBkaWZmIC0tZ2l0 IGEvdGVzdHMva21zX2F2YWlsYWJsZV9tb2Rlc19jcmMuYwo+Pj4+IGIvdGVzdHMva21zX2F2YWls YWJsZV9tb2Rlc19jcmMuYwo+Pj4+IGluZGV4IDdmZjM4NWYuLjQzMmMwODQgMTAwNjQ0Cj4+Pj4g LS0tIGEvdGVzdHMva21zX2F2YWlsYWJsZV9tb2Rlc19jcmMuYwo+Pj4+ICsrKyBiL3Rlc3RzL2tt c19hdmFpbGFibGVfbW9kZXNfY3JjLmMKPj4+PiBAQCAtNTQsNiArNTQsMTIgQEAgdHlwZWRlZiBz dHJ1Y3Qgewo+Pj4+ICAgIAo+Pj4+ICAgIAlpZ3RfY3JjX3QgY3Vyc29yX2NyYzsKPj4+PiAgICAJ aWd0X2NyY190IGZ1bGxzY3JlZW5fY3JjOwo+Pj4+ICsKPj4+PiArCS8qCj4+Pj4gKwkgKiBJZiB0 aGVyZSdzIHVua25vd24gZm9ybWF0IHNldHRpbmcgdXAgbW9kZSBjYW4gZmFpbAo+Pj4+ICsJICog d2l0aG91dCBmYWlsaW5nIGVudGlyZSB0ZXN0Lgo+Pj4+ICsJICovCj4+Pj4gKwlib29sIGFsbG93 X2ZhaWw7Cj4+Pj4gICAgfSBkYXRhX3Q7Cj4+Pj4gICAgCj4+Pj4gICAgCj4+Pj4gQEAgLTEyMCw3 ICsxMjYsNiBAQCBzdGF0aWMgdm9pZAo+Pj4+IGdlbmVyYXRlX2NvbXBhcmlzb25fY3JjX2xpc3Qo ZGF0YV90Cj4+Pj4gKmRhdGEsIGlndF9vdXRwdXRfdCAqb3V0cHV0KQo+Pj4+ICAgIAo+Pj4+ICAg IHN0YXRpYyBjb25zdCBzdHJ1Y3Qgewo+Pj4+ICAgIAl1aW50MzJfdAlmb3VyY2M7Cj4+Pj4gLQlj aGFyCQl6ZXJvcGFkZGluZzsKPj4+PiAgICAJZW51bQkJeyBCWVRFU19QUF8xPTEsCj4+Pj4gICAg CQkJCUJZVEVTX1BQXzI9MiwKPj4+PiAgICAJCQkJQllURVNfUFBfND00LAo+Pj4+IEBAIC0xMjks MTAgKzEzNCwxMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHsKPj4+PiAgICAJCQkJU0tJUDQgfSBi cHA7Cj4+Pj4gICAgCXVpbnQzMl90CXZhbHVlOwo+Pj4+ICAgIH0gZmlsbGVyc1tdID0gewo+Pj4+ IC0JeyBEUk1fRk9STUFUX0M4LCAwLCBCWVRFU19QUF8xLCAweGZmfSwKPj4+PiAtCXsgRFJNX0ZP Uk1BVF9SR0I1NjUsIDAsIEJZVEVTX1BQXzIsIDB4ZmZmZn0sCj4+Pj4gLQl7IERSTV9GT1JNQVRf WFJHQjg4ODgsIDAsIEJZVEVTX1BQXzQsIDB4ZmZmZmZmZmZ9LAo+Pj4+IC0JeyBEUk1fRk9STUFU X1hCR1I4ODg4LCAwLCBCWVRFU19QUF80LCAweGZmZmZmZmZmfSwKPj4+PiArCXsgRFJNX0ZPUk1B VF9DOCwgQllURVNfUFBfMSwgMHhmZn0sCj4+Pj4gKwl7IERSTV9GT1JNQVRfUkdCNTY1LCBCWVRF U19QUF8yLCAweGZmZmZ9LAo+Pj4+ICsJeyBEUk1fRk9STUFUX1hSR0I4ODg4LCBCWVRFU19QUF80 LCAweGZmZmZmZmZmfSwKPj4+PiArCXsgRFJNX0ZPUk1BVF9YQkdSODg4OCwgQllURVNfUFBfNCwg MHhmZmZmZmZmZn0sCj4+Pj4gICAgCj4+Pj4gICAgCS8qCj4+Pj4gICAgCSAqIGZvbGxvd2luZyB0 d28gYXJlIHNraXBwZWQgYmVjYXVzZSBibGVuZGluZyBzZWVtcyB0bwo+Pj4+IHdvcmsKPj4+PiBA QCAtMTQwLDMxICsxNDUsMzEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB7Cj4+Pj4gICAgCSAqIFRl c3Qgc3RpbGwgY3JlYXRlcyB0aGUgcGxhbmVzLCBqdXN0IGZpbGxpbmcgcGxhbmUKPj4+PiAgICAJ ICogYW5kIGdldHRpbmcgY3JjIGlzIHNraXBwZWQuCj4+Pj4gICAgCSAqLwo+Pj4+IC0JeyBEUk1f Rk9STUFUX0FSR0I4ODg4LCAwLCBTS0lQNCwgMHhmZmZmZmZmZn0sCj4+Pj4gLQl7IERSTV9GT1JN QVRfQUJHUjg4ODgsIDAsIFNLSVA0LCAweDAwZmZmZmZmfSwKPj4+PiArCXsgRFJNX0ZPUk1BVF9B UkdCODg4OCwgU0tJUDQsIDB4ZmZmZmZmZmZ9LAo+Pj4+ICsJeyBEUk1fRk9STUFUX0FCR1I4ODg4 LCBTS0lQNCwgMHgwMGZmZmZmZn0sCj4+Pj4gICAgCj4+Pj4gLQl7IERSTV9GT1JNQVRfWFJHQjIx MDEwMTAsIDAsIEJZVEVTX1BQXzQsIDB4ZmZmZmZmZmZ9LAo+Pj4+IC0JeyBEUk1fRk9STUFUX1hC R1IyMTAxMDEwLCAwLCBCWVRFU19QUF80LCAweGZmZmZmZmZmfSwKPj4+PiArCXsgRFJNX0ZPUk1B VF9YUkdCMjEwMTAxMCwgQllURVNfUFBfNCwgMHhmZmZmZmZmZn0sCj4+Pj4gKwl7IERSTV9GT1JN QVRfWEJHUjIxMDEwMTAsIEJZVEVTX1BQXzQsIDB4ZmZmZmZmZmZ9LAo+Pj4+ICAgIAo+Pj4+IC0J eyBEUk1fRk9STUFUX1lVWVYsIDAsIEJZVEVTX1BQXzQsIDB4ODBlYjgwZWJ9LAo+Pj4+IC0JeyBE Uk1fRk9STUFUX1lWWVUsIDAsIEJZVEVTX1BQXzQsIDB4ODBlYjgwZWJ9LAo+Pj4+IC0JeyBEUk1f Rk9STUFUX1ZZVVksIDAsIEJZVEVTX1BQXzQsIDB4ZWI4MGViODB9LAo+Pj4+IC0JeyBEUk1fRk9S TUFUX1VZVlksIDAsIEJZVEVTX1BQXzQsIDB4ZWI4MGViODB9LAo+Pj4+ICsJeyBEUk1fRk9STUFU X1lVWVYsIEJZVEVTX1BQXzQsIDB4ODBlYjgwZWJ9LAo+Pj4+ICsJeyBEUk1fRk9STUFUX1lWWVUs IEJZVEVTX1BQXzQsIDB4ODBlYjgwZWJ9LAo+Pj4+ICsJeyBEUk1fRk9STUFUX1ZZVVksIEJZVEVT X1BQXzQsIDB4ZWI4MGViODB9LAo+Pj4+ICsJeyBEUk1fRk9STUFUX1VZVlksIEJZVEVTX1BQXzQs IDB4ZWI4MGViODB9LAo+Pj4+ICAgIAo+Pj4+ICAgIAkvKgo+Pj4+ICAgIAkgKiAoc2VtaS0pcGxh bmFyIGZvcm1hdHMKPj4+PiAgICAJICovCj4+Pj4gLQl7IERSTV9GT1JNQVRfTlYxMiwgMCwgTlYx MiwgMHg4MGVifSwKPj4+PiArCXsgRFJNX0ZPUk1BVF9OVjEyLCBOVjEyLCAweDgwZWJ9LAo+Pj4+ ICAgICNpZmRlZiBEUk1fRk9STUFUX1AwMTAKPj4+PiAtCXsgRFJNX0ZPUk1BVF9QMDEwLCAwLCBQ MDEwLCAweDgwMDBlYjAwfSwKPj4+PiArCXsgRFJNX0ZPUk1BVF9QMDEwLCBQMDEwLCAweDgwMDBl YjAwfSwKPj4+PiAgICAjZW5kaWYKPj4+PiAgICAjaWZkZWYgRFJNX0ZPUk1BVF9QMDEyCj4+Pj4g LQl7IERSTV9GT1JNQVRfUDAxMiwgMCwgUDAxMCwgMHg4MDAwZWIwMH0sCj4+Pj4gKwl7IERSTV9G T1JNQVRfUDAxMiwgUDAxMCwgMHg4MDAwZWIwMH0sCj4+Pj4gICAgI2VuZGlmCj4+Pj4gICAgI2lm ZGVmIERSTV9GT1JNQVRfUDAxNgo+Pj4+IC0JeyBEUk1fRk9STUFUX1AwMTYsIDAsIFAwMTAsIDB4 ODAwMGViMDB9LAo+Pj4+ICsJeyBEUk1fRk9STUFUX1AwMTYsIFAwMTAsIDB4ODAwMGViMDB9LAo+ Pj4KPj4+IERvZXNuJ3QgdGhlIGxpYnJhcnkgaW1wbGVtZW50IHRoaXMgc3R1ZmYgYWxyZWFkeT8g SSBzZWUgc2ltaWxhcgo+Pj4gY29kZSBpbgo+Pj4gY3JlYXRlX2JvX2Zvcl9mYigpLiBFdmVuIGlm IG5ldyBmb3JtYXRzIGFyZSBuZWVkZWQsIEkgdGhpbmsgaXQncwo+Pj4gYmVzdAo+Pj4gdG8gcHV0 IHRoYXQgaW4gdGhlIGxpYi9pZ3RfZmIuCj4+Cj4+IFRoZXNlIGRheXMgaWd0X2ZiIGRvZXMgaW1w bGVtZW50IG1vc3Qgb2YgdGhlc2UgbW9kZXMgSSBhZ3JlZS4gVGhpcwo+PiB0ZXN0Cj4+IHdhcyB3 cml0dGVuIGJhY2sgaW4gdGhlIGRheSB3aGVuIGlndCBzdXBwb3J0IHdhcyBsaW1pdGVkIHRvIFJH Qjg4OAo+PiBhbmQKPj4gUkdCNTY1LiBJZGVhIG9mIHRoaXMgdGVzdCB3YXMganVzdCB0byB0cnkg YWxsIGZiIGZvcm1hdHMga2VybmVsCj4+IGFkdmVydGlzZWQgY291bGQgYWN0dWFsbHkgaW5pdGlh bGl6ZS4KPj4KPj4gSWYgeW91IGZlZWwgdGhpcyB0ZXN0IGlzIG9ic29sZXRlIHlvdSBjb3VsZCBh c2sgZm9yIHZvdGVzIHRvIGdldCBpdAo+PiByZW1vdmVkLCBJIHRyaWVkIHRoYXQgYmVmb3JlIHht YXMgYnV0IG5vYm9keSB3YXMgaW50ZXJlc3RlZCBpbgo+PiByZW1vdmluZwo+PiB0aGlzIHNvIEkg c3RhcnRlZCB0byBmaXggcHJvYmxlbXMgc2VlbiBpbiB0aGlzIHRlc3QuCj4gCj4gSSBoYWQgYSBx dWljayBnbGFuY2UgYXQga21zX3BsYW5lLCBsaWtlIHlvdSBzYWlkIGl0IHByZXR0eSBtdWNoIGRv ZXMKPiB0aGUgc2FtZSB0aGluZ3MgYnV0IGJldHRlci4gTXkgc3VnZ2VzdGlvbiBpcyB0bwo+IDEp IGFkZCBzdXBwb3J0IGluIHRoZSBsaWJyYXJ5IGZvciB0aGUgbWlzc2luZyBmb3JtYXRzIGkuZS4s Cj4gRFJNX0ZPUk1BVF9DOCwgRFJNX0ZPUk1BVF9YQkdSMjEwMTAxMAo+IDIpIGdldCByaWQgb2Yg dGhpcyB0ZXN0Lgo+IAoKSGkgREssCgpJIHdhcyBsb29raW5nIGF0IHRob3NlIGZvcm1hdHMgbWlz c2luZyBmcm9tIGxpc3Qgb2YgSUdUIHN1cHBvcnRlZCAKZm9ybWF0cy4gRFJNX0ZPUk1BVF9YQkdS MjEwMTAxMCBzaG91bGRuJ3QgYmUgbXVjaCBvZiBhIHByb2JsZW0gdG8gYWRkIApidXQgaXQncyB5 ZXQgdG8gYmUgc2VlbiBob3cgaXQgd2lsbCBzaG93IGluIGRpZmZlcmVudCB0ZXN0cy4KRFJNX0ZP Uk1BVF9DOCBvbiB0aGUgb3RoZXIgaGFuZCBpcyBkaWZmZXJlbnQgc3RvcnksIEkgdGhpbmsgaXQg cHJvYmFibHkgCnNob3VsZCBub3QgYmUgYWRkZWQgYXMgc3VwcG9ydGVkIGZvcm1hdCBmb3IgSUdU LiBSZWFzb24gZm9yIG5vdCBhZGRpbmcgCkM4IHdvdWxkIGJlIHRoZSA4Yml0IG5hdHVyZSwgSSB0 aGluayBpdCB3aWxsIG5ldmVyIGhhdmUgZW5vdWdoIGNvbG9ycyB0byAKYmUgcGFzc2luZyBtb3N0 IG9mIENSQyB0ZXN0cy4gSSBoYWQgaWRlYSBmb3IgQzggdGhlcmUgd291bGQgYmUgc2VwYXJhdGUg CnRlc3Qgd2hpY2ggd2lsbCBvbmx5IHRlc3QgQzggZmVhdHVyZXMuCgpJJ2QgYmVnaW4gYnkgcmVt b3ZpbmcgYXZhaWxhYmxlIG1vZGVzIHRlc3QgYXMgaXQgc2VlbXMgdG8gY2F1c2Ugb25seSAKdXNl bGVzcyBub2lzZSBub3cgYW5kIGlzIGRvdWJsZWQgYnkga21zX3BsYW5lIGluIHBsYWNlcyB3aGVy ZSBpdCByZWFsbHkgCm1hdHRlci4KCllvdSBoYXZlIG9waW5pb25zIG9yIGlkZWFzIG9uIHRoaXM/ IEknZCBhZGQgYWJvdmUgb24gbXkgJ3RvLWRvJyBsaXN0LgoKL0p1aGEtUGVra2EKCj4gCj4+Cj4+ IEluIGFueSBjYXNlIHRoZXNlIGRheXMgb25lIGNhbm5vdCBpbmNsdWRlIG5ldyBmYiBmb3JtYXRz IGludG8gaTkxNQo+PiB3aXRob3V0IElHVCBzdXBwb3J0IHNvIGttc19wbGFuZSB0ZXN0IGRvZXMg d2hhdCB0aGlzIHRlc3QgZG9lcy4KPj4KPj4+Cj4+Pgo+Pj4+ICAgICNlbmRpZgo+Pj4+IC0JeyAw LCAwLCAwLCAwIH0KPj4+PiArCXsgMCwgU0tJUDQsIDAgfQo+Pj4+ICAgIH07Cj4+Pj4gICAgCj4+ Pj4gICAgLyoKPj4+PiBAQCAtMjMzLDEzICsyMzgsMTAgQEAgc3RhdGljIGJvb2wgZmlsbF9pbl9m YihkYXRhX3QgKmRhdGEsCj4+Pj4gaWd0X291dHB1dF90ICpvdXRwdXQsIGlndF9wbGFuZV90ICpw bGFuZSwKPj4+PiAgICAJCQl3cml0ZXNpemUgPSBkYXRhLT5zaXplOwo+Pj4+ICAgIAkJCWJyZWFr Owo+Pj4+ICAgIAkJfQo+Pj4+IC0JCWlndF9pbmZvKCJGb3JtYXQgJXMgQ1JDIGNvbXBhcmlzb24g c2tpcHBlZCBieQo+Pj4+IGRlc2lnbi5cbiIsCj4+Pj4gLQkJCSAoY2hhciopJmZpbGxlcnNbaV0u Zm91cmNjKTsKPj4+PiAtCj4+Pj4gLQkJcmV0dXJuIGZhbHNlOwo+Pj4+ICsJLyogRmFsbCB0aHJv dWdoICovCj4+Pj4gICAgCWRlZmF1bHQ6Cj4+Pj4gLQkJaWd0X2luZm8oIlVuc3VwcG9ydGVkIG1v ZGUgZm9yIHRlc3QgJXNcbiIsCj4+Pj4gLQkJCSAoY2hhciopJmZpbGxlcnNbaV0uZm91cmNjKTsK Pj4+PiArCQlpZ3RfaW5mbygiVW5zdXBwb3J0ZWQgbW9kZSBmb3IgdGVzdGluZyBDUkMgJS40c1xu IiwKPj4+PiArCQkJIChjaGFyICopJmZvcm1hdCk7Cj4+Pj4gICAgCQlyZXR1cm4gZmFsc2U7Cj4+ Pj4gICAgCX0KPj4+PiAgICAKPj4+PiBAQCAtMjYwLDYgKzI2Miw4IEBAIHN0YXRpYyBib29sIHNl dHVwX2ZiKGRhdGFfdCAqZGF0YSwKPj4+PiBpZ3Rfb3V0cHV0X3QKPj4+PiAqb3V0cHV0LCBpZ3Rf cGxhbmVfdCAqcGxhbmUsCj4+Pj4gICAgCWludCBicHAgPSAwOwo+Pj4+ICAgIAlpbnQgaTsKPj4+ PiAgICAKPj4+PiArCWRhdGEtPmFsbG93X2ZhaWwgPSBmYWxzZTsKPj4+PiArCj4+Pj4gICAgCW1v ZGUgPSBpZ3Rfb3V0cHV0X2dldF9tb2RlKG91dHB1dCk7Cj4+Pj4gICAgCWlmIChwbGFuZS0+dHlw ZSAhPSBEUk1fUExBTkVfVFlQRV9DVVJTT1IpIHsKPj4+PiAgICAJCXcgPSBtb2RlLT5oZGlzcGxh eTsKPj4+PiBAQCAtMjg4LDYgKzI5Miw4IEBAIHN0YXRpYyBib29sIHNldHVwX2ZiKGRhdGFfdCAq ZGF0YSwKPj4+PiBpZ3Rfb3V0cHV0X3QKPj4+PiAqb3V0cHV0LCBpZ3RfcGxhbmVfdCAqcGxhbmUs Cj4+Pj4gICAgCQlicmVhazsKPj4+PiAgICAKPj4+PiAgICAJY2FzZSBTS0lQNDoKPj4+PiArCQlk YXRhLT5hbGxvd19mYWlsID0gdHJ1ZTsKPj4+PiArCQkvKiBmYWxsIHRocm91Z2ggKi8KPj4+Cj4+ PiBXb3VsZG4ndCB0aGlzIHByZXZlbnQgQ1JDIHRlc3RpbmcgZm9yCj4+PiAoZmlsbGVyc1tpXS5m b3VyY2MgPT0gRFJNX0ZPUk1BVF9BUkdCODg4OCAmJiBwbGFuZS0+dHlwZSA9PQo+Pj4gRFJNX1BM QU5FX1RZUEVfQ1VSU09SKSA/Cj4+Cj4+IFRoZXJlIHdhcyBsYXRlciBwYXRjaCB3aGljaCBmaXhl ZCB0aGlzLiBUaGlzIHZlcnNpb24gZGlkbid0IHBhc3MgQ0kKPj4gdGVzdAo+PiBiZWNhdXNlIEkg aGFkIGZvcmdvdHRlbiAiaWd0X2Rpc3BsYXlfcmVzZXQoJmRhdGEtPmRpc3BsYXkpIiBjYWxsIGJp dAo+PiBiZWxvdywgaXQga2lsbGVkIHRlc3Qgb24gS0JMLgo+Pgo+Pj4KPj4+Cj4+Pj4gICAgCWNh c2UgQllURVNfUFBfNDoKPj4+PiAgICAJCWJwcCA9IDMyOwo+Pj4+ICAgIAkJYnJlYWs7Cj4+Pj4g QEAgLTMyNCw3ICszMzAsNyBAQCBzdGF0aWMgYm9vbCBzZXR1cF9mYihkYXRhX3QgKmRhdGEsCj4+ Pj4gaWd0X291dHB1dF90Cj4+Pj4gKm91dHB1dCwgaWd0X3BsYW5lX3QgKnBsYW5lLAo+Pj4+ICAg IAo+Pj4+ICAgIAlpZihyZXQgPCAwKSB7Cj4+Pj4gICAgCQlpZ3RfaW5mbygiQ3JlYXRpbmcgZmIg Zm9yIGZvcm1hdCAlcyBmYWlsZWQsCj4+Pj4gcmV0dXJuIGNvZGUKPj4+PiAlZFxuIiwKPj4+PiAt CQkJIChjaGFyKikmZGF0YS0+Zm9ybWF0Lm5hbWUsIHJldCk7Cj4+Pj4gKwkJCSAoY2hhciAqKSZk YXRhLT5mb3JtYXQubmFtZSwgcmV0KTsKPj4+PiAgICAKPj4+PiAgICAJCXJldHVybiBmYWxzZTsK Pj4+PiAgICAJfQo+Pj4+IEBAIC0zODUsMTMgKzM5MSwxNCBAQCBzdGF0aWMgYm9vbCBwcmVwYXJl X2NydGMoZGF0YV90ICpkYXRhLAo+Pj4+IGlndF9vdXRwdXRfdCAqb3V0cHV0LAo+Pj4+ICAgIAo+ Pj4+ICAgIAo+Pj4+ICAgIHN0YXRpYyBpbnQKPj4+PiAtdGVzdF9vbmVfbW9kZShkYXRhX3QqIGRh dGEsIGlndF9vdXRwdXRfdCAqb3V0cHV0LCBpZ3RfcGxhbmVfdCoKPj4+Cj4+PiBTaWRlIG5vdGUg bm90IHJlbGF0ZWQgdG8gdGhlIGNoYW5nZXMgeW91IGFyZSBtYWtpbmcsICJtb2RlIiBpcwo+Pj4g cXVpdGUKPj4+IG1pc2xlYWRpbmcuIFNob3VsZG4ndCB0aGUgdGVzdCBiZSBjYWxsZWQga21zX3Bp eGVsX2Zvcm1hdHNfY3JjIG9yCj4+PiBzb21ldGhpbmc/IEkgdGhvdWdodCB0aGlzIHdhcyBhYm91 dCB0ZXN0aW5nIGRpZmZlcmVudCBjb25uZWN0b3IKPj4+IG1vZGVzLgo+Pj4KPj4+Cj4+Pj4gcGxh bmUsCj4+Pj4gLQkgICAgICBpbnQgbW9kZSkKPj4+PiArdGVzdF9vbmVfbW9kZShkYXRhX3QgKmRh dGEsIGlndF9vdXRwdXRfdCAqb3V0cHV0LCBpZ3RfcGxhbmVfdAo+Pj4+ICpwbGFuZSwKPj4+PiAr CSAgICAgIGVudW0gcGlwZSBwaXBlLCBpbnQgbW9kZSkKPj4+PiAgICB7Cj4+Pj4gICAgCWlndF9j cmNfdCBjdXJyZW50X2NyYzsKPj4+PiAgICAJc2lnbmVkIHJWYWwgPSAwOwo+Pj4+ICAgIAlib29s IGRvX2NyYzsKPj4+PiAtCWNoYXIqIGNyY2NvbXBhcmVbMl07Cj4+Pj4gKwljaGFyICpjcmNjb21w YXJlWzJdOwo+Pj4+ICsJaWd0X2NyY190ICpwX2NyYzsKPj4+PiAgICAKPj4+PiAgICAJaWYgKHBy ZXBhcmVfY3J0YyhkYXRhLCBvdXRwdXQsIHBsYW5lLCBtb2RlKSl7Cj4+Pj4gICAgCQkvKgo+Pj4+ IEBAIC00MDksMzIgKzQxNiwzMiBAQCB0ZXN0X29uZV9tb2RlKGRhdGFfdCogZGF0YSwgaWd0X291 dHB1dF90Cj4+Pj4gKm91dHB1dCwgaWd0X3BsYW5lX3QqIHBsYW5lLAo+Pj4+ICAgIAkJaWYgKGRv X2NyYykgewo+Pj4+ICAgIAkJCWlndF9waXBlX2NyY19nZXRfY3VycmVudChkYXRhLT5nZnhfZmQs Cj4+Pj4gZGF0YS0KPj4+Pj4gcGlwZV9jcmMsICZjdXJyZW50X2NyYyk7Cj4+Pj4KPj4+PiAgICAK Pj4+PiAtCQkJaWYgKHBsYW5lLT50eXBlICE9IERSTV9QTEFORV9UWVBFX0NVUlNPUikgewo+Pj4+ IC0JCQkJaWYgKCFpZ3RfY2hlY2tfY3JjX2VxdWFsKCZjdXJyZW50X2NyYywKPj4+PiAtCQkJCQkm ZGF0YS0+ZnVsbHNjcmVlbl9jcmMpKSB7Cj4+Pj4gLQkJCQkJY3JjY29tcGFyZVswXSA9Cj4+Pj4g aWd0X2NyY190b19zdHJpbmcoJmN1cnJlbnRfY3JjKTsKPj4+PiAtCQkJCQljcmNjb21wYXJlWzFd ID0KPj4+PiBpZ3RfY3JjX3RvX3N0cmluZygmZGF0YS0+ZnVsbHNjcmVlbl9jcmMpOwo+Pj4+IC0J CQkJCWlndF93YXJuKCJjcmMgbWlzbWF0Y2guIHRhcmdldAo+Pj4+ICUuOHMsIHJlc3VsdCAlLjhz LlxuIiwgY3JjY29tcGFyZVswXSwgY3JjY29tcGFyZVsxXSk7Cj4+Pj4gLQkJCQkJZnJlZShjcmNj b21wYXJlWzBdKTsKPj4+PiAtCQkJCQlmcmVlKGNyY2NvbXBhcmVbMV0pOwo+Pj4+IC0JCQkJCXJW YWwrKzsKPj4+PiAtCQkJCX0KPj4+PiAtCQkJfSBlbHNlIHsKPj4+PiAtCQkJCWlmICghaWd0X2No ZWNrX2NyY19lcXVhbCgmY3VycmVudF9jcmMsCj4+Pj4gLQkJCQkJJmRhdGEtPmN1cnNvcl9jcmMp KSB7Cj4+Pj4gLQkJCQkJY3JjY29tcGFyZVswXSA9Cj4+Pj4gaWd0X2NyY190b19zdHJpbmcoJmN1 cnJlbnRfY3JjKTsKPj4+PiAtCQkJCQljcmNjb21wYXJlWzFdID0KPj4+PiBpZ3RfY3JjX3RvX3N0 cmluZygmZGF0YS0+Y3Vyc29yX2NyYyk7Cj4+Pj4gLQkJCQkJaWd0X3dhcm4oImNyYyBtaXNtYXRj aC4gdGFyZ2V0Cj4+Pj4gJS44cywgcmVzdWx0ICUuOHMuXG4iLCBjcmNjb21wYXJlWzBdLCBjcmNj b21wYXJlWzFdKTsKPj4+PiAtCQkJCQlmcmVlKGNyY2NvbXBhcmVbMF0pOwo+Pj4+IC0JCQkJCWZy ZWUoY3JjY29tcGFyZVsxXSk7Cj4+Pj4gKwkJCWlmIChwbGFuZS0+dHlwZSAhPSBEUk1fUExBTkVf VFlQRV9DVVJTT1IpCj4+Pj4gKwkJCQlwX2NyYyA9ICZkYXRhLT5mdWxsc2NyZWVuX2NyYzsKPj4+ PiArCQkJZWxzZQo+Pj4+ICsJCQkJcF9jcmMgPSAmZGF0YS0+Y3Vyc29yX2NyYzsKPj4+PiArCj4+ Pj4gKwkJCWlmICghaWd0X2NoZWNrX2NyY19lcXVhbCgmY3VycmVudF9jcmMsIHBfY3JjKSkKPj4+ PiB7Cj4+Pj4gKwkJCQljcmNjb21wYXJlWzBdID0KPj4+PiBpZ3RfY3JjX3RvX3N0cmluZygmY3Vy cmVudF9jcmMpOwo+Pj4+ICsJCQkJY3JjY29tcGFyZVsxXSA9Cj4+Pj4gaWd0X2NyY190b19zdHJp bmcocF9jcmMpOwo+Pj4+ICsJCQkJaWd0X3dhcm4oImNyYyBtaXNtYXRjaCBvbiAlcyBQSVBFICVz Cj4+Pj4gcGxhbmUgJWQgZm9ybWF0ICUuNHMuIHRhcmdldCAlLjhzLCByZXN1bHQgJS44cy5cbiIs Cj4+Pj4gKwkJCQkJIGlndF9vdXRwdXRfbmFtZShvdXRwdXQpLAo+Pj4+ICsJCQkJCSBrbXN0ZXN0 X3BpcGVfbmFtZShwaXBlKSwKPj4+PiArCQkJCQkgcGxhbmUtPmluZGV4LAo+Pj4+ICsJCQkJCSAo Y2hhciAqKSZkYXRhLT5mb3JtYXQubmFtZSwKPj4+PiArCQkJCQkgY3JjY29tcGFyZVswXSwKPj4+ PiArCQkJCQkgY3JjY29tcGFyZVsxXSk7Cj4+Pgo+Pj4gVGhpcyBpcyB0aGUgb25seSBodW5rIEkg d2FzIGhvcGluZyB5b3Ugd291bGQgYmUgYWJsZSB0byBzcGxpdCBpbnRvCj4+PiBhCj4+PiBzZXBh cmF0ZSBwYXRjaC4KPj4+Cj4+Pj4gKwo+Pj4+ICsJCQkJZnJlZShjcmNjb21wYXJlWzBdKTsKPj4+ PiArCQkJCWZyZWUoY3JjY29tcGFyZVsxXSk7Cj4+Pj4gKwkJCQlpZiAoIWRhdGEtPmFsbG93X2Zh aWwpCj4+Pgo+Pj4gSXMgdGhlcmUgYSBwb2ludCBvZiByZWFkaW5nIENSQ3MgaWYgZmFpbHVyZXMg YXJlIGFsbG93ZWQ/Cj4+Cj4+IEl0IGlzIG1hcmtlZCBhcyBtb2RlIHdoaWNoIGlzIG5vdCBsaXN0 ZWQgaW4gdGhpcyB0ZXN0IGJ1dAo+PiBpbml0aWFsaXphdGlvbgo+PiB3b3JrZWQgc28gZGVmYXVs dCBwYXRocyBhcmUgZm9sbG93ZWQuIEl0IHdpbGwgcHJvZHVjZSB3YXJuaW5nIHdoaWNoCj4+IEkK Pj4gdGhpbmsgaXMgdXNlZnVsIGZvciBpbmRpY2F0aW5nIHRoaXMgdGVzdCBuZWVkIHVwZGF0aW5n IGJ1dCB3aWxsIG5vdAo+PiBwcm9kdWNlIGZhaWx1cmUgdG8gbWFyayBuZXdseSBhZGRlZCBmZWF0 dXJlcyBjYXVzZWQgcHJvYmxlbXMuCj4+Cj4+Pgo+Pj4+ICAgIAkJCQkJclZhbCsrOwo+Pj4+IC0J CQkJfQo+Pj4+ICAgIAkJCX0KPj4+PiAgICAJCX0KPj4+PiAgICAJCXJlbW92ZV9mYihkYXRhLCBv dXRwdXQsIHBsYW5lKTsKPj4+PiAgICAJCXJldHVybiByVmFsOwo+Pj4+ICAgIAl9Cj4+Pj4gLQly ZXR1cm4gMTsKPj4+PiArCXJldHVybiBkYXRhLT5hbGxvd19mYWlsID8gMCA6IDE7Cj4+Pj4gICAg fQo+Pj4+ICAgIAo+Pj4+ICAgIAo+Pj4+IEBAIC00NDUsMTEgKzQ1MiwxMSBAQCB0ZXN0X2F2YWls YWJsZV9tb2RlcyhkYXRhX3QqIGRhdGEpCj4+Pj4gICAgCWlndF9wbGFuZV90ICpwbGFuZTsKPj4+ PiAgICAJaW50IG1vZGVpbmRleDsKPj4+PiAgICAJZW51bSBwaXBlIHBpcGU7Cj4+Pj4gLQlpbnQg aW52YWxpZHMgPSAwOwo+Pj4+ICsJaW50IGZhaWxlZF9jcmNzID0gMDsKPj4+PiAgICAJZHJtTW9k ZVBsYW5lICptb2RlUGxhbmU7Cj4+Pj4gLQljaGFyIHBsYW5ldHlwZVszXVs4XSA9IHsiT1ZFUkxB WVwwIiwgIlBSSU1BUllcMCIsICJDVVJTT1JcMCIgfTsKPj4+PiAgICAKPj4+PiAgICAJZm9yX2Vh Y2hfcGlwZV93aXRoX3ZhbGlkX291dHB1dCgmZGF0YS0+ZGlzcGxheSwgcGlwZSwKPj4+PiBvdXRw dXQpIHsKPj4+PiArCQlpZ3RfZGlzcGxheV9yZXNldCgmZGF0YS0+ZGlzcGxheSk7Cj4+Pj4gICAg CQlpZ3Rfb3V0cHV0X3NldF9waXBlKG91dHB1dCwgcGlwZSk7Cj4+Pj4gICAgCQlpZ3RfZGlzcGxh eV9jb21taXQyKCZkYXRhLT5kaXNwbGF5LCBkYXRhLQo+Pj4+PiBjb21taXQpOwo+Pj4+ICAgIAo+ Pj4+IEBAIC00NzIsMTcgKzQ3OSw5IEBAIHRlc3RfYXZhaWxhYmxlX21vZGVzKGRhdGFfdCogZGF0 YSkKPj4+PiAgICAJCQkgICAgIG1vZGVpbmRleCsrKSB7Cj4+Pj4gICAgCQkJCWRhdGEtPmZvcm1h dC5kd29yZCA9IG1vZGVQbGFuZS0KPj4+Pj4gZm9ybWF0c1ttb2RlaW5kZXhdOwo+Pj4+Cj4+Pj4g ICAgCj4+Pj4gLQkJCQlpZ3RfaW5mbygiVGVzdGluZyBjb25uZWN0b3IgJXMgdXNpbmcKPj4+PiBw aXBlICVzIiBcCj4+Pj4gLQkJCQkJICIgcGxhbmUgaW5kZXggJWQgdHlwZSAlcyBtb2RlCj4+Pj4g JXNcbiIsCj4+Pj4gLQkJCQkJIGlndF9vdXRwdXRfbmFtZShvdXRwdXQpLAo+Pj4+IC0JCQkJCSBr bXN0ZXN0X3BpcGVfbmFtZShwaXBlKSwKPj4+PiAtCQkJCQkgcGxhbmUtPmluZGV4LAo+Pj4+IC0J CQkJCSBwbGFuZXR5cGVbcGxhbmUtPnR5cGVdLAo+Pj4+IC0JCQkJCSAoY2hhciopJmRhdGEtPmZv cm1hdC5uYW1lKTsKPj4+PiAtCj4+Pj4gLQkJCQlpbnZhbGlkcyArPSB0ZXN0X29uZV9tb2RlKGRh dGEsIG91dHB1dCwKPj4+PiAtCQkJCQkJCSAgcGxhbmUsCj4+Pj4gLQkJCQkJCQkgIG1vZGVQbGFu ZS0KPj4+Pj4gZm9ybWF0c1ttb2RlaW5kZXhdKTsKPj4+Pgo+Pj4+ICsJCQkJZmFpbGVkX2NyY3Mg Kz0gdGVzdF9vbmVfbW9kZShkYXRhLAo+Pj4+IG91dHB1dCwKPj4+PiArCQkJCQkJCSAgICAgcGxh bmUsCj4+Pj4gcGlwZSwKPj4+PiArCQkJCQkJCSAgICAgbW9kZVBsYW5lLQo+Pj4+PiBmb3JtYXRz W21vZGVpbmRleF0pOwo+Pj4+Cj4+Pj4gICAgCQkJfQo+Pj4+ICAgIAkJCWRybU1vZGVGcmVlUGxh bmUobW9kZVBsYW5lKTsKPj4+PiAgICAJCX0KPj4+PiBAQCAtNDkxLDcgKzQ5MCw3IEBAIHRlc3Rf YXZhaWxhYmxlX21vZGVzKGRhdGFfdCogZGF0YSkKPj4+PiAgICAJCWlndF9kaXNwbGF5X2NvbW1p dDIoJmRhdGEtPmRpc3BsYXksIGRhdGEtCj4+Pj4+IGNvbW1pdCk7Cj4+Pj4gICAgCQlpZ3Rfb3V0 cHV0X3NldF9waXBlKG91dHB1dCwgUElQRV9OT05FKTsKPj4+PiAgICAJfQo+Pj4+IC0JaWd0X2Fz c2VydChpbnZhbGlkcyA9PSAwKTsKPj4+PiArCWlndF9hc3NlcnRfZigoZmFpbGVkX2NyY3MgPT0g MCksICJUaGVyZSB3YXMgJWQgbW9kZXMgd2l0aAo+Pj4+IGludmFsaWQgY3JjXG4iLCBmYWlsZWRf Y3Jjcyk7Cj4+Pj4gICAgfQo+Pj4+ICAgIAo+Pj4+ICAgIAo+Pgo+Pgo+IAoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QK aWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2Cg==