From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v3 21/22] drm/atomic: Introduce drm_atomic_helper_duplicate_commited_state() Date: Mon, 10 Jul 2017 15:18:46 +0300 Message-ID: <20170710121846.GJ12629@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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <5067393b-eb95-de0f-5fb9-c66717eacec7@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst Cc: intel-gfx , dri-devel List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBKdWwgMTAsIDIwMTcgYXQgMTE6MzE6NTVBTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gT3AgMTAtMDctMTcgb20gMDg6NDMgc2NocmVlZiBEYW5pZWwgVmV0dGVyOgo+ ID4gT24gRnJpLCBKdWwgMDcsIDIwMTcgYXQgMDY6MTg6MTJQTSArMDMwMCwgVmlsbGUgU3lyasOk bMOkIHdyb3RlOgo+ID4+IE9uIEZyaSwgSnVsIDA3LCAyMDE3IGF0IDA0OjA1OjI4UE0gKzAyMDAs IERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gPj4+IE9uIEZyaSwgSnVsIDcsIDIwMTcgYXQgMzoyMSBQ TSwgVmlsbGUgU3lyasOkbMOkCj4gPj4+IDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4g d3JvdGU6Cj4gPj4+PiBPbiBGcmksIEp1bCAwNywgMjAxNyBhdCAwMjowMzozOFBNICswMjAwLCBE YW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4+Pj4+IE9uIFRodSwgSnVsIDA2LCAyMDE3IGF0IDExOjI0 OjQxUE0gKzAzMDAsIHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tIHdyb3RlOgo+ID4+Pj4+ PiBGcm9tOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+ ID4+Pj4+Pgo+ID4+Pj4+PiBGb3IgaTkxNSBHUFUgcmVzZXQgaGFuZGxpbmcgd2UnbGwgd2FudCB0 byBiZSBhYmxlIHRvIGR1cGxpY2F0ZSB0aGUgc3RhdGUKPiA+Pj4+Pj4gdGhhdCB3YXMgbGFzdCBj b21taXRlZCB0byB0aGUgaGFyZHdhcmUuIEZvciB0aGF0IHB1cnBvc2UgbGV0J3Mgc3RhcnQgdG8K PiA+Pj4+Pj4gdHJhY2sgdGhlIGNvbW1pdGVkIHN0YXRlIGZvciBlYWNoIG9iamVjdCBhbmQgcHJv dmlkZSBhIHdheSB0byBkdXBsaWNhdGUKPiA+Pj4+Pj4gdGhlIGNvbW1taXRlZCBzdGF0ZSBpbnRv IGEgbmV3IGRybV9hdG9taWNfc3RhdGUuIFRoZSBsb2NraW5nIGZvcgo+ID4+Pj4+PiAuY29tbWl0 ZWRfc3RhdGUgbXVzdCB0byBiZSBwcm92aWRlZCBieSB0aGUgZHJpdmVyLgo+ID4+Pj4+Pgo+ID4+ Pj4+PiBkcm1fYXRvbWljX2hlbHBlcl9kdXBsaWNhdGVfY29tbWl0ZWRfc3RhdGUoKSBkdXBsaWNh dGVzIHRoZSBzdGF0ZQo+ID4+Pj4+PiB0byBib3RoIG9sZF9zdGF0ZSBhbmQgbmV3X3N0YXRlLiBG b3IgdGhlIHB1cnBvc2VzIG9mIGk5MTUgR1BVIHJlc2V0IHdlCj4gPj4+Pj4+IHdvdWxkIG9ubHkg bmVlZCBvbmUgb2YgdGhlbSwgYnV0IHdlIGFjdHVhbGx5IG5lZWQgdHdvIHRvcCBsZXZlbCBzdGF0 ZXM7Cj4gPj4+Pj4+IG9uZSBmb3IgZGlzYWJsaW5nIGV2ZXJ5dGhpbmcgKHdoaWNoIHdvdWxkIG5l ZWQgdGhlIGR1cGxpY2F0ZWQgc3RhdGUgdG8KPiA+Pj4+Pj4gYmUgb2xkX3N0YXRlKSwgYW5kIGFu b3RoZXIgdG8gcmVlbmFibGUgZXZlcnl0aGluZyAod2hpY2ggd291bGQgbmVlZCB0aGUKPiA+Pj4+ Pj4gZHVwbGljYXRlZCBzdGF0ZSB0byBiZSBuZXdfc3RhdGUpLiBTbyB0byBtYWtlIGl0IGxlc3Mg Y29tcGxlcyBJIGZpZ3VyZWQKPiA+Pj4+Pj4gSSdkIGp1c3QgYWx3YXlzIGR1cGxpY2F0ZSBib3Ro LiBNaWdodCB3YW50IHRvIHJldGhpbmsgdGhpcyBpZiBmb3Igbm8KPiA+Pj4+Pj4gb3RoZXIgcmVh c29uIHRoYXQgcmVkdWNpbmcgdGhlIGNoYW5jZXMgb2YgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVy ZS4KPiA+Pj4+Pj4gRHVlIHRvIHRoZSBkb3VibGUgc3RhdGUgZHVwbGljYXRpb24gd2UgbmVlZAo+ ID4+Pj4+PiBkcm1fYXRvbWljX2hlbHBlcl9jbGVhbl9jb21taXRlZF9zdGF0ZSgpIHRvIGNsZWFu IHVwIHRoZSBkdXBsaWNhdGVkCj4gPj4+Pj4+IG9sZF9zdGF0ZSBzaW5jZSB0aGF0J3Mgbm90IGhh bmRsZWQgYnkgdGhlIG5vcm1hbCBkcm1fYXRvbWljX3N0YXRlCj4gPj4+Pj4+IGNsZWFudXAgY29k ZS4KPiA+Pj4+Pj4KPiA+Pj4+Pj4gVE9ETzogZG8gd2Ugd2FudCB0aGlzIGluIHRoZSBoZWxwZXIs IG9yIG1heWJlIGl0IHNob3VsZCBiZSBqdXN0IGluIGk5MTU/Cj4gPj4+Pj4+Cj4gPj4+Pj4+IHYy OiBzL2NvbW1pdGVkL2NvbW1pdHRlZC8gZXZlcnl3aGVyZSAoY2hlY2twYXRjaCkKPiA+Pj4+Pj4g ICAgIEhhbmRsZSBzdGF0ZSBkdXBsaWNhdGlvbiBlcnJvcnMgYmV0dGVyCj4gPj4+Pj4+IHYzOiBF dmVuIG1vcmUgY2FyZSBpbiBkZWFsaW5nIHdpdGggbWVtb3J5IGFsbG9jYXRpb24gZXJyb3JzCj4g Pj4+Pj4+ICAgICBIYW5kbGUgcHJpdmF0ZSBvYmpzIHRvbwo+ID4+Pj4+PiAgICAgRGVhbCB3aXRo IHRoZSBwb3RlbnRpYWwgb3JkZXJpbmcgaXNzdWVzIGJldHdlZW4gc3dhcF9zdGF0ZSgpCj4gPj4+ Pj4+ICAgICBhbmQgaHdfZG9uZSgpIGJ5IGtlZXBpbmcgdHJhY2sgb2Ygd2hpY2ggc3RhdGUgd2Fz IHN3YXBwZWQgaW4KPiA+Pj4+Pj4gICAgIGxhc3QKPiA+Pj4+Pj4KPiA+Pj4+Pj4gU2lnbmVkLW9m Zi1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+ Pj4+PiBJIHN0aWxsIGRvbid0IGdldCB3aHkgd2UgbmVlZCB0byBkdXBsaWNhdGUgdGhlIGNvbW1p dHRlZCBzdGF0ZSBmb3IgZ3B1Cj4gPj4+Pj4gcmVzZXQuIFdoZW4gSSBzYWlkIEknbSBub3QgYWdh aW5zdCBhZGRpbmcgYWxsIHRoYXQgY29tcGxleGl0eSBsb25nLXRlcm0gSQo+ID4+Pj4+IG1lYW50 IHdoZW4gd2UgYWN0dWFsbHkgcmVhbGx5IG5lZWQgaXQuIEltbyBnNHggZ3B1IHJlc2V0IGlzbid0 IGEgZ29vZAo+ID4+Pj4+IGp1c3RpZmljYXRpb24gZm9yIHRoYXQsIHJld29ya2luZyB0aGUgYXRv bWljIHdvcmxkIGZvciB0aGF0IHNlZW1zCj4gPj4+Pj4gbWFzc2l2ZWx5IG91dCBvZiBwcm9wb3J0 aW9uLgo+ID4+Pj4gV2VsbCwgSSBzdGlsbCBkb24ndCBzZWUgd2hhdCdzIHNvICJtYXNzaXZlIiBh Ym91dCBhIGNvdXBsZSBvZiBleHRyYSBzdGF0ZQo+ID4+Pj4gcG9pbnRlcnMgaGFuZ2luZyBhcm91 bmQuCj4gPj4+Pgo+ID4+Pj4gQWxzbyB3aGlsZSBkb2luZyB0aGF0IHN0YXRlIGR1cGxpY2F0aW9u IHN0dWZmLCBteSBvbGQgaWRlYSBvZgo+ID4+Pj4gc3BsaXR0aW5nIHRoZSBjcnRjIGRpc2FibGUg YW5kIGVuYWJsZSBwaGFzZXMgaW50byBzZXBhcmF0ZSBhdG9taWMKPiA+Pj4+IGNvbW1pdHMgcG9w cGVkIHVwIGFnYWluIGluIG15IGhlYWQuIEZvciB0aGF0IGJlaW5nIGFibGUgdG8gZHVwbGljYXRl Cj4gPj4+PiBhcmJpdHJhcnkgc3RhdGVzIHdvdWxkIHNlZW0gbGlrZSBhIG5pY2UgdGhpbmcgdG8g aGF2ZS4gU28gdGhlCj4gPj4+PiByZWZhY3RvcmluZyBJIGhhZCB0byBkbyBjYW4gaGF2ZSBvdGhl ciB1c2VzLgo+ID4+PiBJIGZ1bGx5IHJlYWxpemUgdGhhdCB5b3UncmUgdW5oYXBweSB3aXRoIGhv dyBhdG9taWMgZW5kZWQgdXAgZ2V0dGluZwo+ID4+PiBtZXJnZWQgYW5kIHRoYXQgeW91IHRoaW5r IGl0J3MgYSBncmF2ZSBtaXN0YWtlLiBBbmQgbWF5YmUgaXQgaXMsIG1heWJlCj4gPj4+IGl0IGlz bid0LCBJIGhhdmUgbm8gaWRlYS4KPiA+PiBJIGRvbid0IHRoaW5rIEkgZXZlciBzYWlkIHRoYXQu IEkndmUgc2FpZCB0aGF0IGl0IGhhcyBjZXJ0YWluIGRlc2lnbgo+ID4+IHByb2JsZW1zIHRoYXQg d2Ugb3VnaHQgdG8gZml4LiBUaGlzIG9uZSBiZWluZyBvbmUsIGFuZCBhbm90aGVyIGJlaW5nCj4g Pj4gdG8gc2VwYXJhdGUgdGhlIHVzZXIgc3RhdGUgZnJvbSB0aGUgaW50ZXJuYWwgc3RhdGUuIFRo ZSBsYXR0ZXIgSSB0aGluawo+ID4+IHdlJ2xsIGhhdmUgdG8gdGFja2xlIHJhdGhlciBzb29uIHRo YW5rcyB0byBzb21lIG5ldyBoYXJkd2FyZSBpbiB0aGUKPiA+PiBwaXBlbGluZSwgb3Igd2UgbmVl ZCB0byBjb21lIHVwIHdpdGggc29tZSBvdGhlciB3YXkgdG8gYWNoaWV2ZSB0aGUKPiA+PiBzYW1l IGVmZmVjdC4KPiA+Pgo+ID4+PiBCdXQgcmlnaHQgbm93IHdlIGhhdmUgX25vdGhpbmdfIGFza2lu ZyBmb3IKPiA+Pj4gdGhhdCByZW9yZyBhZmFpaywgYW5kIHVzaW5nIGdlbjQgcmVzZXQgdG8ganVz dGlmeSBpdCBpcyBpbiBteSBvcGluaW9uCj4gPj4+IHNpbXBseSBub3Qgc29saWQgZW5naW5lZXJp bmcgcHJhY3RpY2UuIE1heWJlIHdlIG5lZWQgdGhpcyBpbiB0aGUKPiA+Pj4gZnV0dXJlLCBhbmQg dGhlbiB3ZSBjYW4gYWRkIGl0LCBidXQgbm90IGJlZm9yZS4gUmVmYWN0b3Jpbmcgc3R1ZmYgdG8K PiA+Pj4gcHJldHRpZnkgdGhlIGFyY2hpdGVjdHVyZSBpc24ndCByZWFsbHkgdXNlZnVsIHdvcmsu Cj4gPj4gTmVpdGhlciBpcyBoYXZpbmcgdG8gdGhyb3cgb3V0IGNvZGUgdGhhdCBhbHJlYWR5IGV4 aXN0cyBhbmQgd29ya3MuIElmCj4gPj4geW91J3JlIHNvIHdvcnJpZWQgYWJvdXQgdGltZSBiZWlu ZyB3YXN0ZWQgb24gcHJlLWc0eCBHUFUgcmVzZXQsIHRoZW4KPiA+PiB3ZSBjb3VsZCBqdXN0IGFz IHdlbGwgbWVyZ2UgbXkgY29kZSBhbmQgbW92ZSBvbiB0byBtb3JlIHByb2R1Y3RpdmUKPiA+PiBl bmRlYXZvcnMuCj4gPiBJJ20gd29ycmllZCBhYm91dCBmdXR1cmUgdGltZSB3YXN0ZWQgb24gdGhp cywgbm90IGN1cnJlbnQgdGltZS4KPiA+Cj4gPj4+Pj4gV2h5IGV4YWN0bHkgY2FuJ3Qgd2UgZG8g dGhpcyBzaW1wbGVyPyBJIHN0aWxsIGRvbid0IGdldCB0aGF0IHBhcnQuIElzCj4gPj4+Pj4gdGhl cmUgcmVhbGx5IG5vIHNvbHV0aW9uIHRoYXQgZG9lc24ndCBicmVhayBhdG9taWMncyBjdXJyZW50 IGFzc3VtcHRpb24KPiA+Pj4+PiB0aGF0IGNvbW1pdHMgYXJlIGZ1bGx5IG9yZGVyZWQgb24gYSBn aXZlbiBjcnRjPwo+ID4+Pj4gRnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZiB0aGUgb2xkIGFuZCBu ZXcgc3RhdGVzIGl0IGRvZXNuJ3QgYWN0dWFsbHkKPiA+Pj4+IGJyZWFrIHRoYXQuIFRoZSBjb21t aXRzIGRvbmUgZnJvbSB0aGUgcmVzZXQgcGF0aCBhcmUgZXNzZW50aWFsbHkKPiA+Pj4+IGludmlz aWJsZSB0byB0aGUgbm9ybWFsIG1vZGVzZXQgb3BlcmF0aW9uLgo+ID4+PiBZb3UgaW5zZXJ0IHNv bWV0aGluZyBpbnRvIGEgZnVsbHkgb3JkZXJlZCBxdWV1ZS4gVGhhdCBkb2VzIGJyZWFrIHRoZQo+ ID4+PiBlbnRpcmUgY29uY2VwdCBhbmQgbmVlZHMgYSBwaWxlIG9mIGxvY2tzIGFuZCBzdHVmZiB0 byBtYWtlIGl0IHdvcmsuCj4gPj4gRXhhY3RseSBvbmUgbG9jay4gV2VsbCB0d28gaWYgeW91IGNv dWxkIHRoZSBzcGlubG9jayB0byBwcm90ZWN0IHRoZQo+ID4+IGNvbW1pdHRlZF9zdGF0ZSBwb2lu dGVyIHVwZGF0ZSBmcm9tIHBhcmFsbGVsIHVwZGF0ZXMgdG91Y2hpbmcgdGhlIHNhbWUKPiA+PiBr bXMgb2JqZWN0LiBUaGF0IGxhdHRlciBvbmUgY291bGQgYmUgcmVtb3ZlZCBpZiBhdG9taWMgd291 bGRuJ3QgYWxsb3cKPiA+PiBwYXJhbGxlbCBjb21taXRzIHRvIHRvdWNoIHRoZSBzYW1lIG9iamVj dC4KPiA+Pgo+ID4+PiBZZXMgaXQncyBkb2FibGUsIGJ1dCBpdCdzIGEgcmVkZXNpZ24gd2l0aCBh bGwgdGhlIGltcGxpY2F0aW9ucyBvZgo+ID4+PiBzdWJ0bGUgYnJlYWthZ2UgYWxsIG92ZXIuCj4g Pj4gV2hhdD8gSXQgZG9lc24ndCByZWFsbHkgZXZlbiBkbyBhbnl0aGluZyB1bmxlc3MgeW91IGRv IHRoZQo+ID4+IGR1cGxpY2F0ZV9jb21taXR0ZWQgc3RhdGUoKS4gRXZlcnl0aGluZyBlbHNlIGlz IGp1c3QgYXNzaWduaW5nIHBvaW50ZXJzLgo+ID4+IFNvIHVubGVzcyB0aGVyZSdzIHNvbWUgcmVh bGx5IG9idmlvdXMgYnVnIHNvbWV3aGVyZSBpdCBjYW4ndCBicmVhawo+ID4+IGFueXRoaW5nIG91 dHNpZGUgdGhlIEdQVSByZXNldCBwYXRoLiBBbmQgcmVhbGx5IHRoZSBvbmx5IHdheSB0byBicmVh awo+ID4+IHRvIEdQVSByZXNldCBwYXRoIGlzIHRvIGhhdmUgYWN0dWFsIGJ1Z3MgaW4gdGhlIG5v cm1hbCBkaXNwbGF5IGNvbW1pdAo+ID4+IGNvZGUuCj4gPiBJdCdzIHRoZSBncHUgcmVzZXQgSSdt IHdvcnJpZWQgYWJvdXQuIFRoZXJlJ3Mgbm8gcG9pbnQgaW4gZml4aW5nIGl0IGlmIGl0Cj4gPiBp bW1lZGlhdGVseSBicmVha3MgYWdhaW4uCj4gPgo+ID4+PiBXaGlsZSB3ZSBkbyBoYXZlIG9wZW4g YnVncyBmb3IgdGhlIGN1cnJlbnQKPiA+Pj4gZGVzaWduLiBSZXdyaXRpbmcgdGhlIHdvcmxkIHRv IGZpeCBhIGJ1ZyBuZWVkcyBzZXJpb3VzbHkgYmV0dGVyCj4gPj4+IGp1c3RpZmljYXRpb24gaW1v Lgo+ID4+Pgo+ID4+Pj4gVGhlIG9uZSBhbHRlcm5hdGl2ZSBwcm9wb3NlZCBpZGVhIG9mIGFsbG93 aW5nIGdlbSBhbmQga21zIHNpZGVzIGdvCj4gPj4+PiBvdXQgb2Ygd2hhY2sgc2NhcmVzIG1lIGEg Yml0LiBJIHRoaW5rIHRoYXQgbWlnaHQgbGFuZCB1cyBpbiBtb3JlCj4gPj4+PiB0cm91YmxlIHdo ZW4gSSBmaW5hbGx5IGdldCBhcm91bmQgdG8gbWFraW5nIHRoZSB2aWRlbyBvdmVybGF5IGEKPiA+ Pj4+IGRybV9wbGFuZS4KPiA+Pj4gV2UndmUgcnVuIHBlcmZlY3RseSBmaW5lIHdpdGggdGhpcyBp ZGVhIGZvciB5ZWFycy4KPiA+PiBOb3QgcGVyZmVjdGx5LiBJJ3ZlIGhhZCB0byBmaXggaXQgc2V2 ZXJhbCB0aW1lcy4gQW5kIEkgZG9uJ3QgdGhpbmsgSSB3YXMKPiA+PiB0aGUgb25seSBvbmUuCj4g PiBUaGUgcHJvYmxlbSBpcyB0aGF0IG5vIG9uZSB0ZXN0cyBhZ2FpbnN0IGdlbjQsIGFuZCBldmVy eW9uZSBmb3JnZXRzIHRoYXQKPiA+IGl0IGV4aXN0cy4gVGhhdCdzIHdoeSBJJ2QgbGlrZSBzb21l dGhpbmcgd2l0aCB0aGUgbWluaW1hbCBhbW91bnQgb2YKPiA+IGludmFzaXZlbmVzcywgc2luY2Ug dGhhdCB3b3VsZCBhdCBsZWFzdCBiZSBlYXNpZXIgdG8gcGF0Y2ggdXAgd2hlbiB3ZQo+ID4gaW5l dml0YWJseSBicmVhayBpdC4gQWxzbywgc29tZXRoaW5nIGVudGlyZWx5IGNvbnRhaW5lZCB0byBp OTE1Cj4gPiBjb25jZXB0dWFsbHksIHdpdGhvdXQgaW1wb3NpbmcgbW9yZSByZXN0cmljdGlvbnMg b24gc2hhcmVkIGNvZGUuCj4gPj4+PiBBbmQgSSB0aGluayB0cnlpbmcgdG8ga2VlcCB0aGUgR1BV IHJlc2V0IHBhdGhzIGFzIHNpbWlsYXIgYXMgcG9zc2libGUKPiA+Pj4+IGJldHdlZW4gYWxsIHRo ZSBwbGF0Zm9ybXMgd291bGQgYmUgYSBuaWNlIHRoaW5nLiBKdXN0IHdoYWNraW5nCj4gPj4+PiBl dmVyeXRoaW5nIG9uIHRoZSBoZWFkIHdpdGggYSBoYW1tZXIgb24gb25lIHBsYXRmb3JtIGJ1dCBu b3Qgb24KPiA+Pj4+IGFub3RoZXIgb25lIHNlZW1zIHRvIG1lIGxpa2UgZXh0cmEgdmFyaWF0aW9u IGluIGJlaGF2aW91ciB0aGF0IHdlCj4gPj4+PiBkb24ndCBuZWNlc3NhcmlseSB3YW50Lgo+ID4+ Pj4KPiA+Pj4+IEJ1dCBsaWtlIEkgc2FpZCwgaWYgc29tZW9uZSBjYW4gY29tZSB1cCB3aXRoIGEg YmV0dGVyIHNvbHV0aW9uIEkKPiA+Pj4+IHByb2JhYmx5IHdvdWxkbid0IG9iamVjdCB0b28gbXVj aC4gSXQncyBub3QgZ29pbmcgdG8gYmUgY29taW5nIGZyb20gbWUKPiA+Pj4+IHRob3VnaCBzaW5j ZSBJIGhhdmUgcGxlbnR5IG9mIG90aGVyIHRoaW5ncyB0byBkbyBhbmQgdmFjYXRpb24gdGltZSBp cwo+ID4+Pj4gY29taW5nIHVwIHZlcnkgc29vbi4gU28gdW5sZXNzIHNvbWVvbmUgZWxzZSBjb21l cyB1cCB3aXRoIHNvbWV0aGluZyBuaWNlCj4gPj4+PiBzb29uIEkgdGhpbmsgd2Ugc2hvdWxkIGp1 c3QgZ28gd2l0aCBteSBzb2x1dGlvbiBiZWNhdXNlIGEpIGl0J3MgYWxyZWFkeQo+ID4+Pj4gYXZh aWxhYmxlLCBhbmQgYikgd29ya3MgcXVpdGUgZGVjZW50bHkgZnJvbSB3aGF0IEkgY2FuIHNlZS4K PiA+Pj4gSSBndWVzcyBJJ2xsIGhhdmUgdG8gcmV0eXBlIHRoZSBvbGQgdGhpbmcgaW4gdGhlIG5l dyB3b3JsZCwgYnV0IGl0Cj4gPj4+IHJlYWxseSBzaG91bGRuJ3QgYmUgbW9yZSB0aGFuIHRoZSBx dWljayBkcmFmdCBJJ3ZlIGxhaWQgZG93biBpbiB0aGUKPiA+Pj4gb2xkIHRocmVhZC4gVGhpcyBo ZXJlIGlzIGltbyBuby1nbyB3aXRoIGFsbCB0aGUgY29yZSBjaGFuZ2VzLCBhbmQgZXZlbgo+ID4+ PiBqdXN0IGRvbmUgd2l0aGluIGk5MTUgSSB0aGluayBpdCdzIGhpZ2hseSBkdWJpb3VzIHRoYXQg aXQgcHJvdmlkZXMgYQo+ID4+PiByZWFsIGJlbmVmaXQsIHNpbmNlIGRlZmFjdG8gaXQgbWVhbnMg d2UnbGwgaGF2ZSB0byBhYmFuZG9uIHRoZSBhdG9taWMKPiA+Pj4gaGVscGVycyBlbnRpcmVseS4K PiA+PiBOb3cgSSB0aGluayB5b3UncmUganVzdCBiZWluZyBkaWZmaWN1bHQgZm9yIHRoZSBzYWtl IG9mIGl0LiBIYXZlIHlvdQo+ID4+IGxvb2tlZCBhdCB0aGUgY29kZSBhdCBhbGw/IEl0J3MgZnVs bHkgZG9uZSBmcm9tIHRoZSBhdG9taWMgaGVscGVycwo+ID4+IHJpZ2h0IG5vdy4gQW5kIGV2ZW4g bW92aW5nIHRoZSBjb21taXR0ZWQgc3RhdGUgdHJhY2tpbmcgdG8gaTkxNQo+ID4+IHdvdWxkbid0 IHJlcXVpcmUgYWJhbmRvbmluZyB0aGUgaGVscGVycy4gV2UgY291bGQganVzdCB1cGRhdGUgdGhl Cj4gPj4gY29tbWl0dGVkIHN0YXRlIHBvaW50ZXJzIHdoZW4gd2UgY2FsbCBod19kb25lKCksIGFu ZCB3ZSdkIGhhdmUgdG8KPiA+PiB1cGRhdGUgdGhlIHN0YXRlIHNlcW5vL2FnZSB0aW1lc3RhbXAg d2hlbiB3ZSBjYWxsIHN3YXBfc3RhdGUoKS4KPiA+PiBUaGF0J3MgYWxsIHRoZXJlIGlzIHRvIHRo aXMuCj4gPiBJJ20gY29uY2VybmVkIHdpdGggdGhlIG1haW50YWluZW5hY2UgYnVyZGVuIHlvdSBp bXBvc2Ugb24gYWxsIGZ1dHVyZSBpOTE1Cj4gPiBhdG9taWMgd29yaywgdGhhdCdzIGFsbC4gWWVz IGl0IGxvb2tzIHNpbXBsZSB0byB5b3UgYW5kIHJpZ2h0IG5vdywgYnV0Cj4gPiBpdCdzIGFub3Ro ZXIgbGl0dGxlIHRoaW5nIHRvIGtlZXAgd29ya2luZywgYW5kIHdlJ3JlIHJlYWxseSBnb29kIGF0 Cj4gPiBicmVha2luZyBzdHVmZiBhbGwgdGhlIHRpbWUuCj4gPgo+ID4gQnV0IGlmIHlvdSBzdHJv bmdseSB0aGluayB0aGlzIGlzIHRoZSBiZXN0IHBvc3NpYmxlIGFwcHJvYWNoIG92ZXJhbGwsCj4g PiB0YWtpbmcgaW50byBhY2NvdW50IGxvbmctdGVybSBpbXBhY3QsIHRoZW4gZ28gYWhlYWQgd2l0 aCBpbXBsZW1lbnRpbmcgdGhpcwo+ID4gaW4gaTkxNS4gQWRkaW5nIGl0IHRoZSBjb25jZXB0IG9m IGEgY29tbWl0dGVkIHN0YXRlIGFuZCBiZWluZyBhYmxlIHRvCj4gPiBkdXBsaWNhdGUgdGhhdCBh bmQgc3F1ZWV6ZSBhbm90aGVyIGNvbW1pdCBpbiB0byB0aGUgc2hhcmVkIGF0b21pYyBoZWxwZXJz Cj4gPiBkb2Vzbid0IG1ha2Ugc2Vuc2UgaW1vLgo+ID4gLURhbmllbAo+IAo+IEkgdGhpbmsgdGhl IHByb2JsZW0gaXMgYWJvdXQgc3RydWN0X211dGV4IHVzYWdlIGJ5IGF0b21pYyBjb21taXQgZHVy aW5nIHJlc2V0Lgo+IEdQVSByZXNldCBoYXMgdG8gd2FpdCBmb3IgYWxsIHByZXZpb3VzIGF0b21p YyB1cGRhdGVzIHRvIGNvbXBsZXRlLCBidXQKPiBjbGVhbnVwX3BsYW5lcyBhbmQgcHJlcGFyZV9w bGFuZV9mYiBib3RoIHJlcXVpcmUgc3RydWN0X211dGV4LCB3aGljaCBjYW4gbGVhZAo+IHRvIGEg ZGVhZGxvY2suICM5OTA5MwoKVGhlIGRlYWRsb2NrcyBJJ3ZlIHNlZW4gcmVjZW50bHkgZGlkbid0 IG5lY2Vzc2FyaWx5IGludm9sdmUKc3RydWN0X211dGV4IElJUkMuIEp1c3QgdGhlIG1vZGVzZXQg bG9ja3MuCgo+IAo+IFRoZSByZWFsIGZpeCBpcyBub3QgdGFraW5nIHN0cnVjdF9tdXRleCBkdXJp bmcgYXRvbWljIGNvbW1pdCwgd2hpY2ggd2lsbCBtZWFuCj4gbm8gZGVhZGxvY2sgY2FuIGhhcHBl bi4KPiAKPiBJcyB0aGlzIHRoZSBidWcgYmVpbmcgZml4ZWQgaGVyZSBvciBhbSBJIG1pc3Npbmcg c29tZXRoaW5nPwoKVGhpcyB3b3VsZCBhdm9pZCBib3RoIHN0cnVjdF9tdXRleCBhbmQgbW9kZXNl dCBsb2NrcyBpbiB0aGUgZGlzcGxheQpyZXNldCBwYXRoLCBzbyBJIGd1ZXNzIGl0IHNob3VsZCBo ZWxwIHdpdGggc3RydWN0X211dGV4IGlzc3VlcwphcyB3ZWxsLgoKLS0gClZpbGxlIFN5cmrDpGzD pApJbnRlbCBPVEMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==