From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: Re: [PATCH] drm/xen-front: Make shmem backed display buffer coherent Date: Wed, 19 Dec 2018 10:18:06 +0200 Message-ID: References: <20181127103252.20994-1-andr2000@gmail.com> <17640791-5306-f7e4-8588-dd39c14e975b@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail-lf1-x143.google.com (mail-lf1-x143.google.com [IPv6:2a00:1450:4864:20::143]) by gabe.freedesktop.org (Postfix) with ESMTPS id C2D766EDFB for ; Wed, 19 Dec 2018 08:18:09 +0000 (UTC) Received: by mail-lf1-x143.google.com with SMTP id u18so14336839lff.10 for ; Wed, 19 Dec 2018 00:18:09 -0800 (PST) In-Reply-To: <17640791-5306-f7e4-8588-dd39c14e975b@tronnes.org> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: =?UTF-8?Q?Noralf_Tr=c3=b8nnes?= , xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, daniel.vetter@intel.com, jgross@suse.com, boris.ostrovsky@oracle.com Cc: Oleksandr Andrushchenko List-Id: dri-devel@lists.freedesktop.org T24gMTIvMTgvMTggOToyMCBQTSwgTm9yYWxmIFRyw7hubmVzIHdyb3RlOgo+Cj4gRGVuIDI3LjEx LjIwMTggMTEuMzIsIHNrcmV2IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvOgo+PiBGcm9tOiBPbGVr c2FuZHIgQW5kcnVzaGNoZW5rbyA8b2xla3NhbmRyX2FuZHJ1c2hjaGVua29AZXBhbS5jb20+Cj4+ Cj4+IFdoZW4gR0VNIGJhY2tpbmcgc3RvcmFnZSBpcyBhbGxvY2F0ZWQgd2l0aCBkcm1fZ2VtX2dl dF9wYWdlcwo+PiB0aGUgYmFja2luZyBwYWdlcyBtYXkgYmUgY2FjaGVkLCB0aHVzIG1ha2luZyBp dCBwb3NzaWJsZSB0aGF0Cj4+IHRoZSBiYWNrZW5kIHNlZXMgb25seSBwYXJ0aWFsIGNvbnRlbnQg b2YgdGhlIGJ1ZmZlciB3aGljaCBtYXkKPj4gbGVhZCB0byBzY3JlZW4gYXJ0aWZhY3RzLiBNYWtl IHN1cmUgdGhhdCB0aGUgZnJvbnRlbmQncwo+PiBtZW1vcnkgaXMgY29oZXJlbnQgYW5kIHRoZSBi YWNrZW5kIGFsd2F5cyBzZWVzIGNvcnJlY3QgZGlzcGxheQo+PiBidWZmZXIgY29udGVudC4KPj4K Pj4gRml4ZXM6IGM1NzViN2VlYjg5ZiAoImRybS94ZW4tZnJvbnQ6IEFkZCBzdXBwb3J0IGZvciBY ZW4gUFYgZGlzcGxheSAKPj4gZnJvbnRlbmQiKQo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBPbGVrc2Fu ZHIgQW5kcnVzaGNoZW5rbyAKPj4gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgo+ PiAtLS0KPj4gwqAgZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250X2dlbS5jIHwgNjIg KysrKysrKysrKysrKysrKysrKy0tLS0tLQo+PiDCoCAxIGZpbGUgY2hhbmdlZCwgNDggaW5zZXJ0 aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0veGVuL3hlbl9kcm1fZnJvbnRfZ2VtLmMgCj4+IGIvZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5f ZHJtX2Zyb250X2dlbS5jCj4+IGluZGV4IDQ3ZmYwMTlkM2FlZi4uYzU5MjczNWU0OWQyIDEwMDY0 NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnRfZ2VtLmMKPj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250X2dlbS5jCj4+IEBAIC0zMyw4ICsz MywxMSBAQCBzdHJ1Y3QgeGVuX2dlbV9vYmplY3Qgewo+PiDCoMKgwqDCoMKgIC8qIHNldCBmb3Ig YnVmZmVycyBhbGxvY2F0ZWQgYnkgdGhlIGJhY2tlbmQgKi8KPj4gwqDCoMKgwqDCoCBib29sIGJl X2FsbG9jOwo+PiDCoCAtwqDCoMKgIC8qIHRoaXMgaXMgZm9yIGltcG9ydGVkIFBSSU1FIGJ1ZmZl ciAqLwo+PiAtwqDCoMKgIHN0cnVjdCBzZ190YWJsZSAqc2d0X2ltcG9ydGVkOwo+PiArwqDCoMKg IC8qCj4+ICvCoMKgwqDCoCAqIHRoaXMgaXMgZm9yIGltcG9ydGVkIFBSSU1FIGJ1ZmZlciBvciB0 aGUgb25lIGFsbG9jYXRlZCB2aWEKPj4gK8KgwqDCoMKgICogZHJtX2dlbV9nZXRfcGFnZXMuCj4+ ICvCoMKgwqDCoCAqLwo+PiArwqDCoMKgIHN0cnVjdCBzZ190YWJsZSAqc2d0Owo+PiDCoCB9Owo+ PiDCoCDCoCBzdGF0aWMgaW5saW5lIHN0cnVjdCB4ZW5fZ2VtX29iamVjdCAqCj4+IEBAIC03Nywx MCArODAsMjEgQEAgc3RhdGljIHN0cnVjdCB4ZW5fZ2VtX29iamVjdCAKPj4gKmdlbV9jcmVhdGVf b2JqKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+IMKgwqDCoMKgwqAgcmV0dXJuIHhlbl9vYmo7 Cj4+IMKgIH0KPj4gwqAgK3N0cnVjdCBzZ190YWJsZSAqeGVuX2RybV9mcm9udF9nZW1fZ2V0X3Nn X3RhYmxlKHN0cnVjdCAKPj4gZHJtX2dlbV9vYmplY3QgKmdlbV9vYmopCj4+ICt7Cj4+ICvCoMKg wqAgc3RydWN0IHhlbl9nZW1fb2JqZWN0ICp4ZW5fb2JqID0gdG9feGVuX2dlbV9vYmooZ2VtX29i aik7Cj4+ICsKPj4gK8KgwqDCoCBpZiAoIXhlbl9vYmotPnBhZ2VzKQo+PiArwqDCoMKgwqDCoMKg wqAgcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4+ICsKPj4gK8KgwqDCoCByZXR1cm4gZHJtX3By aW1lX3BhZ2VzX3RvX3NnKHhlbl9vYmotPnBhZ2VzLCB4ZW5fb2JqLT5udW1fcGFnZXMpOwo+PiAr fQo+PiArCj4+IMKgIHN0YXRpYyBzdHJ1Y3QgeGVuX2dlbV9vYmplY3QgKmdlbV9jcmVhdGUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgCj4+IHNpemVfdCBzaXplKQo+PiDCoCB7Cj4+IMKgwqDCoMKg wqAgc3RydWN0IHhlbl9kcm1fZnJvbnRfZHJtX2luZm8gKmRybV9pbmZvID0gZGV2LT5kZXZfcHJp dmF0ZTsKPj4gwqDCoMKgwqDCoCBzdHJ1Y3QgeGVuX2dlbV9vYmplY3QgKnhlbl9vYmo7Cj4+ICvC oMKgwqAgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmc7Cj4+IMKgwqDCoMKgwqAgaW50IHJl dDsKPj4gwqAgwqDCoMKgwqDCoCBzaXplID0gcm91bmRfdXAoc2l6ZSwgUEFHRV9TSVpFKTsKPj4g QEAgLTExMywxMCArMTI3LDE0IEBAIHN0YXRpYyBzdHJ1Y3QgeGVuX2dlbV9vYmplY3QgKmdlbV9j cmVhdGUoc3RydWN0IAo+PiBkcm1fZGV2aWNlICpkZXYsIHNpemVfdCBzaXplKQo+PiDCoMKgwqDC oMKgwqDCoMKgwqAgeGVuX29iai0+YmVfYWxsb2MgPSB0cnVlOwo+PiDCoMKgwqDCoMKgwqDCoMKg wqAgcmV0dXJuIHhlbl9vYmo7Cj4+IMKgwqDCoMKgwqAgfQo+PiArCj4+IMKgwqDCoMKgwqAgLyoK Pj4gwqDCoMKgwqDCoMKgICogbmVlZCB0byBhbGxvY2F0ZSBiYWNraW5nIHBhZ2VzIG5vdywgc28g d2UgY2FuIHNoYXJlIHRob3NlCj4+IMKgwqDCoMKgwqDCoCAqIHdpdGggdGhlIGJhY2tlbmQKPj4g wqDCoMKgwqDCoMKgICovCj4KPgo+IExldCdzIHNlZSBpZiBJIHVuZGVyc3RhbmQgd2hhdCB5b3Un cmUgZG9pbmc6Cj4KPiBIZXJlIHlvdSBzYXkgdGhhdCB0aGUgcGFnZXMgc2hvdWxkIGJlIERNQSBh Y2Nlc3NpYmxlIGZvciBkZXZpY2VzIHRoYXQgY2FuCj4gb25seSBzZWUgNEdCLgoKWWVzLCB5b3Vy IHVuZGVyc3RhbmRpbmcgaXMgY29ycmVjdC4gQXMgd2UgYXJlIGEgcGFyYS12aXJ0dWFsaXplZCBk ZXZpY2Ugd2UKCmRvIG5vdCBoYXZlIHN0cmljdCByZXF1aXJlbWVudHMgZm9yIDMyLWJpdCBETUEu IEJ1dCwgdmlhIGRtYS1idWYgZXhwb3J0LAoKdGhlIGJ1ZmZlciB3ZSBjcmVhdGUgY2FuIGJlIHVz ZWQgYnkgcmVhbCBIVywgZS5nLiBvbmUgY2FuIHBhc3MtdGhyb3VnaAoKcmVhbCBIVyBkZXZpY2Vz IGludG8gYSBndWVzdCBkb21haW4gYW5kIHRoZXkgY2FuIGltcG9ydCBvdXIgYnVmZmVyICh5ZXMs Cgp0aGV5IGNhbiBiZSBJT01NVSBiYWNrZWQgYW5kIG90aGVyIGNvbmRpdGlvbnMgbWF5IGFwcGx5 KS4KClNvLCB0aGlzIGlzIHdoeSB3ZSBhcmUgbGltaXRpbmcgdG8gRE1BMzIgaGVyZSwganVzdCB0 byBhbGxvdyBtb3JlIHBvc3NpYmxlCgp1c2UtY2FzZXMKCj4KPj4gK8KgwqDCoCBtYXBwaW5nID0g eGVuX29iai0+YmFzZS5maWxwLT5mX21hcHBpbmc7Cj4+ICvCoMKgwqAgbWFwcGluZ19zZXRfZ2Zw X21hc2sobWFwcGluZywgR0ZQX1VTRVIgfCBfX0dGUF9ETUEzMik7Cj4+ICsKPj4gwqDCoMKgwqDC oCB4ZW5fb2JqLT5udW1fcGFnZXMgPSBESVZfUk9VTkRfVVAoc2l6ZSwgUEFHRV9TSVpFKTsKPj4g wqDCoMKgwqDCoCB4ZW5fb2JqLT5wYWdlcyA9IGRybV9nZW1fZ2V0X3BhZ2VzKCZ4ZW5fb2JqLT5i YXNlKTsKPj4gwqDCoMKgwqDCoCBpZiAoSVNfRVJSX09SX05VTEwoeGVuX29iai0+cGFnZXMpKSB7 Cj4+IEBAIC0xMjUsOCArMTQzLDI3IEBAIHN0YXRpYyBzdHJ1Y3QgeGVuX2dlbV9vYmplY3QgKmdl bV9jcmVhdGUoc3RydWN0IAo+PiBkcm1fZGV2aWNlICpkZXYsIHNpemVfdCBzaXplKQo+PiDCoMKg wqDCoMKgwqDCoMKgwqAgZ290byBmYWlsOwo+PiDCoMKgwqDCoMKgIH0KPj4gwqAgK8KgwqDCoCB4 ZW5fb2JqLT5zZ3QgPSB4ZW5fZHJtX2Zyb250X2dlbV9nZXRfc2dfdGFibGUoJnhlbl9vYmotPmJh c2UpOwo+PiArwqDCoMKgIGlmIChJU19FUlJfT1JfTlVMTCh4ZW5fb2JqLT5zZ3QpKXsKPj4gK8Kg wqDCoMKgwqDCoMKgIHJldCA9IFBUUl9FUlIoeGVuX29iai0+c2d0KTsKPj4gK8KgwqDCoMKgwqDC oMKgIHhlbl9vYmotPnNndCA9IE5VTEw7Cj4+ICvCoMKgwqDCoMKgwqDCoCBnb3RvIGZhaWxfcHV0 X3BhZ2VzOwo+PiArwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgIGlmICghZG1hX21hcF9zZyhkZXYt PmRldiwgeGVuX29iai0+c2d0LT5zZ2wsIHhlbl9vYmotPnNndC0+bmVudHMsCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIERNQV9CSURJUkVDVElPTkFMKSkgewo+Cj4KPiBBcmUgeW91IHVzaW5n IHRoZSBETUEgc3RyZWFtaW5nIEFQSSBhcyBhIHdheSB0byBmbHVzaCB0aGUgY2FjaGVzPwpZZXMK PiBEb2VzIHRoaXMgbWVhbiB0aGF0IEdGUF9VU0VSIGlzbid0IG1ha2luZyB0aGUgYnVmZmVyIGNv aGVyZW50PwoKTm8sIGl0IGRpZG4ndCBoZWxwLiBJIGhhZCBhIHF1ZXN0aW9uIFsxXSBpZiB0aGVy ZSBhcmUgYW55IG90aGVyIGJldHRlciB3YXkKCnRvIGFjaGlldmUgdGhlIHNhbWUsIGJ1dCBkaWRu J3QgaGF2ZSBhbnkgcmVzcG9uc2UgeWV0LiBTbywgSSBpbXBsZW1lbnRlZAoKaXQgdmlhIERNQSBB UEkgd2hpY2ggaGVscGVkLgoKPgo+IE5vcmFsZi4KPgo+PiArwqDCoMKgwqDCoMKgwqAgcmV0ID0g LUVGQVVMVDsKPj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gZmFpbF9mcmVlX3NndDsKPj4gK8KgwqDC oCB9Cj4+ICsKPj4gwqDCoMKgwqDCoCByZXR1cm4geGVuX29iajsKPj4gwqAgK2ZhaWxfZnJlZV9z Z3Q6Cj4+ICvCoMKgwqAgc2dfZnJlZV90YWJsZSh4ZW5fb2JqLT5zZ3QpOwo+PiArwqDCoMKgIHhl bl9vYmotPnNndCA9IE5VTEw7Cj4+ICtmYWlsX3B1dF9wYWdlczoKPj4gK8KgwqDCoCBkcm1fZ2Vt X3B1dF9wYWdlcygmeGVuX29iai0+YmFzZSwgeGVuX29iai0+cGFnZXMsIHRydWUsIGZhbHNlKTsK Pj4gK8KgwqDCoCB4ZW5fb2JqLT5wYWdlcyA9IE5VTEw7Cj4+IMKgIGZhaWw6Cj4+IMKgwqDCoMKg wqAgRFJNX0VSUk9SKCJGYWlsZWQgdG8gYWxsb2NhdGUgYnVmZmVyIHdpdGggc2l6ZSAlenVcbiIs IHNpemUpOwo+PiDCoMKgwqDCoMKgIHJldHVybiBFUlJfUFRSKHJldCk7Cj4+IEBAIC0xNDksNyAr MTg2LDcgQEAgdm9pZCAKPj4geGVuX2RybV9mcm9udF9nZW1fZnJlZV9vYmplY3RfdW5sb2NrZWQo c3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW1fb2JqKQo+PiDCoMKgwqDCoMKgIHN0cnVjdCB4ZW5f Z2VtX29iamVjdCAqeGVuX29iaiA9IHRvX3hlbl9nZW1fb2JqKGdlbV9vYmopOwo+PiDCoCDCoMKg wqDCoMKgIGlmICh4ZW5fb2JqLT5iYXNlLmltcG9ydF9hdHRhY2gpIHsKPj4gLcKgwqDCoMKgwqDC oMKgIGRybV9wcmltZV9nZW1fZGVzdHJveSgmeGVuX29iai0+YmFzZSwgeGVuX29iai0+c2d0X2lt cG9ydGVkKTsKPj4gK8KgwqDCoMKgwqDCoMKgIGRybV9wcmltZV9nZW1fZGVzdHJveSgmeGVuX29i ai0+YmFzZSwgeGVuX29iai0+c2d0KTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGdlbV9mcmVlX3Bh Z2VzX2FycmF5KHhlbl9vYmopOwo+PiDCoMKgwqDCoMKgIH0gZWxzZSB7Cj4+IMKgwqDCoMKgwqDC oMKgwqDCoCBpZiAoeGVuX29iai0+cGFnZXMpIHsKPj4gQEAgLTE1OCw2ICsxOTUsMTMgQEAgdm9p ZCAKPj4geGVuX2RybV9mcm9udF9nZW1fZnJlZV9vYmplY3RfdW5sb2NrZWQoc3RydWN0IGRybV9n ZW1fb2JqZWN0ICpnZW1fb2JqKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHhlbl9vYmotPnBhZ2VzKTsKPj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnZW1fZnJlZV9wYWdlc19hcnJheSh4ZW5fb2JqKTsKPj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfSBlbHNlIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBpZiAoeGVuX29iai0+c2d0KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBkbWFfdW5tYXBfc2coeGVuX29iai0+YmFzZS5kZXYtPmRldiwK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHhlbl9vYmotPnNndC0+c2dsLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgeGVuX29iai0+c2d0LT5uZW50cywKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERNQV9C SURJUkVDVElPTkFMKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHNnX2ZyZWVfdGFibGUoeGVuX29iai0+c2d0KTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB9Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZHJtX2dlbV9w dXRfcGFnZXMoJnhlbl9vYmotPmJhc2UsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB4ZW5fb2JqLT5wYWdlcywgdHJ1ZSwgZmFsc2UpOwo+ PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+IEBAIC0xNzQsMTYgKzIxOCw2IEBAIHN0 cnVjdCBwYWdlICoqeGVuX2RybV9mcm9udF9nZW1fZ2V0X3BhZ2VzKHN0cnVjdCAKPj4gZHJtX2dl bV9vYmplY3QgKmdlbV9vYmopCj4+IMKgwqDCoMKgwqAgcmV0dXJuIHhlbl9vYmotPnBhZ2VzOwo+ PiDCoCB9Cj4+IMKgIC1zdHJ1Y3Qgc2dfdGFibGUgKnhlbl9kcm1fZnJvbnRfZ2VtX2dldF9zZ190 YWJsZShzdHJ1Y3QgCj4+IGRybV9nZW1fb2JqZWN0ICpnZW1fb2JqKQo+PiAtewo+PiAtwqDCoMKg IHN0cnVjdCB4ZW5fZ2VtX29iamVjdCAqeGVuX29iaiA9IHRvX3hlbl9nZW1fb2JqKGdlbV9vYmop Owo+PiAtCj4+IC3CoMKgwqAgaWYgKCF4ZW5fb2JqLT5wYWdlcykKPj4gLcKgwqDCoMKgwqDCoMKg IHJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+PiAtCj4+IC3CoMKgwqAgcmV0dXJuIGRybV9wcmlt ZV9wYWdlc190b19zZyh4ZW5fb2JqLT5wYWdlcywgeGVuX29iai0+bnVtX3BhZ2VzKTsKPj4gLX0K Pj4gLQo+PiDCoCBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKgo+PiDCoCB4ZW5fZHJtX2Zyb250X2dl bV9pbXBvcnRfc2dfdGFibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0 YWNoLAo+PiBAQCAtMjAzLDcgKzIzNyw3IEBAIHhlbl9kcm1fZnJvbnRfZ2VtX2ltcG9ydF9zZ190 YWJsZShzdHJ1Y3QgCj4+IGRybV9kZXZpY2UgKmRldiwKPj4gwqDCoMKgwqDCoCBpZiAocmV0IDwg MCkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBFUlJfUFRSKHJldCk7Cj4+IMKgIC3CoMKg wqAgeGVuX29iai0+c2d0X2ltcG9ydGVkID0gc2d0Owo+PiArwqDCoMKgIHhlbl9vYmotPnNndCA9 IHNndDsKPj4gwqAgwqDCoMKgwqDCoCByZXQgPSBkcm1fcHJpbWVfc2dfdG9fcGFnZV9hZGRyX2Fy cmF5cyhzZ3QsIHhlbl9vYmotPnBhZ2VzLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBOVUxMLCB4ZW5fb2JqLT5udW1fcGFnZXMpOwo+ IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gZHJpLWRl dmVsIG1haWxpbmcgbGlzdAo+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAoKVGhh bmsgeW91LAoKT2xla3NhbmRyCgpbMV0gCmh0dHBzOi8vd3d3Lm1haWwtYXJjaGl2ZS5jb20veGVu LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnL21zZzMxNzQ1Lmh0bWwKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QK ZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=