Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1205063 > unrolled thread

Re: [PATCH v2] staging: fsl-mc: add DPAA2 overview readme

Started byTillmann Heidsieck <theidsieck@leenox.de>
First post2015-08-11 13:30 +0200
Last post2015-08-12 03:10 +0200
Articles 2 — 2 participants

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: [PATCH v2] staging: fsl-mc: add DPAA2 overview readme Tillmann Heidsieck <theidsieck@leenox.de> - 2015-08-11 13:30 +0200
    RE: [PATCH v2] staging: fsl-mc: add DPAA2 overview readme Stuart Yoder <stuart.yoder@freescale.com> - 2015-08-12 03:10 +0200

#1205063 — Re: [PATCH v2] staging: fsl-mc: add DPAA2 overview readme

FromTillmann Heidsieck <theidsieck@leenox.de>
Date2015-08-11 13:30 +0200
SubjectRe: [PATCH v2] staging: fsl-mc: add DPAA2 overview readme
Message-ID<pWfUJ-3Em-7@gated-at.bofh.it>
Hi Stuart,

I am by no means a native speaker, but I have proof-read my fair share of articles and theses, so here are a bunch of suggestions which might or might not help improve you document.

On 07.08.2015 03:09, Stuart Yoder wrote:
> add README file providing an overview of the DPAA2 architecture
> and how it is integrated in Linux
>
> Signed-off-by: Stuart Yoder <stuart.yoder@freescale.com>
> ---
> -v2: added changelog text
>
>  drivers/staging/fsl-mc/README.txt | 364 ++++++++++++++++++++++++++++++++++++++
>  drivers/staging/fsl-mc/TODO       |   4 -
>  2 files changed, 364 insertions(+), 4 deletions(-)
>  create mode 100644 drivers/staging/fsl-mc/README.txt
>
> diff --git a/drivers/staging/fsl-mc/README.txt b/drivers/staging/fsl-mc/README.txt
> new file mode 100644
> index 0000000..8214102
> --- /dev/null
> +++ b/drivers/staging/fsl-mc/README.txt
> @@ -0,0 +1,364 @@
> +Copyright (C) 2015 Freescale Semiconductor Inc.
> +
> +DPAA2 (Data Path Acceleration Architecture Gen2)
> +------------------------------------------------
> +
> +This document provides an overview of the Freescale DPAA2 architecture
> +and how it is integrated into the Linux kernel.
> +
> +Contents summary
> +   -DPAA2 overview
> +   -Overview of DPAA2 objects
> +   -DPAA2 Linux driver architecture overview
> +        -bus driver
> +        -dprc driver

- DPRC driver

> +        -allocator
> +        -dpio driver

- DPIO driver

> +        -Ethernet
> +        -mac
mac -> MAC
> +
> +DPAA2 Overview
> +--------------
> +
> +DPAA2 is a hardware architecture designed for high-speeed network
> +packet processing.  DPAA2 consists of sophisticated mechanisms for
> +processing Ethernet packets, queue management, buffer management,
> +autonomous L2 switching, virtual Ethernet bridging, and accelerator
> +(e.g. crypto) sharing.
> +
> +A DPAA2 hardware component called the Management Complex (or MC) manages the
> +DPAA2 hardware resources.  The MC provides an object-based abstraction for
> +software drivers to use the DPAA2 hardware.
> +
> +The MC uses DPAA2 hardware resources such as queues, buffer pools, and
> +network ports to create functional objects/devices such as network
> +interfaces, an L2 switch, or accelerator instances.
> +
> +The MC provides memory-mapped I/O command interfaces (MC portals)
> +which DPAA2 software drivers use to operate on DPAA2 objects:
> +
> +         +--------------------------------------+
> +         |                  OS                  |
> +         |                        DPAA2 drivers |
> +         |                             |        |
> +         +-----------------------------|--------+
> +                                       |
> +                                       | (create,discover,connect
> +                                       |  config,use,destroy)
> +                                       |
> +                         DPAA2         |
> +         +------------------------| mc portal |-+
> +         |                             |        |
> +         |   +- - - - - - - - - - - - -V- - -+  |
> +         |   |                               |  |
> +         |   |   Management Complex (MC)     |  |
> +         |   |                               |  |
> +         |   +- - - - - - - - - - - - - - - -+  |
> +         |                                      |
> +         | Hardware                  Hardware   |
> +         | Resources                 Objects    |
> +         | ---------                 -------    |
> +         | -queues                   -DPRC      |
> +         | -buffer pools             -DPMCP     |
> +         | -Eth MACs/ports           -DPIO      |
> +         | -network interface        -DPNI      |
> +         |  profiles                 -DPMAC     |
> +         | -queue portals            -DPBP      |
> +         | -MC portals                ...       |
> +         |  ...                                 |
> +         |                                      |
> +         +--------------------------------------+
> +
> +The MC mediates operations such as create, discover,
> +connect, configuration, and destroy.  Fast-path operations
> +on data, such as packet transmit/receive, are not mediated by
> +the MC and are done directly using memory mapped regions in
> +DPIO objects.
> +
> +Overview of DPAA2 Objects
> +-------------------------
> +The section provides a brief overview of some key objects
> +in the DPAA2 hardware.  A simple scenario is described illustrating
> +the objects involved in creating a network interfaces.
> +
> +-DPRC (Datapath Resource Container)
> +
> +    A DPRC is an container object that holds all the other

... is a container ...

> +    types of DPAA2 objects.  In the example diagram below there
> +    are 8 objects of 5 types (DPMCP, DPIO, DPBP, DPNI, and DPMAC)
> +    in the container.
> +
> +    +---------------------------------------------------------+
> +    | DPRC                                                    |
> +    |                                                         |
> +    |  +-------+  +-------+  +-------+  +-------+  +-------+  |
> +    |  | DPMCP |  | DPIO  |  | DPBP  |  | DPNI  |  | DPMAC |  |
> +    |  +-------+  +-------+  +-------+  +---+---+  +---+---+  |
> +    |  | DPMCP |  | DPIO  |                                   |
> +    |  +-------+  +-------+                                   |
> +    |  | DPMCP |                                              |
> +    |  +-------+                                              |
> +    |                                                         |
> +    +---------------------------------------------------------+
> +
> +    From the point of view of an OS, a DPRC is bus-like.  Like

maybe replace "is bus-like" with "behaves similar to a bus" or "can be viewed as a bus"

> +    a plug-and-play bus, such as PCI, DPRC commands can be used to

maybe replace "Like a pnp bus..." with "Similar to a plug-and-play bus, such as PCI, DPRC ..."

> +    enumerate the contents of the DPRC, discover the hardware
> +    objects present (including mappable regions and interrupts).
> +
> +     dprc.1 (bus)
> +       |
> +       +--+--------+-------+-------+-------+
> +          |        |       |       |       |
> +        dpmcp.1  dpio.1  dpbp.1  dpni.1  dpmac.1
> +        dpmcp.2  dpio.2
> +        dpmcp.3
> +
> +    Hardware objects can be created and destroyed dynamically, providing
> +    the ability to hot plug/unplug objects in and out of the DPRC.
> +
> +    A DPRC has a mappable mmio region (an MC portal) that can be used

- mmio -> MMIO (not sure whether mappable MMIO is redundant or not)
- a MC portal

> +    to send MC commands.  It has an interrupt for status events (like
> +    hotplug).
> +
> +    All objects in a container share the same hardware "isolation context".
> +    This means that with respect to an IOMMU the isolation granularity
> +    is at the DPRC (container) level, not at the individual object
> +    level.
> +
> +    DPRCs can be defined statically and populated with objects
> +    via a config file passed to the MC when firmware starts
> +    it.  There is also a Linux user space tool called "restool"
> +    that can be used to create/destroy containers and objects
> +    dynamically.
> +
> +-DPAA2 Objects for an Ethernet Network Interface
> +
> +    A typical Ethernet NIC is monolithic-- the NIC device contains TX/RX
> +    queuing mechanisms, configuration mechanisms, buffer management,
> +    physical ports, and interrupts.  DPAA2 uses a more granular approach
> +    utilizing multiple hardware objects.  Each object has specialized
> +    functions, and are used together by software to provide Ethernet network

Each object provides specialized functions. Groups of these objects are used by the software to provide Ethernet network interface functionality.

> +    interface functionality.  This approach provides efficient use of finite
> +    hardware resources, flexibility, and performance advantages.
> +
> +    The diagram below shows the objects needed for a simple
> +    network interface configuration on a system with 2 CPUs.
> +
> +              +---+---+ +---+---+
> +                 CPU0     CPU1
> +              +---+---+ +---+---+
> +                  |         |
> +              +---+---+ +---+---+
> +                 DPIO     DPIO
> +              +---+---+ +---+---+
> +                    \     /
> +                     \   /
> +                      \ /
> +                   +---+---+
> +                      DPNI  --- DPBP,DPMCP
> +                   +---+---+
> +                       |
> +                       |
> +                   +---+---+
> +                     DPMAC
> +                   +---+---+
> +                       |
> +                    port/PHY
> +
> +    Below the objects are described.  For each object a brief description

The objects depicted in this figure are described below.

> +    is provided along with a summary of the kinds of operations the object
> +    supports and a summary of key resources of the object (mmio regions
> +    and irqs).

mmio -> MMIO
irqs -> IRQs

> +
> +       -DPMAC (Datapath Ethernet MAC): represents an Ethernet MAC, a
> +        hardware device that connects to an Ethernet PHY and allows
> +        physical transmission and reception of Ethernet frames.
> +           -mmio regions: none

mmio -> MMIO

> +           -irqs: dpni link change

irqs -> IRQs
dpni -> DPNI

> +           -commands: set link up/down, link config, get stats,
> +             irq config, enable, reset

irq -> IRQ

> +
> +       -DPNI (Datapath Network Interface): contains TX/RX queues,
> +        network interface configuration, and rx buffer pool configuration

rx -> RX

> +        mechanisms.
> +           -mmio regions: none

mmio -> MMIO

> +           -irqs: link state

irqs -> IRQs

> +           -commands: port config, offload config, queue config,
> +            parse/classify config, irq config, enable, reset

irq -> IRQ

> +
> +       -DPIO (Datapath I/O): provides interfaces to enqueue and dequeue
> +        packets and do hardware buffer pool management operations.  For
> +        optimum performance there is typically DPIO per CPU.  This allows

For optimum performance there is typically one DPIO assigned to each CPU

> +        each CPU to perform simultaneous enqueue/dequeue operations.

This allows different CPUs to simultaneously perform enqueue/dequeue operations.

> +           -mmio regions: queue operations, buffer mgmt

mmio -> MMIO
mgmt -> management

> +           -irqs: data availability, congestion notification, buffer
> +                  pool depletion

irqs -> IRQs

> +           -commands: irq config, enable, reset

irq -> IRQ

> +
> +       -DPBP (Datapath Buffer Pool): represents a hardware buffer
> +        pool.
> +           -mmio regions: none
> +           -irqs: none
> +           -commands: enable, reset

mmio -> MMIO
irqs -> IRQs

> +
> +       -DPMCP (Datapath MC Portal): provides an MC command portal.
> +        Used by drivers to send commands to the MC to manage
> +        objects.
> +           -mmio regions: MC command portal
> +           -irqs: command completion
> +           -commands: irq config, enable, reset

mmio -> MMIO
irqs -> IRQs
irq -> IRQ

> +
> +    Object Connections
> +    ------------------
> +    Some objects have explicit relationships that must
> +    be configured:
> +
> +       -DPNI <--> DPMAC
> +       -DPNI <--> DPNI
> +       -DPNI <--> L2-switch-port
> +          A DPNI must be connected to something such as a DPMAC,
> +          another DPNI, or L2 switch port.  The DPNI connection
> +          is made via a DPRC command.
> +
> +              +-------+  +-------+
> +              | DPNI  |  | DPMAC |
> +              +---+---+  +---+---+
> +                  |          |
> +                  +==========+
> +
> +       -DPNI <--> DPBP
> +          A network interface requires a 'buffer pool' (DPBP
> +          object) which provides a list of pointers to memory
> +          where received Ethernet data is to be copied.  The
> +          Ethernet driver configures the DPBPs associated with
> +          the network interface.
> +
> +    Interrupts
> +    ----------
> +    All interrupts generated by DPAA2 objects are message
> +    interrupts.  At the hardware level message interrupts
> +    generated by devices will normally have 3 components--
> +    1) a non-spoofable 'device-id' expressed on the hardware
> +    bus, 2) an address, 3) a data value.
> +
> +    In the case of DPAA2 devices/objects, all objects in the
> +    same container/DPRC share the same 'device-id'.
> +    For ARM-based SoC this is the same as the stream ID.
> +
> +
> +DPAA2 Linux Driver Overview
> +---------------------------
> +
> +This section provides an overview of the Linux kernel drivers for
> +DPAA2-- 1) the bus driver and associated "DPAA2 infrastructure"
> +drivers and 2) functional object drivers (such as Ethernet).
> +
> +As described previously, a DPRC is a container that holds the other
> +types of DPAA2 objects.  It is functionally similar to a plug-and-play
> +bus controller.
> +
> +Each object in the DPRC is a Linux "device" and is bound to a driver.
> +The diagram below shows the Linux drivers involved in a networking
> +scenario and the objects bound to each driver.  A brief description
> +of each driver follows.
> +
> +                                             +------------+
> +                                             | OS Network |
> +                                             |   Stack    |
> +                 +------------+              +------------+
> +                 | Allocator  |. . . . . . . |  Ethernet  |
> +                 |(dpmcp,dpbp)|              |   (dpni)   |
> +                 +-.----------+              +---+---+----+
> +                  .          .                   ^   |
> +                 .            .     <data avail, |   |<enqueue,
> +                .              .     tx confirm> |   | dequeue>
> +    +-------------+             .                |   |
> +    | DPRC driver |              .           +---+---V----+     +---------+
> +    |   (dprc)    |               . . . . . .| DPIO driver|     |   MAC   |
> +    +----------+--+                          |  (dpio)    |     | (dpmac) |
> +               |                             +------+-----+     +-----+---+
> +               |<dev add/remove>                    |                 |
> +               |                                    |                 |
> +          +----+--------------+                     |              +--+---+
> +          |   mc-bus driver   |                     |              | PHY  |
> +          |                   |                     |              |driver|
> +          | /fsl-mc@80c000000 |                     |              +--+---+
> +          +-------------------+                     |                 |
> +                                                    |                 |
> + ================================ HARDWARE =========|=================|======
> +                                                  DPIO                |
> +                                                    |                 |
> +                                                  DPNI---DPBP         |
> +                                                    |                 |
> +                                                  DPMAC               |
> +                                                    |                 |
> +                                                   PHY ---------------+
> + ===================================================|========================
> +
> +A brief description of each driver is provided below.
> +
> +    mc-bus driver
> +    -------------
mc-bus -> MC-Bus or MC-bus
> +    The mc-bus driver is a platform driver and is probed from an
> +    "/fsl-mc@xxxx" node in the device tree passed in by boot firmware.
> +    It is responsible for bootstrapping the DPAA2 kernel infrastructure.
> +    Key functions include:
> +       -registering a new bus type named "fsl-mc" with the kernel,
> +        and implementing bus call-backs (e.g. match/uevent/dev_groups)
> +       -implemeting APIs for DPAA2 driver registration and for device
> +        add/remove
> +       -creates an MSI irq domain
irq -> IRQ
> +       -do a device add of the 'root' DPRC device, which is needed
> +        to bootstrap things
> +
> +    DPRC driver
> +    -----------
> +    The dprc-driver is bound DPRC objects and does runtime management
> +    of a bus instance.  It performs the initial bus scan of the DPRC
> +    and handles interrupts for container events such as hot plug.
> +
> +    Allocator
> +    ----------
> +    Certain objects such as DPMCP and DPBP are generic and fungible,
> +    and are intended to be used by other drivers.  For example,
> +    the DPAA2 Ethernet driver needs:
> +       -DPMCPs to send MC commands, to configure network interfaces
> +       -DPBPs for network buffer pools
> +
> +    The allocator driver registers for these allocatable object types
> +    and those objects are bound to the allocator when the bus is probed.
> +    The allocator maintains a pool of objects that are available for
> +    allocation by other DPAA2 drivers.
> +
> +    DPIO driver
> +    -----------
> +    The DPIO driver is bound to DPIO objects and provides services that allow
> +    other drivers such as the Ethernet driver to receive and transmit data.
> +    Key services include:
> +        -data availability notifications
> +        -hardware queuing operations (enqueue and dequeue of data)
> +        -hardware buffer pool management
> +
> +    There is typically one DPIO object per physical CPU for optimum
> +    performance, allowing each CPU to simultaneously enqueue
> +    and dequeue data.

allowing different CPUs to simultaneously ...

> +
> +    The DPIO driver operates on behalf of all DPAA2 drivers
> +    active in the kernel--  Ethernet, crypto, compression,
> +    etc.
> +
> +    Ethernet
> +    --------
> +    The Ethernet driver is bound to a DPNI and implements the kernel
> +    interfaces needed to connect the DPAA2 network interface to
> +    the network stack.
> +
> +    Each DPNI corresponds to a Linux network interface.
> +
> +    MAC driver
> +    ----------
> +    An Ethernet PHY is an off-chip, board specific component and is managed
> +    by the appropriate PHY driver via an mdio bus.  The MAC driver
> +    plays a role of being a proxy between the PHY driver and the
> +    MC.  It does this proxy via the MC commands to a DPMAC object.
> diff --git a/drivers/staging/fsl-mc/TODO b/drivers/staging/fsl-mc/TODO
> index c29516b..3894368 100644
> --- a/drivers/staging/fsl-mc/TODO
> +++ b/drivers/staging/fsl-mc/TODO
> @@ -1,7 +1,3 @@
> -* Add README file (with ASCII art) describing relationships between
> -  DPAA2 objects and how combine them to make a NIC, an LS2 switch, etc.
> -  Also, define all acronyms used.
> -
>  * Decide if multiple root fsl-mc buses will be supported per Linux instance,
>    and if so add support for this.
>  

Cheers
    Tillmann

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [next] | [standalone]


#1205530

FromStuart Yoder <stuart.yoder@freescale.com>
Date2015-08-12 03:10 +0200
Message-ID<pWsIi-5r3-3@gated-at.bofh.it>
In reply to#1205063
DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogVGlsbG1hbm4gSGVpZHNp
ZWNrIFttYWlsdG86dGhlaWRzaWVja0BsZWVub3guZGVdDQo+IFNlbnQ6IFR1ZXNkYXksIEF1Z3Vz
dCAxMSwgMjAxNSA2OjAxIEFNDQo+IFRvOiBZb2RlciBTdHVhcnQtQjA4MjQ4OyBncmVna2hAbGlu
dXhmb3VuZGF0aW9uLm9yZzsgUml2ZXJhIEpvc2UtQjQ2NDgyOyBrYXR6IEl0YWktUk0wNTIwMg0K
PiBDYzogZGV2ZWxAZHJpdmVyZGV2Lm9zdW9zbC5vcmc7IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5l
bC5vcmc7IGFncmFmQHN1c2UuZGU7IGFybmRAYXJuZGIuZGUNCj4gU3ViamVjdDogUmU6IFtQQVRD
SCB2Ml0gc3RhZ2luZzogZnNsLW1jOiBhZGQgRFBBQTIgb3ZlcnZpZXcgcmVhZG1lDQo+IA0KPiBI
aSBTdHVhcnQsDQo+IA0KPiBJIGFtIGJ5IG5vIG1lYW5zIGEgbmF0aXZlIHNwZWFrZXIsIGJ1dCBJ
IGhhdmUgcHJvb2YtcmVhZCBteSBmYWlyIHNoYXJlIG9mIGFydGljbGVzIGFuZCB0aGVzZXMsIHNv
IGhlcmUgYXJlIGENCj4gYnVuY2ggb2Ygc3VnZ2VzdGlvbnMgd2hpY2ggbWlnaHQgb3IgbWlnaHQg
bm90IGhlbHAgaW1wcm92ZSB5b3UgZG9jdW1lbnQuDQo+IA0KPiBPbiAwNy4wOC4yMDE1IDAzOjA5
LCBTdHVhcnQgWW9kZXIgd3JvdGU6DQo+ID4gYWRkIFJFQURNRSBmaWxlIHByb3ZpZGluZyBhbiBv
dmVydmlldyBvZiB0aGUgRFBBQTIgYXJjaGl0ZWN0dXJlDQo+ID4gYW5kIGhvdyBpdCBpcyBpbnRl
Z3JhdGVkIGluIExpbnV4DQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBTdHVhcnQgWW9kZXIgPHN0
dWFydC55b2RlckBmcmVlc2NhbGUuY29tPg0KPiA+IC0tLQ0KPiA+IC12MjogYWRkZWQgY2hhbmdl
bG9nIHRleHQNCj4gPg0KPiA+ICBkcml2ZXJzL3N0YWdpbmcvZnNsLW1jL1JFQURNRS50eHQgfCAz
NjQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gPiAgZHJpdmVycy9z
dGFnaW5nL2ZzbC1tYy9UT0RPICAgICAgIHwgICA0IC0NCj4gPiAgMiBmaWxlcyBjaGFuZ2VkLCAz
NjQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0
IGRyaXZlcnMvc3RhZ2luZy9mc2wtbWMvUkVBRE1FLnR4dA0KPiA+DQo+ID4gZGlmZiAtLWdpdCBh
L2RyaXZlcnMvc3RhZ2luZy9mc2wtbWMvUkVBRE1FLnR4dCBiL2RyaXZlcnMvc3RhZ2luZy9mc2wt
bWMvUkVBRE1FLnR4dA0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAw
MC4uODIxNDEwMg0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9kcml2ZXJzL3N0YWdpbmcv
ZnNsLW1jL1JFQURNRS50eHQNCj4gPiBAQCAtMCwwICsxLDM2NCBAQA0KPiA+ICtDb3B5cmlnaHQg
KEMpIDIwMTUgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IgSW5jLg0KPiA+ICsNCj4gPiArRFBBQTIg
KERhdGEgUGF0aCBBY2NlbGVyYXRpb24gQXJjaGl0ZWN0dXJlIEdlbjIpDQo+ID4gKy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ICsNCj4gPiArVGhp
cyBkb2N1bWVudCBwcm92aWRlcyBhbiBvdmVydmlldyBvZiB0aGUgRnJlZXNjYWxlIERQQUEyIGFy
Y2hpdGVjdHVyZQ0KPiA+ICthbmQgaG93IGl0IGlzIGludGVncmF0ZWQgaW50byB0aGUgTGludXgg
a2VybmVsLg0KPiA+ICsNCj4gPiArQ29udGVudHMgc3VtbWFyeQ0KPiA+ICsgICAtRFBBQTIgb3Zl
cnZpZXcNCj4gPiArICAgLU92ZXJ2aWV3IG9mIERQQUEyIG9iamVjdHMNCj4gPiArICAgLURQQUEy
IExpbnV4IGRyaXZlciBhcmNoaXRlY3R1cmUgb3ZlcnZpZXcNCj4gPiArICAgICAgICAtYnVzIGRy
aXZlcg0KPiA+ICsgICAgICAgIC1kcHJjIGRyaXZlcg0KPiANCj4gLSBEUFJDIGRyaXZlcg0KPiAN
Cj4gPiArICAgICAgICAtYWxsb2NhdG9yDQo+ID4gKyAgICAgICAgLWRwaW8gZHJpdmVyDQo+IA0K
PiAtIERQSU8gZHJpdmVyDQo+IA0KPiA+ICsgICAgICAgIC1FdGhlcm5ldA0KPiA+ICsgICAgICAg
IC1tYWMNCj4gbWFjIC0+IE1BQw0KPiA+ICsNCj4gPiArRFBBQTIgT3ZlcnZpZXcNCj4gPiArLS0t
LS0tLS0tLS0tLS0NCj4gPiArDQo+ID4gK0RQQUEyIGlzIGEgaGFyZHdhcmUgYXJjaGl0ZWN0dXJl
IGRlc2lnbmVkIGZvciBoaWdoLXNwZWVlZCBuZXR3b3JrDQo+ID4gK3BhY2tldCBwcm9jZXNzaW5n
LiAgRFBBQTIgY29uc2lzdHMgb2Ygc29waGlzdGljYXRlZCBtZWNoYW5pc21zIGZvcg0KPiA+ICtw
cm9jZXNzaW5nIEV0aGVybmV0IHBhY2tldHMsIHF1ZXVlIG1hbmFnZW1lbnQsIGJ1ZmZlciBtYW5h
Z2VtZW50LA0KPiA+ICthdXRvbm9tb3VzIEwyIHN3aXRjaGluZywgdmlydHVhbCBFdGhlcm5ldCBi
cmlkZ2luZywgYW5kIGFjY2VsZXJhdG9yDQo+ID4gKyhlLmcuIGNyeXB0bykgc2hhcmluZy4NCj4g
PiArDQo+ID4gK0EgRFBBQTIgaGFyZHdhcmUgY29tcG9uZW50IGNhbGxlZCB0aGUgTWFuYWdlbWVu
dCBDb21wbGV4IChvciBNQykgbWFuYWdlcyB0aGUNCj4gPiArRFBBQTIgaGFyZHdhcmUgcmVzb3Vy
Y2VzLiAgVGhlIE1DIHByb3ZpZGVzIGFuIG9iamVjdC1iYXNlZCBhYnN0cmFjdGlvbiBmb3INCj4g
PiArc29mdHdhcmUgZHJpdmVycyB0byB1c2UgdGhlIERQQUEyIGhhcmR3YXJlLg0KPiA+ICsNCj4g
PiArVGhlIE1DIHVzZXMgRFBBQTIgaGFyZHdhcmUgcmVzb3VyY2VzIHN1Y2ggYXMgcXVldWVzLCBi
dWZmZXIgcG9vbHMsIGFuZA0KPiA+ICtuZXR3b3JrIHBvcnRzIHRvIGNyZWF0ZSBmdW5jdGlvbmFs
IG9iamVjdHMvZGV2aWNlcyBzdWNoIGFzIG5ldHdvcmsNCj4gPiAraW50ZXJmYWNlcywgYW4gTDIg
c3dpdGNoLCBvciBhY2NlbGVyYXRvciBpbnN0YW5jZXMuDQo+ID4gKw0KPiA+ICtUaGUgTUMgcHJv
dmlkZXMgbWVtb3J5LW1hcHBlZCBJL08gY29tbWFuZCBpbnRlcmZhY2VzIChNQyBwb3J0YWxzKQ0K
PiA+ICt3aGljaCBEUEFBMiBzb2Z0d2FyZSBkcml2ZXJzIHVzZSB0byBvcGVyYXRlIG9uIERQQUEy
IG9iamVjdHM6DQo+ID4gKw0KPiA+ICsgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0rDQo+ID4gKyAgICAgICAgIHwgICAgICAgICAgICAgICAgICBPUyAgICAg
ICAgICAgICAgICAgIHwNCj4gPiArICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIERQ
QUEyIGRyaXZlcnMgfA0KPiA+ICsgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgICAgICB8DQo+ID4gKyAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LXwtLS0tLS0tLSsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChjcmVhdGUs
ZGlzY292ZXIsY29ubmVjdA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICBjb25maWcsdXNlLGRlc3Ryb3kpDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIERQQUEyICAg
ICAgICAgfA0KPiA+ICsgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCBtYyBwb3J0
YWwgfC0rDQo+ID4gKyAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg
ICAgIHwNCj4gPiArICAgICAgICAgfCAgICstIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtVi0gLSAt
KyAgfA0KPiA+ICsgICAgICAgICB8ICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICB8DQo+ID4gKyAgICAgICAgIHwgICB8ICAgTWFuYWdlbWVudCBDb21wbGV4IChNQykgICAgIHwg
IHwNCj4gPiArICAgICAgICAgfCAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
fA0KPiA+ICsgICAgICAgICB8ICAgKy0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0rICB8
DQo+ID4gKyAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwN
Cj4gPiArICAgICAgICAgfCBIYXJkd2FyZSAgICAgICAgICAgICAgICAgIEhhcmR3YXJlICAgfA0K
PiA+ICsgICAgICAgICB8IFJlc291cmNlcyAgICAgICAgICAgICAgICAgT2JqZWN0cyAgICB8DQo+
ID4gKyAgICAgICAgIHwgLS0tLS0tLS0tICAgICAgICAgICAgICAgICAtLS0tLS0tICAgIHwNCj4g
PiArICAgICAgICAgfCAtcXVldWVzICAgICAgICAgICAgICAgICAgIC1EUFJDICAgICAgfA0KPiA+
ICsgICAgICAgICB8IC1idWZmZXIgcG9vbHMgICAgICAgICAgICAgLURQTUNQICAgICB8DQo+ID4g
KyAgICAgICAgIHwgLUV0aCBNQUNzL3BvcnRzICAgICAgICAgICAtRFBJTyAgICAgIHwNCj4gPiAr
ICAgICAgICAgfCAtbmV0d29yayBpbnRlcmZhY2UgICAgICAgIC1EUE5JICAgICAgfA0KPiA+ICsg
ICAgICAgICB8ICBwcm9maWxlcyAgICAgICAgICAgICAgICAgLURQTUFDICAgICB8DQo+ID4gKyAg
ICAgICAgIHwgLXF1ZXVlIHBvcnRhbHMgICAgICAgICAgICAtRFBCUCAgICAgIHwNCj4gPiArICAg
ICAgICAgfCAtTUMgcG9ydGFscyAgICAgICAgICAgICAgICAuLi4gICAgICAgfA0KPiA+ICsgICAg
ICAgICB8ICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+ID4gKyAgICAg
ICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gPiArICAgICAg
ICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPiA+ICsNCj4gPiAr
VGhlIE1DIG1lZGlhdGVzIG9wZXJhdGlvbnMgc3VjaCBhcyBjcmVhdGUsIGRpc2NvdmVyLA0KPiA+
ICtjb25uZWN0LCBjb25maWd1cmF0aW9uLCBhbmQgZGVzdHJveS4gIEZhc3QtcGF0aCBvcGVyYXRp
b25zDQo+ID4gK29uIGRhdGEsIHN1Y2ggYXMgcGFja2V0IHRyYW5zbWl0L3JlY2VpdmUsIGFyZSBu
b3QgbWVkaWF0ZWQgYnkNCj4gPiArdGhlIE1DIGFuZCBhcmUgZG9uZSBkaXJlY3RseSB1c2luZyBt
ZW1vcnkgbWFwcGVkIHJlZ2lvbnMgaW4NCj4gPiArRFBJTyBvYmplY3RzLg0KPiA+ICsNCj4gPiAr
T3ZlcnZpZXcgb2YgRFBBQTIgT2JqZWN0cw0KPiA+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQo+ID4gK1RoZSBzZWN0aW9uIHByb3ZpZGVzIGEgYnJpZWYgb3ZlcnZpZXcgb2Ygc29tZSBrZXkg
b2JqZWN0cw0KPiA+ICtpbiB0aGUgRFBBQTIgaGFyZHdhcmUuICBBIHNpbXBsZSBzY2VuYXJpbyBp
cyBkZXNjcmliZWQgaWxsdXN0cmF0aW5nDQo+ID4gK3RoZSBvYmplY3RzIGludm9sdmVkIGluIGNy
ZWF0aW5nIGEgbmV0d29yayBpbnRlcmZhY2VzLg0KPiA+ICsNCj4gPiArLURQUkMgKERhdGFwYXRo
IFJlc291cmNlIENvbnRhaW5lcikNCj4gPiArDQo+ID4gKyAgICBBIERQUkMgaXMgYW4gY29udGFp
bmVyIG9iamVjdCB0aGF0IGhvbGRzIGFsbCB0aGUgb3RoZXINCj4gDQo+IC4uLiBpcyBhIGNvbnRh
aW5lciAuLi4NCj4gDQo+ID4gKyAgICB0eXBlcyBvZiBEUEFBMiBvYmplY3RzLiAgSW4gdGhlIGV4
YW1wbGUgZGlhZ3JhbSBiZWxvdyB0aGVyZQ0KPiA+ICsgICAgYXJlIDggb2JqZWN0cyBvZiA1IHR5
cGVzIChEUE1DUCwgRFBJTywgRFBCUCwgRFBOSSwgYW5kIERQTUFDKQ0KPiA+ICsgICAgaW4gdGhl
IGNvbnRhaW5lci4NCj4gPiArDQo+ID4gKyAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPiA+ICsgICAgfCBEUFJDICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gPiArICAgIHwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
DQo+ID4gKyAgICB8ICArLS0tLS0tLSsgICstLS0tLS0tKyAgKy0tLS0tLS0rICArLS0tLS0tLSsg
ICstLS0tLS0tKyAgfA0KPiA+ICsgICAgfCAgfCBEUE1DUCB8ICB8IERQSU8gIHwgIHwgRFBCUCAg
fCAgfCBEUE5JICB8ICB8IERQTUFDIHwgIHwNCj4gPiArICAgIHwgICstLS0tLS0tKyAgKy0tLS0t
LS0rICArLS0tLS0tLSsgICstLS0rLS0tKyAgKy0tLSstLS0rICB8DQo+ID4gKyAgICB8ICB8IERQ
TUNQIHwgIHwgRFBJTyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KPiA+
ICsgICAgfCAgKy0tLS0tLS0rICArLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwNCj4gPiArICAgIHwgIHwgRFBNQ1AgfCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8DQo+ID4gKyAgICB8ICArLS0tLS0tLSsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KPiA+ICsgICAgfCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gPiArICAg
ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rDQo+ID4gKw0KPiA+ICsgICAgRnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZiBhbiBPUywgYSBE
UFJDIGlzIGJ1cy1saWtlLiAgTGlrZQ0KPiANCj4gbWF5YmUgcmVwbGFjZSAiaXMgYnVzLWxpa2Ui
IHdpdGggImJlaGF2ZXMgc2ltaWxhciB0byBhIGJ1cyIgb3IgImNhbiBiZSB2aWV3ZWQgYXMgYSBi
dXMiDQo+IA0KPiA+ICsgICAgYSBwbHVnLWFuZC1wbGF5IGJ1cywgc3VjaCBhcyBQQ0ksIERQUkMg
Y29tbWFuZHMgY2FuIGJlIHVzZWQgdG8NCj4gDQo+IG1heWJlIHJlcGxhY2UgIkxpa2UgYSBwbnAg
YnVzLi4uIiB3aXRoICJTaW1pbGFyIHRvIGEgcGx1Zy1hbmQtcGxheSBidXMsIHN1Y2ggYXMgUENJ
LCBEUFJDIC4uLiINCj4gDQo+ID4gKyAgICBlbnVtZXJhdGUgdGhlIGNvbnRlbnRzIG9mIHRoZSBE
UFJDLCBkaXNjb3ZlciB0aGUgaGFyZHdhcmUNCj4gPiArICAgIG9iamVjdHMgcHJlc2VudCAoaW5j
bHVkaW5nIG1hcHBhYmxlIHJlZ2lvbnMgYW5kIGludGVycnVwdHMpLg0KPiA+ICsNCj4gPiArICAg
ICBkcHJjLjEgKGJ1cykNCj4gPiArICAgICAgIHwNCj4gPiArICAgICAgICstLSstLS0tLS0tLSst
LS0tLS0tKy0tLS0tLS0rLS0tLS0tLSsNCj4gPiArICAgICAgICAgIHwgICAgICAgIHwgICAgICAg
fCAgICAgICB8ICAgICAgIHwNCj4gPiArICAgICAgICBkcG1jcC4xICBkcGlvLjEgIGRwYnAuMSAg
ZHBuaS4xICBkcG1hYy4xDQo+ID4gKyAgICAgICAgZHBtY3AuMiAgZHBpby4yDQo+ID4gKyAgICAg
ICAgZHBtY3AuMw0KPiA+ICsNCj4gPiArICAgIEhhcmR3YXJlIG9iamVjdHMgY2FuIGJlIGNyZWF0
ZWQgYW5kIGRlc3Ryb3llZCBkeW5hbWljYWxseSwgcHJvdmlkaW5nDQo+ID4gKyAgICB0aGUgYWJp
bGl0eSB0byBob3QgcGx1Zy91bnBsdWcgb2JqZWN0cyBpbiBhbmQgb3V0IG9mIHRoZSBEUFJDLg0K
PiA+ICsNCj4gPiArICAgIEEgRFBSQyBoYXMgYSBtYXBwYWJsZSBtbWlvIHJlZ2lvbiAoYW4gTUMg
cG9ydGFsKSB0aGF0IGNhbiBiZSB1c2VkDQo+IA0KPiAtIG1taW8gLT4gTU1JTyAobm90IHN1cmUg
d2hldGhlciBtYXBwYWJsZSBNTUlPIGlzIHJlZHVuZGFudCBvciBub3QpDQo+IC0gYSBNQyBwb3J0
YWwNCj4gDQo+ID4gKyAgICB0byBzZW5kIE1DIGNvbW1hbmRzLiAgSXQgaGFzIGFuIGludGVycnVw
dCBmb3Igc3RhdHVzIGV2ZW50cyAobGlrZQ0KPiA+ICsgICAgaG90cGx1ZykuDQo+ID4gKw0KPiA+
ICsgICAgQWxsIG9iamVjdHMgaW4gYSBjb250YWluZXIgc2hhcmUgdGhlIHNhbWUgaGFyZHdhcmUg
Imlzb2xhdGlvbiBjb250ZXh0Ii4NCj4gPiArICAgIFRoaXMgbWVhbnMgdGhhdCB3aXRoIHJlc3Bl
Y3QgdG8gYW4gSU9NTVUgdGhlIGlzb2xhdGlvbiBncmFudWxhcml0eQ0KPiA+ICsgICAgaXMgYXQg
dGhlIERQUkMgKGNvbnRhaW5lcikgbGV2ZWwsIG5vdCBhdCB0aGUgaW5kaXZpZHVhbCBvYmplY3QN
Cj4gPiArICAgIGxldmVsLg0KPiA+ICsNCj4gPiArICAgIERQUkNzIGNhbiBiZSBkZWZpbmVkIHN0
YXRpY2FsbHkgYW5kIHBvcHVsYXRlZCB3aXRoIG9iamVjdHMNCj4gPiArICAgIHZpYSBhIGNvbmZp
ZyBmaWxlIHBhc3NlZCB0byB0aGUgTUMgd2hlbiBmaXJtd2FyZSBzdGFydHMNCj4gPiArICAgIGl0
LiAgVGhlcmUgaXMgYWxzbyBhIExpbnV4IHVzZXIgc3BhY2UgdG9vbCBjYWxsZWQgInJlc3Rvb2wi
DQo+ID4gKyAgICB0aGF0IGNhbiBiZSB1c2VkIHRvIGNyZWF0ZS9kZXN0cm95IGNvbnRhaW5lcnMg
YW5kIG9iamVjdHMNCj4gPiArICAgIGR5bmFtaWNhbGx5Lg0KPiA+ICsNCj4gPiArLURQQUEyIE9i
amVjdHMgZm9yIGFuIEV0aGVybmV0IE5ldHdvcmsgSW50ZXJmYWNlDQo+ID4gKw0KPiA+ICsgICAg
QSB0eXBpY2FsIEV0aGVybmV0IE5JQyBpcyBtb25vbGl0aGljLS0gdGhlIE5JQyBkZXZpY2UgY29u
dGFpbnMgVFgvUlgNCj4gPiArICAgIHF1ZXVpbmcgbWVjaGFuaXNtcywgY29uZmlndXJhdGlvbiBt
ZWNoYW5pc21zLCBidWZmZXIgbWFuYWdlbWVudCwNCj4gPiArICAgIHBoeXNpY2FsIHBvcnRzLCBh
bmQgaW50ZXJydXB0cy4gIERQQUEyIHVzZXMgYSBtb3JlIGdyYW51bGFyIGFwcHJvYWNoDQo+ID4g
KyAgICB1dGlsaXppbmcgbXVsdGlwbGUgaGFyZHdhcmUgb2JqZWN0cy4gIEVhY2ggb2JqZWN0IGhh
cyBzcGVjaWFsaXplZA0KPiA+ICsgICAgZnVuY3Rpb25zLCBhbmQgYXJlIHVzZWQgdG9nZXRoZXIg
Ynkgc29mdHdhcmUgdG8gcHJvdmlkZSBFdGhlcm5ldCBuZXR3b3JrDQo+IA0KPiBFYWNoIG9iamVj
dCBwcm92aWRlcyBzcGVjaWFsaXplZCBmdW5jdGlvbnMuIEdyb3VwcyBvZiB0aGVzZSBvYmplY3Rz
IGFyZSB1c2VkIGJ5IHRoZSBzb2Z0d2FyZSB0byBwcm92aWRlDQo+IEV0aGVybmV0IG5ldHdvcmsg
aW50ZXJmYWNlIGZ1bmN0aW9uYWxpdHkuDQo+IA0KPiA+ICsgICAgaW50ZXJmYWNlIGZ1bmN0aW9u
YWxpdHkuICBUaGlzIGFwcHJvYWNoIHByb3ZpZGVzIGVmZmljaWVudCB1c2Ugb2YgZmluaXRlDQo+
ID4gKyAgICBoYXJkd2FyZSByZXNvdXJjZXMsIGZsZXhpYmlsaXR5LCBhbmQgcGVyZm9ybWFuY2Ug
YWR2YW50YWdlcy4NCj4gPiArDQo+ID4gKyAgICBUaGUgZGlhZ3JhbSBiZWxvdyBzaG93cyB0aGUg
b2JqZWN0cyBuZWVkZWQgZm9yIGEgc2ltcGxlDQo+ID4gKyAgICBuZXR3b3JrIGludGVyZmFjZSBj
b25maWd1cmF0aW9uIG9uIGEgc3lzdGVtIHdpdGggMiBDUFVzLg0KPiA+ICsNCj4gPiArICAgICAg
ICAgICAgICArLS0tKy0tLSsgKy0tLSstLS0rDQo+ID4gKyAgICAgICAgICAgICAgICAgQ1BVMCAg
ICAgQ1BVMQ0KPiA+ICsgICAgICAgICAgICAgICstLS0rLS0tKyArLS0tKy0tLSsNCj4gPiArICAg
ICAgICAgICAgICAgICAgfCAgICAgICAgIHwNCj4gPiArICAgICAgICAgICAgICArLS0tKy0tLSsg
Ky0tLSstLS0rDQo+ID4gKyAgICAgICAgICAgICAgICAgRFBJTyAgICAgRFBJTw0KPiA+ICsgICAg
ICAgICAgICAgICstLS0rLS0tKyArLS0tKy0tLSsNCj4gPiArICAgICAgICAgICAgICAgICAgICBc
ICAgICAvDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIFwgICAvDQo+ID4gKyAgICAgICAgICAg
ICAgICAgICAgICBcIC8NCj4gPiArICAgICAgICAgICAgICAgICAgICstLS0rLS0tKw0KPiA+ICsg
ICAgICAgICAgICAgICAgICAgICAgRFBOSSAgLS0tIERQQlAsRFBNQ1ANCj4gPiArICAgICAgICAg
ICAgICAgICAgICstLS0rLS0tKw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gPiAr
ICAgICAgICAgICAgICAgICAgICAgICB8DQo+ID4gKyAgICAgICAgICAgICAgICAgICArLS0tKy0t
LSsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgRFBNQUMNCj4gPiArICAgICAgICAgICAgICAg
ICAgICstLS0rLS0tKw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gPiArICAgICAg
ICAgICAgICAgICAgICBwb3J0L1BIWQ0KPiA+ICsNCj4gPiArICAgIEJlbG93IHRoZSBvYmplY3Rz
IGFyZSBkZXNjcmliZWQuICBGb3IgZWFjaCBvYmplY3QgYSBicmllZiBkZXNjcmlwdGlvbg0KPiAN
Cj4gVGhlIG9iamVjdHMgZGVwaWN0ZWQgaW4gdGhpcyBmaWd1cmUgYXJlIGRlc2NyaWJlZCBiZWxv
dy4NCj4gDQo+ID4gKyAgICBpcyBwcm92aWRlZCBhbG9uZyB3aXRoIGEgc3VtbWFyeSBvZiB0aGUg
a2luZHMgb2Ygb3BlcmF0aW9ucyB0aGUgb2JqZWN0DQo+ID4gKyAgICBzdXBwb3J0cyBhbmQgYSBz
dW1tYXJ5IG9mIGtleSByZXNvdXJjZXMgb2YgdGhlIG9iamVjdCAobW1pbyByZWdpb25zDQo+ID4g
KyAgICBhbmQgaXJxcykuDQo+IA0KPiBtbWlvIC0+IE1NSU8NCj4gaXJxcyAtPiBJUlFzDQo+IA0K
PiA+ICsNCj4gPiArICAgICAgIC1EUE1BQyAoRGF0YXBhdGggRXRoZXJuZXQgTUFDKTogcmVwcmVz
ZW50cyBhbiBFdGhlcm5ldCBNQUMsIGENCj4gPiArICAgICAgICBoYXJkd2FyZSBkZXZpY2UgdGhh
dCBjb25uZWN0cyB0byBhbiBFdGhlcm5ldCBQSFkgYW5kIGFsbG93cw0KPiA+ICsgICAgICAgIHBo
eXNpY2FsIHRyYW5zbWlzc2lvbiBhbmQgcmVjZXB0aW9uIG9mIEV0aGVybmV0IGZyYW1lcy4NCj4g
PiArICAgICAgICAgICAtbW1pbyByZWdpb25zOiBub25lDQo+IA0KPiBtbWlvIC0+IE1NSU8NCj4g
DQo+ID4gKyAgICAgICAgICAgLWlycXM6IGRwbmkgbGluayBjaGFuZ2UNCj4gDQo+IGlycXMgLT4g
SVJRcw0KPiBkcG5pIC0+IERQTkkNCj4gDQo+ID4gKyAgICAgICAgICAgLWNvbW1hbmRzOiBzZXQg
bGluayB1cC9kb3duLCBsaW5rIGNvbmZpZywgZ2V0IHN0YXRzLA0KPiA+ICsgICAgICAgICAgICAg
aXJxIGNvbmZpZywgZW5hYmxlLCByZXNldA0KPiANCj4gaXJxIC0+IElSUQ0KPiANCj4gPiArDQo+
ID4gKyAgICAgICAtRFBOSSAoRGF0YXBhdGggTmV0d29yayBJbnRlcmZhY2UpOiBjb250YWlucyBU
WC9SWCBxdWV1ZXMsDQo+ID4gKyAgICAgICAgbmV0d29yayBpbnRlcmZhY2UgY29uZmlndXJhdGlv
biwgYW5kIHJ4IGJ1ZmZlciBwb29sIGNvbmZpZ3VyYXRpb24NCj4gDQo+IHJ4IC0+IFJYDQo+IA0K
PiA+ICsgICAgICAgIG1lY2hhbmlzbXMuDQo+ID4gKyAgICAgICAgICAgLW1taW8gcmVnaW9uczog
bm9uZQ0KPiANCj4gbW1pbyAtPiBNTUlPDQo+IA0KPiA+ICsgICAgICAgICAgIC1pcnFzOiBsaW5r
IHN0YXRlDQo+IA0KPiBpcnFzIC0+IElSUXMNCj4gDQo+ID4gKyAgICAgICAgICAgLWNvbW1hbmRz
OiBwb3J0IGNvbmZpZywgb2ZmbG9hZCBjb25maWcsIHF1ZXVlIGNvbmZpZywNCj4gPiArICAgICAg
ICAgICAgcGFyc2UvY2xhc3NpZnkgY29uZmlnLCBpcnEgY29uZmlnLCBlbmFibGUsIHJlc2V0DQo+
IA0KPiBpcnEgLT4gSVJRDQo+IA0KPiA+ICsNCj4gPiArICAgICAgIC1EUElPIChEYXRhcGF0aCBJ
L08pOiBwcm92aWRlcyBpbnRlcmZhY2VzIHRvIGVucXVldWUgYW5kIGRlcXVldWUNCj4gPiArICAg
ICAgICBwYWNrZXRzIGFuZCBkbyBoYXJkd2FyZSBidWZmZXIgcG9vbCBtYW5hZ2VtZW50IG9wZXJh
dGlvbnMuICBGb3INCj4gPiArICAgICAgICBvcHRpbXVtIHBlcmZvcm1hbmNlIHRoZXJlIGlzIHR5
cGljYWxseSBEUElPIHBlciBDUFUuICBUaGlzIGFsbG93cw0KPiANCj4gRm9yIG9wdGltdW0gcGVy
Zm9ybWFuY2UgdGhlcmUgaXMgdHlwaWNhbGx5IG9uZSBEUElPIGFzc2lnbmVkIHRvIGVhY2ggQ1BV
DQo+IA0KPiA+ICsgICAgICAgIGVhY2ggQ1BVIHRvIHBlcmZvcm0gc2ltdWx0YW5lb3VzIGVucXVl
dWUvZGVxdWV1ZSBvcGVyYXRpb25zLg0KPiANCj4gVGhpcyBhbGxvd3MgZGlmZmVyZW50IENQVXMg
dG8gc2ltdWx0YW5lb3VzbHkgcGVyZm9ybSBlbnF1ZXVlL2RlcXVldWUgb3BlcmF0aW9ucy4NCj4g
DQo+ID4gKyAgICAgICAgICAgLW1taW8gcmVnaW9uczogcXVldWUgb3BlcmF0aW9ucywgYnVmZmVy
IG1nbXQNCj4gDQo+IG1taW8gLT4gTU1JTw0KPiBtZ210IC0+IG1hbmFnZW1lbnQNCj4gDQo+ID4g
KyAgICAgICAgICAgLWlycXM6IGRhdGEgYXZhaWxhYmlsaXR5LCBjb25nZXN0aW9uIG5vdGlmaWNh
dGlvbiwgYnVmZmVyDQo+ID4gKyAgICAgICAgICAgICAgICAgIHBvb2wgZGVwbGV0aW9uDQo+IA0K
PiBpcnFzIC0+IElSUXMNCj4gDQo+ID4gKyAgICAgICAgICAgLWNvbW1hbmRzOiBpcnEgY29uZmln
LCBlbmFibGUsIHJlc2V0DQo+IA0KPiBpcnEgLT4gSVJRDQo+IA0KPiA+ICsNCj4gPiArICAgICAg
IC1EUEJQIChEYXRhcGF0aCBCdWZmZXIgUG9vbCk6IHJlcHJlc2VudHMgYSBoYXJkd2FyZSBidWZm
ZXINCj4gPiArICAgICAgICBwb29sLg0KPiA+ICsgICAgICAgICAgIC1tbWlvIHJlZ2lvbnM6IG5v
bmUNCj4gPiArICAgICAgICAgICAtaXJxczogbm9uZQ0KPiA+ICsgICAgICAgICAgIC1jb21tYW5k
czogZW5hYmxlLCByZXNldA0KPiANCj4gbW1pbyAtPiBNTUlPDQo+IGlycXMgLT4gSVJRcw0KPiAN
Cj4gPiArDQo+ID4gKyAgICAgICAtRFBNQ1AgKERhdGFwYXRoIE1DIFBvcnRhbCk6IHByb3ZpZGVz
IGFuIE1DIGNvbW1hbmQgcG9ydGFsLg0KPiA+ICsgICAgICAgIFVzZWQgYnkgZHJpdmVycyB0byBz
ZW5kIGNvbW1hbmRzIHRvIHRoZSBNQyB0byBtYW5hZ2UNCj4gPiArICAgICAgICBvYmplY3RzLg0K
PiA+ICsgICAgICAgICAgIC1tbWlvIHJlZ2lvbnM6IE1DIGNvbW1hbmQgcG9ydGFsDQo+ID4gKyAg
ICAgICAgICAgLWlycXM6IGNvbW1hbmQgY29tcGxldGlvbg0KPiA+ICsgICAgICAgICAgIC1jb21t
YW5kczogaXJxIGNvbmZpZywgZW5hYmxlLCByZXNldA0KPiANCj4gbW1pbyAtPiBNTUlPDQo+IGly
cXMgLT4gSVJRcw0KPiBpcnEgLT4gSVJRDQo+IA0KPiA+ICsNCj4gPiArICAgIE9iamVjdCBDb25u
ZWN0aW9ucw0KPiA+ICsgICAgLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gKyAgICBTb21lIG9iamVj
dHMgaGF2ZSBleHBsaWNpdCByZWxhdGlvbnNoaXBzIHRoYXQgbXVzdA0KPiA+ICsgICAgYmUgY29u
ZmlndXJlZDoNCj4gPiArDQo+ID4gKyAgICAgICAtRFBOSSA8LS0+IERQTUFDDQo+ID4gKyAgICAg
ICAtRFBOSSA8LS0+IERQTkkNCj4gPiArICAgICAgIC1EUE5JIDwtLT4gTDItc3dpdGNoLXBvcnQN
Cj4gPiArICAgICAgICAgIEEgRFBOSSBtdXN0IGJlIGNvbm5lY3RlZCB0byBzb21ldGhpbmcgc3Vj
aCBhcyBhIERQTUFDLA0KPiA+ICsgICAgICAgICAgYW5vdGhlciBEUE5JLCBvciBMMiBzd2l0Y2gg
cG9ydC4gIFRoZSBEUE5JIGNvbm5lY3Rpb24NCj4gPiArICAgICAgICAgIGlzIG1hZGUgdmlhIGEg
RFBSQyBjb21tYW5kLg0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICArLS0tLS0tLSsgICstLS0t
LS0tKw0KPiA+ICsgICAgICAgICAgICAgIHwgRFBOSSAgfCAgfCBEUE1BQyB8DQo+ID4gKyAgICAg
ICAgICAgICAgKy0tLSstLS0rICArLS0tKy0tLSsNCj4gPiArICAgICAgICAgICAgICAgICAgfCAg
ICAgICAgICB8DQo+ID4gKyAgICAgICAgICAgICAgICAgICs9PT09PT09PT09Kw0KPiA+ICsNCj4g
PiArICAgICAgIC1EUE5JIDwtLT4gRFBCUA0KPiA+ICsgICAgICAgICAgQSBuZXR3b3JrIGludGVy
ZmFjZSByZXF1aXJlcyBhICdidWZmZXIgcG9vbCcgKERQQlANCj4gPiArICAgICAgICAgIG9iamVj
dCkgd2hpY2ggcHJvdmlkZXMgYSBsaXN0IG9mIHBvaW50ZXJzIHRvIG1lbW9yeQ0KPiA+ICsgICAg
ICAgICAgd2hlcmUgcmVjZWl2ZWQgRXRoZXJuZXQgZGF0YSBpcyB0byBiZSBjb3BpZWQuICBUaGUN
Cj4gPiArICAgICAgICAgIEV0aGVybmV0IGRyaXZlciBjb25maWd1cmVzIHRoZSBEUEJQcyBhc3Nv
Y2lhdGVkIHdpdGgNCj4gPiArICAgICAgICAgIHRoZSBuZXR3b3JrIGludGVyZmFjZS4NCj4gPiAr
DQo+ID4gKyAgICBJbnRlcnJ1cHRzDQo+ID4gKyAgICAtLS0tLS0tLS0tDQo+ID4gKyAgICBBbGwg
aW50ZXJydXB0cyBnZW5lcmF0ZWQgYnkgRFBBQTIgb2JqZWN0cyBhcmUgbWVzc2FnZQ0KPiA+ICsg
ICAgaW50ZXJydXB0cy4gIEF0IHRoZSBoYXJkd2FyZSBsZXZlbCBtZXNzYWdlIGludGVycnVwdHMN
Cj4gPiArICAgIGdlbmVyYXRlZCBieSBkZXZpY2VzIHdpbGwgbm9ybWFsbHkgaGF2ZSAzIGNvbXBv
bmVudHMtLQ0KPiA+ICsgICAgMSkgYSBub24tc3Bvb2ZhYmxlICdkZXZpY2UtaWQnIGV4cHJlc3Nl
ZCBvbiB0aGUgaGFyZHdhcmUNCj4gPiArICAgIGJ1cywgMikgYW4gYWRkcmVzcywgMykgYSBkYXRh
IHZhbHVlLg0KPiA+ICsNCj4gPiArICAgIEluIHRoZSBjYXNlIG9mIERQQUEyIGRldmljZXMvb2Jq
ZWN0cywgYWxsIG9iamVjdHMgaW4gdGhlDQo+ID4gKyAgICBzYW1lIGNvbnRhaW5lci9EUFJDIHNo
YXJlIHRoZSBzYW1lICdkZXZpY2UtaWQnLg0KPiA+ICsgICAgRm9yIEFSTS1iYXNlZCBTb0MgdGhp
cyBpcyB0aGUgc2FtZSBhcyB0aGUgc3RyZWFtIElELg0KPiA+ICsNCj4gPiArDQo+ID4gK0RQQUEy
IExpbnV4IERyaXZlciBPdmVydmlldw0KPiA+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N
Cj4gPiArDQo+ID4gK1RoaXMgc2VjdGlvbiBwcm92aWRlcyBhbiBvdmVydmlldyBvZiB0aGUgTGlu
dXgga2VybmVsIGRyaXZlcnMgZm9yDQo+ID4gK0RQQUEyLS0gMSkgdGhlIGJ1cyBkcml2ZXIgYW5k
IGFzc29jaWF0ZWQgIkRQQUEyIGluZnJhc3RydWN0dXJlIg0KPiA+ICtkcml2ZXJzIGFuZCAyKSBm
dW5jdGlvbmFsIG9iamVjdCBkcml2ZXJzIChzdWNoIGFzIEV0aGVybmV0KS4NCj4gPiArDQo+ID4g
K0FzIGRlc2NyaWJlZCBwcmV2aW91c2x5LCBhIERQUkMgaXMgYSBjb250YWluZXIgdGhhdCBob2xk
cyB0aGUgb3RoZXINCj4gPiArdHlwZXMgb2YgRFBBQTIgb2JqZWN0cy4gIEl0IGlzIGZ1bmN0aW9u
YWxseSBzaW1pbGFyIHRvIGEgcGx1Zy1hbmQtcGxheQ0KPiA+ICtidXMgY29udHJvbGxlci4NCj4g
PiArDQo+ID4gK0VhY2ggb2JqZWN0IGluIHRoZSBEUFJDIGlzIGEgTGludXggImRldmljZSIgYW5k
IGlzIGJvdW5kIHRvIGEgZHJpdmVyLg0KPiA+ICtUaGUgZGlhZ3JhbSBiZWxvdyBzaG93cyB0aGUg
TGludXggZHJpdmVycyBpbnZvbHZlZCBpbiBhIG5ldHdvcmtpbmcNCj4gPiArc2NlbmFyaW8gYW5k
IHRoZSBvYmplY3RzIGJvdW5kIHRvIGVhY2ggZHJpdmVyLiAgQSBicmllZiBkZXNjcmlwdGlvbg0K
PiA+ICtvZiBlYWNoIGRyaXZlciBmb2xsb3dzLg0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLSsNCj4gPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBPUyBOZXR3b3JrIHwNCj4g
PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIFN0YWNr
ICAgIHwNCj4gPiArICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAg
Ky0tLS0tLS0tLS0tLSsNCj4gPiArICAgICAgICAgICAgICAgICB8IEFsbG9jYXRvciAgfC4gLiAu
IC4gLiAuIC4gfCAgRXRoZXJuZXQgIHwNCj4gPiArICAgICAgICAgICAgICAgICB8KGRwbWNwLGRw
YnApfCAgICAgICAgICAgICAgfCAgIChkcG5pKSAgIHwNCj4gPiArICAgICAgICAgICAgICAgICAr
LS4tLS0tLS0tLS0tKyAgICAgICAgICAgICAgKy0tLSstLS0rLS0tLSsNCj4gPiArICAgICAgICAg
ICAgICAgICAgLiAgICAgICAgICAuICAgICAgICAgICAgICAgICAgIF4gICB8DQo+ID4gKyAgICAg
ICAgICAgICAgICAgLiAgICAgICAgICAgIC4gICAgIDxkYXRhIGF2YWlsLCB8ICAgfDxlbnF1ZXVl
LA0KPiA+ICsgICAgICAgICAgICAgICAgLiAgICAgICAgICAgICAgLiAgICAgdHggY29uZmlybT4g
fCAgIHwgZGVxdWV1ZT4NCj4gPiArICAgICstLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAuICAg
ICAgICAgICAgICAgIHwgICB8DQo+ID4gKyAgICB8IERQUkMgZHJpdmVyIHwgICAgICAgICAgICAg
IC4gICAgICAgICAgICstLS0rLS0tVi0tLS0rICAgICArLS0tLS0tLS0tKw0KPiA+ICsgICAgfCAg
IChkcHJjKSAgICB8ICAgICAgICAgICAgICAgLiAuIC4gLiAuIC58IERQSU8gZHJpdmVyfCAgICAg
fCAgIE1BQyAgIHwNCj4gPiArICAgICstLS0tLS0tLS0tKy0tKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgKGRwaW8pICAgIHwgICAgIHwgKGRwbWFjKSB8DQo+ID4gKyAgICAgICAgICAgICAg
IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0rLS0tLS0rICAgICArLS0tLS0r
LS0tKw0KPiA+ICsgICAgICAgICAgICAgICB8PGRldiBhZGQvcmVtb3ZlPiAgICAgICAgICAgICAg
ICAgICAgfCAgICAgICAgICAgICAgICAgfA0KPiA+ICsgICAgICAgICAgICAgICB8ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfA0KPiA+ICsgICAg
ICAgICAgKy0tLS0rLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg
ICAgICAgKy0tKy0tLSsNCj4gPiArICAgICAgICAgIHwgICBtYy1idXMgZHJpdmVyICAgfCAgICAg
ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgUEhZICB8DQo+ID4gKyAgICAgICAgICB8
ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8
ZHJpdmVyfA0KPiA+ICsgICAgICAgICAgfCAvZnNsLW1jQDgwYzAwMDAwMCB8ICAgICAgICAgICAg
ICAgICAgICAgfCAgICAgICAgICAgICAgKy0tKy0tLSsNCj4gPiArICAgICAgICAgICstLS0tLS0t
LS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwNCj4g
PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICAgICAgICAgICAgICAgIHwNCj4gPiArID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
IEhBUkRXQVJFID09PT09PT09PXw9PT09PT09PT09PT09PT09PXw9PT09PT0NCj4gPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEUElPICAgICAgICAg
ICAgICAgIHwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwNCj4gPiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEUE5JLS0tRFBCUCAgICAgICAgIHwNCj4gPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg
ICAgICAgICAgICAgIHwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEUE1BQyAgICAgICAgICAgICAgIHwNCj4gPiArICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwN
Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UEhZIC0tLS0tLS0tLS0tLS0tLSsNCj4gPiArID09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PXw9PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPiArDQo+
ID4gK0EgYnJpZWYgZGVzY3JpcHRpb24gb2YgZWFjaCBkcml2ZXIgaXMgcHJvdmlkZWQgYmVsb3cu
DQo+ID4gKw0KPiA+ICsgICAgbWMtYnVzIGRyaXZlcg0KPiA+ICsgICAgLS0tLS0tLS0tLS0tLQ0K
PiBtYy1idXMgLT4gTUMtQnVzIG9yIE1DLWJ1cw0KPiA+ICsgICAgVGhlIG1jLWJ1cyBkcml2ZXIg
aXMgYSBwbGF0Zm9ybSBkcml2ZXIgYW5kIGlzIHByb2JlZCBmcm9tIGFuDQo+ID4gKyAgICAiL2Zz
bC1tY0B4eHh4IiBub2RlIGluIHRoZSBkZXZpY2UgdHJlZSBwYXNzZWQgaW4gYnkgYm9vdCBmaXJt
d2FyZS4NCj4gPiArICAgIEl0IGlzIHJlc3BvbnNpYmxlIGZvciBib290c3RyYXBwaW5nIHRoZSBE
UEFBMiBrZXJuZWwgaW5mcmFzdHJ1Y3R1cmUuDQo+ID4gKyAgICBLZXkgZnVuY3Rpb25zIGluY2x1
ZGU6DQo+ID4gKyAgICAgICAtcmVnaXN0ZXJpbmcgYSBuZXcgYnVzIHR5cGUgbmFtZWQgImZzbC1t
YyIgd2l0aCB0aGUga2VybmVsLA0KPiA+ICsgICAgICAgIGFuZCBpbXBsZW1lbnRpbmcgYnVzIGNh
bGwtYmFja3MgKGUuZy4gbWF0Y2gvdWV2ZW50L2Rldl9ncm91cHMpDQo+ID4gKyAgICAgICAtaW1w
bGVtZXRpbmcgQVBJcyBmb3IgRFBBQTIgZHJpdmVyIHJlZ2lzdHJhdGlvbiBhbmQgZm9yIGRldmlj
ZQ0KPiA+ICsgICAgICAgIGFkZC9yZW1vdmUNCj4gPiArICAgICAgIC1jcmVhdGVzIGFuIE1TSSBp
cnEgZG9tYWluDQo+IGlycSAtPiBJUlENCj4gPiArICAgICAgIC1kbyBhIGRldmljZSBhZGQgb2Yg
dGhlICdyb290JyBEUFJDIGRldmljZSwgd2hpY2ggaXMgbmVlZGVkDQo+ID4gKyAgICAgICAgdG8g
Ym9vdHN0cmFwIHRoaW5ncw0KPiA+ICsNCj4gPiArICAgIERQUkMgZHJpdmVyDQo+ID4gKyAgICAt
LS0tLS0tLS0tLQ0KPiA+ICsgICAgVGhlIGRwcmMtZHJpdmVyIGlzIGJvdW5kIERQUkMgb2JqZWN0
cyBhbmQgZG9lcyBydW50aW1lIG1hbmFnZW1lbnQNCj4gPiArICAgIG9mIGEgYnVzIGluc3RhbmNl
LiAgSXQgcGVyZm9ybXMgdGhlIGluaXRpYWwgYnVzIHNjYW4gb2YgdGhlIERQUkMNCj4gPiArICAg
IGFuZCBoYW5kbGVzIGludGVycnVwdHMgZm9yIGNvbnRhaW5lciBldmVudHMgc3VjaCBhcyBob3Qg
cGx1Zy4NCj4gPiArDQo+ID4gKyAgICBBbGxvY2F0b3INCj4gPiArICAgIC0tLS0tLS0tLS0NCj4g
PiArICAgIENlcnRhaW4gb2JqZWN0cyBzdWNoIGFzIERQTUNQIGFuZCBEUEJQIGFyZSBnZW5lcmlj
IGFuZCBmdW5naWJsZSwNCj4gPiArICAgIGFuZCBhcmUgaW50ZW5kZWQgdG8gYmUgdXNlZCBieSBv
dGhlciBkcml2ZXJzLiAgRm9yIGV4YW1wbGUsDQo+ID4gKyAgICB0aGUgRFBBQTIgRXRoZXJuZXQg
ZHJpdmVyIG5lZWRzOg0KPiA+ICsgICAgICAgLURQTUNQcyB0byBzZW5kIE1DIGNvbW1hbmRzLCB0
byBjb25maWd1cmUgbmV0d29yayBpbnRlcmZhY2VzDQo+ID4gKyAgICAgICAtRFBCUHMgZm9yIG5l
dHdvcmsgYnVmZmVyIHBvb2xzDQo+ID4gKw0KPiA+ICsgICAgVGhlIGFsbG9jYXRvciBkcml2ZXIg
cmVnaXN0ZXJzIGZvciB0aGVzZSBhbGxvY2F0YWJsZSBvYmplY3QgdHlwZXMNCj4gPiArICAgIGFu
ZCB0aG9zZSBvYmplY3RzIGFyZSBib3VuZCB0byB0aGUgYWxsb2NhdG9yIHdoZW4gdGhlIGJ1cyBp
cyBwcm9iZWQuDQo+ID4gKyAgICBUaGUgYWxsb2NhdG9yIG1haW50YWlucyBhIHBvb2wgb2Ygb2Jq
ZWN0cyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yDQo+ID4gKyAgICBhbGxvY2F0aW9uIGJ5IG90aGVy
IERQQUEyIGRyaXZlcnMuDQo+ID4gKw0KPiA+ICsgICAgRFBJTyBkcml2ZXINCj4gPiArICAgIC0t
LS0tLS0tLS0tDQo+ID4gKyAgICBUaGUgRFBJTyBkcml2ZXIgaXMgYm91bmQgdG8gRFBJTyBvYmpl
Y3RzIGFuZCBwcm92aWRlcyBzZXJ2aWNlcyB0aGF0IGFsbG93DQo+ID4gKyAgICBvdGhlciBkcml2
ZXJzIHN1Y2ggYXMgdGhlIEV0aGVybmV0IGRyaXZlciB0byByZWNlaXZlIGFuZCB0cmFuc21pdCBk
YXRhLg0KPiA+ICsgICAgS2V5IHNlcnZpY2VzIGluY2x1ZGU6DQo+ID4gKyAgICAgICAgLWRhdGEg
YXZhaWxhYmlsaXR5IG5vdGlmaWNhdGlvbnMNCj4gPiArICAgICAgICAtaGFyZHdhcmUgcXVldWlu
ZyBvcGVyYXRpb25zIChlbnF1ZXVlIGFuZCBkZXF1ZXVlIG9mIGRhdGEpDQo+ID4gKyAgICAgICAg
LWhhcmR3YXJlIGJ1ZmZlciBwb29sIG1hbmFnZW1lbnQNCj4gPiArDQo+ID4gKyAgICBUaGVyZSBp
cyB0eXBpY2FsbHkgb25lIERQSU8gb2JqZWN0IHBlciBwaHlzaWNhbCBDUFUgZm9yIG9wdGltdW0N
Cj4gPiArICAgIHBlcmZvcm1hbmNlLCBhbGxvd2luZyBlYWNoIENQVSB0byBzaW11bHRhbmVvdXNs
eSBlbnF1ZXVlDQo+ID4gKyAgICBhbmQgZGVxdWV1ZSBkYXRhLg0KPiANCj4gYWxsb3dpbmcgZGlm
ZmVyZW50IENQVXMgdG8gc2ltdWx0YW5lb3VzbHkgLi4uDQo+IA0KPiA+ICsNCj4gPiArICAgIFRo
ZSBEUElPIGRyaXZlciBvcGVyYXRlcyBvbiBiZWhhbGYgb2YgYWxsIERQQUEyIGRyaXZlcnMNCj4g
PiArICAgIGFjdGl2ZSBpbiB0aGUga2VybmVsLS0gIEV0aGVybmV0LCBjcnlwdG8sIGNvbXByZXNz
aW9uLA0KPiA+ICsgICAgZXRjLg0KPiA+ICsNCj4gPiArICAgIEV0aGVybmV0DQo+ID4gKyAgICAt
LS0tLS0tLQ0KPiA+ICsgICAgVGhlIEV0aGVybmV0IGRyaXZlciBpcyBib3VuZCB0byBhIERQTkkg
YW5kIGltcGxlbWVudHMgdGhlIGtlcm5lbA0KPiA+ICsgICAgaW50ZXJmYWNlcyBuZWVkZWQgdG8g
Y29ubmVjdCB0aGUgRFBBQTIgbmV0d29yayBpbnRlcmZhY2UgdG8NCj4gPiArICAgIHRoZSBuZXR3
b3JrIHN0YWNrLg0KPiA+ICsNCj4gPiArICAgIEVhY2ggRFBOSSBjb3JyZXNwb25kcyB0byBhIExp
bnV4IG5ldHdvcmsgaW50ZXJmYWNlLg0KPiA+ICsNCj4gPiArICAgIE1BQyBkcml2ZXINCj4gPiAr
ICAgIC0tLS0tLS0tLS0NCj4gPiArICAgIEFuIEV0aGVybmV0IFBIWSBpcyBhbiBvZmYtY2hpcCwg
Ym9hcmQgc3BlY2lmaWMgY29tcG9uZW50IGFuZCBpcyBtYW5hZ2VkDQo+ID4gKyAgICBieSB0aGUg
YXBwcm9wcmlhdGUgUEhZIGRyaXZlciB2aWEgYW4gbWRpbyBidXMuICBUaGUgTUFDIGRyaXZlcg0K
PiA+ICsgICAgcGxheXMgYSByb2xlIG9mIGJlaW5nIGEgcHJveHkgYmV0d2VlbiB0aGUgUEhZIGRy
aXZlciBhbmQgdGhlDQo+ID4gKyAgICBNQy4gIEl0IGRvZXMgdGhpcyBwcm94eSB2aWEgdGhlIE1D
IGNvbW1hbmRzIHRvIGEgRFBNQUMgb2JqZWN0Lg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0
YWdpbmcvZnNsLW1jL1RPRE8gYi9kcml2ZXJzL3N0YWdpbmcvZnNsLW1jL1RPRE8NCj4gPiBpbmRl
eCBjMjk1MTZiLi4zODk0MzY4IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy9mc2wt
bWMvVE9ETw0KPiA+ICsrKyBiL2RyaXZlcnMvc3RhZ2luZy9mc2wtbWMvVE9ETw0KPiA+IEBAIC0x
LDcgKzEsMyBAQA0KPiA+IC0qIEFkZCBSRUFETUUgZmlsZSAod2l0aCBBU0NJSSBhcnQpIGRlc2Ny
aWJpbmcgcmVsYXRpb25zaGlwcyBiZXR3ZWVuDQo+ID4gLSAgRFBBQTIgb2JqZWN0cyBhbmQgaG93
IGNvbWJpbmUgdGhlbSB0byBtYWtlIGEgTklDLCBhbiBMUzIgc3dpdGNoLCBldGMuDQo+ID4gLSAg
QWxzbywgZGVmaW5lIGFsbCBhY3JvbnltcyB1c2VkLg0KPiA+IC0NCj4gPiAgKiBEZWNpZGUgaWYg
bXVsdGlwbGUgcm9vdCBmc2wtbWMgYnVzZXMgd2lsbCBiZSBzdXBwb3J0ZWQgcGVyIExpbnV4IGlu
c3RhbmNlLA0KPiA+ICAgIGFuZCBpZiBzbyBhZGQgc3VwcG9ydCBmb3IgdGhpcy4NCj4gPg0KDQpB
cHByZWNpYXRlIHRoZSBkZXRhaWxlZCByZXZpZXcuICBMaWtlIG1vc3Qgb2YgeW91ciBzdWdnZXN0
aW9ucyBhbmQNCndpbGwgaW5jb3Jwb3JhdGUgb24gdGhlIG5leHQgdXBkYXRlIHRvIHRoaXMgZG9j
dW1lbnQuDQoNClN0dWFydA0K
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web