From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 306436E959 for ; Fri, 7 Sep 2018 15:19:09 +0000 (UTC) From: "Mun, Gwan-gyeong" Date: Fri, 7 Sep 2018 15:18:43 +0000 Message-ID: <25b1084a1edae495b87e840a1ef5fb7c190c70d4.camel@intel.com> References: <20180906072400.7963-1-gwan-gyeong.mun@intel.com> <20180906072400.7963-6-gwan-gyeong.mun@intel.com> <20180907104828.GA22386@ideak-desk.fi.intel.com> In-Reply-To: <20180907104828.GA22386@ideak-desk.fi.intel.com> Content-Language: en-US Content-ID: MIME-Version: 1.0 Subject: Re: [igt-dev] [RESEND,v3 5/5] kms_plane: Add clipping subtests 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: "Deak, Imre" Cc: "igt-dev@lists.freedesktop.org" , "Heikkila, Juha-pekka" List-ID: SGkgSW1yZSwNCg0KVGhhbmtzIGZvciByZXZpZXdpbmcgcGF0Y2hlcy4NCg0KT24gRnJpLCAyMDE4 LTA5LTA3IGF0IDEzOjQ4ICswMzAwLCBJbXJlIERlYWsgd3JvdGU6DQo+IEhpIEcuRy4sDQo+IA0K PiBUaGFua3MgZm9yIGRvaW5nIHRoaXMsIGxvb2tzIG9rIGluIGdlbmVyYWwuIEZldyBjb21tZW50 cyBiZWxvdy4NCj4gDQo+IE9uIFRodSwgU2VwIDA2LCAyMDE4IGF0IDEwOjI0OjAwQU0gKzAzMDAs IEd3YW4tZ3llb25nIE11biB3cm90ZToNCj4gPiBGcm9tOiBJbXJlIERlYWsgPGltcmUuZGVha0Bp bnRlbC5jb20+DQo+ID4gDQo+ID4gQWRkIHBsYW5lIGNsaXBwaW5nIHN1YnRlc3RzIGRpc3BsYXlp bmcgYSBzaW5nbGUgY2xpcHBlZCBwbGFuZSwgd2l0aA0KPiA+IHRoZQ0KPiA+IGZvbGxvd2luZyB0 ZXN0IGNhc2VzOg0KPiA+IGEpIHBsYW5lIGNvdmVyaW5nIHRoZSB3aG9sZSBzY3JlZW4sIHNvIHRo YXQgY2xpcHBpbmcgaXMgZG9uZSBhdCBhbGwNCj4gPiA0DQo+ID4gICAgc2NyZWVuIGVkZ2VzDQo+ ID4gYikgcGxhbmUgYXQgZWl0aGVyIG9mIHRoZSA0IGNvcm5lcnMgb2YgdGhlIHNjcmVlbiBjbGlw cGVkLCBzbyB0aGF0DQo+ID4gYQ0KPiA+ICAgIDR4NCBwaXhlbCBwYXJ0IG9mIHRoZSBwbGFuZSBp cyB2aXNpYmxlDQo+ID4gYykgcGxhbmUgYXQgZWl0aGVyIG9mIHRoZSA0IGNvcm5lcnMgb2YgdGhl IHNjcmVlbiBjbGlwcGVkLCBzbyB0aGF0DQo+ID4gYQ0KPiA+ICAgIDJ4MiBwaXhlbCBwYXJ0IG9m IHRoZSBwbGFuZSBpcyB2aXNpYmxlDQo+ID4gDQo+ID4gRWFjaCBvZiB0aGUgYWJvdmUgY2FzZXMg YXJlIHRlc3RlZCB3aXRoIGFsbCBzdXBwb3J0ZWQgdGlsaW5nIG1vZGVzLA0KPiA+IHJvdGF0aW9u IGRlZ3JlZXMsIGRpZmZlcmluZyBwaXhlbCBmb3JtYXQgc2l6ZXMgKG9ubHkgMTYgYnBwIGFuZCAz Mg0KPiA+IGJwcA0KPiA+IGZvciBub3cpIGFuZCBjZXJ0YWluIHBsYW5lcy4gV2hpbGUgdGhlIGEp IGFuZCBiKSBjYXNlcyBhYm92ZSBhcmUNCj4gPiBzdXBwb3J0ZWQgb24gYWxsIHBsYXRmb3JtcyBj KSBpcyBub3QgZnVsbHkgc3VwcG9ydGVkIG9uIEdMSyBhbmQgQ05MDQo+ID4gKHdoaWNoIHdhcyB0 aGUgcHJpbWFyeSBtb3RpdmF0aW9uIGZvciB0aGlzIHRlc3RjYXNlKS4NCj4gPiANCj4gPiB2MjoN Cj4gPiAtIEFkZCBtaXNzaW5nIHJlc2V0IGZvciB0aGUgb3V0cHV0IHBpcGUgYWZ0ZXIgZmluaXNo aW5nIHRoZSB0ZXN0DQo+ID4gZm9yIGENCj4gPiAgIGdpdmVuIG91dHB1dCwgZml4aW5nIHRoZQ0K PiA+ICAgIkRQLTEgYW5kIGVEUC0xIGFyZSBib3RoIHRyeWluZyB0byB1c2UgcGlwZSBBIiB0eXBl IG9mIGVycm9ycy4NCj4gPiAtIFVzZSAtRVJBTkdFIGluc3RlYWQgb2YgLUVJTlZBTCB0byBjaGVj ayB0aGUgcmV0dXJuIGNvZGUgZm9yDQo+ID4gICB1bnN1cHBvcnRlZCBwbGFuZSBYIHBvc2l0aW9u cywgYmFzZWQgb24gdGhlIGxhdGVzdCBrZXJuZWwgY29kZS4NCj4gPiAtIEFkZCBjb21tZW50IGV4 cGxhaW5pbmcgdGhlIGRlcGVuZGVuY2llcyB3aGVuIGRvaW5nIGEgdW5pdmVyc2FsDQo+ID4gICBj b21taXQuDQo+ID4gDQo+ID4gdjM6IChHd2FuLWd5ZW9uZykNCj4gPiAtIEFkZCBtaXNzaW5nIHJl bGVhc2Ugb2YgZnJhbWVidWZmZXIgb24NCj4gPiBjcmVhdGVfZmJfZm9yX21vZGVfX2NsaXBwaW5n X2Rpc3BsYXkoKQ0KPiA+ICAgZnVuY3Rpb24uDQo+ID4gLSBBZGQgdXNpbmcgbXVsdGkgcGxhbmVz IHBlciBzaW5nbGUgZGlzcGxheSBjb21taXQgb24gY2xpcHBpbmcgdGVzdA0KPiA+IG9mDQo+ID4g ICA0IGNvcm5lcnMuIChEYW5pZWwpDQo+ID4gICBJdCBlbmFibGVzIHRoZSBpbXByb3Zpbmcgb2Yg dGVzdCBzcGVlZC4gSWYgbnVtYmVyIG9mIHBsYW5lcyBpcw0KPiA+IG92ZXINCj4gPiAgIHRoYW4g NCwgaXQgdXNlcyBmb3VyIHBsYW5lcyBmcm9tIGZpcnN0IHBsYW5lIHRvIG5leHQgZm91ciBwbGFu ZXMuDQo+ID4gICAoNCBwbGFuZXMgbWFrZSB0ZXN0aW5nIG9mIDQgY29ybmVycyBwb3NzaWJsZSBh cyAxIGRpc3BsYXkNCj4gPiBjb21taXQuKQ0KPiA+ICAgSWYgbnVtYmVyIG9mIHBsYW5lcyBpcyBv dmVyIHRoYW4gMiBhbmQgbGVzcyB0aGFuIDQsIGl0IHVzZXMgdHdvDQo+ID4gcGxhbmVzDQo+ID4g ICBmcm9tIGZpcnN0IHBsYW5lIHRvIG5leHQgdHdvIHBsYW5lcy4gKDIgcGxhbmVzIG1ha2UgdGVz dGluZyBvZiA0DQo+ID4gY29ybmVycw0KPiA+ICAgcG9zc2libGUgYXMgMiBkaXNwbGF5IGNvbW1p dC4pIFJlc3Qgb2YgY2FzZXMgaXQgdXNlcyBvbmx5IGZpcnN0DQo+ID4gcGxhbmUuDQo+ID4gICAo MSBwbGFuZSBtYWtlcyB0ZXN0aW5nIG9mIDQgY29ybmVycyBwb3NzaWJsZSBhcyA0IGRpc3BsYXkN Cj4gPiBjb21taXQuKQ0KPiA+ICAgSXQgY2hhbmdlcyB0byB1c2luZyBvZiBjZXJ0YWluIHBsYW5l cyBmcm9tIHVzaW5nIG9mIGFsbCBzdXBwb3J0ZWQNCj4gPiBwbGFuZXMuDQo+ID4gICBBbmQgYSBj dXJzb3IgcGxhbmUgY2FuIGJlIG9uZSBvZiB0ZXN0IHBsYW5lcy4NCj4gPiANCj4gPiBTaWduZWQt b2ZmLWJ5OiBJbXJlIERlYWsgPGltcmUuZGVha0BpbnRlbC5jb20+DQo+ID4gU2lnbmVkLW9mZi1i eTogR3dhbi1neWVvbmcgTXVuIDxnd2FuLWd5ZW9uZy5tdW5AaW50ZWwuY29tPg0KPiA+IENjOiBN aWthIEthaG9sYSA8bWlrYS5rYWhvbGFAaW50ZWwuY29tPg0KPiA+IENjOiBNYWFydGVuIExhbmto b3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPg0KPiA+IENjOiBKdWhhLVBl a2thIEhlaWtraWzDpCA8anVoYS1wZWtrYS5oZWlra2lsYUBpbnRlbC5jb20+DQo+ID4gUmV2aWV3 ZWQtYnk6IEFya2FkaXVzeiBIaWxlciA8YXJrYWRpdXN6LmhpbGVyQGludGVsLmNvbT4gKHYxKQ0K PiA+IC0tLQ0KPiA+ICB0ZXN0cy9rbXNfcGxhbmUuYyB8IDUyOQ0KPiA+ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gPiAgMSBmaWxlIGNoYW5nZWQsIDUy OSBpbnNlcnRpb25zKCspDQo+ID4gDQo+ID4gZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19wbGFuZS5j IGIvdGVzdHMva21zX3BsYW5lLmMNCj4gPiBpbmRleCAzZDA4ODkzZi4uZWE2MmVmZWQgMTAwNjQ0 DQo+ID4gLS0tIGEvdGVzdHMva21zX3BsYW5lLmMNCj4gPiArKysgYi90ZXN0cy9rbXNfcGxhbmUu Yw0KPiA+IEBAIC00MSwxMSArNDEsNDAgQEAgdHlwZWRlZiBzdHJ1Y3Qgew0KPiA+ICAJaW50IGRy bV9mZDsNCj4gPiAgCWlndF9kaXNwbGF5X3QgZGlzcGxheTsNCj4gPiAgCWlndF9waXBlX2NyY190 ICpwaXBlX2NyYzsNCj4gPiArCXVpbnQzMl90IGRldmlkOw0KPiA+ICsJdWludDY0X3QgbWF4X2N1 cnc7DQo+ID4gKwl1aW50NjRfdCBtYXhfY3VyaDsNCj4gPiAgfSBkYXRhX3Q7DQo+ID4gIA0KPiA+ ICt0eXBlZGVmIHN0cnVjdCB7DQo+ID4gKwlpbnQgeDsNCj4gPiArCWludCB5Ow0KPiA+ICsJaW50 IHNpemU7DQo+ID4gK30gc3F1YXJlX3Q7DQo+ID4gKw0KPiA+ICBzdGF0aWMgY29sb3JfdCByZWQg ICA9IHsgMS4wZiwgMC4wZiwgMC4wZiB9Ow0KPiA+ICBzdGF0aWMgY29sb3JfdCBncmVlbiA9IHsg MC4wZiwgMS4wZiwgMC4wZiB9Ow0KPiA+ICtzdGF0aWMgY29sb3JfdCB5ZWxsb3cgPSB7IDEuMGYs IDEuMGYsIDAuMGYgfTsNCj4gPiAgc3RhdGljIGNvbG9yX3QgYmx1ZSAgPSB7IDAuMGYsIDAuMGYs IDEuMGYgfTsNCj4gPiArc3RhdGljIGNvbG9yX3Qgd2hpdGUgPSB7IDEuMGYsIDEuMGYsIDEuMGYg fTsNCj4gPiArc3RhdGljIHNxdWFyZV90IGNsaXBfc3F1YXJlc1s0XTsNCj4gPiArDQo+ID4gKy8q DQo+ID4gKyAqIFNpemUgb2YgYSBzcXVhcmUgcGxhbmUgdXNlZCB0byB0ZXN0IGNsaXBwaW5nIGF0 IHRoZSA0IGNvdXJuZXJzDQo+ID4gb2YgdGhlDQo+ID4gKyAqIGRpc3BsYXkuDQo+ID4gKyAqLw0K PiA+ICsjZGVmaW5lIENMSVBQRURfUExBTkVfU01BTExfU0laRQk2NA0KPiA+ICsNCj4gPiArLyoN Cj4gPiArICogVmlzaWJsZSBwbGFuZSBzaXplIGFmdGVyIGNsaXBwaW5nIHRoYXQgd29ya3Mgb24g YWxsIHBsYXRmb3Jtcw0KPiA+IGZvciBhbGwgcGxhbmUNCj4gPiArICogcG9zaXRpb25zLg0KPiA+ ICsgKiBUaGUgZXhjZXB0aW9ucyBhcmUgR0xLL0NOTCB3aGVyZSB0aGVyZSBtdXN0IGJlIGF0IGxl YXN0IHRoaXMNCj4gPiBtYW55IHBpeGVscw0KPiA+ICsgKiB2aXNpYmxlIGZyb20gdGhlIHBsYW5l IGFmdGVyIGl0J3MgY2xpcHBlZCB0byB0aGUgbGVmdC9yaWdodA0KPiA+IGVkZ2Ugb2YgdGhlDQo+ ID4gKyAqIHNjcmVlbi4gTm90IG1lZXRpbmcgdGhpcyBjb25kaXRpb24gbWF5IHRyaWdnZXIgRklG TyB1bmRlcmZsb3dzDQo+ID4gYW5kIHNjcmVlbg0KPiA+ICsgKiBjb3JydXB0aW9uLiBUaGUgY3Vy c29yIHBsYW5lIGlzIGFuIGV4Y2VwdGlvbiB0aGF0IGRvZXNuJ3QgaGF2ZQ0KPiA+IHRoaXMgcHJv YmxlbQ0KPiA+ICsgKiBldmVuIG9uIEdMSy9DTkwuDQo+ID4gKyAqLw0KPiA+ICsjZGVmaW5lIENM SVBQRURfUExBTkVfTUlOX1ZBTElECQk0DQo+ID4gIA0KPiA+ICAvKg0KPiA+ICAgKiBDb21tb24g Y29kZSBhY3Jvc3MgYWxsIHRlc3RzLCBhY3Rpbmcgb24gZGF0YV90DQo+ID4gQEAgLTE1MSw2ICsx ODAsNjkgQEAgY3JlYXRlX2ZiX2Zvcl9tb2RlX19wb3NpdGlvbihkYXRhX3QgKmRhdGEsDQo+ID4g ZHJtTW9kZU1vZGVJbmZvICptb2RlLA0KPiA+ICAJaWd0X3B1dF9jYWlyb19jdHgoZGF0YS0+ZHJt X2ZkLCBmYiwgY3IpOw0KPiA+ICB9DQo+ID4gIA0KPiA+ICsvKg0KPiA+ICsgKiBDcmVhdGUgYSBz cXVhcmUgRkIgZm9yIHRoZSBwbGFuZSBpbiB0aGUgY2xpcHBpbmcgdGVzdCwgZGl2aWRlZA0KPiA+ IGludG8gNA0KPiA+ICsgKiBxdWFydGVycyBzb2xpZCBmaWxsZWQgd2l0aCBkaWZmZXJlbnQgY29s b3JzLiBVc2UgdGhlIGdpdmVuDQo+ID4gdGlsaW5nLCBmb3JtYXQNCj4gPiArICogYW5kIHNpemUg YW5kIHJvdGF0ZSB0aGUgRkIgY2xvY2t3aXNlIHdpdGggdGhlIGdpdmVuIHJvdGF0aW9uDQo+ID4g ZGVncmVlcywgc28NCj4gPiArICogdGhhdCB0aGUgY291bnRlcmNsb2Nrd2lzZSByb3RhdGlvbiB3 aXRoIHRoZSBzYW1lIGRlZ3JlZXMgZG9uZQ0KPiA+IGJ5IHRoZSBIVw0KPiA+ICsgKiB3aWxsIGFs d2F5cyByZXN1bHQgaW4gdGhlIHNhbWUgcmVmZXJlbmNlIEZCIGltYWdlLg0KPiA+ICsgKi8NCj4g PiArc3RhdGljIHZvaWQNCj4gPiArY3JlYXRlX2ZiX2Zvcl9tb2RlX19jbGlwcGluZ19wbGFuZShk YXRhX3QgKmRhdGEsIGlndF9yb3RhdGlvbl90DQo+ID4gcm90YXRpb24sDQo+ID4gKwkJCQkgICB1 aW50NjRfdCB0aWxpbmcsDQo+ID4gKwkJCQkgICB1aW50MzJfdCBmb3JtYXQsDQo+ID4gKwkJCQkg ICBpbnQgc2l6ZSwNCj4gPiArCQkJCSAgIHN0cnVjdCBpZ3RfZmIgKmZiIC8qIG91dCAqLykNCj4g PiArew0KPiA+ICsJY29sb3JfdCBjb3JuZXJzW10gPSB7IHJlZCwgd2hpdGUsIHllbGxvdywgYmx1 ZSB9Ow0KPiA+ICsJY29sb3JfdCBjb2xvcjsNCj4gPiArCXVuc2lnbmVkIGludCBmYl9pZDsNCj4g PiArCWNhaXJvX3QgKmNyOw0KPiA+ICsJY29uc3QgaW50IHFzaXplID0gc2l6ZSAvIDI7DQo+ID4g KwlpbnQgaWR4Ow0KPiA+ICsNCj4gPiArCWZiX2lkID0gaWd0X2NyZWF0ZV9mYihkYXRhLT5kcm1f ZmQsIHNpemUsIHNpemUsIGZvcm1hdCwgdGlsaW5nLA0KPiA+IGZiKTsNCj4gPiArCWlndF9hc3Nl cnQoZmJfaWQpOw0KPiA+ICsNCj4gPiArCWNyID0gaWd0X2dldF9jYWlyb19jdHgoZGF0YS0+ZHJt X2ZkLCBmYik7DQo+ID4gKw0KPiA+ICsJc3dpdGNoIChyb3RhdGlvbikgew0KPiA+ICsJY2FzZSBJ R1RfUk9UQVRJT05fMDoNCj4gPiArCQlpZHggPSAwOw0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJY2Fz ZSBJR1RfUk9UQVRJT05fOTA6DQo+ID4gKwkJaWR4ID0gMzsNCj4gPiArCQlicmVhazsNCj4gPiAr CWNhc2UgSUdUX1JPVEFUSU9OXzE4MDoNCj4gPiArCQlpZHggPSAyOw0KPiA+ICsJCWJyZWFrOw0K PiA+ICsJY2FzZSBJR1RfUk9UQVRJT05fMjcwOg0KPiA+ICsJCWlkeCA9IDE7DQo+ID4gKwkJYnJl YWs7DQo+ID4gKwlkZWZhdWx0Og0KPiA+ICsJCWlndF9hc3NlcnQoMCk7DQo+ID4gKwl9DQo+ID4g Kw0KPiA+ICsJY29sb3IgPSBjb3JuZXJzW2lkeF07DQo+ID4gKwlpZ3RfcGFpbnRfY29sb3IoY3Is IDAsIDAsIHFzaXplLCBxc2l6ZSwNCj4gPiArCQkJY29sb3IucmVkLCBjb2xvci5ncmVlbiwgY29s b3IuYmx1ZSk7DQo+ID4gKw0KPiA+ICsJY29sb3IgPSBjb3JuZXJzWygrK2lkeCkgJSA0XTsNCj4g PiArCWlndF9wYWludF9jb2xvcihjciwgcXNpemUsIDAsIHFzaXplLCBxc2l6ZSwNCj4gPiArCQkJ Y29sb3IucmVkLCBjb2xvci5ncmVlbiwgY29sb3IuYmx1ZSk7DQo+ID4gKw0KPiA+ICsJY29sb3Ig PSBjb3JuZXJzWygrK2lkeCkgJSA0XTsNCj4gPiArCWlndF9wYWludF9jb2xvcihjciwgcXNpemUs IHFzaXplLCBxc2l6ZSwgcXNpemUsDQo+ID4gKwkJCWNvbG9yLnJlZCwgY29sb3IuZ3JlZW4sIGNv bG9yLmJsdWUpOw0KPiA+ICsNCj4gPiArCWNvbG9yID0gY29ybmVyc1soKytpZHgpICUgNF07DQo+ ID4gKwlpZ3RfcGFpbnRfY29sb3IoY3IsIDAsIHFzaXplLCBxc2l6ZSwgcXNpemUsDQo+ID4gKwkJ CWNvbG9yLnJlZCwgY29sb3IuZ3JlZW4sIGNvbG9yLmJsdWUpOw0KPiA+ICsNCj4gPiArCWlndF9h c3NlcnQoY2Fpcm9fc3RhdHVzKGNyKSA9PSAwKTsNCj4gPiArCWNhaXJvX2Rlc3Ryb3koY3IpOw0K PiA+ICt9DQo+ID4gKw0KPiA+ICBlbnVtIHsNCj4gPiAgCVRFU1RfUE9TSVRJT05fRlVMTFlfQ09W RVJFRCA9IDEgPDwgMCwNCj4gPiAgCVRFU1RfRFBNUyA9IDEgPDwgMSwNCj4gPiBAQCAtNTU0LDYg KzY0Niw0MjcgQEAgdGVzdF9waXhlbF9mb3JtYXRzKGRhdGFfdCAqZGF0YSwgZW51bSBwaXBlDQo+ ID4gcGlwZSkNCj4gPiAgCX0NCj4gPiAgfQ0KPiA+ICANCj4gPiArc3RhdGljIGJvb2wNCj4gPiAr Ym9ndXNfcGxhbmVfY29uZih1aW50MzJfdCBkZXZpZCwgaWd0X3BsYW5lX3QgKnBsYW5lX29iaiwN Cj4gPiArCQkgaW50IGhkaXNwbGF5LCBpbnQgcGxhbmVfeCwgaW50IHBsYW5lX3dpZHRoKQ0KPiA+ ICt7DQo+ID4gKwlpZiAoIShJU19HRU1JTklMQUtFKGRldmlkKSB8fCBJU19DQU5OT05MQUtFKGRl dmlkKSkpDQo+ID4gKwkJcmV0dXJuIGZhbHNlOw0KPiA+ICsNCj4gPiArCWlmIChwbGFuZV9vYmot PnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfQ1VSU09SKQ0KPiA+ICsJCXJldHVybiBmYWxzZTsNCj4g PiArDQo+ID4gKwlpZiAocGxhbmVfeCArIHBsYW5lX3dpZHRoID49IENMSVBQRURfUExBTkVfTUlO X1ZBTElEICYmDQo+ID4gKwkgICAgcGxhbmVfeCA8PSBoZGlzcGxheSAtIENMSVBQRURfUExBTkVf TUlOX1ZBTElEKQ0KPiA+ICsJCXJldHVybiBmYWxzZTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gdHJ1 ZTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGJvb2wNCj4gPiArc3VwcG9ydGVkX3BsYW5l X2NvbmYoZGF0YV90ICpkYXRhLCBpbnQgcGxhbmVfdHlwZSwgdWludDY0X3QNCj4gPiB0aWxpbmcs DQo+ID4gKwkJICAgICB1aW50MzJfdCBmb3JtYXQsIGlndF9yb3RhdGlvbl90IHJvdGF0aW9uLA0K PiA+ICsJCSAgICAgZHJtTW9kZU1vZGVJbmZvICptb2RlLA0KPiA+ICsJCSAgICAgaW50IHBsYW5l X3gsIGludCBwbGFuZV95LCBpbnQgcGxhbmVfc2l6ZSkNCj4gPiArew0KPiA+ICsJaWYgKGludGVs X2dlbihkYXRhLT5kZXZpZCkgPCA5ICYmDQo+ID4gKwkgICAgdGlsaW5nICE9IExPQ0FMX0RSTV9G T1JNQVRfTU9EX05PTkUpDQo+ID4gKwkJcmV0dXJuIGZhbHNlOw0KPiA+ICsNCj4gPiArCS8qIE9u IEdFTjw5IHRoZSBwcmltYXJ5IHBsYW5lIG11c3QgY292ZXIgdGhlIGZ1bGwgc2NyZWVuLiAqLw0K PiA+ICsJaWYgKGludGVsX2dlbihkYXRhLT5kZXZpZCkgPCA5ICYmDQo+ID4gKwkgICAgcGxhbmVf dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9QUklNQVJZICYmDQo+ID4gKwkgICAgKHBsYW5lX3ggPiAw IHx8IHBsYW5lX3kgPiAwIHx8DQo+ID4gKwkgICAgIChwbGFuZV94ICsgcGxhbmVfc2l6ZSA8IG1v ZGUtPmhkaXNwbGF5KSB8fA0KPiA+ICsJICAgICAocGxhbmVfeSArIHBsYW5lX3NpemUgPCBtb2Rl LT52ZGlzcGxheSkpKQ0KPiA+ICsJCXJldHVybiBmYWxzZTsNCj4gPiArDQo+ID4gKwlpZiAocGxh bmVfdHlwZSA9PSBEUk1fUExBTkVfVFlQRV9DVVJTT1IpIHsNCj4gPiArCQkvKiBGb3IgY3Vyc29y IHBsYW5lcyBvbmx5IGxpbmVhci9hbHBoYSBmb3JtYXQgaXMNCj4gPiBzdXBwb3J0ZWQuICovDQo+ ID4gKwkJaWYgKHRpbGluZyAhPSBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FIHx8DQo+ID4gKwkJ ICAgIGZvcm1hdCAhPSBEUk1fRk9STUFUX0FSR0I4ODg4KQ0KPiA+ICsJCQlyZXR1cm4gZmFsc2U7 DQo+ID4gKw0KPiA+ICsJCWlmIChwbGFuZV9zaXplID4gZGF0YS0+bWF4X2N1cncgfHwgcGxhbmVf c2l6ZSA+IGRhdGEtDQo+ID4gPm1heF9jdXJoKQ0KPiA+ICsJCQlyZXR1cm4gZmFsc2U7DQo+ID4g Kwl9IGVsc2Ugew0KPiA+ICsJCS8qDQo+ID4gKwkJICogRm9yIG5vbi1jdXJzb3IgcGxhbmVzIGZv cm1hdHMgd2l0aCBhbHBoYSBtYXkgcmVzdWx0DQo+ID4gaW4NCj4gPiArCQkgKiB1bmRldGVybWlu aXN0aWMgQ1JDcywgd2UgdXNlIHRoZSBzYW1lIHNpemVkDQo+ID4gKwkJICogbm9uLWFscGhhIFhS R0I4ODg4IGZvcm1hdCBpbnN0ZWFkLg0KPiA+ICsJCSAqLw0KPiA+ICsJCWlmIChmb3JtYXQgPT0g RFJNX0ZPUk1BVF9BUkdCODg4OCkNCj4gPiArCQkJcmV0dXJuIGZhbHNlOw0KPiA+ICsNCj4gPiAr CQlpZiAoZm9ybWF0ID09IERSTV9GT1JNQVRfUkdCNTY1ICYmDQo+ID4gKwkJICAgIGludGVsX2dl bihkYXRhLT5kZXZpZCkgPCA5ICYmDQo+ID4gKwkJICAgICFJU19WQUxMRVlWSUVXKGRhdGEtPmRl dmlkKSAmJiAhSVNfQ0hFUlJZVklFVyhkYXRhLQ0KPiA+ID5kZXZpZCkpDQo+ID4gKwkJCXJldHVy biBmYWxzZTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwkvKiBSR0I1NjUgd2l0aCByb3RhdGlvbiBp cyBub3Qgc3VwcG9ydGVkIGZvciBub3cuICovDQo+ID4gKwlpZiAoZm9ybWF0ID09IERSTV9GT1JN QVRfUkdCNTY1ICYmIHJvdGF0aW9uICE9IElHVF9ST1RBVElPTl8wKQ0KPiA+ICsJCXJldHVybiBm YWxzZTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gdHJ1ZTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoN Cj4gPiArICogQ3JlYXRlIGEgc3F1YXJlIHJlZmVyZW5jZSBGQiBmb3IgdGhlIHdob2xlIHNjcmVl biBpbiB0aGUNCj4gPiBjbGlwcGluZyB0ZXN0LA0KPiA+ICsgKiB3aXRoIHRoZSBnaXZlbiB0ZXN0 IHBsYW5lIHBvc2l0aW9uIGFuZCBzaXplLiBTZWUNCj4gPiArICogY3JlYXRlX2ZiX2Zvcl9tb2Rl X19jbGlwcGluZ19wbGFuZSgpIGZvciB0aGUgbGF5b3V0IG9mIHRoZSB0ZXN0DQo+ID4gcGxhbmUu DQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgdm9pZA0KPiA+ICtjcmVhdGVfZmJfZm9yX21vZGVfX2Ns aXBwaW5nX2Rpc3BsYXkoZGF0YV90ICpkYXRhLCBkcm1Nb2RlTW9kZUluZm8NCj4gPiAqbW9kZSwN Cj4gPiArCQkJCSAgICAgc3F1YXJlX3QgKmNsaXBfc3F1YXJlcywNCj4gPiArCQkJCSAgICAgaW50 IGNsaXBfc3F1YXJlc19jbnQsDQo+ID4gKwkJCQkgICAgIHN0cnVjdCBpZ3RfZmIgKmZiIC8qIG91 dCAqLykNCj4gPiArew0KPiA+ICsJaW50IHBsYW5lOw0KPiA+ICsJc3RydWN0IGlndF9mYiBwbGFu ZV9mYnNbNF07DQo+ID4gKwl1bnNpZ25lZCBpbnQgZmJfaWQ7DQo+ID4gKwljYWlyb190ICpjcjsN Cj4gPiArCWNhaXJvX3N1cmZhY2VfdCAqc3Jjc1s0XTsNCj4gPiArDQo+ID4gKwlmYl9pZCA9IGln dF9jcmVhdGVfZmIoZGF0YS0+ZHJtX2ZkLA0KPiA+ICsJCQkgICAgICBtb2RlLT5oZGlzcGxheSwg bW9kZS0+dmRpc3BsYXksDQo+ID4gKwkJCSAgICAgIERSTV9GT1JNQVRfWFJHQjg4ODgsDQo+ID4g KwkJCSAgICAgIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUsDQo+ID4gKwkJCSAgICAgIGZiKTsN Cj4gPiArCWlndF9hc3NlcnQoZmJfaWQpOw0KPiA+ICsNCj4gPiArCWNyID0gaWd0X2dldF9jYWly b19jdHgoZGF0YS0+ZHJtX2ZkLCBmYik7DQo+ID4gKwlpZ3RfcGFpbnRfY29sb3IoY3IsIDAsIDAs IG1vZGUtPmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxheSwNCj4gPiArCQkJMCwgMCwgMCk7DQo+ID4g Kw0KPiA+ICsJZm9yIChwbGFuZSA9IDA7IHBsYW5lIDwgY2xpcF9zcXVhcmVzX2NudDsgcGxhbmUr Kykgew0KPiA+ICsJCWNyZWF0ZV9mYl9mb3JfbW9kZV9fY2xpcHBpbmdfcGxhbmUoZGF0YSwNCj4g PiBJR1RfUk9UQVRJT05fMCwNCj4gPiArCQkJCQkJICAgTE9DQUxfRFJNX0ZPUk1BVF9NT0QNCj4g PiBfTk9ORSwNCj4gPiArCQkJCQkJICAgRFJNX0ZPUk1BVF9YUkdCODg4OCwNCj4gPiArCQkJCQkJ ICAgY2xpcF9zcXVhcmVzW3BsYW5lXS4NCj4gPiBzaXplLA0KPiA+ICsJCQkJCQkgICAmcGxhbmVf ZmJzW3BsYW5lXSk7DQo+ID4gKw0KPiA+ICsJCXNyY3NbcGxhbmVdID0gaWd0X2dldF9jYWlyb19z dXJmYWNlKGRhdGEtPmRybV9mZCwNCj4gPiArCQkJCQkJICAgJnBsYW5lX2Zic1twbGFuZV0pOw0K PiA+ICsJCWNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjciwgc3Jjc1twbGFuZV0sDQo+ID4gKwkJ CQkJIGNsaXBfc3F1YXJlc1twbGFuZV0ueCwNCj4gPiArCQkJCQkgY2xpcF9zcXVhcmVzW3BsYW5l XS55KTsNCj4gPiArCQljYWlyb19yZWN0YW5nbGUoY3IsDQo+ID4gKwkJCQljbGlwX3NxdWFyZXNb cGxhbmVdLngsDQo+ID4gKwkJCQljbGlwX3NxdWFyZXNbcGxhbmVdLnksDQo+ID4gKwkJCQljbGlw X3NxdWFyZXNbcGxhbmVdLnNpemUsDQo+ID4gKwkJCQljbGlwX3NxdWFyZXNbcGxhbmVdLnNpemUp Ow0KPiA+ICsJCWNhaXJvX2ZpbGwoY3IpOw0KPiANCj4gQ291bGQgcmVtb3ZlIHRoZSBGQiwgY2Fp cm8gc3VyZmFjZSBhbHJlYWR5IGhlcmUsIHNvIHdlIGRvbid0IG5lZWQgdGhlDQo+IGFycmF5IGFu ZCBhIHNlY29uZCBsb29wIGJlbG93Pw0KPiANCmlmIHdlIHJlbW92ZSB0aGUgRkIgYW5kIGNhaXJv IHN1cmZhY2UgaGVyZSwgd2Ugd2lsbCByZWNlaXZlIFNJR0FCUlQNCmxpa2UgdGhpcywNCg0Ka21z X3BsYW5lOiBjYWlyby1zdXJmYWNlLmM6OTU1OiBjYWlyb19zdXJmYWNlX2Rlc3Ryb3k6IEFzc2Vy dGlvbg0KYENBSVJPX1JFRkVSRU5DRV9DT1VOVF9IQVNfUkVGRVJFTkNFICgmc3VyZmFjZS0+cmVm X2NvdW50KScgZmFpbGVkLg0KUmVjZWl2ZWQgc2lnbmFsIFNJR0FCUlQuDQoNCkFuZCB3aGVuIHdl IGNhbGwgY2Fpcm9fZGVzdHJveSgpLCBhIGNhaXJvIGltYWdlIHN1cmZhY2Ugb2YgaWd0IGNhbGxz DQpibGl0LiANCg0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWlndF9hc3NlcnQoY2Fpcm9fc3RhdHVz KGNyKSA9PSAwKTsNCj4gPiArCWNhaXJvX2Rlc3Ryb3koY3IpOw0KPiA+ICsNCj4gPiArCWZvciAo cGxhbmUgPSAwOyBwbGFuZSA8IGNsaXBfc3F1YXJlc19jbnQ7IHBsYW5lKyspIHsNCj4gPiArCQlj YWlyb19zdXJmYWNlX2Rlc3Ryb3koc3Jjc1twbGFuZV0pOw0KPiA+ICsJCWlndF9yZW1vdmVfZmIo ZGF0YS0+ZHJtX2ZkLCAmcGxhbmVfZmJzW3BsYW5lXSk7DQo+ID4gKwl9DQo+ID4gK30NCj4gPiAr DQo+ID4gK3N0YXRpYyB2b2lkDQo+ID4gK3Rlc3RfcGxhbmVfY2xpcHBpbmdfZm9ybWF0KGRhdGFf dCAqZGF0YSwNCj4gPiArCQkJICAgZW51bSBwaXBlIHBpcGUsDQo+ID4gKwkJCSAgIGlndF9vdXRw dXRfdCAqb3V0cHV0LA0KPiA+ICsJCQkgICBkcm1Nb2RlTW9kZUluZm8gKm1vZGUsDQo+ID4gKwkJ CSAgIHNxdWFyZV90ICpjbGlwX3NxdWFyZXMsDQo+ID4gKwkJCSAgIGludCBjbGlwX3NxdWFyZXNf Y250LA0KPiA+ICsJCQkgICB1aW50NjRfdCB0aWxpbmcsDQo+ID4gKwkJCSAgIGlndF9yb3RhdGlv bl90IHJvdGF0aW9uLA0KPiA+ICsJCQkgICB1aW50MzJfdCBmb3JtYXQsDQo+ID4gKwkJCSAgIGln dF9jcmNfdCAqcmVmZXJlbmNlX2NyYykNCj4gPiArew0KPiA+ICsJaW50IHBsYW5lOw0KPiA+ICsJ aWd0X3BsYW5lX3QgKnBsYW5lX29ianNbNF07DQo+ID4gKwlzdHJ1Y3QgaWd0X2ZiIHBsYW5lX2Zi c1s0XTsNCj4gPiArCWlndF9jcmNfdCBjcmM7DQo+ID4gKwlpbnQgcmV0Ow0KPiA+ICsJYm9vbCBi b2d1c19wbGFuZXMgPSBmYWxzZTsNCj4gPiArDQo+ID4gKwltZW1zZXQocGxhbmVfb2JqcywgMCwg c2l6ZW9mKHBsYW5lX29ianMpKTsNCj4gPiArDQo+ID4gKwlpZ3RfZGVidWcoInJvdGF0aW9uICVz IHRpbGluZyAlcyBmb3JtYXQgJXNcbiIsDQo+ID4gKwkJICBpZ3Rfcm90YXRpb25fZGVncmVlc19z dHIocm90YXRpb24pLA0KPiA+ICsJCSAgaWd0X3RpbGluZ19zdHIodGlsaW5nKSwNCj4gPiArCQkg IGlndF9mb3JtYXRfc3RyKGZvcm1hdCkpOw0KPiA+ICsNCj4gPiArCWlndF9vdXRwdXRfc2V0X3Bp cGUob3V0cHV0LCBwaXBlKTsNCj4gPiArDQo+ID4gKwlmb3IgKHBsYW5lID0gMDsgcGxhbmUgPCBj bGlwX3NxdWFyZXNfY250IDsgcGxhbmUrKykgew0KPiA+ICsJCWlndF9wbGFuZV90ICpvYmogPSBp Z3Rfb3V0cHV0X2dldF9wbGFuZShvdXRwdXQsIHBsYW5lKTsNCj4gPiArCQlzdHJ1Y3QgaWd0X2Zi ICpmYiA9ICZwbGFuZV9mYnNbcGxhbmVdOw0KPiA+ICsJCWludCB4ID0gY2xpcF9zcXVhcmVzW3Bs YW5lXS54Ow0KPiA+ICsJCWludCB5ID0gY2xpcF9zcXVhcmVzW3BsYW5lXS55Ow0KPiA+ICsJCWlu dCBzaXplID0gY2xpcF9zcXVhcmVzW3BsYW5lXS5zaXplOw0KPiA+ICsJCXVpbnQ2NF90IF90aWxp bmcgPSB0aWxpbmc7DQo+ID4gKwkJdWludDMyX3QgX2Zvcm1hdCA9IGZvcm1hdDsNCj4gPiArDQo+ ID4gKwkJaWYgKG9iai0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9DVVJTT1IpIHsNCj4gPiArCQkJ X3RpbGluZyA9IExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkU7DQo+ID4gKwkJCV9mb3JtYXQgPSBE Uk1fRk9STUFUX0FSR0I4ODg4Ow0KPiA+ICsJCX0NCj4gPiArDQo+ID4gKwkJaWYgKCFzdXBwb3J0 ZWRfcGxhbmVfY29uZihkYXRhLCBvYmotPnR5cGUsIF90aWxpbmcsDQo+ID4gX2Zvcm1hdCwNCj4g PiArCQkJCQkgIHJvdGF0aW9uLCBtb2RlLCB4LCB5LCBzaXplKSkNCj4gPiArCQkJZ290byBvdXQ7 DQo+ID4gKw0KPiA+ICsJCWNyZWF0ZV9mYl9mb3JfbW9kZV9fY2xpcHBpbmdfcGxhbmUoZGF0YSwN Cj4gPiByb3RhdGlvbixfdGlsaW5nLA0KPiA+ICsJCQkJCQkgICBfZm9ybWF0LCBzaXplLCBmYik7 DQo+ID4gKw0KPiA+ICsJCWlndF9wbGFuZV9zZXRfZmIob2JqLCBmYik7DQo+ID4gKwkJaWd0X2Zi X3NldF9wb3NpdGlvbihmYiwgb2JqLCAwLCAwKTsNCj4gPiArDQo+ID4gKwkJaWd0X3BsYW5lX3Nl dF9zaXplKG9iaiwgc2l6ZSwgc2l6ZSk7DQo+ID4gKwkJaWd0X3BsYW5lX3NldF9yb3RhdGlvbihv YmosIHJvdGF0aW9uKTsNCj4gPiArCQlpZ3RfcGxhbmVfc2V0X3Bvc2l0aW9uKG9iaiwgeCwgeSk7 DQo+ID4gKw0KPiA+ICsJCXBsYW5lX29ianNbcGxhbmVdID0gb2JqOw0KPiA+ICsJfQ0KPiA+ICsN Cj4gPiArCS8qDQo+ID4gKwkgKiBOb3RlIHRoYXQgYSB1bml2ZXJzYWwgY29tbWl0IGRvZXNuJ3Qg c3VwcG9ydCBmdWxsIG1vZGVzZXRzLA0KPiA+IHNvIHdlDQo+ID4gKwkgKiBoYXZlIHRvIG1ha2Ug c3VyZSB0aGF0IHRoZSBmb2xsb3dpbmcgb25seSBuZWVkcyB0byBjb21taXQNCj4gPiBjaGFuZ2Vz DQo+ID4gKwkgKiB0aGF0IGFyZSBjb21wYXRpYmxlIHdpdGggYSBmYXN0c2V0LiBUaGlzIHNob3Vs ZCBiZQ0KPiA+IGd1YXJhbnRlZWQsDQo+ID4gKwkgKiBzaW5jZSBiZWZvcmUgY2FsbGluZyB0aGlz IGZ1bmN0aW9uIHdlIHRvb2sgdGhlIHJlZmVyZW5jZSBDUkMNCj4gPiB3aGljaA0KPiA+ICsJICog bGVmdCB0aGUgZGlzcGxheSBlbmFibGVkIHdpdGggdGhlIG1vZGUgd2UgcmVxdWlyZSBoZXJlIGFu ZA0KPiA+ICsJICogYWZ0ZXJ3YXJkcyB3ZSBvbmx5IGNoYW5nZSBwbGFuZSBwYXJhbWV0ZXJzIChG QiwgcG9zaXRpb24sDQo+ID4gcm90YXRpb24NCj4gPiArCSAqIGV0Yy4pLg0KPiA+ICsJICovDQo+ ID4gKwlyZXQgPSBpZ3RfZGlzcGxheV90cnlfY29tbWl0MigmZGF0YS0+ZGlzcGxheSwNCj4gPiBD T01NSVRfVU5JVkVSU0FMKTsNCj4gPiArDQo+ID4gKwlmb3IgKHBsYW5lID0gMDsgcGxhbmUgPCBj bGlwX3NxdWFyZXNfY250OyBwbGFuZSsrKSB7DQo+ID4gKwkJaWYoIWJvZ3VzX3BsYW5lX2NvbmYo ZGF0YS0+ZGV2aWQsIHBsYW5lX29ianNbcGxhbmVdLA0KPiA+ICsJCSAgIG1vZGUtPmhkaXNwbGF5 LCBjbGlwX3NxdWFyZXNbcGxhbmVdLngsDQo+ID4gKwkJICAgY2xpcF9zcXVhcmVzW3BsYW5lXS5z aXplKSkgew0KPiANCj4gUGxlYXNlIGNoZWNrIGZvcm1hdHRpbmcgKGtlcm5lbCBzdHlsZSkuDQo+ IA0KT2ssIEknbGwgdXBkYXRlIGl0DQoNCj4gPiArCQkJYm9ndXNfcGxhbmVzID0gdHJ1ZTsNCj4g PiArCQkJYnJlYWs7DQo+ID4gKwkJfQ0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWlmIChib2d1c19w bGFuZXMpIHsNCj4gPiArCQlpZ3RfYXNzZXJ0KHJldCA9PSAwKTsNCj4gPiArCQlpZ3RfcGlwZV9j cmNfY29sbGVjdF9jcmMoZGF0YS0+cGlwZV9jcmMsICZjcmMpOw0KPiA+ICsJCWlndF9hc3NlcnRf Y3JjX2VxdWFsKHJlZmVyZW5jZV9jcmMsICZjcmMpOw0KPiA+ICsJfSBlbHNlIHsNCj4gPiArCQlp Z3RfYXNzZXJ0KHJldCA9PSAtRVJBTkdFKTsNCj4gPiArCX0NCj4gPiArDQo+ID4gK291dDoNCj4g PiArCWZvciAocGxhbmUgPSAwOyBwbGFuZSA8IGNsaXBfc3F1YXJlc19jbnQ7IHBsYW5lKyspIHsN Cj4gPiArCQlpZiAoIXBsYW5lX29ianNbcGxhbmVdKQ0KPiA+ICsJCQljb250aW51ZTsNCj4gPiAr CQlpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5lX29ianNbcGxhbmVdLCBOVUxMKTsNCj4gPiArCQlpZ3Rf cGxhbmVfc2V0X3JvdGF0aW9uKHBsYW5lX29ianNbcGxhbmVdLA0KPiA+IElHVF9ST1RBVElPTl8w KTsNCj4gPiArCQlpZ3RfcGxhbmVfc2V0X3Bvc2l0aW9uKHBsYW5lX29ianNbcGxhbmVdLCAwLCAw KTsNCj4gPiArDQo+ID4gKwkJaWd0X3JlbW92ZV9mYihkYXRhLT5kcm1fZmQsICZwbGFuZV9mYnNb cGxhbmVdKTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlpZ3Rfb3V0cHV0X3NldF9waXBlKG91dHB1 dCwgUElQRV9BTlkpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZA0KPiA+ICt0ZXN0 X3BsYW5lX2NsaXBwaW5nX3NxdWFyZShkYXRhX3QgKmRhdGEsIGVudW0gcGlwZSBwaXBlLA0KPiA+ ICsJCQkgICBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgZHJtTW9kZU1vZGVJbmZvICptb2RlLA0KPiA+ ICsJCQkgICBzcXVhcmVfdCAqY2xpcF9zcXVhcmVzLCBpbnQNCj4gPiBjbGlwX3NxdWFyZXNfY250 KQ0KPiA+ICt7DQo+ID4gKwljb25zdCBzdHJ1Y3Qgew0KPiA+ICsJCXVpbnQ2NF90IHRpbGluZzsN Cj4gPiArCQlpZ3Rfcm90YXRpb25fdCByb3RhdGlvbjsNCj4gPiArCX0gcm90YXRpb25zW10gPSB7 DQo+ID4gKwkJeyBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLAkJSUdUX1JPVEFUSU8NCj4gPiBO XzAgfSwNCj4gPiArDQo+ID4gKwkJeyBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWF9USUxFRCwJSUdU X1JPVEFUSU9OXzAgfSwNCj4gPiArDQo+ID4gKwkJeyBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWV9U SUxFRCwJSUdUX1JPVEFUSU9OXzAgfSwNCj4gPiArCQl7IExPQ0FMX0k5MTVfRk9STUFUX01PRF9Z X1RJTEVELAlJR1RfUk9UQVRJT05fOTAgfSwNCj4gPiArCQl7IExPQ0FMX0k5MTVfRk9STUFUX01P RF9ZX1RJTEVELAlJR1RfUk9UQVRJT05fMTgwIH0sDQo+ID4gKwkJeyBMT0NBTF9JOTE1X0ZPUk1B VF9NT0RfWV9USUxFRCwJSUdUX1JPVEFUSU9OXzI3MCB9LA0KPiA+ICsNCj4gPiArCQl7IExPQ0FM X0k5MTVfRk9STUFUX01PRF9ZZl9USUxFRCwJSUdUX1JPVEFUSU9OXzAgfSwNCj4gPiArCQl7IExP Q0FMX0k5MTVfRk9STUFUX01PRF9ZZl9USUxFRCwJSUdUX1JPVEFUSU9OXzkwIH0sDQo+ID4gKwkJ eyBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQsCUlHVF9ST1RBVElPTl8xODAgfSwNCj4g PiArCQl7IExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZZl9USUxFRCwJSUdUX1JPVEFUSU9OXzI3MCB9 LA0KPiA+ICsJfTsNCj4gPiArCWNvbnN0IHVpbnQzMl90IGZvcm1hdHNbXSA9IHsNCj4gPiArCQlE Uk1fRk9STUFUX1JHQjU2NSwNCj4gPiArCQlEUk1fRk9STUFUX1hSR0I4ODg4LA0KPiA+ICsJCURS TV9GT1JNQVRfQVJHQjg4ODgsDQo+ID4gKwl9Ow0KPiA+ICsNCj4gPiArCWlndF9mYl90IHJlZmVy ZW5jZV9mYjsNCj4gPiArCWlndF9jcmNfdCByZWZlcmVuY2VfY3JjOw0KPiA+ICsNCj4gPiArCWZv ciAoaW50IHBsYW5lID0gMDsgcGxhbmUgPCBjbGlwX3NxdWFyZXNfY250OyBwbGFuZSsrKSB7DQo+ ID4gKwkJaWd0X2luZm8oIlRlc3RpbmcgY29ubmVjdG9yICVzIG1vZGUgJWR4JWQgdXNpbmcgcGlw ZQ0KPiA+ICVzOiAlZHglZEAlZCwlZFxuIiwNCj4gPiArCQkJIGlndF9vdXRwdXRfbmFtZShvdXRw dXQpLA0KPiA+ICsJCQkgbW9kZS0+aGRpc3BsYXksIG1vZGUtPnZkaXNwbGF5LA0KPiA+ICsJCQkg a21zdGVzdF9waXBlX25hbWUocGlwZSksDQo+ID4gKwkJCSBjbGlwX3NxdWFyZXNbcGxhbmVdLnNp emUsDQo+ID4gY2xpcF9zcXVhcmVzW3BsYW5lXS5zaXplLA0KPiA+ICsJCQkgY2xpcF9zcXVhcmVz W3BsYW5lXS54LCBjbGlwX3NxdWFyZXNbcGxhbmVdLnkpOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiAr CXRlc3RfaW5pdChkYXRhLCBwaXBlKTsNCj4gPiArDQo+ID4gKwljcmVhdGVfZmJfZm9yX21vZGVf X2NsaXBwaW5nX2Rpc3BsYXkoZGF0YSwgbW9kZSwNCj4gPiArCQkJCQkgICAgIGNsaXBfc3F1YXJl cywNCj4gPiArCQkJCQkgICAgIGNsaXBfc3F1YXJlc19jbnQsDQo+ID4gKwkJCQkJICAgICAmcmVm ZXJlbmNlX2ZiKTsNCj4gPiArDQo+ID4gKwl0ZXN0X2dyYWJfY3JjX2Zvcl9mYjIoZGF0YSwgb3V0 cHV0LCBwaXBlLCAmcmVmZXJlbmNlX2ZiLA0KPiA+ICsJCQkgICAgICAmcmVmZXJlbmNlX2NyYywg Q09NTUlUX1VOSVZFUlNBTCk7DQo+IA0KPiBIbSBub3Qgc3VyZSB3aHkgbGVnYWN5IGNvbW1pdCB3 b3VsZG4ndCB3b3JrIGhlcmUuIEl0IHdpbGwgcmVzdWx0IGluIGENCj4gbW9kZXNldCB3aXRoIG9u bHkgdGhlIHByaW1hcnkgcGxhbmUgb24gd2l0aG91dCByb3RhdGlvbi4gT3RvaA0KPiB1bml2ZXJz YWwNCj4gY29tbWl0IGRvZXNuJ3QgKG9yIGF0IGxlYXN0IHVzZWQgbm90IHRvKSBzdXBwb3J0IGZ1 bGwgbW9kZXNldHMsIHNvIGlmDQo+IHdlJ2QgaGF2ZSB0byBjaGFuZ2UgdGhlIG1vZGUgaGVyZSB0 aGVuIHRoYXQgd291bGRuJ3Qgd29yay4gRGlkIHlvdQ0KPiB0cnkNCj4gdG8gcnVuIHRoZSB0ZXN0 IHdpdGggbXVsdGlwbGUgb3V0cHV0cz8NCj4gDQp5ZXMsIHlvdSBhcmUgcmlnaHQuIElmIEkgdHJp ZWQgdG8gdGVzdCB3aXRoIG11bHRpcGxlIG91dHB1dHMsaXQgZGlkbid0IHdvcmsgYXMgZXhwZWN0 ZWQuIEknbGwgZml4IGl0IHdpdGggb3RoZXIgc29sdXRpb24gd2hpY2ggeW91IGd1aWRlZChyZXNl dHRpbmcgYSBmaXJzdCBjb21taXQgc3RhdGUgYW5kIGNhbGxpbmcgY29tbWl0IHdpdGggbGVnYWN5 IHN0eWxlKS4NCg0KPiA+ICsNCj4gPiArCWlndF9yZW1vdmVfZmIoZGF0YS0+ZHJtX2ZkLCAmcmVm ZXJlbmNlX2ZiKTsNCj4gPiArDQo+ID4gKwlmb3IgKGludCByb3RhdGlvbiA9IDA7IHJvdGF0aW9u IDwgQVJSQVlfU0laRShyb3RhdGlvbnMpOw0KPiA+IHJvdGF0aW9uKyspDQo+ID4gKwkJZm9yIChp bnQgZm9ybWF0ID0gMDsgZm9ybWF0IDwgQVJSQVlfU0laRShmb3JtYXRzKTsNCj4gPiBmb3JtYXQr KykNCj4gPiArCQkJdGVzdF9wbGFuZV9jbGlwcGluZ19mb3JtYXQoZGF0YSwgcGlwZSwgb3V0cHV0 LA0KPiA+ICsJCQkJCQkgICBtb2RlLA0KPiA+ICsJCQkJCQkgICBjbGlwX3NxdWFyZXMsDQo+ID4g KwkJCQkJCSAgIGNsaXBfc3F1YXJlc19jbnQsDQo+ID4gKwkJCQkJCSAgIHJvdGF0aW9uc1tyb3Rh dGlvbl0uDQo+ID4gdGlsaW5nLA0KPiA+ICsJCQkJCQkgICByb3RhdGlvbnNbcm90YXRpb25dLg0K PiA+IHJvdGF0aW9uLA0KPiA+ICsJCQkJCQkgICBmb3JtYXRzW2Zvcm1hdF0sDQo+ID4gKwkJCQkJ CSAgICZyZWZlcmVuY2VfY3JjKTsNCj4gPiArDQo+ID4gKwl0ZXN0X2ZpbmkoZGF0YSk7DQo+ID4g K30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkDQo+ID4gK3Rlc3RfcGxhbmVfY2xpcHBpbmdfc3F1 YXJlcyhkYXRhX3QgKmRhdGEsIGVudW0gcGlwZSBwaXBlLA0KPiA+ICsJCQkgICAgaWd0X291dHB1 dF90ICpvdXRwdXQsIGRybU1vZGVNb2RlSW5mbw0KPiA+ICptb2RlLA0KPiA+ICsJCQkgICAgc3F1 YXJlX3QgKmNsaXBfc3F1YXJlcywgaW50DQo+ID4gY2xpcF9zcXVhcmVzX2NudCkNCj4gDQo+IElt byBzL2NsaXBfc3F1YXJlc19jbnQvcGxhbmVfY250LyB3b3VsZCBiZSBjbGVhcmVyLg0KPiANCk9r IEknbGwgdXBkYXRlIGl0Lg0KDQo+ID4gK3sNCj4gPiArCXN3aXRjaCAoY2xpcF9zcXVhcmVzX2Nu dCkgew0KPiA+ICsJY2FzZSA0Og0KPiA+ICsJICAgIHRlc3RfcGxhbmVfY2xpcHBpbmdfc3F1YXJl KGRhdGEsIHBpcGUsIG91dHB1dCwgbW9kZSwNCj4gPiArCQkJCSAgICAgICBjbGlwX3NxdWFyZXMs IGNsaXBfc3F1YXJlc19jbnQpOw0KPiA+ICsJICAgIGJyZWFrOw0KPiA+ICsJY2FzZSAyOg0KPiA+ ICsJICAgIHRlc3RfcGxhbmVfY2xpcHBpbmdfc3F1YXJlKGRhdGEsIHBpcGUsIG91dHB1dCwgbW9k ZSwNCj4gPiArCQkJCSAgICAgICBjbGlwX3NxdWFyZXMsIGNsaXBfc3F1YXJlc19jbnQpOw0KPiA+ ICsJICAgIHRlc3RfcGxhbmVfY2xpcHBpbmdfc3F1YXJlKGRhdGEsIHBpcGUsIG91dHB1dCwgbW9k ZSwNCj4gPiArCQkJCSAgICAgICBjbGlwX3NxdWFyZXMgKyBjbGlwX3NxdWFyZXNfY250LA0KPiA+ ICsJCQkJICAgICAgIGNsaXBfc3F1YXJlc19jbnQpOw0KPiA+ICsJICAgIGJyZWFrOw0KPiA+ICsJ Y2FzZSAxOg0KPiA+ICsJZGVmYXVsdDoNCj4gPiArCSAgICBmb3IgKGludCBpID0gMDsgaSAgPCA0 OyBpKyspIHsNCj4gPiArCQl0ZXN0X3BsYW5lX2NsaXBwaW5nX3NxdWFyZShkYXRhLCBwaXBlLCBv dXRwdXQsIG1vZGUsDQo+ID4gKwkJCQkJICAgY2xpcF9zcXVhcmVzICsgaSwNCj4gPiArCQkJCQkg ICBjbGlwX3NxdWFyZXNfY250KTsNCj4gPiArCSAgICB9DQo+ID4gKwkgICAgYnJlYWs7DQo+ID4g Kwl9DQo+IA0KPiBDb3VsZCBiZSBqdXN0DQo+IA0KPiAJZm9yIChpID0gMDsgaSA8IDQ7IGkgKz0g Y2xpcF9zcXVhcmVzX2NudCkNCj4gCQl0ZXN0X3BsYW5lX2NsaXBwaW5nX3NxdWFyZShkYXRhLCBw aXBlLCBvdXRwdXQsIG1vZGUsDQo+IAkJCQkJICAgY2xpcF9zcXVhcmVzICsgaSwNCj4gCQkJCQkg ICBjbGlwX3NxdWFyZXNfY250KTsNCj4gPw0KPiANCg0KT2sgSSdsbCB1cGRhdGUgaXQuDQoNCj4g PiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQNCj4gPiArdGVzdF9wbGFuZV9jbGlwcGluZyhk YXRhX3QgKmRhdGEsIGVudW0gcGlwZSBwaXBlKQ0KPiA+ICt7DQo+ID4gKwlpZ3Rfb3V0cHV0X3Qg Km91dHB1dDsNCj4gPiArCWludCBjb25uZWN0ZWRfb3V0cyA9IDA7DQo+ID4gKw0KPiA+ICsJZm9y X2VhY2hfdmFsaWRfb3V0cHV0X29uX3BpcGUoJmRhdGEtPmRpc3BsYXksIHBpcGUsIG91dHB1dCkg ew0KPiA+ICsJCWRybU1vZGVNb2RlSW5mbyAqbW9kZTsNCj4gPiArCQlpbnQgc3Ffc2l6ZTsNCj4g PiArCQlpbnQgbWF4X3BsYW5lcyA9IGRhdGEtPmRpc3BsYXkucGlwZXNbcGlwZV0ubl9wbGFuZXM7 DQo+ID4gKwkJaW50IGNsaXBfc3F1YXJlc19jbnQ7DQo+ID4gKw0KPiA+ICsJCWNsaXBfc3F1YXJl c19jbnQgPSBtYXhfcGxhbmVzID49IDQgPw0KPiA+ICsJCQkJICAgNCA6IG1heF9wbGFuZXMgPj0g MiA/IDIgOiAxOw0KPiA+ICsNCj4gPiArCQlpZ3Rfb3V0cHV0X3NldF9waXBlKG91dHB1dCwgcGlw ZSk7DQo+ID4gKwkJbW9kZSA9IGlndF9vdXRwdXRfZ2V0X21vZGUob3V0cHV0KTsNCj4gPiArDQo+ ID4gKwkJLyoNCj4gPiArCQkgKiBUZXN0IHdpdGggYSBzcXVhcmUgcGxhbmUgYmlnZ2VyIHRoYW4g ZWl0aGVyIHRoZQ0KPiA+IHdpZHRoIG9yDQo+ID4gKwkJICogaGVpZ2h0IG9mIHRoZSBtb2RlLiBU aGlzIHNob3VsZCBwYXNzIG9uIGFsbA0KPiA+IHBsYXRmb3Jtcy4NCj4gPiArCQkgKi8NCj4gPiAr CQlzcV9zaXplID0gbW9kZS0+aGRpc3BsYXkgPiBtb2RlLT52ZGlzcGxheSA/DQo+ID4gKwkJCSAg bW9kZS0+aGRpc3BsYXkgOiBtb2RlLT52ZGlzcGxheTsNCj4gPiArDQo+ID4gKwkJY2xpcF9zcXVh cmVzWzBdLnggPSAtMjsNCj4gPiArCQljbGlwX3NxdWFyZXNbMF0ueSA9IC0yOw0KPiA+ICsJCWNs aXBfc3F1YXJlc1swXS5zaXplID0gc3Ffc2l6ZSArIDQ7DQo+ID4gKw0KPiA+ICsJCXRlc3RfcGxh bmVfY2xpcHBpbmdfc3F1YXJlKGRhdGEsIHBpcGUsIG91dHB1dCwgbW9kZSwNCj4gPiArCQkJCQkg ICBjbGlwX3NxdWFyZXMsIDEpOw0KPiA+ICsNCj4gPiArCQkvKg0KPiA+ICsJCSAqIFRlc3QgcG9z aXRpb25zIGluIHRoZSA0IGNvcm5lcnMgb2YgdGhlIHNjcmVlbiB3aXRoIGENCj4gPiArCQkgKiBD TElQUEVEX1BMQU5FX01JTl9WQUxJRCB4IENMSVBQRURfUExBTkVfTUlOX1ZBTElEDQo+ID4gc3F1 YXJlDQo+ID4gKwkJICogdmlzaWJsZSBmcm9tIHRoZSBwbGFuZS4gVGhlc2Ugc2hvdWxkIHBhc3Mg b24gYWxsDQo+ID4gcGxhdGZvcm1zLg0KPiA+ICsJCSAqLw0KPiA+ICsJCWNsaXBfc3F1YXJlc1sw XS54ID0gLUNMSVBQRURfUExBTkVfU01BTExfU0laRSArDQo+ID4gKwkJCQkgICAgIENMSVBQRURf UExBTkVfTUlOX1ZBTElEOw0KPiA+ICsJCWNsaXBfc3F1YXJlc1swXS55ID0gLUNMSVBQRURfUExB TkVfU01BTExfU0laRSArDQo+ID4gKwkJCQkgICAgIENMSVBQRURfUExBTkVfTUlOX1ZBTElEOw0K PiA+ICsJCWNsaXBfc3F1YXJlc1swXS5zaXplID0gQ0xJUFBFRF9QTEFORV9TTUFMTF9TSVpFOw0K PiA+ICsNCj4gPiArCQljbGlwX3NxdWFyZXNbMV0ueCA9IC1DTElQUEVEX1BMQU5FX1NNQUxMX1NJ WkUgKw0KPiA+ICsJCQkJICAgICBDTElQUEVEX1BMQU5FX01JTl9WQUxJRDsNCj4gPiArCQljbGlw X3NxdWFyZXNbMV0ueSA9IG1vZGUtPnZkaXNwbGF5IC0NCj4gPiArCQkJCSAgICBDTElQUEVEX1BM QU5FX01JTl9WQUxJRDsNCj4gPiArCQljbGlwX3NxdWFyZXNbMV0uc2l6ZSA9IENMSVBQRURfUExB TkVfU01BTExfU0laRTsNCj4gPiArDQo+ID4gKwkJY2xpcF9zcXVhcmVzWzJdLnggPSBtb2RlLT5o ZGlzcGxheSAtDQo+ID4gKwkJCQkgICAgQ0xJUFBFRF9QTEFORV9NSU5fVkFMSUQ7DQo+ID4gKwkJ Y2xpcF9zcXVhcmVzWzJdLnkgPSAtQ0xJUFBFRF9QTEFORV9TTUFMTF9TSVpFICsNCj4gPiArCQkJ CSAgICAgQ0xJUFBFRF9QTEFORV9NSU5fVkFMSUQ7DQo+ID4gKwkJY2xpcF9zcXVhcmVzWzJdLnNp emUgPSBDTElQUEVEX1BMQU5FX1NNQUxMX1NJWkU7DQo+ID4gKw0KPiA+ICsJCWNsaXBfc3F1YXJl c1szXS54ID0gbW9kZS0+aGRpc3BsYXkgLQ0KPiA+ICsJCQkJICAgIENMSVBQRURfUExBTkVfTUlO X1ZBTElEOw0KPiA+ICsJCWNsaXBfc3F1YXJlc1szXS55ID0gbW9kZS0+dmRpc3BsYXkgLQ0KPiA+ ICsJCQkJICAgIENMSVBQRURfUExBTkVfTUlOX1ZBTElEOw0KPiA+ICsJCWNsaXBfc3F1YXJlc1sz XS5zaXplID0gQ0xJUFBFRF9QTEFORV9TTUFMTF9TSVpFOw0KPiA+ICsNCj4gPiArCQl0ZXN0X3Bs YW5lX2NsaXBwaW5nX3NxdWFyZXMoZGF0YSwgcGlwZSwgb3V0cHV0LCBtb2RlLA0KPiA+ICsJCQkJ CSAgICBjbGlwX3NxdWFyZXMsDQo+ID4gY2xpcF9zcXVhcmVzX2NudCk7DQo+ID4gKw0KPiA+ICsJ CS8qDQo+ID4gKwkJICogVGVzdCBwb3NpdGlvbnMgaW4gdGhlIDQgY29ybmVycyBvZiB0aGUgc2Ny ZWVuIHdpdGggYQ0KPiA+ICsJCSAqIDIgeCAyIHNxdWFyZSB2aXNpYmxlIGZyb20gdGhlIHBsYW5l LiBUaGVzZSBhcmUgdmFsaWQNCj4gPiBvbiBhbGwNCj4gPiArCQkgKiBwbGF0Zm9ybXMgZXhjZXB0 IG9uIEdMSy9DTkwgd2hlcmUgbGVzcyB0aGFuDQo+ID4gKwkJICogQ0xJUFBFRF9QTEFORV9NSU5f VkFMSUQgcGl4ZWxzIHZpc2libGUgb24gdGhlDQo+ID4gbGVmdC9yaWdodA0KPiA+ICsJCSAqIGVk Z2VzIG9mIHRoZSBzY3JlZW4gbWF5IGNhdXNlIEZJRk8gdW5kZXJmbG93IGFuZA0KPiA+IGRpc3Bs YXkNCj4gPiArCQkgKiBjb3JydXB0aW9uLg0KPiA+ICsJCSAqDQo+ID4gKwkJICogVGhlIGN1cnNv ciBwbGFuZSBpcyBhbiBleGNlcHRpb24gd2l0aG91dCB0aGlzDQo+ID4gcHJvYmxlbS4NCj4gPiAr CQkgKg0KPiA+ICsJCSAqIFVzZSAyIHggMiBzaXplIGFzIG90aGVyIChvZGQpIHNpemVzIG1heSBy ZXN1bHQgaW4gYW4NCj4gPiArCQkgKiBpbmNvcnJlY3QgQ1JDIGZvciB0aGUgY3Vyc29yIHBsYW5l IGV2ZW4gdGhvdWdoIGl0DQo+ID4gZGlzcGxheXMNCj4gPiArCQkgKiBjb3JyZWN0bHkgYW5kIGNh dXNlcyBubyB1bmRlcmZsb3cuDQo+ID4gKwkJICovDQo+ID4gKwkJY2xpcF9zcXVhcmVzWzBdLngg PSAtQ0xJUFBFRF9QTEFORV9TTUFMTF9TSVpFICsgMjsNCj4gPiArCQljbGlwX3NxdWFyZXNbMF0u eSA9IC1DTElQUEVEX1BMQU5FX1NNQUxMX1NJWkUgKyAyOw0KPiA+ICsJCWNsaXBfc3F1YXJlc1sw XS5zaXplID0gQ0xJUFBFRF9QTEFORV9TTUFMTF9TSVpFOw0KPiA+ICsNCj4gPiArCQljbGlwX3Nx dWFyZXNbMV0ueCA9IC1DTElQUEVEX1BMQU5FX1NNQUxMX1NJWkUgKyAyOw0KPiA+ICsJCWNsaXBf c3F1YXJlc1sxXS55ID0gbW9kZS0+dmRpc3BsYXkgLSAyOw0KPiA+ICsJCWNsaXBfc3F1YXJlc1sx XS5zaXplID0gQ0xJUFBFRF9QTEFORV9TTUFMTF9TSVpFOw0KPiA+ICsNCj4gPiArCQljbGlwX3Nx dWFyZXNbMl0ueCA9IG1vZGUtPmhkaXNwbGF5IC0gMjsNCj4gPiArCQljbGlwX3NxdWFyZXNbMl0u eSA9IC1DTElQUEVEX1BMQU5FX1NNQUxMX1NJWkUgKyAyOw0KPiA+ICsJCWNsaXBfc3F1YXJlc1sy XS5zaXplID0gQ0xJUFBFRF9QTEFORV9TTUFMTF9TSVpFOw0KPiA+ICsNCj4gPiArCQljbGlwX3Nx dWFyZXNbM10ueCA9IG1vZGUtPmhkaXNwbGF5IC0gMjsNCj4gPiArCQljbGlwX3NxdWFyZXNbM10u eSA9IG1vZGUtPnZkaXNwbGF5IC0gMjsNCj4gPiArCQljbGlwX3NxdWFyZXNbM10uc2l6ZSA9IENM SVBQRURfUExBTkVfU01BTExfU0laRTsNCj4gPiArDQo+ID4gKwkJdGVzdF9wbGFuZV9jbGlwcGlu Z19zcXVhcmVzKGRhdGEsIHBpcGUsIG91dHB1dCwgbW9kZSwNCj4gPiArCQkJCQkgICAgY2xpcF9z cXVhcmVzLA0KPiA+IGNsaXBfc3F1YXJlc19jbnQpOw0KPiA+ICsNCj4gPiArCQljb25uZWN0ZWRf b3V0cysrOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWlndF9za2lwX29uKGNvbm5lY3RlZF9vdXRz ID09IDApOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICBzdGF0aWMgdm9pZA0KPiA+ICBydW5fdGVzdHNf Zm9yX3BpcGVfcGxhbmUoZGF0YV90ICpkYXRhLCBlbnVtIHBpcGUgcGlwZSkNCj4gPiAgew0KPiA+ IEBAIC01OTAsNiArMTEwMyw5IEBAIHJ1bl90ZXN0c19mb3JfcGlwZV9wbGFuZShkYXRhX3QgKmRh dGEsIGVudW0NCj4gPiBwaXBlIHBpcGUpDQo+ID4gIAkJICAgICAga21zdGVzdF9waXBlX25hbWUo cGlwZSkpDQo+ID4gIAkJdGVzdF9wbGFuZV9wYW5uaW5nKGRhdGEsIHBpcGUsDQo+ID4gVEVTVF9Q QU5OSU5HX0JPVFRPTV9SSUdIVCB8DQo+ID4gIAkJCQkJICAgICAgIFRFU1RfU1VTUEVORF9SRVNV TUUpOw0KPiA+ICsJaWd0X3N1YnRlc3RfZigicGxhbmUtY2xpcHBpbmctcGlwZS0lcy1wbGFuZXMi LA0KPiA+ICsJCSAgICAgIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpKQ0KPiA+ICsJCXRlc3RfcGxh bmVfY2xpcHBpbmcoZGF0YSwgcGlwZSk7DQo+ID4gIH0NCj4gPiAgDQo+ID4gIA0KPiA+IEBAIC02 MDIsOCArMTExOCwyMSBAQCBpZ3RfbWFpbg0KPiA+ICAJaWd0X3NraXBfb25fc2ltdWxhdGlvbigp Ow0KPiA+ICANCj4gPiAgCWlndF9maXh0dXJlIHsNCj4gPiArCQlpbnQgcmV0Ow0KPiA+ICsNCj4g PiAgCQlkYXRhLmRybV9mZCA9IGRybV9vcGVuX2RyaXZlcl9tYXN0ZXIoRFJJVkVSX0lOVEVMKTsN Cj4gPiAgDQo+ID4gKwkJZGF0YS5kZXZpZCA9IGludGVsX2dldF9kcm1fZGV2aWQoZGF0YS5kcm1f ZmQpOw0KPiA+ICsNCj4gPiArCQlkYXRhLm1heF9jdXJ3ID0gNjQ7DQo+ID4gKwkJZGF0YS5tYXhf Y3VyaCA9IDY0Ow0KPiA+ICsJCXJldCA9IGRybUdldENhcChkYXRhLmRybV9mZCwgRFJNX0NBUF9D VVJTT1JfV0lEVEgsDQo+ID4gKwkJCQkmZGF0YS5tYXhfY3Vydyk7DQo+ID4gKwkJaWd0X2Fzc2Vy dChyZXQgPT0gMCB8fCBlcnJubyA9PSBFSU5WQUwpOw0KPiA+ICsJCXJldCA9IGRybUdldENhcChk YXRhLmRybV9mZCwgRFJNX0NBUF9DVVJTT1JfSEVJR0hULA0KPiA+ICsJCQkJJmRhdGEubWF4X2N1 cmgpOw0KPiA+ICsJCWlndF9hc3NlcnQocmV0ID09IDAgfHwgZXJybm8gPT0gRUlOVkFMKTsNCj4g PiArDQo+ID4gIAkJa21zdGVzdF9zZXRfdnRfZ3JhcGhpY3NfbW9kZSgpOw0KPiA+ICANCj4gPiAg CQlpZ3RfcmVxdWlyZV9waXBlX2NyYyhkYXRhLmRybV9mZCk7DQo+ID4gLS0gDQo+ID4gMi4xOC4w DQo+ID4gDQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldgo=