From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 9B5FC430F1; Thu, 24 Aug 2023 16:29:43 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A3F6740EE1; Thu, 24 Aug 2023 16:29:43 +0200 (CEST) Received: from mail-yw1-f181.google.com (mail-yw1-f181.google.com [209.85.128.181]) by mails.dpdk.org (Postfix) with ESMTP id A338B4067B for ; Thu, 24 Aug 2023 16:29:41 +0200 (CEST) Received: by mail-yw1-f181.google.com with SMTP id 00721157ae682-59234aaca15so40137987b3.3 for ; Thu, 24 Aug 2023 07:29:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iol.unh.edu; s=unh-iol; t=1692887381; x=1693492181; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=kBDG8gIGeTUB9mbWxhxir2gxJ1iMzs4xI6ivhA9ohBs=; b=Li1KolJQXZ6s0AUHt30hdi8gF5KElqkBLouYp+K3eTGdb7wUd9fCEcNMmf1zEiox+e ztEOC/BJZMQ23wLaHEbuOKvgOiXseapG0Z5VfrHQ5FsW4ohougyYslZczhJwBIkAXXpb 4n4DiqMhUwTjhHiDINSd0TaVTfjzaiisMvED0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692887381; x=1693492181; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=kBDG8gIGeTUB9mbWxhxir2gxJ1iMzs4xI6ivhA9ohBs=; b=H4fsaXCEFSQvx2pnE3KNZqQRoewNmpswboOeEgwyuCA/eXn0QlkkFqFU0QvoF4885G 9sdmuWw49ZIn9Ynh4NVjbah1RA/Y7x0EixyPljEtGndwhqAY11aqlW0sjI+tAaV5OhQ7 Fa6r+rvQBZLPDlccVaakJVyclpV51gOeoH+z7GauyrF66ZWGcw3YCrEvSYQlc6kr479j Zp19XsK/6CmiAh7mbpG3cGsqG8lV3rTfNrHVhgV0pL2W3HVkMgbYKcWoVMvSZy4Pz2nT x+vyKGlbZDINIeq54nPaNuNzqAJYsLEMVhYRt0JqC+ZYJdKtaxePcJGu5HOPGoX5WhXl jKLw== X-Gm-Message-State: AOJu0Yz/8Oyj1WAoF6BBHokHfkVKMhKoRe5/H9WVWWzca3LHb3Tww4ya 5Nhl6pvqVKFoNvpGPwfAYSOw14InEPpsIPw/8MMDx/ou6fk78wgqav+zlA== X-Google-Smtp-Source: AGHT+IG4vsuqEoEm0y3+Ffggod+GtWmUZULKtYHcjAETEJZFfS1nRlG3uTlXU+7qswfP43pd2etqGHpd+9xcWecIx1U= X-Received: by 2002:a81:7243:0:b0:57a:8de9:29e7 with SMTP id n64-20020a817243000000b0057a8de929e7mr14487480ywc.28.1692887380745; Thu, 24 Aug 2023 07:29:40 -0700 (PDT) MIME-Version: 1.0 References: <35340484-1d7e-7e5f-cad4-c965ba541397@oktetlabs.ru> <9ce9d7fd-4051-6d51-26bb-7e96e98c677e@oktetlabs.ru> <781ca146-955f-85af-5727-66015ae1d326@oktetlabs.ru> <7734826a-840d-d0d9-e7a5-91951223398c@oktetlabs.ru> In-Reply-To: <7734826a-840d-d0d9-e7a5-91951223398c@oktetlabs.ru> From: Adam Hassick Date: Thu, 24 Aug 2023 10:30:09 -0400 Message-ID: Subject: Re: Setting up DPDK PMD Test Suite To: Andrew Rybchenko Cc: Patrick Robb , Konstantin Ushakov , ci@dpdk.org Content-Type: multipart/mixed; boundary="000000000000f9aeaa0603ac0e1b" X-BeenThere: ci@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK CI discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ci-bounces@dpdk.org --000000000000f9aeaa0603ac0e1b Content-Type: multipart/alternative; boundary="000000000000f9aea70603ac0e19" --000000000000f9aea70603ac0e19 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Andrew, This is the output that I see in the terminal when this failure occurs, after the test agent binaries build and the test engine starts: Platform default build - pass Simple RCF consistency check succeeded --->>> Starting Logger...done --->>> Starting RCF...rcf_net_engine_connect(): Connection timed out iol-dts-tester.dpdklab.iol.unh.edu:23571 Then, it hangs here until I kill the "te_rcf" and "te_tee" processes. I let it hang for around 9 minutes. On the tester host (which appears to be the Peer agent), there are four processes that I see running, which look like the test agent processes. ta.Peer is an empty file. I've attached the log.txt from this run. - Adam On Thu, Aug 24, 2023 at 4:22=E2=80=AFAM Andrew Rybchenko < andrew.rybchenko@oktetlabs.ru> wrote: > Hi Adam, > > Yes, TE_RCFUNIX_TIMEOUT is in seconds. I've double-checked that it goes t= o > 'copy_timeout' in ts-conf/rcf.conf. > Description in in doc/sphinx/pages/group_te_engine_rcf.rst says that > copy_timeout is in seconds and implementation in lib/rcfunix/rcfunix.c > passes the value to select() tv_sec. Theoretically select() could be > interrupted by signal, but I think it is unlikely here. > > I'm not sure that I understand what do you mean by RCF connection timeout= . > Does it happen on TE startup when RCF starts test agents. If so, > TE_RCFUNIX_TIMEOUT could help. Or does it happen when tests are in > progress, e.g. in the middle of a test. If so, TE_RCFUNIX_TIMEOUT is > unrelated and most likely either host with test agent dies or test agent > itself crashes. It would be easier for me if classify it if you share tex= t > log (log.txt, full or just corresponding fragment with some context). Als= o > content of ta.DPDK or ta.Peer file depending on which agent has problems > could shed some light. Corresponding files contain stdout/stderr of test > agents. > > Andrew. > > On 8/23/23 17:45, Adam Hassick wrote: > > Hi Andrew, > > I've set up a test rig repository here, and have created configurations > for our development testbed based off of the examples. > We've been able to get the test suite to run manually on Mellanox CX5 > devices once. > However, we are running into an issue where, when RCF starts, the RCF > connection times out very frequently. We aren't sure why this is the case= . > It works sometimes, but most of the time when we try to run the test > engine, it encounters this issue. > I've tried changing the RCF port by setting "TE_RCF_PORT=3D number>" and rebooting the testbed machines. Neither seems to fix the iss= ue. > > It also seems like the timeout takes far longer than 60 seconds, even whe= n > running "export TE_RCFUNIX_TIMEOUT=3D60" before I try to run the test sui= te. > I assume the unit for this variable is seconds? > > Thanks, > Adam > > On Mon, Aug 21, 2023 at 10:19=E2=80=AFAM Adam Hassick > wrote: > >> Hi Andrew, >> >> Thanks, I've cloned the example repository and will start setting up a >> configuration for our development testbed today. I'll let you know if I = run >> into any difficulties or have any questions. >> >> - Adam >> >> On Sun, Aug 20, 2023 at 4:40=E2=80=AFAM Andrew Rybchenko < >> andrew.rybchenko@oktetlabs.ru> wrote: >> >>> Hi Adam, >>> >>> I've published https://github.com/ts-factory/ts-rigs-sample. Hopefully >>> it will help to define your test rigs and successfully run some tests >>> manually. Feel free to ask any questions and I'll answer here and try t= o >>> update documentation. >>> >>> Meanwhile I'll prepare missing bits for steps (2) and (3). >>> Hopefully everything is in place for step (4), but we need to make step= s >>> (2) and (3) first. >>> >>> Andrew. >>> >>> On 8/18/23 21:40, Andrew Rybchenko wrote: >>> >>> Hi Adam, >>> >>> > I've conferred with the rest of the team, and we think it would be >>> best to move forward with mainly option B. >>> >>> OK, I'll provide the sample on Monday for you. It is almost ready right >>> now, but I need to double-check it before publishing. >>> >>> Regards, >>> Andrew. >>> >>> On 8/17/23 20:03, Adam Hassick wrote: >>> >>> Hi Andrew, >>> >>> I'm adding the CI mailing list to this conversation. Others in the >>> community might find this conversation valuable. >>> >>> We do want to run testing on a regular basis. The Jenkins integration >>> will be very useful for us, as most of our CI is orchestrated by Jenkin= s. >>> I've conferred with the rest of the team, and we think it would be best >>> to move forward with mainly option B. >>> If you would like to know anything about our testbeds that would help >>> you with creating an example ts-rigs repo, I'd be happy to answer any >>> questions you have. >>> >>> We have multiple test rigs (we call these "DUT-tester pairs") that we >>> run our existing hardware testing on, with differing network hardware a= nd >>> CPU architecture. I figured this might be an important detail. >>> >>> Thanks, >>> Adam >>> >>> On Thu, Aug 17, 2023 at 11:44=E2=80=AFAM Andrew Rybchenko < >>> andrew.rybchenko@oktetlabs.ru> wrote: >>> >>>> Greatings Adam, >>>> >>>> I'm happy to hear that you're trying to bring it up. >>>> >>>> As I understand the final goal is to run it on regular basis. So, we >>>> need to make it properly from the very beginning. >>>> Bring up of all features consists of 4 steps: >>>> >>>> 1. Create site-specific repository (we call it ts-rigs) which contains >>>> information about test rigs and other site-specific information like w= here >>>> to send mails, where to store logs etc. It is required for manual exec= ution >>>> as well, since test rigs description is essential. I'll return to the = topic >>>> below. >>>> >>>> 2. Setup logs storage for automated runs. Basically it is a disk space >>>> plus apache2 web server with few CGI scripts which help a lot to save = disk >>>> space. >>>> >>>> 3. Setup Bublik web application which provides web interface to view >>>> testing results. Same as https://ts-factory.io/bublik >>>> >>>> 4. Setup Jenkins to run tests on regularly, save logs in log storage >>>> (2) and import it to bublik (3). >>>> >>>> Last few month we spent on our homework to make it simpler to bring up >>>> automated execution using Jenkins - >>>> https://github.com/ts-factory/te-jenkins >>>> Corresponding bits in dpdk-ethdev-ts will be available tomorrow. >>>> >>>> Let's return to the step (1). >>>> >>>> Unfortunately there is no publicly available example of the ts-rigs >>>> repository since sensitive site-specific information is located there.= But >>>> I'm ready to help you to create it for UNH. I see two options here: >>>> >>>> (A) I'll ask questions and based on your answers will create the first >>>> draft with my comments. >>>> >>>> (B) I'll make a template/example ts-rigs repo, publish it and you'll >>>> create UNH ts-rigs based on it. >>>> >>>> Of course, I'll help to debug and finally bring it up in any case. >>>> >>>> (A) is a bit simpler for me and you, but (B) is a bit more generic and >>>> will help other potential users to bring it up. >>>> We can combine (A)+(B). I.e. start from (A). What do you think? >>>> >>>> Thanks, >>>> Andrew. >>>> >>>> On 8/17/23 15:18, Konstantin Ushakov wrote: >>>> >>>> Greetings Adam, >>>> >>>> >>>> Thanks for contacting us. I copy Andrew who would be happy to help >>>> >>>> Thanks, >>>> Konstantin >>>> >>>> On 16 Aug 2023, at 21:50, Adam Hassick >>>> wrote: >>>> >>>> =EF=BB=BF >>>> Greetings Konstantin, >>>> >>>> I am in the process of setting up the DPDK Poll Mode Driver test suite >>>> as an addition to our testing coverage for DPDK at the UNH lab. >>>> >>>> I have some questions about how to set the test suite arguments. >>>> >>>> I have been able to configure the Test Engine to connect to the hosts >>>> in the testbed. The RCF, Configurator, and Tester all begin to run, ho= wever >>>> the prelude of the test suite fails to run. >>>> >>>> https://ts-factory.io/doc/dpdk-ethdev-ts/index.html#test-parameters >>>> >>>> The documentation mentions that there are several test parameters for >>>> the test suite, like for the IUT test link MAC, etc. These seem like t= hey >>>> would need to be set somewhere to run many of the tests. >>>> >>>> I see in the Test Engine documentation, there are instructions on how >>>> to create new parameters for test suites in the Tester configuration, = but >>>> there is nothing in the user guide or in the Tester guide for how to s= et >>>> the arguments for the parameters when running the test suite that I ca= n >>>> find. I'm not sure if I need to write my own Tester config, or if I sh= ould >>>> be setting these in some other way. >>>> >>>> How should these values be set? >>>> >>>> I'm also not sure what environment variables/arguments are strictly >>>> necessary or which are optional. >>>> >>>> Regards, >>>> Adam >>>> >>>> -- >>>> *Adam Hassick* >>>> Senior Developer >>>> UNH InterOperability Lab >>>> ahassick@iol.unh.edu >>>> iol.unh.edu >>>> +1 (603) 475-8248 >>>> >>>> >>>> >>> >>> -- >>> *Adam Hassick* >>> Senior Developer >>> UNH InterOperability Lab >>> ahassick@iol.unh.edu >>> iol.unh.edu >>> +1 (603) 475-8248 >>> >>> >>> >>> >> >> -- >> *Adam Hassick* >> Senior Developer >> UNH InterOperability Lab >> ahassick@iol.unh.edu >> iol.unh.edu >> +1 (603) 475-8248 >> > > > -- > *Adam Hassick* > Senior Developer > UNH InterOperability Lab > ahassick@iol.unh.edu > iol.unh.edu > +1 (603) 475-8248 > > > --=20 *Adam Hassick* Senior Developer UNH InterOperability Lab ahassick@iol.unh.edu iol.unh.edu +1 (603) 475-8248 --000000000000f9aea70603ac0e19 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Andrew,

This is the output = that I see in the terminal when this failure occurs, after the test agent b= inaries build and the test engine starts:

Platform defaul= t build - pass
Simple RCF consistency check succeeded
--->>>= Starting Logger...done
--->>> Starting RCF...rcf_net_engine_co= nnect(): Connection timed out iol-dts-tester.dpdklab.iol.unh.edu:23571

Then, it hangs here until I kill the "te_rcf" and "te_tee= " processes. I let it hang for around 9 minutes.

On = the tester host (which appears to be the Peer agent), there are four proces= ses that I see running, which look like the test agent processes.
=

ta.Peer is an empty file. I've attached the log.txt= from this run.

=C2=A0- Adam

On Thu, Aug 2= 4, 2023 at 4:22=E2=80=AFAM Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru> wrote:
=20 =20 =20
Hi Adam,

Yes, TE_RCFUNIX_TIMEOUT is in seconds. I've double-checked that i= t goes to 'copy_timeout' in ts-conf/rcf.conf.
Description in in doc/sphinx/pages/group_te_engine_rcf.rst says that copy_timeout is in seconds and implementation in lib/rcfunix/rcfunix.c passes the value to select() tv_sec. Theoretically select() could be interrupted by signal, but I think it is unlikely here.

I'm not sure that I understand what do you mean by RCF connection timeout. Does it happen on TE startup when RCF starts test agents. If so, TE_RCFUNIX_TIMEOUT could help. Or does it happen when tests are in progress, e.g. in the middle of a test. If so, TE_RCFUNIX_TIMEOUT is unrelated and most likely either host with test agent dies or test agent itself crashes. It would be easier for me if classify it if you share text log (log.txt, full or just corresponding fragment with some context). Also content of ta.DPDK or ta.Peer file depending on which agent has problems could shed some light. Corresponding files contain stdout/stderr of test agents.

