Re: Download Tracking

artur <[email protected]> Mon, 29 Mar 2010 11:16:49 +0200
Newsgroups gmane.network.freenet.frost.devel
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--------------090109000703040209010008
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Ok, I just switched my wc and merged my changes to the 
integrate-freetalk branche.
I have just run some small tests, but everything seemed to work fine.
So here is the patch against the freetalk branch

Sadly the patch is missing the langres.properties changes (because it 
think it is binary?!?),.. so I attach it as well...

Am 29.03.2010 07:53, schrieb artur:
> Hi,
>
> I will create a patch against the other branche. But I am away for the
> next 2 days, so it will take some time.
>
>
> One other question: Is Freenet 0.5 still a target system for Frost? I
> noticed there is still code to support 0.5, but there have also been
> commits to remove some of the code..
>
>
>
> Am 29.03.2010 07:31, schrieb
> bbackde-gM/[email protected]:
>> Hi,
>>
>> great to see some activity here :)
>>
>> Can you please base your patch on branch 'integrate-freetalk' and send
>> it to me again?
>> I encounter problems applying it. This branch is the one with the
>> latest updates and will
>> actually become the trunk sometimes.
>>
>> Thanks!
>>
>> On Mon, Mar 29, 2010 at 03:27, Kenneth Freeman<[email protected]>   wrote:
>>> Thanks for that patch, i integrated it into my version of Frost. I am
>>> going test it a few days and then reply if there are any issues.
>>>
>>> --
>>> With Regards
>>> Kenneth Freeman
>>>
>>>
>>> On Sun, 28 Mar 2010 13:59:44 +0300, artur
>>> <[email protected]>   wrote:
>>>
>>>> I have started to familiarize myself with the frost source code. As my
>>>> first work I have implemented the ability to track which files have
>>>> already been downloaded, so you do not download them a second time.
>>>> By default this feature is off, you can activate it in the properties
>>>> menu.
>>>> When activated download keys are stored in a db, and each new download
>>>> is compared to the files in the db. If there is a match the user will be
>>>> warned and asked if he wants to continue the download.
>>>>
>>>> So I would like if someone can review my patch
>>>>
>>>> artur
>>>
>>>
>>> ------------------------------------------------------------------------------
>>> 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
>>> _______________________________________________
>>> Jtcfrost-devl mailing list
>>> [email protected]
>>> https://lists.sourceforge.net/lists/listinfo/jtcfrost-devl
>>>
>>
>>
>>
>
>
>
> ------------------------------------------------------------------------------
> 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


--------------090109000703040209010008
Content-Type: text/plain;
 name="TrackDownloads-freetalk.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="TrackDownloads-freetalk.patch"

