From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 103C16E385 for ; Thu, 28 Mar 2019 10:53:35 +0000 (UTC) References: <20190327092930.6845-1-maarten.lankhorst@linux.intel.com> <20190327092930.6845-3-maarten.lankhorst@linux.intel.com> <20190327172018.GG3888@intel.com> From: Maarten Lankhorst Message-ID: <7fbe4ba1-1e7d-bc47-8e9b-e89e5299aab9@linux.intel.com> Date: Thu, 28 Mar 2019 11:53:31 +0100 MIME-Version: 1.0 In-Reply-To: <20190327172018.GG3888@intel.com> Content-Language: en-US Subject: Re: [igt-dev] [PATCH i-g-t 2/3] lib/igt_fb: Add support for Y410/Y416 formats, v4. 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: =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= Cc: igt-dev@lists.freedesktop.org List-ID: T3AgMjctMDMtMjAxOSBvbSAxODoyMCBzY2hyZWVmIFZpbGxlIFN5cmrDpGzDpDoKPiBPbiBXZWQs IE1hciAyNywgMjAxOSBhdCAxMDoyOToyOUFNICswMTAwLCBNYWFydGVuIExhbmtob3JzdCB3cm90 ZToKPj4gWTQxMCBpcyBwYWNrZWQgd2l0aCBjb21wcmVzc2VkIGEgY2hhbm5lbCBhbmQgb25seSAz MiBicHAsIGxpa2UKPj4gMTAgYml0cyBSR0IgZm9ybWF0cy4gWTQxNiBpcyBhIHBhY2tlZCAxNiBi aXRzIHBlciBjb21wb25lbnQgZm9ybWF0Lgo+Pgo+PiBDaGFuZ2VzIHNpbmNlIHYxOgo+PiAtIFJl YmFzZSBvbiB0b3Agb2YgdXBzdHJlYW0gWVVWIGNoYW5nZXMuCj4+IENoYW5nZXMgc2luY2UgdjI6 Cj4+IC0gRGlzY2FyZCBhbHBoYSBjaGFubmVsLCBub3QgdXNlZCB1cHN0cmVhbS4KPj4gQ2hhbmdl cyBzaW5jZSB2MzoKPj4gLSBIYW5kbGUgdGhlIFhWWVUgZm9ybWF0cyBhbmQgWTQxeCBmb3JtYXRz IGNvcnJlY3RseS4KPj4KPj4gU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0 ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPj4gLS0tCj4+ICBsaWIvaWd0X2NvbG9yX2Vu Y29kaW5nLmMgfCAgIDYgKwo+PiAgbGliL2lndF9mYi5jICAgICAgICAgICAgIHwgMjYzICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQo+PiAgMiBmaWxlcyBjaGFuZ2VkLCAy NDQgaW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9saWIv aWd0X2NvbG9yX2VuY29kaW5nLmMgYi9saWIvaWd0X2NvbG9yX2VuY29kaW5nLmMKPj4gaW5kZXgg OWY5ZGMxNDM5ZWU0Li43ZGU2ZDVhYmQ2OTAgMTAwNjQ0Cj4+IC0tLSBhL2xpYi9pZ3RfY29sb3Jf ZW5jb2RpbmcuYwo+PiArKysgYi9saWIvaWd0X2NvbG9yX2VuY29kaW5nLmMKPj4gQEAgLTE1NCw2 ICsxNTQsMTIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjb2xvcl9lbmNvZGluZ19mb3JtYXQgewo+ PiAgCXsgRFJNX0ZPUk1BVF9ZMjEwLCA2NTQ3Mi5mLCA0MDk2LmYsIDYwMTYwLmYsIDQwOTYuZiwg MzI3NjguZiwgNjE0NDAuZiB9LAo+PiAgCXsgRFJNX0ZPUk1BVF9ZMjEyLCA2NTUyMC5mLCA0MDk2 LmYsIDYwMTYwLmYsIDQwOTYuZiwgMzI3NjguZiwgNjE0NDAuZiB9LAo+PiAgCXsgRFJNX0ZPUk1B VF9ZMjE2LCA2NTUzNS5mLCA0MDk2LmYsIDYwMTYwLmYsIDQwOTYuZiwgMzI3NjguZiwgNjE0NDAu ZiB9LAo+PiArCXsgRFJNX0ZPUk1BVF9ZNDEwLCAxMDIzLmYsIDY0LmYsIDk0MC5mLCA2NC5mLCA1 MTIuZiwgOTYwLmYgfSwKPj4gKwl7IERSTV9GT1JNQVRfWTQxMiwgNjU1MjAuZiwgNDA5Ni5mLCA2 MDE2MC5mLCA0MDk2LmYsIDMyNzY4LmYsIDYxNDQwLmYgfSwKPj4gKwl7IERSTV9GT1JNQVRfWTQx NiwgNjU1MzUuZiwgNDA5Ni5mLCA2MDE2MC5mLCA0MDk2LmYsIDMyNzY4LmYsIDYxNDQwLmYgfSwK Pj4gKwl7IERSTV9GT1JNQVRfWFZZVTIxMDEwMTAsIDEwMjMuZiwgNjQuZiwgOTQwLmYsIDY0LmYs IDUxMi5mLCA5NjAuZiB9LAo+PiArCXsgRFJNX0ZPUk1BVF9YVllVMTJfMTYxNjE2MTYsIDY1NTIw LmYsIDQwOTYuZiwgNjAxNjAuZiwgNDA5Ni5mLCAzMjc2OC5mLCA2MTQ0MC5mIH0sCj4+ICsJeyBE Uk1fRk9STUFUX1hWWVUxNjE2MTYxNiwgNjU1MzUuZiwgNDA5Ni5mLCA2MDE2MC5mLCA0MDk2LmYs IDMyNzY4LmYsIDYxNDQwLmYgfSwKPj4gIH07Cj4+ICAKPj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg Y29sb3JfZW5jb2RpbmdfZm9ybWF0ICpsb29rdXBfZm91cmNjKHVpbnQzMl90IGZvdXJjYykKPj4g ZGlmZiAtLWdpdCBhL2xpYi9pZ3RfZmIuYyBiL2xpYi9pZ3RfZmIuYwo+PiBpbmRleCAxZTBiY2I5 ZWEyY2QuLjJkNTU2ODdhN2FhMyAxMDA2NDQKPj4gLS0tIGEvbGliL2lndF9mYi5jCj4+ICsrKyBi L2xpYi9pZ3RfZmIuYwo+PiBAQCAtMjIxLDYgKzIyMSwzNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IGZvcm1hdF9kZXNjX3N0cnVjdCB7Cj4+ICAJICAubnVtX3BsYW5lcyA9IDMsIC5wbGFuZV9icHAg PSB7IDgsIDgsIDgsIH0sCj4+ICAJICAuaHN1YiA9IDIsIC52c3ViID0gMSwKPj4gIAl9LAo+PiAr CXsgLm5hbWUgPSAiWTQxMCIsIC5kZXB0aCA9IC0xLCAuZHJtX2lkID0gRFJNX0ZPUk1BVF9ZNDEw LAo+PiArCSAgLmNhaXJvX2lkID0gQ0FJUk9fRk9STUFUX1JHQkExMjhGLAo+PiArCSAgLm51bV9w bGFuZXMgPSAxLCAucGxhbmVfYnBwID0geyAzMiwgfSwKPj4gKwkgIC5oc3ViID0gMSwgLnZzdWIg PSAxLAo+PiArCX0sCj4+ICsJeyAubmFtZSA9ICJZNDEyIiwgLmRlcHRoID0gLTEsIC5kcm1faWQg PSBEUk1fRk9STUFUX1k0MTIsCj4+ICsJICAuY2Fpcm9faWQgPSBDQUlST19GT1JNQVRfUkdCQTEy OEYsCj4+ICsJICAubnVtX3BsYW5lcyA9IDEsIC5wbGFuZV9icHAgPSB7IDY0LCB9LAo+PiArCSAg LmhzdWIgPSAxLCAudnN1YiA9IDEsCj4+ICsJfSwKPj4gKwl7IC5uYW1lID0gIlk0MTYiLCAuZGVw dGggPSAtMSwgLmRybV9pZCA9IERSTV9GT1JNQVRfWTQxNiwKPj4gKwkgIC5jYWlyb19pZCA9IENB SVJPX0ZPUk1BVF9SR0JBMTI4RiwKPj4gKwkgIC5udW1fcGxhbmVzID0gMSwgLnBsYW5lX2JwcCA9 IHsgNjQsIH0sCj4+ICsJICAuaHN1YiA9IDEsIC52c3ViID0gMSwKPj4gKwl9LAo+PiArCXsgLm5h bWUgPSAiWFYzMCIsIC5kZXB0aCA9IC0xLCAuZHJtX2lkID0gRFJNX0ZPUk1BVF9YVllVMjEwMTAx MCwKPj4gKwkgIC5jYWlyb19pZCA9IENBSVJPX0ZPUk1BVF9SR0I5NkYsCj4+ICsJICAubnVtX3Bs YW5lcyA9IDEsIC5wbGFuZV9icHAgPSB7IDMyLCB9LAo+PiArCSAgLmhzdWIgPSAxLCAudnN1YiA9 IDEsCj4+ICsJfSwKPj4gKwl7IC5uYW1lID0gIlhWMzYiLCAuZGVwdGggPSAtMSwgLmRybV9pZCA9 IERSTV9GT1JNQVRfWFZZVTEyXzE2MTYxNjE2LAo+PiArCSAgLmNhaXJvX2lkID0gQ0FJUk9fRk9S TUFUX1JHQjk2RiwKPj4gKwkgIC5udW1fcGxhbmVzID0gMSwgLnBsYW5lX2JwcCA9IHsgNjQsIH0s Cj4+ICsJICAuaHN1YiA9IDEsIC52c3ViID0gMSwKPj4gKwl9LAo+PiArCXsgLm5hbWUgPSAiWFY0 OCIsIC5kZXB0aCA9IC0xLCAuZHJtX2lkID0gRFJNX0ZPUk1BVF9YVllVMTYxNjE2MTYsCj4+ICsJ ICAuY2Fpcm9faWQgPSBDQUlST19GT1JNQVRfUkdCOTZGLAo+PiArCSAgLm51bV9wbGFuZXMgPSAx LCAucGxhbmVfYnBwID0geyA2NCwgfSwKPj4gKwkgIC5oc3ViID0gMSwgLnZzdWIgPSAxLAo+PiAr CX0sCj4+ICAJeyAubmFtZSA9ICJQMDEwIiwgLmRlcHRoID0gLTEsIC5kcm1faWQgPSBEUk1fRk9S TUFUX1AwMTAsCj4+ICAJICAuY2Fpcm9faWQgPSBDQUlST19GT1JNQVRfUkdCOTZGLAo+PiAgCSAg Lm51bV9wbGFuZXMgPSAyLCAucGxhbmVfYnBwID0geyAxNiwgMzIgfSwKPj4gQEAgLTY4NCw2ICs3 MTQsMzMgQEAgc3RhdGljIHZvaWQgY2xlYXJfeXV2X2J1ZmZlcihzdHJ1Y3QgaWd0X2ZiICpmYikK Pj4gIAkJCWZiLT5zdHJpZGVzWzBdICogZmItPnBsYW5lX2hlaWdodFswXSAvIHNpemVvZih3Y2hh cl90KSk7Cj4+ICAJCWJyZWFrOwo+PiAgCj4+ICsJY2FzZSBEUk1fRk9STUFUX1hWWVUyMTAxMDEw Ogo+PiArCWNhc2UgRFJNX0ZPUk1BVF9ZNDEwOgo+PiArCQl3bWVtc2V0KHB0ciArIGZiLT5vZmZz ZXRzWzBdLAo+PiArCQkJZnVsbF9yYW5nZSA/IDB4ZTAwMDAyMDAgOiAweGUwMDEwMjAwLAo+IEZv ciBldmVyeXRoaW5nIGVsc2Ugd2UgbGVhdmUgYWxwaGEgemVyb2VkLgpJbmRlZWQsIGxvb2tzIG1v cmUgbGlrZSBhIGJ1ZyB0aGF0IHdlIGRvLiBCdXQgb2ggd2VsbCBjYW4gYWx3YXlzIGtlZXAgaXQg MC4KPgo+PiArCQlmYi0+c3RyaWRlc1swXSAqIGZiLT5wbGFuZV9oZWlnaHRbMF0gLyBzaXplb2Yo d2NoYXJfdCkpOwo+PiArCQlicmVhazsKPj4gKwo+PiArCWNhc2UgRFJNX0ZPUk1BVF9YVllVMTJf MTYxNjE2MTY6Cj4+ICsJY2FzZSBEUk1fRk9STUFUX1hWWVUxNjE2MTYxNjoKPj4gKwljYXNlIERS TV9GT1JNQVRfWTQxMjoKPj4gKwljYXNlIERSTV9GT1JNQVRfWTQxNjogewo+PiArCQlzdHJ1Y3Qg YXl1djE2IHsgdWludDE2X3QgdSwgeSwgdiwgYTsgfTsKPj4gKwkJY29uc3Qgc3RydWN0IGF5dXYx NiBwaXhlbCA9IHsKPj4gKwkJCS5hID0gMHhmZmZmLAo+PiArCQkJLnYgPSBmdWxsX3JhbmdlID8g MCA6IDB4MTAwMCwKPj4gKwkJCS55ID0gMHg4MDAwLAo+PiArCQkJLnUgPSBmdWxsX3JhbmdlID8g MCA6IDB4MTAwMAo+PiArCQl9Owo+PiArCj4+ICsJCWZvciAoaW50IGkgPSAwOyBpIDwgZmItPnBs YW5lX2hlaWdodFswXTsgaSsrKSB7Cj4+ICsJCQlzdHJ1Y3QgYXl1djE2ICpjdXIgPSBwdHIgKyBm Yi0+b2Zmc2V0c1swXSArIGZiLT5zdHJpZGVzWzBdICogaTsKPj4gKwo+PiArCQkJZm9yIChpbnQg aiA9IDA7IGogPCBmYi0+cGxhbmVfd2lkdGhbMF07IGorKykKPj4gKwkJCQkqY3VyKysgPSBwaXhl bDsKPj4gKwkJfQo+IE1heWJlIHdlIHdhbnQgYSBtZW1zZXQ2NCgpPwpDb3VsZCBiZSB1c2VmdWwu Cj4KPj4gKwkJYnJlYWs7Cj4+ICsJCX0KPj4gIAl9Cj4+ICAKPj4gIAlpZ3RfZmJfdW5tYXBfYnVm ZmVyKGZiLCBwdHIpOwo+PiBAQCAtMTg5NywxMCArMTk1NCwxMSBAQCBzdGF0aWMgdm9pZCBjb252 ZXJ0X3NyY19wdXQoY29uc3Qgc3RydWN0IGZiX2NvbnZlcnQgKmN2dCwKPj4gIH0KPj4gIAo+PiAg c3RydWN0IHl1dl9wYXJhbWV0ZXJzIHsKPj4gLQl1bnNpZ25lZAl5X2luYzsKPj4gKwl1bnNpZ25l ZAlheV9pbmM7Cj4+ICAJdW5zaWduZWQJdXZfaW5jOwo+PiAtCXVuc2lnbmVkCXlfc3RyaWRlOwo+ PiArCXVuc2lnbmVkCWF5X3N0cmlkZTsKPj4gIAl1bnNpZ25lZAl1dl9zdHJpZGU7Cj4+ICsJdW5z aWduZWQJYV9vZmZzZXQ7Cj4+ICAJdW5zaWduZWQJeV9vZmZzZXQ7Cj4+ICAJdW5zaWduZWQJdV9v ZmZzZXQ7Cj4+ICAJdW5zaWduZWQJdl9vZmZzZXQ7Cj4+IEBAIC0xOTE4LDcgKzE5NzYsNyBAQCBz dGF0aWMgdm9pZCBnZXRfeXV2X3BhcmFtZXRlcnMoc3RydWN0IGlndF9mYiAqZmIsIHN0cnVjdCB5 dXZfcGFyYW1ldGVycyAqcGFyYW1zKQo+PiAgCWNhc2UgRFJNX0ZPUk1BVF9QMDEwOgo+PiAgCWNh c2UgRFJNX0ZPUk1BVF9QMDEyOgo+PiAgCWNhc2UgRFJNX0ZPUk1BVF9QMDE2Ogo+PiAtCQlwYXJh bXMtPnlfaW5jID0gMTsKPj4gKwkJcGFyYW1zLT5heV9pbmMgPSAxOwo+PiAgCQlwYXJhbXMtPnV2 X2luYyA9IDI7Cj4+ICAJCWJyZWFrOwo+PiAgCj4+IEBAIC0xOTI2LDcgKzE5ODQsNyBAQCBzdGF0 aWMgdm9pZCBnZXRfeXV2X3BhcmFtZXRlcnMoc3RydWN0IGlndF9mYiAqZmIsIHN0cnVjdCB5dXZf cGFyYW1ldGVycyAqcGFyYW1zKQo+PiAgCWNhc2UgRFJNX0ZPUk1BVF9ZVVY0MjI6Cj4+ICAJY2Fz ZSBEUk1fRk9STUFUX1lWVTQyMDoKPj4gIAljYXNlIERSTV9GT1JNQVRfWVZVNDIyOgo+PiAtCQlw YXJhbXMtPnlfaW5jID0gMTsKPj4gKwkJcGFyYW1zLT5heV9pbmMgPSAxOwo+PiAgCQlwYXJhbXMt PnV2X2luYyA9IDE7Cj4+ICAJCWJyZWFrOwo+PiAgCj4+IEBAIC0xOTM3LDEyICsxOTk1LDE2IEBA IHN0YXRpYyB2b2lkIGdldF95dXZfcGFyYW1ldGVycyhzdHJ1Y3QgaWd0X2ZiICpmYiwgc3RydWN0 IHl1dl9wYXJhbWV0ZXJzICpwYXJhbXMpCj4+ICAJY2FzZSBEUk1fRk9STUFUX1kyMTA6Cj4+ICAJ Y2FzZSBEUk1fRk9STUFUX1kyMTI6Cj4+ICAJY2FzZSBEUk1fRk9STUFUX1kyMTY6Cj4+IC0JCXBh cmFtcy0+eV9pbmMgPSAyOwo+PiArCQlwYXJhbXMtPmF5X2luYyA9IDI7Cj4+ICAJCXBhcmFtcy0+ dXZfaW5jID0gNDsKPj4gIAkJYnJlYWs7Cj4+ICAKPj4gKwljYXNlIERSTV9GT1JNQVRfWFZZVTEy XzE2MTYxNjE2Ogo+PiArCWNhc2UgRFJNX0ZPUk1BVF9YVllVMTYxNjE2MTY6Cj4+ICsJY2FzZSBE Uk1fRk9STUFUX1k0MTI6Cj4+ICsJY2FzZSBEUk1fRk9STUFUX1k0MTY6Cj4+ICAJY2FzZSBEUk1f Rk9STUFUX1hZVVY4ODg4Ogo+PiAtCQlwYXJhbXMtPnlfaW5jID0gNDsKPj4gKwkJcGFyYW1zLT5h eV9pbmMgPSA0Owo+PiAgCQlwYXJhbXMtPnV2X2luYyA9IDQ7Cj4+ICAJCWJyZWFrOwo+PiAgCX0K Pj4gQEAgLTE5NTksNyArMjAyMSw3IEBAIHN0YXRpYyB2b2lkIGdldF95dXZfcGFyYW1ldGVycyhz dHJ1Y3QgaWd0X2ZiICpmYiwgc3RydWN0IHl1dl9wYXJhbWV0ZXJzICpwYXJhbXMpCj4+ICAJY2Fz ZSBEUk1fRk9STUFUX1AwMTA6Cj4+ICAJY2FzZSBEUk1fRk9STUFUX1AwMTI6Cj4+ICAJY2FzZSBE Uk1fRk9STUFUX1AwMTY6Cj4+IC0JCXBhcmFtcy0+eV9zdHJpZGUgPSBmYi0+c3RyaWRlc1swXTsK Pj4gKwkJcGFyYW1zLT5heV9zdHJpZGUgPSBmYi0+c3RyaWRlc1swXTsKPj4gIAkJcGFyYW1zLT51 dl9zdHJpZGUgPSBmYi0+c3RyaWRlc1sxXTsKPj4gIAkJYnJlYWs7Cj4+ICAKPj4gQEAgLTE5NzEs NyArMjAzMywxMSBAQCBzdGF0aWMgdm9pZCBnZXRfeXV2X3BhcmFtZXRlcnMoc3RydWN0IGlndF9m YiAqZmIsIHN0cnVjdCB5dXZfcGFyYW1ldGVycyAqcGFyYW1zKQo+PiAgCWNhc2UgRFJNX0ZPUk1B VF9ZMjEyOgo+PiAgCWNhc2UgRFJNX0ZPUk1BVF9ZMjE2Ogo+PiAgCWNhc2UgRFJNX0ZPUk1BVF9Y WVVWODg4ODoKPj4gLQkJcGFyYW1zLT55X3N0cmlkZSA9IGZiLT5zdHJpZGVzWzBdOwo+PiArCWNh c2UgRFJNX0ZPUk1BVF9YVllVMTJfMTYxNjE2MTY6Cj4+ICsJY2FzZSBEUk1fRk9STUFUX1hWWVUx NjE2MTYxNjoKPj4gKwljYXNlIERSTV9GT1JNQVRfWTQxMjoKPj4gKwljYXNlIERSTV9GT1JNQVRf WTQxNjoKPj4gKwkJcGFyYW1zLT5heV9zdHJpZGUgPSBmYi0+c3RyaWRlc1swXTsKPj4gIAkJcGFy YW1zLT51dl9zdHJpZGUgPSBmYi0+c3RyaWRlc1swXTsKPj4gIAkJYnJlYWs7Cj4+ICAJfQo+PiBA QCAtMjA0NSw2ICsyMTExLDE2IEBAIHN0YXRpYyB2b2lkIGdldF95dXZfcGFyYW1ldGVycyhzdHJ1 Y3QgaWd0X2ZiICpmYiwgc3RydWN0IHl1dl9wYXJhbWV0ZXJzICpwYXJhbXMpCj4+ICAJCXBhcmFt cy0+dl9vZmZzZXQgPSBmYi0+b2Zmc2V0c1swXSArIDY7Cj4+ICAJCWJyZWFrOwo+PiAgCj4+ICsJ Y2FzZSBEUk1fRk9STUFUX1hWWVUxMl8xNjE2MTYxNjoKPj4gKwljYXNlIERSTV9GT1JNQVRfWFZZ VTE2MTYxNjE2Ogo+PiArCWNhc2UgRFJNX0ZPUk1BVF9ZNDEyOgo+PiArCWNhc2UgRFJNX0ZPUk1B VF9ZNDE2Ogo+PiArCQlwYXJhbXMtPmFfb2Zmc2V0ID0gZmItPm9mZnNldHNbMF0gKyA2Owo+PiAr CQlwYXJhbXMtPnlfb2Zmc2V0ID0gZmItPm9mZnNldHNbMF0gKyAyOwo+PiArCQlwYXJhbXMtPnVf b2Zmc2V0ID0gZmItPm9mZnNldHNbMF07Cj4+ICsJCXBhcmFtcy0+dl9vZmZzZXQgPSBmYi0+b2Zm c2V0c1swXSArIDQ7Cj4+ICsJCWJyZWFrOwo+PiArCj4+ICAJY2FzZSBEUk1fRk9STUFUX1hZVVY4 ODg4Ogo+PiAgCQlwYXJhbXMtPnlfb2Zmc2V0ID0gZmItPm9mZnNldHNbMF0gKyAxOwo+PiAgCQlw YXJhbXMtPnVfb2Zmc2V0ID0gZmItPm9mZnNldHNbMF0gKyAyOwo+PiBAQCAtMjA5Niw3ICsyMTcy LDcgQEAgc3RhdGljIHZvaWQgY29udmVydF95dXZfdG9fcmdiMjQoc3RydWN0IGZiX2NvbnZlcnQg KmN2dCkKPj4gIAkJCXdyaXRlX3JnYihyZ2JfdG1wLCAmcmdiKTsKPj4gIAo+PiAgCQkJcmdiX3Rt cCArPSBicHA7Cj4+IC0JCQl5X3RtcCArPSBwYXJhbXMueV9pbmM7Cj4+ICsJCQl5X3RtcCArPSBw YXJhbXMuYXlfaW5jOwo+PiAgCj4+ICAJCQlpZiAoKHNyY19mbXQtPmhzdWIgPT0gMSkgfHwgKGog JSBzcmNfZm10LT5oc3ViKSkgewo+PiAgCQkJCXVfdG1wICs9IHBhcmFtcy51dl9pbmM7Cj4+IEBA IC0yMTA1LDcgKzIxODEsNyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0X3l1dl90b19yZ2IyNChzdHJ1 Y3QgZmJfY29udmVydCAqY3Z0KQo+PiAgCQl9Cj4+ICAKPj4gIAkJcmdiMjQgKz0gcmdiMjRfc3Ry aWRlOwo+PiAtCQl5ICs9IHBhcmFtcy55X3N0cmlkZTsKPj4gKwkJeSArPSBwYXJhbXMuYXlfc3Ry aWRlOwo+PiAgCj4+ICAJCWlmICgoc3JjX2ZtdC0+dnN1YiA9PSAxKSB8fCAoaSAlIHNyY19mbXQt PnZzdWIpKSB7Cj4+ICAJCQl1ICs9IHBhcmFtcy51dl9zdHJpZGU7Cj4+IEBAIC0yMTU2LDcgKzIy MzIsNyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0X3JnYjI0X3RvX3l1dihzdHJ1Y3QgZmJfY29udmVy dCAqY3Z0KQo+PiAgCQkJcmdiX3RtcCArPSBicHA7Cj4+ICAKPj4gIAkJCSp5X3RtcCA9IHl1di5k WzBdOwo+PiAtCQkJeV90bXAgKz0gcGFyYW1zLnlfaW5jOwo+PiArCQkJeV90bXAgKz0gcGFyYW1z LmF5X2luYzsKPj4gIAo+PiAgCQkJaWYgKChpICUgZHN0X2ZtdC0+dnN1YikgfHwgKGogJSBkc3Rf Zm10LT5oc3ViKSkKPj4gIAkJCQljb250aW51ZTsKPj4gQEAgLTIxOTMsNyArMjI2OSw3IEBAIHN0 YXRpYyB2b2lkIGNvbnZlcnRfcmdiMjRfdG9feXV2KHN0cnVjdCBmYl9jb252ZXJ0ICpjdnQpCj4+ ICAJCX0KPj4gIAo+PiAgCQlyZ2IyNCArPSByZ2IyNF9zdHJpZGU7Cj4+IC0JCXkgKz0gcGFyYW1z Lnlfc3RyaWRlOwo+PiArCQl5ICs9IHBhcmFtcy5heV9zdHJpZGU7Cj4+ICAKPj4gIAkJaWYgKChp ICUgZHN0X2ZtdC0+dnN1YikgPT0gKGRzdF9mbXQtPnZzdWIgLSAxKSkgewo+PiAgCQkJdSArPSBw YXJhbXMudXZfc3RyaWRlOwo+PiBAQCAtMjIxNywxMyArMjI5MywxMyBAQCBzdGF0aWMgdm9pZCB3 cml0ZV9yZ2JmKGZsb2F0ICpyZ2IyNCwgY29uc3Qgc3RydWN0IGlndF92ZWM0ICpyZ2IpCj4+ICAJ cmdiMjRbMl0gPSByZ2ItPmRbMl07Cj4+ICB9Cj4+ICAKPj4gLXN0YXRpYyB2b2lkIGNvbnZlcnRf eXV2MTZfdG9fZmxvYXQoc3RydWN0IGZiX2NvbnZlcnQgKmN2dCkKPj4gK3N0YXRpYyB2b2lkIGNv bnZlcnRfeXV2MTZfdG9fZmxvYXQoc3RydWN0IGZiX2NvbnZlcnQgKmN2dCwgYm9vbCBhbHBoYSkK Pj4gIHsKPj4gIAljb25zdCBzdHJ1Y3QgZm9ybWF0X2Rlc2Nfc3RydWN0ICpzcmNfZm10ID0KPj4g IAkJbG9va3VwX2RybV9mb3JtYXQoY3Z0LT5zcmMuZmItPmRybV9mb3JtYXQpOwo+PiAgCWludCBp LCBqOwo+PiAtCXVpbnQ4X3QgZnBwID0gMzsKPj4gLQl1aW50MTZfdCAqeSwgKnUsICp2Owo+PiAr CXVpbnQ4X3QgZnBwID0gYWxwaGEgPyA0IDogMzsKPj4gKwl1aW50MTZfdCAqYSwgKnksICp1LCAq djsKPj4gIAlmbG9hdCAqcHRyID0gY3Z0LT5kc3QucHRyOwo+PiAgCXVuc2lnbmVkIGludCBmbG9h dF9zdHJpZGUgPSBjdnQtPmRzdC5mYi0+c3RyaWRlc1swXSAvIHNpemVvZigqcHRyKTsKPj4gIAlz dHJ1Y3QgaWd0X21hdDQgbSA9IGlndF95Y2Jjcl90b19yZ2JfbWF0cml4KGN2dC0+c3JjLmZiLT5k cm1fZm9ybWF0LAo+PiBAQCAtMjI0MiwxMSArMjMxOCwxMyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0 X3l1djE2X3RvX2Zsb2F0KHN0cnVjdCBmYl9jb252ZXJ0ICpjdnQpCj4+ICAJCSAgICEocGFyYW1z LnVfb2Zmc2V0ICUgc2l6ZW9mKCpidWYpKSAmJgo+PiAgCQkgICAhKHBhcmFtcy52X29mZnNldCAl IHNpemVvZigqYnVmKSkpOwo+PiAgCj4+ICsJYSA9IGJ1ZiArIHBhcmFtcy5hX29mZnNldCAvIHNp emVvZigqYnVmKTsKPj4gIAl5ID0gYnVmICsgcGFyYW1zLnlfb2Zmc2V0IC8gc2l6ZW9mKCpidWYp Owo+PiAgCXUgPSBidWYgKyBwYXJhbXMudV9vZmZzZXQgLyBzaXplb2YoKmJ1Zik7Cj4+ICAJdiA9 IGJ1ZiArIHBhcmFtcy52X29mZnNldCAvIHNpemVvZigqYnVmKTsKPj4gIAo+PiAgCWZvciAoaSA9 IDA7IGkgPCBjdnQtPmRzdC5mYi0+aGVpZ2h0OyBpKyspIHsKPj4gKwkJY29uc3QgdWludDE2X3Qg KmFfdG1wID0gYTsKPj4gIAkJY29uc3QgdWludDE2X3QgKnlfdG1wID0geTsKPj4gIAkJY29uc3Qg dWludDE2X3QgKnVfdG1wID0gdTsKPj4gIAkJY29uc3QgdWludDE2X3QgKnZfdG1wID0gdjsKPj4g QEAgLTIyNjMsOCArMjM0MSwxMyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0X3l1djE2X3RvX2Zsb2F0 KHN0cnVjdCBmYl9jb252ZXJ0ICpjdnQpCj4+ICAJCQlyZ2IgPSBpZ3RfbWF0cml4X3RyYW5zZm9y bSgmbSwgJnl1dik7Cj4+ICAJCQl3cml0ZV9yZ2JmKHJnYl90bXAsICZyZ2IpOwo+PiAgCj4+ICsJ CQlpZiAoYWxwaGEpIHsKPj4gKwkJCQlyZ2JfdG1wWzNdID0gKChmbG9hdCkqYV90bXApIC8gNjU1 MzUuZjsKPj4gKwkJCQlhX3RtcCArPSBwYXJhbXMuYXlfaW5jOwo+PiArCQkJfQo+PiArCj4+ICAJ CQlyZ2JfdG1wICs9IGZwcDsKPj4gLQkJCXlfdG1wICs9IHBhcmFtcy55X2luYzsKPj4gKwkJCXlf dG1wICs9IHBhcmFtcy5heV9pbmM7Cj4+ICAKPj4gIAkJCWlmICgoc3JjX2ZtdC0+aHN1YiA9PSAx KSB8fCAoaiAlIHNyY19mbXQtPmhzdWIpKSB7Cj4+ICAJCQkJdV90bXAgKz0gcGFyYW1zLnV2X2lu YzsKPj4gQEAgLTIyNzMsNyArMjM1Niw5IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRfeXV2MTZfdG9f ZmxvYXQoc3RydWN0IGZiX2NvbnZlcnQgKmN2dCkKPj4gIAkJfQo+PiAgCj4+ICAJCXB0ciArPSBm bG9hdF9zdHJpZGU7Cj4+IC0JCXkgKz0gcGFyYW1zLnlfc3RyaWRlIC8gc2l6ZW9mKCp5KTsKPj4g Kwo+PiArCQlhICs9IHBhcmFtcy5heV9zdHJpZGUgLyBzaXplb2YoKmEpOwo+PiArCQl5ICs9IHBh cmFtcy5heV9zdHJpZGUgLyBzaXplb2YoKnkpOwo+PiAgCj4+ICAJCWlmICgoc3JjX2ZtdC0+dnN1 YiA9PSAxKSB8fCAoaSAlIHNyY19mbXQtPnZzdWIpKSB7Cj4+ICAJCQl1ICs9IHBhcmFtcy51dl9z dHJpZGUgLyBzaXplb2YoKnUpOwo+PiBAQCAtMjI4NCwxNCArMjM2OSwxNCBAQCBzdGF0aWMgdm9p ZCBjb252ZXJ0X3l1djE2X3RvX2Zsb2F0KHN0cnVjdCBmYl9jb252ZXJ0ICpjdnQpCj4+ICAJY29u dmVydF9zcmNfcHV0KGN2dCwgYnVmKTsKPj4gIH0KPj4gIAo+PiAtc3RhdGljIHZvaWQgY29udmVy dF9mbG9hdF90b195dXYxNihzdHJ1Y3QgZmJfY29udmVydCAqY3Z0KQo+PiArc3RhdGljIHZvaWQg Y29udmVydF9mbG9hdF90b195dXYxNihzdHJ1Y3QgZmJfY29udmVydCAqY3Z0LCBib29sIGFscGhh KQo+PiAgewo+PiAgCWNvbnN0IHN0cnVjdCBmb3JtYXRfZGVzY19zdHJ1Y3QgKmRzdF9mbXQgPQo+ PiAgCQlsb29rdXBfZHJtX2Zvcm1hdChjdnQtPmRzdC5mYi0+ZHJtX2Zvcm1hdCk7Cj4+ICAJaW50 IGksIGo7Cj4+IC0JdWludDE2X3QgKnksICp1LCAqdjsKPj4gKwl1aW50MTZfdCAqYSwgKnksICp1 LCAqdjsKPj4gIAljb25zdCBmbG9hdCAqcHRyID0gY3Z0LT5zcmMucHRyOwo+PiAtCXVpbnQ4X3Qg ZnBwID0gMzsKPj4gKwl1aW50OF90IGZwcCA9IGFscGhhID8gNCA6IDM7Cj4+ICAJdW5zaWduZWQg ZmxvYXRfc3RyaWRlID0gY3Z0LT5zcmMuZmItPnN0cmlkZXNbMF0gLyBzaXplb2YoKnB0cik7Cj4+ ICAJc3RydWN0IGlndF9tYXQ0IG0gPSBpZ3RfcmdiX3RvX3ljYmNyX21hdHJpeChjdnQtPnNyYy5m Yi0+ZHJtX2Zvcm1hdCwKPj4gIAkJCQkJCSAgICBjdnQtPmRzdC5mYi0+ZHJtX2Zvcm1hdCwKPj4g QEAgLTIzMDMsMTYgKzIzODgsMTkgQEAgc3RhdGljIHZvaWQgY29udmVydF9mbG9hdF90b195dXYx NihzdHJ1Y3QgZmJfY29udmVydCAqY3Z0KQo+PiAgCQkgICBpZ3RfZm9ybWF0X2lzX3l1dihjdnQt PmRzdC5mYi0+ZHJtX2Zvcm1hdCkpOwo+PiAgCj4+ICAJZ2V0X3l1dl9wYXJhbWV0ZXJzKGN2dC0+ ZHN0LmZiLCAmcGFyYW1zKTsKPj4gLQlpZ3RfYXNzZXJ0KCEocGFyYW1zLnlfb2Zmc2V0ICUgc2l6 ZW9mKCp5KSkgJiYKPj4gKwlpZ3RfYXNzZXJ0KCEocGFyYW1zLmFfb2Zmc2V0ICUgc2l6ZW9mKCph KSkgJiYKPj4gKwkJICAgIShwYXJhbXMueV9vZmZzZXQgJSBzaXplb2YoKnkpKSAmJgo+PiAgCQkg ICAhKHBhcmFtcy51X29mZnNldCAlIHNpemVvZigqdSkpICYmCj4+ICAJCSAgICEocGFyYW1zLnZf b2Zmc2V0ICUgc2l6ZW9mKCp2KSkpOwo+PiAgCj4+ICsJYSA9IGN2dC0+ZHN0LnB0ciArIHBhcmFt cy5hX29mZnNldDsKPj4gIAl5ID0gY3Z0LT5kc3QucHRyICsgcGFyYW1zLnlfb2Zmc2V0Owo+PiAg CXUgPSBjdnQtPmRzdC5wdHIgKyBwYXJhbXMudV9vZmZzZXQ7Cj4+ICAJdiA9IGN2dC0+ZHN0LnB0 ciArIHBhcmFtcy52X29mZnNldDsKPj4gIAo+PiAgCWZvciAoaSA9IDA7IGkgPCBjdnQtPmRzdC5m Yi0+aGVpZ2h0OyBpKyspIHsKPj4gIAkJY29uc3QgZmxvYXQgKnJnYl90bXAgPSBwdHI7Cj4+ICsJ CXVpbnQxNl90ICphX3RtcCA9IGE7Cj4+ICAJCXVpbnQxNl90ICp5X3RtcCA9IHk7Cj4+ICAJCXVp bnQxNl90ICp1X3RtcCA9IHU7Cj4+ICAJCXVpbnQxNl90ICp2X3RtcCA9IHY7Cj4+IEBAIC0yMzI1 LDEwICsyNDEzLDE1IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRfZmxvYXRfdG9feXV2MTYoc3RydWN0 IGZiX2NvbnZlcnQgKmN2dCkKPj4gIAkJCXJlYWRfcmdiZigmcmdiLCByZ2JfdG1wKTsKPj4gIAkJ CXl1diA9IGlndF9tYXRyaXhfdHJhbnNmb3JtKCZtLCAmcmdiKTsKPj4gIAo+PiArCQkJaWYgKGFs cGhhKSB7Cj4+ICsJCQkJKmFfdG1wID0gcmdiX3RtcFszXSAqIDY1NTM1LmYgKyAuNWY7Cj4+ICsJ CQkJYV90bXAgKz0gcGFyYW1zLmF5X2luYzsKPj4gKwkJCX0KPj4gKwo+PiAgCQkJcmdiX3RtcCAr PSBmcHA7Cj4+ICAKPj4gIAkJCSp5X3RtcCA9IHl1di5kWzBdOwo+PiAtCQkJeV90bXAgKz0gcGFy YW1zLnlfaW5jOwo+PiArCQkJeV90bXAgKz0gcGFyYW1zLmF5X2luYzsKPj4gIAo+PiAgCQkJaWYg KChpICUgZHN0X2ZtdC0+dnN1YikgfHwgKGogJSBkc3RfZm10LT5oc3ViKSkKPj4gIAkJCQljb250 aW51ZTsKPj4gQEAgLTIzNjUsNyArMjQ1OCw4IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRfZmxvYXRf dG9feXV2MTYoc3RydWN0IGZiX2NvbnZlcnQgKmN2dCkKPj4gIAkJfQo+PiAgCj4+ICAJCXB0ciAr PSBmbG9hdF9zdHJpZGU7Cj4+IC0JCXkgKz0gcGFyYW1zLnlfc3RyaWRlIC8gc2l6ZW9mKCp5KTsK Pj4gKwkJYSArPSBwYXJhbXMuYXlfc3RyaWRlIC8gc2l6ZW9mKCphKTsKPj4gKwkJeSArPSBwYXJh bXMuYXlfc3RyaWRlIC8gc2l6ZW9mKCp5KTsKPj4gIAo+PiAgCQlpZiAoKGkgJSBkc3RfZm10LT52 c3ViKSA9PSAoZHN0X2ZtdC0+dnN1YiAtIDEpKSB7Cj4+ICAJCQl1ICs9IHBhcmFtcy51dl9zdHJp ZGUgLyBzaXplb2YoKnUpOwo+PiBAQCAtMjM3NCw2ICsyNDY4LDk1IEBAIHN0YXRpYyB2b2lkIGNv bnZlcnRfZmxvYXRfdG9feXV2MTYoc3RydWN0IGZiX2NvbnZlcnQgKmN2dCkKPj4gIAl9Cj4+ICB9 Cj4+ICAKPj4gK3N0YXRpYyB2b2lkIGNvbnZlcnRfWTQxMF90b19mbG9hdChzdHJ1Y3QgZmJfY29u dmVydCAqY3Z0LCBib29sIGFscGhhKQo+PiArewo+PiArCWludCBpLCBqOwo+PiArCWNvbnN0IHVp bnQzMl90ICp1eXY7Cj4+ICsJdWludDMyX3QgKmJ1ZjsKPj4gKwlmbG9hdCAqcHRyID0gY3Z0LT5k c3QucHRyOwo+PiArCXVuc2lnbmVkIGludCBmbG9hdF9zdHJpZGUgPSBjdnQtPmRzdC5mYi0+c3Ry aWRlc1swXSAvIHNpemVvZigqcHRyKTsKPj4gKwl1bnNpZ25lZCBpbnQgdXl2X3N0cmlkZSA9IGN2 dC0+c3JjLmZiLT5zdHJpZGVzWzBdIC8gc2l6ZW9mKCp1eXYpOwo+PiArCXN0cnVjdCBpZ3RfbWF0 NCBtID0gaWd0X3ljYmNyX3RvX3JnYl9tYXRyaXgoY3Z0LT5zcmMuZmItPmRybV9mb3JtYXQsCj4+ ICsJCQkJCQkgICAgY3Z0LT5kc3QuZmItPmRybV9mb3JtYXQsCj4+ICsJCQkJCQkgICAgY3Z0LT5z cmMuZmItPmNvbG9yX2VuY29kaW5nLAo+PiArCQkJCQkJICAgIGN2dC0+c3JjLmZiLT5jb2xvcl9y YW5nZSk7Cj4+ICsJdW5zaWduZWQgYnBwID0gYWxwaGEgPyA0IDogMzsKPj4gKwo+PiArCWlndF9h c3NlcnQoKGN2dC0+c3JjLmZiLT5kcm1fZm9ybWF0ID09IERSTV9GT1JNQVRfWTQxMCB8fAo+PiAr CQkgICAgY3Z0LT5zcmMuZmItPmRybV9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9YVllVMjEwMTAxMCkg JiYKPj4gKwkJICAgY3Z0LT5kc3QuZmItPmRybV9mb3JtYXQgPT0gSUdUX0ZPUk1BVF9GTE9BVCk7 Cj4+ICsKPj4gKwl1eXYgPSBidWYgPSBjb252ZXJ0X3NyY19nZXQoY3Z0KTsKPj4gKwo+PiArCWZv ciAoaSA9IDA7IGkgPCBjdnQtPmRzdC5mYi0+aGVpZ2h0OyBpKyspIHsKPj4gKwkJZm9yIChqID0g MDsgaiA8IGN2dC0+ZHN0LmZiLT53aWR0aDsgaisrKSB7Cj4+ICsJCQkvKiBDb252ZXJ0IDJ4MSBw aXhlbCBibG9ja3MgKi8KPj4gKwkJCXN0cnVjdCBpZ3RfdmVjNCB5dXY7Cj4+ICsJCQlzdHJ1Y3Qg aWd0X3ZlYzQgcmdiOwo+PiArCj4+ICsJCQl5dXYuZFswXSA9IHV5dltqXSAmIDB4M2ZmOwo+PiAr CQkJeXV2LmRbMV0gPSAodXl2W2pdID4+IDEwKSAmIDB4M2ZmOwo+PiArCQkJeXV2LmRbMl0gPSAo dXl2W2pdID4+IDIwKSAmIDB4M2ZmOwo+IFRoZXNlIHNlZW0gdG8gYmUgaW4gdGhlIHdyb25nIG9y ZGVyLiBBdCBsZWFzdCBJIHRoaW5rIHdlIHdhbnRlZAo+IFswXT15LCBbMV09Y2IsIFsyXT1jcgpZ ZXMuCj4+ICsJCQl5dXYuZFszXSA9IDEuZjsKPj4gKwo+PiArCQkJcmdiID0gaWd0X21hdHJpeF90 cmFuc2Zvcm0oJm0sICZ5dXYpOwo+PiArCj4+ICsJCQl3cml0ZV9yZ2JmKCZwdHJbaiAqIGJwcF0s ICZyZ2IpOwo+PiArCQkJaWYgKGFscGhhKQo+PiArCQkJCXB0cltqICogYnBwICsgM10gPSAoZmxv YXQpKHV5dltqXSA+PiAzMCkgLyAzLmY7Cj4+ICsJCX0KPj4gKwo+PiArCQlwdHIgKz0gZmxvYXRf c3RyaWRlOwo+PiArCQl1eXYgKz0gdXl2X3N0cmlkZTsKPj4gKwl9Cj4+ICsKPj4gKwljb252ZXJ0 X3NyY19wdXQoY3Z0LCBidWYpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZCBjb252ZXJ0X2Zs b2F0X3RvX1k0MTAoc3RydWN0IGZiX2NvbnZlcnQgKmN2dCwgYm9vbCBhbHBoYSkKPj4gK3sKPj4g KwlpbnQgaSwgajsKPj4gKwl1aW50MzJfdCAqdXl2ID0gY3Z0LT5kc3QucHRyOwo+PiArCWNvbnN0 IGZsb2F0ICpwdHIgPSBjdnQtPnNyYy5wdHI7Cj4+ICsJdW5zaWduZWQgZmxvYXRfc3RyaWRlID0g Y3Z0LT5zcmMuZmItPnN0cmlkZXNbMF0gLyBzaXplb2YoKnB0cik7Cj4+ICsJdW5zaWduZWQgdXl2 X3N0cmlkZSA9IGN2dC0+ZHN0LmZiLT5zdHJpZGVzWzBdIC8gc2l6ZW9mKCp1eXYpOwo+PiArCXN0 cnVjdCBpZ3RfbWF0NCBtID0gaWd0X3JnYl90b195Y2Jjcl9tYXRyaXgoY3Z0LT5zcmMuZmItPmRy bV9mb3JtYXQsCj4+ICsJCQkJCQkgICAgY3Z0LT5kc3QuZmItPmRybV9mb3JtYXQsCj4+ICsJCQkJ CQkgICAgY3Z0LT5kc3QuZmItPmNvbG9yX2VuY29kaW5nLAo+PiArCQkJCQkJICAgIGN2dC0+ZHN0 LmZiLT5jb2xvcl9yYW5nZSk7Cj4+ICsJdW5zaWduZWQgYnBwID0gYWxwaGEgPyA0IDogMzsKPj4g Kwo+PiArCWlndF9hc3NlcnQoY3Z0LT5zcmMuZmItPmRybV9mb3JtYXQgPT0gSUdUX0ZPUk1BVF9G TE9BVCAmJgo+PiArCQkgICAoY3Z0LT5kc3QuZmItPmRybV9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9Z NDEwIHx8Cj4+ICsJCSAgICBjdnQtPmRzdC5mYi0+ZHJtX2Zvcm1hdCA9PSBEUk1fRk9STUFUX1hW WVUyMTAxMDEwKSk7Cj4+ICsKPj4gKwlmb3IgKGkgPSAwOyBpIDwgY3Z0LT5kc3QuZmItPmhlaWdo dDsgaSsrKSB7Cj4+ICsJCWZvciAoaiA9IDA7IGogPCBjdnQtPmRzdC5mYi0+d2lkdGg7IGorKykg ewo+PiArCQkJc3RydWN0IGlndF92ZWM0IHJnYjsKPj4gKwkJCXN0cnVjdCBpZ3RfdmVjNCB5dXY7 Cj4+ICsJCQl1aW50OF90IGEgPSAwOwo+PiArCQkJdWludDE2X3QgeSwgY2IsIGNyOwo+PiArCj4+ ICsJCQlyZWFkX3JnYmYoJnJnYiwgJnB0cltqICogYnBwXSk7Cj4+ICsJCQlpZiAoYWxwaGEpCj4+ ICsJCQkJIGEgPSBwdHJbaiAqIGJwcCArIDNdICogMy5mICsgLjVmOwo+PiArCj4+ICsJCQl5dXYg PSBpZ3RfbWF0cml4X3RyYW5zZm9ybSgmbSwgJnJnYik7Cj4+ICsJCQljciA9IHl1di5kWzBdOwo+ PiArCQkJeSA9IHl1di5kWzFdOwo+PiArCQkJY2IgPSB5dXYuZFsyXTsKPiBTYW1lIGhlcmUuCj4K Pj4gKwo+PiArCQkJdXl2W2pdID0gKChjciAmIDB4M2ZmKSA8PCAwKSB8Cj4+ICsJCQkJICAoKHkg JiAweDNmZikgPDwgMTApIHwKPj4gKwkJCQkgICgoY2IgJiAweDNmZikgPDwgMjApIHwKPj4gKwkJ CQkgIChhIDw8IDMwKTsKPiBjYiBhbmQgY3Igc3dhcHBlZCBoZXJlLgoKSW5kZWVkLCBkaWRuJ3Qg Y2FuY2VsIG91dC4gOykKClRoYW5rcyBmb3IgY2F0Y2hpbmcsIEkgd2lsbCBmaXggaXQgaW4gdGhl IG5leHQgdmVyc2lvbiBhbmQgd2lsbCBsb29rIGF0IHdyaXRpbmcgYSB0ZXN0IGZvciBrbXNfeXV2 IHRvIG1ha2Ugc3VyZSBibGFja3MgYW5kIHdoaXRlcyBhcmUgYWx3YXlzIGNvcnJlY3QgdGhyb3Vn aCBjcmMuCgo+PiArCQl9Cj4+ICsKPj4gKwkJcHRyICs9IGZsb2F0X3N0cmlkZTsKPj4gKwkJdXl2 ICs9IHV5dl9zdHJpZGU7Cj4+ICsJfQo+PiArfQo+PiArCj4+ICBzdGF0aWMgdm9pZCBjb252ZXJ0 X3BpeG1hbihzdHJ1Y3QgZmJfY29udmVydCAqY3Z0KQo+PiAgewo+PiAgCXBpeG1hbl9mb3JtYXRf Y29kZV90IHNyY19waXhtYW4gPSBkcm1fZm9ybWF0X3RvX3BpeG1hbihjdnQtPnNyYy5mYi0+ZHJt X2Zvcm1hdCk7Cj4+IEBAIC0yNDYzLDcgKzI2NDYsMTkgQEAgc3RhdGljIHZvaWQgZmJfY29udmVy dChzdHJ1Y3QgZmJfY29udmVydCAqY3Z0KQo+PiAgCQljYXNlIERSTV9GT1JNQVRfWTIxMDoKPj4g IAkJY2FzZSBEUk1fRk9STUFUX1kyMTI6Cj4+ICAJCWNhc2UgRFJNX0ZPUk1BVF9ZMjE2Ogo+PiAt CQkJY29udmVydF95dXYxNl90b19mbG9hdChjdnQpOwo+PiArCQljYXNlIERSTV9GT1JNQVRfWFZZ VTEyXzE2MTYxNjE2Ogo+PiArCQljYXNlIERSTV9GT1JNQVRfWFZZVTE2MTYxNjE2Ogo+PiArCQkJ Y29udmVydF95dXYxNl90b19mbG9hdChjdnQsIGZhbHNlKTsKPj4gKwkJCXJldHVybjsKPj4gKwkJ Y2FzZSBEUk1fRk9STUFUX1k0MTA6Cj4+ICsJCQljb252ZXJ0X1k0MTBfdG9fZmxvYXQoY3Z0LCB0 cnVlKTsKPj4gKwkJCXJldHVybjsKPj4gKwkJY2FzZSBEUk1fRk9STUFUX1hWWVUyMTAxMDEwOgo+ PiArCQkJY29udmVydF9ZNDEwX3RvX2Zsb2F0KGN2dCwgZmFsc2UpOwo+PiArCQkJcmV0dXJuOwo+ PiArCQljYXNlIERSTV9GT1JNQVRfWTQxMjoKPj4gKwkJY2FzZSBEUk1fRk9STUFUX1k0MTY6Cj4+ ICsJCQljb252ZXJ0X3l1djE2X3RvX2Zsb2F0KGN2dCwgdHJ1ZSk7Cj4+ICAJCQlyZXR1cm47Cj4+ ICAJCX0KPj4gIAl9IGVsc2UgaWYgKGN2dC0+c3JjLmZiLT5kcm1fZm9ybWF0ID09IElHVF9GT1JN QVRfRkxPQVQpIHsKPj4gQEAgLTI0NzQsNyArMjY2OSwxOSBAQCBzdGF0aWMgdm9pZCBmYl9jb252 ZXJ0KHN0cnVjdCBmYl9jb252ZXJ0ICpjdnQpCj4+ICAJCWNhc2UgRFJNX0ZPUk1BVF9ZMjEwOgo+ PiAgCQljYXNlIERSTV9GT1JNQVRfWTIxMjoKPj4gIAkJY2FzZSBEUk1fRk9STUFUX1kyMTY6Cj4+ IC0JCQljb252ZXJ0X2Zsb2F0X3RvX3l1djE2KGN2dCk7Cj4+ICsJCWNhc2UgRFJNX0ZPUk1BVF9Y VllVMTJfMTYxNjE2MTY6Cj4+ICsJCWNhc2UgRFJNX0ZPUk1BVF9YVllVMTYxNjE2MTY6Cj4+ICsJ CQljb252ZXJ0X2Zsb2F0X3RvX3l1djE2KGN2dCwgZmFsc2UpOwo+PiArCQkJcmV0dXJuOwo+PiAr CQljYXNlIERSTV9GT1JNQVRfWTQxMDoKPj4gKwkJCWNvbnZlcnRfZmxvYXRfdG9fWTQxMChjdnQs IHRydWUpOwo+PiArCQkJcmV0dXJuOwo+PiArCQljYXNlIERSTV9GT1JNQVRfWFZZVTIxMDEwMTA6 Cj4+ICsJCQljb252ZXJ0X2Zsb2F0X3RvX1k0MTAoY3Z0LCBmYWxzZSk7Cj4+ICsJCQlyZXR1cm47 Cj4+ICsJCWNhc2UgRFJNX0ZPUk1BVF9ZNDEyOgo+PiArCQljYXNlIERSTV9GT1JNQVRfWTQxNjoK Pj4gKwkJCWNvbnZlcnRfZmxvYXRfdG9feXV2MTYoY3Z0LCB0cnVlKTsKPj4gIAkJCXJldHVybjsK Pj4gIAkJfQo+PiAgCX0KPj4gQEAgLTI5NDEsNiArMzE0OCwxMiBAQCBib29sIGlndF9mb3JtYXRf aXNfeXV2KHVpbnQzMl90IGRybV9mb3JtYXQpCj4+ICAJY2FzZSBEUk1fRk9STUFUX1kyMTA6Cj4+ ICAJY2FzZSBEUk1fRk9STUFUX1kyMTI6Cj4+ICAJY2FzZSBEUk1fRk9STUFUX1kyMTY6Cj4+ICsJ Y2FzZSBEUk1fRk9STUFUX1hWWVUyMTAxMDEwOgo+PiArCWNhc2UgRFJNX0ZPUk1BVF9YVllVMTJf MTYxNjE2MTY6Cj4+ICsJY2FzZSBEUk1fRk9STUFUX1hWWVUxNjE2MTYxNjoKPj4gKwljYXNlIERS TV9GT1JNQVRfWTQxMDoKPj4gKwljYXNlIERSTV9GT1JNQVRfWTQxMjoKPj4gKwljYXNlIERSTV9G T1JNQVRfWTQxNjoKPj4gIAljYXNlIERSTV9GT1JNQVRfWVVZVjoKPj4gIAljYXNlIERSTV9GT1JN QVRfWVZZVToKPj4gIAljYXNlIERSTV9GT1JNQVRfVVlWWToKPj4gLS0gCj4+IDIuMjAuMQo+Pgo+ PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+PiBpZ3Qt ZGV2IG1haWxpbmcgbGlzdAo+PiBpZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+PiBodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYKCn5NYWFy dGVuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3Qt ZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=