delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin-developers/2002/05/24/08:06:36

Mailing-List: contact cygwin-developers-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-developers-subscribe AT cygwin DOT com>
List-Archive: <http://sources.redhat.com/ml/cygwin-developers/>
List-Post: <mailto:cygwin-developers AT cygwin DOT com>
List-Help: <mailto:cygwin-developers-help AT cygwin DOT com>, <http://sources.redhat.com/ml/#faqs>
Sender: cygwin-developers-owner AT cygwin DOT com
Delivered-To: mailing list cygwin-developers AT cygwin DOT com
MIME-Version: 1.0
Subject: building a profilable cygwin1.dll
X-MimeOLE: Produced By Microsoft Exchange V6.0.5762.3
content-class: urn:content-classes:message
Date: Fri, 24 May 2002 21:33:05 +1000
Message-ID: <FC169E059D1A0442A04C40F86D9BA7600C615B@itdomain003.itdomain.net.au>
X-MS-Has-Attach: yes
X-MS-TNEF-Correlator:
From: "Robert Collins" <robert DOT collins AT itdomain DOT com DOT au>
To: <cygwin-developers AT cygwin DOT com>
Cc: <cygwin-patches AT cygwin DOT com>
Note-from-DJ: This may be spam

This is a multi-part message in MIME format.

------_=_NextPart_001_01C20316.C551574C
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

This is experimental, and not suitable for CVS for a number of reasons.

However, I don't have time or inclination to tidy it up just now.

The reason for the multiple non-inlining changes was an ill-fated
attempt to get the profilable dll runnable under gdb.

I'm happy to provide details on what I did and why should anyone want to
experiment.

For obvious reasons, a gprof profilable .dll is a very useful thing.

Rob

------_=_NextPart_001_01C20316.C551574C
Content-Type: text/plain;
	name="how-profiling-works.txt"
Content-Transfer-Encoding: base64
Content-Description: how-profiling-works.txt
Content-Disposition: attachment;
	filename="how-profiling-works.txt"

KEMpIDIwMDIgUm9iZXJ0IENvbGxpbnMKCkhvdyB0byBwcm9maWxlIGN5Z3dpbjEuZGxsLgoKVGhl
IGhhcmQgd2F5OgoKQnVpbGQgbGliYy5hIGFuZCBsaWJtLmEgd2l0aCAtcGcuCkJ1aWxkIGFsbCB0
aGUgY3lnd2luMS5kbGwgc291cmNlIC0gZXhjZXB0IG1jb3VudC5jIC0gd2l0aCAtcGcgYW5kIG5v
IC1PMi4KLU8yIGludGVyZmVyZXMgd2l0aCAtcGcgaW4gc29tZSBpbmxpbmVkIGNvZGUuCkxpbmsg
bGliZ21vbi5hIGludG8gY3lnd2luMS5kbGwuCgpJIHVzZWQgYSBDQ05PUFJPRiB0YXJnZXQgaW4g
TWFrZWZpbGUuaW4gdG8gbWFrZSB0aGlzIHJlbGF0aXZlbHkgZWFzeS4KClZvaWxhLgoKCg==

------_=_NextPart_001_01C20316.C551574C
Content-Type: application/octet-stream;
	name="profiling.diff"
Content-Transfer-Encoding: base64
Content-Description: profiling.diff
Content-Disposition: attachment;
	filename="profiling.diff"

PyBjeWdzZXJ2ZXJfc2VtLmNjCj8gY3lnc2VydmVyX3NlbS5oCj8gY3lnc3RycHRpbWUucGF0Y2gK
PyBkYWVtb25zdGF0ZS5wYXRjaAo/IGRhZW1vbnN0YXRlMi5wYXRjaAo/IGRhZW1vbnN0YXRlMy5w
YXRjaAo/IGV4cG9ydGlwYy5wYXRjaAo/IHQKPyBnZXRzZW0ucGF0Y2gKPyBob3ctY3lnd2luLW9w
dGlvbnMtd29yay50eHQKPyBrZXlfdC5wYXRjaAo/IGxvY2Fsd29ya2luZ3N0dWZmLnBhdGNoCj8g
bWVyZ2UubG9nCj8gbmV3Cj8gc2VtLmNjCj8gcGVydGhyZWFkLmNjCj8gcHJvZmlsaW5nLmRpZmYK
PyB0LnQKPyBob3ctcHJvZmlsaW5nLXdvcmtzLnR4dAo/IHJ1bl9kdG9ycy5wYXRjaAo/IGluY2x1
ZGUvc3lzL3NlbS5oCkluZGV4OiBNYWtlZmlsZS5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zz
L3NyYy9zcmMvd2luc3VwL2N5Z3dpbi9NYWtlZmlsZS5pbix2CnJldHJpZXZpbmcgcmV2aXNpb24g
MS44NwpkaWZmIC11IC1wIC1yMS44NyBNYWtlZmlsZS5pbgotLS0gTWFrZWZpbGUuaW4JMTggTWF5
IDIwMDIgMDY6MTA6MTYgLTAwMDAJMS44NworKysgTWFrZWZpbGUuaW4JMjQgTWF5IDIwMDIgMTE6
Mjk6MDAgLTAwMDAKQEAgLTQ3LDEzICs0NywxNSBAQCBJTlNUQUxMX1BST0dSQU06PUBJTlNUQUxM
X1BST0dSQU1ACiBNVF9TQUZFOj1ATVRfU0FGRUAKIERFRlM6PUBERUZTQAogCi1DQzo9QENDQAor
Q0M6PUBDQ0AgLXBnIC1EcmVncGFybVwoeFwpPXVudXNlZAorQ0NOT1BST0Y6PUBDQ0AKICMgRklY
TUU6IFdoaWNoIGlzIGl0LCBDQyBvciBDQ19GT1JfVEFSR0VUPwogQ0NfRk9SX1RBUkdFVDo9JChD
QykKIENGTEFHUzo9QENGTEFHU0AKIENGTEFHUys9LU1NRCAtZmJ1aWx0aW4KLUNYWDo9QENYWEAK
K0NYWDo9QENYWEAgLXBnIC1EcmVncGFybVwoeFwpPXVudXNlZAogQ1hYRkxBR1M6PUBDWFhGTEFH
U0AKK0NYWE5PUFJPRjo9QENYWEAKIAogIyBGb3IgbGlua2luZyBtb3VudCwgZXRjLiBjcnQwLm8g
aXNuJ3QgYWNjZXNzYWJsZSBpbiBhIGZyZXNoIGJ1aWxkLgogRVhFX0xERkxBR1M6PUBFWEVfTERG
TEFHU0AKQEAgLTExMSw2ICsxMTMsOSBAQCBMSUJDT1M6PSR7c29ydCAke2FkZHN1ZmZpeCAubywk
e2Jhc2VuYW1lCiAKIEVYVFJBX0RMTF9PRklMRVM6PSR7YWRkc3VmZml4IC5vLCR7YmFzZW5hbWUg
JHtub3RkaXIgJHt3aWxkY2FyZCAkKENPTkZJR19ESVIpLyouY319fX0KIAorIyBQcm9maWxlIGN5
Z3dpbjEuZGxsCitFWFRSQV9ETExfT0ZJTEVTKz0gJChMSUJHTU9OX0EpICQoR01PTl9TVEFSVCkK
KwogRVhUUkFfT0ZJTEVTPSQoYnVwZGlyMSkvbGliaWJlcnR5L3JhbmRvbS5vICQoYnVwZGlyMSkv
bGliaWJlcnR5L3N0cnNpZ25hbC5vCiAKIE1BTExPQ19PRklMRVM9QE1BTExPQ19PRklMRVNACkBA
IC0xMjgsOSArMTMzLDEyIEBAIERMTF9PRklMRVM6PWFzc2VydC5vIGF1dG9sb2FkLm8gY3lnaGVh
cC4KIAlmaGFuZGxlcl90YXBlLm8gZmhhbmRsZXJfdGVybWlvcy5vIGZoYW5kbGVyX3R0eS5vIGZo
YW5kbGVyX3ZpcnR1YWwubyBcCiAJZmhhbmRsZXJfd2luZG93cy5vIGZoYW5kbGVyX3plcm8ubyBm
bm1hdGNoLm8gZm9yay5vIGdsb2IubyBncnAubyBcCiAJaGVhcC5vIGluaXQubyBpb2N0bC5vIGlw
Yy5vIGxvY2FsdGltZS5vIG1hbGxvYy5vIG1pc2NmdW5jcy5vIG1tYXAubyBcCi0JbmV0Lm8gbnRl
YS5vIHBhc3N3ZC5vIHBhdGgubyBwaW5mby5vIHBpcGUubyBwb2xsLm8gcHRocmVhZC5vIHJlZ2Nv
bXAubyBcCisJbmV0Lm8gbnRlYS5vIHBhc3N3ZC5vIHBhdGgubyBcCisJcGVydGhyZWFkLm8gXAor
CXBpbmZvLm8gcGlwZS5vIHBvbGwubyBwdGhyZWFkLm8gcmVnY29tcC5vIFwKIAlyZWdlcnJvci5v
IHJlZ2V4ZWMubyByZWdmcmVlLm8gcmVnaXN0cnkubyByZXNvdXJjZS5vIHNjYW5kaXIubyBzY2hl
ZC5vIFwKLQlzZWNfYWNsLm8gc2VjX2hlbHBlci5vIHNlY3VyaXR5Lm8gc2VsZWN0Lm8gc2hhcmVk
Lm8gc2htLm8gc2hvcnRjdXQubyBcCisJc2VjX2FjbC5vIHNlY19oZWxwZXIubyBzZW0ubyBzZWN1
cml0eS5vIHNlbGVjdC5vIHNoYXJlZC5vIHNobS5vIFwKKwlzaG9ydGN1dC5vIFwKIAlzaWduYWwu
byBzaWdwcm9jLm8gc21hbGxwcmludC5vIHNwYXduLm8gc3RyYWNlLm8gc3Ryc2VwLm8gc3luYy5v
IFwKIAlzeXNjYWxscy5vIHN5c2NvbmYubyBzeXNsb2cubyB0ZXJtaW9zLm8gdGhyZWFkLm8gdGlt
ZXMubyB0dHkubyB1aW5mby5vIFwKIAl1bmFtZS5vIHY4X3JlZ2V4cC5vIHY4X3JlZ2Vycm9yLm8g
djhfcmVnc3ViLm8gd2FpdC5vIHdpbmNhcC5vIHdpbmRvdy5vIFwKQEAgLTEzOCw2ICsxNDYsMTUg
QEAgRExMX09GSUxFUzo9YXNzZXJ0Lm8gYXV0b2xvYWQubyBjeWdoZWFwLgogCiBHTU9OX09GSUxF
Uzo9Z21vbi5vIG1jb3VudC5vIHByb2ZpbC5vCiAKK21jb3VudC5vOiBtY291bnQuYworCSQoQ0NO
T1BST0YpICRjIC1ub3N0ZGluYyAkKEFMTF9DRkxBR1MpICQoR0NDX0lOQ0xVREUpICAtbyAkKEBE
KS8kKCpGKSRvICQ8CisKK2dtb24ubzogZ21vbi5jCisJJChDQ05PUFJPRikgJGMgLW5vc3RkaW5j
ICQoQUxMX0NGTEFHUykgJChHQ0NfSU5DTFVERSkgIC1vICQoQEQpLyQoKkYpJG8gJDwKKworcHJv
ZmlsLm86IHByb2ZpbC5jCisJJChDQ05PUFJPRikgJGMgLW5vc3RkaW5jICQoQUxMX0NGTEFHUykg
JChHQ0NfSU5DTFVERSkgIC1vICQoQEQpLyQoKkYpJG8gJDwKKwogT0JTT0xFVEVfRlVOQ1RJT05T
Oj1yZWdjb21wIHJlZ2Vycm9yIHJlZ2V4ZWMgcmVnZnJlZSByZWdzdWIKIE5FV19GVU5DVElPTlM6
PXJlZ2NvbXAgcG9zaXhfcmVnY29tcCBcCiAJICAgICAgIHJlZ2Vycm9yIHBvc2l4X3JlZ2Vycm9y
IFwKQEAgLTMyMiw3ICszMzksMTAgQEAgY3lnc2VydmVyX2NsaWVudF9vdXRzaWRlLm86IGN5Z3Nl
cnZlcl9jbAogY3lnc2VydmVyX3NobS5vOiBjeWdzZXJ2ZXJfc2htLmNjCiAJJChDT01QSUxFX0NY
WCkgLURfX09VVFNJREVfQ1lHV0lOX18gLW8gJEAgJDwKIAotY3lnc2VydmVyLmV4ZTogY3lnc2Vy
dmVyLm8gY3lnc2VydmVyX3NobS5vIGN5Z3NlcnZlcl90cmFuc3BvcnRfb3V0c2lkZS5vIGN5Z3Nl
cnZlcl90cmFuc3BvcnRfcGlwZXNfb3V0c2lkZS5vIGN5Z3NlcnZlcl90cmFuc3BvcnRfc29ja2V0
c19vdXRzaWRlLm8gY3lnc2VydmVyX2NsaWVudF9vdXRzaWRlLm8gY3lnc2VydmVyX3Byb2Nlc3Mu
byB0aHJlYWRlZF9xdWV1ZS5vIHdpbmNhcC5vIHZlcnNpb24ubyBzbWFsbHByaW50Lm8KK2N5Z3Nl
cnZlcl9zZW0ubzogY3lnc2VydmVyX3NlbS5jYworCSQoQ09NUElMRV9DWFgpIC1EX19PVVRTSURF
X0NZR1dJTl9fIC1vICRAICQ8CisKK2N5Z3NlcnZlci5leGU6IGN5Z3NlcnZlci5vIGN5Z3NlcnZl
cl9zZW0ubyBjeWdzZXJ2ZXJfc2htLm8gY3lnc2VydmVyX3RyYW5zcG9ydF9vdXRzaWRlLm8gY3ln
c2VydmVyX3RyYW5zcG9ydF9waXBlc19vdXRzaWRlLm8gY3lnc2VydmVyX3RyYW5zcG9ydF9zb2Nr
ZXRzX291dHNpZGUubyBjeWdzZXJ2ZXJfY2xpZW50X291dHNpZGUubyBjeWdzZXJ2ZXJfcHJvY2Vz
cy5vIHRocmVhZGVkX3F1ZXVlLm8gd2luY2FwLm8gdmVyc2lvbi5vIHNtYWxscHJpbnQubyAKIAkk
KENYWCkgLW8gJEAgJF4KICNpZmRlZiBWRVJCT1NFCiAjCSQoQ1hYKSAkKE1JTkdXX0NYWEZMQUdT
KSAtbyAkQCAke3dvcmRsaXN0IDEsMywkXn0gLUIkKG1pbmd3X2J1aWxkKS8gJChNSU5HV19MREZM
QUdTKQpJbmRleDogY2hpbGRfaW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3Ny
Yy93aW5zdXAvY3lnd2luL2NoaWxkX2luZm8uaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yOQpk
aWZmIC11IC1wIC1yMS4yOSBjaGlsZF9pbmZvLmgKLS0tIGNoaWxkX2luZm8uaAkxMCBGZWIgMjAw
MiAxMzo1MDoxMyAtMDAwMAkxLjI5CisrKyBjaGlsZF9pbmZvLmgJMjQgTWF5IDIwMDIgMTE6Mjk6
MDEgLTAwMDAKQEAgLTgsNiArOCw5IEBAIFRoaXMgc29mdHdhcmUgaXMgYSBjb3B5cmlnaHRlZCB3
b3JrIGxpY2UKIEN5Z3dpbiBsaWNlbnNlLiAgUGxlYXNlIGNvbnN1bHQgdGhlIGZpbGUgIkNZR1dJ
Tl9MSUNFTlNFIiBmb3IKIGRldGFpbHMuICovCiAKKyNpZm5kZWYgX0NISUxEX0lORk9fSF8KKyNk
ZWZpbmUgX0NISUxEX0lORk9fSF8KKwogI2luY2x1ZGUgPHNldGptcC5oPgogCiBlbnVtCkBAIC0x
MDksMyArMTEyLDUgQEAgcHVibGljOgogdm9pZCBfX3N0ZGNhbGwgaW5pdF9jaGlsZF9pbmZvIChE
V09SRCwgY2hpbGRfaW5mbyAqLCBpbnQsIEhBTkRMRSk7CiAKIGV4dGVybiBjaGlsZF9pbmZvX2Zv
cmsgKmNoaWxkX3Byb2NfaW5mbzsKKworI2VuZGlmIC8qIF9DSElMRF9JTkZPX0hfICovCkluZGV4
OiBjeWdlcnJuby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy93aW5zdXAvY3ln
d2luL2N5Z2Vycm5vLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNwpkaWZmIC11IC1wIC1yMS43
IGN5Z2Vycm5vLmgKLS0tIGN5Z2Vycm5vLmgJMjIgT2N0IDIwMDEgMjE6MDk6NDEgLTAwMDAJMS43
CisrKyBjeWdlcnJuby5oCTI0IE1heSAyMDAyIDExOjI5OjAxIC0wMDAwCkBAIC04LDYgKzgsOSBA
QCBUaGlzIHNvZnR3YXJlIGlzIGEgY29weXJpZ2h0ZWQgd29yayBsaWNlCiBDeWd3aW4gbGljZW5z
ZS4gIFBsZWFzZSBjb25zdWx0IHRoZSBmaWxlICJDWUdXSU5fTElDRU5TRSIgZm9yCiBkZXRhaWxz
LiAqLwogCisjaWZuZGVmIF9DWUdFUlJOT19IXworI2RlZmluZSBfQ1lHRVJSTk9fSF8KKwogdm9p
ZCBfX3N0ZGNhbGwgc2V0ZXJybm9fZnJvbV93aW5fZXJyb3IgKGNvbnN0IGNoYXIgKmZpbGUsIGlu
dCBsaW5lLCBEV09SRCBjb2RlKSBfX2F0dHJpYnV0ZV9fICgocmVncGFybSgzKSkpOwogdm9pZCBf
X3N0ZGNhbGwgc2V0ZXJybm8gKGNvbnN0IGNoYXIgKiwgaW50IGxpbmUpIF9fYXR0cmlidXRlX18g
KChyZWdwYXJtKDIpKSk7CiBpbnQgX19zdGRjYWxsIGdldGVycm5vX2Zyb21fd2luX2Vycm9yIChE
V09SRCBjb2RlLCBpbnQgZGVmZXJybm8pIF9fYXR0cmlidXRlX18gKChyZWdwYXJtKDIpKSk7CkBA
IC0zNywzICs0MCw1IEBAIGNsYXNzIHNhdmVfZXJybm8KIAogZXh0ZXJuIGNvbnN0IGNoYXIgKl9f
c3BfZm47CiBleHRlcm4gaW50IF9fc3BfbG47CisKKyNlbmRpZiAvKiBfQ1lHRVJSTk9fSF8gKi8K
SW5kZXg6IGN5Z2hlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvd2luc3Vw
L2N5Z3dpbi9jeWdoZWFwLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMzgKZGlmZiAtdSAtcCAt
cjEuMzggY3lnaGVhcC5oCi0tLSBjeWdoZWFwLmgJOCBNYXkgMjAwMiAxNDoyMTowOCAtMDAwMAkx
LjM4CisrKyBjeWdoZWFwLmgJMjQgTWF5IDIwMDIgMTE6Mjk6MDEgLTAwMDAKQEAgLTgsNiArOCwx
NiBAQCBUaGlzIHNvZnR3YXJlIGlzIGEgY29weXJpZ2h0ZWQgd29yayBsaWNlCiBDeWd3aW4gbGlj
ZW5zZS4gIFBsZWFzZSBjb25zdWx0IHRoZSBmaWxlICJDWUdXSU5fTElDRU5TRSIgZm9yCiBkZXRh
aWxzLiAqLwogCisjaWZuZGVmIF9DWUdIRUFQX0hfCisjZGVmaW5lIF9DWUdIRUFQX0hfCisKKyNp
bmNsdWRlICJwYXRoLmgiCisjaW5jbHVkZSAiZHRhYmxlLmgiCisvKiBmb3Igc2V0X2Vycm5vICov
CisjaW5jbHVkZSAiY3lnZXJybm8uaCIKKy8qIGZvciB2YXJpb3VzIGVycm51bWJlcnMgKi8KKyNp
bmNsdWRlIDxlcnJuby5oPgorCiAjdW5kZWYgY2ZyZWUKIAogZW51bSBjeWdoZWFwX3R5cGVzCkBA
IC0yNzMsMyArMjgzLDUgQEAgY2hhciAqX19zdGRjYWxsIGNzdHJkdXAgKGNvbnN0IGNoYXIgKikg
XwogY2hhciAqX19zdGRjYWxsIGNzdHJkdXAxIChjb25zdCBjaGFyICopIF9fYXR0cmlidXRlX18g
KChyZWdwYXJtKDEpKSk7CiB2b2lkIF9fc3RkY2FsbCBjeWdoZWFwX2luaXQgKCk7CiB9CisKKyNl
bmRpZiAvKiBfQ1lHSEVBUF9IXyAqLwpJbmRleDogY3lnc2VydmVyLmNjCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT
IGZpbGU6IC9jdnMvc3JjL3NyYy93aW5zdXAvY3lnd2luL2N5Z3NlcnZlci5jYyx2CnJldHJpZXZp
bmcgcmV2aXNpb24gMS40CmRpZmYgLXUgLXAgLXIxLjQgY3lnc2VydmVyLmNjCi0tLSBjeWdzZXJ2
ZXIuY2MJMTUgTWFyIDIwMDIgMjE6NTI6MDUgLTAwMDAJMS40CisrKyBjeWdzZXJ2ZXIuY2MJMjQg
TWF5IDIwMDIgMTE6Mjk6MDIgLTAwMDAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJjeWd3
aW4vY3lnc2VydmVyX3Byb2Nlc3MuaCIKICNpbmNsdWRlICJjeWd3aW4vY3lnc2VydmVyLmgiCiAj
aW5jbHVkZSAiY3lnc2VydmVyX3NobS5oIgorI2luY2x1ZGUgImN5Z3NlcnZlcl9zZW0uaCIKIAog
LyogZm9yIHF1aWV0ZXIgb3BlcmF0aW9uLCBzZXQgdG8gMCAqLwogI2RlZmluZSBERUJVRyAwCkBA
IC0xNTgsNiArMTU5LDggQEAgb3V0Ogogdm9pZAogY2xpZW50X3JlcXVlc3Q6OnNlcnZlICh0cmFu
c3BvcnRfbGF5ZXJfYmFzZSAqY29ubiwgY2xhc3MgcHJvY2Vzc19jYWNoZSAqY2FjaGUpCiB7Cisg
IGlmIChoZWFkZXIucmVxX2lkID09IENZR1NFUlZFUl9SRVFVRVNUX0lOVkFMSUQpCisgICAgcmV0
dXJuOwogICBwcmludGYgKCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KlxuIgogCSAgIkEgY2FsbCB0byB0aGUgYmFzZSBjbGllbnRfcmVxdWVzdCBjbGFzcyBoYXMgb2Nj
dXJlZFxuIgogCSAgIlRoaXMgaW5kaWNhdGVzIGEgbWlzbWF0Y2ggaW4gYSB2aXJ0dWFsIGZ1bmN0
aW9uIGRlZmluaXRpb24gc29tZXdoZXJlXG4iKTsKQEAgLTM2NSw3ICszNjgsOSBAQCBzZXJ2ZXJf
cmVxdWVzdDo6cHJvY2VzcyAoKQogICAgIGNhc2UgQ1lHU0VSVkVSX1JFUVVFU1RfU0hVVERPV046
CiAgICAgICByZXEgPSBuZXcgY2xpZW50X3JlcXVlc3Rfc2h1dGRvd24gKCk7IGJyZWFrOwogICAg
IGNhc2UgQ1lHU0VSVkVSX1JFUVVFU1RfU0hNX0dFVDoKLSAgICAgcmVxID0gbmV3IGNsaWVudF9y
ZXF1ZXN0X3NobSAoKTsgYnJlYWs7CisgICAgICByZXEgPSBuZXcgY2xpZW50X3JlcXVlc3Rfc2ht
ICgpOyBicmVhazsKKyAgICBjYXNlIENZR1NFUlZFUl9SRVFVRVNUX1NFTToKKyAgICAgIHJlcSA9
IG5ldyBjbGllbnRfcmVxdWVzdF9zZW0gKCk7IGJyZWFrOyAKICAgICBkZWZhdWx0OgogICAgICAg
cmVxID0gbmV3IGNsaWVudF9yZXF1ZXN0IChDWUdTRVJWRVJfUkVRVUVTVF9JTlZBTElELCAwKTsK
ICAgICAgIHJlcS0+aGVhZGVyLmVycm9yX2NvZGUgPSBFTk9TWVM7CkBAIC0zNzQsOCArMzc5LDIy
IEBAIHNlcnZlcl9yZXF1ZXN0Ojpwcm9jZXNzICgpCiAKICAgaWYgKHJlcS0+aGVhZGVyLmNiICE9
IHJlcV9wdHItPmNiKQogICAgIHsKLSAgICAgIGRlYnVnX3ByaW50ZiAoIk1pc21hdGNoIGluIHJl
cXVlc3QgYnVmZmVyIHNpemVzXG4iKTsKLSAgICAgIGdvdG8gb3V0OworICAgICAgaWYgKHJlcS0+
aGVhZGVyLnJlcV9pZCA9PSBDWUdTRVJWRVJfUkVRVUVTVF9JTlZBTElEKQorCXsKKwkgIC8vIHN1
Y2sgdGhlIGNvbm5lY3Rpb24gZHJ5CisJICBjaGFyIHRlbXBidWZbcmVxX3B0ci0+Y2JdOworCSAg
Ynl0ZXNfcmVhZCA9IGNvbm4tPnJlYWQgKCZ0ZW1wYnVmWzBdLCByZXFfcHRyLT5jYik7CisJICBp
ZiAoYnl0ZXNfcmVhZCAhPSByZXFfcHRyLT5jYikKKwkgICAgeworCSAgICAgIGRlYnVnX3ByaW50
ZiAoImVycm9yIHJlYWRpbmcgJWxkIC8gJWxkIGZyb20gY29ubmVjdGlvbiAoJWx1KVxuIiwgYnl0
ZXNfcmVhZCxyZXFfcHRyLT5jYiwgR2V0TGFzdEVycm9yICgpKTsKKwkgICAgICBnb3RvIG91dDsK
KwkgICAgfQorCX0KKyAgICAgIGVsc2UKKwl7CisgICAgICAgICAgZGVidWdfcHJpbnRmICgiTWlz
bWF0Y2ggaW4gcmVxdWVzdCBidWZmZXIgc2l6ZXNcbiIpOworICAgICAgICAgIGdvdG8gb3V0Owor
CX0KICAgICB9CiAKICAgaWYgKHJlcS0+aGVhZGVyLmNiKQpJbmRleDogY3lnd2luLmRpbgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvd2luc3VwL2N5Z3dpbi9jeWd3aW4uZGluLHYK
cmV0cmlldmluZyByZXZpc2lvbiAxLjQ2CmRpZmYgLXUgLXAgLXIxLjQ2IGN5Z3dpbi5kaW4KLS0t
IGN5Z3dpbi5kaW4JMTMgTWF5IDIwMDIgMTk6NTM6NDYgLTAwMDAJMS40NgorKysgY3lnd2luLmRp
bgkyNCBNYXkgMjAwMiAxMToyOTowMiAtMDAwMApAQCAtMTI1MiwzICsxMjUyLDExIEBAIGFjbHRv
dGV4dAogX2FjbHRvdGV4dCA9IGFjbHRvdGV4dAogYWNsZnJvbXRleHQKIF9hY2xmcm9tdGV4dCA9
IGFjbGZyb210ZXh0CitmdG9rCitzaG1hdAorc2htY3RsCitzaG1kdAorc2htZ2V0CitzZW1jdGwK
K3NlbWdldAorc2Vtb3AKSW5kZXg6IGRlYnVnLmNjCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMv
c3JjL3NyYy93aW5zdXAvY3lnd2luL2RlYnVnLmNjLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjMx
CmRpZmYgLXUgLXAgLXIxLjMxIGRlYnVnLmNjCi0tLSBkZWJ1Zy5jYwkyMiBGZWIgMjAwMiAxOToz
Mzo0MSAtMDAwMAkxLjMxCisrKyBkZWJ1Zy5jYwkyNCBNYXkgMjAwMiAxMToyOTowMiAtMDAwMApA
QCAtMzgsNiArMzgsOCBAQCB2b2lkCiB0aHJlYWRuYW1lX2luaXQgKCkKIHsKICAgbmV3X211dG8g
KHRocmVhZG5hbWVfbG9jayk7CisvLyAgc3RhdGljIG11dG8gdGhyZWFkbmFtZV9sb2NrIyNfc3Rv
cmFnZSBfX2F0dHJpYnV0ZV9fKChub2NvbW1vbikpIF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5k
YXRhX2N5Z3dpbl9ub2NvcHkiKSkpOworLy8gIHRocmVhZG5hbWVfbG9jayA9IHRocmVhZG5hbWVf
bG9jayMjX3N0b3JhZ2UgKHRocmVhZG5hbWVfbG9jayk7CiB9CiAKIHZvaWQgX19zdGRjYWxsCklu
ZGV4OiBkdGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvd2luc3VwL2N5
Z3dpbi9kdGFibGUuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xNgpkaWZmIC11IC1wIC1yMS4x
NiBkdGFibGUuaAotLS0gZHRhYmxlLmgJMjIgRmViIDIwMDIgMTk6MzM6NDEgLTAwMDAJMS4xNgor
KysgZHRhYmxlLmgJMjQgTWF5IDIwMDIgMTE6Mjk6MDIgLTAwMDAKQEAgLTgsNiArOCw5IEBAIFRo
aXMgc29mdHdhcmUgaXMgYSBjb3B5cmlnaHRlZCB3b3JrIGxpY2UKIEN5Z3dpbiBsaWNlbnNlLiAg
UGxlYXNlIGNvbnN1bHQgdGhlIGZpbGUgIkNZR1dJTl9MSUNFTlNFIiBmb3IKIGRldGFpbHMuICov
CiAKKyNpZm5kZWYgX0RUQUJMRV9IXworI2RlZmluZSBfRFRBQkxFX0hfCisKIC8qIEluaXRpYWwg
YW5kIGluY3JlbWVudCB2YWx1ZXMgZm9yIGN5Z3dpbidzIGZkIHRhYmxlICovCiAjZGVmaW5lIE5P
RklMRV9JTkNSICAgIDMyCiAKQEAgLTg1LDMgKzg4LDUgQEAgZXh0ZXJuIGR0YWJsZSBmZHRhYjsK
IAogZXh0ZXJuICJDIiBpbnQgZ2V0ZmR0YWJzaXplICgpOwogZXh0ZXJuICJDIiB2b2lkIHNldGZk
dGFic2l6ZSAoaW50KTsKKworI2VuZGlmIC8qIF9EVEFCTEVfSF8gKi8KSW5kZXg6IGZoYW5kbGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL3dpbnN1cC9jeWd3aW4vZmhhbmRs
ZXIuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMTYKZGlmZiAtdSAtcCAtcjEuMTE2IGZoYW5k
bGVyLmgKLS0tIGZoYW5kbGVyLmgJMjIgTWF5IDIwMDIgMjI6MDk6NTcgLTAwMDAJMS4xMTYKKysr
IGZoYW5kbGVyLmgJMjQgTWF5IDIwMDIgMTE6Mjk6MDUgLTAwMDAKQEAgLTEyLDYgKzEyLDcgQEAg
ZGV0YWlscy4gKi8KICNkZWZpbmUgX0ZIQU5ETEVSX0hfCiAKICNpbmNsdWRlIDxzeXMvaW9jdGwu
aD4KKyNpbmNsdWRlICJzZWN1cml0eS5oIgogCiBlbnVtCiB7CkluZGV4OiBnbW9uLmMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL3dpbnN1cC9jeWd3aW4vZ21vbi5jLHYKcmV0cmll
dmluZyByZXZpc2lvbiAxLjQKZGlmZiAtdSAtcCAtcjEuNCBnbW9uLmMKLS0tIGdtb24uYwk3IFNl
cCAyMDAxIDIxOjMyOjA0IC0wMDAwCTEuNAorKysgZ21vbi5jCTI0IE1heSAyMDAyIDExOjI5OjA1
IC0wMDAwCkBAIC00NCw2ICs0NCw3IEBAIHN0YXRpYyBjaGFyIHJjc2lkW10gPSAiJE9wZW5CU0Q6
IGdtb24uYywKICNpbmNsdWRlIDxnbW9uLmg+CiAKICNpbmNsdWRlIDxwcm9maWwuaD4KKyNpbmNs
dWRlIDx3aW5kb3dzLmg+CiAKIC8qIFhYWCBuZWVkZWQ/ICovCiAvL2V4dGVybiBjaGFyICptaW5i
cmsgX19hc20gKCJtaW5icmsiKTsKQEAgLTU4LDEwICs1OSwxNyBAQCBzdGF0aWMgaW50CXNfc2Nh
bGU7CiAKIHZvaWQJbW9uY29udHJvbCBfX1AoKGludCkpOwogCitIQU5ETEUgZ21vbl9oZWFwID0g
SU5WQUxJRF9IQU5ETEVfVkFMVUU7CisKIHN0YXRpYyB2b2lkICoKIGZha2Vfc2JyayhpbnQgc2l6
ZSkKIHsKLSAgICByZXR1cm4gbWFsbG9jKHNpemUpOworLy8gZG9lcyBub3QgcGxheSBuaWNlIHdo
ZW4gcHJvZmlsaW5nIGN5Z3dpbiBpdHNlbGYKKy8vICAgIHJldHVybiBtYWxsb2Moc2l6ZSk7Cisg
ICAgdm9pZCAqcnYgPSBIZWFwQWxsb2MoZ21vbl9oZWFwLCAwLCBzaXplKTsKKyAgICBpZiAocnYg
PT0gTlVMTCkKKyAgICAgIHJldHVybiAodm9pZCAqKSAtMTsKKyAgICByZXR1cm4gcnY7CiB9CiAK
IHZvaWQKQEAgLTcyLDYgKzgwLDggQEAgbW9uc3RhcnR1cChsb3dwYywgaGlnaHBjKQogCXJlZ2lz
dGVyIGludCBvOwogCWNoYXIgKmNwOwogCXN0cnVjdCBnbW9ucGFyYW0gKnAgPSAmX2dtb25wYXJh
bTsKKworCWdtb25faGVhcCA9IEdldFByb2Nlc3NIZWFwKCk7CiAKIAkvKgogCSAqIHJvdW5kIGxv
d3BjIGFuZCBoaWdocGMgdG8gbXVsdGlwbGVzIG9mIHRoZSBkZW5zaXR5IHdlJ3JlIHVzaW5nCklu
ZGV4OiBtY291bnQuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvd2luc3VwL2N5
Z3dpbi9tY291bnQuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zCmRpZmYgLXUgLXAgLXIxLjMg
bWNvdW50LmMKLS0tIG1jb3VudC5jCTI0IEp1biAyMDAxIDIyOjI2OjUxIC0wMDAwCTEuMworKysg
bWNvdW50LmMJMjQgTWF5IDIwMDIgMTE6Mjk6MDUgLTAwMDAKQEAgLTE2OSw1ICsxNjksMTAgQEAg
b3ZlcmZsb3c6CiAgKiBBY3R1YWwgZGVmaW5pdGlvbiBvZiBtY291bnQgZnVuY3Rpb24uICBEZWZp
bmVkIGluIDxtYWNoaW5lL3Byb2ZpbGUuaD4sCiAgKiB3aGljaCBpcyBpbmNsdWRlZCBieSA8c3lz
L2dtb24uaD4KICAqLwotTUNPVU5UCisvLyBNQ09VTlQKIAorCit2b2lkIG1jb3VudCh2b2lkKQor
eworICBfbWNvdW50IChfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MgKDEpLCBfX2J1aWx0aW5fcmV0
dXJuX2FkZHJlc3MgKDApKTsKK30KSW5kZXg6IHBhdGguaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAv
Y3ZzL3NyYy9zcmMvd2luc3VwL2N5Z3dpbi9wYXRoLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEu
NDEKZGlmZiAtdSAtcCAtcjEuNDEgcGF0aC5oCi0tLSBwYXRoLmgJMTIgTWF5IDIwMDIgMDM6MDg6
NTkgLTAwMDAJMS40MQorKysgcGF0aC5oCTI0IE1heSAyMDAyIDExOjI5OjA1IC0wMDAwCkBAIC04
LDYgKzgsMTEgQEAgVGhpcyBzb2Z0d2FyZSBpcyBhIGNvcHlyaWdodGVkIHdvcmsgbGljZQogQ3ln
d2luIGxpY2Vuc2UuICBQbGVhc2UgY29uc3VsdCB0aGUgZmlsZSAiQ1lHV0lOX0xJQ0VOU0UiIGZv
cgogZGV0YWlscy4gKi8KIAorI2lmbmRlZiBfUEFUSF9IXworI2RlZmluZSBfUEFUSF9IXworCisj
aW5jbHVkZSAiZmhhbmRsZXIuaCIKKwogc3RydWN0IHN1ZmZpeF9pbmZvCiB7CiAgIGNvbnN0IGNo
YXIgKm5hbWU7CkBAIC0xOTEsMyArMTk2LDUgQEAgaW50IHBhdGhtYXRjaCAoY29uc3QgY2hhciAq
cGF0aDEsIGNvbnN0IAogaW50IHBhdGhubWF0Y2ggKGNvbnN0IGNoYXIgKnBhdGgxLCBjb25zdCBj
aGFyICpwYXRoMiwgaW50IGxlbikgX19hdHRyaWJ1dGVfXyAoKHJlZ3Bhcm0gKDIpKSk7CiAKIGlu
dCBwYXRoX3ByZWZpeF9wIChjb25zdCBjaGFyICpwYXRoMSwgY29uc3QgY2hhciAqcGF0aDIsIGlu
dCBsZW4xKSBfX2F0dHJpYnV0ZV9fICgocmVncGFybSAoMykpKTsKKworI2VuZGlmIC8qIF9QQVRI
X0hfICovCkluZGV4OiBwZXJ0aHJlYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9z
cmMvd2luc3VwL2N5Z3dpbi9wZXJ0aHJlYWQuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS44CmRp
ZmYgLXUgLXAgLXIxLjggcGVydGhyZWFkLmgKLS0tIHBlcnRocmVhZC5oCTMwIE5vdiAyMDAxIDA2
OjE5OjU4IC0wMDAwCTEuOAorKysgcGVydGhyZWFkLmgJMjQgTWF5IDIwMDIgMTE6Mjk6MDUgLTAw
MDAKQEAgLTEwLDYgKzEwLDE2IEBAIFRoaXMgc29mdHdhcmUgaXMgYSBjb3B5cmlnaHRlZCB3b3Jr
IGxpY2UKIEN5Z3dpbiBsaWNlbnNlLiAgUGxlYXNlIGNvbnN1bHQgdGhlIGZpbGUgIkNZR1dJTl9M
SUNFTlNFIiBmb3IKIGRldGFpbHMuICovCiAKKyNpbmNsdWRlICJ3aW5zdXAuaCIKKyNpbmNsdWRl
ICJleGNlcHRpb25zLmgiCisjaW5jbHVkZSAic3luYy5oIgorI2luY2x1ZGUgInNpZ3Byb2MuaCIK
KyNpbmNsdWRlICJwaW5mby5oIgorI2lmZGVmIE5FRURfVkZPUksKKyNpbmNsdWRlICJjeWdoZWFw
LmgiCisjaW5jbHVkZSAiY2hpbGRfaW5mby5oIgorI2VuZGlmCisKICNkZWZpbmUgUFRNQUdJQyAw
eDc3MzY2Mzc3CiAKIHN0cnVjdCBfcmVlbnQ7CkBAIC00MSw3ICs1MSw3IEBAIHB1YmxpYzoKIGNs
YXNzIHBlcl90aHJlYWRfd2FpdHEgOiBwdWJsaWMgcGVyX3RocmVhZAogewogcHVibGljOgotICBw
ZXJfdGhyZWFkX3dhaXRxICgpIDogcGVyX3RocmVhZCAoMCkge30KKyAgcGVyX3RocmVhZF93YWl0
cSAoKTsKICAgdm9pZCAqZ2V0ICgpIHtyZXR1cm4gKHdhaXRxICopIHRoaXMtPnBlcl90aHJlYWQ6
OmdldCAoKTt9CiAgIHZvaWQgKmNyZWF0ZSAoKSB7cmV0dXJuICh3YWl0cSAqKSB0aGlzLT5wZXJf
dGhyZWFkOjpjcmVhdGUgKCk7fQogICBzaXplX3Qgc2l6ZSAoKSB7cmV0dXJuIHNpemVvZiAod2Fp
dHEpO30KQEAgLTYxLDYgKzcxLDcgQEAgc3RydWN0IHZmb3JrX3NhdmUKIGNsYXNzIHBlcl90aHJl
YWRfdmZvcmsgOiBwdWJsaWMgcGVyX3RocmVhZAogewogcHVibGljOgorICBwZXJfdGhyZWFkX3Zm
b3JrKCk7CiAgIHZmb3JrX3NhdmUgKnZhbCAoKSB7IHJldHVybiAodmZvcmtfc2F2ZSAqKSB0aGlz
LT5wZXJfdGhyZWFkOjpnZXQgKCk7IH0KICAgdmZvcmtfc2F2ZSAqY3JlYXRlICgpIHtyZXR1cm4g
KHZmb3JrX3NhdmUgKikgdGhpcy0+cGVyX3RocmVhZDo6Y3JlYXRlICgpO30KICAgc2l6ZV90IHNp
emUgKCkge3JldHVybiBzaXplb2YgKHZmb3JrX3NhdmUpO30KQEAgLTg2LDYgKzk3LDcgQEAgc3Ry
dWN0IHNpZ25hbF9kaXNwYXRjaAogCiBzdHJ1Y3QgcGVyX3RocmVhZF9zaWduYWxfZGlzcGF0Y2gg
OiBwdWJsaWMgcGVyX3RocmVhZAogeworICBwZXJfdGhyZWFkX3NpZ25hbF9kaXNwYXRjaCgpOwog
ICBzaWduYWxfZGlzcGF0Y2ggKmdldCAoKSB7IHJldHVybiAoc2lnbmFsX2Rpc3BhdGNoICopIHRo
aXMtPnBlcl90aHJlYWQ6OmdldCAoKTsgfQogICBzaWduYWxfZGlzcGF0Y2ggKmNyZWF0ZSAoKSB7
cmV0dXJuIChzaWduYWxfZGlzcGF0Y2ggKikgdGhpcy0+cGVyX3RocmVhZDo6Y3JlYXRlICgpO30K
ICAgc2l6ZV90IHNpemUgKCkge3JldHVybiBzaXplb2YgKHNpZ25hbF9kaXNwYXRjaCk7fQpJbmRl
eDogcGluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvd2luc3VwL2N5Z3dp
bi9waW5mby5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjM3CmRpZmYgLXUgLXAgLXIxLjM3IHBp
bmZvLmgKLS0tIHBpbmZvLmgJMTggTWF5IDIwMDIgMjA6Mjc6NDkgLTAwMDAJMS4zNworKysgcGlu
Zm8uaAkyNCBNYXkgMjAwMiAxMToyOTowNSAtMDAwMApAQCAtOCw2ICs4LDkgQEAgVGhpcyBzb2Z0
d2FyZSBpcyBhIGNvcHlyaWdodGVkIHdvcmsgbGljZQogQ3lnd2luIGxpY2Vuc2UuICBQbGVhc2Ug
Y29uc3VsdCB0aGUgZmlsZSAiQ1lHV0lOX0xJQ0VOU0UiIGZvcgogZGV0YWlscy4gKi8KIAorI2lm
bmRlZiBfUElORk9fSF8KKyNkZWZpbmUgX1BJTkZPX0hfCisKIC8qIFNpZ25hbCBjb25zdGFudHMg
KGhhdmUgdG8gZGVmaW5lIHRoZW0gaGVyZSwgdW5mb3J0dW5hdGVseSkgKi8KIAogZW51bQpAQCAt
MjA2LDMgKzIwOSw1IEBAIGludCBfX3N0ZGNhbGwgZml4dXBfc2htc19hZnRlcl9mb3JrICgpOwog
CiB2b2lkIF9fc3RkY2FsbCBmaWxsX3J1c2FnZSAoc3RydWN0IHJ1c2FnZSAqLCBIQU5ETEUpOwog
dm9pZCBfX3N0ZGNhbGwgYWRkX3J1c2FnZSAoc3RydWN0IHJ1c2FnZSAqLCBzdHJ1Y3QgcnVzYWdl
ICopOworCisjZW5kaWYgLyogX1BJTkZPX0hfICovCkluZGV4OiBzZWN1cml0eS5jYwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvd2luc3VwL2N5Z3dpbi9zZWN1cml0eS5jYyx2CnJl
dHJpZXZpbmcgcmV2aXNpb24gMS45MApkaWZmIC11IC1wIC1yMS45MCBzZWN1cml0eS5jYwotLS0g
c2VjdXJpdHkuY2MJMjEgTWF5IDIwMDIgMTQ6NTA6MjYgLTAwMDAJMS45MAorKysgc2VjdXJpdHku
Y2MJMjQgTWF5IDIwMDIgMTE6Mjk6MDYgLTAwMDAKQEAgLTE2NjMsMyArMTY2MywxMCBAQCBzZXRf
ZmlsZV9hdHRyaWJ1dGUgKGludCB1c2VfbnRzZWMsIGNvbnN0CiAJCQkgICAgIG15c2VsZi0+dWlk
LCBteXNlbGYtPmdpZCwKIAkJCSAgICAgYXR0cmlidXRlLCBjeWdoZWFwLT51c2VyLmxvZ3NydiAo
KSk7CiB9CisKK2N5Z3NpZDo6Y3lnc2lkICgpIDogcHNpZCAoKFBTSUQpIHNidWYpIHt9CitjeWdz
aWQ6OmN5Z3NpZCAoY29uc3QgUFNJRCBuc2lkKSB7ICp0aGlzID0gbnNpZDsgfQorY3lnc2lkOjpj
eWdzaWQgKGNvbnN0IGNoYXIgKm5zdHJzaWQpIHsgKnRoaXMgPSBuc3Ryc2lkOyB9CisKK2NvbnN0
IFBTSUQgY3lnc2lkOjpvcGVyYXRvcj0gKGNvbnN0IGNoYXIgKm5zaWRzdHIpCisgICAgeyByZXR1
cm4gZ2V0ZnJvbXN0ciAobnNpZHN0cik7IH0KSW5kZXg6IHNlY3VyaXR5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS
Q1MgZmlsZTogL2N2cy9zcmMvc3JjL3dpbnN1cC9jeWd3aW4vc2VjdXJpdHkuaCx2CnJldHJpZXZp
bmcgcmV2aXNpb24gMS4yMwpkaWZmIC11IC1wIC1yMS4yMyBzZWN1cml0eS5oCi0tLSBzZWN1cml0
eS5oCTE2IE1heSAyMDAyIDA5OjMwOjQ4IC0wMDAwCTEuMjMKKysrIHNlY3VyaXR5LmgJMjQgTWF5
IDIwMDIgMTE6Mjk6MDYgLTAwMDAKQEAgLTgsNiArOCw5IEBAIFRoaXMgc29mdHdhcmUgaXMgYSBj
b3B5cmlnaHRlZCB3b3JrIGxpY2UKIEN5Z3dpbiBsaWNlbnNlLiAgUGxlYXNlIGNvbnN1bHQgdGhl
IGZpbGUgIkNZR1dJTl9MSUNFTlNFIiBmb3IKIGRldGFpbHMuICovCiAKKyNpZm5kZWYgX1NFQ1VS
SVRZX0hfCisjZGVmaW5lIF9TRUNVUklUWV9IXworCiAjZGVmaW5lIERPTlRfSU5IRVJJVCAoMCkK
ICNkZWZpbmUgSU5IRVJJVF9BTEwgIChDT05UQUlORVJfSU5IRVJJVF9BQ0V8T0JKRUNUX0lOSEVS
SVRfQUNFKQogI2RlZmluZSBJTkhFUklUX09OTFkgKElOSEVSSVRfT05MWV9BQ0V8Q09OVEFJTkVS
X0lOSEVSSVRfQUNFfE9CSkVDVF9JTkhFUklUX0FDRSkKQEAgLTQ3LDEyICs1MCwxMSBAQCBwdWJs
aWM6CiAgICAgeyByZXR1cm4gYXNzaWduIChuc2lkKTsgfQogICBpbmxpbmUgY29uc3QgUFNJRCBv
cGVyYXRvcj0gKGNvbnN0IFBTSUQgbnNpZCkKICAgICB7IHJldHVybiBhc3NpZ24gKG5zaWQpOyB9
Ci0gIGlubGluZSBjb25zdCBQU0lEIG9wZXJhdG9yPSAoY29uc3QgY2hhciAqbnNpZHN0cikKLSAg
ICB7IHJldHVybiBnZXRmcm9tc3RyIChuc2lkc3RyKTsgfQorICBjb25zdCBQU0lEIG9wZXJhdG9y
PSAoY29uc3QgY2hhciAqbnNpZHN0cik7CiAKLSAgaW5saW5lIGN5Z3NpZCAoKSA6IHBzaWQgKChQ
U0lEKSBzYnVmKSB7fQotICBpbmxpbmUgY3lnc2lkIChjb25zdCBQU0lEIG5zaWQpIHsgKnRoaXMg
PSBuc2lkOyB9Ci0gIGlubGluZSBjeWdzaWQgKGNvbnN0IGNoYXIgKm5zdHJzaWQpIHsgKnRoaXMg
PSBuc3Ryc2lkOyB9CisgIGN5Z3NpZCAoKTsKKyAgY3lnc2lkIChjb25zdCBQU0lEIG5zaWQpOwor
ICBjeWdzaWQgKGNvbnN0IGNoYXIgKm5zdHJzaWQpOwogCiAgIGlubGluZSBQU0lEIHNldCAoKSB7
IHJldHVybiBwc2lkID0gKFBTSUQpIHNidWY7IH0KIApAQCAtMjIzLDMgKzIyNSw1IEBAIHNlY191
c2VyIChjaGFyIHNhX2J1ZltdLCBQU0lEIHNpZCA9IE5VTEwKIHsKICAgcmV0dXJuIGFsbG93X250
c2VjID8gX19zZWNfdXNlciAoc2FfYnVmLCBzaWQsIFRSVUUpIDogJnNlY19ub25lX25paDsKIH0K
KworI2VuZGlmIC8qIF9TRUNVUklUWV9IXyAqLwpJbmRleDogc2lncHJvYy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
UkNTIGZpbGU6IC9jdnMvc3JjL3NyYy93aW5zdXAvY3lnd2luL3NpZ3Byb2MuaCx2CnJldHJpZXZp
bmcgcmV2aXNpb24gMS40OApkaWZmIC11IC1wIC1yMS40OCBzaWdwcm9jLmgKLS0tIHNpZ3Byb2Mu
aAkxMyBKYW4gMjAwMiAyMDowMzowMyAtMDAwMAkxLjQ4CisrKyBzaWdwcm9jLmgJMjQgTWF5IDIw
MDIgMTE6Mjk6MDYgLTAwMDAKQEAgLTgsNiArOCw5IEBAIFRoaXMgc29mdHdhcmUgaXMgYSBjb3B5
cmlnaHRlZCB3b3JrIGxpY2UKIEN5Z3dpbiBsaWNlbnNlLiAgUGxlYXNlIGNvbnN1bHQgdGhlIGZp
bGUgIkNZR1dJTl9MSUNFTlNFIiBmb3IKIGRldGFpbHMuICovCiAKKyNpZm5kZWYgX1NJR1BST0Nf
SF8KKyNkZWZpbmUgX1NJR1BST0NfSF8KKwogI2luY2x1ZGUgPHNpZ25hbC5oPgogCiAjZGVmaW5l
IEVYSVRfU0lHTkFMCSAweDAxMDAwMApAQCAtMTI0LDMgKzEyNyw1IEBAIGV4dGVybiBjaGFyIG15
c2VsZl9ub3dhaXRfbm9ubWFpbl9kdW1teVsKIAogI2RlZmluZSBteXNlbGZfbm93YWl0ICgoX3Bp
bmZvICopbXlzZWxmX25vd2FpdF9kdW1teSkKICNkZWZpbmUgbXlzZWxmX25vd2FpdF9ub25tYWlu
ICgoX3BpbmZvICopbXlzZWxmX25vd2FpdF9ub25tYWluX2R1bW15KQorCisjZW5kaWYgLyogX1NJ
R1BST0dfSF8gKi8KSW5kZXg6IHN5bmMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9z
cmMvd2luc3VwL2N5Z3dpbi9zeW5jLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjAKZGlmZiAt
dSAtcCAtcjEuMjAgc3luYy5oCi0tLSBzeW5jLmgJMjIgRmViIDIwMDIgMTk6MzM6NDEgLTAwMDAJ
MS4yMAorKysgc3luYy5oCTI0IE1heSAyMDAyIDExOjI5OjA2IC0wMDAwCkBAIC0xMCw2ICsxMCw5
IEBAIFRoaXMgc29mdHdhcmUgaXMgYSBjb3B5cmlnaHRlZCB3b3JrIGxpY2UKIEN5Z3dpbiBsaWNl
bnNlLiAgUGxlYXNlIGNvbnN1bHQgdGhlIGZpbGUgIkNZR1dJTl9MSUNFTlNFIiBmb3IKIGRldGFp
bHMuICovCiAKKyNpZm5kZWYgX1NZTkNfSF8KKyNkZWZpbmUgX1NZTkNfSF8KKwogLyogRklYTUU6
IE5vdGUgdGhhdCBjdXJyZW50bHkgdGhpcyBjbGFzcyBjYW5ub3QgYmUgYWxsb2NhdGVkIHZpYSBg
bmV3JyBzaW5jZQogICAgdGhlcmUgYXJlIGlzc3VlcyB3aXRoIG1hbGxvYyBhbmQgZm9yay4gKi8K
IGNsYXNzIG11dG8KQEAgLTQ3LDMgKzUwLDUgQEAgZXh0ZXJuIG11dG8gbXV0b19zdGFydDsKICAg
c3RhdGljIG11dG8gX19uYW1lIyNfc3RvcmFnZSBfX2F0dHJpYnV0ZV9fKChub2NvbW1vbikpIF9f
YXR0cmlidXRlX18oKHNlY3Rpb24oIi5kYXRhX2N5Z3dpbl9ub2NvcHkiKSkpOyBcCiAgIF9fbmFt
ZSA9IF9fbmFtZSMjX3N0b3JhZ2UuaW5pdCAoI19fbmFtZSk7IFwKIH0pCisKKyNlbmRpZiAvKiBf
U1lOQ19IXyAqLwpJbmRleDogdGhyZWFkLmNjCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3Jj
L3NyYy93aW5zdXAvY3lnd2luL3RocmVhZC5jYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS42Ngpk
aWZmIC11IC1wIC1yMS42NiB0aHJlYWQuY2MKLS0tIHRocmVhZC5jYwkyIE1heSAyMDAyIDExOjI2
OjIyIC0wMDAwCTEuNjYKKysrIHRocmVhZC5jYwkyNCBNYXkgMjAwMiAxMToyOToxMCAtMDAwMApA
QCAtNDgsNiArNDgsMTQgQEAgZGV0YWlscy4gKi8KIAogZXh0ZXJuIGludCB0aHJlYWRzYWZlOwog
CisvKiBNVGludGVyZmFjZSAqLworTVRpbnRlcmZhY2U6Ok1UaW50ZXJmYWNlICgpOnJlZW50X2lu
ZGV4ICgwKSwgaW5kZXhhbGxvY2F0ZWQgKDApLCB0aHJlYWRjb3VudCAoMSkKK3sKKyAgcHRocmVh
ZF9wcmVwYXJlID0gTlVMTDsKKyAgcHRocmVhZF9jaGlsZCAgID0gTlVMTDsKKyAgcHRocmVhZF9w
YXJlbnQgID0gTlVMTDsKK30KKwogLypwdGhyZWFkX2tleV9kZXN0cnVjdG9yX2xpc3QgY2xhc3M6
IHRvLWJlIHRocmVhZHNhZmUgc2luZ2xlIGxpbmtlZCBsaXN0CiAgKkZJWE1FOiBQdXQgbWUgaW4g
YSBkZWRpY2F0ZWQgZmlsZSwgb3IgYSBsZWFzdCBhIHRvb2xzIGFyZWEgIQogICovCkluZGV4OiB0
aHJlYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvd2luc3VwL2N5Z3dpbi90
aHJlYWQuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zMwpkaWZmIC11IC1wIC1yMS4zMyB0aHJl
YWQuaAotLS0gdGhyZWFkLmgJMTAgRmViIDIwMDIgMTM6NTA6MTMgLTAwMDAJMS4zMworKysgdGhy
ZWFkLmgJMjQgTWF5IDIwMDIgMTE6Mjk6MTAgLTAwMDAKQEAgLTM4MSwxMiArMzgxLDcgQEAgcHVi
bGljOgogICB2b2lkIEluaXQgKGludCk7CiAgIHZvaWQgZml4dXBfYWZ0ZXJfZm9yayAodm9pZCk7
CiAKLSAgICBNVGludGVyZmFjZSAoKTpyZWVudF9pbmRleCAoMCksIGluZGV4YWxsb2NhdGVkICgw
KSwgdGhyZWFkY291bnQgKDEpCi0gIHsKLSAgICBwdGhyZWFkX3ByZXBhcmUgPSBOVUxMOwotICAg
IHB0aHJlYWRfY2hpbGQgICA9IE5VTEw7Ci0gICAgcHRocmVhZF9wYXJlbnQgID0gTlVMTDsKLSAg
fQorICAgIE1UaW50ZXJmYWNlICgpOwogfTsKIAogdm9pZCBfX3B0aHJlYWRfYXRmb3JrcHJlcGFy
ZSh2b2lkKTsKSW5kZXg6IHdpbnN1cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3Ny
Yy93aW5zdXAvY3lnd2luL3dpbnN1cC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjg5CmRpZmYg
LXUgLXAgLXIxLjg5IHdpbnN1cC5oCi0tLSB3aW5zdXAuaAkyIE1heSAyMDAyIDA0OjEzOjQ4IC0w
MDAwCTEuODkKKysrIHdpbnN1cC5oCTI0IE1heSAyMDAyIDExOjI5OjEwIC0wMDAwCkBAIC04LDYg
KzgsOSBAQCBUaGlzIHNvZnR3YXJlIGlzIGEgY29weXJpZ2h0ZWQgd29yayBsaWNlCiBDeWd3aW4g
bGljZW5zZS4gIFBsZWFzZSBjb25zdWx0IHRoZSBmaWxlICJDWUdXSU5fTElDRU5TRSIgZm9yCiBk
ZXRhaWxzLiAqLwogCisjaWZuZGVmIF9XSU5TVVBfSF8KKyNkZWZpbmUgX1dJTlNVUF9IXworCiAj
aWZkZWYgSEFWRV9DT05GSUdfSAogIyBpbmNsdWRlICJjb25maWcuaCIKICNlbmRpZgpAQCAtMjI4
LDkgKzIzMSw2IEBAIGV4dGVybiB2b2lkIG11bHRpcGxlX2N5Z3dpbl9wcm9ibGVtIChjb24KIGV4
dGVybiAiQyIgdm9pZCBfX21hbGxvY19sb2NrIChzdHJ1Y3QgX3JlZW50ICopOwogZXh0ZXJuICJD
IiB2b2lkIF9fbWFsbG9jX3VubG9jayAoc3RydWN0IF9yZWVudCAqKTsKIAotZXh0ZXJuICJDIiB2
b2lkIF9fbWFsbG9jX2xvY2sgKHN0cnVjdCBfcmVlbnQgKik7Ci1leHRlcm4gIkMiIHZvaWQgX19t
YWxsb2NfdW5sb2NrIChzdHJ1Y3QgX3JlZW50ICopOwotCiBjbGFzcyBwYXRoX2NvbnY7CiBpbnQg
X19zdGRjYWxsIHN0YXRfd29ya2VyIChjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgX19zdGF0NjQg
KmJ1ZiwgaW50IG5vZm9sbG93LAogCQkJICAgcGF0aF9jb252ICpwYyA9IE5VTEwpIF9fYXR0cmli
dXRlX18gKChyZWdwYXJtICgzKSkpOwpAQCAtMjg5LDMgKzI4OSw0IEBAIGV4dGVybiBITU9EVUxF
IGN5Z3dpbl9obW9kdWxlOwogZXh0ZXJuIHN0cnVjdCBXU0FEYXRhIHdzYWRhdGE7CiAKICNlbmRp
ZiAvKiBkZWZpbmVkIF9fY3BsdXNwbHVzICovCisjZW5kaWYgLyogX1dJTlNVUF9IXyAqLwpJbmRl
eDogaW5jbHVkZS9jeWd3aW4vY3lnc2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9z
cmMvc3JjL3dpbnN1cC9jeWd3aW4vaW5jbHVkZS9jeWd3aW4vY3lnc2VydmVyLmgsdgpyZXRyaWV2
aW5nIHJldmlzaW9uIDEuMwpkaWZmIC11IC1wIC1yMS4zIGN5Z3NlcnZlci5oCi0tLSBpbmNsdWRl
L2N5Z3dpbi9jeWdzZXJ2ZXIuaAkxMyBNYXIgMjAwMiAwMjozNDowNSAtMDAwMAkxLjMKKysrIGlu
Y2x1ZGUvY3lnd2luL2N5Z3NlcnZlci5oCTI0IE1heSAyMDAyIDExOjI5OjEwIC0wMDAwCkBAIC0z
Myw2ICszMyw3IEBAIHR5cGVkZWYgZW51bSB7CiAgIENZR1NFUlZFUl9SRVFVRVNUX0FUVEFDSF9U
VFksCiAgIENZR1NFUlZFUl9SRVFVRVNUX1NIVVRET1dOLAogICBDWUdTRVJWRVJfUkVRVUVTVF9T
SE1fR0VULAorICBDWUdTRVJWRVJfUkVRVUVTVF9TRU0sCiAgIENZR1NFUlZFUl9SRVFVRVNUX0xB
U1QKIH0gY3lnc2VydmVyX3JlcXVlc3RfY29kZTsKIApJbmRleDogaW5jbHVkZS9jeWd3aW4vY3ln
c2VydmVyX3RyYW5zcG9ydF9waXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3Ny
Yy93aW5zdXAvY3lnd2luL2luY2x1ZGUvY3lnd2luL2N5Z3NlcnZlcl90cmFuc3BvcnRfcGlwZXMu
aCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zCmRpZmYgLXUgLXAgLXIxLjMgY3lnc2VydmVyX3Ry
YW5zcG9ydF9waXBlcy5oCi0tLSBpbmNsdWRlL2N5Z3dpbi9jeWdzZXJ2ZXJfdHJhbnNwb3J0X3Bp
cGVzLmgJMTMgTWFyIDIwMDIgMDI6MzQ6MDUgLTAwMDAJMS4zCisrKyBpbmNsdWRlL2N5Z3dpbi9j
eWdzZXJ2ZXJfdHJhbnNwb3J0X3BpcGVzLmgJMjQgTWF5IDIwMDIgMTE6Mjk6MTAgLTAwMDAKQEAg
LTI5LDExICsyOSwxMSBAQCBjbGFzcyB0cmFuc3BvcnRfbGF5ZXJfcGlwZXMgOiBwdWJsaWMgdHJh
CiAgIHByaXZhdGU6CiAgICAgLyogZm9yIHBpcGUgYmFzZWQgY29tbXVuaWNhdGlvbnMgKi8KICAg
ICB2b2lkIGluaXRfc2VjdXJpdHkgKCk7Ci0gICAgU0VDVVJJVFlfREVTQ1JJUFRPUiBzZDsKLSAg
ICBTRUNVUklUWV9BVFRSSUJVVEVTIHNlY19ub25lX25paCwgc2VjX2FsbF9uaWg7CisgICAgdHJh
bnNwb3J0X2xheWVyX3BpcGVzIChIQU5ETEUgbmV3X3BpcGUpOwogICAgIGNoYXIgcGlwZV9uYW1l
IFtNQVhfUEFUSF07CiAgICAgSEFORExFIHBpcGU7CisgICAgU0VDVVJJVFlfREVTQ1JJUFRPUiBz
ZDsKKyAgICBTRUNVUklUWV9BVFRSSUJVVEVTIHNlY19ub25lX25paCwgc2VjX2FsbF9uaWg7CiAg
ICAgYm9vbCBpbml0ZWQ7Ci0gICAgdHJhbnNwb3J0X2xheWVyX3BpcGVzIChIQU5ETEUgbmV3X3Bp
cGUpOwogfTsKICNlbmRpZiAvKiBfQ1lHU0VSVkVSX1RSQU5TUE9SVF9QSVBFU18gKi8K

------_=_NextPart_001_01C20316.C551574C--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019