From mboxrd@z Thu Jan 1 00:00:00 1970 From: Huang Rui Subject: [PATCH 001/138] drm/amd/powerplay: add new smu ip block Date: Fri, 25 Jan 2019 18:23:28 +0800 Message-ID: <1548411945-12396-2-git-send-email-ray.huang@amd.com> References: <1548411945-12396-1-git-send-email-ray.huang@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1548411945-12396-1-git-send-email-ray.huang-5C7GfCeVMHo@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Likun Gao , Kevin Wang , Huang Rui , Chengming Gui VGhpcyBwYXRjaCBhZGQgYW1kZ3B1X3NtdSBpcCBibG9jayBza2VsZXRvbiBhcyBwbGFjZWhvbGRl ci4KV2UgcGxhbiB1c2UgbmV3IHNtdSBpcCBibG9jayBmcm9tIFZlZ2EyMC4KClNpZ25lZC1vZmYt Ynk6IEh1YW5nIFJ1aSA8cmF5Lmh1YW5nQGFtZC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1LmggICAgICAgICAgICB8ICAgNCArCiBkcml2ZXJzL2dwdS9kcm0vYW1k L3Bvd2VycGxheS9NYWtlZmlsZSAgICAgICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vYW1k L3Bvd2VycGxheS9hbWRncHVfc211LmMgICAgIHwgMTY2ICsrKysrKysrKysrKysrKysrKysrKysr KysKIGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2luYy9hbWRncHVfc211LmggfCAgNDUg KysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAyMTYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigt KQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2FtZGdw dV9zbXUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5 L2luYy9hbWRncHVfc211LmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHUuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oCmluZGV4IGQ2 N2Y4YjEuLmU0ZmYxODYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oCkBAIC04Myw2 ICs4Myw3IEBACiAjaW5jbHVkZSAiYW1kZ3B1X2dlbS5oIgogI2luY2x1ZGUgImFtZGdwdV9kb29y YmVsbC5oIgogI2luY2x1ZGUgImFtZGdwdV9hbWRrZmQuaCIKKyNpbmNsdWRlICJhbWRncHVfc211 LmgiCiAKICNkZWZpbmUgTUFYX0dQVV9JTlNUQU5DRQkJMTYKIApAQCAtODQzLDYgKzg0NCw5IEBA IHN0cnVjdCBhbWRncHVfZGV2aWNlIHsKIAlzdHJ1Y3QgYW1kX3Bvd2VycGxheQkJcG93ZXJwbGF5 OwogCWJvb2wJCQkJcHBfZm9yY2Vfc3RhdGVfZW5hYmxlZDsKIAorCS8qIHNtdSAqLworCXN0cnVj dCBzbXVfY29udGV4dAkJc211OworCiAJLyogZHBtICovCiAJc3RydWN0IGFtZGdwdV9wbQkJcG07 CiAJdTMyCQkJCWNnX2ZsYWdzOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dl cnBsYXkvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9NYWtlZmlsZQpp bmRleCAyMzE3ODVhLi5hMmViZGE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bv d2VycGxheS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9NYWtl ZmlsZQpAQCAtMzUsNyArMzUsNyBAQCBBTURfUE9XRVJQTEFZID0gJChhZGRzdWZmaXggL01ha2Vm aWxlLCQoYWRkcHJlZml4ICQoRlVMTF9BTURfUEFUSCkvcG93ZXJwbGF5LywkKAogCiBpbmNsdWRl ICQoQU1EX1BPV0VSUExBWSkKIAotUE9XRVJfTUdSID0gYW1kX3Bvd2VycGxheS5vCitQT1dFUl9N R1IgPSBhbWRfcG93ZXJwbGF5Lm8gYW1kZ3B1X3NtdS5vCiAKIEFNRF9QUF9QT1dFUiA9ICQoYWRk cHJlZml4ICQoQU1EX1BQX1BBVEgpLywkKFBPV0VSX01HUikpCiAKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2FtZGdwdV9zbXUuYyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvcG93ZXJwbGF5L2FtZGdwdV9zbXUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi4yOTFjYzMxCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dl cnBsYXkvYW1kZ3B1X3NtdS5jCkBAIC0wLDAgKzEsMTY2IEBACisvKgorICogQ29weXJpZ2h0IDIw MTkgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVy ZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisg KiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxl cyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCBy ZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0 byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vu c2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0 IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywg c3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNv cHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVk ZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3 YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdB UlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVU IE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBO TyBFVkVOVCBTSEFMTAorICogVEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJF IExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFCSUxJVFksIFdI RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKKyAqIEFS SVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig VEhFIFVTRSBPUgorICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICovCisKKyNp bmNsdWRlICJwcF9kZWJ1Zy5oIgorI2luY2x1ZGUgPGxpbnV4L2Zpcm13YXJlLmg+CisjaW5jbHVk ZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRlICJhbWRncHUuaCIKKyNpbmNsdWRlICJhbWRncHVfc211 LmgiCisjaW5jbHVkZSAic29jMTVfY29tbW9uLmgiCisKK3N0YXRpYyBpbnQgc211X3NldF9mdW5j cyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKK3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGlj IGludCBzbXVfZWFybHlfaW5pdCh2b2lkICpoYW5kbGUpCit7CisJc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7CisJc3RydWN0IHNtdV9j b250ZXh0ICpzbXUgPSAmYWRldi0+c211OworCWludCByZXQ7CisKKwlyZXQgPSBzbXVfc2V0X2Z1 bmNzKGFkZXYpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlzbXUtPmFkZXYgPSBhZGV2 OworCW11dGV4X2luaXQoJnNtdS0+bXV0ZXgpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBp bnQgc211X3N3X2luaXQodm9pZCAqaGFuZGxlKQoreworCXN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2ID0gKHN0cnVjdCBhbWRncHVfZGV2aWNlICopaGFuZGxlOworCXN0cnVjdCBzbXVfY29udGV4 dCAqc211ID0gJmFkZXYtPnNtdTsKKwlpbnQgcmV0OworCisJaWYgKGFkZXYtPmFzaWNfdHlwZSA8 IENISVBfVkVHQTIwKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXJldCA9IHNtdV9pbml0X21pY3Jv Y29kZShzbXUpOworCWlmIChyZXQpIHsKKwkJcHJfZXJyKCJGYWlsZWQgdG8gbG9hZCBzbXUgZmly bXdhcmUhXG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGlj IGludCBzbXVfc3dfZmluaSh2b2lkICpoYW5kbGUpCit7CisJc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7CisKKwlpZiAoYWRldi0+YXNp Y190eXBlIDwgQ0hJUF9WRUdBMjApCisJCXJldHVybiAtRUlOVkFMOworCisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyBpbnQgc211X2h3X2luaXQodm9pZCAqaGFuZGxlKQoreworCWludCByZXQ7CisJ c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5k bGU7CisJc3RydWN0IHNtdV9jb250ZXh0ICpzbXUgPSAmYWRldi0+c211OworCisJaWYgKGFkZXYt PmFzaWNfdHlwZSA8IENISVBfVkVHQTIwKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCW11dGV4X2xv Y2soJnNtdS0+bXV0ZXgpOworCisJLyogVE9ETyAqLworCisJbXV0ZXhfdW5sb2NrKCZzbXUtPm11 dGV4KTsKKworCXByX2luZm8oIlNNVSBpcyBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHkhXG4iKTsK KworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHNtdV9od19maW5pKHZvaWQgKmhhbmRsZSkK K3sKKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq KWhhbmRsZTsKKwlzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSA9ICZhZGV2LT5zbXU7CisKKwlpZiAo YWRldi0+YXNpY190eXBlIDwgQ0hJUF9WRUdBMjApCisJCXJldHVybiAtRUlOVkFMOworCisJcmV0 dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgc211X3N1c3BlbmQodm9pZCAqaGFuZGxlKQoreworCXN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gKHN0cnVjdCBhbWRncHVfZGV2aWNlICopaGFuZGxl OworCisJaWYgKGFkZXYtPmFzaWNfdHlwZSA8IENISVBfVkVHQTIwKQorCQlyZXR1cm4gLUVJTlZB TDsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHNtdV9yZXN1bWUodm9pZCAqaGFuZGxl KQoreworCWludCByZXQ7CisJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKiloYW5kbGU7CisJc3RydWN0IHNtdV9jb250ZXh0ICpzbXUgPSAmYWRldi0+ c211OworCisJaWYgKGFkZXYtPmFzaWNfdHlwZSA8IENISVBfVkVHQTIwKQorCQlyZXR1cm4gLUVJ TlZBTDsKKworCW11dGV4X2xvY2soJnNtdS0+bXV0ZXgpOworCisJLyogVE9ETyAqLworCisJbXV0 ZXhfdW5sb2NrKCZzbXUtPm11dGV4KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHNt dV9zZXRfY2xvY2tnYXRpbmdfc3RhdGUodm9pZCAqaGFuZGxlLAorCQkJCSAgICAgZW51bSBhbWRf Y2xvY2tnYXRpbmdfc3RhdGUgc3RhdGUpCit7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQg c211X3NldF9wb3dlcmdhdGluZ19zdGF0ZSh2b2lkICpoYW5kbGUsCisJCQkJICAgICBlbnVtIGFt ZF9wb3dlcmdhdGluZ19zdGF0ZSBzdGF0ZSkKK3sKKwlyZXR1cm4gMDsKK30KKworY29uc3Qgc3Ry dWN0IGFtZF9pcF9mdW5jcyBzbXVfaXBfZnVuY3MgPSB7CisJLm5hbWUgPSAic211IiwKKwkuZWFy bHlfaW5pdCA9IHNtdV9lYXJseV9pbml0LAorCS5sYXRlX2luaXQgPSBOVUxMLAorCS5zd19pbml0 ID0gc211X3N3X2luaXQsCisJLnN3X2ZpbmkgPSBzbXVfc3dfZmluaSwKKwkuaHdfaW5pdCA9IHNt dV9od19pbml0LAorCS5od19maW5pID0gc211X2h3X2ZpbmksCisJLnN1c3BlbmQgPSBzbXVfc3Vz cGVuZCwKKwkucmVzdW1lID0gc211X3Jlc3VtZSwKKwkuaXNfaWRsZSA9IE5VTEwsCisJLmNoZWNr X3NvZnRfcmVzZXQgPSBOVUxMLAorCS53YWl0X2Zvcl9pZGxlID0gTlVMTCwKKwkuc29mdF9yZXNl dCA9IE5VTEwsCisJLnNldF9jbG9ja2dhdGluZ19zdGF0ZSA9IHNtdV9zZXRfY2xvY2tnYXRpbmdf c3RhdGUsCisJLnNldF9wb3dlcmdhdGluZ19zdGF0ZSA9IHNtdV9zZXRfcG93ZXJnYXRpbmdfc3Rh dGUsCit9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaW5jL2Ft ZGdwdV9zbXUuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2luYy9hbWRncHVfc211 LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZiNjg1YwotLS0gL2Rldi9u dWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2luYy9hbWRncHVfc211LmgK QEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE5IEFkdmFuY2VkIE1pY3JvIERl dmljZXMsIEluYy4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9m IGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3 YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwK KyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGlu ZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnks IG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwg Y29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhl CisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxv d2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0 aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVz IG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09G VFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwg RVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUg V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRI RSBDT1BZUklHSFQgSE9MREVSKFMpIE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJ TSwgREFNQUdFUyBPUgorICogT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBP RiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCisgKiBBUklTSU5HIEZST00sIE9VVCBPRiBP UiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKKyAqIE9USEVS IERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqLworI2lmbmRlZiBfX0FNREdQVV9TTVVfSF9f CisjZGVmaW5lIF9fQU1ER1BVX1NNVV9IX18KKworI2luY2x1ZGUgImFtZGdwdS5oIgorCitzdHJ1 Y3Qgc211X2NvbnRleHQKK3sKKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAgICAgICAgICAgICphZGV2 OworCisJY29uc3Qgc3RydWN0IHNtdV9mdW5jcwkJKmZ1bmNzOworCXN0cnVjdCBtdXRleAkJCW11 dGV4OworfTsKKworc3RydWN0IHNtdV9mdW5jcworeworCWludCAoKmluaXRfbWljcm9jb2RlKShz dHJ1Y3Qgc211X2NvbnRleHQgKnNtdSk7Cit9OworCisjZGVmaW5lIHNtdV9pbml0X21pY3JvY29k ZShzbXUpIFwKKwkoKHNtdSktPmZ1bmNzLT5pbml0X21pY3JvY29kZSA/IChzbXUpLT5mdW5jcy0+ aW5pdF9taWNyb2NvZGUoKHNtdSkpIDogMCkKKworZXh0ZXJuIGNvbnN0IHN0cnVjdCBhbWRfaXBf ZnVuY3Mgc211X2lwX2Z1bmNzOworCisjZW5kaWYKLS0gCjIuNy40CgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK