From mboxrd@z Thu Jan 1 00:00:00 1970 From: robh@kernel.org (Rob Herring) Date: Wed, 24 Oct 2018 17:02:13 -0500 Subject: [PATCH V2 6/8] dts: imx: add common imx7ulp dtsi support In-Reply-To: <1540295058-26090-7-git-send-email-aisheng.dong@nxp.com> References: <1540295058-26090-1-git-send-email-aisheng.dong@nxp.com> <1540295058-26090-7-git-send-email-aisheng.dong@nxp.com> Message-ID: <20181024220213.GA26789@bogus> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Tue, Oct 23, 2018 at 11:49:25AM +0000, A.s. Dong wrote: > The i.MX 7ULP family of processors represents NXP?s latest achievement > in ultra-low-power processing for use cases demanding long battery life. > Targeted towards the growing market of portable devices, the i.MX 7ULP > family of processors features NXP's advanced implementation of the Arm? > Cortex?-A7 core, the Arm Cortex-M4 core, as well as a 3D and 2D Graphics > Processing Units (GPUs). > > This patch aims to add the initial support including: > 1) CLK > 2) GPIO PTC, PTD, PTE, PTF > 3) uSDHC 1/2 > 4) LPUART 4/5/6/7 > 5) LPI2C 6/7 > > Cc: Rob Herring > Cc: Shawn Guo > Cc: devicetree at vger.kernel.org > Cc: Sascha Hauer > Cc: Fabio Estevam > Signed-off-by: Dong Aisheng > --- > ChangeLog: > v1->v2: > * update clk part due to binding change > * separate soc.dtsi from board.dts > --- > arch/arm/boot/dts/imx7ulp.dtsi | 323 +++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 323 insertions(+) > create mode 100644 arch/arm/boot/dts/imx7ulp.dtsi > > diff --git a/arch/arm/boot/dts/imx7ulp.dtsi b/arch/arm/boot/dts/imx7ulp.dtsi > new file mode 100644 > index 0000000..795edc2 > --- /dev/null > +++ b/arch/arm/boot/dts/imx7ulp.dtsi > @@ -0,0 +1,323 @@ > +// SPDX-License-Identifier: GPL-2.0+ > +/* > + * Copyright (C) 2016 Freescale Semiconductor, Inc. > + * Copyright 2017-2018 NXP > + * Dong Aisheng > + */ > + > +#include > +#include > +#include > + > +#include "imx7ulp-pinfunc.h" > + > +/ { > + interrupt-parent = <&intc>; > + > + #address-cells = <1>; > + #size-cells = <1>; > + > + aliases { > + gpio0 = &gpio_ptc; > + gpio1 = &gpio_ptd; > + gpio2 = &gpio_pte; > + gpio3 = &gpio_ptf; > + i2c0 = &lpi2c6; > + i2c1 = &lpi2c7; > + mmc0 = &usdhc0; > + mmc1 = &usdhc1; > + serial0 = &lpuart4; > + serial1 = &lpuart5; > + serial2 = &lpuart6; > + serial3 = &lpuart7; > + }; > + > + cpus { > + #address-cells = <1>; > + #size-cells = <0>; > + > + cpu0: cpu at 0 { > + compatible = "arm,cortex-a7"; > + device_type = "cpu"; > + reg = <0>; > + }; > + }; > + > + intc: interrupt-controller at 40021000 { > + compatible = "arm,cortex-a7-gic"; > + #interrupt-cells = <3>; > + interrupt-controller; > + reg = <0x40021000 0x1000>, > + <0x40022000 0x1000>; > + }; > + > + rosc: clock-rosc { > + compatible = "fixed-clock"; > + clock-frequency = <32768>; > + clock-output-names = "rosc"; > + #clock-cells = <0>; > + }; > + > + sosc: clock-sosc { > + compatible = "fixed-clock"; > + clock-frequency = <24000000>; > + clock-output-names = "sosc"; > + #clock-cells = <0>; > + }; > + > + sirc: clock-sirc { > + compatible = "fixed-clock"; > + clock-frequency = <16000000>; > + clock-output-names = "sirc"; > + #clock-cells = <0>; > + }; > + > + firc: clock-firc { > + compatible = "fixed-clock"; > + clock-frequency = <48000000>; > + clock-output-names = "firc"; > + #clock-cells = <0>; > + }; > + > + upll: clock-upll { > + compatible = "fixed-clock"; > + clock-frequency = <480000000>; > + clock-output-names = "upll"; > + #clock-cells = <0>; > + }; > + > + mpll: clock-mpll { > + compatible = "fixed-clock"; > + clock-frequency = <480000000>; > + clock-output-names = "mpll"; > + #clock-cells = <0>; > + }; > + > + timer { > + compatible = "arm,armv7-timer"; > + arm,cpu-registers-not-fw-configured; AIUI, this was a work-around for some existing platform. New platforms should not have this property. > + interrupts = , > + ; > + clock-frequency = <1000000>; This too should be initialized by firmware and not in DT IIRC. > + status = "disabled"; I think enabled should be the norm. > + }; > + > + ahbbridge0: bus at 40000000 { > + compatible = "simple-bus"; > + #address-cells = <1>; > + #size-cells = <1>; > + reg = <0x40000000 0x800000>; > + ranges; > + > + lpuart4: serial at 402d0000 { > + compatible = "fsl,imx7ulp-lpuart"; > + reg = <0x402d0000 0x1000>; > + interrupts = ; > + clocks = <&pcc2 IMX7ULP_CLK_LPUART4>; > + clock-names = "ipg"; > + assigned-clocks = <&pcc2 IMX7ULP_CLK_LPUART4>; > + assigned-clock-parents = <&scg1 IMX7ULP_CLK_SOSC_BUS_CLK>; > + assigned-clock-rates = <24000000>; > + status = "disabled"; > + }; > + > + lpuart5: serial at 402e0000 { > + compatible = "fsl,imx7ulp-lpuart"; > + reg = <0x402e0000 0x1000>; > + interrupts = ; > + clocks = <&pcc2 IMX7ULP_CLK_LPUART5>; > + clock-names = "ipg"; > + assigned-clocks = <&pcc2 IMX7ULP_CLK_LPUART5>; > + assigned-clock-parents = <&scg1 IMX7ULP_CLK_FIRC>; > + assigned-clock-rates = <48000000>; > + status = "disabled"; > + }; > + > + tpm5: tpm at 40260000 { > + compatible = "fsl,imx7ulp-tpm"; > + reg = <0x40260000 0x1000>; > + interrupts = ; > + clocks = <&scg1 IMX7ULP_CLK_NIC1_BUS_DIV>, > + <&pcc2 IMX7ULP_CLK_LPTPM5>; > + clock-names = "ipg", "per"; > + }; > + > + usdhc0: usdhc at 40370000 { mmc at ... is the standard name. > + compatible = "fsl,imx7ulp-usdhc", "fsl,imx6sx-usdhc"; > + reg = <0x40370000 0x10000>; > + interrupts = ; > + clocks = <&scg1 IMX7ULP_CLK_NIC1_BUS_DIV>, > + <&scg1 IMX7ULP_CLK_NIC1_DIV>, > + <&pcc2 IMX7ULP_CLK_USDHC0>; > + clock-names ="ipg", "ahb", "per"; > + assigned-clocks = <&pcc2 IMX7ULP_CLK_USDHC0>; > + assigned-clock-parents = <&scg1 IMX7ULP_CLK_NIC1_DIV>; > + bus-width = <4>; > + fsl,tuning-start-tap = <20>; > + fsl,tuning-step= <2>; > + status = "disabled"; > + }; > + > + usdhc1: usdhc at 40380000 { ditto. > + compatible = "fsl,imx7ulp-usdhc", "fsl,imx6sx-usdhc"; > + reg = <0x40380000 0x10000>; > + interrupts = ; > + clocks = <&scg1 IMX7ULP_CLK_NIC1_BUS_DIV>, > + <&scg1 IMX7ULP_CLK_NIC1_DIV>, > + <&pcc2 IMX7ULP_CLK_USDHC1>; > + clock-names ="ipg", "ahb", "per"; > + assigned-clocks = <&pcc2 IMX7ULP_CLK_USDHC1>; > + assigned-clock-parents = <&scg1 IMX7ULP_CLK_NIC1_DIV>; > + bus-width = <4>; > + fsl,tuning-start-tap = <20>; > + fsl,tuning-step= <2>; > + status = "disabled"; > + }; > + > + scg1: scg1 at 403e0000 { clock-controller at ... > + compatible = "fsl,imx7ulp-scg1"; > + reg = <0x403e0000 0x10000>; > + clocks = <&rosc>, <&sosc>, <&sirc>, > + <&firc>, <&upll>, <&mpll>; > + clock-names = "rosc", "sosc", "sirc", > + "firc", "upll", "mpll"; > + #clock-cells = <1>; > + }; > + > + pcc2: pcc2 at 403f0000 { clock-controller at ... > + compatible = "fsl,imx7ulp-pcc2"; > + reg = <0x403f0000 0x10000>; > + #clock-cells = <1>; > + assigned-clocks = <&pcc2 IMX7ULP_CLK_LPTPM5>; > + assigned-clock-parents = <&scg1 IMX7ULP_CLK_SOSC_BUS_CLK>; > + }; > + > + smc1: smc1 at 40410000 { > + compatible = "fsl,imx7ulp-smc1"; > + reg = <0x40410000 0x1000>; > + }; > + > + pcc3: pcc3 at 40b30000 { clock-controller at ... > + compatible = "fsl,imx7ulp-pcc3"; > + reg = <0x40b30000 0x10000>; > + #clock-cells = <1>; > + }; > + }; > + > + ahbbridge1: bus at 40800000 { > + compatible = "simple-bus"; > + #address-cells = <1>; > + #size-cells = <1>; > + reg = <0x40800000 0x800000>; > + ranges; > + > + lpi2c6: lpi2c at 40a40000 { i2c at ... > + compatible = "fsl,imx7ulp-lpi2c"; > + reg = <0x40a40000 0x10000>; > + interrupts = ; > + clocks = <&pcc3 IMX7ULP_CLK_LPI2C6>; > + clock-names = "ipg"; > + assigned-clocks = <&pcc3 IMX7ULP_CLK_LPI2C6>; > + assigned-clock-parents = <&scg1 IMX7ULP_CLK_FIRC>; > + assigned-clock-rates = <48000000>; > + status = "disabled"; > + }; > + > + lpi2c7: lpi2c at 40a50000 { i2c at ... > + compatible = "fsl,imx7ulp-lpi2c"; > + reg = <0x40a50000 0x10000>; > + interrupts = ; > + clocks = <&pcc3 IMX7ULP_CLK_LPI2C7>; > + clock-names = "ipg"; > + assigned-clocks = <&pcc3 IMX7ULP_CLK_LPI2C7>; > + assigned-clock-parents = <&scg1 IMX7ULP_CLK_FIRC>; > + assigned-clock-rates = <48000000>; > + status = "disabled"; > + }; > + > + lpuart6: serial at 40a60000 { > + compatible = "fsl,imx7ulp-lpuart"; > + reg = <0x40a60000 0x1000>; > + interrupts = ; > + clocks = <&pcc3 IMX7ULP_CLK_LPUART6>; > + clock-names = "ipg"; > + assigned-clocks = <&pcc3 IMX7ULP_CLK_LPUART6>; > + assigned-clock-parents = <&scg1 IMX7ULP_CLK_FIRC>; > + assigned-clock-rates = <48000000>; > + status = "disabled"; > + }; > + > + lpuart7: serial at 40a70000 { > + compatible = "fsl,imx7ulp-lpuart"; > + reg = <0x40a70000 0x1000>; > + interrupts = ; > + clocks = <&pcc3 IMX7ULP_CLK_LPUART7>; > + clock-names = "ipg"; > + assigned-clocks = <&pcc3 IMX7ULP_CLK_LPUART7>; > + assigned-clock-parents = <&scg1 IMX7ULP_CLK_FIRC>; > + assigned-clock-rates = <48000000>; > + status = "disabled"; > + }; > + > + iomuxc1: iomuxc at 40ac0000 { pinctrl at ... > + compatible = "fsl,imx7ulp-iomuxc1"; > + reg = <0x40ac0000 0x1000>; > + }; > + > + gpio_ptc: gpio at 40ae0000 { > + compatible = "fsl,vf610-gpio"; > + reg = <0x40ae0000 0x1000 0x400f0000 0x40>; > + gpio-controller; > + #gpio-cells = <2>; > + interrupts = ; > + interrupt-controller; > + #interrupt-cells = <2>; > + clocks = <&pcc2 IMX7ULP_CLK_RGPIO2P1>, > + <&pcc3 IMX7ULP_CLK_PCTLC>; > + clock-names = "gpio", "port"; > + gpio-ranges = <&iomuxc1 0 0 32>; > + }; > + > + gpio_ptd: gpio at 40af0000 { > + compatible = "fsl,vf610-gpio"; > + reg = <0x40af0000 0x1000 0x400f0040 0x40>; > + gpio-controller; > + #gpio-cells = <2>; > + interrupts = ; > + interrupt-controller; > + #interrupt-cells = <2>; > + clocks = <&pcc2 IMX7ULP_CLK_RGPIO2P1>, > + <&pcc3 IMX7ULP_CLK_PCTLD>; > + clock-names = "gpio", "port"; > + gpio-ranges = <&iomuxc1 0 32 32>; > + }; > + > + gpio_pte: gpio at 40b00000 { > + compatible = "fsl,vf610-gpio"; > + reg = <0x40b00000 0x1000 0x400f0080 0x40>; > + gpio-controller; > + #gpio-cells = <2>; > + interrupts = ; > + interrupt-controller; > + #interrupt-cells = <2>; > + clocks = <&pcc2 IMX7ULP_CLK_RGPIO2P1>, > + <&pcc3 IMX7ULP_CLK_PCTLE>; > + clock-names = "gpio", "port"; > + gpio-ranges = <&iomuxc1 0 64 32>; > + }; > + > + gpio_ptf: gpio at 40b10000 { > + compatible = "fsl,vf610-gpio"; > + reg = <0x40b10000 0x1000 0x400f00c0 0x40>; > + gpio-controller; > + #gpio-cells = <2>; > + interrupts = ; > + interrupt-controller; > + #interrupt-cells = <2>; > + clocks = <&pcc2 IMX7ULP_CLK_RGPIO2P1>, > + <&pcc3 IMX7ULP_CLK_PCTLF>; > + clock-names = "gpio", "port"; > + gpio-ranges = <&iomuxc1 0 96 32>; > + }; > + }; > +}; > -- > 2.7.4 > From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Herring Subject: Re: [PATCH V2 6/8] dts: imx: add common imx7ulp dtsi support Date: Wed, 24 Oct 2018 17:02:13 -0500 Message-ID: <20181024220213.GA26789@bogus> References: <1540295058-26090-1-git-send-email-aisheng.dong@nxp.com> <1540295058-26090-7-git-send-email-aisheng.dong@nxp.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1540295058-26090-7-git-send-email-aisheng.dong@nxp.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: "A.s. Dong" Cc: "devicetree@vger.kernel.org" , "dongas86@gmail.com" , "linux@armlinux.org.uk" , dl-linux-imx , "kernel@pengutronix.de" , Fabio Estevam , "shawnguo@kernel.org" , "linux-arm-kernel@lists.infradead.org" List-Id: devicetree@vger.kernel.org T24gVHVlLCBPY3QgMjMsIDIwMTggYXQgMTE6NDk6MjVBTSArMDAwMCwgQS5zLiBEb25nIHdyb3Rl Ogo+IFRoZSBpLk1YIDdVTFAgZmFtaWx5IG9mIHByb2Nlc3NvcnMgcmVwcmVzZW50cyBOWFDigJlz IGxhdGVzdCBhY2hpZXZlbWVudAo+IGluIHVsdHJhLWxvdy1wb3dlciBwcm9jZXNzaW5nIGZvciB1 c2UgY2FzZXMgZGVtYW5kaW5nIGxvbmcgYmF0dGVyeSBsaWZlLgo+IFRhcmdldGVkIHRvd2FyZHMg dGhlIGdyb3dpbmcgbWFya2V0IG9mIHBvcnRhYmxlIGRldmljZXMsIHRoZSBpLk1YIDdVTFAKPiBm YW1pbHkgb2YgcHJvY2Vzc29ycyBmZWF0dXJlcyBOWFAncyBhZHZhbmNlZCBpbXBsZW1lbnRhdGlv biBvZiB0aGUgQXJtwq4KPiBDb3J0ZXjCri1BNyBjb3JlLCB0aGUgQXJtIENvcnRleC1NNCBjb3Jl LCBhcyB3ZWxsIGFzIGEgM0QgYW5kIDJEIEdyYXBoaWNzCj4gUHJvY2Vzc2luZyBVbml0cyAoR1BV cykuCj4gCj4gVGhpcyBwYXRjaCBhaW1zIHRvIGFkZCB0aGUgaW5pdGlhbCBzdXBwb3J0IGluY2x1 ZGluZzoKPiAxKSBDTEsKPiAyKSBHUElPIFBUQywgUFRELCBQVEUsIFBURgo+IDMpIHVTREhDIDEv Mgo+IDQpIExQVUFSVCA0LzUvNi83Cj4gNSkgTFBJMkMgNi83Cj4gCj4gQ2M6IFJvYiBIZXJyaW5n IDxyb2JoK2R0QGtlcm5lbC5vcmc+Cj4gQ2M6IFNoYXduIEd1byA8c2hhd25ndW9Aa2VybmVsLm9y Zz4KPiBDYzogZGV2aWNldHJlZUB2Z2VyLmtlcm5lbC5vcmcKPiBDYzogU2FzY2hhIEhhdWVyIDxr ZXJuZWxAcGVuZ3V0cm9uaXguZGU+Cj4gQ2M6IEZhYmlvIEVzdGV2YW0gPGZhYmlvLmVzdGV2YW1A bnhwLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBEb25nIEFpc2hlbmcgPGFpc2hlbmcuZG9uZ0BueHAu Y29tPgo+IC0tLQo+IENoYW5nZUxvZzoKPiB2MS0+djI6Cj4gICogdXBkYXRlIGNsayBwYXJ0IGR1 ZSB0byBiaW5kaW5nIGNoYW5nZQo+ICAqIHNlcGFyYXRlIHNvYy5kdHNpIGZyb20gYm9hcmQuZHRz Cj4gLS0tCj4gIGFyY2gvYXJtL2Jvb3QvZHRzL2lteDd1bHAuZHRzaSB8IDMyMyArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAxIGZpbGUgY2hhbmdlZCwgMzIzIGlu c2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtL2Jvb3QvZHRzL2lteDd1 bHAuZHRzaQo+IAo+IGRpZmYgLS1naXQgYS9hcmNoL2FybS9ib290L2R0cy9pbXg3dWxwLmR0c2kg Yi9hcmNoL2FybS9ib290L2R0cy9pbXg3dWxwLmR0c2kKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ IGluZGV4IDAwMDAwMDAuLjc5NWVkYzIKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvYXJjaC9hcm0v Ym9vdC9kdHMvaW14N3VscC5kdHNpCj4gQEAgLTAsMCArMSwzMjMgQEAKPiArLy8gU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEdQTC0yLjArCj4gKy8qCj4gKyAqIENvcHlyaWdodCAoQykgMjAxNiBG cmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgo+ICsgKiBDb3B5cmlnaHQgMjAxNy0yMDE4IE5Y UAo+ICsgKiAgIERvbmcgQWlzaGVuZyA8YWlzaGVuZy5kb25nQG54cC5jb20+Cj4gKyAqLwo+ICsK PiArI2luY2x1ZGUgPGR0LWJpbmRpbmdzL2Nsb2NrL2lteDd1bHAtY2xvY2suaD4KPiArI2luY2x1 ZGUgPGR0LWJpbmRpbmdzL2dwaW8vZ3Bpby5oPgo+ICsjaW5jbHVkZSA8ZHQtYmluZGluZ3MvaW50 ZXJydXB0LWNvbnRyb2xsZXIvYXJtLWdpYy5oPgo+ICsKPiArI2luY2x1ZGUgImlteDd1bHAtcGlu ZnVuYy5oIgo+ICsKPiArLyB7Cj4gKwlpbnRlcnJ1cHQtcGFyZW50ID0gPCZpbnRjPjsKPiArCj4g KwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKPiArCSNzaXplLWNlbGxzID0gPDE+Owo+ICsKPiArCWFs aWFzZXMgewo+ICsJCWdwaW8wID0gJmdwaW9fcHRjOwo+ICsJCWdwaW8xID0gJmdwaW9fcHRkOwo+ ICsJCWdwaW8yID0gJmdwaW9fcHRlOwo+ICsJCWdwaW8zID0gJmdwaW9fcHRmOwo+ICsJCWkyYzAg PSAmbHBpMmM2Owo+ICsJCWkyYzEgPSAmbHBpMmM3Owo+ICsJCW1tYzAgPSAmdXNkaGMwOwo+ICsJ CW1tYzEgPSAmdXNkaGMxOwo+ICsJCXNlcmlhbDAgPSAmbHB1YXJ0NDsKPiArCQlzZXJpYWwxID0g JmxwdWFydDU7Cj4gKwkJc2VyaWFsMiA9ICZscHVhcnQ2Owo+ICsJCXNlcmlhbDMgPSAmbHB1YXJ0 NzsKPiArCX07Cj4gKwo+ICsJY3B1cyB7Cj4gKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47Cj4gKwkJ I3NpemUtY2VsbHMgPSA8MD47Cj4gKwo+ICsJCWNwdTA6IGNwdUAwIHsKPiArCQkJY29tcGF0aWJs ZSA9ICJhcm0sY29ydGV4LWE3IjsKPiArCQkJZGV2aWNlX3R5cGUgPSAiY3B1IjsKPiArCQkJcmVn ID0gPDA+Owo+ICsJCX07Cj4gKwl9Owo+ICsKPiArCWludGM6IGludGVycnVwdC1jb250cm9sbGVy QDQwMDIxMDAwIHsKPiArCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTctZ2ljIjsKPiArCQkj aW50ZXJydXB0LWNlbGxzID0gPDM+Owo+ICsJCWludGVycnVwdC1jb250cm9sbGVyOwo+ICsJCXJl ZyA9IDwweDQwMDIxMDAwIDB4MTAwMD4sCj4gKwkJICAgICAgPDB4NDAwMjIwMDAgMHgxMDAwPjsK PiArCX07Cj4gKwo+ICsJcm9zYzogY2xvY2stcm9zYyB7Cj4gKwkJY29tcGF0aWJsZSA9ICJmaXhl ZC1jbG9jayI7Cj4gKwkJY2xvY2stZnJlcXVlbmN5ID0gPDMyNzY4PjsKPiArCQljbG9jay1vdXRw dXQtbmFtZXMgPSAicm9zYyI7Cj4gKwkJI2Nsb2NrLWNlbGxzID0gPDA+Owo+ICsJfTsKPiArCj4g Kwlzb3NjOiBjbG9jay1zb3NjIHsKPiArCQljb21wYXRpYmxlID0gImZpeGVkLWNsb2NrIjsKPiAr CQljbG9jay1mcmVxdWVuY3kgPSA8MjQwMDAwMDA+Owo+ICsJCWNsb2NrLW91dHB1dC1uYW1lcyA9 ICJzb3NjIjsKPiArCQkjY2xvY2stY2VsbHMgPSA8MD47Cj4gKwl9Owo+ICsKPiArCXNpcmM6IGNs b2NrLXNpcmMgewo+ICsJCWNvbXBhdGlibGUgPSAiZml4ZWQtY2xvY2siOwo+ICsJCWNsb2NrLWZy ZXF1ZW5jeSA9IDwxNjAwMDAwMD47Cj4gKwkJY2xvY2stb3V0cHV0LW5hbWVzID0gInNpcmMiOwo+ ICsJCSNjbG9jay1jZWxscyA9IDwwPjsKPiArCX07Cj4gKwo+ICsJZmlyYzogY2xvY2stZmlyYyB7 Cj4gKwkJY29tcGF0aWJsZSA9ICJmaXhlZC1jbG9jayI7Cj4gKwkJY2xvY2stZnJlcXVlbmN5ID0g PDQ4MDAwMDAwPjsKPiArCQljbG9jay1vdXRwdXQtbmFtZXMgPSAiZmlyYyI7Cj4gKwkJI2Nsb2Nr LWNlbGxzID0gPDA+Owo+ICsJfTsKPiArCj4gKwl1cGxsOiBjbG9jay11cGxsIHsKPiArCQljb21w YXRpYmxlID0gImZpeGVkLWNsb2NrIjsKPiArCQljbG9jay1mcmVxdWVuY3kgPSA8NDgwMDAwMDAw PjsKPiArCQljbG9jay1vdXRwdXQtbmFtZXMgPSAidXBsbCI7Cj4gKwkJI2Nsb2NrLWNlbGxzID0g PDA+Owo+ICsJfTsKPiArCj4gKwltcGxsOiBjbG9jay1tcGxsIHsKPiArCQljb21wYXRpYmxlID0g ImZpeGVkLWNsb2NrIjsKPiArCQljbG9jay1mcmVxdWVuY3kgPSA8NDgwMDAwMDAwPjsKPiArCQlj bG9jay1vdXRwdXQtbmFtZXMgPSAibXBsbCI7Cj4gKwkJI2Nsb2NrLWNlbGxzID0gPDA+Owo+ICsJ fTsKPiArCj4gKwl0aW1lciB7Cj4gKwkJY29tcGF0aWJsZSA9ICJhcm0sYXJtdjctdGltZXIiOwo+ ICsJCWFybSxjcHUtcmVnaXN0ZXJzLW5vdC1mdy1jb25maWd1cmVkOwoKQUlVSSwgdGhpcyB3YXMg YSB3b3JrLWFyb3VuZCBmb3Igc29tZSBleGlzdGluZyBwbGF0Zm9ybS4gTmV3IHBsYXRmb3JtcyAK c2hvdWxkIG5vdCBoYXZlIHRoaXMgcHJvcGVydHkuCgo+ICsJCWludGVycnVwdHMgPSA8R0lDX1BQ SSAxMyAoR0lDX0NQVV9NQVNLX1NJTVBMRSg0KSB8IElSUV9UWVBFX0xFVkVMX0xPVyk+LAo+ICsJ CQkgICAgIDxHSUNfUFBJIDE0IChHSUNfQ1BVX01BU0tfU0lNUExFKDQpIHwgSVJRX1RZUEVfTEVW RUxfTE9XKT47Cj4gKwkJY2xvY2stZnJlcXVlbmN5ID0gPDEwMDAwMDA+OwoKVGhpcyB0b28gc2hv dWxkIGJlIGluaXRpYWxpemVkIGJ5IGZpcm13YXJlIGFuZCBub3QgaW4gRFQgSUlSQy4KCj4gKwkJ c3RhdHVzID0gImRpc2FibGVkIjsKCkkgdGhpbmsgZW5hYmxlZCBzaG91bGQgYmUgdGhlIG5vcm0u Cgo+ICsJfTsKPiArCj4gKwlhaGJicmlkZ2UwOiBidXNANDAwMDAwMDAgewo+ICsJCWNvbXBhdGli bGUgPSAic2ltcGxlLWJ1cyI7Cj4gKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47Cj4gKwkJI3NpemUt Y2VsbHMgPSA8MT47Cj4gKwkJcmVnID0gPDB4NDAwMDAwMDAgMHg4MDAwMDA+Owo+ICsJCXJhbmdl czsKPiArCj4gKwkJbHB1YXJ0NDogc2VyaWFsQDQwMmQwMDAwIHsKPiArCQkJY29tcGF0aWJsZSA9 ICJmc2wsaW14N3VscC1scHVhcnQiOwo+ICsJCQlyZWcgPSA8MHg0MDJkMDAwMCAweDEwMDA+Owo+ ICsJCQlpbnRlcnJ1cHRzID0gPEdJQ19TUEkgMzAgSVJRX1RZUEVfTEVWRUxfSElHSD47Cj4gKwkJ CWNsb2NrcyA9IDwmcGNjMiBJTVg3VUxQX0NMS19MUFVBUlQ0PjsKPiArCQkJY2xvY2stbmFtZXMg PSAiaXBnIjsKPiArCQkJYXNzaWduZWQtY2xvY2tzID0gPCZwY2MyIElNWDdVTFBfQ0xLX0xQVUFS VDQ+Owo+ICsJCQlhc3NpZ25lZC1jbG9jay1wYXJlbnRzID0gPCZzY2cxIElNWDdVTFBfQ0xLX1NP U0NfQlVTX0NMSz47Cj4gKwkJCWFzc2lnbmVkLWNsb2NrLXJhdGVzID0gPDI0MDAwMDAwPjsKPiAr CQkJc3RhdHVzID0gImRpc2FibGVkIjsKPiArCQl9Owo+ICsKPiArCQlscHVhcnQ1OiBzZXJpYWxA NDAyZTAwMDAgewo+ICsJCQljb21wYXRpYmxlID0gImZzbCxpbXg3dWxwLWxwdWFydCI7Cj4gKwkJ CXJlZyA9IDwweDQwMmUwMDAwIDB4MTAwMD47Cj4gKwkJCWludGVycnVwdHMgPSA8R0lDX1NQSSAz MSBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKPiArCQkJY2xvY2tzID0gPCZwY2MyIElNWDdVTFBfQ0xL X0xQVUFSVDU+Owo+ICsJCQljbG9jay1uYW1lcyA9ICJpcGciOwo+ICsJCQlhc3NpZ25lZC1jbG9j a3MgPSA8JnBjYzIgSU1YN1VMUF9DTEtfTFBVQVJUNT47Cj4gKwkJCWFzc2lnbmVkLWNsb2NrLXBh cmVudHMgPSA8JnNjZzEgSU1YN1VMUF9DTEtfRklSQz47Cj4gKwkJCWFzc2lnbmVkLWNsb2NrLXJh dGVzID0gPDQ4MDAwMDAwPjsKPiArCQkJc3RhdHVzID0gImRpc2FibGVkIjsKPiArCQl9Owo+ICsK PiArCQl0cG01OiB0cG1ANDAyNjAwMDAgewo+ICsJCQljb21wYXRpYmxlID0gImZzbCxpbXg3dWxw LXRwbSI7Cj4gKwkJCXJlZyA9IDwweDQwMjYwMDAwIDB4MTAwMD47Cj4gKwkJCWludGVycnVwdHMg PSA8R0lDX1NQSSAyMiBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKPiArCQkJY2xvY2tzID0gPCZzY2cx IElNWDdVTFBfQ0xLX05JQzFfQlVTX0RJVj4sCj4gKwkJCQkgPCZwY2MyIElNWDdVTFBfQ0xLX0xQ VFBNNT47Cj4gKwkJCWNsb2NrLW5hbWVzID0gImlwZyIsICJwZXIiOwo+ICsJCX07Cj4gKwo+ICsJ CXVzZGhjMDogdXNkaGNANDAzNzAwMDAgewoKbW1jQC4uLiBpcyB0aGUgc3RhbmRhcmQgbmFtZS4K Cj4gKwkJCWNvbXBhdGlibGUgPSAiZnNsLGlteDd1bHAtdXNkaGMiLCAiZnNsLGlteDZzeC11c2Ro YyI7Cj4gKwkJCXJlZyA9IDwweDQwMzcwMDAwIDB4MTAwMDA+Owo+ICsJCQlpbnRlcnJ1cHRzID0g PEdJQ19TUEkgNDIgSVJRX1RZUEVfTEVWRUxfSElHSD47Cj4gKwkJCWNsb2NrcyA9IDwmc2NnMSBJ TVg3VUxQX0NMS19OSUMxX0JVU19ESVY+LAo+ICsJCQkJIDwmc2NnMSBJTVg3VUxQX0NMS19OSUMx X0RJVj4sCj4gKwkJCQkgPCZwY2MyIElNWDdVTFBfQ0xLX1VTREhDMD47Cj4gKwkJCWNsb2NrLW5h bWVzID0iaXBnIiwgImFoYiIsICJwZXIiOwo+ICsJCQlhc3NpZ25lZC1jbG9ja3MgPSA8JnBjYzIg SU1YN1VMUF9DTEtfVVNESEMwPjsKPiArCQkJYXNzaWduZWQtY2xvY2stcGFyZW50cyA9IDwmc2Nn MSBJTVg3VUxQX0NMS19OSUMxX0RJVj47Cj4gKwkJCWJ1cy13aWR0aCA9IDw0PjsKPiArCQkJZnNs LHR1bmluZy1zdGFydC10YXAgPSA8MjA+Owo+ICsJCQlmc2wsdHVuaW5nLXN0ZXA9IDwyPjsKPiAr CQkJc3RhdHVzID0gImRpc2FibGVkIjsKPiArCQl9Owo+ICsKPiArCQl1c2RoYzE6IHVzZGhjQDQw MzgwMDAwIHsKCmRpdHRvLgoKPiArCQkJY29tcGF0aWJsZSA9ICJmc2wsaW14N3VscC11c2RoYyIs ICJmc2wsaW14NnN4LXVzZGhjIjsKPiArCQkJcmVnID0gPDB4NDAzODAwMDAgMHgxMDAwMD47Cj4g KwkJCWludGVycnVwdHMgPSA8R0lDX1NQSSA0MyBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKPiArCQkJ Y2xvY2tzID0gPCZzY2cxIElNWDdVTFBfQ0xLX05JQzFfQlVTX0RJVj4sCj4gKwkJCQkgPCZzY2cx IElNWDdVTFBfQ0xLX05JQzFfRElWPiwKPiArCQkJCSA8JnBjYzIgSU1YN1VMUF9DTEtfVVNESEMx PjsKPiArCQkJY2xvY2stbmFtZXMgPSJpcGciLCAiYWhiIiwgInBlciI7Cj4gKwkJCWFzc2lnbmVk LWNsb2NrcyA9IDwmcGNjMiBJTVg3VUxQX0NMS19VU0RIQzE+Owo+ICsJCQlhc3NpZ25lZC1jbG9j ay1wYXJlbnRzID0gPCZzY2cxIElNWDdVTFBfQ0xLX05JQzFfRElWPjsKPiArCQkJYnVzLXdpZHRo ID0gPDQ+Owo+ICsJCQlmc2wsdHVuaW5nLXN0YXJ0LXRhcCA9IDwyMD47Cj4gKwkJCWZzbCx0dW5p bmctc3RlcD0gPDI+Owo+ICsJCQlzdGF0dXMgPSAiZGlzYWJsZWQiOwo+ICsJCX07Cj4gKwo+ICsJ CXNjZzE6IHNjZzFANDAzZTAwMDAgewoKY2xvY2stY29udHJvbGxlckAuLi4KCj4gKwkJCWNvbXBh dGlibGUgPSAiZnNsLGlteDd1bHAtc2NnMSI7Cj4gKwkJCXJlZyA9IDwweDQwM2UwMDAwIDB4MTAw MDA+Owo+ICsJCQljbG9ja3MgPSA8JnJvc2M+LCA8JnNvc2M+LCA8JnNpcmM+LAo+ICsJCQkJIDwm ZmlyYz4sIDwmdXBsbD4sIDwmbXBsbD47Cj4gKwkJCWNsb2NrLW5hbWVzID0gInJvc2MiLCAic29z YyIsICJzaXJjIiwKPiArCQkJCSAgICAgICJmaXJjIiwgInVwbGwiLCAibXBsbCI7Cj4gKwkJCSNj bG9jay1jZWxscyA9IDwxPjsKPiArCQl9Owo+ICsKPiArCQlwY2MyOiBwY2MyQDQwM2YwMDAwIHsK CmNsb2NrLWNvbnRyb2xsZXJALi4uCgo+ICsJCQljb21wYXRpYmxlID0gImZzbCxpbXg3dWxwLXBj YzIiOwo+ICsJCQlyZWcgPSA8MHg0MDNmMDAwMCAweDEwMDAwPjsKPiArCQkJI2Nsb2NrLWNlbGxz ID0gPDE+Owo+ICsJCQlhc3NpZ25lZC1jbG9ja3MgPSA8JnBjYzIgSU1YN1VMUF9DTEtfTFBUUE01 PjsKPiArCQkJYXNzaWduZWQtY2xvY2stcGFyZW50cyA9IDwmc2NnMSBJTVg3VUxQX0NMS19TT1ND X0JVU19DTEs+Owo+ICsJCX07Cj4gKwo+ICsJCXNtYzE6IHNtYzFANDA0MTAwMDAgewo+ICsJCQlj b21wYXRpYmxlID0gImZzbCxpbXg3dWxwLXNtYzEiOwo+ICsJCQlyZWcgPSA8MHg0MDQxMDAwMCAw eDEwMDA+Owo+ICsJCX07Cj4gKwo+ICsJCXBjYzM6IHBjYzNANDBiMzAwMDAgewoKY2xvY2stY29u dHJvbGxlckAuLi4KCj4gKwkJCWNvbXBhdGlibGUgPSAiZnNsLGlteDd1bHAtcGNjMyI7Cj4gKwkJ CXJlZyA9IDwweDQwYjMwMDAwIDB4MTAwMDA+Owo+ICsJCQkjY2xvY2stY2VsbHMgPSA8MT47Cj4g KwkJfTsKPiArCX07Cj4gKwo+ICsJYWhiYnJpZGdlMTogYnVzQDQwODAwMDAwIHsKPiArCQljb21w YXRpYmxlID0gInNpbXBsZS1idXMiOwo+ICsJCSNhZGRyZXNzLWNlbGxzID0gPDE+Owo+ICsJCSNz aXplLWNlbGxzID0gPDE+Owo+ICsJCXJlZyA9IDwweDQwODAwMDAwIDB4ODAwMDAwPjsKPiArCQly YW5nZXM7Cj4gKwo+ICsJCWxwaTJjNjogbHBpMmNANDBhNDAwMDAgewoKaTJjQC4uLgoKPiArCQkJ Y29tcGF0aWJsZSA9ICJmc2wsaW14N3VscC1scGkyYyI7Cj4gKwkJCXJlZyA9IDwweDQwYTQwMDAw IDB4MTAwMDA+Owo+ICsJCQlpbnRlcnJ1cHRzID0gPEdJQ19TUEkgMzYgSVJRX1RZUEVfTEVWRUxf SElHSD47Cj4gKwkJCWNsb2NrcyA9IDwmcGNjMyBJTVg3VUxQX0NMS19MUEkyQzY+Owo+ICsJCQlj bG9jay1uYW1lcyA9ICJpcGciOwo+ICsJCQlhc3NpZ25lZC1jbG9ja3MgPSA8JnBjYzMgSU1YN1VM UF9DTEtfTFBJMkM2PjsKPiArCQkJYXNzaWduZWQtY2xvY2stcGFyZW50cyA9IDwmc2NnMSBJTVg3 VUxQX0NMS19GSVJDPjsKPiArCQkJYXNzaWduZWQtY2xvY2stcmF0ZXMgPSA8NDgwMDAwMDA+Owo+ ICsJCQlzdGF0dXMgPSAiZGlzYWJsZWQiOwo+ICsJCX07Cj4gKwo+ICsJCWxwaTJjNzogbHBpMmNA NDBhNTAwMDAgewoKaTJjQC4uLgoKPiArCQkJY29tcGF0aWJsZSA9ICJmc2wsaW14N3VscC1scGky YyI7Cj4gKwkJCXJlZyA9IDwweDQwYTUwMDAwIDB4MTAwMDA+Owo+ICsJCQlpbnRlcnJ1cHRzID0g PEdJQ19TUEkgMzcgSVJRX1RZUEVfTEVWRUxfSElHSD47Cj4gKwkJCWNsb2NrcyA9IDwmcGNjMyBJ TVg3VUxQX0NMS19MUEkyQzc+Owo+ICsJCQljbG9jay1uYW1lcyA9ICJpcGciOwo+ICsJCQlhc3Np Z25lZC1jbG9ja3MgPSA8JnBjYzMgSU1YN1VMUF9DTEtfTFBJMkM3PjsKPiArCQkJYXNzaWduZWQt Y2xvY2stcGFyZW50cyA9IDwmc2NnMSBJTVg3VUxQX0NMS19GSVJDPjsKPiArCQkJYXNzaWduZWQt Y2xvY2stcmF0ZXMgPSA8NDgwMDAwMDA+Owo+ICsJCQlzdGF0dXMgPSAiZGlzYWJsZWQiOwo+ICsJ CX07Cj4gKwo+ICsJCWxwdWFydDY6IHNlcmlhbEA0MGE2MDAwMCB7Cj4gKwkJCWNvbXBhdGlibGUg PSAiZnNsLGlteDd1bHAtbHB1YXJ0IjsKPiArCQkJcmVnID0gPDB4NDBhNjAwMDAgMHgxMDAwPjsK PiArCQkJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDMyIElSUV9UWVBFX0xFVkVMX0hJR0g+Owo+ICsJ CQljbG9ja3MgPSA8JnBjYzMgSU1YN1VMUF9DTEtfTFBVQVJUNj47Cj4gKwkJCWNsb2NrLW5hbWVz ID0gImlwZyI7Cj4gKwkJCWFzc2lnbmVkLWNsb2NrcyA9IDwmcGNjMyBJTVg3VUxQX0NMS19MUFVB UlQ2PjsKPiArCQkJYXNzaWduZWQtY2xvY2stcGFyZW50cyA9IDwmc2NnMSBJTVg3VUxQX0NMS19G SVJDPjsKPiArCQkJYXNzaWduZWQtY2xvY2stcmF0ZXMgPSA8NDgwMDAwMDA+Owo+ICsJCQlzdGF0 dXMgPSAiZGlzYWJsZWQiOwo+ICsJCX07Cj4gKwo+ICsJCWxwdWFydDc6IHNlcmlhbEA0MGE3MDAw MCB7Cj4gKwkJCWNvbXBhdGlibGUgPSAiZnNsLGlteDd1bHAtbHB1YXJ0IjsKPiArCQkJcmVnID0g PDB4NDBhNzAwMDAgMHgxMDAwPjsKPiArCQkJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDMzIElSUV9U WVBFX0xFVkVMX0hJR0g+Owo+ICsJCQljbG9ja3MgPSA8JnBjYzMgIElNWDdVTFBfQ0xLX0xQVUFS VDc+Owo+ICsJCQljbG9jay1uYW1lcyA9ICJpcGciOwo+ICsJCQlhc3NpZ25lZC1jbG9ja3MgPSA8 JnBjYzMgSU1YN1VMUF9DTEtfTFBVQVJUNz47Cj4gKwkJCWFzc2lnbmVkLWNsb2NrLXBhcmVudHMg PSA8JnNjZzEgSU1YN1VMUF9DTEtfRklSQz47Cj4gKwkJCWFzc2lnbmVkLWNsb2NrLXJhdGVzID0g PDQ4MDAwMDAwPjsKPiArCQkJc3RhdHVzID0gImRpc2FibGVkIjsKPiArCQl9Owo+ICsKPiArCQlp b211eGMxOiBpb211eGNANDBhYzAwMDAgewoKcGluY3RybEAuLi4KCj4gKwkJCWNvbXBhdGlibGUg PSAiZnNsLGlteDd1bHAtaW9tdXhjMSI7Cj4gKwkJCXJlZyA9IDwweDQwYWMwMDAwIDB4MTAwMD47 Cj4gKwkJfTsKPiArCj4gKwkJZ3Bpb19wdGM6IGdwaW9ANDBhZTAwMDAgewo+ICsJCQljb21wYXRp YmxlID0gImZzbCx2ZjYxMC1ncGlvIjsKPiArCQkJcmVnID0gPDB4NDBhZTAwMDAgMHgxMDAwIDB4 NDAwZjAwMDAgMHg0MD47Cj4gKwkJCWdwaW8tY29udHJvbGxlcjsKPiArCQkJI2dwaW8tY2VsbHMg PSA8Mj47Cj4gKwkJCWludGVycnVwdHMgPSA8R0lDX1NQSSA0OCBJUlFfVFlQRV9MRVZFTF9ISUdI PjsKPiArCQkJaW50ZXJydXB0LWNvbnRyb2xsZXI7Cj4gKwkJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8 Mj47Cj4gKwkJCWNsb2NrcyA9IDwmcGNjMiBJTVg3VUxQX0NMS19SR1BJTzJQMT4sCj4gKwkJCQkg PCZwY2MzIElNWDdVTFBfQ0xLX1BDVExDPjsKPiArCQkJY2xvY2stbmFtZXMgPSAiZ3BpbyIsICJw b3J0IjsKPiArCQkJZ3Bpby1yYW5nZXMgPSA8JmlvbXV4YzEgMCAwIDMyPjsKPiArCQl9Owo+ICsK PiArCQlncGlvX3B0ZDogZ3Bpb0A0MGFmMDAwMCB7Cj4gKwkJCWNvbXBhdGlibGUgPSAiZnNsLHZm NjEwLWdwaW8iOwo+ICsJCQlyZWcgPSA8MHg0MGFmMDAwMCAweDEwMDAgMHg0MDBmMDA0MCAweDQw PjsKPiArCQkJZ3Bpby1jb250cm9sbGVyOwo+ICsJCQkjZ3Bpby1jZWxscyA9IDwyPjsKPiArCQkJ aW50ZXJydXB0cyA9IDxHSUNfU1BJIDQ5IElSUV9UWVBFX0xFVkVMX0hJR0g+Owo+ICsJCQlpbnRl cnJ1cHQtY29udHJvbGxlcjsKPiArCQkJI2ludGVycnVwdC1jZWxscyA9IDwyPjsKPiArCQkJY2xv Y2tzID0gPCZwY2MyIElNWDdVTFBfQ0xLX1JHUElPMlAxPiwKPiArCQkJCSA8JnBjYzMgSU1YN1VM UF9DTEtfUENUTEQ+Owo+ICsJCQljbG9jay1uYW1lcyA9ICJncGlvIiwgInBvcnQiOwo+ICsJCQln cGlvLXJhbmdlcyA9IDwmaW9tdXhjMSAwIDMyIDMyPjsKPiArCQl9Owo+ICsKPiArCQlncGlvX3B0 ZTogZ3Bpb0A0MGIwMDAwMCB7Cj4gKwkJCWNvbXBhdGlibGUgPSAiZnNsLHZmNjEwLWdwaW8iOwo+ ICsJCQlyZWcgPSA8MHg0MGIwMDAwMCAweDEwMDAgMHg0MDBmMDA4MCAweDQwPjsKPiArCQkJZ3Bp by1jb250cm9sbGVyOwo+ICsJCQkjZ3Bpby1jZWxscyA9IDwyPjsKPiArCQkJaW50ZXJydXB0cyA9 IDxHSUNfU1BJIDUwIElSUV9UWVBFX0xFVkVMX0hJR0g+Owo+ICsJCQlpbnRlcnJ1cHQtY29udHJv bGxlcjsKPiArCQkJI2ludGVycnVwdC1jZWxscyA9IDwyPjsKPiArCQkJY2xvY2tzID0gPCZwY2My IElNWDdVTFBfQ0xLX1JHUElPMlAxPiwKPiArCQkJCSA8JnBjYzMgSU1YN1VMUF9DTEtfUENUTEU+ Owo+ICsJCQljbG9jay1uYW1lcyA9ICJncGlvIiwgInBvcnQiOwo+ICsJCQlncGlvLXJhbmdlcyA9 IDwmaW9tdXhjMSAwIDY0IDMyPjsKPiArCQl9Owo+ICsKPiArCQlncGlvX3B0ZjogZ3Bpb0A0MGIx MDAwMCB7Cj4gKwkJCWNvbXBhdGlibGUgPSAiZnNsLHZmNjEwLWdwaW8iOwo+ICsJCQlyZWcgPSA8 MHg0MGIxMDAwMCAweDEwMDAgMHg0MDBmMDBjMCAweDQwPjsKPiArCQkJZ3Bpby1jb250cm9sbGVy Owo+ICsJCQkjZ3Bpby1jZWxscyA9IDwyPjsKPiArCQkJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDUx IElSUV9UWVBFX0xFVkVMX0hJR0g+Owo+ICsJCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKPiArCQkJ I2ludGVycnVwdC1jZWxscyA9IDwyPjsKPiArCQkJY2xvY2tzID0gPCZwY2MyIElNWDdVTFBfQ0xL X1JHUElPMlAxPiwKPiArCQkJCSA8JnBjYzMgSU1YN1VMUF9DTEtfUENUTEY+Owo+ICsJCQljbG9j ay1uYW1lcyA9ICJncGlvIiwgInBvcnQiOwo+ICsJCQlncGlvLXJhbmdlcyA9IDwmaW9tdXhjMSAw IDk2IDMyPjsKPiArCQl9Owo+ICsJfTsKPiArfTsKPiAtLSAKPiAyLjcuNAo+IAoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBt YWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9s aXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=