From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: [PATCH v5 12/12] drm/i915: Populate downstream info for HDCP Date: Thu, 18 Apr 2019 14:28:05 +0530 Message-ID: <20190418085805.5648-13-ramalingam.c@intel.com> References: <20190418085805.5648-1-ramalingam.c@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190418085805.5648-1-ramalingam.c@intel.com> 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, dri-devel@lists.freedesktop.org, daniel@ffwll.ch, gwan-gyeong.mun@intel.com List-Id: dri-devel@lists.freedesktop.org SW1wbGVtZW50cyBkcm0gYmxvYiBwcm9wZXJ0eSBjb250ZW50X3Byb3RlY3Rpb25fZG93bnN0cmVh bV9pbmZvCnByb3BlcnR5IG9uIEhEQ1AgY2FwYWJsZSBjb25uZWN0b3JzLgoKRG93bnN0cmVhbSB0 b3BvbG9neSBpbmZvIGlzIGdhdGhlcmVkIGFjcm9zcyBhdXRoZW50aWNhdGlvbiBzdGFnZXMKYW5k IHN0b3JlZCBpbiBpbnRlbF9oZGNwLiBXaGVuIEhEQ1AgYXV0aGVudGljYXRpb24gaXMgY29tcGxl dGUsCm5ldyBibG9iIHdpdGggbGF0ZXN0IGRvd25zdHJlYW0gdG9wb2xvZ3kgaW5mb3JtYXRpb24g aXMgdXBkYXRlZCB0bwpjb250ZW50X3Byb3RlY3Rpb25fZG93bnN0cmVhbV9pbmZvIHByb3BlcnR5 LgoKdjI6CiAgJXMvY3BfZG93bnN0cmVhbS9jb250ZW50X3Byb3RlY3Rpb25fZG93bnN0cmVhbSBb ZGFuaWVsXQp2MzoKICAlcy9jb250ZW50X3Byb3RlY3Rpb25fZG93bnN0cmVhbS9oZGNwX3RvcG9s b2d5IFtkYW5pZWxdCnY0OgogIFJlYmFzZWQuCnY1OgogIFJlYmFzZWQuCgpTaWduZWQtb2ZmLWJ5 OiBSYW1hbGluZ2FtIEMgPHJhbWFsaW5nYW0uY0BpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmggIHwgIDIgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf aGRjcC5jIHwgNzMgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQogaW5jbHVkZS9kcm0v ZHJtX2hkY3AuaCAgICAgICAgICAgIHwgIDEgKwogMyBmaWxlcyBjaGFuZ2VkLCA2OCBpbnNlcnRp b25zKCspLCA4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggYTM4 YjljZmY1Y2QwLi5iOTk4NDc5ZDg5ZTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCkBAIC00 ODUsNiArNDg1LDggQEAgc3RydWN0IGludGVsX2hkY3AgewogCXdhaXRfcXVldWVfaGVhZF90IGNw X2lycV9xdWV1ZTsKIAlhdG9taWNfdCBjcF9pcnFfY291bnQ7CiAJaW50IGNwX2lycV9jb3VudF9j YWNoZWQ7CisKKwlzdHJ1Y3QgaGRjcF90b3BvbG9neV9pbmZvICp0b3BvbG9neV9pbmZvOwogfTsK IAogc3RydWN0IGludGVsX2Nvbm5lY3RvciB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9oZGNwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMKaW5k ZXggODRhYzIzZWE3NWFmLi4xYzc1ZGYxY2NhZjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2hkY3AuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNw LmMKQEAgLTQ5Niw2ICs0OTYsNyBAQCBpbnQgaW50ZWxfaGRjcF9hdXRoX2Rvd25zdHJlYW0oc3Ry dWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQogewogCXN0cnVjdCBpbnRlbF9kaWdpdGFs X3BvcnQgKmludGVsX2RpZ19wb3J0ID0gY29ubl90b19kaWdfcG9ydChjb25uZWN0b3IpOwogCWNv bnN0IHN0cnVjdCBpbnRlbF9oZGNwX3NoaW0gKnNoaW0gPSBjb25uZWN0b3ItPmhkY3Auc2hpbTsK KwlzdHJ1Y3QgaW50ZWxfaGRjcCAqaGRjcCA9ICZjb25uZWN0b3ItPmhkY3A7CiAJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+YmFzZS5kZXY7CiAJdTggYnN0YXR1c1syXSwgbnVt X2Rvd25zdHJlYW0sICprc3ZfZmlmbzsKIAlpbnQgcmV0LCBpLCB0cmllcyA9IDM7CkBAIC01Mjcs NiArNTI4LDkgQEAgaW50IGludGVsX2hkY3BfYXV0aF9kb3duc3RyZWFtKHN0cnVjdCBpbnRlbF9j b25uZWN0b3IgKmNvbm5lY3RvcikKIAlpZiAobnVtX2Rvd25zdHJlYW0gPT0gMCkKIAkJcmV0dXJu IC1FSU5WQUw7CiAKKwloZGNwLT50b3BvbG9neV9pbmZvLT5kZXZpY2VfY291bnQgPSBudW1fZG93 bnN0cmVhbTsKKwloZGNwLT50b3BvbG9neV9pbmZvLT5kZXB0aCA9IERSTV9IRENQX0RFUFRIKGJz dGF0dXNbMV0pOworCiAJa3N2X2ZpZm8gPSBrY2FsbG9jKERSTV9IRENQX0tTVl9MRU4sIG51bV9k b3duc3RyZWFtLCBHRlBfS0VSTkVMKTsKIAlpZiAoIWtzdl9maWZvKQogCQlyZXR1cm4gLUVOT01F TTsKQEAgLTU0MCw2ICs1NDQsOCBAQCBpbnQgaW50ZWxfaGRjcF9hdXRoX2Rvd25zdHJlYW0oc3Ry dWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQogCQlyZXR1cm4gLUVQRVJNOwogCX0KIAor CW1lbWNweShoZGNwLT50b3BvbG9neV9pbmZvLT5rc3ZfbGlzdCwga3N2X2ZpZm8sCisJICAgICAg IG51bV9kb3duc3RyZWFtICogRFJNX0hEQ1BfS1NWX0xFTik7CiAJLyoKIAkgKiBXaGVuIFYgcHJp bWUgbWlzbWF0Y2hlcywgRFAgU3BlYyBtYW5kYXRlcyByZS1yZWFkIG9mCiAJICogViBwcmltZSBh dGxlYXN0IHR3aWNlLgpAQCAtNjQyLDE1ICs2NDgsMjAgQEAgc3RhdGljIGludCBpbnRlbF9oZGNw X2F1dGgoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQogCQlyZXR1cm4gLUVQRVJN OwogCX0KIAorCWhkY3AtPnRvcG9sb2d5X2luZm8tPnZlcl9pbl9mb3JjZSA9IERSTV9NT0RFX0hE Q1AxNF9JTl9GT1JDRTsKKwltZW1jcHkoaGRjcC0+dG9wb2xvZ3lfaW5mby0+YmtzdiwgYmtzdi5z aGltLCBEUk1fTU9ERV9IRENQX0tTVl9MRU4pOworCiAJSTkxNV9XUklURShQT1JUX0hEQ1BfQktT VkxPKHBvcnQpLCBia3N2LnJlZ1swXSk7CiAJSTkxNV9XUklURShQT1JUX0hEQ1BfQktTVkhJKHBv cnQpLCBia3N2LnJlZ1sxXSk7CiAKIAlyZXQgPSBzaGltLT5yZXBlYXRlcl9wcmVzZW50KGludGVs X2RpZ19wb3J0LCAmcmVwZWF0ZXJfcHJlc2VudCk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsK LQlpZiAocmVwZWF0ZXJfcHJlc2VudCkKKwlpZiAocmVwZWF0ZXJfcHJlc2VudCkgewogCQlJOTE1 X1dSSVRFKEhEQ1BfUkVQX0NUTCwKIAkJCSAgIGludGVsX2hkY3BfZ2V0X3JlcGVhdGVyX2N0bChp bnRlbF9kaWdfcG9ydCkpOworCQloZGNwLT50b3BvbG9neV9pbmZvLT5pc19yZXBlYXRlciA9IHRy dWU7CisJfQogCiAJcmV0ID0gc2hpbS0+dG9nZ2xlX3NpZ25hbGxpbmcoaW50ZWxfZGlnX3BvcnQs IHRydWUpOwogCWlmIChyZXQpCkBAIC03NDcsMTMgKzc1OCwxOCBAQCBzdGF0aWMgaW50IF9pbnRl bF9oZGNwX2Rpc2FibGUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQogCQlyZXR1 cm4gcmV0OwogCX0KIAorCW1lbXNldChoZGNwLT50b3BvbG9neV9pbmZvLCAwLCBzaXplb2Yoc3Ry dWN0IGhkY3BfdG9wb2xvZ3lfaW5mbykpOworCisJaWYgKGRybV9jb25uZWN0b3JfdXBkYXRlX2hk Y3BfdG9wb2xvZ3lfcHJvcGVydHkoJmNvbm5lY3Rvci0+YmFzZSwKKwkJCQkJCWNvbm5lY3Rvci0+ aGRjcC50b3BvbG9neV9pbmZvKSkKKwkJRFJNX0VSUk9SKCJEb3duc3RyZWFtX2luZm8gdXBkYXRl IGZhaWxlZC5cbiIpOworCiAJRFJNX0RFQlVHX0tNUygiSERDUCBpcyBkaXNhYmxlZFxuIik7CiAJ cmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQgX2ludGVsX2hkY3BfZW5hYmxlKHN0cnVjdCBpbnRl bF9jb25uZWN0b3IgKmNvbm5lY3RvcikKIHsKLQlzdHJ1Y3QgaW50ZWxfaGRjcCAqaGRjcCA9ICZj b25uZWN0b3ItPmhkY3A7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gY29u bmVjdG9yLT5iYXNlLmRldi0+ZGV2X3ByaXZhdGU7CiAJaW50IGksIHJldCwgdHJpZXMgPSAzOwog CkBAIC03ODAsNyArNzk2LDExIEBAIHN0YXRpYyBpbnQgX2ludGVsX2hkY3BfZW5hYmxlKHN0cnVj dCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKIAlmb3IgKGkgPSAwOyBpIDwgdHJpZXM7IGkr KykgewogCQlyZXQgPSBpbnRlbF9oZGNwX2F1dGgoY29ubmVjdG9yKTsKIAkJaWYgKCFyZXQpIHsK LQkJCWhkY3AtPmhkY3BfZW5jcnlwdGVkID0gdHJ1ZTsKKwkJCWNvbm5lY3Rvci0+aGRjcC5oZGNw X2VuY3J5cHRlZCA9IHRydWU7CisJCQlpZiAoZHJtX2Nvbm5lY3Rvcl91cGRhdGVfaGRjcF90b3Bv bG9neV9wcm9wZXJ0eSgKKwkJCQkJJmNvbm5lY3Rvci0+YmFzZSwKKwkJCQkJY29ubmVjdG9yLT5o ZGNwLnRvcG9sb2d5X2luZm8pKQorCQkJCURSTV9FUlJPUigiRG93bnN0cmVhbV9pbmZvIHVwZGF0 ZSBmYWlsZWQuXG4iKTsKIAkJCXJldHVybiAwOwogCQl9CiAKQEAgLTEyMTYsNiArMTIzNiwxMiBA QCBzdGF0aWMgaW50IGhkY3AyX2F1dGhlbnRpY2F0aW9uX2tleV9leGNoYW5nZShzdHJ1Y3QgaW50 ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCiAJCXJldHVybiAtRVBFUk07CiAJfQogCisJaGRjcC0+ dG9wb2xvZ3lfaW5mby0+dmVyX2luX2ZvcmNlID0gRFJNX01PREVfSERDUDIyX0lOX0ZPUkNFOwor CWhkY3AtPnRvcG9sb2d5X2luZm8tPmNvbnRlbnRfdHlwZSA9IGhkY3AtPmNvbnRlbnRfdHlwZTsK KwltZW1jcHkoaGRjcC0+dG9wb2xvZ3lfaW5mby0+YmtzdiwgbXNncy5zZW5kX2NlcnQuY2VydF9y eC5yZWNlaXZlcl9pZCwKKwkgICAgICAgSERDUF8yXzJfUkVDRUlWRVJfSURfTEVOKTsKKwloZGNw LT50b3BvbG9neV9pbmZvLT5pc19yZXBlYXRlciA9IGhkY3AtPmlzX3JlcGVhdGVyOworCiAJLyoK IAkgKiBIZXJlIG1zZ3Mubm9fc3RvcmVkX2ttIHdpbGwgaG9sZCBtc2dzIGNvcnJlc3BvbmRpbmcg dG8gdGhlIGttCiAJICogc3RvcmVkIGFsc28uCkBAIC0xNDA4LDYgKzE0MzQsMTEgQEAgaW50IGhk Y3AyX2F1dGhlbnRpY2F0ZV9yZXBlYXRlcl90b3BvbG9neShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICpjb25uZWN0b3IpCiAJCXJldHVybiAtRVBFUk07CiAJfQogCisJaGRjcC0+dG9wb2xvZ3lfaW5m by0+ZGV2aWNlX2NvdW50ID0gZGV2aWNlX2NudDsKKwloZGNwLT50b3BvbG9neV9pbmZvLT5kZXB0 aCA9IEhEQ1BfMl8yX0RFUFRIKHJ4X2luZm9bMF0pOworCW1lbWNweShoZGNwLT50b3BvbG9neV9p bmZvLT5rc3ZfbGlzdCwgbXNncy5yZWN2aWRfbGlzdC5yZWNlaXZlcl9pZHMsCisJICAgICAgIGRl dmljZV9jbnQgKiBIRENQXzJfMl9SRUNFSVZFUl9JRF9MRU4pOworCiAJcmV0ID0gaGRjcDJfdmVy aWZ5X3JlcF90b3BvbG9neV9wcmVwYXJlX2Fjayhjb25uZWN0b3IsCiAJCQkJCQkgICAgJm1zZ3Mu cmVjdmlkX2xpc3QsCiAJCQkJCQkgICAgJm1zZ3MucmVwX2Fjayk7CkBAIC0xNTk0LDYgKzE2MjUs MTIgQEAgc3RhdGljIGludCBfaW50ZWxfaGRjcDJfZW5hYmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0 b3IgKmNvbm5lY3RvcikKIAlpZiAocmV0KSB7CiAJCURSTV9ERUJVR19LTVMoIkhEQ1AyIFR5cGUl ZCAgRW5hYmxpbmcgRmFpbGVkLiAoJWQpXG4iLAogCQkJICAgICAgaGRjcC0+Y29udGVudF90eXBl LCByZXQpOworCisJCW1lbXNldChoZGNwLT50b3BvbG9neV9pbmZvLCAwLAorCQkgICAgICAgc2l6 ZW9mKHN0cnVjdCBoZGNwX3RvcG9sb2d5X2luZm8pKTsKKwkJZHJtX2Nvbm5lY3Rvcl91cGRhdGVf aGRjcF90b3BvbG9neV9wcm9wZXJ0eSgmY29ubmVjdG9yLT5iYXNlLAorCQkJCQkJCSAgaGRjcC0+ dG9wb2xvZ3lfaW5mbyk7CisKIAkJcmV0dXJuIHJldDsKIAl9CiAKQEAgLTE2MDEsMTIgKzE2Mzgs MTYgQEAgc3RhdGljIGludCBfaW50ZWxfaGRjcDJfZW5hYmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0 b3IgKmNvbm5lY3RvcikKIAkJICAgICAgY29ubmVjdG9yLT5iYXNlLm5hbWUsIGNvbm5lY3Rvci0+ YmFzZS5iYXNlLmlkLAogCQkgICAgICBoZGNwLT5jb250ZW50X3R5cGUpOwogCisJZHJtX2Nvbm5l Y3Rvcl91cGRhdGVfaGRjcF90b3BvbG9neV9wcm9wZXJ0eSgmY29ubmVjdG9yLT5iYXNlLAorCQkJ CQkJICAgIGhkY3AtPnRvcG9sb2d5X2luZm8pOwogCWhkY3AtPmhkY3AyX2VuY3J5cHRlZCA9IHRy dWU7CisKIAlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBfaW50ZWxfaGRjcDJfZGlzYWJsZShz dHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCiB7CisJc3RydWN0IGludGVsX2hkY3Ag KmhkY3AgPSAmY29ubmVjdG9yLT5oZGNwOwogCWludCByZXQ7CiAKIAlEUk1fREVCVUdfS01TKCJb JXM6JWRdIEhEQ1AyLjIgaXMgYmVpbmcgRGlzYWJsZWRcbiIsCkBAIC0xNjE3LDggKzE2NTgsMTEg QEAgc3RhdGljIGludCBfaW50ZWxfaGRjcDJfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICpjb25uZWN0b3IpCiAJaWYgKGhkY3AyX2RlYXV0aGVudGljYXRlX3BvcnQoY29ubmVjdG9yKSA8 IDApCiAJCURSTV9ERUJVR19LTVMoIlBvcnQgZGVhdXRoIGZhaWxlZC5cbiIpOwogCi0JY29ubmVj dG9yLT5oZGNwLmhkY3AyX2VuY3J5cHRlZCA9IGZhbHNlOworCWhkY3AtPmhkY3AyX2VuY3J5cHRl ZCA9IGZhbHNlOwogCisJbWVtc2V0KGhkY3AtPnRvcG9sb2d5X2luZm8sIDAsIHNpemVvZihzdHJ1 Y3QgaGRjcF90b3BvbG9neV9pbmZvKSk7CisJZHJtX2Nvbm5lY3Rvcl91cGRhdGVfaGRjcF90b3Bv bG9neV9wcm9wZXJ0eSgmY29ubmVjdG9yLT5iYXNlLAorCQkJCQkJICAgIGhkY3AtPnRvcG9sb2d5 X2luZm8pOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTE4MzUsMTAgKzE4NzksMTcgQEAgaW50IGlu dGVsX2hkY3BfaW5pdChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCiAJcmV0ID0K IAlkcm1fY29ubmVjdG9yX2F0dGFjaF9jb250ZW50X3Byb3RlY3Rpb25fcHJvcGVydHkoJmNvbm5l Y3Rvci0+YmFzZSwKIAkJCQkJCQkgaGRjcC0+aGRjcDJfc3VwcG9ydGVkKTsKLQlpZiAocmV0KSB7 Ci0JCWhkY3AtPmhkY3AyX3N1cHBvcnRlZCA9IGZhbHNlOwotCQlrZnJlZShoZGNwLT5wb3J0X2Rh dGEuc3RyZWFtcyk7Ci0JCXJldHVybiByZXQ7CisJaWYgKHJldCkKKwkJZ290byBlcnJfZXhpdDsK KworCXJldCA9IGRybV9jb25uZWN0b3JfYXR0YWNoX2hkY3BfdG9wb2xvZ3lfcHJvcGVydHkoJmNv bm5lY3Rvci0+YmFzZSk7CisJaWYgKHJldCkKKwkJZ290byBlcnJfZXhpdDsKKworCWhkY3AtPnRv cG9sb2d5X2luZm8gPSBremFsbG9jKHNpemVvZigqaGRjcC0+dG9wb2xvZ3lfaW5mbyksIEdGUF9L RVJORUwpOworCWlmICghaGRjcC0+dG9wb2xvZ3lfaW5mbykgeworCQlyZXQgPSAtRU5PTUVNOwor CQlnb3RvIGVycl9leGl0OwogCX0KIAogCWhkY3AtPnNoaW0gPSBzaGltOwpAQCAtMTg0OCw2ICsx ODk5LDEyIEBAIGludCBpbnRlbF9oZGNwX2luaXQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29u bmVjdG9yLAogCWluaXRfd2FpdHF1ZXVlX2hlYWQoJmhkY3AtPmNwX2lycV9xdWV1ZSk7CiAKIAly ZXR1cm4gMDsKKworZXJyX2V4aXQ6CisJaGRjcC0+aGRjcDJfc3VwcG9ydGVkID0gZmFsc2U7CisJ a2ZyZWUoaGRjcC0+cG9ydF9kYXRhLnN0cmVhbXMpOworCisJcmV0dXJuIHJldDsKIH0KIAogaW50 IGludGVsX2hkY3BfZW5hYmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwgdTgg Y29udGVudF90eXBlKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2hkY3AuaCBiL2luY2x1 ZGUvZHJtL2RybV9oZGNwLmgKaW5kZXggMDExZjM1ZTEyMWE1Li4zNDgzNmQ0MjY3NWIgMTAwNjQ0 Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9oZGNwLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtX2hkY3Au aApAQCAtMjMsNiArMjMsNyBAQAogI2RlZmluZSBEUk1fSERDUF9WX1BSSU1FX1BBUlRfTEVOCQk0 CiAjZGVmaW5lIERSTV9IRENQX1ZfUFJJTUVfTlVNX1BBUlRTCQk1CiAjZGVmaW5lIERSTV9IRENQ X05VTV9ET1dOU1RSRUFNKHgpCQkoeCAmIDB4N2YpCisjZGVmaW5lIERSTV9IRENQX0RFUFRIKHgp CQkJKCh4KSAmIDB4NykKICNkZWZpbmUgRFJNX0hEQ1BfTUFYX0NBU0NBREVfRVhDRUVERUQoeCkJ KHggJiBCSVQoMykpCiAjZGVmaW5lIERSTV9IRENQX01BWF9ERVZJQ0VfRVhDRUVERUQoeCkJCSh4 ICYgQklUKDcpKQogCi0tIAoyLjE5LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2RyaS1kZXZlbA==