From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [Intel-gfx] [PATCH v3 21/22] drm/atomic: Introduce drm_atomic_helper_duplicate_commited_state() Date: Mon, 10 Jul 2017 16:56:10 +0300 Message-ID: <20170710135610.GL12629@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> <5067393b-eb95-de0f-5fb9-c66717eacec7@linux.intel.com> <20170710121846.GJ12629@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Maarten Lankhorst Cc: intel-gfx , dri-devel List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBKdWwgMTAsIDIwMTcgYXQgMDM6MjY6MThQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gT3AgMTAtMDctMTcgb20gMTQ6MTggc2NocmVlZiBWaWxsZSBTeXJqw6Rsw6Q6 Cj4gPiBPbiBNb24sIEp1bCAxMCwgMjAxNyBhdCAxMTozMTo1NUFNICswMjAwLCBNYWFydGVuIExh bmtob3JzdCB3cm90ZToKPiA+PiBPcCAxMC0wNy0xNyBvbSAwODo0MyBzY2hyZWVmIERhbmllbCBW ZXR0ZXI6Cj4gPj4+IE9uIEZyaSwgSnVsIDA3LCAyMDE3IGF0IDA2OjE4OjEyUE0gKzAzMDAsIFZp bGxlIFN5cmrDpGzDpCB3cm90ZToKPiA+Pj4+IE9uIEZyaSwgSnVsIDA3LCAyMDE3IGF0IDA0OjA1 OjI4UE0gKzAyMDAsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gPj4+Pj4gT24gRnJpLCBKdWwgNywg MjAxNyBhdCAzOjIxIFBNLCBWaWxsZSBTeXJqw6Rsw6QKPiA+Pj4+PiA8dmlsbGUuc3lyamFsYUBs aW51eC5pbnRlbC5jb20+IHdyb3RlOgo+ID4+Pj4+PiBPbiBGcmksIEp1bCAwNywgMjAxNyBhdCAw MjowMzozOFBNICswMjAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4+Pj4+Pj4gT24gVGh1LCBK dWwgMDYsIDIwMTcgYXQgMTE6MjQ6NDFQTSArMDMwMCwgdmlsbGUuc3lyamFsYUBsaW51eC5pbnRl bC5jb20gd3JvdGU6Cj4gPj4+Pj4+Pj4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJq YWxhQGxpbnV4LmludGVsLmNvbT4KPiA+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+IEZvciBpOTE1IEdQVSBy ZXNldCBoYW5kbGluZyB3ZSdsbCB3YW50IHRvIGJlIGFibGUgdG8gZHVwbGljYXRlIHRoZSBzdGF0 ZQo+ID4+Pj4+Pj4+IHRoYXQgd2FzIGxhc3QgY29tbWl0ZWQgdG8gdGhlIGhhcmR3YXJlLiBGb3Ig dGhhdCBwdXJwb3NlIGxldCdzIHN0YXJ0IHRvCj4gPj4+Pj4+Pj4gdHJhY2sgdGhlIGNvbW1pdGVk IHN0YXRlIGZvciBlYWNoIG9iamVjdCBhbmQgcHJvdmlkZSBhIHdheSB0byBkdXBsaWNhdGUKPiA+ Pj4+Pj4+PiB0aGUgY29tbW1pdGVkIHN0YXRlIGludG8gYSBuZXcgZHJtX2F0b21pY19zdGF0ZS4g VGhlIGxvY2tpbmcgZm9yCj4gPj4+Pj4+Pj4gLmNvbW1pdGVkX3N0YXRlIG11c3QgdG8gYmUgcHJv dmlkZWQgYnkgdGhlIGRyaXZlci4KPiA+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+IGRybV9hdG9taWNfaGVs cGVyX2R1cGxpY2F0ZV9jb21taXRlZF9zdGF0ZSgpIGR1cGxpY2F0ZXMgdGhlIHN0YXRlCj4gPj4+ Pj4+Pj4gdG8gYm90aCBvbGRfc3RhdGUgYW5kIG5ld19zdGF0ZS4gRm9yIHRoZSBwdXJwb3NlcyBv ZiBpOTE1IEdQVSByZXNldCB3ZQo+ID4+Pj4+Pj4+IHdvdWxkIG9ubHkgbmVlZCBvbmUgb2YgdGhl bSwgYnV0IHdlIGFjdHVhbGx5IG5lZWQgdHdvIHRvcCBsZXZlbCBzdGF0ZXM7Cj4gPj4+Pj4+Pj4g b25lIGZvciBkaXNhYmxpbmcgZXZlcnl0aGluZyAod2hpY2ggd291bGQgbmVlZCB0aGUgZHVwbGlj YXRlZCBzdGF0ZSB0bwo+ID4+Pj4+Pj4+IGJlIG9sZF9zdGF0ZSksIGFuZCBhbm90aGVyIHRvIHJl ZW5hYmxlIGV2ZXJ5dGhpbmcgKHdoaWNoIHdvdWxkIG5lZWQgdGhlCj4gPj4+Pj4+Pj4gZHVwbGlj YXRlZCBzdGF0ZSB0byBiZSBuZXdfc3RhdGUpLiBTbyB0byBtYWtlIGl0IGxlc3MgY29tcGxlcyBJ IGZpZ3VyZWQKPiA+Pj4+Pj4+PiBJJ2QganVzdCBhbHdheXMgZHVwbGljYXRlIGJvdGguIE1pZ2h0 IHdhbnQgdG8gcmV0aGluayB0aGlzIGlmIGZvciBubwo+ID4+Pj4+Pj4+IG90aGVyIHJlYXNvbiB0 aGF0IHJlZHVjaW5nIHRoZSBjaGFuY2VzIG9mIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUuCj4g Pj4+Pj4+Pj4gRHVlIHRvIHRoZSBkb3VibGUgc3RhdGUgZHVwbGljYXRpb24gd2UgbmVlZAo+ID4+ Pj4+Pj4+IGRybV9hdG9taWNfaGVscGVyX2NsZWFuX2NvbW1pdGVkX3N0YXRlKCkgdG8gY2xlYW4g dXAgdGhlIGR1cGxpY2F0ZWQKPiA+Pj4+Pj4+PiBvbGRfc3RhdGUgc2luY2UgdGhhdCdzIG5vdCBo YW5kbGVkIGJ5IHRoZSBub3JtYWwgZHJtX2F0b21pY19zdGF0ZQo+ID4+Pj4+Pj4+IGNsZWFudXAg Y29kZS4KPiA+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+IFRPRE86IGRvIHdlIHdhbnQgdGhpcyBpbiB0aGUg aGVscGVyLCBvciBtYXliZSBpdCBzaG91bGQgYmUganVzdCBpbiBpOTE1Pwo+ID4+Pj4+Pj4+Cj4g Pj4+Pj4+Pj4gdjI6IHMvY29tbWl0ZWQvY29tbWl0dGVkLyBldmVyeXdoZXJlIChjaGVja3BhdGNo KQo+ID4+Pj4+Pj4+ICAgICBIYW5kbGUgc3RhdGUgZHVwbGljYXRpb24gZXJyb3JzIGJldHRlcgo+ ID4+Pj4+Pj4+IHYzOiBFdmVuIG1vcmUgY2FyZSBpbiBkZWFsaW5nIHdpdGggbWVtb3J5IGFsbG9j YXRpb24gZXJyb3JzCj4gPj4+Pj4+Pj4gICAgIEhhbmRsZSBwcml2YXRlIG9ianMgdG9vCj4gPj4+ Pj4+Pj4gICAgIERlYWwgd2l0aCB0aGUgcG90ZW50aWFsIG9yZGVyaW5nIGlzc3VlcyBiZXR3ZWVu IHN3YXBfc3RhdGUoKQo+ID4+Pj4+Pj4+ICAgICBhbmQgaHdfZG9uZSgpIGJ5IGtlZXBpbmcgdHJh Y2sgb2Ygd2hpY2ggc3RhdGUgd2FzIHN3YXBwZWQgaW4KPiA+Pj4+Pj4+PiAgICAgbGFzdAo+ID4+ Pj4+Pj4+Cj4gPj4+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5z eXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+Pj4+Pj4+IEkgc3RpbGwgZG9uJ3QgZ2V0IHdoeSB3 ZSBuZWVkIHRvIGR1cGxpY2F0ZSB0aGUgY29tbWl0dGVkIHN0YXRlIGZvciBncHUKPiA+Pj4+Pj4+ IHJlc2V0LiBXaGVuIEkgc2FpZCBJJ20gbm90IGFnYWluc3QgYWRkaW5nIGFsbCB0aGF0IGNvbXBs ZXhpdHkgbG9uZy10ZXJtIEkKPiA+Pj4+Pj4+IG1lYW50IHdoZW4gd2UgYWN0dWFsbHkgcmVhbGx5 IG5lZWQgaXQuIEltbyBnNHggZ3B1IHJlc2V0IGlzbid0IGEgZ29vZAo+ID4+Pj4+Pj4ganVzdGlm aWNhdGlvbiBmb3IgdGhhdCwgcmV3b3JraW5nIHRoZSBhdG9taWMgd29ybGQgZm9yIHRoYXQgc2Vl bXMKPiA+Pj4+Pj4+IG1hc3NpdmVseSBvdXQgb2YgcHJvcG9ydGlvbi4KPiA+Pj4+Pj4gV2VsbCwg SSBzdGlsbCBkb24ndCBzZWUgd2hhdCdzIHNvICJtYXNzaXZlIiBhYm91dCBhIGNvdXBsZSBvZiBl eHRyYSBzdGF0ZQo+ID4+Pj4+PiBwb2ludGVycyBoYW5naW5nIGFyb3VuZC4KPiA+Pj4+Pj4KPiA+ Pj4+Pj4gQWxzbyB3aGlsZSBkb2luZyB0aGF0IHN0YXRlIGR1cGxpY2F0aW9uIHN0dWZmLCBteSBv bGQgaWRlYSBvZgo+ID4+Pj4+PiBzcGxpdHRpbmcgdGhlIGNydGMgZGlzYWJsZSBhbmQgZW5hYmxl IHBoYXNlcyBpbnRvIHNlcGFyYXRlIGF0b21pYwo+ID4+Pj4+PiBjb21taXRzIHBvcHBlZCB1cCBh Z2FpbiBpbiBteSBoZWFkLiBGb3IgdGhhdCBiZWluZyBhYmxlIHRvIGR1cGxpY2F0ZQo+ID4+Pj4+ PiBhcmJpdHJhcnkgc3RhdGVzIHdvdWxkIHNlZW0gbGlrZSBhIG5pY2UgdGhpbmcgdG8gaGF2ZS4g U28gdGhlCj4gPj4+Pj4+IHJlZmFjdG9yaW5nIEkgaGFkIHRvIGRvIGNhbiBoYXZlIG90aGVyIHVz ZXMuCj4gPj4+Pj4gSSBmdWxseSByZWFsaXplIHRoYXQgeW91J3JlIHVuaGFwcHkgd2l0aCBob3cg YXRvbWljIGVuZGVkIHVwIGdldHRpbmcKPiA+Pj4+PiBtZXJnZWQgYW5kIHRoYXQgeW91IHRoaW5r IGl0J3MgYSBncmF2ZSBtaXN0YWtlLiBBbmQgbWF5YmUgaXQgaXMsIG1heWJlCj4gPj4+Pj4gaXQg aXNuJ3QsIEkgaGF2ZSBubyBpZGVhLgo+ID4+Pj4gSSBkb24ndCB0aGluayBJIGV2ZXIgc2FpZCB0 aGF0LiBJJ3ZlIHNhaWQgdGhhdCBpdCBoYXMgY2VydGFpbiBkZXNpZ24KPiA+Pj4+IHByb2JsZW1z IHRoYXQgd2Ugb3VnaHQgdG8gZml4LiBUaGlzIG9uZSBiZWluZyBvbmUsIGFuZCBhbm90aGVyIGJl aW5nCj4gPj4+PiB0byBzZXBhcmF0ZSB0aGUgdXNlciBzdGF0ZSBmcm9tIHRoZSBpbnRlcm5hbCBz dGF0ZS4gVGhlIGxhdHRlciBJIHRoaW5rCj4gPj4+PiB3ZSdsbCBoYXZlIHRvIHRhY2tsZSByYXRo ZXIgc29vbiB0aGFua3MgdG8gc29tZSBuZXcgaGFyZHdhcmUgaW4gdGhlCj4gPj4+PiBwaXBlbGlu ZSwgb3Igd2UgbmVlZCB0byBjb21lIHVwIHdpdGggc29tZSBvdGhlciB3YXkgdG8gYWNoaWV2ZSB0 aGUKPiA+Pj4+IHNhbWUgZWZmZWN0Lgo+ID4+Pj4KPiA+Pj4+PiBCdXQgcmlnaHQgbm93IHdlIGhh dmUgX25vdGhpbmdfIGFza2luZyBmb3IKPiA+Pj4+PiB0aGF0IHJlb3JnIGFmYWlrLCBhbmQgdXNp bmcgZ2VuNCByZXNldCB0byBqdXN0aWZ5IGl0IGlzIGluIG15IG9waW5pb24KPiA+Pj4+PiBzaW1w bHkgbm90IHNvbGlkIGVuZ2luZWVyaW5nIHByYWN0aWNlLiBNYXliZSB3ZSBuZWVkIHRoaXMgaW4g dGhlCj4gPj4+Pj4gZnV0dXJlLCBhbmQgdGhlbiB3ZSBjYW4gYWRkIGl0LCBidXQgbm90IGJlZm9y ZS4gUmVmYWN0b3Jpbmcgc3R1ZmYgdG8KPiA+Pj4+PiBwcmV0dGlmeSB0aGUgYXJjaGl0ZWN0dXJl IGlzbid0IHJlYWxseSB1c2VmdWwgd29yay4KPiA+Pj4+IE5laXRoZXIgaXMgaGF2aW5nIHRvIHRo cm93IG91dCBjb2RlIHRoYXQgYWxyZWFkeSBleGlzdHMgYW5kIHdvcmtzLiBJZgo+ID4+Pj4geW91 J3JlIHNvIHdvcnJpZWQgYWJvdXQgdGltZSBiZWluZyB3YXN0ZWQgb24gcHJlLWc0eCBHUFUgcmVz ZXQsIHRoZW4KPiA+Pj4+IHdlIGNvdWxkIGp1c3QgYXMgd2VsbCBtZXJnZSBteSBjb2RlIGFuZCBt b3ZlIG9uIHRvIG1vcmUgcHJvZHVjdGl2ZQo+ID4+Pj4gZW5kZWF2b3JzLgo+ID4+PiBJJ20gd29y cmllZCBhYm91dCBmdXR1cmUgdGltZSB3YXN0ZWQgb24gdGhpcywgbm90IGN1cnJlbnQgdGltZS4K PiA+Pj4KPiA+Pj4+Pj4+IFdoeSBleGFjdGx5IGNhbid0IHdlIGRvIHRoaXMgc2ltcGxlcj8gSSBz dGlsbCBkb24ndCBnZXQgdGhhdCBwYXJ0LiBJcwo+ID4+Pj4+Pj4gdGhlcmUgcmVhbGx5IG5vIHNv bHV0aW9uIHRoYXQgZG9lc24ndCBicmVhayBhdG9taWMncyBjdXJyZW50IGFzc3VtcHRpb24KPiA+ Pj4+Pj4+IHRoYXQgY29tbWl0cyBhcmUgZnVsbHkgb3JkZXJlZCBvbiBhIGdpdmVuIGNydGM/Cj4g Pj4+Pj4+IEZyb20gdGhlIHBvaW50IG9mIHZpZXcgb2YgdGhlIG9sZCBhbmQgbmV3IHN0YXRlcyBp dCBkb2Vzbid0IGFjdHVhbGx5Cj4gPj4+Pj4+IGJyZWFrIHRoYXQuIFRoZSBjb21taXRzIGRvbmUg ZnJvbSB0aGUgcmVzZXQgcGF0aCBhcmUgZXNzZW50aWFsbHkKPiA+Pj4+Pj4gaW52aXNpYmxlIHRv IHRoZSBub3JtYWwgbW9kZXNldCBvcGVyYXRpb24uCj4gPj4+Pj4gWW91IGluc2VydCBzb21ldGhp bmcgaW50byBhIGZ1bGx5IG9yZGVyZWQgcXVldWUuIFRoYXQgZG9lcyBicmVhayB0aGUKPiA+Pj4+ PiBlbnRpcmUgY29uY2VwdCBhbmQgbmVlZHMgYSBwaWxlIG9mIGxvY2tzIGFuZCBzdHVmZiB0byBt YWtlIGl0IHdvcmsuCj4gPj4+PiBFeGFjdGx5IG9uZSBsb2NrLiBXZWxsIHR3byBpZiB5b3UgY291 bGQgdGhlIHNwaW5sb2NrIHRvIHByb3RlY3QgdGhlCj4gPj4+PiBjb21taXR0ZWRfc3RhdGUgcG9p bnRlciB1cGRhdGUgZnJvbSBwYXJhbGxlbCB1cGRhdGVzIHRvdWNoaW5nIHRoZSBzYW1lCj4gPj4+ PiBrbXMgb2JqZWN0LiBUaGF0IGxhdHRlciBvbmUgY291bGQgYmUgcmVtb3ZlZCBpZiBhdG9taWMg d291bGRuJ3QgYWxsb3cKPiA+Pj4+IHBhcmFsbGVsIGNvbW1pdHMgdG8gdG91Y2ggdGhlIHNhbWUg b2JqZWN0Lgo+ID4+Pj4KPiA+Pj4+PiBZZXMgaXQncyBkb2FibGUsIGJ1dCBpdCdzIGEgcmVkZXNp Z24gd2l0aCBhbGwgdGhlIGltcGxpY2F0aW9ucyBvZgo+ID4+Pj4+IHN1YnRsZSBicmVha2FnZSBh bGwgb3Zlci4KPiA+Pj4+IFdoYXQ/IEl0IGRvZXNuJ3QgcmVhbGx5IGV2ZW4gZG8gYW55dGhpbmcg dW5sZXNzIHlvdSBkbyB0aGUKPiA+Pj4+IGR1cGxpY2F0ZV9jb21taXR0ZWQgc3RhdGUoKS4gRXZl cnl0aGluZyBlbHNlIGlzIGp1c3QgYXNzaWduaW5nIHBvaW50ZXJzLgo+ID4+Pj4gU28gdW5sZXNz IHRoZXJlJ3Mgc29tZSByZWFsbHkgb2J2aW91cyBidWcgc29tZXdoZXJlIGl0IGNhbid0IGJyZWFr Cj4gPj4+PiBhbnl0aGluZyBvdXRzaWRlIHRoZSBHUFUgcmVzZXQgcGF0aC4gQW5kIHJlYWxseSB0 aGUgb25seSB3YXkgdG8gYnJlYWsKPiA+Pj4+IHRvIEdQVSByZXNldCBwYXRoIGlzIHRvIGhhdmUg YWN0dWFsIGJ1Z3MgaW4gdGhlIG5vcm1hbCBkaXNwbGF5IGNvbW1pdAo+ID4+Pj4gY29kZS4KPiA+ Pj4gSXQncyB0aGUgZ3B1IHJlc2V0IEknbSB3b3JyaWVkIGFib3V0LiBUaGVyZSdzIG5vIHBvaW50 IGluIGZpeGluZyBpdCBpZiBpdAo+ID4+PiBpbW1lZGlhdGVseSBicmVha3MgYWdhaW4uCj4gPj4+ Cj4gPj4+Pj4gV2hpbGUgd2UgZG8gaGF2ZSBvcGVuIGJ1Z3MgZm9yIHRoZSBjdXJyZW50Cj4gPj4+ Pj4gZGVzaWduLiBSZXdyaXRpbmcgdGhlIHdvcmxkIHRvIGZpeCBhIGJ1ZyBuZWVkcyBzZXJpb3Vz bHkgYmV0dGVyCj4gPj4+Pj4ganVzdGlmaWNhdGlvbiBpbW8uCj4gPj4+Pj4KPiA+Pj4+Pj4gVGhl IG9uZSBhbHRlcm5hdGl2ZSBwcm9wb3NlZCBpZGVhIG9mIGFsbG93aW5nIGdlbSBhbmQga21zIHNp ZGVzIGdvCj4gPj4+Pj4+IG91dCBvZiB3aGFjayBzY2FyZXMgbWUgYSBiaXQuIEkgdGhpbmsgdGhh dCBtaWdodCBsYW5kIHVzIGluIG1vcmUKPiA+Pj4+Pj4gdHJvdWJsZSB3aGVuIEkgZmluYWxseSBn ZXQgYXJvdW5kIHRvIG1ha2luZyB0aGUgdmlkZW8gb3ZlcmxheSBhCj4gPj4+Pj4+IGRybV9wbGFu ZS4KPiA+Pj4+PiBXZSd2ZSBydW4gcGVyZmVjdGx5IGZpbmUgd2l0aCB0aGlzIGlkZWEgZm9yIHll YXJzLgo+ID4+Pj4gTm90IHBlcmZlY3RseS4gSSd2ZSBoYWQgdG8gZml4IGl0IHNldmVyYWwgdGlt ZXMuIEFuZCBJIGRvbid0IHRoaW5rIEkgd2FzCj4gPj4+PiB0aGUgb25seSBvbmUuCj4gPj4+IFRo ZSBwcm9ibGVtIGlzIHRoYXQgbm8gb25lIHRlc3RzIGFnYWluc3QgZ2VuNCwgYW5kIGV2ZXJ5b25l IGZvcmdldHMgdGhhdAo+ID4+PiBpdCBleGlzdHMuIFRoYXQncyB3aHkgSSdkIGxpa2Ugc29tZXRo aW5nIHdpdGggdGhlIG1pbmltYWwgYW1vdW50IG9mCj4gPj4+IGludmFzaXZlbmVzcywgc2luY2Ug dGhhdCB3b3VsZCBhdCBsZWFzdCBiZSBlYXNpZXIgdG8gcGF0Y2ggdXAgd2hlbiB3ZQo+ID4+PiBp bmV2aXRhYmx5IGJyZWFrIGl0LiBBbHNvLCBzb21ldGhpbmcgZW50aXJlbHkgY29udGFpbmVkIHRv IGk5MTUKPiA+Pj4gY29uY2VwdHVhbGx5LCB3aXRob3V0IGltcG9zaW5nIG1vcmUgcmVzdHJpY3Rp b25zIG9uIHNoYXJlZCBjb2RlLgo+ID4+Pj4+PiBBbmQgSSB0aGluayB0cnlpbmcgdG8ga2VlcCB0 aGUgR1BVIHJlc2V0IHBhdGhzIGFzIHNpbWlsYXIgYXMgcG9zc2libGUKPiA+Pj4+Pj4gYmV0d2Vl biBhbGwgdGhlIHBsYXRmb3JtcyB3b3VsZCBiZSBhIG5pY2UgdGhpbmcuIEp1c3Qgd2hhY2tpbmcK PiA+Pj4+Pj4gZXZlcnl0aGluZyBvbiB0aGUgaGVhZCB3aXRoIGEgaGFtbWVyIG9uIG9uZSBwbGF0 Zm9ybSBidXQgbm90IG9uCj4gPj4+Pj4+IGFub3RoZXIgb25lIHNlZW1zIHRvIG1lIGxpa2UgZXh0 cmEgdmFyaWF0aW9uIGluIGJlaGF2aW91ciB0aGF0IHdlCj4gPj4+Pj4+IGRvbid0IG5lY2Vzc2Fy aWx5IHdhbnQuCj4gPj4+Pj4+Cj4gPj4+Pj4+IEJ1dCBsaWtlIEkgc2FpZCwgaWYgc29tZW9uZSBj YW4gY29tZSB1cCB3aXRoIGEgYmV0dGVyIHNvbHV0aW9uIEkKPiA+Pj4+Pj4gcHJvYmFibHkgd291 bGRuJ3Qgb2JqZWN0IHRvbyBtdWNoLiBJdCdzIG5vdCBnb2luZyB0byBiZSBjb21pbmcgZnJvbSBt ZQo+ID4+Pj4+PiB0aG91Z2ggc2luY2UgSSBoYXZlIHBsZW50eSBvZiBvdGhlciB0aGluZ3MgdG8g ZG8gYW5kIHZhY2F0aW9uIHRpbWUgaXMKPiA+Pj4+Pj4gY29taW5nIHVwIHZlcnkgc29vbi4gU28g dW5sZXNzIHNvbWVvbmUgZWxzZSBjb21lcyB1cCB3aXRoIHNvbWV0aGluZyBuaWNlCj4gPj4+Pj4+ IHNvb24gSSB0aGluayB3ZSBzaG91bGQganVzdCBnbyB3aXRoIG15IHNvbHV0aW9uIGJlY2F1c2Ug YSkgaXQncyBhbHJlYWR5Cj4gPj4+Pj4+IGF2YWlsYWJsZSwgYW5kIGIpIHdvcmtzIHF1aXRlIGRl Y2VudGx5IGZyb20gd2hhdCBJIGNhbiBzZWUuCj4gPj4+Pj4gSSBndWVzcyBJJ2xsIGhhdmUgdG8g cmV0eXBlIHRoZSBvbGQgdGhpbmcgaW4gdGhlIG5ldyB3b3JsZCwgYnV0IGl0Cj4gPj4+Pj4gcmVh bGx5IHNob3VsZG4ndCBiZSBtb3JlIHRoYW4gdGhlIHF1aWNrIGRyYWZ0IEkndmUgbGFpZCBkb3du IGluIHRoZQo+ID4+Pj4+IG9sZCB0aHJlYWQuIFRoaXMgaGVyZSBpcyBpbW8gbm8tZ28gd2l0aCBh bGwgdGhlIGNvcmUgY2hhbmdlcywgYW5kIGV2ZW4KPiA+Pj4+PiBqdXN0IGRvbmUgd2l0aGluIGk5 MTUgSSB0aGluayBpdCdzIGhpZ2hseSBkdWJpb3VzIHRoYXQgaXQgcHJvdmlkZXMgYQo+ID4+Pj4+ IHJlYWwgYmVuZWZpdCwgc2luY2UgZGVmYWN0byBpdCBtZWFucyB3ZSdsbCBoYXZlIHRvIGFiYW5k b24gdGhlIGF0b21pYwo+ID4+Pj4+IGhlbHBlcnMgZW50aXJlbHkuCj4gPj4+PiBOb3cgSSB0aGlu ayB5b3UncmUganVzdCBiZWluZyBkaWZmaWN1bHQgZm9yIHRoZSBzYWtlIG9mIGl0LiBIYXZlIHlv dQo+ID4+Pj4gbG9va2VkIGF0IHRoZSBjb2RlIGF0IGFsbD8gSXQncyBmdWxseSBkb25lIGZyb20g dGhlIGF0b21pYyBoZWxwZXJzCj4gPj4+PiByaWdodCBub3cuIEFuZCBldmVuIG1vdmluZyB0aGUg Y29tbWl0dGVkIHN0YXRlIHRyYWNraW5nIHRvIGk5MTUKPiA+Pj4+IHdvdWxkbid0IHJlcXVpcmUg YWJhbmRvbmluZyB0aGUgaGVscGVycy4gV2UgY291bGQganVzdCB1cGRhdGUgdGhlCj4gPj4+PiBj b21taXR0ZWQgc3RhdGUgcG9pbnRlcnMgd2hlbiB3ZSBjYWxsIGh3X2RvbmUoKSwgYW5kIHdlJ2Qg aGF2ZSB0bwo+ID4+Pj4gdXBkYXRlIHRoZSBzdGF0ZSBzZXFuby9hZ2UgdGltZXN0YW1wIHdoZW4g d2UgY2FsbCBzd2FwX3N0YXRlKCkuCj4gPj4+PiBUaGF0J3MgYWxsIHRoZXJlIGlzIHRvIHRoaXMu Cj4gPj4+IEknbSBjb25jZXJuZWQgd2l0aCB0aGUgbWFpbnRhaW5lbmFjZSBidXJkZW4geW91IGlt cG9zZSBvbiBhbGwgZnV0dXJlIGk5MTUKPiA+Pj4gYXRvbWljIHdvcmssIHRoYXQncyBhbGwuIFll cyBpdCBsb29rcyBzaW1wbGUgdG8geW91IGFuZCByaWdodCBub3csIGJ1dAo+ID4+PiBpdCdzIGFu b3RoZXIgbGl0dGxlIHRoaW5nIHRvIGtlZXAgd29ya2luZywgYW5kIHdlJ3JlIHJlYWxseSBnb29k IGF0Cj4gPj4+IGJyZWFraW5nIHN0dWZmIGFsbCB0aGUgdGltZS4KPiA+Pj4KPiA+Pj4gQnV0IGlm IHlvdSBzdHJvbmdseSB0aGluayB0aGlzIGlzIHRoZSBiZXN0IHBvc3NpYmxlIGFwcHJvYWNoIG92 ZXJhbGwsCj4gPj4+IHRha2luZyBpbnRvIGFjY291bnQgbG9uZy10ZXJtIGltcGFjdCwgdGhlbiBn byBhaGVhZCB3aXRoIGltcGxlbWVudGluZyB0aGlzCj4gPj4+IGluIGk5MTUuIEFkZGluZyBpdCB0 aGUgY29uY2VwdCBvZiBhIGNvbW1pdHRlZCBzdGF0ZSBhbmQgYmVpbmcgYWJsZSB0bwo+ID4+PiBk dXBsaWNhdGUgdGhhdCBhbmQgc3F1ZWV6ZSBhbm90aGVyIGNvbW1pdCBpbiB0byB0aGUgc2hhcmVk IGF0b21pYyBoZWxwZXJzCj4gPj4+IGRvZXNuJ3QgbWFrZSBzZW5zZSBpbW8uCj4gPj4+IC1EYW5p ZWwKPiA+PiBJIHRoaW5rIHRoZSBwcm9ibGVtIGlzIGFib3V0IHN0cnVjdF9tdXRleCB1c2FnZSBi eSBhdG9taWMgY29tbWl0IGR1cmluZyByZXNldC4KPiA+PiBHUFUgcmVzZXQgaGFzIHRvIHdhaXQg Zm9yIGFsbCBwcmV2aW91cyBhdG9taWMgdXBkYXRlcyB0byBjb21wbGV0ZSwgYnV0Cj4gPj4gY2xl YW51cF9wbGFuZXMgYW5kIHByZXBhcmVfcGxhbmVfZmIgYm90aCByZXF1aXJlIHN0cnVjdF9tdXRl eCwgd2hpY2ggY2FuIGxlYWQKPiA+PiB0byBhIGRlYWRsb2NrLiAjOTkwOTMKPiA+IFRoZSBkZWFk bG9ja3MgSSd2ZSBzZWVuIHJlY2VudGx5IGRpZG4ndCBuZWNlc3NhcmlseSBpbnZvbHZlCj4gPiBz dHJ1Y3RfbXV0ZXggSUlSQy4gSnVzdCB0aGUgbW9kZXNldCBsb2Nrcy4KPiA+Cj4gPj4gVGhlIHJl YWwgZml4IGlzIG5vdCB0YWtpbmcgc3RydWN0X211dGV4IGR1cmluZyBhdG9taWMgY29tbWl0LCB3 aGljaCB3aWxsIG1lYW4KPiA+PiBubyBkZWFkbG9jayBjYW4gaGFwcGVuLgo+ID4+Cj4gPj4gSXMg dGhpcyB0aGUgYnVnIGJlaW5nIGZpeGVkIGhlcmUgb3IgYW0gSSBtaXNzaW5nIHNvbWV0aGluZz8K PiA+IFRoaXMgd291bGQgYXZvaWQgYm90aCBzdHJ1Y3RfbXV0ZXggYW5kIG1vZGVzZXQgbG9ja3Mg aW4gdGhlIGRpc3BsYXkKPiA+IHJlc2V0IHBhdGgsIHNvIEkgZ3Vlc3MgaXQgc2hvdWxkIGhlbHAg d2l0aCBzdHJ1Y3RfbXV0ZXggaXNzdWVzCj4gPiBhcyB3ZWxsLgo+ID4KPiBJIHRoaW5rIGZpeGlu ZyBpOTE1IHRvIG5vdCByZXF1aXJlIHN0cnVjdF9tdXRleCBmb3Igdm1hIHBpbm5pbmcvdW5waW5u aW5nIHdpbGwgYmUgYSBiZXR0ZXIgdXNlIG9mIG91ciB0aW1lLCBhbmQgaXQgc2hvdWxkIGFsc28g Zml4IGFsbCBkZWFkbG9ja3MuIDopCgpJdCB3b24ndCBoZWxwIHdpdGggdGhlIG1vZGVzZXQgbG9j a3MuCgo+IAo+IEFuZCBpdCdzIGZhciBiZXR0ZXIgdGhhbiBkdXBsaWNhdGluZyBkcm1fYXRvbWlj X2NvbW1pdCBmdW5jdGlvbmFsaXR5IGluIG91ciByZXNldCBoYW5kbGVycy4KCldlbGwgSSdtIG5v dCBhY3R1YWxseSBkdXBsaWNhdGluZyBhbnl0aGluZy4gSnVzdCByZXVzaW5nIHdoYXQncwphbHJl YWR5IHRoZXJlLiBXZSBqdXN0IHNraXAgYWxsIHRoZSB1c2VsZXNzIHN0dWZmIGFuZCB0aGF0IGFs bG93cwp1cyB0byBza2lwIHRoZSBsb2NraW5nIHdoaWNoIGlzIHdoZXJlIGFsbCB0aGUgcHJvYmxl bXMgaGF2ZSBiZWVuCnVwIHRvIG5vdy4KCkFuZCBpdCBtZWFucyB3ZSB3b24ndCBhbGxvdyBnZW0g YW5kIGttcyB0byBnZXQgdG90YWxseSBvdXQgb2Ygc3luYywKd2hpY2ggSSB0aGluayB3aWxsIGJl IGEgZ29vZCB0aGluZyBmb3Igc3R1ZmYgbGlrZSB0aGUgdmlkZW8Kb3ZlcmxheSB3aGljaCBzdHJh ZGRsZXMgYm90aCB3b3JsZHMuCgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsIE9UQwpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK