gnutls support is ready
"Anibal Avelar" <[email protected]> Tue, 12 Jun 2007 09:58:15 -0500
| Newsgroups | gmane.network.centerim.devel,gmane.network.centerim.user,gmane.network.centericq |
|---|---|
| Message-ID | <[email protected]> |
------=_Part_6045_10111295.1181660295619
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
Hi everybody.
Because I saw centerim has problems to work with gnutls I made the
definitive support to GNUTLS library. The normal way was to use
openssl instead gnutls.
But at least into Debian, the openssl license is GPL non-compatible,
for that is better to use gnutls support.
Whom were affected?
+ Jabber with SSL support (necessary to gTalk)
+ Gadu Gadu with SSL support
I proved with this:
./configure --with-ssl
Installing libgnutls-dev instead libssl-dev, Jabber/gTalk does not work.
I check what was the problem and I found it.
When you gives the --with-ssl parameter centerim to find for OpenSSL
by default, it didn't find it, check for gnutls support. This is good.
But the problem is:
Inside connwrap/configure.ac and libgadu/configure.ac files aren't
prepare to receive this parameters, for example in
connwrap/configure.ac:
if test -n "$with_ssl" -a x"$with_ssl" != xno; then
AC_DEFINE(HAVE_SSL)
if test -n "$with_openssl" -a x"$with_openssl" != xno; then
AC_DEFINE(HAVE_OPENSSL)
AC_CHECK_LIB(crypto, main, [
AC_CHECK_LIB(crypto, SSLeay_add_all_algorithms, [
AC_DEFINE(HAVE_SSLEAY)
])
])
fi
fi
We don't have defined the HAVE_GNUTLS var, then when I want to use it
inside connwrap/ files, it's not defined.
The correct would be:
if test -n "$with_ssl" -a x"$with_ssl" != xno; then
AC_DEFINE(HAVE_SSL)
if test -n "$with_openssl" -a x"$with_openssl" != xno; then
AC_DEFINE(HAVE_OPENSSL)
AC_CHECK_LIB(crypto, main, [
AC_CHECK_LIB(crypto, SSLeay_add_all_algorithms, [
AC_DEFINE(HAVE_SSLEAY)
])
])
else
AC_MSG_RESULT([not found or disabled])
with_ssl="no"
AM_PATH_LIBGNUTLS_EXTRA(0.0.1, [
AC_CHECK_LIB(lzo, lzo1x_1_compress, [], [
echo "lzo compression is required.";
exit -1
] )
CXXFLAGS="$CXXFLAGS $LIBGNUTLS_CFLAGS"
LIBS="$LIBS $LIBGNUTLS_LIBS -lgnutls-extra"
AC_DEFINE(HAVE_GNUTLS, 1, [use gnutls])
with_ssl="yes"
ac_configure_args="$ac_configure_args --with-ssl"
])
fi
fi
Is strange that in the top directory on centerim has defined it, but
not below (is exactly the same problem inside libgadu dir).
I fixed both files (connwrap/configure.ac and libgadu/configure.ac)
and after I did the porting to gnutls.
Now, we have both supports without problems: Openssl and GNUTLS. Also
are mutually excluded to avoid problems.
To work you need:
If you have OpenSSL
./configure --with-ssl
If you have Gnutls
./configure --with-ssl --with-openssl=no
This is because by default is --with-openssl=yes
The second reason because I had to do this is because Julien Lemoine
tried to use the backward compatiblity to openssl from gnutls using
gnutls/openssl.h header, but it not work (I tried). Also if you want
to use the gnutls backward compatiblity gnutls/openssl.h, you need to
link the libgnutls-openssl.so library in addition to libgnutls.so.
Now all work fine with both.
I send the patch. Of course to apply the configure.ac, you need to do
run automake command.
I hope this patch would be included in the offcial centerim branch.
With this I can build the official debian package, because I can't do
with the Openssl support by the license problems mentioned above.
Please, I hope your comments.
Regards.
--
Anibal Avelar (FixXxeR) http://fixxxer.cc
GPG: 83B64656 - C143 4AD8 B017 53FA B742 D6AA CEEA F9F3 83B6 4656
------=_Part_6045_10111295.1181660295619
Content-Type: application/octet-stream; name=patch-gnutls
Content-Transfer-Encoding: base64
X-Attachment-Id: f_f2uhvw14
Content-Disposition: attachment; filename="patch-gnutls"
ZGlmZiAtcnUgY2VudGVyaW0tNC4yMi4wL2Nvbm53cmFwL2NvbmZpZ3VyZS5hYyB0ZW1wL2NlbnRl
cmltLTQuMjIuMC9jb25ud3JhcC9jb25maWd1cmUuYWMKLS0tIGNlbnRlcmltLTQuMjIuMC9jb25u
d3JhcC9jb25maWd1cmUuYWMJMjAwNy0wNS0xOCAwNDo1MDoyOS4wMDAwMDAwMDAgLTA1MDAKKysr
IHRlbXAvY2VudGVyaW0tNC4yMi4wL2Nvbm53cmFwL2NvbmZpZ3VyZS5hYwkyMDA3LTA2LTEwIDE2
OjM1OjQ0LjQ5NDA2NTE1MyAtMDUwMApAQCAtMTksNiArMTksMjEgQEAKICAgICAgICAgICAgICAg
ICBBQ19ERUZJTkUoSEFWRV9TU0xFQVkpCiAgICAgICAgICAgICBdKQogICAgICAgICAgICAgXSkK
KyAgICAgZWxzZQorICAgICAgICAgQUNfTVNHX1JFU1VMVChbbm90IGZvdW5kIG9yIGRpc2FibGVk
XSkKKyAgICAgICAgIHdpdGhfc3NsPSJubyIKKworICAgICAgICAgIEFNX1BBVEhfTElCR05VVExT
X0VYVFJBKDAuMC4xLCBbCisgICAgICAgICAgQUNfQ0hFQ0tfTElCKGx6bywgbHpvMXhfMV9jb21w
cmVzcywgW10sIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJsem8gY29tcHJl
c3Npb24gaXMgcmVxdWlyZWQuIjsKKwkJCSAgICBleGl0IC0xCisJCQkgICAgXSApCisJCSAgICAg
ICBDWFhGTEFHUz0iJENYWEZMQUdTICRMSUJHTlVUTFNfQ0ZMQUdTIgorCQkgICAgICAgTElCUz0i
JExJQlMgJExJQkdOVVRMU19MSUJTIC1sZ251dGxzLWV4dHJhIgorCQkgICAgICAgQUNfREVGSU5F
KEhBVkVfR05VVExTLCAxLCBbdXNlIGdudXRsc10pCisgICAgICAgICAgd2l0aF9zc2w9InllcyIK
KyAgICAgICAgICBhY19jb25maWd1cmVfYXJncz0iJGFjX2NvbmZpZ3VyZV9hcmdzIC0td2l0aC1z
c2wiCisJICBdKQogICAgIGZpCiBmaQogCmRpZmYgLXJ1IGNlbnRlcmltLTQuMjIuMC9jb25ud3Jh
cC9jb25ud3JhcC5jIHRlbXAvY2VudGVyaW0tNC4yMi4wL2Nvbm53cmFwL2Nvbm53cmFwLmMKLS0t
IGNlbnRlcmltLTQuMjIuMC9jb25ud3JhcC9jb25ud3JhcC5jCTIwMDctMDUtMTggMDQ6NTA6Mjku
MDAwMDAwMDAwIC0wNTAwCisrKyB0ZW1wL2NlbnRlcmltLTQuMjIuMC9jb25ud3JhcC9jb25ud3Jh
cC5jCTIwMDctMDYtMTEgMTk6NDA6MjkuNTAyNzY0MjQ1IC0wNTAwCkBAIC0xMCw3ICsxMCw2IEBA
CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KICNpbmNsdWRlIDx1
bmlzdGQuaD4KLQogI2RlZmluZSBQUk9YWV9USU1FT1VUICAgMTAKICAgICAvLyBIVFRQIHByb3h5
IHRpbWVvdXQgaW4gc2Vjb25kcyAoZm9yIHRoZSBDT05ORUNUIG1ldGhvZCkKIApAQCAtMjIsOCAr
MjEsNyBAQAogCiAjZWxpZiBIQVZFX0dOVVRMUwogCi0jaW5jbHVkZSA8Z251dGxzL29wZW5zc2wu
aD4KLSNkZWZpbmUgSEFWRV9PUEVOU1NMCisjaW5jbHVkZSA8Z251dGxzL2dudXRscy5oPgogCiAj
ZW5kaWYKIApAQCAtMzEsMTAgKzI5LDE3IEBACiAKICNpZmRlZiBIQVZFX09QRU5TU0wKIAotc3Rh
dGljIFNTTF9DVFggKmN0eCA9IDA7Ci0KK3N0YXRpYyBTU0xfQ1RYICpjdHggPSBOVUxMOwogdHlw
ZWRlZiBzdHJ1Y3QgeyBpbnQgZmQ7IFNTTCAqc3NsOyB9IHNzbHNvY2s7CiAKKyNlbGlmIEhBVkVf
R05VVExTCisKK3R5cGVkZWYgc3RydWN0IHsgaW50IGZkOyBnbnV0bHNfc2Vzc2lvbl90IHNlc3Np
b247IH0gc3Nsc29jazsKKworI2VuZGlmCisKKyNpZmRlZiBIQVZFX1NTTAorCiBzdGF0aWMgc3Ns
c29jayAqc29ja3MgPSAwOwogc3RhdGljIGludCBzb2NrY291bnQgPSAwOwogCkBAIC01MCw2ICs1
NSwxMCBAQAogCiBzdGF0aWMgc3Nsc29jayAqYWRkc29jayhpbnQgZmQpIHsKICAgICBzc2xzb2Nr
ICpwOworI2lmZGVmIEhBVkVfR05VVExTCisgICAgZ251dGxzX2NlcnRpZmljYXRlX2NyZWRlbnRp
YWxzX3QgeGNyZWQ7CisjZW5kaWYKKwogICAgIGlmIChzb2NrcykKICAgICBzb2NrcyA9IChzc2xz
b2NrICopIHJlYWxsb2Moc29ja3MsIHNpemVvZihzc2xzb2NrKSorK3NvY2tjb3VudCk7CiAgICAg
ZWxzZQpAQCAtNTcsMjIgKzY2LDMwIEBACiAKICAgICBwID0gJnNvY2tzW3NvY2tjb3VudC0xXTsK
IAorI2lmZGVmIEhBVkVfT1BFTlNTTAogICAgIGlmKCFjdHgpIHsKIAlTU0xfbGlicmFyeV9pbml0
KCk7Ci0JU1NMX2xvYWRfZXJyb3Jfc3RyaW5ncygpOworCisgICAgU1NMX2xvYWRfZXJyb3Jfc3Ry
aW5ncygpOwogCiAjaWZkZWYgSEFWRV9TU0xFQVkKLQlTU0xlYXlfYWRkX2FsbF9hbGdvcml0aG1z
KCk7CisgICAgU1NMZWF5X2FkZF9hbGxfYWxnb3JpdGhtcygpOwogI2Vsc2UKLQlPcGVuU1NMX2Fk
ZF9hbGxfYWxnb3JpdGhtcygpOworICAgIE9wZW5TU0xfYWRkX2FsbF9hbGdvcml0aG1zKCk7CiAj
ZW5kaWYKLQotCWN0eCA9IFNTTF9DVFhfbmV3KFNTTHYyM19tZXRob2QoKSk7CisgICAgY3R4ID0g
U1NMX0NUWF9uZXcoU1NMdjIzX2NsaWVudF9tZXRob2QoKSk7CiAgICAgfQotCiAgICAgcC0+c3Ns
ID0gU1NMX25ldyhjdHgpOwogICAgIFNTTF9zZXRfZmQocC0+c3NsLCBwLT5mZCA9IGZkKTsKLQor
I2VsaWYgSEFWRV9HTlVUTFMKKyAgICBnbnV0bHNfZ2xvYmFsX2luaXQgKCk7CisgICAgZ251dGxz
X2NlcnRpZmljYXRlX2FsbG9jYXRlX2NyZWRlbnRpYWxzICgmeGNyZWQpOworICAgIGdudXRsc19p
bml0ICgmKHAtPnNlc3Npb24pLCBHTlVUTFNfQ0xJRU5UKTsKKyAgICBnbnV0bHNfc2V0X2RlZmF1
bHRfcHJpb3JpdHkgKHAtPnNlc3Npb24pOworICAgIGdudXRsc19jcmVkZW50aWFsc19zZXQgKHAt
PnNlc3Npb24sIEdOVVRMU19DUkRfQ0VSVElGSUNBVEUsIHhjcmVkKTsKKyAgICBwLT5mZCA9IGZk
OworICAgIGdudXRsc190cmFuc3BvcnRfc2V0X3B0cihwLT5zZXNzaW9uLChnbnV0bHNfdHJhbnNw
b3J0X3B0cl90KWZkKTsKKyNlbmRpZgogICAgIHJldHVybiBwOwogfQogCkBAIC04OCw5ICsxMDUs
MTcgQEAKICAgICBmb3IoaSA9IDA7IGkgPCBzb2NrY291bnQ7IGkrKykgewogCWlmKHNvY2tzW2ld
LmZkICE9IGZkKSB7CiAJICAgIG5zb2Nrc1tuc29ja2NvdW50KytdID0gc29ja3NbaV07Ci0JfSBl
bHNlIHsKKwl9IAorI2lmZGVmIEhBVkVfT1BFTlNTTAorCWVsc2UgewogCSAgICBTU0xfZnJlZShz
b2Nrc1tpXS5zc2wpOwogCX0KKyNlbGlmIEhBVkVfR05VVExTCisJZWxzZSB7CisgICAgICAgICAg
ICBnbnV0bHNfYnllKCBzb2Nrc1tpXS5zZXNzaW9uLCBHTlVUTFNfU0hVVF9XUik7CisgICAgICAg
ICAgICBnbnV0bHNfZGVpbml0KHNvY2tzW2ldLnNlc3Npb24pOworCX0KKyNlbmRpZgogICAgIH0K
IAogICAgIGZyZWUoc29ja3MpOwpAQCAtMjQ3LDE0ICsyNzIsMjIgQEAKIAlpZihyYykgcmV0dXJu
IHJjOwogICAgIH0KIAotICAgIGlmKHByb3h5aG9zdCAmJiAhaW5faHR0cF9jb25uZWN0KSByYyA9
IGN3X2h0dHBfY29ubmVjdChzb2NrZmQsIHNlcnZfYWRkciwgYWRkcmxlbik7Ci0JZWxzZSByYyA9
IGNvbm5lY3Qoc29ja2ZkLCBzZXJ2X2FkZHIsIGFkZHJsZW4pOworICAgIGlmKHByb3h5aG9zdCAm
JiAhaW5faHR0cF9jb25uZWN0KSB7CisgICAgICAgIHJjID0gY3dfaHR0cF9jb25uZWN0KHNvY2tm
ZCwgc2Vydl9hZGRyLCBhZGRybGVuKTsKKyAgICAgfQorICAgICBlbHNleworICAgICAJcmMgPSBj
b25uZWN0KHNvY2tmZCwgc2Vydl9hZGRyLCBhZGRybGVuKTsKKwlpZighcmMpCisJICBwcmludGYo
IkNhbid0IG9wZW4gdGhlIGNvbm5lY3Rpb24gc29ja2V0XG4iKTsKKyAgICAgfQogCiAjaWZkZWYg
SEFWRV9PUEVOU1NMCiAgICAgaWYoc3NsICYmICFyYykgewogCXNzbHNvY2sgKnAgPSBhZGRzb2Nr
KHNvY2tmZCk7Ci0JaWYoU1NMX2Nvbm5lY3QocC0+c3NsKSAhPSAxKQorCWlmKFNTTF9jb25uZWN0
KHAtPnNzbCkgIT0gMSl7CisJICAgIHByaW50ZigiQ2FuJ3QgY29ubmVjdCB0byBTU0xcbiIpOwog
CSAgICByZXR1cm4gLTE7CisJfQogICAgIH0KICNlbmRpZgogCkBAIC0yNjMsNiArMjk2LDcgQEAK
IAogaW50IGN3X25iX2Nvbm5lY3QoaW50IHNvY2tmZCwgY29uc3Qgc3RydWN0IHNvY2thZGRyICpz
ZXJ2X2FkZHIsIGludCBhZGRybGVuLCBpbnQgc3NsLCBpbnQgKnN0YXRlKSB7CiAgICAgaW50IHJj
ID0gMDsKKyAgICBpbnQgcmV0OwogICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBiYTsKIAogICAgIGlm
KGJpbmRhZGRyKQpAQCAtMjg1LDE0ICszMTksMTcgQEAKIAlpZihyYykgcmV0dXJuIHJjOwogICAg
IH0KIAotI2lmZGVmIEhBVkVfT1BFTlNTTAorI2lmZGVmIEhBVkVfU1NMCiAgICAgaWYoc3NsKSB7
Ci0JaWYgKCAhKCpzdGF0ZSAmIENXX0NPTk5FQ1RfV0FOVF9TT01FVEhJTkcpKQorCWlmICggISgq
c3RhdGUgJiBDV19DT05ORUNUX1dBTlRfU09NRVRISU5HKSl7CiAJICAgIHJjID0gY3dfY29ubmVj
dChzb2NrZmQsIHNlcnZfYWRkciwgYWRkcmxlbiwgMCk7CisJfQogCWVsc2V7IC8qIGNoZWNrIGlm
IHRoZSBzb2NrZXQgaXMgY29ubmVjdGVkIGNvcnJlY3RseSAqLwogCSAgICBpbnQgb3B0bGVuID0g
c2l6ZW9mKGludCksIG9wdHZhbDsKLQkgICAgaWYgKGdldHNvY2tvcHQoc29ja2ZkLCBTT0xfU09D
S0VULCBTT19FUlJPUiwgJm9wdHZhbCwgJm9wdGxlbikgfHwgb3B0dmFsKQotCSAgICByZXR1cm4g
LTE7CisJICAgIGlmIChnZXRzb2Nrb3B0KHNvY2tmZCwgU09MX1NPQ0tFVCwgU09fRVJST1IsICZv
cHR2YWwsICZvcHRsZW4pIHx8IG9wdHZhbCl7CisgICAgICAgICAgICAJZnByaW50ZihzdGRlcnIs
ImdldHNvY2tvcHQgZXJyb3IhISIpOworCSAgICAJcmV0dXJuIC0xOworCSAgICB9CiAJfQogCiAJ
aWYoIXJjKSB7CkBAIC0zMDIsNiArMzM5LDIxIEBACiAJICAgIGVsc2UKIAkJcCA9IGFkZHNvY2so
c29ja2ZkKTsKIAkgICAgCisjaWZkZWYgSEFWRV9HTlVUTFMKKwkgICAgZG97CisJICAgICAgIHJl
dCA9IGdudXRsc19oYW5kc2hha2UocC0+c2Vzc2lvbik7CisJICAgIH13aGlsZSAoKHJldCA9PSBH
TlVUTFNfRV9BR0FJTikgfHwgKHJldCA9PSBHTlVUTFNfRV9JTlRFUlJVUFRFRCkpOworCSAgICBp
ZiAocmV0IDwgMCkgeworCSAgICAgIGdudXRsc19kZWluaXQocC0+c2Vzc2lvbik7CisJICAgICAg
Z251dGxzX3BlcnJvciAocmV0KTsKKwkgICAgICByZXR1cm4gLTE7CisJICAgIH0KKwkgICAgZWxz
ZXsKKyAgCSAgICAgICpzdGF0ZSA9IDE7CisJICAgICAgcmV0dXJuIDA7CisJICAgIH0KKyAgICAg
ICAgfQorI2VsaWYgSEFWRV9PUEVOU1NMCiAJICAgIHJjID0gU1NMX2Nvbm5lY3QocC0+c3NsKTsK
IAkgICAgc3dpdGNoKHJjKXsKIAkgICAgY2FzZSAxOgpAQCAtMzIyLDIyICszNzQsMjYgQEAKIAkJ
fQogCSAgICB9CiAJfQotCWVsc2V7IC8qIGNhdGNoIEVJTlBST0dSRVNTIGVycm9yIGZyb20gdGhl
IGNvbm5lY3QgY2FsbCAqLworI2VuZGlmCisJZWxzZXsgLy8gY2F0Y2ggRUlOUFJPR1JFU1MgZXJy
b3IgZnJvbSB0aGUgY29ubmVjdCBjYWxsIAogCSAgICBpZiAoZXJybm8gPT0gRUlOUFJPR1JFU1Mp
ewogCQkqc3RhdGUgPSBDV19DT05ORUNUX1NUQVJURUQgfCBDV19DT05ORUNUX1dBTlRfV1JJVEU7
CiAJCXJldHVybiAwOwogCSAgICB9CiAJfQotCiAJcmV0dXJuIHJjOwogICAgIH0KICNlbmRpZgot
ICAgIGlmICggISgqc3RhdGUgJiBDV19DT05ORUNUX1dBTlRfU09NRVRISU5HKSkKKworICAgIGlm
ICggISgqc3RhdGUgJiBDV19DT05ORUNUX1dBTlRfU09NRVRISU5HKSl7CiAJcmMgPSBjb25uZWN0
KHNvY2tmZCwgc2Vydl9hZGRyLCBhZGRybGVuKTsKKyAgICB9CiAgICAgZWxzZXsgLyogY2hlY2sg
aWYgdGhlIHNvY2tldCBpcyBjb25uZWN0ZWQgY29ycmVjdGx5ICovCiAJaW50IG9wdGxlbiA9IHNp
emVvZihpbnQpLCBvcHR2YWw7Ci0JaWYgKGdldHNvY2tvcHQoc29ja2ZkLCBTT0xfU09DS0VULCBT
T19FUlJPUiwgJm9wdHZhbCwgJm9wdGxlbikgfHwgb3B0dmFsKQorCWlmIChnZXRzb2Nrb3B0KHNv
Y2tmZCwgU09MX1NPQ0tFVCwgU09fRVJST1IsICZvcHR2YWwsICZvcHRsZW4pIHx8IG9wdHZhbCkJ
eworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsImdldHNvY2tvcHQgZXJyb3IhISIpOwogCSAg
ICByZXR1cm4gLTE7CisgICAgICAgIH0KIAkqc3RhdGUgPSAwOwogCXJldHVybiAwOwogICAgIH0K
QEAgLTM3MCwyOSArNDI2LDQ4IEBACiB9CiAKIGludCBjd193cml0ZShpbnQgZmQsIGNvbnN0IHZv
aWQgKmJ1ZiwgaW50IGNvdW50LCBpbnQgc3NsKSB7Ci0jaWZkZWYgSEFWRV9PUEVOU1NMCisjaWZk
ZWYgSEFWRV9TU0wKICAgICBzc2xzb2NrICpwOworICAgIGludCByZXQ7CiAKICAgICBpZihzc2wp
Ci0gICAgaWYocCA9IGdldHNvY2soZmQpKQorI2VuZGlmCisjaWZkZWYgSEFWRV9HTlVUTFMKKyAg
ICAgaWYocCA9IGdldHNvY2soZmQpKXsKKyAgICAgICAgICBpZihyZXQgPSBnbnV0bHNfcmVjb3Jk
X3NlbmQoIHAtPnNlc3Npb24sIGJ1ZiwgY291bnQpIDwgMCkKKwkgICAgZnByaW50ZihzdGRlcnIs
IkNhbid0IHdyaXRlIHRvIHNlcnZlciIpOworICAgICAgICAgICByZXR1cm4gcmV0OworICAgICB9
CisjZWxpZiBIQVZFX09QRU5TU0wKKyAgICAgaWYocCA9IGdldHNvY2soZmQpKQogCXJldHVybiBT
U0xfd3JpdGUocC0+c3NsLCBidWYsIGNvdW50KTsKICNlbmRpZgogICAgIHJldHVybiB3cml0ZShm
ZCwgYnVmLCBjb3VudCk7CiB9CiAKIGludCBjd19yZWFkKGludCBmZCwgdm9pZCAqYnVmLCBpbnQg
Y291bnQsIGludCBzc2wpIHsKLSNpZmRlZiBIQVZFX09QRU5TU0wKKyNpZmRlZiBIQVZFX1NTTAog
ICAgIHNzbHNvY2sgKnA7CisgICAgaW50IHJldDsKIAogICAgIGlmKHNzbCkKLSAgICBpZihwID0g
Z2V0c29jayhmZCkpCisjZW5kaWYKKyNpZmRlZiBIQVZFX0dOVVRMUworICAgICBpZihwID0gZ2V0
c29jayhmZCkpeworICAgICAgIGRvIHsKKwkgICAgICAgICAgIHJldCA9IGdudXRsc19yZWNvcmRf
cmVjdihwLT5zZXNzaW9uLCBidWYsIGNvdW50KTsKKyAgICAgICB9IHdoaWxlICggcmV0IDwgMCAm
JiAocmV0ID09IEdOVVRMU19FX0lOVEVSUlVQVEVEIHx8IHJldCA9PSBHTlVUTFNfRV9BR0FJTikg
KTsKKyAgICAgICByZXR1cm4gcmV0OworICAgICAgIH0KKyNlbGlmIEhBVkVfT1BFTlNTTAorICAg
ICBpZihwID0gZ2V0c29jayhmZCkpCiAJcmV0dXJuIFNTTF9yZWFkKHAtPnNzbCwgYnVmLCBjb3Vu
dCk7CiAjZW5kaWYKICAgICByZXR1cm4gcmVhZChmZCwgYnVmLCBjb3VudCk7CiB9CiAKIGludCBj
d19jbG9zZShpbnQgZmQpIHsKLSNpZmRlZiBIQVZFX09QRU5TU0wKKyNpZmRlZiBIQVZFX1NTTAog
ICAgIGRlbHNvY2soZmQpOwogI2VuZGlmCiAgICAgcmV0dXJuIGNsb3NlKGZkKTsKZGlmZiAtcnUg
Y2VudGVyaW0tNC4yMi4wL2xpYmdhZHUvY29uZmlndXJlLmFjIHRlbXAvY2VudGVyaW0tNC4yMi4w
L2xpYmdhZHUvY29uZmlndXJlLmFjCi0tLSBjZW50ZXJpbS00LjIyLjAvbGliZ2FkdS9jb25maWd1
cmUuYWMJMjAwNy0wNS0xOCAwNDo1MDoyOS4wMDAwMDAwMDAgLTA1MDAKKysrIHRlbXAvY2VudGVy
aW0tNC4yMi4wL2xpYmdhZHUvY29uZmlndXJlLmFjCTIwMDctMDYtMTEgMTc6NDU6NDAuMjk0MTcw
NjIyIC0wNTAwCkBAIC0xMyw2ICsxMywyMSBAQAogICAgICAgICBBQ19ERUZJTkUoSEFWRV9TU0wp
CiAgICAgICAgIGlmIHRlc3QgLW4gIiR3aXRoX29wZW5zc2wiIC1hIHgiJHdpdGhfb3BlbnNzbCIg
IT0geG5vOyB0aGVuCiAgICAgICAgICAgICBBQ19ERUZJTkUoSEFWRV9PUEVOU1NMKQorCWVsc2UK
KwkgICAgQUNfTVNHX1JFU1VMVChbbm90IGZvdW5kIG9yIGRpc2FibGVkXSkKKwkgICAgd2l0aF9z
c2w9Im5vIgorCisJICAgIEFNX1BBVEhfTElCR05VVExTX0VYVFJBKDAuMC4xLCBbCisJICAgIEFD
X0NIRUNLX0xJQihsem8sIGx6bzF4XzFfY29tcHJlc3MsIFtdLCBbCisJICAgICAgICAgICAgICAg
ICAgICAgIGVjaG8gImx6byBjb21wcmVzc2lvbiBpcyByZXF1aXJlZC4iOworCSAgICAgICAgICAg
ICAgICAgICAgICBleGl0IC0xCisJICAgICAgICAgICAgICAgICAgICAgIF0gKQorCSAgICAgICAg
ICAgICAgICAgQ1hYRkxBR1M9IiRDWFhGTEFHUyAkTElCR05VVExTX0NGTEFHUyIKKwkgICAgICAg
ICAgICAgICAgIExJQlM9IiRMSUJTICRMSUJHTlVUTFNfTElCUyAtbGdudXRscy1leHRyYSIKKwkg
ICAgICAgICAgICAgICAgIEFDX0RFRklORShIQVZFX0dOVVRMUywgMSwgW3VzZSBnbnV0bHNdKQor
CSAgICB3aXRoX3NzbD0ieWVzIgorCSAgICBhY19jb25maWd1cmVfYXJncz0iJGFjX2NvbmZpZ3Vy
ZV9hcmdzIC0td2l0aC1zc2wiCisJICAgIF0pCiAgICAgICAgIGZpCiAgICAgZmkKIApkaWZmIC1y
dSBjZW50ZXJpbS00LjIyLjAvbGliZ2FkdS9ldmVudHMuYyB0ZW1wL2NlbnRlcmltLTQuMjIuMC9s
aWJnYWR1L2V2ZW50cy5jCi0tLSBjZW50ZXJpbS00LjIyLjAvbGliZ2FkdS9ldmVudHMuYwkyMDA3
LTA1LTE4IDA0OjUwOjI5LjAwMDAwMDAwMCAtMDUwMAorKysgdGVtcC9jZW50ZXJpbS00LjIyLjAv
bGliZ2FkdS9ldmVudHMuYwkyMDA3LTA2LTExIDIwOjAxOjAyLjg1MzA0ODg3NCAtMDUwMApAQCAt
MzgsOSArMzgsMTEgQEAKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDx0aW1lLmg+CiAj
aW5jbHVkZSA8dW5pc3RkLmg+Ci0jaWZkZWYgX19HR19MSUJHQURVX0hBVkVfT1BFTlNTTAorI2lm
ZGVmIEhBVkVfT1BFTlNTTAogIyAgaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KICMgIGluY2x1ZGUg
PG9wZW5zc2wveDUwOS5oPgorI2VsaWYgSEFWRV9HTlVUTFMKKyMgIGluY2x1ZGUgPGdudXRscy9n
bnV0bHMuaD4KICNlbmRpZgogCiAjaW5jbHVkZSAiY29tcGF0LmgiCkBAIC05MDIsMTAgKzkwNCwx
NCBAQAogCQkJZWxzZQogCQkJCWhvc3QgPSAiIjsKIAotI2lmZGVmIF9fR0dfTElCR0FEVV9IQVZF
X09QRU5TU0wKKyNpZmRlZiBIQVZFX09QRU5TU0wKIAkJCWlmIChzZXNzLT5zc2wpCiAJCQkJYXBw
bXNnID0gImFwcG1zZzMuYXNwIjsKIAkJCWVsc2UKKyNlbGlmIEhBVkVfR05VVExTCisJCQlpZiAo
c2Vzcy0+c2Vzc2lvbikKKwkJCQlhcHBtc2cgPSAiYXBwbXNnMy5hc3AiOworCQkJZWxzZQogI2Vu
ZGlmCiAJCQkJYXBwbXNnID0gImFwcG1zZzIuYXNwIjsKIApAQCAtMTEyMyw3ICsxMTI5LDcgQEAK
IAkJCQkJZXJybm8gPSBFVElNRURPVVQ7CiAjZW5kaWYKIAotI2lmZGVmIF9fR0dfTElCR0FEVV9I
QVZFX09QRU5TU0wKKyNpZmRlZiBIQVZFX09QRU5TU0wKIAkJCQkvKiBqZbZsaSBsb2d1amVteSBz
aeogcG8gVExTLCBuaWUgcHLzYnVqZW15CiAJCQkJICogc2nqILOxY3p55iBqdb8geiBuaWN6eW0g
aW5ueW0gdyBwcnp5cGFka3UKIAkJCQkgKiBis+pkdS4gbmllIGRvtuYsIL9lIG5pZSBtYSBzZW5z
dSwgdG8gaQpAQCAtMTEzNCw2ICsxMTQwLDExIEBACiAJCQkJCWdnX2RlYnVnKEdHX0RFQlVHX01J
U0MsICIvLyBnZ193YXRjaF9mZCgpIGNvbm5lY3Rpb24gZmFpbGVkIChlcnJubz0lZCwgJXMpXG4i
LCByZXMsIHN0cmVycm9yKHJlcykpOwogCQkJCQlnb3RvIGZhaWxfY29ubmVjdGluZzsKIAkJCQl9
CisjZWxpZiBIQVZFX0dOVVRMUworCQkJCWlmIChzZXNzLT5zZXNzaW9uKSB7CisJCQkJCWdnX2Rl
YnVnKEdHX0RFQlVHX01JU0MsICIvLyBnZ193YXRjaF9mZCgpIGNvbm5lY3Rpb24gZmFpbGVkIChl
cnJubz0lZCwgJXMpXG4iLCByZXMsIHN0cmVycm9yKHJlcykpOworCQkJCQlnb3RvIGZhaWxfY29u
bmVjdGluZzsKKwkJCQl9CiAjZW5kaWYKIAogCQkJCWdnX2RlYnVnKEdHX0RFQlVHX01JU0MsICIv
LyBnZ193YXRjaF9mZCgpIGNvbm5lY3Rpb24gZmFpbGVkIChlcnJubz0lZCwgJXMpLCB0cnlpbmcg
aHR0cHNcbiIsIHJlcywgc3RyZXJyb3IocmVzKSk7CkBAIC0xMTg0LDcgKzExOTUsNyBAQAogCQkJ
CX0KIAkJCX0KIAotI2lmZGVmIF9fR0dfTElCR0FEVV9IQVZFX09QRU5TU0wKKyNpZmRlZiBIQVZF
X09QRU5TU0wKIAkJCWlmIChzZXNzLT5zc2wpIHsKIAkJCQlTU0xfc2V0X2ZkKHNlc3MtPnNzbCwg
c2Vzcy0+ZmQpOwogCkBAIC0xMTk0LDYgKzEyMDUsMTYgQEAKIAogCQkJCWJyZWFrOwogCQkJfQor
I2VsaWYgSEFWRV9HTlVUTFMKKwkJCWlmIChzZXNzLT5zZXNzaW9uKSB7CisJCQkgICAgICAgIGdu
dXRsc190cmFuc3BvcnRfc2V0X3B0cihzZXNzLT5zZXNzaW9uLChnbnV0bHNfdHJhbnNwb3J0X3B0
cl90KXNlc3MtPmZkKTsKKworCQkJCXNlc3MtPnN0YXRlID0gR0dfU1RBVEVfVExTX05FR09USUFU
SU9OOworCQkJCXNlc3MtPmNoZWNrID0gR0dfQ0hFQ0tfV1JJVEU7CisJCQkJc2Vzcy0+dGltZW91
dCA9IEdHX0RFRkFVTFRfVElNRU9VVDsKKworCQkJCWJyZWFrOworCQkJfQogI2VuZGlmCiAKIAkJ
CXNlc3MtPnN0YXRlID0gR0dfU1RBVEVfUkVBRElOR19LRVk7CkBAIC0xMjAzLDcgKzEyMjQsNyBA
QAogCQkJYnJlYWs7CiAJCX0KIAotI2lmZGVmIF9fR0dfTElCR0FEVV9IQVZFX09QRU5TU0wKKyNp
ZmRlZiBIQVZFX09QRU5TU0wKIAkJY2FzZSBHR19TVEFURV9UTFNfTkVHT1RJQVRJT046CiAJCXsK
IAkJCWludCByZXM7CkBAIC0xMjc5LDYgKzEzMDAsMzAgQEAKIAogCQkJYnJlYWs7CiAJCX0KKyNl
bGlmIEhBVkVfR05VVExTCisJCWNhc2UgR0dfU1RBVEVfVExTX05FR09USUFUSU9OOgorCQl7CisJ
CQlpbnQgcmVzOworCQkJZG97CisJCQkgICAgcmVzID0gZ251dGxzX2hhbmRzaGFrZShzZXNzLT5z
ZXNzaW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH13aGlsZSAoKHJlcyA9PSBHTlVUTFNf
RV9BR0FJTikgfHwgKHJlcyA9PSBHTlVUTFNfRV9JTlRFUlJVUFRFRCkpOworCSAgICAgICAgICAg
ICAgIGlmIChyZXMgPCAwKSB7CisJICAgICAgICAgICAgICAgICAgICAgZ251dGxzX2RlaW5pdChz
ZXNzLT5zZXNzaW9uKTsKKyAgCSAgICAgICAgICAgICAgICAgICAgIGdudXRsc19wZXJyb3IgKHJl
cyk7CisgICAgICAgICAgICAgICAgCSAgICAgZS0+dHlwZSA9IEdHX0VWRU5UX0NPTk5fRkFJTEVE
OworCQkJICAgICBlLT5ldmVudC5mYWlsdXJlID0gR0dfRkFJTFVSRV9UTFM7CisJCQkgICAgIHNl
c3MtPnN0YXRlID0gR0dfU1RBVEVfSURMRTsKKwkJCSAgICAgY2xvc2Uoc2Vzcy0+ZmQpOworCQkJ
ICAgICBzZXNzLT5mZCA9IC0xOworCQkJICAgICBicmVhazsKKwkJCX0KKworCQkJc2Vzcy0+c3Rh
dGUgPSBHR19TVEFURV9SRUFESU5HX0tFWTsKKwkJCXNlc3MtPmNoZWNrID0gR0dfQ0hFQ0tfUkVB
RDsKKwkJCXNlc3MtPnRpbWVvdXQgPSBHR19ERUZBVUxUX1RJTUVPVVQ7CisKKwkJCWJyZWFrOwor
CQl9CiAjZW5kaWYKIAogCQljYXNlIEdHX1NUQVRFX1JFQURJTkdfS0VZOgpkaWZmIC1ydSBjZW50
ZXJpbS00LjIyLjAvbGliZ2FkdS9saWJnYWR1LmMgdGVtcC9jZW50ZXJpbS00LjIyLjAvbGliZ2Fk
dS9saWJnYWR1LmMKLS0tIGNlbnRlcmltLTQuMjIuMC9saWJnYWR1L2xpYmdhZHUuYwkyMDA3LTA1
LTE4IDA0OjUwOjI5LjAwMDAwMDAwMCAtMDUwMAorKysgdGVtcC9jZW50ZXJpbS00LjIyLjAvbGli
Z2FkdS9saWJnYWR1LmMJMjAwNy0wNi0xMSAxOTo1Mzo1Mi44OTI1NDY4MjMgLTA1MDAKQEAgLTQx
LDEwICs0MSwxMiBAQAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgog
I2luY2x1ZGUgPHVuaXN0ZC5oPgotI2lmZGVmIF9fR0dfTElCR0FEVV9IQVZFX09QRU5TU0wKKyNp
ZmRlZiBIQVZFX09QRU5TU0wKICNkZWZpbmUgT1BFTlNTTF9OT19LUkI1IDEKICMgIGluY2x1ZGUg
PG9wZW5zc2wvZXJyLmg+CiAjICBpbmNsdWRlIDxvcGVuc3NsL3JhbmQuaD4KKyNlbGlmIEhBVkVf
R05VVExTCisjaW5jbHVkZSA8Z251dGxzL2dudXRscy5oPgogI2VuZGlmCiAKICNpbmNsdWRlICJj
b21wYXQuaCIKQEAgLTM0Myw3ICszNDUsNyBAQAogewogCWludCByZXM7CiAKLSNpZmRlZiBfX0dH
X0xJQkdBRFVfSEFWRV9PUEVOU1NMCisjaWZkZWYgSEFWRV9PUEVOU1NMCiAJaWYgKHNlc3MtPnNz
bCkgewogCQlpbnQgZXJyOwogCkBAIC0zNTgsNiArMzYwLDEyIEBACiAJCQlyZXR1cm4gLTE7CiAJ
CX0KIAl9IGVsc2UKKyNlbGlmIEhBVkVfR05VVExTCisJaWYgKHNlc3MtPnNlc3Npb24pIHsKKyAg
ICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgIHJlcyA9IGdudXRsc19yZWNvcmRfcmVjdihz
ZXNzLT5zZXNzaW9uLCBidWYsIGxlbmd0aCk7CisgICAgICAgICAgICB9IHdoaWxlICggcmVzIDwg
MCAmJiAocmVzID09IEdOVVRMU19FX0lOVEVSUlVQVEVEIHx8IHJlcyA9PSBHTlVUTFNfRV9BR0FJ
TikgKTsKKwl9IGVsc2UKICNlbmRpZgogCQlyZXMgPSByZWFkKHNlc3MtPmZkLCBidWYsIGxlbmd0
aCk7CiAKQEAgLTM4MCw3ICszODgsNyBAQAogewogCWludCByZXMgPSAwOwogCi0jaWZkZWYgX19H
R19MSUJHQURVX0hBVkVfT1BFTlNTTAorI2lmZGVmIEhBVkVfT1BFTlNTTAogCWlmIChzZXNzLT5z
c2wpIHsKIAkJaW50IGVycjsKIApAQCAtMzk1LDYgKzQwMywxMSBAQAogCQkJcmV0dXJuIC0xOwog
CQl9CiAJfSBlbHNlCisjZWxpZiBIQVZFX0dOVVRMUworCWlmIChzZXNzLT5zZXNzaW9uKSB7Cisg
ICAgICAgICAgIGlmKHJlcyA9IGdudXRsc19yZWNvcmRfc2VuZCggc2Vzcy0+c2Vzc2lvbiwgYnVm
LCBsZW5ndGgpIDwgMCkKKwkgICAgICBmcHJpbnRmKHN0ZGVyciwiQ2FuJ3Qgd3JpdGUgdG8gc2Vy
dmVyIik7CisJfSBlbHNlCiAjZW5kaWYKIAkJcmVzID0gd3JpdGUoc2Vzcy0+ZmQsIGJ1ZiwgbGVu
Z3RoKTsKIApAQCAtNzMwLDcgKzc0Myw3IEBACiAJc2Vzcy0+cGlkID0gLTE7CiAKIAlpZiAocC0+
dGxzID09IDEpIHsKLSNpZmRlZiBfX0dHX0xJQkdBRFVfSEFWRV9PUEVOU1NMCisjaWZkZWYgSEFW
RV9PUEVOU1NMCiAJCWNoYXIgYnVmWzEwMjRdOwogCiAJCU9wZW5TU0xfYWRkX3NzbF9hbGdvcml0
aG1zKCk7CkBAIC03NjYsOCArNzc5LDEzIEBACiAJCQlnZ19kZWJ1ZyhHR19ERUJVR19NSVNDLCAi
Ly8gZ2dfbG9naW4oKSBTU0xfbmV3KCkgZmFpbGVkOiAlc1xuIiwgYnVmKTsKIAkJCWdvdG8gZmFp
bDsKIAkJfQotI2Vsc2UKLQkJZ2dfZGVidWcoR0dfREVCVUdfTUlTQywgIi8vIGdnX2xvZ2luKCkg
Y2xpZW50IHJlcXVlc3RlZCBUTFMgYnV0IG5vIHN1cHBvcnQgY29tcGlsZWQgaW5cbiIpOworI2Vs
aWYgSEFWRV9HTlVUTFMKKwkJZ251dGxzX2dsb2JhbF9pbml0ICgpOworCSAgICAJZ251dGxzX2Nl
cnRpZmljYXRlX2FsbG9jYXRlX2NyZWRlbnRpYWxzICgmc2Vzcy0+eGNyZWQpOworCSAgICAgICAg
Z251dGxzX2luaXQgKCYoc2Vzcy0+c2Vzc2lvbiksIEdOVVRMU19DTElFTlQpOworCSAgICAgICAg
Z251dGxzX3NldF9kZWZhdWx0X3ByaW9yaXR5IChzZXNzLT5zZXNzaW9uKTsKKwkgICAgICAgIGdu
dXRsc19jcmVkZW50aWFsc19zZXQgKHNlc3MtPnNlc3Npb24sIEdOVVRMU19DUkRfQ0VSVElGSUNB
VEUsIHNlc3MtPnhjcmVkKTsKKwogI2VuZGlmCiAJfQogCQpAQCAtODkyLDEyICs5MTAsMTcgQEAK
IAlpZiAoc2Vzcy0+aGVhZGVyX2J1ZikKIAkJZnJlZShzZXNzLT5oZWFkZXJfYnVmKTsKIAotI2lm
ZGVmIF9fR0dfTElCR0FEVV9IQVZFX09QRU5TU0wKKyNpZmRlZiBIQVZFX09QRU5TU0wKIAlpZiAo
c2Vzcy0+c3NsKQogCQlTU0xfZnJlZShzZXNzLT5zc2wpOwogCiAJaWYgKHNlc3MtPnNzbF9jdHgp
CiAJCVNTTF9DVFhfZnJlZShzZXNzLT5zc2xfY3R4KTsKKyNlbGlmIEhBVkVfR05VVExTCisJaWYg
KHNlc3MtPnNlc3Npb24peworICAgICAgICAgIGdudXRsc19ieWUoc2Vzcy0+c2Vzc2lvbiwgR05V
VExTX1NIVVRfV1IpOworCSAgZ251dGxzX2RlaW5pdChzZXNzLT5zZXNzaW9uKTsKKwl9CiAjZW5k
aWYKIAogI2lmZGVmIF9fR0dfTElCR0FEVV9IQVZFX1BUSFJFQUQKQEAgLTEwNDIsOSArMTA2NSwx
NCBAQAogCWlmIChHR19TX05BKHNlc3MtPnN0YXR1cyAmIH5HR19TVEFUVVNfRlJJRU5EU19NQVNL
KSkKIAkJZ2dfY2hhbmdlX3N0YXR1cyhzZXNzLCBHR19TVEFUVVNfTk9UX0FWQUlMKTsKIAotI2lm
ZGVmIF9fR0dfTElCR0FEVV9IQVZFX09QRU5TU0wKKyNpZmRlZiBIQVZFX09QRU5TU0wKIAlpZiAo
c2Vzcy0+c3NsKQogCQlTU0xfc2h1dGRvd24oc2Vzcy0+c3NsKTsKKyNlbGlmIEhBVkVfR05VVExT
CisJaWYgKHNlc3MtPnNlc3Npb24peworICAgICAgICAgIGdudXRsc19ieWUoc2Vzcy0+c2Vzc2lv
biwgR05VVExTX1NIVVRfV1IpOworCSAgZ251dGxzX2RlaW5pdChzZXNzLT5zZXNzaW9uKTsKKwl9
CiAjZW5kaWYKIAogI2lmZGVmIF9fR0dfTElCR0FEVV9IQVZFX1BUSFJFQUQKZGlmZiAtcnUgY2Vu
dGVyaW0tNC4yMi4wL2xpYmdhZHUvbGliZ2FkdS5oIHRlbXAvY2VudGVyaW0tNC4yMi4wL2xpYmdh
ZHUvbGliZ2FkdS5oCi0tLSBjZW50ZXJpbS00LjIyLjAvbGliZ2FkdS9saWJnYWR1LmgJMjAwNy0w
NS0xOCAwNDo1MDoyOS4wMDAwMDAwMDAgLTA1MDAKKysrIHRlbXAvY2VudGVyaW0tNC4yMi4wL2xp
YmdhZHUvbGliZ2FkdS5oCTIwMDctMDYtMTEgMTg6NTU6MzYuMTY5Mjc5OTE4IC0wNTAwCkBAIC0z
NywxMyArMzcsMTYgQEAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0ZGFyZy5oPgog
Ci0jaWZkZWYgX19HR19MSUJHQURVX0hBVkVfT1BFTlNTTAorI2lmZGVmIEhBVkVfT1BFTlNTTAog
CiAjaWZuZGVmIE9QRU5TU0xfTk9fS1JCNQogI2RlZmluZSBPUEVOU1NMX05PX0tSQjUgMQogI2Vu
ZGlmCiAKICNpbmNsdWRlIDxvcGVuc3NsL3NzbC5oPgorCisjZWxpZiBIQVZFX0dOVVRMUworI2lu
Y2x1ZGUgPGdudXRscy9vcGVuc3NsLmg+CiAjZW5kaWYKIAogLyoKQEAgLTEyNCwxMiArMTI3LDEy
IEBACiAJY2hhciAqaGVhZGVyX2J1ZjsgICAgICAgLyogYnVmb3IgbmEgcG9jerF0ZWsgbmFns/N3
a2EgKi8KIAl1bnNpZ25lZCBpbnQgaGVhZGVyX2RvbmU7LyogaWxlIGp1vyBtYW15ICovCiAKLSNp
ZmRlZiBfX0dHX0xJQkdBRFVfSEFWRV9PUEVOU1NMCisjaWZkZWYgSEFWRV9PUEVOU1NMCiAJU1NM
ICpzc2w7ICAgICAgICAgICAgICAgLyogc2VzamEgVExTICovCiAJU1NMX0NUWCAqc3NsX2N0eDsg
ICAgICAgLyoga29udGVrc3Qgc2Vzamk/ICovCi0jZWxzZQotCXZvaWQgKnNzbDsgICAgICAgICAg
ICAgIC8qIHphY2hvd3VqZW15IEFCSSAqLwotCXZvaWQgKnNzbF9jdHg7CisjZWxpZiBIQVZFX0dO
VVRMUworICAgICAgICBnbnV0bHNfc2Vzc2lvbl90IHNlc3Npb247IC8qIFRMUyBzZXNzaW9uICov
CisJZ251dGxzX2NlcnRpZmljYXRlX2NyZWRlbnRpYWxzX3QgeGNyZWQ7IC8qQ3JlZGVudGlhbHMq
LwogI2VuZGlmCiAKIAlpbnQgaW1hZ2Vfc2l6ZTsgICAgICAgICAvKiBtYWtzeW1hbG55IHJvem1p
YXIgb2JyYXpr83cgdyBLaUIgKi8K
------=_Part_6045_10111295.1181660295619
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
Centerim-devel mailing list
Centerim-devel-Cffqi/[email protected]
http://centerim.org/mailman/listinfo/centerim-devel
------=_Part_6045_10111295.1181660295619--