Re: Spread 2.5

Ed Holyat <[email protected]> Wed, 3 Sep 2014 12:45:17 +0000
Newsgroups gmane.network.spread.user
Message-ID <69414ba379bd4edb951baeeba250e1c7@BY2PR0201MB0709.namprd02.prod.outlook.com>
--_002_69414ba379bd4edb951baeeba250e1c7BY2PR0201MB0709namprd02_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

John, we ran into a similar problem in our older version of spread where th=
e token was beating the data to the next daemon and caused high retransmiss=
ions requests.  The safest fix we could think of is to resend the token bac=
k to the daemon which allowed the data to be consumed and avoid the retrans=
mission.   This was found using multicast on VM's, but, maybe this might gi=
ve insight into this issue.

-----Original Message-----
From: John Lane Schultz [mailto:[email protected]]=20
Sent: Tuesday, September 02, 2014 11:23 PM
To: Spread Users
Subject: Re: [Spread-users] Spread 2.5

>From the logs, can you tell us what state the daemons were in when this wa=
s occurring?  It could be a bug.

Cheers!

-----
John Lane Schultz
Spread Concepts LLC
Cell: 443 838 2200

On Sep 2, 2014, at 10:43 PM, Yair Amir <[email protected]> wrote:

I have a setup with 6 devices (running spread 4.4.0 on linux) with each one=
 configured on a separate segment because they are located on separate subn=
ets. Multicast and broadcast is not available so I configured the segments =
as follow
		=09
Spread_Segment  172.23.1.1 {
 node1   172.23.1.1
}

Spread_Segment  172.23.2.1 {
 node2   172.23.2.1
}

Spread_Segment  172.23.3.1 {
node3   172.23.3.1
}

Spread_Segment  172.23.4.1 {
 node4   172.23.4.1
}

Spread_Segment  172.23.5.1 {
 node5   172.23.5.1
}

Spread_Segment  172.23.6.1 {
 node6   172.23.6.1
}

Everything works perfectly 99.999%  of the time but it happened a few times=
 that we had a situation where all the communication between the nodes were=
 stalled and looking at spmonitor we discovered that some daemon were const=
antly retransmitting.  There was no way to get out of this mode besides res=
tarting the daemon. During that time all communication between the nodes we=
re work fine on all other ports (ping, 22, http, and some other udp port th=
at we use).=20

My Questions are:
- Why would that happen ?
- Is there a way to detect it and to resolve it without restarting the daem=
on ?

Thanks=20

Claude
_______________________________________________
Spread-users mailing list
[email protected]
http://lists.spread.org/mailman/listinfo/spread-users


_______________________________________________
Spread-users mailing list
[email protected]
http://lists.spread.org/mailman/listinfo/spread-users

--_002_69414ba379bd4edb951baeeba250e1c7BY2PR0201MB0709namprd02_
Content-Type: text/plain; name="#ediff.txt"
Content-Description: #ediff.txt
Content-Disposition: attachment; filename="#ediff.txt"; size=33336;
	creation-date="Wed, 03 Sep 2014 12:39:38 GMT";
	modification-date="Thu, 24 Jan 2013 21:12:34 GMT"
Content-Transfer-Encoding: base64

SW5kZXg6IHNwcmVhZG1hcC9zcHJlYWRfc3JjL3NwcmVhZDRfb2xmL2RhZW1vbi9kYXRhX2xpbmsu
Yw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvbWFzdGVyL29sZi9lY29tL3NwcmVhZG1hcC9z
cHJlYWRfc3JjL3NwcmVhZDRfb2xmL2RhZW1vbi9kYXRhX2xpbmsuYyx2DQpyZXRyaWV2aW5nIHJl
dmlzaW9uIDEuNg0KZGlmZiAtYiAtYyAtMSAtMSAtcjEuNiBkYXRhX2xpbmsuYw0KKioqIHNwcmVh
ZG1hcC9zcHJlYWRfc3JjL3NwcmVhZDRfb2xmL2RhZW1vbi9kYXRhX2xpbmsuYwkyMSBKdWwgMjAw
OSAyMDo0MDoyMyAtMDAwMAkxLjYNCi0tLSBzcHJlYWRtYXAvc3ByZWFkX3NyYy9zcHJlYWQ0X29s
Zi9kYWVtb24vZGF0YV9saW5rLmMJMjQgSmFuIDIwMTMgMjI6MTI6MjQgLTAwMDANCioqKioqKioq
KioqKioqKg0KKioqIDUwLDg0ICoqKioNCi0tLSA1MCwxMTUgLS0tLQ0KICAjaW5jbHVkZSAgICAg
ICAgPGVycm5vLmg+DQogIA0KICAjZW5kaWYJLyogQVJDSF9QQ19XSU45NSAqLw0KICANCiAgI2lu
Y2x1ZGUgPHN0cmluZy5oPg0KICAjaW5jbHVkZSA8YXNzZXJ0Lmg+DQogICNpbmNsdWRlICJkYXRh
X2xpbmsuaCINCiAgI2luY2x1ZGUgInN0YXR1cy5oIg0KICAjaW5jbHVkZSAiYWxhcm0uaCINCiAg
I2luY2x1ZGUgInNwX2V2ZW50cy5oIiAvKiBmb3Igc3BfdGltZSAqLw0KICANCisgc3RhdGljIHZv
aWQgc2V0X2xhcmdlX3NvY2tldF9idWZmZXJzKGludCBzKQ0KKyB7DQorICAgICBpbnQgaSwgb24s
IHJldDsNCisgICAgIHNvY2tvcHRfbGVuX3Qgb25sZW47DQorIA0KKyAgICAgZm9yKCBpPTEwOyBp
IDw9IDIwMDsgaSs9NSApDQorICAgICB7DQorICAgICAgICAgb24gPSAxMDI0Kmk7DQorIA0KKyAg
ICAgICAgIHJldCA9IHNldHNvY2tvcHQoIHMsIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgKHZvaWQg
Kikmb24sIDQpOw0KKyAgICAgICAgIGlmIChyZXQgPCAwICkgYnJlYWs7DQorICAgICAgICAgDQor
ICAgICAgICAgcmV0ID0gc2V0c29ja29wdCggcywgU09MX1NPQ0tFVCwgU09fUkNWQlVGLCAodm9p
ZCAqKSZvbiwgNCk7DQorICAgICAgICAgaWYgKHJldCA8IDAgKSBicmVhazsNCisgCQ0KKyAgICAg
ICAgIG9ubGVuID0gc2l6ZW9mKG9uKTsNCisgICAgICAgICByZXQ9IGdldHNvY2tvcHQoIHMsIFNP
TF9TT0NLRVQsIFNPX1NOREJVRiwgKHZvaWQgKikmb24sICZvbmxlbiApOw0KKyAgICAgICAgIGlm
KCBvbiA8IGkqMTAyNCApIGJyZWFrOw0KKyAgICAgICAgIEFsYXJtcCggU1BMT0dfSU5GTywgU0VT
U0lPTiwgInNldF9sYXJnZV9zb2NrZXRfYnVmZmVyczogc2V0IHNuZGJ1ZiAlZCwgcmV0IGlzICVk
XG4iLCBvbiwgcmV0ICk7DQorICAgICAgICAgDQorICAgICAgICAgb25sZW4gPSBzaXplb2Yob24p
Ow0KKyAgICAgICAgIHJldD0gZ2V0c29ja29wdCggcywgU09MX1NPQ0tFVCwgU09fUkNWQlVGLCAo
dm9pZCAqKSZvbiwgJm9ubGVuICk7DQorICAgICAgICAgaWYoIG9uIDwgaSoxMDI0ICkgYnJlYWs7
DQorICAgICAgICAgQWxhcm1wKCBTUExPR19JTkZPLCBTRVNTSU9OLCAic2V0X2xhcmdlX3NvY2tl
dF9idWZmZXJzOiBzZXQgcmN2YnVmICVkLCByZXQgaXMgJWRcbiIsIG9uLCByZXQgKTsNCisgICAg
IH0NCisgICAgIEFsYXJtcCggU1BMT0dfSU5GTywgU0VTU0lPTiwgInNldF9sYXJnZV9zb2NrZXRf
YnVmZmVyczogc2V0IHNuZGJ1Zi9yY3ZidWYgdG8gJWRcbiIsIDEwMjQqKGktNSkgKTsNCisgfQ0K
KyANCisgDQogIGNoYW5uZWwJRExfaW5pdF9jaGFubmVsKCBpbnQzMiBjaGFubmVsX3R5cGUsIGlu
dDE2IHBvcnQsIGludDMyIG1jYXN0X2FkZHJlc3MsIGludDMyIGludGVyZmFjZV9hZGRyZXNzICkN
CiAgew0KICAJY2hhbm5lbAkJCWNoYW47DQogIAlzdHJ1Y3QgIHNvY2thZGRyX2luCXNvY19hZGRy
Ow0KICAJaW50CQkJb249MTsNCiAgICAgICAgICBpbnQJCQlpMSxpMixpMyxpNDsNCiAgI2lmZGVm
CUlQX01VTFRJQ0FTVF9UVEwNCiAgCXVuc2lnbmVkIGNoYXIJCXR0bF92YWw7DQogICNlbmRpZg0K
ICANCiAgCWlmKChjaGFuID0gc29ja2V0KEFGX0lORVQsIFNPQ0tfREdSQU0sIDApKSA9PSAtMSkN
CiAgCQlBbGFybSggRVhJVCwgIkRMX2luaXRfY2hhbm5lbDogc29ja2V0IGVycm9yIGZvciBwb3J0
ICVkXG4iLCBwb3J0ICk7DQogIA0KKyAJc2V0X2xhcmdlX3NvY2tldF9idWZmZXJzKGNoYW4pOw0K
KyANCiAgCWlmICggY2hhbm5lbF90eXBlICYgU0VORF9DSEFOTkVMICkNCiAgCXsNCiAgICAgICAg
ICAJaWYgKHNldHNvY2tvcHQoY2hhbiwgU09MX1NPQ0tFVCwgU09fQlJPQURDQVNULCAoY2hhciAq
KSZvbiwgDQogIAkJCSAgICAgICBzaXplb2Yob24pKSA8IDApIA0KICAgICAgICAgICAgICAJCUFs
YXJtKCBFWElULCAiRExfaW5pdF9jaGFubmVsOiBzZXRzb2Nrb3B0IGVycm9yIGZvciBwb3J0ICVk
XG4iLHBvcnQpOw0KICAJCUFsYXJtKCBEQVRBX0xJTkssICJETF9pbml0X2NoYW5uZWw6IHNldHNv
Y2tvcHQgZm9yIHNlbmQgYW5kIGJyb2FkY2FzdCB3ZW50IG9rXG4iKTsNCiAgDQogICNpZmRlZglJ
UF9NVUxUSUNBU1RfVFRMDQogIAkJLyogIyMjIElzbid0IHRoaXMgZm9yIHNlbmRpbmc/Pz8gKi8N
CiAgCQl0dGxfdmFsID0gMTsNCiAgICAgICAgICAJaWYgKHNldHNvY2tvcHQoY2hhbiwgSVBQUk9U
T19JUCwgSVBfTVVMVElDQVNUX1RUTCwgKHZvaWQgKikmdHRsX3ZhbCwgDQoqKioqKioqKioqKioq
KioNCioqKiAxMjcsMTYwICoqKioNCi0tLSAxNTgsMTkzIC0tLS0NCiAgCQlpNCA9ICBtY2FzdF9h
ZGRyZXNzICYgMHgwMDAwMDBmZjsNCiAgCQlpZiggaTEgPj0yMjQgJiYgaTEgPCAyNDAgKQ0KICAJ
CXsNCiAgI2lmZGVmIElQX01VTFRJQ0FTVF9UVEwNCiAgCQkJc3RydWN0IGlwX21yZXEJbXJlcTsN
CiAgDQogIAkJCW1yZXEuaW1yX211bHRpYWRkci5zX2FkZHIgPSBodG9ubCggbWNhc3RfYWRkcmVz
cyApOw0KICANCiAgCQkJLyogdGhlIGludGVyZmFjZSBjb3VsZCBiZSBjaGFuZ2VkIHRvIGEgc3Bl
Y2lmaWMgaW50ZXJmYWNlIGlmIG5lZWRlZCAqLw0KICAJCQltcmVxLmltcl9pbnRlcmZhY2Uuc19h
ZGRyID0gSU5BRERSX0FOWTsNCiAgDQorIAkJCQ0KICAgICAgICAgIAkJaWYgKHNldHNvY2tvcHQo
Y2hhbiwgSVBQUk9UT19JUCwgSVBfQUREX01FTUJFUlNISVAsICh2b2lkICopJm1yZXEsIA0KICAJ
CSAgICAgICAJCXNpemVvZihtcmVxKSkgPCAwKSANCiAgCQkJew0KICAJCQkgICBBbGFybSggRVhJ
VCwgIkRMX2luaXRfY2hhbm5lbDogcHJvYmxlbSBpbiBzZXRzb2Nrb3B0IHRvIG11bHRpY2FzdCBh
ZGRyZXNzICVkIGVycm5vWyVkXTo6JXNcbiIsIA0KICAJCQkgICAgICBtY2FzdF9hZGRyZXNzLCBz
b2NrX2Vycm5vLCBzb2NrX3N0cmVycm9yKHNvY2tfZXJybm8pICk7DQogIAkJCX0NCiAgDQogIAkJ
CUFsYXJtKCBEQVRBX0xJTkssICJETF9pbml0X2NoYW5uZWw6IEpvaW5pbmcgbXVsdGljYXN0IGFk
ZHJlc3MgJWQuJWQuJWQuJWQgd2VudCBva1xuIixpMSxpMixpMyxpNCk7DQogICNlbHNlCS8qIG5v
IG11bHRpY2FzdCBzdXBwb3J0ICovDQogIAkJCUFsYXJtKCBFWElULCAiRExfaW5pdF9jaGFubmVs
OiBPbGQgU3VuT1MgYXJjaGl0ZWN0dXJlIGRvZXMgbm90IHN1cHBvcnQgSVAgbXVsdGljYXN0OiAl
ZC4lZC4lZC4lZFxuIixpMSxpMixpMyxpNCk7DQogICNlbmRpZg0KICAJCX0gZWxzZSB7DQorIAkJ
CQ0KICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXRzb2Nrb3B0KGNoYW4sIFNPTF9TT0NLRVQs
IFNPX0JST0FEQ0FTVCwgKGNoYXIgKikmb24sIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVvZihvbikpIDwgMCkgDQogICAgICAgICAgICAgIAkJQWxhcm0oIEVYSVQs
ICJETF9pbml0X2NoYW5uZWw6IHNldHNvY2tvcHQgU09fQlJPQURDQVNUIGVycm9yIGZvciBwb3J0
ICVkLCBzb2NrZXQgJWRcbiIscG9ydCxjaGFuKTsNCiAgICAgICAgICAgICAgICAgICAgICBBbGFy
bSggREFUQV9MSU5LLCAiRExfaW5pdF9jaGFubmVsOiBzZXRzb2Nrb3B0IGZvciByZWN2IGFuZCBi
cm9hZGNhc3Qgd2VudCBva1xuIik7DQogICAgICAgICAgICAgICAgICB9DQogIAl9DQogIA0KICAJ
QWxhcm0oIERBVEFfTElOSywgIkRMX2luaXRfY2hhbm5lbDogd2VudCBvayBvbiBjaGFubmVsICVk
XG4iLGNoYW4pOw0KICAJcmV0dXJuICggY2hhbiApOw0KICB9DQogIA0KSW5kZXg6IHNwcmVhZG1h
cC9zcHJlYWRfc3JjL3NwcmVhZDRfb2xmL2RhZW1vbi9uZXRfdHlwZXMuaA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
UkNTIGZpbGU6IC9jdnMvbWFzdGVyL29sZi9lY29tL3NwcmVhZG1hcC9zcHJlYWRfc3JjL3NwcmVh
ZDRfb2xmL2RhZW1vbi9uZXRfdHlwZXMuaCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNA0KZGlm
ZiAtYiAtYyAtMSAtMSAtcjEuNCBuZXRfdHlwZXMuaA0KKioqIHNwcmVhZG1hcC9zcHJlYWRfc3Jj
L3NwcmVhZDRfb2xmL2RhZW1vbi9uZXRfdHlwZXMuaAk1IEphbiAyMDA3IDE1OjU0OjI1IC0wMDAw
CTEuNA0KLS0tIHNwcmVhZG1hcC9zcHJlYWRfc3JjL3NwcmVhZDRfb2xmL2RhZW1vbi9uZXRfdHlw
ZXMuaAkyNCBKYW4gMjAxMyAyMjoxMjoyNSAtMDAwMA0KKioqKioqKioqKioqKioqDQoqKiogMTIz
LDE0NCAqKioqDQotLS0gMTIzLDE0NSAtLS0tDQogIA0KICB0eXBlZGVmCXN0cnVjdAlkdW1teV90
b2tlbl9oZWFkZXIgew0KICAJaW50MzIJCXR5cGU7DQogIAlpbnQzMgkJdHJhbnNtaXRlcl9pZDsN
CiAgCWludDMyCQlzZXE7DQogIAlpbnQzMgkJcHJvY19pZDsNCiAgCWludDMyCQlhcnU7DQogICAg
ICAgICAgaW50MzIgICAgICAgICAgIGFydV9sYXN0X2lkOw0KICAJaW50MTYJCWZsb3dfY29udHJv
bDsNCiAgCWludDE2CQlydHJfbGVuOw0KICAgICAgICAgIGludDMyICAgICAgICAgICBjb25mX2hh
c2g7DQorIAlpbnQxNiAgICAgICByZXByb2Nlc3Npbmc7DQogIH0gdG9rZW5faGVhZGVyOw0KICAN
CiAgdHlwZWRlZgljaGFyICAgICAgIHRva2VuX2JvZHlbTUFYX1BBQ0tFVF9TSVpFLXNpemVvZih0
b2tlbl9oZWFkZXIpXTsNCiAgDQogIHR5cGVkZWYJc3RydWN0CWR1bW15X3JpbmdfcnRyIHsNCiAg
CW1lbWJlcnNoaXBfaWQJbWVtYl9pZDsNCiAgCWludDMyCQlwcm9jX2lkOw0KICAJaW50MTYJCXNl
Z19pbmRleDsNCiAgCWludDE2CQludW1fc2VxOw0KICB9IHJpbmdfcnRyOw0KICANCkluZGV4OiBz
cHJlYWRtYXAvc3ByZWFkX3NyYy9zcHJlYWQ0X29sZi9kYWVtb24vbmV0d29yay5jDQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQpSQ1MgZmlsZTogL2N2cy9tYXN0ZXIvb2xmL2Vjb20vc3ByZWFkbWFwL3NwcmVhZF9zcmMv
c3ByZWFkNF9vbGYvZGFlbW9uL25ldHdvcmsuYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQ0K
ZGlmZiAtYiAtYyAtMSAtMSAtcjEuNSBuZXR3b3JrLmMNCioqKiBzcHJlYWRtYXAvc3ByZWFkX3Ny
Yy9zcHJlYWQ0X29sZi9kYWVtb24vbmV0d29yay5jCTIxIEp1bCAyMDA5IDIwOjQwOjIzIC0wMDAw
CTEuNQ0KLS0tIHNwcmVhZG1hcC9zcHJlYWRfc3JjL3NwcmVhZDRfb2xmL2RhZW1vbi9uZXR3b3Jr
LmMJMjQgSmFuIDIwMTMgMjI6MTI6MjcgLTAwMDANCioqKioqKioqKioqKioqKg0KKioqIDYxLDgy
ICoqKioNCi0tLSA2MSw4NCAtLS0tDQogIHN0YXRpYwlpbnQJCU51bV9zZW5kX25lZWRlZDsNCiAg
c3RhdGljICBpbnQzMgkJU2VuZF9hZGRyZXNzW01BWF9TRUdNRU5UU107DQogIHN0YXRpYwlpbnQx
NgkJU2VuZF9wb3J0c1tNQVhfU0VHTUVOVFNdOw0KICANCiAgLyogIyMjIFBhY2s6IDMgbGluZXMg
Ki8NCiAgLyogR2xvYmFsIGluIGZ1bmN0aW9uIHNvIGJvdGggTmV0X3F1ZXVlX2JjYXN0IGFuZCBO
ZXRfZmx1c2hfYmNhc3QgY2FuIGFjY2VzcyB0aGVtICovDQogIHN0YXRpYyAgc3lzX3NjYXR0ZXIg
ICAgIFF1ZXVlX3NjYXQ7DQogIHN0YXRpYyAgaW50ICAgICAgICAgICAgIFF1ZXVlZF9ieXRlcyA9
IDA7DQogIHN0YXRpYyAgY29uc3QgY2hhciAgICAgIGFsaWduX3BhZGRpbmdbNF0gPSAicGFkZCI7
DQogIA0KICAvKiBhZGRyZXNzIGZvciB0b2tlbiBzZW5kaW5nIC0gd2hpY2ggaXMgYWx3YXlzIG5l
ZWRlZCAqLw0KKyANCisgc3RhdGljICBpbnQzMiAgICAgICBNeV9hZGRyZXNzOw0KICBzdGF0aWMJ
aW50MzIJCVRva2VuX2FkZHJlc3M7DQogIHN0YXRpYwlpbnQxNgkJVG9rZW5fcG9ydDsNCiAgDQog
IHN0YXRpYwljb25maWd1cmF0aW9uCU5ldF9tZW1iZXJzaGlwOw0KICBzdGF0aWMJaW50CQlTZWdt
ZW50X2xlYWRlcjsNCiAgDQogIHN0YXRpYyAJY29uZmlndXJhdGlvbgkqQ247DQogIHN0YXRpYwlw
cm9jCQlNeTsNCiAgDQogIHN0YXRpYwlpbnQxNgkJUGFydGl0aW9uW01BWF9QUk9DU19SSU5HXTsN
CiAgc3RhdGljCXNwX3RpbWUJCVBhcnRpdGlvbl90aW1lb3V0IAk9IHsgNjAsIDB9Ow0KKioqKioq
KioqKioqKioqDQoqKiogMjAyLDIyMyAqKioqDQotLS0gMjA0LDIyNyAtLS0tDQogIAkJTnVtX3Nl
bmRfbmVlZGVkKys7DQogIAkgICAgfQ0KICAJfQ0KICAJYXNzZXJ0KG15X25leHRfaW5kZXggIT0g
LTEpOw0KICAJZm9yKCBpPTA7IGkgPCBOdW1fc2VuZF9uZWVkZWQ7IGkrKyApDQogIAkJQWxhcm0o
IE5FVFdPUkssIA0KICAJCQkiTmV0X3NldF9tZW1iZXJzaGlwOiBTZW5kX2FkZHJbJWRdIGlzICgl
dS4ldS4ldS4ldTolZClcbiIsDQogICAgICAgICAgICAgICAgICAgICAgICAgaSwgSVAxKFNlbmRf
YWRkcmVzc1tpXSksIElQMihTZW5kX2FkZHJlc3NbaV0pLCBJUDMoU2VuZF9hZGRyZXNzW2ldKSwg
SVA0KFNlbmRfYWRkcmVzc1tpXSksIFNlbmRfcG9ydHNbaV0gKTsNCiAgDQogIAkvKiBDYWxjdWxh
dGUgd2hlcmUgdG8gc2VuZCB0aGUgdG9rZW4gKi8NCiAgCVRva2VuX2FkZHJlc3MgPSAwOw0KKyAJ
TXlfYWRkcmVzcyA9bXlfc2VnLnByb2NzW215X2luZGV4X2luX3NlZ10tPmlkOw0KKyANCiAgCWlm
KCBteV9pbmRleF9pbl9zZWcgPCBteV9zZWcubnVtX3Byb2NzLTEgKQ0KICAJew0KICAJCVRva2Vu
X2FkZHJlc3MgPSBteV9zZWcucHJvY3NbbXlfaW5kZXhfaW5fc2VnKzFdLT5pZDsNCiAgCQlUb2tl
bl9wb3J0ICAgID0gbXlfc2VnLnBvcnQrMTsNCiAgCX1lbHNlew0KICAJCS8qIEkgYW0gbGFzdCBp
biBteSBzZWdtZW50ICovDQogIAkJaWYoIE51bV9zZW5kX25lZWRlZCA9PSAwICkNCiAgCQl7DQog
IAkJCS8qIA0KICAJCQkgKiBNeSBzZWdtZW50IGlzIHRoZSBvbmx5IHNlZ21lbnQNCiAgCQkJICog
c2VuZGluZyB0b2tlbiB0byB0aGUgZmlyc3QgaW4gbXkgc2VnbWVudCANCioqKioqKioqKioqKioq
Kg0KKioqIDYzNCw2NjcgKioqKg0KLS0tIDYzOCw2OTAgLS0tLQ0KICB9DQogIA0KICBpbnQJTmV0
X3NlbmRfdG9rZW4oIHN5c19zY2F0dGVyICpzY2F0ICkNCiAgew0KICAJdG9rZW5faGVhZGVyCSp0
b2tlbl9wdHI7DQogIAlpbnQJCXJldDsNCiAgDQogIAl0b2tlbl9wdHIgPSAodG9rZW5faGVhZGVy
ICopc2NhdC0+ZWxlbWVudHNbMF0uYnVmOw0KICAJdG9rZW5fcHRyLT50eXBlID0gU2V0X2VuZGlh
biggdG9rZW5fcHRyLT50eXBlICk7DQogICAgICAgICAgdG9rZW5fcHRyLT5jb25mX2hhc2ggPSBD
bi0+aGFzaF9jb2RlOw0KICAJdG9rZW5fcHRyLT50cmFuc21pdGVyX2lkID0gTXkuaWQ7DQorIAl0
b2tlbl9wdHItPnJlcHJvY2Vzc2luZyA9IDA7DQorIA0KICANCiAgICAgICAgICBpZiAoIHRva2Vu
X3B0ci0+cnRyX2xlbiA+IChNQVhfUEFDS0VUX1NJWkUgLSBzaXplb2YodG9rZW5faGVhZGVyKSAp
ICkNCiAgICAgICAgICB7DQogICAgICAgICAgICAgIGlmICggSXNfZm9ybSggdG9rZW5fcHRyLT50
eXBlICkgKQ0KICAgICAgICAgICAgICAgICAgTWVtYl9wcmludF9mb3JtX3Rva2VuKCBzY2F0ICk7
DQogICAgICAgICAgICAgIEFsYXJtcCggU1BMT0dfRkFUQUwsIFBSSU5ULCAiTmV0X3NlbmRfdG9r
ZW46IFRva2VuIHRvbyBsb25nIGZvciBwYWNrZXQhXG4iKTsNCiAgICAgICAgICB9DQogIA0KICAJ
cmV0ID0gRExfc2VuZCggU2VuZF9jaGFubmVsLCBUb2tlbl9hZGRyZXNzLCBUb2tlbl9wb3J0LCBz
Y2F0ICk7DQogIAlyZXR1cm4gKCByZXQgKTsNCiAgfQ0KKyBpbnQJTmV0X3Jlc2VuZF9teXNlbGZf
dG9rZW4oIHN5c19zY2F0dGVyICpzY2F0ICkNCisgew0KKyAJDQorIAlpbnQJCXJldDsNCisgCXRv
a2VuX2hlYWRlcgkqdG9rZW5fcHRyOw0KICANCisgCXNpemVfdCBzYXZlZF9sZW4gPSBzY2F0LT5l
bGVtZW50c1sxXS5sZW47DQorIA0KKyAJdG9rZW5fcHRyID0gKHRva2VuX2hlYWRlciAqKXNjYXQt
PmVsZW1lbnRzWzBdLmJ1ZjsNCisgICAgIHRva2VuX3B0ci0+dHlwZSA9IFNldF9lbmRpYW4oIHRv
a2VuX3B0ci0+dHlwZSApOw0KKyAJdG9rZW5fcHRyLT5yZXByb2Nlc3NpbmcgPSAxOw0KKyANCisg
ICAgIHNjYXQtPmVsZW1lbnRzWzFdLmxlbiA9dG9rZW5fcHRyLT5ydHJfbGVuOw0KKyANCisgCXJl
dCA9IERMX3NlbmQoIFNlbmRfY2hhbm5lbCwgTXlfYWRkcmVzcywgVG9rZW5fcG9ydCwgc2NhdCAp
Ow0KKyAJc2NhdC0+ZWxlbWVudHNbMV0ubGVuID1zYXZlZF9sZW47DQorIAlyZXR1cm4gKCByZXQg
KTsNCisgfQ0KICBpbnQJTmV0X3JlY3ZfdG9rZW4oIGNoYW5uZWwgZmQsIHN5c19zY2F0dGVyICpz
Y2F0ICkNCiAgew0KICAJdG9rZW5faGVhZGVyCSp0b2tlbl9wdHI7DQogIAlpbnQJCXJldCwgaTsN
CiAgICAgICAgICBib29sICAgICAgICAgICAgY2hfZm91bmQ7DQogIA0KICAJdG9rZW5fcHRyID0g
KHRva2VuX2hlYWRlciAqKXNjYXQtPmVsZW1lbnRzWzBdLmJ1ZjsNCiAgDQogICAgICAgICAgY2hf
Zm91bmQgPSBGQUxTRTsNCiAgICAgICAgICBmb3IgKGkgPSAwIDsgaSA8IE51bV90b2tlbl9jaGFu
bmVsczsgaSsrKSB7DQogICAgICAgICAgICAgIGlmICggZmQgPT0gVG9rZW5fY2hhbm5lbFtpXSkg
ew0KKioqKioqKioqKioqKioqDQoqKiogODAyLDgxNCAqKioqDQotLS0gODI1LDgzOCAtLS0tDQog
IHZvaWQJRmxpcF90b2tlbiggdG9rZW5faGVhZGVyICp0b2tlbl9wdHIgKQ0KICB7DQogIAl0b2tl
bl9wdHItPnR5cGUJCSA9IEZsaXBfaW50MzIoIHRva2VuX3B0ci0+dHlwZSApOw0KICAJdG9rZW5f
cHRyLT50cmFuc21pdGVyX2lkID0gRmxpcF9pbnQzMiggdG9rZW5fcHRyLT50cmFuc21pdGVyX2lk
ICk7DQogIAl0b2tlbl9wdHItPnNlcQkJID0gRmxpcF9pbnQzMiggdG9rZW5fcHRyLT5zZXEgKTsN
CiAgCXRva2VuX3B0ci0+cHJvY19pZAkgPSBGbGlwX2ludDMyKCB0b2tlbl9wdHItPnByb2NfaWQg
KTsNCiAgCXRva2VuX3B0ci0+YXJ1CQkgPSBGbGlwX2ludDMyKCB0b2tlbl9wdHItPmFydSApOw0K
ICAJdG9rZW5fcHRyLT5hcnVfbGFzdF9pZAkgPSBGbGlwX2ludDMyKCB0b2tlbl9wdHItPmFydV9s
YXN0X2lkICk7DQogIAl0b2tlbl9wdHItPmZsb3dfY29udHJvbAkgPSBGbGlwX2ludDE2KCB0b2tl
bl9wdHItPmZsb3dfY29udHJvbCApOw0KICAJdG9rZW5fcHRyLT5ydHJfbGVuCSA9IEZsaXBfaW50
MTYoIHRva2VuX3B0ci0+cnRyX2xlbiApOw0KICAgICAgICAgIHRva2VuX3B0ci0+Y29uZl9oYXNo
ICAgICA9IEZsaXBfaW50MzIoIHRva2VuX3B0ci0+Y29uZl9oYXNoICk7DQorIAl0b2tlbl9wdHIt
PnJlcHJvY2Vzc2luZyA9IEZsaXBfaW50MTYoIHRva2VuX3B0ci0+cmVwcm9jZXNzaW5nICk7DQog
IH0NCiAgDQpJbmRleDogc3ByZWFkbWFwL3NwcmVhZF9zcmMvc3ByZWFkNF9vbGYvZGFlbW9uL25l
dHdvcmsuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvbWFzdGVyL29sZi9lY29tL3NwcmVh
ZG1hcC9zcHJlYWRfc3JjL3NwcmVhZDRfb2xmL2RhZW1vbi9uZXR3b3JrLmgsdg0KcmV0cmlldmlu
ZyByZXZpc2lvbiAxLjQNCmRpZmYgLWIgLWMgLTEgLTEgLXIxLjQgbmV0d29yay5oDQoqKiogc3By
ZWFkbWFwL3NwcmVhZF9zcmMvc3ByZWFkNF9vbGYvZGFlbW9uL25ldHdvcmsuaAk1IEphbiAyMDA3
IDE1OjU0OjI1IC0wMDAwCTEuNA0KLS0tIHNwcmVhZG1hcC9zcHJlYWRfc3JjL3NwcmVhZDRfb2xm
L2RhZW1vbi9uZXR3b3JrLmgJMjQgSmFuIDIwMTMgMjI6MTI6MjggLTAwMDANCioqKioqKioqKioq
KioqKg0KKioqIDQzLDY0ICoqKioNCi0tLSA0Myw2NSAtLS0tDQogIHZvaWQJTmV0X2luaXQoKTsN
CiAgdm9pZAlOZXRfc2V0X21lbWJlcnNoaXAoIGNvbmZpZ3VyYXRpb24gbWVtYiApOw0KICB2b2lk
ICAgIE5ldF9zaWduYWxfY29uZl9yZWxvYWQodm9pZCk7DQogIA0KICBpbnQJTmV0X2JjYXN0KCBz
eXNfc2NhdHRlciAqc2NhdCApOw0KICBpbnQgICAgIE5ldF9xdWV1ZV9iY2FzdChzeXNfc2NhdHRl
ciAqc2NhdCk7DQogIGludCAgICAgTmV0X2ZsdXNoX2JjYXN0KHZvaWQpOw0KICBpbnQJTmV0X3Nj
YXN0KCBpbnQxNiBzZWdfaW5kZXgsIHN5c19zY2F0dGVyICpzY2F0ICk7DQogIGludAlOZXRfdWNh
c3QoIGludDMyIHByb2NfaWQsIHN5c19zY2F0dGVyICpzY2F0ICk7DQogIGludAlOZXRfcmVjdiAo
IGNoYW5uZWwgZmQsIHN5c19zY2F0dGVyICpzY2F0ICk7DQogIGludAlOZXRfc2VuZF90b2tlbigg
c3lzX3NjYXR0ZXIgKnNjYXQgKTsNCisgaW50CU5ldF9yZXNlbmRfbXlzZWxmX3Rva2VuKCBzeXNf
c2NhdHRlciAqc2NhdCApOw0KICBpbnQJTmV0X3JlY3ZfdG9rZW4oIGNoYW5uZWwgZmQsIHN5c19z
Y2F0dGVyICpzY2F0ICk7DQogIGludAlOZXRfdWNhc3RfdG9rZW4oIGludDMyIHByb2NfaWQsIHN5
c19zY2F0dGVyICpzY2F0ICk7DQogIGNoYW5uZWwgKk5ldF9iY2FzdF9jaGFubmVsKHZvaWQpOw0K
ICBjaGFubmVsICpOZXRfdG9rZW5fY2hhbm5lbCh2b2lkKTsNCiAgdm9pZCAgICBOZXRfbnVtX2No
YW5uZWxzKGludCAqbnVtX2JjYXN0LCBpbnQgKm51bV90b2tlbik7DQogIA0KICB2b2lkICAgIE5l
dF9zZXRfcGFydGl0aW9uKGludDE2ICpuZXdfcGFydGl0aW9uKTsNCiAgdm9pZCAgICBOZXRfY2xl
YXJfcGFydGl0aW9uKHZvaWQpOw0KICANCiAgI2VuZGlmCS8qIElOQ19ORVRXT1JLICovIA0KICAN
CkluZGV4OiBzcHJlYWRtYXAvc3ByZWFkX3NyYy9zcHJlYWQ0X29sZi9kYWVtb24vcHJvdG9jb2wu
Yw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvbWFzdGVyL29sZi9lY29tL3NwcmVhZG1hcC9z
cHJlYWRfc3JjL3NwcmVhZDRfb2xmL2RhZW1vbi9wcm90b2NvbC5jLHYNCnJldHJpZXZpbmcgcmV2
aXNpb24gMS41DQpkaWZmIC1iIC1jIC0xIC0xIC1yMS41IHByb3RvY29sLmMNCioqKiBzcHJlYWRt
YXAvc3ByZWFkX3NyYy9zcHJlYWQ0X29sZi9kYWVtb24vcHJvdG9jb2wuYwkyMSBKdWwgMjAwOSAy
MDo0MDoyMyAtMDAwMAkxLjUNCi0tLSBzcHJlYWRtYXAvc3ByZWFkX3NyYy9zcHJlYWQ0X29sZi9k
YWVtb24vcHJvdG9jb2wuYwkyNCBKYW4gMjAxMyAyMjoxMjozMCAtMDAwMA0KKioqKioqKioqKioq
KioqDQoqKiogMTQ3LDE2OCAqKioqDQotLS0gMTQ3LDE2OSAtLS0tDQogIA0KICAJU2VuZF9wYWNr
Lm51bV9lbGVtZW50cyA9IDI7DQogIAlTZW5kX3BhY2suZWxlbWVudHNbMF0ubGVuID0gc2l6ZW9m
KHBhY2tldF9oZWFkZXIpOw0KICANCiAgCVRva2VuID0gKHRva2VuX2hlYWRlciAqKU5ld190b2tl
bi5lbGVtZW50c1swXS5idWY7DQogIAlMYXN0X3Rva2VuID0gbmV3KFRPS0VOX0hFQURfT0JKKTsN
CiAgCUxhc3RfdG9rZW4tPnR5cGUgPSAwOyANCiAgCUxhc3RfdG9rZW4tPnNlcSA9IDA7DQogIAlM
YXN0X3Rva2VuLT5hcnUgPSAwOw0KICAJTGFzdF90b2tlbi0+Zmxvd19jb250cm9sID0gMDsNCiAg
ICAgIExhc3RfdG9rZW4tPmNvbmZfaGFzaCA9IDA7DQorICAgICBMYXN0X3Rva2VuLT5yZXByb2Nl
c3NpbmcgPSAwOw0KICANCiAgCUh1cnJ5X3BhY2subnVtX2VsZW1lbnRzID0gMTsNCiAgCUh1cnJ5
X3BhY2suZWxlbWVudHNbMF0ubGVuID0gc2l6ZW9mKHBhY2tldF9oZWFkZXIpOw0KICAJSHVycnlf
cGFjay5lbGVtZW50c1swXS5idWYgPSAoY2hhciAqKSBuZXcoUEFDS0VUX0JPRFkpOw0KICAJSHVy
cnlfaGVhZCA9IChwYWNrZXRfaGVhZGVyICopSHVycnlfcGFjay5lbGVtZW50c1swXS5idWY7DQog
IAlIdXJyeV9oZWFkLT5wcm9jX2lkID0gTXkuaWQ7DQogIAlIdXJyeV9oZWFkLT50eXBlID0gSFVS
UllfVFlQRTsNCiAgDQogIAlOZXRfaW5pdCgpOw0KICANCiAgICAgICAgICBiY2FzdF9jaGFubmVs
cyA9IE5ldF9iY2FzdF9jaGFubmVsKCk7DQoqKioqKioqKioqKioqKioNCioqKiAyNDUsMjY2ICoq
KioNCi0tLSAyNDYsMjcwIC0tLS0NCiAgCXBhY2tldF9oZWFkZXIJKnBhY2tfcHRyOw0KICAJaW50
CQlwYWNrX2VudHJ5Ow0KICAJcHJvYwkJcDsNCiAgCWludAkJcmVjZWl2ZWRfYnl0ZXM7DQogICAg
ICAgICAgaW50ICAgICAgICAgICAgIHRvdGFsX2J5dGVzX3Byb2Nlc3NlZDsNCiAgICAgICAgICBp
bnQgICAgICAgICAgICAgbnVtX2J1ZmZlcmVkX3BhY2tldHM7DQogIAlpbnQJCWk7DQogIAlpbnQz
MgkJajsNCiAgCS8qIGludAkJcjEscjI7ICovDQogIA0KICAJcmVjZWl2ZWRfYnl0ZXMgPSBOZXRf
cmVjdiggZmQsICZOZXdfcGFjayApOw0KKyANCisgCQlBbGFybSggUFJPVE9DT0wsICJCUk9BRENB
U1Q6IFJlY2VpdmVkICVkLCB0b3RhbCBwcm9jZXNzZWQgJWRcbiIsIHJlY2VpdmVkX2J5dGVzLCB0
b3RhbF9ieXRlc19wcm9jZXNzZWQpOw0KKyANCiAgCS8qIE15IG93biBwYWNrZXQgb3IgZnJvbSBh
bm90aGVyIG1vbml0b3IgY29tcG9uZW50ICovDQogIAlpZiggcmVjZWl2ZWRfYnl0ZXMgPT0gMCAp
IHJldHVybjsNCiAgCS8qIHByb2JsZW0gaW4gcmVjZWl2aW5nICovDQogIAlpZiggcmVjZWl2ZWRf
Ynl0ZXMgPCAwICkgcmV0dXJuOw0KICANCiAgCXBhY2tfcHRyID0gKHBhY2tldF9oZWFkZXIgKilO
ZXdfcGFjay5lbGVtZW50c1swXS5idWY7DQogIA0KICAJLyogIyMjIFBhY2ssIHRoaXMgaGFzIHRv
IG1vdmUgZG93biB0byBuZXR3b3JrLmMNCiAgCSAqIGlmKCBwYWNrX3B0ci0+ZGF0YV9sZW4gK3Np
emVvZihwYWNrZXRfaGVhZGVyKSAhPSByZWNlaXZlZF9ieXRlcyApDQogIAkgKiB7DQogIAkgKglB
bGFybSggUFJJTlQsICJQcm90X2hhbmRsZV9iY2FzdDogcmVjZWl2ZWQgJWQsIHNob3VsZCBiZSAl
ZFxuIiwNCioqKioqKioqKioqKioqKg0KKioqIDMxOCwzMzkgKioqKg0KLS0tIDMyMiwzNDUgLS0t
LQ0KICAgICAgICAgICAgICAgICAgaWYoIENvbmZfbGVhZGVyKCBNZW1iX2FjdGl2ZV9wdHIoKSAp
ID09IE15LmlkICkgDQogICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgIEVfcXVldWUoIFByb3RfdG9rZW5faHVycnksIDAsIE5VTEwsIEh1cnJ5X3RpbWVvdXQgKTsN
CiAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogIA0KICAJLyogIyMjIFBhY2s6IG5l
eHQgNzAgbGluZXMgKGFsbW9zdCB0aWxsIHRoZSBlbmQgb2YgdGhlIHJvdXRpbmUpIGhhdmUgY2hh
bmdlZCAqLw0KICAgICAgICAgIEJ1ZmZlcmVkX3BhY2tldHNbMF0uaGVhZCA9IHBhY2tfcHRyOw0K
ICAgICAgICAgIEJ1ZmZlcmVkX3BhY2tldHNbMF0uYm9keSA9IChwYWNrZXRfYm9keSAqKU5ld19w
YWNrLmVsZW1lbnRzWzFdLmJ1ZjsNCiAgCXJlY2VpdmVkX2J5dGVzIC09IHNpemVvZihwYWNrZXRf
aGVhZGVyKTsNCiAgICAgICAgICB0b3RhbF9ieXRlc19wcm9jZXNzZWQgPSBwYWNrX3B0ci0+ZGF0
YV9sZW47DQorIA0KKyAJCUFsYXJtKCBQUk9UT0NPTCwgIkJST0FEQ0FTVDogUmVjZWl2ZWQgJWQs
IHRvdGFsIHByb2Nlc3NlZCAlZFxuIiwgcmVjZWl2ZWRfYnl0ZXMsIHRvdGFsX2J5dGVzX3Byb2Nl
c3NlZCk7DQogICAgICAgICAgLyogaWdub3JlIGFueSBhbGlnbm1lbnQgcGFkZGluZyAqLw0KICAg
ICAgICAgIHN3aXRjaCh0b3RhbF9ieXRlc19wcm9jZXNzZWQgJSA0KQ0KICAgICAgICAgIHsNCiAg
ICAgICAgICBjYXNlIDE6DQogICAgICAgICAgICAgICAgICB0b3RhbF9ieXRlc19wcm9jZXNzZWQr
KzsNCiAgICAgICAgICBjYXNlIDI6DQogICAgICAgICAgICAgICAgICB0b3RhbF9ieXRlc19wcm9j
ZXNzZWQrKzsNCiAgICAgICAgICBjYXNlIDM6DQogICAgICAgICAgICAgICAgICB0b3RhbF9ieXRl
c19wcm9jZXNzZWQrKzsNCiAgICAgICAgICBjYXNlIDA6DQogICAgICAgICAgICAgICAgICAvKiBh
bHJlYWR5IGFsaWduZWQgKi8NCioqKioqKioqKioqKioqKg0KKioqIDQ0Nyw0NjkgKioqKg0KICAJ
LyoJaW50CQlyMSxyMjsqLw0KICANCiAgCXJldCA9IE5ldF9yZWN2X3Rva2VuKCBmZCwgJk5ld190
b2tlbiApOw0KICAJLyogZnJvbSBhbm90aGVyIG1vbml0b3IgY29tcG9uZW50ICovDQogIAlpZigg
cmV0ID09IDAgKSByZXR1cm47DQogIA0KICAJLyogZGVsZXRlIHJhbmRvbQ0KICAJcjEgPSAoKC1N
eS5pZCklMTcpKzM7DQogIAlyMiA9IGdldF9yYW5kKCkgJSAocjErMyApOw0KICAJaWYgKCByMiA9
PSAwICkgcmV0dXJuOyAqLw0KICANCiEgICAgICAgICBBbGFybSggREVCVUcsICJSZWNlaXZlZCBU
b2tlblxuIik7DQogIAkvKiBjaGVjayBpZiBpdCBpcyBhIHJlZ3VsYXIgdG9rZW4gKi8NCiAgCWlm
KCBJc19mb3JtKCBUb2tlbi0+dHlwZSApICkNCiAgCXsNCiAgICAgICAgICAgICAgICAgIEFsYXJt
KFBST1RPQ09MLCAiaXQgaXMgYSBGb3JtIFRva2VuLlxuIik7DQogICAgICAgICAgICAgICAgICBN
ZW1iX2hhbmRsZV90b2tlbiggJk5ld190b2tlbiApOw0KICAJCXJldHVybjsNCiAgCX0NCiAgDQog
IAkvKiBUaGUgVmV0byBwcm9wZXJ0eSBmb3IgdG9rZW5zIC0gc3dhbGxvdyB0aGlzIHRva2VuICov
DQogIAlpZiggISBNZW1iX3Rva2VuX2FsaXZlKCkgKSB7DQogICAgICAgICAgICAgICAgICBBbGFy
bShQUk9UT0NPTCwgIlByb3RfaGFuZGxlX3Rva2VuOiBWZXRvIFByb3BlcnR5LiBNZW1iIG5vdCBh
bGl2ZS5cbiIpOw0KLS0tIDQ1Myw0NzYgLS0tLQ0KICAJLyoJaW50CQlyMSxyMjsqLw0KICANCiAg
CXJldCA9IE5ldF9yZWN2X3Rva2VuKCBmZCwgJk5ld190b2tlbiApOw0KICAJLyogZnJvbSBhbm90
aGVyIG1vbml0b3IgY29tcG9uZW50ICovDQogIAlpZiggcmV0ID09IDAgKSByZXR1cm47DQogIA0K
ICAJLyogZGVsZXRlIHJhbmRvbQ0KICAJcjEgPSAoKC1NeS5pZCklMTcpKzM7DQogIAlyMiA9IGdl
dF9yYW5kKCkgJSAocjErMyApOw0KICAJaWYgKCByMiA9PSAwICkgcmV0dXJuOyAqLw0KICANCiEg
CUFsYXJtKCBERUJVRywgIlJlY2VpdmVkIFRva2VuIEFSUSA6JWQsIFJldHJhbnMgJWQsIExhc3Qg
VG9rZW4gQXJxOiAlZCwgUmV0OiAlZCBTZXE6ICVkLCBNeSBTZXEgJWQsIHJlcHJvY2VzcyAlZFxu
IiwNCiEgCQlHZXRfYXJxKFRva2VuLT50eXBlKSwgR2V0X3JldHJhbnMoVG9rZW4tPnR5cGUpLCBH
ZXRfYXJxKExhc3RfdG9rZW4tPnR5cGUpLCByZXQsIFRva2VuLT5zZXEsIEhpZ2hlc3Rfc2VxLCBU
b2tlbi0+cmVwcm9jZXNzaW5nICk7DQogIAkvKiBjaGVjayBpZiBpdCBpcyBhIHJlZ3VsYXIgdG9r
ZW4gKi8NCiAgCWlmKCBJc19mb3JtKCBUb2tlbi0+dHlwZSApICkNCiAgCXsNCiAgICAgICAgICAg
ICAgICAgIEFsYXJtKFBST1RPQ09MLCAiaXQgaXMgYSBGb3JtIFRva2VuLlxuIik7DQogICAgICAg
ICAgICAgICAgICBNZW1iX2hhbmRsZV90b2tlbiggJk5ld190b2tlbiApOw0KICAJCXJldHVybjsN
CiAgCX0NCiAgDQogIAkvKiBUaGUgVmV0byBwcm9wZXJ0eSBmb3IgdG9rZW5zIC0gc3dhbGxvdyB0
aGlzIHRva2VuICovDQogIAlpZiggISBNZW1iX3Rva2VuX2FsaXZlKCkgKSB7DQogICAgICAgICAg
ICAgICAgICBBbGFybShQUk9UT0NPTCwgIlByb3RfaGFuZGxlX3Rva2VuOiBWZXRvIFByb3BlcnR5
LiBNZW1iIG5vdCBhbGl2ZS5cbiIpOw0KKioqKioqKioqKioqKioqDQoqKiogNDczLDU0MSAqKioq
DQogIAlpZiggcmV0ICE9IHNpemVvZih0b2tlbl9oZWFkZXIpICsgVG9rZW4tPnJ0cl9sZW4gKQ0K
ICAJew0KICAJCUFsYXJtKCBQUklOVCwgDQogIAkJICAgICJQcm90X2hhbmRsZV90b2tlbjogcmVj
diB0b2tlbiBsZW4gaXMgJWQsIHNob3VsZCBiZSAlZFxuIiwNCiAgCQkgICAgcmV0LHNpemVvZih0
b2tlbl9oZWFkZXIpICsgVG9rZW4tPnJ0cl9sZW4gKTsNCiAgCQlyZXR1cm47DQogIAl9DQogIA0K
ICAJaWYoICFTYW1lX2VuZGlhbiggVG9rZW4tPnR5cGUgKSApIA0KICAJCUZsaXBfdG9rZW5fYm9k
eSggTmV3X3Rva2VuLmVsZW1lbnRzWzFdLmJ1ZiwgVG9rZW4gKTsNCiAgDQogICAgICAgICAgLyog
RGVhbCB3aXRoIHdyYXBwaW5nIHNlcSB2YWx1ZXMgKDJeMzIpIGJ5IHRyaWdnZXJpbmcgYSBtZW1i
ZXJzaGlwIGJ5IGRyb3BwaW5nIHRoZSB0b2tlbiAqLw0KICAgICAgICAgIGlmKCAoTWVtYl9zdGF0
ZSgpICE9IEVWUyApICYmIChUb2tlbi0+c2VxID4gTUFYX1dSQVBfU0VRVUVOQ0VfVkFMVUUgKSAp
DQogICAgICAgICAgew0KICAgICAgICAgICAgICBBbGFybSggUFJPVE9DT0wsICJQcm90X2hhbmRs
ZV90b2tlbjogVG9rZW4gU2VxdWVuY2UgbnVtYmVyICglbGQpIGFwcHJvYWNoaW5nIDJeMzEgc28g
dHJpZ2dlciBtZW1iZXJzaGlwIHRvIHJlc2V0IGl0LlxuIiwgVG9rZW4tPnNlcSk7DQogIA0KICAg
ICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgfQ0KICANCiAgCWlmKCBDb25mX2xlYWRlcigg
TWVtYl9hY3RpdmVfcHRyKCkgKSA9PSBNeS5pZCApDQogIAl7DQogIAkJaWYoIEdldF9hcnEoVG9r
ZW4tPnR5cGUpICE9IEdldF9hcnEoTGFzdF90b2tlbi0+dHlwZSkgKQ0KICAJCXsNCiAgCQkgICAg
QWxhcm0oIFBST1RPQ09MLCANCiAgCQkJIlByb3RfaGFuZGxlX3Rva2VuOiBsZWFkZXIgc3dhbGxv
d2luZyB0b2tlbiAlZCAlZCAlZFxuIiwgDQogIAkJCSBHZXRfYXJxKFRva2VuLT50eXBlKSxHZXRf
cmV0cmFucyhUb2tlbi0+dHlwZSksR2V0X2FycShMYXN0X3Rva2VuLT50eXBlKSApOw0KICAJCSAg
ICAvKiByZWNlaXZlZCBkb3VibGUgdG9rZW4gLSBzd2FsbG93IGl0ICovDQogIAkJICAgIHJldHVy
bjsgDQogIAkJfQ0KISAJfWVsc2V7DQogIAkJaWYoIEdldF9hcnEoVG9rZW4tPnR5cGUpID09IEdl
dF9hcnEoTGFzdF90b2tlbi0+dHlwZSkgKQ0KICAJCXsNCiAgCQkgICAgaWYoIEdldF9yZXRyYW5z
KFRva2VuLT50eXBlKSA+IEdldF9yZXRyYW5zKExhc3RfdG9rZW4tPnR5cGUpICkNCiAgCQkgICAg
ew0KICAJCQl2YWwgPSBHZXRfcmV0cmFucyhUb2tlbi0+dHlwZSk7DQogIAkJCUxhc3RfdG9rZW4t
PnR5cGUgPSBTZXRfcmV0cmFucyhMYXN0X3Rva2VuLT50eXBlLHZhbCk7DQogIAkJCS8qIGFza2Vk
IHRvIHNlbmQgdG9rZW4gYWdhaW4gKGFsbW9zdCBsb3N0KSAqLw0KICAJCQlBbGFybSggUFJPVE9D
T0wsDQogIAkJCSAgICAiUHJvdF9oYW5kbGVfdG9rZW46IG5vdCBsZWFkZXIsIGFza2VkIHRvIHJl
dHJhbnMgJWQgJWRcbiIsDQogIAkJCQlHZXRfYXJxKFRva2VuLT50eXBlKSwgdmFsICk7DQogIAkJ
CVByb3RfdG9rZW5faHVycnkoKTsNCiEgCQkgICAgfWVsc2V7DQogIAkJCUFsYXJtKCBQUk9UT0NP
TCwNCiAgCQkJICAgICJQcm90X2hhbmRsZV90b2tlbjogbm90IGxlYWRlciwgc3dhbGxvdyBzYW1l
IHRva2VuICVkICVkXG4iLA0KICAJICAgCQkJR2V0X2FycShUb2tlbi0+dHlwZSksIEdldF9yZXRy
YW5zKFRva2VuLT50eXBlKSApOw0KICAJCSAgICB9DQogIAkJICAgIHJldHVybjsNCiAgDQohIAkJ
fSBlbHNlIGlmICggR2V0X2FycShUb2tlbi0+dHlwZSkgIT0gKCAoIEdldF9hcnEoIExhc3RfdG9r
ZW4tPnR5cGUgKSArIDEgKSAlIDB4MTAgKSApIHsNCiAgCQkgIEFsYXJtKCBQUk9UT0NPTCwgDQog
IAkJCSAiUHJvdF9oYW5kbGVfdG9rZW46IG5vdCBsZWFkZXIsIHN3YWxsb3dpbmcgdmVyeSBvdXRk
YXRlZCB0b2tlbjogQVJRKCVkKSBSRVRSQU5TKCVkKSB2cy4gTGFzdCBBUlEoJWQpXG4iLA0KICAJ
CQkgR2V0X2FycShUb2tlbi0+dHlwZSksIEdldF9yZXRyYW5zKFRva2VuLT50eXBlKSwgR2V0X2Fy
cShMYXN0X3Rva2VuLT50eXBlKSApOw0KICAJCSAgcmV0dXJuOw0KICANCiEgCQl9IGVsc2Ugew0K
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIEdldF9yZXRyYW5zKFRva2VuLT50eXBlKSA+
IDAgKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2xvYmFsU3RhdHVzLnRv
a2VuX2h1cnJ5Kys7DQogICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICAgIH0NCiAgCX0NCiAgCWlmKCBIaWdoZXN0X3NlcSA8IFRva2VuLT5zZXEgKSBIaWdoZXN0X3Nl
cSA9IFRva2VuLT5zZXE7DQogIAkJDQogIAkvKiBIYW5kbGUgcmV0cmFuc21pc3Npb25zICovDQog
IAludW1fcmV0cmFucyA9IEFuc3dlcl9yZXRyYW5zKCAmbmV3X3B0ciwgJnJ0cl9wcm9jX2lkLCAm
cnRyX3NlZ19pbmRleCApOw0KICAJR2xvYmFsU3RhdHVzLnJldHJhbnMgKz0gbnVtX3JldHJhbnM7
DQogIA0KICAJbmV3X3J0ciA9IE5ld190b2tlbi5lbGVtZW50c1sxXS5idWY7DQogIA0KICAJLyog
SGFuZGxlIG5ldyBwYWNrZXRzICovDQotLS0gNDgwLDU3MiAtLS0tDQogIAlpZiggcmV0ICE9IHNp
emVvZih0b2tlbl9oZWFkZXIpICsgVG9rZW4tPnJ0cl9sZW4gKQ0KICAJew0KICAJCUFsYXJtKCBQ
UklOVCwgDQogIAkJICAgICJQcm90X2hhbmRsZV90b2tlbjogcmVjdiB0b2tlbiBsZW4gaXMgJWQs
IHNob3VsZCBiZSAlZFxuIiwNCiAgCQkgICAgcmV0LHNpemVvZih0b2tlbl9oZWFkZXIpICsgVG9r
ZW4tPnJ0cl9sZW4gKTsNCiAgCQlyZXR1cm47DQogIAl9DQogIA0KICAJaWYoICFTYW1lX2VuZGlh
biggVG9rZW4tPnR5cGUgKSApIA0KICAJCUZsaXBfdG9rZW5fYm9keSggTmV3X3Rva2VuLmVsZW1l
bnRzWzFdLmJ1ZiwgVG9rZW4gKTsNCiAgDQorIAlpZiAoICFUb2tlbi0+cmVwcm9jZXNzaW5nKQ0K
KyAJew0KKyAJCWlmIChIaWdoZXN0X3NlcSA8IFRva2VuLT5zZXEgKQ0KKyAJCXsNCisgCQkJLypt
YXkgYmUgYSByYWNlIGNvbmRpdG9uIHRvIHJlc2VuZCB0byB5b3Vyc2VsZiBiZWZvcmUgYXNraW5n
IGZvciByZXRyYW5zbWlzc2lvbiovDQorICNpZmRlZiBfV0lOMzINCisgCQkJU2xlZXAoMSk7DQor
ICNlbmRpZg0KKyAJCQlOZXRfcmVzZW5kX215c2VsZl90b2tlbiggJk5ld190b2tlbiApOw0KKyAJ
CQlyZXR1cm47DQorIAkJfQ0KKyAJfQ0KKyAJDQorIA0KKyANCisgDQogICAgICAgICAgLyogRGVh
bCB3aXRoIHdyYXBwaW5nIHNlcSB2YWx1ZXMgKDJeMzIpIGJ5IHRyaWdnZXJpbmcgYSBtZW1iZXJz
aGlwIGJ5IGRyb3BwaW5nIHRoZSB0b2tlbiAqLw0KICAgICAgICAgIGlmKCAoTWVtYl9zdGF0ZSgp
ICE9IEVWUyApICYmIChUb2tlbi0+c2VxID4gTUFYX1dSQVBfU0VRVUVOQ0VfVkFMVUUgKSApDQog
ICAgICAgICAgew0KICAgICAgICAgICAgICBBbGFybSggUFJPVE9DT0wsICJQcm90X2hhbmRsZV90
b2tlbjogVG9rZW4gU2VxdWVuY2UgbnVtYmVyICglbGQpIGFwcHJvYWNoaW5nIDJeMzEgc28gdHJp
Z2dlciBtZW1iZXJzaGlwIHRvIHJlc2V0IGl0LlxuIiwgVG9rZW4tPnNlcSk7DQogIA0KICAgICAg
ICAgICAgICByZXR1cm47DQogICAgICAgICAgfQ0KICANCiAgCWlmKCBDb25mX2xlYWRlciggTWVt
Yl9hY3RpdmVfcHRyKCkgKSA9PSBNeS5pZCApDQogIAl7DQogIAkJaWYoIEdldF9hcnEoVG9rZW4t
PnR5cGUpICE9IEdldF9hcnEoTGFzdF90b2tlbi0+dHlwZSkgKQ0KICAJCXsNCiAgCQkgICAgQWxh
cm0oIFBST1RPQ09MLCANCiAgCQkJIlByb3RfaGFuZGxlX3Rva2VuOiBsZWFkZXIgc3dhbGxvd2lu
ZyB0b2tlbiAlZCAlZCAlZFxuIiwgDQogIAkJCSBHZXRfYXJxKFRva2VuLT50eXBlKSxHZXRfcmV0
cmFucyhUb2tlbi0+dHlwZSksR2V0X2FycShMYXN0X3Rva2VuLT50eXBlKSApOw0KICAJCSAgICAv
KiByZWNlaXZlZCBkb3VibGUgdG9rZW4gLSBzd2FsbG93IGl0ICovDQogIAkJICAgIHJldHVybjsg
DQogIAkJfQ0KISAJfQ0KISAJZWxzZQ0KISAJew0KICAJCWlmKCBHZXRfYXJxKFRva2VuLT50eXBl
KSA9PSBHZXRfYXJxKExhc3RfdG9rZW4tPnR5cGUpICkNCiAgCQl7DQogIAkJICAgIGlmKCBHZXRf
cmV0cmFucyhUb2tlbi0+dHlwZSkgPiBHZXRfcmV0cmFucyhMYXN0X3Rva2VuLT50eXBlKSApDQog
IAkJICAgIHsNCiAgCQkJdmFsID0gR2V0X3JldHJhbnMoVG9rZW4tPnR5cGUpOw0KICAJCQlMYXN0
X3Rva2VuLT50eXBlID0gU2V0X3JldHJhbnMoTGFzdF90b2tlbi0+dHlwZSx2YWwpOw0KICAJCQkv
KiBhc2tlZCB0byBzZW5kIHRva2VuIGFnYWluIChhbG1vc3QgbG9zdCkgKi8NCiAgCQkJQWxhcm0o
IFBST1RPQ09MLA0KICAJCQkgICAgIlByb3RfaGFuZGxlX3Rva2VuOiBub3QgbGVhZGVyLCBhc2tl
ZCB0byByZXRyYW5zICVkICVkXG4iLA0KICAJCQkJR2V0X2FycShUb2tlbi0+dHlwZSksIHZhbCAp
Ow0KICAJCQlQcm90X3Rva2VuX2h1cnJ5KCk7DQohIAkJICAgIH0NCiEgCQkJZWxzZXsNCiAgCQkJ
QWxhcm0oIFBST1RPQ09MLA0KICAJCQkgICAgIlByb3RfaGFuZGxlX3Rva2VuOiBub3QgbGVhZGVy
LCBzd2FsbG93IHNhbWUgdG9rZW4gJWQgJWRcbiIsDQogIAkgICAJCQlHZXRfYXJxKFRva2VuLT50
eXBlKSwgR2V0X3JldHJhbnMoVG9rZW4tPnR5cGUpICk7DQogIAkJICAgIH0NCiAgCQkgICAgcmV0
dXJuOw0KICANCiEgCQl9IA0KISAJCWVsc2UgaWYgKCBHZXRfYXJxKFRva2VuLT50eXBlKSAhPSAo
ICggR2V0X2FycSggTGFzdF90b2tlbi0+dHlwZSApICsgMSApICUgMHgxMCApICkNCiEgCQl7DQog
IAkJICBBbGFybSggUFJPVE9DT0wsIA0KICAJCQkgIlByb3RfaGFuZGxlX3Rva2VuOiBub3QgbGVh
ZGVyLCBzd2FsbG93aW5nIHZlcnkgb3V0ZGF0ZWQgdG9rZW46IEFSUSglZCkgUkVUUkFOUyglZCkg
dnMuIExhc3QgQVJRKCVkKVxuIiwNCiAgCQkJIEdldF9hcnEoVG9rZW4tPnR5cGUpLCBHZXRfcmV0
cmFucyhUb2tlbi0+dHlwZSksIEdldF9hcnEoTGFzdF90b2tlbi0+dHlwZSkgKTsNCiAgCQkgIHJl
dHVybjsNCiAgDQohIAkJfSANCiEgCQllbHNlDQohIAkJew0KICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIEdldF9yZXRyYW5zKFRva2VuLT50eXBlKSA+IDAgKSB7DQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR2xvYmFsU3RhdHVzLnRva2VuX2h1cnJ5Kys7DQogICAgICAg
ICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgDQogIAkJfQ0KICAJfQ0KICAJ
aWYoIEhpZ2hlc3Rfc2VxIDwgVG9rZW4tPnNlcSApIEhpZ2hlc3Rfc2VxID0gVG9rZW4tPnNlcTsN
CiAgCQkNCiAgCS8qIEhhbmRsZSByZXRyYW5zbWlzc2lvbnMgKi8NCiAgCW51bV9yZXRyYW5zID0g
QW5zd2VyX3JldHJhbnMoICZuZXdfcHRyLCAmcnRyX3Byb2NfaWQsICZydHJfc2VnX2luZGV4ICk7
DQogIAlHbG9iYWxTdGF0dXMucmV0cmFucyArPSBudW1fcmV0cmFuczsNCiAgDQogIAluZXdfcnRy
ID0gTmV3X3Rva2VuLmVsZW1lbnRzWzFdLmJ1ZjsNCiAgDQogIAkvKiBIYW5kbGUgbmV3IHBhY2tl
dHMgKi8NCioqKioqKioqKioqKioqKg0KKioqIDU0Nyw1NzUgKioqKg0KICAJLyogRmxvdyBjb250
cm9sIGNhbGN1bGF0aW9ucyAqLw0KICAJVG9rZW4tPmZsb3dfY29udHJvbCA9IFRva2VuLT5mbG93
X2NvbnRyb2wNCiAgCQkJCS0gTGFzdF9udW1fcmV0cmFucyAtIExhc3RfbnVtX3NlbnQgDQogIAkJ
CQkrIG51bV9yZXRyYW5zICAgICAgKyBudW1fc2VudDsNCiAgCUxhc3RfbnVtX3JldHJhbnMgPSBu
dW1fcmV0cmFuczsNCiAgCUxhc3RfbnVtX3NlbnQJID0gbnVtX3NlbnQ7DQogIA0KICAJLyogUHJl
cGFyZSBteSByZXRyYW5zbWlzc2lvbiByZXF1ZXN0cyAqLw0KICANCiAgCWZvciggaSA9IE15X2Fy
dSsxOyBpIDw9IEhpZ2hlc3Rfc2VxOyBpKysgKQ0KICAJew0KISAJCWlmKCAhIFBhY2tldHNbaSAm
IFBBQ0tFVF9NQVNLXS5leGlzdCApIGJyZWFrOw0KICAJCU15X2FydSsrOw0KICAJfQ0KICAJR2xv
YmFsU3RhdHVzLm15X2FydSA9IE15X2FydTsNCiAgDQogIAlpZiggTXlfYXJ1IDwgSGlnaGVzdF9z
ZXEgKQ0KICAJew0KICAJICAgIC8qIENvbXB1dGUgaG93IG1hbnkgb2YgbXkgcmV0cmFuc21pc3Np
b24gcmVxdWVzdHMgYXJlIHBvc3NpYmxlIHRvIGZpdCAqLw0KICAJICAgIHJldHJhbnNfYWxsb3dl
ZCA9ICggc2l6ZW9mKCB0b2tlbl9ib2R5ICkgLSBuZXdfcHRyIC0gc2l6ZW9mKCByaW5nX3J0ciAp
ICkgLyBzaXplb2YoIGludDMyICk7DQogIAkgICAgaWYoIHJldHJhbnNfYWxsb3dlZCA+IDEgKQ0K
ICAJICAgIHsNCiAgCSAgICAJcmluZ19ydHJfcHRyID0gKHJpbmdfcnRyICopJm5ld19ydHJbbmV3
X3B0cl07DQogIAkgICAgCXJpbmdfcnRyX3B0ci0+bWVtYl9pZCAJPSBNZW1iX2lkKCk7DQogIAkg
ICAgCXJpbmdfcnRyX3B0ci0+cHJvY19pZAk9IHJ0cl9wcm9jX2lkOw0KICAJICAgIAlyaW5nX3J0
cl9wdHItPnNlZ19pbmRleAk9IHJ0cl9zZWdfaW5kZXg7DQogIAkgICAgCXJpbmdfcnRyX3B0ci0+
bnVtX3NlcQk9IDA7DQogIAkgICAgCW5ld19wdHIgKz0gc2l6ZW9mKHJpbmdfcnRyKTsNCiAgCSAg
ICAJZm9yKCBpPU15X2FydSsxOyBpIDw9IEhpZ2hlc3Rfc2VxICYmIHJldHJhbnNfYWxsb3dlZCA+
IDA7IGkrKywgcmV0cmFuc19hbGxvd2VkLS0gKQ0KLS0tIDU3OCw2MTEgLS0tLQ0KICAJLyogRmxv
dyBjb250cm9sIGNhbGN1bGF0aW9ucyAqLw0KICAJVG9rZW4tPmZsb3dfY29udHJvbCA9IFRva2Vu
LT5mbG93X2NvbnRyb2wNCiAgCQkJCS0gTGFzdF9udW1fcmV0cmFucyAtIExhc3RfbnVtX3NlbnQg
DQogIAkJCQkrIG51bV9yZXRyYW5zICAgICAgKyBudW1fc2VudDsNCiAgCUxhc3RfbnVtX3JldHJh
bnMgPSBudW1fcmV0cmFuczsNCiAgCUxhc3RfbnVtX3NlbnQJID0gbnVtX3NlbnQ7DQogIA0KICAJ
LyogUHJlcGFyZSBteSByZXRyYW5zbWlzc2lvbiByZXF1ZXN0cyAqLw0KICANCiAgCWZvciggaSA9
IE15X2FydSsxOyBpIDw9IEhpZ2hlc3Rfc2VxOyBpKysgKQ0KICAJew0KISAJCWlmKCAhIFBhY2tl
dHNbaSAmIFBBQ0tFVF9NQVNLXS5leGlzdCApIA0KISAJCXsNCiEgCQkJYnJlYWs7DQohIAkJfQ0K
ICAJCU15X2FydSsrOw0KICAJfQ0KICAJR2xvYmFsU3RhdHVzLm15X2FydSA9IE15X2FydTsNCiAg
DQogIAlpZiggTXlfYXJ1IDwgSGlnaGVzdF9zZXEgKQ0KICAJew0KKyAJCSBBbGFybSggUFJPVE9D
T0wsICJSRVRSQU5TIE5FRURFRCBBUlUoJWQpLCBIaWdoZXN0IFNlcSAoJWQpIFxuIixNeV9hcnUs
IEhpZ2hlc3Rfc2VxKTsNCisgDQogIAkgICAgLyogQ29tcHV0ZSBob3cgbWFueSBvZiBteSByZXRy
YW5zbWlzc2lvbiByZXF1ZXN0cyBhcmUgcG9zc2libGUgdG8gZml0ICovDQogIAkgICAgcmV0cmFu
c19hbGxvd2VkID0gKCBzaXplb2YoIHRva2VuX2JvZHkgKSAtIG5ld19wdHIgLSBzaXplb2YoIHJp
bmdfcnRyICkgKSAvIHNpemVvZiggaW50MzIgKTsNCiAgCSAgICBpZiggcmV0cmFuc19hbGxvd2Vk
ID4gMSApDQogIAkgICAgew0KICAJICAgIAlyaW5nX3J0cl9wdHIgPSAocmluZ19ydHIgKikmbmV3
X3J0cltuZXdfcHRyXTsNCiAgCSAgICAJcmluZ19ydHJfcHRyLT5tZW1iX2lkIAk9IE1lbWJfaWQo
KTsNCiAgCSAgICAJcmluZ19ydHJfcHRyLT5wcm9jX2lkCT0gcnRyX3Byb2NfaWQ7DQogIAkgICAg
CXJpbmdfcnRyX3B0ci0+c2VnX2luZGV4CT0gcnRyX3NlZ19pbmRleDsNCiAgCSAgICAJcmluZ19y
dHJfcHRyLT5udW1fc2VxCT0gMDsNCiAgCSAgICAJbmV3X3B0ciArPSBzaXplb2YocmluZ19ydHIp
Ow0KICAJICAgIAlmb3IoIGk9TXlfYXJ1KzE7IGkgPD0gSGlnaGVzdF9zZXEgJiYgcmV0cmFuc19h
bGxvd2VkID4gMDsgaSsrLCByZXRyYW5zX2FsbG93ZWQtLSApDQoqKioqKioqKioqKioqKioNCioq
KiA2MjAsNjQxICoqKioNCi0tLSA2NTYsNjc4IC0tLS0NCiAgCXsNCiAgCSAgICAJdmFsID0gR2V0
X2FycSggVG9rZW4tPnR5cGUgKTsNCiAgCQl2YWwgPSAodmFsICsgMSklIDB4MTA7DQogIAkJVG9r
ZW4tPnR5cGUgPSBTZXRfYXJxKCAgICAgVG9rZW4tPnR5cGUsIHZhbCApOw0KICAJCVRva2VuLT50
eXBlID0gU2V0X3JldHJhbnMoIFRva2VuLT50eXBlLCAwICAgKTsNCiAgCX0NCiAgDQogIAkvKiBT
ZW5kIHRva2VuICovDQogIAlpZiggISAoIENvbmZfbGVhZGVyKCBNZW1iX2FjdGl2ZV9wdHIoKSAp
ID09IE15LmlkICYmDQogIAkJVG9faG9sZF90b2tlbigpICkgKQ0KICAJew0KKyAJCQ0KICAJCS8q
IHNlbmRpbmcgdG9rZW4gKi8NCiAgCQlOZXRfc2VuZF90b2tlbiggJk5ld190b2tlbiApOw0KICAv
KiAjIyMgQnVnIGZpeCBmb3IgU0dJcyAqLw0KICAjaWZkZWYJQVJDSF9TR0lfSVJJWA0KICAJCU5l
dF9zZW5kX3Rva2VuKCAmTmV3X3Rva2VuICk7DQogICNlbmRpZiAgLyogQVJDSF9TR0lfSVJJWCAq
Lw0KICANCiAgCQlpZiggR2V0X3JldHJhbnMoIFRva2VuLT50eXBlICkgPiAxICkNCiAgCQl7DQog
IAkJCS8qIHByb2JsZW1zICovIA0KICAJCQlOZXRfc2VuZF90b2tlbiggJk5ld190b2tlbiApOw0K
KioqKioqKioqKioqKioqDQoqKiogODUzLDg3NSAqKioqDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2VuZF9wYWNrLmVsZW1lbnRzWzFdLmJ1ZiA9IA0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKVBhY2tldHNbcGFja19lbnRyeV0uYm9keTsN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZW5kX3BhY2suZWxlbWVudHNbMV0u
bGVuID0gDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tfcHRyLT5k
YXRhX2xlbjsgDQogIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCByaW5n
X3J0cl9wdHItPnByb2NfaWQgIT0gLTEgKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gTmV0X3Vj
YXN0ICggcmluZ19ydHJfcHRyLT5wcm9jX2lkLCAmU2VuZF9wYWNrICk7DQogIAkJCQkgICAgR2xv
YmFsU3RhdHVzLnVfcmV0cmFucysrOw0KICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQWxhcm0oIFBST1RPQ09MLCANCiEgICAgICAgICAiQW5zd2VyX3JldHJhbnM6IHJl
dHJhbnNtaXQgdG8gcHJvYyAlZFxuIiwgcmluZ19ydHJfcHRyLT5wcm9jX2lkICk7DQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2UgaWYoIHJpbmdfcnRyX3B0ci0+c2VnX2lu
ZGV4ICE9IC0xICkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQg
PSBOZXRfc2Nhc3QgKCByaW5nX3J0cl9wdHItPnNlZ19pbmRleCwgJlNlbmRfcGFjayApOw0KICAJ
CQkJICAgIEdsb2JhbFN0YXR1cy5zX3JldHJhbnMrKzsNCiAgDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFsYXJtKCBQUk9UT0NPTCwgDQogICAgICAgICAgIkFuc3dlcl9y
ZXRyYW5zOiByZXRyYW5zbWl0IHRvIHNlZyAlZFxuIiwgcmluZ19ydHJfcHRyLT5zZWdfaW5kZXgg
KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsNCiAgI2lmIDENCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gTmV0X3F1ZXVlX2JjYXN0
ICggJlNlbmRfcGFjayApOw0KICAjZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXQgPSBOZXRfYmNhc3QgKCAmU2VuZF9wYWNrICk7DQotLS0gODkwLDkxMiAtLS0t
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VuZF9wYWNrLmVsZW1lbnRzWzFd
LmJ1ZiA9IA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKVBh
Y2tldHNbcGFja19lbnRyeV0uYm9keTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTZW5kX3BhY2suZWxlbWVudHNbMV0ubGVuID0gDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBhY2tfcHRyLT5kYXRhX2xlbjsgDQogIA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmKCByaW5nX3J0cl9wdHItPnByb2NfaWQgIT0gLTEgKQ0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0ID0gTmV0X3VjYXN0ICggcmluZ19ydHJfcHRyLT5wcm9jX2lkLCAmU2Vu
ZF9wYWNrICk7DQogIAkJCQkgICAgR2xvYmFsU3RhdHVzLnVfcmV0cmFucysrOw0KICANCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxhcm0oIFBST1RPQ09MLCANCiEgICAg
ICAgICAiQW5zd2VyX3JldHJhbnM6IHJldHJhbnNtaXQgdG8gcHJvYyAlZCAgYXJ1IGlzICVkXG4i
LCByaW5nX3J0cl9wdHItPnByb2NfaWQsQXJ1ICk7DQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfWVsc2UgaWYoIHJpbmdfcnRyX3B0ci0+c2VnX2luZGV4ICE9IC0xICkgew0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBOZXRfc2Nhc3QgKCByaW5n
X3J0cl9wdHItPnNlZ19pbmRleCwgJlNlbmRfcGFjayApOw0KICAJCQkJICAgIEdsb2JhbFN0YXR1
cy5zX3JldHJhbnMrKzsNCiAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEFsYXJtKCBQUk9UT0NPTCwgDQogICAgICAgICAgIkFuc3dlcl9yZXRyYW5zOiByZXRyYW5zbWl0
IHRvIHNlZyAlZFxuIiwgcmluZ19ydHJfcHRyLT5zZWdfaW5kZXggKTsNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9ZWxzZXsNCiAgI2lmIDENCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0ID0gTmV0X3F1ZXVlX2JjYXN0ICggJlNlbmRfcGFjayApOw0K
ICAjZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBOZXRf
YmNhc3QgKCAmU2VuZF9wYWNrICk7DQoqKioqKioqKioqKioqKioNCioqKiAxMzQ3LDEzNjggKioq
Kg0KLS0tIDEzODQsMTQwNiAtLS0tDQogIAllbHNlIHJldHVybiggMCApOw0KICB9DQogIA0KICBz
dGF0aWMJdm9pZAlIYW5kbGVfaHVycnkoIHBhY2tldF9oZWFkZXIgKnBhY2tfcHRyICkNCiAgew0K
ICAJaWYoIENvbmZfbGVhZGVyKCBNZW1iX2FjdGl2ZV9wdHIoKSApID09IE15LmlkICYmDQogIAkg
ICAgSXNfdG9rZW5faG9sZCgpICkgDQogIAl7DQogIAkgICAgaWYoIENvbmZfaWRfaW5fY29uZigg
TWVtYl9hY3RpdmVfcHRyKCksIHBhY2tfcHRyLT5wcm9jX2lkICkgIT0gLTEgKQ0KICAJICAgIHsN
CiAgCQlBbGFybSggUFJPVE9DT0wsICJIYW5kbGVfaHVycnk6IHNlbmRpbmcgdG9rZW4gbm93XG4i
KTsNCisgCQlUb2tlbl9jb3VudGVyID0gMDsNCiAgCQlQcm90X3Rva2VuX2h1cnJ5KCk7DQogIAkg
ICAgfQ0KICAJfQ0KICB9DQogIA0KICB2b2lkCVByb3RfdG9rZW5faHVycnkoKQ0KICB7DQogIAkv
KiBhc2tlZCB0byBzZW5kIHRva2VuIGFnYWluIChhbG1vc3QgbG9zdCkgKi8NCiAgCQkJDQogIAlz
eXNfc2NhdHRlcglyZXRyYW5zX3Rva2VuOw0KICAJaW50MzIJCXZhbDsNCkluZGV4OiBzcHJlYWRt
YXAvc3ByZWFkX3NyYy9zcHJlYWQ0X29sZi9kYWVtb24vc2NhdHRlci5oDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpS
Q1MgZmlsZTogL2N2cy9tYXN0ZXIvb2xmL2Vjb20vc3ByZWFkbWFwL3NwcmVhZF9zcmMvc3ByZWFk
NF9vbGYvZGFlbW9uL3NjYXR0ZXIuaCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQ0KZGlmZiAt
YiAtYyAtMSAtMSAtcjEuNSBzY2F0dGVyLmgNCioqKiBzcHJlYWRtYXAvc3ByZWFkX3NyYy9zcHJl
YWQ0X29sZi9kYWVtb24vc2NhdHRlci5oCTEyIERlYyAyMDA3IDE0OjM3OjEzIC0wMDAwCTEuNQ0K
LS0tIHNwcmVhZG1hcC9zcHJlYWRfc3JjL3NwcmVhZDRfb2xmL2RhZW1vbi9zY2F0dGVyLmgJMjQg
SmFuIDIwMTMgMjI6MTI6MzEgLTAwMDANCioqKioqKioqKioqKioqKg0KKioqIDM1LDYwICoqKioN
CiAgDQogICNpZm5kZWYgSU5DX1NDQVRURVINCiAgI2RlZmluZSBJTkNfU0NBVFRFUg0KICANCiAg
I2luY2x1ZGUgImFyY2guaCINCiAgI2RlZmluZQlNQVhfU0NBVFRFUl9FTEVNRU5UUwkxMzANCiAg
DQogIC8qIHNjYXRfZWxlbWVudCBpcyBFWEFDVExZIGFzIGRlZmluZWQgaW4gaW92ZWMgKi8NCiAg
DQogIHR5cGVkZWYgc3RydWN0IGR1bW15X3NjYXRfZWxlbWVudHsNCiAgCWNoYXIJKmJ1ZjsNCiEg
CWludAlsZW47DQogIH0gc2NhdF9lbGVtZW50Ow0KICANCiAgdHlwZWRlZiBzdHJ1Y3QgZHVtbXlf
c2NhdHRlciB7DQohIAlpbnQJCW51bV9lbGVtZW50czsNCiAgCXNjYXRfZWxlbWVudAllbGVtZW50
c1tBUkNIX1NDQVRURVJfU0laRV07DQogIH0gc3lzX3NjYXR0ZXI7DQogIA0KICB0eXBlZGVmIHN0
cnVjdCBkdW1teV9iaWdfc2NhdHRlciB7DQohIAlpbnQJCW51bV9lbGVtZW50czsNCiAgCXNjYXRf
ZWxlbWVudAllbGVtZW50c1tNQVhfU0NBVFRFUl9FTEVNRU5UU107DQogIH0gc2NhdHRlcjsNCiAg
DQogICNlbmRpZiAgLyogSU5DX1NDQVRURVIgKi8NCiAgDQotLS0gMzUsNjAgLS0tLQ0KICANCiAg
I2lmbmRlZiBJTkNfU0NBVFRFUg0KICAjZGVmaW5lIElOQ19TQ0FUVEVSDQogIA0KICAjaW5jbHVk
ZSAiYXJjaC5oIg0KICAjZGVmaW5lCU1BWF9TQ0FUVEVSX0VMRU1FTlRTCTEzMA0KICANCiAgLyog
c2NhdF9lbGVtZW50IGlzIEVYQUNUTFkgYXMgZGVmaW5lZCBpbiBpb3ZlYyAqLw0KICANCiAgdHlw
ZWRlZiBzdHJ1Y3QgZHVtbXlfc2NhdF9lbGVtZW50ew0KICAJY2hhcgkqYnVmOw0KISAJc2l6ZV90
CWxlbjsNCiAgfSBzY2F0X2VsZW1lbnQ7DQogIA0KICB0eXBlZGVmIHN0cnVjdCBkdW1teV9zY2F0
dGVyIHsNCiEgCXNpemVfdAkJbnVtX2VsZW1lbnRzOw0KICAJc2NhdF9lbGVtZW50CWVsZW1lbnRz
W0FSQ0hfU0NBVFRFUl9TSVpFXTsNCiAgfSBzeXNfc2NhdHRlcjsNCiAgDQogIHR5cGVkZWYgc3Ry
dWN0IGR1bW15X2JpZ19zY2F0dGVyIHsNCiEgCXNpemVfdAkJbnVtX2VsZW1lbnRzOw0KICAJc2Nh
dF9lbGVtZW50CWVsZW1lbnRzW01BWF9TQ0FUVEVSX0VMRU1FTlRTXTsNCiAgfSBzY2F0dGVyOw0K
ICANCiAgI2VuZGlmICAvKiBJTkNfU0NBVFRFUiAqLw0KICANCkluZGV4OiBzcHJlYWRtYXAvc3By
ZWFkX3NyYy9zcHJlYWQ0X29sZi9kYWVtb24vc3ByZWFkLmMNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxl
OiAvY3ZzL21hc3Rlci9vbGYvZWNvbS9zcHJlYWRtYXAvc3ByZWFkX3NyYy9zcHJlYWQ0X29sZi9k
YWVtb24vc3ByZWFkLmMsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjExDQpkaWZmIC1iIC1jIC0x
IC0xIC1yMS4xMSBzcHJlYWQuYw0KKioqIHNwcmVhZG1hcC9zcHJlYWRfc3JjL3NwcmVhZDRfb2xm
L2RhZW1vbi9zcHJlYWQuYwkyMSBKdWwgMjAwOSAyMDo0MDoyMyAtMDAwMAkxLjExDQotLS0gc3By
ZWFkbWFwL3NwcmVhZF9zcmMvc3ByZWFkNF9vbGYvZGFlbW9uL3NwcmVhZC5jCTI0IEphbiAyMDEz
IDIyOjEyOjMzIC0wMDAwDQoqKioqKioqKioqKioqKioNCioqKiAxNDgsMTcwICoqKioNCiAgCSAg
IA0KICBpbnQgX3J1bl9tYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pDQogIHsNCiAgI2lmbmRl
ZiBBUkNIX1BDX1dJTjk1DQogIAlzdHJ1Y3QgZ3JvdXAgICpncnA7DQogIAlzdHJ1Y3QgcGFzc3dk
ICpwd2Q7DQogICNlbmRpZg0KICANCiAgI2lmZGVmCUFSQ0hfUENfV0lOOTUNCiAgCWludAlyZXQ7
DQogIA0KISAJcmV0ID0gV1NBU3RhcnR1cCggTUFLRVdPUkQoMSwxKSwgJldTQURhdGEgKTsNCiAg
CWlmKCByZXQgIT0gMCApDQogICAgICAgICAgICAgIEFsYXJtcCggU1BMT0dfRkFUQUwsIE5FVFdP
UkssICJTcHJlYWQ6IHdpbnNvY2sgaW5pdGlhbGl6YXRpb24gZXJyb3IgJWRcbiIsIHJldCApOw0K
ICANCiAgI2VuZGlmCS8qIEFSQ0hfUENfV0lOOTUgKi8NCiAgDQogICAgICAgICAgLyogaW5pdGlh
bGl6ZSBlYWNoIHZhbGlkIGF1dGhlbnRpY2F0aW9uIHByb3RvY29sICovDQogICAgICAgICAgbnVs
bF9pbml0KCk7DQogICAgICAgICAgaXBfaW5pdCgpOw0KICAjaWZkZWYgIEVOQUJMRV9QQVNTV09S
RA0KICAgICAgICAgIHB3b3JkX2luaXQoKTsNCiAgI2VuZGlmDQotLS0gMTQ4LDE3MCAtLS0tDQog
IAkgICANCiAgaW50IF9ydW5fbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQ0KICB7DQogICNp
Zm5kZWYgQVJDSF9QQ19XSU45NQ0KICAJc3RydWN0IGdyb3VwICAqZ3JwOw0KICAJc3RydWN0IHBh
c3N3ZCAqcHdkOw0KICAjZW5kaWYNCiAgDQogICNpZmRlZglBUkNIX1BDX1dJTjk1DQogIAlpbnQJ
cmV0Ow0KICANCiEgCXJldCA9IFdTQVN0YXJ0dXAoIE1BS0VXT1JEKDIsMiksICZXU0FEYXRhICk7
DQogIAlpZiggcmV0ICE9IDAgKQ0KICAgICAgICAgICAgICBBbGFybXAoIFNQTE9HX0ZBVEFMLCBO
RVRXT1JLLCAiU3ByZWFkOiB3aW5zb2NrIGluaXRpYWxpemF0aW9uIGVycm9yICVkXG4iLCByZXQg
KTsNCiAgDQogICNlbmRpZgkvKiBBUkNIX1BDX1dJTjk1ICovDQogIA0KICAgICAgICAgIC8qIGlu
aXRpYWxpemUgZWFjaCB2YWxpZCBhdXRoZW50aWNhdGlvbiBwcm90b2NvbCAqLw0KICAgICAgICAg
IG51bGxfaW5pdCgpOw0KICAgICAgICAgIGlwX2luaXQoKTsNCiAgI2lmZGVmICBFTkFCTEVfUEFT
U1dPUkQNCiAgICAgICAgICBwd29yZF9pbml0KCk7DQogICNlbmRpZg0KSW5kZXg6IHNwcmVhZG1h
cC9zcHJlYWRfc3JjL3NwcmVhZDRfb2xmL2luY2x1ZGUvc3AuaA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZp
bGU6IC9jdnMvbWFzdGVyL29sZi9lY29tL3NwcmVhZG1hcC9zcHJlYWRfc3JjL3NwcmVhZDRfb2xm
L2luY2x1ZGUvc3AuaCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQ0KZGlmZiAtYiAtYyAtMSAt
MSAtcjEuNSBzcC5oDQoqKiogc3ByZWFkbWFwL3NwcmVhZF9zcmMvc3ByZWFkNF9vbGYvaW5jbHVk
ZS9zcC5oCTUgSmFuIDIwMDcgMTU6NTQ6MjUgLTAwMDAJMS41DQotLS0gc3ByZWFkbWFwL3NwcmVh
ZF9zcmMvc3ByZWFkNF9vbGYvaW5jbHVkZS9zcC5oCTI0IEphbiAyMDEzIDIyOjEyOjM0IC0wMDAw
DQoqKioqKioqKioqKioqKioNCioqKiAyOSw1MCAqKioqDQotLS0gMjksNTMgLS0tLQ0KICAgKiAg
ICBDcmlzdGluYSBOaXRhLVJvdGFydSBjcmlzbkBjcy5wdXJkdWUuZWR1IC0gZ3JvdXAgY29tbXVu
aWNhdGlvbiBzZWN1cml0eS4NCiAgICogICAgVGhlbyBTY2hsb3NzbmFnbGUgICAgamVzdXNAb21u
aXRpLmNvbSAtIFBlcmwsIGF1dG9jb25mLCBvbGQgc2tpcGxpc3QuDQogICAqICAgIERhbiBTY2hv
ZW5ibHVtICAgICAgIGRhbnNjaEBjbmRzLmpodS5lZHUgLSBKYXZhIGludGVyZmFjZS4NCiAgICoN
CiAgICovDQogIA0KICANCiAgDQogICNpZm5kZWYgSU5DX1NQDQogICNkZWZpbmUgSU5DX1NQDQog
IA0KKyAvKiBmb3Igc2l6ZV90ICovDQorICNpbmNsdWRlIDxzdGRkZWYuaD4NCisgDQogICNpZmRl
ZiBfX2NwbHVzcGx1cw0KICBleHRlcm4gIkMiIHsNCiAgI2VuZGlmDQogIA0KICAjZGVmaW5lIAlp
bnQxNglzaG9ydA0KICAjZGVmaW5lCQlpbnQzMglpbnQNCiAgDQogICNkZWZpbmUJCUZsaXBfaW50
MTYoIHR5cGUgKQkoICggKHR5cGUgPj4gOCkgJiAweDAwZmYpIHwgKCAodHlwZSA8PCA4KSAmIDB4
ZmYwMCkgKQ0KICANCiAgI2RlZmluZQkJRmxpcF9pbnQzMiggdHlwZSApCSggKCAodHlwZSA+PjI0
KSAmIDB4MDAwMDAwZmYpIHwgKCAodHlwZSA+PiA4KSAmIDB4MDAwMGZmMDApIHwgKCAodHlwZSA8
PCA4KSAmIDB4MDBmZjAwMDApIHwgKCAodHlwZSA8PDI0KSAmIDB4ZmYwMDAwMDApICkNCiAgDQoq
KioqKioqKioqKioqKioNCioqKiAxMzEsMTU3ICoqKioNCiAgI2RlZmluZSAgICAgICAgIEdST1VQ
U19UT09fU0hPUlQgICAgICAgIC0xNg0KICAjZGVmaW5lICAgICAgICAgTUVTU0FHRV9UT09fTE9O
RyAgICAgICAgLTE3DQogICNkZWZpbmUgICAgICAgICBORVRfRVJST1JfT05fU0VTU0lPTiAgICAt
MTgNCiAgDQogICNkZWZpbmUJCU1BWF9DTElFTlRfU0NBVFRFUl9FTEVNRU5UUwkxMDANCiAgDQog
IHR5cGVkZWYgCWludCAgICAgICAgICAgICBtYWlsYm94Ow0KICB0eXBlZGVmCQlpbnQgICAgICAg
ICAgICAgc2VydmljZTsJDQogIA0KICB0eXBlZGVmCXN0cnVjdAlkdW1teV9zY2F0X2VsZW1lbnR7
DQogIAljaGFyCSpidWY7DQohIAlpbnQJbGVuOw0KICB9IHNjYXRfZWxlbWVudDsNCiAgDQogIHR5
cGVkZWYJc3RydWN0CWR1bW15X3NjYXR0ZXJ7DQohIAlpbnQJCW51bV9lbGVtZW50czsNCiAgCXNj
YXRfZWxlbWVudAllbGVtZW50c1tNQVhfQ0xJRU5UX1NDQVRURVJfRUxFTUVOVFNdOw0KICB9IHNj
YXR0ZXI7DQogIA0KICB0eXBlZGVmIHN0cnVjdAlkdW1teV9ncm91cF9pZCB7DQogIAlpbnQzMgkJ
aWRbM107DQogIH0gZ3JvdXBfaWQ7DQogIA0KICB0eXBlZGVmIHN0cnVjdCBkdW1teV92c19zZXRf
aW5mbyB7DQogICAgICAgICAgdW5zaWduZWQgaW50IG51bV9tZW1iZXJzOw0KICAgICAgICAgIHVu
c2lnbmVkIGludCBtZW1iZXJzX29mZnNldDsgIC8qIG9mZnNldCBmcm9tIGJlZ2lubmluZyBvZiBt
c2cgYm9keSovDQogIH0gdnNfc2V0X2luZm87DQotLS0gMTM0LDE2MCAtLS0tDQogICNkZWZpbmUg
ICAgICAgICBHUk9VUFNfVE9PX1NIT1JUICAgICAgICAtMTYNCiAgI2RlZmluZSAgICAgICAgIE1F
U1NBR0VfVE9PX0xPTkcgICAgICAgIC0xNw0KICAjZGVmaW5lICAgICAgICAgTkVUX0VSUk9SX09O
X1NFU1NJT04gICAgLTE4DQogIA0KICAjZGVmaW5lCQlNQVhfQ0xJRU5UX1NDQVRURVJfRUxFTUVO
VFMJMTAwDQogIA0KICB0eXBlZGVmIAlpbnQgICAgICAgICAgICAgbWFpbGJveDsNCiAgdHlwZWRl
ZgkJaW50ICAgICAgICAgICAgIHNlcnZpY2U7CQ0KICANCiAgdHlwZWRlZglzdHJ1Y3QJZHVtbXlf
c2NhdF9lbGVtZW50ew0KICAJY2hhcgkqYnVmOw0KISAJc2l6ZV90CWxlbjsNCiAgfSBzY2F0X2Vs
ZW1lbnQ7DQogIA0KICB0eXBlZGVmCXN0cnVjdAlkdW1teV9zY2F0dGVyew0KISAJc2l6ZV90CQlu
dW1fZWxlbWVudHM7DQogIAlzY2F0X2VsZW1lbnQJZWxlbWVudHNbTUFYX0NMSUVOVF9TQ0FUVEVS
X0VMRU1FTlRTXTsNCiAgfSBzY2F0dGVyOw0KICANCiAgdHlwZWRlZiBzdHJ1Y3QJZHVtbXlfZ3Jv
dXBfaWQgew0KICAJaW50MzIJCWlkWzNdOw0KICB9IGdyb3VwX2lkOw0KICANCiAgdHlwZWRlZiBz
dHJ1Y3QgZHVtbXlfdnNfc2V0X2luZm8gew0KICAgICAgICAgIHVuc2lnbmVkIGludCBudW1fbWVt
YmVyczsNCiAgICAgICAgICB1bnNpZ25lZCBpbnQgbWVtYmVyc19vZmZzZXQ7ICAvKiBvZmZzZXQg
ZnJvbSBiZWdpbm5pbmcgb2YgbXNnIGJvZHkqLw0KICB9IHZzX3NldF9pbmZvOw0K

--_002_69414ba379bd4edb951baeeba250e1c7BY2PR0201MB0709namprd02_
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Spread-users mailing list
[email protected]
http://lists.spread.org/mailman/listinfo/spread-users

--_002_69414ba379bd4edb951baeeba250e1c7BY2PR0201MB0709namprd02_--