Subject: patches against -current for the IBM 7024
To: None <port-prep@netbsd.org>
From: Tim Rightnour <root@garbled.net>
List: port-prep
Date: 02/21/2006 13:35:10
This message is in MIME format
--_=XFMail.1.5.5.NetBSD:20060221133510:321=_
Content-Type: text/plain; charset=us-ascii

Patches attached.  The only unclean patch here is in pci/pci_machdep.c.  The
version of -current I was working with is very slightly older than HEAD. 
Namely the change of:

-       return (PCI_CONF_DEFAULT);
to
+       return (PCI_CONF_ALL & ~PCI_CONF_MAP_ROM);

should not be there.

---
Tim Rightnour <root@garbled.net>
NetBSD: Free multi-architecture OS http://www.netbsd.org/
Genecys: Open Source 3D MMORPG: http://www.genecys.org/

--_=XFMail.1.5.5.NetBSD:20060221133510:321=_
Content-Disposition: attachment; filename="7024eisa.patch"
Content-Transfer-Encoding: base64
Content-Type: application/octet-stream; name=7024eisa.patch; SizeOnDisk=31676

ZGlmZiAtck51IC14IG9iaiAteCBDVlMgcHJlcC1vcmlnL2NvbmYvR0VORVJJQyBwcmVwL2NvbmYv
R0VORVJJQwotLS0gcHJlcC1vcmlnL2NvbmYvR0VORVJJQwkyMDA2LTAyLTA0IDIyOjAyOjAyLjAw
MDAwMDAwMCAtMDcwMAorKysgcHJlcC9jb25mL0dFTkVSSUMJMjAwNi0wMi0yMSAxMzowMjoxOS4w
MDAwMDAwMDAgLTA3MDAKQEAgLTM0LDYgKzM0LDcgQEAKIG9wdGlvbnMgCVBMQVRGT1JNX0lCTV82
MDUwCQkjIElCTSBQZXJzb25hbCBQb3dlciBTZXJpZXMgODMwCiBvcHRpb25zIAlQTEFURk9STV9J
Qk1fNzI0OAkJIyBJQk0gUlMvNjAwMCA3MjQ4LTEwMC8xMjAvMTMzCiBvcHRpb25zIAlQTEFURk9S
TV9JQk1fNzA0M18xNDAJCSMgSUJNIFJTLzYwMDAgNDNQIDcwNDMtMTQwCitvcHRpb25zCQlQTEFU
Rk9STV9JQk1fNzAyNAkJIyBJQk0gUlMvNjAwMCA3MDI0LUUyMC9FMzAKIG9wdGlvbnMgCVBMQVRG
T1JNX01PVE9ST0xBX1VMTUI2MFhBCSMgTW90b3JvbGEgVUxNQjYweEEgKD8pCiAKIG9wdGlvbnMg
CU9QRU5QSUMJCQkJIyBPcGVuUElDIHN1cHBvcnQgKDcwNDMtMTQwKQpAQCAtMjA3LDkgKzIwOCwx
NCBAQAogcGNoYioJYXQgcGNpPyBkZXYgPyBmdW5jdGlvbiA/CSMgUENJLUhvc3QgYnJpZGdlcwog
cHBiKglhdCBwY2k/IGRldiA/IGZ1bmN0aW9uID8JIyBQQ0ktUENJIGJyaWRnZXMKIHBjaWIqCWF0
IHBjaT8gZGV2ID8gZnVuY3Rpb24gPwkjIFBDSS1JU0EgYnJpZGdlcworcGNlYioJYXQgcGNpPyBk
ZXYgPyBmdW5jdGlvbiA/CSMgUENJLUVJU0EgYnJpZGdlcworCisjIEVJU0EgYnVzIHN1cHBvcnQK
K2Vpc2EqCWF0IHBjZWI/CiAKICMgSVNBIGJ1cyBzdXBwb3J0CiBpc2EqCWF0IHBjaWI/CQkJIyBJ
U0Egb24gUENJLUlTQSBicmlkZ2UKK2lzYSoJYXQgcGNlYj8KIAogIyBQQ01DSUEgYnVzIHN1cHBv
cnQKIHBjbWNpYSogYXQgcGNpYz8gY29udHJvbGxlciA/IHNvY2tldCA/CmRpZmYgLXJOdSAteCBv
YmogLXggQ1ZTIHByZXAtb3JpZy9jb25mL2ZpbGVzLnByZXAgcHJlcC9jb25mL2ZpbGVzLnByZXAK
LS0tIHByZXAtb3JpZy9jb25mL2ZpbGVzLnByZXAJMjAwNS0xMi0xMSAwNToxODo0Ny4wMDAwMDAw
MDAgLTA3MDAKKysrIHByZXAvY29uZi9maWxlcy5wcmVwCTIwMDYtMDItMjAgMjE6NDM6MDMuMDAw
MDAwMDAwIC0wNzAwCkBAIC0xMyw2ICsxMyw3IEBACiAJCQlQTEFURk9STV9JQk1fNjA1MAogCQkJ
UExBVEZPUk1fSUJNXzcyNDgKIAkJCVBMQVRGT1JNX0lCTV83MDQzXzE0MAorCQkJUExBVEZPUk1f
SUJNXzcwMjQKIAkJCVBMQVRGT1JNX01PVE9ST0xBX1VMTUI2MFhBCiAKICMgSUJNCkBAIC0yMiw2
ICsyMyw3IEBACiBmaWxlCWFyY2gvcHJlcC9wcmVwL2libV82MDUwLmMJcGxhdGZvcm1faWJtXzYw
NTAKIGZpbGUJYXJjaC9wcmVwL3ByZXAvaWJtXzcyNDguYwlwbGF0Zm9ybV9pYm1fNzI0OAogZmls
ZQlhcmNoL3ByZXAvcHJlcC9pYm1fNzA0M18xNDAuYwlwbGF0Zm9ybV9pYm1fNzA0M18xNDAKK2Zp
bGUJYXJjaC9wcmVwL3ByZXAvaWJtXzcwMjQuYwlwbGF0Zm9ybV9pYm1fNzAyNAogCiAjIE1vdG9y
b2xhCiBmaWxlCWFyY2gvcHJlcC9wcmVwL21vdF9tYWNoZGVwLmMKQEAgLTEwMSw2ICsxMDMsMTEg
QEAKIGF0dGFjaAlwY2liIGF0IHBjaQogZmlsZQlhcmNoL3ByZXAvcGNpL3BjaWIuYwkJcGNpYgog
CisjIFBDSS1FSVNBIGJyaWRnZXMKK2RldmljZQlwY2ViOiBlaXNhYnVzLCBpc2FidXMKK2F0dGFj
aAlwY2ViIGF0IHBjaQorZmlsZQlhcmNoL3ByZXAvcGNpL3BjZWIuYwkJcGNlYgorCiAjIElCTSBH
MTAgZGlzcGxheSBvbiBUaGlua1BhZCA4MjAKIGRldmljZQlndGVuOiB3c2VtdWxkaXNwbGF5ZGV2
LCByYXNvcHM4CiBhdHRhY2gJZ3RlbiBhdCBwY2kKQEAgLTE1MSw2ICsxNTgsMTMgQEAKIGF0dGFj
aAlwYXVkIGF0IGlzYSB3aXRoIHBhdWRfaXNhCiBmaWxlCWFyY2gvcHJlcC9pc2EvcGF1ZF9pc2Eu
YwlwYXVkX2lzYQogCisjCisjIEVJU0Etb25seSBkcml2ZXJzCisjCisKK2luY2x1ZGUJImRldi9l
aXNhL2ZpbGVzLmVpc2EiCitmaWxlCWFyY2gvcHJlcC9laXNhL2Vpc2FfbWFjaGRlcC5jCWVpc2EK
KwogIyBVU0IgZHJpdmVycwogaW5jbHVkZSAiZGV2L3VzYi9maWxlcy51c2IiCiAKZGlmZiAtck51
IC14IG9iaiAteCBDVlMgcHJlcC1vcmlnL2Vpc2EvZWlzYV9tYWNoZGVwLmMgcHJlcC9laXNhL2Vp
c2FfbWFjaGRlcC5jCi0tLSBwcmVwLW9yaWcvZWlzYS9laXNhX21hY2hkZXAuYwkxOTY5LTEyLTMx
IDE3OjAwOjAwLjAwMDAwMDAwMCAtMDcwMAorKysgcHJlcC9laXNhL2Vpc2FfbWFjaGRlcC5jCTIw
MDYtMDItMjEgMTM6MTQ6MjQuMDAwMDAwMDAwIC0wNzAwCkBAIC0wLDAgKzEsMjIxIEBACisvKgkk
TmV0QlNEOiBlaXNhX21hY2hkZXAuYyx2IDEuMjUgMjAwNS8xMi8xMSAxMjoxNzo0MSBjaHJpc3Rv
cyBFeHAgJAkqLworCisvKi0KKyAqIENvcHlyaWdodCAoYykgMTk5NywgMTk5OCBUaGUgTmV0QlNE
IEZvdW5kYXRpb24sIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBj
b2RlIGlzIGRlcml2ZWQgZnJvbSBzb2Z0d2FyZSBjb250cmlidXRlZCB0byBUaGUgTmV0QlNEIEZv
dW5kYXRpb24KKyAqIGJ5IEphc29uIFIuIFRob3JwZSBvZiB0aGUgTnVtZXJpY2FsIEFlcm9zcGFj
ZSBTaW11bGF0aW9uIEZhY2lsaXR5LAorICogTkFTQSBBbWVzIFJlc2VhcmNoIENlbnRlci4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJl
cyBvciB1c2Ugb2YgdGhpcyBzb2Z0d2FyZQorICogICAgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dp
bmcgYWNrbm93bGVkZ2VtZW50OgorICoJVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRl
dmVsb3BlZCBieSB0aGUgTmV0QlNECisgKglGb3VuZGF0aW9uLCBJbmMuIGFuZCBpdHMgY29udHJp
YnV0b3JzLgorICogNC4gTmVpdGhlciB0aGUgbmFtZSBvZiBUaGUgTmV0QlNEIEZvdW5kYXRpb24g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE5FVEJTRCBGT1VOREFUSU9OLCBJTkMuIEFO
RCBDT05UUklCVVRPUlMKKyAqIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRAorICogVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgRk9V
TkRBVElPTiBPUiBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDE5OTYgQ2hyaXN0b3BoZXIgRy4gRGVtZXRyaW91
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBt
YXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcyBzb2Z0d2FyZQorICog
ICAgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ2VtZW50OgorICogICAgICBU
aGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IENocmlzdG9waGVyIEcu
IERlbWV0cmlvdQorICoJZm9yIHRoZSBOZXRCU0QgUHJvamVjdC4KKyAqIDQuIFRoZSBuYW1lIG9m
IHRoZSBhdXRob3IgbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cworICogICAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUgorICogSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUworICogT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4KKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1Ig
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKKyAqIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAor
ICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoKKyAqIE1hY2hpbmUtc3BlY2lm
aWMgZnVuY3Rpb25zIGZvciBFSVNBIGF1dG9jb25maWd1cmF0aW9uLgorICovCisKKyNpbmNsdWRl
IDxzeXMvY2RlZnMuaD4KK19fS0VSTkVMX1JDU0lEKDAsICIkTmV0QlNEOiBlaXNhX21hY2hkZXAu
Yyx2IDEuMjUgMjAwNS8xMi8xMSAxMjoxNzo0MSBjaHJpc3RvcyBFeHAgJCIpOworCisjaW5jbHVk
ZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjaW5jbHVkZSA8c3lzL3Rp
bWUuaD4KKyNpbmNsdWRlIDxzeXMvc3lzdG0uaD4KKyNpbmNsdWRlIDxzeXMvZXJybm8uaD4KKyNp
bmNsdWRlIDxzeXMvZGV2aWNlLmg+CisjaW5jbHVkZSA8c3lzL2V4dGVudC5oPgorCisjZGVmaW5l
IF9QT1dFUlBDX0JVU19ETUFfUFJJVkFURQorI2luY2x1ZGUgPG1hY2hpbmUvYnVzLmg+CisjaW5j
bHVkZSA8bWFjaGluZS9waW8uaD4KKyNpbmNsdWRlIDxtYWNoaW5lL2ludHIuaD4KKworI2luY2x1
ZGUgPGRldi9pc2EvaXNhcmVnLmg+CisjaW5jbHVkZSA8ZGV2L2lzYS9pc2F2YXIuaD4KKyNpbmNs
dWRlIDxkZXYvZWlzYS9laXNhdmFyLmg+CisKKy8qCisgKiBFSVNBIGRvZXNuJ3QgaGF2ZSBhbnkg
c3BlY2lhbCBuZWVkczsganVzdCB1c2UgdGhlIGdlbmVyaWMgdmVyc2lvbnMKKyAqIG9mIHRoZXNl
IGZ1bmNpb25zLgorICovCitzdHJ1Y3QgcG93ZXJwY19idXNfZG1hX3RhZyBlaXNhX2J1c19kbWFf
dGFnID0geworCTAsCQkJLyogX2JvdW5jZV90aHJlc2ggKi8KKwlfYnVzX2RtYW1hcF9jcmVhdGUs
CisJX2J1c19kbWFtYXBfZGVzdHJveSwKKwlfYnVzX2RtYW1hcF9sb2FkLAorCV9idXNfZG1hbWFw
X2xvYWRfbWJ1ZiwKKwlfYnVzX2RtYW1hcF9sb2FkX3VpbywKKwlfYnVzX2RtYW1hcF9sb2FkX3Jh
dywKKwlfYnVzX2RtYW1hcF91bmxvYWQsCisJTlVMTCwJCQkvKiBfZG1hbWFwX3N5bmMgKi8KKwlf
YnVzX2RtYW1lbV9hbGxvYywKKwlfYnVzX2RtYW1lbV9mcmVlLAorCV9idXNfZG1hbWVtX21hcCwK
KwlfYnVzX2RtYW1lbV91bm1hcCwKKwlfYnVzX2RtYW1lbV9tbWFwLAorfTsKKwordm9pZAorZWlz
YV9hdHRhY2hfaG9vayhzdHJ1Y3QgZGV2aWNlICpwYXJlbnQsIHN0cnVjdCBkZXZpY2UgKnNlbGYs
CisgICAgc3RydWN0IGVpc2FidXNfYXR0YWNoX2FyZ3MgKmViYSkKK3sKKwkvKiBOb3RoaW5nIHRv
IGRvLiAqLworfQorCitpbnQKK2Vpc2FfbWF4c2xvdHMoZWlzYV9jaGlwc2V0X3RhZ190IGVjKQor
eworCisJLyoKKwkgKiBBbHdheXMgdHJ5IDE2IHNsb3RzLgorCSAqLworCXJldHVybiAoMTYpOwor
fQorCitpbnQKK2Vpc2FfaW50cl9tYXAoZWlzYV9jaGlwc2V0X3RhZ190IGVjLCB1X2ludCBpcnEs
IGVpc2FfaW50cl9oYW5kbGVfdCAqaWhwKQoreworCWlmIChpcnEgPj0gSTgyNTlfSU5UUl9OVU0p
IHsKKwkJcHJpbnRmKCJlaXNhX2ludHJfbWFwOiBiYWQgSVJRICVkXG4iLCBpcnEpOworCQkqaWhw
ID0gLTE7CisJCXJldHVybiAxOworCX0KKwlpZiAoaXJxID09IDIpIHsKKwkJcHJpbnRmKCJlaXNh
X2ludHJfbWFwOiBjaGFuZ2VkIElSUSAyIHRvIElSUSA5XG4iKTsKKwkJaXJxID0gOTsKKwl9CisK
KwkqaWhwID0gaXJxOworCXJldHVybiAwOworfQorCitjb25zdCBjaGFyICoKK2Vpc2FfaW50cl9z
dHJpbmcoZWlzYV9jaGlwc2V0X3RhZ190IGVjLCBlaXNhX2ludHJfaGFuZGxlX3QgaWgpCit7CisJ
c3RhdGljIGNoYXIgaXJxc3RyWzhdOwkJLyogNCArIDIgKyBOVUxMICsgc2FuaXR5ICovCisKKwlp
ZiAoaWggPT0gMCB8fCAoaWggJiAweGZmKSA+PSBJODI1OV9JTlRSX05VTSB8fCBpaCA9PSAyKQor
CQlwYW5pYygiZWlzYV9pbnRyX3N0cmluZzogYm9ndXMgaGFuZGxlIDB4JXgiLCBpaCk7CisKKwlz
bnByaW50ZihpcnFzdHIsIHNpemVvZihpcnFzdHIpLCAiaXJxICVkIiwgaWgpOworCXJldHVybiAo
aXJxc3RyKTsKKwkKK30KKworY29uc3Qgc3RydWN0IGV2Y250ICoKK2Vpc2FfaW50cl9ldmNudChl
aXNhX2NoaXBzZXRfdGFnX3QgZWMsIGVpc2FfaW50cl9oYW5kbGVfdCBpaCkKK3sKKworCS8qIFhY
WCBmb3Igbm93LCBubyBldmNudCBwYXJlbnQgcmVwb3J0ZWQgKi8KKwlyZXR1cm4gTlVMTDsKK30K
Kwordm9pZCAqCitlaXNhX2ludHJfZXN0YWJsaXNoKGVpc2FfY2hpcHNldF90YWdfdCBlYywgZWlz
YV9pbnRyX2hhbmRsZV90IGloLAorICAgIGludCB0eXBlLCBpbnQgbGV2ZWwsIGludCAoKmZ1bmMp
KHZvaWQgKiksIHZvaWQgKmFyZykKK3sKKwlpbnQgaXJxOworCisJaXJxID0gaWg7CisJcmV0dXJu
ICh2b2lkICopaW50cl9lc3RhYmxpc2goaXJxLCB0eXBlLCBsZXZlbCwgZnVuYywgYXJnKTsKK30K
Kwordm9pZAorZWlzYV9pbnRyX2Rpc2VzdGFibGlzaChlaXNhX2NoaXBzZXRfdGFnX3QgZWMsIHZv
aWQgKmNvb2tpZSkKK3sKKworCWludHJfZGlzZXN0YWJsaXNoKGNvb2tpZSk7Cit9CisKK2ludAor
ZWlzYV9jb25mX3JlYWRfbWVtKGVpc2FfY2hpcHNldF90YWdfdCBlYywgaW50IHNsb3QsIGludCBm
dW5jLCBpbnQgZW50cnksCisgICAgc3RydWN0IGVpc2FfY2ZnX21lbSAqZWNtKQoreworCisJLyog
WFhYIFhYWCBYWFggKi8KKwlyZXR1cm4gKEVOT0VOVCk7Cit9CisKK2ludAorZWlzYV9jb25mX3Jl
YWRfaXJxKGVpc2FfY2hpcHNldF90YWdfdCBlYywgaW50IHNsb3QsIGludCBmdW5jLCBpbnQgZW50
cnksCisgICAgc3RydWN0IGVpc2FfY2ZnX2lycSAqZWNpKQoreworCisJLyogWFhYIFhYWCBYWFgg
Ki8KKwlyZXR1cm4gKEVOT0VOVCk7Cit9CisKK2ludAorZWlzYV9jb25mX3JlYWRfZG1hKGVpc2Ff
Y2hpcHNldF90YWdfdCBlYywgaW50IHNsb3QsIGludCBmdW5jLCBpbnQgZW50cnksCisgICAgc3Ry
dWN0IGVpc2FfY2ZnX2RtYSAqZWNkKQoreworCisJLyogWFhYIFhYWCBYWFggKi8KKwlyZXR1cm4g
KEVOT0VOVCk7Cit9CisKK2ludAorZWlzYV9jb25mX3JlYWRfaW8oZWlzYV9jaGlwc2V0X3RhZ190
IGVjLCBpbnQgc2xvdCwgaW50IGZ1bmMsIGludCBlbnRyeSwKKyAgICBzdHJ1Y3QgZWlzYV9jZmdf
aW8gKmVjaW8pCit7CisKKwkvKiBYWFggWFhYIFhYWCAqLworCXJldHVybiAoRU5PRU5UKTsKK30K
ZGlmZiAtck51IC14IG9iaiAteCBDVlMgcHJlcC1vcmlnL2luY2x1ZGUvYnVzLmggcHJlcC9pbmNs
dWRlL2J1cy5oCi0tLSBwcmVwLW9yaWcvaW5jbHVkZS9idXMuaAkyMDA1LTEyLTExIDA1OjE4OjQ3
LjAwMDAwMDAwMCAtMDcwMAorKysgcHJlcC9pbmNsdWRlL2J1cy5oCTIwMDYtMDItMjEgMTE6MTA6
NTEuMDAwMDAwMDAwIC0wNzAwCkBAIC0xMjAsOCArMTIwLDEwIEBACiAjaWZkZWYgX0tFUk5FTAog
ZXh0ZXJuIHN0cnVjdCBwb3dlcnBjX2J1c19zcGFjZSBwcmVwX2lvX3NwYWNlX3RhZzsKIGV4dGVy
biBzdHJ1Y3QgcG93ZXJwY19idXNfc3BhY2UgcHJlcF9pc2FfaW9fc3BhY2VfdGFnOworZXh0ZXJu
IHN0cnVjdCBwb3dlcnBjX2J1c19zcGFjZSBwcmVwX2Vpc2FfaW9fc3BhY2VfdGFnOwogZXh0ZXJu
IHN0cnVjdCBwb3dlcnBjX2J1c19zcGFjZSBwcmVwX21lbV9zcGFjZV90YWc7CiBleHRlcm4gc3Ry
dWN0IHBvd2VycGNfYnVzX3NwYWNlIHByZXBfaXNhX21lbV9zcGFjZV90YWc7CitleHRlcm4gc3Ry
dWN0IHBvd2VycGNfYnVzX3NwYWNlIHByZXBfZWlzYV9tZW1fc3BhY2VfdGFnOwogI2VuZGlmCiAK
ICNpbmNsdWRlIDxwb3dlcnBjL2J1cy5oPgpkaWZmIC1yTnUgLXggb2JqIC14IENWUyBwcmVwLW9y
aWcvaW5jbHVkZS9laXNhX21hY2hkZXAuaCBwcmVwL2luY2x1ZGUvZWlzYV9tYWNoZGVwLmgKLS0t
IHByZXAtb3JpZy9pbmNsdWRlL2Vpc2FfbWFjaGRlcC5oCTE5NjktMTItMzEgMTc6MDA6MDAuMDAw
MDAwMDAwIC0wNzAwCisrKyBwcmVwL2luY2x1ZGUvZWlzYV9tYWNoZGVwLmgJMjAwNi0wMi0yMCAy
Mjo0Njo1Ni4wMDAwMDAwMDAgLTA3MDAKQEAgLTAsMCArMSw4MiBAQAorLyoJJE5ldEJTRDogZWlz
YV9tYWNoZGVwLmgsdiAxLjEwIDIwMDMvMDIvMjYgMjE6Mjk6MDAgZnZkbCBFeHAgJAkqLworCisv
KgorICogQ29weXJpZ2h0IChjKSAxOTk2IENocmlzdG9waGVyIEcuIERlbWV0cmlvdS4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxz
IG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMgc29mdHdhcmUKKyAqICAgIG11c3Qg
ZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdlbWVudDoKKyAqICAgICAgVGhpcyBwcm9k
dWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSBDaHJpc3RvcGhlciBHLiBEZW1ldHJp
b3UKKyAqCWZvciB0aGUgTmV0QlNEIFByb2plY3QuCisgKiA0LiBUaGUgbmFtZSBvZiB0aGUgYXV0
aG9yIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMKKyAqICAg
IGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVU
SE9SIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IKKyAqIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMKKyAq
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCisgKiBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKKyAqIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qCisgKiBNYWNoaW5lLXNwZWNpZmljIGRlZmlu
aXRpb25zIGZvciBFSVNBIGF1dG9jb25maWd1cmF0aW9uLgorICovCisKKy8qCisgKiBwcmVwLXNw
ZWNpZmljIEVJU0EgZGVmaW5pdGlvbnMuCisgKiBOT1QgVE8gQkUgVVNFRCBESVJFQ1RMWSBCWSBN
QUNISU5FIElOREVQRU5ERU5UIENPREUuCisgKi8KKyNkZWZpbmUJRUlTQV9JRAkJCSJFSVNBIgor
I2RlZmluZQlFSVNBX0lEX0xFTgkJKHNpemVvZihFSVNBX0lEKSAtIDEpCisjZGVmaW5lCUVJU0Ff
SURfUEFERFIJCTB4ZmZmZDkKKworZXh0ZXJuIHN0cnVjdCBwb3dlcnBjX2J1c19kbWFfdGFnIGVp
c2FfYnVzX2RtYV90YWc7CisKKy8qIEVJU0EgRWRnZS9MZXZlbCB0cmlnZ2VyIGNvbnRyb2wgcmVn
aXN0ZXJzICovCisjZGVmaW5lIEVMQ1IwICAgMHg0ZDAgICAgICAgICAgICAgICAgICAgLyogZWlz
YSBpcnEgMC03ICovCisjZGVmaW5lIEVMQ1IxICAgMHg0ZDEgICAgICAgICAgICAgICAgICAgLyog
ZWlzYSBpcnEgOC0xNSAqLworCisvKgorICogVHlwZXMgcHJvdmlkZWQgdG8gbWFjaGluZS1pbmRl
cGVuZGVudCBFSVNBIGNvZGUuCisgKi8KK3R5cGVkZWYgdm9pZCAqZWlzYV9jaGlwc2V0X3RhZ190
OwordHlwZWRlZiBpbnQgZWlzYV9pbnRyX2hhbmRsZV90OworCisvKgorICogRnVuY3Rpb25zIHBy
b3ZpZGVkIHRvIG1hY2hpbmUtaW5kZXBlbmRlbnQgRUlTQSBjb2RlLgorICovCit2b2lkCQllaXNh
X2F0dGFjaF9ob29rKHN0cnVjdCBkZXZpY2UgKiwgc3RydWN0IGRldmljZSAqLAorCQkgICAgc3Ry
dWN0IGVpc2FidXNfYXR0YWNoX2FyZ3MgKik7CitpbnQJCWVpc2FfbWF4c2xvdHMoZWlzYV9jaGlw
c2V0X3RhZ190KTsKK2ludAkJZWlzYV9pbnRyX21hcChlaXNhX2NoaXBzZXRfdGFnX3QsIHVfaW50
LAorCQkgICAgZWlzYV9pbnRyX2hhbmRsZV90ICopOworY29uc3QgY2hhcgkqZWlzYV9pbnRyX3N0
cmluZyhlaXNhX2NoaXBzZXRfdGFnX3QsIGVpc2FfaW50cl9oYW5kbGVfdCk7Citjb25zdCBzdHJ1
Y3QgZXZjbnQgKmVpc2FfaW50cl9ldmNudChlaXNhX2NoaXBzZXRfdGFnX3QsIGVpc2FfaW50cl9o
YW5kbGVfdCk7Cit2b2lkCQkqZWlzYV9pbnRyX2VzdGFibGlzaChlaXNhX2NoaXBzZXRfdGFnX3Qs
CisJCSAgICBlaXNhX2ludHJfaGFuZGxlX3QsIGludCwgaW50LCBpbnQgKCopKHZvaWQgKiksIHZv
aWQgKik7Cit2b2lkCQllaXNhX2ludHJfZGlzZXN0YWJsaXNoKGVpc2FfY2hpcHNldF90YWdfdCwg
dm9pZCAqKTsKK2ludAkJZWlzYV9tZW1fYWxsb2MoYnVzX3NwYWNlX3RhZ190LCBidXNfc2l6ZV90
LCBidXNfc2l6ZV90LAorCQkgICAgYnVzX2FkZHJfdCwgaW50LCBidXNfYWRkcl90ICosIGJ1c19z
cGFjZV9oYW5kbGVfdCAqKTsKK3ZvaWQJCWVpc2FfbWVtX2ZyZWUoYnVzX3NwYWNlX3RhZ190LCBi
dXNfc3BhY2VfaGFuZGxlX3QsCisJCSAgICBidXNfc2l6ZV90KTsKKworaW50CQllaXNhX2NvbmZf
cmVhZF9tZW0oZWlzYV9jaGlwc2V0X3RhZ190LCBpbnQsIGludCwgaW50LAorCQkgICAgc3RydWN0
IGVpc2FfY2ZnX21lbSAqKTsKK2ludAkJZWlzYV9jb25mX3JlYWRfaXJxKGVpc2FfY2hpcHNldF90
YWdfdCwgaW50LCBpbnQsIGludCwKKwkJICAgIHN0cnVjdCBlaXNhX2NmZ19pcnEgKik7CitpbnQJ
CWVpc2FfY29uZl9yZWFkX2RtYShlaXNhX2NoaXBzZXRfdGFnX3QsIGludCwgaW50LCBpbnQsCisJ
CSAgICBzdHJ1Y3QgZWlzYV9jZmdfZG1hICopOworaW50CQllaXNhX2NvbmZfcmVhZF9pbyhlaXNh
X2NoaXBzZXRfdGFnX3QsIGludCwgaW50LCBpbnQsCisJCSAgICBzdHJ1Y3QgZWlzYV9jZmdfaW8g
Kik7CmRpZmYgLXJOdSAteCBvYmogLXggQ1ZTIHByZXAtb3JpZy9pbmNsdWRlL3BsYXRmb3JtLmgg
cHJlcC9pbmNsdWRlL3BsYXRmb3JtLmgKLS0tIHByZXAtb3JpZy9pbmNsdWRlL3BsYXRmb3JtLmgJ
MjAwNS0xMi0xMSAwNToxODo0Ny4wMDAwMDAwMDAgLTA3MDAKKysrIHByZXAvaW5jbHVkZS9wbGF0
Zm9ybS5oCTIwMDYtMDItMjAgMTY6MjI6MjEuMDAwMDAwMDAwIC0wNzAwCkBAIC00OCw3ICs0OCw3
IEBACiAJY29uc3QgY2hhcgkqbW9kZWw7CiAJaW50CQkoKm1hdGNoKShzdHJ1Y3QgcGxhdGZvcm0g
Kik7CiAJdm9pZAkJKCpwY2lfZ2V0X2NoaXBzZXRfdGFnKShwY2lfY2hpcHNldF90YWdfdCk7Ci0J
dm9pZAkJKCpwY2lfaW50cl9maXh1cCkoaW50LCBpbnQsIGludCwgaW50ICopOworCXZvaWQJCSgq
cGNpX2ludHJfZml4dXApKGludCwgaW50LCBpbnQsIGludCwgaW50ICopOwogCXZvaWQJCSgqaW5p
dF9pbnRyKSh2b2lkKTsKIAl2b2lkCQkoKmNwdV9zZXR1cCkoc3RydWN0IGRldmljZSAqKTsKIAl2
b2lkCQkoKnJlc2V0KSh2b2lkKTsKQEAgLTY1LDcgKzY1LDcgQEAKIAogaW50IGlkZW50X3BsYXRm
b3JtKHZvaWQpOwogaW50IHBsYXRmb3JtX2dlbmVyaWNfbWF0Y2goc3RydWN0IHBsYXRmb3JtICop
Owotdm9pZCBwY2lfaW50cl9ub2ZpeHVwKGludCwgaW50LCBpbnQsIGludCAqKTsKK3ZvaWQgcGNp
X2ludHJfbm9maXh1cChpbnQsIGludCwgaW50LCBpbnQsIGludCAqKTsKIHZvaWQgY3B1X3NldHVw
X3Vua25vd24oc3RydWN0IGRldmljZSAqKTsKIHZvaWQgcmVzZXRfdW5rbm93bih2b2lkKTsKIHZv
aWQgcmVzZXRfcHJlcF9nZW5lcmljKHZvaWQpOwpAQCAtNzcsNiArNzcsNyBAQAogZXh0ZXJuIHN0
cnVjdCBwbGF0Zm9ybSBwbGF0Zm9ybV9pYm1fNjA1MDsKIGV4dGVybiBzdHJ1Y3QgcGxhdGZvcm0g
cGxhdGZvcm1faWJtXzcyNDg7CiBleHRlcm4gc3RydWN0IHBsYXRmb3JtIHBsYXRmb3JtX2libV83
MDQzXzE0MDsKK2V4dGVybiBzdHJ1Y3QgcGxhdGZvcm0gcGxhdGZvcm1faWJtXzcwMjQ7CiAKIHZv
aWQgY3B1X3NldHVwX2libV9nZW5lcmljKHN0cnVjdCBkZXZpY2UgKik7CiAKZGlmZiAtck51IC14
IG9iaiAteCBDVlMgcHJlcC1vcmlnL3BjaS9wY2ViLmMgcHJlcC9wY2kvcGNlYi5jCi0tLSBwcmVw
LW9yaWcvcGNpL3BjZWIuYwkxOTY5LTEyLTMxIDE3OjAwOjAwLjAwMDAwMDAwMCAtMDcwMAorKysg
cHJlcC9wY2kvcGNlYi5jCTIwMDYtMDItMjEgMTE6Mjk6MDEuMDAwMDAwMDAwIC0wNzAwCkBAIC0w
LDAgKzEsMTU5IEBACisvKgkkTmV0QlNEOiBwY2ViLmMsdiAxLjE2IDIwMDUvMTIvMTEgMTI6MTc6
NDMgY2hyaXN0b3MgRXhwICQJKi8KKworLyotCisgKiBDb3B5cmlnaHQgKGMpIDE5OTYsIDE5OTgg
VGhlIE5ldEJTRCBGb3VuZGF0aW9uLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFRoaXMgY29kZSBpcyBkZXJpdmVkIGZyb20gc29mdHdhcmUgY29udHJpYnV0ZWQgdG8gVGhl
IE5ldEJTRCBGb3VuZGF0aW9uCisgKiBieSBKYXNvbiBSLiBUaG9ycGUuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAz
LiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9m
IHRoaXMgc29mdHdhcmUKKyAqICAgIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xl
ZGdlbWVudDoKKyAqICAgICAgICBUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxv
cGVkIGJ5IHRoZSBOZXRCU0QKKyAqICAgICAgICBGb3VuZGF0aW9uLCBJbmMuIGFuZCBpdHMgY29u
dHJpYnV0b3JzLgorICogNC4gTmVpdGhlciB0aGUgbmFtZSBvZiBUaGUgTmV0QlNEIEZvdW5kYXRp
b24gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE5FVEJTRCBGT1VOREFUSU9OLCBJTkMu
IEFORCBDT05UUklCVVRPUlMKKyAqIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRAorICogVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Rk9VTkRBVElPTiBPUiBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KK19fS0VSTkVMX1JDU0lEKDAsICIkTmV0
QlNEOiBwY2ViLmMsdiAxLjE2IDIwMDUvMTIvMTEgMTI6MTc6NDMgY2hyaXN0b3MgRXhwICQiKTsK
KworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2luY2x1
ZGUgPHN5cy9zeXN0bS5oPgorI2luY2x1ZGUgPHN5cy9kZXZpY2UuaD4KKworI2luY2x1ZGUgPG1h
Y2hpbmUvYnVzLmg+CisKKyNpbmNsdWRlIDxkZXYvaXNhL2lzYXZhci5oPgorI2luY2x1ZGUgPGRl
di9laXNhL2Vpc2F2YXIuaD4KKworI2luY2x1ZGUgPGRldi9wY2kvcGNpdmFyLmg+CisjaW5jbHVk
ZSA8ZGV2L3BjaS9wY2lyZWcuaD4KKworI2luY2x1ZGUgPGRldi9wY2kvcGNpZGV2cy5oPgorCisj
aW5jbHVkZSAiZWlzYS5oIgorI2luY2x1ZGUgImlzYS5oIgorCitpbnQJcGNlYm1hdGNoKHN0cnVj
dCBkZXZpY2UgKiwgc3RydWN0IGNmZGF0YSAqLCB2b2lkICopOwordm9pZAlwY2ViYXR0YWNoKHN0
cnVjdCBkZXZpY2UgKiwgc3RydWN0IGRldmljZSAqLCB2b2lkICopOworCitDRkFUVEFDSF9ERUNM
KHBjZWIsIHNpemVvZihzdHJ1Y3QgZGV2aWNlKSwKKyAgICBwY2VibWF0Y2gsIHBjZWJhdHRhY2gs
IE5VTEwsIE5VTEwpOworCit2b2lkCXBjZWJfY2FsbGJhY2soc3RydWN0IGRldmljZSAqKTsKKwor
dW5pb24gcGNlYl9hdHRhY2hfYXJncyB7CisJY29uc3QgY2hhciAqZWFfbmFtZTsJCQkvKiBYWFgg
c2hvdWxkIGJlIGNvbW1vbiAqLworCXN0cnVjdCBpc2FidXNfYXR0YWNoX2FyZ3MgZWFfaWJhOwor
CXN0cnVjdCBlaXNhYnVzX2F0dGFjaF9hcmdzIGVhX2ViYTsKK307CisKK2ludAorcGNlYm1hdGNo
KHN0cnVjdCBkZXZpY2UgKnBhcmVudCwgc3RydWN0IGNmZGF0YSAqbWF0Y2gsIHZvaWQgKmF1eCkK
K3sKKwlzdHJ1Y3QgcGNpX2F0dGFjaF9hcmdzICpwYSA9IGF1eDsKKworCS8qCisJICogTWF0Y2gg
YW55dGhpbmcgd2hpY2ggY2xhaW1zIHRvIGJlIFBDSS1FSVNBIGJyaWRnZS4KKwkgKi8KKwlpZiAo
UENJX0NMQVNTKHBhLT5wYV9jbGFzcykgPT0gUENJX0NMQVNTX0JSSURHRSAmJgorCSAgICBQQ0lf
U1VCQ0xBU1MocGEtPnBhX2NsYXNzKSA9PSBQQ0lfU1VCQ0xBU1NfQlJJREdFX0VJU0EpCisJCXJl
dHVybiAoMSk7CisKKwkvKgorCSAqIE1hdGNoIHNvbWUga25vd24gUENJLUVJU0EgYnJpZGdlcyBl
eHBsaWNpdGx5LgorCSAqIFhYWCB0aGlzIGlzIHByb2JhYmx5IG5vdCBuZWNlc3NhcnksIHNob3Vs
ZCBiZSBtYXRjaGVkIGJ5IGFib3ZlCisJICogY29uZGl0aW9uCisJICovCisJc3dpdGNoIChQQ0lf
VkVORE9SKHBhLT5wYV9pZCkpIHsKKwljYXNlIFBDSV9WRU5ET1JfSU5URUw6CisJCXN3aXRjaCAo
UENJX1BST0RVQ1QocGEtPnBhX2lkKSkgeworCQljYXNlIFBDSV9QUk9EVUNUX0lOVEVMX1BDRUI6
CisJCQlyZXR1cm4gKDEpOworCQl9CisJCWJyZWFrOworCX0KKworCXJldHVybiAoMCk7Cit9CisK
K3ZvaWQKK3BjZWJhdHRhY2goc3RydWN0IGRldmljZSAqcGFyZW50LCBzdHJ1Y3QgZGV2aWNlICpz
ZWxmLCB2b2lkICphdXgpCit7CisJc3RydWN0IHBjaV9hdHRhY2hfYXJncyAqcGEgPSBhdXg7CisJ
Y2hhciBkZXZpbmZvWzI1Nl07CisJaW50IGVycm9yOworCisJcHJpbnRmKCJcbiIpOworCisJLyoK
KwkgKiBKdXN0IHByaW50IG91dCBhIGRlc2NyaXB0aW9uIGFuZCBkZWZlciBjb25maWd1cmF0aW9u
CisJICogdW50aWwgYWxsIFBDSSBkZXZpY2VzIGhhdmUgYmVlbiBhdHRhY2hlZC4KKwkgKi8KKwlw
Y2lfZGV2aW5mbyhwYS0+cGFfaWQsIHBhLT5wYV9jbGFzcywgMCwgZGV2aW5mbywgc2l6ZW9mKGRl
dmluZm8pKTsKKwlwcmludGYoIiVzOiAlcyAocmV2LiAweCUwMngpXG4iLCBzZWxmLT5kdl94bmFt
ZSwgZGV2aW5mbywKKwkgICAgUENJX1JFVklTSU9OKHBhLT5wYV9jbGFzcykpOworCisJcHJlcF9l
aXNhX2lvX3NwYWNlX3RhZy5wYnNfZXh0ZW50ID0gcHJlcF9pb19zcGFjZV90YWcucGJzX2V4dGVu
dDsKKwllcnJvciA9IGJ1c19zcGFjZV9pbml0KCZwcmVwX2Vpc2FfaW9fc3BhY2VfdGFnLCAiZWlz
YS1pb3BvcnQiLCBOVUxMLCAwKTsKKwlpZiAoZXJyb3IpCisJCXBhbmljKCJwcmVwX2J1c19zcGFj
ZV9pbml0OiBjYW4ndCBpbml0IGVpc2EgaW8gdGFnIik7CisKKwlwcmVwX2Vpc2FfbWVtX3NwYWNl
X3RhZy5wYnNfZXh0ZW50ID0gcHJlcF9tZW1fc3BhY2VfdGFnLnBic19leHRlbnQ7CisJZXJyb3Ig
PSBidXNfc3BhY2VfaW5pdCgmcHJlcF9laXNhX21lbV9zcGFjZV90YWcsICJlaXNhLWlvbWVtIiwg
TlVMTCwgMCk7CisJaWYgKGVycm9yKQorCQlwYW5pYygicHJlcF9idXNfc3BhY2VfaW5pdDogY2Fu
J3QgaW5pdCBlaXNhIG1lbSB0YWciKTsKKworCWNvbmZpZ19kZWZlcihzZWxmLCBwY2ViX2NhbGxi
YWNrKTsKK30KKwordm9pZAorcGNlYl9jYWxsYmFjayhzdHJ1Y3QgZGV2aWNlICpzZWxmKQorewor
CXVuaW9uIHBjZWJfYXR0YWNoX2FyZ3MgZWE7CisKKwkvKgorCSAqIEF0dGFjaCB0aGUgRUlTQSBi
dXMgYmVoaW5kIHRoaXMgYnJpZGdlLgorCSAqLworCW1lbXNldCgmZWEsIDAsIHNpemVvZihlYSkp
OworCWVhLmVhX2ViYS5lYmFfaW90ID0gJnByZXBfZWlzYV9pb19zcGFjZV90YWc7CisJZWEuZWFf
ZWJhLmViYV9tZW10ID0gJnByZXBfZWlzYV9tZW1fc3BhY2VfdGFnOworI2lmIE5FSVNBID4gMAor
CWVhLmVhX2ViYS5lYmFfZG1hdCA9ICZlaXNhX2J1c19kbWFfdGFnOworI2VuZGlmCisJY29uZmln
X2ZvdW5kX2lhKHNlbGYsICJlaXNhYnVzIiwgJmVhLmVhX2ViYSwgZWlzYWJ1c3ByaW50KTsKKwor
CS8qCisJICogQXR0YWNoIHRoZSBJU0EgYnVzIGJlaGluZCB0aGlzIGJyaWRnZS4KKwkgKi8KKwlt
ZW1zZXQoJmVhLCAwLCBzaXplb2YoZWEpKTsKKwllYS5lYV9pYmEuaWJhX2lvdCA9ICZwcmVwX2lz
YV9pb19zcGFjZV90YWc7CisJZWEuZWFfaWJhLmliYV9tZW10ID0gJnByZXBfaXNhX21lbV9zcGFj
ZV90YWc7CisjaWYgTklTQSA+IDAKKwllYS5lYV9pYmEuaWJhX2RtYXQgPSAmaXNhX2J1c19kbWFf
dGFnOworI2VuZGlmCisJY29uZmlnX2ZvdW5kX2lhKHNlbGYsICJpc2FidXMiLCAmZWEuZWFfaWJh
LCBpc2FidXNwcmludCk7Cit9CmRpZmYgLXJOdSAteCBvYmogLXggQ1ZTIHByZXAtb3JpZy9wY2kv
cGNpX21hY2hkZXAuYyBwcmVwL3BjaS9wY2lfbWFjaGRlcC5jCi0tLSBwcmVwLW9yaWcvcGNpL3Bj
aV9tYWNoZGVwLmMJMjAwNi0wMi0xMCAxMzo1Mjo1Ny4wMDAwMDAwMDAgLTA3MDAKKysrIHByZXAv
cGNpL3BjaV9tYWNoZGVwLmMJMjAwNi0wMi0yMCAxNjoyNzo1Ny4wMDAwMDAwMDAgLTA3MDAKQEAg
LTE5Miw3ICsxOTIsNyBAQAogICAgIGludCBzd2l6LCBpbnQgKmlsaW5lKQogewogCi0JKCpwbGF0
Zm9ybS0+cGNpX2ludHJfZml4dXApKGJ1cywgZGV2LCBzd2l6LCBpbGluZSk7CisJKCpwbGF0Zm9y
bS0+cGNpX2ludHJfZml4dXApKGJ1cywgZGV2LCBwaW4sIHN3aXosIGlsaW5lKTsKIH0KIAogaW50
CkBAIC0yMDcsNSArMjA3LDExIEBACiAJICAgIFBDSV9QUk9EVUNUKGlkKSA9PSBQQ0lfUFJPRFVD
VF9XRUlURUtfUDkxMDApCiAJCXJldHVybiAwOwogCi0JcmV0dXJuIChQQ0lfQ09ORl9ERUZBVUxU
KTsKKwkvKiBXZSBoYXZlIGFsbHJlYWR5IG1hcHBlZCB0aGUgTVBJQzIgaWYgd2UgaGF2ZSBvbmUs
IHNvIGxlYXZlIGl0CisJICAgYWxvbmUgKi8KKwlpZiAoUENJX1ZFTkRPUihpZCkgPT0gUENJX1ZF
TkRPUl9JQk0gJiYKKwkgICAgUENJX1BST0RVQ1QoaWQpID09IFBDSV9QUk9EVUNUX0lCTV9NUElD
MikKKwkJcmV0dXJuIDA7CisKKwlyZXR1cm4gKFBDSV9DT05GX0FMTCAmIH5QQ0lfQ09ORl9NQVBf
Uk9NKTsKIH0KZGlmZiAtck51IC14IG9iaiAteCBDVlMgcHJlcC1vcmlnL3ByZXAvaWJtXzYwMTUu
YyBwcmVwL3ByZXAvaWJtXzYwMTUuYwotLS0gcHJlcC1vcmlnL3ByZXAvaWJtXzYwMTUuYwkyMDA1
LTEyLTExIDA1OjE4OjQ4LjAwMDAwMDAwMCAtMDcwMAorKysgcHJlcC9wcmVwL2libV82MDE1LmMJ
MjAwNi0wMi0yMCAxNTo0MTowOS4wMDAwMDAwMDAgLTA3MDAKQEAgLTQxLDcgKzQxLDcgQEAKICNp
bmNsdWRlIDxtYWNoaW5lL2ludHIuaD4KICNpbmNsdWRlIDxtYWNoaW5lL3BsYXRmb3JtLmg+CiAK
LXZvaWQgcGNpX2ludHJfZml4dXBfaWJtXzYwMTUoaW50LCBpbnQsIGludCwgaW50ICopOwordm9p
ZCBwY2lfaW50cl9maXh1cF9pYm1fNjAxNShpbnQsIGludCwgaW50LCBpbnQsIGludCAqKTsKIAog
c3RydWN0IHBsYXRmb3JtIHBsYXRmb3JtX2libV82MDE1ID0gewogCSJJQk0gUFBTIE1vZGVsIDYw
MTUiLAkJCS8qIG1vZGVsICovCkBAIC01NSw3ICs1NSw3IEBACiB9OwogCiB2b2lkCi1wY2lfaW50
cl9maXh1cF9pYm1fNjAxNShpbnQgYnVzLCBpbnQgZGV2LCBpbnQgc3dpeiwgaW50ICpsaW5lKQor
cGNpX2ludHJfZml4dXBfaWJtXzYwMTUoaW50IGJ1cywgaW50IGRldiwgaW50IHBpbiwgaW50IHN3
aXosIGludCAqbGluZSkKIHsKIAlpZiAoYnVzICE9IDApCiAJCXJldHVybjsKZGlmZiAtck51IC14
IG9iaiAteCBDVlMgcHJlcC1vcmlnL3ByZXAvaWJtXzYwNDAuYyBwcmVwL3ByZXAvaWJtXzYwNDAu
YwotLS0gcHJlcC1vcmlnL3ByZXAvaWJtXzYwNDAuYwkyMDA1LTEyLTExIDA1OjE4OjQ4LjAwMDAw
MDAwMCAtMDcwMAorKysgcHJlcC9wcmVwL2libV82MDQwLmMJMjAwNi0wMi0yMCAxNTo0MToyNC4w
MDAwMDAwMDAgLTA3MDAKQEAgLTQ1LDcgKzQ1LDcgQEAKICNpbmNsdWRlIDxtYWNoaW5lL3BsYXRm
b3JtLmg+CiAKIC8qCi1zdGF0aWMgdm9pZCBwY2lfaW50cl9maXh1cF9pYm1fNjA0MChpbnQsIGlu
dCwgaW50LCBpbnQgKik7CitzdGF0aWMgdm9pZCBwY2lfaW50cl9maXh1cF9pYm1fNjA0MChpbnQs
IGludCwgaW50LCBpbnQsIGludCAqKTsKICovCiAKIHN0YXRpYyBjb25zdCBjaGFyICpvYmlvZGV2
c19pYm1fNjA0MFtdID0gewpkaWZmIC1yTnUgLXggb2JqIC14IENWUyBwcmVwLW9yaWcvcHJlcC9p
Ym1fNjA1MC5jIHByZXAvcHJlcC9pYm1fNjA1MC5jCi0tLSBwcmVwLW9yaWcvcHJlcC9pYm1fNjA1
MC5jCTIwMDUtMTItMTEgMDU6MTg6NDguMDAwMDAwMDAwIC0wNzAwCisrKyBwcmVwL3ByZXAvaWJt
XzYwNTAuYwkyMDA2LTAyLTIwIDE1OjQxOjQ4LjAwMDAwMDAwMCAtMDcwMApAQCAtNDQsNyArNDQs
NyBAQAogI2luY2x1ZGUgPG1hY2hpbmUvaW50ci5oPgogI2luY2x1ZGUgPG1hY2hpbmUvcGxhdGZv
cm0uaD4KIAotc3RhdGljIHZvaWQgcGNpX2ludHJfZml4dXBfaWJtXzYwNTAoaW50LCBpbnQsIGlu
dCwgaW50ICopOworc3RhdGljIHZvaWQgcGNpX2ludHJfZml4dXBfaWJtXzYwNTAoaW50LCBpbnQs
IGludCwgaW50LCBpbnQgKik7CiAKIHN0YXRpYyBjb25zdCBjaGFyICpvYmlvZGV2c19pYm1fNjA1
MFtdID0gewogCSJ3ZGMiLApAQCAtNjMsNyArNjMsNyBAQAogfTsKIAogc3RhdGljIHZvaWQKLXBj
aV9pbnRyX2ZpeHVwX2libV82MDUwKGludCBidXMsIGludCBkZXYsIGludCBzd2l6LCBpbnQgKmxp
bmUpCitwY2lfaW50cl9maXh1cF9pYm1fNjA1MChpbnQgYnVzLCBpbnQgZGV2LCBpbnQgcGluLCBp
bnQgc3dpeiwgaW50ICpsaW5lKQogewogCWlmIChidXMgIT0gMCkKIAkJcmV0dXJuOwpkaWZmIC1y
TnUgLXggb2JqIC14IENWUyBwcmVwLW9yaWcvcHJlcC9pYm1fNzAyNC5jIHByZXAvcHJlcC9pYm1f
NzAyNC5jCi0tLSBwcmVwLW9yaWcvcHJlcC9pYm1fNzAyNC5jCTE5NjktMTItMzEgMTc6MDA6MDAu
MDAwMDAwMDAwIC0wNzAwCisrKyBwcmVwL3ByZXAvaWJtXzcwMjQuYwkyMDA2LTAyLTIwIDIwOjM1
OjQ3LjAwMDAwMDAwMCAtMDcwMApAQCAtMCwwICsxLDE0NyBAQAorLyoJJE5ldEJTRDogaWJtXzcw
NDNfMTQwLmMsdiAxLjUgMjAwNS8xMi8xMSAxMjoxODo0OCBjaHJpc3RvcyBFeHAgJAkqLworCisv
Ki0KKyAqIENvcHlyaWdodCAoYykgMjAwMiBUaGUgTmV0QlNEIEZvdW5kYXRpb24sIEluYy4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBjb2RlIGlzIGRlcml2ZWQgZnJvbSBz
b2Z0d2FyZSBjb250cmlidXRlZCB0byBUaGUgTmV0QlNEIEZvdW5kYXRpb24KKyAqIGJ5IE5PTkFL
QSBLaW1paGlyby4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVu
dGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcyBzb2Z0d2FyZQorICogICAgbXVzdCBkaXNw
bGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ2VtZW50OgorICoJVGhpcyBwcm9kdWN0IGluY2x1
ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgTmV0QlNECisgKglGb3VuZGF0aW9uLCBJbmMu
IGFuZCBpdHMgY29udHJpYnV0b3JzLgorICogNC4gTmVpdGhlciB0aGUgbmFtZSBvZiBUaGUgTmV0
QlNEIEZvdW5kYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqICAgIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE5FVEJTRCBGT1VO
REFUSU9OLCBJTkMuIEFORCBDT05UUklCVVRPUlMKKyAqIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRAorICog
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgRk9VTkRBVElPTiBPUiBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KK19fS0VSTkVMX1JD
U0lEKDAsICIkTmV0QlNEOiBpYm1fNzA0M18xNDAuYyx2IDEuNSAyMDA1LzEyLzExIDEyOjE4OjQ4
IGNocmlzdG9zIEV4cCAkIik7CisKKyNpbmNsdWRlICJvcHRfb3BlbnBpYy5oIgorI2lmICFkZWZp
bmVkKE9QRU5QSUMpCisjZXJyb3IgUlMvNjAwMCA3MDI0IHJlcXVpcmUgIm9wdGlvbnMgT1BFTlBJ
QyIgaW4ga2VybmVsIGNvbmZpZyBmaWxlIQorI2VuZGlmCisKKyNpbmNsdWRlICJwY2kuaCIKKwor
I2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2luY2x1ZGUgPHN5cy9zeXN0bS5oPgorCisjaW5jbHVk
ZSA8bWFjaGluZS9pbnRyLmg+CisjaW5jbHVkZSA8bWFjaGluZS9wbGF0Zm9ybS5oPgorCisjaW5j
bHVkZSA8cG93ZXJwYy9vcGVucGljLmg+CisKKyNpbmNsdWRlIDxkZXYvcGNpL3BjaXZhci5oPgor
I2luY2x1ZGUgPGRldi9wY2kvcGNpcmVnLmg+CisjaW5jbHVkZSA8ZGV2L3BjaS9wY2lkZXZzLmg+
CisKK3ZvaWQgcGNpX2ludHJfZml4dXBfaWJtXzcwMjQoaW50LCBpbnQsIGludCwgaW50LCBpbnQg
Kik7Cit2b2lkIGluaXRfaW50cl9tcGljMih2b2lkKTsKKworc3RydWN0IHBsYXRmb3JtIHBsYXRm
b3JtX2libV83MDI0ID0geworCSJJQk0gTW9kZWwgNzAyNEUyMCAoYzBFRCkiLAkJLyogbW9kZWwg
Ki8KKwlwbGF0Zm9ybV9nZW5lcmljX21hdGNoLAkJCS8qIG1hdGNoICovCisJcHJlcF9wY2lfZ2V0
X2NoaXBzZXRfdGFnX2luZGlyZWN0LAkvKiBwY2lfZ2V0X2NoaXBzZXRfdGFnICovCisJcGNpX2lu
dHJfZml4dXBfaWJtXzcwMjQsCQkvKiBwY2lfaW50cl9maXh1cCAqLworCWluaXRfaW50cl9tcGlj
MiwJCQkvKiBpbml0X2ludHIgKi8KKwljcHVfc2V0dXBfdW5rbm93biwJCQkvKiBjcHVfc2V0dXAg
Ki8KKwlyZXNldF9wcmVwX2dlbmVyaWMsCQkJLyogcmVzZXQgKi8KKwlvYmlvZGV2c19ub2RldiwJ
CQkJLyogb2Jpb2RldnMgKi8KK307CisKKworLyoKKyAgWFhYOgorICAgVGhlIDcwMjQgZGVmaW5l
cyBpdCdzIGludGVycnVwdCBtYXAgaW4gcmVzaWR1YWwgZGF0YS4gIFRoZSBhcnJheSBiZWxvdwor
ICAgaXMgdGhlIGludGVycnVwdCBtYXAgb2YgYSA3MDI0IE1vZGVsIEUyMC4gIFRoaXMgd2lsbCBs
aWtlbHkgYnJlYWsgZ2l2ZW4KKyAgIGEgUENJIGNhcmQgd2l0aCBpdCdzIG93biBwY2kgYnJpZGdl
LgorKi8KK3ZvaWQKK3BjaV9pbnRyX2ZpeHVwX2libV83MDI0KGludCBidXMsIGludCBkZXYsIGlu
dCBwaW4sIGludCBzd2l6LCBpbnQgKmxpbmUpCit7CisJc3RhdGljIGludCBpcnFtYXBbMl1bNV1b
NF0gPSB7CisJICAgICAgeyB7IDAsIDAsIDAsIDAgfSwKKwkJeyAwLCAwLCAwLCAwIH0sCisJCXsg
MCwgMCwgMCwgMCB9LAorCQl7IDIsIDMsIDIsIDMgfSwKKwkJeyA0LCA1LCA0LCA1IH0sCisJICAg
ICAgfSwKKwkgICAgICB7IHsgMSwgMCwgMCwgMCB9LAorCQl7IDgsIDksIDgsIDkgfSwKKwkJeyAx
MCwgMTEsIDEwLCAxMSB9LAorCQl7IDEyLCAxMywgMTIsIDEzIH0sCisJCXsgMTQsIDE1LCAxNCwg
MTUgfQorCSAgICAgIH0KKwl9OworCisJaWYgKGJ1cyA8IDIgJiYgZGV2IDwgNSAmJiBwaW4gPCA1
KQorCQkqbGluZSA9IGlycW1hcFtidXNdW2Rldl1bcGluLTFdICsgSTgyNTlfSU5UUl9OVU07Cit9
CisKKwordm9pZAoraW5pdF9pbnRyX21waWMyKHZvaWQpCit7CisJdW5zaWduZWQgY2hhciAqYmFz
ZWFkZHIgPSAodW5zaWduZWQgY2hhciAqKTB4QzAwMDY4MDA7CS8qIFhYWCAqLworI2lmIE5QQ0kg
PiAwCisJc3RydWN0IHByZXBfcGNpX2NoaXBzZXQgcGM7CisJcGNpdGFnX3QgdGFnOworCXBjaXJl
Z190IGlkLCBhZGRyZXNzOworCisJKCpwbGF0Zm9ybS0+cGNpX2dldF9jaGlwc2V0X3RhZykoJnBj
KTsKKworCXRhZyA9IHBjaV9tYWtlX3RhZygmcGMsIDAsIDEzLCAwKTsKKwlpZCA9IHBjaV9jb25m
X3JlYWQoJnBjLCB0YWcsIFBDSV9JRF9SRUcpOworCisJaWYgKFBDSV9WRU5ET1IoaWQpID09IFBD
SV9WRU5ET1JfSUJNCisJICAgICYmIFBDSV9QUk9EVUNUKGlkKSA9PSBQQ0lfUFJPRFVDVF9JQk1f
TVBJQzIpIHsKKwkJYWRkcmVzcyA9IHBjaV9jb25mX3JlYWQoJnBjLCB0YWcsIDB4MTApOworCQlp
ZiAoKGFkZHJlc3MgJiBQQ0lfTUFQUkVHX1RZUEVfTUFTSykgPT0gUENJX01BUFJFR19UWVBFX01F
TSkgeworCQkJYWRkcmVzcyAmPSBQQ0lfTUFQUkVHX01FTV9BRERSX01BU0s7CisJCQkvKgorCQkJ
ICogUFJlUCBQQ0kgbWVtb3J5IHNwYWNlIGlzIGZyb20gMHhjMDAwMDAwMCB0bworCQkJICogMHhm
ZmZmZmZmZiBidXQgbWFjaGRlcC5jIG1hcHMgb25seSAweGMwMDAwMDAwIHRvCisJCQkgKiAweGNm
ZmZmZmZmIG9mIFBDSSBtZW1vcnkgc3BhY2UuIFNvIGxvb2sgaWYgdGhlIAorCQkJICogYWRkcmVz
cyBvZmZzZXQgaXMgYmlnZ2VyIHRoZW4gMHhmZmZmZmZmLiBJZiBpdCBpcworCQkJICogd2UgYXJl
IG91dHNpZGUgdGhlIGFscmVhZHkgbWFwcGVkIHJlZ2lvbiBhbmQgd2UgbmVlZAorCQkJICogdG8g
YWRkIGFuIGFkZGl0aW9uYWwgbWFwcGluZyBmb3IgdGhlIE9wZW5QSUMuCisJCQkgKiBUaGUgT3Bl
blBJQyByZWdpc3RlciB3aW5kb3cgaXMgYWx3YXlzIDI1NmtCLgorCQkJICovCisJCQlpZiAoYWRk
cmVzcyA+IDB4ZmZmZmZmZikKKwkJCQliYXNlYWRkciA9ICh1bnNpZ25lZCBjaGFyICopIG1hcGlv
ZGV2KAorCQkJCSAgICBQUkVQX0JVU19TUEFDRV9NRU0gfCBhZGRyZXNzLCAweDQwMDAwKTsKKwkJ
CWVsc2UKKwkJCQliYXNlYWRkciA9ICh1bnNpZ25lZCBjaGFyICopCisJCQkJICAgIChQUkVQX0JV
U19TUEFDRV9NRU0gfCBhZGRyZXNzKTsKKwkJfSBlbHNlIGlmICgoYWRkcmVzcyAmIFBDSV9NQVBS
RUdfVFlQRV9NQVNLKSA9PSBQQ0lfTUFQUkVHX1RZUEVfSU8pIHsKKwkJCWFkZHJlc3MgJj0gUENJ
X01BUFJFR19JT19BRERSX01BU0s7CisJCQliYXNlYWRkciA9ICh1bnNpZ25lZCBjaGFyICopIG1h
cGlvZGV2KAorCQkJICAgIFBSRVBfQlVTX1NQQUNFX0lPIHwgYWRkcmVzcywgMHg0MDAwMCk7CisJ
CX0KKwl9CisjZW5kaWYKKwlvcGVucGljX2luaXQoYmFzZWFkZHIpOworfQpkaWZmIC1yTnUgLXgg
b2JqIC14IENWUyBwcmVwLW9yaWcvcHJlcC9pYm1fNzA0M18xNDAuYyBwcmVwL3ByZXAvaWJtXzcw
NDNfMTQwLmMKLS0tIHByZXAtb3JpZy9wcmVwL2libV83MDQzXzE0MC5jCTIwMDUtMTItMTEgMDU6
MTg6NDguMDAwMDAwMDAwIC0wNzAwCisrKyBwcmVwL3ByZXAvaWJtXzcwNDNfMTQwLmMJMjAwNi0w
Mi0yMCAxNTo0MjoyOC4wMDAwMDAwMDAgLTA3MDAKQEAgLTU4LDcgKzU4LDcgQEAKICNpbmNsdWRl
IDxkZXYvcGNpL3BjaXJlZy5oPgogI2luY2x1ZGUgPGRldi9wY2kvcGNpZGV2cy5oPgogCi12b2lk
IHBjaV9pbnRyX2ZpeHVwX2libV83MDQzXzE0MChpbnQsIGludCwgaW50LCBpbnQgKik7Cit2b2lk
IHBjaV9pbnRyX2ZpeHVwX2libV83MDQzXzE0MChpbnQsIGludCwgaW50LCBpbnQsIGludCAqKTsK
IHZvaWQgaW5pdF9pbnRyX21waWModm9pZCk7CiAKIHN0cnVjdCBwbGF0Zm9ybSBwbGF0Zm9ybV9p
Ym1fNzA0M18xNDAgPSB7CkBAIC03Myw3ICs3Myw3IEBACiB9OwogCiB2b2lkCi1wY2lfaW50cl9m
aXh1cF9pYm1fNzA0M18xNDAoaW50IGJ1cywgaW50IGRldiwgaW50IHN3aXosIGludCAqbGluZSkK
K3BjaV9pbnRyX2ZpeHVwX2libV83MDQzXzE0MChpbnQgYnVzLCBpbnQgZGV2LCBpbnQgcGluLCBp
bnQgc3dpeiwgaW50ICpsaW5lKQogewogCiAJaWYgKCpsaW5lID49IDEgJiYgKmxpbmUgPCBPUEVO
UElDX0lOVFJfTlVNIC0gMykKZGlmZiAtck51IC14IG9iaiAteCBDVlMgcHJlcC1vcmlnL3ByZXAv
aWJtXzcyNDguYyBwcmVwL3ByZXAvaWJtXzcyNDguYwotLS0gcHJlcC1vcmlnL3ByZXAvaWJtXzcy
NDguYwkyMDA1LTEyLTExIDA1OjE4OjQ4LjAwMDAwMDAwMCAtMDcwMAorKysgcHJlcC9wcmVwL2li
bV83MjQ4LmMJMjAwNi0wMi0yMCAxNTo0Mjo0OS4wMDAwMDAwMDAgLTA3MDAKQEAgLTQ0LDcgKzQ0
LDcgQEAKICNpbmNsdWRlIDxtYWNoaW5lL2ludHIuaD4KICNpbmNsdWRlIDxtYWNoaW5lL3BsYXRm
b3JtLmg+CiAKLXN0YXRpYyB2b2lkIHBjaV9pbnRyX2ZpeHVwX2libV83MjQ4KGludCwgaW50LCBp
bnQsIGludCAqKTsKK3N0YXRpYyB2b2lkIHBjaV9pbnRyX2ZpeHVwX2libV83MjQ4KGludCwgaW50
LCBpbnQsIGludCwgaW50ICopOwogCiBzdHJ1Y3QgcGxhdGZvcm0gcGxhdGZvcm1faWJtXzcyNDgg
PSB7CiAJIklCTSBQUFMgTW9kZWwgNzI0OCAoRSkiLAkJLyogbW9kZWwgKi8KQEAgLTU4LDcgKzU4
LDcgQEAKIH07CiAKIHN0YXRpYyB2b2lkCi1wY2lfaW50cl9maXh1cF9pYm1fNzI0OChpbnQgYnVz
LCBpbnQgZGV2LCBpbnQgc3dpeiwgaW50ICpsaW5lKQorcGNpX2ludHJfZml4dXBfaWJtXzcyNDgo
aW50IGJ1cywgaW50IGRldiwgaW50IHBpbiwgaW50IHN3aXosIGludCAqbGluZSkKIHsKIAlpZiAo
YnVzICE9IDApCiAJCXJldHVybjsKZGlmZiAtck51IC14IG9iaiAteCBDVlMgcHJlcC1vcmlnL3By
ZXAvaWJtX21hY2hkZXAuYyBwcmVwL3ByZXAvaWJtX21hY2hkZXAuYwotLS0gcHJlcC1vcmlnL3By
ZXAvaWJtX21hY2hkZXAuYwkyMDA1LTEyLTExIDA1OjE4OjQ4LjAwMDAwMDAwMCAtMDcwMAorKysg
cHJlcC9wcmVwL2libV9tYWNoZGVwLmMJMjAwNi0wMi0yMCAxNTo1OTo1OC4wMDAwMDAwMDAgLTA3
MDAKQEAgLTYzLDYgKzYzLDkgQEAKICNpZiBkZWZpbmVkKFBMQVRGT1JNX0lCTV83MDQzXzE0MCkK
IAkmcGxhdGZvcm1faWJtXzcwNDNfMTQwLAogI2VuZGlmCisjaWYgZGVmaW5lZChQTEFURk9STV9J
Qk1fNzAyNCkKKwkmcGxhdGZvcm1faWJtXzcwMjQsCisjZW5kaWYKIAlOVUxMCiB9OwogCmRpZmYg
LXJOdSAteCBvYmogLXggQ1ZTIHByZXAtb3JpZy9wcmVwL21hY2hkZXAuYyBwcmVwL3ByZXAvbWFj
aGRlcC5jCi0tLSBwcmVwLW9yaWcvcHJlcC9tYWNoZGVwLmMJMjAwNS0xMi0yNCAxNjoyNDowMS4w
MDAwMDAwMDAgLTA3MDAKKysrIHByZXAvcHJlcC9tYWNoZGVwLmMJMjAwNi0wMi0yMSAxMTowMjoz
Ni4wMDAwMDAwMDAgLTA3MDAKQEAgLTM5OSw2ICszOTksMTAgQEAKIAlfQlVTX1NQQUNFX0xJVFRM
RV9FTkRJQU58X0JVU19TUEFDRV9JT19UWVBFLAogCTB4ODAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4
MDAwMTAwMDAsCiB9Oworc3RydWN0IHBvd2VycGNfYnVzX3NwYWNlIHByZXBfZWlzYV9pb19zcGFj
ZV90YWcgPSB7CisJX0JVU19TUEFDRV9MSVRUTEVfRU5ESUFOfF9CVVNfU1BBQ0VfSU9fVFlQRSwK
KwkweDgwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDBmMDAwLAorfTsKIHN0cnVjdCBwb3dlcnBj
X2J1c19zcGFjZSBwcmVwX21lbV9zcGFjZV90YWcgPSB7CiAJX0JVU19TUEFDRV9MSVRUTEVfRU5E
SUFOfF9CVVNfU1BBQ0VfTUVNX1RZUEUsCiAJMHhDMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgzZjAw
MDAwMCwKQEAgLTQwNyw2ICs0MTEsMTAgQEAKIAlfQlVTX1NQQUNFX0xJVFRMRV9FTkRJQU58X0JV
U19TUEFDRV9NRU1fVFlQRSwKIAkweEMwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAxMDAwMDAwLAog
fTsKK3N0cnVjdCBwb3dlcnBjX2J1c19zcGFjZSBwcmVwX2Vpc2FfbWVtX3NwYWNlX3RhZyA9IHsK
KwlfQlVTX1NQQUNFX0xJVFRMRV9FTkRJQU58X0JVU19TUEFDRV9NRU1fVFlQRSwKKwkweEMwMDAw
MDAwLCAweDAwMDAwMDAwLCAweDNmMDAwMDAwLAorfTsKIAogc3RhdGljIGNoYXIgZXhfc3RvcmFn
ZVsyXVtFWFRFTlRfRklYRURfU1RPUkFHRV9TSVpFKDgpXQogICAgIF9fYXR0cmlidXRlX18oKGFs
aWduZWQoOCkpKTsKZGlmZiAtck51IC14IG9iaiAteCBDVlMgcHJlcC1vcmlnL3ByZXAvbW90X3Vs
bWI2MHhhLmMgcHJlcC9wcmVwL21vdF91bG1iNjB4YS5jCi0tLSBwcmVwLW9yaWcvcHJlcC9tb3Rf
dWxtYjYweGEuYwkyMDA1LTEyLTI0IDEzOjA3OjMxLjAwMDAwMDAwMCAtMDcwMAorKysgcHJlcC9w
cmVwL21vdF91bG1iNjB4YS5jCTIwMDYtMDItMjAgMTU6NDM6MjMuMDAwMDAwMDAwIC0wNzAwCkBA
IC03NSw3ICs3NSw3IEBACiAKIAogc3RhdGljIGludCBtb3RfdWxtYjYweGFfbWF0Y2goc3RydWN0
IHBsYXRmb3JtICopOwotc3RhdGljIHZvaWQgcGNpX2ludHJfZml4dXBfbW90X3VsbWI2MHhhKGlu
dCwgaW50LCBpbnQsIGludCAqKTsKK3N0YXRpYyB2b2lkIHBjaV9pbnRyX2ZpeHVwX21vdF91bG1i
NjB4YShpbnQsIGludCwgaW50LCBpbnQsIGludCAqKTsKIAogc3RydWN0IHBsYXRmb3JtIHBsYXRm
b3JtX21vdF91bG1iNjB4YSA9IHsKIAkiQlVMTCBFU1RSRUxMQSAoZTApICAgICAgICAgKGUwKSIs
CS8qIG1vZGVsICovIC8qIFhYWCAqLwpAQCAtMTA3LDcgKzEwNyw3IEBACiB9CiAKIHN0YXRpYyB2
b2lkCi1wY2lfaW50cl9maXh1cF9tb3RfdWxtYjYweGEoaW50IGJ1cywgaW50IGRldiwgaW50IHN3
aXosIGludCAqbGluZSkKK3BjaV9pbnRyX2ZpeHVwX21vdF91bG1iNjB4YShpbnQgYnVzLCBpbnQg
ZGV2LCBpbnQgcGluLCBpbnQgc3dpeiwgaW50ICpsaW5lKQogewogCiAJaWYgKGJ1cyA9PSAwKSB7
CmRpZmYgLXJOdSAteCBvYmogLXggQ1ZTIHByZXAtb3JpZy9wcmVwL3BsYXRmb3JtLmMgcHJlcC9w
cmVwL3BsYXRmb3JtLmMKLS0tIHByZXAtb3JpZy9wcmVwL3BsYXRmb3JtLmMJMjAwNS0xMi0yNCAx
NTo0NTozNi4wMDAwMDAwMDAgLTA3MDAKKysrIHByZXAvcHJlcC9wbGF0Zm9ybS5jCTIwMDYtMDIt
MjAgMTY6MjI6MTEuMDAwMDAwMDAwIC0wNzAwCkBAIC0xMTQsNyArMTE0LDcgQEAKIAogLyogQVJH
VVNFRCAqLwogdm9pZAotcGNpX2ludHJfbm9maXh1cChpbnQgYnVzbm8sIGludCBkZXZpY2UsIGlu
dCBzd2l6LCBpbnQgKmludHIpCitwY2lfaW50cl9ub2ZpeHVwKGludCBidXNubywgaW50IGRldmlj
ZSwgaW50IHBpbiwgaW50IHN3aXosIGludCAqaW50cikKIHsKIH0KIAo=

--_=XFMail.1.5.5.NetBSD:20060221133510:321=_--
End of MIME message