From nobody Mon Jul 10 09:36:24 2023 X-Original-To: freebsd-net@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4QzzR72xWYz2tqwh for ; Mon, 10 Jul 2023 09:36:35 +0000 (UTC) (envelope-from Josef.Zahner1@swisscom.com) Received: from mail.swisscom.com (mailout120.swisscom.com [138.188.166.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mail.swisscom.com", Issuer "SwissSign RSA TLS OV ICA 2021 - 1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4QzzR36hNgz4Qg5; Mon, 10 Jul 2023 09:36:31 +0000 (UTC) (envelope-from Josef.Zahner1@swisscom.com) Authentication-Results: mx1.freebsd.org; dkim=none; spf=pass (mx1.freebsd.org: domain of Josef.Zahner1@swisscom.com designates 138.188.166.120 as permitted sender) smtp.mailfrom=Josef.Zahner1@swisscom.com; dmarc=none; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}") Received: by mail.swisscom.com; Mon, 10 Jul 2023 11:36:29 +0200 List-Id: Networking and TCP/IP with FreeBSD List-Archive: https://lists.freebsd.org/archives/freebsd-net List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-net@freebsd.org MIME-Version: 1.0 Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-256; boundary="----=_Part_95457_1099939871.1688981788704" X-Mailer: Totemo_TrustMail_(Notification) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KqR5sIoZGPUwol5gP5QpVd9VGUPDDrHfKX+NyQU0+GIBReW2e1sMTboqqhGjy6Hqw7QVA7Lgba+bPyuwI18u3fgnhC2v8KG8H7tyO7ZXb1RrIkBrSr9qegsQsV2kaLYwKpZzxw8NEgjrcgVwYmrXlgtfGthICWWI2B4YQbeUlHajHOLN7BCN6sMSOaIo1p/4bncExcJB72W7syRP4NC/g3HAG1GPQCE9AifD5+r8Xr5EdmgxehW/d7HmUYfJAWOYLMQdC5PsXFWliS8yENLqUMSwWJbt/xjh0JKTLvT/udMIagaWyPjO4NShZcpwCeBPEFY404kF17LLI0GDraQRtQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=1+C+If3cKEJRwRtog7qbY8AYB62iwG38+isl8p7qq04=; b=ZsZpWzZc9xvACSeB3LogitSpDxBFepGrZq4jv0YrSMO4LwQgfDcIwqu6MslQV7RcMLntFi44L/wU3MVVqkrfeVPMyrkRTEJEA5GwIz259m3HbsI+KecKiVDW7iM9Ry4Fho28j5E/xkeMBtjsE1c5o/F0hURHAQedwGsqdAhBmijZD3bRtAgE0qeQQ1+39NAzo85YyWtqke5yOngaH1d3Yis/AZLJj3GIVvuFaKPFtK0u/0ZayakydHLdGQMcHOgox2QeiVwVROBjjNx+YC/cXSJpdxl32ukZuRduo5OKecnG4qI5GzyT38wSBRQO7NZi+dReoZ2EAWpu/k5Z3mjBVQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=swisscom.com; dmarc=pass action=none header.from=swisscom.com; dkim=pass header.d=swisscom.com; arc=none From: To: CC: Subject: Re: Chelsio NIC with RSS - Traffic distribution to different Queues Thread-Topic: Chelsio NIC with RSS - Traffic distribution to different Queues Thread-Index: AQHZqBPGF/8DZJWBME+vE7NtdY0QYq+eOzWAgAAIwuOAAN8nAIACmRGPgAP6hgCAAl4aG4AAFJ8DgAAEr8iABEDugIAGV5gI Date: Mon, 10 Jul 2023 09:36:24 +0000 Message-ID: References: <8fe00cbc-f218-a587-48d8-1612223ccd49@FreeBSD.org> In-Reply-To: Accept-Language: en-GB, en-US Content-Language: en-GB X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_2e1fccfb-80ca-4fe1-a574-1516544edb53_Enabled=True;MSIP_Label_2e1fccfb-80ca-4fe1-a574-1516544edb53_SiteId=364e5b87-c1c7-420d-9bee-c35d19b557a1;MSIP_Label_2e1fccfb-80ca-4fe1-a574-1516544edb53_SetDate=2023-07-10T08:49:10.8922775Z;MSIP_Label_2e1fccfb-80ca-4fe1-a574-1516544edb53_ContentBits=0;MSIP_Label_2e1fccfb-80ca-4fe1-a574-1516544edb53_Method=Standard x-ms-publictraffictype: Email x-ms-traffictypediagnostic: ZR0P278MB0757:EE_|ZR0P278MB0138:EE_ x-ms-office365-filtering-correlation-id: 396d3c9c-87e3-4e26-c3c3-08db812920dd x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: NSDDVPMQfsXP/4TuHDefKQHKVWV49VzNA5OzeHSkETspWpVPtmwlmCbx4uemD6mEjfP7goSifmzOaj0PnadN6BOsKPSRJSS0/vp3xm33znl6G8cVeSi1IbFDJzX2R6dY8E7xjxEEHCMdmzcPtFSKoAPnePbBl721L86sPVCnoRjRMGCQlIIQZWXOOZCBkUfUO459DQHbucYPhIfZ0aNBGp1szeZ5QC3gLnk9AY7g6UIzYAZbphpCa+GSPJErbnIOcTpKhvFsA18iOUpH8GNBETX7SByS6X4hwRge84oM7wMRAalLppesU2Q2OqtQ2YcJ1caY4aus+tGBYBAG87ENpz7+8bGJYbx92NjOcWm1rdv1SgEsujvVPg+qeZG1dUWqZuWRQjceqNMa9+qS2JAticg3bQdVqgR+2A9cihkyCaIYpJnaReg0XpyIpBx4ra6gRMXq3OdLP/559Ng36Ts5KEVYBx7bSaV5UZy/+BseChmI+tPwQby3/Zgi3NCTbWcIxTYrzZF0rbzqVwLEfNz4Cn5bu4OXM+tysdZH5uz4eue1b920qakVcey4wHzvMLQAk4NC3muqqstjtYHLFmfYm6G9JabxfGp9z16/LzMyHiU= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZR0P278MB0757.CHEP278.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230028)(4636009)(346002)(366004)(396003)(376002)(39860400002)(136003)(451199021)(86362001)(38100700002)(38070700005)(33656002)(71200400001)(55016003)(7696005)(76116006)(450100002)(166002)(122000001)(82960400001)(10290500003)(26005)(6506007)(9686003)(186003)(21615005)(5660300002)(52536014)(2906002)(66556008)(316002)(478600001)(66946007)(8936002)(66476007)(8676002)(10300500001)(83380400001)(4326008)(6916009)(64756008)(66446008)(41300700001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?Windows-1252?Q?qEVNWFPZTDX6Xk/XkTXtbyQMt/qKKJC8YwmQCB9gQd4+4QsGr2JyGQGI?= =?Windows-1252?Q?0DsW+LIg9SDRZlzwUpjDRopw0jEax5LCzJHHRSnOx7SHWt8yoPoYOGrG?= =?Windows-1252?Q?+ya4FE4x2B+Xma5F9wq4N5c9O23VwYkC0vasOMlGgfRlIkWrwDE7JODL?= =?Windows-1252?Q?cENRYVa2qFEs/TpvBrdthoEhr8NB159DqQWIfA04pe9vX4xvqkGG6Al9?= =?Windows-1252?Q?QyEcEerk6ogQfdWvqSKVtR1O3+4chAm0I1R2H+FOq5RwwCQNE/N+QxHu?= =?Windows-1252?Q?BZTpGkbjwVpQvTKrAkfkm0a19hjCOtuvw5He99kZ+wcAREe+DkepwJBp?= =?Windows-1252?Q?da/r0nuczgCOe9MS6+Iu9sPGHurk5+f76XNOS4NQHR435Ch1cWFKDWti?= =?Windows-1252?Q?QC7bHl/NZ4F3A999R8VPZ+JE5pdfwvZtP1mQR41eJzglAYSQNaQHCRIw?= =?Windows-1252?Q?9v2X9zAYYOhq8yfIJ4jq2FnGYrCHtVnv22nabpEOm8CTVS00AVY+bad2?= =?Windows-1252?Q?uSO5ycrZDNHDpVmjRPUwM2s6UXfnymu2ia93a2N7Y1lIop8sdTn+e/EB?= =?Windows-1252?Q?gEFbaO09B2b6N0DCweYEDXPjBpAK8GXZ8Hc5o0qaUKBpCNxAOaaigEH7?= =?Windows-1252?Q?eHAVFnEJ0E7onjbtsB6ZC30LrXsMLm/SAHJ5FKoZO4rHaV7OxZsCyGiw?= =?Windows-1252?Q?1H+5SyX/PrSPozWt4w66w/fZ0b4XsZ3qU+GGtLk3PIsJTGazfG8S14+x?= =?Windows-1252?Q?YK+QSmRimYmy9J5SQofVU4+0olnwt/DzJ8AIlmBNOZ8D5Wd++3l7gjLV?= =?Windows-1252?Q?o3N4v84DdN7VW38PHUF7Gfu5LmX7Eo8AL+TFCRKXogA5hwgR09/8Eb1a?= =?Windows-1252?Q?mmleTFF0C++3o3fGZuwW2nA2rr3kUImLH/zQNjlfN7/Bh5B7GHnIWj98?= =?Windows-1252?Q?75dbxSRieNfu5QMwcitMFpDSBRPGTQAnMlUq2yasESN45pHa/EkdLv2s?= =?Windows-1252?Q?NRNwen04G8AYlIt74PR67Ch/QFu201tOczQ8MaOd0Us4Sk5/mhN2fmWE?= =?Windows-1252?Q?NIddD/lnsF2Yx4uPua0XaVMEX/39AUNIs76GtmHmSOra8fmIGa26GeZP?= =?Windows-1252?Q?t8/cOVGDvn0v/uENQJ2wp04BoLM7vtpDVzGRQRlJ/kNLuMQS7wNnzmwO?= =?Windows-1252?Q?5uVHh9Mkl81ZGdqJi7acbdCOjixLGP6xVOOWFuSn33EEKltJvhytG0pq?= =?Windows-1252?Q?gz6iZ74Dm5tdomkgffxEmgWJWLEaICJpumKSllF1Wq29skCSSeKWZhCJ?= =?Windows-1252?Q?VYqz7QDdWq6jS55Ap/GA3kAxgqHU298Ek660fVcBwre+NZQYdHcnT3mP?= =?Windows-1252?Q?1OCr36kuW3481uTeuz0FjUY3WxUpT1bTyEXv2RpbNI+VXUUSD/+1HLHt?= =?Windows-1252?Q?IikYJmWozXFBrnW104Q56NUiz7CT77Btx/XXBDDXKr9dQwhKHeZfCnLA?= =?Windows-1252?Q?Uq0LZhqBTa6te0llJWAdYepYt1l9enUL0Uo9Y9rukj2nrrorzuVJfWzz?= =?Windows-1252?Q?VMbOq0xRmmjC3rXFM2NGanbFjIdw+yTn5nHzwhRZ6MkZyEm3Mv8dVWia?= =?Windows-1252?Q?zdvoBDdXFlH3EISGU+abxoh9WwhenDGjTVbE52wXXReQKcRZ+V+5hfeA?= =?Windows-1252?Q?V3Yt3Rws/RVGaifj0kN9+H7DTXjPd9i5VeEVac2QU/94tupbHu1c0zHW?= =?Windows-1252?Q?2gfGKWaRRk6XzSqaGcc=3D?= X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: ZR0P278MB0757.CHEP278.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: 396d3c9c-87e3-4e26-c3c3-08db812920dd X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jul 2023 09:36:24.7743 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 364e5b87-c1c7-420d-9bee-c35d19b557a1 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Ca2sJWHbbVJN2uRhyI8ekSMr3ZKzO0EPbq61up6CH9qiT1fpHv4xJf6Avl977SZPUrk/0uJ3vNW0fa6xXTSYGdLUzTsjz46OAQ5f8e2Yan4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZR0P278MB0138 X-OriginatorOrg: swisscom.com X-CFilter-Loop: Reflected X-Trustmail: processed X-Spamd-Result: default: False [-4.58 / 15.00]; SIGNED_SMIME(-2.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; ARC_REJECT(1.00)[signature check failed: fail, {[1] = sig:microsoft.com:reject}]; NEURAL_HAM_MEDIUM(-1.00)[-0.999]; NEURAL_HAM_SHORT(-1.00)[-0.995]; R_SPF_ALLOW(-0.20)[+ip4:138.188.166.96/27]; MIME_GOOD(-0.20)[multipart/signed,multipart/alternative,text/plain]; RCVD_IN_DNSWL_MED(-0.20)[138.188.166.120:from]; XM_UA_NO_VERSION(0.01)[]; MLMMJ_DEST(0.00)[freebsd-net@freebsd.org]; R_DKIM_NA(0.00)[]; MIME_TRACE(0.00)[0:+,1:+,2:+,3:~,4:~]; FROM_EQ_ENVFROM(0.00)[]; FROM_NO_DN(0.00)[]; RCVD_TLS_LAST(0.00)[]; DMARC_NA(0.00)[swisscom.com]; TO_MATCH_ENVRCPT_ALL(0.00)[]; RCPT_COUNT_TWO(0.00)[2]; HAS_ATTACHMENT(0.00)[]; ASN(0.00)[asn:3303, ipnet:138.188.0.0/16, country:CH]; TO_DN_NONE(0.00)[]; RCVD_COUNT_TWO(0.00)[2] X-Rspamd-Queue-Id: 4QzzR36hNgz4Qg5 X-Spamd-Bar: ---- X-ThisMailContainsUnwantedMimeParts: N ------=_Part_95457_1099939871.1688981788704 Content-Type: multipart/alternative; boundary="_000_ZR0P278MB075798BC3BA3A925AC7F5E54D930AZR0P278MB0757CHEP_" Content-Language: en-GB --_000_ZR0P278MB075798BC3BA3A925AC7F5E54D930AZR0P278MB0757CHEP_ Content-Type: text/plain; charset="Windows-1252" Content-Transfer-Encoding: quoted-printable Ok we are getting closer to a solution. But I=92m a little bit confused, I= =92ll try to explain why. I=92ve removed the following sysctl values, as you stated that they are not= official FreeBSD values: - net.inet.rss.bits=3D"2" - net.inet.rss.enabled=3D"1" - net.isr.bindthreads=3D"1" - net.isr.maxthreads=3D"-1" Without the setting above and without your proposed sysctl values, my syste= m was stable and the traffic distributed over all CPUs (even HT cores). So = no more drops on CARP if CPU0 has had high load. It looks like my problem i= s clearly related to the =93Custom=94 OPNsense RSS values above. As the RSS= sysctl values are noted in the OPNsense guide (https://docs.opnsense.org/t= roubleshooting/performance.html), my intention was, that those values needs= to be set anyway for RSS. But it seems that those 4 values are making the = thing worse! Back to your topic. You are right, queue-0 does only control traffic if I= =92m enabling your sysctl values. Where can I see which protocols are falli= ng into control traffic (queue 0)? So your change works as expected, thanks= a lot! As you stated, queue 0 is never CPU 0, which is important to know. I=92m pretty sure that I needed the RSS values above to get RSS work on int= el NICs and with =93netstat -Q=94 I could see the RSS queues. With Chelsio = it seems that the FreeBSD process =93netisr=94 doesn=92t do the RSS stuff a= nd =93netstat -Q=94 shows nothing about RSS. For me this means that your dr= iver directly does the RSS magic, is this correct? Please help to shed ligh= t on this topic. Cheers Josef --_000_ZR0P278MB075798BC3BA3A925AC7F5E54D930AZR0P278MB0757CHEP_ Content-Type: text/html; charset="Windows-1252" Content-Transfer-Encoding: quoted-printable

Ok we are getting closer to a solution. But I=92m a = little bit confused, I=92ll try to explain why.

 

I=92ve removed the following sysctl values, as you s= tated that they are not official FreeBSD values:

- net.inet.rss.bits=3D"2"
- net.inet.rss.enabled=3D"1"
- net.isr.bindthreads=3D"1"
- net.isr.maxthreads=3D"-1"

 

Without the setting above and without your proposed = sysctl values, my system was stable and the traffic distributed over all CP= Us (even HT cores). So no more drops on CARP if CPU0 has had high load. It looks like my problem is clearly relate= d to the =93Custom=94 OPNsense RSS values above. As the RSS sysctl values a= re noted in the OPNsense guide (https://docs.opnsense.org/troubleshooting/perfo= rmance.html), my intention was, that those values needs to be set anyway for RSS. But it= seems that those 4 values are making the thing worse!

 

Back to your topic. You are right, queue-0 does only= control traffic if I=92m enabling your sysctl values. Where can I see whic= h protocols are falling into control traffic (queue 0)? So your change works as expected, thanks a lot!

 

As you stated, queue 0 = is never CPU 0, which is important to know.

 

I=92= m pretty sure that I needed the RSS values above to get RSS work on intel N= ICs and with =93netstat -Q=94 I could see t= he RSS queues. With Chelsio it seems that the FreeBSD process =93netisr=94 = doesn=92t do the RSS stuff and =93netstat -Q=94 shows nothing about RSS. Fo= r me this means that your driver directly does the RSS magic, is this correct? Please help to shed light on this topic.<= /o:p>

 

Chee= rs Josef

--_000_ZR0P278MB075798BC3BA3A925AC7F5E54D930AZR0P278MB0757CHEP_-- ------=_Part_95457_1099939871.1688981788704 Content-Type: application/pkcs7-signature; name=smime.p7s; smime-type=signed-data Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCAMIIH KzCCBROgAwIBAgIUTx1IzA+W/yTzA5lqYJox9cE9fx0wDQYJKoZIhvcNAQELBQAwUzELMAkGA1UE BhMCQ0gxFTATBgNVBAoTDFN3aXNzU2lnbiBBRzEtMCsGA1UEAxMkU3dpc3NTaWduIFJTQSBTTUlN RSBMQ1AgSUNBIDIwMjEgLSAyMB4XDTIyMDQyOTA5MDMxMloXDTI1MDQyOTA5MDMxMlowgYMxCzAJ BgNVBAYTAkNIMR4wHAYDVQQKExVTd2lzc2NvbSAoU2Nod2VpeikgQUcxKTAnBgkqhkiG9w0BCQEW Gmpvc2VmLnphaG5lcjFAc3dpc3Njb20uY29tMSkwJwYDVQQDEyBTZWN1cmUgTWFpbDogR2F0ZXdh eSBDZXJ0aWZpY2F0ZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALWL60L8MKsvXVrM C2QjifRYKIolHpx2KvKSyk75F6eEFVnz19XTfK+kKbkZzc9BMYL9xK78nYEoC8wPyEPwcxrw4i8l SPmhkZ674JEndHrX6qHJOku5+OyIhbLa550XtSZRJSd7l0NnYQWCFtWUAPL/j/ButDdDgp7sScWN D+BmOZw0/FyveEgqeJBAAcxZ5em8/2Ub/xew8LBdwOXYnzG6VIck+jTHv6RhNZ1+RfOvip+3sOwm TsvRL0oC8QGWC86OAq81+tCeYQPoywrybSjqYCwE+ZRb5djg76DvwgjfrVF8grddF6OSwkdUxSlJ USZ50RB4WO23r6YWjYX272ECAwEAAaOCAsQwggLAMCUGA1UdEQQeMByBGmpvc2VmLnphaG5lcjFA c3dpc3Njb20uY29tMA4GA1UdDwEB/wQEAwIEsDATBgNVHSUEDDAKBggrBgEFBQcDBDAdBgNVHQ4E FgQUNxi5osjEbpfWsyrkPqFhIrG5I9gwHwYDVR0jBBgwFoAU+lTAgqb+lr0Ex1+fX4IMPcOVT0cw gf8GA1UdHwSB9zCB9DBHoEWgQ4ZBaHR0cDovL2NybC5zd2lzc3NpZ24ubmV0L0ZBNTRDMDgyQTZG RTk2QkQwNEM3NUY5RjVGODIwQzNEQzM5NTRGNDcwgaiggaWggaKGgZ9sZGFwOi8vZGlyZWN0b3J5 LnN3aXNzc2lnbi5uZXQvQ049RkE1NEMwODJBNkZFOTZCRDA0Qzc1RjlGNUY4MjBDM0RDMzk1NEY0 NyUyQ089U3dpc3NTaWduJTJDQz1DSD9jZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0P2Jhc2U/b2Jq ZWN0Q2xhc3M9Y1JMRGlzdHJpYnV0aW9uUG9pbnQwZwYDVR0gBGAwXjBSBghghXQBWQIBCzBGMEQG CCsGAQUFBwIBFjhodHRwczovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS9Td2lzc1NpZ25fQ1BT X1NNSU1FLnBkZjAIBgYEAI96AQMwgcYGCCsGAQUFBwEBBIG5MIG2MGQGCCsGAQUFBzAChlhodHRw Oi8vc3dpc3NzaWduLm5ldC9jZ2ktYmluL2F1dGhvcml0eS9kb3dubG9hZC9GQTU0QzA4MkE2RkU5 NkJEMDRDNzVGOUY1RjgyMEMzREMzOTU0RjQ3ME4GCCsGAQUFBzABhkJodHRwOi8vb2NzcC5zd2lz c3NpZ24ubmV0L0ZBNTRDMDgyQTZGRTk2QkQwNEM3NUY5RjVGODIwQzNEQzM5NTRGNDcwDQYJKoZI hvcNAQELBQADggIBAKC/bdS77QzqssisgA9nHbH+E0q2i4Ge2o3BxSlFxp/rzqXW0jpOb4ntgqQ5 /JECExksUdzjwqARiT/grBfZedbpQK40nNe3fKoZDQpmF8P8T34Ngf13EtpIm7+IJOXjhBQ6PYeM 1vLTn/g0EUJK3k9fdw3acOUHVQ4dstKP1q9IB5FGtiAIfUtk0m9RT0aJjMqQG1l33ignJrfGZ+R2 X121LjxJ+6gFzWLKklJIfZtqxDGeLIjm5ixHeOrkj7zYily3W16I3iFJnvYL0t1x9UHFp+fWuNUh HiqMK48mLHDzG/ffw3fSgDrnLunlxd4uHz9Io4IFwOKjiOJNxPzuQ6kfibasoKhv/MTFXarfXR7R fAWpOgl9EhxKBJqQkDLZAfCjYQwCU+mThs1p9Sc/JG1IZ2jI3XD4fCHnejMA/RlbINc5uOrPvRys GGPYo5UmPZ4yj4vJRa+U9udZRO5YZrpIto5J8MxZ3Y+cizKUkovzqIVdg2gLj7+Ij4YSRxK5HnoE dN7EPmbfX3hLnAmsG0cft84/o+r2xMQiMXQOmeTI2ZnGk23MF3vyUExkEhcFtAkVup/XiAjcs9St /kD47K7tVNkZGxN0XnaILJt1R6pAGo6Xj9WfGnRX6Ph3PJ+XguEhMhLVEfuuBUuAGFUWX9hovJuM X8C83YJTkvTzbmNAMIIHRzCCBS+gAwIBAgIPLFqp2VT9squWrRe2X4z0MA0GCSqGSIb3DQEBCwUA MFMxCzAJBgNVBAYTAkNIMRUwEwYDVQQKEwxTd2lzc1NpZ24gQUcxLTArBgNVBAMTJFN3aXNzU2ln biBSU0EgU01JTUUgUm9vdCBDQSAyMDIxIC0gMTAeFw0yMTA4MDQxMjEyNTlaFw0zNjA3MzExMjEy NTlaMFMxCzAJBgNVBAYTAkNIMRUwEwYDVQQKEwxTd2lzc1NpZ24gQUcxLTArBgNVBAMTJFN3aXNz U2lnbiBSU0EgU01JTUUgTENQIElDQSAyMDIxIC0gMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC AgoCggIBAL0FGcjUDXE+AwMQtJMWAOvPI9rAByO7UTw4EtNAdcNyY3jrCyd5X41WiKnZfVlD0YgX duPHRour3+KIqj0SwJ0I7UEQ19zvSeC/MVLWg52Z/PKaIoBmVawQlJChzIuV0NZIXTco3xrtGCXf Q8MhREG8FaWkg4LGIIBSAqiAZgG+btlFlnXQFyB8ZT+BrX2OWEYj3FIn2kI+O9xY8kqmJJsb6zQJ H8zhxdpA871kQVjEifuDis0hgFhnCGwiNw+fk60L3/un/cX/aooD2B+8r8LJDXh89U49Ulo8QK58 yzj61GGHZ52kbHiKtBNpVXzmJVTfCM+mLzhMiBSVHCpRaWiPXnwDmvukZUxwj75KXKreu527fX1a OILnuQCKRUevIL6DALhJQBifQKpf/9wCnH732eYtYCZacZ15pGYcwkKYl9fLcOOLxKdW6CBxdsSu eSvmyazWTKnnCINHthUiR1O6IkekXZ3tZn93kQ5PsoF1L+Trv9eBOtTCRbApHZWb/TRvRmnPc3ge D0VOsE/ncDa5yLZ7st/e9HyEUmKOG7TzMa4KVjsqGf7QEFTnRhI4TYGdhawE57fp13DbjvRwz+Ia 0wxpNecDSuDgyxf1M/S9fiJClZkzCo3CpxiTR7AyrLhEMBjvEfgZc2REZPacmeBRFtBLXCBJwXU0 zNFb6tGtAgMBAAGjggIWMIICEjAOBgNVHQ8BAf8EBAMCAQYwEwYDVR0lBAwwCgYIKwYBBQUHAwQw EgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU+lTAgqb+lr0Ex1+fX4IMPcOVT0cwHwYDVR0j BBgwFoAUCQy/KqIdBCQMsvlACkHCz1pyqoAwgf8GA1UdHwSB9zCB9DBHoEWgQ4ZBaHR0cDovL2Ny bC5zd2lzc3NpZ24ubmV0LzA5MENCRjJBQTIxRDA0MjQwQ0IyRjk0MDBBNDFDMkNGNUE3MkFBODAw gaiggaWggaKGgZ9sZGFwOi8vZGlyZWN0b3J5LnN3aXNzc2lnbi5uZXQvQ049MDkwQ0JGMkFBMjFE MDQyNDBDQjJGOTQwMEE0MUMyQ0Y1QTcyQUE4MCUyQ089U3dpc3NTaWduJTJDQz1DSD9jZXJ0aWZp Y2F0ZVJldm9jYXRpb25MaXN0P2Jhc2U/b2JqZWN0Q2xhc3M9Y1JMRGlzdHJpYnV0aW9uUG9pbnQw HwYDVR0gBBgwFjAKBghghXQBWQIBCzAIBgYEAI96AQMwdAYIKwYBBQUHAQEEaDBmMGQGCCsGAQUF BzAChlhodHRwOi8vc3dpc3NzaWduLm5ldC9jZ2ktYmluL2F1dGhvcml0eS9kb3dubG9hZC8wOTBD QkYyQUEyMUQwNDI0MENCMkY5NDAwQTQxQzJDRjVBNzJBQTgwMA0GCSqGSIb3DQEBCwUAA4ICAQAH Dx6XBIV6CZbsgakZM4/C04La3NPAJCJEDZUL8RYYpySTwDcX1D4zYDyVRhWVEom3fWkB7Nxdo/o4 VbTcg+KJdTvRADn3ycapTHPOOfyukWFmAKPpuLwwl3kwfkLZFFgWuGJF5/HqmnjYstzQAUgXVmqR phrW/PQSBM4v1cTeKdd7f23A8uh7etz9/yB+l6b+zU0gmTZrPDLFmfbbphKtJ52/GF7suI3qA6q9 TuHGkLxtdqIhhXLsMhJfAS33TYZz4zhBuFR/zJD4+IrdB7EYhaK6w47jpyfrvd0b/UoLOZr/UuWn 0PFp5QeXGON556v/Za1ZZk0WGgievGlwrnyh1ollExlAnA2WMxvrqAZvk6l5qc3Sy73f9L0atmAm o3qymnXvVrN8y5DNWqP2DEXLrrIh2WuFlxtr9CLELZ4AnGbl8z89mD1ZdnvfsbyMBuy6hEQfVvGy CUvPEAjBuhju5XAiKbplyJ4pvpjLifpPOl6s2aFTlQeJRlInMhD+q70HXhx+HQIAmjX2nt9G/J4X +nsg0MfRx5NVOrmwXyQW0wzVvP7T+xY5M2p2LyQY7sjuKi4Lf5XgMPHgXWwZxqKAVe1SkuaiXkuy z6L01caBYVw8Wt57GgtoF1yQMmAGTrM4cpVjBl2euDYKi8h6/+66YrRbIJruLHX5INyx3Y9fEjCC BoswggRzoAMCAQICEADeTFUg9tz0AhsPEVT3jRAwDQYJKoZIhvcNAQELBQAwRTELMAkGA1UEBhMC Q0gxFTATBgNVBAoTDFN3aXNzU2lnbiBBRzEfMB0GA1UEAxMWU3dpc3NTaWduIEdvbGQgQ0EgLSBH MjAeFw0yMTA4MDMxMzE0NTVaFw0zNjEwMjMxMzE0NTVaMFMxCzAJBgNVBAYTAkNIMRUwEwYDVQQK EwxTd2lzc1NpZ24gQUcxLTArBgNVBAMTJFN3aXNzU2lnbiBSU0EgU01JTUUgUm9vdCBDQSAyMDIx IC0gMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANayuLQ4jya6N8gBI0UWfr5kOIZy ZmFYjSSKWbMMoSqrfruFfGVmcKfpItvuuzL6q7GGP6tIgbir8yrdN8cuC/ar31WtVCAUOreJRG3n 6D+uiCEYjkdWlQDJ7GVuVkcUTa0uJtLUi2zK8zMt+fCbjreGJoHnC56LDHwFpzx6+fCFkJyJZzl1 EbFjsNQjLH3cHyt27QStuhHJB0kN4ygPLhEU0ray/3i4/lpTgCSsC0i6TjIxUeyq/rtELAvX+X2r jdpsqwjd80E9j/VBQVzGzFHKDkQft2qAdlVpUeZM/ReA+7NU7rBKHTOTBnm5YRGs5A5bs93gsSVc t9TTzfR7ngFUK4KQoeHKQ43wQaQcB8DWMxajRUaPhExp/ZNXndPlb8skDDEtA5jCADlEeSKBbeTq /AtkJm78yp4aA0Ttf01N6RGydr2GfXu7VD9RkEfHi/j/TizyCDCMGcEsRzWevatTpCKunwwhGSm9 npvPhNyO0TVLIhCBG2LtwEvTK5AiSR8tIa6Rxd/x1kFUcg7eyjQQ9cmandVcFuTNJbHHqHFGrPhT hReJqyQaOBgyJHPpVa74gGMDb4Sw36CUtalT8Itq9VR55f9bnKJvIuH/QCllbG+OSGkxPoEbO4tY +lsvO2t9ayTwvPKN5ZrmrHjL2IIrABcdeWoJLtZuds8w+9tZAgMBAAGjggFnMIIBYzAPBgNVHRMB Af8EBTADAQH/MB0GA1UdDgQWBBQJDL8qoh0EJAyy+UAKQcLPWnKqgDAfBgNVHSMEGDAWgBRbJXuW pGVRfrg588B4Zl7oOufw7jAOBgNVHQ8BAf8EBAMCAQYwgf8GA1UdHwSB9zCB9DBHoEWgQ4ZBaHR0 cDovL2NybC5zd2lzc3NpZ24ubmV0LzVCMjU3Qjk2QTQ2NTUxN0VCODM5RjNDMDc4NjY1RUU4M0FF N0YwRUUwgaiggaWggaKGgZ9sZGFwOi8vZGlyZWN0b3J5LnN3aXNzc2lnbi5uZXQvQ049NUIyNTdC OTZBNDY1NTE3RUI4MzlGM0MwNzg2NjVFRTgzQUU3RjBFRSUyQ089U3dpc3NTaWduJTJDQz1DSD9j ZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0P2Jhc2U/b2JqZWN0Q2xhc3M9Y1JMRGlzdHJpYnV0aW9u UG9pbnQwDQYJKoZIhvcNAQELBQADggIBAAL46l3QisysCAM2VGb/CimG4VSDLDPox2yuEKlUgX8q LYgmraaoNCgPGQapneIClQQyZEwLyvnjfcMTW+iXQI534+OCgYetAWAHw8XhIP23MJc+uhxxdItf Taex/k58CXh6h1/xrKElEZfHLBGckOpyFj0CNam75SPYH1JAt9COXdojvDPpMv24dZ9Dvj1XS4dh 3u2WyHB8frcT4QlAuxkCBw9r3R/SzA5aEhjkwbGcvr4rER7lmsXgoTWx5OGyYq7A6Gx8lof6YN4t iRwUQUA5onfvsBVbAT8ezuYUqZy+gp+xYhffIkO1Mm+3BfwYytp6Q11ltSb+WkGhaXSX8UNRjdx/ 2VeEpx1R8oJtqw5806Pl4MmVBG3yx5134qX4yMW5ZwZvbf3Gf26+xWrbBDbbMG9dvciZ/sRylsy5 y3SLJKkTC3i1Bsr1iyYWc5gdcZWd8/BS6WxVfgUiF9CJPGXtV4B3/NisvbNTjwd7WBN6sefJsPjj yaGR4nTOymgbshvElmCUkNvlCLc+zIh9Z8BV/Chz3hw72s8PHLYI0jM++TySSKBacIgeEBeYenbd YEg+ckU+cGuM60h8WbVWBRIUCkZNAjYJ0WxzIVIn2GvE0nKnTH7bNs7TPctc4u4b3fk6/U0T/w7O UrYWcTOgl8Vf9oIYF7U6m5u2eKsb6/1aMIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3 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 AA== ------=_Part_95457_1099939871.1688981788704--