From mboxrd@z Thu Jan 1 00:00:00 1970 From: Radhakrishna Sripada Subject: [PATCH v6 1/2] drm: Add connector property to limit max bpc Date: Mon, 17 Sep 2018 21:52:08 -0700 Message-ID: <20180918045209.525-1-radhakrishna.sripada@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: intel-gfx@lists.freedesktop.org Cc: Stanislav Lisovskiy , Radhakrishna Sripada , Daniel Vetter , Kishore Kadiyala , Manasi Navare , dri-devel@lists.freedesktop.org, Rodrigo Vivi List-Id: dri-devel@lists.freedesktop.org QXQgdGltZXMgMTJicGMgSERNSSBjYW5ub3QgYmUgZHJpdmVuIGR1ZSB0byBmYXVsdHkgY2FibGVz LCBkb25nbGVzCmxldmVsIHNoaWZ0ZXJzIGV0Yy4gVG8gd29ya2Fyb3VuZCB0aGVtIHdlIG1heSBu ZWVkIHRvIGRyaXZlIHRoZSBvdXRwdXQKYXQgYSBsb3dlciBicGMuIEN1cnJlbnRseSB0aGUgdXNl ciBzcGFjZSBkb2VzIG5vdCBoYXZlIGEgd2F5IHRvIGxpbWl0CnRoZSBicGMuIFRoZSBkZWZhdWx0 IGJwYyB0byBiZSBwcm9ncmFtbWVkIGlzIGRlY2lkZWQgYnkgdGhlIGRyaXZlciBhbmQKaXMgcnVu IGFnYWluc3QgY29ubmVjdG9yIGxpbWl0YXRpb25zLgoKQ3JlYXRpbmcgYSBuZXcgY29ubmVjdG9y IHByb3BlcnR5ICJtYXggYnBjIiBpbiBvcmRlciB0byBsaW1pdCB0aGUgYnBjLgp4cmFuZHIgY2Fu IG1ha2UgdXNlIG9mIHRoaXMgY29ubmVjdG9yIHByb3BlcnR5IHRvIG1ha2Ugc3VyZSB0aGF0IGJw YyBkb2VzCm5vdCBleGNlZWQgdGhlIGNvbmZpZ3VyZWQgdmFsdWUuIFRoaXMgcHJvcGVydHkgY2Fu IGJlIHVzZWQgYnkgdXNlcnNwYWNlIHRvCnNldCB0aGUgYnBjLgoKVjI6IEluaXRpYWxpemUgbWF4 X2JwYyB0byBzYXRpc2Z5IGttc19wcm9wZXJ0aWVzClYzOiBNb3ZlIHRoZSBwcm9wZXJ0eSB0byBk cm1fY29ubmVjdG9yClY0OiBTcGxpdCBkcm0gYW5kIGk5MTUgY29tcG9uZW50cyhWaWxsZSkKVjU6 IE1ha2UgdGhlIHByb3BlcnR5IHBlciBjb25uZWN0b3IoVmlsbGUpClY2OiBDb21wYXJlIHRoZSBy ZXF1ZXN0ZWQgYnBjIHRvIGNvbm5lY3RvciBicGMoRGFuaWVsKQogICAgTW92ZSB0aGUgYXR0YWNo X3Byb3BlcnR5IGZ1bmN0aW9uIHRvIGNvcmUoVmlsbGUpCgpDYzogVmlsbGUgU3lyasOkbMOkIDx2 aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52 ZXR0ZXJAZmZ3bGwuY2g+CkNjOiBLaXNob3JlIEthZGl5YWxhIDxraXNob3JlLmthZGl5YWxhQGlu dGVsLmNvbT4KQ2M6IFJvZHJpZ28gVml2aSA8cm9kcmlnby52aXZpQGludGVsLmNvbT4KQ2M6IE1h bmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5hdmFyZUBpbnRlbC5jb20+CkNjOiBTdGFuaXNsYXYgTGlz b3Zza2l5IDxzdGFuaXNsYXYubGlzb3Zza2l5QGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogUmFk aGFrcmlzaG5hIFNyaXBhZGEgPHJhZGhha3Jpc2huYS5zcmlwYWRhQGludGVsLmNvbT4KLS0tCiBk cml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jICAgICAgICB8IDI0ICsrKysrKysrKysrKysrKysr KysrKysrKwogZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgfCAgNCArKysrCiBk cml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY191YXBpLmMgICB8ICA0ICsrKysKIGRyaXZlcnMvZ3B1 L2RybS9kcm1fY29ubmVjdG9yLmMgICAgIHwgMzQgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwogaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oICAgICAgICAgfCAyMCArKysrKysr KysrKysrKysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCA4NiBpbnNlcnRpb25zKCspCgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1f YXRvbWljLmMKaW5kZXggN2FkYTc1OTE5NzU2Li5mYTk5OTZkZWIxMzIgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9t aWMuYwpAQCAtMzkwLDYgKzM5MCw3IEBAIHN0YXRpYyBpbnQgZHJtX2F0b21pY19jb25uZWN0b3Jf Y2hlY2soc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKIHsKIAlzdHJ1Y3QgZHJtX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGU7CiAJc3RydWN0IGRybV93cml0ZWJhY2tfam9iICp3cml0ZWJh Y2tfam9iID0gc3RhdGUtPndyaXRlYmFja19qb2I7CisJc3RydWN0IGRybV9kaXNwbGF5X2luZm8g KmluZm8gPSAmY29ubmVjdG9yLT5kaXNwbGF5X2luZm87CiAKIAlpZiAoKGNvbm5lY3Rvci0+Y29u bmVjdG9yX3R5cGUgIT0gRFJNX01PREVfQ09OTkVDVE9SX1dSSVRFQkFDSykgfHwgIXdyaXRlYmFj a19qb2IpCiAJCXJldHVybiAwOwpAQCAtNDAwLDYgKzQwMSwyOSBAQCBzdGF0aWMgaW50IGRybV9h dG9taWNfY29ubmVjdG9yX2NoZWNrKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCiAJ CXJldHVybiAtRUlOVkFMOwogCX0KIAorCWlmIChjb25uZWN0b3ItPm1heF9icGNfcHJvcGVydHkp IHsKKwkJaWYgKGluZm8tPmJwYyAhPSAwICYmIGluZm8tPmJwYyA8IHN0YXRlLT5tYXhfcmVxdWVz dGVkX2JwYykgeworCQkJLyogRG9uJ3QgdXNlIGFuIGludmFsaWQgRURJRCBicGMgdmFsdWUgKi8K KwkJCURSTV9ERUJVR19BVE9NSUMoIltDT05ORUNUT1I6JWQ6JXNdIENsYW1waW5nIHJlcXVlc3Rl ZCIKKwkJCQkJICIgZGlzcGxheSBicHAgKHdhcyAlZCkgdG8gRURJRCByZXBvcnRlZCIKKwkJCQkJ ICJtYXggb2YgJWRcbiIsIGNvbm5lY3Rvci0+YmFzZS5pZCwKKwkJCQkJIGNvbm5lY3Rvci0+bmFt ZSwKKwkJCQkJIHN0YXRlLT5tYXhfcmVxdWVzdGVkX2JwYywgaW5mby0+YnBjKTsKKwkJCXN0YXRl LT5tYXhfYnBjID0gaW5mby0+YnBjOworCQl9IGVsc2UgaWYgKGluZm8tPmJwYyAhPSAwKSB7CisJ CQlzdGF0ZS0+bWF4X2JwYyA9IHN0YXRlLT5tYXhfcmVxdWVzdGVkX2JwYzsKKwkJfSBlbHNlIHsK KwkJCS8qIENsYW1wIGJwYyB0byA4IG9uIHNjcmVlbnMgd2l0b3V0IEVESUQgMS40ICovCisJCQlE Uk1fREVCVUdfQVRPTUlDKCJbQ09OTkVDVE9SOiVkOiVzXSBDbGFtcGluZyByZXF1ZXN0ZWQiCisJ CQkJCSAiIGRpc3BsYXkgYnBwICh3YXMgJWQpIHRvIGRlZmF1bHQgbGltaXQiCisJCQkJCSAiIG9m IDI0XG4iLCBjb25uZWN0b3ItPmJhc2UuaWQsCisJCQkJCSBjb25uZWN0b3ItPm5hbWUsIHN0YXRl LT5tYXhfcmVxdWVzdGVkX2JwYyk7CisJCQlzdGF0ZS0+bWF4X2JwYyA9IDg7CisJCX0KKwl9IGVs c2UgeworCQlzdGF0ZS0+bWF4X2JwYyA9IGluZm8tPmJwYyA/IGluZm8tPmJwYyA6IDg7CisJfQor CiAJaWYgKHN0YXRlLT5jcnRjKQogCQljcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfZXhpc3Rp bmdfY3J0Y19zdGF0ZShzdGF0ZS0+c3RhdGUsCiAJCQkJCQkJCXN0YXRlLT5jcnRjKTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jIGIvZHJpdmVycy9ncHUv ZHJtL2RybV9hdG9taWNfaGVscGVyLmMKaW5kZXggM2NmMWFhMTMyNzc4Li5kOWNlODA3N2ZiNmEg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCkBAIC02MzksNiArNjM5LDEwIEBAIGRy bV9hdG9taWNfaGVscGVyX2NoZWNrX21vZGVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJ CWlmIChvbGRfY29ubmVjdG9yX3N0YXRlLT5saW5rX3N0YXR1cyAhPQogCQkJICAgIG5ld19jb25u ZWN0b3Jfc3RhdGUtPmxpbmtfc3RhdHVzKQogCQkJCW5ld19jcnRjX3N0YXRlLT5jb25uZWN0b3Jz X2NoYW5nZWQgPSB0cnVlOworCisJCQlpZiAob2xkX2Nvbm5lY3Rvcl9zdGF0ZS0+bWF4X3JlcXVl c3RlZF9icGMgIT0KKwkJCSAgICBuZXdfY29ubmVjdG9yX3N0YXRlLT5tYXhfcmVxdWVzdGVkX2Jw YykKKwkJCQluZXdfY3J0Y19zdGF0ZS0+Y29ubmVjdG9yc19jaGFuZ2VkID0gdHJ1ZTsKIAkJfQog CiAJCWlmIChmdW5jcy0+YXRvbWljX2NoZWNrKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2RybV9hdG9taWNfdWFwaS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfdWFwaS5jCmlu ZGV4IGQ1YjdmMzE1MDk4Yy4uODZhYzMzOTIyYjA5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vZHJtX2F0b21pY191YXBpLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfdWFw aS5jCkBAIC03NDAsNiArNzQwLDggQEAgc3RhdGljIGludCBkcm1fYXRvbWljX2Nvbm5lY3Rvcl9z ZXRfcHJvcGVydHkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAogCQlyZXR1cm4g c2V0X291dF9mZW5jZV9mb3JfY29ubmVjdG9yKHN0YXRlLT5zdGF0ZSwgY29ubmVjdG9yLAogCQkJ CQkJICAgZmVuY2VfcHRyKTsKKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IGNvbm5lY3Rvci0+bWF4 X2JwY19wcm9wZXJ0eSkgeworCQlzdGF0ZS0+bWF4X3JlcXVlc3RlZF9icGMgPSB2YWw7CiAJfSBl bHNlIGlmIChjb25uZWN0b3ItPmZ1bmNzLT5hdG9taWNfc2V0X3Byb3BlcnR5KSB7CiAJCXJldHVy biBjb25uZWN0b3ItPmZ1bmNzLT5hdG9taWNfc2V0X3Byb3BlcnR5KGNvbm5lY3RvciwKIAkJCQlz dGF0ZSwgcHJvcGVydHksIHZhbCk7CkBAIC04MDQsNiArODA2LDggQEAgZHJtX2F0b21pY19jb25u ZWN0b3JfZ2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCiAJCSp2 YWwgPSAwOwogCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gY29uZmlnLT53cml0ZWJhY2tfb3V0X2Zl bmNlX3B0cl9wcm9wZXJ0eSkgewogCQkqdmFsID0gMDsKKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09 IGNvbm5lY3Rvci0+bWF4X2JwY19wcm9wZXJ0eSkgeworCQkqdmFsID0gc3RhdGUtPm1heF9yZXF1 ZXN0ZWRfYnBjOwogCX0gZWxzZSBpZiAoY29ubmVjdG9yLT5mdW5jcy0+YXRvbWljX2dldF9wcm9w ZXJ0eSkgewogCQlyZXR1cm4gY29ubmVjdG9yLT5mdW5jcy0+YXRvbWljX2dldF9wcm9wZXJ0eShj b25uZWN0b3IsCiAJCQkJc3RhdGUsIHByb3BlcnR5LCB2YWwpOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2RybV9jb25uZWN0b3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9y LmMKaW5kZXggMWU0MGU1ZGVjYmU5Li4wNmFkNTkyMjJlMDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9kcm1fY29ubmVjdG9yLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0 b3IuYwpAQCAtMTU4Myw2ICsxNTgzLDQwIEBAIHZvaWQgZHJtX2Nvbm5lY3Rvcl9zZXRfbGlua19z dGF0dXNfcHJvcGVydHkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKIEVYUE9SVF9T WU1CT0woZHJtX2Nvbm5lY3Rvcl9zZXRfbGlua19zdGF0dXNfcHJvcGVydHkpOwogCiAvKioKKyAq IGRybV9jb25uZWN0b3JfYXR0YWNoX21heF9icGNfcHJvcGVydHkgLSBhdHRhY2ggIm1heCBicGMi IHByb3BlcnR5CisgKiBAY29ubmVjdG9yOiBjb25uZWN0b3IgdG8gYXR0YWNoIG1heCBicGMgcHJv cGVydHkgb24uCisgKiBAbWluOiBUaGUgbWluaW11bSBiaXQgZGVwdGggc3VwcG9ydGVkIGJ5IHRo ZSBjb25uZWN0b3IuCisgKiBAbWF4OiBUaGUgbWF4aW11bSBiaXQgZGVwdGggc3VwcG9ydGVkIGJ5 IHRoZSBjb25uZWN0b3IuCisgKgorICogVGhpcyBpcyB1c2VkIHRvIGFkZCBzdXBwb3J0IGZvciBs aW1pdGluZyB0aGUgYml0IGRlcHRoIG9uIGEgY29ubmVjdG9yLgorICoKKyAqIFJldHVybnM6Cisg KiBaZXJvIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm5vIG9uIGZhaWx1cmUuCisgKi8KK2ludCBk cm1fY29ubmVjdG9yX2F0dGFjaF9tYXhfYnBjX3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3IsIGludAorCQkJCQkgIG1pbiwgaW50IG1heCkKK3sKKwlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gY29ubmVjdG9yLT5kZXY7CisJc3RydWN0IGRybV9wcm9wZXJ0eSAqcHJvcDsK KworCXByb3AgPSBjb25uZWN0b3ItPm1heF9icGNfcHJvcGVydHk7CisJaWYgKHByb3AgPT0gTlVM TCkgeworCQlwcm9wID0gZHJtX3Byb3BlcnR5X2NyZWF0ZV9yYW5nZShkZXYsIDAsICJtYXggYnBj IiwgbWluLCBtYXgpOworCQlpZiAoIXByb3ApCisJCQlyZXR1cm4gLUVOT01FTTsKKworCQljb25u ZWN0b3ItPm1heF9icGNfcHJvcGVydHkgPSBwcm9wOworCX0KKworCWRybV9vYmplY3RfYXR0YWNo X3Byb3BlcnR5KCZjb25uZWN0b3ItPmJhc2UsIHByb3AsIG1heCk7CisJY29ubmVjdG9yLT5zdGF0 ZS0+bWF4X3JlcXVlc3RlZF9icGMgPSBtYXg7CisKKworCXJldHVybiAwOworfQorRVhQT1JUX1NZ TUJPTChkcm1fY29ubmVjdG9yX2F0dGFjaF9tYXhfYnBjX3Byb3BlcnR5KTsKKworLyoqCiAgKiBk cm1fY29ubmVjdG9yX2luaXRfcGFuZWxfb3JpZW50YXRpb25fcHJvcGVydHkgLQogICoJaW5pdGlh bGl6ZSB0aGUgY29ubmVjdGVycyBwYW5lbF9vcmllbnRhdGlvbiBwcm9wZXJ0eQogICogQGNvbm5l Y3RvcjogY29ubmVjdG9yIGZvciB3aGljaCB0byBpbml0IHRoZSBwYW5lbC1vcmllbnRhdGlvbiBw cm9wZXJ0eS4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaCBiL2luY2x1 ZGUvZHJtL2RybV9jb25uZWN0b3IuaAppbmRleCA5MWE4NzdmYTAwY2IuLmQ5YzYwZmRlNTM3MiAx MDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCisrKyBiL2luY2x1ZGUvZHJt L2RybV9jb25uZWN0b3IuaApAQCAtNDYxLDYgKzQ2MSwxOCBAQCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rv cl9zdGF0ZSB7CiAJICogZHJtX3dyaXRlYmFja19zaWduYWxfY29tcGxldGlvbigpCiAJICovCiAJ c3RydWN0IGRybV93cml0ZWJhY2tfam9iICp3cml0ZWJhY2tfam9iOworCisJLyoqCisJICogQG1h eF9yZXF1ZXN0ZWRfYnBjOiBDb25uZWN0b3IgcHJvcGVydHkgdG8gbGltaXQgdGhlIG1heGltdW0g Yml0CisJICogZGVwdGggb2YgdGhlIHBpeGVscy4KKwkgKi8KKwl1bnNpZ25lZCBpbnQgbWF4X3Jl cXVlc3RlZF9icGM7CisKKwkvKioKKwkgKiBAbWF4X2JwYzogQ29ubmVjdG9yIG1heF9icGMgYmFz ZWQgb24gdGhlIHJlcXVlc3RlZCBtYXhfYnBjIHByb3BlcnR5CisJICogYW5kIHRoZSBjb25uZWN0 b3IgYnBjIGxpbWl0YXRpb25zIG9idGFpbmVkIGZyb20gZWRpZC4KKwkgKi8KKwl1bnNpZ25lZCBp bnQgbWF4X2JwYzsKIH07CiAKIC8qKgpAQCAtOTI0LDYgKzkzNiwxMiBAQCBzdHJ1Y3QgZHJtX2Nv bm5lY3RvciB7CiAJICovCiAJc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpwYXRoX2Jsb2JfcHRy OwogCisJLyoqCisJICogQG1heF9icGNfcHJvcGVydHk6IERlZmF1bHQgY29ubmVjdG9yIHByb3Bl cnR5IGZvciB0aGUgbWF4IGJwYyB0byBiZQorCSAqIGRyaXZlbiBvdXQgb2YgdGhlIGNvbm5lY3Rv ci4KKwkgKi8KKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICptYXhfYnBjX3Byb3BlcnR5OworCiAjZGVm aW5lIERSTV9DT05ORUNUT1JfUE9MTF9IUEQgKDEgPDwgMCkKICNkZWZpbmUgRFJNX0NPTk5FQ1RP Ul9QT0xMX0NPTk5FQ1QgKDEgPDwgMSkKICNkZWZpbmUgRFJNX0NPTk5FQ1RPUl9QT0xMX0RJU0NP Tk5FQ1QgKDEgPDwgMikKQEAgLTEyMDEsNiArMTIxOSw4IEBAIHZvaWQgZHJtX2Nvbm5lY3Rvcl9z ZXRfbGlua19zdGF0dXNfcHJvcGVydHkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwK IAkJCQkJICAgIHVpbnQ2NF90IGxpbmtfc3RhdHVzKTsKIGludCBkcm1fY29ubmVjdG9yX2luaXRf cGFuZWxfb3JpZW50YXRpb25fcHJvcGVydHkoCiAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvciwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKK2ludCBkcm1fY29ubmVjdG9yX2F0dGFjaF9t YXhfYnBjX3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCisJCQkJCSAg aW50IG1pbiwgaW50IG1heCk7CiAKIC8qKgogICogc3RydWN0IGRybV90aWxlX2dyb3VwIC0gVGls ZSBncm91cCBtZXRhZGF0YQotLSAKMi45LjMKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2RyaS1kZXZlbAo=