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=-11.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,USER_AGENT_GIT autolearn=unavailable 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 6A242C433F5 for ; Fri, 10 Sep 2021 18:42:17 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4F88260F5D for ; Fri, 10 Sep 2021 18:42:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231645AbhIJSn1 (ORCPT ); Fri, 10 Sep 2021 14:43:27 -0400 Received: from relay10.mail.gandi.net ([217.70.178.230]:42477 "EHLO relay10.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229476AbhIJSn1 (ORCPT ); Fri, 10 Sep 2021 14:43:27 -0400 Received: (Authenticated sender: paul.kocialkowski@bootlin.com) by relay10.mail.gandi.net (Postfix) with ESMTPSA id 11C7F240003; Fri, 10 Sep 2021 18:42:10 +0000 (UTC) From: Paul Kocialkowski To: linux-media@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, linux-clk@vger.kernel.org, linux-staging@lists.linux.dev Cc: Yong Deng , Mauro Carvalho Chehab , Rob Herring , Maxime Ripard , Sakari Ailus , Hans Verkuil , Chen-Yu Tsai , Jernej Skrabec , Paul Kocialkowski , Greg Kroah-Hartman , Helen Koike , Laurent Pinchart , Thomas Petazzoni Subject: [PATCH 00/22] Allwinner A31/A83T MIPI CSI-2 Support and A31 ISP Support Date: Fri, 10 Sep 2021 20:41:25 +0200 Message-Id: <20210910184147.336618-1-paul.kocialkowski@bootlin.com> X-Mailer: git-send-email 2.32.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-clk@vger.kernel.org This series introduces support for the Allwinner A31 and A83T MIPI CSI-2 controllers as well as the Allwinner A31 Image Signal Processor (ISP). It follows v5 of the "Allwinner MIPI CSI-2 support for A31/V3s/A83T" series, with the addition of ISP support for the V3. Since both aspect are quite dependent due to changes to the sun6i-csi driver, they are merged into this new series. Aside from the ISP driver itself, the most outstanding change is a complete rewrite of the CSI driver, for the specific reasons that are exposed in the commit message introducing the new driver. The commit message introducing the ISP driver should also contain useful details regarding the implementation and outstanding specifics of the hardware. This was tested on the V3s and A83T, using the following sensors: - IMX219 - OV5648 - OV8856 - OV8865 v4l2-compliance seems pretty happy about the video nodes, see the detailed reports below. Thanks! Changes since v5 of the MIPI CSI-2 series: - D-PHY direction is no longer represented with a submode since this is not a runtime decision: no switching between the two submodes is possible and each instance of a controller will be dedicated to one direction only. Instead, a device-tree property is used. A separate compatible was considered, but it feels unfit since the direction does not describe the particular type of hardware implementation, but rather how it is used; - Updated comments about channels based on latest information; - Various cosmetic changes (and splitting) to the code; -- Allwinner MIPI CSI-2 support for A31/V3s/A83T changelog Changes since v4: - Added patch to stop using v4l2_async_notifier_parse_fwnode_endpoints; - Fixed checkpatch strict issues (parenthesis alignment); - Fixed runtime PM call order and disable; - Fixed fwnode_handle_put order; - Brought back phy-names for A31 since it's mandatory according to the generic PHY binding and needed by the code; - Added collected tags. Changes since v3: - Fixed single-item phys description in sun6i mipi csi-2 binding; - Fixed variables names in macros using container_of; - Fixed style issue with operators at the end of lines; - Reworked source endpoint/subdev assignment in sun6i-csi to handle link_validate error case; - Removed unrelated dt change in sun8i-a83t mipi csi-2 driver; - Added collected tags. Changes since v2: - added Kconfig depend on PM since it's not optional; - removed phy-names for A31 MIPI CSI-2 controller; - removed v3s compatible in the A31 MIPI CSI-2 controller driver; - removed A31 CSI controller single-port binding deprecation; - removed empty dt port definitions; - fixed minor checkpatch warnings; - added collected tags; - added media-ctl output in cover letter. Changes since v1: - reworked fwnode and media graph on the CSI controller end to have one port per interface, which solves the bus type representation issue; - removed unused IRQ handlers in the MIPI CSI-2 bridges; - avoided the use of devm_regmap_init_mmio_clk; - deasserted reset before enabling clocks; - fixed reported return code issues (ret |=, missing checks); - applied requested cosmetic changes (backward goto, etc); - switched over to runtime PM for the mipi csi-2 bridge drivers; - selected PHY_SUN6I_MIPI_DPHY in Kconfig for sun6i-mipi-csi2; - registered nodes with mipi csi-2 bridge subdevs; - used V4L2 format info instead of switch/case for sun6i-csi bpp; - fixed device-tree bindings as requested (useless properties, license); - fixed mipi bridge dt instances names; - added PHY API documentation about mode/power on order requirement; - fixed clock error return code in d-phy code; - fixed D-PHY mode check in d-phy code; - added MAINTAINERS entries for the new drivers; - added V4L2 compliance results; - added various comments and rework commit mesages as requested. -- V3 media topology Media controller API version 5.13.0 Media device information ------------------------ driver sun6i-isp model Allwinner ISP Capture Device serial bus info platform:1cb8000.isp hw revision 0x0 driver version 5.13.0 Device topology - entity 1: sun6i-isp-proc (3 pads, 3 links) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev0 pad0: Sink [fmt:SRGGB8_1X8/1920x1080 field:none colorspace:raw] <- "sun6i-csi-bridge":1 [ENABLED] pad1: Sink [fmt:SRGGB8_1X8/1920x1080 field:none colorspace:raw] <- "sun6i-isp-params":0 [ENABLED,IMMUTABLE] pad2: Source [fmt:SRGGB8_1X8/1920x1080 field:none colorspace:raw] -> "sun6i-isp-capture":0 [ENABLED,IMMUTABLE] - entity 5: sun6i-csi-bridge (2 pads, 3 links) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev1 pad0: Sink [fmt:SRGGB8_1X8/1920x1080 field:none colorspace:raw] <- "sun6i-mipi-csi2":1 [ENABLED] pad1: Source [fmt:SRGGB8_1X8/1920x1080 field:none colorspace:raw] -> "sun6i-isp-proc":0 [ENABLED] -> "sun6i-csi-capture":0 [] - entity 10: sun6i-mipi-csi2 (2 pads, 2 links) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev2 pad0: Sink [fmt:SRGGB8_1X8/1920x1080 field:none colorspace:raw] <- "imx219 1-0010":0 [ENABLED,IMMUTABLE] pad1: Source [fmt:SRGGB8_1X8/1920x1080 field:none colorspace:raw] -> "sun6i-csi-bridge":0 [ENABLED] - entity 13: sun6i-csi-capture (1 pad, 1 link) type Node subtype V4L flags 0 device node name /dev/video0 pad0: Sink <- "sun6i-csi-bridge":1 [] - entity 21: sun6i-isp-capture (1 pad, 1 link) type Node subtype V4L flags 0 device node name /dev/video1 pad0: Sink <- "sun6i-isp-proc":2 [ENABLED,IMMUTABLE] - entity 27: sun6i-isp-params (1 pad, 1 link) type Node subtype V4L flags 0 device node name /dev/video2 pad0: Source -> "sun6i-isp-proc":1 [ENABLED,IMMUTABLE] - entity 33: imx219 1-0010 (1 pad, 1 link) type V4L2 subdev subtype Sensor flags 0 device node name /dev/v4l-subdev3 pad0: Source [fmt:SRGGB8_1X8/1920x1080 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:full-range crop.bounds:(8,8)/3280x2464 crop:(688,700)/1920x1080] -> "sun6i-mipi-csi2":0 [ENABLED,IMMUTABLE] -- sun6i-csi-capture v4l2-compliance run v4l2-compliance SHA: not available, 32 bits Compliance test for sun6i-csi device /dev/video0: Driver Info: Driver name : sun6i-csi Card type : sun6i-csi-capture Bus info : platform:1cb0000.camera Driver version : 5.13.0 Capabilities : 0x84200001 Video Capture Streaming Extended Pix Format Device Capabilities Device Caps : 0x04200001 Video Capture Streaming Extended Pix Format Media Driver Info: Driver name : sun6i-isp Model : Allwinner ISP Capture Device Serial : Bus info : platform:1cb8000.isp Media version : 5.13.0 Hardware revision: 0x00000000 (0) Driver version : 5.13.0 Interface Info: ID : 0x0300000f Type : V4L Video Entity Info: ID : 0x0000000d (13) Name : sun6i-csi-capture Function : V4L2 I/O Pad 0x0100000e : 0: Sink Link 0x02000011: from remote pad 0x1000007 of entity 'sun6i-csi-bridge': Data Required ioctls: test MC information (see 'Media Driver Info' above): OK warn: v4l2-compliance.cpp(633): media bus_info 'platform:1cb8000.isp' differs from V4L2 bus_info 'platform:1cb0000.camera' test VIDIOC_QUERYCAP: OK Allow for multiple opens: test second /dev/video0 open: OK warn: v4l2-compliance.cpp(633): media bus_info 'platform:1cb8000.isp' differs from V4L2 bus_info 'platform:1cb0000.camera' test VIDIOC_QUERYCAP: OK test VIDIOC_G/S_PRIORITY: OK test for unlimited opens: OK Debug ioctls: test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported) test VIDIOC_LOG_STATUS: OK Input ioctls: test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported) test VIDIOC_ENUMAUDIO: OK (Not Supported) test VIDIOC_G/S/ENUMINPUT: OK test VIDIOC_G/S_AUDIO: OK (Not Supported) Inputs: 1 Audio Inputs: 0 Tuners: 0 Output ioctls: test VIDIOC_G/S_MODULATOR: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_ENUMAUDOUT: OK (Not Supported) test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported) test VIDIOC_G/S_AUDOUT: OK (Not Supported) Outputs: 0 Audio Outputs: 0 Modulators: 0 Input/Output configuration ioctls: test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported) test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported) test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported) test VIDIOC_G/S_EDID: OK (Not Supported) Control ioctls (Input 0): test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK test VIDIOC_QUERYCTRL: OK test VIDIOC_G/S_CTRL: OK test VIDIOC_G/S/TRY_EXT_CTRLS: OK test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) Standard Controls: 17 Private Controls: 0 Format ioctls (Input 0): test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK test VIDIOC_G/S_PARM: OK (Not Supported) test VIDIOC_G_FBUF: OK (Not Supported) test VIDIOC_G_FMT: OK test VIDIOC_TRY_FMT: OK test VIDIOC_S_FMT: OK test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported) test Cropping: OK (Not Supported) test Composing: OK (Not Supported) test Scaling: OK Codec ioctls (Input 0): test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) test VIDIOC_G_ENC_INDEX: OK (Not Supported) test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported) Buffer ioctls (Input 0): test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK test VIDIOC_EXPBUF: OK test Requests: OK (Not Supported) Total for sun6i-csi device /dev/video0: 45, Succeeded: 45, Failed: 0, Warnings: 2 -- sun6i-isp-capture v4l2-compliance run v4l2-compliance SHA: not available, 32 bits Compliance test for sun6i-isp device /dev/video1: Driver Info: Driver name : sun6i-isp Card type : sun6i-isp-capture Bus info : platform:1cb8000.isp Driver version : 5.13.0 Capabilities : 0x84200001 Video Capture Streaming Extended Pix Format Device Capabilities Device Caps : 0x04200001 Video Capture Streaming Extended Pix Format Media Driver Info: Driver name : sun6i-isp Model : Allwinner ISP Capture Device Serial : Bus info : platform:1cb8000.isp Media version : 5.13.0 Hardware revision: 0x00000000 (0) Driver version : 5.13.0 Interface Info: ID : 0x03000017 Type : V4L Video Entity Info: ID : 0x00000015 (21) Name : sun6i-isp-capture Function : V4L2 I/O Pad 0x01000016 : 0: Sink, Must Connect Link 0x02000019: from remote pad 0x1000004 of entity 'sun6i-isp-proc': Data, Enabled, Immutable Required ioctls: test MC information (see 'Media Driver Info' above): OK test VIDIOC_QUERYCAP: OK Allow for multiple opens: test second /dev/video1 open: OK test VIDIOC_QUERYCAP: OK test VIDIOC_G/S_PRIORITY: OK test for unlimited opens: OK Debug ioctls: test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported) test VIDIOC_LOG_STATUS: OK Input ioctls: test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported) test VIDIOC_ENUMAUDIO: OK (Not Supported) test VIDIOC_G/S/ENUMINPUT: OK test VIDIOC_G/S_AUDIO: OK (Not Supported) Inputs: 1 Audio Inputs: 0 Tuners: 0 Output ioctls: test VIDIOC_G/S_MODULATOR: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_ENUMAUDOUT: OK (Not Supported) test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported) test VIDIOC_G/S_AUDOUT: OK (Not Supported) Outputs: 0 Audio Outputs: 0 Modulators: 0 Input/Output configuration ioctls: test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported) test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported) test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported) test VIDIOC_G/S_EDID: OK (Not Supported) Control ioctls (Input 0): test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK test VIDIOC_QUERYCTRL: OK test VIDIOC_G/S_CTRL: OK test VIDIOC_G/S/TRY_EXT_CTRLS: OK test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) Standard Controls: 17 Private Controls: 0 Format ioctls (Input 0): test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK test VIDIOC_G/S_PARM: OK (Not Supported) test VIDIOC_G_FBUF: OK (Not Supported) test VIDIOC_G_FMT: OK test VIDIOC_TRY_FMT: OK test VIDIOC_S_FMT: OK test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported) test Cropping: OK (Not Supported) test Composing: OK (Not Supported) test Scaling: OK Codec ioctls (Input 0): test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) test VIDIOC_G_ENC_INDEX: OK (Not Supported) test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported) Buffer ioctls (Input 0): test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK test VIDIOC_EXPBUF: OK test Requests: OK (Not Supported) Total for sun6i-isp device /dev/video1: 45, Succeeded: 45, Failed: 0, Warnings: 0 -- sun6i-isp-params v4l2-compliance run v4l2-compliance SHA: not available, 32 bits Compliance test for sun6i-isp device /dev/video2: Driver Info: Driver name : sun6i-isp Card type : sun6i-isp-params Bus info : platform:1cb8000.isp Driver version : 5.13.0 Capabilities : 0x8c200000 Metadata Output Streaming Extended Pix Format Device Capabilities Device Caps : 0x0c200000 Metadata Output Streaming Extended Pix Format Media Driver Info: Driver name : sun6i-isp Model : Allwinner ISP Capture Device Serial : Bus info : platform:1cb8000.isp Media version : 5.13.0 Hardware revision: 0x00000000 (0) Driver version : 5.13.0 Interface Info: ID : 0x0300001d Type : V4L Video Entity Info: ID : 0x0000001b (27) Name : sun6i-isp-params Function : V4L2 I/O Pad 0x0100001c : 0: Source, Must Connect Link 0x0200001f: to remote pad 0x1000003 of entity 'sun6i-isp-proc': Data, Enabled, Immutable Required ioctls: test MC information (see 'Media Driver Info' above): OK test VIDIOC_QUERYCAP: OK Allow for multiple opens: test second /dev/video2 open: OK test VIDIOC_QUERYCAP: OK test VIDIOC_G/S_PRIORITY: OK test for unlimited opens: OK Debug ioctls: test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported) test VIDIOC_LOG_STATUS: OK Input ioctls: test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported) test VIDIOC_ENUMAUDIO: OK (Not Supported) test VIDIOC_G/S/ENUMINPUT: OK (Not Supported) test VIDIOC_G/S_AUDIO: OK (Not Supported) Inputs: 0 Audio Inputs: 0 Tuners: 0 Output ioctls: test VIDIOC_G/S_MODULATOR: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_ENUMAUDOUT: OK (Not Supported) test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported) test VIDIOC_G/S_AUDOUT: OK (Not Supported) Outputs: 0 Audio Outputs: 0 Modulators: 0 Input/Output configuration ioctls: test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported) test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported) test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported) test VIDIOC_G/S_EDID: OK (Not Supported) Control ioctls: test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK test VIDIOC_QUERYCTRL: OK test VIDIOC_G/S_CTRL: OK test VIDIOC_G/S/TRY_EXT_CTRLS: OK test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) Standard Controls: 17 Private Controls: 0 Format ioctls: test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK test VIDIOC_G/S_PARM: OK (Not Supported) test VIDIOC_G_FBUF: OK (Not Supported) test VIDIOC_G_FMT: OK test VIDIOC_TRY_FMT: OK test VIDIOC_S_FMT: OK test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported) test Cropping: OK (Not Supported) test Composing: OK (Not Supported) test Scaling: OK (Not Supported) Codec ioctls: test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) test VIDIOC_G_ENC_INDEX: OK (Not Supported) test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported) Buffer ioctls: test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK test VIDIOC_EXPBUF: OK test Requests: OK (Not Supported) Total for sun6i-isp device /dev/video2: 45, Succeeded: 45, Failed: 0, Warnings: 0 Kévin L'hôpital (1): ARM: dts: sun8i: a83t: bananapi-m3: Enable MIPI CSI-2 with OV8865 Paul Kocialkowski (21): clk: sunxi-ng: v3s: Make the ISP PLL clock public ARM: dts: sun8i: v3s: Parent the CSI module clock to the ISP PLL dt-bindings: sun6i-a31-mipi-dphy: Add optional direction property phy: allwinner: phy-sun6i-mipi-dphy: Support D-PHY Rx mode for MIPI CSI-2 dt-bindings: media: sun6i-a31-csi: Add MIPI CSI-2 input port dt-bindings: media: Add Allwinner A31 MIPI CSI-2 bindings documentation media: sunxi: Add support for the A31 MIPI CSI-2 controller MAINTAINERS: Add entry for the Allwinner A31 MIPI CSI-2 bridge driver ARM: dts: sun8i: v3s: Add nodes for MIPI CSI-2 support dt-bindings: media: Add Allwinner A83T MIPI CSI-2 bindings documentation media: sunxi: Add support for the A83T MIPI CSI-2 controller MAINTAINERS: Add entry for the Allwinner A83T MIPI CSI-2 bridge ARM: dts: sun8i: a83t: Add MIPI CSI-2 controller node media: sunxi: Remove the sun6i-csi driver implementation media: sunxi: Introduce a rewritten sun6i-csi driver dt-bindings: media: Add Allwinner A31 ISP bindings documentation dt-bindings: media: sun6i-a31-csi: Add ISP output port soc: sunxi: mbus: Add A31 ISP compatibles to the list staging: media: Add support for the Allwinner A31 ISP MAINTAINERS: Add entry for the Allwinner A31 ISP driver ARM: dts: sun8i: v3s: Add support for the ISP .../media/allwinner,sun6i-a31-csi.yaml | 91 +- .../media/allwinner,sun6i-a31-isp.yaml | 111 ++ .../media/allwinner,sun6i-a31-mipi-csi2.yaml | 142 +++ .../media/allwinner,sun8i-a83t-mipi-csi2.yaml | 133 ++ .../phy/allwinner,sun6i-a31-mipi-dphy.yaml | 12 + MAINTAINERS | 25 + arch/arm/boot/dts/sun8i-a83t-bananapi-m3.dts | 102 ++ arch/arm/boot/dts/sun8i-a83t.dtsi | 26 + arch/arm/boot/dts/sun8i-v3s.dtsi | 108 ++ drivers/clk/sunxi-ng/ccu-sun8i-v3s.h | 1 - drivers/media/platform/sunxi/Kconfig | 2 + drivers/media/platform/sunxi/Makefile | 2 + .../media/platform/sunxi/sun6i-csi/Makefile | 2 +- .../platform/sunxi/sun6i-csi/sun6i_csi.c | 1051 +++++----------- .../platform/sunxi/sun6i-csi/sun6i_csi.h | 155 +-- .../sunxi/sun6i-csi/sun6i_csi_bridge.c | 895 ++++++++++++++ .../sunxi/sun6i-csi/sun6i_csi_bridge.h | 64 + .../sunxi/sun6i-csi/sun6i_csi_capture.c | 1094 +++++++++++++++++ .../sunxi/sun6i-csi/sun6i_csi_capture.h | 73 ++ .../platform/sunxi/sun6i-csi/sun6i_csi_reg.h | 364 +++--- .../platform/sunxi/sun6i-csi/sun6i_video.c | 683 ---------- .../platform/sunxi/sun6i-csi/sun6i_video.h | 38 - .../platform/sunxi/sun6i-mipi-csi2/Kconfig | 12 + .../platform/sunxi/sun6i-mipi-csi2/Makefile | 4 + .../sunxi/sun6i-mipi-csi2/sun6i_mipi_csi2.c | 746 +++++++++++ .../sunxi/sun6i-mipi-csi2/sun6i_mipi_csi2.h | 52 + .../sun6i-mipi-csi2/sun6i_mipi_csi2_reg.h | 82 ++ .../sunxi/sun8i-a83t-mipi-csi2/Kconfig | 11 + .../sunxi/sun8i-a83t-mipi-csi2/Makefile | 4 + .../sun8i-a83t-mipi-csi2/sun8i_a83t_dphy.c | 72 ++ .../sun8i-a83t-mipi-csi2/sun8i_a83t_dphy.h | 39 + .../sun8i_a83t_mipi_csi2.c | 812 ++++++++++++ .../sun8i_a83t_mipi_csi2.h | 55 + .../sun8i_a83t_mipi_csi2_reg.h | 157 +++ drivers/phy/allwinner/phy-sun6i-mipi-dphy.c | 166 ++- drivers/soc/sunxi/sunxi_mbus.c | 2 + drivers/staging/media/sunxi/Kconfig | 1 + drivers/staging/media/sunxi/Makefile | 1 + drivers/staging/media/sunxi/sun6i-isp/Kconfig | 13 + .../staging/media/sunxi/sun6i-isp/Makefile | 4 + .../staging/media/sunxi/sun6i-isp/sun6i_isp.c | 577 +++++++++ .../staging/media/sunxi/sun6i-isp/sun6i_isp.h | 86 ++ .../media/sunxi/sun6i-isp/sun6i_isp_capture.c | 759 ++++++++++++ .../media/sunxi/sun6i-isp/sun6i_isp_capture.h | 79 ++ .../media/sunxi/sun6i-isp/sun6i_isp_params.c | 571 +++++++++ .../media/sunxi/sun6i-isp/sun6i_isp_params.h | 53 + .../media/sunxi/sun6i-isp/sun6i_isp_proc.c | 598 +++++++++ .../media/sunxi/sun6i-isp/sun6i_isp_proc.h | 61 + .../media/sunxi/sun6i-isp/sun6i_isp_reg.h | 275 +++++ .../sunxi/sun6i-isp/uapi/sun6i-isp-config.h | 43 + include/dt-bindings/clock/sun8i-v3s-ccu.h | 1 + 51 files changed, 8702 insertions(+), 1808 deletions(-) create mode 100644 Documentation/devicetree/bindings/media/allwinner,sun6i-a31-isp.yaml create mode 100644 Documentation/devicetree/bindings/media/allwinner,sun6i-a31-mipi-csi2.yaml create mode 100644 Documentation/devicetree/bindings/media/allwinner,sun8i-a83t-mipi-csi2.yaml create mode 100644 drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_bridge.c create mode 100644 drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_bridge.h create mode 100644 drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_capture.c create mode 100644 drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_capture.h delete mode 100644 drivers/media/platform/sunxi/sun6i-csi/sun6i_video.c delete mode 100644 drivers/media/platform/sunxi/sun6i-csi/sun6i_video.h create mode 100644 drivers/media/platform/sunxi/sun6i-mipi-csi2/Kconfig create mode 100644 drivers/media/platform/sunxi/sun6i-mipi-csi2/Makefile create mode 100644 drivers/media/platform/sunxi/sun6i-mipi-csi2/sun6i_mipi_csi2.c create mode 100644 drivers/media/platform/sunxi/sun6i-mipi-csi2/sun6i_mipi_csi2.h create mode 100644 drivers/media/platform/sunxi/sun6i-mipi-csi2/sun6i_mipi_csi2_reg.h create mode 100644 drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/Kconfig create mode 100644 drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/Makefile create mode 100644 drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/sun8i_a83t_dphy.c create mode 100644 drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/sun8i_a83t_dphy.h create mode 100644 drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/sun8i_a83t_mipi_csi2.c create mode 100644 drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/sun8i_a83t_mipi_csi2.h create mode 100644 drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/sun8i_a83t_mipi_csi2_reg.h create mode 100644 drivers/staging/media/sunxi/sun6i-isp/Kconfig create mode 100644 drivers/staging/media/sunxi/sun6i-isp/Makefile create mode 100644 drivers/staging/media/sunxi/sun6i-isp/sun6i_isp.c create mode 100644 drivers/staging/media/sunxi/sun6i-isp/sun6i_isp.h create mode 100644 drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_capture.c create mode 100644 drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_capture.h create mode 100644 drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_params.c create mode 100644 drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_params.h create mode 100644 drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_proc.c create mode 100644 drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_proc.h create mode 100644 drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_reg.h create mode 100644 drivers/staging/media/sunxi/sun6i-isp/uapi/sun6i-isp-config.h -- 2.32.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=-12.1 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,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 2DF31C433F5 for ; Fri, 10 Sep 2021 18:43:56 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id DE47261246 for ; Fri, 10 Sep 2021 18:43:55 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org DE47261246 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=bootlin.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org 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: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:In-Reply-To:References: List-Owner; bh=Cc+hPZqtAurN2Ims04UmHKKqhNFN4GvumXHV/rJUfiY=; b=CGZRZJtpLs2wBb V3UkwN9tFas60b6VERI8OSgDSK4Rg65dBi/GSPcxl2ZX9gLVUYXFi8LBeCcfTplH9n4crVBWr+uRt BW1gx5xdZe3NtY0rVyDWc1Kd4o3dhIx2qtfGCG0QZBDkeitn6YggvPurMy3EQw3RYAT+Bw67Zixf7 W0ZWj4iHKFyzoxTdHGyF5JFnaEYQaENQH7l0Zw76G4seUXas6eAqGkfhI2NeTHF6BYmYWSVfqdhen 2C5O58ASbzTRCzC1hzKXOM6HCYeNF6GYztOvtd4h+w/n3z9i2fUb7J6tL216NjAIHalB2Mpz6FONB WhhHLYfwbkON9j/o4tLA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mOlVD-00DMaI-Bs; Fri, 10 Sep 2021 18:43:55 +0000 Received: from relay10.mail.gandi.net ([217.70.178.230]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mOlTh-00DLqY-PZ; Fri, 10 Sep 2021 18:42:25 +0000 Received: (Authenticated sender: paul.kocialkowski@bootlin.com) by relay10.mail.gandi.net (Postfix) with ESMTPSA id 11C7F240003; Fri, 10 Sep 2021 18:42:10 +0000 (UTC) From: Paul Kocialkowski To: linux-media@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, linux-clk@vger.kernel.org, linux-staging@lists.linux.dev Cc: Yong Deng , Mauro Carvalho Chehab , Rob Herring , Maxime Ripard , Sakari Ailus , Hans Verkuil , Chen-Yu Tsai , Jernej Skrabec , Paul Kocialkowski , Greg Kroah-Hartman , Helen Koike , Laurent Pinchart , Thomas Petazzoni Subject: [PATCH 00/22] Allwinner A31/A83T MIPI CSI-2 Support and A31 ISP Support Date: Fri, 10 Sep 2021 20:41:25 +0200 Message-Id: <20210910184147.336618-1-paul.kocialkowski@bootlin.com> X-Mailer: git-send-email 2.32.0 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210910_114222_133949_26E10DA4 X-CRM114-Status: GOOD ( 19.04 ) 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: , 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 VGhpcyBzZXJpZXMgaW50cm9kdWNlcyBzdXBwb3J0IGZvciB0aGUgQWxsd2lubmVyIEEzMSBhbmQg QTgzVCBNSVBJIENTSS0yCmNvbnRyb2xsZXJzIGFzIHdlbGwgYXMgdGhlIEFsbHdpbm5lciBBMzEg SW1hZ2UgU2lnbmFsIFByb2Nlc3NvciAoSVNQKS4KSXQgZm9sbG93cyB2NSBvZiB0aGUgIkFsbHdp bm5lciBNSVBJIENTSS0yIHN1cHBvcnQgZm9yIEEzMS9WM3MvQTgzVCIKc2VyaWVzLCB3aXRoIHRo ZSBhZGRpdGlvbiBvZiBJU1Agc3VwcG9ydCBmb3IgdGhlIFYzLiBTaW5jZSBib3RoIGFzcGVjdAph cmUgcXVpdGUgZGVwZW5kZW50IGR1ZSB0byBjaGFuZ2VzIHRvIHRoZSBzdW42aS1jc2kgZHJpdmVy LCB0aGV5IGFyZQptZXJnZWQgaW50byB0aGlzIG5ldyBzZXJpZXMuCgpBc2lkZSBmcm9tIHRoZSBJ U1AgZHJpdmVyIGl0c2VsZiwgdGhlIG1vc3Qgb3V0c3RhbmRpbmcgY2hhbmdlIGlzIGEKY29tcGxl dGUgcmV3cml0ZSBvZiB0aGUgQ1NJIGRyaXZlciwgZm9yIHRoZSBzcGVjaWZpYyByZWFzb25zIHRo YXQgYXJlCmV4cG9zZWQgaW4gdGhlIGNvbW1pdCBtZXNzYWdlIGludHJvZHVjaW5nIHRoZSBuZXcg ZHJpdmVyLgoKVGhlIGNvbW1pdCBtZXNzYWdlIGludHJvZHVjaW5nIHRoZSBJU1AgZHJpdmVyIHNo b3VsZCBhbHNvIGNvbnRhaW4gdXNlZnVsCmRldGFpbHMgcmVnYXJkaW5nIHRoZSBpbXBsZW1lbnRh dGlvbiBhbmQgb3V0c3RhbmRpbmcgc3BlY2lmaWNzIG9mIHRoZSBoYXJkd2FyZS4KClRoaXMgd2Fz IHRlc3RlZCBvbiB0aGUgVjNzIGFuZCBBODNULCB1c2luZyB0aGUgZm9sbG93aW5nIHNlbnNvcnM6 Ci0gSU1YMjE5Ci0gT1Y1NjQ4Ci0gT1Y4ODU2Ci0gT1Y4ODY1Cgp2NGwyLWNvbXBsaWFuY2Ugc2Vl bXMgcHJldHR5IGhhcHB5IGFib3V0IHRoZSB2aWRlbyBub2Rlcywgc2VlIHRoZSBkZXRhaWxlZApy ZXBvcnRzIGJlbG93LgoKVGhhbmtzIQoKQ2hhbmdlcyBzaW5jZSB2NSBvZiB0aGUgTUlQSSBDU0kt MiBzZXJpZXM6Ci0gRC1QSFkgZGlyZWN0aW9uIGlzIG5vIGxvbmdlciByZXByZXNlbnRlZCB3aXRo IGEgc3VibW9kZSBzaW5jZSB0aGlzIGlzCiAgbm90IGEgcnVudGltZSBkZWNpc2lvbjogbm8gc3dp dGNoaW5nIGJldHdlZW4gdGhlIHR3byBzdWJtb2RlcyBpcwogIHBvc3NpYmxlIGFuZCBlYWNoIGlu c3RhbmNlIG9mIGEgY29udHJvbGxlciB3aWxsIGJlIGRlZGljYXRlZCB0byBvbmUKICBkaXJlY3Rp b24gb25seS4gSW5zdGVhZCwgYSBkZXZpY2UtdHJlZSBwcm9wZXJ0eSBpcyB1c2VkLgogIEEgc2Vw YXJhdGUgY29tcGF0aWJsZSB3YXMgY29uc2lkZXJlZCwgYnV0IGl0IGZlZWxzIHVuZml0IHNpbmNl IHRoZQogIGRpcmVjdGlvbiBkb2VzIG5vdCBkZXNjcmliZSB0aGUgcGFydGljdWxhciB0eXBlIG9m IGhhcmR3YXJlCiAgaW1wbGVtZW50YXRpb24sIGJ1dCByYXRoZXIgaG93IGl0IGlzIHVzZWQ7Ci0g VXBkYXRlZCBjb21tZW50cyBhYm91dCBjaGFubmVscyBiYXNlZCBvbiBsYXRlc3QgaW5mb3JtYXRp b247Ci0gVmFyaW91cyBjb3NtZXRpYyBjaGFuZ2VzIChhbmQgc3BsaXR0aW5nKSB0byB0aGUgY29k ZTsKCi0tIEFsbHdpbm5lciBNSVBJIENTSS0yIHN1cHBvcnQgZm9yIEEzMS9WM3MvQTgzVCBjaGFu Z2Vsb2cKCkNoYW5nZXMgc2luY2UgdjQ6Ci0gQWRkZWQgcGF0Y2ggdG8gc3RvcCB1c2luZyB2NGwy X2FzeW5jX25vdGlmaWVyX3BhcnNlX2Z3bm9kZV9lbmRwb2ludHM7Ci0gRml4ZWQgY2hlY2twYXRj aCBzdHJpY3QgaXNzdWVzIChwYXJlbnRoZXNpcyBhbGlnbm1lbnQpOwotIEZpeGVkIHJ1bnRpbWUg UE0gY2FsbCBvcmRlciBhbmQgZGlzYWJsZTsKLSBGaXhlZCBmd25vZGVfaGFuZGxlX3B1dCBvcmRl cjsKLSBCcm91Z2h0IGJhY2sgcGh5LW5hbWVzIGZvciBBMzEgc2luY2UgaXQncyBtYW5kYXRvcnkg YWNjb3JkaW5nIHRvIHRoZSBnZW5lcmljCiAgUEhZIGJpbmRpbmcgYW5kIG5lZWRlZCBieSB0aGUg Y29kZTsKLSBBZGRlZCBjb2xsZWN0ZWQgdGFncy4KCkNoYW5nZXMgc2luY2UgdjM6Ci0gRml4ZWQg c2luZ2xlLWl0ZW0gcGh5cyBkZXNjcmlwdGlvbiBpbiBzdW42aSBtaXBpIGNzaS0yIGJpbmRpbmc7 Ci0gRml4ZWQgdmFyaWFibGVzIG5hbWVzIGluIG1hY3JvcyB1c2luZyBjb250YWluZXJfb2Y7Ci0g Rml4ZWQgc3R5bGUgaXNzdWUgd2l0aCBvcGVyYXRvcnMgYXQgdGhlIGVuZCBvZiBsaW5lczsKLSBS ZXdvcmtlZCBzb3VyY2UgZW5kcG9pbnQvc3ViZGV2IGFzc2lnbm1lbnQgaW4gc3VuNmktY3NpIHRv IGhhbmRsZQogIGxpbmtfdmFsaWRhdGUgZXJyb3IgY2FzZTsKLSBSZW1vdmVkIHVucmVsYXRlZCBk dCBjaGFuZ2UgaW4gc3VuOGktYTgzdCBtaXBpIGNzaS0yIGRyaXZlcjsKLSBBZGRlZCBjb2xsZWN0 ZWQgdGFncy4KCkNoYW5nZXMgc2luY2UgdjI6Ci0gYWRkZWQgS2NvbmZpZyBkZXBlbmQgb24gUE0g c2luY2UgaXQncyBub3Qgb3B0aW9uYWw7Ci0gcmVtb3ZlZCBwaHktbmFtZXMgZm9yIEEzMSBNSVBJ IENTSS0yIGNvbnRyb2xsZXI7Ci0gcmVtb3ZlZCB2M3MgY29tcGF0aWJsZSBpbiB0aGUgQTMxIE1J UEkgQ1NJLTIgY29udHJvbGxlciBkcml2ZXI7Ci0gcmVtb3ZlZCBBMzEgQ1NJIGNvbnRyb2xsZXIg c2luZ2xlLXBvcnQgYmluZGluZyBkZXByZWNhdGlvbjsKLSByZW1vdmVkIGVtcHR5IGR0IHBvcnQg ZGVmaW5pdGlvbnM7Ci0gZml4ZWQgbWlub3IgY2hlY2twYXRjaCB3YXJuaW5nczsKLSBhZGRlZCBj b2xsZWN0ZWQgdGFnczsKLSBhZGRlZCBtZWRpYS1jdGwgb3V0cHV0IGluIGNvdmVyIGxldHRlci4K CkNoYW5nZXMgc2luY2UgdjE6Ci0gcmV3b3JrZWQgZndub2RlIGFuZCBtZWRpYSBncmFwaCBvbiB0 aGUgQ1NJIGNvbnRyb2xsZXIgZW5kIHRvIGhhdmUgb25lIHBvcnQKICBwZXIgaW50ZXJmYWNlLCB3 aGljaCBzb2x2ZXMgdGhlIGJ1cyB0eXBlIHJlcHJlc2VudGF0aW9uIGlzc3VlOwotIHJlbW92ZWQg dW51c2VkIElSUSBoYW5kbGVycyBpbiB0aGUgTUlQSSBDU0ktMiBicmlkZ2VzOwotIGF2b2lkZWQg dGhlIHVzZSBvZiBkZXZtX3JlZ21hcF9pbml0X21taW9fY2xrOwotIGRlYXNzZXJ0ZWQgcmVzZXQg YmVmb3JlIGVuYWJsaW5nIGNsb2NrczsKLSBmaXhlZCByZXBvcnRlZCByZXR1cm4gY29kZSBpc3N1 ZXMgKHJldCB8PSwgbWlzc2luZyBjaGVja3MpOwotIGFwcGxpZWQgcmVxdWVzdGVkIGNvc21ldGlj IGNoYW5nZXMgKGJhY2t3YXJkIGdvdG8sIGV0Yyk7Ci0gc3dpdGNoZWQgb3ZlciB0byBydW50aW1l IFBNIGZvciB0aGUgbWlwaSBjc2ktMiBicmlkZ2UgZHJpdmVyczsKLSBzZWxlY3RlZCBQSFlfU1VO NklfTUlQSV9EUEhZIGluIEtjb25maWcgZm9yIHN1bjZpLW1pcGktY3NpMjsKLSByZWdpc3RlcmVk IG5vZGVzIHdpdGggbWlwaSBjc2ktMiBicmlkZ2Ugc3ViZGV2czsKLSB1c2VkIFY0TDIgZm9ybWF0 IGluZm8gaW5zdGVhZCBvZiBzd2l0Y2gvY2FzZSBmb3Igc3VuNmktY3NpIGJwcDsKLSBmaXhlZCBk ZXZpY2UtdHJlZSBiaW5kaW5ncyBhcyByZXF1ZXN0ZWQgKHVzZWxlc3MgcHJvcGVydGllcywgbGlj ZW5zZSk7Ci0gZml4ZWQgbWlwaSBicmlkZ2UgZHQgaW5zdGFuY2VzIG5hbWVzOwotIGFkZGVkIFBI WSBBUEkgZG9jdW1lbnRhdGlvbiBhYm91dCBtb2RlL3Bvd2VyIG9uIG9yZGVyIHJlcXVpcmVtZW50 OwotIGZpeGVkIGNsb2NrIGVycm9yIHJldHVybiBjb2RlIGluIGQtcGh5IGNvZGU7Ci0gZml4ZWQg RC1QSFkgbW9kZSBjaGVjayBpbiBkLXBoeSBjb2RlOwotIGFkZGVkIE1BSU5UQUlORVJTIGVudHJp ZXMgZm9yIHRoZSBuZXcgZHJpdmVyczsKLSBhZGRlZCBWNEwyIGNvbXBsaWFuY2UgcmVzdWx0czsK LSBhZGRlZCB2YXJpb3VzIGNvbW1lbnRzIGFuZCByZXdvcmsgY29tbWl0IG1lc2FnZXMgYXMgcmVx dWVzdGVkLgoKLS0gVjMgbWVkaWEgdG9wb2xvZ3kKCk1lZGlhIGNvbnRyb2xsZXIgQVBJIHZlcnNp b24gNS4xMy4wCgpNZWRpYSBkZXZpY2UgaW5mb3JtYXRpb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCmRyaXZlciAgICAgICAgICBzdW42aS1pc3AKbW9kZWwgICAgICAgICAgIEFsbHdpbm5lciBJ U1AgQ2FwdHVyZSBEZXZpY2UKc2VyaWFsICAgICAgICAgIApidXMgaW5mbyAgICAgICAgcGxhdGZv cm06MWNiODAwMC5pc3AKaHcgcmV2aXNpb24gICAgIDB4MApkcml2ZXIgdmVyc2lvbiAgNS4xMy4w CgpEZXZpY2UgdG9wb2xvZ3kKLSBlbnRpdHkgMTogc3VuNmktaXNwLXByb2MgKDMgcGFkcywgMyBs aW5rcykKICAgICAgICAgICAgdHlwZSBWNEwyIHN1YmRldiBzdWJ0eXBlIFVua25vd24gZmxhZ3Mg MAogICAgICAgICAgICBkZXZpY2Ugbm9kZSBuYW1lIC9kZXYvdjRsLXN1YmRldjAKCXBhZDA6IFNp bmsKCQlbZm10OlNSR0dCOF8xWDgvMTkyMHgxMDgwIGZpZWxkOm5vbmUgY29sb3JzcGFjZTpyYXdd CgkJPC0gInN1bjZpLWNzaS1icmlkZ2UiOjEgW0VOQUJMRURdCglwYWQxOiBTaW5rCgkJW2ZtdDpT UkdHQjhfMVg4LzE5MjB4MTA4MCBmaWVsZDpub25lIGNvbG9yc3BhY2U6cmF3XQoJCTwtICJzdW42 aS1pc3AtcGFyYW1zIjowIFtFTkFCTEVELElNTVVUQUJMRV0KCXBhZDI6IFNvdXJjZQoJCVtmbXQ6 U1JHR0I4XzFYOC8xOTIweDEwODAgZmllbGQ6bm9uZSBjb2xvcnNwYWNlOnJhd10KCQktPiAic3Vu NmktaXNwLWNhcHR1cmUiOjAgW0VOQUJMRUQsSU1NVVRBQkxFXQoKLSBlbnRpdHkgNTogc3VuNmkt Y3NpLWJyaWRnZSAoMiBwYWRzLCAzIGxpbmtzKQogICAgICAgICAgICB0eXBlIFY0TDIgc3ViZGV2 IHN1YnR5cGUgVW5rbm93biBmbGFncyAwCiAgICAgICAgICAgIGRldmljZSBub2RlIG5hbWUgL2Rl di92NGwtc3ViZGV2MQoJcGFkMDogU2luawoJCVtmbXQ6U1JHR0I4XzFYOC8xOTIweDEwODAgZmll bGQ6bm9uZSBjb2xvcnNwYWNlOnJhd10KCQk8LSAic3VuNmktbWlwaS1jc2kyIjoxIFtFTkFCTEVE XQoJcGFkMTogU291cmNlCgkJW2ZtdDpTUkdHQjhfMVg4LzE5MjB4MTA4MCBmaWVsZDpub25lIGNv bG9yc3BhY2U6cmF3XQoJCS0+ICJzdW42aS1pc3AtcHJvYyI6MCBbRU5BQkxFRF0KCQktPiAic3Vu NmktY3NpLWNhcHR1cmUiOjAgW10KCi0gZW50aXR5IDEwOiBzdW42aS1taXBpLWNzaTIgKDIgcGFk cywgMiBsaW5rcykKICAgICAgICAgICAgIHR5cGUgVjRMMiBzdWJkZXYgc3VidHlwZSBVbmtub3du IGZsYWdzIDAKICAgICAgICAgICAgIGRldmljZSBub2RlIG5hbWUgL2Rldi92NGwtc3ViZGV2MgoJ cGFkMDogU2luawoJCVtmbXQ6U1JHR0I4XzFYOC8xOTIweDEwODAgZmllbGQ6bm9uZSBjb2xvcnNw YWNlOnJhd10KCQk8LSAiaW14MjE5IDEtMDAxMCI6MCBbRU5BQkxFRCxJTU1VVEFCTEVdCglwYWQx OiBTb3VyY2UKCQlbZm10OlNSR0dCOF8xWDgvMTkyMHgxMDgwIGZpZWxkOm5vbmUgY29sb3JzcGFj ZTpyYXddCgkJLT4gInN1bjZpLWNzaS1icmlkZ2UiOjAgW0VOQUJMRURdCgotIGVudGl0eSAxMzog c3VuNmktY3NpLWNhcHR1cmUgKDEgcGFkLCAxIGxpbmspCiAgICAgICAgICAgICB0eXBlIE5vZGUg c3VidHlwZSBWNEwgZmxhZ3MgMAogICAgICAgICAgICAgZGV2aWNlIG5vZGUgbmFtZSAvZGV2L3Zp ZGVvMAoJcGFkMDogU2luawoJCTwtICJzdW42aS1jc2ktYnJpZGdlIjoxIFtdCgotIGVudGl0eSAy MTogc3VuNmktaXNwLWNhcHR1cmUgKDEgcGFkLCAxIGxpbmspCiAgICAgICAgICAgICB0eXBlIE5v ZGUgc3VidHlwZSBWNEwgZmxhZ3MgMAogICAgICAgICAgICAgZGV2aWNlIG5vZGUgbmFtZSAvZGV2 L3ZpZGVvMQoJcGFkMDogU2luawoJCTwtICJzdW42aS1pc3AtcHJvYyI6MiBbRU5BQkxFRCxJTU1V VEFCTEVdCgotIGVudGl0eSAyNzogc3VuNmktaXNwLXBhcmFtcyAoMSBwYWQsIDEgbGluaykKICAg ICAgICAgICAgIHR5cGUgTm9kZSBzdWJ0eXBlIFY0TCBmbGFncyAwCiAgICAgICAgICAgICBkZXZp Y2Ugbm9kZSBuYW1lIC9kZXYvdmlkZW8yCglwYWQwOiBTb3VyY2UKCQktPiAic3VuNmktaXNwLXBy b2MiOjEgW0VOQUJMRUQsSU1NVVRBQkxFXQoKLSBlbnRpdHkgMzM6IGlteDIxOSAxLTAwMTAgKDEg cGFkLCAxIGxpbmspCiAgICAgICAgICAgICB0eXBlIFY0TDIgc3ViZGV2IHN1YnR5cGUgU2Vuc29y IGZsYWdzIDAKICAgICAgICAgICAgIGRldmljZSBub2RlIG5hbWUgL2Rldi92NGwtc3ViZGV2MwoJ cGFkMDogU291cmNlCgkJW2ZtdDpTUkdHQjhfMVg4LzE5MjB4MTA4MCBmaWVsZDpub25lIGNvbG9y c3BhY2U6c3JnYiB4ZmVyOnNyZ2IgeWNiY3I6NjAxIHF1YW50aXphdGlvbjpmdWxsLXJhbmdlCgkJ IGNyb3AuYm91bmRzOig4LDgpLzMyODB4MjQ2NAoJCSBjcm9wOig2ODgsNzAwKS8xOTIweDEwODBd CgkJLT4gInN1bjZpLW1pcGktY3NpMiI6MCBbRU5BQkxFRCxJTU1VVEFCTEVdCgotLSBzdW42aS1j c2ktY2FwdHVyZSB2NGwyLWNvbXBsaWFuY2UgcnVuCgp2NGwyLWNvbXBsaWFuY2UgU0hBOiBub3Qg YXZhaWxhYmxlLCAzMiBiaXRzCgpDb21wbGlhbmNlIHRlc3QgZm9yIHN1bjZpLWNzaSBkZXZpY2Ug L2Rldi92aWRlbzA6CgpEcml2ZXIgSW5mbzoKCURyaXZlciBuYW1lICAgICAgOiBzdW42aS1jc2kK CUNhcmQgdHlwZSAgICAgICAgOiBzdW42aS1jc2ktY2FwdHVyZQoJQnVzIGluZm8gICAgICAgICA6 IHBsYXRmb3JtOjFjYjAwMDAuY2FtZXJhCglEcml2ZXIgdmVyc2lvbiAgIDogNS4xMy4wCglDYXBh YmlsaXRpZXMgICAgIDogMHg4NDIwMDAwMQoJCVZpZGVvIENhcHR1cmUKCQlTdHJlYW1pbmcKCQlF eHRlbmRlZCBQaXggRm9ybWF0CgkJRGV2aWNlIENhcGFiaWxpdGllcwoJRGV2aWNlIENhcHMgICAg ICA6IDB4MDQyMDAwMDEKCQlWaWRlbyBDYXB0dXJlCgkJU3RyZWFtaW5nCgkJRXh0ZW5kZWQgUGl4 IEZvcm1hdApNZWRpYSBEcml2ZXIgSW5mbzoKCURyaXZlciBuYW1lICAgICAgOiBzdW42aS1pc3AK CU1vZGVsICAgICAgICAgICAgOiBBbGx3aW5uZXIgSVNQIENhcHR1cmUgRGV2aWNlCglTZXJpYWwg ICAgICAgICAgIDogCglCdXMgaW5mbyAgICAgICAgIDogcGxhdGZvcm06MWNiODAwMC5pc3AKCU1l ZGlhIHZlcnNpb24gICAgOiA1LjEzLjAKCUhhcmR3YXJlIHJldmlzaW9uOiAweDAwMDAwMDAwICgw KQoJRHJpdmVyIHZlcnNpb24gICA6IDUuMTMuMApJbnRlcmZhY2UgSW5mbzoKCUlEICAgICAgICAg ICAgICAgOiAweDAzMDAwMDBmCglUeXBlICAgICAgICAgICAgIDogVjRMIFZpZGVvCkVudGl0eSBJ bmZvOgoJSUQgICAgICAgICAgICAgICA6IDB4MDAwMDAwMGQgKDEzKQoJTmFtZSAgICAgICAgICAg ICA6IHN1bjZpLWNzaS1jYXB0dXJlCglGdW5jdGlvbiAgICAgICAgIDogVjRMMiBJL08KCVBhZCAw eDAxMDAwMDBlICAgOiAwOiBTaW5rCgkgIExpbmsgMHgwMjAwMDAxMTogZnJvbSByZW1vdGUgcGFk IDB4MTAwMDAwNyBvZiBlbnRpdHkgJ3N1bjZpLWNzaS1icmlkZ2UnOiBEYXRhCgpSZXF1aXJlZCBp b2N0bHM6Cgl0ZXN0IE1DIGluZm9ybWF0aW9uIChzZWUgJ01lZGlhIERyaXZlciBJbmZvJyBhYm92 ZSk6IE9LCgkJd2FybjogdjRsMi1jb21wbGlhbmNlLmNwcCg2MzMpOiBtZWRpYSBidXNfaW5mbyAn cGxhdGZvcm06MWNiODAwMC5pc3AnIGRpZmZlcnMgZnJvbSBWNEwyIGJ1c19pbmZvICdwbGF0Zm9y bToxY2IwMDAwLmNhbWVyYScKCXRlc3QgVklESU9DX1FVRVJZQ0FQOiBPSwoKQWxsb3cgZm9yIG11 bHRpcGxlIG9wZW5zOgoJdGVzdCBzZWNvbmQgL2Rldi92aWRlbzAgb3BlbjogT0sKCQl3YXJuOiB2 NGwyLWNvbXBsaWFuY2UuY3BwKDYzMyk6IG1lZGlhIGJ1c19pbmZvICdwbGF0Zm9ybToxY2I4MDAw LmlzcCcgZGlmZmVycyBmcm9tIFY0TDIgYnVzX2luZm8gJ3BsYXRmb3JtOjFjYjAwMDAuY2FtZXJh JwoJdGVzdCBWSURJT0NfUVVFUllDQVA6IE9LCgl0ZXN0IFZJRElPQ19HL1NfUFJJT1JJVFk6IE9L Cgl0ZXN0IGZvciB1bmxpbWl0ZWQgb3BlbnM6IE9LCgpEZWJ1ZyBpb2N0bHM6Cgl0ZXN0IFZJRElP Q19EQkdfRy9TX1JFR0lTVEVSOiBPSyAoTm90IFN1cHBvcnRlZCkKCXRlc3QgVklESU9DX0xPR19T VEFUVVM6IE9LCgpJbnB1dCBpb2N0bHM6Cgl0ZXN0IFZJRElPQ19HL1NfVFVORVIvRU5VTV9GUkVR X0JBTkRTOiBPSyAoTm90IFN1cHBvcnRlZCkKCXRlc3QgVklESU9DX0cvU19GUkVRVUVOQ1k6IE9L IChOb3QgU3VwcG9ydGVkKQoJdGVzdCBWSURJT0NfU19IV19GUkVRX1NFRUs6IE9LIChOb3QgU3Vw cG9ydGVkKQoJdGVzdCBWSURJT0NfRU5VTUFVRElPOiBPSyAoTm90IFN1cHBvcnRlZCkKCXRlc3Qg VklESU9DX0cvUy9FTlVNSU5QVVQ6IE9LCgl0ZXN0IFZJRElPQ19HL1NfQVVESU86IE9LIChOb3Qg U3VwcG9ydGVkKQoJSW5wdXRzOiAxIEF1ZGlvIElucHV0czogMCBUdW5lcnM6IDAKCk91dHB1dCBp b2N0bHM6Cgl0ZXN0IFZJRElPQ19HL1NfTU9EVUxBVE9SOiBPSyAoTm90IFN1cHBvcnRlZCkKCXRl c3QgVklESU9DX0cvU19GUkVRVUVOQ1k6IE9LIChOb3QgU3VwcG9ydGVkKQoJdGVzdCBWSURJT0Nf RU5VTUFVRE9VVDogT0sgKE5vdCBTdXBwb3J0ZWQpCgl0ZXN0IFZJRElPQ19HL1MvRU5VTU9VVFBV VDogT0sgKE5vdCBTdXBwb3J0ZWQpCgl0ZXN0IFZJRElPQ19HL1NfQVVET1VUOiBPSyAoTm90IFN1 cHBvcnRlZCkKCU91dHB1dHM6IDAgQXVkaW8gT3V0cHV0czogMCBNb2R1bGF0b3JzOiAwCgpJbnB1 dC9PdXRwdXQgY29uZmlndXJhdGlvbiBpb2N0bHM6Cgl0ZXN0IFZJRElPQ19FTlVNL0cvUy9RVUVS WV9TVEQ6IE9LIChOb3QgU3VwcG9ydGVkKQoJdGVzdCBWSURJT0NfRU5VTS9HL1MvUVVFUllfRFZf VElNSU5HUzogT0sgKE5vdCBTdXBwb3J0ZWQpCgl0ZXN0IFZJRElPQ19EVl9USU1JTkdTX0NBUDog T0sgKE5vdCBTdXBwb3J0ZWQpCgl0ZXN0IFZJRElPQ19HL1NfRURJRDogT0sgKE5vdCBTdXBwb3J0 ZWQpCgpDb250cm9sIGlvY3RscyAoSW5wdXQgMCk6Cgl0ZXN0IFZJRElPQ19RVUVSWV9FWFRfQ1RS TC9RVUVSWU1FTlU6IE9LCgl0ZXN0IFZJRElPQ19RVUVSWUNUUkw6IE9LCgl0ZXN0IFZJRElPQ19H L1NfQ1RSTDogT0sKCXRlc3QgVklESU9DX0cvUy9UUllfRVhUX0NUUkxTOiBPSwoJdGVzdCBWSURJ T0NfKFVOKVNVQlNDUklCRV9FVkVOVC9EUUVWRU5UOiBPSwoJdGVzdCBWSURJT0NfRy9TX0pQRUdD T01QOiBPSyAoTm90IFN1cHBvcnRlZCkKCVN0YW5kYXJkIENvbnRyb2xzOiAxNyBQcml2YXRlIENv bnRyb2xzOiAwCgpGb3JtYXQgaW9jdGxzIChJbnB1dCAwKToKCXRlc3QgVklESU9DX0VOVU1fRk1U L0ZSQU1FU0laRVMvRlJBTUVJTlRFUlZBTFM6IE9LCgl0ZXN0IFZJRElPQ19HL1NfUEFSTTogT0sg KE5vdCBTdXBwb3J0ZWQpCgl0ZXN0IFZJRElPQ19HX0ZCVUY6IE9LIChOb3QgU3VwcG9ydGVkKQoJ dGVzdCBWSURJT0NfR19GTVQ6IE9LCgl0ZXN0IFZJRElPQ19UUllfRk1UOiBPSwoJdGVzdCBWSURJ T0NfU19GTVQ6IE9LCgl0ZXN0IFZJRElPQ19HX1NMSUNFRF9WQklfQ0FQOiBPSyAoTm90IFN1cHBv cnRlZCkKCXRlc3QgQ3JvcHBpbmc6IE9LIChOb3QgU3VwcG9ydGVkKQoJdGVzdCBDb21wb3Npbmc6 IE9LIChOb3QgU3VwcG9ydGVkKQoJdGVzdCBTY2FsaW5nOiBPSwoKQ29kZWMgaW9jdGxzIChJbnB1 dCAwKToKCXRlc3QgVklESU9DXyhUUllfKUVOQ09ERVJfQ01EOiBPSyAoTm90IFN1cHBvcnRlZCkK CXRlc3QgVklESU9DX0dfRU5DX0lOREVYOiBPSyAoTm90IFN1cHBvcnRlZCkKCXRlc3QgVklESU9D XyhUUllfKURFQ09ERVJfQ01EOiBPSyAoTm90IFN1cHBvcnRlZCkKCkJ1ZmZlciBpb2N0bHMgKElu cHV0IDApOgoJdGVzdCBWSURJT0NfUkVRQlVGUy9DUkVBVEVfQlVGUy9RVUVSWUJVRjogT0sKCXRl c3QgVklESU9DX0VYUEJVRjogT0sKCXRlc3QgUmVxdWVzdHM6IE9LIChOb3QgU3VwcG9ydGVkKQoK VG90YWwgZm9yIHN1bjZpLWNzaSBkZXZpY2UgL2Rldi92aWRlbzA6IDQ1LCBTdWNjZWVkZWQ6IDQ1 LCBGYWlsZWQ6IDAsIFdhcm5pbmdzOiAyCgotLSBzdW42aS1pc3AtY2FwdHVyZSB2NGwyLWNvbXBs aWFuY2UgcnVuCgp2NGwyLWNvbXBsaWFuY2UgU0hBOiBub3QgYXZhaWxhYmxlLCAzMiBiaXRzCgpD b21wbGlhbmNlIHRlc3QgZm9yIHN1bjZpLWlzcCBkZXZpY2UgL2Rldi92aWRlbzE6CgpEcml2ZXIg SW5mbzoKCURyaXZlciBuYW1lICAgICAgOiBzdW42aS1pc3AKCUNhcmQgdHlwZSAgICAgICAgOiBz dW42aS1pc3AtY2FwdHVyZQoJQnVzIGluZm8gICAgICAgICA6IHBsYXRmb3JtOjFjYjgwMDAuaXNw CglEcml2ZXIgdmVyc2lvbiAgIDogNS4xMy4wCglDYXBhYmlsaXRpZXMgICAgIDogMHg4NDIwMDAw MQoJCVZpZGVvIENhcHR1cmUKCQlTdHJlYW1pbmcKCQlFeHRlbmRlZCBQaXggRm9ybWF0CgkJRGV2 aWNlIENhcGFiaWxpdGllcwoJRGV2aWNlIENhcHMgICAgICA6IDB4MDQyMDAwMDEKCQlWaWRlbyBD YXB0dXJlCgkJU3RyZWFtaW5nCgkJRXh0ZW5kZWQgUGl4IEZvcm1hdApNZWRpYSBEcml2ZXIgSW5m bzoKCURyaXZlciBuYW1lICAgICAgOiBzdW42aS1pc3AKCU1vZGVsICAgICAgICAgICAgOiBBbGx3 aW5uZXIgSVNQIENhcHR1cmUgRGV2aWNlCglTZXJpYWwgICAgICAgICAgIDogCglCdXMgaW5mbyAg ICAgICAgIDogcGxhdGZvcm06MWNiODAwMC5pc3AKCU1lZGlhIHZlcnNpb24gICAgOiA1LjEzLjAK CUhhcmR3YXJlIHJldmlzaW9uOiAweDAwMDAwMDAwICgwKQoJRHJpdmVyIHZlcnNpb24gICA6IDUu MTMuMApJbnRlcmZhY2UgSW5mbzoKCUlEICAgICAgICAgICAgICAgOiAweDAzMDAwMDE3CglUeXBl ICAgICAgICAgICAgIDogVjRMIFZpZGVvCkVudGl0eSBJbmZvOgoJSUQgICAgICAgICAgICAgICA6 IDB4MDAwMDAwMTUgKDIxKQoJTmFtZSAgICAgICAgICAgICA6IHN1bjZpLWlzcC1jYXB0dXJlCglG dW5jdGlvbiAgICAgICAgIDogVjRMMiBJL08KCVBhZCAweDAxMDAwMDE2ICAgOiAwOiBTaW5rLCBN dXN0IENvbm5lY3QKCSAgTGluayAweDAyMDAwMDE5OiBmcm9tIHJlbW90ZSBwYWQgMHgxMDAwMDA0 IG9mIGVudGl0eSAnc3VuNmktaXNwLXByb2MnOiBEYXRhLCBFbmFibGVkLCBJbW11dGFibGUKClJl cXVpcmVkIGlvY3RsczoKCXRlc3QgTUMgaW5mb3JtYXRpb24gKHNlZSAnTWVkaWEgRHJpdmVyIElu Zm8nIGFib3ZlKTogT0sKCXRlc3QgVklESU9DX1FVRVJZQ0FQOiBPSwoKQWxsb3cgZm9yIG11bHRp cGxlIG9wZW5zOgoJdGVzdCBzZWNvbmQgL2Rldi92aWRlbzEgb3BlbjogT0sKCXRlc3QgVklESU9D X1FVRVJZQ0FQOiBPSwoJdGVzdCBWSURJT0NfRy9TX1BSSU9SSVRZOiBPSwoJdGVzdCBmb3IgdW5s aW1pdGVkIG9wZW5zOiBPSwoKRGVidWcgaW9jdGxzOgoJdGVzdCBWSURJT0NfREJHX0cvU19SRUdJ U1RFUjogT0sgKE5vdCBTdXBwb3J0ZWQpCgl0ZXN0IFZJRElPQ19MT0dfU1RBVFVTOiBPSwoKSW5w dXQgaW9jdGxzOgoJdGVzdCBWSURJT0NfRy9TX1RVTkVSL0VOVU1fRlJFUV9CQU5EUzogT0sgKE5v dCBTdXBwb3J0ZWQpCgl0ZXN0IFZJRElPQ19HL1NfRlJFUVVFTkNZOiBPSyAoTm90IFN1cHBvcnRl ZCkKCXRlc3QgVklESU9DX1NfSFdfRlJFUV9TRUVLOiBPSyAoTm90IFN1cHBvcnRlZCkKCXRlc3Qg VklESU9DX0VOVU1BVURJTzogT0sgKE5vdCBTdXBwb3J0ZWQpCgl0ZXN0IFZJRElPQ19HL1MvRU5V TUlOUFVUOiBPSwoJdGVzdCBWSURJT0NfRy9TX0FVRElPOiBPSyAoTm90IFN1cHBvcnRlZCkKCUlu cHV0czogMSBBdWRpbyBJbnB1dHM6IDAgVHVuZXJzOiAwCgpPdXRwdXQgaW9jdGxzOgoJdGVzdCBW SURJT0NfRy9TX01PRFVMQVRPUjogT0sgKE5vdCBTdXBwb3J0ZWQpCgl0ZXN0IFZJRElPQ19HL1Nf RlJFUVVFTkNZOiBPSyAoTm90IFN1cHBvcnRlZCkKCXRlc3QgVklESU9DX0VOVU1BVURPVVQ6IE9L IChOb3QgU3VwcG9ydGVkKQoJdGVzdCBWSURJT0NfRy9TL0VOVU1PVVRQVVQ6IE9LIChOb3QgU3Vw cG9ydGVkKQoJdGVzdCBWSURJT0NfRy9TX0FVRE9VVDogT0sgKE5vdCBTdXBwb3J0ZWQpCglPdXRw dXRzOiAwIEF1ZGlvIE91dHB1dHM6IDAgTW9kdWxhdG9yczogMAoKSW5wdXQvT3V0cHV0IGNvbmZp Z3VyYXRpb24gaW9jdGxzOgoJdGVzdCBWSURJT0NfRU5VTS9HL1MvUVVFUllfU1REOiBPSyAoTm90 IFN1cHBvcnRlZCkKCXRlc3QgVklESU9DX0VOVU0vRy9TL1FVRVJZX0RWX1RJTUlOR1M6IE9LIChO b3QgU3VwcG9ydGVkKQoJdGVzdCBWSURJT0NfRFZfVElNSU5HU19DQVA6IE9LIChOb3QgU3VwcG9y dGVkKQoJdGVzdCBWSURJT0NfRy9TX0VESUQ6IE9LIChOb3QgU3VwcG9ydGVkKQoKQ29udHJvbCBp b2N0bHMgKElucHV0IDApOgoJdGVzdCBWSURJT0NfUVVFUllfRVhUX0NUUkwvUVVFUllNRU5VOiBP SwoJdGVzdCBWSURJT0NfUVVFUllDVFJMOiBPSwoJdGVzdCBWSURJT0NfRy9TX0NUUkw6IE9LCgl0 ZXN0IFZJRElPQ19HL1MvVFJZX0VYVF9DVFJMUzogT0sKCXRlc3QgVklESU9DXyhVTilTVUJTQ1JJ QkVfRVZFTlQvRFFFVkVOVDogT0sKCXRlc3QgVklESU9DX0cvU19KUEVHQ09NUDogT0sgKE5vdCBT dXBwb3J0ZWQpCglTdGFuZGFyZCBDb250cm9sczogMTcgUHJpdmF0ZSBDb250cm9sczogMAoKRm9y bWF0IGlvY3RscyAoSW5wdXQgMCk6Cgl0ZXN0IFZJRElPQ19FTlVNX0ZNVC9GUkFNRVNJWkVTL0ZS QU1FSU5URVJWQUxTOiBPSwoJdGVzdCBWSURJT0NfRy9TX1BBUk06IE9LIChOb3QgU3VwcG9ydGVk KQoJdGVzdCBWSURJT0NfR19GQlVGOiBPSyAoTm90IFN1cHBvcnRlZCkKCXRlc3QgVklESU9DX0df Rk1UOiBPSwoJdGVzdCBWSURJT0NfVFJZX0ZNVDogT0sKCXRlc3QgVklESU9DX1NfRk1UOiBPSwoJ dGVzdCBWSURJT0NfR19TTElDRURfVkJJX0NBUDogT0sgKE5vdCBTdXBwb3J0ZWQpCgl0ZXN0IENy b3BwaW5nOiBPSyAoTm90IFN1cHBvcnRlZCkKCXRlc3QgQ29tcG9zaW5nOiBPSyAoTm90IFN1cHBv cnRlZCkKCXRlc3QgU2NhbGluZzogT0sKCkNvZGVjIGlvY3RscyAoSW5wdXQgMCk6Cgl0ZXN0IFZJ RElPQ18oVFJZXylFTkNPREVSX0NNRDogT0sgKE5vdCBTdXBwb3J0ZWQpCgl0ZXN0IFZJRElPQ19H X0VOQ19JTkRFWDogT0sgKE5vdCBTdXBwb3J0ZWQpCgl0ZXN0IFZJRElPQ18oVFJZXylERUNPREVS X0NNRDogT0sgKE5vdCBTdXBwb3J0ZWQpCgpCdWZmZXIgaW9jdGxzIChJbnB1dCAwKToKCXRlc3Qg VklESU9DX1JFUUJVRlMvQ1JFQVRFX0JVRlMvUVVFUllCVUY6IE9LCgl0ZXN0IFZJRElPQ19FWFBC VUY6IE9LCgl0ZXN0IFJlcXVlc3RzOiBPSyAoTm90IFN1cHBvcnRlZCkKClRvdGFsIGZvciBzdW42 aS1pc3AgZGV2aWNlIC9kZXYvdmlkZW8xOiA0NSwgU3VjY2VlZGVkOiA0NSwgRmFpbGVkOiAwLCBX YXJuaW5nczogMAoKLS0gc3VuNmktaXNwLXBhcmFtcyB2NGwyLWNvbXBsaWFuY2UgcnVuCgp2NGwy LWNvbXBsaWFuY2UgU0hBOiBub3QgYXZhaWxhYmxlLCAzMiBiaXRzCgpDb21wbGlhbmNlIHRlc3Qg Zm9yIHN1bjZpLWlzcCBkZXZpY2UgL2Rldi92aWRlbzI6CgpEcml2ZXIgSW5mbzoKCURyaXZlciBu YW1lICAgICAgOiBzdW42aS1pc3AKCUNhcmQgdHlwZSAgICAgICAgOiBzdW42aS1pc3AtcGFyYW1z CglCdXMgaW5mbyAgICAgICAgIDogcGxhdGZvcm06MWNiODAwMC5pc3AKCURyaXZlciB2ZXJzaW9u ICAgOiA1LjEzLjAKCUNhcGFiaWxpdGllcyAgICAgOiAweDhjMjAwMDAwCgkJTWV0YWRhdGEgT3V0 cHV0CgkJU3RyZWFtaW5nCgkJRXh0ZW5kZWQgUGl4IEZvcm1hdAoJCURldmljZSBDYXBhYmlsaXRp ZXMKCURldmljZSBDYXBzICAgICAgOiAweDBjMjAwMDAwCgkJTWV0YWRhdGEgT3V0cHV0CgkJU3Ry ZWFtaW5nCgkJRXh0ZW5kZWQgUGl4IEZvcm1hdApNZWRpYSBEcml2ZXIgSW5mbzoKCURyaXZlciBu YW1lICAgICAgOiBzdW42aS1pc3AKCU1vZGVsICAgICAgICAgICAgOiBBbGx3aW5uZXIgSVNQIENh cHR1cmUgRGV2aWNlCglTZXJpYWwgICAgICAgICAgIDogCglCdXMgaW5mbyAgICAgICAgIDogcGxh dGZvcm06MWNiODAwMC5pc3AKCU1lZGlhIHZlcnNpb24gICAgOiA1LjEzLjAKCUhhcmR3YXJlIHJl dmlzaW9uOiAweDAwMDAwMDAwICgwKQoJRHJpdmVyIHZlcnNpb24gICA6IDUuMTMuMApJbnRlcmZh Y2UgSW5mbzoKCUlEICAgICAgICAgICAgICAgOiAweDAzMDAwMDFkCglUeXBlICAgICAgICAgICAg IDogVjRMIFZpZGVvCkVudGl0eSBJbmZvOgoJSUQgICAgICAgICAgICAgICA6IDB4MDAwMDAwMWIg KDI3KQoJTmFtZSAgICAgICAgICAgICA6IHN1bjZpLWlzcC1wYXJhbXMKCUZ1bmN0aW9uICAgICAg ICAgOiBWNEwyIEkvTwoJUGFkIDB4MDEwMDAwMWMgICA6IDA6IFNvdXJjZSwgTXVzdCBDb25uZWN0 CgkgIExpbmsgMHgwMjAwMDAxZjogdG8gcmVtb3RlIHBhZCAweDEwMDAwMDMgb2YgZW50aXR5ICdz dW42aS1pc3AtcHJvYyc6IERhdGEsIEVuYWJsZWQsIEltbXV0YWJsZQoKUmVxdWlyZWQgaW9jdGxz OgoJdGVzdCBNQyBpbmZvcm1hdGlvbiAoc2VlICdNZWRpYSBEcml2ZXIgSW5mbycgYWJvdmUpOiBP SwoJdGVzdCBWSURJT0NfUVVFUllDQVA6IE9LCgpBbGxvdyBmb3IgbXVsdGlwbGUgb3BlbnM6Cgl0 ZXN0IHNlY29uZCAvZGV2L3ZpZGVvMiBvcGVuOiBPSwoJdGVzdCBWSURJT0NfUVVFUllDQVA6IE9L Cgl0ZXN0IFZJRElPQ19HL1NfUFJJT1JJVFk6IE9LCgl0ZXN0IGZvciB1bmxpbWl0ZWQgb3BlbnM6 IE9LCgpEZWJ1ZyBpb2N0bHM6Cgl0ZXN0IFZJRElPQ19EQkdfRy9TX1JFR0lTVEVSOiBPSyAoTm90 IFN1cHBvcnRlZCkKCXRlc3QgVklESU9DX0xPR19TVEFUVVM6IE9LCgpJbnB1dCBpb2N0bHM6Cgl0 ZXN0IFZJRElPQ19HL1NfVFVORVIvRU5VTV9GUkVRX0JBTkRTOiBPSyAoTm90IFN1cHBvcnRlZCkK CXRlc3QgVklESU9DX0cvU19GUkVRVUVOQ1k6IE9LIChOb3QgU3VwcG9ydGVkKQoJdGVzdCBWSURJ T0NfU19IV19GUkVRX1NFRUs6IE9LIChOb3QgU3VwcG9ydGVkKQoJdGVzdCBWSURJT0NfRU5VTUFV RElPOiBPSyAoTm90IFN1cHBvcnRlZCkKCXRlc3QgVklESU9DX0cvUy9FTlVNSU5QVVQ6IE9LIChO b3QgU3VwcG9ydGVkKQoJdGVzdCBWSURJT0NfRy9TX0FVRElPOiBPSyAoTm90IFN1cHBvcnRlZCkK CUlucHV0czogMCBBdWRpbyBJbnB1dHM6IDAgVHVuZXJzOiAwCgpPdXRwdXQgaW9jdGxzOgoJdGVz dCBWSURJT0NfRy9TX01PRFVMQVRPUjogT0sgKE5vdCBTdXBwb3J0ZWQpCgl0ZXN0IFZJRElPQ19H L1NfRlJFUVVFTkNZOiBPSyAoTm90IFN1cHBvcnRlZCkKCXRlc3QgVklESU9DX0VOVU1BVURPVVQ6 IE9LIChOb3QgU3VwcG9ydGVkKQoJdGVzdCBWSURJT0NfRy9TL0VOVU1PVVRQVVQ6IE9LIChOb3Qg U3VwcG9ydGVkKQoJdGVzdCBWSURJT0NfRy9TX0FVRE9VVDogT0sgKE5vdCBTdXBwb3J0ZWQpCglP dXRwdXRzOiAwIEF1ZGlvIE91dHB1dHM6IDAgTW9kdWxhdG9yczogMAoKSW5wdXQvT3V0cHV0IGNv bmZpZ3VyYXRpb24gaW9jdGxzOgoJdGVzdCBWSURJT0NfRU5VTS9HL1MvUVVFUllfU1REOiBPSyAo Tm90IFN1cHBvcnRlZCkKCXRlc3QgVklESU9DX0VOVU0vRy9TL1FVRVJZX0RWX1RJTUlOR1M6IE9L IChOb3QgU3VwcG9ydGVkKQoJdGVzdCBWSURJT0NfRFZfVElNSU5HU19DQVA6IE9LIChOb3QgU3Vw cG9ydGVkKQoJdGVzdCBWSURJT0NfRy9TX0VESUQ6IE9LIChOb3QgU3VwcG9ydGVkKQoKQ29udHJv bCBpb2N0bHM6Cgl0ZXN0IFZJRElPQ19RVUVSWV9FWFRfQ1RSTC9RVUVSWU1FTlU6IE9LCgl0ZXN0 IFZJRElPQ19RVUVSWUNUUkw6IE9LCgl0ZXN0IFZJRElPQ19HL1NfQ1RSTDogT0sKCXRlc3QgVklE SU9DX0cvUy9UUllfRVhUX0NUUkxTOiBPSwoJdGVzdCBWSURJT0NfKFVOKVNVQlNDUklCRV9FVkVO VC9EUUVWRU5UOiBPSwoJdGVzdCBWSURJT0NfRy9TX0pQRUdDT01QOiBPSyAoTm90IFN1cHBvcnRl ZCkKCVN0YW5kYXJkIENvbnRyb2xzOiAxNyBQcml2YXRlIENvbnRyb2xzOiAwCgpGb3JtYXQgaW9j dGxzOgoJdGVzdCBWSURJT0NfRU5VTV9GTVQvRlJBTUVTSVpFUy9GUkFNRUlOVEVSVkFMUzogT0sK CXRlc3QgVklESU9DX0cvU19QQVJNOiBPSyAoTm90IFN1cHBvcnRlZCkKCXRlc3QgVklESU9DX0df RkJVRjogT0sgKE5vdCBTdXBwb3J0ZWQpCgl0ZXN0IFZJRElPQ19HX0ZNVDogT0sKCXRlc3QgVklE SU9DX1RSWV9GTVQ6IE9LCgl0ZXN0IFZJRElPQ19TX0ZNVDogT0sKCXRlc3QgVklESU9DX0dfU0xJ Q0VEX1ZCSV9DQVA6IE9LIChOb3QgU3VwcG9ydGVkKQoJdGVzdCBDcm9wcGluZzogT0sgKE5vdCBT dXBwb3J0ZWQpCgl0ZXN0IENvbXBvc2luZzogT0sgKE5vdCBTdXBwb3J0ZWQpCgl0ZXN0IFNjYWxp bmc6IE9LIChOb3QgU3VwcG9ydGVkKQoKQ29kZWMgaW9jdGxzOgoJdGVzdCBWSURJT0NfKFRSWV8p RU5DT0RFUl9DTUQ6IE9LIChOb3QgU3VwcG9ydGVkKQoJdGVzdCBWSURJT0NfR19FTkNfSU5ERVg6 IE9LIChOb3QgU3VwcG9ydGVkKQoJdGVzdCBWSURJT0NfKFRSWV8pREVDT0RFUl9DTUQ6IE9LIChO b3QgU3VwcG9ydGVkKQoKQnVmZmVyIGlvY3RsczoKCXRlc3QgVklESU9DX1JFUUJVRlMvQ1JFQVRF X0JVRlMvUVVFUllCVUY6IE9LCgl0ZXN0IFZJRElPQ19FWFBCVUY6IE9LCgl0ZXN0IFJlcXVlc3Rz OiBPSyAoTm90IFN1cHBvcnRlZCkKClRvdGFsIGZvciBzdW42aS1pc3AgZGV2aWNlIC9kZXYvdmlk ZW8yOiA0NSwgU3VjY2VlZGVkOiA0NSwgRmFpbGVkOiAwLCBXYXJuaW5nczogMAoKS8OpdmluIEwn aMO0cGl0YWwgKDEpOgogIEFSTTogZHRzOiBzdW44aTogYTgzdDogYmFuYW5hcGktbTM6IEVuYWJs ZSBNSVBJIENTSS0yIHdpdGggT1Y4ODY1CgpQYXVsIEtvY2lhbGtvd3NraSAoMjEpOgogIGNsazog c3VueGktbmc6IHYzczogTWFrZSB0aGUgSVNQIFBMTCBjbG9jayBwdWJsaWMKICBBUk06IGR0czog c3VuOGk6IHYzczogUGFyZW50IHRoZSBDU0kgbW9kdWxlIGNsb2NrIHRvIHRoZSBJU1AgUExMCiAg ZHQtYmluZGluZ3M6IHN1bjZpLWEzMS1taXBpLWRwaHk6IEFkZCBvcHRpb25hbCBkaXJlY3Rpb24g cHJvcGVydHkKICBwaHk6IGFsbHdpbm5lcjogcGh5LXN1bjZpLW1pcGktZHBoeTogU3VwcG9ydCBE LVBIWSBSeCBtb2RlIGZvciBNSVBJCiAgICBDU0ktMgogIGR0LWJpbmRpbmdzOiBtZWRpYTogc3Vu NmktYTMxLWNzaTogQWRkIE1JUEkgQ1NJLTIgaW5wdXQgcG9ydAogIGR0LWJpbmRpbmdzOiBtZWRp YTogQWRkIEFsbHdpbm5lciBBMzEgTUlQSSBDU0ktMiBiaW5kaW5ncwogICAgZG9jdW1lbnRhdGlv bgogIG1lZGlhOiBzdW54aTogQWRkIHN1cHBvcnQgZm9yIHRoZSBBMzEgTUlQSSBDU0ktMiBjb250 cm9sbGVyCiAgTUFJTlRBSU5FUlM6IEFkZCBlbnRyeSBmb3IgdGhlIEFsbHdpbm5lciBBMzEgTUlQ SSBDU0ktMiBicmlkZ2UgZHJpdmVyCiAgQVJNOiBkdHM6IHN1bjhpOiB2M3M6IEFkZCBub2RlcyBm b3IgTUlQSSBDU0ktMiBzdXBwb3J0CiAgZHQtYmluZGluZ3M6IG1lZGlhOiBBZGQgQWxsd2lubmVy IEE4M1QgTUlQSSBDU0ktMiBiaW5kaW5ncwogICAgZG9jdW1lbnRhdGlvbgogIG1lZGlhOiBzdW54 aTogQWRkIHN1cHBvcnQgZm9yIHRoZSBBODNUIE1JUEkgQ1NJLTIgY29udHJvbGxlcgogIE1BSU5U QUlORVJTOiBBZGQgZW50cnkgZm9yIHRoZSBBbGx3aW5uZXIgQTgzVCBNSVBJIENTSS0yIGJyaWRn ZQogIEFSTTogZHRzOiBzdW44aTogYTgzdDogQWRkIE1JUEkgQ1NJLTIgY29udHJvbGxlciBub2Rl CiAgbWVkaWE6IHN1bnhpOiBSZW1vdmUgdGhlIHN1bjZpLWNzaSBkcml2ZXIgaW1wbGVtZW50YXRp b24KICBtZWRpYTogc3VueGk6IEludHJvZHVjZSBhIHJld3JpdHRlbiBzdW42aS1jc2kgZHJpdmVy CiAgZHQtYmluZGluZ3M6IG1lZGlhOiBBZGQgQWxsd2lubmVyIEEzMSBJU1AgYmluZGluZ3MgZG9j dW1lbnRhdGlvbgogIGR0LWJpbmRpbmdzOiBtZWRpYTogc3VuNmktYTMxLWNzaTogQWRkIElTUCBv dXRwdXQgcG9ydAogIHNvYzogc3VueGk6IG1idXM6IEFkZCBBMzEgSVNQIGNvbXBhdGlibGVzIHRv IHRoZSBsaXN0CiAgc3RhZ2luZzogbWVkaWE6IEFkZCBzdXBwb3J0IGZvciB0aGUgQWxsd2lubmVy IEEzMSBJU1AKICBNQUlOVEFJTkVSUzogQWRkIGVudHJ5IGZvciB0aGUgQWxsd2lubmVyIEEzMSBJ U1AgZHJpdmVyCiAgQVJNOiBkdHM6IHN1bjhpOiB2M3M6IEFkZCBzdXBwb3J0IGZvciB0aGUgSVNQ CgogLi4uL21lZGlhL2FsbHdpbm5lcixzdW42aS1hMzEtY3NpLnlhbWwgICAgICAgIHwgICA5MSAr LQogLi4uL21lZGlhL2FsbHdpbm5lcixzdW42aS1hMzEtaXNwLnlhbWwgICAgICAgIHwgIDExMSAr KwogLi4uL21lZGlhL2FsbHdpbm5lcixzdW42aS1hMzEtbWlwaS1jc2kyLnlhbWwgIHwgIDE0MiAr KysKIC4uLi9tZWRpYS9hbGx3aW5uZXIsc3VuOGktYTgzdC1taXBpLWNzaTIueWFtbCB8ICAxMzMg KysKIC4uLi9waHkvYWxsd2lubmVyLHN1bjZpLWEzMS1taXBpLWRwaHkueWFtbCAgICB8ICAgMTIg KwogTUFJTlRBSU5FUlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyNSAr CiBhcmNoL2FybS9ib290L2R0cy9zdW44aS1hODN0LWJhbmFuYXBpLW0zLmR0cyAgfCAgMTAyICsr CiBhcmNoL2FybS9ib290L2R0cy9zdW44aS1hODN0LmR0c2kgICAgICAgICAgICAgfCAgIDI2ICsK IGFyY2gvYXJtL2Jvb3QvZHRzL3N1bjhpLXYzcy5kdHNpICAgICAgICAgICAgICB8ICAxMDggKysK IGRyaXZlcnMvY2xrL3N1bnhpLW5nL2NjdS1zdW44aS12M3MuaCAgICAgICAgICB8ICAgIDEgLQog ZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9LY29uZmlnICAgICAgICAgIHwgICAgMiArCiBk cml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL01ha2VmaWxlICAgICAgICAgfCAgICAyICsKIC4u Li9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW42aS1jc2kvTWFrZWZpbGUgICB8ICAgIDIgKy0KIC4u Li9wbGF0Zm9ybS9zdW54aS9zdW42aS1jc2kvc3VuNmlfY3NpLmMgICAgICB8IDEwNTEgKysrKyst LS0tLS0tLS0tLQogLi4uL3BsYXRmb3JtL3N1bnhpL3N1bjZpLWNzaS9zdW42aV9jc2kuaCAgICAg IHwgIDE1NSArLS0KIC4uLi9zdW54aS9zdW42aS1jc2kvc3VuNmlfY3NpX2JyaWRnZS5jICAgICAg ICB8ICA4OTUgKysrKysrKysrKysrKysKIC4uLi9zdW54aS9zdW42aS1jc2kvc3VuNmlfY3NpX2Jy aWRnZS5oICAgICAgICB8ICAgNjQgKwogLi4uL3N1bnhpL3N1bjZpLWNzaS9zdW42aV9jc2lfY2Fw dHVyZS5jICAgICAgIHwgMTA5NCArKysrKysrKysrKysrKysrKwogLi4uL3N1bnhpL3N1bjZpLWNz aS9zdW42aV9jc2lfY2FwdHVyZS5oICAgICAgIHwgICA3MyArKwogLi4uL3BsYXRmb3JtL3N1bnhp L3N1bjZpLWNzaS9zdW42aV9jc2lfcmVnLmggIHwgIDM2NCArKystLS0KIC4uLi9wbGF0Zm9ybS9z dW54aS9zdW42aS1jc2kvc3VuNmlfdmlkZW8uYyAgICB8ICA2ODMgLS0tLS0tLS0tLQogLi4uL3Bs YXRmb3JtL3N1bnhpL3N1bjZpLWNzaS9zdW42aV92aWRlby5oICAgIHwgICAzOCAtCiAuLi4vcGxh dGZvcm0vc3VueGkvc3VuNmktbWlwaS1jc2kyL0tjb25maWcgICAgfCAgIDEyICsKIC4uLi9wbGF0 Zm9ybS9zdW54aS9zdW42aS1taXBpLWNzaTIvTWFrZWZpbGUgICB8ICAgIDQgKwogLi4uL3N1bnhp L3N1bjZpLW1pcGktY3NpMi9zdW42aV9taXBpX2NzaTIuYyAgIHwgIDc0NiArKysrKysrKysrKwog Li4uL3N1bnhpL3N1bjZpLW1pcGktY3NpMi9zdW42aV9taXBpX2NzaTIuaCAgIHwgICA1MiArCiAu Li4vc3VuNmktbWlwaS1jc2kyL3N1bjZpX21pcGlfY3NpMl9yZWcuaCAgICAgfCAgIDgyICsrCiAu Li4vc3VueGkvc3VuOGktYTgzdC1taXBpLWNzaTIvS2NvbmZpZyAgICAgICAgfCAgIDExICsKIC4u Li9zdW54aS9zdW44aS1hODN0LW1pcGktY3NpMi9NYWtlZmlsZSAgICAgICB8ICAgIDQgKwogLi4u L3N1bjhpLWE4M3QtbWlwaS1jc2kyL3N1bjhpX2E4M3RfZHBoeS5jICAgIHwgICA3MiArKwogLi4u L3N1bjhpLWE4M3QtbWlwaS1jc2kyL3N1bjhpX2E4M3RfZHBoeS5oICAgIHwgICAzOSArCiAuLi4v c3VuOGlfYTgzdF9taXBpX2NzaTIuYyAgICAgICAgICAgICAgICAgICAgfCAgODEyICsrKysrKysr KysrKwogLi4uL3N1bjhpX2E4M3RfbWlwaV9jc2kyLmggICAgICAgICAgICAgICAgICAgIHwgICA1 NSArCiAuLi4vc3VuOGlfYTgzdF9taXBpX2NzaTJfcmVnLmggICAgICAgICAgICAgICAgfCAgMTU3 ICsrKwogZHJpdmVycy9waHkvYWxsd2lubmVyL3BoeS1zdW42aS1taXBpLWRwaHkuYyAgIHwgIDE2 NiArKy0KIGRyaXZlcnMvc29jL3N1bnhpL3N1bnhpX21idXMuYyAgICAgICAgICAgICAgICB8ICAg IDIgKwogZHJpdmVycy9zdGFnaW5nL21lZGlhL3N1bnhpL0tjb25maWcgICAgICAgICAgIHwgICAg MSArCiBkcml2ZXJzL3N0YWdpbmcvbWVkaWEvc3VueGkvTWFrZWZpbGUgICAgICAgICAgfCAgICAx ICsKIGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9zdW54aS9zdW42aS1pc3AvS2NvbmZpZyB8ICAgMTMg KwogLi4uL3N0YWdpbmcvbWVkaWEvc3VueGkvc3VuNmktaXNwL01ha2VmaWxlICAgIHwgICAgNCAr CiAuLi4vc3RhZ2luZy9tZWRpYS9zdW54aS9zdW42aS1pc3Avc3VuNmlfaXNwLmMgfCAgNTc3ICsr KysrKysrKwogLi4uL3N0YWdpbmcvbWVkaWEvc3VueGkvc3VuNmktaXNwL3N1bjZpX2lzcC5oIHwg ICA4NiArKwogLi4uL21lZGlhL3N1bnhpL3N1bjZpLWlzcC9zdW42aV9pc3BfY2FwdHVyZS5jIHwg IDc1OSArKysrKysrKysrKysKIC4uLi9tZWRpYS9zdW54aS9zdW42aS1pc3Avc3VuNmlfaXNwX2Nh cHR1cmUuaCB8ICAgNzkgKysKIC4uLi9tZWRpYS9zdW54aS9zdW42aS1pc3Avc3VuNmlfaXNwX3Bh cmFtcy5jICB8ICA1NzEgKysrKysrKysrCiAuLi4vbWVkaWEvc3VueGkvc3VuNmktaXNwL3N1bjZp X2lzcF9wYXJhbXMuaCAgfCAgIDUzICsKIC4uLi9tZWRpYS9zdW54aS9zdW42aS1pc3Avc3VuNmlf aXNwX3Byb2MuYyAgICB8ICA1OTggKysrKysrKysrCiAuLi4vbWVkaWEvc3VueGkvc3VuNmktaXNw L3N1bjZpX2lzcF9wcm9jLmggICAgfCAgIDYxICsKIC4uLi9tZWRpYS9zdW54aS9zdW42aS1pc3Av c3VuNmlfaXNwX3JlZy5oICAgICB8ICAyNzUgKysrKysKIC4uLi9zdW54aS9zdW42aS1pc3AvdWFw aS9zdW42aS1pc3AtY29uZmlnLmggICB8ICAgNDMgKwogaW5jbHVkZS9kdC1iaW5kaW5ncy9jbG9j ay9zdW44aS12M3MtY2N1LmggICAgIHwgICAgMSArCiA1MSBmaWxlcyBjaGFuZ2VkLCA4NzAyIGlu c2VydGlvbnMoKyksIDE4MDggZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1l bnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2FsbHdpbm5lcixzdW42aS1hMzEtaXNw LnlhbWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu Z3MvbWVkaWEvYWxsd2lubmVyLHN1bjZpLWEzMS1taXBpLWNzaTIueWFtbAogY3JlYXRlIG1vZGUg MTAwNjQ0IERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9hbGx3aW5uZXIs c3VuOGktYTgzdC1taXBpLWNzaTIueWFtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWVk aWEvcGxhdGZvcm0vc3VueGkvc3VuNmktY3NpL3N1bjZpX2NzaV9icmlkZ2UuYwogY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vc3VueGkvc3VuNmktY3NpL3N1bjZpX2Nz aV9icmlkZ2UuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vc3Vu eGkvc3VuNmktY3NpL3N1bjZpX2NzaV9jYXB0dXJlLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1bjZpLWNzaS9zdW42aV9jc2lfY2FwdHVyZS5oCiBk ZWxldGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW42aS1jc2kv c3VuNmlfdmlkZW8uYwogZGVsZXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0v c3VueGkvc3VuNmktY3NpL3N1bjZpX3ZpZGVvLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1bjZpLW1pcGktY3NpMi9LY29uZmlnCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW42aS1taXBpLWNzaTIvTWFr ZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1 bjZpLW1pcGktY3NpMi9zdW42aV9taXBpX2NzaTIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvbWVkaWEvcGxhdGZvcm0vc3VueGkvc3VuNmktbWlwaS1jc2kyL3N1bjZpX21pcGlfY3NpMi5o CiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW42aS1t aXBpLWNzaTIvc3VuNmlfbWlwaV9jc2kyX3JlZy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW44aS1hODN0LW1pcGktY3NpMi9LY29uZmlnCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW44aS1hODN0LW1p cGktY3NpMi9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWVkaWEvcGxhdGZv cm0vc3VueGkvc3VuOGktYTgzdC1taXBpLWNzaTIvc3VuOGlfYTgzdF9kcGh5LmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1bjhpLWE4M3QtbWlwaS1j c2kyL3N1bjhpX2E4M3RfZHBoeS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS9zdW54aS9zdW44aS1hODN0LW1pcGktY3NpMi9zdW44aV9hODN0X21pcGlfY3NpMi5j CiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW44aS1h ODN0LW1pcGktY3NpMi9zdW44aV9hODN0X21pcGlfY3NpMi5oCiBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW44aS1hODN0LW1pcGktY3NpMi9zdW44aV9h ODN0X21pcGlfY3NpMl9yZWcuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvc3RhZ2luZy9t ZWRpYS9zdW54aS9zdW42aS1pc3AvS2NvbmZpZwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv c3RhZ2luZy9tZWRpYS9zdW54aS9zdW42aS1pc3AvTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBkcml2ZXJzL3N0YWdpbmcvbWVkaWEvc3VueGkvc3VuNmktaXNwL3N1bjZpX2lzcC5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9zdGFnaW5nL21lZGlhL3N1bnhpL3N1bjZpLWlzcC9zdW42 aV9pc3AuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9zdW54aS9z dW42aS1pc3Avc3VuNmlfaXNwX2NhcHR1cmUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv c3RhZ2luZy9tZWRpYS9zdW54aS9zdW42aS1pc3Avc3VuNmlfaXNwX2NhcHR1cmUuaAogY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9zdW54aS9zdW42aS1pc3Avc3VuNmlf aXNwX3BhcmFtcy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9zdGFnaW5nL21lZGlhL3N1 bnhpL3N1bjZpLWlzcC9zdW42aV9pc3BfcGFyYW1zLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL3N0YWdpbmcvbWVkaWEvc3VueGkvc3VuNmktaXNwL3N1bjZpX2lzcF9wcm9jLmMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3N0YWdpbmcvbWVkaWEvc3VueGkvc3VuNmktaXNwL3N1bjZp X2lzcF9wcm9jLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3N0YWdpbmcvbWVkaWEvc3Vu eGkvc3VuNmktaXNwL3N1bjZpX2lzcF9yZWcuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv c3RhZ2luZy9tZWRpYS9zdW54aS9zdW42aS1pc3AvdWFwaS9zdW42aS1pc3AtY29uZmlnLmgKCi0t IAoyLjMyLjAKCgotLSAKbGludXgtcGh5IG1haWxpbmcgbGlzdApsaW51eC1waHlAbGlzdHMuaW5m cmFkZWFkLm9yZwpodHRwczovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9s aW51eC1waHkK 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=-12.1 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=unavailable 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 854F7C433F5 for ; Fri, 10 Sep 2021 18:45:25 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 5383861250 for ; Fri, 10 Sep 2021 18:45:25 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 5383861250 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=bootlin.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org 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: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:In-Reply-To:References: List-Owner; bh=1qJTpx8p783WejUWT+Q5tUj70hEK6rwUScDZlHasRDc=; b=f5VZ/7JseLfTOc EpIhfArvR9al23vykM4yLwoS79Q5Xt/2tFQm0P/VLQSL0VuYiy9bLQue1Gt6os5IklfZr9B1Xou9I 3vCc8jgB/pP47f18pixDuKMFESMPkFNI5/eOFWMnt/Cw9n5aBz83ElS4FNXk2PkfUxJOg93eAdZdc gb6JndMxEpn/tMyKIDshcrYpvPT9SRAk39XyMmflRFn6aoc+VWz80Nh65tyQh5cSxsXoCn6dOPi9x STZ98+hl1h3a9QZ1wFn6B+CDIlWgcvCspUYA0+/CORw6dL2ptTg/mfVcLMHZ1seV12SHvl8Y2Mvvd wnVLytrMFOOLR9EG4Q3g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mOlV1-00DMU6-Jd; Fri, 10 Sep 2021 18:43:43 +0000 Received: from relay10.mail.gandi.net ([217.70.178.230]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mOlTh-00DLqY-PZ; Fri, 10 Sep 2021 18:42:25 +0000 Received: (Authenticated sender: paul.kocialkowski@bootlin.com) by relay10.mail.gandi.net (Postfix) with ESMTPSA id 11C7F240003; Fri, 10 Sep 2021 18:42:10 +0000 (UTC) From: Paul Kocialkowski To: linux-media@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, linux-clk@vger.kernel.org, linux-staging@lists.linux.dev Cc: Yong Deng , Mauro Carvalho Chehab , Rob Herring , Maxime Ripard , Sakari Ailus , Hans Verkuil , Chen-Yu Tsai , Jernej Skrabec , Paul Kocialkowski , Greg Kroah-Hartman , Helen Koike , Laurent Pinchart , Thomas Petazzoni Subject: [PATCH 00/22] Allwinner A31/A83T MIPI CSI-2 Support and A31 ISP Support Date: Fri, 10 Sep 2021 20:41:25 +0200 Message-Id: <20210910184147.336618-1-paul.kocialkowski@bootlin.com> X-Mailer: git-send-email 2.32.0 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210910_114222_133949_26E10DA4 X-CRM114-Status: GOOD ( 19.04 ) 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 VGhpcyBzZXJpZXMgaW50cm9kdWNlcyBzdXBwb3J0IGZvciB0aGUgQWxsd2lubmVyIEEzMSBhbmQg QTgzVCBNSVBJIENTSS0yCmNvbnRyb2xsZXJzIGFzIHdlbGwgYXMgdGhlIEFsbHdpbm5lciBBMzEg SW1hZ2UgU2lnbmFsIFByb2Nlc3NvciAoSVNQKS4KSXQgZm9sbG93cyB2NSBvZiB0aGUgIkFsbHdp bm5lciBNSVBJIENTSS0yIHN1cHBvcnQgZm9yIEEzMS9WM3MvQTgzVCIKc2VyaWVzLCB3aXRoIHRo ZSBhZGRpdGlvbiBvZiBJU1Agc3VwcG9ydCBmb3IgdGhlIFYzLiBTaW5jZSBib3RoIGFzcGVjdAph cmUgcXVpdGUgZGVwZW5kZW50IGR1ZSB0byBjaGFuZ2VzIHRvIHRoZSBzdW42aS1jc2kgZHJpdmVy LCB0aGV5IGFyZQptZXJnZWQgaW50byB0aGlzIG5ldyBzZXJpZXMuCgpBc2lkZSBmcm9tIHRoZSBJ U1AgZHJpdmVyIGl0c2VsZiwgdGhlIG1vc3Qgb3V0c3RhbmRpbmcgY2hhbmdlIGlzIGEKY29tcGxl dGUgcmV3cml0ZSBvZiB0aGUgQ1NJIGRyaXZlciwgZm9yIHRoZSBzcGVjaWZpYyByZWFzb25zIHRo YXQgYXJlCmV4cG9zZWQgaW4gdGhlIGNvbW1pdCBtZXNzYWdlIGludHJvZHVjaW5nIHRoZSBuZXcg ZHJpdmVyLgoKVGhlIGNvbW1pdCBtZXNzYWdlIGludHJvZHVjaW5nIHRoZSBJU1AgZHJpdmVyIHNo b3VsZCBhbHNvIGNvbnRhaW4gdXNlZnVsCmRldGFpbHMgcmVnYXJkaW5nIHRoZSBpbXBsZW1lbnRh dGlvbiBhbmQgb3V0c3RhbmRpbmcgc3BlY2lmaWNzIG9mIHRoZSBoYXJkd2FyZS4KClRoaXMgd2Fz IHRlc3RlZCBvbiB0aGUgVjNzIGFuZCBBODNULCB1c2luZyB0aGUgZm9sbG93aW5nIHNlbnNvcnM6 Ci0gSU1YMjE5Ci0gT1Y1NjQ4Ci0gT1Y4ODU2Ci0gT1Y4ODY1Cgp2NGwyLWNvbXBsaWFuY2Ugc2Vl bXMgcHJldHR5IGhhcHB5IGFib3V0IHRoZSB2aWRlbyBub2Rlcywgc2VlIHRoZSBkZXRhaWxlZApy ZXBvcnRzIGJlbG93LgoKVGhhbmtzIQoKQ2hhbmdlcyBzaW5jZSB2NSBvZiB0aGUgTUlQSSBDU0kt MiBzZXJpZXM6Ci0gRC1QSFkgZGlyZWN0aW9uIGlzIG5vIGxvbmdlciByZXByZXNlbnRlZCB3aXRo IGEgc3VibW9kZSBzaW5jZSB0aGlzIGlzCiAgbm90IGEgcnVudGltZSBkZWNpc2lvbjogbm8gc3dp dGNoaW5nIGJldHdlZW4gdGhlIHR3byBzdWJtb2RlcyBpcwogIHBvc3NpYmxlIGFuZCBlYWNoIGlu c3RhbmNlIG9mIGEgY29udHJvbGxlciB3aWxsIGJlIGRlZGljYXRlZCB0byBvbmUKICBkaXJlY3Rp b24gb25seS4gSW5zdGVhZCwgYSBkZXZpY2UtdHJlZSBwcm9wZXJ0eSBpcyB1c2VkLgogIEEgc2Vw YXJhdGUgY29tcGF0aWJsZSB3YXMgY29uc2lkZXJlZCwgYnV0IGl0IGZlZWxzIHVuZml0IHNpbmNl IHRoZQogIGRpcmVjdGlvbiBkb2VzIG5vdCBkZXNjcmliZSB0aGUgcGFydGljdWxhciB0eXBlIG9m IGhhcmR3YXJlCiAgaW1wbGVtZW50YXRpb24sIGJ1dCByYXRoZXIgaG93IGl0IGlzIHVzZWQ7Ci0g VXBkYXRlZCBjb21tZW50cyBhYm91dCBjaGFubmVscyBiYXNlZCBvbiBsYXRlc3QgaW5mb3JtYXRp b247Ci0gVmFyaW91cyBjb3NtZXRpYyBjaGFuZ2VzIChhbmQgc3BsaXR0aW5nKSB0byB0aGUgY29k ZTsKCi0tIEFsbHdpbm5lciBNSVBJIENTSS0yIHN1cHBvcnQgZm9yIEEzMS9WM3MvQTgzVCBjaGFu Z2Vsb2cKCkNoYW5nZXMgc2luY2UgdjQ6Ci0gQWRkZWQgcGF0Y2ggdG8gc3RvcCB1c2luZyB2NGwy X2FzeW5jX25vdGlmaWVyX3BhcnNlX2Z3bm9kZV9lbmRwb2ludHM7Ci0gRml4ZWQgY2hlY2twYXRj aCBzdHJpY3QgaXNzdWVzIChwYXJlbnRoZXNpcyBhbGlnbm1lbnQpOwotIEZpeGVkIHJ1bnRpbWUg UE0gY2FsbCBvcmRlciBhbmQgZGlzYWJsZTsKLSBGaXhlZCBmd25vZGVfaGFuZGxlX3B1dCBvcmRl cjsKLSBCcm91Z2h0IGJhY2sgcGh5LW5hbWVzIGZvciBBMzEgc2luY2UgaXQncyBtYW5kYXRvcnkg YWNjb3JkaW5nIHRvIHRoZSBnZW5lcmljCiAgUEhZIGJpbmRpbmcgYW5kIG5lZWRlZCBieSB0aGUg Y29kZTsKLSBBZGRlZCBjb2xsZWN0ZWQgdGFncy4KCkNoYW5nZXMgc2luY2UgdjM6Ci0gRml4ZWQg c2luZ2xlLWl0ZW0gcGh5cyBkZXNjcmlwdGlvbiBpbiBzdW42aSBtaXBpIGNzaS0yIGJpbmRpbmc7 Ci0gRml4ZWQgdmFyaWFibGVzIG5hbWVzIGluIG1hY3JvcyB1c2luZyBjb250YWluZXJfb2Y7Ci0g Rml4ZWQgc3R5bGUgaXNzdWUgd2l0aCBvcGVyYXRvcnMgYXQgdGhlIGVuZCBvZiBsaW5lczsKLSBS ZXdvcmtlZCBzb3VyY2UgZW5kcG9pbnQvc3ViZGV2IGFzc2lnbm1lbnQgaW4gc3VuNmktY3NpIHRv IGhhbmRsZQogIGxpbmtfdmFsaWRhdGUgZXJyb3IgY2FzZTsKLSBSZW1vdmVkIHVucmVsYXRlZCBk dCBjaGFuZ2UgaW4gc3VuOGktYTgzdCBtaXBpIGNzaS0yIGRyaXZlcjsKLSBBZGRlZCBjb2xsZWN0 ZWQgdGFncy4KCkNoYW5nZXMgc2luY2UgdjI6Ci0gYWRkZWQgS2NvbmZpZyBkZXBlbmQgb24gUE0g c2luY2UgaXQncyBub3Qgb3B0aW9uYWw7Ci0gcmVtb3ZlZCBwaHktbmFtZXMgZm9yIEEzMSBNSVBJ IENTSS0yIGNvbnRyb2xsZXI7Ci0gcmVtb3ZlZCB2M3MgY29tcGF0aWJsZSBpbiB0aGUgQTMxIE1J UEkgQ1NJLTIgY29udHJvbGxlciBkcml2ZXI7Ci0gcmVtb3ZlZCBBMzEgQ1NJIGNvbnRyb2xsZXIg c2luZ2xlLXBvcnQgYmluZGluZyBkZXByZWNhdGlvbjsKLSByZW1vdmVkIGVtcHR5IGR0IHBvcnQg ZGVmaW5pdGlvbnM7Ci0gZml4ZWQgbWlub3IgY2hlY2twYXRjaCB3YXJuaW5nczsKLSBhZGRlZCBj b2xsZWN0ZWQgdGFnczsKLSBhZGRlZCBtZWRpYS1jdGwgb3V0cHV0IGluIGNvdmVyIGxldHRlci4K CkNoYW5nZXMgc2luY2UgdjE6Ci0gcmV3b3JrZWQgZndub2RlIGFuZCBtZWRpYSBncmFwaCBvbiB0 aGUgQ1NJIGNvbnRyb2xsZXIgZW5kIHRvIGhhdmUgb25lIHBvcnQKICBwZXIgaW50ZXJmYWNlLCB3 aGljaCBzb2x2ZXMgdGhlIGJ1cyB0eXBlIHJlcHJlc2VudGF0aW9uIGlzc3VlOwotIHJlbW92ZWQg dW51c2VkIElSUSBoYW5kbGVycyBpbiB0aGUgTUlQSSBDU0ktMiBicmlkZ2VzOwotIGF2b2lkZWQg dGhlIHVzZSBvZiBkZXZtX3JlZ21hcF9pbml0X21taW9fY2xrOwotIGRlYXNzZXJ0ZWQgcmVzZXQg YmVmb3JlIGVuYWJsaW5nIGNsb2NrczsKLSBmaXhlZCByZXBvcnRlZCByZXR1cm4gY29kZSBpc3N1 ZXMgKHJldCB8PSwgbWlzc2luZyBjaGVja3MpOwotIGFwcGxpZWQgcmVxdWVzdGVkIGNvc21ldGlj IGNoYW5nZXMgKGJhY2t3YXJkIGdvdG8sIGV0Yyk7Ci0gc3dpdGNoZWQgb3ZlciB0byBydW50aW1l IFBNIGZvciB0aGUgbWlwaSBjc2ktMiBicmlkZ2UgZHJpdmVyczsKLSBzZWxlY3RlZCBQSFlfU1VO NklfTUlQSV9EUEhZIGluIEtjb25maWcgZm9yIHN1bjZpLW1pcGktY3NpMjsKLSByZWdpc3RlcmVk IG5vZGVzIHdpdGggbWlwaSBjc2ktMiBicmlkZ2Ugc3ViZGV2czsKLSB1c2VkIFY0TDIgZm9ybWF0 IGluZm8gaW5zdGVhZCBvZiBzd2l0Y2gvY2FzZSBmb3Igc3VuNmktY3NpIGJwcDsKLSBmaXhlZCBk ZXZpY2UtdHJlZSBiaW5kaW5ncyBhcyByZXF1ZXN0ZWQgKHVzZWxlc3MgcHJvcGVydGllcywgbGlj ZW5zZSk7Ci0gZml4ZWQgbWlwaSBicmlkZ2UgZHQgaW5zdGFuY2VzIG5hbWVzOwotIGFkZGVkIFBI WSBBUEkgZG9jdW1lbnRhdGlvbiBhYm91dCBtb2RlL3Bvd2VyIG9uIG9yZGVyIHJlcXVpcmVtZW50 OwotIGZpeGVkIGNsb2NrIGVycm9yIHJldHVybiBjb2RlIGluIGQtcGh5IGNvZGU7Ci0gZml4ZWQg RC1QSFkgbW9kZSBjaGVjayBpbiBkLXBoeSBjb2RlOwotIGFkZGVkIE1BSU5UQUlORVJTIGVudHJp ZXMgZm9yIHRoZSBuZXcgZHJpdmVyczsKLSBhZGRlZCBWNEwyIGNvbXBsaWFuY2UgcmVzdWx0czsK LSBhZGRlZCB2YXJpb3VzIGNvbW1lbnRzIGFuZCByZXdvcmsgY29tbWl0IG1lc2FnZXMgYXMgcmVx dWVzdGVkLgoKLS0gVjMgbWVkaWEgdG9wb2xvZ3kKCk1lZGlhIGNvbnRyb2xsZXIgQVBJIHZlcnNp b24gNS4xMy4wCgpNZWRpYSBkZXZpY2UgaW5mb3JtYXRpb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCmRyaXZlciAgICAgICAgICBzdW42aS1pc3AKbW9kZWwgICAgICAgICAgIEFsbHdpbm5lciBJ U1AgQ2FwdHVyZSBEZXZpY2UKc2VyaWFsICAgICAgICAgIApidXMgaW5mbyAgICAgICAgcGxhdGZv cm06MWNiODAwMC5pc3AKaHcgcmV2aXNpb24gICAgIDB4MApkcml2ZXIgdmVyc2lvbiAgNS4xMy4w CgpEZXZpY2UgdG9wb2xvZ3kKLSBlbnRpdHkgMTogc3VuNmktaXNwLXByb2MgKDMgcGFkcywgMyBs aW5rcykKICAgICAgICAgICAgdHlwZSBWNEwyIHN1YmRldiBzdWJ0eXBlIFVua25vd24gZmxhZ3Mg MAogICAgICAgICAgICBkZXZpY2Ugbm9kZSBuYW1lIC9kZXYvdjRsLXN1YmRldjAKCXBhZDA6IFNp bmsKCQlbZm10OlNSR0dCOF8xWDgvMTkyMHgxMDgwIGZpZWxkOm5vbmUgY29sb3JzcGFjZTpyYXdd CgkJPC0gInN1bjZpLWNzaS1icmlkZ2UiOjEgW0VOQUJMRURdCglwYWQxOiBTaW5rCgkJW2ZtdDpT UkdHQjhfMVg4LzE5MjB4MTA4MCBmaWVsZDpub25lIGNvbG9yc3BhY2U6cmF3XQoJCTwtICJzdW42 aS1pc3AtcGFyYW1zIjowIFtFTkFCTEVELElNTVVUQUJMRV0KCXBhZDI6IFNvdXJjZQoJCVtmbXQ6 U1JHR0I4XzFYOC8xOTIweDEwODAgZmllbGQ6bm9uZSBjb2xvcnNwYWNlOnJhd10KCQktPiAic3Vu NmktaXNwLWNhcHR1cmUiOjAgW0VOQUJMRUQsSU1NVVRBQkxFXQoKLSBlbnRpdHkgNTogc3VuNmkt Y3NpLWJyaWRnZSAoMiBwYWRzLCAzIGxpbmtzKQogICAgICAgICAgICB0eXBlIFY0TDIgc3ViZGV2 IHN1YnR5cGUgVW5rbm93biBmbGFncyAwCiAgICAgICAgICAgIGRldmljZSBub2RlIG5hbWUgL2Rl di92NGwtc3ViZGV2MQoJcGFkMDogU2luawoJCVtmbXQ6U1JHR0I4XzFYOC8xOTIweDEwODAgZmll bGQ6bm9uZSBjb2xvcnNwYWNlOnJhd10KCQk8LSAic3VuNmktbWlwaS1jc2kyIjoxIFtFTkFCTEVE XQoJcGFkMTogU291cmNlCgkJW2ZtdDpTUkdHQjhfMVg4LzE5MjB4MTA4MCBmaWVsZDpub25lIGNv bG9yc3BhY2U6cmF3XQoJCS0+ICJzdW42aS1pc3AtcHJvYyI6MCBbRU5BQkxFRF0KCQktPiAic3Vu NmktY3NpLWNhcHR1cmUiOjAgW10KCi0gZW50aXR5IDEwOiBzdW42aS1taXBpLWNzaTIgKDIgcGFk cywgMiBsaW5rcykKICAgICAgICAgICAgIHR5cGUgVjRMMiBzdWJkZXYgc3VidHlwZSBVbmtub3du IGZsYWdzIDAKICAgICAgICAgICAgIGRldmljZSBub2RlIG5hbWUgL2Rldi92NGwtc3ViZGV2MgoJ cGFkMDogU2luawoJCVtmbXQ6U1JHR0I4XzFYOC8xOTIweDEwODAgZmllbGQ6bm9uZSBjb2xvcnNw YWNlOnJhd10KCQk8LSAiaW14MjE5IDEtMDAxMCI6MCBbRU5BQkxFRCxJTU1VVEFCTEVdCglwYWQx OiBTb3VyY2UKCQlbZm10OlNSR0dCOF8xWDgvMTkyMHgxMDgwIGZpZWxkOm5vbmUgY29sb3JzcGFj ZTpyYXddCgkJLT4gInN1bjZpLWNzaS1icmlkZ2UiOjAgW0VOQUJMRURdCgotIGVudGl0eSAxMzog c3VuNmktY3NpLWNhcHR1cmUgKDEgcGFkLCAxIGxpbmspCiAgICAgICAgICAgICB0eXBlIE5vZGUg c3VidHlwZSBWNEwgZmxhZ3MgMAogICAgICAgICAgICAgZGV2aWNlIG5vZGUgbmFtZSAvZGV2L3Zp ZGVvMAoJcGFkMDogU2luawoJCTwtICJzdW42aS1jc2ktYnJpZGdlIjoxIFtdCgotIGVudGl0eSAy MTogc3VuNmktaXNwLWNhcHR1cmUgKDEgcGFkLCAxIGxpbmspCiAgICAgICAgICAgICB0eXBlIE5v ZGUgc3VidHlwZSBWNEwgZmxhZ3MgMAogICAgICAgICAgICAgZGV2aWNlIG5vZGUgbmFtZSAvZGV2 L3ZpZGVvMQoJcGFkMDogU2luawoJCTwtICJzdW42aS1pc3AtcHJvYyI6MiBbRU5BQkxFRCxJTU1V VEFCTEVdCgotIGVudGl0eSAyNzogc3VuNmktaXNwLXBhcmFtcyAoMSBwYWQsIDEgbGluaykKICAg ICAgICAgICAgIHR5cGUgTm9kZSBzdWJ0eXBlIFY0TCBmbGFncyAwCiAgICAgICAgICAgICBkZXZp Y2Ugbm9kZSBuYW1lIC9kZXYvdmlkZW8yCglwYWQwOiBTb3VyY2UKCQktPiAic3VuNmktaXNwLXBy b2MiOjEgW0VOQUJMRUQsSU1NVVRBQkxFXQoKLSBlbnRpdHkgMzM6IGlteDIxOSAxLTAwMTAgKDEg cGFkLCAxIGxpbmspCiAgICAgICAgICAgICB0eXBlIFY0TDIgc3ViZGV2IHN1YnR5cGUgU2Vuc29y IGZsYWdzIDAKICAgICAgICAgICAgIGRldmljZSBub2RlIG5hbWUgL2Rldi92NGwtc3ViZGV2MwoJ cGFkMDogU291cmNlCgkJW2ZtdDpTUkdHQjhfMVg4LzE5MjB4MTA4MCBmaWVsZDpub25lIGNvbG9y c3BhY2U6c3JnYiB4ZmVyOnNyZ2IgeWNiY3I6NjAxIHF1YW50aXphdGlvbjpmdWxsLXJhbmdlCgkJ IGNyb3AuYm91bmRzOig4LDgpLzMyODB4MjQ2NAoJCSBjcm9wOig2ODgsNzAwKS8xOTIweDEwODBd CgkJLT4gInN1bjZpLW1pcGktY3NpMiI6MCBbRU5BQkxFRCxJTU1VVEFCTEVdCgotLSBzdW42aS1j c2ktY2FwdHVyZSB2NGwyLWNvbXBsaWFuY2UgcnVuCgp2NGwyLWNvbXBsaWFuY2UgU0hBOiBub3Qg YXZhaWxhYmxlLCAzMiBiaXRzCgpDb21wbGlhbmNlIHRlc3QgZm9yIHN1bjZpLWNzaSBkZXZpY2Ug L2Rldi92aWRlbzA6CgpEcml2ZXIgSW5mbzoKCURyaXZlciBuYW1lICAgICAgOiBzdW42aS1jc2kK CUNhcmQgdHlwZSAgICAgICAgOiBzdW42aS1jc2ktY2FwdHVyZQoJQnVzIGluZm8gICAgICAgICA6 IHBsYXRmb3JtOjFjYjAwMDAuY2FtZXJhCglEcml2ZXIgdmVyc2lvbiAgIDogNS4xMy4wCglDYXBh YmlsaXRpZXMgICAgIDogMHg4NDIwMDAwMQoJCVZpZGVvIENhcHR1cmUKCQlTdHJlYW1pbmcKCQlF eHRlbmRlZCBQaXggRm9ybWF0CgkJRGV2aWNlIENhcGFiaWxpdGllcwoJRGV2aWNlIENhcHMgICAg ICA6IDB4MDQyMDAwMDEKCQlWaWRlbyBDYXB0dXJlCgkJU3RyZWFtaW5nCgkJRXh0ZW5kZWQgUGl4 IEZvcm1hdApNZWRpYSBEcml2ZXIgSW5mbzoKCURyaXZlciBuYW1lICAgICAgOiBzdW42aS1pc3AK CU1vZGVsICAgICAgICAgICAgOiBBbGx3aW5uZXIgSVNQIENhcHR1cmUgRGV2aWNlCglTZXJpYWwg ICAgICAgICAgIDogCglCdXMgaW5mbyAgICAgICAgIDogcGxhdGZvcm06MWNiODAwMC5pc3AKCU1l ZGlhIHZlcnNpb24gICAgOiA1LjEzLjAKCUhhcmR3YXJlIHJldmlzaW9uOiAweDAwMDAwMDAwICgw KQoJRHJpdmVyIHZlcnNpb24gICA6IDUuMTMuMApJbnRlcmZhY2UgSW5mbzoKCUlEICAgICAgICAg ICAgICAgOiAweDAzMDAwMDBmCglUeXBlICAgICAgICAgICAgIDogVjRMIFZpZGVvCkVudGl0eSBJ bmZvOgoJSUQgICAgICAgICAgICAgICA6IDB4MDAwMDAwMGQgKDEzKQoJTmFtZSAgICAgICAgICAg ICA6IHN1bjZpLWNzaS1jYXB0dXJlCglGdW5jdGlvbiAgICAgICAgIDogVjRMMiBJL08KCVBhZCAw eDAxMDAwMDBlICAgOiAwOiBTaW5rCgkgIExpbmsgMHgwMjAwMDAxMTogZnJvbSByZW1vdGUgcGFk IDB4MTAwMDAwNyBvZiBlbnRpdHkgJ3N1bjZpLWNzaS1icmlkZ2UnOiBEYXRhCgpSZXF1aXJlZCBp b2N0bHM6Cgl0ZXN0IE1DIGluZm9ybWF0aW9uIChzZWUgJ01lZGlhIERyaXZlciBJbmZvJyBhYm92 ZSk6IE9LCgkJd2FybjogdjRsMi1jb21wbGlhbmNlLmNwcCg2MzMpOiBtZWRpYSBidXNfaW5mbyAn cGxhdGZvcm06MWNiODAwMC5pc3AnIGRpZmZlcnMgZnJvbSBWNEwyIGJ1c19pbmZvICdwbGF0Zm9y bToxY2IwMDAwLmNhbWVyYScKCXRlc3QgVklESU9DX1FVRVJZQ0FQOiBPSwoKQWxsb3cgZm9yIG11 bHRpcGxlIG9wZW5zOgoJdGVzdCBzZWNvbmQgL2Rldi92aWRlbzAgb3BlbjogT0sKCQl3YXJuOiB2 NGwyLWNvbXBsaWFuY2UuY3BwKDYzMyk6IG1lZGlhIGJ1c19pbmZvICdwbGF0Zm9ybToxY2I4MDAw LmlzcCcgZGlmZmVycyBmcm9tIFY0TDIgYnVzX2luZm8gJ3BsYXRmb3JtOjFjYjAwMDAuY2FtZXJh JwoJdGVzdCBWSURJT0NfUVVFUllDQVA6IE9LCgl0ZXN0IFZJRElPQ19HL1NfUFJJT1JJVFk6IE9L Cgl0ZXN0IGZvciB1bmxpbWl0ZWQgb3BlbnM6IE9LCgpEZWJ1ZyBpb2N0bHM6Cgl0ZXN0IFZJRElP Q19EQkdfRy9TX1JFR0lTVEVSOiBPSyAoTm90IFN1cHBvcnRlZCkKCXRlc3QgVklESU9DX0xPR19T VEFUVVM6IE9LCgpJbnB1dCBpb2N0bHM6Cgl0ZXN0IFZJRElPQ19HL1NfVFVORVIvRU5VTV9GUkVR X0JBTkRTOiBPSyAoTm90IFN1cHBvcnRlZCkKCXRlc3QgVklESU9DX0cvU19GUkVRVUVOQ1k6IE9L IChOb3QgU3VwcG9ydGVkKQoJdGVzdCBWSURJT0NfU19IV19GUkVRX1NFRUs6IE9LIChOb3QgU3Vw cG9ydGVkKQoJdGVzdCBWSURJT0NfRU5VTUFVRElPOiBPSyAoTm90IFN1cHBvcnRlZCkKCXRlc3Qg VklESU9DX0cvUy9FTlVNSU5QVVQ6IE9LCgl0ZXN0IFZJRElPQ19HL1NfQVVESU86IE9LIChOb3Qg U3VwcG9ydGVkKQoJSW5wdXRzOiAxIEF1ZGlvIElucHV0czogMCBUdW5lcnM6IDAKCk91dHB1dCBp b2N0bHM6Cgl0ZXN0IFZJRElPQ19HL1NfTU9EVUxBVE9SOiBPSyAoTm90IFN1cHBvcnRlZCkKCXRl c3QgVklESU9DX0cvU19GUkVRVUVOQ1k6IE9LIChOb3QgU3VwcG9ydGVkKQoJdGVzdCBWSURJT0Nf RU5VTUFVRE9VVDogT0sgKE5vdCBTdXBwb3J0ZWQpCgl0ZXN0IFZJRElPQ19HL1MvRU5VTU9VVFBV VDogT0sgKE5vdCBTdXBwb3J0ZWQpCgl0ZXN0IFZJRElPQ19HL1NfQVVET1VUOiBPSyAoTm90IFN1 cHBvcnRlZCkKCU91dHB1dHM6IDAgQXVkaW8gT3V0cHV0czogMCBNb2R1bGF0b3JzOiAwCgpJbnB1 dC9PdXRwdXQgY29uZmlndXJhdGlvbiBpb2N0bHM6Cgl0ZXN0IFZJRElPQ19FTlVNL0cvUy9RVUVS WV9TVEQ6IE9LIChOb3QgU3VwcG9ydGVkKQoJdGVzdCBWSURJT0NfRU5VTS9HL1MvUVVFUllfRFZf VElNSU5HUzogT0sgKE5vdCBTdXBwb3J0ZWQpCgl0ZXN0IFZJRElPQ19EVl9USU1JTkdTX0NBUDog T0sgKE5vdCBTdXBwb3J0ZWQpCgl0ZXN0IFZJRElPQ19HL1NfRURJRDogT0sgKE5vdCBTdXBwb3J0 ZWQpCgpDb250cm9sIGlvY3RscyAoSW5wdXQgMCk6Cgl0ZXN0IFZJRElPQ19RVUVSWV9FWFRfQ1RS TC9RVUVSWU1FTlU6IE9LCgl0ZXN0IFZJRElPQ19RVUVSWUNUUkw6IE9LCgl0ZXN0IFZJRElPQ19H L1NfQ1RSTDogT0sKCXRlc3QgVklESU9DX0cvUy9UUllfRVhUX0NUUkxTOiBPSwoJdGVzdCBWSURJ T0NfKFVOKVNVQlNDUklCRV9FVkVOVC9EUUVWRU5UOiBPSwoJdGVzdCBWSURJT0NfRy9TX0pQRUdD T01QOiBPSyAoTm90IFN1cHBvcnRlZCkKCVN0YW5kYXJkIENvbnRyb2xzOiAxNyBQcml2YXRlIENv bnRyb2xzOiAwCgpGb3JtYXQgaW9jdGxzIChJbnB1dCAwKToKCXRlc3QgVklESU9DX0VOVU1fRk1U L0ZSQU1FU0laRVMvRlJBTUVJTlRFUlZBTFM6IE9LCgl0ZXN0IFZJRElPQ19HL1NfUEFSTTogT0sg KE5vdCBTdXBwb3J0ZWQpCgl0ZXN0IFZJRElPQ19HX0ZCVUY6IE9LIChOb3QgU3VwcG9ydGVkKQoJ dGVzdCBWSURJT0NfR19GTVQ6IE9LCgl0ZXN0IFZJRElPQ19UUllfRk1UOiBPSwoJdGVzdCBWSURJ T0NfU19GTVQ6IE9LCgl0ZXN0IFZJRElPQ19HX1NMSUNFRF9WQklfQ0FQOiBPSyAoTm90IFN1cHBv cnRlZCkKCXRlc3QgQ3JvcHBpbmc6IE9LIChOb3QgU3VwcG9ydGVkKQoJdGVzdCBDb21wb3Npbmc6 IE9LIChOb3QgU3VwcG9ydGVkKQoJdGVzdCBTY2FsaW5nOiBPSwoKQ29kZWMgaW9jdGxzIChJbnB1 dCAwKToKCXRlc3QgVklESU9DXyhUUllfKUVOQ09ERVJfQ01EOiBPSyAoTm90IFN1cHBvcnRlZCkK CXRlc3QgVklESU9DX0dfRU5DX0lOREVYOiBPSyAoTm90IFN1cHBvcnRlZCkKCXRlc3QgVklESU9D XyhUUllfKURFQ09ERVJfQ01EOiBPSyAoTm90IFN1cHBvcnRlZCkKCkJ1ZmZlciBpb2N0bHMgKElu cHV0IDApOgoJdGVzdCBWSURJT0NfUkVRQlVGUy9DUkVBVEVfQlVGUy9RVUVSWUJVRjogT0sKCXRl c3QgVklESU9DX0VYUEJVRjogT0sKCXRlc3QgUmVxdWVzdHM6IE9LIChOb3QgU3VwcG9ydGVkKQoK VG90YWwgZm9yIHN1bjZpLWNzaSBkZXZpY2UgL2Rldi92aWRlbzA6IDQ1LCBTdWNjZWVkZWQ6IDQ1 LCBGYWlsZWQ6IDAsIFdhcm5pbmdzOiAyCgotLSBzdW42aS1pc3AtY2FwdHVyZSB2NGwyLWNvbXBs aWFuY2UgcnVuCgp2NGwyLWNvbXBsaWFuY2UgU0hBOiBub3QgYXZhaWxhYmxlLCAzMiBiaXRzCgpD b21wbGlhbmNlIHRlc3QgZm9yIHN1bjZpLWlzcCBkZXZpY2UgL2Rldi92aWRlbzE6CgpEcml2ZXIg SW5mbzoKCURyaXZlciBuYW1lICAgICAgOiBzdW42aS1pc3AKCUNhcmQgdHlwZSAgICAgICAgOiBz dW42aS1pc3AtY2FwdHVyZQoJQnVzIGluZm8gICAgICAgICA6IHBsYXRmb3JtOjFjYjgwMDAuaXNw CglEcml2ZXIgdmVyc2lvbiAgIDogNS4xMy4wCglDYXBhYmlsaXRpZXMgICAgIDogMHg4NDIwMDAw MQoJCVZpZGVvIENhcHR1cmUKCQlTdHJlYW1pbmcKCQlFeHRlbmRlZCBQaXggRm9ybWF0CgkJRGV2 aWNlIENhcGFiaWxpdGllcwoJRGV2aWNlIENhcHMgICAgICA6IDB4MDQyMDAwMDEKCQlWaWRlbyBD YXB0dXJlCgkJU3RyZWFtaW5nCgkJRXh0ZW5kZWQgUGl4IEZvcm1hdApNZWRpYSBEcml2ZXIgSW5m bzoKCURyaXZlciBuYW1lICAgICAgOiBzdW42aS1pc3AKCU1vZGVsICAgICAgICAgICAgOiBBbGx3 aW5uZXIgSVNQIENhcHR1cmUgRGV2aWNlCglTZXJpYWwgICAgICAgICAgIDogCglCdXMgaW5mbyAg ICAgICAgIDogcGxhdGZvcm06MWNiODAwMC5pc3AKCU1lZGlhIHZlcnNpb24gICAgOiA1LjEzLjAK CUhhcmR3YXJlIHJldmlzaW9uOiAweDAwMDAwMDAwICgwKQoJRHJpdmVyIHZlcnNpb24gICA6IDUu MTMuMApJbnRlcmZhY2UgSW5mbzoKCUlEICAgICAgICAgICAgICAgOiAweDAzMDAwMDE3CglUeXBl ICAgICAgICAgICAgIDogVjRMIFZpZGVvCkVudGl0eSBJbmZvOgoJSUQgICAgICAgICAgICAgICA6 IDB4MDAwMDAwMTUgKDIxKQoJTmFtZSAgICAgICAgICAgICA6IHN1bjZpLWlzcC1jYXB0dXJlCglG dW5jdGlvbiAgICAgICAgIDogVjRMMiBJL08KCVBhZCAweDAxMDAwMDE2ICAgOiAwOiBTaW5rLCBN dXN0IENvbm5lY3QKCSAgTGluayAweDAyMDAwMDE5OiBmcm9tIHJlbW90ZSBwYWQgMHgxMDAwMDA0 IG9mIGVudGl0eSAnc3VuNmktaXNwLXByb2MnOiBEYXRhLCBFbmFibGVkLCBJbW11dGFibGUKClJl cXVpcmVkIGlvY3RsczoKCXRlc3QgTUMgaW5mb3JtYXRpb24gKHNlZSAnTWVkaWEgRHJpdmVyIElu Zm8nIGFib3ZlKTogT0sKCXRlc3QgVklESU9DX1FVRVJZQ0FQOiBPSwoKQWxsb3cgZm9yIG11bHRp cGxlIG9wZW5zOgoJdGVzdCBzZWNvbmQgL2Rldi92aWRlbzEgb3BlbjogT0sKCXRlc3QgVklESU9D X1FVRVJZQ0FQOiBPSwoJdGVzdCBWSURJT0NfRy9TX1BSSU9SSVRZOiBPSwoJdGVzdCBmb3IgdW5s aW1pdGVkIG9wZW5zOiBPSwoKRGVidWcgaW9jdGxzOgoJdGVzdCBWSURJT0NfREJHX0cvU19SRUdJ U1RFUjogT0sgKE5vdCBTdXBwb3J0ZWQpCgl0ZXN0IFZJRElPQ19MT0dfU1RBVFVTOiBPSwoKSW5w dXQgaW9jdGxzOgoJdGVzdCBWSURJT0NfRy9TX1RVTkVSL0VOVU1fRlJFUV9CQU5EUzogT0sgKE5v dCBTdXBwb3J0ZWQpCgl0ZXN0IFZJRElPQ19HL1NfRlJFUVVFTkNZOiBPSyAoTm90IFN1cHBvcnRl ZCkKCXRlc3QgVklESU9DX1NfSFdfRlJFUV9TRUVLOiBPSyAoTm90IFN1cHBvcnRlZCkKCXRlc3Qg VklESU9DX0VOVU1BVURJTzogT0sgKE5vdCBTdXBwb3J0ZWQpCgl0ZXN0IFZJRElPQ19HL1MvRU5V TUlOUFVUOiBPSwoJdGVzdCBWSURJT0NfRy9TX0FVRElPOiBPSyAoTm90IFN1cHBvcnRlZCkKCUlu cHV0czogMSBBdWRpbyBJbnB1dHM6IDAgVHVuZXJzOiAwCgpPdXRwdXQgaW9jdGxzOgoJdGVzdCBW SURJT0NfRy9TX01PRFVMQVRPUjogT0sgKE5vdCBTdXBwb3J0ZWQpCgl0ZXN0IFZJRElPQ19HL1Nf RlJFUVVFTkNZOiBPSyAoTm90IFN1cHBvcnRlZCkKCXRlc3QgVklESU9DX0VOVU1BVURPVVQ6IE9L IChOb3QgU3VwcG9ydGVkKQoJdGVzdCBWSURJT0NfRy9TL0VOVU1PVVRQVVQ6IE9LIChOb3QgU3Vw cG9ydGVkKQoJdGVzdCBWSURJT0NfRy9TX0FVRE9VVDogT0sgKE5vdCBTdXBwb3J0ZWQpCglPdXRw dXRzOiAwIEF1ZGlvIE91dHB1dHM6IDAgTW9kdWxhdG9yczogMAoKSW5wdXQvT3V0cHV0IGNvbmZp Z3VyYXRpb24gaW9jdGxzOgoJdGVzdCBWSURJT0NfRU5VTS9HL1MvUVVFUllfU1REOiBPSyAoTm90 IFN1cHBvcnRlZCkKCXRlc3QgVklESU9DX0VOVU0vRy9TL1FVRVJZX0RWX1RJTUlOR1M6IE9LIChO b3QgU3VwcG9ydGVkKQoJdGVzdCBWSURJT0NfRFZfVElNSU5HU19DQVA6IE9LIChOb3QgU3VwcG9y dGVkKQoJdGVzdCBWSURJT0NfRy9TX0VESUQ6IE9LIChOb3QgU3VwcG9ydGVkKQoKQ29udHJvbCBp b2N0bHMgKElucHV0IDApOgoJdGVzdCBWSURJT0NfUVVFUllfRVhUX0NUUkwvUVVFUllNRU5VOiBP SwoJdGVzdCBWSURJT0NfUVVFUllDVFJMOiBPSwoJdGVzdCBWSURJT0NfRy9TX0NUUkw6IE9LCgl0 ZXN0IFZJRElPQ19HL1MvVFJZX0VYVF9DVFJMUzogT0sKCXRlc3QgVklESU9DXyhVTilTVUJTQ1JJ QkVfRVZFTlQvRFFFVkVOVDogT0sKCXRlc3QgVklESU9DX0cvU19KUEVHQ09NUDogT0sgKE5vdCBT dXBwb3J0ZWQpCglTdGFuZGFyZCBDb250cm9sczogMTcgUHJpdmF0ZSBDb250cm9sczogMAoKRm9y bWF0IGlvY3RscyAoSW5wdXQgMCk6Cgl0ZXN0IFZJRElPQ19FTlVNX0ZNVC9GUkFNRVNJWkVTL0ZS QU1FSU5URVJWQUxTOiBPSwoJdGVzdCBWSURJT0NfRy9TX1BBUk06IE9LIChOb3QgU3VwcG9ydGVk KQoJdGVzdCBWSURJT0NfR19GQlVGOiBPSyAoTm90IFN1cHBvcnRlZCkKCXRlc3QgVklESU9DX0df Rk1UOiBPSwoJdGVzdCBWSURJT0NfVFJZX0ZNVDogT0sKCXRlc3QgVklESU9DX1NfRk1UOiBPSwoJ dGVzdCBWSURJT0NfR19TTElDRURfVkJJX0NBUDogT0sgKE5vdCBTdXBwb3J0ZWQpCgl0ZXN0IENy b3BwaW5nOiBPSyAoTm90IFN1cHBvcnRlZCkKCXRlc3QgQ29tcG9zaW5nOiBPSyAoTm90IFN1cHBv cnRlZCkKCXRlc3QgU2NhbGluZzogT0sKCkNvZGVjIGlvY3RscyAoSW5wdXQgMCk6Cgl0ZXN0IFZJ RElPQ18oVFJZXylFTkNPREVSX0NNRDogT0sgKE5vdCBTdXBwb3J0ZWQpCgl0ZXN0IFZJRElPQ19H X0VOQ19JTkRFWDogT0sgKE5vdCBTdXBwb3J0ZWQpCgl0ZXN0IFZJRElPQ18oVFJZXylERUNPREVS X0NNRDogT0sgKE5vdCBTdXBwb3J0ZWQpCgpCdWZmZXIgaW9jdGxzIChJbnB1dCAwKToKCXRlc3Qg VklESU9DX1JFUUJVRlMvQ1JFQVRFX0JVRlMvUVVFUllCVUY6IE9LCgl0ZXN0IFZJRElPQ19FWFBC VUY6IE9LCgl0ZXN0IFJlcXVlc3RzOiBPSyAoTm90IFN1cHBvcnRlZCkKClRvdGFsIGZvciBzdW42 aS1pc3AgZGV2aWNlIC9kZXYvdmlkZW8xOiA0NSwgU3VjY2VlZGVkOiA0NSwgRmFpbGVkOiAwLCBX YXJuaW5nczogMAoKLS0gc3VuNmktaXNwLXBhcmFtcyB2NGwyLWNvbXBsaWFuY2UgcnVuCgp2NGwy LWNvbXBsaWFuY2UgU0hBOiBub3QgYXZhaWxhYmxlLCAzMiBiaXRzCgpDb21wbGlhbmNlIHRlc3Qg Zm9yIHN1bjZpLWlzcCBkZXZpY2UgL2Rldi92aWRlbzI6CgpEcml2ZXIgSW5mbzoKCURyaXZlciBu YW1lICAgICAgOiBzdW42aS1pc3AKCUNhcmQgdHlwZSAgICAgICAgOiBzdW42aS1pc3AtcGFyYW1z CglCdXMgaW5mbyAgICAgICAgIDogcGxhdGZvcm06MWNiODAwMC5pc3AKCURyaXZlciB2ZXJzaW9u ICAgOiA1LjEzLjAKCUNhcGFiaWxpdGllcyAgICAgOiAweDhjMjAwMDAwCgkJTWV0YWRhdGEgT3V0 cHV0CgkJU3RyZWFtaW5nCgkJRXh0ZW5kZWQgUGl4IEZvcm1hdAoJCURldmljZSBDYXBhYmlsaXRp ZXMKCURldmljZSBDYXBzICAgICAgOiAweDBjMjAwMDAwCgkJTWV0YWRhdGEgT3V0cHV0CgkJU3Ry ZWFtaW5nCgkJRXh0ZW5kZWQgUGl4IEZvcm1hdApNZWRpYSBEcml2ZXIgSW5mbzoKCURyaXZlciBu YW1lICAgICAgOiBzdW42aS1pc3AKCU1vZGVsICAgICAgICAgICAgOiBBbGx3aW5uZXIgSVNQIENh cHR1cmUgRGV2aWNlCglTZXJpYWwgICAgICAgICAgIDogCglCdXMgaW5mbyAgICAgICAgIDogcGxh dGZvcm06MWNiODAwMC5pc3AKCU1lZGlhIHZlcnNpb24gICAgOiA1LjEzLjAKCUhhcmR3YXJlIHJl dmlzaW9uOiAweDAwMDAwMDAwICgwKQoJRHJpdmVyIHZlcnNpb24gICA6IDUuMTMuMApJbnRlcmZh Y2UgSW5mbzoKCUlEICAgICAgICAgICAgICAgOiAweDAzMDAwMDFkCglUeXBlICAgICAgICAgICAg IDogVjRMIFZpZGVvCkVudGl0eSBJbmZvOgoJSUQgICAgICAgICAgICAgICA6IDB4MDAwMDAwMWIg KDI3KQoJTmFtZSAgICAgICAgICAgICA6IHN1bjZpLWlzcC1wYXJhbXMKCUZ1bmN0aW9uICAgICAg ICAgOiBWNEwyIEkvTwoJUGFkIDB4MDEwMDAwMWMgICA6IDA6IFNvdXJjZSwgTXVzdCBDb25uZWN0 CgkgIExpbmsgMHgwMjAwMDAxZjogdG8gcmVtb3RlIHBhZCAweDEwMDAwMDMgb2YgZW50aXR5ICdz dW42aS1pc3AtcHJvYyc6IERhdGEsIEVuYWJsZWQsIEltbXV0YWJsZQoKUmVxdWlyZWQgaW9jdGxz OgoJdGVzdCBNQyBpbmZvcm1hdGlvbiAoc2VlICdNZWRpYSBEcml2ZXIgSW5mbycgYWJvdmUpOiBP SwoJdGVzdCBWSURJT0NfUVVFUllDQVA6IE9LCgpBbGxvdyBmb3IgbXVsdGlwbGUgb3BlbnM6Cgl0 ZXN0IHNlY29uZCAvZGV2L3ZpZGVvMiBvcGVuOiBPSwoJdGVzdCBWSURJT0NfUVVFUllDQVA6IE9L Cgl0ZXN0IFZJRElPQ19HL1NfUFJJT1JJVFk6IE9LCgl0ZXN0IGZvciB1bmxpbWl0ZWQgb3BlbnM6 IE9LCgpEZWJ1ZyBpb2N0bHM6Cgl0ZXN0IFZJRElPQ19EQkdfRy9TX1JFR0lTVEVSOiBPSyAoTm90 IFN1cHBvcnRlZCkKCXRlc3QgVklESU9DX0xPR19TVEFUVVM6IE9LCgpJbnB1dCBpb2N0bHM6Cgl0 ZXN0IFZJRElPQ19HL1NfVFVORVIvRU5VTV9GUkVRX0JBTkRTOiBPSyAoTm90IFN1cHBvcnRlZCkK CXRlc3QgVklESU9DX0cvU19GUkVRVUVOQ1k6IE9LIChOb3QgU3VwcG9ydGVkKQoJdGVzdCBWSURJ T0NfU19IV19GUkVRX1NFRUs6IE9LIChOb3QgU3VwcG9ydGVkKQoJdGVzdCBWSURJT0NfRU5VTUFV RElPOiBPSyAoTm90IFN1cHBvcnRlZCkKCXRlc3QgVklESU9DX0cvUy9FTlVNSU5QVVQ6IE9LIChO b3QgU3VwcG9ydGVkKQoJdGVzdCBWSURJT0NfRy9TX0FVRElPOiBPSyAoTm90IFN1cHBvcnRlZCkK CUlucHV0czogMCBBdWRpbyBJbnB1dHM6IDAgVHVuZXJzOiAwCgpPdXRwdXQgaW9jdGxzOgoJdGVz dCBWSURJT0NfRy9TX01PRFVMQVRPUjogT0sgKE5vdCBTdXBwb3J0ZWQpCgl0ZXN0IFZJRElPQ19H L1NfRlJFUVVFTkNZOiBPSyAoTm90IFN1cHBvcnRlZCkKCXRlc3QgVklESU9DX0VOVU1BVURPVVQ6 IE9LIChOb3QgU3VwcG9ydGVkKQoJdGVzdCBWSURJT0NfRy9TL0VOVU1PVVRQVVQ6IE9LIChOb3Qg U3VwcG9ydGVkKQoJdGVzdCBWSURJT0NfRy9TX0FVRE9VVDogT0sgKE5vdCBTdXBwb3J0ZWQpCglP dXRwdXRzOiAwIEF1ZGlvIE91dHB1dHM6IDAgTW9kdWxhdG9yczogMAoKSW5wdXQvT3V0cHV0IGNv bmZpZ3VyYXRpb24gaW9jdGxzOgoJdGVzdCBWSURJT0NfRU5VTS9HL1MvUVVFUllfU1REOiBPSyAo Tm90IFN1cHBvcnRlZCkKCXRlc3QgVklESU9DX0VOVU0vRy9TL1FVRVJZX0RWX1RJTUlOR1M6IE9L IChOb3QgU3VwcG9ydGVkKQoJdGVzdCBWSURJT0NfRFZfVElNSU5HU19DQVA6IE9LIChOb3QgU3Vw cG9ydGVkKQoJdGVzdCBWSURJT0NfRy9TX0VESUQ6IE9LIChOb3QgU3VwcG9ydGVkKQoKQ29udHJv bCBpb2N0bHM6Cgl0ZXN0IFZJRElPQ19RVUVSWV9FWFRfQ1RSTC9RVUVSWU1FTlU6IE9LCgl0ZXN0 IFZJRElPQ19RVUVSWUNUUkw6IE9LCgl0ZXN0IFZJRElPQ19HL1NfQ1RSTDogT0sKCXRlc3QgVklE SU9DX0cvUy9UUllfRVhUX0NUUkxTOiBPSwoJdGVzdCBWSURJT0NfKFVOKVNVQlNDUklCRV9FVkVO VC9EUUVWRU5UOiBPSwoJdGVzdCBWSURJT0NfRy9TX0pQRUdDT01QOiBPSyAoTm90IFN1cHBvcnRl ZCkKCVN0YW5kYXJkIENvbnRyb2xzOiAxNyBQcml2YXRlIENvbnRyb2xzOiAwCgpGb3JtYXQgaW9j dGxzOgoJdGVzdCBWSURJT0NfRU5VTV9GTVQvRlJBTUVTSVpFUy9GUkFNRUlOVEVSVkFMUzogT0sK CXRlc3QgVklESU9DX0cvU19QQVJNOiBPSyAoTm90IFN1cHBvcnRlZCkKCXRlc3QgVklESU9DX0df RkJVRjogT0sgKE5vdCBTdXBwb3J0ZWQpCgl0ZXN0IFZJRElPQ19HX0ZNVDogT0sKCXRlc3QgVklE SU9DX1RSWV9GTVQ6IE9LCgl0ZXN0IFZJRElPQ19TX0ZNVDogT0sKCXRlc3QgVklESU9DX0dfU0xJ Q0VEX1ZCSV9DQVA6IE9LIChOb3QgU3VwcG9ydGVkKQoJdGVzdCBDcm9wcGluZzogT0sgKE5vdCBT dXBwb3J0ZWQpCgl0ZXN0IENvbXBvc2luZzogT0sgKE5vdCBTdXBwb3J0ZWQpCgl0ZXN0IFNjYWxp bmc6IE9LIChOb3QgU3VwcG9ydGVkKQoKQ29kZWMgaW9jdGxzOgoJdGVzdCBWSURJT0NfKFRSWV8p RU5DT0RFUl9DTUQ6IE9LIChOb3QgU3VwcG9ydGVkKQoJdGVzdCBWSURJT0NfR19FTkNfSU5ERVg6 IE9LIChOb3QgU3VwcG9ydGVkKQoJdGVzdCBWSURJT0NfKFRSWV8pREVDT0RFUl9DTUQ6IE9LIChO b3QgU3VwcG9ydGVkKQoKQnVmZmVyIGlvY3RsczoKCXRlc3QgVklESU9DX1JFUUJVRlMvQ1JFQVRF X0JVRlMvUVVFUllCVUY6IE9LCgl0ZXN0IFZJRElPQ19FWFBCVUY6IE9LCgl0ZXN0IFJlcXVlc3Rz OiBPSyAoTm90IFN1cHBvcnRlZCkKClRvdGFsIGZvciBzdW42aS1pc3AgZGV2aWNlIC9kZXYvdmlk ZW8yOiA0NSwgU3VjY2VlZGVkOiA0NSwgRmFpbGVkOiAwLCBXYXJuaW5nczogMAoKS8OpdmluIEwn aMO0cGl0YWwgKDEpOgogIEFSTTogZHRzOiBzdW44aTogYTgzdDogYmFuYW5hcGktbTM6IEVuYWJs ZSBNSVBJIENTSS0yIHdpdGggT1Y4ODY1CgpQYXVsIEtvY2lhbGtvd3NraSAoMjEpOgogIGNsazog c3VueGktbmc6IHYzczogTWFrZSB0aGUgSVNQIFBMTCBjbG9jayBwdWJsaWMKICBBUk06IGR0czog c3VuOGk6IHYzczogUGFyZW50IHRoZSBDU0kgbW9kdWxlIGNsb2NrIHRvIHRoZSBJU1AgUExMCiAg ZHQtYmluZGluZ3M6IHN1bjZpLWEzMS1taXBpLWRwaHk6IEFkZCBvcHRpb25hbCBkaXJlY3Rpb24g cHJvcGVydHkKICBwaHk6IGFsbHdpbm5lcjogcGh5LXN1bjZpLW1pcGktZHBoeTogU3VwcG9ydCBE LVBIWSBSeCBtb2RlIGZvciBNSVBJCiAgICBDU0ktMgogIGR0LWJpbmRpbmdzOiBtZWRpYTogc3Vu NmktYTMxLWNzaTogQWRkIE1JUEkgQ1NJLTIgaW5wdXQgcG9ydAogIGR0LWJpbmRpbmdzOiBtZWRp YTogQWRkIEFsbHdpbm5lciBBMzEgTUlQSSBDU0ktMiBiaW5kaW5ncwogICAgZG9jdW1lbnRhdGlv bgogIG1lZGlhOiBzdW54aTogQWRkIHN1cHBvcnQgZm9yIHRoZSBBMzEgTUlQSSBDU0ktMiBjb250 cm9sbGVyCiAgTUFJTlRBSU5FUlM6IEFkZCBlbnRyeSBmb3IgdGhlIEFsbHdpbm5lciBBMzEgTUlQ SSBDU0ktMiBicmlkZ2UgZHJpdmVyCiAgQVJNOiBkdHM6IHN1bjhpOiB2M3M6IEFkZCBub2RlcyBm b3IgTUlQSSBDU0ktMiBzdXBwb3J0CiAgZHQtYmluZGluZ3M6IG1lZGlhOiBBZGQgQWxsd2lubmVy IEE4M1QgTUlQSSBDU0ktMiBiaW5kaW5ncwogICAgZG9jdW1lbnRhdGlvbgogIG1lZGlhOiBzdW54 aTogQWRkIHN1cHBvcnQgZm9yIHRoZSBBODNUIE1JUEkgQ1NJLTIgY29udHJvbGxlcgogIE1BSU5U QUlORVJTOiBBZGQgZW50cnkgZm9yIHRoZSBBbGx3aW5uZXIgQTgzVCBNSVBJIENTSS0yIGJyaWRn ZQogIEFSTTogZHRzOiBzdW44aTogYTgzdDogQWRkIE1JUEkgQ1NJLTIgY29udHJvbGxlciBub2Rl CiAgbWVkaWE6IHN1bnhpOiBSZW1vdmUgdGhlIHN1bjZpLWNzaSBkcml2ZXIgaW1wbGVtZW50YXRp b24KICBtZWRpYTogc3VueGk6IEludHJvZHVjZSBhIHJld3JpdHRlbiBzdW42aS1jc2kgZHJpdmVy CiAgZHQtYmluZGluZ3M6IG1lZGlhOiBBZGQgQWxsd2lubmVyIEEzMSBJU1AgYmluZGluZ3MgZG9j dW1lbnRhdGlvbgogIGR0LWJpbmRpbmdzOiBtZWRpYTogc3VuNmktYTMxLWNzaTogQWRkIElTUCBv dXRwdXQgcG9ydAogIHNvYzogc3VueGk6IG1idXM6IEFkZCBBMzEgSVNQIGNvbXBhdGlibGVzIHRv IHRoZSBsaXN0CiAgc3RhZ2luZzogbWVkaWE6IEFkZCBzdXBwb3J0IGZvciB0aGUgQWxsd2lubmVy IEEzMSBJU1AKICBNQUlOVEFJTkVSUzogQWRkIGVudHJ5IGZvciB0aGUgQWxsd2lubmVyIEEzMSBJ U1AgZHJpdmVyCiAgQVJNOiBkdHM6IHN1bjhpOiB2M3M6IEFkZCBzdXBwb3J0IGZvciB0aGUgSVNQ CgogLi4uL21lZGlhL2FsbHdpbm5lcixzdW42aS1hMzEtY3NpLnlhbWwgICAgICAgIHwgICA5MSAr LQogLi4uL21lZGlhL2FsbHdpbm5lcixzdW42aS1hMzEtaXNwLnlhbWwgICAgICAgIHwgIDExMSAr KwogLi4uL21lZGlhL2FsbHdpbm5lcixzdW42aS1hMzEtbWlwaS1jc2kyLnlhbWwgIHwgIDE0MiAr KysKIC4uLi9tZWRpYS9hbGx3aW5uZXIsc3VuOGktYTgzdC1taXBpLWNzaTIueWFtbCB8ICAxMzMg KysKIC4uLi9waHkvYWxsd2lubmVyLHN1bjZpLWEzMS1taXBpLWRwaHkueWFtbCAgICB8ICAgMTIg KwogTUFJTlRBSU5FUlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyNSAr CiBhcmNoL2FybS9ib290L2R0cy9zdW44aS1hODN0LWJhbmFuYXBpLW0zLmR0cyAgfCAgMTAyICsr CiBhcmNoL2FybS9ib290L2R0cy9zdW44aS1hODN0LmR0c2kgICAgICAgICAgICAgfCAgIDI2ICsK IGFyY2gvYXJtL2Jvb3QvZHRzL3N1bjhpLXYzcy5kdHNpICAgICAgICAgICAgICB8ICAxMDggKysK IGRyaXZlcnMvY2xrL3N1bnhpLW5nL2NjdS1zdW44aS12M3MuaCAgICAgICAgICB8ICAgIDEgLQog ZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9LY29uZmlnICAgICAgICAgIHwgICAgMiArCiBk cml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL01ha2VmaWxlICAgICAgICAgfCAgICAyICsKIC4u Li9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW42aS1jc2kvTWFrZWZpbGUgICB8ICAgIDIgKy0KIC4u Li9wbGF0Zm9ybS9zdW54aS9zdW42aS1jc2kvc3VuNmlfY3NpLmMgICAgICB8IDEwNTEgKysrKyst LS0tLS0tLS0tLQogLi4uL3BsYXRmb3JtL3N1bnhpL3N1bjZpLWNzaS9zdW42aV9jc2kuaCAgICAg IHwgIDE1NSArLS0KIC4uLi9zdW54aS9zdW42aS1jc2kvc3VuNmlfY3NpX2JyaWRnZS5jICAgICAg ICB8ICA4OTUgKysrKysrKysrKysrKysKIC4uLi9zdW54aS9zdW42aS1jc2kvc3VuNmlfY3NpX2Jy aWRnZS5oICAgICAgICB8ICAgNjQgKwogLi4uL3N1bnhpL3N1bjZpLWNzaS9zdW42aV9jc2lfY2Fw dHVyZS5jICAgICAgIHwgMTA5NCArKysrKysrKysrKysrKysrKwogLi4uL3N1bnhpL3N1bjZpLWNz aS9zdW42aV9jc2lfY2FwdHVyZS5oICAgICAgIHwgICA3MyArKwogLi4uL3BsYXRmb3JtL3N1bnhp L3N1bjZpLWNzaS9zdW42aV9jc2lfcmVnLmggIHwgIDM2NCArKystLS0KIC4uLi9wbGF0Zm9ybS9z dW54aS9zdW42aS1jc2kvc3VuNmlfdmlkZW8uYyAgICB8ICA2ODMgLS0tLS0tLS0tLQogLi4uL3Bs YXRmb3JtL3N1bnhpL3N1bjZpLWNzaS9zdW42aV92aWRlby5oICAgIHwgICAzOCAtCiAuLi4vcGxh dGZvcm0vc3VueGkvc3VuNmktbWlwaS1jc2kyL0tjb25maWcgICAgfCAgIDEyICsKIC4uLi9wbGF0 Zm9ybS9zdW54aS9zdW42aS1taXBpLWNzaTIvTWFrZWZpbGUgICB8ICAgIDQgKwogLi4uL3N1bnhp L3N1bjZpLW1pcGktY3NpMi9zdW42aV9taXBpX2NzaTIuYyAgIHwgIDc0NiArKysrKysrKysrKwog Li4uL3N1bnhpL3N1bjZpLW1pcGktY3NpMi9zdW42aV9taXBpX2NzaTIuaCAgIHwgICA1MiArCiAu Li4vc3VuNmktbWlwaS1jc2kyL3N1bjZpX21pcGlfY3NpMl9yZWcuaCAgICAgfCAgIDgyICsrCiAu Li4vc3VueGkvc3VuOGktYTgzdC1taXBpLWNzaTIvS2NvbmZpZyAgICAgICAgfCAgIDExICsKIC4u Li9zdW54aS9zdW44aS1hODN0LW1pcGktY3NpMi9NYWtlZmlsZSAgICAgICB8ICAgIDQgKwogLi4u L3N1bjhpLWE4M3QtbWlwaS1jc2kyL3N1bjhpX2E4M3RfZHBoeS5jICAgIHwgICA3MiArKwogLi4u L3N1bjhpLWE4M3QtbWlwaS1jc2kyL3N1bjhpX2E4M3RfZHBoeS5oICAgIHwgICAzOSArCiAuLi4v c3VuOGlfYTgzdF9taXBpX2NzaTIuYyAgICAgICAgICAgICAgICAgICAgfCAgODEyICsrKysrKysr KysrKwogLi4uL3N1bjhpX2E4M3RfbWlwaV9jc2kyLmggICAgICAgICAgICAgICAgICAgIHwgICA1 NSArCiAuLi4vc3VuOGlfYTgzdF9taXBpX2NzaTJfcmVnLmggICAgICAgICAgICAgICAgfCAgMTU3 ICsrKwogZHJpdmVycy9waHkvYWxsd2lubmVyL3BoeS1zdW42aS1taXBpLWRwaHkuYyAgIHwgIDE2 NiArKy0KIGRyaXZlcnMvc29jL3N1bnhpL3N1bnhpX21idXMuYyAgICAgICAgICAgICAgICB8ICAg IDIgKwogZHJpdmVycy9zdGFnaW5nL21lZGlhL3N1bnhpL0tjb25maWcgICAgICAgICAgIHwgICAg MSArCiBkcml2ZXJzL3N0YWdpbmcvbWVkaWEvc3VueGkvTWFrZWZpbGUgICAgICAgICAgfCAgICAx ICsKIGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9zdW54aS9zdW42aS1pc3AvS2NvbmZpZyB8ICAgMTMg KwogLi4uL3N0YWdpbmcvbWVkaWEvc3VueGkvc3VuNmktaXNwL01ha2VmaWxlICAgIHwgICAgNCAr CiAuLi4vc3RhZ2luZy9tZWRpYS9zdW54aS9zdW42aS1pc3Avc3VuNmlfaXNwLmMgfCAgNTc3ICsr KysrKysrKwogLi4uL3N0YWdpbmcvbWVkaWEvc3VueGkvc3VuNmktaXNwL3N1bjZpX2lzcC5oIHwg ICA4NiArKwogLi4uL21lZGlhL3N1bnhpL3N1bjZpLWlzcC9zdW42aV9pc3BfY2FwdHVyZS5jIHwg IDc1OSArKysrKysrKysrKysKIC4uLi9tZWRpYS9zdW54aS9zdW42aS1pc3Avc3VuNmlfaXNwX2Nh cHR1cmUuaCB8ICAgNzkgKysKIC4uLi9tZWRpYS9zdW54aS9zdW42aS1pc3Avc3VuNmlfaXNwX3Bh cmFtcy5jICB8ICA1NzEgKysrKysrKysrCiAuLi4vbWVkaWEvc3VueGkvc3VuNmktaXNwL3N1bjZp X2lzcF9wYXJhbXMuaCAgfCAgIDUzICsKIC4uLi9tZWRpYS9zdW54aS9zdW42aS1pc3Avc3VuNmlf aXNwX3Byb2MuYyAgICB8ICA1OTggKysrKysrKysrCiAuLi4vbWVkaWEvc3VueGkvc3VuNmktaXNw L3N1bjZpX2lzcF9wcm9jLmggICAgfCAgIDYxICsKIC4uLi9tZWRpYS9zdW54aS9zdW42aS1pc3Av c3VuNmlfaXNwX3JlZy5oICAgICB8ICAyNzUgKysrKysKIC4uLi9zdW54aS9zdW42aS1pc3AvdWFw aS9zdW42aS1pc3AtY29uZmlnLmggICB8ICAgNDMgKwogaW5jbHVkZS9kdC1iaW5kaW5ncy9jbG9j ay9zdW44aS12M3MtY2N1LmggICAgIHwgICAgMSArCiA1MSBmaWxlcyBjaGFuZ2VkLCA4NzAyIGlu c2VydGlvbnMoKyksIDE4MDggZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1l bnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2FsbHdpbm5lcixzdW42aS1hMzEtaXNw LnlhbWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu Z3MvbWVkaWEvYWxsd2lubmVyLHN1bjZpLWEzMS1taXBpLWNzaTIueWFtbAogY3JlYXRlIG1vZGUg MTAwNjQ0IERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9hbGx3aW5uZXIs c3VuOGktYTgzdC1taXBpLWNzaTIueWFtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWVk aWEvcGxhdGZvcm0vc3VueGkvc3VuNmktY3NpL3N1bjZpX2NzaV9icmlkZ2UuYwogY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vc3VueGkvc3VuNmktY3NpL3N1bjZpX2Nz aV9icmlkZ2UuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vc3Vu eGkvc3VuNmktY3NpL3N1bjZpX2NzaV9jYXB0dXJlLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1bjZpLWNzaS9zdW42aV9jc2lfY2FwdHVyZS5oCiBk ZWxldGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW42aS1jc2kv c3VuNmlfdmlkZW8uYwogZGVsZXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0v c3VueGkvc3VuNmktY3NpL3N1bjZpX3ZpZGVvLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1bjZpLW1pcGktY3NpMi9LY29uZmlnCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW42aS1taXBpLWNzaTIvTWFr ZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1 bjZpLW1pcGktY3NpMi9zdW42aV9taXBpX2NzaTIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvbWVkaWEvcGxhdGZvcm0vc3VueGkvc3VuNmktbWlwaS1jc2kyL3N1bjZpX21pcGlfY3NpMi5o CiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW42aS1t aXBpLWNzaTIvc3VuNmlfbWlwaV9jc2kyX3JlZy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW44aS1hODN0LW1pcGktY3NpMi9LY29uZmlnCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW44aS1hODN0LW1p cGktY3NpMi9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWVkaWEvcGxhdGZv cm0vc3VueGkvc3VuOGktYTgzdC1taXBpLWNzaTIvc3VuOGlfYTgzdF9kcGh5LmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1bjhpLWE4M3QtbWlwaS1j c2kyL3N1bjhpX2E4M3RfZHBoeS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS9zdW54aS9zdW44aS1hODN0LW1pcGktY3NpMi9zdW44aV9hODN0X21pcGlfY3NpMi5j CiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW44aS1h ODN0LW1pcGktY3NpMi9zdW44aV9hODN0X21pcGlfY3NpMi5oCiBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW44aS1hODN0LW1pcGktY3NpMi9zdW44aV9h ODN0X21pcGlfY3NpMl9yZWcuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvc3RhZ2luZy9t ZWRpYS9zdW54aS9zdW42aS1pc3AvS2NvbmZpZwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv c3RhZ2luZy9tZWRpYS9zdW54aS9zdW42aS1pc3AvTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBkcml2ZXJzL3N0YWdpbmcvbWVkaWEvc3VueGkvc3VuNmktaXNwL3N1bjZpX2lzcC5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9zdGFnaW5nL21lZGlhL3N1bnhpL3N1bjZpLWlzcC9zdW42 aV9pc3AuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9zdW54aS9z dW42aS1pc3Avc3VuNmlfaXNwX2NhcHR1cmUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv c3RhZ2luZy9tZWRpYS9zdW54aS9zdW42aS1pc3Avc3VuNmlfaXNwX2NhcHR1cmUuaAogY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9zdW54aS9zdW42aS1pc3Avc3VuNmlf aXNwX3BhcmFtcy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9zdGFnaW5nL21lZGlhL3N1 bnhpL3N1bjZpLWlzcC9zdW42aV9pc3BfcGFyYW1zLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL3N0YWdpbmcvbWVkaWEvc3VueGkvc3VuNmktaXNwL3N1bjZpX2lzcF9wcm9jLmMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3N0YWdpbmcvbWVkaWEvc3VueGkvc3VuNmktaXNwL3N1bjZp X2lzcF9wcm9jLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3N0YWdpbmcvbWVkaWEvc3Vu eGkvc3VuNmktaXNwL3N1bjZpX2lzcF9yZWcuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv c3RhZ2luZy9tZWRpYS9zdW54aS9zdW42aS1pc3AvdWFwaS9zdW42aS1pc3AtY29uZmlnLmgKCi0t IAoyLjMyLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmlu ZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9s aW51eC1hcm0ta2VybmVsCg==