SW5kZXg6IHNvdXJjZS9mcm9zdC9Db3JlLmphdmENCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBzb3Vy
Y2UvZnJvc3QvQ29yZS5qYXZhCShyZXZpc2lvbiAzMTg1KQ0KKysrIHNvdXJjZS9mcm9zdC9D
b3JlLmphdmEJKHdvcmtpbmcgY29weSkNCkBAIC00MDcsNiArNDA3LDcgQEANCiAgICAgICAg
IEFyY2hpdmVNZXNzYWdlU3RvcmFnZS5pbnN0KCkuaW5pdFN0b3JhZ2UoKTsKICAgICAgICAg
SWRlbnRpdGllc1N0b3JhZ2UuaW5zdCgpLmluaXRTdG9yYWdlKCk7CiAgICAgICAgIEZpbGVM
aXN0U3RvcmFnZS5pbnN0KCkuaW5pdFN0b3JhZ2UoKTsKKyAgICAgICAgVHJhY2tEb3dubG9h
ZEtleXNTdG9yYWdlLmluc3QoKS5pbml0U3RvcmFnZSgpOwogCiAgICAgICAgIHNwbGFzaHNj
cmVlbi5zZXRUZXh0KGxhbmd1YWdlLmdldFN0cmluZygiU3BsYXNoc2NyZWVuLm1lc3NhZ2Uu
MiIpKTsKICAgICAgICAgc3BsYXNoc2NyZWVuLnNldFByb2dyZXNzKDQwKTsKQEAgLTU0OSw2
ICs1NTAsNyBAQA0KICAgICAgICAgc2F2ZXIuYWRkRXhpdFNhdmFibGUoQXJjaGl2ZU1lc3Nh
Z2VTdG9yYWdlLmluc3QoKSk7CiAgICAgICAgIHNhdmVyLmFkZEV4aXRTYXZhYmxlKElkZW50
aXRpZXNTdG9yYWdlLmluc3QoKSk7CiAgICAgICAgIHNhdmVyLmFkZEV4aXRTYXZhYmxlKEZp
bGVMaXN0U3RvcmFnZS5pbnN0KCkpOworICAgICAgICBzYXZlci5hZGRFeGl0U2F2YWJsZShU
cmFja0Rvd25sb2FkS2V5c1N0b3JhZ2UuaW5zdCgpKTsKIAogICAgICAgICAvLyBpbnZva2Ug
dGhlIG1haW5mcmFtZSB0aWNrZXIgKGJvYXJkIHVwZGF0ZXMsIGNsb2NrLCAuLi4pCiAgICAg
ICAgIG1haW5mcmFtZS5zdGFydFRpY2tlclRocmVhZCgpOwpJbmRleDogc291cmNlL2Zyb3N0
L2ZpbGVUcmFuc2Zlci9kb3dubG9hZC9Eb3dubG9hZE1hbmFnZXIuamF2YQ0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIHNvdXJjZS9mcm9zdC9maWxlVHJhbnNmZXIvZG93bmxvYWQvRG93bmxvYWRN
YW5hZ2VyLmphdmEJKHJldmlzaW9uIDMxODUpDQorKysgc291cmNlL2Zyb3N0L2ZpbGVUcmFu
c2Zlci9kb3dubG9hZC9Eb3dubG9hZE1hbmFnZXIuamF2YQkod29ya2luZyBjb3B5KQ0KQEAg
LTI2LDYgKzI2LDcgQEANCiBpbXBvcnQgZnJvc3QuZmlsZVRyYW5zZmVyLio7CiBpbXBvcnQg
ZnJvc3QubWVzc2FnaW5nLmZyb3N0Lio7CiBpbXBvcnQgZnJvc3Quc3RvcmFnZS4qOworaW1w
b3J0IGZyb3N0LnN0b3JhZ2UucGVyc3QuKjsKIGltcG9ydCBmcm9zdC5zdG9yYWdlLnBlcnN0
LmZpbGVsaXN0Lio7CiBpbXBvcnQgZnJvc3QudXRpbC4qOwogaW1wb3J0IGZyb3N0LnV0aWwu
bW9kZWwuKjsKQEAgLTQzNSw2ICs0MzYsMTUgQEANCiAgICAgICAgICAgICAgICAgICAgICAg
ICBkb3dubG9hZEl0ZW0uZ2V0RmlsZUxpc3RGaWxlT2JqZWN0KCkuZ2V0U2hhKCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSApOwogICAg
ICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBtYXliZSB0cmFjayBk
b3dubG9hZAorICAgICAgICAgICAgaWYoIENvcmUuZnJvc3RTZXR0aW5ncy5nZXRCb29sVmFs
dWUoU2V0dGluZ3NDbGFzcy5UUkFDS19ET1dOTE9BRFNfRU5BQkxFRCkgJiYgIWRvd25sb2Fk
SXRlbS5pc1RyYWNrZWQoKSApIHsKKyAgICAgICAgICAgICAgICBUcmFja0Rvd25sb2FkS2V5
c1N0b3JhZ2UgdHJhY2tEb3dubG9hZEtleXNTdG9yYWdlID0gVHJhY2tEb3dubG9hZEtleXNT
dG9yYWdlLmluc3QoKTsKKyAgICAgICAgICAgICAgICB0cmFja0Rvd25sb2FkS2V5c1N0b3Jh
Z2Uuc3RvcmVJdGVtKCAKKyAgICAgICAgICAgICAgICAgICAgbmV3IFRyYWNrRG93bmxvYWRL
ZXlzKCBkb3dubG9hZEl0ZW0uZ2V0S2V5KCksIGRvd25sb2FkSXRlbS5nZXRGaWxlbmFtZSgp
LCAiIiwgZG93bmxvYWRJdGVtLmdldEZpbGVTaXplKCksIGRvd25sb2FkSXRlbS5nZXREb3du
bG9hZEZpbmlzaGVkTWlsbGlzKCkgKQorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAg
ICAgICAgZG93bmxvYWRJdGVtLnNldFRyYWNrZWQodHJ1ZSk7CisgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIC8vIG1heWJlIGxvZyBzdWNjZXNzZnVsIGRvd25sb2FkIHRvIGZpbGUg
bG9jYWxkYXRhL2Rvd25sb2Fkcy50eHQKICAgICAgICAgICAgIGlmKCBDb3JlLmZyb3N0U2V0
dGluZ3MuZ2V0Qm9vbFZhbHVlKFNldHRpbmdzQ2xhc3MuTE9HX0RPV05MT0FEU19FTkFCTEVE
KSAmJiAhZG93bmxvYWRJdGVtLmlzTG9nZ2VkVG9GaWxlKCkgKSB7CkluZGV4OiBzb3VyY2Uv
ZnJvc3QvZmlsZVRyYW5zZmVyL2Rvd25sb2FkL0Rvd25sb2FkTW9kZWwuamF2YQ0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIHNvdXJjZS9mcm9zdC9maWxlVHJhbnNmZXIvZG93bmxvYWQvRG93bmxv
YWRNb2RlbC5qYXZhCShyZXZpc2lvbiAzMTg1KQ0KKysrIHNvdXJjZS9mcm9zdC9maWxlVHJh
bnNmZXIvZG93bmxvYWQvRG93bmxvYWRNb2RlbC5qYXZhCSh3b3JraW5nIGNvcHkpDQpAQCAt
MjAsOSArMjAsMTQgQEANCiBpbXBvcnQgamF2YS51dGlsLio7CiBpbXBvcnQgamF2YS51dGls
LmxvZ2dpbmcuKjsKIAoraW1wb3J0IGphdmF4LnN3aW5nLkpPcHRpb25QYW5lOworCitpbXBv
cnQgZnJvc3QuQ29yZTsKK2ltcG9ydCBmcm9zdC5TZXR0aW5nc0NsYXNzOwogaW1wb3J0IGZy
b3N0LmZpbGVUcmFuc2Zlci4qOwogaW1wb3J0IGZyb3N0LnN0b3JhZ2UuKjsKIGltcG9ydCBm
cm9zdC5zdG9yYWdlLnBlcnN0Lio7CitpbXBvcnQgZnJvc3QudXRpbC5ndWkudHJhbnNsYXRp
b24uTGFuZ3VhZ2U7CiBpbXBvcnQgZnJvc3QudXRpbC5tb2RlbC4qOwogCiAvKioKQEAgLTQ2
LDggKzUxLDI5IEBADQogCXB1YmxpYyBzeW5jaHJvbml6ZWQgYm9vbGVhbiBhZGREb3dubG9h
ZEl0ZW0oZmluYWwgRnJvc3REb3dubG9hZEl0ZW0gaXRlbVRvQWRkKSB7CiAKICAgICAgICAg
ZmluYWwgRnJvc3RGaWxlTGlzdEZpbGVPYmplY3QgZmxmVG9BZGQgPSBpdGVtVG9BZGQuZ2V0
RmlsZUxpc3RGaWxlT2JqZWN0KCk7IC8vIG1heWJlIG51bGwgb2YgbWFudWFsbHkgYWRkZWQK
LQotCQlmb3IgKGludCB4ID0gMDsgeCA8IGdldEl0ZW1Db3VudCgpOyB4KyspIHsKKyAgICAg
ICAgCisgICAgICAgIC8vIElmIGRvd25sb2FkIHRyYWNraW5nIGlzIGVuYWJsZWQsIGNoZWNr
IGlmIGZpbGUgaGFzIG5vdCBiZWVuIGFscmVhZHkgZG93bmxvYWRlZAorICAgICAgICBpZigg
Q29yZS5mcm9zdFNldHRpbmdzLmdldEJvb2xWYWx1ZShTZXR0aW5nc0NsYXNzLlRSQUNLX0RP
V05MT0FEU19FTkFCTEVEKSApIHsKKyAgICAgICAgCQorICAgICAgICAJLy8gT25seSBjaGVj
ayBpZiB0aGUgZmlsZSBpcyBub3QgbGluZ2VyaW5nIGFyb3VuZCBpbiBmaW5pc2hlZCBzdGF0
ZS4uLgorICAgICAgICAJaWYoICEgaXRlbVRvQWRkLmlzVHJhY2tlZCgpICl7CisJICAgICAg
ICAgICAgVHJhY2tEb3dubG9hZEtleXNTdG9yYWdlIHRyYWNrRG93bmxvYWRLZXlzU3RvcmFn
ZSA9IFRyYWNrRG93bmxvYWRLZXlzU3RvcmFnZS5pbnN0KCk7CisJICAgICAgICAgICAgaWYo
IHRyYWNrRG93bmxvYWRLZXlzU3RvcmFnZS5zZWFyY2hJdGVtKCBpdGVtVG9BZGQuZ2V0S2V5
KCkgKSApIHsKKwkgICAgICAgICAgICAJTGFuZ3VhZ2UgbGFuZ3VhZ2UgPSBMYW5ndWFnZS5n
ZXRJbnN0YW5jZSgpOworCSAgICAgICAgICAgIAkKKwkgICAgICAgICAgICAJLy8gQXNrIGlm
IHRvIGRvd25sb2FkIGFnYWluCisJICAgICAgICAgICAgCWlmKCBKT3B0aW9uUGFuZS5zaG93
Q29uZmlybURpYWxvZygKKwkgICAgICAgICAgICAgICAgICAgICAgICBudWxsLAorCSAgICAg
ICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlLmZvcm1hdE1lc3NhZ2UoIkRvd25sb2FkUGFu
ZS5hbHJlYWR5VHJhY2tlZERpYWxvZy5ib2R5IiwgaXRlbVRvQWRkLmdldEtleSgpKSwKKwkg
ICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZS5nZXRTdHJpbmcoIkRvd25sb2FkUGFu
ZS5hbHJlYWR5VHJhY2tlZERpYWxvZy50aXRsZSIpLAorCSAgICAgICAgICAgICAgICAgICAg
ICAgIEpPcHRpb25QYW5lLllFU19OT19PUFRJT04pID09IDEgKSB7CisJICAgICAgICAgICAg
CQlyZXR1cm4gZmFsc2U7CisJICAgICAgICAgICAgCX0KKwkgICAgICAgICAgICB9CisgICAg
ICAgIAl9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZvciAoaW50IHggPSAwOyB4
IDwgZ2V0SXRlbUNvdW50KCk7IHgrKykgewogCQkJZmluYWwgRnJvc3REb3dubG9hZEl0ZW0g
aXRlbSA9IChGcm9zdERvd25sb2FkSXRlbSkgZ2V0SXRlbUF0KHgpOwogICAgICAgICAgICAg
ZmluYWwgRnJvc3RGaWxlTGlzdEZpbGVPYmplY3QgZmxmID0gaXRlbS5nZXRGaWxlTGlzdEZp
bGVPYmplY3QoKTsgLy8gbWF5YmUgbnVsbCBvZiBtYW51YWxseSBhZGRlZAogCkluZGV4OiBz
b3VyY2UvZnJvc3QvZmlsZVRyYW5zZmVyL2Rvd25sb2FkL0Rvd25sb2FkUGFuZWwuamF2YQ0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KLS0tIHNvdXJjZS9mcm9zdC9maWxlVHJhbnNmZXIvZG93bmxvYWQv
RG93bmxvYWRQYW5lbC5qYXZhCShyZXZpc2lvbiAzMTg1KQ0KKysrIHNvdXJjZS9mcm9zdC9m
aWxlVHJhbnNmZXIvZG93bmxvYWQvRG93bmxvYWRQYW5lbC5qYXZhCSh3b3JraW5nIGNvcHkp
DQpAQCAtMzcsNiArMzcsNyBAQA0KIGltcG9ydCBmcm9zdC5mY3AuKjsKIGltcG9ydCBmcm9z
dC5maWxlVHJhbnNmZXIuKjsKIGltcG9ydCBmcm9zdC5maWxlVHJhbnNmZXIuY29tbW9uLio7
CitpbXBvcnQgZnJvc3Quc3RvcmFnZS5wZXJzdC5UcmFja0Rvd25sb2FkS2V5c1N0b3JhZ2U7
CiBpbXBvcnQgZnJvc3QudXRpbC4qOwogaW1wb3J0IGZyb3N0LnV0aWwuZ3VpLio7CiBpbXBv
cnQgZnJvc3QudXRpbC5ndWkuc2VhcmNoLio7CkBAIC0zNjksNyArMzcwLDcgQEANCiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Ci0KKyAgICAgICAgICAg
ICAgICAKICAgICBwcml2YXRlIHZvaWQgYXBwbHlEb3dubG9hZERpclRvU2VsZWN0ZWREb3du
bG9hZHMoKSB7CiAgICAgICAgIGZpbmFsIE1vZGVsSXRlbVtdIHNlbGVjdGVkSXRlbXMgPSBt
b2RlbFRhYmxlLmdldFNlbGVjdGVkSXRlbXMoKTsKIApAQCAtMzg2LDcgKzM4Nyw3IEBADQog
ICAgIHByaXZhdGUgdm9pZCBkb3dubG9hZERpckFwcGx5QnV0dG9uX2FjdGlvblBlcmZvcm1l
ZChmaW5hbCBBY3Rpb25FdmVudCBlKSB7CiAgICAgICAgIGFwcGx5RG93bmxvYWREaXJUb1Nl
bGVjdGVkRG93bmxvYWRzKCk7CiAgICAgfQotCisgICAgCiAgICAgcHJpdmF0ZSB2b2lkIGRv
d25sb2FkUHJlZml4QXBwbHlCdXR0b25fYWN0aW9uUGVyZm9ybWVkKGZpbmFsIEFjdGlvbkV2
ZW50IGUpIHsKICAgICAgICAgYXBwbHlEb3dubG9hZFByZWZpeFRvU2VsZWN0ZWREb3dubG9h
ZHMoKTsKICAgICB9CkluZGV4OiBzb3VyY2UvZnJvc3QvZmlsZVRyYW5zZmVyL2Rvd25sb2Fk
L0Zyb3N0RG93bmxvYWRJdGVtLmphdmENCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBzb3VyY2UvZnJv
c3QvZmlsZVRyYW5zZmVyL2Rvd25sb2FkL0Zyb3N0RG93bmxvYWRJdGVtLmphdmEJKHJldmlz
aW9uIDMxODUpDQorKysgc291cmNlL2Zyb3N0L2ZpbGVUcmFuc2Zlci9kb3dubG9hZC9Gcm9z
dERvd25sb2FkSXRlbS5qYXZhCSh3b3JraW5nIGNvcHkpDQpAQCAtNTQsNiArNTQsNyBAQA0K
ICAgICBwcml2YXRlIFN0cmluZyBncUlkZW50aWZpZXIgPSBudWxsOwogCiAgICAgcHJpdmF0
ZSBib29sZWFuIGlzTG9nZ2VkVG9GaWxlID0gZmFsc2U7CisgICAgcHJpdmF0ZSBib29sZWFu
IGlzVHJhY2tlZCA9IGZhbHNlOwogICAgIHByaXZhdGUgYm9vbGVhbiBpc0NvbXBsZXRpb25Q
cm9nUnVuID0gZmFsc2U7CiAKICAgICBwcml2YXRlIGludCBydW50aW1lU2Vjb25kc1dpdGhv
dXRQcm9ncmVzcyA9IDA7CkBAIC0xNTAsNiArMTUxLDcgQEANCiAgICAgICAgICAgICBmaW5h
bCBsb25nIG5ld0xhc3REb3dubG9hZFN0b3BUaW1lLAogICAgICAgICAgICAgZmluYWwgU3Ry
aW5nIG5ld0dxSWQsCiAgICAgICAgICAgICBmaW5hbCBib29sZWFuIG5ld0lzTG9nZ2VkVG9G
aWxlLAorICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBuZXdJc1RyYWNrZWQsCiAgICAgICAg
ICAgICBmaW5hbCBib29sZWFuIG5ld0lzQ29tcGxldGlvblByb2dSdW4sCiAgICAgICAgICAg
ICBmaW5hbCBpbnQgbmV3UnVudGltZVNlY29uZHNXaXRob3V0UHJvZ3Jlc3MsCiAgICAgICAg
ICAgICBmaW5hbCBpbnQgbmV3T2xkRG9uZUJsb2NrcywKQEAgLTE3MCw2ICsxNzIsNyBAQA0K
ICAgICAgICAgbGFzdERvd25sb2FkU3RvcFRpbWUgPSBuZXdMYXN0RG93bmxvYWRTdG9wVGlt
ZTsKICAgICAgICAgZ3FJZGVudGlmaWVyID0gbmV3R3FJZDsKICAgICAgICAgaXNMb2dnZWRU
b0ZpbGU9IG5ld0lzTG9nZ2VkVG9GaWxlOworICAgICAgICBpc1RyYWNrZWQ9IG5ld0lzVHJh
Y2tlZDsKICAgICAgICAgaXNDb21wbGV0aW9uUHJvZ1J1bj0gbmV3SXNDb21wbGV0aW9uUHJv
Z1J1bjsKICAgICAgICAgcnVudGltZVNlY29uZHNXaXRob3V0UHJvZ3Jlc3MgPSBuZXdSdW50
aW1lU2Vjb25kc1dpdGhvdXRQcm9ncmVzczsKICAgICAgICAgb2xkRG9uZUJsb2NrcyA9IG5l
d09sZERvbmVCbG9ja3M7CkBAIC00OTgsMTAgKzUwMSwxOCBAQA0KICAgICBwdWJsaWMgYm9v
bGVhbiBpc0xvZ2dlZFRvRmlsZSgpIHsKICAgICAgICAgcmV0dXJuIGlzTG9nZ2VkVG9GaWxl
OwogICAgIH0KKyAgICAKKyAgICBwdWJsaWMgYm9vbGVhbiBpc1RyYWNrZWQoKSB7CisgICAg
ICAgIHJldHVybiBpc1RyYWNrZWQ7CisgICAgfQogCiAgICAgcHVibGljIHZvaWQgc2V0TG9n
Z2VkVG9GaWxlKGZpbmFsIGJvb2xlYW4gaXNMb2dnZWRUb0ZpbGUpIHsKICAgICAgICAgdGhp
cy5pc0xvZ2dlZFRvRmlsZSA9IGlzTG9nZ2VkVG9GaWxlOwogICAgIH0KKyAgICAKKyAgICBw
dWJsaWMgdm9pZCBzZXRUcmFja2VkKGZpbmFsIGJvb2xlYW4gaXNUcmFja2VkKSB7CisgICAg
ICAgIHRoaXMuaXNUcmFja2VkID0gaXNUcmFja2VkOworICAgIH0KIAogICAgIC8qKgogICAg
ICAqIEByZXR1cm4gIHRoZSBydW50aW1lIG9mIHRoaXMgZG93bmxvYWQgaXRlbSBpbiBzZWNv
bmRzCkluZGV4OiBzb3VyY2UvZnJvc3QvZ3VpL3ByZWZlcmVuY2VzL0Rvd25sb2FkUGFuZWwu
amF2YQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIHNvdXJjZS9mcm9zdC9ndWkvcHJlZmVyZW5jZXMv
RG93bmxvYWRQYW5lbC5qYXZhCShyZXZpc2lvbiAzMTg1KQ0KKysrIHNvdXJjZS9mcm9zdC9n
dWkvcHJlZmVyZW5jZXMvRG93bmxvYWRQYW5lbC5qYXZhCSh3b3JraW5nIGNvcHkpDQpAQCAt
NjAsNiArNjAsNyBAQA0KICAgICBwcml2YXRlIGZpbmFsIEpMYWJlbCB0aHJlYWRzVGV4dExh
YmVsID0gbmV3IEpMYWJlbCgpOwogCiAgICAgcHJpdmF0ZSBmaW5hbCBKQ2hlY2tCb3ggbG9n
RG93bmxvYWRzQ2hlY2tCb3ggPSBuZXcgSkNoZWNrQm94KCk7CisgICAgcHJpdmF0ZSBmaW5h
bCBKQ2hlY2tCb3ggdHJhY2tEb3dubG9hZHNDaGVja0JveCA9IG5ldyBKQ2hlY2tCb3goKTsK
IAogICAgIHByaXZhdGUgZmluYWwgSkxhYmVsIHdhaXRUaW1lTGFiZWwgPSBuZXcgSkxhYmVs
KCk7CiAgICAgcHJpdmF0ZSBmaW5hbCBKVGV4dEZpZWxkIHdhaXRUaW1lVGV4dEZpZWxkID0g
bmV3IEpUZXh0RmllbGQoNik7CkBAIC0xODQsNiArMTg1LDEzIEBADQogICAgICAgICBjb25z
dHJhaW50cy5ncmlkeCA9IDA7CiAgICAgICAgIGNvbnN0cmFpbnRzLmdyaWR3aWR0aCA9IDM7
CiAgICAgICAgIGNvbnN0cmFpbnRzLmluc2V0cyA9IGluc2V0czA1NTU7CisgICAgICAgIGNv
bnN0cmFpbnRzLmFuY2hvciA9IEdyaWRCYWdDb25zdHJhaW50cy5OT1JUSFdFU1Q7CisgICAg
ICAgIGFkZCh0cmFja0Rvd25sb2Fkc0NoZWNrQm94LCBjb25zdHJhaW50cyk7CisKKyAgICAg
ICAgY29uc3RyYWludHMuZ3JpZHkrKzsKKyAgICAgICAgY29uc3RyYWludHMuZ3JpZHggPSAw
OworICAgICAgICBjb25zdHJhaW50cy5ncmlkd2lkdGggPSAzOworICAgICAgICBjb25zdHJh
aW50cy5pbnNldHMgPSBpbnNldHMwNTU1OwogICAgICAgICBhZGQoZW5mb3JjZUZyb3N0UHJp
b3JpdHlGaWxlRG93bmxvYWQsIGNvbnN0cmFpbnRzKTsKIAogICAgICAgICBjb25zdHJhaW50
cy5ncmlkeSsrOwpAQCAtMjIwLDYgKzIyOCw3IEBADQogICAgICAgICBtYXhSZXRyaWVzVGV4
dEZpZWxkLnNldFRleHQoIiIgKyBzZXR0aW5ncy5nZXRJbnRWYWx1ZShTZXR0aW5nc0NsYXNz
LkRPV05MT0FEX01BWF9SRVRSSUVTKSk7CiAgICAgICAgIHdhaXRUaW1lVGV4dEZpZWxkLnNl
dFRleHQoIiIgKyBzZXR0aW5ncy5nZXRJbnRWYWx1ZShTZXR0aW5nc0NsYXNzLkRPV05MT0FE
X1dBSVRUSU1FKSk7CiAgICAgICAgIGxvZ0Rvd25sb2Fkc0NoZWNrQm94LnNldFNlbGVjdGVk
KHNldHRpbmdzLmdldEJvb2xWYWx1ZShTZXR0aW5nc0NsYXNzLkxPR19ET1dOTE9BRFNfRU5B
QkxFRCkpOworICAgICAgICB0cmFja0Rvd25sb2Fkc0NoZWNrQm94LnNldFNlbGVjdGVkKHNl
dHRpbmdzLmdldEJvb2xWYWx1ZShTZXR0aW5nc0NsYXNzLlRSQUNLX0RPV05MT0FEU19FTkFC
TEVEKSk7CiAgICAgICAgIHByaW9yaXR5VGV4dEZpZWxkLnNldFRleHQoc2V0dGluZ3MuZ2V0
VmFsdWUoU2V0dGluZ3NDbGFzcy5GQ1AyX0RFRkFVTFRfUFJJT19GSUxFX0RPV05MT0FEKSk7
CiAgICAgICAgIGVuZm9yY2VGcm9zdFByaW9yaXR5RmlsZURvd25sb2FkLnNldFNlbGVjdGVk
KHNldHRpbmdzLmdldEJvb2xWYWx1ZShTZXR0aW5nc0NsYXNzLkZDUDJfRU5GT1JDRV9GUk9T
VF9QUklPX0ZJTEVfRE9XTkxPQUQpKTsKICAgICAgICAgZXhlY1RleHRGaWVsZC5zZXRUZXh0
KHNldHRpbmdzLmdldFZhbHVlKFNldHRpbmdzQ2xhc3MuRVhFQ19PTl9ET1dOTE9BRCkpOwpA
QCAtMjM2LDYgKzI0NSw3IEBADQogICAgICAgICBtYXhSZXRyaWVzTGFiZWwuc2V0VGV4dChs
YW5ndWFnZS5nZXRTdHJpbmcoIk9wdGlvbnMuZG93bmxvYWRzLm1heGltdW1OdW1iZXJPZlJl
dHJpZXMiKSk7CiAKICAgICAgICAgbG9nRG93bmxvYWRzQ2hlY2tCb3guc2V0VGV4dChsYW5n
dWFnZS5nZXRTdHJpbmcoIk9wdGlvbnMuZG93bmxvYWRzLmxvZ0Rvd25sb2FkcyIpKTsKKyAg
ICAgICAgdHJhY2tEb3dubG9hZHNDaGVja0JveC5zZXRUZXh0KGxhbmd1YWdlLmdldFN0cmlu
ZygiT3B0aW9ucy5kb3dubG9hZHMudHJhY2tEb3dubG9hZHMiKSk7CiAKICAgICAgICAgZGly
ZWN0b3J5TGFiZWwuc2V0VGV4dChsYW5ndWFnZS5nZXRTdHJpbmcoIk9wdGlvbnMuZG93bmxv
YWRzLmRvd25sb2FkRGlyZWN0b3J5IikpOwogICAgICAgICBicm93c2VEaXJlY3RvcnlCdXR0
b24uc2V0VGV4dChsYW5ndWFnZS5nZXRTdHJpbmcoIkNvbW1vbi5icm93c2UiKSArICIuLi4i
KTsKQEAgLTI2Niw2ICsyNzYsNyBAQA0KICAgICAgICAgc2V0dGluZ3Muc2V0VmFsdWUoU2V0
dGluZ3NDbGFzcy5ET1dOTE9BRF9XQUlUVElNRSwgd2FpdFRpbWVUZXh0RmllbGQuZ2V0VGV4
dCgpKTsKIAogICAgICAgICBzZXR0aW5ncy5zZXRWYWx1ZShTZXR0aW5nc0NsYXNzLkxPR19E
T1dOTE9BRFNfRU5BQkxFRCwgbG9nRG93bmxvYWRzQ2hlY2tCb3guaXNTZWxlY3RlZCgpKTsK
KyAgICAgICAgc2V0dGluZ3Muc2V0VmFsdWUoU2V0dGluZ3NDbGFzcy5UUkFDS19ET1dOTE9B
RFNfRU5BQkxFRCwgdHJhY2tEb3dubG9hZHNDaGVja0JveC5pc1NlbGVjdGVkKCkpOwogICAg
ICAgICBzZXR0aW5ncy5zZXRWYWx1ZShTZXR0aW5nc0NsYXNzLkZDUDJfREVGQVVMVF9QUklP
X0ZJTEVfRE9XTkxPQUQsIHByaW9yaXR5VGV4dEZpZWxkLmdldFRleHQoKSk7CiAgICAgICAg
IHNldHRpbmdzLnNldFZhbHVlKFNldHRpbmdzQ2xhc3MuRkNQMl9FTkZPUkNFX0ZST1NUX1BS
SU9fRklMRV9ET1dOTE9BRCwgZW5mb3JjZUZyb3N0UHJpb3JpdHlGaWxlRG93bmxvYWQuaXNT
ZWxlY3RlZCgpKTsKIApJbmRleDogc291cmNlL2Zyb3N0L1NldHRpbmdzQ2xhc3MuamF2YQ0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KLS0tIHNvdXJjZS9mcm9zdC9TZXR0aW5nc0NsYXNzLmphdmEJKHJl
dmlzaW9uIDMxODUpDQorKysgc291cmNlL2Zyb3N0L1NldHRpbmdzQ2xhc3MuamF2YQkod29y
a2luZyBjb3B5KQ0KQEAgLTI3Nyw2ICsyNzcsOCBAQA0KIAogICAgIHB1YmxpYyBzdGF0aWMg
ZmluYWwgU3RyaW5nIExPR19ET1dOTE9BRFNfRU5BQkxFRCA9ICJsb2dEb3dubG9hZHMiOwog
ICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIExPR19VUExPQURTX0VOQUJMRUQgPSAi
bG9nVXBsb2FkcyI7CisgICAgCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFJB
Q0tfRE9XTkxPQURTX0VOQUJMRUQgPSAidHJhY2tEb3dubG9hZHMiOwogCiAgICAgcHVibGlj
IFNldHRpbmdzQ2xhc3MoKSB7CiAgICAgICAgIHNldHRpbmdzSGFzaCA9IG5ldyBIYXNodGFi
bGU8U3RyaW5nLE9iamVjdD4oKTsKQEAgLTEwNDMsNyArMTA0NSw5IEBADQogCiAgICAgICAg
IGRlZmF1bHRzLnB1dChMT0dfRE9XTkxPQURTX0VOQUJMRUQsICJmYWxzZSIpOwogICAgICAg
ICBkZWZhdWx0cy5wdXQoTE9HX1VQTE9BRFNfRU5BQkxFRCwgImZhbHNlIik7CisgICAgICAg
IGRlZmF1bHRzLnB1dChUUkFDS19ET1dOTE9BRFNfRU5BQkxFRCwgImZhbHNlIik7CiAKKyAg
ICAgICAgCiAgICAgICAgIGRlZmF1bHRzLnB1dChDT05GSVJNX01BUktfQUxMX01TR1NfUkVB
RCwgInRydWUiKTsKIAogICAgICAgICBkZWZhdWx0cy5wdXQoUEVSU1RfUEFHRVBPT0xTSVpF
X0ZJTEVTLCAgICAgICAgICAgICAgIjUxMiIpOwpJbmRleDogc291cmNlL2Zyb3N0L3N0b3Jh
Z2UvcGVyc3QvUGVyc3RGcm9zdERvd25sb2FkSXRlbS5qYXZhDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gc291cmNlL2Zyb3N0L3N0b3JhZ2UvcGVyc3QvUGVyc3RGcm9zdERvd25sb2FkSXRlbS5q
YXZhCShyZXZpc2lvbiAzMTg1KQ0KKysrIHNvdXJjZS9mcm9zdC9zdG9yYWdlL3BlcnN0L1Bl
cnN0RnJvc3REb3dubG9hZEl0ZW0uamF2YQkod29ya2luZyBjb3B5KQ0KQEAgLTUwLDYgKzUw
LDcgQEANCiAgICAgcHVibGljIFN0cmluZyBmaWxlTGlzdEZpbGVTaGE7DQogDQogICAgIHB1
YmxpYyBib29sZWFuIGlzTG9nZ2VkVG9GaWxlOw0KKyAgICBwdWJsaWMgYm9vbGVhbiBpc1Ry
YWNrZWQ7DQogICAgIHB1YmxpYyBib29sZWFuIGlzQ29tcGxldGlvblByb2dSdW47DQogDQog
ICAgIHB1YmxpYyBpbnQgcnVudGltZVNlY29uZHNXaXRob3V0UHJvZ3Jlc3M7DQpAQCAtNzYs
NiArNzcsNyBAQA0KICAgICAgICAgZ3FJZGVudGlmaWVyID0gZGxJdGVtLmdldEdxSWRlbnRp
ZmllcigpOw0KICAgICAgICAgZmlsZUxpc3RGaWxlU2hhID0gKGRsSXRlbS5nZXRGaWxlTGlz
dEZpbGVPYmplY3QoKT09bnVsbD9udWxsOmRsSXRlbS5nZXRGaWxlTGlzdEZpbGVPYmplY3Qo
KS5nZXRTaGEoKSk7DQogICAgICAgICBpc0xvZ2dlZFRvRmlsZSA9IGRsSXRlbS5pc0xvZ2dl
ZFRvRmlsZSgpOw0KKyAgICAgICAgaXNUcmFja2VkID0gZGxJdGVtLmlzVHJhY2tlZCgpOw0K
ICAgICAgICAgaXNDb21wbGV0aW9uUHJvZ1J1biA9IGRsSXRlbS5pc0NvbXBsZXRpb25Qcm9n
UnVuKCk7DQogICAgICAgICBydW50aW1lU2Vjb25kc1dpdGhvdXRQcm9ncmVzcyA9IGRsSXRl
bS5nZXRSdW50aW1lU2Vjb25kc1dpdGhvdXRQcm9ncmVzcygpOw0KICAgICAgICAgb2xkRG9u
ZUJsb2NrcyA9IGRsSXRlbS5nZXRPbGREb25lQmxvY2tzKCk7DQpAQCAtMTExLDYgKzExMyw3
IEBADQogICAgICAgICAgICAgICAgIGxhc3REb3dubG9hZFN0b3BUaW1lLA0KICAgICAgICAg
ICAgICAgICBncUlkZW50aWZpZXIsDQogICAgICAgICAgICAgICAgIGlzTG9nZ2VkVG9GaWxl
LA0KKyAgICAgICAgICAgICAgICBpc1RyYWNrZWQsDQogICAgICAgICAgICAgICAgIGlzQ29t
cGxldGlvblByb2dSdW4sDQogICAgICAgICAgICAgICAgIHJ1bnRpbWVTZWNvbmRzV2l0aG91
dFByb2dyZXNzLA0KICAgICAgICAgICAgICAgICBvbGREb25lQmxvY2tzLA0KSW5kZXg6IHNv
dXJjZS9mcm9zdC9zdG9yYWdlL3BlcnN0L1NoYXJlZEZpbGVzQ0hLS2V5U3RvcmFnZS5qYXZh
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gc291cmNlL2Zyb3N0L3N0b3JhZ2UvcGVyc3QvU2hhcmVk
RmlsZXNDSEtLZXlTdG9yYWdlLmphdmEJKHJldmlzaW9uIDMxODUpDQorKysgc291cmNlL2Zy
b3N0L3N0b3JhZ2UvcGVyc3QvU2hhcmVkRmlsZXNDSEtLZXlTdG9yYWdlLmphdmEJKHdvcmtp
bmcgY29weSkNCkBAIC0zNDksMTcgKzM0OSwxOCBAQA0KIC8vCiAvLyAgICB9CiAKLSAgICBw
cm90ZWN0ZWQgZmluYWwgc3RhdGljIExhc3REb3dubG9hZFRyeVN0b3BUaW1lQ29tcGFyYXRv
ciBsYXN0RG93bmxvYWRUcnlTdG9wVGltZUNvbXBhcmF0b3IgPSBuZXcgTGFzdERvd25sb2Fk
VHJ5U3RvcFRpbWVDb21wYXJhdG9yKCk7CisgICAgCiAgICAgcHJvdGVjdGVkIHN0YXRpYyBj
bGFzcyBMYXN0RG93bmxvYWRUcnlTdG9wVGltZUNvbXBhcmF0b3IgaW1wbGVtZW50cyBDb21w
YXJhdG9yPFNoYXJlZEZpbGVzQ0hLS2V5PiB7CiAgICAgICAgIHB1YmxpYyBpbnQgY29tcGFy
ZShmaW5hbCBTaGFyZWRGaWxlc0NIS0tleSBhcmcwLCBmaW5hbCBTaGFyZWRGaWxlc0NIS0tl
eSBhcmcxKSB7CiAgICAgICAgICAgICByZXR1cm4gTWl4ZWQuY29tcGFyZUxvbmcoYXJnMC5n
ZXRMYXN0RG93bmxvYWRUcnlTdG9wVGltZSgpLCBhcmcxLmdldExhc3REb3dubG9hZFRyeVN0
b3BUaW1lKCkpOwogICAgICAgICB9CiAgICAgfQorICAgIHByb3RlY3RlZCBmaW5hbCBzdGF0
aWMgTGFzdERvd25sb2FkVHJ5U3RvcFRpbWVDb21wYXJhdG9yIGxhc3REb3dubG9hZFRyeVN0
b3BUaW1lQ29tcGFyYXRvciA9IG5ldyBMYXN0RG93bmxvYWRUcnlTdG9wVGltZUNvbXBhcmF0
b3IoKTsKIAotICAgIHByb3RlY3RlZCBmaW5hbCBzdGF0aWMgU2VlbkNvdW50Q29tcGFyYXRv
ciBzZWVuQ291bnRDb21wYXJhdG9yID0gbmV3IFNlZW5Db3VudENvbXBhcmF0b3IoKTsKICAg
ICBwcm90ZWN0ZWQgc3RhdGljIGNsYXNzIFNlZW5Db3VudENvbXBhcmF0b3IgaW1wbGVtZW50
cyBDb21wYXJhdG9yPFNoYXJlZEZpbGVzQ0hLS2V5PiB7CiAgICAgICAgIHB1YmxpYyBpbnQg
Y29tcGFyZShmaW5hbCBTaGFyZWRGaWxlc0NIS0tleSBhcmcwLCBmaW5hbCBTaGFyZWRGaWxl
c0NIS0tleSBhcmcxKSB7CiAgICAgICAgICAgICByZXR1cm4gTWl4ZWQuY29tcGFyZUludChh
cmcwLmdldFNlZW5Db3VudCgpLCBhcmcwLmdldFNlZW5Db3VudCgpKTsKICAgICAgICAgfQog
ICAgIH0KKyAgICBwcm90ZWN0ZWQgZmluYWwgc3RhdGljIFNlZW5Db3VudENvbXBhcmF0b3Ig
c2VlbkNvdW50Q29tcGFyYXRvciA9IG5ldyBTZWVuQ291bnRDb21wYXJhdG9yKCk7CiB9Cklu
ZGV4OiBzb3VyY2UvZnJvc3Qvc3RvcmFnZS9wZXJzdC9UcmFja0Rvd25sb2FkS2V5cy5qYXZh
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gc291cmNlL2Zyb3N0L3N0b3JhZ2UvcGVyc3QvVHJhY2tE
b3dubG9hZEtleXMuamF2YQkocmV2aXNpb24gMCkNCisrKyBzb3VyY2UvZnJvc3Qvc3RvcmFn
ZS9wZXJzdC9UcmFja0Rvd25sb2FkS2V5cy5qYXZhCShyZXZpc2lvbiAwKQ0KQEAgLTAsMCAr
MSw3NyBAQA0KKy8qDQorIFRyYWNrRG93bmxvYWRLZXlzLmphdmEgLyBGcm9zdA0KKyBDb3B5
cmlnaHQgKEMpIDIwMTAgIEZyb3N0IFByb2plY3QgPGp0Y2Zyb3N0LnNvdXJjZWZvcmdlLm5l
dD4NCisNCisgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcg0KKyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcw0KKyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZg0KKyB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCisNCisgVGhpcyBw
cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsDQorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mDQorIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUNCisgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLg0KKw0KKyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KKyBhbG9uZyB3aXRoIHRo
aXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KKyBGb3Vu
ZGF0aW9uLCBJbmMuLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4N
CisqLw0KK3BhY2thZ2UgZnJvc3Quc3RvcmFnZS5wZXJzdDsNCisNCitpbXBvcnQgb3JnLmdh
cnJldC5wZXJzdC4qOw0KKw0KKy8qKg0KKyAqIFJlcHJlc2VudHMgdGhlIGl0ZW0gZm9yIHRo
ZSBUcmFja0Rvd25sb2FkS2V5cy4NCisgKi8NCitwdWJsaWMgY2xhc3MgVHJhY2tEb3dubG9h
ZEtleXMgZXh0ZW5kcyBQZXJzaXN0ZW50IHsNCisNCisJcHJpdmF0ZSBTdHJpbmcgY2hrS2V5
Ow0KKwlwcml2YXRlIFN0cmluZyBmaWxlTmFtZTsNCisJcHJpdmF0ZSBTdHJpbmcgYm9hcmRO
YW1lOw0KKyAgICBwcml2YXRlIGxvbmcgZmlsZVNpemU7IA0KKwlwcml2YXRlIGxvbmcgZG93
bmxvYWRGaW5pc2hlZFRpbWU7IC8vIHdoZW4gd2FzIHRoaXMgZG93bmxvYWQgZmluaXNoZWQN
CisNCisgICAgLy8gdXNlZCBieSBwZXJzdA0KKyAgICBwdWJsaWMgVHJhY2tEb3dubG9hZEtl
eXMoKSB7fQ0KKyAgICANCisgICAgcHVibGljIFRyYWNrRG93bmxvYWRLZXlzKGZpbmFsIFN0
cmluZyBjaGtLZXksIGZpbmFsIFN0cmluZyBmaWxlTmFtZSwgDQorICAgIAkJZmluYWwgU3Ry
aW5nIGJvYXJkTmFtZSwgbG9uZyBmaWxlU2l6ZSwgbG9uZyBkb3dubG9hZEZpbmlzaGVkVGlt
ZSkgew0KKyAgICAgICAgdGhpcy5jaGtLZXkgPSBjaGtLZXk7DQorICAgICAgICB0aGlzLmZp
bGVOYW1lID0gZmlsZU5hbWU7DQorICAgICAgICB0aGlzLmJvYXJkTmFtZSA9IGJvYXJkTmFt
ZTsNCisgICAgICAgIHRoaXMuZmlsZVNpemUgPSBmaWxlU2l6ZTsNCisgICAgICAgIHRoaXMu
ZG93bmxvYWRGaW5pc2hlZFRpbWUgPSBkb3dubG9hZEZpbmlzaGVkVGltZTsNCisgICAgfQ0K
KyAgICANCisgICAgcHVibGljIFRyYWNrRG93bmxvYWRLZXlzKGZpbmFsIFRyYWNrRG93bmxv
YWRLZXlzIHRyYWNrRG93bmxvYWRLZXkpIHsNCisgICAgICAgIHRoaXMuY2hrS2V5ID0gdHJh
Y2tEb3dubG9hZEtleS5jaGtLZXk7DQorICAgICAgICB0aGlzLmZpbGVOYW1lID0gdHJhY2tE
b3dubG9hZEtleS5maWxlTmFtZTsNCisgICAgICAgIHRoaXMuYm9hcmROYW1lID0gdHJhY2tE
b3dubG9hZEtleS5ib2FyZE5hbWU7DQorICAgICAgICB0aGlzLmZpbGVTaXplID0gdHJhY2tE
b3dubG9hZEtleS5maWxlU2l6ZTsNCisgICAgICAgIHRoaXMuZG93bmxvYWRGaW5pc2hlZFRp
bWUgPSB0cmFja0Rvd25sb2FkS2V5LmRvd25sb2FkRmluaXNoZWRUaW1lOw0KKyAgICB9DQor
DQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0Q2hrS2V5KCkgew0KKyAgICAgICAgcmV0dXJuIGNo
a0tleTsNCisgICAgfQ0KKyAgICANCisgICAgcHVibGljIFN0cmluZyBnZXRGaWxlTmFtZSgp
IHsNCisgICAgICAgIHJldHVybiBmaWxlTmFtZTsNCisgICAgfQ0KKyAgICANCisgICAgcHVi
bGljIFN0cmluZyBnZXRCb2FyZE5hbWUoKSB7DQorCQlyZXR1cm4gYm9hcmROYW1lOw0KKwl9
DQorDQorCXB1YmxpYyBsb25nIGdldEZpbGVTaXplKCkgew0KKwkJcmV0dXJuIGZpbGVTaXpl
Ow0KKwl9DQorDQorCXB1YmxpYyB2b2lkIHNldENoa0tleShTdHJpbmcgY2hrS2V5KSB7DQor
CQl0aGlzLmNoa0tleSA9IGNoa0tleTsNCisJfQ0KKw0KKwlwdWJsaWMgbG9uZyBnZXREb3du
bG9hZEZpbmlzaGVkVGltZSgpIHsNCisgICAgICAgIHJldHVybiBkb3dubG9hZEZpbmlzaGVk
VGltZTsNCisgICAgfQ0KK30NCkluZGV4OiBzb3VyY2UvZnJvc3Qvc3RvcmFnZS9wZXJzdC9U
cmFja0Rvd25sb2FkS2V5c1N0b3JhZ2UuamF2YQ0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHNvdXJj
ZS9mcm9zdC9zdG9yYWdlL3BlcnN0L1RyYWNrRG93bmxvYWRLZXlzU3RvcmFnZS5qYXZhCShy
ZXZpc2lvbiAwKQ0KKysrIHNvdXJjZS9mcm9zdC9zdG9yYWdlL3BlcnN0L1RyYWNrRG93bmxv
YWRLZXlzU3RvcmFnZS5qYXZhCShyZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSwxMjUgQEANCisv
Kg0KKyAgVHJhY2tEb3dubG9hZEtleXNTdG9yYWdlLmphdmEgLyBGcm9zdA0KKyAgQ29weXJp
Z2h0IChDKSAyMDEwICBGcm9zdCBQcm9qZWN0IDxqdGNmcm9zdC5zb3VyY2Vmb3JnZS5uZXQ+
DQorDQorICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yDQorICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcw0KKyAgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YNCisgIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KKw0KKyAgVGhp
cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsDQorICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZg0KKyAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQ0KKyAgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KKw0KKyAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCisgIGFsb25n
IHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl
DQorICBGb3VuZGF0aW9uLCBJbmMuLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIx
MzksIFVTQS4NCisqLw0KK3BhY2thZ2UgZnJvc3Quc3RvcmFnZS5wZXJzdDsNCisNCitpbXBv
cnQgamF2YS51dGlsLio7DQorDQoraW1wb3J0IGZyb3N0Lio7DQoraW1wb3J0IGZyb3N0LnN0
b3JhZ2UuKjsNCisNCitwdWJsaWMgY2xhc3MgVHJhY2tEb3dubG9hZEtleXNTdG9yYWdlIGV4
dGVuZHMgQWJzdHJhY3RGcm9zdFN0b3JhZ2UgaW1wbGVtZW50cyBFeGl0U2F2YWJsZSB7DQor
DQorICAgIHByaXZhdGUgVHJhY2tEb3dubG9hZEtleXNTdG9yYWdlUm9vdCBzdG9yYWdlUm9v
dCA9IG51bGw7DQorDQorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBTVE9SQUdF
X0ZJTEVOQU1FID0gIlRyYWNrRG93bmxvYWRLZXlzLmRicyI7DQorDQorICAgIHByaXZhdGUg
c3RhdGljIFRyYWNrRG93bmxvYWRLZXlzU3RvcmFnZSBpbnN0YW5jZSA9IG5ldyBUcmFja0Rv
d25sb2FkS2V5c1N0b3JhZ2UoKTsNCisNCisgICAgcHJvdGVjdGVkIFRyYWNrRG93bmxvYWRL
ZXlzU3RvcmFnZSgpIHsNCisgICAgICAgIHN1cGVyKCk7DQorICAgIH0NCisNCisgICAgcHVi
bGljIHN0YXRpYyBUcmFja0Rvd25sb2FkS2V5c1N0b3JhZ2UgaW5zdCgpIHsNCisgICAgICAg
IHJldHVybiBpbnN0YW5jZTsNCisgICAgfQ0KKw0KKyAgICBwcml2YXRlIGJvb2xlYW4gYWRk
VG9JbmRpY2VzKGZpbmFsIFRyYWNrRG93bmxvYWRLZXlzIHRyYWNrRG93bmxvYWRLZXlzKSB7
DQorICAgIAlTeXN0ZW0ub3V0LnByaW50KCJERUJVRzogVHJhY2tEb3dubG9hZEtleXNTdG9y
YWdlLmFkZFRvSW5kaWNlczogIik7DQorICAgIAlTeXN0ZW0ub3V0LnByaW50bG4odHJhY2tE
b3dubG9hZEtleXMuZ2V0Q2hrS2V5KCkpOw0KKyAgICAgICAgcmV0dXJuIHN0b3JhZ2VSb290
LmRvd25sb2FkS2V5TGlzdC5wdXQodHJhY2tEb3dubG9hZEtleXMuZ2V0Q2hrS2V5KCksIHRy
YWNrRG93bmxvYWRLZXlzKTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgdm9pZCBzdG9yZUl0
ZW0oZmluYWwgVHJhY2tEb3dubG9hZEtleXMgdHJhY2tEb3dubG9hZEtleXMpIHsNCisgICAg
ICAgIGlmKCBnZXRTdG9yYWdlKCkgPT0gbnVsbCApIHsNCisgICAgICAgICAgICByZXR1cm47
DQorICAgICAgICB9DQorICAgICAgICBpZiggdHJhY2tEb3dubG9hZEtleXMuZ2V0U3RvcmFn
ZSgpID09IG51bGwgKSB7DQorICAgICAgICAJdHJhY2tEb3dubG9hZEtleXMubWFrZVBlcnNp
c3RlbnQoZ2V0U3RvcmFnZSgpKTsNCisgICAgICAgICAgICBhZGRUb0luZGljZXModHJhY2tE
b3dubG9hZEtleXMpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgIAl0cmFja0Rvd25s
b2FkS2V5cy5tb2RpZnkoKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICANCisgICAgcHVi
bGljIGJvb2xlYW4gc2VhcmNoSXRlbShmaW5hbCBTdHJpbmcgY2hrS2V5KSB7DQorICAgIAlT
eXN0ZW0ub3V0LnByaW50KCJERUJVRzogVHJhY2tEb3dubG9hZEtleXNTdG9yYWdlLnNlYXJj
aEl0ZW06ICIpOw0KKyAgICAJU3lzdGVtLm91dC5wcmludGxuKGNoa0tleSk7DQorICAgIAly
ZXR1cm4gKHN0b3JhZ2VSb290LmRvd25sb2FkS2V5TGlzdC5nZXQoY2hrS2V5KSAhPSBudWxs
KTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgdm9pZCBleGl0U2F2ZSgpIHRocm93cyBTdG9y
YWdlRXhjZXB0aW9uIHsNCisgICAgICAgIGNsb3NlKCk7DQorICAgICAgICBzdG9yYWdlUm9v
dCA9IG51bGw7DQorICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIklORk86IFRyYWNrRG93
bmxvYWRLZXlTdG9yYWdlIGNsb3NlZC4iKTsNCisgICAgfQ0KKw0KKyAgICBAT3ZlcnJpZGUN
CisgICAgcHVibGljIFN0cmluZyBnZXRTdG9yYWdlRmlsZW5hbWUoKSB7DQorICAgICAgICBy
ZXR1cm4gU1RPUkFHRV9GSUxFTkFNRTsNCisgICAgfQ0KKw0KKyAgICBAT3ZlcnJpZGUNCisg
ICAgcHVibGljIGJvb2xlYW4gaW5pdFN0b3JhZ2UoKSB7DQorICAgICAgICBmaW5hbCBTdHJp
bmcgZGF0YWJhc2VGaWxlUGF0aCA9IGJ1aWxkU3RvcmFnZVBhdGgoZ2V0U3RvcmFnZUZpbGVu
YW1lKCkpOyAvLyBwYXRoIHRvIHRoZSBkYXRhYmFzZSBmaWxlDQorICAgICAgICBmaW5hbCBs
b25nIHBhZ2VQb29sU2l6ZSA9IGdldFBhZ2VQb29sU2l6ZShTZXR0aW5nc0NsYXNzLlBFUlNU
X1BBR0VQT09MU0laRV9TSEFSRURGSUxFU0NIS0tFWVMpOw0KKw0KKyAgICAgICAgb3Blbihk
YXRhYmFzZUZpbGVQYXRoLCBwYWdlUG9vbFNpemUsIHRydWUsIHRydWUsIGZhbHNlKTsNCisN
CisgICAgICAgIHN0b3JhZ2VSb290ID0gKFRyYWNrRG93bmxvYWRLZXlzU3RvcmFnZVJvb3Qp
Z2V0U3RvcmFnZSgpLmdldFJvb3QoKTsNCisgICAgICAgIGlmIChzdG9yYWdlUm9vdCA9PSBu
dWxsKSB7DQorICAgICAgICAgICAgLy8gU3RvcmFnZSB3YXMgbm90IGluaXRpYWxpemVkIHll
dA0KKyAgICAgICAgICAgIHN0b3JhZ2VSb290ID0gbmV3IFRyYWNrRG93bmxvYWRLZXlzU3Rv
cmFnZVJvb3QoKTsNCisgICAgICAgICAgICAvLyB1bmlxdWUgaW5kZXggb2YgY2hrS2V5cw0K
KyAgICAgICAgICAgIHN0b3JhZ2VSb290LmRvd25sb2FkS2V5TGlzdCA9IGdldFN0b3JhZ2Uo
KS5jcmVhdGVJbmRleChTdHJpbmcuY2xhc3MsIHRydWUpOw0KKyAgICAgICAgICAgIGdldFN0
b3JhZ2UoKS5zZXRSb290KHN0b3JhZ2VSb290KTsNCisgICAgICAgICAgICBjb21taXQoKTsg
Ly8gY29tbWl0IHRyYW5zYWN0aW9uDQorICAgICAgICB9DQorICAgICAgICBTeXN0ZW0ub3V0
LnByaW50bG4oIklORk86IFRyYWNrRG93bmxvYWRLZXlTdG9yYWdlIGluaXRpYWxpemVkLiIp
Ow0KKyAgICAgICAgcmV0dXJuIHRydWU7DQorICAgIH0NCisgICAgDQorICAgIC8qKg0KKyAg
ICAgKiBEZWxldGUgYWxsIGVudHJpZXMgdGhhdCB3ZXJlIGRvd25sb2FkZWQgbWF4RGF5c09s
ZCBkYXllcyBhZ28uDQorICAgICAqIEByZXR1cm4gIGNvdW50IG9mIGRlbGV0ZWQgcm93cw0K
KyAgICAgKi8NCisgICAgcHVibGljIGludCBjbGVhbnVwVGFibGUoZmluYWwgaW50IG1heERh
eXNPbGQpIHsNCisNCisgICAgICAgIGZpbmFsIGxvbmcgbWluVmFsID0gU3lzdGVtLmN1cnJl
bnRUaW1lTWlsbGlzKCkgLSAobWF4RGF5c09sZCAqIDI0TCAqIDYwTCAqIDYwTCAqIDEwMDBM
KTsNCisNCisgICAgICAgIC8vIGRlbGV0ZSBhbGwgaXRlbXMgd2l0aCBsYXN0U2VlbiA8IG1p
blZhbCwgYnV0IGxhc3RTZWVuID4gMA0KKyAgICAgICAgaW50IGRlbGV0ZWRDb3VudCA9IDA7
DQorDQorICAgICAgICBiZWdpbkV4Y2x1c2l2ZVRocmVhZFRyYW5zYWN0aW9uKCk7DQorICAg
ICAgICB0cnkgew0KKyAgICAgICAgICAgIGZpbmFsIEl0ZXJhdG9yPFRyYWNrRG93bmxvYWRL
ZXlzPiBpID0gc3RvcmFnZVJvb3QuZG93bmxvYWRLZXlMaXN0Lml0ZXJhdG9yKCk7DQorICAg
ICAgICAgICAgd2hpbGUoaS5oYXNOZXh0KCkpIHsNCisgICAgICAgICAgICAgICAgZmluYWwg
VHJhY2tEb3dubG9hZEtleXMgc2ZrID0gaS5uZXh0KCk7DQorICAgICAgICAgICAgICAgIGlm
KCBzZmsuZ2V0RG93bmxvYWRGaW5pc2hlZFRpbWUoKSA+IDAgJiYgc2ZrLmdldERvd25sb2Fk
RmluaXNoZWRUaW1lKCkgPCBtaW5WYWwgKSB7DQorICAgICAgICAgICAgICAgICAgICBpLnJl
bW92ZSgpOyAvLyByZW1vdmUgZnJvbSBpdGVyYXRlZCBpbmRleA0KKyAgICAgICAgICAgICAg
ICAgICAgc2ZrLmRlYWxsb2NhdGUoKTsgLy8gcmVtb3ZlIGZyb20gU3RvcmFnZQ0KKyAgICAg
ICAgICAgICAgICAgICAgZGVsZXRlZENvdW50Kys7DQorICAgICAgICAgICAgICAgIH0NCisg
ICAgICAgICAgICB9DQorICAgICAgICB9IGZpbmFsbHkgew0KKyAgICAgICAgICAgIGVuZFRo
cmVhZFRyYW5zYWN0aW9uKCk7DQorICAgICAgICB9DQorDQorICAgICAgICByZXR1cm4gZGVs
ZXRlZENvdW50Ow0KKyAgICB9DQorfQ0KSW5kZXg6IHNvdXJjZS9mcm9zdC9zdG9yYWdlL3Bl
cnN0L1RyYWNrRG93bmxvYWRLZXlzU3RvcmFnZVJvb3QuamF2YQ0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIHNvdXJjZS9mcm9zdC9zdG9yYWdlL3BlcnN0L1RyYWNrRG93bmxvYWRLZXlzU3RvcmFn
ZVJvb3QuamF2YQkocmV2aXNpb24gMCkNCisrKyBzb3VyY2UvZnJvc3Qvc3RvcmFnZS9wZXJz
dC9UcmFja0Rvd25sb2FkS2V5c1N0b3JhZ2VSb290LmphdmEJKHJldmlzaW9uIDApDQpAQCAt
MCwwICsxLDI4IEBADQorLyoNCisgIFRyYWNrRG93bmxvYWRLZXlzU3RvcmFnZVJvb3QuamF2
YSAvIEZyb3N0DQorICBDb3B5cmlnaHQgKEMpIDIwMTAgIEZyb3N0IFByb2plY3QgPGp0Y2Zy
b3N0LnNvdXJjZWZvcmdlLm5ldD4NCisNCisgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3INCisgIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzDQorICBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp
b24gMiBvZg0KKyAgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uDQorDQorICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQorICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05V
DQorICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQorDQorICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQ0KKyAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUg
dG8gdGhlIEZyZWUgU29mdHdhcmUNCisgIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2
ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLg0KKyovDQorcGFja2FnZSBmcm9zdC5zdG9y
YWdlLnBlcnN0Ow0KKw0KK2ltcG9ydCBvcmcuZ2FycmV0LnBlcnN0Lio7DQorDQorcHVibGlj
IGNsYXNzIFRyYWNrRG93bmxvYWRLZXlzU3RvcmFnZVJvb3QgZXh0ZW5kcyBQZXJzaXN0ZW50
IHsNCisgICAgDQorICAgIHB1YmxpYyBUcmFja0Rvd25sb2FkS2V5c1N0b3JhZ2VSb290KCkg
e30NCisgICAgDQorICAgIEluZGV4PFRyYWNrRG93bmxvYWRLZXlzPiBkb3dubG9hZEtleUxp
c3Q7DQorfQ0KSW5kZXg6IHNvdXJjZS9pMThuL2xhbmdyZXMucHJvcGVydGllcw0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUu
DQpzdm46bWltZS10eXBlID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtDQo=
--------------090109000703040209010008
Content-Type: text/plain;
 name="langres.properties"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename="langres.properties"

AboutBox.label.openSourceProject=Open Source Project (GPL license)
AboutBox.label.version=Version
AboutBox.text.development=Development:
AboutBox.text.miscCodeContributions=Misc code contributions:
AboutBox.text.splashScreenLogo=Splash Screen Logo:
AboutBox.text.systemTrayExecutables=System Tray Executables:
AboutBox.text.translationSupport=Translation Support:
AboutBox.text.windowsInstaller=Windows Installer:
AboutBox.title=About
AltEdit.errorDialog.couldNotCreateMessageFile=Could not create message file for alternate editor
AltEdit.errorDialog.couldNotStartEditorUsingCommand=Could not start alternate editor using command
AltEdit.errorDialog.invalidReturnedMessageFile=The message file returned by the alternate editor is invalid.
AltEdit.errorDialog.missingPlaceholder=Configured alternate editor line must contain a '%f' as placeholder for the filename.
AltEdit.errorDialog.noAlternateEditorConfigured=No alternate editor configured.
AltEdit.errorDialogs.title=Error
AltEdit.markerLine.subject=*--- Subject line (changeable) ---*
AltEdit.markerLine.text=*--- Enter your text after this line ---*
AltEdit.textFileMessage.1=>>> This is a Frost alternate editor message file.                <<<
AltEdit.textFileMessage.2=>>> You can edit the subject and add text at the end of the file. <<<
AltEdit.textFileMessage.3=>>> Don't change or delete the marker lines!                      <<<
Board.boardState.invalid=(INVALID, no public key, but private!)
Board.boardState.publicBoard=public board
Board.boardState.readAccess=read access
Board.boardState.writeAccess=write access
BoardInfoFrame.button.close=Close
BoardInfoFrame.button.update=Update view
BoardInfoFrame.button.updateAllBoards=Update all boards
BoardInfoFrame.button.updateSelectedBoard=Update selected boards
BoardInfoFrame.button.removeSelectedBoards=Remove selected boards
BoardInfoFrame.label.boards=Boards
BoardInfoFrame.label.messages=Messages
BoardInfoFrame.popupMenu.copyInfoToClipboard=Copy information to clipboard
BoardInfoFrame.table.board=Board
BoardInfoFrame.table.messages=Messages
BoardInfoFrame.table.messagesToday=Today
BoardInfoFrame.table.messagesFlagged=Flagged
BoardInfoFrame.table.messagesStarred=Starred
BoardInfoFrame.table.messagesUnread=Unread
BoardInfoFrame.table.lastMsgDate=Last Msg
BoardInfoFrame.table.state=State
BoardInfoFrame.title=Board information window
BoardsChooser.title=Choose boards
BoardSettings.button.generateNewKeypair=Generate new keypair
BoardSettings.generateKeyPairErrorDialog.title=Warning
BoardSettings.label.description=Description:
BoardSettings.label.enableAutomaticBoardUpdate=Enable automatic board update
BoardSettings.label.hideBadMessages=Hide messages flagged BAD
BoardSettings.label.hideCheckMessages=Hide messages flagged CHECK
BoardSettings.label.hideObserveMessages=Hide messages flagged OBSERVE
BoardSettings.label.hideUnsignedMessages=Hide unsigned messages
BoardSettings.label.maximumMessageDisplay=Number of days to display
BoardSettings.label.maximumMessageDownload=Number of days to download backwards
BoardSettings.label.no=No
BoardSettings.label.overrideDefaultSettings=Override default settings
BoardSettings.label.privateKey=Private key
BoardSettings.label.publicBoard=Public board
BoardSettings.label.publicKey=Public key
BoardSettings.label.secureBoard=Secure board
BoardSettings.label.setTo=Set to
BoardSettings.label.storeSentMessages=Save sent messages
BoardSettings.label.useDefault=Use default
BoardSettings.label.yes=Yes
BoardSettings.label.hideMessageCountDisplay=Hide messages from identities with fewer than X received messages (0 disables)
BoardSettings.looseKeysWarningDialog.body=If you set this board as public, you will lose its keys. Are you sure you want to do that?
BoardSettings.looseKeysWarningDialog.title=Set Board as Public?
BoardSettings.text.keyNotAvailable=Not available
BoardSettings.title.boardSettings=Settings for board
BoardSettings.title.folderSettings=Settings for all boards in folder
BoardTree.duplicateNewBoardNameError.body=You already have a board with name ''{0}''!\nPlease choose a new name.
BoardTree.duplicateNewBoardNameError.title=Duplicate board name
BoardTree.newFolderDialog.body=Please enter a name for the new folder
BoardTree.newFolderDialog.defaultName=newFolder
BoardTree.newFolderDialog.title=New Folder Name
BoardTree.overWriteBoardConfirmation.body=You already have a board with name ''{0}''!\nDo you really want to overwrite it?\n(This will not delete messages)
BoardTree.overWriteBoardConfirmation.title=Overwrite existing board
BoardTree.popupmenu.addNewBoard=Add new board
BoardTree.popupmenu.addNewFolder=Add new folder
BoardTree.popupmenu.board=board
BoardTree.popupmenu.Board=Board
BoardTree.popupmenu.configureSelectedBoard=Configure selected board
BoardTree.popupmenu.configureSelectedFolder=Configure selected folder
BoardTree.popupmenu.cut=Cut
BoardTree.popupmenu.Folder=Folder
BoardTree.popupmenu.folder=folder
BoardTree.popupmenu.markAllMessagesRead=Mark ALL messages read
BoardTree.popupmenu.paste=Paste
BoardTree.popupmenu.refresh=Refresh
BoardTree.popupmenu.remove=Remove
BoardTree.popupmenu.renameFolder=Rename folder
BoardTree.popupmenu.searchMessages=Search this board
BoardTree.popupmenu.sendMessage=Send message
BoardTree.popupmenu.sortFolder=Sort folder
BoardTree.removeBoardConfirmation.body=Do you really want to delete board ''{0}'' ? All messages in this board will be deleted too.
BoardTree.removeBoardConfirmation.title=Remove board ''{0}''
BoardTree.removeFolderConfirmation.body=Do you really want to delete folder ''{0}'' ?\nNOTE: Removing it will also remove all boards, folders and messages inside this folder!
BoardTree.removeFolderConfirmation.title=Remove folder ''{0}''
Common.browse=Browse
Common.cancel=Cancel
Common.copy=Copy
Common.copyToClipBoard.copyExtendedInfo=Copy extended info
Common.copyToClipBoard.copyKeysWithFilenames=Copy keys with filenames
Common.copyToClipBoard.extendedInfo.bytes=Bytes:
Common.copyToClipBoard.extendedInfo.file=File :
Common.copyToClipBoard.extendedInfo.key=Key  :
Common.copyToClipBoard.extendedInfo.keyNotAvailableYet=Key not available yet
Common.copyToClipBoard=Copy to clipboard
Common.cut=Cut
Common.details=Details
Common.exit=Exit
Common.ignoreMessagesOfThisType=Ignore such messages
Common.ok=Ok
Common.paste=Paste
Common.priority.changePriority=Change priority
Common.priority.priority0=0  (maximum)
Common.priority.priority1=1
Common.priority.priority2=2
Common.priority.priority3=3  (recommended)
Common.priority.priority4=4
Common.priority.priority5=5
Common.priority.priority6=6  (pause)
Common.properties=Properties
Common.suppressConfirmationCheckbox=Show this dialog the next time
Core.init.NodeNotRunningBody=Make sure your node is running and that you have configured Freenet correctly.\nNevertheless, to allow you to read messages, Frost will startup now.\nPlease note that automatic board updates were disabled (Menu 'News')!\nDon't get confused by some error messages ;)\n
Core.init.NodeNotRunningTitle=Error - could not establish a connection to freenet node.
Core.init.TestnetWarningBody=Your freenet node runs in TESTNET mode, no anonymity is provided!
Core.init.TestnetWarningTitle=Freenet node in TESTNET mode
Core.init.UnsupportedFreenetVersionBody=Freenet version is not supported
Core.init.UnsupportedFreenetVersionTitle=Freenet version is not supported
Core.init.FileSharingEnabledBody=Filesharing is enabled. It is vulnerable to spamming and disabling it is highly recommended.\nLeaving it enabled will gradually increase the time it takes to start up Frost (due to filelist.dbs being flooded with junk) and increase both resource and bandwidth usage.\n\nIf you choose to disable it, you should exit Frost and remove filelist.dbs to free up some disk space and decrease startup times.
Core.init.FileSharingEnabledTitle=Filesharing enabled
Core.loadIdentities.ChooseName=Choose an identity name, it doesn't have to be unique\n
Core.loadIdentities.InvalidNameBody=The name is invalid, please choose another name.
Core.loadIdentities.InvalidNameTitle=Invalid identity name
DialogWithDetails.button.less=Less
DialogWithDetails.button.more=More
DownloadPane.fileTable.blocks=Blocks
DownloadPane.fileTable.enabled=Enabled
DownloadPane.fileTable.filename=Filename
DownloadPane.fileTable.isDDA.tooltip=Indicates if the file is stored by the node to the target file.
DownloadPane.fileTable.isDDA=DDA
DownloadPane.fileTable.key=Key
DownloadPane.fileTable.downloadDir=Download directory
DownloadPane.fileTable.lastReceived=Last seen
DownloadPane.fileTable.lastUploaded=Last uploaded
DownloadPane.fileTable.popupmenu.enableDownloads.disableAllDownloads=Disable all downloads
DownloadPane.fileTable.popupmenu.enableDownloads.disableSelectedDownloads=Disable selected downloads
DownloadPane.fileTable.popupmenu.enableDownloads.enableAllDownloads=Enable all downloads
DownloadPane.fileTable.popupmenu.enableDownloads.enableSelectedDownloads=Enable selected downloads
DownloadPane.fileTable.popupmenu.enableDownloads.invertEnabledStateForAllDownloads=Invert enabled state for all downloads
DownloadPane.fileTable.popupmenu.enableDownloads.invertEnabledStateForSelectedDownloads=Invert enabled state for selected downloads
DownloadPane.fileTable.popupmenu.enableDownloads=Enable downloads
DownloadPane.fileTable.popupmenu.remove.removeSelectedDownloads=Remove selected downloads
DownloadPane.fileTable.popupmenu.remove=Remove
DownloadPane.fileTable.popupmenu.removeFromGlobalQueue=Remove from global queue
DownloadPane.fileTable.popupmenu.restartSelectedDownloads=Restart selected downloads
DownloadPane.fileTable.popupmenu.retrieveDirectExternalDownloads=Retrieve direct external downloads into download directory
DownloadPane.fileTable.popupmenu.startSelectedDownloadsNow=Start selected downloads immediately
DownloadPane.fileTable.popupmenu.useThisDownloadDir=Use this download directory
DownloadPane.fileTable.popupmenu.jumpToAssociatedMessage=View associated message
DownloadPane.fileTable.priority=Priority
DownloadPane.fileTable.requested.tooltip=If an icon is shown then this file was requested in the last 24 hours by us or someone else.
DownloadPane.fileTable.requested=File requested
DownloadPane.fileTable.shared.tooltip=An icon indicates a shared file.
DownloadPane.fileTable.shared=Shared file
DownloadPane.fileTable.size=Size
DownloadPane.fileTable.state=State
DownloadPane.fileTable.states.decodingSegment=Decoding segment
DownloadPane.fileTable.states.done=Done
DownloadPane.fileTable.states.downloading=Downloading
DownloadPane.fileTable.states.failed=Failed
DownloadPane.fileTable.states.trying=Trying
DownloadPane.fileTable.states.unknown=Unknown
DownloadPane.fileTable.states.waiting=Waiting
DownloadPane.fileTable.tries=Tries
DownloadPane.invalidKeyDialog.body=Invalid freenet key: {0}
DownloadPane.invalidKeyDialog.title=Invalid key
DownloadPane.alreadyTrackedDialog.title=Key already downloaded
DownloadPane.alreadyTrackedDialog.body=The key has already been downloaded previously:\n{0}\n\nDo you want to download it again?
DownloadPane.removeFinishedDownloads=Remove finished
DownloadPane.showExternalGlobalQueueItems=Show global queue
DownloadPane.toolbar.tooltip.activateDownloading=Activate downloading
DownloadPane.toolbar.tooltip.addKeys=Quickload: enter or paste keys to download, separated by a semicolon ; or one key per line
DownloadPane.toolbar.tooltip.pasteKeys=Add keys from clipboard
DownloadPane.toolbar.tooltip.downloadPrefix=Filename prefix
DownloadPane.toolbar.tooltip.downloadDir=Default download directory for keys added through the quickload text field
DownloadPane.toolbar.tooltip.applyDownloadPrefix=Set download filename prefix for selected files
DownloadPane.toolbar.tooltip.selectDownloadDir=Browse for download directory
DownloadPane.toolbar.tooltip.createDownloadDir=Create directory
DownloadPane.toolbar.tooltip.applyDownloadDir=Set download directory for selected files
DownloadPane.toolbar.tooltip.pauseDownloading=Pause downloading
DownloadPane.toolbar.waiting=Waiting
DownloadPane.toolbar.label.downloadQuickload=Quickload
DownloadPane.toolbar.label.downloadPrefix=Prefix
DownloadPane.toolbar.label.downloadDir=Directory
DownloadPane.toolbar.downloadDirMenu.setDownloadDirTo=Set to...
FileAttachmentUploadThread.fileNotFoundError.text=The message that is currently send (maybe a send retry on next startup of Frost)\ncontains a file attachment that does not longer exist, or it is a 0 byte file!\n\nThe send of the message was aborted and the message file was deleted\nto prevent another upload try on next startup of Frost.\nFile: {0}
FileAttachmentUploadThread.fileNotFoundError.title=Unrecoverable error
FileListFileDetailsDialog.button.close=Close
FileListFileDetailsDialog.popupmenu.searchFilesOfOwner=Search for files of owner
FileListFileDetailsDialog.table.comment=Comment
FileListFileDetailsDialog.table.filename=Filename
FileListFileDetailsDialog.table.key=Key
FileListFileDetailsDialog.table.keywords=Keywords
FileListFileDetailsDialog.table.lastReceived=Last seen
FileListFileDetailsDialog.table.lastUploaded=Last upload
FileListFileDetailsDialog.table.owner=Owner
FileListFileDetailsDialog.table.rating=Rating
FileListFileDetailsDialog.table.state.never=Never
FileListFileDetailsDialog.table.state.unknown=Unknown
FileListFileDetailsDialog.table.trustState=Trust state
FileListFileDetailsDialog.title=File details
FirstStartupDialog.welcomeText.label=<html><br><font size="+2"><center><b>Welcome to Frost!</b></center></font><br><br>Frost will now connect to a Freenet 0.7 node.<br>By default Frost connects to a node on localhost<br>using the standard FCP2 darknet port: 127.0.0.1:9481</html> 
FirstStartupDialog.overrideFcpHost.label=Override Freenet FCP host:port
FirstStartupDialog.title=Frost first startup
Frost.lockFileFound=This indicates that another Frost instance is already running in this directory.\nRunning Frost concurrently will cause data loss.\nIf you are REALLY SURE that Frost is not already running, delete the lockfile:\n
IdentitiesBrowser.button.cleanup.tooltip=Delete all identities without messages or files
IdentitiesBrowser.button.cleanup=Cleanup
IdentitiesBrowser.button.close=Close
IdentitiesBrowser.button.delete.tooltip.multiple=Delete selected identities
IdentitiesBrowser.button.delete.tooltip.single=Delete selected identity
IdentitiesBrowser.button.delete=Delete
IdentitiesBrowser.button.export=Export
IdentitiesBrowser.button.import=Import
IdentitiesBrowser.cleanupDialog.deleteIdentities.body=Cleanup will delete {0} unused identities.
IdentitiesBrowser.cleanupDialog.deleteIdentities.title=Cleanup identities
IdentitiesBrowser.cleanupDialog.nothingToDelete.body=There are no deletable identities.
IdentitiesBrowser.cleanupDialog.nothingToDelete.title=Cleanup identities
IdentitiesBrowser.deleteDialog.body=Delete {0} selected identities?
IdentitiesBrowser.deleteDialog.title=Delete identities
IdentitiesBrowser.exportIdentitiesConfirmXmlFileOverwrite.body=Overwite XML file ''{0}'' ?
IdentitiesBrowser.exportIdentitiesConfirmXmlFileOverwrite.title=Confirm overwrite
IdentitiesBrowser.identitiesExported.body=Exported {0} identities.
IdentitiesBrowser.identitiesExported.title=Identities exported
IdentitiesBrowser.identitiesExportFailed.body=Identities export failed.
IdentitiesBrowser.identitiesExportFailed.title=Export failed
IdentitiesBrowser.identitiesImported.body=<html>Imported {0} identities, skipped {1} duplicate identities.<br>You need to close and reopen this dialog to see the imported identities.</html>
IdentitiesBrowser.identitiesImported.title=Identities imported
IdentitiesBrowser.identitiesTable.files=Files
IdentitiesBrowser.identitiesTable.lastSeen=Last seen
IdentitiesBrowser.identitiesTable.messages=Messages
IdentitiesBrowser.identitiesTable.name=Name
IdentitiesBrowser.identitiesTable.receivedMessages=Received messages
IdentitiesBrowser.identitiesTable.state=State
IdentitiesBrowser.label.filter=Filter
IdentitiesBrowser.label.lookup=Lookup
IdentitiesBrowser.noIdentityToExport.body=No identities to export found.\nOnly GOOD, OBSERVE or BAD identities can be exported.
IdentitiesBrowser.noIdentityToExport.title=No identities to export
IdentitiesBrowser.noIdentityToImport.body=No identities to import found in XML file.
IdentitiesBrowser.noIdentityToImport.title=No identities found
IdentitiesBrowser.popupmenu.copyUniqueName=Copy unique name
IdentitiesBrowser.popupmenu.copyUniqueNameAndPublicKey=Copy unique name and public key
IdentitiesBrowser.popupmenu.exportSelectedIdentities=Export selected identities
IdentitiesBrowser.progressDialog.body=Retrieving identity information from database
IdentitiesBrowser.progressDialog.title=Retrieving identity information
IdentitiesBrowser.title=Identities Browser  ({0} identities)
KnownBoardsFrame.boardsExported.body=Exported {0} known boards to XML file ''{1}''.
KnownBoardsFrame.boardsExported.title=Boards exported
KnownBoardsFrame.boardsImported.body=Loaded {0} boards from XML file ''{1}'', {2} new boards added to list.
KnownBoardsFrame.boardsImported.title=Boards imported
KnownBoardsFrame.button.actions=Actions
KnownBoardsFrame.button.addBoards=Add selected board(s)
KnownBoardsFrame.button.addBoardsToFolder=Add selected board(s) to folder
KnownBoardsFrame.button.close=Close
KnownBoardsFrame.button.export=Export
KnownBoardsFrame.button.hideBoard=Hide board name
KnownBoardsFrame.button.import=Import
KnownBoardsFrame.button.removeBoard=Remove selected board(s)
KnownBoardsFrame.button.unhideBoard=Unhide board name
KnownBoardsFrame.exportFailed.body=Export to XML file failed! Disk full?
KnownBoardsFrame.exportFailed.title=Export failed
KnownBoardsFrame.label.filter=Filter
KnownBoardsFrame.label.lookup=Lookup
KnownBoardsFrame.noBoardsImported.body=No boards found in XML file.
KnownBoardsFrame.noBoardsImported.title=No boards imported
KnownBoardsFrame.table.boardName=Boardname
KnownBoardsFrame.table.description=Description
KnownBoardsFrame.table.privateKey=Private key
KnownBoardsFrame.table.publicKey=Public key
KnownBoardsFrame.title=List of known boards
KnownBoardsFrame.tooltip.showHidden=Show hidden boards
MainFrame.dialog.renameFolder=Please enter the new name
MainFrame.menu.file.statistics=Statistics
MainFrame.menu.file=File
MainFrame.menu.help.aboutFrost=About
MainFrame.menu.help.help=Help
MainFrame.menu.help.showMemoryMonitor=Show memory monitor
MainFrame.menu.help=Help
MainFrame.menu.language.bulgarian=Bulgarian
MainFrame.menu.language.danish=Danish
MainFrame.menu.language.default=Default
MainFrame.menu.language.dutch=Dutch
MainFrame.menu.language.english=English
MainFrame.menu.language.esperanto=Esperanto
MainFrame.menu.language.french=French
MainFrame.menu.language.german=German
MainFrame.menu.language.italian=Italian
MainFrame.menu.language.japanese=Japanese
MainFrame.menu.language.polish=Polish
MainFrame.menu.language.russian=Russian
MainFrame.menu.language.spanish=Spanish
MainFrame.menu.language.swedish=Swedish
MainFrame.menu.language=Language
MainFrame.menu.news.automaticBoardUpdate=Automatic board update
MainFrame.menu.news.displayBoardInformationWindow=Display board information window
MainFrame.menu.news.displayBoardUpdateInformationMenuItem=Display board update informations
MainFrame.menu.news.displayKnownBoards=Display known boards
MainFrame.menu.news.searchMessages=Search messages
MainFrame.menu.news=News
MainFrame.menu.options.manageIdentities=Manage identities
MainFrame.menu.options.manageLocalIdentities=Manage own identities
MainFrame.menu.options.preferences=Preferences
MainFrame.menu.options=Options
MainFrame.menu.plugins.translateFrost=Translate Frost into another language
MainFrame.menu.plugins=Plugins
MainFrame.openCreateMessageWindows.body=Some create message windows are still open.\nDo you want to exit anyway?
MainFrame.openCreateMessageWindows.title=Discard messages
MainFrame.runningUploadsWarning.body=Some messages are still being uploaded.\nDo you want to exit anyway?
MainFrame.runningUploadsWarning.title=Uploads underway
MainFrame.statusBar.downloading=Downloading
MainFrame.statusBar.file=file
MainFrame.statusBar.fileListDownloadQueueSize=FLQ
MainFrame.statusBar.files=files
MainFrame.statusBar.selectedBoard=Selected board
MainFrame.statusBar.TOFDO=TOFDO
MainFrame.statusBar.TOFUP=TOFUP
MainFrame.statusBar.tooltip.fileListDownloadQueueSize=<html>Number of enqueued file lists to download.<br>Once all file lists are downloaded the file search finds the most current files.</html> 
MainFrame.statusBar.uploading=Uploading
MainFrame.tabbedPane.downloads=Downloads
MainFrame.tabbedPane.news=News
MainFrame.tabbedPane.search=Search files
MainFrame.tabbedPane.sharing=My shared files
MainFrame.tabbedPane.uploads=Uploads
MainFrame.toolbar.tooltip.boardInformationWindow=Board Information Window
MainFrame.toolbar.tooltip.configureBoard=Configure board
MainFrame.toolbar.tooltip.displayListOfKnownBoards=Display list of known boards
MainFrame.toolbar.tooltip.minimizeToSystemTray=Minimize to System Tray
MainFrame.toolbar.tooltip.newBoard=New board
MainFrame.toolbar.tooltip.newFolder=New folder
MainFrame.toolbar.tooltip.removeBoard=Remove board
MainFrame.toolbar.tooltip.renameFolder=Rename folder
MainFrame.toolbar.tooltip.searchMessages=Search messages
MainFrameStatusBar.tooltip.tofdn=<html>Updating boards: {0}<br>Board update threads: {1}</html>
MainFrameStatusBar.tooltip.tofup=<html>Uploading messages: {0}<br>Waiting messages: {1}<br>Waiting attachments: {2}</html>
ManageLocalIdentities.button.close=Close
ManageLocalIdentities.button.createNewIdentity=Create Identity
ManageLocalIdentities.button.deleteIdentity=Delete Identity
ManageLocalIdentities.button.editSignature=Edit signature
ManageLocalIdentities.button.exportXml=Export into XML file
ManageLocalIdentities.button.importIdentity=Import from ''identities.xml''
ManageLocalIdentities.button.importXml=Import from XML file
ManageLocalIdentities.cannotDeleteLastIdentity.body=The last existing identity can not be deleted.
ManageLocalIdentities.cannotDeleteLastIdentity.title=Cannot delete last identity
ManageLocalIdentities.deleteIdentitiesSharedFilesConfirmation.body=The identity ''{0}'' shares {1} files which will be removed. Proceed?
ManageLocalIdentities.deleteIdentitiesSharedFilesConfirmation.title=Shared files for identity
ManageLocalIdentities.deleteIdentityConfirmation.body=Do you really want to delete the identity ''{0}''?
ManageLocalIdentities.deleteIdentityConfirmation.title=Confirm identity delete
ManageLocalIdentities.duplicateIdentity.body=Imported identity ''{0}'' is already in list.
ManageLocalIdentities.duplicateIdentity.title=Duplicate identity
ManageLocalIdentities.duplicateLocalIdentity.body=Imported identity ''{0}'' is already in list.
ManageLocalIdentities.duplicateLocalIdentity.title=Duplicate identity
ManageLocalIdentities.exportIdentitiesConfirmXmlFileOverwrite.body=Overwite XML file ''{0}'' ?
ManageLocalIdentities.exportIdentitiesConfirmXmlFileOverwrite.title=Confirm overwrite
ManageLocalIdentities.identitiesExported.body=Exported {0} identities.
ManageLocalIdentities.identitiesExported.title=Identities exported
ManageLocalIdentities.identitiesExportFailed.body=Identities export failed.
ManageLocalIdentities.identitiesExportFailed.title=Export failed
ManageLocalIdentities.identityImported.body=Imported identity ''{0}''.
ManageLocalIdentities.identityImported.title=Identity imported
ManageLocalidentities.listLabel=Own Identities
ManageLocalIdentities.localIdentitiesImported.body=Imported {0} identities.
ManageLocalIdentities.localIdentitiesImported.title=Identities imported
ManageLocalIdentities.noIdentityToImport.body=No identity to import found.
ManageLocalIdentities.noIdentityToImport.title=No identity found
ManageLocalIdentities.noLocalIdentityToImport.body=No identities to import found in XML file.
ManageLocalIdentities.noLocalIdentityToImport.title=No identities found
ManageLocalIdentities.privateKeyExportWarning.body=The private keys of your identities will be contained in the XML file!\nHandle this file carefully.
ManageLocalIdentities.privateKeyExportWarning.title=Private key warning
ManageLocalIdentities.title=Manage own identities
ManageLocalIdentitiesSignatureDialog.title=Edit signature for identity ''{0}''
MessageFrame.attachBoard.sendPrivateKeyConfirmationDialog.body=You have the private key to board ''{0}''. Are you sure you want it attached?\nIf you choose NO, only the public key will be attached.
MessageFrame.attachBoard.sendPrivateKeyConfirmationDialog.title=Include private board key?
MessageFrame.attachmentTables.popupmenu.remove=Remove
MessageFrame.board=Board
MessageFrame.boardAttachmentTable.boardname=Boardname
MessageFrame.boardAttachmentTable.description=Description
MessageFrame.boardAttachmentTable.privateKey=Private key
MessageFrame.boardAttachmentTable.publicKey=Public key
MessageFrame.createMessage.title=Create message
MessageFrame.defaultSubjectWarning.text=Do you want to enter a subject?
MessageFrame.defaultSubjectWarning.title=No subject specified!
MessageFrame.discardMessage.text=Do you want to discard your unsent message?
MessageFrame.discardMessage.title=Discard message
MessageFrame.encryptErrorNoRecipient.body=Can't encrypt the message, no recipient choosed!
MessageFrame.encryptErrorNoRecipient.title=Encrypt error
MessageFrame.fileAttachmentTable.filename=Filename
MessageFrame.fileAttachmentTable.size=Size
MessageFrame.fileChooser.title=Choose file(s) / directory(s) to attach
MessageFrame.from=From
MessageFrame.noContentError.text=You must enter new content below the separator line!
MessageFrame.noContentError.title=No new message content!
MessageFrame.noSenderError.text=You must enter a sender name!
MessageFrame.noSenderError.title=No 'From' specified!
MessageFrame.noSubjectError.text=You must enter a subject!
MessageFrame.noSubjectError.title=No subject specified!
MessageFrame.subject=Subject
MessageFrame.textTooLargeError.text=The text of the message is too large ({0} characters, {1} allowed)!
MessageFrame.textTooLargeError.title=Message text is too large!
MessageFrame.toolbar.encryptFor=Encrypt for
MessageFrame.toolbar.tooltip.addBoardAttachments=Add Board(s)
MessageFrame.toolbar.tooltip.addFileAttachments=Add attachment(s)
MessageFrame.toolbar.tooltip.chooseSmiley=Insert smiley
MessageFrame.toolbar.tooltip.sendMessage=Send message
MessagePane.boardAttachmentTable.accessRights=Access rights
MessagePane.boardAttachmentTable.boardName=Board name
MessagePane.boardAttachmentTable.description=Description
MessagePane.boardAttachmentTable.popupmenu.addBoards=Add Board(s)
MessagePane.boardAttachmentTable.popupmenu.addBoardsToFolder=Add Board(s) to folder
MessagePane.boardAttachmentTable.popupmenu.addBoardsToKnownBoards=Add board(s) to list of known boards
MessagePane.defaultText.noBoardSelected=Select a board to view its content.
MessagePane.defaultText.noMessageSelected=Select a message to view its content.
MessagePane.defaultText.welcomeMessage=Please read this!\n\nTo use Frost, you first need to select a topic from the board information window. You can open this window with the i-button above. You can send messages and files to people using the same board. It will probably take some time until the first boards show up (press the update button).
MessagePane.fileAttachmentTable.filename=Filename
MessagePane.fileAttachmentTable.key=Key
MessagePane.fileAttachmentTable.popupmenu.downloadAttachments=Download attachment(s)
MessagePane.fileAttachmentTable.popupmenu.downloadSelectedAttachment=Download selected attachment
MessagePane.fileAttachmentTable.size=Size
MessagePane.hyperlink.popupmenu.copyAllFileKeysToClipboard=Copy all file keys to clipboard
MessagePane.hyperlink.popupmenu.copyFileKeyToClipboard=Copy file key to clipboard
MessagePane.hyperlink.popupmenu.copyFreesiteLinkToClipboard=Copy freesite link to clipboard
MessagePane.hyperlink.popupmenu.copyKeyToClipboard=Copy key to clipboard
MessagePane.hyperlink.popupmenu.downloadAllFileKeys=Download all file keys
MessagePane.hyperlink.popupmenu.downloadFileKey=Download file key
MessagePane.messageTable.date=Date
MessagePane.messageTable.from=From
MessagePane.messageTable.index=Index
MessagePane.messageTable.popupmenu.collapseAll=Collapse all
MessagePane.messageTable.popupmenu.collapseThread=Collapse thread
MessagePane.messageTable.popupmenu.deleteMessage=Delete message
MessagePane.messageTable.popupmenu.expandAll=Expand all
MessagePane.messageTable.popupmenu.expandThread=Expand thread
MessagePane.messageTable.popupmenu.markAllMessagesRead=Mark ALL messages read
MessagePane.messageTable.popupmenu.markMessageUnread=Mark message unread
MessagePane.messageTable.popupmenu.markSelectedMessagesReadItem=Mark selected messages read
MessagePane.messageTable.popupmenu.markSelectedMessagesUnreadItem=Mark selected messages unread
MessagePane.messageTable.popupmenu.markThreadRead=Mark message thread read
MessagePane.messageTable.popupmenu.setToBad=Mark user BAD
MessagePane.messageTable.popupmenu.setToCheck=Mark user CHECK
MessagePane.messageTable.popupmenu.setToGood=Mark user GOOD
MessagePane.messageTable.popupmenu.setToObserve=Mark user OBSERVE
MessagePane.messageTable.popupmenu.undeleteMessage=Undelete message
MessagePane.messageTable.sig=Sig
MessagePane.messageTable.subject=Subject
MessagePane.messageText.popupmenu.copy=Copy
MessagePane.messageText.popupmenu.saveMessageToDisk=Save message to disk
MessagePane.messageText.saveDialog.title=Save message to disk
MessagePane.messageText.downloadPrefixDialog.title=Filename prefix
MessagePane.messageText.popupmenu.downloadKeysTo=Download keys to...
MessagePane.messageText.popupmenu.browse=Browse...
MessagePane.messageText.downloadPrefixDialog.body=Enter text to prefix filenames with, or leave empty for no prefix
MessagePane.missingBoardError.text=Can't reply, the target board ''{0}'' is not in your boardlist.
MessagePane.missingBoardError.title=Error
MessagePane.missingLocalIdentityError.text=Can't reply encrypted, your identity ''{0}'' that received the original message is missing!
MessagePane.missingLocalIdentityError.title=Error
MessagePane.subjectText.popupmenu.copySubjectText=Copy subject
MessagePane.toolbar.labelAllMessageCount=Msg
MessagePane.toolbar.labelNewMessageCount=New
MessagePane.toolbar.tooltip.isSigned=This message will be sent signed
MessagePane.toolbar.tooltip.isUnsigned=This message will be sent anonymously
MessagePane.toolbar.tooltip.newMessage=New message
MessagePane.toolbar.tooltip.nextUnreadMessage=Next unread message
MessagePane.toolbar.tooltip.reply=Reply
MessagePane.toolbar.tooltip.saveMessage=Save message
MessagePane.toolbar.tooltip.setToBad=Mark user BAD
MessagePane.toolbar.tooltip.setToCheck=Mark user CHECK
MessagePane.toolbar.tooltip.setToGood=Mark user GOOD
MessagePane.toolbar.tooltip.setToObserve=Mark user OBSERVE
MessagePane.toolbar.tooltip.toggleShowHyperlinks=Toggle show keys as hyperlinks
MessagePane.toolbar.tooltip.toggleShowSmileys=Toggle show smileys
MessagePane.toolbar.tooltip.toggleShowThreads=Toggle show message threads
MessagePane.toolbar.tooltip.toggleShowUnreadOnly=Show only unread messages
MessagePane.toolbar.tooltip.toggleShowFlaggedOnly=Show only flagged messages
MessagePane.toolbar.tooltip.toggleShowStarredOnly=Show only starred messages
MessagePane.toolbar.tooltip.update=Update
MessagePane.unknownRecipientError.text=Can't reply encrypted, recipients ''{0}'' public key is missing!
MessagePane.unknownRecipientError.title=Error
MessageUploader.messageToLargeError.text=<html>The data you want to upload is too large (''{0}''), ''{1}'' is allowed.<br>This should never happen, please report this to a Frost developer!</html>
MessageUploader.messageToLargeError.title=Message is too large
MessageUploadFailedDialog.body=Frost was not able to upload your message.
MessageUploadFailedDialog.option.discardMessage=Discard message
MessageUploadFailedDialog.option.retry=Retry
MessageUploadFailedDialog.option.retryOnNextStartup=Retry on next startup
MessageUploadFailedDialog.title=Upload of message failed
MessageWindow.board=Board
MessageWindow.date=Date
MessageWindow.from=From
MessageWindow.subject=Subject
MessageWindow.to=To
MessageWindow.tooltip.reply=Reply
NewBoardDialog.add=Add Board
NewBoardDialog.description=Description (Optional). Do not put private information here:
NewBoardDialog.details=Please enter the details of the new board:
NewBoardDialog.name=Name:
NewBoardDialog.title=Add a new board
Options.boardTree=Board Tree
Options.common.days=days
Options.common.minutes=minutes
Options.common.off=Off
Options.common.on=On
Options.display.boardTree=Board Tree
Options.display.choose=Choose
Options.display.confirmMarkAllMsgsRead=Show confirmation dialog for 'Mark all messages read'
Options.display.enableAntialiasingForMessageBody=Enable antialiasing for message body
Options.display.enableMultilineSelectionsInMessageTable=Enable multiline selections in message table
Options.display.fileList=File List
Options.display.fontChooser.bold=Bold
Options.display.fontChooser.boldItalic=Bold Italic
Options.display.fontChooser.italic=Italic
Options.display.fontChooser.plain=Plain
Options.display.fontChooser.sample=Sample
Options.display.fontChooser.title=Choose a Font
Options.display.fonts=Fonts
Options.display.indicateLowReceivedMessages=Indicate low received messages for identities
Options.display.indicateLowReceivedMessagesCountLightRed=Maximum messages for LIGHTRED indicator
Options.display.indicateLowReceivedMessagesCountRed=Maximum messages for RED indicator
Options.display.messageBody=Message Body
Options.display.messageList=Message List
Options.display.preventBoardtreeReordering=Prevent board tree reordering
Options.display.refreshList=Refresh List
Options.display.saveSortStates=Save information about sorted table columns
Options.display.showBoardtreeFlaggedStarredIndicators=Show flagged/starred indicators in board tree
Options.display.showBoardUpdateCount=Show board update count for session in board tree
Options.display.showCollapsedThreads=Show collapsed message threads (default is expanded)
Options.display.expandRootChildren=Expand all replies (only root thread is collapsed)
Options.display.expandUnreadThreads=Expand unread threads
Options.display.doubleClickShowsMessage=Double clicking a message shows it in a new window
Options.display.showColoredRows=Show colored rows in tables
Options.display.showHorizontalScrollbarInMessageTable=Show horizontal scrollbar in message table
Options.display.showTooltipWithBoardDescriptionInBoardTree=Show tooltip with board description in board tree
Options.display.sortThreadRootMsgsAscending=Sort message thread root messages ascending (oldest topmost)
Options.display=Display
Options.downloads.downloadDirectory=Download directory
Options.downloads.downloadPriority=Download priority
Options.downloads.enforceFrostPriorityFileDownload=Enforce Frosts priority setting (reset external changes) 
Options.downloads.filechooser.title=Select download directory
Options.downloads.logDownloads=Log successful downloads to ''localdata/Frost-Downloads.log''
Options.downloads.maximumNumberOfRetries=Maximum number of retries
Options.downloads.numberOfSimultaneousDownloads=Number of simultaneous downloads
Options.downloads.waittimeAfterEachTry=Waittime after each try
Options.downloads=Downloads
Options.downloads.trackDownloads=Warn if a file has already been downloaded previously 
Options.downloads.downloadExec=Execute program on completion
Options.expiration.archiveExpiredMessages=Archive expired messages
Options.expiration.cleanupIntervalDays=Cleanup interval
Options.expiration.cleanupNextStartup=Cleanup during next startup
Options.expiration.deleteExpiredMessages=Delete expired messages from keypool
Options.expiration.keepExpiredMessages=Keep expired messages in keypool
Options.expiration.keepFlaggedAndStarredMessages=Don't expire flagged and starred messages
Options.expiration.keepUnreadMessages=Don't expire unread messages
Options.expiration.numberOfDaysBeforeMessageExpires=Number of days before a message expires
Options.expiration.offlineFilesMaxDaysOld=Remove files from an owner after days not seen
Options.expiration.removeOfflineFilesWithKey=Also delete files from an owner when the file has a CHK key
Options.expiration=Expiration
Options.junk.hideJunkMessages=Hide JUNK messages
Options.junk.invalidSubsequentMessagesThreshold=Subsequent invalid messages threshold
Options.junk.markJunkIdentityBad=Mark identity that sent JUNK as BAD (if their current trust state is CHECK)
Options.junk.stopBoardUpdatesWhenDosed=Stop a board update when board is target of a DoS attack
Options.junk=Junk
Options.messages=Messages
Options.miscellaneous.automaticSavingInterval=Automatic saving interval
Options.miscellaneous.autoSaveLocalIdentities=Automatically backup own identities
Options.miscellaneous.compactStoragesDuringNextStartup=Compact storages during next startup
Options.miscellaneous.disableSplashscreen=Disable splashscreen
Options.miscellaneous.enableLogging=Enable logging
Options.miscellaneous.freenetFcpNode=Freenet node you have FCP access to (node:port)
Options.miscellaneous.logFileSizeLimit=Log files size limit  (in KB)
Options.miscellaneous.loggingLevel=Logging level
Options.miscellaneous.logLevel.high=High
Options.miscellaneous.logLevel.low=Low
Options.miscellaneous.logLevel.medium=Medium
Options.miscellaneous.logLevel.veryHigh=Very high
Options.miscellaneous.logLevel.veryLow=Very low
Options.miscellaneous.minimizeToSystray=Always minimize to SysTray
Options.miscellaneous.showSysTrayIcon=Show SysTray icon
Options.miscellaneous.useDDA.tooltip=If enabled Frost tests if direct disk access is possible for a node
Options.miscellaneous.useDDA=Use direct disk access if possible
Options.miscellaneous.useEditorForWritingMessages=Use editor for writing messages
Options.miscellaneous.usePersistence=Use persistence and global queue for uploads and downloads
Options.miscellaneous=Miscellaneous
Options.news.1.alwaysDownloadBackload.tooltip=<html>Enabled: each board update downloads the configured days backwards<br>Disabled: the full backward download of X days is only done every 12 hours</html>
Options.news.1.alwaysDownloadBackload=Always download all days backward
Options.news.1.messageBase=Message base
Options.news.1.messageDownloadPriority=Message download priority
Options.news.1.messageUploadPriority=Message upload priority
Options.news.1.numberOfDaysToDisplay=Number of days to display
Options.news.1.numberOfDaysToDownloadBackwards=Number of days to download backwards
Options.news.1.storeSentMessages=Save sent messages
Options.news.1.useOneConnectionForMessages=Use a single connection for message transfers (requires restart of Frost)
Options.news.2.blockMessagesWithBody=Block messages with body containing (separate by ';' )
Options.news.2.blockMessagesWithSubject=Block messages with subject containing (separate by ';' )
Options.news.2.blockMessagesWithTheseBoards=Block messages with these attached boards (separate by ';' )
Options.news.2.dontAddBoardsFromTrustStates=Don't add boards to known boards list from users with trust states
Options.news.2.hideMessagesWithTrustStates=Hide messages with trust states
Options.news.2.hideMessageCount=Hide messages from identities with fewer than X received messages (0 disables)
Options.news.2.hideMessageCountExcludePrivate=Always show private messages
Options.news.2.trustState.bad=Bad
Options.news.2.trustState.check=Check
Options.news.2.trustState.none=None (unsigned)
Options.news.2.trustState.observe=Observe
Options.news.3.acceptSignatureFormatV1=Accept old signature format (disable for spam prevention)
Options.news.3.automaticBoardUpdate=Automatic board update
Options.news.3.backgroundColorIfUpdatingBoardIsNotSelected=Background color if updating board is not selected
Options.news.3.backgroundColorIfUpdatingBoardIsSelected=Background color if updating board is selected
Options.news.3.choose=Choose
Options.news.3.color=Color
Options.news.3.colorChooserDialog.title.chooseUpdatingColorOfSelectedBoards=Choose updating color of SELECTED boards
Options.news.3.colorChooserDialog.title.chooseUpdatingColorOfUnselectedBoards=Choose updating color of NON-SELECTED boards
Options.news.3.dontHandleOwnMessagesAsNew=Don't show received messages from ME as new
Options.news.3.dontShowOwnMessagesAsMe=Don't show own messages as ME
Options.news.3.minimumUpdateInterval=Minimum update interval of a board
Options.news.3.numberOfConcurrentlyUpdatingBoards=Number of concurrently updating boards
Options.news.3.showBoardUpdateVisualization=Show board update visualization
Options.news.3.showDeletedMessages=Show deleted messages
Options.news.3.silentlyRetryFailedMessages=Silently retry failed message uploads
Options.news=News
Options.search.archiveExtension=Archive Extension
Options.search.audioExtension=Audio Extension
Options.search.disableFilesharing=Disable filesharing
Options.search.documentExtension=Document Extension
Options.search.executableExtension=Executable Extension
Options.search.imageExtension=Image Extension
Options.search.maximumSearchResults=Maximum search results
Options.search.rememberSharedFileDownloaded=Remember if a shared file was downloaded
Options.search.resetHiddenFiles=Reset hidden files status
Options.search.videoExtension=Video Extension
Options.search.confirmResetHiddenFiles.title=Show all hidden files again?
Options.search.confirmResetHiddenFiles.body=Do you really want to reset the hidden state of the search files?
Options.search=Search
Options.title=Options
Options.uploads.enforceFrostPriorityFileUpload=Enforce Frosts priority setting (reset external changes) 
Options.uploads.logUploads=Log manually added successful uploads to ''localdata/Frost-Uploads.log''
Options.uploads.maximumNumberOfRetries=Maximum number of retries
Options.uploads.numberOfSimultaneousUploads=Number of simultaneous uploads
Options.uploads.uploadPriority=Upload priority
Options.uploads.waittimeAfterEachTry=Waittime after each try
Options.uploads=Uploads
Options.uploads.removeNotExistingFiles=Periodically check for and remove non-existent/changed files in upload table
Options.uploads.uploadExec=Execute program on completion
Saver.AutoTask.message=Frost found an error while saving a resource and it will close itself.
Saver.AutoTask.title=Problem found.
SearchMessages.archive.searchInKeypoolAndArchive=Search in keypool and archive
SearchMessages.archive.searchOnlyInArchive=Search only in archive
SearchMessages.archive.searchOnlyInKeypool=Search only in keypool
SearchMessages.archive=Archive
SearchMessages.attachments.messageMustContainBoardAttachments=Message must contain board attachments
SearchMessages.attachments.messageMustContainFileAttachments=Message must contain file attachments
SearchMessages.attachments=Attachments
SearchMessages.boards.chooseBoards=Choose boards
SearchMessages.boards.searchFollowingBoards=Search following boards
SearchMessages.boards.searchInDisplayedBoards=Search in displayed boards
SearchMessages.boards=Boards
SearchMessages.button.close=Close
SearchMessages.button.help=Help
SearchMessages.button.openMessage=Open message
SearchMessages.button.search=Search
SearchMessages.button.stopSearch=Stop search
SearchMessages.date.searchAllDates=Search all dates
SearchMessages.date.searchBetweenDates=Search between dates
SearchMessages.date.searchInMessagesThatWouldBeDisplayed=Search in messages that would be displayed
SearchMessages.date.searchNumberOfDaysBackward=Search number of days backward
SearchMessages.date.to=to
SearchMessages.date=Date
SearchMessages.errorDialog.stopSearchBeforeClose=Please stop the search before closing the window.
SearchMessages.errorDialogs.invalidStartOrEndDate=Invalid start date or end date specified.
SearchMessages.errorDialogs.noBoardsChosen=No boards to search into were chosen.
SearchMessages.errorDialogs.noBoardsToChoose=There are no boards that could be choosed.
SearchMessages.errorDialogs.noTrustStateSelected=No trust state is selected.
SearchMessages.errorDialogs.startDateIsAfterEndDate=Start date is after end date.
SearchMessages.errorDialogs.title=Error
SearchMessages.label.results=Results
SearchMessages.label.searchResult=Search result
SearchMessages.resultTable.board=Board
SearchMessages.resultTable.date=Date
SearchMessages.resultTable.from=From
SearchMessages.resultTable.index=Index
SearchMessages.resultTable.sig=Sig
SearchMessages.resultTable.subject=Subject
SearchMessages.search.content=Content
SearchMessages.search.searchFlaggedMessagesOnly=Flagged messages
SearchMessages.search.searchPrivateMessagesOnly=Private messages
SearchMessages.search.searchRepliedMessagesOnly=Replied messages
SearchMessages.search.searchStarredMessagesOnly=Starred messages
SearchMessages.search.sender=Sender
SearchMessages.search.subject=Subject
SearchMessages.search.tooltip.caseSensitiv=Check to enable case sensitive search
SearchMessages.search=Search
SearchMessages.title=Search messages
SearchMessages.trustState.bad=Bad
SearchMessages.trustState.check=Check
SearchMessages.trustState.good=Good
SearchMessages.trustState.none=None (unsigned)
SearchMessages.trustState.observe=Observe
SearchMessages.trustState.searchAllMessages=Search all messages, no matter which trust state is set
SearchMessages.trustState.searchInMessagesThatWouldBeDisplayed=Search in messages that would be displayed
SearchMessages.trustState.searchOnlyInMessagesWithFollowingTrustState=Search only in messages with following trust state
SearchMessages.trustState.tampered=Tampered
SearchMessages.trustState=Trust state
SearchPane.fileTypes.allFiles=All files
SearchPane.fileTypes.archives=Archives
SearchPane.fileTypes.audio=Audio
SearchPane.fileTypes.documents=Documents
SearchPane.fileTypes.executables=Executables
SearchPane.fileTypes.images=Images
SearchPane.fileTypes.video=Video
SearchPane.resultTable.comment=Comment
SearchPane.resultTable.filename=Filename
SearchPane.resultTable.keywords=Keywords
SearchPane.resultTable.lastReceived=Last seen
SearchPane.resultTable.lastUploaded=Last uploaded
SearchPane.resultTable.popupmenu.downloadAllKeys=Download all keys
SearchPane.resultTable.popupmenu.downloadSelectedKeys=Download selected keys
SearchPane.resultTable.popupmenu.hideSelectedKeys=Hide selected keys
SearchPane.resultTable.rating=Rating
SearchPane.resultTable.size=Size
SearchPane.resultTable.sources.tooltip=<html>Sources for this file. An icon indicates that multiple owners provided additional informations.<br>Doubleclick in this column to show the details.</html>
SearchPane.resultTable.sources=Sources
SearchPane.resultTable.state=State
SearchPane.resultTable.states.downloaded=Downloaded
SearchPane.resultTable.states.downloading=Downloading
SearchPane.resultTable.states.offline=Offline
SearchPane.resultTable.states.sharing=Sharing
SearchPane.toolbar.comment=Comment
SearchPane.toolbar.keywords=Keywords
SearchPane.toolbar.name=Name
SearchPane.toolbar.owner=Owner
SearchPane.toolbar.searchOptions.hideFilesFromPeopleMarkedBad=Hide files from people marked BAD
SearchPane.toolbar.searchOptions.hideFilesFromPeopleMarkedCheck=Hide files from people marked CHECK
SearchPane.toolbar.searchOptions.hideFilesFromPeopleMarkedObserve=Hide files from people marked OBSERVE
SearchPane.toolbar.searchOptions.hideFilesWithoutChk=Hide files without CHK key
SearchPane.toolbar.searchOptionsButton=Options
SearchPane.toolbar.tooltip.clear=Clear textfields
SearchPane.toolbar.tooltip.search=Search
SearchPane.toolbar.tooltip.toggleMode=Toggle between simple and advanced search mode
SentMessages.confirmDeleteMessagesDialog.text=Do you want to permanently delete the {0} selected sent messages?
SentMessages.confirmDeleteMessagesDialog.title=Confirm delete
SentMessages.confirmDeleteOneMessageDialog.text=Do you want to permanently delete the selected sent message?
SentMessages.confirmDeleteOneMessageDialog.title=Confirm delete
SentMessages.folderName=Sent
SentMessages.label=Sent messages
SentMessages.table.board=Board
SentMessages.table.date=Date
SentMessages.table.from=From
SentMessages.table.popup.deleteMessage=Delete
SentMessages.table.subject=Subject
SentMessages.table.to=To
SharedFilesOwnerDialog.askForIdentity=Choose the owner identity for the new shared files
SharedFilesOwnerDialog.askIfToReplace=If file with same checksum does already exist
SharedFilesOwnerDialog.ignoreNewFile=Ignore the new file
SharedFilesOwnerDialog.replaceExistingFilePath=Set the file path to the path of the new file (owner is NOT changed!)
SharedFilesOwnerDialog.title=Choose an owner for the upload files
SharedFilesPane.filechooser.title=Select files to share
SharedFilesPane.fileTable.comment=Comment
SharedFilesPane.fileTable.filename=Filename
SharedFilesPane.fileTable.key=Key
SharedFilesPane.fileTable.keywords=Keywords
SharedFilesPane.fileTable.lastRequest=Last Request
SharedFilesPane.fileTable.lastShared=Last shared
SharedFilesPane.fileTable.lastUpload=Last upload
SharedFilesPane.fileTable.owner=Owner
SharedFilesPane.fileTable.path=Path
SharedFilesPane.fileTable.popupmenu.removeSelectedFiles=Remove selected files
SharedFilesPane.fileTable.popupmenu.uploadSelectedFiles=Upload selected files
SharedFilesPane.fileTable.rating=Rating
SharedFilesPane.fileTable.requestCount=Requests
SharedFilesPane.fileTable.size=Size
SharedFilesPane.fileTable.state.never=Never
SharedFilesPane.fileTable.state.unknown=Unknown
SharedFilesPane.fileTable.uploadCount=Uploads
SharedFilesPane.sizeChangedErrorDialog.text=The size of the choosed file is not the same as the size of the shared file.
SharedFilesPane.sizeChangedErrorDialog.title=Invalid file
SharedFilesPane.toolbar.files=Files
SharedFilesPane.toolbar.tooltip.browse=Add files to share
SmileyChooserDialog.title=Choose a smiley
Splashscreen.message.1=Initializing Mainframe..
Splashscreen.message.2=Leaving the gun..
Splashscreen.message.3=Taking the cannoli..
Splashscreen.message.4=Following the white rabbit..
Splashscreen.message.5=Engage!
StartupMessage.sharedFile.sharedFileLastModifiedChanged.text=<html>Shared file is invalid, remove or reshare the file.<br>Last modified date of shared file changed: {0}</html>
StartupMessage.sharedFile.sharedFileLastModifiedChanged.title=Invalid shared file
StartupMessage.sharedFile.sharedFileNotFound.text=<html>Shared file could not be located, remove or reshare the file.<br>Shared file not found: {0}</html>
StartupMessage.sharedFile.sharedFileNotFound.title=Invalid shared file
StartupMessage.sharedFile.sharedFileSizeChanged.text=<html>Shared file is invalid, remove or reshare the file.<br>Size of shared file changed: {0}</html>
StartupMessage.sharedFile.sharedFileSizeChanged.title=Invalid shared file
StartupMessage.uploadFile.boardsWithObsoleteKeysFound.text=<html>The board ''{0}'' has set an invalid public key whose encryption is not longer supported.<br>Remove the board or set a new public key.</html>
StartupMessage.uploadFile.boardsWithObsoleteKeysFound.title=Board has invalid public key
StartupMessage.uploadFile.uploadFileNotFound.text=<html>Upload file is invalid and was removed.<br>Upload file not found: {0}</html>
StartupMessage.uploadFile.uploadFileNotFound.title=Invalid upload file
StartupMessage.uploadFile.uploadFileSizeChanged.text=<html>Upload file is invalid and was removed.<br>Size of upload file changed: {0}</html>
StartupMessage.uploadFile.uploadFileSizeChanged.title=Invalid upload file
StatisticsDialog.button.close=Close
StatisticsDialog.label.archivedMessages=Archived messages
StatisticsDialog.label.files=Files
StatisticsDialog.label.fileSizes=File sizes
StatisticsDialog.label.identities=Identities
StatisticsDialog.label.messages=Messages
StatisticsDialog.label.sharers=Sharers
StatisticsDialog.title=Statistics
TargetFolderChooser.title=Choose a target folder
TOF.markAllReadConfirmation.board.content=Do you want to mark all messages in board ''{0}'' read?
TOF.markAllReadConfirmation.board.title=Mark all messages read
TOF.markAllReadConfirmation.folder.content=Do you want to mark all messages in all boards below folder ''{0}'' read?
TOF.markAllReadConfirmation.folder.title=Mark all messages read
UnsentMessages.confirmDeleteMessagesDialog.text=Do you want to permanently delete the {0} selected unsent messages?
UnsentMessages.confirmDeleteMessagesDialog.title=Confirm delete
UnsentMessages.confirmDeleteOneMessageDialog.text=Do you want to permanently delete the selected unsent message?
UnsentMessages.confirmDeleteOneMessageDialog.title=Confirm delete
UnsentMessages.deleteNotPossibleDialog.text=The message is currently uploading and cannot be deleted.
UnsentMessages.deleteNotPossibleDialog.title=Message upload already started
UnsentMessages.disableMessageUpload=Disable message upload
UnsentMessages.folderName=Outbox
UnsentMessages.label=Unsent messages
UnsentMessages.table.board=Board
UnsentMessages.table.from=From
UnsentMessages.table.popup.deleteMessage=Delete
UnsentMessages.table.state=State
UnsentMessages.table.stateUploading=Uploading
UnsentMessages.table.stateWaiting=Waiting
UnsentMessages.table.subject=Subject
UnsentMessages.table.timeAdded=Added
UnsentMessages.table.to=To
UploadPane.filechooser.title=Select files to upload
UploadPane.fileTable.blocks=Blocks
UploadPane.fileTable.enabled=Enabled
UploadPane.fileTable.filename=Filename
UploadPane.fileTable.key=Key
UploadPane.fileTable.path=Path
UploadPane.fileTable.popupmenu.enableUploads.disableAllUploads=Disable all uploads
UploadPane.fileTable.popupmenu.enableUploads.disableSelectedUploads=Disable selected uploads
UploadPane.fileTable.popupmenu.enableUploads.enableAllUploads=Enable all uploads
UploadPane.fileTable.popupmenu.enableUploads.enableSelectedUploads=Enable selected uploads
UploadPane.fileTable.popupmenu.enableUploads.invertEnabledStateForAllUploads=Invert enabled state for all uploads
UploadPane.fileTable.popupmenu.enableUploads.invertEnabledStateForSelectedUploads=Invert enabled state for selected uploads
UploadPane.fileTable.popupmenu.enableUploads=Enable uploads
UploadPane.fileTable.popupmenu.remove.removeSelectedFiles=Remove selected files
UploadPane.fileTable.popupmenu.remove=Remove
UploadPane.fileTable.popupmenu.removeFromGlobalQueue=Remove from global queue
UploadPane.fileTable.popupmenu.showSharedFile=Jump to shared file
UploadPane.fileTable.popupmenu.startEncodingOfSelectedFiles=Start encoding of selected files
UploadPane.fileTable.popupmenu.startSelectedUploadsNow=Start selected uploads immediately
UploadPane.fileTable.popupmenu.uploadSelectedFiles=Upload selected files
UploadPane.fileTable.priority=Priority
UploadPane.fileTable.shared.tooltip=An icon indicates a shared file.
UploadPane.fileTable.shared=Shared file
UploadPane.fileTable.size=Size
UploadPane.fileTable.state.done=Done
UploadPane.fileTable.state.encodeRequested=Encode requested
UploadPane.fileTable.state.encodingFile=Encoding file
UploadPane.fileTable.state.failed=Failed
UploadPane.fileTable.state.unknown=Unknown
UploadPane.fileTable.state.uploading=Uploading
UploadPane.fileTable.state.waiting=Waiting
UploadPane.fileTable.state=State
UploadPane.fileTable.tries=Tries
UploadPane.invalidUploadFilesRemoved.text=One or more upload files were not found or its size changed. The files are removed from upload table.
UploadPane.invalidUploadFilesRemoved.title=Invalid upload files
UploadPane.removeFinishedUploads=Remove finished
UploadPane.showExternalGlobalQueueItems=Show global queue
UploadPane.toolbar.tooltip.browse=Add files to upload
UploadPane.toolbar.waiting=Waiting

--------------090109000703040209010008
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
--------------090109000703040209010008
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

--------------090109000703040209010008--