From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan De Oliveira Subject: Re: [RESEND-CI v4 11/15] drm/i915: prepare scaler for YCBCR420 modeset Date: Fri, 30 Jun 2017 17:15:34 +0300 Message-ID: <1498832134.3311.9.camel@gmail.com> References: <1498041253-16426-1-git-send-email-shashank.sharma@intel.com> <1498041253-16426-11-git-send-email-shashank.sharma@intel.com> <1498565777.2376.8.camel@gmail.com> <63f1b571-6cd4-d4e9-1ce6-93528e05bde4@intel.com> <1498822455.3311.3.camel@gmail.com> <559eb3ea-e0cd-26f7-22aa-2b8d1e28424e@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <559eb3ea-e0cd-26f7-22aa-2b8d1e28424e@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Sharma, Shashank" , dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, ville.syrjala@linux.intel.com List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCAyMDE3LTA2LTMwIGF0IDE3OjI5ICswNTMwLCBTaGFybWEsIFNoYXNoYW5rIHdyb3Rl Ogo+IFJlZ2FyZHMKPiAKPiBTaGFzaGFuawo+IAo+IAo+IE9uIDYvMzAvMjAxNyA1OjA0IFBNLCBB bmRlciBDb25zZWx2YW4gRGUgT2xpdmVpcmEgd3JvdGU6Cj4gPiBPbiBGcmksIDIwMTctMDYtMzAg YXQgMTE6MjAgKzA1MzAsIFNoYXJtYSwgU2hhc2hhbmsgd3JvdGU6Cj4gPiA+IFJlZ2FyZHMKPiA+ ID4gCj4gPiA+IFNoYXNoYW5rCj4gPiA+IAo+ID4gPiAKPiA+ID4gT24gNi8yNy8yMDE3IDU6NDYg UE0sIEFuZGVyIENvbnNlbHZhbiBEZSBPbGl2ZWlyYSB3cm90ZToKPiA+ID4gPiBPbiBXZWQsIDIw MTctMDYtMjEgYXQgMTY6MDQgKzA1MzAsIFNoYXNoYW5rIFNoYXJtYSB3cm90ZToKPiA+ID4gPiA+ IFRvIGdldCBhIFlDQkNSNDIwIG91dHB1dCBmcm9tIGludGVsIHBsYXRmb3Jtcywgd2UgbmVlZCBv bmUKPiA+ID4gPiA+IHNjYWxlciB0byBzY2FsZSBkb3duIFlDQkNSNDQ0IHNhbXBsZXMgdG8gWUNC Q1I0MjAgc2FtcGxlcy4KPiA+ID4gPiA+IAo+ID4gPiA+ID4gVGhpcyBwYXRjaDoKPiA+ID4gPiA+ IC0gRG9lcyBzY2FsZXIgYWxsb2NhdGlvbiBmb3IgSERNSSB5Y2JjcjQyMCBvdXRwdXRzLgo+ID4g PiA+ID4gLSBQcm9ncmFtcyBQSVBFX01JU0MgcmVnaXN0ZXIgZm9yIHljYmNyNDIwIG91dHB1dC4K PiA+ID4gPiA+IC0gQWRkcyBhIG5ldyBzY2FsZXIgdXNlciAiSERNSSBvdXRwdXQiIHRvIHBsdWct aW50byBleGlzdGluZwo+ID4gPiA+ID4gICAgIHNjYWxlciBmcmFtZXdvcmsuIFRoaXMgb3V0cHV0 IHR5cGUgaXMgaWRlbnRpZmllZCB1c2luZyBiaXQKPiA+ID4gPiA+ICAgICAzMCBvZiB0aGUgc2Nh bGVyIHVzZXJzIGJpdG1hcC4KPiA+ID4gPiA+IAo+ID4gPiA+ID4gVjI6IHJlYmFzZQo+ID4gPiA+ ID4gVjM6IHJlYmFzZQo+ID4gPiA+ID4gVjQ6IHJlYmFzZQo+ID4gPiA+ID4gCj4gPiA+ID4gPiBD YzogVmlsbGUgU3lyamFsYSA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPiA+ID4g PiBDYzogQW5kZXIgQ29uc2VsdmFuIERlIE9saXZlaXJhIDxhbmRlci5jb25zZWx2YW4uZGUub2xp dmVpcmFAaW50ZWwuY29tPgo+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogU2hhc2hhbmsgU2hhcm1h IDxzaGFzaGFuay5zaGFybWFAaW50ZWwuY29tPgo+ID4gPiA+ID4gLS0tCj4gPiA+ID4gPiAgICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWMuYyAgfCAgNiArKysrKysKPiA+ID4gPiA+ ICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDI2ICsrKysrKysrKysr KysrKysrKysrKysrKysrCj4gPiA+ID4gPiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaCAgICAgfCAxMCArKysrKysrKystCj4gPiA+ID4gPiAgICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9oZG1pLmMgICAgfCAxMCArKysrKysrKysrCj4gPiA+ID4gPiAgICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jICAgfCAgMyArKy0KPiA+ID4gPiA+ICAgIDUgZmlsZXMg Y2hhbmdlZCwgNTMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKPiA+ID4gPiA+IAo+ID4g PiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMKPiA+ID4gPiA+IGluZGV4IDM2ZDRl NjMuLmE4YzlhYzUgMTAwNjQ0Cj4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9hdG9taWMuYwo+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf YXRvbWljLmMKPiA+ID4gPiA+IEBAIC0yNjQsNiArMjY0LDEyIEBAIGludCBpbnRlbF9hdG9taWNf c2V0dXBfc2NhbGVycyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiA+ID4g PiAgICAKPiA+ID4gPiA+ICAgIAkJCS8qIHBhbmVsIGZpdHRlciBjYXNlOiBhc3NpZ24gYXMgYSBj cnRjIHNjYWxlciAqLwo+ID4gPiA+ID4gICAgCQkJc2NhbGVyX2lkID0gJnNjYWxlcl9zdGF0ZS0+ c2NhbGVyX2lkOwo+ID4gPiA+ID4gKwkJfSBlbHNlIGlmIChpID09IFNLTF9IRE1JX09VVFBVVF9J TkRFWCkgewo+ID4gPiA+ID4gKwkJCW5hbWUgPSAiSERNSS1PVVRQVVQiOwo+ID4gPiA+ID4gKwkJ CWlkeCA9IGludGVsX2NydGMtPmJhc2UuYmFzZS5pZDsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJ CQkvKiBoZG1pIG91dHB1dCBjYXNlOiBuZWVkcyBhIHBpcGUgc2NhbGVyICovCj4gPiA+ID4gPiAr CQkJc2NhbGVyX2lkID0gJnNjYWxlcl9zdGF0ZS0+c2NhbGVyX2lkOwo+ID4gPiA+ID4gICAgCQl9 IGVsc2Ugewo+ID4gPiA+ID4gICAgCQkJbmFtZSA9ICJQTEFORSI7Cj4gPiA+ID4gPiAgICAKPiA+ ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+ID4gPiA+IGluZGV4IGRh Mjk1MzYuLjk4M2Y1ODEgMTAwNjQ0Cj4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kaXNwbGF5LmMKPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYwo+ID4gPiA+ID4gQEAgLTQ2MjYsNiArNDYyNiwxMSBAQCBza2xfdXBkYXRl X3NjYWxlcihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwgYm9vbCBmb3JjZV9k ZXRhY2gsCj4gPiA+ID4gPiAgICAJICovCj4gPiA+ID4gPiAgICAJbmVlZF9zY2FsaW5nID0gc3Jj X3cgIT0gZHN0X3cgfHwgc3JjX2ggIT0gZHN0X2g7Cj4gPiA+ID4gPiAgICAKPiA+ID4gPiA+ICsJ aWYgKGNydGNfc3RhdGUtPmhkbWlfb3V0cHV0ID09IERSTV9IRE1JX09VVFBVVF9ZQ0JDUjQyMAo+ ID4gPiA+ID4gKwkJJiYgc2NhbGVyX3VzZXIgPT0gU0tMX0hETUlfT1VUUFVUX0lOREVYKQo+ID4g PiA+IAo+ID4gPiA+IElzIGl0IHJlYWxseSBuZWNlc3NhcnkgdG8gY2hlY2sgZm9yIGJvdGg/IElm IGl0IGlzLCB3aGF0J3MgdGhlIHBvaW50IG9mIGNyZWF0aW5nCj4gPiA+ID4gU0tMX0hETUlfT1VU UFVUX0lOREVYPwo+ID4gPiAKPiA+ID4gWWVzLCBlbHNlIHRoaXMgd2lsbCBhZmZlY3Qgc2NhbGVy IHVwZGF0ZSBmb3IgcGxhbmVzLCBhcyB0aGlzIGZ1bmN0aW9uCj4gPiA+IGdldHMgY2FsbGVkIHRv IHVwZGF0ZSB0aGUgcGxhbmUgc2NhbGVycyB0b28sIGF0IHRoYXQgdGltZSB0aGUgb3V0cHV0Cj4g PiA+IHdpbGwgYmUgc3RpbGwgdmFsaWQgKGFzIGl0cyBhdCBDUlRDIGxldmVsKSwgYnV0IHRoZQo+ ID4gPiBzY2FsZXIgdXNlciB3b3VsZCBiZSBkaWZmZXJlbnQuCj4gPiAKPiA+IFJpZ2h0LCBzbyB0 aGVyZSBpcyBhIG5lZWQgdG8gY2hlY2sgZm9yIHNjYWxlcl91c2VyID09IEhETUlfT1VUUFVULiBC dXQgdGhlbgo+ID4gd291bGRuJ3QgaXQgYmUgYSBidWcgaWYgaGRtaV9vdXRwdXQgIT0gWUNCQ1I0 MjAgPyAgUG9pbnQgaXMsIGlmIHRoZSBjYWxsZXIgYXNrZWQKPiA+IGZvciBhIEhETUlfT1VUUFVU IHNjYWxlciBob3BlZnVsbHkgaXQga25vd3Mgd2hhdCBpdHMgZG9pbmcsIG5vIG5lZWQgdG8gc2Vj b25kCj4gPiBndWVzcyBpdC4KPiAKPiBza2xfdXBkYXRlX3NjYWxlciBmdW5jdGlvbiBnZXRzIGNh bGxlZCBmb3IgYWxsIHRoZSB1c2Vycywgd2hpY2ggYXJlOgo+IC0gcGFuZWwgZml0dGVyCj4gLSBh bGwgdGhlIHBsYW5lcwo+IC0gbmV3bHkgYWRkZWQgdXNlciBoZG1pX291dHB1dAo+IHdoYXQgYWJv dXQgdGhlIGNhc2UgKGFzc3VtZSkgd2hlbiB3ZSBoYXZlIGhhbmRsZWQgaGRtaV9vdXRwdXQgYW5k IG5vdyB3ZSAKPiBhcmUgaGFuZGxpbmcgZm9yIGEgcGxhbmUsIHdoaWNoIGRvZXNudCBuZWVkIHNj YWxpbmcuCj4gCj4gaW4gdGhpcyBjYXNlLCB0aGUgY29kZSB3aWxsIGxvb2sgbGlrZToKPiBpZiAo Y3J0Y19zdGF0ZS0+aGRtaV9vdXRwdXQgPT0gRFJNX0hETUlfT1VUUFVUX1lDQkNSNDIwKQo+ICAg ICAgICBuZWVkX3NjYWxpbmcgPSB0cnVlIC8qIHdoaWNoIGlzIHdyb25nLCBhcyB0aGlzIGZ1bmN0 aW9uIGNhbGwgaXMgCj4gZm9yIHBsYW5lIHNjYWxhciwgYW5kIHNjYWxlcl91c2VyID0gc2NhbGVy ICovCj4gCj4gaWYgKGNydGNfc3RhdGUtPmhkbWlfb3V0cHV0ID09IERSTV9IRE1JX09VVFBVVF9Z Q0JDUjQyMCAmJgo+ICAgICAgc2NhbGVyX3VzZXIgPT0gSERNSV9PVVQpCj4gICAgICBuZWVkX3Nj YWxpbmcgPSB0cnVlIC8qIHRoaXMgaXMgY29ycmVjdCwgYXMgSSB3YW50IHRvIGNvbnN1bWUgc2Nh bGFyIG9ubHkgd2hlbiBib3RoIHRoZSBjb25kaXRpb25zIGFyZSB0cnVlLgoKCkkgbWVhbnQgdG8g ZG8ganVzdAoKCWlmIChzY2FsZXJfdXNlciA9PSBTS0xfSERNSV9PVVRQVVRfSU5ERVgpCgkJLi4u OwoKSSBmYWlsZWQgdG8gbm90aWNlIHRoZSBhbWJpZ3VpdHkgaW4gYWJicmV2aWF0aW5nIHRvIGp1 c3QgSERNSV9PVVRQVVQuIEJ1dCB0aGUKY2FsbGVyIHNob3VsZG4ndCByZXF1ZXN0IGl0IGlmIGl0 IGRvZXNuJ3QgbmVlZCBpdCwgcmlnaHQ/Cgo+IAo+ID4gPiA+ID4gKwkJLyogWUNCQ1IgNDQ0IC0+ IDQyMCBjb252ZXJzaW9uIG5lZWRzIGEgc2NhbGVyICovCj4gPiA+ID4gPiArCQluZWVkX3NjYWxp bmcgPSB0cnVlOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gICAgCS8qCj4gPiA+ID4gPiAgICAJICog aWYgcGxhbmUgaXMgYmVpbmcgZGlzYWJsZWQgb3Igc2NhbGVyIGlzIG5vIG1vcmUgcmVxdWlyZWQg b3IgZm9yY2UgZGV0YWNoCj4gPiA+ID4gPiAgICAJICogIC0gZnJlZSBzY2FsZXIgYmluZGVkIHRv IHRoaXMgcGxhbmUvY3J0Ywo+ID4gPiA+ID4gQEAgLTQ2NzMsNiArNDY3OCwyNiBAQCBza2xfdXBk YXRlX3NjYWxlcihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwgYm9vbCBmb3Jj ZV9kZXRhY2gsCj4gPiA+ID4gPiAgICB9Cj4gPiA+ID4gPiAgICAKPiA+ID4gPiA+ICAgIC8qKgo+ ID4gPiA+ID4gKyAqIHNrbF91cGRhdGVfc2NhbGVyX2hkbWlfb3V0cHV0IC0gU3RhZ2VzIHVwZGF0 ZSB0byBzY2FsZXIgc3RhdGUgZm9yIEhETUkuCj4gPiA+ID4gPiArICogSERNSSBZQ0JDUiA0MjAg b3V0cHV0IG5lZWRzIGEgc2NhbGVyLCBmb3IgZG93bnNhbXBsaW5nLgo+ID4gPiA+ID4gKyAqCj4g PiA+ID4gPiArICogQHN0YXRlOiBjcnRjJ3Mgc2NhbGVyIHN0YXRlCj4gPiA+ID4gPiArICoKPiA+ ID4gPiA+ICsgKiBSZXR1cm4KPiA+ID4gPiA+ICsgKiAgICAgMCAtIHNjYWxlcl91c2FnZSB1cGRh dGVkIHN1Y2Nlc3NmdWxseQo+ID4gPiA+ID4gKyAqICAgIGVycm9yIC0gcmVxdWVzdGVkIHNjYWxp bmcgY2Fubm90IGJlIHN1cHBvcnRlZCBvciBvdGhlciBlcnJvciBjb25kaXRpb24KPiA+ID4gPiA+ ICsgKi8KPiA+ID4gPiA+ICtpbnQgc2tsX3VwZGF0ZV9zY2FsZXJfY3J0Y19oZG1pX291dHB1dChz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqc3RhdGUpCj4gPiA+ID4gPiArewo+ID4gPiA+ID4gKwlj b25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9ICZzdGF0ZS0+YmFzZS5hZGp1c3Rl ZF9tb2RlOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwlyZXR1cm4gc2tsX3VwZGF0ZV9zY2FsZXIo c3RhdGUsICFzdGF0ZS0+YmFzZS5hY3RpdmUsCj4gPiA+ID4gPiArCQlTS0xfSERNSV9PVVRQVVRf SU5ERVgsICZzdGF0ZS0+c2NhbGVyX3N0YXRlLnNjYWxlcl9pZCwKPiA+ID4gPiA+ICsJCXN0YXRl LT5waXBlX3NyY193LCBzdGF0ZS0+cGlwZV9zcmNfaCwKPiA+ID4gPiA+ICsJCW1vZGUtPmNydGNf aGRpc3BsYXksIG1vZGUtPmNydGNfdmRpc3BsYXkpOwo+ID4gPiA+ID4gK30KPiA+ID4gPiA+ICsK PiA+ID4gPiA+ICsvKioKPiA+ID4gPiA+ICAgICAqIHNrbF91cGRhdGVfc2NhbGVyX2NydGMgLSBT dGFnZXMgdXBkYXRlIHRvIHNjYWxlciBzdGF0ZSBmb3IgYSBnaXZlbiBjcnRjLgo+ID4gPiA+ID4g ICAgICoKPiA+ID4gPiA+ICAgICAqIEBzdGF0ZTogY3J0YydzIHNjYWxlciBzdGF0ZQo+ID4gPiA+ ID4gQEAgLTgwNTgsNiArODA4Myw3IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfc2V0X3BpcGVtaXNj KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiA+ID4gPiA+ICAgIHsKPiA+ID4gPiA+ICAgIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmRldik7Cj4gPiA+ ID4gPiAgICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNy dGMpOwo+ID4gPiA+ID4gKwllbnVtIGRybV9oZG1pX291dHB1dF90eXBlIGhkbWlfb3V0ID0gaW50 ZWxfY3J0Yy0+Y29uZmlnLT5oZG1pX291dHB1dDsKPiA+ID4gPiA+ICAgIAo+ID4gPiA+ID4gICAg CWlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYpIHx8IElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4g Pj0gOSkgewo+ID4gPiA+ID4gICAgCQl1MzIgdmFsID0gMDsKPiA+ID4gPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oCj4gPiA+ID4gPiBpbmRleCAzOGZlNTZjLi4yMjA2YWE4IDEwMDY0NAo+ID4g PiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ID4gPiA+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiA+ID4gPiBAQCAtNDcxLDcg KzQ3MSw4IEBAIHN0cnVjdCBpbnRlbF9jcnRjX3NjYWxlcl9zdGF0ZSB7Cj4gPiA+ID4gPiAgICAJ ICoKPiA+ID4gPiA+ICAgIAkgKiAgICAgSWYgYSBiaXQgaXMgc2V0LCBhIHVzZXIgaXMgdXNpbmcg YSBzY2FsZXIuCj4gPiA+ID4gPiAgICAJICogICAgIEhlcmUgdXNlciBjYW4gYmUgYSBwbGFuZSBv ciBjcnRjIGFzIGRlZmluZWQgYmVsb3c6Cj4gPiA+ID4gPiAtCSAqICAgICAgIGJpdHMgMC0zMCAt IHBsYW5lIChiaXQgcG9zaXRpb24gaXMgaW5kZXggZnJvbSBkcm1fcGxhbmVfaW5kZXgpCj4gPiA+ ID4gPiArCSAqICAgICAgIGJpdHMgMC0yOSAtIHBsYW5lIChiaXQgcG9zaXRpb24gaXMgaW5kZXgg ZnJvbSBkcm1fcGxhbmVfaW5kZXgpCj4gPiA+ID4gPiArCSAqICAgICAgIGJpdCAzMCAgICAtIGhk bWkgb3V0cHV0Cj4gPiA+ID4gPiAgICAJICogICAgICAgYml0IDMxICAgIC0gY3J0Ywo+ID4gPiA+ ID4gICAgCSAqCj4gPiA+ID4gPiAgICAJICogSW5zdGVhZCBvZiBjcmVhdGluZyBhIG5ldyBpbmRl eCB0byBjb3ZlciBwbGFuZXMgYW5kIGNydGMsIHVzaW5nCj4gPiA+ID4gPiBAQCAtNDg0LDYgKzQ4 NSwxMiBAQCBzdHJ1Y3QgaW50ZWxfY3J0Y19zY2FsZXJfc3RhdGUgewo+ID4gPiA+ID4gICAgCSAq IGF2aWxhYmlsaXR5Lgo+ID4gPiA+ID4gICAgCSAqLwo+ID4gPiA+ID4gICAgI2RlZmluZSBTS0xf Q1JUQ19JTkRFWCAzMQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwkvKgo+ID4gPiA+ID4gKwkgKiBI RE1JIFlDQkNSIDQyMCBvdXRwdXQgY29uc3VtZSBhIHNjYWxlci4gU28gYWRkaW5nIGEgdXNlcgo+ ID4gPiA+ID4gKwkgKiBmb3IgSERNSSBvdXRwdXQgNDIwIHJlcXVpcmVtZW50Lgo+ID4gPiA+ID4g KwkgKi8KPiA+ID4gPiA+ICsjZGVmaW5lIFNLTF9IRE1JX09VVFBVVF9JTkRFWCAzMAo+ID4gPiA+ IAo+ID4gPiA+IEknbSBub3QgY29udmluY2VkIGFib3V0IHRoaXMuIFRoZSBzY2FsZXIgaXMgc3Rp bGwgdXNlZCBhcyBhIHBpcGUgc2NhbGVyIGFuZCB0aGUKPiA+ID4gPiBwYXRjaCBldmVuIGFkZHMg YSBjYWxsIGludGVsX3BjaF9wYW5lbF9maXR0aW5nKCkuCj4gPiA+IAo+ID4gPiBUaGlzIGlzIGEg c3BlY2lhbCBtb2RlIHVzYWdlIG9mIHNjYWxhciBkZWZpbmVkIGluIHRoZSBic3BlYywgd2hlbiB3 ZQo+ID4gPiB3YW50IHRvIHJ1biB0aGUgc2NhbGFyIGludG8gNXgzIGF1dG8gbW9kZSBmb3IgWUNC Q1I0NDQtPllDQkNSNDIwIHNjYWxlIGRvd24uCj4gPiA+IEl0IGNhbiBiZSB1c2VkIG9ubHkgd2hl biB0aGUgUElQRV9NSVNDIGlzIGFsc28gcHJvZ3JhbW1lZCB0byBhY3QKPiA+ID4gYWNjb3JkaW5n bHkuIFNvIHRoaXMgaXMgZGlmZmVyZW50IGZyb20gdXNpbmcgaXQgYXMgYSBwYW5lbCBmaXR0ZXIs IGFuZAo+ID4gPiB0aGF0J3Mgd2h5IGFkZGVkCj4gPiA+IGEgbmV3IHNjYWxhciB1c2VyIGFsbCB0 b2dldGhlci4KPiA+ID4gPiA+ICAgIAl1bnNpZ25lZCBzY2FsZXJfdXNlcnM7Cj4gPiA+ID4gPiAg ICAKPiA+ID4gPiA+ICAgIAkvKiBzY2FsZXIgdXNlZCBieSBjcnRjIGZvciBwYW5lbCBmaXR0aW5n IHB1cnBvc2UgKi8KPiA+ID4gPiA+IEBAIC0xNDgxLDYgKzE0ODgsNyBAQCB2b2lkIGludGVsX21v ZGVfZnJvbV9waXBlX2NvbmZpZyhzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKPiA+ID4g PiA+ICAgIAkJCQkgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKTsKPiA+ID4g PiA+ICAgIAo+ID4gPiA+ID4gICAgaW50IHNrbF91cGRhdGVfc2NhbGVyX2NydGMoc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwo+ID4gPiA+ID4gK2ludCBza2xfdXBkYXRlX3Nj YWxlcl9jcnRjX2hkbWlfb3V0cHV0KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpzdGF0ZSk7Cj4g PiA+ID4gPiAgICBpbnQgc2tsX21heF9zY2FsZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0Yywgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwo+ID4gPiA+ID4gICAgCj4gPiA+ID4g PiAgICBzdGF0aWMgaW5saW5lIHUzMiBpbnRlbF9wbGFuZV9nZ3R0X29mZnNldChjb25zdCBzdHJ1 Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnN0YXRlKQo+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2hkbWkuYwo+ID4gPiA+ID4gaW5kZXggMjJkYTVjZC4uOGQ1YWExZSAxMDA2NDQKPiA+ID4gPiA+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwo+ID4gPiA+ID4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4gPiA+ID4gPiBAQCAtMTQxNSw2ICsx NDE1LDcgQEAgaW50ZWxfaGRtaV9jb21wdXRlX3ljYmNyX2NvbmZpZyhzdHJ1Y3QgZHJtX2Nvbm5l Y3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSwKPiA+ID4gPiA+ICAgIAl9Cj4gPiA+ID4gPiAgICAKPiA+ ID4gPiA+ICAgIAlpZiAodHlwZSA9PSBEUk1fSERNSV9PVVRQVVRfWUNCQ1I0MjApIHsKPiA+ID4g PiA+ICsJCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0Yyhjb25u X3N0YXRlLT5jcnRjKTsKPiA+ID4gPiA+ICAgIAo+ID4gPiA+ID4gICAgCQkvKiBZQ0JDUjQyMCBU TURTIHJhdGUgcmVxdWlyZW1lbnQgaXMgaGFsZiB0aGUgcGl4ZWwgY2xvY2sgKi8KPiA+ID4gPiA+ ICAgIAkJY29uZmlnLT5oZG1pX291dHB1dCA9IERSTV9IRE1JX09VVFBVVF9ZQ0JDUjQyMDsKPiA+ ID4gPiA+IEBAIC0xNDIyLDYgKzE0MjMsMTUgQEAgaW50ZWxfaGRtaV9jb21wdXRlX3ljYmNyX2Nv bmZpZyhzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSwKPiA+ID4gPiA+ICAg IAkJKmNsb2NrXzEyYnBjIC89IDI7Cj4gPiA+ID4gPiAgICAJCSpjbG9ja184YnBjIC89IDI7Cj4g PiA+ID4gPiAgICAKPiA+ID4gPiA+ICsJCS8qIFlDQkNSIDQyMCBvdXRwdXQgY29udmVyc2lvbiBu ZWVkcyBhIHNjYWxlciAqLwo+ID4gPiA+ID4gKwkJaWYgKHNrbF91cGRhdGVfc2NhbGVyX2NydGNf aGRtaV9vdXRwdXQoY29uZmlnKSkgewo+ID4gPiA+ID4gKwkJCURSTV9FUlJPUigiU2NhbGVyIGFs bG9jYXRpb24gZm9yIG91dHB1dCBmYWlsZWRcbiIpOwo+ID4gPiA+ID4gKwkJCXJldHVybiBEUk1f SERNSV9PVVRQVVRfSU5WQUxJRDsKPiA+ID4gPiA+ICsJCX0KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ ICsJCS8qIEJpbmQgdGhpcyBzY2FsZXIgdG8gcGlwZSAqLwo+ID4gPiA+ID4gKwkJaW50ZWxfcGNo X3BhbmVsX2ZpdHRpbmcoaW50ZWxfY3J0YywgY29uZmlnLAo+ID4gPiA+ID4gKwkJCQkJRFJNX01P REVfU0NBTEVfRlVMTFNDUkVFTik7Cj4gPiA+ID4gPiAgICAJfQo+ID4gPiA+ID4gICAgCj4gPiA+ ID4gPiAgICAJLyogRW5jb2RlciBpcyBjYXBhYmxlIG9mIHRoaXMgb3V0cHV0LCBsZXRzIGNvbW1p dCB0byBDUlRDICovCj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcGFuZWwuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKPiA+ID4g PiA+IGluZGV4IDk2YzJjYmQuLmI2YTMyYzQgMTAwNjQ0Cj4gPiA+ID4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jCj4gPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9wYW5lbC5jCj4gPiA+ID4gPiBAQCAtMTEwLDcgKzExMCw4IEBAIGludGVs X3BjaF9wYW5lbF9maXR0aW5nKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAo+ID4gPiA+ ID4gICAgCj4gPiA+ID4gPiAgICAJLyogTmF0aXZlIG1vZGVzIGRvbid0IG5lZWQgZml0dGluZyAq Lwo+ID4gPiA+ID4gICAgCWlmIChhZGp1c3RlZF9tb2RlLT5jcnRjX2hkaXNwbGF5ID09IHBpcGVf Y29uZmlnLT5waXBlX3NyY193ICYmCj4gPiA+ID4gPiAtCSAgICBhZGp1c3RlZF9tb2RlLT5jcnRj X3ZkaXNwbGF5ID09IHBpcGVfY29uZmlnLT5waXBlX3NyY19oKQo+ID4gPiA+ID4gKwkgICAgYWRq dXN0ZWRfbW9kZS0+Y3J0Y192ZGlzcGxheSA9PSBwaXBlX2NvbmZpZy0+cGlwZV9zcmNfaCAmJgo+ ID4gPiA+ID4gKwkgICAgcGlwZV9jb25maWctPmhkbWlfb3V0cHV0ICE9IERSTV9IRE1JX09VVFBV VF9ZQ0JDUjQyMCkKPiA+ID4gPiAKPiA+ID4gPiBJIGRvbid0IGxpa2UgdGhhdCB0aGUga25vd2xl ZGdlIHRoYXQgWUNCQ1I0MjAgbmVlZHMgdGhlIHNjYWxlciBpcyBzcHJlYWQKPiA+ID4gPiBldmVy eXdoZXJlLCBpbmNsdWRpbmcgdGhpcyBmdW5jdGlvbiB0aGF0IHNob3VsZCBvbmx5IGRlYWwgd2l0 aCBwYW5lbCBmaXR0aW5nLiBJCj4gPiA+ID4gd291bGQgcmF0aGVyIGFkZCBhIGZvcmNlIHBhcmFt ZXRlciB0byBpbnRlbF9wY2hfcGFuZWxfZml0dGluZygpIGFuZAo+ID4gPiA+IHNrbF91cGRhdGVf c2NhbGVyKCkgdGhhdCB3b3VsZCBtZWFuIHNldHVwIHRoZSBzY2FsZXIgZXZlbiBpZiBsb29rcyBs aWtlIGl0J3Mgbm90Cj4gPiA+ID4gbmVjZXNzYXJ5LiBUaGF0IHdheSB0aGUgaGRtaSBjb2RlIHdv dWxkIGp1c3QgY2FsbCB0aGVtIHdpdGggZm9yY2UgZW5hYmxlZCwKPiA+ID4gPiB3aXRob3V0IHNw cmlua2xpbmcgImhkbWlfb3V0cHV0ID09IFlDQkNSNDIwIiBldmVyeXdoZXJlLgo+ID4gPiAKPiA+ ID4gQXMgZXhwbGFpbmVkIGluIHRoZSBjb21tZW50IGFib3ZlLCBpdHMgc3BlY2lhbCBjYXNlIHVz YWdlIG9mIHBpcGUKPiA+ID4gc2NhbGFyLCBhbmQgdGhhdCdzIHdoeSBiZWluZyBjaGVja2VkIHNw ZWNpZmljYWxseS4KPiA+IAo+ID4gSSdtIHN0aWxsIG5vdCBjb252aW5jZWQgYWJvdXQgdGhpcy4g SWYgdGhpcyBpcyBhIHNwZWNpYWwgc2NhbGVyIG1vZGUgdGhhdCBpcyBub3QKPiA+IHBhbmVsIGZp dHRpbmcsIHRoZW4gdGhpcyBzaG91bGQgZGVmaW5pdGVseSBub3QgdG91Y2ggYSBmdW5jdGlvbiBp bgo+ID4gaW50ZWxfcGFuZWwuYywgc3BlY2lhbGx5IG9uZSB3aXRoICJwYW5lbCBmaXR0aW5nIiBp biB0aGUgbmFtZS4KPiA+IAo+ID4gTXkgcG9pbnQgaXMsIGlmIHRoaXMgaXMgcGFuZWwgZml0dGlu ZywgdGhlbiBpdCBzaG91bGQgdXNlIHBhbmVsIGZpdHRpbmcgY29kZQo+ID4gd2l0aG91dCBzcGVj aWFsIGNhc2luZy4gSWYgaXQgaXNuJ3QsIHRoZW4gaXQgc2hvdWxkIGhhdmUgaXRzIG93biBjb2Rl IHBhdGhzLiBCdXQKPiA+IHRoaXMgcGF0Y2gganVzdCBjcmVhdGVzIGEgYmx1cnJ5IGxpbmUgd2hl cmUgdGhlIHBhbmVsIGZpdHRpbmcgY29kZSBuZWVkcyB0byBiZQo+ID4gc3BlY2lhbCBjYXNlZCBm b3Igd2hlbiB0aGUgSERNSSBvdXRwdXQgaXMgWUNCQ1I0MjAgYW5kIHdlIGFyZSAqbm90KiBhY3R1 YWxseQo+ID4gZG9pbmcgcGFuZWwgZml0dGluZy4KPiAKPiBNeSB1bmRlcnN0YW5kaW5nIG9mIHRo ZSBjb2RlIGlzIChwbGVhc2UgY29ycmVjdCBtZSBpZiB0aGF0J3Mgbm90KSB0aGF0IAo+IGFueSBw aXBlIHNjYWxhciB1c2FnZXMgd2UgYXJlIGtlZXBpbmcgaXQgYXQKPiBwYW5lbF9maXR0aW5nIGxl dmVsLCB3aGVyZWFzIGFueSBwbGFuZSBsZXZlbCBzdHVmZiBpcyBjYWxsZWQgCj4gcGxhbmVfc2Nh bGFyLiBBcyB0aGlzIG5ldyB1c2VyIHdhcyBhIHVzYWdlIG9mIHBpcGVfc2NhbGFyCj4gd2l0aCBh IHNwZWNpYWwgY29uZmlndXJhdGlvbiBhbmQgc2V0dGluZywgSSBhY2NvbW1vZGF0ZWQgdGhlIGNv ZGUgaW4gCj4gcGFuZWwgZml0dGVyIGxldmVsLiBXZSBjYW4gYWxzbyBjcmVhdGUgbmV3IGNvZGUK PiBmb3IgaXQsIGJ1dCB0aGF0IHdvdWxkIGJlIHVubmVjZXNzYXJ5IGR1cGxpY2F0aW9uIG9mIGNv ZGUgd2hpY2ggZG9lcyB0aGUgCj4gc2FtZSB0aGluZywgaXNuJ3QgaXQgPwoKVGhlIGNvZGUgYXMg aXQgaXMgaW4gdGhpcyBwYXRjaCBhc2tzIGZvciBzb21ldGhpbmcgY2FsbGVkIGFuIEhETUlfT1VU UFVUIHNjYWxlciwKYW5kIHRoZW4gd2hlbiBpdCBpcyB0aW1lIHRvIGVuYWJsZSBpdCwgaXQgYXNr cyB0aGUgcGFuZWwgZml0dGVyIHRvIGJlIGVuYWJsZWQuCk5vdGljZSB0aGUgaW5jb25zaXN0ZW5j eT8KCkkgbGlrZSB0byBlaXRoZXIgY2FsbCBpdCBhIHBhbmVsIGZpdHRlciBhbmQgdHJlYXQgaXQg YXMgcGFuZWwgZml0dGVyLCBvciBjYWxsIGl0CmEgbmV3IHR5cGUgb2Ygc2NhbGVyIGFuZCBoYXZl IGEgcHJvcGVyIGludGVyZmFjZSBmb3IgaXQuIEkgZG9uJ3QgdGhpbmsgdGhlCmN1cnJlbnQgc29s dXRpb24gcmV1c2VkIG11Y2ggb2YgdGhlIGNvZGUgYW55d2F5LiBUaGUgcmVsZXZhbnQgcGFydCBm cm9tCmludGVsX3BjaF9wYW5lbF9maXR0aW5nKCkgaXMKCiAgICAgICAgY2FzZSBEUk1fTU9ERV9T Q0FMRV9GVUxMU0NSRUVOOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHggPSB5 ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgd2lk dGggPSBhZGp1c3RlZF9tb2RlLT5jcnRjX2hkaXNwbGF5OyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBo ZWlnaHQgPSBhZGp1c3RlZF9tb2RlLT5jcnRjX3ZkaXNwbGF5OyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg IGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKwqDCoMKgwqDCoMKg wqDCoHBpcGVfY29uZmlnLT5wY2hfcGZpdC5wb3MgPSAoeCA8PCAxNikgfCB5OwoJcGlwZV9jb25m aWctPnBjaF9wZml0LnNpemUgPSAod2lkdGggPDwgMTYpIHwgaGVpZ2h0OwoJcGlwZV9jb25maWct PnBjaF9wZml0LmVuYWJsZWQgPSBwaXBlX2NvbmZpZy0+cGNoX3BmaXQuc2l6ZSAhPSAwOwoKLiBU aGUgb3RoZXIgcGFydCBpcyByZWN5Y2xpbmcgdGhlIGNhbGwgdG8gc2t5bGFrZV9wZml0X2VuYWJs ZSgpIGluCmhhc3dlbGxfY3J0Y19lbmFibGUoKS4gVGhhdCBjYWxsIGlzIGp1c3TCoHNjYWxlciBy ZWdpc3RlciBwcm9ncmFtbWluZywgYmFzaWNhbGx5OgoKCWlmICguLi4gcGNoX3BmaXQuZW5hYmxl ZCkgewoJCS4uLgogICAgICAgICAgICAgICAgaWQgPSBzY2FsZXJfc3RhdGUtPnNjYWxlcl9pZDsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBJOTE1X1dSSVRFKFNLTF9QU19DVFJMKHBpcGUs IGlkKSwgUFNfU0NBTEVSX0VOIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgUFNfRklMVEVSX01FRElVTSB8 IHNjYWxlcl9zdGF0ZS0+c2NhbGVyc1tpZF0ubW9kZSk7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgSTkxNV9XUklURShTS0xfUFNfV0lOX1BP UyhwaXBlLCBpZCksIGNydGMtPmNvbmZpZy0+cGNoX3BmaXQucG9zKTsKICAgICAgICAgICAgICAg IEk5MTVfV1JJVEUoU0tMX1BTX1dJTl9TWihwaXBlLCBpZCksIGNydGMtPmNvbmZpZy0+cGNoX3Bm aXQuc2l6ZSk7Cgl9CgpJIHRoaW5rIHRoZSBpc3N1ZSBoZXJlIGlzIHRoYXQgdGhlcmUgaXNuJ3Qg YSBnb29kIGxheWVyIG9mIGFic3RyYWN0aW9uIGJldHdlZW4KInNreWxha2UiIHBhbmVsIGZpdHRp bmcgYW5kIHRoZSBzY2FsZXJzLiBJdCB3b3VsZCBwcm9iYWJseSBiZSBtdWNoIGJldHRlciBpZiB0 aGUKcmVnaXN0ZXIgcHJvZ3JhbW1pbmcgbG9naWMgZm9yIHRoZW0gd291bGQgYmUgaW4gYSBzY2Fs ZXJfZW5hYmxlKCkgZnVuY3Rpb24gc2luY2UKdGhhdCBpcyBkdXBsaWNhdGVkIGhlcmUgYW5kIHRo ZXJlLiBJdCB3b3VsZCBwcm9iYWJseSBiZSBnb29kIHRvIGhhdmUgYSBwcm9wZXIKc3RydWN0IHNj YWxlciB0aGF0IHdlIGNhbiBwYXNzIHRvIGNlcnRhaW4gZnVuY3Rpb25zIHRvby4KCkFueXdheSwg SSB0aGluayB0aGUgc2NhbGVyIGludGVyZmFjZSBjb3VsZCBiZSBpbXByb3ZlZCBpbiBnZW5lcmFs LiBJJ20gbm90CnNheWluZyBpdCBzaG91bGQgYmUgZG9uZSBhcyBwYXJ0IG9mIHRoaXMgcGF0Y2gs IGJ1dCBhdCB0aGUgc2FtZSB0aW1lIEknZCBsaWtlIHRvCmF2b2lkIGNyZWF0aW5nIGFuIGV2ZW4g YmlnZ2VyIG1lc3MgdG8gc29ydCBvdXQgaW4gdGhlIGZ1dHVyZS4gVG8gc3VtIGl0IHVwLCBJJ2QK YmUgZXF1YWx5IGZpbmUgd2l0aCBlaXRoZXIgb2YgdGhlIHByb3Bvc2FscyBiZWxvdzoKCi0gZmlu ZCBhIHdheSB0byBub3QgaGF2ZSBhIHNwZWNpYWwgSERNSSBPVVRQVVQgc2NhbGVyIGFuZCByZXVz ZSB0aGUgcGFuZWwKZml0dGluZyBjb2RlIGNvbXBsZXRlbHksIHdpdGhvdXQgc3ByaW5rbGluZyBj aGVja3MgZm9yIFlDQkNSNDIwIGludG8gaXQ7Ci0gY3JlYXRlIGEgbmV3IHBhdGggZm9yIHRoZSBu ZXcgdHlwZSBvZiBzY2FsZXIsIGNvbXBsZXRlbHkgaW5kZXBlbmRlbnQgb2YgcGFuZWwKZml0dGlu Zy4KCkFueXRoaW5nIGVsc2UgbWFrZXMgaXQgdW5jbGVhciB3aGljaCBwYXJ0IG9mIHRoZSBjb2Rl IGlzIHJlc3BvbnNpYmxlIGZvciB3aGF0LAp3aGljaCBJIGJlbGlldmUgaXMgYSBiYWQgdGhpbmcu CgpBbmRlcgoKPiBGb3IgdGhpcyB1c2FnZSwgd2UganVzdCBuZWVkIHRvIGF0dGFjaCBhIHBpcGUg c2NhbGFyLCBhbmQgdGhlbiBwcm9ncmFtIAo+IHRoZSBQSVBFTUlTQyAod2hpY2ggd2UgZG8gaW4g Y3J0Yy0+bW9kZV9zZXQpLiBEbyB5b3UKPiB0aGluayBpdHMgYW55IGdvb2QgcmVhc29uIGZvciB3 cml0ZSBhIG5ldyBjb2RlIHBhdGggYWx0b2dldGhlciA/Cj4gCj4gLSBTaGFzaGFuawo+ID4gCj4g PiBBbmRlcgo+ID4gCj4gCj4gCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeAo=