From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Shankar, Uma" Subject: Re: [PATCH v10 17/40] drm/i915: Implement the HDCP2.2 support for HDMI Date: Mon, 4 Feb 2019 16:03:31 +0000 Message-ID: References: <1548917996-28081-1-git-send-email-ramalingam.c@intel.com> <1548917996-28081-18-git-send-email-ramalingam.c@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1548917996-28081-18-git-send-email-ramalingam.c@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "C, Ramalingam" , "intel-gfx@lists.freedesktop.org" , "dri-devel@lists.freedesktop.org" , "daniel.vetter@ffwll.ch" , "Winkler, Tomas" List-Id: dri-devel@lists.freedesktop.org Cgo+LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPkZyb206IEMsIFJhbWFsaW5nYW0KPlNlbnQ6 IFRodXJzZGF5LCBKYW51YXJ5IDMxLCAyMDE5IDEyOjMwIFBNCj5UbzogaW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZzsgZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsKPmRhbmll bC52ZXR0ZXJAZmZ3bGwuY2g7IFdpbmtsZXIsIFRvbWFzIDx0b21hcy53aW5rbGVyQGludGVsLmNv bT47IFNoYW5rYXIsCj5VbWEgPHVtYS5zaGFua2FyQGludGVsLmNvbT4KPkNjOiBDLCBSYW1hbGlu Z2FtIDxyYW1hbGluZ2FtLmNAaW50ZWwuY29tPgo+U3ViamVjdDogW1BBVENIIHYxMCAxNy80MF0g ZHJtL2k5MTU6IEltcGxlbWVudCB0aGUgSERDUDIuMiBzdXBwb3J0IGZvciBIRE1JCj4KPkltcGxl bWVudHMgdGhlIEhETUkgYWRhcHRhdGlvbiBzcGVjaWZpYyBIRENQMi4yIG9wZXJhdGlvbnMuCj4K PkJhc2ljYWxseSB0aGVzZSBhcmUgRERDIHJlYWQgYW5kIHdyaXRlIGZvciBhdXRoZW50aWNhdGlu ZyB0aHJvdWdoCj5IRENQMi4yIG1lc3NhZ2VzLgo+Cj52MjogUmViYXNlZC4KPnYzOgo+ICBObyBt b3JlIHNwZWNpYWwgaGFuZGxpbmcgb2YgR21idXMgYnVyc3QgcmVhZCBmb3IgQUtFX1NFTkRfQ0VS VC4KPiAgU3R5bGUgZml4ZWQgd2l0aCBmZXcgbmFtaW5nLiBbVW1hXQo+ICAlcy9QQVJJTkcvUEFJ UklORwo+djQ6Cj4gIG1zZ19zeiBpcyBpbml0aWFsaXplZCBhdCBkZWZpbml0aW9uLgo+ICBMb29r dXAgdGFibGUgaXMgZGVmaW5lZCBmb3IgSERNSSBIRENQMi4yIG1zZ3MgW0RhbmllbF0uCj52NTog UmViYXNlZC4KPnY2Ogo+ICBNYWtlIGEgZnVuY3Rpb24gYXMgaW5saW5lIFtVbWFdCj4gICVzL3Vp bnR4eF90L3V4eAo+djc6Cj4gIEVycm9ycyBkdWUgdG8gc2lua3MgYXJlIHJlcG9ydGVkIGFzIERF QlVHIGxvZ3MuCj4gIEFkanVzdCB0byB0aGUgbmV3IG1laSBpbnRlcmZhY2UuCj52ODoKPiAgQVJS QVlfU0laRSBmb3IgdGhlICMgb2YgYXJyYXkgbWVtYmVycyBbSm9uICYgRGFuaWVsXS4KPiAgaGRj cCBhZGFwdGF0aW9uIGlzIGFkZGVkIGFzIGEgY29uc3QgaW4gdGhlIGhkY3Bfc2hpbSBbRGFuaWVs XQo+Cj5TaWduZWQtb2ZmLWJ5OiBSYW1hbGluZ2FtIEMgPHJhbWFsaW5nYW0uY0BpbnRlbC5jb20+ Cj5SZXZpZXdlZC1ieTogVW1hIFNoYW5rYXIgPHVtYS5zaGFua2FyQGludGVsLmNvbT4KCkxhdGVz dCBzZXQgbG9va3Mgb2suIFlvdSBjYW4ga2VlcCBteSBSQi4KCj4tLS0KPiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9oZG1pLmMgfCAxODkKPisrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCj4gMSBmaWxlIGNoYW5nZWQsIDE4OSBpbnNlcnRpb25zKCspCj4KPmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKPmIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfaGRtaS5jCj5pbmRleCBhYjM3NmEzMWNkYWIuLjNiNGZlNzA0OGFmOSAxMDA2 NDQKPi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwo+KysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj5AQCAtMTEyOSw2ICsxMTI5LDE5MCBAQCBib29s IGludGVsX2hkbWlfaGRjcF9jaGVja19saW5rKHN0cnVjdAo+aW50ZWxfZGlnaXRhbF9wb3J0ICpp bnRlbF9kaWdfcG9ydCkKPiAJcmV0dXJuIHRydWU7Cj4gfQo+Cj4rc3RhdGljIHN0cnVjdCBoZGNw Ml9oZG1pX21zZ19kYXRhIHsKPisJdTggbXNnX2lkOwo+Kwl1MzIgdGltZW91dDsKPisJdTMyIHRp bWVvdXQyOwo+Kwl9IGhkY3AyX21zZ19kYXRhW10gPSB7Cj4rCQl7SERDUF8yXzJfQUtFX0lOSVQs IDAsIDB9LAo+KwkJe0hEQ1BfMl8yX0FLRV9TRU5EX0NFUlQsIEhEQ1BfMl8yX0NFUlRfVElNRU9V VF9NUywKPjB9LAo+KwkJe0hEQ1BfMl8yX0FLRV9OT19TVE9SRURfS00sIDAsIDB9LAo+KwkJe0hE Q1BfMl8yX0FLRV9TVE9SRURfS00sIDAsIDB9LAo+KwkJe0hEQ1BfMl8yX0FLRV9TRU5EX0hQUklN RSwKPkhEQ1BfMl8yX0hQUklNRV9QQUlSRURfVElNRU9VVF9NUywKPisKPglIRENQXzJfMl9IUFJJ TUVfTk9fUEFJUkVEX1RJTUVPVVRfTVN9LAo+KwkJe0hEQ1BfMl8yX0FLRV9TRU5EX1BBSVJJTkdf SU5GTywKPkhEQ1BfMl8yX1BBSVJJTkdfVElNRU9VVF9NUywKPisJCQkJMH0sCj4rCQl7SERDUF8y XzJfTENfSU5JVCwgMCwgMH0sCj4rCQl7SERDUF8yXzJfTENfU0VORF9MUFJJTUUsCj5IRENQXzJf Ml9IRE1JX0xQUklNRV9USU1FT1VUX01TLCAwfSwKPisJCXtIRENQXzJfMl9TS0VfU0VORF9FS1Ms IDAsIDB9LAo+KwkJe0hEQ1BfMl8yX1JFUF9TRU5EX1JFQ1ZJRF9MSVNULAo+KwkJCQlIRENQXzJf Ml9SRUNWSURfTElTVF9USU1FT1VUX01TLCAwfSwKPisJCXtIRENQXzJfMl9SRVBfU0VORF9BQ0ss IDAsIDB9LAo+KwkJe0hEQ1BfMl8yX1JFUF9TVFJFQU1fTUFOQUdFLCAwLCAwfSwKPisJCXtIRENQ XzJfMl9SRVBfU1RSRUFNX1JFQURZLAo+SERDUF8yXzJfU1RSRUFNX1JFQURZX1RJTUVPVVRfTVMs Cj4rCQkJCTB9LAo+Kwl9Owo+Kwo+K3N0YXRpYwo+K2ludCBpbnRlbF9oZG1pX2hkY3AyX3JlYWRf cnhfc3RhdHVzKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+KwkJ CQkgICAgdWludDhfdCAqcnhfc3RhdHVzKQo+K3sKPisJcmV0dXJuIGludGVsX2hkbWlfaGRjcF9y ZWFkKGludGVsX2RpZ19wb3J0LAo+KwkJCQkgICAgSERDUF8yXzJfSERNSV9SRUdfUlhTVEFUVVNf T0ZGU0VULAo+KwkJCQkgICAgcnhfc3RhdHVzLAo+KwkJCQkgICAgSERDUF8yXzJfSERNSV9SWFNU QVRVU19MRU4pOwo+K30KPisKPitzdGF0aWMgaW50IGdldF9oZGNwMl9tc2dfdGltZW91dCh1OCBt c2dfaWQsIGJvb2wgaXNfcGFpcmVkKSB7Cj4rCWludCBpOwo+Kwo+Kwlmb3IgKGkgPSAwOyBpIDwg QVJSQVlfU0laRShoZGNwMl9tc2dfZGF0YSk7IGkrKykKPisJCWlmIChoZGNwMl9tc2dfZGF0YVtp XS5tc2dfaWQgPT0gbXNnX2lkICYmCj4rCQkgICAgKG1zZ19pZCAhPSBIRENQXzJfMl9BS0VfU0VO RF9IUFJJTUUgfHwgaXNfcGFpcmVkKSkKPisJCQlyZXR1cm4gaGRjcDJfbXNnX2RhdGFbaV0udGlt ZW91dDsKPisJCWVsc2UgaWYgKGhkY3AyX21zZ19kYXRhW2ldLm1zZ19pZCA9PSBtc2dfaWQpCj4r CQkJcmV0dXJuIGhkY3AyX21zZ19kYXRhW2ldLnRpbWVvdXQyOwo+Kwo+KwlyZXR1cm4gLUVJTlZB TDsKPit9Cj4rCj4rc3RhdGljIGlubGluZQo+K2ludCBoZGNwMl9kZXRlY3RfbXNnX2F2YWlsYWJp bGl0eShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdpdGFsX3BvcnQsCj4rCQkJ CSAgdTggbXNnX2lkLCBib29sICptc2dfcmVhZHksCj4rCQkJCSAgc3NpemVfdCAqbXNnX3N6KQo+ K3sKPisJdTggcnhfc3RhdHVzW0hEQ1BfMl8yX0hETUlfUlhTVEFUVVNfTEVOXTsKPisJaW50IHJl dDsKPisKPisJcmV0ID0gaW50ZWxfaGRtaV9oZGNwMl9yZWFkX3J4X3N0YXR1cyhpbnRlbF9kaWdp dGFsX3BvcnQsIHJ4X3N0YXR1cyk7Cj4rCWlmIChyZXQgPCAwKSB7Cj4rCQlEUk1fREVCVUdfS01T KCJyeF9zdGF0dXMgcmVhZCBmYWlsZWQuIEVyciAlZFxuIiwgcmV0KTsKPisJCXJldHVybiByZXQ7 Cj4rCX0KPisKPisJKm1zZ19zeiA9ICgoSERDUF8yXzJfSERNSV9SWFNUQVRVU19NU0dfU1pfSEko cnhfc3RhdHVzWzFdKSA8PCA4KQo+fAo+KwkJICByeF9zdGF0dXNbMF0pOwo+Kwo+KwlpZiAobXNn X2lkID09IEhEQ1BfMl8yX1JFUF9TRU5EX1JFQ1ZJRF9MSVNUKQo+KwkJKm1zZ19yZWFkeSA9Cj4o SERDUF8yXzJfSERNSV9SWFNUQVRVU19SRUFEWShyeF9zdGF0dXNbMV0pICYmCj4rCQkJICAgICAq bXNnX3N6KTsKPisJZWxzZQo+KwkJKm1zZ19yZWFkeSA9ICptc2dfc3o7Cj4rCj4rCXJldHVybiAw Owo+K30KPisKPitzdGF0aWMgc3NpemVfdAo+K2ludGVsX2hkbWlfaGRjcDJfd2FpdF9mb3JfbXNn KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+KwkJCSAgICAgIHU4 IG1zZ19pZCwgYm9vbCBwYWlyZWQpCj4rewo+Kwlib29sIG1zZ19yZWFkeSA9IGZhbHNlOwo+Kwlp bnQgdGltZW91dCwgcmV0Owo+Kwlzc2l6ZV90IG1zZ19zeiA9IDA7Cj4rCj4rCXRpbWVvdXQgPSBn ZXRfaGRjcDJfbXNnX3RpbWVvdXQobXNnX2lkLCBwYWlyZWQpOwo+KwlpZiAodGltZW91dCA8IDAp Cj4rCQlyZXR1cm4gdGltZW91dDsKPisKPisJcmV0ID0gX193YWl0X2ZvcihyZXQgPSBoZGNwMl9k ZXRlY3RfbXNnX2F2YWlsYWJpbGl0eShpbnRlbF9kaWdfcG9ydCwKPisJCQkJCQkJICAgICBtc2df aWQsCj4mbXNnX3JlYWR5LAo+KwkJCQkJCQkgICAgICZtc2dfc3opLAo+KwkJCSAhcmV0ICYmIG1z Z19yZWFkeSAmJiBtc2dfc3osIHRpbWVvdXQgKiAxMDAwLAo+KwkJCSAxMDAwLCA1ICogMTAwMCk7 Cj4rCWlmIChyZXQpCj4rCQlEUk1fREVCVUdfS01TKCJtc2dfaWQ6ICVkLCByZXQ6ICVkLCB0aW1l b3V0OiAlZFxuIiwKPisJCQkgICAgICBtc2dfaWQsIHJldCwgdGltZW91dCk7Cj4rCj4rCXJldHVy biByZXQgPyByZXQgOiBtc2dfc3o7Cj4rfQo+Kwo+K3N0YXRpYwo+K2ludCBpbnRlbF9oZG1pX2hk Y3AyX3dyaXRlX21zZyhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwK PisJCQkgICAgICAgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSkKPit7Cj4rCXVuc2lnbmVkIGludCBv ZmZzZXQ7Cj4rCj4rCW9mZnNldCA9IEhEQ1BfMl8yX0hETUlfUkVHX1dSX01TR19PRkZTRVQ7Cj4r CXJldHVybiBpbnRlbF9oZG1pX2hkY3Bfd3JpdGUoaW50ZWxfZGlnX3BvcnQsIG9mZnNldCwgYnVm LCBzaXplKTsgfQo+Kwo+K3N0YXRpYwo+K2ludCBpbnRlbF9oZG1pX2hkY3AyX3JlYWRfbXNnKHN0 cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+KwkJCSAgICAgIHU4IG1z Z19pZCwgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSkgewo+KwlzdHJ1Y3QgaW50ZWxfaGRtaSAqaGRt aSA9ICZpbnRlbF9kaWdfcG9ydC0+aGRtaTsKPisJc3RydWN0IGludGVsX2hkY3AgKmhkY3AgPSAm aGRtaS0+YXR0YWNoZWRfY29ubmVjdG9yLT5oZGNwOwo+Kwl1bnNpZ25lZCBpbnQgb2Zmc2V0Owo+ Kwlzc2l6ZV90IHJldDsKPisKPisJcmV0ID0gaW50ZWxfaGRtaV9oZGNwMl93YWl0X2Zvcl9tc2co aW50ZWxfZGlnX3BvcnQsIG1zZ19pZCwKPisJCQkJCSAgICBoZGNwLT5pc19wYWlyZWQpOwo+Kwlp ZiAocmV0IDwgMCkKPisJCXJldHVybiByZXQ7Cj4rCj4rCS8qCj4rCSAqIEF2YWlsYWJsZSBtc2cg c2l6ZSBzaG91bGQgYmUgZXF1YWwgdG8gb3IgbGVzc2VyIHRoYW4gdGhlCj4rCSAqIGF2YWlsYWJs ZSBidWZmZXIuCj4rCSAqLwo+KwlpZiAocmV0ID4gc2l6ZSkgewo+KwkJRFJNX0RFQlVHX0tNUygi bXNnX3N6KCV6ZCkgaXMgbW9yZSB0aGFuIGV4cCBzaXplKCV6dSlcbiIsCj4rCQkJICAgICAgcmV0 LCBzaXplKTsKPisJCXJldHVybiAtMTsKPisJfQo+Kwo+KwlvZmZzZXQgPSBIRENQXzJfMl9IRE1J X1JFR19SRF9NU0dfT0ZGU0VUOwo+KwlyZXQgPSBpbnRlbF9oZG1pX2hkY3BfcmVhZChpbnRlbF9k aWdfcG9ydCwgb2Zmc2V0LCBidWYsIHJldCk7Cj4rCWlmIChyZXQpCj4rCQlEUk1fREVCVUdfS01T KCJGYWlsZWQgdG8gcmVhZCBtc2dfaWQ6ICVkKCV6ZClcbiIsIG1zZ19pZCwKPnJldCk7Cj4rCj4r CXJldHVybiByZXQ7Cj4rfQo+Kwo+K3N0YXRpYwo+K2ludCBpbnRlbF9oZG1pX2hkY3AyX2NoZWNr X2xpbmsoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydAo+KyppbnRlbF9kaWdfcG9ydCkgewo+Kwl1 OCByeF9zdGF0dXNbSERDUF8yXzJfSERNSV9SWFNUQVRVU19MRU5dOwo+KwlpbnQgcmV0Owo+Kwo+ KwlyZXQgPSBpbnRlbF9oZG1pX2hkY3AyX3JlYWRfcnhfc3RhdHVzKGludGVsX2RpZ19wb3J0LCBy eF9zdGF0dXMpOwo+KwlpZiAocmV0KQo+KwkJcmV0dXJuIHJldDsKPisKPisJLyoKPisJICogUmUt YXV0aCByZXF1ZXN0IGFuZCBMaW5rIEludGVncml0eSBGYWlsdXJlcyBhcmUgcmVwcmVzZW50ZWQg YnkKPisJICogc2FtZSBiaXQuIGkuZSByZWF1dGhfcmVxLgo+KwkgKi8KPisJaWYgKEhEQ1BfMl8y X0hETUlfUlhTVEFUVVNfUkVBVVRIX1JFUShyeF9zdGF0dXNbMV0pKQo+KwkJcmV0ID0gSERDUF9S RUFVVEhfUkVRVUVTVDsKPisJZWxzZSBpZiAoSERDUF8yXzJfSERNSV9SWFNUQVRVU19SRUFEWShy eF9zdGF0dXNbMV0pKQo+KwkJcmV0ID0gSERDUF9UT1BPTE9HWV9DSEFOR0U7Cj4rCj4rCXJldHVy biByZXQ7Cj4rfQo+Kwo+K3N0YXRpYwo+K2ludCBpbnRlbF9oZG1pX2hkY3AyX2NhcGFibGUoc3Ry dWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4rCQkJICAgICBib29sICpj YXBhYmxlKQo+K3sKPisJdTggaGRjcDJfdmVyc2lvbjsKPisJaW50IHJldDsKPisKPisJKmNhcGFi bGUgPSBmYWxzZTsKPisJcmV0ID0gaW50ZWxfaGRtaV9oZGNwX3JlYWQoaW50ZWxfZGlnX3BvcnQs Cj5IRENQXzJfMl9IRE1JX1JFR19WRVJfT0ZGU0VULAo+KwkJCQkgICAmaGRjcDJfdmVyc2lvbiwg c2l6ZW9mKGhkY3AyX3ZlcnNpb24pKTsKPisJaWYgKCFyZXQgJiYgaGRjcDJfdmVyc2lvbiAmIEhE Q1BfMl8yX0hETUlfU1VQUE9SVF9NQVNLKQo+KwkJKmNhcGFibGUgPSB0cnVlOwo+Kwo+KwlyZXR1 cm4gcmV0Owo+K30KPisKPitzdGF0aWMgaW5saW5lCj4rZW51bSBoZGNwX3dpcmVkX3Byb3RvY29s IGludGVsX2hkbWlfaGRjcDJfcHJvdG9jb2wodm9pZCkgewo+KwlyZXR1cm4gSERDUF9QUk9UT0NP TF9IRE1JOwo+K30KPisKPiBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2hkY3Bfc2hpbSBpbnRl bF9oZG1pX2hkY3Bfc2hpbSA9IHsKPiAJLndyaXRlX2FuX2Frc3YgPSBpbnRlbF9oZG1pX2hkY3Bf d3JpdGVfYW5fYWtzdiwKPiAJLnJlYWRfYmtzdiA9IGludGVsX2hkbWlfaGRjcF9yZWFkX2Jrc3Ys IEBAIC0xMTQwLDYgKzEzMjQsMTEgQEAKPnN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfaGRjcF9z aGltIGludGVsX2hkbWlfaGRjcF9zaGltID0gewo+IAkucmVhZF92X3ByaW1lX3BhcnQgPSBpbnRl bF9oZG1pX2hkY3BfcmVhZF92X3ByaW1lX3BhcnQsCj4gCS50b2dnbGVfc2lnbmFsbGluZyA9IGlu dGVsX2hkbWlfaGRjcF90b2dnbGVfc2lnbmFsbGluZywKPiAJLmNoZWNrX2xpbmsgPSBpbnRlbF9o ZG1pX2hkY3BfY2hlY2tfbGluaywKPisJLndyaXRlXzJfMl9tc2cgPSBpbnRlbF9oZG1pX2hkY3Ay X3dyaXRlX21zZywKPisJLnJlYWRfMl8yX21zZyA9IGludGVsX2hkbWlfaGRjcDJfcmVhZF9tc2cs Cj4rCS5jaGVja18yXzJfbGluawk9IGludGVsX2hkbWlfaGRjcDJfY2hlY2tfbGluaywKPisJLmhk Y3BfMl8yX2NhcGFibGUgPSBpbnRlbF9oZG1pX2hkY3AyX2NhcGFibGUsCj4rCS5wcm90b2NvbCA9 IEhEQ1BfUFJPVE9DT0xfSERNSSwKPiB9Owo+Cj4gc3RhdGljIHZvaWQgaW50ZWxfaGRtaV9wcmVw YXJlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+LS0KPjIuNy40CgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBs aXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK