Re: Performance patch for NE Ethernet

Richard B. Johnson (root@analogic.com)
Thu, 13 Feb 1997 21:53:27 -0500 (EST)


This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
Send mail to mime@docserver.cac.washington.edu for more info.

---1295196120-1334113657-855888807=:286
Content-Type: TEXT/PLAIN; charset=US-ASCII

On Thu, 13 Feb 1997, Alan Cox wrote:

> Not all the clones work with outw. Been there, screwed up. We could I
> guess go for
>
> NE2000 clone
> Crap NE2000 clone
>
> in the config
>

Nice idea but I don't think it's necessary.

By reading the patch, it is not obvious what I did. I sure wish Paul
had run the patch on a spare copy of ne.c rather than treating me
as a child (I wish I WAS still a kid tho...).

I have found, working with these things for a very long time, that what
some have been thinking has happend when the SNIC locks up the bus is
not back-to-back I/O instructions. It's instructions that change the
internals of the bus interface state machine. I am attaching a bit of
assembly-code that has been in use for 4 or more years for 18 megabytes
per second data transfer using two RF Links in ping-pong mode, using
two of these SNICS as modulator/demodulators. TWO in parallel flinging
data out a common FIFO to get almost double the single device data rate.

Further, I stop remote-DMA and do all sorts of nasty things that are not
documented in the manual. This runs in a CAT-Scanner marketed by Philips.

I spent many days on the phone with National Semi trying to find out what
was happening. It turns out that all you have to do is to guarantee that
nothing touches any registers while a remote DMA is in progress. They
revised their 1.2 us chip-to-chip access time warning down to the 300 ns
once even THEY found out what was happening.

Cheers,
Dick Johnson

Richard B. Johnson
Project Engineer
Analogic Corporation
Voice : (508) 977-3000 ext. 3754
Fax : (508) 532-6097
Modem : (508) 977-6870
Ftp : annonymous@boneserver.analogic.com
Email : rjohnson@analogic.com
Beware the penguin, Linux version 2.1.26 on an i586 machine.
---1295196120-1334113657-855888807=:286
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="RF.asm"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.3.91.970213215327.286B@chaos.analogic.com>
Content-Description:

Q09NTUVOVCAqDQogICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAg
ICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjDQogICAgICAgIyAgQ29weXJpZ2h0
KGMpIDE5OTQgLSAxOTk3LCAgQW5hbG9naWMgQ29ycG9yYXRpb24uICBBbGwg
cmlnaHRzICAjDQogICAgICAgIyAgcmVzZXJ2ZWQgd29ybGR3aWRlLiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjDQogICAg
ICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjDQogICAgICAgIyAgVGhpcyAgZG9j
dW1lbnQgY29udGFpbnMgaW5mb3JtYXRpb24gcHJvcHJpZXRhcnkgIHRvIEFu
YWxvZ2ljICAjDQogICAgICAgIyAgQ29ycG9yYXRpb24uICBJZiB0aGlzIHBy
b2R1Y3QgaXMgYWNxdWlyZWQgYnkgb3Igb24gYmVoYWxmIG9mICAjDQogICAg
ICAgIyAgYSB1bml0IG9yIGFnZW5jeSBvZiB0aGUgVW5pdGVkIFN0YXRlcyBH
b3Zlcm5tZW50IHRoZSBmb2xsb3ctICAjDQogICAgICAgIyAgaW5nIGFwcGxp
ZXM6IChhKSBUaGlzIHByb2R1Y3Qgd2FzIG5vdCBkZXZlbG9wZWQgd2l0aCBn
b3Zlcm4tICAjDQogICAgICAgIyAgbWVudCBmdW5kczsgIChiKSBpcyBhICB0
cmFkZSBzZWNyZXQgb2YgIEFuYWxvZ2ljIENvcnBvcmF0aW9uICAjDQogICAg
ICAgIyAgZm9yIGFsbCBwdXJwb3NlcyBvZiB0aGUgRnJlZWRvbSBvZiBJbmZv
cm1hdGlvbiBBY3Q7ICBhbmQgKGMpICAjDQogICAgICAgIyAgaXMgIkNvbW1l
cmNpYWwgQ29tcHV0ZXIgU29mdHdhcmUiLiAgRm9yIHVuaXRzIG9mIHRoZSBE
ZXBhcnQtICAjDQogICAgICAgIyAgbWVudCBvZiBEZWZlbnNlIChEb0QpLCAg
dGhpcyBzb2Z0d2FyZSBpcyAgcHJvdmlkZWQgb25seSB3aXRoICAjDQogICAg
ICAgIyAgIlJlc3RyaWN0ZWQgUmlnaHRzIiAgYXMgZGVmaW5lZCBpbiB0aGUg
RG9EIHN1cHBsZW1lbnQgdG8gdGhlICAjDQogICAgICAgIyAgRmVkZXJhbCBB
Y3F1aXNpdGlvbiBSZWd1bGF0aW9ucywgNTIuMjI3LTcwMTMoYykoSSkoaWkp
LiBVc2UsICAjDQogICAgICAgIyAgZHVwbGljYXRpb24sICBvciBkaXNjbG9z
dXJlICBpcyAgc3ViamVjdCB0byB0aGUgcmVzdHJpY3Rpb25zICAjDQogICAg
ICAgIyAgc2V0IGZvcnRoIGluIHN1YmRpdmlzaW9uIChjKShpaSkgIG9mIHRo
ZSBSaWdodHMgaW4gVGVjaG5pY2FsICAjDQogICAgICAgIyAgRGF0YSBhbmQg
Q29tcHV0ZXIgU29mdHdhcmUgY2xhdXNlIGF0IDUyLTIyNy03MDEzLiAgICAg
ICAgICAgICAjDQogICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjDQogICAg
ICAgIyAgVXNlLCBkdXBsaWNhdGlvbiwgb3IgZGlzY2xvc3VyZSBvZiB0aGlz
IHByb3ByaWV0YXJ5IGRvY3VtZW50ICAjDQogICAgICAgIyAgd2l0aG91dCAg
dGhlIGV4cHJlc3MgcGVybWlzc2lvbiBvZiAgQW5hbG9naWMgIENvcnBvcmF0
aW9uIGlzICAjDQogICAgICAgIyAgcHJvaGliaXRlZC4gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjDQogICAg
ICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjDQogICAgICAgIyAgICAgICAgICAg
ICAgICAgICBDIE8gTiBGIEkgRCBFIE4gVCBJIEEgTCAgICAgICAgICAgICAg
ICAgICAgICAjDQogICAgICAgIyAgVGhlIGluZm9ybWF0aW9uIGNvbnRhaW5l
ZCAgaW4gb3IgdXBvbiAgdGhpcyBkb2N1bWVudCAgaXMgdGhlICAjDQogICAg
ICAgIyAgcHJvcGVydHkgIG9mICBBbmFsb2dpYyBDb3Jwb3JhdGlvbiBhbmQg
IGlzIGNvbnNpZGVyZWQgdG8gIGJlICAjDQogICAgICAgIyAgcHJvcHJpZXRh
cnkgIGFuZCAgbWF5ICBub3QgIGJlIHVzZWQgYnkgYW55IHJlY2lwaWVudCB3
aXRob3V0ICAjDQogICAgICAgIyAgdGhlIHNwZWNpZmljIHdyaXR0ZW4gcGVy
bWlzc2lvbiBvZiBBbmFsb2dpYyBDb3Jwb3JhdGlvbi4gICAgICAjDQogICAg
ICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogKg0KDQpTVUJUVEwJUkYgRXRo
ZXJuZXQgbGluayBjb2RlDQpQQUdFCSwxMzINCkNPTU1FTlQJKg0KCVJGTElO
Sy5BU00JCUNyZWF0ZWQgMjktSlVOLTE5OTIJUmljaGFyZCBCLiBKb2huc29u
DQoNCglUaGlzIG1vZHVsZSBjb250YWlucyBhc3NlbWJseSBsYW5ndWFnZSBy
b3V0aW5lcyBmb3IgdGhlIFJGIExpbmsNCg0KCVRoaXMgc291cmNlIGNvZGUg
aXMgdG8gYmUgY29tcGlsZWQgdXNpbmcgb25lIG9mIHRoZSBmb2xsb3dpbmc6
DQoNCgkJTWljcm9zb2Z0IE1BU00gNS4xIE1hY3JvIEFzc2VtYmxlcg0KCQlC
b3JsYW5kCSAgVEFTTSAyLjAgVHVyYm8gQXNzZW1ibGVyDQoJCVNMUiBTeXN0
ZW1zIE9QVEFTTSAxLjUwIEFzc2VtYmxlcg0KDQoJQXNzZW1ibHkgbGFuZ3Vh
Z2UgaXMgTk9UIHBvcnRhYmxlLiBUaGVyZSBpcyBubyB3YXkgdGhhdCB0aGlz
DQoJY291bGQgYmUgd3JpdHRlbiBzbyB0aGF0IGl0IGlzIGNvbXBhdGlibGUg
d2l0aCBhbGwgYXNzZW1ibGVycy4NCglOb3RlIHRoYXQgTWljcm9zb2Z0IE1B
U00gNi4wIGlzIE5PVCBjb21wYXRpYmxlIHdpdGggcHJldmlvdXMNCgl2ZXJz
aW9ucyBhbmQgd2lsbCBOT1QgYXNzZW1ibGUgdGhpcyBjb2RlLiBUaGlzIGlz
IGEgTWljcm9zb2Z0DQoJbWFuYWdlbWVudCBhbmQgZGVzaWduIHByb2JsZW0u
DQoNCglBYmFuZG9uIGhvcGUsIGFsbCB5ZSB3aG8gZW50ZXIgaGVyZWluLg0K
CQkJCUFsaWdoaWVyaSBEYW50ZSdzICBJbmZlcm5vDQoNCglNb2RpZmllZDoN
CgkJCQkyOC1TRVAtMTk5MgkJUmljaGFyZCBCLiBKb2huc29uDQoNCglGaXhl
ZCBidWcgaW4gX3RyaWdnZXIgcHJvY2VkdXJlIHdoZXJlIEkgd2FzIHNldHRp
bmcgdGhlIHRyaWdnZXINCgliaXQgd2hlbiBpdCBoYWQgYWxyZWFkeSBiZWVu
IHNldC4gVGhpcyB3b3VsZCBjYXVzZSB0aGUgTklDIHRvDQoJaG9sZCB0aGUg
V0FJVCBsaW5lIGZvciBtaWxsaXNlY29uZHMgb3IgdW50aWwgdGhlIHByZXZp
b3VzIHBhY2tldA0KCWhhZCBiZWVuIHRyYW5zbWl0dGVkLiBUaGlzIHdvdWxk
IHRyYXNoIG1lbW9yeSBiZWNhdXNlIHJlZnJlc2ggd2FzDQoJZGlzYWJsZWQg
Zm9yIHRoaXMgZW50aXJlIGludGVydmFsLg0KDQoJTW9kaWZpZWQJCTA3LU5P
Vi0xOTkyCQlSaWNoYXJkIEIuIEpvaG5zb24NCg0KCUFkZGVkIHN1cHBvcnQg
dG8ga2VlcCBleGVjdXRpbmcgUkZfSVNSIHVudGlsIGFsbCBldmVudHMgd2Vy
ZQ0KCXNlcnZpY2VkIGFmdGVyIHRoZSBmaXJzdCBpbnRlcnJ1cHQgZ2FpbmVk
IGNvbnRyb2wuIFRoaXMgd2FzIG5lY2Vzc2FyeQ0KCWJlY2F1c2UsIG9uY2Ug
Y29udHJvbCB3YXMgcmVsaW5xdWlzaGVkIHdpdGggdGhlIElSRVQsIGEgbmV3
IGV2ZW50DQoJd291bGQgbm90IGNhdXNlIHRoZSBpbnRlcnJ1cHQgdG8gYmUg
aW1tZWRpYXRlbHkgc2VydmljZWQgYmVjYXVzZQ0KCXRoZSB0aW1lciB0aWNr
IHdhcyBhIGhpZ2hlciBwcmlvcml0eS4gVGhlIElTUiB3b3VsZCBldmVudHVh
bGx5IGJlDQoJZXhlY3V0ZWQsIGJ1dCB0b28gbGF0ZSBhbmQgZXZlbnRzIHdv
dWxkIGJlIGxvc3QuDQoNCglNb2RpZmllZAkJMDktTk9WLTE5OTIJCVJpY2hh
cmQgQi4gSm9obnNvbg0KDQoJQ2hhbmdlZCB0aGUgcHJpb3JpdHkgb2YgdGhl
IGludGVycnVwdCBjb250cm9sbGVyIHNvIHRoYXQgSVJRMiwNCgl0aGUgY2Fz
Y2FkZSBpbnRlcnJ1cHQgaGFzIHRoZSBoaWdoZXN0IHByaW9yaXR5Lg0KDQoJ
TW9kaWZpZWQJCTI0LU5PVi0xOTkyCQlSaWNoYXJkIEIuIEpvaG5zb24NCg0K
CUFkZGVkIHN1cHBvcnQgdG8gcmVtb3ZlIHN0YXR1cyBpbmZvcm1hdGlvbiBm
cm9tIHRoZSBkb3dubGluayBkYXRhDQoJc3RyZWFtIGFuZCBzZW5kIHRoZSBy
ZW1haW5pbmcgcGFja2V0IHRvIHRoZSBGSUZPLg0KDQoJTW9kaWZpZWQJCTA4
LURFQy0xOTkyCQlSaWNoYXJkIEIuIEpvaG5zb24NCg0KCU1vZGlmaWVkIGp1
c3QgYWJvdXQgZXZlcnl0aGluZyBiZWNhdXNlIGl0IHdhcyBmb3VuZCB0aGF0
IHRoZSBTTklDDQoJY2hpcCB3b3VsZCBzZWl6ZSB0aGUgYnVzIGlmIEkgY2hl
Y2tlZCBhbnkgc3RhdHVzIHJlZ2lzdGVyIGR1cmluZw0KCWNlcnRhaW4gKHVu
a25vd24pIGNyaXRpY2FsIHBlcmlvZHMuIFRoaXMgbWVhbnQgdGhhdCBhbiBh
dHRlbXB0IHRvDQoJZGV0ZXJtaW5lIGlmIGl0IHdhcyBidXN5IHNvIEkgY291
bGQgZmlsbCB0aGUgb3V0cHV0IGJ1ZmZlciwgd291bGQNCglzb21ldGltZXMg
aGFsdCB0aGUgbWFjaGluZS4NCg0KCVRoZSAiZml4IiB3YXMgdG8gdXBkYXRl
IHRoZSBjaGlwJ3MgaW50ZXJuYWwgb3V0cHV0IGJ1ZmZlciBvbmx5DQoJYWZ0
ZXIgYSB0cmFuc21pdCBwYWNrZXQgaW50ZXJydXB0LiBUaGlzIHdvdWxkIGd1
YXJhbnRlZSB0aGF0IGl0DQoJd291bGQgbm90IGJlIGJ1c3kuIFVuZm9ydHVu
YXRlbHksIHNpbmNlIGFuIGludGVycnVwdCBtYXkgb2NjdXINCglhdCBhbnkg
dGltZSwgb3RoZXIgcG9ydGlvbnMgb2YgY29kZSBtaWdodCBub3QgaGF2ZSBj
b21wbGV0ZWQNCgl1cGRhdGluZyB0aGUgZGF0YSB0byBiZSB0cmFuc21pdHRl
ZCBiZWZvcmUgdGhlIGNoaXAgaW50ZXJydXB0ZWQNCglhbmQgdHJhbnNtaXR0
ZWQgaXQuIFRoaXMgcmVxdWlyZWQgYWRkaXRpb25hbCByZWRlc2lnbiBzbyB0
aGF0DQoJdGhlIHRyYW5zbWl0dGVkIGJ1ZmZlciBjYW4gYmUgbWFya2VkICJj
b21wbGV0ZSIuDQoNCglNb2RpZmllZAkJMjItREVDLTE5OTIJCVJpY2hhcmQg
Qi4gSm9obnNvbg0KDQoJQ2hhbmdlZCB0aGUgbWV0aG9kIG9mIG1haW50YWlu
aW5nIHRoZSBTTklDIGJvdW5kYXJ5IHBvaW50ZXIuIEl0DQoJaXMgbm93IHBl
cm1hbmVudGx5IHNldCB0byB6ZXJvIHdpdGggdGhlIFBhZ2UgU3RhcnQgQWRk
cmVzcyBzZXQgYXQNCglvbmUuIFRoaXMgd2lsbCBmb3JjZSB0aGlzIHBvaW50
ZXIgdG8gYWx3YXlzIGJlIGxlc3MgdGhhbiB0aGUgY3VycmVudA0KCWFkZHJl
c3MuDQoNCglNb2RpZmllZAkJMjgtREVDLTE5OTIJCVJpY2hhcmQgQi4gSm9o
bnNvbg0KDQoJUmVtb3ZlZCBhYm92ZSBtb2RpZmljYXRpb24gYW5kIGZpeGVk
IGEgYnVnIGluIHRoZSBpbml0aWFsaXphdGlvbg0KCXRoYXQga2VwdCB0aGUg
ZGF0YSBjb25maWd1cmF0aW9uIHJlZ2lzdGVyIGluIHRoZSBsb29wYmFjayBt
b2RlLg0KDQoJTW9kaWZpZWQJCTMxLUpBTi0xOTkzCQlSaWNoYXJkIEIuIEpv
aG5zb24NCglBZGRlZCBzdXBwb3J0IHRvIHF1ZXVlIHRoZSBlcnJvci1sb2dn
ZXIgaWYgc29tZSBuZXcgZXJyb3JzIGFyZSBzZW50DQoJZnJvbSB0aGUgREVD
IGNhcmQgaW4gdGhlIERpc2MgU3Vic3lzdGVtDQoNCglDaGFuZ2VkIGNvZGUg
dG8gYWNjb21tb2RhdGUgbmV3IHN0cnVjdHVyZSBsZW5ndGggb24gdGhlIHJl
dHVybmVkDQoJZGF0YSBiZWNhdXNlIG9mIHRoZSByZWRlc2lnbiBvZiB0aGUg
REVDIGNhcmQNCg0KCU1vZGlmaWVkCQkwNC1GRUItMTk5MwkJUmljaGFyZCBC
LiBKb2huc29uDQoNCglDaGFuZ2VkIGRvd24tbGluayBpbnRlcnJ1cHQgc2Vy
dmljZSByb3V0aW5lIHRvIHVzZSBhIE1BQ1JPIHdoaWNoDQoJaXMgb3B0aW1p
emVkIGZvciBzcGVlZC4gTW9kaWZ5aW5nIE1BQ1JPIFJFQURfTElOSyBub3cg
Y2hhbmdlcyB0aGUNCgljb2RlIGluIGJvdGggZG93bmxpbmsgY2hhbm5lbHMu
DQoNCglNb2RpZmllZCB0aGUgbWV0aG9kIG9mIGhhbmRsaW5nIHRoZSBTTklD
IHBhZ2Ugc3RvcCBwYXJhbWV0ZXIuIEhvdw0KCXVzZXMgYSBtYXNrIHNvIGEg
Y29tcGFyZSBhbmQganVtcCBvbiBjb25kaXRpb24gaXMgbm90IG5lY2Vzc2Fy
eS4NCgl0aGlzIHNhdmVzIDEyIHByb2Nlc3NvciBjbG9ja3MuDQoNCglNb2Rp
ZmllZAkJMDctRkVCLTE5OTMJCVJpY2hhcmQgQi4gSm9obnNvbg0KDQoJQWRk
ZWQgc3VwcG9ydCB0byBleHRyYWN0IEF1eGlsaWFyeSBEQVMgZGF0YSBmcm9t
IHRoZSBkb3dubGluaw0KCXBhY2tldHMuDQoNCglNb2RpZmllZAkJMTktRkVC
LTE5OTMJCVJpY2hhcmQgQi4gSm9obnNvbg0KDQoJQWRkZWQgc3VwcG9ydCB0
byB1cGRhdGUgdGhlIHBvc2l0aW9uIHN5c3RlbSByZWNvcmQgbnVtYmVyIGZy
b20NCgl3aXRoaW4gdGhlIHRyYW5zbWl0dGVyIGludGVycnVwdCBzZXJ2aWNl
IHJvdXRpbmUuDQoNCglNb2RpZmllZAkJMjEtTUFZLTE5OTMJCVJpY2hhcmQg
Qi4gSm9obnNvbg0KCUFkZGVkIHN1cHBvcnQgZm9yIHJldHVybmVkIERpc2Mg
U3Vic3lzdGVtIGVycm9ycy4NCg0KCU1vZGlmaWVkCQkwMi1NQVItMTk5NQkJ
UmljaGFyZCBCLiBKb2huc29uDQoJQWRkZWQgc3VwcG9ydCBmb3IgY29uZGl0
aW9uYWwgY29tcGlsYXRpb24gdG8gZGV0ZWN0IHNlcXVlbmNlIG51bWJlcg0K
CWVycm9ycw0KKg0KDQpJTkNMVURFIEVORVQuSU5DDQpJTkNMVURFCUhFQURF
Ui5JTkMNCklOQ0xVREUgSU5UREVGLklOQw0KSU5DTFVERSBESVNDVEwuSU5D
DQpJTkNMVURFIEVUSEVSMC5JTkMNCklOQ0xVREUgREFTREFUQS5JTkMNCklO
Q0xVREUgRVJSTVNHLklOQw0KDQouMjg2QwkJCQkJCTsgODAyODYgaW5zdHJ1
Y3Rpb25zDQoNCklOVF9VU0UJCUVRVQlJUlE5CQkJOyBJbnRlcnJ1cHQgd2Ug
YXJlIHVzaW5nDQpCQVNFCQlFUVUJMjAwSAkJCTsgQmFzZSBhZGRyZXNzIG9m
IHRoZSBib2FyZA0KRE5MSU5LMAkJRVFVCUJBU0UJCQk7IERvd25saW5rIHBv
cnQNCkROTElOSzEJCUVRVQlCQVNFICsgMTBICQk7IERvd25saW5rIHBvcnQN
ClVQTElOSwkJRVFVCUJBU0UgKyAyMEgJCTsgVXBsaW5rIHBvcnQNClVQREFU
QQkJRVFVCUJBU0UgKyAzMkgJCTsgRGF0YSBwb3J0IGZvciB1cGxpbmsNCkFE
RF9MRU4JCUVRVQlTSVpFIERJU0NfREVTVAkJOyBCeXRlcyBpbiBhbiBldGhl
cm5ldCBhZGRyZXNzDQpXUkFQCQlFUVUJMEZGRkgJCQk7IE1heCBvZmZzZXQg
aW4gR2xvYmFsIFRhYmxlDQpTTklDX0FERFMJRVFVCTA0SAkJCTsgVHdvIHdv
cmRzDQpNQVhCVUYJCUVRVQkwMDAwMDExMTExMTExMTEwQgk7IEV0aGVybmV0
IGxpbWl0IG1hc2sNCk1BWEFMTwkJRVFVCU1BWEJVRiArIFNOSUNfQUREUwk7
IERhdGEgdG8gYWxsb2NhdGUgZm9yIGJ1ZmZlcg0KX1BTVEFSVAkJRVFVCTEJ
CQk7IFN0YXJ0aW5nIHBhZ2UgYWRkcmVzcw0KX1BTVE9QCQlFUVUJMjBICQkJ
OyBFbmQgb2YgUkFNIDMyDQpfUE1BU0sJCUVRVQlfUFNUT1AgLSAxCQk7IE1h
c2sgZm9yIGJvdW5kcnkgcG9pbnRlcg0KX0JORFJZCQlFUVUJX1BTVEFSVAkJ
CTsgQm91bmRhcnkgcG9pbnRlcg0KX0NVUlIJCUVRVQlfUFNUQVJUCQkJOyBD
dXJyZW50IHN0YXJ0aW5nIHBhZ2UNCl9ORVhUX1BLVAlFUVUJX1BTVEFSVAkJ
CTsgTmV4dCBwYWNrZXQgYWRkcmVzcw0KVUwkRkFJTDAJRVFVCTAwMDAwMDAx
QgkJOyBVcGxpbmsgZmFpbGVkDQpETCRGQUlMMAlFUVUJMDAwMDAwMTBCCQk7
IERvd25saW5rIDAgZmFpbGVkDQpETCRGQUlMMQlFUVUJMDAwMDAxMDBCCQk7
IERvd25saW5rIDEgZmFpbGVkDQpTTiRETUFCVAlFUVUJMDAwMDEwMDBCCQk7
IERNQSBhYm9ydGVkDQpMTiRTRVFOTQlFUVUJMDAwMTAwMDBCCQk7IFNlcXVl
bmNlIG51bWJlciBlcnJvcg0KS0VZX0xFTgkJRVFVCTEyCQkJOyBMZW5ndGgg
b2Yga2V5LXdvcmQgZGF0YQ0KUFVCTElDCV9zdGFydF9yZmxpbmsNClBVQkxJ
QwlfY2hrX2NvbV9icmQNClBVQkxJQwlfc3RvcF9yZmxpbmsNClBVQkxJQwlf
Zml4X2xpbmsNClBVQkxJQwlfdHJpZ2dlcg0KUFVCTElDICBfZmlmb19lb3QN
ClBVQkxJQwlfZ2V0X2Rpc2NfZXJyDQpQVUJMSUMJX2dldF9kaXNjX2Vycl9j
bHINCkVYVFJOCV9lcnJtc2c6RkFSDQpFWFRSTglfdHF1ZXVlOkZBUg0KRVhU
Uk4JX3Bvc19yZXNldDpGQVINCkVYVFJOCV9wb3Nfbm9ybTpGQVINCjsNCjst
PS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09
LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0NCjsJTUFDUk9zIGZvciBz
ZXR0aW5nIFNlcmlhbCBOZXR3b3JrIENvbnRyb2xsZXIgcG9ydHMNCjsNCk9V
VF9TTkMJTUFDUk8JQUREUiwgVkFMVUUNCglNT1YJRFgsQlgJCQkJOyBHZXQg
YmFzZSBhZGRyZXNzDQpJRglWQUxVRQkJCQkJOyBJZiBub3QgemVybw0KCU1P
VglBTCxWQUxVRQkJCTsgTnVtYmVyIGludG8gQUwNCkVMU0UNCglYT1IJQUws
QUwJCQkJOyBDbGVhciBBTA0KRU5ESUYNCklGCUFERFIJCQkJCTsgSWYgbm90
IHplcm8NCglBREQJRFgsQUREUgkJCQk7IEFkZCBpbiBvZmZzZXQgYWRkcmVz
cw0KRU5ESUYNCglPVVQJRFgsQUwJCQkJOyBPdXRwdXQgdG8gcG9ydA0KRU5E
TQ0KOy09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0t
PS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQ0KOw0KOwlVc2Vk
IHRvIHJlYWQgU2VyaWFsIE5ldHdvcmsgQ29udHJvbGxlciBwb3J0cy4NCjsN
CklOX1NOQwlNQUNSTwlBRERSDQoJTU9WCURYLEJYCQkJCTsgR2V0IGJhc2Ug
YWRkcmVzcw0KCUFERAlEWCxBRERSCQkJCTsgQWRkIGluIG9mZnNldCBhZGRy
ZXNzDQoJSU4JQUwsRFgJCQkJOyBHZXQgcG9ydCBkYXRhDQpFTkRNDQo7LT0t
PS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09
LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tDQo7DQo7CVRoaXMgTUFDUk8g
bG9ncyBhbnkgZXJyb3JzLg0KOw0KTE9HX0VSUk9SIE1BQ1JPCUVSUl9DT0RF
DQoJUFVTSAlFUlJfQ09ERQkJCTsgUHV0IGVycm9yIGNvZGUgb24gc3RhY2sN
CglQVVNICURHUk9VUAkJCQk7IFNlZ21lbnQgb2YgdGhlIHN0cmluZw0KCVBV
U0gJT0ZGU0VUIERHUk9VUDpSRl9NT0RVTEUJCTsgTW9kdWxlIG5hbWUNCglD
QUxMCV9lcnJtc2cJCQkJOyBDYWxsIGVycm9yIGxvZ2dlcg0KCUFERAlTUCw2
CQkJCTsgTGV2ZWwgc3RhY2sNCglYT1IJQVgsQVgJCQkJOyBDbGVhciBlcnJv
ciBjb2RlDQpFTkRNDQo7LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09
LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0t
DQo7CVRoaXMgcmVhZHMgYW5kIGZpbHRlcnMgZGF0YSBmcm9tIHRoZSBkb3du
bGluayBTZXJpYWwgTmV0d29yaw0KOwlDb250cm9sbGVycy4gTiBpcyB0aGUg
Y2hhbm5lbCwgMCBvciAxLCBhbmQgTSBpcyB0aGUgb3RoZXIsIGkuZS4sDQo7
CTEgb3IgMC4NCjsNClJFQURfTElOSwlNQUNSTyBODQoJTE9DQUwJRE1BX09L
LCBTVEFfT0ssIFJYX0JBRCwgTUFYQkYsIElNQUdFLCBCTkRSWSwgQk5ET0ss
IEpVTksNCjsNCglNT1YJQUwsUkRfU0VMJk4JCTsgU2VsZWN0IGRldmljZSAn
TicNCglNT1YJRFgsQkFTRS5SRFBDQQkJOyBSZW1vdGUgRE1BIHBhdGggY29u
dHJvbCBwb3J0DQoJT1VUCURYLEFMCQkJOyBTZWxlY3QgaXQNCjsNCjsJVG8g
YXZvaWQgaGFuZ2luZyB0aGUgc3lzdGVtLCB3ZSBtdXN0IGNoZWNrIGlmIHRo
ZSBwcmV2aW91cyByZW1vdGUNCjsJRE1BIG9wZXJhdGlvbiBoYXMgY29tcGxl
dGVkLiBJZiBpdCBoYXMgbm90IGNvbXBsZXRlZCwgd2Ugd2lsbA0KOwlhYm9y
dCBpdC4NCjsNCglNT1YJRFgsRE5MSU5LJk4uQ01ECQk7IFBpY2sgdXAgY29t
bWFuZCByZWdpc3Rlcg0KCUlOCUFMLERYCQkJOyBTZWUgaWYgRE1BIGlzIGNv
bXBsZXRlDQoJRkxVU0gJCQkJOyBDaGlwLXRvLWNoaXAgc2VsZWN0IHRpbWUg
YnVnDQoJQU5ECUFMLENSX1JEMgkJOyBDaGVjayBhYm9ydC9jb21wbGV0ZSBE
TUENCglKTloJRE1BX09LCQkJOyBJdCBoYXMgY29tcGxldGVkDQoJTU9WCUFM
LENSX1JEMgkJOyBBYm9ydCBjb21wbGV0ZSBETUENCglPVVQJRFgsQUwJCQk7
IFRlbGwgY29udHJvbGxlcg0KCUZMVVNICQkJCTsgQ2hpcC10by1jaGlwIHNl
bGVjdCB0aW1lIGJ1Zw0KCU1PVglEWCxCQVNFLlJSRUFECQk7IFJlbW90ZSBy
ZWFkIHBvcnQNCglJTglBWCxEWAkJCTsgUmVzZXQgUFJRIChOb3RlIDEsIDEw
LjAsIHBwIDEtMTcpDQo7DQoJTU9WCUFMLChOT1QgUkRfU0VMJk4pCTsgU2Vs
ZWN0IGRldmljZSBOT1QgJ04nDQoJTU9WCURYLEJBU0UuUkRQQ0EJCTsgUmVt
b3RlIERNQSBwYXRoIGNvbnRyb2wgcG9ydA0KCU9VVAlEWCxBTAkJCTsgU2Vs
ZWN0IGl0DQoJTk9UCUFMCQkJOyBUb2dnbGUgdGhlIGJpdA0KCU9VVAlEWCxB
TAkJCTsgU2VsZWN0IGl0DQoJT1IJQllURSBQVFIgTE5LX0ZBSUwsIFNOJERN
QUJUIDsgU2hvdyBETUEgd2FzIGFib3J0ZWQNCjsNCjsJRE1BIHByb2JsZW0g
aGFzIGJlZW4gZml4ZWQuIEhvdyBjaGVjayB0aGUgaW50ZXJydXB0IHN0YXR1
cyByZWdpc3Rlcg0KOwlhbmQgaGFuZGxlIGVpdGhlciB0aGUgZXJyb3Igb3Ig
dGhlIG5ldyBkYXRhIGluIHRoZSBTTklDLg0KOw0KRE1BX09LOglNT1YJRFgs
RE5MSU5LJk4uSVNSCQk7IERvd25saW5rIGludGVycnVwdCBzdGF0dXMgcG9y
dA0KCUlOCUFMLERYCQkJOyBHZXQgc3RhdHVzDQoJT1VUCURYLEFMCQkJOyBD
bGVhciBzdGF0dXMgcmVnaXN0ZXINCglURVNUCUFMLElTX1BSWAkJOyBXYXMg
cGFja2V0IHJlY2VpdmVkPw0KCUpaCVJYX0JBRAkJCTsgTm8NCjsNCjsJRGF0
YSB3YXMgcmVjZWl2ZWQsIG5vdyByZW1vdmUgb3VyIHByaXZhdGUgZGF0YSBm
cm9tIHRoZSBTTklDIHRoZW4NCjsJc2VuZCB0aGUgaW1hZ2UgZGF0YSB0byB0
aGUgRklGTy4NCjsNCglNT1YJQllURSBQVFIgX2NobW9uJk4sVFJVRQk7IFNo
b3cgY2hhbm5lbCBpcyBhbGl2ZQ0KCUFERAlXT1JEIFBUUiBfcmVjdnMmTi5M
Vy5MTywxIDsgSW5jcmVtZW50IHJlY2VpdmVyIGNvdW50DQoJQURDCVdPUkQg
UFRSIF9yZWN2cyZOLkxXLkhJLDAgOyBUYWtlIGNhcmUgb2Ygb3ZlcmZsb3cN
CjsNCglNT1YJRFgsRE5MSU5LJk4uUlNSCQk7IEdldCBkb3dubGluayByZWNl
aXZlIHN0YXR1cw0KCUlOCUFMLERYCQkJOyBHZXQgc3RhdHVzDQoJTU9WCUNM
LEFMCQkJOyBTYXZlIHJlY2VpdmUgc3RhdHVzDQo7DQoJWE9SCUFMLEFMCQkJ
OyBDbGVhciBsb3cgYnl0ZQ0KCU1PVglBSCxCWVRFIFBUUiBOUEsmTgk7IEFk
ZHJlc3Mgb2YgY3VycmVudCBwYWNrZXQNCglNT1YJV09SRCBQVFIgQ1VSUEss
QVgJOyBTYXZlIGN1cnJlbnQgcGFja2V0IGFkZHJlc3MNCglNT1YJRFgsRE5M
SU5LJk4uUlNBUjAJOyBSZW1vdGUgc3RhcnQgYWRkcmVzcyBwb3J0DQoJT1VU
CURYLEFYCQkJOyBTZXQgaXQNCglGTFVTSAkJCQk7IENoaXAtdG8tY2hpcCBz
ZWxlY3QgdGltZSBidWcNCjsNCglNT1YJQVgsNAkJCTsgVHdvIHdvcmRzDQoJ
TU9WCURYLEROTElOSyZOLlJCQ1IwCTsgUmVtb3RlIGJ5dGUgY291bnQgcmVn
aXN0ZXINCglPVVQJRFgsQVgJCQk7IFNldCByZW1vdGUgYnl0ZS1jb3VudA0K
CUZMVVNICQkJCTsgQ2hpcC10by1jaGlwIHNlbGVjdCB0aW1lIGJ1Zw0KOw0K
CU1PVglBTCxDUl9HRVQJCTsgUmVtb3RlIHJlYWQNCglNT1YJRFgsRE5MSU5L
Jk4uQ01ECQk7IFBpY2sgdXAgY29tbWFuZCByZWdpc3Rlcg0KCU9VVAlEWCxB
TAkJCTsgU2V0IHJlbW90ZSByZWFkDQoJRkxVU0gJCQkJOyBDaGlwLXRvLWNo
aXAgc2VsZWN0IHRpbWUgYnVnDQo7DQoJTU9WCURYLEJBU0UuUlJFQUQJCTsg
UmVtb3RlIHJlYWQgcG9ydA0KCUlOCUFYLERYCQkJOyBHZXQgZmlyc3Qgd29y
ZCAoc3RhdHVzKQ0KCUNNUAlDTCxBTAkJCTsgQ2hlY2sgdGhlIHN0YXR1cw0K
CUpaCVNUQV9PSwkJCTsgU3RhdHVzIHdhcyBva2F5DQoJSU4JQVgsRFgJCQk7
IEdldCBuZXh0IHdvcmQgdG8gY29tcGxldGUgRE1BDQo7DQpSWF9CQUQ6CU9S
CUJZVEUgUFRSIExOS19GQUlMLCBETCRGQUlMJk4JIDsgU2hvdyBkb3dubGlu
ayBmYWlsdXJlDQoJTU9WCURYLERTCQkJCSA7IFNhdmUgc2VnbWVudA0KCUxE
UwlESSxEV09SRCBQVFIgREdST1VQOl9oaXN0b3J5CSA7IEdldCBIaXN0b3J5
IHN0cnVjdHVyZQ0KCUFERAlXT1JEIFBUUiBbREkuRE5MTksmTiZfRVJST1JT
TF0sMSA7IEFjY3VtdWxhdGUgZXJyb3JzDQoJQURDCVdPUkQgUFRSIFtESS5E
TkxOSyZOJl9FUlJPUlNIXSwwIDsgUHJvcGFnYXRlIG92ZXJmbG93DQoJTU9W
CURTLERYCQkJCSA7IFJlc3RvcmUgc2VnbWVudA0KCVJFVA0KOw0KU1RBX09L
OglNT1YJQllURSBQVFIgTlBLJk4sQUgJOyBTZXQgbmV4dCBwYWNrZXQgYWRk
cmVzcw0KCUlOCUFYLERYCQkJOyBHZXQgYnl0ZSBjb3VudA0KCUFORAlBWCxN
QVhCVUYJCTsgTWFzayBieXRlIGNvdW50IGxpbWl0DQoJTU9WCVdPUkQgUFRS
IF9kbGlua19sZW4mTixBWCA7IFNhdmUgdGhlIGxlbmd0aA0KCVNVQglBWCw0
CQkJOyBXaGF0IHdlIGhhdmUgYWxyZWFkeSByZWFkDQoJTU9WCUNYLEFYCQkJ
OyBTZXQgYnl0ZSBjb3VudCBpbiBjb3VudGVyIHJlZ2lzdGVyDQoJTU9WCURY
LEROTElOSyZOLlJCQ1IwCTsgUmVtb3RlIGJ5dGUgY291bnQgcmVnaXN0ZXIN
CglPVVQJRFgsQVgJCQk7IFNldCBieXRlIGNvdW50DQoJRkxVU0gJCQkJOyBD
aGlwLXRvLWNoaXAgc2VsZWN0IHRpbWUgYnVnDQo7DQoJTU9WCURYLEROTElO
SyZOLkNNRAkJOyBQaWNrIHVwIGNvbW1hbmQgcmVnaXN0ZXINCglNT1YJQUws
Q1JfR0VUCQk7IFJlbW90ZSByZWFkDQoJT1VUCURYLEFMCQkJOyBTZXQgcmVt
b3RlIHJlYWQNCglGTFVTSAkJCQk7IENoaXAtdG8tY2hpcCBzZWxlY3QgdGlt
ZSBidWcNCjsNCglNT1YJREksT0ZGU0VUIERHUk9VUDpfZG5saW5rX2J1ZiZO
IDsgV2hlcmUgdG8gcHV0IHRoZSBkYXRhDQoJTU9WCUFYLENYCQkJOyBTYXZl
IHRoZSBieXRlIGNvdW50DQoJTU9WCUNYLChEQVNNX0FVWCBTSFIgMSkJOyBV
cCB0bywgYnV0IG5vdCBpbmNsdWRpbmcgKFdPUkRTKQ0KCU1PVglEWCxCQVNF
LlJSRUFECQk7IFJlbW90ZSByZWFkIHBvcnQgKHdoZXJlIHRvIGdldCBkYXRh
KQ0KCVJFUAlJTlNXCQkJOyBSZWFkIHRoZSBkYXRhDQoJTU9WCUNYLEFYCQkJ
OyBSZXN0b3JlIGJ5dGUgY291bnQNCglTVUIJQ1gsREFTTV9BVVgJCTsgQ1gg
PSByZXN0IG9mIHRoZSBkYXRhDQoJCQkJCTsgQ2hlY2sgZGF0YSB0eXBlDQoJ
Q01QCUJZVEUgUFRSIF9kbmxpbmtfYnVmJk4uRElTQ19NU0dfVFlQLERJU0Nf
Tk9STQ0KCUpaCUlNQUdFCQkJOyBJdCdzIGltYWdlIGRhdGENCglTSFIJQ1gs
MQkJCTsgTWFrZSBhIHdvcmQgY291bnQNCglSRVAJSU5TVwkJCTsgUmVhZCB0
aGUgcmVzdCBvZiB0aGUgZGF0YQ0KCUpNUAlCTkRSWQkJCTsgRG8gdGhlIGJv
dW5kYXJ5IHBvaW50ZXINCg0KSlVOSzoJTU9WCUFMLENSX1JEMgkJOyBBYm9y
dC9jb21wbGV0ZSByZW1vdGUgRE1BDQoJTU9WCURYLEROTElOSyZOLkNNRAkJ
OyBQaWNrIHVwIGNvbW1hbmQgcmVnaXN0ZXINCglPVVQJRFgsQUwJCQk7IFRl
bGwgY29udHJvbGxlcg0KCUZMVVNICQkJCTsgQ2hpcC10by1jaGlwIHNlbGVj
dCB0aW1lIGJ1Zw0KCU1PVglEWCxCQVNFLlJSRUFECQk7IFJlbW90ZSByZWFk
IHBvcnQNCglJTglBWCxEWAkJCTsgUmVzZXQgUFJRIChOb3RlIDEsIDEwLjAs
IHBwIDEtMTcpDQoJSk1QCVNIT1JUIEJORFJZCQk7IERvIHRoZSBib3VuZGFy
eSBwb2ludGVyDQo7DQo7CVRoZSBkYXRhIGlzIGltYWdlIGRhdGEuIEV4dHJh
Y3QgdGhlIEF1eGlsaWFyeSBEQVMgZGF0YSB0aGF0IHdlIG5lZWQuDQo7CU5v
dGUgdGhhdCB3ZSBkbyBub3QgdXNlIGEgbXVsdGlwbHkgd2l0aGluIHRoZSBJ
U1IuIFRoYXQgdGFrZXMgMjENCjsJY2xvY2tzLiBJbnN0ZWFkLCB3ZSBpbmRl
eCBpbnRvIGEgdGFibGUgb2YgZml4ZWQgb2Zmc2V0cy4NCjsNCklNQUdFOglU
RVNUCUNYLDBGRjAwSAkJOyBNYWtlIHN1cmUgaXQncyByZWFsDQoJSloJSlVO
SwkJCTsgSXQncyBqdW5rDQoJSU4JQVgsRFgJCQk7IEdldCBSRVZfTlVNQkVS
DQoJSU4JQVgsRFgJCQk7IEdldCBLRVlfV09SRA0KCUFORAlBWCw3CQkJOyBN
YXNrIG9mZiBqdW5rDQoJTU9WCUNYLEJYCQkJOyBTYXZlIG5vbnZvbGF0aWxl
IHJlZ2lzdGVyDQoJTU9WCUJYLE9GRlNFVCBER1JPVVA6S0VZX0lOREVYCTsg
U2V0IG9mZnNldCAoMiBjbG9ja3MpDQoJWExBVAkJCQkJOyBHZXQgb2Zmc2V0
ICg0IGNsb2NrcykNCglNT1YJQlgsQ1gJCQk7IFJlc3RvcmUgb2xkIEJYIHJl
Z2lzdGVyDQoJTU9WCURJLE9GRlNFVCBER1JPVVA6X2Rhc2QJOyBXaGVyZSB0
aGUgZGF0YSBzdGFydHMNCglBREQJREksQVgJCQk7IE5ldyBvZmZzZXQNCglN
T1YJQ1gsKEtFWV9MRU4gU0hSIDEpCTsgTnVtYmVyIG9mIFdPUkRTIHBlciBy
ZWNvcmQNCglSRVAJSU5TVwkJCTsgR2V0IHRoZSBBVVggZGF0YQ0KOw0KOwlB
dXggZGF0YSBoYXMgYmVlbiByZWNlaXZlZC4gV2UgaGF2ZSB0byBhYm9ydC9j
b21wbGV0ZSB0aGUgcmVtb3RlDQo7CURNQSBvcGVyYXRpb24gc28gd2UgY2Fu
IHN0YXJ0IGFnYWluIGZvciB0aGUgRklGTw0KOw0KCU1PVglBTCxDUl9SRDIJ
CTsgQWJvcnQvY29tcGxldGUgcmVtb3RlIERNQQ0KCU1PVglEWCxETkxJTksm
Ti5DTUQJCTsgUGljayB1cCBjb21tYW5kIHJlZ2lzdGVyDQoJT1VUCURYLEFM
CQkJOyBUZWxsIGNvbnRyb2xsZXINCglGTFVTSAkJCQk7IENoaXAtdG8tY2hp
cCBzZWxlY3QgdGltZSBidWcNCglNT1YJRFgsQkFTRS5SUkVBRAkJOyBSZW1v
dGUgcmVhZCBwb3J0DQoJSU4JQVgsRFgJCQk7IFJlc2V0IFBSUSAoTm90ZSAx
LCAxMC4wLCBwcCAxLTE3KQ0KOw0KOwlOb3cgc2V0IHVwIHJlbW90ZSBETUEg
c28gRklGTyBjYW4gZ2V0IGl0cyBkYXRhLg0KOw0KCU1PVglBWCxXT1JEIFBU
UiBDVVJQSwk7IEdldCBjdXJyZW50IHBhY2tldCBhZGRyZXNzDQoJQURECUFY
LERBU01fQVVYCQk7IFNldCB1cCBuZXcgb2Zmc2V0DQoJTU9WCURYLEROTElO
SyZOLlJTQVIwCTsgUmVtb3RlIHN0YXJ0IGFkZHJlc3MgcG9ydA0KCU9VVAlE
WCxBWAkJCTsgU2V0IGl0DQoJRkxVU0gJCQkJOyBDaGlwLXRvLWNoaXAgc2Vs
ZWN0IHRpbWUgYnVnDQo7DQoJTU9WCUFYLFdPUkQgUFRSIF9kbGlua19sZW4m
TiA7IEdldCB0aGUgbGVuZ3RoDQoJU1VCCUFYLERBU01fQVVYCQk7IEdldCBy
aWQgb2Ygc3R1ZmYgd2UgZG9uJ3Qgd2FudA0KCU1PVglEWCxETkxJTksmTi5S
QkNSMAk7IFJlbW90ZSBieXRlIGNvdW50IHJlZ2lzdGVyDQoJT1VUCURYLEFY
CQkJOyBTZXQgYnl0ZSBjb3VudA0KCUZMVVNICQkJCTsgQ2hpcC10by1jaGlw
IHNlbGVjdCB0aW1lIGJ1Zw0KOw0KCU1PVglBTCxDUl9HRVQJCTsgUmVtb3Rl
IHJlYWQNCglNT1YJRFgsRE5MSU5LJk4uQ01ECQk7IFBpY2sgdXAgY29tbWFu
ZCByZWdpc3Rlcg0KCU9VVAlEWCxBTAkJCTsgU2V0IHJlbW90ZSByZWFkDQoJ
RkxVU0gJCQkJOyBDaGlwLXRvLWNoaXAgc2VsZWN0IHRpbWUgYnVnDQo7DQoJ
TU9WCUFMLChOT1QgUkRfU0VMJk4pCTsgU2VsZWN0IGFsdGVybmF0ZSBkZXZp
Y2UsIHNpZ25hbCBGSUZPDQoJTU9WCURYLEJBU0UuUkRQQ0EJCTsgUmVtb3Rl
IERNQSBwYXRoIGNvbnRyb2wNCglPVVQJRFgsQUwJCQk7IFNlbGVjdCBpdA0K
Ow0KOwlGSUZPIGhhcyBiZWVuIHNpZ25hbGVkLiBOb3cgY2hlY2sgZm9yIGFu
eSBjaGFuZ2UgaW4gdGhlIGVycm9yIHN0YXR1cw0KOwl3b3JkIGFuZCBxdWV1
ZSB0aGUgZXJyb3IgbG9nZ2VyIGlmIGl0IGhhcyBjaGFuZ2VkIHNpbmNlIHRo
ZSBsYXN0IHRpbWUNCjsJaXQgd2FzIHJlYWQuDQo7DQoJQ01QCUJZVEUgUFRS
IF9jdHguRUJMT0NLLkRJU0NfSEVBRC5ESVNDX01TR19UWVAsRElTQ19OT1JN
DQoJSk5aCUJORFJZCQkJOyBOb3Qgbm9ybWFsIGNvbnRyb2wgbWVzc2FnZXMN
CglNT1YJQVgsV09SRCBQVFIgX2RubGlua19idWYmTi5EQVNNX1NUQVQNCglY
T1IJRFgsRFgJCQk7IENsZWFyIHRoZSBtYXNrDQoJQ01QCUFYLDEJCQk7IFNl
dHMgQ1kgaWYgaXQncyAwDQoJU0JCCURYLDAJCQk7IE1ha2VzIERYID0gMEZG
RkZIIGlmIENZIGlzIHNldA0KCUFORAlXT1JEIFBUUiBfY3R4LkVCTE9DSy5E
SVNDX0hWUFNfVk9MVCxEWA0KCUFORAlXT1JEIFBUUiBfY3R4LkVCTE9DSy5E
SVNDX1hSQVlfRkNVUixEWA0KCU9SCUFYLEFYCQkJOyBBbnkgZXJyb3JzPw0K
CUpaCUJORFJZCQkJOyBObw0KCU9SCVdPUkQgUFRSIExBU1RfU1RBVCxBWAk7
IFNldCBuZXcgc3RhdHVzDQoJT1IJV09SRCBQVFIgX2N0eC5FTlFVRV9MT1cs
IFRBU0swQyA7IFF1ZXVlIHRoZSBlcnJvciBsb2dnZXINCjsNCjsJU2V0IHRo
ZSBib3VuZGFyeSBwb2ludGVyIGZvciB0aGUgbmV4dCBwYWNrZXQgcmVjZXB0
aW9uLiBOb3RlIHRoYXQNCjsJdGhpcyB1c2VzIGF1dG8td3JhcCBvZiB0aGUg
cmluZyBidWZmZXIuIFdlIGFyZSB1c2luZyBwYWdlIDAgb2YNCjsJdGhlIFNO
SUMgYW5kIG5vdCB0aHJvd2luZyBpdCBhd2F5IGFzIHRoZSBkb2N1bWVudGF0
aW9uIGFkdmlzZXMuDQo7DQpCTkRSWToJTU9WCUFMLEJZVEUgUFRSIE5QSyZO
CTsgQWRkcmVzcyBvZiBuZXh0IHBhY2tldA0KCURFQwlBTAkJCTsgQk5EUlkg
PSBuZXh0X3BrdCAtIDENCglBTkQJQUwsX1BNQVNLCQk7IEF1dG8gd3JhcA0K
CU1PVglEWCxETkxJTksmTi5CTkRSWQk7IEdldCBib3VuZGFyeSBwb2ludGVy
IHJlZ2lzdGVyDQoJT1VUCURYLEFMCQkJOyBTZXQgbmV3IHZhbHVlDQo7DQo7
CVJlY29yZCBhbnkgbmV3IERpc2MgUkYgTGluayBlcnJvcnMgdGhhdCBoYXZl
IGJlZW4gc2VudCBvbiB0aGUNCjsgICAgICAgZG93bmxpbmsgcGFja2V0Lg0K
Ow0KCU1PVglBTCxCWVRFIFBUUiBfZG5saW5rX2J1ZiZOLkRJU0NfTVNHX0VS
Ug0KCU1PVglBSCxBTAkJCTsgQ29weSBlcnJvciBjb3VudA0KCVNVQglBTCxC
WVRFIFBUUiBfbGFzdF9kc2MJOyBHZXQgbGFzdCBlcnJvciBjb3VudA0KCU1P
VglCWVRFIFBUUiBfbGFzdF9kc2MsQUgJOyBTZXQgbmV3IHZhbHVlDQoJWE9S
CUFILEFICQkJOyBDbGVhciBoaWdoIGJ5dGUNCjsNCglNT1YJRFgsRFMJCQkJ
OyBTYXZlIHNlZ21lbnQNCglMRFMJREksRFdPUkQgUFRSIERHUk9VUDpfaGlz
dG9yeQk7IEdldCBIaXN0b3J5IHN0cnVjdHVyZQ0KCUFERAlXT1JEIFBUUiBb
REkuRElTQ0xLX0VSUk9SU0xdLEFYCTsgQWNjdW11bGF0ZSBlcnJvcnMNCglB
REMJV09SRCBQVFIgW0RJLkRJU0NMS19FUlJPUlNMXSwwCTsgUHJvcGFnYXRl
IG92ZXJmbG93DQoJTU9WCURTLERYCQkJCTsgUmVzdG9yZSBzZWdtZW50DQo7
DQpFTkRNDQo7DQo7LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0t
PS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tDQpD
T05TVAlTRUdNRU5UICBXT1JEIFBVQkxJQyAnQ09OU1QnDQpVUExOS19BRERS
CURCCSdVUExJTksnCQk7IEFkZHJlc3Mgb2YgZGF0YSBsaW5rLg0KRE5MTktf
QUREUglEQgknRE5MSU5LJwkJOyBBZGRyZXNzIG9mIGRhdGEgbGluay4NClJG
X01PRFVMRQlEQgkncmZsaW5rJywwCQk7IE5hbWUgb2YgbW9kdWxlDQpLRVlf
SU5ERVgJREIJKEtFWV9MRU4gKiAwKQkJOyBUYWJsZSBvZiBrZXkgaW5kZXgg
dmFsdWVzDQoJCURCCShLRVlfTEVOICogMSkNCgkJREIJKEtFWV9MRU4gKiAy
KQ0KCQlEQgkoS0VZX0xFTiAqIDMpDQoJCURCCShLRVlfTEVOICogNCkNCgkJ
REIJKEtFWV9MRU4gKiA1KQ0KCQlEQgkoS0VZX0xFTiAqIDYpDQoJCURCCShL
RVlfTEVOICogNykNCkNPTlNUCUVORFMNCjstPS09LT0tPS09LT0tPS09LT0t
PS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09
LT0tPS09LT0tPS0NCjsNCjsJCU5hbWUJCUFsaWduCQlTaXplDQo7DQpfQlNT
CVNFR01FTlQgIFdPUkQgUFVCTElDICdCU1MnDQpDT01NCU5FQVIJX2N0eAkJ
OkJZVEUJOlRZUEUoQ09OVEVYVCkJOyBJbiBHQkxEQVRBLkMNCkNPTU0JTkVB
UglfZGFzZAkJOkJZVEUJOlRZUEUoREFTREFUQSkJOyBJbiBHQkxEQVRBLkMN
CkNPTU0JTkVBUglfcG9zX2RhdGEJOkJZVEUJOlRZUEUoUE9TKQk7IEluIEdC
TERBVEEuQw0KQ09NTQlORUFSCV9oaXN0b3J5CTpCWVRFCTo0CQk7IEluIEdC
TERBVEEuQyBmaWxlDQpDT01NCU5FQVIJX2NobW9uMAkJOkJZVEUJOjEJOyBJ
dCdzIGluIEdCTERBVEEuQw0KQ09NTQlORUFSCV9jaG1vbjEJCTpCWVRFCTox
CTsgSXQncyBpbiBHQkxEQVRBLkMNCkNPTU0JTkVBUglfdHhtaXRzCQk6QllU
RQk6NAk7IEl0J3MgaGVyZSBvbmx5DQpDT01NCU5FQVIJX3JlY3ZzMAkJOkJZ
VEUJOjQJOyBJdCdzIGhlcmUgb25seQ0KQ09NTQlORUFSCV9yZWN2czEJCTpC
WVRFCTo0CTsgSXQncyBoZXJlIG9ubHkNCkNPTU0JTkVBUglfZGxpbmtfbGVu
MAk6QllURQk6Mgk7IEl0J3MgaGVyZSBvbmx5DQpDT01NCU5FQVIJX2RsaW5r
X2xlbjEJOkJZVEUJOjIJOyBJdCdzIGhlcmUgb25seQ0KQ09NTQlORUFSCV9w
b3NfbGFzdAk6QllURQk6Mgk7IEl0J3MgaGVyZSBvbmx5DQpDT01NCU5FQVIJ
X2xhc3RfZHNjCTpCWVRFCToxCTsgSXQncyBoZXJlIG9ubHkNCkNPTU0JTkVB
UglfZG5saW5rX2J1ZjAJOkJZVEUJOk1BWEFMTwk7IEl0J3MgaGVyZSBvbmx5
DQpDT01NCU5FQVIJX2RubGlua19idWYxCTpCWVRFCTpNQVhBTE8JOyBJdCdz
IGhlcmUgb25seQ0KX0JTUwlFTkRTDQo7LT0tPS09LT0tPS09LT0tPS09LT0t
PS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09
LT0tPS09LT0tDQo7CVRoaXMgaXMgdGhlIGRhdGEgdGhhdCB3ZSBkb24ndCB3
YW50IGFueSBvdGhlciBwcm9jZWR1cmUgdG8gc2VlLg0KOw0KX0RBVEEJU0VH
TUVOVCAgV09SRCBQVUJMSUMgJ0RBVEEnDQpPTERfUkZfSU5UCURECTAJCQk7
IE9sZCBSRiBsaW5rIGludGVycnVwdA0KTEFTVF9TVEFUCURXCTAJCQk7IExh
c3QgRGlzYyBTdWJzeXN0ZW0gc3RhdHVzDQpDVVJQSwkJRFcJMAkJCTsgQ3Vy
cmVudCBwYWNrZXQNCk9MRF9SRl9NQVNLCURCCTAJCQk7IE9sZCBjb250cm9s
bGVyIG1hc2sNCkxOS19GQUlMCURCCTAJCQk7IFJGL0V0aGVybmV0IGxpbmsg
ZmFpbHVyZQ0KTlBLMAkJREIJMAkJCTsgTmV4dCBwYWNrZXQgYWRkcmVzcyBT
TklDIDANCk5QSzEJCURCCTAJCQk7IE5leHQgcGFja2V0IGFkZHJlc3MgU05J
QyAxDQpfREFUQQlFTkRTDQo7LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0t
PS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09
LT0tDQo7DQpVVElMSVRZX1RFWFQJU0VHTUVOVAlXT1JEIFBVQkxJQwknQ09E
RScNCgkJQVNTVU1FIENTOlVUSUxJVFlfVEVYVA0KOw0KOwlUaGlzIGdldHMg
dGhlIGN1cnJlbnQgZGlzayBlcnJvciBzdGF0dXMgd2l0aG91dCBsb3Npbmcg
YW55IGVycm9yDQo7CWJpdHMgdGhhdCBtYXkgY2hhbmdlIGR1cmluZyBhbiBp
bnRlcnJ1cHQuDQo7DQpfZ2V0X2Rpc2NfZXJyX2NsciBQUk9DCUZBUg0KCVBV
U0gJRFMJCQk7IFNhdmUgc2VnbWVudA0KCU1PVglBWCxER1JPVVAJCTsgRGF0
YSBHUk9VUA0KCU1PVglEUyxBWAkJCTsgSW50byBkYXRhIHNlZ21lbnQNCglY
T1IJQVgsQVgJCQk7IEdldCB6ZXJvDQoJWENIRwlBWCxXT1JEIFBUUiBMQVNU
X1NUQVQJOyBHZXQgc3RhdHVzDQoJUE9QCURTCQkJOyBSZXN0b3JlIHNlZ21l
bnQNCglSRVQNCl9nZXRfZGlzY19lcnJfY2xyIEVORFANCjsNCjstPS09LT0t
PS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09
LT0tPS09LT0tPS09LT0tPS09LT0tPS0NCjsNCjsJVGhpcyBnZXRzIHRoZSBj
dXJyZW50IGRpc2sgZXJyb3Igc3RhdHVzIGFuZCBkb2VzIG5vdCByZXNldCB0
aGUNCjsJc3RhdGlzIGJpdHMuDQo7DQpfZ2V0X2Rpc2NfZXJyCVBST0MJRkFS
DQoJUFVTSAlEUwkJCTsgU2F2ZSBzZWdtZW50DQoJTU9WCUFYLERHUk9VUAkJ
OyBEYXRhIEdST1VQDQoJTU9WCURTLEFYCQkJOyBJbnRvIGRhdGEgc2VnbWVu
dA0KCU1PVglBWCxXT1JEIFBUUiBMQVNUX1NUQVQJOyBHZXQgbGFzdCBzdGF0
dXMgYml0cw0KCVBPUAlEUwkJCTsgUmVzdG9yZSBzZWdtZW50DQoJUkVUDQpf
Z2V0X2Rpc2NfZXJyCUVORFANCjsNCjstPS09LT0tPS09LT0tPS09LT0tPS09
LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0t
PS09LT0tPS0NCjsNCl9maWZvX2VvdCBQUk9DCUZBUg0KCU1PVglEWCwyMzRI
DQoJT1VUCURYLEFMDQoJUkVUDQpfZmlmb19lb3QgRU5EUA0KOw0KOy09LT0t
PS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09
LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQ0KOwlUaGlzIGNoZWNrcyBpZiB0
aGUgYm9hcmQgaXMgcHJlc2VudCBhbmQgaW5zdGFsbGVkLg0KOw0KX2Noa19j
b21fYnJkCVBST0MJRkFSDQoJU0VUVVANCglYT1IJQUgsQUgJCQkJOyBDbGVh
ciBoaWdoIGJ5dGUNCglNT1YJQUwsQllURSBQVFIgT0xEX1JGX01BU0sJCTsg
R2V0IGNvbW11bmljYXRpb25zIG1hc2sNCglSRVNUT1JFDQpfY2hrX2NvbV9i
cmQJRU5EUA0KOw0KOy09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09
LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQ0K
OwlUaGlzIHN0YXJ0cyB0aGUgUkYgZGF0YSBsaW5rLg0KOw0KX3N0YXJ0X3Jm
bGluawlQUk9DCUZBUg0KCVNFVFVQDQoJT1IJQVgsMEZGRkZICQkJOyBBc3N1
bWUgYmFkDQoJQ01QCUJZVEUgUFRSIE9MRF9SRl9NQVNLLEZBTFNFCTsgU2Vl
IGlmIGl0IHdhcyBwYXRjaGVkDQoJSk5aCU5QVENICQkJCTsgV2FzIGFscmVh
ZHkgcGF0Y2hlZA0KCU1PVglCWVRFIFBUUiBMTktfRkFJTCxGQUxTRQkJOyBT
ZXQgZGVmYXVsdCBmbGFnLg0KCU1PVglEWCxCQVNFLklERU5UCQkJOyBTZWUg
aWYgYm9hcmQgaXMgaW5zdGFsbGVkDQoJSU4JQUwsRFgJCQkJOyBHZXQgaW50
ZXJydXB0IHN0YXR1cw0KCUFORAlBTCwwMDAwMTExMUIJCQk7IE1hc2sgdW51
c2VkIGJpdHMNCglDTVAJQUwsMDAwMDEwMTBCCQkJOyBDaGVjayBpZiBhbnli
b2R5IGhvbWUNCglKTloJTlBUQ0gJCQkJOyBObyBib2FyZCBpbnN0YWxsZWQN
CjsNCjsJU2V0IHVwIEV0aGVybmV0IHRyYW5zbWl0IGJsb2NrIGZvciB0aGUg
VXBsaW5rLiBXZSBuZWVkIHNvdXJjZQ0KOwlhZGRyZXNzLCBkZXN0aW5hdGlv
biBhZGRyZXNzLCBhbmQgYnl0ZSBjb3VudC4NCjsNCglNT1YJQVgsMEZGRkZI
CQkJOyBEZXN0aW5hdGlvbiBhZGRyZXNzDQoJTU9WCURJLE9GRlNFVCBER1JP
VVA6X2N0eAkJOyBJbiBIT1NULkMNCglBREQJREksRUJMT0NLCQkJOyBPZmZz
ZXQgb2YgZXRoZXJuZXQgYmxvY2sNCglNT1YJQ1gsKEFERF9MRU4gU0hSIDEp
CQk7IFdvcmRzIGluIGFkZHJlc3MNCglSRVAJU1RPU1cJCQkJOyBTdG9yZSBk
ZXN0aW5hdGlvbiBhZGRyZXNzDQo7DQoJTU9WCVNJLE9GRlNFVCBER1JPVVA6
VVBMTktfQUREUgk7IEdldCBvZmZzZXQNCglNT1YJQ1gsKEFERF9MRU4gU0hS
IDEpCQk7IFdvcmRzIGluIGFkZHJlc3MNCglSRVAJTU9WU1cJCQkJOyBTdG9y
ZSBkZXN0aW5hdGlvbiBhZGRyZXNzDQoJCQkJCQk7IFNldCBsZW5ndGggdG8g
dHJhbnNtaXQNCglNT1YJV09SRCBQVFIgW0RJXSwoRVRITEVOLURBVEFfU1RB
UlQpDQo7DQo7CU5vdyBwYXRjaCB0aGUgaW50ZXJydXB0IHZlY3Rvci4NCjsN
CglQQVRDSAlJTlRfVVNFLCBPTERfUkZfTUFTSywgT0xEX1JGX0lOVCwgUkZf
SVNSDQoJQ0FMTAlTRVRfTE5LCQkJCTsgU2V0IHVwIHRoZSBjb250cm9sbGVy
DQoJSU5UCUlOVF9VU0UJCQkJOyBFeGVjdXRlIHRoZSBpbnRlcnJ1cHQNCglN
T1YJQllURSBQVFIgTlBLMCxfTkVYVF9QS1QJCTsgU2V0IHRoZSBuZXh0IHBh
Y2tldCBwb2ludGVyDQoJTU9WCUJZVEUgUFRSIE5QSzEsX05FWFRfUEtUCQk7
IFNldCB0aGUgbmV4dCBwYWNrZXQgcG9pbnRlcg0KCVhPUglBWCxBWAkJCQk7
IFNob3cgZ29vZA0KTlBUQ0g6CVJFU1RPUkUNCl9zdGFydF9yZmxpbmsJRU5E
UA0KOy09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0t
PS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQ0KOwlUaGlzIHN0
b3BzIHRoZSBSRiBEYXRhIGxpbmsgKHF1aWV0bHkpLCB3aXRob3V0IGNyYXNo
aW5nIHRoZSBzeXN0ZW0NCjsJZXZlbiB3aGVuIGhpZ2gtc3BlZWQgZGF0YSBh
cmUgc3RpbGwgYmVpbmcgcmVjZWl2ZWQuDQo7DQpfc3RvcF9yZmxpbmsJUFJP
QwlGQVINCglTRVRVUA0KCU9SCUFYLDBGRkZGSAkJCTsgQXNzdW1lIGJhZA0K
CUNNUAlCWVRFIFBUUiBPTERfUkZfTUFTSyxGQUxTRQk7IFNlZSBpZiBpdCB3
YXMgcGF0Y2hlZA0KCUpaCU5QQVRDSAkJCQk7IE5ldmVyIHBhdGNoZWQNCglN
T1YJQlgsQkFTRQkJCQk7IEdldCBiYXNlIGFkZHJlc3MNCglPVVRfU05DCVRX
UkRCLCA8Q1JfUkQyIE9SIENSX1NUUD4JOyBQYWdlDQoJT1VUX1NOQwlXQ0NB
LCAgPENDX1JTRVQ+CQk7IFJlc2V0IHRoZSBjaGlwDQoJTU9WCUNYLDEyMDAJ
CQkJOyBXYWl0IGZvciA1MCB1UyAoYWJvdXQpDQoJTE9PUAkkCQkJCTsgV2Fp
dCBoZXJlDQoJT1VUX1NOQwlXQ0NBLCAgPENDX1NUT1A+CQk7IFJlc2V0IHRo
ZSBjaGlwDQoJVU5QQVRDSAlJTlRfVVNFLCBPTERfUkZfTUFTSywgT0xEX1JG
X0lOVA0KCU1PVglCWVRFIFBUUiBPTERfUkZfTUFTSyxGQUxTRQk7IENsZWFy
IG9sZCBjb250cm9sbGVyIG1hc2sNCglYT1IJQVgsQVgJCQkJOyBTaG93IGdv
b2QNCk5QQVRDSDoJUkVTVE9SRQ0KX3N0b3BfcmZsaW5rCUVORFANCjstPS09
LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0t
PS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0NCjsJVGhpcyB0cmlnZ2VycyB0
aGUgdHJhbnNtaXR0ZXIgZm9yIHRlc3RpbmcuIE5vdGUgdGhhdCB0aGlzIG11
c3QgTk9UDQo7CWJlIHRyaWdnZXJlZCBkdXJpbmcgYW4gaW50ZXJuYWwgRE1B
IHJvdXRpbmUgb3IgdGhlIE5JQyB3aWxsIGphbQ0KOwl0aGUgUEMgYnVzLiBU
aGUgY2FsbGluZyByb3V0aW5lIG11c3QgaGFuZGxlIHN5bmNocm9uaXphdGlv
bi4NCjsNCl90cmlnZ2VyIFBST0MJRkFSDQoJUFVTSAlEWA0KCU1PVglEWCxC
QVNFLk1UQ0EJCQk7IEdldCBtYW51YWwgdHJpZ2dlciBhcmVhDQoJT1VUCURY
LEFMCQkJCTsgU2VuZCBhbnl0aGluZyB0byBwb3J0DQoJUE9QCURYDQoJUkVU
DQpfdHJpZ2dlciBFTkRQDQo7DQo7LT0tPS09LT0tPS09LT0tPS09LT0tPS09
LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0t
PS09LT0tDQo7CVRoaXMgcHJvY2VkdXJlIHNldHMgdXAgdGhlIEV0aGVybmV0
IENvbnRyb2xsZXJzIGZvciB0aGUgUkYgTGluay4gVXBvbg0KOwllbnRyeSwg
QlggY29udGFpbnMgdGhlIGJhc2UgYWRkcmVzcyBvZiB0aGUgY29udHJvbGxl
ci4gSWYgYW4gZXJyb3INCjsJb2NjdXJzLCByZXR1cm4gd2l0aCB0aGUgYmFz
ZSBhZGRyZXNzIG9mIHRoZSBwb3J0IGNhdXNpbmcgdGhlIGVycm9yLg0KOwlP
dGhlcndpc2UsIHJldHVybiBaRiA9IEFYID0gMC4NCjsNClNFVF9MTksJUFJP
QwlORUFSDQoJTU9WCUJYLEJBU0UJCQkJOyBHZXQgYmFzZSBhZGRyZXNzDQoJ
T1VUX1NOQwlUV1JEQiwgPENSX1JEMiBPUiBDUl9TVFA+CTsgUGFnZQ0KCU9V
VF9TTkMJV0NDQSwgIDxDQ19SU0VUPgkJOyBSZXNldCB0aGUgY2hpcA0KCU1P
VglDWCwxMjAwCQkJCTsgV2FpdCBmb3IgNTAgdVMgKGFib3V0KQ0KCUxPT1AJ
JAkJCQk7IFdhaXQgaGVyZQ0KCU9VVF9TTkMJV0NDQSwgPENDX1VMTksgT1Ig
Q0NfUEVSTD4JOyBEZXZpY2UgdG8gZXRoZXJuZXQgY2hpcA0KCU9VVF9TTkMJ
TVRDQSwgMAkJCQk7IFR1cm4gb24gdGhlIGNoaXANCjsNCglNT1YJRFgsQkFT
RS5TU0EJCQk7IFN5c3RlbSBzdGF0dXMgYXJlYQ0KCVhPUglDWCxDWAkJCQk7
IExvbmcgd2FpdCBmb3Igc3RhcnR1cA0KCU1PVglCWCwxMEgJCQkJOyBOdW1i
ZXIgb2YgdHJpZXMNCkdFVF9TUzoJSU4JQUwsRFgJCQkJOyBHZXQgc3lzdGVt
IHN0YXR1cw0KCUFORAlBTCxTU19TUkRZCQkJOyBDaGVjayBmb3IgcGVyaGlw
aGVyYWxzIHJlYWR5DQoJSk5aCUFXQUtFCQkJCTsgU3lzdGVtIGJvYXJkcyBh
cmUgYWxpdmUNCglMT09QCUdFVF9TUwkJCQk7IE5vdCBzZXQgeWV0DQoJREVD
CUJYCQkJCTsgVHJ5IGFnYWluDQoJSk5aCUdFVF9TUwkJCQk7IENvbnRpbnVl
DQo7DQo7CVNldCB1cCB0aGUgdXBsaW5rIGRldmljZS4gU2V0IGZvciBpbnRl
cnJ1cHQgb24gdHJhbnNtaXQgYW5kIGRhdGEgaW4NCjsJdGhlIEJZVEUgbW9k
ZS4NCjsNCkFXQUtFOglNT1YJQllURSBQVFIgTlBLMCxfTkVYVF9QS1QJCTsg
U2V0IHRoZSBuZXh0IHBhY2tldCBwb2ludGVyDQoJTU9WCUJZVEUgUFRSIE5Q
SzEsX05FWFRfUEtUCQk7IFNldCB0aGUgbmV4dCBwYWNrZXQgcG9pbnRlcg0K
CU1PVglCWCxVUExJTksJCQk7IEdldCB1cGxpbmsgYWRkcmVzcw0KCU1PVglB
TCxEQ19CWVQgT1IgRENfTFMJCTsgT25lIHdvcmQgd2lkZSwgQllURSBtb2Rl
DQoJQ0FMTAlTRVRfTklDCQkJCTsgSW5pdGlhbGl6ZSB0aGUgTklDDQoJT1VU
X1NOQwlJTVIsIElNX1hNSVQJCQk7IEludGVycnVwdCBtYXNrIHJlZ2lzdGVy
Lg0KOw0KOwlTZXQgdXAgdGhlIGZpcnN0IGRvd25saW5rIGRldmljZS4gU2V0
IGZvciBpbnRlcnJ1cHQgb24gcmVjZWl2ZSwNCjsJd2l0aCBkYXRhIGluIFdP
UkQgbW9kZS4NCjsNCglNT1YJQlgsRE5MSU5LMAkJCTsgR2V0IGZpcnN0IGRv
d25saW5rIGNvbnRyLg0KCU1PVglBTCxEQ19XVFMgT1IgRENfTFMgT1IgV1JE
Mgk7IERvd25saW5rcyBhcmUgaW4gV09SRCBtb2RlDQoJQ0FMTAlTRVRfTklD
CQkJCTsgSW5pdGlhbGl6ZSB0aGUgTklDDQoJT1VUX1NOQwlJTVIsIElNX1JF
Q1YJCQk7IEludGVycnVwdCBtYXNrIHJlZ2lzdGVyLg0KOw0KOwlTZXQgdXAg
dGhlIHNlY29uZCBkb3dubGluayBkZXZpY2UuICBTZXQgZm9yIGludGVycnVw
dCBvbiByZWNlaXZlLA0KOwl3aXRoIGRhdGEgaW4gV09SRCBtb2RlLg0KOw0K
CU1PVglCWCxETkxJTksxCQkJOyBHZXQgc2Vjb25kIGRvd25saW5rIGNvbnRy
Lg0KCU1PVglBTCxEQ19XVFMgT1IgRENfTFMgT1IgV1JEMgk7IERvd25saW5r
cyBhcmUgaW4gV09SRCBtb2RlDQoJQ0FMTAlTRVRfTklDCQkJCTsgU2V0IHNl
Y29uZCBjb250cm9sbGVyDQoJT1VUX1NOQwlJTVIsIElNX1JFQ1YJCQk7IElu
dGVycnVwdCBtYXNrIHJlZ2lzdGVyLg0KOw0KOwlTZXQgdGhlIGJvYXJkIHNv
IGl0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgdGhlIHBvc2l0aW9uIHN5c3RlbS4N
CjsNCglNT1YJQVgsRVRITEVOCQkJOyBOb3Qgb2theSwgc2V0IG1pbmltdW0N
CglNT1YJRFgsVVBMSU5LLlRCQ1IwCQkJOyBUcmFuc21pdCBieXRlIGNvdW50
DQoJT1VUCURYLEFYCQkJCTsgU2V0IHRoZSBieXRlIGNvdW50DQoJRkxVU0gJ
CQkJCTsgQ2hpcC10by1jaGlwIHNlbGVjdCB0aW1lIGJ1Zw0KCU1PVglCWCxC
QVNFCQkJCTsgR2V0IGJhc2UgYWRkcmVzcw0KCU9VVF9TTkMJVFdSREIsIFNO
RF9BTEwJCQk7IFNldCB1cCBmb3IgYXV0byBzZW5kDQoJWE9SCUFYLEFYCQkJ
CTsgU2hvdyBldmVyeXRoaW5nIHdlbnQgb2theQ0KCVJFVA0KOw0KOy09LT0t
PS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09
LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQ0KOwlQcm9ncmFtIHRoZSBOZXR3
b3JrIEludGVyZmFjZSBDb250cm9sbGVyLiBVcG9uIGVudHJ5LCBiYXNlIHBv
cnQNCjsJYWRkcmVzcyBpcyBpbiBCWCwgYW5kIGRhdGEgY29uZmlndXJhdGlv
biB2YWx1ZSBpcyBpbiBBTC4NCjsNClNFVF9OSUMJUFJPQwlORUFSDQoJUFVT
SAlBWAkJCTsgU2F2ZSBkYXRhIGNvbmZpZ3VyYXRpb24gdmFsdWUNCglPVVRf
U05DCUlNUiwgMDBICQk7IFR1cm4gb2ZmIGRldmljZSBpbnRlcnJ1cHRzLg0K
CU9VVF9TTkMJSVNSLCAwRkZICQk7IENsZWFyIGludGVycnVwdCBzdGF0dXMg
cmVnaXN0ZXINCglPVVRfU05DCUNNRCwgPENSX1NUUD4JCTsgUGFnZSAwLCBT
VE9QIHRoZSBjaGlwDQoJT1VUX1NOQyBSQkNSMCwgMAkJOyBDbGVhciB0aGUg
cmVtb3RlIGJ5dGUtY291bnQNCglPVVRfU05DIFJCQ1IxLCAwCQk7IEhpZ2gg
Ynl0ZQ0KV1RfUlNUOglJTl9TTkMJSVNSCQkJOyBHZXQgaW50ZXJydXB0IHN0
YXR1cw0KCUFORAlBTCxJU19SU1QJCTsgQ2hlY2sgZm9yIHJlc2V0IHZhbHVl
DQoJSloJV1RfUlNUCQkJOyBXYWl0IDxmb3JldmVyPiBmb3IgcmVzZXQNCglQ
T1AJQVgJCQk7IFJlc3RvcmUgZGF0YSBjb25maWd1cmF0aW9uIHZhbHVlDQo7
DQoJTU9WCURYLEJYCQkJOyBHZXQgYmFzZSBhZGRyZXNzDQoJQURECURYLERD
UgkJCTsgT2Zmc2V0IHRvIGRhdGEgY29uZmlnLiByZWdpc3Rlcg0KCU9VVAlE
WCxBTAkJCTsgU2V0IGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXINCglPVVRfU05D
IFJCQ1IwLCAwCQk7IENsZWFyIHRoZSByZW1vdGUgYnl0ZS1jb3VudA0KCU9V
VF9TTkMgUkJDUjEsIDAJCTsgSGlnaCBieXRlDQoJT1VUX1NOQwlSQ1JSLCBS
Q19BQgkJOyBSZWNlaXZlIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIuDQoJRkxV
U0gJCQkJOyBDaGlwLXRvLWNoaXAgc2VsZWN0IHRpbWUgYnVnDQoJT1VUX1NO
QwlUQ1IsIFRDX0xCMAkJOyBQbGFjZSB0aGUgTklDIGluIExvb3BiYWNrIG1v
ZGUuDQoJRkxVU0gJCQkJOyBDaGlwLXRvLWNoaXAgc2VsZWN0IHRpbWUgYnVn
DQo7DQo7CUluaXRpYWxpemUgdGhlIFJlY2VpdmUgQnVmZmVyIHJpbmc7IEJO
RFJZLCBQU1RBUlQsIFBTVE9QLg0KOw0KCU9VVF9TTkMJUFNUQVJULCBfUFNU
QVJUCQk7IFBTVEFSVCB2YWx1ZQ0KCU9VVF9TTkMJQk5EUlksIF9CTkRSWQkJ
OyBCb3VuZGFyeSBwb2ludGVyDQoJT1VUX1NOQwlQU1RPUCwgX1BTVE9QCQk7
IFBhZ2Ugc3RvcCB2YWx1ZQ0KCU9VVF9TTkMJQ01ELCBDUl9QQUcxCQk7IENv
bW1hbmQgcmVnaXN0ZXIgdG8gcGFnZSAxDQoJRkxVU0gJCQkJOyBDaGlwLXRv
LWNoaXAgc2VsZWN0IHRpbWUgYnVnDQo7DQo7CVNldCBwaHlzaWNhbCBhZGRy
ZXNzIHJlZ2lzdGVycw0KOw0KCVBVU0gJRFMJCQk7IFNhdmUgc2VnbWVudA0K
CU1PVglBWCxTRUcgVVBMTktfQUREUgk7IE1ha2UgYWRkcmVzc2FibGUNCglM
RUEJU0ksVVBMTktfQUREUgkJOyBQb2ludCB0byB1cGxpbmsgYWRkcmVzcw0K
CU1PVglEUyxBWAkJCTsgRFM6U0kgcG9pbnRzIHRvIHBoeXNpY2FsIGFkZHJl
c3MNCglNT1YJRFgsQlgJCQk7IEdldCBiYXNlIHBvcnQNCglBREQJRFgsUDFf
UEFSMAkJOyBQaHlzaWNhbCBhZGRyZXNzIHBvcnQgb2Zmc2V0DQoJTU9WCUNY
LEFERF9MRU4JCTsgQnl0ZXMgdG8gd3JpdGUNClNfUEhZOglMT0RTQgkJCQk7
IEdldCBwaHlzaWNhbCBhZGRyZXNzDQoJT1VUCURYLEFMCQkJOyBTZXQgcG9y
dA0KCUlOQwlEWAkJCTsgUmVhZHkgbmV4dCBwb3J0DQoJTE9PUAlTX1BIWQkJ
CTsgRG8gYWxsIGJ5dGVzDQoJUE9QCURTCQkJOyBSZXN0b3JlIHNlZ21lbnQN
CjsNCjsJU2V0IG11bHRpY2FzdCBhZGRyZXNzIHJlZ2lzdGVycy4gTXVsdGlj
YXN0IGFkZHJlc3NlcyBhcmUgbm90IHVzZWQNCjsJc28gdGhleSBhcmUgbWFz
a2VkIE9GRiAoc2V0IHRvIHplcm8pLg0KOw0KCU1PVglEWCxCWAkJCTsgR2V0
IGJhc2UgcG9ydA0KCUFERAlEWCxQMV9NQVIwCQk7IE11bHRpY2FzdCBhZGRy
ZXNzIHBvcnQgb2Zmc2V0DQoJTU9WCUNYLEFERF9MRU4JCTsgQnl0ZXMgdG8g
d3JpdGUNCglYT1IJQUwsQUwJCQk7IENsZWFyIEFMDQpTX01DQToJT1VUCURY
LEFMCQkJOyBTZXQgcG9ydA0KCUlOQwlEWAkJCTsgUmVhZHkgbmV4dCBwb3J0
DQoJTE9PUAlTX01DQQkJCTsgRG8gYWxsIGJ5dGVzDQo7DQoJT1VUX1NOQwlQ
MV9DVVJSLCBfQ1VSUgkJOyBTZXQgdG8gY3VycmVudCBwYWdlDQoJRkxVU0gJ
CQkJOyBDaGlwLXRvLWNoaXAgc2VsZWN0IHRpbWUgYnVnDQoJT1VUX1NOQwlD
TUQsIENSX1NUUlQJCTsgUHV0IHRoZSBOSUMgaW4gdGhlIFNUQVJUIG1vZGUu
DQoJRkxVU0gJCQkJOyBDaGlwLXRvLWNoaXAgc2VsZWN0IHRpbWUgYnVnDQoJ
T1VUX1NOQwlUQ1IsIFRDX05STUwJCTsgU2V0IHVwIHRoZSBub3JtYWwgdHJh
bnNtaXQgbW9kZS4NCglGTFVTSAkJCQk7IENoaXAtdG8tY2hpcCBzZWxlY3Qg
dGltZSBidWcNCglPVVRfU05DCVRQU1IsIDAJCQk7IFRyYW5zbWl0IHBhZ2Ug
c3RhcnQgdG8gcGFnZSAwDQoJRkxVU0gJCQkJOyBDaGlwLXRvLWNoaXAgc2Vs
ZWN0IHRpbWUgYnVnDQoJT1VUX1NOQwlJU1IsIDBGRkgJCTsgQ2xlYXIgaW50
ZXJydXB0IHN0YXR1cw0KOw0KOwlDbGVhciB0aGUgZXJyb3IgdGFsbHkgY291
bnRlcnMgYnkgcmVhZGluZyB0aGVtIGFuZCBkaXNjYXJkaW5nIHRoZQ0KOwlk
YXRhLg0KOw0KCUlOX1NOQwlDTlRSMAkJCTsgRnJhbWluZyBlcnJvcnMgY291
bnRlcg0KCUlOX1NOQwlDTlRSMQkJCTsgQ1JDIGVycm9ycyBjb3VudGVyDQoJ
SU5fU05DCUNOVFIyCQkJOyBNaXNzZWQgcGFja2V0IGVycm9ycyBjb3VudGVy
DQoJSU5fU05DCU5DUgkJCTsgTnVtYmVyIG9mIGNvbGxpc2lvbnMNCglJTl9T
TkMJVFNSCQkJOyBUcmFuc21pdCBzdGF0dXMgcmVnaXN0ZXINCglSRVQNClNF
VF9OSUMJRU5EUA0KU0VUX0xOSwlFTkRQDQo7DQo7LT0tPS09LT0tPS09LT0t
PS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09
LT0tPS09LT0tPS09LT0tDQo7LT0tPS09LT0tICAgU3RhcnQgb2YgdGhlIHdv
cmxkJ3MgbG9uZ2VzdCBpbnRlcnJ1cHQgc2VydmljZSByb3V0aW5lID0tPS09
LT0tDQo7LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0t
PS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tDQo7CVRoaXMg
aGFuZGxlcyB0aGUgdHJhbnNtaXQgaW50ZXJydXB0IGZyb20gY2hhbm5lbCAw
DQo7DQpET19UWDAJUFJPQwlORUFSDQoJTU9WCURYLFVQTElOSy5JU1IJCTsg
R2V0IHVwbGluayBpbnRlcnJ1cHQgc3RhdHVzDQoJSU4JQUwsRFgJCQk7IEdl
dCBzdGF0dXMNCglPVVQJRFgsQUwJCQk7IENsZWFyIHN0YXR1cyByZWdpc3Rl
cg0KCVRFU1QJQUwsSVNfUFRYCQk7IFdhcyBwYWNrZXQgdHJhbnNtaXR0ZWQ/
DQoJSk5aCVRYMAkJCTsgV2FzIHRyYW5zbWl0dGVkDQoJT1IJQllURSBQVFIg
TE5LX0ZBSUwsIFVMJEZBSUwwCTsgVGhlIGZpcnN0IHVwIGxpbmsNCglQVVNI
CURTDQoJTERTCURJLERXT1JEIFBUUiBER1JPVVA6X2hpc3RvcnkJOyBHZXQg
SGlzdG9yeSBkYXRhIHN0cnVjdHVyZQ0KCUFERAlXT1JEIFBUUiBbREkuVVBM
TktfRVJST1JTTF0sMQk7IEFjY3VtdWxhdGUgZXJyb3JzDQoJQURDCVdPUkQg
UFRSIFtESS5VUExOS19FUlJPUlNIXSwwCTsgUHJvcGFnYXRlIG92ZXJmbG93
DQoJUE9QCURTDQoJUkVUDQo7DQpUWDA6CUFERAlXT1JEIFBUUiBfdHhtaXRz
LkxXLkxPLDEJOyBJbmNyZW1lbnQgdHJhbnNtaXQgY291bnQNCglBREMJV09S
RCBQVFIgX3R4bWl0cy5MVy5ISSwwCTsgVGFrZSBjYXJlIG9mIG92ZXJmbG93
DQo7DQo7LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0t
PS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tDQo7DQo7CUZp
bGwgdGhlIFNOSUMgYnVmZmVyIHdpdGggdGhlIGRhdGEgdG8gYmUgc2VudCBv
biB0aGUgdXBsaW5rLg0KOw0KCU1PVglTSSxPRkZTRVQgREdST1VQOl9jdHgu
RUJMT0NLCTsgU3RhcnQgb2YgdGhlIGRhdGEgdG8gc2VuZA0KCU1PVglDWCxX
T1JEIFBUUiBbU0kuRElTQ19MRU5dCTsgTGVuZ3RoIG9mIGRhdGEgdG8gc2Vu
ZA0KCUFERAlDWCxEQVRBX1NUQVJUCQkJOyBFdGhlcm5ldCBvdmVyaGVhZA0K
CUlOQwlDWAkJCQk7IEluIGNhc2UgYW4gb2RkIGNvdW50DQoJQU5ECUNYLDBG
RkZFSAkJCTsgTWFrZSBldmVuDQoJT1IJQ1gsRVRITEVOCQkJOyBNYWtlIHN1
cmUgaXQncyBsb25nIGVub3VnaA0KCU1PVglBWCxDWAkJCQk7IEdldCBieXRl
IGNvdW50DQoJTU9WCURYLFVQTElOSy5UQkNSMAkJCTsgVHJhbnNtaXQgYnl0
ZSBjb3VudA0KCU9VVAlEWCxBWAkJCQk7IFNldCB0aGUgYnl0ZSBjb3VudA0K
CUZMVVNICQkJCQk7IENoaXAtdG8tY2hpcCBzZWxlY3QgdGltZSBidWcNCjsN
CglJTkMJQVgJCQkJOyBQcm9ncmFtIGZvciBvbmUgbW9yZQ0KCU1PVglEWCxV
UExJTksuUkJDUjAJCQk7IFJlbW90ZSBieXRlIGNvdW50IHJlZ2lzdGVyDQoJ
T1VUCURYLEFYCQkJCTsgU2V0IHRoZSBieXRlIGNvdW50DQoJRkxVU0gJCQkJ
CTsgQ2hpcC10by1jaGlwIHNlbGVjdCB0aW1lIGJ1Zw0KOw0KCU1PVglBTCwo
Q1JfUkQwIE9SIENSX1NUQSkJCTsgR2V0IHJlbW90ZSByZWFkIGNvbW1hbmQN
CglNT1YJRFgsVVBMSU5LLkNNRAkJCTsgUGljayB1cCBjb21tYW5kIHJlZ2lz
dGVyDQoJT1VUCURYLEFMCQkJCTsgU2V0IHJlbW90ZSByZWFkDQoJRkxVU0gJ
CQkJCTsgQ2hpcC10by1jaGlwIHNlbGVjdCB0aW1lIGJ1Zw0KCU1PVglBTCwo
Q1JfUkQxIE9SIENSX1NUQSkJCTsgR2V0IHJlbW90ZSB3cml0ZSBjb21tYW5k
DQoJT1VUCURYLEFMCQkJCTsgU2V0IHJlbW90ZSB3cml0ZQ0KCUZMVVNICQkJ
CQk7IENoaXAtdG8tY2hpcCBzZWxlY3QgdGltZSBidWcNCjsNCglYT1IJQVgs
QVgJCQkJOyBDbGVhciBzdGFydCBhZGRyZXNzDQoJTU9WCURYLFVQTElOSy5S
U0FSMAkJCTsgUmVtb3RlIHN0YXJ0IGFkZHJlc3MNCglPVVQJRFgsQVgJCQkJ
OyBTZXQgdGhlIHN0YXJ0IGFkZHJlc3MNCglGTFVTSAkJCQkJOyBDaGlwLXRv
LWNoaXAgc2VsZWN0IHRpbWUgYnVnDQo7DQoJTU9WCURYLFVQREFUQQkJCTsg
RGF0YSBhZGRyZXNzDQoJUkVQCU9VVFNCCQkJCTsgRmlsbCB0aGUgTklDIGJ1
ZmZlciByaW5nDQoJQ01QCUJZVEUgUFRSIF9jdHguRUJMT0NLLkRJU0NfTVNH
X1RZUCxGQUxTRQk7IENvbnRyb2wgcmVjb3JkPw0KCUpaCUNUUkwJCQkJCTsg
Q29udHJvbCByZWNvcmQNCglNT1YJQllURSBQVFIgX2N0eC5FQkxPQ0suRElT
Q19NU0dfVFlQLFRSVUUJOyBTaG93IHRyYW5zbWl0dGVkDQpDVFJMOglSRVQN
CkRPX1RYMAlFTkRQDQo7DQo7LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0t
PS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09
LT0tDQo7CVRoaXMgaXMgdGhlIGludGVycnVwdCBzZXJ2aWNlIHJvdXRpbmUg
Zm9yIHRoZSBSRiBMaW5rIEV0aGVybmV0DQo7CWNvbnRyb2xsZXJzLiBUaGVy
ZSBhcmUgcHJlc2VudGx5IHRocmVlIHBvc3NpYmxlIHNvdXJjZXMgZm9yIHRo
ZQ0KOwlpbnRlcnJ1cHRzLCBUaGUgVXBsaW5rIChjb21tYW5kKSBjaGFubmVs
LCBhbmQgdHdvIERvd25saW5rIChEYXRhKQ0KOwljaGFubmVscy4gIFVubGVz
cyB5b3UgKCoqIFJFQUxMWSAqKikga25vdyB3aGF0IHlvdSBhcmUgZG9pbmcs
IHlvdQ0KOwlkb24ndCB3YW50IHRvIGNoYW5nZSBhbnkgb2YgdGhpcyENCjsN
ClJGX0lTUglQUk9DCUZBUg0KCVBVU0hBCQkJCTsgU2F2ZSBnZW5lcmFsIHB1
cnBvc2UgcmVnaXN0ZXJzDQoJU0FWX1JFRwlEUywgRVMJCQk7IFNhdmUgc2Vn
bWVudCByZWdpc3RlcnMgdXNlZA0KCU1PVglBWCxER1JPVVAJCTsgR2V0IGRh
dGEgR1JPVVANCglNT1YJRFMsQVgJCQk7IEludG8gZGF0YSBzZWdtZW50DQoJ
TU9WCUVTLEFYCQkJOyBJbnRvIGV4dHJhIHNlZ21lbnQNCglDTEQJCQkJOyBG
b3J3YXJkcw0KOw0KTU9SRToJTU9WCURYLEJBU0UuV0hPX0lOVAkJOyBTZWUg
d2hvIGNhbGxlZA0KCUlOCUFMLERYCQkJOyBHZXQgaW50ZXJydXB0IHN0YXR1
cw0KCUFORAlBTCwoRE5fSU5UMCBPUiBETl9JTlQxIE9SIFVQX0lOVDApDQoJ
SloJRE9ORQkJCTsgTm90aGluZyBoYXBwZW5lZCB3aGlsZSBzZXJ2aWNpbmcN
CglNT1YJQkwsQUwJCQk7IFNhdmUgd29ya2luZyBjb3B5DQoJRU5EX0lOVAk8
SU5UX1VTRT4JCTsgTUFDUk8gdG8gcmVzZXQgY29udHJvbGxlcihzKQ0KOw0K
CVRFU1QJQkwsRE5fSU5UMAkJOyBTZWUgaWYgdGhlIGZpcnN0IGRvd25saW5r
DQoJSloJTk9fUlgwCQkJOyBOb3QgdGhlIGZpcnN0IGRvd25saW5rDQoJQ0FM
TAlET19SWDAJCQk7IEhhbmRsZSB0aGUgZmlyc3QgZG93bmxpbmsNCk5PX1JY
MDoJVEVTVAlCTCxETl9JTlQxCQk7IFNlZSBpZiB0aGUgc2Vjb25kIGRvd25s
aW5rDQoJSloJTk9fUlgxCQkJOyBOb3QgdGhlIHNlY29uZCBkb3dubGluaw0K
CUNBTEwJRE9fUlgxCQkJOyBIYW5kbGUgdGhlIHNlY29uZCBkb3dubGluaw0K
Tk9fUlgxOglURVNUCUJMLFVQX0lOVDAJCTsgU2VlIGlmIHRoZSB1cGxpbmsN
CglKWglNT1JFCQkJOyBOb3QgdGhlIHVwbGluaywgY29udGludWUNCglDQUxM
CURPX1RYMAkJCTsgSGFuZGxlIHRoZSB1cGxpbmsNCglKTVAJU0hPUlQgTU9S
RQkJOyBDaGVjayBmb3IgbmV3IHN0YXR1cw0KOw0KRE9ORToJUkVTX1JFRwlE
UywgRVMJCQk7IFJlc3RvcmUgc2VnbWVudCByZWdpc3RlcnMgdXNlZA0KCVBP
UEEJCQkJOyBSZXN0b3JlIGdlbmVyYWwgcHVycG9zZSByZWdpc3RlcnMNCglJ
UkVUDQpSRl9JU1IJRU5EUA0KOw0KOy09LT0tPS09LT0tPS09LT0tPS09LT0t
PS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09
LT0tPS09LQ0KOwlUaGlzIGhhbmRsZXMgdGhlIHJlY2VpdmUgaW50ZXJydXB0
IGZyb20gY2hhbm5lbCAwLiBUaGlzIGlzIGhhbmRsZWQNCjsJdXNpbmcgdGhl
IHByZXZpb3VzbHktZGVmaW5lZCBNQUNSTy4gVW5sZXNzIHlvdSAoKiogUkVB
TExZICoqKSBrbm93DQo7CXdoYXQgeW91IGFyZSBkb2luZywgeW91IGRvbid0
IHdhbnQgdG8gY2hhbmdlIGFueSBvZiB0aGlzIQ0KOw0KRE9fUlgwCVBST0MJ
TkVBUg0KCVJFQURfTElOSyAwCQkJOyBNQUNSTw0KCVJFVA0KRE9fUlgwCUVO
RFANCjsNCjstPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0t
PS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0NCjsJVGhp
cyBoYW5kbGVzIHRoZSByZWNlaXZlIGludGVycnVwdCBmcm9tIGNoYW5uZWwg
MS4gVGhpcyBpcyBoYW5kbGVkDQo7CXVzaW5nIHRoZSBwcmV2aW91c2x5LWRl
ZmluZWQgTUFDUk8uIFVubGVzcyB5b3UgKCoqIFJFQUxMWSAqKikga25vdw0K
Owl3aGF0IHlvdSBhcmUgZG9pbmcsIHlvdSBkb24ndCB3YW50IHRvIGNoYW5n
ZSBhbnkgb2YgdGhpcyENCjsNCkRPX1JYMQlQUk9DCU5FQVINCglSRUFEX0xJ
TksgMQkJCTsgTUFDUk8NCglSRVQNCkRPX1JYMQlFTkRQDQo7DQo7LT0tPS09
LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0t
PS09LT0tPS09LT0tPS09LT0tPS09LT0tDQo7CVRoaXMgcHJvY2VkdXJlIGlz
IGNhbGxlZCBhbnkgdGltZSB0aGF0IGEgbGluayBlcnJvciBpcyBkaXNjb3Zl
cmVkLg0KOwlJdCByZWluaXRpYWxpemVzIHRoZSBkYXRhIGxpbmsgYW5kIGF0
dGVtcHRzIHRvIHJlY292ZXIgZnJvbSB0aGUNCjsJZXJyb3IuIFRoZXJlIGFy
ZSB0aHJlZSBSRiBMaW5rcyBhbmQgZm91ciBwb3NzaWJsZSBlcnJvcnMgdG8g
YmUNCjsJaGFuZGxlZC4gVGhlIGJ5dGUgTE5LX0ZBSUwgd2lsbCBjb250YWlu
IGJpdHMgdGhhdCBjb3JyZXNwb25kIHRvDQo7CXRoZSBmYWlsaW5nIGxpbmtz
LiBUaGV5IGFyZToNCjsJTE5LX0ZBSUwgREIgMDAwMDExMTFCDQo7CSAgICAg
ICAgICAgICAgICB8fHx8X19fX19fIFVQTElOSw0KOwkgICAgICAgICAgICAg
ICAgfHx8X19fX19fXyBETkxJTkswDQo7CSAgICAgICAgICAgICAgICB8fF9f
X19fX19fIEROTElOSzENCjsgICAgICAgICAgICAgICAgICAgICAgIHxfX19f
X19fX18gQWJvcnRlZCBETUENCkZJWF9MTksJUFJPQwlORUFSDQoJQ0FMTAlf
cG9zX3Jlc2V0CQkJOyBUdXJuIG9mZiBwb3NpdGlvbiB0cmlnZ2Vycw0KCVRF
U1QJQllURSBQVFIgTE5LX0ZBSUwsIFVMJEZBSUwwCTsgVGhlIHVwbGluaw0K
CUpaCU5PX1VMMAkJCQk7IE5vdCB0aGUgdXBsaW5rDQoJTU9WCUJYLFVQTElO
SwkJCTsgR2V0IHVwbGluayBhZGRyZXNzDQoJTU9WCUFMLERDX0JZVCBPUiBE
Q19MUwkJOyBPbmUgd29yZCB3aWRlLCBCWVRFIG1vZGUNCglDQUxMCVNFVF9O
SUMJCQkJOyBJbml0aWFsaXplIHRoZSBOSUMNCglPVVRfU05DCUlNUiwgSU1f
WE1JVAkJCTsgSW50ZXJydXB0IG1hc2sgcmVnaXN0ZXIuDQpOT19VTDA6CVRF
U1QJQllURSBQVFIgTE5LX0ZBSUwsIERMJEZBSUwwCTsgVGhlIGZpcnN0IGRv
d25saW5rDQoJSloJTk9fREwwCQkJCTsgTm90IGRvd25saW5rIDANCglNT1YJ
QlgsRE5MSU5LMAkJCTsgR2V0IGZpcnN0IGRvd25saW5rIGNvbnRyLg0KCU1P
VglBTCxEQ19XVFMgT1IgRENfTFMgT1IgV1JEMgk7IERvd25saW5rcyBhcmUg
aW4gV09SRCBtb2RlDQoJQ0FMTAlTRVRfTklDCQkJCTsgSW5pdGlhbGl6ZSB0
aGUgTklDDQoJTU9WCUJZVEUgUFRSIE5QSzAsX05FWFRfUEtUCQk7IFNldCB0
aGUgbmV4dCBwYWNrZXQgcG9pbnRlcg0KCU9VVF9TTkMJSU1SLCBJTV9SRUNW
CQkJOyBJbnRlcnJ1cHQgbWFzayByZWdpc3Rlci4NCk5PX0RMMDoJVEVTVAlC
WVRFIFBUUiBMTktfRkFJTCwgREwkRkFJTDEJOyBUaGUgc2Vjb25kIGRvd25s
aW5rDQoJSloJTk9fREwxCQkJCTsgTm90IGRvd25saW5rIDENCglNT1YJQlgs
RE5MSU5LMQkJCTsgR2V0IGZpcnN0IGRvd25saW5rIGNvbnRyLg0KCU1PVglB
TCxEQ19XVFMgT1IgRENfTFMgT1IgV1JEMgk7IERvd25saW5rcyBhcmUgaW4g
V09SRCBtb2RlDQoJQ0FMTAlTRVRfTklDCQkJCTsgSW5pdGlhbGl6ZSB0aGUg
TklDDQoJTU9WCUJZVEUgUFRSIE5QSzEsX05FWFRfUEtUCQk7IFNldCB0aGUg
bmV4dCBwYWNrZXQgcG9pbnRlcg0KCU9VVF9TTkMJSU1SLCBJTV9SRUNWCQkJ
OyBJbnRlcnJ1cHQgbWFzayByZWdpc3Rlcg0KTk9fREwxOglNT1YJQllURSBQ
VFIgTE5LX0ZBSUwsMAkJOyBDbGVhciBhbGwgZXJyb3JzDQoJSU5UCUlOVF9V
U0UJCQkJOyBFeGVjdXRlIHRoZSBpbnRlcnJ1cHQNCglDQUxMCV9wb3Nfbm9y
bQkJCTsgUmVzdGFydCBwb3NpdGlvbiBzeXN0ZW0NCglSRVQNCkZJWF9MTksJ
RU5EUA0KOw0KOy09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0t
PS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQ0KOwlU
aGlzIHByb2NlZHVyZSBjaGVja3MgZm9yIFJGIExpbmsgZXJyb3JzIGFuZCBh
dHRlbXB0cyB0byBmaXggdGhlbQ0KOwlpZiBhbnkgYXJlIGZvdW5kLiBUaGlz
IGlzIHF1ZXVlZCBmb3IgdGhlIGNvbnRleHQgc3dpdGNoZXIgYXQgMQ0KOwlz
ZWNvbmQgaW50ZXJ2YWxzIGFzIFRBU0swNy4NCjsNCjsJV2Ugc2hvdWxkIG5v
dCBub3JtYWxseSBoYXZlIGFueSBlcnJvcnMuIFRoZXJlZm9yZSwgdGhpcyBw
cm9jZWR1cmUNCjsJcmVpbml0aWFsaXplcyB0aGUgb2ZmZW5kaW5nIFNOSUMg
YmVjYXVzZSBpdCBhc3N1bWVzIHRoYXQgc29tZXRoaW5nDQo7CWJhZCBtdXN0
IGhhdmUgaGFwcGVuZWQgc3VjaCBhcyBhbiBhYm9ydGVkIERNQSBiZWNhdXNl
IHRoZSBEaXNjDQo7CVN1YnN5c3RlbSBDUFUgd2VudCBkb3duLg0KOw0KX2Zp
eF9saW5rCVBST0MJRkFSDQoJU0VUVVANCglYT1IJQVgsQVgJCQkJOyBBc3N1
bWUgZ29vZCBzdGF0dXMNCglDTVAJQllURSBQVFIgT0xEX1JGX01BU0ssRkFM
U0UJOyBTZWUgaWYgaXQncyBpbnN0YWxsZWQNCglKTloJQ0hLX0xOCQkJCTsg
SW5zdGFsbGVkLCBjaGVjayBoZWFsdGgNCglKTVAJU0hPUlQgTE5LX09LCQkJ
OyBOb3QgaW5zdGFsbGVkLCBkb24ndCBjaGVjaw0KQ0hLX0xOOglDTVAJQllU
RSBQVFIgTE5LX0ZBSUwsRkFMU0UJCTsgU2VlIGlmIGFueSBlcnJvcnMNCglK
TloJQ0hLX0RNCQkJCTsgRXJyb3JzIGV4aXN0LCBjaGVjayBsaW5rDQoJSk1Q
CVNIT1JUIExOS19PSwkJCTsgTm8gZXJyb3JzDQpDSEtfRE06CVRFU1QJQllU
RSBQVFIgTE5LX0ZBSUwsIFNOJERNQUJUCTsgU2VlIGlmIERNQSB3YXMgYWJv
cnRlZA0KCUpaCU5PX0RNQQkJCQk7IERNQSBiaXQgd2FzIG5vdCBzZXQNCglM
T0dfRVJST1IJPEVETUFCVD4JCTsgRXJyb3IgY29kZQ0KCUFORAlCWVRFIFBU
UiBMTktfRkFJTCwoTk9UIFNOJERNQUJUKSA7IENsZWFyIGVycm9yIGJpdA0K
Ow0KTk9fRE1BOglURVNUCUJZVEUgUFRSIExOS19GQUlMLFVMJEZBSUwwCTsg
Q2hlY2sgZm9yIHVwbGluayBmYWlsdXJlDQoJSloJVUxfT0sJCQkJOyBVcGxp
bmsgMCB3YXMgc3RpbGwgb2theQ0KCUxPR19FUlJPUgk8RVVQTE5LPgkJOyBF
cnJvciBjb2RlDQo7DQpVTF9PSzoJVEVTVAlCWVRFIFBUUiBMTktfRkFJTCwo
REwkRkFJTDAgT1IgREwkRkFJTDEpDQoJSloJRExfT0sJCQkJOyBCb3RoIGRv
d25saW5rcyB3ZXJlIG9rYXkNCglMT0dfRVJST1IJPEVETkxOSz4JCTsgRXJy
b3IgY29kZQ0KOw0KRExfT0s6CUNBTEwJRklYX0xOSwkJCQk7IEZpeCB0aGUg
bGlua3MNCglNT1YJQUwsQllURSBQVFIgTE5LX0ZBSUwJCTsgUmV0dXJuIHN0
YXR1cw0KCU9SCUFMLEFMCQkJCTsgU2VlIGlmIHN0aWxsIG9rYXkNCglKWglM
TktfT0sJCQkJOyBJdCdzIHN0aWxsIG9rYXkNCjsNCglDQUxMCVNFVF9MTksJ
CQkJOyBSZWluaXQgdGhlIHdob2xlIHRoaW5nDQoJTE9HX0VSUk9SCTxFU05J
Q1I+CQk7IEVycm9yIGNvZGUNCglNT1YJQUwsQllURSBQVFIgTE5LX0ZBSUwJ
CTsgUmV0dXJuIHN0YXR1cw0KTE5LX09LOglYT1IJQUgsQUgJCQkJOyBDbGVh
ciBoaWdoIGJ5dGUNCglQVVNICUFYCQkJCTsgU2F2ZSBzdGF0dXMNCglQVVNI
CTEJCQkJOyBTZWNvbmRzIGZvciBuZXh0IHF1ZXVlDQoJUFVTSAkoVEFTSzA3
IFNIUiAxNikJCQk7IEhpZ2ggd29yZCBvZiBsb25nIHdvcmQNCglQVVNICShU
QVNLMDcJQU5EIDBGRkZGSCkJCTsgTG93IHdvcmQgb2YgbG9uZyB3b3JkDQoJ
Q0FMTAlfdHF1ZXVlCQkJCTsgU2V0IHRpbWVyIHF1ZXVlDQoJQURECVNQLDYJ
CQkJOyBMZXZlbCBzdGFjaw0KCVBPUAlBWAkJCQk7IFJlc3RvcmUgc3RhdHVz
DQoJUkVTVE9SRQ0KX2ZpeF9saW5rCUVORFANCjsNCjstPS09LT0tPS09LT0t
PS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09
LT0tPS09LT0tPS09LT0tPS0NClVUSUxJVFlfVEVYVAlFTkRTDQoJRU5EDQpT
VUJUVEwJQ29kZQ0K
---1295196120-1334113657-855888807=:286--