From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4174E89057 for ; Thu, 21 Feb 2019 22:04:37 +0000 (UTC) Message-ID: <93e5d8a63cfa67042ec2c17a472420e565678d54.camel@intel.com> From: Dhinakaran Pandiyan Date: Thu, 21 Feb 2019 14:04:19 -0800 In-Reply-To: <56d50f0c-72a7-2fae-341d-49f5b8b8bcbd@gmail.com> References: <1550499727-25316-1-git-send-email-juhapekka.heikkila@gmail.com> <87aecf52d3dc7513201e77168a9b5903899508ed.camel@intel.com> <56d50f0c-72a7-2fae-341d-49f5b8b8bcbd@gmail.com> Mime-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t] tests/kms_available_modes_crc limit tested fb formats 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: juhapekka.heikkila@gmail.com, igt-dev@lists.freedesktop.org List-ID: T24gVGh1LCAyMDE5LTAyLTIxIGF0IDEzOjI4ICswMjAwLCBKdWhhLVBla2thIEhlaWtraWxhIHdy b3RlOgo+IE9uIDIxLjIuMjAxOSAyLjAxLCBEaGluYWthcmFuIFBhbmRpeWFuIHdyb3RlOgo+ID4g T24gTW9uLCAyMDE5LTAyLTE4IGF0IDE2OjIyICswMjAwLCBKdWhhLVBla2thIEhlaWtraWxhIHdy b3RlOgo+ID4gPiBUaGlzIHRlc3QgaXMgY2F1c2luZyB0b28gbXVjaCB1c2VsZXNzIG5vaXNlLiBM aW1pdCB0ZXN0ZWQKPiA+ID4gZmIgZm9ybWF0cyB0byBEUk1fRk9STUFUX0M4IGFuZCBEUk1fRk9S TUFUX1hCR1IyMTAxMDEwIGZvciBub3cuCj4gPiA+IFRoZXNlIHR3byBmb3JtYXRzIGFyZSBjdXJy ZW50bHkgbm90IHRlc3RlZCBvdGhlcndpc2UgdGh1cwo+ID4gPiB0aGV5J3JlIGxlZnQgaGVyZSBm b3Igbm93LiBEUk1fRk9STUFUX1hCR1IyMTAxMDEwIG5lZWQgdG8gYmUKPiA+ID4gaW5jbHVkZWQg aW50byBJR1Qgc3VwcG9ydGVkIGZvcm1hdHMgYW5kIERSTV9GT1JNQVRfQzggdGVzdCBuZWVkCj4g PiA+IHRvIGJlIG1vdmVkIGVsc2V3aGVyZSwgbWF5YmUgaW50byBrbXNfcGxhbmUuCj4gPiAKPiA+ IFRoYW5rcyBmb3IgZG9pbmcgdGhpcy4KPiA+IAo+ID4gPiAKPiA+ID4gU2lnbmVkLW9mZi1ieTog SnVoYS1QZWtrYSBIZWlra2lsYSA8anVoYXBla2thLmhlaWtraWxhQGdtYWlsLmNvbT4KPiA+ID4g LS0tCj4gPiA+ICAgdGVzdHMva21zX2F2YWlsYWJsZV9tb2Rlc19jcmMuYyB8IDIxNyArKysrKysr KysrKysrKystLS0tLS0tLQo+ID4gPiAtLS0tLS0tCj4gPiA+IC0tLS0tLS0tLS0KPiA+ID4gICAx IGZpbGUgY2hhbmdlZCwgODMgaW5zZXJ0aW9ucygrKSwgMTM0IGRlbGV0aW9ucygtKQo+ID4gPiAK PiA+ID4gZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19hdmFpbGFibGVfbW9kZXNfY3JjLmMKPiA+ID4g Yi90ZXN0cy9rbXNfYXZhaWxhYmxlX21vZGVzX2NyYy5jCj4gPiA+IGluZGV4IDdmZjM4NWYuLmE1 MTAwNmIgMTAwNjQ0Cj4gPiA+IC0tLSBhL3Rlc3RzL2ttc19hdmFpbGFibGVfbW9kZXNfY3JjLmMK PiA+ID4gKysrIGIvdGVzdHMva21zX2F2YWlsYWJsZV9tb2Rlc19jcmMuYwo+ID4gPiBAQCAtMTAx LDE3ICsxMDEsMTcgQEAgc3RhdGljIHZvaWQKPiA+ID4gZ2VuZXJhdGVfY29tcGFyaXNvbl9jcmNf bGlzdChkYXRhX3QKPiA+ID4gKmRhdGEsIGlndF9vdXRwdXRfdCAqb3V0cHV0KQo+ID4gPiAgIAlp Z3RfcGxhbmVfc2V0X2ZiKHByaW1hcnksICZkYXRhLT5wcmltYXJ5X2ZiKTsKPiA+ID4gICAJaWd0 X2Rpc3BsYXlfY29tbWl0MigmZGF0YS0+ZGlzcGxheSwgZGF0YS0+Y29tbWl0KTsKPiA+ID4gICAK PiA+ID4gKwlpZ3RfcGlwZV9jcmNfZHJhaW4oZGF0YS0+cGlwZV9jcmMpOwo+ID4gPiAgIAlpZ3Rf cGlwZV9jcmNfZ2V0X2N1cnJlbnQoZGF0YS0+Z2Z4X2ZkLCBkYXRhLT5waXBlX2NyYywKPiA+ID4g JmRhdGEtCj4gPiA+ID4gY3Vyc29yX2NyYyk7Cj4gPiA+IAo+ID4gPiAgIAlpZ3RfcGxhbmVfc2V0 X2ZiKHByaW1hcnksIE5VTEwpOwo+ID4gPiAgIAlpZ3RfZGlzcGxheV9jb21taXQyKCZkYXRhLT5k aXNwbGF5LCBkYXRhLT5jb21taXQpOwo+ID4gPiAgIAo+ID4gPiAtCWludGVsX2dlbihpbnRlbF9n ZXRfZHJtX2RldmlkKGRhdGEtPmdmeF9mZCkpIDwgOSA/Cj4gPiA+IC0JCSAgaWd0X3BhaW50X2Nv bG9yKGNyLCAwLCAwLCBtb2RlLT5oZGlzcGxheSwgbW9kZS0KPiA+ID4gPiB2ZGlzcGxheSwgMS4w LCAxLjAsIDEuMCkgOgo+ID4gPiAKPiA+ID4gLQkJICBpZ3RfcGFpbnRfY29sb3JfYWxwaGEoY3Is IDAsIDAsIG1vZGUtPmhkaXNwbGF5LCBtb2RlLQo+ID4gPiA+IHZkaXNwbGF5LCAxLjAsIDEuMCwg MS4wLCAxLjApOwo+ID4gPiAKPiA+ID4gKwlpZ3RfcGFpbnRfY29sb3IoY3IsIDAsIDAsIG1vZGUt PmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxheSwgMS4wLAo+ID4gPiAxLjAsIDEuMCk7Cj4gPiA+ICAg Cj4gPiA+ICAgCWlndF9wbGFuZV9zZXRfZmIocHJpbWFyeSwgJmRhdGEtPnByaW1hcnlfZmIpOwo+ ID4gPiAgIAlpZ3RfZGlzcGxheV9jb21taXQyKCZkYXRhLT5kaXNwbGF5LCBkYXRhLT5jb21taXQp Owo+ID4gPiAgIAo+ID4gPiArCWlndF9waXBlX2NyY19kcmFpbihkYXRhLT5waXBlX2NyYyk7Cj4g PiA+ICAgCWlndF9waXBlX2NyY19nZXRfY3VycmVudChkYXRhLT5nZnhfZmQsIGRhdGEtPnBpcGVf Y3JjLAo+ID4gPiAmZGF0YS0KPiA+ID4gPiBmdWxsc2NyZWVuX2NyYyk7Cj4gPiA+IAo+ID4gPiAg IAo+ID4gPiAgIAljYWlyb19kZXN0cm95KGNyKTsKPiA+ID4gQEAgLTEyMiw0OCArMTIyLDExIEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3Qgewo+ID4gPiAgIAl1aW50MzJfdAlmb3VyY2M7Cj4gPiA+ICAg CWNoYXIJCXplcm9wYWRkaW5nOwo+ID4gPiAgIAllbnVtCQl7IEJZVEVTX1BQXzE9MSwKPiA+ID4g LQkJCQlCWVRFU19QUF8yPTIsCj4gPiA+IC0JCQkJQllURVNfUFBfND00LAo+ID4gPiAtCQkJCU5W MTIsCj4gPiA+IC0JCQkJUDAxMCwKPiA+ID4gLQkJCQlTS0lQNCB9IGJwcDsKPiA+ID4gKwkJCQlC WVRFU19QUF80PTR9IGJwcDsKPiA+ID4gICAJdWludDMyX3QJdmFsdWU7Cj4gPiA+ICAgfSBmaWxs ZXJzW10gPSB7Cj4gPiA+ICAgCXsgRFJNX0ZPUk1BVF9DOCwgMCwgQllURVNfUFBfMSwgMHhmZn0s Cj4gPiA+IC0JeyBEUk1fRk9STUFUX1JHQjU2NSwgMCwgQllURVNfUFBfMiwgMHhmZmZmfSwKPiA+ ID4gLQl7IERSTV9GT1JNQVRfWFJHQjg4ODgsIDAsIEJZVEVTX1BQXzQsIDB4ZmZmZmZmZmZ9LAo+ ID4gPiAtCXsgRFJNX0ZPUk1BVF9YQkdSODg4OCwgMCwgQllURVNfUFBfNCwgMHhmZmZmZmZmZn0s Cj4gPiA+IC0KPiA+ID4gLQkvKgo+ID4gPiAtCSAqIGZvbGxvd2luZyB0d28gYXJlIHNraXBwZWQg YmVjYXVzZSBibGVuZGluZyBzZWVtcyB0byB3b3JrCj4gPiA+IC0JICogaW5jb3JyZWN0bHkgd2l0 aCBleGNlcHRpb24gb2YgQVIyNCBvbiBjdXJzb3IgcGxhbmUuCj4gPiA+IC0JICogVGVzdCBzdGls bCBjcmVhdGVzIHRoZSBwbGFuZXMsIGp1c3QgZmlsbGluZyBwbGFuZQo+ID4gPiAtCSAqIGFuZCBn ZXR0aW5nIGNyYyBpcyBza2lwcGVkLgo+ID4gPiAtCSAqLwo+ID4gPiAtCXsgRFJNX0ZPUk1BVF9B UkdCODg4OCwgMCwgU0tJUDQsIDB4ZmZmZmZmZmZ9LAo+ID4gPiAtCXsgRFJNX0ZPUk1BVF9BQkdS ODg4OCwgMCwgU0tJUDQsIDB4MDBmZmZmZmZ9LAo+ID4gPiAtCj4gPiA+IC0JeyBEUk1fRk9STUFU X1hSR0IyMTAxMDEwLCAwLCBCWVRFU19QUF80LCAweGZmZmZmZmZmfSwKPiA+ID4gICAJeyBEUk1f Rk9STUFUX1hCR1IyMTAxMDEwLCAwLCBCWVRFU19QUF80LCAweGZmZmZmZmZmfSwKPiA+ID4gLQo+ ID4gPiAtCXsgRFJNX0ZPUk1BVF9ZVVlWLCAwLCBCWVRFU19QUF80LCAweDgwZWI4MGVifSwKPiA+ ID4gLQl7IERSTV9GT1JNQVRfWVZZVSwgMCwgQllURVNfUFBfNCwgMHg4MGViODBlYn0sCj4gPiA+ IC0JeyBEUk1fRk9STUFUX1ZZVVksIDAsIEJZVEVTX1BQXzQsIDB4ZWI4MGViODB9LAo+ID4gPiAt CXsgRFJNX0ZPUk1BVF9VWVZZLCAwLCBCWVRFU19QUF80LCAweGViODBlYjgwfSwKPiA+ID4gLQo+ ID4gPiAtCS8qCj4gPiA+IC0JICogKHNlbWktKXBsYW5hciBmb3JtYXRzCj4gPiA+IC0JICovCj4g PiA+IC0JeyBEUk1fRk9STUFUX05WMTIsIDAsIE5WMTIsIDB4ODBlYn0sCj4gPiA+IC0jaWZkZWYg RFJNX0ZPUk1BVF9QMDEwCj4gPiA+IC0JeyBEUk1fRk9STUFUX1AwMTAsIDAsIFAwMTAsIDB4ODAw MGViMDB9LAo+ID4gPiAtI2VuZGlmCj4gPiA+IC0jaWZkZWYgRFJNX0ZPUk1BVF9QMDEyCj4gPiA+ IC0JeyBEUk1fRk9STUFUX1AwMTIsIDAsIFAwMTAsIDB4ODAwMGViMDB9LAo+ID4gPiAtI2VuZGlm Cj4gPiA+IC0jaWZkZWYgRFJNX0ZPUk1BVF9QMDE2Cj4gPiA+IC0JeyBEUk1fRk9STUFUX1AwMTYs IDAsIFAwMTAsIDB4ODAwMGViMDB9LAo+ID4gPiAtI2VuZGlmCj4gPiA+ICAgCXsgMCwgMCwgMCwg MCB9Cj4gPiA+ICAgfTsKPiA+ID4gICAKPiA+ID4gQEAgLTE3NSwxMCArMTM4LDkgQEAgc3RhdGlj IGJvb2wgZmlsbF9pbl9mYihkYXRhX3QgKmRhdGEsCj4gPiA+IGlndF9vdXRwdXRfdCAqb3V0cHV0 LCBpZ3RfcGxhbmVfdCAqcGxhbmUsCj4gPiA+ICAgCQkgICAgICAgdWludDMyX3QgZm9ybWF0KQo+ ID4gPiAgIHsKPiA+ID4gICAJc2lnbmVkIGksIGMsIHdyaXRlc2l6ZTsKPiA+ID4gLQl1bnNpZ25l ZCBzaG9ydCogcHRlbXBfMTZfYnVmOwo+ID4gPiAgIAl1bnNpZ25lZCBpbnQqIHB0ZW1wXzMyX2J1 ZjsKPiA+ID4gICAKPiA+ID4gLQlmb3IoIGkgPSAwOyBmaWxsZXJzW2ldLmZvdXJjYyAhPSAwOyBp KysgKSB7Cj4gPiA+ICsJZm9yKCBpID0gMDsgaSA8IEFSUkFZX1NJWkUoZmlsbGVycyktMTsgaSsr ICkgewo+ID4gPiAgIAkJaWYoIGZpbGxlcnNbaV0uZm91cmNjID09IGZvcm1hdCApCj4gPiA+ICAg CQkJYnJlYWs7Cj4gPiA+ICAgCX0KPiA+ID4gQEAgLTE5MCw1MyArMTUyLDEwIEBAIHN0YXRpYyBi b29sIGZpbGxfaW5fZmIoZGF0YV90ICpkYXRhLAo+ID4gPiBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwg aWd0X3BsYW5lX3QgKnBsYW5lLAo+ID4gPiAgIAkJCXB0ZW1wXzMyX2J1ZltjXSA9IGZpbGxlcnNb aV0udmFsdWU7Cj4gPiA+ICAgCQl3cml0ZXNpemUgPSBkYXRhLT5zaXplOwo+ID4gPiAgIAkJYnJl YWs7Cj4gPiA+IC0JY2FzZSBCWVRFU19QUF8yOgo+ID4gPiAtCQlwdGVtcF8xNl9idWYgPSAodW5z aWduZWQgc2hvcnQqKWRhdGEtPmJ1ZjsKPiA+ID4gLQkJZm9yIChjID0gMDsgYyA8IGRhdGEtPnNp emUvMjsgYysrKQo+ID4gPiAtCQkJcHRlbXBfMTZfYnVmW2NdID0gKHVuc2lnbmVkCj4gPiA+IHNo b3J0KWZpbGxlcnNbaV0udmFsdWU7Cj4gPiA+IC0JCXdyaXRlc2l6ZSA9IGRhdGEtPnNpemU7Cj4g PiA+IC0JCWJyZWFrOwo+ID4gPiAgIAljYXNlIEJZVEVTX1BQXzE6Cj4gPiA+ICAgCQltZW1zZXQo KHZvaWQgKilkYXRhLT5idWYsIGZpbGxlcnNbaV0udmFsdWUsCj4gPiA+IGRhdGEtCj4gPiA+ID4g c2l6ZSk7Cj4gPiA+IAo+ID4gPiAgIAkJd3JpdGVzaXplID0gZGF0YS0+c2l6ZTsKPiA+ID4gICAJ CWJyZWFrOwo+ID4gPiAtCWNhc2UgTlYxMjoKPiA+ID4gLQkJbWVtc2V0KCh2b2lkICopZGF0YS0+ YnVmLCBmaWxsZXJzW2ldLnZhbHVlJjB4ZmYsCj4gPiA+IC0JCSAgICAgICBkYXRhLT5mYi5vZmZz ZXRzWzFdKTsKPiA+ID4gLQo+ID4gPiAtCQltZW1zZXQoKHZvaWQgKikoZGF0YS0+YnVmK2RhdGEt PmZiLm9mZnNldHNbMV0pLAo+ID4gPiAtCQkgICAgICAgKGZpbGxlcnNbaV0udmFsdWU+PjgpJjB4 ZmYsCj4gPiA+IC0JCSAgICAgICBkYXRhLT5zaXplIC0gZGF0YS0+ZmIub2Zmc2V0c1sxXSk7Cj4g PiA+IC0KPiA+ID4gLQkJd3JpdGVzaXplID0gZGF0YS0+c2l6ZTsKPiA+ID4gLQkJYnJlYWs7Cj4g PiA+IC0JY2FzZSBQMDEwOgo+ID4gPiAtCQlwdGVtcF8xNl9idWYgPSAodW5zaWduZWQgc2hvcnQq KWRhdGEtPmJ1ZjsKPiA+ID4gLQkJZm9yIChjID0gMDsgYyA8IGRhdGEtPnNpemUvMjsgYysrKQo+ ID4gPiAtCQkJcHRlbXBfMTZfYnVmW2NdID0gKHVuc2lnbmVkCj4gPiA+IHNob3J0KWZpbGxlcnNb aV0udmFsdWUmMHhmZmZmOwo+ID4gPiAtCj4gPiA+IC0JCXB0ZW1wXzE2X2J1ZiA9ICh1bnNpZ25l ZCBzaG9ydCopKGRhdGEtPmJ1ZitkYXRhLT5zaXplKTsKPiA+ID4gLQkJZm9yIChjID0gMDsgYyA8 IGRhdGEtPnNpemUvMjsgYysrKQo+ID4gPiAtCQkJcHRlbXBfMTZfYnVmW2NdID0gKHVuc2lnbmVk Cj4gPiA+IHNob3J0KShmaWxsZXJzW2ldLnZhbHVlPj4xNikmMHhmZmZmOwo+ID4gPiAtCj4gPiA+ IC0JCXdyaXRlc2l6ZSA9IGRhdGEtPnNpemUrZGF0YS0+c2l6ZS8yOwo+ID4gPiAtCQlicmVhazsK PiA+ID4gLQljYXNlIFNLSVA0Ogo+ID4gPiAtCQlpZiAoZmlsbGVyc1tpXS5mb3VyY2MgPT0gRFJN X0ZPUk1BVF9BUkdCODg4OCAmJgo+ID4gPiAtCQkgICAgcGxhbmUtPnR5cGUgPT0gRFJNX1BMQU5F X1RZUEVfQ1VSU09SKSB7Cj4gPiA+IC0JCS8qCj4gPiA+IC0JCSAqIHNwZWNpYWwgZm9yIGN1cnNv ciBwbGFuZSB3aGVyZSBibGVuZGluZyB3b3Jrcwo+ID4gPiBjb3JyZWN0bHkuCj4gPiA+IC0JCSAq Lwo+ID4gPiAtCQkJcHRlbXBfMzJfYnVmID0gKHVuc2lnbmVkIGludCopZGF0YS0+YnVmOwo+ID4g PiAtCQkJZm9yIChjID0gMDsgYyA8IGRhdGEtPnNpemUvNDsgYysrKQo+ID4gPiAtCQkJCXB0ZW1w XzMyX2J1ZltjXSA9IGZpbGxlcnNbaV0udmFsdWU7Cj4gPiA+IC0JCQl3cml0ZXNpemUgPSBkYXRh LT5zaXplOwo+ID4gPiAtCQkJYnJlYWs7Cj4gPiA+IC0JCX0KPiA+ID4gLQkJaWd0X2luZm8oIkZv cm1hdCAlcyBDUkMgY29tcGFyaXNvbiBza2lwcGVkIGJ5Cj4gPiA+IGRlc2lnbi5cbiIsCj4gPiA+ IC0JCQkgKGNoYXIqKSZmaWxsZXJzW2ldLmZvdXJjYyk7Cj4gPiA+IC0KPiA+ID4gLQkJcmV0dXJu IGZhbHNlOwo+ID4gPiAgIAlkZWZhdWx0Ogo+ID4gPiAgIAkJaWd0X2luZm8oIlVuc3VwcG9ydGVk IG1vZGUgZm9yIHRlc3QgJXNcbiIsCj4gPiA+ICAgCQkJIChjaGFyKikmZmlsbGVyc1tpXS5mb3Vy Y2MpOwo+ID4gPiBAQCAtMjcxLDI2ICsxOTAsMjAgQEAgc3RhdGljIGJvb2wgc2V0dXBfZmIoZGF0 YV90ICpkYXRhLAo+ID4gPiBpZ3Rfb3V0cHV0X3QKPiA+ID4gKm91dHB1dCwgaWd0X3BsYW5lX3Qg KnBsYW5lLAo+ID4gPiAgIAkJdGlsaW5nID0gTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORTsKPiA+ ID4gICAJfQo+ID4gPiAgIAo+ID4gPiAtCWZvciAoaSA9IDA7IGZpbGxlcnNbaV0uZm91cmNjICE9 IDA7IGkrKykgewo+ID4gPiAtCQlpZiAoZmlsbGVyc1tpXS5mb3VyY2MgPT0gZm9ybWF0KQo+ID4g PiArCWZvciggaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGZpbGxlcnMpLTE7IGkrKyApIHsKPiA+ID4g KwkJaWYoIGZpbGxlcnNbaV0uZm91cmNjID09IGZvcm1hdCApCj4gPiA+ICAgCQkJYnJlYWs7Cj4g PiA+ICAgCX0KPiA+ID4gICAKPiA+ID4gICAJc3dpdGNoIChmaWxsZXJzW2ldLmJwcCkgewo+ID4g PiAtCWNhc2UgTlYxMjoKPiA+ID4gICAJY2FzZSBCWVRFU19QUF8xOgo+ID4gPiAgIAkJYnBwID0g ODsKPiA+ID4gICAJCWJyZWFrOwo+ID4gPiAtCj4gPiA+IC0JY2FzZSBQMDEwOgo+ID4gPiAtCWNh c2UgQllURVNfUFBfMjoKPiA+ID4gLQkJYnBwID0gMTY7Cj4gPiA+IC0JCWJyZWFrOwo+ID4gPiAt Cj4gPiA+IC0JY2FzZSBTS0lQNDoKPiA+ID4gICAJY2FzZSBCWVRFU19QUF80Ogo+ID4gPiAgIAkJ YnBwID0gMzI7Cj4gPiA+ICAgCQlicmVhazsKPiA+ID4gKwlkZWZhdWx0Ogo+ID4gPiArCQlyZXR1 cm4gZmFsc2U7Cj4gPiAKPiA+IEhtbSwgd2Ugc2hvdWxkIG5ldmVyIGhpdCB0aGlzIGNvbmRpdGlv bi4gTWFyayB0aGlzIGFzIGEgZmFpbHVyZSBzbwo+ID4gdGhhdAo+ID4gdGhlIHRlc3QgZ2V0cyBm aXhlZD8KPiAKPiBZZXMsIHRoaXMgaXMgZ29vZCBwbGFjZSBmb3IgYXNzZXJ0Lgo+IAo+ID4gCj4g PiA+ICAgCX0KPiA+ID4gICAKPiA+ID4gICAJaWd0X2dldF9mYl90aWxlX3NpemUoZGF0YS0+Z2Z4 X2ZkLCB0aWxpbmcsIGJwcCwKPiA+ID4gQEAgLTI5OSwxNyArMjEyLDYgQEAgc3RhdGljIGJvb2wg c2V0dXBfZmIoZGF0YV90ICpkYXRhLAo+ID4gPiBpZ3Rfb3V0cHV0X3QKPiA+ID4gKm91dHB1dCwg aWd0X3BsYW5lX3QgKnBsYW5lLAo+ID4gPiAgIAlkYXRhLT5mYi5zdHJpZGVzWzBdID0gQUxJR04o dyAqIGJwcCAvIDgsIHRpbGVfd2lkdGgpOwo+ID4gPiAgIAlnZW1zaXplID0gZGF0YS0+c2l6ZSA9 IGRhdGEtPmZiLnN0cmlkZXNbMF0gKiBBTElHTihoLAo+ID4gPiB0aWxlX2hlaWdodCk7Cj4gPiA+ ICAgCj4gPiA+IC0JaWYgKGZpbGxlcnNbaV0uYnBwID09IFAwMTAgfHwgZmlsbGVyc1tpXS5icHAg PT0gTlYxMikgewo+ID4gPiAtCQlkYXRhLT5mYi5vZmZzZXRzWzFdID0gZGF0YS0+c2l6ZTsKPiA+ ID4gLQkJZGF0YS0+ZmIuc3RyaWRlc1sxXSA9IGRhdGEtPmZiLnN0cmlkZXNbMF07Cj4gPiA+IC0J CWdlbXNpemUgPSBkYXRhLT5zaXplICogMjsKPiA+ID4gLQo+ID4gPiAtCQlpZiAoZmlsbGVyc1tp XS5icHAgPT0gTlYxMikKPiA+ID4gLQkJCWRhdGEtPnNpemUgKz0gZGF0YS0+ZmIuc3RyaWRlc1sx XSAqIEFMSUdOKGgvMiwKPiA+ID4gdGlsZV9oZWlnaHQpOwo+ID4gPiAtCj4gPiA+IC0JCW51bV9w bGFuZXMgPSAyOwo+ID4gPiAtCX0KPiA+ID4gLQo+ID4gPiAgIAlkYXRhLT5nZW1faGFuZGxlID0g Z2VtX2NyZWF0ZShkYXRhLT5nZnhfZmQsIGdlbXNpemUpOwo+ID4gPiAgIAlyZXQgPSBfX2dlbV9z ZXRfdGlsaW5nKGRhdGEtPmdmeF9mZCwgZGF0YS0+Z2VtX2hhbmRsZSwKPiA+ID4gICAJCQkgICAg ICAgaWd0X2ZiX21vZF90b190aWxpbmcodGlsaW5nKSwKPiA+ID4gQEAgLTM4NiwxMiArMjg4LDIz IEBAIHN0YXRpYyBib29sIHByZXBhcmVfY3J0YyhkYXRhX3QgKmRhdGEsCj4gPiA+IGlndF9vdXRw dXRfdCAqb3V0cHV0LAo+ID4gPiAgIAo+ID4gPiAgIHN0YXRpYyBpbnQKPiA+ID4gICB0ZXN0X29u ZV9tb2RlKGRhdGFfdCogZGF0YSwgaWd0X291dHB1dF90ICpvdXRwdXQsIGlndF9wbGFuZV90Kgo+ ID4gPiBwbGFuZSwKPiA+ID4gLQkgICAgICBpbnQgbW9kZSkKPiA+ID4gKwkgICAgICBpbnQgbW9k ZSwgZW51bSBwaXBlIHBpcGUpCj4gPiAKPiA+IHMvbW9kZS9mb3JtYXQKPiA+IENvbW1lbnQgYXBw bGllcyB0byBvdGhlciBwbGFjZXMgdG9vLgo+IAo+IFdoaWxlIEkgYWdyZWUgSSdtIHNvLXNvIGFi b3V0IGRvaW5nIHRoaXMgY2hhbmdlIHNpbmNlIGl0IHdpbGwgZm9sbG93IAo+IGludG8gbWFzc2l2 ZSBwYXRjaCBmb3IgdGVzdCB3aGljaCBJJ20gYW55d2F5IHdhbnRpbmcgdG8gdGhyb3cgYXdheQo+ IGluIAo+IHRoZSBlbmQuCk9rYXkuCgo+IAo+ID4gCj4gPiAKPiA+ID4gICB7Cj4gPiA+ICAgCWln dF9jcmNfdCBjdXJyZW50X2NyYzsKPiA+ID4gICAJc2lnbmVkIHJWYWwgPSAwOwo+ID4gPiAgIAli b29sIGRvX2NyYzsKPiA+ID4gLQljaGFyKiBjcmNjb21wYXJlWzJdOwo+ID4gPiArCWludCBpOwo+ ID4gPiArCj4gPiA+ICsJLyoKPiA+ID4gKwkgKiBMaW1pdCB0ZXN0cyBvbmx5IHRvIHRob3NlIGZi IGZvcm1hdHMgbGlzdGVkIGluIGZpbGxlcnMgdGFibGUKPiA+ID4gKwkgKi8KPiA+ID4gKwlmb3Io IGkgPSAwOyBpIDwgQVJSQVlfU0laRShmaWxsZXJzKS0xOyBpKysgKSB7Cj4gPiA+ICsJCWlmKCBm aWxsZXJzW2ldLmZvdXJjYyA9PSBtb2RlICkKPiA+ID4gKwkJCWJyZWFrOwo+ID4gPiArCX0KPiA+ ID4gKwo+ID4gPiArCWlmKGZpbGxlcnNbaV0uYnBwID09IDApCj4gPiA+ICsJCXJldHVybiBmYWxz ZTsKCnMvcmV0dXJuIGZhbHNlL3JldHVybiAwIHNpbmNlIHRoZSBmdW5jdGlvbiByZXR1cm5zICdu dW1iZXInIG9mIGNyYwpmYWlsdXJlcy4KCj4gPiAKPiA+IC5icHAgaXMgYWx3YXlzIHZhbGlkIGZv ciB0aGUgdHdvIGZvcm1hdHMgdGhhdCBhcmUgdGVzdGVkLCBpc24ndCBpdD8KPiA+IEluCj4gPiB0 aGF0IGNhc2UgLmJwcCA9PSAwIGlzIGEgdGVzdCBmYWlsdXJlLgo+ID4gCj4gCj4gTm8sIGhlcmUg d2lsbCBhcnJpdmUgcXVlcnkgZm9yIGFsbCBmYiBmb3JtYXRzIHdoaWNoIGtlcm5lbCB0YWxrCj4g YWJvdXQuIAo+IElmIGJwcCBiZWNvbWUgemVybyB0aGlzIHdpbGwgZ28gb3V0IGZyb20gdGVzdGlu ZyBtb2RlIHdoaWNoIGlzIG5vdCAKPiBzdXBwb3J0ZWQuIEllLiBDOCBvciBYQkdSMjEwMTAxMCB3 aWxsIGdvIGZvcndhcmQgYW5kIGhlcmUgb3RoZXIKPiBmb3JtYXRzIAo+IGFyZSBkaXRjaGVkLgoK WW91IGFyZSByaWdodCwgbXkgYnJhaW4gYXV0b21hdGljYWxseSBmaWxsZWQgaW4gYQoKaWYgKGkg PT0gQVJSQVlfU0laRShmaWxsZXJzKSAtIDEpCglyZXR1cm4gMDsKCkkgZmVlbCBjaGVja2luZyBm b3IgdGhlIGxvb3AgaW5kZXggdG8gaGF2ZSByZWFjaGVkIHRoZSBsaW1pdCBzZWVtcyBtb3JlCm5h dHVyYWwgc2luY2Ugb25seSB0d28gdmFsaWQgZm9ybWF0cyBhcmUgdGVzdGVkLiBBbHNvLCB3ZSBk b24ndCByZWFsbHkKbmVlZCB0aGUgeyAwLCAwLCAwLCAwIH0gZWxlbWVudCBpbiB0aGUgZmlsbGVy cyBhcnJheSBhbnltb3JlLgogCj4gCj4gPiA+ICAgCj4gPiA+ICAgCWlmIChwcmVwYXJlX2NydGMo ZGF0YSwgb3V0cHV0LCBwbGFuZSwgbW9kZSkpewo+ID4gPiAgIAkJLyoKPiA+ID4gQEAgLTQxMiwy OSArMzI1LDMwIEBAIHRlc3Rfb25lX21vZGUoZGF0YV90KiBkYXRhLCBpZ3Rfb3V0cHV0X3QKPiA+ ID4gKm91dHB1dCwgaWd0X3BsYW5lX3QqIHBsYW5lLAo+ID4gPiAgIAkJCWlmIChwbGFuZS0+dHlw ZSAhPQo+ID4gPiBEUk1fUExBTkVfVFlQRV9DVVJTT1IpIHsKPiA+ID4gICAJCQkJaWYKPiA+ID4g KCFpZ3RfY2hlY2tfY3JjX2VxdWFsKCZjdXJyZW50X2NyYywKPiA+ID4gICAJCQkJCSZkYXRhLT5m dWxsc2NyZWVuX2NyYykpIAo+ID4gPiB7Cj4gPiA+IC0JCQkJCWNyY2NvbXBhcmVbMF0gPQo+ID4g PiBpZ3RfY3JjX3RvX3N0cmluZygmY3VycmVudF9jcmMpOwo+ID4gPiAtCQkJCQljcmNjb21wYXJl WzFdID0KPiA+ID4gaWd0X2NyY190b19zdHJpbmcoJmRhdGEtPmZ1bGxzY3JlZW5fY3JjKTsKPiA+ ID4gLQkJCQkJaWd0X3dhcm4oImNyYyBtaXNtYXRjaC4gdGFyZ2V0Cj4gPiA+ICUuOHMsIHJlc3Vs dCAlLjhzLlxuIiwgY3JjY29tcGFyZVswXSwgY3JjY29tcGFyZVsxXSk7Cj4gPiA+IC0JCQkJCWZy ZWUoY3JjY29tcGFyZVswXSk7Cj4gPiA+IC0JCQkJCWZyZWUoY3JjY29tcGFyZVsxXSk7Cj4gPiA+ ICsJCQkJCWlndF93YXJuKCJjcmMgbWlzbWF0Y2guCj4gPiA+IGNvbm5lY3RvciAlcyB1c2luZyBw aXBlICVzIiBcCj4gPiA+ICsJCQkJCQkiIHBsYW5lIGluZGV4ICVkIG1vZGUKPiA+ID4gJS40c1xu IiwKPiA+ID4gKwkJCQkJCWlndF9vdXRwdXRfbmFtZShvdXRwdXQpCj4gPiA+ICwKPiA+ID4gKwkJ CQkJCWttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpCj4gPiA+ICwKPiA+ID4gKwkJCQkJCXBsYW5lLT5p bmRleCwKPiA+ID4gKwkJCQkJCShjaGFyKikmbW9kZSk7Cj4gPiA+ICAgCQkJCQlyVmFsKys7Cj4g PiA+ICAgCQkJCX0KPiA+ID4gICAJCQl9IGVsc2Ugewo+ID4gPiAgIAkJCQlpZgo+ID4gPiAoIWln dF9jaGVja19jcmNfZXF1YWwoJmN1cnJlbnRfY3JjLAo+ID4gPiAgIAkJCQkJJmRhdGEtPmN1cnNv cl9jcmMpKSB7Cj4gPiA+IC0JCQkJCWNyY2NvbXBhcmVbMF0gPQo+ID4gPiBpZ3RfY3JjX3RvX3N0 cmluZygmY3VycmVudF9jcmMpOwo+ID4gPiAtCQkJCQljcmNjb21wYXJlWzFdID0KPiA+ID4gaWd0 X2NyY190b19zdHJpbmcoJmRhdGEtPmN1cnNvcl9jcmMpOwo+ID4gPiAtCQkJCQlpZ3Rfd2Fybigi Y3JjIG1pc21hdGNoLiB0YXJnZXQKPiA+ID4gJS44cywgcmVzdWx0ICUuOHMuXG4iLCBjcmNjb21w YXJlWzBdLCBjcmNjb21wYXJlWzFdKTsKPiA+ID4gLQkJCQkJZnJlZShjcmNjb21wYXJlWzBdKTsK PiA+ID4gLQkJCQkJZnJlZShjcmNjb21wYXJlWzFdKTsKPiA+ID4gKwkJCQkJaWd0X3dhcm4oImNy YyBtaXNtYXRjaC4KPiA+ID4gY29ubmVjdG9yICVzIHVzaW5nIHBpcGUgJXMiIFwKPiA+ID4gKwkJ CQkJCSIgcGxhbmUgaW5kZXggJWQgbW9kZQo+ID4gPiAlLjRzXG4iLAo+ID4gPiArCQkJCQkJaWd0 X291dHB1dF9uYW1lKG91dHB1dCkKPiA+ID4gLAo+ID4gPiArCQkJCQkJa21zdGVzdF9waXBlX25h bWUocGlwZSkKPiA+ID4gLAo+ID4gPiArCQkJCQkJcGxhbmUtPmluZGV4LAo+ID4gPiArCQkJCQkJ KGNoYXIqKSZtb2RlKTsKPiA+ID4gICAJCQkJCXJWYWwrKzsKPiA+ID4gICAJCQkJfQo+ID4gPiAg IAkJCX0KPiA+ID4gICAJCX0KPiA+ID4gLQkJcmVtb3ZlX2ZiKGRhdGEsIG91dHB1dCwgcGxhbmUp Owo+ID4gPiAtCQlyZXR1cm4gclZhbDsKPiA+ID4gICAJfQo+ID4gPiAtCXJldHVybiAxOwo+ID4g PiArCXJlbW92ZV9mYihkYXRhLCBvdXRwdXQsIHBsYW5lKTsKPiA+ID4gKwlyZXR1cm4gclZhbDsK PiA+ID4gICB9Cj4gPiA+ICAgCj4gPiA+ICAgCj4gPiA+IEBAIC00NDUsMTQgKzM1OSw0NCBAQCB0 ZXN0X2F2YWlsYWJsZV9tb2RlcyhkYXRhX3QqIGRhdGEpCj4gPiA+ICAgCWlndF9wbGFuZV90ICpw bGFuZTsKPiA+ID4gICAJaW50IG1vZGVpbmRleDsKPiA+ID4gICAJZW51bSBwaXBlIHBpcGU7Cj4g PiA+IC0JaW50IGludmFsaWRzID0gMDsKPiA+ID4gKwlpbnQgaW52YWxpZHMgPSAwLCBpLCBsdXRf c2l6ZTsKPiA+ID4gICAJZHJtTW9kZVBsYW5lICptb2RlUGxhbmU7Cj4gPiA+IC0JY2hhciBwbGFu ZXR5cGVbM11bOF0gPSB7Ik9WRVJMQVlcMCIsICJQUklNQVJZXDAiLCAiQ1VSU09SXDAiIH07Cj4g PiA+ICsKPiA+ID4gKwlzdHJ1Y3Qgewo+ID4gPiArCSAgICB1aW50MTZfdCByZWQ7Cj4gPiA+ICsJ ICAgIHVpbnQxNl90IGdyZWVuOwo+ID4gPiArCSAgICB1aW50MTZfdCBibHVlOwo+ID4gPiArCSAg ICB1aW50MTZfdCByZXNlcnZlZDsKPiA+ID4gKwl9ICpsdXQgPSBOVUxMOwo+ID4gPiAgIAo+ID4g PiAgIAlmb3JfZWFjaF9waXBlX3dpdGhfdmFsaWRfb3V0cHV0KCZkYXRhLT5kaXNwbGF5LCBwaXBl LAo+ID4gPiBvdXRwdXQpIHsKPiA+ID4gICAJCWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBw aXBlKTsKPiA+ID4gICAJCWlndF9kaXNwbGF5X2NvbW1pdDIoJmRhdGEtPmRpc3BsYXksIGRhdGEt Cj4gPiA+ID5jb21taXQpOwo+ID4gPiAgIAo+ID4gPiArCQlpZiAoaWd0X3BpcGVfb2JqX2hhc19w cm9wKCZkYXRhLT5kaXNwbGF5LnBpcGVzW3BpcGVdLAo+ID4gPiBJR1RfQ1JUQ19HQU1NQV9MVVRf U0laRSkpIHsKPiA+ID4gKwkJCWx1dF9zaXplID0gaWd0X3BpcGVfZ2V0X3Byb3AoJmRhdGEtPmRp c3BsYXksCj4gPiA+IHBpcGUsCj4gPiA+ICsJCQkJCQkgICAgIElHVF9DUlRDX0dBTU1BX0xVVAo+ ID4gPiBfU0laRSk7Cj4gPiA+ICsKPiA+ID4gKwkJCWx1dCA9IGNhbGxvYyhzaXplb2YoKmx1dCks IGx1dF9zaXplKTsKPiA+ID4gKwo+ID4gPiArCQkJZm9yIChpID0gMDsgaSA8IGx1dF9zaXplOyBp KyspIHsKPiA+ID4gKwkJCQlsdXRbaV0ucmVkID0gKGkgKiAweGZmZmYgLyAobHV0X3NpemUgLQo+ ID4gPiAxKSkgJiAweDgwMDA7Cj4gPiA+ICsJCQkJbHV0W2ldLmdyZWVuID0gKGkgKiAweGZmZmYg LyAobHV0X3NpemUKPiA+ID4gLSAxKSkgJiAweDgwMDA7Cj4gPiA+ICsJCQkJbHV0W2ldLmJsdWUg PSAoaSAqIDB4ZmZmZiAvIChsdXRfc2l6ZSAtCj4gPiA+IDEpKSAmIDB4ODAwMDsKPiA+ID4gKwkJ CX0KPiA+ID4gKwo+ID4gPiArCQkJaWd0X3BpcGVfcmVwbGFjZV9wcm9wX2Jsb2IoJmRhdGEtPmRp c3BsYXksCj4gPiA+IHBpcGUsCj4gPiA+ICsJCQkJCQkgICBJR1RfQ1JUQ19HQU1NQV9MVVQsCj4g PiA+ICsJCQkJCQkgICBsdXQsIHNpemVvZigqbHV0KSAqCj4gPiA+IGx1dF9zaXplKTsKPiA+ID4g KwkJCWlndF9kaXNwbGF5X2NvbW1pdDIoJmRhdGEtPmRpc3BsYXksIGRhdGEtCj4gPiA+ID4gY29t bWl0KTsKPiA+ID4gCj4gPiA+ICsKPiA+ID4gKwkJCWZvciAoaSA9IDA7IGkgPCBsdXRfc2l6ZTsg aSsrKSB7Cj4gPiA+ICsJCQkJbHV0W2ldLnJlZCA9IGkgKiAweGZmZmYgLyAobHV0X3NpemUgLQo+ ID4gPiAxKTsKPiA+ID4gKwkJCQlsdXRbaV0uZ3JlZW4gPSBpICogMHhmZmZmIC8gKGx1dF9zaXpl IC0KPiA+ID4gMSk7Cj4gPiA+ICsJCQkJbHV0W2ldLmJsdWUgPSBpICogMHhmZmZmIC8gKGx1dF9z aXplIC0KPiA+ID4gMSk7Cj4gPiA+ICsJCQl9Cj4gPiA+ICsJCX0KPiA+ID4gKwo+ID4gPiAgIAkJ ZGF0YS0+cGlwZV9jcmMgPSBpZ3RfcGlwZV9jcmNfbmV3KGRhdGEtPmdmeF9mZCwgCj4gPiA+IHBp cGUsCj4gPiA+ICAgCQkJCQkJICBJTlRFTF9QSVBFX0NSCj4gPiA+IENfU09VUkNFCj4gPiA+IF9B VVRPKTsKPiA+ID4gICAKPiA+ID4gQEAgLTQ2NywyOSArNDExLDM0IEBAIHRlc3RfYXZhaWxhYmxl X21vZGVzKGRhdGFfdCogZGF0YSkKPiA+ID4gICAJCQltb2RlUGxhbmUgPSBkcm1Nb2RlR2V0UGxh bmUoZGF0YS0KPiA+ID4gPmdmeF9mZCwKPiA+ID4gICAJCQkJCQkgICAgcGxhbmUtCj4gPiA+ID5k cm1fcGxhbmUtCj4gPiA+ID4gcGxhbmVfaWQpOwo+ID4gPiAKPiA+ID4gICAKPiA+ID4gKwkJCWlm IChwbGFuZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9DVVJTT1IpCj4gPiA+ICsJCQkJY29udGlu dWU7Cj4gPiA+ICsKPiA+ID4gICAJCQlmb3IgKG1vZGVpbmRleCA9IDA7Cj4gPiA+ICAgCQkJICAg ICBtb2RlaW5kZXggPCBtb2RlUGxhbmUtCj4gPiA+ID5jb3VudF9mb3JtYXRzOwo+ID4gPiAgIAkJ CSAgICAgbW9kZWluZGV4KyspIHsKPiA+ID4gICAJCQkJZGF0YS0+Zm9ybWF0LmR3b3JkID0gbW9k ZVBsYW5lLQo+ID4gPiA+IGZvcm1hdHNbbW9kZWluZGV4XTsKPiA+ID4gCj4gPiA+ICAgCj4gPiA+ IC0JCQkJaWd0X2luZm8oIlRlc3RpbmcgY29ubmVjdG9yICVzIHVzaW5nCj4gPiA+IHBpcGUgJXMi IFwKPiA+ID4gLQkJCQkJICIgcGxhbmUgaW5kZXggJWQgdHlwZSAlcyBtb2RlCj4gPiA+ICVzXG4i LAo+ID4gPiAtCQkJCQkgaWd0X291dHB1dF9uYW1lKG91dHB1dCksCj4gPiA+IC0JCQkJCSBrbXN0 ZXN0X3BpcGVfbmFtZShwaXBlKSwKPiA+ID4gLQkJCQkJIHBsYW5lLT5pbmRleCwKPiA+ID4gLQkJ CQkJIHBsYW5ldHlwZVtwbGFuZS0+dHlwZV0sCj4gPiA+IC0JCQkJCSAoY2hhciopJmRhdGEtPmZv cm1hdC5uYW1lKTsKPiA+IAo+ID4gTm90IHN1cmUgd2h5IHRoaXMgd2FzIHJlbW92ZWQsIHBlcmhh cHMgY29udmVydCBpdCB0byBpZ3RfZGVidWcoKT8KPiA+IEl0J3MKPiA+IGhhcmQgdG8gdGVsbCB3 aGF0IGlzIGJlaW5nIHRlc3RlZCBub3cgZXZlbiB3aXRoIHRoZSAtLWRlYnVnIG9wdGlvbi4KPiAK PiBJIGRpZCBjb25zaWRlciB0aGlzIGFzIHRvbyB2ZXJib3NlLiBBYm92ZSB3aGVyZSBjcmNzIGFy ZSBjb21wYXJlZCAKPiB0aGVyZSdzIHByaW50ZWQgd2hhdCBmYWlsZWQgd2l0aCBtb3JlIGRldGFp bCB0aGFuIGhlcmUuCj4gCj4gPiAKPiA+IElmIHlvdSB3YW50IHRvIGFkZHJlc3MgdGhlIGNvbW1l bnRzIGluIGEgc2VwYXJhdGUgcGF0Y2gsIGZlZWwgZnJlZQo+ID4gdG8KPiA+IGFkZAo+ID4gUmV2 aWV3ZWQtYnk6IERoaW5ha2FyYW4gUGFuZGl5YW4gPGRoaW5ha2FyYW4ucGFuZGl5YW5AaW50ZWwu Y29tPgo+IAo+IEknbSBnb2luZyB0byBoYXZlIGZldyBDSSBydW5zIHdpdGggZXZvbHZpbmcgdGhp cyBwYXRjaCBzdGlsbC4KPiAKPiBJIGZvdW5kIHRpbWluZyBlcnJvciBvbiB0aGlzIHRlc3QsIGl0 IGlzIG1vc3QgbGlrZWx5IHdoYXQgaXMgY2F1c2luZwo+IHRoZSAKPiBub2lzZSBmcm9tIHRoaXMg dGVzdCBpbiBDSSBydW5zLiBJIHNvbWVob3cgbmV2ZXIgc2VlIGl0IG9uIGFueSBvZiBteQo+IG93 biAKPiBjb21wdXRlcnMgYnV0IHJlYWxpemVkIGl0IGZyb20gdGhlIGxvZ2ljIGFuZCBmaXJzdCBh dHRlbXB0IHRvCj4gbWl0aWdhdGUgCj4gaXQgY2hhbmdlZCBDSSByZXN1bHRzIGZvciB0aGUgYmV0 dGVyIHNvIEknbGwgZ2V0IHRoYXQgZml4ZWQuCj4gCj4gL0p1aGEtUGVra2EKPiAKPiA+IAo+ID4g Cj4gPiA+IC0KPiA+ID4gICAJCQkJaW52YWxpZHMgKz0gdGVzdF9vbmVfbW9kZShkYXRhLAo+ID4g PiBvdXRwdXQsCj4gPiA+ICAgCQkJCQkJCSAgcGxhbmUKPiA+ID4gLAo+ID4gPiAtCQkJCQkJCSAg bW9kZVBsYW5lLQo+ID4gPiA+IGZvcm1hdHNbbW9kZWluZGV4XSk7Cj4gPiA+IAo+ID4gPiArCQkJ CQkJCSAgbW9kZVBsYW5lLQo+ID4gPiA+IGZvcm1hdHNbbW9kZWluZGV4XSwKPiA+ID4gCj4gPiA+ ICsJCQkJCQkJICBwaXBlKTsKPiA+ID4gICAJCQl9Cj4gPiA+ICAgCQkJZHJtTW9kZUZyZWVQbGFu ZShtb2RlUGxhbmUpOwo+ID4gPiAgIAkJfQo+ID4gPiAgIAkJaWd0X3BpcGVfY3JjX3N0b3AoZGF0 YS0+cGlwZV9jcmMpOwo+ID4gPiAgIAkJaWd0X3BpcGVfY3JjX2ZyZWUoZGF0YS0+cGlwZV9jcmMp Owo+ID4gPiAtCQlpZ3RfZGlzcGxheV9jb21taXQyKCZkYXRhLT5kaXNwbGF5LCBkYXRhLT5jb21t aXQpOwo+ID4gPiArCj4gPiA+ICsJCWlmIChsdXQgIT0gTlVMTCkgewo+ID4gPiArCQkJaWd0X3Bp cGVfcmVwbGFjZV9wcm9wX2Jsb2IoJmRhdGEtPmRpc3BsYXksCj4gPiA+IHBpcGUsCj4gPiA+ICsJ CQkJCQkgICBJR1RfQ1JUQ19HQU1NQV9MVVQsCj4gPiA+ICsJCQkJCQkgICBsdXQsIHNpemVvZigq bHV0KSAqCj4gPiA+IGx1dF9zaXplKTsKPiA+ID4gKwkJCWZyZWUobHV0KTsKPiA+ID4gKwkJCWx1 dCA9IE5VTEw7Cj4gPiA+ICsJCX0KPiA+ID4gKwo+ID4gPiAgIAkJaWd0X291dHB1dF9zZXRfcGlw ZShvdXRwdXQsIFBJUEVfTk9ORSk7Cj4gPiA+ICsJCWlndF9kaXNwbGF5X2NvbW1pdDIoJmRhdGEt PmRpc3BsYXksIGRhdGEtPmNvbW1pdCk7Cj4gPiA+ICAgCX0KPiA+ID4gICAJaWd0X2Fzc2VydChp bnZhbGlkcyA9PSAwKTsKPiA+ID4gICB9Cj4gCj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2lndC1kZXY=