From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: Questions on page flips and atomic modeset Date: Tue, 6 Feb 2018 18:04:20 +0200 Message-ID: <20180206160420.GM5453@intel.com> References: <8c3a7024-598b-49b5-0f52-30fb35a27868@gmail.com> <20180205164736.GK5453@intel.com> <66bbd5cc-e93c-78dd-6c57-87bc879bbfe1@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id CBE2D6E499 for ; Tue, 6 Feb 2018 16:04:23 +0000 (UTC) Content-Disposition: inline In-Reply-To: <66bbd5cc-e93c-78dd-6c57-87bc879bbfe1@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Oleksandr Andrushchenko Cc: "dri-devel@lists.freedesktop.org" List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBGZWIgMDYsIDIwMTggYXQgMTE6NTk6MzdBTSArMDIwMCwgT2xla3NhbmRyIEFuZHJ1 c2hjaGVua28gd3JvdGU6Cj4gSGVsbG8sIFZpbGxlIQo+IAo+IFRoYW5rIHlvdSB2ZXJ5IG11Y2gg Zm9yIHN1Y2ggYSBjb21wcmVoZW5zaXZlIGFuc3dlci4KPiAKPiBQbGVhc2Ugc2VlIGlubGluZQo+ IAo+IAo+IE9uIDAyLzA1LzIwMTggMDY6NDcgUE0sIFZpbGxlIFN5cmrDpGzDpCB3cm90ZToKPiA+ IE9uIE1vbiwgRmViIDA1LCAyMDE4IGF0IDA2OjAzOjI1UE0gKzAyMDAsIE9sZWtzYW5kciBBbmRy dXNoY2hlbmtvIHdyb3RlOgo+ID4+IEhlbGxvLAo+ID4+Cj4gPj4KPiA+PiBJIGhhdmUgYSBEUk0g ZHJpdmVyIHdoaWNoIGltcGxlbWVudHMgZGlzcGxheSBwcm90b2NvbCBmb3IgWGVuIFsxXQo+ID4+ IGFuZCB0aGlzIHByb3RvY29sIGhhcyBhIGRlZGljYXRlZCBYRU5ESVNQTF9PUF9QR19GTElQIHJl cXVlc3Qgd2hpY2gKPiA+PiB0ZWxscyB0aGUgb3RoZXIgZW5kIHRoYXQgc29tZSBkaXNwbGF5IGJ1 ZmZlciBuZWVkcyB0byBiZSBkaXNwbGF5ZWQsCj4gPj4gZS5nLiBpdCBpcyBpc3N1ZWQgYnkgdGhl IGZyb250ZW5kIERSTSBkcml2ZXIgdG8gdGhlIGNvcnJlc3BvbmRpbmcKPiA+PiBiYWNrZW5kIHdo ZW4gdGhlIGZvcm1lciB3YW50cyB0byBkaXNwbGF5IGEgYnVmZmVyLgo+ID4+IFR3byBub3RlczoK PiA+PiAxLiBDb21tdW5pY2F0aW9uIGJldHdlZW4gdHdvIHJlbW90ZSBwYXJ0aWVzIGNhbiBvYnZp b3VzbHkgZmFpbC4KPiA+PiAyLiBBdCB0aGUgbW9tZW50IG9ubHkgcHJpbWFyeSBwbGFuZSBpcyBz dXBwb3J0ZWQsIHNvIHdlIGNhbiB0aGluayBvZgo+ID4+IHRoZSBkaXNwbGF5IGJ1ZmZlciBhcyBv ZiBDUlRDJ3MgcHJpbWFyeSBmYi4KPiA+Pgo+ID4+IFRoZXJlIGFyZSB0d28gQVBJcyBhdmFpbGFi bGUgZm9yIHVzZXItc3BhY2UgdG8gaW5pdGlhdGUgYSBwYWdlLWZsaXAKPiA+PiAocGxlYXNlIGNv cnJlY3QgbWUgaWYgSSBhbSB3cm9uZyBoZXJlKTogbGVnYWN5IHZpYSBEUk1fSU9DVExfTU9ERV9Q QUdFX0ZMSVAKPiA+PiBhbmQgbW9yZSByZWNlbnQgdmlhIERSTV9JT0NUTF9NT0RFX0FUT01JQy4g TXkgY3VycmVudCBpbXBsZW1lbnRhdGlvbgo+ID4+ICh3aGljaCBpcyA0LjkgYmFzZWQpIHVzZXMg ZHJtX2NydGNfZnVuY3MucGFnZV9mbGlwIGNhbGxiYWNrIHRvIHNlbmQKPiA+PiBYRU5ESVNQTF9P UF9QR19GTElQIHJlcXVlc3QgdG8gdGhlIGJhY2tlbmQsIHNvIGlmIGNvbW11bmljYXRpb24gZmFp bHMKPiA+PiBJIGNhbiByZXR1cm4gYW4gZXJyb3IgY29kZSwgc28gdGhlIERSTSBjb3JlIGtub3dz IHRoYXQgcGFnZSBmbGlwCj4gPj4gY2Fubm90IGJlIGRvbmUuCj4gPj4KPiA+PiBCdXQgbm93IEkg YW0gYWJvdXQgdG8gZW5hYmxlIHBhZ2UgZmxpcHBpbmcgdmlhIERSTV9JT0NUTF9NT0RFX0FUT01J QyBmb3IKPiA+PiB3aGljaCB0aGlzIGhhcHBlbnMgd2l0aG91dCBEUk1fSU9DVExfTU9ERV9QQUdF X0ZMSVAsIGJ1dCB2aWEgLmF0b21pY19jaGVjayArCj4gPj4gLmF0b21pY19mbHVzaCBjYWxsYmFj a3MuCj4gPj4KPiA+PiBUaGUgc29sdXRpb24gSSBoYXZlIGluIG1pbmQgaXMgdGhhdCBJIG1vdmUg dGhlIFhFTkRJU1BMX09QX1BHX0ZMSVAgcmVxdWVzdAo+ID4+IHRvIHRoZSAuYXRvbWljX2ZsdXNo IGNhbGxiYWNrIHdoaWNoIHNlZW1zIHRvIGJlIHRoZSByaWdodCBwbGFjZSB0byBzZXJ2ZQo+ID4+ IGJvdGggRFJNX0lPQ1RMX01PREVfUEFHRV9GTElQIGFuZCBEUk1fSU9DVExfTU9ERV9BVE9NSUMg KGlzIHRoaXM/KS4KPiA+Pgo+ID4+IFRoZSBxdWVzdGlvbnMgSSBoYXZlIHdpdGggdGhpcyBhcmU6 Cj4gPj4KPiA+PiAxLiBXaGF0IGlzIHRoZSBmcmFtZWJ1ZmZlciBJIGNhbiBzZW5kIHRvIHRoZSBi YWNrZW5kPwo+ID4+IEkgYXNzdW1lIEkgY2FuIHVzZSBjcnRjLT5wcmltYXJ5LT5mYiBmcm9tCj4g Pj4gZHJtX2NydGNfaGVscGVyX2Z1bmNzLmF0b21pY19mbHVzaCwKPiA+PiBpcyB0aGlzIGFzc3Vt cHRpb24gY29ycmVjdD8KPiA+IFBsYW5lcyBhcmUgZXhwbGljaXQgaW4gdGhlIGF0b21pYyB3b3Js ZCwgc28geW91IHNob3VsZCBqdXN0IGRlYWwgd2l0aAo+ID4gdGhlIHBsYW5lIGlmIGFuZCB3aGVu IGl0J3MgcGFydCBvZiB0aGUgZHJtX2F0b21pY19zdGF0ZS4gTG9vayBhdCBlZy4KPiA+IGRybV9h dG9taWNfaGVscGVyX2NvbW1pdF9wbGFuZXMoKSBob3cgdG8gZmlndXJlIG91dCB3aGF0J3MgaW4g dGhlCj4gPiBzdGF0ZS4KPiBZZXMsIHRoaXMgaXMgY2xlYXIuIFRoZSBxdWVzdGlvbiB3YXMgYWJv dXQgdGhlIGZyYW1lIGJ1ZmZlcgo+IEkgZ2V0IGluIGRybV9jcnRjX2hlbHBlcl9mdW5jcy5hdG9t aWNfZmx1c2ggd2hpY2ggb25seSBoYXMKPiBvbGRfY3J0Y19zdGF0ZSwgc28gSSBhc3N1bWVkIEkg Y2FuIHVzZSBjcnRjLT5wcmltYXJ5LT5mYiB0aGVyZS4KPiBPciB5b3UgbWVhbiBJIGhhdmUgdG8g ZGlnIGludG8gb2xkX2NydGNfc3RhdGUtPnN0YXRlIHRvIGZpbmQKPiBvdXQgaWYgdGhlcmUgaXMg YSBwbGFuZSBhbmQgaWYgaXQgaGFzIGEgZnJhbWJ1ZmZlciBhbmQgaWYgc28KPiB1c2UgaXQgaW5z dGVhZCBvZiBjcnRjLT5wcmltYXJ5LT5mYj8KCllvdSB3aWxsIGdldCB0aGUgcGxhbmUgZXhwbGlj aXRseSBhcyBwYXJ0IG9mIHRoZSBkcm1fYXRvbWljX3N0YXRlLgpOb3JtYWxseSB5b3Ugc2hvdWxk bid0IG5lZWQgdG8gZ28gZmluZCBpdCB2aWEgb3RoZXIgbWVhbnMuCgpPaCwgYW5kIG5ldmVyIHVz ZSB0aGUgcGxhbmUtPmZiIGV0Yy4gcG9pbnRlcnMgaW4gYW4gYXRvbWljIGRyaXZlci4KVGhvc2Ug YXJlIGZvciBsZWdhY3kgcHVycG9zZXMgb25seS4gQXRvbWljIGRyaXZlcnMgc2hvdWxkIG9ubHkg ZXZlcgpkZWFsIHdpdGggcHJvcGVyIHN0YXRlIG9iamVjdHMuCgo+ID4gICBBbmQgSSBndWVzcyB5 b3UncmUgYWxyZWFkeSBwbGFubmluZyBvbiB1c2luZyB0aGF0IGhlbHBlciBzaW5jZQo+ID4geW91 IG1lbnRpb24gLmF0b21pY19mbHVzaCgpLgo+IE5vdCBkaXJlY3RseSwgYnV0IHZpYSBkcm1fbW9k ZV9jb25maWdfZnVuY3MuYXRvbWljX2NvbW1pdAoKLmF0b21pY19jb21taXQoKSBpcyBhIGhvb2sg dGhlIGRyaXZlciBoYXMgdG8gcHJvdmlkZS4gTW9zdCBkcml2ZXJzIHVzZQp0aGUgaGVscGVyIGZv ciBpdCwgd2hpY2ggaW4gdHVybiByZXF1aXJlcyB0aGUgZHJpdmVyIHRvIHByb3ZpZGUgb3RoZXIK aG9va3Mgc3VjaCBhcyAuYXRvbWljX2ZsdXNoKCkuIFRoYXQgaXMgd2hhdCB5b3UgYXBwZWFyIHRv IGJlIGRvaW5nLgoKPiA+Cj4gPiBPbmUgc2hvdWxkIHJlYWxseSB0aGluayBvZiB0aGUgZHJtX2F0 b21pY19zdGF0ZSBhcyBtb3JlIG9mIGEgdHJhbnNhY3Rpb24KPiA+IHJhdGhlciB0aGFuIGFzIGEg c3RhdGUgKHNpbmNlIG5vdCBhbGwgb2JqZWN0cyBuZWVkIGJlIHBhcnQgb2YgaXQpLgo+IFRoYW5r IHlvdQo+ID4+IDIuIElzIHRoZSBjaGVjayAoZWl0aGVyIHRvIHNlbmQgb3Igbm90KSBmb3IgY3J0 Yy0+cHJpbWFyeS0+ZmIgIT0gTlVMTAo+ID4+IGVub3VnaD8KPiA+PiBJIGFzc3VtZSB0aGVyZSBh cmUgb3RoZXIgY2FzZXMgd2hlbiAuYXRvbWljX2ZsdXNoIGdldHMgY2FsbGVkLAo+ID4+IHNvIGlz IHRoZXJlIGEgd2F5IEkgY2FuIGZpbHRlciBvdXQgdW5uZWVkZWQgY2FzZXM/IEUuZy4gdGhvc2Ug d2hpY2gKPiA+PiBhcmUgbm90IGZvciBwYWdlIGZsaXBwaW5nPwo+ID4gRWFjaCBvYmplY3QgdGFr aW5nIHBhcnQgaW4gdGhlIHRyYW5zYWN0aW9uIHdpbGwgaGF2ZSBhbiBhc3NvY2lhdGVkCj4gPiBu ZXcgc3RhdGUgYW5kIG9sZCBzdGF0ZS4KPiBBcyBJIHJlcGxpZWQgYWJvdmUgSSBvbmx5IGhhdmUg b2xkIHN0YXRlIGluIC5hdG9taWNfZmx1c2gKCk9oIHJpZ2h0LiBUaGF0IHdheSBvZiBwYXNzaW5n IHRoZSBvbGQgc3RhdGUgb25seSBkYXRlcyBiYWNrIHRvIGVhcmxpZXIKZGF5cyBvZiBhdG9taWMu IFRvIGZpbmQgdGhlIG5ldyBzdGF0ZSB3aGF0IHlvdSBzaG91bGQgZG8gdGhlc2UgZGF5cwppcyBz b21ldGhpbmcgbGlrZToKCmZvbyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHN0cnVjdCBkcm1fY3J0 Y19zdGF0ZSAqb2xkX3N0YXRlKQp7CglzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPSBv bGRfc3RhdGUtPnN0YXRlOwoJc3RydWN0IGRybV9jcnRjX3N0YXRlICpuZXdfc3RhdGUgPQoJCWRy bV9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKCS4uLgoKVGhlIG9sZCB3 YXkgd2FzIHRvIHVzZSB0aGUgY3J0Yy0+c3RhdGUgcG9pbnRlciBhcyBlaXRoZXIgdGhlIG9sZApv ciBuZXcgc3RhdGUgZGVwZW5kaW5nIG9uIHdoZXJlIHlvdSBhcmUgaW4gdGhlIGNvbW1pdCBzZXF1 ZW5jZS4KQnV0IHRoYXQgd2Fzbid0IHZlcnkgZ29vZCBzbyBNYWFydGVuIGNoYW5nZWQgdGhpbmdz IHNvIHRoYXQgd2UKbm93IGhhdmUgZXhwbGljaXQgb2xkIGFuZCBuZXcgc3RhdGVzIGZvciBlYWNo IG9iamVjdCB0cmFja2VkIGluCnRoZSBkcm1fYXRvbWljX3N0YXRlLgoKSSB0aGluayB3aGF0IHdl IHNob3VsZCByZWFsbHkgZG8gaXMgY2hhbmdlIG1vc3Qgb2YgdGhlIGhvb2tzIHRvCnBhc3MgY3J0 Yytkcm1fYXRvbWljX3N0YXRlIGluc3RlYWQsIGFuZCBsZXQgZWFjaCBmdW5jdGlvbiBncmFiCnRo ZSBvbGQgYW5kL29yIG5ldyBjcnRjIHN0YXRlIGZyb20gdGhlIGRybV9hdG9taWNfc3RhdGUgYXMg bmVlZGVkLgpJIGJlbGlldmUgdGhhdCB3b3VsZCBhdm9pZCBjb25mdXNpbmcgcGVvcGxlIHdpdGgg anVzdCB0aGUgb2xkIG9yCm5ldyBzdGF0ZS4KCj4gPiAgIFlvdSBjYW4gY29tcGFyZSB0aGUgdHdv IHRvIGZpZ3VyZSBvdXQgd2hhdAo+ID4gY2hhbmdlZCwgYW5kIGluIGFkZGl0aW9uIHRoZXJlIG1h eSBhbHJlYWR5IHNvbWUgZmxhZ3MgaW4gdGhlIGJhc2UKPiA+IGNsYXNzIGZvciB0aGUgc3RhdGUg dGhhdCBpbmRpY2F0ZSB3aGF0IG1heSBoYXZlIGNoYW5nZWQgKGVnLgo+ID4gZHJtX2NydGNfc3Rh dGU6Om1vZGVfY2hhbmdlZCBldGMuKS4gU3VjaCBmbGFncyBtYXkgYmUgc2V0IGJ5IHRoZQo+ID4g Y29yZSB0byBoZWxwIGZpZ3VyZSBvdXQgd2hhdCBuZWVkcyBkb2luZy4KPiBZZXMsIHRoYW5rIHlv dQo+ID4+IDMuIElmIGNvbW11bmljYXRpb24gd2l0aCB0aGUgYmFja2VuZCBmYWlscyB0aGVyZSBp cyBubyB3YXkgZm9yIG1lCj4gPj4gdG8gdGVsbCB0aGUgRFJNIGNvcmUgYWJvdXQgdGhpcyBhcyAu YXRvbWljX2ZsdXNoIGlzIGNhbGxlZCBhZnRlcgo+ID4+ICJ0aGUgcG9pbnQgb2Ygbm8gcmV0dXJu Ii4gRG8geW91IHRoaW5rIEkgY2FuIHJlbWVtYmVyIHRoZSBlcnJvcgo+ID4+IGNvZGUgYW5kIHJl cG9ydCBpdCBuZXh0IHRpbWUgLmF0b21pY19jaGVjayBpcyBjYWxsZWQ/IFNvLCBvdGhlciBwYWdl Cj4gPj4gZmxpcHMgd2lsbCBub3QgcnVuIG9uIGJyb2tlbiBjb25uZWN0aW9uLCBmb3IgZXhhbXBs ZS4KPiA+IERvIHlvdSBrbm93IHdoZW4gaXQgbWlnaHQgZmFpbD8KPiBOb3QgcmVhbGx5LCB0aGlz IGlzIGEgc29mdHdhcmUgcHJvdG9jb2wgdG8gdGFsayBmcm9tCj4gdGhlIGZyb250ZW5kIHBhcmEt dmlydHVhbCBEUk0gZHJpdmVyIHRvIGl0cyBiYWNrZW5kCj4gaW4gb3RoZXIgWGVuIGRvbWFpbgoK SSBzZWUuIFdlbGwsIHdpdGhvdXQgZXZpZGVuY2UgdG8gdGhlIGNvbnRyYXJ5IEknZCBwcm9iYWJs eSBqdXN0IGFzc3VtZQppdCdsbCBuZXZlciBmYWlsLiBUaGF0IGF2b2lkcyBjb21wbGljYXRpbmcg dGhlIGNvZGUgd2l0aCBwb3RlbnRpYWxseQp1c2VsZXNzIGxvZ2ljLiBIYW1tZXJpbmcgaXQgd2l0 aCBzb21ldGhpbmcgbGlrZSBpZ3QgZm9yIGEgd2hpbGUgbWlnaHQKc2VydmUgYXMgYSBnb29kIHdh eSB0byB0ZXN0IHRoYXQgYXNzdW1wdGlvbi4gTm90IHN1cmUgaG93IG1hbnkgdGVzdHMgaW4KaWd0 IGN1cnJlbnRseSBydW4gb24gbm9uLWk5MTUgdGhvdWdoLgoKPiA+ICAgSWYgc28geW91IHNob3Vs ZCBpbXBsZW1lbnQgdGhlIGFwcHJvcHJpYXRlCj4gPiBjaGVja3MgaW4gLmF0b21pY19jaGVjaygp IGV0Yy4gdG8gdHJ5IGFuZCBtYWtlIHN1cmUgaXQgbmV2ZXIgaGFwcGVucwo+ID4gKGJhcnJpbmcg YSB0b3RhbCBoYXJkd2FyZSBmYWlsdXJlIGZvciBleGFtcGxlKS4KPiA+Cj4gPiBHZW5lcmFsbHkg d2hhdCB3ZSAoaTkxNSkgZG8gaXMgdHJ5IHRvIGNoZWNrIGV2ZXJ5dGhpbmcgdXAgZnJvbnQsIGJ1 dCBpZgo+ID4gYW4gdW5leHBlY3RlZCBlcnJvciBkb2VzIGhhcHBlbiBsYXRlciB3ZSBqdXN0IG11 ZGRsZSB0aHJvdWdoIGFuZCBsb2cgYW4KPiA+IGVycm9yLgo+ID4KPiA+IEZvciB1cyBJIHRoaW5r IHRoZSBtb3N0IGNvbW1vbiBsYXRlIGZhaWx1cmUgaXMgRFAgbGluayB0cmFpbmluZyBmYWlsdXJl Lgo+ID4gVGhhdCB3ZSBjYW4ndCBmdWxseSBjaGVjayB1cCBmcm9udCBzaW5jZSBpdCBkZXBlbmRz IG9uIGV4dGVybmFsIGZhY3RvcnM6Cj4gPiBzaW5rLCBkb25nbGVzLCBjYWJsaW5nLCBldGMuIEZv ciB0aG9zZSB3ZSBhZGRlZCBhIG5ldyBjb25uZWN0b3IgcHJvcGVydHkKPiA+IHRvIHNpZ25hbCB0 byB1c2Vyc3BhY2UgdGhhdCB0aGUgbGluayBpcyBoYXZpbmcgaXNzdWVzLCBhbGxvd2luZwo+ID4g dXNlcnNwYWNlIHRvIHJlY29uZmlndXJlIHRoaW5ncyBzdWNoIHRoYXQgd2UgbG93ZXIgdGhlIGxp bmsgYmFuZHdpZHRoCj4gPiByZXF1aXJlbWVudHMuCj4gSSBjYW5ub3QgZG8gdGhhdCB0aGlzIHdh eSwgYmVjYXVzZSB0aGUgZHJpdmVyIGhhcyB0byBydW4KPiBzZWFtbGVzc2x5IGZvciB1c2VyLXNw YWNlLCBubyBzcGVjaWZpYyB1dGlsaXRpZXPCoCBhcmUKPiBleHBlY3RlZCB0byBydW4uCgpUaGVy ZSBtdXN0IGJlIHNvbWV0aGluZyBydW5uaW5nIG9yIHlvdSBuZXZlciBnZXQgYW55dGhpbmcgb24g dGhlIHNjcmVlbi4KCj4gPgo+ID4gVGhlIGxpbmtfc3RhdHVzIG1lY2hhbmlzbSBjb3VsZCBwZXJo YXBzIGJlIHVzZWQgdG8gdG8gd29yayBhcm91bmQgb3RoZXIKPiA+ICJsYXRlIGVycm9ycyIuIEJ1 dCBpbiBnZW5lcmFsIGlmIHlvdSB3YW50IHRvIHNvbWVob3cgZml4IHRoYXQgZXJyb3IgeW91Cj4g PiBoYXZlIHRvIGtub3cgd2hhdCBjYXVzZWQgaXQsIG5vPwo+IFRoYXQgaXMgY29ycmVjdCwgc28g SSB3aWxsIHByaW50IGFuIGVycm9yIG1lc3NhZ2Ugb24KPiBwYWdlIGZsaXAgZXJyb3Igc28gdXNl ciBoYXMgYXQgbGlzdCBhIGNsdWUgb24gd2hhdCdzCj4gd3JvbmcKPiA+ICAgU28gaWYgeW91IGp1 c3QgZ2V0IGEgcmFuZG9tIGVycm9yIGZvcgo+ID4gc2VlbWluZ2x5IG5vIHJlYXNvbiB0aGVyZSdz IHZlcnkgbGl0dGxlIHlvdSBjYW4gZG8gYXBhcnQgZnJvbSBibGluZGx5Cj4gPiByZXRyeWluZyBh bmQgbG9nZ2luZyBhbiBlcnJvci4gRm9yIHRoZSBEUCBjYXNlIHRoZSBmYWxsYmFjayBtZWNoYW5p c20gaXMKPiA+IHByZXR0eSBjbGVhcjogcmVkdWNlIGxpbmsgcmF0ZSBhbmQvb3IgbnVtYmVyIG9m IGxhbmVzLgo+ID4KPiA+IEFzIGZvciBzaWduYWxsaW5nIHRoZSBlcnJvciBpbiB0aGUgbmV4dCBp b2N0bCBjYWxsLCB0aGF0IGNvdWxkIGJlIGRvbmUKPiA+IEkgc3VwcG9zZS4KPiBJIHRyaWVkIHRo YXQgYXBwcm9hY2ggYW5kIGl0IHNlZW1zIHRvIHdvcmsuCj4gPiAgIEJ1dCBhZ2FpbiB0aGUgcXVl c3Rpb24gaXMgaG93IHdvdWxkIHVzZXJzcGFjZSBrbm93IHdoYXQKPiA+IChpZiBhbnl0aGluZykg aXQgY2FuIGRvIHRvIGZpeCB0aGUgcHJvYmxlbT8KPiBXZWxsLCB0aGlzIHdvdWxkIGJlIHNlZW4g YXMganVzdCBhbiBlcnJvciB0byB1c2VyLXNwYWNlCj4gYW5kIHVuZm9ydHVuYXRlbHkgaWYgaXQg aXMgbm90IHByZXBhcmVkIHRvIGRlYWwgd2l0aCB0aGVuIGl0IHdpbGwKPiBjbG9zZS4gTm90IHN1 cmUgSSBjYW4gZG8gYW55dGhpbmcgc21hcnQgYWJvdXQgaXQKPiA+Cj4gPj4gNC4gQXMgcGVyIG15 IHVuZGVyc3RhbmRpbmcgSSBjYW5ub3QgcHV0IFhFTkRJU1BMX09QX1BHX0ZMSVAgcmVxdWVzdAo+ ID4+IGludG8gLmF0b21pY19jaGVjayBhcyB0aGUgY2hlY2sgZG9lc24ndCBndWFyYW50ZWUgdGhh dCAuYXRvbWljX2ZsdXNoCj4gPj4gd2lsbCBmb2xsb3cuIElzIHRoaXMgY29ycmVjdCBvciB0aGVy ZSBpcyBhIG1vcmUgbmVhdCBzb2x1dGlvbiBleGlzdHM/Cj4gPiBUaG91IHNoYWx0IG5vdCB0b3Vj aCB0aGUgaGFyZHdhcmUgdW50aWwgLmF0b21pY19jb21taXQoKS4gTm90ZSB0aGF0Cj4gPiAuYXRv bWljX2NvbW1pdCgpIGl0c2VsZiBpcyBzdGlsbCBhbGxvd2VkIHRvIGZhaWwsIGJ1dCBvbmx5IGlm IHlvdQo+ID4gY2FuIGZhaWwgYXRvbWljYWxseS4KPiA+Cj4gPiBUaGUgLmF0b21pY19mbHVzaCgp ICYgY28uIGhlbHBlciBzdHVmZiBpcyBkZXNpZ25lZCBpbiBhIHdheSB0aGF0Cj4gPiBleHBlY3Rz IG5vIGZhaWx1cmVzIGF0IHRoYXQgbGF0ZSBzdGFnZSBvZiB0aGUgY29tbWl0LiBJZiB0aGF0Cj4g PiBkb2Vzbid0IHN1aXQgeW91ciBoYXJkd2FyZSBkZXNpZ24gdGhlbiB5b3UgbWF5IG9wdCB0byBu b3QgdXNlIHRoZQo+ID4gaGVscGVyLgo+ID4KPiA+IEFsc28gbm90ZSB0aGF0IG5vbi1ibG9ja2lu ZyBvcGVyYXRpb25zIGNhbiBtYWtlIHRoaXMgZXZlbiBtb3JlIGRpZmZpY3VsdAo+ID4gYmVjYXVz ZSBpbiB0aGF0IGNhc2UgZXZlbiAuYXRvbWljX2NvbW1pdCgpIGRvZXNuJ3QgZ2VuZXJhbGx5IHRv dWNoCj4gPiB0aGUgaGFyZHdhcmUgYW5kIGluc3RlYWQgdGhhdCB0YXNrIGlzIGRlbGVnYXRlZCB0 byBlZy4gYSB3b3JrIHF1ZXVlLgo+ID4gU28gYnkgdGhlIHRpbWUgdGhlIGhhcmR3YXJlIGluZGlj YXRlcyBhbiBlcnJvciB0aGUgaW9jdGwgaGFzIGxvbmcgc2luY2UKPiA+IHJldHVybmVkIHRvIHVz ZXJzcGFjZS4KPiA+Cj4gVGhpcyBpcyBteSBjYXNlIGFzIEkgc2VuZCBhIHBhZ2UgZmxpcCByZXF1 ZXN0IHRvIHRoZSBiYWNrZW5kCj4gYW5kIGxhdGVyIGluIHRpbWUgcmVjZWl2ZSB0aGUgY29ycmVz cG9uZGluZyByZXNwb25zZS4KPiAKPiBEbyB5b3UgbWluZCBsb29raW5nIGF0IG15IGN1cnJlbnQg V0lQIGltcGxlbWVudGF0aW9uIG9mCj4gYXRvbWljIGNvbW1pdCBbMV0sIFsyXT8gVGhpcyB3b3Jr IGlzIGRvbmUgYXMgYSBwcmVwYXJhdGlvbiBmb3IKPiB1cHN0cmVhbWluZyB0aGUgZHJpdmVyIGFu ZCBpcyBzdGlsbCBpbiBwcm9ncmVzcyB0aG91Z2guCgpVc3VhbGx5IG9uZSB3b3VsZCBoYW5kbGUg cGFnZSBmbGlwcyBmcm9tIHRoZSBwbGFuZSdzIC5hdG9taWNfdXBkYXRlKCkKaG9vayBpbnN0ZWFk IG9mIHRoZSBjcnRjJ3MgLmF0b21pY19mbHVzaCgpLiBCdXQgaWYgeW91IG9ubHkgaGF2ZSB0aGUg b25lCnBsYW5lIHRoZW4gdGhpcyBjb3VsZCB3b3JrLiBCdXQgeW91IHNob3VsZCBnZXQgYXQgdGhl IHBsYW5lIGZiIHZpYSAKZHJtX2F0b21pY19nZXRfbmV3X3BsYW5lX3N0YXRlKCkgZXRjLgoKR2Vu ZXJhbGx5IGxvb2tzIGxpa2UgeW91IG5lZWQgc29tZSBtb3JlIHdvcmsgb24gdGhlIHBsYW5lIC5h dG9taWNfY2hlY2soKQpmdW5jdGlvbi4gVXNpbmcgZHJtX2F0b21pY19oZWxwZXJfY2hlY2tfcGxh bmVfc3RhdGUoKSBzaG91bGQgZ2V0IHlvdQptb3N0IG9mIHRoZSB3YXkgdGhlcmUgSSdkIGltYWdp bmUuIE5vdCBzdXJlIGlmIGRpc2FibGluZyB0aGUgcGxhbmUKaW5kZXBlbmRlbnRseSBvZiB0aGUg Y3J0YyBtYWtlcyBhbnkgc2Vuc2UsIGJ1dCBpZiBub3QgeW91IHNob3VsZApsb29rIGF0IGRybV9z aW1wbGVfa21zX2hlbHBlci5jIGZvciBhbiBleGFtcGxlLiBIbW0uIE5vdCBzdXJlIGlmIHlvdQpj b3VsZG4ndCBqdXN0IHVzZSBkcm1fc2ltcGxlX2ttc19oZWxwZXIuYyB5b3Vyc2VsZiBhY3R1YWxs eS4KCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVs QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=