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 X-Spam-Level: X-Spam-Status: No, score=-8.6 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING, SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D8165C43603 for ; Sat, 7 Dec 2019 20:36:11 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 9E9D624673 for ; Sat, 7 Dec 2019 20:36:11 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="L1ah2Jgj" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726595AbfLGUgL (ORCPT ); Sat, 7 Dec 2019 15:36:11 -0500 Received: from mail-pf1-f194.google.com ([209.85.210.194]:46486 "EHLO mail-pf1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726555AbfLGUgK (ORCPT ); Sat, 7 Dec 2019 15:36:10 -0500 Received: by mail-pf1-f194.google.com with SMTP id y14so5131305pfm.13; Sat, 07 Dec 2019 12:36:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=2kMIJY/eOkF08UFC83+z2Yvw2OEsP0PRB4nAXO2fCAU=; b=L1ah2JgjYkVbYTJrHXreZ/M03kKDjwenY8BAjQ9xJEx0gbKashe1+23y3HRp0Xx+WC Ou2IQzV+8QXgBlKXvhkEtaCLdSQlIFo+qkXefce0BZdNG5kYKpv3JpAoWpMuy2Lnzwu1 C5J6apBOhbPYAqsgiW5bhXn3gix9FaHZ83rezWyEV1Za4Jt7ulew6i1DNB5bkjQK02oY AzRWp4LLJR/ml+NOxujgBGeSnJuNQbye7c2/YNqS7a8ZU6zfZYHpcI7skbX6dyLODERj T4J7zxloGX09YN0DMYOZYbEmtWXI+va/wJdXFZd3GaR71EWPoJJv2wwzxMOu77Q2F70I 7G8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=2kMIJY/eOkF08UFC83+z2Yvw2OEsP0PRB4nAXO2fCAU=; b=K6h4yRGw5uWox67kFymH0ajVt4RiTLH+5xeGxxyxSDmNJIOpBxivyzq515piFlL6t/ RUe2ksGW5Hec1JC1memiWXLu0JMRCRvv59QFAP4d+BoUzPZGF/lb84fztjnPOwpBCPEP R9IXO30VkHNxbgmlNDb1jOhJ2+56EDkEPSRn5oGpcMyoEo60ZN/FamiAaYtZ/yQKa+1p UfdAKaVtWqp2kvYSZqFm7G1N1sS9yBusctiQl9UpVpyjYAg1LqWwtFW6/IYJbTyc1Rqg 9vFw4siazumvbKdC2h9f9htrHJ02fuueOpIcTqh/DvWd4Zu0OHEQO37889ljNwSWY+6H JbsA== X-Gm-Message-State: APjAAAVBJEF81vcQXBeyqeUh821lllHhZlRjUQMFyklLfbPtP0MzXP9f T2MN+HLKYLSWweESFng4oY8= X-Google-Smtp-Source: APXvYqyHsn0JRBAztc8gkWedID4H+F1dMmOijtBZeWWN976EbUglK6Cd/j6zKuX60a2hGwZ5Nhn3NA== X-Received: by 2002:a63:d958:: with SMTP id e24mr10614053pgj.31.1575750969811; Sat, 07 Dec 2019 12:36:09 -0800 (PST) Received: from localhost (c-73-25-156-94.hsd1.or.comcast.net. [73.25.156.94]) by smtp.gmail.com with ESMTPSA id d24sm22327447pfq.75.2019.12.07.12.36.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 07 Dec 2019 12:36:09 -0800 (PST) From: Rob Clark To: dri-devel@lists.freedesktop.org, linux-arm-msm@vger.kernel.org, aarch64-laptops@lists.linaro.org Cc: Laurent Pinchart , Vasily Khoruzhick , Bjorn Andersson , Jeffrey Hugo , Rob Clark , devicetree@vger.kernel.org (open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS), Jernej Skrabec , Jonas Karlman , linux-kernel@vger.kernel.org (open list), Sam Ravnborg Subject: [PATCH 0/4] drm+dt: multi panel selection and yoga c630 display Date: Sat, 7 Dec 2019 12:35:49 -0800 Message-Id: <20191207203553.286017-1-robdclark@gmail.com> X-Mailer: git-send-email 2.23.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-arm-msm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org From: Rob Clark It is not uncommon for devices to use one of several possible panels. The Lenovo Yoga C630 laptop is one such device. This patchset introduces an optional "panel-id" property which can be used by the firmware to find the correct panel node to enable. The second patch adds support in drm/of to automatically pick the enabled endpoint, to avoid adding the same logic in multiple bridges/drivers. The last patch uses this mechanism to enable display support for the Yoga C630. An example usage: boe_panel { compatible = "boe,nv133fhm-n61"; panel-id = <0xc4>; /* fw will change status to "Ok" if this panel is installed */ status = "disabled"; ports { port { boe_panel_in_edp: endpoint { remote-endpoint = <&sn65dsi86_out_boe>; }; }; }; }; ivo_panel { compatible = "ivo,m133nwf4-r0"; panel-id = <0xc5>; /* fw will change status to "Ok" if this panel is installed */ status = "disabled"; ports { port { ivo_panel_in_edp: endpoint { remote-endpoint = <&sn65dsi86_out_ivo>; }; }; }; }; sn65dsi86: bridge@2c { compatible = "ti,sn65dsi86"; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; sn65dsi86_in_a: endpoint { remote-endpoint = <&dsi0_out>; }; }; port@1 { reg = <1>; sn65dsi86_out_boe: endpoint@c4 { remote-endpoint = <&boe_panel_in_edp>; }; sn65dsi86_out_ivo: endpoint@c5 { remote-endpoint = <&ivo_panel_in_edp>; }; }; }; }; This replaces an earlier proposal[1] to use chosen/panel-id to select the installed panel, in favor of adding support[2] to an EFI driver module (DtbLoader.efi) to find the installed panel, locate it in dtb via the 'panel-id' property, and update it's status to "Ok". [1] https://patchwork.kernel.org/cover/11024613/ [2] https://github.com/robclark/edk2/commits/dtbloader In this case, DtbLoader, which is somewhat generic (ie. this mechanism applies to all snapdragon based devices which orignally ship with windows), determines the panel-id of the installed panel from the UEFIDisplayInfo variable. As I understand, a similar situation exists with the pine64 laptops. A similar scheme could be used to support this, by loading the panel-id from a u-boot variable. In other cases (phones), a more device specific shim would be needed to determine the panel-id by reading some GPIOs, or some other more device- specific mechanism. Bjorn Andersson (1): arm64: dts: qcom: c630: Enable display Rob Clark (3): dt-bindings: display: panel: document panel-id drm/of: add support to find any enabled endpoint drm/bridge: ti-sn65dsi86: find any enabled endpoint .../bindings/display/panel/panel-common.yaml | 26 +++ .../boot/dts/qcom/sdm850-lenovo-yoga-c630.dts | 165 ++++++++++++++++++ drivers/gpu/drm/bridge/ti-sn65dsi86.c | 2 +- drivers/gpu/drm/drm_of.c | 41 ++++- 4 files changed, 232 insertions(+), 2 deletions(-) -- 2.23.0 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 X-Spam-Level: X-Spam-Status: No, score=-8.5 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8EE62C43603 for ; Sat, 7 Dec 2019 20:36:14 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 6D0A1206DB for ; Sat, 7 Dec 2019 20:36:12 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6D0A1206DB Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id EB3246E22F; Sat, 7 Dec 2019 20:36:11 +0000 (UTC) Received: from mail-pf1-x444.google.com (mail-pf1-x444.google.com [IPv6:2607:f8b0:4864:20::444]) by gabe.freedesktop.org (Postfix) with ESMTPS id AE7126E22F for ; Sat, 7 Dec 2019 20:36:10 +0000 (UTC) Received: by mail-pf1-x444.google.com with SMTP id y206so5162309pfb.0 for ; Sat, 07 Dec 2019 12:36:10 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=2kMIJY/eOkF08UFC83+z2Yvw2OEsP0PRB4nAXO2fCAU=; b=QP4Uf7tg6njwWIAWnmxlsVo9PqT0EGkey/DEpQmrUN110ev6sdAvRhqLD4iFSQ1p+T /Z4PcQRbtYbzZtp4FR2ko1BKb2uAJvox/lCJplx4D5cAY0I9XxhrPrU9fozWZ9NOs6fI LBOiSXnjQpTTFA7+VPvDOYT7eEETKxQhgYqUWpB71sTyr2eCGoNQtiZjsFSbMe9ZuSsX doJfC4sIl6aEGoof5oJQH47+SCZlnTBeyIIOOf+VuVTsqh6W5OLSe+01eDvQ12CwYFeo 5Vy/mMKnFw1CXTgxd/eo2EO8GAfKlQgy9hdnabBwrDMmtfwL8V0O7inSwg6PXHT//tiv E6ww== X-Gm-Message-State: APjAAAWyxVNTE7vfTRnLBVJ/ufhlK+UxCpfSoW3hK/SPzbaUX+ehCGPy Uyf05K5HqxPgFaZVhfdN7+sCGWpM X-Google-Smtp-Source: APXvYqyHsn0JRBAztc8gkWedID4H+F1dMmOijtBZeWWN976EbUglK6Cd/j6zKuX60a2hGwZ5Nhn3NA== X-Received: by 2002:a63:d958:: with SMTP id e24mr10614053pgj.31.1575750969811; Sat, 07 Dec 2019 12:36:09 -0800 (PST) Received: from localhost (c-73-25-156-94.hsd1.or.comcast.net. [73.25.156.94]) by smtp.gmail.com with ESMTPSA id d24sm22327447pfq.75.2019.12.07.12.36.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 07 Dec 2019 12:36:09 -0800 (PST) From: Rob Clark To: dri-devel@lists.freedesktop.org, linux-arm-msm@vger.kernel.org, aarch64-laptops@lists.linaro.org Subject: [PATCH 0/4] drm+dt: multi panel selection and yoga c630 display Date: Sat, 7 Dec 2019 12:35:49 -0800 Message-Id: <20191207203553.286017-1-robdclark@gmail.com> X-Mailer: git-send-email 2.23.0 MIME-Version: 1.0 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=2kMIJY/eOkF08UFC83+z2Yvw2OEsP0PRB4nAXO2fCAU=; b=L1ah2JgjYkVbYTJrHXreZ/M03kKDjwenY8BAjQ9xJEx0gbKashe1+23y3HRp0Xx+WC Ou2IQzV+8QXgBlKXvhkEtaCLdSQlIFo+qkXefce0BZdNG5kYKpv3JpAoWpMuy2Lnzwu1 C5J6apBOhbPYAqsgiW5bhXn3gix9FaHZ83rezWyEV1Za4Jt7ulew6i1DNB5bkjQK02oY AzRWp4LLJR/ml+NOxujgBGeSnJuNQbye7c2/YNqS7a8ZU6zfZYHpcI7skbX6dyLODERj T4J7zxloGX09YN0DMYOZYbEmtWXI+va/wJdXFZd3GaR71EWPoJJv2wwzxMOu77Q2F70I 7G8g== X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Rob Clark , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , Jernej Skrabec , Jonas Karlman , Jeffrey Hugo , open list , Bjorn Andersson , Vasily Khoruzhick , Laurent Pinchart , Sam Ravnborg Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" RnJvbTogUm9iIENsYXJrIDxyb2JkY2xhcmtAY2hyb21pdW0ub3JnPgoKSXQgaXMgbm90IHVuY29t bW9uIGZvciBkZXZpY2VzIHRvIHVzZSBvbmUgb2Ygc2V2ZXJhbCBwb3NzaWJsZSBwYW5lbHMuClRo ZSBMZW5vdm8gWW9nYSBDNjMwIGxhcHRvcCBpcyBvbmUgc3VjaCBkZXZpY2UuICBUaGlzIHBhdGNo c2V0CmludHJvZHVjZXMgYW4gb3B0aW9uYWwgInBhbmVsLWlkIiBwcm9wZXJ0eSB3aGljaCBjYW4g YmUgdXNlZCBieSB0aGUKZmlybXdhcmUgdG8gZmluZCB0aGUgY29ycmVjdCBwYW5lbCBub2RlIHRv IGVuYWJsZS4gIFRoZSBzZWNvbmQgcGF0Y2gKYWRkcyBzdXBwb3J0IGluIGRybS9vZiB0byBhdXRv bWF0aWNhbGx5IHBpY2sgdGhlIGVuYWJsZWQgZW5kcG9pbnQsIHRvCmF2b2lkIGFkZGluZyB0aGUg c2FtZSBsb2dpYyBpbiBtdWx0aXBsZSBicmlkZ2VzL2RyaXZlcnMuICBUaGUgbGFzdApwYXRjaCB1 c2VzIHRoaXMgbWVjaGFuaXNtIHRvIGVuYWJsZSBkaXNwbGF5IHN1cHBvcnQgZm9yIHRoZSBZb2dh IEM2MzAuCgpBbiBleGFtcGxlIHVzYWdlOgoKICBib2VfcGFuZWwgewogICAgICBjb21wYXRpYmxl ID0gImJvZSxudjEzM2ZobS1uNjEiOwogICAgICBwYW5lbC1pZCA9IDwweGM0PjsKICAgICAgLyog Zncgd2lsbCBjaGFuZ2Ugc3RhdHVzIHRvICJPayIgaWYgdGhpcyBwYW5lbCBpcyBpbnN0YWxsZWQg Ki8KICAgICAgc3RhdHVzID0gImRpc2FibGVkIjsKCiAgICAgIHBvcnRzIHsKICAgICAgICAgIHBv cnQgewogICAgICAgICAgICAgIGJvZV9wYW5lbF9pbl9lZHA6IGVuZHBvaW50IHsKICAgICAgICAg ICAgICAgICAgcmVtb3RlLWVuZHBvaW50ID0gPCZzbjY1ZHNpODZfb3V0X2JvZT47CiAgICAgICAg ICAgICAgfTsKICAgICAgICAgIH07CiAgICAgIH07CiAgfTsKCiAgaXZvX3BhbmVsIHsKICAgICAg Y29tcGF0aWJsZSA9ICJpdm8sbTEzM253ZjQtcjAiOwogICAgICBwYW5lbC1pZCA9IDwweGM1PjsK ICAgICAgLyogZncgd2lsbCBjaGFuZ2Ugc3RhdHVzIHRvICJPayIgaWYgdGhpcyBwYW5lbCBpcyBp bnN0YWxsZWQgKi8KICAgICAgc3RhdHVzID0gImRpc2FibGVkIjsKCiAgICAgIHBvcnRzIHsKICAg ICAgICAgIHBvcnQgewogICAgICAgICAgICAgIGl2b19wYW5lbF9pbl9lZHA6IGVuZHBvaW50IHsK ICAgICAgICAgICAgICAgICAgcmVtb3RlLWVuZHBvaW50ID0gPCZzbjY1ZHNpODZfb3V0X2l2bz47 CiAgICAgICAgICAgICAgfTsKICAgICAgICAgIH07CiAgICAgIH07CiAgfTsKCiAgc242NWRzaTg2 OiBicmlkZ2VAMmMgewogICAgICBjb21wYXRpYmxlID0gInRpLHNuNjVkc2k4NiI7CgogICAgICBw b3J0cyB7CiAgICAgICAgICAjYWRkcmVzcy1jZWxscyA9IDwxPjsKICAgICAgICAgICNzaXplLWNl bGxzID0gPDA+OwoKICAgICAgICAgIHBvcnRAMCB7CiAgICAgICAgICAgICAgcmVnID0gPDA+Owog ICAgICAgICAgICAgIHNuNjVkc2k4Nl9pbl9hOiBlbmRwb2ludCB7CiAgICAgICAgICAgICAgICAg IHJlbW90ZS1lbmRwb2ludCA9IDwmZHNpMF9vdXQ+OwogICAgICAgICAgICAgIH07CiAgICAgICAg ICB9OwoKICAgICAgICAgIHBvcnRAMSB7CiAgICAgICAgICAgICAgcmVnID0gPDE+OwoKICAgICAg ICAgICAgICBzbjY1ZHNpODZfb3V0X2JvZTogZW5kcG9pbnRAYzQgewogICAgICAgICAgICAgICAg ICByZW1vdGUtZW5kcG9pbnQgPSA8JmJvZV9wYW5lbF9pbl9lZHA+OwogICAgICAgICAgICAgIH07 CgogICAgICAgICAgICAgIHNuNjVkc2k4Nl9vdXRfaXZvOiBlbmRwb2ludEBjNSB7CiAgICAgICAg ICAgICAgICAgIHJlbW90ZS1lbmRwb2ludCA9IDwmaXZvX3BhbmVsX2luX2VkcD47CiAgICAgICAg ICAgICAgfTsKICAgICAgICAgIH07CiAgICAgIH07CiAgfTsKClRoaXMgcmVwbGFjZXMgYW4gZWFy bGllciBwcm9wb3NhbFsxXSB0byB1c2UgY2hvc2VuL3BhbmVsLWlkIHRvIHNlbGVjdCB0aGUKaW5z dGFsbGVkIHBhbmVsLCBpbiBmYXZvciBvZiBhZGRpbmcgc3VwcG9ydFsyXSB0byBhbiBFRkkgZHJp dmVyIG1vZHVsZQooRHRiTG9hZGVyLmVmaSkgdG8gZmluZCB0aGUgaW5zdGFsbGVkIHBhbmVsLCBs b2NhdGUgaXQgaW4gZHRiIHZpYSB0aGUKJ3BhbmVsLWlkJyBwcm9wZXJ0eSwgYW5kIHVwZGF0ZSBp dCdzIHN0YXR1cyB0byAiT2siLgoKWzFdIGh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvY292 ZXIvMTEwMjQ2MTMvClsyXSBodHRwczovL2dpdGh1Yi5jb20vcm9iY2xhcmsvZWRrMi9jb21taXRz L2R0YmxvYWRlcgoKSW4gdGhpcyBjYXNlLCBEdGJMb2FkZXIsIHdoaWNoIGlzIHNvbWV3aGF0IGdl bmVyaWMgKGllLiB0aGlzIG1lY2hhbmlzbQphcHBsaWVzIHRvIGFsbCBzbmFwZHJhZ29uIGJhc2Vk IGRldmljZXMgd2hpY2ggb3JpZ25hbGx5IHNoaXAgd2l0aAp3aW5kb3dzKSwgZGV0ZXJtaW5lcyB0 aGUgcGFuZWwtaWQgb2YgdGhlIGluc3RhbGxlZCBwYW5lbCBmcm9tIHRoZQpVRUZJRGlzcGxheUlu Zm8gdmFyaWFibGUuCgpBcyBJIHVuZGVyc3RhbmQsIGEgc2ltaWxhciBzaXR1YXRpb24gZXhpc3Rz IHdpdGggdGhlIHBpbmU2NCBsYXB0b3BzLiAgQQpzaW1pbGFyIHNjaGVtZSBjb3VsZCBiZSB1c2Vk IHRvIHN1cHBvcnQgdGhpcywgYnkgbG9hZGluZyB0aGUgcGFuZWwtaWQKZnJvbSBhIHUtYm9vdCB2 YXJpYWJsZS4KCkluIG90aGVyIGNhc2VzIChwaG9uZXMpLCBhIG1vcmUgZGV2aWNlIHNwZWNpZmlj IHNoaW0gd291bGQgYmUgbmVlZGVkIHRvCmRldGVybWluZSB0aGUgcGFuZWwtaWQgYnkgcmVhZGlu ZyBzb21lIEdQSU9zLCBvciBzb21lIG90aGVyIG1vcmUgZGV2aWNlLQpzcGVjaWZpYyBtZWNoYW5p c20uCgpCam9ybiBBbmRlcnNzb24gKDEpOgogIGFybTY0OiBkdHM6IHFjb206IGM2MzA6IEVuYWJs ZSBkaXNwbGF5CgpSb2IgQ2xhcmsgKDMpOgogIGR0LWJpbmRpbmdzOiBkaXNwbGF5OiBwYW5lbDog ZG9jdW1lbnQgcGFuZWwtaWQKICBkcm0vb2Y6IGFkZCBzdXBwb3J0IHRvIGZpbmQgYW55IGVuYWJs ZWQgZW5kcG9pbnQKICBkcm0vYnJpZGdlOiB0aS1zbjY1ZHNpODY6IGZpbmQgYW55IGVuYWJsZWQg ZW5kcG9pbnQKCiAuLi4vYmluZGluZ3MvZGlzcGxheS9wYW5lbC9wYW5lbC1jb21tb24ueWFtbCAg fCAgMjYgKysrCiAuLi4vYm9vdC9kdHMvcWNvbS9zZG04NTAtbGVub3ZvLXlvZ2EtYzYzMC5kdHMg fCAxNjUgKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3RpLXNuNjVk c2k4Ni5jICAgICAgICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9kcm1fb2YuYyAgICAgICAg ICAgICAgICAgICAgICB8ICA0MSArKysrLQogNCBmaWxlcyBjaGFuZ2VkLCAyMzIgaW5zZXJ0aW9u cygrKSwgMiBkZWxldGlvbnMoLSkKCi0tIAoyLjIzLjAKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVs QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==