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=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,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 76E61C48BE5 for ; Tue, 15 Jun 2021 08:50:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 55172611C0 for ; Tue, 15 Jun 2021 08:50:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231209AbhFOIwx (ORCPT ); Tue, 15 Jun 2021 04:52:53 -0400 Received: from esa.microchip.iphmx.com ([68.232.154.123]:42471 "EHLO esa.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230332AbhFOIwv (ORCPT ); Tue, 15 Jun 2021 04:52:51 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1623747047; x=1655283047; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=9b0yrD49PQCsO1lyUsJQBwEWd/f+MKJwcnBj+96927c=; b=XSe0FHZA9q9z+I6NYvvNFsuAKnCsWDQXVMXQHqlaf5A4ZZKw8dV0UbRx H8CzB42INVHF251Ew3p6ssQaMOpN3AylzvSEkO6jcW+FvWkAnw4nJBnmt nbaF+9CXMsWuXaqZ/X/A1tfU2r4HKQy4oe9vSl+VCaG1bnzauZgDl2G7K ZRhzcf8liIh00lUT4VQwD1xfmtqvW8JbB65nZMgSNIYRXoXTPRCFHNI1n oksmJsCAbg4A85UylAW03uk6QEks/mdNSqCRmP15xvfk1BpQsHbY8JrRG bAJKrJhGsKcybWjiZfeAhhmNMvM1XMQ1jfZlJik9CrTYzhS2LCVxO5Rsm A==; IronPort-SDR: v7ff03hzlXDskGaA8czZoQD2/6fyyCSY2lH0a2c8zVF+XDXW1dPcJ8y4nK+E2GJ8Ey20+TkUTn WdP8nPQXuWoEMYXgwX8iPaIeDMTa9Wt4NjMLvx9urbkSmycwbL5F6Ik/1FkW8kgsDaIRHiZdOk gPav+1nfT7ZFApnFrKh8MVnXrb0L/b0HI+5mfUiKpc1cGLvuLT5UMEap0o9fP9DSulkXsQnj7G Ch82ypDtOi0mQvuKsObmCgNynuUgDTIKClCsQ904hlLpBzwtNB/zmJv/BOYX6z/JkoONNdM+MB 7NE= X-IronPort-AV: E=Sophos;i="5.83,275,1616482800"; d="scan'208";a="58958462" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa6.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 15 Jun 2021 01:50:46 -0700 Received: from chn-vm-ex01.mchp-main.com (10.10.85.143) by chn-vm-ex03.mchp-main.com (10.10.85.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Tue, 15 Jun 2021 01:50:46 -0700 Received: from den-dk-m31857.microchip.com (10.10.115.15) by chn-vm-ex01.mchp-main.com (10.10.85.143) with Microsoft SMTP Server id 15.1.2176.2 via Frontend Transport; Tue, 15 Jun 2021 01:50:43 -0700 From: Steen Hegelund To: "David S. Miller" , Jakub Kicinski CC: Steen Hegelund , Andrew Lunn , Russell King , "Microchip Linux Driver Support" , Alexandre Belloni , Madalin Bucur , Mark Einon , Masahiro Yamada , Arnd Bergmann , Philipp Zabel , "Simon Horman" , , , Subject: [PATCH net-next v4 00/10] Adding the Sparx5 Switch Driver Date: Tue, 15 Jun 2021 10:50:24 +0200 Message-ID: <20210615085034.1262457-1-steen.hegelund@microchip.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-kernel@vger.kernel.org This series provides the Microchip Sparx5 Switch Driver The Sparx5 Carrier Ethernet and Industrial switch family delivers 64 Ethernet ports and up to 200 Gbps of switching bandwidth. It provides a rich set of Ethernet switching features such as hierarchical QoS, hardware-based OAM and service activation testing, protection switching, IEEE 1588, and Synchronous Ethernet. Using provider bridging (Q-in-Q) and MPLS/MPLS-TP technology, it delivers MEF CE 2.0 Ethernet virtual connections (EVCs) and features advanced TCAM classification in both ingress and egress. Per-EVC features include advanced L3-aware classification, a rich set of statistics, OAM for end-to-end performance monitoring, and dual-rate policing and shaping. Time sensitive networking (TSN) is supported through a comprehensive set of features including frame preemption, cut-through, frame replication and elimination for reliability, enhanced scheduling: credit-based shaping, time-aware shaping, cyclic queuing, and forwarding, and per-stream policing and filtering. Together with IEEE 1588 and IEEE 802.1AS support, this guarantees low-latency deterministic networking for Fronthaul, Carrier, and Industrial Ethernet. The Sparx5 switch family consists of following SKUs: - VSC7546 Sparx5-64 up to 64 Gbps of bandwidth with the following primary port configurations: - 6 *10G - 16 * 2.5G + 2 * 10G - 24 * 1G + 4 * 10G - VSC7549 Sparx5-90 up to 90 Gbps of bandwidth with the following primary port configurations: - 9 * 10G - 16 * 2.5G + 4 * 10G - 48 * 1G + 4 * 10G - VSC7552 Sparx5-128 up to 128 Gbps of bandwidth with the following primary port configurations: - 12 * 10G - 16 * 2.5G + 8 * 10G - 48 * 1G + 8 * 10G - VSC7556 Sparx5-160 up to 160 Gbps of bandwidth with the following primary port configurations: - 16 * 10G - 10 * 10G + 2 * 25G - 16 * 2.5G + 10 * 10G - 48 * 1G + 10 * 10G - VSC7558 Sparx5-200 up to 200 Gbps of bandwidth with the following primary port configurations: - 20 * 10G - 8 * 25G In addition, the device supports one 10/100/1000/2500/5000 Mbps SGMII/SerDes node processor interface (NPI) Ethernet port. The Sparx5 support is developed on the PCB134 and PCB135 evaluation boards. - PCB134 main networking features: - 12x SFP+ front 10G module slots (connected to Sparx5 through SFI). - 8x SFP28 front 25G module slots (connected to Sparx5 through SFI high speed). - Optional, one additional 10/100/1000BASE-T (RJ45) Ethernet port (on-board VSC8211 PHY connected to Sparx5 through SGMII). - PCB135 main networking features: - 48x1G (10/100/1000M) RJ45 front ports using 12xVSC8514 QuadPHY’s each connected to VSC7558 through QSGMII. - 4x10G (1G/2.5G/5G/10G) RJ45 front ports using the AQR407 10G QuadPHY each port connects to VSC7558 through SFI. - 4x SFP28 25G module slots on back connected to VSC7558 through SFI high speed. - Optional, one additional 1G (10/100/1000M) RJ45 port using an on-board VSC8211 PHY, which can be connected to VSC7558 NPI port through SGMII using a loopback add-on PCB) This series provides support for: - SFPs and DAC cables via PHYLINK with a number of 5G, 10G and 25G devices and media types. - Port module configuration for 10M to 25G speeds with SGMII, QSGMII, 1000BASEX, 2500BASEX and 10GBASER as appropriate for these modes. - SerDes configuration via the Sparx5 SerDes driver (see below). - Host mode providing register based injection and extraction. - Switch mode providing MAC/VLAN table learning and Layer2 switching offloaded to the Sparx5 switch. - STP state, VLAN support, host/bridge port mode, Forwarding DB, and configuration and statistics via ethtool. More support will be added at a later stage. The Sparx5 Chip Register Model can be browsed at this location: https://github.com/microchip-ung/sparx-5_reginfo and the datasheet is available here: https://ww1.microchip.com/downloads/en/DeviceDoc/SparX-5_Family_L2L3_Enterprise_10G_Ethernet_Switches_Datasheet_00003822B.pdf The series depends on the following series currently on their way into the kernel: - 25G Base-R phy mode Link: https://lore.kernel.org/r/20210611125453.313308-1-steen.hegelund@microchip.com/ - Sparx5 Reset Driver Link: https://lore.kernel.org/r/20210416084054.2922327-1-steen.hegelund@microchip.com/ ChangeLog: v4: - basic driver: Using devm_reset_control_get_optional_shared to get the reset control, and let the reset framework check if it is valid. - host mode (phylink): Use the PCS operations to get state and update configuration. Removed the setting of interface modes. Let phylink control this. Using the new 5gbase-r and 25gbase-r modes. Using a helper function to check if one of the 3 base-r modes has been selected. Currently it will not be possible to change the interface mode by changing the speed (e.g via ethtool). This will be added later. v3: - basic driver: - removed unneeded braces - release reference to ports node after use - use dev_err_probe to handle DEFER - update error value when bailing out (a few cases) - updated formatting of port struct and grouping of bool values - simplified the spx5_rmw and spx5_inst_rmw inline functions - host mode (netdev): - removed lockless flag - added port timer init - host mode (packet - manual injection): - updated error counters in error situations - implemented timer handling of watermark threshold: stop and restart netif queues. - fixed error message handling (rate limited) - fixed comment style error - used DIV_ROUND_UP macro - removed a debug message for open ports v2: - Updated bindings: - drop minItems for the reg property - Statistics implementation: - Reorganized statistics into ethtool groups: eth-phy, eth-mac, eth-ctrl, rmon as defined by the IEEE 802.3 categories and RFC 2819. - The remaining statistics are provided by the classic ethtool statistics command. - Hostmode support: - Removed netdev renaming - Validate ethernet address in sparx5_set_mac_address() Steen Hegelund (10): dt-bindings: net: sparx5: Add sparx5-switch bindings net: sparx5: add the basic sparx5 driver net: sparx5: add hostmode with phylink support net: sparx5: add port module support net: sparx5: add mactable support net: sparx5: add vlan support net: sparx5: add switching support net: sparx5: add calendar bandwidth allocation support net: sparx5: add ethtool configuration and statistics support arm64: dts: sparx5: Add the Sparx5 switch node .../bindings/net/microchip,sparx5-switch.yaml | 226 + arch/arm64/boot/dts/microchip/sparx5.dtsi | 94 +- .../dts/microchip/sparx5_pcb134_board.dtsi | 481 +- .../dts/microchip/sparx5_pcb135_board.dtsi | 621 ++- drivers/net/ethernet/microchip/Kconfig | 2 + drivers/net/ethernet/microchip/Makefile | 2 + drivers/net/ethernet/microchip/sparx5/Kconfig | 9 + .../net/ethernet/microchip/sparx5/Makefile | 10 + .../microchip/sparx5/sparx5_calendar.c | 596 +++ .../microchip/sparx5/sparx5_ethtool.c | 1227 +++++ .../microchip/sparx5/sparx5_mactable.c | 500 ++ .../ethernet/microchip/sparx5/sparx5_main.c | 857 +++ .../ethernet/microchip/sparx5/sparx5_main.h | 373 ++ .../microchip/sparx5/sparx5_main_regs.h | 4642 +++++++++++++++++ .../ethernet/microchip/sparx5/sparx5_netdev.c | 249 + .../ethernet/microchip/sparx5/sparx5_packet.c | 320 ++ .../microchip/sparx5/sparx5_phylink.c | 209 + .../ethernet/microchip/sparx5/sparx5_port.c | 1149 ++++ .../ethernet/microchip/sparx5/sparx5_port.h | 93 + .../microchip/sparx5/sparx5_switchdev.c | 508 ++ .../ethernet/microchip/sparx5/sparx5_vlan.c | 224 + 21 files changed, 12308 insertions(+), 84 deletions(-) create mode 100644 Documentation/devicetree/bindings/net/microchip,sparx5-switch.yaml create mode 100644 drivers/net/ethernet/microchip/sparx5/Kconfig create mode 100644 drivers/net/ethernet/microchip/sparx5/Makefile create mode 100644 drivers/net/ethernet/microchip/sparx5/sparx5_calendar.c create mode 100644 drivers/net/ethernet/microchip/sparx5/sparx5_ethtool.c create mode 100644 drivers/net/ethernet/microchip/sparx5/sparx5_mactable.c create mode 100644 drivers/net/ethernet/microchip/sparx5/sparx5_main.c create mode 100644 drivers/net/ethernet/microchip/sparx5/sparx5_main.h create mode 100644 drivers/net/ethernet/microchip/sparx5/sparx5_main_regs.h create mode 100644 drivers/net/ethernet/microchip/sparx5/sparx5_netdev.c create mode 100644 drivers/net/ethernet/microchip/sparx5/sparx5_packet.c create mode 100644 drivers/net/ethernet/microchip/sparx5/sparx5_phylink.c create mode 100644 drivers/net/ethernet/microchip/sparx5/sparx5_port.c create mode 100644 drivers/net/ethernet/microchip/sparx5/sparx5_port.h create mode 100644 drivers/net/ethernet/microchip/sparx5/sparx5_switchdev.c create mode 100644 drivers/net/ethernet/microchip/sparx5/sparx5_vlan.c -- 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=-16.9 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_HELO_NONE,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 55E43C48BE5 for ; Tue, 15 Jun 2021 16:01:01 +0000 (UTC) Received: from bombadil.infradead.org (unknown [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 17B7761465 for ; Tue, 15 Jun 2021 16:01:01 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 17B7761465 Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=microchip.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@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=g/FOhY+qEp7kn3ZQZUGVGRopPLy3CzIbLsqO4TkbMdI=; b=uvO3dwTahPJZW/ I4dfxhDiNrWGuoYCxmOe/3+r8NMmhTHS9OfzyBcblZKw9KGQC7ZW2CG0x4BfuUaBlocwHU8+s++ZC dhuIS8EVOyrSNThKwtwoSExuCZ2m9BH9j8NG5BRpkVsiyqN1Ac6cIF3CZgmiQExNLupVq9g2uYTLJ 5Y5FKKlvWJMjEaXqZklivj7q9bpninAJPnzqt7MWzoeXdwz1X5/9lfrNJTnsTKKxoSVk4PireYjna WESiYY0e40cX4gospodoq4fheFyIrqSDVpDFCnjinZw9zu9fEOeoIPT+8MvsR3E+v/UMWNyoHnv1v AaVcsxXEgzyBdDPnyX1w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1ltBNR-0018H6-Nj; Tue, 15 Jun 2021 15:53:23 +0000 Received: from desiato.infradead.org ([2001:8b0:10b:1:d65d:64ff:fe57:4e05]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1lt9J1-000DEY-G1 for linux-arm-kernel@bombadil.infradead.org; Tue, 15 Jun 2021 13:40:40 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=Content-Transfer-Encoding:Content-Type :MIME-Version:Message-ID:Date:Subject:CC:To:From:Sender:Reply-To:Content-ID: Content-Description:In-Reply-To:References; bh=nrZv4ocVbvyOS6sfOGMAr3BKtpBy1b918Lx34AaIfEw=; b=KxxPyS4pGJvmvGamItxipLA8oW vVM1QB01R7P6v8RFUsnewh9XzhK+VJl9be7bxGIUHgGfcVie/cWFdfhD6axYWNziU3lfgrQ82S0ct BmblvOHHhFDMsUsCe+OJOIknf1UaCOPdeg/TxUv2B/IYPw6ItXJH1W9XcJIT8NXjyEOJ5lGdKknRv ogAji9AwkyV5FsY+f3NIkcVM0RJCadV62YRxUUu8el5j+ysaNEDA0Lxu8R7aOd9JSOJ0ZmGbVGdz0 ZBOFhY9Z1qlBOonwC4M4LSoPdUw8kimihxw+g3kxcBGGxGcdv6zFtecD9VeP4cgBINXUimVn82jNg E1lGZMMQ==; Received: from esa.microchip.iphmx.com ([68.232.154.123]) by desiato.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1lt4mU-007WyM-Mh for linux-arm-kernel@lists.infradead.org; Tue, 15 Jun 2021 08:50:56 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1623747053; x=1655283053; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=9b0yrD49PQCsO1lyUsJQBwEWd/f+MKJwcnBj+96927c=; b=sp/kGT2OOgi/iik5hho7d5EsiVRk4EoaFQIcros4bp4dkveY3n5V39ip d0hNp6NTgEIp1URhUeTJHLeFYrCRj8Y2v7EN/16p4QCyiEEAxgZ6TWPiG tWg3n5g+gDKCRb1uAWOlIjADWvC/n+PH9OJDOQ0VyuxAOYAXLyt9nN5Ng 4XjzcAZwfskyZCh6Xfr/G13JbRLpVVIYK8nmSbLJd9tTn1LQJj/HWEG5Z vkT45MwXwG+g+TBNMa35knIF2hVixgWdTKq5fDou4DzUClA/Vlihi1Tui 1kIj7ZZuXLv6m/kVElBy+8S1xtOcEHPsCPp9tthGOlUSKvIZywv/vAOKt Q==; IronPort-SDR: v7ff03hzlXDskGaA8czZoQD2/6fyyCSY2lH0a2c8zVF+XDXW1dPcJ8y4nK+E2GJ8Ey20+TkUTn WdP8nPQXuWoEMYXgwX8iPaIeDMTa9Wt4NjMLvx9urbkSmycwbL5F6Ik/1FkW8kgsDaIRHiZdOk gPav+1nfT7ZFApnFrKh8MVnXrb0L/b0HI+5mfUiKpc1cGLvuLT5UMEap0o9fP9DSulkXsQnj7G Ch82ypDtOi0mQvuKsObmCgNynuUgDTIKClCsQ904hlLpBzwtNB/zmJv/BOYX6z/JkoONNdM+MB 7NE= X-IronPort-AV: E=Sophos;i="5.83,275,1616482800"; d="scan'208";a="58958462" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa6.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 15 Jun 2021 01:50:46 -0700 Received: from chn-vm-ex01.mchp-main.com (10.10.85.143) by chn-vm-ex03.mchp-main.com (10.10.85.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Tue, 15 Jun 2021 01:50:46 -0700 Received: from den-dk-m31857.microchip.com (10.10.115.15) by chn-vm-ex01.mchp-main.com (10.10.85.143) with Microsoft SMTP Server id 15.1.2176.2 via Frontend Transport; Tue, 15 Jun 2021 01:50:43 -0700 From: Steen Hegelund To: "David S. Miller" , Jakub Kicinski CC: Steen Hegelund , Andrew Lunn , Russell King , "Microchip Linux Driver Support" , Alexandre Belloni , Madalin Bucur , Mark Einon , Masahiro Yamada , Arnd Bergmann , Philipp Zabel , "Simon Horman" , , , Subject: [PATCH net-next v4 00/10] Adding the Sparx5 Switch Driver Date: Tue, 15 Jun 2021 10:50:24 +0200 Message-ID: <20210615085034.1262457-1-steen.hegelund@microchip.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-20210615_095054_225600_7D1BE79A X-CRM114-Status: GOOD ( 19.70 ) 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 VGhpcyBzZXJpZXMgcHJvdmlkZXMgdGhlIE1pY3JvY2hpcCBTcGFyeDUgU3dpdGNoIERyaXZlcgoK VGhlIFNwYXJ4NSBDYXJyaWVyIEV0aGVybmV0IGFuZCBJbmR1c3RyaWFsIHN3aXRjaCBmYW1pbHkg ZGVsaXZlcnMgNjQKRXRoZXJuZXQgcG9ydHMgYW5kIHVwIHRvIDIwMCBHYnBzIG9mIHN3aXRjaGlu ZyBiYW5kd2lkdGguCgpJdCBwcm92aWRlcyBhIHJpY2ggc2V0IG9mIEV0aGVybmV0IHN3aXRjaGlu ZyBmZWF0dXJlcyBzdWNoIGFzIGhpZXJhcmNoaWNhbApRb1MsIGhhcmR3YXJlLWJhc2VkIE9BTSAg YW5kIHNlcnZpY2UgYWN0aXZhdGlvbiB0ZXN0aW5nLCBwcm90ZWN0aW9uCnN3aXRjaGluZywgSUVF RSAxNTg4LCBhbmQgU3luY2hyb25vdXMgRXRoZXJuZXQuCgpVc2luZyBwcm92aWRlciBicmlkZ2lu ZyAoUS1pbi1RKSBhbmQgTVBMUy9NUExTLVRQIHRlY2hub2xvZ3ksIGl0IGRlbGl2ZXJzCk1FRiBD RQoyLjAgRXRoZXJuZXQgdmlydHVhbCBjb25uZWN0aW9ucyAoRVZDcykgYW5kIGZlYXR1cmVzIGFk dmFuY2VkIFRDQU0KICBjbGFzc2lmaWNhdGlvbiBpbiBib3RoIGluZ3Jlc3MgYW5kIGVncmVzcy4K ClBlci1FVkMgZmVhdHVyZXMgaW5jbHVkZSBhZHZhbmNlZCBMMy1hd2FyZSBjbGFzc2lmaWNhdGlv biwgYSByaWNoIHNldCBvZgpzdGF0aXN0aWNzLCBPQU0gZm9yIGVuZC10by1lbmQgcGVyZm9ybWFu Y2UgbW9uaXRvcmluZywgYW5kIGR1YWwtcmF0ZQpwb2xpY2luZyBhbmQgc2hhcGluZy4KClRpbWUg c2Vuc2l0aXZlIG5ldHdvcmtpbmcgKFRTTikgaXMgc3VwcG9ydGVkIHRocm91Z2ggYSBjb21wcmVo ZW5zaXZlIHNldCBvZgpmZWF0dXJlcyBpbmNsdWRpbmcgZnJhbWUgcHJlZW1wdGlvbiwgY3V0LXRo cm91Z2gsIGZyYW1lIHJlcGxpY2F0aW9uIGFuZAplbGltaW5hdGlvbiBmb3IgcmVsaWFiaWxpdHks IGVuaGFuY2VkIHNjaGVkdWxpbmc6IGNyZWRpdC1iYXNlZCBzaGFwaW5nLAp0aW1lLWF3YXJlIHNo YXBpbmcsIGN5Y2xpYyBxdWV1aW5nLCBhbmQgZm9yd2FyZGluZywgYW5kIHBlci1zdHJlYW0gcG9s aWNpbmcKYW5kIGZpbHRlcmluZy4KClRvZ2V0aGVyIHdpdGggSUVFRSAxNTg4IGFuZCBJRUVFIDgw Mi4xQVMgc3VwcG9ydCwgdGhpcyBndWFyYW50ZWVzCmxvdy1sYXRlbmN5IGRldGVybWluaXN0aWMg bmV0d29ya2luZyBmb3IgRnJvbnRoYXVsLCBDYXJyaWVyLCBhbmQgSW5kdXN0cmlhbApFdGhlcm5l dC4KClRoZSBTcGFyeDUgc3dpdGNoIGZhbWlseSBjb25zaXN0cyBvZiBmb2xsb3dpbmcgU0tVczoK Ci0gVlNDNzU0NiBTcGFyeDUtNjQgdXAgdG8gNjQgR2JwcyBvZiBiYW5kd2lkdGggd2l0aCB0aGUg Zm9sbG93aW5nIHByaW1hcnkKICBwb3J0IGNvbmZpZ3VyYXRpb25zOgogIC0gNiAqMTBHCiAgLSAx NiAqIDIuNUcgKyAyICogMTBHCiAgLSAyNCAqIDFHICsgNCAqIDEwRwoKLSBWU0M3NTQ5IFNwYXJ4 NS05MCB1cCB0byA5MCBHYnBzIG9mIGJhbmR3aWR0aCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJpbWFy eQogIHBvcnQgY29uZmlndXJhdGlvbnM6CiAgLSA5ICogMTBHCiAgLSAxNiAqIDIuNUcgKyA0ICog MTBHCiAgLSA0OCAqIDFHICsgNCAqIDEwRwoKLSBWU0M3NTUyIFNwYXJ4NS0xMjggdXAgdG8gMTI4 IEdicHMgb2YgYmFuZHdpZHRoIHdpdGggdGhlIGZvbGxvd2luZyBwcmltYXJ5CiAgcG9ydCBjb25m aWd1cmF0aW9uczoKICAtIDEyICogMTBHCiAgLSAxNiAqIDIuNUcgKyA4ICogMTBHCiAgLSA0OCAq IDFHICsgOCAqIDEwRwoKLSBWU0M3NTU2IFNwYXJ4NS0xNjAgdXAgdG8gMTYwIEdicHMgb2YgYmFu ZHdpZHRoIHdpdGggdGhlIGZvbGxvd2luZyBwcmltYXJ5CiAgcG9ydCBjb25maWd1cmF0aW9uczoK ICAtIDE2ICogMTBHCiAgLSAxMCAqIDEwRyArIDIgKiAyNUcKICAtIDE2ICogMi41RyArIDEwICog MTBHCiAgLSA0OCAqIDFHICsgMTAgKiAxMEcKCi0gVlNDNzU1OCBTcGFyeDUtMjAwIHVwIHRvIDIw MCBHYnBzIG9mIGJhbmR3aWR0aCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJpbWFyeQogIHBvcnQgY29u ZmlndXJhdGlvbnM6CiAgLSAyMCAqIDEwRwogIC0gOCAqIDI1RwoKSW4gYWRkaXRpb24sIHRoZSBk ZXZpY2Ugc3VwcG9ydHMgb25lIDEwLzEwMC8xMDAwLzI1MDAvNTAwMCBNYnBzClNHTUlJL1NlckRl cyBub2RlIHByb2Nlc3NvciBpbnRlcmZhY2UgKE5QSSkgRXRoZXJuZXQgcG9ydC4KClRoZSBTcGFy eDUgc3VwcG9ydCBpcyBkZXZlbG9wZWQgb24gdGhlIFBDQjEzNCBhbmQgUENCMTM1IGV2YWx1YXRp b24gYm9hcmRzLgoKLSBQQ0IxMzQgbWFpbiBuZXR3b3JraW5nIGZlYXR1cmVzOgogIC0gMTJ4IFNG UCsgZnJvbnQgMTBHIG1vZHVsZSBzbG90cyAoY29ubmVjdGVkIHRvIFNwYXJ4NSB0aHJvdWdoIFNG SSkuCiAgLSA4eCBTRlAyOCBmcm9udCAyNUcgbW9kdWxlIHNsb3RzIChjb25uZWN0ZWQgdG8gU3Bh cng1IHRocm91Z2ggU0ZJIGhpZ2gKICAgIHNwZWVkKS4KICAtIE9wdGlvbmFsLCBvbmUgYWRkaXRp b25hbCAxMC8xMDAvMTAwMEJBU0UtVCAoUko0NSkgRXRoZXJuZXQgcG9ydAogICAgKG9uLWJvYXJk IFZTQzgyMTEgUEhZIGNvbm5lY3RlZCB0byBTcGFyeDUgdGhyb3VnaCBTR01JSSkuCgotIFBDQjEz NSBtYWluIG5ldHdvcmtpbmcgZmVhdHVyZXM6CiAgLSA0OHgxRyAoMTAvMTAwLzEwMDBNKSBSSjQ1 IGZyb250IHBvcnRzIHVzaW5nIDEyeFZTQzg1MTQgUXVhZFBIWeKAmXMgZWFjaAogICAgY29ubmVj dGVkIHRvIFZTQzc1NTggdGhyb3VnaCBRU0dNSUkuCiAgLSA0eDEwRyAoMUcvMi41Ry81Ry8xMEcp IFJKNDUgZnJvbnQgcG9ydHMgdXNpbmcgdGhlIEFRUjQwNyAxMEcgUXVhZFBIWQogICAgZWFjaCBw b3J0IGNvbm5lY3RzIHRvIFZTQzc1NTggdGhyb3VnaCBTRkkuCiAgLSA0eCBTRlAyOCAyNUcgbW9k dWxlIHNsb3RzIG9uIGJhY2sgY29ubmVjdGVkIHRvIFZTQzc1NTggdGhyb3VnaCBTRkkgaGlnaAog ICAgc3BlZWQuCiAgLSBPcHRpb25hbCwgb25lIGFkZGl0aW9uYWwgMUcgKDEwLzEwMC8xMDAwTSkg Uko0NSBwb3J0IHVzaW5nIGFuIG9uLWJvYXJkCiAgICBWU0M4MjExIFBIWSwgd2hpY2ggY2FuIGJl IGNvbm5lY3RlZCB0byBWU0M3NTU4IE5QSSBwb3J0IHRocm91Z2ggU0dNSUkKICAgIHVzaW5nIGEg bG9vcGJhY2sgYWRkLW9uIFBDQikKClRoaXMgc2VyaWVzIHByb3ZpZGVzIHN1cHBvcnQgZm9yOgog IC0gU0ZQcyBhbmQgREFDIGNhYmxlcyB2aWEgUEhZTElOSyB3aXRoIGEgbnVtYmVyIG9mIDVHLCAx MEcgYW5kIDI1RwogICAgZGV2aWNlcyBhbmQgbWVkaWEgdHlwZXMuCiAgLSBQb3J0IG1vZHVsZSBj b25maWd1cmF0aW9uIGZvciAxME0gdG8gMjVHIHNwZWVkcyB3aXRoIFNHTUlJLCBRU0dNSUksCiAg ICAxMDAwQkFTRVgsIDI1MDBCQVNFWCBhbmQgMTBHQkFTRVIgYXMgYXBwcm9wcmlhdGUgZm9yIHRo ZXNlIG1vZGVzLgogIC0gU2VyRGVzIGNvbmZpZ3VyYXRpb24gdmlhIHRoZSBTcGFyeDUgU2VyRGVz IGRyaXZlciAoc2VlIGJlbG93KS4KICAtIEhvc3QgbW9kZSBwcm92aWRpbmcgcmVnaXN0ZXIgYmFz ZWQgaW5qZWN0aW9uIGFuZCBleHRyYWN0aW9uLgogIC0gU3dpdGNoIG1vZGUgcHJvdmlkaW5nIE1B Qy9WTEFOIHRhYmxlIGxlYXJuaW5nIGFuZCBMYXllcjIgc3dpdGNoaW5nCiAgICBvZmZsb2FkZWQg dG8gdGhlIFNwYXJ4NSBzd2l0Y2guCiAgLSBTVFAgc3RhdGUsIFZMQU4gc3VwcG9ydCwgaG9zdC9i cmlkZ2UgcG9ydCBtb2RlLCBGb3J3YXJkaW5nIERCLCBhbmQKICAgIGNvbmZpZ3VyYXRpb24gYW5k IHN0YXRpc3RpY3MgdmlhIGV0aHRvb2wuCgpNb3JlIHN1cHBvcnQgd2lsbCBiZSBhZGRlZCBhdCBh IGxhdGVyIHN0YWdlLgoKVGhlIFNwYXJ4NSBDaGlwIFJlZ2lzdGVyIE1vZGVsIGNhbiBiZSBicm93 c2VkIGF0IHRoaXMgbG9jYXRpb246Cmh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb2NoaXAtdW5nL3Nw YXJ4LTVfcmVnaW5mbwphbmQgdGhlIGRhdGFzaGVldCBpcyBhdmFpbGFibGUgaGVyZToKaHR0cHM6 Ly93dzEubWljcm9jaGlwLmNvbS9kb3dubG9hZHMvZW4vRGV2aWNlRG9jL1NwYXJYLTVfRmFtaWx5 X0wyTDNfRW50ZXJwcmlzZV8xMEdfRXRoZXJuZXRfU3dpdGNoZXNfRGF0YXNoZWV0XzAwMDAzODIy Qi5wZGYKClRoZSBzZXJpZXMgZGVwZW5kcyBvbiB0aGUgZm9sbG93aW5nIHNlcmllcyBjdXJyZW50 bHkgb24gdGhlaXIgd2F5CmludG8gdGhlIGtlcm5lbDoKCi0gMjVHIEJhc2UtUiBwaHkgbW9kZQog IExpbms6IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL3IvMjAyMTA2MTExMjU0NTMuMzEzMzA4LTEt c3RlZW4uaGVnZWx1bmRAbWljcm9jaGlwLmNvbS8KLSBTcGFyeDUgUmVzZXQgRHJpdmVyCiAgTGlu azogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvci8yMDIxMDQxNjA4NDA1NC4yOTIyMzI3LTEtc3Rl ZW4uaGVnZWx1bmRAbWljcm9jaGlwLmNvbS8KCkNoYW5nZUxvZzoKdjQ6CiAgICAtIGJhc2ljIGRy aXZlcjoKICAgICAgICBVc2luZyBkZXZtX3Jlc2V0X2NvbnRyb2xfZ2V0X29wdGlvbmFsX3NoYXJl ZCB0byBnZXQgdGhlIHJlc2V0CiAgICAgICAgY29udHJvbCwgYW5kIGxldCB0aGUgcmVzZXQgZnJh bWV3b3JrIGNoZWNrIGlmIGl0IGlzIHZhbGlkLgogICAgLSBob3N0IG1vZGUgKHBoeWxpbmspOgog ICAgICAgIFVzZSB0aGUgUENTIG9wZXJhdGlvbnMgdG8gZ2V0IHN0YXRlIGFuZCB1cGRhdGUgY29u ZmlndXJhdGlvbi4KICAgICAgICBSZW1vdmVkIHRoZSBzZXR0aW5nIG9mIGludGVyZmFjZSBtb2Rl cy4gIExldCBwaHlsaW5rIGNvbnRyb2wgdGhpcy4KICAgICAgICBVc2luZyB0aGUgbmV3IDVnYmFz ZS1yIGFuZCAyNWdiYXNlLXIgbW9kZXMuCiAgICAgICAgVXNpbmcgYSBoZWxwZXIgZnVuY3Rpb24g dG8gY2hlY2sgaWYgb25lIG9mIHRoZSAzIGJhc2UtciBtb2RlcyBoYXMKICAgICAgICBiZWVuIHNl bGVjdGVkLgogICAgICAgIEN1cnJlbnRseSBpdCB3aWxsIG5vdCBiZSBwb3NzaWJsZSB0byBjaGFu Z2UgdGhlIGludGVyZmFjZSBtb2RlIGJ5CiAgICAgICAgY2hhbmdpbmcgdGhlIHNwZWVkIChlLmcg dmlhIGV0aHRvb2wpLiAgVGhpcyB3aWxsIGJlIGFkZGVkIGxhdGVyLgp2MzoKICAgIC0gYmFzaWMg ZHJpdmVyOgogICAgICAgIC0gcmVtb3ZlZCB1bm5lZWRlZCBicmFjZXMKICAgICAgICAtIHJlbGVh c2UgcmVmZXJlbmNlIHRvIHBvcnRzIG5vZGUgYWZ0ZXIgdXNlCiAgICAgICAgLSB1c2UgZGV2X2Vy cl9wcm9iZSB0byBoYW5kbGUgREVGRVIKICAgICAgICAtIHVwZGF0ZSBlcnJvciB2YWx1ZSB3aGVu IGJhaWxpbmcgb3V0IChhIGZldyBjYXNlcykKICAgICAgICAtIHVwZGF0ZWQgZm9ybWF0dGluZyBv ZiBwb3J0IHN0cnVjdCBhbmQgZ3JvdXBpbmcgb2YgYm9vbCB2YWx1ZXMKICAgICAgICAtIHNpbXBs aWZpZWQgdGhlIHNweDVfcm13IGFuZCBzcHg1X2luc3Rfcm13IGlubGluZSBmdW5jdGlvbnMKICAg IC0gaG9zdCBtb2RlIChuZXRkZXYpOgogICAgICAgIC0gcmVtb3ZlZCBsb2NrbGVzcyBmbGFnCiAg ICAgICAgLSBhZGRlZCBwb3J0IHRpbWVyIGluaXQKICAgIC0gaG9zdCBtb2RlIChwYWNrZXQgLSBt YW51YWwgaW5qZWN0aW9uKToKICAgICAgICAtIHVwZGF0ZWQgZXJyb3IgY291bnRlcnMgaW4gZXJy b3Igc2l0dWF0aW9ucwogICAgICAgIC0gaW1wbGVtZW50ZWQgdGltZXIgaGFuZGxpbmcgb2Ygd2F0 ZXJtYXJrIHRocmVzaG9sZDogc3RvcCBhbmQKICAgICAgICAgIHJlc3RhcnQgbmV0aWYgcXVldWVz LgogICAgICAgIC0gZml4ZWQgZXJyb3IgbWVzc2FnZSBoYW5kbGluZyAocmF0ZSBsaW1pdGVkKQog ICAgICAgIC0gZml4ZWQgY29tbWVudCBzdHlsZSBlcnJvcgogICAgICAgIC0gdXNlZCBESVZfUk9V TkRfVVAgbWFjcm8KICAgICAgICAtIHJlbW92ZWQgYSBkZWJ1ZyBtZXNzYWdlIGZvciBvcGVuIHBv cnRzCgp2MjoKICAgIC0gVXBkYXRlZCBiaW5kaW5nczoKICAgICAgICAtIGRyb3AgbWluSXRlbXMg Zm9yIHRoZSByZWcgcHJvcGVydHkKICAgIC0gU3RhdGlzdGljcyBpbXBsZW1lbnRhdGlvbjoKICAg ICAgICAtIFJlb3JnYW5pemVkIHN0YXRpc3RpY3MgaW50byBldGh0b29sIGdyb3VwczoKICAgICAg ICAgICAgZXRoLXBoeSwgZXRoLW1hYywgZXRoLWN0cmwsIHJtb24KICAgICAgICAgIGFzIGRlZmlu ZWQgYnkgdGhlIElFRUUgODAyLjMgY2F0ZWdvcmllcyBhbmQgUkZDIDI4MTkuCiAgICAgICAgLSBU aGUgcmVtYWluaW5nIHN0YXRpc3RpY3MgYXJlIHByb3ZpZGVkIGJ5IHRoZSBjbGFzc2ljIGV0aHRv b2wKICAgICAgICAgIHN0YXRpc3RpY3MgY29tbWFuZC4KICAgIC0gSG9zdG1vZGUgc3VwcG9ydDoK ICAgICAgICAtIFJlbW92ZWQgbmV0ZGV2IHJlbmFtaW5nCiAgICAgICAgLSBWYWxpZGF0ZSBldGhl cm5ldCBhZGRyZXNzIGluIHNwYXJ4NV9zZXRfbWFjX2FkZHJlc3MoKQoKU3RlZW4gSGVnZWx1bmQg KDEwKToKICBkdC1iaW5kaW5nczogbmV0OiBzcGFyeDU6IEFkZCBzcGFyeDUtc3dpdGNoIGJpbmRp bmdzCiAgbmV0OiBzcGFyeDU6IGFkZCB0aGUgYmFzaWMgc3Bhcng1IGRyaXZlcgogIG5ldDogc3Bh cng1OiBhZGQgaG9zdG1vZGUgd2l0aCBwaHlsaW5rIHN1cHBvcnQKICBuZXQ6IHNwYXJ4NTogYWRk IHBvcnQgbW9kdWxlIHN1cHBvcnQKICBuZXQ6IHNwYXJ4NTogYWRkIG1hY3RhYmxlIHN1cHBvcnQK ICBuZXQ6IHNwYXJ4NTogYWRkIHZsYW4gc3VwcG9ydAogIG5ldDogc3Bhcng1OiBhZGQgc3dpdGNo aW5nIHN1cHBvcnQKICBuZXQ6IHNwYXJ4NTogYWRkIGNhbGVuZGFyIGJhbmR3aWR0aCBhbGxvY2F0 aW9uIHN1cHBvcnQKICBuZXQ6IHNwYXJ4NTogYWRkIGV0aHRvb2wgY29uZmlndXJhdGlvbiBhbmQg c3RhdGlzdGljcyBzdXBwb3J0CiAgYXJtNjQ6IGR0czogc3Bhcng1OiBBZGQgdGhlIFNwYXJ4NSBz d2l0Y2ggbm9kZQoKIC4uLi9iaW5kaW5ncy9uZXQvbWljcm9jaGlwLHNwYXJ4NS1zd2l0Y2gueWFt bCB8ICAyMjYgKwogYXJjaC9hcm02NC9ib290L2R0cy9taWNyb2NoaXAvc3Bhcng1LmR0c2kgICAg IHwgICA5NCArLQogLi4uL2R0cy9taWNyb2NoaXAvc3Bhcng1X3BjYjEzNF9ib2FyZC5kdHNpICAg IHwgIDQ4MSArLQogLi4uL2R0cy9taWNyb2NoaXAvc3Bhcng1X3BjYjEzNV9ib2FyZC5kdHNpICAg IHwgIDYyMSArKy0KIGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnICAgICAg ICB8ICAgIDIgKwogZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL01ha2VmaWxlICAgICAg IHwgICAgMiArCiBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWcg fCAgICA5ICsKIC4uLi9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9NYWtlZmlsZSAgICB8 ICAgMTAgKwogLi4uL21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X2NhbGVuZGFyLmMgICAgICAgIHwg IDU5NiArKysKIC4uLi9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9ldGh0b29sLmMgICAgICAgICB8 IDEyMjcgKysrKysKIC4uLi9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWN0YWJsZS5jICAgICAg ICB8ICA1MDAgKysKIC4uLi9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMg ICB8ICA4NTcgKysrCiAuLi4vZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5o ICAgfCAgMzczICsrCiAuLi4vbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbl9yZWdzLmggICAg ICAgfCA0NjQyICsrKysrKysrKysrKysrKysrCiAuLi4vZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4 NS9zcGFyeDVfbmV0ZGV2LmMgfCAgMjQ5ICsKIC4uLi9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1 L3NwYXJ4NV9wYWNrZXQuYyB8ICAzMjAgKysKIC4uLi9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9w aHlsaW5rLmMgICAgICAgICB8ICAyMDkgKwogLi4uL2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUv c3Bhcng1X3BvcnQuYyAgIHwgMTE0OSArKysrCiAuLi4vZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4 NS9zcGFyeDVfcG9ydC5oICAgfCAgIDkzICsKIC4uLi9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9z d2l0Y2hkZXYuYyAgICAgICB8ICA1MDggKysKIC4uLi9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1 L3NwYXJ4NV92bGFuLmMgICB8ICAyMjQgKwogMjEgZmlsZXMgY2hhbmdlZCwgMTIzMDggaW5zZXJ0 aW9ucygrKSwgODQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlv bi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9taWNyb2NoaXAsc3Bhcng1LXN3aXRjaC55YW1sCiBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9L Y29uZmlnCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlw L3NwYXJ4NS9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L2V0aGVybmV0 L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X2NhbGVuZGFyLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9ldGh0b29sLmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3Nw YXJ4NV9tYWN0YWJsZS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvZXRoZXJuZXQv bWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5oCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFp bl9yZWdzLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2No aXAvc3Bhcng1L3NwYXJ4NV9uZXRkZXYuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0 L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3BhY2tldC5jCiBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcGh5bGlu ay5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3Nw YXJ4NS9zcGFyeDVfcG9ydC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvZXRoZXJu ZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcG9ydC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfc3dpdGNoZGV2LmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3Nw YXJ4NV92bGFuLmMKCi0tIAoyLjMyLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0t a2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFp bG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==