From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ej1-x634.google.com (mail-ej1-x634.google.com [IPv6:2a00:1450:4864:20::634]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.bufferbloat.net (Postfix) with ESMTPS id 75A433B29D for ; Tue, 30 Mar 2021 14:08:25 -0400 (EDT) Received: by mail-ej1-x634.google.com with SMTP id jy13so26230103ejc.2 for ; Tue, 30 Mar 2021 11:08:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=mime-version:from:date:message-id:subject:to; bh=J+PESUEbHiAN+jnzwSpwN0c1eKaHXsniL5L/NBU0PqA=; b=Asno2ILmWe2mv2wSR0QtZ/TGs2+Uo7f4JhYqI0PY1XIsCWqcWpD2qRAqHDaEqQseLk AnVQHYEZNSSg43iB1pi1KT16IgE/GhRudlXqi3sUr5uIHSrAhzHDVizEd+pj3U25N2GL A4APkpxE55Y5NJVe5MxMwuhrwpNgMuMiCdbmk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=J+PESUEbHiAN+jnzwSpwN0c1eKaHXsniL5L/NBU0PqA=; b=UkhczykLP8WjZtW4NOTYlvlfGs99iT5RqVcU2O3NcanxetiSUk9xNfyrPOVtMtWdCd O0zoSRW8wf6oEMSfWRfMen83ePfgsQJxpWk5vY0+flo2ESz1nD8W4lZhYGfUMwSXNvSh XwnuxStCgvbqyTsFl4/5ffmn2jG8uCfMn7pudCF21Uxf1yfx2l5IDxcyY2FjxsNrGowL JFKn7sRCATntR1PvpfAlsTTgosLofEmhI/6IIT3s50NyBdUgs00XYGKwFY8hmDtO/kFc FbhJHaEnYMhgiNmEDYM3uAmPO6muGJ7WgBZGj3f2lDfOMzOFqjQXBHKCuN+Voels4XVs 4/vw== X-Gm-Message-State: AOAM5339TuPOMw4uKZHQZJycQPQI1CfhbMTP13WUxRqqYFdSRbFlpg3h RF/skVulTikv9OlnyQ5nRhHkiHIMBYeNlbCm6zPWPbOV3q0U+XCmivoXZj0U3lFYWGx9eFAPpAP 1Jh6QzcDTS18yg072r835bxUtCjg00XtxN/iMMPWmRKcn2uFktQ== X-Google-Smtp-Source: ABdhPJwt4KBd5zEfpqc3A60F5I/l1xtBatnszCofEfSt5bvKT41mucaEMwl9kMl5qsw/Q2I5PbZTaMIkym3zJ4PlglU= X-Received: by 2002:a17:906:cd05:: with SMTP id oz5mr35201369ejb.345.1617127704023; Tue, 30 Mar 2021 11:08:24 -0700 (PDT) MIME-Version: 1.0 From: Bob McMahon Date: Tue, 30 Mar 2021 11:08:13 -0700 Message-ID: To: Make-Wifi-fast Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-256; boundary="0000000000006182ea05bec4e24a" Subject: [Make-wifi-fast] iperf 2 low duty cycle traffic X-BeenThere: make-wifi-fast@lists.bufferbloat.net X-Mailman-Version: 2.1.20 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Mar 2021 18:08:25 -0000 --0000000000006182ea05bec4e24a Content-Type: multipart/alternative; boundary="0000000000005b2ee605bec4e2b3" --0000000000005b2ee605bec4e2b3 Content-Type: text/plain; charset="UTF-8" Hi All, Please offer feedback per the following and please forward to relevant and interested parties. *Problem statement: *Network devices need to support and, hence, have tests for both high duty cycle and low duty cycle traffic scenarios. Iperf 2.1.1 is proposing two new options to support the latter. From the man page . *--burst-period[=**n**]*Set the burst period in seconds. Defaults to one second. (Note: assumed use case is low duty cycle traffic bursts) *--burst-size[=**n**]*Set the burst size in bytes. Defaults to 1M if no value is given.Note that the burst-size is not the same as the -l value. The former is an amount expected to be larger than the write size which is what -l specifies. These settings will work for both UDP and TCP traffic (though UDP is yet to be coded up.) *Proposed server side output:* [rjmcmahon@localhost iperf2-code]$ iperf -s -e ------------------------------------------------------------ Server listening on TCP port 5001 with pid 28094 Read buffer size: 128 KByte (Dist bin width=16.0 KByte) TCP window size: 128 KByte (default) ------------------------------------------------------------ [ 1] local 192.168.1.10%enp2s0 port 5001 connected with 192.168.1.113 port 59646 (MSS=1448) (*burst-period=2.00*) (trip-times) (sock=4) (peer 2.1.1-dev) on 2021-03-18 17:56:25 (PDT) [ ID] Burst (start-end) Transfer Bandwidth *XferTime* *(DC%) * Reads=Dist NetPwr [ 1] *0.0000-0.0092 sec 1.00 MBytes 911 Mbits/sec 9.214 ms (0.46%)* 572=571:0:0:1:0:0:0:0 12 [ 1] 2.0001-2.0092 sec 1.00 MBytes 921 Mbits/sec 9.105 ms (0.46%) 511=511:0:0:0:0:0:0:0 13 [ 1] 4.0006-4.0098 sec 1.00 MBytes 914 Mbits/sec 9.180 ms (0.46%) 404=401:3:0:0:0:0:0:0 12 [ 1] 6.0006-6.0099 sec 1.00 MBytes 898 Mbits/sec 9.338 ms (0.47%) 352=351:0:1:0:0:0:0:0 12 [ 1] 8.0005-8.0097 sec 1.00 MBytes 904 Mbits/sec 9.276 ms (0.46%) 468=467:1:0:0:0:0:0:0 12 [ 1] 0.0000-10.0022 sec 5.13 MBytes 4.30 Mbits/sec 2341=2334:5:1:1:0:0:0:0 *where XferTime *is the total time to transfer the burst. (With --trip-times this the first write time to the final read time. Without it it's the first read to the final read.) and *DC is a Duty Cycle* calculation, i.e. XferTime/burst-period. Also note the Bandwidth calculation is computed per the xfer time, i.e. packet or read/write events, and doesn't use as sample interval like -i does. *Client side command for the above:* [rjmcmahon@ryzen3950 iperf2-code]$ src/iperf -c 192.168.1.10 *--burst-period=2.0 * --trip-times ------------------------------------------------------------ Client connecting to 192.168.1.10, TCP port 5001 with pid 29040 (1 flows) Write buffer size: 131072 Byte Bursting: 1.00 MByte every 2.00 seconds TCP window size: 85.0 KByte (default) ------------------------------------------------------------ [ 1] local 192.168.1.113%enp6s0 port 59646 connected with 192.168.1.10 port 5001 (MSS=1448) (trip-times) (sock=3) (ct=0.29 ms) on 2021-03-18 17:56:25 (PDT) [ ID] Interval Transfer Bandwidth Write/Err Rtry Cwnd/RTT NetPwr [ 1] 0.0000-10.0107 sec 5.13 MBytes 4.29 Mbits/sec 43/0 0 127K/1590 us 338 [rjmcmahon@ryzen3950 iperf2-code]$ *Background:* Most iperf based testing has been high duty cycle or congested traffic. This allows one to measure things like peak average throughput. Another aspect of network traffic is how devices respond to low periodic bursts. Things like WiFi aggregation may be impacted. Having precise support for low duty cycle, bursty traffic seems needed for more robust test scenarios. The transmits are scheduled per clock_nanosleep and done are a per traffic thread basis. (Things like -P will be supported.) There are major differences in the server side output (client side output is TBD) per: 1. The timestamps are now burst based, start of burst to end of burst 2. The burst size is displayed 3. Bandwidth calculation is based on start of burst to end of burst and the burst size 4. The burst transfer time is provided in units of milliseconds and resolution of microseconds 5. A duty cycle output in percentage is provided as a convenience Note: applying the duty cycle to any specific resource is out of context of this proposal. Basically, time is the resource used here. Here is another run like above where the burst side is set to 10MBytes, notice the change in the output [rjmcmahon@localhost iperf2-code]$ iperf -s -e ------------------------------------------------------------ Server listening on TCP port 5001 with pid 28516 Read buffer size: 128 KByte (Dist bin width=16.0 KByte) TCP window size: 128 KByte (default) ------------------------------------------------------------ [ 1] local 192.168.1.10%enp2s0 port 5001 connected with 192.168.1.113 port 59722 (MSS=1448) (burst-period=2.00) (trip-times) (sock=4) (peer 2.1.1-dev) on 2021-03-18 18:09:33 (PDT) [ ID] Burst (start-end) Transfer Bandwidth XferTime (DC%) Reads=Dist NetPwr [ 1] 0.0000-0.0893 sec 10.0 MBytes 940 Mbits/sec 89.434 ms (4.5%) 6234=6233:0:1:0:0:0:0:0 1 [ 1] 2.0004-2.0900 sec 10.0 MBytes 935 Mbits/sec 89.681 ms (4.5%) 6398=6397:1:0:0:0:0:0:0 1 [ 1] 4.0003-4.0899 sec 10.0 MBytes 936 Mbits/sec 89.578 ms (4.5%) 6570=6570:0:0:0:0:0:0:0 1 [ 1] 6.0004-6.0901 sec 10.0 MBytes 935 Mbits/sec 89.727 ms (4.5%) 6436=6436:0:0:0:0:0:0:0 1 [ 1] 8.0004-8.0899 sec 10.0 MBytes 937 Mbits/sec 89.547 ms (4.5%) 5986=5985:1:0:0:0:0:0:0 1 [ 1] 0.0000-10.0019 sec 50.1 MBytes 42.0 Mbits/sec 31686=31683:2:1:0:0:0:0:0 [rjmcmahon@ryzen3950 iperf2-code]$ src/iperf -c 192.168.1.10 --burst-period=2.0 --trip-times* --burst-size=10M* ------------------------------------------------------------ Client connecting to 192.168.1.10, TCP port 5001 with pid 29299 (1 flows) Write buffer size: 131072 Byte Bursting: 10.0 MByte every 2.00 seconds TCP window size: 85.0 KByte (default) ------------------------------------------------------------ [ 1] local 192.168.1.113%enp6s0 port 59722 connected with 192.168.1.10 port 5001 (MSS=1448) (trip-times) (sock=3) (ct=0.38 ms) on 2021-03-18 18:09:33 (PDT) [ ID] Interval Transfer Bandwidth Write/Err Rtry Cwnd/RTT NetPwr [ 1] 0.0000-10.0167 sec 50.1 MBytes 42.0 Mbits/sec 403/0 0 142K/516 us 10169 Thanks for taking the time to read this and offering comments or suggestions. Also note that the current code on the 2-1-1-dev branch is in an early prototype phase with limited testing with no UDP support and client side output still a TBD. Bob -- This electronic communication and the information and any files transmitted with it, or attached to it, are confidential and are intended solely for the use of the individual or entity to whom it is addressed and may contain information that is confidential, legally privileged, protected by privacy laws, or otherwise restricted from disclosure to anyone else. If you are not the intended recipient or the person responsible for delivering the e-mail to the intended recipient, you are hereby notified that any use, copying, distributing, dissemination, forwarding, printing, or copying of this e-mail is strictly prohibited. If you received this e-mail in error, please return the e-mail to the sender, delete it from your computer, and destroy any printed copy of it. --0000000000005b2ee605bec4e2b3 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi All,

Please offer feedback per the f= ollowing and please forward to relevant and interested parties.

P= roblem statement:=C2=A0Network devices need=C2=A0to support and, hence,= have tests for both=C2=A0high duty cycle and low duty cycle traffic scenar= ios. Iperf 2.1.1 is proposing two new options to support the latter.=C2=A0 = >From the=C2=A0man page.
--burst-period[=3Dn]
Set the burst period in seconds. Defaul= ts to one second. (Note: assumed use case is low duty cycle traffic bursts)=
--burst-size[=3Dn]
= Set the burst size in bytes. Defaults to 1M if no value is given.
= Note that the burst-size is not the same as the -l value.=C2=A0 The former = is an amount expected to be larger than the write size which is what -l spe= cifies.

These settings will work for both UDP and TCP traffic (thoug= h UDP is yet to be coded up.)

Proposed server=C2=A0side output:
[rjmcmahon@localhost iperf2-code]$ iperf -s -e
--= ----------------------------------------------------------
Server= listening on TCP port 5001 with pid 28094
Read buffer size: =C2= =A0128 KByte (Dist bin width=3D16.0 KByte)
TCP window size: =C2= =A0128 KByte (default)
------------------------------------------= ------------------
[ =C2=A01] local 192.168.1.10%enp2s0 port 5001= connected with 192.168.1.113 port 59646 (MSS=3D1448) (burst-period=3D2.00) (trip-times) (sock=3D4)= (peer 2.1.1-dev) on 2021-03-18 17:56:25 (PDT)
[ ID] Burst (start= -end) =C2=A0Transfer =C2=A0 =C2=A0 Bandwidth =C2=A0 =C2=A0 =C2=A0=C2=A0XferTime=C2=A0=C2=A0(DC%)=C2=A0=C2=A0 = =C2=A0 Reads=3DDist =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0NetPwr
[ = =C2=A01]=C2=A00.0000-0= .0092 sec=C2=A0=C2=A01.00 MBytes =C2=A0=C2=A0911 Mbits/sec=C2=A0=C2=A0=C2=A09.214 ms=C2=A0(0.46%)=C2=A0=C2=A0 =C2=A0572=3D571:0:0:1:0:0:0:0 =C2=A012
=
[ =C2=A01] 2.0001-2.0092 sec =C2=A01.00 MBytes =C2=A0 921 Mbits/sec = =C2=A0 9.105 ms (0.46%) =C2=A0 =C2=A0511=3D511:0:0:0:0:0:0:0 =C2=A013
=
[ =C2=A01] 4.0006-4.0098 sec =C2=A01.00 MBytes =C2=A0 914 Mbits/sec = =C2=A0 9.180 ms (0.46%) =C2=A0 =C2=A0404=3D401:3:0:0:0:0:0:0 =C2=A012
=
[ =C2=A01] 6.0006-6.0099 sec =C2=A01.00 MBytes =C2=A0 898 Mbits/sec = =C2=A0 9.338 ms (0.47%) =C2=A0 =C2=A0352=3D351:0:1:0:0:0:0:0 =C2=A012
=
[ =C2=A01] 8.0005-8.0097 sec =C2=A01.00 MBytes =C2=A0 904 Mbits/sec = =C2=A0 9.276 ms (0.46%) =C2=A0 =C2=A0468=3D467:1:0:0:0:0:0:0 =C2=A012
=
[ =C2=A01] 0.0000-10.0022 sec =C2=A05.13 MBytes =C2=A04.30 Mbits/sec = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 2341=3D2334:5:1:1:0:0:0:0<= /div>

where XferTime=C2=A0is the total time = to transfer the burst. (With --trip-times this the first write time to the = final read time. Without it it's the first read to the final read.)
and= =C2=A0DC is a Duty Cycle=C2=A0calculation, i.e. XferTime/burst-perio= d. Also note the Bandwidth calculation is computed per the xfer time,
i.= e. packet or read/write events, and doesn't use as sample interval like= -i does.

Client side command for the above:<= /b>
[rjmcmahon@ryzen3950 iperf2-code]$ src/iperf -c 192.168.= 1.10=C2=A0--burst-period=3D2= .0=C2=A0=C2=A0--trip-times
----------------------------------= --------------------------
Client connecting to 192.168.1.10, TCP= port 5001 with pid 29040 (1 flows)
Write buffer size: 131072 Byt= e
Bursting: 1.00 MByte every 2.00 seconds
TCP window si= ze: 85.0 KByte (default)
----------------------------------------= --------------------
[ =C2=A01] local 192.168.1.113%enp6s0 port 5= 9646 connected with 192.168.1.10 port 5001 (MSS=3D1448) (trip-times) (sock= =3D3) (ct=3D0.29 ms) on 2021-03-18 17:56:25 (PDT)
[ ID] Interval = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Transfer =C2=A0 =C2=A0Bandwidth = =C2=A0 =C2=A0 =C2=A0 Write/Err =C2=A0Rtry =C2=A0 =C2=A0 Cwnd/RTT =C2=A0 =C2= =A0 =C2=A0 =C2=A0NetPwr
[ =C2=A01] 0.0000-10.0107 sec =C2=A05.13 = MBytes =C2=A04.29 Mbits/sec =C2=A043/0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A00 = =C2=A0 =C2=A0 =C2=A0127K/1590 us =C2=A0338
[rjmcmahon@ryzen3950 i= perf2-code]$

Background:

Most iper= f based testing has been high duty cycle or congested traffic. This allows = one to measure things like peak average throughput.

Another aspect o= f network traffic is how devices respond to low periodic bursts. Things lik= e WiFi aggregation may be impacted. Having precise support for low duty cyc= le, bursty traffic seems needed for more robust test scenarios.
<= br>The transmits are scheduled per=C2=A0clock_nanosleep=C2=A0and done ar= e a per traffic thread basis. (Things like -P will be supported.)

Th= ere are major differences in the server side output (client side output is = TBD) per:
  1. The timestamps are n= ow burst based, start of burst to end of burst
  2. The burst size is displayed
  3. Bandw= idth calculation is based on start of burst to end of burst and the burst s= ize
  4. The burst transfer time is provided = in units of milliseconds and resolution of microseconds
  5. A duty cycle output in percentage is provided as a convenie= nce
Note: applying the duty cycle to any specific resource is out = of context of this proposal.=C2=A0 Basically, time is the resource used her= e.

Here is another run like above where the burst side is set to 10M= Bytes, notice the change in the output

[rjmcmahon@l= ocalhost iperf2-code]$ iperf -s -e
-------------------= -----------------------------------------
Server liste= ning on TCP port 5001 with pid 28516
Read buffer size:= =C2=A0128 KByte (Dist bin width=3D16.0 KByte)
TCP win= dow size: =C2=A0128 KByte (default)
------------------= ------------------------------------------
[ =C2=A01] = local 192.168.1.10%enp2s0 port 5001 connected with 192.168.1.113 port 59722= (MSS=3D1448) (burst-period=3D2.00) (trip-times) (sock=3D4) (peer 2.1.1-dev= ) on 2021-03-18 18:09:33 (PDT)
[ ID] Burst (start-end)= =C2=A0Transfer =C2=A0 =C2=A0 Bandwidth =C2=A0 =C2=A0 =C2=A0 XferTime =C2= =A0(DC%) =C2=A0 =C2=A0 Reads=3DDist =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0NetPw= r
[ =C2=A01] 0.0000-0.0893 sec=C2=A0=C2=A010.0 MBytes=C2=A0=C2=A0 940 Mbits/sec =C2=A089.434=C2=A0ms=C2=A0(4.5%) =C2=A0=C2=A0= =C2=A06234=3D6233:0:1:0:0:0:0:0 =C2=A01
[ =C2=A01] 2.0= 004-2.0900 sec =C2=A010.0 MBytes =C2=A0 935 Mbits/sec =C2=A089.681 ms (4.5%= ) =C2=A0 =C2=A06398=3D6397:1:0:0:0:0:0:0 =C2=A01
[ =C2= =A01] 4.0003-4.0899 sec =C2=A010.0 MBytes =C2=A0 936 Mbits/sec =C2=A089.578= ms (4.5%) =C2=A0 =C2=A06570=3D6570:0:0:0:0:0:0:0 =C2=A01
<= div>[ =C2=A01] 6.0004-6.0901 sec =C2=A010.0 MBytes =C2=A0 935 Mbits/sec =C2= =A089.727 ms (4.5%) =C2=A0 =C2=A06436=3D6436:0:0:0:0:0:0:0 =C2=A01
[ =C2=A01] 8.0004-8.0899 sec =C2=A010.0 MBytes =C2=A0 937 Mbit= s/sec =C2=A089.547 ms (4.5%) =C2=A0 =C2=A05986=3D5985:1:0:0:0:0:0:0 =C2=A01=
[ =C2=A01] 0.0000-10.0019 sec =C2=A050.1 MBytes =C2= =A042.0 Mbits/sec =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 31686=3D= 31683:2:1:0:0:0:0:0

[rjmcmahon@ryzen3950 iperf2-code]$ src/iperf -c = 192.168.1.10 --burst-period=3D2.0 =C2=A0--trip-times=C2=A0--burst-size= =3D10M
------------------------------------------------------------<= br>Client connecting to 192.168.1.10, TCP port 5001 with pid 29299 (1 flows= )
Write buffer size: 131072 Byte
Bursting: 10.0 MByte every 2.00 seco= nds
TCP window size: 85.0 KByte (default)
---------------------------= ---------------------------------
[ =C2=A01] local 192.168.1.113%enp6s0 = port 59722 connected with 192.168.1.10 port 5001 (MSS=3D1448) (trip-times) = (sock=3D3) (ct=3D0.38 ms) on 2021-03-18 18:09:33 (PDT)
[ ID] Interval = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Transfer =C2=A0 =C2=A0Bandwidth = =C2=A0 =C2=A0 =C2=A0 Write/Err =C2=A0Rtry =C2=A0 =C2=A0 Cwnd/RTT =C2=A0 =C2= =A0 =C2=A0 =C2=A0NetPwr
[ =C2=A01] 0.0000-10.0167 sec =C2=A050.1 MBytes = =C2=A042.0 Mbits/sec =C2=A0403/0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A00 =C2=A0= =C2=A0 =C2=A0142K/516 us =C2=A010169

Thank= s for taking the time to read this and offering comments or suggestions. Al= so note that the=C2=A0current code on the 2-1-1-dev branch=C2=A0is in an ea= rly prototype phase with limited testing with no UDP support and client sid= e output still a TBD.

Bob

This ele= ctronic communication and the information and any files transmitted with it= , or attached to it, are confidential and are intended solely for the use o= f the individual or entity to whom it is addressed and may contain informat= ion that is confidential, legally privileged, protected by privacy laws, or= otherwise restricted from disclosure to anyone else. If you are not the in= tended recipient or the person responsible for delivering the e-mail to the= intended recipient, you are hereby notified that any use, copying, distrib= uting, dissemination, forwarding, printing, or copying of this e-mail is st= rictly prohibited. If you received this e-mail in error, please return the = e-mail to the sender, delete it from your computer, and destroy any printed= copy of it. --0000000000005b2ee605bec4e2b3-- --0000000000006182ea05bec4e24a Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature 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 DrPV5EPUikwiGMDmkX8o6roGiUwyqAp8dMZKJZ/vS/aWEELV+gm21Btr7eqdAWyqm09McVpkM4th v/FOYcj8DeJr8MXmHW53gN2fv0BzQjqAdrdCBPNRAgMBAAGjggHZMIIB1TAOBgNVHQ8BAf8EBAMC BaAwgaMGCCsGAQUFBwEBBIGWMIGTME4GCCsGAQUFBzAChkJodHRwOi8vc2VjdXJlLmdsb2JhbHNp Z24uY29tL2NhY2VydC9nc2djY3IzcGVyc29uYWxzaWduMmNhMjAyMC5jcnQwQQYIKwYBBQUHMAGG NWh0dHA6Ly9vY3NwLmdsb2JhbHNpZ24uY29tL2dzZ2NjcjNwZXJzb25hbHNpZ24yY2EyMDIwME0G A1UdIARGMEQwQgYKKwYBBAGgMgEoCjA0MDIGCCsGAQUFBwIBFiZodHRwczovL3d3dy5nbG9iYWxz aWduLmNvbS9yZXBvc2l0b3J5LzAJBgNVHRMEAjAAMEkGA1UdHwRCMEAwPqA8oDqGOGh0dHA6Ly9j cmwuZ2xvYmFsc2lnbi5jb20vZ3NnY2NyM3BlcnNvbmFsc2lnbjJjYTIwMjAuY3JsMCMGA1UdEQQc MBqBGGJvYi5tY21haG9uQGJyb2FkY29tLmNvbTATBgNVHSUEDDAKBggrBgEFBQcDBDAfBgNVHSME GDAWgBSWM9HmWBdbNHWKgVZk1b5I3qGPzzAdBgNVHQ4EFgQUpyXYr5rh8cZzkns+zXmMG1YkBk4w DQYJKoZIhvcNAQELBQADggEBACfauRPak93nzbpn8UXqRZqg6iUZch/UfGj9flerMl4TlK5jWulz Y+rRg+iWkjiLk3O+kKu6GI8TLXB2rsoTnrHYij96Uad5/Ut3Q5F4S0ILgOWVU38l0VZIGGG0CzG1 eLUgN2zjLg++xJuzqijuKQCJb/3+il2MTJ8dcDaXuYcjg7Vt6+EtCBS1SGMVhOTH4Fp50yGWj8ZA bPF1uuJM+dGLJLheUizCr5J/OBEdENg+DSmrqoZ+kZd76iRaF2CkhboR2394Ft8lFlKQiU0q8lnR 9/kdZ0F0iCcUfhaLaGYWujW7N0LZ+rQuTfuPGLx9zZNeNMWSZi/Pc8vdCO7EnlIxggJtMIICaQIB ATBrMFsxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTEwLwYDVQQDEyhH bG9iYWxTaWduIEdDQyBSMyBQZXJzb25hbFNpZ24gMiBDQSAyMDIwAgwYS+5PXokx35blu9EwDQYJ YIZIAWUDBAIBBQCggdQwLwYJKoZIhvcNAQkEMSIEID/pUbxwZUoL60DQ9kLnyz5NZsW5Oo12YXvi v269eaYWMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTIxMDMzMDE4 MDgyNFowaQYJKoZIhvcNAQkPMVwwWjALBglghkgBZQMEASowCwYJYIZIAWUDBAEWMAsGCWCGSAFl AwQBAjAKBggqhkiG9w0DBzALBgkqhkiG9w0BAQowCwYJKoZIhvcNAQEHMAsGCWCGSAFlAwQCATAN BgkqhkiG9w0BAQEFAASCAQAxeFkUD3JyBG+VnTj62rwhcHZhmcv/teBAD1O1lXvkZVUFcFfZOMBB gKPWIvoLMlJ6MqeNzR/7FA2wksl0mYYXbR4N3/0BHzkwtlmByQ9QMdS4IvVuJEH6+l7CaVCqkoSK jPa82F7BVVplvLkkrdDkYpNDGILRNGLtCOgFSN/v+NUao8Pswd2EzA6eG+4VbWbPdVW0xNGEbC8R BOmHwmPxjZY8vNwIahPX0ndg0IfD4HNdMPbHyIS3KLXq4gAI8MegBVMwN0wbypex7qeCa9bo4riV Z5pn2ownDjAadezOeRtZshu7SLUGbThZNBQWK5XU+2H5lfHYa60nSfbR7KbH --0000000000006182ea05bec4e24a--