From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pu Wen Subject: [PATCH v5 01/15] x86/cpu: Create Hygon Dhyana architecture support file Date: Thu, 4 Apr 2019 21:45:03 +0800 Message-ID: <0d6839a65753c60f4fd1738560a551ca7df7b1e8.1554382869.git.puwen@hygon.cn> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hC2uH-000144-Q0 for xen-devel@lists.xenproject.org; Thu, 04 Apr 2019 13:59:53 +0000 In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Stefano Stabellini , Wei Liu , Konrad Rzeszutek Wilk , George Dunlap , Pu Wen , Ian Jackson , Tim Deegan , Julien Grall , Jan Beulich , Andrew Cooper , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org QWRkIHg4NiBhcmNoaXRlY3R1cmUgc3VwcG9ydCBmb3IgYSBuZXcgcHJvY2Vzc29yOiBIeWdvbiBE aHlhbmEgRmFtaWx5CjE4aC4gVG8gbWFrZSBIeWdvbiBpbml0aWFsaXphdGlvbiBmbG93IG1vcmUg Y2xlYXIsIGNhcnZlIG91dCBjb2RlIGZyb20KYW1kLmMgaW50byBhIHNlcGFyYXRlIGZpbGUgaHln b24uYywgYW5kIHJlbW92ZSB1bm5lY2Vzc2FyeSBjb2RlIGZvcgpIeWdvbiBEaHlhbmEuCgpUbyBp ZGVudGlmeSBIeWdvbiBEaHlhbmEgQ1BVLCBhZGQgYSBuZXcgdmVuZG9yIHR5cGUgWDg2X1ZFTkRP Ul9IWUdPTgphbmQgdmVuZG9yIElEICJIeWdvbkdlbnVpbmUiIGZvciBzeXN0ZW0gcmVjb2duaXRp b24sIGFuZCBmaXQgdGhlIG5ldwp4ODYgdmVuZG9yIGxvb2t1cCBtZWNoYW5pc20uCgpIeWdvbiBj YW4gZnVsbHkgdXNlIHRoZSBmdW5jdGlvbiBlYXJseV9pbml0X2FtZCgpLCBzbyBtYWtlIHRoaXMg Y29tbW9uCmZ1bmN0aW9uIG5vbi1zdGF0aWMgYW5kIGRpcmVjdCBjYWxsIGl0IGZyb20gSHlnb24g Y29kZS4KCkFkZCBhIHNlcGFyYXRlIGh5Z29uX2dldF90b3BvbG9neSgpLCB3aGljaCBjYWxjdWxh dGUgcGh5c19wcm9jX2lkIGZyb20KQWNwaUlkWzZdKHNlZSByZWZlcmVuY2UgWzFdKS4KClJlZmVy ZW5jZToKWzFdIGh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvdGlwL2UwY2VlYWU3MDhjZWJmMjJjOTkw YzNkNzAzYTRjYTE4N2RjODM3ZjUKClNpZ25lZC1vZmYtYnk6IFB1IFdlbiA8cHV3ZW5AaHlnb24u Y24+Ci0tLQogeGVuL2FyY2gveDg2L2NwdS9NYWtlZmlsZSAgICAgICAgIHwgICAxICsKIHhlbi9h cmNoL3g4Ni9jcHUvYW1kLmMgICAgICAgICAgICB8ICAgMiArLQogeGVuL2FyY2gveDg2L2NwdS9j b21tb24uYyAgICAgICAgIHwgICAxICsKIHhlbi9hcmNoL3g4Ni9jcHUvY3B1LmggICAgICAgICAg ICB8ICAgMyArCiB4ZW4vYXJjaC94ODYvY3B1L2h5Z29uLmMgICAgICAgICAgfCAxMTQgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHhlbi9pbmNsdWRlL2FzbS14ODYveDg2 LXZlbmRvcnMuaCB8ICAgNyArKy0KIHhlbi9saWIveDg2L2NwdWlkLmMgICAgICAgICAgICAgICB8 ICAgNiArKwogNyBmaWxlcyBjaGFuZ2VkLCAxMzIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMo LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vYXJjaC94ODYvY3B1L2h5Z29uLmMKCmRpZmYgLS1n aXQgYS94ZW4vYXJjaC94ODYvY3B1L01ha2VmaWxlIGIveGVuL2FyY2gveDg2L2NwdS9NYWtlZmls ZQppbmRleCAzNGEwMWNhLi40NjZhY2M4IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvY3B1L01h a2VmaWxlCisrKyBiL3hlbi9hcmNoL3g4Ni9jcHUvTWFrZWZpbGUKQEAgLTQsNiArNCw3IEBAIHN1 YmRpci15ICs9IG10cnIKIG9iai15ICs9IGFtZC5vCiBvYmoteSArPSBjZW50YXVyLm8KIG9iai15 ICs9IGNvbW1vbi5vCitvYmoteSArPSBoeWdvbi5vCiBvYmoteSArPSBpbnRlbC5vCiBvYmoteSAr PSBpbnRlbF9jYWNoZWluZm8ubwogb2JqLXkgKz0gbXdhaXQtaWRsZS5vCmRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYvY3B1L2FtZC5jIGIveGVuL2FyY2gveDg2L2NwdS9hbWQuYwppbmRleCA3YTcz ZDYyLi42NTU0ZDVkIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvY3B1L2FtZC5jCisrKyBiL3hl bi9hcmNoL3g4Ni9jcHUvYW1kLmMKQEAgLTUyNiw3ICs1MjYsNyBAQCBzdGF0aWMgdm9pZCBhbWRf Z2V0X3RvcG9sb2d5KHN0cnVjdCBjcHVpbmZvX3g4NiAqYykKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGMtPmNwdV9jb3JlX2lkKTsK IH0KIAotc3RhdGljIHZvaWQgZWFybHlfaW5pdF9hbWQoc3RydWN0IGNwdWluZm9feDg2ICpjKQor dm9pZCBlYXJseV9pbml0X2FtZChzdHJ1Y3QgY3B1aW5mb194ODYgKmMpCiB7CiAJaWYgKGMgPT0g JmJvb3RfY3B1X2RhdGEpCiAJCWFtZF9pbml0X2xldmVsbGluZygpOwpkaWZmIC0tZ2l0IGEveGVu L2FyY2gveDg2L2NwdS9jb21tb24uYyBiL3hlbi9hcmNoL3g4Ni9jcHUvY29tbW9uLmMKaW5kZXgg YjIyNDliNS4uNzRjOTQyNiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2NwdS9jb21tb24uYwor KysgYi94ZW4vYXJjaC94ODYvY3B1L2NvbW1vbi5jCkBAIC02OTEsNiArNjkxLDcgQEAgdm9pZCBf X2luaXQgZWFybHlfY3B1X2luaXQodm9pZCkKIAlhbWRfaW5pdF9jcHUoKTsKIAljZW50YXVyX2lu aXRfY3B1KCk7CiAJc2hhbmdoYWlfaW5pdF9jcHUoKTsKKwloeWdvbl9pbml0X2NwdSgpOwogCWVh cmx5X2NwdV9kZXRlY3QoKTsKIH0KIApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2NwdS9jcHUu aCBiL3hlbi9hcmNoL3g4Ni9jcHUvY3B1LmgKaW5kZXggZWRjODhiMS4uYzNhZTJlZSAxMDA2NDQK LS0tIGEveGVuL2FyY2gveDg2L2NwdS9jcHUuaAorKysgYi94ZW4vYXJjaC94ODYvY3B1L2NwdS5o CkBAIC0xNiw3ICsxNiwxMCBAQCBleHRlcm4gdW5zaWduZWQgaW50IG9wdF9jcHVpZF9tYXNrX2V4 dF9lY3gsIG9wdF9jcHVpZF9tYXNrX2V4dF9lZHg7CiBleHRlcm4gaW50IGdldF9tb2RlbF9uYW1l KHN0cnVjdCBjcHVpbmZvX3g4NiAqYyk7CiBleHRlcm4gdm9pZCBkaXNwbGF5X2NhY2hlaW5mbyhz dHJ1Y3QgY3B1aW5mb194ODYgKmMpOwogCit2b2lkIGVhcmx5X2luaXRfYW1kKHN0cnVjdCBjcHVp bmZvX3g4NiAqYyk7CisKIGludCBpbnRlbF9jcHVfaW5pdCh2b2lkKTsKIGludCBhbWRfaW5pdF9j cHUodm9pZCk7CiBpbnQgY2VudGF1cl9pbml0X2NwdSh2b2lkKTsKIGludCBzaGFuZ2hhaV9pbml0 X2NwdSh2b2lkKTsKK2ludCBoeWdvbl9pbml0X2NwdSh2b2lkKTsKZGlmZiAtLWdpdCBhL3hlbi9h cmNoL3g4Ni9jcHUvaHlnb24uYyBiL3hlbi9hcmNoL3g4Ni9jcHUvaHlnb24uYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTI4NDljCi0tLSAvZGV2L251bGwKKysrIGIveGVu L2FyY2gveDg2L2NwdS9oeWdvbi5jCkBAIC0wLDAgKzEsMTE0IEBACisjaW5jbHVkZSA8eGVuL2lu aXQuaD4KKyNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+CisjaW5jbHVkZSA8YXNtL2h2bS9zdXBw b3J0Lmg+CisjaW5jbHVkZSA8YXNtL3NwZWNfY3RybC5oPgorCisjaW5jbHVkZSAiY3B1LmgiCisK KyNkZWZpbmUgQVBJQ0lEX1NPQ0tFVF9JRF9CSVQgNgorCitzdGF0aWMgdm9pZCBoeWdvbl9nZXRf dG9wb2xvZ3koc3RydWN0IGNwdWluZm9feDg2ICpjKQoreworCXVuc2lnbmVkIGludCBlYng7CisK KwlpZiAoYy0+eDg2X21heF9jb3JlcyA8PSAxKQorCQlyZXR1cm47CisKKwkvKiBTb2NrZXQgSUQg aXMgQXBpY0lkWzZdIGZvciBIeWdvbiBwcm9jZXNzb3JzLiAqLworCWMtPnBoeXNfcHJvY19pZCA+ Pj0gQVBJQ0lEX1NPQ0tFVF9JRF9CSVQ7CisKKwllYnggPSBjcHVpZF9lYngoMHg4MDAwMDAxZSk7 CisJYy0+eDg2X251bV9zaWJsaW5ncyA9ICgoZWJ4ID4+IDgpICYgMHgzKSArIDE7CisJYy0+eDg2 X21heF9jb3JlcyAvPSBjLT54ODZfbnVtX3NpYmxpbmdzOworCWMtPmNwdV9jb3JlX2lkID0gZWJ4 ICYgMHhmZjsKKworCWlmIChvcHRfY3B1X2luZm8pCisJICAgICAgICBwcmludGsoIkNQVSAlZCgl ZCkgLT4gUHJvY2Vzc29yICVkLCBDb3JlICVkXG4iLAorCSAgICAgICAgICAgICAgICBzbXBfcHJv Y2Vzc29yX2lkKCksIGMtPng4Nl9tYXhfY29yZXMsCisJICAgICAgICAgICAgICAgICAgICAgICAg Yy0+cGh5c19wcm9jX2lkLCBjLT5jcHVfY29yZV9pZCk7Cit9CisKK3N0YXRpYyB2b2lkIGluaXRf aHlnb24oc3RydWN0IGNwdWluZm9feDg2ICpjKQoreworCXVuc2lnbmVkIGxvbmcgbG9uZyB2YWx1 ZTsKKworCS8qCisJICogQXR0ZW1wdCB0byBzZXQgbGZlbmNlIHRvIGJlIERpc3BhdGNoIFNlcmlh bGlzaW5nLiAgVGhpcyBNU1IgYWxtb3N0CisJICogY2VydGFpbmx5IGlzbid0IHZpcnR1YWxpc2Vk IChhbmQgWGVuIGF0IGxlYXN0IHdpbGwgbGVhayB0aGUgcmVhbAorCSAqIHZhbHVlIGluIGJ1dCBz aWxlbnRseSBkaXNjYXJkIHdyaXRlcyksIGFzIHdlbGwgYXMgYmVpbmcgcGVyLWNvcmUKKwkgKiBy YXRoZXIgdGhhbiBwZXItdGhyZWFkLCBzbyBkbyBhIGZ1bGwgc2FmZSByZWFkL3dyaXRlL3JlYWRi YWNrIGN5Y2xlCisJICogaW4gdGhlIHdvcnN0IGNhc2UuCisJICovCisJaWYgKHJkbXNyX3NhZmUo TVNSX0FNRDY0X0RFX0NGRywgdmFsdWUpKQorCQkvKiBVbmFibGUgdG8gcmVhZC4gIEFzc3VtZSB0 aGUgc2FmZXIgZGVmYXVsdC4gKi8KKwkJX19jbGVhcl9iaXQoWDg2X0ZFQVRVUkVfTEZFTkNFX0RJ U1BBVENILAorCQkJICAgIGMtPng4Nl9jYXBhYmlsaXR5KTsKKwllbHNlIGlmICh2YWx1ZSAmIEFN RDY0X0RFX0NGR19MRkVOQ0VfU0VSSUFMSVNFKQorCQkvKiBBbHJlYWR5IGRpc3BhdGNoIHNlcmlh bGlzaW5nLiAqLworCQlfX3NldF9iaXQoWDg2X0ZFQVRVUkVfTEZFTkNFX0RJU1BBVENILAorCQkJ ICBjLT54ODZfY2FwYWJpbGl0eSk7CisJZWxzZSBpZiAod3Jtc3Jfc2FmZShNU1JfQU1ENjRfREVf Q0ZHLAorCQkJICAgIHZhbHVlIHwgQU1ENjRfREVfQ0ZHX0xGRU5DRV9TRVJJQUxJU0UpIHx8CisJ CSByZG1zcl9zYWZlKE1TUl9BTUQ2NF9ERV9DRkcsIHZhbHVlKSB8fAorCQkgISh2YWx1ZSAmIEFN RDY0X0RFX0NGR19MRkVOQ0VfU0VSSUFMSVNFKSkKKwkJLyogQXR0ZW1wdCB0byBzZXQgZmFpbGVk LiAgQXNzdW1lIHRoZSBzYWZlciBkZWZhdWx0LiAqLworCQlfX2NsZWFyX2JpdChYODZfRkVBVFVS RV9MRkVOQ0VfRElTUEFUQ0gsCisJCQkgICAgYy0+eDg2X2NhcGFiaWxpdHkpOworCWVsc2UKKwkJ LyogU3VjY2Vzc2Z1bGx5IGVuYWJsZWQhICovCisJCV9fc2V0X2JpdChYODZfRkVBVFVSRV9MRkVO Q0VfRElTUEFUQ0gsCisJCQkgIGMtPng4Nl9jYXBhYmlsaXR5KTsKKworCS8qCisJICogSWYgdGhl IHVzZXIgaGFzIGV4cGxpY2l0bHkgY2hvc2VuIHRvIGRpc2FibGUgTWVtb3J5IERpc2FtYmlndWF0 aW9uCisJICogdG8gbWl0aWdpYXRlIFNwZWN1bGF0aXZlIFN0b3JlIEJ5cGFzcywgcG9rZSB0aGUg YXBwcm9wcmlhdGUgTVNSLgorCSAqLworCWlmIChvcHRfc3NiZCAmJiAhcmRtc3Jfc2FmZShNU1Jf QU1ENjRfTFNfQ0ZHLCB2YWx1ZSkpIHsKKwkJdmFsdWUgfD0gMXVsbCA8PCAxMDsKKwkJd3Jtc3Jf c2FmZShNU1JfQU1ENjRfTFNfQ0ZHLCB2YWx1ZSk7CisJfQorCisJLyogTUZFTkNFIHN0b3BzIFJE VFNDIHNwZWN1bGF0aW9uICovCisJaWYgKCFjcHVfaGFzX2xmZW5jZV9kaXNwYXRjaCkKKwkJX19z ZXRfYml0KFg4Nl9GRUFUVVJFX01GRU5DRV9SRFRTQywgYy0+eDg2X2NhcGFiaWxpdHkpOworCisJ ZGlzcGxheV9jYWNoZWluZm8oYyk7CisKKwlpZiAoYy0+ZXh0ZW5kZWRfY3B1aWRfbGV2ZWwgPj0g MHg4MDAwMDAwOCkKKwkJYy0+eDg2X21heF9jb3JlcyA9IChjcHVpZF9lY3goMHg4MDAwMDAwOCkg JiAweGZmKSArIDE7CisKKwlpZiAoYy0+ZXh0ZW5kZWRfY3B1aWRfbGV2ZWwgPj0gMHg4MDAwMDAw NykgeworCQlpZiAoY3B1X2hhcyhjLCBYODZfRkVBVFVSRV9JVFNDKSkgeworCQkJX19zZXRfYml0 KFg4Nl9GRUFUVVJFX0NPTlNUQU5UX1RTQywgYy0+eDg2X2NhcGFiaWxpdHkpOworCQkJX19zZXRf Yml0KFg4Nl9GRUFUVVJFX05PTlNUT1BfVFNDLCBjLT54ODZfY2FwYWJpbGl0eSk7CisJCQlfX3Nl dF9iaXQoWDg2X0ZFQVRVUkVfVFNDX1JFTElBQkxFLCBjLT54ODZfY2FwYWJpbGl0eSk7CisJCX0K Kwl9CisKKwloeWdvbl9nZXRfdG9wb2xvZ3koYyk7CisKKwkvKiBIeWdvbiBDUFVzIGRvIG5vdCBz dXBwb3J0IFNZU0VOVEVSIG91dHNpZGUgb2YgbGVnYWN5IG1vZGUuICovCisJX19jbGVhcl9iaXQo WDg2X0ZFQVRVUkVfU0VQLCBjLT54ODZfY2FwYWJpbGl0eSk7CisKKwkvKiBIeWdvbiBwcm9jZXNz b3JzIGhhdmUgQVBJQyB0aW1lciBydW5uaW5nIGluIGRlZXAgQyBzdGF0ZXMuICovCisJaWYgKG9w dF9hcmF0KQorCQlfX3NldF9iaXQoWDg2X0ZFQVRVUkVfQVJBVCwgYy0+eDg2X2NhcGFiaWxpdHkp OworCisJaWYgKGNwdV9oYXMoYywgWDg2X0ZFQVRVUkVfRUZSTykpIHsKKwkJcmRtc3JsKE1TUl9L N19IV0NSLCB2YWx1ZSk7CisJCXZhbHVlIHw9ICgxIDw8IDI3KTsgLyogRW5hYmxlIHJlYWQtb25s eSBBUEVSRi9NUEVSRiBiaXQgKi8KKwkJd3Jtc3JsKE1TUl9LN19IV0NSLCB2YWx1ZSk7CisJfQor fQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGNwdV9kZXYgaHlnb25fY3B1X2RldiA9IHsKKwkuY192 ZW5kb3IJPSAiSHlnb24iLAorCS5jX2Vhcmx5X2luaXQJPSBlYXJseV9pbml0X2FtZCwKKwkuY19p bml0CQk9IGluaXRfaHlnb24sCit9OworCitpbnQgX19pbml0IGh5Z29uX2luaXRfY3B1KHZvaWQp Cit7CisJY3B1X2RldnNbWDg2X1ZFTkRPUl9IWUdPTl0gPSAmaHlnb25fY3B1X2RldjsKKwlyZXR1 cm4gMDsKK30KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYveDg2LXZlbmRvcnMuaCBi L3hlbi9pbmNsdWRlL2FzbS14ODYveDg2LXZlbmRvcnMuaAppbmRleCA3NzRjZWFjLi43NWZlZmNm IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L3g4Ni12ZW5kb3JzLmgKKysrIGIveGVu L2luY2x1ZGUvYXNtLXg4Ni94ODYtdmVuZG9ycy5oCkBAIC0zMCw2ICszMCwxMSBAQAogI2RlZmlu ZSBYODZfVkVORE9SX1NIQU5HSEFJX0VDWCAweDIwMjA2OTYxVQogI2RlZmluZSBYODZfVkVORE9S X1NIQU5HSEFJX0VEWCAweDY4Njc2ZTYxVQogCi0jZGVmaW5lIFg4Nl9WRU5ET1JfTlVNIDUKKyNk ZWZpbmUgWDg2X1ZFTkRPUl9IWUdPTiA1CisjZGVmaW5lIFg4Nl9WRU5ET1JfSFlHT05fRUJYIDB4 NmY2Nzc5NDggLyogIkh5Z29uR2VudWluZSIgKi8KKyNkZWZpbmUgWDg2X1ZFTkRPUl9IWUdPTl9F Q1ggMHg2NTZlNjk3NQorI2RlZmluZSBYODZfVkVORE9SX0hZR09OX0VEWCAweDZlNjU0NzZlCisK KyNkZWZpbmUgWDg2X1ZFTkRPUl9OVU0gNgogCiAjZW5kaWYJLyogX19YRU5fWDg2X1ZFTkRPUlNf SF9fICovCmRpZmYgLS1naXQgYS94ZW4vbGliL3g4Ni9jcHVpZC5jIGIveGVuL2xpYi94ODYvY3B1 aWQuYwppbmRleCAzMTFkMTllLi5kMGIzZmY3IDEwMDY0NAotLS0gYS94ZW4vbGliL3g4Ni9jcHVp ZC5jCisrKyBiL3hlbi9saWIveDg2L2NwdWlkLmMKQEAgLTI5LDYgKzI5LDEyIEBAIHVuc2lnbmVk IGludCB4ODZfY3B1aWRfbG9va3VwX3ZlbmRvcih1aW50MzJfdCBlYngsIHVpbnQzMl90IGVjeCwg dWludDMyX3QgZWR4KQogICAgICAgICAgICAgIGVkeCA9PSBYODZfVkVORE9SX1NIQU5HSEFJX0VE WCApCiAgICAgICAgICAgICByZXR1cm4gWDg2X1ZFTkRPUl9TSEFOR0hBSTsKICAgICAgICAgYnJl YWs7CisKKyAgICBjYXNlIFg4Nl9WRU5ET1JfSFlHT05fRUJYOgorICAgICAgICBpZiAoIGVjeCA9 PSBYODZfVkVORE9SX0hZR09OX0VDWCAmJgorICAgICAgICAgICAgIGVkeCA9PSBYODZfVkVORE9S X0hZR09OX0VEWCApCisgICAgICAgICAgICByZXR1cm4gWDg2X1ZFTkRPUl9IWUdPTjsKKyAgICAg ICAgYnJlYWs7CiAgICAgfQogCiAgICAgcmV0dXJuIFg4Nl9WRU5ET1JfVU5LTk9XTjsKLS0gCjIu Ny40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVu LWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6 Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==