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: Wed, 8 Jul 2015 11:05:45 +0200 Message-ID: <20150708090545.GE7568@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> <20150707112425.GK7568@phenom.ffwll.local> <1436300948.28692.401.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 7133D6E1BA for ; Wed, 8 Jul 2015 02:03:00 -0700 (PDT) Received: by wgxm20 with SMTP id m20so6289380wgx.3 for ; Wed, 08 Jul 2015 02:02:59 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1436300948.28692.401.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 T24gVHVlLCBKdWwgMDcsIDIwMTUgYXQgMDg6MjM6NDZQTSArMDAwMCwgVml2aSwgUm9kcmlnbyB3 cm90ZToKPiBPbiBUdWUsIDIwMTUtMDctMDcgYXQgMTM6MjQgKzAyMDAsIERhbmllbCBWZXR0ZXIg d3JvdGU6Cj4gPiBPbiBNb24sIEp1bCAwNiwgMjAxNSBhdCAxMToxOTowM1BNICswMDAwLCBWaXZp LCBSb2RyaWdvIHdyb3RlOgo+ID4gPiBPbiBNb24sIDIwMTUtMDctMDYgYXQgMTk6NTYgKzAyMDAs IERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gPiA+ID4gT24gTW9uLCBKdWwgMDYsIDIwMTUgYXQgMDI6 MTE6NTVQTSAtMDMwMCwgUGF1bG8gWmFub25pIHdyb3RlOgo+ID4gPiA+ID4gMjAxNS0wNy0wNiAx Mzo0MyBHTVQtMDM6MDAgVml2aSwgUm9kcmlnbyA8cm9kcmlnby52aXZpQGludGVsLmNvbT46Cj4g PiA+ID4gPiA+IE9uIEZyaSwgMjAxNS0wNy0wMyBhdCAwOToxMCArMDIwMCwgRGFuaWVsIFZldHRl ciB3cm90ZToKPiA+ID4gPiA+ID4+IE9uIFRodSwgSnVsIDAyLCAyMDE1IGF0IDA0OjQxOjMyUE0g KzAwMDAsIFZpdmksIFJvZHJpZ28gd3JvdGU6Cj4gPiA+ID4gPiA+PiA+IE9uIFRodSwgMjAxNS0w Ny0wMiBhdCAxMzowMyAtMDMwMCwgUGF1bG8gWmFub25pIHdyb3RlOgo+ID4gPiA+ID4gPj4gPiA+ IDIwMTUtMDYtMzAgMjA6NDIgR01ULTAzOjAwIFJvZHJpZ28gVml2aSA8cm9kcmlnby52aXZpQGlu dGVsLmNvbT46Cj4gPiA+ID4gPiA+PiA+ID4gPiBMZXQncyBkbyBhIGZyb250YnVmZmVyIGludmFs aWRhdGlvbiBvbiBkaXJ0eSBmYi4KPiA+ID4gPiA+ID4+ID4gPiA+IFRvIGJlIHVzZWQgZm9yIERJ UlRZRkIgZHJtIGlvY3RsLgo+ID4gPiA+ID4gPj4gPiA+ID4KPiA+ID4gPiA+ID4+ID4gPiA+IFRo aXMgcGF0Y2ggc29sdmVzIHRoZSBiaWdnZXN0IFBTUiBrbm93biBpc3N1ZSwgdGhhdCBpcwo+ID4g PiA+ID4gPj4gPiA+ID4gbWlzc2VkIHNjcmVlbiB1cGRhdGVzIGR1cmluZyBib290LCBtYWlubHkg d2hlbiB0aGVyZSBpcyBhIHNwbGFzaAo+ID4gPiA+ID4gPj4gPiA+ID4gc2NyZWVuIGludm9sdmVk IGxpa2UgcGx5bW91dGguCj4gPiA+ID4gPiA+PiA+ID4gPgo+ID4gPiA+ID4gPj4gPiA+ID4gUGx5 bW90aCB3aWxsIGRvIGEgbW9kZXNldCBvdmVyIGlvY3RsIHRoYXQgZmx1c2hlcyBmcm9udGJ1ZmZl cgo+ID4gPiA+ID4gPj4gPiA+ID4gdHJhY2tpbmcgYW5kIFBTUiBnZXRzIGJhY2sgdG8gd29yayB3 aGlsZSBpdCBjYW5ub3QgdHJhY2sgdGhlCj4gPiA+ID4gPiA+PiA+ID4gPiBzY3JlZW4gdXBkYXRl cyBhbmQgZXhpdCBwcm9wZXJseS4gSG93ZXZlciBwbHltb3V0aCBhbHNvIHVzZXMKPiA+ID4gPiA+ ID4+ID4gPiA+IGEgZGlydHlmYiBpb2N0bCB3aGVuZXZlciB1cGRhdGluZyB0aGUgc2NyZWVuLiBT byBsZXQncyB1c2UgaXQKPiA+ID4gPiA+ID4+ID4gPiA+IHRvIGludmFsaWRhdGUgUFNSIGJhY2sg YWdhaW4uCj4gPiA+ID4gPiA+PiA+ID4gPgo+ID4gPiA+ID4gPj4gPiA+ID4gdjI6IFJlbW92ZSBP UklHSU5fRkJfRElSVFkgYW5kIHVzZSBPUklHSU5fR1RUIGluc3RlYWQgc2luY2UgZGlydHkKPiA+ ID4gPiA+ID4+ID4gPiA+ICAgICBjYWxsYmFjayBpcyBqdXN0IGNhbGxlZCBhZnRlciBmZXcgc2Ny ZWVuIHVwZGF0ZXMgYW5kIG5vdCBvbgo+ID4gPiA+ID4gPj4gPiA+ID4gICAgIGV2ZXJ5b25lIGFz IHBvaW50ZWQgYnkgRGFuaWVsLgo+ID4gPiA+ID4gPj4gPiA+ID4KPiA+ID4gPiA+ID4+ID4gPiA+ IENjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgo+ID4gPiA+ID4gPj4g PiA+ID4gU2lnbmVkLW9mZi1ieTogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29t Pgo+ID4gPiA+ID4gPj4gPiA+ID4gLS0tCj4gPiA+ID4gPiA+PiA+ID4gPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgMTggKysrKysrKysrKysrKysrKysrCj4gPiA+ID4g PiA+PiA+ID4gPiAgMSBmaWxlIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKykKPiA+ID4gPiA+ID4+ ID4gPiA+Cj4gPiA+ID4gPiA+PiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j Cj4gPiA+ID4gPiA+PiA+ID4gPiBpbmRleCA3MjRiMGUzLi5iNTViMWI2IDEwMDY0NAo+ID4gPiA+ ID4gPj4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4g PiA+ID4gPiA+PiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMKPiA+ID4gPiA+ID4+ID4gPiA+IEBAIC0xNDM5Myw5ICsxNDM5MywyNyBAQCBzdGF0aWMgaW50 IGludGVsX3VzZXJfZnJhbWVidWZmZXJfY3JlYXRlX2hhbmRsZShzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYiwKPiA+ID4gPiA+ID4+ID4gPiA+ICAgICAgICAgcmV0dXJuIGRybV9nZW1faGFuZGxl X2NyZWF0ZShmaWxlLCAmb2JqLT5iYXNlLCBoYW5kbGUpOwo+ID4gPiA+ID4gPj4gPiA+ID4gIH0K PiA+ID4gPiA+ID4+ID4gPiA+Cj4gPiA+ID4gPiA+PiA+ID4gPiArc3RhdGljIGludCBpbnRlbF91 c2VyX2ZyYW1lYnVmZmVyX2RpcnR5KHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAo+ID4gPiA+ ID4gPj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsCj4gPiA+ID4gPiA+PiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZsYWdzLCB1bnNpZ25l ZCBjb2xvciwKPiA+ID4gPiA+ID4+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9jbGlwX3JlY3QgKmNsaXBzLAo+ID4gPiA+ID4g Pj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBudW1fY2xpcHMpCj4gPiA+ID4gPiA+PiA+ID4KPiA+ID4gPiA+ID4+ID4gPiBZb3Ug ZG9uJ3QgbmVlZCB0aGUgd2hpdGUgc3BhY2Ugb24gdGhlIGxpbmVzIGFib3ZlLCBqdXN0IHRoZSB0 YWJzLgo+ID4gPiA+ID4gPj4gPiA+Cj4gPiA+ID4gPiA+PiA+ID4gPiArewo+ID4gPiA+ID4gPj4g PiA+ID4gKyAgICAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZmItPmRldjsKPiA+ID4gPiA+ ID4+ID4gPiA+ICsgICAgICAgc3RydWN0IGludGVsX2ZyYW1lYnVmZmVyICppbnRlbF9mYiA9IHRv X2ludGVsX2ZyYW1lYnVmZmVyKGZiKTsKPiA+ID4gPiA+ID4+ID4gPiA+ICsgICAgICAgc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGludGVsX2ZiLT5vYmo7Cj4gPiA+ID4gPiA+PiA+ ID4gPiArCj4gPiA+ID4gPiA+PiA+ID4gPiArICAgICAgIG11dGV4X2xvY2soJmRldi0+c3RydWN0 X211dGV4KTsKPiA+ID4gPiA+ID4+ID4gPiA+ICsgICAgICAgaW50ZWxfZmJfb2JqX2ludmFsaWRh dGUob2JqLCBPUklHSU5fR1RUKTsKPiA+ID4gPiA+ID4+ID4gPgo+ID4gPiA+ID4gPj4gPiA+IEFz IGZhciBhcyBJIHVuZGVyc3Rvb2QgZnJvbSBteSBicmllZiBpbnZlc3RpZ2F0aW9uLCB0aGUgZGly dHkgSU9DVEwKPiA+ID4gPiA+ID4+ID4gPiBqdXN0IHNheXMgImhleSwgSSdtIGRvbmUgd3JpdGlu ZyBvbiB0aGUgbWVtb3J5LCB5b3UgY2FuIGZsdXNoIHRoaW5ncwo+ID4gPiA+ID4gPj4gPiA+IG5v dyIsIGFuZCBpZiB0aGUgdXNlciB3cml0ZXMgb24gdGhlIGJ1ZmZlciBhZ2FpbiBsYXRlciwgaXQg d2lsbCBuZWVkCj4gPiA+ID4gPiA+PiA+ID4gdG8gY2FsbCB0aGUgZGlydHkgSU9DVEwgYWdhaW4u IFNvIHNob3VsZG4ndCB3ZSBjYWxsCj4gPiA+ID4gPiA+PiA+ID4gaW50ZWxfZmJfb2JqX2ZsdXNo KG9iaiwgZmFsc2UpIGhlcmU/IEl0IHNlZW1zIHRoaXMgd2FzIGFsc28gcG9pbnRlZCBieQo+ID4g PiA+ID4gPj4gPiA+IERhbmllbCBvbiB0aGUgZmlyc3QgcmV2aWV3LiBJdCB3b3VsZCBiZSBiZXR0 ZXIgYmVjYXVzZSBpdCB3b3VsZCBhbGxvdwo+ID4gPiA+ID4gPj4gPiA+IHVzIHRvIGFjdHVhbGx5 IGtlZXAgUFNSL0ZCQyBlbmFibGVkLgo+ID4gPiA+ID4gPj4gPgo+ID4gPiA+ID4gPj4gPiBUaGUg Zmx1c2ggY2F1c2VkIGJ5IHRoZSBkdW1iIG1vZGVzZXQgaW9jdGwgaXMgZXhhY3RseSB3aGF0IEkg d2FudCB0bwo+ID4gPiA+ID4gPj4gPiByZXZlcnQgaGVyZS4KPiA+ID4gPiA+ID4+ID4KPiA+ID4g PiA+ID4+ID4gV2VsbCwgSSBqdXN0IHRlc3RlZCB0byBkb3VibGUgY2hlY2sgaGVyZSBhbmQgZmx1 c2ggbWFrZXMgbWUgdG8gbWlzcwo+ID4gPiA+ID4gPj4gPiBzY3JlZW4gdXBkYXRlcy4gKHRyaXBs ZSBjaGVja2VkIHdpdGggcmV0aXJlZCA9IHRydWUgYXMgd2VsbCBqdXN0IGluCj4gPiA+ID4gPiA+ PiA+IGNhc2UpCj4gPiA+ID4gPiA+PiA+Cj4gPiA+ID4gPiA+PiA+IGZiZGV2IGNvbWVzIHRvIHBs YWNlIGFuZCBpbnZhbGlkYXRlZCBmcm9udGJ1ZmZlciwgdGhlbiBwbHltb3V0aCBkb2VzIGEKPiA+ ID4gPiA+ID4+ID4gZmx1c2ggdGhhdCBtYWtlcyBwc3Igc3RhcnQgd29ya2luZyB3aGVuIGl0IHNo b3VsZCBjb250aW51ZSBkaXNhYmxlZC4KPiA+ID4gPiA+ID4+ID4gQ29udGludWUgZmx1c2hpbmcg aXQgZG9lc24ndCBzb2x2ZSB0aGUgcHJvYmxlbSwganVzdCByYXRpZnkgaXQuCj4gPiA+ID4gPiA+ PiA+Cj4gPiA+ID4gPiA+PiA+IEJ1dCBiZXNpZGUgdGhlIGlzc3VlIHRoYXQgaXQgaXMgc29sdmlu ZyBJIGRvbid0IGJlbGlldmUgd2Ugd2FudCBpcyBhCj4gPiA+ID4gPiA+PiA+IGZsdXNoIGFueXdh eS4gVGhlcmUgaXMgc29tZXRoaW5nIHdyaXRpbmcgZGlyZWN0bHkgdG8gZnJvbnRidWZmZXIgd2l0 aCBubwo+ID4gPiA+ID4gPj4gPiBpbnZhbGlkYXRpb24uIFRoZSBkaXJ0eSBjYWxsIGlzIHN1cHBv c2VkIHRvIGJlIGEgZGFtYWdlIGNhbGwgdGhhdAo+ID4gPiA+ID4gPj4gPiBhY3R1YWxseSB0ZWxs cyBzb21ldGhpbmcgb24gdGhlIHNjcmVlbiBnb3Qgd3JpdHRlbiBhbmQgbmVlZHMgdG8gYmUKPiA+ ID4gPiA+ID4+ID4gdXBkYXRlZCBpZiBpdCBoYXNuJ3Qgc3RpbGwuIEluIG91ciBjYXVzZSB0aGlz IGlzIGV4YWN0bHkgdGhlIGZyb250YnVmZmVyCj4gPiA+ID4gPiA+PiA+IGludmFsaWRhdGUsIG5v dCB0aGUgZmx1c2guCj4gPiA+ID4gPiA+PiA+Cj4gPiA+ID4gPiA+PiA+IFRoZSBmbHVzaCBwbGFj ZSB3b3VsZCBiZSBhZnRlciBpdCByZWFsbHkgc3RvcHBlZCBkb2luZyBzb21ldGhpbmcsIGJ1dAo+ ID4gPiA+ID4gPj4gPiBzaW5jZSBJIGRvbid0IHRydXN0IGl0IEkgcHJlZmVyIHRvIGxldCBpdCBp bnZhbGlkYXRlZCB1bnRpbCBuZXh0IGZsaXAuCj4gPiA+ID4gPiA+Pgo+ID4gPiA+ID4gPj4gU2Vl IG15IHJldmlldyBvbiB0aGUgZmlyc3Qgcm91bmQgb2YgdGhpcyBwYXRjaDogZGlydHlmYiBfaXNf IGEgZmx1c2guIElmCj4gPiA+ID4gPiA+PiBpdCdzIG5vdCBlbm91Z2ggdGhlbiB0aGVyZSdzIHNv bWUgb3RoZXIgcHJvYmxlbXMgc3RpbGwgYXJvdW5kLgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBX ZWxsLCB0aGUgZmx1c2ggaXRzZWxmIGluIHRoZSB3YXkgaXQgaXMgZGVmaW5lZCBpcyB0byBmbHVz aCBmcm9udGJ1ZmZlcgo+ID4gPiA+ID4gPiBiaXRzIGFuZCBwdXQgcG93ZXIgc2F2aW5nIGZlYXR1 cmVzIGJhY2sgdG8gd29yay4gUFNSIGZsdXNoIGZvciBpbnN0YW5jZQo+ID4gPiA+ID4gPiBkb2Vz bid0IGV4aXQgb24gZXZlcnkgZmx1c2guIE9ubHkgaW4gdGhlIGNhc2VzIHRoYXQgd2Uga25vdyBI VyB0cmFja2luZwo+ID4gPiA+ID4gPiBkb2Vzbid0IHdvcmsuCj4gPiA+ID4gPiA+Cj4gPiA+ID4g PiA+IE9uZSBwb3NzaWJpbGl0eSB3b3VsZCBiZSBjaGFuZ2UgUFNSIHRvIHJlc3BlY3QgdGhhdCBh bGwgZmx1c2ggYWx3YXlzIGlzCj4gPiA+ID4gPiA+IGludmFsaWRhdGUgKGV4aXQpICsgZmx1c2gg ZmJfYml0cy4gQnV0IEknbSBhZ2FpbnN0IHRoaXMgc2luY2UgUFNSIG9uCj4gPiA+ID4gPiA+IGNv cmUgcGxhdGZvcm1zIGRvZXNuJ3QgaGF2ZSBTVyB0cmFja2tpbmcgZXh0IGFuZCBpdCB3YXNuJ3Qg aW1wbGVtZW50ZWQKPiA+ID4gPiA+ID4gdG8gYmUgZnVsbHkgZW5hYmxlZC9kaXNhYmxlZCBldmVy eSB0aW1lLgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBBbm90aGVyIGlkZWEgb24gdGhpcyBsaW5l IGlzIHRvIG1ha2UgZmx1c2hzIGtub3cgb3JpZ2lucyBvciBhdCBsZWFzdCBhCj4gPiA+ID4gPiA+ IGJvb2xlYW4gdG8gc2VwYXJhdGUgY2FzZXMgd2hlcmUgZmx1c2ggbXVzdCBiZSBoYW5kbGVkIGFz IGZsdXNoIGJpdHMgKwo+ID4gPiA+ID4gPiBjb250aW51ZSB3b3JraW5nIG9yIGludmFsaWRhdGUg KyBmbHVzaCBiaXRzICsgc3RhcnQgd29ya2luZyBhZ2Fpbgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4g PiBQbGVhc2UgbGV0IG1lIGtub3cgd2hhdCB5b3UgdGhpbmsuCj4gPiA+ID4gPiA+Cj4gPiA+ID4g PiA+IEJ1dCBwdXR0aW5nIGZsdXNocyBvbiB0aGlzIGRpcnR5IGNhbGxiYWNrIGlzIGN1cnJlbnRs eSB1c2VsZXNzIGJlY2F1c2UKPiA+ID4gPiA+ID4gZmx1c2gganVzdCB0ZWxscyBwc3IgdG8gY29u dGludWUgd29ya2luZyB3aXRob3V0IGdldHRpbmcgc2NyZWVuIHVwZGF0ZXMuCj4gPiA+ID4gPiA+ Cj4gPiA+ID4gPiA+IFdlbGwsIHRoaXMgaXMgdGhlIG1vc3QgaW1wb3J0YW50IGRpc2N1c3Npb24g Zm9yIG5vdywgYnV0IGFsc28gZXZlbiB3ZQo+ID4gPiA+ID4gPiBjaGFuZ2UgZmx1c2ggaW50ZXJm YWNlIG9yIG9ubHkgaW4gUFNSIEknbSBub3Qgc3VyZSB0aGlzIHdpbGwgd29yay4KPiA+ID4gPiA+ ID4KPiA+ID4gPiA+ID4gVGhpcyBkaXJ0eSBjYXNlIGhhcHBlbnMgaW4gdGhlIG1pZGRsZSBvZiBm YmRldiBhbmQgd2hlbiBpdCBnaXZlcyBjb250cm9sCj4gPiA+ID4gPiA+IGJhY2sgdG8gZmJjb24g cHNyIHdvdWxkIGJlIHdvcmtpbmcgd2l0aG91dCBubyBvbmUgZWxzZSBpbnZhbGlkYXRlIG9yCj4g PiA+ID4gPiA+IGZsdXNoaW5nIGl0IGFuZCB3ZSB3b3VsZCBtaXNzIHNjcmVlbiB1cGRhdGVzIGFu eXdheS4KPiA+ID4gPiA+ID4gQnV0IGluIHRoaXMgY2FzZSBJIHVuZGVyc3RhbmQgdGhpcyBpcyBh IGhhY2sgYW5kIGlmIHdlIHB1dCB0aGUKPiA+ID4gPiA+ID4gaW52YWxpZGF0ZSB0aGVyZSBJIHNo b3VsZCBhbHNvIHB1dCBhIEZJWE1FIFhYWCBleHBsYWluaW5nIHRoYXQuLi4KPiA+ID4gPiA+IAo+ ID4gPiA+ID4gTGFzdCB3ZWVrIEkgZGlzY3Vzc2VkIHNvbWUgb2YgdGhpcyB3aXRoIFJvZHJpZ28g b24gSVJDIGFuZCB3ZSBoYXZlCj4gPiA+ID4gPiBkaWZmZXJlbnQgaW50ZXJwcmV0YXRpb25zIG9u IHdoYXQgdGhlIGZyb250YnVmZmVyIHRyYWNraW5nIGNhbGxzIG1lYW4uCj4gPiA+ID4gPiBEYW5p ZWwsIGNhbiB5b3UgcGxlYXNlIGNsYXJpZnkgYSBmZXcgdGhpbmdzPwo+ID4gPiA+ID4gCj4gPiA+ ID4gPiBPbmUgb2YgdGhlIHRoaW5ncyBJJ3ZlIGRpc2N1c3NlZCB3aXRoIFJvZHJpZ28gaXMgdGhh dCBJIGNvbnNpZGVyCj4gPiA+ID4gPiBpbnZhbGlkYXRlK2ZsdXNoIHRvIGJlIGVxdWl2YWxlbnQg dG8ganVzdCBhIGZsdXNoIGNhbGwsIHdoaWxlIFJvZHJpZ28KPiA+ID4gPiA+IHNlZXMgYm90aCBj YXNlcyBhcyBkaWZmZXJlbnQuIERhbmllbCwgY2FuIHlvdSBwbGVhc2UgY2xhcmlmeSB0aGUKPiA+ ID4gPiA+IGludGVudGlvbnMgb2YgdGhlIGZyb250YnVmZmVyIHRyYWNraW5nIGluZnJhc3RydWN0 dXJlIGhlcmU/Cj4gPiA+ID4gCj4gPiA+ID4gWWVhaCBlc3NlbnRpYWxseSBmbHVzaCB3aXRob3V0 IGFuIGludmFsaWRhdGUgaXMganVzdCBhIGluc3RhbnRhbmVvdXMKPiA+ID4gPiBpbnZhbGlkYXRl K2ZsdXNoLiBpbnZhbGlkYXRlIGp1c3QgbWVhbnMgInNvbWVvbmUgc3RhcnRlZCB0byBmcm9udGJ1 ZmZlcgo+ID4gPiA+IHJlbmRlciBhbmQgSSBoYXZlIG5vIGlkZWEgYXQgYWxsIHdoZW4gdGhhdCB3 aWxsIHN0b3AiLiBGbHVzaCBtZWFucwo+ID4gPiA+ICJzb21lb25lIGhhcyBkb25lIHNvbWUgZnJv bnRidWZmZXIgcmVuZGVyaW5nLCBtYWtlIHN1cmUgdGhvc2UgdXBkYXRlcyBsYW5kCj4gPiA+ID4g b24gdGhlIHNjcmVlbiIuIFNvIHllYWggUGF1bG8ncyBpZGVhIGlzIGNvcnJlY3QuCj4gPiA+IAo+ ID4gPiBUaGFua3MgZm9yIHRoZSBjbGFyaWZpY2F0aW9uLi4uCj4gPiA+IAo+ID4gPiA+IAo+ID4g PiA+IFByb2JsZW0gaXMgbm93IHRoYXQgd2hlbiB3ZSBnZXQgYSBmbGlwIHdlIGFsc28gY2FsbCBm bHVzaCwgYW5kIGZvciBwc3Igb24KPiA+ID4gPiBiaWcgY29yZSB0aGF0J3MgcHJvYmFibHkgbm90 IHdoYXQgd2Ugd2FudCBzaW5jZSBpdCBjYW4gaGFuZGxlIGZsaXBzCj4gPiA+ID4gY29ycmVjdGx5 LCBidXQgbm90IHJlYWwgZnJvbnRidWZmZXIgZmx1c2hlcy4KPiA+ID4gPiAKPiA+ID4gPiA+IE9u ZSBjb250cmFkaWN0aW9uIEkgc2VlIHdpdGggdGhlIGN1cnJlbnQgY29kZSBpcyB0aGF0IFBTUiBk b2VzIG5vdGhpbmcKPiA+ID4gPiA+IG9uIGZsdXNoKCkgZm9yIEJEVyBiZWNhdXNlIGl0IGJlbGll dmVzIHRoZSBIVyB0cmFja2luZywgYnV0IGl0IGRvZXMKPiA+ID4gPiA+IHBzcl9leGl0KCkgb24g aW52YWxpZGF0ZSBmb3IgZXZlcnkgc2luZ2xlIGNhc2UuIElmIGl0IHJlbGllcyBvbiB0aGUgSFcK PiA+ID4gPiA+IHRyYWNraW5nLCBzaG91bGRuJ3QgaXQgYWxzbyBkbyBub3RoaW5nIG9uIGludmFs aWRhdGUoKT8gSWYgaXQgZG9lc24ndAo+ID4gPiA+ID4gcmVseSBvbiBIVyB0cmFja2luZywgc2hv dWxkbid0IGl0IGRvIHNvbWV0aGluZyBvbiBmbHVzaCgpPyBJZiBpdAo+ID4gPiA+ID4gcmVsaWVz IG9uIGp1c3QgYSBmZXcgc3BlY2lmaWMgcGllY2VzIG9mIHRoZSBIVyB0cmFja2luZywgc2hvdWxk bid0IGl0Cj4gPiA+ID4gPiBjaGVjayBlbnVtIGZiX29wX29yaWdpbj8gVGhlIGNvbmNsdXNpb24g aGVyZSBpcyB0aGF0IHRoZSBQU1IgY29kZSBpcwo+ID4gPiA+ID4gY29tcGxldGVseSByZWx5aW5n IG9uIGhhdmluZyBpbnZhbGlkYXRlKCkgY2FsbHMgYmVmb3JlIHRoZSBmbHVzaCgpIGZvcgo+ID4g PiA+ID4gY2FzZXMgd2hlcmUgaXQgbmVlZHMgaGVscCBmcm9tIHNvZnR3YXJlLgo+ID4gPiA+IAo+ ID4gPiA+IENhbGxpbmcgaW52YWxpZGF0ZSBiZWZvcmUgZmx1c2ggaXNuJ3QgaW1vIHRoZSByaWdo dCBmaXggc2luY2UgdXN1YWxseQo+ID4gPiA+IChleGNlcHQgd2hlbiB5b3UgaGF2ZSB3b3JraW5n IGh3IHRyYWNraW5nIGxpa2UgZmJjIGZvciBndHQgbW1hcHMpIHlvdSBuZWVkCj4gPiA+ID4gdG8g c3RvcCBwc3IvZmJjL3doYXRldmVyIG9uIGludmFsaWRhdGUuIFdoZXJlYXMgb24gZmx1c2ggeW91 IGp1c3QgbmVlZCB0bwo+ID4gPiA+IG1ha2Ugc3VyZSBzY3JlZW4gY29udGVudHMgZ2V0IHRvIHRo ZSBzY3JlZW4uCj4gPiA+ID4gCj4gPiA+ID4gSSB0aGluayB0aGUgYmVzdCBvcHRpb24gd291bGQg YmUgdG8gd2lyZSB1cCB0aGUgZmJfb3Bfb3JpZ2luIGZvciBmbHVzaGVzCj4gPiA+ID4gdG9vLCBh bmQgdGhlbiBmaWx0ZXIgb3V0IE9SSUdJTl9GTElQIGZvciBwc3IgKGV4Y2VwdCBmb3Igc3ByaXRl cyBvbiBoc3cpCj4gPiA+ID4gb24gYmlnIGNvcmUuCj4gPiA+IAo+ID4gPiBPaywgdGhpcyBhcHBy b2FjaCBoZXJlIHdvcmtzIGhlcmUgd2hlbiBJIGhhdmUgc3BsYXNoIHNjcmVlbiB0YWtpbmcgcGxh Y2UKPiA+ID4gYW5kIFggY29taW5nIHJpZ2h0IGFmdGVyIGl0LiBIb3dldmVyIHdlIHN0aWxsIGhh dmUgb25lIGlzc3VlIHRoYXQgaXMKPiA+ID4gd2hlbiBpdCBnb2VzIGJhY2sgdG8gY29uc29sZS4K PiA+ID4gCj4gPiA+IGZiZGV2IG9uIHNldF9wYXIgaW52YWxpZGF0ZWQgZnJvbnQgYnVmZmVyLCBi dXQgdGhlbiBzcGxhc2ggc2NyZWVuIGNhbWUKPiA+ID4gYW5kIGZsdXNoZWQgaXQsIHBzciBzdGFy dGVkIHdvcmtpbmcsIHRoZW4gY29udHJvbCBnZXRzIGJhY2sgdG8gZmJkZXYgYW5kCj4gPiA+IG5v dGhpbmcgaW52YWxpZGF0ZXMgbW9yZSBzbyBmcm9tIHRoaXMgcG9pbnQgb24gd2UgbWlzcyBtYW55 IChpZiBub3QgYWxsKQo+ID4gPiBzY3JlZW4gdXBkYXRlcy4KPiA+ID4gCj4gPiA+IFNvIHdlIGFy ZSBnb2luZyB0byBhIGVuZGxlc3MgcGF0aCB3aGVyZSB3ZSBjb3VsZCBoYXZlIG1hbnkgY2FzZXMg d2hlcmUKPiA+ID4gZmJkZXYgd2lsbCBiZSBmbHVzaGVkIHdpdGggbm8gcmVsaWFibGUgd2F5IHRv IGdldCBpbnZhbGlkYXRlZCBhZ2Fpbi4KPiA+ID4gCj4gPiA+IFNvLCByaWdodCBub3cgSSBqdXN0 IHNlZSAzIHBhdGhzOgo+ID4gPiAxLiBpbnZhbGlkYXRlIGluc3RlYWQgb2YgZmx1c2ggb24gZmIg ZGlydHkgY2FsbGJhY2sganVzdCB0byBtYWtlIHN1cmUKPiA+ID4gZXZlcnl0aGluZyBnZXRzIGlu dmFsaWRhdGVkIHdoZW4gdXNpbmcgZHVtYiBpb2N0bHMKPiA+ID4gMi4gY2hhbmdlIGZiZGV2IGFu ZCBhbGwgaXRzIGNsaWVudHMgdG8gbWFrZSBhIHByb3BlciB1c2Ugb2YgYSBkaXJ0eS4KPiA+ID4g My4gY2hhbmdlIGZiZGV2LCBmYmNvbiB0byBwcm9wYWdhdGUgY29uc29sZSBzd2l0Y2ggKEtEX1RF WFQgaW5mbykgd2hlcmUKPiA+ID4gd2Ugd291bGQgaGF2ZSBhIHdheSB0byBrbm93IGV4YWN0bHkg d2hvIGlzIGluIGNvbnRyb2wKPiA+ID4gNC4gSW50cm9kb2NlIElPQ1RMcyBmb3IgUFNSIGFuZCBl bmFibGUvZGlzYWJsZSBpdCBvbiBERFggd2hlbiB3ZSBrbm93Cj4gPiA+IEREWCBoYXMgY29udHJv bC4KPiA+ID4gCj4gPiA+IEkgcmVhbGx5IGRvbid0IGxpa2UgdGhlIGlkZWEgdG8gY2hhbmdlIGZi ZGV2IHNjcnVjdHVyZXMgYW5kIGl0cwo+ID4gPiBjbGllbnRzLi4uCj4gPiA+IAo+ID4gPiBQbGVh c2UgbGV0IG1lIGtub3cgaWYgeW91IGhhdmUgb3RoZXIvYmV0dGVyIGlkZWFzIGFuZCBhbHNvIHdo YXQgcGF0aCB5b3UKPiA+ID4gcHJlZmVyLi4uCj4gPiAKPiA+IEFzIEkgbWVudGlvbmVkIHdlJ3Jl IG5vdCB0aGUgb25seSBvbmVzIHdpdGggZXhhY3RseSB0aGlzIHByb2JsZW0sIHVkbCAmCj4gPiBx eGwgaGF2ZSB0aGUgc2FtZSBuZWVkIGZvciBjYWxsaW5nIGRpcnR5ZmIgYWxsIG92ZXIgdGhlIHBs YWNlIGZyb20gZmJkZXYKPiA+IGhvb2tzLiBxeGwgc2VlbXMgdG8gaGF2ZSB0aGUgbW9yZSBjb21w bGV0ZSBzb2x1dGlvbiB1c2luZyBhIHdvcmtxdWV1ZS4KPiAKPiBZZXMsIEkgYWdyZWUuIEkganVz dCB3YW50IHRvIGJsb2NrIFBTUiBvbiB0aGlzIGZiZGV2IHJld29yayB0aGF0IGlzIG5vdAo+IHNp bXBsZSwgaW52b2x2ZSBtYW55IG1haW50YWluZXJzIGFuZCBpdCBpcyBub3QgdGhlIG1haW4gUFNS IHVzZSBjYXNlLgo+IAo+ID4gCj4gPiBXaGF0IEknbSBzdGlsbCB3b25kZXJpbmcgYWJvdXQgdGhv dWdoIGlzIHdoeSB3ZSBkb24ndCBnZXQgYW4gZmJkZXYKPiA+IGludmFsaWRhdGUgd2hlbiBzd2l0 Y2hpbmcgYmFjayB0byB0aGUgY29uc29sZS4gYm9vdCBzcGxhc2ggc2hvdWxkIGJlIGRvaW5nCj4g PiBpdCdzIGRyYXdpbmcgb24gaXRzIG93biBidWZmZXIsIGZiY29uIHdvdWxkIHN3aXRjaCBiYWNr ICh3aGljaCBtZWFucyBhCj4gPiBzZXRfcGFyIGNhbGwpIGFuZCB0aGF0IHNob3VsZCBpbnZhbGlk YXRlLiBJIGhhdmUgbm8gaWRlYSB3aHkgd2UgZG9uJ3QgZ2V0Cj4gPiB0aGlzIGNhbGwgaW4geW91 ciBzZXR1cCAuLi4KPiAKPiBZb3Ugd2VyZSByaWdodC4uLi4gSSB3YXNuJ3QgcmVseWluZyBvbiBz ZXRfcGFyIGJ1dCBpdCBpcyBhY3R1YWxseSBjYWxsZWQKPiBvbiBmYmNvbiBzd2l0Y2ggYmFjaywg YnV0IHRoZSBpbnZhbGlkYXRlIHdhcyBoYXBwZW5pbmcgb25seSBvbiB0aGUgZmlyc3QKPiB0aW1l IGJlY2F1c2Ugd3JpdGVfZG9tYWluIHdhcyBhbHJlYWR5IEdUVC4gU28gd2l0aCB0aGUgZm9sbG93 aW5nIHBhdGNoCj4gd2UgY2FuIHNvbHZlIHRoZSBjYXNlIHdoZXJlIEkgcHJlc3MgIkVzYyIga2V5 IG9uIHRoZSBtaWRkbGUgb2Ygc3BsYXNoCj4gc2NyZWVuOgo+IGh0dHA6Ly9jZ2l0LmZyZWVkZXNr dG9wLm9yZy9+dml2aWppbS9kcm0taW50ZWwvY29tbWl0Lz9oPXBzciZpZD1jZTcyMjYwNTQwODUw ODBjMTBlNTNiODI3NDNhNzZlMDU5M2I3ODVhCgpPb3BzIEkndmUgYWNjaWRlbnRhbGx5IGJyb2tl biB0aGlzIGV2ZW4gd29yc2Ugd2l0aCAKCmNvbW1pdCAwMzFiNjk4YTc3YTcwYTZjMzk0NTY4MDM0 NDM3YjU0ODZhNDRlODY4CkF1dGhvcjogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZnds bC5jaD4KRGF0ZTogICBGcmkgSnVuIDI2IDE5OjM1OjE2IDIwMTUgKzAyMDAKCiAgICBkcm0vaTkx NTogVW5jb25kaXRpb25hbGx5IGRvIGZiIHRyYWNraW5nIGludmFsaWRhdGUgaW4gc2V0X2RvbWFp bgoKVGhpcyBjb21taXQgZml4ZXMgdGhpcyBleGFjdCBidWcgKGFscmVhZHkgaW4gZ3R0IHdyaXRl IGRvbWFpbiksIGJ1dAp1bmZvcnR1bmF0ZWx5IG9ubHkgZm9yIHRoZSBzZXRfZG9tYWluIGlvY3Rs LCBub3QgZm9yIGZiY29uLgoKV2UgcmVhbGx5IGp1c3QgbmVlZCBhbiBmYiBpbnZhbGlkYXRlIGlu IHRoZXJlLCBubyBuZWVkIGZvciB0aGUgaWYuCgo+IEJ1dCBJIHdhcyBmYWNpbmcgYWxzbyBhbm90 aGVyIGlzc3VlIHdpdGggY3J5cHRvIHBhc3MgYW5kIHdpdGhvdXQgYW55Cj4gc3BsYXNoIGFuZCB0 cmFjZSBsZWFkIG1lIHRvIGZiZGV2X3Jlc3RvcmVfbW9kZSBzbyBhbm90aGVyIGhhY2s6Cj4gaHR0 cDovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL352aXZpamltL2RybS1pbnRlbC9jb21taXQvP2g9cHNy JmlkPTlhN2MzZjc4NTNhMzI3YTgyNTUxZTMzNWI2MDU2YjVlNTM2MjAwNGEKCkV4Y2VsbGVudCBj YXRjaCwgd2UgZGVmaW5pdGVseSBuZWVkIHRoYXQgb25lIHRvby4KLURhbmllbAoKPiBBbGwgKGFu IG1vcmUpIGluCj4gaHR0cDovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL352aXZpamltL2RybS1pbnRl bC9sb2cvP2g9cHNyCj4gZm9yIG5vdy4uLiB3aGlsZSBJJ20gbm90IHN1cmUgYSBmbGlja2VyIG9u IGZlZG9yYSByZXBvcnRlZCBieSBjb21tdW5pdHkKPiBpcyBub3QgcmVsaWFibHkgc29sdmVkOgo+ IAo+IGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9MTIzNjMwMwo+ IAo+IFRoYW5rcywKPiBSb2RyaWdvLgo+IAo+IAo+IAo+IAo+IAo+ID4gLURhbmllbAo+IAoKLS0g CkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6 Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4Cg==