From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 3/4] drm/i915: Support NV12 in rotated GGTT mapping Date: Mon, 28 Sep 2015 15:41:00 +0300 Message-ID: <20150928124100.GL26517@intel.com> References: <1442828735-9448-1-git-send-email-tvrtko.ursulin@linux.intel.com> <1442828735-9448-4-git-send-email-tvrtko.ursulin@linux.intel.com> <20150924163556.GE26517@intel.com> <5605178C.4080304@linux.intel.com> <20150925112959.GN26517@intel.com> <20150928083724.GV3383@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 9E3A76E9C3 for ; Mon, 28 Sep 2015 05:41:04 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20150928083724.GV3383@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBTZXAgMjgsIDIwMTUgYXQgMTA6Mzc6MjRBTSArMDIwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBGcmksIFNlcCAyNSwgMjAxNSBhdCAwMjoyOTo1OVBNICswMzAwLCBWaWxsZSBT eXJqw6Rsw6Qgd3JvdGU6Cj4gPiBPbiBGcmksIFNlcCAyNSwgMjAxNSBhdCAxMDo0NDo0NEFNICsw MTAwLCBUdnJ0a28gVXJzdWxpbiB3cm90ZToKPiA+ID4gCj4gPiA+IE9uIDA5LzI0LzIwMTUgMDU6 MzUgUE0sIFZpbGxlIFN5cmrDpGzDpCB3cm90ZToKPiA+ID4gPiBPbiBNb24sIFNlcCAyMSwgMjAx NSBhdCAxMDo0NTozNEFNICswMTAwLCBUdnJ0a28gVXJzdWxpbiB3cm90ZToKPiA+ID4gPj4gRnJv bTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KPiA+ID4gPj4KPiA+ ID4gPj4gSnVzdCBhZGRpbmcgdGhlIHJvdGF0ZWQgVVYgcGxhbmUgYXQgdGhlIGVuZCBvZiB0aGUg cm90YXRlZCBZIHBsYW5lLgo+ID4gPiA+Pgo+ID4gPiA+PiB2MjogUmViYXNlLgo+ID4gPiA+Pgo+ ID4gPiA+PiBTaWduZWQtb2ZmLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50 ZWwuY29tPgo+ID4gPiA+PiAtLS0KPiA+ID4gPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9ndHQuYyAgfCAzNyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0KPiA+ ID4gPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaCAgfCAgMyArKysKPiA+ ID4gPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAxMiArKysrKysr KysrKysKPiA+ID4gPj4gICAzIGZpbGVzIGNoYW5nZWQsIDQ2IGluc2VydGlvbnMoKyksIDYgZGVs ZXRpb25zKC0pCj4gPiA+ID4+Cj4gPiA+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5j Cj4gPiA+ID4+IGluZGV4IDU5YzkzNGZiOTIzMC4uMmRmOWQxNmRjZWZkIDEwMDY0NAo+ID4gPiA+ PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+ID4gPiA+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+ID4gPiA+PiBAQCAtMzI3Miwx MCArMzI3MiwxMyBAQCBpbnRlbF9yb3RhdGVfZmJfb2JqX3BhZ2VzKHN0cnVjdCBpOTE1X2dndHRf dmlldyAqZ2d0dF92aWV3LAo+ID4gPiA+PiAgIHsKPiA+ID4gPj4gICAJc3RydWN0IGludGVsX3Jv dGF0aW9uX2luZm8gKnJvdF9pbmZvID0gJmdndHRfdmlldy0+cm90YXRpb25faW5mbzsKPiA+ID4g Pj4gICAJdW5zaWduZWQgaW50IHNpemVfcGFnZXMgPSByb3RfaW5mby0+c2l6ZSA+PiBQQUdFX1NI SUZUOwo+ID4gPiA+PiArCXVuc2lnbmVkIGludCBzaXplX3BhZ2VzX3V2Owo+ID4gPiA+PiAgIAlz dHJ1Y3Qgc2dfcGFnZV9pdGVyIHNnX2l0ZXI7Cj4gPiA+ID4+ICAgCXVuc2lnbmVkIGxvbmcgaTsK PiA+ID4gPj4gICAJZG1hX2FkZHJfdCAqcGFnZV9hZGRyX2xpc3Q7Cj4gPiA+ID4+ICAgCXN0cnVj dCBzZ190YWJsZSAqc3Q7Cj4gPiA+ID4+ICsJdW5zaWduZWQgaW50IHV2X3N0YXJ0X3BhZ2U7Cj4g PiA+ID4+ICsJc3RydWN0IHNjYXR0ZXJsaXN0ICpzZzsKPiA+ID4gPj4gICAJaW50IHJldCA9IC1F Tk9NRU07Cj4gPiA+ID4+Cj4gPiA+ID4+ICAgCS8qIEFsbG9jYXRlIGEgdGVtcG9yYXJ5IGxpc3Qg b2Ygc291cmNlIHBhZ2VzIGZvciByYW5kb20gYWNjZXNzLiAqLwo+ID4gPiA+PiBAQCAtMzI4NCwx MiArMzI4NywxOCBAQCBpbnRlbF9yb3RhdGVfZmJfb2JqX3BhZ2VzKHN0cnVjdCBpOTE1X2dndHRf dmlldyAqZ2d0dF92aWV3LAo+ID4gPiA+PiAgIAlpZiAoIXBhZ2VfYWRkcl9saXN0KQo+ID4gPiA+ PiAgIAkJcmV0dXJuIEVSUl9QVFIocmV0KTsKPiA+ID4gPj4KPiA+ID4gPj4gKwkvKiBBY2NvdW50 IGZvciBVViBwbGFuZSB3aXRoIE5WMTIuICovCj4gPiA+ID4+ICsJaWYgKHJvdF9pbmZvLT5waXhl bF9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9OVjEyKQo+ID4gPiA+PiArCQlzaXplX3BhZ2VzX3V2ID0g cm90X2luZm8tPnNpemVfdXYgPj4gUEFHRV9TSElGVDsKPiA+ID4gPj4gKwllbHNlCj4gPiA+ID4+ ICsJCXNpemVfcGFnZXNfdXYgPSAwOwo+ID4gPiA+PiArCj4gPiA+ID4+ICAgCS8qIEFsbG9jYXRl IHRhcmdldCBTRyBsaXN0LiAqLwo+ID4gPiA+PiAgIAlzdCA9IGttYWxsb2Moc2l6ZW9mKCpzdCks IEdGUF9LRVJORUwpOwo+ID4gPiA+PiAgIAlpZiAoIXN0KQo+ID4gPiA+PiAgIAkJZ290byBlcnJf c3RfYWxsb2M7Cj4gPiA+ID4+Cj4gPiA+ID4+IC0JcmV0ID0gc2dfYWxsb2NfdGFibGUoc3QsIHNp emVfcGFnZXMsIEdGUF9LRVJORUwpOwo+ID4gPiA+PiArCXJldCA9IHNnX2FsbG9jX3RhYmxlKHN0 LCBzaXplX3BhZ2VzICsgc2l6ZV9wYWdlc191diwgR0ZQX0tFUk5FTCk7Cj4gPiA+ID4+ICAgCWlm IChyZXQpCj4gPiA+ID4+ICAgCQlnb3RvIGVycl9zZ19hbGxvYzsKPiA+ID4gPj4KPiA+ID4gPj4g QEAgLTMzMDEsMTUgKzMzMTAsMzAgQEAgaW50ZWxfcm90YXRlX2ZiX29ial9wYWdlcyhzdHJ1Y3Qg aTkxNV9nZ3R0X3ZpZXcgKmdndHRfdmlldywKPiA+ID4gPj4gICAJfQo+ID4gPiA+Pgo+ID4gPiA+ PiAgIAkvKiBSb3RhdGUgdGhlIHBhZ2VzLiAqLwo+ID4gPiA+PiAtCXJvdGF0ZV9wYWdlcyhwYWdl X2FkZHJfbGlzdCwgMCwKPiA+ID4gPj4gKwlzZyA9IHJvdGF0ZV9wYWdlcyhwYWdlX2FkZHJfbGlz dCwgMCwKPiA+ID4gPj4gICAJCSAgICAgcm90X2luZm8tPndpZHRoX3BhZ2VzLCByb3RfaW5mby0+ aGVpZ2h0X3BhZ2VzLAo+ID4gPiA+PiAgIAkJICAgICBzdCwgTlVMTCk7Cj4gPiA+ID4+Cj4gPiA+ ID4+ICsJLyogQXBwZW5kIHRoZSBVViBwbGFuZSBpZiBOVjEyLiAqLwo+ID4gPiA+PiArCWlmIChy b3RfaW5mby0+cGl4ZWxfZm9ybWF0ID09IERSTV9GT1JNQVRfTlYxMikgewo+ID4gPiA+PiArCQl1 dl9zdGFydF9wYWdlID0gc2l6ZV9wYWdlczsKPiA+ID4gPj4gKwo+ID4gPiA+PiArCQkvKiBDaGVj ayBmb3IgdGlsZS1yb3cgdW4tYWxpZ25tZW50LiAqLwo+ID4gPiA+PiArCQlpZiAob2Zmc2V0X2lu X3BhZ2Uocm90X2luZm8tPnV2X29mZnNldCkpCj4gPiA+ID4+ICsJCQl1dl9zdGFydF9wYWdlLS07 Cj4gPiA+ID4+ICsKPiA+ID4gPj4gKwkJcm90YXRlX3BhZ2VzKHBhZ2VfYWRkcl9saXN0LCB1dl9z dGFydF9wYWdlLAo+ID4gPiA+PiArCQkJICAgICByb3RfaW5mby0+d2lkdGhfcGFnZXNfdXYsCj4g PiA+ID4+ICsJCQkgICAgIHJvdF9pbmZvLT5oZWlnaHRfcGFnZXNfdXYsCj4gPiA+ID4+ICsJCQkg ICAgIHN0LCBzZyk7Cj4gPiA+ID4+ICsJfQo+ID4gPiA+PiArCj4gPiA+ID4+ICAgCURSTV9ERUJV R19LTVMoCj4gPiA+ID4+IC0JCSAgICAgICJDcmVhdGVkIHJvdGF0ZWQgcGFnZSBtYXBwaW5nIGZv ciBvYmplY3Qgc2l6ZSAlenUgKHBpdGNoPSV1LCBoZWlnaHQ9JXUsIHBpeGVsX2Zvcm1hdD0weCV4 LCAldXgldSB0aWxlcywgJXUgcGFnZXMpLlxuIiwKPiA+ID4gPj4gKwkJICAgICAgIkNyZWF0ZWQg cm90YXRlZCBwYWdlIG1hcHBpbmcgZm9yIG9iamVjdCBzaXplICV6dSAocGl0Y2g9JXUsIGhlaWdo dD0ldSwgcGl4ZWxfZm9ybWF0PTB4JXgsICV1eCV1IHRpbGVzLCAldSBwYWdlcyAoJXUgcGxhbmUg MCkpLlxuIiwKPiA+ID4gPj4gICAJCSAgICAgIG9iai0+YmFzZS5zaXplLCByb3RfaW5mby0+cGl0 Y2gsIHJvdF9pbmZvLT5oZWlnaHQsCj4gPiA+ID4+ICAgCQkgICAgICByb3RfaW5mby0+cGl4ZWxf Zm9ybWF0LCByb3RfaW5mby0+d2lkdGhfcGFnZXMsCj4gPiA+ID4+IC0JCSAgICAgIHJvdF9pbmZv LT5oZWlnaHRfcGFnZXMsIHNpemVfcGFnZXMpOwo+ID4gPiA+PiArCQkgICAgICByb3RfaW5mby0+ aGVpZ2h0X3BhZ2VzLCBzaXplX3BhZ2VzICsgc2l6ZV9wYWdlc191diwKPiA+ID4gPj4gKwkJICAg ICAgc2l6ZV9wYWdlcyk7Cj4gPiA+ID4+Cj4gPiA+ID4+ICAgCWRybV9mcmVlX2xhcmdlKHBhZ2Vf YWRkcl9saXN0KTsKPiA+ID4gPj4KPiA+ID4gPj4gQEAgLTMzMjEsMTAgKzMzNDUsMTEgQEAgZXJy X3N0X2FsbG9jOgo+ID4gPiA+PiAgIAlkcm1fZnJlZV9sYXJnZShwYWdlX2FkZHJfbGlzdCk7Cj4g PiA+ID4+Cj4gPiA+ID4+ICAgCURSTV9ERUJVR19LTVMoCj4gPiA+ID4+IC0JCSAgICAgICJGYWls ZWQgdG8gY3JlYXRlIHJvdGF0ZWQgbWFwcGluZyBmb3Igb2JqZWN0IHNpemUgJXp1ISAoJWQpIChw aXRjaD0ldSwgaGVpZ2h0PSV1LCBwaXhlbF9mb3JtYXQ9MHgleCwgJXV4JXUgdGlsZXMsICV1IHBh Z2VzKVxuIiwKPiA+ID4gPj4gKwkJICAgICAgIkZhaWxlZCB0byBjcmVhdGUgcm90YXRlZCBtYXBw aW5nIGZvciBvYmplY3Qgc2l6ZSAlenUhICglZCkgKHBpdGNoPSV1LCBoZWlnaHQ9JXUsIHBpeGVs X2Zvcm1hdD0weCV4LCAldXgldSB0aWxlcywgJXUgcGFnZXMgKCV1IHBsYW5lIDApKVxuIiwKPiA+ ID4gPj4gICAJCSAgICAgIG9iai0+YmFzZS5zaXplLCByZXQsIHJvdF9pbmZvLT5waXRjaCwgcm90 X2luZm8tPmhlaWdodCwKPiA+ID4gPj4gICAJCSAgICAgIHJvdF9pbmZvLT5waXhlbF9mb3JtYXQs IHJvdF9pbmZvLT53aWR0aF9wYWdlcywKPiA+ID4gPj4gLQkJICAgICAgcm90X2luZm8tPmhlaWdo dF9wYWdlcywgc2l6ZV9wYWdlcyk7Cj4gPiA+ID4+ICsJCSAgICAgIHJvdF9pbmZvLT5oZWlnaHRf cGFnZXMsIHNpemVfcGFnZXMgKyBzaXplX3BhZ2VzX3V2LAo+ID4gPiA+PiArCQkgICAgICBzaXpl X3BhZ2VzKTsKPiA+ID4gPj4gICAJcmV0dXJuIEVSUl9QVFIocmV0KTsKPiA+ID4gPj4gICB9Cj4g PiA+ID4+Cj4gPiA+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9ndHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4gPiA+ID4+IGlu ZGV4IDgyNzUwMDczZDViMy4uMTk3MTgzZDVjNTQzIDEwMDY0NAo+ID4gPiA+PiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAo+ID4gPiA+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAo+ID4gPiA+PiBAQCAtMTM4LDEwICsxMzgsMTMgQEAg ZW51bSBpOTE1X2dndHRfdmlld190eXBlIHsKPiA+ID4gPj4gICBzdHJ1Y3QgaW50ZWxfcm90YXRp b25faW5mbyB7Cj4gPiA+ID4+ICAgCXVuc2lnbmVkIGludCBoZWlnaHQ7Cj4gPiA+ID4+ICAgCXVu c2lnbmVkIGludCBwaXRjaDsKPiA+ID4gPj4gKwl1bnNpZ25lZCBpbnQgdXZfb2Zmc2V0Owo+ID4g PiA+PiAgIAl1aW50MzJfdCBwaXhlbF9mb3JtYXQ7Cj4gPiA+ID4+ICAgCXVpbnQ2NF90IGZiX21v ZGlmaWVyOwo+ID4gPiA+PiAgIAl1bnNpZ25lZCBpbnQgd2lkdGhfcGFnZXMsIGhlaWdodF9wYWdl czsKPiA+ID4gPj4gICAJdWludDY0X3Qgc2l6ZTsKPiA+ID4gPj4gKwl1bnNpZ25lZCBpbnQgd2lk dGhfcGFnZXNfdXYsIGhlaWdodF9wYWdlc191djsKPiA+ID4gPj4gKwl1aW50NjRfdCBzaXplX3V2 Owo+ID4gPiA+PiAgIH07Cj4gPiA+ID4+Cj4gPiA+ID4+ICAgc3RydWN0IGk5MTVfZ2d0dF92aWV3 IHsKPiA+ID4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gPiA+PiBpbmRl eCBlMTliOGU2OTljMDAuLjJkYjdjYzQyNTM5YyAxMDA2NDQKPiA+ID4gPj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiA+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gPiA+PiBAQCAtMjI2Myw2ICsyMjYzLDcgQEAg aW50ZWxfZmlsbF9mYl9nZ3R0X3ZpZXcoc3RydWN0IGk5MTVfZ2d0dF92aWV3ICp2aWV3LCBzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiA+ID4gPj4gICAJaW5mby0+aGVpZ2h0ID0gZmItPmhl aWdodDsKPiA+ID4gPj4gICAJaW5mby0+cGl4ZWxfZm9ybWF0ID0gZmItPnBpeGVsX2Zvcm1hdDsK PiA+ID4gPj4gICAJaW5mby0+cGl0Y2ggPSBmYi0+cGl0Y2hlc1swXTsKPiA+ID4gPj4gKwlpbmZv LT51dl9vZmZzZXQgPSBmYi0+b2Zmc2V0c1sxXTsKPiA+ID4gPgo+ID4gPiA+IE9LLCBzbyB0aGlz IGFscmVhZHkgY2FtZSB1cCBhIGJpdCB3aGVuIEkgd2FzIGxvb2tpbmcgYXQgQ2hhbmRyYSdzIHN0 dWZmLAo+ID4gPiA+IGJ1dCB3ZSByZWFsbHkgaGF2ZSB0byBkZWZpbmUgd2hhdCBmYi0+b2Zmc2V0 c1tdIG1lYW5zIG5vdy4KPiA+ID4gPgo+ID4gPiA+IE9uIG9uZSBoYW5kLCBpdCB3b3VsZCBiZSB2 ZXJ5IGxvZ2ljYWwgZm9yIGl0IHRvIGJlIGEgcmF3IGJ5dGUgb2Zmc2V0Cj4gPiA+ID4gaW50byB0 aGUgb2JqZWN0IHdoZXJlIHRoZSBmYiBzdGFydHMuIEJ1dCBvbiB0aGUgb3RoZXIgaGFuZCB0aGF0 IHBlcmhhcHMKPiA+ID4gPiBtYWtlcyBpdCBhIGJpdCBtb3JlIGRpZmZpY3VsdCBmb3IgdXNlcnNw YWNlIHRvIGNvbXB1dGUgb2Zmc2V0c1sxXSBmb3IKPiA+ID4gPiB0aGUgQ2JDciBwbGFuZS4gQWxz byB3ZSBoYXZlIGZlbmNlcyB0byBjb25zaWRlciwgYW5kIGN1cnJlbnRseSB3ZSBldmVuCj4gPiA+ ID4gcmVxdWlyZSB0aGF0IHRoZSBmZW5jZSBzdHJpZGUgbWF0Y2hlcyB0aGUgZmIgc3RyaWRlLCBl dmVuIHRob3VnaCB0aGF0Cj4gPiA+ID4gbWF5IG5vdCByZWFsbHkgYmUgbmVjZXNzYXJ5LiBTbyBt YXliZSBpdCBzaG91bGQgYmUgdGhlIGxpbmVhciBvZmZzZXQKPiA+ID4gPiBpbnN0ZWFkLgo+ID4g PiA+Cj4gPiA+ID4gU28gd2hpY2ggd2F5IHNob3VsZCB3ZSBnbz8KPiA+ID4gCj4gPiA+IE5vIGlk ZWEsIEknbSBhZnJhaWQgSSBkb24ndCBoYXZlIHRoZSB3aWRlIGVub3VnaCBrbm93bGVkZ2Ugb24g dGhpcyBvbmUgCj4gPiA+IHRvIGNvbnRyaWJ1dGUgaHVnZWx5Lgo+ID4gPiAKPiA+ID4gV2h5IHdv dWxkIGl0IGJlIGRpZmZpY3VsdCBmb3IgdXNlcnNwYWNlIHRvIGNvbXB1dGUgYSBieXRlIG9mZnNl dCB0byB0aGUgCj4gPiA+IFVWIHBsYW5lIHRob3VnaD8gUHJlc3VtYWJseSBpdCBoYWQgdG8ga25v dyBpdCBhbHJlYWR5IHRvIGhhdmUgcmVuZGVyZWQgCj4gPiA+IGFueXRoaW5nIC0gb3RoZXJ3aXNl IHdoeSBhbmQgaG93IHdvdWxkIGl0IGJlIGdpdmluZyB0aGlzIGZyYW1lIGJ1ZmZlciB0byAKPiA+ ID4gdGhlIGtlcm5lbD8KPiA+IAo+ID4gV2VsbCwgaXQncyBub3QgZGlmZmljdWx0IHBlciBzYXks IGJ1dCBpdCB3b3VsZCBoYXZlIHRvIGtub3cgdGhlIHRpbGUKPiA+IGRpbWVuc2lvbnMgdG8gZG8g aXQuIFdoZW4gdXNpbmcgYSBsaW5lYXIgb2Zmc2V0LCB0aGUgdGlsZSBkaW1lbnNpb25zIGFyZQo+ ID4gbW9zdGx5IG1lYW5pbmdsZXNzLCBhbHRob3VnaCBzb21lIG9mIHRoZSBodyByZXN0cmljdGlv bnMgKHN0cmlkZSBtdXN0IGJlCj4gPiB0aWxlIGFsaWduZWQsIGFuZCBDYkNyIHBsYW5lIG11c3Qg c3RhcnQgYXQgc29tZXdoYXQgYWxpZ25lZCBvZmZzZXQKPiA+IGF0IGxlYXN0IHNvbWV0aW1lcykg ZG9lcyBibG93IGEgaG9sZSB0byB0aGF0IHRoZW9yeSBhIGJpdC4KPiA+IAo+ID4gSSBzdXBwb3Nl IGl0J3Mgbm90IHJlYWxseSBhIGh1Z2UgZGVhbCB3aGljaCB3YXkgd2UgZ28sIHdlIGp1c3QgaGF2 ZSB0bwo+ID4gcGljayBvbmUgYW5kIHN0aWNrIHdpdGggaXQsIGFuZCBkb2N1bWVudCBpdC4KPiAK PiBIbSBJIGtpbmRhIGFzc3VtZWQgdGhhdCBmb3IgdGlsZWQgbGF5b3V0cyBwbGFuZSBvZmZzZXRz IG11c3QgYmUKPiB0aWxlLWFsaWduZWQgZm9yIGV2ZXJ5b25lLgoKTmFoLCB3ZSBzaG91bGQgYmUg YWJsZSB0byBoYXZlIGl0IGp1c3QgKG1hY3JvKXBpeGVsIGFsaWduZWQuIEkgaGF2ZQppdCBhcyBz dHJpZGUgYWxpZ25lZCBpbiBteSB0aWxlX3NpemUgYnJhbmNoIGp1c3QgYmVjYXVzZSBJIGRpZG4n dCB3YW50CnRvIHRoaW5rIGFib3V0IHRoZSBleHRyYSB4IG9mZnNldCBpbml0aWFsbHkuIEJ1dCBJ IHN1cHBvc2UgdGhlIGV4dHJhIHgKb2Zmc2V0IHNob3VsZG4ndCByZWFsbHkgY2F1c2UgYW55IGlz c3Vlcy4gSSBhbHNvIGRpZG4ndCAoeWV0KSBwcm9wZXJseQpkZWFsIHdpdGggdGhlIGZhY3QgdGhh dCB0aGUgcm90YXRlZCB2aWV3IHdvdWxkbid0IG5lY2Vzc2FyaWx5IGNvdmVyCnRoZSBlbnRpcmUg b2JqZWN0LgoKPiBTaW5jZSB0aWxpbmcgaXMgbm93IGEgc2VwYXJhdGUgcGFydCB3aXRoIHRoZSBm Ygo+IG1vZGlmaWVycyBJJ2QgZ28gd2l0aCB1c2luZyBpdCBhcyB0aGUgbGluZWFyIG9mZnNldC4g QnV0IGRlZmluaXRlbHkgbmVlZHMKPiB0byBiZSBkb2N1bWVudGVkIHdpdGggYSBrZXJuZWxkb2Mg cGF0aGMgc29tZXdoZXJlIC4uLgo+IC1EYW5pZWwKPiAtLSAKPiBEYW5pZWwgVmV0dGVyCj4gU29m dHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCj4gaHR0cDovL2Jsb2cuZmZ3bGwuY2gK Ci0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==