Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 31 Dec 1998 10:34:44 -0500 (EST)
From:      Larry Lile <lile@stdio.com>
To:        hackers@FreeBSD.ORG
Subject:   ifmedia and token-ring (Help!!) (fwd)
Message-ID:  <Pine.BSF.4.05.9812311032240.5164-300000@heathers.stdio.com>

next in thread | raw e-mail | index | archive | help
  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.

--0-665532085-914957328=:7114
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
Content-ID: <Pine.BSF.4.05.9812311032242.5164@heathers.stdio.com>


I am trying to get ifmedia working for my Olicom token-ring driver
but I am having some strange problems.

First when I have probed/attached the card and ifconfig it it comes
up with this:

oltr1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 18000
	inet 10.0.0.1 netmask 0xffffff00 broadcast 10.0.0.255
	lladdr 00:00:83:2f:c3:ad
	media: autoselect (<unknown type>)
	supported media: UTP/16Mbit UTP/4Mbit autoselect

I really don't understand why I am getting "(<unknown type>)"
and I can only select "UTP/4Mbit" or "autoselect" but not
"UTP/16Mbit".

I have attached my patches to the if_media.h file and my driver.
I am not attached to to names or values for anything I changed
in if_media.  I also forgot to add the 4/16 Fiber values...

Their is also an issue of mode, there is "classic" mode which is 
compatible with the old ibm type of token-ring, "dedicated" mode
where you are expected to be hooked directly to a token-ring
switch and also a autosense mode.  I am not quite sure where
this should fit in but I put it in as a type option.

Any help?

Larry Lile
lile@stdio.com



--0-665532085-914957328=:7114
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="if_oltr.c"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.BSF.4.05.9812291348480.7114@heathers.stdio.com>
Content-Description: Olicom Token-ring driver
Content-Disposition: ATTACHMENT; FILENAME="if_oltr.c"

LyogDQogKiBDb3B5cmlnaHQgKGMpIDE5OTgsIExhcnJ5IExpbGUNCiAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuDQogKg0KICogRm9yIGxhdGVzdCBzb3VyY2Vz
IGFuZCBpbmZvcm1hdGlvbiBvbiB0aGlzIGRyaXZlciwgcGxlYXNlDQogKiBn
byB0byBodHRwOi8vYW5hcmNoeS5zdGRpby5jb20uDQogKg0KICogUXVlc3Rp
b25zLCBjb21tZW50cyBvciBzdWdnZXN0aW9ucyBzaG91bGQgYmUgZGlyZWN0
ZWQgdG8NCiAqIExhcnJ5IExpbGUgPGxpbGVAc3RkaW8uY29tPi4NCiAqDQog
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCiAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucw0KICogYXJlIG1ldDoNCiAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQog
KiAgICBub3RpY2UgdW5tb2RpZmllZCwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMsIGFuZCB0aGUgZm9sbG93aW5nDQogKiAgICBkaXNjbGFpbWVyLg0KICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCiAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUNCiAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQogKg0K
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFO
RCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORA0KICogQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFDQogKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RQ0KICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
QVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUNCiAqIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMDQogKiBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUw0KICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pDQogKiBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVA0KICogTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWQ0KICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRg0K
ICogU1VDSCBEQU1BR0UuDQogKg0KICogJElkOiBpZl9vbHRyLmMsdiAxLjEz
IDE5OTgvMTIvMTAgMTg6NTU6MTIgbGlsZSBFeHAgbGlsZSAkDQogKi8NCg0K
DQojaW5jbHVkZSAicGNpLmgiDQojaW5jbHVkZSAib2x0ci5oIg0KI2luY2x1
ZGUgIm9wdF9pbmV0LmgiDQojaW5jbHVkZSAiYnBmaWx0ZXIuaCINCg0KI2lm
IChOT0xUUiArIE5QQ0kpID4gMA0KDQovKiNkZWZpbmUgVFJsbGRJbmxpbmVJ
TyovDQoNCiNkZWZpbmUgSVNBX0FEQVBURVJTICAoT0NfMzExNSB8IE9DXzMx
MTcgfCBPQ18zMTE4KQ0KI2RlZmluZSBQQ0lfQURBUFRFUlMgIChPQ18zMTMz
IHwgT0NfMzEzNiB8IE9DXzMxMzcgfCBcDQogICAgICAgICAgICAgICAgICAg
ICAgIE9DXzMxMzkgfCBPQ18zMTQwIHwgT0NfMzE0MSB8IFwNCiAgICAgICAg
ICAgICAgICAgICAgICAgT0NfMzI1MCB8IE9DXzM1NDAgKQ0KDQojZGVmaW5l
IFBDSV9WRU5ET1JfT0xJQ09NIDB4MTA4RA0KDQpjaGFyICpBZGFwdGVyTmFt
ZVtdID0gew0KICAgLyogIDAgKi8gIk9saWNvbSBYVCBBZGFwdGVyIFt1bnN1
cHBvcnRlZF0iLA0KICAgLyogIDEgKi8gIk9saWNvbSBPQy0zMTE1IiwNCiAg
IC8qICAyICovICJPbGljb20gSVNBIDE2LzQgQWRhcHRlciAoT0MtMzExNyki
LA0KICAgLyogIDMgKi8gIk9saWNvbSBJU0EgMTYvNCBBZGFwdGVyIChPQy0z
MTE4KSIsDQogICAvKiAgNCAqLyAiT2xpY29tIE1DQSAxNi80IEFkYXB0ZXIg
KE9DLTMxMjkpIFt1bnN1cHBvcnRlZF0iLA0KICAgLyogIDUgKi8gIk9saWNv
bSBNQ0EgMTYvNCBBZGFwdGVyIChPQy0zMTI5KSBbdW5zdXBwb3J0ZWRdIiwN
CiAgIC8qICA2ICovICJPbGljb20gTUNBIDE2LzQgQWRhcHRlciAoT0MtMzEy
OSkgW3Vuc3VwcG9ydGVkXSIsDQogICAvKiAgNyAqLyAiT2xpY29tIEVJU0Eg
MTYvNCBBZGFwdGVyIChPQy0zMTMzKSIsDQogICAvKiAgOCAqLyAiT2xpY29t
IEVJU0EgMTYvNCBBZGFwdGVyIChPQy0zMTMzKSIsDQogICAvKiAgOSAqLyAi
T2xpY29tIEVJU0EgMTYvNCBTZXJ2ZXIgQWRhcHRlciAoT0MtMzEzNSkiLA0K
ICAgLyogMTAgKi8gIk9saWNvbSBQQ0kgMTYvNCBBZGFwdGVyIChPQy0zMTM2
KSIsDQogICAvKiAxMSAqLyAiT2xpY29tIFBDSSAxNi80IEFkYXB0ZXIgKE9D
LTMxMzYpIiwNCiAgIC8qIDEyICovICJPbGljb20gUENJL0lJIDE2LzQgQWRh
cHRlciAoT0MtMzEzNykiLA0KICAgLyogMTMgKi8gIk9saWNvbSBQQ0kgMTYv
NCBBZGFwdGVyIChPQy0zMTM5KSIsDQogICAvKiAxNCAqLyAiT2xpY29tIFJh
cGlkRmlyZSAzMTQwIDE2LzQgUENJIEFkYXB0ZXIgKE9DLTMxNDApIiwNCiAg
IC8qIDE1ICovICJPbGljb20gUmFwaWRGaXJlIDMxNDEgRmliZXIgQWRhcHRl
ciAoT0MtMzE0MSkiLA0KICAgLyogMTYgKi8gIk9saWNvbSBQQ01DSUEgMTYv
NCBBZGFwdGVyIChPQy0zMjIwKSBbdW5zdXBwb3J0ZWRdIiwNCiAgIC8qIDE3
ICovICJPbGljb20gUENNQ0lBIDE2LzQgQWRhcHRlciAoT0MtMzEyMSwgT0Mt
MzIzMCwgT0MtMzIzMikgW3Vuc3VwcG9ydGVkXSIsDQogICAvKiAxOCAqLyAi
T2xpY29tIFBDTUNJQSAxNi80IEFkYXB0ZXIgKE9DLTMyNTApIiwNCiAgIC8q
IDE5ICovICJPbGljb20gUmFwaWRGaXJlIDM1NDAgNC8xNi8xMDAgQWRhcHRl
ciAoT0MtMzU0MCkiDQp9Ow0KDQojaW5jbHVkZSA8c3lzL3BhcmFtLmg+DQoj
aW5jbHVkZSA8c3lzL3N5c3RtLmg+DQojaW5jbHVkZSA8c3lzL3Byb2MuaD4N
CiNpbmNsdWRlIDxzeXMvc29ja2lvLmg+DQojaW5jbHVkZSA8c3lzL21hbGxv
Yy5oPg0KI2luY2x1ZGUgPHN5cy9tYnVmLmg+DQojaW5jbHVkZSA8c3lzL3Nv
Y2tldC5oPg0KI2luY2x1ZGUgPHN5cy9zeXNsb2cuaD4NCiNpbmNsdWRlIDxz
eXMva2VybmVsLmg+DQojaW5jbHVkZSA8c3lzL2ludGVycnVwdC5oPg0KDQoj
aW5jbHVkZSA8bmV0L2V0aGVybmV0Lmg+DQojaW5jbHVkZSA8bmV0L2lmLmg+
DQojaW5jbHVkZSA8bmV0L2lmX2FycC5oPg0KI2luY2x1ZGUgPG5ldC9pc284
ODAyNS5oPg0KI2luY2x1ZGUgPG5ldC9pZl9tZWRpYS5oPg0KDQojaWYgTkJQ
RklMVEVSID4gMA0KI2luY2x1ZGUgPG5ldC9icGYuaD4NCiNlbmRpZg0KIA0K
I2lmIE5QTlAgPiAwDQojaW5jbHVkZSA8aTM4Ni9pc2EvcG5wLmg+DQojZW5k
aWYNCg0KI2luY2x1ZGUgPG1hY2hpbmUvY2xvY2suaD4NCiNpbmNsdWRlIDxt
YWNoaW5lL21kX3Zhci5oPg0KI2luY2x1ZGUgPGkzODYvaXNhL2lzYV9kZXZp
Y2UuaD4NCg0KI2lmIE5QQ0kgPiAwDQojaW5jbHVkZSA8cGNpL3BjaXZhci5o
Pg0KI2luY2x1ZGUgPHBjaS9wY2lyZWcuaD4NCiNlbmRpZg0KDQojaWZuZGVm
IFRSTExEX1NQRUVEX0FVVE8NCiNkZWZpbmUgVFJMTERfU1BFRURfQVVUTyAw
DQojZW5kaWYNCg0Kdm9pZCAqb2x0cl9tYWxsb2Moc3NpemVfdCwgVFJsbGRB
ZGFwdGVyQ29uZmlnX3QgKik7DQoNCi8qDQogKiBHbHVlIGZ1bmN0aW9ucyBw
cm90b3R5cGVzIGZvciBQTVcga2l0IElPDQogKi8NCg0KI2lmbmRlZiBUUmxs
ZElubGluZUlPDQpzdGF0aWMgdm9pZCBEcml2ZXJPdXRCeXRlICAgICAgICAg
ICBfX1AoKHVuc2lnbmVkIHNob3J0LCB1bnNpZ25lZCBjaGFyKSk7DQpzdGF0
aWMgdm9pZCBEcml2ZXJPdXRXb3JkICAgICAgICAgICBfX1AoKHVuc2lnbmVk
IHNob3J0LCB1bnNpZ25lZCBzaG9ydCkpOw0Kc3RhdGljIHZvaWQgRHJpdmVy
T3V0RHdvcmQgICAgICAgICAgX19QKCh1bnNpZ25lZCBzaG9ydCwgdW5zaWdu
ZWQgbG9uZykpOw0Kc3RhdGljIHZvaWQgRHJpdmVyUmVwT3V0Qnl0ZSAgICAg
ICAgX19QKCh1bnNpZ25lZCBzaG9ydCwgdW5zaWduZWQgY2hhciAgKiwgaW50
KSk7DQpzdGF0aWMgdm9pZCBEcml2ZXJSZXBPdXRXb3JkICAgICAgICBfX1Ao
KHVuc2lnbmVkIHNob3J0LCB1bnNpZ25lZCBzaG9ydCAqLCBpbnQpKTsNCnN0
YXRpYyB2b2lkIERyaXZlclJlcE91dER3b3JkICAgICAgIF9fUCgodW5zaWdu
ZWQgc2hvcnQsIHVuc2lnbmVkIGxvbmcgICosIGludCkpOw0Kc3RhdGljIHVu
c2lnbmVkIGNoYXIgIERyaXZlckluQnl0ZSAgX19QKCh1bnNpZ25lZCBzaG9y
dCkpOw0Kc3RhdGljIHVuc2lnbmVkIHNob3J0IERyaXZlckluV29yZCAgX19Q
KCh1bnNpZ25lZCBzaG9ydCkpOw0Kc3RhdGljIHVuc2lnbmVkIGxvbmcgIERy
aXZlckluRHdvcmQgX19QKCh1bnNpZ25lZCBzaG9ydCkpOw0Kc3RhdGljIHZv
aWQgRHJpdmVyUmVwSW5CeXRlICAgICAgICAgX19QKCh1bnNpZ25lZCBzaG9y
dCwgdW5zaWduZWQgY2hhciAgKiwgaW50KSk7DQpzdGF0aWMgdm9pZCBEcml2
ZXJSZXBJbldvcmQgICAgICAgICBfX1AoKHVuc2lnbmVkIHNob3J0LCB1bnNp
Z25lZCBzaG9ydCAqLCBpbnQpKTsNCnN0YXRpYyB2b2lkIERyaXZlclJlcElu
RHdvcmQgICAgICAgIF9fUCgodW5zaWduZWQgc2hvcnQsIHVuc2lnbmVkIGxv
bmcgICosIGludCkpOw0KI2VuZGlmIC8qVFJsbGRJbmxpbmVJTyovDQpzdGF0
aWMgdm9pZCBEcml2ZXJTdXNwZW5kICAgICAgICAgICAgICAgIF9fUCgodW5z
aWduZWQgc2hvcnQpKTsNCnN0YXRpYyB2b2lkIERyaXZlclN0YXR1cyAgICAg
ICAgICAgICAgICAgX19QKCh2b2lkICosIFRSbGxkU3RhdHVzX3QgKikpOw0K
c3RhdGljIHZvaWQgRHJpdmVyQ2xvc2VDb21wbGV0ZWQgICAgICAgICBfX1Ao
KHZvaWQgKikpOw0Kc3RhdGljIHZvaWQgRHJpdmVyU3RhdGlzdGljcyAgICAg
ICAgICAgICBfX1AoKHZvaWQgKiwgVFJsbGRTdGF0aXN0aWNzX3QgKikpOw0K
c3RhdGljIHZvaWQgRHJpdmVyVHJhbnNtaXRGcmFtZUNvbXBsZXRlZCBfX1Ao
KHZvaWQgKiwgdm9pZCAqLCBpbnQpKTsNCnN0YXRpYyB2b2lkIERyaXZlclJl
Y2VpdmVGcmFtZUNvbXBsZXRlZCAgX19QKCh2b2lkICosIGludCwgaW50LCB2
b2lkICosIGludCkpOw0KDQp0eXBlZGVmIHN0cnVjdCB0eF9idWYgew0KICAg
IGludCBpbmRleDsNCiAgICBjaGFyICpidWY7DQp9IHR4X2J1Zl90Ow0KDQp0
eXBlZGVmIHN0cnVjdCByeF9idWYgew0KICAgIGludCAgICAgIGluZGV4Ow0K
ICAgIGNoYXIgICAgICpidWY7DQp9IHJ4X2J1Zl90Ow0KDQojaWZuZGVmIEVY
VFJBX09MVFINCiNpZiBOUENJID4gMA0KI2RlZmluZSBFWFRSQV9PTFRSCTgN
CiNlbHNlIA0KI2RlZmluZSBFWFRSQV9PTFRSCTANCiNlbmRpZiAvKiBOUENJ
ICovDQojZW5kaWYgLyogRVhUUkFfT0xUUiAqLw0KDQojaWZuZGVmIE9MVFJf
UFJPTUlTQ19NT0RFDQojZGVmaW5lIE9MVFJfUFJPTUlTQ19NT0RFIChUUkxM
RF9QUk9NX0xMQykNCiNlbmRpZg0KDQojZGVmaW5lIEFMTF9PUFRJT05TIChJ
Rk1fVE9LX0VUUiB8IElGTV9UT0tfU1JDUlQgfCBJRk1fVE9LX0FMTFIgfCBJ
Rk1fVE9LX0RUUiB8IElGTV9UT0tfQ0xBU1NJQyB8IElGTV9UT0tfQVVUTykN
Cg0KLyogTGlzdCBzaXplcyBNVVNUIGJlIGEgcG93ZXIgb2YgMiAqLw0KI2Rl
ZmluZSBUWF9MSVNUX1NJWkUgICAgMTYNCiNkZWZpbmUgUlhfTElTVF9TSVpF
ICAgIDE2IA0KI2RlZmluZSBUWF9MSVNUX01BU0sgICAgKFRYX0xJU1RfU0la
RSAtIDEpDQojZGVmaW5lIFJYX0xJU1RfTUFTSyAgICAoUlhfTElTVF9TSVpF
IC0gMSkNCiNkZWZpbmUgUlhfQlVGRkVSX0xFTiAgIDQwOTYNCiNkZWZpbmUg
VFhfQlVGRkVSX0xFTiAgIDQwOTYNCg0Kc3RydWN0IG9sdHJfc29mdGMgew0K
ICAgIHN0cnVjdCBhcnBjb20gYXJwY29tOw0KICAgIHN0cnVjdCBpZm1lZGlh
IGlmbWVkaWE7DQogICAgVFJsbGRBZGFwdGVyQ29uZmlnX3QgKmNvbmZpZzsN
CiAgICBUUmxsZEFkYXB0ZXJfdCAqVFJsbGRBZGFwdGVyOw0KICAgIGludCB1
bml0Ow0KICAgIHVfY2hhciAgUHJvbWlzY01vZGU7DQogICAgdV9zaG9ydCBB
ZGFwdGVyTW9kZTsNCiAgICBpbnQgaHdfc3RhdGU7DQojZGVmaW5lIEhXX1VO
S05PV04gICAgICAwICAvKiBpbml0aWFsL2Fic2VudCBzdGF0ZSAqLw0KI2Rl
ZmluZSBIV19GT1VORCAgICAgICAgMSAgLyogZm91bmQsIG5vdCBpbml0aWFs
aXplZCAqLw0KI2RlZmluZSBIV19CQUQgICAgICAgICAgMiAgLyogZmF0YWwg
ZXJyb3IgKi8NCiNkZWZpbmUgSFdfRkFJTEVEICAgICAgIDMgIC8qIGNsb3Nl
ZCBlZy4gYnkgcmVtb3ZlLCBhbGxvdyBtYW51YWwgcmVvcGVuICovDQojZGVm
aW5lIEhXX0xPQURJTkcgICAgICA0DQojZGVmaW5lIEhXX0NMT1NJTkcgICAg
ICA1DQojZGVmaW5lIEhXX0NMT1NJTkcyICAgICA2DQojZGVmaW5lIEhXX0NM
T1NFRCAgICAgICA3DQojZGVmaW5lIEhXX09QRU5JTkcgICAgICA4DQojZGVm
aW5lIEhXX09QRU4gICAgICAgICA5DQojZGVmaW5lIEhXX0VSUk9SICAgICAg
ICAxMCAvKiB0ZW1wb3JhcnkgZXJyb3IgKi8NCg0KICAgIHVfbG9uZyBHcm91
cEFkZHJlc3M7DQogICAgdV9sb25nIEZ1bmN0aW9uYWxBZGRyZXNzOw0KICAg
IGludCBwb2xsX2FkYXB0ZXI7IA0KDQogICAgaW50IHR4X25leHQ7DQogICAg
aW50IHR4X2F2YWlsOw0KICAgIHR4X2J1Zl90IHR4X2J1ZmZlcltUWF9MSVNU
X1NJWkVdOw0KDQogICAgaW50IHJ4X25leHQ7DQogICAgaW50IHJ4X2F2YWls
Ow0KICAgIHJ4X2J1Zl90IHJ4X2J1ZmZlcltSWF9MSVNUX1NJWkVdOw0KDQog
ICAgc3RydWN0IGNhbGxvdXRfaGFuZGxlIG9sdHJfY2g7DQogICAgc3RydWN0
IGNhbGxvdXRfaGFuZGxlIHBvbGxfY2g7DQoNCn07DQoNCnN0YXRpYyBzdHJ1
Y3Qgb2x0cl9zb2Z0YyBvbHRyX3NvZnRjW05PTFRSICsgRVhUUkFfT0xUUl07
DQoNCi8qDQogKiBEcml2ZXIgZnVuY3Rpb24gcHJvdG90eXBlcw0KICovDQoN
CnN0YXRpYyBpbnQgIG9sdHJfcHJvYmUgICBfX1AoKHN0cnVjdCBpc2FfZGV2
aWNlICopKTsNCnN0YXRpYyBpbnQgIG9sdHJfYXR0YWNoICBfX1AoKHN0cnVj
dCBpc2FfZGV2aWNlICopKTsgIA0Kc3RhdGljIHZvaWQgb2x0cl9pbml0ICAg
IF9fUCgoc3RydWN0IG9sdHJfc29mdGMgKikpOw0Kc3RhdGljIHZvaWQgb2x0
cl9pbnRyICAgIF9fUCgoaW50KSk7DQpzdGF0aWMgdm9pZCBvbHRyX3N0YXJ0
ICAgX19QKChzdHJ1Y3QgaWZuZXQgKikpOw0Kc3RhdGljIHZvaWQgb2x0cl9z
dG9wICAgIF9fUCgoc3RydWN0IG9sdHJfc29mdGMgKikpOw0Kc3RhdGljIGlu
dCAgb2x0cl9pb2N0bCAgIF9fUCgoc3RydWN0IGlmbmV0ICosIHVfbG9uZywg
Y2FkZHJfdCkpOw0KDQpzdGF0aWMgaW50IG9sdHJfYXR0YWNoX2NvbW1vbiAg
IF9fUCgoc3RydWN0IG9sdHJfc29mdGMgKikpOw0KDQp2b2lkIG9sdHJfdGlt
ZW91dCBfX1AoKHZvaWQgKikpOw0Kdm9pZCBhZGFwdGVyX3BvbGwgX19QKCh2
b2lkICopKTsNCg0Kc3RydWN0IGlzYV9kcml2ZXIgb2x0cmRyaXZlciA9IHsN
CiAgICBvbHRyX3Byb2JlLA0KICAgIG9sdHJfYXR0YWNoLA0KICAgICJvbHRy
IiwNCiAgICAwDQp9Ow0KDQppbnQgaXNhX2NhcmRzID0gMDsNCg0KI2lmIE5Q
Q0kgPiAwDQpzdGF0aWMgdV9sb25nIG9sdHJfY291bnQgPSBOT0xUUjsNCnN0
YXRpYyBjb25zdCBjaGFyICpvbHRyX3BjaV9wcm9iZQlfX1AoKHBjaWNpX3Qs
IHBjaWRpX3QpKTsNCnN0YXRpYyB2b2lkIG9sdHJfcGNpX2F0dGFjaAkJX19Q
KChwY2ljaV90LCBpbnQpKTsNCnN0YXRpYyB2b2lkIG9sdHJfcGNpX2ludHIg
ICAgCQlfX1AoKHZvaWQgKikpOw0Kc3RhdGljIHZvaWQgb2x0cl9wY2lfc2h1
dGRvd24JCV9fUCgoaW50LCB2b2lkICopKTsNCg0Kc3RhdGljIHN0cnVjdCBw
Y2lfZGV2aWNlIG9sdHJfZGV2aWNlID0gew0KICAgICJvbHRyIiwNCiAgICBv
bHRyX3BjaV9wcm9iZSwNCiAgICBvbHRyX3BjaV9hdHRhY2gsDQogICAgJm9s
dHJfY291bnQsDQogICAgTlVMTA0KfTsNCg0KREFUQV9TRVQocGNpZGV2aWNl
X3NldCwgb2x0cl9kZXZpY2UpOw0KaW50IHBjaV9jYXJkcyA9IDA7DQojZW5k
aWYgLyogTlBDSSAqLw0KDQpzdGF0aWMgaW50ICBvbHRyX2lmbWVkaWFfdXBk
CV9fUCgoc3RydWN0IGlmbmV0ICopKTsNCnN0YXRpYyB2b2lkIG9sdHJfaWZt
ZWRpYV9zdHMgICAgX19QKChzdHJ1Y3QgaWZuZXQgKiwgc3RydWN0IGlmbWVk
aWFyZXEgKikpOw0KDQpzdGF0aWMgVFJsbGREcml2ZXJfdCBvbHRyTGxkRHJp
dmVyID0gew0KICAgIFRSTExEX1ZFUlNJT04sDQojaWZuZGVmIFRSbGxkSW5s
aW5lSU8NCiAgICBEcml2ZXJPdXRCeXRlLA0KICAgIERyaXZlck91dFdvcmQs
DQogICAgRHJpdmVyT3V0RHdvcmQsDQogICAgRHJpdmVyUmVwT3V0Qnl0ZSwN
CiAgICBEcml2ZXJSZXBPdXRXb3JkLA0KICAgIERyaXZlclJlcE91dER3b3Jk
LA0KICAgIERyaXZlckluQnl0ZSwNCiAgICBEcml2ZXJJbldvcmQsDQogICAg
RHJpdmVySW5Ed29yZCwNCiAgICBEcml2ZXJSZXBJbkJ5dGUsDQogICAgRHJp
dmVyUmVwSW5Xb3JkLA0KICAgIERyaXZlclJlcEluRHdvcmQsDQojZW5kaWYg
LypUUmxsZElubGluZUlPKi8NCiAgICBEcml2ZXJTdXNwZW5kLA0KICAgIERy
aXZlclN0YXR1cywNCiAgICBEcml2ZXJDbG9zZUNvbXBsZXRlZCwNCiAgICBE
cml2ZXJTdGF0aXN0aWNzLA0KICAgIERyaXZlclRyYW5zbWl0RnJhbWVDb21w
bGV0ZWQsDQogICAgRHJpdmVyUmVjZWl2ZUZyYW1lQ29tcGxldGVkLA0KfTsN
Cg0KVFJsbGRBZGFwdGVyQ29uZmlnX3Qgb2x0cl9jb25maWdbTk9MVFIgKyBF
WFRSQV9PTFRSXTsNCg0Kdm9pZCAqDQpvbHRyX21hbGxvYyhTaXplLCBBZGFw
dGVyKQ0KICAgIHNzaXplX3QgU2l6ZTsNCiAgICBUUmxsZEFkYXB0ZXJDb25m
aWdfdCAqQWRhcHRlcjsNCnsNCg0KICAgIC8qIElmIHRoZSBhZGFwdGVyIG5l
ZWRzIG1lbW9yeSBiZWxvdyAxNk0gZm9yIERNQSB0aGVuIHVzZSBjb250aWdt
YWxsb2MgKi8NCiAgICBpZiAoQWRhcHRlci0+bW9kZSAmIFRSTExEX01PREVf
MTZNKSAgLyogQWRhcHRlciB1c2luZyBJU0EgRE1BIGJ1ZmZlciBiZWxvdyAx
Nk0gKi8NCiAgICAgICAgcmV0dXJuKGNvbnRpZ21hbGxvYyhTaXplLCBNX0RF
VkJVRiwgTV9OT1dBSVQsIDB1bCwgMHhmZmZmZmZ1bCwgMXVsLCAweDEwMDAw
dWwpKTsNCiAgICBlbHNlDQogICAgICAgIHJldHVybihtYWxsb2MoU2l6ZSwg
TV9ERVZCVUYsIE1fTk9XQUlUKSk7DQp9DQogICAgDQovKg0KICogRHJpdmVy
IEZ1bmN0aW9ucyANCiAqLw0KDQpzdGF0aWMgaW50DQpvbHRyX3Byb2JlKGlz
KQ0KICAgIHN0cnVjdCBpc2FfZGV2aWNlICppczsNCnsNCiAgICBzdGF0aWMg
aW50IGZpbmRfY29tcGxldGVkID0gMCwgYXNzaWduZWRbTk9MVFJdOw0KICAg
IHN0cnVjdCBvbHRyX3NvZnRjICpzYyA9ICZvbHRyX3NvZnRjW2lzLT5pZF91
bml0XTsNCiAgICBpbnQgaTsNCg0KICAgIC8qIE1ha2UgbGlmZSBlYXN5LCB1
c2UgdGhlIE9saWNvbSBzdXBwbGllZCBmaW5kIGZ1bmN0aW9uIG9uIHRoZSBm
aXJzdCBwcm9iZQ0KICAgICAqIHRvIHByb2JlIGFsbCBvZiB0aGUgSVNBIGFk
YXB0ZXJzLiAgVGhlbiBnaXZlIHRoZW0gdG8gZWFjaCB1bml0IGFzIHJlcXVl
c3RlZC4NCiAgICAgKiBUcnkgdG8gbWF0Y2ggdGhlIGFkYXB0ZXJzIHRvIHVu
aXRzIGJhc2VkIG9uIHRoZSBpb2Jhc2UsIGJ1dCBpZiBpb2Jhc2U/IHRoZW4N
CiAgICAgKiBqdXN0IGdpdmUgb3V0IHRoZSBuZXh0IGF2YWlsYWJsZSBhZGFw
dGVyLg0KICAgICAqLw0KICAgIGlmICghZmluZF9jb21wbGV0ZWQpIHsNCiAg
ICAgICAgaXNhX2NhcmRzID0gVFJsbGRGaW5kKCZvbHRyTGxkRHJpdmVyLCAm
b2x0cl9jb25maWdbMF0sIElTQV9BREFQVEVSUywgTk9MVFIpOw0KICAgICAg
ICAvKmZvciAoaSA9IDA7IGkgPCBpc2FfY2FyZHM7IGkrKykgew0KICAgICAg
ICAgICAgcHJpbnRmKCJUUmxsZEZpbmQ6IGNhcmQgJWQgLSAlcyBNQUMgJTZE
XG4iLCBpICsgMSwgQWRhcHRlck5hbWVbb2x0cl9jb25maWdbaV0udHlwZV0s
IG9sdHJfY29uZmlnW2ldLm1hY2FkZHJlc3MsICI6Iik7DQogICAgICAgIH0q
Lw0KICAgICAgICBmb3IgKGkgPSAwOyBpIDwgTk9MVFI7IGkrKykNCiAgICAg
ICAgICAgIGFzc2lnbmVkW2ldID0gMDsNCiAgICAgICAgZmluZF9jb21wbGV0
ZWQgPSAxOw0KICAgIH0NCg0KICAgIHNjLT51bml0ID0gaXMtPmlkX3VuaXQ7
DQogICAgc2MtPmh3X3N0YXRlID0gSFdfVU5LTk9XTjsNCg0KICAgIGlmIChm
aW5kX2NvbXBsZXRlZCAmJiAoKGlzYV9jYXJkcyA9PSAwKSB8fCAoaXMtPmlk
X3VuaXQgPiBpc2FfY2FyZHMpKSkgDQogICAgICAgIHJldHVybigwKTsNCg0K
ICAgIGlmICgoKGlzLT5pZF9pb2Jhc2UgPCAweGEwMCkgfHwgKGlzLT5pZF9p
b2Jhc2UgPiAweGJlMCkpICYmIChpcy0+aWRfaW9iYXNlICE9IDB4ZmZmZmZm
ZmYpKSB7DQogICAgICAgIHByaW50Zigib2x0ciVkOiBwb3J0IGFkZHJlc3Mg
aW1wb3NzaWJsZSAoMHglWClcbiIsIGlzLT5pZF91bml0LCBpcy0+aWRfaW9i
YXNlKTsNCiAgICAgICAgcmV0dXJuKDApOw0KICAgIH0NCg0KICAgIC8qIEF1
dG8gYXNzaWduIGxvd2VzdCBhdmFpbGFibGUgY2FyZCBub3QgYWxyZWFkeSBp
biB1c2UgKi8NCiAgICBpZiAoaXMtPmlkX2lvYmFzZSA9PSAweGZmZmZmZmZm
KSB7DQogICAgICAgIHByaW50Zigib2x0ciVkOiBhdXRvIGFzc2lnbmluZyBj
YXJkLlxuIiwgaXMtPmlkX3VuaXQpOw0KICAgICAgICBmb3IgKGkgPSAwOyBh
c3NpZ25lZFtpXTsgaSsrKTsNCiAgICAgICAgYXNzaWduZWRbaV0gPSAxOw0K
ICAgICAgICBzYy0+Y29uZmlnID0gJm9sdHJfY29uZmlnW2ldOw0KICAgICAg
ICBpcy0+aWRfaW9iYXNlID0gc2MtPmNvbmZpZy0+aW9iYXNlMDsgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBDbGFpbSBvdXIgcG9ydCBzcGFjZSAqLw0K
ICAgICAgICBpZiAoIWlzLT5pZF9pcnEpIA0KICAgICAgICAgICAgaXMtPmlk
X2lycSA9ICgxIDw8IHNjLT5jb25maWctPmludGVycnVwdGxldmVsKTsgICAg
ICAgICAvKiBDbGFpbSBvdXIgaW50ZXJydXB0ICovDQogICAgICAgIGlzLT5p
ZF9pbnRyID0gKGludGhhbmQyX3QgKilvbHRyX2ludHI7DQogICAgICAgIHJl
Z2lzdGVyX2ludHIoZmZzKGlzLT5pZF9pcnEpIC0gMSwgaXMtPmlkX2lkLCBp
cy0+aWRfcmlfZmxhZ3MsIGlzLT5pZF9pbnRyLCAmbmV0X2ltYXNrLCBpcy0+
aWRfdW5pdCk7DQogICAgICAgIGlmICgoaXMtPmlkX2RycSA9PSAweGZmZmZm
ZmZmKSAmJiAoc2MtPmNvbmZpZy0+ZG1hbGV2ZWwgIT0gVFJMTERfRE1BX1BJ
TykpDQogICAgICAgICAgICBpcy0+aWRfZHJxID0gc2MtPmNvbmZpZy0+ZG1h
bGV2ZWw7ICAgICAgICAgICAgICAgICAgICAgIC8qIENsYWltIG91ciBkbWEg
Y2hhbm5lbCAqLw0KICAgICAgICBwcmludGYoIm9sdHIlZDogPCVzPiBbJTZE
XVxuIiwgaXMtPmlkX3VuaXQsIEFkYXB0ZXJOYW1lW3NjLT5jb25maWctPnR5
cGVdLCBzYy0+Y29uZmlnLT5tYWNhZGRyZXNzLCAiOiIpOw0KICAgICAgICBz
Yy0+aHdfc3RhdGUgPSBIV19GT1VORDsNCiAgICAgICAgcmV0dXJuKDEpOw0K
ICAgIH0gZWxzZSB7DQogICAgLyogQXNzaWduIGJhc2VkIG9uIGlvYmFzZSBh
ZGRyZXNzIHByb3ZpZGVkIGluIGtlcm5lbCBjb25maWcgKi8NCiAgICAgICAg
Zm9yIChpID0gMDsgaSA8IE5PTFRSOyBpKyspIHsNCiAgICAgICAgICAgIGlm
IChpcy0+aWRfaW9iYXNlID09IG9sdHJfY29uZmlnW2ldLmlvYmFzZTApIHsN
CiAgICAgICAgICAgICAgICBpZiAoYXNzaWduZWRbaV0pIHsNCiAgICAgICAg
ICAgICAgICAgICAgcHJpbnRmKCJvbHRyJWQ6IGFkYXB0ZXIgKDB4JVgpIGFs
cmVhZHkgYXNzaWduZWQuXG4iLCBpcy0+aWRfdW5pdCwgaXMtPmlkX2lvYmFz
ZSk7DQogICAgICAgICAgICAgICAgICAgIHJldHVybigwKTsNCiAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgYXNzaWduZWRbaV0gPSAxOw0K
ICAgICAgICAgICAgICAgIHNjLT5jb25maWcgPSAmb2x0cl9jb25maWdbaV07
DQogICAgICAgICAgICAgICAgaWYgKGlzLT5pZF9pcnEgPT0gMCkNCiAgICAg
ICAgICAgICAgICAgICAgaXMtPmlkX2lycSA9ICgxIDw8IHNjLT5jb25maWct
PmludGVycnVwdGxldmVsKTsgICAgICAgICAvKiBDbGFpbSBvdXIgaW50ZXJy
dXB0ICovDQogICAgICAgICAgICAgICAgaXMtPmlkX2ludHIgPSAoaW50aGFu
ZDJfdCAqKW9sdHJfaW50cjsNCiAgICAgICAgICAgICAgICByZWdpc3Rlcl9p
bnRyKGZmcyhpcy0+aWRfaXJxKSAtIDEsIGlzLT5pZF9pZCwgaXMtPmlkX3Jp
X2ZsYWdzLCBpcy0+aWRfaW50ciwgJm5ldF9pbWFzaywgaXMtPmlkX3VuaXQp
Ow0KICAgICAgICAgICAgICAgIGlmICgoaXMtPmlkX2RycSA9PSAweGZmZmZm
ZmZmKSAmJiAoc2MtPmNvbmZpZy0+ZG1hbGV2ZWwgIT0gVFJMTERfRE1BX1BJ
TykpDQogICAgICAgICAgICAgICAgICAgIGlzLT5pZF9kcnEgPSBzYy0+Y29u
ZmlnLT5kbWFsZXZlbDsgICAgICAgICAgICAgICAgICAgICAgLyogQ2xhaW0g
b3VyIGRtYSBjaGFubmVsICovDQogICAgICAgICAgICAgICAgcHJpbnRmKCJv
bHRyJWQ6IDwlcz4gWyU2RF1cbiIsIGlzLT5pZF91bml0LCBBZGFwdGVyTmFt
ZVtzYy0+Y29uZmlnLT50eXBlXSwgc2MtPmNvbmZpZy0+bWFjYWRkcmVzcywg
IjoiKTsNCiAgICAgICAgICAgICAgICBzYy0+aHdfc3RhdGUgPSBIV19GT1VO
RDsNCiAgICAgICAgICAgICAgICByZXR1cm4oMSk7DQogICAgICAgICAgICB9
DQogICAgICAgIH0NCiAgICB9DQogICAgcmV0dXJuKDApOyAvKiBDYXJkIHdh
cyBub3QgZm91bmQgKi8NCn0NCg0KI2lmIE5QQ0kgPiAwDQpzdGF0aWMgY29u
c3QgY2hhciAqDQpvbHRyX3BjaV9wcm9iZShjb25maWdfaWQsIGRldmljZV9p
ZCkNCiAgICBwY2ljaV90IGNvbmZpZ19pZDsNCiAgICBwY2lkaV90IGRldmlj
ZV9pZDsNCnsNCiAgICB1X2NoYXIgUENJQ29uZmlndXJhdGlvblNwYWNlWzY0
XTsNCiAgICB1X2xvbmcgY29tbWFuZDsNCiAgICBpbnQgaSwgaiwgcmM7DQoN
CiAgICBqID0gTk9MVFIgKyBwY2lfY2FyZHM7DQoNCiAgICBpZiAocGNpX2Nh
cmRzID09IEVYVFJBX09MVFIpDQogICAgICAgIHJldHVybihOVUxMKTsNCg0K
ICAgIGlmICgoKGRldmljZV9pZCAmIDB4ZmZmZikgPT0gUENJX1ZFTkRPUl9P
TElDT00pICYmIA0KICAgICAgICAgICgoKChkZXZpY2VfaWQgPj4gMTYpICYg
MHhmZmZmKSA9PSAweDAwMDEpIHx8IA0KICAgICAgICAgICAoKChkZXZpY2Vf
aWQgPj4gMTYpICYgMHhmZmZmKSA9PSAweDAwMDQpIHx8IA0KICAgICAgICAg
ICAoKChkZXZpY2VfaWQgPj4gMTYpICYgMHhmZmZmKSA9PSAweDAwMDUpIHx8
IA0KICAgICAgICAgICAoKChkZXZpY2VfaWQgPj4gMTYpICYgMHhmZmZmKSA9
PSAweDAwMDcpIHx8IA0KICAgICAgICAgICAoKChkZXZpY2VfaWQgPj4gMTYp
ICYgMHhmZmZmKSA9PSAweDAwMDgpKSkgew0KDQogICAgICAgIGZvciAoaSA9
IDA7IGkgPCA2NDsgaSsrKQ0KICAgICAgICAgICAgUENJQ29uZmlndXJhdGlv
blNwYWNlW2ldID0gcGNpX2NmZ3JlYWQoY29uZmlnX2lkLCBpLCAvKmJ5dGVz
Ki8xKTsNCg0KICAgICAgICByYyA9IFRSbGxkUENJQ29uZmlnKCZvbHRyTGxk
RHJpdmVyLCAmb2x0cl9jb25maWdbal0sIFBDSUNvbmZpZ3VyYXRpb25TcGFj
ZSk7DQoNCiAgICAgICAgaWYgKChyYyA9PSBUUkxMRF9QQ0lDT05GSUdfT0sp
IHx8IChyYyA9PSBUUkxMRF9QQ0lDT05GSUdfU0VUX0NPTU1BTkQpKSB7DQog
ICAgICAgICAgICBpZiAocmMgPT0gVFJMTERfUENJQ09ORklHX1NFVF9DT01N
QU5EKSB7DQogICAgICAgICAgICAgICAgcHJpbnRmKCJvbHRyOiBzZXR0aW5n
IGJ1cy1tYXN0ZXIgbW9kZVxuIik7DQogICAgICAgICAgICAgICAgY29tbWFu
ZCA9IHBjaV9jb25mX3JlYWQoY29uZmlnX2lkLCBQQ0lSX0NPTU1BTkQpOw0K
ICAgICAgICAgICAgICAgIHBjaV9jb25mX3dyaXRlKGNvbmZpZ19pZCwgUENJ
Ul9DT01NQU5ELCAoY29tbWFuZCB8IFBDSU1fQ01EX0JVU01BU1RFUkVOKSk7
DQogICAgICAgICAgICB9DQogICAgICAgICAgICBwY2lfY2FyZHMrKzsNCiAg
ICAgICAgICAgIHJldHVybiAoQWRhcHRlck5hbWVbb2x0cl9jb25maWdbal0u
dHlwZV0pOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgaWYgKHJj
ID09IFRSTExEX1BDSUNPTkZJR19GQUlMKQ0KICAgICAgICAgICAgICAgIHBy
aW50Zigib2x0cjogVFJsbGRQQ0lDb25maWcgZmFpbGVkIVxuIik7DQogICAg
ICAgICAgICBpZiAocmMgPT0gVFJMTERfUENJQ09ORklHX1ZFUlNJT04pDQog
ICAgICAgICAgICAgICAgcHJpbnRmKCJvbHRyOiB3cm9uZyBMTEQgdmVyc2lv
blxuIik7DQogICAgICAgIH0NCiAgICB9DQogICAgcmV0dXJuKE5VTEwpOw0K
fQ0KI2VuZGlmIC8qIE5QQ0kgKi8NCg0Kc3RhdGljIGludA0Kb2x0cl9hdHRh
Y2goaXMpDQogICAgc3RydWN0IGlzYV9kZXZpY2UgKmlzOw0Kew0KICAgIHN0
cnVjdCBvbHRyX3NvZnRjICpzYyA9ICZvbHRyX3NvZnRjW2lzLT5pZF91bml0
XTsNCiAgICBpbnQgcmM7DQoNCiAgICBzYy0+dW5pdCA9IGlzLT5pZF91bml0
Ow0KDQogICAgaWYgKCFvbHRyX2F0dGFjaF9jb21tb24oc2MpKQ0KICAgICAg
ICByZXR1cm4oMCk7DQoNCiAgICAvKiBJZiB0aGUga2VybmVsIGNvbmZpZyBk
b2VzIG5vdCBtYXRjaCB0aGUgY3VycmVudCBjYXJkIGNvbmZpZ3VyYXRpb24g
dGhlbg0KICAgICAqIGFkanVzdCB0aGUgY2FyZCBzZXR0aW5ncyB0byBtYXRj
aCB0aGUga2VybmVsLg0KICAgICAqLw0KICAgIGlmICgoZmZzKGlzLT5pZF9p
cnEpIC0gMSkgIT0gc2MtPmNvbmZpZy0+aW50ZXJydXB0bGV2ZWwpIHsNCiAg
ICAgICAgcmMgPSBUUmxsZFNldEludGVycnVwdChzYy0+VFJsbGRBZGFwdGVy
LCBpcy0+aWRfaXJxKTsgDQogICAgICAgIGlmIChyYyAhPSBUUkxMRF9DT05G
SUdfT0spIHsgIA0KICAgICAgICAgICAgcHJpbnRmKCJvbHRyJWQ6IFVuYWJs
ZSB0byBjaGFuZ2UgYWRhcHRlciBpbnRlcnJ1cHQgbGV2ZWwgKCV4KVxuIiwg
c2MtPnVuaXQsIHJjKTsNCiAgICAgICAgICAgIHJldHVybigwKTsNCiAgICAg
ICAgfQ0KICAgIH0gICANCiAgICAgICAgDQogICAgLyogU2V0IGRtYSBsZXZl
bCwgZmFsbCBiYWNrIHRvIHBpbyBpZiBwb3NzaWJsZS4gKGZvbGxvd2luZyBT
Q08gZHJpdmVyIGV4YW1wbGUpICovDQogICAgaWYgKGlzLT5pZF9kcnEgIT0g
c2MtPmNvbmZpZy0+ZG1hbGV2ZWwpIHsNCiAgICAgICAgcmMgPSBUUmxsZFNl
dERNQShzYy0+VFJsbGRBZGFwdGVyLCBpcy0+aWRfZHJxLCAmc2MtPmNvbmZp
Zy0+bW9kZSk7DQogICAgICAgIGlmIChyYyAhPSBUUkxMRF9DT05GSUdfT0sp
IHsNCiAgICAgICAgICAgIGlmICgoc2MtPmNvbmZpZy0+ZG1hbGV2ZWwgIT0g
VFJMTERfRE1BX1BJTykgJiYNCiAgICAgICAgICAgICAgICAoVFJsbGRTZXRE
TUEoc2MtPlRSbGxkQWRhcHRlciwgVFJMTERfRE1BX1BJTywgJnNjLT5jb25m
aWctPm1vZGUpICE9IFRSTExEX0NPTkZJR19PSykpIHsNCiAgICAgICAgICAg
ICAgICBwcmludGYoIm9sdHIlZDogdW5hYmxlIHRvIGNoYW5nZSBkbWEgbGV2
ZWwgZnJvbSAlZCB0byAlZCAoJXgpXG4iLCBzYy0+dW5pdCwNCiAgICAgICAg
ICAgICAgICAgICAgICAgIHNjLT5jb25maWctPmRtYWxldmVsLCBpcy0+aWRf
ZHJxLCByYyk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBwcmludGYo
Im9sdHIlZDogVW5hYmxlIHRvIGNoYW5nZSBhZGFwdGVyIGRtYSBsZXZlbCwg
dXNpbmcgUElPIG1vZGUgKCV4KVxuIiwgc2MtPnVuaXQsIHJjKTsNCiAgICAg
ICAgICAgIHNjLT5jb25maWctPmRtYWxldmVsID0gVFJMTERfRE1BX1BJTzsN
CiAgICAgICAgICAgIHJjID0gVFJsbGRTZXRETUEoc2MtPlRSbGxkQWRhcHRl
ciwgaXMtPmlkX2RycSwgJnNjLT5jb25maWctPm1vZGUpOw0KICAgICAgICB9
DQogICAgICAgIGlzLT5pZF9pcnEgPSBzYy0+Y29uZmlnLT5kbWFsZXZlbDsN
CiAgICB9DQogICAgcmV0dXJuKDEpOw0KfQ0KDQojaWYgTlBDSSA+IDANCnN0
YXRpYyB2b2lkDQpvbHRyX3BjaV9hdHRhY2goY29uZmlnX2lkLCB1bml0KQ0K
ICAgIHBjaWNpX3QgY29uZmlnX2lkOw0KICAgIGludCB1bml0Ow0Kew0KICAg
IHN0cnVjdCBvbHRyX3NvZnRjICpzYyA9ICZvbHRyX3NvZnRjW3VuaXRdOw0K
DQogICAgc2MtPnVuaXQgPSB1bml0Ow0KICAgIHNjLT5jb25maWcgPSAmb2x0
cl9jb25maWdbdW5pdF07DQogICAgc2MtPmh3X3N0YXRlID0gSFdfRk9VTkQ7
DQoNCiAgICBwcmludGYoIm9sdHIlZDogbWFjIGFkZHJlc3MgWyU2RF1cbiIs
IHNjLT51bml0LCBzYy0+Y29uZmlnLT5tYWNhZGRyZXNzLCAiOiIpOw0KDQog
ICAgaWYgKCFvbHRyX2F0dGFjaF9jb21tb24oc2MpKQ0KICAgICAgICByZXR1
cm47DQoNCiAgICAvKiBNYXAgb3VyIGludGVycnVwdCAqLw0KICAgIGlmICgh
cGNpX21hcF9pbnQoY29uZmlnX2lkLCBvbHRyX3BjaV9pbnRyLCBzYywgJm5l
dF9pbWFzaykpIHsNCiAgICAgICAgcHJpbnRmKCJvbHRyJWQ6IGNvdWxkbid0
IG1hcCBpbnRlcnJ1cHRcbiIsIHVuaXQpOw0KICAgICAgICByZXR1cm47DQog
ICAgfQ0KfQ0KI2VuZGlmIC8qIE5QQ0kgKi8NCg0Kc3RhdGljIGludA0Kb2x0
cl9hdHRhY2hfY29tbW9uKHNjKQ0KICAgIHN0cnVjdCBvbHRyX3NvZnRjICpz
YzsNCnsNCiAgICBzdHJ1Y3QgaWZuZXQgKmlmcCA9ICZzYy0+YXJwY29tLmFj
X2lmOw0KICAgIHVfaW50ICBidWZzaXplOw0KICAgIGludCAgICByYywgaSwg
ajsNCiAgDQogICAgLypwcmludGYoIm9sdHIlZDogYXR0YWNoX2NvbW1vbiBj
YWxsZWRcbiIsIHNjLT51bml0KTsqLw0KDQogICAgLyogQWxsb2NhdGUgYWRh
cHRlciBtZW1vcnkgYnVmZmVyICovDQogICAgYnVmc2l6ZSA9IFRSbGxkQWRh
cHRlclNpemUoKTsNCiAgICBzYy0+VFJsbGRBZGFwdGVyID0gKFRSbGxkQWRh
cHRlcl90ICopb2x0cl9tYWxsb2MoYnVmc2l6ZSwgc2MtPmNvbmZpZyk7DQog
ICAgaWYgKHNjLT5UUmxsZEFkYXB0ZXIgPT0gTlVMTCkgew0KICAgICAgICBw
cmludGYoIm9sdHIlZDogVW5hYmxlIHRvIGFsbG9jYXRlIGFkYXB0ZXIgbWVt
b3J5IGJsb2NrICglZCBieXRlcylcbiIsIHNjLT51bml0LCBidWZzaXplKTsN
CiAgICB9IA0KICAgIC8qcHJpbnRmKCJvbHRyJWQ6IEFkYXB0ZXIgbWVtb3J5
IGJsb2NrICglcCAlZCBieXRlcylcbiIsIHNjLT51bml0LCBzYy0+VFJsbGRB
ZGFwdGVyLCBidWZzaXplKTsqLw0KDQogICAgLyogU2V0dXAgdHJhbnNtaXQg
cG9vbCAqLw0KICAgIGZvciAoaSA9IDA7IGkgPCBUWF9MSVNUX1NJWkU7IGkr
Kykgew0KICAgICAgICBzYy0+dHhfYnVmZmVyW2ldLmluZGV4ID0gaTsNCiAg
ICAgICAgc2MtPnR4X2J1ZmZlcltpXS5idWYgPSAoY2hhciAqKW9sdHJfbWFs
bG9jKFRYX0JVRkZFUl9MRU4sIHNjLT5jb25maWcpOw0KICAgICAgICAvKiBJ
ZiB3ZSBoYXZlIGEgZmFpbHVyZSB0aGVuIGZyZWUgZXZlcnl0aGluZyBhbmQg
Z2V0IG91dCAqLw0KICAgICAgICBpZiAoIXNjLT50eF9idWZmZXJbaV0uYnVm
KSB7DQogICAgICAgICAgICBwcmludGYoIm9sdHIlZDogVW5hYmxlIHRvIGFs
bG9jYXRlIHRyYW5zbWl0IGJ1ZmZlcnMuXG4iLCBzYy0+dW5pdCk7DQogICAg
ICAgICAgICBmb3IgKGogPSAwOyBqIDwgaTsgaisrKQ0KICAgICAgICAgICAg
ICAgIGZyZWUoc2MtPnR4X2J1ZmZlcltqXS5idWYsIE1fREVWQlVGKTsNCiAg
ICAgICAgICAgIHJldHVybigwKTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBz
Yy0+dHhfbmV4dCA9IDA7DQogICAgc2MtPnR4X2F2YWlsID0gVFhfTElTVF9T
SVpFOw0KDQogICAgLyogU2V0dXAgcmVjZWl2ZSBwb29sICovDQogICAgZm9y
IChpID0gMDsgaSA8IFJYX0xJU1RfU0laRTsgaSsrKSB7DQogICAgICAgIHNj
LT5yeF9idWZmZXJbaV0uaW5kZXggPSBpOw0KICAgICAgICBzYy0+cnhfYnVm
ZmVyW2ldLmJ1ZiA9IChjaGFyICopb2x0cl9tYWxsb2MoUlhfQlVGRkVSX0xF
Tiwgc2MtPmNvbmZpZyk7DQogICAgICAgIC8qIElmIHdlIGhhdmUgYSBmYWls
dXJlIHRoZW4gZnJlZSBldmVyeXRoaW5nIGFuZCBnZXQgb3V0ICovDQogICAg
ICAgIGlmICghc2MtPnJ4X2J1ZmZlcltpXS5idWYpIHsgICAgICAgICAgDQog
ICAgICAgICAgICBwcmludGYoIm9sdHIlZDogVW5hYmxlIHRvIGFsbG9jYXRl
IHJlY2VpdmUgYnVmZmVycy5cbiIsIHNjLT51bml0KTsNCiAgICAgICAgICAg
IGZvciAoaiA9IDA7IGogPCBpOyBqKyspDQogICAgICAgICAgICAgICAgZnJl
ZShzYy0+cnhfYnVmZmVyW2pdLmJ1ZiwgTV9ERVZCVUYpOw0KICAgICAgICAg
ICAgcmV0dXJuKDApOw0KICAgICAgICB9DQogICAgfSAgIA0KICAgIHNjLT5y
eF9uZXh0ID0gMDsNCiAgICBzYy0+cnhfYXZhaWwgPSBSWF9MSVNUX1NJWkU7
IA0KICAgIC8qcHJpbnRmKCJvbHRyJWQ6IEFsbG9jYXRlZCByZWNlaXZlIGJ1
ZmZlcnNcbiIsIHNjLT51bml0KTsgKi8NCiAgICANCiAgICAvKiBTZXQgdXAg
YWRhcHRlciBwb2xsaW5nIG1lY2hhbmlzbSAqLw0KICAgIHNjLT5wb2xsX2Fk
YXB0ZXIgPSAxOw0KICAgIGNhbGxvdXRfaGFuZGxlX2luaXQoJnNjLT5wb2xs
X2NoKTsNCiAgICBzYy0+cG9sbF9jaCA9IHRpbWVvdXQoYWRhcHRlcl9wb2xs
LCAodm9pZCAqKXNjLT51bml0LCAoMSpoeikvMTAwMCk7DQogICAgY2FsbG91
dF9oYW5kbGVfaW5pdCgmc2MtPm9sdHJfY2gpOw0KDQogICAgLyogSW5pdGlh
bGl6ZSBhZGFwdGVyICovDQogICAgcmMgPSBUUmxsZEFkYXB0ZXJJbml0KCZv
bHRyTGxkRHJpdmVyLCBzYy0+VFJsbGRBZGFwdGVyLCBrdnRvcChzYy0+VFJs
bGRBZGFwdGVyKSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lk
ICopc2MtPnVuaXQsIHNjLT5jb25maWcpOw0KICAgIGlmIChyYyAhPSBUUkxM
RF9JTklUX09LKSB7DQogICAgICAgIHN3aXRjaCAocmMpIHsNCiAgICAgICAg
ICAgIGNhc2UgVFJMTERfSU5JVF9OT1RfRk9VTkQ6DQogICAgICAgICAgICAg
ICAgcHJpbnRmKCJvbHRyJWQ6IEFkYXB0ZXIgbm90IGZvdW5kIG9yIG1hbGZ1
bmN0aW9uaW5nLlxuIiwgc2MtPnVuaXQpOw0KICAgICAgICAgICAgICAgIHNj
LT5od19zdGF0ZSA9IEhXX0JBRDsNCiAgICAgICAgICAgICAgICByZXR1cm4o
MCk7DQogICAgICAgICAgICBjYXNlIFRSTExEX0lOSVRfVU5TVVBQT1JURUQ6
DQogICAgICAgICAgICAgICAgcHJpbnRmKCJvbHRyJWQ6IEFkYXB0ZXIgbm90
IHN1cHBvcnRlZCBieSBsb3cgbGV2ZWwgZHJpdmVyLlxuIiwgc2MtPnVuaXQp
Ow0KICAgICAgICAgICAgICAgIHNjLT5od19zdGF0ZSA9IEhXX1VOS05PV047
DQogICAgICAgICAgICAgICAgcmV0dXJuKDApOw0KICAgICAgICAgICAgY2Fz
ZSBUUkxMRF9JTklUX1BIWVMxNjoNCiAgICAgICAgICAgICAgICBwcmludGYo
Im9sdHIlZDogQWRhcHRlciBtZW1vcnkgYmxvY2sgYWJvdmUgMTZNLCBtdXN0
IGJlIGJlbG93IDE2TS5cbiIsIHNjLT51bml0KTsNCiAgICAgICAgICAgICAg
ICByZXR1cm4oMCk7DQogICAgICAgICAgICBjYXNlIFRSTExEX0lOSVRfVkVS
U0lPTjoNCiAgICAgICAgICAgICAgICBwcmludGYoIm9sdHIlZDogTG93IGxl
dmVsIGRyaXZlciB2ZXJzaW9uIG1pc21hdGNoLlxuIiwgc2MtPnVuaXQpOw0K
ICAgICAgICAgICAgICAgIHJldHVybigwKTsNCiAgICAgICAgICAgIGRlZmF1
bHQ6DQogICAgICAgICAgICAgICAgcHJpbnRmKCJvbHRyJWQ6IFVua25vd24g
aW5pdGlsaXphdGlvbiBlcnJvciBvY2NvdXJlZCAoJXgpLlxuIiwgc2MtPnVu
aXQsIHJjKTsNCiAgICAgICAgICAgICAgICByZXR1cm4oMCk7DQogICAgICAg
IH0NCiAgICB9DQoNCiAgICAvKiBEb3dubG9hZCBBZGFwdGVyIE1pY3JvY29k
ZSAqLw0KICAgIC8qcHJpbnRmKCJvbHRyJWQ6IERvd25sb2FkaW5nIGFkYXB0
ZXIgbWljcm9jb2RlLi4uIiwgc2MtPnVuaXQpOyovDQogICAgc2MtPmh3X3N0
YXRlID0gSFdfTE9BRElORzsNCiAgICBzd2l0Y2goc2MtPmNvbmZpZy0+bWFj
dHlwZSkgew0KICAgICAgICBjYXNlIFRSTExEX01BQ19UTVM6ICAgICAgICAg
ICAvKiBUTVMgbWljcm9jb2RlICovDQogICAgICAgICAgICByYyA9IFRSbGxk
RG93bmxvYWQoc2MtPlRSbGxkQWRhcHRlciwgVFJsbGRNYWNDb2RlKTsNCiAg
ICAgICAgICAgIGJyZWFrOw0KICAgICAgICBjYXNlIFRSTExEX01BQ19IQVdL
RVlFOiAgICAgICAgLyogSGF3a2V5ZSBtaWNyb2NvZGUgKi8NCiAgICAgICAg
ICAgIHJjID0gVFJsbGREb3dubG9hZChzYy0+VFJsbGRBZGFwdGVyLCBUUmxs
ZEhhd2tleWVNYWMpOw0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIGNh
c2UgVFJMTERfTUFDX0JVTExTRVlFOiAgICAgIC8qIEJ1bGxzZXllIG1pY3Jv
Y29kZSAqLw0KICAgICAgICAgICAgcmMgPSBUUmxsZERvd25sb2FkKHNjLT5U
UmxsZEFkYXB0ZXIsIFRSbGxkQnVsbHNleWVNYWMpOw0KICAgICAgICAgICAg
YnJlYWs7DQogICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgICBwcmludGYo
Im9sdHIlZDogdW5rbm93biBtYWN0eXBlICVkXG4iLCBzYy0+dW5pdCwgc2Mt
PmNvbmZpZy0+bWFjdHlwZSk7DQogICAgICAgICAgICByZXR1cm4oMCk7DQog
ICAgfQ0KICAgIC8qaWYgKHJjID09IFRSTExEX0RPV05MT0FEX09LKSANCiAg
ICAgICAgcHJpbnRmKCJkb25lXG4iKTsqLw0KICAgIGlmICgocmMgPT0gVFJM
TERfRE9XTkxPQURfRVJST1IpIHx8IChyYyA9PSBUUkxMRF9TVEFURSkpIHsN
CiAgICAgICAgcHJpbnRmKCJvbHRyJWQ6IEFkYXB0ZXIgbWljcm9jb2RlIGRv
d25sb2FkIGZhaWxlZCEgKHJjID0gJXgpXG4iLCBzYy0+dW5pdCwgcmMpOw0K
ICAgICAgICBzYy0+aHdfc3RhdGUgPSBIV19CQUQ7DQogICAgICAgIHJldHVy
bigwKTsgICAgIA0KICAgIH0NCg0KICAgIFRSbGxkU2V0U3BlZWQoc2MtPlRS
bGxkQWRhcHRlciwgVFJMTERfU1BFRURfQVVUTyk7DQoNCiAgICBzYy0+UHJv
bWlzY01vZGUgPSAwOw0KICAgIHNjLT5BZGFwdGVyTW9kZSA9IDA7DQoNCiAg
ICAvKiBEbyB0aGUgaWZuZXQgaW5pdGlhbGl6YXRpb24gKi8NCiAgICBpZnAt
PmlmX3NvZnRjICAgPSBzYzsNCiAgICBpZnAtPmlmX3VuaXQgICAgPSBzYy0+
dW5pdDsNCiAgICBpZnAtPmlmX25hbWUgICAgPSAib2x0ciI7DQogICAgaWZw
LT5pZl9vdXRwdXQgID0gaXNvODgwMjVfb3V0cHV0Ow0KICAgIGlmcC0+aWZf
aW5pdCAgICA9IChpZl9pbml0X2ZfdCAqKW9sdHJfaW5pdDsNCiAgICBpZnAt
PmlmX3N0YXJ0ICAgPSBvbHRyX3N0YXJ0Ow0KICAgIGlmcC0+aWZfaW9jdGwg
ICA9IG9sdHJfaW9jdGw7DQogICAgaWZwLT5pZl9mbGFncyAgID0gSUZGX0JS
T0FEQ0FTVCB8IElGRl9NVUxUSUNBU1QgfCBJRkZfU0lNUExFWDsNCiAgICBi
Y29weShzYy0+Y29uZmlnLT5tYWNhZGRyZXNzLCBzYy0+YXJwY29tLmFjX2Vu
YWRkciwgc2l6ZW9mKHNjLT5jb25maWctPm1hY2FkZHJlc3MpKTsNCg0KICAg
IC8qIFNldCB1cCBjb21tb24gaWZtZWRpYSBvcHRpb25zICovDQogICAgaWZt
ZWRpYV9pbml0KCZzYy0+aWZtZWRpYSwgMCwgb2x0cl9pZm1lZGlhX3VwZCwg
b2x0cl9pZm1lZGlhX3N0cyk7DQoNCiAgICBpZm1lZGlhX2FkZCgmc2MtPmlm
bWVkaWEsIElGTV9UT0tFTiB8IElGTV9BVVRPLCAwICwgTlVMTCk7DQogICAg
aWZtZWRpYV9hZGQoJnNjLT5pZm1lZGlhLCBJRk1fVE9LRU4gfCBJRk1fVE9L
X1VUUDQsIDAgLCBOVUxMKTsNCiAgICBpZm1lZGlhX2FkZCgmc2MtPmlmbWVk
aWEsIElGTV9UT0tFTiB8IElGTV9UT0tfVVRQMTYsIDAgLCBOVUxMKTsNCiAg
ICANCiAgICBpZm1lZGlhX3NldCgmc2MtPmlmbWVkaWEsIElGTV9UT0tFTiB8
IElGTV9BVVRPKTsNCg0KICAgIGlmX2F0dGFjaChpZnApOw0KICAgIGlzbzg4
MDI1X2lmYXR0YWNoKGlmcCk7DQoNCiNpZiBOQlBGSUxURVIgPiAwDQogICAg
YnBmYXR0YWNoKGlmcCwgRExUX0lFRUU4MDIsIHNpemVvZihzdHJ1Y3QgaXNv
ODgwMjVfaGVhZGVyKSk7DQojZW5kaWYNCg0KICAgIHJldHVybigxKTsNCn0N
Cg0KI2lmIE5QQ0kgPiAwDQpzdGF0aWMgdm9pZA0Kb2x0cl9wY2lfc2h1dGRv
d24oaG93dG8sIHNjKQ0KICAgIGludCBob3d0bzsNCiAgICB2b2lkICpzYzsN
CnsNCiAgICBwcmludGYoIm9sdHI6IG9sdHJfcGNpX3NodXRkb3duIGNhbGxl
ZFxuIik7DQp9DQojZW5kaWYgLyogTlBDSSAqLw0KDQpzdGF0aWMgaW50DQpv
bHRyX2lmbWVkaWFfdXBkKGlmcCkNCiAgICBzdHJ1Y3QgaWZuZXQgKmlmcDsN
CnsNCiAgICBzdHJ1Y3Qgb2x0cl9zb2Z0YyAqc2MgPSBpZnAtPmlmX3NvZnRj
Ow0KICAgIHN0cnVjdCBpZm1lZGlhICppZm0gICA9ICZzYy0+aWZtZWRpYTsN
Cg0KICAgIGlmIChJRk1fVFlQRShpZm0tPmlmbV9tZWRpYSkgIT0gSUZNX1RP
S0VOKQ0KICAgICAgICByZXR1cm4oRUlOVkFMKTsNCiAgICANCiAgICBzd2l0
Y2goSUZNX1NVQlRZUEUoaWZtLT5pZm1fbWVkaWEpKSB7DQogICAgICAgIGNh
c2UgSUZNX0FVVE86DQogICAgICAgICAgICBUUmxsZFNldFNwZWVkKHNjLT5U
UmxsZEFkYXB0ZXIsIFRSTExEX1NQRUVEX0FVVE8pOw0KICAgICAgICAgICAg
YnJlYWs7DQogICAgICAgIGNhc2UgSUZNX1RPS19VVFA0Og0KICAgICAgICAg
ICAgVFJsbGRTZXRTcGVlZChzYy0+VFJsbGRBZGFwdGVyLCBUUkxMRF9TUEVF
RF80TUJQUyk7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgY2FzZSBJ
Rk1fVE9LX1VUUDE2Og0KICAgICAgICAgICAgVFJsbGRTZXRTcGVlZChzYy0+
VFJsbGRBZGFwdGVyLCBUUkxMRF9TUEVFRF8xNk1CUFMpOw0KICAgICAgICBk
ZWZhdWx0Og0KICAgICAgICAgICAgcmV0dXJuKEVJTlZBTCk7DQogICAgfQ0K
DQogICAgaWYgKElGTV9UWVBFX09QVElPTlMoaWZtLT5pZm1fbWVkaWEpICYg
SUZNX1RPS19FVFIpDQogICAgICAgIHByaW50Zigib2x0ciVkOiBFVFIgbm90
IGltcGxlbWVudGVkXG4iLCBzYy0+dW5pdCk7DQogICAgaWYgKElGTV9UWVBF
X09QVElPTlMoaWZtLT5pZm1fbWVkaWEpICYgSUZNX1RPS19TUkNSVCkNCiAg
ICAgICAgcHJpbnRmKCJvbHRyJWQ6IHNvdXJjZS1yb3V0aW5nIG5vdCBpbXBs
ZW1lbnRlZFxuIiwgc2MtPnVuaXQpOw0KICAgIGlmIChJRk1fVFlQRV9PUFRJ
T05TKGlmbS0+aWZtX21lZGlhKSAmIElGTV9UT0tfQUxMUikNCiAgICAgICAg
cHJpbnRmKCJvbHRyJWQ6IGFsbCBzb3VyY2Ugcm91dGVzIG5vdCBpbXBsZW1l
bnRlZFxuIiwgc2MtPnVuaXQpOw0KICAgIGlmIChJRk1fVFlQRV9PUFRJT05T
KGlmbS0+aWZtX21lZGlhKSAmIElGTV9UT0tfRFRSKSB7DQogICAgICAgIHNj
LT5BZGFwdGVyTW9kZSB8PSBUUkxMRF9NT0RFX0ZPUkNFX1RYSTsNCiAgICAg
ICAgc2MtPkFkYXB0ZXJNb2RlICY9IH5UUkxMRF9NT0RFX0ZPUkNFX1RLUDsN
CiAgICB9DQogICAgaWYgKElGTV9UWVBFX09QVElPTlMoaWZtLT5pZm1fbWVk
aWEpICYgSUZNX1RPS19DTEFTU0lDKSB7DQogICAgICAgIHNjLT5BZGFwdGVy
TW9kZSB8PSBUUkxMRF9NT0RFX0ZPUkNFX1RLUDsNCiAgICAgICAgc2MtPkFk
YXB0ZXJNb2RlICY9IH5UUkxMRF9NT0RFX0ZPUkNFX1RYSTsNCiAgICB9DQog
ICAgaWYgKElGTV9UWVBFX09QVElPTlMoaWZtLT5pZm1fbWVkaWEpICYgSUZN
X1RPS19BVVRPKQ0KICAgICAgICBzYy0+QWRhcHRlck1vZGUgJj0gfihUUkxM
RF9NT0RFX0ZPUkNFX1RYSSB8IFRSTExEX01PREVfRk9SQ0VfVEtQKTsNCg0K
ICAgIGlmIChJRk1fVFlQRV9PUFRJT05TKGlmbS0+aWZtX21lZGlhKSAmIH5B
TExfT1BUSU9OUykNCiAgICAgICAgcmV0dXJuKEVJTlZBTCk7DQoNCiAgICBy
ZXR1cm4oMCk7DQp9DQoNCnN0YXRpYyB2b2lkDQpvbHRyX2lmbWVkaWFfc3Rz
KGlmcCwgaWZtcikNCiAgICBzdHJ1Y3QgaWZuZXQgKmlmcDsNCiAgICBzdHJ1
Y3QgaWZtZWRpYXJlcSAqaWZtcjsNCnsNCiAgICBzdHJ1Y3Qgb2x0cl9zb2Z0
YyAqc2MgPSBpZnAtPmlmX3NvZnRjOw0KICAgIHN0cnVjdCBpZm1lZGlhICpp
Zm0gPSAmc2MtPmlmbWVkaWE7DQoNCiAgICBpZm1yLT5pZm1fYWN0aXZlID0g
SUZNX1RZUEUoaWZtLT5pZm1fbWVkaWEpfElGTV9TVUJUWVBFKGlmbS0+aWZt
X21lZGlhKXxJRk1fVFlQRV9PUFRJT05TKGlmbS0+aWZtX21lZGlhKTsNCg0K
ICAgIHJldHVybjsNCn0NCg0Kdm9pZA0Kb2x0cl90aW1lb3V0KHRva2VuKQ0K
ICAgIHZvaWQgKnRva2VuOw0Kew0KICAgIHN0cnVjdCBvbHRyX3NvZnRjICpz
YyA9ICZvbHRyX3NvZnRjWyhpbnQpdG9rZW5dOw0KICAgIGludCB1bml0ID0g
KGludCl0b2tlbiwgczsNCg0KICAgIHMgPSBzcGxpbXAoKTsNCg0KICAgIHBy
aW50Zigib2x0ciVkOiBhZGFwdGVyIHRpbWVkIG91dCAoJXgpXG4iLCB1bml0
LCBzYy0+aHdfc3RhdGUpOw0KDQogICAgc3BseChzKTsNCn0NCg0KDQp2b2lk
DQphZGFwdGVyX3BvbGwodG9rZW4pDQogICAgdm9pZCAqdG9rZW47DQp7DQog
ICAgaW50IHVuaXQgPSAoaW50KXRva2VuLCBwb2xsX3RpbWVvdXQgPSAwLCBz
Ow0KICAgIHN0cnVjdCBvbHRyX3NvZnRjICpzYyA9ICZvbHRyX3NvZnRjW3Vu
aXRdOw0KI2lmIDANCiAgICBzdGF0aWMgaW50IHJ4X2J1ZmZlcnMgPSAwLCB0
eF9idWZmZXJzID0gMCwgcmM7IA0KI2VuZGlmDQogICAgDQogICAgcyA9IHNw
bGltcCgpOw0KDQogICAgLyogQ2hlY2sgdG8gbWFrZSBzdXJlIHdlIGFyZSBu
b3QgcG9sbGluZyBhIGRlYWQgY2FyZCAqLw0KICAgIGlmICgoc2MtPmh3X3N0
YXRlID09IEhXX0JBRCkgfHwgKHNjLT5od19zdGF0ZSA9PSBIV19VTktOT1dO
KSkgew0KICAgICAgICBzYy0+cG9sbF9hZGFwdGVyID0gLTE7DQogICAgICAg
IHNwbHgocyk7DQogICAgICAgIHJldHVybjsNCiAgICB9DQoNCiAgICAvKnBy
aW50Zigib2x0ciVkOiBhZGFwdGVyIHBvbGwuXG4iLCB1bml0KTsqLw0KICAg
IA0KICAgIC8qIElmIHRoZSBhZGFwdGVyIGlzIHRvIGJlIHBvbGxlZCBhZ2Fp
biwgdGhlbiBzZXQgdXANCiAgICAgKiBuZXh0IHRpbWVvdXQgcG9sbCANCiAg
ICAgKi8NCiAgICBpZiAoc2MtPnBvbGxfYWRhcHRlcikgew0KICAgICAgICBw
b2xsX3RpbWVvdXQgPSBUUmxsZFBvbGwoc2MtPlRSbGxkQWRhcHRlcik7DQog
ICAgICAgIHNjLT5wb2xsX2NoID0gdGltZW91dChhZGFwdGVyX3BvbGwsICh2
b2lkICopdW5pdCwgKHBvbGxfdGltZW91dCAqIGh6KS8xMDAwKTsNCiAgICB9
DQojaWYgMA0KICAgIHJjID0gVFJsbGRSZWNlaXZlRnJlZShzYy0+VFJsbGRB
ZGFwdGVyKTsNCiAgICBpZiAocnhfYnVmZmVycyAhPSByYykgew0KICAgICAg
ICBwcmludGYoIm9sdHIlZDogJWQgcmVjZWl2ZSBidWZmZXJzIGF2YWlsYWJs
ZVxuIiwgc2MtPnVuaXQsIHJjKTsNCiAgICAgICAgcnhfYnVmZmVycyA9IHJj
Ow0KICAgIH0gDQogICAgcmMgPSBUUmxsZFRyYW5zbWl0RnJlZShzYy0+VFJs
bGRBZGFwdGVyKTsNCiAgICBpZiAodHhfYnVmZmVycyAhPSByYykgew0KICAg
ICAgICBwcmludGYoIm9sdHIlZDogJWQgdHJhbnNtaXQgYnVmZmVycyBhdmFp
bGFibGVcbiIsIHNjLT51bml0LCByYyk7DQogICAgICAgIHR4X2J1ZmZlcnMg
PSByYzsNCiAgICB9IA0KI2VuZGlmDQoNCiAgICBzcGx4KHMpOyAgICAgICAg
ICAgIA0KfQ0KDQpzdGF0aWMgdm9pZCANCm9sdHJfaW5pdChzYykNCiAgICBz
dHJ1Y3Qgb2x0cl9zb2Z0YyAqc2M7DQp7DQogICAgc3RydWN0IGlmbmV0ICpp
ZnAgPSAmc2MtPmFycGNvbS5hY19pZjsNCiAgICBpbnQgaSwgcmM7DQoNCiAg
ICAvKnByaW50Zigib2x0ciVkOiBvbHRyX2luaXRcbiIsIHNjLT51bml0KTsq
Lw0KICAgIA0KICAgIC8qIA0KICAgICAqIEFkYXB0ZXIgc2hvdWxkIGJlIGZy
ZXNobHkgZG93bmxvYWRlZCBvciBwcmV2aW91c2x5IGNsb3NlZCBiZWZvcmUN
CiAgICAgKiBicmluZ2luZyBpdCBiYWNrIG9uIGxpbmUuDQogICAgICovDQog
ICAgaWYgKChzYy0+aHdfc3RhdGUgIT0gSFdfQ0xPU0VEKSAmJiAoc2MtPmh3
X3N0YXRlICE9IEhXX0xPQURJTkcpKSB7DQogICAgICAgIHByaW50Zigib2x0
ciVkOiBhZGFwdGVyIG5vdCByZWFkeSB0byBiZSBvcGVuZWQgKCVkKS5cbiIs
IHNjLT51bml0LCBzYy0+aHdfc3RhdGUpOw0KICAgICAgICByZXR1cm47DQog
ICAgfQ0KDQogICAgLyogQWxsb2NhdGUgYW5kIHNldCB1cCB0aGUgRE1BIGNo
YW5uZWwgKi8NCiAgICBpZiAoc2MtPmNvbmZpZy0+ZG1hbGV2ZWwgIT0gVFJM
TERfRE1BX1BJTykgew0KICAgICAgICByYyA9IGlzYV9kbWFfYWNxdWlyZShz
Yy0+Y29uZmlnLT5kbWFsZXZlbCk7DQogICAgICAgIGlzYV9kbWFjYXNjYWRl
KHNjLT5jb25maWctPmRtYWxldmVsKTsNCiAgICB9DQoNCiAgICAvKiBPcGVu
IHRoZSBhZGFwdGVyICovDQogICAgc2MtPmh3X3N0YXRlID0gSFdfT1BFTklO
RzsNCiAgICByYyA9IFRSbGxkT3BlbihzYy0+VFJsbGRBZGFwdGVyLCBzYy0+
YXJwY29tLmFjX2VuYWRkciwgc2MtPkdyb3VwQWRkcmVzcywgDQogICAgICAg
ICAgICAgICAgICAgc2MtPkZ1bmN0aW9uYWxBZGRyZXNzLCBpZnAtPmlmX210
dSwgc2MtPkFkYXB0ZXJNb2RlKTsNCiAgICBpZiAocmMgIT0gVFJMTERfT1BF
Tl9PSykgew0KICAgICAgICBwcmludGYoIm9sdHIlZDogQWRhcHRlciBmYWls
ZWQgdG8gb3BlbiAocmMgPSAleClcbiIsIHNjLT51bml0LCByYyk7DQogICAg
ICAgIHNjLT5od19zdGF0ZSA9IEhXX0ZBSUxFRDsNCiAgICB9IGVsc2Ugew0K
ICAgICAgICAvKnByaW50Zigib2x0ciVkOiBhZGFwdGVyIG9wZW5pbmcuLi5c
biIsIHNjLT51bml0KTsqLw0KICAgICAgICAvKmlmcC0+aWZfZmxhZ3MgfD0g
KElGRl9VUCB8IElGRl9SVU5OSU5HKTsqLw0KICAgICAgICBpZnAtPmlmX2Zs
YWdzICY9IH5JRkZfT0FDVElWRTsNCiAgICB9DQogICAgc2MtPm9sdHJfY2gg
PSB0aW1lb3V0KG9sdHJfdGltZW91dCwgKHZvaWQgKilzYy0+dW5pdCwgMzAq
aHopOw0KICAgIHRzbGVlcCgodm9pZCAqKXNjLT51bml0LCAxLCAib2x0cm9w
IiwgMzAqaHopOw0KDQogICAgLyogR2l2ZSB0aGUgdHJhbnNtaXQgYnVmZmVy
cyB0byB0aGUgYWRhcHRlciAqLw0KICAgIGZvciAoaSA9IDA7IGkgPCBSWF9M
SVNUX1NJWkU7IGkrKykgeyANCiAgICAgICAgcmMgPSBUUmxsZFJlY2VpdmVG
cmFnbWVudChzYy0+VFJsbGRBZGFwdGVyLA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICh2b2lkICopc2MtPnJ4X2J1ZmZlcltzYy0+cnhf
bmV4dCAmIFJYX0xJU1RfTUFTS10uYnVmLA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGt2dG9wKHNjLT5yeF9idWZmZXJbc2MtPnJ4X25l
eHQgJiBSWF9MSVNUX01BU0tdLmJ1ZiksDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUlhfQlVGRkVSX0xFTiwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAodm9pZCAqKXNjLT5yeF9idWZmZXJbc2Mt
PnJ4X25leHQgJiBSWF9MSVNUX01BU0tdLmluZGV4KTsNCiAgICAgICAgaWYg
KHJjICE9IFRSTExEX1JFQ0VJVkVfT0spIHsNCiAgICAgICAgICAgIHByaW50
Zigib2x0ciVkOiBBZGFwdGVyIHJlZnVzZWQgZnJhZ21lbnQgJWQgKHJjID0g
JWQpLlxuIiwgc2MtPnVuaXQsIGksIHJjKTsNCiAgICAgICAgICAgIGJyZWFr
Ow0KICAgICAgICB9ICBlbHNlIHsNCiAgICAgICAgICAgIHNjLT5yeF9hdmFp
bC0tOw0KICAgICAgICB9DQogICAgICAgIHNjLT5yeF9uZXh0Kys7DQogICAg
fQ0KICAgIA0KICAgIHJldHVybjsNCn0NCiAgICANCnN0YXRpYyB2b2lkDQpv
bHRyX2ludHIodW5pdCkNCiAgICBpbnQgdW5pdDsNCnsNCiAgICBzdHJ1Y3Qg
b2x0cl9zb2Z0YyAqc2MgPSAmb2x0cl9zb2Z0Y1t1bml0XTsNCiAgICBpbnQg
cmM7DQoNCiAgICAvKnByaW50Zigib2x0ciVkOiBvbHRyX2ludHJcbiIsIHVu
aXQpOyovIC8qIFRvbyBub2lzeSAqLw0KICAgIHJjPSBUUmxsZEludGVycnVw
dFNlcnZpY2Uoc2MtPlRSbGxkQWRhcHRlcik7DQogICAgaWYgKHJjID09IFRS
TExEX05PX0lOVEVSUlVQVCkgDQogICAgICAgIHByaW50Zigib2x0ciVkOiBp
bnRlcnJ1cHQgbm90IHNlcnZpY2VkLlxuIiwgdW5pdCk7DQp9DQoNCiNpZiBO
UENJID4gMA0Kc3RhdGljIHZvaWQNCm9sdHJfcGNpX2ludHIocHNjKQ0KICAg
IHZvaWQgKnBzYzsNCnsNCiAgICBzdHJ1Y3Qgb2x0cl9zb2Z0YyAqc2MgPSAo
c3RydWN0IG9sdHJfc29mdGMgKilwc2M7DQogICAgaW50IHJjID0gMDsNCg0K
ICAgIC8qcHJpbnRmKCJvbHRyJWQ6IG9sdHJfcGNpX2ludHJcbiIsIHNjLT51
bml0KTsqLyAvKiBUb28gbm9pc3kgKi8NCiAgICByYyA9IFRSbGxkSW50ZXJy
dXB0U2VydmljZShzYy0+VFJsbGRBZGFwdGVyKTsNCiAgICBpZiAocmMgPT0g
VFJMTERfTk9fSU5URVJSVVBUKQ0KICAgICAgICBwcmludGYoIm9sdHIlZDog
cGNpIGludGVycnVwdCBub3Qgc2VydmljZWQuXG4iLCBzYy0+dW5pdCk7DQp9
DQojZW5kaWYgLyogTlBDSSAqLw0KDQpzdGF0aWMgdm9pZCANCm9sdHJfc3Rh
cnQoaWZwKQ0KICAgIHN0cnVjdCBpZm5ldCAqaWZwOw0Kew0KICAgIHN0cnVj
dCBvbHRyX3NvZnRjICpzYyA9ICZvbHRyX3NvZnRjW2lmcC0+aWZfdW5pdF07
DQogICAgc3RydWN0IG1idWYgKm0wLCAqbTsNCiAgICBzdHJ1Y3QgaXNvODgw
MjVfaGVhZGVyICp0aDsNCiAgICBUUmxsZFRyYW5zbWl0X3QgZnJhbWU7DQog
ICAgaW50ICBsZW4sIGksIHJjOw0KDQogICAgLypwcmludGYoIm9sdHIlZDog
b2x0cl9zdGFydFxuIiwgc2MtPnVuaXQpOyovDQoNCm91dGxvb3A6DQoNCiAg
ICAvKiBDaGVjayB0byBzZWUgaWYgd2UgaGF2ZSBlbm91Z2ggcm9vbSB0byB0
cmFuc21pdCAqLw0KICAgIGlmIChzYy0+dHhfYXZhaWwgPD0gMCkgew0KICAg
ICAgICAvKiBObyBmcmVlIGJ1ZmZlcnMsIGhvbGQgb2ZmIHRoZSB1cHBlciBs
YXllcnMgKi8NCiAgICAgICAgLypwcmludGYoIm9sdHIlZDogdHJhbnNtaXQg
cXVldWUgZnVsbC5cbiIsIHNjLT51bml0KTsqLw0KICAgICAgICBpZnAtPmlm
X2ZsYWdzIHw9IElGRl9PQUNUSVZFOw0KICAgICAgICByZXR1cm47DQogICAg
fQ0KICAgIElGX0RFUVVFVUUoJmlmcC0+aWZfc25kLCBtKTsNCiAgICBpZiAo
bSA9PSAwKSB7DQogICAgICAgIC8qcHJpbnRmKCJvbHRyJWQ6IG9sdHJfc3Rh
cnQgTlVMTCBwYWNrZXQgZGVxdWV1ZWQuXG4iLCBzYy0+dW5pdCk7Ki8NCiAg
ICAgICAgaWZwLT5pZl9mbGFncyAmPSB+SUZGX09BQ1RJVkU7DQogICAgICAg
IHJldHVybjsNCiAgICB9DQoNCiAgICB0aCA9IG10b2QobSwgc3RydWN0IGlz
bzg4MDI1X2hlYWRlciAqKTsNCiAgICB0aC0+YWMgPSAweDEwOw0KICAgIHRo
LT5mYyA9IDB4NDA7DQogICAgDQogICAgLyogS2VlcCBhIHBvaW50ZXIgdG8g
dGhlIGhlYWQgb2YgdGhlIHBhY2tldCAqLw0KICAgIG0wID0gbTsNCg0KICAg
IGkgPSAoc2MtPnR4X25leHQgJiBUWF9MSVNUX01BU0spOyAvKiBKdXN0IHRv
IHNob3J0ZW4gdGhpbmcgdXAgKi8NCg0KICAgIGZvciAobGVuID0gMDsgbSAh
PSAwOyBtID0gbS0+bV9uZXh0KSB7DQogICAgICAgIGZyYW1lLlRyYW5zbWl0
RnJhZ21lbnRbMF0uVmlydHVhbEFkZHJlc3MgPSBzYy0+dHhfYnVmZmVyW2ld
LmJ1ZjsNCiAgICAgICAgZnJhbWUuVHJhbnNtaXRGcmFnbWVudFswXS5QaHlz
aWNhbEFkZHJlc3MgPSBrdnRvcChzYy0+dHhfYnVmZmVyW2ldLmJ1Zik7DQog
ICAgICAgIGJjb3B5KG10b2QobSwgY2FkZHJfdCksIHNjLT50eF9idWZmZXJb
aV0uYnVmICsgbGVuLCBtLT5tX2xlbik7DQogICAgICAgIGxlbiArPSBtLT5t
X2xlbjsNCiAgICB9DQogICAgZnJhbWUuRnJhZ21lbnRDb3VudCA9IDE7DQog
ICAgZnJhbWUuVHJhbnNtaXRGcmFnbWVudFswXS5jb3VudCA9IGxlbjsNCg0K
ICAgIHJjID0gVFJsbGRUcmFuc21pdEZyYW1lKHNjLT5UUmxsZEFkYXB0ZXIs
ICZmcmFtZSwgKHZvaWQgKilzYy0+dHhfYnVmZmVyW2ldLmluZGV4KTsNCiAg
ICBpZiAocmMgIT0gVFJMTERfVFJBTlNNSVRfT0spIHsNCiAgICAgICAgcHJp
bnRmKCJvbHRyJWQ6IFRSbGxkVHJhbnNtaXRGcmFtZSByZXR1cm5lZCAoJXgp
XG4iLCBzYy0+dW5pdCwgcmMpOw0KICAgICAgICBpZnAtPmlmX29lcnJvcnMr
KzsNCiAgICAgICAgZ290byBiYWQ7DQogICAgfQ0KDQogICAgc2MtPnR4X25l
eHQrKzsNCiAgICBzYy0+dHhfYXZhaWwtLTsNCg0KI2lmIE5CUEZJTFRFUiA+
IDANCiAgICBpZiAoaWZwLT5pZl9icGYpDQogICAgICAgIGJwZl9tdGFwKGlm
cCwgbTApOw0KI2VuZGlmDQoNCmJhZDoNCiAgICBtX2ZyZWVtKG0wKTsNCiAg
ICBnb3RvIG91dGxvb3A7DQogICAgcmV0dXJuOw0KfQ0KDQpzdGF0aWMgdm9p
ZA0Kb2x0cl9zdG9wKHNjKQ0KICAgIHN0cnVjdCBvbHRyX3NvZnRjICpzYzsN
CnsNCiAgICBzdHJ1Y3QgaWZuZXQgKmlmcCA9ICZzYy0+YXJwY29tLmFjX2lm
Ow0KICAgIC8qcHJpbnRmKCJvbHRyJWQ6IG90bHJfc3RvcFxuIiwgc2MtPnVu
aXQpOyovDQogICAgaWZwLT5pZl9mbGFncyAmPSB+KElGRl9VUCB8IElGRl9S
VU5OSU5HIHwgSUZGX09BQ1RJVkUpOw0KICAgIHNjLT5od19zdGF0ZSA9IEhX
X0NMT1NJTkc7DQogICAgVFJsbGRDbG9zZShzYy0+VFJsbGRBZGFwdGVyLCAw
KTsNCiAgICBzYy0+b2x0cl9jaCA9IHRpbWVvdXQob2x0cl90aW1lb3V0LCAo
dm9pZCAqKXNjLT51bml0LCAzMCpoeik7DQogICAgdHNsZWVwKCh2b2lkICop
c2MtPnVuaXQsIDEsICJvbHRyY2wiLCAzMCpoeik7DQp9DQoNCnN0YXRpYyBp
bnQNCm9sdHJfaW9jdGwoaWZwLCBjbWQsIGRhdGEpDQogICAgc3RydWN0IGlm
bmV0ICppZnA7DQogICAgdV9sb25nIGNtZDsNCiAgICBjYWRkcl90IGRhdGE7
DQp7DQogICAgc3RydWN0IG9sdHJfc29mdGMgKnNjID0gJm9sdHJfc29mdGNb
aWZwLT5pZl91bml0XTsNCiAgICBzdHJ1Y3QgaWZyZXEgKmlmciA9IChzdHJ1
Y3QgaWZyZXEgKilkYXRhOw0KICAgIGludCBlcnJvciA9IDAsIHM7DQoNCiAg
ICAvKnByaW50Zigib2x0ciVkOiBvbHRyX2lvY3RsXG4iLCBpZnAtPmlmX3Vu
aXQpOyovDQoNCiAgICBzID0gc3BsaW1wKCk7DQoNCiAgICBzd2l0Y2ggKGNt
ZCkgew0KICAgDQogICAgICAgIGNhc2UgU0lPQ1NJRkFERFI6DQogICAgICAg
IGNhc2UgU0lPQ0dJRkFERFI6DQogICAgICAgIGNhc2UgU0lPQ1NJRk1UVToN
CiAgICAgICAgICAgIGVycm9yID0gaXNvODgwMjVfaW9jdGwoaWZwLCBjbWQs
IGRhdGEpOw0KICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgY2FzZSBT
SU9DU0lGRkxBR1M6DQogICAgICAgICAgICAvKg0KICAgICAgICAgICAgICog
SWYgdGhlIGludGVyZmFjZSBpcyBtYXJrZWQgdXAgYW5kIHN0b3BwZWQsIHRo
ZW4gc3RhcnQgaXQuDQogICAgICAgICAgICAgKiBJZiBpdCBpcyBtYXJrZWQg
ZG93biBhbmQgcnVubmluZywgdGhlbiBzdG9wIGl0Lg0KICAgICAgICAgICAg
ICovDQogICAgICAgICAgICBpZiAoaWZwLT5pZl9mbGFncyAmIElGRl9VUCkg
ew0KICAgICAgICAgICAgICAgICAgICBpZiAoKGlmcC0+aWZfZmxhZ3MgJiBJ
RkZfUlVOTklORykgPT0gMCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvbHRyX2luaXQoc2MpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAg
ICAgICAgICAgICAgICAgaWYgKGlmcC0+aWZfZmxhZ3MgJiBJRkZfUlVOTklO
Rykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sdHJfc3RvcChz
Yyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZwLT5pZl9mbGFn
cyAmPSB+SUZGX1JVTk5JTkc7DQogICAgICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgYnJlYWs7
DQogICAgICAgIGNhc2UgU0lPQ0dJRk1FRElBOg0KICAgICAgICBjYXNlIFNJ
T0NTSUZNRURJQToNCiAgICAgICAgICAgIGVycm9yID0gaWZtZWRpYV9pb2N0
bChpZnAsIGlmciwgJnNjLT5pZm1lZGlhLCBjbWQpOw0KICAgICAgICAgICAg
YnJlYWs7DQogICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgICBlcnJvciA9
IEVJTlZBTDsNCiAgICB9DQogICAgc3BseChzKTsNCiAgICByZXR1cm4oZXJy
b3IpOw0KfQ0KDQovKg0KICogUE1XIENhbGxiYWNrIGZ1bmN0aW9ucyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tDQogKi8NCg0Kc3RhdGljIHZvaWQNCkRyaXZlclN1c3BlbmQoTWljcm9T
ZWNvbmRzKQ0KICAgIHVuc2lnbmVkIHNob3J0IE1pY3JvU2Vjb25kczsNCnsN
CiAgICBERUxBWShNaWNyb1NlY29uZHMpOw0KfQ0KDQoNCnN0YXRpYyB2b2lk
DQpEcml2ZXJTdGF0dXMoRHJpdmVySGFuZGxlLCBTdGF0dXMpDQogICAgdm9p
ZCAqRHJpdmVySGFuZGxlOw0KICAgIFRSbGxkU3RhdHVzX3QgKlN0YXR1czsN
CnsNCiAgICBzdHJ1Y3Qgb2x0cl9zb2Z0YyAqc2MgPSAmb2x0cl9zb2Z0Y1so
aW50KURyaXZlckhhbmRsZV07DQogICAgc3RydWN0IGlmbmV0ICppZnAgPSAm
c2MtPmFycGNvbS5hY19pZjsNCg0KICAgIHN3aXRjaCAoU3RhdHVzLT5UeXBl
KSB7DQogICAgICAgIGNhc2UgVFJMTERfU1RTX09OX1dJUkU6DQogICAgICAg
ICAgICBpZiAoc2MtPmh3X3N0YXRlID09IEhXX09QRU5JTkcpIHsNCiAgICAg
ICAgICAgICAgICBzYy0+aHdfc3RhdGUgPSBIV19PUEVOOw0KICAgICAgICAg
ICAgICAgIGlmcC0+aWZfZmxhZ3MgfD0gKElGRl9VUCB8IElGRl9SVU5OSU5H
KTsNCiAgICAgICAgICAgICAgICAvKnByaW50Zigib2x0ciVkOiBBZGFwdGVy
IGluc2VydGVkLlxuIiwgc2MtPnVuaXQpOyovDQogICAgICAgICAgICAgICAg
dW50aW1lb3V0KG9sdHJfdGltZW91dCwgKHZvaWQgKilzYy0+dW5pdCwgc2Mt
Pm9sdHJfY2gpOw0KICAgICAgICAgICAgICAgIHdha2V1cF9vbmUoKHZvaWQg
KilzYy0+dW5pdCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBicmVh
azsNCiAgICAgICAgY2FzZSBUUkxMRF9TVFNfU0VMRlRFU1RfU1RBVFVTOg0K
ICAgICAgICAgICAgaWYgKFN0YXR1cy0+U3BlY2lmaWNhdGlvbi5TZWxmdGVz
dFN0YXR1cyA9PSBUUkxMRF9TVF9PSykgew0KICAgICAgICAgICAgICAgIHBy
aW50Zigib2x0ciVkOiBhZGFwdGVyIHN0YXR1cyBnb29kLiAoY2xvc2UgY29t
cGxldGVkL3NlbGYtdGVzdClcbiIsIHNjLT51bml0KTsNCiAgICAgICAgICAg
ICAgICBpZiAoKHNjLT5od19zdGF0ZSA9PSBIV19MT0FESU5HKSB8fCAoc2Mt
Pmh3X3N0YXRlID09IEhXX0NMT1NJTkcpIHx8IChzYy0+aHdfc3RhdGUgPT0g
SFdfQ0xPU0lORzIpKSB7DQogICAgICAgICAgICAgICAgICAgIHNjLT5od19z
dGF0ZSA9IEhXX0NMT1NFRDsNCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7
DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSBlbHNlIHsNCiAg
ICAgICAgICAgICAgICBwcmludGYoIm9sdHIlZDogU2VsZiB0ZXN0IGZhaWxl
ZDogIiwgc2MtPnVuaXQpOw0KICAgICAgICAgICAgICAgIHN3aXRjaCAoU3Rh
dHVzLT5TcGVjaWZpY2F0aW9uLlNlbGZ0ZXN0U3RhdHVzKSB7DQogICAgICAg
ICAgICAgICAgICAgIGNhc2UgVFJMTERfU1RfRVJST1IgKyAwOiBwcmludGYo
IkluaXRpYWwgVGVzdCBFcnJvclxuIik7IGJyZWFrOw0KICAgICAgICAgICAg
ICAgICAgICBjYXNlIFRSTExEX1NUX0VSUk9SICsgMTogcHJpbnRmKCJBZGFw
dGVyIFNvZnR3YXJlIENoZWNrc3VtIEVycm9yXG4iKTsgYnJlYWs7DQogICAg
ICAgICAgICAgICAgICAgIGNhc2UgVFJMTERfU1RfRVJST1IgKyAyOiBwcmlu
dGYoIkFkYXB0ZXIgUkFNIEVycm9yXG4iKTsgYnJlYWs7DQogICAgICAgICAg
ICAgICAgICAgIGNhc2UgVFJMTERfU1RfRVJST1IgKyA0OiBwcmludGYoIklu
c3RydWN0aW9uIFRlc3QgRXJyb3JcbiIpOyBicmVhazsNCiAgICAgICAgICAg
ICAgICAgICAgY2FzZSBUUkxMRF9TVF9FUlJPUiArIDU6IHByaW50ZigiUHJv
dG9jb2wgSGFuZGxlci9SSSBIdyBFcnJvclxuIik7IGJyZWFrOw0KICAgICAg
ICAgICAgICAgICAgICBjYXNlIFRSTExEX1NUX0VSUk9SICsgNjogcHJpbnRm
KCJTeXN0ZW0gSW50ZXJmYWNlIFJlZ2lzdGVyIEVycm9yXG4iKTsgYnJlYWs7
DQogICAgICAgICAgICAgICAgICAgIGNhc2UgVFJMTERfU1RfVElNRU9VVDog
ICBwcmludGYoIlNlbGZ0ZXN0IGRpZCBub3QgY29tcGxldGVcbiIpOyBicmVh
azsNCiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogcHJpbnRmKCJVbmtu
b3duIGVycm9yICgleClcbiIsIFN0YXR1cy0+U3BlY2lmaWNhdGlvbi5TZWxm
dGVzdFN0YXR1cyk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIGNhc2UgVFJMTERfU1RT
X0lOSVRfU1RBVFVTOg0KICAgICAgICAgICAgcHJpbnRmKCJvbHRyJWQ6IEFk
YXB0ZXIgaW5pdGlhbGl6YXRpb24gZmFpbGVkOiAiLCBzYy0+dW5pdCk7DQog
ICAgICAgICAgICBzd2l0Y2goU3RhdHVzLT5TcGVjaWZpY2F0aW9uLkluaXRT
dGF0dXMpIHsNCiAgICAgICAgICAgICAgICBjYXNlIFRSTExEX0lOSVRfRVJS
T1IgKyAweDAxOiBwcmludGYoIkludmFsaWQgaW5pdCBibG9jayAoTExEIGVy
cm9yKVxuIik7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgVFJMTERf
SU5JVF9FUlJPUiArIDB4MDI6IHByaW50ZigiSW52YWxpZCBvcHRpb25zIChM
TEQgZXJyb3IpXG4iKTsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSBU
UkxMRF9JTklUX0VSUk9SICsgMHgwMzogcHJpbnRmKCJJbnZhbGlkIHJjdiBi
dXJzdCAoTExEIGVycm9yKVxuIik7IGJyZWFrOw0KICAgICAgICAgICAgICAg
IGNhc2UgVFJMTERfSU5JVF9FUlJPUiArIDB4MDQ6IHByaW50ZigiSW52YWxp
ZCB4bXQgYnVyc3QgKExMRCBlcnJvcilcbiIpOyBicmVhazsNCiAgICAgICAg
ICAgICAgICBjYXNlIFRSTExEX0lOSVRfRVJST1IgKyAweDA1OiBwcmludGYo
IkludmFsaWQgRE1BIHRocmVzaG9sZCAoTExEIGVycm9yKVxuIik7IGJyZWFr
Ow0KICAgICAgICAgICAgICAgIGNhc2UgVFJMTERfSU5JVF9FUlJPUiArIDB4
MDY6IHByaW50ZigiSW52YWxpZCBzY2IgYWRkclxuIik7IGJyZWFrOw0KICAg
ICAgICAgICAgICAgIGNhc2UgVFJMTERfSU5JVF9FUlJPUiArIDB4MDc6IHBy
aW50ZigiSW52YWxpZCBzc2IgYWRkclxuIik7IGJyZWFrOw0KICAgICAgICAg
ICAgICAgIGNhc2UgVFJMTERfSU5JVF9FUlJPUiArIDB4MDg6IHByaW50Zigi
RElPIHBhcml0eSBlcnJvciAoSFcgZXJyb3IpXG4iKTsgYnJlYWs7DQogICAg
ICAgICAgICAgICAgY2FzZSBUUkxMRF9JTklUX0VSUk9SICsgMHgwOTogcHJp
bnRmKCJETUEgdGltZW91dCAoTWF5IGJlIGludGVycnVwdCBmYWlsaW5nIGlm
IFBJTyBtb2RlIG9yIFBDSTIpXG4iKTsgYnJlYWs7DQogICAgICAgICAgICAg
ICAgY2FzZSBUUkxMRF9JTklUX0VSUk9SICsgMHgwQTogcHJpbnRmKCJETUEg
cGFyaXR5IGVycm9yIChIVyBlcnJvcilcbiIpOyBicmVhazsNCiAgICAgICAg
ICAgICAgICBjYXNlIFRSTExEX0lOSVRfRVJST1IgKyAweDBCOiBwcmludGYo
IkRNQSBidXMgZXJyb3IgKEhXIGVycm9yKVxuIik7IGJyZWFrOw0KICAgICAg
ICAgICAgICAgIGNhc2UgVFJMTERfSU5JVF9FUlJPUiArIDB4MEM6IHByaW50
ZigiRE1BIGRhdGEgZXJyb3JcbiIpOyBicmVhazsNCiAgICAgICAgICAgICAg
ICBjYXNlIFRSTExEX0lOSVRfRVJST1IgKyAweDBEOiBwcmludGYoIkFkYXB0
ZXIgQ2hlY2tcbiIpOyBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIFRS
TExEX0lOSVRfVElNRU9VVDogICAgICBwcmludGYoIkFkYXB0ZXIgaW5pdGlh
bGl6YXRpb24gZGlkIG5vdCBjb21wbGV0ZVxuIik7IGJyZWFrOw0KICAgICAg
ICAgICAgICAgIGNhc2UgVFJMTERfSU5JVF9ETUFfRVJST1I6ICAgIHByaW50
ZigiQWRhcHRlciBjYW5ub3QgYWNjZXNzIHN5c3RlbSBtZW1vcnlcbiIpOyBi
cmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIFRSTExEX0lOSVRfSU5UUl9F
UlJPUjogICBwcmludGYoIkFkYXB0ZXIgY2Fubm90IGludGVycnVwdFxuIik7
IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgVFJMTERfT1BFTl9USU1F
T1VUOiAgICAgIHByaW50ZigiQWRhcHRlciBkaWQgbm90IGNvbXBsZXRlIG9w
ZW4gd2l0aGluIDMwIHNlY29uZHNcbiIpOyBicmVhazsNCiAgICAgICAgICAg
ICAgICBjYXNlIFRSTExEX09QRU5fRVJST1IgKyAweDAxOiBwcmludGYoIklu
dmFsaWQgb3BlbiBvcHRpb25zIChMTEQgZXJyb3IpXG4iKTsgYnJlYWs7DQog
ICAgICAgICAgICAgICAgY2FzZSBUUkxMRF9PUEVOX0VSUk9SICsgMHgwNDog
cHJpbnRmKCJUeEJ1ZmZlciBjb3VudCBlcnJvciAoTExEIGVycm9yKVxuIik7
IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgVFJMTERfT1BFTl9FUlJP
UiArIDB4MTA6IHByaW50ZigiQnVmZmVyIHNpemUgZXJyb3IgKExMRCBlcnJv
cilcbiIpOyBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIFRSTExEX09Q
RU5fRVJST1IgKyAweDIwOiBwcmludGYoIkxpc3Qgc2l6ZSBlcnJvciAoTExE
IGVycm9yKVxuIik7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGRlZmF1bHQ6
IA0KICAgICAgICAgICAgICAgICAgICBpZiAoU3RhdHVzLT5TcGVjaWZpY2F0
aW9uLkluaXRTdGF0dXMgJiAweDcwMCkgew0KICAgICAgICAgICAgICAgICAg
ICAgICAgc3dpdGNoIChTdGF0dXMtPlNwZWNpZmljYXRpb24uSW5pdFN0YXR1
cyAmIDB4NzBGKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBUUkxMRF9PUEVOX1JFUEVBVCArIDB4MDE6IHByaW50ZigiTG9iZSBtZWRp
YSB0ZXN0IC0gIik7IGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgVFJMTERfT1BFTl9SRVBFQVQgKyAweDAyOiBwcmludGYoIlBo
eXNpY2FsIGluc2VydGlvbiAtICIpOyBicmVhazsNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjYXNlIFRSTExEX09QRU5fUkVQRUFUICsgMHgwMzog
cHJpbnRmKCJBZGRyZXNzIHZlcmlmaWNhdGlvbiAtICIpOyBicmVhazsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFRSTExEX09QRU5fUkVQ
RUFUICsgMHgwNDogcHJpbnRmKCJQYXJ0aWNpcGF0aW9uIGluIHJpbmcgcG9s
bCAtICIpOyBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
YXNlIFRSTExEX09QRU5fUkVQRUFUICsgMHgwNTogcHJpbnRmKCJSZXF1ZXN0
IGluaXRpYWxpemF0aW9uIC0gIik7IGJyZWFrOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgVFJMTERfT1BFTl9SRVBFQVQgKyAweDA5OiBw
cmludGYoIlJlcXVlc3QgcmVnaXN0cmF0aW9uIChUWEkpIC0gIik7IGJyZWFr
Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVFJMTERfT1BF
Tl9SRVBFQVQgKyAweDBBOiBwcmludGYoIkxvYmUgbWVkaWEgdGVzdCAoVFhJ
KSAtICIpOyBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
ZWZhdWx0OiAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJVbmtub3du
IHBoYXNlICgleCkgLSAiLCBTdGF0dXMtPlNwZWNpZmljYXRpb24uSW5pdFN0
YXR1cyAmIDB4MDBGKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoU3RhdHVzLT5TcGVjaWZp
Y2F0aW9uLkluaXRTdGF0dXMgJiAweDdGMCkgew0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgVFJMTERfT1BFTl9SRVBFQVQgKyAweDEwOiBw
cmludGYoIkZ1bmN0aW9uIGZhaWx1cmUgKE5vIGNhYmxlPylcbiIpOyBicmVh
azsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFRSTExEX09Q
RU5fUkVQRUFUICsgMHgyMDogcHJpbnRmKCJTaWduYWwgbG9zc1xuIik7IGJy
ZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVFJMTERf
T1BFTl9SRVBFQVQgKyAweDUwOiBwcmludGYoIlRpbWVvdXRcbiIpOyBicmVh
azsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFRSTExEX09Q
RU5fUkVQRUFUICsgMHg2MDogcHJpbnRmKCJSaW5nIGZhaWx1cmUgKFRLUCkg
LyBQcm90b2NvbCBlcnJvciAoVFhJKVxuIik7IGJyZWFrOw0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgVFJMTERfT1BFTl9SRVBFQVQgKyAw
eDcwOiBwcmludGYoIlJpbmcgYmVhY29uaW5nXG4iKTsgYnJlYWs7DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBUUkxMRF9PUEVOX1JFUEVB
VCArIDB4ODA6IHByaW50ZigiRHVwbGljYXRlIG5vZGUgYWRkcmVzcyAoVEtQ
KSAvIEluc2VydCBkZW5pZWQgKFRYSSlcbiIpOyBicmVhazsNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjYXNlIFRSTExEX09QRU5fUkVQRUFUICsg
MHg5MDogcHJpbnRmKCJSZXF1ZXN0IGluaXRpYWxpemF0aW9uIChUS1ApXG4i
KTsgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBU
UkxMRF9PUEVOX1JFUEVBVCArIDB4YTA6IHByaW50ZigiUmVtb3ZlIHJlY2Vp
dmVkXG4iKTsgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2FzZSBUUkxMRF9PUEVOX1JFUEVBVCArIDB4YjA6IHByaW50ZigiQy1wb3J0
IGFkZHJlc3MgY2hhbmdlZCAoVFhJKVxuIik7IGJyZWFrOw0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAg
ICAgICBwcmludGYoIlVua25vd24gdHlwZSAoJXgpXG4iLCBTdGF0dXMtPlNw
ZWNpZmljYXRpb24uSW5pdFN0YXR1cyAmIDB4MEYwKTsNCiAgICAgICAgICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsN
CiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiVW5rbm93biBlcnJv
ciAoJXgpXG4iLCBTdGF0dXMtPlNwZWNpZmljYXRpb24uSW5pdFN0YXR1cyk7
IA0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAg
ICAgICAgICBicmVhazsNCiAgICAgICAgY2FzZSBUUkxMRF9TVFNfUklOR19T
VEFUVVM6DQogICAgICAgICAgICBpZiAoU3RhdHVzLT5TcGVjaWZpY2F0aW9u
LlJpbmdTdGF0dXMgIT0gMCkgew0KICAgICAgICAgICAgICAgIHByaW50Zigi
b2x0ciVkOiBSaW5nIHN0YXR1cyBjaGFuZ2U6ICIsIHNjLT51bml0KTsNCiAg
ICAgICAgICAgICAgICBpZiAoU3RhdHVzLT5TcGVjaWZpY2F0aW9uLlJpbmdT
dGF0dXMgJiBUUkxMRF9SU19IQVJEX0VSUk9SKSAgICAgICAgIHByaW50Zigi
W0hhcmQgZXJyb3JdICIpOw0KICAgICAgICAgICAgICAgIGlmIChTdGF0dXMt
PlNwZWNpZmljYXRpb24uUmluZ1N0YXR1cyAmIFRSTExEX1JTX1NPRlRfRVJS
T1IpICAgICAgICAgcHJpbnRmKCJbU29mdCBlcnJvcl0gIik7DQogICAgICAg
ICAgICAgICAgaWYgKFN0YXR1cy0+U3BlY2lmaWNhdGlvbi5SaW5nU3RhdHVz
ICYgVFJMTERfUlNfVFJBTlNNSVRfQkVBQ09OKSAgICBwcmludGYoIltUcmFu
c21pdCBiZWFjb25dICIpOw0KICAgICAgICAgICAgICAgIGlmIChTdGF0dXMt
PlNwZWNpZmljYXRpb24uUmluZ1N0YXR1cyAmIFRSTExEX1JTX0xPQkVfV0lS
RV9GQVVMVCkgICAgcHJpbnRmKCJbV2lyZSBmYXVsdF0gIik7DQogICAgICAg
ICAgICAgICAgaWYgKFN0YXR1cy0+U3BlY2lmaWNhdGlvbi5SaW5nU3RhdHVz
ICYgVFJMTERfUlNfQVVUT19SRU1PVkFMX0VSUk9SKSBwcmludGYoIltBdXRv
IHJlbW92YWxdICIpOw0KICAgICAgICAgICAgICAgIGlmIChTdGF0dXMtPlNw
ZWNpZmljYXRpb24uUmluZ1N0YXR1cyAmIFRSTExEX1JTX1JFTU9WRV9SRUNF
SVZFRCkgICAgcHJpbnRmKCJbUmVtb3ZlIHJlY2VpdmVkXSAiKTsNCiAgICAg
ICAgICAgICAgICBpZiAoU3RhdHVzLT5TcGVjaWZpY2F0aW9uLlJpbmdTdGF0
dXMgJiBUUkxMRF9SU19DT1VOVEVSX09WRVJGTE9XKSAgIHByaW50ZigiW0Nv
dW50ZXIgb3ZlcmZsb3ddICIpOw0KICAgICAgICAgICAgICAgIGlmIChTdGF0
dXMtPlNwZWNpZmljYXRpb24uUmluZ1N0YXR1cyAmIFRSTExEX1JTX1NJTkdM
RV9TVEFUSU9OKSAgICAgcHJpbnRmKCJbU2luZ2xlIHN0YXRpb25dICIpOw0K
ICAgICAgICAgICAgICAgIGlmIChTdGF0dXMtPlNwZWNpZmljYXRpb24uUmlu
Z1N0YXR1cyAmIFRSTExEX1JTX1JJTkdfUkVDT1ZFUlkpICAgICAgcHJpbnRm
KCJbUmluZyByZWNvdmVyeV0gIik7DQogICAgICAgICAgICAgICAgcHJpbnRm
KCJcbiIpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgYnJlYWs7DQog
ICAgICAgIGNhc2UgVFJMTERfU1RTX0FEQVBURVJfQ0hFQ0s6DQogICAgICAg
ICAgICBwcmludGYoIm9sdHIlZDogQWRhcHRlciBjaGVjayAoJXggJXggJXgg
JXgpXG4iLCBzYy0+dW5pdCwgU3RhdHVzLT5TcGVjaWZpY2F0aW9uLkFkYXB0
ZXJDaGVja1swXSwgDQogICAgICAgICAgICAgICAgICAgIFN0YXR1cy0+U3Bl
Y2lmaWNhdGlvbi5BZGFwdGVyQ2hlY2tbMV0sIFN0YXR1cy0+U3BlY2lmaWNh
dGlvbi5BZGFwdGVyQ2hlY2tbMl0sIA0KICAgICAgICAgICAgICAgICAgICBT
dGF0dXMtPlNwZWNpZmljYXRpb24uQWRhcHRlckNoZWNrWzNdKTsgDQogICAg
ICAgICAgICBicmVhazsNCiAgICAgICAgY2FzZSBUUkxMRF9TVFNfUFJPTUlT
Q1VPVVNfU1RPUFBFRDoNCiAgICAgICAgICAgIHByaW50Zigib2x0ciVkOiBQ
cm9taXNjdW91cyBtb2RlIHN0b3BwZWQ6ICIsIHNjLT51bml0KTsNCiAgICAg
ICAgICAgIHN3aXRjaChTdGF0dXMtPlNwZWNpZmljYXRpb24uUHJvbVJlbW92
ZWRDYXVzZSkgew0KICAgICAgICAgICAgICAgIGNhc2UgVFJMTERfUFJPTV9S
RU1PVkVfUkVDRUlWRUQ6IHByaW50ZigiUmVtb3ZlIHJlY2VpdmVkXG4iKTsg
YnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSBUUkxMRF9QUk9NX1BPTExf
RkFJTFVSRTogICAgcHJpbnRmKCJQb2xsIGZhaWx1cmVcbiIpOyBicmVhazsN
CiAgICAgICAgICAgICAgICBkZWZhdWx0OiAgICAgICAgICAgICAgICAgICAg
ICAgICBwcmludGYoIlVua25vd24gKCV4KVxuIiwgU3RhdHVzLT5TcGVjaWZp
Y2F0aW9uLlByb21SZW1vdmVkQ2F1c2UpOw0KICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgYnJlYWs7DQogICAgICAgIGNhc2UgVFJMTERfU1RTX0xMRF9F
UlJPUjoNCiAgICAgICAgICAgIHByaW50Zigib2x0ciVkOiBMTEQgZXJyb3Ig
KCV4ICV4ICV4ICV4KSAiLCBzYy0+dW5pdCwgU3RhdHVzLT5TcGVjaWZpY2F0
aW9uLkludGVybmFsRXJyb3JbMF0sIA0KICAgICAgICAgICAgICAgICAgICBT
dGF0dXMtPlNwZWNpZmljYXRpb24uSW50ZXJuYWxFcnJvclsxXSwgU3RhdHVz
LT5TcGVjaWZpY2F0aW9uLkludGVybmFsRXJyb3JbMl0sIA0KICAgICAgICAg
ICAgICAgICAgICBTdGF0dXMtPlNwZWNpZmljYXRpb24uSW50ZXJuYWxFcnJv
clszXSk7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgY2FzZSBUUkxM
RF9TVFNfQURBUFRFUl9USU1FT1VUOg0KICAgICAgICAgICAgcHJpbnRmKCJv
bHRyJWQ6IEFkYXB0ZXIgb3BlcmF0aW9uIHRpbWVkIG91dDogIiwgc2MtPnVu
aXQpOw0KICAgICAgICAgICAgc3dpdGNoKFN0YXR1cy0+U3BlY2lmaWNhdGlv
bi5BZGFwdGVyVGltZW91dCkgew0KICAgICAgICAgICAgICAgIGNhc2UgVFJM
TERfQ09NTUFORF9USU1FT1VUOiAgIHByaW50ZigiQ29tbWFuZFxuIik7DQog
ICAgICAgICAgICAgICAgY2FzZSBUUkxMRF9UUkFOU01JVF9USU1FT1VUOiAg
cHJpbnRmKCJUcmFuc21pdFxuIik7DQogICAgICAgICAgICAgICAgY2FzZSBU
UkxMRF9JTlRFUlJVUFRfVElNRU9VVDogcHJpbnRmKCJJbnRlcnJ1cHRcbiIp
Ow0KICAgICAgICAgICAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAg
ICAgIHByaW50ZigiVW5rbm93biAoJXgpXG4iLCBTdGF0dXMtPlNwZWNpZmlj
YXRpb24uQWRhcHRlclRpbWVvdXQpOw0KICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgYnJlYWs7DQogICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgICBw
cmludGYoIm9sdHIlZDogVW5rbm93biBzdGF0dXMgdHlwZSAoJXgpXG4iLCBz
Yy0+dW5pdCwgU3RhdHVzLT5UeXBlKTsNCg0KICAgIH0NCiAgICBpZiAoU3Rh
dHVzLT5DbG9zZWQpIHsNCiAgICAgICAgaWYgKHNjLT5od19zdGF0ZSA+IEhX
X0JBRCkgew0KICAgICAgICAgICAgc2MtPmh3X3N0YXRlID0gSFdfRkFJTEVE
Ow0KICAgICAgICAgICAgcHJpbnRmKCJvbHRyJWQ6IGNsb3NpbmcgYWRhcHRl
ciBkdWUgdG8gZmFpbHVyZS5cbiIsIHNjLT51bml0KTsNCiAgICAgICAgICAg
IG9sdHJfc3RvcChzYyk7DQogICAgICAgIH0NCiAgICB9DQp9DQoNCnN0YXRp
YyB2b2lkDQpEcml2ZXJDbG9zZUNvbXBsZXRlZChEcml2ZXJIYW5kbGUpDQog
ICAgdm9pZCAqRHJpdmVySGFuZGxlOw0Kew0KICAgIHN0cnVjdCBvbHRyX3Nv
ZnRjICpzYyA9ICZvbHRyX3NvZnRjWyhpbnQpRHJpdmVySGFuZGxlXTsNCg0K
ICAgIC8qcHJpbnRmKCJvbHRyJWQ6IERyaXZlckNsb3NlQ29tcGxldGVkXG4i
LCBzYy0+dW5pdCk7Ki8NCg0KICAgIHVudGltZW91dChvbHRyX3RpbWVvdXQs
ICh2b2lkICopc2MtPnVuaXQsIHNjLT5vbHRyX2NoKTsNCiAgICB3YWtldXBf
b25lKCh2b2lkICopc2MtPnVuaXQpOw0KDQogICAgaWYgKChzYy0+aHdfc3Rh
dGUgIT0gSFdfQ0xPU0lORykgJiYgKHNjLT5od19zdGF0ZSAhPSBIV19DTE9T
SU5HMikgJiYgKHNjLT5od19zdGF0ZSAhPSBIV19DTE9TRUQpKSB7DQogICAg
ICAgIHByaW50Zigib2x0ciVkOiBhZGFwdGVyIGNsb3NlIGNvbXBsZXRlIGNh
bGxlZCBpbiB3cm9uZyBzdGF0ZSAoJWQpXG4iLCBzYy0+dW5pdCwgc2MtPmh3
X3N0YXRlKTsNCiAgICAgICAgcmV0dXJuOw0KICAgIH0NCiAgICBzYy0+aHdf
c3RhdGUgPSBIV19DTE9TSU5HMjsNCiAgICBpZiAoc2MtPmNvbmZpZy0+ZG1h
bGV2ZWwgIT0gVFJMTERfRE1BX1BJTykNCiAgICAgICAgaXNhX2RtYV9yZWxl
YXNlKHNjLT5jb25maWctPmRtYWxldmVsKTsNCiAgICANCn0NCg0Kc3RhdGlj
IHZvaWQNCkRyaXZlclN0YXRpc3RpY3MoRHJpdmVySGFuZGxlLCBTdGF0aXN0
aWNzKQ0KICAgIHZvaWQgKkRyaXZlckhhbmRsZTsNCiAgICBUUmxsZFN0YXRp
c3RpY3NfdCAqU3RhdGlzdGljczsNCnsNCiAgICBwcmludGYoIm9sdHI6IERy
aXZlclN0YXRpc3RpY3NcbiIpOw0KfQ0KDQpzdGF0aWMgdm9pZA0KRHJpdmVy
VHJhbnNtaXRGcmFtZUNvbXBsZXRlZChEcml2ZXJIYW5kbGUsIEZyYW1lSGFu
ZGxlLCBUcmFuc21pdFN0YXR1cykNCiAgICB2b2lkICpEcml2ZXJIYW5kbGU7
DQogICAgdm9pZCAqRnJhbWVIYW5kbGU7DQogICAgaW50IFRyYW5zbWl0U3Rh
dHVzOw0Kew0KICAgIGludCBmcmFtZSA9IChpbnQpRnJhbWVIYW5kbGU7DQog
ICAgc3RydWN0IG9sdHJfc29mdGMgKnNjID0gJm9sdHJfc29mdGNbKGludClE
cml2ZXJIYW5kbGVdOw0KICAgIHN0cnVjdCBpZm5ldCAqaWZwID0gJnNjLT5h
cnBjb20uYWNfaWY7DQoNCiAgICBpZiAoaWZwLT5pZl9mbGFncyAmIElGRl9P
QUNUSVZFKQ0KICAgICAgICBpZnAtPmlmX2ZsYWdzICY9IH4oSUZGX09BQ1RJ
VkUpOw0KDQogICAgLypwcmludGYoIm9sdHIlZDogdHJhbnNtaXQgY29tcGxl
dGUgZnJhbWUgJWRcbiIsIHNjLT51bml0LCBmcmFtZSk7Ki8NCiAgICBpZiAo
VHJhbnNtaXRTdGF0dXMgPT0gVFJMTERfVFJBTlNNSVRfT0spIHsNCiAgICAg
ICAgaWZwLT5pZl9vcGFja2V0cysrOw0KICAgIH0gZWxzZSB7DQogICAgICAg
IHByaW50Zigib2x0ciVkOiBEcml2ZXJUcmFuc21pdEZyYW1lQ29tcGxldGVk
IChGcmFtZSAlZCBzdGF0dXMgJXgpXG4iLCBzYy0+dW5pdCwgZnJhbWUsIFRy
YW5zbWl0U3RhdHVzKTsNCiAgICAgICAgaWZwLT5pZl9vZXJyb3JzKys7DQog
ICAgfQ0KICAgIGlmICgoZnJhbWUgPCAwKSB8fCAoZnJhbWUgPiBUWF9MSVNU
X1NJWkUpKSB7DQogICAgICAgIHByaW50Zigib2x0ciVkOiBib2d1cyB0cmFu
c21pdCBidWZmZXIuICglZClcbiIsIHNjLT51bml0LCBmcmFtZSk7DQogICAg
ICAgIHJldHVybjsNCiAgICB9DQoNCiAgICBzYy0+dHhfYXZhaWwrKzsNCg0K
fQ0KDQpzdGF0aWMgdm9pZA0KRHJpdmVyUmVjZWl2ZUZyYW1lQ29tcGxldGVk
KERyaXZlckhhbmRsZSwgQnl0ZUNvdW50LCBGcmFnbWVudENvdW50LCBGcmFn
bWVudEhhbmRsZSwgUmVjZWl2ZVN0YXR1cykNCiAgICB2b2lkICpEcml2ZXJI
YW5kbGU7DQogICAgaW50IEJ5dGVDb3VudDsNCiAgICBpbnQgRnJhZ21lbnRD
b3VudDsNCiAgICB2b2lkICpGcmFnbWVudEhhbmRsZTsNCiAgICBpbnQgUmVj
ZWl2ZVN0YXR1czsNCnsNCiAgICBzdHJ1Y3Qgb2x0cl9zb2Z0YyAqc2MgPSAm
b2x0cl9zb2Z0Y1soaW50KURyaXZlckhhbmRsZV07DQogICAgc3RydWN0IGlm
bmV0ICppZnAgPSAmc2MtPmFycGNvbS5hY19pZjsNCiAgICBzdHJ1Y3QgaXNv
ODgwMjVfaGVhZGVyICp0aDsNCiAgICBzdHJ1Y3QgbWJ1ZiAqbTsNCiAgICBp
bnQgaSwgaiA9IChpbnQpRnJhZ21lbnRIYW5kbGUsIHJjLCBmcmFtZV9sZW4g
PSBCeXRlQ291bnQsIG1hY19oZHJfbGVuOw0KICAgIGNoYXIgKmZyYWcgPSBz
Yy0+cnhfYnVmZmVyW2pdLmJ1ZjsNCg0KICAgIGlmIChzYy0+aHdfc3RhdGUg
Pj0gIEhXX09QRU4pIHsgICAgICAgICAgICAgLyogSGFyZHdhcmUgb3BlcmF0
aW5nIG5vcm1hbGx5ICovDQogICAgICAgIGlmIChmcmFnICE9IHNjLT5yeF9i
dWZmZXJbc2MtPnJ4X25leHQgJiBSWF9MSVNUX01BU0tdLmJ1Zikgew0KICAg
ICAgICAgICAgcHJpbnRmKCJvbHRyJWQ6IHJpbmcgYnVmZmVyIHBvaW50ZXIg
Ymxvd25cbiIsIHNjLT51bml0KTsNCiAgICAgICAgICAgIG9sdHJfc3RvcChz
Yyk7DQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0NCiAgICAgICAg
aWYgKFJlY2VpdmVTdGF0dXMgPT0gVFJMTERfUkNWX09LKSB7ICAgIC8qIFJl
Y2VpdmUgZ29vZCBmcmFtZSAqLw0KICAgICAgICAgICAgTUdFVEhEUihtLCBN
X0RPTlRXQUlULCBNVF9EQVRBKTsNCiAgICAgICAgICAgIGlmIChtID09IE5V
TEwpIHsNCiAgICAgICAgICAgICAgICBpZnAtPmlmX2llcnJvcnMrKzsNCiAg
ICAgICAgICAgICAgICBnb3RvIG91dDsNCiAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgIGlmIChmcmFtZV9sZW4gKyAyID4gTUhMRU4pIHsNCiAgICAgICAg
ICAgICAgICBNQ0xHRVQobSwgTV9ET05UV0FJVCk7DQogICAgICAgICAgICAg
ICAgaWYgKChtLT5tX2ZsYWdzICYgTV9FWFQpID09IDApIHsNCiAgICAgICAg
ICAgICAgICAgICAgcHJpbnRmKCJvbHRyJWQ6IHVuYWJsZSB0byBnZXQgbWJ1
ZiBjbHVzdGVyIGR1cmluZyByZWNlaXZlLlxuIiwgc2MtPnVuaXQpOw0KICAg
ICAgICAgICAgICAgICAgICBtX2ZyZWVtKG0pOw0KICAgICAgICAgICAgICAg
ICAgICBpZnAtPmlmX2llcnJvcnMrKzsNCiAgICAgICAgICAgICAgICAgICAg
Z290byBvdXQ7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgaWZwLT5pZl9pcGFja2V0cysrOw0KDQogICAgICAgICAg
ICBtLT5tX3BrdGhkci5yY3ZpZiA9ICZzYy0+YXJwY29tLmFjX2lmOw0KICAg
ICAgICAgICAgbS0+bV9wa3RoZHIubGVuID0gbS0+bV9sZW4gPSBmcmFtZV9s
ZW47DQogICAgICAgICAgICBtLT5tX2RhdGEgKz0gMjsNCiAgICAgICAgICAg
IHRoID0gbXRvZChtLCBzdHJ1Y3QgaXNvODgwMjVfaGVhZGVyICopOw0KDQog
ICAgICAgICAgICBpID0gMDsNCiAgICAgICAgICAgIHdoaWxlIChmcmFtZV9s
ZW4gPiBSWF9CVUZGRVJfTEVOKSB7DQogICAgICAgICAgICAgICAgYmNvcHko
ZnJhZywgbXRvZChtLCBjaGFyICopICsgaSwgUlhfQlVGRkVSX0xFTik7DQog
ICAgICAgICAgICAgICAgaSArPSBSWF9CVUZGRVJfTEVOOw0KICAgICAgICAg
ICAgICAgIGZyYW1lX2xlbiAtPSBSWF9CVUZGRVJfTEVOOw0KICAgICAgICAg
ICAgICAgIGZyYWcgPSBzYy0+cnhfYnVmZmVyWysral0uYnVmOw0KICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgYmNvcHkoZnJhZywgbXRvZChtLCBjaGFy
ICopICsgaSwgZnJhbWVfbGVuKTsNCiAgICAgICAgDQojaWYgTkJQRklMVEVS
ID4gMA0KICAgICAgICAgICAgaWYgKGlmcC0+aWZfYnBmKQ0KICAgICAgICAg
ICAgICAgIGJwZl9tdGFwKGlmcCwgbSk7DQojZW5kaWYNCg0KICAgICAgICAg
ICAgbWFjX2hkcl9sZW4gPSBJU084ODAyNV9IRFJfTEVOOw0KICAgICAgICAg
ICAgaWYgKHRoLT5pc284ODAyNV9zaG9zdFswXSAmIDB4ODApIC8qIENoZWNr
IGZvciBzb3VyY2Ugcm91dGluZyBpbmZvICovDQogICAgICAgICAgICAgICAg
bWFjX2hkcl9sZW4gKz0gIChudG9ocyh0aC0+cmNmKSAmIDB4MWYwMCkgPj4g
ODsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgbS0+bV9wa3RoZHIubGVu
ID0gbS0+bV9sZW4gPSBCeXRlQ291bnQgLSBtYWNfaGRyX2xlbjsNCiAgICAg
ICAgICAgIG0tPm1fZGF0YSArPSBtYWNfaGRyX2xlbjsNCg0KICAgICAgICAg
ICAgaXNvODgwMjVfaW5wdXQoJnNjLT5hcnBjb20uYWNfaWYsIHRoLCBtKTsN
Cg0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgaWYgKFJlY2VpdmVT
dGF0dXMgIT0gVFJMTERfUkNWX05PX0RBVEEpIHsNCiAgICAgICAgICAgICAg
ICBwcmludGYoIm9sdHIlZDogcmVjZWl2ZSBlcnJvci4gKFJlY2VpdmVTdGF0
dXM9JWQpXG4iLCBzYy0+dW5pdCwgUmVjZWl2ZVN0YXR1cyk7DQogICAgICAg
ICAgICAgICAgaWZwLT5pZl9pZXJyb3JzKys7DQogICAgICAgICAgICB9DQog
ICAgICAgIH0NCm91dDoNCiAgICAgICAgd2hpbGUgKEZyYWdtZW50Q291bnQg
PiAwKSB7DQogICAgICAgICAgICByYyA9IFRSbGxkUmVjZWl2ZUZyYWdtZW50
KHNjLT5UUmxsZEFkYXB0ZXIsIA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICh2b2lkICopc2MtPnJ4X2J1ZmZlcltzYy0+cnhfbmV4
dCAmIFJYX0xJU1RfTUFTS10uYnVmLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGt2dG9wKHNjLT5yeF9idWZmZXJbc2MtPnJ4X25l
eHQgJiBSWF9MSVNUX01BU0tdLmJ1ZiksDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUlhfQlVGRkVSX0xFTiwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKXNjLT5yeF9idWZm
ZXJbc2MtPnJ4X25leHQgJiBSWF9MSVNUX01BU0tdLmluZGV4KTsNCiAgICAg
ICAgICAgIGlmIChyYyA9PSBUUkxMRF9SRUNFSVZFX09LKSB7DQogICAgICAg
ICAgICAgICAgc2MtPnJ4X25leHQrKzsNCiAgICAgICAgICAgICAgICBGcmFn
bWVudENvdW50LS07DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAg
ICAgICAgIHByaW50Zigib2x0ciVkOiBBZGFwdGVyIHJlZnVzZWQgZnJhZ21l
bnQgKCVkKS5cbiIsIHNjLT51bml0LCBzYy0+cnhfbmV4dCAtIDEpOw0KICAg
ICAgICAgICAgICAgIHNjLT5yeF9hdmFpbCArPSBGcmFnbWVudENvdW50Ow0K
ICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgfQ0KICAgICAg
ICB9DQogICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBIYXJkd2FyZSBiZWluZyBjbG9zZWQgKi8NCiAgICAgICAg
aWYgKGZyYWcgIT0gc2MtPnJ4X2J1ZmZlcltzYy0+cnhfbmV4dCsrICYgUlhf
TElTVF9NQVNLXS5idWYpIHsNCiAgICAgICAgICAgIHByaW50Zigib2x0ciVk
OiByaW5nIGJ1ZmZlciBwb2ludGVyIGJsb3duXG4iLCBzYy0+dW5pdCk7ICAN
CiAgICAgICAgfSAgICAgICAgICAgDQogICAgICAgIHNjLT5yeF9hdmFpbCAr
PSBGcmFnbWVudENvdW50Ow0KICAgIH0NCiAgICANCn0NCg0KDQovKg0KICog
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQTVcgR2x1ZSAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogKi8NCg0KI2lmbmRlZiBUUmxs
ZElubGluZUlPDQoNCnN0YXRpYyB2b2lkIA0KRHJpdmVyT3V0Qnl0ZShJT0Fk
ZHJlc3MsIHZhbHVlKQ0KICAgIHVuc2lnbmVkIHNob3J0IElPQWRkcmVzczsN
CiAgICB1bnNpZ25lZCBjaGFyIHZhbHVlOw0Kew0KICAgIG91dGIoSU9BZGRy
ZXNzLCB2YWx1ZSk7DQp9DQoNCnN0YXRpYyB2b2lkDQpEcml2ZXJPdXRXb3Jk
KElPQWRkcmVzcywgdmFsdWUpDQogICAgdW5zaWduZWQgc2hvcnQgSU9BZGRy
ZXNzOw0KICAgIHVuc2lnbmVkIHNob3J0IHZhbHVlOw0Kew0KICAgIG91dHco
SU9BZGRyZXNzLCB2YWx1ZSk7DQp9DQoNCnN0YXRpYyB2b2lkDQpEcml2ZXJP
dXREd29yZChJT0FkZHJlc3MsIHZhbHVlKQ0KICAgIHVuc2lnbmVkIHNob3J0
IElPQWRkcmVzczsNCiAgICB1bnNpZ25lZCBsb25nIHZhbHVlOw0Kew0KICAg
IG91dGwoSU9BZGRyZXNzLCB2YWx1ZSk7DQp9DQoNCnN0YXRpYyB2b2lkDQpE
cml2ZXJSZXBPdXRCeXRlKElPQWRkcmVzcywgRGF0YVBvaW50ZXIsIEJ5dGVD
b3VudCkNCiAgICB1bnNpZ25lZCBzaG9ydCBJT0FkZHJlc3M7DQogICAgdW5z
aWduZWQgY2hhciAgKkRhdGFQb2ludGVyOw0KICAgIGludCBCeXRlQ291bnQ7
DQp7DQogICAgb3V0c2IoSU9BZGRyZXNzLCAodm9pZCAqKURhdGFQb2ludGVy
LCBCeXRlQ291bnQpOw0KfQ0KDQpzdGF0aWMgdm9pZA0KRHJpdmVyUmVwT3V0
V29yZChJT0FkZHJlc3MsIERhdGFQb2ludGVyLCBXb3JkQ291bnQpDQogICAg
dW5zaWduZWQgc2hvcnQgSU9BZGRyZXNzOw0KICAgIHVuc2lnbmVkIHNob3J0
ICpEYXRhUG9pbnRlcjsNCiAgICBpbnQgV29yZENvdW50Ow0Kew0KICAgIG91
dHN3KElPQWRkcmVzcywgKHZvaWQgKilEYXRhUG9pbnRlciwgV29yZENvdW50
KTsNCn0NCg0Kc3RhdGljIHZvaWQNCkRyaXZlclJlcE91dER3b3JkKElPQWRk
cmVzcywgRGF0YVBvaW50ZXIsIERXb3JkQ291bnQpDQogICAgdW5zaWduZWQg
c2hvcnQgSU9BZGRyZXNzOw0KICAgIHVuc2lnbmVkIGxvbmcgICpEYXRhUG9p
bnRlcjsNCiAgICBpbnQgRFdvcmRDb3VudDsNCnsNCiAgICBvdXRzbChJT0Fk
ZHJlc3MsICh2b2lkICopRGF0YVBvaW50ZXIsIERXb3JkQ291bnQpOw0KfQ0K
DQpzdGF0aWMgdW5zaWduZWQgY2hhcg0KRHJpdmVySW5CeXRlKElPQWRkcmVz
cykNCiAgICB1bnNpZ25lZCBzaG9ydCBJT0FkZHJlc3M7DQp7DQogICAgcmV0
dXJuKGluYihJT0FkZHJlc3MpKTsNCn0NCg0Kc3RhdGljIHVuc2lnbmVkIHNo
b3J0DQpEcml2ZXJJbldvcmQoSU9BZGRyZXNzKQ0KICAgIHVuc2lnbmVkIHNo
b3J0IElPQWRkcmVzczsNCnsNCiAgIHJldHVybihpbncoSU9BZGRyZXNzKSk7
DQp9DQoNCnN0YXRpYyB1bnNpZ25lZCBsb25nDQpEcml2ZXJJbkR3b3JkKElP
QWRkcmVzcykNCiAgICB1bnNpZ25lZCBzaG9ydCBJT0FkZHJlc3M7DQp7DQog
ICAgcmV0dXJuKGlubChJT0FkZHJlc3MpKTsNCn0NCg0Kc3RhdGljIHZvaWQN
CkRyaXZlclJlcEluQnl0ZShJT0FkZHJlc3MsIERhdGFQb2ludGVyLCBCeXRl
Q291bnQpDQogICAgdW5zaWduZWQgc2hvcnQgSU9BZGRyZXNzOw0KICAgIHVu
c2lnbmVkIGNoYXIgICpEYXRhUG9pbnRlcjsNCiAgICBpbnQgQnl0ZUNvdW50
Ow0Kew0KICAgIGluc2IoSU9BZGRyZXNzLCAodm9pZCAqKURhdGFQb2ludGVy
LCBCeXRlQ291bnQpOw0KfQ0KDQpzdGF0aWMgdm9pZA0KRHJpdmVyUmVwSW5X
b3JkKElPQWRkcmVzcywgRGF0YVBvaW50ZXIsIFdvcmRDb3VudCkNCiAgICB1
bnNpZ25lZCBzaG9ydCBJT0FkZHJlc3M7DQogICAgdW5zaWduZWQgc2hvcnQg
KkRhdGFQb2ludGVyOw0KICAgIGludCBXb3JkQ291bnQ7DQp7DQogICAgaW5z
dyhJT0FkZHJlc3MsICh2b2lkICopRGF0YVBvaW50ZXIsIFdvcmRDb3VudCk7
DQp9DQpzdGF0aWMgdm9pZA0KRHJpdmVyUmVwSW5Ed29yZChJT0FkZHJlc3Ms
IERhdGFQb2ludGVyLCBEV29yZENvdW50KQ0KICAgIHVuc2lnbmVkIHNob3J0
IElPQWRkcmVzczsNCiAgICB1bnNpZ25lZCBsb25nICAqRGF0YVBvaW50ZXI7
DQogICAgaW50IERXb3JkQ291bnQ7DQp7DQogICAgaW5zbChJT0FkZHJlc3Ms
ICh2b2lkICopRGF0YVBvaW50ZXIsIERXb3JkQ291bnQpOw0KfQ0KI2VuZGlm
IC8qIFRSbGxkSW5saW5lSU8gKi8NCg0KI2VuZGlmIC8qIE5PTFRSICovDQo=
--0-665532085-914957328=:7114
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="if_media.h.patch"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.BSF.4.05.9812291348481.7114@heathers.stdio.com>
Content-Description: if_media patches
Content-Disposition: ATTACHMENT; FILENAME="if_media.h.patch"

KioqIGlmX21lZGlhLmgub3JpZwlGcmkgRGVjIDExIDEwOjU1OjMyIDE5OTgN
Ci0tLSBpZl9tZWRpYS5oCUZyaSBEZWMgMTEgMTc6MTQ6MDMgMTk5OA0KKioq
KioqKioqKioqKioqDQoqKiogMTM3LDE0NSAqKioqDQotLS0gMTM3LDE1MCAt
LS0tDQogICNkZWZpbmUJSUZNX1RPS19TVFAxNgk0CQkvKiBTaGllbGRlZCB0
d2lzdGVkIHBhaXIgMTZtIC0gREI5ICovDQogICNkZWZpbmUJSUZNX1RPS19V
VFA0CTUJCS8qIFVuc2hpZWxkZWQgdHdpc3RlZCBwYWlyIDRtIC0gUko0NSAq
Lw0KICAjZGVmaW5lCUlGTV9UT0tfVVRQMTYJNgkJLyogVW5zaGllbGRlZCB0
d2lzdGVkIHBhaXIgMTZtIC0gUko0NSAqLw0KKyAjZGVmaW5lIElGTV9UT0tf
U1RQMTAwICA3CQkvKiBTaGllbGRlZCB0d2lzdGVkIHBhaXIgMTAwbSAtIERC
OSAqLw0KKyAjZGVmaW5lIElGTV9UT0tfVVRQMTAwICA4CQkvKiBVbnNoaWVs
ZGVkIHR3aXN0ZWQgcGFpciAxMDBtIC0gUko0NSAqLw0KICAjZGVmaW5lCUlG
TV9UT0tfRVRSCTB4MDAwMDAyMDAJLyogRWFybHkgdG9rZW4gcmVsZWFzZSAq
Lw0KICAjZGVmaW5lCUlGTV9UT0tfU1JDUlQJMHgwMDAwMDQwMAkvKiBFbmFi
bGUgc291cmNlIHJvdXRpbmcgZmVhdHVyZXMgKi8NCiAgI2RlZmluZQlJRk1f
VE9LX0FMTFIJMHgwMDAwMDgwMAkvKiBBbGwgcm91dGVzIC8gU2luZ2xlIHJv
dXRlIGJjYXN0ICovDQorICNkZWZpbmUgSUZNX1RPS19EVFIJMHgwMDAwMjAw
MAkvKiBEZWRpY2F0ZWQgdG9rZW4gcmluZyAqLw0KKyAjZGVmaW5lIElGTV9U
T0tfQ0xBU1NJQwkweDAwMDA0MDAwCS8qIENsYXNzaWMgdG9rZW4gcmluZyAq
Lw0KKyAjZGVmaW5lIElGTV9UT0tfQVVUTwkweDAwMDA4MDAwCS8qIEF1dG9t
YXRpYyBEZWRpY2F0ZS9DbGFzc2ljIHRva2VuIHJpbmcgKi8NCiAgDQogIC8q
DQogICAqIEZEREkNCioqKioqKioqKioqKioqKg0KKioqIDE4NiwxOTQgKioq
Kg0KICAvKg0KICAgKiBNYWNyb3MgdG8gZXh0cmFjdCB2YXJpb3VzIGJpdHMg
b2YgaW5mb3JtYXRpb24gZnJvbSB0aGUgbWVkaWEgd29yZC4NCiAgICovDQoh
ICNkZWZpbmUJSUZNX1RZUEUoeCkJKCh4KSAmIElGTV9OTUFTSykNCiEgI2Rl
ZmluZQlJRk1fU1VCVFlQRSh4KQkoKHgpICYgSUZNX1RNQVNLKQ0KISAjZGVm
aW5lCUlGTV9JTlNUKHgpCSgoKHgpICYgSUZNX0lNQVNLKSA+PiBJRk1fSVNI
SUZUKQ0KICANCiAgLyoNCiAgICogTmV0QlNEIGV4dGVuc2lvbiBub3QgZGVm
aW5lZCBpbiB0aGUgQlNESSBBUEkuICBUaGlzIGlzIHVzZWQgaW4gdmFyaW91
cw0KLS0tIDE5MSwyMDAgLS0tLQ0KICAvKg0KICAgKiBNYWNyb3MgdG8gZXh0
cmFjdCB2YXJpb3VzIGJpdHMgb2YgaW5mb3JtYXRpb24gZnJvbSB0aGUgbWVk
aWEgd29yZC4NCiAgICovDQohICNkZWZpbmUJSUZNX1RZUEUoeCkgICAgICAg
ICAoKHgpICYgSUZNX05NQVNLKQ0KISAjZGVmaW5lCUlGTV9TVUJUWVBFKHgp
ICAgICAgKCh4KSAmIElGTV9UTUFTSykNCiEgI2RlZmluZSBJRk1fVFlQRV9P
UFRJT05TKHgpICgoeCkgJiBJRk1fT01BU0spDQohICNkZWZpbmUJSUZNX0lO
U1QoeCkgICAgICAgICAoKCh4KSAmIElGTV9JTUFTSykgPj4gSUZNX0lTSElG
VCkNCiAgDQogIC8qDQogICAqIE5ldEJTRCBleHRlbnNpb24gbm90IGRlZmlu
ZWQgaW4gdGhlIEJTREkgQVBJLiAgVGhpcyBpcyB1c2VkIGluIHZhcmlvdXMN
CioqKioqKioqKioqKioqKg0KKioqIDI0NSwyNTAgKioqKg0KLS0tIDI1MSwy
NTggLS0tLQ0KICAJeyBJRk1fVE9LX1NUUDE2LCAiREI5LzE2TWJpdCIgfSwJ
CQkJXA0KICAJeyBJRk1fVE9LX1VUUDQsCSJVVFAvNE1iaXQiIH0sCQkJCQlc
DQogIAl7IElGTV9UT0tfVVRQMTYsICJVVFAvMTZNYml0IiB9LAkJCQlcDQor
IAl7IElGTV9UT0tfU1RQMTAwLCAiU1RQLzEwME1iaXQiIH0sCQkJCVwNCisg
CXsgSUZNX1RPS19VVFAxMDAsICJVVFAvMTAwTWJpdCIgfSwJCQkJXA0KICAJ
eyAwLCBOVUxMIH0sCQkJCQkJCVwNCiAgfQ0KICANCioqKioqKioqKioqKioq
Kg0KKioqIDI1MywyNTggKioqKg0KLS0tIDI2MSwyNjggLS0tLQ0KICAJeyBJ
Rk1fVE9LX1NUUDE2LCAiMTZTVFAiIH0sCQkJCQlcDQogIAl7IElGTV9UT0tf
VVRQNCwJIjRVVFAiIH0sCQkJCQlcDQogIAl7IElGTV9UT0tfVVRQMTYsICIx
NlVUUCIgfSwJCQkJCVwNCisgCXsgSUZNX1RPS19TVFAxMDAsICIxMDBTVFAi
IH0sCQkJCQlcDQorIAl7IElGTV9UT0tfVVRQMTAwLCAiMTAwVVRQIiB9LAkJ
CQkJXA0KICAJeyAwLCBOVUxMIH0sCQkJCQkJCVwNCiAgfQ0KICANCioqKioq
KioqKioqKioqKg0KKioqIDI2MCwyNjUgKioqKg0KLS0tIDI3MCwyNzggLS0t
LQ0KICAJeyBJRk1fVE9LX0VUUiwJIkVhcmx5VG9rZW5SZWxlYXNlIiB9LAkJ
CQlcDQogIAl7IElGTV9UT0tfU1JDUlQsICJTb3VyY2VSb3V0aW5nIiB9LAkJ
CQlcDQogIAl7IElGTV9UT0tfQUxMUiwJIkFsbFJvdXRlcyIgfSwJCQkJCVwN
CisgCXsgSUZNX1RPS19EVFIsCSJEZWRpY2F0ZWQiIH0sCQkJCQlcDQorIAl7
IElGTV9UT0tfQ0xBU1NJQywiQ2xhc3NpYyIgfSwJCQkJCVwNCisgCXsgSUZN
X1RPS19BVVRPLAkiICIgfSwJCQkJCQlcDQogIAl7IDAsIE5VTEwgfSwJCQkJ
CQkJXA0KICB9DQogIA0K
--0-665532085-914957328=:7114--

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.05.9812311032240.5164-300000>