From: Heiko Stuebner Subject: Re: [PATCH v3 3/4] Crypto: rockchip/crypto - add crypto driver for rk3288 Date: Sat, 14 Nov 2015 23:41:35 +0100 Message-ID: <18560338.ihuYOPNcR6@phil> References: <1447223759-20730-1-git-send-email-zain.wang@rock-chips.com> <2127222.Jhf4CFAOsX@phil> <564586DB.1020401@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: mark.rutland-5wv7dgnIgG8@public.gmane.org, devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org, hl-TNX95d0MmH7DzftRWevZcw@public.gmane.org, pawel.moll-5wv7dgnIgG8@public.gmane.org, ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org, mturquette-rdvid1DuHRBWk0Htik3J/w@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, eddie.cai-TNX95d0MmH7DzftRWevZcw@public.gmane.org, linux-crypto-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, zhengsq-TNX95d0MmH7DzftRWevZcw@public.gmane.org, davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org, herbert-lOAM2aK0SrRLBo1qDEOMRrpzq4S04n8Q@public.gmane.org To: Zain Return-path: In-Reply-To: <564586DB.1020401-TNX95d0MmH7DzftRWevZcw@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+glpar-linux-rockchip=m.gmane.org-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org List-Id: linux-crypto.vger.kernel.org SGkgWmFpbiwKCkFtIEZyZWl0YWcsIDEzLiBOb3ZlbWJlciAyMDE1LCAxNDo0NDo0MyBzY2hyaWVi IFphaW46Cj4gCj4gT24gMjAxNeW5tDEx5pyIMTLml6UgMjA6MzIsIEhlaWtvIFN0dWVibmVyIHdy b3RlOgo+ID4gSGkgWmFpbiwKPiA+Cj4gPiBJIHdhcyBhYmxlIHRvIHN1Y2Vzc2Z1bGx5IHRlc3Qg eW91ciBjcnlwdG8tZHJpdmVyLCBidXQgaGF2ZSBmb3VuZCBzb21lCj4gPiBpbXByb3ZlbWVudHMg YmVsb3cgdGhhdCBzaG91bGQgcHJvYmFibHkgZ2V0IGxvb2tlZCBhdDoKPiA+Cj4gPiBBbSBNaXR0 d29jaCwgMTEuIE5vdmVtYmVyIDIwMTUsIDE0OjM1OjU4IHNjaHJpZWIgWmFpbiBXYW5nOgo+ID4+ IENyeXB0byBkcml2ZXIgc3VwcG9ydDoKPiA+PiAgICAgIGVjYihhZXMpIGNiYyhhZXMpIGVjYihk ZXMpIGNiYyhkZXMpIGVjYihkZXMzX2VkZSkgY2JjKGRlczNfZWRlKQo+ID4+IFlvdSBjYW4gYWxs b2MgdGFncyBhYm92ZSBpbiB5b3VyIGNhc2UuCj4gPj4KPiA+PiBBbmQgb3RoZXIgYWxnb3JpdGht cyBhbmQgcGxhdGZvcm1zIHdpbGwgYmUgYWRkZWQgbGF0ZXIgb24uCj4gPj4KPiA+PiBTaWduZWQt b2ZmLWJ5OiBaYWluIFdhbmcgPHphaW4ud2FuZ0Byb2NrLWNoaXBzLmNvbT4KPiA+PiAtLS0KPiA+ IFsuLi5dCj4gPgo+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2NyeXB0by9yb2NrY2hpcC9yazMy ODhfY3J5cHRvLmMgYi9kcml2ZXJzL2NyeXB0by9yb2NrY2hpcC9yazMyODhfY3J5cHRvLmMKPiA+ PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4+IGluZGV4IDAwMDAwMDAuLmJiMzZiYWEKPiA+PiAt LS0gL2Rldi9udWxsCj4gPj4gKysrIGIvZHJpdmVycy9jcnlwdG8vcm9ja2NoaXAvcmszMjg4X2Ny eXB0by5jCj4gPj4gQEAgLTAsMCArMSwzOTIgQEAKClsuLi5dCgpzdGF0aWMgdm9pZCBya19jcnlw dG9fYWN0aW9uKHZvaWQgKmRhdGEpCnsKCXN0cnVjdCBya19jcnlwdG9faW5mbyAqY3J5cHRvX2lu Zm8gPSBkYXRhOwoKCXJlc2V0X2NvbnRyb2xfYXNzZXJ0KGNyeXB0b19pbmZvLT5yc3QpOwp9Cgo+ ID4+ICtzdGF0aWMgaW50IHJrX2NyeXB0b19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpw ZGV2KQo+ID4+ICt7Cj4gPj4gKwlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKPiA+PiArCXN0cnVjdCBk ZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7Cj4gPj4gKwlzdHJ1Y3QgcmtfY3J5cHRvX2luZm8gKmNy eXB0b19pbmZvOwo+ID4+ICsJaW50IGVyciA9IDA7Cj4gPj4gKwo+ID4+ICsJY3J5cHRvX2luZm8g PSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwKPiA+PiArCQkJCSAgIHNpemVvZigqY3J5cHRvX2lu Zm8pLCBHRlBfS0VSTkVMKTsKPiA+PiArCWlmICghY3J5cHRvX2luZm8pIHsKPiA+PiArCQllcnIg PSAtRU5PTUVNOwo+ID4+ICsJCWdvdG8gZXJyX2NyeXB0bzsKPiA+PiArCX0KPiA+PiArCj4gPj4g KwljcnlwdG9faW5mby0+cnN0ID0gZGV2bV9yZXNldF9jb250cm9sX2dldChkZXYsICJjcnlwdG8t cnN0Iik7Cj4gPj4gKwlpZiAoSVNfRVJSKGNyeXB0b19pbmZvLT5yc3QpKSB7Cj4gPj4gKwkJZXJy ID0gUFRSX0VSUihjcnlwdG9faW5mby0+cnN0KTsKPiA+PiArCQlnb3RvIGVycl9jcnlwdG87Cj4g Pj4gKwl9Cj4gPj4gKwo+ID4+ICsJcmVzZXRfY29udHJvbF9hc3NlcnQoY3J5cHRvX2luZm8tPnJz dCk7Cj4gPj4gKwl1c2xlZXBfcmFuZ2UoMTAsIDIwKTsKPiA+PiArCXJlc2V0X2NvbnRyb2xfZGVh c3NlcnQoY3J5cHRvX2luZm8tPnJzdCk7CgoJZXJyID0gZGV2bV9hZGRfYWN0aW9uKGRldiwgcmtf Y3J5cHRvX2FjdGlvbiwgY3J5cHRvX2luZm8pOwoJaWYgKGVycikgewoJCXJlc2V0X2NvbnRyb2xf YXNzZXJ0KGNyeXB0b19pbmZvLT5yc3QpOwoJCXJldHVybiBlcnI7Cgl9Cgpmcm9tIGhlcmUgb253 YXJkcyB0aGUgZGV2bV9hY3Rpb24gd2lsbCBhbHdheXMgYmUgZXhlY3V0ZWQgd2hlbiBlaXRoZXIK X3Byb2JlIGZhaWxzLCBvciBhZnRlciByZW1vdmUgZmluaXNoZXMsIHNvIG5vIG5lZWQgdG8gYXNz ZXJ0IHRoZSByZXNldAptYW51YWxseS4KCj4gPj4gKwo+ID4+ICsJc3Bpbl9sb2NrX2luaXQoJmNy eXB0b19pbmZvLT5sb2NrKTsKPiA+PiArCj4gPj4gKwlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3Vy Y2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOwo+ID4+ICsJY3J5cHRvX2luZm8tPnJlZyA9IGRl dm1faW9yZW1hcF9yZXNvdXJjZSgmcGRldi0+ZGV2LCByZXMpOwo+ID4+ICsJaWYgKElTX0VSUihj cnlwdG9faW5mby0+cmVnKSkgewo+ID4+ICsJCWVyciA9IFBUUl9FUlIoY3J5cHRvX2luZm8tPnJl Zyk7Cj4gPj4gKwkJZ290byBlcnJfaW9yZW1hcDsKPiA+PiArCX0KPiA+PiArCj4gPj4gKwljcnlw dG9faW5mby0+YWNsayA9IGRldm1fY2xrX2dldCgmcGRldi0+ZGV2LCAiYWNsayIpOwo+ID4+ICsJ aWYgKElTX0VSUihjcnlwdG9faW5mby0+YWNsaykpIHsKPiA+PiArCQllcnIgPSBQVFJfRVJSKGNy eXB0b19pbmZvLT5hY2xrKTsKPiA+PiArCQlnb3RvIGVycl9pb3JlbWFwOwo+ID4+ICsJfQo+ID4+ ICsKPiA+PiArCWNyeXB0b19pbmZvLT5oY2xrID0gZGV2bV9jbGtfZ2V0KCZwZGV2LT5kZXYsICJo Y2xrIik7Cj4gPj4gKwlpZiAoSVNfRVJSKGNyeXB0b19pbmZvLT5oY2xrKSkgewo+ID4+ICsJCWVy ciA9IFBUUl9FUlIoY3J5cHRvX2luZm8tPmhjbGspOwo+ID4+ICsJCWdvdG8gZXJyX2lvcmVtYXA7 Cj4gPj4gKwl9Cj4gPj4gKwo+ID4+ICsJY3J5cHRvX2luZm8tPnNjbGsgPSBkZXZtX2Nsa19nZXQo JnBkZXYtPmRldiwgInNjbGsiKTsKPiA+PiArCWlmIChJU19FUlIoY3J5cHRvX2luZm8tPnNjbGsp KSB7Cj4gPj4gKwkJZXJyID0gUFRSX0VSUihjcnlwdG9faW5mby0+c2Nsayk7Cj4gPj4gKwkJZ290 byBlcnJfaW9yZW1hcDsKPiA+PiArCX0KPiA+PiArCj4gPj4gKwljcnlwdG9faW5mby0+ZG1hY2xr ID0gZGV2bV9jbGtfZ2V0KCZwZGV2LT5kZXYsICJhcGJfcGNsayIpOwo+ID4+ICsJaWYgKElTX0VS UihjcnlwdG9faW5mby0+ZG1hY2xrKSkgewo+ID4+ICsJCWVyciA9IFBUUl9FUlIoY3J5cHRvX2lu Zm8tPmRtYWNsayk7Cj4gPj4gKwkJZ290byBlcnJfaW9yZW1hcDsKPiA+PiArCX0KPiA+PiArCj4g Pj4gKwljcnlwdG9faW5mby0+aXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAwKTsKPiA+PiAr CWlmIChjcnlwdG9faW5mby0+aXJxIDwgMCkgewo+ID4+ICsJCWRldl93YXJuKGNyeXB0b19pbmZv LT5kZXYsCj4gPj4gKwkJCSAiY29udHJvbCBJbnRlcnJ1cHQgaXMgbm90IGF2YWlsYWJsZS5cbiIp Owo+ID4+ICsJCWVyciA9IGNyeXB0b19pbmZvLT5pcnE7Cj4gPj4gKwkJZ290byBlcnJfaW9yZW1h cDsKPiA+PiArCX0KPiA+PiArCj4gPj4gKwllcnIgPSBkZXZtX3JlcXVlc3RfaXJxKCZwZGV2LT5k ZXYsIGNyeXB0b19pbmZvLT5pcnEsIGNyeXB0b19pcnFfaGFuZGxlLAo+ID4+ICsJCQkgICAgICAg SVJRRl9TSEFSRUQsICJyay1jcnlwdG8iLCBwZGV2KTsKPiA+IHlvdSBhcmUgZnJlZWluZyB0aGUg aXJxIG1hbnVhbGx5IGJlbG93IGFuZCBpbiBfcmVtb3ZlIHRvby4gQXMgaXQgc3RhbmRzCj4gPiB3 aXRoIHB1dHRpbmcgdGhlIGlwIGJsb2NrIGluIHJlc2V0IGFnYWluIG9uIHJlbW92ZSB0aGlzIHNo b3VsZCBlaXRoZXIgbG9vc2UKPiA+IHRoZSBkZXZtXyBvciB5b3UgY291bGQgYWRkIGEgZGV2bV9h Y3Rpb24gdGhhdCBoYW5kbGVzIHRoZSByZXNldCBhc3NlcnQKPiA+IGxpa2UgaW4gWzBdIC0gcmVn aXN0ZXJpbmcgdGhlIGRldm1fYWN0aW9uIGFib3ZlIHdoZXJlIHRoZSByZXNldCBpcyBkb25lLgo+ ID4gVGhhdCB3YXkgeW91IGNvdWxkIHJlYWxseSB1c2UgZGV2X3JlcXVlc3RfaXJxIGFuZCBsb29z ZSB0aGUgZnJlZV9pcnEKPiA+IGNhbGxzIGhlcmUgYW5kIGluIHJlbW92ZS4KPiA+Cj4gPiBbMF0g aHR0cHM6Ly9sa21sLm9yZy9sa21sLzIwMTUvMTEvOC8xNTkKPiBJIG1hZGUgYSBtaXN0YWtlIGhl cmUuIEkgZGlkIG5vdCByZW1vdmUgZnJlZV9pcnEgd2hlbiB1c2luZwo+IGRldm1fcmVxdWVzdF9p cnEuCj4gCj4gQXMgSSBkbyBub3Qga29udyBlbm91Z2ggYWJvdXQgZGV2bV9hY3Rpb24gYW5kIHJl c2V0LWFzc2VydCAsIGNhbiBJCj4gcmVtb3ZlIGZyZWVfaXJxCj4gc2ltcGx5IGxpa2UgZHJpdmVy cy9pMmMvYnVzZXMvaTJjLXN1bjZpLXAyd2kuYyB1c2VkIGRldm1fcmVxdWVzdF9pcnEgYW5kCj4g cmVzZXRfYXNzZXJ0PwoKSSBkaWQgaW5zZXJ0IHN1aXRhYmxlIGNvZGUgb24gaG93IHRoYXQgY291 bGQgbG9vayBhIGJpdCBhYm92ZSA6LSkKCj4gPgo+ID4gWy4uLl0KPiA+Cj4gPj4gK3N0YXRpYyBp bnQgcmtfY3J5cHRvX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ID4+ICt7 Cj4gPj4gKwlzdHJ1Y3QgcmtfY3J5cHRvX2luZm8gKmNyeXB0b190bXAgPSBwbGF0Zm9ybV9nZXRf ZHJ2ZGF0YShwZGV2KTsKPiA+PiArCj4gPj4gKwlya19jcnlwdG9fdW5yZWdpc3RlcigpOwo+ID4+ ICsJcmVzZXRfY29udHJvbF9hc3NlcnQoY3J5cHRvX3RtcC0+cnN0KTsKPiA+IG1haW5seSBteSBj b21tZW50IGZyb20gYWJvdmUgYXBwbGllcywgYnV0IGluIGFueSBjYXNlIHRoZSByZXNldC1hc3Nl cnQKPiA+IHNob3VsZCBkZWZpbml0bHkgaGFwcGVuIF9hZnRlcl8gdGhlIHRhc2tsZXQgaXMga2ls bGVkIGFuZCB0aGUgaXJxIGZyZWVkLAo+ID4gdG8gbWFrZSBzdXJlIG5vdGhpbmcgd2lsbCB3YW50 IHRvIGFjY2VzcyBkZXZpY2UtcmVnaXN0ZXJzIGFueW1vcmUuCj4gPgo+ID4gW2Rldm0gd29ya3Mg c2VxdWVudGlhbGx5LCBzbyB0aGUgZGV2bV9hY3Rpb24gd291bGQgc29sdmUgdGhhdCBhdXRvbWF0 aWNhbGx5XQo+IEFzIEkgc2FpZCBhYm92ZSwgaXQgc2VlbSB1bm5lY2Vzc2FyeSB0byBhZGQgZGV2 bV9hY3Rpb24uCj4gCj4gQW5kIGlmIG1vZGlmaWNhdGlvbiBhYm92ZSBpcyBnb29kLCBJIHdpbGwg cHVzaCB0YXNrbGV0X2tpbGwgYmVmb3JlCj4gcmVzZXRfY29udHJvbF9hc3NlcnQgaW4gbmV4dCB2 ZXJzaW9uLgoKSSdtIHVuc3VyZSAuLi4gYnV0IEkgZ3Vlc3MgaWYgeW91IG1vdmUgdGhlIHJlc2V0 LWFzc2VydCBhZnRlciB0aGUKdGFza2xldF9raWxsIGl0IG1pZ2h0IGJlIG9rLgoKPiA+Cj4gPj4g Kwl0YXNrbGV0X2tpbGwoJmNyeXB0b190bXAtPmNyeXB0b190YXNrbGV0KTsKPiA+PiArCWZyZWVf aXJxKGNyeXB0b190bXAtPmlycSwgY3J5cHRvX3RtcCk7Cj4gPj4gKwo+ID4+ICsJcmV0dXJuIDA7 Cj4gPj4gK30KPiA+IFsuLi5dCj4gPgo+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2NyeXB0by9y b2NrY2hpcC9yazMyODhfY3J5cHRvLmggYi9kcml2ZXJzL2NyeXB0by9yb2NrY2hpcC9yazMyODhf Y3J5cHRvLmgKPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4+IGluZGV4IDAwMDAwMDAuLmI1 Yjk0OWEKPiA+PiAtLS0gL2Rldi9udWxsCj4gPj4gKysrIGIvZHJpdmVycy9jcnlwdG8vcm9ja2No aXAvcmszMjg4X2NyeXB0by5oCj4gPj4gQEAgLTAsMCArMSwyMjAgQEAKPiA+PiArI2RlZmluZSBf U0JGKHYsIGYpCQkJKCh2KSA8PCAoZikpCj4gPiB5b3UgYXJlIHVzaW5nIHRoYXQgbWFjcm8gaW4g dGhpcyBoZWFkZXIgZm9yIHNpbXBsZSB2YWx1ZSBzaGlmdHMgbGlrZQo+ID4gCSNkZWZpbmUgUktf Q1lZUFRPX0hBU0hJTlNFTF9CTE9DS19DSVBIRVJfSU5QVVQJCV9TQkYoMHgwMSwgMCkKPiA+Cj4g PiBSZW1vdmluZyB0aGF0IG1hY3JvIGFuZCBkb2luZyB0aGUgc2hpZnQgcmVndWxhcmx5IHdpdGhv dXQgYW55IG1hY3JvLCBsaWtlCj4gPiAJI2RlZmluZSBSS19DWVlQVE9fSEFTSElOU0VMX0JMT0NL X0NJUEhFUl9JTlBVVAkJKDB4MDEgPDwgMCkKPiA+Cj4gPiAgd291bGQgaW1wcm92ZSBmdXR1cmUg cmVhZGFiaWxpdHksIGJlY2F1c2Ugbm93IHlvdSBuZWVkIHRvIGxvb2sgdXAgd2hhdAo+ID4gdGhl IG1hY3JvIGFjdHVhbGx5IGRvZXMgYW5kIHRoZSBfU0JGIG1hY3JvIGFsc28gZG9lcyBub3Qgc2lt cGxpZnkgYW55dGhpbmcuCj4gPiBBbHNvIHRoYXQgbmFtZSBpcyBxdWl0ZSBnZW5lcmljIHNvIG1h eSBjb25mbGljdCB3aXRoIHNvbWV0aGluZyBlbHNlIGVhc2lseS4KPiBPayEgRG9uZSEKPiA+ICBb Li4uXQo+ID4KPiA+PiArI2RlZmluZSBDUllQVE9fUkVBRChkZXYsIG9mZnNldCkJCSAgXAo+ID4+ ICsJCXJlYWRsX3JlbGF4ZWQoKChkZXYpLT5yZWcgKyAob2Zmc2V0KSkpCj4gPj4gKyNkZWZpbmUg Q1JZUFRPX1dSSVRFKGRldiwgb2Zmc2V0LCB2YWwpCSAgXAo+ID4+ICsJCXdyaXRlbF9yZWxheGVk KCh2YWwpLCAoKGRldiktPnJlZyArIChvZmZzZXQpKSkKPiA+PiArLyogZ2V0IHJlZ2lzdGVyIHZp cnQgYWRkcmVzcyAqLwo+ID4+ICsjZGVmaW5lIENSWVBUT19HRVRfUkVHX1ZJUlQoZGV2LCBvZmZz ZXQpICAgKChkZXYpLT5yZWcgKyAob2Zmc2V0KSkKPiA+IHNhbWUgYXJndW1lbnQgYXMgYWJvdmUg YWJvdXQgcmVhZGFiaWxpdHkgb2YgdGhlIGNvZGUuIFdoYXQgZG8gdGhlc2UKPiA+IG1hY3JvcyBp bXByb3ZlIGZyb20ganVzdCBkb2luZyB0aGUgcmVhZGwgYW5kIHdyaXRlbCBjYWxscyBub3JtYWxs eT8KPiBJIGFtIHNvcnJ5IHRoYXQgdGhpcyBtYWNybyBpcyBkZWZpbmUgZm9yIGhhc2ggYW5kIG5v dCBiZSB1c2VkIGhlcmUuCj4gYmVjYXVzZSB0aGVyZSBhcmUgc29tZSBjb250aW51b3VzIHJlZ2lz dGVycyBpbiBoYXNoLAo+IEkgdGhpbmsgd2UgY2FuIHVzZSB0aGlzIG1hY3JvIHdpdGggbWVtY3B5 IGxpa2UKPiAgICAgICAgIG91dHB1dCA9IENSWVBUT19HRVRfUkVHX1ZJUlQoZGV2LCBSS19DUllQ VE9fSEFTSF9ET1VUXzApOwo+ICAgICAgICAgbWVtY3B5KGRldi0+YWhhc2hfcmVxLT5yZXN1bHQs IG91dHB1dCwKPiBjcnlwdG9fYWhhc2hfZGlnZXN0c2l6ZSh0Zm0pKTsKPiBpbnN0ZWFkIG9mIG11 bHRpcGxlIHJlYWRsLgo+IAo+IEkgd2lsbCByZW1vdmUgaXQgaW4gbmV4dCB2ZXJzaW9uIGFuZCBh ZGQgaXQgdG8gaGFzaCBwYXRjaCBsYXRlciBvbi4KCkkgYWN0dWFsbCBtZWFudCBhbGwgMyBvZiB0 aG9zZSBtYWNyb3MgOi0pIC4uLiBhbGwgb2YgdGhlbSBqdXN0IGRpZ3Vpc2UKd2hhdCB0aGUgY29k ZSBhY3R1YWxseSBkb2VzLCBzbyBkb24ndCBwcm92aWRlIGFkZGl0aW9uYWwgdmFsdWUgb3Zlcgpq dXN0IHVzaW5nIHJlYWRsX3JlbGF4ZWQgZXRjIGRpcmVjdGx5LgoKCkhlaWtvCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51eC1yb2NrY2hpcCBtYWls aW5nIGxpc3QKTGludXgtcm9ja2NoaXBAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMu aW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJvY2tjaGlwCg==