Download Tracking
artur <[email protected]> Sun, 28 Mar 2010 12:59:44 +0200
| Newsgroups | gmane.network.freenet.frost.devel |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format. --------------000603090808070709060508 Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit 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 --------------000603090808070709060508 Content-Type: text/plain; name="TrackDownloads.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="TrackDownloads.patch" SW5kZXg6IHNvdXJjZS9mcm9zdC9Db3JlLmphdmENCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBzb3Vy Y2UvZnJvc3QvQ29yZS5qYXZhCShyZXZpc2lvbiAzMTgwKQ0KKysrIHNvdXJjZS9mcm9zdC9D b3JlLmphdmEJKHdvcmtpbmcgY29weSkNCkBAIC00MDAsNiArNDAwLDcgQEANCiAgICAgICAg IEFyY2hpdmVNZXNzYWdlU3RvcmFnZS5pbnN0KCkuaW5pdFN0b3JhZ2UoKTsKICAgICAgICAg SWRlbnRpdGllc1N0b3JhZ2UuaW5zdCgpLmluaXRTdG9yYWdlKCk7CiAgICAgICAgIEZpbGVM aXN0U3RvcmFnZS5pbnN0KCkuaW5pdFN0b3JhZ2UoKTsKKyAgICAgICAgVHJhY2tEb3dubG9h ZEtleXNTdG9yYWdlLmluc3QoKS5pbml0U3RvcmFnZSgpOwogCiAgICAgICAgIHNwbGFzaHNj cmVlbi5zZXRUZXh0KGxhbmd1YWdlLmdldFN0cmluZygiU3BsYXNoc2NyZWVuLm1lc3NhZ2Uu MiIpKTsKICAgICAgICAgc3BsYXNoc2NyZWVuLnNldFByb2dyZXNzKDQwKTsKQEAgLTU0Myw2 ICs1NDQsNyBAQA0KICAgICAgICAgc2F2ZXIuYWRkRXhpdFNhdmFibGUoQXJjaGl2ZU1lc3Nh Z2VTdG9yYWdlLmluc3QoKSk7CiAgICAgICAgIHNhdmVyLmFkZEV4aXRTYXZhYmxlKElkZW50 aXRpZXNTdG9yYWdlLmluc3QoKSk7CiAgICAgICAgIHNhdmVyLmFkZEV4aXRTYXZhYmxlKEZp bGVMaXN0U3RvcmFnZS5pbnN0KCkpOworICAgICAgICBzYXZlci5hZGRFeGl0U2F2YWJsZShU cmFja0Rvd25sb2FkS2V5c1N0b3JhZ2UuaW5zdCgpKTsKIAogICAgICAgICAvLyBpbnZva2Ug dGhlIG1haW5mcmFtZSB0aWNrZXIgKGJvYXJkIHVwZGF0ZXMsIGNsb2NrLCAuLi4pCiAgICAg ICAgIG1haW5mcmFtZS5zdGFydFRpY2tlclRocmVhZCgpOwpJbmRleDogc291cmNlL2Zyb3N0 L2ZpbGVUcmFuc2Zlci9kb3dubG9hZC9Eb3dubG9hZE1hbmFnZXIuamF2YQ0KPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQ0KLS0tIHNvdXJjZS9mcm9zdC9maWxlVHJhbnNmZXIvZG93bmxvYWQvRG93bmxvYWRN YW5hZ2VyLmphdmEJKHJldmlzaW9uIDMxODApDQorKysgc291cmNlL2Zyb3N0L2ZpbGVUcmFu c2Zlci9kb3dubG9hZC9Eb3dubG9hZE1hbmFnZXIuamF2YQkod29ya2luZyBjb3B5KQ0KQEAg LTI1LDYgKzI1LDcgQEANCiBpbXBvcnQgZnJvc3QuZmNwLio7CiBpbXBvcnQgZnJvc3QuZmls ZVRyYW5zZmVyLio7CiBpbXBvcnQgZnJvc3Quc3RvcmFnZS4qOworaW1wb3J0IGZyb3N0LnN0 b3JhZ2UucGVyc3QuKjsKIGltcG9ydCBmcm9zdC5zdG9yYWdlLnBlcnN0LmZpbGVsaXN0Lio7 CiBpbXBvcnQgZnJvc3QudXRpbC4qOwogaW1wb3J0IGZyb3N0LnV0aWwubW9kZWwuKjsKQEAg LTI2MCw2ICsyNjEsMTUgQEANCiAgICAgICAgICAgICAgICAgICAgICAgICBkb3dubG9hZEl0 ZW0uZ2V0RmlsZUxpc3RGaWxlT2JqZWN0KCkuZ2V0U2hhKCksCiAgICAgICAgICAgICAgICAg ICAgICAgICBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSApOwogICAgICAgICAgICAgfQor ICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBtYXliZSB0cmFjayBkb3dubG9hZAorICAg ICAgICAgICAgaWYoIENvcmUuZnJvc3RTZXR0aW5ncy5nZXRCb29sVmFsdWUoU2V0dGluZ3ND bGFzcy5UUkFDS19ET1dOTE9BRFNfRU5BQkxFRCkgJiYgIWRvd25sb2FkSXRlbS5pc1RyYWNr ZWQoKSApIHsKKyAgICAgICAgICAgICAgICBUcmFja0Rvd25sb2FkS2V5c1N0b3JhZ2UgdHJh Y2tEb3dubG9hZEtleXNTdG9yYWdlID0gVHJhY2tEb3dubG9hZEtleXNTdG9yYWdlLmluc3Qo KTsKKyAgICAgICAgICAgICAgICB0cmFja0Rvd25sb2FkS2V5c1N0b3JhZ2Uuc3RvcmVJdGVt KCAKKyAgICAgICAgICAgICAgICAgICAgbmV3IFRyYWNrRG93bmxvYWRLZXlzKCBkb3dubG9h ZEl0ZW0uZ2V0S2V5KCksIGRvd25sb2FkSXRlbS5nZXRGaWxlbmFtZSgpLCAiIiwgZG93bmxv YWRJdGVtLmdldEZpbGVTaXplKCksIGRvd25sb2FkSXRlbS5nZXREb3dubG9hZEZpbmlzaGVk TWlsbGlzKCkgKQorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgZG93bmxv YWRJdGVtLnNldFRyYWNrZWQodHJ1ZSk7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAg IC8vIG1heWJlIGxvZyBzdWNjZXNzZnVsIGRvd25sb2FkIHRvIGZpbGUgbG9jYWxkYXRhL2Rv d25sb2Fkcy50eHQKICAgICAgICAgICAgIGlmKCBDb3JlLmZyb3N0U2V0dGluZ3MuZ2V0Qm9v bFZhbHVlKFNldHRpbmdzQ2xhc3MuTE9HX0RPV05MT0FEU19FTkFCTEVEKSAmJiAhZG93bmxv YWRJdGVtLmlzTG9nZ2VkVG9GaWxlKCkgKSB7CkluZGV4OiBzb3VyY2UvZnJvc3QvZmlsZVRy YW5zZmVyL2Rvd25sb2FkL0Rvd25sb2FkTW9kZWwuamF2YQ0KPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t IHNvdXJjZS9mcm9zdC9maWxlVHJhbnNmZXIvZG93bmxvYWQvRG93bmxvYWRNb2RlbC5qYXZh CShyZXZpc2lvbiAzMTgwKQ0KKysrIHNvdXJjZS9mcm9zdC9maWxlVHJhbnNmZXIvZG93bmxv YWQvRG93bmxvYWRNb2RlbC5qYXZhCSh3b3JraW5nIGNvcHkpDQpAQCAtMjAsOSArMjAsMTQg QEANCiBpbXBvcnQgamF2YS51dGlsLio7CiBpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuKjsK IAoraW1wb3J0IGphdmF4LnN3aW5nLkpPcHRpb25QYW5lOworCitpbXBvcnQgZnJvc3QuQ29y ZTsKK2ltcG9ydCBmcm9zdC5TZXR0aW5nc0NsYXNzOwogaW1wb3J0IGZyb3N0LmZpbGVUcmFu c2Zlci4qOwogaW1wb3J0IGZyb3N0LnN0b3JhZ2UuKjsKIGltcG9ydCBmcm9zdC5zdG9yYWdl LnBlcnN0Lio7CitpbXBvcnQgZnJvc3QudXRpbC5ndWkudHJhbnNsYXRpb24uTGFuZ3VhZ2U7 CiBpbXBvcnQgZnJvc3QudXRpbC5tb2RlbC4qOwogCiAvKioKQEAgLTQ2LDggKzUxLDI5IEBA DQogCXB1YmxpYyBzeW5jaHJvbml6ZWQgYm9vbGVhbiBhZGREb3dubG9hZEl0ZW0oZmluYWwg RnJvc3REb3dubG9hZEl0ZW0gaXRlbVRvQWRkKSB7CiAKICAgICAgICAgZmluYWwgRnJvc3RG aWxlTGlzdEZpbGVPYmplY3QgZmxmVG9BZGQgPSBpdGVtVG9BZGQuZ2V0RmlsZUxpc3RGaWxl T2JqZWN0KCk7IC8vIG1heWJlIG51bGwgb2YgbWFudWFsbHkgYWRkZWQKLQotCQlmb3IgKGlu dCB4ID0gMDsgeCA8IGdldEl0ZW1Db3VudCgpOyB4KyspIHsKKyAgICAgICAgCisgICAgICAg IC8vIElmIGRvd25sb2FkIHRyYWNraW5nIGlzIGVuYWJsZWQsIGNoZWNrIGlmIGZpbGUgaGFz IG5vdCBiZWVuIGFscmVhZHkgZG93bmxvYWRlZAorICAgICAgICBpZiggQ29yZS5mcm9zdFNl dHRpbmdzLmdldEJvb2xWYWx1ZShTZXR0aW5nc0NsYXNzLlRSQUNLX0RPV05MT0FEU19FTkFC TEVEKSApIHsKKyAgICAgICAgCQorICAgICAgICAJLy8gT25seSBjaGVjayBpZiB0aGUgZmls ZSBpcyBub3QgbGluZ2VyaW5nIGFyb3VuZCBpbiBmaW5pc2hlZCBzdGF0ZS4uLgorICAgICAg ICAJaWYoICEgaXRlbVRvQWRkLmlzVHJhY2tlZCgpICl7CisJICAgICAgICAgICAgVHJhY2tE b3dubG9hZEtleXNTdG9yYWdlIHRyYWNrRG93bmxvYWRLZXlzU3RvcmFnZSA9IFRyYWNrRG93 bmxvYWRLZXlzU3RvcmFnZS5pbnN0KCk7CisJICAgICAgICAgICAgaWYoIHRyYWNrRG93bmxv YWRLZXlzU3RvcmFnZS5zZWFyY2hJdGVtKCBpdGVtVG9BZGQuZ2V0S2V5KCkgKSApIHsKKwkg ICAgICAgICAgICAJTGFuZ3VhZ2UgbGFuZ3VhZ2UgPSBMYW5ndWFnZS5nZXRJbnN0YW5jZSgp OworCSAgICAgICAgICAgIAkKKwkgICAgICAgICAgICAJLy8gQXNrIGlmIHRvIGRvd25sb2Fk IGFnYWluCisJICAgICAgICAgICAgCWlmKCBKT3B0aW9uUGFuZS5zaG93Q29uZmlybURpYWxv ZygKKwkgICAgICAgICAgICAgICAgICAgICAgICBudWxsLAorCSAgICAgICAgICAgICAgICAg ICAgICAgIGxhbmd1YWdlLmZvcm1hdE1lc3NhZ2UoIkRvd25sb2FkUGFuZS5hbHJlYWR5VHJh Y2tlZERpYWxvZy5ib2R5IiwgaXRlbVRvQWRkLmdldEtleSgpKSwKKwkgICAgICAgICAgICAg ICAgICAgICAgICBsYW5ndWFnZS5nZXRTdHJpbmcoIkRvd25sb2FkUGFuZS5hbHJlYWR5VHJh Y2tlZERpYWxvZy50aXRsZSIpLAorCSAgICAgICAgICAgICAgICAgICAgICAgIEpPcHRpb25Q YW5lLllFU19OT19PUFRJT04pID09IDEgKSB7CisJICAgICAgICAgICAgCQlyZXR1cm4gZmFs c2U7CisJICAgICAgICAgICAgCX0KKwkgICAgICAgICAgICB9CisgICAgICAgIAl9CisgICAg ICAgIH0KKyAgICAgICAgCisgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgZ2V0SXRlbUNv dW50KCk7IHgrKykgewogCQkJZmluYWwgRnJvc3REb3dubG9hZEl0ZW0gaXRlbSA9IChGcm9z dERvd25sb2FkSXRlbSkgZ2V0SXRlbUF0KHgpOwogICAgICAgICAgICAgZmluYWwgRnJvc3RG aWxlTGlzdEZpbGVPYmplY3QgZmxmID0gaXRlbS5nZXRGaWxlTGlzdEZpbGVPYmplY3QoKTsg Ly8gbWF5YmUgbnVsbCBvZiBtYW51YWxseSBhZGRlZAogCkluZGV4OiBzb3VyY2UvZnJvc3Qv ZmlsZVRyYW5zZmVyL2Rvd25sb2FkL0Rvd25sb2FkUGFuZWwuamF2YQ0KPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQ0KLS0tIHNvdXJjZS9mcm9zdC9maWxlVHJhbnNmZXIvZG93bmxvYWQvRG93bmxvYWRQYW5l bC5qYXZhCShyZXZpc2lvbiAzMTgwKQ0KKysrIHNvdXJjZS9mcm9zdC9maWxlVHJhbnNmZXIv ZG93bmxvYWQvRG93bmxvYWRQYW5lbC5qYXZhCSh3b3JraW5nIGNvcHkpDQpAQCAtMzQsNiAr MzQsNyBAQA0KIGltcG9ydCBmcm9zdC5mY3AuKjsKIGltcG9ydCBmcm9zdC5maWxlVHJhbnNm ZXIuKjsKIGltcG9ydCBmcm9zdC5maWxlVHJhbnNmZXIuY29tbW9uLio7CitpbXBvcnQgZnJv c3Quc3RvcmFnZS5wZXJzdC5UcmFja0Rvd25sb2FkS2V5c1N0b3JhZ2U7CiBpbXBvcnQgZnJv c3QudXRpbC4qOwogaW1wb3J0IGZyb3N0LnV0aWwuZ3VpLio7CiBpbXBvcnQgZnJvc3QudXRp bC5ndWkuc2VhcmNoLio7CkBAIC0yNzMsNyArMjc0LDcgQEANCiAgICAgICAgICAgICAgICAg ICAgIHNob3dJbnZhbGlkS2V5RXJyb3JEaWFsb2coa2V5KTsKICAgICAgICAgICAgICAgICAg ICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQotCisgICAgICAgICAgICAgICAgCiAg ICAgICAgICAgICAgICAgLy8gYWRkIHZhbGlkIGtleSB0byBkb3dubG9hZCB0YWJsZQogICAg ICAgICAgICAgICAgIEZpbGVUcmFuc2Zlck1hbmFnZXIuaW5zdCgpLmdldERvd25sb2FkTWFu YWdlcigpLmFkZE5ld0Rvd25sb2FkKGtleSwgZmlsZU5hbWUpOwogICAgICAgICAgICAgfQpA QCAtMjkxLDcgKzI5Miw3IEBADQogICAgICAgICAgICAgICAgIGxhbmd1YWdlLmdldFN0cmlu ZygiRG93bmxvYWRQYW5lLmludmFsaWRLZXlEaWFsb2cudGl0bGUiKSwKICAgICAgICAgICAg ICAgICBKT3B0aW9uUGFuZS5FUlJPUl9NRVNTQUdFKTsKICAgICB9Ci0KKyAgICAKIAkvKioK IAkgKiBHZXQga2V5VHlwZWQgZm9yIGRvd25sb2FkVGFibGUKIAkgKi8KSW5kZXg6IHNvdXJj ZS9mcm9zdC9maWxlVHJhbnNmZXIvZG93bmxvYWQvRnJvc3REb3dubG9hZEl0ZW0uamF2YQ0K PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQ0KLS0tIHNvdXJjZS9mcm9zdC9maWxlVHJhbnNmZXIvZG93bmxvYWQv RnJvc3REb3dubG9hZEl0ZW0uamF2YQkocmV2aXNpb24gMzE4MCkNCisrKyBzb3VyY2UvZnJv c3QvZmlsZVRyYW5zZmVyL2Rvd25sb2FkL0Zyb3N0RG93bmxvYWRJdGVtLmphdmEJKHdvcmtp bmcgY29weSkNCkBAIC01MCw2ICs1MCw3IEBADQogICAgIHByaXZhdGUgU3RyaW5nIGdxSWRl bnRpZmllciA9IG51bGw7CiAKICAgICBwcml2YXRlIGJvb2xlYW4gaXNMb2dnZWRUb0ZpbGUg PSBmYWxzZTsKKyAgICBwcml2YXRlIGJvb2xlYW4gaXNUcmFja2VkID0gZmFsc2U7CiAKICAg ICBwcml2YXRlIGludCBydW50aW1lU2Vjb25kc1dpdGhvdXRQcm9ncmVzcyA9IDA7CiAgICAg cHJpdmF0ZSBpbnQgb2xkRG9uZUJsb2NrcyA9IDA7CkBAIC0xNDQsNiArMTQ1LDcgQEANCiAg ICAgICAgICAgICBmaW5hbCBsb25nIG5ld0xhc3REb3dubG9hZFN0b3BUaW1lLAogICAgICAg ICAgICAgZmluYWwgU3RyaW5nIG5ld0dxSWQsCiAgICAgICAgICAgICBmaW5hbCBib29sZWFu IG5ld0lzTG9nZ2VkVG9GaWxlLAorICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBuZXdJc1Ry YWNrZWQsCiAgICAgICAgICAgICBmaW5hbCBpbnQgbmV3UnVudGltZVNlY29uZHNXaXRob3V0 UHJvZ3Jlc3MsCiAgICAgICAgICAgICBmaW5hbCBpbnQgbmV3T2xkRG9uZUJsb2NrcykKICAg ICB7CkBAIC0xNjAsNiArMTYyLDcgQEANCiAgICAgICAgIGxhc3REb3dubG9hZFN0b3BUaW1l ID0gbmV3TGFzdERvd25sb2FkU3RvcFRpbWU7CiAgICAgICAgIGdxSWRlbnRpZmllciA9IG5l d0dxSWQ7CiAgICAgICAgIGlzTG9nZ2VkVG9GaWxlPSBuZXdJc0xvZ2dlZFRvRmlsZTsKKyAg ICAgICAgaXNUcmFja2VkPSBuZXdJc1RyYWNrZWQ7CiAgICAgICAgIHJ1bnRpbWVTZWNvbmRz V2l0aG91dFByb2dyZXNzID0gbmV3UnVudGltZVNlY29uZHNXaXRob3V0UHJvZ3Jlc3M7CiAg ICAgICAgIG9sZERvbmVCbG9ja3MgPSBuZXdPbGREb25lQmxvY2tzOwogCkBAIC00NjMsMTAg KzQ2NiwxOCBAQA0KICAgICBwdWJsaWMgYm9vbGVhbiBpc0xvZ2dlZFRvRmlsZSgpIHsKICAg ICAgICAgcmV0dXJuIGlzTG9nZ2VkVG9GaWxlOwogICAgIH0KKyAgICAKKyAgICBwdWJsaWMg Ym9vbGVhbiBpc1RyYWNrZWQoKSB7CisgICAgICAgIHJldHVybiBpc1RyYWNrZWQ7CisgICAg fQogCiAgICAgcHVibGljIHZvaWQgc2V0TG9nZ2VkVG9GaWxlKGZpbmFsIGJvb2xlYW4gaXNM b2dnZWRUb0ZpbGUpIHsKICAgICAgICAgdGhpcy5pc0xvZ2dlZFRvRmlsZSA9IGlzTG9nZ2Vk VG9GaWxlOwogICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBzZXRUcmFja2VkKGZpbmFs IGJvb2xlYW4gaXNUcmFja2VkKSB7CisgICAgICAgIHRoaXMuaXNUcmFja2VkID0gaXNUcmFj a2VkOworICAgIH0KIAogICAgIC8qKgogICAgICAqIEByZXR1cm4gIHRoZSBydW50aW1lIG9m IHRoaXMgZG93bmxvYWQgaXRlbSBpbiBzZWNvbmRzCkluZGV4OiBzb3VyY2UvZnJvc3QvZ3Vp L3ByZWZlcmVuY2VzL0Rvd25sb2FkUGFuZWwuamF2YQ0KPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHNv dXJjZS9mcm9zdC9ndWkvcHJlZmVyZW5jZXMvRG93bmxvYWRQYW5lbC5qYXZhCShyZXZpc2lv biAzMTgwKQ0KKysrIHNvdXJjZS9mcm9zdC9ndWkvcHJlZmVyZW5jZXMvRG93bmxvYWRQYW5l bC5qYXZhCSh3b3JraW5nIGNvcHkpDQpAQCAtNTgsNiArNTgsNyBAQA0KICAgICBwcml2YXRl IGZpbmFsIEpMYWJlbCB0aHJlYWRzVGV4dExhYmVsID0gbmV3IEpMYWJlbCgpOwogCiAgICAg cHJpdmF0ZSBmaW5hbCBKQ2hlY2tCb3ggbG9nRG93bmxvYWRzQ2hlY2tCb3ggPSBuZXcgSkNo ZWNrQm94KCk7CisgICAgcHJpdmF0ZSBmaW5hbCBKQ2hlY2tCb3ggdHJhY2tEb3dubG9hZHND aGVja0JveCA9IG5ldyBKQ2hlY2tCb3goKTsKIAogICAgIHByaXZhdGUgZmluYWwgSkxhYmVs IHdhaXRUaW1lTGFiZWwgPSBuZXcgSkxhYmVsKCk7CiAgICAgcHJpdmF0ZSBmaW5hbCBKVGV4 dEZpZWxkIHdhaXRUaW1lVGV4dEZpZWxkID0gbmV3IEpUZXh0RmllbGQoNik7CkBAIC0xNjIs NiArMTYzLDEzIEBADQogICAgICAgICBjb25zdHJhaW50cy5ncmlkeCA9IDA7CiAgICAgICAg IGNvbnN0cmFpbnRzLmdyaWR3aWR0aCA9IDM7CiAgICAgICAgIGNvbnN0cmFpbnRzLmluc2V0 cyA9IGluc2V0czA1NTU7CisgICAgICAgIGNvbnN0cmFpbnRzLmFuY2hvciA9IEdyaWRCYWdD b25zdHJhaW50cy5OT1JUSFdFU1Q7CisgICAgICAgIGFkZCh0cmFja0Rvd25sb2Fkc0NoZWNr Qm94LCBjb25zdHJhaW50cyk7CisKKyAgICAgICAgY29uc3RyYWludHMuZ3JpZHkrKzsKKyAg ICAgICAgY29uc3RyYWludHMuZ3JpZHggPSAwOworICAgICAgICBjb25zdHJhaW50cy5ncmlk d2lkdGggPSAzOworICAgICAgICBjb25zdHJhaW50cy5pbnNldHMgPSBpbnNldHMwNTU1Owog ICAgICAgICBhZGQoZW5mb3JjZUZyb3N0UHJpb3JpdHlGaWxlRG93bmxvYWQsIGNvbnN0cmFp bnRzKTsKIAogICAgICAgICAvLyBnbHVlCkBAIC0xODQsNiArMTkyLDcgQEANCiAgICAgICAg IG1heFJldHJpZXNUZXh0RmllbGQuc2V0VGV4dCgiIiArIHNldHRpbmdzLmdldEludFZhbHVl KFNldHRpbmdzQ2xhc3MuRE9XTkxPQURfTUFYX1JFVFJJRVMpKTsKICAgICAgICAgd2FpdFRp bWVUZXh0RmllbGQuc2V0VGV4dCgiIiArIHNldHRpbmdzLmdldEludFZhbHVlKFNldHRpbmdz Q2xhc3MuRE9XTkxPQURfV0FJVFRJTUUpKTsKICAgICAgICAgbG9nRG93bmxvYWRzQ2hlY2tC b3guc2V0U2VsZWN0ZWQoc2V0dGluZ3MuZ2V0Qm9vbFZhbHVlKFNldHRpbmdzQ2xhc3MuTE9H X0RPV05MT0FEU19FTkFCTEVEKSk7CisgICAgICAgIHRyYWNrRG93bmxvYWRzQ2hlY2tCb3gu c2V0U2VsZWN0ZWQoc2V0dGluZ3MuZ2V0Qm9vbFZhbHVlKFNldHRpbmdzQ2xhc3MuVFJBQ0tf RE9XTkxPQURTX0VOQUJMRUQpKTsKICAgICAgICAgcHJpb3JpdHlUZXh0RmllbGQuc2V0VGV4 dChzZXR0aW5ncy5nZXRWYWx1ZShTZXR0aW5nc0NsYXNzLkZDUDJfREVGQVVMVF9QUklPX0ZJ TEVfRE9XTkxPQUQpKTsKICAgICAgICAgZW5mb3JjZUZyb3N0UHJpb3JpdHlGaWxlRG93bmxv YWQuc2V0U2VsZWN0ZWQoc2V0dGluZ3MuZ2V0Qm9vbFZhbHVlKFNldHRpbmdzQ2xhc3MuRkNQ Ml9FTkZPUkNFX0ZST1NUX1BSSU9fRklMRV9ET1dOTE9BRCkpOwogICAgIH0KQEAgLTE5OSw2 ICsyMDgsNyBAQA0KICAgICAgICAgbWF4UmV0cmllc0xhYmVsLnNldFRleHQobGFuZ3VhZ2Uu Z2V0U3RyaW5nKCJPcHRpb25zLmRvd25sb2Fkcy5tYXhpbXVtTnVtYmVyT2ZSZXRyaWVzIikp OwogCiAgICAgICAgIGxvZ0Rvd25sb2Fkc0NoZWNrQm94LnNldFRleHQobGFuZ3VhZ2UuZ2V0 U3RyaW5nKCJPcHRpb25zLmRvd25sb2Fkcy5sb2dEb3dubG9hZHMiKSk7CisgICAgICAgIHRy YWNrRG93bmxvYWRzQ2hlY2tCb3guc2V0VGV4dChsYW5ndWFnZS5nZXRTdHJpbmcoIk9wdGlv bnMuZG93bmxvYWRzLnRyYWNrRG93bmxvYWRzIikpOwogCiAgICAgICAgIGRpcmVjdG9yeUxh YmVsLnNldFRleHQobGFuZ3VhZ2UuZ2V0U3RyaW5nKCJPcHRpb25zLmRvd25sb2Fkcy5kb3du bG9hZERpcmVjdG9yeSIpKTsKICAgICAgICAgYnJvd3NlRGlyZWN0b3J5QnV0dG9uLnNldFRl eHQobGFuZ3VhZ2UuZ2V0U3RyaW5nKCJDb21tb24uYnJvd3NlIikgKyAiLi4uIik7CkBAIC0y MjYsNiArMjM2LDcgQEANCiAgICAgICAgIHNldHRpbmdzLnNldFZhbHVlKFNldHRpbmdzQ2xh c3MuRE9XTkxPQURfV0FJVFRJTUUsIHdhaXRUaW1lVGV4dEZpZWxkLmdldFRleHQoKSk7CiAK ICAgICAgICAgc2V0dGluZ3Muc2V0VmFsdWUoU2V0dGluZ3NDbGFzcy5MT0dfRE9XTkxPQURT X0VOQUJMRUQsIGxvZ0Rvd25sb2Fkc0NoZWNrQm94LmlzU2VsZWN0ZWQoKSk7CisgICAgICAg IHNldHRpbmdzLnNldFZhbHVlKFNldHRpbmdzQ2xhc3MuVFJBQ0tfRE9XTkxPQURTX0VOQUJM RUQsIHRyYWNrRG93bmxvYWRzQ2hlY2tCb3guaXNTZWxlY3RlZCgpKTsKICAgICAgICAgc2V0 dGluZ3Muc2V0VmFsdWUoU2V0dGluZ3NDbGFzcy5GQ1AyX0RFRkFVTFRfUFJJT19GSUxFX0RP V05MT0FELCBwcmlvcml0eVRleHRGaWVsZC5nZXRUZXh0KCkpOwogICAgICAgICBzZXR0aW5n cy5zZXRWYWx1ZShTZXR0aW5nc0NsYXNzLkZDUDJfRU5GT1JDRV9GUk9TVF9QUklPX0ZJTEVf RE9XTkxPQUQsIGVuZm9yY2VGcm9zdFByaW9yaXR5RmlsZURvd25sb2FkLmlzU2VsZWN0ZWQo KSk7CiAgICAgfQpJbmRleDogc291cmNlL2Zyb3N0L1NldHRpbmdzQ2xhc3MuamF2YQ0KPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQ0KLS0tIHNvdXJjZS9mcm9zdC9TZXR0aW5nc0NsYXNzLmphdmEJKHJldmlz aW9uIDMxODApDQorKysgc291cmNlL2Zyb3N0L1NldHRpbmdzQ2xhc3MuamF2YQkod29ya2lu ZyBjb3B5KQ0KQEAgLTI1Nyw2ICsyNTcsOCBAQA0KIAogICAgIHB1YmxpYyBzdGF0aWMgZmlu YWwgU3RyaW5nIExPR19ET1dOTE9BRFNfRU5BQkxFRCA9ICJsb2dEb3dubG9hZHMiOwogICAg IHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIExPR19VUExPQURTX0VOQUJMRUQgPSAibG9n VXBsb2FkcyI7CisgICAgCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFJBQ0tf RE9XTkxPQURTX0VOQUJMRUQgPSAidHJhY2tEb3dubG9hZHMiOwogCiAgICAgcHVibGljIFNl dHRpbmdzQ2xhc3MoKSB7CiAgICAgICAgIHNldHRpbmdzSGFzaCA9IG5ldyBIYXNodGFibGU8 U3RyaW5nLE9iamVjdD4oKTsKQEAgLTEwMTcsNyArMTAxOSw5IEBADQogCiAgICAgICAgIGRl ZmF1bHRzLnB1dChMT0dfRE9XTkxPQURTX0VOQUJMRUQsICJmYWxzZSIpOwogICAgICAgICBk ZWZhdWx0cy5wdXQoTE9HX1VQTE9BRFNfRU5BQkxFRCwgImZhbHNlIik7CisgICAgICAgIGRl ZmF1bHRzLnB1dChUUkFDS19ET1dOTE9BRFNfRU5BQkxFRCwgImZhbHNlIik7CiAKKyAgICAg ICAgCiAgICAgICAgIGRlZmF1bHRzLnB1dChDT05GSVJNX01BUktfQUxMX01TR1NfUkVBRCwg InRydWUiKTsKIAogICAgICAgICBkZWZhdWx0cy5wdXQoUEVSU1RfUEFHRVBPT0xTSVpFX0ZJ TEVTLCAgICAgICAgICAgICAgIjUxMiIpOwpJbmRleDogc291cmNlL2Zyb3N0L3N0b3JhZ2Uv cGVyc3QvUGVyc3RGcm9zdERvd25sb2FkSXRlbS5qYXZhDQo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g c291cmNlL2Zyb3N0L3N0b3JhZ2UvcGVyc3QvUGVyc3RGcm9zdERvd25sb2FkSXRlbS5qYXZh CShyZXZpc2lvbiAzMTgwKQ0KKysrIHNvdXJjZS9mcm9zdC9zdG9yYWdlL3BlcnN0L1BlcnN0 RnJvc3REb3dubG9hZEl0ZW0uamF2YQkod29ya2luZyBjb3B5KQ0KQEAgLTQ5LDYgKzQ5LDcg QEANCiAgICAgcHVibGljIFN0cmluZyBmaWxlTGlzdEZpbGVTaGE7DQogDQogICAgIHB1Ymxp YyBib29sZWFuIGlzTG9nZ2VkVG9GaWxlOw0KKyAgICBwdWJsaWMgYm9vbGVhbiBpc1RyYWNr ZWQ7DQogDQogICAgIHB1YmxpYyBpbnQgcnVudGltZVNlY29uZHNXaXRob3V0UHJvZ3Jlc3M7 DQogICAgIHB1YmxpYyBpbnQgb2xkRG9uZUJsb2NrczsNCkBAIC03MCw2ICs3MSw3IEBADQog ICAgICAgICBncUlkZW50aWZpZXIgPSBkbEl0ZW0uZ2V0R3FJZGVudGlmaWVyKCk7DQogICAg ICAgICBmaWxlTGlzdEZpbGVTaGEgPSAoZGxJdGVtLmdldEZpbGVMaXN0RmlsZU9iamVjdCgp PT1udWxsP251bGw6ZGxJdGVtLmdldEZpbGVMaXN0RmlsZU9iamVjdCgpLmdldFNoYSgpKTsN CiAgICAgICAgIGlzTG9nZ2VkVG9GaWxlID0gZGxJdGVtLmlzTG9nZ2VkVG9GaWxlKCk7DQor ICAgICAgICBpc1RyYWNrZWQgPSBkbEl0ZW0uaXNUcmFja2VkKCk7DQogICAgICAgICBydW50 aW1lU2Vjb25kc1dpdGhvdXRQcm9ncmVzcyA9IGRsSXRlbS5nZXRSdW50aW1lU2Vjb25kc1dp dGhvdXRQcm9ncmVzcygpOw0KICAgICAgICAgb2xkRG9uZUJsb2NrcyA9IGRsSXRlbS5nZXRP bGREb25lQmxvY2tzKCk7DQogICAgIH0NCkBAIC0xMDEsNiArMTAzLDcgQEANCiAgICAgICAg ICAgICAgICAgbGFzdERvd25sb2FkU3RvcFRpbWUsDQogICAgICAgICAgICAgICAgIGdxSWRl bnRpZmllciwNCiAgICAgICAgICAgICAgICAgaXNMb2dnZWRUb0ZpbGUsDQorICAgICAgICAg ICAgICAgIGlzVHJhY2tlZCwNCiAgICAgICAgICAgICAgICAgcnVudGltZVNlY29uZHNXaXRo b3V0UHJvZ3Jlc3MsDQogICAgICAgICAgICAgICAgIG9sZERvbmVCbG9ja3MpOw0KIA0KSW5k ZXg6IHNvdXJjZS9mcm9zdC9zdG9yYWdlL3BlcnN0L1NoYXJlZEZpbGVzQ0hLS2V5U3RvcmFn ZS5qYXZhDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09DQotLS0gc291cmNlL2Zyb3N0L3N0b3JhZ2UvcGVyc3Qv U2hhcmVkRmlsZXNDSEtLZXlTdG9yYWdlLmphdmEJKHJldmlzaW9uIDMxODApDQorKysgc291 cmNlL2Zyb3N0L3N0b3JhZ2UvcGVyc3QvU2hhcmVkRmlsZXNDSEtLZXlTdG9yYWdlLmphdmEJ KHdvcmtpbmcgY29weSkNCkBAIC0zNDksMTcgKzM0OSwxOCBAQA0KIC8vCiAvLyAgICB9CiAK LSAgICBwcm90ZWN0ZWQgZmluYWwgc3RhdGljIExhc3REb3dubG9hZFRyeVN0b3BUaW1lQ29t cGFyYXRvciBsYXN0RG93bmxvYWRUcnlTdG9wVGltZUNvbXBhcmF0b3IgPSBuZXcgTGFzdERv d25sb2FkVHJ5U3RvcFRpbWVDb21wYXJhdG9yKCk7CisgICAgCiAgICAgcHJvdGVjdGVkIHN0 YXRpYyBjbGFzcyBMYXN0RG93bmxvYWRUcnlTdG9wVGltZUNvbXBhcmF0b3IgaW1wbGVtZW50 cyBDb21wYXJhdG9yPFNoYXJlZEZpbGVzQ0hLS2V5PiB7CiAgICAgICAgIHB1YmxpYyBpbnQg Y29tcGFyZShmaW5hbCBTaGFyZWRGaWxlc0NIS0tleSBhcmcwLCBmaW5hbCBTaGFyZWRGaWxl c0NIS0tleSBhcmcxKSB7CiAgICAgICAgICAgICByZXR1cm4gTWl4ZWQuY29tcGFyZUxvbmco YXJnMC5nZXRMYXN0RG93bmxvYWRUcnlTdG9wVGltZSgpLCBhcmcxLmdldExhc3REb3dubG9h ZFRyeVN0b3BUaW1lKCkpOwogICAgICAgICB9CiAgICAgfQorICAgIHByb3RlY3RlZCBmaW5h bCBzdGF0aWMgTGFzdERvd25sb2FkVHJ5U3RvcFRpbWVDb21wYXJhdG9yIGxhc3REb3dubG9h ZFRyeVN0b3BUaW1lQ29tcGFyYXRvciA9IG5ldyBMYXN0RG93bmxvYWRUcnlTdG9wVGltZUNv bXBhcmF0b3IoKTsKIAotICAgIHByb3RlY3RlZCBmaW5hbCBzdGF0aWMgU2VlbkNvdW50Q29t cGFyYXRvciBzZWVuQ291bnRDb21wYXJhdG9yID0gbmV3IFNlZW5Db3VudENvbXBhcmF0b3Io KTsKICAgICBwcm90ZWN0ZWQgc3RhdGljIGNsYXNzIFNlZW5Db3VudENvbXBhcmF0b3IgaW1w bGVtZW50cyBDb21wYXJhdG9yPFNoYXJlZEZpbGVzQ0hLS2V5PiB7CiAgICAgICAgIHB1Ymxp YyBpbnQgY29tcGFyZShmaW5hbCBTaGFyZWRGaWxlc0NIS0tleSBhcmcwLCBmaW5hbCBTaGFy ZWRGaWxlc0NIS0tleSBhcmcxKSB7CiAgICAgICAgICAgICByZXR1cm4gTWl4ZWQuY29tcGFy ZUludChhcmcwLmdldFNlZW5Db3VudCgpLCBhcmcwLmdldFNlZW5Db3VudCgpKTsKICAgICAg ICAgfQogICAgIH0KKyAgICBwcm90ZWN0ZWQgZmluYWwgc3RhdGljIFNlZW5Db3VudENvbXBh cmF0b3Igc2VlbkNvdW50Q29tcGFyYXRvciA9IG5ldyBTZWVuQ291bnRDb21wYXJhdG9yKCk7 CiB9CkluZGV4OiBzb3VyY2UvZnJvc3Qvc3RvcmFnZS9wZXJzdC9UcmFja0Rvd25sb2FkS2V5 cy5qYXZhDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09DQotLS0gc291cmNlL2Zyb3N0L3N0b3JhZ2UvcGVyc3Qv VHJhY2tEb3dubG9hZEtleXMuamF2YQkocmV2aXNpb24gMCkNCisrKyBzb3VyY2UvZnJvc3Qv c3RvcmFnZS9wZXJzdC9UcmFja0Rvd25sb2FkS2V5cy5qYXZhCShyZXZpc2lvbiAwKQ0KQEAg LTAsMCArMSw3NyBAQA0KKy8qDQorIFRyYWNrRG93bmxvYWRLZXlzLmphdmEgLyBGcm9zdA0K KyBDb3B5cmlnaHQgKEMpIDIwMTAgIEZyb3N0IFByb2plY3QgPGp0Y2Zyb3N0LnNvdXJjZWZv cmdlLm5ldD4NCisNCisgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vcg0KKyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcw0KKyBwdWJsaXNoZWQgYnkgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZg0KKyB0aGUg TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCisNCisg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsDQorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQorIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUNCisgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KKw0KKyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KKyBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0K KyBGb3VuZGF0aW9uLCBJbmMuLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzks IFVTQS4NCisqLw0KK3BhY2thZ2UgZnJvc3Quc3RvcmFnZS5wZXJzdDsNCisNCitpbXBvcnQg b3JnLmdhcnJldC5wZXJzdC4qOw0KKw0KKy8qKg0KKyAqIFJlcHJlc2VudHMgdGhlIGl0ZW0g Zm9yIHRoZSBUcmFja0Rvd25sb2FkS2V5cy4NCisgKi8NCitwdWJsaWMgY2xhc3MgVHJhY2tE b3dubG9hZEtleXMgZXh0ZW5kcyBQZXJzaXN0ZW50IHsNCisNCisJcHJpdmF0ZSBTdHJpbmcg Y2hrS2V5Ow0KKwlwcml2YXRlIFN0cmluZyBmaWxlTmFtZTsNCisJcHJpdmF0ZSBTdHJpbmcg Ym9hcmROYW1lOw0KKyAgICBwcml2YXRlIGxvbmcgZmlsZVNpemU7IA0KKwlwcml2YXRlIGxv bmcgZG93bmxvYWRGaW5pc2hlZFRpbWU7IC8vIHdoZW4gd2FzIHRoaXMgZG93bmxvYWQgZmlu aXNoZWQNCisNCisgICAgLy8gdXNlZCBieSBwZXJzdA0KKyAgICBwdWJsaWMgVHJhY2tEb3du bG9hZEtleXMoKSB7fQ0KKyAgICANCisgICAgcHVibGljIFRyYWNrRG93bmxvYWRLZXlzKGZp bmFsIFN0cmluZyBjaGtLZXksIGZpbmFsIFN0cmluZyBmaWxlTmFtZSwgDQorICAgIAkJZmlu YWwgU3RyaW5nIGJvYXJkTmFtZSwgbG9uZyBmaWxlU2l6ZSwgbG9uZyBkb3dubG9hZEZpbmlz aGVkVGltZSkgew0KKyAgICAgICAgdGhpcy5jaGtLZXkgPSBjaGtLZXk7DQorICAgICAgICB0 aGlzLmZpbGVOYW1lID0gZmlsZU5hbWU7DQorICAgICAgICB0aGlzLmJvYXJkTmFtZSA9IGJv YXJkTmFtZTsNCisgICAgICAgIHRoaXMuZmlsZVNpemUgPSBmaWxlU2l6ZTsNCisgICAgICAg IHRoaXMuZG93bmxvYWRGaW5pc2hlZFRpbWUgPSBkb3dubG9hZEZpbmlzaGVkVGltZTsNCisg ICAgfQ0KKyAgICANCisgICAgcHVibGljIFRyYWNrRG93bmxvYWRLZXlzKGZpbmFsIFRyYWNr RG93bmxvYWRLZXlzIHRyYWNrRG93bmxvYWRLZXkpIHsNCisgICAgICAgIHRoaXMuY2hrS2V5 ID0gdHJhY2tEb3dubG9hZEtleS5jaGtLZXk7DQorICAgICAgICB0aGlzLmZpbGVOYW1lID0g dHJhY2tEb3dubG9hZEtleS5maWxlTmFtZTsNCisgICAgICAgIHRoaXMuYm9hcmROYW1lID0g dHJhY2tEb3dubG9hZEtleS5ib2FyZE5hbWU7DQorICAgICAgICB0aGlzLmZpbGVTaXplID0g dHJhY2tEb3dubG9hZEtleS5maWxlU2l6ZTsNCisgICAgICAgIHRoaXMuZG93bmxvYWRGaW5p c2hlZFRpbWUgPSB0cmFja0Rvd25sb2FkS2V5LmRvd25sb2FkRmluaXNoZWRUaW1lOw0KKyAg ICB9DQorDQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0Q2hrS2V5KCkgew0KKyAgICAgICAgcmV0 dXJuIGNoa0tleTsNCisgICAgfQ0KKyAgICANCisgICAgcHVibGljIFN0cmluZyBnZXRGaWxl TmFtZSgpIHsNCisgICAgICAgIHJldHVybiBmaWxlTmFtZTsNCisgICAgfQ0KKyAgICANCisg ICAgcHVibGljIFN0cmluZyBnZXRCb2FyZE5hbWUoKSB7DQorCQlyZXR1cm4gYm9hcmROYW1l Ow0KKwl9DQorDQorCXB1YmxpYyBsb25nIGdldEZpbGVTaXplKCkgew0KKwkJcmV0dXJuIGZp bGVTaXplOw0KKwl9DQorDQorCXB1YmxpYyB2b2lkIHNldENoa0tleShTdHJpbmcgY2hrS2V5 KSB7DQorCQl0aGlzLmNoa0tleSA9IGNoa0tleTsNCisJfQ0KKw0KKwlwdWJsaWMgbG9uZyBn ZXREb3dubG9hZEZpbmlzaGVkVGltZSgpIHsNCisgICAgICAgIHJldHVybiBkb3dubG9hZEZp bmlzaGVkVGltZTsNCisgICAgfQ0KK30NCkluZGV4OiBzb3VyY2UvZnJvc3Qvc3RvcmFnZS9w ZXJzdC9UcmFja0Rvd25sb2FkS2V5c1N0b3JhZ2UuamF2YQ0KPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t IHNvdXJjZS9mcm9zdC9zdG9yYWdlL3BlcnN0L1RyYWNrRG93bmxvYWRLZXlzU3RvcmFnZS5q YXZhCShyZXZpc2lvbiAwKQ0KKysrIHNvdXJjZS9mcm9zdC9zdG9yYWdlL3BlcnN0L1RyYWNr RG93bmxvYWRLZXlzU3RvcmFnZS5qYXZhCShyZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSwxMjUg QEANCisvKg0KKyAgVHJhY2tEb3dubG9hZEtleXNTdG9yYWdlLmphdmEgLyBGcm9zdA0KKyAg Q29weXJpZ2h0IChDKSAyMDEwICBGcm9zdCBQcm9qZWN0IDxqdGNmcm9zdC5zb3VyY2Vmb3Jn ZS5uZXQ+DQorDQorICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQorICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcw0KKyAgcHVibGlzaGVkIGJ5IHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YNCisgIHRo ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KKw0K KyAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsDQorICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KKyAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQ0KKyAgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KKw0KKyAgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCisg IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv ZnR3YXJlDQorICBGb3VuZGF0aW9uLCBJbmMuLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwg TUEgMDIxMzksIFVTQS4NCisqLw0KK3BhY2thZ2UgZnJvc3Quc3RvcmFnZS5wZXJzdDsNCisN CitpbXBvcnQgamF2YS51dGlsLio7DQorDQoraW1wb3J0IGZyb3N0Lio7DQoraW1wb3J0IGZy b3N0LnN0b3JhZ2UuKjsNCisNCitwdWJsaWMgY2xhc3MgVHJhY2tEb3dubG9hZEtleXNTdG9y YWdlIGV4dGVuZHMgQWJzdHJhY3RGcm9zdFN0b3JhZ2UgaW1wbGVtZW50cyBFeGl0U2F2YWJs ZSB7DQorDQorICAgIHByaXZhdGUgVHJhY2tEb3dubG9hZEtleXNTdG9yYWdlUm9vdCBzdG9y YWdlUm9vdCA9IG51bGw7DQorDQorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBT VE9SQUdFX0ZJTEVOQU1FID0gIlRyYWNrRG93bmxvYWRLZXlzLmRicyI7DQorDQorICAgIHBy aXZhdGUgc3RhdGljIFRyYWNrRG93bmxvYWRLZXlzU3RvcmFnZSBpbnN0YW5jZSA9IG5ldyBU cmFja0Rvd25sb2FkS2V5c1N0b3JhZ2UoKTsNCisNCisgICAgcHJvdGVjdGVkIFRyYWNrRG93 bmxvYWRLZXlzU3RvcmFnZSgpIHsNCisgICAgICAgIHN1cGVyKCk7DQorICAgIH0NCisNCisg ICAgcHVibGljIHN0YXRpYyBUcmFja0Rvd25sb2FkS2V5c1N0b3JhZ2UgaW5zdCgpIHsNCisg ICAgICAgIHJldHVybiBpbnN0YW5jZTsNCisgICAgfQ0KKw0KKyAgICBwcml2YXRlIGJvb2xl YW4gYWRkVG9JbmRpY2VzKGZpbmFsIFRyYWNrRG93bmxvYWRLZXlzIHRyYWNrRG93bmxvYWRL ZXlzKSB7DQorICAgIAlTeXN0ZW0ub3V0LnByaW50KCJERUJVRzogVHJhY2tEb3dubG9hZEtl eXNTdG9yYWdlLmFkZFRvSW5kaWNlczogIik7DQorICAgIAlTeXN0ZW0ub3V0LnByaW50bG4o dHJhY2tEb3dubG9hZEtleXMuZ2V0Q2hrS2V5KCkpOw0KKyAgICAgICAgcmV0dXJuIHN0b3Jh Z2VSb290LmRvd25sb2FkS2V5TGlzdC5wdXQodHJhY2tEb3dubG9hZEtleXMuZ2V0Q2hrS2V5 KCksIHRyYWNrRG93bmxvYWRLZXlzKTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgdm9pZCBz dG9yZUl0ZW0oZmluYWwgVHJhY2tEb3dubG9hZEtleXMgdHJhY2tEb3dubG9hZEtleXMpIHsN CisgICAgICAgIGlmKCBnZXRTdG9yYWdlKCkgPT0gbnVsbCApIHsNCisgICAgICAgICAgICBy ZXR1cm47DQorICAgICAgICB9DQorICAgICAgICBpZiggdHJhY2tEb3dubG9hZEtleXMuZ2V0 U3RvcmFnZSgpID09IG51bGwgKSB7DQorICAgICAgICAJdHJhY2tEb3dubG9hZEtleXMubWFr ZVBlcnNpc3RlbnQoZ2V0U3RvcmFnZSgpKTsNCisgICAgICAgICAgICBhZGRUb0luZGljZXMo dHJhY2tEb3dubG9hZEtleXMpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgIAl0cmFj a0Rvd25sb2FkS2V5cy5tb2RpZnkoKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICANCisg ICAgcHVibGljIGJvb2xlYW4gc2VhcmNoSXRlbShmaW5hbCBTdHJpbmcgY2hrS2V5KSB7DQor ICAgIAlTeXN0ZW0ub3V0LnByaW50KCJERUJVRzogVHJhY2tEb3dubG9hZEtleXNTdG9yYWdl LnNlYXJjaEl0ZW06ICIpOw0KKyAgICAJU3lzdGVtLm91dC5wcmludGxuKGNoa0tleSk7DQor ICAgIAlyZXR1cm4gKHN0b3JhZ2VSb290LmRvd25sb2FkS2V5TGlzdC5nZXQoY2hrS2V5KSAh PSBudWxsKTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgdm9pZCBleGl0U2F2ZSgpIHRocm93 cyBTdG9yYWdlRXhjZXB0aW9uIHsNCisgICAgICAgIGNsb3NlKCk7DQorICAgICAgICBzdG9y YWdlUm9vdCA9IG51bGw7DQorICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIklORk86IFRy YWNrRG93bmxvYWRLZXlTdG9yYWdlIGNsb3NlZC4iKTsNCisgICAgfQ0KKw0KKyAgICBAT3Zl cnJpZGUNCisgICAgcHVibGljIFN0cmluZyBnZXRTdG9yYWdlRmlsZW5hbWUoKSB7DQorICAg ICAgICByZXR1cm4gU1RPUkFHRV9GSUxFTkFNRTsNCisgICAgfQ0KKw0KKyAgICBAT3ZlcnJp ZGUNCisgICAgcHVibGljIGJvb2xlYW4gaW5pdFN0b3JhZ2UoKSB7DQorICAgICAgICBmaW5h bCBTdHJpbmcgZGF0YWJhc2VGaWxlUGF0aCA9IGJ1aWxkU3RvcmFnZVBhdGgoZ2V0U3RvcmFn ZUZpbGVuYW1lKCkpOyAvLyBwYXRoIHRvIHRoZSBkYXRhYmFzZSBmaWxlDQorICAgICAgICBm aW5hbCBsb25nIHBhZ2VQb29sU2l6ZSA9IGdldFBhZ2VQb29sU2l6ZShTZXR0aW5nc0NsYXNz LlBFUlNUX1BBR0VQT09MU0laRV9TSEFSRURGSUxFU0NIS0tFWVMpOw0KKw0KKyAgICAgICAg b3BlbihkYXRhYmFzZUZpbGVQYXRoLCBwYWdlUG9vbFNpemUsIHRydWUsIHRydWUsIGZhbHNl KTsNCisNCisgICAgICAgIHN0b3JhZ2VSb290ID0gKFRyYWNrRG93bmxvYWRLZXlzU3RvcmFn ZVJvb3QpZ2V0U3RvcmFnZSgpLmdldFJvb3QoKTsNCisgICAgICAgIGlmIChzdG9yYWdlUm9v dCA9PSBudWxsKSB7DQorICAgICAgICAgICAgLy8gU3RvcmFnZSB3YXMgbm90IGluaXRpYWxp emVkIHlldA0KKyAgICAgICAgICAgIHN0b3JhZ2VSb290ID0gbmV3IFRyYWNrRG93bmxvYWRL ZXlzU3RvcmFnZVJvb3QoKTsNCisgICAgICAgICAgICAvLyB1bmlxdWUgaW5kZXggb2YgY2hr S2V5cw0KKyAgICAgICAgICAgIHN0b3JhZ2VSb290LmRvd25sb2FkS2V5TGlzdCA9IGdldFN0 b3JhZ2UoKS5jcmVhdGVJbmRleChTdHJpbmcuY2xhc3MsIHRydWUpOw0KKyAgICAgICAgICAg IGdldFN0b3JhZ2UoKS5zZXRSb290KHN0b3JhZ2VSb290KTsNCisgICAgICAgICAgICBjb21t aXQoKTsgLy8gY29tbWl0IHRyYW5zYWN0aW9uDQorICAgICAgICB9DQorICAgICAgICBTeXN0 ZW0ub3V0LnByaW50bG4oIklORk86IFRyYWNrRG93bmxvYWRLZXlTdG9yYWdlIGluaXRpYWxp emVkLiIpOw0KKyAgICAgICAgcmV0dXJuIHRydWU7DQorICAgIH0NCisgICAgDQorICAgIC8q Kg0KKyAgICAgKiBEZWxldGUgYWxsIGVudHJpZXMgdGhhdCB3ZXJlIGRvd25sb2FkZWQgbWF4 RGF5c09sZCBkYXllcyBhZ28uDQorICAgICAqIEByZXR1cm4gIGNvdW50IG9mIGRlbGV0ZWQg cm93cw0KKyAgICAgKi8NCisgICAgcHVibGljIGludCBjbGVhbnVwVGFibGUoZmluYWwgaW50 IG1heERheXNPbGQpIHsNCisNCisgICAgICAgIGZpbmFsIGxvbmcgbWluVmFsID0gU3lzdGVt LmN1cnJlbnRUaW1lTWlsbGlzKCkgLSAobWF4RGF5c09sZCAqIDI0TCAqIDYwTCAqIDYwTCAq IDEwMDBMKTsNCisNCisgICAgICAgIC8vIGRlbGV0ZSBhbGwgaXRlbXMgd2l0aCBsYXN0U2Vl biA8IG1pblZhbCwgYnV0IGxhc3RTZWVuID4gMA0KKyAgICAgICAgaW50IGRlbGV0ZWRDb3Vu dCA9IDA7DQorDQorICAgICAgICBiZWdpbkV4Y2x1c2l2ZVRocmVhZFRyYW5zYWN0aW9uKCk7 DQorICAgICAgICB0cnkgew0KKyAgICAgICAgICAgIGZpbmFsIEl0ZXJhdG9yPFRyYWNrRG93 bmxvYWRLZXlzPiBpID0gc3RvcmFnZVJvb3QuZG93bmxvYWRLZXlMaXN0Lml0ZXJhdG9yKCk7 DQorICAgICAgICAgICAgd2hpbGUoaS5oYXNOZXh0KCkpIHsNCisgICAgICAgICAgICAgICAg ZmluYWwgVHJhY2tEb3dubG9hZEtleXMgc2ZrID0gaS5uZXh0KCk7DQorICAgICAgICAgICAg ICAgIGlmKCBzZmsuZ2V0RG93bmxvYWRGaW5pc2hlZFRpbWUoKSA+IDAgJiYgc2ZrLmdldERv d25sb2FkRmluaXNoZWRUaW1lKCkgPCBtaW5WYWwgKSB7DQorICAgICAgICAgICAgICAgICAg ICBpLnJlbW92ZSgpOyAvLyByZW1vdmUgZnJvbSBpdGVyYXRlZCBpbmRleA0KKyAgICAgICAg ICAgICAgICAgICAgc2ZrLmRlYWxsb2NhdGUoKTsgLy8gcmVtb3ZlIGZyb20gU3RvcmFnZQ0K KyAgICAgICAgICAgICAgICAgICAgZGVsZXRlZENvdW50Kys7DQorICAgICAgICAgICAgICAg IH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9IGZpbmFsbHkgew0KKyAgICAgICAgICAg IGVuZFRocmVhZFRyYW5zYWN0aW9uKCk7DQorICAgICAgICB9DQorDQorICAgICAgICByZXR1 cm4gZGVsZXRlZENvdW50Ow0KKyAgICB9DQorfQ0KSW5kZXg6IHNvdXJjZS9mcm9zdC9zdG9y YWdlL3BlcnN0L1RyYWNrRG93bmxvYWRLZXlzU3RvcmFnZVJvb3QuamF2YQ0KPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQ0KLS0tIHNvdXJjZS9mcm9zdC9zdG9yYWdlL3BlcnN0L1RyYWNrRG93bmxvYWRLZXlz U3RvcmFnZVJvb3QuamF2YQkocmV2aXNpb24gMCkNCisrKyBzb3VyY2UvZnJvc3Qvc3RvcmFn ZS9wZXJzdC9UcmFja0Rvd25sb2FkS2V5c1N0b3JhZ2VSb290LmphdmEJKHJldmlzaW9uIDAp DQpAQCAtMCwwICsxLDI4IEBADQorLyoNCisgIFRyYWNrRG93bmxvYWRLZXlzU3RvcmFnZVJv b3QuamF2YSAvIEZyb3N0DQorICBDb3B5cmlnaHQgKEMpIDIwMTAgIEZyb3N0IFByb2plY3Qg PGp0Y2Zyb3N0LnNvdXJjZWZvcmdlLm5ldD4NCisNCisgIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3INCisgIG1vZGlmeSBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz DQorICBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMiBvZg0KKyAgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uDQorDQorICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQorICBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0 aGUgR05VDQorICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQor DQorICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQ0KKyAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwg d3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCisgIEZvdW5kYXRpb24sIEluYy4sIDY3NSBN YXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLg0KKyovDQorcGFja2FnZSBmcm9z dC5zdG9yYWdlLnBlcnN0Ow0KKw0KK2ltcG9ydCBvcmcuZ2FycmV0LnBlcnN0Lio7DQorDQor cHVibGljIGNsYXNzIFRyYWNrRG93bmxvYWRLZXlzU3RvcmFnZVJvb3QgZXh0ZW5kcyBQZXJz aXN0ZW50IHsNCisgICAgDQorICAgIHB1YmxpYyBUcmFja0Rvd25sb2FkS2V5c1N0b3JhZ2VS b290KCkge30NCisgICAgDQorICAgIEluZGV4PFRyYWNrRG93bmxvYWRLZXlzPiBkb3dubG9h ZEtleUxpc3Q7DQorfQ0KSW5kZXg6IHNvdXJjZS9pMThuL2xhbmdyZXMucHJvcGVydGllcw0K PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQ0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5 IHR5cGUuDQpzdm46bWltZS10eXBlID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtDQo= --------------000603090808070709060508 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ------------------------------------------------------------------------------ Download Intel® 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 --------------000603090808070709060508 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 --------------000603090808070709060508--