From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH v3 21/22] drm/atomic: Introduce drm_atomic_helper_duplicate_commited_state() Date: Mon, 10 Jul 2017 11:31:55 +0200 Message-ID: <5067393b-eb95-de0f-5fb9-c66717eacec7@linux.intel.com> References: <20170706202442.5394-1-ville.syrjala@linux.intel.com> <20170706202442.5394-22-ville.syrjala@linux.intel.com> <20170707120338.tahioabaifi7gpi7@phenom.ffwll.local> <20170707132157.GD12629@intel.com> <20170707151812.GF12629@intel.com> <20170710064352.lkcvz4nzez4i6fzz@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170710064352.lkcvz4nzez4i6fzz@phenom.ffwll.local> 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: Daniel Vetter , =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= Cc: intel-gfx , dri-devel List-Id: dri-devel@lists.freedesktop.org T3AgMTAtMDctMTcgb20gMDg6NDMgc2NocmVlZiBEYW5pZWwgVmV0dGVyOgo+IE9uIEZyaSwgSnVs IDA3LCAyMDE3IGF0IDA2OjE4OjEyUE0gKzAzMDAsIFZpbGxlIFN5cmrDpGzDpCB3cm90ZToKPj4g T24gRnJpLCBKdWwgMDcsIDIwMTcgYXQgMDQ6MDU6MjhQTSArMDIwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPj4+IE9uIEZyaSwgSnVsIDcsIDIwMTcgYXQgMzoyMSBQTSwgVmlsbGUgU3lyasOkbMOk Cj4+PiA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+IHdyb3RlOgo+Pj4+IE9uIEZyaSwg SnVsIDA3LCAyMDE3IGF0IDAyOjAzOjM4UE0gKzAyMDAsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4+ Pj4+IE9uIFRodSwgSnVsIDA2LCAyMDE3IGF0IDExOjI0OjQxUE0gKzAzMDAsIHZpbGxlLnN5cmph bGFAbGludXguaW50ZWwuY29tIHdyb3RlOgo+Pj4+Pj4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2 aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPj4+Pj4+Cj4+Pj4+PiBGb3IgaTkxNSBHUFUg cmVzZXQgaGFuZGxpbmcgd2UnbGwgd2FudCB0byBiZSBhYmxlIHRvIGR1cGxpY2F0ZSB0aGUgc3Rh dGUKPj4+Pj4+IHRoYXQgd2FzIGxhc3QgY29tbWl0ZWQgdG8gdGhlIGhhcmR3YXJlLiBGb3IgdGhh dCBwdXJwb3NlIGxldCdzIHN0YXJ0IHRvCj4+Pj4+PiB0cmFjayB0aGUgY29tbWl0ZWQgc3RhdGUg Zm9yIGVhY2ggb2JqZWN0IGFuZCBwcm92aWRlIGEgd2F5IHRvIGR1cGxpY2F0ZQo+Pj4+Pj4gdGhl IGNvbW1taXRlZCBzdGF0ZSBpbnRvIGEgbmV3IGRybV9hdG9taWNfc3RhdGUuIFRoZSBsb2NraW5n IGZvcgo+Pj4+Pj4gLmNvbW1pdGVkX3N0YXRlIG11c3QgdG8gYmUgcHJvdmlkZWQgYnkgdGhlIGRy aXZlci4KPj4+Pj4+Cj4+Pj4+PiBkcm1fYXRvbWljX2hlbHBlcl9kdXBsaWNhdGVfY29tbWl0ZWRf c3RhdGUoKSBkdXBsaWNhdGVzIHRoZSBzdGF0ZQo+Pj4+Pj4gdG8gYm90aCBvbGRfc3RhdGUgYW5k IG5ld19zdGF0ZS4gRm9yIHRoZSBwdXJwb3NlcyBvZiBpOTE1IEdQVSByZXNldCB3ZQo+Pj4+Pj4g d291bGQgb25seSBuZWVkIG9uZSBvZiB0aGVtLCBidXQgd2UgYWN0dWFsbHkgbmVlZCB0d28gdG9w IGxldmVsIHN0YXRlczsKPj4+Pj4+IG9uZSBmb3IgZGlzYWJsaW5nIGV2ZXJ5dGhpbmcgKHdoaWNo IHdvdWxkIG5lZWQgdGhlIGR1cGxpY2F0ZWQgc3RhdGUgdG8KPj4+Pj4+IGJlIG9sZF9zdGF0ZSks IGFuZCBhbm90aGVyIHRvIHJlZW5hYmxlIGV2ZXJ5dGhpbmcgKHdoaWNoIHdvdWxkIG5lZWQgdGhl Cj4+Pj4+PiBkdXBsaWNhdGVkIHN0YXRlIHRvIGJlIG5ld19zdGF0ZSkuIFNvIHRvIG1ha2UgaXQg bGVzcyBjb21wbGVzIEkgZmlndXJlZAo+Pj4+Pj4gSSdkIGp1c3QgYWx3YXlzIGR1cGxpY2F0ZSBi b3RoLiBNaWdodCB3YW50IHRvIHJldGhpbmsgdGhpcyBpZiBmb3Igbm8KPj4+Pj4+IG90aGVyIHJl YXNvbiB0aGF0IHJlZHVjaW5nIHRoZSBjaGFuY2VzIG9mIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1 cmUuCj4+Pj4+PiBEdWUgdG8gdGhlIGRvdWJsZSBzdGF0ZSBkdXBsaWNhdGlvbiB3ZSBuZWVkCj4+ Pj4+PiBkcm1fYXRvbWljX2hlbHBlcl9jbGVhbl9jb21taXRlZF9zdGF0ZSgpIHRvIGNsZWFuIHVw IHRoZSBkdXBsaWNhdGVkCj4+Pj4+PiBvbGRfc3RhdGUgc2luY2UgdGhhdCdzIG5vdCBoYW5kbGVk IGJ5IHRoZSBub3JtYWwgZHJtX2F0b21pY19zdGF0ZQo+Pj4+Pj4gY2xlYW51cCBjb2RlLgo+Pj4+ Pj4KPj4+Pj4+IFRPRE86IGRvIHdlIHdhbnQgdGhpcyBpbiB0aGUgaGVscGVyLCBvciBtYXliZSBp dCBzaG91bGQgYmUganVzdCBpbiBpOTE1Pwo+Pj4+Pj4KPj4+Pj4+IHYyOiBzL2NvbW1pdGVkL2Nv bW1pdHRlZC8gZXZlcnl3aGVyZSAoY2hlY2twYXRjaCkKPj4+Pj4+ICAgICBIYW5kbGUgc3RhdGUg ZHVwbGljYXRpb24gZXJyb3JzIGJldHRlcgo+Pj4+Pj4gdjM6IEV2ZW4gbW9yZSBjYXJlIGluIGRl YWxpbmcgd2l0aCBtZW1vcnkgYWxsb2NhdGlvbiBlcnJvcnMKPj4+Pj4+ICAgICBIYW5kbGUgcHJp dmF0ZSBvYmpzIHRvbwo+Pj4+Pj4gICAgIERlYWwgd2l0aCB0aGUgcG90ZW50aWFsIG9yZGVyaW5n IGlzc3VlcyBiZXR3ZWVuIHN3YXBfc3RhdGUoKQo+Pj4+Pj4gICAgIGFuZCBod19kb25lKCkgYnkg a2VlcGluZyB0cmFjayBvZiB3aGljaCBzdGF0ZSB3YXMgc3dhcHBlZCBpbgo+Pj4+Pj4gICAgIGxh c3QKPj4+Pj4+Cj4+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5 cmphbGFAbGludXguaW50ZWwuY29tPgo+Pj4+PiBJIHN0aWxsIGRvbid0IGdldCB3aHkgd2UgbmVl ZCB0byBkdXBsaWNhdGUgdGhlIGNvbW1pdHRlZCBzdGF0ZSBmb3IgZ3B1Cj4+Pj4+IHJlc2V0LiBX aGVuIEkgc2FpZCBJJ20gbm90IGFnYWluc3QgYWRkaW5nIGFsbCB0aGF0IGNvbXBsZXhpdHkgbG9u Zy10ZXJtIEkKPj4+Pj4gbWVhbnQgd2hlbiB3ZSBhY3R1YWxseSByZWFsbHkgbmVlZCBpdC4gSW1v IGc0eCBncHUgcmVzZXQgaXNuJ3QgYSBnb29kCj4+Pj4+IGp1c3RpZmljYXRpb24gZm9yIHRoYXQs IHJld29ya2luZyB0aGUgYXRvbWljIHdvcmxkIGZvciB0aGF0IHNlZW1zCj4+Pj4+IG1hc3NpdmVs eSBvdXQgb2YgcHJvcG9ydGlvbi4KPj4+PiBXZWxsLCBJIHN0aWxsIGRvbid0IHNlZSB3aGF0J3Mg c28gIm1hc3NpdmUiIGFib3V0IGEgY291cGxlIG9mIGV4dHJhIHN0YXRlCj4+Pj4gcG9pbnRlcnMg aGFuZ2luZyBhcm91bmQuCj4+Pj4KPj4+PiBBbHNvIHdoaWxlIGRvaW5nIHRoYXQgc3RhdGUgZHVw bGljYXRpb24gc3R1ZmYsIG15IG9sZCBpZGVhIG9mCj4+Pj4gc3BsaXR0aW5nIHRoZSBjcnRjIGRp c2FibGUgYW5kIGVuYWJsZSBwaGFzZXMgaW50byBzZXBhcmF0ZSBhdG9taWMKPj4+PiBjb21taXRz IHBvcHBlZCB1cCBhZ2FpbiBpbiBteSBoZWFkLiBGb3IgdGhhdCBiZWluZyBhYmxlIHRvIGR1cGxp Y2F0ZQo+Pj4+IGFyYml0cmFyeSBzdGF0ZXMgd291bGQgc2VlbSBsaWtlIGEgbmljZSB0aGluZyB0 byBoYXZlLiBTbyB0aGUKPj4+PiByZWZhY3RvcmluZyBJIGhhZCB0byBkbyBjYW4gaGF2ZSBvdGhl ciB1c2VzLgo+Pj4gSSBmdWxseSByZWFsaXplIHRoYXQgeW91J3JlIHVuaGFwcHkgd2l0aCBob3cg YXRvbWljIGVuZGVkIHVwIGdldHRpbmcKPj4+IG1lcmdlZCBhbmQgdGhhdCB5b3UgdGhpbmsgaXQn cyBhIGdyYXZlIG1pc3Rha2UuIEFuZCBtYXliZSBpdCBpcywgbWF5YmUKPj4+IGl0IGlzbid0LCBJ IGhhdmUgbm8gaWRlYS4KPj4gSSBkb24ndCB0aGluayBJIGV2ZXIgc2FpZCB0aGF0LiBJJ3ZlIHNh aWQgdGhhdCBpdCBoYXMgY2VydGFpbiBkZXNpZ24KPj4gcHJvYmxlbXMgdGhhdCB3ZSBvdWdodCB0 byBmaXguIFRoaXMgb25lIGJlaW5nIG9uZSwgYW5kIGFub3RoZXIgYmVpbmcKPj4gdG8gc2VwYXJh dGUgdGhlIHVzZXIgc3RhdGUgZnJvbSB0aGUgaW50ZXJuYWwgc3RhdGUuIFRoZSBsYXR0ZXIgSSB0 aGluawo+PiB3ZSdsbCBoYXZlIHRvIHRhY2tsZSByYXRoZXIgc29vbiB0aGFua3MgdG8gc29tZSBu ZXcgaGFyZHdhcmUgaW4gdGhlCj4+IHBpcGVsaW5lLCBvciB3ZSBuZWVkIHRvIGNvbWUgdXAgd2l0 aCBzb21lIG90aGVyIHdheSB0byBhY2hpZXZlIHRoZQo+PiBzYW1lIGVmZmVjdC4KPj4KPj4+IEJ1 dCByaWdodCBub3cgd2UgaGF2ZSBfbm90aGluZ18gYXNraW5nIGZvcgo+Pj4gdGhhdCByZW9yZyBh ZmFpaywgYW5kIHVzaW5nIGdlbjQgcmVzZXQgdG8ganVzdGlmeSBpdCBpcyBpbiBteSBvcGluaW9u Cj4+PiBzaW1wbHkgbm90IHNvbGlkIGVuZ2luZWVyaW5nIHByYWN0aWNlLiBNYXliZSB3ZSBuZWVk IHRoaXMgaW4gdGhlCj4+PiBmdXR1cmUsIGFuZCB0aGVuIHdlIGNhbiBhZGQgaXQsIGJ1dCBub3Qg YmVmb3JlLiBSZWZhY3RvcmluZyBzdHVmZiB0bwo+Pj4gcHJldHRpZnkgdGhlIGFyY2hpdGVjdHVy ZSBpc24ndCByZWFsbHkgdXNlZnVsIHdvcmsuCj4+IE5laXRoZXIgaXMgaGF2aW5nIHRvIHRocm93 IG91dCBjb2RlIHRoYXQgYWxyZWFkeSBleGlzdHMgYW5kIHdvcmtzLiBJZgo+PiB5b3UncmUgc28g d29ycmllZCBhYm91dCB0aW1lIGJlaW5nIHdhc3RlZCBvbiBwcmUtZzR4IEdQVSByZXNldCwgdGhl bgo+PiB3ZSBjb3VsZCBqdXN0IGFzIHdlbGwgbWVyZ2UgbXkgY29kZSBhbmQgbW92ZSBvbiB0byBt b3JlIHByb2R1Y3RpdmUKPj4gZW5kZWF2b3JzLgo+IEknbSB3b3JyaWVkIGFib3V0IGZ1dHVyZSB0 aW1lIHdhc3RlZCBvbiB0aGlzLCBub3QgY3VycmVudCB0aW1lLgo+Cj4+Pj4+IFdoeSBleGFjdGx5 IGNhbid0IHdlIGRvIHRoaXMgc2ltcGxlcj8gSSBzdGlsbCBkb24ndCBnZXQgdGhhdCBwYXJ0LiBJ cwo+Pj4+PiB0aGVyZSByZWFsbHkgbm8gc29sdXRpb24gdGhhdCBkb2Vzbid0IGJyZWFrIGF0b21p YydzIGN1cnJlbnQgYXNzdW1wdGlvbgo+Pj4+PiB0aGF0IGNvbW1pdHMgYXJlIGZ1bGx5IG9yZGVy ZWQgb24gYSBnaXZlbiBjcnRjPwo+Pj4+IEZyb20gdGhlIHBvaW50IG9mIHZpZXcgb2YgdGhlIG9s ZCBhbmQgbmV3IHN0YXRlcyBpdCBkb2Vzbid0IGFjdHVhbGx5Cj4+Pj4gYnJlYWsgdGhhdC4gVGhl IGNvbW1pdHMgZG9uZSBmcm9tIHRoZSByZXNldCBwYXRoIGFyZSBlc3NlbnRpYWxseQo+Pj4+IGlu dmlzaWJsZSB0byB0aGUgbm9ybWFsIG1vZGVzZXQgb3BlcmF0aW9uLgo+Pj4gWW91IGluc2VydCBz b21ldGhpbmcgaW50byBhIGZ1bGx5IG9yZGVyZWQgcXVldWUuIFRoYXQgZG9lcyBicmVhayB0aGUK Pj4+IGVudGlyZSBjb25jZXB0IGFuZCBuZWVkcyBhIHBpbGUgb2YgbG9ja3MgYW5kIHN0dWZmIHRv IG1ha2UgaXQgd29yay4KPj4gRXhhY3RseSBvbmUgbG9jay4gV2VsbCB0d28gaWYgeW91IGNvdWxk IHRoZSBzcGlubG9jayB0byBwcm90ZWN0IHRoZQo+PiBjb21taXR0ZWRfc3RhdGUgcG9pbnRlciB1 cGRhdGUgZnJvbSBwYXJhbGxlbCB1cGRhdGVzIHRvdWNoaW5nIHRoZSBzYW1lCj4+IGttcyBvYmpl Y3QuIFRoYXQgbGF0dGVyIG9uZSBjb3VsZCBiZSByZW1vdmVkIGlmIGF0b21pYyB3b3VsZG4ndCBh bGxvdwo+PiBwYXJhbGxlbCBjb21taXRzIHRvIHRvdWNoIHRoZSBzYW1lIG9iamVjdC4KPj4KPj4+ IFllcyBpdCdzIGRvYWJsZSwgYnV0IGl0J3MgYSByZWRlc2lnbiB3aXRoIGFsbCB0aGUgaW1wbGlj YXRpb25zIG9mCj4+PiBzdWJ0bGUgYnJlYWthZ2UgYWxsIG92ZXIuCj4+IFdoYXQ/IEl0IGRvZXNu J3QgcmVhbGx5IGV2ZW4gZG8gYW55dGhpbmcgdW5sZXNzIHlvdSBkbyB0aGUKPj4gZHVwbGljYXRl X2NvbW1pdHRlZCBzdGF0ZSgpLiBFdmVyeXRoaW5nIGVsc2UgaXMganVzdCBhc3NpZ25pbmcgcG9p bnRlcnMuCj4+IFNvIHVubGVzcyB0aGVyZSdzIHNvbWUgcmVhbGx5IG9idmlvdXMgYnVnIHNvbWV3 aGVyZSBpdCBjYW4ndCBicmVhawo+PiBhbnl0aGluZyBvdXRzaWRlIHRoZSBHUFUgcmVzZXQgcGF0 aC4gQW5kIHJlYWxseSB0aGUgb25seSB3YXkgdG8gYnJlYWsKPj4gdG8gR1BVIHJlc2V0IHBhdGgg aXMgdG8gaGF2ZSBhY3R1YWwgYnVncyBpbiB0aGUgbm9ybWFsIGRpc3BsYXkgY29tbWl0Cj4+IGNv ZGUuCj4gSXQncyB0aGUgZ3B1IHJlc2V0IEknbSB3b3JyaWVkIGFib3V0LiBUaGVyZSdzIG5vIHBv aW50IGluIGZpeGluZyBpdCBpZiBpdAo+IGltbWVkaWF0ZWx5IGJyZWFrcyBhZ2Fpbi4KPgo+Pj4g V2hpbGUgd2UgZG8gaGF2ZSBvcGVuIGJ1Z3MgZm9yIHRoZSBjdXJyZW50Cj4+PiBkZXNpZ24uIFJl d3JpdGluZyB0aGUgd29ybGQgdG8gZml4IGEgYnVnIG5lZWRzIHNlcmlvdXNseSBiZXR0ZXIKPj4+ IGp1c3RpZmljYXRpb24gaW1vLgo+Pj4KPj4+PiBUaGUgb25lIGFsdGVybmF0aXZlIHByb3Bvc2Vk IGlkZWEgb2YgYWxsb3dpbmcgZ2VtIGFuZCBrbXMgc2lkZXMgZ28KPj4+PiBvdXQgb2Ygd2hhY2sg c2NhcmVzIG1lIGEgYml0LiBJIHRoaW5rIHRoYXQgbWlnaHQgbGFuZCB1cyBpbiBtb3JlCj4+Pj4g dHJvdWJsZSB3aGVuIEkgZmluYWxseSBnZXQgYXJvdW5kIHRvIG1ha2luZyB0aGUgdmlkZW8gb3Zl cmxheSBhCj4+Pj4gZHJtX3BsYW5lLgo+Pj4gV2UndmUgcnVuIHBlcmZlY3RseSBmaW5lIHdpdGgg dGhpcyBpZGVhIGZvciB5ZWFycy4KPj4gTm90IHBlcmZlY3RseS4gSSd2ZSBoYWQgdG8gZml4IGl0 IHNldmVyYWwgdGltZXMuIEFuZCBJIGRvbid0IHRoaW5rIEkgd2FzCj4+IHRoZSBvbmx5IG9uZS4K PiBUaGUgcHJvYmxlbSBpcyB0aGF0IG5vIG9uZSB0ZXN0cyBhZ2FpbnN0IGdlbjQsIGFuZCBldmVy eW9uZSBmb3JnZXRzIHRoYXQKPiBpdCBleGlzdHMuIFRoYXQncyB3aHkgSSdkIGxpa2Ugc29tZXRo aW5nIHdpdGggdGhlIG1pbmltYWwgYW1vdW50IG9mCj4gaW52YXNpdmVuZXNzLCBzaW5jZSB0aGF0 IHdvdWxkIGF0IGxlYXN0IGJlIGVhc2llciB0byBwYXRjaCB1cCB3aGVuIHdlCj4gaW5ldml0YWJs eSBicmVhayBpdC4gQWxzbywgc29tZXRoaW5nIGVudGlyZWx5IGNvbnRhaW5lZCB0byBpOTE1Cj4g Y29uY2VwdHVhbGx5LCB3aXRob3V0IGltcG9zaW5nIG1vcmUgcmVzdHJpY3Rpb25zIG9uIHNoYXJl ZCBjb2RlLgo+Pj4+IEFuZCBJIHRoaW5rIHRyeWluZyB0byBrZWVwIHRoZSBHUFUgcmVzZXQgcGF0 aHMgYXMgc2ltaWxhciBhcyBwb3NzaWJsZQo+Pj4+IGJldHdlZW4gYWxsIHRoZSBwbGF0Zm9ybXMg d291bGQgYmUgYSBuaWNlIHRoaW5nLiBKdXN0IHdoYWNraW5nCj4+Pj4gZXZlcnl0aGluZyBvbiB0 aGUgaGVhZCB3aXRoIGEgaGFtbWVyIG9uIG9uZSBwbGF0Zm9ybSBidXQgbm90IG9uCj4+Pj4gYW5v dGhlciBvbmUgc2VlbXMgdG8gbWUgbGlrZSBleHRyYSB2YXJpYXRpb24gaW4gYmVoYXZpb3VyIHRo YXQgd2UKPj4+PiBkb24ndCBuZWNlc3NhcmlseSB3YW50Lgo+Pj4+Cj4+Pj4gQnV0IGxpa2UgSSBz YWlkLCBpZiBzb21lb25lIGNhbiBjb21lIHVwIHdpdGggYSBiZXR0ZXIgc29sdXRpb24gSQo+Pj4+ IHByb2JhYmx5IHdvdWxkbid0IG9iamVjdCB0b28gbXVjaC4gSXQncyBub3QgZ29pbmcgdG8gYmUg Y29taW5nIGZyb20gbWUKPj4+PiB0aG91Z2ggc2luY2UgSSBoYXZlIHBsZW50eSBvZiBvdGhlciB0 aGluZ3MgdG8gZG8gYW5kIHZhY2F0aW9uIHRpbWUgaXMKPj4+PiBjb21pbmcgdXAgdmVyeSBzb29u LiBTbyB1bmxlc3Mgc29tZW9uZSBlbHNlIGNvbWVzIHVwIHdpdGggc29tZXRoaW5nIG5pY2UKPj4+ PiBzb29uIEkgdGhpbmsgd2Ugc2hvdWxkIGp1c3QgZ28gd2l0aCBteSBzb2x1dGlvbiBiZWNhdXNl IGEpIGl0J3MgYWxyZWFkeQo+Pj4+IGF2YWlsYWJsZSwgYW5kIGIpIHdvcmtzIHF1aXRlIGRlY2Vu dGx5IGZyb20gd2hhdCBJIGNhbiBzZWUuCj4+PiBJIGd1ZXNzIEknbGwgaGF2ZSB0byByZXR5cGUg dGhlIG9sZCB0aGluZyBpbiB0aGUgbmV3IHdvcmxkLCBidXQgaXQKPj4+IHJlYWxseSBzaG91bGRu J3QgYmUgbW9yZSB0aGFuIHRoZSBxdWljayBkcmFmdCBJJ3ZlIGxhaWQgZG93biBpbiB0aGUKPj4+ IG9sZCB0aHJlYWQuIFRoaXMgaGVyZSBpcyBpbW8gbm8tZ28gd2l0aCBhbGwgdGhlIGNvcmUgY2hh bmdlcywgYW5kIGV2ZW4KPj4+IGp1c3QgZG9uZSB3aXRoaW4gaTkxNSBJIHRoaW5rIGl0J3MgaGln aGx5IGR1YmlvdXMgdGhhdCBpdCBwcm92aWRlcyBhCj4+PiByZWFsIGJlbmVmaXQsIHNpbmNlIGRl ZmFjdG8gaXQgbWVhbnMgd2UnbGwgaGF2ZSB0byBhYmFuZG9uIHRoZSBhdG9taWMKPj4+IGhlbHBl cnMgZW50aXJlbHkuCj4+IE5vdyBJIHRoaW5rIHlvdSdyZSBqdXN0IGJlaW5nIGRpZmZpY3VsdCBm b3IgdGhlIHNha2Ugb2YgaXQuIEhhdmUgeW91Cj4+IGxvb2tlZCBhdCB0aGUgY29kZSBhdCBhbGw/ IEl0J3MgZnVsbHkgZG9uZSBmcm9tIHRoZSBhdG9taWMgaGVscGVycwo+PiByaWdodCBub3cuIEFu ZCBldmVuIG1vdmluZyB0aGUgY29tbWl0dGVkIHN0YXRlIHRyYWNraW5nIHRvIGk5MTUKPj4gd291 bGRuJ3QgcmVxdWlyZSBhYmFuZG9uaW5nIHRoZSBoZWxwZXJzLiBXZSBjb3VsZCBqdXN0IHVwZGF0 ZSB0aGUKPj4gY29tbWl0dGVkIHN0YXRlIHBvaW50ZXJzIHdoZW4gd2UgY2FsbCBod19kb25lKCks IGFuZCB3ZSdkIGhhdmUgdG8KPj4gdXBkYXRlIHRoZSBzdGF0ZSBzZXFuby9hZ2UgdGltZXN0YW1w IHdoZW4gd2UgY2FsbCBzd2FwX3N0YXRlKCkuCj4+IFRoYXQncyBhbGwgdGhlcmUgaXMgdG8gdGhp cy4KPiBJJ20gY29uY2VybmVkIHdpdGggdGhlIG1haW50YWluZW5hY2UgYnVyZGVuIHlvdSBpbXBv c2Ugb24gYWxsIGZ1dHVyZSBpOTE1Cj4gYXRvbWljIHdvcmssIHRoYXQncyBhbGwuIFllcyBpdCBs b29rcyBzaW1wbGUgdG8geW91IGFuZCByaWdodCBub3csIGJ1dAo+IGl0J3MgYW5vdGhlciBsaXR0 bGUgdGhpbmcgdG8ga2VlcCB3b3JraW5nLCBhbmQgd2UncmUgcmVhbGx5IGdvb2QgYXQKPiBicmVh a2luZyBzdHVmZiBhbGwgdGhlIHRpbWUuCj4KPiBCdXQgaWYgeW91IHN0cm9uZ2x5IHRoaW5rIHRo aXMgaXMgdGhlIGJlc3QgcG9zc2libGUgYXBwcm9hY2ggb3ZlcmFsbCwKPiB0YWtpbmcgaW50byBh Y2NvdW50IGxvbmctdGVybSBpbXBhY3QsIHRoZW4gZ28gYWhlYWQgd2l0aCBpbXBsZW1lbnRpbmcg dGhpcwo+IGluIGk5MTUuIEFkZGluZyBpdCB0aGUgY29uY2VwdCBvZiBhIGNvbW1pdHRlZCBzdGF0 ZSBhbmQgYmVpbmcgYWJsZSB0bwo+IGR1cGxpY2F0ZSB0aGF0IGFuZCBzcXVlZXplIGFub3RoZXIg Y29tbWl0IGluIHRvIHRoZSBzaGFyZWQgYXRvbWljIGhlbHBlcnMKPiBkb2Vzbid0IG1ha2Ugc2Vu c2UgaW1vLgo+IC1EYW5pZWwKCkkgdGhpbmsgdGhlIHByb2JsZW0gaXMgYWJvdXQgc3RydWN0X211 dGV4IHVzYWdlIGJ5IGF0b21pYyBjb21taXQgZHVyaW5nIHJlc2V0LgpHUFUgcmVzZXQgaGFzIHRv IHdhaXQgZm9yIGFsbCBwcmV2aW91cyBhdG9taWMgdXBkYXRlcyB0byBjb21wbGV0ZSwgYnV0CmNs ZWFudXBfcGxhbmVzIGFuZCBwcmVwYXJlX3BsYW5lX2ZiIGJvdGggcmVxdWlyZSBzdHJ1Y3RfbXV0 ZXgsIHdoaWNoIGNhbiBsZWFkCnRvIGEgZGVhZGxvY2suICM5OTA5MwoKVGhlIHJlYWwgZml4IGlz IG5vdCB0YWtpbmcgc3RydWN0X211dGV4IGR1cmluZyBhdG9taWMgY29tbWl0LCB3aGljaCB3aWxs IG1lYW4Kbm8gZGVhZGxvY2sgY2FuIGhhcHBlbi4KCklzIHRoaXMgdGhlIGJ1ZyBiZWluZyBmaXhl ZCBoZXJlIG9yIGFtIEkgbWlzc2luZyBzb21ldGhpbmc/Cgp+TWFhcnRlbgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==