From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id B0D5B89A5C for ; Fri, 8 Mar 2019 09:59:58 +0000 (UTC) Date: Fri, 8 Mar 2019 10:59:55 +0100 From: Katarzyna Dec Message-ID: <20190308095955.GA9446@kdec5-desk.ger.corp.intel.com> References: <20190305014742.3598-1-dhinakaran.pandiyan@intel.com> <20190305014742.3598-3-dhinakaran.pandiyan@intel.com> <20190305142659.GD8924@kdec5-desk.ger.corp.intel.com> <56ee0ba2dab9298b0df581490c488ab985571263.camel@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <56ee0ba2dab9298b0df581490c488ab985571263.camel@intel.com> Subject: Re: [igt-dev] [PATCH i-g-t 3/7] tests/gem_render_copy: Test Yf tiling 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: Dhinakaran Pandiyan , igt-dev@lists.freedesktop.org List-ID: T24gV2VkLCBNYXIgMDYsIDIwMTkgYXQgMDQ6NTg6MDJQTSAtMDgwMCwgRGhpbmFrYXJhbiBQYW5k aXlhbiB3cm90ZToKPiBPbiBUdWUsIDIwMTktMDMtMDUgYXQgMTU6MjYgKzAxMDAsIEthdGFyenlu YSBEZWMgd3JvdGU6Cj4gPiBPbiBNb24sIE1hciAwNCwgMjAxOSBhdCAwNTo0NzozOFBNIC0wODAw LCBEaGluYWthcmFuIFBhbmRpeWFuIHdyb3RlOgo+ID4gPiBGcm9tOiBWaWxsZSBTeXJqw6Rsw6Qg PHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+ID4gPiAKPiA+ID4gTGV0J3MgdGVzdCBZ ZiB0aWxpbmcgbm93IHRoYXQgcmVuZGVyY29weSBjYW4gaGFuZGxlIGl0Lgo+ID4gPiAKPiA+ID4g djI6IEZyb20gREsKPiA+ID4gIFNldCBicHAgZm9yIFlmIGJ1ZmZlciBhbmQgcmViYXNlLgo+ID4g PiAKPiA+ID4gQ2M6IEx1a2FzeiBLYWxhbWFyeiA8bHVrYXN6LmthbGFtYXJ6QGludGVsLmNvbT4K PiA+ID4gQ2M6IEthdGFyenluYSBEZWMgPGthdGFyenluYS5kZWNAaW50ZWwuY29tPgo+ID4gPiBT aWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwu Y29tPgo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBEaGluYWthcmFuIFBhbmRpeWFuIDxkaGluYWthcmFu LnBhbmRpeWFuQGludGVsLmNvbT4KPiA+ID4gLS0tCj4gPiA+ICB0ZXN0cy9pOTE1L2dlbV9yZW5k ZXJfY29weS5jIHwgMjQ2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCj4gPiA+IC0tLS0t LQo+ID4gPiAgMSBmaWxlIGNoYW5nZWQsIDE5NSBpbnNlcnRpb25zKCspLCA1MSBkZWxldGlvbnMo LSkKPiA+ID4gCj4gPiA+IGRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9yZW5kZXJfY29weS5j Cj4gPiA+IGIvdGVzdHMvaTkxNS9nZW1fcmVuZGVyX2NvcHkuYwo+ID4gPiBpbmRleCAwY2Q0ZTUw Zi4uYWZlMmRmMDUgMTAwNjQ0Cj4gPiA+IC0tLSBhL3Rlc3RzL2k5MTUvZ2VtX3JlbmRlcl9jb3B5 LmMKPiA+ID4gKysrIGIvdGVzdHMvaTkxNS9nZW1fcmVuZGVyX2NvcHkuYwo+ID4gPiBAQCAtNzIs MTEgKzcyLDg1IEBAIHN0YXRpYyBjb25zdCBjaGFyICptYWtlX2ZpbGVuYW1lKGNvbnN0IGNoYXIK PiA+ID4gKmZpbGVuYW1lKQo+ID4gPiAgCXJldHVybiBidWY7Cj4gPiA+ICB9Cj4gPiA+ICAKPiA+ ID4gLXN0YXRpYyB2b2lkICpsaW5lYXJfY29weShkYXRhX3QgKmRhdGEsIHN0cnVjdCBpZ3RfYnVm ICpidWYpCj4gPiA+ICtzdGF0aWMgdm9pZCAqeWZfcHRyKHZvaWQgKnB0ciwKPiA+ID4gKwkJICAg IHVuc2lnbmVkIGludCB4LCB1bnNpZ25lZCBpbnQgeSwKPiA+ID4gKwkJICAgIHVuc2lnbmVkIGlu dCBzdHJpZGUsIHVuc2lnbmVkIGludCBjcHApCj4gPiA+ICB7Cj4gPiA+IC0Jdm9pZCAqbWFwLCAq bGluZWFyOwo+ID4gPiArICAgICAgIHggKj0gY3BwOwo+ID4gPiArCj4gPiA+ICsgICAgICAgcmV0 dXJuIHB0ciArCj4gPiA+ICsJICAgICAgICgoeSAmIH4weDFmKSAqIHN0cmlkZSkgKwo+ID4gPiAr CSAgICAgICAoKHkgJiAweDEwKSAqIDY0KSArCj4gPiA+ICsJICAgICAgICgoeSAmIDB4OCkgKiAz MikgKwo+ID4gPiArCSAgICAgICAoKHkgJiAweDcpICogMTYpICsKPiA+ID4gKwkgICAgICAgKCh4 ICYgfjB4M2YpICogMzIpICsKPiA+ID4gKwkgICAgICAgKCh4ICYgMHgyMCkgKiAxNikgKwo+ID4g PiArCSAgICAgICAoKHggJiAweDEwKSAqIDgpICsKPiA+ID4gKwkgICAgICAgKHggJiAweGYpOwo+ ID4gPiArfQo+ID4gCj4gPiBJIGxvb2tlZCB0aHJvdWdoIGRvY3VtZW50YXRpb24gYW5kIHRoZXNl IF4gdmFsdWVzIGUuZy4gfjB4MWYgb3RoZXJzCj4gPiB4L3kgJiA/IGFyZQo+ID4gc3RpbGwgbXlz dGVyaW91cy4gTWF5YmUgeW91IGNhbiBkb2N1bWVudCB0aGVtIHNvbWVob3c/Cj4gVGhlIGNvZGUg cmVmbGVjdHMgdGhlIGludGVybmFsIHRpbGluZyBsYXlvdXQgZm9yIFlmLCB3aGljaCBpcwo+IGRv Y3VtZW50ZWQgaW4gbGliZHJtOiBpbmNsdWRlL2RybS9kcm1fZm91cmNjLmguIEkgZG9uJ3Qgc2Vl IGFueQo+IGRvY3VtZW50YXRpb24gZm9yIG90aGVyIHRpbGluZyBmb3JtYXRzIGluIElHVCBlaXRo ZXIsIHNvIG5vdCBzdXJlIGhvdwo+IGV4YWN0bHkgeW91IHdhbnQgbWUgdG8gZG9jdW1lbnQgdGhp cy4gU3VnZ2VzdGlvbnMgd2VsY29tZSA6KQo+IAo+IEJ1dCwgSSB0aGluayBpdCdzIGJldHRlciB0 byBkbyBhbnkgYWRkaXRpb25hbCBkb2N1bWVudGF0aW9uIHdvcmsKPiBvdXRzaWRlIHRoaXMgc2Vy aWVzIGFzIHRoaXMgaXMgZGVsYXlpbmcgYW4gSUNMIGJ1ZyBmaXguCgpJIGxvb2tlZCB0aG91Z2gg bGliZHJtIGNvZGUgeW91IG1lbnRpb25lZCBhbmQgaXQgc3RpbGwgZG9lc24ndCBtYWtlIGFueSBz ZW5zZSB0bwptZS4gSSBhbHNvIGxvb2tlZCBpbnRvIGdlbV9yZW5kZXJfY29weSB0ZXN0IGFuZCBJ IGFncmVlIHRoYXQgdGhlcmUgaXMgbm90IHNvIAptdWNoIG9mIGRvY3VtZW50YXRpb24sIGJ1dCB3 aGF0IHlvdSBhcmUgYWRkaW5nIGlzIGludHJvZHVjaW5nIG1hbnkgbWFnaWMgbnVtYmVycy4KTWF5 YmUgeW91IGNvdWxkIGFkZCBlLmcuICNkZWZpbmVzIGZvciB0aGlzIHZhbHVlcy4KRm9yIHVwZGF0 aW5nIGRvY3VtZW50YXRpb24gLSBJIGFncmVlIHRoYXQgYnVncyBmaXggaXMgdXJnZW50LCBob3dl dmVyIGlmIHdlCm9tbWl0IGl0IG5vdywgdGhlcmUgd2lsbCBiZSBmb3Igc3VyZSBubyB0aW1lIGlu IHRoZSBmdXR1cmUgdG8gZml4IGl0LgoKS2FzaWEgOikKPiAKPiA+IAo+ID4gPiAgCj4gPiA+IC0J aWd0X2Fzc2VydF9lcShwb3NpeF9tZW1hbGlnbigmbGluZWFyLCAxNiwgYnVmLT5iby0+c2l6ZSks IDApOwo+ID4gPiArc3RhdGljIHZvaWQgY29weV9saW5lYXJfdG9feWYoZGF0YV90ICpkYXRhLCBz dHJ1Y3QgaWd0X2J1ZiAqYnVmLAo+ID4gPiBjb25zdCB1aW50MzJfdCAqbGluZWFyKQo+ID4gCj4g PiBJdCB3b3VsZCBiZSBiZXR0ZXIgdG8gbW92ZSAnY29uc3QgdWluMzJfdCAqbGluZWFyJyB0byBu ZXh0IGxpbmUKPiA+IChhbGlnbmVkIHdpdGgKPiA+IG90aGVycykuCj4gPiA+ICt7Cj4gPiA+ICsJ aW50IGhlaWdodCA9IGlndF9idWZfaGVpZ2h0KGJ1Zik7Cj4gPiA+ICsJaW50IHdpZHRoID0gaWd0 X2J1Zl93aWR0aChidWYpOwo+ID4gPiArCXZvaWQgKm1hcDsKPiA+ID4gKwo+ID4gPiArCWdlbV9z ZXRfZG9tYWluKGRhdGEtPmRybV9mZCwgYnVmLT5iby0+aGFuZGxlLAo+ID4gPiArCQkgICAgICAg STkxNV9HRU1fRE9NQUlOX0NQVSwgSTkxNV9HRU1fRE9NQUlOX0NQVSk7Cj4gPiA+ICsJbWFwID0g Z2VtX21tYXBfX2NwdShkYXRhLT5kcm1fZmQsIGJ1Zi0+Ym8tPmhhbmRsZSwgMCwKPiA+ID4gKwkJ CSAgICBidWYtPmJvLT5zaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKTsKPiA+ID4gKwo+ID4g PiArCWZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspIHsKPiA+ID4gKwkJZm9yIChpbnQg eCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7Cj4gPiA+ICsJCQl1aW50MzJfdCAqcHRyID0geWZfcHRy KG1hcCwgeCwgeSwgYnVmLT5zdHJpZGUsCj4gPiA+IDQpOwo+ID4gCj4gPiBWYWx1ZSAnNCcgaGVy ZSBpcyBhIGNwcC4gSXMgaXQgY29sb3IgcGVyIHBpeGVsPyBNYXliZSB3ZSBjYW4gZGVmaW5lCj4g PiB0aGlzIHZhbHVlCj4gPiBzb21laG93PyBJIHdhbnQgdG8gYXZvaWQgc2l0dWF0aW9uIHdoZW4g dGhlcmUgd2lsbCBiZSBubyBwZW9wbGUKPiA+IHVuZGVyc3RhbmRpbmcKPiA+IHRoaXMgY29kZSBv bmJvYXJkLgo+IENoYW5naW5nIHRoaXMgdG8gYnVmLT5icHAgLyA4LCB0aGF0IHNob3VsZCBiZSBt b3JlIGludHVpdGl2ZS4KPiAKPiA+ID4gKwo+ID4gPiArCQkJKnB0ciA9IGxpbmVhclt5ICogd2lk dGggKyB4XTsKPiA+ID4gKwkJfQo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiArCW11bm1hcChtYXAs IGJ1Zi0+Ym8tPnNpemUpOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgdm9pZCBjb3B5 X3lmX3RvX2xpbmVhcihkYXRhX3QgKmRhdGEsIHN0cnVjdCBpZ3RfYnVmICpidWYsCj4gPiA+IHVp bnQzMl90ICpsaW5lYXIpCj4gPiA+ICt7Cj4gPiA+ICsJaW50IGhlaWdodCA9IGlndF9idWZfaGVp Z2h0KGJ1Zik7Cj4gPiA+ICsJaW50IHdpZHRoID0gaWd0X2J1Zl93aWR0aChidWYpOwo+ID4gPiAr CXZvaWQgKm1hcDsKPiA+ID4gKwo+ID4gPiArCWdlbV9zZXRfZG9tYWluKGRhdGEtPmRybV9mZCwg YnVmLT5iby0+aGFuZGxlLAo+ID4gPiArCQkgICAgICAgSTkxNV9HRU1fRE9NQUlOX0NQVSwgMCk7 Cj4gPiA+ICsJbWFwID0gZ2VtX21tYXBfX2NwdShkYXRhLT5kcm1fZmQsIGJ1Zi0+Ym8tPmhhbmRs ZSwgMCwKPiA+ID4gKwkJCSAgICBidWYtPmJvLT5zaXplLCBQUk9UX1JFQUQpOwo+ID4gPiArCj4g PiA+ICsJZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykgewo+ID4gPiArCQlmb3IgKGlu dCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKPiA+ID4gKwkJCXVpbnQzMl90ICpwdHIgPSB5Zl9w dHIobWFwLCB4LCB5LCBidWYtPnN0cmlkZSwKPiA+ID4gNCk7Cj4gPiA+ICsKPiA+ID4gKwkJCWxp bmVhclt5ICogd2lkdGggKyB4XSA9ICpwdHI7Cj4gPiA+ICsJCX0KPiA+ID4gKwl9Cj4gPiA+ICsK PiA+ID4gKwltdW5tYXAobWFwLCBidWYtPmJvLT5zaXplKTsKPiA+ID4gK30KPiA+ID4gKwo+ID4g PiArc3RhdGljIHZvaWQgY29weV9saW5lYXJfdG9fZ3R0KGRhdGFfdCAqZGF0YSwgc3RydWN0IGln dF9idWYgKmJ1ZiwKPiA+ID4gY29uc3QgdWludDMyX3QgKmxpbmVhcikKPiA+ID4gK3sKPiA+ID4g Kwl2b2lkICptYXA7Cj4gPiA+ICsKPiA+ID4gKwlnZW1fc2V0X2RvbWFpbihkYXRhLT5kcm1fZmQs IGJ1Zi0+Ym8tPmhhbmRsZSwKPiA+ID4gKwkJICAgICAgIEk5MTVfR0VNX0RPTUFJTl9HVFQsIEk5 MTVfR0VNX0RPTUFJTl9HVFQpOwo+ID4gPiArCj4gPiA+ICsJbWFwID0gZ2VtX21tYXBfX2d0dChk YXRhLT5kcm1fZmQsIGJ1Zi0+Ym8tPmhhbmRsZSwKPiA+ID4gKwkJCSAgICBidWYtPmJvLT5zaXpl LCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKTsKPiA+ID4gKwo+ID4gPiArCW1lbWNweShtYXAsIGxp bmVhciwgYnVmLT5iby0+c2l6ZSk7Cj4gPiA+ICsKPiA+ID4gKwltdW5tYXAobWFwLCBidWYtPmJv LT5zaXplKTsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIHZvaWQgY29weV9ndHRfdG9f bGluZWFyKGRhdGFfdCAqZGF0YSwgc3RydWN0IGlndF9idWYgKmJ1ZiwKPiA+ID4gdWludDMyX3Qg KmxpbmVhcikKPiA+ID4gK3sKPiA+ID4gKwl2b2lkICptYXA7Cj4gPiA+ICAKPiA+ID4gIAlnZW1f c2V0X2RvbWFpbihkYXRhLT5kcm1fZmQsIGJ1Zi0+Ym8tPmhhbmRsZSwKPiA+ID4gIAkJICAgICAg IEk5MTVfR0VNX0RPTUFJTl9HVFQsIDApOwo+ID4gPiBAQCAtODcsNiArMTYxLDE4IEBAIHN0YXRp YyB2b2lkICpsaW5lYXJfY29weShkYXRhX3QgKmRhdGEsIHN0cnVjdAo+ID4gPiBpZ3RfYnVmICpi dWYpCj4gPiA+ICAJaWd0X21lbWNweV9mcm9tX3djKGxpbmVhciwgbWFwLCBidWYtPmJvLT5zaXpl KTsKPiA+ID4gIAo+ID4gPiAgCW11bm1hcChtYXAsIGJ1Zi0+Ym8tPnNpemUpOwo+ID4gPiArfQo+ ID4gPiArCj4gPiA+ICtzdGF0aWMgdm9pZCAqbGluZWFyX2NvcHkoZGF0YV90ICpkYXRhLCBzdHJ1 Y3QgaWd0X2J1ZiAqYnVmKQo+ID4gPiArewo+ID4gPiArCXZvaWQgKmxpbmVhcjsKPiA+ID4gKwo+ ID4gPiArCWlndF9hc3NlcnRfZXEocG9zaXhfbWVtYWxpZ24oJmxpbmVhciwgMTYsIGJ1Zi0+Ym8t PnNpemUpLCAwKTsKPiA+IAo+ID4gVGhlcmUgaXMgbm90IHNpbGx5IHF1ZXN0aW9ucywgSSBiZWxp ZXZlLCB3aGF0IGlzICcxNicgXiBhYm92ZT8gSXMKPiA+IHRoaXMgc2l6ZQo+ID4gZml4ZWQgc29t ZWhvdz8gSSB3b3VsZCBwcmVmZXIgZGVmaW5pbmcgaXQgaW4gc29tZSB3YXkuCj4gVGhlIGFsaWdu bWVudCBpcyB1c2VmdWwgdG8gc3dpdGNoIHRvIGZhc3RlciBpbXBsZW1lbnRhdGlvbiBvZiBtZW1j cHkKPiB1c2luZyBTU0U0IGluc3RydWN0aW9ucy4KPiAKPiA+ID4gKwo+ID4gPiArCWlmIChidWYt PnRpbGluZyA9PSBJOTE1X1RJTElOR19ZZikKPiA+ID4gKwkJY29weV95Zl90b19saW5lYXIoZGF0 YSwgYnVmLCBsaW5lYXIpOwo+ID4gPiArCWVsc2UKPiA+ID4gKwkJY29weV9ndHRfdG9fbGluZWFy KGRhdGEsIGJ1ZiwgbGluZWFyKTsKPiA+ID4gIAo+ID4gPiAgCXJldHVybiBsaW5lYXI7Cj4gPiA+ ICB9Cj4gPiA+IEBAIC0xNzMsNyArMjU5LDcgQEAgc3RhdGljIHZvaWQgc2NyYXRjaF9idWZfZHJh d19wYXR0ZXJuKGRhdGFfdAo+ID4gPiAqZGF0YSwgc3RydWN0IGlndF9idWYgKmJ1ZiwKPiA+ID4g IAljYWlyb19zdXJmYWNlX3QgKnN1cmZhY2U7Cj4gPiA+ICAJY2Fpcm9fcGF0dGVybl90ICpwYXQ7 Cj4gPiA+ICAJY2Fpcm9fdCAqY3I7Cj4gPiA+IC0Jdm9pZCAqbWFwLCAqbGluZWFyOwo+ID4gPiAr CXZvaWQgKmxpbmVhcjsKPiA+ID4gIAo+ID4gPiAgCWxpbmVhciA9IGxpbmVhcl9jb3B5KGRhdGEs IGJ1Zik7Cj4gPiA+ICAKPiA+ID4gQEAgLTIxNiwxNSArMzAyLDEwIEBAIHN0YXRpYyB2b2lkIHNj cmF0Y2hfYnVmX2RyYXdfcGF0dGVybihkYXRhX3QKPiA+ID4gKmRhdGEsIHN0cnVjdCBpZ3RfYnVm ICpidWYsCj4gPiA+ICAKPiA+ID4gIAljYWlyb19zdXJmYWNlX2Rlc3Ryb3koc3VyZmFjZSk7Cj4g PiA+ICAKPiA+ID4gLQlnZW1fc2V0X2RvbWFpbihkYXRhLT5kcm1fZmQsIGJ1Zi0+Ym8tPmhhbmRs ZSwKPiA+ID4gLQkJICAgICAgIEk5MTVfR0VNX0RPTUFJTl9HVFQsIEk5MTVfR0VNX0RPTUFJTl9H VFQpOwo+ID4gPiAtCj4gPiA+IC0JbWFwID0gZ2VtX21tYXBfX2d0dChkYXRhLT5kcm1fZmQsIGJ1 Zi0+Ym8tPmhhbmRsZSwKPiA+ID4gLQkJCSAgICBidWYtPmJvLT5zaXplLCBQUk9UX1JFQUQgfCBQ Uk9UX1dSSVRFKTsKPiA+ID4gLQo+ID4gPiAtCW1lbWNweShtYXAsIGxpbmVhciwgYnVmLT5iby0+ c2l6ZSk7Cj4gPiA+IC0KPiA+ID4gLQltdW5tYXAobWFwLCBidWYtPmJvLT5zaXplKTsKPiA+ID4g KwlpZiAoYnVmLT50aWxpbmcgPT0gSTkxNV9USUxJTkdfWWYpCj4gPiA+ICsJCWNvcHlfbGluZWFy X3RvX3lmKGRhdGEsIGJ1ZiwgbGluZWFyKTsKPiA+ID4gKwllbHNlCj4gPiA+ICsJCWNvcHlfbGlu ZWFyX3RvX2d0dChkYXRhLCBidWYsIGxpbmVhcik7Cj4gPiA+ICAKPiA+ID4gIAlmcmVlKGxpbmVh cik7Cj4gPiA+ICB9Cj4gPiA+IEBAIC0yMzYsMzYgKzMxNyw1OSBAQCBzY3JhdGNoX2J1Zl9jb3B5 KGRhdGFfdCAqZGF0YSwKPiA+ID4gIHsKPiA+ID4gIAlpbnQgd2lkdGggPSBpZ3RfYnVmX3dpZHRo KGRzdCk7Cj4gPiA+ICAJaW50IGhlaWdodCAgPSBpZ3RfYnVmX2hlaWdodChkc3QpOwo+ID4gPiAt CXVpbnQzMl90ICpsaW5lYXJfZHN0LCAqbGluZWFyX3NyYzsKPiA+ID4gKwl1aW50MzJfdCAqbGlu ZWFyX2RzdDsKPiA+ID4gIAo+ID4gPiAgCWlndF9hc3NlcnRfZXEoaWd0X2J1Zl93aWR0aChkc3Qp LCBpZ3RfYnVmX3dpZHRoKHNyYykpOwo+ID4gPiAgCWlndF9hc3NlcnRfZXEoaWd0X2J1Zl9oZWln aHQoZHN0KSwgaWd0X2J1Zl9oZWlnaHQoc3JjKSk7Cj4gPiA+ICAJaWd0X2Fzc2VydF9lcShkc3Qt PmJvLT5zaXplLCBzcmMtPmJvLT5zaXplKTsKPiA+ID4gIAo+ID4gPiArCXcgPSBtaW4odywgd2lk dGggLSBzeCk7Cj4gPiA+ICsJdyA9IG1pbih3LCB3aWR0aCAtIGR4KTsKPiA+ID4gKwo+ID4gPiAr CWggPSBtaW4oaCwgaGVpZ2h0IC0gc3kpOwo+ID4gPiArCWggPSBtaW4oaCwgaGVpZ2h0IC0gZHkp Owo+ID4gPiArCj4gPiA+ICAJZ2VtX3NldF9kb21haW4oZGF0YS0+ZHJtX2ZkLCBkc3QtPmJvLT5o YW5kbGUsCj4gPiA+ICAJCSAgICAgICBJOTE1X0dFTV9ET01BSU5fR1RULCBJOTE1X0dFTV9ET01B SU5fR1RUKTsKPiA+ID4gLQlnZW1fc2V0X2RvbWFpbihkYXRhLT5kcm1fZmQsIHNyYy0+Ym8tPmhh bmRsZSwKPiA+ID4gLQkJICAgICAgIEk5MTVfR0VNX0RPTUFJTl9HVFQsIDApOwo+ID4gPiAtCj4g PiA+ICAJbGluZWFyX2RzdCA9IGdlbV9tbWFwX19ndHQoZGF0YS0+ZHJtX2ZkLCBkc3QtPmJvLT5o YW5kbGUsCj4gPiA+ICAJCQkJICAgZHN0LT5iby0+c2l6ZSwgUFJPVF9XUklURSk7Cj4gPiA+IC0J bGluZWFyX3NyYyA9IGdlbV9tbWFwX19ndHQoZGF0YS0+ZHJtX2ZkLCBzcmMtPmJvLT5oYW5kbGUs Cj4gPiA+IC0JCQkJICAgc3JjLT5iby0+c2l6ZSwgUFJPVF9SRUFEKTsKPiA+ID4gIAo+ID4gPiAt CXcgPSBtaW4odywgd2lkdGggLSBzeCk7Cj4gPiA+IC0JdyA9IG1pbih3LCB3aWR0aCAtIGR4KTsK PiA+ID4gKwlpZiAoc3JjLT50aWxpbmcgPT0gSTkxNV9USUxJTkdfWWYpIHsKPiA+ID4gKwkJdm9p ZCAqbWFwOwo+ID4gPiAgCj4gPiA+IC0JaCA9IG1pbihoLCBoZWlnaHQgLSBzeSk7Cj4gPiA+IC0J aCA9IG1pbihoLCBoZWlnaHQgLSBkeSk7Cj4gPiA+ICsJCWdlbV9zZXRfZG9tYWluKGRhdGEtPmRy bV9mZCwgc3JjLT5iby0+aGFuZGxlLAo+ID4gPiArCQkJICAgICAgIEk5MTVfR0VNX0RPTUFJTl9D UFUsIDApOwo+ID4gPiArCQltYXAgPSBnZW1fbW1hcF9fY3B1KGRhdGEtPmRybV9mZCwgc3JjLT5i by0+aGFuZGxlLCAwLAo+ID4gPiArCQkJCSAgICBzcmMtPmJvLT5zaXplLCBQUk9UX1JFQUQpOwo+ ID4gPiArCj4gPiA+ICsJCWZvciAoaW50IHkgPSAwOyB5IDwgaDsgeSsrKSB7Cj4gPiA+ICsJCQlm b3IgKGludCB4ID0gMDsgeCA8IHc7IHgrKykgewo+ID4gPiArCQkJCWNvbnN0IHVpbnQzMl90ICpw dHIgPSB5Zl9wdHIobWFwLCBzeCt4LAo+ID4gPiBzeSt5LCBzcmMtPnN0cmlkZSwgNCk7Cj4gPiAK PiA+IFNhbWUgY29tbWVudCBhcyBhYm92ZSBhY2NvcmRpbmcgJzQnLgo+IAo+IHMvNC9zcmMtPmJw cCAvIDgKPiAKPiA+ID4gKwo+ID4gPiArCQkJCWxpbmVhcl9kc3RbKGR5K3kpICogd2lkdGggKyBk eCt4XSA9Cj4gPiA+ICpwdHI7Cj4gPiA+ICsJCQl9Cj4gPiA+ICsJCX0KPiA+ID4gKwo+ID4gPiAr CQltdW5tYXAobWFwLCBzcmMtPmJvLT5zaXplKTsKPiA+ID4gKwl9IGVsc2Ugewo+ID4gPiArCQl1 aW50MzJfdCAqbGluZWFyX3NyYzsKPiA+ID4gKwo+ID4gPiArCQlnZW1fc2V0X2RvbWFpbihkYXRh LT5kcm1fZmQsIHNyYy0+Ym8tPmhhbmRsZSwKPiA+ID4gKwkJCSAgICAgICBJOTE1X0dFTV9ET01B SU5fR1RULCAwKTsKPiA+ID4gIAo+ID4gPiAtCWZvciAoaW50IHkgPSAwOyB5IDwgaDsgeSsrKSB7 Cj4gPiA+IC0JCWlndF9tZW1jcHlfZnJvbV93YygmbGluZWFyX2RzdFsoZHkreSkgKiB3aWR0aCAr IGR4XSwKPiA+ID4gLQkJCQkgICAmbGluZWFyX3NyY1soc3kreSkgKiB3aWR0aCArIHN4XSwKPiA+ ID4gLQkJCQkgICB3ICogNCk7Cj4gPiAKPiA+IEhvdyBjYW4geW91IG1ha2Ugc3VyZSB0aGF0IHcq NCBpcyBlbm91Z2g/Cj4gU2FtZSBhcyBhYm92ZSwgd2lsbCBzd2l0Y2ggdG8gc3JjLT5icHAgLyA0 IGFuZCBhbiBhc3NlcnRpb24gZm9yIGRzdC0KPiA+YnBwID09IHNyYy0+YnBwCj4gCj4gLURLCj4g Cj4gPiAgKEFnYWluIC0gdGhpcyBjYW4gYmUgYSBzaWxseQo+ID4gcXVlc3Rpb24pLiBBcyBJIHNl ZSBiZWxvdyBpdCBjYW4gYmUgY29ubmVjdGVkIHdpdGggc3RyaWRlLCBpcyBpdD8KPiA+IAo+ID4g S2FzaWEKPiA+ID4gKwkJbGluZWFyX3NyYyA9IGdlbV9tbWFwX19ndHQoZGF0YS0+ZHJtX2ZkLCBz cmMtPmJvLQo+ID4gPiA+aGFuZGxlLAo+ID4gPiArCQkJCQkgICBzcmMtPmJvLT5zaXplLCBQUk9U X1JFQUQpOwo+ID4gPiArCj4gPiA+ICsJCWZvciAoaW50IHkgPSAwOyB5IDwgaDsgeSsrKSB7Cj4g PiA+ICsJCQlpZ3RfbWVtY3B5X2Zyb21fd2MoJmxpbmVhcl9kc3RbKGR5K3kpICogd2lkdGggKwo+ ID4gPiBkeF0sCj4gPiA+ICsJCQkJCSAgICZsaW5lYXJfc3JjWyhzeSt5KSAqIHdpZHRoICsKPiA+ ID4gc3hdLAo+ID4gPiArCQkJCQkgICB3ICogNCk7Cj4gPiA+ICsJCX0KPiA+ID4gKwo+ID4gPiAr CQltdW5tYXAobGluZWFyX3NyYywgc3JjLT5iby0+c2l6ZSk7Cj4gPiA+ICAJfQo+ID4gPiAgCj4g PiA+ICAJbXVubWFwKGxpbmVhcl9kc3QsIGRzdC0+Ym8tPnNpemUpOwo+ID4gPiAtCW11bm1hcChs aW5lYXJfc3JjLCBzcmMtPmJvLT5zaXplKTsKPiA+ID4gIH0KPiA+ID4gIAo+ID4gPiAgc3RhdGlj IHZvaWQgc2NyYXRjaF9idWZfaW5pdChkYXRhX3QgKmRhdGEsIHN0cnVjdCBpZ3RfYnVmICpidWYs Cj4gPiA+IEBAIC0yODIsNyArMzg2LDggQEAgc3RhdGljIHZvaWQgc2NyYXRjaF9idWZfaW5pdChk YXRhX3QgKmRhdGEsCj4gPiA+IHN0cnVjdCBpZ3RfYnVmICpidWYsCj4gPiA+ICAJCWludCBzaXpl Owo+ID4gPiAgCj4gPiA+ICAJCWlndF9yZXF1aXJlKGludGVsX2dlbihkYXRhLT5kZXZpZCkgPj0g OSk7Cj4gPiA+IC0JCWlndF9hc3NlcnRfZXEodGlsaW5nLCBJOTE1X1RJTElOR19ZKTsKPiA+ID4g KwkJaWd0X2Fzc2VydCh0aWxpbmcgPT0gSTkxNV9USUxJTkdfWSB8fAo+ID4gPiArCQkJICAgdGls aW5nID09IEk5MTVfVElMSU5HX1lmKTsKPiA+ID4gIAo+ID4gPiAgCQlidWYtPnN0cmlkZSA9IEFM SUdOKHdpZHRoICogNCwgMTI4KTsKPiA+ID4gIAkJYnVmLT5zaXplID0gYnVmLT5zdHJpZGUgKiBo ZWlnaHQ7Cj4gPiA+IEBAIC0yOTksOCArNDA0LDIxIEBAIHN0YXRpYyB2b2lkIHNjcmF0Y2hfYnVm X2luaXQoZGF0YV90ICpkYXRhLAo+ID4gPiBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLAo+ID4gPiAgCj4g PiA+ICAJCWJ1Zi0+Ym8gPSBkcm1faW50ZWxfYm9fYWxsb2MoZGF0YS0+YnVmbWdyLCAiIiwgc2l6 ZSwKPiA+ID4gNDA5Nik7Cj4gPiA+ICAKPiA+ID4gLQkJZHJtX2ludGVsX2JvX3NldF90aWxpbmco YnVmLT5ibywgJnRpbGluZywgYnVmLT5zdHJpZGUpOwo+ID4gPiAtCQlpZ3RfYXNzZXJ0X2VxKHRp bGluZywgcmVxX3RpbGluZyk7Cj4gPiA+ICsJCWlmICh0aWxpbmcgPT0gSTkxNV9USUxJTkdfWSkg ewo+ID4gPiArCQkJZHJtX2ludGVsX2JvX3NldF90aWxpbmcoYnVmLT5ibywgJnRpbGluZywgYnVm LQo+ID4gPiA+c3RyaWRlKTsKPiA+ID4gKwkJCWlndF9hc3NlcnRfZXEodGlsaW5nLCByZXFfdGls aW5nKTsKPiA+ID4gKwkJfQo+ID4gPiArCX0gZWxzZSBpZiAocmVxX3RpbGluZyA9PSBJOTE1X1RJ TElOR19ZZikgewo+ID4gPiArCQlpbnQgc2l6ZTsKPiA+ID4gKwo+ID4gPiArCQlidWYtPnN0cmlk ZSA9IEFMSUdOKHdpZHRoICogNCwgMTI4KTsKPiA+ID4gKwkJYnVmLT5zaXplID0gYnVmLT5zdHJp ZGUgKiBoZWlnaHQ7Cj4gPiA+ICsJCWJ1Zi0+dGlsaW5nID0gdGlsaW5nOwo+ID4gPiArCQlidWYt PmJwcCA9IDMyOwo+ID4gPiArCj4gPiA+ICsJCXNpemUgPSBidWYtPnN0cmlkZSAqIEFMSUdOKGhl aWdodCwgMzIpOwo+ID4gPiArCj4gPiA+ICsJCWJ1Zi0+Ym8gPSBkcm1faW50ZWxfYm9fYWxsb2Mo ZGF0YS0+YnVmbWdyLCAiIiwgc2l6ZSwKPiA+ID4gNDA5Nik7Cj4gPiA+ICAJfSBlbHNlIHsKPiA+ ID4gIAkJYnVmLT5ibyA9IGRybV9pbnRlbF9ib19hbGxvY190aWxlZChkYXRhLT5idWZtZ3IsICIi LAo+ID4gPiAgCQkJCQkJICAgd2lkdGgsIGhlaWdodCwgNCwKPiA+ID4gQEAgLTM5Niw3ICs1MTQs NyBAQCBzdGF0aWMgdm9pZCBzY3JhdGNoX2J1Zl9hdXhfY2hlY2soZGF0YV90ICpkYXRhLAo+ID4g PiAgCQkgICAgICJBdXggc3VyZmFjZSBpbmRpY2F0ZXMgdGhhdCBub3RoaW5nIHdhcwo+ID4gPiBj b21wcmVzc2VkXG4iKTsKPiA+ID4gIH0KPiA+ID4gIAo+ID4gPiAtc3RhdGljIHZvaWQgdGVzdChk YXRhX3QgKmRhdGEsIHVpbnQzMl90IHRpbGluZywgYm9vbCB0ZXN0X2NjcykKPiA+ID4gK3N0YXRp YyB2b2lkIHRlc3QoZGF0YV90ICpkYXRhLCB1aW50MzJfdCB0aWxpbmcsIHVpbnQ2NF90Cj4gPiA+ IGNjc19tb2RpZmllcikKPiA+ID4gIHsKPiA+ID4gIAlzdHJ1Y3QgaWd0X2J1ZiBkc3QsIGNjcywg cmVmOwo+ID4gPiAgCXN0cnVjdCB7Cj4gPiA+IEBAIC00MDQsNyArNTIyLDcgQEAgc3RhdGljIHZv aWQgdGVzdChkYXRhX3QgKmRhdGEsIHVpbnQzMl90IHRpbGluZywKPiA+ID4gYm9vbCB0ZXN0X2Nj cykKPiA+ID4gIAkJY29uc3QgY2hhciAqZmlsZW5hbWU7Cj4gPiA+ICAJCXVpbnQzMl90IHRpbGlu ZzsKPiA+ID4gIAkJaW50IHgsIHk7Cj4gPiA+IC0JfSBzcmNbM10gPSB7Cj4gPiA+ICsJfSBzcmNb XSA9IHsKPiA+ID4gIAkJewo+ID4gPiAgCQkJLmZpbGVuYW1lID0gInNvdXJjZS1saW5lYXIucG5n IiwKPiA+ID4gIAkJCS50aWxpbmcgPSBJOTE1X1RJTElOR19OT05FLAo+ID4gPiBAQCAtNDIwLDE4 ICs1MzgsMzEgQEAgc3RhdGljIHZvaWQgdGVzdChkYXRhX3QgKmRhdGEsIHVpbnQzMl90Cj4gPiA+ IHRpbGluZywgYm9vbCB0ZXN0X2NjcykKPiA+ID4gIAkJCS50aWxpbmcgPSBJOTE1X1RJTElOR19Z LAo+ID4gPiAgCQkJLnggPSBXSURUSC8yKzEsIC55ID0gMSwKPiA+ID4gIAkJfSwKPiA+ID4gKwkJ ewo+ID4gPiArCQkJLmZpbGVuYW1lID0gInNvdXJjZS15Zi10aWxlZC5wbmciLAo+ID4gPiArCQkJ LnRpbGluZyA9IEk5MTVfVElMSU5HX1lmLAo+ID4gPiArCQkJLnggPSAxLCAueSA9IDEsCj4gPiA+ ICsJCX0sCj4gPiA+ICAJfTsKPiA+ID4gIAo+ID4gPiAgCWludCBvcHRfZHVtcF9hdWIgPSBpZ3Rf YXViX2R1bXBfZW5hYmxlZCgpOwo+ID4gPiArCWludCBudW1fc3JjID0gQVJSQVlfU0laRShzcmMp Owo+ID4gPiArCj4gPiA+ICsJLyogbm8gWWYgYmVmb3JlIGdlbjkgKi8KPiA+ID4gKwlpZiAoaW50 ZWxfZ2VuKGRhdGEtPmRldmlkKSA8IDkpCj4gPiA+ICsJCW51bV9zcmMtLTsKPiA+ID4gKwo+ID4g PiArCWlmICh0aWxpbmcgPT0gSTkxNV9USUxJTkdfWWYgfHwgY2NzX21vZGlmaWVyKQo+ID4gPiAr CQlpZ3RfcmVxdWlyZShpbnRlbF9nZW4oZGF0YS0+ZGV2aWQpID49IDkpOwo+ID4gPiAgCj4gPiA+ IC0JZm9yIChpbnQgaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHNyYyk7IGkrKykKPiA+ID4gKwlmb3Ig KGludCBpID0gMDsgaSA8IG51bV9zcmM7IGkrKykKPiA+ID4gIAkJc2NyYXRjaF9idWZfaW5pdChk YXRhLCAmc3JjW2ldLmJ1ZiwgV0lEVEgsIEhFSUdIVCwKPiA+ID4gc3JjW2ldLnRpbGluZywgZmFs c2UpOwo+ID4gPiAgCXNjcmF0Y2hfYnVmX2luaXQoZGF0YSwgJmRzdCwgV0lEVEgsIEhFSUdIVCwg dGlsaW5nLCBmYWxzZSk7Cj4gPiA+IC0JaWYgKHRlc3RfY2NzKQo+ID4gPiAtCQlzY3JhdGNoX2J1 Zl9pbml0KGRhdGEsICZjY3MsIFdJRFRILCBIRUlHSFQsCj4gPiA+IEk5MTVfVElMSU5HX1ksIHRy dWUpOwo+ID4gPiArCWlmIChjY3NfbW9kaWZpZXIpCj4gPiA+ICsJCXNjcmF0Y2hfYnVmX2luaXQo ZGF0YSwgJmNjcywgV0lEVEgsIEhFSUdIVCwKPiA+ID4gY2NzX21vZGlmaWVyLCB0cnVlKTsKPiA+ ID4gIAlzY3JhdGNoX2J1Zl9pbml0KGRhdGEsICZyZWYsIFdJRFRILCBIRUlHSFQsIEk5MTVfVElM SU5HX05PTkUsCj4gPiA+IGZhbHNlKTsKPiA+ID4gIAo+ID4gPiAtCWZvciAoaW50IGkgPSAwOyBp IDwgQVJSQVlfU0laRShzcmMpOyBpKyspCj4gPiA+ICsJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1f c3JjOyBpKyspCj4gPiA+ICAJCXNjcmF0Y2hfYnVmX2RyYXdfcGF0dGVybihkYXRhLCAmc3JjW2ld LmJ1ZiwKPiA+ID4gIAkJCQkJIDAsIDAsIFdJRFRILCBIRUlHSFQsCj4gPiA+ICAJCQkJCSAwLCAw LCBXSURUSCwgSEVJR0hULCB0cnVlKTsKPiA+ID4gQEAgLTQ0MiwxMyArNTczLDEzIEBAIHN0YXRp YyB2b2lkIHRlc3QoZGF0YV90ICpkYXRhLCB1aW50MzJfdAo+ID4gPiB0aWxpbmcsIGJvb2wgdGVz dF9jY3MpCj4gPiA+ICAJc2NyYXRjaF9idWZfY29weShkYXRhLAo+ID4gPiAgCQkJICZkc3QsIDAs IDAsIFdJRFRILCBIRUlHSFQsCj4gPiA+ICAJCQkgJnJlZiwgMCwgMCk7Cj4gPiA+IC0JZm9yIChp bnQgaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHNyYyk7IGkrKykKPiA+ID4gKwlmb3IgKGludCBpID0g MDsgaSA8IG51bV9zcmM7IGkrKykKPiA+ID4gIAkJc2NyYXRjaF9idWZfY29weShkYXRhLAo+ID4g PiAgCQkJCSAmc3JjW2ldLmJ1ZiwgV0lEVEgvNCwgSEVJR0hULzQsCj4gPiA+IFdJRFRILzItMiwg SEVJR0hULzItMiwKPiA+ID4gIAkJCQkgJnJlZiwgc3JjW2ldLngsIHNyY1tpXS55KTsKPiA+ID4g IAo+ID4gPiAgCWlmIChvcHRfZHVtcF9wbmcpIHsKPiA+ID4gLQkJZm9yIChpbnQgaSA9IDA7IGkg PCBBUlJBWV9TSVpFKHNyYyk7IGkrKykKPiA+ID4gKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1f c3JjOyBpKyspCj4gPiA+ICAJCQlzY3JhdGNoX2J1Zl93cml0ZV90b19wbmcoZGF0YSwgJnNyY1tp XS5idWYsCj4gPiA+IHNyY1tpXS5maWxlbmFtZSk7Cj4gPiA+ICAJCXNjcmF0Y2hfYnVmX3dyaXRl X3RvX3BuZyhkYXRhLCAmZHN0LAo+ID4gPiAiZGVzdGluYXRpb24ucG5nIik7Cj4gPiA+ICAJCXNj cmF0Y2hfYnVmX3dyaXRlX3RvX3BuZyhkYXRhLCAmcmVmLCAicmVmZXJlbmNlLnBuZyIpOwo+ID4g PiBAQCAtNDY4LDI0ICs1OTksMjQgQEAgc3RhdGljIHZvaWQgdGVzdChkYXRhX3QgKmRhdGEsIHVp bnQzMl90Cj4gPiA+IHRpbGluZywgYm9vbCB0ZXN0X2NjcykKPiA+ID4gIAkgKgkgfGRzdHxzcmN8 Cj4gPiA+ICAJICoJICAtLS0tLS0tCj4gPiA+ICAJICovCj4gPiA+IC0JaWYgKHRlc3RfY2NzKQo+ ID4gPiArCWlmIChjY3NfbW9kaWZpZXIpCj4gPiA+ICAJCWRhdGEtPnJlbmRlcl9jb3B5KGRhdGEt PmJhdGNoLCBOVUxMLAo+ID4gPiAgCQkJCSAgJmRzdCwgMCwgMCwgV0lEVEgsIEhFSUdIVCwKPiA+ ID4gIAkJCQkgICZjY3MsIDAsIDApOwo+ID4gPiAgCj4gPiA+IC0JZm9yIChpbnQgaSA9IDA7IGkg PCBBUlJBWV9TSVpFKHNyYyk7IGkrKykKPiA+ID4gKwlmb3IgKGludCBpID0gMDsgaSA8IG51bV9z cmM7IGkrKykKPiA+ID4gIAkJZGF0YS0+cmVuZGVyX2NvcHkoZGF0YS0+YmF0Y2gsIE5VTEwsCj4g PiA+ICAJCQkJICAmc3JjW2ldLmJ1ZiwgV0lEVEgvNCwgSEVJR0hULzQsCj4gPiA+IFdJRFRILzIt MiwgSEVJR0hULzItMiwKPiA+ID4gLQkJCQkgIHRlc3RfY2NzID8gJmNjcyA6ICZkc3QsIHNyY1tp XS54LAo+ID4gPiBzcmNbaV0ueSk7Cj4gPiA+ICsJCQkJICBjY3NfbW9kaWZpZXIgPyAmY2NzIDog JmRzdCwgc3JjW2ldLngsCj4gPiA+IHNyY1tpXS55KTsKPiA+ID4gIAo+ID4gPiAtCWlmICh0ZXN0 X2NjcykKPiA+ID4gKwlpZiAoY2NzX21vZGlmaWVyKQo+ID4gPiAgCQlkYXRhLT5yZW5kZXJfY29w eShkYXRhLT5iYXRjaCwgTlVMTCwKPiA+ID4gIAkJCQkgICZjY3MsIDAsIDAsIFdJRFRILCBIRUlH SFQsCj4gPiA+ICAJCQkJICAmZHN0LCAwLCAwKTsKPiA+ID4gIAo+ID4gPiAgCWlmIChvcHRfZHVt cF9wbmcpewo+ID4gPiAgCQlzY3JhdGNoX2J1Zl93cml0ZV90b19wbmcoZGF0YSwgJmRzdCwgInJl c3VsdC5wbmciKTsKPiA+ID4gLQkJaWYgKHRlc3RfY2NzKSB7Cj4gPiA+ICsJCWlmIChjY3NfbW9k aWZpZXIpIHsKPiA+ID4gIAkJCXNjcmF0Y2hfYnVmX3dyaXRlX3RvX3BuZyhkYXRhLCAmY2NzLAo+ ID4gPiAiY29tcHJlc3NlZC5wbmciKTsKPiA+ID4gIAkJCXNjcmF0Y2hfYnVmX2F1eF93cml0ZV90 b19wbmcoZGF0YSwgJmNjcywKPiA+ID4gImNvbXByZXNzZWQtYXV4LnBuZyIpOwo+ID4gPiAgCQl9 Cj4gPiA+IEBAIC01MDUsNyArNjM2LDcgQEAgc3RhdGljIHZvaWQgdGVzdChkYXRhX3QgKmRhdGEs IHVpbnQzMl90IHRpbGluZywKPiA+ID4gYm9vbCB0ZXN0X2NjcykKPiA+ID4gIAkJc2NyYXRjaF9i dWZfY2hlY2soZGF0YSwgJmRzdCwgJnJlZiwgV0lEVEggLSAxMCwgSEVJR0hUCj4gPiA+IC0gMTAp Owo+ID4gPiAgCX0KPiA+ID4gIAo+ID4gPiAtCWlmICh0ZXN0X2NjcykKPiA+ID4gKwlpZiAoY2Nz X21vZGlmaWVyKQo+ID4gPiAgCQlzY3JhdGNoX2J1Zl9hdXhfY2hlY2soZGF0YSwgJmNjcyk7Cj4g PiA+ICB9Cj4gPiA+ICAKPiA+ID4gQEAgLTU0NiwxOCArNjc3LDMxIEBAIGludCBtYWluKGludCBh cmdjLCBjaGFyICoqYXJndikKPiA+ID4gIAl9Cj4gPiA+ICAKPiA+ID4gIAlpZ3Rfc3VidGVzdCgi bGluZWFyIikKPiA+ID4gLQkJdGVzdCgmZGF0YSwgSTkxNV9USUxJTkdfTk9ORSwgZmFsc2UpOwo+ ID4gPiArCQl0ZXN0KCZkYXRhLCBJOTE1X1RJTElOR19OT05FLCAwKTsKPiA+ID4gIAlpZ3Rfc3Vi dGVzdCgieC10aWxlZCIpCj4gPiA+IC0JCXRlc3QoJmRhdGEsIEk5MTVfVElMSU5HX1gsIGZhbHNl KTsKPiA+ID4gKwkJdGVzdCgmZGF0YSwgSTkxNV9USUxJTkdfWCwgMCk7Cj4gPiA+ICAJaWd0X3N1 YnRlc3QoInktdGlsZWQiKQo+ID4gPiAtCQl0ZXN0KCZkYXRhLCBJOTE1X1RJTElOR19ZLCBmYWxz ZSk7Cj4gPiA+ICsJCXRlc3QoJmRhdGEsIEk5MTVfVElMSU5HX1ksIDApOwo+ID4gPiArCWlndF9z dWJ0ZXN0KCJ5Zi10aWxlZCIpCj4gPiA+ICsJCXRlc3QoJmRhdGEsIEk5MTVfVElMSU5HX1lmLCAw KTsKPiA+ID4gIAo+ID4gPiAgCWlndF9zdWJ0ZXN0KCJ5LXRpbGVkLWNjcy10by1saW5lYXIiKQo+ ID4gPiAtCQl0ZXN0KCZkYXRhLCBJOTE1X1RJTElOR19OT05FLCB0cnVlKTsKPiA+ID4gKwkJdGVz dCgmZGF0YSwgSTkxNV9USUxJTkdfTk9ORSwgSTkxNV9USUxJTkdfWSk7Cj4gPiA+ICAJaWd0X3N1 YnRlc3QoInktdGlsZWQtY2NzLXRvLXgtdGlsZWQiKQo+ID4gPiAtCQl0ZXN0KCZkYXRhLCBJOTE1 X1RJTElOR19YLCB0cnVlKTsKPiA+ID4gKwkJdGVzdCgmZGF0YSwgSTkxNV9USUxJTkdfWCwgSTkx NV9USUxJTkdfWSk7Cj4gPiA+ICAJaWd0X3N1YnRlc3QoInktdGlsZWQtY2NzLXRvLXktdGlsZWQi KQo+ID4gPiAtCQl0ZXN0KCZkYXRhLCBJOTE1X1RJTElOR19ZLCB0cnVlKTsKPiA+ID4gKwkJdGVz dCgmZGF0YSwgSTkxNV9USUxJTkdfWSwgSTkxNV9USUxJTkdfWSk7Cj4gPiA+ICsJaWd0X3N1YnRl c3QoInktdGlsZWQtY2NzLXRvLXlmLXRpbGVkIikKPiA+ID4gKwkJdGVzdCgmZGF0YSwgSTkxNV9U SUxJTkdfWWYsIEk5MTVfVElMSU5HX1kpOwo+ID4gPiArCj4gPiA+ICsJaWd0X3N1YnRlc3QoInlm LXRpbGVkLWNjcy10by1saW5lYXIiKQo+ID4gPiArCQl0ZXN0KCZkYXRhLCBJOTE1X1RJTElOR19O T05FLCBJOTE1X1RJTElOR19ZZik7Cj4gPiA+ICsJaWd0X3N1YnRlc3QoInlmLXRpbGVkLWNjcy10 by14LXRpbGVkIikKPiA+ID4gKwkJdGVzdCgmZGF0YSwgSTkxNV9USUxJTkdfWCwgSTkxNV9USUxJ TkdfWWYpOwo+ID4gPiArCWlndF9zdWJ0ZXN0KCJ5Zi10aWxlZC1jY3MtdG8teS10aWxlZCIpCj4g PiA+ICsJCXRlc3QoJmRhdGEsIEk5MTVfVElMSU5HX1ksIEk5MTVfVElMSU5HX1lmKTsKPiA+ID4g KwlpZ3Rfc3VidGVzdCgieWYtdGlsZWQtY2NzLXRvLXlmLXRpbGVkIikKPiA+ID4gKwkJdGVzdCgm ZGF0YSwgSTkxNV9USUxJTkdfWWYsIEk5MTVfVElMSU5HX1lmKTsKPiA+ID4gIAo+ID4gPiAgCWln dF9maXh0dXJlIHsKPiA+ID4gIAkJaW50ZWxfYmF0Y2hidWZmZXJfZnJlZShkYXRhLmJhdGNoKTsK PiA+ID4gLS0gCj4gPiA+IDIuMTcuMQo+ID4gPiAKPiAKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pZ3QtZGV2