From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: [PATCH v2 14/14] drm/i915/dp/mst: Add support for upfront link training for DP MST Date: Tue, 6 Sep 2016 17:13:58 -0700 Message-ID: <1473207238-3490-5-git-send-email-manasi.d.navare@intel.com> References: <1473207238-3490-1-git-send-email-manasi.d.navare@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id E49336E7F0 for ; Wed, 7 Sep 2016 00:14:07 +0000 (UTC) In-Reply-To: <1473207238-3490-1-git-send-email-manasi.d.navare@intel.com> In-Reply-To: <1472767699-31211-15-git-send-email-manasi.d.navare@intel.com> References: <1472767699-31211-15-git-send-email-manasi.d.navare@intel.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 RnJvbTogSmltIEJyaWRlIDxqaW0uYnJpZGVAbGludXguaW50ZWwuY29tPgoKQWRkIHVwZnJvbnQg bGluayB0cmFpbmluZyB0byBpbnRlbF9kcF9tc3RfbW9kZV92YWxpZCgpIHNvIHRoYXQgd2Uga25v dwp0b3BvbG9neSBjb25zdHJhaW50cyBiZWZvcmUgd2UgdmFsaWRhdGUgdGhlIGxlZ2FsaXR5IG9m IG1vZGVzIHRvIGJlCmNoZWNrZWQuCkNhbGwgdGhlIGZ1bmN0aW9uIHRoYXQgbG9vcHMgdGhyb3Vn aCB0aGUgbGluayByYXRlcyBhbmQgbGFuZSBjb3VudHMKc3RhcnRpbmcgZnJvbSBoaWdoZXN0IHN1 cHBvcnRlZCBsaW5rIHJhdGUgYW5kIGxhbmUgY291bnQgZm9yIHRyYWluaW5nCnRoZSBsaW5rIGlu IGNvbXBsaWFuY2Ugd2l0aCBEUCBzcGVjCgp2MjoKKiBSZWJhc2VkIG9uIG5ldyByZXZpc2lvbiBv ZiBsaW5rIHRyYWluaW5nIHBhdGNoIChNYW5hc2kgTmF2YXJlKQoKU2lnbmVkLW9mZi1ieTogTWFu YXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogSmlt IEJyaWRlIDxqaW0uYnJpZGVAbGludXguaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RwLmMgICAgIHwgIDkgKystLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RwX21zdC5jIHwgNzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgfCAgMyArKwogMyBmaWxlcyBjaGFuZ2Vk LCA2MSBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAu YwppbmRleCA3Nzk0MTgwLi4wYzc2NzRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKQEAgLTEz MSw3ICsxMzEsNyBAQCBzdGF0aWMgdm9pZCB2bHZfc3RlYWxfcG93ZXJfc2VxdWVuY2VyKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJICAgICAgZW51bSBwaXBlIHBpcGUpOwogc3RhdGljIHZv aWQgaW50ZWxfZHBfdW5zZXRfZWRpZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKIAotc3Rh dGljIGludAoraW50CiBpbnRlbF9kcF9tYXhfbGlua19idyhzdHJ1Y3QgaW50ZWxfZHAgICppbnRl bF9kcCkKIHsKIAlpbnQgbWF4X2xpbmtfYncgPSBpbnRlbF9kcC0+ZHBjZFtEUF9NQVhfTElOS19S QVRFXTsKQEAgLTE1MCw3ICsxNTAsNyBAQCBpbnRlbF9kcF9tYXhfbGlua19idyhzdHJ1Y3QgaW50 ZWxfZHAgICppbnRlbF9kcCkKIAlyZXR1cm4gbWF4X2xpbmtfYnc7CiB9CiAKLXN0YXRpYyB1OCBp bnRlbF9kcF9tYXhfbGFuZV9jb3VudChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQordTggaW50 ZWxfZHBfbWF4X2xhbmVfY291bnQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIHsKIAlzdHJ1 Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGlu dGVsX2RwKTsKIAl1OCB0ZW1wLCBzb3VyY2VfbWF4LCBzaW5rX21heDsKQEAgLTMxMiw4ICszMTIs NyBAQCBzdGF0aWMgaW50IGludGVyc2VjdF9yYXRlcyhjb25zdCBpbnQgKnNvdXJjZV9yYXRlcywg aW50IHNvdXJjZV9sZW4sCiAJcmV0dXJuIGs7CiB9CiAKLXN0YXRpYyBpbnQgaW50ZWxfZHBfY29t bW9uX3JhdGVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCi0JCQkJIGludCAqY29tbW9uX3Jh dGVzKQoraW50IGludGVsX2RwX2NvbW1vbl9yYXRlcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw LCBpbnQgKmNvbW1vbl9yYXRlcykKIHsKIAljb25zdCBpbnQgKnNvdXJjZV9yYXRlcywgKnNpbmtf cmF0ZXM7CiAJaW50IHNvdXJjZV9sZW4sIHNpbmtfbGVuOwpAQCAtMzM2LDcgKzMzNSw3IEBAIHN0 YXRpYyBpbnQgaW50ZWxfZHBfY29tbW9uX3JhdGVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAs CiAJCQkgICAgICAgY29tbW9uX3JhdGVzKTsKIH0KIAotc3RhdGljIGJvb2wgaW50ZWxfZHBfdXBm cm9udF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCitib29sIGludGVsX2Rw X3VwZnJvbnRfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogewogCXN0cnVj dCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gZHBfdG9fZGlnX3BvcnQoaW50 ZWxfZHApOwogCXN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyID0gJmludGVsX2Rp Z19wb3J0LT5iYXNlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBf bXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9tc3QuYwppbmRleCA1NGE5ZDc2 Li45OGQ0NWE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9tc3Qu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9tc3QuYwpAQCAtNDEsMjEgKzQx LDMwIEBAIHN0YXRpYyBib29sIGludGVsX2RwX21zdF9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlciwKIAlpbnQgYnBwOwogCWludCBsYW5lX2NvdW50LCBzbG90czsK IAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2Nv bmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOwotCWludCBtc3RfcGJuOworCWludCBtc3RfcGJuLCBj b21tb25fbGVuOworCWludCBjb21tb25fcmF0ZXNbRFBfTUFYX1NVUFBPUlRFRF9SQVRFU10gPSB7 fTsKIAogCXBpcGVfY29uZmlnLT5kcF9lbmNvZGVyX2lzX21zdCA9IHRydWU7CiAJcGlwZV9jb25m aWctPmhhc19wY2hfZW5jb2RlciA9IGZhbHNlOwotCWJwcCA9IDI0OworCiAJLyoKLQkgKiBmb3Ig TVNUIHdlIGFsd2F5cyBjb25maWd1cmUgbWF4IGxpbmsgYncgLSB0aGUgc3BlYyBkb2Vzbid0Ci0J ICogc2VlbSB0byBzdWdnZXN0IHdlIHNob3VsZCBkbyBvdGhlcndpc2UuCisJICogRm9yIE1TVCB3 ZSBhbHdheXMgY29uZmlndXJlIGZvciB0aGUgbWF4aW11bSB0cmFpbmFibGUgbGluayBidyAtCisJ ICogdGhlIHNwZWMgZG9lc24ndCBzZWVtIHRvIHN1Z2dlc3Qgd2Ugc2hvdWxkIGRvIG90aGVyd2lz ZS4gIFRoZQorCSAqIGNhbGxzIHRvIGludGVsX2RwX21heF9sYW5lX2NvdW50KCkgYW5kIGludGVs X2RwX2NvbW1vbl9yYXRlcygpCisJICogYm90aCB0YWtlIHN1Y2Nlc3NmdWwgdXBmcm9udCBsaW5r IHRyYWluaW5nIGludG8gYWNjb3VudCwgYW5kCisJICogcmV0dXJuIHRoZSBEaXNwbGF5UG9ydCBt YXggc3VwcG9ydGVkIHZhbHVlcyBpbiB0aGUgZXZlbnQgdGhhdAorCSAqIHVwZnJvbnQgbGluayB0 cmFpbmluZyB3YXMgbm90IGRvbmUuCiAJICovCi0JbGFuZV9jb3VudCA9IGRybV9kcF9tYXhfbGFu ZV9jb3VudChpbnRlbF9kcC0+ZHBjZCk7CisJbGFuZV9jb3VudCA9IGludGVsX2RwX21heF9sYW5l X2NvdW50KGludGVsX2RwKTsKIAogCXBpcGVfY29uZmlnLT5sYW5lX2NvdW50ID0gbGFuZV9jb3Vu dDsKIAotCXBpcGVfY29uZmlnLT5waXBlX2JwcCA9IDI0OwotCXBpcGVfY29uZmlnLT5wb3J0X2Ns b2NrID0gaW50ZWxfZHBfbWF4X2xpbmtfcmF0ZShpbnRlbF9kcCk7CisJcGlwZV9jb25maWctPnBp cGVfYnBwID0gYnBwID0gMjQ7CisJY29tbW9uX2xlbiA9IGludGVsX2RwX2NvbW1vbl9yYXRlcyhp bnRlbF9kcCwgY29tbW9uX3JhdGVzKTsKKwlwaXBlX2NvbmZpZy0+cG9ydF9jbG9jayA9IGNvbW1v bl9yYXRlc1tjb21tb25fbGVuIC0gMV07CisKKwlEUk1fREVCVUdfS01TKCJEUCBNU1QgbGluayBj b25maWd1cmVkIGZvciAlZCBsYW5lcyBAICVkLlxuIiwKKwkJICAgICAgcGlwZV9jb25maWctPmxh bmVfY291bnQsIHBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrKTsKIAogCXN0YXRlID0gcGlwZV9jb25m aWctPmJhc2Uuc3RhdGU7CiAKQEAgLTEzNyw2ICsxNDYsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9t c3RfcHJlX2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAllbnVtIHBv cnQgcG9ydCA9IGludGVsX2RpZ19wb3J0LT5wb3J0OwogCXN0cnVjdCBpbnRlbF9jb25uZWN0b3Ig KmNvbm5lY3RvciA9CiAJCXRvX2ludGVsX2Nvbm5lY3Rvcihjb25uX3N0YXRlLT5jb25uZWN0b3Ip OworCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsID0gcGlwZV9jb25maWctPnNoYXJlZF9k cGxsOworCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbF9jb25maWcgdG1wX3BsbF9jb25maWc7CiAJ aW50IHJldDsKIAl1aW50MzJfdCB0ZW1wOwogCWludCBzbG90czsKQEAgLTE1MCwyMSArMTYxLDIz IEBAIHN0YXRpYyB2b2lkIGludGVsX21zdF9wcmVfZW5hYmxlX2RwKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLAogCURSTV9ERUJVR19LTVMoIiVkXG4iLCBpbnRlbF9kcC0+YWN0aXZlX21z dF9saW5rcyk7CiAKIAlpZiAoaW50ZWxfZHAtPmFjdGl2ZV9tc3RfbGlua3MgPT0gMCkgewotCQlp bnRlbF9kZGlfY2xrX3NlbGVjdCgmaW50ZWxfZGlnX3BvcnQtPmJhc2UsCi0JCQkJICAgICBwaXBl X2NvbmZpZy0+c2hhcmVkX2RwbGwpOwotCi0JCWludGVsX3ByZXBhcmVfZHBfZGRpX2J1ZmZlcnMo JmludGVsX2RpZ19wb3J0LT5iYXNlKTsKLQkJaW50ZWxfZHBfc2V0X2xpbmtfcGFyYW1zKGludGVs X2RwLAotCQkJCQkgcGlwZV9jb25maWctPnBvcnRfY2xvY2ssCi0JCQkJCSBwaXBlX2NvbmZpZy0+ bGFuZV9jb3VudCwKLQkJCQkJIHRydWUpOwotCi0JCWludGVsX2RkaV9pbml0X2RwX2J1Zl9yZWco JmludGVsX2RpZ19wb3J0LT5iYXNlKTsKIAotCQlpbnRlbF9kcF9zaW5rX2RwbXMoaW50ZWxfZHAs IERSTV9NT0RFX0RQTVNfT04pOworCQkvKiBEaXNhYmxlIHRoZSBQTEwgc2luY2Ugd2UgbmVlZCB0 byBhY3F1aXJlIHRoZSBQTEwKKwkJICogYmFzZWQgb24gdGhlIGxpbmsgcmF0ZSBpbiB0aGUgbGlu ayB0cmFpbmluZyBzZXF1ZW5jZQorCQkgKi8KKwkJdG1wX3BsbF9jb25maWcgPSBwbGwtPmNvbmZp ZzsKKwkJcGxsLT5mdW5jcy5kaXNhYmxlKGRldl9wcml2LCBwbGwpOworCQlwbGwtPmNvbmZpZy5j cnRjX21hc2sgPSAwOworCisJCS8qIElmIExpbmsgVHJhaW5pbmcgZmFpbHMsIHNlbmQgYSB1ZXZl bnQgdG8gZ2VuZXJhdGUgYQorCQkgKmhvdHBsdWcKKwkJICovCisJCWlmICghKGludGVsX2RkaV9s aW5rX3RyYWluKGludGVsX2RwLCBwaXBlX2NvbmZpZy0+cG9ydF9jbG9jaywKKwkJCQkJICAgcGlw ZV9jb25maWctPmxhbmVfY291bnQsIHRydWUsCisJCQkJCSAgIGZhbHNlKSkpCisJCQlkcm1fa21z X2hlbHBlcl9ob3RwbHVnX2V2ZW50KGVuY29kZXItPmJhc2UuZGV2KTsKKwkJcGxsLT5jb25maWcg PSB0bXBfcGxsX2NvbmZpZzsKIAotCQlpbnRlbF9kcF9zdGFydF9saW5rX3RyYWluKGludGVsX2Rw KTsKLQkJaW50ZWxfZHBfc3RvcF9saW5rX3RyYWluKGludGVsX2RwKTsKIAl9CiAKIAlyZXQgPSBk cm1fZHBfbXN0X2FsbG9jYXRlX3ZjcGkoJmludGVsX2RwLT5tc3RfbWdyLApAQCAtMzM2LDYgKzM0 OSwyNyBAQCBpbnRlbF9kcF9tc3RfbW9kZV92YWxpZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yLAogCQkJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpCiB7CiAJaW50IG1heF9k b3RjbGsgPSB0b19pOTE1KGNvbm5lY3Rvci0+ZGV2KS0+bWF4X2RvdGNsa19mcmVxOworCXN0cnVj dCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvciA9IHRvX2ludGVsX2Nvbm5lY3Rvcihj b25uZWN0b3IpOworCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBpbnRlbF9jb25uZWN0b3It Pm1zdF9wb3J0OworCisJaWYgKGludGVsX2RwLT51cGZyb250X2xpbmtfdHJhaW4gJiYgIWludGVs X2RwLT51cGZyb250X2RvbmUpIHsKKwkJYm9vbCBkb191cGZyb250X2xpbmtfdHJhaW47CisKKwkJ ZG9fdXBmcm9udF9saW5rX3RyYWluID0gaW50ZWxfZHAtPmNvbXBsaWFuY2VfdGVzdF90eXBlICE9 CisJCQlEUF9URVNUX0xJTktfVFJBSU5JTkc7CisJCWlmIChkb191cGZyb250X2xpbmtfdHJhaW4p IHsKKwkJCWludGVsX2RwLT51cGZyb250X2RvbmUgPQorCQkJCWludGVsX2RwX3VwZnJvbnRfbGlu a190cmFpbihpbnRlbF9kcCk7CisJCQlpZiAoaW50ZWxfZHAtPnVwZnJvbnRfZG9uZSkgeworCQkJ CURSTV9ERUJVR19LTVMoIk1TVCB1cGZyb250IHRyYWluZWQgYXQgIgorCQkJCQkgICAgICAiJWQg bGFuZXMgQCAlZC4iLAorCQkJCQkgICAgICBpbnRlbF9kcC0+bWF4X2xhbmVzX3VwZnJvbnQsCisJ CQkJCSAgICAgIGludGVsX2RwLT5tYXhfbGlua19yYXRlX3VwZnJvbnQpOworCQkJfSBlbHNlCisJ CQkJRFJNX0RFQlVHX0tNUygiTVNUIHVwZnJvbnQgbGluayB0cmFpbmluZyAiCisJCQkJCSAgICAg ICJmYWlsZWQuIik7CisJCX0KKwl9CiAKIAkvKiBUT0RPIC0gdmFsaWRhdGUgbW9kZSBhZ2FpbnN0 IGF2YWlsYWJsZSBQQk4gZm9yIGxpbmsgKi8KIAlpZiAobW9kZS0+Y2xvY2sgPCAxMDAwMCkKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggYTJiYmY2OC4uMzRhZjNlOCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmgKQEAgLTE0MTYsNiArMTQxNiw3IEBAIHZvaWQgaW50ZWxfZWRwX3BhbmVs X29mZihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKIHZvaWQgaW50ZWxfZHBfYWRkX3Byb3Bl cnRpZXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm5lY3Rvcik7CiB2b2lkIGludGVsX2RwX21zdF9zdXNwZW5kKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpOwogdm9pZCBpbnRlbF9kcF9tc3RfcmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwor dTggaW50ZWxfZHBfbWF4X2xhbmVfY291bnQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7CiBp bnQgaW50ZWxfZHBfbWF4X2xpbmtfcmF0ZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKIGlu dCBpbnRlbF9kcF9saW5rX3JhdGVfaW5kZXgoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgaW50 ICpjb21tb25fcmF0ZXMsCiAJCQkgICAgIGludCBsaW5rX3JhdGUpOwpAQCAtMTQ0OCw2ICsxNDQ5 LDggQEAgaW50ZWxfZHBfcHJlX2VtcGhhc2lzX21heChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw LCB1aW50OF90IHZvbHRhZ2Vfc3dpbmcpOwogdm9pZCBpbnRlbF9kcF9jb21wdXRlX3JhdGUoc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCwgaW50IHBvcnRfY2xvY2ssCiAJCQkgICB1aW50OF90ICps aW5rX2J3LCB1aW50OF90ICpyYXRlX3NlbGVjdCk7CiBib29sIGludGVsX2RwX3NvdXJjZV9zdXBw b3J0c19oYnIyKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOworaW50IGludGVsX2RwX2NvbW1v bl9yYXRlcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBpbnQgKmNvbW1vbl9yYXRlcyk7Citi b29sIGludGVsX2RwX3VwZnJvbnRfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw KTsKIGJvb2wKIGludGVsX2RwX2dldF9saW5rX3N0YXR1cyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwLCB1aW50OF90IGxpbmtfc3RhdHVzW0RQX0xJTktfU1RBVFVTX1NJWkVdKTsKIAotLSAKMS45 LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVs LWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=