From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 087716E04C for ; Thu, 7 Feb 2019 11:52:51 +0000 (UTC) References: <20190207092136.10659-1-maarten.lankhorst@linux.intel.com> <20190207092136.10659-2-maarten.lankhorst@linux.intel.com> From: Juha-Pekka Heikkila Message-ID: <57b465d0-fcce-7b29-5e47-1cdccc85a08e@gmail.com> Date: Thu, 7 Feb 2019 13:52:38 +0200 MIME-Version: 1.0 In-Reply-To: <20190207092136.10659-2-maarten.lankhorst@linux.intel.com> Content-Language: en-US Subject: Re: [igt-dev] [PATCH v2 2/4] lib/igt_fb: Add support for P01x formats, v4. List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: juhapekka.heikkila@gmail.com Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Maarten Lankhorst , igt-dev@lists.freedesktop.org List-ID: T24gNy4yLjIwMTkgMTEuMjEsIE1hYXJ0ZW4gTGFua2hvcnN0IHdyb3RlOgo+IFRoZSBQMDF4IGZv cm1hdHMgYXJlIHBsYW5hciAxNiBiaXRzIHBlciBjb21wb25lbnQsIHdpdGggdGhlIHVudXNlZCBs b3dlciBiaXRzIHNldCB0byAwLgo+IFRoaXMgbWVhbnMgdGhleSBjYW4gYWxsIGJlIGNvbnZlcnRl ZCB0aGUgc2FtZSB3YXkuIE9ubHkgdGhlIHJhbmdlIGlzIHNsaWdodGx5IGRpZmZlcmVudCwKPiBh bmQgdGhpcyBpcyBoYW5kbGVkIGluIHRoZSBjb2xvcl9lbmNvZGluZyBpbXBsZW1lbnRhdGlvbi4K PiAKPiBUaGlzIHJlcXVpcmVzIGNhaXJvIDEuMTcuMiBhbmQgcGl4bWFuIDAuMzYuIFRoaXMgd29y a3MgYnV0IGRvZXNuJ3QgZ2l2ZSBleHRyYSBwcmVjaXNpb24uCj4gRm9yIG1vcmUgdGhhbiA4IGJp dHMgcHJlY2lzaW9uIGEgZmV3IG1vcmUgcGF0Y2hlcyBhcmUgcmVxdWlyZWQgdG8gcGl4bWFuLCBw ZW5kaW5nIHJldmlldzoKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZlcy9w aXhtYW4vMjAxOS1KYW51YXJ5LzAwNDgxNS5odG1sCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvYXJjaGl2ZXMvcGl4bWFuLzIwMTktSmFudWFyeS8wMDQ4MDkuaHRtbAo+IAo+IE9uY2Ug dGhvc2UgYXJlIG1lcmdlZCwgd2Ugd2lsbCByZXF1aXJlIHRoZSBuZXh0IHBpeG1hbiByZWxlYXNl IGZvciBiZXR0ZXIgcHJlY2lzaW9uLgo+IAo+IENoYW5nZXMgc2luY2UgdjE6Cj4gLSBBZGQgZmFs bGJhY2sgY29sb3IgZGVmaW5pdGlvbnMgd2hlbiBjb21waWxpbmcgb24gY2Fpcm8gdmVyc2lvbiA8 IDEuMTcuMi4KPiAtIFNraXAgd2hlbiBGQiBjcmVhdGlvbiBmYWlscyBvbiBIRFIgZm9ybWF0cywg aW5zdGVhZCBvZiBmYWlsaW5nLgo+IENoYW5nZXMgc2luY2UgdjI6Cj4gLSBDb21wbGFpbiBzbGln aHRseSBoYXJkZXIgd2hlbiBwaXhtYW4vY2Fpcm8gYXJlIG91dCBvZiBkYXRlLgo+IC0gQ3JlYXRl IGEgZmIgd2l0aCBhbHBoYSB3aGVuIGNvbnZlcnRpbmcgdG8gcGl4bWFuIGZvcm1hdHMgd2l0aCBh bHBoYS4KPiAtIE9vcHMsIHMvcGl4bWFuX2Zvcm1hdF9jb2RlX3QvY2Fpcm9fZm9ybWF0X3QvCj4g Q2hhbmdlcyBzaW5jZSB2MzoKPiAtIFJlYmFzZSBvbiB0b3Agb2YgdXBzdHJlYW0gWVVWIGNoYW5n ZXMuCj4gCj4gU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hv cnN0QGxpbnV4LmludGVsLmNvbT4KPiAtLS0KPiAgIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAg ICAgIHwgIDExICstCj4gICBpbmNsdWRlL2RybS11YXBpL2RybV9mb3VyY2MuaCB8ICAxMCArKwo+ ICAgbGliL2lndF9jb2xvcl9lbmNvZGluZy5jICAgICAgfCAgIDQgKwo+ICAgbGliL2lndF9mYi5j ICAgICAgICAgICAgICAgICAgfCAyOTMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LQo+ICAgbGliL2lndF9mYi5oICAgICAgICAgICAgICAgICAgfCAgIDYgKwo+ICAgbWVzb24uYnVp bGQgICAgICAgICAgICAgICAgICAgfCAgMTAgKysKPiAgIDYgZmlsZXMgY2hhbmdlZCwgMzI5IGlu c2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5h YyBiL2NvbmZpZ3VyZS5hYwo+IGluZGV4IGI0NmYwMjRmODc1YS4uYTMzM2NmOGQ2ZGJiIDEwMDY0 NAo+IC0tLSBhL2NvbmZpZ3VyZS5hYwo+ICsrKyBiL2NvbmZpZ3VyZS5hYwo+IEBAIC0xMzYsMTAg KzEzNiwxNyBAQCBmaQo+ICAgUEtHX0NIRUNLX01PRFVMRVMoWFJBTkRSLCB4cmFuZHIgPj0gMS4z LCBBQ19ERUZJTkUoSEFWRV9YUkFORFIsIDEsIFtIYXZlIGxpYlhyYW5kcl0pLCBbaGF2ZV94cmFu ZHI9bm9dKQo+ICAgCj4gICAjIGZvciB0ZXN0ZGlzcGxheQo+IC1QS0dfQ0hFQ0tfTU9EVUxFUyhD QUlSTywgW2NhaXJvID49IDEuMTIuMF0pCj4gK1BLR19DSEVDS19NT0RVTEVTKENBSVJPLCBbY2Fp cm8gPj0gMS4xNy4yXSwgW10sCj4gKwlbQUNfTVNHX1dBUk4oW0NhaXJvIHRvbyBvbGQsIEhEUiBm b3JtYXRzIG5vdCBhdmFpbGFibGUuIFVwZ3JhZGUgdG8gY2Fpcm8gMS4xNy4yXSkKPiArCVBLR19D SEVDS19NT0RVTEVTKENBSVJPLCBbY2Fpcm8gPj0gMS4xMi4wXSldCj4gKykKPiAgIFBLR19DSEVD S19NT0RVTEVTKExJQlVERVYsIFtsaWJ1ZGV2XSkKPiAgIFBLR19DSEVDS19NT0RVTEVTKEdMSUIs IFtnbGliLTIuMF0pCj4gLVBLR19DSEVDS19NT0RVTEVTKFBJWE1BTiwgW3BpeG1hbi0xXSkKPiAr UEtHX0NIRUNLX01PRFVMRVMoUElYTUFOLCBbcGl4bWFuLTEgPj0gMC4zNi4wXSwgW10sIFsKPiAr CUFDX01TR19XQVJOKFtQaXhtYW4gdG9vIG9sZCwgSERSIGZvcm1hdHMgbm90IGF2YWlsYWJsZS4g VXBncmFkZSB0byBwaXhtYW4gMC4zNi4wXSkKPiArCVBLR19DSEVDS19NT0RVTEVTKFBJWE1BTiwg W3BpeG1hbi0xXSkKPiArXSkKPiArCj4gICBQS0dfQ0hFQ0tfTU9EVUxFUyhHU0wsIFtnc2xdLCBb Z3NsPXllc10sIFtnc2w9bm9dKQo+ICAgQU1fQ09ORElUSU9OQUwoSEFWRV9HU0wsIFt0ZXN0ICJ4 JGdzbCIgPSB4eWVzXSkKPiAgIAo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS11YXBpL2RybV9m b3VyY2MuaCBiL2luY2x1ZGUvZHJtLXVhcGkvZHJtX2ZvdXJjYy5oCj4gaW5kZXggNDExMDZjODM1 NzQ3Li5mZTZiNjZlZjE3NTYgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9kcm0tdWFwaS9kcm1fZm91 cmNjLmgKPiArKysgYi9pbmNsdWRlL2RybS11YXBpL2RybV9mb3VyY2MuaAo+IEBAIC0xOTUsNiAr MTk1LDE2IEBAIGV4dGVybiAiQyIgewo+ICAgI2RlZmluZSBEUk1fRk9STUFUX05WMjQJCWZvdXJj Y19jb2RlKCdOJywgJ1YnLCAnMicsICc0JykgLyogbm9uLXN1YnNhbXBsZWQgQ3I6Q2IgcGxhbmUg Ki8KPiAgICNkZWZpbmUgRFJNX0ZPUk1BVF9OVjQyCQlmb3VyY2NfY29kZSgnTicsICdWJywgJzQn LCAnMicpIC8qIG5vbi1zdWJzYW1wbGVkIENiOkNyIHBsYW5lICovCj4gICAKPiArLyoKPiArICog MiBwbGFuZSBZQ2JDcgo+ICsgKiBpbmRleCAwID0gWSBwbGFuZSwgWzE1OjBdIFkgbGl0dGxlIGVu ZGlhbiB3aGVyZSBQeHh4IGluZGljYXRlCj4gKyAqIGNvbXBvbmVudCB4eHggbXNiIFkgW3h4eDox Ni14eHhdCj4gKyAqIGluZGV4IDEgPSBDcjpDYiBwbGFuZSwgWzMxOjBdIENyOkNiIGxpdHRsZSBl bmRpYW4gW3h4eDoxNi14eHg6eHh4OjE2LXh4eF0KPiArICovCj4gKyNkZWZpbmUgRFJNX0ZPUk1B VF9QMDEwCQlmb3VyY2NfY29kZSgnUCcsICcwJywgJzEnLCAnMCcpIC8qIDJ4MiBzdWJzYW1wbGVk IENyOkNiIHBsYW5lLCAxMCBiaXQgcGVyIGNoYW5uZWwgKi8KPiArI2RlZmluZSBEUk1fRk9STUFU X1AwMTIJCWZvdXJjY19jb2RlKCdQJywgJzAnLCAnMScsICcyJykgLyogMngyIHN1YnNhbXBsZWQg Q3I6Q2IgcGxhbmUsIDEyIGJpdCBwZXIgY2hhbm5lbCAqLwo+ICsjZGVmaW5lIERSTV9GT1JNQVRf UDAxNgkJZm91cmNjX2NvZGUoJ1AnLCAnMCcsICcxJywgJzYnKSAvKiAyeDIgc3Vic2FtcGxlZCBD cjpDYiBwbGFuZSwgMTYgYml0IHBlciBjaGFubmVsICovCj4gKwo+ICAgLyoKPiAgICAqIDMgcGxh bmUgWUNiQ3IKPiAgICAqIGluZGV4IDA6IFkgcGxhbmUsIFs3OjBdIFkKPiBkaWZmIC0tZ2l0IGEv bGliL2lndF9jb2xvcl9lbmNvZGluZy5jIGIvbGliL2lndF9jb2xvcl9lbmNvZGluZy5jCj4gaW5k ZXggNGNiZTE4ZTIxN2UzLi5iN2ExMmExZTA3ZjcgMTAwNjQ0Cj4gLS0tIGEvbGliL2lndF9jb2xv cl9lbmNvZGluZy5jCj4gKysrIGIvbGliL2lndF9jb2xvcl9lbmNvZGluZy5jCj4gQEAgLTEzNSwx MSArMTM1LDE1IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY29sb3JfZW5jb2RpbmdfZm9ybWF0IHsK PiAgIAlmbG9hdCBvZnNfeSwgbWF4X3ksIG9mc19jYmNyLCBtaWRfY2JjciwgbWF4X2NiY3I7Cj4g ICB9IGZvcm1hdHNbXSA9IHsKPiAgIAl7IERSTV9GT1JNQVRfWFJHQjg4ODgsIDI1NS5mLCB9LAo+ ICsJeyBJR1RfRk9STUFUX0ZMT0FULCAxLmYsIH0sCj4gICAJeyBEUk1fRk9STUFUX05WMTIsIDI1 NS5mLCAxNi5mLCAyMzUuZiwgMTYuZiwgMTI4LmYsIDI0MC5mIH0sCj4gICAJeyBEUk1fRk9STUFU X1lVWVYsIDI1NS5mLCAxNi5mLCAyMzUuZiwgMTYuZiwgMTI4LmYsIDI0MC5mIH0sCj4gICAJeyBE Uk1fRk9STUFUX1lWWVUsIDI1NS5mLCAxNi5mLCAyMzUuZiwgMTYuZiwgMTI4LmYsIDI0MC5mIH0s Cj4gICAJeyBEUk1fRk9STUFUX1VZVlksIDI1NS5mLCAxNi5mLCAyMzUuZiwgMTYuZiwgMTI4LmYs IDI0MC5mIH0sCj4gICAJeyBEUk1fRk9STUFUX1ZZVVksIDI1NS5mLCAxNi5mLCAyMzUuZiwgMTYu ZiwgMTI4LmYsIDI0MC5mIH0sCj4gKwl7IERSTV9GT1JNQVRfUDAxMCwgNjU0NzIuZiwgNDA5Ni5m LCA2MDE2MC5mLCA0MDk2LmYsIDMyNzY4LmYsIDYxNDQwLmYgfSwKPiArCXsgRFJNX0ZPUk1BVF9Q MDEyLCA2NTUyMC5mLCA0MDk2LmYsIDYwMTYwLmYsIDQwOTYuZiwgMzI3NjguZiwgNjE0NDAuZiB9 LAo+ICsJeyBEUk1fRk9STUFUX1AwMTYsIDY1NTM1LmYsIDQwOTYuZiwgNjAxNjAuZiwgNDA5Ni5m LCAzMjc2OC5mLCA2MTQ0MC5mIH0sCj4gICB9Owo+ICAgCj4gICBzdGF0aWMgY29uc3Qgc3RydWN0 IGNvbG9yX2VuY29kaW5nX2Zvcm1hdCAqbG9va3VwX2ZvdXJjYyh1aW50MzJfdCBmb3VyY2MpCj4g ZGlmZiAtLWdpdCBhL2xpYi9pZ3RfZmIuYyBiL2xpYi9pZ3RfZmIuYwo+IGluZGV4IGRiM2FlMDY3 NDhkMS4uMTI3NjNjYzg1Yzg2IDEwMDY0NAo+IC0tLSBhL2xpYi9pZ3RfZmIuYwo+ICsrKyBiL2xp Yi9pZ3RfZmIuYwo+IEBAIC02Miw2ICs2MiwyMCBAQAo+ICAgCj4gICAjZGVmaW5lIFBJWE1BTl9p bnZhbGlkCTAKPiAgIAo+ICsjaWYgQ0FJUk9fVkVSU0lPTiA8IENBSVJPX1ZFUlNJT05fRU5DT0RF KDEsIDE3LCAyKQo+ICsvKgo+ICsgKiBXZSBuZWVkIGNhaXJvIDEuMTcuMiB0byB1c2UgSERSIGZv cm1hdHMsIGJ1dCB0aGUgb25seSB0aGluZyBhZGRlZCBpcyBhIHZhbHVlCj4gKyAqIHRvIGNhaXJv X2Zvcm1hdF90Lgo+ICsgKgo+ICsgKiBUbyBwcmV2ZW50IGdvaW5nIG91dHNpZGUgdGhlIGVudW0s IG1ha2UgY2Fpcm9fZm9ybWF0X3QgYW4gaW50IGFuZCBkZWZpbmUKPiArICogb3Vyc2VsdmVzLgo+ ICsgKi8KPiArCj4gKyNkZWZpbmUgQ0FJUk9fRk9STUFUX1JHQjk2RiAoNikKPiArI2RlZmluZSBD QUlST19GT1JNQVRfUkdCQTEyOEYgKDcpCj4gKyNkZWZpbmUgY2Fpcm9fZm9ybWF0X3QgaW50Cj4g KyNlbmRpZgo+ICsKPiAgIC8qIGRybSBmb3VyY2MvY2Fpcm8gZm9ybWF0IG1hcHMgKi8KPiAgIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgZm9ybWF0X2Rlc2Nfc3RydWN0IHsKPiAgIAljb25zdCBjaGFyICpu YW1lOwo+IEBAIC0xNzAsNiArMTg0LDI1IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZm9ybWF0X2Rl c2Nfc3RydWN0IHsKPiAgIAkgIC5udW1fcGxhbmVzID0gMSwgLnBsYW5lX2JwcCA9IHsgMTYsIH0s Cj4gICAJICAuaHN1YiA9IDIsIC52c3ViID0gMSwKPiAgIAl9LAo+ICsJeyAubmFtZSA9ICJQMDEw IiwgLmRlcHRoID0gLTEsIC5kcm1faWQgPSBEUk1fRk9STUFUX1AwMTAsCj4gKwkgIC5jYWlyb19p ZCA9IENBSVJPX0ZPUk1BVF9SR0I5NkYsCj4gKwkgIC5udW1fcGxhbmVzID0gMiwgLnBsYW5lX2Jw cCA9IHsgMTYsIDMyIH0sCj4gKwkgIC52c3ViID0gMiwgLmhzdWIgPSAyLAo+ICsJfSwKPiArCXsg Lm5hbWUgPSAiUDAxMiIsIC5kZXB0aCA9IC0xLCAuZHJtX2lkID0gRFJNX0ZPUk1BVF9QMDEyLAo+ ICsJICAuY2Fpcm9faWQgPSBDQUlST19GT1JNQVRfUkdCOTZGLAo+ICsJICAubnVtX3BsYW5lcyA9 IDIsIC5wbGFuZV9icHAgPSB7IDE2LCAzMiB9LAo+ICsJICAudnN1YiA9IDIsIC5oc3ViID0gMiwK PiArCX0sCj4gKwl7IC5uYW1lID0gIlAwMTYiLCAuZGVwdGggPSAtMSwgLmRybV9pZCA9IERSTV9G T1JNQVRfUDAxNiwKPiArCSAgLmNhaXJvX2lkID0gQ0FJUk9fRk9STUFUX1JHQjk2RiwKPiArCSAg Lm51bV9wbGFuZXMgPSAyLCAucGxhbmVfYnBwID0geyAxNiwgMzIgfSwKPiArCSAgLnZzdWIgPSAy LCAuaHN1YiA9IDIsCj4gKwl9LAo+ICsJeyAubmFtZSA9ICJJR1QtRkxPQVQiLCAuZGVwdGggPSAt MSwgLmRybV9pZCA9IElHVF9GT1JNQVRfRkxPQVQsCj4gKwkgIC5jYWlyb19pZCA9IENBSVJPX0ZP Uk1BVF9JTlZBTElELAo+ICsJICAubnVtX3BsYW5lcyA9IDEsIC5wbGFuZV9icHAgPSB7IDEyOCB9 LAo+ICsJfSwKPiAgIH07Cj4gICAjZGVmaW5lIGZvcl9lYWNoX2Zvcm1hdChmKQlcCj4gICAJZm9y IChmID0gZm9ybWF0X2Rlc2M7IGYgLSBmb3JtYXRfZGVzYyA8IEFSUkFZX1NJWkUoZm9ybWF0X2Rl c2MpOyBmKyspCj4gQEAgLTUyMCw2ICs1NTMsMTQgQEAgc3RhdGljIHZvaWQgY2xlYXJfeXV2X2J1 ZmZlcihzdHJ1Y3QgaWd0X2ZiICpmYikKPiAgIAkJCWZ1bGxfcmFuZ2UgPyAweDAwODAwMDgwIDog MHgxMDgwMTA4MCwKPiAgIAkJCWZiLT5zdHJpZGVzWzBdICogZmItPnBsYW5lX2hlaWdodFswXSAv IHNpemVvZih3Y2hhcl90KSk7Cj4gICAJCWJyZWFrOwo+ICsJY2FzZSBEUk1fRk9STUFUX1AwMTA6 Cj4gKwljYXNlIERSTV9GT1JNQVRfUDAxMjoKPiArCWNhc2UgRFJNX0ZPUk1BVF9QMDE2Ogo+ICsJ CXdtZW1zZXQocHRyLCBmdWxsX3JhbmdlID8gMCA6IDB4MTAwMDEwMDAsCj4gKwkJCWZiLT5vZmZz ZXRzWzFdIC8gc2l6ZW9mKHdjaGFyX3QpKTsKPiArCQl3bWVtc2V0KHB0ciArIGZiLT5vZmZzZXRz WzFdLCAweDgwMDA4MDAwLAo+ICsJCQlmYi0+c3RyaWRlc1sxXSAqIGZiLT5wbGFuZV9oZWlnaHRb MV0gLyBzaXplb2Yod2NoYXJfdCkpOwo+ICsJCWJyZWFrOwo+ICAgCX0KPiAgIAo+ICAgCWlndF9m Yl91bm1hcF9idWZmZXIoZmIsIHB0cik7Cj4gQEAgLTE0OTYsNiArMTUzNyw3IEBAIHN0cnVjdCBm Yl9jb252ZXJ0X2JsaXRfdXBsb2FkIHsKPiAgIH07Cj4gICAKPiAgIHN0YXRpYyB2b2lkICppZ3Rf ZmJfY3JlYXRlX2NhaXJvX3NoYWRvd19idWZmZXIoaW50IGZkLAo+ICsJCQkJCSAgICAgICB1bnNp Z25lZCBkcm1fZm9ybWF0LAo+ICAgCQkJCQkgICAgICAgdW5zaWduZWQgaW50IHdpZHRoLAo+ICAg CQkJCQkgICAgICAgdW5zaWduZWQgaW50IGhlaWdodCwKPiAgIAkJCQkJICAgICAgIHN0cnVjdCBp Z3RfZmIgKnNoYWRvdykKPiBAQCAtMTUwNSw3ICsxNTQ3LDcgQEAgc3RhdGljIHZvaWQgKmlndF9m Yl9jcmVhdGVfY2Fpcm9fc2hhZG93X2J1ZmZlcihpbnQgZmQsCj4gICAJaWd0X2Fzc2VydChzaGFk b3cpOwo+ICAgCj4gICAJZmJfaW5pdChzaGFkb3csIGZkLCB3aWR0aCwgaGVpZ2h0LAo+IC0JCURS TV9GT1JNQVRfWFJHQjg4ODgsIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUsCj4gKwkJZHJtX2Zv cm1hdCwgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwKPiAgIAkJSUdUX0NPTE9SX1lDQkNSX0JU NzA5LCBJR1RfQ09MT1JfWUNCQ1JfTElNSVRFRF9SQU5HRSk7Cj4gICAKPiAgIAlzaGFkb3ctPnN0 cmlkZXNbMF0gPSBBTElHTih3aWR0aCAqIHNoYWRvdy0+cGxhbmVfYnBwWzBdLCAxNik7Cj4gQEAg LTE1OTksNiArMTY0MSw5IEBAIHN0YXRpYyB2b2lkIGdldF95dXZfcGFyYW1ldGVycyhzdHJ1Y3Qg aWd0X2ZiICpmYiwgc3RydWN0IHl1dl9wYXJhbWV0ZXJzICpwYXJhbXMpCj4gICAKPiAgIAlzd2l0 Y2ggKGZiLT5kcm1fZm9ybWF0KSB7Cj4gICAJY2FzZSBEUk1fRk9STUFUX05WMTI6Cj4gKwljYXNl IERSTV9GT1JNQVRfUDAxMDoKPiArCWNhc2UgRFJNX0ZPUk1BVF9QMDEyOgo+ICsJY2FzZSBEUk1f Rk9STUFUX1AwMTY6Cj4gICAJCXBhcmFtcy0+eV9pbmMgPSAxOwo+ICAgCQlwYXJhbXMtPnV2X2lu YyA9IDI7CgpIaSBNYWFydGVuLAoKSSB3YXMgd29uZGVyaW5nIGlmIGFib3ZlIHlfaW5jIGFuZCB1 dl9pbmMgZm9yIFB4eHggc2hvdWxkIGJlIDJ4IG9mIHRob3NlIApmb3IgTlYxMj8KCkkgbm90aWNl ZCB0aGV5J3JlIHVzZWQgYmVsb3cgbGlrZSAieV90bXAgKz0gcGFyYW1zLnlfaW5jIiB3aGVyZSB5 X3RtcCBpcyAKdWludDhfdCouCgpPdGhlciB0aGFuIHRoaXMgYWxsIGxvb2sgZ29vZCB0byBtZSBp biB0aGlzIHBhdGNoLiBJIGRvbid0IGhhdmUgSFcgdG8gCnRlc3Qgd2l0aCBzbyBJIGNhbm5vdCBn byBzZWUgaG93IGl0IHdvcmsuCgovSnVoYS1QZWtrYQoKPiAgIAkJYnJlYWs7Cj4gQEAgLTE2MTks NiArMTY2NCw5IEBAIHN0YXRpYyB2b2lkIGdldF95dXZfcGFyYW1ldGVycyhzdHJ1Y3QgaWd0X2Zi ICpmYiwgc3RydWN0IHl1dl9wYXJhbWV0ZXJzICpwYXJhbXMpCj4gICAKPiAgIAlzd2l0Y2ggKGZi LT5kcm1fZm9ybWF0KSB7Cj4gICAJY2FzZSBEUk1fRk9STUFUX05WMTI6Cj4gKwljYXNlIERSTV9G T1JNQVRfUDAxMDoKPiArCWNhc2UgRFJNX0ZPUk1BVF9QMDEyOgo+ICsJY2FzZSBEUk1fRk9STUFU X1AwMTY6Cj4gICAJCXBhcmFtcy0+eV9zdHJpZGUgPSBmYi0+c3RyaWRlc1swXTsKPiAgIAkJcGFy YW1zLT51dl9zdHJpZGUgPSBmYi0+c3RyaWRlc1sxXTsKPiAgIAkJYnJlYWs7Cj4gQEAgLTE2NDAs NiArMTY4OCwxNCBAQCBzdGF0aWMgdm9pZCBnZXRfeXV2X3BhcmFtZXRlcnMoc3RydWN0IGlndF9m YiAqZmIsIHN0cnVjdCB5dXZfcGFyYW1ldGVycyAqcGFyYW1zKQo+ICAgCQlwYXJhbXMtPnZfb2Zm c2V0ID0gZmItPm9mZnNldHNbMV0gKyAxOwo+ICAgCQlicmVhazsKPiAgIAo+ICsJY2FzZSBEUk1f Rk9STUFUX1AwMTA6Cj4gKwljYXNlIERSTV9GT1JNQVRfUDAxMjoKPiArCWNhc2UgRFJNX0ZPUk1B VF9QMDE2Ogo+ICsJCXBhcmFtcy0+eV9vZmZzZXQgPSBmYi0+b2Zmc2V0c1swXTsKPiArCQlwYXJh bXMtPnVfb2Zmc2V0ID0gZmItPm9mZnNldHNbMV07Cj4gKwkJcGFyYW1zLT52X29mZnNldCA9IGZi LT5vZmZzZXRzWzFdICsgMjsKPiArCQlicmVhazsKPiArCj4gICAJY2FzZSBEUk1fRk9STUFUX1lV WVY6Cj4gICAJCXBhcmFtcy0+eV9vZmZzZXQgPSBmYi0+b2Zmc2V0c1swXTsKPiAgIAkJcGFyYW1z LT51X29mZnNldCA9IGZiLT5vZmZzZXRzWzBdICsgMTsKPiBAQCAtMTgyMSw2ICsxODc3LDE3OCBA QCBzdGF0aWMgdm9pZCBjb252ZXJ0X3JnYjI0X3RvX3l1dihzdHJ1Y3QgZmJfY29udmVydCAqY3Z0 KQo+ICAgCX0KPiAgIH0KPiAgIAo+ICtzdGF0aWMgdm9pZCByZWFkX3JnYmYoc3RydWN0IGlndF92 ZWM0ICpyZ2IsIGNvbnN0IGZsb2F0ICpyZ2IyNCkKPiArewo+ICsJcmdiLT5kWzBdID0gcmdiMjRb MF07Cj4gKwlyZ2ItPmRbMV0gPSByZ2IyNFsxXTsKPiArCXJnYi0+ZFsyXSA9IHJnYjI0WzJdOwo+ ICsJcmdiLT5kWzNdID0gMS4wZjsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgd3JpdGVfcmdiZihm bG9hdCAqcmdiMjQsIGNvbnN0IHN0cnVjdCBpZ3RfdmVjNCAqcmdiKQo+ICt7Cj4gKwlyZ2IyNFsw XSA9IHJnYi0+ZFswXTsKPiArCXJnYjI0WzFdID0gcmdiLT5kWzFdOwo+ICsJcmdiMjRbMl0gPSBy Z2ItPmRbMl07Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGNvbnZlcnRfeXV2MTZfdG9fZmxvYXQo c3RydWN0IGZiX2NvbnZlcnQgKmN2dCkKPiArewo+ICsJY29uc3Qgc3RydWN0IGZvcm1hdF9kZXNj X3N0cnVjdCAqc3JjX2ZtdCA9Cj4gKwkJbG9va3VwX2RybV9mb3JtYXQoY3Z0LT5zcmMuZmItPmRy bV9mb3JtYXQpOwo+ICsJaW50IGksIGo7Cj4gKwl1aW50OF90IGZwcCA9IDM7Cj4gKwl1aW50MTZf dCAqeSwgKnUsICp2Owo+ICsJZmxvYXQgKnB0ciA9IGN2dC0+ZHN0LnB0cjsKPiArCXVuc2lnbmVk IGludCBmbG9hdF9zdHJpZGUgPSBjdnQtPmRzdC5mYi0+c3RyaWRlc1swXSAvIHNpemVvZigqcHRy KTsKPiArCXN0cnVjdCBpZ3RfbWF0NCBtID0gaWd0X3ljYmNyX3RvX3JnYl9tYXRyaXgoY3Z0LT5z cmMuZmItPmRybV9mb3JtYXQsCj4gKwkJCQkJCSAgICBjdnQtPmRzdC5mYi0+ZHJtX2Zvcm1hdCwK PiArCQkJCQkJICAgIGN2dC0+c3JjLmZiLT5jb2xvcl9lbmNvZGluZywKPiArCQkJCQkJICAgIGN2 dC0+c3JjLmZiLT5jb2xvcl9yYW5nZSk7Cj4gKwl1aW50MTZfdCAqYnVmOwo+ICsJc3RydWN0IHl1 dl9wYXJhbWV0ZXJzIHBhcmFtcyA9IHsgfTsKPiArCj4gKwlpZ3RfYXNzZXJ0KGN2dC0+ZHN0LmZi LT5kcm1fZm9ybWF0ID09IElHVF9GT1JNQVRfRkxPQVQgJiYKPiArCQkgICBpZ3RfZm9ybWF0X2lz X3l1dihjdnQtPnNyYy5mYi0+ZHJtX2Zvcm1hdCkpOwo+ICsKPiArCWJ1ZiA9IGNvbnZlcnRfc3Jj X2dldChjdnQpOwo+ICsJZ2V0X3l1dl9wYXJhbWV0ZXJzKGN2dC0+c3JjLmZiLCAmcGFyYW1zKTsK PiArCWlndF9hc3NlcnQoIShwYXJhbXMueV9vZmZzZXQgJSBzaXplb2YoKmJ1ZikpICYmCj4gKwkJ ICAgIShwYXJhbXMudV9vZmZzZXQgJSBzaXplb2YoKmJ1ZikpICYmCj4gKwkJICAgIShwYXJhbXMu dl9vZmZzZXQgJSBzaXplb2YoKmJ1ZikpKTsKPiArCj4gKwl5ID0gYnVmICsgcGFyYW1zLnlfb2Zm c2V0IC8gc2l6ZW9mKCpidWYpOwo+ICsJdSA9IGJ1ZiArIHBhcmFtcy51X29mZnNldCAvIHNpemVv ZigqYnVmKTsKPiArCXYgPSBidWYgKyBwYXJhbXMudl9vZmZzZXQgLyBzaXplb2YoKmJ1Zik7Cj4g Kwo+ICsJZm9yIChpID0gMDsgaSA8IGN2dC0+ZHN0LmZiLT5oZWlnaHQ7IGkrKykgewo+ICsJCWNv bnN0IHVpbnQxNl90ICp5X3RtcCA9IHk7Cj4gKwkJY29uc3QgdWludDE2X3QgKnVfdG1wID0gdTsK PiArCQljb25zdCB1aW50MTZfdCAqdl90bXAgPSB2Owo+ICsJCWZsb2F0ICpyZ2JfdG1wID0gcHRy Owo+ICsKPiArCQlmb3IgKGogPSAwOyBqIDwgY3Z0LT5kc3QuZmItPndpZHRoOyBqKyspIHsKPiAr CQkJc3RydWN0IGlndF92ZWM0IHJnYiwgeXV2Owo+ICsKPiArCQkJeXV2LmRbMF0gPSAqeV90bXA7 Cj4gKwkJCXl1di5kWzFdID0gKnVfdG1wOwo+ICsJCQl5dXYuZFsyXSA9ICp2X3RtcDsKPiArCQkJ eXV2LmRbM10gPSAxLjBmOwo+ICsKPiArCQkJcmdiID0gaWd0X21hdHJpeF90cmFuc2Zvcm0oJm0s ICZ5dXYpOwo+ICsJCQl3cml0ZV9yZ2JmKHJnYl90bXAsICZyZ2IpOwo+ICsKPiArCQkJcmdiX3Rt cCArPSBmcHA7Cj4gKwkJCXlfdG1wICs9IHBhcmFtcy55X2luYzsKPiArCj4gKwkJCWlmICgoc3Jj X2ZtdC0+aHN1YiA9PSAxKSB8fCAoaiAlIHNyY19mbXQtPmhzdWIpKSB7Cj4gKwkJCQl1X3RtcCAr PSBwYXJhbXMudXZfaW5jOwo+ICsJCQkJdl90bXAgKz0gcGFyYW1zLnV2X2luYzsKPiArCQkJfQo+ ICsJCX0KPiArCj4gKwkJcHRyICs9IGZsb2F0X3N0cmlkZTsKPiArCQl5ICs9IHBhcmFtcy55X3N0 cmlkZSAvIHNpemVvZigqeSk7Cj4gKwo+ICsJCWlmICgoc3JjX2ZtdC0+dnN1YiA9PSAxKSB8fCAo aSAlIHNyY19mbXQtPnZzdWIpKSB7Cj4gKwkJCXUgKz0gcGFyYW1zLnV2X3N0cmlkZSAvIHNpemVv ZigqdSk7Cj4gKwkJCXYgKz0gcGFyYW1zLnV2X3N0cmlkZSAvIHNpemVvZigqdik7Cj4gKwkJfQo+ ICsJfQo+ICsKPiArCWNvbnZlcnRfc3JjX3B1dChjdnQsIGJ1Zik7Cj4gK30KPiArCj4gK3N0YXRp YyB2b2lkIGNvbnZlcnRfZmxvYXRfdG9feXV2MTYoc3RydWN0IGZiX2NvbnZlcnQgKmN2dCkKPiAr ewo+ICsJY29uc3Qgc3RydWN0IGZvcm1hdF9kZXNjX3N0cnVjdCAqZHN0X2ZtdCA9Cj4gKwkJbG9v a3VwX2RybV9mb3JtYXQoY3Z0LT5kc3QuZmItPmRybV9mb3JtYXQpOwo+ICsJaW50IGksIGo7Cj4g Kwl1aW50MTZfdCAqeSwgKnUsICp2Owo+ICsJY29uc3QgZmxvYXQgKnB0ciA9IGN2dC0+c3JjLnB0 cjsKPiArCXVpbnQ4X3QgZnBwID0gMzsKPiArCXVuc2lnbmVkIGZsb2F0X3N0cmlkZSA9IGN2dC0+ c3JjLmZiLT5zdHJpZGVzWzBdIC8gc2l6ZW9mKCpwdHIpOwo+ICsJc3RydWN0IGlndF9tYXQ0IG0g PSBpZ3RfcmdiX3RvX3ljYmNyX21hdHJpeChjdnQtPnNyYy5mYi0+ZHJtX2Zvcm1hdCwKPiArCQkJ CQkJICAgIGN2dC0+ZHN0LmZiLT5kcm1fZm9ybWF0LAo+ICsJCQkJCQkgICAgY3Z0LT5kc3QuZmIt PmNvbG9yX2VuY29kaW5nLAo+ICsJCQkJCQkgICAgY3Z0LT5kc3QuZmItPmNvbG9yX3JhbmdlKTsK PiArCXN0cnVjdCB5dXZfcGFyYW1ldGVycyBwYXJhbXMgPSB7IH07Cj4gKwo+ICsJaWd0X2Fzc2Vy dChjdnQtPnNyYy5mYi0+ZHJtX2Zvcm1hdCA9PSBJR1RfRk9STUFUX0ZMT0FUICYmCj4gKwkJICAg aWd0X2Zvcm1hdF9pc195dXYoY3Z0LT5kc3QuZmItPmRybV9mb3JtYXQpKTsKPiArCj4gKwlnZXRf eXV2X3BhcmFtZXRlcnMoY3Z0LT5kc3QuZmIsICZwYXJhbXMpOwo+ICsJaWd0X2Fzc2VydCghKHBh cmFtcy55X29mZnNldCAlIHNpemVvZigqeSkpICYmCj4gKwkJICAgIShwYXJhbXMudV9vZmZzZXQg JSBzaXplb2YoKnUpKSAmJgo+ICsJCSAgICEocGFyYW1zLnZfb2Zmc2V0ICUgc2l6ZW9mKCp2KSkp Owo+ICsKPiArCXkgPSBjdnQtPmRzdC5wdHIgKyBwYXJhbXMueV9vZmZzZXQ7Cj4gKwl1ID0gY3Z0 LT5kc3QucHRyICsgcGFyYW1zLnVfb2Zmc2V0Owo+ICsJdiA9IGN2dC0+ZHN0LnB0ciArIHBhcmFt cy52X29mZnNldDsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgY3Z0LT5kc3QuZmItPmhlaWdodDsg aSsrKSB7Cj4gKwkJY29uc3QgZmxvYXQgKnJnYl90bXAgPSBwdHI7Cj4gKwkJdWludDE2X3QgKnlf dG1wID0geTsKPiArCQl1aW50MTZfdCAqdV90bXAgPSB1Owo+ICsJCXVpbnQxNl90ICp2X3RtcCA9 IHY7Cj4gKwo+ICsJCWZvciAoaiA9IDA7IGogPCBjdnQtPmRzdC5mYi0+d2lkdGg7IGorKykgewo+ ICsJCQljb25zdCBmbG9hdCAqcGFpcl9mbG9hdCA9IHJnYl90bXA7Cj4gKwkJCXN0cnVjdCBpZ3Rf dmVjNCBwYWlyX3JnYiwgcmdiOwo+ICsJCQlzdHJ1Y3QgaWd0X3ZlYzQgcGFpcl95dXYsIHl1djsK PiArCj4gKwkJCXJlYWRfcmdiZigmcmdiLCByZ2JfdG1wKTsKPiArCQkJeXV2ID0gaWd0X21hdHJp eF90cmFuc2Zvcm0oJm0sICZyZ2IpOwo+ICsKPiArCQkJcmdiX3RtcCArPSBmcHA7Cj4gKwo+ICsJ CQkqeV90bXAgPSB5dXYuZFswXTsKPiArCQkJeV90bXAgKz0gcGFyYW1zLnlfaW5jOwo+ICsKPiAr CQkJaWYgKChpICUgZHN0X2ZtdC0+dnN1YikgfHwgKGogJSBkc3RfZm10LT5oc3ViKSkKPiArCQkJ CWNvbnRpbnVlOwo+ICsKPiArCQkJLyoKPiArCQkJICogV2UgYXNzdW1lIHRoZSBNUEVHMiBjaHJv bWEgc2l0aW5nIGNvbnZlbnRpb24sIHdoZXJlCj4gKwkJCSAqIHBpeGVsIGNlbnRlciBmb3IgQ2In Q3InIGlzIGJldHdlZW4gdGhlIGxlZnQgdG9wIGFuZAo+ICsJCQkgKiBib3R0b20gcGl4ZWwgaW4g YSAyeDIgYmxvY2ssIHNvIHRha2UgdGhlIGF2ZXJhZ2UuCj4gKwkJCSAqCj4gKwkJCSAqIFRoZXJl Zm9yZSwgaWYgd2UgdXNlIHN1YnNhbXBsaW5nLCB3ZSBvbmx5IHJlYWxseSBjYXJlCj4gKwkJCSAq IGFib3V0IHR3byBwaXhlbHMgYWxsIHRoZSB0aW1lLCBlaXRoZXIgdGhlIHR3bwo+ICsJCQkgKiBz dWJzZXF1ZW50IHBpeGVscyBob3Jpem9udGFsbHksIHZlcnRpY2FsbHksIG9yIHRoZQo+ICsJCQkg KiB0d28gY29ybmVycyBpbiBhIDJ4MiBibG9jay4KPiArCQkJICoKPiArCQkJICogVGhlIG9ubHkg Y29ybmVyIGNhc2UgaXMgd2hlbiB3ZSBoYXZlIGFuIG9kZCBudW1iZXIgb2YKPiArCQkJICogcGl4 ZWxzLCBidXQgdGhpcyBjYW4gYmUgaGFuZGxlZCBwcmV0dHkgZWFzaWx5IGJ5IG5vdAo+ICsJCQkg KiBpbmNyZW1lbnRpbmcgdGhlIHBhaXJlZCBwaXhlbCBwb2ludGVyIGluIHRoZQo+ICsJCQkgKiBk aXJlY3Rpb24gaXQncyBvZGQgaW4uCj4gKwkJCSAqLwo+ICsJCQlpZiAoaiAhPSAoY3Z0LT5kc3Qu ZmItPndpZHRoIC0gMSkpCj4gKwkJCQlwYWlyX2Zsb2F0ICs9IChkc3RfZm10LT5oc3ViIC0gMSkg KiBmcHA7Cj4gKwo+ICsJCQlpZiAoaSAhPSAoY3Z0LT5kc3QuZmItPmhlaWdodCAtIDEpKQo+ICsJ CQkJcGFpcl9mbG9hdCArPSBmbG9hdF9zdHJpZGUgKiAoZHN0X2ZtdC0+dnN1YiAtIDEpOwo+ICsK PiArCQkJcmVhZF9yZ2JmKCZwYWlyX3JnYiwgcGFpcl9mbG9hdCk7Cj4gKwkJCXBhaXJfeXV2ID0g aWd0X21hdHJpeF90cmFuc2Zvcm0oJm0sICZwYWlyX3JnYik7Cj4gKwo+ICsJCQkqdV90bXAgPSAo eXV2LmRbMV0gKyBwYWlyX3l1di5kWzFdKSAvIDIuMGY7Cj4gKwkJCSp2X3RtcCA9ICh5dXYuZFsy XSArIHBhaXJfeXV2LmRbMl0pIC8gMi4wZjsKPiArCj4gKwkJCXVfdG1wICs9IHBhcmFtcy51dl9p bmM7Cj4gKwkJCXZfdG1wICs9IHBhcmFtcy51dl9pbmM7Cj4gKwkJfQo+ICsKPiArCQlwdHIgKz0g ZmxvYXRfc3RyaWRlOwo+ICsJCXkgKz0gcGFyYW1zLnlfc3RyaWRlIC8gc2l6ZW9mKCp5KTsKPiAr Cj4gKwkJaWYgKChpICUgZHN0X2ZtdC0+dnN1YikgPT0gKGRzdF9mbXQtPnZzdWIgLSAxKSkgewo+ ICsJCQl1ICs9IHBhcmFtcy51dl9zdHJpZGUgLyBzaXplb2YoKnUpOwo+ICsJCQl2ICs9IHBhcmFt cy51dl9zdHJpZGUgLyBzaXplb2YoKnYpOwo+ICsJCX0KPiArCX0KPiArfQo+ICsKPiAgIHN0YXRp YyB2b2lkIGNvbnZlcnRfcGl4bWFuKHN0cnVjdCBmYl9jb252ZXJ0ICpjdnQpCj4gICB7Cj4gICAJ cGl4bWFuX2Zvcm1hdF9jb2RlX3Qgc3JjX3BpeG1hbiA9IGRybV9mb3JtYXRfdG9fcGl4bWFuKGN2 dC0+c3JjLmZiLT5kcm1fZm9ybWF0KTsKPiBAQCAtMTg4OCw2ICsyMTE2LDIyIEBAIHN0YXRpYyB2 b2lkIGZiX2NvbnZlcnQoc3RydWN0IGZiX2NvbnZlcnQgKmN2dCkKPiAgIAkJCWNvbnZlcnRfcmdi MjRfdG9feXV2KGN2dCk7Cj4gICAJCQlyZXR1cm47Cj4gICAJCX0KPiArCX0gZWxzZSBpZiAoY3Z0 LT5kc3QuZmItPmRybV9mb3JtYXQgPT0gSUdUX0ZPUk1BVF9GTE9BVCkgewo+ICsJCXN3aXRjaCAo Y3Z0LT5zcmMuZmItPmRybV9mb3JtYXQpIHsKPiArCQljYXNlIERSTV9GT1JNQVRfUDAxMDoKPiAr CQljYXNlIERSTV9GT1JNQVRfUDAxMjoKPiArCQljYXNlIERSTV9GT1JNQVRfUDAxNjoKPiArCQkJ Y29udmVydF95dXYxNl90b19mbG9hdChjdnQpOwo+ICsJCQlyZXR1cm47Cj4gKwkJfQo+ICsJfSBl bHNlIGlmIChjdnQtPnNyYy5mYi0+ZHJtX2Zvcm1hdCA9PSBJR1RfRk9STUFUX0ZMT0FUKSB7Cj4g KwkJc3dpdGNoIChjdnQtPmRzdC5mYi0+ZHJtX2Zvcm1hdCkgewo+ICsJCWNhc2UgRFJNX0ZPUk1B VF9QMDEwOgo+ICsJCWNhc2UgRFJNX0ZPUk1BVF9QMDEyOgo+ICsJCWNhc2UgRFJNX0ZPUk1BVF9Q MDE2Ogo+ICsJCQljb252ZXJ0X2Zsb2F0X3RvX3l1djE2KGN2dCk7Cj4gKwkJCXJldHVybjsKPiAr CQl9Cj4gICAJfQo+ICAgCj4gICAJaWd0X2Fzc2VydF9mKGZhbHNlLAo+IEBAIC0xOTI4LDEyICsy MTcyLDM3IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZV9jYWlyb19zdXJmYWNlX19jb252ZXJ0KGludCBm ZCwgc3RydWN0IGlndF9mYiAqZmIpCj4gICB7Cj4gICAJc3RydWN0IGZiX2NvbnZlcnRfYmxpdF91 cGxvYWQgKmJsaXQgPSBtYWxsb2Moc2l6ZW9mKCpibGl0KSk7Cj4gICAJc3RydWN0IGZiX2NvbnZl cnQgY3Z0ID0geyB9Owo+ICsJY29uc3Qgc3RydWN0IGZvcm1hdF9kZXNjX3N0cnVjdCAqZiA9IGxv b2t1cF9kcm1fZm9ybWF0KGZiLT5kcm1fZm9ybWF0KTsKPiArCXVuc2lnbmVkIGRybV9mb3JtYXQ7 Cj4gKwljYWlyb19mb3JtYXRfdCBjYWlyb19pZDsKPiArCj4gKwlpZiAoZi0+Y2Fpcm9faWQgIT0g Q0FJUk9fRk9STUFUX0lOVkFMSUQpIHsKPiArCQljYWlyb19pZCA9IGYtPmNhaXJvX2lkOwo+ICsK PiArCQlzd2l0Y2ggKGYtPmNhaXJvX2lkKSB7Cj4gKwkJY2FzZSBDQUlST19GT1JNQVRfUkdCOTZG Ogo+ICsJCWNhc2UgQ0FJUk9fRk9STUFUX1JHQkExMjhGOgo+ICsJCQlkcm1fZm9ybWF0ID0gSUdU X0ZPUk1BVF9GTE9BVDsKPiArCQkJYnJlYWs7Cj4gKwkJY2FzZSBDQUlST19GT1JNQVRfUkdCMjQ6 Cj4gKwkJCWRybV9mb3JtYXQgPSBEUk1fRk9STUFUX1hSR0I4ODg4Owo+ICsJCQlicmVhazsKPiAr CQlkZWZhdWx0Ogo+ICsJCQlpZ3RfYXNzZXJ0X2YoMCwgIlVuc3VwcG9ydGVkIGZvcm1hdCAldSIs IGYtPmNhaXJvX2lkKTsKPiArCQl9Cj4gKwl9IGVsc2UgaWYgKFBJWE1BTl9GT1JNQVRfQShmLT5w aXhtYW5faWQpKSB7Cj4gKwkJY2Fpcm9faWQgPSBDQUlST19GT1JNQVRfQVJHQjMyOwo+ICsJCWRy bV9mb3JtYXQgPSBEUk1fRk9STUFUX0FSR0I4ODg4Owo+ICsJfSBlbHNlIHsKPiArCQljYWlyb19p ZCA9IENBSVJPX0ZPUk1BVF9SR0IyNDsKPiArCQlkcm1fZm9ybWF0ID0gRFJNX0ZPUk1BVF9YUkdC ODg4ODsKPiArCX0KPiAgIAo+ICAgCWlndF9hc3NlcnQoYmxpdCk7Cj4gICAKPiAgIAlibGl0LT5i YXNlLmZkID0gZmQ7Cj4gICAJYmxpdC0+YmFzZS5mYiA9IGZiOwo+IC0JYmxpdC0+c2hhZG93X3B0 ciA9IGlndF9mYl9jcmVhdGVfY2Fpcm9fc2hhZG93X2J1ZmZlcihmZCwKPiArCWJsaXQtPnNoYWRv d19wdHIgPSBpZ3RfZmJfY3JlYXRlX2NhaXJvX3NoYWRvd19idWZmZXIoZmQsIGRybV9mb3JtYXQs Cj4gICAJCQkJCQkJICAgICBmYi0+d2lkdGgsCj4gICAJCQkJCQkJICAgICBmYi0+aGVpZ2h0LAo+ ICAgCQkJCQkJCSAgICAgJmJsaXQtPnNoYWRvd19mYik7Cj4gQEAgLTE5NjAsNyArMjIyOSw3IEBA IHN0YXRpYyB2b2lkIGNyZWF0ZV9jYWlyb19zdXJmYWNlX19jb252ZXJ0KGludCBmZCwgc3RydWN0 IGlndF9mYiAqZmIpCj4gICAKPiAgIAlmYi0+Y2Fpcm9fc3VyZmFjZSA9Cj4gICAJCWNhaXJvX2lt YWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKGJsaXQtPnNoYWRvd19wdHIsCj4gLQkJCQkJCSAg ICBDQUlST19GT1JNQVRfUkdCMjQsCj4gKwkJCQkJCSAgICBjYWlyb19pZCwKPiAgIAkJCQkJCSAg ICBmYi0+d2lkdGgsIGZiLT5oZWlnaHQsCj4gICAJCQkJCQkgICAgYmxpdC0+c2hhZG93X2ZiLnN0 cmlkZXNbMF0pOwo+ICAgCj4gQEAgLTIwMjUsNiArMjI5NCwyMSBAQCBjYWlyb19zdXJmYWNlX3Qg KmlndF9nZXRfY2Fpcm9fc3VyZmFjZShpbnQgZmQsIHN0cnVjdCBpZ3RfZmIgKmZiKQo+ICAgCQkJ Y3JlYXRlX2NhaXJvX3N1cmZhY2VfX2JsaXQoZmQsIGZiKTsKPiAgIAkJZWxzZQo+ICAgCQkJY3Jl YXRlX2NhaXJvX3N1cmZhY2VfX2d0dChmZCwgZmIpOwo+ICsKPiArCQlpZiAoZi0+Y2Fpcm9faWQg PT0gQ0FJUk9fRk9STUFUX1JHQjk2RiB8fAo+ICsJCSAgICBmLT5jYWlyb19pZCA9PSBDQUlST19G T1JNQVRfUkdCQTEyOEYpIHsKPiArCQkJY2Fpcm9fc3RhdHVzX3Qgc3RhdHVzID0gY2Fpcm9fc3Vy ZmFjZV9zdGF0dXMoZmItPmNhaXJvX3N1cmZhY2UpOwo+ICsKPiArCQkJaWd0X3NraXBfb25fZihz dGF0dXMgPT0gQ0FJUk9fU1RBVFVTX0lOVkFMSURfRk9STUFUICYmCj4gKwkJCQkgICAgICBjYWly b192ZXJzaW9uKCkgPCBDQUlST19WRVJTSU9OX0VOQ09ERSgxLCAxNywgMiksCj4gKwkJCQkgICAg ICAiQ2Fpcm8gdmVyc2lvbiB0b28gb2xkLCBuZWVkIDEuMTcuMiwgaGF2ZSAlc1xuIiwKPiArCQkJ CSAgICAgIGNhaXJvX3ZlcnNpb25fc3RyaW5nKCkpOwo+ICsKPiArCQkJaWd0X3NraXBfb25fZihz dGF0dXMgPT0gQ0FJUk9fU1RBVFVTX05PX01FTU9SWSAmJgo+ICsJCQkJICAgICAgcGl4bWFuX3Zl cnNpb24oKSA8IFBJWE1BTl9WRVJTSU9OX0VOQ09ERSgwLCAzNiwgMCksCj4gKwkJCQkgICAgICAi UGl4bWFuIHZlcnNpb24gdG9vIG9sZCwgbmVlZCAwLjM2LjAsIGhhdmUgJXNcbiIsCj4gKwkJCQkg ICAgICBwaXhtYW5fdmVyc2lvbl9zdHJpbmcoKSk7Cj4gKwkJfQo+ICAgCX0KPiAgIAo+ICAgCWln dF9hc3NlcnQoY2Fpcm9fc3VyZmFjZV9zdGF0dXMoZmItPmNhaXJvX3N1cmZhY2UpID09IENBSVJP X1NUQVRVU19TVUNDRVNTKTsKPiBAQCAtMjIzMSw2ICsyNTE1LDkgQEAgYm9vbCBpZ3RfZm9ybWF0 X2lzX3l1dih1aW50MzJfdCBkcm1fZm9ybWF0KQo+ICAgewo+ICAgCXN3aXRjaCAoZHJtX2Zvcm1h dCkgewo+ICAgCWNhc2UgRFJNX0ZPUk1BVF9OVjEyOgo+ICsJY2FzZSBEUk1fRk9STUFUX1AwMTA6 Cj4gKwljYXNlIERSTV9GT1JNQVRfUDAxMjoKPiArCWNhc2UgRFJNX0ZPUk1BVF9QMDE2Ogo+ICAg CWNhc2UgRFJNX0ZPUk1BVF9ZVVlWOgo+ICAgCWNhc2UgRFJNX0ZPUk1BVF9ZVllVOgo+ICAgCWNh c2UgRFJNX0ZPUk1BVF9VWVZZOgo+IGRpZmYgLS1naXQgYS9saWIvaWd0X2ZiLmggYi9saWIvaWd0 X2ZiLmgKPiBpbmRleCA5ZjAyN2RlYmE4NDIuLjhjNjgzZGI1ZTllYyAxMDA2NDQKPiAtLS0gYS9s aWIvaWd0X2ZiLmgKPiArKysgYi9saWIvaWd0X2ZiLmgKPiBAQCAtMzgsNiArMzgsMTIgQEAKPiAg IAo+ICAgI2luY2x1ZGUgImlndF9jb2xvcl9lbmNvZGluZy5oIgo+ICAgCj4gKy8qCj4gKyAqIElu dGVybmFsIGZvcm1hdCB0byBkZW5vdGUgYSBidWZmZXIgY29tcGF0aWJsZSB3aXRoIHBpeG1hbidz Cj4gKyAqIGZsb2F0aW5nIHBvaW50IGZvcm1hdC4gUmFuZ2UgWzAtMV0uCj4gKyAqLwo+ICsjZGVm aW5lIElHVF9GT1JNQVRfRkxPQVQgZm91cmNjX2NvZGUoJ0knLCAnRycsICdGJywgJ3gnKQo+ICsK PiAgIC8qKgo+ICAgICogaWd0X2ZiX3Q6Cj4gICAgKiBAZmJfaWQ6IEtNUyBJRCBvZiB0aGUgZnJh bWVidWZmZXIKPiBkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAo+IGluZGV4 IGIxN2U2N2VmN2YwNS4uMzU2YTU0MTQyMjZiIDEwMDY0NAo+IC0tLSBhL21lc29uLmJ1aWxkCj4g KysrIGIvbWVzb24uYnVpbGQKPiBAQCAtMzM2LDMgKzMzNiwxMyBAQCBtZXNzYWdlKCc9PT09PT09 PT09PT09JykKPiAgIGZvcmVhY2ggc3RyIDogYnVpbGRfaW5mbwo+ICAgCW1lc3NhZ2Uoc3RyKQo+ ICAgZW5kZm9yZWFjaAo+ICsKPiAraWYgY2Fpcm8udmVyc2lvbigpLnZlcnNpb25fY29tcGFyZSgn PDEuMTcuMicpCj4gKwlpZiBwaXhtYW4udmVyc2lvbigpLnZlcnNpb25fY29tcGFyZSgnPDAuMzYu MCcpCj4gKwkJd2FybmluZygnUGl4bWFuIDwgMC4zNi4wIGZvdW5kLCBjYW5ub3QgdGVzdCBIRFIg Zm9ybWF0cycpCj4gKwllbmRpZgo+ICsJd2FybmluZygnQ2Fpcm8gPCAxLjE3LjIgZm91bmQsIGNh bm5vdCB0ZXN0IEhEUiBmb3JtYXRzJykKPiArZWxpZiBwaXhtYW4udmVyc2lvbigpLnZlcnNpb25f Y29tcGFyZSgnPDAuMzYuMCcpCj4gKwkjIENhaXJvIDEuMTcuMiByZXF1aXJlcyAwLjM2LjAgdG8g Y29tcGlsZSwgYnV0IHNvbWVob3cgaXQgd2VudCBtaXNzaW5nPwo+ICsJZXJyb3IoJ0NhaXJvIHdp dGggZmxvYXRpbmcgcG9pbnQgc3VwcG9ydCBmb3VuZCwgYnV0IHBpeG1hbiB2ZXJzaW9uIHRvbyBv bGQnKQo+ICtlbmRpZgo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2 Cg==