From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH 16/16] drm/i915: Guard debugfs against invalid access when display is disabled Date: Mon, 22 Oct 2018 11:52:40 +0300 Message-ID: <878t2qfjmv.fsf@intel.com> References: <20181012215218.5119-1-jose.souza@intel.com> <20181012215218.5119-16-jose.souza@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id B31AC89B30 for ; Mon, 22 Oct 2018 08:53:03 +0000 (UTC) In-Reply-To: <20181012215218.5119-16-jose.souza@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: =?utf-8?Q?Jos=C3=A9?= Roberto de Souza , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCAxMiBPY3QgMjAxOCwgSm9zw6kgUm9iZXJ0byBkZSBTb3V6YSA8am9zZS5zb3V6YUBp bnRlbC5jb20+IHdyb3RlOgo+IFdpdGhvdXQgdGhpcyBjaGVja3MgaW4gdGhpcyBkZWJ1Z2ZzLCBp dCB3b3VsZCB0cnkgYWNjZXNzIG1lbW9yeSBhbmQKPiByZXNvcmNlcyBmcm9tIGRpc3BsYXkgY2F1 c2luZyB0aGUgZHJpdmVyIHRvIGNyYXNoLgoKSHVtLCBuZWVkIHRvIGNvbnNpZGVyIHRoaXMuIEl0 J3MgYW4gb3B0aW9uIHRvIG5vdCByZWdpc3RlciB0aGUgZGlzcGxheQpkZWJ1Z2ZzIGZpbGVzIGF0 IGFsbCBpbiB0aGlzIGNhc2UuIE1pZ2h0IGJlIG11Y2ggbmVhdGVyLgoKQlIsCkphbmkuCgoKPgo+ IFNpZ25lZC1vZmYtYnk6IEpvc8OpIFJvYmVydG8gZGUgU291emEgPGpvc2Uuc291emFAaW50ZWwu Y29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyB8IDY0ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIDEgZmlsZSBjaGFuZ2VkLCA2NCBpbnNlcnRp b25zKCspCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2Zz LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IGluZGV4IDAwYzU1MWQz ZTQwOS4uNzg2NGJmMjMzZDk5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZGVidWdmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMK PiBAQCAtMTYzNiw2ICsxNjM2LDkgQEAgc3RhdGljIGludCBpOTE1X2Zyb250YnVmZmVyX3RyYWNr aW5nKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBub2RlX3RvX2k5MTUobS0+cHJpdmF0ZSk7Cj4gIAo+ ICsJaWYgKCFJTlRFTF9JTkZPKGRldl9wcml2KS0+bnVtX3BpcGVzKQo+ICsJCXJldHVybiAtRU5P REVWOwo+ICsKPiAgCXNlcV9wcmludGYobSwgIkZCIHRyYWNraW5nIGJ1c3kgYml0czogMHglMDh4 XG4iLAo+ICAJCSAgIGRldl9wcml2LT5mYl90cmFja2luZy5idXN5X2JpdHMpOwo+ICAKPiBAQCAt MTY1Myw2ICsxNjU2LDkgQEAgc3RhdGljIGludCBpOTE1X2ZiY19zdGF0dXMoc3RydWN0IHNlcV9m aWxlICptLCB2b2lkICp1bnVzZWQpCj4gIAlpZiAoIUhBU19GQkMoZGV2X3ByaXYpKQo+ICAJCXJl dHVybiAtRU5PREVWOwo+ICAKPiArCWlmICghSU5URUxfSU5GTyhkZXZfcHJpdiktPm51bV9waXBl cykKPiArCQlyZXR1cm4gLUVOT0RFVjsKPiArCj4gIAlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZf cHJpdik7Cj4gIAltdXRleF9sb2NrKCZmYmMtPmxvY2spOwo+ICAKPiBAQCAtMTcyOSw2ICsxNzM1 LDkgQEAgc3RhdGljIGludCBpOTE1X2lwc19zdGF0dXMoc3RydWN0IHNlcV9maWxlICptLCB2b2lk ICp1bnVzZWQpCj4gIAlpZiAoIUhBU19JUFMoZGV2X3ByaXYpKQo+ICAJCXJldHVybiAtRU5PREVW Owo+ICAKPiArCWlmICghSU5URUxfSU5GTyhkZXZfcHJpdiktPm51bV9waXBlcykKPiArCQlyZXR1 cm4gLUVOT0RFVjsKPiArCj4gIAlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4gIAo+ ICAJc2VxX3ByaW50ZihtLCAiRW5hYmxlZCBieSBrZXJuZWwgcGFyYW1ldGVyOiAlc1xuIiwKPiBA QCAtMTc1Myw2ICsxNzYyLDkgQEAgc3RhdGljIGludCBpOTE1X3NyX3N0YXR1cyhzdHJ1Y3Qgc2Vx X2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IG5vZGVfdG9faTkxNShtLT5wcml2YXRlKTsKPiAgCWJvb2wgc3JfZW5hYmxlZCA9IGZh bHNlOwo+ICAKPiArCWlmICghSU5URUxfSU5GTyhkZXZfcHJpdiktPm51bV9waXBlcykKPiArCQly ZXR1cm4gLUVOT0RFVjsKPiArCj4gIAlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4g IAlpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX0lOSVQpOwo+ ICAKPiBAQCAtMTg5MSw2ICsxOTAzLDkgQEAgc3RhdGljIGludCBpOTE1X2dlbV9mcmFtZWJ1ZmZl cl9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiAgCXN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKmRybV9mYjsKPiAgCWludCByZXQ7Cj4gIAo+ICsJaWYgKCFJTlRFTF9JTkZPKGRl dl9wcml2KS0+bnVtX3BpcGVzKQo+ICsJCXJldHVybiAtRU5PREVWOwo+ICsKPiAgCXJldCA9IG11 dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAJaWYgKHJldCkK PiAgCQlyZXR1cm4gcmV0Owo+IEBAIC0yNzc3LDYgKzI3OTIsOSBAQCBpOTE1X2VkcF9wc3JfZGVi dWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpCj4gIAlpZiAoIUNBTl9QU1IoZGV2X3ByaXYpKQo+ ICAJCXJldHVybiAtRU5PREVWOwo+ICAKPiArCWlmICghSU5URUxfSU5GTyhkZXZfcHJpdiktPm51 bV9waXBlcykKPiArCQlyZXR1cm4gLUVOT0RFVjsKPiArCj4gIAlEUk1fREVCVUdfS01TKCJTZXR0 aW5nIFBTUiBkZWJ1ZyB0byAlbGx4XG4iLCB2YWwpOwo+ICAKPiAgCWludGVsX3J1bnRpbWVfcG1f Z2V0KGRldl9wcml2KTsKPiBAQCAtMzIyMiw2ICszMjQwLDkgQEAgc3RhdGljIGludCBpOTE1X2Rp c3BsYXlfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgCXN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3I7Cj4gIAlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9saXN0X2l0 ZXIgY29ubl9pdGVyOwo+ICAKPiArCWlmICghSU5URUxfSU5GTyhkZXZfcHJpdiktPm51bV9waXBl cykKPiArCQlyZXR1cm4gLUVOT0RFVjsKPiArCj4gIAlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZf cHJpdik7Cj4gIAlzZXFfcHJpbnRmKG0sICJDUlRDIGluZm9cbiIpOwo+ICAJc2VxX3ByaW50Ziht LCAiLS0tLS0tLS0tXG4iKTsKPiBAQCAtMzMyNiw2ICszMzQ3LDkgQEAgc3RhdGljIGludCBpOTE1 X3NoYXJlZF9kcGxsc19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ICAJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9ICZkZXZfcHJpdi0+ZHJtOwo+ICAJaW50IGk7Cj4gIAo+ ICsJaWYgKCFJTlRFTF9JTkZPKGRldl9wcml2KS0+bnVtX3BpcGVzKQo+ICsJCXJldHVybiAtRU5P REVWOwo+ICsKPiAgCWRybV9tb2Rlc2V0X2xvY2tfYWxsKGRldik7Cj4gIAlmb3IgKGkgPSAwOyBp IDwgZGV2X3ByaXYtPm51bV9zaGFyZWRfZHBsbDsgaSsrKSB7Cj4gIAkJc3RydWN0IGludGVsX3No YXJlZF9kcGxsICpwbGwgPSAmZGV2X3ByaXYtPnNoYXJlZF9kcGxsc1tpXTsKPiBAQCAtMzM5OCw2 ICszNDIyLDkgQEAgc3RhdGljIGludCBpOTE1X2lwY19zdGF0dXNfb3BlbihzdHJ1Y3QgaW5vZGUg Kmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKPiAgCWlmICghSEFTX0lQQyhkZXZfcHJpdikpCj4g IAkJcmV0dXJuIC1FTk9ERVY7Cj4gIAo+ICsJaWYgKCFJTlRFTF9JTkZPKGRldl9wcml2KS0+bnVt X3BpcGVzKQo+ICsJCXJldHVybiAtRU5PREVWOwo+ICsKPiAgCXJldHVybiBzaW5nbGVfb3Blbihm aWxlLCBpOTE1X2lwY19zdGF0dXNfc2hvdywgZGV2X3ByaXYpOwo+ICB9Cj4gIAo+IEBAIC0zNDQ1 LDYgKzM0NzIsOSBAQCBzdGF0aWMgaW50IGk5MTVfZGRiX2luZm8oc3RydWN0IHNlcV9maWxlICpt LCB2b2lkICp1bnVzZWQpCj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDkpCj4gIAkJcmV0 dXJuIC1FTk9ERVY7Cj4gIAo+ICsJaWYgKCFJTlRFTF9JTkZPKGRldl9wcml2KS0+bnVtX3BpcGVz KQo+ICsJCXJldHVybiAtRU5PREVWOwo+ICsKPiAgCWRybV9tb2Rlc2V0X2xvY2tfYWxsKGRldik7 Cj4gIAo+ICAJZGRiID0gJmRldl9wcml2LT53bS5za2xfaHcuZGRiOwo+IEBAIC0zNTUzLDYgKzM1 ODMsOSBAQCBzdGF0aWMgaW50IGk5MTVfZHJyc19zdGF0dXMoc3RydWN0IHNlcV9maWxlICptLCB2 b2lkICp1bnVzZWQpCj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YzsKPiAgCWludCBh Y3RpdmVfY3J0Y19jbnQgPSAwOwo+ICAKPiArCWlmICghSU5URUxfSU5GTyhkZXZfcHJpdiktPm51 bV9waXBlcykKPiArCQlyZXR1cm4gLUVOT0RFVjsKPiArCj4gIAlkcm1fbW9kZXNldF9sb2NrX2Fs bChkZXYpOwo+ICAJZm9yX2VhY2hfaW50ZWxfY3J0YyhkZXYsIGludGVsX2NydGMpIHsKPiAgCQlp ZiAoaW50ZWxfY3J0Yy0+YmFzZS5zdGF0ZS0+YWN0aXZlKSB7Cj4gQEAgLTM1NzksNiArMzYxMiw5 IEBAIHN0YXRpYyBpbnQgaTkxNV9kcF9tc3RfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQg KnVudXNlZCkKPiAgCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7Cj4gIAlzdHJ1Y3Qg ZHJtX2Nvbm5lY3Rvcl9saXN0X2l0ZXIgY29ubl9pdGVyOwo+ICAKPiArCWlmICghSU5URUxfSU5G TyhkZXZfcHJpdiktPm51bV9waXBlcykKPiArCQlyZXR1cm4gLUVOT0RFVjsKPiArCj4gIAlkcm1f Y29ubmVjdG9yX2xpc3RfaXRlcl9iZWdpbihkZXYsICZjb25uX2l0ZXIpOwo+ICAJZHJtX2Zvcl9l YWNoX2Nvbm5lY3Rvcl9pdGVyKGNvbm5lY3RvciwgJmNvbm5faXRlcikgewo+ICAJCWlmIChjb25u ZWN0b3ItPmNvbm5lY3Rvcl90eXBlICE9IERSTV9NT0RFX0NPTk5FQ1RPUl9EaXNwbGF5UG9ydCkK PiBAQCAtMzY5Nyw2ICszNzMzLDExIEBAIHN0YXRpYyBpbnQgaTkxNV9kaXNwbGF5cG9ydF90ZXN0 X2FjdGl2ZV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiAgc3RhdGljIGlu dCBpOTE1X2Rpc3BsYXlwb3J0X3Rlc3RfYWN0aXZlX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwK PiAgCQkJCQkgICAgIHN0cnVjdCBmaWxlICpmaWxlKQo+ICB7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBpbm9kZS0+aV9wcml2YXRlOwo+ICsKPiArCWlmICghSU5URUxf SU5GTyhkZXZfcHJpdiktPm51bV9waXBlcykKPiArCQlyZXR1cm4gLUVOT0RFVjsKPiArCj4gIAly ZXR1cm4gc2luZ2xlX29wZW4oZmlsZSwgaTkxNV9kaXNwbGF5cG9ydF90ZXN0X2FjdGl2ZV9zaG93 LAo+ICAJCQkgICBpbm9kZS0+aV9wcml2YXRlKTsKPiAgfQo+IEBAIC0zNzE4LDYgKzM3NTksOSBA QCBzdGF0aWMgaW50IGk5MTVfZGlzcGxheXBvcnRfdGVzdF9kYXRhX3Nob3coc3RydWN0IHNlcV9m aWxlICptLCB2b2lkICpkYXRhKQo+ICAJc3RydWN0IGRybV9jb25uZWN0b3JfbGlzdF9pdGVyIGNv bm5faXRlcjsKPiAgCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHA7Cj4gIAo+ICsJaWYgKCFJTlRF TF9JTkZPKGRldl9wcml2KS0+bnVtX3BpcGVzKQo+ICsJCXJldHVybiAtRU5PREVWOwo+ICsKPiAg CWRybV9jb25uZWN0b3JfbGlzdF9pdGVyX2JlZ2luKGRldiwgJmNvbm5faXRlcik7Cj4gIAlkcm1f Zm9yX2VhY2hfY29ubmVjdG9yX2l0ZXIoY29ubmVjdG9yLCAmY29ubl9pdGVyKSB7Cj4gIAkJc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7Cj4gQEAgLTM3NjIsNiArMzgwNiw5IEBAIHN0YXRp YyBpbnQgaTkxNV9kaXNwbGF5cG9ydF90ZXN0X3R5cGVfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0s IHZvaWQgKmRhdGEpCj4gIAlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9saXN0X2l0ZXIgY29ubl9pdGVy Owo+ICAJc3RydWN0IGludGVsX2RwICppbnRlbF9kcDsKPiAgCj4gKwlpZiAoIUlOVEVMX0lORk8o ZGV2X3ByaXYpLT5udW1fcGlwZXMpCj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gKwo+ICAJZHJtX2Nv bm5lY3Rvcl9saXN0X2l0ZXJfYmVnaW4oZGV2LCAmY29ubl9pdGVyKTsKPiAgCWRybV9mb3JfZWFj aF9jb25uZWN0b3JfaXRlcihjb25uZWN0b3IsICZjb25uX2l0ZXIpIHsKPiAgCQlzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlcjsKPiBAQCAtMzg3OCw2ICszOTI1LDkgQEAgc3RhdGljIGludCBw cmlfd21fbGF0ZW5jeV9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxl KQo+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA1ICYmICFJU19HNFgoZGV2X3ByaXYpKQo+ ICAJCXJldHVybiAtRU5PREVWOwo+ICAKPiArCWlmICghSU5URUxfSU5GTyhkZXZfcHJpdiktPm51 bV9waXBlcykKPiArCQlyZXR1cm4gLUVOT0RFVjsKPiArCj4gIAlyZXR1cm4gc2luZ2xlX29wZW4o ZmlsZSwgcHJpX3dtX2xhdGVuY3lfc2hvdywgZGV2X3ByaXYpOwo+ICB9Cj4gIAo+IEBAIC0zODg4 LDYgKzM5MzgsOSBAQCBzdGF0aWMgaW50IHNwcl93bV9sYXRlbmN5X29wZW4oc3RydWN0IGlub2Rl ICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCj4gIAlpZiAoSEFTX0dNQ0hfRElTUExBWShkZXZf cHJpdikpCj4gIAkJcmV0dXJuIC1FTk9ERVY7Cj4gIAo+ICsJaWYgKCFJTlRFTF9JTkZPKGRldl9w cml2KS0+bnVtX3BpcGVzKQo+ICsJCXJldHVybiAtRU5PREVWOwo+ICsKPiAgCXJldHVybiBzaW5n bGVfb3BlbihmaWxlLCBzcHJfd21fbGF0ZW5jeV9zaG93LCBkZXZfcHJpdik7Cj4gIH0KPiAgCj4g QEAgLTM4OTgsNiArMzk1MSw5IEBAIHN0YXRpYyBpbnQgY3VyX3dtX2xhdGVuY3lfb3BlbihzdHJ1 Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKPiAgCWlmIChIQVNfR01DSF9ESVNQ TEFZKGRldl9wcml2KSkKPiAgCQlyZXR1cm4gLUVOT0RFVjsKPiAgCj4gKwlpZiAoIUlOVEVMX0lO Rk8oZGV2X3ByaXYpLT5udW1fcGlwZXMpCj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gKwo+ICAJcmV0 dXJuIHNpbmdsZV9vcGVuKGZpbGUsIGN1cl93bV9sYXRlbmN5X3Nob3csIGRldl9wcml2KTsKPiAg fQo+ICAKPiBAQCAtNDY0NSw2ICs0NzAxLDExIEBAIHN0YXRpYyBzc2l6ZV90IGk5MTVfaHBkX3N0 b3JtX2N0bF93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwKPiAgCj4gIHN0YXRpYyBpbnQgaTkxNV9o cGRfc3Rvcm1fY3RsX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUp Cj4gIHsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGlub2RlLT5pX3By aXZhdGU7Cj4gKwo+ICsJaWYgKCFJTlRFTF9JTkZPKGRldl9wcml2KS0+bnVtX3BpcGVzKQo+ICsJ CXJldHVybiAtRU5PREVWOwo+ICsKPiAgCXJldHVybiBzaW5nbGVfb3BlbihmaWxlLCBpOTE1X2hw ZF9zdG9ybV9jdGxfc2hvdywgaW5vZGUtPmlfcHJpdmF0ZSk7Cj4gIH0KPiAgCj4gQEAgLTQ2Njgs NiArNDcyOSw5IEBAIHN0YXRpYyBpbnQgaTkxNV9kcnJzX2N0bF9zZXQodm9pZCAqZGF0YSwgdTY0 IHZhbCkKPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNykKPiAgCQlyZXR1cm4gLUVOT0RF VjsKPiAgCj4gKwlpZiAoIUlOVEVMX0lORk8oZGV2X3ByaXYpLT5udW1fcGlwZXMpCj4gKwkJcmV0 dXJuIC1FTk9ERVY7Cj4gKwo+ICAJZHJtX21vZGVzZXRfbG9ja19hbGwoZGV2KTsKPiAgCWZvcl9l YWNoX2ludGVsX2NydGMoZGV2LCBpbnRlbF9jcnRjKSB7Cj4gIAkJaWYgKCFpbnRlbF9jcnRjLT5i YXNlLnN0YXRlLT5hY3RpdmUgfHwKCi0tIApKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2Ug R3JhcGhpY3MgQ2VudGVyCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=