Andrew.

On 8/23/23 17:45, Adam Hassick wrote:
=20
Hi Andrew,

I've set up a test rig repository here, and have created configurations for our development testbed based off of the examples.
We've been able to get the test suite to run manually on Mellanox CX5 devices once.
However, we are running into an issue where, when RCF starts, the RCF connection times out very frequently. We aren't sure why this is the case.
It works sometimes, but most of the time when we try to run the test engine, it encounters this issue.
I've tried changing the RCF port by setting "TE_RCF_PORT=3D<some port number>" and rebo= oting the testbed machines. Neither seems to fix the issue.

It also seems like the timeout takes far longer than 60 seconds, even when running "export TE_RCFUNIX_TIMEOUT=3D= 60" before I try to run the test suite.
I assume the unit for this variable is seconds?

Thanks,
Adam

On Mon, Aug 21, 2023 at 10:19=E2=80=AFAM Adam Hassick <ahassick@iol.unh.edu> wrote:
Hi Andrew,

Thanks, I've cloned the example repository and will start setting up a configuration for our development testbed today. I'll let you know if I run into any difficulties or have any questions.

=C2=A0- Adam

On Sun, Aug 20, 2023 at 4:40=E2=80=AFAM Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru<= /a>> wrote:
Hi Adam,

I've published
https://github.com/ts-factory/ts-rig= s-sample. Hopefully it will help to define your test rigs and successfully run some tests manually. Feel free to ask any questions and I'll answer here and try to update documentation.

Meanwhile I'll prepare missing bits for steps (2) and (3).
Hopefully everything is in place for step (4), but we need to make steps (2) and (3) first.

Andrew.

On 8/18/23 21:40, Andrew Rybchenko wrote:
Hi Adam,

> I've conferred with the rest of the team, an= d we think it would be best to move forward with mainly option B.

OK, I'll provide the sample on Monday for you. It is almost ready right now, but I need to double-check it before publishing.

Regards,
Andrew.

On 8/17/23 20:03, Adam Hassick wrote:
Hi Andrew,

I'm adding the CI mailing list to this conversation. Others in the community might find this conversation valuable.

We do want to run testing on a regular basis. The Jenkins integration will be very useful for us, as most of our CI is orchestrated by Jenkins.
I've conferred with the rest of the team, and we think it would be best to move forward with mainly option B.
If you would like to know anything about our testbeds that would help you with creating an example ts-rigs repo, I'd be happy to answer any questions you have.

We have multiple test rigs (we call these "DUT-tester pairs") that we run our exi= sting hardware testing on, with differing network hardware and CPU architecture. I figured this might be an important detail.

Thanks,
Adam

On Thu, Aug 17, 2023 at 11:44=E2=80=AFAM Andrew Rybchenko <= ;andrew.= rybchenko@oktetlabs.ru> wrote:
Greatings Adam,

I'm happy to hear that you're trying = to bring it up.

As I understand the final goal is to run it on regular basis. So, we need to make it properly from the very beginning.
Bring up of all features consists of 4 steps:

1. Create site-specific repository (we call it ts-rigs) which contains information about test rigs and other site-specific information like where to send mails, where to store logs etc. It is required for manual execution as well, since test rigs description is essential. I'll return to the topic below.

2. Setup logs storage for automated runs. Basically it is a disk space plus apache2 web server with few CGI scripts which help a lot to save disk space.

3. Setup Bublik web application which provides web interface to view testing results. Same as https://ts-factory.io/bublik

4. Setup Jenkins to run tests on regularly, save logs in log storage (2) and import it to bublik (3).

Last few month we spent on our homework to make it simpler to bring up automated execution using Jenkins - https://github.com/ts-f= actory/te-jenkins
Corresponding bits in dpdk-ethdev-ts will be available tomorrow.

Let's return to the step (1).

Unfortunately there is no publicly available example of the ts-rigs repository since sensitive site-specific information is located there. But I'm ready to help you to create it for UNH. I see two options here:

(A) I'll ask questions and based on your answers will create the first draft with my comments.

(B) I'll make a template/example ts-rigs repo, publish it and you'll create UNH ts-rigs based on it.

Of course, I'll help to debug and finally bring it up in any case.

(A) is a bit simpler for me and you, but (B) is a bit more generic and will help other potential users to bring it up.
We can combine (A)+(B). I.e. start from (A). What do you think?

Thanks,
Andrew.

On 8/17/23 15:18, Konstantin Ushakov wrote:
Greetings Adam,


Thanks for contacting us. I copy Andrew who would be happy to help

Thanks,
Konstantin

On 16 Aug 2023, at 21:50, Adam Hassick <ahassick@iol.unh.edu>= ; wrote:

=EF=BB=BF
Greetings Konstantin,

I am in the process of setting up the DPDK Poll Mode Driver test suite as an addition to our testing coverage for DPDK at the UNH lab.

I have some questions about how to set the test suite arguments.

I have been able to configure the Test Engine to connect to the hosts in the testbed. The RCF, Configurator, and Tester all begin to run, however the prelude of the test suite fails to run.
The documentation mentions that there are several test parameters for the test suite, like for the IUT test link MAC, etc. These seem like they would need to be set somewhere to run many of the tests.

I see in the Test Engine documentation, there are instructions on how to create new parameters for test suites in the Tester configuration, but there is nothing in the user guide or in the Tester guide for how to set the arguments for the parameters when running the test suite that I can find. I'm not sure if I need to write my own Tester config, or if I should be setting these in some other way.
How should these values be set?

I'm also not sure what environment variables/arguments are strictly necessary or which are optional.

Regards,
Adam

