From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=100.103.45.18 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1792569189; b=nCSuE6WMrAt7uz+L8PdxpbHVp0ayjGL6KZ4M7qif3DSNx8LcaR+v8zf1oHqP/JDB0Tg8 EY+8D1UIUB5ibikviHtZPOycnNcc0C8+l/6gjU7DT5rgbjQneD6gGtr7AESS50wu5dusk 5TH7eGBzyGGSoHJmiR99n1jVpbM8Kh1d7bX9Ze3cyCIwNTbxRd2TJK3fd2PovuD7KUN8W yWop9Yr5VjYhA1co+1NgmYAPl0oWoKt0LekiImJCCg0rxE8GN6U0be5dG69mpgzm16tPZ MufscsE8I8Y+jMKB8HoG+vS91EQQy75qU3fJGGO/Zf90eRKdJyOQ2PjGbihi4F2oRrA== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1792569189; h=Received:DKIM-Signature:Message-ID:From:Subject:Reply-To:To:Cc: In-Reply-To:References:Content-Type:Content-Transfer-Encoding:Date; bh=fOZZ9r0CmT1iLV8NW5Ru9DBs2AykPQxWgR2/m3oBnjg=; b=MYJEF/8eHqEJ0X0SgN+cuHjny2xkJhMfngHOMIlaFziXSU3nlzSzAqa7hAQLHOJTsPut /YtINWrByq309oDRMYVUYz+pdcW1tiC14m+ZWrpS9KSKJiGxwpHRufqduDRXO+ZXSr6VY VlqqrIrRAgEROs/1p+7BknjMbRlBzfkA1rKwF2O0jcTZIE2Td7R5GmQsNUvfIB+sdbdvq zhxb1vTPB4ykfb+3oFGN3Csr4DbVJRGTDG8CqJwE3Ia308c0y4MySkkdevjFKaXFFqnHo YoKfBR9Yt6rO+kQ4qp1hCHZ8XDGXhADuYVHsMjz3aGdPHY2Mu07sji0+nkVh/OEWvow== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=WIpnIDLH; arc=none smtp.remote-ip=100.103.45.18 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8CF7B606A31A; Wed, 21 Oct 2026 07:53:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=WIpnIDLH Received: by smtp.kernel.org (Postfix) with ESMTPSA id D3BA21F000C9; Wed, 21 Oct 2026 07:53:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1792569189; bh=fOZZ9r0CmT1iLV8NW5Ru9DBs2AykPQxWgR2/m3oBnjg=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=WIpnIDLHkRjjeWWAMLQx1uUyrlHx1WHqyrkoZZkue1ifNTze1Koe3dGRPB6oYr9G1 ZNSvp1IEZEMYOcf9aQvUtC54Dezxl3YvgWawVqfBOcwFwKfHnhYu0jbLsw1HX0VZFp UKbO/pbX7/lgH8pknwL0iFgQCjS2fFBk2qT6FcXtoiA0EVBxqV6YZsgs7Uo3Fvj7Qm zFNUwTHgDWOSFES8Chjgp7k+RX3L7NkNu1OwRNisoD7g/wD6bAfvU0Bs5wvo7Yyyci DVxvGOSQrbIsqRzYchZqXqxBPlpptSP0Kn8WH2Q3Qm2UtykN7eaXTWwPS6kvIMRjUG 6kmUUWrRA/NRA== Message-ID: From: sashiko-bot@kernel.org Subject: Re: [PATCH v7 5/5] arm64: dts: amlogic: Add Amlogic S4 Audio Reply-To: sashiko-reviews@lists.linux.dev To: "Jiebing Chen" Cc: devicetree@vger.kernel.org, linux-amlogic@lists.infradead.org, linux-clk@vger.kernel.org, robh@kernel.org, conor+dt@kernel.org, neil.armstrong@linaro.org In-Reply-To: <20261021-audio_drvier-v7-5-2b9aeae9cb8a@amlogic.com> References: <20261021-audio_drvier-v7-0-2b9aeae9cb8a@amlogic.com> <20261021-audio_drvier-v7-5-2b9aeae9cb8a@amlogic.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Wed, 21 Oct 2026 07:53:08 +0000 X-Mailing-List: devicetree@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list Thank you for your contribution! Sashiko AI review found 6 potential issue(= s) to consider: - [Medium] arm64: dts: amlogic: meson-s4.dtsi references board regulator in= acodec - [Medium] arm64: dts: amlogic: meson-s4.dtsi leaves all audio nodes enable= d by default - [Medium] arm64: dts: amlogic: wrong spdifin interrupt number in meson-s4.= dtsi - [Medium] ASoC: meson: g12a-toacodec: wrong DAT_SEL shift in s4_toacodec_w= idgets - [Medium] arm64: dts: amlogic: missing pinctrl configuration for S4 AQ222 = S/PDIF coax - [Low] arm64: dts: amlogic: unused dmics codec node in meson-s4-s805x2-aq2= 22.dts -- commit a71d27338262d3dbf5d4f70564ecc7b6b1940900 Author: Jiebing Chen arm64: dts: amlogic: Add Amlogic S4 Audio This commit adds audio controller device tree nodes to the Amlogic S4 SoC dtsi and configures the sound card and audio peripherals on the Amlogic AQ222 board. [Severity: Medium] In arch/arm64/boot/dts/amlogic/meson-s4.dtsi at line 904, the acodec (audio-controller@1a000) node hardcodes AVDD-supply =3D <&vddio_ao1v8>;. However, vddio_ao1v8 is not defined in meson-s4.dtsi; it is a board-level fixed regulator defined in arch/arm64/boot/dts/amlogic/meson-s4-s805x2-aq22= 2.dts at line 70. Compiling any other Amlogic S4 board device tree that includes meson-s4.dtsi without defining a board regulator with the exact label vddio_ao1v8 will fa= il during dtbs compilation with a non-existent phandle reference error. Should AVDD-supply be moved out of meson-s4.dtsi and provided in meson-s4-s805x2-aq222.dts via an &acodec node reference, matching the separation used in meson-g12-common.dtsi and meson-gxl.dtsi? [Severity: Medium] In arch/arm64/boot/dts/amlogic/meson-s4.dtsi (starting at tdmif_a at line 872, acodec at line 904, and clkc_audio at line 915), all 25 audio controller nodes omit status =3D "disabled";. Unlike the other optional peripheral nodes in meson-s4.dtsi and the audio nodes in meson-g12-common.dtsi, meson-sm1.dtsi, and meson-axg.dtsi, leaving these nodes enabled by default causes of_platform_default_populate_init() to instantiate and probe all of them on every S4 board (such as meson-s4-s905y4-khadas-vim1s.dts, as well as unused audio blocks on AQ222 like toddr_d, frddr_d, and pdm). At boot, this unconditionally powers on the PWRC_S4_AUDIO_ID power domain and runs axg_audio_clkc_probe(), t9015_probe(), and meson_audio_arb_probe(), keeping CLKID_AUDIO, CLKID_ACODEC, and AUD_CLKID_DDR_ARB permanently enabled via devm_clk_get_enabled() and deasserting RESET_AUDIO and RESET_ACODEC. In addition, the apb4 audio child nodes are appended at the bottom of meson-s4.dtsi via an &apb4 reference instead of being placed inside apb4: bus@fe000000, and the headers dt-bindings/sound/meson-g12a-toacodec.h and dt-bindings/sound/meson-g12a-tohdmitx.h are included in meson-s4.dtsi where their macros are unused rather than in meson-s4-s805x2-aq222.dts. Could the audio controller nodes in meson-s4.dtsi default to status =3D "disabled" and only be enabled in board dts files for the specif= ic components wired on each board? [Severity: Medium] In arch/arm64/boot/dts/amlogic/meson-s4.dtsi at line 1095, the spdifin (audio-controller@330400) node specifies: interrupts =3D ; Across Amlogic AXG (GIC_SPI 84 through 90) and G12A/SM1 (GIC_SPI 148 through 154), the seven audio interrupts form a contiguous range ordered as toddr_a (+0), toddr_b (+1), toddr_c (+2), spdifin (+3), frddr_a (+4), frddr_b (+5), and frddr_c (+6). In meson-s4.dtsi (around line 976), toddr_a through toddr_c are at GIC_SPI 32 through 34 and frddr_a through frddr_c are at GIC_SPI 36 through 38, leaving GIC_SPI 35 between them for spdifin, while spdifin still has the G12A/SM1 interrupt number 151. Was spdifin intended to use GIC_SPI 35 instead of GIC_SPI 151? [Severity: Medium] In arch/arm64/boot/dts/amlogic/meson-s4.dtsi at line 1168, the toacodec (audio-controller@330740) node uses compatible =3D "amlogic,s4-toacodec", which binds to s4_toacodec_match_data in sound/soc/meson/g12a-toacodec.c at line 317 (and is wired in dai-link-6, dai-link-7, and dai-link-12 in meson-s4-s805x2-aq222.dts). In sound/soc/meson/g12a-toacodec.c, S4 expands the Lane Select mixer control in TOACODEC_CTRL0 to 8 lanes (shift 16, max 7, occupying bits [18:16]) and defines field_dat_sel in s4_toacodec_match_data at bits [20:19] via REG_FIELD(TOACODEC_CTRL0, 19, 20). However, s4_toacodec_widgets at line 147 reuses sm1_toacodec_mux for the SRC DAPM mux widget, whose soc_enum (sm1_toacodec_mux_enum) uses shift_l =3D 18 (CTRL0_DAT_SEL_SM1_LSB) rather than 19. While g12a_toacodec_mux_put_enum() writes the selected source to priv->field_dat_sel at bits [20:19], both dapm_connect_mux() during probe and snd_soc_dapm_get_enum_double() when userspace reads the "TOACODEC SRC" control read TOACODEC_CTRL0 using shift_l =3D 18 and mask =3D 0x3. This ext= racts bits [19:18], overlapping bit 18 of Lane Select and reading the wrong bits for the mux state. Does s4_toacodec_widgets need a dedicated S4 mux definition with shift 19 to match field_dat_sel? [Severity: Medium] In arch/arm64/boot/dts/amlogic/meson-s4-s805x2-aq222.dts, the sound node sets up external S/PDIF coax output in dai-link-9 at line 313 (connecting spdifout_a to spdif_dit) and S/PDIF coax input in dai-link-11 at line 334 (connecting spdifin to spdif_dir). However, periphs_pinctrl in meson-s4.dtsi defines no pinmux nodes for the spdif_in (GPIOH_5) or spdif_out (GPIOH_4 or GPIOZ_9) groups present in drivers/pinctrl/meson/pinctrl-meson-s4.c, and meson-s4-s805x2-aq222.dts does not assign pinctrl-0 or pinctrl-names on spdifout_a or spdifin (defined at line 1089 of meson-s4.dtsi). When axg-spdifout and axg-spdifin probe, pinctrl_bind_pins() applies no pinmux configuration, leaving the external S/PDIF coax pads unmuxed. Are pinctrl definitions and pinctrl-0 properties needed on spdifout_a and spdifin for the AQ222 S/PDIF coax interfaces to function? [Severity: Low] In arch/arm64/boot/dts/amlogic/meson-s4-s805x2-aq222.dts at line 146, the dmics (audio-codec-1) node is defined with compatible =3D "dmic-codec" and sound-name-prefix =3D "MIC". However, the sound node (around line 231) has = no dai-link subnode connecting &pdm to &dmics and no audio-routing entries referencing MIC or PDM Capture, leaving dmics as an unconnected codec device. Is the dmics node an unused leftover that should be dropped, or was a PDM dai-link and routing configuration intended for this board? --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20261021-audio_drvi= er-v7-0-2b9aeae9cb8a@amlogic.com?part=3D5 From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A4823606A31A for ; Wed, 21 Oct 2026 07:53:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=mT57m1Xu; dkim=fail reason="signature verification failed" (2048-bit key, unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=WIpnIDLH DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Reply-To:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Date:References: In-Reply-To:Cc:To:Subject:From:Message-ID:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Ai9QxNjlrgZizYiIweWI97JUoBcb/Xm4n9aJ3xSPe4E=; b=mT57m1XuNlgMLr msRwhv03c74jaYOrYa8evNFMAVsSjyll0x192FG3xcuLMlSwW1kZ0DIo+9NP88C3eoMwVqBImB5rb z1FOv291rduWxcS7mzVD74FOzWa3G/Y+XfWbY0zbV8XofabKiGwTWVv/hP1t17JMBifM7NYBUculc cSxinzjCY5cXePav8XN5uZAm5dciGVWNMoUgBFRBU7AuH3LR+FY2ph+K4umL3+vVX08HHFXLTG5Iq WaVuAgcqFVEsOAAGO0dKaB0dhaVQ+NrIaycZXCKhNj4C9N0WSpdfNj9lfjhCRimBvzBuwSA/G/LR4 xCNP7oV15jYnKFjHm8Sw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1xJR8J-0000000BHJo-1stk; Wed, 21 Oct 2026 07:53:11 +0000 Received: from sea.source.kernel.org ([2600:3c0a:e001:78e:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1xJR8I-0000000BHJd-0y4q for linux-amlogic@lists.infradead.org; Wed, 21 Oct 2026 07:53:10 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id 3990B437F9; Wed, 21 Oct 2026 07:53:09 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D3BA21F000C9; Wed, 21 Oct 2026 07:53:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1792569189; bh=fOZZ9r0CmT1iLV8NW5Ru9DBs2AykPQxWgR2/m3oBnjg=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=WIpnIDLHkRjjeWWAMLQx1uUyrlHx1WHqyrkoZZkue1ifNTze1Koe3dGRPB6oYr9G1 ZNSvp1IEZEMYOcf9aQvUtC54Dezxl3YvgWawVqfBOcwFwKfHnhYu0jbLsw1HX0VZFp UKbO/pbX7/lgH8pknwL0iFgQCjS2fFBk2qT6FcXtoiA0EVBxqV6YZsgs7Uo3Fvj7Qm zFNUwTHgDWOSFES8Chjgp7k+RX3L7NkNu1OwRNisoD7g/wD6bAfvU0Bs5wvo7Yyyci DVxvGOSQrbIsqRzYchZqXqxBPlpptSP0Kn8WH2Q3Qm2UtykN7eaXTWwPS6kvIMRjUG 6kmUUWrRA/NRA== Message-ID: From: sashiko-bot@kernel.org Subject: Re: [PATCH v7 5/5] arm64: dts: amlogic: Add Amlogic S4 Audio To: "Jiebing Chen" Cc: devicetree@vger.kernel.org, linux-amlogic@lists.infradead.org, linux-clk@vger.kernel.org, robh@kernel.org, conor+dt@kernel.org, neil.armstrong@linaro.org In-Reply-To: <20261021-audio_drvier-v7-5-2b9aeae9cb8a@amlogic.com> References: <20261021-audio_drvier-v7-0-2b9aeae9cb8a@amlogic.com> <20261021-audio_drvier-v7-5-2b9aeae9cb8a@amlogic.com> Date: Wed, 21 Oct 2026 07:53:08 +0000 X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: sashiko-reviews@lists.linux.dev X-Archived-By: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-amlogic" X-Spam-Status: No, score=-4.2 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=4.0.1 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on aws-us-west-2-korg-listserv-alma10-1 VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg NiBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6Ci0gW01lZGl1bV0gYXJtNjQ6IGR0czog YW1sb2dpYzogbWVzb24tczQuZHRzaSByZWZlcmVuY2VzIGJvYXJkIHJlZ3VsYXRvciBpbiBhY29k ZWMKLSBbTWVkaXVtXSBhcm02NDogZHRzOiBhbWxvZ2ljOiBtZXNvbi1zNC5kdHNpIGxlYXZlcyBh bGwgYXVkaW8gbm9kZXMgZW5hYmxlZCBieSBkZWZhdWx0Ci0gW01lZGl1bV0gYXJtNjQ6IGR0czog YW1sb2dpYzogd3Jvbmcgc3BkaWZpbiBpbnRlcnJ1cHQgbnVtYmVyIGluIG1lc29uLXM0LmR0c2kK LSBbTWVkaXVtXSBBU29DOiBtZXNvbjogZzEyYS10b2Fjb2RlYzogd3JvbmcgREFUX1NFTCBzaGlm dCBpbiBzNF90b2Fjb2RlY193aWRnZXRzCi0gW01lZGl1bV0gYXJtNjQ6IGR0czogYW1sb2dpYzog bWlzc2luZyBwaW5jdHJsIGNvbmZpZ3VyYXRpb24gZm9yIFM0IEFRMjIyIFMvUERJRiBjb2F4Ci0g W0xvd10gYXJtNjQ6IGR0czogYW1sb2dpYzogdW51c2VkIGRtaWNzIGNvZGVjIG5vZGUgaW4gbWVz b24tczQtczgwNXgyLWFxMjIyLmR0cwotLQoKY29tbWl0IGE3MWQyNzMzODI2MmQzZGJmNWQ0Zjcw NTY0ZWNjN2I2YjE5NDA5MDAKQXV0aG9yOiBKaWViaW5nIENoZW4gPGppZWJpbmcuY2hlbkBhbWxv Z2ljLmNvbT4KCmFybTY0OiBkdHM6IGFtbG9naWM6IEFkZCBBbWxvZ2ljIFM0IEF1ZGlvCgpUaGlz IGNvbW1pdCBhZGRzIGF1ZGlvIGNvbnRyb2xsZXIgZGV2aWNlIHRyZWUgbm9kZXMgdG8gdGhlIEFt bG9naWMgUzQgU29DCmR0c2kgYW5kIGNvbmZpZ3VyZXMgdGhlIHNvdW5kIGNhcmQgYW5kIGF1ZGlv IHBlcmlwaGVyYWxzIG9uIHRoZSBBbWxvZ2ljCkFRMjIyIGJvYXJkLgoKW1NldmVyaXR5OiBNZWRp dW1dCkluIGFyY2gvYXJtNjQvYm9vdC9kdHMvYW1sb2dpYy9tZXNvbi1zNC5kdHNpIGF0IGxpbmUg OTA0LCB0aGUgYWNvZGVjCihhdWRpby1jb250cm9sbGVyQDFhMDAwKSBub2RlIGhhcmRjb2RlcyBB VkRELXN1cHBseSA9IDwmdmRkaW9fYW8xdjg+Oy4KSG93ZXZlciwgdmRkaW9fYW8xdjggaXMgbm90 IGRlZmluZWQgaW4gbWVzb24tczQuZHRzaTsgaXQgaXMgYSBib2FyZC1sZXZlbApmaXhlZCByZWd1 bGF0b3IgZGVmaW5lZCBpbiBhcmNoL2FybTY0L2Jvb3QvZHRzL2FtbG9naWMvbWVzb24tczQtczgw NXgyLWFxMjIyLmR0cwphdCBsaW5lIDcwLgoKQ29tcGlsaW5nIGFueSBvdGhlciBBbWxvZ2ljIFM0 IGJvYXJkIGRldmljZSB0cmVlIHRoYXQgaW5jbHVkZXMgbWVzb24tczQuZHRzaQp3aXRob3V0IGRl ZmluaW5nIGEgYm9hcmQgcmVndWxhdG9yIHdpdGggdGhlIGV4YWN0IGxhYmVsIHZkZGlvX2FvMXY4 IHdpbGwgZmFpbApkdXJpbmcgZHRicyBjb21waWxhdGlvbiB3aXRoIGEgbm9uLWV4aXN0ZW50IHBo YW5kbGUgcmVmZXJlbmNlIGVycm9yLgoKU2hvdWxkIEFWREQtc3VwcGx5IGJlIG1vdmVkIG91dCBv ZiBtZXNvbi1zNC5kdHNpIGFuZCBwcm92aWRlZCBpbgptZXNvbi1zNC1zODA1eDItYXEyMjIuZHRz IHZpYSBhbiAmYWNvZGVjIG5vZGUgcmVmZXJlbmNlLCBtYXRjaGluZyB0aGUKc2VwYXJhdGlvbiB1 c2VkIGluIG1lc29uLWcxMi1jb21tb24uZHRzaSBhbmQgbWVzb24tZ3hsLmR0c2k/CgpbU2V2ZXJp dHk6IE1lZGl1bV0KSW4gYXJjaC9hcm02NC9ib290L2R0cy9hbWxvZ2ljL21lc29uLXM0LmR0c2kg KHN0YXJ0aW5nIGF0IHRkbWlmX2EgYXQgbGluZQo4NzIsIGFjb2RlYyBhdCBsaW5lIDkwNCwgYW5k IGNsa2NfYXVkaW8gYXQgbGluZSA5MTUpLCBhbGwgMjUgYXVkaW8KY29udHJvbGxlciBub2RlcyBv bWl0IHN0YXR1cyA9ICJkaXNhYmxlZCI7LgoKVW5saWtlIHRoZSBvdGhlciBvcHRpb25hbCBwZXJp cGhlcmFsIG5vZGVzIGluIG1lc29uLXM0LmR0c2kgYW5kIHRoZSBhdWRpbwpub2RlcyBpbiBtZXNv bi1nMTItY29tbW9uLmR0c2ksIG1lc29uLXNtMS5kdHNpLCBhbmQgbWVzb24tYXhnLmR0c2ksIGxl YXZpbmcKdGhlc2Ugbm9kZXMgZW5hYmxlZCBieSBkZWZhdWx0IGNhdXNlcyBvZl9wbGF0Zm9ybV9k ZWZhdWx0X3BvcHVsYXRlX2luaXQoKSB0bwppbnN0YW50aWF0ZSBhbmQgcHJvYmUgYWxsIG9mIHRo ZW0gb24gZXZlcnkgUzQgYm9hcmQgKHN1Y2ggYXMKbWVzb24tczQtczkwNXk0LWtoYWRhcy12aW0x cy5kdHMsIGFzIHdlbGwgYXMgdW51c2VkIGF1ZGlvIGJsb2NrcyBvbiBBUTIyMgpsaWtlIHRvZGRy X2QsIGZyZGRyX2QsIGFuZCBwZG0pLiBBdCBib290LCB0aGlzIHVuY29uZGl0aW9uYWxseSBwb3dl cnMgb24gdGhlClBXUkNfUzRfQVVESU9fSUQgcG93ZXIgZG9tYWluIGFuZCBydW5zIGF4Z19hdWRp b19jbGtjX3Byb2JlKCksCnQ5MDE1X3Byb2JlKCksIGFuZCBtZXNvbl9hdWRpb19hcmJfcHJvYmUo KSwga2VlcGluZyBDTEtJRF9BVURJTywKQ0xLSURfQUNPREVDLCBhbmQgQVVEX0NMS0lEX0REUl9B UkIgcGVybWFuZW50bHkgZW5hYmxlZCB2aWEKZGV2bV9jbGtfZ2V0X2VuYWJsZWQoKSBhbmQgZGVh c3NlcnRpbmcgUkVTRVRfQVVESU8gYW5kIFJFU0VUX0FDT0RFQy4KCkluIGFkZGl0aW9uLCB0aGUg YXBiNCBhdWRpbyBjaGlsZCBub2RlcyBhcmUgYXBwZW5kZWQgYXQgdGhlIGJvdHRvbSBvZgptZXNv bi1zNC5kdHNpIHZpYSBhbiAmYXBiNCByZWZlcmVuY2UgaW5zdGVhZCBvZiBiZWluZyBwbGFjZWQg aW5zaWRlCmFwYjQ6IGJ1c0BmZTAwMDAwMCwgYW5kIHRoZSBoZWFkZXJzIGR0LWJpbmRpbmdzL3Nv dW5kL21lc29uLWcxMmEtdG9hY29kZWMuaAphbmQgZHQtYmluZGluZ3Mvc291bmQvbWVzb24tZzEy YS10b2hkbWl0eC5oIGFyZSBpbmNsdWRlZCBpbiBtZXNvbi1zNC5kdHNpCndoZXJlIHRoZWlyIG1h Y3JvcyBhcmUgdW51c2VkIHJhdGhlciB0aGFuIGluIG1lc29uLXM0LXM4MDV4Mi1hcTIyMi5kdHMu CgpDb3VsZCB0aGUgYXVkaW8gY29udHJvbGxlciBub2RlcyBpbiBtZXNvbi1zNC5kdHNpIGRlZmF1 bHQgdG8Kc3RhdHVzID0gImRpc2FibGVkIiBhbmQgb25seSBiZSBlbmFibGVkIGluIGJvYXJkIGR0 cyBmaWxlcyBmb3IgdGhlIHNwZWNpZmljCmNvbXBvbmVudHMgd2lyZWQgb24gZWFjaCBib2FyZD8K CltTZXZlcml0eTogTWVkaXVtXQpJbiBhcmNoL2FybTY0L2Jvb3QvZHRzL2FtbG9naWMvbWVzb24t czQuZHRzaSBhdCBsaW5lIDEwOTUsIHRoZSBzcGRpZmluCihhdWRpby1jb250cm9sbGVyQDMzMDQw MCkgbm9kZSBzcGVjaWZpZXM6CgogICAgaW50ZXJydXB0cyA9IDxHSUNfU1BJIDE1MSBJUlFfVFlQ RV9FREdFX1JJU0lORz47CgpBY3Jvc3MgQW1sb2dpYyBBWEcgKEdJQ19TUEkgODQgdGhyb3VnaCA5 MCkgYW5kIEcxMkEvU00xIChHSUNfU1BJIDE0OCB0aHJvdWdoCjE1NCksIHRoZSBzZXZlbiBhdWRp byBpbnRlcnJ1cHRzIGZvcm0gYSBjb250aWd1b3VzIHJhbmdlIG9yZGVyZWQgYXMgdG9kZHJfYQoo KzApLCB0b2Rkcl9iICgrMSksIHRvZGRyX2MgKCsyKSwgc3BkaWZpbiAoKzMpLCBmcmRkcl9hICgr NCksIGZyZGRyX2IgKCs1KSwKYW5kIGZyZGRyX2MgKCs2KS4KCkluIG1lc29uLXM0LmR0c2kgKGFy b3VuZCBsaW5lIDk3NiksIHRvZGRyX2EgdGhyb3VnaCB0b2Rkcl9jIGFyZSBhdCBHSUNfU1BJCjMy IHRocm91Z2ggMzQgYW5kIGZyZGRyX2EgdGhyb3VnaCBmcmRkcl9jIGFyZSBhdCBHSUNfU1BJIDM2 IHRocm91Z2ggMzgsCmxlYXZpbmcgR0lDX1NQSSAzNSBiZXR3ZWVuIHRoZW0gZm9yIHNwZGlmaW4s IHdoaWxlIHNwZGlmaW4gc3RpbGwgaGFzIHRoZQpHMTJBL1NNMSBpbnRlcnJ1cHQgbnVtYmVyIDE1 MS4KCldhcyBzcGRpZmluIGludGVuZGVkIHRvIHVzZSBHSUNfU1BJIDM1IGluc3RlYWQgb2YgR0lD X1NQSSAxNTE/CgpbU2V2ZXJpdHk6IE1lZGl1bV0KSW4gYXJjaC9hcm02NC9ib290L2R0cy9hbWxv Z2ljL21lc29uLXM0LmR0c2kgYXQgbGluZSAxMTY4LCB0aGUgdG9hY29kZWMKKGF1ZGlvLWNvbnRy b2xsZXJAMzMwNzQwKSBub2RlIHVzZXMgY29tcGF0aWJsZSA9ICJhbWxvZ2ljLHM0LXRvYWNvZGVj IiwKd2hpY2ggYmluZHMgdG8gczRfdG9hY29kZWNfbWF0Y2hfZGF0YSBpbiBzb3VuZC9zb2MvbWVz b24vZzEyYS10b2Fjb2RlYy5jCmF0IGxpbmUgMzE3IChhbmQgaXMgd2lyZWQgaW4gZGFpLWxpbmst NiwgZGFpLWxpbmstNywgYW5kIGRhaS1saW5rLTEyIGluCm1lc29uLXM0LXM4MDV4Mi1hcTIyMi5k dHMpLgoKSW4gc291bmQvc29jL21lc29uL2cxMmEtdG9hY29kZWMuYywgUzQgZXhwYW5kcyB0aGUg TGFuZSBTZWxlY3QgbWl4ZXIgY29udHJvbAppbiBUT0FDT0RFQ19DVFJMMCB0byA4IGxhbmVzIChz aGlmdCAxNiwgbWF4IDcsIG9jY3VweWluZyBiaXRzIFsxODoxNl0pIGFuZApkZWZpbmVzIGZpZWxk X2RhdF9zZWwgaW4gczRfdG9hY29kZWNfbWF0Y2hfZGF0YSBhdCBiaXRzIFsyMDoxOV0gdmlhClJF R19GSUVMRChUT0FDT0RFQ19DVFJMMCwgMTksIDIwKS4gSG93ZXZlciwgczRfdG9hY29kZWNfd2lk Z2V0cyBhdCBsaW5lIDE0NwpyZXVzZXMgc20xX3RvYWNvZGVjX211eCBmb3IgdGhlIFNSQyBEQVBN IG11eCB3aWRnZXQsIHdob3NlIHNvY19lbnVtCihzbTFfdG9hY29kZWNfbXV4X2VudW0pIHVzZXMg c2hpZnRfbCA9IDE4IChDVFJMMF9EQVRfU0VMX1NNMV9MU0IpIHJhdGhlcgp0aGFuIDE5LgoKV2hp bGUgZzEyYV90b2Fjb2RlY19tdXhfcHV0X2VudW0oKSB3cml0ZXMgdGhlIHNlbGVjdGVkIHNvdXJj ZSB0bwpwcml2LT5maWVsZF9kYXRfc2VsIGF0IGJpdHMgWzIwOjE5XSwgYm90aCBkYXBtX2Nvbm5l Y3RfbXV4KCkgZHVyaW5nIHByb2JlCmFuZCBzbmRfc29jX2RhcG1fZ2V0X2VudW1fZG91YmxlKCkg d2hlbiB1c2Vyc3BhY2UgcmVhZHMgdGhlICJUT0FDT0RFQyBTUkMiCmNvbnRyb2wgcmVhZCBUT0FD T0RFQ19DVFJMMCB1c2luZyBzaGlmdF9sID0gMTggYW5kIG1hc2sgPSAweDMuIFRoaXMgZXh0cmFj dHMKYml0cyBbMTk6MThdLCBvdmVybGFwcGluZyBiaXQgMTggb2YgTGFuZSBTZWxlY3QgYW5kIHJl YWRpbmcgdGhlIHdyb25nIGJpdHMKZm9yIHRoZSBtdXggc3RhdGUuCgpEb2VzIHM0X3RvYWNvZGVj X3dpZGdldHMgbmVlZCBhIGRlZGljYXRlZCBTNCBtdXggZGVmaW5pdGlvbiB3aXRoIHNoaWZ0IDE5 IHRvCm1hdGNoIGZpZWxkX2RhdF9zZWw/CgpbU2V2ZXJpdHk6IE1lZGl1bV0KSW4gYXJjaC9hcm02 NC9ib290L2R0cy9hbWxvZ2ljL21lc29uLXM0LXM4MDV4Mi1hcTIyMi5kdHMsIHRoZSBzb3VuZCBu b2RlCnNldHMgdXAgZXh0ZXJuYWwgUy9QRElGIGNvYXggb3V0cHV0IGluIGRhaS1saW5rLTkgYXQg bGluZSAzMTMgKGNvbm5lY3RpbmcKc3BkaWZvdXRfYSB0byBzcGRpZl9kaXQpIGFuZCBTL1BESUYg Y29heCBpbnB1dCBpbiBkYWktbGluay0xMSBhdCBsaW5lIDMzNAooY29ubmVjdGluZyBzcGRpZmlu IHRvIHNwZGlmX2RpcikuCgpIb3dldmVyLCBwZXJpcGhzX3BpbmN0cmwgaW4gbWVzb24tczQuZHRz aSBkZWZpbmVzIG5vIHBpbm11eCBub2RlcyBmb3IgdGhlCnNwZGlmX2luIChHUElPSF81KSBvciBz cGRpZl9vdXQgKEdQSU9IXzQgb3IgR1BJT1pfOSkgZ3JvdXBzIHByZXNlbnQgaW4KZHJpdmVycy9w aW5jdHJsL21lc29uL3BpbmN0cmwtbWVzb24tczQuYywgYW5kIG1lc29uLXM0LXM4MDV4Mi1hcTIy Mi5kdHMgZG9lcwpub3QgYXNzaWduIHBpbmN0cmwtMCBvciBwaW5jdHJsLW5hbWVzIG9uIHNwZGlm b3V0X2Egb3Igc3BkaWZpbiAoZGVmaW5lZCBhdApsaW5lIDEwODkgb2YgbWVzb24tczQuZHRzaSku IFdoZW4gYXhnLXNwZGlmb3V0IGFuZCBheGctc3BkaWZpbiBwcm9iZSwKcGluY3RybF9iaW5kX3Bp bnMoKSBhcHBsaWVzIG5vIHBpbm11eCBjb25maWd1cmF0aW9uLCBsZWF2aW5nIHRoZSBleHRlcm5h bApTL1BESUYgY29heCBwYWRzIHVubXV4ZWQuCgpBcmUgcGluY3RybCBkZWZpbml0aW9ucyBhbmQg cGluY3RybC0wIHByb3BlcnRpZXMgbmVlZGVkIG9uIHNwZGlmb3V0X2EgYW5kCnNwZGlmaW4gZm9y IHRoZSBBUTIyMiBTL1BESUYgY29heCBpbnRlcmZhY2VzIHRvIGZ1bmN0aW9uPwoKW1NldmVyaXR5 OiBMb3ddCkluIGFyY2gvYXJtNjQvYm9vdC9kdHMvYW1sb2dpYy9tZXNvbi1zNC1zODA1eDItYXEy MjIuZHRzIGF0IGxpbmUgMTQ2LCB0aGUKZG1pY3MgKGF1ZGlvLWNvZGVjLTEpIG5vZGUgaXMgZGVm aW5lZCB3aXRoIGNvbXBhdGlibGUgPSAiZG1pYy1jb2RlYyIgYW5kCnNvdW5kLW5hbWUtcHJlZml4 ID0gIk1JQyIuIEhvd2V2ZXIsIHRoZSBzb3VuZCBub2RlIChhcm91bmQgbGluZSAyMzEpIGhhcyBu bwpkYWktbGluayBzdWJub2RlIGNvbm5lY3RpbmcgJnBkbSB0byAmZG1pY3MgYW5kIG5vIGF1ZGlv LXJvdXRpbmcgZW50cmllcwpyZWZlcmVuY2luZyBNSUMgb3IgUERNIENhcHR1cmUsIGxlYXZpbmcg ZG1pY3MgYXMgYW4gdW5jb25uZWN0ZWQgY29kZWMKZGV2aWNlLgoKSXMgdGhlIGRtaWNzIG5vZGUg YW4gdW51c2VkIGxlZnRvdmVyIHRoYXQgc2hvdWxkIGJlIGRyb3BwZWQsIG9yIHdhcyBhIFBETQpk YWktbGluayBhbmQgcm91dGluZyBjb25maWd1cmF0aW9uIGludGVuZGVkIGZvciB0aGlzIGJvYXJk PwoKLS0gClNhc2hpa28gQUkgcmV2aWV3IMK3IGh0dHBzOi8vc2FzaGlrby5kZXYvIy9wYXRjaHNl dC8yMDI2MTAyMS1hdWRpb19kcnZpZXItdjctMC0yYjlhZWFlOWNiOGFAYW1sb2dpYy5jb20/cGFy dD01CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51 eC1hbWxvZ2ljIG1haWxpbmcgbGlzdApsaW51eC1hbWxvZ2ljQGxpc3RzLmluZnJhZGVhZC5vcmcK aHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hbWxvZ2lj Cg==