From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rex Zhu Subject: [PATCH 6/7] drm/amd/pp: Export load_firmware interface Date: Wed, 26 Sep 2018 20:50:48 +0800 Message-ID: <1537966249-30259-6-git-send-email-Rex.Zhu@amd.com> References: <1537966249-30259-1-git-send-email-Rex.Zhu@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1537966249-30259-1-git-send-email-Rex.Zhu-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: Rex Zhu RXhwb3J0IHRoaXMgaW50ZXJmYWNlIGZvciB0aGUgQU1ER1BVX0ZXX0xPQURfU01VIHR5cGUuCmdm eC9zZG1hIGNhbiByZXF1ZXN0IHNtdSB0byBsb2FkIGZpcm13YXJlLgoKU3BsaXQgdGhlIHNtdTcv OF9zdGFydF9zbXUgZnVuY3Rpb24gaW50byB0d28gZnVuY3Rpb25zCjEuIHN0YXJ0X3NtdSwgdXNl ZCBmb3IgbG9hZCBzbXUgZmlybXdhcmUgaW4gc211Ny84IGFuZAogICBjaGVjayBzbXUgZmlybXdh cmUgdmVyc2lvbi4KMi4gcmVxdWVzdF9zbXVfbG9hZF9mdywgdXNlZCBmb3IgbG9hZCBvdGhlciBp cCdzIGZpcm13YXJlCiAgIG9uIHNtdTcvOCBhbmQgYWRkIGZpcm13YXJlIGxvYWRpbmcgc3RhdXMg Y2hlY2suCgpTaWduZWQtb2ZmLWJ5OiBSZXggWmh1IDxSZXguWmh1QGFtZC5jb20+Ci0tLQogZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y4XzAuYyAgICAgICAgICAgICAgfCAxMSArKyst CiBkcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9hbWRfcG93ZXJwbGF5LmMgICAgICB8IDE0 ICsrKy0tCiBkcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9zbXVtZ3IvZmlqaV9zbXVtZ3Iu YyB8ICA0ICstCiAuLi4vZ3B1L2RybS9hbWQvcG93ZXJwbGF5L3NtdW1nci9pY2VsYW5kX3NtdW1n ci5jICB8IDI1ICsrKystLS0tLQogLi4uL2RybS9hbWQvcG93ZXJwbGF5L3NtdW1nci9wb2xhcmlz MTBfc211bWdyLmMgICAgfCAgNCArLQogZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvc211 bWdyL3NtdTdfc211bWdyLmMgfCA1OSArKysrKy0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dw dS9kcm0vYW1kL3Bvd2VycGxheS9zbXVtZ3Ivc211N19zbXVtZ3IuaCB8ICAzICstCiBkcml2ZXJz L2dwdS9kcm0vYW1kL3Bvd2VycGxheS9zbXVtZ3Ivc211OF9zbXVtZ3IuYyB8IDQ2ICsrKysrKysr LS0tLS0tLS0tCiAuLi4vZ3B1L2RybS9hbWQvcG93ZXJwbGF5L3NtdW1nci90b25nYV9zbXVtZ3Iu YyAgICB8IDEyICsrKystCiAuLi4vZ3B1L2RybS9hbWQvcG93ZXJwbGF5L3NtdW1nci92ZWdhbV9z bXVtZ3IuYyAgICB8ICA0ICstCiAxMCBmaWxlcyBjaGFuZ2VkLCA3OSBpbnNlcnRpb25zKCspLCAx MDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Z2Z4X3Y4XzAuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OF8wLmMKaW5kZXgg MmFlZWYyYi4uZjAyMGY2ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Z2Z4X3Y4XzAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjhfMC5jCkBA IC00MjE2LDEwICs0MjE2LDE3IEBAIHN0YXRpYyBpbnQgZ2Z4X3Y4XzBfcmxjX3Jlc3VtZShzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAlpZiAoYWRldi0+ZmlybXdhcmUubG9hZF90eXBlID09 IEFNREdQVV9GV19MT0FEX0RJUkVDVCkgewogCQkvKiBsZWdhY3kgcmxjIGZpcm13YXJlIGxvYWRp bmcgKi8KIAkJciA9IGdmeF92OF8wX3JsY19sb2FkX21pY3JvY29kZShhZGV2KTsKLQkJaWYgKHIp Ci0JCQlyZXR1cm4gcjsKKwl9IGVsc2UgaWYgKGFkZXYtPmZpcm13YXJlLmxvYWRfdHlwZSA9PSBB TURHUFVfRldfTE9BRF9TTVUgJiYgYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzLT5sb2FkX2Zpcm13 YXJlKSB7CisJCWFtZGdwdV91Y29kZV9pbml0X2JvKGFkZXYpOworCQlyID0gYWRldi0+cG93ZXJw bGF5LnBwX2Z1bmNzLT5sb2FkX2Zpcm13YXJlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUpOwor CX0gZWxzZSB7CisJCXIgPSAtRUlOVkFMOwogCX0KIAorCWlmIChyKSB7CisJCXByX2VycigiZmly bXdhcmUgbG9hZGluZyBmYWlsZWRcbiIpOworCQlyZXR1cm4gcjsKKwl9CiAJZ2Z4X3Y4XzBfcmxj X3N0YXJ0KGFkZXYpOwogCiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v YW1kL3Bvd2VycGxheS9hbWRfcG93ZXJwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2Vy cGxheS9hbWRfcG93ZXJwbGF5LmMKaW5kZXggYWZmN2MxNC4uM2JjODI1YyAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvYW1kX3Bvd2VycGxheS5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2FtZF9wb3dlcnBsYXkuYwpAQCAtMTI0LDkgKzEyNCw2 IEBAIHN0YXRpYyBpbnQgcHBfaHdfaW5pdCh2b2lkICpoYW5kbGUpCiAJc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYgPSBoYW5kbGU7CiAJc3RydWN0IHBwX2h3bWdyICpod21nciA9IGFkZXYtPnBv d2VycGxheS5wcF9oYW5kbGU7CiAKLQlpZiAoYWRldi0+ZmlybXdhcmUubG9hZF90eXBlID09IEFN REdQVV9GV19MT0FEX1NNVSkKLQkJYW1kZ3B1X3Vjb2RlX2luaXRfYm8oYWRldik7Ci0KIAlyZXQg PSBod21ncl9od19pbml0KGh3bWdyKTsKIAogCWlmIChyZXQpCkBAIC0yNzUsNyArMjcyLDE2IEBA IHN0YXRpYyBpbnQgcHBfc2V0X2Nsb2NrZ2F0aW5nX3N0YXRlKHZvaWQgKmhhbmRsZSwKIAogc3Rh dGljIGludCBwcF9kcG1fbG9hZF9mdyh2b2lkICpoYW5kbGUpCiB7Ci0JcmV0dXJuIDA7CisJc3Ry dWN0IHBwX2h3bWdyICpod21nciA9IGhhbmRsZTsKKwlpbnQgcmV0ID0gMDsKKworCWlmICghaHdt Z3IgfHwgIWh3bWdyLT5zbXVtZ3JfZnVuY3MpCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKGh3 bWdyLT5zbXVtZ3JfZnVuY3MtPnJlcXVlc3Rfc211X2xvYWRfZncpCisJCXJldCA9IGh3bWdyLT5z bXVtZ3JfZnVuY3MtPnJlcXVlc3Rfc211X2xvYWRfZncoaHdtZ3IpOworCisJcmV0dXJuIHJldDsK IH0KIAogc3RhdGljIGludCBwcF9kcG1fZndfbG9hZGluZ19jb21wbGV0ZSh2b2lkICpoYW5kbGUp CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9zbXVtZ3IvZmlqaV9z bXVtZ3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L3NtdW1nci9maWppX3NtdW1n ci5jCmluZGV4IGI2YjYyYTcuLmZmZDdkNzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvcG93ZXJwbGF5L3NtdW1nci9maWppX3NtdW1nci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvcG93ZXJwbGF5L3NtdW1nci9maWppX3NtdW1nci5jCkBAIC0zMTAsOCArMzEwLDYgQEAgc3Rh dGljIGludCBmaWppX3N0YXJ0X3NtdShzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKQogCQkJb2Zmc2V0 b2YoU01VNzNfRmlybXdhcmVfSGVhZGVyLCBTb2Z0UmVnaXN0ZXJzKSwKIAkJCSYocHJpdi0+c211 N19kYXRhLnNvZnRfcmVnc19zdGFydCksIDB4NDAwMDApOwogCi0JcmVzdWx0ID0gc211N19yZXF1 ZXN0X3NtdV9sb2FkX2Z3KGh3bWdyKTsKLQogCXJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTI2NDMs NyArMjY0MSw3IEBAIHN0YXRpYyBpbnQgZmlqaV91cGRhdGVfZHBtX3NldHRpbmdzKHN0cnVjdCBw cF9od21nciAqaHdtZ3IsCiAJLnNtdV9maW5pID0gJnNtdTdfc211X2ZpbmksCiAJLnN0YXJ0X3Nt dSA9ICZmaWppX3N0YXJ0X3NtdSwKIAkuY2hlY2tfZndfbG9hZF9maW5pc2ggPSAmc211N19jaGVj a19md19sb2FkX2ZpbmlzaCwKLQkucmVxdWVzdF9zbXVfbG9hZF9mdyA9ICZzbXU3X3JlbG9hZF9m aXJtd2FyZSwKKwkucmVxdWVzdF9zbXVfbG9hZF9mdyA9ICZzbXU3X3JlcXVlc3Rfc211X2xvYWRf ZncsCiAJLnJlcXVlc3Rfc211X2xvYWRfc3BlY2lmaWNfZncgPSBOVUxMLAogCS5zZW5kX21zZ190 b19zbWMgPSAmc211N19zZW5kX21zZ190b19zbWMsCiAJLnNlbmRfbXNnX3RvX3NtY193aXRoX3Bh cmFtZXRlciA9ICZzbXU3X3NlbmRfbXNnX3RvX3NtY193aXRoX3BhcmFtZXRlciwKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L3NtdW1nci9pY2VsYW5kX3NtdW1nci5j IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvc211bWdyL2ljZWxhbmRfc211bWdyLmMK aW5kZXggNzNhYTM2OC4uNjhhNDgzNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9w b3dlcnBsYXkvc211bWdyL2ljZWxhbmRfc211bWdyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9wb3dlcnBsYXkvc211bWdyL2ljZWxhbmRfc211bWdyLmMKQEAgLTIzMiwyNyArMjMyLDI0IEBA IHN0YXRpYyBpbnQgaWNlbGFuZF9yZXF1ZXN0X3NtdV9sb2FkX3NwZWNpZmljX2Z3KHN0cnVjdCBw cF9od21nciAqaHdtZ3IsCiAKIHN0YXRpYyBpbnQgaWNlbGFuZF9zdGFydF9zbXUoc3RydWN0IHBw X2h3bWdyICpod21ncikKIHsKLQlpbnQgcmVzdWx0OwotCi0JcmVzdWx0ID0gaWNlbGFuZF9zbXVf dXBsb2FkX2Zpcm13YXJlX2ltYWdlKGh3bWdyKTsKLQlpZiAocmVzdWx0KQotCQlyZXR1cm4gcmVz dWx0OwotCXJlc3VsdCA9IGljZWxhbmRfc211X3N0YXJ0X3NtYyhod21ncik7Ci0JaWYgKHJlc3Vs dCkKLQkJcmV0dXJuIHJlc3VsdDsKKwlzdHJ1Y3QgaWNlbGFuZF9zbXVtZ3IgKnByaXYgPSBod21n ci0+c211X2JhY2tlbmQ7CisJaW50IHJlc3VsdCA9IDA7CiAKIAlpZiAoIXNtdTdfaXNfc21jX3Jh bV9ydW5uaW5nKGh3bWdyKSkgewotCQlwcl9pbmZvKCJzbXUgbm90IHJ1bm5pbmcsIHVwbG9hZCBm aXJtd2FyZSBhZ2FpbiBcbiIpOwogCQlyZXN1bHQgPSBpY2VsYW5kX3NtdV91cGxvYWRfZmlybXdh cmVfaW1hZ2UoaHdtZ3IpOwogCQlpZiAocmVzdWx0KQogCQkJcmV0dXJuIHJlc3VsdDsKIAotCQly ZXN1bHQgPSBpY2VsYW5kX3NtdV9zdGFydF9zbWMoaHdtZ3IpOwotCQlpZiAocmVzdWx0KQotCQkJ cmV0dXJuIHJlc3VsdDsKKwkJaWNlbGFuZF9zbXVfc3RhcnRfc21jKGh3bWdyKTsKIAl9CisJLyog U2V0dXAgU29mdFJlZ3NTdGFydCBoZXJlIGZvciByZWdpc3RlciBsb29rdXAgaW4gY2FzZQorCSAq IER1bW15QmFja0VuZCBpcyB1c2VkIGFuZCBQcm9jZXNzRmlybXdhcmVIZWFkZXIgaXMgbm90IGV4 ZWN1dGVkCisJICovCiAKLQlyZXN1bHQgPSBzbXU3X3JlcXVlc3Rfc211X2xvYWRfZncoaHdtZ3Ip OworCXNtdTdfcmVhZF9zbWNfc3JhbV9kd29yZChod21nciwKKwkJCVNNVTcxX0ZJUk1XQVJFX0hF QURFUl9MT0NBVElPTiArCisJCQlvZmZzZXRvZihTTVU3MV9GaXJtd2FyZV9IZWFkZXIsIFNvZnRS ZWdpc3RlcnMpLAorCQkJJihwcml2LT5zbXU3X2RhdGEuc29mdF9yZWdzX3N0YXJ0KSwgMHg0MDAw MCk7CiAKIAlyZXR1cm4gcmVzdWx0OwogfQpAQCAtMjY2Miw3ICsyNjU5LDcgQEAgc3RhdGljIGJv b2wgaWNlbGFuZF9pc19kcG1fcnVubmluZyhzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKQogCS5zbXVf ZmluaSA9ICZzbXU3X3NtdV9maW5pLAogCS5zdGFydF9zbXUgPSAmaWNlbGFuZF9zdGFydF9zbXUs CiAJLmNoZWNrX2Z3X2xvYWRfZmluaXNoID0gJnNtdTdfY2hlY2tfZndfbG9hZF9maW5pc2gsCi0J LnJlcXVlc3Rfc211X2xvYWRfZncgPSAmc211N19yZWxvYWRfZmlybXdhcmUsCisJLnJlcXVlc3Rf c211X2xvYWRfZncgPSAmc211N19yZXF1ZXN0X3NtdV9sb2FkX2Z3LAogCS5yZXF1ZXN0X3NtdV9s b2FkX3NwZWNpZmljX2Z3ID0gJmljZWxhbmRfcmVxdWVzdF9zbXVfbG9hZF9zcGVjaWZpY19mdywK IAkuc2VuZF9tc2dfdG9fc21jID0gJnNtdTdfc2VuZF9tc2dfdG9fc21jLAogCS5zZW5kX21zZ190 b19zbWNfd2l0aF9wYXJhbWV0ZXIgPSAmc211N19zZW5kX21zZ190b19zbWNfd2l0aF9wYXJhbWV0 ZXIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9zbXVtZ3IvcG9s YXJpczEwX3NtdW1nci5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvc211bWdyL3Bv bGFyaXMxMF9zbXVtZ3IuYwppbmRleCA4NzJkMzgyLi4yYWQ2YWQ5IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9zbXVtZ3IvcG9sYXJpczEwX3NtdW1nci5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L3NtdW1nci9wb2xhcmlzMTBfc211bWdyLmMK QEAgLTMxMyw4ICszMTMsNiBAQCBzdGF0aWMgaW50IHBvbGFyaXMxMF9zdGFydF9zbXUoc3RydWN0 IHBwX2h3bWdyICpod21ncikKIAlzbXU3X3JlYWRfc21jX3NyYW1fZHdvcmQoaHdtZ3IsIFNNVTdf RklSTVdBUkVfSEVBREVSX0xPQ0FUSU9OICsgb2Zmc2V0b2YoU01VNzRfRmlybXdhcmVfSGVhZGVy LCBTb2Z0UmVnaXN0ZXJzKSwKIAkJCQkJJihzbXVfZGF0YS0+c211N19kYXRhLnNvZnRfcmVnc19z dGFydCksIDB4NDAwMDApOwogCi0JcmVzdWx0ID0gc211N19yZXF1ZXN0X3NtdV9sb2FkX2Z3KGh3 bWdyKTsKLQogCXJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTI0NzgsNyArMjQ3Niw3IEBAIHN0YXRp YyBpbnQgcG9sYXJpczEwX3VwZGF0ZV9kcG1fc2V0dGluZ3Moc3RydWN0IHBwX2h3bWdyICpod21n ciwKIAkuc211X2ZpbmkgPSBzbXU3X3NtdV9maW5pLAogCS5zdGFydF9zbXUgPSBwb2xhcmlzMTBf c3RhcnRfc211LAogCS5jaGVja19md19sb2FkX2ZpbmlzaCA9IHNtdTdfY2hlY2tfZndfbG9hZF9m aW5pc2gsCi0JLnJlcXVlc3Rfc211X2xvYWRfZncgPSBzbXU3X3JlbG9hZF9maXJtd2FyZSwKKwku cmVxdWVzdF9zbXVfbG9hZF9mdyA9IHNtdTdfcmVxdWVzdF9zbXVfbG9hZF9mdywKIAkucmVxdWVz dF9zbXVfbG9hZF9zcGVjaWZpY19mdyA9IE5VTEwsCiAJLnNlbmRfbXNnX3RvX3NtYyA9IHNtdTdf c2VuZF9tc2dfdG9fc21jLAogCS5zZW5kX21zZ190b19zbWNfd2l0aF9wYXJhbWV0ZXIgPSBzbXU3 X3NlbmRfbXNnX3RvX3NtY193aXRoX3BhcmFtZXRlciwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvcG93ZXJwbGF5L3NtdW1nci9zbXU3X3NtdW1nci5jIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9wb3dlcnBsYXkvc211bWdyL3NtdTdfc211bWdyLmMKaW5kZXggMTBlYjk2Ny4uZWRmYjA2 MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvc211bWdyL3NtdTdf c211bWdyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvc211bWdyL3NtdTdf c211bWdyLmMKQEAgLTMwMiw0NCArMzAyLDYgQEAgaW50IHNtdTdfd3JpdGVfc21jX3NyYW1fZHdv cmQoc3RydWN0IHBwX2h3bWdyICpod21nciwgdWludDMyX3Qgc21jX2FkZHIsIHVpbnQzMl8KIAly ZXR1cm4gMDsKIH0KIAotLyogQ29udmVydCB0aGUgZmlybXdhcmUgdHlwZSB0byBTTVUgdHlwZSBt YXNrLiBGb3IgTUVDLCB3ZSBuZWVkIHRvIGNoZWNrIGFsbCBNRUMgcmVsYXRlZCB0eXBlICovCi0K LXN0YXRpYyB1aW50MzJfdCBzbXU3X2dldF9tYXNrX2Zvcl9maXJtd2FyZV90eXBlKHVpbnQzMl90 IGZ3X3R5cGUpCi17Ci0JdWludDMyX3QgcmVzdWx0ID0gMDsKLQotCXN3aXRjaCAoZndfdHlwZSkg ewotCWNhc2UgVUNPREVfSURfU0RNQTA6Ci0JCXJlc3VsdCA9IFVDT0RFX0lEX1NETUEwX01BU0s7 Ci0JCWJyZWFrOwotCWNhc2UgVUNPREVfSURfU0RNQTE6Ci0JCXJlc3VsdCA9IFVDT0RFX0lEX1NE TUExX01BU0s7Ci0JCWJyZWFrOwotCWNhc2UgVUNPREVfSURfQ1BfQ0U6Ci0JCXJlc3VsdCA9IFVD T0RFX0lEX0NQX0NFX01BU0s7Ci0JCWJyZWFrOwotCWNhc2UgVUNPREVfSURfQ1BfUEZQOgotCQly ZXN1bHQgPSBVQ09ERV9JRF9DUF9QRlBfTUFTSzsKLQkJYnJlYWs7Ci0JY2FzZSBVQ09ERV9JRF9D UF9NRToKLQkJcmVzdWx0ID0gVUNPREVfSURfQ1BfTUVfTUFTSzsKLQkJYnJlYWs7Ci0JY2FzZSBV Q09ERV9JRF9DUF9NRUM6Ci0JY2FzZSBVQ09ERV9JRF9DUF9NRUNfSlQxOgotCWNhc2UgVUNPREVf SURfQ1BfTUVDX0pUMjoKLQkJcmVzdWx0ID0gVUNPREVfSURfQ1BfTUVDX01BU0s7Ci0JCWJyZWFr OwotCWNhc2UgVUNPREVfSURfUkxDX0c6Ci0JCXJlc3VsdCA9IFVDT0RFX0lEX1JMQ19HX01BU0s7 Ci0JCWJyZWFrOwotCWRlZmF1bHQ6Ci0JCXByX2luZm8oIlVDb2RlIHR5cGUgaXMgb3V0IG9mIHJh bmdlISBcbiIpOwotCQlyZXN1bHQgPSAwOwotCX0KLQotCXJldHVybiByZXN1bHQ7Ci19Ci0KIHN0 YXRpYyBpbnQgc211N19wb3B1bGF0ZV9zaW5nbGVfZmlybXdhcmVfZW50cnkoc3RydWN0IHBwX2h3 bWdyICpod21nciwKIAkJCQkJCXVpbnQzMl90IGZ3X3R5cGUsCiAJCQkJCQlzdHJ1Y3QgU01VX0Vu dHJ5ICplbnRyeSkKQEAgLTM4MSw2ICszNDMsMTEgQEAgaW50IHNtdTdfcmVxdWVzdF9zbXVfbG9h ZF9mdyhzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKQogCXVpbnQzMl90IGZ3X3RvX2xvYWQ7CiAJaW50 IHIgPSAwOwogCisJaWYgKGh3bWdyLT5zbXVtZ3JfZnVuY3MtPnN0YXJ0X3NtdShod21ncikpIHsK KwkJcHJfZXJyKCJzbXUgbm90IHJ1bm5pbmcgXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQor CiAJaWYgKHNtdV9kYXRhLT5zb2Z0X3JlZ3Nfc3RhcnQpCiAJCWNnc193cml0ZV9pbmRfcmVnaXN0 ZXIoaHdtZ3ItPmRldmljZSwgQ0dTX0lORF9SRUdfX1NNQywKIAkJCQkJc211X2RhdGEtPnNvZnRf cmVnc19zdGFydCArIHNtdW1fZ2V0X29mZnNldG9mKGh3bWdyLApAQCAtNDYyLDEwICs0MjksMTMg QEAgaW50IHNtdTdfcmVxdWVzdF9zbXVfbG9hZF9mdyhzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKQog CXNtdTdfc2VuZF9tc2dfdG9fc21jX3dpdGhfcGFyYW1ldGVyKGh3bWdyLCBQUFNNQ19NU0dfRFJW X0RSQU1fQUREUl9ISSwgdXBwZXJfMzJfYml0cyhzbXVfZGF0YS0+aGVhZGVyX2J1ZmZlci5tY19h ZGRyKSk7CiAJc211N19zZW5kX21zZ190b19zbWNfd2l0aF9wYXJhbWV0ZXIoaHdtZ3IsIFBQU01D X01TR19EUlZfRFJBTV9BRERSX0xPLCBsb3dlcl8zMl9iaXRzKHNtdV9kYXRhLT5oZWFkZXJfYnVm ZmVyLm1jX2FkZHIpKTsKIAotCWlmIChzbXU3X3NlbmRfbXNnX3RvX3NtY193aXRoX3BhcmFtZXRl cihod21nciwgUFBTTUNfTVNHX0xvYWRVY29kZXMsIGZ3X3RvX2xvYWQpKQotCQlwcl9lcnIoIkZh aWwgdG8gUmVxdWVzdCBTTVUgTG9hZCB1Q29kZSIpOworCXNtdTdfc2VuZF9tc2dfdG9fc21jX3dp dGhfcGFyYW1ldGVyKGh3bWdyLCBQUFNNQ19NU0dfTG9hZFVjb2RlcywgZndfdG9fbG9hZCk7CiAK LQlyZXR1cm4gcjsKKwlyID0gc211N19jaGVja19md19sb2FkX2ZpbmlzaChod21nciwgZndfdG9f bG9hZCk7CisJaWYgKCFyKQorCQlyZXR1cm4gMDsKKworCXByX2VycigiU01VIGxvYWQgZmlybXdh cmUgZmFpbGVkXG4iKTsKIAogZmFpbGVkOgogCWtmcmVlKHNtdV9kYXRhLT50b2MpOwpAQCAtNDc3 LDIwICs0NDcsMTUgQEAgaW50IHNtdTdfcmVxdWVzdF9zbXVfbG9hZF9mdyhzdHJ1Y3QgcHBfaHdt Z3IgKmh3bWdyKQogaW50IHNtdTdfY2hlY2tfZndfbG9hZF9maW5pc2goc3RydWN0IHBwX2h3bWdy ICpod21nciwgdWludDMyX3QgZndfdHlwZSkKIHsKIAlzdHJ1Y3Qgc211N19zbXVtZ3IgKnNtdV9k YXRhID0gKHN0cnVjdCBzbXU3X3NtdW1nciAqKShod21nci0+c211X2JhY2tlbmQpOwotCXVpbnQz Ml90IGZ3X21hc2sgPSBzbXU3X2dldF9tYXNrX2Zvcl9maXJtd2FyZV90eXBlKGZ3X3R5cGUpOwog CXVpbnQzMl90IHJldDsKIAogCXJldCA9IHBobV93YWl0X29uX2luZGlyZWN0X3JlZ2lzdGVyKGh3 bWdyLCBtbVNNQ19JTkRfSU5ERVhfMTEsCiAJCQkJCXNtdV9kYXRhLT5zb2Z0X3JlZ3Nfc3RhcnQg KyBzbXVtX2dldF9vZmZzZXRvZihod21nciwKIAkJCQkJU01VX1NvZnRSZWdpc3RlcnMsIFVjb2Rl TG9hZFN0YXR1cyksCi0JCQkJCWZ3X21hc2ssIGZ3X21hc2spOworCQkJCQlmd190eXBlLCBmd190 eXBlKTsKIAlyZXR1cm4gcmV0OwogfQogCi1pbnQgc211N19yZWxvYWRfZmlybXdhcmUoc3RydWN0 IHBwX2h3bWdyICpod21ncikKLXsKLQlyZXR1cm4gaHdtZ3ItPnNtdW1ncl9mdW5jcy0+c3RhcnRf c211KGh3bWdyKTsKLX0KIAogc3RhdGljIGludCBzbXU3X3VwbG9hZF9zbWNfZmlybXdhcmVfZGF0 YShzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLCB1aW50MzJfdCBsZW5ndGgsIHVpbnQzMl90ICpzcmMs IHVpbnQzMl90IGxpbWl0KQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dl cnBsYXkvc211bWdyL3NtdTdfc211bWdyLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxh eS9zbXVtZ3Ivc211N19zbXVtZ3IuaAppbmRleCAwMWYwNTM4Zi4uMTBjOGNlYiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvc211bWdyL3NtdTdfc211bWdyLmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvc211bWdyL3NtdTdfc211bWdyLmgKQEAg LTczLDkgKzczLDggQEAgaW50IHNtdTdfcmVhZF9zbWNfc3JhbV9kd29yZChzdHJ1Y3QgcHBfaHdt Z3IgKmh3bWdyLCB1aW50MzJfdCBzbWNfYWRkciwKIGludCBzbXU3X3dyaXRlX3NtY19zcmFtX2R3 b3JkKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsIHVpbnQzMl90IHNtY19hZGRyLAogCQkJCQkJdWlu dDMyX3QgdmFsdWUsIHVpbnQzMl90IGxpbWl0KTsKIAotaW50IHNtdTdfcmVxdWVzdF9zbXVfbG9h ZF9mdyhzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKTsKIGludCBzbXU3X2NoZWNrX2Z3X2xvYWRfZmlu aXNoKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsIHVpbnQzMl90IGZ3X3R5cGUpOwotaW50IHNtdTdf cmVsb2FkX2Zpcm13YXJlKHN0cnVjdCBwcF9od21nciAqaHdtZ3IpOworaW50IHNtdTdfcmVxdWVz dF9zbXVfbG9hZF9mdyhzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKTsKIGludCBzbXU3X3VwbG9hZF9z bXVfZmlybXdhcmVfaW1hZ2Uoc3RydWN0IHBwX2h3bWdyICpod21ncik7CiBpbnQgc211N19pbml0 KHN0cnVjdCBwcF9od21nciAqaHdtZ3IpOwogaW50IHNtdTdfc211X2Zpbmkoc3RydWN0IHBwX2h3 bWdyICpod21ncik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9z bXVtZ3Ivc211OF9zbXVtZ3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L3NtdW1n ci9zbXU4X3NtdW1nci5jCmluZGV4IDdhNGM0MjUuLjkwZjVmMzAgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L3NtdW1nci9zbXU4X3NtdW1nci5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L3NtdW1nci9zbXU4X3NtdW1nci5jCkBAIC02NTgsNiAr NjU4LDggQEAgc3RhdGljIGludCBzbXU4X3JlcXVlc3Rfc211X2xvYWRfZncoc3RydWN0IHBwX2h3 bWdyICpod21ncikKIHsKIAlzdHJ1Y3Qgc211OF9zbXVtZ3IgKnNtdThfc211ID0gaHdtZ3ItPnNt dV9iYWNrZW5kOwogCXVpbnQzMl90IHNtY19hZGRyZXNzOworCXVpbnQzMl90IGZ3X3RvX2NoZWNr ID0gMDsKKwlpbnQgcmV0OwogCiAJc211OF9zbXVfcG9wdWxhdGVfZmlybXdhcmVfZW50cmllcyho d21ncik7CiAKQEAgLTY4NCwyOCArNjg2LDkgQEAgc3RhdGljIGludCBzbXU4X3JlcXVlc3Rfc211 X2xvYWRfZncoc3RydWN0IHBwX2h3bWdyICpod21ncikKIAlzbXU4X3NlbmRfbXNnX3RvX3NtY193 aXRoX3BhcmFtZXRlcihod21nciwgUFBTTUNfTVNHX0V4ZWN1dGVKb2IsCiAJCQkJc211OF9zbXUt PnRvY19lbnRyeV9wb3dlcl9wcm9maWxpbmdfaW5kZXgpOwogCi0JcmV0dXJuIHNtdThfc2VuZF9t c2dfdG9fc21jX3dpdGhfcGFyYW1ldGVyKGh3bWdyLAorCXNtdThfc2VuZF9tc2dfdG9fc21jX3dp dGhfcGFyYW1ldGVyKGh3bWdyLAogCQkJCQlQUFNNQ19NU0dfRXhlY3V0ZUpvYiwKIAkJCQkJc211 OF9zbXUtPnRvY19lbnRyeV9pbml0aWFsaXplX2luZGV4KTsKLX0KLQotc3RhdGljIGludCBzbXU4 X3N0YXJ0X3NtdShzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKQotewotCWludCByZXQgPSAwOwotCXVp bnQzMl90IGZ3X3RvX2NoZWNrID0gMDsKLQlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGh3 bWdyLT5hZGV2OwotCi0JdWludDMyX3QgaW5kZXggPSBTTU5fTVAxX1NSQU1fU1RBUlRfQUREUiAr Ci0JCQkgU01VOF9GSVJNV0FSRV9IRUFERVJfTE9DQVRJT04gKwotCQkJIG9mZnNldG9mKHN0cnVj dCBTTVU4X0Zpcm13YXJlX0hlYWRlciwgVmVyc2lvbik7Ci0KLQotCWlmIChod21nciA9PSBOVUxM IHx8IGh3bWdyLT5kZXZpY2UgPT0gTlVMTCkKLQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQljZ3Nfd3Jp dGVfcmVnaXN0ZXIoaHdtZ3ItPmRldmljZSwgbW1NUDBQVUJfSU5EX0lOREVYLCBpbmRleCk7Ci0J aHdtZ3ItPnNtdV92ZXJzaW9uID0gY2dzX3JlYWRfcmVnaXN0ZXIoaHdtZ3ItPmRldmljZSwgbW1N UDBQVUJfSU5EX0RBVEEpOwotCWFkZXYtPnBtLmZ3X3ZlcnNpb24gPSBod21nci0+c211X3ZlcnNp b24gPj4gODsKIAogCWZ3X3RvX2NoZWNrID0gVUNPREVfSURfUkxDX0dfTUFTSyB8CiAJCQlVQ09E RV9JRF9TRE1BMF9NQVNLIHwKQEAgLTcxOSw4ICs3MDIsNiBAQCBzdGF0aWMgaW50IHNtdThfc3Rh cnRfc211KHN0cnVjdCBwcF9od21nciAqaHdtZ3IpCiAJaWYgKGh3bWdyLT5jaGlwX2lkID09IENI SVBfU1RPTkVZKQogCQlmd190b19jaGVjayAmPSB+KFVDT0RFX0lEX1NETUExX01BU0sgfCBVQ09E RV9JRF9DUF9NRUNfSlQyX01BU0spOwogCi0Jc211OF9yZXF1ZXN0X3NtdV9sb2FkX2Z3KGh3bWdy KTsKLQogCXJldCA9IHNtdThfY2hlY2tfZndfbG9hZF9maW5pc2goaHdtZ3IsIGZ3X3RvX2NoZWNr KTsKIAlpZiAocmV0KSB7CiAJCXByX2VycigiU01VIGZpcm13YXJlIGxvYWQgZmFpbGVkXG4iKTsK QEAgLTczNCw2ICs3MTUsMjUgQEAgc3RhdGljIGludCBzbXU4X3N0YXJ0X3NtdShzdHJ1Y3QgcHBf aHdtZ3IgKmh3bWdyKQogCXJldHVybiByZXQ7CiB9CiAKK3N0YXRpYyBpbnQgc211OF9zdGFydF9z bXUoc3RydWN0IHBwX2h3bWdyICpod21ncikKK3sKKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diA9IGh3bWdyLT5hZGV2OworCisJdWludDMyX3QgaW5kZXggPSBTTU5fTVAxX1NSQU1fU1RBUlRf QUREUiArCisJCQkgU01VOF9GSVJNV0FSRV9IRUFERVJfTE9DQVRJT04gKworCQkJIG9mZnNldG9m KHN0cnVjdCBTTVU4X0Zpcm13YXJlX0hlYWRlciwgVmVyc2lvbik7CisKKworCWlmIChod21nciA9 PSBOVUxMIHx8IGh3bWdyLT5kZXZpY2UgPT0gTlVMTCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlj Z3Nfd3JpdGVfcmVnaXN0ZXIoaHdtZ3ItPmRldmljZSwgbW1NUDBQVUJfSU5EX0lOREVYLCBpbmRl eCk7CisJaHdtZ3ItPnNtdV92ZXJzaW9uID0gY2dzX3JlYWRfcmVnaXN0ZXIoaHdtZ3ItPmRldmlj ZSwgbW1NUDBQVUJfSU5EX0RBVEEpOworCWFkZXYtPnBtLmZ3X3ZlcnNpb24gPSBod21nci0+c211 X3ZlcnNpb24gPj4gODsKKworCXJldHVybiAwOworfQorCiBzdGF0aWMgaW50IHNtdThfc211X2lu aXQoc3RydWN0IHBwX2h3bWdyICpod21ncikKIHsKIAlpbnQgcmV0ID0gMDsKQEAgLTg3Niw3ICs4 NzYsNyBAQCBzdGF0aWMgYm9vbCBzbXU4X2lzX2RwbV9ydW5uaW5nKHN0cnVjdCBwcF9od21nciAq aHdtZ3IpCiAJLnNtdV9maW5pID0gc211OF9zbXVfZmluaSwKIAkuc3RhcnRfc211ID0gc211OF9z dGFydF9zbXUsCiAJLmNoZWNrX2Z3X2xvYWRfZmluaXNoID0gc211OF9jaGVja19md19sb2FkX2Zp bmlzaCwKLQkucmVxdWVzdF9zbXVfbG9hZF9mdyA9IE5VTEwsCisJLnJlcXVlc3Rfc211X2xvYWRf ZncgPSBzbXU4X3JlcXVlc3Rfc211X2xvYWRfZncsCiAJLnJlcXVlc3Rfc211X2xvYWRfc3BlY2lm aWNfZncgPSBOVUxMLAogCS5nZXRfYXJndW1lbnQgPSBzbXU4X2dldF9hcmd1bWVudCwKIAkuc2Vu ZF9tc2dfdG9fc21jID0gc211OF9zZW5kX21zZ190b19zbWMsCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYW1kL3Bvd2VycGxheS9zbXVtZ3IvdG9uZ2Ffc211bWdyLmMgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL3Bvd2VycGxheS9zbXVtZ3IvdG9uZ2Ffc211bWdyLmMKaW5kZXggYWU4Mzc4ZS4u ZDhmMWNhMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvc211bWdy L3RvbmdhX3NtdW1nci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L3NtdW1n ci90b25nYV9zbXVtZ3IuYwpAQCAtMTkyLDcgKzE5Miw4IEBAIHN0YXRpYyBpbnQgdG9uZ2Ffc3Rh cnRfaW5fbm9uX3Byb3RlY3Rpb25fbW9kZShzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKQogCiBzdGF0 aWMgaW50IHRvbmdhX3N0YXJ0X3NtdShzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKQogewotCWludCBy ZXN1bHQ7CisJc3RydWN0IHRvbmdhX3NtdW1nciAqcHJpdiA9IGh3bWdyLT5zbXVfYmFja2VuZDsK KwlpbnQgcmVzdWx0ID0gMDsKIAogCS8qIE9ubHkgc3RhcnQgU01DIGlmIFNNQyBSQU0gaXMgbm90 IHJ1bm5pbmcgKi8KIAlpZiAoIXNtdTdfaXNfc21jX3JhbV9ydW5uaW5nKGh3bWdyKSAmJiBod21n ci0+bm90X3ZmKSB7CkBAIC0yMDksNyArMjEwLDE0IEBAIHN0YXRpYyBpbnQgdG9uZ2Ffc3RhcnRf c211KHN0cnVjdCBwcF9od21nciAqaHdtZ3IpCiAJCX0KIAl9CiAKLQlyZXN1bHQgPSBzbXU3X3Jl cXVlc3Rfc211X2xvYWRfZncoaHdtZ3IpOworCS8qIFNldHVwIFNvZnRSZWdzU3RhcnQgaGVyZSBm b3IgcmVnaXN0ZXIgbG9va3VwIGluIGNhc2UKKwkgKiBEdW1teUJhY2tFbmQgaXMgdXNlZCBhbmQg UHJvY2Vzc0Zpcm13YXJlSGVhZGVyIGlzIG5vdCBleGVjdXRlZAorCSAqLworCisJc211N19yZWFk X3NtY19zcmFtX2R3b3JkKGh3bWdyLAorCQkJU01VNzJfRklSTVdBUkVfSEVBREVSX0xPQ0FUSU9O ICsKKwkJCW9mZnNldG9mKFNNVTcyX0Zpcm13YXJlX0hlYWRlciwgU29mdFJlZ2lzdGVycyksCisJ CQkmKHByaXYtPnNtdTdfZGF0YS5zb2Z0X3JlZ3Nfc3RhcnQpLCAweDQwMDAwKTsKIAogCXJldHVy biByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9z bXVtZ3IvdmVnYW1fc211bWdyLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9zbXVt Z3IvdmVnYW1fc211bWdyLmMKaW5kZXggM2Q0MTVmYS4uNzFlMzc2ZiAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvc211bWdyL3ZlZ2FtX3NtdW1nci5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L3NtdW1nci92ZWdhbV9zbXVtZ3IuYwpAQCAtMjE4 LDggKzIxOCw2IEBAIHN0YXRpYyBpbnQgdmVnYW1fc3RhcnRfc211KHN0cnVjdCBwcF9od21nciAq aHdtZ3IpCiAJCQkmKHNtdV9kYXRhLT5zbXU3X2RhdGEuc29mdF9yZWdzX3N0YXJ0KSwKIAkJCTB4 NDAwMDApOwogCi0JcmVzdWx0ID0gc211N19yZXF1ZXN0X3NtdV9sb2FkX2Z3KGh3bWdyKTsKLQog CXJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTIyODAsNyArMjI3OCw3IEBAIHN0YXRpYyBpbnQgdmVn YW1fdGhlcm1hbF9zZXR1cF9mYW5fdGFibGUoc3RydWN0IHBwX2h3bWdyICpod21ncikKIAkuc211 X2ZpbmkgPSBzbXU3X3NtdV9maW5pLAogCS5zdGFydF9zbXUgPSB2ZWdhbV9zdGFydF9zbXUsCiAJ LmNoZWNrX2Z3X2xvYWRfZmluaXNoID0gc211N19jaGVja19md19sb2FkX2ZpbmlzaCwKLQkucmVx dWVzdF9zbXVfbG9hZF9mdyA9IHNtdTdfcmVsb2FkX2Zpcm13YXJlLAorCS5yZXF1ZXN0X3NtdV9s b2FkX2Z3ID0gc211N19yZXF1ZXN0X3NtdV9sb2FkX2Z3LAogCS5yZXF1ZXN0X3NtdV9sb2FkX3Nw ZWNpZmljX2Z3ID0gTlVMTCwKIAkuc2VuZF9tc2dfdG9fc21jID0gc211N19zZW5kX21zZ190b19z bWMsCiAJLnNlbmRfbXNnX3RvX3NtY193aXRoX3BhcmFtZXRlciA9IHNtdTdfc2VuZF9tc2dfdG9f c21jX3dpdGhfcGFyYW1ldGVyLAotLSAKMS45LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vYW1kLWdmeAo=