From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH 2/7] drm/i915/gen11: Link nv12 Y and UV planes in the atomic state, v3. Date: Mon, 24 Sep 2018 14:35:13 +0200 Message-ID: <83d03c1c-1c2c-1fdf-4a60-f681e253a1ce@linux.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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id EAB506E2BD for ; Mon, 24 Sep 2018 12:35:28 +0000 (UTC) In-Reply-To: <20180921193122.GL5565@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T3AgMjEtMDktMTggb20gMjE6MzEgc2NocmVlZiBWaWxsZSBTeXJqw6Rsw6Q6Cj4gT24gRnJpLCBT ZXAgMjEsIDIwMTggYXQgMDk6MzU6NTJQTSArMDMwMCwgVmlsbGUgU3lyasOkbMOkIHdyb3RlOgo+ PiBPbiBGcmksIFNlcCAyMSwgMjAxOCBhdCAwNzozOTo0MFBNICswMjAwLCBNYWFydGVuIExhbmto b3JzdCB3cm90ZToKPj4+IFRvIG1ha2UgTlYxMiB3b3JraW5nIG9uIGljbCwgd2UgbmVlZCB0byB1 cGRhdGUgMiBwbGFuZXMgc2ltdWx0YW5lb3VzbHkuCj4+PiBJJ3ZlIGNob3NlbiB0byBkbyB0aGlz IGluIHRoZSBDUlRDIHN0ZXAgYWZ0ZXIgcGxhbmUgdmFsaWRhdGlvbiBpcyBkb25lLAo+Pj4gc28g d2Uga25vdyB3aGF0IHBsYW5lcyBhcmUgKGluKXZpc2libGUuIFRoZSBsaW5rZWQgWSBwbGFuZSB3 aWxsIGdldAo+Pj4gdXBkYXRlZCBpbiBpbnRlbF9wbGFuZV91cGRhdGVfcGxhbmVzX29uX2NydGMo KSwgYnkgdGhlIGNhbGwgdG8KPj4+IHVwZGF0ZV9zbGF2ZSwgd2hpY2ggZ2V0cyB0aGUgbWFzdGVy J3MgcGxhbmVfc3RhdGUgYXMgYXJndW1lbnQuCj4+Pgo+Pj4gVGhlIGxpbmsgcmVxdWlyZXMgYm90 aCBwbGFuZXMgZm9yIGF0b21pY191cGRhdGUgdG8gd29yaywKPj4+IHNvIG1ha2Ugc3VyZSBza2xf ZGRiX2FkZF9hZmZlY3RlZF9wbGFuZXMoKSBhZGRzIGJvdGggc3RhdGVzLgo+Pj4KPj4+IENoYW5n ZXMgc2luY2UgdjE6Cj4+PiAtIEludHJvZHVjZSBpY2xfaXNfbnYxMl95X3BsYW5lKCksIGluc3Rl YWQgb2YgaGFyZGNvZGluZyBzcHJpdGUgbnVtYmVycy4KPj4+IC0gUHV0IGFsbCB0aGUgc3RhdGUg dXBkYXRpbmcgbG9naW4gaW4gaW50ZWxfcGxhbmVfYXRvbWljX2NoZWNrX3dpdGhfc3RhdGUoKS4K Pj4+IC0gQ2xlYW4gdXAgY2hhbmdlcyBpbiBpbnRlbF9wbGFuZV9hdG9taWNfY2hlY2soKS4KPj4+ IENoYW5nZXMgc2luY2UgdjI6Cj4+PiAtIEZpeCBpbnRlbF9hdG9taWNfZ2V0X29sZF9wbGFuZV9z dGF0ZSgpIHRvIGFjdHVhbGx5IHJldHVybiBvbGQgc3RhdGUuCj4+PiAtIE1vdmUgdmlzaWJpbGl0 eSBjaGFuZ2VzIHRvIHByZXBhcmF0aW9uIHBhdGNoLgo+Pj4gLSBPbmx5IHRyeSB0byBmaW5kIGEg WSBwbGFuZSBvbiBnZW4xMSwgZWFybGllciBwbGF0Zm9ybXMgb25seSByZXF1aXJlIGEgc2luZ2xl IHBsYW5lLgo+Pj4KPj4+IFNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVu Lmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4+Pgo+Pj4gZml4dXAgWS9VViBMaW5rYWdlCj4+ Pgo+Pj4gU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0 QGxpbnV4LmludGVsLmNvbT4KPj4+IC0tLQo+Pj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2F0b21pY19wbGFuZS5jIHwgMTA2ICsrKysrKysrKysrKysrKysrKy0tLS0KPj4+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgICAgICB8ICA1NyArKysrKysrKysrKysKPj4+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgICAgICB8ICA1MyArKysrKysr KysrKwo+Pj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICAgICAgIHwgIDEy ICsrLQo+Pj4gIDQgZmlsZXMgY2hhbmdlZCwgMjEwIGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9u cygtKQo+Pj4KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9t aWNfcGxhbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jCj4+ PiBpbmRleCA5ODRiYzFmMjY2MjUuLjUyMjY5OTA4NWE1OSAxMDA2NDQKPj4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jCj4+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYwo+Pj4gQEAgLTEyMSw3ICsxMjEsMTEgQEAg aW50IGludGVsX3BsYW5lX2F0b21pY19jaGVja193aXRoX3N0YXRlKGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpvbGRfY3J0Y18KPj4+ICAJY3J0Y19zdGF0ZS0+bnYxMl9wbGFuZXMgJj0g fkJJVChpbnRlbF9wbGFuZS0+aWQpOwo+Pj4gIAlpbnRlbF9zdGF0ZS0+YmFzZS52aXNpYmxlID0g ZmFsc2U7Cj4+PiAgCj4+PiAtCS8qIElmIHRoaXMgaXMgYSBjdXJzb3IgcGxhbmUsIG5vIGZ1cnRo ZXIgY2hlY2tzIGFyZSBuZWVkZWQuICovCj4+PiArCS8qIERlc3Ryb3kgdGhlIGxpbmsgKi8KPj4+ ICsJaW50ZWxfc3RhdGUtPmxpbmtlZF9wbGFuZSA9IE5VTEw7Cj4+PiArCWludGVsX3N0YXRlLT5z bGF2ZSA9IGZhbHNlOwo+Pj4gKwo+Pj4gKwkvKiBJZiB0aGlzIGlzIGEgY3Vyc29yIG9yIFkgcGxh bmUsIG5vIGZ1cnRoZXIgY2hlY2tzIGFyZSBuZWVkZWQuICovCj4+PiAgCWlmICghaW50ZWxfc3Rh dGUtPmJhc2UuY3J0YyAmJiAhb2xkX3BsYW5lX3N0YXRlLT5iYXNlLmNydGMpCj4+PiAgCQlyZXR1 cm4gMDsKPj4+ICAKPj4+IEBAIC0xNDIsMjcgKzE0Niw3NiBAQCBpbnQgaW50ZWxfcGxhbmVfYXRv bWljX2NoZWNrX3dpdGhfc3RhdGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9j cnRjXwo+Pj4gIAkJCQkJICAgICAgIHN0YXRlKTsKPj4+ICB9Cj4+PiAgCj4+PiAtc3RhdGljIGlu dCBpbnRlbF9wbGFuZV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4+PiAt CQkJCSAgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpuZXdfcGxhbmVfc3RhdGUpCj4+PiArc3Rh dGljIGludCBpbnRlbF9wbGFuZV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqZHJtX3Bs YW5lLAo+Pj4gKwkJCQkgICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqbmV3X2RybV9wbGFuZV9z dGF0ZSkKPj4+ICB7Cj4+PiAtCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9IG5ld19w bGFuZV9zdGF0ZS0+c3RhdGU7Cj4+PiAtCWNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9s ZF9wbGFuZV9zdGF0ZSA9Cj4+PiAtCQlkcm1fYXRvbWljX2dldF9vbGRfcGxhbmVfc3RhdGUoc3Rh dGUsIHBsYW5lKTsKPj4+IC0Jc3RydWN0IGRybV9jcnRjICpjcnRjID0gbmV3X3BsYW5lX3N0YXRl LT5jcnRjID86IG9sZF9wbGFuZV9zdGF0ZS0+Y3J0YzsKPj4+IC0JY29uc3Qgc3RydWN0IGRybV9j cnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZTsKPj4+IC0Jc3RydWN0IGRybV9jcnRjX3N0YXRlICpu ZXdfY3J0Y19zdGF0ZTsKPj4+IC0KPj4+IC0JbmV3X3BsYW5lX3N0YXRlLT52aXNpYmxlID0gZmFs c2U7Cj4+PiArCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlID0KPj4+ICsJCXRvX2lu dGVsX2F0b21pY19zdGF0ZShuZXdfZHJtX3BsYW5lX3N0YXRlLT5zdGF0ZSk7Cj4+PiArCXN0cnVj dCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShkcm1fcGxhbmUpOwo+Pj4gKwlj b25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKm9sZF9wbGFuZV9zdGF0ZSA9Cj4+PiArCQlp bnRlbF9hdG9taWNfZ2V0X29sZF9wbGFuZV9zdGF0ZShzdGF0ZSwgcGxhbmUpOwo+Pj4gKwlzdHJ1 Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKm5ld19wbGFuZV9zdGF0ZSA9Cj4+PiArCQl0b19pbnRlbF9w bGFuZV9zdGF0ZShuZXdfZHJtX3BsYW5lX3N0YXRlKTsKPj4+ICsJc3RydWN0IGludGVsX2NydGMg KmNydGMgPSB0b19pbnRlbF9jcnRjKAo+Pj4gKwkJbmV3X3BsYW5lX3N0YXRlLT5iYXNlLmNydGMg PzoKPj4+ICsJCW9sZF9wbGFuZV9zdGF0ZS0+YmFzZS5jcnRjKTsKPj4+ICsJY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlOwo+Pj4gKwlzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGU7Cj4+PiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqbGlua2Vk ID0gb2xkX3BsYW5lX3N0YXRlLT5saW5rZWRfcGxhbmU7Cj4+PiArCWludCByZXQ7Cj4+PiArCWNv bnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqb2xkX2xpbmtlZF9zdGF0ZTsKPj4+ICsJc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlICpuZXdfbGlua2VkX3N0YXRlID0gTlVMTDsKPj4+ICsKPj4+ ICsJaWYgKGxpbmtlZCkgewo+Pj4gKwkJLyoKPj4+ICsJCSogTWFrZSBzdXJlIGEgcHJldmlvdXNs eSBsaW5rZWQgcGxhbmUgKGFuZCBpbXBsaWNpdGx5LCB0aGUgQ1JUQykKPj4+ICsJCSogaXMgcGFy dCBvZiB0aGUgYXRvbWljIGNvbW1pdC4KPj4+ICsJCSovCj4+PiArCQlpZiAoIWludGVsX2F0b21p Y19nZXRfbmV3X3BsYW5lX3N0YXRlKHN0YXRlLCBsaW5rZWQpKSB7Cj4+PiArCQkJbmV3X2xpbmtl ZF9zdGF0ZSA9IGludGVsX2F0b21pY19nZXRfcGxhbmVfc3RhdGUoc3RhdGUsIGxpbmtlZCk7Cj4+ PiArCQkJaWYgKElTX0VSUihuZXdfbGlua2VkX3N0YXRlKSkKPj4+ICsJCQkJcmV0dXJuIFBUUl9F UlIobmV3X2xpbmtlZF9zdGF0ZSk7Cj4+PiArCQl9Cj4+PiArCj4+PiArCQlvbGRfbGlua2VkX3N0 YXRlID0KPj4+ICsJCQlpbnRlbF9hdG9taWNfZ2V0X29sZF9wbGFuZV9zdGF0ZShzdGF0ZSwgbGlu a2VkKTsKPj4+ICsKPj4+ICsJCS8qCj4+PiArCQkgKiBUaGlzIHdpbGwgaGFwcGVuIHdoZW4gd2Un cmUgdGhlIFkgcGxhbmUuIEluIHdoaWNoIGNhc2UKPj4+ICsJCSAqIG9sZC9uZXdfc3RhdGUtPmNy dGMgYXJlIGJvdGggTlVMTC4gV2Ugc3RpbGwgbmVlZCB0byBwZXJmb3JtCj4+PiArCQkgKiB1cGRh dGVzIG9uIHRoZSBsaW5rZWQgcGxhbmUuCj4+PiArCQkgKi8KPj4+ICsJCWlmICghY3J0YykKPj4+ ICsJCQljcnRjID0gdG9faW50ZWxfY3J0YyhvbGRfbGlua2VkX3N0YXRlLT5iYXNlLmNydGMpOwo+ Pj4gKwo+Pj4gKwkJV0FSTl9PTighY3J0Yyk7Cj4+PiArCX0KPj4+ICsKPj4+ICsJbmV3X3BsYW5l X3N0YXRlLT5iYXNlLnZpc2libGUgPSBmYWxzZTsKPj4+ICAJaWYgKCFjcnRjKQo+Pj4gIAkJcmV0 dXJuIDA7Cj4+PiAgCj4+PiAtCW9sZF9jcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfb2xkX2Ny dGNfc3RhdGUoc3RhdGUsIGNydGMpOwo+Pj4gLQluZXdfY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNf Z2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKPj4+ICsJb2xkX2NydGNfc3RhdGUgPSBp bnRlbF9hdG9taWNfZ2V0X29sZF9jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKPj4+ICsJbmV3X2Ny dGNfc3RhdGUgPSBpbnRlbF9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsK Pj4+ICsKPj4+ICsJaWYgKG5ld19saW5rZWRfc3RhdGUgJiYKPj4+ICsJICAgIGRybV9wbGFuZV9p bmRleCgmbGlua2VkLT5iYXNlKSA8IGRybV9wbGFuZV9pbmRleCgmcGxhbmUtPmJhc2UpKSB7Cj4+ PiArCQkvKgo+Pj4gKwkJICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBkcm1fYXRvbWlj X2hlbHBlcl9jaGVja19wbGFuZXMoKSwgd2hpY2gKPj4+ICsJCSAqIHdpbGwgbm9ybWFsbHkgY2hl Y2sgdGhlIG5ld2x5IGFkZGVkIHBsYW5lIGZvciB1cywgYnV0IHNpbmNlIHdlJ3JlCj4+PiArCQkg KiBhbHJlYWR5IGluIHRoYXQgZnVuY3Rpb24sIGl0IHdvbid0IGNoZWNrIHRoZSBwbGFuZSBpZiBv dXIgaW5kZXgKPj4+ICsJCSAqIGlzIGJpZ2dlciB0aGFuIHRoZSBsaW5rZWQgaW5kZXggYmVjYXVz ZSBvZiB0aGUKPj4+ICsJCSAqIGZvcl9lYWNoX29sZG5ld19wbGFuZV9pbl9zdGF0ZSgpIGNhbGwu Cj4+PiArCQkgKi8KPj4+ICsJCW5ld19jcnRjX3N0YXRlLT5iYXNlLnBsYW5lc19jaGFuZ2VkID0g dHJ1ZTsKPj4+ICsJCXJldCA9IGludGVsX3BsYW5lX2F0b21pY19jaGVja193aXRoX3N0YXRlKG9s ZF9jcnRjX3N0YXRlLCBuZXdfY3J0Y19zdGF0ZSwKPj4+ICsJCQkJCQkJICBvbGRfbGlua2VkX3N0 YXRlLCBuZXdfbGlua2VkX3N0YXRlKTsKPj4+ICsJCWlmIChyZXQpCj4+PiArCQkJcmV0dXJuIHJl dDsKPj4+ICsJfQo+PiBUaGlzIGlzIGFsbCByYXRoZXIgY29uZnVzaW5nLiBDYW4ndCB3ZSBqdXN0 IGRvIGEgcHJlcHJvY2Vzc2luZyBzdGVwCj4+IGJlZm9yZSBjaGVja19wbGFuZXMoKSB0byBhZGQg dGhlIGxpbmtlZCBwbGFuZXMgYXMgbmVlZGVkLCBhbmQgdGhlbgo+PiBsZXQgdGhlIG5vcm1hbCBj aGVja19wbGFuZXMoKSBkbyBpdHMgdGhpbmc/Cj4gQWxzbyBvbmUgdGhpbmcgdGhhdCBzbGlnaHRs eSB3b3JyaWVzIG1lIGlzIHdoYXQgaGFwcGVucyBpZiBzb21lb25lIGFkZHMKPiBtb3JlIHBsYW5l cyB0byB0aGUgc3RhdGUgYWZ0ZXIgdGhpcyBoYXMgYWxsIGJlZW4gZG9uZS4gSSBndWVzcwo+IGN1 cnJlbnRseSB0aG9zZSBjYXNlcyB3b3VsZCBlaXRoZXIgY29tZSBmcm9tIHRoZSB0YWlsIGVuZCBv Zgo+IGludGVsX2F0b21pY19jaGVjaygpIG9yIGZyb20gaW50ZWxfY3J0Y19hdG9taWNfY2hlY2so KS4gQ3VycmVudGx5IGl0Cj4gd291bGQgYXBwZWFyIHRoYXQgd20vZGRiIGlzIHRoZSBvbmx5IHBp ZWNlIG9mIGNvZGUgdGhhdCBjYW4gZG8gdGhpcwo+IHNvcnQgb2YgdGhpbmcuCkkgdGhpbmsgdGhp cyBzaG91bGRuJ3QgaGFwcGVuLCBhbmQgV00gaXMgc3BlY2lhbC4gVGhlIG9ubHkgdGltZSB3aGVy ZSB5b3Ugd2FudCB0byBhZGQgbW9yZSBwbGFuZXMgaXMgYmVmb3JlIGNoZWNrX3BsYW5lcygpLgpP dGhlcndpc2UgeW91IGNhbid0IHJlcnVuIGFueSB2YWxpZGF0aW9uIGFzIHJlcXVpcmVkLgoKSSd2 ZSBub3cgYWRkZWQgYSBmdW5jdGlvbiBpY2xfYWRkX2xpbmtlZF9wbGFuZXMgaGVscGVyIHRoYXQg aXRlcmF0ZXMgb3ZlciBhbGwgcGxhbmVzIGluCnRoZSBzdGF0ZSwgYW5kIGFkZHMgYW55IGxpbmtl ZCBwbGFuZXMgdG8gdGhlIHRyYW5zYWN0aW9uLgoKVGhpcyBpcyBydW4gcmlnaHQgYmVmb3JlIGRy bV9hdG9taWNfaGVscGVyX2NoZWNrX3BsYW5lcygpLCBzbyB3ZSdyZSBzdXJlIHRoYXQgYWxsIGxp bmtlZApwbGFuZXMgYXJlIGFkZGVkLCB3aXRob3V0IGRvaW5nIGl0IGZyb20gaW50ZWxfcGxhbmVf YXRvbWljX2NoZWNrKCkKCldNIHdpbGwgY29udGludWUgdG8gZG8gaXRzIG93biB0aGluZywgc2lu Y2UgaXQncyBhIGRlc2lnbiBlcnJvciBJTU8gdGhhdCBpdCBldmVuIGFkZHMKcGxhbmVzIHRvIHRo ZSBzdGF0ZSB0byBiZWdpbiB3aXRoLiA6KQoKV2hpY2ggaXMgdGhlIGxhc3Qgb3B0aW9uIHlvdSBt ZW50aW9uZWQgYmVsb3cuCgo+IFNvbWUgaWRlYXMgaG93IHRvIHNvbHZlIGl0IHBlcmhhcHM6Cj4g LSBNb3ZlIHRoZSBsaW5rZWQgcGxhbmUgcG9pbnRlciB0byB0aGUgY29yZSBzbyB0aGF0IGdldF9w bGFuZV9zdGF0ZSgpCj4gICBjYW4gaW1tZWRpYXRlbHkgcGljayB1cCBib3RoIHBsYW5lcwo+IC0g QWRkIHNvbWUga2luZCBvZiBmbGFnIGludG8gdGhlIHRvcCBsZXZlbCBhdG9taWMgc3RhdGUgdGhh dCBhZnRlciB0aGlzCj4gICBwb2ludCBubyBuZXcgcGxhbmVzLiBCdXQgSSBndWVzcyBkdXBsaWNh dGVfc3RhdGUoKSBpcyB0aGUgb25seSB0aGluZwo+ICAgd2UgaGF2ZSBhbmQgdGhhdCBkb2Vzbid0 IGtub3cgYW55dGhpbmcgYWJvdXQgdGhlIHRoZSB0b3AgbGV2ZWwgc3RhdGUKPiAtIExpdmUgd2l0 aCBpdCBhbmQgdGVsbCBldmVyeW9uZSB0byBiZSBjYXJlZnVsPyBTb21lIGtpbmQgb2YKPiAgIGlu dGVsX2FkZF9hZmZlY3RlZF9wbGFuZXMoKSBtaWdodCBiZSBoZWxwZnVsIGhlcmUgdG8gYXQgbGVh c3QgZ2l2ZQo+ICAgcGVvcGxlIG9uZSB0aGluZyB0byBjYWxsIGluIHRoZSBsYXRlIHN0YWdlcy4g V291bGRuJ3QgaGVscCBpZiB0aGUKPiAgIGNhbGwgY29tZXMgZnJvbSBzb21lIGhlbHBlci9jb3Jl IGZ1bmN0aW9uIHRob3VnaC4gQW5kIGFzIHRoZXJlIGlzCj4gICBubyB1c2UgZm9yIHN1Y2ggYSBm dW5jdGlvbiBjdXJyZW50bHkgbm8gcG9pbnQgYWRkaW5nIGl0IEkgc3VwcG9zZS4KPiAgIFRoZSB3 bSBzdHVmZiBoYXMgaXRzIG93biB0aGluZywgd2hpY2ggeW91IGNvdmVyZWQgYWxyZWFkeS4KPgo+ IER1bm5vLCBtYXliZSBJJ20ganVzdCBhIGJpdCB0b28gcGFyYW5vaWQgaGVyZS4KPgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==