--
Adam Hassick
Senior Developer<= /div>
UNH InterOperability Lab
+1 (603) 475-8248



--
Adam Hassick
<= /div>
Senio= r Developer
UNH InterOperability Lab=
+1 (603) 475-8248




--
Adam Hassick
Senior Developer
UNH InterOperability Lab
+1 (603) 475-8248


--
Adam Hassick
Senior Developer
UNH InterOperability Lab
+1 (603) 475-8248



--
Adam Hassick
Senior Developer
UNH InterOperability Lab
+1 (603) 475-8248
--000000000000f9aea70603ac0e19-- --000000000000f9aeaa0603ac0e1b Content-Type: text/plain; charset="US-ASCII"; name="log.txt" Content-Disposition: attachment; filename="log.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_llp981td0 TG9nIHJlcG9ydAp+fn5+fn5+fn5+CgpSSU5HICBEaXNwYXRjaGVyICBDb21tYW5kLWxpbmUgb3B0 aW9ucyAgMTM6NTU6NTMuMzg3Ci0tY29uZi1kaXJzPS9vcHQvdHNmL2RwZGstZXRoZGV2LXRzL2Nv bmY6L29wdC90c2YvdHMtcmlnczovb3B0L3RzZi90cy1jb25mIC0tdHJjLWRiPS9vcHQvdHNmL2Rw ZGstZXRoZGV2LXRzL3RyYy90b3AueG1sIC0tdHJjLWNvbXBhcmlzb249bm9ybWFsaXNlZCAtLXRy Yy1odG1sPXRyYy1icmllZi5odG1sIC0tdHJjLW5vLWV4cGVjdGVkIC0tdHJjLW5vLXRvdGFsIC0t dHJjLW5vLXVuc3BlYyAtLXRyYy1rZWVwLWFydGlmYWN0cyAtLW9wdHM9cnVuL2lvbC1kdHMtbWN4 NSAtLW9wdHM9b3B0cy50cwoKUklORyAgRGlzcGF0Y2hlciAgRXhwYW5kZWQgY29tbWFuZC1saW5l IG9wdGlvbnMgIDEzOjU1OjUzLjQwMgogLS1jb25mLWRpcnM9L29wdC90c2YvZHBkay1ldGhkZXYt dHMvY29uZjovb3B0L3RzZi90cy1yaWdzOi9vcHQvdHNmL3RzLWNvbmYgLS10cmMtZGI9L29wdC90 c2YvZHBkay1ldGhkZXYtdHMvdHJjL3RvcC54bWwgLS10cmMtY29tcGFyaXNvbj1ub3JtYWxpc2Vk IC0tdHJjLWh0bWw9dHJjLWJyaWVmLmh0bWwgLS10cmMtbm8tZXhwZWN0ZWQgLS10cmMtbm8tdG90 YWwgLS10cmMtbm8tdW5zcGVjIC0tdHJjLWtlZXAtYXJ0aWZhY3RzIC0tc2NyaXB0PWVudi9pb2wt ZHRzIC0tc2NyaXB0PWVudi9tbHgtY3g1IC0tc2NyaXB0PXNjcmlwdHMvaXV0LmgxIC0tc2NyaXB0 PXNjcmlwdHMvaXV0LmgxLW1jeDUgLS1jb25mLWNzPWNzL2RwZGstcG1kLXRzLnltbCAtLXNjcmlw dD1zY3JpcHRzL3RhLWRlZiAtLXNjcmlwdD1zY3JpcHRzL2RlZmF1bHRzIC0tdGVzdGVyLXNjcmlw dD1zY3JpcHRzL2RwZGstdHJjLXRhZ3MgLS10ZXN0ZXItc2NyaXB0PXNjcmlwdHMvb3MtdHJjLXRh Z3MgLS1zY3JpcHQ9c2NyaXB0cy9uZXQtbW9kdWxlcyAtLXNjcmlwdD1zY3JpcHRzL2l1dC1uZXQt ZHJpdmVyLWxvYWRlZCAtLXNjcmlwdD1zY3JpcHRzL2Rpc2FibGVfdW51c2VkX2FndHMKClJJTkcg IERpc3BhdGNoZXIgIFN0YXJ0ICAxNDowMTowMy40MTcKU3RhcnRpbmcgVEVOIGFwcGxpY2F0aW9u cwoKUklORyAgRGlzcGF0Y2hlciAgU3RhcnQgIDE0OjAxOjAzLjQzNQpTdGFydCBMb2dnZXI6ICAv b3B0L3RzZi90cy1yaWdzL2xvZ2dlci5jb25mCgpSSU5HICBMb2dnZXIgIENmZyBmaWxlICAxNDow MTowMy40NjEKT3BlbmluZyBjb25maWcgZmlsZTogL29wdC90c2YvdHMtcmlncy9sb2dnZXIuY29u ZgoKUklORyAgTG9nZ2VyICBMb2cgc3RyZWFtaW5nICAxNDowMTowMy40NjIKQ3VycmVudCBsaXN0 ZW5lcnMgY29uZmlndXJhdGlvbjoKTGlzdGVuZXJzOgpGaWx0ZXJzOgoKUklORyAgRGlzcGF0Y2hl ciAgU3RhcnQgIDE0OjAxOjAzLjQ4MQpTdGFydCBSQ0Y6ICAvb3B0L3RzZi90cy1jb25mL3JjZi5j b25mCgpSSU5HICBSQ0YgIFJDRiBVbml4ICAxNDowMTowMy40ODcKU3RhcnRpbmcgVEEgJ1BlZXIn IHR5cGUgJ2xpbnV4X3g4Nl82NF9saW51eF9nbnVfX2dsaWJjMl8zNV9fa2VybmVsNV8xNV8wXzc5 X19jcHVfYXZ4NTEyYndfX2NwdV9ibWkyJyBjb25mX3N0ciAnaG9zdD1pb2wtZHRzLXRlc3Rlci5k cGRrbGFiLmlvbC51bmguZWR1OnBvcnQ9MjM1NzE6dXNlcj1yb290OmtleT0vb3B0L3RzZi9rZXlz L2lkX2VkMjU1MTk6c3NoX3BvcnQ9MjI6Y29weV90aW1lb3V0PTE1OmtpbGxfdGltZW91dD0xNTpz dWRvPTpzaGVsbD0nCgpSSU5HICBSQ0YgIFJDRiBVbml4ICAxNDowMTowMy40ODcKQ01EIHRvIGNv cHk6IHNzaCAtcXhUbiAtbyBCYXRjaE1vZGU9eWVzIC1wIDIyIC1pIC9vcHQvdHNmL2tleXMvaWRf ZWQyNTUxOSAgLW8gVXNlcktub3duSG9zdHNGaWxlPS9kZXYvbnVsbCAtbyBTdHJpY3RIb3N0S2V5 Q2hlY2tpbmc9bm8gcm9vdEBpb2wtZHRzLXRlc3Rlci5kcGRrbGFiLmlvbC51bmguZWR1ICJta2Rp ciAvdG1wL2xpbnV4X3g4Nl9yb290Xzc2ODcyXzE2OTI4ODU2NjNfMSIgJiYgZWNobyBwdXQgL29w dC90c2YvZHBkay1ldGhkZXYtdHMvdHMvaW5zdC9hZ2VudHMvbGludXhfeDg2XzY0X2xpbnV4X2du dV9fZ2xpYmMyXzM1X19rZXJuZWw1XzE1XzBfNzlfX2NwdV9hdng1MTJid19fY3B1X2JtaTIvLy4g L3RtcC9saW51eF94ODZfcm9vdF83Njg3Ml8xNjkyODg1NjYzXzEgfCBzZnRwIC1ycHEgLVAgMjIg LWkgL29wdC90c2Yva2V5cy9pZF9lZDI1NTE5ICAtbyBVc2VyS25vd25Ib3N0c0ZpbGU9L2Rldi9u dWxsIC1vIFN0cmljdEhvc3RLZXlDaGVja2luZz1ubyByb290QGlvbC1kdHMtdGVzdGVyLmRwZGts YWIuaW9sLnVuaC5lZHUKClJJTkcgIFJDRiAgUkNGIFVuaXggIDE0OjAxOjA1LjA2MwpDb21tYW5k IHRvIGRldGVjdCBzaGVsbCBuYW1lOiBzc2ggLXF4VG4gLW8gQmF0Y2hNb2RlPXllcyAtcCAyMiAt aSAvb3B0L3RzZi9rZXlzL2lkX2VkMjU1MTkgIC1vIFVzZXJLbm93bkhvc3RzRmlsZT0vZGV2L251 bGwgLW8gU3RyaWN0SG9zdEtleUNoZWNraW5nPW5vIHJvb3RAaW9sLWR0cy10ZXN0ZXIuZHBka2xh Yi5pb2wudW5oLmVkdSAiZWNobyAtbiBcJFNIRUxMIgoKUklORyAgUkNGICBSQ0YgVW5peCAgMTQ6 MDE6MDUuMzIxClNoZWxsIGlzOiAvYmluL2Jhc2gKClJJTkcgIFJDRiAgUkNGIFVuaXggIDE0OjAx OjA1LjMyMQpDb21tYW5kIHRvIHN0YXJ0IFRBOiBzc2ggLXF4VG4gLW8gQmF0Y2hNb2RlPXllcyAt cCAyMiAtaSAvb3B0L3RzZi9rZXlzL2lkX2VkMjU1MTkgIC1vIFVzZXJLbm93bkhvc3RzRmlsZT0v ZGV2L251bGwgLW8gU3RyaWN0SG9zdEtleUNoZWNraW5nPW5vIHJvb3RAaW9sLWR0cy10ZXN0ZXIu ZHBka2xhYi5pb2wudW5oLmVkdSAic3VkbyAtbiBQQVRIPVwke1BBVEh9Oi90bXAvbGludXhfeDg2 X3Jvb3RfNzY4NzJfMTY5Mjg4NTY2M18xIExEX0xJQlJBUllfUEFUSD1cJHtMRF9MSUJSQVJZX1BB VEh9XCR7TERfTElCUkFSWV9QQVRIOis6fS90bXAvbGludXhfeDg2X3Jvb3RfNzY4NzJfMTY5Mjg4 NTY2M18xIC90bXAvbGludXhfeDg2X3Jvb3RfNzY4NzJfMTY5Mjg4NTY2M18xL3RhIFBlZXIgMjM1 NzEgaG9zdD1pb2wtZHRzLXRlc3Rlci5kcGRrbGFiLmlvbC51bmguZWR1OnBvcnQ9MjM1NzE6dXNl cj1yb290OmtleT0vb3B0L3RzZi9rZXlzL2lkX2VkMjU1MTk6c3NoX3BvcnQ9MjI6Y29weV90aW1l b3V0PTE1OmtpbGxfdGltZW91dD0xNTpzdWRvPTpzaGVsbD0iIDI+JjEgfCB0ZV90ZWUgUkNGIFBl ZXIgMTAgPnRhLlBlZXIgCgpXQVJOICBSQ0YgIFJDRiBVbml4ICAxNDoxMToxNi45ODQKQ29ubmVj dGluZyB0byBUQSBQZWVyIGlvbC1kdHMtdGVzdGVyLmRwZGtsYWIuaW9sLnVuaC5lZHU6MjM1NzEg ZmFpbGVkIChDT01NLUVUSU1FRE9VVCkgLSBjb25uZWN0IGFnYWluIGFmdGVyIGRlbGF5CgpSSU5H ICBSQ0YgIFJDRiBVbml4ICAxNDoxMToxNi45ODQKU2xlZXBpbmcgMSBzZWNvbmRzCgpSSU5HICBE aXNwYXRjaGVyICBTdGFydCAgMTQ6MjA6MjUuNjIyClNodXRkb3duIExvZ2dlcgoKUklORyAgTG9n Z2VyICBTZWxmICAxNDoyMDoyNS42MjQKTG9nZ2VyIHNodXRkb3duIC4uLgoKV0FSTiAgTG9nZ2Vy ICBTZWxmICAxNDoyMDoyNS42MjQKTG9nZ2VyIGlzIHNodXQgZG93biB3aXRob3V0IHBvbGxpbmcg b2YgVEFzCgpXQVJOICBMb2dnZXIgIExvZyBzdHJlYW1pbmcgIDE0OjIwOjI1LjYyNApOb3QgYWxs IG1lc3NhZ2VzIGluIGxpc3RlbmVyIHF1ZXVlIGhhdmUgYmVlbiBwcm9jZXNzZWQKClJJTkcgIExv Z2dlciAgU2VsZiAgMTQ6MjA6MjUuNjI0ClNodXRkb3duIGlzIGNvbXBsZXRlZAo= --000000000000f9aeaa0603ac0e1b--