From mboxrd@z Thu Jan 1 00:00:00 1970 From: Todd Previte Subject: [PATCH 5/5] drm/i915: Add debugfs test control files for Displayport compliance testing Date: Sat, 18 Apr 2015 00:04:19 -0700 Message-ID: <1429340659-14369-6-git-send-email-tprevite@gmail.com> References: <1429340659-14369-1-git-send-email-tprevite@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pa0-f53.google.com (mail-pa0-f53.google.com [209.85.220.53]) by gabe.freedesktop.org (Postfix) with ESMTP id CC01C6E1CB for ; Sat, 18 Apr 2015 00:04:35 -0700 (PDT) Received: by pabtp1 with SMTP id tp1so148570824pab.2 for ; Sat, 18 Apr 2015 00:04:35 -0700 (PDT) In-Reply-To: <1429340659-14369-1-git-send-email-tprevite@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org VGhpcyBwYXRjaCBhZGRzIDMgZGVidWdmcyBmaWxlcyBmb3IgaGFuZGxpbmcgRGlzcGxheXBvcnQg Y29tcGxpYW5jZSB0ZXN0aW5nCmFuZCBzdXBlcmNlZGVzIHRoZSBwcmV2aW91cyBwYXRjaGVzIHRo YXQgaW1wbGVtZW50ZWQgZGVidWdmcyBzdXBwb3J0IGZvcgpjb21wbGlhbmNlIHRlc3RpbmcuIFRo b3NlIHBhdGNoZXMgd2VyZToKCi0gW1BBVENIIDA0LzE3XSBkcm0vaTkxNTogQWRkIGRlYnVnZnMg ZnVuY3Rpb25zIGZvciBEaXNwbGF5cG9ydAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBs aWFuY2UgdGVzdGluZwotIFtQQVRDSCAwOC8xN10gZHJtL2k5MTU6IEFkZCBuZXcgZGVidWdmcyBm aWxlIGZvciBEaXNwbGF5cG9ydAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsaWFuY2Ug dGVzdCBjb250cm9sCi0gW1BBVENIIDA5LzE3XSBkcm0vaTkxNTogQWRkIGRlYnVnZnMgd3JpdGUg YW5kIHRlc3QgcGFyYW0gcGFyc2luZwogICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9u cyBmb3IgRFAgdGVzdCBjb250cm9sCgpUaGlzIG5ldyBwYXRjaCBzaW1wbGlmaWVzIHRoZSBkZWJ1 Z2ZzIGltcGxlbWVudGF0aW9uIGJ5IHBsYWNlcyBhIHNpbmdsZQp0ZXN0IGNvbnRyb2wgdmFsdWUg aW50byBhbiBpbmRpdmlkdWFsIGZpbGUuIEVhY2ggZmlsZSBpcyByZWFkYWJsZSBieQp0aGUgdXNl cnNhcGNlIGFwcGxpY2F0aW9uIGFuZCB0aGUgdGVzdF9hY3RpdmUgZmlsZSBpcyB3cml0YWJsZSB0 bwppbmRpY2F0ZSB0byB0aGUga2VybmVsIHdoZW4gdXNlcnNwYWNlIGhhcyBjb21wbGV0ZWQgaXRz IHBvcnRpb24gb2YgdGhlCnRlc3Qgc2VxdWVuY2UuCgpSZXBsYWNpbmcgdGhlIHByZXZpb3VzIGZp bGVzIHNpbXBsaWZpZXMgb3BlcmF0aW9uIGFuZCBzcGVlZHMgcmVzcG9uc2UKdGltZSBmb3IgdGhl IHVzZXIgYXBwLCBhcyBpdCBpcyByZXF1aXJlZCB0byBwb2xsIG9uIHRoZSB0ZXN0X2FjdGl2ZSBm aWxlCmluIG9yZGVyIHRvIGRldGVybWluZSB3aGVuIGl0IG5lZWRzIHRvIGJlZ2luIGl0cyBvcGVy YXRpb25zLgoKVjI6Ci0gVXBkYXRlZCB0aGUgdGVzdCBhY3RpdmUgdmFyaWFibGUgbmFtZSB0byBt YXRjaCB0aGUgY2hhbmdlIGluCiAgdGhlIGluaXRpYWwgcGF0Y2ggb2YgdGhlIHNlcmllcwpWMzoK LSBBZGRlZCBhIGZpeCBpbiB0aGUgdGVzdF9hY3RpdmVfd3JpdGUgZnVuY3Rpb24gdG8gcHJldmVu dCBhIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlIGlmIHRoZSBlbmNvZGVyIG9uIHRoZSBjb25u ZWN0b3IgaXMgaW52YWxpZAoKU2lnbmVkLW9mZi1ieTogVG9kZCBQcmV2aXRlIDx0cHJldml0ZUBn bWFpbC5jb20+ClJldmlld2VkLWJ5OiBQYXVsbyBaYW5vbmkgPHBhdWxvLnIuemFub25pQGludGVs LmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyB8IDIwOSArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAyMDkgaW5z ZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdm cy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKaW5kZXggMjM5NDkyNC4u YzMzZDM5MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKQEAgLTM5MzcsNiArMzkz NywyMTIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgaTkxNV9kaXNwbGF5 X2NyY19jdGxfZm9wcyA9IHsKIAkud3JpdGUgPSBkaXNwbGF5X2NyY19jdGxfd3JpdGUKIH07CiAK K3N0YXRpYyBzc2l6ZV90IGk5MTVfZGlzcGxheXBvcnRfdGVzdF9hY3RpdmVfd3JpdGUoc3RydWN0 IGZpbGUgKmZpbGUsCisJCQkJCSAgICBjb25zdCBjaGFyIF9fdXNlciAqdWJ1ZiwKKwkJCQkJICAg IHNpemVfdCBsZW4sIGxvZmZfdCAqb2ZmcCkKK3sKKwljaGFyICppbnB1dF9idWZmZXI7CisJaW50 IHN0YXR1cyA9IDA7CisJc3RydWN0IHNlcV9maWxlICptOworCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXY7CisJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKKwlzdHJ1Y3QgbGlzdF9oZWFk ICpjb25uZWN0b3JfbGlzdDsKKwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwOworCWludCB2YWwg PSAwOworCisJbSA9IGZpbGUtPnByaXZhdGVfZGF0YTsKKwlpZiAoIW0pIHsKKwkJc3RhdHVzID0g LUVOT0RFVjsKKwkJcmV0dXJuIHN0YXR1czsKKwl9CisJZGV2ID0gbS0+cHJpdmF0ZTsKKworCWlm ICghZGV2KSB7CisJCXN0YXR1cyA9IC1FTk9ERVY7CisJCXJldHVybiBzdGF0dXM7CisJfQorCWNv bm5lY3Rvcl9saXN0ID0gJmRldi0+bW9kZV9jb25maWcuY29ubmVjdG9yX2xpc3Q7CisKKwlpZiAo bGVuID09IDApCisJCXJldHVybiAwOworCisJaW5wdXRfYnVmZmVyID0ga21hbGxvYyhsZW4gKyAx LCBHRlBfS0VSTkVMKTsKKwlpZiAoIWlucHV0X2J1ZmZlcikKKwkJcmV0dXJuIC1FTk9NRU07CisK KwlpZiAoY29weV9mcm9tX3VzZXIoaW5wdXRfYnVmZmVyLCB1YnVmLCBsZW4pKSB7CisJCXN0YXR1 cyA9IC1FRkFVTFQ7CisJCWdvdG8gb3V0OworCX0KKworCWlucHV0X2J1ZmZlcltsZW5dID0gJ1ww JzsKKwlEUk1fREVCVUdfRFJJVkVSKCJDb3BpZWQgJWQgYnl0ZXMgZnJvbSB1c2VyXG4iLCAodW5z aWduZWQgaW50KWxlbik7CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNvbm5lY3RvciwgY29ubmVj dG9yX2xpc3QsIGhlYWQpIHsKKworCQlpZiAoY29ubmVjdG9yLT5jb25uZWN0b3JfdHlwZSAhPQor CQkgICAgRFJNX01PREVfQ09OTkVDVE9SX0Rpc3BsYXlQb3J0KQorCQkJY29udGludWU7CisKKwkJ aWYgKGNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUgPT0KKwkJICAgIERSTV9NT0RFX0NPTk5FQ1RP Ul9EaXNwbGF5UG9ydCAmJgorCQkgICAgY29ubmVjdG9yLT5zdGF0dXMgPT0gY29ubmVjdG9yX3N0 YXR1c19jb25uZWN0ZWQgJiYKKwkJICAgIGNvbm5lY3Rvci0+ZW5jb2RlciAhPSBOVUxMKSB7CisJ CQlpbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcChjb25uZWN0b3ItPmVuY29kZXIpOworCQkJc3Rh dHVzID0ga3N0cnRvaW50KGlucHV0X2J1ZmZlciwgMTAsICZ2YWwpOworCQkJaWYgKHN0YXR1cyA8 IDApCisJCQkJZ290byBvdXQ7CisJCQlEUk1fREVCVUdfRFJJVkVSKCJHb3QgJWQgZm9yIHRlc3Qg YWN0aXZlXG4iLCB2YWwpOworCQkJLyogVG8gcHJldmVudCBlcnJvbmVvdXMgYWN0aXZhdGlvbiBv ZiB0aGUgY29tcGxpYW5jZQorCQkJICogdGVzdGluZyBjb2RlLCBvbmx5IGFjY2VwdCBhbiBhY3R1 YWwgdmFsdWUgb2YgMSBoZXJlCisJCQkgKi8KKwkJCWlmICh2YWwgPT0gMSkKKwkJCQlpbnRlbF9k cC0+Y29tcGxpYW5jZV90ZXN0X2FjdGl2ZSA9IDE7CisJCQllbHNlCisJCQkJaW50ZWxfZHAtPmNv bXBsaWFuY2VfdGVzdF9hY3RpdmUgPSAwOworCQl9CisJfQorb3V0OgorCWtmcmVlKGlucHV0X2J1 ZmZlcik7CisJaWYgKHN0YXR1cyA8IDApCisJCXJldHVybiBzdGF0dXM7CisKKwkqb2ZmcCArPSBs ZW47CisJcmV0dXJuIGxlbjsKK30KKworc3RhdGljIGludCBpOTE1X2Rpc3BsYXlwb3J0X3Rlc3Rf YWN0aXZlX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQoreworCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBtLT5wcml2YXRlOworCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25u ZWN0b3I7CisJc3RydWN0IGxpc3RfaGVhZCAqY29ubmVjdG9yX2xpc3QgPSAmZGV2LT5tb2RlX2Nv bmZpZy5jb25uZWN0b3JfbGlzdDsKKwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwOworCisJaWYg KCFkZXYpCisJCXJldHVybiAtRU5PREVWOworCisJbGlzdF9mb3JfZWFjaF9lbnRyeShjb25uZWN0 b3IsIGNvbm5lY3Rvcl9saXN0LCBoZWFkKSB7CisKKwkJaWYgKGNvbm5lY3Rvci0+Y29ubmVjdG9y X3R5cGUgIT0KKwkJICAgIERSTV9NT0RFX0NPTk5FQ1RPUl9EaXNwbGF5UG9ydCkKKwkJCWNvbnRp bnVlOworCisJCWlmIChjb25uZWN0b3ItPnN0YXR1cyA9PSBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5l Y3RlZCAmJgorCQkgICAgY29ubmVjdG9yLT5lbmNvZGVyICE9IE5VTEwpIHsKKwkJCWludGVsX2Rw ID0gZW5jX3RvX2ludGVsX2RwKGNvbm5lY3Rvci0+ZW5jb2Rlcik7CisJCQlpZiAoaW50ZWxfZHAt PmNvbXBsaWFuY2VfdGVzdF9hY3RpdmUpCisJCQkJc2VxX3B1dHMobSwgIjEiKTsKKwkJCWVsc2UK KwkJCQlzZXFfcHV0cyhtLCAiMCIpOworCQl9IGVsc2UKKwkJCXNlcV9wdXRzKG0sICIwIik7CisJ fQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgaTkxNV9kaXNwbGF5cG9ydF90ZXN0X2Fj dGl2ZV9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsCisJCQkJICAgICAgIHN0cnVjdCBmaWxlICpm aWxlKQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbm9kZS0+aV9wcml2YXRlOworCisJ cmV0dXJuIHNpbmdsZV9vcGVuKGZpbGUsIGk5MTVfZGlzcGxheXBvcnRfdGVzdF9hY3RpdmVfc2hv dywgZGV2KTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgaTkxNV9k aXNwbGF5cG9ydF90ZXN0X2FjdGl2ZV9mb3BzID0geworCS5vd25lciA9IFRISVNfTU9EVUxFLAor CS5vcGVuID0gaTkxNV9kaXNwbGF5cG9ydF90ZXN0X2FjdGl2ZV9vcGVuLAorCS5yZWFkID0gc2Vx X3JlYWQsCisJLmxsc2VlayA9IHNlcV9sc2VlaywKKwkucmVsZWFzZSA9IHNpbmdsZV9yZWxlYXNl LAorCS53cml0ZSA9IGk5MTVfZGlzcGxheXBvcnRfdGVzdF9hY3RpdmVfd3JpdGUKK307CisKK3N0 YXRpYyBpbnQgaTkxNV9kaXNwbGF5cG9ydF90ZXN0X2RhdGFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUg Km0sIHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG0tPnByaXZhdGU7 CisJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKKwlzdHJ1Y3QgbGlzdF9oZWFkICpj b25uZWN0b3JfbGlzdCA9ICZkZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rvcl9saXN0OworCXN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHA7CisKKwlpZiAoIWRldikKKwkJcmV0dXJuIC1FTk9ERVY7CisK KwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNvbm5lY3RvciwgY29ubmVjdG9yX2xpc3QsIGhlYWQpIHsK KworCQlpZiAoY29ubmVjdG9yLT5jb25uZWN0b3JfdHlwZSAhPQorCQkgICAgRFJNX01PREVfQ09O TkVDVE9SX0Rpc3BsYXlQb3J0KQorCQkJY29udGludWU7CisKKwkJaWYgKGNvbm5lY3Rvci0+c3Rh dHVzID09IGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkICYmCisJCSAgICBjb25uZWN0b3ItPmVu Y29kZXIgIT0gTlVMTCkgeworCQkJaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoY29ubmVjdG9y LT5lbmNvZGVyKTsKKwkJCXNlcV9wcmludGYobSwgIiVseCIsIGludGVsX2RwLT5jb21wbGlhbmNl X3Rlc3RfZGF0YSk7CisJCX0gZWxzZQorCQkJc2VxX3B1dHMobSwgIjAiKTsKKwl9CisKKwlyZXR1 cm4gMDsKK30KK3N0YXRpYyBpbnQgaTkxNV9kaXNwbGF5cG9ydF90ZXN0X2RhdGFfb3BlbihzdHJ1 Y3QgaW5vZGUgKmlub2RlLAorCQkJCSAgICAgICBzdHJ1Y3QgZmlsZSAqZmlsZSkKK3sKKwlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gaW5vZGUtPmlfcHJpdmF0ZTsKKworCXJldHVybiBzaW5nbGVf b3BlbihmaWxlLCBpOTE1X2Rpc3BsYXlwb3J0X3Rlc3RfZGF0YV9zaG93LCBkZXYpOworfQorCitz dGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBpOTE1X2Rpc3BsYXlwb3J0X3Rlc3Rf ZGF0YV9mb3BzID0geworCS5vd25lciA9IFRISVNfTU9EVUxFLAorCS5vcGVuID0gaTkxNV9kaXNw bGF5cG9ydF90ZXN0X2RhdGFfb3BlbiwKKwkucmVhZCA9IHNlcV9yZWFkLAorCS5sbHNlZWsgPSBz ZXFfbHNlZWssCisJLnJlbGVhc2UgPSBzaW5nbGVfcmVsZWFzZQorfTsKKworc3RhdGljIGludCBp OTE1X2Rpc3BsYXlwb3J0X3Rlc3RfdHlwZV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAq ZGF0YSkKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gbS0+cHJpdmF0ZTsKKwlzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOworCXN0cnVjdCBsaXN0X2hlYWQgKmNvbm5lY3Rvcl9s aXN0ID0gJmRldi0+bW9kZV9jb25maWcuY29ubmVjdG9yX2xpc3Q7CisJc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcDsKKworCWlmICghZGV2KQorCQlyZXR1cm4gLUVOT0RFVjsKKworCWxpc3RfZm9y X2VhY2hfZW50cnkoY29ubmVjdG9yLCBjb25uZWN0b3JfbGlzdCwgaGVhZCkgeworCisJCWlmIChj b25uZWN0b3ItPmNvbm5lY3Rvcl90eXBlICE9CisJCSAgICBEUk1fTU9ERV9DT05ORUNUT1JfRGlz cGxheVBvcnQpCisJCQljb250aW51ZTsKKworCQlpZiAoY29ubmVjdG9yLT5zdGF0dXMgPT0gY29u bmVjdG9yX3N0YXR1c19jb25uZWN0ZWQgJiYKKwkJICAgIGNvbm5lY3Rvci0+ZW5jb2RlciAhPSBO VUxMKSB7CisJCQlpbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcChjb25uZWN0b3ItPmVuY29kZXIp OworCQkJc2VxX3ByaW50ZihtLCAiJTAybHgiLCBpbnRlbF9kcC0+Y29tcGxpYW5jZV90ZXN0X3R5 cGUpOworCQl9IGVsc2UKKwkJCXNlcV9wdXRzKG0sICIwIik7CisJfQorCisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyBpbnQgaTkxNV9kaXNwbGF5cG9ydF90ZXN0X3R5cGVfb3BlbihzdHJ1Y3QgaW5v ZGUgKmlub2RlLAorCQkJCSAgICAgICBzdHJ1Y3QgZmlsZSAqZmlsZSkKK3sKKwlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gaW5vZGUtPmlfcHJpdmF0ZTsKKworCXJldHVybiBzaW5nbGVfb3Blbihm aWxlLCBpOTE1X2Rpc3BsYXlwb3J0X3Rlc3RfdHlwZV9zaG93LCBkZXYpOworfQorCitzdGF0aWMg Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBpOTE1X2Rpc3BsYXlwb3J0X3Rlc3RfdHlwZV9m b3BzID0geworCS5vd25lciA9IFRISVNfTU9EVUxFLAorCS5vcGVuID0gaTkxNV9kaXNwbGF5cG9y dF90ZXN0X3R5cGVfb3BlbiwKKwkucmVhZCA9IHNlcV9yZWFkLAorCS5sbHNlZWsgPSBzZXFfbHNl ZWssCisJLnJlbGVhc2UgPSBzaW5nbGVfcmVsZWFzZQorfTsKKwogc3RhdGljIHZvaWQgd21fbGF0 ZW5jeV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgY29uc3QgdWludDE2X3Qgd21bOF0pCiB7CiAJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG0tPnByaXZhdGU7CkBAIC00ODMyLDYgKzUwMzgsOSBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfZGVidWdmc19maWxlcyB7CiAJeyJpOTE1X3Nwcl93 bV9sYXRlbmN5IiwgJmk5MTVfc3ByX3dtX2xhdGVuY3lfZm9wc30sCiAJeyJpOTE1X2N1cl93bV9s YXRlbmN5IiwgJmk5MTVfY3VyX3dtX2xhdGVuY3lfZm9wc30sCiAJeyJpOTE1X2ZiY19mYWxzZV9j b2xvciIsICZpOTE1X2ZiY19mY19mb3BzfSwKKwl7Imk5MTVfZHBfdGVzdF9kYXRhIiwgJmk5MTVf ZGlzcGxheXBvcnRfdGVzdF9kYXRhX2ZvcHN9LAorCXsiaTkxNV9kcF90ZXN0X3R5cGUiLCAmaTkx NV9kaXNwbGF5cG9ydF90ZXN0X3R5cGVfZm9wc30sCisJeyJpOTE1X2RwX3Rlc3RfYWN0aXZlIiwg Jmk5MTVfZGlzcGxheXBvcnRfdGVzdF9hY3RpdmVfZm9wc30KIH07CiAKIHZvaWQgaW50ZWxfZGlz cGxheV9jcmNfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQotLSAKMS45LjEKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==