From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id B55D1C64ED8 for ; Mon, 27 Feb 2023 20:52:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=NjznCvbWmQXO7a/6DGSzWaAOt4oa8Yg+C9h1kemKwtM=; b=FbtViR8TBYyRSo pebMXhsS48TQEqasDVGVX8IXAV2DH6rQCohNJgtqpc8WIR1j/v9FIymORQ1hitO9POEXLnhcS7U90 hvmDoK2v61zDrgpVEdYdmquJSs9lcK/LmpCo6g3Z/Fj+yej0wwQxcvhEQg6IlSgpe2vFfN8MgpXdH Plg4GFbKbat7TsBE+OFLTVSBkuDl8vgXPjBuDSFMcQ0WZJo9ZqXc83XTpbKCxT5tN+9T3JOnVL/Jn 1bflA20qiT+4ObxJtkY1W9IYY9Mgh0GMYOmEBpoa3YD/5qUxDBLOXowwDCiSksi1DlrmpEGPzhvDX 3Lpw9LpHXwoScSSehwbA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pWkSY-00BCjm-FM; Mon, 27 Feb 2023 20:50:58 +0000 Received: from smtprelay04.ispgateway.de ([80.67.31.27]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pWkSU-00BCib-H2 for linux-arm-kernel@lists.infradead.org; Mon, 27 Feb 2023 20:50:56 +0000 Received: from [92.206.161.29] (helo=note-book.lan) by smtprelay04.ispgateway.de with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1pWkSL-0006TA-3S; Mon, 27 Feb 2023 21:50:45 +0100 From: =?UTF-8?q?Andr=C3=A9=20Apitzsch?= To: Nick Dyer , Dmitry Torokhov , Rob Herring , Krzysztof Kozlowski , Nicolas Ferre , Alexandre Belloni , Claudiu Beznea , Linus Walleij , linux-input@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: ~postmarketos/upstreaming@lists.sr.ht, =?UTF-8?q?Andr=C3=A9=20Apitzsch?= Subject: [PATCH 2/2] Input: atmel_mxt_ts - support capacitive keys Date: Mon, 27 Feb 2023 21:50:35 +0100 Message-Id: <20230227205035.18551-2-git@apitzsch.eu> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230227205035.18551-1-git@apitzsch.eu> References: <20230227205035.18551-1-git@apitzsch.eu> MIME-Version: 1.0 X-Df-Sender: YW5kcmVAYXBpdHpzY2guZXU= X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230227_125054_585126_E118CA74 X-CRM114-Status: GOOD ( 18.01 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org QWRkIHN1cHBvcnQgZm9yIHRvdWNoIGtleXMgZm91bmQgaW4gc29tZSBBdG1lbCB0b3VjaCBjb250 cm9sbGVyCmNvbmZpZ3VyYXRpb25zLgoKU2lnbmVkLW9mZi1ieTogQW5kcsOpIEFwaXR6c2NoIDxn aXRAYXBpdHpzY2guZXU+Ci0tLQogZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9hdG1lbF9teHRf dHMuYyB8IDg1ICsrKysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDg1IGlu c2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2F0bWVs X214dF90cy5jIGIvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9hdG1lbF9teHRfdHMuYwppbmRl eCA5OTZiZjQzNGUxY2IuLmViMzY4ZGQxYWJmMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC90 b3VjaHNjcmVlbi9hdG1lbF9teHRfdHMuYworKysgYi9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVu L2F0bWVsX214dF90cy5jCkBAIC01NSw2ICs1NSw3IEBACiAjZGVmaW5lIE1YVF9UT1VDSF9LRVlB UlJBWV9UMTUJCTE1CiAjZGVmaW5lIE1YVF9UT1VDSF9QUk9YSU1JVFlfVDIzCQkyMwogI2RlZmlu ZSBNWFRfVE9VQ0hfUFJPWEtFWV9UNTIJCTUyCisjZGVmaW5lIE1YVF9UT1VDSF9QVENfS0VZU19U OTcJCTk3CiAjZGVmaW5lIE1YVF9QUk9DSV9HUklQRkFDRV9UMjAJCTIwCiAjZGVmaW5lIE1YVF9Q Uk9DR19OT0lTRV9UMjIJCTIyCiAjZGVmaW5lIE1YVF9QUk9DSV9PTkVUT1VDSF9UMjQJCTI0CkBA IC0zMjYsOSArMzI3LDEzIEBAIHN0cnVjdCBteHRfZGF0YSB7CiAJdTE2IFQ3MV9hZGRyZXNzOwog CXU4IFQ5X3JlcG9ydGlkX21pbjsKIAl1OCBUOV9yZXBvcnRpZF9tYXg7CisJdTggVDE1X3JlcG9y dGlkX21pbjsKKwl1OCBUMTVfcmVwb3J0aWRfbWF4OwogCXUxNiBUMThfYWRkcmVzczsKIAl1OCBU MTlfcmVwb3J0aWQ7CiAJdTE2IFQ0NF9hZGRyZXNzOworCXU4IFQ5N19yZXBvcnRpZF9taW47CisJ dTggVDk3X3JlcG9ydGlkX21heDsKIAl1OCBUMTAwX3JlcG9ydGlkX21pbjsKIAl1OCBUMTAwX3Jl cG9ydGlkX21heDsKIApAQCAtMzQ0LDYgKzM0OSw5IEBAIHN0cnVjdCBteHRfZGF0YSB7CiAJdTMy ICp0MTlfa2V5bWFwOwogCXVuc2lnbmVkIGludCB0MTlfbnVtX2tleXM7CiAKKwl1MzIgKnQxNV9r ZXltYXA7CisJdW5zaWduZWQgaW50IHQxNV9udW1fa2V5czsKKwogCWVudW0gbXh0X3N1c3BlbmRf bW9kZSBzdXNwZW5kX21vZGU7CiAKIAl1MzIgd2FrZXVwX21ldGhvZDsKQEAgLTM3NSw2ICszODMs NyBAQCBzdGF0aWMgYm9vbCBteHRfb2JqZWN0X3JlYWRhYmxlKHVuc2lnbmVkIGludCB0eXBlKQog CWNhc2UgTVhUX1RPVUNIX0tFWUFSUkFZX1QxNToKIAljYXNlIE1YVF9UT1VDSF9QUk9YSU1JVFlf VDIzOgogCWNhc2UgTVhUX1RPVUNIX1BST1hLRVlfVDUyOgorCWNhc2UgTVhUX1RPVUNIX1BUQ19L RVlTX1Q5NzoKIAljYXNlIE1YVF9UT1VDSF9NVUxUSVRPVUNIU0NSRUVOX1QxMDA6CiAJY2FzZSBN WFRfUFJPQ0lfR1JJUEZBQ0VfVDIwOgogCWNhc2UgTVhUX1BST0NHX05PSVNFX1QyMjoKQEAgLTg5 MSw2ICs5MDAsMjUgQEAgc3RhdGljIHZvaWQgbXh0X3Byb2NfdDlfbWVzc2FnZShzdHJ1Y3QgbXh0 X2RhdGEgKmRhdGEsIHU4ICptZXNzYWdlKQogCWRhdGEtPnVwZGF0ZV9pbnB1dCA9IHRydWU7CiB9 CiAKK3N0YXRpYyB2b2lkIG14dF9wcm9jX3QxNV9tZXNzYWdlcyhzdHJ1Y3QgbXh0X2RhdGEgKmRh dGEsIHU4ICptZXNzYWdlKQoreworCXN0cnVjdCBpbnB1dF9kZXYgKmlucHV0X2RldiA9IGRhdGEt PmlucHV0X2RldjsKKwl1bnNpZ25lZCBsb25nIGtleXN0YXRlcyA9IGdldF91bmFsaWduZWRfbGUz MigmbWVzc2FnZVsyXSk7CisJaW50IGtleTsKKworCWZvciAoa2V5ID0gMDsga2V5IDwgZGF0YS0+ dDE1X251bV9rZXlzOyBrZXkrKykgeworCQlpbnB1dF9yZXBvcnRfa2V5KGlucHV0X2RldiwgZGF0 YS0+dDE1X2tleW1hcFtrZXldLAorCQkJISEoa2V5c3RhdGVzICYgQklUKGtleSkpKTsKKwl9CisK KwlkYXRhLT51cGRhdGVfaW5wdXQgPSB0cnVlOworfQorCitzdGF0aWMgdm9pZCBteHRfcHJvY190 OTdfbWVzc2FnZXMoc3RydWN0IG14dF9kYXRhICpkYXRhLCB1OCAqbWVzc2FnZSkKK3sKKwlteHRf cHJvY190MTVfbWVzc2FnZXMoZGF0YSwgbWVzc2FnZSk7Cit9CisKIHN0YXRpYyB2b2lkIG14dF9w cm9jX3QxMDBfbWVzc2FnZShzdHJ1Y3QgbXh0X2RhdGEgKmRhdGEsIHU4ICptZXNzYWdlKQogewog CXN0cnVjdCBkZXZpY2UgKmRldiA9ICZkYXRhLT5jbGllbnQtPmRldjsKQEAgLTEwMTcsNiArMTA0 NSwxMiBAQCBzdGF0aWMgaW50IG14dF9wcm9jX21lc3NhZ2Uoc3RydWN0IG14dF9kYXRhICpkYXRh LCB1OCAqbWVzc2FnZSkKIAl9IGVsc2UgaWYgKHJlcG9ydF9pZCA+PSBkYXRhLT5UOV9yZXBvcnRp ZF9taW4gJiYKIAkJICAgcmVwb3J0X2lkIDw9IGRhdGEtPlQ5X3JlcG9ydGlkX21heCkgewogCQlt eHRfcHJvY190OV9tZXNzYWdlKGRhdGEsIG1lc3NhZ2UpOworCX0gZWxzZSBpZiAocmVwb3J0X2lk ID49IGRhdGEtPlQxNV9yZXBvcnRpZF9taW4gJiYKKwkJICAgcmVwb3J0X2lkIDw9IGRhdGEtPlQx NV9yZXBvcnRpZF9tYXgpIHsKKwkJbXh0X3Byb2NfdDE1X21lc3NhZ2VzKGRhdGEsIG1lc3NhZ2Up OworCX0gZWxzZSBpZiAocmVwb3J0X2lkID49IGRhdGEtPlQ5N19yZXBvcnRpZF9taW4gJiYKKwkJ ICAgcmVwb3J0X2lkIDw9IGRhdGEtPlQ5N19yZXBvcnRpZF9tYXgpIHsKKwkJbXh0X3Byb2NfdDk3 X21lc3NhZ2VzKGRhdGEsIG1lc3NhZ2UpOwogCX0gZWxzZSBpZiAocmVwb3J0X2lkID49IGRhdGEt PlQxMDBfcmVwb3J0aWRfbWluICYmCiAJCSAgIHJlcG9ydF9pZCA8PSBkYXRhLT5UMTAwX3JlcG9y dGlkX21heCkgewogCQlteHRfcHJvY190MTAwX21lc3NhZ2UoZGF0YSwgbWVzc2FnZSk7CkBAIC0x Njg5LDkgKzE3MjMsMTMgQEAgc3RhdGljIHZvaWQgbXh0X2ZyZWVfb2JqZWN0X3RhYmxlKHN0cnVj dCBteHRfZGF0YSAqZGF0YSkKIAlkYXRhLT5UNzFfYWRkcmVzcyA9IDA7CiAJZGF0YS0+VDlfcmVw b3J0aWRfbWluID0gMDsKIAlkYXRhLT5UOV9yZXBvcnRpZF9tYXggPSAwOworCWRhdGEtPlQxNV9y ZXBvcnRpZF9taW4gPSAwOworCWRhdGEtPlQxNV9yZXBvcnRpZF9tYXggPSAwOwogCWRhdGEtPlQx OF9hZGRyZXNzID0gMDsKIAlkYXRhLT5UMTlfcmVwb3J0aWQgPSAwOwogCWRhdGEtPlQ0NF9hZGRy ZXNzID0gMDsKKwlkYXRhLT5UOTdfcmVwb3J0aWRfbWluID0gMDsKKwlkYXRhLT5UOTdfcmVwb3J0 aWRfbWF4ID0gMDsKIAlkYXRhLT5UMTAwX3JlcG9ydGlkX21pbiA9IDA7CiAJZGF0YS0+VDEwMF9y ZXBvcnRpZF9tYXggPSAwOwogCWRhdGEtPm1heF9yZXBvcnRpZCA9IDA7CkBAIC0xNzY0LDYgKzE4 MDIsMTAgQEAgc3RhdGljIGludCBteHRfcGFyc2Vfb2JqZWN0X3RhYmxlKHN0cnVjdCBteHRfZGF0 YSAqZGF0YSwKIAkJCQkJCW9iamVjdC0+bnVtX3JlcG9ydF9pZHMgLSAxOwogCQkJZGF0YS0+bnVt X3RvdWNoaWRzID0gb2JqZWN0LT5udW1fcmVwb3J0X2lkczsKIAkJCWJyZWFrOworCQljYXNlIE1Y VF9UT1VDSF9LRVlBUlJBWV9UMTU6CisJCQlkYXRhLT5UMTVfcmVwb3J0aWRfbWluID0gbWluX2lk OworCQkJZGF0YS0+VDE1X3JlcG9ydGlkX21heCA9IG1heF9pZDsKKwkJCWJyZWFrOwogCQljYXNl IE1YVF9TUFRfQ09NTVNDT05GSUdfVDE4OgogCQkJZGF0YS0+VDE4X2FkZHJlc3MgPSBvYmplY3Qt PnN0YXJ0X2FkZHJlc3M7CiAJCQlicmVhazsKQEAgLTE3NzMsNiArMTgxNSwxMCBAQCBzdGF0aWMg aW50IG14dF9wYXJzZV9vYmplY3RfdGFibGUoc3RydWN0IG14dF9kYXRhICpkYXRhLAogCQljYXNl IE1YVF9TUFRfR1BJT1BXTV9UMTk6CiAJCQlkYXRhLT5UMTlfcmVwb3J0aWQgPSBtaW5faWQ7CiAJ CQlicmVhazsKKwkJY2FzZSBNWFRfVE9VQ0hfUFRDX0tFWVNfVDk3OgorCQkJZGF0YS0+VDk3X3Jl cG9ydGlkX21pbiA9IG1pbl9pZDsKKwkJCWRhdGEtPlQ5N19yZXBvcnRpZF9tYXggPSBtYXhfaWQ7 CisJCQlicmVhazsKIAkJY2FzZSBNWFRfVE9VQ0hfTVVMVElUT1VDSFNDUkVFTl9UMTAwOgogCQkJ ZGF0YS0+bXVsdGl0b3VjaCA9IE1YVF9UT1VDSF9NVUxUSVRPVUNIU0NSRUVOX1QxMDA7CiAJCQlk YXRhLT5UMTAwX3JlcG9ydGlkX21pbiA9IG1pbl9pZDsKQEAgLTIwNTAsNiArMjA5Niw3IEBAIHN0 YXRpYyBpbnQgbXh0X2luaXRpYWxpemVfaW5wdXRfZGV2aWNlKHN0cnVjdCBteHRfZGF0YSAqZGF0 YSkKIAlpbnQgZXJyb3I7CiAJdW5zaWduZWQgaW50IG51bV9tdF9zbG90czsKIAl1bnNpZ25lZCBp bnQgbXRfZmxhZ3MgPSAwOworCWludCBpOwogCiAJc3dpdGNoIChkYXRhLT5tdWx0aXRvdWNoKSB7 CiAJY2FzZSBNWFRfVE9VQ0hfTVVMVElfVDk6CkBAIC0yMDk1LDYgKzIxNDIsMTAgQEAgc3RhdGlj IGludCBteHRfaW5pdGlhbGl6ZV9pbnB1dF9kZXZpY2Uoc3RydWN0IG14dF9kYXRhICpkYXRhKQog CWlucHV0X2Rldi0+b3BlbiA9IG14dF9pbnB1dF9vcGVuOwogCWlucHV0X2Rldi0+Y2xvc2UgPSBt eHRfaW5wdXRfY2xvc2U7CiAKKwlpbnB1dF9kZXYtPmtleWNvZGUgPSBkYXRhLT50MTVfa2V5bWFw OworCWlucHV0X2Rldi0+a2V5Y29kZW1heCA9IGRhdGEtPnQxNV9udW1fa2V5czsKKwlpbnB1dF9k ZXYtPmtleWNvZGVzaXplID0gc2l6ZW9mKGRhdGEtPnQxNV9rZXltYXBbMF0pOworCiAJaW5wdXRf c2V0X2NhcGFiaWxpdHkoaW5wdXRfZGV2LCBFVl9LRVksIEJUTl9UT1VDSCk7CiAKIAkvKiBGb3Ig c2luZ2xlIHRvdWNoICovCkBAIC0yMTYyLDYgKzIyMTMsMTIgQEAgc3RhdGljIGludCBteHRfaW5p dGlhbGl6ZV9pbnB1dF9kZXZpY2Uoc3RydWN0IG14dF9kYXRhICpkYXRhKQogCQkJCSAgICAgMCwg MjU1LCAwLCAwKTsKIAl9CiAKKwkvKiBGb3IgVDE1IGFuZCBUOTcgS2V5IEFycmF5ICovCisJaWYg KGRhdGEtPlQxNV9yZXBvcnRpZF9taW4gfHwgZGF0YS0+VDk3X3JlcG9ydGlkX21pbikgeworCQlm b3IgKGkgPSAwOyBpIDwgZGF0YS0+dDE1X251bV9rZXlzOyBpKyspCisJCQlpbnB1dF9zZXRfY2Fw YWJpbGl0eShpbnB1dF9kZXYsIEVWX0tFWSwgZGF0YS0+dDE1X2tleW1hcFtpXSk7CisJfQorCiAJ aW5wdXRfc2V0X2RydmRhdGEoaW5wdXRfZGV2LCBkYXRhKTsKIAogCWVycm9yID0gaW5wdXRfcmVn aXN0ZXJfZGV2aWNlKGlucHV0X2Rldik7CkBAIC0zMDgwLDggKzMxMzcsMTAgQEAgc3RhdGljIHZv aWQgbXh0X2lucHV0X2Nsb3NlKHN0cnVjdCBpbnB1dF9kZXYgKmRldikKIHN0YXRpYyBpbnQgbXh0 X3BhcnNlX2RldmljZV9wcm9wZXJ0aWVzKHN0cnVjdCBteHRfZGF0YSAqZGF0YSkKIHsKIAlzdGF0 aWMgY29uc3QgY2hhciBrZXltYXBfcHJvcGVydHlbXSA9ICJsaW51eCxncGlvLWtleW1hcCI7CisJ c3RhdGljIGNvbnN0IGNoYXIgYnV0dG9uc19wcm9wZXJ0eVtdID0gImxpbnV4LGtleWNvZGVzIjsK IAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmZGF0YS0+Y2xpZW50LT5kZXY7CiAJdTMyICprZXltYXA7 CisJdTMyICpidXR0b25tYXA7CiAJaW50IG5fa2V5czsKIAlpbnQgZXJyb3I7CiAKQEAgLTMxMTEs NiArMzE3MCwzMiBAQCBzdGF0aWMgaW50IG14dF9wYXJzZV9kZXZpY2VfcHJvcGVydGllcyhzdHJ1 Y3QgbXh0X2RhdGEgKmRhdGEpCiAJCWRhdGEtPnQxOV9udW1fa2V5cyA9IG5fa2V5czsKIAl9CiAK KwlpZiAoZGV2aWNlX3Byb3BlcnR5X3ByZXNlbnQoZGV2LCBidXR0b25zX3Byb3BlcnR5KSkgewor CQluX2tleXMgPSBkZXZpY2VfcHJvcGVydHlfY291bnRfdTMyKGRldiwgYnV0dG9uc19wcm9wZXJ0 eSk7CisJCWlmIChuX2tleXMgPD0gMCkgeworCQkJZXJyb3IgPSBuX2tleXMgPCAwID8gbl9rZXlz IDogLUVJTlZBTDsKKwkJCWRldl9lcnIoZGV2LCAiaW52YWxpZC9tYWxmb3JtZWQgJyVzJyBwcm9w ZXJ0eTogJWRcbiIsCisJCQkJYnV0dG9uc19wcm9wZXJ0eSwgZXJyb3IpOworCQkJcmV0dXJuIGVy cm9yOworCQl9CisKKwkJYnV0dG9ubWFwID0gZGV2bV9rbWFsbG9jX2FycmF5KGRldiwgbl9rZXlz LCBzaXplb2YoKmJ1dHRvbm1hcCksCisJCQkJCSAgICAgICBHRlBfS0VSTkVMKTsKKwkJaWYgKCFi dXR0b25tYXApCisJCQlyZXR1cm4gLUVOT01FTTsKKworCQllcnJvciA9IGRldmljZV9wcm9wZXJ0 eV9yZWFkX3UzMl9hcnJheShkZXYsIGJ1dHRvbnNfcHJvcGVydHksCisJCQkJCQkgICAgICAgYnV0 dG9ubWFwLCBuX2tleXMpOworCQlpZiAoZXJyb3IpIHsKKwkJCWRldl9lcnIoZGV2LCAiZmFpbGVk IHRvIHBhcnNlICclcycgcHJvcGVydHk6ICVkXG4iLAorCQkJCWJ1dHRvbnNfcHJvcGVydHksIGVy cm9yKTsKKwkJCXJldHVybiBlcnJvcjsKKwkJfQorCisJCWRhdGEtPnQxNV9rZXltYXAgPSBidXR0 b25tYXA7CisJCWRhdGEtPnQxNV9udW1fa2V5cyA9IG5fa2V5czsKKwl9CisKIAlyZXR1cm4gMDsK IH0KIAotLSAKMi4zOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBs aXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlz dGluZm8vbGludXgtYXJtLWtlcm5lbAo=