Re: Session token generation in JMeter with Run Thread Groups Consecutively option ON
Felix Schumacher <[email protected]> Sat, 7 Mar 2026 20:21:18 +0100
| Newsgroups | gmane.comp.jakarta.jmeter.user |
|---|---|
| Message-ID | <[email protected]> |
--------------ingTpYQP660A5DsFaIdkRihp Content-Type: multipart/mixed; boundary="------------wS4dU3EXTcs9jACtgjHTqYPG"; protected-headers="v1" From: Felix Schumacher <[email protected]> To: [email protected] Message-ID: <[email protected]> Subject: Re: Session token generation in JMeter with Run Thread Groups Consecutively option ON References: <CAC-b7DTqO-gkJokPZTU2U4Dsc9RUcsvwwetg+W8a5KL77zeBNQ@mail.gmail.com> In-Reply-To: <CAC-b7DTqO-gkJokPZTU2U4Dsc9RUcsvwwetg+W8a5KL77zeBNQ@mail.gmail.com> --------------wS4dU3EXTcs9jACtgjHTqYPG Content-Type: multipart/mixed; boundary="------------S8Af4Mxsb2quSZd0eUbHsdFr" --------------S8Af4Mxsb2quSZd0eUbHsdFr Content-Type: multipart/alternative; boundary="------------P1JH0wn00lh8SLmuGgZwSpuX" --------------P1JH0wn00lh8SLmuGgZwSpuX Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 SGksDQoNCkpNZXRlciBkb2Vzbid0IHByb3ZpZGUgdGhhdCBmdW5jdGlvbmFsaXR5IG91dCBv ZiB0aGUgYm94LiBJZiB5b3UgYXJlIA0KYWJsZSB0byBwcm9ncmFtIHlvdSB0b2tlbiByZWZy ZXNoIGluIGdyb292eSAob3IgYW55IG90aGVyIEpTUjIyMyANClNhbXBsZXIpLCB5b3UgY2Fu IHRha2UgYSBsb29rIGF0IHRoZSBhdHRhY2hlZCB0ZXN0IHBsYW4uDQoNClRoYXQgdGVzdCBw bGFuIGNyZWF0ZXMgYSBkYWVtb24gdGhyZWFkIGZyb20gYSBKU1IyMjMgR3Jvb3Z5IFNhbXBs ZXIgdGhhdCANCnJlZnJlc2hlcyBPTkUgdG9rZW4gZXZlcnkgNTAgbWludXRlcyBmb3IgYXMg bG9uZyB0aGUgdGhyZWFkIGlzIHJ1bm5pbmcuIA0KVGhhdCBoYXBwZW5zIGluIGEgc2V0dXAg dGhyZWFkIGdyb3VwIGFuZCB0aGVyZWZvcmUgYmVmb3JlIGFueSBvdGhlciANCnRocmVhZCBn cm91cC4NCg0KSW4gdGhlIHR3byBzaW11bGF0ZWQgdGhyZWFkIGdyb3VwcyBJIHBsYWNlZCBh IEpTUjIyMyBHcm9vdnkgU2FtcGxlciB0byANCmdldCB0aGUgdG9rZW4gZnJvbSB0aGUgcHJv cHMgdmFyaWFibGUgKGl0IGlzIGN1cnJlbnRseSBhIEF0b21pY1JlZmVyZW5jZSANCnRvIG1h a2UgaXQgc2FmZXIgZm9yIEpNZXRlcnMgYWNjZXNzIG1vZGVsKS4NClRoZW4gYSBodHRwIHNh bXBsZXIgKHRoYXQgd2lsbCBmYWlsIGJlY2F1c2Ugb2YgYW4gaW52YWxpZCBETlMgbmFtZSkg dXNlcyANCnRoYXQgdG9rZW4uDQoNCklmIHRocmVhZCBncm91cCB1c2VzIGEgbG90IG9mIHRp bWUgZm9yIGVhY2ggcm91bmQsIHBsYWNlIHRoZSBnZXQgdG9rZW4gDQpsb2dpYyBpbnNpZGUg YSBKU1IyMjMgVGltZXIuIFRoYXQgc2hvdWxkIHJ1biBiZWZvcmUgZWFjaCBzYW1wbGVyIG9u IHRoZSANCnNhbWUgbGV2ZWwgb3IgZG93bndhcmRzLg0KDQpXaGVuIGFsbCB0aHJlYWQgZ3Jv dXBzIGFyZSBkb25lIHRoZSB0ZWFyZG93biB0aHJlYWQgZ3JvdXAgd2lsbCB0cnkgdG8gDQpz dG9wIHRoZSBkYWVtb24gdGhyZWFkIHdpdGggYW5vdGhlciBncm9vdnkgc2NyaXB0Lg0KDQpN YXliZSB0aGF0IGhlbHBzIHlvdSBhcyBhIHN0YXJ0aW5nIHBvaW50Lg0KDQpGZWxpeA0KDQpB bSAyNy4wMi4yNiB1bSAxNjo0NSBzY2hyaWViIEFiaGl0b3NoIFBhdGlsOg0KPiBIaSwNCj4N Cj4gSSBoYXZlIDQgdGhyZWFkIGdyb3VwcyBpbiBteSBKTWV0ZXIgc2NyaXB0Lg0KPiBSdW4g VGhyZWFkIEdyb3VwcyBDb25zZWN1dGl2ZWx5IChPbmUgYXQgYSB0aW1lKSBvcHRpb24gaXMg T04uDQo+DQo+IE5vdyBJIHdhbnQgdG8gYWRkIDEgbW9yZSB0aHJlYWQgZ3JvdXAgYXQgdGhl IHRvcCBmb3Igc2Vzc2lvbiB0b2tlbg0KPiBnZW5lcmF0aW9uLiBJdCBzaG91bGQgZ2VuZXJh dGUgZnJlc2ggc2Vzc2lvbiB0b2tlbiBhZnRlciBldmVyeSA1NSBtaW51dGVzLg0KPg0KPiBJ IGNhbid0IHVuY2hlY2sgUnVuIFRocmVhZCBHcm91cHMgQ29uc2VjdXRpdmVseSBvcHRpb24u DQo+DQo+IEhvdyBjYW4gSSBoYW5kbGUgdGhpcz8NCj4NCj4gVGhhbmtzIGluIGFkdmFuY2Uu DQo+DQo+IEFiaGl0b3NoIFBhdGlsDQo+DQo= --------------P1JH0wn00lh8SLmuGgZwSpuX Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable <!DOCTYPE html> <html> <head> <meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3DUTF= -8"> </head> <body> <p>Hi,</p> <p>JMeter doesn't provide that functionality out of the box. If you are able to program you token refresh in groovy (or any other JSR223 Sampler), you can take a look at the attached test plan.<br>= <br> That test plan creates a daemon thread from a JSR223 Groovy Sampler that refreshes ONE token every 50 minutes for as long the thread is running. That happens in a setup thread group and therefore before any other thread group.</p> <p>In the two simulated thread groups I placed a JSR223 Groovy Sampler to get the token from the props variable (it is currently a AtomicReference to make it safer for JMeters access model).<br> Then a http sampler (that will fail because of an invalid DNS name) uses that token.</p> <p>If thread group uses a lot of time for each round, place the get token logic inside a JSR223 Timer. That should run before each sampler on the same level or downwards.</p> <p>When all thread groups are done the teardown thread group will try to stop the daemon thread with another groovy script.</p> <p>Maybe that helps you as a starting point.</p> <p>Felix</p> <div class=3D"moz-cite-prefix">Am 27.02.26 um 16:45 schrieb Abhitosh Patil:<br> </div> <blockquote type=3D"cite" cite=3D"mid:[email protected]= l.com"> <pre wrap=3D"" class=3D"moz-quote-pre">Hi, I have 4 thread groups in my JMeter script. Run Thread Groups Consecutively (One at a time) option is ON. Now I want to add 1 more thread group at the top for session token generation. It should generate fresh session token after every 55 minutes= =2E I can't uncheck Run Thread Groups Consecutively option. How can I handle this? Thanks in advance. Abhitosh Patil </pre> </blockquote> </body> </html> --------------P1JH0wn00lh8SLmuGgZwSpuX-- --------------S8Af4Mxsb2quSZd0eUbHsdFr Content-Type: text/xml; charset=UTF-8; name="concurrency.jmx" Content-Disposition: attachment; filename="concurrency.jmx" Content-Transfer-Encoding: base64 PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4KPGptZXRlclRlc3RQbGFu IHZlcnNpb249IjEuMiIgcHJvcGVydGllcz0iNS4wIiBqbWV0ZXI9IjYuMC4wLVNOQVBTSE9U IGNmZGMxYjMiPgogIDxoYXNoVHJlZT4KICAgIDxUZXN0UGxhbiBndWljbGFzcz0iVGVzdFBs YW5HdWkiIHRlc3RjbGFzcz0iVGVzdFBsYW4iIHRlc3RuYW1lPSJUZXN0cGxhbiI+CiAgICAg IDxib29sUHJvcCBuYW1lPSJUZXN0UGxhbi5zZXJpYWxpemVfdGhyZWFkZ3JvdXBzIj50cnVl PC9ib29sUHJvcD4KICAgICAgPGJvb2xQcm9wIG5hbWU9IlRlc3RQbGFuLnRlYXJEb3duX29u X3NodXRkb3duIj50cnVlPC9ib29sUHJvcD4KICAgICAgPGVsZW1lbnRQcm9wIG5hbWU9IlRl c3RQbGFuLnVzZXJfZGVmaW5lZF92YXJpYWJsZXMiIGVsZW1lbnRUeXBlPSJBcmd1bWVudHMi IGd1aWNsYXNzPSJBcmd1bWVudHNQYW5lbCIgdGVzdGNsYXNzPSJBcmd1bWVudHMiIHRlc3Ru YW1lPSJCZW51dHplciBkZWZpbmllcnRlIFZhcmlhYmxlbiI+CiAgICAgICAgPGNvbGxlY3Rp b25Qcm9wIG5hbWU9IkFyZ3VtZW50cy5hcmd1bWVudHMiLz4KICAgICAgPC9lbGVtZW50UHJv cD4KICAgIDwvVGVzdFBsYW4+CiAgICA8aGFzaFRyZWU+CiAgICAgIDxSZXN1bHRDb2xsZWN0 b3IgZ3VpY2xhc3M9IlZpZXdSZXN1bHRzRnVsbFZpc3VhbGl6ZXIiIHRlc3RjbGFzcz0iUmVz dWx0Q29sbGVjdG9yIiB0ZXN0bmFtZT0iVmlldyBSZXN1bHRzIFRyZWUiPgogICAgICAgIDxi b29sUHJvcCBuYW1lPSJSZXN1bHRDb2xsZWN0b3IuZXJyb3JfbG9nZ2luZyI+ZmFsc2U8L2Jv b2xQcm9wPgogICAgICAgIDxvYmpQcm9wPgogICAgICAgICAgPG5hbWU+c2F2ZUNvbmZpZzwv bmFtZT4KICAgICAgICAgIDx2YWx1ZSBjbGFzcz0iU2FtcGxlU2F2ZUNvbmZpZ3VyYXRpb24i PgogICAgICAgICAgICA8dGltZT50cnVlPC90aW1lPgogICAgICAgICAgICA8bGF0ZW5jeT50 cnVlPC9sYXRlbmN5PgogICAgICAgICAgICA8dGltZXN0YW1wPnRydWU8L3RpbWVzdGFtcD4K ICAgICAgICAgICAgPHN1Y2Nlc3M+dHJ1ZTwvc3VjY2Vzcz4KICAgICAgICAgICAgPGxhYmVs PnRydWU8L2xhYmVsPgogICAgICAgICAgICA8Y29kZT50cnVlPC9jb2RlPgogICAgICAgICAg ICA8bWVzc2FnZT50cnVlPC9tZXNzYWdlPgogICAgICAgICAgICA8dGhyZWFkTmFtZT50cnVl PC90aHJlYWROYW1lPgogICAgICAgICAgICA8ZGF0YVR5cGU+dHJ1ZTwvZGF0YVR5cGU+CiAg ICAgICAgICAgIDxlbmNvZGluZz5mYWxzZTwvZW5jb2Rpbmc+CiAgICAgICAgICAgIDxhc3Nl cnRpb25zPnRydWU8L2Fzc2VydGlvbnM+CiAgICAgICAgICAgIDxzdWJyZXN1bHRzPnRydWU8 L3N1YnJlc3VsdHM+CiAgICAgICAgICAgIDxyZXNwb25zZURhdGE+ZmFsc2U8L3Jlc3BvbnNl RGF0YT4KICAgICAgICAgICAgPHNhbXBsZXJEYXRhPmZhbHNlPC9zYW1wbGVyRGF0YT4KICAg ICAgICAgICAgPHhtbD5mYWxzZTwveG1sPgogICAgICAgICAgICA8ZmllbGROYW1lcz50cnVl PC9maWVsZE5hbWVzPgogICAgICAgICAgICA8cmVzcG9uc2VIZWFkZXJzPmZhbHNlPC9yZXNw b25zZUhlYWRlcnM+CiAgICAgICAgICAgIDxyZXF1ZXN0SGVhZGVycz5mYWxzZTwvcmVxdWVz dEhlYWRlcnM+CiAgICAgICAgICAgIDxyZXNwb25zZURhdGFPbkVycm9yPmZhbHNlPC9yZXNw b25zZURhdGFPbkVycm9yPgogICAgICAgICAgICA8c2F2ZUFzc2VydGlvblJlc3VsdHNGYWls dXJlTWVzc2FnZT50cnVlPC9zYXZlQXNzZXJ0aW9uUmVzdWx0c0ZhaWx1cmVNZXNzYWdlPgog ICAgICAgICAgICA8YXNzZXJ0aW9uc1Jlc3VsdHNUb1NhdmU+MDwvYXNzZXJ0aW9uc1Jlc3Vs dHNUb1NhdmU+CiAgICAgICAgICAgIDxieXRlcz50cnVlPC9ieXRlcz4KICAgICAgICAgICAg PHNlbnRCeXRlcz50cnVlPC9zZW50Qnl0ZXM+CiAgICAgICAgICAgIDx1cmw+dHJ1ZTwvdXJs PgogICAgICAgICAgICA8dGhyZWFkQ291bnRzPnRydWU8L3RocmVhZENvdW50cz4KICAgICAg ICAgICAgPGlkbGVUaW1lPnRydWU8L2lkbGVUaW1lPgogICAgICAgICAgICA8Y29ubmVjdFRp bWU+dHJ1ZTwvY29ubmVjdFRpbWU+CiAgICAgICAgICA8L3ZhbHVlPgogICAgICAgIDwvb2Jq UHJvcD4KICAgICAgICA8c3RyaW5nUHJvcCBuYW1lPSJmaWxlbmFtZSIvPgogICAgICA8L1Jl c3VsdENvbGxlY3Rvcj4KICAgICAgPGhhc2hUcmVlLz4KICAgICAgPFNldHVwVGhyZWFkR3Jv dXAgZ3VpY2xhc3M9IlNldHVwVGhyZWFkR3JvdXBHdWkiIHRlc3RjbGFzcz0iU2V0dXBUaHJl YWRHcm91cCIgdGVzdG5hbWU9InNldFVwIFRocmVhZCBHcm91cCI+CiAgICAgICAgPGludFBy b3AgbmFtZT0iVGhyZWFkR3JvdXAubnVtX3RocmVhZHMiPjE8L2ludFByb3A+CiAgICAgICAg PGludFByb3AgbmFtZT0iVGhyZWFkR3JvdXAucmFtcF90aW1lIj4xPC9pbnRQcm9wPgogICAg ICAgIDxib29sUHJvcCBuYW1lPSJUaHJlYWRHcm91cC5zYW1lX3VzZXJfb25fbmV4dF9pdGVy YXRpb24iPnRydWU8L2Jvb2xQcm9wPgogICAgICAgIDxzdHJpbmdQcm9wIG5hbWU9IlRocmVh ZEdyb3VwLm9uX3NhbXBsZV9lcnJvciI+Y29udGludWU8L3N0cmluZ1Byb3A+CiAgICAgICAg PGVsZW1lbnRQcm9wIG5hbWU9IlRocmVhZEdyb3VwLm1haW5fY29udHJvbGxlciIgZWxlbWVu dFR5cGU9Ikxvb3BDb250cm9sbGVyIiBndWljbGFzcz0iTG9vcENvbnRyb2xQYW5lbCIgdGVz dGNsYXNzPSJMb29wQ29udHJvbGxlciIgdGVzdG5hbWU9IlNjaGxlaWZlbi1Db250cm9sbGVy IChMb29wIENvbnRyb2xsZXIpIj4KICAgICAgICAgIDxzdHJpbmdQcm9wIG5hbWU9Ikxvb3BD b250cm9sbGVyLmxvb3BzIj4xPC9zdHJpbmdQcm9wPgogICAgICAgICAgPGJvb2xQcm9wIG5h bWU9Ikxvb3BDb250cm9sbGVyLmNvbnRpbnVlX2ZvcmV2ZXIiPmZhbHNlPC9ib29sUHJvcD4K ICAgICAgICA8L2VsZW1lbnRQcm9wPgogICAgICA8L1NldHVwVGhyZWFkR3JvdXA+CiAgICAg IDxoYXNoVHJlZT4KICAgICAgICA8SlNSMjIzU2FtcGxlciBndWljbGFzcz0iVGVzdEJlYW5H VUkiIHRlc3RjbGFzcz0iSlNSMjIzU2FtcGxlciIgdGVzdG5hbWU9IlN0YXJ0IERhZW1vbiI+ CiAgICAgICAgICA8c3RyaW5nUHJvcCBuYW1lPSJjYWNoZUtleSI+dHJ1ZTwvc3RyaW5nUHJv cD4KICAgICAgICAgIDxzdHJpbmdQcm9wIG5hbWU9ImZpbGVuYW1lIi8+CiAgICAgICAgICA8 c3RyaW5nUHJvcCBuYW1lPSJwYXJhbWV0ZXJzIi8+CiAgICAgICAgICA8c3RyaW5nUHJvcCBu YW1lPSJzY3JpcHQiPmltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMKaW1w b3J0IGphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0CmltcG9ydCBqYXZhLnV0aWwuY29u Y3VycmVudC5hdG9taWMuQXRvbWljUmVmZXJlbmNlCmltcG9ydCBqYXZhLnV0aWwuY29uY3Vy cmVudC5hdG9taWMuQXRvbWljTG9uZwoKZGVmIHRva2VuUmVmID0gbmV3IEF0b21pY1JlZmVy ZW5jZSZsdDtTdHJpbmc+KCkKZGVmIGxhc3RSZWZyZXNoVGltZSA9IG5ldyBBdG9taWNMb25n KFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpKQoKLy8gVG9rZW4gcmVmcmVzaCBmdW5jdGlv biAocmVwbGFjZSB3aXRoIHlvdXIgYXV0aCBsb2dpYykKZGVmIHJlZnJlc2hUb2tlbiA9IHsK ICAgIHRyeSB7CiAgICAgICAgLy8g8J+UkCBFeGFtcGxlOiBDYWxsIHlvdXIgYXV0aCBlbmRw b2ludCBoZXJlCiAgICAgICAgLy8gRm9yIGRlbW86IGdlbmVyYXRlIGEgZHVtbXkgdG9rZW4g KyB0aW1lc3RhbXAKICAgICAgICBkZWYgbmV3VG9rZW4gPSAiQmVhcmVyXyIgKyBTeXN0ZW0u Y3VycmVudFRpbWVNaWxsaXMoKSArICJfIiArIChNYXRoLnJhbmRvbSgpICogMTAwMDApLnRv SW50ZWdlcigpCiAgICAgICAgZGVmIG5vdyA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygp CgogICAgICAgIC8vIExvY2stZnJlZSBhdG9taWMgdXBkYXRlcwogICAgICAgIHRva2VuUmVm LnNldChuZXdUb2tlbikKICAgICAgICBsYXN0UmVmcmVzaFRpbWUuc2V0KG5vdykKCiAgICAg ICAgbG9nLmluZm8oIltUb2tlbiBEYWVtb25dIFRva2VuIHJlZnJlc2hlZCBhdCB7fSIsIG5l dyBEYXRlKG5vdykpCiAgICAgICAgbG9nLmRlYnVnKCJOZXcgdG9rZW4gKHRydW5jYXRlZCk6 IHt9Li4uIiwgbmV3VG9rZW4udGFrZSgyMCkpCiAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkg ewogICAgICAgIGxvZy5lcnJvcigiW1Rva2VuIERhZW1vbl0gVG9rZW4gcmVmcmVzaCBmYWls ZWQiLCBlKQogICAgfQp9CgovLyBDcmVhdGUgZGFlbW9uIHRocmVhZCAobm9uLWJsb2NraW5n LCB3b24ndCBwcmV2ZW50IEpNZXRlciBzaHV0ZG93bikKZGVmIGRhZW1vbiA9IEV4ZWN1dG9y cy5uZXdTaW5nbGVUaHJlYWRTY2hlZHVsZWRFeGVjdXRvciB7IHIgLT4KICAgIGRlZiB0ID0g bmV3IFRocmVhZChyKQogICAgdC5zZXROYW1lKCJUb2tlblJlZnJlc2gtRGFlbW9uIikKICAg IHQuc2V0RGFlbW9uKHRydWUpICAvLyDinIUgQ3JpdGljYWw6IGFsbG93IEpNZXRlciB0byBl eGl0CiAgICB0Cn0KCi8vIFNjaGVkdWxlOiByZWZyZXNoIGV2ZXJ5IDUwIG1pbnV0ZXMgKDMw MDAgc2VjKSwgc3RhcnQgaW1tZWRpYXRlbHkKZGFlbW9uLnNjaGVkdWxlV2l0aEZpeGVkRGVs YXkocmVmcmVzaFRva2VuLCAwLCA1MCAqIDYwLCBUaW1lVW5pdC5TRUNPTkRTKQoKLy8gRXhw b3NlIHZpYSBwcm9wcyBmb3IgcmV1c2UgaW4gb3RoZXIgVEdzCnByb3BzLnB1dCgnVE9LRU5f UkVGJywgdG9rZW5SZWYpCnByb3BzLnB1dCgnVE9LRU5fVElNRVNUQU1QX1JFRicsIGxhc3RS ZWZyZXNoVGltZSkKcHJvcHMucHV0KCdUT0tFTl9EQUVNT04nLCBkYWVtb24pCgpsb2cuaW5m bygiW1Rva2VuIERhZW1vbl0gU3RhcnRlZCDigJQgbmV4dCByZWZyZXNoIGluIH41MCBtaW4i KTwvc3RyaW5nUHJvcD4KICAgICAgICAgIDxzdHJpbmdQcm9wIG5hbWU9InNjcmlwdExhbmd1 YWdlIj5ncm9vdnk8L3N0cmluZ1Byb3A+CiAgICAgICAgPC9KU1IyMjNTYW1wbGVyPgogICAg ICAgIDxoYXNoVHJlZS8+CiAgICAgIDwvaGFzaFRyZWU+CiAgICAgIDxQb3N0VGhyZWFkR3Jv dXAgZ3VpY2xhc3M9IlBvc3RUaHJlYWRHcm91cEd1aSIgdGVzdGNsYXNzPSJQb3N0VGhyZWFk R3JvdXAiIHRlc3RuYW1lPSJ0ZWFyRG93biBUaHJlYWQgR3JvdXAiPgogICAgICAgIDxpbnRQ cm9wIG5hbWU9IlRocmVhZEdyb3VwLm51bV90aHJlYWRzIj4xPC9pbnRQcm9wPgogICAgICAg IDxpbnRQcm9wIG5hbWU9IlRocmVhZEdyb3VwLnJhbXBfdGltZSI+MTwvaW50UHJvcD4KICAg ICAgICA8Ym9vbFByb3AgbmFtZT0iVGhyZWFkR3JvdXAuc2FtZV91c2VyX29uX25leHRfaXRl cmF0aW9uIj50cnVlPC9ib29sUHJvcD4KICAgICAgICA8c3RyaW5nUHJvcCBuYW1lPSJUaHJl YWRHcm91cC5vbl9zYW1wbGVfZXJyb3IiPmNvbnRpbnVlPC9zdHJpbmdQcm9wPgogICAgICAg IDxlbGVtZW50UHJvcCBuYW1lPSJUaHJlYWRHcm91cC5tYWluX2NvbnRyb2xsZXIiIGVsZW1l bnRUeXBlPSJMb29wQ29udHJvbGxlciIgZ3VpY2xhc3M9Ikxvb3BDb250cm9sUGFuZWwiIHRl c3RjbGFzcz0iTG9vcENvbnRyb2xsZXIiIHRlc3RuYW1lPSJTY2hsZWlmZW4tQ29udHJvbGxl ciAoTG9vcCBDb250cm9sbGVyKSI+CiAgICAgICAgICA8c3RyaW5nUHJvcCBuYW1lPSJMb29w Q29udHJvbGxlci5sb29wcyI+MTwvc3RyaW5nUHJvcD4KICAgICAgICAgIDxib29sUHJvcCBu YW1lPSJMb29wQ29udHJvbGxlci5jb250aW51ZV9mb3JldmVyIj5mYWxzZTwvYm9vbFByb3A+ CiAgICAgICAgPC9lbGVtZW50UHJvcD4KICAgICAgPC9Qb3N0VGhyZWFkR3JvdXA+CiAgICAg IDxoYXNoVHJlZT4KICAgICAgICA8SlNSMjIzU2FtcGxlciBndWljbGFzcz0iVGVzdEJlYW5H VUkiIHRlc3RjbGFzcz0iSlNSMjIzU2FtcGxlciIgdGVzdG5hbWU9IlN0b3AgRGFlbW9uIj4K ICAgICAgICAgIDxzdHJpbmdQcm9wIG5hbWU9InNjcmlwdExhbmd1YWdlIj5ncm9vdnk8L3N0 cmluZ1Byb3A+CiAgICAgICAgICA8c3RyaW5nUHJvcCBuYW1lPSJwYXJhbWV0ZXJzIi8+CiAg ICAgICAgICA8c3RyaW5nUHJvcCBuYW1lPSJmaWxlbmFtZSIvPgogICAgICAgICAgPHN0cmlu Z1Byb3AgbmFtZT0iY2FjaGVLZXkiPnRydWU8L3N0cmluZ1Byb3A+CiAgICAgICAgICA8c3Ry aW5nUHJvcCBuYW1lPSJzY3JpcHQiPmltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5UaW1l VW5pdAoKZGVmIGRhZW1vbiA9IHByb3BzLmdldCgnVE9LRU5fREFFTU9OJykKaWYgKGRhZW1v bikgewogICAgbG9nLmluZm8oIltTaHV0ZG93bl0gU3RvcHBpbmcgdG9rZW4gcmVmcmVzaCBk YWVtb24uLi4iKQogICAgZGFlbW9uLnNodXRkb3duKCkKICAgIGlmICghZGFlbW9uLmF3YWl0 VGVybWluYXRpb24oNSwgVGltZVVuaXQuU0VDT05EUykpIHsKICAgICAgICBkYWVtb24uc2h1 dGRvd25Ob3coKQogICAgICAgIGlmICghZGFlbW9uLmF3YWl0VGVybWluYXRpb24oMywgVGlt ZVVuaXQuU0VDT05EUykpIHsKICAgICAgICAgICAgbG9nLmVycm9yKCJEYWVtb24gZGlkIG5v dCB0ZXJtaW5hdGUhIikKICAgICAgICB9CiAgICB9CiAgICBsb2cuaW5mbygiW1NodXRkb3du XSBEYWVtb24gc3RvcHBlZCBjbGVhbmx5IikKfSBlbHNlIHsKICAgIGxvZy53YXJuKCJObyBk YWVtb24gZm91bmQgdG8gc3RvcCIpCn08L3N0cmluZ1Byb3A+CiAgICAgICAgPC9KU1IyMjNT YW1wbGVyPgogICAgICAgIDxoYXNoVHJlZS8+CiAgICAgIDwvaGFzaFRyZWU+CiAgICAgIDxU aHJlYWRHcm91cCBndWljbGFzcz0iVGhyZWFkR3JvdXBHdWkiIHRlc3RjbGFzcz0iVGhyZWFk R3JvdXAiIHRlc3RuYW1lPSJUaHJlYWQtR3JvdXAgT05FIj4KICAgICAgICA8aW50UHJvcCBu YW1lPSJUaHJlYWRHcm91cC5udW1fdGhyZWFkcyI+MjwvaW50UHJvcD4KICAgICAgICA8aW50 UHJvcCBuYW1lPSJUaHJlYWRHcm91cC5yYW1wX3RpbWUiPjU8L2ludFByb3A+CiAgICAgICAg PGJvb2xQcm9wIG5hbWU9IlRocmVhZEdyb3VwLnNhbWVfdXNlcl9vbl9uZXh0X2l0ZXJhdGlv biI+dHJ1ZTwvYm9vbFByb3A+CiAgICAgICAgPHN0cmluZ1Byb3AgbmFtZT0iVGhyZWFkR3Jv dXAub25fc2FtcGxlX2Vycm9yIj5jb250aW51ZTwvc3RyaW5nUHJvcD4KICAgICAgICA8ZWxl bWVudFByb3AgbmFtZT0iVGhyZWFkR3JvdXAubWFpbl9jb250cm9sbGVyIiBlbGVtZW50VHlw ZT0iTG9vcENvbnRyb2xsZXIiIGd1aWNsYXNzPSJMb29wQ29udHJvbFBhbmVsIiB0ZXN0Y2xh c3M9Ikxvb3BDb250cm9sbGVyIiB0ZXN0bmFtZT0iU2NobGVpZmVuLUNvbnRyb2xsZXIgKExv b3AgQ29udHJvbGxlcikiPgogICAgICAgICAgPHN0cmluZ1Byb3AgbmFtZT0iTG9vcENvbnRy b2xsZXIubG9vcHMiPjI8L3N0cmluZ1Byb3A+CiAgICAgICAgICA8Ym9vbFByb3AgbmFtZT0i TG9vcENvbnRyb2xsZXIuY29udGludWVfZm9yZXZlciI+ZmFsc2U8L2Jvb2xQcm9wPgogICAg ICAgIDwvZWxlbWVudFByb3A+CiAgICAgIDwvVGhyZWFkR3JvdXA+CiAgICAgIDxoYXNoVHJl ZT4KICAgICAgICA8SlNSMjIzU2FtcGxlciBndWljbGFzcz0iVGVzdEJlYW5HVUkiIHRlc3Rj bGFzcz0iSlNSMjIzU2FtcGxlciIgdGVzdG5hbWU9IkdldCBUb2tlbiBmcm9tIERhZW1vbiBP TkUiPgogICAgICAgICAgPHN0cmluZ1Byb3AgbmFtZT0ic2NyaXB0TGFuZ3VhZ2UiPmdyb292 eTwvc3RyaW5nUHJvcD4KICAgICAgICAgIDxzdHJpbmdQcm9wIG5hbWU9InBhcmFtZXRlcnMi Lz4KICAgICAgICAgIDxzdHJpbmdQcm9wIG5hbWU9ImZpbGVuYW1lIi8+CiAgICAgICAgICA8 c3RyaW5nUHJvcCBuYW1lPSJjYWNoZUtleSI+dHJ1ZTwvc3RyaW5nUHJvcD4KICAgICAgICAg IDxzdHJpbmdQcm9wIG5hbWU9InNjcmlwdCI+aW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50 LkV4ZWN1dG9ycwppbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQKaW1wb3J0 IGphdmEudXRpbC5jb25jdXJyZW50LmF0b21pYy5BdG9taWNSZWZlcmVuY2UKaW1wb3J0IGph dmEudXRpbC5jb25jdXJyZW50LmF0b21pYy5BdG9taWNMb25nCgpkZWYgdG9rZW5SZWYgPSBw cm9wcy5nZXQoJ1RPS0VOX1JFRicpIGFzIEF0b21pY1JlZmVyZW5jZSZsdDtTdHJpbmc+CmRl ZiB0aW1lUmVmID0gcHJvcHMuZ2V0KCdUT0tFTl9USU1FU1RBTVBfUkVGJykgYXMgQXRvbWlj TG9uZwoKaWYgKCF0b2tlblJlZikgewogICAgbG9nLmVycm9yKCLinYwgVG9rZW4gcmVmIG5v dCBmb3VuZCEgRGlkIHNldFVwVEcgcnVuPyIpCiAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRl RXhjZXB0aW9uKCJUb2tlbiBtYW5hZ2VyIG5vdCBpbml0aWFsaXplZCIpCn0KCmRlZiB0b2tl biA9IHRva2VuUmVmLmdldCgpCmlmICghdG9rZW4pIHsKICAgIGxvZy53YXJuKCLimqDvuI8g VG9rZW4gaXMgbnVsbCDigJQgd2FpdGluZyBmb3IgZmlyc3QgcmVmcmVzaCAoZGFlbW9uIG1h eSBiZSBzdGFydGluZykiKQp9CgpkZWYgbGFzdCA9IHRpbWVSZWY/LmdldCgpID86IDBMCmRl ZiBhZ2VNaW4gPSAoU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkgLSBsYXN0KSAvIDYwMDAw LjAKCnZhcnMucHV0KCdTRVNTSU9OX1RPS0VOJywgdG9rZW4pCmxvZy5pbmZvKCJbVEcxXSBU b2tlbiBsb2FkZWQgKGFnZToge30gbWluKSB8IEFjdGl2ZSB7fSIsIGFnZU1pbi5yb3VuZCgy KSwgIXRva2VuPy5pc0VtcHR5KCkpPC9zdHJpbmdQcm9wPgogICAgICAgIDwvSlNSMjIzU2Ft cGxlcj4KICAgICAgICA8aGFzaFRyZWUvPgogICAgICAgIDxIVFRQU2FtcGxlclByb3h5IGd1 aWNsYXNzPSJIdHRwVGVzdFNhbXBsZUd1aSIgdGVzdGNsYXNzPSJIVFRQU2FtcGxlclByb3h5 IiB0ZXN0bmFtZT0iVXNlIFRva2VuIE9ORSI+CiAgICAgICAgICA8c3RyaW5nUHJvcCBuYW1l PSJIVFRQU2FtcGxlci5kb21haW4iPnNvbWUuc2VydmVyLmludmFsaWQ8L3N0cmluZ1Byb3A+ CiAgICAgICAgICA8c3RyaW5nUHJvcCBuYW1lPSJIVFRQU2FtcGxlci5wcm90b2NvbCI+aHR0 cHM8L3N0cmluZ1Byb3A+CiAgICAgICAgICA8Ym9vbFByb3AgbmFtZT0iSFRUUFNhbXBsZXIu Zm9sbG93X3JlZGlyZWN0cyI+dHJ1ZTwvYm9vbFByb3A+CiAgICAgICAgICA8c3RyaW5nUHJv cCBuYW1lPSJIVFRQU2FtcGxlci5tZXRob2QiPkdFVDwvc3RyaW5nUHJvcD4KICAgICAgICAg IDxib29sUHJvcCBuYW1lPSJIVFRQU2FtcGxlci51c2Vfa2VlcGFsaXZlIj50cnVlPC9ib29s UHJvcD4KICAgICAgICAgIDxib29sUHJvcCBuYW1lPSJIVFRQU2FtcGxlci5wb3N0Qm9keVJh dyI+ZmFsc2U8L2Jvb2xQcm9wPgogICAgICAgICAgPGVsZW1lbnRQcm9wIG5hbWU9IkhUVFBz YW1wbGVyLkFyZ3VtZW50cyIgZWxlbWVudFR5cGU9IkFyZ3VtZW50cyIgZ3VpY2xhc3M9IkhU VFBBcmd1bWVudHNQYW5lbCIgdGVzdGNsYXNzPSJBcmd1bWVudHMiIHRlc3RuYW1lPSJCZW51 dHplciBkZWZpbmllcnRlIFZhcmlhYmxlbiI+CiAgICAgICAgICAgIDxjb2xsZWN0aW9uUHJv cCBuYW1lPSJBcmd1bWVudHMuYXJndW1lbnRzIj4KICAgICAgICAgICAgICA8ZWxlbWVudFBy b3AgbmFtZT0iVE9LRU4iIGVsZW1lbnRUeXBlPSJIVFRQQXJndW1lbnQiPgogICAgICAgICAg ICAgICAgPGJvb2xQcm9wIG5hbWU9IkhUVFBBcmd1bWVudC5hbHdheXNfZW5jb2RlIj5mYWxz ZTwvYm9vbFByb3A+CiAgICAgICAgICAgICAgICA8c3RyaW5nUHJvcCBuYW1lPSJBcmd1bWVu dC52YWx1ZSI+JHtTRVNTSU9OX1RPS0VOfTwvc3RyaW5nUHJvcD4KICAgICAgICAgICAgICAg IDxzdHJpbmdQcm9wIG5hbWU9IkFyZ3VtZW50Lm1ldGFkYXRhIj49PC9zdHJpbmdQcm9wPgog ICAgICAgICAgICAgICAgPGJvb2xQcm9wIG5hbWU9IkhUVFBBcmd1bWVudC51c2VfZXF1YWxz Ij50cnVlPC9ib29sUHJvcD4KICAgICAgICAgICAgICAgIDxzdHJpbmdQcm9wIG5hbWU9IkFy Z3VtZW50Lm5hbWUiPlRPS0VOPC9zdHJpbmdQcm9wPgogICAgICAgICAgICAgIDwvZWxlbWVu dFByb3A+CiAgICAgICAgICAgIDwvY29sbGVjdGlvblByb3A+CiAgICAgICAgICA8L2VsZW1l bnRQcm9wPgogICAgICAgIDwvSFRUUFNhbXBsZXJQcm94eT4KICAgICAgICA8aGFzaFRyZWUv PgogICAgICA8L2hhc2hUcmVlPgogICAgICA8VGhyZWFkR3JvdXAgZ3VpY2xhc3M9IlRocmVh ZEdyb3VwR3VpIiB0ZXN0Y2xhc3M9IlRocmVhZEdyb3VwIiB0ZXN0bmFtZT0iVGhyZWFkLUdy b3VwIFRXTyI+CiAgICAgICAgPGludFByb3AgbmFtZT0iVGhyZWFkR3JvdXAubnVtX3RocmVh ZHMiPjI8L2ludFByb3A+CiAgICAgICAgPGludFByb3AgbmFtZT0iVGhyZWFkR3JvdXAucmFt cF90aW1lIj41PC9pbnRQcm9wPgogICAgICAgIDxib29sUHJvcCBuYW1lPSJUaHJlYWRHcm91 cC5zYW1lX3VzZXJfb25fbmV4dF9pdGVyYXRpb24iPnRydWU8L2Jvb2xQcm9wPgogICAgICAg IDxzdHJpbmdQcm9wIG5hbWU9IlRocmVhZEdyb3VwLm9uX3NhbXBsZV9lcnJvciI+Y29udGlu dWU8L3N0cmluZ1Byb3A+CiAgICAgICAgPGVsZW1lbnRQcm9wIG5hbWU9IlRocmVhZEdyb3Vw Lm1haW5fY29udHJvbGxlciIgZWxlbWVudFR5cGU9Ikxvb3BDb250cm9sbGVyIiBndWljbGFz cz0iTG9vcENvbnRyb2xQYW5lbCIgdGVzdGNsYXNzPSJMb29wQ29udHJvbGxlciIgdGVzdG5h bWU9IlNjaGxlaWZlbi1Db250cm9sbGVyIChMb29wIENvbnRyb2xsZXIpIj4KICAgICAgICAg IDxzdHJpbmdQcm9wIG5hbWU9Ikxvb3BDb250cm9sbGVyLmxvb3BzIj4yPC9zdHJpbmdQcm9w PgogICAgICAgICAgPGJvb2xQcm9wIG5hbWU9Ikxvb3BDb250cm9sbGVyLmNvbnRpbnVlX2Zv cmV2ZXIiPmZhbHNlPC9ib29sUHJvcD4KICAgICAgICA8L2VsZW1lbnRQcm9wPgogICAgICA8 L1RocmVhZEdyb3VwPgogICAgICA8aGFzaFRyZWU+CiAgICAgICAgPEpTUjIyM1NhbXBsZXIg Z3VpY2xhc3M9IlRlc3RCZWFuR1VJIiB0ZXN0Y2xhc3M9IkpTUjIyM1NhbXBsZXIiIHRlc3Ru YW1lPSJHZXQgVG9rZW4gZnJvbSBEYWVtb24gVFdPIj4KICAgICAgICAgIDxzdHJpbmdQcm9w IG5hbWU9InNjcmlwdExhbmd1YWdlIj5ncm9vdnk8L3N0cmluZ1Byb3A+CiAgICAgICAgICA8 c3RyaW5nUHJvcCBuYW1lPSJwYXJhbWV0ZXJzIi8+CiAgICAgICAgICA8c3RyaW5nUHJvcCBu YW1lPSJmaWxlbmFtZSIvPgogICAgICAgICAgPHN0cmluZ1Byb3AgbmFtZT0iY2FjaGVLZXki PnRydWU8L3N0cmluZ1Byb3A+CiAgICAgICAgICA8c3RyaW5nUHJvcCBuYW1lPSJzY3JpcHQi PmltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMKaW1wb3J0IGphdmEudXRp bC5jb25jdXJyZW50LlRpbWVVbml0CmltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5hdG9t aWMuQXRvbWljUmVmZXJlbmNlCmltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5hdG9taWMu QXRvbWljTG9uZwoKZGVmIHRva2VuUmVmID0gcHJvcHMuZ2V0KCdUT0tFTl9SRUYnKSBhcyBB dG9taWNSZWZlcmVuY2UmbHQ7U3RyaW5nPgpkZWYgdGltZVJlZiA9IHByb3BzLmdldCgnVE9L RU5fVElNRVNUQU1QX1JFRicpIGFzIEF0b21pY0xvbmcKCmlmICghdG9rZW5SZWYpIHsKICAg IGxvZy5lcnJvcigi4p2MIFRva2VuIHJlZiBub3QgZm91bmQhIERpZCBzZXRVcFRHIHJ1bj8i KQogICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiVG9rZW4gbWFuYWdlciBu b3QgaW5pdGlhbGl6ZWQiKQp9CgpkZWYgdG9rZW4gPSB0b2tlblJlZi5nZXQoKQppZiAoIXRv a2VuKSB7CiAgICBsb2cud2Fybigi4pqg77iPIFRva2VuIGlzIG51bGwg4oCUIHdhaXRpbmcg Zm9yIGZpcnN0IHJlZnJlc2ggKGRhZW1vbiBtYXkgYmUgc3RhcnRpbmcpIikKfQoKZGVmIGxh c3QgPSB0aW1lUmVmPy5nZXQoKSA/OiAwTApkZWYgYWdlTWluID0gKFN5c3RlbS5jdXJyZW50 VGltZU1pbGxpcygpIC0gbGFzdCkgLyA2MDAwMC4wCgp2YXJzLnB1dCgnU0VTU0lPTl9UT0tF TicsIHRva2VuKQpsb2cuaW5mbygi4pyFIFtURzFdIFRva2VuIGxvYWRlZCAoYWdlOiB7fSBt aW4pIHwgQWN0aXZlIHt9IiwgYWdlTWluLnJvdW5kKDIpLCAhdG9rZW4/LmlzRW1wdHkoKSk8 L3N0cmluZ1Byb3A+CiAgICAgICAgPC9KU1IyMjNTYW1wbGVyPgogICAgICAgIDxoYXNoVHJl ZS8+CiAgICAgICAgPEhUVFBTYW1wbGVyUHJveHkgZ3VpY2xhc3M9Ikh0dHBUZXN0U2FtcGxl R3VpIiB0ZXN0Y2xhc3M9IkhUVFBTYW1wbGVyUHJveHkiIHRlc3RuYW1lPSJVc2UgVG9rZW4g VFdPIj4KICAgICAgICAgIDxzdHJpbmdQcm9wIG5hbWU9IkhUVFBTYW1wbGVyLmRvbWFpbiI+ c29tZS5zZXJ2ZXIuaW52YWxpZDwvc3RyaW5nUHJvcD4KICAgICAgICAgIDxzdHJpbmdQcm9w IG5hbWU9IkhUVFBTYW1wbGVyLnByb3RvY29sIj5odHRwczwvc3RyaW5nUHJvcD4KICAgICAg ICAgIDxib29sUHJvcCBuYW1lPSJIVFRQU2FtcGxlci5mb2xsb3dfcmVkaXJlY3RzIj50cnVl PC9ib29sUHJvcD4KICAgICAgICAgIDxzdHJpbmdQcm9wIG5hbWU9IkhUVFBTYW1wbGVyLm1l dGhvZCI+R0VUPC9zdHJpbmdQcm9wPgogICAgICAgICAgPGJvb2xQcm9wIG5hbWU9IkhUVFBT YW1wbGVyLnVzZV9rZWVwYWxpdmUiPnRydWU8L2Jvb2xQcm9wPgogICAgICAgICAgPGJvb2xQ cm9wIG5hbWU9IkhUVFBTYW1wbGVyLnBvc3RCb2R5UmF3Ij5mYWxzZTwvYm9vbFByb3A+CiAg ICAgICAgICA8ZWxlbWVudFByb3AgbmFtZT0iSFRUUHNhbXBsZXIuQXJndW1lbnRzIiBlbGVt ZW50VHlwZT0iQXJndW1lbnRzIiBndWljbGFzcz0iSFRUUEFyZ3VtZW50c1BhbmVsIiB0ZXN0 Y2xhc3M9IkFyZ3VtZW50cyIgdGVzdG5hbWU9IkJlbnV0emVyIGRlZmluaWVydGUgVmFyaWFi bGVuIj4KICAgICAgICAgICAgPGNvbGxlY3Rpb25Qcm9wIG5hbWU9IkFyZ3VtZW50cy5hcmd1 bWVudHMiPgogICAgICAgICAgICAgIDxlbGVtZW50UHJvcCBuYW1lPSJUT0tFTiIgZWxlbWVu dFR5cGU9IkhUVFBBcmd1bWVudCI+CiAgICAgICAgICAgICAgICA8Ym9vbFByb3AgbmFtZT0i SFRUUEFyZ3VtZW50LmFsd2F5c19lbmNvZGUiPmZhbHNlPC9ib29sUHJvcD4KICAgICAgICAg ICAgICAgIDxzdHJpbmdQcm9wIG5hbWU9IkFyZ3VtZW50LnZhbHVlIj4ke1NFU1NJT05fVE9L RU59PC9zdHJpbmdQcm9wPgogICAgICAgICAgICAgICAgPHN0cmluZ1Byb3AgbmFtZT0iQXJn dW1lbnQubWV0YWRhdGEiPj08L3N0cmluZ1Byb3A+CiAgICAgICAgICAgICAgICA8Ym9vbFBy b3AgbmFtZT0iSFRUUEFyZ3VtZW50LnVzZV9lcXVhbHMiPnRydWU8L2Jvb2xQcm9wPgogICAg ICAgICAgICAgICAgPHN0cmluZ1Byb3AgbmFtZT0iQXJndW1lbnQubmFtZSI+VE9LRU48L3N0 cmluZ1Byb3A+CiAgICAgICAgICAgICAgPC9lbGVtZW50UHJvcD4KICAgICAgICAgICAgPC9j b2xsZWN0aW9uUHJvcD4KICAgICAgICAgIDwvZWxlbWVudFByb3A+CiAgICAgICAgPC9IVFRQ U2FtcGxlclByb3h5PgogICAgICAgIDxoYXNoVHJlZS8+CiAgICAgIDwvaGFzaFRyZWU+CiAg ICA8L2hhc2hUcmVlPgogIDwvaGFzaFRyZWU+Cjwvam1ldGVyVGVzdFBsYW4+Cg== --------------S8Af4Mxsb2quSZd0eUbHsdFr Content-Type: application/pgp-keys; name="OpenPGP_0xEA6C3728EA91C4AF.asc" Content-Disposition: attachment; filename="OpenPGP_0xEA6C3728EA91C4AF.asc" Content-Description: OpenPGP public key Content-Transfer-Encoding: quoted-printable -----BEGIN PGP PUBLIC KEY BLOCK----- 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 nyAr19E4ak4DNpOwsCg=3D =3DqyMV -----END PGP PUBLIC KEY BLOCK----- --------------S8Af4Mxsb2quSZd0eUbHsdFr-- --------------wS4dU3EXTcs9jACtgjHTqYPG-- --------------ingTpYQP660A5DsFaIdkRihp Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature.asc" -----BEGIN PGP SIGNATURE----- wsF5BAABCAAjFiEEDs+MuKeoubnIVCacFeyN7C+3FrcFAmmseq4FAwAAAAAACgkQFeyN7C+3Frd/ MBAA76+2oBHBeqHYtq+ojo668EsniXOZNUIuAzN5e/YFhp34bBn5fwcqhUNB0A0KjFRAojTFNQ8d CG8j/3p8lB+5vtr+Dawl5ExrozmOWK/hsAHupi4J8fgprgpizxtEAe03J1AccloBAmfgLan27X6D bi7dNFPP+lqA8e/BQ3hyHvP3XLa/4fhavgJQ+Poz7JjtS39jiloBSfp3jhfVgnvF4WDTt6r2uEvz feYsP6PbhCCBCZtcdzNYuBO+ZKGqG/DC1ZeCt0n0k/R1TQu40PtzEAKBfrItKKYfCzp7P8o67lp4 FrGDeEwrsqOlW1Gs510w8zLm1Z59qWaa8IizvcdC4jeAjnsng50TbbyIkVmD0+6G6y3VUMKkgHI4 vFCw/9FHVZAMXZlvbATy+OZhMjIzRyvMSHRAQ2MFsoUwLIzr027vI0iONg1EIYbyQhh/4a9U1h9I uLgCF7iSHTRbe5j8xdds7gHAs8/tZ0zrxUbCrWjwc70fix5WACFJDX/ZfaQ5yyESaSvFggSYyh9W LmypSgfZnfS2rwal5QZFUD0bNowHaDA/0KcpFoGxuQeJTQZmMQvYYiMvFpGL8Oxuq2MHveL49wT9 6wV6ICmX+NS3q5b8qSNqKM9i1sFFcHHmB6QkxYOf/ek7ie9lGamVYX3akpI7ZldD0G7vLxCcPkME p6w= =8EPj -----END PGP SIGNATURE----- --------------ingTpYQP660A5DsFaIdkRihp--