From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 2/7] drm/i915/gen11: Link nv12 Y and UV planes in the atomic state, v3. Date: Mon, 24 Sep 2018 16:18:10 +0300 Message-ID: <20180924131810.GP5565@intel.com> References: <20180921173945.6276-1-maarten.lankhorst@linux.intel.com> <20180921173945.6276-3-maarten.lankhorst@linux.intel.com> <20180921183552.GH5565@intel.com> <20180921193122.GL5565@intel.com> <83d03c1c-1c2c-1fdf-4a60-f681e253a1ce@linux.intel.com> 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 ESMTPS id 3B90C6E177 for ; Mon, 24 Sep 2018 13:18:14 +0000 (UTC) Content-Disposition: inline In-Reply-To: <83d03c1c-1c2c-1fdf-4a60-f681e253a1ce@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBTZXAgMjQsIDIwMTggYXQgMDI6MzU6MTNQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gT3AgMjEtMDktMTggb20gMjE6MzEgc2NocmVlZiBWaWxsZSBTeXJqw6Rsw6Q6 Cj4gPiBPbiBGcmksIFNlcCAyMSwgMjAxOCBhdCAwOTozNTo1MlBNICswMzAwLCBWaWxsZSBTeXJq w6Rsw6Qgd3JvdGU6Cj4gPj4gT24gRnJpLCBTZXAgMjEsIDIwMTggYXQgMDc6Mzk6NDBQTSArMDIw MCwgTWFhcnRlbiBMYW5raG9yc3Qgd3JvdGU6Cj4gPj4+IFRvIG1ha2UgTlYxMiB3b3JraW5nIG9u IGljbCwgd2UgbmVlZCB0byB1cGRhdGUgMiBwbGFuZXMgc2ltdWx0YW5lb3VzbHkuCj4gPj4+IEkn dmUgY2hvc2VuIHRvIGRvIHRoaXMgaW4gdGhlIENSVEMgc3RlcCBhZnRlciBwbGFuZSB2YWxpZGF0 aW9uIGlzIGRvbmUsCj4gPj4+IHNvIHdlIGtub3cgd2hhdCBwbGFuZXMgYXJlIChpbil2aXNpYmxl LiBUaGUgbGlua2VkIFkgcGxhbmUgd2lsbCBnZXQKPiA+Pj4gdXBkYXRlZCBpbiBpbnRlbF9wbGFu ZV91cGRhdGVfcGxhbmVzX29uX2NydGMoKSwgYnkgdGhlIGNhbGwgdG8KPiA+Pj4gdXBkYXRlX3Ns YXZlLCB3aGljaCBnZXRzIHRoZSBtYXN0ZXIncyBwbGFuZV9zdGF0ZSBhcyBhcmd1bWVudC4KPiA+ Pj4KPiA+Pj4gVGhlIGxpbmsgcmVxdWlyZXMgYm90aCBwbGFuZXMgZm9yIGF0b21pY191cGRhdGUg dG8gd29yaywKPiA+Pj4gc28gbWFrZSBzdXJlIHNrbF9kZGJfYWRkX2FmZmVjdGVkX3BsYW5lcygp IGFkZHMgYm90aCBzdGF0ZXMuCj4gPj4+Cj4gPj4+IENoYW5nZXMgc2luY2UgdjE6Cj4gPj4+IC0g SW50cm9kdWNlIGljbF9pc19udjEyX3lfcGxhbmUoKSwgaW5zdGVhZCBvZiBoYXJkY29kaW5nIHNw cml0ZSBudW1iZXJzLgo+ID4+PiAtIFB1dCBhbGwgdGhlIHN0YXRlIHVwZGF0aW5nIGxvZ2luIGlu IGludGVsX3BsYW5lX2F0b21pY19jaGVja193aXRoX3N0YXRlKCkuCj4gPj4+IC0gQ2xlYW4gdXAg Y2hhbmdlcyBpbiBpbnRlbF9wbGFuZV9hdG9taWNfY2hlY2soKS4KPiA+Pj4gQ2hhbmdlcyBzaW5j ZSB2MjoKPiA+Pj4gLSBGaXggaW50ZWxfYXRvbWljX2dldF9vbGRfcGxhbmVfc3RhdGUoKSB0byBh Y3R1YWxseSByZXR1cm4gb2xkIHN0YXRlLgo+ID4+PiAtIE1vdmUgdmlzaWJpbGl0eSBjaGFuZ2Vz IHRvIHByZXBhcmF0aW9uIHBhdGNoLgo+ID4+PiAtIE9ubHkgdHJ5IHRvIGZpbmQgYSBZIHBsYW5l IG9uIGdlbjExLCBlYXJsaWVyIHBsYXRmb3JtcyBvbmx5IHJlcXVpcmUgYSBzaW5nbGUgcGxhbmUu Cj4gPj4+Cj4gPj4+IFNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxh bmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4gPj4+Cj4gPj4+IGZpeHVwIFkvVVYgTGlua2FnZQo+ ID4+Pgo+ID4+PiBTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5r aG9yc3RAbGludXguaW50ZWwuY29tPgo+ID4+PiAtLS0KPiA+Pj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2F0b21pY19wbGFuZS5jIHwgMTA2ICsrKysrKysrKysrKysrKysrKy0tLS0KPiA+ Pj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyAgICAgIHwgIDU3ICsrKysr KysrKysrKwo+ID4+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgICAgICAg fCAgNTMgKysrKysrKysrKysKPiA+Pj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMg ICAgICAgICAgIHwgIDEyICsrLQo+ID4+PiAgNCBmaWxlcyBjaGFuZ2VkLCAyMTAgaW5zZXJ0aW9u cygrKSwgMTggZGVsZXRpb25zKC0pCj4gPj4+Cj4gPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2F0b21pY19wbGFuZS5jCj4gPj4+IGluZGV4IDk4NGJjMWYyNjYyNS4uNTIyNjk5MDg1YTU5 IDEwMDY0NAo+ID4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxh bmUuYwo+ID4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUu Ywo+ID4+PiBAQCAtMTIxLDcgKzEyMSwxMSBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NoZWNr X3dpdGhfc3RhdGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjXwo+ID4+ PiAgCWNydGNfc3RhdGUtPm52MTJfcGxhbmVzICY9IH5CSVQoaW50ZWxfcGxhbmUtPmlkKTsKPiA+ Pj4gIAlpbnRlbF9zdGF0ZS0+YmFzZS52aXNpYmxlID0gZmFsc2U7Cj4gPj4+ICAKPiA+Pj4gLQkv KiBJZiB0aGlzIGlzIGEgY3Vyc29yIHBsYW5lLCBubyBmdXJ0aGVyIGNoZWNrcyBhcmUgbmVlZGVk LiAqLwo+ID4+PiArCS8qIERlc3Ryb3kgdGhlIGxpbmsgKi8KPiA+Pj4gKwlpbnRlbF9zdGF0ZS0+ bGlua2VkX3BsYW5lID0gTlVMTDsKPiA+Pj4gKwlpbnRlbF9zdGF0ZS0+c2xhdmUgPSBmYWxzZTsK PiA+Pj4gKwo+ID4+PiArCS8qIElmIHRoaXMgaXMgYSBjdXJzb3Igb3IgWSBwbGFuZSwgbm8gZnVy dGhlciBjaGVja3MgYXJlIG5lZWRlZC4gKi8KPiA+Pj4gIAlpZiAoIWludGVsX3N0YXRlLT5iYXNl LmNydGMgJiYgIW9sZF9wbGFuZV9zdGF0ZS0+YmFzZS5jcnRjKQo+ID4+PiAgCQlyZXR1cm4gMDsK PiA+Pj4gIAo+ID4+PiBAQCAtMTQyLDI3ICsxNDYsNzYgQEAgaW50IGludGVsX3BsYW5lX2F0b21p Y19jaGVja193aXRoX3N0YXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0 Y18KPiA+Pj4gIAkJCQkJICAgICAgIHN0YXRlKTsKPiA+Pj4gIH0KPiA+Pj4gIAo+ID4+PiAtc3Rh dGljIGludCBpbnRlbF9wbGFuZV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUs Cj4gPj4+IC0JCQkJICAgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm5ld19wbGFuZV9zdGF0ZSkK PiA+Pj4gK3N0YXRpYyBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fcGxh bmUgKmRybV9wbGFuZSwKPiA+Pj4gKwkJCQkgICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqbmV3 X2RybV9wbGFuZV9zdGF0ZSkKPiA+Pj4gIHsKPiA+Pj4gLQlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqc3RhdGUgPSBuZXdfcGxhbmVfc3RhdGUtPnN0YXRlOwo+ID4+PiAtCWNvbnN0IHN0cnVjdCBk cm1fcGxhbmVfc3RhdGUgKm9sZF9wbGFuZV9zdGF0ZSA9Cj4gPj4+IC0JCWRybV9hdG9taWNfZ2V0 X29sZF9wbGFuZV9zdGF0ZShzdGF0ZSwgcGxhbmUpOwo+ID4+PiAtCXN0cnVjdCBkcm1fY3J0YyAq Y3J0YyA9IG5ld19wbGFuZV9zdGF0ZS0+Y3J0YyA/OiBvbGRfcGxhbmVfc3RhdGUtPmNydGM7Cj4g Pj4+IC0JY29uc3Qgc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZTsKPiA+Pj4g LQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlOwo+ID4+PiAtCj4gPj4+IC0J bmV3X3BsYW5lX3N0YXRlLT52aXNpYmxlID0gZmFsc2U7Cj4gPj4+ICsJc3RydWN0IGludGVsX2F0 b21pY19zdGF0ZSAqc3RhdGUgPQo+ID4+PiArCQl0b19pbnRlbF9hdG9taWNfc3RhdGUobmV3X2Ry bV9wbGFuZV9zdGF0ZS0+c3RhdGUpOwo+ID4+PiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUg PSB0b19pbnRlbF9wbGFuZShkcm1fcGxhbmUpOwo+ID4+PiArCWNvbnN0IHN0cnVjdCBpbnRlbF9w bGFuZV9zdGF0ZSAqb2xkX3BsYW5lX3N0YXRlID0KPiA+Pj4gKwkJaW50ZWxfYXRvbWljX2dldF9v bGRfcGxhbmVfc3RhdGUoc3RhdGUsIHBsYW5lKTsKPiA+Pj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmVf c3RhdGUgKm5ld19wbGFuZV9zdGF0ZSA9Cj4gPj4+ICsJCXRvX2ludGVsX3BsYW5lX3N0YXRlKG5l d19kcm1fcGxhbmVfc3RhdGUpOwo+ID4+PiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9f aW50ZWxfY3J0YygKPiA+Pj4gKwkJbmV3X3BsYW5lX3N0YXRlLT5iYXNlLmNydGMgPzoKPiA+Pj4g KwkJb2xkX3BsYW5lX3N0YXRlLT5iYXNlLmNydGMpOwo+ID4+PiArCWNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZTsKPiA+Pj4gKwlzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqbmV3X2NydGNfc3RhdGU7Cj4gPj4+ICsJc3RydWN0IGludGVsX3BsYW5lICpsaW5rZWQg PSBvbGRfcGxhbmVfc3RhdGUtPmxpbmtlZF9wbGFuZTsKPiA+Pj4gKwlpbnQgcmV0Owo+ID4+PiAr CWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqb2xkX2xpbmtlZF9zdGF0ZTsKPiA+Pj4g KwlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKm5ld19saW5rZWRfc3RhdGUgPSBOVUxMOwo+ID4+ PiArCj4gPj4+ICsJaWYgKGxpbmtlZCkgewo+ID4+PiArCQkvKgo+ID4+PiArCQkqIE1ha2Ugc3Vy ZSBhIHByZXZpb3VzbHkgbGlua2VkIHBsYW5lIChhbmQgaW1wbGljaXRseSwgdGhlIENSVEMpCj4g Pj4+ICsJCSogaXMgcGFydCBvZiB0aGUgYXRvbWljIGNvbW1pdC4KPiA+Pj4gKwkJKi8KPiA+Pj4g KwkJaWYgKCFpbnRlbF9hdG9taWNfZ2V0X25ld19wbGFuZV9zdGF0ZShzdGF0ZSwgbGlua2VkKSkg ewo+ID4+PiArCQkJbmV3X2xpbmtlZF9zdGF0ZSA9IGludGVsX2F0b21pY19nZXRfcGxhbmVfc3Rh dGUoc3RhdGUsIGxpbmtlZCk7Cj4gPj4+ICsJCQlpZiAoSVNfRVJSKG5ld19saW5rZWRfc3RhdGUp KQo+ID4+PiArCQkJCXJldHVybiBQVFJfRVJSKG5ld19saW5rZWRfc3RhdGUpOwo+ID4+PiArCQl9 Cj4gPj4+ICsKPiA+Pj4gKwkJb2xkX2xpbmtlZF9zdGF0ZSA9Cj4gPj4+ICsJCQlpbnRlbF9hdG9t aWNfZ2V0X29sZF9wbGFuZV9zdGF0ZShzdGF0ZSwgbGlua2VkKTsKPiA+Pj4gKwo+ID4+PiArCQkv Kgo+ID4+PiArCQkgKiBUaGlzIHdpbGwgaGFwcGVuIHdoZW4gd2UncmUgdGhlIFkgcGxhbmUuIElu IHdoaWNoIGNhc2UKPiA+Pj4gKwkJICogb2xkL25ld19zdGF0ZS0+Y3J0YyBhcmUgYm90aCBOVUxM LiBXZSBzdGlsbCBuZWVkIHRvIHBlcmZvcm0KPiA+Pj4gKwkJICogdXBkYXRlcyBvbiB0aGUgbGlu a2VkIHBsYW5lLgo+ID4+PiArCQkgKi8KPiA+Pj4gKwkJaWYgKCFjcnRjKQo+ID4+PiArCQkJY3J0 YyA9IHRvX2ludGVsX2NydGMob2xkX2xpbmtlZF9zdGF0ZS0+YmFzZS5jcnRjKTsKPiA+Pj4gKwo+ ID4+PiArCQlXQVJOX09OKCFjcnRjKTsKPiA+Pj4gKwl9Cj4gPj4+ICsKPiA+Pj4gKwluZXdfcGxh bmVfc3RhdGUtPmJhc2UudmlzaWJsZSA9IGZhbHNlOwo+ID4+PiAgCWlmICghY3J0YykKPiA+Pj4g IAkJcmV0dXJuIDA7Cj4gPj4+ICAKPiA+Pj4gLQlvbGRfY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNf Z2V0X29sZF9jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKPiA+Pj4gLQluZXdfY3J0Y19zdGF0ZSA9 IGRybV9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKPiA+Pj4gKwlvbGRf Y3J0Y19zdGF0ZSA9IGludGVsX2F0b21pY19nZXRfb2xkX2NydGNfc3RhdGUoc3RhdGUsIGNydGMp Owo+ID4+PiArCW5ld19jcnRjX3N0YXRlID0gaW50ZWxfYXRvbWljX2dldF9uZXdfY3J0Y19zdGF0 ZShzdGF0ZSwgY3J0Yyk7Cj4gPj4+ICsKPiA+Pj4gKwlpZiAobmV3X2xpbmtlZF9zdGF0ZSAmJgo+ ID4+PiArCSAgICBkcm1fcGxhbmVfaW5kZXgoJmxpbmtlZC0+YmFzZSkgPCBkcm1fcGxhbmVfaW5k ZXgoJnBsYW5lLT5iYXNlKSkgewo+ID4+PiArCQkvKgo+ID4+PiArCQkgKiBUaGlzIGZ1bmN0aW9u IGlzIGNhbGxlZCBmcm9tIGRybV9hdG9taWNfaGVscGVyX2NoZWNrX3BsYW5lcygpLCB3aGljaAo+ ID4+PiArCQkgKiB3aWxsIG5vcm1hbGx5IGNoZWNrIHRoZSBuZXdseSBhZGRlZCBwbGFuZSBmb3Ig dXMsIGJ1dCBzaW5jZSB3ZSdyZQo+ID4+PiArCQkgKiBhbHJlYWR5IGluIHRoYXQgZnVuY3Rpb24s IGl0IHdvbid0IGNoZWNrIHRoZSBwbGFuZSBpZiBvdXIgaW5kZXgKPiA+Pj4gKwkJICogaXMgYmln Z2VyIHRoYW4gdGhlIGxpbmtlZCBpbmRleCBiZWNhdXNlIG9mIHRoZQo+ID4+PiArCQkgKiBmb3Jf ZWFjaF9vbGRuZXdfcGxhbmVfaW5fc3RhdGUoKSBjYWxsLgo+ID4+PiArCQkgKi8KPiA+Pj4gKwkJ bmV3X2NydGNfc3RhdGUtPmJhc2UucGxhbmVzX2NoYW5nZWQgPSB0cnVlOwo+ID4+PiArCQlyZXQg PSBpbnRlbF9wbGFuZV9hdG9taWNfY2hlY2tfd2l0aF9zdGF0ZShvbGRfY3J0Y19zdGF0ZSwgbmV3 X2NydGNfc3RhdGUsCj4gPj4+ICsJCQkJCQkJICBvbGRfbGlua2VkX3N0YXRlLCBuZXdfbGlua2Vk X3N0YXRlKTsKPiA+Pj4gKwkJaWYgKHJldCkKPiA+Pj4gKwkJCXJldHVybiByZXQ7Cj4gPj4+ICsJ fQo+ID4+IFRoaXMgaXMgYWxsIHJhdGhlciBjb25mdXNpbmcuIENhbid0IHdlIGp1c3QgZG8gYSBw cmVwcm9jZXNzaW5nIHN0ZXAKPiA+PiBiZWZvcmUgY2hlY2tfcGxhbmVzKCkgdG8gYWRkIHRoZSBs aW5rZWQgcGxhbmVzIGFzIG5lZWRlZCwgYW5kIHRoZW4KPiA+PiBsZXQgdGhlIG5vcm1hbCBjaGVj a19wbGFuZXMoKSBkbyBpdHMgdGhpbmc/Cj4gPiBBbHNvIG9uZSB0aGluZyB0aGF0IHNsaWdodGx5 IHdvcnJpZXMgbWUgaXMgd2hhdCBoYXBwZW5zIGlmIHNvbWVvbmUgYWRkcwo+ID4gbW9yZSBwbGFu ZXMgdG8gdGhlIHN0YXRlIGFmdGVyIHRoaXMgaGFzIGFsbCBiZWVuIGRvbmUuIEkgZ3Vlc3MKPiA+ IGN1cnJlbnRseSB0aG9zZSBjYXNlcyB3b3VsZCBlaXRoZXIgY29tZSBmcm9tIHRoZSB0YWlsIGVu ZCBvZgo+ID4gaW50ZWxfYXRvbWljX2NoZWNrKCkgb3IgZnJvbSBpbnRlbF9jcnRjX2F0b21pY19j aGVjaygpLiBDdXJyZW50bHkgaXQKPiA+IHdvdWxkIGFwcGVhciB0aGF0IHdtL2RkYiBpcyB0aGUg b25seSBwaWVjZSBvZiBjb2RlIHRoYXQgY2FuIGRvIHRoaXMKPiA+IHNvcnQgb2YgdGhpbmcuCj4g SSB0aGluayB0aGlzIHNob3VsZG4ndCBoYXBwZW4sIGFuZCBXTSBpcyBzcGVjaWFsLiBUaGUgb25s eSB0aW1lIHdoZXJlIHlvdSB3YW50IHRvIGFkZCBtb3JlIHBsYW5lcyBpcyBiZWZvcmUgY2hlY2tf cGxhbmVzKCkuCj4gT3RoZXJ3aXNlIHlvdSBjYW4ndCByZXJ1biBhbnkgdmFsaWRhdGlvbiBhcyBy ZXF1aXJlZC4KCllvdSBzaG91bGRuJ3QgbmVlZCB2YWxpZGF0aW9uIGZvciBlZy4gZHBtcyBvbi9v ZmYuIEkgZ3Vlc3Mgd2UgY3VycmVudGx5CmRvIHRoYXQgYWx0aG91Z2ggd2Ugc2hvdWxkbid0IGhh dmUgdG8uCgo+IAo+IEkndmUgbm93IGFkZGVkIGEgZnVuY3Rpb24gaWNsX2FkZF9saW5rZWRfcGxh bmVzIGhlbHBlciB0aGF0IGl0ZXJhdGVzIG92ZXIgYWxsIHBsYW5lcyBpbgo+IHRoZSBzdGF0ZSwg YW5kIGFkZHMgYW55IGxpbmtlZCBwbGFuZXMgdG8gdGhlIHRyYW5zYWN0aW9uLgo+IAo+IFRoaXMg aXMgcnVuIHJpZ2h0IGJlZm9yZSBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19wbGFuZXMoKSwgc28g d2UncmUgc3VyZSB0aGF0IGFsbCBsaW5rZWQKPiBwbGFuZXMgYXJlIGFkZGVkLCB3aXRob3V0IGRv aW5nIGl0IGZyb20gaW50ZWxfcGxhbmVfYXRvbWljX2NoZWNrKCkKPiAKPiBXTSB3aWxsIGNvbnRp bnVlIHRvIGRvIGl0cyBvd24gdGhpbmcsIHNpbmNlIGl0J3MgYSBkZXNpZ24gZXJyb3IgSU1PIHRo YXQgaXQgZXZlbiBhZGRzCj4gcGxhbmVzIHRvIHRoZSBzdGF0ZSB0byBiZWdpbiB3aXRoLiA6KQoK SXQgcHJldHR5IG11Y2ggaGFzIHRvLiBUaGUgZGVzaWduIGVycm9yIHdlIGhhdmUgYXQgdGhlIG1v bWVudCBpcyBub3QKcHJvZ3JhbW1pbmcgdGhlIHdhdGVybWFya3MgZnJvbSB0aGUgdXBkYXRlX3Bs YW5lKCkvZGlzYWJsZV9wbGFuZSgpLgpUaGF0IG9uZSBJJ3ZlIGF0dGVtcHRlZCB0byBmaXggaW46 CmdpdDovL2dpdGh1Yi5jb20vdnN5cmphbGEvbGludXguZ2l0IHNrbF9wbGFuZV91cGRhdGVfZGRi X3NlcXVlbmNlCgpBbmQgc3VwcG9zZWRseSB0aGF0IG9uZSBkb2VzIGZpeCBidWdzIHJlbGF0ZWQg dG8gd2F0ZXJtYXJrcyB2cy4KcGxhbmUgdXBkYXRlcy4KCj4gCj4gV2hpY2ggaXMgdGhlIGxhc3Qg b3B0aW9uIHlvdSBtZW50aW9uZWQgYmVsb3cuCj4gCj4gPiBTb21lIGlkZWFzIGhvdyB0byBzb2x2 ZSBpdCBwZXJoYXBzOgo+ID4gLSBNb3ZlIHRoZSBsaW5rZWQgcGxhbmUgcG9pbnRlciB0byB0aGUg Y29yZSBzbyB0aGF0IGdldF9wbGFuZV9zdGF0ZSgpCj4gPiAgIGNhbiBpbW1lZGlhdGVseSBwaWNr IHVwIGJvdGggcGxhbmVzCj4gPiAtIEFkZCBzb21lIGtpbmQgb2YgZmxhZyBpbnRvIHRoZSB0b3Ag bGV2ZWwgYXRvbWljIHN0YXRlIHRoYXQgYWZ0ZXIgdGhpcwo+ID4gICBwb2ludCBubyBuZXcgcGxh bmVzLiBCdXQgSSBndWVzcyBkdXBsaWNhdGVfc3RhdGUoKSBpcyB0aGUgb25seSB0aGluZwo+ID4g ICB3ZSBoYXZlIGFuZCB0aGF0IGRvZXNuJ3Qga25vdyBhbnl0aGluZyBhYm91dCB0aGUgdGhlIHRv cCBsZXZlbCBzdGF0ZQo+ID4gLSBMaXZlIHdpdGggaXQgYW5kIHRlbGwgZXZlcnlvbmUgdG8gYmUg Y2FyZWZ1bD8gU29tZSBraW5kIG9mCj4gPiAgIGludGVsX2FkZF9hZmZlY3RlZF9wbGFuZXMoKSBt aWdodCBiZSBoZWxwZnVsIGhlcmUgdG8gYXQgbGVhc3QgZ2l2ZQo+ID4gICBwZW9wbGUgb25lIHRo aW5nIHRvIGNhbGwgaW4gdGhlIGxhdGUgc3RhZ2VzLiBXb3VsZG4ndCBoZWxwIGlmIHRoZQo+ID4g ICBjYWxsIGNvbWVzIGZyb20gc29tZSBoZWxwZXIvY29yZSBmdW5jdGlvbiB0aG91Z2guIEFuZCBh cyB0aGVyZSBpcwo+ID4gICBubyB1c2UgZm9yIHN1Y2ggYSBmdW5jdGlvbiBjdXJyZW50bHkgbm8g cG9pbnQgYWRkaW5nIGl0IEkgc3VwcG9zZS4KPiA+ICAgVGhlIHdtIHN0dWZmIGhhcyBpdHMgb3du IHRoaW5nLCB3aGljaCB5b3UgY292ZXJlZCBhbHJlYWR5Lgo+ID4KPiA+IER1bm5vLCBtYXliZSBJ J20ganVzdCBhIGJpdCB0b28gcGFyYW5vaWQgaGVyZS4KPiA+CgotLSAKVmlsbGUgU3lyasOkbMOk CkludGVsCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=