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: Tue, 7 Jul 2015 13:24:25 +0200 Message-ID: <20150707112425.GK7568@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> <20150706175659.GC7568@phenom.ffwll.local> <1436225074.28692.391.camel@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wg0-f53.google.com (mail-wg0-f53.google.com [74.125.82.53]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4EDEF6E9E2 for ; Tue, 7 Jul 2015 04:21:41 -0700 (PDT) Received: by wgjx7 with SMTP id x7so164845853wgj.2 for ; Tue, 07 Jul 2015 04:21:39 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1436225074.28692.391.camel@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Vivi, Rodrigo" Cc: "daniel.vetter@ffwll.ch" , "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBKdWwgMDYsIDIwMTUgYXQgMTE6MTk6MDNQTSArMDAwMCwgVml2aSwgUm9kcmlnbyB3 cm90ZToKPiBPbiBNb24sIDIwMTUtMDctMDYgYXQgMTk6NTYgKzAyMDAsIERhbmllbCBWZXR0ZXIg d3JvdGU6Cj4gPiBPbiBNb24sIEp1bCAwNiwgMjAxNSBhdCAwMjoxMTo1NVBNIC0wMzAwLCBQYXVs byBaYW5vbmkgd3JvdGU6Cj4gPiA+IDIwMTUtMDctMDYgMTM6NDMgR01ULTAzOjAwIFZpdmksIFJv ZHJpZ28gPHJvZHJpZ28udml2aUBpbnRlbC5jb20+Ogo+ID4gPiA+IE9uIEZyaSwgMjAxNS0wNy0w MyBhdCAwOToxMCArMDIwMCwgRGFuaWVsIFZldHRlciB3cm90ZToKPiA+ID4gPj4gT24gVGh1LCBK dWwgMDIsIDIwMTUgYXQgMDQ6NDE6MzJQTSArMDAwMCwgVml2aSwgUm9kcmlnbyB3cm90ZToKPiA+ ID4gPj4gPiBPbiBUaHUsIDIwMTUtMDctMDIgYXQgMTM6MDMgLTAzMDAsIFBhdWxvIFphbm9uaSB3 cm90ZToKPiA+ID4gPj4gPiA+IDIwMTUtMDYtMzAgMjA6NDIgR01ULTAzOjAwIFJvZHJpZ28gVml2 aSA8cm9kcmlnby52aXZpQGludGVsLmNvbT46Cj4gPiA+ID4+ID4gPiA+IExldCdzIGRvIGEgZnJv bnRidWZmZXIgaW52YWxpZGF0aW9uIG9uIGRpcnR5IGZiLgo+ID4gPiA+PiA+ID4gPiBUbyBiZSB1 c2VkIGZvciBESVJUWUZCIGRybSBpb2N0bC4KPiA+ID4gPj4gPiA+ID4KPiA+ID4gPj4gPiA+ID4g VGhpcyBwYXRjaCBzb2x2ZXMgdGhlIGJpZ2dlc3QgUFNSIGtub3duIGlzc3VlLCB0aGF0IGlzCj4g PiA+ID4+ID4gPiA+IG1pc3NlZCBzY3JlZW4gdXBkYXRlcyBkdXJpbmcgYm9vdCwgbWFpbmx5IHdo ZW4gdGhlcmUgaXMgYSBzcGxhc2gKPiA+ID4gPj4gPiA+ID4gc2NyZWVuIGludm9sdmVkIGxpa2Ug cGx5bW91dGguCj4gPiA+ID4+ID4gPiA+Cj4gPiA+ID4+ID4gPiA+IFBseW1vdGggd2lsbCBkbyBh IG1vZGVzZXQgb3ZlciBpb2N0bCB0aGF0IGZsdXNoZXMgZnJvbnRidWZmZXIKPiA+ID4gPj4gPiA+ ID4gdHJhY2tpbmcgYW5kIFBTUiBnZXRzIGJhY2sgdG8gd29yayB3aGlsZSBpdCBjYW5ub3QgdHJh Y2sgdGhlCj4gPiA+ID4+ID4gPiA+IHNjcmVlbiB1cGRhdGVzIGFuZCBleGl0IHByb3Blcmx5LiBI b3dldmVyIHBseW1vdXRoIGFsc28gdXNlcwo+ID4gPiA+PiA+ID4gPiBhIGRpcnR5ZmIgaW9jdGwg d2hlbmV2ZXIgdXBkYXRpbmcgdGhlIHNjcmVlbi4gU28gbGV0J3MgdXNlIGl0Cj4gPiA+ID4+ID4g PiA+IHRvIGludmFsaWRhdGUgUFNSIGJhY2sgYWdhaW4uCj4gPiA+ID4+ID4gPiA+Cj4gPiA+ID4+ ID4gPiA+IHYyOiBSZW1vdmUgT1JJR0lOX0ZCX0RJUlRZIGFuZCB1c2UgT1JJR0lOX0dUVCBpbnN0 ZWFkIHNpbmNlIGRpcnR5Cj4gPiA+ID4+ID4gPiA+ICAgICBjYWxsYmFjayBpcyBqdXN0IGNhbGxl ZCBhZnRlciBmZXcgc2NyZWVuIHVwZGF0ZXMgYW5kIG5vdCBvbgo+ID4gPiA+PiA+ID4gPiAgICAg ZXZlcnlvbmUgYXMgcG9pbnRlZCBieSBEYW5pZWwuCj4gPiA+ID4+ID4gPiA+Cj4gPiA+ID4+ID4g PiA+IENjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgo+ID4gPiA+PiA+ ID4gPiBTaWduZWQtb2ZmLWJ5OiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5jb20+ Cj4gPiA+ID4+ID4gPiA+IC0tLQo+ID4gPiA+PiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jIHwgMTggKysrKysrKysrKysrKysrKysrCj4gPiA+ID4+ID4gPiA+ICAx IGZpbGUgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKQo+ID4gPiA+PiA+ID4gPgo+ID4gPiA+PiA+ ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiA+ID4+ID4gPiA+IGluZGV4 IDcyNGIwZTMuLmI1NWIxYjYgMTAwNjQ0Cj4gPiA+ID4+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gPiA+PiA+ID4gPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+ID4gPj4gPiA+ID4gQEAgLTE0MzkzLDkgKzE0 MzkzLDI3IEBAIHN0YXRpYyBpbnQgaW50ZWxfdXNlcl9mcmFtZWJ1ZmZlcl9jcmVhdGVfaGFuZGxl KHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAo+ID4gPiA+PiA+ID4gPiAgICAgICAgIHJldHVy biBkcm1fZ2VtX2hhbmRsZV9jcmVhdGUoZmlsZSwgJm9iai0+YmFzZSwgaGFuZGxlKTsKPiA+ID4g Pj4gPiA+ID4gIH0KPiA+ID4gPj4gPiA+ID4KPiA+ID4gPj4gPiA+ID4gK3N0YXRpYyBpbnQgaW50 ZWxfdXNlcl9mcmFtZWJ1ZmZlcl9kaXJ0eShzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiA+ ID4gPj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsCj4gPiA+ID4+ID4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZmxhZ3MsIHVuc2lnbmVkIGNv bG9yLAo+ID4gPiA+PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBkcm1fY2xpcF9yZWN0ICpjbGlwcywKPiA+ID4gPj4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1f Y2xpcHMpCj4gPiA+ID4+ID4gPgo+ID4gPiA+PiA+ID4gWW91IGRvbid0IG5lZWQgdGhlIHdoaXRl IHNwYWNlIG9uIHRoZSBsaW5lcyBhYm92ZSwganVzdCB0aGUgdGFicy4KPiA+ID4gPj4gPiA+Cj4g PiA+ID4+ID4gPiA+ICt7Cj4gPiA+ID4+ID4gPiA+ICsgICAgICAgc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IGZiLT5kZXY7Cj4gPiA+ID4+ID4gPiA+ICsgICAgICAgc3RydWN0IGludGVsX2ZyYW1l YnVmZmVyICppbnRlbF9mYiA9IHRvX2ludGVsX2ZyYW1lYnVmZmVyKGZiKTsKPiA+ID4gPj4gPiA+ ID4gKyAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gaW50ZWxfZmItPm9i ajsKPiA+ID4gPj4gPiA+ID4gKwo+ID4gPiA+PiA+ID4gPiArICAgICAgIG11dGV4X2xvY2soJmRl di0+c3RydWN0X211dGV4KTsKPiA+ID4gPj4gPiA+ID4gKyAgICAgICBpbnRlbF9mYl9vYmpfaW52 YWxpZGF0ZShvYmosIE9SSUdJTl9HVFQpOwo+ID4gPiA+PiA+ID4KPiA+ID4gPj4gPiA+IEFzIGZh ciBhcyBJIHVuZGVyc3Rvb2QgZnJvbSBteSBicmllZiBpbnZlc3RpZ2F0aW9uLCB0aGUgZGlydHkg SU9DVEwKPiA+ID4gPj4gPiA+IGp1c3Qgc2F5cyAiaGV5LCBJJ20gZG9uZSB3cml0aW5nIG9uIHRo ZSBtZW1vcnksIHlvdSBjYW4gZmx1c2ggdGhpbmdzCj4gPiA+ID4+ID4gPiBub3ciLCBhbmQgaWYg dGhlIHVzZXIgd3JpdGVzIG9uIHRoZSBidWZmZXIgYWdhaW4gbGF0ZXIsIGl0IHdpbGwgbmVlZAo+ ID4gPiA+PiA+ID4gdG8gY2FsbCB0aGUgZGlydHkgSU9DVEwgYWdhaW4uIFNvIHNob3VsZG4ndCB3 ZSBjYWxsCj4gPiA+ID4+ID4gPiBpbnRlbF9mYl9vYmpfZmx1c2gob2JqLCBmYWxzZSkgaGVyZT8g SXQgc2VlbXMgdGhpcyB3YXMgYWxzbyBwb2ludGVkIGJ5Cj4gPiA+ID4+ID4gPiBEYW5pZWwgb24g dGhlIGZpcnN0IHJldmlldy4gSXQgd291bGQgYmUgYmV0dGVyIGJlY2F1c2UgaXQgd291bGQgYWxs b3cKPiA+ID4gPj4gPiA+IHVzIHRvIGFjdHVhbGx5IGtlZXAgUFNSL0ZCQyBlbmFibGVkLgo+ID4g PiA+PiA+Cj4gPiA+ID4+ID4gVGhlIGZsdXNoIGNhdXNlZCBieSB0aGUgZHVtYiBtb2Rlc2V0IGlv Y3RsIGlzIGV4YWN0bHkgd2hhdCBJIHdhbnQgdG8KPiA+ID4gPj4gPiByZXZlcnQgaGVyZS4KPiA+ ID4gPj4gPgo+ID4gPiA+PiA+IFdlbGwsIEkganVzdCB0ZXN0ZWQgdG8gZG91YmxlIGNoZWNrIGhl cmUgYW5kIGZsdXNoIG1ha2VzIG1lIHRvIG1pc3MKPiA+ID4gPj4gPiBzY3JlZW4gdXBkYXRlcy4g KHRyaXBsZSBjaGVja2VkIHdpdGggcmV0aXJlZCA9IHRydWUgYXMgd2VsbCBqdXN0IGluCj4gPiA+ ID4+ID4gY2FzZSkKPiA+ID4gPj4gPgo+ID4gPiA+PiA+IGZiZGV2IGNvbWVzIHRvIHBsYWNlIGFu ZCBpbnZhbGlkYXRlZCBmcm9udGJ1ZmZlciwgdGhlbiBwbHltb3V0aCBkb2VzIGEKPiA+ID4gPj4g PiBmbHVzaCB0aGF0IG1ha2VzIHBzciBzdGFydCB3b3JraW5nIHdoZW4gaXQgc2hvdWxkIGNvbnRp bnVlIGRpc2FibGVkLgo+ID4gPiA+PiA+IENvbnRpbnVlIGZsdXNoaW5nIGl0IGRvZXNuJ3Qgc29s dmUgdGhlIHByb2JsZW0sIGp1c3QgcmF0aWZ5IGl0Lgo+ID4gPiA+PiA+Cj4gPiA+ID4+ID4gQnV0 IGJlc2lkZSB0aGUgaXNzdWUgdGhhdCBpdCBpcyBzb2x2aW5nIEkgZG9uJ3QgYmVsaWV2ZSB3ZSB3 YW50IGlzIGEKPiA+ID4gPj4gPiBmbHVzaCBhbnl3YXkuIFRoZXJlIGlzIHNvbWV0aGluZyB3cml0 aW5nIGRpcmVjdGx5IHRvIGZyb250YnVmZmVyIHdpdGggbm8KPiA+ID4gPj4gPiBpbnZhbGlkYXRp b24uIFRoZSBkaXJ0eSBjYWxsIGlzIHN1cHBvc2VkIHRvIGJlIGEgZGFtYWdlIGNhbGwgdGhhdAo+ ID4gPiA+PiA+IGFjdHVhbGx5IHRlbGxzIHNvbWV0aGluZyBvbiB0aGUgc2NyZWVuIGdvdCB3cml0 dGVuIGFuZCBuZWVkcyB0byBiZQo+ID4gPiA+PiA+IHVwZGF0ZWQgaWYgaXQgaGFzbid0IHN0aWxs LiBJbiBvdXIgY2F1c2UgdGhpcyBpcyBleGFjdGx5IHRoZSBmcm9udGJ1ZmZlcgo+ID4gPiA+PiA+ IGludmFsaWRhdGUsIG5vdCB0aGUgZmx1c2guCj4gPiA+ID4+ID4KPiA+ID4gPj4gPiBUaGUgZmx1 c2ggcGxhY2Ugd291bGQgYmUgYWZ0ZXIgaXQgcmVhbGx5IHN0b3BwZWQgZG9pbmcgc29tZXRoaW5n LCBidXQKPiA+ID4gPj4gPiBzaW5jZSBJIGRvbid0IHRydXN0IGl0IEkgcHJlZmVyIHRvIGxldCBp dCBpbnZhbGlkYXRlZCB1bnRpbCBuZXh0IGZsaXAuCj4gPiA+ID4+Cj4gPiA+ID4+IFNlZSBteSBy ZXZpZXcgb24gdGhlIGZpcnN0IHJvdW5kIG9mIHRoaXMgcGF0Y2g6IGRpcnR5ZmIgX2lzXyBhIGZs dXNoLiBJZgo+ID4gPiA+PiBpdCdzIG5vdCBlbm91Z2ggdGhlbiB0aGVyZSdzIHNvbWUgb3RoZXIg cHJvYmxlbXMgc3RpbGwgYXJvdW5kLgo+ID4gPiA+Cj4gPiA+ID4gV2VsbCwgdGhlIGZsdXNoIGl0 c2VsZiBpbiB0aGUgd2F5IGl0IGlzIGRlZmluZWQgaXMgdG8gZmx1c2ggZnJvbnRidWZmZXIKPiA+ ID4gPiBiaXRzIGFuZCBwdXQgcG93ZXIgc2F2aW5nIGZlYXR1cmVzIGJhY2sgdG8gd29yay4gUFNS IGZsdXNoIGZvciBpbnN0YW5jZQo+ID4gPiA+IGRvZXNuJ3QgZXhpdCBvbiBldmVyeSBmbHVzaC4g T25seSBpbiB0aGUgY2FzZXMgdGhhdCB3ZSBrbm93IEhXIHRyYWNraW5nCj4gPiA+ID4gZG9lc24n dCB3b3JrLgo+ID4gPiA+Cj4gPiA+ID4gT25lIHBvc3NpYmlsaXR5IHdvdWxkIGJlIGNoYW5nZSBQ U1IgdG8gcmVzcGVjdCB0aGF0IGFsbCBmbHVzaCBhbHdheXMgaXMKPiA+ID4gPiBpbnZhbGlkYXRl IChleGl0KSArIGZsdXNoIGZiX2JpdHMuIEJ1dCBJJ20gYWdhaW5zdCB0aGlzIHNpbmNlIFBTUiBv bgo+ID4gPiA+IGNvcmUgcGxhdGZvcm1zIGRvZXNuJ3QgaGF2ZSBTVyB0cmFja2tpbmcgZXh0IGFu ZCBpdCB3YXNuJ3QgaW1wbGVtZW50ZWQKPiA+ID4gPiB0byBiZSBmdWxseSBlbmFibGVkL2Rpc2Fi bGVkIGV2ZXJ5IHRpbWUuCj4gPiA+ID4KPiA+ID4gPiBBbm90aGVyIGlkZWEgb24gdGhpcyBsaW5l IGlzIHRvIG1ha2UgZmx1c2hzIGtub3cgb3JpZ2lucyBvciBhdCBsZWFzdCBhCj4gPiA+ID4gYm9v bGVhbiB0byBzZXBhcmF0ZSBjYXNlcyB3aGVyZSBmbHVzaCBtdXN0IGJlIGhhbmRsZWQgYXMgZmx1 c2ggYml0cyArCj4gPiA+ID4gY29udGludWUgd29ya2luZyBvciBpbnZhbGlkYXRlICsgZmx1c2gg Yml0cyArIHN0YXJ0IHdvcmtpbmcgYWdhaW4KPiA+ID4gPgo+ID4gPiA+IFBsZWFzZSBsZXQgbWUg a25vdyB3aGF0IHlvdSB0aGluay4KPiA+ID4gPgo+ID4gPiA+IEJ1dCBwdXR0aW5nIGZsdXNocyBv biB0aGlzIGRpcnR5IGNhbGxiYWNrIGlzIGN1cnJlbnRseSB1c2VsZXNzIGJlY2F1c2UKPiA+ID4g PiBmbHVzaCBqdXN0IHRlbGxzIHBzciB0byBjb250aW51ZSB3b3JraW5nIHdpdGhvdXQgZ2V0dGlu ZyBzY3JlZW4gdXBkYXRlcy4KPiA+ID4gPgo+ID4gPiA+IFdlbGwsIHRoaXMgaXMgdGhlIG1vc3Qg aW1wb3J0YW50IGRpc2N1c3Npb24gZm9yIG5vdywgYnV0IGFsc28gZXZlbiB3ZQo+ID4gPiA+IGNo YW5nZSBmbHVzaCBpbnRlcmZhY2Ugb3Igb25seSBpbiBQU1IgSSdtIG5vdCBzdXJlIHRoaXMgd2ls bCB3b3JrLgo+ID4gPiA+Cj4gPiA+ID4gVGhpcyBkaXJ0eSBjYXNlIGhhcHBlbnMgaW4gdGhlIG1p ZGRsZSBvZiBmYmRldiBhbmQgd2hlbiBpdCBnaXZlcyBjb250cm9sCj4gPiA+ID4gYmFjayB0byBm YmNvbiBwc3Igd291bGQgYmUgd29ya2luZyB3aXRob3V0IG5vIG9uZSBlbHNlIGludmFsaWRhdGUg b3IKPiA+ID4gPiBmbHVzaGluZyBpdCBhbmQgd2Ugd291bGQgbWlzcyBzY3JlZW4gdXBkYXRlcyBh bnl3YXkuCj4gPiA+ID4gQnV0IGluIHRoaXMgY2FzZSBJIHVuZGVyc3RhbmQgdGhpcyBpcyBhIGhh Y2sgYW5kIGlmIHdlIHB1dCB0aGUKPiA+ID4gPiBpbnZhbGlkYXRlIHRoZXJlIEkgc2hvdWxkIGFs c28gcHV0IGEgRklYTUUgWFhYIGV4cGxhaW5pbmcgdGhhdC4uLgo+ID4gPiAKPiA+ID4gTGFzdCB3 ZWVrIEkgZGlzY3Vzc2VkIHNvbWUgb2YgdGhpcyB3aXRoIFJvZHJpZ28gb24gSVJDIGFuZCB3ZSBo YXZlCj4gPiA+IGRpZmZlcmVudCBpbnRlcnByZXRhdGlvbnMgb24gd2hhdCB0aGUgZnJvbnRidWZm ZXIgdHJhY2tpbmcgY2FsbHMgbWVhbi4KPiA+ID4gRGFuaWVsLCBjYW4geW91IHBsZWFzZSBjbGFy aWZ5IGEgZmV3IHRoaW5ncz8KPiA+ID4gCj4gPiA+IE9uZSBvZiB0aGUgdGhpbmdzIEkndmUgZGlz Y3Vzc2VkIHdpdGggUm9kcmlnbyBpcyB0aGF0IEkgY29uc2lkZXIKPiA+ID4gaW52YWxpZGF0ZStm bHVzaCB0byBiZSBlcXVpdmFsZW50IHRvIGp1c3QgYSBmbHVzaCBjYWxsLCB3aGlsZSBSb2RyaWdv Cj4gPiA+IHNlZXMgYm90aCBjYXNlcyBhcyBkaWZmZXJlbnQuIERhbmllbCwgY2FuIHlvdSBwbGVh c2UgY2xhcmlmeSB0aGUKPiA+ID4gaW50ZW50aW9ucyBvZiB0aGUgZnJvbnRidWZmZXIgdHJhY2tp bmcgaW5mcmFzdHJ1Y3R1cmUgaGVyZT8KPiA+IAo+ID4gWWVhaCBlc3NlbnRpYWxseSBmbHVzaCB3 aXRob3V0IGFuIGludmFsaWRhdGUgaXMganVzdCBhIGluc3RhbnRhbmVvdXMKPiA+IGludmFsaWRh dGUrZmx1c2guIGludmFsaWRhdGUganVzdCBtZWFucyAic29tZW9uZSBzdGFydGVkIHRvIGZyb250 YnVmZmVyCj4gPiByZW5kZXIgYW5kIEkgaGF2ZSBubyBpZGVhIGF0IGFsbCB3aGVuIHRoYXQgd2ls bCBzdG9wIi4gRmx1c2ggbWVhbnMKPiA+ICJzb21lb25lIGhhcyBkb25lIHNvbWUgZnJvbnRidWZm ZXIgcmVuZGVyaW5nLCBtYWtlIHN1cmUgdGhvc2UgdXBkYXRlcyBsYW5kCj4gPiBvbiB0aGUgc2Ny ZWVuIi4gU28geWVhaCBQYXVsbydzIGlkZWEgaXMgY29ycmVjdC4KPiAKPiBUaGFua3MgZm9yIHRo ZSBjbGFyaWZpY2F0aW9uLi4uCj4gCj4gPiAKPiA+IFByb2JsZW0gaXMgbm93IHRoYXQgd2hlbiB3 ZSBnZXQgYSBmbGlwIHdlIGFsc28gY2FsbCBmbHVzaCwgYW5kIGZvciBwc3Igb24KPiA+IGJpZyBj b3JlIHRoYXQncyBwcm9iYWJseSBub3Qgd2hhdCB3ZSB3YW50IHNpbmNlIGl0IGNhbiBoYW5kbGUg ZmxpcHMKPiA+IGNvcnJlY3RseSwgYnV0IG5vdCByZWFsIGZyb250YnVmZmVyIGZsdXNoZXMuCj4g PiAKPiA+ID4gT25lIGNvbnRyYWRpY3Rpb24gSSBzZWUgd2l0aCB0aGUgY3VycmVudCBjb2RlIGlz IHRoYXQgUFNSIGRvZXMgbm90aGluZwo+ID4gPiBvbiBmbHVzaCgpIGZvciBCRFcgYmVjYXVzZSBp dCBiZWxpZXZlcyB0aGUgSFcgdHJhY2tpbmcsIGJ1dCBpdCBkb2VzCj4gPiA+IHBzcl9leGl0KCkg b24gaW52YWxpZGF0ZSBmb3IgZXZlcnkgc2luZ2xlIGNhc2UuIElmIGl0IHJlbGllcyBvbiB0aGUg SFcKPiA+ID4gdHJhY2tpbmcsIHNob3VsZG4ndCBpdCBhbHNvIGRvIG5vdGhpbmcgb24gaW52YWxp ZGF0ZSgpPyBJZiBpdCBkb2Vzbid0Cj4gPiA+IHJlbHkgb24gSFcgdHJhY2tpbmcsIHNob3VsZG4n dCBpdCBkbyBzb21ldGhpbmcgb24gZmx1c2goKT8gSWYgaXQKPiA+ID4gcmVsaWVzIG9uIGp1c3Qg YSBmZXcgc3BlY2lmaWMgcGllY2VzIG9mIHRoZSBIVyB0cmFja2luZywgc2hvdWxkbid0IGl0Cj4g PiA+IGNoZWNrIGVudW0gZmJfb3Bfb3JpZ2luPyBUaGUgY29uY2x1c2lvbiBoZXJlIGlzIHRoYXQg dGhlIFBTUiBjb2RlIGlzCj4gPiA+IGNvbXBsZXRlbHkgcmVseWluZyBvbiBoYXZpbmcgaW52YWxp ZGF0ZSgpIGNhbGxzIGJlZm9yZSB0aGUgZmx1c2goKSBmb3IKPiA+ID4gY2FzZXMgd2hlcmUgaXQg bmVlZHMgaGVscCBmcm9tIHNvZnR3YXJlLgo+ID4gCj4gPiBDYWxsaW5nIGludmFsaWRhdGUgYmVm b3JlIGZsdXNoIGlzbid0IGltbyB0aGUgcmlnaHQgZml4IHNpbmNlIHVzdWFsbHkKPiA+IChleGNl cHQgd2hlbiB5b3UgaGF2ZSB3b3JraW5nIGh3IHRyYWNraW5nIGxpa2UgZmJjIGZvciBndHQgbW1h cHMpIHlvdSBuZWVkCj4gPiB0byBzdG9wIHBzci9mYmMvd2hhdGV2ZXIgb24gaW52YWxpZGF0ZS4g V2hlcmVhcyBvbiBmbHVzaCB5b3UganVzdCBuZWVkIHRvCj4gPiBtYWtlIHN1cmUgc2NyZWVuIGNv bnRlbnRzIGdldCB0byB0aGUgc2NyZWVuLgo+ID4gCj4gPiBJIHRoaW5rIHRoZSBiZXN0IG9wdGlv biB3b3VsZCBiZSB0byB3aXJlIHVwIHRoZSBmYl9vcF9vcmlnaW4gZm9yIGZsdXNoZXMKPiA+IHRv bywgYW5kIHRoZW4gZmlsdGVyIG91dCBPUklHSU5fRkxJUCBmb3IgcHNyIChleGNlcHQgZm9yIHNw cml0ZXMgb24gaHN3KQo+ID4gb24gYmlnIGNvcmUuCj4gCj4gT2ssIHRoaXMgYXBwcm9hY2ggaGVy ZSB3b3JrcyBoZXJlIHdoZW4gSSBoYXZlIHNwbGFzaCBzY3JlZW4gdGFraW5nIHBsYWNlCj4gYW5k IFggY29taW5nIHJpZ2h0IGFmdGVyIGl0LiBIb3dldmVyIHdlIHN0aWxsIGhhdmUgb25lIGlzc3Vl IHRoYXQgaXMKPiB3aGVuIGl0IGdvZXMgYmFjayB0byBjb25zb2xlLgo+IAo+IGZiZGV2IG9uIHNl dF9wYXIgaW52YWxpZGF0ZWQgZnJvbnQgYnVmZmVyLCBidXQgdGhlbiBzcGxhc2ggc2NyZWVuIGNh bWUKPiBhbmQgZmx1c2hlZCBpdCwgcHNyIHN0YXJ0ZWQgd29ya2luZywgdGhlbiBjb250cm9sIGdl dHMgYmFjayB0byBmYmRldiBhbmQKPiBub3RoaW5nIGludmFsaWRhdGVzIG1vcmUgc28gZnJvbSB0 aGlzIHBvaW50IG9uIHdlIG1pc3MgbWFueSAoaWYgbm90IGFsbCkKPiBzY3JlZW4gdXBkYXRlcy4K PiAKPiBTbyB3ZSBhcmUgZ29pbmcgdG8gYSBlbmRsZXNzIHBhdGggd2hlcmUgd2UgY291bGQgaGF2 ZSBtYW55IGNhc2VzIHdoZXJlCj4gZmJkZXYgd2lsbCBiZSBmbHVzaGVkIHdpdGggbm8gcmVsaWFi bGUgd2F5IHRvIGdldCBpbnZhbGlkYXRlZCBhZ2Fpbi4KPiAKPiBTbywgcmlnaHQgbm93IEkganVz dCBzZWUgMyBwYXRoczoKPiAxLiBpbnZhbGlkYXRlIGluc3RlYWQgb2YgZmx1c2ggb24gZmIgZGly dHkgY2FsbGJhY2sganVzdCB0byBtYWtlIHN1cmUKPiBldmVyeXRoaW5nIGdldHMgaW52YWxpZGF0 ZWQgd2hlbiB1c2luZyBkdW1iIGlvY3Rscwo+IDIuIGNoYW5nZSBmYmRldiBhbmQgYWxsIGl0cyBj bGllbnRzIHRvIG1ha2UgYSBwcm9wZXIgdXNlIG9mIGEgZGlydHkuCj4gMy4gY2hhbmdlIGZiZGV2 LCBmYmNvbiB0byBwcm9wYWdhdGUgY29uc29sZSBzd2l0Y2ggKEtEX1RFWFQgaW5mbykgd2hlcmUK PiB3ZSB3b3VsZCBoYXZlIGEgd2F5IHRvIGtub3cgZXhhY3RseSB3aG8gaXMgaW4gY29udHJvbAo+ IDQuIEludHJvZG9jZSBJT0NUTHMgZm9yIFBTUiBhbmQgZW5hYmxlL2Rpc2FibGUgaXQgb24gRERY IHdoZW4gd2Uga25vdwo+IEREWCBoYXMgY29udHJvbC4KPiAKPiBJIHJlYWxseSBkb24ndCBsaWtl IHRoZSBpZGVhIHRvIGNoYW5nZSBmYmRldiBzY3J1Y3R1cmVzIGFuZCBpdHMKPiBjbGllbnRzLi4u Cj4gCj4gUGxlYXNlIGxldCBtZSBrbm93IGlmIHlvdSBoYXZlIG90aGVyL2JldHRlciBpZGVhcyBh bmQgYWxzbyB3aGF0IHBhdGggeW91Cj4gcHJlZmVyLi4uCgpBcyBJIG1lbnRpb25lZCB3ZSdyZSBu b3QgdGhlIG9ubHkgb25lcyB3aXRoIGV4YWN0bHkgdGhpcyBwcm9ibGVtLCB1ZGwgJgpxeGwgaGF2 ZSB0aGUgc2FtZSBuZWVkIGZvciBjYWxsaW5nIGRpcnR5ZmIgYWxsIG92ZXIgdGhlIHBsYWNlIGZy b20gZmJkZXYKaG9va3MuIHF4bCBzZWVtcyB0byBoYXZlIHRoZSBtb3JlIGNvbXBsZXRlIHNvbHV0 aW9uIHVzaW5nIGEgd29ya3F1ZXVlLgoKV2hhdCBJJ20gc3RpbGwgd29uZGVyaW5nIGFib3V0IHRo b3VnaCBpcyB3aHkgd2UgZG9uJ3QgZ2V0IGFuIGZiZGV2CmludmFsaWRhdGUgd2hlbiBzd2l0Y2hp bmcgYmFjayB0byB0aGUgY29uc29sZS4gYm9vdCBzcGxhc2ggc2hvdWxkIGJlIGRvaW5nCml0J3Mg ZHJhd2luZyBvbiBpdHMgb3duIGJ1ZmZlciwgZmJjb24gd291bGQgc3dpdGNoIGJhY2sgKHdoaWNo IG1lYW5zIGEKc2V0X3BhciBjYWxsKSBhbmQgdGhhdCBzaG91bGQgaW52YWxpZGF0ZS4gSSBoYXZl IG5vIGlkZWEgd2h5IHdlIGRvbid0IGdldAp0aGlzIGNhbGwgaW4geW91ciBzZXR1cCAuLi4KLURh bmllbAotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRp b24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK