From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v2 1/8] drm/rect: Add some drm_clip_rect utility functions Date: Mon, 25 Apr 2016 18:09:44 +0300 Message-ID: <20160425150944.GB4329@intel.com> References: <1461530942-22485-1-git-send-email-noralf@tronnes.org> <1461530942-22485-2-git-send-email-noralf@tronnes.org> <20160425123907.GY4329@intel.com> <571E13D8.4060100@tronnes.org> <20160425130229.GZ4329@intel.com> <571E23A1.2040100@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id EA6346E63B for ; Mon, 25 Apr 2016 15:09:48 +0000 (UTC) Content-Disposition: inline In-Reply-To: <571E23A1.2040100@tronnes.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Noralf =?iso-8859-1?Q?Tr=F8nnes?= Cc: linux-fbdev@vger.kernel.org, tomi.valkeinen@ti.com, laurent.pinchart@ideasonboard.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBBcHIgMjUsIDIwMTYgYXQgMDQ6MDM6MTNQTSArMDIwMCwgTm9yYWxmIFRyw7hubmVz IHdyb3RlOgo+IAo+IERlbiAyNS4wNC4yMDE2IDE1OjAyLCBza3JldiBWaWxsZSBTeXJqw6Rsw6Q6 Cj4gPiBPbiBNb24sIEFwciAyNSwgMjAxNiBhdCAwMjo1NTo1MlBNICswMjAwLCBOb3JhbGYgVHLD uG5uZXMgd3JvdGU6Cj4gPj4gRGVuIDI1LjA0LjIwMTYgMTQ6MzksIHNrcmV2IFZpbGxlIFN5cmrD pGzDpDoKPiA+Pj4gT24gU3VuLCBBcHIgMjQsIDIwMTYgYXQgMTA6NDg6NTVQTSArMDIwMCwgTm9y YWxmIFRyw7hubmVzIHdyb3RlOgo+ID4+Pj4gQWRkIHNvbWUgdXRpbGl0eSBmdW5jdGlvbnMgZm9y IHN0cnVjdCBkcm1fY2xpcF9yZWN0Lgo+ID4+PiBMb29rcyBsaWtlIG1vc3RseSB5b3UncmUganVz dCBkdXBsaWNhdGluZyB0aGUgZHJtX3JlY3Qgc3R1ZmYuIFdoeSBjYW4ndAo+ID4+PiB5b3UgdXNl IHdoYXQncyB0aGVyZSBhbHJlYWR5Pwo+ID4+IFRoYXQncyBiZWNhdXNlIHRoZSBmcmFtZWJ1ZmZl ciBmbHVzaGluZyB1c2VzIGRybV9jbGlwX3JlY3QgYW5kIG5vdCBkcm1fcmVjdDoKPiA+IENvbnZl cnRpbmcgdG8gZHJtX3JlY3QgaXMgbm90IGFuIG9wdGlvbj8KPiAKPiBUaGF0J3MgZGlmZmljdWx0 IG9yIGF0IGxlYXN0IHZlcmJvc2UgdG8gZG8gYmVjYXVzZSBjbGlwcyBpcyBhbiBhcnJheS4KPiBJ IGNvdWxkIHVzZSBkcm1fcmVjdCBvbiB0aGUgY2FsbGluZyBzaWRlIChmYmRldikgc2luY2UgaXQn cyBvbmx5IG9uZSBjbGlwCj4gd2hpY2ggdGhlIGNoYW5nZXMgYXJlIG1lcmdlZCBpbnRvLCBhbmQg dGhlbiBjb252ZXJ0IGl0IHdoZW4gSSBjYWxsIGRpcnR5KCkuCj4gQnV0IHRoZSBkcml2ZXIgY2Fu IGdldCB6ZXJvIG9yIG1vcmUgY2xpcHMgZnJvbSB0aGUgZGlydHkgaW9jdGwgc28gSSBkb24ndAo+ IHNlZSBhIGNsZWFuIHdheSB0byBjb252ZXJ0IHRoaXMgYXJyYXkgdG8gZHJtX3JlY3Qgd2l0aG91 dCBtb3JlIGNvZGUgdGhhbgo+IHRoaXMgcHJvcG9zYWwgaGFzLgoKSnVzdCBzb21lIGtpbmQgb2Yg c2ltcGxlIGRybV9jbGlwX3JlY3RfdG9fcmVjdCgpIHRoaW5nIHNob3VsZCBiZSBlbm91Z2ggQUZB SUNTLgoKPiAKPiBIZXJlJ3MgdGhlIGRyaXZlciBzaWRlOgo+IAo+IHN0YXRpYyBpbnQgbWlwaV9k YmlfZGlydHlmYihzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwgdm9pZCAqdm1lbSwKPiAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGZsYWdzLCB1bnNpZ25lZCBjb2xvciwKPiAgICAgICAgICAg ICAgICAgIHN0cnVjdCBkcm1fY2xpcF9yZWN0ICpjbGlwcywgdW5zaWduZWQgbnVtX2NsaXBzKQo+ IHsKPiAgICAgIHN0cnVjdCB0aW55ZHJtX2RldmljZSAqdGRldiA9IGZiLT5kZXYtPmRldl9wcml2 YXRlOwo+ICAgICAgc3RydWN0IGxjZHJlZyAqcmVnID0gdGRldi0+bGNkcmVnOwo+ICAgICAgc3Ry dWN0IGRybV9jbGlwX3JlY3QgZnVsbF9jbGlwID0gewo+ICAgICAgICAgIC54MSA9IDAsCj4gICAg ICAgICAgLngyID0gZmItPndpZHRoLAo+ICAgICAgICAgIC55MSA9IDAsCj4gICAgICAgICAgLnky ID0gZmItPmhlaWdodCwKPiAgICAgIH07Cj4gICAgICBzdHJ1Y3QgZHJtX2NsaXBfcmVjdCBjbGlw Owo+ICAgICAgaW50IHJldDsKPiAKPiAgICAgIGRybV9jbGlwX3JlY3RfcmVzZXQoJmNsaXApOwo+ ICAgICAgZHJtX2NsaXBfcmVjdF9tZXJnZSgmY2xpcCwgY2xpcHMsIG51bV9jbGlwcywgZmxhZ3Ms Cj4gICAgICAgICAgICAgICAgICBmYi0+d2lkdGgsIGZiLT5oZWlnaHQpOwo+ICAgICAgaWYgKCFk cm1fY2xpcF9yZWN0X2ludGVyc2VjdCgmY2xpcCwgJmZ1bGxfY2xpcCkpIHsKPiAgICAgICAgICBE Uk1fREVCVUdfS01TKCJFbXB0eSBjbGlwXG4iKTsKPiAgICAgICAgICByZXR1cm4gLUVJTlZBTDsK PiAgICAgIH0KPiBbLi4uXQoKPiAKPiA+PiBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyX2Z1bmNzIHsK PiA+PiBbLi4uXQo+ID4+ICAgICAgICAgICBpbnQgKCpkaXJ0eSkoc3RydWN0IGRybV9mcmFtZWJ1 ZmZlciAqZnJhbWVidWZmZXIsCj4gPj4gICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJt X2ZpbGUgKmZpbGVfcHJpdiwgdW5zaWduZWQgZmxhZ3MsCj4gPj4gICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBjb2xvciwgc3RydWN0IGRybV9jbGlwX3JlY3QgKmNsaXBzLAo+ID4+ICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtX2NsaXBzKTsKPiA+PiB9Owo+ID4+Cj4g Pj4+PiBTaWduZWQtb2ZmLWJ5OiBOb3JhbGYgVHLDuG5uZXMgPG5vcmFsZkB0cm9ubmVzLm9yZz4K PiA+Pj4+IC0tLQo+ID4+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2RybV9yZWN0LmMgfCA2NyArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4+Pj4gICAgaW5jbHVk ZS9kcm0vZHJtX3JlY3QuaCAgICAgfCA2OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCj4gPj4+PiAgICAyIGZpbGVzIGNoYW5nZWQsIDEzNiBpbnNlcnRpb25z KCspCj4gPj4+Pgo+ID4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmVjdC5j IGIvZHJpdmVycy9ncHUvZHJtL2RybV9yZWN0LmMKPiA+Pj4+IGluZGV4IGE4ZTJjODYuLmE5ZmIx YTggMTAwNjQ0Cj4gPj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3JlY3QuYwo+ID4+Pj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9yZWN0LmMKPiA+Pj4+IEBAIC00MzQsMyArNDM0LDcw IEBAIHZvaWQgZHJtX3JlY3Rfcm90YXRlX2ludihzdHJ1Y3QgZHJtX3JlY3QgKnIsCj4gPj4+PiAg ICAJfQo+ID4+Pj4gICAgfQo+ID4+Pj4gICAgRVhQT1JUX1NZTUJPTChkcm1fcmVjdF9yb3RhdGVf aW52KTsKPiA+Pj4+ICsKPiA+Pj4+ICsvKioKPiA+Pj4+ICsgKiBkcm1fY2xpcF9yZWN0X2ludGVy c2VjdCAtIGludGVyc2VjdCB0d28gY2xpcCByZWN0YW5nbGVzCj4gPj4+PiArICogQHIxOiBmaXJz dCBjbGlwIHJlY3RhbmdsZQo+ID4+Pj4gKyAqIEByMjogc2Vjb25kIGNsaXAgcmVjdGFuZ2xlCj4g Pj4+PiArICoKPiA+Pj4+ICsgKiBDYWxjdWxhdGUgdGhlIGludGVyc2VjdGlvbiBvZiBjbGlwIHJl Y3RhbmdsZXMgQHIxIGFuZCBAcjIuCj4gPj4+PiArICogQHIxIHdpbGwgYmUgb3ZlcndyaXR0ZW4g d2l0aCB0aGUgaW50ZXJzZWN0aW9uLgo+ID4+Pj4gKyAqCj4gPj4+PiArICogUkVUVVJOUzoKPiA+ Pj4+ICsgKiAldHJ1ZSBpZiByZWN0YW5nbGUgQHIxIGlzIHN0aWxsIHZpc2libGUgYWZ0ZXIgdGhl IG9wZXJhdGlvbiwKPiA+Pj4+ICsgKiAlZmFsc2Ugb3RoZXJ3aXNlLgo+ID4+Pj4gKyAqLwo+ID4+ Pj4gK2Jvb2wgZHJtX2NsaXBfcmVjdF9pbnRlcnNlY3Qoc3RydWN0IGRybV9jbGlwX3JlY3QgKnIx LAo+ID4+Pj4gKwkJCSAgICAgY29uc3Qgc3RydWN0IGRybV9jbGlwX3JlY3QgKnIyKQo+ID4+Pj4g K3sKPiA+Pj4+ICsJcjEtPngxID0gbWF4KHIxLT54MSwgcjItPngxKTsKPiA+Pj4+ICsJcjEtPnkx ID0gbWF4KHIxLT55MSwgcjItPnkxKTsKPiA+Pj4+ICsJcjEtPngyID0gbWluKHIxLT54MiwgcjIt PngyKTsKPiA+Pj4+ICsJcjEtPnkyID0gbWluKHIxLT55MiwgcjItPnkyKTsKPiA+Pj4+ICsKPiA+ Pj4+ICsJcmV0dXJuIGRybV9jbGlwX3JlY3RfdmlzaWJsZShyMSk7Cj4gPj4+PiArfQo+ID4+Pj4g K0VYUE9SVF9TWU1CT0woZHJtX2NsaXBfcmVjdF9pbnRlcnNlY3QpOwo+ID4+Pj4gKwo+ID4+Pj4g Ky8qKgo+ID4+Pj4gKyAqIGRybV9jbGlwX3JlY3RfbWVyZ2UgLSBNZXJnZSBjbGlwIHJlY3Rhbmds ZXMKPiA+Pj4+ICsgKiBAZHN0OiBkZXN0aW5hdGlvbiBjbGlwIHJlY3RhbmdsZQo+ID4+Pj4gKyAq IEBzcmM6IHNvdXJjZSBjbGlwIHJlY3RhbmdsZShzKSwgY2FuIGJlIE5VTEwKPiA+Pj4+ICsgKiBA bnVtX2NsaXBzOiBudW1iZXIgb2Ygc291cmNlIGNsaXAgcmVjdGFuZ2xlcwo+ID4+Pj4gKyAqIEBm bGFnczogZHJtX21vZGVfZmJfZGlydHlfY21kIGZsYWdzIChEUk1fTU9ERV9GQl9ESVJUWV9BTk5P VEFURV9DT1BZKQo+ID4+Pj4gKyAqIEB3aWR0aDogd2lkdGggb2YgY2xpcCByZWN0YW5nbGUgaWYg QHNyYyBpcyBOVUxMCj4gPj4+PiArICogQGhlaWdodDogaGVpZ2h0IG9mIGNsaXAgcmVjdGFuZ2xl IGlmIEBzcmMgaXMgTlVMTAo+ID4+Pj4gKyAqCj4gPj4+PiArICogVGhlIGRpcnR5ZmIgaW9jdGwg YWxsb3dzIGZvciBhIE5VTEwgY2xpcCByZWN0YW5nbGUgdG8gYmUgcGFzc2VkIGluLAo+ID4+Pj4g KyAqIHNvIGlmIEBzcmMgaXMgTlVMTCwgd2lkdGggYW5kIGhlaWdodCBpcyB1c2VkIHRvIHNldCBh IGZ1bGwgY2xpcCByZWN0YW5nbGUuCj4gPj4+PiArICogQGRzdCB0YWtlcyBwYXJ0IGluIHRoZSBt ZXJnZSB1bmxlc3MgaXQgaXMgZW1wdHkgezAsMCwwLDB9Lgo+ID4+Pj4gKyAqLwo+ID4+Pj4gK3Zv aWQgZHJtX2NsaXBfcmVjdF9tZXJnZShzdHJ1Y3QgZHJtX2NsaXBfcmVjdCAqZHN0LAo+ID4+Pj4g KwkJCSBzdHJ1Y3QgZHJtX2NsaXBfcmVjdCAqc3JjLCB1bnNpZ25lZCBudW1fY2xpcHMsCj4gPj4+ PiArCQkJIHVuc2lnbmVkIGZsYWdzLCB1MzIgd2lkdGgsIHUzMiBoZWlnaHQpCj4gPj4+PiArewo+ ID4+Pj4gKwlpbnQgaTsKPiA+Pj4+ICsKPiA+Pj4+ICsJaWYgKCFzcmMgfHwgIW51bV9jbGlwcykg ewo+ID4+Pj4gKwkJZHN0LT54MSA9IDA7Cj4gPj4+PiArCQlkc3QtPngyID0gd2lkdGg7Cj4gPj4+ PiArCQlkc3QtPnkxID0gMDsKPiA+Pj4+ICsJCWRzdC0+eTIgPSBoZWlnaHQ7Cj4gPj4+PiArCQly ZXR1cm47Cj4gPj4+PiArCX0KPiA+Pj4+ICsKPiA+Pj4+ICsJaWYgKGRybV9jbGlwX3JlY3RfaXNf ZW1wdHkoZHN0KSkgewo+ID4+Pj4gKwkJZHN0LT54MSA9IH4wOwo+ID4+Pj4gKwkJZHN0LT55MSA9 IH4wOwo+ID4+Pj4gKwl9Cj4gPj4+PiArCj4gPj4+PiArCWZvciAoaSA9IDA7IGkgPCBudW1fY2xp cHM7IGkrKykgewo+ID4+Pj4gKwkJaWYgKGZsYWdzICYgRFJNX01PREVfRkJfRElSVFlfQU5OT1RB VEVfQ09QWSkKPiA+Pj4+ICsJCQlpKys7Cj4gPj4+PiArCQlkc3QtPngxID0gbWluKGRzdC0+eDEs IHNyY1tpXS54MSk7Cj4gPj4+PiArCQlkc3QtPngyID0gbWF4KGRzdC0+eDIsIHNyY1tpXS54Mik7 Cj4gPj4+PiArCQlkc3QtPnkxID0gbWluKGRzdC0+eTEsIHNyY1tpXS55MSk7Cj4gPj4+PiArCQlk c3QtPnkyID0gbWF4KGRzdC0+eTIsIHNyY1tpXS55Mik7Cj4gPj4+PiArCX0KPiA+Pj4+ICt9Cj4g Pj4+PiArRVhQT1JUX1NZTUJPTChkcm1fY2xpcF9yZWN0X21lcmdlKTsKPiA+Pj4+IGRpZmYgLS1n aXQgYS9pbmNsdWRlL2RybS9kcm1fcmVjdC5oIGIvaW5jbHVkZS9kcm0vZHJtX3JlY3QuaAo+ID4+ Pj4gaW5kZXggODNiYjE1Ni4uOTM2YWQ4ZCAxMDA2NDQKPiA+Pj4+IC0tLSBhL2luY2x1ZGUvZHJt L2RybV9yZWN0LmgKPiA+Pj4+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9yZWN0LmgKPiA+Pj4+IEBA IC0yNCw2ICsyNCw4IEBACj4gPj4+PiAgICAjaWZuZGVmIERSTV9SRUNUX0gKPiA+Pj4+ICAgICNk ZWZpbmUgRFJNX1JFQ1RfSAo+ID4+Pj4gICAgCj4gPj4+PiArI2luY2x1ZGUgPHVhcGkvZHJtL2Ry bS5oPgo+ID4+Pj4gKwo+ID4+Pj4gICAgLyoqCj4gPj4+PiAgICAgKiBET0M6IHJlY3QgdXRpbHMK PiA+Pj4+ICAgICAqCj4gPj4+PiBAQCAtMTcxLDQgKzE3Myw3MSBAQCB2b2lkIGRybV9yZWN0X3Jv dGF0ZV9pbnYoc3RydWN0IGRybV9yZWN0ICpyLAo+ID4+Pj4gICAgCQkJIGludCB3aWR0aCwgaW50 IGhlaWdodCwKPiA+Pj4+ICAgIAkJCSB1bnNpZ25lZCBpbnQgcm90YXRpb24pOwo+ID4+Pj4gICAg Cj4gPj4+PiArLyoqCj4gPj4+PiArICogZHJtX2NsaXBfcmVjdF93aWR0aCAtIGRldGVybWluZSB0 aGUgY2xpcCByZWN0YW5nbGUgd2lkdGgKPiA+Pj4+ICsgKiBAcjogY2xpcCByZWN0YW5nbGUgd2hv c2Ugd2lkdGggaXMgcmV0dXJuZWQKPiA+Pj4+ICsgKgo+ID4+Pj4gKyAqIFJFVFVSTlM6Cj4gPj4+ PiArICogVGhlIHdpZHRoIG9mIHRoZSBjbGlwIHJlY3RhbmdsZS4KPiA+Pj4+ICsgKi8KPiA+Pj4+ ICtzdGF0aWMgaW5saW5lIGludCBkcm1fY2xpcF9yZWN0X3dpZHRoKGNvbnN0IHN0cnVjdCBkcm1f Y2xpcF9yZWN0ICpyKQo+ID4+Pj4gK3sKPiA+Pj4+ICsJcmV0dXJuIHItPngyIC0gci0+eDE7Cj4g Pj4+PiArfQo+ID4+Pj4gKwo+ID4+Pj4gKy8qKgo+ID4+Pj4gKyAqIGRybV9jbGlwX3JlY3RfaGVp Z2h0IC0gZGV0ZXJtaW5lIHRoZSBjbGlwIHJlY3RhbmdsZSBoZWlnaHQKPiA+Pj4+ICsgKiBAcjog Y2xpcCByZWN0YW5nbGUgd2hvc2UgaGVpZ2h0IGlzIHJldHVybmVkCj4gPj4+PiArICoKPiA+Pj4+ ICsgKiBSRVRVUk5TOgo+ID4+Pj4gKyAqIFRoZSBoZWlnaHQgb2YgdGhlIGNsaXAgcmVjdGFuZ2xl Lgo+ID4+Pj4gKyAqLwo+ID4+Pj4gK3N0YXRpYyBpbmxpbmUgaW50IGRybV9jbGlwX3JlY3RfaGVp Z2h0KGNvbnN0IHN0cnVjdCBkcm1fY2xpcF9yZWN0ICpyKQo+ID4+Pj4gK3sKPiA+Pj4+ICsJcmV0 dXJuIHItPnkyIC0gci0+eTE7Cj4gPj4+PiArfQo+ID4+Pj4gKwo+ID4+Pj4gKy8qKgo+ID4+Pj4g KyAqIGRybV9jbGlwX3JlY3RfdmlzaWJsZSAtIGRldGVybWluZSBpZiB0aGUgdGhlIGNsaXAgcmVj dGFuZ2xlIGlzIHZpc2libGUKPiA+Pj4+ICsgKiBAcjogY2xpcCByZWN0YW5nbGUgd2hvc2Ugdmlz aWJpbGl0eSBpcyByZXR1cm5lZAo+ID4+Pj4gKyAqCj4gPj4+PiArICogUkVUVVJOUzoKPiA+Pj4+ ICsgKiAldHJ1ZSBpZiB0aGUgY2xpcCByZWN0YW5nbGUgaXMgdmlzaWJsZSwgJWZhbHNlIG90aGVy d2lzZS4KPiA+Pj4+ICsgKi8KPiA+Pj4+ICtzdGF0aWMgaW5saW5lIGJvb2wgZHJtX2NsaXBfcmVj dF92aXNpYmxlKGNvbnN0IHN0cnVjdCBkcm1fY2xpcF9yZWN0ICpyKQo+ID4+Pj4gK3sKPiA+Pj4+ ICsJcmV0dXJuIGRybV9jbGlwX3JlY3Rfd2lkdGgocikgPiAwICYmIGRybV9jbGlwX3JlY3RfaGVp Z2h0KHIpID4gMDsKPiA+Pj4+ICt9Cj4gPj4+PiArCj4gPj4+PiArLyoqCj4gPj4+PiArICogZHJt X2NsaXBfcmVjdF9yZXNldCAtIFJlc2V0IGNsaXAgcmVjdGFuZ2xlCj4gPj4+PiArICogQGNsaXA6 IGNsaXAgcmVjdGFuZ2xlCj4gPj4+PiArICoKPiA+Pj4+ICsgKiBTZXRzIGNsaXAgcmVjdGFuZ2xl IHRvIHswLDAsMCwwfS4KPiA+Pj4+ICsgKi8KPiA+Pj4+ICtzdGF0aWMgaW5saW5lIHZvaWQgZHJt X2NsaXBfcmVjdF9yZXNldChzdHJ1Y3QgZHJtX2NsaXBfcmVjdCAqY2xpcCkKPiA+Pj4+ICt7Cj4g Pj4+PiArCWNsaXAtPngxID0gMDsKPiA+Pj4+ICsJY2xpcC0+eDIgPSAwOwo+ID4+Pj4gKwljbGlw LT55MSA9IDA7Cj4gPj4+PiArCWNsaXAtPnkyID0gMDsKPiA+Pj4+ICt9Cj4gPj4+PiArCj4gPj4+ PiArLyoqCj4gPj4+PiArICogZHJtX2NsaXBfcmVjdF9pc19lbXB0eSAtIElzIGNsaXAgcmVjdGFu Z2xlIGVtcHR5Pwo+ID4+Pj4gKyAqIEBjbGlwOiBjbGlwIHJlY3RhbmdsZQo+ID4+Pj4gKyAqCj4g Pj4+PiArICogUmV0dXJucyB0cnVlIGlmIGNsaXAgcmVjdGFuZ2xlIGlzIHswLDAsMCwwfS4KPiA+ Pj4+ICsgKi8KPiA+Pj4+ICtzdGF0aWMgaW5saW5lIGJvb2wgZHJtX2NsaXBfcmVjdF9pc19lbXB0 eShzdHJ1Y3QgZHJtX2NsaXBfcmVjdCAqY2xpcCkKPiA+Pj4+ICt7Cj4gPj4+PiArCXJldHVybiAo IWNsaXAtPngxICYmICFjbGlwLT54MiAmJiAhY2xpcC0+eTEgJiYgIWNsaXAtPnkyKTsKPiA+Pj4+ ICt9Cj4gPj4+PiArCj4gPj4+PiArYm9vbCBkcm1fY2xpcF9yZWN0X2ludGVyc2VjdChzdHJ1Y3Qg ZHJtX2NsaXBfcmVjdCAqcjEsCj4gPj4+PiArCQkJICAgICBjb25zdCBzdHJ1Y3QgZHJtX2NsaXBf cmVjdCAqcjIpOwo+ID4+Pj4gK3ZvaWQgZHJtX2NsaXBfcmVjdF9tZXJnZShzdHJ1Y3QgZHJtX2Ns aXBfcmVjdCAqZHN0LAo+ID4+Pj4gKwkJCSBzdHJ1Y3QgZHJtX2NsaXBfcmVjdCAqc3JjLCB1bnNp Z25lZCBudW1fY2xpcHMsCj4gPj4+PiArCQkJIHVuc2lnbmVkIGZsYWdzLCB1MzIgd2lkdGgsIHUz MiBoZWlnaHQpOwo+ID4+Pj4gKwo+ID4+Pj4gICAgI2VuZGlmCj4gPj4+PiAtLSAKPiA+Pj4+IDIu Mi4yCj4gPj4+Pgo+ID4+Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KPiA+Pj4+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiA+Pj4+IGRyaS1kZXZlbEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+Pj4+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsIE9U QwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2 ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK