From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 1/3] drm/i915: Make fb user dirty operation to invalidate frontbuffer Date: Mon, 6 Jul 2015 19:56:59 +0200 Message-ID: <20150706175659.GC7568@phenom.ffwll.local> References: <1435707722-2152-1-git-send-email-rodrigo.vivi@intel.com> <1435855610.28692.242.camel@intel.com> <20150703071053.GH23343@phenom.ffwll.local> <1436201317.28692.335.camel@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wg0-f43.google.com (mail-wg0-f43.google.com [74.125.82.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id B509D89AA7 for ; Mon, 6 Jul 2015 10:54:13 -0700 (PDT) Received: by wgjx7 with SMTP id x7so146893045wgj.2 for ; Mon, 06 Jul 2015 10:54:12 -0700 (PDT) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Paulo Zanoni Cc: "daniel.vetter@ffwll.ch" , "intel-gfx@lists.freedesktop.org" , "Vivi, Rodrigo" List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBKdWwgMDYsIDIwMTUgYXQgMDI6MTE6NTVQTSAtMDMwMCwgUGF1bG8gWmFub25pIHdy b3RlOgo+IDIwMTUtMDctMDYgMTM6NDMgR01ULTAzOjAwIFZpdmksIFJvZHJpZ28gPHJvZHJpZ28u dml2aUBpbnRlbC5jb20+Ogo+ID4gT24gRnJpLCAyMDE1LTA3LTAzIGF0IDA5OjEwICswMjAwLCBE YW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4+IE9uIFRodSwgSnVsIDAyLCAyMDE1IGF0IDA0OjQxOjMy UE0gKzAwMDAsIFZpdmksIFJvZHJpZ28gd3JvdGU6Cj4gPj4gPiBPbiBUaHUsIDIwMTUtMDctMDIg YXQgMTM6MDMgLTAzMDAsIFBhdWxvIFphbm9uaSB3cm90ZToKPiA+PiA+ID4gMjAxNS0wNi0zMCAy MDo0MiBHTVQtMDM6MDAgUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPjoKPiA+ PiA+ID4gPiBMZXQncyBkbyBhIGZyb250YnVmZmVyIGludmFsaWRhdGlvbiBvbiBkaXJ0eSBmYi4K PiA+PiA+ID4gPiBUbyBiZSB1c2VkIGZvciBESVJUWUZCIGRybSBpb2N0bC4KPiA+PiA+ID4gPgo+ ID4+ID4gPiA+IFRoaXMgcGF0Y2ggc29sdmVzIHRoZSBiaWdnZXN0IFBTUiBrbm93biBpc3N1ZSwg dGhhdCBpcwo+ID4+ID4gPiA+IG1pc3NlZCBzY3JlZW4gdXBkYXRlcyBkdXJpbmcgYm9vdCwgbWFp bmx5IHdoZW4gdGhlcmUgaXMgYSBzcGxhc2gKPiA+PiA+ID4gPiBzY3JlZW4gaW52b2x2ZWQgbGlr ZSBwbHltb3V0aC4KPiA+PiA+ID4gPgo+ID4+ID4gPiA+IFBseW1vdGggd2lsbCBkbyBhIG1vZGVz ZXQgb3ZlciBpb2N0bCB0aGF0IGZsdXNoZXMgZnJvbnRidWZmZXIKPiA+PiA+ID4gPiB0cmFja2lu ZyBhbmQgUFNSIGdldHMgYmFjayB0byB3b3JrIHdoaWxlIGl0IGNhbm5vdCB0cmFjayB0aGUKPiA+ PiA+ID4gPiBzY3JlZW4gdXBkYXRlcyBhbmQgZXhpdCBwcm9wZXJseS4gSG93ZXZlciBwbHltb3V0 aCBhbHNvIHVzZXMKPiA+PiA+ID4gPiBhIGRpcnR5ZmIgaW9jdGwgd2hlbmV2ZXIgdXBkYXRpbmcg dGhlIHNjcmVlbi4gU28gbGV0J3MgdXNlIGl0Cj4gPj4gPiA+ID4gdG8gaW52YWxpZGF0ZSBQU1Ig YmFjayBhZ2Fpbi4KPiA+PiA+ID4gPgo+ID4+ID4gPiA+IHYyOiBSZW1vdmUgT1JJR0lOX0ZCX0RJ UlRZIGFuZCB1c2UgT1JJR0lOX0dUVCBpbnN0ZWFkIHNpbmNlIGRpcnR5Cj4gPj4gPiA+ID4gICAg IGNhbGxiYWNrIGlzIGp1c3QgY2FsbGVkIGFmdGVyIGZldyBzY3JlZW4gdXBkYXRlcyBhbmQgbm90 IG9uCj4gPj4gPiA+ID4gICAgIGV2ZXJ5b25lIGFzIHBvaW50ZWQgYnkgRGFuaWVsLgo+ID4+ID4g PiA+Cj4gPj4gPiA+ID4gQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+ Cj4gPj4gPiA+ID4gU2lnbmVkLW9mZi1ieTogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50 ZWwuY29tPgo+ID4+ID4gPiA+IC0tLQo+ID4+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMgfCAxOCArKysrKysrKysrKysrKysrKysKPiA+PiA+ID4gPiAgMSBmaWxl IGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKykKPiA+PiA+ID4gPgo+ID4+ID4gPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+PiA+ID4gPiBpbmRleCA3MjRiMGUzLi5iNTViMWI2 IDEwMDY0NAo+ID4+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYwo+ID4+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku Ywo+ID4+ID4gPiA+IEBAIC0xNDM5Myw5ICsxNDM5MywyNyBAQCBzdGF0aWMgaW50IGludGVsX3Vz ZXJfZnJhbWVidWZmZXJfY3JlYXRlX2hhbmRsZShzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwK PiA+PiA+ID4gPiAgICAgICAgIHJldHVybiBkcm1fZ2VtX2hhbmRsZV9jcmVhdGUoZmlsZSwgJm9i ai0+YmFzZSwgaGFuZGxlKTsKPiA+PiA+ID4gPiAgfQo+ID4+ID4gPiA+Cj4gPj4gPiA+ID4gK3N0 YXRpYyBpbnQgaW50ZWxfdXNlcl9mcmFtZWJ1ZmZlcl9kaXJ0eShzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYiwKPiA+PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwKPiA+PiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZsYWdzLCB1bnNpZ25l ZCBjb2xvciwKPiA+PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBkcm1fY2xpcF9yZWN0ICpjbGlwcywKPiA+PiA+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG51bV9jbGlw cykKPiA+PiA+ID4KPiA+PiA+ID4gWW91IGRvbid0IG5lZWQgdGhlIHdoaXRlIHNwYWNlIG9uIHRo ZSBsaW5lcyBhYm92ZSwganVzdCB0aGUgdGFicy4KPiA+PiA+ID4KPiA+PiA+ID4gPiArewo+ID4+ ID4gPiA+ICsgICAgICAgc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGZiLT5kZXY7Cj4gPj4gPiA+ ID4gKyAgICAgICBzdHJ1Y3QgaW50ZWxfZnJhbWVidWZmZXIgKmludGVsX2ZiID0gdG9faW50ZWxf ZnJhbWVidWZmZXIoZmIpOwo+ID4+ID4gPiA+ICsgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiA9IGludGVsX2ZiLT5vYmo7Cj4gPj4gPiA+ID4gKwo+ID4+ID4gPiA+ICsgICAg ICAgbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ID4+ID4gPiA+ICsgICAgICAgaW50 ZWxfZmJfb2JqX2ludmFsaWRhdGUob2JqLCBPUklHSU5fR1RUKTsKPiA+PiA+ID4KPiA+PiA+ID4g QXMgZmFyIGFzIEkgdW5kZXJzdG9vZCBmcm9tIG15IGJyaWVmIGludmVzdGlnYXRpb24sIHRoZSBk aXJ0eSBJT0NUTAo+ID4+ID4gPiBqdXN0IHNheXMgImhleSwgSSdtIGRvbmUgd3JpdGluZyBvbiB0 aGUgbWVtb3J5LCB5b3UgY2FuIGZsdXNoIHRoaW5ncwo+ID4+ID4gPiBub3ciLCBhbmQgaWYgdGhl IHVzZXIgd3JpdGVzIG9uIHRoZSBidWZmZXIgYWdhaW4gbGF0ZXIsIGl0IHdpbGwgbmVlZAo+ID4+ ID4gPiB0byBjYWxsIHRoZSBkaXJ0eSBJT0NUTCBhZ2Fpbi4gU28gc2hvdWxkbid0IHdlIGNhbGwK PiA+PiA+ID4gaW50ZWxfZmJfb2JqX2ZsdXNoKG9iaiwgZmFsc2UpIGhlcmU/IEl0IHNlZW1zIHRo aXMgd2FzIGFsc28gcG9pbnRlZCBieQo+ID4+ID4gPiBEYW5pZWwgb24gdGhlIGZpcnN0IHJldmll dy4gSXQgd291bGQgYmUgYmV0dGVyIGJlY2F1c2UgaXQgd291bGQgYWxsb3cKPiA+PiA+ID4gdXMg dG8gYWN0dWFsbHkga2VlcCBQU1IvRkJDIGVuYWJsZWQuCj4gPj4gPgo+ID4+ID4gVGhlIGZsdXNo IGNhdXNlZCBieSB0aGUgZHVtYiBtb2Rlc2V0IGlvY3RsIGlzIGV4YWN0bHkgd2hhdCBJIHdhbnQg dG8KPiA+PiA+IHJldmVydCBoZXJlLgo+ID4+ID4KPiA+PiA+IFdlbGwsIEkganVzdCB0ZXN0ZWQg dG8gZG91YmxlIGNoZWNrIGhlcmUgYW5kIGZsdXNoIG1ha2VzIG1lIHRvIG1pc3MKPiA+PiA+IHNj cmVlbiB1cGRhdGVzLiAodHJpcGxlIGNoZWNrZWQgd2l0aCByZXRpcmVkID0gdHJ1ZSBhcyB3ZWxs IGp1c3QgaW4KPiA+PiA+IGNhc2UpCj4gPj4gPgo+ID4+ID4gZmJkZXYgY29tZXMgdG8gcGxhY2Ug YW5kIGludmFsaWRhdGVkIGZyb250YnVmZmVyLCB0aGVuIHBseW1vdXRoIGRvZXMgYQo+ID4+ID4g Zmx1c2ggdGhhdCBtYWtlcyBwc3Igc3RhcnQgd29ya2luZyB3aGVuIGl0IHNob3VsZCBjb250aW51 ZSBkaXNhYmxlZC4KPiA+PiA+IENvbnRpbnVlIGZsdXNoaW5nIGl0IGRvZXNuJ3Qgc29sdmUgdGhl IHByb2JsZW0sIGp1c3QgcmF0aWZ5IGl0Lgo+ID4+ID4KPiA+PiA+IEJ1dCBiZXNpZGUgdGhlIGlz c3VlIHRoYXQgaXQgaXMgc29sdmluZyBJIGRvbid0IGJlbGlldmUgd2Ugd2FudCBpcyBhCj4gPj4g PiBmbHVzaCBhbnl3YXkuIFRoZXJlIGlzIHNvbWV0aGluZyB3cml0aW5nIGRpcmVjdGx5IHRvIGZy b250YnVmZmVyIHdpdGggbm8KPiA+PiA+IGludmFsaWRhdGlvbi4gVGhlIGRpcnR5IGNhbGwgaXMg c3VwcG9zZWQgdG8gYmUgYSBkYW1hZ2UgY2FsbCB0aGF0Cj4gPj4gPiBhY3R1YWxseSB0ZWxscyBz b21ldGhpbmcgb24gdGhlIHNjcmVlbiBnb3Qgd3JpdHRlbiBhbmQgbmVlZHMgdG8gYmUKPiA+PiA+ IHVwZGF0ZWQgaWYgaXQgaGFzbid0IHN0aWxsLiBJbiBvdXIgY2F1c2UgdGhpcyBpcyBleGFjdGx5 IHRoZSBmcm9udGJ1ZmZlcgo+ID4+ID4gaW52YWxpZGF0ZSwgbm90IHRoZSBmbHVzaC4KPiA+PiA+ Cj4gPj4gPiBUaGUgZmx1c2ggcGxhY2Ugd291bGQgYmUgYWZ0ZXIgaXQgcmVhbGx5IHN0b3BwZWQg ZG9pbmcgc29tZXRoaW5nLCBidXQKPiA+PiA+IHNpbmNlIEkgZG9uJ3QgdHJ1c3QgaXQgSSBwcmVm ZXIgdG8gbGV0IGl0IGludmFsaWRhdGVkIHVudGlsIG5leHQgZmxpcC4KPiA+Pgo+ID4+IFNlZSBt eSByZXZpZXcgb24gdGhlIGZpcnN0IHJvdW5kIG9mIHRoaXMgcGF0Y2g6IGRpcnR5ZmIgX2lzXyBh IGZsdXNoLiBJZgo+ID4+IGl0J3Mgbm90IGVub3VnaCB0aGVuIHRoZXJlJ3Mgc29tZSBvdGhlciBw cm9ibGVtcyBzdGlsbCBhcm91bmQuCj4gPgo+ID4gV2VsbCwgdGhlIGZsdXNoIGl0c2VsZiBpbiB0 aGUgd2F5IGl0IGlzIGRlZmluZWQgaXMgdG8gZmx1c2ggZnJvbnRidWZmZXIKPiA+IGJpdHMgYW5k IHB1dCBwb3dlciBzYXZpbmcgZmVhdHVyZXMgYmFjayB0byB3b3JrLiBQU1IgZmx1c2ggZm9yIGlu c3RhbmNlCj4gPiBkb2Vzbid0IGV4aXQgb24gZXZlcnkgZmx1c2guIE9ubHkgaW4gdGhlIGNhc2Vz IHRoYXQgd2Uga25vdyBIVyB0cmFja2luZwo+ID4gZG9lc24ndCB3b3JrLgo+ID4KPiA+IE9uZSBw b3NzaWJpbGl0eSB3b3VsZCBiZSBjaGFuZ2UgUFNSIHRvIHJlc3BlY3QgdGhhdCBhbGwgZmx1c2gg YWx3YXlzIGlzCj4gPiBpbnZhbGlkYXRlIChleGl0KSArIGZsdXNoIGZiX2JpdHMuIEJ1dCBJJ20g YWdhaW5zdCB0aGlzIHNpbmNlIFBTUiBvbgo+ID4gY29yZSBwbGF0Zm9ybXMgZG9lc24ndCBoYXZl IFNXIHRyYWNra2luZyBleHQgYW5kIGl0IHdhc24ndCBpbXBsZW1lbnRlZAo+ID4gdG8gYmUgZnVs bHkgZW5hYmxlZC9kaXNhYmxlZCBldmVyeSB0aW1lLgo+ID4KPiA+IEFub3RoZXIgaWRlYSBvbiB0 aGlzIGxpbmUgaXMgdG8gbWFrZSBmbHVzaHMga25vdyBvcmlnaW5zIG9yIGF0IGxlYXN0IGEKPiA+ IGJvb2xlYW4gdG8gc2VwYXJhdGUgY2FzZXMgd2hlcmUgZmx1c2ggbXVzdCBiZSBoYW5kbGVkIGFz IGZsdXNoIGJpdHMgKwo+ID4gY29udGludWUgd29ya2luZyBvciBpbnZhbGlkYXRlICsgZmx1c2gg Yml0cyArIHN0YXJ0IHdvcmtpbmcgYWdhaW4KPiA+Cj4gPiBQbGVhc2UgbGV0IG1lIGtub3cgd2hh dCB5b3UgdGhpbmsuCj4gPgo+ID4gQnV0IHB1dHRpbmcgZmx1c2hzIG9uIHRoaXMgZGlydHkgY2Fs bGJhY2sgaXMgY3VycmVudGx5IHVzZWxlc3MgYmVjYXVzZQo+ID4gZmx1c2gganVzdCB0ZWxscyBw c3IgdG8gY29udGludWUgd29ya2luZyB3aXRob3V0IGdldHRpbmcgc2NyZWVuIHVwZGF0ZXMuCj4g Pgo+ID4gV2VsbCwgdGhpcyBpcyB0aGUgbW9zdCBpbXBvcnRhbnQgZGlzY3Vzc2lvbiBmb3Igbm93 LCBidXQgYWxzbyBldmVuIHdlCj4gPiBjaGFuZ2UgZmx1c2ggaW50ZXJmYWNlIG9yIG9ubHkgaW4g UFNSIEknbSBub3Qgc3VyZSB0aGlzIHdpbGwgd29yay4KPiA+Cj4gPiBUaGlzIGRpcnR5IGNhc2Ug aGFwcGVucyBpbiB0aGUgbWlkZGxlIG9mIGZiZGV2IGFuZCB3aGVuIGl0IGdpdmVzIGNvbnRyb2wK PiA+IGJhY2sgdG8gZmJjb24gcHNyIHdvdWxkIGJlIHdvcmtpbmcgd2l0aG91dCBubyBvbmUgZWxz ZSBpbnZhbGlkYXRlIG9yCj4gPiBmbHVzaGluZyBpdCBhbmQgd2Ugd291bGQgbWlzcyBzY3JlZW4g dXBkYXRlcyBhbnl3YXkuCj4gPiBCdXQgaW4gdGhpcyBjYXNlIEkgdW5kZXJzdGFuZCB0aGlzIGlz IGEgaGFjayBhbmQgaWYgd2UgcHV0IHRoZQo+ID4gaW52YWxpZGF0ZSB0aGVyZSBJIHNob3VsZCBh bHNvIHB1dCBhIEZJWE1FIFhYWCBleHBsYWluaW5nIHRoYXQuLi4KPiAKPiBMYXN0IHdlZWsgSSBk aXNjdXNzZWQgc29tZSBvZiB0aGlzIHdpdGggUm9kcmlnbyBvbiBJUkMgYW5kIHdlIGhhdmUKPiBk aWZmZXJlbnQgaW50ZXJwcmV0YXRpb25zIG9uIHdoYXQgdGhlIGZyb250YnVmZmVyIHRyYWNraW5n IGNhbGxzIG1lYW4uCj4gRGFuaWVsLCBjYW4geW91IHBsZWFzZSBjbGFyaWZ5IGEgZmV3IHRoaW5n cz8KPiAKPiBPbmUgb2YgdGhlIHRoaW5ncyBJJ3ZlIGRpc2N1c3NlZCB3aXRoIFJvZHJpZ28gaXMg dGhhdCBJIGNvbnNpZGVyCj4gaW52YWxpZGF0ZStmbHVzaCB0byBiZSBlcXVpdmFsZW50IHRvIGp1 c3QgYSBmbHVzaCBjYWxsLCB3aGlsZSBSb2RyaWdvCj4gc2VlcyBib3RoIGNhc2VzIGFzIGRpZmZl cmVudC4gRGFuaWVsLCBjYW4geW91IHBsZWFzZSBjbGFyaWZ5IHRoZQo+IGludGVudGlvbnMgb2Yg dGhlIGZyb250YnVmZmVyIHRyYWNraW5nIGluZnJhc3RydWN0dXJlIGhlcmU/CgpZZWFoIGVzc2Vu dGlhbGx5IGZsdXNoIHdpdGhvdXQgYW4gaW52YWxpZGF0ZSBpcyBqdXN0IGEgaW5zdGFudGFuZW91 cwppbnZhbGlkYXRlK2ZsdXNoLiBpbnZhbGlkYXRlIGp1c3QgbWVhbnMgInNvbWVvbmUgc3RhcnRl ZCB0byBmcm9udGJ1ZmZlcgpyZW5kZXIgYW5kIEkgaGF2ZSBubyBpZGVhIGF0IGFsbCB3aGVuIHRo YXQgd2lsbCBzdG9wIi4gRmx1c2ggbWVhbnMKInNvbWVvbmUgaGFzIGRvbmUgc29tZSBmcm9udGJ1 ZmZlciByZW5kZXJpbmcsIG1ha2Ugc3VyZSB0aG9zZSB1cGRhdGVzIGxhbmQKb24gdGhlIHNjcmVl biIuIFNvIHllYWggUGF1bG8ncyBpZGVhIGlzIGNvcnJlY3QuCgpQcm9ibGVtIGlzIG5vdyB0aGF0 IHdoZW4gd2UgZ2V0IGEgZmxpcCB3ZSBhbHNvIGNhbGwgZmx1c2gsIGFuZCBmb3IgcHNyIG9uCmJp ZyBjb3JlIHRoYXQncyBwcm9iYWJseSBub3Qgd2hhdCB3ZSB3YW50IHNpbmNlIGl0IGNhbiBoYW5k bGUgZmxpcHMKY29ycmVjdGx5LCBidXQgbm90IHJlYWwgZnJvbnRidWZmZXIgZmx1c2hlcy4KCj4g T25lIGNvbnRyYWRpY3Rpb24gSSBzZWUgd2l0aCB0aGUgY3VycmVudCBjb2RlIGlzIHRoYXQgUFNS IGRvZXMgbm90aGluZwo+IG9uIGZsdXNoKCkgZm9yIEJEVyBiZWNhdXNlIGl0IGJlbGlldmVzIHRo ZSBIVyB0cmFja2luZywgYnV0IGl0IGRvZXMKPiBwc3JfZXhpdCgpIG9uIGludmFsaWRhdGUgZm9y IGV2ZXJ5IHNpbmdsZSBjYXNlLiBJZiBpdCByZWxpZXMgb24gdGhlIEhXCj4gdHJhY2tpbmcsIHNo b3VsZG4ndCBpdCBhbHNvIGRvIG5vdGhpbmcgb24gaW52YWxpZGF0ZSgpPyBJZiBpdCBkb2Vzbid0 Cj4gcmVseSBvbiBIVyB0cmFja2luZywgc2hvdWxkbid0IGl0IGRvIHNvbWV0aGluZyBvbiBmbHVz aCgpPyBJZiBpdAo+IHJlbGllcyBvbiBqdXN0IGEgZmV3IHNwZWNpZmljIHBpZWNlcyBvZiB0aGUg SFcgdHJhY2tpbmcsIHNob3VsZG4ndCBpdAo+IGNoZWNrIGVudW0gZmJfb3Bfb3JpZ2luPyBUaGUg Y29uY2x1c2lvbiBoZXJlIGlzIHRoYXQgdGhlIFBTUiBjb2RlIGlzCj4gY29tcGxldGVseSByZWx5 aW5nIG9uIGhhdmluZyBpbnZhbGlkYXRlKCkgY2FsbHMgYmVmb3JlIHRoZSBmbHVzaCgpIGZvcgo+ IGNhc2VzIHdoZXJlIGl0IG5lZWRzIGhlbHAgZnJvbSBzb2Z0d2FyZS4KCkNhbGxpbmcgaW52YWxp ZGF0ZSBiZWZvcmUgZmx1c2ggaXNuJ3QgaW1vIHRoZSByaWdodCBmaXggc2luY2UgdXN1YWxseQoo ZXhjZXB0IHdoZW4geW91IGhhdmUgd29ya2luZyBodyB0cmFja2luZyBsaWtlIGZiYyBmb3IgZ3R0 IG1tYXBzKSB5b3UgbmVlZAp0byBzdG9wIHBzci9mYmMvd2hhdGV2ZXIgb24gaW52YWxpZGF0ZS4g V2hlcmVhcyBvbiBmbHVzaCB5b3UganVzdCBuZWVkIHRvCm1ha2Ugc3VyZSBzY3JlZW4gY29udGVu dHMgZ2V0IHRvIHRoZSBzY3JlZW4uCgpJIHRoaW5rIHRoZSBiZXN0IG9wdGlvbiB3b3VsZCBiZSB0 byB3aXJlIHVwIHRoZSBmYl9vcF9vcmlnaW4gZm9yIGZsdXNoZXMKdG9vLCBhbmQgdGhlbiBmaWx0 ZXIgb3V0IE9SSUdJTl9GTElQIGZvciBwc3IgKGV4Y2VwdCBmb3Igc3ByaXRlcyBvbiBoc3cpCm9u IGJpZyBjb3JlLgogCj4gQWxzbywgd2UndmUgYmVlbiBkaXNjdXNzaW5nIGEgYm9vdCBzcGxhc2gg c2NyZWVuLCBhbmQsIGFjY29yZGluZyB0bwo+IHdoYXQgeW91IHNhaWQsIGl0J3Mgc3VwcG9zZWQg dG8gYmUgdXNpbmcgdGhlIGR1bWIgaW50ZXJmYWNlcywgcmlnaHQ/Cj4gU28gSSBzZWUgdGhhdCB0 aGUgZHVtYiBtbWFwIGlzIGp1c3QgYSBnZW1fbW1hcCgpIHRvIG91ciBkcml2ZXIuIEJ1dAo+IFBT UiBpcyBzdXBwb3NlZCB0byBnZXQgZGlzYWJsZWQgYWZ0ZXIgR1RUIG1tYXBzLiBXaHkgaXMgaXQg bm90Cj4gZGlzYWJsZWQgaW4gdGhpcyBjYXNlPyBUaGF0IGlzIGJlY2F1c2Ugd2UgZG9uJ3QgZ2V0 IHRoZSBpbnZhbGlkYXRlCj4gY2FsbCBhZnRlciB0aGUgbW1hcCwgcmlnaHQ/IElmIHdlIHJlcXVp cmUgYW4gaW52YWxpZGF0ZSBvbiB0aGUgZGlydHkKPiBpb2N0bCwgaXQgbWVhbnMgdGhhdCBQU1Ig aXMgZW5hYmxlZCBldmVuIHRob3VnaCBpdCBpcyBHVFQgbW1hcHBlZC4uLgo+IFRoYXQncyBzdXBw b3NlZCB0byBiZSB3cm9uZywgcmlnaHQ/IFNob3VsZG4ndCB0aGUgbW1hcCBJT0NUTCBmb3JjZSBh bgo+IGludmFsaWRhdGU/CgpZZWFoIGR1bWIgbW1hcCB1c2VycyBhcmUgc3VwcG9zZWQgdG8gY2Fs bCBkaXJ0eWZiIGFmdGVyIGVhY2ggZHJhdyBjYWxsLgoKaTkxNSB1c2Vyc3BhY2UgY291bGQgc3Rh cnQgZG9pbmcgdGhlIHNhbWUgdG8gbWFyayB0aGUgZ3R0IG1tYXAgaW52YWxpZGF0ZQphcyBkb25l IHNpbmNlIHdlIGRvbid0IGhhdmUgYW55IHBvaW50IHdoZXJlIHdlIHN0b3AgaXQgcmlnaHQgbm93 IHdpdGggYW4KaTkxNSBpb2N0bC4gQW5kIHRvIGJlIGFibGUgdG8gd29yayB0b2dldGhlciB3aXRo IHNldF9kb21haW4oR1RUKSBpdCByZWFsbHkKbmVlZHMgdG8gYmUgYSBmbHVzaCBpbiAtPmRpcnR5 KCkKLURhbmllbAotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29y cG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZngK