[Lcdproc] Re: ShuttleVFD driver

Thien Vu thien.vu@gmail.com
Sun Jul 8 01:45:02 2007


------=_Part_95847_23434341.1183859024881
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

I've updated the driver to support all the icons and volume displays.

Attached below.

It's been several days since I submitted my last patch, is this the
correct forum to do this? I haven't heard anything back from anyone on
this stuff so I'm hoping I don't have to maintain this outside the
source tree forever.

Thien

On 7/3/07, Thien Vu <thien.vu@gmail.com> wrote:
> Hi,
>
> I've written a basic LCDproc driver for the VFDs found on many of the
> Shuttle XPC machines. Specifically I've been testing with the VFD
> found on the Shuttle M1000.
>
> I've attached the file below and was hoping this could be put into the
> mainline trunk.
>
> Feedback would be greatly appreciated. This is based on the work from
> the text driver,
> http://jeremy.infogami.com/SetVFD and http://www.linuxowl.com/software
>
> The patch can also be downloaded from
> http://www.thien-vu.dyndns.org/~thien/lcdproc-cvs-shuttleVFD.patch
>
> Thanks,
>
> Thien
>
> --
> http://www.thien-vu.dyndns.org/~thien
>
>


-- 
http://www.thien-vu.dyndns.org/~thien

------=_Part_95847_23434341.1183859024881
Content-Type: text/x-patch; name="lcdproc-cvs-shuttleVFD-patch.diff"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="lcdproc-cvs-shuttleVFD-patch.diff"
X-Attachment-Id: f_f3uv39sg

ZGlmZiAtTmF1ciBsY2Rwcm9jLWN2cy5vcmlnL0xDRGQuY29uZiBsY2Rwcm9jL0xDRGQuY29uZgot
LS0gbGNkcHJvYy1jdnMub3JpZy9MQ0RkLmNvbmYJMjAwNy0wNi0xNyAwNTowNzozNy4wMDAwMDAw
MDAgLTA3MDAKKysrIGxjZHByb2MvTENEZC5jb25mCTIwMDctMDctMDQgMjE6MTU6NTIuMDAwMDAw
MDAwIC0wNzAwCkBAIC00OCw3ICs0OCw4IEBACiAjICAgRXllYm94T25lLCBnMTUsIGdsY2RsaWIs
IGdsaywgaGQ0NDc4MCwgaWNwX2ExMDYsIGltb24sIElPV2FycmlvciwKICMgICBpcm1hbiwgam95
LCBsYjIxNiwgbGNkbTAwMSwgbGN0ZXJtLCBsaXJjLCBNRDg4MDAsIG1zNjkzMSwgbXRjX3MxNjIw
OXgsCiAjICAgTXR4T3JiLCBOb3JpdGFrZVZGRCwgcGljb2xjZCwgcHlyYW1pZCwgc2VkMTMzMCwg
c2VkMTUyMCwgc2VyaWFsUE9TLAotIyAgIHNlcmlhbFZGRCwgc2xpLCBzdHY1NzMwLCBzdmdhLCB0
Njk2MywgdGV4dCwgdHlhbiwgdWxhMjAwLCB4b3NkCisjICAgc2VyaWFsVkZELCBzaHV0dGxlVkZE
LCBzbGksIHN0djU3MzAsIHN2Z2EsIHQ2OTYzLCB0ZXh0LCB0eWFuLCB1bGEyMDAsCisjICAgeG9z
ZAogRHJpdmVyPWN1cnNlcwogCiAjIFRlbGxzIHRoZSBkcml2ZXIgdG8gYmluZCB0byB0aGUgZ2l2
ZW4gaW50ZXJmYWNlCkBAIC04NzAsNyArODcxLDkgQEAKICMgZW5hYmxlIElTTyA4ODU5IDEgY29t
cGF0aWJpbGl0eSBbZGVmYXVsdDogeWVzOyBsZWdhbDogeWVzLCBub10KICNJU09fODg1OV8xPXll
cwogCi0KKyMjIHNodXR0bGVWRkQgZHJpdmVyICMjCitbc2h1dHRsZVZGRF0KKyMgTm8gb3B0aW9u
cwogCiAjIyBzdHY1NzMwIGRyaXZlciAjIwogW3N0djU3MzBdCmRpZmYgLU5hdXIgbGNkcHJvYy1j
dnMub3JpZy9hY2luY2x1ZGUubTQgbGNkcHJvYy9hY2luY2x1ZGUubTQKLS0tIGxjZHByb2MtY3Zz
Lm9yaWcvYWNpbmNsdWRlLm00CTIwMDctMDUtMTcgMDU6MDg6MTUuMDAwMDAwMDAwIC0wNzAwCisr
KyBsY2Rwcm9jL2FjaW5jbHVkZS5tNAkyMDA3LTA3LTA0IDIxOjE1OjUyLjAwMDAwMDAwMCAtMDcw
MApAQCAtOSwxNCArOSwxNCBAQAogCVsgICAgICAgICAgICAgICAgICAgIEV5ZWJveE9uZSxnMTUs
Z2xjZGxpYixnbGssaGQ0NDc4MCxpY3BfYTEwNixpbW9uLElPV2FycmlvcixdCiAJWyAgICAgICAg
ICAgICAgICAgICAgaXJtYW4sam95LGxiMjE2LGxjZG0wMDEsbGN0ZXJtLGxpcmMsbGlzLE1EODgw
MCxtczY5MzEsXQogCVsgICAgICAgICAgICAgICAgICAgIG10Y19zMTYyMDl4LE10eE9yYixOb3Jp
dGFrZVZGRCxwaWNvbGNkLHB5cmFtaWQsc2VkMTMzMF0KLQlbICAgICAgICAgICAgICAgICAgICBz
ZWQxNTIwLHNlcmlhbFBPUyxzZXJpYWxWRkQsc2xpLHN0djU3MzAsc3ZnYSx0Njk2Myx0ZXh0LF0K
LQlbICAgICAgICAgICAgICAgICAgICB0eWFuLHVsYTIwMCx4b3NkXQorCVsgICAgICAgICAgICAg
ICAgICAgIHNlZDE1MjAsc2VyaWFsUE9TLHNlcmlhbFZGRCxzaHV0dGxlVkZELHNsaSxzdHY1NzMw
LHN2Z2FdCisJWyAgICAgICAgICAgICAgICAgICAgdDY5NjMsdGV4dCx0eWFuLHVsYTIwMCx4b3Nk
XQogCVsgICAgICAgICAgICAgICAgICAnYWxsJyBjb21waWxlcyBhbGwgZHJpdmVycztdCiAJWyAg
ICAgICAgICAgICAgICAgICdhbGwsIXh4eCwheXl5JyBkZS1zZWxlY3RzIHByZXZpb3VzbHkgc2Vs
ZWN0ZWQgZHJpdmVyc10sCiAJZHJpdmVycz0iJGVuYWJsZXZhbCIsCiAJZHJpdmVycz1bYmF5cmFk
LENGb250eixDRm9udHo2MzMsY3Vyc2VzLEN3TG54LGdsayxsYjIxNixsY2RtMDAxLE10eE9yYixw
eXJhbWlkLHRleHRdKQogCi1hbGxEcml2ZXJzPVtiYXlyYWQsQ0ZvbnR6LENGb250ejYzMyxDRm9u
dHpQYWNrZXQsY3Vyc2VzLEN3TG54LGVhNjUsRXllYm94T25lLGcxNSxnbGNkbGliLGdsayxoZDQ0
NzgwLGljcF9hMTA2LGltb24sSU9XYXJyaW9yLGlybWFuLGpveSxsYjIxNixsY2RtMDAxLGxjdGVy
bSxsaXJjLGxpcyxNRDg4MDAsbXM2OTMxLG10Y19zMTYyMDl4LE10eE9yYixOb3JpdGFrZVZGRCxw
aWNvbGNkLHB5cmFtaWQsc2VkMTMzMCxzZWQxNTIwLHNlcmlhbFBPUyxzZXJpYWxWRkQsc2xpLHN0
djU3MzAsc3ZnYSx0Njk2Myx0ZXh0LHR5YW4sdWxhMjAwLHhvc2RdCithbGxEcml2ZXJzPVtiYXly
YWQsQ0ZvbnR6LENGb250ejYzMyxDRm9udHpQYWNrZXQsY3Vyc2VzLEN3TG54LGVhNjUsRXllYm94
T25lLGcxNSxnbGNkbGliLGdsayxoZDQ0NzgwLGljcF9hMTA2LGltb24sSU9XYXJyaW9yLGlybWFu
LGpveSxsYjIxNixsY2RtMDAxLGxjdGVybSxsaXJjLGxpcyxNRDg4MDAsbXM2OTMxLG10Y19zMTYy
MDl4LE10eE9yYixOb3JpdGFrZVZGRCxwaWNvbGNkLHB5cmFtaWQsc2VkMTMzMCxzZWQxNTIwLHNl
cmlhbFBPUyxzZXJpYWxWRkQsc2h1dHRsZVZGRCxzbGksc3R2NTczMCxzdmdhLHQ2OTYzLHRleHQs
dHlhbix1bGEyMDAseG9zZF0KIAogZHJpdmVycz1gZWNobyAkZHJpdmVycyB8IHNlZCAtZSAncy8s
LyAvZydgCiAKQEAgLTMzOCw2ICszMzgsMTQgQEAKIAkJCURSSVZFUlM9IiREUklWRVJTIHNlcmlh
bFZGRCR7U099IgogCQkJYWN0ZHJpdmVycz1bIiRhY3Rkcml2ZXJzIHNlcmlhbFZGRCJdCiAJCQk7
OworCQlzaHV0dGxlVkZEKQorCQkJaWYgdGVzdCAiJGVuYWJsZV9saWJ1c2IiID0geWVzIDsgdGhl
bgorCQkJCURSSVZFUlM9IiREUklWRVJTIHNodXR0bGVWRkQke1NPfSIKKwkJCQlhY3Rkcml2ZXJz
PVsiJGFjdGRyaXZlcnMgc2h1dHRsZVZGRCJdCisJCQllbHNlCisJCQkJQUNfTVNHX1dBUk4oW1Ro
ZSBzaHV0dGxlVkZEIGRyaXZlciBuZWVkcyB0aGUgbGlidXNiIGxpYnJhcnkuXSkKKwkJCWZpCisJ
CQk7OwogCQlzbGkpCiAJCQlEUklWRVJTPSIkRFJJVkVSUyBzbGkke1NPfSIKIAkJCWFjdGRyaXZl
cnM9WyIkYWN0ZHJpdmVycyBzbGkiXQpkaWZmIC1OYXVyIGxjZHByb2MtY3ZzLm9yaWcvY29uZmln
dXJlIGxjZHByb2MvY29uZmlndXJlCi0tLSBsY2Rwcm9jLWN2cy5vcmlnL2NvbmZpZ3VyZQkyMDA3
LTA3LTAzIDA0OjQxOjU2LjAwMDAwMDAwMCAtMDcwMAorKysgbGNkcHJvYy9jb25maWd1cmUJMjAw
Ny0wNy0wNCAyMToxNTo1Mi4wMDAwMDAwMDAgLTA3MDAKQEAgLTEzMzEsOCArMTMzMSw4IEBACiAJ
ICAgICAgICAgICAgICAgICAgICBFeWVib3hPbmUsZzE1LGdsY2RsaWIsZ2xrLGhkNDQ3ODAsaWNw
X2ExMDYsaW1vbixJT1dhcnJpb3IsCiAJICAgICAgICAgICAgICAgICAgICBpcm1hbixqb3ksbGIy
MTYsbGNkbTAwMSxsY3Rlcm0sbGlyYyxsaXMsTUQ4ODAwLG1zNjkzMSwKIAkgICAgICAgICAgICAg
ICAgICAgIG10Y19zMTYyMDl4LE10eE9yYixOb3JpdGFrZVZGRCxwaWNvbGNkLHB5cmFtaWQsc2Vk
MTMzMAotCSAgICAgICAgICAgICAgICAgICAgc2VkMTUyMCxzZXJpYWxQT1Msc2VyaWFsVkZELHNs
aSxzdHY1NzMwLHN2Z2EsdDY5NjMsdGV4dCwKLQkgICAgICAgICAgICAgICAgICAgIHR5YW4sdWxh
MjAwLHhvc2QKKwkgICAgICAgICAgICAgICAgICAgIHNlZDE1MjAsc2VyaWFsUE9TLHNlcmlhbFZG
RCxzaHV0dGxlVkZELHNsaSxzdHY1NzMwLHN2Z2EKKwkgICAgICAgICAgICAgICAgICAgIHQ2OTYz
LHRleHQsdHlhbix1bGEyMDAseG9zZAogCSAgICAgICAgICAgICAgICAgICdhbGwnIGNvbXBpbGVz
IGFsbCBkcml2ZXJzOwogCSAgICAgICAgICAgICAgICAgICdhbGwsIXh4eCwheXl5JyBkZS1zZWxl
Y3RzIHByZXZpb3VzbHkgc2VsZWN0ZWQgZHJpdmVycwogICAtLWVuYWJsZS1zZWFtbGVzcy1oYmFy
cyBubyBnYXBzIGluIGhvcml6b250YWwgYmFyIGdyYXBocyAoaWYgSFcgc3VwcG9ydHMgaXQpCkBA
IC05NzE0LDcgKzk3MTQsNyBAQAogZmkKIAogCi1hbGxEcml2ZXJzPWJheXJhZCxDRm9udHosQ0Zv
bnR6NjMzLENGb250elBhY2tldCxjdXJzZXMsQ3dMbngsZWE2NSxFeWVib3hPbmUsZzE1LGdsY2Rs
aWIsZ2xrLGhkNDQ3ODAsaWNwX2ExMDYsaW1vbixJT1dhcnJpb3IsaXJtYW4sam95LGxiMjE2LGxj
ZG0wMDEsbGN0ZXJtLGxpcmMsbGlzLE1EODgwMCxtczY5MzEsbXRjX3MxNjIwOXgsTXR4T3JiLE5v
cml0YWtlVkZELHBpY29sY2QscHlyYW1pZCxzZWQxMzMwLHNlZDE1MjAsc2VyaWFsUE9TLHNlcmlh
bFZGRCxzbGksc3R2NTczMCxzdmdhLHQ2OTYzLHRleHQsdHlhbix1bGEyMDAseG9zZAorYWxsRHJp
dmVycz1iYXlyYWQsQ0ZvbnR6LENGb250ejYzMyxDRm9udHpQYWNrZXQsY3Vyc2VzLEN3TG54LGVh
NjUsRXllYm94T25lLGcxNSxnbGNkbGliLGdsayxoZDQ0NzgwLGljcF9hMTA2LGltb24sSU9XYXJy
aW9yLGlybWFuLGpveSxsYjIxNixsY2RtMDAxLGxjdGVybSxsaXJjLGxpcyxNRDg4MDAsbXM2OTMx
LG10Y19zMTYyMDl4LE10eE9yYixOb3JpdGFrZVZGRCxwaWNvbGNkLHB5cmFtaWQsc2VkMTMzMCxz
ZWQxNTIwLHNlcmlhbFBPUyxzZXJpYWxWRkQsc2h1dHRsZVZGRCxzbGksc3R2NTczMCxzdmdhLHQ2
OTYzLHRleHQsdHlhbix1bGEyMDAseG9zZAogCiBkcml2ZXJzPWBlY2hvICRkcml2ZXJzIHwgc2Vk
IC1lICdzLywvIC9nJ2AKIApAQCAtMTI1NzIsNiArMTI1NzIsMTUgQEAKIAkJCURSSVZFUlM9IiRE
UklWRVJTIHNlcmlhbFZGRCR7U099IgogCQkJYWN0ZHJpdmVycz0iJGFjdGRyaXZlcnMgc2VyaWFs
VkZEIgogCQkJOzsKKwkJc2h1dHRsZVZGRCkKKwkJCWlmIHRlc3QgIiRlbmFibGVfbGlidXNiIiA9
IHllcyA7IHRoZW4KKwkJCQlEUklWRVJTPSIkRFJJVkVSUyBzaHV0dGxlVkZEJHtTT30iCisJCQkJ
YWN0ZHJpdmVycz0iJGFjdGRyaXZlcnMgc2h1dHRsZVZGRCIKKwkJCWVsc2UKKwkJCQl7IGVjaG8g
IiRhc19tZTokTElORU5POiBXQVJOSU5HOiBUaGUgc2h1dHRsZVZGRCBkcml2ZXIgbmVlZHMgdGhl
IGxpYnVzYiBsaWJyYXJ5LiIgPiY1CitlY2hvICIkYXNfbWU6IFdBUk5JTkc6IFRoZSBzaHV0dGxl
VkZEIGRyaXZlciBuZWVkcyB0aGUgbGlidXNiIGxpYnJhcnkuIiA+JjI7fQorCQkJZmkKKwkJCTs7
CiAJCXNsaSkKIAkJCURSSVZFUlM9IiREUklWRVJTIHNsaSR7U099IgogCQkJYWN0ZHJpdmVycz0i
JGFjdGRyaXZlcnMgc2xpIgpkaWZmIC1OYXVyIGxjZHByb2MtY3ZzLm9yaWcvZG9jcy9MQ0RkLjgu
aW4gbGNkcHJvYy9kb2NzL0xDRGQuOC5pbgotLS0gbGNkcHJvYy1jdnMub3JpZy9kb2NzL0xDRGQu
OC5pbgkyMDA3LTA1LTE3IDA1OjA4OjE1LjAwMDAwMDAwMCAtMDcwMAorKysgbGNkcHJvYy9kb2Nz
L0xDRGQuOC5pbgkyMDA3LTA3LTA0IDIxOjE1OjUyLjAwMDAwMDAwMCAtMDcwMApAQCAtMjIyLDYg
KzIyMiw5IEBACiAuQiBzZXJpYWxWRkQKIE5FQyAoRklQQzgzNjcgYmFzZWQpIGFuZCBGVVRBQkEg
VkZEcwogLlRQCisuQiBzaHV0dGxlVkZECitTaHV0dGxlIFZGRCAoVVNCLWJhc2VkKQorLlRQCiAu
QiBzbGkKIFdpcnogU0xJIGRyaXZlciAodW5rbm93bikKIC5UUApkaWZmIC1OYXVyIGxjZHByb2Mt
Y3ZzLm9yaWcvZG9jcy9sY2Rwcm9jLXVzZXIvZHJpdmVycy9zaHV0dGxlVkZELmRvY2Jvb2sgbGNk
cHJvYy9kb2NzL2xjZHByb2MtdXNlci9kcml2ZXJzL3NodXR0bGVWRkQuZG9jYm9vawotLS0gbGNk
cHJvYy1jdnMub3JpZy9kb2NzL2xjZHByb2MtdXNlci9kcml2ZXJzL3NodXR0bGVWRkQuZG9jYm9v
awkxOTY5LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAtMDgwMAorKysgbGNkcHJvYy9kb2NzL2xj
ZHByb2MtdXNlci9kcml2ZXJzL3NodXR0bGVWRkQuZG9jYm9vawkyMDA3LTA3LTA0IDIxOjE1OjUy
LjAwMDAwMDAwMCAtMDcwMApAQCAtMCwwICsxLDEwIEBACis8c2VjdDEgaWQ9InNodXR0bGVWRkQt
aG93dG8iPgorPHRpdGxlPlRoZSBzaHV0dGxlVkZEIERyaXZlcjwvdGl0bGU+CisKKzxwYXJhPgor
VGhpcyBzZWN0aW9uIHRhbGtzIGFib3V0IHVzaW5nIExDRHByb2Mgd2l0aCBMQ0QgZGlzcGxheXMg
dGhhdCB1c2UgdGhlCitTaHV0dGxlVkZEIGRpc3BsYXkuCisKK1RoZXJlIGFyZSBubyBjb25maWd1
cmF0aW9uIG9wdGlvbnMgYXZhaWxhYmxlIGZvciB0aGlzIGRpc3BsYXkuCis8L3BhcmE+Cis8L3Nl
Y3QxPgpkaWZmIC1OYXVyIGxjZHByb2MtY3ZzLm9yaWcvZG9jcy9sY2Rwcm9jLXVzZXIvZHJpdmVy
cy5kb2Nib29rIGxjZHByb2MvZG9jcy9sY2Rwcm9jLXVzZXIvZHJpdmVycy5kb2Nib29rCi0tLSBs
Y2Rwcm9jLWN2cy5vcmlnL2RvY3MvbGNkcHJvYy11c2VyL2RyaXZlcnMuZG9jYm9vawkyMDA3LTA1
LTE3IDA1OjA4OjE1LjAwMDAwMDAwMCAtMDcwMAorKysgbGNkcHJvYy9kb2NzL2xjZHByb2MtdXNl
ci9kcml2ZXJzLmRvY2Jvb2sJMjAwNy0wNy0wNCAyMToxNTo1Mi4wMDAwMDAwMDAgLTA3MDAKQEAg
LTQwLDYgKzQwLDcgQEAKICZzZWQxNTIwOwogJnNlcmlhbFBPUzsKICZzZXJpYWxWRkQ7Cismc2h1
dHRsZVZGRDsKICZzbGk7CiAmc3R2NTczMDsKICZzdmdhOwpkaWZmIC1OYXVyIGxjZHByb2MtY3Zz
Lm9yaWcvZG9jcy9sY2Rwcm9jLXVzZXIvbGNkcHJvYy11c2VyLmRvY2Jvb2sgbGNkcHJvYy9kb2Nz
L2xjZHByb2MtdXNlci9sY2Rwcm9jLXVzZXIuZG9jYm9vawotLS0gbGNkcHJvYy1jdnMub3JpZy9k
b2NzL2xjZHByb2MtdXNlci9sY2Rwcm9jLXVzZXIuZG9jYm9vawkyMDA3LTA1LTE3IDA1OjA4OjE1
LjAwMDAwMDAwMCAtMDcwMAorKysgbGNkcHJvYy9kb2NzL2xjZHByb2MtdXNlci9sY2Rwcm9jLXVz
ZXIuZG9jYm9vawkyMDA3LTA3LTA0IDIxOjE1OjUyLjAwMDAwMDAwMCAtMDcwMApAQCAtNDYsNiAr
NDYsNyBAQAogICA8IUVOVElUWSBzZWQxNTIwIFNZU1RFTSAiZHJpdmVycy9zZWQxNTIwLmRvY2Jv
b2siPgogICA8IUVOVElUWSBzZXJpYWxQT1MgU1lTVEVNICJkcml2ZXJzL3NlcmlhbFBPUy5kb2Ni
b29rIj4KICAgPCFFTlRJVFkgc2VyaWFsVkZEIFNZU1RFTSAiZHJpdmVycy9zZXJpYWxWRkQuZG9j
Ym9vayI+CisgIDwhRU5USVRZIHNodXR0bGVWRkQgU1lTVEVNICJkcml2ZXJzL3NodXR0bGVWRkQu
ZG9jYm9vayI+CiAgIDwhRU5USVRZIHNsaSBTWVNURU0gImRyaXZlcnMvc2xpLmRvY2Jvb2siPgog
ICA8IUVOVElUWSBzdHY1NzMwIFNZU1RFTSAiZHJpdmVycy9zdHY1NzMwLmRvY2Jvb2siPgogICA8
IUVOVElUWSBzdmdhIFNZU1RFTSAiZHJpdmVycy9zdmdhLmRvY2Jvb2siPgpkaWZmIC1OYXVyIGxj
ZHByb2MtY3ZzLm9yaWcvc2VydmVyL2RyaXZlcnMvTWFrZWZpbGUuYW0gbGNkcHJvYy9zZXJ2ZXIv
ZHJpdmVycy9NYWtlZmlsZS5hbQotLS0gbGNkcHJvYy1jdnMub3JpZy9zZXJ2ZXIvZHJpdmVycy9N
YWtlZmlsZS5hbQkyMDA3LTA2LTE3IDA1OjA3OjM3LjAwMDAwMDAwMCAtMDcwMAorKysgbGNkcHJv
Yy9zZXJ2ZXIvZHJpdmVycy9NYWtlZmlsZS5hbQkyMDA3LTA3LTA0IDIxOjE1OjUyLjAwMDAwMDAw
MCAtMDcwMApAQCAtMTksMTMgKzE5LDE0IEBACiAjTElCUyA9CiAKIHBrZ2xpYl9QUk9HUkFNUyA9
IEBEUklWRVJTQAotRVhUUkFfUFJPR1JBTVMgPSBiYXlyYWQgQ0ZvbnR6IENGb250ejYzMyBDRm9u
dHpQYWNrZXQgY3Vyc2VzIEN3TG54IGVhNjUgRXllYm94T25lIGcxNSBnbGNkbGliIGdsayBoZDQ0
NzgwIGljcF9hMTA2IGltb24gSU9XYXJyaW9yIGlybWFuIGpveSBsYjIxNiBsY2RtMDAxIGxjdGVy
bSBsaXJjIGxpcyBNRDg4MDAgbXM2OTMxIG10Y19zMTYyMDl4IE10eE9yYiBOb3JpdGFrZVZGRCBw
aWNvbGNkIHB5cmFtaWQgc2VkMTMzMCBzZWQxNTIwIHNlcmlhbFBPUyBzZXJpYWxWRkQgc3R2NTcz
MCBzdmdhIHQ2OTYzIHRleHQgdHlhbiBzbGkgdWxhMjAwIHhvc2QKK0VYVFJBX1BST0dSQU1TID0g
YmF5cmFkIENGb250eiBDRm9udHo2MzMgQ0ZvbnR6UGFja2V0IGN1cnNlcyBDd0xueCBlYTY1IEV5
ZWJveE9uZSBnMTUgZ2xjZGxpYiBnbGsgaGQ0NDc4MCBpY3BfYTEwNiBpbW9uIElPV2FycmlvciBp
cm1hbiBqb3kgbGIyMTYgbGNkbTAwMSBsY3Rlcm0gbGlyYyBsaXMgTUQ4ODAwIG1zNjkzMSBtdGNf
czE2MjA5eCBNdHhPcmIgTm9yaXRha2VWRkQgcGljb2xjZCBweXJhbWlkIHNlZDEzMzAgc2VkMTUy
MCBzZXJpYWxQT1Mgc2VyaWFsVkZEIHNodXR0bGVWRkQgc3R2NTczMCBzdmdhIHQ2OTYzIHRleHQg
dHlhbiBzbGkgdWxhMjAwIHhvc2QKIG5vaW5zdF9MSUJSQVJJRVMgPSBsaWJMQ0QuYSBsaWJiaWdu
dW0uYQogCiBJT1dhcnJpb3JfQ0ZMQUdTID0gICBAbGlidXNiX2NmbGFnc0AgJChBTV9DRkxBR1Mp
CiBoZDQ0NzgwX0NGTEFHUyA9ICAgICBAbGlidXNiX2NmbGFnc0AgJChBTV9DRkxBR1MpCiBnMTVf
Q0ZMQUdTID0gICAgICAgICBAbGlidXNiX2NmbGFnc0AgJChBTV9DRkxBR1MpCiBwaWNvbGNkX0NG
TEFHUyA9ICAgICBAbGlidXNiX2NmbGFnc0AgJChBTV9DRkxBR1MpCQorc2h1dHRsZVZGRF9DRkxB
R1MgPSAgQGxpYnVzYl9jZmxhZ3NAICQoQU1fQ0ZMQUdTKQogCiBDRm9udHpfTERBREQgPSAgICAg
ICBsaWJMQ0QuYSBsaWJiaWdudW0uYQogQ0ZvbnR6NjMzX0xEQUREID0gICAgbGliTENELmEgbGli
YmlnbnVtLmEKQEAgLTUxLDYgKzUyLDcgQEAKIHB5cmFtaWRfTERBREQgPSAgICAgIGxpYkxDRC5h
CiBzZXJpYWxQT1NfTERBREQgPSAgICBsaWJMQ0QuYSBsaWJiaWdudW0uYQogc2VyaWFsVkZEX0xE
QUREID0gICAgbGliTENELmEgbGliYmlnbnVtLmEKK3NodXR0bGVWRkRfTERBREQgPSAgIEBsaWJ1
c2JfbGlic0AgbGliTENELmEgbGliYmlnbnVtLmEKIHN2Z2FfTERBREQgPSAgICAgICAgIEBMSUJT
VkdBQAogdDY5NjNfTERBREQgPSAgICAgICAgbGliTENELmEKIHR5YW5fTERBREQgPSAgICAgICAg
IGxpYkxDRC5hIGxpYmJpZ251bS5hCkBAIC05Niw2ICs5OCw3IEBACiBzZWQxNTIwX1NPVVJDRVMg
PSAgICBsY2QuaCBzZWQxNTIwLmMgc2VkMTUyMC5oIHNlZDE1MjBmbS5jIHNlZDE1MjBmbS5oIHBv
cnQuaCByZXBvcnQuaAogc2VyaWFsUE9TX1NPVVJDRVMgPSAgbGNkLmggbGNkX2xpYi5oIHNlcmlh
bFBPUy5jIHNlcmlhbFBPUy5oIHJlcG9ydC5oIGFkdl9iaWdudW0uaAogc2VyaWFsVkZEX1NPVVJD
RVMgPSAgbGNkLmggbGNkX2xpYi5oIHNlcmlhbFZGRC5jIHNlcmlhbFZGRC5oIHJlcG9ydC5oIGFk
dl9iaWdudW0uaCBzZXJpYWxWRkRfZGlzcGxheXMuYyBzZXJpYWxWRkRfZGlzcGxheXMuaCBzZXJp
YWxWRkRfaW8uYyBzZXJpYWxWRkRfaW8uaAorc2h1dHRsZVZGRF9TT1VSQ0VTID0gbGNkLmggc2h1
dHRsZVZGRC5jIHNodXR0bGVWRkQuaCByZXBvcnQuaAogc3R2NTczMF9TT1VSQ0VTID0gICAgbGNk
Lmggc3R2NTczMC5jIHN0djU3MzAuaCByZXBvcnQuaAogc3ZnYV9TT1VSQ0VTID0gICAgICAgbGNk
Lmggc3ZnYWxpYl9kcnYuYyBzdmdhbGliX2Rydi5oIHJlcG9ydC5oCiB0Njk2M19TT1VSQ0VTID0g
ICAgICBsY2QuaCBsY2RfbGliLmggdDY5NjMuYyB0Njk2My5oIHQ2OTYzX2ZvbnQuaCByZXBvcnQu
aApkaWZmIC1OYXVyIGxjZHByb2MtY3ZzLm9yaWcvc2VydmVyL2RyaXZlcnMvTWFrZWZpbGUuaW4g
bGNkcHJvYy9zZXJ2ZXIvZHJpdmVycy9NYWtlZmlsZS5pbgotLS0gbGNkcHJvYy1jdnMub3JpZy9z
ZXJ2ZXIvZHJpdmVycy9NYWtlZmlsZS5pbgkyMDA3LTA3LTAzIDA0OjQxOjU0LjAwMDAwMDAwMCAt
MDcwMAorKysgbGNkcHJvYy9zZXJ2ZXIvZHJpdmVycy9NYWtlZmlsZS5pbgkyMDA3LTA3LTA0IDIx
OjE1OjUyLjAwMDAwMDAwMCAtMDcwMApAQCAtNDIsOSArNDIsOSBAQAogCU1EODgwMCQoRVhFRVhU
KSBtczY5MzEkKEVYRUVYVCkgbXRjX3MxNjIwOXgkKEVYRUVYVCkgXAogCU10eE9yYiQoRVhFRVhU
KSBOb3JpdGFrZVZGRCQoRVhFRVhUKSBwaWNvbGNkJChFWEVFWFQpIFwKIAlweXJhbWlkJChFWEVF
WFQpIHNlZDEzMzAkKEVYRUVYVCkgc2VkMTUyMCQoRVhFRVhUKSBcCi0Jc2VyaWFsUE9TJChFWEVF
WFQpIHNlcmlhbFZGRCQoRVhFRVhUKSBzdHY1NzMwJChFWEVFWFQpIFwKLQlzdmdhJChFWEVFWFQp
IHQ2OTYzJChFWEVFWFQpIHRleHQkKEVYRUVYVCkgdHlhbiQoRVhFRVhUKSBcCi0Jc2xpJChFWEVF
WFQpIHVsYTIwMCQoRVhFRVhUKSB4b3NkJChFWEVFWFQpCisJc2VyaWFsUE9TJChFWEVFWFQpIHNl
cmlhbFZGRCQoRVhFRVhUKSBzaHV0dGxlVkZEJChFWEVFWFQpIFwKKwlzdHY1NzMwJChFWEVFWFQp
IHN2Z2EkKEVYRUVYVCkgdDY5NjMkKEVYRUVYVCkgdGV4dCQoRVhFRVhUKSBcCisJdHlhbiQoRVhF
RVhUKSBzbGkkKEVYRUVYVCkgdWxhMjAwJChFWEVFWFQpIHhvc2QkKEVYRUVYVCkKIHN1YmRpciA9
IHNlcnZlci9kcml2ZXJzCiBESVNUX0NPTU1PTiA9IFJFQURNRSAkKHNyY2RpcikvTWFrZWZpbGUu
YW0gJChzcmNkaXIpL01ha2VmaWxlLmluCiBBQ0xPQ0FMX000ID0gJCh0b3Bfc3JjZGlyKS9hY2xv
Y2FsLm00CkBAIC0xNzYsNiArMTc2LDExIEBACiAJc2VyaWFsVkZEX2Rpc3BsYXlzLiQoT0JKRVhU
KSBzZXJpYWxWRkRfaW8uJChPQkpFWFQpCiBzZXJpYWxWRkRfT0JKRUNUUyA9ICQoYW1fc2VyaWFs
VkZEX09CSkVDVFMpCiBzZXJpYWxWRkRfREVQRU5ERU5DSUVTID0gbGliTENELmEgbGliYmlnbnVt
LmEKK2FtX3NodXR0bGVWRkRfT0JKRUNUUyA9IHNodXR0bGVWRkQtc2h1dHRsZVZGRC4kKE9CSkVY
VCkKK3NodXR0bGVWRkRfT0JKRUNUUyA9ICQoYW1fc2h1dHRsZVZGRF9PQkpFQ1RTKQorc2h1dHRs
ZVZGRF9ERVBFTkRFTkNJRVMgPSBsaWJMQ0QuYSBsaWJiaWdudW0uYQorc2h1dHRsZVZGRF9MSU5L
ID0gJChDQ0xEKSAkKHNodXR0bGVWRkRfQ0ZMQUdTKSAkKENGTEFHUykgJChBTV9MREZMQUdTKSBc
CisJJChMREZMQUdTKSAtbyAkQAogYW1fc2xpX09CSkVDVFMgPSB3aXJ6LXNsaS4kKE9CSkVYVCkK
IHNsaV9PQkpFQ1RTID0gJChhbV9zbGlfT0JKRUNUUykKIHNsaV9ERVBFTkRFTkNJRVMgPSBsaWJM
Q0QuYQpAQCAtMjE5LDkgKzIyNCw5IEBACiAJJChsaXNfU09VUkNFUykgJChtczY5MzFfU09VUkNF
UykgJChtdGNfczE2MjA5eF9TT1VSQ0VTKSBcCiAJJChwaWNvbGNkX1NPVVJDRVMpICQocHlyYW1p
ZF9TT1VSQ0VTKSAkKHNlZDEzMzBfU09VUkNFUykgXAogCSQoc2VkMTUyMF9TT1VSQ0VTKSAkKHNl
cmlhbFBPU19TT1VSQ0VTKSAkKHNlcmlhbFZGRF9TT1VSQ0VTKSBcCi0JJChzbGlfU09VUkNFUykg
JChzdHY1NzMwX1NPVVJDRVMpICQoc3ZnYV9TT1VSQ0VTKSBcCi0JJCh0Njk2M19TT1VSQ0VTKSAk
KHRleHRfU09VUkNFUykgJCh0eWFuX1NPVVJDRVMpIFwKLQkkKHVsYTIwMF9TT1VSQ0VTKSAkKHhv
c2RfU09VUkNFUykKKwkkKHNodXR0bGVWRkRfU09VUkNFUykgJChzbGlfU09VUkNFUykgJChzdHY1
NzMwX1NPVVJDRVMpIFwKKwkkKHN2Z2FfU09VUkNFUykgJCh0Njk2M19TT1VSQ0VTKSAkKHRleHRf
U09VUkNFUykgXAorCSQodHlhbl9TT1VSQ0VTKSAkKHVsYTIwMF9TT1VSQ0VTKSAkKHhvc2RfU09V
UkNFUykKIERJU1RfU09VUkNFUyA9ICQobGliTENEX2FfU09VUkNFUykgJChsaWJiaWdudW1fYV9T
T1VSQ0VTKSBcCiAJJChDRm9udHpfU09VUkNFUykgJChDRm9udHo2MzNfU09VUkNFUykgJChDRm9u
dHpQYWNrZXRfU09VUkNFUykgXAogCSQoQ3dMbnhfU09VUkNFUykgJChFeWVib3hPbmVfU09VUkNF
UykgJChJT1dhcnJpb3JfU09VUkNFUykgXApAQCAtMjM0LDEwICsyMzksMTAgQEAKIAkkKGxjdGVy
bV9TT1VSQ0VTKSAkKGxpcmNfU09VUkNFUykgJChsaXNfU09VUkNFUykgXAogCSQobXM2OTMxX1NP
VVJDRVMpICQobXRjX3MxNjIwOXhfU09VUkNFUykgJChwaWNvbGNkX1NPVVJDRVMpIFwKIAkkKHB5
cmFtaWRfU09VUkNFUykgJChzZWQxMzMwX1NPVVJDRVMpICQoc2VkMTUyMF9TT1VSQ0VTKSBcCi0J
JChzZXJpYWxQT1NfU09VUkNFUykgJChzZXJpYWxWRkRfU09VUkNFUykgJChzbGlfU09VUkNFUykg
XAotCSQoc3R2NTczMF9TT1VSQ0VTKSAkKHN2Z2FfU09VUkNFUykgJCh0Njk2M19TT1VSQ0VTKSBc
Ci0JJCh0ZXh0X1NPVVJDRVMpICQodHlhbl9TT1VSQ0VTKSAkKHVsYTIwMF9TT1VSQ0VTKSBcCi0J
JCh4b3NkX1NPVVJDRVMpCisJJChzZXJpYWxQT1NfU09VUkNFUykgJChzZXJpYWxWRkRfU09VUkNF
UykgXAorCSQoc2h1dHRsZVZGRF9TT1VSQ0VTKSAkKHNsaV9TT1VSQ0VTKSAkKHN0djU3MzBfU09V
UkNFUykgXAorCSQoc3ZnYV9TT1VSQ0VTKSAkKHQ2OTYzX1NPVVJDRVMpICQodGV4dF9TT1VSQ0VT
KSBcCisJJCh0eWFuX1NPVVJDRVMpICQodWxhMjAwX1NPVVJDRVMpICQoeG9zZF9TT1VSQ0VTKQog
RVRBR1MgPSBldGFncwogQ1RBR1MgPSBjdGFncwogRElTVEZJTEVTID0gJChESVNUX0NPTU1PTikg
JChESVNUX1NPVVJDRVMpICQoVEVYSU5GT1MpICQoRVhUUkFfRElTVCkKQEAgLTM2Niw2ICszNzEs
NyBAQAogaGQ0NDc4MF9DRkxBR1MgPSBAbGlidXNiX2NmbGFnc0AgJChBTV9DRkxBR1MpCiBnMTVf
Q0ZMQUdTID0gQGxpYnVzYl9jZmxhZ3NAICQoQU1fQ0ZMQUdTKQogcGljb2xjZF9DRkxBR1MgPSBA
bGlidXNiX2NmbGFnc0AgJChBTV9DRkxBR1MpCQorc2h1dHRsZVZGRF9DRkxBR1MgPSBAbGlidXNi
X2NmbGFnc0AgJChBTV9DRkxBR1MpCiBDRm9udHpfTERBREQgPSBsaWJMQ0QuYSBsaWJiaWdudW0u
YQogQ0ZvbnR6NjMzX0xEQUREID0gbGliTENELmEgbGliYmlnbnVtLmEKIENGb250elBhY2tldF9M
REFERCA9IGxpYkxDRC5hIGxpYmJpZ251bS5hCkBAIC0zOTAsNiArMzk2LDcgQEAKIHB5cmFtaWRf
TERBREQgPSBsaWJMQ0QuYQogc2VyaWFsUE9TX0xEQUREID0gbGliTENELmEgbGliYmlnbnVtLmEK
IHNlcmlhbFZGRF9MREFERCA9IGxpYkxDRC5hIGxpYmJpZ251bS5hCitzaHV0dGxlVkZEX0xEQURE
ID0gQGxpYnVzYl9saWJzQCBsaWJMQ0QuYSBsaWJiaWdudW0uYQogc3ZnYV9MREFERCA9IEBMSUJT
VkdBQAogdDY5NjNfTERBREQgPSBsaWJMQ0QuYQogdHlhbl9MREFERCA9IGxpYkxDRC5hIGxpYmJp
Z251bS5hCkBAIC00MzIsNiArNDM5LDcgQEAKIHNlZDE1MjBfU09VUkNFUyA9IGxjZC5oIHNlZDE1
MjAuYyBzZWQxNTIwLmggc2VkMTUyMGZtLmMgc2VkMTUyMGZtLmggcG9ydC5oIHJlcG9ydC5oCiBz
ZXJpYWxQT1NfU09VUkNFUyA9IGxjZC5oIGxjZF9saWIuaCBzZXJpYWxQT1MuYyBzZXJpYWxQT1Mu
aCByZXBvcnQuaCBhZHZfYmlnbnVtLmgKIHNlcmlhbFZGRF9TT1VSQ0VTID0gbGNkLmggbGNkX2xp
Yi5oIHNlcmlhbFZGRC5jIHNlcmlhbFZGRC5oIHJlcG9ydC5oIGFkdl9iaWdudW0uaCBzZXJpYWxW
RkRfZGlzcGxheXMuYyBzZXJpYWxWRkRfZGlzcGxheXMuaCBzZXJpYWxWRkRfaW8uYyBzZXJpYWxW
RkRfaW8uaAorc2h1dHRsZVZGRF9TT1VSQ0VTID0gbGNkLmggc2h1dHRsZVZGRC5jIHNodXR0bGVW
RkQuaCByZXBvcnQuaAogc3R2NTczMF9TT1VSQ0VTID0gbGNkLmggc3R2NTczMC5jIHN0djU3MzAu
aCByZXBvcnQuaAogc3ZnYV9TT1VSQ0VTID0gbGNkLmggc3ZnYWxpYl9kcnYuYyBzdmdhbGliX2Ry
di5oIHJlcG9ydC5oCiB0Njk2M19TT1VSQ0VTID0gbGNkLmggbGNkX2xpYi5oIHQ2OTYzLmMgdDY5
NjMuaCB0Njk2M19mb250LmggcmVwb3J0LmgKQEAgLTYwNyw2ICs2MTUsOSBAQAogc2VyaWFsVkZE
JChFWEVFWFQpOiAkKHNlcmlhbFZGRF9PQkpFQ1RTKSAkKHNlcmlhbFZGRF9ERVBFTkRFTkNJRVMp
IAogCUBybSAtZiBzZXJpYWxWRkQkKEVYRUVYVCkKIAkkKExJTkspICQoc2VyaWFsVkZEX09CSkVD
VFMpICQoc2VyaWFsVkZEX0xEQUREKSAkKExJQlMpCitzaHV0dGxlVkZEJChFWEVFWFQpOiAkKHNo
dXR0bGVWRkRfT0JKRUNUUykgJChzaHV0dGxlVkZEX0RFUEVOREVOQ0lFUykgCisJQHJtIC1mIHNo
dXR0bGVWRkQkKEVYRUVYVCkKKwkkKHNodXR0bGVWRkRfTElOSykgJChzaHV0dGxlVkZEX09CSkVD
VFMpICQoc2h1dHRsZVZGRF9MREFERCkgJChMSUJTKQogc2xpJChFWEVFWFQpOiAkKHNsaV9PQkpF
Q1RTKSAkKHNsaV9ERVBFTkRFTkNJRVMpIAogCUBybSAtZiBzbGkkKEVYRUVYVCkKIAkkKExJTksp
ICQoc2xpX09CSkVDVFMpICQoc2xpX0xEQUREKSAkKExJQlMpCkBAIC02ODksNiArNzAwLDcgQEAK
IEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9zZXJpYWxW
RkQuUG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4v
JChERVBESVIpL3NlcmlhbFZGRF9kaXNwbGF5cy5Qb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBA
YW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvc2VyaWFsVkZEX2lvLlBvQGFtX19x
dW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9z
aHV0dGxlVkZELXNodXR0bGVWRkQuUG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNs
dWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL3N0djU3MzAuUG9AYW1fX3F1b3RlQAogQEFNREVQ
X1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL3N2Z2FsaWJfZHJ2LlBv
QGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQ
RElSKS90Njk2My5Qb0BhbV9fcXVvdGVACkBAIC05MjIsNiArOTM0LDIwIEBACiBAQU1ERVBfVFJV
RUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChk
ZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACiBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChDQykgJChE
RUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQ
RkxBR1MpICQocGljb2xjZF9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBwaWNvbGNkLXBpY29sY2Qu
b2JqIGBpZiB0ZXN0IC1mICdwaWNvbGNkLmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAncGljb2xjZC5j
JzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9waWNvbGNkLmMnOyBmaWAKIAorc2h1dHRs
ZVZGRC1zaHV0dGxlVkZELm86IHNodXR0bGVWRkQuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChD
QykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1Mp
ICQoQ1BQRkxBR1MpICQoc2h1dHRsZVZGRF9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgc2h1dHRsZVZG
RC1zaHV0dGxlVkZELm8gLU1EIC1NUCAtTUYgJChERVBESVIpL3NodXR0bGVWRkQtc2h1dHRsZVZG
RC5UcG8gLWMgLW8gc2h1dHRsZVZGRC1zaHV0dGxlVkZELm8gYHRlc3QgLWYgJ3NodXR0bGVWRkQu
YycgfHwgZWNobyAnJChzcmNkaXIpLydgc2h1dHRsZVZGRC5jCitAYW1fX2Zhc3RkZXBDQ19UUlVF
QAltdiAtZiAkKERFUERJUikvc2h1dHRsZVZGRC1zaHV0dGxlVkZELlRwbyAkKERFUERJUikvc2h1
dHRsZVZGRC1zaHV0dGxlVkZELlBvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJ
c291cmNlPSdzaHV0dGxlVkZELmMnIG9iamVjdD0nc2h1dHRsZVZGRC1zaHV0dGxlVkZELm8nIGxp
YnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFM
U0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NM
QVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xV
REVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKHNodXR0bGVWRkRf
Q0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gc2h1dHRsZVZGRC1zaHV0dGxlVkZELm8gYHRlc3QgLWYg
J3NodXR0bGVWRkQuYycgfHwgZWNobyAnJChzcmNkaXIpLydgc2h1dHRsZVZGRC5jCisKK3NodXR0
bGVWRkQtc2h1dHRsZVZGRC5vYmo6IHNodXR0bGVWRkQuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJ
JChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxB
R1MpICQoQ1BQRkxBR1MpICQoc2h1dHRsZVZGRF9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgc2h1dHRs
ZVZGRC1zaHV0dGxlVkZELm9iaiAtTUQgLU1QIC1NRiAkKERFUERJUikvc2h1dHRsZVZGRC1zaHV0
dGxlVkZELlRwbyAtYyAtbyBzaHV0dGxlVkZELXNodXR0bGVWRkQub2JqIGBpZiB0ZXN0IC1mICdz
aHV0dGxlVkZELmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnc2h1dHRsZVZGRC5jJzsgZWxzZSAkKENZ
R1BBVEhfVykgJyQoc3JjZGlyKS9zaHV0dGxlVkZELmMnOyBmaWAKK0BhbV9fZmFzdGRlcENDX1RS
VUVACW12IC1mICQoREVQRElSKS9zaHV0dGxlVkZELXNodXR0bGVWRkQuVHBvICQoREVQRElSKS9z
aHV0dGxlVkZELXNodXR0bGVWRkQuUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNF
QAlzb3VyY2U9J3NodXR0bGVWRkQuYycgb2JqZWN0PSdzaHV0dGxlVkZELXNodXR0bGVWRkQub2Jq
JyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcEND
X0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJB
Q0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKENDKSAkKERFRlMpICQoREVGQVVMVF9J
TkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChzaHV0dGxl
VkZEX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIHNodXR0bGVWRkQtc2h1dHRsZVZGRC5vYmogYGlm
IHRlc3QgLWYgJ3NodXR0bGVWRkQuYyc7IHRoZW4gJChDWUdQQVRIX1cpICdzaHV0dGxlVkZELmMn
OyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL3NodXR0bGVWRkQuYyc7IGZpYAorCiBJRDog
JChIRUFERVJTKSAkKFNPVVJDRVMpICQoTElTUCkgJChUQUdTX0ZJTEVTKQogCWxpc3Q9JyQoU09V
UkNFUykgJChIRUFERVJTKSAkKExJU1ApICQoVEFHU19GSUxFUyknOyBcCiAJdW5pcXVlPWBmb3Ig
aSBpbiAkJGxpc3Q7IGRvIFwKZGlmZiAtTmF1ciBsY2Rwcm9jLWN2cy5vcmlnL3NlcnZlci9kcml2
ZXJzL3NodXR0bGVWRkQuYyBsY2Rwcm9jL3NlcnZlci9kcml2ZXJzL3NodXR0bGVWRkQuYwotLS0g
bGNkcHJvYy1jdnMub3JpZy9zZXJ2ZXIvZHJpdmVycy9zaHV0dGxlVkZELmMJMTk2OS0xMi0zMSAx
NjowMDowMC4wMDAwMDAwMDAgLTA4MDAKKysrIGxjZHByb2Mvc2VydmVyL2RyaXZlcnMvc2h1dHRs
ZVZGRC5jCTIwMDctMDctMDUgMDM6NDE6NDguMDAwMDAwMDAwIC0wNzAwCkBAIC0wLDAgKzEsMzEw
IEBACisvKgorICogU2h1dHRsZVZGRCBkcml2ZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcg
VGhpZW4gVnUKKyAqIAorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UuCisgKiAKKyAq
IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKiAKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
cHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxCisgKgorICogQmFzZWQgb24gd29yayBmcm9tOgorICogICBMQ0Rwcm9jIHRleHQgZHJp
dmVyCisgKiAgIHNldHZmZCBmcm9tIGh0dHA6Ly9qZXJlbXkuaW5mb2dhbWkuY29tL1NldFZGRAor
ICogICB2ZmQgZnJvbSBodHRwOi8vd3d3LmxpbnV4b3dsLmNvbS9zb2Z0d2FyZS8KKyAqLworCisK
KyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2lu
Y2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHVuaXN0ZC5o
PgorI2luY2x1ZGUgPHVzYi5oPgorCisjaW5jbHVkZSAibGNkLmgiCisjaW5jbHVkZSAic2h1dHRs
ZVZGRC5oIgorI2luY2x1ZGUgInJlcG9ydC5oIgorCisKKy8vIFZhcmlhYmxlcyBpbiB0aGUgZHJp
dmVyIG1vZHVsZQorTU9EVUxFX0VYUE9SVCBjaGFyICphcGlfdmVyc2lvbiA9IEFQSV9WRVJTSU9O
OworTU9EVUxFX0VYUE9SVCBpbnQgc3RheV9pbl9mb3JlZ3JvdW5kID0gMDsKK01PRFVMRV9FWFBP
UlQgaW50IHN1cHBvcnRzX211bHRpcGxlID0gMDsKK01PRFVMRV9FWFBPUlQgY2hhciAqc3ltYm9s
X3ByZWZpeCA9ICJzaHV0dGxlVkZEXyI7CisKKworLy8gUHJpdmF0ZSBkYXRhCit0eXBlZGVmIHN0
cnVjdCBkcml2ZXJfcHJpdmF0ZV9kYXRhIHsKKyAgdXNiX2Rldl9oYW5kbGUgKmRldjsKKyAgaW50
IHdpZHRoOworICBpbnQgaGVpZ2h0OworICBpbnQgY2VsbHdpZHRoOworICBpbnQgY2VsbGhlaWdo
dDsKKyAgY2hhciAqZnJhbWVidWY7CisgIGNoYXIgKmxhc3RfZnJhbWVidWY7CisgIHVuc2lnbmVk
IGxvbmcgaWNvbnM7CisgIHVuc2lnbmVkIGxvbmcgbGFzdF9pY29uczsKK30gUHJpdmF0ZURhdGE7
CisKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vIEZvciBTaHV0dGxl
VkZEIE91dHB1dCAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLworCit2b2lkIHNlbmRfcGFja2V0KERyaXZlciAqZHJ2dGhpcywgY2hhciogcGFja2V0KSB7
CisgIFByaXZhdGVEYXRhICpwID0gZHJ2dGhpcy0+cHJpdmF0ZV9kYXRhOworCisgIGludCBpOwor
ICBmb3IgKGkgPSAwOyBpIDwgU0hVVFRMRV9WRkRfV1JJVEVfQVRURU1QVFM7ICsraSkgeworICAg
IGlmICh1c2JfY29udHJvbF9tc2cocC0+ZGV2LAorICAgICAgICAgICAgICAgICAgICAgICAgMHgy
MSwKKyAgICAgICAgICAgICAgICAgICAgICAgIDB4MDksCisgICAgICAgICAgICAgICAgICAgICAg
ICAweDAyMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDEsCisgICAgICAgICAgICAg
ICAgICAgICAgICBwYWNrZXQsCisgICAgICAgICAgICAgICAgICAgICAgICBTSFVUVExFX1ZGRF9Q
QUNLRVRfU0laRSwgMTAwKSA9PQorCVNIVVRUTEVfVkZEX1BBQ0tFVF9TSVpFKSB7CisgICAgICB1
c2xlZXAoU0hVVFRMRV9WRkRfU1VDQ0VTU19TTEVFUF9VU0VDKTsKKyAgICAgIGJyZWFrOworICAg
IH0KKyAgICByZXBvcnQoUlBUX0VSUiwgIiVzOiB3cml0ZSBmYWlsZWQgcmV0cnlpbmcuLi4iLCBk
cnZ0aGlzLT5uYW1lKTsKKyAgICB1c2xlZXAoU0hVVFRMRV9WRkRfUkVUUllfU0xFRVBfVVNFQyk7
CisgIH0KK30KKworCitNT0RVTEVfRVhQT1JUIGludCBzaHV0dGxlVkZEX2luaXQoRHJpdmVyICpk
cnZ0aGlzKSB7CisgIFByaXZhdGVEYXRhICpwOworCisgIC8vIGFsbG9jYXRlIGFuZCBzdG9yZSBw
cml2YXRlIGRhdGEKKyAgcCA9IChQcml2YXRlRGF0YSAqKWNhbGxvYygxLCBzaXplb2YoUHJpdmF0
ZURhdGEpKTsKKyAgaWYgKHAgPT0gTlVMTCkgeworICAgIHJlcG9ydChSUFRfRVJSLCAiJXM6IHVu
YWJsZSB0byBhbGxvY2F0ZSBwcml2YXRlIGRhdGEiLCBkcnZ0aGlzLT5uYW1lKTsKKyAgICByZXR1
cm4gLTE7CisgIH0KKyAgaWYgKGRydnRoaXMtPnN0b3JlX3ByaXZhdGVfcHRyKGRydnRoaXMsIHAp
IDwgMCkgeworICAgIHJlcG9ydChSUFRfRVJSLCAiJXM6IHVuYWJsZSB0byBzdG9yZSBwcml2YXRl
IGRhdGEiLCBkcnZ0aGlzLT5uYW1lKTsKKyAgICByZXR1cm4gLTE7CisgIH0KKworICAvLyBpbml0
aWFsaXplIHByaXZhdGUgZGF0YQorICBwLT5kZXYgPSBOVUxMOworICBwLT53aWR0aCA9IFNIVVRU
TEVfVkZEX1dJRFRIOworICBwLT5oZWlnaHQgPSBTSFVUVExFX1ZGRF9IRUlHSFQ7CisgIHAtPmNl
bGx3aWR0aCA9IFNIVVRUTEVfVkZEX0NFTExXSURUSDsKKyAgcC0+Y2VsbGhlaWdodCA9IFNIVVRU
TEVfVkZEX0NFTExIRUlHSFQ7CisgIHAtPmZyYW1lYnVmID0gKGNoYXIgKiltYWxsb2MocC0+d2lk
dGggKiBwLT5oZWlnaHQpOworICBpZiAocC0+ZnJhbWVidWYgPT0gTlVMTCkgeworICAgIHJlcG9y
dChSUFRfRVJSLCAiJXM6IHVuYWJsZSB0byBjcmVhdGUgZnJhbWVidWZmZXIiLCBkcnZ0aGlzLT5u
YW1lKTsKKyAgICByZXR1cm4gLTE7CisgIH0KKyAgbWVtc2V0KHAtPmZyYW1lYnVmLCAnICcsIHAt
PndpZHRoICogcC0+aGVpZ2h0KTsKKyAgcC0+bGFzdF9mcmFtZWJ1ZiA9IChjaGFyICopbWFsbG9j
KHAtPndpZHRoICogcC0+aGVpZ2h0KTsKKyAgaWYgKHAtPmxhc3RfZnJhbWVidWYgPT0gTlVMTCkg
eworICAgIHJlcG9ydChSUFRfRVJSLCAiJXM6IHVuYWJsZSB0byBjcmVhdGUgc2Vjb25kIGZyYW1l
YnVmZmVyIiwgZHJ2dGhpcy0+bmFtZSk7CisgICAgcmV0dXJuIC0xOworICB9CisgIG1lbXNldChw
LT5sYXN0X2ZyYW1lYnVmLCAwLCBwLT53aWR0aCAqIHAtPmhlaWdodCk7CisgIHAtPmljb25zID0g
MDsKKyAgcC0+bGFzdF9pY29ucyA9IDA7CisKKyAgLy8gZmluZCBWRkQKKyAgdXNiX2luaXQoKTsK
KyAgdXNiX2ZpbmRfYnVzc2VzKCk7CisgIHVzYl9maW5kX2RldmljZXMoKTsKKyAgc3RydWN0IHVz
Yl9idXMgKmJ1czsKKyAgZm9yIChidXMgPSB1c2JfZ2V0X2J1c3NlcygpOyBidXMgIT0gTlVMTDsg
YnVzID0gYnVzLT5uZXh0KSB7CisgICAgc3RydWN0IHVzYl9kZXZpY2UgKmRldjsKKyAgICBmb3Ig
KGRldiA9IGJ1cy0+ZGV2aWNlczsgZGV2ICE9IE5VTEw7IGRldiA9IGRldi0+bmV4dCkgeworICAg
ICAgaWYgKGRldi0+ZGVzY3JpcHRvci5pZFZlbmRvciA9PSBTSFVUVExFX1ZGRF9WRU5ET1JfSUQg
JiYKKyAgICAgICAgICBkZXYtPmRlc2NyaXB0b3IuaWRQcm9kdWN0ID09IFNIVVRUTEVfVkZEX1BS
T0RVQ1RfSUQpIHsKKyAgICAgICAgcC0+ZGV2ID0gdXNiX29wZW4oZGV2KTsKKyAgICAgIH0KKyAg
ICB9CisgIH0KKyAgaWYgKHAtPmRldiA9PSBOVUxMKSB7CisgICAgcmVwb3J0KFJQVF9FUlIsICIl
czogdW5hYmxlIHRvIGZpbmQgU2h1dHRsZSBWRkQiLCBkcnZ0aGlzLT5uYW1lKTsKKyAgICByZXR1
cm4gLTE7CisgIH0KKyAgaW50IGNsYWltX3JjID0gdXNiX2NsYWltX2ludGVyZmFjZShwLT5kZXYs
IFNIVVRUTEVfVkZEX0lOVEVSRkFDRV9OVU0pOworICBpZiAoY2xhaW1fcmMgPCAwKSB7CisgICAg
cmVwb3J0KFJQVF9FUlIsCisgICAgICAgICAgICIlczogdW5hYmxlIHRvIGNsYWltIGludGVyZmFj
ZTogJXMiLAorCSAgIGRydnRoaXMtPm5hbWUsIHN0cmVycm9yKGNsYWltX3JjKSk7CisgICAgcmV0
dXJuIC0xOworICB9CisKKyAgcmVwb3J0KFJQVF9ERUJVRywgIiVzOiBpbml0KCkgZG9uZSIsIGRy
dnRoaXMtPm5hbWUpOworICByZXR1cm4gMDsKK30KKworCitNT0RVTEVfRVhQT1JUIHZvaWQgc2h1
dHRsZVZGRF9jbG9zZShEcml2ZXIgKmRydnRoaXMpIHsKKyAgUHJpdmF0ZURhdGEgKnAgPSBkcnZ0
aGlzLT5wcml2YXRlX2RhdGE7CisgIGlmIChwICE9IE5VTEwpIHsKKyAgICBpZiAocC0+ZGV2ICE9
IE5VTEwpIHsKKyAgICAgIGlmICh1c2JfcmVsZWFzZV9pbnRlcmZhY2UocC0+ZGV2LCBTSFVUVExF
X1ZGRF9JTlRFUkZBQ0VfTlVNKSA8IDApIHsKKyAgICAgICAgcmVwb3J0KFJQVF9FUlIsICIlczog
dW5hYmxlIHRvIHJlbGVhc2UgaW50ZXJmYWNlIiwgZHJ2dGhpcy0+bmFtZSk7CisgICAgICB9Cisg
ICAgICBpZiAodXNiX2Nsb3NlKHAtPmRldikgPCAwKSB7CisgICAgICAgIHJlcG9ydChSUFRfRVJS
LCAiJXM6IHVuYWJsZSB0byBjbG9zZSBkZXZpY2UiLCBkcnZ0aGlzLT5uYW1lKTsKKyAgICAgIH0K
KyAgICAgIHAtPmRldiA9IE5VTEw7CisgICAgfQorICAgIGlmIChwLT5mcmFtZWJ1ZiAhPSBOVUxM
KSB7CisgICAgICBmcmVlKHAtPmZyYW1lYnVmKTsKKyAgICB9CisgICAgaWYgKHAtPmxhc3RfZnJh
bWVidWYgIT0gTlVMTCkgeworICAgICAgZnJlZShwLT5sYXN0X2ZyYW1lYnVmKTsKKyAgICB9Cisg
ICAgZnJlZShwKTsKKyAgfQorICBkcnZ0aGlzLT5zdG9yZV9wcml2YXRlX3B0cihkcnZ0aGlzLCBO
VUxMKTsKK30KKworCitNT0RVTEVfRVhQT1JUIGludCBzaHV0dGxlVkZEX3dpZHRoKERyaXZlciAq
ZHJ2dGhpcykgeworICBQcml2YXRlRGF0YSAqcCA9IGRydnRoaXMtPnByaXZhdGVfZGF0YTsKKyAg
cmV0dXJuIHAtPndpZHRoOworfQorCisKK01PRFVMRV9FWFBPUlQgaW50IHNodXR0bGVWRkRfaGVp
Z2h0KERyaXZlciAqZHJ2dGhpcykgeworICBQcml2YXRlRGF0YSAqcCA9IGRydnRoaXMtPnByaXZh
dGVfZGF0YTsKKyAgcmV0dXJuIHAtPmhlaWdodDsKK30KKworCitNT0RVTEVfRVhQT1JUIHZvaWQg
c2h1dHRsZVZGRF9jbGVhcihEcml2ZXIgKmRydnRoaXMpIHsKKyAgUHJpdmF0ZURhdGEgKnAgPSBk
cnZ0aGlzLT5wcml2YXRlX2RhdGE7CisgIG1lbXNldChwLT5mcmFtZWJ1ZiwgJyAnLCBwLT53aWR0
aCAqIHAtPmhlaWdodCk7CisgIHAtPmljb25zID0gMDsKK30KKworCitNT0RVTEVfRVhQT1JUIHZv
aWQgc2h1dHRsZVZGRF9mbHVzaChEcml2ZXIgKmRydnRoaXMpIHsKKyAgUHJpdmF0ZURhdGEgKnAg
PSBkcnZ0aGlzLT5wcml2YXRlX2RhdGE7CisgIGNoYXIgcGFja2V0W1NIVVRUTEVfVkZEX1BBQ0tF
VF9TSVpFXTsKKworICAvLyBzZXQgdGV4dAorICBpZiAoc3RybmNtcChwLT5sYXN0X2ZyYW1lYnVm
LCBwLT5mcmFtZWJ1ZiwgcC0+d2lkdGggKiBwLT5oZWlnaHQpICE9IDApIHsKKyAgICAvLyBtb3Zl
IGN1cnNvciB0byBmcm9udAorICAgIG1lbXNldChwYWNrZXQsIDAsIFNIVVRUTEVfVkZEX1BBQ0tF
VF9TSVpFKTsKKyAgICBwYWNrZXRbMF0gPSAoMSA8PCA0KSArIDE7CisgICAgcGFja2V0WzFdID0g
MjsKKyAgICBzZW5kX3BhY2tldChkcnZ0aGlzLCBwYWNrZXQpOworICAKKyAgICAvLyB3cml0ZSBm
cmFtZWJ1ZlswLTZdCisgICAgbWVtc2V0KHBhY2tldCwgMCwgU0hVVFRMRV9WRkRfUEFDS0VUX1NJ
WkUpOworICAgIHBhY2tldFswXSA9ICg5IDw8IDQpICsgNzsKKyAgICBzdHJuY3B5KCZwYWNrZXRb
MV0sICZwLT5mcmFtZWJ1ZlswXSwgNyk7CisgICAgc2VuZF9wYWNrZXQoZHJ2dGhpcywgcGFja2V0
KTsKKyAgCisgICAgLy8gd3JpdGUgZnJhbWVidWZbNy0xM10KKyAgICBtZW1zZXQocGFja2V0LCAw
LCBTSFVUVExFX1ZGRF9QQUNLRVRfU0laRSk7CisgICAgcGFja2V0WzBdID0gKDkgPDwgNCkgKyA3
OworICAgIHN0cm5jcHkoJnBhY2tldFsxXSwgJnAtPmZyYW1lYnVmWzddLCA3KTsKKyAgICBzZW5k
X3BhY2tldChkcnZ0aGlzLCBwYWNrZXQpOworICAKKyAgICAvLyB3cml0ZSBmcmFtZWJ1ZlsxNC0y
MF0KKyAgICBtZW1zZXQocGFja2V0LCAwLCBTSFVUVExFX1ZGRF9QQUNLRVRfU0laRSk7CisgICAg
cGFja2V0WzBdID0gKDkgPDwgNCkgKyA2OworICAgIHN0cm5jcHkoJnBhY2tldFsxXSwgJnAtPmZy
YW1lYnVmWzE0XSwgNik7CisgICAgc2VuZF9wYWNrZXQoZHJ2dGhpcywgcGFja2V0KTsKKworICAg
IHN0cm5jcHkocC0+bGFzdF9mcmFtZWJ1ZiwgcC0+ZnJhbWVidWYsIHAtPndpZHRoICogcC0+aGVp
Z2h0KTsKKyAgfQorCisgIC8vIHNldCBpY29ucworICBpZiAocC0+bGFzdF9pY29ucyAhPSBwLT5p
Y29ucykgeworICAgIG1lbXNldChwYWNrZXQsIDAsIFNIVVRUTEVfVkZEX1BBQ0tFVF9TSVpFKTsK
KyAgICBwYWNrZXRbMF0gPSAoNyA8PCA0KSArIDQ7CisgICAgcGFja2V0WzFdID0gKHAtPmljb25z
ID4+IDE1KSAmIDB4MWY7CisgICAgcGFja2V0WzJdID0gKHAtPmljb25zID4+IDEwKSAmIDB4MWY7
CisgICAgcGFja2V0WzNdID0gKHAtPmljb25zID4+IDUpICYgMHgxZjsKKyAgICBwYWNrZXRbNF0g
PSBwLT5pY29ucyAmIDB4MWY7CisgICAgc2VuZF9wYWNrZXQoZHJ2dGhpcywgcGFja2V0KTsKKwor
ICAgIHAtPmxhc3RfaWNvbnMgPSBwLT5pY29uczsKKyAgfQorfQorCitNT0RVTEVfRVhQT1JUIHZv
aWQgc2h1dHRsZVZGRF9zdHJpbmcoCisgICAgRHJpdmVyICpkcnZ0aGlzLCBpbnQgeCwgaW50IHks
IGNvbnN0IGNoYXIgc3RyaW5nW10pIHsKKyAgUHJpdmF0ZURhdGEgKnAgPSBkcnZ0aGlzLT5wcml2
YXRlX2RhdGE7CisKKyAgLS14OyAtLXk7CisgIGlmICh5IDwgMCB8fCB5ID49IHAtPmhlaWdodCkK
KyAgICByZXR1cm47CisKKyAgaW50IGk7CisgIGZvciAoaSA9IDA7IChzdHJpbmdbaV0gIT0gJ1ww
JykgJiYgKHggPCBwLT53aWR0aCk7ICsraSwgKyt4KSB7CisgICAgaWYgKHggPj0gMCkgeyAgICAv
LyBubyB3cml0ZSBsZWZ0IG9mIGxlZnQgYm9yZGVyCisgICAgICBwLT5mcmFtZWJ1ZlsoeSAqIHAt
PndpZHRoKSArIHhdID0gc3RyaW5nW2ldOworICAgIH0KKyAgfQorfQorCisKK01PRFVMRV9FWFBP
UlQgdm9pZCBzaHV0dGxlVkZEX2NocihEcml2ZXIgKmRydnRoaXMsIGludCB4LCBpbnQgeSwgY2hh
ciBjKSB7CisgIFByaXZhdGVEYXRhICpwID0gZHJ2dGhpcy0+cHJpdmF0ZV9kYXRhOworCisgIC0t
eDsgLS15OworICBpZiAoeCA+PSAwICYmIHggPCBwLT53aWR0aCAmJiB5ID49IDAgJiYgeSA8IHAt
PmhlaWdodCkgeworICAgIHAtPmZyYW1lYnVmWyh5ICogcC0+d2lkdGgpICsgeF0gPSBjOworICB9
Cit9CisKKworTU9EVUxFX0VYUE9SVCBpbnQgc2h1dHRsZVZGRF9pY29uKERyaXZlciAqZHJ2dGhp
cywgaW50IHgsIGludCB5LCBpbnQgaWNvbikgeworICBQcml2YXRlRGF0YSAqcCA9IGRydnRoaXMt
PnByaXZhdGVfZGF0YTsKKworICBzd2l0Y2ggKGljb24pIHsKKyAgICBjYXNlIElDT05fU1RPUDoK
KyAgICAgIHAtPmljb25zID0gU0hVVFRMRV9WRkRfSUNPTl9TVE9QOworICAgICAgcmV0dXJuIDA7
CisgICAgY2FzZSBJQ09OX1BBVVNFOgorICAgICAgcC0+aWNvbnMgPSBTSFVUVExFX1ZGRF9JQ09O
X1BBVVNFOworICAgICAgcmV0dXJuIDA7CisgICAgY2FzZSBJQ09OX1BMQVk6CisgICAgICBwLT5p
Y29ucyA9IFNIVVRUTEVfVkZEX0lDT05fUExBWTsKKyAgICAgIHJldHVybiAwOworICAgIGNhc2Ug
SUNPTl9QTEFZUjoKKyAgICAgIHAtPmljb25zID0gU0hVVFRMRV9WRkRfSUNPTl9SRVZFUlNFOwor
ICAgICAgcmV0dXJuIDA7CisgICAgY2FzZSBJQ09OX0ZGOgorICAgICAgcC0+aWNvbnMgPSBTSFVU
VExFX1ZGRF9JQ09OX0ZBU1RGT1JXQVJEOworICAgICAgcmV0dXJuIDA7CisgICAgY2FzZSBJQ09O
X0ZSOgorICAgICAgcC0+aWNvbnMgPSBTSFVUVExFX1ZGRF9JQ09OX1JFV0lORDsKKyAgICAgIHJl
dHVybiAwOworICAgIGNhc2UgSUNPTl9SRUM6CisgICAgICBwLT5pY29ucyA9IFNIVVRUTEVfVkZE
X0lDT05fUkVDT1JEOworICAgICAgcmV0dXJuIDA7CisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVy
biAtMTsKKyAgfQorfQorCisKK01PRFVMRV9FWFBPUlQgaW50IHNodXR0bGVWRkRfY2VsbHdpZHRo
KERyaXZlciAqZHJ2dGhpcykgeworICBQcml2YXRlRGF0YSAqcCA9IGRydnRoaXMtPnByaXZhdGVf
ZGF0YTsKKyAgcmV0dXJuIHAtPmNlbGx3aWR0aDsKK30KKworCitNT0RVTEVfRVhQT1JUIGludCBz
aHV0dGxlVkZEX2NlbGxoZWlnaHQoRHJpdmVyICpkcnZ0aGlzKSB7CisgIFByaXZhdGVEYXRhICpw
ID0gZHJ2dGhpcy0+cHJpdmF0ZV9kYXRhOworICByZXR1cm4gcC0+Y2VsbGhlaWdodDsKK30KZGlm
ZiAtTmF1ciBsY2Rwcm9jLWN2cy5vcmlnL3NlcnZlci9kcml2ZXJzL3NodXR0bGVWRkQuaCBsY2Rw
cm9jL3NlcnZlci9kcml2ZXJzL3NodXR0bGVWRkQuaAotLS0gbGNkcHJvYy1jdnMub3JpZy9zZXJ2
ZXIvZHJpdmVycy9zaHV0dGxlVkZELmgJMTk2OS0xMi0zMSAxNjowMDowMC4wMDAwMDAwMDAgLTA4
MDAKKysrIGxjZHByb2Mvc2VydmVyL2RyaXZlcnMvc2h1dHRsZVZGRC5oCTIwMDctMDctMDUgMDM6
NDA6MTQuMDAwMDAwMDAwIC0wNzAwCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBTaHV0dGxlVkZE
IGRyaXZlcgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBUaGllbiBWdQorICogCisgKiBUaGlz
IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
IG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KKyAqIAorICogVGhpcyBwcm9ncmFtIGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
IAorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRl
IHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEKKyAqCisgKiBCYXNlZCBv
biB3b3JrIGZyb206CisgKiAgIExDRHByb2MgdGV4dCBkcml2ZXIKKyAqICAgc2V0dmZkIGZyb20g
aHR0cDovL2plcmVteS5pbmZvZ2FtaS5jb20vU2V0VkZECisgKiAgIHZmZCBmcm9tIGh0dHA6Ly93
d3cubGludXhvd2wuY29tL3NvZnR3YXJlLworICovCisKKyNpZm5kZWYgU0hVVFRMRV9WRkRfSAor
I2RlZmluZSBTSFVUVExFX1ZGRF9ICisKKyNpbmNsdWRlICJsY2QuaCIKKworLy8gbWFuZGF0b3J5
IGZ1bmN0aW9ucyAobmVjZXNzYXJ5IGZvciBhbGwgZHJpdmVycykKK01PRFVMRV9FWFBPUlQgaW50
IHNodXR0bGVWRkRfaW5pdChEcml2ZXIgKmRydnRoaXMpOworTU9EVUxFX0VYUE9SVCB2b2lkIHNo
dXR0bGVWRkRfY2xvc2UoRHJpdmVyICpkcnZ0aGlzKTsKKworLy8gZXNzZW50aWFsIG91dHB1dCBm
dW5jdGlvbnMgKG5lY2Vzc2FyeSBmb3Igb3V0cHV0IGRyaXZlcnMpCitNT0RVTEVfRVhQT1JUIGlu
dCBzaHV0dGxlVkZEX3dpZHRoKERyaXZlciAqZHJ2dGhpcyk7CitNT0RVTEVfRVhQT1JUIGludCBz
aHV0dGxlVkZEX2hlaWdodChEcml2ZXIgKmRydnRoaXMpOworTU9EVUxFX0VYUE9SVCB2b2lkIHNo
dXR0bGVWRkRfY2xlYXIoRHJpdmVyICpkcnZ0aGlzKTsKK01PRFVMRV9FWFBPUlQgdm9pZCBzaHV0
dGxlVkZEX2ZsdXNoKERyaXZlciAqZHJ2dGhpcyk7CitNT0RVTEVfRVhQT1JUIHZvaWQgc2h1dHRs
ZVZGRF9zdHJpbmcoCisgICAgRHJpdmVyICpkcnZ0aGlzLCBpbnQgeCwgaW50IHksIGNvbnN0IGNo
YXIgc3RyaW5nW10pOworTU9EVUxFX0VYUE9SVCB2b2lkIHNodXR0bGVWRkRfY2hyKERyaXZlciAq
ZHJ2dGhpcywgaW50IHgsIGludCB5LCBjaGFyIGMpOworCisvLyBleHRlbmRlZCBvdXRwdXQgZnVu
Y3Rpb25zCitNT0RVTEVfRVhQT1JUIGludCBzaHV0dGxlVkZEX2ljb24oRHJpdmVyICpkcnZ0aGlz
LCBpbnQgeCwgaW50IHksIGludCBpY29uKTsKKworLy8gdXNlci1kZWZpbmVkIGNoYXJhY3RlciBm
dW5jdGlvbnMKK01PRFVMRV9FWFBPUlQgaW50IHNodXR0bGVWRkRfY2VsbHdpZHRoKERyaXZlciAq
ZHJ2dGhpcyk7CitNT0RVTEVfRVhQT1JUIGludCBzaHV0dGxlVkZEX2NlbGxoZWlnaHQoRHJpdmVy
ICpkcnZ0aGlzKTsKKworCisvLyBWRkQgcGh5c2ljYWwgZGltZW5zaW9ucworI2RlZmluZSBTSFVU
VExFX1ZGRF9XSURUSCAgICAgICAgIDIwCisjZGVmaW5lIFNIVVRUTEVfVkZEX0hFSUdIVCAgICAg
ICAgMQorI2RlZmluZSBTSFVUVExFX1ZGRF9DRUxMV0lEVEggICAgIDUKKyNkZWZpbmUgU0hVVFRM
RV9WRkRfQ0VMTEhFSUdIVCAgICA4CisKKy8vIFZGRCBVU0IgcHJvcGVydGllcworI2RlZmluZSBT
SFVUVExFX1ZGRF9WRU5ET1JfSUQgICAgICAgMHgxMzA4CisjZGVmaW5lIFNIVVRUTEVfVkZEX1BS
T0RVQ1RfSUQgICAgICAweDAwMDMKKyNkZWZpbmUgU0hVVFRMRV9WRkRfSU5URVJGQUNFX05VTSAg
IDEKKworLy8gVkZEIFVTQiBjb250cm9sIG1lc3NhZ2UKKyNkZWZpbmUgU0hVVFRMRV9WRkRfUEFD
S0VUX1NJWkUgICAgICAgICAgOAorI2RlZmluZSBTSFVUVExFX1ZGRF9XUklURV9BVFRFTVBUUyAg
ICAgICAzCisjZGVmaW5lIFNIVVRUTEVfVkZEX1NVQ0NFU1NfU0xFRVBfVVNFQyAgIDI1NjAwCisj
ZGVmaW5lIFNIVVRUTEVfVkZEX1JFVFJZX1NMRUVQX1VTRUMgICAgIDI1NjAwCisKKy8vIFZGRCBJ
Y29ucworI2RlZmluZSBTSFVUVExFX1ZGRF9JQ09OX0NMT0NLICAgICAgICAgICgxIDw8IDQpCisj
ZGVmaW5lIFNIVVRUTEVfVkZEX0lDT05fUkFESU8gICAgICAgICAgKDEgPDwgMykKKyNkZWZpbmUg
U0hVVFRMRV9WRkRfSUNPTl9NVVNJQyAgICAgICAgICAoMSA8PCAyKQorI2RlZmluZSBTSFVUVExF
X1ZGRF9JQ09OX0NEX0RWRCAgICAgICAgICgxIDw8IDEpCisjZGVmaW5lIFNIVVRUTEVfVkZEX0lD
T05fVEVMRVZJU0lPTiAgICAgKDEgPDwgMCkKKyNkZWZpbmUgU0hVVFRMRV9WRkRfSUNPTl9DQU1F
UkEgICAgICAgICAoMSA8PCA5KQorI2RlZmluZSBTSFVUVExFX1ZGRF9JQ09OX1JFV0lORCAgICAg
ICAgICgxIDw8IDgpCisjZGVmaW5lIFNIVVRUTEVfVkZEX0lDT05fUkVDT1JEICAgICAgICAgKDEg
PDwgNykKKyNkZWZpbmUgU0hVVFRMRV9WRkRfSUNPTl9QTEFZICAgICAgICAgICAoMSA8PCA2KQor
I2RlZmluZSBTSFVUVExFX1ZGRF9JQ09OX1BBVVNFICAgICAgICAgICgxIDw8IDUpCisjZGVmaW5l
IFNIVVRUTEVfVkZEX0lDT05fU1RPUCAgICAgICAgICAgKDEgPDwgMTQpCisjZGVmaW5lIFNIVVRU
TEVfVkZEX0lDT05fRkFTVEZPUldBUkQgICAgKDEgPDwgMTMpCisjZGVmaW5lIFNIVVRUTEVfVkZE
X0lDT05fUkVWRVJTRSAgICAgICAgKDEgPDwgMTIpCisjZGVmaW5lIFNIVVRUTEVfVkZEX0lDT05f
UkVQRUFUICAgICAgICAgKDEgPDwgMTEpCisjZGVmaW5lIFNIVVRUTEVfVkZEX0lDT05fTVVURSAg
ICAgICAgICAgKDEgPDwgMTApCisjZGVmaW5lIFNIVVRUTEVfVkZEX0lDT05fVk9MXzAxICAgICAg
ICAgKDEgPDwgMTUpCisjZGVmaW5lIFNIVVRUTEVfVkZEX0lDT05fVk9MXzAyICAgICAgICAgKDIg
PDwgMTUpCisjZGVmaW5lIFNIVVRUTEVfVkZEX0lDT05fVk9MXzAzICAgICAgICAgKDMgPDwgMTUp
CisjZGVmaW5lIFNIVVRUTEVfVkZEX0lDT05fVk9MXzA0ICAgICAgICAgKDQgPDwgMTUpCisjZGVm
aW5lIFNIVVRUTEVfVkZEX0lDT05fVk9MXzA1ICAgICAgICAgKDUgPDwgMTUpCisjZGVmaW5lIFNI
VVRUTEVfVkZEX0lDT05fVk9MXzA2ICAgICAgICAgKDYgPDwgMTUpCisjZGVmaW5lIFNIVVRUTEVf
VkZEX0lDT05fVk9MXzA3ICAgICAgICAgKDcgPDwgMTUpCisjZGVmaW5lIFNIVVRUTEVfVkZEX0lD
T05fVk9MXzA4ICAgICAgICAgKDggPDwgMTUpCisjZGVmaW5lIFNIVVRUTEVfVkZEX0lDT05fVk9M
XzA5ICAgICAgICAgKDkgPDwgMTUpCisjZGVmaW5lIFNIVVRUTEVfVkZEX0lDT05fVk9MXzEwICAg
ICAgICAgKDEwIDw8IDE1KQorI2RlZmluZSBTSFVUVExFX1ZGRF9JQ09OX1ZPTF8xMSAgICAgICAg
ICgxMSA8PCAxNSkKKyNkZWZpbmUgU0hVVFRMRV9WRkRfSUNPTl9WT0xfMTIgICAgICAgICAoMTIg
PDwgMTUpCisKKyNlbmRpZgo=
------=_Part_95847_23434341.1183859024881--