From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 4/5] drm/atomic: document how to handle driver private objects Date: Tue, 19 Dec 2017 11:03:55 +0100 Message-ID: <20171219100355.GA26573@phenom.ffwll.local> References: <20171214203054.20141-1-daniel.vetter@ffwll.ch> <20171214203054.20141-5-daniel.vetter@ffwll.ch> <27523743.fP04iXrJ1A@avalon> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <27523743.fP04iXrJ1A@avalon> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Laurent Pinchart Cc: Daniel Vetter , Intel Graphics Development , DRI Development , Dhinakaran Pandiyan , Alex Deucher , Daniel Vetter , Harry Wentland , Ben Skeggs List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBEZWMgMTgsIDIwMTcgYXQgMDY6MTM6NDZQTSArMDIwMCwgTGF1cmVudCBQaW5jaGFy dCB3cm90ZToKPiBIaSBEYW5pZWwsCj4gCj4gVGhhbmsgeW91IGZvciB0aGUgcGF0Y2guCj4gCj4g T24gVGh1cnNkYXksIDE0IERlY2VtYmVyIDIwMTcgMjI6MzA6NTMgRUVUIERhbmllbCBWZXR0ZXIg d3JvdGU6Cj4gPiBESyBwdXQgc29tZSBuaWNlIGRvY3MgaW50byB0aGUgY29tbWl0IGludHJvZHVj aW5nIGRyaXZlciBwcml2YXRlCj4gPiBzdGF0ZSwgYnV0IGluIHRoZSBnaXQgaGlzdG9yeSBhbG9u ZSBpdCdsbCBiZSBsb3N0Lgo+IAo+IFlvdSBtaWdodCB3YW50IHRvIHNwZWxsIERLJ3MgbmFtZSBm dWxseS4KPiAKPiA+IEFsc28sIHNpbmNlIFZpbGxlIHJlbW92ZSB0aGUgdm9pZCogdXNhZ2UgaXQn cyBhIGdvb2Qgb3Bwb3J0dW5pdHkgdG8KPiA+IGdpdmUgdGhlIGRyaXZlciBwcml2YXRlIHN0dWZm IHNvbWUgdGxjIG9uIHRoZSBkb2MgZnJvbnQuCj4gPiAKPiA+IEZpbmFsbHkgdHJ5IHRvIGV4cGxh aW4gd2h5IHRoZSAibGV0J3MganVzdCBzdWJjbGFzcyBkcm1fYXRvbWljX3N0YXRlIgo+ID4gYXBw cm9hY2ggd2Fzbid0IHRoZSBncmVhdGVzdCwgYW5kIGFubm90YXRlIGFsbCB0aG9zZSBmdW5jdGlv bnMgYXMKPiA+IGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIG1vcmUgc3RhbmRhcmRpemVkIGRyaXZl ciBwcml2YXRlIHN0YXRlcy4gQWxzbwo+ID4gbm90ZSB3aGVyZSB3ZSBjb3VsZC9zaG91bGQgZXh0 ZW5kIGRyaXZlciBwcml2YXRlIHN0YXRlcyBnb2luZyBmb3J3YXJkCj4gPiAoYXRtIG5laXRoZXIg bG9ja2luZyBub3Igc3luY2hyb25pemF0aW9uIGlzIGhhbmRsZWQgaW4gY29yZS9oZWxwZXJzLAo+ ID4gd2hpY2ggaXNuJ3QgcmVhbGx5IGFsbCB0aGF0IGdyZWF0KS4KPiA+IAo+ID4gQ2M6IEhhcnJ5 IFdlbnRsYW5kIDxoYXJyeS53ZW50bGFuZEBhbWQuY29tPgo+ID4gQ2M6IERoaW5ha2FyYW4gUGFu ZGl5YW4gPGRoaW5ha2FyYW4ucGFuZGl5YW5AaW50ZWwuY29tPgo+ID4gQ2M6IE1hYXJ0ZW4gTGFu a2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4gPiBDYzogVmlsbGUg U3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+IENjOiBMYXVyZW50 IFBpbmNoYXJ0IDxsYXVyZW50LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5jb20+Cj4gPiBDYzogUm9i IENsYXJrIDxyb2JkY2xhcmtAZ21haWwuY29tPgo+ID4gQ2M6IEFsZXggRGV1Y2hlciA8YWxleGFu ZGVyLmRldWNoZXJAYW1kLmNvbT4KPiA+IENjOiBCZW4gU2tlZ2dzIDxic2tlZ2dzQHJlZGhhdC5j b20+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGludGVs LmNvbT4KPiA+IC0tLQo+ID4gIERvY3VtZW50YXRpb24vZ3B1L2RybS1rbXMucnN0IHwgIDYgKysr KysrCj4gPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYyAgfCA0NSArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0tCj4gPiAgaW5jbHVkZS9kcm0vZHJtX2F0b21pYy5o ICAgICAgfCAyOCArKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+ICBpbmNsdWRlL2RybS9k cm1fbW9kZV9jb25maWcuaCB8ICA5ICsrKysrKysrKwo+ID4gIDQgZmlsZXMgY2hhbmdlZCwgODUg aW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL0RvY3Vt ZW50YXRpb24vZ3B1L2RybS1rbXMucnN0IGIvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWttcy5yc3QK PiA+IGluZGV4IDMwNzI4NDEyNWQ3YS4uNDIwMDI1YmQ2YTliIDEwMDY0NAo+ID4gLS0tIGEvRG9j dW1lbnRhdGlvbi9ncHUvZHJtLWttcy5yc3QKPiA+ICsrKyBiL0RvY3VtZW50YXRpb24vZ3B1L2Ry bS1rbXMucnN0Cj4gPiBAQCAtMjcxLDYgKzI3MSwxMiBAQCBUYWtlbiBhbGwgdG9nZXRoZXIgdGhl cmUncyB0d28gY29uc2VxdWVuY2VzIGZvciB0aGUKPiA+IGF0b21pYyBkZXNpZ246IFJlYWQgb24g aW4gdGhpcyBjaGFwdGVyLCBhbmQgYWxzbyBpbgo+ID4gOnJlZjpgZHJtX2F0b21pY19oZWxwZXJg IGZvciBtb3JlIGRldGFpbGVkIGNvdmVyYWdlIG9mIHNwZWNpZmljIHRvcGljcy4KPiA+IAo+ID4g K0hhbmRsaW5nIERyaXZlciBQcml2YXRlIFN0YXRlCj4gPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KPiA+ICsKPiA+ICsuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJtL2RybV9h dG9taWMuYwo+ID4gKyAgIDpkb2M6IGhhbmRsaW5nIGRyaXZlciBwcml2YXRlIHN0YXRlCj4gPiAr Cj4gPiAgQXRvbWljIE1vZGUgU2V0dGluZyBGdW5jdGlvbiBSZWZlcmVuY2UKPiA+ICAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2RybV9hdG9taWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMK PiA+IGluZGV4IDM3NDQ1ZDUwODE2YS4uMTVlMWEzNWM3NGE4IDEwMDY0NAo+ID4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9h dG9taWMuYwo+ID4gQEAgLTUwLDcgKzUwLDggQEAgRVhQT1JUX1NZTUJPTChfX2RybV9jcnRjX2Nv bW1pdF9mcmVlKTsKPiA+ICAgKiBAc3RhdGU6IGF0b21pYyBzdGF0ZQo+ID4gICAqCj4gPiAgICog RnJlZSBhbGwgdGhlIG1lbW9yeSBhbGxvY2F0ZWQgYnkgZHJtX2F0b21pY19zdGF0ZV9pbml0Lgo+ ID4gLSAqIFRoaXMgaXMgdXNlZnVsIGZvciBkcml2ZXJzIHRoYXQgc3ViY2xhc3MgdGhlIGF0b21p YyBzdGF0ZS4KPiA+ICsgKiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgYnkgZHJpdmVycyB3aGlj aCBhcmUgc3RpbGwgc3ViY2xhc3NpbmcKPiA+ICsgKiAmZHJtX2F0b21pY19zdGF0ZSBhbmQgaGF2 ZW4ndCBzd2l0Y2hlZCB0byAmZHJtX3ByaXZhdGVfc3RhdGUgeWV0Lgo+ID4gICAqLwo+ID4gIHZv aWQgZHJtX2F0b21pY19zdGF0ZV9kZWZhdWx0X3JlbGVhc2Uoc3RydWN0IGRybV9hdG9taWNfc3Rh dGUgKnN0YXRlKQo+ID4gIHsKPiA+IEBAIC02Nyw3ICs2OCw4IEBAIEVYUE9SVF9TWU1CT0woZHJt X2F0b21pY19zdGF0ZV9kZWZhdWx0X3JlbGVhc2UpOwo+ID4gICAqIEBzdGF0ZTogYXRvbWljIHN0 YXRlCj4gPiAgICoKPiA+ICAgKiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIGZvciBmaWxsaW5nIGlu IGEgbmV3IGF0b21pYyBzdGF0ZS4KPiA+IC0gKiBUaGlzIGlzIHVzZWZ1bCBmb3IgZHJpdmVycyB0 aGF0IHN1YmNsYXNzIHRoZSBhdG9taWMgc3RhdGUuCj4gPiArICogVGhpcyBzaG91bGQgb25seSBi ZSB1c2VkIGJ5IGRyaXZlcnMgd2hpY2ggYXJlIHN0aWxsIHN1YmNsYXNzaW5nCj4gPiArICogJmRy bV9hdG9taWNfc3RhdGUgYW5kIGhhdmVuJ3Qgc3dpdGNoZWQgdG8gJmRybV9wcml2YXRlX3N0YXRl IHlldC4KPiA+ICAgKi8KPiA+ICBpbnQKPiA+ICBkcm1fYXRvbWljX3N0YXRlX2luaXQoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9hdG9taWNfc3RhdGUKPiA+ICpzdGF0ZSkKPiA+ IEBAIC0xMzIsNyArMTM0LDggQEAgRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX3N0YXRlX2FsbG9j KTsKPiA+ICAgKiBAc3RhdGU6IGF0b21pYyBzdGF0ZQo+ID4gICAqCj4gPiAgICogRGVmYXVsdCBp bXBsZW1lbnRhdGlvbiBmb3IgY2xlYXJpbmcgYXRvbWljIHN0YXRlLgo+ID4gLSAqIFRoaXMgaXMg dXNlZnVsIGZvciBkcml2ZXJzIHRoYXQgc3ViY2xhc3MgdGhlIGF0b21pYyBzdGF0ZS4KPiA+ICsg KiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgYnkgZHJpdmVycyB3aGljaCBhcmUgc3RpbGwgc3Vi Y2xhc3NpbmcKPiA+ICsgKiAmZHJtX2F0b21pY19zdGF0ZSBhbmQgaGF2ZW4ndCBzd2l0Y2hlZCB0 byAmZHJtX3ByaXZhdGVfc3RhdGUgeWV0Lgo+ID4gICAqLwo+ID4gIHZvaWQgZHJtX2F0b21pY19z dGF0ZV9kZWZhdWx0X2NsZWFyKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiA+ICB7 Cj4gPiBAQCAtOTQ2LDYgKzk0OSw0MiBAQCBzdGF0aWMgdm9pZCBkcm1fYXRvbWljX3BsYW5lX3By aW50X3N0YXRlKHN0cnVjdAo+ID4gZHJtX3ByaW50ZXIgKnAsIHBsYW5lLT5mdW5jcy0+YXRvbWlj X3ByaW50X3N0YXRlKHAsIHN0YXRlKTsKPiA+ICB9Cj4gPiAKPiA+ICsvKioKPiA+ICsgKiBET0M6 IGhhbmRsaW5nIGRyaXZlciBwcml2YXRlIHN0YXRlCj4gPiArICoKPiA+ICsgKiBWZXJ5IG9mdGVu IHRoZSBEUk0gb2JqZWN0cyBleHBvc2VkIHRvIHVzZXJzcGFjZSBpbiB0aGUgYXRvbWljIG1vZGVz ZXQKPiA+IGFwaQo+IAo+IHMvYXBpL0FQSS8KPiAKPiA+ICsgKiAoJmRybV9jb25uZWN0b3IsICZk cm1fY3J0YyBhbmQgJmRybV9wbGFuZSkgZG8gbm90IG1hcCBuZWF0bHkgdG8gdGhlCj4gPiArICog dW5kZXJseWluZyBoYXJkd2FyZS4gRXNwZWNpYWxseSBmb3IgYW55IGtpbmQgb2Ygc2hhcmVkIHJl c291cmNlcyAoZS5nLgo+ID4gc2hhcmVkCj4gPiArICogY2xvY2tzLCBzY2FsZXIgdW5pdHMsIGJh bmR3aWR0aCBhbmQgZmlmbyBsaW1pdHMgc2hhcmVkIGFtb25nIGEgZ3JvdXAgb2YKPiA+ICsgKiBw bGFuZXMgb3IgQ1JUQ3MsIGFuZCBzbyBvbikgaXQgbWFrZXMgc2Vuc2UgdG8gbW9kZWwgdGhlc2Ug YXMgaW5kZXBlbmRlbnQKPiA+ICsgKiBvYmplY3RzLiBEcml2ZXJzIHRoZW4gbmVlZCB0byBzaW1p bGFyIHN0YXRlIHRyYWNraW5nIGFuZCBjb21taXQgb3JkZXJpbmcKPiA+IGZvcgo+ID4gKyAqIHN1 Y2ggcHJpdmF0ZSAoc2luY2Ugbm90IGV4cG9zZWQgdG8gdXNlcnBhY2UpIG9iamVjdHMgYXMgdGhl IGF0b21pYyBjb3JlCj4gPiBhbmQKPiA+ICsgKiBoZWxwZXJzIGFscmVhZHkgcHJvdmlkZSBmb3Ig Y29ubmVjdG9ycywgcGxhbmVzIGFuZCBDUlRDcy4KPiA+IAo+ID4gKyAqIFRvIG1ha2UgdGhpcyBl YXNpZXIgb24gZHJpdmVycyB0aGUgYXRvbWljIGNvcmUgcHJvdmlkZXMgc29tZSBzdXBwb3J0IHRv Cj4gPiB0cmFjawo+ID4gKyAqIGRyaXZlciBwcml2YXRlIHN0YXRlIG9iamVjdHMgdXNpbmcgc3Ry dWN0ICZkcm1fcHJpdmF0ZV9vYmosIHdpdGggdGhlCj4gPiArICogYXNzb2NpYXRlZCBzdGF0ZSBz dHJ1Y3QgJmRybV9wcml2YXRlX3N0YXRlLgo+ID4gKyAqCj4gPiArICogU2ltaWxhciB0byB1c2Vy c3BhY2UtZXhwb3NlZCBvYmplY3RzLCBzdGF0ZSBzdHJ1Y3R1cmVzIGNhbiBiZSBhY3F1aXJlZAo+ ID4gYnkKPiA+ICsgKiBjYWxsaW5nIGRybV9hdG9taWNfZ2V0X3ByaXZhdGVfb2JqX3N0YXRlKCku IFNpbmNlIHRoaXMgZnVuY3Rpb24gZG9lcyBub3QKPiA+IHRha2UKPiA+ICsgKiBjYXJlIG9mIGxv Y2tpbmcsIGRyaXZlcnMgc2hvdWxkIHdyYXAgaXQgZm9yIGVhY2ggdHlwZSBvZiBwcml2YXRlIHN0 YXRlCj4gPiBvYmplY3QKPiA+ICsgKiB0aGV5IGhhdmUgd2l0aCB0aGUgcmVxdWlyZWQgY2FsbCB0 byBkcm1fbW9kZXNldF9sb2NrKCkgZm9yIHRoZQo+ID4gY29ycmVzcG9uZGluZwo+ID4gKyAqICZk cm1fbW9kZXNldF9sb2NrLgo+IAo+IFRoaXMgcGFyYWdyYXBoIGNvdWxkIGJlbmVmaXQgZnJvbSBh biBleHBsYW5hdGlvbiBvZiB3aGF0IHRoZSBjb3JyZXNwb25kaW5nIAo+IGRybV9tb2Rlc2V0X2xv Y2sgaXMuIFRoZSByZXN0IG9mIHRoZSBkb2N1bWVudCBpcyBwcmV0dHkgY2xlYXIuCgpIbSB5ZWFo IC4uLiBUaGlzIGlzIGFsc28gb25lIG9mIHRob3NlIHRoaW5ncyBJJ2QgbGlrZSB0byBpbXByb3Zl IGluIHRoZQpwcml2YXRlIHN0YXRlIHN0dWZmOiBJZiB3ZSBhZGQgYSBmaWxlZCBmb3IgdGhlIGxv Y2sgKGEgcG9pbnRlciwgbm90IHRoZQpsb2NrIGl0c2VsZikgd2UgY291bGQgc2ltcGxpZnkgdGhp cyBzdHVmZiBhIGxvdC4KCj4gPiArICogQWxsIHByaXZhdGUgc3RhdGUgc3RydWN0dXJlcyBjb250 YWluZWQgaW4gYSAmZHJtX2F0b21pY19zdGF0ZSB1cGRhdGUgY2FuCj4gPiBiZQo+ID4gKyAqIGl0 ZXJhdGVkIHVzaW5nIGZvcl9lYWNoX29sZG5ld19wcml2YXRlX29ial9pbl9zdGF0ZSgpLAo+ID4g KyAqIGZvcl9lYWNoX29sZF9wcml2YXRlX29ial9pbl9zdGF0ZSgpIGFuZAo+ID4gZm9yX2VhY2hf b2xkX3ByaXZhdGVfb2JqX2luX3N0YXRlKCkuCj4gCj4gSSB0aGluayBvbmUgb2YgdGhvc2UgdHdv IHdhcyBtZWFudCB0byBiZSBmb3JfZWFjaF9uZXdfcHJpdmF0ZV9vYmpfaW5fc3RhdGUoKS4KCkZp eGVkLgoKPiA+ICsgKiBEcml2ZXJzIGFyZSByZWNvbW1lbmQgdG8gd3JhcCB0aGVzZSBmb3IgZWFj aCB0eXBlIG9mIGRyaXZlciBwcml2YXRlCj4gPiBzdGF0ZQo+ID4gKyAqIG9iamVjdCB0aGV5IGhh dmUsIGZpbHRlcmluZyBvbiAmZHJtX3ByaXZhdGVfb2JqLmZ1bmNzIHVzaW5nCj4gPiBmb3JfZWFj aF9pZigpLCBhdAo+ID4gKyAqIGxlYXN0IGlmIHRoZXkgd2FudCB0byBpdGVyYXRlIG92ZXIgYWxs IG9iamVjdHMgb2YgYSBnaXZlbiB0eXBlLgo+ID4gKyAqCj4gPiArICogQW4gZWFybGllciB3YXkg dG8gaGFuZGxlIGRyaXZlciBwcml2YXRlIHN0YXRlIHdhcyBieSBzdWJjbGFzc2luZyBzdHJ1Y3QK PiA+ICsgKiAmZHJtX2F0b21pY19zdGF0ZS4gQnV0IHNpbmNlIHRoYXQgZW5jb3VyYWdlcyBub24t c3RhbmRhcmQgd2F5cyB0bwo+ID4gaW1wbGVtZW50Cj4gPiArICogdGhlIGNoZWNrL2NvbW1pdCBz cGxpdCBhdG9taWMgcmVxdWlyZXMgKGJ5IHVzaW5nIGUuZy4gImNoZWNrIGFuZAo+ID4gcm9sbGJh Y2sgb3IKPiA+ICsgKiBjb21taXQgaW5zdGVhZCIgb2YgImR1cGxpY2F0ZSBzdGF0ZSwgY2hlY2ss IHRoZW4gZWl0aGVyIGNvbW1pdCBvcgo+ID4gcmVsZWFzZQo+ID4gKyAqIGR1cGxpY2F0ZWQgc3Rh dGUpIGl0IGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIHVzaW5nCj4gPiAmZHJtX3ByaXZhdGVf c3RhdGUuCj4gCj4gVGhpcyBJIHN0aWxsIGRvbid0IGFncmVlIHdpdGguIEkgdGhpbmsgaXQgc3Rp bGwgbWFrZXMgc2Vuc2UgdG8gc3ViY2xhc3MgdGhlIAo+IGdsb2JhbCBzdGF0ZSBvYmplY3Qgd2hl biB5b3UgaGF2ZSB0cnVlIGdsb2JhbCBzdGF0ZSBkYXRhLiBIb3cgYWJvdXQgc3RhcnRpbmcgCj4g YnkgbWFraW5nIGl0IGEgcmVjb21tZW5kYXRpb24gaW5zdGVhZCwgbW92aW5nIHN0YXRlIGRhdGEg cmVsYXRlZCB0byBkcml2ZXItCj4gc3BlY2lmaWMgb2JqZWN0cyB0byB0aGUgbmV3IGZyYW1ld29y aywgYW5kIGtlZXBpbmcgZ2xvYmFsIGRhdGEgaW4gdGhlIAo+IGRybV9hdG9taWNfc3RhdGUgc3Vi Y2xhc3MgPwoKQ29udmVydGluZyBhbGwgdGhlIGV4aXN0aW5nIGRyaXZlcnMgb3ZlciBpcyBzb21l d2hlcmUgb24gbXkgdG9kby4gSSdtIGFsc28Kbm90IHJlYWxseSBjbGVhciB3aGF0IHlvdSBtZWFu IHdpdGggZ2xvYmFsIGRhdGEgY29tcGFyZWQgdG8KZHJpdmVyLXNwZWNpZmljIG9iamVjdHMgLi4u IEFuZCBzZWUgdGhlIGV2b2x1dGlvbiBvZiB0aGUgaTkxNSBzdGF0ZSBzdHVmZiwKaW1vIGl0J3Mg YSBiaXQgdG9vIGVhc3kgdG8gZ2V0IHRoZSBkcm1fYXRvbWljX3N0YXRlIHN1YmNsYXNzaW5nIHdy b25nLgotRGFuaWVsCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBD b3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngK