From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1CD8E2DC76A for ; Mon, 12 Oct 2026 13:44:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791812645; cv=none; b=ZIWHx7yAY28zlhbFD2FdYWwJgHCUI+ALnk6F+q9PPiJkittTiGAlzGnULbL1AhraJWZXtlYX6ayjjm3EQRSK4XcbTxqg6h9E4RURUariXkkVy1/TaJpNxEJ3lXUbagoT3m0hBzC8ZLvQToqu8Dfj9+w8xQKmk1Aj2XfZeYdsrh0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791812645; c=relaxed/simple; bh=a6cdKUCh+3606ZAGcTf/vNEx2PEvl2G4K4e5l2vQTF8=; h=Message-ID:From:Subject:To:Cc:In-Reply-To:References:Content-Type: Date; b=kpRwbafiDHDuoIIJhgBKB343JpUHE2H9PUzMxbTM065dqUj3XskgMkCFnWHRrkpvr3hBWPT6DFOgzLhFQRVEJDJN3CHWFcUf3NUcB+XkDjkJV5o5vJJG1OV3cjEcR687aBtlIXMbUHPa9oTxvgPqw2LicBeCoBOEmOVtgQ0v0GA= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=UYxcdu5A; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="UYxcdu5A" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 875A01F0089B; Mon, 12 Oct 2026 13:44:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1791812644; bh=9wQoPvhNfBCFt5eMYidhxwpZ5tIuDmEhDCV+FxI69zM=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=UYxcdu5A2QHfrps407/SvwJZ6ISMO+lWX5js/3trBOkQG6OFbIQMAy7BSMb8LZ86v 0J8PAVwRBD6LdZIirGjMxKRWcewuank+DqVaiBjWr+bhxPswUt5e3dH2UtE6iJw008 IcMw7P+qQuoTx5J1ZvG4d364NLLmVv4TgsDMgo1iuVXKnXbQXVhdtkb4ZAtqpeRnl1 wlI6PFZkjrM5ICzIxV/AYi49/JR4viepg3eua2AhXqZTxWplpddDKYYnMBJyhEnkEe i8uXbKXMRMA8Ai4gSDttJn4U2u5uozqz1gqxxv7diGHIKQcTKwcjx6i81vJiSn1ttO qmvd4X4jnIFtw== Message-ID: From: sashiko-bot@kernel.org Subject: Re: [PATCH v2 13/13] phy: qcom: edp: Add Nord phy_cfg, ops and OF compatible Reply-To: sashiko-reviews@lists.linux.dev To: "Nabige Aala" Cc: olteanv@gmail.com, robh@kernel.org, linux-phy@lists.infradead.org, conor+dt@kernel.org, vkoul@kernel.org, neil.armstrong@linaro.org, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org In-Reply-To: <20261012-nord-drv-dt-v2-13-a2ab9af954d2@oss.qualcomm.com> References: <20261012-nord-drv-dt-v2-0-a2ab9af954d2@oss.qualcomm.com> <20261012-nord-drv-dt-v2-13-a2ab9af954d2@oss.qualcomm.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Mon, 12 Oct 2026 13:44:03 +0000 Precedence: bulk X-Mailing-List: devicetree@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Thank you for your contribution! Sashiko AI review found 2 potential issue(= s) to consider: - [High] phy: qcom-edp: legacy TXn_TX_BAND writes corrupt Nord hardware sta= te - [High] phy: qcom-edp: hardcoded TXn_TX_DRV_LVL writes break voltage updat= es on Nord PHY -- commit 1393c79f29bd788a83ce23c45373ba39e69132d0 Author: Ritesh Kumar phy: qcom: edp: Add Nord phy_cfg, ops and OF compatible This commit adds the configuration structures, operations, and device tree matching for the Nord DP PHY. It defines the Nord-specific tables for AUX, VCO, swing, and pre-emphasis, along with updated status register offsets. > diff --git a/drivers/phy/qualcomm/phy-qcom-edp.c b/drivers/phy/qualcomm/p= hy-qcom-edp.c > index cb5f6e0ae607b..87400d61323a6 100644 > --- a/drivers/phy/qualcomm/phy-qcom-edp.c > +++ b/drivers/phy/qualcomm/phy-qcom-edp.c [ ... ] > @@ -1774,6 +1774,30 @@ static const struct qcom_edp_tx_res_entry tx_res_c= fg_nord[] =3D { > QCOM_EDP_TX_RES_ENTRY_END, > }; > =20 > +static const struct phy_ver_ops qcom_edp_phy_ops_nord =3D { > + .com_power_on =3D qcom_edp_phy_power_on_v8, > + .com_resetsm_cntrl =3D qcom_edp_phy_com_resetsm_cntrl_v8, > + .com_bias_en_clkbuflr =3D qcom_edp_com_bias_en_clkbuflr_v8, > + .com_configure_pll =3D qcom_edp_com_configure_pll_nord, > + .com_configure_ssc =3D qcom_edp_com_configure_ssc_nord, > + .com_ldo_config =3D qcom_edp_ldo_config_nord, > +}; > + > +static const struct qcom_edp_phy_cfg nord_edp_phy_cfg =3D { > + .is_edp =3D false, > + .aux_cfg =3D edp_phy_aux_cfg_nord, > + .vco_div_cfg =3D edp_phy_vco_div_cfg_nord, > + .dp_swing_pre_emph_cfg =3D &nord_dp_swing_pre_emph_cfg, > + .edp_swing_pre_emph_cfg =3D &nord_edp_swing_pre_emph_cfg, > + .ver_ops =3D &qcom_edp_phy_ops_nord, > + .phy_status_reg =3D DP_PHY_STATUS_NORD, > + .bias1_en_2lane =3D 0x03, > + .tx2_tx3_lane_ctl =3D DP_PHY_TX2_TX3_LANE_CTL_NORD, > + .tx_res_cfg =3D tx_res_cfg_nord, [Severity: High] The tx_res_cfg_nord table correctly configures the relocated offset for TX_BAND (0x0024). However, does qcom_edp_phy_power_on() still unconditional= ly write to the legacy TX_BAND offset (0x0028) before applying the tx_res_cfg table? qcom_edp_phy_power_on() { ... writel(0x04, edp->tx0 + TXn_TX_BAND); ... writel(0x04, edp->tx1 + TXn_TX_BAND); ... } Could this cause a write to the wrong offset on Nord hardware, potentially corrupting whatever unrelated register now exists at 0x0028? Should this register offset be parameterized or moved entirely to tx_res_cf= g? [Severity: High] Similarly, tx_res_cfg_nord initializes DP_PHY_TX_LN0_DRV_LVL_NORD (offset 0x00e4), indicating the drive level registers were also relocated. However, doesn't qcom_edp_set_voltages() still dynamically write the voltage swing values to the legacy TXn_TX_DRV_LVL offset (0x0014) during DP link training? qcom_edp_set_voltages() { ... writel(swing, edp->tx0 + TXn_TX_DRV_LVL); ... writel(swing, edp->tx1 + TXn_TX_DRV_LVL); ... } Will DP link training fail on Nord PHYs because the actual drive level register at 0x00e4 is never updated with the dynamic voltage levels? > + .cmn_status_reg =3D DP_QSERDES_V8_COM_CMN_STATUS_NORD, > + .c_ready_status_reg =3D DP_QSERDES_V8_COM_C_READY_STATUS_NORD, > +}; --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20261012-nord-drv-d= t-v2-0-a2ab9af954d2@oss.qualcomm.com?part=3D13 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 E2EB2CA9EC5 for ; Mon, 12 Oct 2026 13:44:06 +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:MIME-Version:Reply-To:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Date:References: In-Reply-To:Cc:To:Subject:From:Message-ID:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=IVcpUGLm+OMgOl9ylSwiAC+YN7PCW/T9J73dJ6FjZ6g=; b=43ENJhieJQ/388 2lsX2iwpMIUpWW+3Rr3tDaVJah/5MN/dt32W1WfZod3QH0+QP/t08vPWyfltQQjEc+6wgkcxYHJSR vEgFdOMaDhZTY5wbbSig2cng2nQtvR9sDpXB+XTlnlRmuzw3BFvGm7xmycA85VG12iDQjW10d5EhK /F2JasjoVJHF/YX7mtPOxGVe+pnv3DBuNzdYwJYlj3/LWjtd/9sEVnuz/JVJB+MflHQ2VZ1qwSCFB vp/3ENUUriAuQdeauOuUIYU03oUqwljK1rGuoZyeh1n/3baWHxRUe1oqaYnpH2TEPGHIt38JtIE8e RXCxWZVdcl0Kma8p6Y6w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1xGGJy-0000000AbkQ-1x3M; Mon, 12 Oct 2026 13:44:06 +0000 Received: from sea.source.kernel.org ([172.234.252.31]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1xGGJw-0000000Abjy-2oTN for linux-phy@lists.infradead.org; Mon, 12 Oct 2026 13:44:04 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id 1FA21418A0; Mon, 12 Oct 2026 13:44:04 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 875A01F0089B; Mon, 12 Oct 2026 13:44:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1791812644; bh=9wQoPvhNfBCFt5eMYidhxwpZ5tIuDmEhDCV+FxI69zM=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=UYxcdu5A2QHfrps407/SvwJZ6ISMO+lWX5js/3trBOkQG6OFbIQMAy7BSMb8LZ86v 0J8PAVwRBD6LdZIirGjMxKRWcewuank+DqVaiBjWr+bhxPswUt5e3dH2UtE6iJw008 IcMw7P+qQuoTx5J1ZvG4d364NLLmVv4TgsDMgo1iuVXKnXbQXVhdtkb4ZAtqpeRnl1 wlI6PFZkjrM5ICzIxV/AYi49/JR4viepg3eua2AhXqZTxWplpddDKYYnMBJyhEnkEe i8uXbKXMRMA8Ai4gSDttJn4U2u5uozqz1gqxxv7diGHIKQcTKwcjx6i81vJiSn1ttO qmvd4X4jnIFtw== Message-ID: From: sashiko-bot@kernel.org Subject: Re: [PATCH v2 13/13] phy: qcom: edp: Add Nord phy_cfg, ops and OF compatible To: "Nabige Aala" Cc: olteanv@gmail.com, robh@kernel.org, linux-phy@lists.infradead.org, conor+dt@kernel.org, vkoul@kernel.org, neil.armstrong@linaro.org, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org In-Reply-To: <20261012-nord-drv-dt-v2-13-a2ab9af954d2@oss.qualcomm.com> References: <20261012-nord-drv-dt-v2-0-a2ab9af954d2@oss.qualcomm.com> <20261012-nord-drv-dt-v2-13-a2ab9af954d2@oss.qualcomm.com> Date: Mon, 12 Oct 2026 13:44:03 +0000 X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: sashiko-reviews@lists.linux.dev MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg MiBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6Ci0gW0hpZ2hdIHBoeTogcWNvbS1lZHA6 IGxlZ2FjeSBUWG5fVFhfQkFORCB3cml0ZXMgY29ycnVwdCBOb3JkIGhhcmR3YXJlIHN0YXRlCi0g W0hpZ2hdIHBoeTogcWNvbS1lZHA6IGhhcmRjb2RlZCBUWG5fVFhfRFJWX0xWTCB3cml0ZXMgYnJl YWsgdm9sdGFnZSB1cGRhdGVzIG9uIE5vcmQgUEhZCi0tCgpjb21taXQgMTM5M2M3OWYyOWJkNzg4 YTgzY2UyM2M0NTM3M2JhMzllNjkxMzJkMApBdXRob3I6IFJpdGVzaCBLdW1hciA8cml0ZXNoLmt1 bWFyQG9zcy5xdWFsY29tbS5jb20+CgpwaHk6IHFjb206IGVkcDogQWRkIE5vcmQgcGh5X2NmZywg b3BzIGFuZCBPRiBjb21wYXRpYmxlCgpUaGlzIGNvbW1pdCBhZGRzIHRoZSBjb25maWd1cmF0aW9u IHN0cnVjdHVyZXMsIG9wZXJhdGlvbnMsIGFuZCBkZXZpY2UgdHJlZQptYXRjaGluZyBmb3IgdGhl IE5vcmQgRFAgUEhZLiBJdCBkZWZpbmVzIHRoZSBOb3JkLXNwZWNpZmljIHRhYmxlcyBmb3IgQVVY LApWQ08sIHN3aW5nLCBhbmQgcHJlLWVtcGhhc2lzLCBhbG9uZyB3aXRoIHVwZGF0ZWQgc3RhdHVz IHJlZ2lzdGVyIG9mZnNldHMuCgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9xdWFsY29tbS9w aHktcWNvbS1lZHAuYyBiL2RyaXZlcnMvcGh5L3F1YWxjb21tL3BoeS1xY29tLWVkcC5jCj4gaW5k ZXggY2I1ZjZlMGFlNjA3Yi4uODc0MDBkNjEzMjNhNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3Bo eS9xdWFsY29tbS9waHktcWNvbS1lZHAuYwo+ICsrKyBiL2RyaXZlcnMvcGh5L3F1YWxjb21tL3Bo eS1xY29tLWVkcC5jCgpbIC4uLiBdCgo+IEBAIC0xNzc0LDYgKzE3NzQsMzAgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBxY29tX2VkcF90eF9yZXNfZW50cnkgdHhfcmVzX2NmZ19ub3JkW10gPSB7Cj4g IAlRQ09NX0VEUF9UWF9SRVNfRU5UUllfRU5ELAo+ICB9Owo+ICAKPiArc3RhdGljIGNvbnN0IHN0 cnVjdCBwaHlfdmVyX29wcyBxY29tX2VkcF9waHlfb3BzX25vcmQgPSB7Cj4gKwkuY29tX3Bvd2Vy X29uCQk9IHFjb21fZWRwX3BoeV9wb3dlcl9vbl92OCwKPiArCS5jb21fcmVzZXRzbV9jbnRybAk9 IHFjb21fZWRwX3BoeV9jb21fcmVzZXRzbV9jbnRybF92OCwKPiArCS5jb21fYmlhc19lbl9jbGti dWZscgk9IHFjb21fZWRwX2NvbV9iaWFzX2VuX2Nsa2J1ZmxyX3Y4LAo+ICsJLmNvbV9jb25maWd1 cmVfcGxsCT0gcWNvbV9lZHBfY29tX2NvbmZpZ3VyZV9wbGxfbm9yZCwKPiArCS5jb21fY29uZmln dXJlX3NzYwk9IHFjb21fZWRwX2NvbV9jb25maWd1cmVfc3NjX25vcmQsCj4gKwkuY29tX2xkb19j b25maWcJCT0gcWNvbV9lZHBfbGRvX2NvbmZpZ19ub3JkLAo+ICt9Owo+ICsKPiArc3RhdGljIGNv bnN0IHN0cnVjdCBxY29tX2VkcF9waHlfY2ZnIG5vcmRfZWRwX3BoeV9jZmcgPSB7Cj4gKwkuaXNf ZWRwCQkJPSBmYWxzZSwKPiArCS5hdXhfY2ZnCQk9IGVkcF9waHlfYXV4X2NmZ19ub3JkLAo+ICsJ LnZjb19kaXZfY2ZnCQk9IGVkcF9waHlfdmNvX2Rpdl9jZmdfbm9yZCwKPiArCS5kcF9zd2luZ19w cmVfZW1waF9jZmcJPSAmbm9yZF9kcF9zd2luZ19wcmVfZW1waF9jZmcsCj4gKwkuZWRwX3N3aW5n X3ByZV9lbXBoX2NmZwk9ICZub3JkX2VkcF9zd2luZ19wcmVfZW1waF9jZmcsCj4gKwkudmVyX29w cwkJPSAmcWNvbV9lZHBfcGh5X29wc19ub3JkLAo+ICsJLnBoeV9zdGF0dXNfcmVnCQk9IERQX1BI WV9TVEFUVVNfTk9SRCwKPiArCS5iaWFzMV9lbl8ybGFuZQkJPSAweDAzLAo+ICsJLnR4Ml90eDNf bGFuZV9jdGwJPSBEUF9QSFlfVFgyX1RYM19MQU5FX0NUTF9OT1JELAo+ICsJLnR4X3Jlc19jZmcJ CT0gdHhfcmVzX2NmZ19ub3JkLAoKW1NldmVyaXR5OiBIaWdoXQpUaGUgdHhfcmVzX2NmZ19ub3Jk IHRhYmxlIGNvcnJlY3RseSBjb25maWd1cmVzIHRoZSByZWxvY2F0ZWQgb2Zmc2V0IGZvcgpUWF9C QU5EICgweDAwMjQpLiBIb3dldmVyLCBkb2VzIHFjb21fZWRwX3BoeV9wb3dlcl9vbigpIHN0aWxs IHVuY29uZGl0aW9uYWxseQp3cml0ZSB0byB0aGUgbGVnYWN5IFRYX0JBTkQgb2Zmc2V0ICgweDAw MjgpIGJlZm9yZSBhcHBseWluZyB0aGUgdHhfcmVzX2NmZwp0YWJsZT8KCnFjb21fZWRwX3BoeV9w b3dlcl9vbigpIHsKICAgIC4uLgogICAgd3JpdGVsKDB4MDQsIGVkcC0+dHgwICsgVFhuX1RYX0JB TkQpOwogICAgLi4uCiAgICB3cml0ZWwoMHgwNCwgZWRwLT50eDEgKyBUWG5fVFhfQkFORCk7CiAg ICAuLi4KfQoKQ291bGQgdGhpcyBjYXVzZSBhIHdyaXRlIHRvIHRoZSB3cm9uZyBvZmZzZXQgb24g Tm9yZCBoYXJkd2FyZSwgcG90ZW50aWFsbHkKY29ycnVwdGluZyB3aGF0ZXZlciB1bnJlbGF0ZWQg cmVnaXN0ZXIgbm93IGV4aXN0cyBhdCAweDAwMjg/CgpTaG91bGQgdGhpcyByZWdpc3RlciBvZmZz ZXQgYmUgcGFyYW1ldGVyaXplZCBvciBtb3ZlZCBlbnRpcmVseSB0byB0eF9yZXNfY2ZnPwoKW1Nl dmVyaXR5OiBIaWdoXQpTaW1pbGFybHksIHR4X3Jlc19jZmdfbm9yZCBpbml0aWFsaXplcyBEUF9Q SFlfVFhfTE4wX0RSVl9MVkxfTk9SRCAob2Zmc2V0CjB4MDBlNCksIGluZGljYXRpbmcgdGhlIGRy aXZlIGxldmVsIHJlZ2lzdGVycyB3ZXJlIGFsc28gcmVsb2NhdGVkLgoKSG93ZXZlciwgZG9lc24n dCBxY29tX2VkcF9zZXRfdm9sdGFnZXMoKSBzdGlsbCBkeW5hbWljYWxseSB3cml0ZSB0aGUgdm9s dGFnZQpzd2luZyB2YWx1ZXMgdG8gdGhlIGxlZ2FjeSBUWG5fVFhfRFJWX0xWTCBvZmZzZXQgKDB4 MDAxNCkgZHVyaW5nIERQIGxpbmsKdHJhaW5pbmc/CgpxY29tX2VkcF9zZXRfdm9sdGFnZXMoKSB7 CiAgICAuLi4KICAgIHdyaXRlbChzd2luZywgZWRwLT50eDAgKyBUWG5fVFhfRFJWX0xWTCk7CiAg ICAuLi4KICAgIHdyaXRlbChzd2luZywgZWRwLT50eDEgKyBUWG5fVFhfRFJWX0xWTCk7CiAgICAu Li4KfQoKV2lsbCBEUCBsaW5rIHRyYWluaW5nIGZhaWwgb24gTm9yZCBQSFlzIGJlY2F1c2UgdGhl IGFjdHVhbCBkcml2ZSBsZXZlbApyZWdpc3RlciBhdCAweDAwZTQgaXMgbmV2ZXIgdXBkYXRlZCB3 aXRoIHRoZSBkeW5hbWljIHZvbHRhZ2UgbGV2ZWxzPwoKPiArCS5jbW5fc3RhdHVzX3JlZwkJPSBE UF9RU0VSREVTX1Y4X0NPTV9DTU5fU1RBVFVTX05PUkQsCj4gKwkuY19yZWFkeV9zdGF0dXNfcmVn CT0gRFBfUVNFUkRFU19WOF9DT01fQ19SRUFEWV9TVEFUVVNfTk9SRCwKPiArfTsKCi0tIApTYXNo aWtvIEFJIHJldmlldyDCtyBodHRwczovL3Nhc2hpa28uZGV2LyMvcGF0Y2hzZXQvMjAyNjEwMTIt bm9yZC1kcnYtZHQtdjItMC1hMmFiOWFmOTU0ZDJAb3NzLnF1YWxjb21tLmNvbT9wYXJ0PTEzCgot LSAKbGludXgtcGh5IG1haWxpbmcgbGlzdApsaW51eC1waHlAbGlzdHMuaW5mcmFkZWFkLm9yZwpo dHRwczovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1waHkK