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 898C96E21D for ; Thu, 7 Mar 2019 00:58:05 +0000 (UTC) Message-ID: <56ee0ba2dab9298b0df581490c488ab985571263.camel@intel.com> From: Dhinakaran Pandiyan Date: Wed, 06 Mar 2019 16:58:02 -0800 In-Reply-To: <20190305142659.GD8924@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> Mime-Version: 1.0 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: , Reply-To: dhinakaran.pandiyan@intel.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Katarzyna Dec , igt-dev@lists.freedesktop.org List-ID: T24gVHVlLCAyMDE5LTAzLTA1IGF0IDE1OjI2ICswMTAwLCBLYXRhcnp5bmEgRGVjIHdyb3RlOgo+ IE9uIE1vbiwgTWFyIDA0LCAyMDE5IGF0IDA1OjQ3OjM4UE0gLTA4MDAsIERoaW5ha2FyYW4gUGFu ZGl5YW4gd3JvdGU6Cj4gPiBGcm9tOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGlu dXguaW50ZWwuY29tPgo+ID4gCj4gPiBMZXQncyB0ZXN0IFlmIHRpbGluZyBub3cgdGhhdCByZW5k ZXJjb3B5IGNhbiBoYW5kbGUgaXQuCj4gPiAKPiA+IHYyOiBGcm9tIERLCj4gPiAgU2V0IGJwcCBm b3IgWWYgYnVmZmVyIGFuZCByZWJhc2UuCj4gPiAKPiA+IENjOiBMdWthc3ogS2FsYW1hcnogPGx1 a2Fzei5rYWxhbWFyekBpbnRlbC5jb20+Cj4gPiBDYzogS2F0YXJ6eW5hIERlYyA8a2F0YXJ6eW5h LmRlY0BpbnRlbC5jb20+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxl LnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+ID4gU2lnbmVkLW9mZi1ieTogRGhpbmFrYXJhbiBQ YW5kaXlhbiA8ZGhpbmFrYXJhbi5wYW5kaXlhbkBpbnRlbC5jb20+Cj4gPiAtLS0KPiA+ICB0ZXN0 cy9pOTE1L2dlbV9yZW5kZXJfY29weS5jIHwgMjQ2ICsrKysrKysrKysrKysrKysrKysrKysrKysr Ky0tCj4gPiAtLS0tLS0KPiA+ICAxIGZpbGUgY2hhbmdlZCwgMTk1IGluc2VydGlvbnMoKyksIDUx IGRlbGV0aW9ucygtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fcmVuZGVy X2NvcHkuYwo+ID4gYi90ZXN0cy9pOTE1L2dlbV9yZW5kZXJfY29weS5jCj4gPiBpbmRleCAwY2Q0 ZTUwZi4uYWZlMmRmMDUgMTAwNjQ0Cj4gPiAtLS0gYS90ZXN0cy9pOTE1L2dlbV9yZW5kZXJfY29w eS5jCj4gPiArKysgYi90ZXN0cy9pOTE1L2dlbV9yZW5kZXJfY29weS5jCj4gPiBAQCAtNzIsMTEg KzcyLDg1IEBAIHN0YXRpYyBjb25zdCBjaGFyICptYWtlX2ZpbGVuYW1lKGNvbnN0IGNoYXIKPiA+ ICpmaWxlbmFtZSkKPiA+ICAJcmV0dXJuIGJ1ZjsKPiA+ICB9Cj4gPiAgCj4gPiAtc3RhdGljIHZv aWQgKmxpbmVhcl9jb3B5KGRhdGFfdCAqZGF0YSwgc3RydWN0IGlndF9idWYgKmJ1ZikKPiA+ICtz dGF0aWMgdm9pZCAqeWZfcHRyKHZvaWQgKnB0ciwKPiA+ICsJCSAgICB1bnNpZ25lZCBpbnQgeCwg dW5zaWduZWQgaW50IHksCj4gPiArCQkgICAgdW5zaWduZWQgaW50IHN0cmlkZSwgdW5zaWduZWQg aW50IGNwcCkKPiA+ICB7Cj4gPiAtCXZvaWQgKm1hcCwgKmxpbmVhcjsKPiA+ICsgICAgICAgeCAq PSBjcHA7Cj4gPiArCj4gPiArICAgICAgIHJldHVybiBwdHIgKwo+ID4gKwkgICAgICAgKCh5ICYg fjB4MWYpICogc3RyaWRlKSArCj4gPiArCSAgICAgICAoKHkgJiAweDEwKSAqIDY0KSArCj4gPiAr CSAgICAgICAoKHkgJiAweDgpICogMzIpICsKPiA+ICsJICAgICAgICgoeSAmIDB4NykgKiAxNikg Kwo+ID4gKwkgICAgICAgKCh4ICYgfjB4M2YpICogMzIpICsKPiA+ICsJICAgICAgICgoeCAmIDB4 MjApICogMTYpICsKPiA+ICsJICAgICAgICgoeCAmIDB4MTApICogOCkgKwo+ID4gKwkgICAgICAg KHggJiAweGYpOwo+ID4gK30KPiAKPiBJIGxvb2tlZCB0aHJvdWdoIGRvY3VtZW50YXRpb24gYW5k IHRoZXNlIF4gdmFsdWVzIGUuZy4gfjB4MWYgb3RoZXJzCj4geC95ICYgPyBhcmUKPiBzdGlsbCBt eXN0ZXJpb3VzLiBNYXliZSB5b3UgY2FuIGRvY3VtZW50IHRoZW0gc29tZWhvdz8KVGhlIGNvZGUg cmVmbGVjdHMgdGhlIGludGVybmFsIHRpbGluZyBsYXlvdXQgZm9yIFlmLCB3aGljaCBpcwpkb2N1 bWVudGVkIGluIGxpYmRybTogaW5jbHVkZS9kcm0vZHJtX2ZvdXJjYy5oLiBJIGRvbid0IHNlZSBh bnkKZG9jdW1lbnRhdGlvbiBmb3Igb3RoZXIgdGlsaW5nIGZvcm1hdHMgaW4gSUdUIGVpdGhlciwg c28gbm90IHN1cmUgaG93CmV4YWN0bHkgeW91IHdhbnQgbWUgdG8gZG9jdW1lbnQgdGhpcy4gU3Vn Z2VzdGlvbnMgd2VsY29tZSA6KQoKQnV0LCBJIHRoaW5rIGl0J3MgYmV0dGVyIHRvIGRvIGFueSBh ZGRpdGlvbmFsIGRvY3VtZW50YXRpb24gd29yawpvdXRzaWRlIHRoaXMgc2VyaWVzIGFzIHRoaXMg aXMgZGVsYXlpbmcgYW4gSUNMIGJ1ZyBmaXguCgo+IAo+ID4gIAo+ID4gLQlpZ3RfYXNzZXJ0X2Vx KHBvc2l4X21lbWFsaWduKCZsaW5lYXIsIDE2LCBidWYtPmJvLT5zaXplKSwgMCk7Cj4gPiArc3Rh dGljIHZvaWQgY29weV9saW5lYXJfdG9feWYoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaWd0X2J1ZiAq YnVmLAo+ID4gY29uc3QgdWludDMyX3QgKmxpbmVhcikKPiAKPiBJdCB3b3VsZCBiZSBiZXR0ZXIg dG8gbW92ZSAnY29uc3QgdWluMzJfdCAqbGluZWFyJyB0byBuZXh0IGxpbmUKPiAoYWxpZ25lZCB3 aXRoCj4gb3RoZXJzKS4KPiA+ICt7Cj4gPiArCWludCBoZWlnaHQgPSBpZ3RfYnVmX2hlaWdodChi dWYpOwo+ID4gKwlpbnQgd2lkdGggPSBpZ3RfYnVmX3dpZHRoKGJ1Zik7Cj4gPiArCXZvaWQgKm1h cDsKPiA+ICsKPiA+ICsJZ2VtX3NldF9kb21haW4oZGF0YS0+ZHJtX2ZkLCBidWYtPmJvLT5oYW5k bGUsCj4gPiArCQkgICAgICAgSTkxNV9HRU1fRE9NQUlOX0NQVSwgSTkxNV9HRU1fRE9NQUlOX0NQ VSk7Cj4gPiArCW1hcCA9IGdlbV9tbWFwX19jcHUoZGF0YS0+ZHJtX2ZkLCBidWYtPmJvLT5oYW5k bGUsIDAsCj4gPiArCQkJICAgIGJ1Zi0+Ym8tPnNpemUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUp Owo+ID4gKwo+ID4gKwlmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7Cj4gPiArCQlm b3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKPiA+ICsJCQl1aW50MzJfdCAqcHRyID0g eWZfcHRyKG1hcCwgeCwgeSwgYnVmLT5zdHJpZGUsCj4gPiA0KTsKPiAKPiBWYWx1ZSAnNCcgaGVy ZSBpcyBhIGNwcC4gSXMgaXQgY29sb3IgcGVyIHBpeGVsPyBNYXliZSB3ZSBjYW4gZGVmaW5lCj4g dGhpcyB2YWx1ZQo+IHNvbWVob3c/IEkgd2FudCB0byBhdm9pZCBzaXR1YXRpb24gd2hlbiB0aGVy ZSB3aWxsIGJlIG5vIHBlb3BsZQo+IHVuZGVyc3RhbmRpbmcKPiB0aGlzIGNvZGUgb25ib2FyZC4K Q2hhbmdpbmcgdGhpcyB0byBidWYtPmJwcCAvIDgsIHRoYXQgc2hvdWxkIGJlIG1vcmUgaW50dWl0 aXZlLgoKPiA+ICsKPiA+ICsJCQkqcHRyID0gbGluZWFyW3kgKiB3aWR0aCArIHhdOwo+ID4gKwkJ fQo+ID4gKwl9Cj4gPiArCj4gPiArCW11bm1hcChtYXAsIGJ1Zi0+Ym8tPnNpemUpOwo+ID4gK30K PiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBjb3B5X3lmX3RvX2xpbmVhcihkYXRhX3QgKmRhdGEsIHN0 cnVjdCBpZ3RfYnVmICpidWYsCj4gPiB1aW50MzJfdCAqbGluZWFyKQo+ID4gK3sKPiA+ICsJaW50 IGhlaWdodCA9IGlndF9idWZfaGVpZ2h0KGJ1Zik7Cj4gPiArCWludCB3aWR0aCA9IGlndF9idWZf d2lkdGgoYnVmKTsKPiA+ICsJdm9pZCAqbWFwOwo+ID4gKwo+ID4gKwlnZW1fc2V0X2RvbWFpbihk YXRhLT5kcm1fZmQsIGJ1Zi0+Ym8tPmhhbmRsZSwKPiA+ICsJCSAgICAgICBJOTE1X0dFTV9ET01B SU5fQ1BVLCAwKTsKPiA+ICsJbWFwID0gZ2VtX21tYXBfX2NwdShkYXRhLT5kcm1fZmQsIGJ1Zi0+ Ym8tPmhhbmRsZSwgMCwKPiA+ICsJCQkgICAgYnVmLT5iby0+c2l6ZSwgUFJPVF9SRUFEKTsKPiA+ ICsKPiA+ICsJZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykgewo+ID4gKwkJZm9yIChp bnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7Cj4gPiArCQkJdWludDMyX3QgKnB0ciA9IHlmX3B0 cihtYXAsIHgsIHksIGJ1Zi0+c3RyaWRlLAo+ID4gNCk7Cj4gPiArCj4gPiArCQkJbGluZWFyW3kg KiB3aWR0aCArIHhdID0gKnB0cjsKPiA+ICsJCX0KPiA+ICsJfQo+ID4gKwo+ID4gKwltdW5tYXAo bWFwLCBidWYtPmJvLT5zaXplKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgY29weV9s aW5lYXJfdG9fZ3R0KGRhdGFfdCAqZGF0YSwgc3RydWN0IGlndF9idWYgKmJ1ZiwKPiA+IGNvbnN0 IHVpbnQzMl90ICpsaW5lYXIpCj4gPiArewo+ID4gKwl2b2lkICptYXA7Cj4gPiArCj4gPiArCWdl bV9zZXRfZG9tYWluKGRhdGEtPmRybV9mZCwgYnVmLT5iby0+aGFuZGxlLAo+ID4gKwkJICAgICAg IEk5MTVfR0VNX0RPTUFJTl9HVFQsIEk5MTVfR0VNX0RPTUFJTl9HVFQpOwo+ID4gKwo+ID4gKwlt YXAgPSBnZW1fbW1hcF9fZ3R0KGRhdGEtPmRybV9mZCwgYnVmLT5iby0+aGFuZGxlLAo+ID4gKwkJ CSAgICBidWYtPmJvLT5zaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKTsKPiA+ICsKPiA+ICsJ bWVtY3B5KG1hcCwgbGluZWFyLCBidWYtPmJvLT5zaXplKTsKPiA+ICsKPiA+ICsJbXVubWFwKG1h cCwgYnVmLT5iby0+c2l6ZSk7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkIGNvcHlfZ3R0 X3RvX2xpbmVhcihkYXRhX3QgKmRhdGEsIHN0cnVjdCBpZ3RfYnVmICpidWYsCj4gPiB1aW50MzJf dCAqbGluZWFyKQo+ID4gK3sKPiA+ICsJdm9pZCAqbWFwOwo+ID4gIAo+ID4gIAlnZW1fc2V0X2Rv bWFpbihkYXRhLT5kcm1fZmQsIGJ1Zi0+Ym8tPmhhbmRsZSwKPiA+ICAJCSAgICAgICBJOTE1X0dF TV9ET01BSU5fR1RULCAwKTsKPiA+IEBAIC04Nyw2ICsxNjEsMTggQEAgc3RhdGljIHZvaWQgKmxp bmVhcl9jb3B5KGRhdGFfdCAqZGF0YSwgc3RydWN0Cj4gPiBpZ3RfYnVmICpidWYpCj4gPiAgCWln dF9tZW1jcHlfZnJvbV93YyhsaW5lYXIsIG1hcCwgYnVmLT5iby0+c2l6ZSk7Cj4gPiAgCj4gPiAg CW11bm1hcChtYXAsIGJ1Zi0+Ym8tPnNpemUpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9p ZCAqbGluZWFyX2NvcHkoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmKQo+ID4gK3sK PiA+ICsJdm9pZCAqbGluZWFyOwo+ID4gKwo+ID4gKwlpZ3RfYXNzZXJ0X2VxKHBvc2l4X21lbWFs aWduKCZsaW5lYXIsIDE2LCBidWYtPmJvLT5zaXplKSwgMCk7Cj4gCj4gVGhlcmUgaXMgbm90IHNp bGx5IHF1ZXN0aW9ucywgSSBiZWxpZXZlLCB3aGF0IGlzICcxNicgXiBhYm92ZT8gSXMKPiB0aGlz IHNpemUKPiBmaXhlZCBzb21laG93PyBJIHdvdWxkIHByZWZlciBkZWZpbmluZyBpdCBpbiBzb21l IHdheS4KVGhlIGFsaWdubWVudCBpcyB1c2VmdWwgdG8gc3dpdGNoIHRvIGZhc3RlciBpbXBsZW1l bnRhdGlvbiBvZiBtZW1jcHkKdXNpbmcgU1NFNCBpbnN0cnVjdGlvbnMuCgo+ID4gKwo+ID4gKwlp ZiAoYnVmLT50aWxpbmcgPT0gSTkxNV9USUxJTkdfWWYpCj4gPiArCQljb3B5X3lmX3RvX2xpbmVh cihkYXRhLCBidWYsIGxpbmVhcik7Cj4gPiArCWVsc2UKPiA+ICsJCWNvcHlfZ3R0X3RvX2xpbmVh cihkYXRhLCBidWYsIGxpbmVhcik7Cj4gPiAgCj4gPiAgCXJldHVybiBsaW5lYXI7Cj4gPiAgfQo+ ID4gQEAgLTE3Myw3ICsyNTksNyBAQCBzdGF0aWMgdm9pZCBzY3JhdGNoX2J1Zl9kcmF3X3BhdHRl cm4oZGF0YV90Cj4gPiAqZGF0YSwgc3RydWN0IGlndF9idWYgKmJ1ZiwKPiA+ICAJY2Fpcm9fc3Vy ZmFjZV90ICpzdXJmYWNlOwo+ID4gIAljYWlyb19wYXR0ZXJuX3QgKnBhdDsKPiA+ICAJY2Fpcm9f dCAqY3I7Cj4gPiAtCXZvaWQgKm1hcCwgKmxpbmVhcjsKPiA+ICsJdm9pZCAqbGluZWFyOwo+ID4g IAo+ID4gIAlsaW5lYXIgPSBsaW5lYXJfY29weShkYXRhLCBidWYpOwo+ID4gIAo+ID4gQEAgLTIx NiwxNSArMzAyLDEwIEBAIHN0YXRpYyB2b2lkIHNjcmF0Y2hfYnVmX2RyYXdfcGF0dGVybihkYXRh X3QKPiA+ICpkYXRhLCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLAo+ID4gIAo+ID4gIAljYWlyb19zdXJm YWNlX2Rlc3Ryb3koc3VyZmFjZSk7Cj4gPiAgCj4gPiAtCWdlbV9zZXRfZG9tYWluKGRhdGEtPmRy bV9mZCwgYnVmLT5iby0+aGFuZGxlLAo+ID4gLQkJICAgICAgIEk5MTVfR0VNX0RPTUFJTl9HVFQs IEk5MTVfR0VNX0RPTUFJTl9HVFQpOwo+ID4gLQo+ID4gLQltYXAgPSBnZW1fbW1hcF9fZ3R0KGRh dGEtPmRybV9mZCwgYnVmLT5iby0+aGFuZGxlLAo+ID4gLQkJCSAgICBidWYtPmJvLT5zaXplLCBQ Uk9UX1JFQUQgfCBQUk9UX1dSSVRFKTsKPiA+IC0KPiA+IC0JbWVtY3B5KG1hcCwgbGluZWFyLCBi dWYtPmJvLT5zaXplKTsKPiA+IC0KPiA+IC0JbXVubWFwKG1hcCwgYnVmLT5iby0+c2l6ZSk7Cj4g PiArCWlmIChidWYtPnRpbGluZyA9PSBJOTE1X1RJTElOR19ZZikKPiA+ICsJCWNvcHlfbGluZWFy X3RvX3lmKGRhdGEsIGJ1ZiwgbGluZWFyKTsKPiA+ICsJZWxzZQo+ID4gKwkJY29weV9saW5lYXJf dG9fZ3R0KGRhdGEsIGJ1ZiwgbGluZWFyKTsKPiA+ICAKPiA+ICAJZnJlZShsaW5lYXIpOwo+ID4g IH0KPiA+IEBAIC0yMzYsMzYgKzMxNyw1OSBAQCBzY3JhdGNoX2J1Zl9jb3B5KGRhdGFfdCAqZGF0 YSwKPiA+ICB7Cj4gPiAgCWludCB3aWR0aCA9IGlndF9idWZfd2lkdGgoZHN0KTsKPiA+ICAJaW50 IGhlaWdodCAgPSBpZ3RfYnVmX2hlaWdodChkc3QpOwo+ID4gLQl1aW50MzJfdCAqbGluZWFyX2Rz dCwgKmxpbmVhcl9zcmM7Cj4gPiArCXVpbnQzMl90ICpsaW5lYXJfZHN0Owo+ID4gIAo+ID4gIAlp Z3RfYXNzZXJ0X2VxKGlndF9idWZfd2lkdGgoZHN0KSwgaWd0X2J1Zl93aWR0aChzcmMpKTsKPiA+ ICAJaWd0X2Fzc2VydF9lcShpZ3RfYnVmX2hlaWdodChkc3QpLCBpZ3RfYnVmX2hlaWdodChzcmMp KTsKPiA+ICAJaWd0X2Fzc2VydF9lcShkc3QtPmJvLT5zaXplLCBzcmMtPmJvLT5zaXplKTsKPiA+ ICAKPiA+ICsJdyA9IG1pbih3LCB3aWR0aCAtIHN4KTsKPiA+ICsJdyA9IG1pbih3LCB3aWR0aCAt IGR4KTsKPiA+ICsKPiA+ICsJaCA9IG1pbihoLCBoZWlnaHQgLSBzeSk7Cj4gPiArCWggPSBtaW4o aCwgaGVpZ2h0IC0gZHkpOwo+ID4gKwo+ID4gIAlnZW1fc2V0X2RvbWFpbihkYXRhLT5kcm1fZmQs IGRzdC0+Ym8tPmhhbmRsZSwKPiA+ICAJCSAgICAgICBJOTE1X0dFTV9ET01BSU5fR1RULCBJOTE1 X0dFTV9ET01BSU5fR1RUKTsKPiA+IC0JZ2VtX3NldF9kb21haW4oZGF0YS0+ZHJtX2ZkLCBzcmMt PmJvLT5oYW5kbGUsCj4gPiAtCQkgICAgICAgSTkxNV9HRU1fRE9NQUlOX0dUVCwgMCk7Cj4gPiAt Cj4gPiAgCWxpbmVhcl9kc3QgPSBnZW1fbW1hcF9fZ3R0KGRhdGEtPmRybV9mZCwgZHN0LT5iby0+ aGFuZGxlLAo+ID4gIAkJCQkgICBkc3QtPmJvLT5zaXplLCBQUk9UX1dSSVRFKTsKPiA+IC0JbGlu ZWFyX3NyYyA9IGdlbV9tbWFwX19ndHQoZGF0YS0+ZHJtX2ZkLCBzcmMtPmJvLT5oYW5kbGUsCj4g PiAtCQkJCSAgIHNyYy0+Ym8tPnNpemUsIFBST1RfUkVBRCk7Cj4gPiAgCj4gPiAtCXcgPSBtaW4o dywgd2lkdGggLSBzeCk7Cj4gPiAtCXcgPSBtaW4odywgd2lkdGggLSBkeCk7Cj4gPiArCWlmIChz cmMtPnRpbGluZyA9PSBJOTE1X1RJTElOR19ZZikgewo+ID4gKwkJdm9pZCAqbWFwOwo+ID4gIAo+ ID4gLQloID0gbWluKGgsIGhlaWdodCAtIHN5KTsKPiA+IC0JaCA9IG1pbihoLCBoZWlnaHQgLSBk eSk7Cj4gPiArCQlnZW1fc2V0X2RvbWFpbihkYXRhLT5kcm1fZmQsIHNyYy0+Ym8tPmhhbmRsZSwK PiA+ICsJCQkgICAgICAgSTkxNV9HRU1fRE9NQUlOX0NQVSwgMCk7Cj4gPiArCQltYXAgPSBnZW1f bW1hcF9fY3B1KGRhdGEtPmRybV9mZCwgc3JjLT5iby0+aGFuZGxlLCAwLAo+ID4gKwkJCQkgICAg c3JjLT5iby0+c2l6ZSwgUFJPVF9SRUFEKTsKPiA+ICsKPiA+ICsJCWZvciAoaW50IHkgPSAwOyB5 IDwgaDsgeSsrKSB7Cj4gPiArCQkJZm9yIChpbnQgeCA9IDA7IHggPCB3OyB4KyspIHsKPiA+ICsJ CQkJY29uc3QgdWludDMyX3QgKnB0ciA9IHlmX3B0cihtYXAsIHN4K3gsCj4gPiBzeSt5LCBzcmMt PnN0cmlkZSwgNCk7Cj4gCj4gU2FtZSBjb21tZW50IGFzIGFib3ZlIGFjY29yZGluZyAnNCcuCgpz LzQvc3JjLT5icHAgLyA4Cgo+ID4gKwo+ID4gKwkJCQlsaW5lYXJfZHN0WyhkeSt5KSAqIHdpZHRo ICsgZHgreF0gPQo+ID4gKnB0cjsKPiA+ICsJCQl9Cj4gPiArCQl9Cj4gPiArCj4gPiArCQltdW5t YXAobWFwLCBzcmMtPmJvLT5zaXplKTsKPiA+ICsJfSBlbHNlIHsKPiA+ICsJCXVpbnQzMl90ICps aW5lYXJfc3JjOwo+ID4gKwo+ID4gKwkJZ2VtX3NldF9kb21haW4oZGF0YS0+ZHJtX2ZkLCBzcmMt PmJvLT5oYW5kbGUsCj4gPiArCQkJICAgICAgIEk5MTVfR0VNX0RPTUFJTl9HVFQsIDApOwo+ID4g IAo+ID4gLQlmb3IgKGludCB5ID0gMDsgeSA8IGg7IHkrKykgewo+ID4gLQkJaWd0X21lbWNweV9m cm9tX3djKCZsaW5lYXJfZHN0WyhkeSt5KSAqIHdpZHRoICsgZHhdLAo+ID4gLQkJCQkgICAmbGlu ZWFyX3NyY1soc3kreSkgKiB3aWR0aCArIHN4XSwKPiA+IC0JCQkJICAgdyAqIDQpOwo+IAo+IEhv dyBjYW4geW91IG1ha2Ugc3VyZSB0aGF0IHcqNCBpcyBlbm91Z2g/ClNhbWUgYXMgYWJvdmUsIHdp bGwgc3dpdGNoIHRvIHNyYy0+YnBwIC8gNCBhbmQgYW4gYXNzZXJ0aW9uIGZvciBkc3QtCj5icHAg PT0gc3JjLT5icHAKCi1ESwoKPiAgKEFnYWluIC0gdGhpcyBjYW4gYmUgYSBzaWxseQo+IHF1ZXN0 aW9uKS4gQXMgSSBzZWUgYmVsb3cgaXQgY2FuIGJlIGNvbm5lY3RlZCB3aXRoIHN0cmlkZSwgaXMg aXQ/Cj4gCj4gS2FzaWEKPiA+ICsJCWxpbmVhcl9zcmMgPSBnZW1fbW1hcF9fZ3R0KGRhdGEtPmRy bV9mZCwgc3JjLT5iby0KPiA+ID5oYW5kbGUsCj4gPiArCQkJCQkgICBzcmMtPmJvLT5zaXplLCBQ Uk9UX1JFQUQpOwo+ID4gKwo+ID4gKwkJZm9yIChpbnQgeSA9IDA7IHkgPCBoOyB5KyspIHsKPiA+ ICsJCQlpZ3RfbWVtY3B5X2Zyb21fd2MoJmxpbmVhcl9kc3RbKGR5K3kpICogd2lkdGggKwo+ID4g ZHhdLAo+ID4gKwkJCQkJICAgJmxpbmVhcl9zcmNbKHN5K3kpICogd2lkdGggKwo+ID4gc3hdLAo+ ID4gKwkJCQkJICAgdyAqIDQpOwo+ID4gKwkJfQo+ID4gKwo+ID4gKwkJbXVubWFwKGxpbmVhcl9z cmMsIHNyYy0+Ym8tPnNpemUpOwo+ID4gIAl9Cj4gPiAgCj4gPiAgCW11bm1hcChsaW5lYXJfZHN0 LCBkc3QtPmJvLT5zaXplKTsKPiA+IC0JbXVubWFwKGxpbmVhcl9zcmMsIHNyYy0+Ym8tPnNpemUp Owo+ID4gIH0KPiA+ICAKPiA+ICBzdGF0aWMgdm9pZCBzY3JhdGNoX2J1Zl9pbml0KGRhdGFfdCAq ZGF0YSwgc3RydWN0IGlndF9idWYgKmJ1ZiwKPiA+IEBAIC0yODIsNyArMzg2LDggQEAgc3RhdGlj IHZvaWQgc2NyYXRjaF9idWZfaW5pdChkYXRhX3QgKmRhdGEsCj4gPiBzdHJ1Y3QgaWd0X2J1ZiAq YnVmLAo+ID4gIAkJaW50IHNpemU7Cj4gPiAgCj4gPiAgCQlpZ3RfcmVxdWlyZShpbnRlbF9nZW4o ZGF0YS0+ZGV2aWQpID49IDkpOwo+ID4gLQkJaWd0X2Fzc2VydF9lcSh0aWxpbmcsIEk5MTVfVElM SU5HX1kpOwo+ID4gKwkJaWd0X2Fzc2VydCh0aWxpbmcgPT0gSTkxNV9USUxJTkdfWSB8fAo+ID4g KwkJCSAgIHRpbGluZyA9PSBJOTE1X1RJTElOR19ZZik7Cj4gPiAgCj4gPiAgCQlidWYtPnN0cmlk ZSA9IEFMSUdOKHdpZHRoICogNCwgMTI4KTsKPiA+ICAJCWJ1Zi0+c2l6ZSA9IGJ1Zi0+c3RyaWRl ICogaGVpZ2h0Owo+ID4gQEAgLTI5OSw4ICs0MDQsMjEgQEAgc3RhdGljIHZvaWQgc2NyYXRjaF9i dWZfaW5pdChkYXRhX3QgKmRhdGEsCj4gPiBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLAo+ID4gIAo+ID4g IAkJYnVmLT5ibyA9IGRybV9pbnRlbF9ib19hbGxvYyhkYXRhLT5idWZtZ3IsICIiLCBzaXplLAo+ ID4gNDA5Nik7Cj4gPiAgCj4gPiAtCQlkcm1faW50ZWxfYm9fc2V0X3RpbGluZyhidWYtPmJvLCAm dGlsaW5nLCBidWYtPnN0cmlkZSk7Cj4gPiAtCQlpZ3RfYXNzZXJ0X2VxKHRpbGluZywgcmVxX3Rp bGluZyk7Cj4gPiArCQlpZiAodGlsaW5nID09IEk5MTVfVElMSU5HX1kpIHsKPiA+ICsJCQlkcm1f aW50ZWxfYm9fc2V0X3RpbGluZyhidWYtPmJvLCAmdGlsaW5nLCBidWYtCj4gPiA+c3RyaWRlKTsK PiA+ICsJCQlpZ3RfYXNzZXJ0X2VxKHRpbGluZywgcmVxX3RpbGluZyk7Cj4gPiArCQl9Cj4gPiAr CX0gZWxzZSBpZiAocmVxX3RpbGluZyA9PSBJOTE1X1RJTElOR19ZZikgewo+ID4gKwkJaW50IHNp emU7Cj4gPiArCj4gPiArCQlidWYtPnN0cmlkZSA9IEFMSUdOKHdpZHRoICogNCwgMTI4KTsKPiA+ ICsJCWJ1Zi0+c2l6ZSA9IGJ1Zi0+c3RyaWRlICogaGVpZ2h0Owo+ID4gKwkJYnVmLT50aWxpbmcg PSB0aWxpbmc7Cj4gPiArCQlidWYtPmJwcCA9IDMyOwo+ID4gKwo+ID4gKwkJc2l6ZSA9IGJ1Zi0+ c3RyaWRlICogQUxJR04oaGVpZ2h0LCAzMik7Cj4gPiArCj4gPiArCQlidWYtPmJvID0gZHJtX2lu dGVsX2JvX2FsbG9jKGRhdGEtPmJ1Zm1nciwgIiIsIHNpemUsCj4gPiA0MDk2KTsKPiA+ICAJfSBl bHNlIHsKPiA+ICAJCWJ1Zi0+Ym8gPSBkcm1faW50ZWxfYm9fYWxsb2NfdGlsZWQoZGF0YS0+YnVm bWdyLCAiIiwKPiA+ICAJCQkJCQkgICB3aWR0aCwgaGVpZ2h0LCA0LAo+ID4gQEAgLTM5Niw3ICs1 MTQsNyBAQCBzdGF0aWMgdm9pZCBzY3JhdGNoX2J1Zl9hdXhfY2hlY2soZGF0YV90ICpkYXRhLAo+ ID4gIAkJICAgICAiQXV4IHN1cmZhY2UgaW5kaWNhdGVzIHRoYXQgbm90aGluZyB3YXMKPiA+IGNv bXByZXNzZWRcbiIpOwo+ID4gIH0KPiA+ICAKPiA+IC1zdGF0aWMgdm9pZCB0ZXN0KGRhdGFfdCAq ZGF0YSwgdWludDMyX3QgdGlsaW5nLCBib29sIHRlc3RfY2NzKQo+ID4gK3N0YXRpYyB2b2lkIHRl c3QoZGF0YV90ICpkYXRhLCB1aW50MzJfdCB0aWxpbmcsIHVpbnQ2NF90Cj4gPiBjY3NfbW9kaWZp ZXIpCj4gPiAgewo+ID4gIAlzdHJ1Y3QgaWd0X2J1ZiBkc3QsIGNjcywgcmVmOwo+ID4gIAlzdHJ1 Y3Qgewo+ID4gQEAgLTQwNCw3ICs1MjIsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0KGRhdGFfdCAqZGF0 YSwgdWludDMyX3QgdGlsaW5nLAo+ID4gYm9vbCB0ZXN0X2NjcykKPiA+ICAJCWNvbnN0IGNoYXIg KmZpbGVuYW1lOwo+ID4gIAkJdWludDMyX3QgdGlsaW5nOwo+ID4gIAkJaW50IHgsIHk7Cj4gPiAt CX0gc3JjWzNdID0gewo+ID4gKwl9IHNyY1tdID0gewo+ID4gIAkJewo+ID4gIAkJCS5maWxlbmFt ZSA9ICJzb3VyY2UtbGluZWFyLnBuZyIsCj4gPiAgCQkJLnRpbGluZyA9IEk5MTVfVElMSU5HX05P TkUsCj4gPiBAQCAtNDIwLDE4ICs1MzgsMzEgQEAgc3RhdGljIHZvaWQgdGVzdChkYXRhX3QgKmRh dGEsIHVpbnQzMl90Cj4gPiB0aWxpbmcsIGJvb2wgdGVzdF9jY3MpCj4gPiAgCQkJLnRpbGluZyA9 IEk5MTVfVElMSU5HX1ksCj4gPiAgCQkJLnggPSBXSURUSC8yKzEsIC55ID0gMSwKPiA+ICAJCX0s Cj4gPiArCQl7Cj4gPiArCQkJLmZpbGVuYW1lID0gInNvdXJjZS15Zi10aWxlZC5wbmciLAo+ID4g KwkJCS50aWxpbmcgPSBJOTE1X1RJTElOR19ZZiwKPiA+ICsJCQkueCA9IDEsIC55ID0gMSwKPiA+ ICsJCX0sCj4gPiAgCX07Cj4gPiAgCj4gPiAgCWludCBvcHRfZHVtcF9hdWIgPSBpZ3RfYXViX2R1 bXBfZW5hYmxlZCgpOwo+ID4gKwlpbnQgbnVtX3NyYyA9IEFSUkFZX1NJWkUoc3JjKTsKPiA+ICsK PiA+ICsJLyogbm8gWWYgYmVmb3JlIGdlbjkgKi8KPiA+ICsJaWYgKGludGVsX2dlbihkYXRhLT5k ZXZpZCkgPCA5KQo+ID4gKwkJbnVtX3NyYy0tOwo+ID4gKwo+ID4gKwlpZiAodGlsaW5nID09IEk5 MTVfVElMSU5HX1lmIHx8IGNjc19tb2RpZmllcikKPiA+ICsJCWlndF9yZXF1aXJlKGludGVsX2dl bihkYXRhLT5kZXZpZCkgPj0gOSk7Cj4gPiAgCj4gPiAtCWZvciAoaW50IGkgPSAwOyBpIDwgQVJS QVlfU0laRShzcmMpOyBpKyspCj4gPiArCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtX3NyYzsgaSsr KQo+ID4gIAkJc2NyYXRjaF9idWZfaW5pdChkYXRhLCAmc3JjW2ldLmJ1ZiwgV0lEVEgsIEhFSUdI VCwKPiA+IHNyY1tpXS50aWxpbmcsIGZhbHNlKTsKPiA+ICAJc2NyYXRjaF9idWZfaW5pdChkYXRh LCAmZHN0LCBXSURUSCwgSEVJR0hULCB0aWxpbmcsIGZhbHNlKTsKPiA+IC0JaWYgKHRlc3RfY2Nz KQo+ID4gLQkJc2NyYXRjaF9idWZfaW5pdChkYXRhLCAmY2NzLCBXSURUSCwgSEVJR0hULAo+ID4g STkxNV9USUxJTkdfWSwgdHJ1ZSk7Cj4gPiArCWlmIChjY3NfbW9kaWZpZXIpCj4gPiArCQlzY3Jh dGNoX2J1Zl9pbml0KGRhdGEsICZjY3MsIFdJRFRILCBIRUlHSFQsCj4gPiBjY3NfbW9kaWZpZXIs IHRydWUpOwo+ID4gIAlzY3JhdGNoX2J1Zl9pbml0KGRhdGEsICZyZWYsIFdJRFRILCBIRUlHSFQs IEk5MTVfVElMSU5HX05PTkUsCj4gPiBmYWxzZSk7Cj4gPiAgCj4gPiAtCWZvciAoaW50IGkgPSAw OyBpIDwgQVJSQVlfU0laRShzcmMpOyBpKyspCj4gPiArCWZvciAoaW50IGkgPSAwOyBpIDwgbnVt X3NyYzsgaSsrKQo+ID4gIAkJc2NyYXRjaF9idWZfZHJhd19wYXR0ZXJuKGRhdGEsICZzcmNbaV0u YnVmLAo+ID4gIAkJCQkJIDAsIDAsIFdJRFRILCBIRUlHSFQsCj4gPiAgCQkJCQkgMCwgMCwgV0lE VEgsIEhFSUdIVCwgdHJ1ZSk7Cj4gPiBAQCAtNDQyLDEzICs1NzMsMTMgQEAgc3RhdGljIHZvaWQg dGVzdChkYXRhX3QgKmRhdGEsIHVpbnQzMl90Cj4gPiB0aWxpbmcsIGJvb2wgdGVzdF9jY3MpCj4g PiAgCXNjcmF0Y2hfYnVmX2NvcHkoZGF0YSwKPiA+ICAJCQkgJmRzdCwgMCwgMCwgV0lEVEgsIEhF SUdIVCwKPiA+ICAJCQkgJnJlZiwgMCwgMCk7Cj4gPiAtCWZvciAoaW50IGkgPSAwOyBpIDwgQVJS QVlfU0laRShzcmMpOyBpKyspCj4gPiArCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtX3NyYzsgaSsr KQo+ID4gIAkJc2NyYXRjaF9idWZfY29weShkYXRhLAo+ID4gIAkJCQkgJnNyY1tpXS5idWYsIFdJ RFRILzQsIEhFSUdIVC80LAo+ID4gV0lEVEgvMi0yLCBIRUlHSFQvMi0yLAo+ID4gIAkJCQkgJnJl Ziwgc3JjW2ldLngsIHNyY1tpXS55KTsKPiA+ICAKPiA+ICAJaWYgKG9wdF9kdW1wX3BuZykgewo+ ID4gLQkJZm9yIChpbnQgaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHNyYyk7IGkrKykKPiA+ICsJCWZv ciAoaW50IGkgPSAwOyBpIDwgbnVtX3NyYzsgaSsrKQo+ID4gIAkJCXNjcmF0Y2hfYnVmX3dyaXRl X3RvX3BuZyhkYXRhLCAmc3JjW2ldLmJ1ZiwKPiA+IHNyY1tpXS5maWxlbmFtZSk7Cj4gPiAgCQlz Y3JhdGNoX2J1Zl93cml0ZV90b19wbmcoZGF0YSwgJmRzdCwKPiA+ICJkZXN0aW5hdGlvbi5wbmci KTsKPiA+ICAJCXNjcmF0Y2hfYnVmX3dyaXRlX3RvX3BuZyhkYXRhLCAmcmVmLCAicmVmZXJlbmNl LnBuZyIpOwo+ID4gQEAgLTQ2OCwyNCArNTk5LDI0IEBAIHN0YXRpYyB2b2lkIHRlc3QoZGF0YV90 ICpkYXRhLCB1aW50MzJfdAo+ID4gdGlsaW5nLCBib29sIHRlc3RfY2NzKQo+ID4gIAkgKgkgfGRz dHxzcmN8Cj4gPiAgCSAqCSAgLS0tLS0tLQo+ID4gIAkgKi8KPiA+IC0JaWYgKHRlc3RfY2NzKQo+ ID4gKwlpZiAoY2NzX21vZGlmaWVyKQo+ID4gIAkJZGF0YS0+cmVuZGVyX2NvcHkoZGF0YS0+YmF0 Y2gsIE5VTEwsCj4gPiAgCQkJCSAgJmRzdCwgMCwgMCwgV0lEVEgsIEhFSUdIVCwKPiA+ICAJCQkJ ICAmY2NzLCAwLCAwKTsKPiA+ICAKPiA+IC0JZm9yIChpbnQgaSA9IDA7IGkgPCBBUlJBWV9TSVpF KHNyYyk7IGkrKykKPiA+ICsJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fc3JjOyBpKyspCj4gPiAg CQlkYXRhLT5yZW5kZXJfY29weShkYXRhLT5iYXRjaCwgTlVMTCwKPiA+ICAJCQkJICAmc3JjW2ld LmJ1ZiwgV0lEVEgvNCwgSEVJR0hULzQsCj4gPiBXSURUSC8yLTIsIEhFSUdIVC8yLTIsCj4gPiAt CQkJCSAgdGVzdF9jY3MgPyAmY2NzIDogJmRzdCwgc3JjW2ldLngsCj4gPiBzcmNbaV0ueSk7Cj4g PiArCQkJCSAgY2NzX21vZGlmaWVyID8gJmNjcyA6ICZkc3QsIHNyY1tpXS54LAo+ID4gc3JjW2ld LnkpOwo+ID4gIAo+ID4gLQlpZiAodGVzdF9jY3MpCj4gPiArCWlmIChjY3NfbW9kaWZpZXIpCj4g PiAgCQlkYXRhLT5yZW5kZXJfY29weShkYXRhLT5iYXRjaCwgTlVMTCwKPiA+ICAJCQkJICAmY2Nz LCAwLCAwLCBXSURUSCwgSEVJR0hULAo+ID4gIAkJCQkgICZkc3QsIDAsIDApOwo+ID4gIAo+ID4g IAlpZiAob3B0X2R1bXBfcG5nKXsKPiA+ICAJCXNjcmF0Y2hfYnVmX3dyaXRlX3RvX3BuZyhkYXRh LCAmZHN0LCAicmVzdWx0LnBuZyIpOwo+ID4gLQkJaWYgKHRlc3RfY2NzKSB7Cj4gPiArCQlpZiAo Y2NzX21vZGlmaWVyKSB7Cj4gPiAgCQkJc2NyYXRjaF9idWZfd3JpdGVfdG9fcG5nKGRhdGEsICZj Y3MsCj4gPiAiY29tcHJlc3NlZC5wbmciKTsKPiA+ICAJCQlzY3JhdGNoX2J1Zl9hdXhfd3JpdGVf dG9fcG5nKGRhdGEsICZjY3MsCj4gPiAiY29tcHJlc3NlZC1hdXgucG5nIik7Cj4gPiAgCQl9Cj4g PiBAQCAtNTA1LDcgKzYzNiw3IEBAIHN0YXRpYyB2b2lkIHRlc3QoZGF0YV90ICpkYXRhLCB1aW50 MzJfdCB0aWxpbmcsCj4gPiBib29sIHRlc3RfY2NzKQo+ID4gIAkJc2NyYXRjaF9idWZfY2hlY2so ZGF0YSwgJmRzdCwgJnJlZiwgV0lEVEggLSAxMCwgSEVJR0hUCj4gPiAtIDEwKTsKPiA+ICAJfQo+ ID4gIAo+ID4gLQlpZiAodGVzdF9jY3MpCj4gPiArCWlmIChjY3NfbW9kaWZpZXIpCj4gPiAgCQlz Y3JhdGNoX2J1Zl9hdXhfY2hlY2soZGF0YSwgJmNjcyk7Cj4gPiAgfQo+ID4gIAo+ID4gQEAgLTU0 NiwxOCArNjc3LDMxIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKPiA+ICAJfQo+ ID4gIAo+ID4gIAlpZ3Rfc3VidGVzdCgibGluZWFyIikKPiA+IC0JCXRlc3QoJmRhdGEsIEk5MTVf VElMSU5HX05PTkUsIGZhbHNlKTsKPiA+ICsJCXRlc3QoJmRhdGEsIEk5MTVfVElMSU5HX05PTkUs IDApOwo+ID4gIAlpZ3Rfc3VidGVzdCgieC10aWxlZCIpCj4gPiAtCQl0ZXN0KCZkYXRhLCBJOTE1 X1RJTElOR19YLCBmYWxzZSk7Cj4gPiArCQl0ZXN0KCZkYXRhLCBJOTE1X1RJTElOR19YLCAwKTsK PiA+ICAJaWd0X3N1YnRlc3QoInktdGlsZWQiKQo+ID4gLQkJdGVzdCgmZGF0YSwgSTkxNV9USUxJ TkdfWSwgZmFsc2UpOwo+ID4gKwkJdGVzdCgmZGF0YSwgSTkxNV9USUxJTkdfWSwgMCk7Cj4gPiAr CWlndF9zdWJ0ZXN0KCJ5Zi10aWxlZCIpCj4gPiArCQl0ZXN0KCZkYXRhLCBJOTE1X1RJTElOR19Z ZiwgMCk7Cj4gPiAgCj4gPiAgCWlndF9zdWJ0ZXN0KCJ5LXRpbGVkLWNjcy10by1saW5lYXIiKQo+ ID4gLQkJdGVzdCgmZGF0YSwgSTkxNV9USUxJTkdfTk9ORSwgdHJ1ZSk7Cj4gPiArCQl0ZXN0KCZk YXRhLCBJOTE1X1RJTElOR19OT05FLCBJOTE1X1RJTElOR19ZKTsKPiA+ICAJaWd0X3N1YnRlc3Qo InktdGlsZWQtY2NzLXRvLXgtdGlsZWQiKQo+ID4gLQkJdGVzdCgmZGF0YSwgSTkxNV9USUxJTkdf WCwgdHJ1ZSk7Cj4gPiArCQl0ZXN0KCZkYXRhLCBJOTE1X1RJTElOR19YLCBJOTE1X1RJTElOR19Z KTsKPiA+ICAJaWd0X3N1YnRlc3QoInktdGlsZWQtY2NzLXRvLXktdGlsZWQiKQo+ID4gLQkJdGVz dCgmZGF0YSwgSTkxNV9USUxJTkdfWSwgdHJ1ZSk7Cj4gPiArCQl0ZXN0KCZkYXRhLCBJOTE1X1RJ TElOR19ZLCBJOTE1X1RJTElOR19ZKTsKPiA+ICsJaWd0X3N1YnRlc3QoInktdGlsZWQtY2NzLXRv LXlmLXRpbGVkIikKPiA+ICsJCXRlc3QoJmRhdGEsIEk5MTVfVElMSU5HX1lmLCBJOTE1X1RJTElO R19ZKTsKPiA+ICsKPiA+ICsJaWd0X3N1YnRlc3QoInlmLXRpbGVkLWNjcy10by1saW5lYXIiKQo+ ID4gKwkJdGVzdCgmZGF0YSwgSTkxNV9USUxJTkdfTk9ORSwgSTkxNV9USUxJTkdfWWYpOwo+ID4g KwlpZ3Rfc3VidGVzdCgieWYtdGlsZWQtY2NzLXRvLXgtdGlsZWQiKQo+ID4gKwkJdGVzdCgmZGF0 YSwgSTkxNV9USUxJTkdfWCwgSTkxNV9USUxJTkdfWWYpOwo+ID4gKwlpZ3Rfc3VidGVzdCgieWYt dGlsZWQtY2NzLXRvLXktdGlsZWQiKQo+ID4gKwkJdGVzdCgmZGF0YSwgSTkxNV9USUxJTkdfWSwg STkxNV9USUxJTkdfWWYpOwo+ID4gKwlpZ3Rfc3VidGVzdCgieWYtdGlsZWQtY2NzLXRvLXlmLXRp bGVkIikKPiA+ICsJCXRlc3QoJmRhdGEsIEk5MTVfVElMSU5HX1lmLCBJOTE1X1RJTElOR19ZZik7 Cj4gPiAgCj4gPiAgCWlndF9maXh0dXJlIHsKPiA+ICAJCWludGVsX2JhdGNoYnVmZmVyX2ZyZWUo ZGF0YS5iYXRjaCk7Cj4gPiAtLSAKPiA+IDIuMTcuMQo+ID4gCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2lndC1kZXY=