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