From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: [PATCH 12/24] drm/msm/mdp5: Start using parameters from CRTC state Date: Thu, 23 Mar 2017 15:58:05 +0530 Message-ID: <20170323102817.15017-13-architt@codeaurora.org> References: <20170323102817.15017-1-architt@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170323102817.15017-1-architt@codeaurora.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: robdclark@gmail.com Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: linux-arm-msm@vger.kernel.org SW4gdGhlIGxhc3QgZmV3IGNvbW1pdHMsIHdlJ3ZlIGJlZW4gYWRkaW5nIHBhcmFtcyB0byBtZHA1 X2NydGNfc3RhdGUsIGFuZAphc3NpZ25pbmcgdGhlbSBpbiB0aGUgYXRvbWljX2NoZWNrKCkgZnVu Y3MuIE5vdyBpdCdzIHRpbWUgdG8gYWN0dWFsbHkKc3RhcnQgdXNpbmcgdGhlbS4KClJlbW92ZSB0 aGUgZHVwbGljYXRlZCBwYXJhbXMgZnJvbSB0aGUgbWRwNV9jcnRjIHN0cnVjdCwgYW5kIHN0YXJ0 IHVzaW5nCnRoZW0gaW4gdGhlIG1kcDVfY3J0YyBjb2RlLiBUaGUgbWFqb3JpdHkgb2YgdGhlIHJl ZmVyZW5jZXMgdG8gdGhlc2UgcGFyYW1zCmlzIGluIGNvZGUgdGhhdCBleGVjdXRlcyBhZnRlciB0 aGUgYXRvbWljIHN3YXAgaGFzIG9jY3VycmVkLCBzbyBpdCdzIG9rYXkKdG8gdXNlIGNydGMtPnN0 YXRlIGluIHRoZW0uIFRoZXJlIGFyZSBhIGNvdXBsZSBvZiBsZWdhY3kgTE0gY3Vyc29yIG9wcyB0 aGF0Cm1heSBub3QgdXNlIHRoZSB1cGRhdGVkIHN0YXRlLCBidXQgKEkgdGhpbmspIGl0J3Mgb2th eSB0byBsaXZlIHdpdGggdGhhdC4KCk5vdyB0aGF0IHdlIGR5bmFtaWNhbGx5IGFsbG9jYXRlIGEg bWl4ZXIgdG8gdGhlIENSVEMsIHdlIGNhbiBhbHNvIHJlbW92ZQp0aGUgc3RhdGljIGFzc2lnbm1l bnQgdG8gaXQgaW4gbWRwNV9jcnRjX2luaXQsIGFuZCBhbHNvIGRyb3AgdGhlIGNvZGUgdGhhdApz a2lwcGVkIGluaXQtaW5nIFdCIGJvdW5kIG1peGVycyAodGhvc2Ugd2lsbCBub3cgYmUgcmVqZWN0 ZWQgYnkKbWRwNV9taXhlcl9hc3NpZ24oKSkuCgpTaWduZWQtb2ZmLWJ5OiBBcmNoaXQgVGFuZWph IDxhcmNoaXR0QGNvZGVhdXJvcmEub3JnPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21k cDUvbWRwNV9jcnRjLmMgIHwgMTIyICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogZHJp dmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X2ttcy5jICAgfCAgIDQgLQogZHJpdmVycy9n cHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X21peGVyLmMgfCAgIDQgLQogMyBmaWxlcyBjaGFuZ2Vk LCA2NCBpbnNlcnRpb25zKCspLCA2NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfY3J0Yy5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9t ZHAvbWRwNS9tZHA1X2NydGMuYwppbmRleCBjNThjZjQ0YzA1OGQuLjBjOWZiNjAyZjkzZiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X2NydGMuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfY3J0Yy5jCkBAIC0zMiwxMiArMzIsOCBA QCBzdHJ1Y3QgbWRwNV9jcnRjIHsKIAlpbnQgaWQ7CiAJYm9vbCBlbmFibGVkOwogCi0Jc3RydWN0 IG1kcDVfaHdfbWl4ZXIgKm1peGVyOwogCXNwaW5sb2NrX3QgbG1fbG9jazsgICAgIC8qIHByb3Rl Y3QgUkVHX01EUDVfTE1fKiByZWdpc3RlcnMgKi8KIAotCS8qIENUTCB1c2VkIGZvciB0aGlzIENS VEM6ICovCi0Jc3RydWN0IG1kcDVfY3RsICpjdGw7Ci0KIAkvKiBpZiB0aGVyZSBpcyBhIHBlbmRp bmcgZmxpcCwgdGhlc2Ugd2lsbCBiZSBub24tbnVsbDogKi8KIAlzdHJ1Y3QgZHJtX3BlbmRpbmdf dmJsYW5rX2V2ZW50ICpldmVudDsKIApAQCAtNTksOCArNTUsNiBAQCBzdHJ1Y3QgbWRwNV9jcnRj IHsKIAogCXN0cnVjdCBjb21wbGV0aW9uIHBwX2NvbXBsZXRpb247CiAKLQlib29sIGNtZF9tb2Rl OwotCiAJc3RydWN0IHsKIAkJLyogcHJvdGVjdCBSRUdfTURQNV9MTV9DVVJTT1IqIHJlZ2lzdGVy cyBhbmQgY3Vyc29yIHNjYW5vdXRfYm8qLwogCQlzcGlubG9ja190IGxvY2s7CkBAIC05NSwxMCAr ODksMTEgQEAgc3RhdGljIHZvaWQgcmVxdWVzdF9wcF9kb25lX3BlbmRpbmcoc3RydWN0IGRybV9j cnRjICpjcnRjKQogCiBzdGF0aWMgdTMyIGNydGNfZmx1c2goc3RydWN0IGRybV9jcnRjICpjcnRj LCB1MzIgZmx1c2hfbWFzaykKIHsKLQlzdHJ1Y3QgbWRwNV9jcnRjICptZHA1X2NydGMgPSB0b19t ZHA1X2NydGMoY3J0Yyk7CisJc3RydWN0IG1kcDVfY3J0Y19zdGF0ZSAqbWRwNV9jc3RhdGUgPSB0 b19tZHA1X2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOworCXN0cnVjdCBtZHA1X2N0bCAqY3RsID0g bWRwNV9jc3RhdGUtPmN0bDsKIAogCURCRygiJXM6IGZsdXNoPSUwOHgiLCBjcnRjLT5uYW1lLCBm bHVzaF9tYXNrKTsKLQlyZXR1cm4gbWRwNV9jdGxfY29tbWl0KG1kcDVfY3J0Yy0+Y3RsLCBmbHVz aF9tYXNrKTsKKwlyZXR1cm4gbWRwNV9jdGxfY29tbWl0KGN0bCwgZmx1c2hfbWFzayk7CiB9CiAK IC8qCkBAIC0xMDgsMjAgKzEwMywyMCBAQCBzdGF0aWMgdTMyIGNydGNfZmx1c2goc3RydWN0IGRy bV9jcnRjICpjcnRjLCB1MzIgZmx1c2hfbWFzaykKICAqLwogc3RhdGljIHUzMiBjcnRjX2ZsdXNo X2FsbChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiB7Ci0Jc3RydWN0IG1kcDVfY3J0YyAqbWRwNV9j cnRjID0gdG9fbWRwNV9jcnRjKGNydGMpOworCXN0cnVjdCBtZHA1X2NydGNfc3RhdGUgKm1kcDVf Y3N0YXRlID0gdG9fbWRwNV9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKIAlzdHJ1Y3QgbWRwNV9o d19taXhlciAqbWl4ZXI7CiAJc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7CiAJdWludDMyX3QgZmx1 c2hfbWFzayA9IDA7CiAKIAkvKiB0aGlzIHNob3VsZCBub3QgaGFwcGVuOiAqLwotCWlmIChXQVJO X09OKCFtZHA1X2NydGMtPmN0bCkpCisJaWYgKFdBUk5fT04oIW1kcDVfY3N0YXRlLT5jdGwpKQog CQlyZXR1cm4gMDsKIAogCWRybV9hdG9taWNfY3J0Y19mb3JfZWFjaF9wbGFuZShwbGFuZSwgY3J0 YykgewogCQlmbHVzaF9tYXNrIHw9IG1kcDVfcGxhbmVfZ2V0X2ZsdXNoKHBsYW5lKTsKIAl9CiAK LQltaXhlciA9IG1kcDVfY3J0Yy0+bWl4ZXI7CisJbWl4ZXIgPSBtZHA1X2NzdGF0ZS0+cGlwZWxp bmUubWl4ZXI7CiAJZmx1c2hfbWFzayB8PSBtZHBfY3RsX2ZsdXNoX21hc2tfbG0obWl4ZXItPmxt KTsKIAogCXJldHVybiBjcnRjX2ZsdXNoKGNydGMsIGZsdXNoX21hc2spOwpAQCAtMTMwLDcgKzEy NSw5IEBAIHN0YXRpYyB1MzIgY3J0Y19mbHVzaF9hbGwoc3RydWN0IGRybV9jcnRjICpjcnRjKQog LyogaWYgZmlsZSE9TlVMTCwgdGhpcyBpcyBwcmVjbG9zZSBwb3RlbnRpYWwgY2FuY2VsLWZsaXAg cGF0aCAqLwogc3RhdGljIHZvaWQgY29tcGxldGVfZmxpcChzdHJ1Y3QgZHJtX2NydGMgKmNydGMs IHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKIHsKKwlzdHJ1Y3QgbWRwNV9jcnRjX3N0YXRlICptZHA1 X2NzdGF0ZSA9IHRvX21kcDVfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7CiAJc3RydWN0IG1kcDVf Y3J0YyAqbWRwNV9jcnRjID0gdG9fbWRwNV9jcnRjKGNydGMpOworCXN0cnVjdCBtZHA1X2N0bCAq Y3RsID0gbWRwNV9jc3RhdGUtPmN0bDsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ ZGV2OwogCXN0cnVjdCBkcm1fcGVuZGluZ192YmxhbmtfZXZlbnQgKmV2ZW50OwogCXVuc2lnbmVk IGxvbmcgZmxhZ3M7CkBAIC0xNTAsMTAgKzE0NywxMSBAQCBzdGF0aWMgdm9pZCBjb21wbGV0ZV9m bGlwKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yywgc3RydWN0IGRybV9maWxlICpmaWxlKQogCX0KIAlz cGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPmV2ZW50X2xvY2ssIGZsYWdzKTsKIAotCWlmICht ZHA1X2NydGMtPmN0bCAmJiAhY3J0Yy0+c3RhdGUtPmVuYWJsZSkgeworCWlmIChjdGwgJiYgIWNy dGMtPnN0YXRlLT5lbmFibGUpIHsKIAkJLyogc2V0IFNUQUdFX1VOVVNFRCBmb3IgYWxsIGxheWVy cyAqLwotCQltZHA1X2N0bF9ibGVuZChtZHA1X2NydGMtPmN0bCwgTlVMTCwgMCwgMCk7Ci0JCW1k cDVfY3J0Yy0+Y3RsID0gTlVMTDsKKwkJbWRwNV9jdGxfYmxlbmQoY3RsLCBOVUxMLCAwLCAwKTsK KwkJLyogWFhYOiBXaGF0IHRvIGRvIGhlcmU/ICovCisJCS8qIG1kcDVfY3J0Yy0+Y3RsID0gTlVM TDsgKi8KIAl9CiB9CiAKQEAgLTIwMiwxMyArMjAwLDE1IEBAIHN0YXRpYyBpbmxpbmUgdTMyIG1k cDVfbG1fdXNlX2ZnX2FscGhhX21hc2soZW51bSBtZHBfbWl4ZXJfc3RhZ2VfaWQgc3RhZ2UpCiBz dGF0aWMgdm9pZCBibGVuZF9zZXR1cChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiB7CiAJc3RydWN0 IG1kcDVfY3J0YyAqbWRwNV9jcnRjID0gdG9fbWRwNV9jcnRjKGNydGMpOworCXN0cnVjdCBtZHA1 X2NydGNfc3RhdGUgKm1kcDVfY3N0YXRlID0gdG9fbWRwNV9jcnRjX3N0YXRlKGNydGMtPnN0YXRl KTsKIAlzdHJ1Y3QgbWRwNV9rbXMgKm1kcDVfa21zID0gZ2V0X2ttcyhjcnRjKTsKIAlzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZTsKIAljb25zdCBzdHJ1Y3QgbWRwNV9jZmdfaHcgKmh3X2NmZzsKIAlz dHJ1Y3QgbWRwNV9wbGFuZV9zdGF0ZSAqcHN0YXRlLCAqcHN0YXRlc1tTVEFHRV9NQVggKyAxXSA9 IHtOVUxMfTsKIAljb25zdCBzdHJ1Y3QgbWRwX2Zvcm1hdCAqZm9ybWF0OwotCXN0cnVjdCBtZHA1 X2h3X21peGVyICptaXhlciA9IG1kcDVfY3J0Yy0+bWl4ZXI7CisJc3RydWN0IG1kcDVfaHdfbWl4 ZXIgKm1peGVyID0gbWRwNV9jc3RhdGUtPnBpcGVsaW5lLm1peGVyOwogCXVpbnQzMl90IGxtID0g bWl4ZXItPmxtOworCXN0cnVjdCBtZHA1X2N0bCAqY3RsID0gbWRwNV9jc3RhdGUtPmN0bDsKIAl1 aW50MzJfdCBibGVuZF9vcCwgZmdfYWxwaGEsIGJnX2FscGhhLCBjdGxfYmxlbmRfZmxhZ3MgPSAw OwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJZW51bSBtZHA1X3BpcGUgc3RhZ2VbU1RBR0VfTUFY ICsgMV0gPSB7IFNTUFBfTk9ORSB9OwpAQCAtMjIyLDcgKzIyMiw4IEBAIHN0YXRpYyB2b2lkIGJs ZW5kX3NldHVwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAlzcGluX2xvY2tfaXJxc2F2ZSgmbWRw NV9jcnRjLT5sbV9sb2NrLCBmbGFncyk7CiAKIAkvKiBjdGwgY291bGQgYmUgcmVsZWFzZWQgYWxy ZWFkeSB3aGVuIHdlIGFyZSBzaHV0dGluZyBkb3duOiAqLwotCWlmICghbWRwNV9jcnRjLT5jdGwp CisJLyogWFhYOiBDYW4gdGhpcyBoYXBwZW4gbm93PyAqLworCWlmICghY3RsKQogCQlnb3RvIG91 dDsKIAogCS8qIENvbGxlY3QgYWxsIHBsYW5lIGluZm9ybWF0aW9uICovCkBAIC0yOTksNyArMzAw LDcgQEAgc3RhdGljIHZvaWQgYmxlbmRfc2V0dXAoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCiAJ bWRwNV93cml0ZShtZHA1X2ttcywgUkVHX01EUDVfTE1fQkxFTkRfQ09MT1JfT1VUKGxtKSwgbWl4 ZXJfb3BfbW9kZSk7CiAKLQltZHA1X2N0bF9ibGVuZChtZHA1X2NydGMtPmN0bCwgc3RhZ2UsIHBs YW5lX2NudCwgY3RsX2JsZW5kX2ZsYWdzKTsKKwltZHA1X2N0bF9ibGVuZChjdGwsIHN0YWdlLCBw bGFuZV9jbnQsIGN0bF9ibGVuZF9mbGFncyk7CiAKIG91dDoKIAlzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZtZHA1X2NydGMtPmxtX2xvY2ssIGZsYWdzKTsKQEAgLTMwOCw4ICszMDksOSBAQCBzdGF0 aWMgdm9pZCBibGVuZF9zZXR1cChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiBzdGF0aWMgdm9pZCBt ZHA1X2NydGNfbW9kZV9zZXRfbm9mYihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiB7CiAJc3RydWN0 IG1kcDVfY3J0YyAqbWRwNV9jcnRjID0gdG9fbWRwNV9jcnRjKGNydGMpOworCXN0cnVjdCBtZHA1 X2NydGNfc3RhdGUgKm1kcDVfY3N0YXRlID0gdG9fbWRwNV9jcnRjX3N0YXRlKGNydGMtPnN0YXRl KTsKIAlzdHJ1Y3QgbWRwNV9rbXMgKm1kcDVfa21zID0gZ2V0X2ttcyhjcnRjKTsKLQlzdHJ1Y3Qg bWRwNV9od19taXhlciAqbWl4ZXIgPSBtZHA1X2NydGMtPm1peGVyOworCXN0cnVjdCBtZHA1X2h3 X21peGVyICptaXhlciA9IG1kcDVfY3N0YXRlLT5waXBlbGluZS5taXhlcjsKIAl1aW50MzJfdCBs bSA9IG1peGVyLT5sbTsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCXN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICptb2RlOwpAQCAtMzM4LDYgKzM0MCw3IEBAIHN0YXRpYyB2b2lkIG1kcDVfY3J0Y19t b2RlX3NldF9ub2ZiKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIHN0YXRpYyB2b2lkIG1kcDVfY3J0 Y19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIHsKIAlzdHJ1Y3QgbWRwNV9jcnRjICpt ZHA1X2NydGMgPSB0b19tZHA1X2NydGMoY3J0Yyk7CisJc3RydWN0IG1kcDVfY3J0Y19zdGF0ZSAq bWRwNV9jc3RhdGUgPSB0b19tZHA1X2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwogCXN0cnVjdCBt ZHA1X2ttcyAqbWRwNV9rbXMgPSBnZXRfa21zKGNydGMpOwogCiAJREJHKCIlcyIsIGNydGMtPm5h bWUpOwpAQCAtMzQ1LDcgKzM0OCw3IEBAIHN0YXRpYyB2b2lkIG1kcDVfY3J0Y19kaXNhYmxlKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YykKIAlpZiAoV0FSTl9PTighbWRwNV9jcnRjLT5lbmFibGVkKSkK IAkJcmV0dXJuOwogCi0JaWYgKG1kcDVfY3J0Yy0+Y21kX21vZGUpCisJaWYgKG1kcDVfY3N0YXRl LT5jbWRfbW9kZSkKIAkJbWRwX2lycV91bnJlZ2lzdGVyKCZtZHA1X2ttcy0+YmFzZSwgJm1kcDVf Y3J0Yy0+cHBfZG9uZSk7CiAKIAltZHBfaXJxX3VucmVnaXN0ZXIoJm1kcDVfa21zLT5iYXNlLCAm bWRwNV9jcnRjLT5lcnIpOwpAQCAtMzU3LDYgKzM2MCw3IEBAIHN0YXRpYyB2b2lkIG1kcDVfY3J0 Y19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIHN0YXRpYyB2b2lkIG1kcDVfY3J0Y19l bmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQogewogCXN0cnVjdCBtZHA1X2NydGMgKm1kcDVf Y3J0YyA9IHRvX21kcDVfY3J0YyhjcnRjKTsKKwlzdHJ1Y3QgbWRwNV9jcnRjX3N0YXRlICptZHA1 X2NzdGF0ZSA9IHRvX21kcDVfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7CiAJc3RydWN0IG1kcDVf a21zICptZHA1X2ttcyA9IGdldF9rbXMoY3J0Yyk7CiAKIAlEQkcoIiVzIiwgY3J0Yy0+bmFtZSk7 CkBAIC0zNjcsNyArMzcxLDcgQEAgc3RhdGljIHZvaWQgbWRwNV9jcnRjX2VuYWJsZShzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMpCiAJbWRwNV9lbmFibGUobWRwNV9rbXMpOwogCW1kcF9pcnFfcmVnaXN0 ZXIoJm1kcDVfa21zLT5iYXNlLCAmbWRwNV9jcnRjLT5lcnIpOwogCi0JaWYgKG1kcDVfY3J0Yy0+ Y21kX21vZGUpCisJaWYgKG1kcDVfY3N0YXRlLT5jbWRfbW9kZSkKIAkJbWRwX2lycV9yZWdpc3Rl cigmbWRwNV9rbXMtPmJhc2UsICZtZHA1X2NydGMtPnBwX2RvbmUpOwogCiAJbWRwNV9jcnRjLT5l bmFibGVkID0gdHJ1ZTsKQEAgLTUxNCw2ICs1MTgsNyBAQCBzdGF0aWMgdm9pZCBtZHA1X2NydGNf YXRvbWljX2ZsdXNoKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJCQkgICBzdHJ1Y3QgZHJtX2Ny dGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlKQogewogCXN0cnVjdCBtZHA1X2NydGMgKm1kcDVfY3J0 YyA9IHRvX21kcDVfY3J0YyhjcnRjKTsKKwlzdHJ1Y3QgbWRwNV9jcnRjX3N0YXRlICptZHA1X2Nz dGF0ZSA9IHRvX21kcDVfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7CiAJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IGNydGMtPmRldjsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCkBAIC01MzAsNyAr NTM1LDggQEAgc3RhdGljIHZvaWQgbWRwNV9jcnRjX2F0b21pY19mbHVzaChzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsCiAJICogaXQgbWVhbnMgd2UgYXJlIHRyeWluZyB0byBmbHVzaCBhIENSVEMgd2hv c2Ugc3RhdGUgaXMgZGlzYWJsZWQ6CiAJICogbm90aGluZyBlbHNlIG5lZWRzIHRvIGJlIGRvbmUu CiAJICovCi0JaWYgKHVubGlrZWx5KCFtZHA1X2NydGMtPmN0bCkpCisJLyogWFhYOiBDYW4gdGhp cyBoYXBwZW4gbm93ID8gKi8KKwlpZiAodW5saWtlbHkoIW1kcDVfY3N0YXRlLT5jdGwpKQogCQly ZXR1cm47CiAKIAlibGVuZF9zZXR1cChjcnRjKTsKQEAgLTU0MSwxMSArNTQ3LDE2IEBAIHN0YXRp YyB2b2lkIG1kcDVfY3J0Y19hdG9taWNfZmx1c2goc3RydWN0IGRybV9jcnRjICpjcnRjLAogCSAq IFRoaXMgaXMgc2FmZSBiZWNhdXNlIG5vIHBwX2RvbmUgd2lsbCBoYXBwZW4gYmVmb3JlIFNXIHRy aWdnZXIKIAkgKiBpbiBjb21tYW5kIG1vZGUuCiAJICovCi0JaWYgKG1kcDVfY3J0Yy0+Y21kX21v ZGUpCisJaWYgKG1kcDVfY3N0YXRlLT5jbWRfbW9kZSkKIAkJcmVxdWVzdF9wcF9kb25lX3BlbmRp bmcoY3J0Yyk7CiAKIAltZHA1X2NydGMtPmZsdXNoZWRfbWFzayA9IGNydGNfZmx1c2hfYWxsKGNy dGMpOwogCisJLyogWFhYIGFyZSB3ZSBsZWFraW5nIG91dCBzdGF0ZSBoZXJlPyAqLworCW1kcDVf Y3J0Yy0+dmJsYW5rLmlycW1hc2sgPSBtZHA1X2NzdGF0ZS0+dmJsYW5rX2lycW1hc2s7CisJbWRw NV9jcnRjLT5lcnIuaXJxbWFzayA9IG1kcDVfY3N0YXRlLT5lcnJfaXJxbWFzazsKKwltZHA1X2Ny dGMtPnBwX2RvbmUuaXJxbWFzayA9IG1kcDVfY3N0YXRlLT5wcF9kb25lX2lycW1hc2s7CisKIAly ZXF1ZXN0X3BlbmRpbmcoY3J0YywgUEVORElOR19GTElQKTsKIH0KIApAQCAtNTgwLDExICs1OTEs MTMgQEAgc3RhdGljIGludCBtZHA1X2NydGNfY3Vyc29yX3NldChzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsCiAJCXVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQpCiB7CiAJc3RydWN0IG1kcDVf Y3J0YyAqbWRwNV9jcnRjID0gdG9fbWRwNV9jcnRjKGNydGMpOworCXN0cnVjdCBtZHA1X2NydGNf c3RhdGUgKm1kcDVfY3N0YXRlID0gdG9fbWRwNV9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKIAlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2OwogCXN0cnVjdCBtZHA1X2ttcyAqbWRw NV9rbXMgPSBnZXRfa21zKGNydGMpOwogCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqY3Vyc29yX2Jv LCAqb2xkX2JvID0gTlVMTDsKIAl1aW50MzJfdCBibGVuZGNmZywgc3RyaWRlOwogCXVpbnQ2NF90 IGN1cnNvcl9hZGRyOworCXN0cnVjdCBtZHA1X2N0bCAqY3RsOwogCWludCByZXQsIGxtOwogCWVu dW0gbWRwNV9jdXJzb3JfYWxwaGEgY3VyX2FscGhhID0gQ1VSU09SX0FMUEhBX1BFUl9QSVhFTDsK IAl1aW50MzJfdCBmbHVzaF9tYXNrID0gbWRwX2N0bF9mbHVzaF9tYXNrX2N1cnNvcigwKTsKQEAg LTU5Nyw3ICs2MTAsOCBAQCBzdGF0aWMgaW50IG1kcDVfY3J0Y19jdXJzb3Jfc2V0KHN0cnVjdCBk cm1fY3J0YyAqY3J0YywKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCi0JaWYgKE5VTEwgPT0gbWRw NV9jcnRjLT5jdGwpCisJY3RsID0gbWRwNV9jc3RhdGUtPmN0bDsKKwlpZiAoIWN0bCkKIAkJcmV0 dXJuIC1FSU5WQUw7CiAKIAlpZiAoIWhhbmRsZSkgewpAQCAtNjE0LDcgKzYyOCw3IEBAIHN0YXRp YyBpbnQgbWRwNV9jcnRjX2N1cnNvcl9zZXQoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCWlmIChy ZXQpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JbG0gPSBtZHA1X2NydGMtPm1peGVyLT5sbTsKKwls bSA9IG1kcDVfY3N0YXRlLT5waXBlbGluZS5taXhlci0+bG07CiAJc3RyaWRlID0gd2lkdGggKiBk cm1fZm9ybWF0X3BsYW5lX2NwcChEUk1fRk9STUFUX0FSR0I4ODg4LCAwKTsKIAogCXNwaW5fbG9j a19pcnFzYXZlKCZtZHA1X2NydGMtPmN1cnNvci5sb2NrLCBmbGFncyk7CkBAIC02NDQsNyArNjU4 LDcgQEAgc3RhdGljIGludCBtZHA1X2NydGNfY3Vyc29yX3NldChzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsCiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmbWRwNV9jcnRjLT5jdXJzb3IubG9jaywgZmxh Z3MpOwogCiBzZXRfY3Vyc29yOgotCXJldCA9IG1kcDVfY3RsX3NldF9jdXJzb3IobWRwNV9jcnRj LT5jdGwsIDAsIGN1cnNvcl9lbmFibGUpOworCXJldCA9IG1kcDVfY3RsX3NldF9jdXJzb3IoY3Rs LCAwLCBjdXJzb3JfZW5hYmxlKTsKIAlpZiAocmV0KSB7CiAJCWRldl9lcnIoZGV2LT5kZXYsICJm YWlsZWQgdG8gJXNhYmxlIGN1cnNvcjogJWRcbiIsCiAJCQkJY3Vyc29yX2VuYWJsZSA/ICJlbiIg OiAiZGlzIiwgcmV0KTsKQEAgLTY2Niw3ICs2ODAsOCBAQCBzdGF0aWMgaW50IG1kcDVfY3J0Y19j dXJzb3JfbW92ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIGludCB4LCBpbnQgeSkKIHsKIAlzdHJ1 Y3QgbWRwNV9rbXMgKm1kcDVfa21zID0gZ2V0X2ttcyhjcnRjKTsKIAlzdHJ1Y3QgbWRwNV9jcnRj ICptZHA1X2NydGMgPSB0b19tZHA1X2NydGMoY3J0Yyk7Ci0JdWludDMyX3QgbG0gPSBtZHA1X2Ny dGMtPm1peGVyLT5sbTsKKwlzdHJ1Y3QgbWRwNV9jcnRjX3N0YXRlICptZHA1X2NzdGF0ZSA9IHRv X21kcDVfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7CisJdWludDMyX3QgbG0gPSBtZHA1X2NzdGF0 ZS0+cGlwZWxpbmUubWl4ZXItPmxtOwogCXVpbnQzMl90IGZsdXNoX21hc2sgPSBtZHBfY3RsX2Zs dXNoX21hc2tfY3Vyc29yKDApOwogCXVpbnQzMl90IHJvaV93OwogCXVpbnQzMl90IHJvaV9oOwpA QCAtODI0LDIzICs4MzksMjYgQEAgc3RhdGljIHZvaWQgbWRwNV9jcnRjX3dhaXRfZm9yX3BwX2Rv bmUoc3RydWN0IGRybV9jcnRjICpjcnRjKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBj cnRjLT5kZXY7CiAJc3RydWN0IG1kcDVfY3J0YyAqbWRwNV9jcnRjID0gdG9fbWRwNV9jcnRjKGNy dGMpOworCXN0cnVjdCBtZHA1X2NydGNfc3RhdGUgKm1kcDVfY3N0YXRlID0gdG9fbWRwNV9jcnRj X3N0YXRlKGNydGMtPnN0YXRlKTsKIAlpbnQgcmV0OwogCiAJcmV0ID0gd2FpdF9mb3JfY29tcGxl dGlvbl90aW1lb3V0KCZtZHA1X2NydGMtPnBwX2NvbXBsZXRpb24sCiAJCQkJCQltc2Vjc190b19q aWZmaWVzKDUwKSk7CiAJaWYgKHJldCA9PSAwKQogCQlkZXZfd2FybihkZXYtPmRldiwgInBwIGRv bmUgdGltZSBvdXQsIGxtPSVkXG4iLAotCQkJIG1kcDVfY3J0Yy0+bWl4ZXItPmxtKTsKKwkJCSBt ZHA1X2NzdGF0ZS0+cGlwZWxpbmUubWl4ZXItPmxtKTsKIH0KIAogc3RhdGljIHZvaWQgbWRwNV9j cnRjX3dhaXRfZm9yX2ZsdXNoX2RvbmUoc3RydWN0IGRybV9jcnRjICpjcnRjKQogewogCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7CiAJc3RydWN0IG1kcDVfY3J0YyAqbWRwNV9j cnRjID0gdG9fbWRwNV9jcnRjKGNydGMpOworCXN0cnVjdCBtZHA1X2NydGNfc3RhdGUgKm1kcDVf Y3N0YXRlID0gdG9fbWRwNV9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKKwlzdHJ1Y3QgbWRwNV9j dGwgKmN0bCA9IG1kcDVfY3N0YXRlLT5jdGw7CiAJaW50IHJldDsKIAogCS8qIFNob3VsZCBub3Qg Y2FsbCB0aGlzIGZ1bmN0aW9uIGlmIGNydGMgaXMgZGlzYWJsZWQuICovCi0JaWYgKCFtZHA1X2Ny dGMtPmN0bCkKKwlpZiAoIWN0bCkKIAkJcmV0dXJuOwogCiAJcmV0ID0gZHJtX2NydGNfdmJsYW5r X2dldChjcnRjKTsKQEAgLTg0OCw3ICs4NjYsNyBAQCBzdGF0aWMgdm9pZCBtZHA1X2NydGNfd2Fp dF9mb3JfZmx1c2hfZG9uZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJCXJldHVybjsKIAogCXJl dCA9IHdhaXRfZXZlbnRfdGltZW91dChkZXYtPnZibGFua1tkcm1fY3J0Y19pbmRleChjcnRjKV0u cXVldWUsCi0JCSgobWRwNV9jdGxfZ2V0X2NvbW1pdF9zdGF0dXMobWRwNV9jcnRjLT5jdGwpICYK KwkJKChtZHA1X2N0bF9nZXRfY29tbWl0X3N0YXR1cyhjdGwpICYKIAkJbWRwNV9jcnRjLT5mbHVz aGVkX21hc2spID09IDApLAogCQltc2Vjc190b19qaWZmaWVzKDUwKSk7CiAJaWYgKHJldCA8PSAw KQpAQCAtODY4LDUwICs4ODYsNDEgQEAgdWludDMyX3QgbWRwNV9jcnRjX3ZibGFuayhzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMpCiB2b2lkIG1kcDVfY3J0Y19zZXRfcGlwZWxpbmUoc3RydWN0IGRybV9j cnRjICpjcnRjLAogCQlzdHJ1Y3QgbWRwNV9pbnRlcmZhY2UgKmludGYsIHN0cnVjdCBtZHA1X2N0 bCAqY3RsKQogewotCXN0cnVjdCBtZHA1X2NydGMgKm1kcDVfY3J0YyA9IHRvX21kcDVfY3J0Yyhj cnRjKTsKKwlzdHJ1Y3QgbWRwNV9jcnRjX3N0YXRlICptZHA1X2NzdGF0ZSA9IHRvX21kcDVfY3J0 Y19zdGF0ZShjcnRjLT5zdGF0ZSk7CisJc3RydWN0IG1kcDVfaHdfbWl4ZXIgKm1peGVyID0gbWRw NV9jc3RhdGUtPnBpcGVsaW5lLm1peGVyOwogCXN0cnVjdCBtZHA1X2ttcyAqbWRwNV9rbXMgPSBn ZXRfa21zKGNydGMpOwotCXN0cnVjdCBtZHA1X2h3X21peGVyICptaXhlciA9IG1kcDVfY3J0Yy0+ bWl4ZXI7Ci0KLQkvKiBub3cgdGhhdCB3ZSBrbm93IHdoYXQgaXJxJ3Mgd2Ugd2FudDogKi8KLQlt ZHA1X2NydGMtPmVyci5pcnFtYXNrID0gaW50ZjJlcnIoaW50Zi0+bnVtKTsKLQltZHA1X2NydGMt PnZibGFuay5pcnFtYXNrID0gaW50ZjJ2YmxhbmsobWl4ZXIsIGludGYpOwotCi0JaWYgKChpbnRm LT50eXBlID09IElOVEZfRFNJKSAmJgotCQkoaW50Zi0+bW9kZSA9PSBNRFA1X0lOVEZfRFNJX01P REVfQ09NTUFORCkpIHsKLQkJbWRwNV9jcnRjLT5wcF9kb25lLmlycW1hc2sgPSBsbTJwcGRvbmUo bWl4ZXIpOwotCQltZHA1X2NydGMtPnBwX2RvbmUuaXJxID0gbWRwNV9jcnRjX3BwX2RvbmVfaXJx OwotCQltZHA1X2NydGMtPmNtZF9tb2RlID0gdHJ1ZTsKLQl9IGVsc2UgewotCQltZHA1X2NydGMt PnBwX2RvbmUuaXJxbWFzayA9IDA7Ci0JCW1kcDVfY3J0Yy0+cHBfZG9uZS5pcnEgPSBOVUxMOwot CQltZHA1X2NydGMtPmNtZF9tb2RlID0gZmFsc2U7Ci0JfQogCisJLyogc2hvdWxkIHRoaXMgYmUg ZG9uZSBlbHNld2hlcmUgPyAqLwogCW1kcF9pcnFfdXBkYXRlKCZtZHA1X2ttcy0+YmFzZSk7CiAK LQltZHA1X2NydGMtPmN0bCA9IGN0bDsKIAltZHA1X2N0bF9zZXRfcGlwZWxpbmUoY3RsLCBpbnRm LCBtaXhlcik7CiB9CiAKIHN0cnVjdCBtZHA1X2N0bCAqbWRwNV9jcnRjX2dldF9jdGwoc3RydWN0 IGRybV9jcnRjICpjcnRjKQogewotCXN0cnVjdCBtZHA1X2NydGMgKm1kcDVfY3J0YyA9IHRvX21k cDVfY3J0YyhjcnRjKTsKKwlzdHJ1Y3QgbWRwNV9jcnRjX3N0YXRlICptZHA1X2NzdGF0ZSA9IHRv X21kcDVfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7CiAKLQlyZXR1cm4gbWRwNV9jcnRjLT5jdGw7 CisJcmV0dXJuIG1kcDVfY3N0YXRlLT5jdGw7CiB9CiAKIHN0cnVjdCBtZHA1X2h3X21peGVyICpt ZHA1X2NydGNfZ2V0X21peGVyKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIHsKLQlzdHJ1Y3QgbWRw NV9jcnRjICptZHA1X2NydGMgPSB0b19tZHA1X2NydGMoY3J0Yyk7Ci0JcmV0dXJuIFdBUk5fT04o IWNydGMpIHx8IFdBUk5fT04oIW1kcDVfY3J0Yy0+bWl4ZXIpID8KLQkJRVJSX1BUUigtRUlOVkFM KSA6IG1kcDVfY3J0Yy0+bWl4ZXI7CisJc3RydWN0IG1kcDVfY3J0Y19zdGF0ZSAqbWRwNV9jc3Rh dGU7CisKKwlpZiAoV0FSTl9PTighY3J0YykpCisJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwor CisJbWRwNV9jc3RhdGUgPSB0b19tZHA1X2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOworCisJcmV0 dXJuIFdBUk5fT04oIW1kcDVfY3N0YXRlLT5waXBlbGluZS5taXhlcikgPworCQlFUlJfUFRSKC1F SU5WQUwpIDogbWRwNV9jc3RhdGUtPnBpcGVsaW5lLm1peGVyOwogfQogCiB2b2lkIG1kcDVfY3J0 Y193YWl0X2Zvcl9jb21taXRfZG9uZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiB7Ci0Jc3RydWN0 IG1kcDVfY3J0YyAqbWRwNV9jcnRjID0gdG9fbWRwNV9jcnRjKGNydGMpOworCXN0cnVjdCBtZHA1 X2NydGNfc3RhdGUgKm1kcDVfY3N0YXRlID0gdG9fbWRwNV9jcnRjX3N0YXRlKGNydGMtPnN0YXRl KTsKIAotCWlmIChtZHA1X2NydGMtPmNtZF9tb2RlKQorCWlmIChtZHA1X2NzdGF0ZS0+Y21kX21v ZGUpCiAJCW1kcDVfY3J0Y193YWl0X2Zvcl9wcF9kb25lKGNydGMpOwogCWVsc2UKIAkJbWRwNV9j cnRjX3dhaXRfZm9yX2ZsdXNoX2RvbmUoY3J0Yyk7CkBAIC05MjQsNyArOTMzLDYgQEAgc3RydWN0 IGRybV9jcnRjICptZHA1X2NydGNfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogewogCXN0 cnVjdCBkcm1fY3J0YyAqY3J0YyA9IE5VTEw7CiAJc3RydWN0IG1kcDVfY3J0YyAqbWRwNV9jcnRj OwotCXN0cnVjdCBtZHA1X2ttcyAqbWRwNV9rbXM7CiAKIAltZHA1X2NydGMgPSBremFsbG9jKHNp emVvZigqbWRwNV9jcnRjKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFtZHA1X2NydGMpCkBAIC05NDAs NiArOTQ4LDcgQEAgc3RydWN0IGRybV9jcnRjICptZHA1X2NydGNfaW5pdChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAogCiAJbWRwNV9jcnRjLT52YmxhbmsuaXJxID0gbWRwNV9jcnRjX3ZibGFua19p cnE7CiAJbWRwNV9jcnRjLT5lcnIuaXJxID0gbWRwNV9jcnRjX2Vycl9pcnE7CisJbWRwNV9jcnRj LT5wcF9kb25lLmlycSA9IG1kcDVfY3J0Y19wcF9kb25lX2lycTsKIAogCWlmIChjdXJzb3JfcGxh bmUpCiAJCWRybV9jcnRjX2luaXRfd2l0aF9wbGFuZXMoZGV2LCBjcnRjLCBwbGFuZSwgY3Vyc29y X3BsYW5lLApAQCAtOTU0LDggKzk2Myw1IEBAIHN0cnVjdCBkcm1fY3J0YyAqbWRwNV9jcnRjX2lu aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlkcm1fY3J0Y19oZWxwZXJfYWRkKGNydGMsICZt ZHA1X2NydGNfaGVscGVyX2Z1bmNzKTsKIAlwbGFuZS0+Y3J0YyA9IGNydGM7CiAKLQltZHA1X2tt cyA9IGdldF9rbXMoY3J0Yyk7Ci0JbWRwNV9jcnRjLT5taXhlciA9IG1kcDVfa21zLT5od21peGVy c1tpZF07Ci0KIAlyZXR1cm4gY3J0YzsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9t c20vbWRwL21kcDUvbWRwNV9rbXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRw NV9rbXMuYwppbmRleCA5NTI1Yzk5MGYyZGMuLjEzZTZjOTcyMWM0YyAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X2ttcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vbWRwL21kcDUvbWRwNV9rbXMuYwpAQCAtODg4LDEwICs4ODgsNiBAQCBzdGF0aWMgaW50 IGh3bWl4ZXJfaW5pdChzdHJ1Y3QgbWRwNV9rbXMgKm1kcDVfa21zKQogCQkJcmV0dXJuIHJldDsK IAkJfQogCi0JCS8qIERvbid0IGNyZWF0ZSBMTXMgY29ubmVjdGVkIHRvIFdCIGZvciBub3cgKi8K LQkJaWYgKCFtaXhlcikKLQkJCWNvbnRpbnVlOwotCiAJCW1peGVyLT5pZHggPSBtZHA1X2ttcy0+ bnVtX2h3bWl4ZXJzOwogCQltZHA1X2ttcy0+aHdtaXhlcnNbbWRwNV9rbXMtPm51bV9od21peGVy cysrXSA9IG1peGVyOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21k cDUvbWRwNV9taXhlci5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X21peGVy LmMKaW5kZXggNmYzNTNjNDg4NmU0Li45YmIxZjgyNGIyYTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9taXhlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9t c20vbWRwL21kcDUvbWRwNV9taXhlci5jCkBAIC04NCwxMCArODQsNiBAQCBzdHJ1Y3QgbWRwNV9o d19taXhlciAqbWRwNV9taXhlcl9pbml0KGNvbnN0IHN0cnVjdCBtZHA1X2xtX2luc3RhbmNlICps bSkKIHsKIAlzdHJ1Y3QgbWRwNV9od19taXhlciAqbWl4ZXI7CiAKLQkvKiBpZ25vcmUgV0IgYm91 bmQgbWl4ZXJzIGZvciBub3cgKi8KLQlpZiAobG0tPmNhcHMgJiBNRFBfTE1fQ0FQX1dCKQotCQly ZXR1cm4gTlVMTDsKLQogCW1peGVyID0ga3phbGxvYyhzaXplb2YoKm1peGVyKSwgR0ZQX0tFUk5F TCk7CiAJaWYgKCFtaXhlcikKIAkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Ci0tIApUaGUgUXVh bGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gaXMgYSBtZW1iZXIgb2YgdGhlIENvZGUgQXVy b3JhIEZvcnVtLApob3N0ZWQgYnkgVGhlIExpbnV4IEZvdW5kYXRpb24KCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QK ZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=