From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v2] drm/i915: Serialise presentation with imported dmabufs Date: Thu, 16 Jun 2016 23:41:16 +0200 Message-ID: <20160616214116.GD23520@phenom.ffwll.local> References: <20160614154524.GS1338@phenom.ffwll.local> <1465937761-5542-1-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x243.google.com (mail-wm0-x243.google.com [IPv6:2a00:1450:400c:c09::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 459346E0DD for ; Thu, 16 Jun 2016 21:41:21 +0000 (UTC) Received: by mail-wm0-x243.google.com with SMTP id k184so14379528wme.2 for ; Thu, 16 Jun 2016 14:41:21 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1465937761-5542-1-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson Cc: intel-gfx@lists.freedesktop.org, Alex Goins List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBKdW4gMTQsIDIwMTYgYXQgMDk6NTY6MDFQTSArMDEwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IG9iai0+YmFzZS5kbWFfYnVmIHJlcHJlc2VudHMgYSBkbWEtYnVmIGV4cG9ydGVkIGZy b20gdGhpcyBvYmplY3QgKGZvcgo+IHVzZSBieSBvdGhlcnMpLiBPbiB0aGUgY29udHJhcnksIG9i ai0+YmFzZS5pbXBvcnRfYXR0YWNoIHJlcHJlc2VudHMgdGhlCj4gc291cmNlIGRtYS1idWYgdGhh dCB3YXMgdXNlZCB0byBjcmVhdGUgdGhpcyBvYmplY3QgKGlmIGFueSkuIFdoZW4KPiBzZXJpYWxp c2luZyB3aXRoIHRoaXJkIHBhcnRpZXMsIHdlIG5lZWQgdG8gd2FpdCBvbiB0aGVpciByZW5kZXJp bmcgdmlhCj4gdGhlIGltcG9ydCBhdHRhY2htZW50IGFzIHdlbGwgYXMgdGhlaXIgcmVuZGVyaW5n IG9uIG91ciBleHBvcnRlZAo+IGRtYS1idWYuCj4gCj4gdjI6IFdhaXQgb24gYm90aCBpbXBvcnQg YW5kIGV4cG9ydC4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlz LXdpbHNvbi5jby51az4KPiBDYzogQWxleCBHb2lucyA8YWdvaW5zQG52aWRpYS5jb20+Cj4gQ2M6 IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+CgpS ZXZpZXdlZC1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KCj4gLS0t Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2RtYWJ1Zi5oIHwgNDUgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMgICB8IDQ4ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KPiAgMiBmaWxl cyBjaGFuZ2VkLCA3MSBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKPiAgY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2RtYWJ1Zi5oCj4gCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2RtYWJ1Zi5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVmLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ IGluZGV4IDAwMDAwMDAwMDAwMC4uMDkyYmIzNjM2OTNjCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2RtYWJ1Zi5oCj4gQEAgLTAsMCArMSw0NSBA QAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKgo+ICsg KiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBl cnNvbiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0 ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+ICsgKiB0byBkZWFsIGlu IHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1p dGF0aW9uCj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJs aXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2Yg dGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiArICogU29m dHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29u ZGl0aW9uczoKPiArICoKPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMg cGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+ICsgKiBwYXJhZ3JhcGgpIHNo YWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2Yg dGhlCj4gKyAqIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQg IkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJ TVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1F UkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5E IE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4gKyAqIFRIRSBBVVRIT1JTIE9S IENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9U SEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRP UlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNU SU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKPiArICogREVBTElOR1Mg SU4gVEhFIFNPRlRXQVJFLgo+ICsgKgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgX0k5MTVfR0VNX0RN QUJVRl9IXwo+ICsjZGVmaW5lIF9JOTE1X0dFTV9ETUFCVUZfSF8KPiArCj4gKyNpbmNsdWRlIDxs aW51eC9kbWEtYnVmLmg+Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCByZXNlcnZhdGlvbl9v YmplY3QgKgo+ICtpOTE1X2dlbV9vYmplY3RfZ2V0X2RtYWJ1Zl9yZXN2KHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmopCj4gK3sKPiArCXN0cnVjdCBkbWFfYnVmICpkbWFfYnVmOwo+ICsK PiArCWlmIChvYmotPmJhc2UuaW1wb3J0X2F0dGFjaCkKPiArCQlkbWFfYnVmID0gb2JqLT5iYXNl LmltcG9ydF9hdHRhY2gtPmRtYWJ1ZjsKPiArCWVsc2UgaWYgKG9iai0+YmFzZS5kbWFfYnVmKQo+ ICsJCWRtYV9idWYgPSBvYmotPmJhc2UuZG1hX2J1ZjsKPiArCWVsc2UKPiArCQlyZXR1cm4gTlVM TDsKPiArCj4gKwlyZXR1cm4gZG1hX2J1Zi0+cmVzdjsKPiArfQo+ICsKPiArI2VuZGlmCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IDgwMWU0YzE3ZGQ4ZC4uMzM1MzFl NmNiMjM2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC0zNiw2 ICszNiw3IEBACj4gICNpbmNsdWRlICJpbnRlbF9kcnYuaCIKPiAgI2luY2x1ZGUgPGRybS9pOTE1 X2RybS5oPgo+ICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiArI2luY2x1ZGUgImk5MTVfZ2VtX2Rt YWJ1Zi5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfZHNpLmgiCj4gICNpbmNsdWRlICJpOTE1X3RyYWNl LmgiCj4gICNpbmNsdWRlIDxkcm0vZHJtX2F0b21pYy5oPgo+IEBAIC00Niw3ICs0Nyw2IEBACj4g ICNpbmNsdWRlIDxkcm0vZHJtX3JlY3QuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L2RtYV9yZW1hcHBp bmcuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L3Jlc2VydmF0aW9uLmg+Cj4gLSNpbmNsdWRlIDxsaW51 eC9kbWEtYnVmLmg+Cj4gIAo+ICBzdGF0aWMgYm9vbCBpc19tbWlvX3dvcmsoc3RydWN0IGludGVs X2ZsaXBfd29yayAqd29yaykKPiAgewo+IEBAIC0xMTQwNSw2ICsxMTQwNSw4IEBAIHN0YXRpYyBp bnQgaW50ZWxfZ2VuN19xdWV1ZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIHN0YXRp YyBib29sIHVzZV9tbWlvX2ZsaXAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAJ CQkgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gIHsKPiArCXN0cnVjdCByZXNl cnZhdGlvbl9vYmplY3QgKnJlc3Y7Cj4gKwo+ICAJLyoKPiAgCSAqIFRoaXMgaXMgbm90IGJlaW5n IHVzZWQgZm9yIG9sZGVyIHBsYXRmb3JtcywgYmVjYXVzZQo+ICAJICogbm9uLWF2YWlsYWJpbGl0 eSBvZiBmbGlwIGRvbmUgaW50ZXJydXB0IGZvcmNlcyB1cyB0byB1c2UKPiBAQCAtMTE0MjUsMTIg KzExNDI3LDEyIEBAIHN0YXRpYyBib29sIHVzZV9tbWlvX2ZsaXAoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lLAo+ICAJCXJldHVybiB0cnVlOwo+ICAJZWxzZSBpZiAoaTkxNS5lbmFibGVf ZXhlY2xpc3RzKQo+ICAJCXJldHVybiB0cnVlOwo+IC0JZWxzZSBpZiAob2JqLT5iYXNlLmRtYV9i dWYgJiYKPiAtCQkgIXJlc2VydmF0aW9uX29iamVjdF90ZXN0X3NpZ25hbGVkX3JjdShvYmotPmJh c2UuZG1hX2J1Zi0+cmVzdiwKPiAtCQkJCQkJICAgICAgIGZhbHNlKSkKPiArCj4gKwlyZXN2ID0g aTkxNV9nZW1fb2JqZWN0X2dldF9kbWFidWZfcmVzdihvYmopOwo+ICsJaWYgKHJlc3YgJiYgIXJl c2VydmF0aW9uX29iamVjdF90ZXN0X3NpZ25hbGVkX3JjdShyZXN2LCBmYWxzZSkpCj4gIAkJcmV0 dXJuIHRydWU7Cj4gLQllbHNlCj4gLQkJcmV0dXJuIGVuZ2luZSAhPSBpOTE1X2dlbV9yZXF1ZXN0 X2dldF9lbmdpbmUob2JqLT5sYXN0X3dyaXRlX3JlcSk7Cj4gKwo+ICsJcmV0dXJuIGVuZ2luZSAh PSBpOTE1X2dlbV9yZXF1ZXN0X2dldF9lbmdpbmUob2JqLT5sYXN0X3dyaXRlX3JlcSk7Cj4gIH0K PiAgCj4gIHN0YXRpYyB2b2lkIHNrbF9kb19tbWlvX2ZsaXAoc3RydWN0IGludGVsX2NydGMgKmlu dGVsX2NydGMsCj4gQEAgLTExNTE5LDYgKzExNTIxLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfbW1p b19mbGlwX3dvcmtfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpCj4gIAlzdHJ1Y3QgaW50ZWxf ZnJhbWVidWZmZXIgKmludGVsX2ZiID0KPiAgCQl0b19pbnRlbF9mcmFtZWJ1ZmZlcihjcnRjLT5i YXNlLnByaW1hcnktPmZiKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBp bnRlbF9mYi0+b2JqOwo+ICsJc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqcmVzdjsKPiAgCj4g IAlpZiAod29yay0+ZmxpcF9xdWV1ZWRfcmVxKQo+ICAJCVdBUk5fT04oX19pOTE1X3dhaXRfcmVx dWVzdCh3b3JrLT5mbGlwX3F1ZXVlZF9yZXEsCj4gQEAgLTExNTI2LDExICsxMTUyOSwxMCBAQCBz dGF0aWMgdm9pZCBpbnRlbF9tbWlvX2ZsaXBfd29ya19mdW5jKHN0cnVjdCB3b3JrX3N0cnVjdCAq dykKPiAgCQkJCQkgICAgJmRldl9wcml2LT5ycHMubW1pb2ZsaXBzKSk7Cj4gIAo+ICAJLyogRm9y IGZyYW1lYnVmZmVyIGJhY2tlZCBieSBkbWFidWYsIHdhaXQgZm9yIGZlbmNlICovCj4gLQlpZiAo b2JqLT5iYXNlLmRtYV9idWYpCj4gLQkJV0FSTl9PTihyZXNlcnZhdGlvbl9vYmplY3Rfd2FpdF90 aW1lb3V0X3JjdShvYmotPmJhc2UuZG1hX2J1Zi0+cmVzdiwKPiAtCQkJCQkJCSAgICBmYWxzZSwg ZmFsc2UsCj4gKwlyZXN2ID0gaTkxNV9nZW1fb2JqZWN0X2dldF9kbWFidWZfcmVzdihvYmopOwo+ ICsJaWYgKHJlc3YpCj4gKwkJV0FSTl9PTihyZXNlcnZhdGlvbl9vYmplY3Rfd2FpdF90aW1lb3V0 X3JjdShyZXN2LCBmYWxzZSwgZmFsc2UsCj4gIAkJCQkJCQkgICAgTUFYX1NDSEVEVUxFX1RJTUVP VVQpIDwgMCk7Cj4gLQo+ICAJaW50ZWxfcGlwZV91cGRhdGVfc3RhcnQoY3J0Yyk7Cj4gIAo+ICAJ aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPiBAQCAtMTM5MjIsNiArMTM5MjQsNyBAQCBp bnRlbF9wcmVwYXJlX3BsYW5lX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJc3RydWN0 IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKTsKPiAgCXN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYl9vYmooZmIpOwo+ICAJc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9sZF9vYmogPSBpbnRlbF9mYl9vYmoocGxhbmUtPnN0 YXRlLT5mYik7Cj4gKwlzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICpyZXN2Owo+ICAJaW50IHJl dCA9IDA7Cj4gIAo+ICAJaWYgKCFvYmogJiYgIW9sZF9vYmopCj4gQEAgLTEzOTUxLDEyICsxMzk1 NCwxNyBAQCBpbnRlbF9wcmVwYXJlX3BsYW5lX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ ICAJCX0KPiAgCX0KPiAgCj4gKwlpZiAoIW9iaikgewo+ICsJCWk5MTVfZ2VtX3RyYWNrX2ZiKG9s ZF9vYmosIG9iaiwgaW50ZWxfcGxhbmUtPmZyb250YnVmZmVyX2JpdCk7Cj4gKwkJcmV0dXJuIDA7 Cj4gKwl9Cj4gKwo+ICAJLyogRm9yIGZyYW1lYnVmZmVyIGJhY2tlZCBieSBkbWFidWYsIHdhaXQg Zm9yIGZlbmNlICovCj4gLQlpZiAob2JqICYmIG9iai0+YmFzZS5kbWFfYnVmKSB7Cj4gKwlyZXN2 ID0gaTkxNV9nZW1fb2JqZWN0X2dldF9kbWFidWZfcmVzdihvYmopOwo+ICsJaWYgKHJlc3YpIHsK PiAgCQlsb25nIGxyZXQ7Cj4gIAo+IC0JCWxyZXQgPSByZXNlcnZhdGlvbl9vYmplY3Rfd2FpdF90 aW1lb3V0X3JjdShvYmotPmJhc2UuZG1hX2J1Zi0+cmVzdiwKPiAtCQkJCQkJCSAgIGZhbHNlLCB0 cnVlLAo+ICsJCWxyZXQgPSByZXNlcnZhdGlvbl9vYmplY3Rfd2FpdF90aW1lb3V0X3JjdShyZXN2 LCBmYWxzZSwgdHJ1ZSwKPiAgCQkJCQkJCSAgIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTsKPiAgCQlp ZiAobHJldCA9PSAtRVJFU1RBUlRTWVMpCj4gIAkJCXJldHVybiBscmV0Owo+IEBAIC0xMzk2NCw5 ICsxMzk3Miw3IEBAIGludGVsX3ByZXBhcmVfcGxhbmVfZmIoc3RydWN0IGRybV9wbGFuZSAqcGxh bmUsCj4gIAkJV0FSTihscmV0IDwgMCwgIndhaXRpbmcgcmV0dXJucyAlbGlcbiIsIGxyZXQpOwo+ ICAJfQo+ICAKPiAtCWlmICghb2JqKSB7Cj4gLQkJcmV0ID0gMDsKPiAtCX0gZWxzZSBpZiAocGxh bmUtPnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfQ1VSU09SICYmCj4gKwlpZiAocGxhbmUtPnR5cGUg PT0gRFJNX1BMQU5FX1RZUEVfQ1VSU09SICYmCj4gIAkgICAgSU5URUxfSU5GTyhkZXYpLT5jdXJz b3JfbmVlZHNfcGh5c2ljYWwpIHsKPiAgCQlpbnQgYWxpZ24gPSBJU19JODMwKGRldikgPyAxNiAq IDEwMjQgOiAyNTY7Cj4gIAkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X2F0dGFjaF9waHlzKG9iaiwg YWxpZ24pOwo+IEBAIC0xMzk3NywxMyArMTM5ODMsMTEgQEAgaW50ZWxfcHJlcGFyZV9wbGFuZV9m YihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgCX0KPiAgCj4gIAlpZiAocmV0ID09IDApIHsK PiAtCQlpZiAob2JqKSB7Cj4gLQkJCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3Rh dGUgPQo+IC0JCQkJdG9faW50ZWxfcGxhbmVfc3RhdGUobmV3X3N0YXRlKTsKPiArCQlzdHJ1Y3Qg aW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlID0KPiArCQkJdG9faW50ZWxfcGxhbmVfc3Rh dGUobmV3X3N0YXRlKTsKPiAgCj4gLQkJCWk5MTVfZ2VtX3JlcXVlc3RfYXNzaWduKCZwbGFuZV9z dGF0ZS0+d2FpdF9yZXEsCj4gLQkJCQkJCW9iai0+bGFzdF93cml0ZV9yZXEpOwo+IC0JCX0KPiAr CQlpOTE1X2dlbV9yZXF1ZXN0X2Fzc2lnbigmcGxhbmVfc3RhdGUtPndhaXRfcmVxLAo+ICsJCQkJ CW9iai0+bGFzdF93cml0ZV9yZXEpOwo+ICAKPiAgCQlpOTE1X2dlbV90cmFja19mYihvbGRfb2Jq LCBvYmosIGludGVsX3BsYW5lLT5mcm9udGJ1ZmZlcl9iaXQpOwo+ICAJfQo+IC0tIAo+IDIuOC4x Cj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJ bnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 CgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24K aHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4Cg==