Rework of the new dialogs

artur <[email protected]> Sun, 11 Apr 2010 11:03:48 +0200
Newsgroups gmane.network.freenet.frost.devel
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--------------080902060605060009070307
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

I have reworked the new dialogs (Add Download, Manage Tracked Downloads) 
a little bit.

Cell padding, Tooltips,.. and stuff.


Cheers

artur

--------------080902060605060009070307
Content-Type: text/plain;
 name="reworkNewDialogs.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="reworkNewDialogs.patch"

SW5kZXg6IHNvdXJjZS9mcm9zdC9ndWkvQWRkTmV3RG93bmxvYWRzRGlhbG9nLmphdmENCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NCi0tLSBzb3VyY2UvZnJvc3QvZ3VpL0FkZE5ld0Rvd25sb2Fkc0RpYWxv
Zy5qYXZhCShyZXZpc2lvbiAzMTk2KQ0KKysrIHNvdXJjZS9mcm9zdC9ndWkvQWRkTmV3RG93
bmxvYWRzRGlhbG9nLmphdmEJKHdvcmtpbmcgY29weSkNCkBAIC0yMCwyNSArMjAsMzEgQEAN
CiAKIGltcG9ydCBqYXZhLmF3dC4qOwogaW1wb3J0IGphdmEuYXd0LmV2ZW50Lio7CitpbXBv
cnQgamF2YS5pby5GaWxlOwogaW1wb3J0IGphdmEudXRpbC4qOwogaW1wb3J0IGphdmEudXRp
bC5MaXN0OwogCiBpbXBvcnQgamF2YXguc3dpbmcuKjsKK2ltcG9ydCBqYXZheC5zd2luZy50
YWJsZS5KVGFibGVIZWFkZXI7CitpbXBvcnQgamF2YXguc3dpbmcudGFibGUuVGFibGVDZWxs
UmVuZGVyZXI7CiAKIGltcG9ydCBmcm9zdC4qOwogaW1wb3J0IGZyb3N0LmZpbGVUcmFuc2Zl
ci5kb3dubG9hZC4qOwogaW1wb3J0IGZyb3N0Lmd1aS5tb2RlbC4qOwogaW1wb3J0IGZyb3N0
LnN0b3JhZ2UucGVyc3QuKjsKK2ltcG9ydCBmcm9zdC51dGlsLkRhdGVGdW47CitpbXBvcnQg
ZnJvc3QudXRpbC5Gb3JtYXR0ZXJVdGlsczsKIGltcG9ydCBmcm9zdC51dGlsLmd1aS4qOwog
aW1wb3J0IGZyb3N0LnV0aWwuZ3VpLnRyYW5zbGF0aW9uLio7CiAKIHB1YmxpYyBjbGFzcyBB
ZGROZXdEb3dubG9hZHNEaWFsb2cgZXh0ZW5kcyBqYXZheC5zd2luZy5KRGlhbG9nIHsKIAog
CXByaXZhdGUgZmluYWwgTGFuZ3VhZ2UgbGFuZ3VhZ2U7CisKIAlwcml2YXRlIGZpbmFsIFRy
YWNrRG93bmxvYWRLZXlzU3RvcmFnZSB0cmFja0Rvd25sb2FkS2V5c1N0b3JhZ2U7CiAKIAlw
cml2YXRlIEFkZE5ld0Rvd25sb2Fkc1RhYmxlTW9kZWwgYWRkTmV3RG93bmxvYWRzVGFibGVN
b2RlbDsKLQlwcml2YXRlIFNvcnRlZFRhYmxlIGFkZE5ld0Rvd25sb2Fkc1RhYmxlOworCXBy
aXZhdGUgQWRkTmV3RG93bmxvYWRzVGFibGUgYWRkTmV3RG93bmxvYWRzVGFibGU7CiAJcHJp
dmF0ZSBKQnV0dG9uIHJlbW92ZUFscmVhZHlEb3dubG9hZGVkQnV0dG9uOwogCXByaXZhdGUg
SkJ1dHRvbiByZW1vdmVBbHJlYWR5RXhpc3RzQnV0dG9uOwogCXByaXZhdGUgSkJ1dHRvbiBv
a0J1dHRvbjsKQEAgLTUxLDcgKzU3LDcgQEANCiAKIAlwcml2YXRlIHN0YXRpYyBmaW5hbCBs
b25nIHNlcmlhbFZlcnNpb25VSUQgPSAxTDsKIAotCXB1YmxpYyBBZGROZXdEb3dubG9hZHNE
aWFsb2coZmluYWwgSkZyYW1lIGZyYW1lLCBmaW5hbCBMaXN0PEZyb3N0RG93bmxvYWRJdGVt
PiBmcm9zdERvd25sb2FkSXRlbUxpc3QpIHsKKwlwdWJsaWMgQWRkTmV3RG93bmxvYWRzRGlh
bG9nKGZpbmFsIEpGcmFtZSBmcmFtZSwgZmluYWwgTGlzdDxGcm9zdERvd25sb2FkSXRlbT4g
ZnJvc3REb3dubG9hZEl0ZW1MaXN0KSB7IAogCQlzdXBlcihmcmFtZSk7CiAJCXBhcmVudEZy
YW1lID0gZnJhbWU7CiAJCXNldE1vZGFsKHRydWUpOwpAQCAtMTI0LDcgKzEzMCw3IEBADQog
CiAJCQkvLyBEb3dubG9hZCBUYWJsZQogCQkJYWRkTmV3RG93bmxvYWRzVGFibGVNb2RlbCA9
IG5ldyBBZGROZXdEb3dubG9hZHNUYWJsZU1vZGVsKCk7Ci0JCQlhZGROZXdEb3dubG9hZHNU
YWJsZSA9IG5ldyBTb3J0ZWRUYWJsZSggYWRkTmV3RG93bmxvYWRzVGFibGVNb2RlbCApOwor
CQkJYWRkTmV3RG93bmxvYWRzVGFibGUgPSBuZXcgQWRkTmV3RG93bmxvYWRzVGFibGUoIGFk
ZE5ld0Rvd25sb2Fkc1RhYmxlTW9kZWwgKTsKIAkJCWFkZE5ld0Rvd25sb2Fkc1RhYmxlLnNl
dFJvd1NlbGVjdGlvbkFsbG93ZWQodHJ1ZSk7CiAJCQlhZGROZXdEb3dubG9hZHNUYWJsZS5z
ZXRTZWxlY3Rpb25Nb2RlKCBMaXN0U2VsZWN0aW9uTW9kZWwuTVVMVElQTEVfSU5URVJWQUxf
U0VMRUNUSU9OICk7CiAJCQlhZGROZXdEb3dubG9hZHNUYWJsZS5zZXRSb3dIZWlnaHQoMTgp
OwpAQCAtMjczLDcgKzI3OSw3IEBADQogCQkJCS8vIGFkZCB0aGUgYm9hcmQocykgdG8gYm9h
cmQgdHJlZSBhbmQgcmVtb3ZlIGl0IGZyb20gdGFibGUKIAkJCQlmaW5hbCBBZGROZXdEb3du
bG9hZHNUYWJsZU1lbWJlciByb3cgPSAoQWRkTmV3RG93bmxvYWRzVGFibGVNZW1iZXIpIGFk
ZE5ld0Rvd25sb2Fkc1RhYmxlTW9kZWwuZ2V0Um93KHJvd0luZGV4KTsKIAkJCQlyb3cuZ2V0
RG93bmxvYWRJdGVtKCkuc2V0RG93bmxvYWREaXIoY2hvb3Nlci5nZXRTZWxlY3RlZEZpbGUo
KS50b1N0cmluZygpKTsKLQkJCQlyb3cudXBkYXRlQ29tbWVudCgpOworCQkJCXJvdy51cGRh
dGVFeGlzdHNDaGVjaygpOwogCQkJfQogCQkJYWRkTmV3RG93bmxvYWRzVGFibGUuY2xlYXJT
ZWxlY3Rpb24oKTsKIAkJfQpAQCAtMzE0LDE0ICszMjAsOTUgQEANCiAJCQlhZGROZXdEb3du
bG9hZHNUYWJsZS5jbGVhclNlbGVjdGlvbigpOwogCQl9CiAJfQorCQorCQorCXByaXZhdGUg
c3RhdGljIGNsYXNzIEFkZE5ld0Rvd25sb2Fkc1RhYmxlTW9kZWwgZXh0ZW5kcyBTb3J0ZWRU
YWJsZU1vZGVseworCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25V
SUQgPSAxTDsKIAotCWNsYXNzIEFkZE5ld0Rvd25sb2Fkc1RhYmxlTWVtYmVyIGltcGxlbWVu
dHMgVGFibGVNZW1iZXIgeworCQlwcml2YXRlIExhbmd1YWdlIGxhbmd1YWdlID0gbnVsbDsK
IAotCQlGcm9zdERvd25sb2FkSXRlbSBmcm9zdERvd25sb2FkSXRlbTsKLQkJU3RyaW5nIGNv
bW1lbnQ7CisJCXByb3RlY3RlZCBmaW5hbCBzdGF0aWMgU3RyaW5nIGNvbHVtbk5hbWVzW10g
PSBuZXcgU3RyaW5nWzZdOwogCisJCXByb3RlY3RlZCBmaW5hbCBzdGF0aWMgQ2xhc3M8Pz4g
Y29sdW1uQ2xhc3Nlc1tdID0gIHsKKwkJCVN0cmluZy5jbGFzcywKKwkJCVN0cmluZy5jbGFz
cywKKwkJCVN0cmluZy5jbGFzcywKKwkJCVN0cmluZy5jbGFzcywKKwkJCVN0cmluZy5jbGFz
cywKKwkJCVN0cmluZy5jbGFzcworCQl9OworCisJCXB1YmxpYyBBZGROZXdEb3dubG9hZHNU
YWJsZU1vZGVsKCkgeworCQkJc3VwZXIoKTsKKwkJCWFzc2VydCBjb2x1bW5DbGFzc2VzLmxl
bmd0aCA9PSBjb2x1bW5OYW1lcy5sZW5ndGg7CisJCQlsYW5ndWFnZSA9IExhbmd1YWdlLmdl
dEluc3RhbmNlKCk7CisJCQlyZWZyZXNoTGFuZ3VhZ2UoKTsKKwkJfQorCisJCXByaXZhdGUg
dm9pZCByZWZyZXNoTGFuZ3VhZ2UoKSB7CisJCQljb2x1bW5OYW1lc1swXSA9IGxhbmd1YWdl
LmdldFN0cmluZygiQWRkTmV3RG93bmxvYWRzRGlhbG9nLnRhYmxlLm5hbWUiKTsKKwkJCWNv
bHVtbk5hbWVzWzFdID0gbGFuZ3VhZ2UuZ2V0U3RyaW5nKCJBZGROZXdEb3dubG9hZHNEaWFs
b2cudGFibGUua2V5Iik7CisJCQljb2x1bW5OYW1lc1syXSA9IGxhbmd1YWdlLmdldFN0cmlu
ZygiQWRkTmV3RG93bmxvYWRzRGlhbG9nLnRhYmxlLnByaW9yaXR5Iik7CisJCQljb2x1bW5O
YW1lc1szXSA9IGxhbmd1YWdlLmdldFN0cmluZygiQWRkTmV3RG93bmxvYWRzRGlhbG9nLnRh
YmxlLmRvd25sb2FkRGlyIik7CisJCQljb2x1bW5OYW1lc1s0XSA9IGxhbmd1YWdlLmdldFN0
cmluZygiQWRkTmV3RG93bmxvYWRzRGlhbG9nLnRhYmxlLmRvd25sb2FkZWQiKTsKKwkJCWNv
bHVtbk5hbWVzWzVdID0gbGFuZ3VhZ2UuZ2V0U3RyaW5nKCJBZGROZXdEb3dubG9hZHNEaWFs
b2cudGFibGUuZXhpc3RzIik7CisJCX0KKworCQlwdWJsaWMgYm9vbGVhbiBpc0NlbGxFZGl0
YWJsZShpbnQgcm93LCBpbnQgY29sKSB7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKworCQlw
dWJsaWMgU3RyaW5nIGdldENvbHVtbk5hbWUoaW50IGNvbHVtbikgeworCQkJaWYoIGNvbHVt
biA+PSAwICYmIGNvbHVtbiA8IGNvbHVtbk5hbWVzLmxlbmd0aCApCisJCQkJcmV0dXJuIGNv
bHVtbk5hbWVzW2NvbHVtbl07CisJCQlyZXR1cm4gbnVsbDsKKwkJfQorCisJCXB1YmxpYyBp
bnQgZ2V0Q29sdW1uQ291bnQoKSB7CisJCQlyZXR1cm4gY29sdW1uTmFtZXMubGVuZ3RoOwor
CQl9CisKKwkJcHVibGljIENsYXNzPD8+IGdldENvbHVtbkNsYXNzKGludCBjb2x1bW4pIHsK
KwkJCWlmKCBjb2x1bW4gPj0gMCAmJiBjb2x1bW4gPCBjb2x1bW5DbGFzc2VzLmxlbmd0aCAp
CisJCQkJcmV0dXJuIGNvbHVtbkNsYXNzZXNbY29sdW1uXTsKKwkJCXJldHVybiBudWxsOwor
CQl9CisJfQorCisJcHJpdmF0ZSBjbGFzcyBBZGROZXdEb3dubG9hZHNUYWJsZU1lbWJlciBp
bXBsZW1lbnRzIFRhYmxlTWVtYmVyIHsKKworCQlwcml2YXRlIEZyb3N0RG93bmxvYWRJdGVt
IGZyb3N0RG93bmxvYWRJdGVtOworCQlwcml2YXRlIGJvb2xlYW4gZG93bmxvYWRlZDsKKwkJ
cHJpdmF0ZSBTdHJpbmcgZG93bmxvYWRlZFRvb2x0aXA7CisJCXByaXZhdGUgYm9vbGVhbiBl
eGlzdHM7CisJCXByaXZhdGUgU3RyaW5nIGV4aXN0c1Rvb2x0aXA7CisKIAkJcHVibGljIEFk
ZE5ld0Rvd25sb2Fkc1RhYmxlTWVtYmVyKGZpbmFsIEZyb3N0RG93bmxvYWRJdGVtIGZyb3N0
RG93bmxvYWRJdGVtKXsKIAkJCXRoaXMuZnJvc3REb3dubG9hZEl0ZW0gPSBmcm9zdERvd25s
b2FkSXRlbTsKKwkJCVRyYWNrRG93bmxvYWRLZXlzIHRyYWNrRG93bmxvYWRLZXlzID0gdHJh
Y2tEb3dubG9hZEtleXNTdG9yYWdlLmdldEl0ZW1CeUtleShmcm9zdERvd25sb2FkSXRlbS5n
ZXRLZXkoKSk7CisJCQlkb3dubG9hZGVkID0gdHJhY2tEb3dubG9hZEtleXMgIT0gbnVsbDsK
KwkJCWlmKCBkb3dubG9hZGVkICkgeworCQkJCWZpbmFsIGxvbmcgZGF0ZSA9IHRyYWNrRG93
bmxvYWRLZXlzLmdldERvd25sb2FkRmluaXNoZWRUaW1lKCk7CisJCQkJZG93bmxvYWRlZFRv
b2x0aXAgPSBuZXcgU3RyaW5nQnVpbGRlcigiPGh0bWw+IikKKwkJCQkJCS5hcHBlbmQobGFu
Z3VhZ2UuZ2V0U3RyaW5nKCJNYW5hZ2VEb3dubG9hZFRyYWNraW5nRGlhbG9nLnRhYmxlLmZp
bmlzaGVkIikpCisJCQkJCQkuYXBwZW5kKCI6ICIpCisJCQkJCQkuYXBwZW5kKERhdGVGdW4u
Rk9STUFUX0RBVEVfVklTSUJMRS5wcmludChkYXRlKSkKKwkJCQkJCS5hcHBlbmQoIiAiKQor
CQkJCQkJLmFwcGVuZChEYXRlRnVuLkZPUk1BVF9USU1FX1ZJU0lCTEUucHJpbnQoZGF0ZSkp
CisJCQkJCQkuYXBwZW5kKCI8YnIgLz5cbiIpCisJCQkJCQkuYXBwZW5kKGxhbmd1YWdlLmdl
dFN0cmluZygiTWFuYWdlRG93bmxvYWRUcmFja2luZ0RpYWxvZy50YWJsZS5ib2FyZCIpKQor
CQkJCQkJLmFwcGVuZCgiOiAiKQorCQkJCQkJLmFwcGVuZCh0cmFja0Rvd25sb2FkS2V5cy5n
ZXRCb2FyZE5hbWUoKSkKKwkJCQkJCS5hcHBlbmQoIjxiciAvPlxuIikKKwkJCQkJCS5hcHBl
bmQobGFuZ3VhZ2UuZ2V0U3RyaW5nKCJNYW5hZ2VEb3dubG9hZFRyYWNraW5nRGlhbG9nLnRh
YmxlLnNpemUiKSkKKwkJCQkJCS5hcHBlbmQoIjogIikKKwkJCQkJCS5hcHBlbmQoRm9ybWF0
dGVyVXRpbHMuZm9ybWF0U2l6ZSh0cmFja0Rvd25sb2FkS2V5cy5nZXRGaWxlU2l6ZSgpKSkK
KwkJCQkJCS5hcHBlbmQoIjwvaHRtbD4iKQorCQkJCQkJLnRvU3RyaW5nKCk7CisJCQl9IGVs
c2UgeworCQkJCWRvd25sb2FkZWRUb29sdGlwID0gIiI7CisJCQl9CisJCQl1cGRhdGVFeGlz
dHNDaGVjaygpOwogCQl9CiAKIAkJcHVibGljIE9iamVjdCBnZXRWYWx1ZUF0KGZpbmFsIGlu
dCBjb2x1bW4pIHsKQEAgLTMzOSwzMCArNDI2LDM0IEBADQogCQkJCWNhc2UgMzoKIAkJCQkJ
cmV0dXJuIGZyb3N0RG93bmxvYWRJdGVtLmdldERvd25sb2FkRGlyKCk7CiAJCQkJY2FzZSA0
OgotCQkJCQlpZihjb21tZW50ID09IG51bGwpIHsKLQkJCQkJCXRoaXMudXBkYXRlQ29tbWVu
dCgpOwotCQkJCQl9Ci0JCQkJCXJldHVybiBjb21tZW50OworCQkJCQlyZXR1cm4gZG93bmxv
YWRlZCA/ICJYIiA6ICIiOworCQkJCWNhc2UgNToKKwkJCQkJcmV0dXJuIGV4aXN0cyA/ICJY
IiA6ICIiOwogCQkJCWRlZmF1bHQgOgogCQkJCQl0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlv
bigiVW5rbm93biBDb2x1bW4gcG9zIik7CiAJCQl9CiAJCX0KIAotCQlwdWJsaWMgdm9pZCB1
cGRhdGVDb21tZW50KCkgewotCQkgICAgY29tbWVudCA9ICIiOwotCi0JCSAgICAvLyBIYXMg
dGhpcyBrZXkgYWxyZWFkeSBiZWVuIGRvd25sb2FkZWQ/Ci0JCSAgICBpZiAodHJhY2tEb3du
bG9hZEtleXNTdG9yYWdlLnNlYXJjaEl0ZW1LZXkoIGZyb3N0RG93bmxvYWRJdGVtLmdldEtl
eSgpICkpIHsKLQkJCQljb21tZW50ICs9IGxhbmd1YWdlLmdldFN0cmluZygiQWRkTmV3RG93
bmxvYWRzRGlhbG9nLnRhYmxlLmFscmVhZHlEb3dubG9hZGVkIik7CisJCXB1YmxpYyB2b2lk
IHVwZGF0ZUV4aXN0c0NoZWNrKCkgeworCQkJRmlsZSBleGlzdGluZ0ZpbGUgPSBuZXcgamF2
YS5pby5GaWxlKGZyb3N0RG93bmxvYWRJdGVtLmdldERvd25sb2FkRGlyKCkgKyBmcm9zdERv
d25sb2FkSXRlbS5nZXRGaWxlbmFtZSgpKTsKKwkJCWV4aXN0cyA9IGV4aXN0aW5nRmlsZS5l
eGlzdHMoKTsKKwkJCWlmKCBleGlzdHMpIHsKKwkJCQlmaW5hbCBsb25nIGRhdGUgPSBleGlz
dGluZ0ZpbGUubGFzdE1vZGlmaWVkKCk7CisJCQkJZXhpc3RzVG9vbHRpcCA9IG5ldyBTdHJp
bmdCdWlsZGVyKCI8aHRtbD4iKQorCQkJCS5hcHBlbmQobGFuZ3VhZ2UuZ2V0U3RyaW5nKCJB
ZGROZXdEb3dubG9hZHNEaWFsb2cudGFibGUubGFzdE1vZGlmaWVkVG9vbHRpcCIpKQorCQkJ
CS5hcHBlbmQoIjogIikKKwkJCQkuYXBwZW5kKERhdGVGdW4uRk9STUFUX0RBVEVfVklTSUJM
RS5wcmludChkYXRlKSkKKwkJCQkuYXBwZW5kKCIgIikKKwkJCQkuYXBwZW5kKERhdGVGdW4u
Rk9STUFUX1RJTUVfVklTSUJMRS5wcmludChkYXRlKSkKKwkJCQkuYXBwZW5kKCI8YnIgLz5c
biIpCisJCQkJLmFwcGVuZChsYW5ndWFnZS5nZXRTdHJpbmcoIkFkZE5ld0Rvd25sb2Fkc0Rp
YWxvZy50YWJsZS5maWxlU2l6ZVRvb2x0aXAiKSkKKwkJCQkuYXBwZW5kKCI6ICIpCisJCQkJ
LmFwcGVuZChGb3JtYXR0ZXJVdGlscy5mb3JtYXRTaXplKGV4aXN0aW5nRmlsZS5sZW5ndGgo
KSkpCisJCQkJLmFwcGVuZCgiPC9odG1sPiIpCisJCQkJLnRvU3RyaW5nKCk7CisJCQl9IGVs
c2UgeworCQkJCWV4aXN0c1Rvb2x0aXAgPSAiIjsKIAkJCX0KLQotICAgICAgICAgICAgLy8g
RG9lcyB0YXJnZXQgZmlsZSBhbHJlYWR5IGV4aXN0PwotCQkgICAgaWYgKG5ldyBqYXZhLmlv
LkZpbGUoZnJvc3REb3dubG9hZEl0ZW0uZ2V0RG93bmxvYWREaXIoKSArIGZyb3N0RG93bmxv
YWRJdGVtLmdldEZpbGVuYW1lKCkpLmV4aXN0cygpICkgewotCQkJICAgIGlmIChjb21tZW50
Lmxlbmd0aCgpID4gMCkgewotCQkJICAgICAgICBjb21tZW50ICs9ICIsICI7Ci0JCQkgICAg
fQotCQkJICAgIGNvbW1lbnQgKz0gbGFuZ3VhZ2UuZ2V0U3RyaW5nKCJBZGROZXdEb3dubG9h
ZHNEaWFsb2cudGFibGUuYWxyZWFkeUV4aXN0cyIpOwotCQkJfQogCQl9CiAKIAkJcHVibGlj
IGludCBjb21wYXJlVG8oZmluYWwgVGFibGVNZW1iZXIgYW5PdGhlciwgZmluYWwgaW50IHRh
YmxlQ29sdW1JbmRleCkgewpAQCAtMzc2LDcgKzQ2Nyw3IEBADQogCQl9CiAJfQogCi0JY2xh
c3MgVGFibGVQb3B1cE1lbnVNb3VzZUxpc3RlbmVyIGltcGxlbWVudHMgTW91c2VMaXN0ZW5l
ciB7CisJcHJpdmF0ZSBjbGFzcyBUYWJsZVBvcHVwTWVudU1vdXNlTGlzdGVuZXIgaW1wbGVt
ZW50cyBNb3VzZUxpc3RlbmVyIHsKIAkJcHVibGljIHZvaWQgbW91c2VSZWxlYXNlZChmaW5h
bCBNb3VzZUV2ZW50IGV2ZW50KSB7CiAJCQltYXliZVNob3dQb3B1cChldmVudCk7CiAJCX0K
QEAgLTM5MCwxMCArNDgxLDkyIEBADQogCQlwcm90ZWN0ZWQgdm9pZCBtYXliZVNob3dQb3B1
cChmaW5hbCBNb3VzZUV2ZW50IGUpIHsKIAkJCWlmKCBlLmlzUG9wdXBUcmlnZ2VyKCkgKSB7
CiAJCQkJaWYoIGFkZE5ld0Rvd25sb2Fkc1RhYmxlLmdldFNlbGVjdGVkUm93Q291bnQoKSA+
IDAgKSB7Ci0JCQkJCS8vIGRvbid0IHNob3cgbWVudSBpZiBub3RoaW5nIGlzIHNlbGVjdGVk
CiAJCQkJCXRhYmxlUG9wdXBNZW51LnNob3coYWRkTmV3RG93bmxvYWRzVGFibGUsIGUuZ2V0
WCgpLCBlLmdldFkoKSk7CiAJCQkJfQogCQkJfQogCQl9CiAJfQorCQorCXByaXZhdGUgY2xh
c3MgQWRkTmV3RG93bmxvYWRzVGFibGUgZXh0ZW5kcyBTb3J0ZWRUYWJsZSB7CisKKwkJcHJp
dmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMUw7CisJCXByaXZh
dGUgQ2VudGVyQ2VsbFJlbmRlcmVyIGNlbnRlckNlbGxSZW5kZXJlcjsKKwkJCisJCXByaXZh
dGUgZmluYWwgU3RyaW5nW10gY29sdW1uVG9vbHRpcHMgPSB7CisJCQludWxsLAorCQkJbnVs
bCwKKwkJCW51bGwsCisJCQludWxsLAorCQkJbGFuZ3VhZ2UuZ2V0U3RyaW5nKCJBZGROZXdE
b3dubG9hZHNEaWFsb2cudGFibGVUb29sbHRpcC5kb3dubG9hZGVkIiksCisJCQlsYW5ndWFn
ZS5nZXRTdHJpbmcoIkFkZE5ld0Rvd25sb2Fkc0RpYWxvZy50YWJsZVRvb2xsdGlwLmV4aXN0
cyIpCisJCX07CisKKwkJcHVibGljIEFkZE5ld0Rvd25sb2Fkc1RhYmxlKGZpbmFsIEFkZE5l
d0Rvd25sb2Fkc1RhYmxlTW9kZWwgYWRkTmV3RG93bmxvYWRzVGFibGVNb2RlbCkgeworCQkJ
c3VwZXIoYWRkTmV3RG93bmxvYWRzVGFibGVNb2RlbCk7CisJCQl0aGlzLnNldEludGVyY2Vs
bFNwYWNpbmcobmV3IERpbWVuc2lvbig1LCAxKSk7CisJCQljZW50ZXJDZWxsUmVuZGVyZXIg
PSBuZXcgQ2VudGVyQ2VsbFJlbmRlcmVyKCk7CisJCX0KKworCQlwdWJsaWMgU3RyaW5nIGdl
dFRvb2xUaXBUZXh0KGZpbmFsIE1vdXNlRXZlbnQgbW91c2VFdmVudCkgeworCQkJZmluYWwg
amF2YS5hd3QuUG9pbnQgcG9pbnQgPSBtb3VzZUV2ZW50LmdldFBvaW50KCk7CisJCQlmaW5h
bCBpbnQgcm93SW5kZXggPSByb3dBdFBvaW50KHBvaW50KTsKKwkJCWZpbmFsIGludCBjb2xJ
bmRleCA9IGNvbHVtbkF0UG9pbnQocG9pbnQpOworCQkJZmluYWwgaW50IHJlYWxDb2x1bW5J
bmRleCA9IGNvbnZlcnRDb2x1bW5JbmRleFRvTW9kZWwoY29sSW5kZXgpOworCQkJZmluYWwg
QWRkTmV3RG93bmxvYWRzVGFibGVNb2RlbCB0YWJsZU1vZGVsID0gKEFkZE5ld0Rvd25sb2Fk
c1RhYmxlTW9kZWwpIGdldE1vZGVsKCk7CisJCQlzd2l0Y2gocmVhbENvbHVtbkluZGV4KXsK
KwkJCQljYXNlIDA6CisJCQkJY2FzZSAxOgorCQkJCWNhc2UgMjoKKwkJCQljYXNlIDM6CisJ
CQkJCXJldHVybiB0YWJsZU1vZGVsLmdldFZhbHVlQXQocm93SW5kZXgsIHJlYWxDb2x1bW5J
bmRleCkudG9TdHJpbmcoKTsKKwkJCQljYXNlIDQ6CisJCQkJCXJldHVybiAoKEFkZE5ld0Rv
d25sb2Fkc1RhYmxlTWVtYmVyKSBhZGROZXdEb3dubG9hZHNUYWJsZU1vZGVsLmdldFJvdyhy
b3dJbmRleCkpLmRvd25sb2FkZWRUb29sdGlwOworCQkJCWNhc2UgNToKKwkJCQkJcmV0dXJu
ICgoQWRkTmV3RG93bmxvYWRzVGFibGVNZW1iZXIpIGFkZE5ld0Rvd25sb2Fkc1RhYmxlTW9k
ZWwuZ2V0Um93KHJvd0luZGV4KSkuZXhpc3RzVG9vbHRpcDsKKwkJCQlkZWZhdWx0OgorCQkJ
CQlhc3NlcnQgZmFsc2U7CisJCQl9CisJCQlyZXR1cm4gdGFibGVNb2RlbC5nZXRWYWx1ZUF0
KHJvd0luZGV4LCByZWFsQ29sdW1uSW5kZXgpLnRvU3RyaW5nKCk7CisJCX0KKwkJCisJCXB1
YmxpYyBUYWJsZUNlbGxSZW5kZXJlciBnZXRDZWxsUmVuZGVyZXIoZmluYWwgaW50IHJvd0lu
ZGV4LCBmaW5hbCBpbnQgY29sdW1uSW5kZXgpIHsKKwkJCXN3aXRjaChjb2x1bW5JbmRleCl7
CisJCQkJY2FzZSAwOgorCQkJCWNhc2UgMToKKwkJCQljYXNlIDI6CisJCQkJY2FzZSAzOgor
CQkJCQlyZXR1cm4gc3VwZXIuZ2V0Q2VsbFJlbmRlcmVyKHJvd0luZGV4LCBjb2x1bW5JbmRl
eCk7CisJCQkJY2FzZSA0OgorCQkJCWNhc2UgNToKKwkJCQkJcmV0dXJuIGNlbnRlckNlbGxS
ZW5kZXJlcjsKKwkJCQlkZWZhdWx0OgorCQkJCQlhc3NlcnQgZmFsc2U7CisJCQl9CisJCQly
ZXR1cm4gc3VwZXIuZ2V0Q2VsbFJlbmRlcmVyKHJvd0luZGV4LCBjb2x1bW5JbmRleCk7CisJ
CX0KKworCQlwcml2YXRlIGNsYXNzIENlbnRlckNlbGxSZW5kZXJlciBleHRlbmRzIEpMYWJl
bCBpbXBsZW1lbnRzIFRhYmxlQ2VsbFJlbmRlcmVyIHsKKwkJCXByaXZhdGUgc3RhdGljIGZp
bmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDFMOworCisJCQlwdWJsaWMgQ29tcG9uZW50
IGdldFRhYmxlQ2VsbFJlbmRlcmVyQ29tcG9uZW50KGZpbmFsIEpUYWJsZSB0YWJsZSwKKwkJ
CQkJZmluYWwgT2JqZWN0IHZhbHVlLCBmaW5hbCBib29sZWFuIGlzU2VsZWN0ZWQsIGZpbmFs
IGJvb2xlYW4gaGFzRm9jdXMsCisJCQkJCWZpbmFsIGludCByb3csIGZpbmFsIGludCBjb2x1
bW4pIHsKKwkJCQl0aGlzLnNldFRleHQodmFsdWUudG9TdHJpbmcoKSk7CisJCQkJdGhpcy5z
ZXRIb3Jpem9udGFsQWxpZ25tZW50KFN3aW5nQ29uc3RhbnRzLkNFTlRFUik7CisJCQkJcmV0
dXJuIHRoaXM7CisJCQl9CisJCX0KKwkJCisJCXByb3RlY3RlZCBKVGFibGVIZWFkZXIgY3Jl
YXRlRGVmYXVsdFRhYmxlSGVhZGVyKCkgeworCQkJcmV0dXJuIG5ldyBKVGFibGVIZWFkZXIo
Y29sdW1uTW9kZWwpIHsKKwkJCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZl
cnNpb25VSUQgPSAxTDsKKwkJCQlwdWJsaWMgU3RyaW5nIGdldFRvb2xUaXBUZXh0KGZpbmFs
IE1vdXNlRXZlbnQgZSkgeworCQkJCQlmaW5hbCBqYXZhLmF3dC5Qb2ludCBwID0gZS5nZXRQ
b2ludCgpOworCQkJCQlmaW5hbCBpbnQgaW5kZXggPSBjb2x1bW5Nb2RlbC5nZXRDb2x1bW5J
bmRleEF0WChwLngpOworCQkJCQlmaW5hbCBpbnQgcmVhbEluZGV4ID0gY29sdW1uTW9kZWwu
Z2V0Q29sdW1uKGluZGV4KS5nZXRNb2RlbEluZGV4KCk7CisJCQkJCXJldHVybiBjb2x1bW5U
b29sdGlwc1tyZWFsSW5kZXhdOworCQkJCX0KKwkJCX07CisJCX0KKwl9CiB9CkluZGV4OiBz
b3VyY2UvZnJvc3QvZ3VpL01hbmFnZVRyYWNrZWREb3dubG9hZHMuamF2YQ0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIHNvdXJjZS9mcm9zdC9ndWkvTWFuYWdlVHJhY2tlZERvd25sb2Fkcy5qYXZh
CShyZXZpc2lvbiAzMTk2KQ0KKysrIHNvdXJjZS9mcm9zdC9ndWkvTWFuYWdlVHJhY2tlZERv
d25sb2Fkcy5qYXZhCSh3b3JraW5nIGNvcHkpDQpAQCAtMjQsNiArMjQsOCBAQA0KIGltcG9y
dCBqYXZhLmlvLio7CiAKIGltcG9ydCBqYXZheC5zd2luZy4qOworaW1wb3J0IGphdmF4LnN3
aW5nLnRhYmxlLlRhYmxlQ2VsbFJlbmRlcmVyOworaW1wb3J0IGphdmF4LnN3aW5nLnRhYmxl
LlRhYmxlTW9kZWw7CiAKIGltcG9ydCBmcm9zdC4qOwogaW1wb3J0IGZyb3N0LmZjcC4qOwpA
QCAtMzgsNyArNDAsNyBAQA0KIAlwcml2YXRlIGZpbmFsIFRyYWNrRG93bmxvYWRLZXlzU3Rv
cmFnZSB0cmFja0Rvd25sb2FkS2V5c1N0b3JhZ2U7CiAKIAlwcml2YXRlIFRyYWNrZWREb3du
bG9hZHNNb2RlbCB0cmFja2VkRG93bmxvYWRzTW9kZWw7Ci0JcHJpdmF0ZSBTb3J0ZWRUYWJs
ZSB0cmFja2VkRG93bmxvYWRzVGFibGU7CisJcHJpdmF0ZSBUcmFja2VkRG93bmxvYWRzVGFi
bGUgdHJhY2tlZERvd25sb2Fkc1RhYmxlOwogCiAJcHJpdmF0ZSBKVGV4dEZpZWxkIG1heEFn
ZVRleHRGaWVsZDsKIAlwcml2YXRlIEpCdXR0b24gbWF4QWdlQnV0dG9uOwpAQCAtMTE0LDcg
KzExNiw3IEBADQogCiAJCQkvLyBEb3dubG9hZCBUYWJsZQogCQkJdHJhY2tlZERvd25sb2Fk
c01vZGVsID0gbmV3IFRyYWNrZWREb3dubG9hZHNNb2RlbCgpOwotCQkJdHJhY2tlZERvd25s
b2Fkc1RhYmxlID0gbmV3IFNvcnRlZFRhYmxlKCB0cmFja2VkRG93bmxvYWRzTW9kZWwgKTsK
KwkJCXRyYWNrZWREb3dubG9hZHNUYWJsZSA9IG5ldyBUcmFja2VkRG93bmxvYWRzVGFibGUo
IHRyYWNrZWREb3dubG9hZHNNb2RlbCApOwogCQkJdHJhY2tlZERvd25sb2Fkc1RhYmxlLnNl
dFJvd1NlbGVjdGlvbkFsbG93ZWQodHJ1ZSk7CiAJCQl0cmFja2VkRG93bmxvYWRzVGFibGUu
c2V0U2VsZWN0aW9uTW9kZSggTGlzdFNlbGVjdGlvbk1vZGVsLk1VTFRJUExFX0lOVEVSVkFM
X1NFTEVDVElPTiApOwogCQkJdHJhY2tlZERvd25sb2Fkc1RhYmxlLnNldFJvd0hlaWdodCgx
OCk7CkBAIC0yNDUsNyArMjQ3LDcgQEANCiAJCQkJCXRyYWNrRG93bmxvYWRLZXlzU3RvcmFn
ZS5zdG9yZUl0ZW0obmV3IFRyYWNrRG93bmxvYWRLZXlzKHN0ckxpbmUsIGZpbGVOYW1lLCAi
Iiwgc2VsZWN0ZWRGaWxlLmxlbmd0aCgpLCBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSkp
OwogCQkJCX0KIAkJCX0KLQkJfWNhdGNoKGZpbmFsIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiBl
eCkgeworCQl9IGNhdGNoKGZpbmFsIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiBleCkgewogCQkJ
ZXgucHJpbnRTdGFja1RyYWNlKCk7CiAJCX0gY2F0Y2ggKGZpbmFsIElPRXhjZXB0aW9uIGV4
KSB7CiAJCQlleC5wcmludFN0YWNrVHJhY2UoKTsKQEAgLTI2OCwxMSArMjcwLDYyIEBADQog
CQl0cmFja0Rvd25sb2FkS2V5c1N0b3JhZ2UuY2xlYW51cFRhYmxlKG1heF9hZ2UpOwogCQls
b2FkVHJhY2tlZERvd25sb2Fkc0ludG9UYWJsZSgpOwogCX0KKwkKKwlwcml2YXRlIHN0YXRp
YyBjbGFzcyBUcmFja2VkRG93bmxvYWRzTW9kZWwgZXh0ZW5kcyBTb3J0ZWRUYWJsZU1vZGVs
IHsKKwkJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMUw7
CiAKLQljbGFzcyBUcmFja2VkRG93bmxvYWRUYWJsZU1lbWJlciBpbXBsZW1lbnRzIFRhYmxl
TWVtYmVyIHsKKwkJcHJpdmF0ZSBMYW5ndWFnZSBsYW5ndWFnZSA9IG51bGw7CiAKKwkJcHJv
dGVjdGVkIGZpbmFsIHN0YXRpYyBTdHJpbmcgY29sdW1uTmFtZXNbXSA9IG5ldyBTdHJpbmdb
NV07CisKKwkJcHJvdGVjdGVkIGZpbmFsIHN0YXRpYyBDbGFzczw/PiBjb2x1bW5DbGFzc2Vz
W10gPSAgeworCQkJU3RyaW5nLmNsYXNzLAorCQkJU3RyaW5nLmNsYXNzLAorCQkJU3RyaW5n
LmNsYXNzLAorCQkJU3RyaW5nLmNsYXNzLAorCQkJU3RyaW5nLmNsYXNzCisJCX07CisKKwkJ
cHVibGljIFRyYWNrZWREb3dubG9hZHNNb2RlbCgpIHsKKwkJCXN1cGVyKCk7CisJCQlhc3Nl
cnQgY29sdW1uQ2xhc3Nlcy5sZW5ndGggPT0gY29sdW1uTmFtZXMubGVuZ3RoOworCQkJbGFu
Z3VhZ2UgPSBMYW5ndWFnZS5nZXRJbnN0YW5jZSgpOworCQkJcmVmcmVzaExhbmd1YWdlKCk7
CisJCX0KKworCQlwcml2YXRlIHZvaWQgcmVmcmVzaExhbmd1YWdlKCkgeworCQkJY29sdW1u
TmFtZXNbMF0gPSBsYW5ndWFnZS5nZXRTdHJpbmcoIk1hbmFnZURvd25sb2FkVHJhY2tpbmdE
aWFsb2cudGFibGUubmFtZSIpOworCQkJY29sdW1uTmFtZXNbMV0gPSBsYW5ndWFnZS5nZXRT
dHJpbmcoIk1hbmFnZURvd25sb2FkVHJhY2tpbmdEaWFsb2cudGFibGUua2V5Iik7CisJCQlj
b2x1bW5OYW1lc1syXSA9IGxhbmd1YWdlLmdldFN0cmluZygiTWFuYWdlRG93bmxvYWRUcmFj
a2luZ0RpYWxvZy50YWJsZS5ib2FyZCIpOworCQkJY29sdW1uTmFtZXNbM10gPSBsYW5ndWFn
ZS5nZXRTdHJpbmcoIk1hbmFnZURvd25sb2FkVHJhY2tpbmdEaWFsb2cudGFibGUuc2l6ZSIp
OworCQkJY29sdW1uTmFtZXNbNF0gPSBsYW5ndWFnZS5nZXRTdHJpbmcoIk1hbmFnZURvd25s
b2FkVHJhY2tpbmdEaWFsb2cudGFibGUuZmluaXNoZWQiKTsKKwkJfQorCisJCXB1YmxpYyBi
b29sZWFuIGlzQ2VsbEVkaXRhYmxlKGludCByb3csIGludCBjb2wpIHsKKwkJCXJldHVybiBm
YWxzZTsKKwkJfQorCisJCXB1YmxpYyBTdHJpbmcgZ2V0Q29sdW1uTmFtZShpbnQgY29sdW1u
KSB7CisJCQlpZiggY29sdW1uID49IDAgJiYgY29sdW1uIDwgY29sdW1uTmFtZXMubGVuZ3Ro
ICkKKwkJCQlyZXR1cm4gY29sdW1uTmFtZXNbY29sdW1uXTsKKwkJCXJldHVybiBudWxsOwor
CQl9CisKKwkJcHVibGljIGludCBnZXRDb2x1bW5Db3VudCgpIHsKKwkJCXJldHVybiBjb2x1
bW5OYW1lcy5sZW5ndGg7CisJCX0KKworCQlwdWJsaWMgQ2xhc3M8Pz4gZ2V0Q29sdW1uQ2xh
c3MoaW50IGNvbHVtbikgeworCQkJaWYoIGNvbHVtbiA+PSAwICYmIGNvbHVtbiA8IGNvbHVt
bkNsYXNzZXMubGVuZ3RoICkKKwkJCQlyZXR1cm4gY29sdW1uQ2xhc3Nlc1tjb2x1bW5dOwor
CQkJcmV0dXJuIG51bGw7CisJCX0KKwl9CisJCisKKwlwcml2YXRlIGNsYXNzIFRyYWNrZWRE
b3dubG9hZFRhYmxlTWVtYmVyIGltcGxlbWVudHMgVGFibGVNZW1iZXIgeworCiAJCVRyYWNr
RG93bmxvYWRLZXlzIHRyYWNrRG93bmxvYWRLZXk7Ci0JCVN0cmluZyBjb21tZW50OwogCiAJ
CXB1YmxpYyBUcmFja2VkRG93bmxvYWRUYWJsZU1lbWJlcihmaW5hbCBUcmFja0Rvd25sb2Fk
S2V5cyB0cmFja0Rvd25sb2Fka2V5KXsKIAkJCXRoaXMudHJhY2tEb3dubG9hZEtleSA9IHRy
YWNrRG93bmxvYWRrZXk7CkBAIC0yODcsMTIgKzM0MCwxMiBAQA0KIAkJCQljYXNlIDI6CiAJ
CQkJCXJldHVybiB0cmFja0Rvd25sb2FkS2V5LmdldEJvYXJkTmFtZSgpOwogCQkJCWNhc2Ug
MzoKLQkJCQkJcmV0dXJuIHRyYWNrRG93bmxvYWRLZXkuZ2V0RmlsZVNpemUoKTsKKwkJCQkJ
cmV0dXJuIEZvcm1hdHRlclV0aWxzLmZvcm1hdFNpemUodHJhY2tEb3dubG9hZEtleS5nZXRG
aWxlU2l6ZSgpKTsKIAkJCQljYXNlIDQ6CiAJCQkJCWZpbmFsIGxvbmcgZGF0ZSA9IHRyYWNr
RG93bmxvYWRLZXkuZ2V0RG93bmxvYWRGaW5pc2hlZFRpbWUoKTsKIAkJCQkJcmV0dXJuIG5l
dyBTdHJpbmdCdWlsZGVyKCkKIAkJCQkJLmFwcGVuZChEYXRlRnVuLkZPUk1BVF9EQVRFX1ZJ
U0lCTEUucHJpbnQoZGF0ZSkpCi0JCQkJCS5hcHBlbmQoIiAtICIpCisJCQkJCS5hcHBlbmQo
IiAiKQogCQkJCQkuYXBwZW5kKERhdGVGdW4uRk9STUFUX1RJTUVfVklTSUJMRS5wcmludChk
YXRlKSkKIAkJCQkJLnRvU3RyaW5nKCk7CiAJCQkJZGVmYXVsdCA6CkBAIC0zMTEsNyArMzY0
LDcgQEANCiAJCX0KIAl9CiAKLQljbGFzcyBUYWJsZVBvcHVwTWVudU1vdXNlTGlzdGVuZXIg
aW1wbGVtZW50cyBNb3VzZUxpc3RlbmVyIHsKKwlwcml2YXRlIGNsYXNzIFRhYmxlUG9wdXBN
ZW51TW91c2VMaXN0ZW5lciBpbXBsZW1lbnRzIE1vdXNlTGlzdGVuZXIgewogCQlwdWJsaWMg
dm9pZCBtb3VzZVJlbGVhc2VkKGZpbmFsIE1vdXNlRXZlbnQgZXZlbnQpIHsKIAkJCW1heWJl
U2hvd1BvcHVwKGV2ZW50KTsKIAkJfQpAQCAtMzI1LDEwICszNzgsNTEgQEANCiAJCXByb3Rl
Y3RlZCB2b2lkIG1heWJlU2hvd1BvcHVwKGZpbmFsIE1vdXNlRXZlbnQgZSkgewogCQkJaWYo
IGUuaXNQb3B1cFRyaWdnZXIoKSApIHsKIAkJCQlpZiggdHJhY2tlZERvd25sb2Fkc1RhYmxl
LmdldFNlbGVjdGVkUm93Q291bnQoKSA+IDAgKSB7Ci0JCQkJCS8vIGRvbid0IHNob3cgbWVu
dSBpZiBub3RoaW5nIGlzIHNlbGVjdGVkCiAJCQkJCXRhYmxlUG9wdXBNZW51LnNob3codHJh
Y2tlZERvd25sb2Fkc1RhYmxlLCBlLmdldFgoKSwgZS5nZXRZKCkpOwogCQkJCX0KIAkJCX0K
IAkJfQogCX0KKwkKKwkKKwlwcml2YXRlIGNsYXNzIFRyYWNrZWREb3dubG9hZHNUYWJsZSBl
eHRlbmRzIFNvcnRlZFRhYmxlIHsKKwkJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJp
YWxWZXJzaW9uVUlEID0gMUw7CisJCQorCQlmaW5hbCBUYWJsZUNlbGxSZW5kZXJlciBzaXpl
Q29sdW1uUmVuZGVyZXI7CisKKwkJcHVibGljIFRyYWNrZWREb3dubG9hZHNUYWJsZShmaW5h
bCBUcmFja2VkRG93bmxvYWRzTW9kZWwgdHJhY2tEb3dubG9hZHNNb2RlbCkgeworCQkJc3Vw
ZXIodHJhY2tEb3dubG9hZHNNb2RlbCk7CisJCQl0aGlzLnNldEludGVyY2VsbFNwYWNpbmco
bmV3IERpbWVuc2lvbig1LCAxKSk7CisJCQkKKwkJCXNpemVDb2x1bW5SZW5kZXJlciA9IG5l
dyBTaXplQ29sdW1uVGFibGVDZWxsUmVuZGVyZXIoKTsKKwkJfQorCisJCXB1YmxpYyBTdHJp
bmcgZ2V0VG9vbFRpcFRleHQoZmluYWwgTW91c2VFdmVudCBtb3VzZUV2ZW50KSB7CisJCQlm
aW5hbCBqYXZhLmF3dC5Qb2ludCBwb2ludCA9IG1vdXNlRXZlbnQuZ2V0UG9pbnQoKTsKKwkJ
CWZpbmFsIGludCByb3dJbmRleCA9IHJvd0F0UG9pbnQocG9pbnQpOworCQkJZmluYWwgaW50
IGNvbEluZGV4ID0gY29sdW1uQXRQb2ludChwb2ludCk7CisJCQlmaW5hbCBpbnQgcmVhbENv
bHVtbkluZGV4ID0gY29udmVydENvbHVtbkluZGV4VG9Nb2RlbChjb2xJbmRleCk7CisJCQlm
aW5hbCBUYWJsZU1vZGVsIHRhYmxlTW9kZWwgPSBnZXRNb2RlbCgpOworCQkJcmV0dXJuIHRh
YmxlTW9kZWwuZ2V0VmFsdWVBdChyb3dJbmRleCwgcmVhbENvbHVtbkluZGV4KS50b1N0cmlu
ZygpOworCQl9CisJCQorCQlwdWJsaWMgVGFibGVDZWxsUmVuZGVyZXIgZ2V0Q2VsbFJlbmRl
cmVyKGZpbmFsIGludCByb3csIGZpbmFsIGludCBjb2x1bW4pIHsKKwkJCWlmKGNvbHVtbiA9
PSAzKSB7CisJCQkJcmV0dXJuIHNpemVDb2x1bW5SZW5kZXJlcjsKKwkJCX0KKwkJCXJldHVy
biBzdXBlci5nZXRDZWxsUmVuZGVyZXIocm93LCBjb2x1bW4pOworCQl9CisJCQorCQlwcml2
YXRlIGNsYXNzIFNpemVDb2x1bW5UYWJsZUNlbGxSZW5kZXJlciBleHRlbmRzIEpMYWJlbCBp
bXBsZW1lbnRzIFRhYmxlQ2VsbFJlbmRlcmVyIHsKKwkJCXByaXZhdGUgc3RhdGljIGZpbmFs
IGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDFMOworCisJCQlwdWJsaWMgQ29tcG9uZW50IGdl
dFRhYmxlQ2VsbFJlbmRlcmVyQ29tcG9uZW50KGZpbmFsIEpUYWJsZSB0YWJsZSwKKwkJCQkJ
ZmluYWwgT2JqZWN0IHZhbHVlLCBmaW5hbCBib29sZWFuIGlzU2VsZWN0ZWQsIGZpbmFsIGJv
b2xlYW4gaGFzRm9jdXMsCisJCQkJCWZpbmFsIGludCByb3csIGZpbmFsIGludCBjb2x1bW4p
IHsKKwkJCQl0aGlzLnNldFRleHQodmFsdWUudG9TdHJpbmcoKSk7CisJCQkJdGhpcy5zZXRI
b3Jpem9udGFsQWxpZ25tZW50KFN3aW5nQ29uc3RhbnRzLlJJR0hUKTsKKwkJCQlyZXR1cm4g
dGhpczsKKwkJCX0KKwkJfQorCX0KIH0KSW5kZXg6IHNvdXJjZS9mcm9zdC9ndWkvbW9kZWwv
QWRkTmV3RG93bmxvYWRzVGFibGVNb2RlbC5qYXZhDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gc291
cmNlL2Zyb3N0L2d1aS9tb2RlbC9BZGROZXdEb3dubG9hZHNUYWJsZU1vZGVsLmphdmEJKHJl
dmlzaW9uIDMxOTYpDQorKysgc291cmNlL2Zyb3N0L2d1aS9tb2RlbC9BZGROZXdEb3dubG9h
ZHNUYWJsZU1vZGVsLmphdmEJKHdvcmtpbmcgY29weSkNCkBAIC0xLDcyICswLDAgQEANCi0v
KgotICBBZGROZXdEb3dubG9hZHNUYWJsZU1vZGVsLmphdmEgLyBGcm9zdAotICBDb3B5cmln
aHQgKEMpIDIwMTAgIEZyb3N0IFByb2plY3QgPGp0Y2Zyb3N0LnNvdXJjZWZvcmdlLm5ldD4K
LQotICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCi0gIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCi0gIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCi0gIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gIFRoaXMgcHJvZ3Jh
bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgotICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VCi0gIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KLQotICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICBhbG9uZyB3aXRoIHRoaXMgcHJv
Z3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICBGb3VuZGF0aW9u
LCBJbmMuLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KLSovCi1w
YWNrYWdlIGZyb3N0Lmd1aS5tb2RlbDsKLQotaW1wb3J0IGZyb3N0LnV0aWwuZ3VpLnRyYW5z
bGF0aW9uLkxhbmd1YWdlOwotCi1wdWJsaWMgY2xhc3MgQWRkTmV3RG93bmxvYWRzVGFibGVN
b2RlbCBleHRlbmRzIFNvcnRlZFRhYmxlTW9kZWx7Ci0JcHJpdmF0ZSBzdGF0aWMgZmluYWwg
bG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMUw7Ci0KLQlwcml2YXRlIExhbmd1YWdlIGxhbmd1
YWdlID0gbnVsbDsKLQotCXByb3RlY3RlZCBmaW5hbCBzdGF0aWMgU3RyaW5nIGNvbHVtbk5h
bWVzW10gPSBuZXcgU3RyaW5nWzVdOwotCi0JcHJvdGVjdGVkIGZpbmFsIHN0YXRpYyBDbGFz
czw/PiBjb2x1bW5DbGFzc2VzW10gPSAgewotCQlTdHJpbmcuY2xhc3MsCi0JCVN0cmluZy5j
bGFzcywKLQkJU3RyaW5nLmNsYXNzLAotCQlTdHJpbmcuY2xhc3MsCi0JCVN0cmluZy5jbGFz
cwotCX07Ci0KLQlwdWJsaWMgQWRkTmV3RG93bmxvYWRzVGFibGVNb2RlbCgpIHsKLQkJc3Vw
ZXIoKTsKLQkJbGFuZ3VhZ2UgPSBMYW5ndWFnZS5nZXRJbnN0YW5jZSgpOwotCQlyZWZyZXNo
TGFuZ3VhZ2UoKTsKLQl9Ci0KLQlwcml2YXRlIHZvaWQgcmVmcmVzaExhbmd1YWdlKCkgewot
CQljb2x1bW5OYW1lc1swXSA9IGxhbmd1YWdlLmdldFN0cmluZygiQWRkTmV3RG93bmxvYWRz
RGlhbG9nLnRhYmxlLm5hbWUiKTsKLQkJY29sdW1uTmFtZXNbMV0gPSBsYW5ndWFnZS5nZXRT
dHJpbmcoIkFkZE5ld0Rvd25sb2Fkc0RpYWxvZy50YWJsZS5rZXkiKTsKLQkJY29sdW1uTmFt
ZXNbMl0gPSBsYW5ndWFnZS5nZXRTdHJpbmcoIkFkZE5ld0Rvd25sb2Fkc0RpYWxvZy50YWJs
ZS5wcmlvcml0eSIpOwotCQljb2x1bW5OYW1lc1szXSA9IGxhbmd1YWdlLmdldFN0cmluZygi
QWRkTmV3RG93bmxvYWRzRGlhbG9nLnRhYmxlLmRvd25sb2FkRGlyIik7Ci0JCWNvbHVtbk5h
bWVzWzRdID0gbGFuZ3VhZ2UuZ2V0U3RyaW5nKCJBZGROZXdEb3dubG9hZHNEaWFsb2cudGFi
bGUuY29tbWVudCIpOwotCX0KLQotCXB1YmxpYyBib29sZWFuIGlzQ2VsbEVkaXRhYmxlKGlu
dCByb3csIGludCBjb2wpIHsKLQkJcmV0dXJuIGZhbHNlOwotCX0KLQotCXB1YmxpYyBTdHJp
bmcgZ2V0Q29sdW1uTmFtZShpbnQgY29sdW1uKSB7Ci0JCWlmKCBjb2x1bW4gPj0gMCAmJiBj
b2x1bW4gPCBjb2x1bW5OYW1lcy5sZW5ndGggKQotCQkJcmV0dXJuIGNvbHVtbk5hbWVzW2Nv
bHVtbl07Ci0JCXJldHVybiBudWxsOwotCX0KLQotCXB1YmxpYyBpbnQgZ2V0Q29sdW1uQ291
bnQoKSB7Ci0JCXJldHVybiBjb2x1bW5OYW1lcy5sZW5ndGg7Ci0JfQotCi0JcHVibGljIENs
YXNzPD8+IGdldENvbHVtbkNsYXNzKGludCBjb2x1bW4pIHsKLQkJaWYoIGNvbHVtbiA+PSAw
ICYmIGNvbHVtbiA8IGNvbHVtbkNsYXNzZXMubGVuZ3RoICkKLQkJCXJldHVybiBjb2x1bW5D
bGFzc2VzW2NvbHVtbl07Ci0JCXJldHVybiBudWxsOwotCX0KLQotfQpJbmRleDogc291cmNl
L2Zyb3N0L2d1aS9tb2RlbC9UcmFja2VkRG93bmxvYWRzTW9kZWwuamF2YQ0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIHNvdXJjZS9mcm9zdC9ndWkvbW9kZWwvVHJhY2tlZERvd25sb2Fkc01vZGVs
LmphdmEJKHJldmlzaW9uIDMxOTYpDQorKysgc291cmNlL2Zyb3N0L2d1aS9tb2RlbC9UcmFj
a2VkRG93bmxvYWRzTW9kZWwuamF2YQkod29ya2luZyBjb3B5KQ0KQEAgLTEsNzEgKzAsMCBA
QA0KLS8qCi0gIFRyYWNrZWREb3dubG9hZHNNb2RlbC5qYXZhIC8gRnJvc3QKLSAgQ29weXJp
Z2h0IChDKSAyMDEwICBGcm9zdCBQcm9qZWN0IDxqdGNmcm9zdC5zb3VyY2Vmb3JnZS5uZXQ+
Ci0KLSAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgotICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwotICBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgotICB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICBUaGlzIHByb2dy
YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
LSAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKLSAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQotICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCi0KLSAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgYWxvbmcgd2l0aCB0aGlzIHBy
b2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAgRm91bmRhdGlv
biwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCi0qLwot
cGFja2FnZSBmcm9zdC5ndWkubW9kZWw7Ci0KLWltcG9ydCBmcm9zdC51dGlsLmd1aS50cmFu
c2xhdGlvbi5MYW5ndWFnZTsKLQotcHVibGljIGNsYXNzIFRyYWNrZWREb3dubG9hZHNNb2Rl
bCBleHRlbmRzIFNvcnRlZFRhYmxlTW9kZWwgewotCXByaXZhdGUgc3RhdGljIGZpbmFsIGxv
bmcgc2VyaWFsVmVyc2lvblVJRCA9IDFMOwotCi0JcHJpdmF0ZSBMYW5ndWFnZSBsYW5ndWFn
ZSA9IG51bGw7Ci0KLQlwcm90ZWN0ZWQgZmluYWwgc3RhdGljIFN0cmluZyBjb2x1bW5OYW1l
c1tdID0gbmV3IFN0cmluZ1s1XTsKLQotCXByb3RlY3RlZCBmaW5hbCBzdGF0aWMgQ2xhc3M8
Pz4gY29sdW1uQ2xhc3Nlc1tdID0gIHsKLQkJU3RyaW5nLmNsYXNzLAotCQlTdHJpbmcuY2xh
c3MsCi0JCVN0cmluZy5jbGFzcywKLQkJU3RyaW5nLmNsYXNzLAotCQlTdHJpbmcuY2xhc3MK
LQl9OwotCi0JcHVibGljIFRyYWNrZWREb3dubG9hZHNNb2RlbCgpIHsKLQkJc3VwZXIoKTsK
LQkJbGFuZ3VhZ2UgPSBMYW5ndWFnZS5nZXRJbnN0YW5jZSgpOwotCQlyZWZyZXNoTGFuZ3Vh
Z2UoKTsKLQl9Ci0KLQlwcml2YXRlIHZvaWQgcmVmcmVzaExhbmd1YWdlKCkgewotCQljb2x1
bW5OYW1lc1swXSA9IGxhbmd1YWdlLmdldFN0cmluZygiTWFuYWdlRG93bmxvYWRUcmFja2lu
Z0RpYWxvZy50YWJsZS5uYW1lIik7Ci0JCWNvbHVtbk5hbWVzWzFdID0gbGFuZ3VhZ2UuZ2V0
U3RyaW5nKCJNYW5hZ2VEb3dubG9hZFRyYWNraW5nRGlhbG9nLnRhYmxlLmtleSIpOwotCQlj
b2x1bW5OYW1lc1syXSA9IGxhbmd1YWdlLmdldFN0cmluZygiTWFuYWdlRG93bmxvYWRUcmFj
a2luZ0RpYWxvZy50YWJsZS5ib2FyZCIpOwotCQljb2x1bW5OYW1lc1szXSA9IGxhbmd1YWdl
LmdldFN0cmluZygiTWFuYWdlRG93bmxvYWRUcmFja2luZ0RpYWxvZy50YWJsZS5zaXplIik7
Ci0JCWNvbHVtbk5hbWVzWzRdID0gbGFuZ3VhZ2UuZ2V0U3RyaW5nKCJNYW5hZ2VEb3dubG9h
ZFRyYWNraW5nRGlhbG9nLnRhYmxlLmZpbmlzaGVkIik7Ci0JfQotCi0JcHVibGljIGJvb2xl
YW4gaXNDZWxsRWRpdGFibGUoaW50IHJvdywgaW50IGNvbCkgewotCQlyZXR1cm4gZmFsc2U7
Ci0JfQotCi0JcHVibGljIFN0cmluZyBnZXRDb2x1bW5OYW1lKGludCBjb2x1bW4pIHsKLQkJ
aWYoIGNvbHVtbiA+PSAwICYmIGNvbHVtbiA8IGNvbHVtbk5hbWVzLmxlbmd0aCApCi0JCQly
ZXR1cm4gY29sdW1uTmFtZXNbY29sdW1uXTsKLQkJcmV0dXJuIG51bGw7Ci0JfQotCi0JcHVi
bGljIGludCBnZXRDb2x1bW5Db3VudCgpIHsKLQkJcmV0dXJuIGNvbHVtbk5hbWVzLmxlbmd0
aDsKLQl9Ci0KLQlwdWJsaWMgQ2xhc3M8Pz4gZ2V0Q29sdW1uQ2xhc3MoaW50IGNvbHVtbikg
ewotCQlpZiggY29sdW1uID49IDAgJiYgY29sdW1uIDwgY29sdW1uQ2xhc3Nlcy5sZW5ndGgg
KQotCQkJcmV0dXJuIGNvbHVtbkNsYXNzZXNbY29sdW1uXTsKLQkJcmV0dXJuIG51bGw7Ci0J
fQotfQpJbmRleDogc291cmNlL2kxOG4vbGFuZ3Jlcy5wcm9wZXJ0aWVzDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQotLS0gc291cmNlL2kxOG4vbGFuZ3Jlcy5wcm9wZXJ0aWVzCShyZXZpc2lvbiAzMTk2
KQ0KKysrIHNvdXJjZS9pMThuL2xhbmdyZXMucHJvcGVydGllcwkod29ya2luZyBjb3B5KQ0K
QEAgLTE1LDEwICsxNSwxNiBAQA0KIEFkZE5ld0Rvd25sb2Fkc0RpYWxvZy50YWJsZS5rZXk9
S2V5CiBBZGROZXdEb3dubG9hZHNEaWFsb2cudGFibGUucHJpb3JpdHk9UHJpb3JpdHkKIEFk
ZE5ld0Rvd25sb2Fkc0RpYWxvZy50YWJsZS5kb3dubG9hZERpcj1Eb3dubG9hZCBEaXJlY3Rv
cnkKLUFkZE5ld0Rvd25sb2Fkc0RpYWxvZy50YWJsZS5jb21tZW50PUNvbW1lbnQKK0FkZE5l
d0Rvd25sb2Fkc0RpYWxvZy50YWJsZS5kb3dubG9hZGVkPURvd25sb2FkZWQKK0FkZE5ld0Rv
d25sb2Fkc0RpYWxvZy50YWJsZVRvb2xsdGlwLmRvd25sb2FkZWQ9SW5kaWNhdGVzIGlmIHRo
ZSBmaWxlIChzYW1lIGtleSkgaGFzIGJlZW4gZG93bmxvYWRlZCBwcmV2aW91c2x5CitBZGRO
ZXdEb3dubG9hZHNEaWFsb2cudGFibGUuZXhpc3RzPUV4aXN0cworQWRkTmV3RG93bmxvYWRz
RGlhbG9nLnRhYmxlVG9vbGx0aXAuZXhpc3RzPUluZGljYXRlcyBpZiBhIGZpbGUgd2l0aCB0
aGUgc2FtZSBuYW1lIGFscmVhZHkgZXhpc3RzIGluIHRoZSB0YXJnZXQgZG93bmxvYWQgZGly
ZWN0b3J5CiBBZGROZXdEb3dubG9hZHNEaWFsb2cudGFibGUuYWxyZWFkeURvd25sb2FkZWQ9
RmlsZSBkb3dubG9hZGVkIHByZXZpb3VzbHkKIEFkZE5ld0Rvd25sb2Fkc0RpYWxvZy50YWJs
ZS5hbHJlYWR5RG93bmxvYWRlZE5hbWU9RmlsZSB3aXRoIHNhbWUgbmFtZSBkb3dubG9hZGVk
IHByZXZpb3VzbHkKIEFkZE5ld0Rvd25sb2Fkc0RpYWxvZy50YWJsZS5hbHJlYWR5RXhpc3Rz
PUZpbGUgYWxyZWFkeSBleGlzdHMgaW4gZG93bmxvYWQgZGlyZWN0b3J5CitBZGROZXdEb3du
bG9hZHNEaWFsb2cudGFibGUuc2l6ZVRvb2x0aXA9RmlsZXNpemUKK0FkZE5ld0Rvd25sb2Fk
c0RpYWxvZy50YWJsZS5sYXN0TW9kaWZpZWRUb29sdGlwPUxhc3QgbW9kaWZpZWQKK0FkZE5l
d0Rvd25sb2Fkc0RpYWxvZy50YWJsZS5maWxlU2l6ZVRvb2x0aXA9RmlsZSBzaXplCiBBZGRO
ZXdEb3dubG9hZHNEaWFsb2cuYnV0dG9uLnJlbW92ZUFscmVhZHlEb3dubG9hZGVkQnV0dG9u
PVJlbW92ZSBhbHJlYWR5IGRvd25sb2FkZWQKIEFkZE5ld0Rvd25sb2Fkc0RpYWxvZy5idXR0
b24ucmVtb3ZlQWxyZWFkeURvd25sb2FkZWROYW1lQnV0dG9uPVJlbW92ZSBhbHJlYWR5IGRv
d25sb2FkZWQgYnkgbmFtZQogQWRkTmV3RG93bmxvYWRzRGlhbG9nLmJ1dHRvbi5yZW1vdmVB
bHJlYWR5RXhpc3RzQnV0dG9uPVJlbW92ZSBhbHJlYWR5IGV4aXN0cwo=
--------------080902060605060009070307
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
--------------080902060605060009070307
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Jtcfrost-devl mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jtcfrost-devl

--------------080902060605060009070307--