From alsa-devel-owner@alsa.jcu.cz  Sun Jan 31 15:12:02 1999
Received: from pluto.andeby (IDENT:ahermans@t2o212p6.telia.com [195.204.226.66])
	by marvin.jcu.cz (8.9.1a/8.9.1) with ESMTP id PAA03660
	for <alsa-devel@alsa.jcu.cz>; Sun, 31 Jan 1999 15:10:14 +0100
Received: from localhost (ahermans@localhost)
	by pluto.andeby (8.8.7/8.8.7) with ESMTP id PAA15721;
	Sun, 31 Jan 1999 15:10:56 +0100
Date: Sun, 31 Jan 1999 15:10:51 +0100 (CET)
From: Anders Semb Hermansen <ahermans@vf.telia.no>
To: ALSA devel mailinglist <alsa-devel@alsa.jcu.cz>
cc: Jaroslav Kysela <perex@jcu.cz>
Subject: [PATCH] Compiling ALSA with only needed drivers
Message-ID: <Pine.LNX.4.04.9901311502220.14046-200000@pluto.andeby>
MIME-Version: 1.0
Content-Type: MULTIPART/MIXED; BOUNDARY="-1463810815-831574795-917791851=:14046"
Reply-To: alsa-devel@alsa.jcu.cz
Sender: alsa-devel-owner@alsa.jcu.cz
Precedence: list

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

---1463810815-831574795-917791851=:14046
Content-Type: TEXT/PLAIN; charset=US-ASCII

Hello

I've made a new patch against CVS. It let's you specify which soundcards
you want to compile driver for.
This will make ALSA compile faster for a lot of people.

Create acinclude.m4 and cards.config.in with utils/update-deps and run
autoconf as normal.

You specify the cards to compile driver for by giving the
--with-cards=<list> argument to ./configure
For example if you want to compile drivers only for SoundBlaster 16 and
GUS MAX you write:
./configure --with-cards=sb16,gusmax

If you do not specify any cards, it will compile drivers for all cards as
it is now.

There is still some more to do, more code can be excluded for some
soundcards.

I would like comments on this patch.


Regards,
Anders


--
Anders Semb Hermansen
E-Mail: <ahermans@vf.telia.no>
Cellmail: <93802837@sms.netcom.no>

---1463810815-831574795-917791851=:14046
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="alsa-compile-0.2.patch"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.04.9901311510510.14046@pluto.andeby>
Content-Description: ALSA compile patch 0.2
Content-Disposition: attachment; filename="alsa-compile-0.2.patch"

ZGlmZiAtdU5yIGFsc2EtZHJpdmVyLm9yaWcvY2FyZHMvTWFrZWZpbGUgYWxz
YS1kcml2ZXIvY2FyZHMvTWFrZWZpbGUNCi0tLSBhbHNhLWRyaXZlci5vcmln
L2NhcmRzL01ha2VmaWxlCVdlZCBKYW4gMjAgMTc6MDg6NTUgMTk5OQ0KKysr
IGFsc2EtZHJpdmVyL2NhcmRzL01ha2VmaWxlCVN1biBKYW4gMzEgMTQ6Mjk6
MDAgMTk5OQ0KQEAgLTYsMzAgKzYsNzMgQEANCiBUT1BESVIJPSAuLg0KIA0K
IGluY2x1ZGUgJChUT1BESVIpL01ha2VmaWxlLmNvbmYNCitpbmNsdWRlICQo
VE9QRElSKS9jYXJkcy5jb25maWcNCiANCi1UQVJHRVRTID0gJChUT1BESVIp
L21vZHVsZXMvc25kLWludGVyd2F2ZS5vIFwNCi0JICAkKFRPUERJUikvbW9k
dWxlcy9zbmQtaW50ZXJ3YXZlLXN0Yi5vIFwNCi0JICAkKFRPUERJUikvbW9k
dWxlcy9zbmQtZ3VzbWF4Lm8gXA0KLQkgICQoVE9QRElSKS9tb2R1bGVzL3Nu
ZC1ndXNleHRyZW1lLm8gXA0KLQkgICQoVE9QRElSKS9tb2R1bGVzL3NuZC1n
dXNjbGFzc2ljLm8gXA0KLSAgICAgICAgICAkKFRPUERJUikvbW9kdWxlcy9z
bmQtYXVkaW9kcml2ZTE2ODgubyBcDQotICAgICAgICAgICQoVE9QRElSKS9t
b2R1bGVzL3NuZC1hdWRpb2RyaXZlMTg2OS5vIFwNCi0JICAkKFRPUERJUikv
bW9kdWxlcy9zbmQtc2I4Lm8gXA0KLSAgICAgICAgICAkKFRPUERJUikvbW9k
dWxlcy9zbmQtc2IxNi5vIFwNCi0gICAgICAgICAgJChUT1BESVIpL21vZHVs
ZXMvc25kLXNiYXdlLm8gXA0KLQkgICQoVE9QRElSKS9tb2R1bGVzL3NuZC1v
cGwzc2EubyBcDQotCSAgJChUT1BESVIpL21vZHVsZXMvc25kLW1vemFydC5v
IFwNCi0JICAkKFRPUERJUikvbW9kdWxlcy9zbmQtb3B0aTl4eC5vIFwNCi0J
ICAkKFRPUERJUikvbW9kdWxlcy9zbmQtY2FyZC1hZDE4NDgubyBcDQotCSAg
JChUT1BESVIpL21vZHVsZXMvc25kLWNhcmQtY3M0MjMxLm8gXA0KLQkgICQo
VE9QRElSKS9tb2R1bGVzL3NuZC1jYXJkLWNzNDIzMi5vIFwNCi0JICAkKFRP
UERJUikvbW9kdWxlcy9zbmQtY2FyZC1jczQyMzYubyBcDQotCSAgJChUT1BE
SVIpL21vZHVsZXMvc25kLXNlcmlhbC5vDQoraWZlcSAoMSwkKENPTkZJR19T
TkRfSU5URVJXQVZFKSkNCitUQVJHRVRTICs9ICQoVE9QRElSKS9tb2R1bGVz
L3NuZC1pbnRlcndhdmUubw0KK2VuZGlmDQoraWZlcSAoMSwkKENPTkZJR19T
TkRfSU5URVJXQVZFX1NUQikpDQorVEFSR0VUUyArPSAkKFRPUERJUikvbW9k
dWxlcy9zbmQtaW50ZXJ3YXZlLXN0Yi5vDQorZW5kaWYNCitpZmVxICgxLCQo
Q09ORklHX1NORF9HVVNNQVgpKQ0KK1RBUkdFVFMgKz0gJChUT1BESVIpL21v
ZHVsZXMvc25kLWd1c21heC5vDQorZW5kaWYNCitpZmVxICgxLCQoQ09ORklH
X1NORF9HVVNFWFRSRU1FKSkNCitUQVJHRVRTICs9ICQoVE9QRElSKS9tb2R1
bGVzL3NuZC1ndXNleHRyZW1lLm8NCitlbmRpZg0KK2lmZXEgKDEsJChDT05G
SUdfU05EX0dVU0NMQVNTSUMpKQ0KK1RBUkdFVFMgKz0gJChUT1BESVIpL21v
ZHVsZXMvc25kLWd1c2NsYXNzaWMubw0KK2VuZGlmDQoraWZlcSAoMSwkKENP
TkZJR19TTkRfQVVESU9EUklWRTE2ODgpKQ0KK1RBUkdFVFMgKz0gJChUT1BE
SVIpL21vZHVsZXMvc25kLWF1ZGlvZHJpdmUxNjg4Lm8NCitlbmRpZg0KK2lm
ZXEgKDEsJChDT05GSUdfU05EX0FVRElPRFJJVkUxODY5KSkNCitUQVJHRVRT
ICs9ICQoVE9QRElSKS9tb2R1bGVzL3NuZC1hdWRpb2RyaXZlMTg2OS5vDQor
ZW5kaWYNCitpZmVxICgxLCQoQ09ORklHX1NORF9TQjgpKQ0KK1RBUkdFVFMg
Kz0gJChUT1BESVIpL21vZHVsZXMvc25kLXNiOC5vDQorZW5kaWYNCitpZmVx
ICgxLCQoQ09ORklHX1NORF9TQjE2KSkNCitUQVJHRVRTICs9ICQoVE9QRElS
KS9tb2R1bGVzL3NuZC1zYjE2Lm8NCitlbmRpZg0KK2lmZXEgKDEsJChDT05G
SUdfU05EX1NCQVdFKSkNCitUQVJHRVRTICs9ICQoVE9QRElSKS9tb2R1bGVz
L3NuZC1zYmF3ZS5vDQorZW5kaWYNCitpZmVxICgxLCQoQ09ORklHX1NORF9P
UEwzU0EpKQ0KK1RBUkdFVFMgKz0gJChUT1BESVIpL21vZHVsZXMvc25kLW9w
bDNzYS5vDQorZW5kaWYNCitpZmVxICgxLCQoQ09ORklHX1NORF9NT1pBUlQp
KQ0KK1RBUkdFVFMgKz0gJChUT1BESVIpL21vZHVsZXMvc25kLW1vemFydC5v
DQorZW5kaWYNCitpZmVxICgxLCQoQ09ORklHX1NORF9PUFRJOVhYKSkNCitU
QVJHRVRTICs9ICQoVE9QRElSKS9tb2R1bGVzL3NuZC1vcHRpOXh4Lm8NCitl
bmRpZg0KK2lmZXEgKDEsJChDT05GSUdfU05EX0NBUkRfQUQxODQ4KSkNCitU
QVJHRVRTICs9ICQoVE9QRElSKS9tb2R1bGVzL3NuZC1jYXJkLWFkMTg0OC5v
DQorZW5kaWYNCitpZmVxICgxLCQoQ09ORklHX1NORF9DQVJEX0NTNDIzMSkp
DQorVEFSR0VUUyArPSAkKFRPUERJUikvbW9kdWxlcy9zbmQtY2FyZC1jczQy
MzEubw0KK2VuZGlmDQoraWZlcSAoMSwkKENPTkZJR19TTkRfQ0FSRF9DUzQy
MzIpKQ0KK1RBUkdFVFMgKz0gJChUT1BESVIpL21vZHVsZXMvc25kLWNhcmQt
Y3M0MjMyLm8NCitlbmRpZg0KK2lmZXEgKDEsJChDT05GSUdfU05EX0NBUkRf
Q1M0MjM2KSkNCitUQVJHRVRTICs9ICQoVE9QRElSKS9tb2R1bGVzL3NuZC1j
YXJkLWNzNDIzNi5vDQorZW5kaWYNCitpZmVxICgxLCQoQ09ORklHX1NORF9T
RVJJQUwpKQ0KK1RBUkdFVFMgKz0gJChUT1BESVIpL21vZHVsZXMvc25kLXNl
cmlhbC5vDQorZW5kaWYNCiANCiBpZmVxICgxLCQoU05EQ0ZHX1BDSSkpDQot
VEFSR0VUUyArPSAkKFRPUERJUikvbW9kdWxlcy9zbmQtc29uaWN2aWJlcy5v
IFwNCi0gICAgICAgICAgICQoVE9QRElSKS9tb2R1bGVzL3NuZC1hdWRpb3Bj
aS5vIFwNCi0gICAgICAgICAgICQoVE9QRElSKS9tb2R1bGVzL3NuZC1lc3Nz
b2xvMS5vCSAgIA0KK2lmZXEgKDEsJChDT05GSUdfU05EX1NPTklDVklCRVMp
KQ0KK1RBUkdFVFMgKz0gJChUT1BESVIpL21vZHVsZXMvc25kLXNvbmljdmli
ZXMubw0KK2VuZGlmDQoraWZlcSAoMSwkKENPTkZJR19TTkRfQVVESU9QQ0kp
KQ0KK1RBUkdFVFMgKz0gJChUT1BESVIpL21vZHVsZXMvc25kLWF1ZGlvcGNp
Lm8NCitlbmRpZg0KK2lmZXEgKDEsJChDT05GSUdfU05EX0VTU1NPTE8xKSkN
CitUQVJHRVRTICs9ICQoVE9QRElSKS9tb2R1bGVzL3NuZC1lc3Nzb2xvMS5v
CSAgIA0KK2VuZGlmDQogZW5kaWYNCiANCiBJTlRFUldBVkUgICAgICAgID0g
aW50ZXJ3YXZlLm8NCmRpZmYgLXVOciBhbHNhLWRyaXZlci5vcmlnL2NvbmZp
Z3VyZS5pbiBhbHNhLWRyaXZlci9jb25maWd1cmUuaW4NCi0tLSBhbHNhLWRy
aXZlci5vcmlnL2NvbmZpZ3VyZS5pbglGcmkgSmFuIDI5IDE2OjU5OjUwIDE5
OTkNCisrKyBhbHNhLWRyaXZlci9jb25maWd1cmUuaW4JU3VuIEphbiAzMSAx
NDoyOTowMCAxOTk5DQpAQCAtMyw2ICszLDcgQEANCiBkbmwgQ29weXJpZ2h0
IChjKSBieSBKYXJvc2xhdiBLeXNlbGEgPHBlcmV4QGpjdS5jej4NCiANCiBB
Q19JTklUKGtlcm5lbC9zb3VuZC5jKQ0KK0FNX0NPTkRJVElPTkFMKElOU1RB
TExfTTQsIHRlc3QgIngke0FDTE9DQUx9IiA9ICJ4YWNsb2NhbCIpDQogQUNf
UFJFRklYX0RFRkFVTFQoL3VzcikNCiANCiBkbmwgQ2hlY2tzIGZvciBwcm9n
cmFtcy4NCkBAIC0zMTAsMTMgKzMxMSwxNyBAQA0KICAgQUNfTVNHX1JFU1VM
VChubykNCiBmaQ0KIA0KK2RubCBDaGVjayBmb3Igd2hpY2ggY2FyZHMgdG8g
Y29tcGlsZSBkcml2ZXIgZm9yLi4uDQorQUxTQV9DQVJEU19JTklUDQorQUxT
QV9DQVJEU19TRUxFQ1QNCisNCiBkbmwgU29tZSBsYXRlIHN1YnN0aXR1dGVz
Li4uDQogY19vcHRzPSIkY19vcHRzIC1ETElOVVgiDQogQUNfU1VCU1QoY19v
cHRzKQ0KIEFDX1NVQlNUKEdFTktTWU1TKQ0KIA0KIGRubCBPdXRwdXQgZmls
ZXMuLi4NCi1BQ19PVVRQVVQoTWFrZWZpbGUuY29uZiBzbmRkZXZpY2VzIHV0
aWxzL2Fsc2EtZHJpdmVyLnNwZWMpDQorQUNfT1VUUFVUKE1ha2VmaWxlLmNv
bmYgc25kZGV2aWNlcyB1dGlscy9hbHNhLWRyaXZlci5zcGVjIGNhcmRzLmNv
bmZpZykNCiANCiBkbmwgTWFrZSByaWdodCByaWdodHMgZm9yIHNjcmlwdHMN
CiBjaG1vZCA3NTUgJHNyY2Rpci9zbmRkZXZpY2VzDQpkaWZmIC11TnIgYWxz
YS1kcml2ZXIub3JpZy9jdnNjb21waWxlIGFsc2EtZHJpdmVyL2N2c2NvbXBp
bGUNCi0tLSBhbHNhLWRyaXZlci5vcmlnL2N2c2NvbXBpbGUJTW9uIERlYyAy
OCAxNzoxNDozMSAxOTk4DQorKysgYWxzYS1kcml2ZXIvY3ZzY29tcGlsZQlT
dW4gSmFuIDMxIDE0OjI5OjAwIDE5OTkNCkBAIC0xLDUgKzEsMTAgQEANCiAj
IS9iaW4vYmFzaA0KIA0KK2NkIHV0aWxzDQorZ2NjIHNuZC1kZXBzLmMgLW8g
c25kLWRlcHMNCisuL3VwZGF0ZS1kZXBzDQorY2QgLi4NCithY2xvY2FsDQog
YXV0b2NvbmYNCiAuL2NvbmZpZ3VyZSAtLXdpdGgtZGVidWc9ZnVsbCAtLXdp
dGgtaXNhcG5wPXllcyAtLXdpdGgtc2VxdWVuY2VyPXllcw0KIG1ha2UNCmRp
ZmYgLXVOciBhbHNhLWRyaXZlci5vcmlnL2RldGVjdC9NYWtlZmlsZSBhbHNh
LWRyaXZlci9kZXRlY3QvTWFrZWZpbGUNCi0tLSBhbHNhLWRyaXZlci5vcmln
L2RldGVjdC9NYWtlZmlsZQlTdW4gTm92IDIyIDE1OjM1OjAyIDE5OTgNCisr
KyBhbHNhLWRyaXZlci9kZXRlY3QvTWFrZWZpbGUJU3VuIEphbiAzMSAxNDoy
OTowMCAxOTk5DQpAQCAtNiw5ICs2LDIwIEBADQogVE9QRElSICA9IC4uDQog
DQogaW5jbHVkZSAkKFRPUERJUikvTWFrZWZpbGUuY29uZg0KK2luY2x1ZGUg
JChUT1BESVIpL2NhcmRzLmNvbmZpZw0KIA0KIFRBUkdFVFMgPSAkKFRPUERJ
UikvbW9kdWxlcy9zbmQtZGV0ZWN0Lm8NCi1PQkpFQ1RTID0gZGV0ZWN0Lm8g
Z3VzLm8gZXMxNjg4Lm8gc2Iubw0KK09CSkVDVFMgPSBkZXRlY3Qubw0KKw0K
K2lmZXEgKDEsJChDT05GSUdfU05EX0dVUykpDQorT0JKRUNUUyArPSBndXMu
bw0KK2VuZGlmDQoraWZlcSAoMSwkKENPTkZJR19TTkRfRVMxNjg4KSkNCitP
QkpFQ1RTICs9IGVzMTY4OC5vDQorZW5kaWYNCitpZmVxICgxLCQoQ09ORklH
X1NORF9TQl9EU1ApKQ0KK09CSkVDVFMgKz0gc2Iubw0KK2VuZGlmDQogDQog
aW5jbHVkZSAkKFRPUERJUikvUnVsZXMubWFrZQ0KIA0KZGlmZiAtdU5yIGFs
c2EtZHJpdmVyLm9yaWcvbG93bGV2ZWwvTWFrZWZpbGUgYWxzYS1kcml2ZXIv
bG93bGV2ZWwvTWFrZWZpbGUNCi0tLSBhbHNhLWRyaXZlci5vcmlnL2xvd2xl
dmVsL01ha2VmaWxlCVN1biBOb3YgMjIgMTU6MzU6MjggMTk5OA0KKysrIGFs
c2EtZHJpdmVyL2xvd2xldmVsL01ha2VmaWxlCVN1biBKYW4gMzEgMTQ6Mzc6
NTcgMTk5OQ0KQEAgLTMsOSArMywxOCBAQA0KICMgQ29weXJpZ2h0IChjKSAx
OTk0LTk4IGJ5IEphcm9zbGF2IEt5c2VsYSA8cGVyZXhAamN1LmN6Pg0KICMN
CiANCi1pbmNsdWRlIC4uL01ha2VmaWxlLmNvbmYNCitUT1BESVIgID0gLi4N
CiANCi1TVUJESVJTID0gZ2VuZXJpYyBndXMgc2IgaXNhIGkyYw0KK2luY2x1
ZGUgJChUT1BESVIpL01ha2VmaWxlLmNvbmYNCitpbmNsdWRlICQoVE9QRElS
KS9jYXJkcy5jb25maWcNCisNCitTVUJESVJTID0gZ2VuZXJpYyBpc2EgaTJj
DQoraWZlcSAoMSwkKENPTkZJR19TTkRfR1VTKSkNCitTVUJESVJTICs9IGd1
cw0KK2VuZGlmDQoraWZlcSAoMSwkKENPTkZJR19TTkRfU0JfRFNQKSkNCitT
VUJESVJTICs9IHNiDQorZW5kaWYNCiBpZmVxICgxLCQoU05EQ0ZHX1BDSSkp
DQogU1VCRElSUyArPSBwY2kNCiBlbmRpZg0KZGlmZiAtdU5yIGFsc2EtZHJp
dmVyLm9yaWcvbG93bGV2ZWwvZ2VuZXJpYy9NYWtlZmlsZSBhbHNhLWRyaXZl
ci9sb3dsZXZlbC9nZW5lcmljL01ha2VmaWxlDQotLS0gYWxzYS1kcml2ZXIu
b3JpZy9sb3dsZXZlbC9nZW5lcmljL01ha2VmaWxlCVNhdCBKYW4gMTYgMTE6
MTY6MTMgMTk5OQ0KKysrIGFsc2EtZHJpdmVyL2xvd2xldmVsL2dlbmVyaWMv
TWFrZWZpbGUJU3VuIEphbiAzMSAxNDoyOTowMCAxOTk5DQpAQCAtNiwxNSAr
NiwyNyBAQA0KIA0KIFRPUERJUiAgID0gLi4vLi4NCiANCi1pbmNsdWRlICAk
KFRPUERJUikvTWFrZWZpbGUuY29uZg0KK2luY2x1ZGUgJChUT1BESVIpL01h
a2VmaWxlLmNvbmYNCitpbmNsdWRlICQoVE9QRElSKS9jYXJkcy5jb25maWcN
CisNCitUQVJHRVRTID0gJChTTkRWRVJTSU9OUykNCitpZmVxICgxLCQoQ09O
RklHX1NORF9NUFU0MDFfVUFSVCkpDQorVEFSR0VUUyArPSAkKFRPUERJUikv
bW9kdWxlcy9zbmQtbXB1NDAxLXVhcnQubw0KK1NZTUZJTEVTICs9IG1wdTQw
MV91YXJ0X2V4cG9ydC5jDQorZW5kaWYNCitpZmVxICgxLCQoQ09ORklHX1NO
RF9PUEwzKSkNCitUQVJHRVRTICs9ICQoVE9QRElSKS9tb2R1bGVzL3NuZC1v
cGwzLm8NCitTWU1GSUxFUyArPSBvcGwzX2V4cG9ydC5jDQorZW5kaWYNCitp
ZmVxICgxLCQoQ09ORklHX1NORF9BQzk3X0NPREVDKSkNCitUQVJHRVRTICs9
ICQoVE9QRElSKS9tb2R1bGVzL3NuZC1hYzk3LWNvZGVjLm8NCitTWU1GSUxF
UyArPSBhYzk3X2NvZGVjX2V4cG9ydC5jDQorZW5kaWYNCitpZmVxICgxLCQo
Q09ORklHX1NORF9VQVJUMTY1NTApKQ0KK1RBUkdFVFMgKz0gJChUT1BESVIp
L21vZHVsZXMvc25kLXVhcnQxNjU1MC5vDQorU1lNRklMRVMgKz0gdWFydDE2
NTUwX2V4cG9ydC5jDQorZW5kaWYNCiANCi1UQVJHRVRTICAJPSAkKFNORFZF
UlNJT05TKSBcDQotICAgICAgICAgICAJICAkKFRPUERJUikvbW9kdWxlcy9z
bmQtbXB1NDAxLXVhcnQubyBcDQotICAgICAgICAgICAJICAkKFRPUERJUikv
bW9kdWxlcy9zbmQtb3BsMy5vIFwNCi0JICAgCSAgJChUT1BESVIpL21vZHVs
ZXMvc25kLWFjOTctY29kZWMubyBcDQotCQkgICQoVE9QRElSKS9tb2R1bGVz
L3NuZC11YXJ0MTY1NTAubw0KLVNZTUZJTEVTIAk9IG1wdTQwMV91YXJ0X2V4
cG9ydC5jIG9wbDNfZXhwb3J0LmMgYWM5N19jb2RlY19leHBvcnQuYyBcDQot
ICAgICAgICAgICAgICAgICAgdWFydDE2NTUwX2V4cG9ydC5jDQogTVBVNDAx
ICAgCT0gbXB1NDAxX3VhcnQubyBtcHU0MDFfdWFydF9leHBvcnQubw0KIE9Q
TDMJIAk9IG9wbDMubyBvcGwzX2V4cG9ydC5vDQogQUM5N19DT0RFQwk9IGFj
OTdfY29kZWMubyBhazQ1MzFfY29kZWMubyBhYzk3X2NvZGVjX2V4cG9ydC5v
DQpkaWZmIC11TnIgYWxzYS1kcml2ZXIub3JpZy9sb3dsZXZlbC9pMmMvTWFr
ZWZpbGUgYWxzYS1kcml2ZXIvbG93bGV2ZWwvaTJjL01ha2VmaWxlDQotLS0g
YWxzYS1kcml2ZXIub3JpZy9sb3dsZXZlbC9pMmMvTWFrZWZpbGUJU3VuIE5v
diAyMiAxNTozNTozNCAxOTk4DQorKysgYWxzYS1kcml2ZXIvbG93bGV2ZWwv
aTJjL01ha2VmaWxlCVN1biBKYW4gMzEgMTQ6Mjk6MDAgMTk5OQ0KQEAgLTYs
MTEgKzYsMTUgQEANCiBUT1BESVIgICA9IC4uLy4uDQogDQogaW5jbHVkZSAg
JChUT1BESVIpL01ha2VmaWxlLmNvbmYNCitpbmNsdWRlICAkKFRPUERJUikv
Y2FyZHMuY29uZmlnDQogDQotVEFSR0VUUyAgPSAkKFNORFZFUlNJT05TKSBc
DQotCSAgICQoVE9QRElSKS9tb2R1bGVzL3NuZC1pMmMubyBcDQorVEFSR0VU
UyA9ICQoU05EVkVSU0lPTlMpDQoraWZlcSAoMSwkKENPTkZJR19TTkRfVEVB
NjMzMFQpKQ0KK1RBUkdFVFMgKz0gJChUT1BESVIpL21vZHVsZXMvc25kLWky
Yy5vIFwNCiAJICAgJChUT1BESVIpL21vZHVsZXMvc25kLXRlYTYzMzB0Lm8N
CiBTWU1GSUxFUyA9IGkyY19leHBvcnQuYyB0ZWE2MzMwdF9leHBvcnQuYw0K
K2VuZGlmDQorDQogSTJDICAgICAgPSBpMmMubyBpMmNfZXhwb3J0Lm8NCiBU
RUE2MzMwVCA9IHRlYTYzMzB0Lm8gdGVhNjMzMHRfZXhwb3J0Lm8NCiANCmRp
ZmYgLXVOciBhbHNhLWRyaXZlci5vcmlnL2xvd2xldmVsL2lzYS9NYWtlZmls
ZSBhbHNhLWRyaXZlci9sb3dsZXZlbC9pc2EvTWFrZWZpbGUNCi0tLSBhbHNh
LWRyaXZlci5vcmlnL2xvd2xldmVsL2lzYS9NYWtlZmlsZQlTYXQgRGVjICA1
IDAxOjA4OjIzIDE5OTgNCisrKyBhbHNhLWRyaXZlci9sb3dsZXZlbC9pc2Ev
TWFrZWZpbGUJU3VuIEphbiAzMSAxNDoyOTowMCAxOTk5DQpAQCAtNSwxNSAr
NSwzMSBAQA0KIA0KIFRPUERJUiAgID0gLi4vLi4NCiANCi1pbmNsdWRlICAk
KFRPUERJUikvTWFrZWZpbGUuY29uZg0KK2luY2x1ZGUgJChUT1BESVIpL01h
a2VmaWxlLmNvbmYNCitpbmNsdWRlICQoVE9QRElSKS9jYXJkcy5jb25maWcN
CisNCitUQVJHRVRTID0gJChTTkRWRVJTSU9OUykNCitpZmVxICgxLCQoQ09O
RklHX1NORF9BRDE4NDgpKQ0KK1RBUkdFVFMgKz0gJChUT1BESVIpL21vZHVs
ZXMvc25kLWFkMTg0OC5vDQorU1lNRklMRVMgKz0gYWQxODQ4X2V4cG9ydC5j
DQorZW5kaWYNCitpZmVxICgxLCQoQ09ORklHX1NORF9DUzQyMzEpKQ0KK1RB
UkdFVFMgKz0gJChUT1BESVIpL21vZHVsZXMvc25kLWNzNDIzMS5vDQorU1lN
RklMRVMgKz0gY3M0MjMxX2V4cG9ydC5jDQorZW5kaWYNCitpZmVxICgxLCQo
Q09ORklHX1NORF9DUzQyMzYpKQ0KK1RBUkdFVFMgKz0gJChUT1BESVIpL21v
ZHVsZXMvc25kLWNzNDIzNi5vDQorU1lNRklMRVMgKz0gY3M0MjM2X2V4cG9y
dC5jDQorZW5kaWYNCitpZmVxICgxLCQoQ09ORklHX1NORF9FUzE2ODgpKQ0K
K1RBUkdFVFMgKz0gJChUT1BESVIpL21vZHVsZXMvc25kLWVzMTY4OC5vDQor
U1lNRklMRVMgKz0gZXMxNjg4X2V4cG9ydC5jDQorZW5kaWYNCitpZmVxICgx
LCQoQ09ORklHX1NORF9FUzE4NjkpKQ0KK1RBUkdFVFMgKz0gJChUT1BESVIp
L21vZHVsZXMvc25kLWVzMTg2OS5vDQorU1lNRklMRVMgKz0gZXMxODY5X2V4
cG9ydC5jDQorZW5kaWYNCiANCi1UQVJHRVRTICA9ICQoU05EVkVSU0lPTlMp
IFwNCi0JICAgJChUT1BESVIpL21vZHVsZXMvc25kLWFkMTg0OC5vIFwNCi0g
ICAgICAgICAgICQoVE9QRElSKS9tb2R1bGVzL3NuZC1jczQyMzEubyBcDQot
ICAgICAgICAgICAkKFRPUERJUikvbW9kdWxlcy9zbmQtY3M0MjM2Lm8gXA0K
LSAgICAgICAgICAgJChUT1BESVIpL21vZHVsZXMvc25kLWVzMTY4OC5vIFwN
Ci0gICAgICAgICAgICQoVE9QRElSKS9tb2R1bGVzL3NuZC1lczE4Njkubw0K
LVNZTUZJTEVTID0gYWQxODQ4X2V4cG9ydC5jIGNzNDIzMV9leHBvcnQuYyBj
czQyMzZfZXhwb3J0LmMgZXMxNjg4X2V4cG9ydC5jIGVzMTg2OV9leHBvcnQu
Yw0KIEFEMTg0OCAgID0gYWQxODQ4Lm8gYWQxODQ4X2V4cG9ydC5vDQogQ1M0
MjMxICAgPSBjczQyMzEubyBjczQyMzFfZXhwb3J0Lm8NCiBDUzQyMzYgICA9
IGNzNDIzNi5vIGNzNDIzNl9leHBvcnQubw0KZGlmZiAtdU5yIGFsc2EtZHJp
dmVyLm9yaWcvbG93bGV2ZWwvcGNpL01ha2VmaWxlIGFsc2EtZHJpdmVyL2xv
d2xldmVsL3BjaS9NYWtlZmlsZQ0KLS0tIGFsc2EtZHJpdmVyLm9yaWcvbG93
bGV2ZWwvcGNpL01ha2VmaWxlCVR1ZSBKYW4gMTIgMjI6MzY6NTMgMTk5OQ0K
KysrIGFsc2EtZHJpdmVyL2xvd2xldmVsL3BjaS9NYWtlZmlsZQlTdW4gSmFu
IDMxIDE0OjI5OjAwIDE5OTkNCkBAIC01LDE0ICs1LDIzIEBADQogDQogVE9Q
RElSICAgPSAuLi8uLg0KIA0KLWluY2x1ZGUgICQoVE9QRElSKS9NYWtlZmls
ZS5jb25mDQoraW5jbHVkZSAkKFRPUERJUikvTWFrZWZpbGUuY29uZg0KK2lu
Y2x1ZGUgJChUT1BESVIpL2NhcmRzLmNvbmZpZw0KIA0KLVRBUkdFVFMgID0g
JChTTkRWRVJTSU9OUykgXA0KLQkgICAkKFRPUERJUikvbW9kdWxlcy9zbmQt
czMtODZjNjE3Lm8gXA0KLQkgICAkKFRPUERJUikvbW9kdWxlcy9zbmQtZW5z
MTM3MC5vIFwNCi0JICAgJChUT1BESVIpL21vZHVsZXMvc25kLWVzMTkzOC5v
DQorVEFSR0VUUyA9ICQoU05EVkVSU0lPTlMpDQoraWZlcSAoMSwkKENPTkZJ
R19TTkRfUzNfODZDNjE3KSkNCitUQVJHRVRTICs9ICQoVE9QRElSKS9tb2R1
bGVzL3NuZC1zMy04NmM2MTcubw0KK1NZTUZJTEVTICs9IHMzXzg2YzYxN19l
eHBvcnQuYw0KK2VuZGlmDQoraWZlcSAoMSwkKENPTkZJR19TTkRfRU5TMTM3
MCkpDQorVEFSR0VUUyArPSAkKFRPUERJUikvbW9kdWxlcy9zbmQtZW5zMTM3
MC5vDQorU1lNRklMRVMgKz0gZW5zMTM3MF9leHBvcnQuYw0KK2VuZGlmDQor
aWZlcSAoMSwkKENPTkZJR19TTkRfRVMxOTM4KSkNCitUQVJHRVRTICs9ICQo
VE9QRElSKS9tb2R1bGVzL3NuZC1lczE5Mzgubw0KK1NZTUZJTEVTICs9IGVz
c19zb2xvMV9leHBvcnQuYw0KK2VuZGlmDQogDQotU1lNRklMRVMgPSBzM184
NmM2MTdfZXhwb3J0LmMgZW5zMTM3MF9leHBvcnQuYyBlc3Nfc29sbzFfZXhw
b3J0LmMNCiBTT05JQ1ZJQkVTID0gczNfODZjNjE3Lm8gczNfODZjNjE3X2V4
cG9ydC5vDQogQVVESU9QQ0kgPSBlbnMxMzcwLm8gZW5zMTM3MF9leHBvcnQu
bw0KIEVTU1NPTE8xID0gZXNzX3NvbG8xLm8gZXNzX3NvbG8xX2V4cG9ydC5v
DQpkaWZmIC11TnIgYWxzYS1kcml2ZXIub3JpZy9tb2R1bGVzLmNvbmZpZyBh
bHNhLWRyaXZlci9tb2R1bGVzLmNvbmZpZw0KLS0tIGFsc2EtZHJpdmVyLm9y
aWcvbW9kdWxlcy5jb25maWcJU3VuIE5vdiAyMiAxNTozNDo1NyAxOTk4DQor
KysgYWxzYS1kcml2ZXIvbW9kdWxlcy5jb25maWcJU3VuIEphbiAzMSAxNDo1
MDozMiAxOTk5DQpAQCAtNDAsNyArNDAsNyBAQA0KIHNuZC1lczE2ODggc25k
LXBjbTEgc25kLW1peGVyDQogDQogJURJUiBsb3dsZXZlbC9wY2kNCi1zbmQt
czMtODNjNjE3IHNuZC1wY20xIHNuZC1taXhlcg0KK3NuZC1zMy04NmM2MTcg
c25kLXBjbTEgc25kLW1peGVyDQogDQogJURJUiBsb3dsZXZlbC9zYg0KIHNu
ZC1zYi1kc3Agc25kLXBjbTEgc25kLW1peGVyIHNuZC1taWRpDQpAQCAtNTMs
OSArNTMsMTggQEANCiB8c25kLWd1c2V4dHJlbWUgc25kLWd1cyBzbmQtZXMx
Njg4DQogfHNuZC1ndXNjbGFzc2ljIHNuZC1ndXMNCiB8c25kLWF1ZGlvZHJp
dmUxNjg4IHNuZC1lczE2ODgNCit8c25kLWF1ZGlvZHJpdmUxODY5IHNuZC1l
czE4Njkgc25kLW1wdTQwMS11YXJ0IHNuZC1vcGwzDQogfHNuZC1zYjggc25k
LXNiLWRzcCBzbmQtb3BsMw0KIHxzbmQtc2IxNiBzbmQtc2ItZHNwIHNuZC1t
cHU0MDEtdWFydCBzbmQtb3BsMw0KIHxzbmQtc2Jhd2Ugc25kLXNiLWRzcCBz
bmQtbXB1NDAxLXVhcnQgc25kLW9wbDMgc25kLWVtdTgwMDANCiB8c25kLW9w
bDNzYSBzbmQtY3M0MjMxIHNuZC1tcHU0MDEtdWFydCBzbmQtb3BsMw0KIHxz
bmQtbW96YXJ0IHNuZC1hZDE4NDgNCi18c25kLXNvbmljdmliZXMgc25kLXMz
LTgzYzYxNyBzbmQtbXB1NDAxLXVhcnQgc25kLW9wbDMNCit8c25kLXNvbmlj
dmliZXMgc25kLXMzLTg2YzYxNyBzbmQtbXB1NDAxLXVhcnQgc25kLW9wbDMN
Cit8c25kLWF1ZGlvcGNpIHNuZC1lbnMxMzcwIHNuZC1hYzk3LWNvZGVjDQor
fHNuZC1jYXJkLWFkMTg0OCBzbmQtYWQxODQ4DQorfHNuZC1jYXJkLWNzNDIz
MSBzbmQtY3M0MjMxIHNuZC1tcHU0MDEtdWFydA0KK3xzbmQtY2FyZC1jczQy
MzIgc25kLWNzNDIzMSBzbmQtbXB1NDAxLXVhcnQgc25kLW9wbDMNCit8c25k
LWNhcmQtY3M0MjM2IHNuZC1jczQyMzYgc25kLW1wdTQwMS11YXJ0IHNuZC1v
cGwzDQorfHNuZC1lc3Nzb2xvMSBzbmQtZXMxOTM4IHNuZC1vcGwzDQorfHNu
ZC1vcHRpOXh4eCBzbmQtYWQxODQ4IHNuZC1vcGwzDQorfHNuZC1zZXJpYWwg
c25kLXVhcnQxNjU1MA0KZGlmZiAtdU5yIGFsc2EtZHJpdmVyLm9yaWcvdXRp
bHMvTWFrZWZpbGUgYWxzYS1kcml2ZXIvdXRpbHMvTWFrZWZpbGUNCi0tLSBh
bHNhLWRyaXZlci5vcmlnL3V0aWxzL01ha2VmaWxlCVN1biBOb3YgMjIgMTU6
MzU6NDUgMTk5OA0KKysrIGFsc2EtZHJpdmVyL3V0aWxzL01ha2VmaWxlCVN1
biBKYW4gMzEgMTQ6Mjk6MDAgMTk5OQ0KQEAgLTcsNyArNyw3IEBADQogDQog
aW5jbHVkZSAkKFRPUERJUikvTWFrZWZpbGUuY29uZg0KIA0KLVRBUkdFVFMg
PSBleHBvcnQtc3ltYm9scw0KK1RBUkdFVFMgPSBleHBvcnQtc3ltYm9scyBz
bmQtZGVwcw0KIA0KIGluY2x1ZGUgJChUT1BESVIpL1J1bGVzLm1ha2UNCiAN
CkBAIC0xNSw2ICsxNSw5IEBADQogDQogZXhwb3J0LXN5bWJvbHM6IC5kZXBl
bmQNCiAJJChDQykgJChDT1BUUykgJChJTkNMVURFKSAtbyAkQCAkQC5jDQor
DQorc25kLWRlcHM6IHNuZC1kZXBzLm8NCisJJChDQykgJChDT1BUUykgJChJ
TkNMVURFKSBzbmQtZGVwcy5vIC1vICRAIA0KIA0KIGNsZWFuOg0KIAlybSAt
ZiBjb3JlIC5kZXBlbmQgKi5vICoub3JpZyAqfiBleHBvcnQtc3ltYm9scw0K
ZGlmZiAtdU5yIGFsc2EtZHJpdmVyLm9yaWcvdXRpbHMvc25kLWRlcHMuYyBh
bHNhLWRyaXZlci91dGlscy9zbmQtZGVwcy5jDQotLS0gYWxzYS1kcml2ZXIu
b3JpZy91dGlscy9zbmQtZGVwcy5jCVRodSBKYW4gIDEgMDE6MDA6MDAgMTk3
MA0KKysrIGFsc2EtZHJpdmVyL3V0aWxzL3NuZC1kZXBzLmMJU3VuIEphbiAz
MSAxNDoyOTowMCAxOTk5DQpAQCAtMCwwICsxLDQ0OSBAQA0KKy8qDQorICog
IFV0aWxpdHkgdG8gZmluZCBzb3VuZGNhcmQgZGVwZW5kZW5jaWVzIGZyb20g
bW9kdWxlcy5jb25maWcNCisgKiAgQ29weXJpZ2h0IChjKSBieSBBbmRlcnMg
U2VtYiBIZXJtYW5zZW4gPGFoZXJtYW5zQHZmLnRlbGlhLm5vPiwNCisgKgkJ
ICAgICBNYXJ0aW4gRGFobCA8ZGFobG1AdmYudGVsaWEubm8+DQorICoNCisg
KiAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQorICogICBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieQ0KKyAqICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCisg
KiAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQorICoN
CisgKiAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KKyAqICAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YNCisgKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCisgKiAgIEdOVSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQorICoNCisg
KiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQorICogICBhbG9uZyB3aXRoIHRo
aXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy
ZQ0KKyAqICAgRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1i
cmlkZ2UsIE1BIDAyMTM5LCBVU0EuDQorICoNCisgKi8NCisNCisjaW5jbHVk
ZSA8c3RkaW8uaD4NCisjaW5jbHVkZSA8c3RyaW5nLmg+DQorI2luY2x1ZGUg
PHN0ZGxpYi5oPg0KKyNpbmNsdWRlIDxjdHlwZS5oPg0KKw0KKyNkZWZpbmUg
TU9ERklMRSAiLi4vbW9kdWxlcy5jb25maWciDQorDQordHlwZWRlZiBzdHJ1
Y3QgZGVwU3RydWN0DQorew0KKwljaGFyIG5hbWVbMzBdOw0KKwlzdHJ1Y3Qg
ZGVwU3RydWN0ICp1cGxpbms7DQorCXN0cnVjdCBkZXBTdHJ1Y3QgKmRvd25s
aW5rOw0KK30gZGVwOw0KKw0KK3R5cGVkZWYgc3RydWN0IGNhcmRTdHJ1Y3QN
Cit7DQorCWNoYXIgbmFtZVszMF07DQorCWNoYXIgZGVmaW5lWzMwXTsNCisJ
ZGVwICpkZXBlbmRlbmNpZXM7DQorCWRlcCAqZGVwZW5kZW5jaWVzTGFzdDsN
CisJc3RydWN0IGNhcmRTdHJ1Y3QgKnVwbGluazsNCisJc3RydWN0IGNhcmRT
dHJ1Y3QgKmRvd25saW5rOw0KK30gY2FyZDsNCisNCitkZXAgKlB1YmxpY0Rl
cHM7DQorZGVwICpQdWJsaWNEZXBzTGFzdDsNCisNCitjYXJkICpDYXJkczsN
CitjYXJkICpDYXJkc0xhc3Q7DQorDQorZXh0ZXJuIGNhcmQgKmFkZF9jYXJk
KHZvaWQpOw0KK2V4dGVybiBkZXAgKmFkZF9kZXAoY2FyZCAqdGVtcGNhcmQp
Ow0KK2V4dGVybiBkZXAgKmFkZF9wdWJsaWNkZXAodm9pZCk7DQorZXh0ZXJu
IGNhcmQgKmdldF9jYXJkKGNoYXIgKm5hbWUpOw0KK2V4dGVybiBkZXAgKmdl
dF9kZXAoY2FyZCAqdGVtcGNhcmQsIGNoYXIgKm5hbWUpOw0KK2V4dGVybiB2
b2lkIGRlbF9jYXJkcyh2b2lkKTsNCitleHRlcm4gdm9pZCBkZWxfY2FyZChj
YXJkICp0ZW1wY2FyZCk7DQorZXh0ZXJuIHZvaWQgZGVsX2RlcChjYXJkICp0
ZW1wY2FyZCwgZGVwICp0ZW1wZGVwKTsNCitleHRlcm4gY2hhciAqZ2V0X29u
ZV93b3JkKGNoYXIgKmxpbmUsIGNoYXIgKmJ1Zik7DQorZXh0ZXJuIHZvaWQg
bWFrZV9hY2luY2x1ZGUodm9pZCk7DQorZXh0ZXJuIHZvaWQgbWFrZV9jYXJk
c19jb25mX2luKHZvaWQpOw0KK2V4dGVybiB2b2lkIGFkZF9jYXJkcyh2b2lk
KTsNCitleHRlcm4gY2hhciAqY29udmVydF9jb25maWcoY2hhciAqY29uZmln
KTsNCitleHRlcm4gaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSk7
DQorDQorY2FyZCAqYWRkX2NhcmQodm9pZCkNCit7DQorCWlmKCFDYXJkcykN
CisJew0KKwkJQ2FyZHM9KGNhcmQgKiltYWxsb2Moc2l6ZW9mKGNhcmQpKTsN
CisJCUNhcmRzLT51cGxpbms9TlVMTDsNCisJCUNhcmRzLT5kb3dubGluaz1O
VUxMOw0KKwkJQ2FyZHNMYXN0PUNhcmRzOw0KKwkJcmV0dXJuIENhcmRzOw0K
Kwl9DQorCWVsc2UNCisJew0KKwkJQ2FyZHNMYXN0LT5kb3dubGluaz0oY2Fy
ZCAqKW1hbGxvYyhzaXplb2YoY2FyZCkpOw0KKwkJQ2FyZHNMYXN0LT5kb3du
bGluay0+dXBsaW5rPUNhcmRzTGFzdDsNCisJCUNhcmRzTGFzdD1DYXJkc0xh
c3QtPmRvd25saW5rOw0KKwkJQ2FyZHNMYXN0LT5kb3dubGluaz1OVUxMOw0K
KwkJcmV0dXJuIENhcmRzTGFzdDsNCisJfQ0KK30NCisNCitkZXAgKmFkZF9k
ZXAoY2FyZCAqdGVtcGNhcmQpDQorew0KKwlpZighdGVtcGNhcmQtPmRlcGVu
ZGVuY2llcykNCisJew0KKwkJdGVtcGNhcmQtPmRlcGVuZGVuY2llcz0oZGVw
ICopbWFsbG9jKHNpemVvZihkZXApKTsNCisJCXRlbXBjYXJkLT5kZXBlbmRl
bmNpZXMtPnVwbGluaz1OVUxMOw0KKwkJdGVtcGNhcmQtPmRlcGVuZGVuY2ll
cy0+ZG93bmxpbms9TlVMTDsNCisJCXRlbXBjYXJkLT5kZXBlbmRlbmNpZXNM
YXN0PXRlbXBjYXJkLT5kZXBlbmRlbmNpZXM7DQorCQlyZXR1cm4gdGVtcGNh
cmQtPmRlcGVuZGVuY2llczsNCisJfQ0KKwllbHNlDQorCXsNCisJCXRlbXBj
YXJkLT5kZXBlbmRlbmNpZXNMYXN0LT5kb3dubGluaz0oZGVwICopbWFsbG9j
KHNpemVvZihkZXApKTsNCisJCXRlbXBjYXJkLT5kZXBlbmRlbmNpZXNMYXN0
LT5kb3dubGluay0+dXBsaW5rPXRlbXBjYXJkLT5kZXBlbmRlbmNpZXNMYXN0
Ow0KKwkJdGVtcGNhcmQtPmRlcGVuZGVuY2llc0xhc3Q9dGVtcGNhcmQtPmRl
cGVuZGVuY2llc0xhc3QtPmRvd25saW5rOw0KKwkJdGVtcGNhcmQtPmRlcGVu
ZGVuY2llc0xhc3QtPmRvd25saW5rPU5VTEw7DQorCQlyZXR1cm4gdGVtcGNh
cmQtPmRlcGVuZGVuY2llc0xhc3Q7DQorCX0NCit9DQorDQorZGVwICphZGRf
cHVibGljZGVwKHZvaWQpDQorew0KKwlpZighUHVibGljRGVwcykNCisJew0K
KwkJUHVibGljRGVwcz0oZGVwICopbWFsbG9jKHNpemVvZihkZXApKTsNCisJ
CVB1YmxpY0RlcHMtPnVwbGluaz1OVUxMOw0KKwkJUHVibGljRGVwcy0+ZG93
bmxpbms9TlVMTDsNCisJCVB1YmxpY0RlcHNMYXN0PVB1YmxpY0RlcHM7DQor
CQlyZXR1cm4gUHVibGljRGVwczsNCisJfQ0KKwllbHNlDQorCXsNCisJCVB1
YmxpY0RlcHNMYXN0LT5kb3dubGluaz0oZGVwICopbWFsbG9jKHNpemVvZihk
ZXApKTsNCisJCVB1YmxpY0RlcHNMYXN0LT5kb3dubGluay0+dXBsaW5rPVB1
YmxpY0RlcHNMYXN0Ow0KKwkJUHVibGljRGVwc0xhc3Q9UHVibGljRGVwc0xh
c3QtPmRvd25saW5rOw0KKwkJUHVibGljRGVwc0xhc3QtPmRvd25saW5rPU5V
TEw7DQorCQlyZXR1cm4gUHVibGljRGVwc0xhc3Q7DQorCX0NCit9DQorDQor
Y2FyZCAqZ2V0X2NhcmQoY2hhciAqbmFtZSkNCit7DQorCWNhcmQgKnRlbXBj
YXJkOw0KKwl0ZW1wY2FyZD1DYXJkczsNCisJd2hpbGUodGVtcGNhcmQpDQor
CXsNCisJCWlmKCFzdHJjbXAodGVtcGNhcmQtPm5hbWUsbmFtZSkpDQorCQkJ
cmV0dXJuIHRlbXBjYXJkOw0KKwkJdGVtcGNhcmQ9dGVtcGNhcmQtPmRvd25s
aW5rOw0KKwl9DQorCXJldHVybiBOVUxMOw0KK30NCisNCitkZXAgKmdldF9k
ZXAoY2FyZCAqdGVtcGNhcmQsIGNoYXIgKm5hbWUpDQorew0KKwlkZXAgKnRl
bXBkZXA7DQorCXRlbXBkZXA9dGVtcGNhcmQtPmRlcGVuZGVuY2llczsNCisJ
d2hpbGUodGVtcGRlcCkNCisJew0KKwkJaWYoIXN0cmNtcCh0ZW1wZGVwLT5u
YW1lLG5hbWUpKQ0KKwkJCXJldHVybiB0ZW1wZGVwOw0KKwkJdGVtcGRlcD10
ZW1wZGVwLT5kb3dubGluazsNCisJfQ0KKwlyZXR1cm4gTlVMTDsNCit9DQor
DQordm9pZCBkZWxfY2FyZHModm9pZCkNCit7DQorCWNhcmQgKnRlbXBjYXJk
Ow0KKwlkZXAgKnRlbXBkZXA7DQorCXRlbXBjYXJkPUNhcmRzOw0KKwl3aGls
ZSh0ZW1wY2FyZCkNCisJew0KKwkJdGVtcGRlcD10ZW1wY2FyZC0+ZGVwZW5k
ZW5jaWVzOw0KKwkJd2hpbGUodGVtcGRlcCkNCisJCXsNCisJCQlkZWxfZGVw
KHRlbXBjYXJkLHRlbXBkZXApOw0KKwkJCXRlbXBkZXA9dGVtcGRlcC0+ZG93
bmxpbms7DQorCQl9DQorCQlkZWxfY2FyZCh0ZW1wY2FyZCk7DQorCQl0ZW1w
Y2FyZD10ZW1wY2FyZC0+ZG93bmxpbms7DQorCX0NCisJcmV0dXJuOw0KK30N
CisNCit2b2lkIGRlbF9jYXJkKGNhcmQgKnRlbXBjYXJkKQ0KK3sNCisJaWYo
IXRlbXBjYXJkLT51cGxpbmspDQorCQlDYXJkcz1DYXJkcy0+ZG93bmxpbms7
DQorCWVsc2UNCisJCXRlbXBjYXJkLT51cGxpbmstPmRvd25saW5rPXRlbXBj
YXJkLT5kb3dubGluazsNCisJaWYoIXRlbXBjYXJkLT5kb3dubGluaykNCisJ
CUNhcmRzTGFzdD1DYXJkc0xhc3QtPnVwbGluazsNCisJZWxzZQ0KKwkJdGVt
cGNhcmQtPmRvd25saW5rLT51cGxpbms9dGVtcGNhcmQtPnVwbGluazsNCisJ
ZnJlZSgodm9pZCAqKXRlbXBjYXJkKTsNCisJcmV0dXJuOw0KK30NCisNCit2
b2lkIGRlbF9kZXAoY2FyZCAqdGVtcGNhcmQsIGRlcCAqdGVtcGRlcCkNCit7
DQorCWlmKCF0ZW1wZGVwLT51cGxpbmspDQorCQl0ZW1wY2FyZC0+ZGVwZW5k
ZW5jaWVzPXRlbXBjYXJkLT5kZXBlbmRlbmNpZXMtPmRvd25saW5rOw0KKwll
bHNlDQorCQl0ZW1wZGVwLT51cGxpbmstPmRvd25saW5rPXRlbXBkZXAtPmRv
d25saW5rOw0KKwlpZighdGVtcGRlcC0+ZG93bmxpbmspDQorCQl0ZW1wY2Fy
ZC0+ZGVwZW5kZW5jaWVzTGFzdD10ZW1wY2FyZC0+ZGVwZW5kZW5jaWVzTGFz
dC0+dXBsaW5rOw0KKwllbHNlDQorCQl0ZW1wZGVwLT5kb3dubGluay0+dXBs
aW5rPXRlbXBkZXAtPnVwbGluazsNCisJZnJlZSgodm9pZCAqKXRlbXBkZXAp
Ow0KKwlyZXR1cm47DQorfQ0KKw0KK3ZvaWQgYWRkX3RvX3B1YmxpY2RlcChj
aGFyICpjdXJyZW50ZGVwKQ0KK3sNCisJZGVwICpwdWJkZXA7DQorCWludCBp
Ow0KKw0KKwlwdWJkZXA9UHVibGljRGVwczsNCisJDQorCXdoaWxlKHB1YmRl
cCkNCisJew0KKwkJaT1zdHJjbXAoY3VycmVudGRlcCwgcHViZGVwLT5uYW1l
KTsNCisJCWlmKGk9PTApDQorCQkJcmV0dXJuOw0KKwkJcHViZGVwPXB1YmRl
cC0+ZG93bmxpbms7DQorCX0NCisNCisJcHViZGVwPU5VTEw7DQorCXB1YmRl
cD1hZGRfcHVibGljZGVwKCk7DQorDQorCXN0cmNweShwdWJkZXAtPm5hbWUs
IGN1cnJlbnRkZXApOw0KKwkNCisJcmV0dXJuOw0KK30NCisNCitjaGFyICpn
ZXRfb25lX3dvcmQoY2hhciAqbGluZSwgY2hhciAqYnVmKQ0KK3sNCisJaW50
IGZsYWc9MCxpOw0KKwlidWZbMF09MHgwOw0KKwlmb3IoaT0wOztpKyspDQor
CXsNCisJCWlmKCFsaW5lW2ldKQ0KKwkJCXJldHVybiBOVUxMOw0KKwkJaWYo
bGluZVtpXSE9MHgyMCkNCisJCXsNCisJCQlpZihmbGFnKQ0KKwkJCQlyZXR1
cm4gKGNoYXIgKikmbGluZVtpXTsNCisJCQlzdHJuY2F0KGJ1ZiwoY2hhciAq
KSZsaW5lW2ldLDEpOw0KKwkJCWNvbnRpbnVlOw0KKwkJfQ0KKwkJZWxzZQ0K
KwkJCWZsYWc9MTsNCisJfQ0KK30NCisNCit2b2lkIG1ha2VfYWNpbmNsdWRl
KHZvaWQpDQorew0KKwljYXJkICp0ZW1wY2FyZDsNCisJZGVwICp0ZW1wZGVw
Ow0KKwkNCisJdGVtcGRlcD1QdWJsaWNEZXBzOw0KKwl0ZW1wY2FyZD1DYXJk
czsNCisNCisJcHJpbnRmKCJkbmwgQUxTQSBzb3VuZGNhcmQtY29uZmlndXJh
dGlvblxuIik7DQorCXByaW50ZigiZG5sIEZpbmQgb3V0IHdoaWNoIGNhcmRz
IHRvIGNvbXBpbGUgZHJpdmVyIGZvclxuIik7DQorCXByaW50ZigiZG5sIENv
cHlyaWdodCAoYykgYnkgQW5kZXJzIFNlbWIgSGVybWFuc2VuIDxhaGVybWFu
c0B2Zi50ZWxpYS5ubz5cblxuIik7DQorDQorCXByaW50ZigiQUNfREVGVU4o
QUxTQV9DQVJEU19JTklULCBbXG4iKTsNCisJd2hpbGUodGVtcGNhcmQpDQor
CXsNCisJCXByaW50ZigiXHQlcz1cIjBcIlxuIiwgdGVtcGNhcmQtPmRlZmlu
ZSk7DQorCQl0ZW1wY2FyZD10ZW1wY2FyZC0+ZG93bmxpbms7DQorCX0NCisJ
dGVtcGNhcmQ9Q2FyZHM7DQorCXdoaWxlKHRlbXBkZXApDQorCXsNCisJCXBy
aW50ZigiXHQlcz1cIjBcIlxuIiwgdGVtcGRlcC0+bmFtZSk7DQorCQl0ZW1w
ZGVwPXRlbXBkZXAtPmRvd25saW5rOw0KKwl9DQorCXRlbXBkZXA9UHVibGlj
RGVwczsNCisJcHJpbnRmKCJdKVxuXG4iKTsNCisNCisJcHJpbnRmKCJBQ19E
RUZVTihBTFNBX0NBUkRTX0FMTCwgW1xuIik7DQorCXdoaWxlKHRlbXBjYXJk
KQ0KKwl7DQorCQlwcmludGYoIlx0JXM9XCIxXCJcbiIsIHRlbXBjYXJkLT5k
ZWZpbmUpOw0KKwkJdGVtcGNhcmQ9dGVtcGNhcmQtPmRvd25saW5rOw0KKwl9
DQorCXRlbXBjYXJkPUNhcmRzOw0KKwl3aGlsZSh0ZW1wZGVwKQ0KKwl7DQor
CQlwcmludGYoIlx0JXM9XCIxXCJcbiIsIHRlbXBkZXAtPm5hbWUpOw0KKwkJ
dGVtcGRlcD10ZW1wZGVwLT5kb3dubGluazsNCisJfQ0KKwl0ZW1wZGVwPVB1
YmxpY0RlcHM7DQorCXByaW50ZigiXSlcblxuIik7DQorDQorCXByaW50Zigi
QUNfREVGVU4oQUxTQV9DQVJEU19TRUxFQ1QsIFtcbiIpOw0KKwlwcmludGYo
ImRubCBDaGVjayBmb3Igd2hpY2ggY2FyZHMgdG8gY29tcGlsZSBkcml2ZXIg
Zm9yLi4uXG4iKTsNCisJcHJpbnRmKCJBQ19NU0dfQ0hFQ0tJTkcoZm9yIHdo
aWNoIHNvdW5kY2FyZHMgdG8gY29tcGlsZSBkcml2ZXIgZm9yKVxuIik7DQor
CXByaW50ZigiQUNfQVJHX1dJVEgoY2FyZHMsXG4iKTsNCisJcHJpbnRmKCIg
IFsgIC0td2l0aC1jYXJkcz08bGlzdD4gICAgIGNvbXBpbGUgZHJpdmVyIGZv
ciBjYXJkcyBpbiA8bGlzdD4uIF1cbiIpOw0KKwlwcmludGYoIiAgWyAgICAg
ICAgICAgICAgICAgICAgICAgIGNhcmRzIG1heSBiZSBzZXBhcmF0ZWQgd2l0
aCBjb21tYXMuIF1cbiIpOw0KKwlwcmludGYoIiAgWyAgICAgICAgICAgICAg
ICAgICAgICAgIFwiYWxsXCIgY29tcGlsZXMgYWxsIGRyaXZlcnMgXSxcbiIp
Ow0KKwlwcmludGYoIiAgY2FyZHM9XCIkd2l0aHZhbFwiLCBjYXJkcz1cImFs
bFwiKVxuIik7DQorCXByaW50ZigiaWYgdGVzdCBcIiRjYXJkc1wiID0gXCJh
bGxcIjsgdGhlblxuIik7DQorCXByaW50ZigiICBBTFNBX0NBUkRTX0FMTFxu
Iik7DQorCXByaW50ZigiICBBQ19NU0dfUkVTVUxUKGFsbClcbiIpOw0KKwlw
cmludGYoImVsc2VcbiIpOw0KKwlwcmludGYoIiAgY2FyZHM9YGVjaG8gJGNh
cmRzIHwgc2VkICdzLywvIC9nJ2BcbiIpOw0KKwlwcmludGYoIiAgZm9yIGNh
cmQgaW4gJGNhcmRzXG4gIGRvXG4gICAgY2FzZSBcIiRjYXJkXCIgaW5cbiIp
Ow0KKwkNCisJd2hpbGUodGVtcGNhcmQpDQorCXsNCisJCXByaW50ZigiXHQl
cylcblx0XHQlcz1cIjFcIlxuIix0ZW1wY2FyZC0+bmFtZSwgdGVtcGNhcmQt
PmRlZmluZSk7DQorCQkNCisJCXRlbXBkZXA9dGVtcGNhcmQtPmRlcGVuZGVu
Y2llczsNCisJCXdoaWxlKHRlbXBkZXApDQorCQl7DQorCQkJcHJpbnRmKCJc
dFx0JXM9XCIxXCJcbiIsdGVtcGRlcC0+bmFtZSk7DQorCQkJdGVtcGRlcD10
ZW1wZGVwLT5kb3dubGluazsNCisJCX0NCisJCXRlbXBjYXJkPXRlbXBjYXJk
LT5kb3dubGluazsNCisJCXByaW50ZigiXHRcdDs7XG4iKTsNCisJfQ0KKw0K
KwlwcmludGYoIlx0Kilcblx0XHRlY2hvIFwiVW5rbm93biBzb3VuZGNhcmQg
JGNhcmQsIGV4aXRpbmchXCJcblx0XHRleGl0IDFcblx0XHQ7O1xuIik7DQor
DQorCXByaW50ZigiICAgIGVzYWNcbiAgZG9uZVxuICBBQ19NU0dfUkVTVUxU
KCRjYXJkcylcbmZpXG4iKTsNCisNCisJdGVtcGNhcmQ9Q2FyZHM7DQorCXdo
aWxlKHRlbXBjYXJkKQ0KKwl7DQorCQlwcmludGYoIkFDX1NVQlNUKCVzKVxu
IiwgdGVtcGNhcmQtPmRlZmluZSk7DQorCQl0ZW1wY2FyZD10ZW1wY2FyZC0+
ZG93bmxpbms7DQorCX0NCisNCisJdGVtcGRlcD1QdWJsaWNEZXBzOw0KKwl3
aGlsZSh0ZW1wZGVwKQ0KKwl7DQorCQlwcmludGYoIkFDX1NVQlNUKCVzKVxu
IiwgdGVtcGRlcC0+bmFtZSk7DQorCQl0ZW1wZGVwPXRlbXBkZXAtPmRvd25s
aW5rOw0KKwl9DQorDQorCXByaW50ZigiXSlcbiIpOw0KKw0KKwlyZXR1cm47
DQorfQ0KKw0KK3ZvaWQgbWFrZV9jYXJkc19jb25mX2luKHZvaWQpDQorew0K
KwlkZXAgKnRlbXBkZXA7DQorCWNhcmQgKnRlbXBjYXJkOw0KKw0KKwl0ZW1w
ZGVwPVB1YmxpY0RlcHM7DQorCXRlbXBjYXJkPUNhcmRzOw0KKw0KKwlwcmlu
dGYoIiNcbiMgU291bmRjYXJkLUNvbmZpZ3VyYXRpb24gZm9yIEFMU0EgZHJp
dmVyXG4iKTsNCisJcHJpbnRmKCIjIENvcHlyaWdodCAoYykgYnkgQW5kZXJz
IFNlbWIgSGVybWFuc2VuIDxhaGVybWFuc0B2Zi50ZWxpYS5ubz5cbiNcblxu
Iik7DQorCQ0KKwl3aGlsZSh0ZW1wY2FyZCkNCisJew0KKwkJcHJpbnRmKCIl
cz1AJXNAXG4iLCB0ZW1wY2FyZC0+ZGVmaW5lLCB0ZW1wY2FyZC0+ZGVmaW5l
KTsNCisJCXRlbXBjYXJkPXRlbXBjYXJkLT5kb3dubGluazsNCisJfQ0KKw0K
Kwl3aGlsZSh0ZW1wZGVwKQ0KKwl7DQorCQlwcmludGYoIiVzPUAlc0BcbiIs
IHRlbXBkZXAtPm5hbWUsIHRlbXBkZXAtPm5hbWUpOw0KKwkJdGVtcGRlcD10
ZW1wZGVwLT5kb3dubGluazsNCisJfQ0KK30NCisNCit2b2lkIGFkZF9jYXJk
cyh2b2lkKQ0KK3sNCisJY2hhciBidWZmZXJbMjU1XSwqbGluZSxhcmdbMjU1
XTsNCisJRklMRSAqbW9kZmlsZTsNCisJY2FyZCAqdGVtcGNhcmQ7DQorCWRl
cCAqdGVtcGRlcDsNCisJaW50IGk7DQorDQorCWlmKChtb2RmaWxlPWZvcGVu
KE1PREZJTEUsInIiKSk9PU5VTEwpDQorCXsNCisJCXByaW50ZigiQ291bGQg
bm90IG9wZW4gJXMgZm9yIHJlYWRcbiIsTU9ERklMRSk7DQorCQlleGl0KC0x
KTsNCisJfQ0KKwl3aGlsZSghZmVvZihtb2RmaWxlKSkNCisJew0KKwkJYnpl
cm8oYnVmZmVyLDI1NSk7DQorCQlmc2NhbmYobW9kZmlsZSwiJVteXG5dXG4i
LGJ1ZmZlcik7DQorCQlpZihidWZmZXJbMF09PSd8JykNCisJCXsNCisJCQls
aW5lPSZidWZmZXJbMV07DQorCQkJbGluZT1nZXRfb25lX3dvcmQobGluZSwo
Y2hhciAqKWFyZyk7DQorCQkJdGVtcGNhcmQ9YWRkX2NhcmQoKTsNCisJCQlz
dHJjcHkodGVtcGNhcmQtPm5hbWUsKGNoYXIgKilhcmcpOw0KKwkJCWZvcihp
PTA7aTxzdHJsZW4odGVtcGNhcmQtPm5hbWUpLTM7aSsrKQ0KKwkJCQl0ZW1w
Y2FyZC0+bmFtZVtpXT10ZW1wY2FyZC0+bmFtZVtpKzRdOw0KKwkJCXN0cmNw
eSh0ZW1wY2FyZC0+ZGVmaW5lLCBjb252ZXJ0X2NvbmZpZygoY2hhciAqKWFy
ZykpOw0KKw0KKwkJCWZvcig7OykNCisJCQl7DQorCQkJCWxpbmU9Z2V0X29u
ZV93b3JkKGxpbmUsKGNoYXIgKilhcmcpOw0KKwkJCQlpZighbGluZSkNCisJ
CQkJew0KKwkJCQkJdGVtcGRlcD1hZGRfZGVwKHRlbXBjYXJkKTsNCisJCQkJ
CXN0cmNweSh0ZW1wZGVwLT5uYW1lLChjaGFyICopYXJnKTsNCisJCQkJCWNv
bnZlcnRfY29uZmlnKHRlbXBkZXAtPm5hbWUpOw0KKwkJCQkJYWRkX3RvX3B1
YmxpY2RlcCh0ZW1wZGVwLT5uYW1lKTsNCisJCQkJCWJyZWFrOw0KKwkJCQl9
DQorCQkJCXRlbXBkZXA9YWRkX2RlcCh0ZW1wY2FyZCk7DQorCQkJCXN0cmNw
eSh0ZW1wZGVwLT5uYW1lLChjaGFyICopYXJnKTsNCisJCQkJY29udmVydF9j
b25maWcodGVtcGRlcC0+bmFtZSk7DQorCQkJCWFkZF90b19wdWJsaWNkZXAo
dGVtcGRlcC0+bmFtZSk7DQorCQkJfQ0KKwkJfQ0KKwl9DQorCWZjbG9zZSht
b2RmaWxlKTsNCisJcmV0dXJuOw0KK30NCisNCitjaGFyICpjb252ZXJ0X2Nv
bmZpZyhjaGFyICpjb25maWcpDQorew0KKwljaGFyIHJldHZhbHVlWzMwXTsN
CisJaW50IGk7DQorDQorCWZvcihpPTA7aTxzdHJsZW4oY29uZmlnKS0zO2kr
KykNCisJCWNvbmZpZ1tpXT1jb25maWdbaSs0XTsNCisJZm9yKGk9MDtpPHN0
cmxlbihjb25maWcpO2krKykNCisJCWlmKGNvbmZpZ1tpXT09Jy0nKQ0KKwkJ
CWNvbmZpZ1tpXT0nXyc7DQorCQllbHNlDQorCQkJY29uZmlnW2ldPXRvdXBw
ZXIoY29uZmlnW2ldKTsNCisNCisJc3RyY3B5KHJldHZhbHVlLCBjb25maWcp
Ow0KKwlzdHJjcHkoY29uZmlnLCAiQ09ORklHX1NORF8iKTsNCisJc3RyY2F0
KGNvbmZpZywgcmV0dmFsdWUpOw0KKw0KKwlyZXR1cm4gY29uZmlnOw0KK30N
CisNCit2b2lkIHVzYWdlKGNoYXIgKnByb2dyYW1uYW1lKQ0KK3sNCisJZnBy
aW50ZihzdGRlcnIsICJVc2FnZTogJXMgLS1hY2luY2x1ZGVcbiAgICAgICAl
cyAtLWNhcmRzLWNvbmZcbiIsIHByb2dyYW1uYW1lLCBwcm9ncmFtbmFtZSk7
DQorCWV4aXQoMSk7DQorfQ0KKw0KK2ludCBtYWluKGludCBhcmdjLCBjaGFy
ICphcmd2W10pDQorew0KKwlhZGRfY2FyZHMoKTsNCisJaWYoYXJnYzwyKQ0K
KwkJdXNhZ2UoYXJndlswXSk7DQorCWlmKHN0cmNtcChhcmd2WzFdLCAiLS1h
Y2luY2x1ZGUiKT09MCkNCisJCW1ha2VfYWNpbmNsdWRlKCk7DQorCWVsc2Ug
aWYoc3RyY21wKGFyZ3ZbMV0sICItLWNhcmRzLWNvbmYiKT09MCkNCisJCW1h
a2VfY2FyZHNfY29uZl9pbigpOw0KKwllbHNlDQorCQl1c2FnZShhcmd2WzBd
KTsNCisJZGVsX2NhcmRzKCk7DQorCXJldHVybiAwOw0KK30NCmRpZmYgLXVO
ciBhbHNhLWRyaXZlci5vcmlnL3V0aWxzL3VwZGF0ZS1kZXBzIGFsc2EtZHJp
dmVyL3V0aWxzL3VwZGF0ZS1kZXBzDQotLS0gYWxzYS1kcml2ZXIub3JpZy91
dGlscy91cGRhdGUtZGVwcwlUaHUgSmFuICAxIDAxOjAwOjAwIDE5NzANCisr
KyBhbHNhLWRyaXZlci91dGlscy91cGRhdGUtZGVwcwlTdW4gSmFuIDMxIDE0
OjI5OjAwIDE5OTkNCkBAIC0wLDAgKzEsOSBAQA0KKyMhL2Jpbi9zaA0KKw0K
K2lmIFsgLXggLi9zbmQtZGVwcyBdDQordGhlbg0KKwkuL3NuZC1kZXBzIC0t
YWNpbmNsdWRlID4gLi4vYWNpbmNsdWRlLm00DQorCS4vc25kLWRlcHMgLS1j
YXJkcy1jb25mID4gLi4vY2FyZHMuY29uZmlnLmluDQorZWxzZQ0KKwllY2hv
ICJDYW5ub3QgZXhlY3V0ZSAuL3NuZC1kZXBzIg0KK2ZpDQo=
---1463810815-831574795-917791851=:14046--

