From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thierry Reding Subject: [PATCH 2/3] drm/tegra: hda: Extract HDA format parsing code Date: Thu, 3 Jan 2019 15:23:16 +0100 Message-ID: <20190103142317.26124-2-thierry.reding@gmail.com> References: <20190103142317.26124-1-thierry.reding@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm1-x343.google.com (mail-wm1-x343.google.com [IPv6:2a00:1450:4864:20::343]) by gabe.freedesktop.org (Postfix) with ESMTPS id F13F689A60 for ; Thu, 3 Jan 2019 14:23:21 +0000 (UTC) Received: by mail-wm1-x343.google.com with SMTP id m1so29422041wml.2 for ; Thu, 03 Jan 2019 06:23:21 -0800 (PST) In-Reply-To: <20190103142317.26124-1-thierry.reding@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thierry Reding Cc: dri-devel@lists.freedesktop.org, linux-tegra@vger.kernel.org, Sameer Pujar , Mohan Kumar , Ujwal Patel List-Id: dri-devel@lists.freedesktop.org RnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KClRoaXMgY29kZSBjYW4g YmUgcmV1c2VkIGZvciBIRE1JLCBzbyBleHRyYWN0IGl0IGludG8gYSByZXVzYWJsZQpmdW5jdGlv bi4KClNpZ25lZC1vZmYtYnk6IFRoaWVycnkgUmVkaW5nIDx0cmVkaW5nQG52aWRpYS5jb20+Ci0t LQogZHJpdmVycy9ncHUvZHJtL3RlZ3JhL01ha2VmaWxlIHwgIDEgKwogZHJpdmVycy9ncHUvZHJt L3RlZ3JhL2hkYS5jICAgIHwgNjMgKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMv Z3B1L2RybS90ZWdyYS9oZGEuaCAgICB8IDIwICsrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL3Rl Z3JhL3Nvci5jICAgIHwgODAgKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogNCBm aWxlcyBjaGFuZ2VkLCA5MyBpbnNlcnRpb25zKCspLCA3MSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vdGVncmEvaGRhLmMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBkcml2ZXJzL2dwdS9kcm0vdGVncmEvaGRhLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vdGVncmEvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvTWFrZWZpbGUKaW5kZXgg MmUwZDYyMTNmNmJjLi4zM2M0NjNlOGQ0OWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS90 ZWdyYS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvTWFrZWZpbGUKQEAgLTEw LDYgKzEwLDcgQEAgdGVncmEtZHJtLXkgOj0gXAogCWRjLm8gXAogCW91dHB1dC5vIFwKIAlyZ2Iu byBcCisJaGRhLm8gXAogCWhkbWkubyBcCiAJbWlwaS1waHkubyBcCiAJZHNpLm8gXApkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2hkYS5jIGIvZHJpdmVycy9ncHUvZHJtL3RlZ3Jh L2hkYS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOTQyNDVhMThh MDQzCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2hkYS5jCkBAIC0w LDAgKzEsNjMgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKKy8qCisgKiBDb3B5 cmlnaHQgKEMpIDIwMTkgTlZJRElBIENvcnBvcmF0aW9uCisgKi8KKworI2luY2x1ZGUgPGxpbnV4 L2J1Zy5oPgorCisjaW5jbHVkZSA8c291bmQvaGRhX3ZlcmJzLmg+CisKKyNpbmNsdWRlICJoZGEu aCIKKwordm9pZCB0ZWdyYV9oZGFfcGFyc2VfZm9ybWF0KHVuc2lnbmVkIGludCBmb3JtYXQsIHN0 cnVjdCB0ZWdyYV9oZGFfZm9ybWF0ICpmbXQpCit7CisJdW5zaWduZWQgaW50IG11bCwgZGl2LCBi aXRzLCBjaGFubmVsczsKKworCWlmIChmb3JtYXQgJiBBQ19GTVRfVFlQRV9OT05fUENNKQorCQlm bXQtPnBjbSA9IGZhbHNlOworCWVsc2UKKwkJZm10LT5wY20gPSB0cnVlOworCisJaWYgKGZvcm1h dCAmIEFDX0ZNVF9CQVNFXzQ0SykKKwkJZm10LT5zYW1wbGVfcmF0ZSA9IDQ0MTAwOworCWVsc2UK KwkJZm10LT5zYW1wbGVfcmF0ZSA9IDQ4MDAwOworCisJbXVsID0gKGZvcm1hdCAmIEFDX0ZNVF9N VUxUX01BU0spID4+IEFDX0ZNVF9NVUxUX1NISUZUOworCWRpdiA9IChmb3JtYXQgJiBBQ19GTVRf RElWX01BU0spID4+IEFDX0ZNVF9ESVZfU0hJRlQ7CisKKwlmbXQtPnNhbXBsZV9yYXRlICo9ICht dWwgKyAxKSAvIChkaXYgKyAxKTsKKworCXN3aXRjaCAoZm9ybWF0ICYgQUNfRk1UX0JJVFNfTUFT SykgeworCWNhc2UgQUNfRk1UX0JJVFNfODoKKwkJZm10LT5iaXRzID0gODsKKwkJYnJlYWs7CisK KwljYXNlIEFDX0ZNVF9CSVRTXzE2OgorCQlmbXQtPmJpdHMgPSAxNjsKKwkJYnJlYWs7CisKKwlj YXNlIEFDX0ZNVF9CSVRTXzIwOgorCQlmbXQtPmJpdHMgPSAyMDsKKwkJYnJlYWs7CisKKwljYXNl IEFDX0ZNVF9CSVRTXzI0OgorCQlmbXQtPmJpdHMgPSAyNDsKKwkJYnJlYWs7CisKKwljYXNlIEFD X0ZNVF9CSVRTXzMyOgorCQlmbXQtPmJpdHMgPSAzMjsKKwkJYnJlYWs7CisKKwlkZWZhdWx0Ogor CQliaXRzID0gKGZvcm1hdCAmIEFDX0ZNVF9CSVRTX01BU0spID4+IEFDX0ZNVF9CSVRTX1NISUZU OworCQlXQVJOKDEsICJpbnZhbGlkIG51bWJlciBvZiBiaXRzOiAlI3hcbiIsIGJpdHMpOworCQlm bXQtPmJpdHMgPSA4OworCQlicmVhazsKKwl9CisKKwljaGFubmVscyA9IChmb3JtYXQgJiBBQ19G TVRfQ0hBTl9NQVNLKSA+PiBBQ19GTVRfQ0hBTl9TSElGVDsKKworCS8qIGNoYW5uZWxzIGFyZSBl bmNvZGVkIGFzIG4gLSAxICovCisJZm10LT5jaGFubmVscyA9IGNoYW5uZWxzICsgMTsKK30KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9oZGEuaCBiL2RyaXZlcnMvZ3B1L2RybS90 ZWdyYS9oZGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjc3MjY5 OTU1YTRmMgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9oZGEuaApA QCAtMCwwICsxLDIwIEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCisvKgorICog Q29weXJpZ2h0IChDKSAyMDE5IE5WSURJQSBDb3Jwb3JhdGlvbgorICovCisKKyNpZm5kZWYgRFJN X1RFR1JBX0hEQV9ICisjZGVmaW5lIERSTV9URUdSQV9IREFfSCAxCisKKyNpbmNsdWRlIDxsaW51 eC90eXBlcy5oPgorCitzdHJ1Y3QgdGVncmFfaGRhX2Zvcm1hdCB7CisJdW5zaWduZWQgaW50IHNh bXBsZV9yYXRlOworCXVuc2lnbmVkIGludCBjaGFubmVsczsKKwl1bnNpZ25lZCBpbnQgYml0czsK Kwlib29sIHBjbTsKK307CisKK3ZvaWQgdGVncmFfaGRhX3BhcnNlX2Zvcm1hdCh1bnNpZ25lZCBp bnQgZm9ybWF0LCBzdHJ1Y3QgdGVncmFfaGRhX2Zvcm1hdCAqZm10KTsKKworI2VuZGlmCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdGVncmEvc29yLmMgYi9kcml2ZXJzL2dwdS9kcm0vdGVn cmEvc29yLmMKaW5kZXggNzgzOTIyM2FhMDQwLi43OTYwMmRlYmYyMzEgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS90ZWdyYS9zb3IuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvc29y LmMKQEAgLTE5LDggKzE5LDYgQEAKIAogI2luY2x1ZGUgPHNvYy90ZWdyYS9wbWMuaD4KIAotI2lu Y2x1ZGUgPHNvdW5kL2hkYV92ZXJicy5oPgotCiAjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVs cGVyLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9kcF9oZWxwZXIuaD4KICNpbmNsdWRlIDxkcm0vZHJt X3BhbmVsLmg+CkBAIC0yOCw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJkYy5oIgogI2luY2x1ZGUg ImRybS5oIgorI2luY2x1ZGUgImhkYS5oIgogI2luY2x1ZGUgInNvci5oIgogI2luY2x1ZGUgInRy YWNlLmgiCiAKQEAgLTM5MywxMyArMzkyLDYgQEAgc3RydWN0IHRlZ3JhX3Nvcl9vcHMgewogCWlu dCAoKnJlbW92ZSkoc3RydWN0IHRlZ3JhX3NvciAqc29yKTsKIH07CiAKLXN0cnVjdCB0ZWdyYV9z b3JfYXVkaW8gewotCXVuc2lnbmVkIGludCBzYW1wbGVfcmF0ZTsKLQl1bnNpZ25lZCBpbnQgY2hh bm5lbHM7Ci0JdW5zaWduZWQgaW50IGJpdHM7Ci0JYm9vbCBwY207Ci19OwotCiBzdHJ1Y3QgdGVn cmFfc29yIHsKIAlzdHJ1Y3QgaG9zdDF4X2NsaWVudCBjbGllbnQ7CiAJc3RydWN0IHRlZ3JhX291 dHB1dCBvdXRwdXQ7CkBAIC00MzYsNyArNDI4LDcgQEAgc3RydWN0IHRlZ3JhX3NvciB7CiAJc3Ry dWN0IGRlbGF5ZWRfd29yayBzY2RjOwogCWJvb2wgc2NkY19lbmFibGVkOwogCi0Jc3RydWN0IHRl Z3JhX3Nvcl9hdWRpbyBhdWRpbzsKKwlzdHJ1Y3QgdGVncmFfaGRhX2Zvcm1hdCBmb3JtYXQ7CiB9 OwogCiBzdHJ1Y3QgdGVncmFfc29yX3N0YXRlIHsKQEAgLTIxODksNyArMjE4MSw3IEBAIHN0YXRp YyBpbnQgdGVncmFfc29yX2hkbWlfZW5hYmxlX2F1ZGlvX2luZm9mcmFtZShzdHJ1Y3QgdGVncmFf c29yICpzb3IpCiAJCXJldHVybiBlcnI7CiAJfQogCi0JZnJhbWUuY2hhbm5lbHMgPSBzb3ItPmF1 ZGlvLmNoYW5uZWxzOworCWZyYW1lLmNoYW5uZWxzID0gc29yLT5mb3JtYXQuY2hhbm5lbHM7CiAK IAllcnIgPSBoZG1pX2F1ZGlvX2luZm9mcmFtZV9wYWNrKCZmcmFtZSwgYnVmZmVyLCBzaXplb2Yo YnVmZmVyKSk7CiAJaWYgKGVyciA8IDApIHsKQEAgLTIyMTgsNyArMjIxMCw3IEBAIHN0YXRpYyB2 b2lkIHRlZ3JhX3Nvcl9oZG1pX2F1ZGlvX2VuYWJsZShzdHJ1Y3QgdGVncmFfc29yICpzb3IpCiAJ dmFsdWUgfD0gU09SX0FVRElPX0NOVFJMX1NPVVJDRV9TRUxFQ1QoU09VUkNFX1NFTEVDVF9IREEp OwogCiAJLyogaW5qZWN0IG51bGwgc2FtcGxlcyAqLwotCWlmIChzb3ItPmF1ZGlvLmNoYW5uZWxz ICE9IDIpCisJaWYgKHNvci0+Zm9ybWF0LmNoYW5uZWxzICE9IDIpCiAJCXZhbHVlICY9IH5TT1Jf QVVESU9fQ05UUkxfSU5KRUNUX05VTExTTVBMOwogCWVsc2UKIAkJdmFsdWUgfD0gU09SX0FVRElP X0NOVFJMX0lOSkVDVF9OVUxMU01QTDsKQEAgLTIyNDksNyArMjI0MSw3IEBAIHN0YXRpYyB2b2lk IHRlZ3JhX3Nvcl9oZG1pX2F1ZGlvX2VuYWJsZShzdHJ1Y3QgdGVncmFfc29yICpzb3IpCiAJdmFs dWUgPSBTT1JfSERNSV9BVURJT19OX1JFU0VUIHwgU09SX0hETUlfQVVESU9fTl9MT09LVVA7CiAJ dGVncmFfc29yX3dyaXRlbChzb3IsIHZhbHVlLCBTT1JfSERNSV9BVURJT19OKTsKIAotCXZhbHVl ID0gKDI0MDAwICogNDA5NikgLyAoMTI4ICogc29yLT5hdWRpby5zYW1wbGVfcmF0ZSAvIDEwMDAp OworCXZhbHVlID0gKDI0MDAwICogNDA5NikgLyAoMTI4ICogc29yLT5mb3JtYXQuc2FtcGxlX3Jh dGUgLyAxMDAwKTsKIAl0ZWdyYV9zb3Jfd3JpdGVsKHNvciwgdmFsdWUsIFNPUl9BVURJT19BVkFM XzAzMjApOwogCXRlZ3JhX3Nvcl93cml0ZWwoc29yLCA0MDk2LCBTT1JfQVVESU9fTlZBTF8wMzIw KTsKIApAQCAtMjI2MiwxNSArMjI1NCwxNSBAQCBzdGF0aWMgdm9pZCB0ZWdyYV9zb3JfaGRtaV9h dWRpb19lbmFibGUoc3RydWN0IHRlZ3JhX3NvciAqc29yKQogCXRlZ3JhX3Nvcl93cml0ZWwoc29y LCAyMDAwMCwgU09SX0FVRElPX0FWQUxfMTc2NCk7CiAJdGVncmFfc29yX3dyaXRlbChzb3IsIDE4 ODE2LCBTT1JfQVVESU9fTlZBTF8xNzY0KTsKIAotCXZhbHVlID0gKDI0MDAwICogNjE0NCkgLyAo MTI4ICogc29yLT5hdWRpby5zYW1wbGVfcmF0ZSAvIDEwMDApOworCXZhbHVlID0gKDI0MDAwICog NjE0NCkgLyAoMTI4ICogc29yLT5mb3JtYXQuc2FtcGxlX3JhdGUgLyAxMDAwKTsKIAl0ZWdyYV9z b3Jfd3JpdGVsKHNvciwgdmFsdWUsIFNPUl9BVURJT19BVkFMXzA0ODApOwogCXRlZ3JhX3Nvcl93 cml0ZWwoc29yLCA2MTQ0LCBTT1JfQVVESU9fTlZBTF8wNDgwKTsKIAotCXZhbHVlID0gKDI0MDAw ICogMTIyODgpIC8gKDEyOCAqIHNvci0+YXVkaW8uc2FtcGxlX3JhdGUgLyAxMDAwKTsKKwl2YWx1 ZSA9ICgyNDAwMCAqIDEyMjg4KSAvICgxMjggKiBzb3ItPmZvcm1hdC5zYW1wbGVfcmF0ZSAvIDEw MDApOwogCXRlZ3JhX3Nvcl93cml0ZWwoc29yLCB2YWx1ZSwgU09SX0FVRElPX0FWQUxfMDk2MCk7 CiAJdGVncmFfc29yX3dyaXRlbChzb3IsIDEyMjg4LCBTT1JfQVVESU9fTlZBTF8wOTYwKTsKIAot CXZhbHVlID0gKDI0MDAwICogMjQ1NzYpIC8gKDEyOCAqIHNvci0+YXVkaW8uc2FtcGxlX3JhdGUg LyAxMDAwKTsKKwl2YWx1ZSA9ICgyNDAwMCAqIDI0NTc2KSAvICgxMjggKiBzb3ItPmZvcm1hdC5z YW1wbGVfcmF0ZSAvIDEwMDApOwogCXRlZ3JhX3Nvcl93cml0ZWwoc29yLCB2YWx1ZSwgU09SX0FV RElPX0FWQUxfMTkyMCk7CiAJdGVncmFfc29yX3dyaXRlbChzb3IsIDI0NTc2LCBTT1JfQVVESU9f TlZBTF8xOTIwKTsKIApAQCAtMzE5OSw2MCArMzE5MSw2IEBAIHN0YXRpYyBpbnQgdGVncmFfc29y X3BhcnNlX2R0KHN0cnVjdCB0ZWdyYV9zb3IgKnNvcikKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGlj IHZvaWQgdGVncmFfaGRhX3BhcnNlX2Zvcm1hdCh1bnNpZ25lZCBpbnQgZm9ybWF0LAotCQkJCSAg IHN0cnVjdCB0ZWdyYV9zb3JfYXVkaW8gKmF1ZGlvKQotewotCXVuc2lnbmVkIGludCBtdWwsIGRp diwgYml0cywgY2hhbm5lbHM7Ci0KLQlpZiAoZm9ybWF0ICYgQUNfRk1UX1RZUEVfTk9OX1BDTSkK LQkJYXVkaW8tPnBjbSA9IGZhbHNlOwotCWVsc2UKLQkJYXVkaW8tPnBjbSA9IHRydWU7Ci0KLQlp ZiAoZm9ybWF0ICYgQUNfRk1UX0JBU0VfNDRLKQotCQlhdWRpby0+c2FtcGxlX3JhdGUgPSA0NDEw MDsKLQllbHNlCi0JCWF1ZGlvLT5zYW1wbGVfcmF0ZSA9IDQ4MDAwOwotCi0JbXVsID0gKGZvcm1h dCAmIEFDX0ZNVF9NVUxUX01BU0spID4+IEFDX0ZNVF9NVUxUX1NISUZUOwotCWRpdiA9IChmb3Jt YXQgJiBBQ19GTVRfRElWX01BU0spID4+IEFDX0ZNVF9ESVZfU0hJRlQ7Ci0KLQlhdWRpby0+c2Ft cGxlX3JhdGUgPSBhdWRpby0+c2FtcGxlX3JhdGUgKiAobXVsICsgMSkgLyAoZGl2ICsgMSk7Ci0K LQlzd2l0Y2ggKGZvcm1hdCAmIEFDX0ZNVF9CSVRTX01BU0spIHsKLQljYXNlIEFDX0ZNVF9CSVRT Xzg6Ci0JCWF1ZGlvLT5iaXRzID0gODsKLQkJYnJlYWs7Ci0KLQljYXNlIEFDX0ZNVF9CSVRTXzE2 OgotCQlhdWRpby0+Yml0cyA9IDE2OwotCQlicmVhazsKLQotCWNhc2UgQUNfRk1UX0JJVFNfMjA6 Ci0JCWF1ZGlvLT5iaXRzID0gMjA7Ci0JCWJyZWFrOwotCi0JY2FzZSBBQ19GTVRfQklUU18yNDoK LQkJYXVkaW8tPmJpdHMgPSAyNDsKLQkJYnJlYWs7Ci0KLQljYXNlIEFDX0ZNVF9CSVRTXzMyOgot CQlhdWRpby0+Yml0cyA9IDMyOwotCQlicmVhazsKLQotCWRlZmF1bHQ6Ci0JCWJpdHMgPSAoZm9y bWF0ICYgQUNfRk1UX0JJVFNfTUFTSykgPj4gQUNfRk1UX0JJVFNfU0hJRlQ7Ci0JCVdBUk4oMSwg ImludmFsaWQgbnVtYmVyIG9mIGJpdHM6ICUjeFxuIiwgYml0cyk7Ci0JCWF1ZGlvLT5iaXRzID0g ODsKLQkJYnJlYWs7Ci0JfQotCi0JY2hhbm5lbHMgPSAoZm9ybWF0ICYgQUNfRk1UX0NIQU5fTUFT SykgPj4gQUNfRk1UX0NIQU5fU0hJRlQ7Ci0KLQkvKiBjaGFubmVscyBhcmUgZW5jb2RlZCBhcyBu IC0gMSAqLwotCWF1ZGlvLT5jaGFubmVscyA9IGNoYW5uZWxzICsgMTsKLX0KLQogc3RhdGljIGly cXJldHVybl90IHRlZ3JhX3Nvcl9pcnEoaW50IGlycSwgdm9pZCAqZGF0YSkKIHsKIAlzdHJ1Y3Qg dGVncmFfc29yICpzb3IgPSBkYXRhOwpAQCAtMzI2OSw3ICszMjA3LDcgQEAgc3RhdGljIGlycXJl dHVybl90IHRlZ3JhX3Nvcl9pcnEoaW50IGlycSwgdm9pZCAqZGF0YSkKIAogCQkJZm9ybWF0ID0g dmFsdWUgJiBTT1JfQVVESU9fSERBX0NPREVDX1NDUkFUQ0gwX0ZNVF9NQVNLOwogCi0JCQl0ZWdy YV9oZGFfcGFyc2VfZm9ybWF0KGZvcm1hdCwgJnNvci0+YXVkaW8pOworCQkJdGVncmFfaGRhX3Bh cnNlX2Zvcm1hdChmb3JtYXQsICZzb3ItPmZvcm1hdCk7CiAKIAkJCXRlZ3JhX3Nvcl9oZG1pX2F1 ZGlvX2VuYWJsZShzb3IpOwogCQl9IGVsc2UgewotLSAKMi4xOS4xCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK