From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v3 4/4] drm: Resurrect atomic rmfb code, v3 Date: Thu, 16 Feb 2017 11:45:59 +0200 Message-ID: <87y3x6o4dk.fsf@intel.com> References: <1481812185-19098-1-git-send-email-maarten.lankhorst@linux.intel.com> <1481812185-19098-5-git-send-email-maarten.lankhorst@linux.intel.com> <20170111161547.lfbt7e6kybimy625@phenom.ffwll.local> <20170124214454.GJ15212@intel.com> <20170125045445.uu2ytrkbupufolbu@phenom.ffwll.local> <66fc3da5-697b-1613-0a67-a5293209f0dc@linux.intel.com> <87k28rpngm.fsf@intel.com> <20170215162820.GA63938@promb-2n-dhcp139.eng.vmware.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170215162820.GA63938@promb-2n-dhcp139.eng.vmware.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Sinclair Yeh Cc: Thomas Hellstrom , Daniel Vetter , intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, Daniel Vetter List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCAxNSBGZWIgMjAxNywgU2luY2xhaXIgWWVoIDxzeWVoQHZtd2FyZS5jb20+IHdyb3Rl Ogo+IE9uIFdlZCwgRmViIDE1LCAyMDE3IGF0IDAzOjU2OjA5UE0gKzAyMDAsIEphbmkgTmlrdWxh IHdyb3RlOgo+PiBPbiBXZWQsIDI1IEphbiAyMDE3LCBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRl bi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPiB3cm90ZToKPj4gPiBUaGlzIHdhcyBzb21laG93 IGxvc3QgYmV0d2VlbiB2MyBhbmQgdGhlIG1lcmdlZCB2ZXJzaW9uIGluIE1hYXJ0ZW4ncwo+PiA+ IHBhdGNoIG1lcmdlZCBhczoKPj4gPgo+PiA+IGNvbW1pdCBmMmQ1ODBiOWE4MTQ5NzM1Y2JjNGI1 OWM0YThkZjYwMTczNjU4MTQwCj4+ID4gQXV0aG9yOiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRl bi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+PiA+IERhdGU6ICAgV2VkIE1heSA0IDE0OjM4 OjI2IDIwMTYgKzAyMDAKPj4gPgo+PiA+ICAgICBkcm0vY29yZTogRG8gbm90IHByZXNlcnZlIGZy YW1lYnVmZmVyIG9uIHJtZmIsIHY0Lgo+PiA+Cj4+ID4gVGhpcyBpbnRyb2R1Y2VzIGEgc2xpZ2h0 IGJlaGF2aW9yYWwgY2hhbmdlIHRvIHJtZmIuIEluc3RlYWQgb2YKPj4gPiBkaXNhYmxpbmcgYSBj cnRjIHdoZW4gdGhlIHByaW1hcnkgcGxhbmUgaXMgZGlzYWJsZWQsIHdlIHRyeSB0bwo+PiA+IHBy ZXNlcnZlIGl0Lgo+PiA+Cj4+ID4gQXBhcnQgZnJvbSBvbGQgdmVyc2lvbnMgb2YgdGhlIHZtd2dm eCB4b3JnIGRyaXZlciwgdGhlcmUgaXMKPj4gPiBub3RoaW5nIGRlcGVuZGluZyBvbiBybWZiIGRp c2FibGluZyBhIGNydGMuIFNpbmNlIHZtd2dmeCBpcwo+PiA+IGEgbGVnYWN5IGRyaXZlciB3ZSBj YW4gc2FmZWx5IG9ubHkgZGlzYWJsZSB0aGUgcGxhbmUgd2l0aCBhdG9taWMuCj4+ID4KPj4gPiBJ ZiB0aGlzIGNvbW1pdCBpcyByZWplY3RlZCBieSB0aGUgZHJpdmVyIHRoZW4gd2Ugd2lsbCBzdGls bCBmYWxsCj4+ID4gYmFjayB0byB0aGUgb2xkIGJlaGF2aW9yIGFuZCB0dXJuIG9mZiB0aGUgY3J0 Yy4KPj4gPgo+PiA+IHYyOgo+PiA+IC0gUmVtb3ZlIHBsYW5lLT5mYiBhc3NpZ25tZW50LCBkb25l IGJ5IGRybV9hdG9taWNfY2xlYW5fb2xkX2ZiLgo+PiA+IC0gQWRkIFdBUk5fT04gd2hlbiBhdG9t aWNfcmVtb3ZlX2ZiIGZhaWxzLgo+PiA+IC0gQWx3YXlzIGNhbGwgZHJtX2F0b21pY19zdGF0ZV9w dXQuCj4+ID4gdjM6Cj4+ID4gLSBVc2UgZHJtX2Rydl91c2VzX2F0b21pY19tb2Rlc2V0Cj4+ID4g LSBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhlIGZpcnN0IHBsYW5lLWRpc2FibGUtb25seSBjb21t aXQgZmFpbHMKPj4gPiAgIHdpdGggLUVJTlZBTC4gU29tZSBkcml2ZXJzIGRvIG5vdCBzdXBwb3J0 IHRoaXMsIGZhbGwgYmFjayB0bwo+PiA+ICAgZGlzYWJsaW5nIGFsbCBjcnRjJ3MgaW4gdGhpcyBj YXNlLgo+PiA+Cj4+ID4gU2lnbmVkLW9mZi1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRl ckBpbnRlbC5jb20+Cj4+ID4gU2lnbmVkLW9mZi1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZl dHRlckBmZndsbC5jaD4KPj4gPiBTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFh cnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+PiAKPj4gUHVzaGVkIHRvIGRybS1taXNj LW5leHQtZml4ZXMsIGFuZCBzZW50IHRoZSBwdWxsIHJlcXVlc3QgdG8gRGF2ZS4gVGhhbmtzCj4+ IGZvciB0aGUgcGF0Y2guCj4KPiBJIHZlcmlmaWVkIHllc3RlcmRheSB0aGF0IHRoaXMgcGF0Y2gg d2lsbCBjYXVzZSBhIHJlZ3Jlc3Npb24gZm9yIHZtd2dmeAo+IG11bHRpLW1vbi4gIENhbiB3ZSBo b2xkIG9mZiBvbiB0aGlzPwoKVHVybnMgb3V0IGl0IGZhaWxzIHNvbWUgb2Ygb3VyIHRlc3RzIHRv by4gTWF5YmUgdGhyZWUgd2Vla3Mgb2xkIENJCnJlc3VsdHMgYXJlIG5vdCB0byBiZSB0cnVzdGVk LCB0aGUgYmFzZSBtb3ZlcyB0b28gZmFzdC4gKnNocnVnKi4KCkkndmUgZHJvcHBlZCB0aGUgcGF0 Y2gsIGFuZCBhc2tlZCBEYXZlIG5vdCB0byBwdWxsLiBMZXQncyBnbyBiYWNrIHRvIHRoZQpkcmF3 aW5nIGJvYXJkLi4uCgpCUiwKSmFuaS4KCgo+Cj4KPgo+PiAKPj4gQlIsCj4+IEphbmkuCj4+IAo+ PiAKPj4gPiAtLS0KPj4gPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYyAgICAgICAgfCAx MDYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+ID4gIGRyaXZlcnMvZ3B1 L2RybS9kcm1fY3J0Y19pbnRlcm5hbC5oIHwgICAxICsKPj4gPiAgZHJpdmVycy9ncHUvZHJtL2Ry bV9mcmFtZWJ1ZmZlci5jICAgfCAgIDcgKysrCj4+ID4gIDMgZmlsZXMgY2hhbmdlZCwgMTE0IGlu c2VydGlvbnMoKykKPj4gPgo+PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0 b21pYy5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwo+PiA+IGluZGV4IDcyMzM5MmZj OThjOC4uYzc5YWI4MDQ4NDM1IDEwMDY0NAo+PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1f YXRvbWljLmMKPj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jCj4+ID4gQEAg LTIwNTgsNiArMjA1OCwxMTIgQEAgc3RhdGljIHZvaWQgY29tcGxldGVfY3J0Y19zaWduYWxpbmco c3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4gPiAgCWtmcmVlKGZlbmNlX3N0YXRlKTsKPj4gPiAg fQo+PiA+ICAKPj4gPiAraW50IGRybV9hdG9taWNfcmVtb3ZlX2ZiKHN0cnVjdCBkcm1fZnJhbWVi dWZmZXIgKmZiKQo+PiA+ICt7Cj4+ID4gKwlzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9jdHgg Y3R4Owo+PiA+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGZiLT5kZXY7Cj4+ID4gKwlzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGU7Cj4+ID4gKwlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZTsKPj4gPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uOwo+PiA+ICsJc3RydWN0IGRybV9j b25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGU7Cj4+ID4gKwlpbnQgaSwgcmV0ID0gMDsKPj4gPiAr CXVuc2lnbmVkIHBsYW5lX21hc2ssIGRpc2FibGVfY3J0Y3MgPSBmYWxzZTsKPj4gPiArCj4+ID4g KwlzdGF0ZSA9IGRybV9hdG9taWNfc3RhdGVfYWxsb2MoZGV2KTsKPj4gPiArCWlmICghc3RhdGUp Cj4+ID4gKwkJcmV0dXJuIC1FTk9NRU07Cj4+ID4gKwo+PiA+ICsJZHJtX21vZGVzZXRfYWNxdWly ZV9pbml0KCZjdHgsIDApOwo+PiA+ICsJc3RhdGUtPmFjcXVpcmVfY3R4ID0gJmN0eDsKPj4gPiAr Cj4+ID4gK3JldHJ5Ogo+PiA+ICsJcGxhbmVfbWFzayA9IDA7Cj4+ID4gKwlyZXQgPSBkcm1fbW9k ZXNldF9sb2NrX2FsbF9jdHgoZGV2LCAmY3R4KTsKPj4gPiArCWlmIChyZXQpCj4+ID4gKwkJZ290 byB1bmxvY2s7Cj4+ID4gKwo+PiA+ICsJZHJtX2Zvcl9lYWNoX3BsYW5lKHBsYW5lLCBkZXYpIHsK Pj4gPiArCQlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsKPj4gPiArCj4+ID4g KwkJaWYgKHBsYW5lLT5zdGF0ZS0+ZmIgIT0gZmIpCj4+ID4gKwkJCWNvbnRpbnVlOwo+PiA+ICsK Pj4gPiArCQlwbGFuZV9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X3BsYW5lX3N0YXRlKHN0YXRlLCBw bGFuZSk7Cj4+ID4gKwkJaWYgKElTX0VSUihwbGFuZV9zdGF0ZSkpIHsKPj4gPiArCQkJcmV0ID0g UFRSX0VSUihwbGFuZV9zdGF0ZSk7Cj4+ID4gKwkJCWdvdG8gdW5sb2NrOwo+PiA+ICsJCX0KPj4g PiArCj4+ID4gKwkJLyoKPj4gPiArCQkgKiBTb21lIGRyaXZlcnMgZG8gbm90IHN1cHBvcnQga2Vl cGluZyBjcnRjIGFjdGl2ZSB3aXRoIHRoZQo+PiA+ICsJCSAqIHByaW1hcnkgcGxhbmUgZGlzYWJs ZWQuIElmIHdlIGZhaWwgdG8gY29tbWl0IHdpdGggLUVJTlZBTAo+PiA+ICsJCSAqIHRoZW4gd2Ug d2lsbCB0cnkgdG8gcGVyZm9ybSB0aGUgc2FtZSBjb21taXQgYnV0IHdpdGggYWxsCj4+ID4gKwkJ ICogY3J0YydzIGRpc2FibGVkIGZvciBwcmltYXJ5IHBsYW5lcyBhcyB3ZWxsLgo+PiA+ICsJCSAq Lwo+PiA+ICsJCWlmIChkaXNhYmxlX2NydGNzICYmIHBsYW5lX3N0YXRlLT5jcnRjLT5wcmltYXJ5 ID09IHBsYW5lKSB7Cj4+ID4gKwkJCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsK Pj4gPiArCj4+ID4gKwkJCWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9leGlzdGluZ19jcnRj X3N0YXRlKHN0YXRlLCBwbGFuZV9zdGF0ZS0+Y3J0Yyk7Cj4+ID4gKwo+PiA+ICsJCQlyZXQgPSBk cm1fYXRvbWljX2FkZF9hZmZlY3RlZF9jb25uZWN0b3JzKHN0YXRlLCBwbGFuZV9zdGF0ZS0+Y3J0 Yyk7Cj4+ID4gKwkJCWlmIChyZXQpCj4+ID4gKwkJCQlnb3RvIHVubG9jazsKPj4gPiArCj4+ID4g KwkJCWNydGNfc3RhdGUtPmFjdGl2ZSA9IGZhbHNlOwo+PiA+ICsJCQlyZXQgPSBkcm1fYXRvbWlj X3NldF9tb2RlX2Zvcl9jcnRjKGNydGNfc3RhdGUsIE5VTEwpOwo+PiA+ICsJCQlpZiAocmV0KQo+ PiA+ICsJCQkJZ290byB1bmxvY2s7Cj4+ID4gKwkJfQo+PiA+ICsKPj4gPiArCQlkcm1fYXRvbWlj X3NldF9mYl9mb3JfcGxhbmUocGxhbmVfc3RhdGUsIE5VTEwpOwo+PiA+ICsJCXJldCA9IGRybV9h dG9taWNfc2V0X2NydGNfZm9yX3BsYW5lKHBsYW5lX3N0YXRlLCBOVUxMKTsKPj4gPiArCQlpZiAo cmV0KQo+PiA+ICsJCQlnb3RvIHVubG9jazsKPj4gPiArCj4+ID4gKwkJcGxhbmVfbWFzayB8PSBC SVQoZHJtX3BsYW5lX2luZGV4KHBsYW5lKSk7Cj4+ID4gKwo+PiA+ICsJCXBsYW5lLT5vbGRfZmIg PSBwbGFuZS0+ZmI7Cj4+ID4gKwl9Cj4+ID4gKwo+PiA+ICsJLyogVGhpcyBsaXN0IGlzIG9ubHkg bm90IGVtcHR5IHdoZW4gZGlzYWJsZV9jcnRjcyBpcyBzZXQuICovCj4+ID4gKwlmb3JfZWFjaF9j b25uZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGNvbm4sIGNvbm5fc3RhdGUsIGkpIHsKPj4gPiArCQly ZXQgPSBkcm1fYXRvbWljX3NldF9jcnRjX2Zvcl9jb25uZWN0b3IoY29ubl9zdGF0ZSwgTlVMTCk7 Cj4+ID4gKwo+PiA+ICsJCWlmIChyZXQpCj4+ID4gKwkJCWdvdG8gdW5sb2NrOwo+PiA+ICsJfQo+ PiA+ICsKPj4gPiArCWlmIChwbGFuZV9tYXNrKQo+PiA+ICsJCXJldCA9IGRybV9hdG9taWNfY29t bWl0KHN0YXRlKTsKPj4gPiArCj4+ID4gK3VubG9jazoKPj4gPiArCWlmIChwbGFuZV9tYXNrKQo+ PiA+ICsJCWRybV9hdG9taWNfY2xlYW5fb2xkX2ZiKGRldiwgcGxhbmVfbWFzaywgcmV0KTsKPj4g PiArCj4+ID4gKwlpZiAocmV0ID09IC1FREVBRExLKSB7Cj4+ID4gKwkJZHJtX21vZGVzZXRfYmFj a29mZigmY3R4KTsKPj4gPiArCQlnb3RvIHJldHJ5Owo+PiA+ICsJfQo+PiA+ICsKPj4gPiArCWRy bV9hdG9taWNfc3RhdGVfcHV0KHN0YXRlKTsKPj4gPiArCj4+ID4gKwlpZiAocmV0ID09IC1FSU5W QUwgJiYgIWRpc2FibGVfY3J0Y3MpIHsKPj4gPiArCQlkaXNhYmxlX2NydGNzID0gdHJ1ZTsKPj4g PiArCj4+ID4gKwkJc3RhdGUgPSBkcm1fYXRvbWljX3N0YXRlX2FsbG9jKGRldik7Cj4+ID4gKwkJ aWYgKHN0YXRlKSB7Cj4+ID4gKwkJCXN0YXRlLT5hY3F1aXJlX2N0eCA9ICZjdHg7Cj4+ID4gKwkJ CWdvdG8gcmV0cnk7Cj4+ID4gKwkJfQo+PiA+ICsJCXJldCA9IC1FTk9NRU07Cj4+ID4gKwl9Cj4+ ID4gKwo+PiA+ICsJZHJtX21vZGVzZXRfZHJvcF9sb2NrcygmY3R4KTsKPj4gPiArCWRybV9tb2Rl c2V0X2FjcXVpcmVfZmluaSgmY3R4KTsKPj4gPiArCj4+ID4gKwlyZXR1cm4gcmV0Owo+PiA+ICt9 Cj4+ID4gKwo+PiA+ICBpbnQgZHJtX21vZGVfYXRvbWljX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCj4+ID4gIAkJCSAgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYp Cj4+ID4gIHsKPj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjX2ludGVy bmFsLmggYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGNfaW50ZXJuYWwuaAo+PiA+IGluZGV4IDcy NGMzMjkxODZkNS4uZDk4YTY4M2QzMWQwIDEwMDY0NAo+PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fY3J0Y19pbnRlcm5hbC5oCj4+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRj X2ludGVybmFsLmgKPj4gPiBAQCAtMTg0LDYgKzE4NCw3IEBAIGludCBkcm1fYXRvbWljX2dldF9w cm9wZXJ0eShzdHJ1Y3QgZHJtX21vZGVfb2JqZWN0ICpvYmosCj4+ID4gIAkJCSAgICBzdHJ1Y3Qg ZHJtX3Byb3BlcnR5ICpwcm9wZXJ0eSwgdWludDY0X3QgKnZhbCk7Cj4+ID4gIGludCBkcm1fbW9k ZV9hdG9taWNfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4gPiAgCQkJICB2b2lkICpk YXRhLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7Cj4+ID4gK2ludCBkcm1fYXRvbWljX3Jl bW92ZV9mYihzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYik7Cj4+ID4gIAo+PiA+ICAKPj4gPiAg LyogZHJtX3BsYW5lLmMgKi8KPj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9m cmFtZWJ1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mcmFtZWJ1ZmZlci5jCj4+ID4gaW5k ZXggNTg4Y2NjM2EyMjE4Li4zNTdiNTIxYmJkYzMgMTAwNjQ0Cj4+ID4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2RybV9mcmFtZWJ1ZmZlci5jCj4+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9m cmFtZWJ1ZmZlci5jCj4+ID4gQEAgLTc3Myw2ICs3NzMsMTIgQEAgdm9pZCBkcm1fZnJhbWVidWZm ZXJfcmVtb3ZlKHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiKQo+PiA+ICAJICogaW4gdGhpcyBt YW5uZXIuCj4+ID4gIAkgKi8KPj4gPiAgCWlmIChkcm1fZnJhbWVidWZmZXJfcmVhZF9yZWZjb3Vu dChmYikgPiAxKSB7Cj4+ID4gKwkJaWYgKGRybV9kcnZfdXNlc19hdG9taWNfbW9kZXNldChkZXYp KSB7Cj4+ID4gKwkJCWludCByZXQgPSBkcm1fYXRvbWljX3JlbW92ZV9mYihmYik7Cj4+ID4gKwkJ CVdBUk4ocmV0LCAiYXRvbWljIHJlbW92ZV9mYiBmYWlsZWQgd2l0aCAlaVxuIiwgcmV0KTsKPj4g PiArCQkJZ290byBvdXQ7Cj4+ID4gKwkJfQo+PiA+ICsKPj4gPiAgCQlkcm1fbW9kZXNldF9sb2Nr X2FsbChkZXYpOwo+PiA+ICAJCS8qIHJlbW92ZSBmcm9tIGFueSBDUlRDICovCj4+ID4gIAkJZHJt X2Zvcl9lYWNoX2NydGMoY3J0YywgZGV2KSB7Cj4+ID4gQEAgLTc5MCw2ICs3OTYsNyBAQCB2b2lk IGRybV9mcmFtZWJ1ZmZlcl9yZW1vdmUoc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIpCj4+ID4g IAkJZHJtX21vZGVzZXRfdW5sb2NrX2FsbChkZXYpOwo+PiA+ICAJfQo+PiA+ICAKPj4gPiArb3V0 Ogo+PiA+ICAJZHJtX2ZyYW1lYnVmZmVyX3VucmVmZXJlbmNlKGZiKTsKPj4gPiAgfQo+PiA+ICBF WFBPUlRfU1lNQk9MKGRybV9mcmFtZWJ1ZmZlcl9yZW1vdmUpOwo+PiAKPj4gLS0gCj4+IEphbmkg TmlrdWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBUZWNobm9sb2d5IENlbnRlcgoKLS0gCkphbmkgTmlr dWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBUZWNobm9sb2d5IENlbnRlcgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK