From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v2 9/9] drm/i915: Add render decompression support Date: Wed, 1 Mar 2017 12:51:17 +0200 Message-ID: <20170301105117.GQ31595@intel.com> References: <20170104184232.23048-10-ville.syrjala@linux.intel.com> <20170105151454.12862-1-ville.syrjala@linux.intel.com> <20170228232037.GB7989@mail.bwidawsk.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20170228232037.GB7989@mail.bwidawsk.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Ben Widawsky Cc: Vandana Kannan , intel-gfx@lists.freedesktop.org, Maling list - DRI developers , Chad Versace , Jason Ekstrand , Paulo Zanoni List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBGZWIgMjgsIDIwMTcgYXQgMDM6MjA6MzhQTSAtMDgwMCwgQmVuIFdpZGF3c2t5IHdy b3RlOgo+IE9uIDE3LTAyLTI4IDEyOjE4OjM5LCBKYXNvbiBFa3N0cmFuZCB3cm90ZToKPHNuaXA+ Cj4gPkkndmUgc2FpZCBpdCBiZWZvcmUgYnV0IHJlYWRpbmcgdGhyb3VnaCBCZW4ncyBwYXRjaGVz IGFnYWluIG1ha2UgbWUgd2FudCB0bwo+ID5iZSBwZXNraWVyIGFib3V0IGl0LiAgSSB3b3VsZCBy ZWFsbHkgbGlrZSB0aGUgVUFCSSB0byB0cmVhdCB0aGUgQ0NTIGFzIGlmCj4gPml0J3MgWS10aWxl ZCB3aXRoIGEgdGlsZSBzaXplIG9mIDEyOEIgeCAzMiByb3dzLiAgV2h5PyAgQmVjYXVzZSB0aGlz IGlzCj4gPndoYXQgYWxsIHRoZSBkb2NzIHNheSBpdCBpcy4gIEZyb20gdGhlIGRpc3BsYXkgZG9j cyBmb3IgIkNvbG9yIENvbnRyb2wKPiA+U3VyZmFjZSI6Cj4gPgo+ID4iVGhlIENvbG9yIENvbnRy b2wgU3VyZmFjZSAoQ0NTKSBjb250YWlucyB0aGUgY29tcHJlc3Npb24gc3RhdHVzIG9mIHRoZQo+ ID5jYWNoZS1saW5lIHBhaXJzLiBUaGUKPiA+Y29tcHJlc3Npb24gc3RhdGUgb2YgdGhlIGNhY2hl LWxpbmUgcGFpciBpcyBzcGVjaWZpZWQgYnkgMiBiaXRzIGluIHRoZSBDQ1MuCj4gPkVhY2ggQ0NT IGNhY2hlLWxpbmUgcmVwcmVzZW50cwo+ID5hbiBhcmVhIG9uIHRoZSBtYWluIHN1cmZhY2Ugb2Yg MTYgeDE2IHNldHMgb2YgMTI4IGJ5dGUgWS10aWxlZAo+ID5jYWNoZS1saW5lLXBhaXJzLiBDQ1Mg aXMgYWx3YXlzIFkgdGlsZWQuIgo+ID4KPiA+VGhpcyBjb250YWlucyA5NSUgb2YgdGhlIGluZm9y bWF0aW9uIG5lZWRlZCB0byBrbm93IHRoZSByZWxhdGlvbiBiZXR3ZWVuCj4gPnRoZSBDQ1MgYW5k IHRoZSBtYWluIHN1cmZhY2UuICBUaGUgb3RoZXIgNSUgKHdoaWNoIGlzIGJhZGx5IGRvY3VtZW50 ZWQpIGlzCj4gPnRoYXQgY2FjaGUgbGluZSBwYWlycyBhcmUgaG9yaXpvbnRhbGx5IGFkamFjZW50 LiAgVGhpcyBnaXZlcyBhIHJlbGF0aW9uc2hpcAo+ID5vZiBvbmUgY2FjaGUgbGluZSBpbiB0aGUg Q0NTIG1hcHMgdG8gMzJ4NjQgY2FjaGUgbGluZXMgaW4gdGhlIG1haW4gc3VyZmFjZS4KPiA+Cj4g PkJ1dCBpdCdzIG5vdCBhY3R1YWxseSBZLXRpbGVkPyAgT2YgY291cnNlIG5vdC4gIEkndmUgd29y a2VkIG91dCB0aGUgZXhhY3QKPiA+dGlsaW5nIGFuZCBpdCBsb29rcyBzb21ldGhpbmcgbGlrZSBZ IGJ1dCBpc24ndCBxdWl0ZSB0aGUgc2FtZS4gIEhvd2V2ZXIsCj4gPnRoaXMgaXNuJ3QgdW5pcXVl IHRvIENDUy4gIFN0ZW5jaWwgKFctdGlsZWQpLCBIaVosIGFuZCBnZW43LTgKPiA+c2luZ2xlLXNh bXBsZWQgTUNTIGFsc28gZWFjaCBoYXZlIHRoZWlyIG93biB0aWxpbmcgKEhhc3dlbGwgTUNTIGlz Cj4gPmVzcGVjaWFsbHkgZXhvdGljKSBidXQgdGhlIGRvY3MgY2FsbCBhbGwgb2YgdGhlbSBZLXRp bGVkIGFuZCBJIHRoaW5rIHRoZQo+ID5oYXJkd2FyZSBpbnRlcm5hbGx5IHRyZWF0cyB0aGVtIGFz IFktdGlsZWQgd2l0aCB0aGUgY2FjaGUgbGluZXMgc2h1ZmZsZWQKPiA+YXJvdW5kIGEgYml0Lgo+ ID4KPiA+R2l2ZW4gdGhlIGZhY3QgdGhhdCB0aGV5IHNlZW0gdG8gbGlrZSB0byBjaGFuZ2UgdGhl IE1DUy9DQ1MgdGlsaW5nIGFyb3VuZAo+ID5vbiBldmVyeSBoYXJkd2FyZSBnZW5lcmF0aW9uLCBJ J20gcmVsdWN0YW50IHRvIGJhc2UgVUFCSSBvbiB0aGUgZmFjdCB0aGF0Cj4gPnRoZSBDQ1MgYXBw ZWFycyB0byBoYXZlIDY0eDY0ICJwaXhlbHMiIHBlciB0aWxlIHdpdGggZWFjaCAicGl4ZWwiCj4g PmNvcnJlc3BvbmRpbmcgdG8gMTZ4OCBwaXhlbHMgaW4gdGhlIGNvbG9yIHN1cmZhY2UuICBUaGF0 J3Mgbm90IHdoYXQgd2UgaGFkCj4gPm9uIGFueSBwcmV2aW91cyBnZW4gYW5kIG1heSBjaGFuZ2Ug b24gZ2VuMTAgZm9yIG5vIGFwYXJlbnQgcmVhc29uLiAgSSdkCj4gPm11Y2ggcmF0aGVyIGJhc2Ug aXQgb24gWS10aWxpbmcgYW5kIGEgcmVsYXRpb25zaGlwIGJldHdlZW4gY2FjaGUgbGluZXMKPiA+ d2hpY2gsIGV2ZW4gaWYgdGhleSBjaGFuZ2UgdGhlIGV4YWN0IHN3aXp6bGUgb24gZ2VuMTAsIHdp bGwgcHJvYmFibHkgcmVtYWluCj4gPnRoZSBzYW1lLiAgKEZvciB0aGUgZ2VuNy04IGFuYWxvZ3Vl IG9mIENDUywgdGhleSBjaGFuZ2VkIHRoZSB0aWxpbmcgZXZlcnkKPiA+Z2VuZXJhdGlvbiBidXQg dGhlIHJlbGF0aW9uc2hpcCBvZiBvbmUgTUNTIGNhY2hlIGxpbmUgbWFwcyB0byAzMngxMjggY29s b3IKPiA+Y2FjaGUgbGluZXMgcmVtYWluZWQgdGhlIHNhbWUpLgo+ID4KPiA+T2ssIEkndmUgc2Fp ZCBteSBwZWljZS4gIElmIHdlIGhhdmUgdG8gZGl2aWRlIGJ5IDIgaW4gdXNlcnNwYWNlLCB3ZSB3 b24ndAo+ID5kaWUsIGJ1dCBJJ2QgbGlrZSB0byBnZXQgdGhlIFVBQkkgcmlnaHQgYmVmb3JlIHdl IGNoaXNzZWwgaXQgaW4gc3RvbmUuCj4gPgo+ID4tLUphc29uCj4gPgo+ID4KPiAKPiBJIHZvdGUg d2UgbWFrZSB0aGUgc3RyaWRlIGluIHVuaXRzIG9mIHRpbGVzIHdoZW4gd2UgaGF2ZSB0aGUgQ0NT IG1vZGlmaWVyLgoKVGhhdCB3b24ndCBmbHkgd2l0aCB0aGUgS01TIEFQSS4gSSBzdXBwb3NlIEkg Y291bGQgbWFrZSB0aGUgdGlsZSAxMjggYnl0ZXMKd2lkZSBieSBzd2FwcGluZyB0aGUgIjEgYnl0 ZSA9PSAxNng4IHBpeGVscyIgbm90aW9uIHdpdGggYQoiMSBieXRlID09IDh4MTYgcGl4ZWxzIiBu b3Rpb24uIERvZXNuJ3QgbWF0Y2ggdGhlIGFjdHVhbCB0cnV0aCBhbnltb3JlLApidXQgSSBndWVz cyBubyBvbmUgcmVhbGx5IGNhcmVzLgoKPiAKPiA+PiArICAgICAgICAgICAgICAgLyogZmFsbCB0 aHJvdWdoICovCj4gPj4gICAgICAgICBjYXNlIEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRDoKPiA+ PiAgICAgICAgICAgICAgICAgLyoKPiA+PiAgICAgICAgICAgICAgICAgICogQnNwZWMgc2VlbXMg dG8gc3VnZ2VzdCB0aGF0IHRoZSBZZiB0aWxlIHdpZHRoIHdvdWxkCj4gPj4gQEAgLTIxNTYsNyAr MjE2NCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgaW50ZWxfc3VyZl9hbGlnbm1lbnQoY29uc3QK PiA+PiBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiA+PiAgICAgICAgIHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZmItPmRldik7Cj4gPj4KPiA+PiAgICAg ICAgIC8qIEFVWF9ESVNUIG5lZWRzIG9ubHkgNEsgYWxpZ25tZW50ICovCj4gPj4gLSAgICAgICBp ZiAoZmItPmZvcm1hdC0+Zm9ybWF0ID09IERSTV9GT1JNQVRfTlYxMiAmJiBwbGFuZSA9PSAxKQo+ ID4+ICsgICAgICAgaWYgKHBsYW5lID09IDEpCj4gPj4gICAgICAgICAgICAgICAgIHJldHVybiA0 MDk2Owo+ID4+Cj4gPj4gICAgICAgICBzd2l0Y2ggKGZiLT5tb2RpZmllcikgewo+ID4+IEBAIC0y MTY2LDYgKzIxNzQsOCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGludGVsX3N1cmZfYWxpZ25tZW50 KGNvbnN0Cj4gPj4gc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCj4gPj4gICAgICAgICAgICAg ICAgIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCj4gPj4gICAgICAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIDI1NiAqIDEwMjQ7Cj4gPj4gICAgICAgICAgICAgICAgIHJldHVybiAwOwo+ ID4+ICsgICAgICAgY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9DQ1M6Cj4gPj4gKyAgICAg ICBjYXNlIEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRF9DQ1M6Cj4gPj4gICAgICAgICBjYXNlIEk5 MTVfRk9STUFUX01PRF9ZX1RJTEVEOgo+ID4+ICAgICAgICAgY2FzZSBJOTE1X0ZPUk1BVF9NT0Rf WWZfVElMRUQ6Cj4gPj4gICAgICAgICAgICAgICAgIHJldHVybiAxICogMTAyNCAqIDEwMjQ7Cj4g Pj4gQEAgLTI0NzIsNiArMjQ4Miw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgaW50ZWxfZmJfbW9k aWZpZXJfdG9fdGlsaW5nKHVpbnQ2NF90Cj4gPj4gZmJfbW9kaWZpZXIpCj4gPj4gICAgICAgICBj YXNlIEk5MTVfRk9STUFUX01PRF9YX1RJTEVEOgo+ID4+ICAgICAgICAgICAgICAgICByZXR1cm4g STkxNV9USUxJTkdfWDsKPiA+PiAgICAgICAgIGNhc2UgSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQ6 Cj4gPj4gKyAgICAgICBjYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0NDUzoKPiA+PiAgICAg ICAgICAgICAgICAgcmV0dXJuIEk5MTVfVElMSU5HX1k7Cj4gPj4gICAgICAgICBkZWZhdWx0Ogo+ ID4+ICAgICAgICAgICAgICAgICByZXR1cm4gSTkxNV9USUxJTkdfTk9ORTsKPiA+PiBAQCAtMjUz Niw2ICsyNTQ3LDM1IEBAIGludGVsX2ZpbGxfZmJfaW5mbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZQo+ID4+ICpkZXZfcHJpdiwKPiA+Pgo+ID4+ICAgICAgICAgICAgICAgICBpbnRlbF9mYl9vZmZz ZXRfdG9feHkoJngsICZ5LCBmYiwgaSk7Cj4gPj4KPiA+PiArICAgICAgICAgICAgICAgaWYgKChm Yi0+bW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfQ0NTIHx8Cj4gPj4gKyAgICAg ICAgICAgICAgICAgICAgZmItPm1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRF9D Q1MpICYmIGkgPT0KPiA+PiAxKSB7Cj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgaW50IG1h aW5feCwgbWFpbl95Owo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgIGludCBjY3NfeCwgY2Nz X3k7Cj4gPj4gKwo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgIC8qCj4gPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICogRWFjaCBieXRlIG9mIENDUyBjb3JyZXNwb25kcyB0byBhIDE2eDgg YXJlYSBvZgo+ID4+IHRoZSBtYWluIHN1cmZhY2UsIGFuZAo+ID4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAqIGVhY2ggQ0NTIHRpbGUgaXMgNjR4NjQgYnl0ZXMuCj4gPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICovCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgY2NzX3ggPSAoeCAq IDE2KSAlICg2NCAqIDE2KTsKPiA+PiArICAgICAgICAgICAgICAgICAgICAgICBjY3NfeSA9ICh5 ICogOCkgJSAoNjQgKiA4KTsKPiA+PiArICAgICAgICAgICAgICAgICAgICAgICBtYWluX3ggPSBp bnRlbF9mYi0+bm9ybWFsWzBdLnggJSAoNjQgKiAxNik7Cj4gPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgbWFpbl95ID0gaW50ZWxfZmItPm5vcm1hbFswXS55ICUgKDY0ICogOCk7Cj4gPj4gKwo+ ID4+ICsgICAgICAgICAgICAgICAgICAgICAgIC8qCj4gPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICogQ0NTIGRvZXNuJ3QgaGF2ZSBpdHMgb3duIHgveSBvZmZzZXQgcmVnaXN0ZXIsCj4gPj4g c28gdGhlIGludHJhIENDUyB0aWxlCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICogeC95 IG9mZnNldHMgbXVzdCBtYXRjaCBiZXR3ZWVuIENDUyBhbmQgdGhlIG1haW4KPiA+PiBzdXJmYWNl Lgo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAqLwo+ID4+ICsgICAgICAgICAgICAgICAg ICAgICAgIGlmIChtYWluX3ggIT0gY2NzX3ggfHwgbWFpbl95ICE9IGNjc195KSB7Cj4gPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEUk1fREVCVUdfS01TKCJCYWQgQ0NTIHgveSAo bWFpbiAlZCwlZCBjY3MKPiA+PiAlZCwlZCkgZnVsbCAobWFpbiAlZCwlZCBjY3MgJWQsJWQpXG4i LAo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWlu X3gsIG1haW5feSwKPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY2NzX3gsIGNjc195LAo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnRlbF9mYi0+bm9ybWFsWzBdLngsCj4gPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVsX2ZiLT5ub3JtYWxbMF0ueSwKPiA+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCwgeSk7Cj4g Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiA+PiAr ICAgICAgICAgICAgICAgICAgICAgICB9Cj4gPj4gKyAgICAgICAgICAgICAgIH0KPiA+PiArCj4g Pj4gICAgICAgICAgICAgICAgIC8qCj4gPj4gICAgICAgICAgICAgICAgICAqIFRoZSBmZW5jZSAo aWYgdXNlZCkgaXMgYWxpZ25lZCB0byB0aGUgc3RhcnQgb2YgdGhlCj4gPj4gb2JqZWN0Cj4gPj4g ICAgICAgICAgICAgICAgICAqIHNvIGhhdmluZyB0aGUgZnJhbWVidWZmZXIgd3JhcCBhcm91bmQg YWNyb3NzIHRoZSBlZGdlCj4gPj4gb2YgdGhlCj4gPj4gQEAgLTI4NzMsNiArMjkxMyw5IEBAIHN0 YXRpYyBpbnQgc2tsX21heF9wbGFuZV93aWR0aChjb25zdCBzdHJ1Y3QKPiA+PiBkcm1fZnJhbWVi dWZmZXIgKmZiLCBpbnQgcGxhbmUsCj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7 Cj4gPj4gICAgICAgICAgICAgICAgIH0KPiA+PiAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gPj4g KyAgICAgICBjYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0NDUzoKPiA+PiArICAgICAgIGNh c2UgSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEX0NDUzoKPiA+PiArICAgICAgICAgICAgICAgLyog RklYTUUgQVVYIHBsYW5lPyAqLwo+ID4+ICAgICAgICAgY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9U SUxFRDoKPiA+PiAgICAgICAgIGNhc2UgSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEOgo+ID4+ICAg ICAgICAgICAgICAgICBzd2l0Y2ggKGNwcCkgewo+ID4+IEBAIC0yODk1LDYgKzI5MzgsNDIgQEAg c3RhdGljIGludCBza2xfbWF4X3BsYW5lX3dpZHRoKGNvbnN0IHN0cnVjdAo+ID4+IGRybV9mcmFt ZWJ1ZmZlciAqZmIsIGludCBwbGFuZSwKPiA+PiAgICAgICAgIHJldHVybiAyMDQ4Owo+ID4+ICB9 Cj4gPj4KPiA+PiArc3RhdGljIGJvb2wgc2tsX2NoZWNrX21haW5fY2NzX2Nvb3JkaW5hdGVzKHN0 cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZQo+ID4+ICpwbGFuZV9zdGF0ZSwKPiA+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1haW5feCwgaW50IG1haW5feSwg dTMyCj4gPj4gbWFpbl9vZmZzZXQpCj4gPj4gK3sKPiA+PiArICAgICAgIGNvbnN0IHN0cnVjdCBk cm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gPj4gKyAgICAgICBp bnQgYXV4X3ggPSBwbGFuZV9zdGF0ZS0+YXV4Lng7Cj4gPj4gKyAgICAgICBpbnQgYXV4X3kgPSBw bGFuZV9zdGF0ZS0+YXV4Lnk7Cj4gPj4gKyAgICAgICB1MzIgYXV4X29mZnNldCA9IHBsYW5lX3N0 YXRlLT5hdXgub2Zmc2V0Owo+ID4+ICsgICAgICAgdTMyIGFsaWdubWVudCA9IGludGVsX3N1cmZf YWxpZ25tZW50KGZiLCAxKTsKPiA+PiArCj4gPj4gKyAgICAgICB3aGlsZSAoYXV4X29mZnNldCA+ PSBtYWluX29mZnNldCAmJiBhdXhfeSA8PSBtYWluX3kpIHsKPiA+PiArICAgICAgICAgICAgICAg aW50IHgsIHk7Cj4gPj4gKwo+ID4+ICsgICAgICAgICAgICAgICBpZiAoYXV4X3ggPT0gbWFpbl94 ICYmIGF1eF95ID09IG1haW5feSkKPiA+PiArICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK PiA+PiArCj4gPj4gKyAgICAgICAgICAgICAgIGlmIChhdXhfb2Zmc2V0ID09IDApCj4gPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gPj4gKwo+ID4+ICsgICAgICAgICAgICAgICB4 ID0gYXV4X3ggLyAxNjsKPiA+PiArICAgICAgICAgICAgICAgeSA9IGF1eF95IC8gODsKPiA+PiAr ICAgICAgICAgICAgICAgYXV4X29mZnNldCA9IGludGVsX2FkanVzdF90aWxlX29mZnNldCgmeCwg JnksIHBsYW5lX3N0YXRlLAo+ID4+IDEsCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV4X29mZnNldCwKPiA+PiBhdXhfb2Zmc2V0IC0g YWxpZ25tZW50KTsKPiA+PiArICAgICAgICAgICAgICAgYXV4X3ggPSB4ICogMTYgKyBhdXhfeCAl IDE2Owo+ID4+ICsgICAgICAgICAgICAgICBhdXhfeSA9IHkgKiA4ICsgYXV4X3kgJSA4Owo+ID4+ ICsgICAgICAgfQo+ID4+ICsKPiA+PiArICAgICAgIGlmIChhdXhfeCAhPSBtYWluX3ggfHwgYXV4 X3kgIT0gbWFpbl95KQo+ID4+ICsgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4gPj4gKwo+ ID4+ICsgICAgICAgcGxhbmVfc3RhdGUtPmF1eC5vZmZzZXQgPSBhdXhfb2Zmc2V0Owo+ID4+ICsg ICAgICAgcGxhbmVfc3RhdGUtPmF1eC54ID0gYXV4X3g7Cj4gPj4gKyAgICAgICBwbGFuZV9zdGF0 ZS0+YXV4LnkgPSBhdXhfeTsKPiA+PiArCj4gPj4gKyAgICAgICByZXR1cm4gdHJ1ZTsKPiA+PiAr fQo+ID4+ICsKPiA+PiAgc3RhdGljIGludCBza2xfY2hlY2tfbWFpbl9zdXJmYWNlKHN0cnVjdCBp bnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gPj4gIHsKPiA+PiAgICAgICAgIGNvbnN0 IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gPj4g QEAgLTI5MzcsNyArMzAxNiw3IEBAIHN0YXRpYyBpbnQgc2tsX2NoZWNrX21haW5fc3VyZmFjZShz dHJ1Y3QKPiA+PiBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gPj4KPiA+PiAgICAg ICAgICAgICAgICAgd2hpbGUgKCh4ICsgdykgKiBjcHAgPiBmYi0+cGl0Y2hlc1swXSkgewo+ID4+ ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPT0gMCkgewo+ID4+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRFJNX0RFQlVHX0tNUygiVW5hYmxlIHRvIGZpbmQgc3Vp dGFibGUKPiA+PiBkaXNwbGF5IHN1cmZhY2Ugb2Zmc2V0XG4iKTsKPiA+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIERSTV9ERUJVR19LTVMoIlVuYWJsZSB0byBmaW5kIHN1aXRhYmxl Cj4gPj4gZGlzcGxheSBzdXJmYWNlIG9mZnNldCBkdWUgdG8gWC10aWxpbmdcbiIpOwo+ID4+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gPj4gICAgICAg ICAgICAgICAgICAgICAgICAgfQo+ID4+Cj4gPj4gQEAgLTI5NDYsNiArMzAyNSwyNiBAQCBzdGF0 aWMgaW50IHNrbF9jaGVja19tYWluX3N1cmZhY2Uoc3RydWN0Cj4gPj4gaW50ZWxfcGxhbmVfc3Rh dGUgKnBsYW5lX3N0YXRlKQo+ID4+ICAgICAgICAgICAgICAgICB9Cj4gPj4gICAgICAgICB9Cj4g Pj4KPiA+PiArICAgICAgIC8qCj4gPj4gKyAgICAgICAgKiBDQ1MgQVVYIHN1cmZhY2UgZG9lc24n dCBoYXZlIGl0cyBvd24geC95IG9mZnNldHMsIHdlIG11c3QgbWFrZQo+ID4+IHN1cmUKPiA+PiAr ICAgICAgICAqIHRoZXkgbWF0Y2ggd2l0aCB0aGUgbWFpbiBzdXJmYWNlIHgveSBvZmZzZXRzLgo+ ID4+ICsgICAgICAgICovCj4gPj4gKyAgICAgICBpZiAoZmItPm1vZGlmaWVyID09IEk5MTVfRk9S TUFUX01PRF9ZX1RJTEVEX0NDUyB8fAo+ID4+ICsgICAgICAgICAgIGZiLT5tb2RpZmllciA9PSBJ OTE1X0ZPUk1BVF9NT0RfWWZfVElMRURfQ0NTKSB7Cj4gPj4gKyAgICAgICAgICAgICAgIHdoaWxl ICghc2tsX2NoZWNrX21haW5fY2NzX2Nvb3JkaW5hdGVzKHBsYW5lX3N0YXRlLCB4LCB5LAo+ID4+ IG9mZnNldCkpIHsKPiA+PiArICAgICAgICAgICAgICAgICAgICAgICBpZiAob2Zmc2V0ID09IDAp Cj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiA+PiArCj4gPj4g KyAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gaW50ZWxfYWRqdXN0X3RpbGVfb2Zmc2V0 KCZ4LCAmeSwKPiA+PiBwbGFuZV9zdGF0ZSwgMCwKPiA+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LCBvZmZzZXQgLQo+ID4+ IGFsaWdubWVudCk7Cj4gPj4gKyAgICAgICAgICAgICAgIH0KPiA+PiArCj4gPj4gKyAgICAgICAg ICAgICAgIGlmICh4ICE9IHBsYW5lX3N0YXRlLT5hdXgueCB8fCB5ICE9IHBsYW5lX3N0YXRlLT5h dXgueSkgewo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgIERSTV9ERUJVR19LTVMoIlVuYWJs ZSB0byBmaW5kIHN1aXRhYmxlIGRpc3BsYXkKPiA+PiBzdXJmYWNlIG9mZnNldCBkdWUgdG8gQ0NT XG4iKTsKPiA+PiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiA+PiAr ICAgICAgICAgICAgICAgfQo+ID4+ICsgICAgICAgfQo+ID4+ICsKPiA+PiAgICAgICAgIHBsYW5l X3N0YXRlLT5tYWluLm9mZnNldCA9IG9mZnNldDsKPiA+PiAgICAgICAgIHBsYW5lX3N0YXRlLT5t YWluLnggPSB4Owo+ID4+ICAgICAgICAgcGxhbmVfc3RhdGUtPm1haW4ueSA9IHk7Cj4gPj4gQEAg LTI5ODIsNiArMzA4MSw0NyBAQCBzdGF0aWMgaW50IHNrbF9jaGVja19udjEyX2F1eF9zdXJmYWNl KHN0cnVjdAo+ID4+IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiA+PiAgICAgICAg IHJldHVybiAwOwo+ID4+ICB9Cj4gPj4KPiA+PiArc3RhdGljIGludCBza2xfY2hlY2tfY2NzX2F1 eF9zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZQo+ID4+ICpwbGFuZV9zdGF0ZSkKPiA+ PiArewo+ID4+ICsgICAgICAgc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3Bs YW5lKHBsYW5lX3N0YXRlLT4KPiA+PiBiYXNlLnBsYW5lKTsKPiA+PiArICAgICAgIHN0cnVjdCBp bnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhwbGFuZV9zdGF0ZS0+YmFzZS5jcnRjKTsK PiA+PiArICAgICAgIGludCBzcmNfeCA9IHBsYW5lX3N0YXRlLT5iYXNlLnNyYy54MSA+PiAxNjsK PiA+PiArICAgICAgIGludCBzcmNfeSA9IHBsYW5lX3N0YXRlLT5iYXNlLnNyYy55MSA+PiAxNjsK PiA+PiArICAgICAgIGludCB4ID0gc3JjX3ggLyAxNjsKPiA+PiArICAgICAgIGludCB5ID0gc3Jj X3kgLyA4Owo+ID4+ICsgICAgICAgdTMyIG9mZnNldDsKPiA+PiArCj4gPj4gKyAgICAgICBzd2l0 Y2ggKHBsYW5lLT5pZCkgewo+ID4+ICsgICAgICAgY2FzZSBQTEFORV9QUklNQVJZOgo+ID4+ICsg ICAgICAgY2FzZSBQTEFORV9TUFJJVEUwOgo+ID4+ICsgICAgICAgICAgICAgICBicmVhazsKPiA+ PiArICAgICAgIGRlZmF1bHQ6Cj4gPj4gKyAgICAgICAgICAgICAgIERSTV9ERUJVR19LTVMoIlJD IHN1cHBvcnQgb25seSBvbiBwbGFuZSAxIGFuZCAyXG4iKTsKPiA+PiArICAgICAgICAgICAgICAg cmV0dXJuIC1FSU5WQUw7Cj4gPj4gKyAgICAgICB9Cj4gPj4gKwo+ID4+ICsgICAgICAgaWYgKGNy dGMtPnBpcGUgPT0gUElQRV9DKSB7Cj4gPj4gKyAgICAgICAgICAgICAgIERSTV9ERUJVR19LTVMo Ik5vIFJDIHN1cHBvcnQgb24gcGlwZSBDXG4iKTsKPiA+PiArICAgICAgICAgICAgICAgcmV0dXJu IC1FSU5WQUw7Cj4gPj4gKyAgICAgICB9Cj4gPj4gKwo+ID4+ICsgICAgICAgaWYgKHBsYW5lX3N0 YXRlLT5iYXNlLnJvdGF0aW9uICYmCj4gPj4gKyAgICAgICAgICAgcGxhbmVfc3RhdGUtPmJhc2Uu cm90YXRpb24gJiB+KERSTV9ST1RBVEVfMCB8IERSTV9ST1RBVEVfMTgwKSkKPiA+PiB7Cj4gPj4g KyAgICAgICAgICAgICAgIERSTV9ERUJVR19LTVMoIlJDIHN1cHBvcnQgb25seSB3aXRoIDAvMTgw IGRlZ3JlZSByb3RhdGlvbgo+ID4+ICV4XG4iLAo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBsYW5lX3N0YXRlLT5iYXNlLnJvdGF0aW9uKTsKPiA+PiArICAgICAgICAgICAgICAg cmV0dXJuIC1FSU5WQUw7Cj4gPj4gKyAgICAgICB9Cj4gPj4gKwo+ID4+ICsgICAgICAgaW50ZWxf YWRkX2ZiX29mZnNldHMoJngsICZ5LCBwbGFuZV9zdGF0ZSwgMSk7Cj4gPj4gKyAgICAgICBvZmZz ZXQgPSBpbnRlbF9jb21wdXRlX3RpbGVfb2Zmc2V0KCZ4LCAmeSwgcGxhbmVfc3RhdGUsIDEpOwo+ ID4+ICsKPiA+PiArICAgICAgIHBsYW5lX3N0YXRlLT5hdXgub2Zmc2V0ID0gb2Zmc2V0Owo+ID4+ ICsgICAgICAgcGxhbmVfc3RhdGUtPmF1eC54ID0geCAqIDE2ICsgc3JjX3ggJSAxNjsKPiA+PiAr ICAgICAgIHBsYW5lX3N0YXRlLT5hdXgueSA9IHkgKiA4ICsgc3JjX3kgJSA4Owo+ID4+ICsKPiA+ PiArICAgICAgIHJldHVybiAwOwo+ID4+ICt9Cj4gPj4gKwo+ID4+ICBpbnQgc2tsX2NoZWNrX3Bs YW5lX3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiA+PiAg ewo+ID4+ICAgICAgICAgY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9z dGF0ZS0+YmFzZS5mYjsKPiA+PiBAQCAtMzAwMiw2ICszMTQyLDExIEBAIGludCBza2xfY2hlY2tf cGxhbmVfc3VyZmFjZShzdHJ1Y3QKPiA+PiBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUp Cj4gPj4gICAgICAgICAgICAgICAgIHJldCA9IHNrbF9jaGVja19udjEyX2F1eF9zdXJmYWNlKHBs YW5lX3N0YXRlKTsKPiA+PiAgICAgICAgICAgICAgICAgaWYgKHJldCkKPiA+PiAgICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4+ICsgICAgICAgfSBlbHNlIGlmIChmYi0+bW9k aWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfQ0NTIHx8Cj4gPj4gKyAgICAgICAgICAg ICAgICAgIGZiLT5tb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRURfQ0NTKSB7Cj4g Pj4gKyAgICAgICAgICAgICAgIHJldCA9IHNrbF9jaGVja19jY3NfYXV4X3N1cmZhY2UocGxhbmVf c3RhdGUpOwo+ID4+ICsgICAgICAgICAgICAgICBpZiAocmV0KQo+ID4+ICsgICAgICAgICAgICAg ICAgICAgICAgIHJldHVybiByZXQ7Cj4gPj4gICAgICAgICB9IGVsc2Ugewo+ID4+ICAgICAgICAg ICAgICAgICBwbGFuZV9zdGF0ZS0+YXV4Lm9mZnNldCA9IH4weGZmZjsKPiA+PiAgICAgICAgICAg ICAgICAgcGxhbmVfc3RhdGUtPmF1eC54ID0gMDsKPiA+PiBAQCAtMzM1Nyw4ICszNTAyLDEyIEBA IHUzMiBza2xfcGxhbmVfY3RsX3RpbGluZyh1aW50NjRfdCBmYl9tb2RpZmllcikKPiA+PiAgICAg ICAgICAgICAgICAgcmV0dXJuIFBMQU5FX0NUTF9USUxFRF9YOwo+ID4+ICAgICAgICAgY2FzZSBJ OTE1X0ZPUk1BVF9NT0RfWV9USUxFRDoKPiA+PiAgICAgICAgICAgICAgICAgcmV0dXJuIFBMQU5F X0NUTF9USUxFRF9ZOwo+ID4+ICsgICAgICAgY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9D Q1M6Cj4gPj4gKyAgICAgICAgICAgICAgIHJldHVybiBQTEFORV9DVExfVElMRURfWSB8IFBMQU5F X0NUTF9ERUNPTVBSRVNTSU9OX0VOQUJMRTsKPiA+PiAgICAgICAgIGNhc2UgSTkxNV9GT1JNQVRf TU9EX1lmX1RJTEVEOgo+ID4+ICAgICAgICAgICAgICAgICByZXR1cm4gUExBTkVfQ1RMX1RJTEVE X1lGOwo+ID4+ICsgICAgICAgY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRURfQ0NTOgo+ID4+ ICsgICAgICAgICAgICAgICByZXR1cm4gUExBTkVfQ1RMX1RJTEVEX1lGIHwgUExBTkVfQ1RMX0RF Q09NUFJFU1NJT05fCj4gPj4gRU5BQkxFOwo+ID4+ICAgICAgICAgZGVmYXVsdDoKPiA+PiAgICAg ICAgICAgICAgICAgTUlTU0lOR19DQVNFKGZiX21vZGlmaWVyKTsKPiA+PiAgICAgICAgIH0KPiA+ PiBAQCAtMzQwMSw2ICszNTUwLDcgQEAgc3RhdGljIHZvaWQgc2t5bGFrZV91cGRhdGVfcHJpbWFy eV9wbGFuZShzdHJ1Y3QKPiA+PiBkcm1fcGxhbmUgKnBsYW5lLAo+ID4+ICAgICAgICAgdTMyIHBs YW5lX2N0bDsKPiA+PiAgICAgICAgIHVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRl LT5iYXNlLnJvdGF0aW9uOwo+ID4+ICAgICAgICAgdTMyIHN0cmlkZSA9IHNrbF9wbGFuZV9zdHJp ZGUoZmIsIDAsIHJvdGF0aW9uKTsKPiA+PiArICAgICAgIHUzMiBhdXhfc3RyaWRlID0gc2tsX3Bs YW5lX3N0cmlkZShmYiwgMSwgcm90YXRpb24pOwo+ID4+ICAgICAgICAgdTMyIHN1cmZfYWRkciA9 IHBsYW5lX3N0YXRlLT5tYWluLm9mZnNldDsKPiA+PiAgICAgICAgIGludCBzY2FsZXJfaWQgPSBw bGFuZV9zdGF0ZS0+c2NhbGVyX2lkOwo+ID4+ICAgICAgICAgaW50IHNyY194ID0gcGxhbmVfc3Rh dGUtPm1haW4ueDsKPiA+PiBAQCAtMzQzNiw2ICszNTg2LDEwIEBAIHN0YXRpYyB2b2lkIHNreWxh a2VfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0Cj4gPj4gZHJtX3BsYW5lICpwbGFuZSwKPiA+ PiAgICAgICAgIEk5MTVfV1JJVEUoUExBTkVfT0ZGU0VUKHBpcGUsIHBsYW5lX2lkKSwgKHNyY195 IDw8IDE2KSB8IHNyY194KTsKPiA+PiAgICAgICAgIEk5MTVfV1JJVEUoUExBTkVfU1RSSURFKHBp cGUsIHBsYW5lX2lkKSwgc3RyaWRlKTsKPiA+PiAgICAgICAgIEk5MTVfV1JJVEUoUExBTkVfU0la RShwaXBlLCBwbGFuZV9pZCksIChzcmNfaCA8PCAxNikgfCBzcmNfdyk7Cj4gPj4gKyAgICAgICBJ OTE1X1dSSVRFKFBMQU5FX0FVWF9ESVNUKHBpcGUsIHBsYW5lX2lkKSwKPiA+PiArICAgICAgICAg ICAgICAgICAgKHBsYW5lX3N0YXRlLT5hdXgub2Zmc2V0IC0gc3VyZl9hZGRyKSB8IGF1eF9zdHJp ZGUpOwo+ID4+ICsgICAgICAgSTkxNV9XUklURShQTEFORV9BVVhfT0ZGU0VUKHBpcGUsIHBsYW5l X2lkKSwKPiA+PiArICAgICAgICAgICAgICAgICAgKHBsYW5lX3N0YXRlLT5hdXgueSA8PCAxNikg fCBwbGFuZV9zdGF0ZS0+YXV4LngpOwo+ID4+Cj4gPj4gICAgICAgICBpZiAoc2NhbGVyX2lkID49 IDApIHsKPiA+PiAgICAgICAgICAgICAgICAgdWludDMyX3QgcHNfY3RybCA9IDA7Cj4gPj4gQEAg LTk4MDcsMTAgKzk5NjEsMTYgQEAgc2t5bGFrZV9nZXRfaW5pdGlhbF9wbGFuZV9jb25maWcoc3Ry dWN0Cj4gPj4gaW50ZWxfY3J0YyAqY3J0YywKPiA+PiAgICAgICAgICAgICAgICAgZmItPm1vZGlm aWVyID0gSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQ7Cj4gPj4gICAgICAgICAgICAgICAgIGJyZWFr Owo+ID4+ICAgICAgICAgY2FzZSBQTEFORV9DVExfVElMRURfWToKPiA+PiAtICAgICAgICAgICAg ICAgZmItPm1vZGlmaWVyID0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQ7Cj4gPj4gKyAgICAgICAg ICAgICAgIGlmICh2YWwgJiBQTEFORV9DVExfREVDT01QUkVTU0lPTl9FTkFCTEUpCj4gPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgZmItPm1vZGlmaWVyID0gSTkxNV9GT1JNQVRfTU9EX1lfVElM RURfQ0NTOwo+ID4+ICsgICAgICAgICAgICAgICBlbHNlCj4gPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgZmItPm1vZGlmaWVyID0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQ7Cj4gPj4gICAgICAg ICAgICAgICAgIGJyZWFrOwo+ID4+ICAgICAgICAgY2FzZSBQTEFORV9DVExfVElMRURfWUY6Cj4g Pj4gLSAgICAgICAgICAgICAgIGZiLT5tb2RpZmllciA9IEk5MTVfRk9STUFUX01PRF9ZZl9USUxF RDsKPiA+PiArICAgICAgICAgICAgICAgaWYgKHZhbCAmIFBMQU5FX0NUTF9ERUNPTVBSRVNTSU9O X0VOQUJMRSkKPiA+PiArICAgICAgICAgICAgICAgICAgICAgICBmYi0+bW9kaWZpZXIgPSBJOTE1 X0ZPUk1BVF9NT0RfWWZfVElMRURfQ0NTOwo+ID4+ICsgICAgICAgICAgICAgICBlbHNlCj4gPj4g KyAgICAgICAgICAgICAgICAgICAgICAgZmItPm1vZGlmaWVyID0gSTkxNV9GT1JNQVRfTU9EX1lm X1RJTEVEOwo+ID4+ICAgICAgICAgICAgICAgICBicmVhazsKPiA+PiAgICAgICAgIGRlZmF1bHQ6 Cj4gPj4gICAgICAgICAgICAgICAgIE1JU1NJTkdfQ0FTRSh0aWxpbmcpOwo+ID4+IEBAIC0xMjAx NCw3ICsxMjE3NCw3IEBAIHN0YXRpYyB2b2lkIHNrbF9kb19tbWlvX2ZsaXAoc3RydWN0IGludGVs X2NydGMKPiA+PiAqaW50ZWxfY3J0YywKPiA+PiAgICAgICAgIHUzMiBjdGwsIHN0cmlkZSA9IHNr bF9wbGFuZV9zdHJpZGUoZmIsIDAsIHJvdGF0aW9uKTsKPiA+Pgo+ID4+ICAgICAgICAgY3RsID0g STkxNV9SRUFEKFBMQU5FX0NUTChwaXBlLCAwKSk7Cj4gPj4gLSAgICAgICBjdGwgJj0gflBMQU5F X0NUTF9USUxFRF9NQVNLOwo+ID4+ICsgICAgICAgY3RsICY9IH4oUExBTkVfQ1RMX1RJTEVEX01B U0sgfCBQTEFORV9DVExfREVDT01QUkVTU0lPTl9FTkFCTEUpOwo+ID4+ICAgICAgICAgc3dpdGNo IChmYi0+bW9kaWZpZXIpIHsKPiA+PiAgICAgICAgIGNhc2UgRFJNX0ZPUk1BVF9NT0RfTk9ORToK PiA+PiAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gPj4gQEAgLTEyMDI0LDkgKzEyMTg0LDE1IEBA IHN0YXRpYyB2b2lkIHNrbF9kb19tbWlvX2ZsaXAoc3RydWN0IGludGVsX2NydGMKPiA+PiAqaW50 ZWxfY3J0YywKPiA+PiAgICAgICAgIGNhc2UgSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQ6Cj4gPj4g ICAgICAgICAgICAgICAgIGN0bCB8PSBQTEFORV9DVExfVElMRURfWTsKPiA+PiAgICAgICAgICAg ICAgICAgYnJlYWs7Cj4gPj4gKyAgICAgICBjYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0ND UzoKPiA+PiArICAgICAgICAgICAgICAgY3RsIHw9IFBMQU5FX0NUTF9USUxFRF9ZIHwgUExBTkVf Q1RMX0RFQ09NUFJFU1NJT05fRU5BQkxFOwo+ID4+ICsgICAgICAgICAgICAgICBicmVhazsKPiA+ PiAgICAgICAgIGNhc2UgSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEOgo+ID4+ICAgICAgICAgICAg ICAgICBjdGwgfD0gUExBTkVfQ1RMX1RJTEVEX1lGOwo+ID4+ICAgICAgICAgICAgICAgICBicmVh azsKPiA+PiArICAgICAgIGNhc2UgSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEX0NDUzoKPiA+PiAr ICAgICAgICAgICAgICAgY3RsIHw9IFBMQU5FX0NUTF9USUxFRF9ZRiB8IFBMQU5FX0NUTF9ERUNP TVBSRVNTSU9OXwo+ID4+IEVOQUJMRTsKPiA+PiArICAgICAgICAgICAgICAgYnJlYWs7Cj4gPj4g ICAgICAgICBkZWZhdWx0Ogo+ID4+ICAgICAgICAgICAgICAgICBNSVNTSU5HX0NBU0UoZmItPm1v ZGlmaWVyKTsKPiA+PiAgICAgICAgIH0KPiA+PiBAQCAtMTU5MjUsOSArMTYwOTEsMTAgQEAgc3Rh dGljIGludCBpbnRlbF9mcmFtZWJ1ZmZlcl9pbml0KHN0cnVjdAo+ID4+IGRybV9kZXZpY2UgKmRl diwKPiA+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaikKPiA+PiAgewo+ID4+ICAgICAgICAgc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ID4+ICsgICAgICAgc3RydWN0IGRybV9m cmFtZWJ1ZmZlciAqZmIgPSAmaW50ZWxfZmItPmJhc2U7Cj4gPj4gICAgICAgICB1bnNpZ25lZCBp bnQgdGlsaW5nID0gaTkxNV9nZW1fb2JqZWN0X2dldF90aWxpbmcob2JqKTsKPiA+PiAtICAgICAg IGludCByZXQ7Cj4gPj4gLSAgICAgICB1MzIgcGl0Y2hfbGltaXQsIHN0cmlkZV9hbGlnbm1lbnQ7 Cj4gPj4gKyAgICAgICBpbnQgcmV0LCBpOwo+ID4+ICsgICAgICAgdTMyIHBpdGNoX2xpbWl0Owo+ ID4+ICAgICAgICAgc3RydWN0IGRybV9mb3JtYXRfbmFtZV9idWYgZm9ybWF0X25hbWU7Cj4gPj4K PiA+PiAgICAgICAgIFdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmZGV2LT5zdHJ1Y3RfbXV0ZXgp KTsKPiA+PiBAQCAtMTU5NTMsNiArMTYxMjAsMTkgQEAgc3RhdGljIGludCBpbnRlbF9mcmFtZWJ1 ZmZlcl9pbml0KHN0cnVjdAo+ID4+IGRybV9kZXZpY2UgKmRldiwKPiA+Pgo+ID4+ICAgICAgICAg LyogUGFzc2VkIGluIG1vZGlmaWVyIHNhbml0eSBjaGVja2luZy4gKi8KPiA+PiAgICAgICAgIHN3 aXRjaCAobW9kZV9jbWQtPm1vZGlmaWVyWzBdKSB7Cj4gPj4gKyAgICAgICBjYXNlIEk5MTVfRk9S TUFUX01PRF9ZX1RJTEVEX0NDUzoKPiA+PiArICAgICAgIGNhc2UgSTkxNV9GT1JNQVRfTU9EX1lm X1RJTEVEX0NDUzoKPiA+PiArICAgICAgICAgICAgICAgc3dpdGNoIChtb2RlX2NtZC0+cGl4ZWxf Zm9ybWF0KSB7Cj4gPj4gKyAgICAgICAgICAgICAgIGNhc2UgRFJNX0ZPUk1BVF9YQkdSODg4ODoK PiA+PiArICAgICAgICAgICAgICAgY2FzZSBEUk1fRk9STUFUX0FCR1I4ODg4Ogo+ID4+ICsgICAg ICAgICAgICAgICBjYXNlIERSTV9GT1JNQVRfWFJHQjg4ODg6Cj4gPj4gKyAgICAgICAgICAgICAg IGNhc2UgRFJNX0ZPUk1BVF9BUkdCODg4ODoKPiA+PiArICAgICAgICAgICAgICAgICAgICAgICBi cmVhazsKPiA+PiArICAgICAgICAgICAgICAgZGVmYXVsdDoKPiA+PiArICAgICAgICAgICAgICAg ICAgICAgICBEUk1fREVCVUdfS01TKCJSQyBzdXBwb3J0ZWQgb25seSB3aXRoIFJHQjg4ODgKPiA+ PiBmb3JtYXRzXG4iKTsKPiA+PiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZB TDsKPiA+PiArICAgICAgICAgICAgICAgfQo+ID4+ICsgICAgICAgICAgICAgICAvKiBmYWxsIHRo cm91Z2ggKi8KPiA+PiAgICAgICAgIGNhc2UgSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQ6Cj4gPj4g ICAgICAgICBjYXNlIEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRDoKPiA+PiAgICAgICAgICAgICAg ICAgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA5KSB7Cj4gPj4gQEAgLTE2MDU5LDIyICsxNjIz OSw0NiBAQCBzdGF0aWMgaW50IGludGVsX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0Cj4gPj4gZHJt X2RldmljZSAqZGV2LAo+ID4+ICAgICAgICAgaWYgKG1vZGVfY21kLT5vZmZzZXRzWzBdICE9IDAp Cj4gPj4gICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4+Cj4gPj4gLSAgICAgICBk cm1faGVscGVyX21vZGVfZmlsbF9mYl9zdHJ1Y3QoZGV2LCAmaW50ZWxfZmItPmJhc2UsIG1vZGVf Y21kKTsKPiA+PiArICAgICAgIGRybV9oZWxwZXJfbW9kZV9maWxsX2ZiX3N0cnVjdChkZXYsIGZi LCBtb2RlX2NtZCk7Cj4gPj4KPiA+PiAtICAgICAgIHN0cmlkZV9hbGlnbm1lbnQgPSBpbnRlbF9m Yl9zdHJpZGVfYWxpZ25tZW50KCZpbnRlbF9mYi0+YmFzZSwgMCk7Cj4gPj4gLSAgICAgICBpZiAo bW9kZV9jbWQtPnBpdGNoZXNbMF0gJiAoc3RyaWRlX2FsaWdubWVudCAtIDEpKSB7Cj4gPj4gLSAg ICAgICAgICAgICAgIERSTV9ERUJVR19LTVMoInBpdGNoICglZCkgbXVzdCBiZSBhdCBsZWFzdCAl dSBieXRlCj4gPj4gYWxpZ25lZFxuIiwKPiA+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBtb2RlX2NtZC0+cGl0Y2hlc1swXSwgc3RyaWRlX2FsaWdubWVudCk7Cj4gPj4gLSAgICAgICAg ICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IGZiLT5m b3JtYXQtPm51bV9wbGFuZXM7IGkrKykgewo+ID4+ICsgICAgICAgICAgICAgICB1MzIgc3RyaWRl X2FsaWdubWVudDsKPiA+PiArCj4gPj4gKyAgICAgICAgICAgICAgIGlmIChtb2RlX2NtZC0+aGFu ZGxlc1tpXSAhPSBtb2RlX2NtZC0+aGFuZGxlc1swXSkgewo+ID4+ICsgICAgICAgICAgICAgICAg ICAgICAgIERSTV9ERUJVR19LTVMoImJhZCBwbGFuZSAlZCBoYW5kbGVcbiIsIGkpOwo+ID4+ICsg ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4+ICsgICAgICAgICAgICAg ICB9Cj4gPj4gKwo+ID4+ICsgICAgICAgICAgICAgICBzdHJpZGVfYWxpZ25tZW50ID0gaW50ZWxf ZmJfc3RyaWRlX2FsaWdubWVudChmYiwgaSk7Cj4gPj4gKwo+ID4+ICsgICAgICAgICAgICAgICAv Kgo+ID4+ICsgICAgICAgICAgICAgICAgKiBEaXNwbGF5IFdBICMwNTMxOiBza2wsYnh0LGtibCxn bGsKPiA+PiArICAgICAgICAgICAgICAgICoKPiA+PiArICAgICAgICAgICAgICAgICogUmVuZGVy IGRlY29tcHJlc3Npb24gYW5kIHBsYW5lIHdpZHRoID4gMzg0MAo+ID4+ICsgICAgICAgICAgICAg ICAgKiBjb21iaW5lZCB3aXRoIGhvcml6b250YWwgcGFubmluZyByZXF1aXJlcyB0aGUKPiA+PiAr ICAgICAgICAgICAgICAgICogcGxhbmUgc3RyaWRlIHRvIGJlIGEgbXVsdGlwbGUgb2YgNC4gV2Un bGwganVzdAo+ID4+ICsgICAgICAgICAgICAgICAgKiByZXF1aXJlIHRoZSBlbnRpcmUgZmIgdG8g YWNjb21tb2RhdGUgdGhhdCB0byBhdm9pZAo+ID4+ICsgICAgICAgICAgICAgICAgKiBwb3RlbnRp YWwgcnVudGltZSBlcnJvcnMgYXQgcGxhbmUgY29uZmlndXJhdGlvbiB0aW1lLgo+ID4+Cj4gPgo+ ID5Ob3RlIHRvIEJlbjogVXNlcnNwYWNlIG5lZWRzIHRvIGtub3cgYWJvdXQgdGhpcyB0b28uICBJ biB0aGlzIGNhc2UsIEkKPiA+YmVsaWV2ZSAibXVsdGlwbGUgb2YgNCIgbWVhbnMgIm11bHRpcGxl IG9mIDQgdGlsZXMiLiAgWW91J3ZlIG5ldmVyIGhpdCB0aGlzCj4gPmJlY2F1c2UgdGhlIHN0YW5k YXJkIDE5MjB4MTA4MCBpcyA2MCB0aWxlcyB3aWRlIHdoaWNoIGlzIGEgbXVsdGlwbGUgb2YgNC4K PiA+Cj4gPgo+ID4+ICsgICAgICAgICAgICAgICAgKi8KPiA+PiArICAgICAgICAgICAgICAgaWYg KElTX0dFTjkoZGV2X3ByaXYpICYmIGkgPT0gMCAmJiBmYi0+d2lkdGggPiAzODQwICYmCj4gPj4g KyAgICAgICAgICAgICAgICAgICAoZmItPm1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZX1RJ TEVEX0NDUyB8fAo+ID4+ICsgICAgICAgICAgICAgICAgICAgIGZiLT5tb2RpZmllciA9PSBJOTE1 X0ZPUk1BVF9NT0RfWWZfVElMRURfQ0NTKSkKPiA+PiArICAgICAgICAgICAgICAgICAgICAgICBz dHJpZGVfYWxpZ25tZW50ICo9IDQ7Cj4gPj4gKwo+ID4+ICsgICAgICAgICAgICAgICBpZiAoZmIt PnBpdGNoZXNbaV0gJiAoc3RyaWRlX2FsaWdubWVudCAtIDEpKSB7Cj4gPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgRFJNX0RFQlVHX0tNUygicGxhbmUgJWQgcGl0Y2ggKCVkKSBtdXN0IGJlIGF0 Cj4gPj4gbGVhc3QgJXUgYnl0ZSBhbGlnbmVkXG4iLAo+ID4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaSwgZmItPnBpdGNoZXNbaV0sIHN0cmlkZV9hbGlnbm1lbnQpOwo+ ID4+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4+ICsgICAgICAg ICAgICAgICB9Cj4gPj4gICAgICAgICB9Cj4gPj4KPiA+PiAgICAgICAgIGludGVsX2ZiLT5vYmog PSBvYmo7Cj4gPj4KPiA+PiAtICAgICAgIHJldCA9IGludGVsX2ZpbGxfZmJfaW5mbyhkZXZfcHJp diwgJmludGVsX2ZiLT5iYXNlKTsKPiA+PiArICAgICAgIHJldCA9IGludGVsX2ZpbGxfZmJfaW5m byhkZXZfcHJpdiwgZmIpOwo+ID4+ICAgICAgICAgaWYgKHJldCkKPiA+PiAgICAgICAgICAgICAg ICAgcmV0dXJuIHJldDsKPiA+Pgo+ID4+IC0gICAgICAgcmV0ID0gZHJtX2ZyYW1lYnVmZmVyX2lu aXQoZGV2LCAmaW50ZWxfZmItPmJhc2UsICZpbnRlbF9mYl9mdW5jcyk7Cj4gPj4gKyAgICAgICBy ZXQgPSBkcm1fZnJhbWVidWZmZXJfaW5pdChkZXYsIGZiLCAmaW50ZWxfZmJfZnVuY3MpOwo+ID4+ ICAgICAgICAgaWYgKHJldCkgewo+ID4+ICAgICAgICAgICAgICAgICBEUk1fRVJST1IoImZyYW1l YnVmZmVyIGluaXQgZmFpbGVkICVkXG4iLCByZXQpOwo+ID4+ICAgICAgICAgICAgICAgICByZXR1 cm4gcmV0Owo+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfCj4gPj4gcG0uYwo+ID4+IGluZGV4IDI0OTYy M2Q0NWJlMC4uMjU3ODJjZDE3NGMwIDEwMDY0NAo+ID4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3BtLmMKPiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5j Cj4gPj4gQEAgLTYyLDYgKzYyLDIwIEBAIHN0YXRpYyB2b2lkIGdlbjlfaW5pdF9jbG9ja19nYXRp bmcoc3RydWN0Cj4gPj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPj4gICAgICAgICBJ OTE1X1dSSVRFKENISUNLRU5fUEFSMV8xLAo+ID4+ICAgICAgICAgICAgICAgICAgICBJOTE1X1JF QUQoQ0hJQ0tFTl9QQVIxXzEpIHwgU0tMX0VEUF9QU1JfRklYX1JEV1JBUCk7Cj4gPj4KPiA+PiAr ICAgICAgIC8qCj4gPj4gKyAgICAgICAgKiBEaXNwbGF5IFdBIzAzOTA6IHNrbCxieHQsa2JsLGds awo+ID4+ICsgICAgICAgICoKPiA+PiArICAgICAgICAqIE11c3QgbWF0Y2ggU2FtcGxlciwgUGl4 ZWwgQmFjayBFbmQsIGFuZCBNZWRpYQo+ID4+ICsgICAgICAgICogKDB4RTE5NCBiaXQgOCwgMHg3 MDE0IGJpdCAxMywgMHg0RERDIGJpdHMgMjcgYW5kIDMxKS4KPiA+PiArICAgICAgICAqCj4gPj4g KyAgICAgICAgKiBJbmNsdWRpbmcgYml0cyBvdXRzaWRlIHRoZSBwYWdlIGluIHRoZSBoYXNoIHdv dWxkCj4gPj4gKyAgICAgICAgKiByZXF1aXJlIDIgKG9yIDQ/KSBNaUIgYWxpZ25tZW50IG9mIHJl c291cmNlcy4gSnVzdAo+ID4+ICsgICAgICAgICogYXNzdW1lIHRoZSBkZWZhdWwgaGFzaGluZyBt b2RlIHdoaWNoIG9ubHkgdXNlcyBiaXRzCj4gPj4gKyAgICAgICAgKiB3aXRoaW4gdGhlIHBhZ2Uu Cj4gPj4gKyAgICAgICAgKi8KPiA+PiArICAgICAgIEk5MTVfV1JJVEUoQ0hJQ0tFTl9QQVIxXzEs Cj4gPj4gKyAgICAgICAgICAgICAgICAgIEk5MTVfUkVBRChDSElDS0VOX1BBUjFfMSkgJiB+U0tM X1JDX0hBU0hfT1VUU0lERSk7Cj4gPj4gKwo+ID4+ICAgICAgICAgSTkxNV9XUklURShHRU44X0NP TkZJRzAsCj4gPj4gICAgICAgICAgICAgICAgICAgIEk5MTVfUkVBRChHRU44X0NPTkZJRzApIHwg R0VOOV9ERUZBVUxUX0ZJWEVTKTsKPiA+Pgo+ID4+IEBAIC0zMzE0LDcgKzMzMjgsOSBAQCBza2xf ZGRiX21pbl9hbGxvYyhjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlCj4gPj4gKnBzdGF0ZSwK PiA+Pgo+ID4+ICAgICAgICAgLyogRm9yIE5vbiBZLXRpbGUgcmV0dXJuIDgtYmxvY2tzICovCj4g Pj4gICAgICAgICBpZiAoZmItPm1vZGlmaWVyICE9IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEICYm Cj4gPj4gLSAgICAgICAgICAgZmItPm1vZGlmaWVyICE9IEk5MTVfRk9STUFUX01PRF9ZZl9USUxF RCkKPiA+PiArICAgICAgICAgICBmYi0+bW9kaWZpZXIgIT0gSTkxNV9GT1JNQVRfTU9EX1lmX1RJ TEVEICYmCj4gPj4gKyAgICAgICAgICAgZmItPm1vZGlmaWVyICE9IEk5MTVfRk9STUFUX01PRF9Z X1RJTEVEX0NDUyAmJgo+ID4+ICsgICAgICAgICAgIGZiLT5tb2RpZmllciAhPSBJOTE1X0ZPUk1B VF9NT0RfWWZfVElMRURfQ0NTKQo+ID4+ICAgICAgICAgICAgICAgICByZXR1cm4gODsKPiA+Pgo+ ID4+ICAgICAgICAgc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmaW50ZWxfcHN0YXRlLT5iYXNlLnNy YykgPj4gMTY7Cj4gPj4gQEAgLTM1OTAsNyArMzYwNiw5IEBAIHN0YXRpYyBpbnQgc2tsX2NvbXB1 dGVfcGxhbmVfd20oY29uc3Qgc3RydWN0Cj4gPj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4gPj4gICAgICAgICB9Cj4gPj4KPiA+PiAgICAgICAgIHlfdGlsZWQgPSBmYi0+bW9kaWZpZXIg PT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQgfHwKPiA+PiAtICAgICAgICAgICAgICAgICBmYi0+ bW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEOwo+ID4+ICsgICAgICAgICAgICAg ICAgIGZiLT5tb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQgfHwKPiA+PiArICAg ICAgICAgICAgICAgICBmYi0+bW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfQ0NT IHx8Cj4gPj4gKyAgICAgICAgICAgICAgICAgZmItPm1vZGlmaWVyID09IEk5MTVfRk9STUFUX01P RF9ZZl9USUxFRF9DQ1M7Cj4gPj4gICAgICAgICB4X3RpbGVkID0gZmItPm1vZGlmaWVyID09IEk5 MTVfRk9STUFUX01PRF9YX1RJTEVEOwo+ID4+Cj4gPj4gICAgICAgICAvKiBEaXNwbGF5IFdBICMx MTQxOiBrYmwuICovCj4gPj4gQEAgLTM2NzUsNiArMzY5MywxMyBAQCBzdGF0aWMgaW50IHNrbF9j b21wdXRlX3BsYW5lX3dtKGNvbnN0IHN0cnVjdAo+ID4+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+ID4+ICAgICAgICAgcmVzX2xpbmVzID0gRElWX1JPVU5EX1VQKHNlbGVjdGVkX3Jlc3Vs dC52YWwsCj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhbmVfYmxvY2tz X3Blcl9saW5lLnZhbCk7Cj4gPj4KPiA+PiArICAgICAgIC8qIERpc3BsYXkgV0EgIzExMjU6IHNr bCxieHQsa2JsLGdsayAqLwo+ID4+ICsgICAgICAgaWYgKGxldmVsID09IDAgJiYKPiA+PiArICAg ICAgICAgICAoZmItPm1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0NDUyB8fAo+ ID4+ICsgICAgICAgICAgICBmYi0+bW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVE X0NDUykpCj4gPj4gKyAgICAgICAgICAgICAgIHJlc19ibG9ja3MgKz0gZml4ZWRfMTZfMTZfdG9f dTMyX3JvdW5kX3VwKHlfdGlsZV9taW5pbXVtKTsKPiA+PiArCj4gPj4gKyAgICAgICAvKiBEaXNw bGF5IFdBICMxMTI2OiBza2wsYnh0LGtibCxnbGsgKi8KPiA+PiAgICAgICAgIGlmIChsZXZlbCA+ PSAxICYmIGxldmVsIDw9IDcpIHsKPiA+PiAgICAgICAgICAgICAgICAgaWYgKHlfdGlsZWQpIHsK PiA+PiAgICAgICAgICAgICAgICAgICAgICAgICByZXNfYmxvY2tzICs9IGZpeGVkXzE2XzE2X3Rv X3UzMl9yb3VuZF91cCh5Xwo+ID4+IHRpbGVfbWluaW11bSk7Cj4gPj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gPj4gYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9zcHJpdGUuYwo+ID4+IGluZGV4IDcwMzFiYzczM2Q5Ny4uMDYzYTk5NDgxNWQw IDEwMDY0NAo+ID4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4g Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPiA+PiBAQCAtMjEw LDYgKzIxMCw3IEBAIHNrbF91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqZHJtX3BsYW5l LAo+ID4+ICAgICAgICAgdTMyIHN1cmZfYWRkciA9IHBsYW5lX3N0YXRlLT5tYWluLm9mZnNldDsK PiA+PiAgICAgICAgIHVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5iYXNlLnJv dGF0aW9uOwo+ID4+ICAgICAgICAgdTMyIHN0cmlkZSA9IHNrbF9wbGFuZV9zdHJpZGUoZmIsIDAs IHJvdGF0aW9uKTsKPiA+PiArICAgICAgIHUzMiBhdXhfc3RyaWRlID0gc2tsX3BsYW5lX3N0cmlk ZShmYiwgMSwgcm90YXRpb24pOwo+ID4+ICAgICAgICAgaW50IGNydGNfeCA9IHBsYW5lX3N0YXRl LT5iYXNlLmRzdC54MTsKPiA+PiAgICAgICAgIGludCBjcnRjX3kgPSBwbGFuZV9zdGF0ZS0+YmFz ZS5kc3QueTE7Cj4gPj4gICAgICAgICB1aW50MzJfdCBjcnRjX3cgPSBkcm1fcmVjdF93aWR0aCgm cGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKPiA+PiBAQCAtMjQ4LDYgKzI0OSwxMCBAQCBza2xfdXBk YXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRybV9wbGFuZSwKPiA+PiAgICAgICAgIEk5MTVf V1JJVEUoUExBTkVfT0ZGU0VUKHBpcGUsIHBsYW5lX2lkKSwgKHkgPDwgMTYpIHwgeCk7Cj4gPj4g ICAgICAgICBJOTE1X1dSSVRFKFBMQU5FX1NUUklERShwaXBlLCBwbGFuZV9pZCksIHN0cmlkZSk7 Cj4gPj4gICAgICAgICBJOTE1X1dSSVRFKFBMQU5FX1NJWkUocGlwZSwgcGxhbmVfaWQpLCAoc3Jj X2ggPDwgMTYpIHwgc3JjX3cpOwo+ID4+ICsgICAgICAgSTkxNV9XUklURShQTEFORV9BVVhfRElT VChwaXBlLCBwbGFuZV9pZCksCj4gPj4gKyAgICAgICAgICAgICAgICAgIChwbGFuZV9zdGF0ZS0+ YXV4Lm9mZnNldCAtIHN1cmZfYWRkcikgfCBhdXhfc3RyaWRlKTsKPiA+PiArICAgICAgIEk5MTVf V1JJVEUoUExBTkVfQVVYX09GRlNFVChwaXBlLCBwbGFuZV9pZCksCj4gPj4gKyAgICAgICAgICAg ICAgICAgIChwbGFuZV9zdGF0ZS0+YXV4LnkgPDwgMTYpIHwgcGxhbmVfc3RhdGUtPmF1eC54KTsK PiA+Pgo+ID4+ICAgICAgICAgLyogcHJvZ3JhbSBwbGFuZSBzY2FsZXIgKi8KPiA+PiAgICAgICAg IGlmIChwbGFuZV9zdGF0ZS0+c2NhbGVyX2lkID49IDApIHsKPiA+PiAtLQo+ID4+IDIuMTAuMgo+ ID4+Cj4gPj4KCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJp LWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=