From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 3/3] drm/i915: Add format modifiers for Intel Date: Thu, 30 Mar 2017 11:57:49 +0300 Message-ID: <20170330085749.GE30290@intel.com> References: <20170324212950.2206-1-ben@bwidawsk.net> <20170324212950.2206-3-ben@bwidawsk.net> <20170329201713.GC30290@intel.com> <20170329221125.GA445@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: <20170329221125.GA445@mail.bwidawsk.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ben Widawsky Cc: Intel GFX , "Kristian H . Kristensen" , DRI Development List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBNYXIgMjksIDIwMTcgYXQgMDM6MTE6MjZQTSAtMDcwMCwgQmVuIFdpZGF3c2t5IHdy b3RlOgo+IE9uIDE3LTAzLTI5IDIzOjE3OjEzLCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4gPk9u IEZyaSwgTWFyIDI0LCAyMDE3IGF0IDAyOjI5OjUwUE0gLTA3MDAsIEJlbiBXaWRhd3NreSB3cm90 ZToKPiA+PiBUaGlzIHdhcyBiYXNlZCBvbiBhIHBhdGNoIG9yaWdpbmFsbHkgYnkgS3Jpc3RpYW4u IEl0IGhhcyBiZWVuIG1vZGlmaWVkCj4gPj4gcHJldHR5IGhlYXZpbHkgdG8gdXNlIHRoZSBuZXcg Y2FsbGJhY2tzIGZyb20gdGhlIHByZXZpb3VzIHBhdGNoLgo+ID4+Cj4gPj4gdjI6Cj4gPj4gICAt IEFkZCBMSU5FQVIgYW5kIFlmIG1vZGlmaWVycyB0byBsaXN0IChWaWxsZSkKPiA+PiAgIC0gQ29t YmluZSBpOHh4IGFuZCBpOTY1IGludG8gb25lIGxpc3Qgb2YgZm9ybWF0cyAoVmlsbGUpCj4gPj4g ICAtIEFsbG93IDEwMTAxMDIgZm9ybWF0cyBmb3IgWS9ZZiB0aWxlZCAoVmlsbGUpCj4gPj4KPiA+ PiB2MzoKPiA+PiAgIC0gSGFuZGxlIGN1cnNvciBmb3JtYXRzIChWaWxsZSkKPiA+PiAgIC0gUHV0 IGhhbmRsaW5nIGZvciBMSU5FQVIgaW4gdGhlIG1vZF9zdXBwb3J0IGZ1bmN0aW9ucyAoVmlsbGUp Cj4gPj4KPiA+PiBDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVs LmNvbT4KPiA+PiBDYzogS3Jpc3RpYW4gSC4gS3Jpc3RlbnNlbiA8aG9lZ3NiZXJnQGdtYWlsLmNv bT4KPiA+PiBTaWduZWQtb2ZmLWJ5OiBCZW4gV2lkYXdza3kgPGJlbkBid2lkYXdzay5uZXQ+Cj4g Pj4gLS0tCj4gPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDExMiAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQo+ID4+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9zcHJpdGUuYyAgfCAgMjUgKysrKysrKy0KPiA+PiAgMiBmaWxlcyBjaGFuZ2Vk LCAxMzEgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKPiA+Pgo+ID4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+PiBpbmRleCA4MDJhODQ0OWM1ZDMuLmJiNTU5YTExNmZk YSAxMDA2NDQKPiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMK PiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+PiBAQCAt NzIsNiArNzIsMTIgQEAgc3RhdGljIGNvbnN0IHVpbnQzMl90IGk5NjVfcHJpbWFyeV9mb3JtYXRz W10gPSB7Cj4gPj4gIAlEUk1fRk9STUFUX1hCR1IyMTAxMDEwLAo+ID4+ICB9Owo+ID4+Cj4gPj4g K3N0YXRpYyBjb25zdCB1aW50NjRfdCBpOXh4X2Zvcm1hdF9tb2RpZmllcnNbXSA9IHsKPiA+PiAr CUk5MTVfRk9STUFUX01PRF9YX1RJTEVELAo+ID4+ICsJRFJNX0ZPUk1BVF9NT0RfTElORUFSLAo+ ID4+ICsJRFJNX0ZPUk1BVF9NT0RfSU5WQUxJRAo+ID4+ICt9Owo+ID4+ICsKPiA+PiAgc3RhdGlj IGNvbnN0IHVpbnQzMl90IHNrbF9wcmltYXJ5X2Zvcm1hdHNbXSA9IHsKPiA+PiAgCURSTV9GT1JN QVRfQzgsCj4gPj4gIAlEUk1fRk9STUFUX1JHQjU2NSwKPiA+PiBAQCAtODcsNiArOTMsMTQgQEAg c3RhdGljIGNvbnN0IHVpbnQzMl90IHNrbF9wcmltYXJ5X2Zvcm1hdHNbXSA9IHsKPiA+PiAgCURS TV9GT1JNQVRfVllVWSwKPiA+PiAgfTsKPiA+Pgo+ID4+ICtzdGF0aWMgY29uc3QgdWludDY0X3Qg c2tsX2Zvcm1hdF9tb2RpZmllcnNbXSA9IHsKPiA+PiArCUk5MTVfRk9STUFUX01PRF9ZZl9USUxF RCwKPiA+PiArCUk5MTVfRk9STUFUX01PRF9ZX1RJTEVELAo+ID4+ICsJSTkxNV9GT1JNQVRfTU9E X1hfVElMRUQsCj4gPj4gKwlEUk1fRk9STUFUX01PRF9MSU5FQVIsCj4gPj4gKwlEUk1fRk9STUFU X01PRF9JTlZBTElECj4gPj4gK307Cj4gPj4gKwo+ID4+ICAvKiBDdXJzb3IgZm9ybWF0cyAqLwo+ ID4+ICBzdGF0aWMgY29uc3QgdWludDMyX3QgaW50ZWxfY3Vyc29yX2Zvcm1hdHNbXSA9IHsKPiA+ PiAgCURSTV9GT1JNQVRfQVJHQjg4ODgsCj4gPj4gQEAgLTEzNDUzLDYgKzEzNDY3LDgzIEBAIHZv aWQgaW50ZWxfcGxhbmVfZGVzdHJveShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKPiA+PiAgCWtm cmVlKHRvX2ludGVsX3BsYW5lKHBsYW5lKSk7Cj4gPj4gIH0KPiA+Pgo+ID4+ICtzdGF0aWMgYm9v bCBpOHh4X21vZF9zdXBwb3J0ZWQodWludDMyX3QgZm9ybWF0LCB1aW50NjRfdCBtb2RpZmllcikK PiA+PiArewo+ID4+ICsJc3dpdGNoIChmb3JtYXQpIHsKPiA+PiArCWNhc2UgRFJNX0ZPUk1BVF9D ODoKPiA+PiArCWNhc2UgRFJNX0ZPUk1BVF9SR0I1NjU6Cj4gPj4gKwljYXNlIERSTV9GT1JNQVRf WFJHQjE1NTU6Cj4gPj4gKwljYXNlIERSTV9GT1JNQVRfWFJHQjg4ODg6Cj4gPj4gKwkJcmV0dXJu IG1vZGlmaWVyID09IERSTV9GT1JNQVRfTU9EX0xJTkVBUiB8fAo+ID4+ICsJCQltb2RpZmllciA9 PSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRDsKPiA+PiArCWRlZmF1bHQ6Cj4gPj4gKwkJcmV0dXJu IGZhbHNlOwo+ID4+ICsJfQo+ID4+ICt9Cj4gPj4gKwo+ID4+ICtzdGF0aWMgYm9vbCBpOTY1X21v ZF9zdXBwb3J0ZWQodWludDMyX3QgZm9ybWF0LCB1aW50NjRfdCBtb2RpZmllcikKPiA+PiArewo+ ID4+ICsJc3dpdGNoIChmb3JtYXQpIHsKPiA+PiArCWNhc2UgRFJNX0ZPUk1BVF9DODoKPiA+PiAr CWNhc2UgRFJNX0ZPUk1BVF9SR0I1NjU6Cj4gPj4gKwljYXNlIERSTV9GT1JNQVRfWFJHQjg4ODg6 Cj4gPj4gKwljYXNlIERSTV9GT1JNQVRfWEJHUjg4ODg6Cj4gPj4gKwljYXNlIERSTV9GT1JNQVRf WFJHQjIxMDEwMTA6Cj4gPj4gKwljYXNlIERSTV9GT1JNQVRfWEJHUjIxMDEwMTA6Cj4gPj4gKwkJ cmV0dXJuIG1vZGlmaWVyID09IERSTV9GT1JNQVRfTU9EX0xJTkVBUiB8fAo+ID4+ICsJCQltb2Rp ZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRDsKPiA+PiArCWRlZmF1bHQ6Cj4gPj4gKwkJ cmV0dXJuIGZhbHNlOwo+ID4+ICsJfQo+ID4+ICt9Cj4gPj4gKwo+ID4+ICtzdGF0aWMgYm9vbCBz a2xfbW9kX3N1cHBvcnRlZCh1aW50MzJfdCBmb3JtYXQsIHVpbnQ2NF90IG1vZGlmaWVyKQo+ID4+ ICt7Cj4gPj4gKwlzd2l0Y2ggKGZvcm1hdCkgewo+ID4+ICsJY2FzZSBEUk1fRk9STUFUX0M4Ogo+ ID4+ICsJCXJldHVybiBtb2RpZmllciA9PSBEUk1fRk9STUFUX01PRF9MSU5FQVIgfHwKPiA+PiAr CQkJKG1vZGlmaWVyID49IEk5MTVfRk9STUFUX01PRF9YX1RJTEVEICYmCj4gPj4gKwkJCSBtb2Rp ZmllciA8IEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRCk7Cj4gPgo+ID5UaGUgPj0gc3R1ZmYgbWFr ZXMgdGhpcyBoYXJkZXIgdG8gcGFyc2UgdGhhbiBpdCBzaG91bGQgYmUgSU1PLgo+ID5JJ2QganVz dCBsaXN0IGVhY2ggbW9kaWZpZXIgZXhwbGljaXRseS4KPiA+Cj4gPj4gKwljYXNlIERSTV9GT1JN QVRfUkdCNTY1Ogo+ID4+ICsJY2FzZSBEUk1fRk9STUFUX1hSR0I4ODg4Ogo+ID4+ICsJY2FzZSBE Uk1fRk9STUFUX1hCR1I4ODg4Ogo+ID4+ICsJY2FzZSBEUk1fRk9STUFUX0FSR0I4ODg4Ogo+ID4+ ICsJY2FzZSBEUk1fRk9STUFUX0FCR1I4ODg4Ogo+ID4+ICsJY2FzZSBEUk1fRk9STUFUX1hSR0Iy MTAxMDEwOgo+ID4+ICsJY2FzZSBEUk1fRk9STUFUX1hCR1IyMTAxMDEwOgo+ID4+ICsJCXJldHVy biBtb2RpZmllciA9PSBEUk1fRk9STUFUX01PRF9MSU5FQVIgfHwKPiA+PiArCQkJKG1vZGlmaWVy ID49IEk5MTVfRk9STUFUX01PRF9YX1RJTEVEICYmCj4gPj4gKwkJCW1vZGlmaWVyIDw9IEk5MTVf Rk9STUFUX01PRF9ZZl9USUxFRCk7Cj4gPgo+ID5kaXR0by4gQXQgZmlyc3QgSSBjb3VsZG4ndCBl dmVuIHNwb3QgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGlzIGFuZAo+ID50aGUgQzggY2FzZS4K PiA+Cj4gCj4gT2theSwgZ290IHRob3NlIGJvdGguIEkgdGhpbmsgZm9yIG5vdyBpdCdzIGp1c3Q6 Cj4gICAgICAgICBzd2l0Y2ggKGZvcm1hdCkgewo+ICAgICAgICAgY2FzZSBEUk1fRk9STUFUX0M4 Ogo+ICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1vZGlmaWVyKSB7Cj4gICAgICAgICAgICAgICAg IGNhc2UgRFJNX0ZPUk1BVF9NT0RfTElORUFSOgo+ICAgICAgICAgICAgICAgICBjYXNlIEk5MTVf Rk9STUFUX01PRF9YX1RJTEVEOgo+ICAgICAgICAgICAgICAgICBjYXNlIEk5MTVfRk9STUFUX01P RF9ZX1RJTEVEOgo+ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwo+ICAgICAg ICAgICAgICAgICBkZWZhdWx0Ogo+ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz ZTsKPiAgICAgICAgICAgICAgICAgfQo+ICAgICAgICAgY2FzZSBEUk1fRk9STUFUX1JHQjU2NToK PiAgICAgICAgIGNhc2UgRFJNX0ZPUk1BVF9YUkdCODg4ODoKPiAgICAgICAgIGNhc2UgRFJNX0ZP Uk1BVF9YQkdSODg4ODoKPiAgICAgICAgIGNhc2UgRFJNX0ZPUk1BVF9BUkdCODg4ODoKPiAgICAg ICAgIGNhc2UgRFJNX0ZPUk1BVF9BQkdSODg4ODoKPiAgICAgICAgIGNhc2UgRFJNX0ZPUk1BVF9Y UkdCMjEwMTAxMDoKPiAgICAgICAgIGNhc2UgRFJNX0ZPUk1BVF9YQkdSMjEwMTAxMDoKPiAgICAg ICAgIGNhc2UgRFJNX0ZPUk1BVF9ZVVlWOgo+ICAgICAgICAgY2FzZSBEUk1fRk9STUFUX1lWWVU6 Cj4gICAgICAgICBjYXNlIERSTV9GT1JNQVRfVVlWWToKPiAgICAgICAgIGNhc2UgRFJNX0ZPUk1B VF9WWVVZOgo+ICAgICAgICAgICAgICAgICAvKiBBbGwgaTkxNSBtb2RpZmllcnMgYXJlIGZpbmUg Ki8KPiAgICAgICAgICAgICAgICAgc3dpdGNoIChtb2RpZmllcikgewo+ICAgICAgICAgICAgICAg ICBjYXNlIERSTV9GT1JNQVRfTU9EX0xJTkVBUjoKPiAgICAgICAgICAgICAgICAgY2FzZSBJOTE1 X0ZPUk1BVF9NT0RfWF9USUxFRDoKPiAgICAgICAgICAgICAgICAgY2FzZSBJOTE1X0ZPUk1BVF9N T0RfWV9USUxFRDoKPiAgICAgICAgICAgICAgICAgY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElM RUQ6Cj4gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cj4gICAgICAgICAgICAg ICAgIGRlZmF1bHQ6Cj4gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwo+ICAg ICAgICAgICAgICAgICB9Cj4gICAgICAgICBkZWZhdWx0Ogo+ICAgICAgICAgICAgICAgICByZXR1 cm4gZmFsc2U7Cj4gICAgICAgICB9CgpsZ3RtCgo+IAo+IAo+IAo+ID4+ICsJY2FzZSBEUk1fRk9S TUFUX1lVWVY6Cj4gPj4gKwljYXNlIERSTV9GT1JNQVRfWVZZVToKPiA+PiArCWNhc2UgRFJNX0ZP Uk1BVF9VWVZZOgo+ID4+ICsJY2FzZSBEUk1fRk9STUFUX1ZZVVk6Cj4gPj4gKwkJcmV0dXJuIG1v ZGlmaWVyID09IERSTV9GT1JNQVRfTU9EX0xJTkVBUjsKPiA+Cj4gPkFueSBtb2RpZmllciB3aWxs IGRvIGZvciB0aGVzZSBmb3JtYXRzLgo+ID4KPiAKPiBPb3BzLCB0aGFua3MuIFNlZSBhYm92ZS4K PiAKPiA+PiArCWRlZmF1bHQ6Cj4gPj4gKwkJcmV0dXJuIGZhbHNlOwo+ID4+ICsJfQo+ID4+ICsK PiA+PiArfQo+ID4+ICsKPiA+PiArc3RhdGljIGJvb2wgaW50ZWxfcGxhbmVfZm9ybWF0X21vZF9z dXBwb3J0ZWQoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gPj4gKwkJCQkJICAgICB1aW50MzJf dCBmb3JtYXQsCj4gPj4gKwkJCQkJICAgICB1aW50NjRfdCBtb2RpZmllcikKPiA+PiArewo+ID4+ ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+ZGV2 KTsKPiA+PiArCj4gPj4gKwlpZiAoV0FSTl9PTihtb2RpZmllciA9PSBEUk1fRk9STUFUX01PRF9J TlZBTElEKSkKPiA+PiArCQlyZXR1cm4gZmFsc2U7Cj4gPj4gKwo+ID4+ICsJaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPj0gOSkKPiA+PiArCQlyZXR1cm4gc2tsX21vZF9zdXBwb3J0ZWQoZm9ybWF0 LCBtb2RpZmllcik7Cj4gPj4gKwllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpCj4g Pj4gKwkJcmV0dXJuIGk5NjVfbW9kX3N1cHBvcnRlZChmb3JtYXQsIG1vZGlmaWVyKTsKPiA+PiAr CWVsc2UKPiA+PiArCQlyZXR1cm4gaTh4eF9tb2Rfc3VwcG9ydGVkKGZvcm1hdCwgbW9kaWZpZXIp Owo+ID4+ICsKPiA+PiArCXJldHVybiBmYWxzZTsKPiA+PiArfQo+ID4KPiA+SSdkIGFsc28gbGlr ZSB0byBzZWUgLmZvcm1hdF9tb2Rfc3VwcG9ydGVkKCkgKyBtb2RpZmllcnNbXSBmb3IKPiA+Y3Vy c29ycyBhcyB3ZWxsLiBUaG9zZSBzaG91bGQgb25seSBhY2NlcHQgTElORUFSK0FSR0I4ODg4Lgo+ ID4KPiA+QXBhcnQgZnJvbSB0aG9zZSBpc3N1ZXMsIEkgdGhpbmsgdGhpcyBpcyBsb29raW5nIHBy ZXR0eSBnb29kLgo+ID4KPiAKPiBIb3cgYWJvdXQ6Cj4gICAgICAgICBzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5kZXYpOwo+IAo+ICAgICAgICAgaWYg KFdBUk5fT04obW9kaWZpZXIgPT0gRFJNX0ZPUk1BVF9NT0RfSU5WQUxJRCkpCj4gICAgICAgICAg ICAgICAgIHJldHVybiBmYWxzZTsKPiAKPiAgICAgICAgIGlmIChwbGFuZS0+YmFzZS50eXBlID09 IERSTV9QTEFORV9UWVBFX1BSSU1BUlkpCgpJIHByZXN1bWUgeW91IG1lYW50IENVUlNPUi4gQnV0 IHRoZXJlJ3Mgbm8gbmVlZCB0byBtZXNzIHVwIHRoaXMgZnVuY3Rpb24Kd2l0aCBjdXJzb3IgaW5m b3JtYXRpb24uIEl0IGNhbiBoYXZlIGl0cyBvd24gZnVuY3Rpb24uCgo+ICAgICAgICAgICAgICAg ICByZXR1cm4gbW9kaWZpZXIgPT0gRFJNX0ZPUk1BVF9NT0RfTElORUFSICYmCj4gICAgICAgICAg ICAgICAgICAgICAgICAgZm9ybWF0ID09IERSTV9GT1JNQVRfQVJHQjg4ODg7Cj4gCj4gICAgICAg ICBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+ICAgICAgICAgICAgICAgICByZXR1cm4g c2tsX21vZF9zdXBwb3J0ZWQoZm9ybWF0LCBtb2RpZmllcik7Cj4gICAgICAgICBlbHNlIGlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDQpCj4gICAgICAgICAgICAgICAgIHJldHVybiBpOTY1X21v ZF9zdXBwb3J0ZWQoZm9ybWF0LCBtb2RpZmllcik7Cj4gICAgICAgICBlbHNlCj4gICAgICAgICAg ICAgICAgIHJldHVybiBpOHh4X21vZF9zdXBwb3J0ZWQoZm9ybWF0LCBtb2RpZmllcik7CgpJdCB3 b3VsZCBwcm9iYWJseSBtYWtlIHNlbnNlIHRvIGF2b2lkIHRoaXMgaW5kaXJlY3Rpb24gYXMgd2Vs bCBieQpwbHVnZ2luZyB0aGVzZSBkaXJlY3RseSBpbnRvIC5mb3JtYXRfbW9kX3N1cHBvcnRlZCgp LCBidXQgdGhhdCB3b3VsZApuZWVkIHNvbWUgbW9yZSB3b3JrIGFzIHdlJ2QgaGF2ZSB0byBoYXZl IHNlcGFyYXRlIHBsYW5lIGZ1bmNzIGZvciBlYWNoCnBsYXRmb3JtLgoKQWN0dWFsbHksIG5vdyB0 aGF0IEkgdGhpbmsgYWJvdXQgaXQsIHdoYXQgeW91IGhhdmUgaGVyZSB3aWxsIHdvcmsgZm9yCnRo ZSBwcmltYXJ5IHBsYW5lcywgYnV0IGl0IHdpbGwgbm90IHdvcmsgZm9yIHRoZSBzcHJpdGUgcGxh bmVzIGFzCnRob3NlIHN1cHBvcnQgc29tZSBleHRyYSBmb3JtYXRzLiBTbyBlaXRoZXIgd2UgbmVl ZCB0byBhIHNwbGl0IGJldHdlZW4KcHJpbWFyeSB2cy4gc3ByaXRlLCBvciB3ZSBqdXN0IGFkZCBh bGwgdGhlIHNwcml0ZSBmb3JtYXRzIGludG8gdGhlc2UKZnVuY3Rpb25zIGFzIHdlbGwuIFdlbGws IEkgZ3Vlc3MgdGhpcyBvbmx5IGFmZmVjdHMgcHJlLVNLTCBwbGF0Zm9ybXMsIHNvCmp1c3QgYWRk aW5nIHRoZSBzcHJpdGUgZm9ybWF0cyBpbnRvIHRoZSBpOTY1IGZ1bmN0aW9uIHNlZW1zIGxpa2Ug aXQKc2hvdWxkIHdvcmsuCgo+IAo+ICAgICAgICAgcmV0dXJuIGZhbHNlOwo+IAo+IAo+ID4+ICsK PiA+PiAgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9mdW5jcyBpbnRlbF9wbGFuZV9mdW5jcyA9IHsK PiA+PiAgCS51cGRhdGVfcGxhbmUgPSBkcm1fYXRvbWljX2hlbHBlcl91cGRhdGVfcGxhbmUsCj4g Pj4gIAkuZGlzYWJsZV9wbGFuZSA9IGRybV9hdG9taWNfaGVscGVyX2Rpc2FibGVfcGxhbmUsCj4g Pj4gQEAgLTEzNDYyLDYgKzEzNTUzLDcgQEAgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9mdW5jcyBp bnRlbF9wbGFuZV9mdW5jcyA9IHsKPiA+PiAgCS5hdG9taWNfc2V0X3Byb3BlcnR5ID0gaW50ZWxf cGxhbmVfYXRvbWljX3NldF9wcm9wZXJ0eSwKPiA+PiAgCS5hdG9taWNfZHVwbGljYXRlX3N0YXRl ID0gaW50ZWxfcGxhbmVfZHVwbGljYXRlX3N0YXRlLAo+ID4+ICAJLmF0b21pY19kZXN0cm95X3N0 YXRlID0gaW50ZWxfcGxhbmVfZGVzdHJveV9zdGF0ZSwKPiA+PiArCS5mb3JtYXRfbW9kX3N1cHBv cnRlZCA9IGludGVsX3BsYW5lX2Zvcm1hdF9tb2Rfc3VwcG9ydGVkLAo+ID4+ICB9Owo+ID4+Cj4g Pj4gIHN0YXRpYyBpbnQKPiA+PiBAQCAtMTM1OTgsNiArMTM2OTAsNyBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IGRybV9wbGFuZV9mdW5jcyBpbnRlbF9jdXJzb3JfcGxhbmVfZnVuY3MgPSB7Cj4gPj4g IAkuYXRvbWljX3NldF9wcm9wZXJ0eSA9IGludGVsX3BsYW5lX2F0b21pY19zZXRfcHJvcGVydHks Cj4gPj4gIAkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGludGVsX3BsYW5lX2R1cGxpY2F0ZV9z dGF0ZSwKPiA+PiAgCS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IGludGVsX3BsYW5lX2Rlc3Ryb3lf c3RhdGUsCj4gPj4gKwkuZm9ybWF0X21vZF9zdXBwb3J0ZWQgPSBpbnRlbF9wbGFuZV9mb3JtYXRf bW9kX3N1cHBvcnRlZCwKPiA+PiAgfTsKPiA+Pgo+ID4+ICBzdGF0aWMgc3RydWN0IGludGVsX3Bs YW5lICoKPiA+PiBAQCAtMTM2MDgsNiArMTM3MDEsNyBAQCBpbnRlbF9wcmltYXJ5X3BsYW5lX2Ny ZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcGlwZSBwaXBlKQo+ ID4+ICAJY29uc3QgdWludDMyX3QgKmludGVsX3ByaW1hcnlfZm9ybWF0czsKPiA+PiAgCXVuc2ln bmVkIGludCBzdXBwb3J0ZWRfcm90YXRpb25zOwo+ID4+ICAJdW5zaWduZWQgaW50IG51bV9mb3Jt YXRzOwo+ID4+ICsJY29uc3QgdWludDY0X3QgKmludGVsX2Zvcm1hdF9tb2RpZmllcnM7Cj4gPj4g IAlpbnQgcmV0Owo+ID4+Cj4gPj4gIAlwcmltYXJ5ID0ga3phbGxvYyhzaXplb2YoKnByaW1hcnkp LCBHRlBfS0VSTkVMKTsKPiA+PiBAQCAtMTM2NDYsMjQgKzEzNzQwLDI4IEBAIGludGVsX3ByaW1h cnlfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBw aXBlIHBpcGUpCj4gPj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7Cj4gPj4gIAkJ aW50ZWxfcHJpbWFyeV9mb3JtYXRzID0gc2tsX3ByaW1hcnlfZm9ybWF0czsKPiA+PiAgCQludW1f Zm9ybWF0cyA9IEFSUkFZX1NJWkUoc2tsX3ByaW1hcnlfZm9ybWF0cyk7Cj4gPj4gKwkJaW50ZWxf Zm9ybWF0X21vZGlmaWVycyA9IHNrbF9mb3JtYXRfbW9kaWZpZXJzOwo+ID4+Cj4gPj4gIAkJcHJp bWFyeS0+dXBkYXRlX3BsYW5lID0gc2t5bGFrZV91cGRhdGVfcHJpbWFyeV9wbGFuZTsKPiA+PiAg CQlwcmltYXJ5LT5kaXNhYmxlX3BsYW5lID0gc2t5bGFrZV9kaXNhYmxlX3ByaW1hcnlfcGxhbmU7 Cj4gPj4gIAl9IGVsc2UgaWYgKEhBU19QQ0hfU1BMSVQoZGV2X3ByaXYpKSB7Cj4gPj4gIAkJaW50 ZWxfcHJpbWFyeV9mb3JtYXRzID0gaTk2NV9wcmltYXJ5X2Zvcm1hdHM7Cj4gPj4gIAkJbnVtX2Zv cm1hdHMgPSBBUlJBWV9TSVpFKGk5NjVfcHJpbWFyeV9mb3JtYXRzKTsKPiA+PiArCQlpbnRlbF9m b3JtYXRfbW9kaWZpZXJzID0gaTl4eF9mb3JtYXRfbW9kaWZpZXJzOwo+ID4+Cj4gPj4gIAkJcHJp bWFyeS0+dXBkYXRlX3BsYW5lID0gaXJvbmxha2VfdXBkYXRlX3ByaW1hcnlfcGxhbmU7Cj4gPj4g IAkJcHJpbWFyeS0+ZGlzYWJsZV9wbGFuZSA9IGk5eHhfZGlzYWJsZV9wcmltYXJ5X3BsYW5lOwo+ ID4+ICAJfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpIHsKPiA+PiAgCQlpbnRl bF9wcmltYXJ5X2Zvcm1hdHMgPSBpOTY1X3ByaW1hcnlfZm9ybWF0czsKPiA+PiAgCQludW1fZm9y bWF0cyA9IEFSUkFZX1NJWkUoaTk2NV9wcmltYXJ5X2Zvcm1hdHMpOwo+ID4+ICsJCWludGVsX2Zv cm1hdF9tb2RpZmllcnMgPSBpOXh4X2Zvcm1hdF9tb2RpZmllcnM7Cj4gPj4KPiA+PiAgCQlwcmlt YXJ5LT51cGRhdGVfcGxhbmUgPSBpOXh4X3VwZGF0ZV9wcmltYXJ5X3BsYW5lOwo+ID4+ICAJCXBy aW1hcnktPmRpc2FibGVfcGxhbmUgPSBpOXh4X2Rpc2FibGVfcHJpbWFyeV9wbGFuZTsKPiA+PiAg CX0gZWxzZSB7Cj4gPj4gIAkJaW50ZWxfcHJpbWFyeV9mb3JtYXRzID0gaTh4eF9wcmltYXJ5X2Zv cm1hdHM7Cj4gPj4gIAkJbnVtX2Zvcm1hdHMgPSBBUlJBWV9TSVpFKGk4eHhfcHJpbWFyeV9mb3Jt YXRzKTsKPiA+PiArCQlpbnRlbF9mb3JtYXRfbW9kaWZpZXJzID0gaTl4eF9mb3JtYXRfbW9kaWZp ZXJzOwo+ID4+Cj4gPj4gIAkJcHJpbWFyeS0+dXBkYXRlX3BsYW5lID0gaTl4eF91cGRhdGVfcHJp bWFyeV9wbGFuZTsKPiA+PiAgCQlwcmltYXJ5LT5kaXNhYmxlX3BsYW5lID0gaTl4eF9kaXNhYmxl X3ByaW1hcnlfcGxhbmU7Cj4gPj4gQEAgLTEzNjczLDIxICsxMzc3MSwyMSBAQCBpbnRlbF9wcmlt YXJ5X3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0g cGlwZSBwaXBlKQo+ID4+ICAJCXJldCA9IGRybV91bml2ZXJzYWxfcGxhbmVfaW5pdCgmZGV2X3By aXYtPmRybSwgJnByaW1hcnktPmJhc2UsCj4gPj4gIAkJCQkJICAgICAgIDAsICZpbnRlbF9wbGFu ZV9mdW5jcywKPiA+PiAgCQkJCQkgICAgICAgaW50ZWxfcHJpbWFyeV9mb3JtYXRzLCBudW1fZm9y bWF0cywKPiA+PiAtCQkJCQkgICAgICAgTlVMTCwKPiA+PiArCQkJCQkgICAgICAgaW50ZWxfZm9y bWF0X21vZGlmaWVycywKPiA+PiAgCQkJCQkgICAgICAgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSwK PiA+PiAgCQkJCQkgICAgICAgInBsYW5lIDElYyIsIHBpcGVfbmFtZShwaXBlKSk7Cj4gPj4gIAll bHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUgfHwgSVNfRzRYKGRldl9wcml2KSkKPiA+ PiAgCQlyZXQgPSBkcm1fdW5pdmVyc2FsX3BsYW5lX2luaXQoJmRldl9wcml2LT5kcm0sICZwcmlt YXJ5LT5iYXNlLAo+ID4+ICAJCQkJCSAgICAgICAwLCAmaW50ZWxfcGxhbmVfZnVuY3MsCj4gPj4g IAkJCQkJICAgICAgIGludGVsX3ByaW1hcnlfZm9ybWF0cywgbnVtX2Zvcm1hdHMsCj4gPj4gLQkJ CQkJICAgICAgIE5VTEwsCj4gPj4gKwkJCQkJICAgICAgIGludGVsX2Zvcm1hdF9tb2RpZmllcnMs Cj4gPj4gIAkJCQkJICAgICAgIERSTV9QTEFORV9UWVBFX1BSSU1BUlksCj4gPj4gIAkJCQkJICAg ICAgICJwcmltYXJ5ICVjIiwgcGlwZV9uYW1lKHBpcGUpKTsKPiA+PiAgCWVsc2UKPiA+PiAgCQly ZXQgPSBkcm1fdW5pdmVyc2FsX3BsYW5lX2luaXQoJmRldl9wcml2LT5kcm0sICZwcmltYXJ5LT5i YXNlLAo+ID4+ICAJCQkJCSAgICAgICAwLCAmaW50ZWxfcGxhbmVfZnVuY3MsCj4gPj4gIAkJCQkJ ICAgICAgIGludGVsX3ByaW1hcnlfZm9ybWF0cywgbnVtX2Zvcm1hdHMsCj4gPj4gLQkJCQkJICAg ICAgIE5VTEwsCj4gPj4gKwkJCQkJICAgICAgIGludGVsX2Zvcm1hdF9tb2RpZmllcnMsCj4gPj4g IAkJCQkJICAgICAgIERSTV9QTEFORV9UWVBFX1BSSU1BUlksCj4gPj4gIAkJCQkJICAgICAgICJw bGFuZSAlYyIsIHBsYW5lX25hbWUocHJpbWFyeS0+cGxhbmUpKTsKPiA+PiAgCWlmIChyZXQpCj4g Pj4gQEAgLTEzODE3LDYgKzEzOTE1LDExIEBAIGludGVsX3VwZGF0ZV9jdXJzb3JfcGxhbmUoc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gPj4gIAlpbnRlbF9jcnRjX3VwZGF0ZV9jdXJzb3IoY3J0 YywgY3J0Y19zdGF0ZSwgc3RhdGUpOwo+ID4+ICB9Cj4gPj4KPiA+PiArc3RhdGljIGNvbnN0IHVp bnQ2NF90IGN1cnNvcl9mb3JtYXRfbW9kaWZpZXJzW10gPSB7Cj4gPj4gKwlEUk1fRk9STUFUX01P RF9MSU5FQVIsCj4gPj4gKwlEUk1fRk9STUFUX01PRF9JTlZBTElECj4gPj4gK307Cj4gPj4gKwo+ ID4+ICBzdGF0aWMgc3RydWN0IGludGVsX3BsYW5lICoKPiA+PiAgaW50ZWxfY3Vyc29yX3BsYW5l X2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcGlwZSBwaXBl KQo+ID4+ICB7Cj4gPj4gQEAgLTEzODUyLDcgKzEzOTU1LDggQEAgaW50ZWxfY3Vyc29yX3BsYW5l X2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcGlwZSBwaXBl KQo+ID4+ICAJCQkJICAgICAgIDAsICZpbnRlbF9jdXJzb3JfcGxhbmVfZnVuY3MsCj4gPj4gIAkJ CQkgICAgICAgaW50ZWxfY3Vyc29yX2Zvcm1hdHMsCj4gPj4gIAkJCQkgICAgICAgQVJSQVlfU0la RShpbnRlbF9jdXJzb3JfZm9ybWF0cyksCj4gPj4gLQkJCQkgICAgICAgTlVMTCwgRFJNX1BMQU5F X1RZUEVfQ1VSU09SLAo+ID4+ICsJCQkJICAgICAgIGN1cnNvcl9mb3JtYXRfbW9kaWZpZXJzLAo+ ID4+ICsJCQkJICAgICAgIERSTV9QTEFORV9UWVBFX0NVUlNPUiwKPiA+PiAgCQkJCSAgICAgICAi Y3Vyc29yICVjIiwgcGlwZV9uYW1lKHBpcGUpKTsKPiA+PiAgCWlmIChyZXQpCj4gPj4gIAkJZ290 byBmYWlsOwo+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJp dGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gPj4gaW5kZXggOWYy YmRlZmRjNjkwLi5iZjE4ZDllZGM2NmYgMTAwNjQ0Cj4gPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfc3ByaXRlLmMKPiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9zcHJpdGUuYwo+ID4+IEBAIC0xMDUzLDYgKzEwNTMsMTIgQEAgc3RhdGljIGNvbnN0IHVpbnQz Ml90IGlsa19wbGFuZV9mb3JtYXRzW10gPSB7Cj4gPj4gIAlEUk1fRk9STUFUX1ZZVVksCj4gPj4g IH07Cj4gPj4KPiA+PiArc3RhdGljIGNvbnN0IHVpbnQ2NF90IGk5eHhfcGxhbmVfZm9ybWF0X21v ZGlmaWVyc1tdID0gewo+ID4+ICsJSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQsCj4gPj4gKwlEUk1f Rk9STUFUX01PRF9MSU5FQVIsCj4gPj4gKwlEUk1fRk9STUFUX01PRF9JTlZBTElECj4gPj4gK307 Cj4gPj4gKwo+ID4+ICBzdGF0aWMgY29uc3QgdWludDMyX3Qgc25iX3BsYW5lX2Zvcm1hdHNbXSA9 IHsKPiA+PiAgCURSTV9GT1JNQVRfWEJHUjg4ODgsCj4gPj4gIAlEUk1fRk9STUFUX1hSR0I4ODg4 LAo+ID4+IEBAIC0xMDg4LDYgKzEwOTQsMTQgQEAgc3RhdGljIHVpbnQzMl90IHNrbF9wbGFuZV9m b3JtYXRzW10gPSB7Cj4gPj4gIAlEUk1fRk9STUFUX1ZZVVksCj4gPj4gIH07Cj4gPj4KPiA+PiAr c3RhdGljIGNvbnN0IHVpbnQ2NF90IHNrbF9wbGFuZV9mb3JtYXRfbW9kaWZpZXJzW10gPSB7Cj4g Pj4gKwlJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQsCj4gPj4gKwlJOTE1X0ZPUk1BVF9NT0RfWV9U SUxFRCwKPiA+PiArCUk5MTVfRk9STUFUX01PRF9YX1RJTEVELAo+ID4+ICsJRFJNX0ZPUk1BVF9N T0RfTElORUFSLAo+ID4+ICsJRFJNX0ZPUk1BVF9NT0RfSU5WQUxJRAo+ID4+ICt9Owo+ID4+ICsK PiA+PiAgc3RydWN0IGludGVsX3BsYW5lICoKPiA+PiAgaW50ZWxfc3ByaXRlX3BsYW5lX2NyZWF0 ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPj4gIAkJCSAgZW51bSBwaXBl IHBpcGUsIGludCBwbGFuZSkKPiA+PiBAQCAtMTA5Niw2ICsxMTEwLDcgQEAgaW50ZWxfc3ByaXRl X3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPj4gIAlz dHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnN0YXRlID0gTlVMTDsKPiA+PiAgCXVuc2lnbmVkIGxv bmcgcG9zc2libGVfY3J0Y3M7Cj4gPj4gIAljb25zdCB1aW50MzJfdCAqcGxhbmVfZm9ybWF0czsK PiA+PiArCWNvbnN0IHVpbnQ2NF90ICptb2RpZmllcnM7Cj4gPj4gIAl1bnNpZ25lZCBpbnQgc3Vw cG9ydGVkX3JvdGF0aW9uczsKPiA+PiAgCWludCBudW1fcGxhbmVfZm9ybWF0czsKPiA+PiAgCWlu dCByZXQ7Cj4gPj4gQEAgLTExMjIsNiArMTEzNyw3IEBAIGludGVsX3Nwcml0ZV9wbGFuZV9jcmVh dGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4+Cj4gPj4gIAkJcGxhbmVf Zm9ybWF0cyA9IHNrbF9wbGFuZV9mb3JtYXRzOwo+ID4+ICAJCW51bV9wbGFuZV9mb3JtYXRzID0g QVJSQVlfU0laRShza2xfcGxhbmVfZm9ybWF0cyk7Cj4gPj4gKwkJbW9kaWZpZXJzID0gc2tsX3Bs YW5lX2Zvcm1hdF9tb2RpZmllcnM7Cj4gPj4gIAl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2 X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSB7Cj4gPj4gIAkJaW50ZWxfcGxhbmUt PmNhbl9zY2FsZSA9IGZhbHNlOwo+ID4+ICAJCWludGVsX3BsYW5lLT5tYXhfZG93bnNjYWxlID0g MTsKPiA+PiBAQCAtMTEzMSw2ICsxMTQ3LDcgQEAgaW50ZWxfc3ByaXRlX3BsYW5lX2NyZWF0ZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPj4KPiA+PiAgCQlwbGFuZV9mb3Jt YXRzID0gdmx2X3BsYW5lX2Zvcm1hdHM7Cj4gPj4gIAkJbnVtX3BsYW5lX2Zvcm1hdHMgPSBBUlJB WV9TSVpFKHZsdl9wbGFuZV9mb3JtYXRzKTsKPiA+PiArCQltb2RpZmllcnMgPSBpOXh4X3BsYW5l X2Zvcm1hdF9tb2RpZmllcnM7Cj4gPj4gIAl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikg Pj0gNykgewo+ID4+ICAJCWlmIChJU19JVllCUklER0UoZGV2X3ByaXYpKSB7Cj4gPj4gIAkJCWlu dGVsX3BsYW5lLT5jYW5fc2NhbGUgPSB0cnVlOwo+ID4+IEBAIC0xMTQ1LDYgKzExNjIsNyBAQCBp bnRlbF9zcHJpdGVfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiA+Pgo+ID4+ICAJCXBsYW5lX2Zvcm1hdHMgPSBzbmJfcGxhbmVfZm9ybWF0czsKPiA+PiAg CQludW1fcGxhbmVfZm9ybWF0cyA9IEFSUkFZX1NJWkUoc25iX3BsYW5lX2Zvcm1hdHMpOwo+ID4+ ICsJCW1vZGlmaWVycyA9IGk5eHhfcGxhbmVfZm9ybWF0X21vZGlmaWVyczsKPiA+PiAgCX0gZWxz ZSB7Cj4gPj4gIAkJaW50ZWxfcGxhbmUtPmNhbl9zY2FsZSA9IHRydWU7Cj4gPj4gIAkJaW50ZWxf cGxhbmUtPm1heF9kb3duc2NhbGUgPSAxNjsKPiA+PiBAQCAtMTE1Miw2ICsxMTcwLDcgQEAgaW50 ZWxfc3ByaXRlX3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4gPj4gIAkJaW50ZWxfcGxhbmUtPnVwZGF0ZV9wbGFuZSA9IGlsa191cGRhdGVfcGxhbmU7Cj4g Pj4gIAkJaW50ZWxfcGxhbmUtPmRpc2FibGVfcGxhbmUgPSBpbGtfZGlzYWJsZV9wbGFuZTsKPiA+ Pgo+ID4+ICsJCW1vZGlmaWVycyA9IGk5eHhfcGxhbmVfZm9ybWF0X21vZGlmaWVyczsKPiA+PiAg CQlpZiAoSVNfR0VONihkZXZfcHJpdikpIHsKPiA+PiAgCQkJcGxhbmVfZm9ybWF0cyA9IHNuYl9w bGFuZV9mb3JtYXRzOwo+ID4+ICAJCQludW1fcGxhbmVfZm9ybWF0cyA9IEFSUkFZX1NJWkUoc25i X3BsYW5lX2Zvcm1hdHMpOwo+ID4+IEBAIC0xMTg2LDEzICsxMjA1LDE1IEBAIGludGVsX3Nwcml0 ZV9wbGFuZV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4+ICAJ CXJldCA9IGRybV91bml2ZXJzYWxfcGxhbmVfaW5pdCgmZGV2X3ByaXYtPmRybSwgJmludGVsX3Bs YW5lLT5iYXNlLAo+ID4+ICAJCQkJCSAgICAgICBwb3NzaWJsZV9jcnRjcywgJmludGVsX3BsYW5l X2Z1bmNzLAo+ID4+ICAJCQkJCSAgICAgICBwbGFuZV9mb3JtYXRzLCBudW1fcGxhbmVfZm9ybWF0 cywKPiA+PiAtCQkJCQkgICAgICAgTlVMTCwgRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWSwKPiA+PiAr CQkJCQkgICAgICAgbW9kaWZpZXJzLAo+ID4+ICsJCQkJCSAgICAgICBEUk1fUExBTkVfVFlQRV9P VkVSTEFZLAo+ID4+ICAJCQkJCSAgICAgICAicGxhbmUgJWQlYyIsIHBsYW5lICsgMiwgcGlwZV9u YW1lKHBpcGUpKTsKPiA+PiAgCWVsc2UKPiA+PiAgCQlyZXQgPSBkcm1fdW5pdmVyc2FsX3BsYW5l X2luaXQoJmRldl9wcml2LT5kcm0sICZpbnRlbF9wbGFuZS0+YmFzZSwKPiA+PiAgCQkJCQkgICAg ICAgcG9zc2libGVfY3J0Y3MsICZpbnRlbF9wbGFuZV9mdW5jcywKPiA+PiAgCQkJCQkgICAgICAg cGxhbmVfZm9ybWF0cywgbnVtX3BsYW5lX2Zvcm1hdHMsCj4gPj4gLQkJCQkJICAgICAgIE5VTEws IERSTV9QTEFORV9UWVBFX09WRVJMQVksCj4gPj4gKwkJCQkJICAgICAgIG1vZGlmaWVycywKPiA+ PiArCQkJCQkgICAgICAgRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWSwKPiA+PiAgCQkJCQkgICAgICAg InNwcml0ZSAlYyIsIHNwcml0ZV9uYW1lKHBpcGUsIHBsYW5lKSk7Cj4gPj4gIAlpZiAocmV0KQo+ ID4+ICAJCWdvdG8gZmFpbDsKPiA+PiAtLQo+ID4+IDIuMTIuMQo+ID4KPiA+LS0gCj4gPlZpbGxl IFN5cmrDpGzDpAo+ID5JbnRlbCBPVEMKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=