DPAA Ethernet problems with mainstream Linux kernels

10 messages, 4 authors, 2018-02-26 · open the first message on its own page

DPAA Ethernet problems with mainstream Linux kernels

From: Jamie Krueger <hidden>
Date: 2018-01-10 16:04:10

Hello all @ linuxppc-dev,

I have been working with a team of people maintaining PowerPC
Linux for the new AmigaONE X5000/20 (a Freescale p5020 SoC based
machine).

We are trying to determine why the submitted Data Path Acceleration
Architecture (DPAA) Ethernet Driver is not fully functional with
the mainstream Linux kernels.

Here is the results from my latest tests. They were performed using
the linux-4.10.17 ppc64, since that represents when the DPAA Ethernet
code was introduced.

Similar tests, with similar results, were also performed
using the latest Linux kernels:

linux-4.15-rc5
linux-4.15-rc6
linux-4.15-rc7

(Hence the reason for falling back to test the kernel right
  after the introduction of the DPAA Ethernet driver sources)

---

All Kernel builds had the DPAA Ethernet enabled in the kernel,
and are using the correct cyrus_p5020.eth.dtb device tree file
(for use on the X5000/20).

The results are quite similar for all kernels in regards to the DPAA 
Ethernet.

All tested kernels setup the two Ethernet interfaces correctly
as eth0 and eth1, and pull the correct MAC addresses from U-Boot
environment variables ethaddr and eth1addr respectively.

So at this point Linux has what it believes is fully configured
hardware, waiting to have an IP Address/Netmask/Gateway
to be set and to bring the interface online.

However, all attempts to communicate with the outside world
do not make it out the physical (PHY) hardware - or do they?

** The following results were captured under linux-4.10.17 **

When I bring the interface up using a static address, in this case
192.168.1.21, I see the following (NOTE TX bytes says 154.0 KB,
while RX bytes says 0.0 B):

jamie@X5000-Linux:$ ifconfig
eth0      Link encap:Ethernet  HWaddr 00:80:10:11:11:11
           inet addr:192.168.1.21  Bcast:192.168.1.255 Mask:255.255.255.0
           inet6 addr: fe80::280:10ff:fe11:1111/64 Scope:Link
           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0
           TX packets:1428 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:1000
           RX bytes:0 (0.0 B)  TX bytes:154066 (154.0 KB)
           Memory:fe4e6000-fe4e6fff

eth1      Link encap:Ethernet  HWaddr 00:80:10:22:22:22
           UP BROADCAST MULTICAST  MTU:1500  Metric:1
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0
           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:1000
           RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
           Memory:fe4e8000-fe4e8fff

lo        Link encap:Local Loopback
           inet addr:127.0.0.1  Mask:255.0.0.0
           inet6 addr: ::1/128 Scope:Host
           UP LOOPBACK RUNNING  MTU:65536  Metric:1
           RX packets:1869 errors:0 dropped:0 overruns:0 frame:0
           TX packets:1869 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:1000
           RX bytes:156932 (156.9 KB)  TX bytes:156932 (156.9 KB)

Checking the routing table, everything looks fine there:

jamie@X5000-Linux:$ netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt 
Iface
default         192.168.1.1     0.0.0.0         UG        0 0          0 
eth0
link-local      *               255.255.0.0     U         0 0          0 
eth0
192.168.1.0     *               255.255.255.0   U         0 0          0 
eth0

Attempting to PING the interface itself works:

jamie@X5000-Linux:$ ping 192.168.1.21
PING 192.168.1.21 (192.168.1.21) 56(84) bytes of data.
64 bytes from 192.168.1.21: icmp_seq=1 ttl=64 time=0.037 ms
64 bytes from 192.168.1.21: icmp_seq=2 ttl=64 time=0.045 ms
64 bytes from 192.168.1.21: icmp_seq=3 ttl=64 time=0.033 ms
^C
--- 192.168.1.21 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2043ms

However, attempts to PING the gateway (192.168.1.1) fail as unreachable:

jamie@X5000-Linux:$ ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
 From 192.168.1.21 icmp_seq=1 Destination Host Unreachable
 From 192.168.1.21 icmp_seq=2 Destination Host Unreachable
 From 192.168.1.21 icmp_seq=3 Destination Host Unreachable
^C
--- 192.168.1.1 ping statistics ---
7 packets transmitted, 0 received, +3 errors, 100% packet loss, time 6077ms

In order to take a closer look at what is going on I installed Wireshark
both on my test X5000/20 Linux install (Ubuntu 16.04.3 LTS), and on
another Linux box connected to the same network switch (in this case
at IP address 192.168.1.210)

In this test I start the capture on eth0 (X5000/20) before it is put online,
and attempt to bring it up using DHCP to obtain it's address.

What I found was that network traffic *was* being attempted over eth0.
Here is a plain text export of the transmit side (the X5000/20) that
was captured using Wireshark.

(There were more network packets being sent from the X5000/20,
  however, I am only showing DHCP traffic to save space in this post):

---
No.     Time           Source                Destination Protocol Length 
Info
       2 0.042259843    0.0.0.0               255.255.255.255 DHCP     
342    DHCP Discover - Transaction ID 0x655d91e8

Frame 2: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) 
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast 
(ff:ff:ff:ff:ff:ff)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length 
Info
      16 3.830001152    0.0.0.0               255.255.255.255 DHCP     
342    DHCP Discover - Transaction ID 0x655d91e8

Frame 16: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) 
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast 
(ff:ff:ff:ff:ff:ff)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length 
Info
      21 9.308914533    0.0.0.0               255.255.255.255 DHCP     
342    DHCP Discover - Transaction ID 0x655d91e8

Frame 21: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) 
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast 
(ff:ff:ff:ff:ff:ff)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length 
Info
      23 18.906405343   0.0.0.0               255.255.255.255 DHCP     
342    DHCP Discover - Transaction ID 0x655d91e8

Frame 23: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) 
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast 
(ff:ff:ff:ff:ff:ff)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length 
Info
      25 36.390926450   0.0.0.0               255.255.255.255 DHCP     
342    DHCP Discover - Transaction ID 0x655d91e8

Frame 25: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) 
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast 
(ff:ff:ff:ff:ff:ff)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length 
Info
      26 44.048328412   0.0.0.0               255.255.255.255 DHCP     
342    DHCP Discover - Transaction ID 0x655d91e8

Frame 26: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) 
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast 
(ff:ff:ff:ff:ff:ff)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length 
Info
      30 44.889049203   0.0.0.0               255.255.255.255 DHCP     
342    DHCP Discover - Transaction ID 0x421bade3

Frame 30: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) 
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast 
(ff:ff:ff:ff:ff:ff)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length 
Info
      44 48.254495304   0.0.0.0               255.255.255.255 DHCP     
342    DHCP Discover - Transaction ID 0x421bade3

Frame 44: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) 
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast 
(ff:ff:ff:ff:ff:ff)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length 
Info
      49 54.299052732   0.0.0.0               255.255.255.255 DHCP     
342    DHCP Discover - Transaction ID 0x421bade3

Frame 49: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) 
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast 
(ff:ff:ff:ff:ff:ff)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length 
Info
      51 62.672007482   0.0.0.0               255.255.255.255 DHCP     
342    DHCP Discover - Transaction ID 0x421bade3

Frame 51: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) 
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast 
(ff:ff:ff:ff:ff:ff)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length 
Info
      52 77.485896202   0.0.0.0               255.255.255.255 DHCP     
342    DHCP Discover - Transaction ID 0x421bade3

Frame 52: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) 
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast 
(ff:ff:ff:ff:ff:ff)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length 
Info
      56 89.895304152   0.0.0.0               255.255.255.255 DHCP     
342    DHCP Discover - Transaction ID 0x5df47c84

Frame 56: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) 
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast 
(ff:ff:ff:ff:ff:ff)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length 
Info
      71 93.828837008   0.0.0.0               255.255.255.255 DHCP     
342    DHCP Discover - Transaction ID 0x5df47c84

Frame 71: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) 
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast 
(ff:ff:ff:ff:ff:ff)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length 
Info
      74 97.948453158   0.0.0.0               255.255.255.255 DHCP     
342    DHCP Discover - Transaction ID 0x5df47c84

Frame 74: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) 
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast 
(ff:ff:ff:ff:ff:ff)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)
---

Now, over on the external Linux machine (192.168.1.210), I setup a 
Wireshark capture
which filtered for any traffic to/from the MAC address of the X5000/20's 
eth0, in this case
shown as Commodor_11:11:11 (00:80:10:11:11:11) below:

This export shows only the DHCP traffic seen from outside the X5000/20,
and as you can see, a matching set of DHCP requests *do in fact* make
it to the outside network.

---
No.     Time           Source                Destination Protocol Length 
Info
      39 5.671762509    0.0.0.0               255.255.255.255 DHCP     
342    DHCP Discover - Transaction ID 0x655d91e8

Frame 39: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) 
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast 
(ff:ff:ff:ff:ff:ff)
     Destination: Broadcast (ff:ff:ff:ff:ff:ff)
     Source: Commodor_11:11:11 (00:80:10:11:11:11)
     Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length 
Info
      73 9.451895404    0.0.0.0               255.255.255.255 DHCP     
342    DHCP Discover - Transaction ID 0x655d91e8

Frame 73: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) 
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast 
(ff:ff:ff:ff:ff:ff)
     Destination: Broadcast (ff:ff:ff:ff:ff:ff)
     Source: Commodor_11:11:11 (00:80:10:11:11:11)
     Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length 
Info
     154 14.919944480   0.0.0.0               255.255.255.255 DHCP     
342    DHCP Discover - Transaction ID 0x655d91e8

Frame 154: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) 
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast 
(ff:ff:ff:ff:ff:ff)
     Destination: Broadcast (ff:ff:ff:ff:ff:ff)
     Source: Commodor_11:11:11 (00:80:10:11:11:11)
     Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length 
Info
     269 24.498335996   0.0.0.0               255.255.255.255 DHCP     
342    DHCP Discover - Transaction ID 0x655d91e8

Frame 269: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) 
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast 
(ff:ff:ff:ff:ff:ff)
     Destination: Broadcast (ff:ff:ff:ff:ff:ff)
     Source: Commodor_11:11:11 (00:80:10:11:11:11)
     Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length 
Info
     630 41.948018648   0.0.0.0               255.255.255.255 DHCP     
342    DHCP Discover - Transaction ID 0x655d91e8

Frame 630: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) 
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast 
(ff:ff:ff:ff:ff:ff)
     Destination: Broadcast (ff:ff:ff:ff:ff:ff)
     Source: Commodor_11:11:11 (00:80:10:11:11:11)
     Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length 
Info
     701 49.590211264   0.0.0.0               255.255.255.255 DHCP     
342    DHCP Discover - Transaction ID 0x655d91e8

Frame 701: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) 
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast 
(ff:ff:ff:ff:ff:ff)
     Destination: Broadcast (ff:ff:ff:ff:ff:ff)
     Source: Commodor_11:11:11 (00:80:10:11:11:11)
     Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length 
Info
     706 50.429265938   0.0.0.0               255.255.255.255 DHCP     
342    DHCP Discover - Transaction ID 0x421bade3

Frame 706: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) 
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast 
(ff:ff:ff:ff:ff:ff)
     Destination: Broadcast (ff:ff:ff:ff:ff:ff)
     Source: Commodor_11:11:11 (00:80:10:11:11:11)
     Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length 
Info
     744 53.788035317   0.0.0.0               255.255.255.255 DHCP     
342    DHCP Discover - Transaction ID 0x421bade3

Frame 744: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) 
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast 
(ff:ff:ff:ff:ff:ff)
     Destination: Broadcast (ff:ff:ff:ff:ff:ff)
     Source: Commodor_11:11:11 (00:80:10:11:11:11)
     Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length 
Info
     797 59.820568614   0.0.0.0               255.255.255.255 DHCP     
342    DHCP Discover - Transaction ID 0x421bade3

Frame 797: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) 
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast 
(ff:ff:ff:ff:ff:ff)
     Destination: Broadcast (ff:ff:ff:ff:ff:ff)
     Source: Commodor_11:11:11 (00:80:10:11:11:11)
     Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length 
Info
     852 68.176833686   0.0.0.0               255.255.255.255 DHCP     
342    DHCP Discover - Transaction ID 0x421bade3

Frame 852: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) 
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast 
(ff:ff:ff:ff:ff:ff)
     Destination: Broadcast (ff:ff:ff:ff:ff:ff)
     Source: Commodor_11:11:11 (00:80:10:11:11:11)
     Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length 
Info
     990 82.961224895   0.0.0.0               255.255.255.255 DHCP     
342    DHCP Discover - Transaction ID 0x421bade3

Frame 990: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) 
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast 
(ff:ff:ff:ff:ff:ff)
     Destination: Broadcast (ff:ff:ff:ff:ff:ff)
     Source: Commodor_11:11:11 (00:80:10:11:11:11)
     Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length 
Info
    3827 95.345964418   0.0.0.0               255.255.255.255 DHCP     
342    DHCP Discover - Transaction ID 0x5df47c84

Frame 3827: 342 bytes on wire (2736 bits), 342 bytes captured (2736 
bits) on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast 
(ff:ff:ff:ff:ff:ff)
     Destination: Broadcast (ff:ff:ff:ff:ff:ff)
     Source: Commodor_11:11:11 (00:80:10:11:11:11)
     Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length 
Info
    3887 99.271668572   0.0.0.0               255.255.255.255 DHCP     
342    DHCP Discover - Transaction ID 0x5df47c84

Frame 3887: 342 bytes on wire (2736 bits), 342 bytes captured (2736 
bits) on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast 
(ff:ff:ff:ff:ff:ff)
     Destination: Broadcast (ff:ff:ff:ff:ff:ff)
     Source: Commodor_11:11:11 (00:80:10:11:11:11)
     Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length 
Info
    3943 103.383072429  0.0.0.0               255.255.255.255 DHCP     
342    DHCP Discover - Transaction ID 0x5df47c84

Frame 3943: 342 bytes on wire (2736 bits), 342 bytes captured (2736 
bits) on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast 
(ff:ff:ff:ff:ff:ff)
     Destination: Broadcast (ff:ff:ff:ff:ff:ff)
     Source: Commodor_11:11:11 (00:80:10:11:11:11)
     Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)
---

The odd thing here is that while the DHCP requests were broadcast to the
outside network (confirming that at least the transmit to the PHY is 
working),
I could see no responses from my network's DHCP server to answer these
requests.

It is not a physical networking or routing issue, as I always get a 
successful
DHCP response to the X5000/20 when I enable the Realtek 8169 interface (also
installed [PCIe card] in the X5000/20).

Since initial outgoing traffic *appears* to be working from the DPAA 
Ethernet
on the X5000/20, is it possible we are missing an interrupt mapping from the
Frame Manager to catch the received data?

Any help would be appreciated. Thanks.

-- 
Best Regards,

Jamie Krueger
BITbyBIT Software Group LLC

RE: DPAA Ethernet problems with mainstream Linux kernels

From: Madalin-cristian Bucur <madalin.bucur@nxp.com>
Date: 2018-01-12 14:22:14

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBMaW51eHBwYy1kZXYgW21haWx0
bzpsaW51eHBwYy1kZXYtDQo+IGJvdW5jZXMrbWFkYWxpbi5idWN1cj1ueHAuY29tQGxpc3RzLm96
bGFicy5vcmddIE9uIEJlaGFsZiBPZiBKYW1pZSBLcnVlZ2VyDQo+IFNlbnQ6IFdlZG5lc2RheSwg
SmFudWFyeSAxMCwgMjAxOCA1OjU3IFBNDQo+IFRvOiBsaW51eHBwYy1kZXZAbGlzdHMub3psYWJz
Lm9yZw0KPiBTdWJqZWN0OiBEUEFBIEV0aGVybmV0IHByb2JsZW1zIHdpdGggbWFpbnN0cmVhbSBM
aW51eCBrZXJuZWxzDQo+IA0KPiBIZWxsbyBhbGwgQCBsaW51eHBwYy1kZXYsDQo+IA0KPiBJIGhh
dmUgYmVlbiB3b3JraW5nIHdpdGggYSB0ZWFtIG9mIHBlb3BsZSBtYWludGFpbmluZyBQb3dlclBD
DQo+IExpbnV4IGZvciB0aGUgbmV3IEFtaWdhT05FIFg1MDAwLzIwIChhIEZyZWVzY2FsZSBwNTAy
MCBTb0MgYmFzZWQNCj4gbWFjaGluZSkuDQo+IA0KPiBXZSBhcmUgdHJ5aW5nIHRvIGRldGVybWlu
ZSB3aHkgdGhlIHN1Ym1pdHRlZCBEYXRhIFBhdGggQWNjZWxlcmF0aW9uDQo+IEFyY2hpdGVjdHVy
ZSAoRFBBQSkgRXRoZXJuZXQgRHJpdmVyIGlzIG5vdCBmdWxseSBmdW5jdGlvbmFsIHdpdGgNCj4g
dGhlIG1haW5zdHJlYW0gTGludXgga2VybmVscy4NCg0KSGkgSmFtaWUsDQoNCldlIGFyZSB0ZXN0
aW5nIHRoZSBEUEFBIGRyaXZlciBvbiBzZXZlcmFsIERTIGFuZCBSREIgcGxhdGZvcm1zIGFuZCBp
dA0KaXMgd29ya2luZyBwcm9wZXJseS4gVGhlIGlzc3VlcyB5b3UgZW5jb3VudGVyIHdpdGggaXQg
b24gdGhlIFg1MDAwLzIwDQphcmUgbGlrZWx5IGNhdXNlZCBieSBzb21lIGlzc3VlcyBzcGVjaWZp
YyB0byB0aGF0IHBhcnRpY3VsYXIgcGxhdGZvcm0uDQpUaGUgZGV2aWNlIHRyZWUgdGhhdCB5b3Ug
bWVudGlvbiwgY3lydXNfcDUwMjAuZXRoLmR0cyBpcyBub3QgZm91bmQgaW4NCnRoZSBMaW51eCBr
ZXJuZWwgc291cmNlcy4gVGhlIGN5cnVzX3A1MDIwLmR0cyBmaWxlIGZyb20gdGhlIGZzbCBwcGMN
CmRldmljZSB0cmVlIGZvbGRlciBkb2VzIG5vdCBpbmNsdWRlIHRoZSBQSFkgaW5mb3JtYXRpb24g
Zm9yIHRoZSBEUEFBDQppbnRlcmZhY2VzLiBUaGUgcHJvYmxlbXMgdGhhdCB5b3UgZXhwZXJpZW5j
ZSBtYXkgYmUgY2F1c2VkIGJ5IHNvbWUNCmlzc3VlcyB3aXRoIHRoZSBQSFkgY29uZmlndXJhdGlv
biAoaS5lLiBpbnRlcm5hbCBkZWxheSkuIEkgc3VnZ2VzdA0KdGhhdCB5b3UgY29ubmVjdCB0aGUg
RFBBQSBpbnRlcmZhY2UgdG8gYSB0cmFmZmljIGFuYWx5emVyIG9yIGRpcmVjdGx5DQp0byBhbm90
aGVyIGRldmljZSBvbiB3aGljaCB5b3UgY2FuIGNhcHR1cmUgdGhlIGluY29taW5nIHRyYWZmaWMg
YW5kDQpjaGVjayB0aGF0IHRoZSByZWNlaXZlZCBmcmFtZXMgYXJlIGNvcnJlY3QuDQoNCk1hZGFs
aW4NCg0KPiBIZXJlIGlzIHRoZSByZXN1bHRzIGZyb20gbXkgbGF0ZXN0IHRlc3RzLiBUaGV5IHdl
cmUgcGVyZm9ybWVkIHVzaW5nDQo+IHRoZSBsaW51eC00LjEwLjE3IHBwYzY0LCBzaW5jZSB0aGF0
IHJlcHJlc2VudHMgd2hlbiB0aGUgRFBBQSBFdGhlcm5ldA0KPiBjb2RlIHdhcyBpbnRyb2R1Y2Vk
Lg0KPiANCj4gU2ltaWxhciB0ZXN0cywgd2l0aCBzaW1pbGFyIHJlc3VsdHMsIHdlcmUgYWxzbyBw
ZXJmb3JtZWQNCj4gdXNpbmcgdGhlIGxhdGVzdCBMaW51eCBrZXJuZWxzOg0KPiANCj4gbGludXgt
NC4xNS1yYzUNCj4gbGludXgtNC4xNS1yYzYNCj4gbGludXgtNC4xNS1yYzcNCj4gDQo+IChIZW5j
ZSB0aGUgcmVhc29uIGZvciBmYWxsaW5nIGJhY2sgdG8gdGVzdCB0aGUga2VybmVsIHJpZ2h0DQo+
ICDCoGFmdGVyIHRoZSBpbnRyb2R1Y3Rpb24gb2YgdGhlIERQQUEgRXRoZXJuZXQgZHJpdmVyIHNv
dXJjZXMpDQo+IA0KPiAtLS0NCj4gDQo+IEFsbCBLZXJuZWwgYnVpbGRzIGhhZCB0aGUgRFBBQSBF
dGhlcm5ldCBlbmFibGVkIGluIHRoZSBrZXJuZWwsDQo+IGFuZCBhcmUgdXNpbmcgdGhlIGNvcnJl
Y3QgY3lydXNfcDUwMjAuZXRoLmR0YiBkZXZpY2UgdHJlZSBmaWxlDQo+IChmb3IgdXNlIG9uIHRo
ZSBYNTAwMC8yMCkuDQo+IA0KPiBUaGUgcmVzdWx0cyBhcmUgcXVpdGUgc2ltaWxhciBmb3IgYWxs
IGtlcm5lbHMgaW4gcmVnYXJkcyB0byB0aGUgRFBBQQ0KPiBFdGhlcm5ldC4NCj4gDQo+IEFsbCB0
ZXN0ZWQga2VybmVscyBzZXR1cCB0aGUgdHdvIEV0aGVybmV0IGludGVyZmFjZXMgY29ycmVjdGx5
DQo+IGFzIGV0aDAgYW5kIGV0aDEsIGFuZCBwdWxsIHRoZSBjb3JyZWN0IE1BQyBhZGRyZXNzZXMg
ZnJvbSBVLUJvb3QNCj4gZW52aXJvbm1lbnQgdmFyaWFibGVzIGV0aGFkZHIgYW5kIGV0aDFhZGRy
IHJlc3BlY3RpdmVseS4NCj4gDQo+IFNvIGF0IHRoaXMgcG9pbnQgTGludXggaGFzIHdoYXQgaXQg
YmVsaWV2ZXMgaXMgZnVsbHkgY29uZmlndXJlZA0KPiBoYXJkd2FyZSwgd2FpdGluZyB0byBoYXZl
IGFuIElQIEFkZHJlc3MvTmV0bWFzay9HYXRld2F5DQo+IHRvIGJlIHNldCBhbmQgdG8gYnJpbmcg
dGhlIGludGVyZmFjZSBvbmxpbmUuDQo+IA0KPiBIb3dldmVyLCBhbGwgYXR0ZW1wdHMgdG8gY29t
bXVuaWNhdGUgd2l0aCB0aGUgb3V0c2lkZSB3b3JsZA0KPiBkbyBub3QgbWFrZSBpdCBvdXQgdGhl
IHBoeXNpY2FsIChQSFkpIGhhcmR3YXJlIC0gb3IgZG8gdGhleT8NCj4gDQo+ICoqIFRoZSBmb2xs
b3dpbmcgcmVzdWx0cyB3ZXJlIGNhcHR1cmVkIHVuZGVyIGxpbnV4LTQuMTAuMTcgKioNCj4gDQo+
IFdoZW4gSSBicmluZyB0aGUgaW50ZXJmYWNlIHVwIHVzaW5nIGEgc3RhdGljIGFkZHJlc3MsIGlu
IHRoaXMgY2FzZQ0KPiAxOTIuMTY4LjEuMjEsIEkgc2VlIHRoZSBmb2xsb3dpbmcgKE5PVEUgVFgg
Ynl0ZXMgc2F5cyAxNTQuMCBLQiwNCj4gd2hpbGUgUlggYnl0ZXMgc2F5cyAwLjAgQik6DQo+IA0K
PiBqYW1pZUBYNTAwMC1MaW51eDokIGlmY29uZmlnDQo+IGV0aDDCoMKgwqDCoMKgIExpbmsgZW5j
YXA6RXRoZXJuZXTCoCBIV2FkZHIgMDA6ODA6MTA6MTE6MTE6MTENCj4gIMKgwqDCoMKgwqDCoMKg
wqDCoCBpbmV0IGFkZHI6MTkyLjE2OC4xLjIxwqAgQmNhc3Q6MTkyLjE2OC4xLjI1NSBNYXNrOjI1
NS4yNTUuMjU1LjANCj4gIMKgwqDCoMKgwqDCoMKgwqDCoCBpbmV0NiBhZGRyOiBmZTgwOjoyODA6
MTBmZjpmZTExOjExMTEvNjQgU2NvcGU6TGluaw0KPiAgwqDCoMKgwqDCoMKgwqDCoMKgIFVQIEJS
T0FEQ0FTVCBSVU5OSU5HIE1VTFRJQ0FTVMKgIE1UVToxNTAwwqAgTWV0cmljOjENCj4gIMKgwqDC
oMKgwqDCoMKgwqDCoCBSWCBwYWNrZXRzOjAgZXJyb3JzOjAgZHJvcHBlZDowIG92ZXJydW5zOjAg
ZnJhbWU6MA0KPiAgwqDCoMKgwqDCoMKgwqDCoMKgIFRYIHBhY2tldHM6MTQyOCBlcnJvcnM6MCBk
cm9wcGVkOjAgb3ZlcnJ1bnM6MCBjYXJyaWVyOjANCj4gIMKgwqDCoMKgwqDCoMKgwqDCoCBjb2xs
aXNpb25zOjAgdHhxdWV1ZWxlbjoxMDAwDQo+ICDCoMKgwqDCoMKgwqDCoMKgwqAgUlggYnl0ZXM6
MCAoMC4wIEIpwqAgVFggYnl0ZXM6MTU0MDY2ICgxNTQuMCBLQikNCj4gIMKgwqDCoMKgwqDCoMKg
wqDCoCBNZW1vcnk6ZmU0ZTYwMDAtZmU0ZTZmZmYNCj4gDQo+IGV0aDHCoMKgwqDCoMKgIExpbmsg
ZW5jYXA6RXRoZXJuZXTCoCBIV2FkZHIgMDA6ODA6MTA6MjI6MjI6MjINCj4gIMKgwqDCoMKgwqDC
oMKgwqDCoCBVUCBCUk9BRENBU1QgTVVMVElDQVNUwqAgTVRVOjE1MDDCoCBNZXRyaWM6MQ0KPiAg
wqDCoMKgwqDCoMKgwqDCoMKgIFJYIHBhY2tldHM6MCBlcnJvcnM6MCBkcm9wcGVkOjAgb3ZlcnJ1
bnM6MCBmcmFtZTowDQo+ICDCoMKgwqDCoMKgwqDCoMKgwqAgVFggcGFja2V0czowIGVycm9yczow
IGRyb3BwZWQ6MCBvdmVycnVuczowIGNhcnJpZXI6MA0KPiAgwqDCoMKgwqDCoMKgwqDCoMKgIGNv
bGxpc2lvbnM6MCB0eHF1ZXVlbGVuOjEwMDANCj4gIMKgwqDCoMKgwqDCoMKgwqDCoCBSWCBieXRl
czowICgwLjAgQinCoCBUWCBieXRlczowICgwLjAgQikNCj4gIMKgwqDCoMKgwqDCoMKgwqDCoCBN
ZW1vcnk6ZmU0ZTgwMDAtZmU0ZThmZmYNCj4gDQo+IGxvwqDCoMKgwqDCoMKgwqAgTGluayBlbmNh
cDpMb2NhbCBMb29wYmFjaw0KPiAgwqDCoMKgwqDCoMKgwqDCoMKgIGluZXQgYWRkcjoxMjcuMC4w
LjHCoCBNYXNrOjI1NS4wLjAuMA0KPiAgwqDCoMKgwqDCoMKgwqDCoMKgIGluZXQ2IGFkZHI6IDo6
MS8xMjggU2NvcGU6SG9zdA0KPiAgwqDCoMKgwqDCoMKgwqDCoMKgIFVQIExPT1BCQUNLIFJVTk5J
TkfCoCBNVFU6NjU1MzbCoCBNZXRyaWM6MQ0KPiAgwqDCoMKgwqDCoMKgwqDCoMKgIFJYIHBhY2tl
dHM6MTg2OSBlcnJvcnM6MCBkcm9wcGVkOjAgb3ZlcnJ1bnM6MCBmcmFtZTowDQo+ICDCoMKgwqDC
oMKgwqDCoMKgwqAgVFggcGFja2V0czoxODY5IGVycm9yczowIGRyb3BwZWQ6MCBvdmVycnVuczow
IGNhcnJpZXI6MA0KPiAgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbGxpc2lvbnM6MCB0eHF1ZXVlbGVu
OjEwMDANCj4gIMKgwqDCoMKgwqDCoMKgwqDCoCBSWCBieXRlczoxNTY5MzIgKDE1Ni45IEtCKcKg
IFRYIGJ5dGVzOjE1NjkzMiAoMTU2LjkgS0IpDQo+IA0KPiBDaGVja2luZyB0aGUgcm91dGluZyB0
YWJsZSwgZXZlcnl0aGluZyBsb29rcyBmaW5lIHRoZXJlOg0KPiANCj4gamFtaWVAWDUwMDAtTGlu
dXg6JCBuZXRzdGF0IC1yDQo+IEtlcm5lbCBJUCByb3V0aW5nIHRhYmxlDQo+IERlc3RpbmF0aW9u
wqDCoMKgwqAgR2F0ZXdhecKgwqDCoMKgwqDCoMKgwqAgR2VubWFza8KgwqDCoMKgwqDCoMKgwqAg
RmxhZ3PCoMKgIE1TUyBXaW5kb3fCoCBpcnR0DQo+IElmYWNlDQo+IGRlZmF1bHTCoMKgwqDCoMKg
wqDCoMKgIDE5Mi4xNjguMS4xwqDCoMKgwqAgMC4wLjAuMMKgwqDCoMKgwqDCoMKgwqAgVUfCoMKg
wqDCoMKgwqDCoCAwIDDCoMKgwqDCoMKgwqDCoMKgwqAgMA0KPiBldGgwDQo+IGxpbmstbG9jYWzC
oMKgwqDCoMKgICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDI1NS4yNTUuMC4wwqDCoMKg
wqAgVcKgwqDCoMKgwqDCoMKgwqAgMCAwwqDCoMKgwqDCoMKgwqDCoMKgIDANCj4gZXRoMA0KPiAx
OTIuMTY4LjEuMMKgwqDCoMKgICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDI1NS4yNTUu
MjU1LjDCoMKgIFXCoMKgwqDCoMKgwqDCoMKgIDAgMMKgwqDCoMKgwqDCoMKgwqDCoCAwDQo+IGV0
aDANCj4gDQo+IEF0dGVtcHRpbmcgdG8gUElORyB0aGUgaW50ZXJmYWNlIGl0c2VsZiB3b3JrczoN
Cj4gDQo+IGphbWllQFg1MDAwLUxpbnV4OiQgcGluZyAxOTIuMTY4LjEuMjENCj4gUElORyAxOTIu
MTY4LjEuMjEgKDE5Mi4xNjguMS4yMSkgNTYoODQpIGJ5dGVzIG9mIGRhdGEuDQo+IDY0IGJ5dGVz
IGZyb20gMTkyLjE2OC4xLjIxOiBpY21wX3NlcT0xIHR0bD02NCB0aW1lPTAuMDM3IG1zDQo+IDY0
IGJ5dGVzIGZyb20gMTkyLjE2OC4xLjIxOiBpY21wX3NlcT0yIHR0bD02NCB0aW1lPTAuMDQ1IG1z
DQo+IDY0IGJ5dGVzIGZyb20gMTkyLjE2OC4xLjIxOiBpY21wX3NlcT0zIHR0bD02NCB0aW1lPTAu
MDMzIG1zDQo+IF5DDQo+IC0tLSAxOTIuMTY4LjEuMjEgcGluZyBzdGF0aXN0aWNzIC0tLQ0KPiAz
IHBhY2tldHMgdHJhbnNtaXR0ZWQsIDMgcmVjZWl2ZWQsIDAlIHBhY2tldCBsb3NzLCB0aW1lIDIw
NDNtcw0KPiANCj4gSG93ZXZlciwgYXR0ZW1wdHMgdG8gUElORyB0aGUgZ2F0ZXdheSAoMTkyLjE2
OC4xLjEpIGZhaWwgYXMgdW5yZWFjaGFibGU6DQo+IA0KPiBqYW1pZUBYNTAwMC1MaW51eDokIHBp
bmcgMTkyLjE2OC4xLjENCj4gUElORyAxOTIuMTY4LjEuMSAoMTkyLjE2OC4xLjEpIDU2KDg0KSBi
eXRlcyBvZiBkYXRhLg0KPiAgRnJvbSAxOTIuMTY4LjEuMjEgaWNtcF9zZXE9MSBEZXN0aW5hdGlv
biBIb3N0IFVucmVhY2hhYmxlDQo+ICBGcm9tIDE5Mi4xNjguMS4yMSBpY21wX3NlcT0yIERlc3Rp
bmF0aW9uIEhvc3QgVW5yZWFjaGFibGUNCj4gIEZyb20gMTkyLjE2OC4xLjIxIGljbXBfc2VxPTMg
RGVzdGluYXRpb24gSG9zdCBVbnJlYWNoYWJsZQ0KPiBeQw0KPiAtLS0gMTkyLjE2OC4xLjEgcGlu
ZyBzdGF0aXN0aWNzIC0tLQ0KPiA3IHBhY2tldHMgdHJhbnNtaXR0ZWQsIDAgcmVjZWl2ZWQsICsz
IGVycm9ycywgMTAwJSBwYWNrZXQgbG9zcywgdGltZQ0KPiA2MDc3bXMNCj4gDQo+IEluIG9yZGVy
IHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCB3aGF0IGlzIGdvaW5nIG9uIEkgaW5zdGFsbGVkIFdp
cmVzaGFyaw0KPiBib3RoIG9uIG15IHRlc3QgWDUwMDAvMjAgTGludXggaW5zdGFsbCAoVWJ1bnR1
IDE2LjA0LjMgTFRTKSwgYW5kIG9uDQo+IGFub3RoZXIgTGludXggYm94IGNvbm5lY3RlZCB0byB0
aGUgc2FtZSBuZXR3b3JrIHN3aXRjaCAoaW4gdGhpcyBjYXNlDQo+IGF0IElQIGFkZHJlc3MgMTky
LjE2OC4xLjIxMCkNCj4gDQo+IEluIHRoaXMgdGVzdCBJIHN0YXJ0IHRoZSBjYXB0dXJlIG9uIGV0
aDAgKFg1MDAwLzIwKSBiZWZvcmUgaXQgaXMgcHV0DQo+IG9ubGluZSwNCj4gYW5kIGF0dGVtcHQg
dG8gYnJpbmcgaXQgdXAgdXNpbmcgREhDUCB0byBvYnRhaW4gaXQncyBhZGRyZXNzLg0KPiANCj4g
V2hhdCBJIGZvdW5kIHdhcyB0aGF0IG5ldHdvcmsgdHJhZmZpYyAqd2FzKiBiZWluZyBhdHRlbXB0
ZWQgb3ZlciBldGgwLg0KPiBIZXJlIGlzIGEgcGxhaW4gdGV4dCBleHBvcnQgb2YgdGhlIHRyYW5z
bWl0IHNpZGUgKHRoZSBYNTAwMC8yMCkgdGhhdA0KPiB3YXMgY2FwdHVyZWQgdXNpbmcgV2lyZXNo
YXJrLg0KPiANCj4gKFRoZXJlIHdlcmUgbW9yZSBuZXR3b3JrIHBhY2tldHMgYmVpbmcgc2VudCBm
cm9tIHRoZSBYNTAwMC8yMCwNCj4gIMKgaG93ZXZlciwgSSBhbSBvbmx5IHNob3dpbmcgREhDUCB0
cmFmZmljIHRvIHNhdmUgc3BhY2UgaW4gdGhpcyBwb3N0KToNCj4gDQo+IC0tLQ0KPiBOby7CoMKg
wqDCoCBUaW1lwqDCoMKgwqDCoMKgwqDCoMKgwqAgU291cmNlwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgIERlc3RpbmF0aW9uIFByb3RvY29sIExlbmd0aA0KPiBJbmZvDQo+ICDCoMKgwqDC
oMKgIDIgMC4wNDIyNTk4NDPCoMKgwqAgMC4wLjAuMMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqAgMjU1LjI1NS4yNTUuMjU1IERIQ1ANCj4gMzQywqDCoMKgIERIQ1AgRGlzY292ZXIgLSBUcmFu
c2FjdGlvbiBJRCAweDY1NWQ5MWU4DQo+IA0KPiBGcmFtZSAyOiAzNDIgYnl0ZXMgb24gd2lyZSAo
MjczNiBiaXRzKSwgMzQyIGJ5dGVzIGNhcHR1cmVkICgyNzM2IGJpdHMpDQo+IG9uIGludGVyZmFj
ZSAwDQo+IEV0aGVybmV0IElJLCBTcmM6IENvbW1vZG9yXzExOjExOjExICgwMDo4MDoxMDoxMTox
MToxMSksIERzdDogQnJvYWRjYXN0DQo+IChmZjpmZjpmZjpmZjpmZjpmZikNCj4gSW50ZXJuZXQg
UHJvdG9jb2wgVmVyc2lvbiA0LCBTcmM6IDAuMC4wLjAsIERzdDogMjU1LjI1NS4yNTUuMjU1DQo+
IFVzZXIgRGF0YWdyYW0gUHJvdG9jb2wsIFNyYyBQb3J0OiA2OCwgRHN0IFBvcnQ6IDY3DQo+IEJv
b3RzdHJhcCBQcm90b2NvbCAoRGlzY292ZXIpDQo+IA0KPiBOby7CoMKgwqDCoCBUaW1lwqDCoMKg
wqDCoMKgwqDCoMKgwqAgU291cmNlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERlc3Rp
bmF0aW9uIFByb3RvY29sIExlbmd0aA0KPiBJbmZvDQo+ICDCoMKgwqDCoCAxNiAzLjgzMDAwMTE1
MsKgwqDCoCAwLjAuMC4wwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyNTUuMjU1LjI1NS4y
NTUgREhDUA0KPiAzNDLCoMKgwqAgREhDUCBEaXNjb3ZlciAtIFRyYW5zYWN0aW9uIElEIDB4NjU1
ZDkxZTgNCj4gDQo+IEZyYW1lIDE2OiAzNDIgYnl0ZXMgb24gd2lyZSAoMjczNiBiaXRzKSwgMzQy
IGJ5dGVzIGNhcHR1cmVkICgyNzM2IGJpdHMpDQo+IG9uIGludGVyZmFjZSAwDQo+IEV0aGVybmV0
IElJLCBTcmM6IENvbW1vZG9yXzExOjExOjExICgwMDo4MDoxMDoxMToxMToxMSksIERzdDogQnJv
YWRjYXN0DQo+IChmZjpmZjpmZjpmZjpmZjpmZikNCj4gSW50ZXJuZXQgUHJvdG9jb2wgVmVyc2lv
biA0LCBTcmM6IDAuMC4wLjAsIERzdDogMjU1LjI1NS4yNTUuMjU1DQo+IFVzZXIgRGF0YWdyYW0g
UHJvdG9jb2wsIFNyYyBQb3J0OiA2OCwgRHN0IFBvcnQ6IDY3DQo+IEJvb3RzdHJhcCBQcm90b2Nv
bCAoRGlzY292ZXIpDQo+IA0KPiBOby7CoMKgwqDCoCBUaW1lwqDCoMKgwqDCoMKgwqDCoMKgwqAg
U291cmNlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERlc3RpbmF0aW9uIFByb3RvY29s
IExlbmd0aA0KPiBJbmZvDQo+ICDCoMKgwqDCoCAyMSA5LjMwODkxNDUzM8KgwqDCoCAwLjAuMC4w
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyNTUuMjU1LjI1NS4yNTUgREhDUA0KPiAzNDLC
oMKgwqAgREhDUCBEaXNjb3ZlciAtIFRyYW5zYWN0aW9uIElEIDB4NjU1ZDkxZTgNCj4gDQo+IEZy
YW1lIDIxOiAzNDIgYnl0ZXMgb24gd2lyZSAoMjczNiBiaXRzKSwgMzQyIGJ5dGVzIGNhcHR1cmVk
ICgyNzM2IGJpdHMpDQo+IG9uIGludGVyZmFjZSAwDQo+IEV0aGVybmV0IElJLCBTcmM6IENvbW1v
ZG9yXzExOjExOjExICgwMDo4MDoxMDoxMToxMToxMSksIERzdDogQnJvYWRjYXN0DQo+IChmZjpm
ZjpmZjpmZjpmZjpmZikNCj4gSW50ZXJuZXQgUHJvdG9jb2wgVmVyc2lvbiA0LCBTcmM6IDAuMC4w
LjAsIERzdDogMjU1LjI1NS4yNTUuMjU1DQo+IFVzZXIgRGF0YWdyYW0gUHJvdG9jb2wsIFNyYyBQ
b3J0OiA2OCwgRHN0IFBvcnQ6IDY3DQo+IEJvb3RzdHJhcCBQcm90b2NvbCAoRGlzY292ZXIpDQo+
IA0KPiBOby7CoMKgwqDCoCBUaW1lwqDCoMKgwqDCoMKgwqDCoMKgwqAgU291cmNlwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgIERlc3RpbmF0aW9uIFByb3RvY29sIExlbmd0aA0KPiBJbmZv
DQo+ICDCoMKgwqDCoCAyMyAxOC45MDY0MDUzNDPCoMKgIDAuMC4wLjDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgIDI1NS4yNTUuMjU1LjI1NSBESENQDQo+IDM0MsKgwqDCoCBESENQIERpc2Nv
dmVyIC0gVHJhbnNhY3Rpb24gSUQgMHg2NTVkOTFlOA0KPiANCj4gRnJhbWUgMjM6IDM0MiBieXRl
cyBvbiB3aXJlICgyNzM2IGJpdHMpLCAzNDIgYnl0ZXMgY2FwdHVyZWQgKDI3MzYgYml0cykNCj4g
b24gaW50ZXJmYWNlIDANCj4gRXRoZXJuZXQgSUksIFNyYzogQ29tbW9kb3JfMTE6MTE6MTEgKDAw
OjgwOjEwOjExOjExOjExKSwgRHN0OiBCcm9hZGNhc3QNCj4gKGZmOmZmOmZmOmZmOmZmOmZmKQ0K
PiBJbnRlcm5ldCBQcm90b2NvbCBWZXJzaW9uIDQsIFNyYzogMC4wLjAuMCwgRHN0OiAyNTUuMjU1
LjI1NS4yNTUNCj4gVXNlciBEYXRhZ3JhbSBQcm90b2NvbCwgU3JjIFBvcnQ6IDY4LCBEc3QgUG9y
dDogNjcNCj4gQm9vdHN0cmFwIFByb3RvY29sIChEaXNjb3ZlcikNCj4gDQo+IE5vLsKgwqDCoMKg
IFRpbWXCoMKgwqDCoMKgwqDCoMKgwqDCoCBTb3VyY2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqAgRGVzdGluYXRpb24gUHJvdG9jb2wgTGVuZ3RoDQo+IEluZm8NCj4gIMKgwqDCoMKgIDI1
IDM2LjM5MDkyNjQ1MMKgwqAgMC4wLjAuMMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjU1
LjI1NS4yNTUuMjU1IERIQ1ANCj4gMzQywqDCoMKgIERIQ1AgRGlzY292ZXIgLSBUcmFuc2FjdGlv
biBJRCAweDY1NWQ5MWU4DQo+IA0KPiBGcmFtZSAyNTogMzQyIGJ5dGVzIG9uIHdpcmUgKDI3MzYg
Yml0cyksIDM0MiBieXRlcyBjYXB0dXJlZCAoMjczNiBiaXRzKQ0KPiBvbiBpbnRlcmZhY2UgMA0K
PiBFdGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEp
LCBEc3Q6IEJyb2FkY2FzdA0KPiAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+IEludGVybmV0IFByb3Rv
Y29sIFZlcnNpb24gNCwgU3JjOiAwLjAuMC4wLCBEc3Q6IDI1NS4yNTUuMjU1LjI1NQ0KPiBVc2Vy
IERhdGFncmFtIFByb3RvY29sLCBTcmMgUG9ydDogNjgsIERzdCBQb3J0OiA2Nw0KPiBCb290c3Ry
YXAgUHJvdG9jb2wgKERpc2NvdmVyKQ0KPiANCj4gTm8uwqDCoMKgwqAgVGltZcKgwqDCoMKgwqDC
oMKgwqDCoMKgIFNvdXJjZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEZXN0aW5hdGlv
biBQcm90b2NvbCBMZW5ndGgNCj4gSW5mbw0KPiAgwqDCoMKgwqAgMjYgNDQuMDQ4MzI4NDEywqDC
oCAwLjAuMC4wwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyNTUuMjU1LjI1NS4yNTUgREhD
UA0KPiAzNDLCoMKgwqAgREhDUCBEaXNjb3ZlciAtIFRyYW5zYWN0aW9uIElEIDB4NjU1ZDkxZTgN
Cj4gDQo+IEZyYW1lIDI2OiAzNDIgYnl0ZXMgb24gd2lyZSAoMjczNiBiaXRzKSwgMzQyIGJ5dGVz
IGNhcHR1cmVkICgyNzM2IGJpdHMpDQo+IG9uIGludGVyZmFjZSAwDQo+IEV0aGVybmV0IElJLCBT
cmM6IENvbW1vZG9yXzExOjExOjExICgwMDo4MDoxMDoxMToxMToxMSksIERzdDogQnJvYWRjYXN0
DQo+IChmZjpmZjpmZjpmZjpmZjpmZikNCj4gSW50ZXJuZXQgUHJvdG9jb2wgVmVyc2lvbiA0LCBT
cmM6IDAuMC4wLjAsIERzdDogMjU1LjI1NS4yNTUuMjU1DQo+IFVzZXIgRGF0YWdyYW0gUHJvdG9j
b2wsIFNyYyBQb3J0OiA2OCwgRHN0IFBvcnQ6IDY3DQo+IEJvb3RzdHJhcCBQcm90b2NvbCAoRGlz
Y292ZXIpDQo+IA0KPiBOby7CoMKgwqDCoCBUaW1lwqDCoMKgwqDCoMKgwqDCoMKgwqAgU291cmNl
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERlc3RpbmF0aW9uIFByb3RvY29sIExlbmd0
aA0KPiBJbmZvDQo+ICDCoMKgwqDCoCAzMCA0NC44ODkwNDkyMDPCoMKgIDAuMC4wLjDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgIDI1NS4yNTUuMjU1LjI1NSBESENQDQo+IDM0MsKgwqDCoCBE
SENQIERpc2NvdmVyIC0gVHJhbnNhY3Rpb24gSUQgMHg0MjFiYWRlMw0KPiANCj4gRnJhbWUgMzA6
IDM0MiBieXRlcyBvbiB3aXJlICgyNzM2IGJpdHMpLCAzNDIgYnl0ZXMgY2FwdHVyZWQgKDI3MzYg
Yml0cykNCj4gb24gaW50ZXJmYWNlIDANCj4gRXRoZXJuZXQgSUksIFNyYzogQ29tbW9kb3JfMTE6
MTE6MTEgKDAwOjgwOjEwOjExOjExOjExKSwgRHN0OiBCcm9hZGNhc3QNCj4gKGZmOmZmOmZmOmZm
OmZmOmZmKQ0KPiBJbnRlcm5ldCBQcm90b2NvbCBWZXJzaW9uIDQsIFNyYzogMC4wLjAuMCwgRHN0
OiAyNTUuMjU1LjI1NS4yNTUNCj4gVXNlciBEYXRhZ3JhbSBQcm90b2NvbCwgU3JjIFBvcnQ6IDY4
LCBEc3QgUG9ydDogNjcNCj4gQm9vdHN0cmFwIFByb3RvY29sIChEaXNjb3ZlcikNCj4gDQo+IE5v
LsKgwqDCoMKgIFRpbWXCoMKgwqDCoMKgwqDCoMKgwqDCoCBTb3VyY2XCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqAgRGVzdGluYXRpb24gUHJvdG9jb2wgTGVuZ3RoDQo+IEluZm8NCj4gIMKg
wqDCoMKgIDQ0IDQ4LjI1NDQ5NTMwNMKgwqAgMC4wLjAuMMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqAgMjU1LjI1NS4yNTUuMjU1IERIQ1ANCj4gMzQywqDCoMKgIERIQ1AgRGlzY292ZXIgLSBU
cmFuc2FjdGlvbiBJRCAweDQyMWJhZGUzDQo+IA0KPiBGcmFtZSA0NDogMzQyIGJ5dGVzIG9uIHdp
cmUgKDI3MzYgYml0cyksIDM0MiBieXRlcyBjYXB0dXJlZCAoMjczNiBiaXRzKQ0KPiBvbiBpbnRl
cmZhY2UgMA0KPiBFdGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6
MTE6MTE6MTEpLCBEc3Q6IEJyb2FkY2FzdA0KPiAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+IEludGVy
bmV0IFByb3RvY29sIFZlcnNpb24gNCwgU3JjOiAwLjAuMC4wLCBEc3Q6IDI1NS4yNTUuMjU1LjI1
NQ0KPiBVc2VyIERhdGFncmFtIFByb3RvY29sLCBTcmMgUG9ydDogNjgsIERzdCBQb3J0OiA2Nw0K
PiBCb290c3RyYXAgUHJvdG9jb2wgKERpc2NvdmVyKQ0KPiANCj4gTm8uwqDCoMKgwqAgVGltZcKg
wqDCoMKgwqDCoMKgwqDCoMKgIFNvdXJjZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBE
ZXN0aW5hdGlvbiBQcm90b2NvbCBMZW5ndGgNCj4gSW5mbw0KPiAgwqDCoMKgwqAgNDkgNTQuMjk5
MDUyNzMywqDCoCAwLjAuMC4wwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyNTUuMjU1LjI1
NS4yNTUgREhDUA0KPiAzNDLCoMKgwqAgREhDUCBEaXNjb3ZlciAtIFRyYW5zYWN0aW9uIElEIDB4
NDIxYmFkZTMNCj4gDQo+IEZyYW1lIDQ5OiAzNDIgYnl0ZXMgb24gd2lyZSAoMjczNiBiaXRzKSwg
MzQyIGJ5dGVzIGNhcHR1cmVkICgyNzM2IGJpdHMpDQo+IG9uIGludGVyZmFjZSAwDQo+IEV0aGVy
bmV0IElJLCBTcmM6IENvbW1vZG9yXzExOjExOjExICgwMDo4MDoxMDoxMToxMToxMSksIERzdDog
QnJvYWRjYXN0DQo+IChmZjpmZjpmZjpmZjpmZjpmZikNCj4gSW50ZXJuZXQgUHJvdG9jb2wgVmVy
c2lvbiA0LCBTcmM6IDAuMC4wLjAsIERzdDogMjU1LjI1NS4yNTUuMjU1DQo+IFVzZXIgRGF0YWdy
YW0gUHJvdG9jb2wsIFNyYyBQb3J0OiA2OCwgRHN0IFBvcnQ6IDY3DQo+IEJvb3RzdHJhcCBQcm90
b2NvbCAoRGlzY292ZXIpDQo+IA0KPiBOby7CoMKgwqDCoCBUaW1lwqDCoMKgwqDCoMKgwqDCoMKg
wqAgU291cmNlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERlc3RpbmF0aW9uIFByb3Rv
Y29sIExlbmd0aA0KPiBJbmZvDQo+ICDCoMKgwqDCoCA1MSA2Mi42NzIwMDc0ODLCoMKgIDAuMC4w
LjDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDI1NS4yNTUuMjU1LjI1NSBESENQDQo+IDM0
MsKgwqDCoCBESENQIERpc2NvdmVyIC0gVHJhbnNhY3Rpb24gSUQgMHg0MjFiYWRlMw0KPiANCj4g
RnJhbWUgNTE6IDM0MiBieXRlcyBvbiB3aXJlICgyNzM2IGJpdHMpLCAzNDIgYnl0ZXMgY2FwdHVy
ZWQgKDI3MzYgYml0cykNCj4gb24gaW50ZXJmYWNlIDANCj4gRXRoZXJuZXQgSUksIFNyYzogQ29t
bW9kb3JfMTE6MTE6MTEgKDAwOjgwOjEwOjExOjExOjExKSwgRHN0OiBCcm9hZGNhc3QNCj4gKGZm
OmZmOmZmOmZmOmZmOmZmKQ0KPiBJbnRlcm5ldCBQcm90b2NvbCBWZXJzaW9uIDQsIFNyYzogMC4w
LjAuMCwgRHN0OiAyNTUuMjU1LjI1NS4yNTUNCj4gVXNlciBEYXRhZ3JhbSBQcm90b2NvbCwgU3Jj
IFBvcnQ6IDY4LCBEc3QgUG9ydDogNjcNCj4gQm9vdHN0cmFwIFByb3RvY29sIChEaXNjb3ZlcikN
Cj4gDQo+IE5vLsKgwqDCoMKgIFRpbWXCoMKgwqDCoMKgwqDCoMKgwqDCoCBTb3VyY2XCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRGVzdGluYXRpb24gUHJvdG9jb2wgTGVuZ3RoDQo+IElu
Zm8NCj4gIMKgwqDCoMKgIDUyIDc3LjQ4NTg5NjIwMsKgwqAgMC4wLjAuMMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqAgMjU1LjI1NS4yNTUuMjU1IERIQ1ANCj4gMzQywqDCoMKgIERIQ1AgRGlz
Y292ZXIgLSBUcmFuc2FjdGlvbiBJRCAweDQyMWJhZGUzDQo+IA0KPiBGcmFtZSA1MjogMzQyIGJ5
dGVzIG9uIHdpcmUgKDI3MzYgYml0cyksIDM0MiBieXRlcyBjYXB0dXJlZCAoMjczNiBiaXRzKQ0K
PiBvbiBpbnRlcmZhY2UgMA0KPiBFdGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8xMToxMToxMSAo
MDA6ODA6MTA6MTE6MTE6MTEpLCBEc3Q6IEJyb2FkY2FzdA0KPiAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYp
DQo+IEludGVybmV0IFByb3RvY29sIFZlcnNpb24gNCwgU3JjOiAwLjAuMC4wLCBEc3Q6IDI1NS4y
NTUuMjU1LjI1NQ0KPiBVc2VyIERhdGFncmFtIFByb3RvY29sLCBTcmMgUG9ydDogNjgsIERzdCBQ
b3J0OiA2Nw0KPiBCb290c3RyYXAgUHJvdG9jb2wgKERpc2NvdmVyKQ0KPiANCj4gTm8uwqDCoMKg
wqAgVGltZcKgwqDCoMKgwqDCoMKgwqDCoMKgIFNvdXJjZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoCBEZXN0aW5hdGlvbiBQcm90b2NvbCBMZW5ndGgNCj4gSW5mbw0KPiAgwqDCoMKgwqAg
NTYgODkuODk1MzA0MTUywqDCoCAwLjAuMC4wwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAy
NTUuMjU1LjI1NS4yNTUgREhDUA0KPiAzNDLCoMKgwqAgREhDUCBEaXNjb3ZlciAtIFRyYW5zYWN0
aW9uIElEIDB4NWRmNDdjODQNCj4gDQo+IEZyYW1lIDU2OiAzNDIgYnl0ZXMgb24gd2lyZSAoMjcz
NiBiaXRzKSwgMzQyIGJ5dGVzIGNhcHR1cmVkICgyNzM2IGJpdHMpDQo+IG9uIGludGVyZmFjZSAw
DQo+IEV0aGVybmV0IElJLCBTcmM6IENvbW1vZG9yXzExOjExOjExICgwMDo4MDoxMDoxMToxMTox
MSksIERzdDogQnJvYWRjYXN0DQo+IChmZjpmZjpmZjpmZjpmZjpmZikNCj4gSW50ZXJuZXQgUHJv
dG9jb2wgVmVyc2lvbiA0LCBTcmM6IDAuMC4wLjAsIERzdDogMjU1LjI1NS4yNTUuMjU1DQo+IFVz
ZXIgRGF0YWdyYW0gUHJvdG9jb2wsIFNyYyBQb3J0OiA2OCwgRHN0IFBvcnQ6IDY3DQo+IEJvb3Rz
dHJhcCBQcm90b2NvbCAoRGlzY292ZXIpDQo+IA0KPiBOby7CoMKgwqDCoCBUaW1lwqDCoMKgwqDC
oMKgwqDCoMKgwqAgU291cmNlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERlc3RpbmF0
aW9uIFByb3RvY29sIExlbmd0aA0KPiBJbmZvDQo+ICDCoMKgwqDCoCA3MSA5My44Mjg4MzcwMDjC
oMKgIDAuMC4wLjDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDI1NS4yNTUuMjU1LjI1NSBE
SENQDQo+IDM0MsKgwqDCoCBESENQIERpc2NvdmVyIC0gVHJhbnNhY3Rpb24gSUQgMHg1ZGY0N2M4
NA0KPiANCj4gRnJhbWUgNzE6IDM0MiBieXRlcyBvbiB3aXJlICgyNzM2IGJpdHMpLCAzNDIgYnl0
ZXMgY2FwdHVyZWQgKDI3MzYgYml0cykNCj4gb24gaW50ZXJmYWNlIDANCj4gRXRoZXJuZXQgSUks
IFNyYzogQ29tbW9kb3JfMTE6MTE6MTEgKDAwOjgwOjEwOjExOjExOjExKSwgRHN0OiBCcm9hZGNh
c3QNCj4gKGZmOmZmOmZmOmZmOmZmOmZmKQ0KPiBJbnRlcm5ldCBQcm90b2NvbCBWZXJzaW9uIDQs
IFNyYzogMC4wLjAuMCwgRHN0OiAyNTUuMjU1LjI1NS4yNTUNCj4gVXNlciBEYXRhZ3JhbSBQcm90
b2NvbCwgU3JjIFBvcnQ6IDY4LCBEc3QgUG9ydDogNjcNCj4gQm9vdHN0cmFwIFByb3RvY29sIChE
aXNjb3ZlcikNCj4gDQo+IE5vLsKgwqDCoMKgIFRpbWXCoMKgwqDCoMKgwqDCoMKgwqDCoCBTb3Vy
Y2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRGVzdGluYXRpb24gUHJvdG9jb2wgTGVu
Z3RoDQo+IEluZm8NCj4gIMKgwqDCoMKgIDc0IDk3Ljk0ODQ1MzE1OMKgwqAgMC4wLjAuMMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjU1LjI1NS4yNTUuMjU1IERIQ1ANCj4gMzQywqDCoMKg
IERIQ1AgRGlzY292ZXIgLSBUcmFuc2FjdGlvbiBJRCAweDVkZjQ3Yzg0DQo+IA0KPiBGcmFtZSA3
NDogMzQyIGJ5dGVzIG9uIHdpcmUgKDI3MzYgYml0cyksIDM0MiBieXRlcyBjYXB0dXJlZCAoMjcz
NiBiaXRzKQ0KPiBvbiBpbnRlcmZhY2UgMA0KPiBFdGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8x
MToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpLCBEc3Q6IEJyb2FkY2FzdA0KPiAoZmY6ZmY6ZmY6
ZmY6ZmY6ZmYpDQo+IEludGVybmV0IFByb3RvY29sIFZlcnNpb24gNCwgU3JjOiAwLjAuMC4wLCBE
c3Q6IDI1NS4yNTUuMjU1LjI1NQ0KPiBVc2VyIERhdGFncmFtIFByb3RvY29sLCBTcmMgUG9ydDog
NjgsIERzdCBQb3J0OiA2Nw0KPiBCb290c3RyYXAgUHJvdG9jb2wgKERpc2NvdmVyKQ0KPiAtLS0N
Cj4gDQo+IE5vdywgb3ZlciBvbiB0aGUgZXh0ZXJuYWwgTGludXggbWFjaGluZSAoMTkyLjE2OC4x
LjIxMCksIEkgc2V0dXAgYQ0KPiBXaXJlc2hhcmsgY2FwdHVyZQ0KPiB3aGljaCBmaWx0ZXJlZCBm
b3IgYW55IHRyYWZmaWMgdG8vZnJvbSB0aGUgTUFDIGFkZHJlc3Mgb2YgdGhlIFg1MDAwLzIwJ3MN
Cj4gZXRoMCwgaW4gdGhpcyBjYXNlDQo+IHNob3duIGFzIENvbW1vZG9yXzExOjExOjExICgwMDo4
MDoxMDoxMToxMToxMSkgYmVsb3c6DQo+IA0KPiBUaGlzIGV4cG9ydCBzaG93cyBvbmx5IHRoZSBE
SENQIHRyYWZmaWMgc2VlbiBmcm9tIG91dHNpZGUgdGhlIFg1MDAwLzIwLA0KPiBhbmQgYXMgeW91
IGNhbiBzZWUsIGEgbWF0Y2hpbmcgc2V0IG9mIERIQ1AgcmVxdWVzdHMgKmRvIGluIGZhY3QqIG1h
a2UNCj4gaXQgdG8gdGhlIG91dHNpZGUgbmV0d29yay4NCj4gDQo+IC0tLQ0KPiBOby7CoMKgwqDC
oCBUaW1lwqDCoMKgwqDCoMKgwqDCoMKgwqAgU291cmNlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgIERlc3RpbmF0aW9uIFByb3RvY29sIExlbmd0aA0KPiBJbmZvDQo+ICDCoMKgwqDCoCAz
OSA1LjY3MTc2MjUwOcKgwqDCoCAwLjAuMC4wwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAy
NTUuMjU1LjI1NS4yNTUgREhDUA0KPiAzNDLCoMKgwqAgREhDUCBEaXNjb3ZlciAtIFRyYW5zYWN0
aW9uIElEIDB4NjU1ZDkxZTgNCj4gDQo+IEZyYW1lIDM5OiAzNDIgYnl0ZXMgb24gd2lyZSAoMjcz
NiBiaXRzKSwgMzQyIGJ5dGVzIGNhcHR1cmVkICgyNzM2IGJpdHMpDQo+IG9uIGludGVyZmFjZSAw
DQo+IEV0aGVybmV0IElJLCBTcmM6IENvbW1vZG9yXzExOjExOjExICgwMDo4MDoxMDoxMToxMTox
MSksIERzdDogQnJvYWRjYXN0DQo+IChmZjpmZjpmZjpmZjpmZjpmZikNCj4gIMKgwqDCoCBEZXN0
aW5hdGlvbjogQnJvYWRjYXN0IChmZjpmZjpmZjpmZjpmZjpmZikNCj4gIMKgwqDCoCBTb3VyY2U6
IENvbW1vZG9yXzExOjExOjExICgwMDo4MDoxMDoxMToxMToxMSkNCj4gIMKgwqDCoCBUeXBlOiBJ
UHY0ICgweDA4MDApDQo+IEludGVybmV0IFByb3RvY29sIFZlcnNpb24gNCwgU3JjOiAwLjAuMC4w
LCBEc3Q6IDI1NS4yNTUuMjU1LjI1NQ0KPiBVc2VyIERhdGFncmFtIFByb3RvY29sLCBTcmMgUG9y
dDogNjgsIERzdCBQb3J0OiA2Nw0KPiBCb290c3RyYXAgUHJvdG9jb2wgKERpc2NvdmVyKQ0KPiAN
Cj4gTm8uwqDCoMKgwqAgVGltZcKgwqDCoMKgwqDCoMKgwqDCoMKgIFNvdXJjZcKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoCBEZXN0aW5hdGlvbiBQcm90b2NvbCBMZW5ndGgNCj4gSW5mbw0K
PiAgwqDCoMKgwqAgNzMgOS40NTE4OTU0MDTCoMKgwqAgMC4wLjAuMMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqAgMjU1LjI1NS4yNTUuMjU1IERIQ1ANCj4gMzQywqDCoMKgIERIQ1AgRGlzY292
ZXIgLSBUcmFuc2FjdGlvbiBJRCAweDY1NWQ5MWU4DQo+IA0KPiBGcmFtZSA3MzogMzQyIGJ5dGVz
IG9uIHdpcmUgKDI3MzYgYml0cyksIDM0MiBieXRlcyBjYXB0dXJlZCAoMjczNiBiaXRzKQ0KPiBv
biBpbnRlcmZhY2UgMA0KPiBFdGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6
ODA6MTA6MTE6MTE6MTEpLCBEc3Q6IEJyb2FkY2FzdA0KPiAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+
ICDCoMKgwqAgRGVzdGluYXRpb246IEJyb2FkY2FzdCAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ICDC
oMKgwqAgU291cmNlOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpDQo+ICDC
oMKgwqAgVHlwZTogSVB2NCAoMHgwODAwKQ0KPiBJbnRlcm5ldCBQcm90b2NvbCBWZXJzaW9uIDQs
IFNyYzogMC4wLjAuMCwgRHN0OiAyNTUuMjU1LjI1NS4yNTUNCj4gVXNlciBEYXRhZ3JhbSBQcm90
b2NvbCwgU3JjIFBvcnQ6IDY4LCBEc3QgUG9ydDogNjcNCj4gQm9vdHN0cmFwIFByb3RvY29sIChE
aXNjb3ZlcikNCj4gDQo+IE5vLsKgwqDCoMKgIFRpbWXCoMKgwqDCoMKgwqDCoMKgwqDCoCBTb3Vy
Y2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRGVzdGluYXRpb24gUHJvdG9jb2wgTGVu
Z3RoDQo+IEluZm8NCj4gIMKgwqDCoCAxNTQgMTQuOTE5OTQ0NDgwwqDCoCAwLjAuMC4wwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyNTUuMjU1LjI1NS4yNTUgREhDUA0KPiAzNDLCoMKgwqAg
REhDUCBEaXNjb3ZlciAtIFRyYW5zYWN0aW9uIElEIDB4NjU1ZDkxZTgNCj4gDQo+IEZyYW1lIDE1
NDogMzQyIGJ5dGVzIG9uIHdpcmUgKDI3MzYgYml0cyksIDM0MiBieXRlcyBjYXB0dXJlZCAoMjcz
NiBiaXRzKQ0KPiBvbiBpbnRlcmZhY2UgMA0KPiBFdGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8x
MToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpLCBEc3Q6IEJyb2FkY2FzdA0KPiAoZmY6ZmY6ZmY6
ZmY6ZmY6ZmYpDQo+ICDCoMKgwqAgRGVzdGluYXRpb246IEJyb2FkY2FzdCAoZmY6ZmY6ZmY6ZmY6
ZmY6ZmYpDQo+ICDCoMKgwqAgU291cmNlOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6
MTE6MTEpDQo+ICDCoMKgwqAgVHlwZTogSVB2NCAoMHgwODAwKQ0KPiBJbnRlcm5ldCBQcm90b2Nv
bCBWZXJzaW9uIDQsIFNyYzogMC4wLjAuMCwgRHN0OiAyNTUuMjU1LjI1NS4yNTUNCj4gVXNlciBE
YXRhZ3JhbSBQcm90b2NvbCwgU3JjIFBvcnQ6IDY4LCBEc3QgUG9ydDogNjcNCj4gQm9vdHN0cmFw
IFByb3RvY29sIChEaXNjb3ZlcikNCj4gDQo+IE5vLsKgwqDCoMKgIFRpbWXCoMKgwqDCoMKgwqDC
oMKgwqDCoCBTb3VyY2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRGVzdGluYXRpb24g
UHJvdG9jb2wgTGVuZ3RoDQo+IEluZm8NCj4gIMKgwqDCoCAyNjkgMjQuNDk4MzM1OTk2wqDCoCAw
LjAuMC4wwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyNTUuMjU1LjI1NS4yNTUgREhDUA0K
PiAzNDLCoMKgwqAgREhDUCBEaXNjb3ZlciAtIFRyYW5zYWN0aW9uIElEIDB4NjU1ZDkxZTgNCj4g
DQo+IEZyYW1lIDI2OTogMzQyIGJ5dGVzIG9uIHdpcmUgKDI3MzYgYml0cyksIDM0MiBieXRlcyBj
YXB0dXJlZCAoMjczNiBiaXRzKQ0KPiBvbiBpbnRlcmZhY2UgMA0KPiBFdGhlcm5ldCBJSSwgU3Jj
OiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpLCBEc3Q6IEJyb2FkY2FzdA0K
PiAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ICDCoMKgwqAgRGVzdGluYXRpb246IEJyb2FkY2FzdCAo
ZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ICDCoMKgwqAgU291cmNlOiBDb21tb2Rvcl8xMToxMToxMSAo
MDA6ODA6MTA6MTE6MTE6MTEpDQo+ICDCoMKgwqAgVHlwZTogSVB2NCAoMHgwODAwKQ0KPiBJbnRl
cm5ldCBQcm90b2NvbCBWZXJzaW9uIDQsIFNyYzogMC4wLjAuMCwgRHN0OiAyNTUuMjU1LjI1NS4y
NTUNCj4gVXNlciBEYXRhZ3JhbSBQcm90b2NvbCwgU3JjIFBvcnQ6IDY4LCBEc3QgUG9ydDogNjcN
Cj4gQm9vdHN0cmFwIFByb3RvY29sIChEaXNjb3ZlcikNCj4gDQo+IE5vLsKgwqDCoMKgIFRpbWXC
oMKgwqDCoMKgwqDCoMKgwqDCoCBTb3VyY2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg
RGVzdGluYXRpb24gUHJvdG9jb2wgTGVuZ3RoDQo+IEluZm8NCj4gIMKgwqDCoCA2MzAgNDEuOTQ4
MDE4NjQ4wqDCoCAwLjAuMC4wwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyNTUuMjU1LjI1
NS4yNTUgREhDUA0KPiAzNDLCoMKgwqAgREhDUCBEaXNjb3ZlciAtIFRyYW5zYWN0aW9uIElEIDB4
NjU1ZDkxZTgNCj4gDQo+IEZyYW1lIDYzMDogMzQyIGJ5dGVzIG9uIHdpcmUgKDI3MzYgYml0cyks
IDM0MiBieXRlcyBjYXB0dXJlZCAoMjczNiBiaXRzKQ0KPiBvbiBpbnRlcmZhY2UgMA0KPiBFdGhl
cm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpLCBEc3Q6
IEJyb2FkY2FzdA0KPiAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ICDCoMKgwqAgRGVzdGluYXRpb246
IEJyb2FkY2FzdCAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ICDCoMKgwqAgU291cmNlOiBDb21tb2Rv
cl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpDQo+ICDCoMKgwqAgVHlwZTogSVB2NCAoMHgw
ODAwKQ0KPiBJbnRlcm5ldCBQcm90b2NvbCBWZXJzaW9uIDQsIFNyYzogMC4wLjAuMCwgRHN0OiAy
NTUuMjU1LjI1NS4yNTUNCj4gVXNlciBEYXRhZ3JhbSBQcm90b2NvbCwgU3JjIFBvcnQ6IDY4LCBE
c3QgUG9ydDogNjcNCj4gQm9vdHN0cmFwIFByb3RvY29sIChEaXNjb3ZlcikNCj4gDQo+IE5vLsKg
wqDCoMKgIFRpbWXCoMKgwqDCoMKgwqDCoMKgwqDCoCBTb3VyY2XCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqAgRGVzdGluYXRpb24gUHJvdG9jb2wgTGVuZ3RoDQo+IEluZm8NCj4gIMKgwqDC
oCA3MDEgNDkuNTkwMjExMjY0wqDCoCAwLjAuMC4wwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oCAyNTUuMjU1LjI1NS4yNTUgREhDUA0KPiAzNDLCoMKgwqAgREhDUCBEaXNjb3ZlciAtIFRyYW5z
YWN0aW9uIElEIDB4NjU1ZDkxZTgNCj4gDQo+IEZyYW1lIDcwMTogMzQyIGJ5dGVzIG9uIHdpcmUg
KDI3MzYgYml0cyksIDM0MiBieXRlcyBjYXB0dXJlZCAoMjczNiBiaXRzKQ0KPiBvbiBpbnRlcmZh
Y2UgMA0KPiBFdGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6
MTE6MTEpLCBEc3Q6IEJyb2FkY2FzdA0KPiAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ICDCoMKgwqAg
RGVzdGluYXRpb246IEJyb2FkY2FzdCAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ICDCoMKgwqAgU291
cmNlOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpDQo+ICDCoMKgwqAgVHlw
ZTogSVB2NCAoMHgwODAwKQ0KPiBJbnRlcm5ldCBQcm90b2NvbCBWZXJzaW9uIDQsIFNyYzogMC4w
LjAuMCwgRHN0OiAyNTUuMjU1LjI1NS4yNTUNCj4gVXNlciBEYXRhZ3JhbSBQcm90b2NvbCwgU3Jj
IFBvcnQ6IDY4LCBEc3QgUG9ydDogNjcNCj4gQm9vdHN0cmFwIFByb3RvY29sIChEaXNjb3ZlcikN
Cj4gDQo+IE5vLsKgwqDCoMKgIFRpbWXCoMKgwqDCoMKgwqDCoMKgwqDCoCBTb3VyY2XCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRGVzdGluYXRpb24gUHJvdG9jb2wgTGVuZ3RoDQo+IElu
Zm8NCj4gIMKgwqDCoCA3MDYgNTAuNDI5MjY1OTM4wqDCoCAwLjAuMC4wwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoCAyNTUuMjU1LjI1NS4yNTUgREhDUA0KPiAzNDLCoMKgwqAgREhDUCBEaXNj
b3ZlciAtIFRyYW5zYWN0aW9uIElEIDB4NDIxYmFkZTMNCj4gDQo+IEZyYW1lIDcwNjogMzQyIGJ5
dGVzIG9uIHdpcmUgKDI3MzYgYml0cyksIDM0MiBieXRlcyBjYXB0dXJlZCAoMjczNiBiaXRzKQ0K
PiBvbiBpbnRlcmZhY2UgMA0KPiBFdGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8xMToxMToxMSAo
MDA6ODA6MTA6MTE6MTE6MTEpLCBEc3Q6IEJyb2FkY2FzdA0KPiAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYp
DQo+ICDCoMKgwqAgRGVzdGluYXRpb246IEJyb2FkY2FzdCAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+
ICDCoMKgwqAgU291cmNlOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpDQo+
ICDCoMKgwqAgVHlwZTogSVB2NCAoMHgwODAwKQ0KPiBJbnRlcm5ldCBQcm90b2NvbCBWZXJzaW9u
IDQsIFNyYzogMC4wLjAuMCwgRHN0OiAyNTUuMjU1LjI1NS4yNTUNCj4gVXNlciBEYXRhZ3JhbSBQ
cm90b2NvbCwgU3JjIFBvcnQ6IDY4LCBEc3QgUG9ydDogNjcNCj4gQm9vdHN0cmFwIFByb3RvY29s
IChEaXNjb3ZlcikNCj4gDQo+IE5vLsKgwqDCoMKgIFRpbWXCoMKgwqDCoMKgwqDCoMKgwqDCoCBT
b3VyY2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRGVzdGluYXRpb24gUHJvdG9jb2wg
TGVuZ3RoDQo+IEluZm8NCj4gIMKgwqDCoCA3NDQgNTMuNzg4MDM1MzE3wqDCoCAwLjAuMC4wwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyNTUuMjU1LjI1NS4yNTUgREhDUA0KPiAzNDLCoMKg
wqAgREhDUCBEaXNjb3ZlciAtIFRyYW5zYWN0aW9uIElEIDB4NDIxYmFkZTMNCj4gDQo+IEZyYW1l
IDc0NDogMzQyIGJ5dGVzIG9uIHdpcmUgKDI3MzYgYml0cyksIDM0MiBieXRlcyBjYXB0dXJlZCAo
MjczNiBiaXRzKQ0KPiBvbiBpbnRlcmZhY2UgMA0KPiBFdGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rv
cl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpLCBEc3Q6IEJyb2FkY2FzdA0KPiAoZmY6ZmY6
ZmY6ZmY6ZmY6ZmYpDQo+ICDCoMKgwqAgRGVzdGluYXRpb246IEJyb2FkY2FzdCAoZmY6ZmY6ZmY6
ZmY6ZmY6ZmYpDQo+ICDCoMKgwqAgU291cmNlOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6
MTE6MTE6MTEpDQo+ICDCoMKgwqAgVHlwZTogSVB2NCAoMHgwODAwKQ0KPiBJbnRlcm5ldCBQcm90
b2NvbCBWZXJzaW9uIDQsIFNyYzogMC4wLjAuMCwgRHN0OiAyNTUuMjU1LjI1NS4yNTUNCj4gVXNl
ciBEYXRhZ3JhbSBQcm90b2NvbCwgU3JjIFBvcnQ6IDY4LCBEc3QgUG9ydDogNjcNCj4gQm9vdHN0
cmFwIFByb3RvY29sIChEaXNjb3ZlcikNCj4gDQo+IE5vLsKgwqDCoMKgIFRpbWXCoMKgwqDCoMKg
wqDCoMKgwqDCoCBTb3VyY2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRGVzdGluYXRp
b24gUHJvdG9jb2wgTGVuZ3RoDQo+IEluZm8NCj4gIMKgwqDCoCA3OTcgNTkuODIwNTY4NjE0wqDC
oCAwLjAuMC4wwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyNTUuMjU1LjI1NS4yNTUgREhD
UA0KPiAzNDLCoMKgwqAgREhDUCBEaXNjb3ZlciAtIFRyYW5zYWN0aW9uIElEIDB4NDIxYmFkZTMN
Cj4gDQo+IEZyYW1lIDc5NzogMzQyIGJ5dGVzIG9uIHdpcmUgKDI3MzYgYml0cyksIDM0MiBieXRl
cyBjYXB0dXJlZCAoMjczNiBiaXRzKQ0KPiBvbiBpbnRlcmZhY2UgMA0KPiBFdGhlcm5ldCBJSSwg
U3JjOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpLCBEc3Q6IEJyb2FkY2Fz
dA0KPiAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ICDCoMKgwqAgRGVzdGluYXRpb246IEJyb2FkY2Fz
dCAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ICDCoMKgwqAgU291cmNlOiBDb21tb2Rvcl8xMToxMTox
MSAoMDA6ODA6MTA6MTE6MTE6MTEpDQo+ICDCoMKgwqAgVHlwZTogSVB2NCAoMHgwODAwKQ0KPiBJ
bnRlcm5ldCBQcm90b2NvbCBWZXJzaW9uIDQsIFNyYzogMC4wLjAuMCwgRHN0OiAyNTUuMjU1LjI1
NS4yNTUNCj4gVXNlciBEYXRhZ3JhbSBQcm90b2NvbCwgU3JjIFBvcnQ6IDY4LCBEc3QgUG9ydDog
NjcNCj4gQm9vdHN0cmFwIFByb3RvY29sIChEaXNjb3ZlcikNCj4gDQo+IE5vLsKgwqDCoMKgIFRp
bWXCoMKgwqDCoMKgwqDCoMKgwqDCoCBTb3VyY2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqAgRGVzdGluYXRpb24gUHJvdG9jb2wgTGVuZ3RoDQo+IEluZm8NCj4gIMKgwqDCoCA4NTIgNjgu
MTc2ODMzNjg2wqDCoCAwLjAuMC4wwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyNTUuMjU1
LjI1NS4yNTUgREhDUA0KPiAzNDLCoMKgwqAgREhDUCBEaXNjb3ZlciAtIFRyYW5zYWN0aW9uIElE
IDB4NDIxYmFkZTMNCj4gDQo+IEZyYW1lIDg1MjogMzQyIGJ5dGVzIG9uIHdpcmUgKDI3MzYgYml0
cyksIDM0MiBieXRlcyBjYXB0dXJlZCAoMjczNiBiaXRzKQ0KPiBvbiBpbnRlcmZhY2UgMA0KPiBF
dGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpLCBE
c3Q6IEJyb2FkY2FzdA0KPiAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ICDCoMKgwqAgRGVzdGluYXRp
b246IEJyb2FkY2FzdCAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ICDCoMKgwqAgU291cmNlOiBDb21t
b2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpDQo+ICDCoMKgwqAgVHlwZTogSVB2NCAo
MHgwODAwKQ0KPiBJbnRlcm5ldCBQcm90b2NvbCBWZXJzaW9uIDQsIFNyYzogMC4wLjAuMCwgRHN0
OiAyNTUuMjU1LjI1NS4yNTUNCj4gVXNlciBEYXRhZ3JhbSBQcm90b2NvbCwgU3JjIFBvcnQ6IDY4
LCBEc3QgUG9ydDogNjcNCj4gQm9vdHN0cmFwIFByb3RvY29sIChEaXNjb3ZlcikNCj4gDQo+IE5v
LsKgwqDCoMKgIFRpbWXCoMKgwqDCoMKgwqDCoMKgwqDCoCBTb3VyY2XCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqAgRGVzdGluYXRpb24gUHJvdG9jb2wgTGVuZ3RoDQo+IEluZm8NCj4gIMKg
wqDCoCA5OTAgODIuOTYxMjI0ODk1wqDCoCAwLjAuMC4wwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoCAyNTUuMjU1LjI1NS4yNTUgREhDUA0KPiAzNDLCoMKgwqAgREhDUCBEaXNjb3ZlciAtIFRy
YW5zYWN0aW9uIElEIDB4NDIxYmFkZTMNCj4gDQo+IEZyYW1lIDk5MDogMzQyIGJ5dGVzIG9uIHdp
cmUgKDI3MzYgYml0cyksIDM0MiBieXRlcyBjYXB0dXJlZCAoMjczNiBiaXRzKQ0KPiBvbiBpbnRl
cmZhY2UgMA0KPiBFdGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6
MTE6MTE6MTEpLCBEc3Q6IEJyb2FkY2FzdA0KPiAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ICDCoMKg
wqAgRGVzdGluYXRpb246IEJyb2FkY2FzdCAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ICDCoMKgwqAg
U291cmNlOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpDQo+ICDCoMKgwqAg
VHlwZTogSVB2NCAoMHgwODAwKQ0KPiBJbnRlcm5ldCBQcm90b2NvbCBWZXJzaW9uIDQsIFNyYzog
MC4wLjAuMCwgRHN0OiAyNTUuMjU1LjI1NS4yNTUNCj4gVXNlciBEYXRhZ3JhbSBQcm90b2NvbCwg
U3JjIFBvcnQ6IDY4LCBEc3QgUG9ydDogNjcNCj4gQm9vdHN0cmFwIFByb3RvY29sIChEaXNjb3Zl
cikNCj4gDQo+IE5vLsKgwqDCoMKgIFRpbWXCoMKgwqDCoMKgwqDCoMKgwqDCoCBTb3VyY2XCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRGVzdGluYXRpb24gUHJvdG9jb2wgTGVuZ3RoDQo+
IEluZm8NCj4gIMKgwqAgMzgyNyA5NS4zNDU5NjQ0MTjCoMKgIDAuMC4wLjDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgIDI1NS4yNTUuMjU1LjI1NSBESENQDQo+IDM0MsKgwqDCoCBESENQIERp
c2NvdmVyIC0gVHJhbnNhY3Rpb24gSUQgMHg1ZGY0N2M4NA0KPiANCj4gRnJhbWUgMzgyNzogMzQy
IGJ5dGVzIG9uIHdpcmUgKDI3MzYgYml0cyksIDM0MiBieXRlcyBjYXB0dXJlZCAoMjczNg0KPiBi
aXRzKSBvbiBpbnRlcmZhY2UgMA0KPiBFdGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8xMToxMTox
MSAoMDA6ODA6MTA6MTE6MTE6MTEpLCBEc3Q6IEJyb2FkY2FzdA0KPiAoZmY6ZmY6ZmY6ZmY6ZmY6
ZmYpDQo+ICDCoMKgwqAgRGVzdGluYXRpb246IEJyb2FkY2FzdCAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYp
DQo+ICDCoMKgwqAgU291cmNlOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEp
DQo+ICDCoMKgwqAgVHlwZTogSVB2NCAoMHgwODAwKQ0KPiBJbnRlcm5ldCBQcm90b2NvbCBWZXJz
aW9uIDQsIFNyYzogMC4wLjAuMCwgRHN0OiAyNTUuMjU1LjI1NS4yNTUNCj4gVXNlciBEYXRhZ3Jh
bSBQcm90b2NvbCwgU3JjIFBvcnQ6IDY4LCBEc3QgUG9ydDogNjcNCj4gQm9vdHN0cmFwIFByb3Rv
Y29sIChEaXNjb3ZlcikNCj4gDQo+IE5vLsKgwqDCoMKgIFRpbWXCoMKgwqDCoMKgwqDCoMKgwqDC
oCBTb3VyY2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRGVzdGluYXRpb24gUHJvdG9j
b2wgTGVuZ3RoDQo+IEluZm8NCj4gIMKgwqAgMzg4NyA5OS4yNzE2Njg1NzLCoMKgIDAuMC4wLjDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDI1NS4yNTUuMjU1LjI1NSBESENQDQo+IDM0MsKg
wqDCoCBESENQIERpc2NvdmVyIC0gVHJhbnNhY3Rpb24gSUQgMHg1ZGY0N2M4NA0KPiANCj4gRnJh
bWUgMzg4NzogMzQyIGJ5dGVzIG9uIHdpcmUgKDI3MzYgYml0cyksIDM0MiBieXRlcyBjYXB0dXJl
ZCAoMjczNg0KPiBiaXRzKSBvbiBpbnRlcmZhY2UgMA0KPiBFdGhlcm5ldCBJSSwgU3JjOiBDb21t
b2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpLCBEc3Q6IEJyb2FkY2FzdA0KPiAoZmY6
ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ICDCoMKgwqAgRGVzdGluYXRpb246IEJyb2FkY2FzdCAoZmY6ZmY6
ZmY6ZmY6ZmY6ZmYpDQo+ICDCoMKgwqAgU291cmNlOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6
MTA6MTE6MTE6MTEpDQo+ICDCoMKgwqAgVHlwZTogSVB2NCAoMHgwODAwKQ0KPiBJbnRlcm5ldCBQ
cm90b2NvbCBWZXJzaW9uIDQsIFNyYzogMC4wLjAuMCwgRHN0OiAyNTUuMjU1LjI1NS4yNTUNCj4g
VXNlciBEYXRhZ3JhbSBQcm90b2NvbCwgU3JjIFBvcnQ6IDY4LCBEc3QgUG9ydDogNjcNCj4gQm9v
dHN0cmFwIFByb3RvY29sIChEaXNjb3ZlcikNCj4gDQo+IE5vLsKgwqDCoMKgIFRpbWXCoMKgwqDC
oMKgwqDCoMKgwqDCoCBTb3VyY2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRGVzdGlu
YXRpb24gUHJvdG9jb2wgTGVuZ3RoDQo+IEluZm8NCj4gIMKgwqAgMzk0MyAxMDMuMzgzMDcyNDI5
wqAgMC4wLjAuMMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjU1LjI1NS4yNTUuMjU1IERI
Q1ANCj4gMzQywqDCoMKgIERIQ1AgRGlzY292ZXIgLSBUcmFuc2FjdGlvbiBJRCAweDVkZjQ3Yzg0
DQo+IA0KPiBGcmFtZSAzOTQzOiAzNDIgYnl0ZXMgb24gd2lyZSAoMjczNiBiaXRzKSwgMzQyIGJ5
dGVzIGNhcHR1cmVkICgyNzM2DQo+IGJpdHMpIG9uIGludGVyZmFjZSAwDQo+IEV0aGVybmV0IElJ
LCBTcmM6IENvbW1vZG9yXzExOjExOjExICgwMDo4MDoxMDoxMToxMToxMSksIERzdDogQnJvYWRj
YXN0DQo+IChmZjpmZjpmZjpmZjpmZjpmZikNCj4gIMKgwqDCoCBEZXN0aW5hdGlvbjogQnJvYWRj
YXN0IChmZjpmZjpmZjpmZjpmZjpmZikNCj4gIMKgwqDCoCBTb3VyY2U6IENvbW1vZG9yXzExOjEx
OjExICgwMDo4MDoxMDoxMToxMToxMSkNCj4gIMKgwqDCoCBUeXBlOiBJUHY0ICgweDA4MDApDQo+
IEludGVybmV0IFByb3RvY29sIFZlcnNpb24gNCwgU3JjOiAwLjAuMC4wLCBEc3Q6IDI1NS4yNTUu
MjU1LjI1NQ0KPiBVc2VyIERhdGFncmFtIFByb3RvY29sLCBTcmMgUG9ydDogNjgsIERzdCBQb3J0
OiA2Nw0KPiBCb290c3RyYXAgUHJvdG9jb2wgKERpc2NvdmVyKQ0KPiAtLS0NCj4gDQo+IFRoZSBv
ZGQgdGhpbmcgaGVyZSBpcyB0aGF0IHdoaWxlIHRoZSBESENQIHJlcXVlc3RzIHdlcmUgYnJvYWRj
YXN0IHRvIHRoZQ0KPiBvdXRzaWRlIG5ldHdvcmsgKGNvbmZpcm1pbmcgdGhhdCBhdCBsZWFzdCB0
aGUgdHJhbnNtaXQgdG8gdGhlIFBIWSBpcw0KPiB3b3JraW5nKSwNCj4gSSBjb3VsZCBzZWUgbm8g
cmVzcG9uc2VzIGZyb20gbXkgbmV0d29yaydzIERIQ1Agc2VydmVyIHRvIGFuc3dlciB0aGVzZQ0K
PiByZXF1ZXN0cy4NCj4gDQo+IEl0IGlzIG5vdCBhIHBoeXNpY2FsIG5ldHdvcmtpbmcgb3Igcm91
dGluZyBpc3N1ZSwgYXMgSSBhbHdheXMgZ2V0IGENCj4gc3VjY2Vzc2Z1bA0KPiBESENQIHJlc3Bv
bnNlIHRvIHRoZSBYNTAwMC8yMCB3aGVuIEkgZW5hYmxlIHRoZSBSZWFsdGVrIDgxNjkgaW50ZXJm
YWNlDQo+IChhbHNvDQo+IGluc3RhbGxlZCBbUENJZSBjYXJkXSBpbiB0aGUgWDUwMDAvMjApLg0K
PiANCj4gU2luY2UgaW5pdGlhbCBvdXRnb2luZyB0cmFmZmljICphcHBlYXJzKiB0byBiZSB3b3Jr
aW5nIGZyb20gdGhlIERQQUENCj4gRXRoZXJuZXQNCj4gb24gdGhlIFg1MDAwLzIwLCBpcyBpdCBw
b3NzaWJsZSB3ZSBhcmUgbWlzc2luZyBhbiBpbnRlcnJ1cHQgbWFwcGluZyBmcm9tDQo+IHRoZQ0K
PiBGcmFtZSBNYW5hZ2VyIHRvIGNhdGNoIHRoZSByZWNlaXZlZCBkYXRhPw0KPiANCj4gQW55IGhl
bHAgd291bGQgYmUgYXBwcmVjaWF0ZWQuIFRoYW5rcy4NCj4gDQo+IC0tDQo+IEJlc3QgUmVnYXJk
cywNCj4gDQo+IEphbWllIEtydWVnZXINCj4gQklUYnlCSVQgU29mdHdhcmUgR3JvdXAgTExDDQoN
Cg==

Re: DPAA Ethernet problems with mainstream Linux kernels

From: Jamie Krueger <hidden>
Date: 2018-01-12 16:36:05

On 01/12/2018 08:22 AM, Madalin-cristian Bucur wrote:
quoted
-----Original Message-----
From: Linuxppc-dev [mailto:linuxppc-dev-
bounces+madalin.bucur=nxp.com@lists.ozlabs.org] On Behalf Of Jamie Krueger
Sent: Wednesday, January 10, 2018 5:57 PM
To: linuxppc-dev@lists.ozlabs.org
Subject: DPAA Ethernet problems with mainstream Linux kernels

Hello all @ linuxppc-dev,

I have been working with a team of people maintaining PowerPC
Linux for the new AmigaONE X5000/20 (a Freescale p5020 SoC based
machine).

We are trying to determine why the submitted Data Path Acceleration
Architecture (DPAA) Ethernet Driver is not fully functional with
the mainstream Linux kernels.
Hi Jamie,
Hi Madalin,
We are testing the DPAA driver on several DS and RDB platforms and it
is working properly. The issues you encounter with it on the X5000/20
are likely caused by some issues specific to that particular platform.
It is good to hear that the DPAA driver is functioning correctly
on the reference platforms. I am positive you are correct that
the issue is the difference in implementation on the X5000/20
(Cyrus) motherboard, as compared to the reference boards.

Can you verify which Linux Kernel sources your tests are being
performed on? We have been testing using the mainstream
Linux sources up to linux-4.15-rc6 thus far.
The device tree that you mention, cyrus_p5020.eth.dts is not found in
the Linux kernel sources. The cyrus_p5020.dts file from the fsl ppc
device tree folder does not include the PHY information for the DPAA
interfaces. The problems that you experience may be caused by some
issues with the PHY configuration (i.e. internal delay).
The cyrus_p5020.eth.dts is a modified version of the cyrus_p5020.dts,
which of course was based off the original p5020ds.dts file. As you
noted, the current cyrus_p5020.dts file is incomplete, and does not
map the Ethernet connections properly.

The cyrus_p5020.eth.dts file, along with it's cyrus-pre.dtsi dependent
file, are an attempt to correctly define the Ethernet hardware, as it is
implemented on the X5000/20.

** I have attached both the cyrus_p5020.eth.dts and cyrus-pre.dtsi
      files with this email for comparison. Please let me know if you see
      any corrections that should be made to either file.

I am not sure what PHY hardware/configuration you are using on the
DS and RDB platforms, but I can confirm that AmigaONE X5000/20
(Cyrus Motherboard with p5020 SoC), has dTSEC 4 and dTSEC 5
wired to two Micrel KSZ9021RN Gigabit Ethernet PHYs, using the
RGMII protocol.
  I suggest
that you connect the DPAA interface to a traffic analyzer or directly
to another device on which you can capture the incoming traffic and
check that the received frames are correct.
I have started testing along that line, using Wireshark to view the
traffic on the X5000/20 itself, and from another machine connected
on the same subnet. So far (as indicated by some details of in my
initial email), I can see outgoing broadcast requests (for DHCP)
being sent out from the X5000/20, and these requests are correctly
constructed and visible outside the X5000/20.

However, no responses to the DHCP broadcasts appear to reach
to X5000/20's DPAA Ethernet. I will need to setup some further
tests to determine if the DHCP server saw the requests and responded
to them. (I assume the DHCP server is getting them, and responding,
as I can always get a successful DHCP response to the X5000/20
when using an add-on Ethernet PICe card on the same subnet).

I will setup some more direct machine-to-machine testing to
see what else I can glean from the network traffic.

Please have a look at the attached dts files, maybe there is something
obvious there we are not seeing.

Also, given that the X5000/20 uses Micrel KSZ9021RN PHYs in RGMII
mode, what changes to the DPAA hardware configuration should we
expect to see so that the DPAA is configured to talk to them?
Madalin
-- 

Best Regards,

Jamie Krueger
BITbyBIT Software Group LLC
quoted
Here is the results from my latest tests. They were performed using
the linux-4.10.17 ppc64, since that represents when the DPAA Ethernet
code was introduced.

Similar tests, with similar results, were also performed
using the latest Linux kernels:

linux-4.15-rc5
linux-4.15-rc6
linux-4.15-rc7

(Hence the reason for falling back to test the kernel right
   after the introduction of the DPAA Ethernet driver sources)

---

All Kernel builds had the DPAA Ethernet enabled in the kernel,
and are using the correct cyrus_p5020.eth.dtb device tree file
(for use on the X5000/20).

The results are quite similar for all kernels in regards to the DPAA
Ethernet.

All tested kernels setup the two Ethernet interfaces correctly
as eth0 and eth1, and pull the correct MAC addresses from U-Boot
environment variables ethaddr and eth1addr respectively.

So at this point Linux has what it believes is fully configured
hardware, waiting to have an IP Address/Netmask/Gateway
to be set and to bring the interface online.

However, all attempts to communicate with the outside world
do not make it out the physical (PHY) hardware - or do they?

** The following results were captured under linux-4.10.17 **

When I bring the interface up using a static address, in this case
192.168.1.21, I see the following (NOTE TX bytes says 154.0 KB,
while RX bytes says 0.0 B):

jamie@X5000-Linux:$ ifconfig
eth0      Link encap:Ethernet  HWaddr 00:80:10:11:11:11
            inet addr:192.168.1.21  Bcast:192.168.1.255 Mask:255.255.255.0
            inet6 addr: fe80::280:10ff:fe11:1111/64 Scope:Link
            UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
            RX packets:0 errors:0 dropped:0 overruns:0 frame:0
            TX packets:1428 errors:0 dropped:0 overruns:0 carrier:0
            collisions:0 txqueuelen:1000
            RX bytes:0 (0.0 B)  TX bytes:154066 (154.0 KB)
            Memory:fe4e6000-fe4e6fff

eth1      Link encap:Ethernet  HWaddr 00:80:10:22:22:22
            UP BROADCAST MULTICAST  MTU:1500  Metric:1
            RX packets:0 errors:0 dropped:0 overruns:0 frame:0
            TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
            collisions:0 txqueuelen:1000
            RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
            Memory:fe4e8000-fe4e8fff

lo        Link encap:Local Loopback
            inet addr:127.0.0.1  Mask:255.0.0.0
            inet6 addr: ::1/128 Scope:Host
            UP LOOPBACK RUNNING  MTU:65536  Metric:1
            RX packets:1869 errors:0 dropped:0 overruns:0 frame:0
            TX packets:1869 errors:0 dropped:0 overruns:0 carrier:0
            collisions:0 txqueuelen:1000
            RX bytes:156932 (156.9 KB)  TX bytes:156932 (156.9 KB)

Checking the routing table, everything looks fine there:

jamie@X5000-Linux:$ netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt
Iface
default         192.168.1.1     0.0.0.0         UG        0 0          0
eth0
link-local      *               255.255.0.0     U         0 0          0
eth0
192.168.1.0     *               255.255.255.0   U         0 0          0
eth0

Attempting to PING the interface itself works:

jamie@X5000-Linux:$ ping 192.168.1.21
PING 192.168.1.21 (192.168.1.21) 56(84) bytes of data.
64 bytes from 192.168.1.21: icmp_seq=1 ttl=64 time=0.037 ms
64 bytes from 192.168.1.21: icmp_seq=2 ttl=64 time=0.045 ms
64 bytes from 192.168.1.21: icmp_seq=3 ttl=64 time=0.033 ms
^C
--- 192.168.1.21 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2043ms

However, attempts to PING the gateway (192.168.1.1) fail as unreachable:

jamie@X5000-Linux:$ ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
  From 192.168.1.21 icmp_seq=1 Destination Host Unreachable
  From 192.168.1.21 icmp_seq=2 Destination Host Unreachable
  From 192.168.1.21 icmp_seq=3 Destination Host Unreachable
^C
--- 192.168.1.1 ping statistics ---
7 packets transmitted, 0 received, +3 errors, 100% packet loss, time
6077ms

In order to take a closer look at what is going on I installed Wireshark
both on my test X5000/20 Linux install (Ubuntu 16.04.3 LTS), and on
another Linux box connected to the same network switch (in this case
at IP address 192.168.1.210)

In this test I start the capture on eth0 (X5000/20) before it is put
online,
and attempt to bring it up using DHCP to obtain it's address.

What I found was that network traffic *was* being attempted over eth0.
Here is a plain text export of the transmit side (the X5000/20) that
was captured using Wireshark.

(There were more network packets being sent from the X5000/20,
   however, I am only showing DHCP traffic to save space in this post):

---
No.     Time           Source                Destination Protocol Length
Info
        2 0.042259843    0.0.0.0               255.255.255.255 DHCP
342    DHCP Discover - Transaction ID 0x655d91e8

Frame 2: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits)
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast
(ff:ff:ff:ff:ff:ff)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length
Info
       16 3.830001152    0.0.0.0               255.255.255.255 DHCP
342    DHCP Discover - Transaction ID 0x655d91e8

Frame 16: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits)
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast
(ff:ff:ff:ff:ff:ff)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length
Info
       21 9.308914533    0.0.0.0               255.255.255.255 DHCP
342    DHCP Discover - Transaction ID 0x655d91e8

Frame 21: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits)
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast
(ff:ff:ff:ff:ff:ff)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length
Info
       23 18.906405343   0.0.0.0               255.255.255.255 DHCP
342    DHCP Discover - Transaction ID 0x655d91e8

Frame 23: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits)
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast
(ff:ff:ff:ff:ff:ff)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length
Info
       25 36.390926450   0.0.0.0               255.255.255.255 DHCP
342    DHCP Discover - Transaction ID 0x655d91e8

Frame 25: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits)
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast
(ff:ff:ff:ff:ff:ff)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length
Info
       26 44.048328412   0.0.0.0               255.255.255.255 DHCP
342    DHCP Discover - Transaction ID 0x655d91e8

Frame 26: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits)
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast
(ff:ff:ff:ff:ff:ff)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length
Info
       30 44.889049203   0.0.0.0               255.255.255.255 DHCP
342    DHCP Discover - Transaction ID 0x421bade3

Frame 30: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits)
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast
(ff:ff:ff:ff:ff:ff)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length
Info
       44 48.254495304   0.0.0.0               255.255.255.255 DHCP
342    DHCP Discover - Transaction ID 0x421bade3

Frame 44: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits)
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast
(ff:ff:ff:ff:ff:ff)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length
Info
       49 54.299052732   0.0.0.0               255.255.255.255 DHCP
342    DHCP Discover - Transaction ID 0x421bade3

Frame 49: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits)
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast
(ff:ff:ff:ff:ff:ff)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length
Info
       51 62.672007482   0.0.0.0               255.255.255.255 DHCP
342    DHCP Discover - Transaction ID 0x421bade3

Frame 51: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits)
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast
(ff:ff:ff:ff:ff:ff)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length
Info
       52 77.485896202   0.0.0.0               255.255.255.255 DHCP
342    DHCP Discover - Transaction ID 0x421bade3

Frame 52: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits)
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast
(ff:ff:ff:ff:ff:ff)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length
Info
       56 89.895304152   0.0.0.0               255.255.255.255 DHCP
342    DHCP Discover - Transaction ID 0x5df47c84

Frame 56: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits)
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast
(ff:ff:ff:ff:ff:ff)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length
Info
       71 93.828837008   0.0.0.0               255.255.255.255 DHCP
342    DHCP Discover - Transaction ID 0x5df47c84

Frame 71: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits)
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast
(ff:ff:ff:ff:ff:ff)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length
Info
       74 97.948453158   0.0.0.0               255.255.255.255 DHCP
342    DHCP Discover - Transaction ID 0x5df47c84

Frame 74: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits)
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast
(ff:ff:ff:ff:ff:ff)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)
---

Now, over on the external Linux machine (192.168.1.210), I setup a
Wireshark capture
which filtered for any traffic to/from the MAC address of the X5000/20's
eth0, in this case
shown as Commodor_11:11:11 (00:80:10:11:11:11) below:

This export shows only the DHCP traffic seen from outside the X5000/20,
and as you can see, a matching set of DHCP requests *do in fact* make
it to the outside network.

---
No.     Time           Source                Destination Protocol Length
Info
       39 5.671762509    0.0.0.0               255.255.255.255 DHCP
342    DHCP Discover - Transaction ID 0x655d91e8

Frame 39: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits)
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast
(ff:ff:ff:ff:ff:ff)
      Destination: Broadcast (ff:ff:ff:ff:ff:ff)
      Source: Commodor_11:11:11 (00:80:10:11:11:11)
      Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length
Info
       73 9.451895404    0.0.0.0               255.255.255.255 DHCP
342    DHCP Discover - Transaction ID 0x655d91e8

Frame 73: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits)
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast
(ff:ff:ff:ff:ff:ff)
      Destination: Broadcast (ff:ff:ff:ff:ff:ff)
      Source: Commodor_11:11:11 (00:80:10:11:11:11)
      Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length
Info
      154 14.919944480   0.0.0.0               255.255.255.255 DHCP
342    DHCP Discover - Transaction ID 0x655d91e8

Frame 154: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits)
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast
(ff:ff:ff:ff:ff:ff)
      Destination: Broadcast (ff:ff:ff:ff:ff:ff)
      Source: Commodor_11:11:11 (00:80:10:11:11:11)
      Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length
Info
      269 24.498335996   0.0.0.0               255.255.255.255 DHCP
342    DHCP Discover - Transaction ID 0x655d91e8

Frame 269: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits)
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast
(ff:ff:ff:ff:ff:ff)
      Destination: Broadcast (ff:ff:ff:ff:ff:ff)
      Source: Commodor_11:11:11 (00:80:10:11:11:11)
      Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length
Info
      630 41.948018648   0.0.0.0               255.255.255.255 DHCP
342    DHCP Discover - Transaction ID 0x655d91e8

Frame 630: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits)
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast
(ff:ff:ff:ff:ff:ff)
      Destination: Broadcast (ff:ff:ff:ff:ff:ff)
      Source: Commodor_11:11:11 (00:80:10:11:11:11)
      Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length
Info
      701 49.590211264   0.0.0.0               255.255.255.255 DHCP
342    DHCP Discover - Transaction ID 0x655d91e8

Frame 701: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits)
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast
(ff:ff:ff:ff:ff:ff)
      Destination: Broadcast (ff:ff:ff:ff:ff:ff)
      Source: Commodor_11:11:11 (00:80:10:11:11:11)
      Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length
Info
      706 50.429265938   0.0.0.0               255.255.255.255 DHCP
342    DHCP Discover - Transaction ID 0x421bade3

Frame 706: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits)
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast
(ff:ff:ff:ff:ff:ff)
      Destination: Broadcast (ff:ff:ff:ff:ff:ff)
      Source: Commodor_11:11:11 (00:80:10:11:11:11)
      Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length
Info
      744 53.788035317   0.0.0.0               255.255.255.255 DHCP
342    DHCP Discover - Transaction ID 0x421bade3

Frame 744: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits)
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast
(ff:ff:ff:ff:ff:ff)
      Destination: Broadcast (ff:ff:ff:ff:ff:ff)
      Source: Commodor_11:11:11 (00:80:10:11:11:11)
      Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length
Info
      797 59.820568614   0.0.0.0               255.255.255.255 DHCP
342    DHCP Discover - Transaction ID 0x421bade3

Frame 797: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits)
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast
(ff:ff:ff:ff:ff:ff)
      Destination: Broadcast (ff:ff:ff:ff:ff:ff)
      Source: Commodor_11:11:11 (00:80:10:11:11:11)
      Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length
Info
      852 68.176833686   0.0.0.0               255.255.255.255 DHCP
342    DHCP Discover - Transaction ID 0x421bade3

Frame 852: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits)
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast
(ff:ff:ff:ff:ff:ff)
      Destination: Broadcast (ff:ff:ff:ff:ff:ff)
      Source: Commodor_11:11:11 (00:80:10:11:11:11)
      Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length
Info
      990 82.961224895   0.0.0.0               255.255.255.255 DHCP
342    DHCP Discover - Transaction ID 0x421bade3

Frame 990: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits)
on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast
(ff:ff:ff:ff:ff:ff)
      Destination: Broadcast (ff:ff:ff:ff:ff:ff)
      Source: Commodor_11:11:11 (00:80:10:11:11:11)
      Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length
Info
     3827 95.345964418   0.0.0.0               255.255.255.255 DHCP
342    DHCP Discover - Transaction ID 0x5df47c84

Frame 3827: 342 bytes on wire (2736 bits), 342 bytes captured (2736
bits) on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast
(ff:ff:ff:ff:ff:ff)
      Destination: Broadcast (ff:ff:ff:ff:ff:ff)
      Source: Commodor_11:11:11 (00:80:10:11:11:11)
      Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length
Info
     3887 99.271668572   0.0.0.0               255.255.255.255 DHCP
342    DHCP Discover - Transaction ID 0x5df47c84

Frame 3887: 342 bytes on wire (2736 bits), 342 bytes captured (2736
bits) on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast
(ff:ff:ff:ff:ff:ff)
      Destination: Broadcast (ff:ff:ff:ff:ff:ff)
      Source: Commodor_11:11:11 (00:80:10:11:11:11)
      Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)

No.     Time           Source                Destination Protocol Length
Info
     3943 103.383072429  0.0.0.0               255.255.255.255 DHCP
342    DHCP Discover - Transaction ID 0x5df47c84

Frame 3943: 342 bytes on wire (2736 bits), 342 bytes captured (2736
bits) on interface 0
Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast
(ff:ff:ff:ff:ff:ff)
      Destination: Broadcast (ff:ff:ff:ff:ff:ff)
      Source: Commodor_11:11:11 (00:80:10:11:11:11)
      Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)
---

The odd thing here is that while the DHCP requests were broadcast to the
outside network (confirming that at least the transmit to the PHY is
working),
I could see no responses from my network's DHCP server to answer these
requests.

It is not a physical networking or routing issue, as I always get a
successful
DHCP response to the X5000/20 when I enable the Realtek 8169 interface
(also
installed [PCIe card] in the X5000/20).

Since initial outgoing traffic *appears* to be working from the DPAA
Ethernet
on the X5000/20, is it possible we are missing an interrupt mapping from
the
Frame Manager to catch the received data?

Any help would be appreciated. Thanks.

--
Best Regards,

Jamie Krueger
BITbyBIT Software Group LLC

RE: DPAA Ethernet problems with mainstream Linux kernels

From: Madalin-cristian Bucur <madalin.bucur@nxp.com>
Date: 2018-01-15 10:45:02

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBKYW1pZSBLcnVlZ2VyIFttYWls
dG86amFtaWVAYml0YnliaXRzb2Z0d2FyZWdyb3VwLmNvbV0NCj4gU2VudDogRnJpZGF5LCBKYW51
YXJ5IDEyLCAyMDE4IDY6MzYgUE0NCj4gVG86IE1hZGFsaW4tY3Jpc3RpYW4gQnVjdXIgPG1hZGFs
aW4uYnVjdXJAbnhwLmNvbT47IGxpbnV4cHBjLQ0KPiBkZXZAbGlzdHMub3psYWJzLm9yZw0KPiBD
YzogbmV0ZGV2QHZnZXIua2VybmVsLm9yZw0KPiBTdWJqZWN0OiBSZTogRFBBQSBFdGhlcm5ldCBw
cm9ibGVtcyB3aXRoIG1haW5zdHJlYW0gTGludXgga2VybmVscw0KPiANCj4gT24gMDEvMTIvMjAx
OCAwODoyMiBBTSwgTWFkYWxpbi1jcmlzdGlhbiBCdWN1ciB3cm90ZToNCj4gPj4gLS0tLS1Pcmln
aW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4gRnJvbTogTGludXhwcGMtZGV2IFttYWlsdG86bGludXhw
cGMtZGV2LQ0KPiA+PiBib3VuY2VzK21hZGFsaW4uYnVjdXI9bnhwLmNvbUBsaXN0cy5vemxhYnMu
b3JnXSBPbiBCZWhhbGYgT2YgSmFtaWUNCj4gS3J1ZWdlcg0KPiA+PiBTZW50OiBXZWRuZXNkYXks
IEphbnVhcnkgMTAsIDIwMTggNTo1NyBQTQ0KPiA+PiBUbzogbGludXhwcGMtZGV2QGxpc3RzLm96
bGFicy5vcmcNCj4gPj4gU3ViamVjdDogRFBBQSBFdGhlcm5ldCBwcm9ibGVtcyB3aXRoIG1haW5z
dHJlYW0gTGludXgga2VybmVscw0KPiA+Pg0KPiA+PiBIZWxsbyBhbGwgQCBsaW51eHBwYy1kZXYs
DQo+ID4+DQo+ID4+IEkgaGF2ZSBiZWVuIHdvcmtpbmcgd2l0aCBhIHRlYW0gb2YgcGVvcGxlIG1h
aW50YWluaW5nIFBvd2VyUEMNCj4gPj4gTGludXggZm9yIHRoZSBuZXcgQW1pZ2FPTkUgWDUwMDAv
MjAgKGEgRnJlZXNjYWxlIHA1MDIwIFNvQyBiYXNlZA0KPiA+PiBtYWNoaW5lKS4NCj4gPj4NCj4g
Pj4gV2UgYXJlIHRyeWluZyB0byBkZXRlcm1pbmUgd2h5IHRoZSBzdWJtaXR0ZWQgRGF0YSBQYXRo
IEFjY2VsZXJhdGlvbg0KPiA+PiBBcmNoaXRlY3R1cmUgKERQQUEpIEV0aGVybmV0IERyaXZlciBp
cyBub3QgZnVsbHkgZnVuY3Rpb25hbCB3aXRoDQo+ID4+IHRoZSBtYWluc3RyZWFtIExpbnV4IGtl
cm5lbHMuDQo+ID4gSGkgSmFtaWUsDQo+IEhpIE1hZGFsaW4sDQo+ID4gV2UgYXJlIHRlc3Rpbmcg
dGhlIERQQUEgZHJpdmVyIG9uIHNldmVyYWwgRFMgYW5kIFJEQiBwbGF0Zm9ybXMgYW5kIGl0DQo+
ID4gaXMgd29ya2luZyBwcm9wZXJseS4gVGhlIGlzc3VlcyB5b3UgZW5jb3VudGVyIHdpdGggaXQg
b24gdGhlIFg1MDAwLzIwDQo+ID4gYXJlIGxpa2VseSBjYXVzZWQgYnkgc29tZSBpc3N1ZXMgc3Bl
Y2lmaWMgdG8gdGhhdCBwYXJ0aWN1bGFyIHBsYXRmb3JtLg0KPiBJdCBpcyBnb29kIHRvIGhlYXIg
dGhhdCB0aGUgRFBBQSBkcml2ZXIgaXMgZnVuY3Rpb25pbmcgY29ycmVjdGx5DQo+IG9uIHRoZSBy
ZWZlcmVuY2UgcGxhdGZvcm1zLiBJIGFtIHBvc2l0aXZlIHlvdSBhcmUgY29ycmVjdCB0aGF0DQo+
IHRoZSBpc3N1ZSBpcyB0aGUgZGlmZmVyZW5jZSBpbiBpbXBsZW1lbnRhdGlvbiBvbiB0aGUgWDUw
MDAvMjANCj4gKEN5cnVzKSBtb3RoZXJib2FyZCwgYXMgY29tcGFyZWQgdG8gdGhlIHJlZmVyZW5j
ZSBib2FyZHMuDQo+IA0KPiBDYW4geW91IHZlcmlmeSB3aGljaCBMaW51eCBLZXJuZWwgc291cmNl
cyB5b3VyIHRlc3RzIGFyZSBiZWluZw0KPiBwZXJmb3JtZWQgb24/IFdlIGhhdmUgYmVlbiB0ZXN0
aW5nIHVzaW5nIHRoZSBtYWluc3RyZWFtDQo+IExpbnV4IHNvdXJjZXMgdXAgdG8gbGludXgtNC4x
NS1yYzYgdGh1cyBmYXIuDQoNCkxhdGVzdCBydW4gaXMgb24gNC4xNS4wLXJjNy0wMDIwMC1nYzky
YTlhNC4NCg0KPiA+IFRoZSBkZXZpY2UgdHJlZSB0aGF0IHlvdSBtZW50aW9uLCBjeXJ1c19wNTAy
MC5ldGguZHRzIGlzIG5vdCBmb3VuZCBpbg0KPiA+IHRoZSBMaW51eCBrZXJuZWwgc291cmNlcy4g
VGhlIGN5cnVzX3A1MDIwLmR0cyBmaWxlIGZyb20gdGhlIGZzbCBwcGMNCj4gPiBkZXZpY2UgdHJl
ZSBmb2xkZXIgZG9lcyBub3QgaW5jbHVkZSB0aGUgUEhZIGluZm9ybWF0aW9uIGZvciB0aGUgRFBB
QQ0KPiA+IGludGVyZmFjZXMuIFRoZSBwcm9ibGVtcyB0aGF0IHlvdSBleHBlcmllbmNlIG1heSBi
ZSBjYXVzZWQgYnkgc29tZQ0KPiA+IGlzc3VlcyB3aXRoIHRoZSBQSFkgY29uZmlndXJhdGlvbiAo
aS5lLiBpbnRlcm5hbCBkZWxheSkuDQo+IFRoZSBjeXJ1c19wNTAyMC5ldGguZHRzIGlzIGEgbW9k
aWZpZWQgdmVyc2lvbiBvZiB0aGUgY3lydXNfcDUwMjAuZHRzLA0KPiB3aGljaCBvZiBjb3Vyc2Ug
d2FzIGJhc2VkIG9mZiB0aGUgb3JpZ2luYWwgcDUwMjBkcy5kdHMgZmlsZS4gQXMgeW91DQo+IG5v
dGVkLCB0aGUgY3VycmVudCBjeXJ1c19wNTAyMC5kdHMgZmlsZSBpcyBpbmNvbXBsZXRlLCBhbmQg
ZG9lcyBub3QNCj4gbWFwIHRoZSBFdGhlcm5ldCBjb25uZWN0aW9ucyBwcm9wZXJseS4NCj4gDQo+
IFRoZSBjeXJ1c19wNTAyMC5ldGguZHRzIGZpbGUsIGFsb25nIHdpdGggaXQncyBjeXJ1cy1wcmUu
ZHRzaSBkZXBlbmRlbnQNCj4gZmlsZSwgYXJlIGFuIGF0dGVtcHQgdG8gY29ycmVjdGx5IGRlZmlu
ZSB0aGUgRXRoZXJuZXQgaGFyZHdhcmUsIGFzIGl0IGlzDQo+IGltcGxlbWVudGVkIG9uIHRoZSBY
NTAwMC8yMC4NCj4gDQo+ICoqIEkgaGF2ZSBhdHRhY2hlZCBib3RoIHRoZSBjeXJ1c19wNTAyMC5l
dGguZHRzIGFuZCBjeXJ1cy1wcmUuZHRzaQ0KPiAgwqDCoMKgwqAgZmlsZXMgd2l0aCB0aGlzIGVt
YWlsIGZvciBjb21wYXJpc29uLiBQbGVhc2UgbGV0IG1lIGtub3cgaWYgeW91IHNlZQ0KPiAgwqDC
oMKgwqAgYW55IGNvcnJlY3Rpb25zIHRoYXQgc2hvdWxkIGJlIG1hZGUgdG8gZWl0aGVyIGZpbGUu
DQoNCkF0IGEgZmlyc3QgZ2xhbmNlIHRoZXkgbG9vayBmaW5lIHRvIG1lLg0KDQo+IEkgYW0gbm90
IHN1cmUgd2hhdCBQSFkgaGFyZHdhcmUvY29uZmlndXJhdGlvbiB5b3UgYXJlIHVzaW5nIG9uIHRo
ZQ0KPiBEUyBhbmQgUkRCIHBsYXRmb3JtcywgYnV0IEkgY2FuIGNvbmZpcm0gdGhhdCBBbWlnYU9O
RSBYNTAwMC8yMA0KPiAoQ3lydXMgTW90aGVyYm9hcmQgd2l0aCBwNTAyMCBTb0MpLCBoYXMgZFRT
RUMgNCBhbmQgZFRTRUMgNQ0KPiB3aXJlZCB0byB0d28gTWljcmVsIEtTWjkwMjFSTiBHaWdhYml0
IEV0aGVybmV0IFBIWXMsIHVzaW5nIHRoZQ0KPiBSR01JSSBwcm90b2NvbC4NCg0KU2luY2UgaXQn
cyBSR01JSSwgSSB0aGluayB5b3Ugc2hvdWxkIGxvb2sgaW50byBSR01JSSBpbnRlcm5hbCBkZWxh
eQ0KcmVxdWlyZW1lbnRzIGZvciB0aGlzIGJvYXJkLg0KDQo+ID4gICBJIHN1Z2dlc3QNCj4gPiB0
aGF0IHlvdSBjb25uZWN0IHRoZSBEUEFBIGludGVyZmFjZSB0byBhIHRyYWZmaWMgYW5hbHl6ZXIg
b3IgZGlyZWN0bHkNCj4gPiB0byBhbm90aGVyIGRldmljZSBvbiB3aGljaCB5b3UgY2FuIGNhcHR1
cmUgdGhlIGluY29taW5nIHRyYWZmaWMgYW5kDQo+ID4gY2hlY2sgdGhhdCB0aGUgcmVjZWl2ZWQg
ZnJhbWVzIGFyZSBjb3JyZWN0Lg0KPiBJIGhhdmUgc3RhcnRlZCB0ZXN0aW5nIGFsb25nIHRoYXQg
bGluZSwgdXNpbmcgV2lyZXNoYXJrIHRvIHZpZXcgdGhlDQo+IHRyYWZmaWMgb24gdGhlIFg1MDAw
LzIwIGl0c2VsZiwgYW5kIGZyb20gYW5vdGhlciBtYWNoaW5lIGNvbm5lY3RlZA0KPiBvbiB0aGUg
c2FtZSBzdWJuZXQuIFNvIGZhciAoYXMgaW5kaWNhdGVkIGJ5IHNvbWUgZGV0YWlscyBvZiBpbiBt
eQ0KPiBpbml0aWFsIGVtYWlsKSwgSSBjYW4gc2VlIG91dGdvaW5nIGJyb2FkY2FzdCByZXF1ZXN0
cyAoZm9yIERIQ1ApDQo+IGJlaW5nIHNlbnQgb3V0IGZyb20gdGhlIFg1MDAwLzIwLCBhbmQgdGhl
c2UgcmVxdWVzdHMgYXJlIGNvcnJlY3RseQ0KPiBjb25zdHJ1Y3RlZCBhbmQgdmlzaWJsZSBvdXRz
aWRlIHRoZSBYNTAwMC8yMC4NCj4gDQo+IEhvd2V2ZXIsIG5vIHJlc3BvbnNlcyB0byB0aGUgREhD
UCBicm9hZGNhc3RzIGFwcGVhciB0byByZWFjaA0KPiB0byBYNTAwMC8yMCdzIERQQUEgRXRoZXJu
ZXQuIEkgd2lsbCBuZWVkIHRvIHNldHVwIHNvbWUgZnVydGhlcg0KPiB0ZXN0cyB0byBkZXRlcm1p
bmUgaWYgdGhlIERIQ1Agc2VydmVyIHNhdyB0aGUgcmVxdWVzdHMgYW5kIHJlc3BvbmRlZA0KPiB0
byB0aGVtLiAoSSBhc3N1bWUgdGhlIERIQ1Agc2VydmVyIGlzIGdldHRpbmcgdGhlbSwgYW5kIHJl
c3BvbmRpbmcsDQo+IGFzIEkgY2FuIGFsd2F5cyBnZXQgYSBzdWNjZXNzZnVsIERIQ1AgcmVzcG9u
c2UgdG8gdGhlIFg1MDAwLzIwDQo+IHdoZW4gdXNpbmcgYW4gYWRkLW9uIEV0aGVybmV0IFBJQ2Ug
Y2FyZCBvbiB0aGUgc2FtZSBzdWJuZXQpLg0KPiANCj4gSSB3aWxsIHNldHVwIHNvbWUgbW9yZSBk
aXJlY3QgbWFjaGluZS10by1tYWNoaW5lIHRlc3RpbmcgdG8NCj4gc2VlIHdoYXQgZWxzZSBJIGNh
biBnbGVhbiBmcm9tIHRoZSBuZXR3b3JrIHRyYWZmaWMuDQoNClRoYXQgd2lsbCBwcm92aWRlIG1v
cmUgY2xhcml0eSB0byB0aGUgYWN0dWFsIGlzc3VlLg0KDQo+IFBsZWFzZSBoYXZlIGEgbG9vayBh
dCB0aGUgYXR0YWNoZWQgZHRzIGZpbGVzLCBtYXliZSB0aGVyZSBpcyBzb21ldGhpbmcNCj4gb2J2
aW91cyB0aGVyZSB3ZSBhcmUgbm90IHNlZWluZy4NCj4gDQo+IEFsc28sIGdpdmVuIHRoYXQgdGhl
IFg1MDAwLzIwIHVzZXMgTWljcmVsIEtTWjkwMjFSTiBQSFlzIGluIFJHTUlJDQo+IG1vZGUsIHdo
YXQgY2hhbmdlcyB0byB0aGUgRFBBQSBoYXJkd2FyZSBjb25maWd1cmF0aW9uIHNob3VsZCB3ZQ0K
PiBleHBlY3QgdG8gc2VlIHNvIHRoYXQgdGhlIERQQUEgaXMgY29uZmlndXJlZCB0byB0YWxrIHRv
IHRoZW0/DQoNClRoZSBwaHktY29ubmVjdGlvbi10eXBlID0gInJnbWlpIjsgc2hvdWxkIHRha2Ug
Y2FyZSBvZiB0aGF0Lg0KVHJ5IHRvIGNoZWNrIHRoZSBsaW5rIGluZm9ybWF0aW9uIHJlcG9ydGVk
IGJ5IHRoZSBQSFkuDQoNCj4gPiBNYWRhbGluDQo+ID4NCj4gLS0NCj4gDQo+IEJlc3QgUmVnYXJk
cywNCj4gDQo+IEphbWllIEtydWVnZXINCj4gQklUYnlCSVQgU29mdHdhcmUgR3JvdXAgTExDDQo+
IA0KPiA+PiBIZXJlIGlzIHRoZSByZXN1bHRzIGZyb20gbXkgbGF0ZXN0IHRlc3RzLiBUaGV5IHdl
cmUgcGVyZm9ybWVkIHVzaW5nDQo+ID4+IHRoZSBsaW51eC00LjEwLjE3IHBwYzY0LCBzaW5jZSB0
aGF0IHJlcHJlc2VudHMgd2hlbiB0aGUgRFBBQSBFdGhlcm5ldA0KPiA+PiBjb2RlIHdhcyBpbnRy
b2R1Y2VkLg0KPiA+Pg0KPiA+PiBTaW1pbGFyIHRlc3RzLCB3aXRoIHNpbWlsYXIgcmVzdWx0cywg
d2VyZSBhbHNvIHBlcmZvcm1lZA0KPiA+PiB1c2luZyB0aGUgbGF0ZXN0IExpbnV4IGtlcm5lbHM6
DQo+ID4+DQo+ID4+IGxpbnV4LTQuMTUtcmM1DQo+ID4+IGxpbnV4LTQuMTUtcmM2DQo+ID4+IGxp
bnV4LTQuMTUtcmM3DQo+ID4+DQo+ID4+IChIZW5jZSB0aGUgcmVhc29uIGZvciBmYWxsaW5nIGJh
Y2sgdG8gdGVzdCB0aGUga2VybmVsIHJpZ2h0DQo+ID4+ICAgwqBhZnRlciB0aGUgaW50cm9kdWN0
aW9uIG9mIHRoZSBEUEFBIEV0aGVybmV0IGRyaXZlciBzb3VyY2VzKQ0KPiA+Pg0KPiA+PiAtLS0N
Cj4gPj4NCj4gPj4gQWxsIEtlcm5lbCBidWlsZHMgaGFkIHRoZSBEUEFBIEV0aGVybmV0IGVuYWJs
ZWQgaW4gdGhlIGtlcm5lbCwNCj4gPj4gYW5kIGFyZSB1c2luZyB0aGUgY29ycmVjdCBjeXJ1c19w
NTAyMC5ldGguZHRiIGRldmljZSB0cmVlIGZpbGUNCj4gPj4gKGZvciB1c2Ugb24gdGhlIFg1MDAw
LzIwKS4NCj4gPj4NCj4gPj4gVGhlIHJlc3VsdHMgYXJlIHF1aXRlIHNpbWlsYXIgZm9yIGFsbCBr
ZXJuZWxzIGluIHJlZ2FyZHMgdG8gdGhlIERQQUENCj4gPj4gRXRoZXJuZXQuDQo+ID4+DQo+ID4+
IEFsbCB0ZXN0ZWQga2VybmVscyBzZXR1cCB0aGUgdHdvIEV0aGVybmV0IGludGVyZmFjZXMgY29y
cmVjdGx5DQo+ID4+IGFzIGV0aDAgYW5kIGV0aDEsIGFuZCBwdWxsIHRoZSBjb3JyZWN0IE1BQyBh
ZGRyZXNzZXMgZnJvbSBVLUJvb3QNCj4gPj4gZW52aXJvbm1lbnQgdmFyaWFibGVzIGV0aGFkZHIg
YW5kIGV0aDFhZGRyIHJlc3BlY3RpdmVseS4NCj4gPj4NCj4gPj4gU28gYXQgdGhpcyBwb2ludCBM
aW51eCBoYXMgd2hhdCBpdCBiZWxpZXZlcyBpcyBmdWxseSBjb25maWd1cmVkDQo+ID4+IGhhcmR3
YXJlLCB3YWl0aW5nIHRvIGhhdmUgYW4gSVAgQWRkcmVzcy9OZXRtYXNrL0dhdGV3YXkNCj4gPj4g
dG8gYmUgc2V0IGFuZCB0byBicmluZyB0aGUgaW50ZXJmYWNlIG9ubGluZS4NCj4gPj4NCj4gPj4g
SG93ZXZlciwgYWxsIGF0dGVtcHRzIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIG91dHNpZGUgd29y
bGQNCj4gPj4gZG8gbm90IG1ha2UgaXQgb3V0IHRoZSBwaHlzaWNhbCAoUEhZKSBoYXJkd2FyZSAt
IG9yIGRvIHRoZXk/DQo+ID4+DQo+ID4+ICoqIFRoZSBmb2xsb3dpbmcgcmVzdWx0cyB3ZXJlIGNh
cHR1cmVkIHVuZGVyIGxpbnV4LTQuMTAuMTcgKioNCj4gPj4NCj4gPj4gV2hlbiBJIGJyaW5nIHRo
ZSBpbnRlcmZhY2UgdXAgdXNpbmcgYSBzdGF0aWMgYWRkcmVzcywgaW4gdGhpcyBjYXNlDQo+ID4+
IDE5Mi4xNjguMS4yMSwgSSBzZWUgdGhlIGZvbGxvd2luZyAoTk9URSBUWCBieXRlcyBzYXlzIDE1
NC4wIEtCLA0KPiA+PiB3aGlsZSBSWCBieXRlcyBzYXlzIDAuMCBCKToNCj4gPj4NCj4gPj4gamFt
aWVAWDUwMDAtTGludXg6JCBpZmNvbmZpZw0KPiA+PiBldGgwwqDCoMKgwqDCoCBMaW5rIGVuY2Fw
OkV0aGVybmV0wqAgSFdhZGRyIDAwOjgwOjEwOjExOjExOjExDQo+ID4+ICAgwqDCoMKgwqDCoMKg
wqDCoMKgIGluZXQgYWRkcjoxOTIuMTY4LjEuMjHCoCBCY2FzdDoxOTIuMTY4LjEuMjU1DQo+IE1h
c2s6MjU1LjI1NS4yNTUuMA0KPiA+PiAgIMKgwqDCoMKgwqDCoMKgwqDCoCBpbmV0NiBhZGRyOiBm
ZTgwOjoyODA6MTBmZjpmZTExOjExMTEvNjQgU2NvcGU6TGluaw0KPiA+PiAgIMKgwqDCoMKgwqDC
oMKgwqDCoCBVUCBCUk9BRENBU1QgUlVOTklORyBNVUxUSUNBU1TCoCBNVFU6MTUwMMKgIE1ldHJp
YzoxDQo+ID4+ICAgwqDCoMKgwqDCoMKgwqDCoMKgIFJYIHBhY2tldHM6MCBlcnJvcnM6MCBkcm9w
cGVkOjAgb3ZlcnJ1bnM6MCBmcmFtZTowDQo+ID4+ICAgwqDCoMKgwqDCoMKgwqDCoMKgIFRYIHBh
Y2tldHM6MTQyOCBlcnJvcnM6MCBkcm9wcGVkOjAgb3ZlcnJ1bnM6MCBjYXJyaWVyOjANCj4gPj4g
ICDCoMKgwqDCoMKgwqDCoMKgwqAgY29sbGlzaW9uczowIHR4cXVldWVsZW46MTAwMA0KPiA+PiAg
IMKgwqDCoMKgwqDCoMKgwqDCoCBSWCBieXRlczowICgwLjAgQinCoCBUWCBieXRlczoxNTQwNjYg
KDE1NC4wIEtCKQ0KPiA+PiAgIMKgwqDCoMKgwqDCoMKgwqDCoCBNZW1vcnk6ZmU0ZTYwMDAtZmU0
ZTZmZmYNCj4gPj4NCj4gPj4gZXRoMcKgwqDCoMKgwqAgTGluayBlbmNhcDpFdGhlcm5ldMKgIEhX
YWRkciAwMDo4MDoxMDoyMjoyMjoyMg0KPiA+PiAgIMKgwqDCoMKgwqDCoMKgwqDCoCBVUCBCUk9B
RENBU1QgTVVMVElDQVNUwqAgTVRVOjE1MDDCoCBNZXRyaWM6MQ0KPiA+PiAgIMKgwqDCoMKgwqDC
oMKgwqDCoCBSWCBwYWNrZXRzOjAgZXJyb3JzOjAgZHJvcHBlZDowIG92ZXJydW5zOjAgZnJhbWU6
MA0KPiA+PiAgIMKgwqDCoMKgwqDCoMKgwqDCoCBUWCBwYWNrZXRzOjAgZXJyb3JzOjAgZHJvcHBl
ZDowIG92ZXJydW5zOjAgY2FycmllcjowDQo+ID4+ICAgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbGxp
c2lvbnM6MCB0eHF1ZXVlbGVuOjEwMDANCj4gPj4gICDCoMKgwqDCoMKgwqDCoMKgwqAgUlggYnl0
ZXM6MCAoMC4wIEIpwqAgVFggYnl0ZXM6MCAoMC4wIEIpDQo+ID4+ICAgwqDCoMKgwqDCoMKgwqDC
oMKgIE1lbW9yeTpmZTRlODAwMC1mZTRlOGZmZg0KPiA+Pg0KPiA+PiBsb8KgwqDCoMKgwqDCoMKg
IExpbmsgZW5jYXA6TG9jYWwgTG9vcGJhY2sNCj4gPj4gICDCoMKgwqDCoMKgwqDCoMKgwqAgaW5l
dCBhZGRyOjEyNy4wLjAuMcKgIE1hc2s6MjU1LjAuMC4wDQo+ID4+ICAgwqDCoMKgwqDCoMKgwqDC
oMKgIGluZXQ2IGFkZHI6IDo6MS8xMjggU2NvcGU6SG9zdA0KPiA+PiAgIMKgwqDCoMKgwqDCoMKg
wqDCoCBVUCBMT09QQkFDSyBSVU5OSU5HwqAgTVRVOjY1NTM2wqAgTWV0cmljOjENCj4gPj4gICDC
oMKgwqDCoMKgwqDCoMKgwqAgUlggcGFja2V0czoxODY5IGVycm9yczowIGRyb3BwZWQ6MCBvdmVy
cnVuczowIGZyYW1lOjANCj4gPj4gICDCoMKgwqDCoMKgwqDCoMKgwqAgVFggcGFja2V0czoxODY5
IGVycm9yczowIGRyb3BwZWQ6MCBvdmVycnVuczowIGNhcnJpZXI6MA0KPiA+PiAgIMKgwqDCoMKg
wqDCoMKgwqDCoCBjb2xsaXNpb25zOjAgdHhxdWV1ZWxlbjoxMDAwDQo+ID4+ICAgwqDCoMKgwqDC
oMKgwqDCoMKgIFJYIGJ5dGVzOjE1NjkzMiAoMTU2LjkgS0IpwqAgVFggYnl0ZXM6MTU2OTMyICgx
NTYuOSBLQikNCj4gPj4NCj4gPj4gQ2hlY2tpbmcgdGhlIHJvdXRpbmcgdGFibGUsIGV2ZXJ5dGhp
bmcgbG9va3MgZmluZSB0aGVyZToNCj4gPj4NCj4gPj4gamFtaWVAWDUwMDAtTGludXg6JCBuZXRz
dGF0IC1yDQo+ID4+IEtlcm5lbCBJUCByb3V0aW5nIHRhYmxlDQo+ID4+IERlc3RpbmF0aW9uwqDC
oMKgwqAgR2F0ZXdhecKgwqDCoMKgwqDCoMKgwqAgR2VubWFza8KgwqDCoMKgwqDCoMKgwqAgRmxh
Z3PCoMKgIE1TUw0KPiBXaW5kb3fCoCBpcnR0DQo+ID4+IElmYWNlDQo+ID4+IGRlZmF1bHTCoMKg
wqDCoMKgwqDCoMKgIDE5Mi4xNjguMS4xwqDCoMKgwqAgMC4wLjAuMMKgwqDCoMKgwqDCoMKgwqAg
VUfCoMKgwqDCoMKgwqDCoCAwDQo+IDDCoMKgwqDCoMKgwqDCoMKgwqAgMA0KPiA+PiBldGgwDQo+
ID4+IGxpbmstbG9jYWzCoMKgwqDCoMKgICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDI1
NS4yNTUuMC4wwqDCoMKgwqAgVcKgwqDCoMKgwqDCoMKgwqAgMA0KPiAwwqDCoMKgwqDCoMKgwqDC
oMKgIDANCj4gPj4gZXRoMA0KPiA+PiAxOTIuMTY4LjEuMMKgwqDCoMKgICrCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgIDI1NS4yNTUuMjU1LjDCoMKgIFXCoMKgwqDCoMKgwqDCoMKgIDANCj4g
MMKgwqDCoMKgwqDCoMKgwqDCoCAwDQo+ID4+IGV0aDANCj4gPj4NCj4gPj4gQXR0ZW1wdGluZyB0
byBQSU5HIHRoZSBpbnRlcmZhY2UgaXRzZWxmIHdvcmtzOg0KPiA+Pg0KPiA+PiBqYW1pZUBYNTAw
MC1MaW51eDokIHBpbmcgMTkyLjE2OC4xLjIxDQo+ID4+IFBJTkcgMTkyLjE2OC4xLjIxICgxOTIu
MTY4LjEuMjEpIDU2KDg0KSBieXRlcyBvZiBkYXRhLg0KPiA+PiA2NCBieXRlcyBmcm9tIDE5Mi4x
NjguMS4yMTogaWNtcF9zZXE9MSB0dGw9NjQgdGltZT0wLjAzNyBtcw0KPiA+PiA2NCBieXRlcyBm
cm9tIDE5Mi4xNjguMS4yMTogaWNtcF9zZXE9MiB0dGw9NjQgdGltZT0wLjA0NSBtcw0KPiA+PiA2
NCBieXRlcyBmcm9tIDE5Mi4xNjguMS4yMTogaWNtcF9zZXE9MyB0dGw9NjQgdGltZT0wLjAzMyBt
cw0KPiA+PiBeQw0KPiA+PiAtLS0gMTkyLjE2OC4xLjIxIHBpbmcgc3RhdGlzdGljcyAtLS0NCj4g
Pj4gMyBwYWNrZXRzIHRyYW5zbWl0dGVkLCAzIHJlY2VpdmVkLCAwJSBwYWNrZXQgbG9zcywgdGlt
ZSAyMDQzbXMNCj4gPj4NCj4gPj4gSG93ZXZlciwgYXR0ZW1wdHMgdG8gUElORyB0aGUgZ2F0ZXdh
eSAoMTkyLjE2OC4xLjEpIGZhaWwgYXMNCj4gdW5yZWFjaGFibGU6DQo+ID4+DQo+ID4+IGphbWll
QFg1MDAwLUxpbnV4OiQgcGluZyAxOTIuMTY4LjEuMQ0KPiA+PiBQSU5HIDE5Mi4xNjguMS4xICgx
OTIuMTY4LjEuMSkgNTYoODQpIGJ5dGVzIG9mIGRhdGEuDQo+ID4+ICAgRnJvbSAxOTIuMTY4LjEu
MjEgaWNtcF9zZXE9MSBEZXN0aW5hdGlvbiBIb3N0IFVucmVhY2hhYmxlDQo+ID4+ICAgRnJvbSAx
OTIuMTY4LjEuMjEgaWNtcF9zZXE9MiBEZXN0aW5hdGlvbiBIb3N0IFVucmVhY2hhYmxlDQo+ID4+
ICAgRnJvbSAxOTIuMTY4LjEuMjEgaWNtcF9zZXE9MyBEZXN0aW5hdGlvbiBIb3N0IFVucmVhY2hh
YmxlDQo+ID4+IF5DDQo+ID4+IC0tLSAxOTIuMTY4LjEuMSBwaW5nIHN0YXRpc3RpY3MgLS0tDQo+
ID4+IDcgcGFja2V0cyB0cmFuc21pdHRlZCwgMCByZWNlaXZlZCwgKzMgZXJyb3JzLCAxMDAlIHBh
Y2tldCBsb3NzLCB0aW1lDQo+ID4+IDYwNzdtcw0KPiA+Pg0KPiA+PiBJbiBvcmRlciB0byB0YWtl
IGEgY2xvc2VyIGxvb2sgYXQgd2hhdCBpcyBnb2luZyBvbiBJIGluc3RhbGxlZA0KPiBXaXJlc2hh
cmsNCj4gPj4gYm90aCBvbiBteSB0ZXN0IFg1MDAwLzIwIExpbnV4IGluc3RhbGwgKFVidW50dSAx
Ni4wNC4zIExUUyksIGFuZCBvbg0KPiA+PiBhbm90aGVyIExpbnV4IGJveCBjb25uZWN0ZWQgdG8g
dGhlIHNhbWUgbmV0d29yayBzd2l0Y2ggKGluIHRoaXMgY2FzZQ0KPiA+PiBhdCBJUCBhZGRyZXNz
IDE5Mi4xNjguMS4yMTApDQo+ID4+DQo+ID4+IEluIHRoaXMgdGVzdCBJIHN0YXJ0IHRoZSBjYXB0
dXJlIG9uIGV0aDAgKFg1MDAwLzIwKSBiZWZvcmUgaXQgaXMgcHV0DQo+ID4+IG9ubGluZSwNCj4g
Pj4gYW5kIGF0dGVtcHQgdG8gYnJpbmcgaXQgdXAgdXNpbmcgREhDUCB0byBvYnRhaW4gaXQncyBh
ZGRyZXNzLg0KPiA+Pg0KPiA+PiBXaGF0IEkgZm91bmQgd2FzIHRoYXQgbmV0d29yayB0cmFmZmlj
ICp3YXMqIGJlaW5nIGF0dGVtcHRlZCBvdmVyIGV0aDAuDQo+ID4+IEhlcmUgaXMgYSBwbGFpbiB0
ZXh0IGV4cG9ydCBvZiB0aGUgdHJhbnNtaXQgc2lkZSAodGhlIFg1MDAwLzIwKSB0aGF0DQo+ID4+
IHdhcyBjYXB0dXJlZCB1c2luZyBXaXJlc2hhcmsuDQo+ID4+DQo+ID4+IChUaGVyZSB3ZXJlIG1v
cmUgbmV0d29yayBwYWNrZXRzIGJlaW5nIHNlbnQgZnJvbSB0aGUgWDUwMDAvMjAsDQo+ID4+ICAg
wqBob3dldmVyLCBJIGFtIG9ubHkgc2hvd2luZyBESENQIHRyYWZmaWMgdG8gc2F2ZSBzcGFjZSBp
biB0aGlzIHBvc3QpOg0KPiA+Pg0KPiA+PiAtLS0NCj4gPj4gTm8uwqDCoMKgwqAgVGltZcKgwqDC
oMKgwqDCoMKgwqDCoMKgIFNvdXJjZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEZXN0
aW5hdGlvbiBQcm90b2NvbA0KPiBMZW5ndGgNCj4gPj4gSW5mbw0KPiA+PiAgIMKgwqDCoMKgwqAg
MiAwLjA0MjI1OTg0M8KgwqDCoCAwLjAuMC4wwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAy
NTUuMjU1LjI1NS4yNTUgREhDUA0KPiA+PiAzNDLCoMKgwqAgREhDUCBEaXNjb3ZlciAtIFRyYW5z
YWN0aW9uIElEIDB4NjU1ZDkxZTgNCj4gPj4NCj4gPj4gRnJhbWUgMjogMzQyIGJ5dGVzIG9uIHdp
cmUgKDI3MzYgYml0cyksIDM0MiBieXRlcyBjYXB0dXJlZCAoMjczNiBiaXRzKQ0KPiA+PiBvbiBp
bnRlcmZhY2UgMA0KPiA+PiBFdGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6
ODA6MTA6MTE6MTE6MTEpLCBEc3Q6IEJyb2FkY2FzdA0KPiA+PiAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYp
DQo+ID4+IEludGVybmV0IFByb3RvY29sIFZlcnNpb24gNCwgU3JjOiAwLjAuMC4wLCBEc3Q6IDI1
NS4yNTUuMjU1LjI1NQ0KPiA+PiBVc2VyIERhdGFncmFtIFByb3RvY29sLCBTcmMgUG9ydDogNjgs
IERzdCBQb3J0OiA2Nw0KPiA+PiBCb290c3RyYXAgUHJvdG9jb2wgKERpc2NvdmVyKQ0KPiA+Pg0K
PiA+PiBOby7CoMKgwqDCoCBUaW1lwqDCoMKgwqDCoMKgwqDCoMKgwqAgU291cmNlwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgIERlc3RpbmF0aW9uIFByb3RvY29sDQo+IExlbmd0aA0KPiA+
PiBJbmZvDQo+ID4+ICAgwqDCoMKgwqAgMTYgMy44MzAwMDExNTLCoMKgwqAgMC4wLjAuMMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjU1LjI1NS4yNTUuMjU1IERIQ1ANCj4gPj4gMzQywqDC
oMKgIERIQ1AgRGlzY292ZXIgLSBUcmFuc2FjdGlvbiBJRCAweDY1NWQ5MWU4DQo+ID4+DQo+ID4+
IEZyYW1lIDE2OiAzNDIgYnl0ZXMgb24gd2lyZSAoMjczNiBiaXRzKSwgMzQyIGJ5dGVzIGNhcHR1
cmVkICgyNzM2IGJpdHMpDQo+ID4+IG9uIGludGVyZmFjZSAwDQo+ID4+IEV0aGVybmV0IElJLCBT
cmM6IENvbW1vZG9yXzExOjExOjExICgwMDo4MDoxMDoxMToxMToxMSksIERzdDogQnJvYWRjYXN0
DQo+ID4+IChmZjpmZjpmZjpmZjpmZjpmZikNCj4gPj4gSW50ZXJuZXQgUHJvdG9jb2wgVmVyc2lv
biA0LCBTcmM6IDAuMC4wLjAsIERzdDogMjU1LjI1NS4yNTUuMjU1DQo+ID4+IFVzZXIgRGF0YWdy
YW0gUHJvdG9jb2wsIFNyYyBQb3J0OiA2OCwgRHN0IFBvcnQ6IDY3DQo+ID4+IEJvb3RzdHJhcCBQ
cm90b2NvbCAoRGlzY292ZXIpDQo+ID4+DQo+ID4+IE5vLsKgwqDCoMKgIFRpbWXCoMKgwqDCoMKg
wqDCoMKgwqDCoCBTb3VyY2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRGVzdGluYXRp
b24gUHJvdG9jb2wNCj4gTGVuZ3RoDQo+ID4+IEluZm8NCj4gPj4gICDCoMKgwqDCoCAyMSA5LjMw
ODkxNDUzM8KgwqDCoCAwLjAuMC4wwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyNTUuMjU1
LjI1NS4yNTUgREhDUA0KPiA+PiAzNDLCoMKgwqAgREhDUCBEaXNjb3ZlciAtIFRyYW5zYWN0aW9u
IElEIDB4NjU1ZDkxZTgNCj4gPj4NCj4gPj4gRnJhbWUgMjE6IDM0MiBieXRlcyBvbiB3aXJlICgy
NzM2IGJpdHMpLCAzNDIgYnl0ZXMgY2FwdHVyZWQgKDI3MzYgYml0cykNCj4gPj4gb24gaW50ZXJm
YWNlIDANCj4gPj4gRXRoZXJuZXQgSUksIFNyYzogQ29tbW9kb3JfMTE6MTE6MTEgKDAwOjgwOjEw
OjExOjExOjExKSwgRHN0OiBCcm9hZGNhc3QNCj4gPj4gKGZmOmZmOmZmOmZmOmZmOmZmKQ0KPiA+
PiBJbnRlcm5ldCBQcm90b2NvbCBWZXJzaW9uIDQsIFNyYzogMC4wLjAuMCwgRHN0OiAyNTUuMjU1
LjI1NS4yNTUNCj4gPj4gVXNlciBEYXRhZ3JhbSBQcm90b2NvbCwgU3JjIFBvcnQ6IDY4LCBEc3Qg
UG9ydDogNjcNCj4gPj4gQm9vdHN0cmFwIFByb3RvY29sIChEaXNjb3ZlcikNCj4gPj4NCj4gPj4g
Tm8uwqDCoMKgwqAgVGltZcKgwqDCoMKgwqDCoMKgwqDCoMKgIFNvdXJjZcKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoCBEZXN0aW5hdGlvbiBQcm90b2NvbA0KPiBMZW5ndGgNCj4gPj4gSW5m
bw0KPiA+PiAgIMKgwqDCoMKgIDIzIDE4LjkwNjQwNTM0M8KgwqAgMC4wLjAuMMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqAgMjU1LjI1NS4yNTUuMjU1IERIQ1ANCj4gPj4gMzQywqDCoMKgIERI
Q1AgRGlzY292ZXIgLSBUcmFuc2FjdGlvbiBJRCAweDY1NWQ5MWU4DQo+ID4+DQo+ID4+IEZyYW1l
IDIzOiAzNDIgYnl0ZXMgb24gd2lyZSAoMjczNiBiaXRzKSwgMzQyIGJ5dGVzIGNhcHR1cmVkICgy
NzM2IGJpdHMpDQo+ID4+IG9uIGludGVyZmFjZSAwDQo+ID4+IEV0aGVybmV0IElJLCBTcmM6IENv
bW1vZG9yXzExOjExOjExICgwMDo4MDoxMDoxMToxMToxMSksIERzdDogQnJvYWRjYXN0DQo+ID4+
IChmZjpmZjpmZjpmZjpmZjpmZikNCj4gPj4gSW50ZXJuZXQgUHJvdG9jb2wgVmVyc2lvbiA0LCBT
cmM6IDAuMC4wLjAsIERzdDogMjU1LjI1NS4yNTUuMjU1DQo+ID4+IFVzZXIgRGF0YWdyYW0gUHJv
dG9jb2wsIFNyYyBQb3J0OiA2OCwgRHN0IFBvcnQ6IDY3DQo+ID4+IEJvb3RzdHJhcCBQcm90b2Nv
bCAoRGlzY292ZXIpDQo+ID4+DQo+ID4+IE5vLsKgwqDCoMKgIFRpbWXCoMKgwqDCoMKgwqDCoMKg
wqDCoCBTb3VyY2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRGVzdGluYXRpb24gUHJv
dG9jb2wNCj4gTGVuZ3RoDQo+ID4+IEluZm8NCj4gPj4gICDCoMKgwqDCoCAyNSAzNi4zOTA5MjY0
NTDCoMKgIDAuMC4wLjDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDI1NS4yNTUuMjU1LjI1
NSBESENQDQo+ID4+IDM0MsKgwqDCoCBESENQIERpc2NvdmVyIC0gVHJhbnNhY3Rpb24gSUQgMHg2
NTVkOTFlOA0KPiA+Pg0KPiA+PiBGcmFtZSAyNTogMzQyIGJ5dGVzIG9uIHdpcmUgKDI3MzYgYml0
cyksIDM0MiBieXRlcyBjYXB0dXJlZCAoMjczNiBiaXRzKQ0KPiA+PiBvbiBpbnRlcmZhY2UgMA0K
PiA+PiBFdGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6
MTEpLCBEc3Q6IEJyb2FkY2FzdA0KPiA+PiAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ID4+IEludGVy
bmV0IFByb3RvY29sIFZlcnNpb24gNCwgU3JjOiAwLjAuMC4wLCBEc3Q6IDI1NS4yNTUuMjU1LjI1
NQ0KPiA+PiBVc2VyIERhdGFncmFtIFByb3RvY29sLCBTcmMgUG9ydDogNjgsIERzdCBQb3J0OiA2
Nw0KPiA+PiBCb290c3RyYXAgUHJvdG9jb2wgKERpc2NvdmVyKQ0KPiA+Pg0KPiA+PiBOby7CoMKg
wqDCoCBUaW1lwqDCoMKgwqDCoMKgwqDCoMKgwqAgU291cmNlwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgIERlc3RpbmF0aW9uIFByb3RvY29sDQo+IExlbmd0aA0KPiA+PiBJbmZvDQo+ID4+
ICAgwqDCoMKgwqAgMjYgNDQuMDQ4MzI4NDEywqDCoCAwLjAuMC4wwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoCAyNTUuMjU1LjI1NS4yNTUgREhDUA0KPiA+PiAzNDLCoMKgwqAgREhDUCBEaXNj
b3ZlciAtIFRyYW5zYWN0aW9uIElEIDB4NjU1ZDkxZTgNCj4gPj4NCj4gPj4gRnJhbWUgMjY6IDM0
MiBieXRlcyBvbiB3aXJlICgyNzM2IGJpdHMpLCAzNDIgYnl0ZXMgY2FwdHVyZWQgKDI3MzYgYml0
cykNCj4gPj4gb24gaW50ZXJmYWNlIDANCj4gPj4gRXRoZXJuZXQgSUksIFNyYzogQ29tbW9kb3Jf
MTE6MTE6MTEgKDAwOjgwOjEwOjExOjExOjExKSwgRHN0OiBCcm9hZGNhc3QNCj4gPj4gKGZmOmZm
OmZmOmZmOmZmOmZmKQ0KPiA+PiBJbnRlcm5ldCBQcm90b2NvbCBWZXJzaW9uIDQsIFNyYzogMC4w
LjAuMCwgRHN0OiAyNTUuMjU1LjI1NS4yNTUNCj4gPj4gVXNlciBEYXRhZ3JhbSBQcm90b2NvbCwg
U3JjIFBvcnQ6IDY4LCBEc3QgUG9ydDogNjcNCj4gPj4gQm9vdHN0cmFwIFByb3RvY29sIChEaXNj
b3ZlcikNCj4gPj4NCj4gPj4gTm8uwqDCoMKgwqAgVGltZcKgwqDCoMKgwqDCoMKgwqDCoMKgIFNv
dXJjZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEZXN0aW5hdGlvbiBQcm90b2NvbA0K
PiBMZW5ndGgNCj4gPj4gSW5mbw0KPiA+PiAgIMKgwqDCoMKgIDMwIDQ0Ljg4OTA0OTIwM8KgwqAg
MC4wLjAuMMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjU1LjI1NS4yNTUuMjU1IERIQ1AN
Cj4gPj4gMzQywqDCoMKgIERIQ1AgRGlzY292ZXIgLSBUcmFuc2FjdGlvbiBJRCAweDQyMWJhZGUz
DQo+ID4+DQo+ID4+IEZyYW1lIDMwOiAzNDIgYnl0ZXMgb24gd2lyZSAoMjczNiBiaXRzKSwgMzQy
IGJ5dGVzIGNhcHR1cmVkICgyNzM2IGJpdHMpDQo+ID4+IG9uIGludGVyZmFjZSAwDQo+ID4+IEV0
aGVybmV0IElJLCBTcmM6IENvbW1vZG9yXzExOjExOjExICgwMDo4MDoxMDoxMToxMToxMSksIERz
dDogQnJvYWRjYXN0DQo+ID4+IChmZjpmZjpmZjpmZjpmZjpmZikNCj4gPj4gSW50ZXJuZXQgUHJv
dG9jb2wgVmVyc2lvbiA0LCBTcmM6IDAuMC4wLjAsIERzdDogMjU1LjI1NS4yNTUuMjU1DQo+ID4+
IFVzZXIgRGF0YWdyYW0gUHJvdG9jb2wsIFNyYyBQb3J0OiA2OCwgRHN0IFBvcnQ6IDY3DQo+ID4+
IEJvb3RzdHJhcCBQcm90b2NvbCAoRGlzY292ZXIpDQo+ID4+DQo+ID4+IE5vLsKgwqDCoMKgIFRp
bWXCoMKgwqDCoMKgwqDCoMKgwqDCoCBTb3VyY2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqAgRGVzdGluYXRpb24gUHJvdG9jb2wNCj4gTGVuZ3RoDQo+ID4+IEluZm8NCj4gPj4gICDCoMKg
wqDCoCA0NCA0OC4yNTQ0OTUzMDTCoMKgIDAuMC4wLjDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgIDI1NS4yNTUuMjU1LjI1NSBESENQDQo+ID4+IDM0MsKgwqDCoCBESENQIERpc2NvdmVyIC0g
VHJhbnNhY3Rpb24gSUQgMHg0MjFiYWRlMw0KPiA+Pg0KPiA+PiBGcmFtZSA0NDogMzQyIGJ5dGVz
IG9uIHdpcmUgKDI3MzYgYml0cyksIDM0MiBieXRlcyBjYXB0dXJlZCAoMjczNiBiaXRzKQ0KPiA+
PiBvbiBpbnRlcmZhY2UgMA0KPiA+PiBFdGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8xMToxMTox
MSAoMDA6ODA6MTA6MTE6MTE6MTEpLCBEc3Q6IEJyb2FkY2FzdA0KPiA+PiAoZmY6ZmY6ZmY6ZmY6
ZmY6ZmYpDQo+ID4+IEludGVybmV0IFByb3RvY29sIFZlcnNpb24gNCwgU3JjOiAwLjAuMC4wLCBE
c3Q6IDI1NS4yNTUuMjU1LjI1NQ0KPiA+PiBVc2VyIERhdGFncmFtIFByb3RvY29sLCBTcmMgUG9y
dDogNjgsIERzdCBQb3J0OiA2Nw0KPiA+PiBCb290c3RyYXAgUHJvdG9jb2wgKERpc2NvdmVyKQ0K
PiA+Pg0KPiA+PiBOby7CoMKgwqDCoCBUaW1lwqDCoMKgwqDCoMKgwqDCoMKgwqAgU291cmNlwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERlc3RpbmF0aW9uIFByb3RvY29sDQo+IExlbmd0
aA0KPiA+PiBJbmZvDQo+ID4+ICAgwqDCoMKgwqAgNDkgNTQuMjk5MDUyNzMywqDCoCAwLjAuMC4w
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyNTUuMjU1LjI1NS4yNTUgREhDUA0KPiA+PiAz
NDLCoMKgwqAgREhDUCBEaXNjb3ZlciAtIFRyYW5zYWN0aW9uIElEIDB4NDIxYmFkZTMNCj4gPj4N
Cj4gPj4gRnJhbWUgNDk6IDM0MiBieXRlcyBvbiB3aXJlICgyNzM2IGJpdHMpLCAzNDIgYnl0ZXMg
Y2FwdHVyZWQgKDI3MzYgYml0cykNCj4gPj4gb24gaW50ZXJmYWNlIDANCj4gPj4gRXRoZXJuZXQg
SUksIFNyYzogQ29tbW9kb3JfMTE6MTE6MTEgKDAwOjgwOjEwOjExOjExOjExKSwgRHN0OiBCcm9h
ZGNhc3QNCj4gPj4gKGZmOmZmOmZmOmZmOmZmOmZmKQ0KPiA+PiBJbnRlcm5ldCBQcm90b2NvbCBW
ZXJzaW9uIDQsIFNyYzogMC4wLjAuMCwgRHN0OiAyNTUuMjU1LjI1NS4yNTUNCj4gPj4gVXNlciBE
YXRhZ3JhbSBQcm90b2NvbCwgU3JjIFBvcnQ6IDY4LCBEc3QgUG9ydDogNjcNCj4gPj4gQm9vdHN0
cmFwIFByb3RvY29sIChEaXNjb3ZlcikNCj4gPj4NCj4gPj4gTm8uwqDCoMKgwqAgVGltZcKgwqDC
oMKgwqDCoMKgwqDCoMKgIFNvdXJjZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEZXN0
aW5hdGlvbiBQcm90b2NvbA0KPiBMZW5ndGgNCj4gPj4gSW5mbw0KPiA+PiAgIMKgwqDCoMKgIDUx
IDYyLjY3MjAwNzQ4MsKgwqAgMC4wLjAuMMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjU1
LjI1NS4yNTUuMjU1IERIQ1ANCj4gPj4gMzQywqDCoMKgIERIQ1AgRGlzY292ZXIgLSBUcmFuc2Fj
dGlvbiBJRCAweDQyMWJhZGUzDQo+ID4+DQo+ID4+IEZyYW1lIDUxOiAzNDIgYnl0ZXMgb24gd2ly
ZSAoMjczNiBiaXRzKSwgMzQyIGJ5dGVzIGNhcHR1cmVkICgyNzM2IGJpdHMpDQo+ID4+IG9uIGlu
dGVyZmFjZSAwDQo+ID4+IEV0aGVybmV0IElJLCBTcmM6IENvbW1vZG9yXzExOjExOjExICgwMDo4
MDoxMDoxMToxMToxMSksIERzdDogQnJvYWRjYXN0DQo+ID4+IChmZjpmZjpmZjpmZjpmZjpmZikN
Cj4gPj4gSW50ZXJuZXQgUHJvdG9jb2wgVmVyc2lvbiA0LCBTcmM6IDAuMC4wLjAsIERzdDogMjU1
LjI1NS4yNTUuMjU1DQo+ID4+IFVzZXIgRGF0YWdyYW0gUHJvdG9jb2wsIFNyYyBQb3J0OiA2OCwg
RHN0IFBvcnQ6IDY3DQo+ID4+IEJvb3RzdHJhcCBQcm90b2NvbCAoRGlzY292ZXIpDQo+ID4+DQo+
ID4+IE5vLsKgwqDCoMKgIFRpbWXCoMKgwqDCoMKgwqDCoMKgwqDCoCBTb3VyY2XCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqAgRGVzdGluYXRpb24gUHJvdG9jb2wNCj4gTGVuZ3RoDQo+ID4+
IEluZm8NCj4gPj4gICDCoMKgwqDCoCA1MiA3Ny40ODU4OTYyMDLCoMKgIDAuMC4wLjDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgIDI1NS4yNTUuMjU1LjI1NSBESENQDQo+ID4+IDM0MsKgwqDC
oCBESENQIERpc2NvdmVyIC0gVHJhbnNhY3Rpb24gSUQgMHg0MjFiYWRlMw0KPiA+Pg0KPiA+PiBG
cmFtZSA1MjogMzQyIGJ5dGVzIG9uIHdpcmUgKDI3MzYgYml0cyksIDM0MiBieXRlcyBjYXB0dXJl
ZCAoMjczNiBiaXRzKQ0KPiA+PiBvbiBpbnRlcmZhY2UgMA0KPiA+PiBFdGhlcm5ldCBJSSwgU3Jj
OiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpLCBEc3Q6IEJyb2FkY2FzdA0K
PiA+PiAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ID4+IEludGVybmV0IFByb3RvY29sIFZlcnNpb24g
NCwgU3JjOiAwLjAuMC4wLCBEc3Q6IDI1NS4yNTUuMjU1LjI1NQ0KPiA+PiBVc2VyIERhdGFncmFt
IFByb3RvY29sLCBTcmMgUG9ydDogNjgsIERzdCBQb3J0OiA2Nw0KPiA+PiBCb290c3RyYXAgUHJv
dG9jb2wgKERpc2NvdmVyKQ0KPiA+Pg0KPiA+PiBOby7CoMKgwqDCoCBUaW1lwqDCoMKgwqDCoMKg
wqDCoMKgwqAgU291cmNlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERlc3RpbmF0aW9u
IFByb3RvY29sDQo+IExlbmd0aA0KPiA+PiBJbmZvDQo+ID4+ICAgwqDCoMKgwqAgNTYgODkuODk1
MzA0MTUywqDCoCAwLjAuMC4wwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyNTUuMjU1LjI1
NS4yNTUgREhDUA0KPiA+PiAzNDLCoMKgwqAgREhDUCBEaXNjb3ZlciAtIFRyYW5zYWN0aW9uIElE
IDB4NWRmNDdjODQNCj4gPj4NCj4gPj4gRnJhbWUgNTY6IDM0MiBieXRlcyBvbiB3aXJlICgyNzM2
IGJpdHMpLCAzNDIgYnl0ZXMgY2FwdHVyZWQgKDI3MzYgYml0cykNCj4gPj4gb24gaW50ZXJmYWNl
IDANCj4gPj4gRXRoZXJuZXQgSUksIFNyYzogQ29tbW9kb3JfMTE6MTE6MTEgKDAwOjgwOjEwOjEx
OjExOjExKSwgRHN0OiBCcm9hZGNhc3QNCj4gPj4gKGZmOmZmOmZmOmZmOmZmOmZmKQ0KPiA+PiBJ
bnRlcm5ldCBQcm90b2NvbCBWZXJzaW9uIDQsIFNyYzogMC4wLjAuMCwgRHN0OiAyNTUuMjU1LjI1
NS4yNTUNCj4gPj4gVXNlciBEYXRhZ3JhbSBQcm90b2NvbCwgU3JjIFBvcnQ6IDY4LCBEc3QgUG9y
dDogNjcNCj4gPj4gQm9vdHN0cmFwIFByb3RvY29sIChEaXNjb3ZlcikNCj4gPj4NCj4gPj4gTm8u
wqDCoMKgwqAgVGltZcKgwqDCoMKgwqDCoMKgwqDCoMKgIFNvdXJjZcKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoCBEZXN0aW5hdGlvbiBQcm90b2NvbA0KPiBMZW5ndGgNCj4gPj4gSW5mbw0K
PiA+PiAgIMKgwqDCoMKgIDcxIDkzLjgyODgzNzAwOMKgwqAgMC4wLjAuMMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqAgMjU1LjI1NS4yNTUuMjU1IERIQ1ANCj4gPj4gMzQywqDCoMKgIERIQ1Ag
RGlzY292ZXIgLSBUcmFuc2FjdGlvbiBJRCAweDVkZjQ3Yzg0DQo+ID4+DQo+ID4+IEZyYW1lIDcx
OiAzNDIgYnl0ZXMgb24gd2lyZSAoMjczNiBiaXRzKSwgMzQyIGJ5dGVzIGNhcHR1cmVkICgyNzM2
IGJpdHMpDQo+ID4+IG9uIGludGVyZmFjZSAwDQo+ID4+IEV0aGVybmV0IElJLCBTcmM6IENvbW1v
ZG9yXzExOjExOjExICgwMDo4MDoxMDoxMToxMToxMSksIERzdDogQnJvYWRjYXN0DQo+ID4+IChm
ZjpmZjpmZjpmZjpmZjpmZikNCj4gPj4gSW50ZXJuZXQgUHJvdG9jb2wgVmVyc2lvbiA0LCBTcmM6
IDAuMC4wLjAsIERzdDogMjU1LjI1NS4yNTUuMjU1DQo+ID4+IFVzZXIgRGF0YWdyYW0gUHJvdG9j
b2wsIFNyYyBQb3J0OiA2OCwgRHN0IFBvcnQ6IDY3DQo+ID4+IEJvb3RzdHJhcCBQcm90b2NvbCAo
RGlzY292ZXIpDQo+ID4+DQo+ID4+IE5vLsKgwqDCoMKgIFRpbWXCoMKgwqDCoMKgwqDCoMKgwqDC
oCBTb3VyY2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRGVzdGluYXRpb24gUHJvdG9j
b2wNCj4gTGVuZ3RoDQo+ID4+IEluZm8NCj4gPj4gICDCoMKgwqDCoCA3NCA5Ny45NDg0NTMxNTjC
oMKgIDAuMC4wLjDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDI1NS4yNTUuMjU1LjI1NSBE
SENQDQo+ID4+IDM0MsKgwqDCoCBESENQIERpc2NvdmVyIC0gVHJhbnNhY3Rpb24gSUQgMHg1ZGY0
N2M4NA0KPiA+Pg0KPiA+PiBGcmFtZSA3NDogMzQyIGJ5dGVzIG9uIHdpcmUgKDI3MzYgYml0cyks
IDM0MiBieXRlcyBjYXB0dXJlZCAoMjczNiBiaXRzKQ0KPiA+PiBvbiBpbnRlcmZhY2UgMA0KPiA+
PiBFdGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEp
LCBEc3Q6IEJyb2FkY2FzdA0KPiA+PiAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ID4+IEludGVybmV0
IFByb3RvY29sIFZlcnNpb24gNCwgU3JjOiAwLjAuMC4wLCBEc3Q6IDI1NS4yNTUuMjU1LjI1NQ0K
PiA+PiBVc2VyIERhdGFncmFtIFByb3RvY29sLCBTcmMgUG9ydDogNjgsIERzdCBQb3J0OiA2Nw0K
PiA+PiBCb290c3RyYXAgUHJvdG9jb2wgKERpc2NvdmVyKQ0KPiA+PiAtLS0NCj4gPj4NCj4gPj4g
Tm93LCBvdmVyIG9uIHRoZSBleHRlcm5hbCBMaW51eCBtYWNoaW5lICgxOTIuMTY4LjEuMjEwKSwg
SSBzZXR1cCBhDQo+ID4+IFdpcmVzaGFyayBjYXB0dXJlDQo+ID4+IHdoaWNoIGZpbHRlcmVkIGZv
ciBhbnkgdHJhZmZpYyB0by9mcm9tIHRoZSBNQUMgYWRkcmVzcyBvZiB0aGUNCj4gWDUwMDAvMjAn
cw0KPiA+PiBldGgwLCBpbiB0aGlzIGNhc2UNCj4gPj4gc2hvd24gYXMgQ29tbW9kb3JfMTE6MTE6
MTEgKDAwOjgwOjEwOjExOjExOjExKSBiZWxvdzoNCj4gPj4NCj4gPj4gVGhpcyBleHBvcnQgc2hv
d3Mgb25seSB0aGUgREhDUCB0cmFmZmljIHNlZW4gZnJvbSBvdXRzaWRlIHRoZSBYNTAwMC8yMCwN
Cj4gPj4gYW5kIGFzIHlvdSBjYW4gc2VlLCBhIG1hdGNoaW5nIHNldCBvZiBESENQIHJlcXVlc3Rz
ICpkbyBpbiBmYWN0KiBtYWtlDQo+ID4+IGl0IHRvIHRoZSBvdXRzaWRlIG5ldHdvcmsuDQo+ID4+
DQo+ID4+IC0tLQ0KPiA+PiBOby7CoMKgwqDCoCBUaW1lwqDCoMKgwqDCoMKgwqDCoMKgwqAgU291
cmNlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERlc3RpbmF0aW9uIFByb3RvY29sDQo+
IExlbmd0aA0KPiA+PiBJbmZvDQo+ID4+ICAgwqDCoMKgwqAgMzkgNS42NzE3NjI1MDnCoMKgwqAg
MC4wLjAuMMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjU1LjI1NS4yNTUuMjU1IERIQ1AN
Cj4gPj4gMzQywqDCoMKgIERIQ1AgRGlzY292ZXIgLSBUcmFuc2FjdGlvbiBJRCAweDY1NWQ5MWU4
DQo+ID4+DQo+ID4+IEZyYW1lIDM5OiAzNDIgYnl0ZXMgb24gd2lyZSAoMjczNiBiaXRzKSwgMzQy
IGJ5dGVzIGNhcHR1cmVkICgyNzM2IGJpdHMpDQo+ID4+IG9uIGludGVyZmFjZSAwDQo+ID4+IEV0
aGVybmV0IElJLCBTcmM6IENvbW1vZG9yXzExOjExOjExICgwMDo4MDoxMDoxMToxMToxMSksIERz
dDogQnJvYWRjYXN0DQo+ID4+IChmZjpmZjpmZjpmZjpmZjpmZikNCj4gPj4gICDCoMKgwqAgRGVz
dGluYXRpb246IEJyb2FkY2FzdCAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ID4+ICAgwqDCoMKgIFNv
dXJjZTogQ29tbW9kb3JfMTE6MTE6MTEgKDAwOjgwOjEwOjExOjExOjExKQ0KPiA+PiAgIMKgwqDC
oCBUeXBlOiBJUHY0ICgweDA4MDApDQo+ID4+IEludGVybmV0IFByb3RvY29sIFZlcnNpb24gNCwg
U3JjOiAwLjAuMC4wLCBEc3Q6IDI1NS4yNTUuMjU1LjI1NQ0KPiA+PiBVc2VyIERhdGFncmFtIFBy
b3RvY29sLCBTcmMgUG9ydDogNjgsIERzdCBQb3J0OiA2Nw0KPiA+PiBCb290c3RyYXAgUHJvdG9j
b2wgKERpc2NvdmVyKQ0KPiA+Pg0KPiA+PiBOby7CoMKgwqDCoCBUaW1lwqDCoMKgwqDCoMKgwqDC
oMKgwqAgU291cmNlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERlc3RpbmF0aW9uIFBy
b3RvY29sDQo+IExlbmd0aA0KPiA+PiBJbmZvDQo+ID4+ICAgwqDCoMKgwqAgNzMgOS40NTE4OTU0
MDTCoMKgwqAgMC4wLjAuMMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjU1LjI1NS4yNTUu
MjU1IERIQ1ANCj4gPj4gMzQywqDCoMKgIERIQ1AgRGlzY292ZXIgLSBUcmFuc2FjdGlvbiBJRCAw
eDY1NWQ5MWU4DQo+ID4+DQo+ID4+IEZyYW1lIDczOiAzNDIgYnl0ZXMgb24gd2lyZSAoMjczNiBi
aXRzKSwgMzQyIGJ5dGVzIGNhcHR1cmVkICgyNzM2IGJpdHMpDQo+ID4+IG9uIGludGVyZmFjZSAw
DQo+ID4+IEV0aGVybmV0IElJLCBTcmM6IENvbW1vZG9yXzExOjExOjExICgwMDo4MDoxMDoxMTox
MToxMSksIERzdDogQnJvYWRjYXN0DQo+ID4+IChmZjpmZjpmZjpmZjpmZjpmZikNCj4gPj4gICDC
oMKgwqAgRGVzdGluYXRpb246IEJyb2FkY2FzdCAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ID4+ICAg
wqDCoMKgIFNvdXJjZTogQ29tbW9kb3JfMTE6MTE6MTEgKDAwOjgwOjEwOjExOjExOjExKQ0KPiA+
PiAgIMKgwqDCoCBUeXBlOiBJUHY0ICgweDA4MDApDQo+ID4+IEludGVybmV0IFByb3RvY29sIFZl
cnNpb24gNCwgU3JjOiAwLjAuMC4wLCBEc3Q6IDI1NS4yNTUuMjU1LjI1NQ0KPiA+PiBVc2VyIERh
dGFncmFtIFByb3RvY29sLCBTcmMgUG9ydDogNjgsIERzdCBQb3J0OiA2Nw0KPiA+PiBCb290c3Ry
YXAgUHJvdG9jb2wgKERpc2NvdmVyKQ0KPiA+Pg0KPiA+PiBOby7CoMKgwqDCoCBUaW1lwqDCoMKg
wqDCoMKgwqDCoMKgwqAgU291cmNlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERlc3Rp
bmF0aW9uIFByb3RvY29sDQo+IExlbmd0aA0KPiA+PiBJbmZvDQo+ID4+ICAgwqDCoMKgIDE1NCAx
NC45MTk5NDQ0ODDCoMKgIDAuMC4wLjDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDI1NS4y
NTUuMjU1LjI1NSBESENQDQo+ID4+IDM0MsKgwqDCoCBESENQIERpc2NvdmVyIC0gVHJhbnNhY3Rp
b24gSUQgMHg2NTVkOTFlOA0KPiA+Pg0KPiA+PiBGcmFtZSAxNTQ6IDM0MiBieXRlcyBvbiB3aXJl
ICgyNzM2IGJpdHMpLCAzNDIgYnl0ZXMgY2FwdHVyZWQgKDI3MzYNCj4gYml0cykNCj4gPj4gb24g
aW50ZXJmYWNlIDANCj4gPj4gRXRoZXJuZXQgSUksIFNyYzogQ29tbW9kb3JfMTE6MTE6MTEgKDAw
OjgwOjEwOjExOjExOjExKSwgRHN0OiBCcm9hZGNhc3QNCj4gPj4gKGZmOmZmOmZmOmZmOmZmOmZm
KQ0KPiA+PiAgIMKgwqDCoCBEZXN0aW5hdGlvbjogQnJvYWRjYXN0IChmZjpmZjpmZjpmZjpmZjpm
ZikNCj4gPj4gICDCoMKgwqAgU291cmNlOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6
MTE6MTEpDQo+ID4+ICAgwqDCoMKgIFR5cGU6IElQdjQgKDB4MDgwMCkNCj4gPj4gSW50ZXJuZXQg
UHJvdG9jb2wgVmVyc2lvbiA0LCBTcmM6IDAuMC4wLjAsIERzdDogMjU1LjI1NS4yNTUuMjU1DQo+
ID4+IFVzZXIgRGF0YWdyYW0gUHJvdG9jb2wsIFNyYyBQb3J0OiA2OCwgRHN0IFBvcnQ6IDY3DQo+
ID4+IEJvb3RzdHJhcCBQcm90b2NvbCAoRGlzY292ZXIpDQo+ID4+DQo+ID4+IE5vLsKgwqDCoMKg
IFRpbWXCoMKgwqDCoMKgwqDCoMKgwqDCoCBTb3VyY2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqAgRGVzdGluYXRpb24gUHJvdG9jb2wNCj4gTGVuZ3RoDQo+ID4+IEluZm8NCj4gPj4gICDC
oMKgwqAgMjY5IDI0LjQ5ODMzNTk5NsKgwqAgMC4wLjAuMMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqAgMjU1LjI1NS4yNTUuMjU1IERIQ1ANCj4gPj4gMzQywqDCoMKgIERIQ1AgRGlzY292ZXIg
LSBUcmFuc2FjdGlvbiBJRCAweDY1NWQ5MWU4DQo+ID4+DQo+ID4+IEZyYW1lIDI2OTogMzQyIGJ5
dGVzIG9uIHdpcmUgKDI3MzYgYml0cyksIDM0MiBieXRlcyBjYXB0dXJlZCAoMjczNg0KPiBiaXRz
KQ0KPiA+PiBvbiBpbnRlcmZhY2UgMA0KPiA+PiBFdGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8x
MToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpLCBEc3Q6IEJyb2FkY2FzdA0KPiA+PiAoZmY6ZmY6
ZmY6ZmY6ZmY6ZmYpDQo+ID4+ICAgwqDCoMKgIERlc3RpbmF0aW9uOiBCcm9hZGNhc3QgKGZmOmZm
OmZmOmZmOmZmOmZmKQ0KPiA+PiAgIMKgwqDCoCBTb3VyY2U6IENvbW1vZG9yXzExOjExOjExICgw
MDo4MDoxMDoxMToxMToxMSkNCj4gPj4gICDCoMKgwqAgVHlwZTogSVB2NCAoMHgwODAwKQ0KPiA+
PiBJbnRlcm5ldCBQcm90b2NvbCBWZXJzaW9uIDQsIFNyYzogMC4wLjAuMCwgRHN0OiAyNTUuMjU1
LjI1NS4yNTUNCj4gPj4gVXNlciBEYXRhZ3JhbSBQcm90b2NvbCwgU3JjIFBvcnQ6IDY4LCBEc3Qg
UG9ydDogNjcNCj4gPj4gQm9vdHN0cmFwIFByb3RvY29sIChEaXNjb3ZlcikNCj4gPj4NCj4gPj4g
Tm8uwqDCoMKgwqAgVGltZcKgwqDCoMKgwqDCoMKgwqDCoMKgIFNvdXJjZcKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoCBEZXN0aW5hdGlvbiBQcm90b2NvbA0KPiBMZW5ndGgNCj4gPj4gSW5m
bw0KPiA+PiAgIMKgwqDCoCA2MzAgNDEuOTQ4MDE4NjQ4wqDCoCAwLjAuMC4wwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoCAyNTUuMjU1LjI1NS4yNTUgREhDUA0KPiA+PiAzNDLCoMKgwqAgREhD
UCBEaXNjb3ZlciAtIFRyYW5zYWN0aW9uIElEIDB4NjU1ZDkxZTgNCj4gPj4NCj4gPj4gRnJhbWUg
NjMwOiAzNDIgYnl0ZXMgb24gd2lyZSAoMjczNiBiaXRzKSwgMzQyIGJ5dGVzIGNhcHR1cmVkICgy
NzM2DQo+IGJpdHMpDQo+ID4+IG9uIGludGVyZmFjZSAwDQo+ID4+IEV0aGVybmV0IElJLCBTcmM6
IENvbW1vZG9yXzExOjExOjExICgwMDo4MDoxMDoxMToxMToxMSksIERzdDogQnJvYWRjYXN0DQo+
ID4+IChmZjpmZjpmZjpmZjpmZjpmZikNCj4gPj4gICDCoMKgwqAgRGVzdGluYXRpb246IEJyb2Fk
Y2FzdCAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ID4+ICAgwqDCoMKgIFNvdXJjZTogQ29tbW9kb3Jf
MTE6MTE6MTEgKDAwOjgwOjEwOjExOjExOjExKQ0KPiA+PiAgIMKgwqDCoCBUeXBlOiBJUHY0ICgw
eDA4MDApDQo+ID4+IEludGVybmV0IFByb3RvY29sIFZlcnNpb24gNCwgU3JjOiAwLjAuMC4wLCBE
c3Q6IDI1NS4yNTUuMjU1LjI1NQ0KPiA+PiBVc2VyIERhdGFncmFtIFByb3RvY29sLCBTcmMgUG9y
dDogNjgsIERzdCBQb3J0OiA2Nw0KPiA+PiBCb290c3RyYXAgUHJvdG9jb2wgKERpc2NvdmVyKQ0K
PiA+Pg0KPiA+PiBOby7CoMKgwqDCoCBUaW1lwqDCoMKgwqDCoMKgwqDCoMKgwqAgU291cmNlwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERlc3RpbmF0aW9uIFByb3RvY29sDQo+IExlbmd0
aA0KPiA+PiBJbmZvDQo+ID4+ICAgwqDCoMKgIDcwMSA0OS41OTAyMTEyNjTCoMKgIDAuMC4wLjDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDI1NS4yNTUuMjU1LjI1NSBESENQDQo+ID4+IDM0
MsKgwqDCoCBESENQIERpc2NvdmVyIC0gVHJhbnNhY3Rpb24gSUQgMHg2NTVkOTFlOA0KPiA+Pg0K
PiA+PiBGcmFtZSA3MDE6IDM0MiBieXRlcyBvbiB3aXJlICgyNzM2IGJpdHMpLCAzNDIgYnl0ZXMg
Y2FwdHVyZWQgKDI3MzYNCj4gYml0cykNCj4gPj4gb24gaW50ZXJmYWNlIDANCj4gPj4gRXRoZXJu
ZXQgSUksIFNyYzogQ29tbW9kb3JfMTE6MTE6MTEgKDAwOjgwOjEwOjExOjExOjExKSwgRHN0OiBC
cm9hZGNhc3QNCj4gPj4gKGZmOmZmOmZmOmZmOmZmOmZmKQ0KPiA+PiAgIMKgwqDCoCBEZXN0aW5h
dGlvbjogQnJvYWRjYXN0IChmZjpmZjpmZjpmZjpmZjpmZikNCj4gPj4gICDCoMKgwqAgU291cmNl
OiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpDQo+ID4+ICAgwqDCoMKgIFR5
cGU6IElQdjQgKDB4MDgwMCkNCj4gPj4gSW50ZXJuZXQgUHJvdG9jb2wgVmVyc2lvbiA0LCBTcmM6
IDAuMC4wLjAsIERzdDogMjU1LjI1NS4yNTUuMjU1DQo+ID4+IFVzZXIgRGF0YWdyYW0gUHJvdG9j
b2wsIFNyYyBQb3J0OiA2OCwgRHN0IFBvcnQ6IDY3DQo+ID4+IEJvb3RzdHJhcCBQcm90b2NvbCAo
RGlzY292ZXIpDQo+ID4+DQo+ID4+IE5vLsKgwqDCoMKgIFRpbWXCoMKgwqDCoMKgwqDCoMKgwqDC
oCBTb3VyY2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRGVzdGluYXRpb24gUHJvdG9j
b2wNCj4gTGVuZ3RoDQo+ID4+IEluZm8NCj4gPj4gICDCoMKgwqAgNzA2IDUwLjQyOTI2NTkzOMKg
wqAgMC4wLjAuMMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjU1LjI1NS4yNTUuMjU1IERI
Q1ANCj4gPj4gMzQywqDCoMKgIERIQ1AgRGlzY292ZXIgLSBUcmFuc2FjdGlvbiBJRCAweDQyMWJh
ZGUzDQo+ID4+DQo+ID4+IEZyYW1lIDcwNjogMzQyIGJ5dGVzIG9uIHdpcmUgKDI3MzYgYml0cyks
IDM0MiBieXRlcyBjYXB0dXJlZCAoMjczNg0KPiBiaXRzKQ0KPiA+PiBvbiBpbnRlcmZhY2UgMA0K
PiA+PiBFdGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6
MTEpLCBEc3Q6IEJyb2FkY2FzdA0KPiA+PiAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ID4+ICAgwqDC
oMKgIERlc3RpbmF0aW9uOiBCcm9hZGNhc3QgKGZmOmZmOmZmOmZmOmZmOmZmKQ0KPiA+PiAgIMKg
wqDCoCBTb3VyY2U6IENvbW1vZG9yXzExOjExOjExICgwMDo4MDoxMDoxMToxMToxMSkNCj4gPj4g
ICDCoMKgwqAgVHlwZTogSVB2NCAoMHgwODAwKQ0KPiA+PiBJbnRlcm5ldCBQcm90b2NvbCBWZXJz
aW9uIDQsIFNyYzogMC4wLjAuMCwgRHN0OiAyNTUuMjU1LjI1NS4yNTUNCj4gPj4gVXNlciBEYXRh
Z3JhbSBQcm90b2NvbCwgU3JjIFBvcnQ6IDY4LCBEc3QgUG9ydDogNjcNCj4gPj4gQm9vdHN0cmFw
IFByb3RvY29sIChEaXNjb3ZlcikNCj4gPj4NCj4gPj4gTm8uwqDCoMKgwqAgVGltZcKgwqDCoMKg
wqDCoMKgwqDCoMKgIFNvdXJjZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEZXN0aW5h
dGlvbiBQcm90b2NvbA0KPiBMZW5ndGgNCj4gPj4gSW5mbw0KPiA+PiAgIMKgwqDCoCA3NDQgNTMu
Nzg4MDM1MzE3wqDCoCAwLjAuMC4wwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyNTUuMjU1
LjI1NS4yNTUgREhDUA0KPiA+PiAzNDLCoMKgwqAgREhDUCBEaXNjb3ZlciAtIFRyYW5zYWN0aW9u
IElEIDB4NDIxYmFkZTMNCj4gPj4NCj4gPj4gRnJhbWUgNzQ0OiAzNDIgYnl0ZXMgb24gd2lyZSAo
MjczNiBiaXRzKSwgMzQyIGJ5dGVzIGNhcHR1cmVkICgyNzM2DQo+IGJpdHMpDQo+ID4+IG9uIGlu
dGVyZmFjZSAwDQo+ID4+IEV0aGVybmV0IElJLCBTcmM6IENvbW1vZG9yXzExOjExOjExICgwMDo4
MDoxMDoxMToxMToxMSksIERzdDogQnJvYWRjYXN0DQo+ID4+IChmZjpmZjpmZjpmZjpmZjpmZikN
Cj4gPj4gICDCoMKgwqAgRGVzdGluYXRpb246IEJyb2FkY2FzdCAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYp
DQo+ID4+ICAgwqDCoMKgIFNvdXJjZTogQ29tbW9kb3JfMTE6MTE6MTEgKDAwOjgwOjEwOjExOjEx
OjExKQ0KPiA+PiAgIMKgwqDCoCBUeXBlOiBJUHY0ICgweDA4MDApDQo+ID4+IEludGVybmV0IFBy
b3RvY29sIFZlcnNpb24gNCwgU3JjOiAwLjAuMC4wLCBEc3Q6IDI1NS4yNTUuMjU1LjI1NQ0KPiA+
PiBVc2VyIERhdGFncmFtIFByb3RvY29sLCBTcmMgUG9ydDogNjgsIERzdCBQb3J0OiA2Nw0KPiA+
PiBCb290c3RyYXAgUHJvdG9jb2wgKERpc2NvdmVyKQ0KPiA+Pg0KPiA+PiBOby7CoMKgwqDCoCBU
aW1lwqDCoMKgwqDCoMKgwqDCoMKgwqAgU291cmNlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgIERlc3RpbmF0aW9uIFByb3RvY29sDQo+IExlbmd0aA0KPiA+PiBJbmZvDQo+ID4+ICAgwqDC
oMKgIDc5NyA1OS44MjA1Njg2MTTCoMKgIDAuMC4wLjDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgIDI1NS4yNTUuMjU1LjI1NSBESENQDQo+ID4+IDM0MsKgwqDCoCBESENQIERpc2NvdmVyIC0g
VHJhbnNhY3Rpb24gSUQgMHg0MjFiYWRlMw0KPiA+Pg0KPiA+PiBGcmFtZSA3OTc6IDM0MiBieXRl
cyBvbiB3aXJlICgyNzM2IGJpdHMpLCAzNDIgYnl0ZXMgY2FwdHVyZWQgKDI3MzYNCj4gYml0cykN
Cj4gPj4gb24gaW50ZXJmYWNlIDANCj4gPj4gRXRoZXJuZXQgSUksIFNyYzogQ29tbW9kb3JfMTE6
MTE6MTEgKDAwOjgwOjEwOjExOjExOjExKSwgRHN0OiBCcm9hZGNhc3QNCj4gPj4gKGZmOmZmOmZm
OmZmOmZmOmZmKQ0KPiA+PiAgIMKgwqDCoCBEZXN0aW5hdGlvbjogQnJvYWRjYXN0IChmZjpmZjpm
ZjpmZjpmZjpmZikNCj4gPj4gICDCoMKgwqAgU291cmNlOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6
ODA6MTA6MTE6MTE6MTEpDQo+ID4+ICAgwqDCoMKgIFR5cGU6IElQdjQgKDB4MDgwMCkNCj4gPj4g
SW50ZXJuZXQgUHJvdG9jb2wgVmVyc2lvbiA0LCBTcmM6IDAuMC4wLjAsIERzdDogMjU1LjI1NS4y
NTUuMjU1DQo+ID4+IFVzZXIgRGF0YWdyYW0gUHJvdG9jb2wsIFNyYyBQb3J0OiA2OCwgRHN0IFBv
cnQ6IDY3DQo+ID4+IEJvb3RzdHJhcCBQcm90b2NvbCAoRGlzY292ZXIpDQo+ID4+DQo+ID4+IE5v
LsKgwqDCoMKgIFRpbWXCoMKgwqDCoMKgwqDCoMKgwqDCoCBTb3VyY2XCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqAgRGVzdGluYXRpb24gUHJvdG9jb2wNCj4gTGVuZ3RoDQo+ID4+IEluZm8N
Cj4gPj4gICDCoMKgwqAgODUyIDY4LjE3NjgzMzY4NsKgwqAgMC4wLjAuMMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqAgMjU1LjI1NS4yNTUuMjU1IERIQ1ANCj4gPj4gMzQywqDCoMKgIERIQ1Ag
RGlzY292ZXIgLSBUcmFuc2FjdGlvbiBJRCAweDQyMWJhZGUzDQo+ID4+DQo+ID4+IEZyYW1lIDg1
MjogMzQyIGJ5dGVzIG9uIHdpcmUgKDI3MzYgYml0cyksIDM0MiBieXRlcyBjYXB0dXJlZCAoMjcz
Ng0KPiBiaXRzKQ0KPiA+PiBvbiBpbnRlcmZhY2UgMA0KPiA+PiBFdGhlcm5ldCBJSSwgU3JjOiBD
b21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpLCBEc3Q6IEJyb2FkY2FzdA0KPiA+
PiAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ID4+ICAgwqDCoMKgIERlc3RpbmF0aW9uOiBCcm9hZGNh
c3QgKGZmOmZmOmZmOmZmOmZmOmZmKQ0KPiA+PiAgIMKgwqDCoCBTb3VyY2U6IENvbW1vZG9yXzEx
OjExOjExICgwMDo4MDoxMDoxMToxMToxMSkNCj4gPj4gICDCoMKgwqAgVHlwZTogSVB2NCAoMHgw
ODAwKQ0KPiA+PiBJbnRlcm5ldCBQcm90b2NvbCBWZXJzaW9uIDQsIFNyYzogMC4wLjAuMCwgRHN0
OiAyNTUuMjU1LjI1NS4yNTUNCj4gPj4gVXNlciBEYXRhZ3JhbSBQcm90b2NvbCwgU3JjIFBvcnQ6
IDY4LCBEc3QgUG9ydDogNjcNCj4gPj4gQm9vdHN0cmFwIFByb3RvY29sIChEaXNjb3ZlcikNCj4g
Pj4NCj4gPj4gTm8uwqDCoMKgwqAgVGltZcKgwqDCoMKgwqDCoMKgwqDCoMKgIFNvdXJjZcKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEZXN0aW5hdGlvbiBQcm90b2NvbA0KPiBMZW5ndGgN
Cj4gPj4gSW5mbw0KPiA+PiAgIMKgwqDCoCA5OTAgODIuOTYxMjI0ODk1wqDCoCAwLjAuMC4wwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyNTUuMjU1LjI1NS4yNTUgREhDUA0KPiA+PiAzNDLC
oMKgwqAgREhDUCBEaXNjb3ZlciAtIFRyYW5zYWN0aW9uIElEIDB4NDIxYmFkZTMNCj4gPj4NCj4g
Pj4gRnJhbWUgOTkwOiAzNDIgYnl0ZXMgb24gd2lyZSAoMjczNiBiaXRzKSwgMzQyIGJ5dGVzIGNh
cHR1cmVkICgyNzM2DQo+IGJpdHMpDQo+ID4+IG9uIGludGVyZmFjZSAwDQo+ID4+IEV0aGVybmV0
IElJLCBTcmM6IENvbW1vZG9yXzExOjExOjExICgwMDo4MDoxMDoxMToxMToxMSksIERzdDogQnJv
YWRjYXN0DQo+ID4+IChmZjpmZjpmZjpmZjpmZjpmZikNCj4gPj4gICDCoMKgwqAgRGVzdGluYXRp
b246IEJyb2FkY2FzdCAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ID4+ICAgwqDCoMKgIFNvdXJjZTog
Q29tbW9kb3JfMTE6MTE6MTEgKDAwOjgwOjEwOjExOjExOjExKQ0KPiA+PiAgIMKgwqDCoCBUeXBl
OiBJUHY0ICgweDA4MDApDQo+ID4+IEludGVybmV0IFByb3RvY29sIFZlcnNpb24gNCwgU3JjOiAw
LjAuMC4wLCBEc3Q6IDI1NS4yNTUuMjU1LjI1NQ0KPiA+PiBVc2VyIERhdGFncmFtIFByb3RvY29s
LCBTcmMgUG9ydDogNjgsIERzdCBQb3J0OiA2Nw0KPiA+PiBCb290c3RyYXAgUHJvdG9jb2wgKERp
c2NvdmVyKQ0KPiA+Pg0KPiA+PiBOby7CoMKgwqDCoCBUaW1lwqDCoMKgwqDCoMKgwqDCoMKgwqAg
U291cmNlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERlc3RpbmF0aW9uIFByb3RvY29s
DQo+IExlbmd0aA0KPiA+PiBJbmZvDQo+ID4+ICAgwqDCoCAzODI3IDk1LjM0NTk2NDQxOMKgwqAg
MC4wLjAuMMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjU1LjI1NS4yNTUuMjU1IERIQ1AN
Cj4gPj4gMzQywqDCoMKgIERIQ1AgRGlzY292ZXIgLSBUcmFuc2FjdGlvbiBJRCAweDVkZjQ3Yzg0
DQo+ID4+DQo+ID4+IEZyYW1lIDM4Mjc6IDM0MiBieXRlcyBvbiB3aXJlICgyNzM2IGJpdHMpLCAz
NDIgYnl0ZXMgY2FwdHVyZWQgKDI3MzYNCj4gPj4gYml0cykgb24gaW50ZXJmYWNlIDANCj4gPj4g
RXRoZXJuZXQgSUksIFNyYzogQ29tbW9kb3JfMTE6MTE6MTEgKDAwOjgwOjEwOjExOjExOjExKSwg
RHN0OiBCcm9hZGNhc3QNCj4gPj4gKGZmOmZmOmZmOmZmOmZmOmZmKQ0KPiA+PiAgIMKgwqDCoCBE
ZXN0aW5hdGlvbjogQnJvYWRjYXN0IChmZjpmZjpmZjpmZjpmZjpmZikNCj4gPj4gICDCoMKgwqAg
U291cmNlOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpDQo+ID4+ICAgwqDC
oMKgIFR5cGU6IElQdjQgKDB4MDgwMCkNCj4gPj4gSW50ZXJuZXQgUHJvdG9jb2wgVmVyc2lvbiA0
LCBTcmM6IDAuMC4wLjAsIERzdDogMjU1LjI1NS4yNTUuMjU1DQo+ID4+IFVzZXIgRGF0YWdyYW0g
UHJvdG9jb2wsIFNyYyBQb3J0OiA2OCwgRHN0IFBvcnQ6IDY3DQo+ID4+IEJvb3RzdHJhcCBQcm90
b2NvbCAoRGlzY292ZXIpDQo+ID4+DQo+ID4+IE5vLsKgwqDCoMKgIFRpbWXCoMKgwqDCoMKgwqDC
oMKgwqDCoCBTb3VyY2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRGVzdGluYXRpb24g
UHJvdG9jb2wNCj4gTGVuZ3RoDQo+ID4+IEluZm8NCj4gPj4gICDCoMKgIDM4ODcgOTkuMjcxNjY4
NTcywqDCoCAwLjAuMC4wwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyNTUuMjU1LjI1NS4y
NTUgREhDUA0KPiA+PiAzNDLCoMKgwqAgREhDUCBEaXNjb3ZlciAtIFRyYW5zYWN0aW9uIElEIDB4
NWRmNDdjODQNCj4gPj4NCj4gPj4gRnJhbWUgMzg4NzogMzQyIGJ5dGVzIG9uIHdpcmUgKDI3MzYg
Yml0cyksIDM0MiBieXRlcyBjYXB0dXJlZCAoMjczNg0KPiA+PiBiaXRzKSBvbiBpbnRlcmZhY2Ug
MA0KPiA+PiBFdGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6
MTE6MTEpLCBEc3Q6IEJyb2FkY2FzdA0KPiA+PiAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ID4+ICAg
wqDCoMKgIERlc3RpbmF0aW9uOiBCcm9hZGNhc3QgKGZmOmZmOmZmOmZmOmZmOmZmKQ0KPiA+PiAg
IMKgwqDCoCBTb3VyY2U6IENvbW1vZG9yXzExOjExOjExICgwMDo4MDoxMDoxMToxMToxMSkNCj4g
Pj4gICDCoMKgwqAgVHlwZTogSVB2NCAoMHgwODAwKQ0KPiA+PiBJbnRlcm5ldCBQcm90b2NvbCBW
ZXJzaW9uIDQsIFNyYzogMC4wLjAuMCwgRHN0OiAyNTUuMjU1LjI1NS4yNTUNCj4gPj4gVXNlciBE
YXRhZ3JhbSBQcm90b2NvbCwgU3JjIFBvcnQ6IDY4LCBEc3QgUG9ydDogNjcNCj4gPj4gQm9vdHN0
cmFwIFByb3RvY29sIChEaXNjb3ZlcikNCj4gPj4NCj4gPj4gTm8uwqDCoMKgwqAgVGltZcKgwqDC
oMKgwqDCoMKgwqDCoMKgIFNvdXJjZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEZXN0
aW5hdGlvbiBQcm90b2NvbA0KPiBMZW5ndGgNCj4gPj4gSW5mbw0KPiA+PiAgIMKgwqAgMzk0MyAx
MDMuMzgzMDcyNDI5wqAgMC4wLjAuMMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjU1LjI1
NS4yNTUuMjU1IERIQ1ANCj4gPj4gMzQywqDCoMKgIERIQ1AgRGlzY292ZXIgLSBUcmFuc2FjdGlv
biBJRCAweDVkZjQ3Yzg0DQo+ID4+DQo+ID4+IEZyYW1lIDM5NDM6IDM0MiBieXRlcyBvbiB3aXJl
ICgyNzM2IGJpdHMpLCAzNDIgYnl0ZXMgY2FwdHVyZWQgKDI3MzYNCj4gPj4gYml0cykgb24gaW50
ZXJmYWNlIDANCj4gPj4gRXRoZXJuZXQgSUksIFNyYzogQ29tbW9kb3JfMTE6MTE6MTEgKDAwOjgw
OjEwOjExOjExOjExKSwgRHN0OiBCcm9hZGNhc3QNCj4gPj4gKGZmOmZmOmZmOmZmOmZmOmZmKQ0K
PiA+PiAgIMKgwqDCoCBEZXN0aW5hdGlvbjogQnJvYWRjYXN0IChmZjpmZjpmZjpmZjpmZjpmZikN
Cj4gPj4gICDCoMKgwqAgU291cmNlOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6
MTEpDQo+ID4+ICAgwqDCoMKgIFR5cGU6IElQdjQgKDB4MDgwMCkNCj4gPj4gSW50ZXJuZXQgUHJv
dG9jb2wgVmVyc2lvbiA0LCBTcmM6IDAuMC4wLjAsIERzdDogMjU1LjI1NS4yNTUuMjU1DQo+ID4+
IFVzZXIgRGF0YWdyYW0gUHJvdG9jb2wsIFNyYyBQb3J0OiA2OCwgRHN0IFBvcnQ6IDY3DQo+ID4+
IEJvb3RzdHJhcCBQcm90b2NvbCAoRGlzY292ZXIpDQo+ID4+IC0tLQ0KPiA+Pg0KPiA+PiBUaGUg
b2RkIHRoaW5nIGhlcmUgaXMgdGhhdCB3aGlsZSB0aGUgREhDUCByZXF1ZXN0cyB3ZXJlIGJyb2Fk
Y2FzdCB0bw0KPiB0aGUNCj4gPj4gb3V0c2lkZSBuZXR3b3JrIChjb25maXJtaW5nIHRoYXQgYXQg
bGVhc3QgdGhlIHRyYW5zbWl0IHRvIHRoZSBQSFkgaXMNCj4gPj4gd29ya2luZyksDQo+ID4+IEkg
Y291bGQgc2VlIG5vIHJlc3BvbnNlcyBmcm9tIG15IG5ldHdvcmsncyBESENQIHNlcnZlciB0byBh
bnN3ZXIgdGhlc2UNCj4gPj4gcmVxdWVzdHMuDQo+ID4+DQo+ID4+IEl0IGlzIG5vdCBhIHBoeXNp
Y2FsIG5ldHdvcmtpbmcgb3Igcm91dGluZyBpc3N1ZSwgYXMgSSBhbHdheXMgZ2V0IGENCj4gPj4g
c3VjY2Vzc2Z1bA0KPiA+PiBESENQIHJlc3BvbnNlIHRvIHRoZSBYNTAwMC8yMCB3aGVuIEkgZW5h
YmxlIHRoZSBSZWFsdGVrIDgxNjkgaW50ZXJmYWNlDQo+ID4+IChhbHNvDQo+ID4+IGluc3RhbGxl
ZCBbUENJZSBjYXJkXSBpbiB0aGUgWDUwMDAvMjApLg0KPiA+Pg0KPiA+PiBTaW5jZSBpbml0aWFs
IG91dGdvaW5nIHRyYWZmaWMgKmFwcGVhcnMqIHRvIGJlIHdvcmtpbmcgZnJvbSB0aGUgRFBBQQ0K
PiA+PiBFdGhlcm5ldA0KPiA+PiBvbiB0aGUgWDUwMDAvMjAsIGlzIGl0IHBvc3NpYmxlIHdlIGFy
ZSBtaXNzaW5nIGFuIGludGVycnVwdCBtYXBwaW5nDQo+IGZyb20NCj4gPj4gdGhlDQo+ID4+IEZy
YW1lIE1hbmFnZXIgdG8gY2F0Y2ggdGhlIHJlY2VpdmVkIGRhdGE/DQo+ID4+DQo+ID4+IEFueSBo
ZWxwIHdvdWxkIGJlIGFwcHJlY2lhdGVkLiBUaGFua3MuDQo+ID4+DQo+ID4+IC0tDQo+ID4+IEJl
c3QgUmVnYXJkcywNCj4gPj4NCj4gPj4gSmFtaWUgS3J1ZWdlcg0KPiA+PiBCSVRieUJJVCBTb2Z0
d2FyZSBHcm91cCBMTEMNCg0K

Re: DPAA Ethernet problems with mainstream Linux kernels

From: Darren Stevens <hidden>
Date: 2018-01-15 22:45:34

Hello Madalin-cristian

On 15/01/2018, Madalin-cristian Bucur wrote:
quoted
quoted
The device tree that you mention, cyrus_p5020.eth.dts is not found in
the Linux kernel sources. The cyrus_p5020.dts file from the fsl ppc
device tree folder does not include the PHY information for the DPAA
interfaces. The problems that you experience may be caused by some
issues with the PHY configuration (i.e. internal delay).
The cyrus_p5020.eth.dts is a modified version of the cyrus_p5020.dts,
which of course was based off the original p5020ds.dts file. As you
noted, the current cyrus_p5020.dts file is incomplete, and does not
map the Ethernet connections properly.
This is because the current linux kernel version of cyrus_p5020.dts includ=
es 'p5020si-pre.dtsi' and 'p5020si-post.dtsi' include files, which orginal=
ly gave us working ethernet (when we used the SDK kernel) However at some =
point you moved the ethernet aliases from the board dts file to the p5020s=
i-pre.dtsi file breaking the linkages for our board.

cyrus-pre.dtsi is simply p5020si-pre.dtsi with only the correct aliases in=
.
quoted
** I have attached both the cyrus_p5020.eth.dts and cyrus-pre.dtsi
 =A0=A0=A0=A0 files with this email for comparison. Please let me know =
if you see
quoted
 =A0=A0=A0=A0 any corrections that should be made to either file.
At a first glance they look fine to me.
That's good to know.
quoted
I have started testing along that line, using Wireshark to view the
traffic on the X5000/20 itself, and from another machine connected
on the same subnet. So far (as indicated by some details of in my
initial email), I can see outgoing broadcast requests (for DHCP)
being sent out from the X5000/20, and these requests are correctly
constructed and visible outside the X5000/20.
=
quoted
However, no responses to the DHCP broadcasts appear to reach
to X5000/20's DPAA Ethernet. I will need to setup some further
tests to determine if the DHCP server saw the requests and responded
to them. (I assume the DHCP server is getting them, and responding,
as I can always get a successful DHCP response to the X5000/20
when using an add-on Ethernet PICe card on the same subnet).
This matches what I see, the interface I have connected to the network sho=
ws an increasing number of transmitted packets, but no received ones.

Jamie also noticed the following error in dmesg (right after the ethernet =
port becomes active)

[    4.112165] fsl_dpa dpaa-ethernet.0 eth0: Probed interface eth0
[    4.116616] fsl_dpa dpaa-ethernet.1 eth1: Probed interface eth1
[ ... ]
[  106.501055] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
[  106.570944] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
[  106.605044] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[  106.674918] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[  108.702771] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[  109.032798] fsl-pamu: pamu_av_isr: access violation interrupt
[  109.032806] fsl-pamu: pamu_av_isr: POES1=3D00000000
[  109.032808] fsl-pamu: pamu_av_isr: POES2=3D00000000
[  109.032809] fsl-pamu: pamu_av_isr: AVS1=3D002d0081
[  109.032811] fsl-pamu: pamu_av_isr: AVS2=3D00000081
[  109.032813] fsl-pamu: pamu_av_isr: AVA=3D00000001f1328000
[  109.032815] fsl-pamu: pamu_av_isr: UDAD=3D002d0001
[  109.032817] fsl-pamu: pamu_av_isr: POEA=3D0000000000000000

I haven't seen this anywhere else, and wondered if it is relevant.

Regards
Darren

RE: DPAA Ethernet problems with mainstream Linux kernels

From: Madalin-cristian Bucur <madalin.bucur@nxp.com>
Date: 2018-01-16 17:33:08

-----Original Message-----
From: Darren Stevens [mailto:darren@stevens-zone.net]
Sent: Tuesday, January 16, 2018 12:40 AM
To: Madalin-cristian Bucur <madalin.bucur@nxp.com>
Cc: Jamie Krueger <redacted>; linuxppc-
dev@lists.ozlabs.org; netdev@vger.kernel.org
Subject: Re: DPAA Ethernet problems with mainstream Linux kernels
=20
Hello Madalin-cristian
=20
On 15/01/2018, Madalin-cristian Bucur wrote:
quoted
quoted
quoted
The device tree that you mention, cyrus_p5020.eth.dts is not found i=
n
quoted
quoted
quoted
the Linux kernel sources. The cyrus_p5020.dts file from the fsl ppc
device tree folder does not include the PHY information for the DPAA
interfaces. The problems that you experience may be caused by some
issues with the PHY configuration (i.e. internal delay).
The cyrus_p5020.eth.dts is a modified version of the cyrus_p5020.dts,
which of course was based off the original p5020ds.dts file. As you
noted, the current cyrus_p5020.dts file is incomplete, and does not
map the Ethernet connections properly.
=20
This is because the current linux kernel version of cyrus_p5020.dts
includes 'p5020si-pre.dtsi' and 'p5020si-post.dtsi' include files, which
orginally gave us working ethernet (when we used the SDK kernel) However
at some point you moved the ethernet aliases from the board dts file to
the p5020si-pre.dtsi file breaking the linkages for our board.
=20
cyrus-pre.dtsi is simply p5020si-pre.dtsi with only the correct aliases
in.
=20
quoted
quoted
** I have attached both the cyrus_p5020.eth.dts and cyrus-pre.dtsi
 =A0=A0=A0=A0 files with this email for comparison. Please let me know=
 if you
see
quoted
quoted
 =A0=A0=A0=A0 any corrections that should be made to either file.
At a first glance they look fine to me.
=20
That's good to know.
=20
quoted
quoted
I have started testing along that line, using Wireshark to view the
traffic on the X5000/20 itself, and from another machine connected
on the same subnet. So far (as indicated by some details of in my
initial email), I can see outgoing broadcast requests (for DHCP)
being sent out from the X5000/20, and these requests are correctly
constructed and visible outside the X5000/20.

However, no responses to the DHCP broadcasts appear to reach
to X5000/20's DPAA Ethernet. I will need to setup some further
tests to determine if the DHCP server saw the requests and responded
to them. (I assume the DHCP server is getting them, and responding,
as I can always get a successful DHCP response to the X5000/20
when using an add-on Ethernet PICe card on the same subnet).
=20
This matches what I see, the interface I have connected to the network
shows an increasing number of transmitted packets, but no received ones.
=20
Jamie also noticed the following error in dmesg (right after the ethernet
port becomes active)
=20
[    4.112165] fsl_dpa dpaa-ethernet.0 eth0: Probed interface eth0
[    4.116616] fsl_dpa dpaa-ethernet.1 eth1: Probed interface eth1
[ ... ]
[  106.501055] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
[  106.570944] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
[  106.605044] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[  106.674918] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[  108.702771] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[  109.032798] fsl-pamu: pamu_av_isr: access violation interrupt
[  109.032806] fsl-pamu: pamu_av_isr: POES1=3D00000000
[  109.032808] fsl-pamu: pamu_av_isr: POES2=3D00000000
[  109.032809] fsl-pamu: pamu_av_isr: AVS1=3D002d0081
[  109.032811] fsl-pamu: pamu_av_isr: AVS2=3D00000081
[  109.032813] fsl-pamu: pamu_av_isr: AVA=3D00000001f1328000
[  109.032815] fsl-pamu: pamu_av_isr: UDAD=3D002d0001
[  109.032817] fsl-pamu: pamu_av_isr: POEA=3D0000000000000000
=20
I haven't seen this anywhere else, and wondered if it is relevant.
=20
Regards
Darren
The PAMU related errors may be relevant to the issue, if you have incorrect
settings you may have no traffic passing through. The PAMU configuration
should be made by the bootloader. Can you try to disable CONFIG_FSL_PAMU?

Madalin

Re: DPAA Ethernet problems with mainstream Linux kernels

From: Christian Zigotzky <hidden>
Date: 2018-01-16 20:43:03

Hi All,

I compiled the RC8 of kernel 4.15 for the X5000 without PAMU support today.

Download: http://www.xenosoft.de/uImage_without_pamu.tar.gz

Please test it on your AmigaOne X5000.

Thanks,
Christian


On 16 January 2018 at 6:33PM, Madalin-cristian Bucur wrote:
quoted
The PAMU related errors may be relevant to the issue, if you have incorrect
settings you may have no traffic passing through. The PAMU configuration
should be made by the bootloader. Can you try to disable CONFIG_FSL_PAMU?

Madalin

Re: DPAA Ethernet problems with mainstream Linux kernels

From: Jamie Krueger <hidden>
Date: 2018-01-18 02:00:13

Hi Madalin,

On 01/16/2018 11:33 AM, Madalin-cristian Bucur wrote:
quoted
-----Original Message-----
From: Darren Stevens [mailto:darren@stevens-zone.net]
Sent: Tuesday, January 16, 2018 12:40 AM
To: Madalin-cristian Bucur <madalin.bucur@nxp.com>
Cc: Jamie Krueger <redacted>; linuxppc-
dev@lists.ozlabs.org; netdev@vger.kernel.org
Subject: Re: DPAA Ethernet problems with mainstream Linux kernels

Hello Madalin-cristian

On 15/01/2018, Madalin-cristian Bucur wrote:
quoted
quoted
quoted
The device tree that you mention, cyrus_p5020.eth.dts is not found in
the Linux kernel sources. The cyrus_p5020.dts file from the fsl ppc
device tree folder does not include the PHY information for the DPAA
interfaces. The problems that you experience may be caused by some
issues with the PHY configuration (i.e. internal delay).
The cyrus_p5020.eth.dts is a modified version of the cyrus_p5020.dts,
which of course was based off the original p5020ds.dts file. As you
noted, the current cyrus_p5020.dts file is incomplete, and does not
map the Ethernet connections properly.
This is because the current linux kernel version of cyrus_p5020.dts
includes 'p5020si-pre.dtsi' and 'p5020si-post.dtsi' include files, which
orginally gave us working ethernet (when we used the SDK kernel) However
at some point you moved the ethernet aliases from the board dts file to
the p5020si-pre.dtsi file breaking the linkages for our board.

cyrus-pre.dtsi is simply p5020si-pre.dtsi with only the correct aliases
in.
quoted
quoted
** I have attached both the cyrus_p5020.eth.dts and cyrus-pre.dtsi
       files with this email for comparison. Please let me know if you
see
quoted
quoted
       any corrections that should be made to either file.
At a first glance they look fine to me.
That's good to know.
quoted
quoted
I have started testing along that line, using Wireshark to view the
traffic on the X5000/20 itself, and from another machine connected
on the same subnet. So far (as indicated by some details of in my
initial email), I can see outgoing broadcast requests (for DHCP)
being sent out from the X5000/20, and these requests are correctly
constructed and visible outside the X5000/20.

However, no responses to the DHCP broadcasts appear to reach
to X5000/20's DPAA Ethernet. I will need to setup some further
tests to determine if the DHCP server saw the requests and responded
to them. (I assume the DHCP server is getting them, and responding,
as I can always get a successful DHCP response to the X5000/20
when using an add-on Ethernet PICe card on the same subnet).
This matches what I see, the interface I have connected to the network
shows an increasing number of transmitted packets, but no received ones.

Jamie also noticed the following error in dmesg (right after the ethernet
port becomes active)

[    4.112165] fsl_dpa dpaa-ethernet.0 eth0: Probed interface eth0
[    4.116616] fsl_dpa dpaa-ethernet.1 eth1: Probed interface eth1
[ ... ]
[  106.501055] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
[  106.570944] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
[  106.605044] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[  106.674918] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[  108.702771] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[  109.032798] fsl-pamu: pamu_av_isr: access violation interrupt
[  109.032806] fsl-pamu: pamu_av_isr: POES1=00000000
[  109.032808] fsl-pamu: pamu_av_isr: POES2=00000000
[  109.032809] fsl-pamu: pamu_av_isr: AVS1=002d0081
[  109.032811] fsl-pamu: pamu_av_isr: AVS2=00000081
[  109.032813] fsl-pamu: pamu_av_isr: AVA=00000001f1328000
[  109.032815] fsl-pamu: pamu_av_isr: UDAD=002d0001
[  109.032817] fsl-pamu: pamu_av_isr: POEA=0000000000000000

I haven't seen this anywhere else, and wondered if it is relevant.

Regards
Darren
The PAMU related errors may be relevant to the issue, if you have incorrect
settings you may have no traffic passing through. The PAMU configuration
should be made by the bootloader. Can you try to disable CONFIG_FSL_PAMU?

Madalin
Here are some results from testing on the X5000/20 with 4.15.0-rc8
(w/CONFIG_FSL_PAMU disabled):

In my tests I can now get the interface to obtain an IP Address via DHCP,
at least *part* of the time that is.

Here is a link to a screenshot of a Wireshark capture which shows
a successful DHCP request/response for the X5000/20, followed by some
failed ping attempts.

(This traffic was captured on an external machine on the same subnet, 
and not from the X5000/20 itself)
http://bitbybitsoftwaregroup.com/share/X5000-DHCP-Answered-Wireshark.png

Additionally, here is a link to the export of the packet data shown in 
the above image:
http://bitbybitsoftwaregroup.com/share/Wireshark-X5000-DHCP-Success.html

As you can see by this example, even when the interface does obtain an 
IP address via
DHCP (about half the time), subsequent traffic still fails to receive 
responses.

In this example, I attempt to ping the gateway (192.168.1.1), and one or 
two other
local addresses, and nothing pings back (even when trying Skateman's 
suggestion
of expanding the buffers for the interface -

"A workaround to keep the nic alive a bit longer.... is the following 
command
ip link set eth0 qlen 10000"

For reference:

I have attached the Kernel config that the version I tested was built with.
Also, I have attached the dmesg output I am currently seeing.

-- 
Best Regards,

Jamie Krueger
BITbyBIT Software Group LLC

Re: DPAA Ethernet problems with mainstream Linux kernels

From: Christian Zigotzky <hidden>
Date: 2018-01-18 07:52:34

Hi Jamie,

Many thanks for your effort. If you need a new kernel for testing please let=
 me know.

Cheers,
Christian

Sent from my iPhone
On 18. Jan 2018, at 02:59, Jamie Krueger [off-list ref]=
 wrote:
=20
Hi Madalin,
=20
On 01/16/2018 11:33 AM, Madalin-cristian Bucur wrote:
=20
Here are some results from testing on the X5000/20 with 4.15.0-rc8
(w/CONFIG_FSL_PAMU disabled):
=20
In my tests I can now get the interface to obtain an IP Address via DHCP,
at least *part* of the time that is.
=20
Here is a link to a screenshot of a Wireshark capture which shows
a successful DHCP request/response for the X5000/20, followed by some
failed ping attempts.
=20
(This traffic was captured on an external machine on the same subnet, and n=
ot from the X5000/20 itself)
http://bitbybitsoftwaregroup.com/share/X5000-DHCP-Answered-Wireshark.png
=20
Additionally, here is a link to the export of the packet data shown in the=
 above image:
http://bitbybitsoftwaregroup.com/share/Wireshark-X5000-DHCP-Success.html
=20
As you can see by this example, even when the interface does obtain an IP a=
ddress via
DHCP (about half the time), subsequent traffic still fails to receive resp=
onses.
=20
In this example, I attempt to ping the gateway (192.168.1.1), and one or t=
wo other
local addresses, and nothing pings back (even when trying Skateman's sugge=
stion
of expanding the buffers for the interface -
=20
"A workaround to keep the nic alive a bit longer.... is the following comm=
and
ip link set eth0 qlen 10000"
=20
For reference:
=20
I have attached the Kernel config that the version I tested was built with=
.
Also, I have attached the dmesg output I am currently seeing.
=20
--=20
Best Regards,
=20
Jamie Krueger
BITbyBIT Software Group LLC
=20
<proc_config-4.15.0-rc8-NO_PAMU.txt>
<fsl_dmesg_output.txt>

PASEMI: PCI_SCAN_ALL_PCIE_DEVS

From: Christian Zigotzky <hidden>
Date: 2018-02-26 23:11:53

Hi All,

Could you please add Olof's patch?

---

arch/powerpc/platforms/pasemi/pci.c | 2 ++
  1 file changed, 2 insertions(+)
diff --git a/arch/powerpc/platforms/pasemi/pci.c 
b/arch/powerpc/platforms/pasemi/pci.c
index 5ff6108..ea54ed2 100644
--- a/arch/powerpc/platforms/pasemi/pci.c
+++ b/arch/powerpc/platforms/pasemi/pci.c
@@ -224,6 +224,8 @@ void __init pas_pci_init(void)
          return;
      }

+    pci_set_flags(PCI_SCAN_ALL_PCIE_DEVS);
+
      for (np = NULL; (np = of_get_next_child(root, np)) != NULL;)
          if (np->name && !strcmp(np->name, "pxp") && !pas_add_bridge(np))
              of_node_get(np);

---
Thanks,
Christian
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help