From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from emea01-db3-obe.outbound.protection.outlook.com (mail-db3on0693.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe04::693]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client CN "mail.protection.outlook.com", Issuer "MSIT Machine Auth CA 2" (verified OK)) by huchra.bufferbloat.net (Postfix) with ESMTPS id 43D0A21F3B4 for ; Wed, 18 Nov 2015 03:17:51 -0800 (PST) Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=kevin@darbyshire-bryant.me.uk; Received: from [IPv6:2001:470:183f:da2b::632f:a7da] (2001:470:183f:da2b::632f:a7da) by AM2PR07MB0930.eurprd07.prod.outlook.com (10.162.37.13) with Microsoft SMTP Server (TLS) id 15.1.331.20; Wed, 18 Nov 2015 11:17:47 +0000 To: Dave Taht References: From: Kevin Darbyshire-Bryant X-Enigmail-Draft-Status: N1110 Message-ID: <564C5E56.3060700@darbyshire-bryant.me.uk> Date: Wed, 18 Nov 2015 11:17:42 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-512; boundary="------------ms040009030807060507080704" X-Originating-IP: [2001:470:183f:da2b::632f:a7da] X-ClientProxiedBy: VI1PR04CA0026.eurprd04.prod.outlook.com (25.163.3.36) To AM2PR07MB0930.eurprd07.prod.outlook.com (25.162.37.13) X-Microsoft-Exchange-Diagnostics: 1; AM2PR07MB0930; 2:lFR0lkZXjETYdDKEezWI/0o5P9qZHqf1worQcrXvlBO+TuAP8TxwG+xZ4hJySSnNBJ9k7raOcfaHjUbxrSbZrvVop+mXbTOeGTSyej9krwtuBH61SM7G0pzCJgO3jTQu+5JLQmLJRkiO/+Li9Nqm4Q==; 3:ulhLGKAMHNJFsG3Nun/6gO5uWgZzYe5ZaISPbs7m96WFdtDIoKsgQBtng/Z0uBvoxcuXDgYikYNNfathQVs1F6hVgzUEHSKUQZ1B7f/0ww7g8sVfw/Oqi6oZlpwEAOrY; 25:ox7mnYny1OLph3Lr3YMaVxo2O3XJlCTD+dZrJVonfiU8wRMh64ly1fK9LGmxwovjaW3oPYesLpcI7eN5lOb2wZJtNLPPBjWiZqM4739x/k63r1O0RrUgHqmPjorzK8eFiVckSY4x++wXGV8ACnO1LoZCn1z0nwohzcBKg5vamisLSpZ47Dpxx/MTrgudKTQ2TpJ1fVcSsNey5/a1efkvQ8xVcGW+9HIKOmVa+8RiUj4mZcbJuLgB1qhEGduOT8yZ3OtdIbOh0b2IJBfZ3okJKg==; 4:59sqErVKRBf56PG1EStmMgrDRdOxWg/BjKZvnMfTgP/tA+YmGwuHzSzKKy1/4J9m0cLplZE9HQM/+tpcUgHYCrw7mA1ctELHeE5FX1DQPzRGwD+5dKjvaAhrwXeAJLP+7BZLAke4c6kq0vY3ZyuDVFdBFFJNea03xT2qB7hHTWZH8wg50jwiInKt8wEMbLwrPZX143aAMPpKujHCY4M/QPFY67knt0Bjefw9/tLQx9jQOQIzhvWpYXfokyWHTyXCZusOcrJN39bjWIwrhqQhl6zKPifIwOUiKDkyS7TDR/qGXmjRMweU0UWImt0HYjNORe0fDc2Y/J3Sbc2YaWYcCN/EAVV1Tj0fV9zvolVyNfp/8KQf4nWCs4jAEPHppoDX X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:AM2PR07MB0930; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(520078)(5005006)(8121501046)(10201501046)(3002001); SRVR:AM2PR07MB0930; BCL:0; PCL:0; RULEID:; SRVR:AM2PR07MB0930; X-Forefront-PRVS: 0764C4A8CD X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(189002)(199003)(479174004)(24454002)(77096005)(42186005)(2950100001)(568964002)(83506001)(92566002)(122386002)(84326002)(586003)(512874002)(86362001)(87976001)(33656002)(5001960100002)(110136002)(50986999)(36756003)(80316001)(74482002)(5890100001)(40100003)(19580405001)(5004730100002)(189998001)(5007970100001)(97736004)(65806001)(81156007)(4001350100001)(101416001)(65956001)(5001920100001)(64126003)(65816999)(5008740100001)(87266999)(76176999)(54356999)(59896002)(105586002)(106356001)(7059030)(3826002)(5001840100002); DIR:OUT; SFP:1101; SCL:1; SRVR:AM2PR07MB0930; H:[IPv6:2001:470:183f:da2b::632f:a7da]; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: darbyshire-bryant.me.uk does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM2PR07MB0930; 23:FH2DN5USNl+8APE2V0owszCJKj5cTiADC4OH4Ffpe?= =?us-ascii?Q?p/Zc27nZqrzWd6sTOFQgfFSe5rdq+H96aDQzPd9TgBRWlXNV+ar8BNTRa0Ik?= =?us-ascii?Q?3Z5dp+dbfoGXb+uWnZxG4a6NoYFyJ+vH7qllpJ2oHuX2+NqgO7zZsbESkUX2?= =?us-ascii?Q?8Ql3hh4gbzx7h92A5j30LT3t5q1toZclHtao/Tde6JV7GPH4z602a5FLc/+S?= =?us-ascii?Q?n/NTAdHDQ9hOYBEVtEFkNJjlW1RTMvJe8a/iKA/SGw6i9W+e9e4Nd3+9SZcZ?= =?us-ascii?Q?2D9d5CX1es642odN4U7mwaxPBkVT9BnDzRRcQfeWWrBZLHCvFe3DUjobkVGH?= =?us-ascii?Q?eF91WQcB/hM51+iBRfemhYSlN0EP93gjFz4Qp50ekQhjqyUWAfhw2d1j34xr?= =?us-ascii?Q?PAkot15gUZfvNVqxE7NHuOFVQwiNX9FIQ6Th7Lb+CLrCnS3fsKW+gXj4H7gm?= =?us-ascii?Q?xz4O6tPk8zhiWvkW4V2BIRJfd2B6Q/sI+Qx2Fz+E3NOgsg7q7EPx6makFt7h?= =?us-ascii?Q?+mLYak90phCudqNawy60RRrr3jgWlU2nHchRzrldfcVqbjGoypawNSKp5HM3?= =?us-ascii?Q?pvlXd/f4QtxPd1GegHZ2MZ+mVVHexLttHrRguMDfMfLlE8057ZSNhZuAhdiT?= =?us-ascii?Q?aLQHtcSpHP7dlkxIBVaxQSGta1dCEPMR6cgduY3kky/6sSc6J+xbn9MT50k+?= =?us-ascii?Q?K7/YML/bLnL4Pzye3xBMUfQqMBgQTx0BlNyvC8KIR+0MD0sspTyYDnFBc0XM?= =?us-ascii?Q?h2fQ2Q0jro644swuRyWAGlZjFKeF0swfsCi4mpys2WGdvmA0EMj5W8nTM3jx?= =?us-ascii?Q?mhhCZb+3o+/fx270X770q22xI+WysbcKiBOByRPl3hhQYdbNGdBAQIqcVKwj?= =?us-ascii?Q?QM8Tc+DEY4QvIlVdCwB6oJSVfSsmH+DY8n5jHWAe0ldvDMq5C1cS6DIrOJMy?= =?us-ascii?Q?8jFIzjPLAlFCIFMv0jxcP4TKTAq2sG3GJ7OsKyl+VhFhzn0A7iUVphakN4UW?= =?us-ascii?Q?mLGQNJwOD1sTWgGNZu0uLdnGFoUHagWqrEAakWZ+EJdM2HgJupEheC0VJmio?= =?us-ascii?Q?f9eRfY6ynIiNp9AWFOi30YPOcIobiuIcuH/ptXRp4oqVRHNVIUXPnIjAjd7K?= =?us-ascii?Q?6V4xCtru2N5OFUXOsrztCjvICbTph+s3rIOh8t3PDFJXiMUJn2FeC7tFa8Ry?= =?us-ascii?Q?jAE79b+ERG9XViIdIlk9IPQBPVp+vUi50rp6KxVZlqF3cbVgzcFKesJNiZeV?= =?us-ascii?Q?k5+PnN9K+2XdNs8CILzQfytAYJrGv3G9jFoYbBYn/oJ7eixityP1g21Jyt41?= =?us-ascii?B?Zz09?= X-Microsoft-Exchange-Diagnostics: 1; AM2PR07MB0930; 5:ekm+EfQM4O20KzN8pMgl1Vts27r731wmDJhHKyZPXTfXTWaVOeD8o5pb21SqaXVv1GOdFtZQqirLug+PmKasFcV/AzkzqeVd6A6JDofKlUZ6tIv8O/YVGeDoouixs++sneC6Vl2xvnqVW/tesewCkQ==; 24:Rg2KqP4EZLAJXGxJyqoe/ZPq0DfDYzvzCgYLkN3iYXmi1XscD4gR2hrg1hrGaF+oKHVRCMPHZ3QaoMWQakqKr9V0Y6iOg6fO3KSLQXhhvAM= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: darbyshire-bryant.me.uk X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Nov 2015 11:17:47.4389 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM2PR07MB0930 Cc: cake@lists.bufferbloat.net, Jesper Dangaard Brouer Subject: Re: [Cake] Announce - possible new feature - DSCP cleaning X-BeenThere: cake@lists.bufferbloat.net X-Mailman-Version: 2.1.13 Precedence: list List-Id: Cake - FQ_codel the next generation List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Nov 2015 11:18:14 -0000 --------------ms040009030807060507080704 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On 17/11/15 19:05, Dave Taht wrote: > I have had about .01% braincells on cake for 2 months, and only > causually was reading the list. It is my hope that this time - as the > test results are looking quite good - we can at least get an RFC patch > upstream for further review. > > A) One big debate I remember going by was about accuracy of various > settings, where one value would be weirdly rounded to another when > read back. Can, opener, worms all over the place! I suspect you're referring to tin target values (and intervals) drifting away from the defaults of 5ms/100ms. This is because cake_set_rate() calculates how long a MTU*1.5 packet will take to send and if it's longer than the supplied target value it'll use the calculated value instead. Interval is sanity checked to be at least 'used_target' * 8. This is most obviously observed in a rate specified & diffserv config where tin++ gets reduced bandwidth (reduced rate) so the likelihood of MTU*1.5 duration exceeding specified target increases. This looks like weird rounding. The jury hasn't even been assembled, let alone sat as to whether these (potentially) increasing targets/intervals on 'slow' links is a good thing(tm) or not. > I do not have a problem with a pure 64 bit interface between userspace > and kernelspace, if that will alleviate the problems. The cost of > doing that, now, is trivial. Again, I think what you're seeing/thinking of is evidence of an internal calculation process rather than insufficient bits between kernel/user space. Although it does only speak in microsecond (not millisecond or nanosecond) resolution. > Try to cast yourself into a future - 20 years ahead - with a 10240 > cpus embedded in your head, when the onboard network-to-brain > interfaces have 8ns latency each, and think upon how someone would > curse us for not having forbearance enough to understand how much > different the brain-cell dscp had to be to get multicast to all the > neurons.... (or something like that. :)) > > Another way to help spur visualization like that, is think 20 years > past - to 1995 - and where networking stood then. > > B) Also, I think, but am not sure, that most parsers of tc -s qdisc > output will break unless the root of the qdisc has 0 indentation and > the rest, at least 2. > > C) And I kind of expect netdev to want all those stats in some sysfs > thing rather than tc, but will defer to stephen/jesper - guys, will > this sort of tc output go upstream? > > d@snapon:~/git/tc-adv/tc$ ./tc -s qdisc show dev eno1 > qdisc cake 8002: root refcnt 2 unlimited diffserv4 flows rtt 100.0ms ra= w > Sent 6079713916 bytes 5489146 pkt (dropped 0, overlimits 0 requeues 28= 656) > backlog 0b 0p requeues 28656 > memory used: 612600b of 15140Kb # not huge on parsing this > capacity estimate: 724522Kbit # not huge on parsing this That's a function of the sprint_size(), sprint_time(), sprint_rate() (and matching get_*() ) helpers provided by tc. Similar 'playing with' units can be seen in the threshold values for each tin. A 'classic' example demonstrating both A) and unit playing: qdisc cake 8005: dev eth0 root refcnt 6 bandwidth 1Mbit diffserv4 flows r= tt 100.0ms raw=20 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)=20 backlog 0b 0p requeues 0=20 capacity estimate: 1Mbit Tin 0 Tin 1 Tin 2 Tin 3 =20 thresh 1Mbit 937504bit 750Kbit 250Kbit <-tin 1 target 18.2ms 19.4ms 24.2ms 72.7ms interval 145.3ms 155.0ms 193.8ms 581.4ms --------------ms040009030807060507080704 Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgMFADCABgkqhkiG9w0BBwEAAKCC DYEwggY0MIIEHKADAgECAgEeMA0GCSqGSIb3DQEBBQUAMH0xCzAJBgNVBAYTAklMMRYwFAYD VQQKEw1TdGFydENvbSBMdGQuMSswKQYDVQQLEyJTZWN1cmUgRGlnaXRhbCBDZXJ0aWZpY2F0 ZSBTaWduaW5nMSkwJwYDVQQDEyBTdGFydENvbSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe Fw0wNzEwMjQyMTAxNTVaFw0xNzEwMjQyMTAxNTVaMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UE ChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUg U2lnbmluZzE4MDYGA1UEAxMvU3RhcnRDb20gQ2xhc3MgMSBQcmltYXJ5IEludGVybWVkaWF0 ZSBDbGllbnQgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDHCYPMzi3YGrEp pC4Tq5a+ijKDjKaIQZZVR63UbxIP6uq/I0fhCu+cQhoUfE6ERKKnu8zPf1Jwuk0tsvVCk6U9 b+0UjM0dLep3ZdE1gblK/1FwYT5Pipsu2yOMluLqwvsuz9/9f1+1PKHG/FaR/wpbfuIqu54q zHDYeqiUfsYzoVflR80DAC7hmJ+SmZnNTWyUGHJbBpA8Q89lGxahNvuryGaC/o2/ceD2uYDX 9U8Eg5DpIpGQdcbQeGarV04WgAUjjXX5r/2dabmtxWMZwhZna//jdiSyrrSMTGKkDiXm6/3/ 4ebfeZuCYKzN2P8O2F/Xe2AC/Y7zeEsnR7FOp+uXAgMBAAGjggGtMIIBqTAPBgNVHRMBAf8E BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUU3Ltkpzg2ssBXHx+ljVO8tS4UYIw HwYDVR0jBBgwFoAUTgvvGqRAW6UXaYcwyjRoQ9BBrvIwZgYIKwYBBQUHAQEEWjBYMCcGCCsG AQUFBzABhhtodHRwOi8vb2NzcC5zdGFydHNzbC5jb20vY2EwLQYIKwYBBQUHMAKGIWh0dHA6 Ly93d3cuc3RhcnRzc2wuY29tL3Nmc2NhLmNydDBbBgNVHR8EVDBSMCegJaAjhiFodHRwOi8v d3d3LnN0YXJ0c3NsLmNvbS9zZnNjYS5jcmwwJ6AloCOGIWh0dHA6Ly9jcmwuc3RhcnRzc2wu Y29tL3Nmc2NhLmNybDCBgAYDVR0gBHkwdzB1BgsrBgEEAYG1NwECATBmMC4GCCsGAQUFBwIB FiJodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS9wb2xpY3kucGRmMDQGCCsGAQUFBwIBFihodHRw Oi8vd3d3LnN0YXJ0c3NsLmNvbS9pbnRlcm1lZGlhdGUucGRmMA0GCSqGSIb3DQEBBQUAA4IC AQAKgwh9eKssBly4Y4xerhy5I3dNoXHYfYa8PlVLL/qtXnkFgdtY1o95CfegFJTwqBBmf8py TUnFsukDFUI22zF5bVHzuJ+GxhnSqN2sD1qetbYwBYK2iyYA5Pg7Er1A+hKMIzEzcduRkIMm CeUTyMyikfbUFvIBivtvkR8ZFAk22BZy+pJfAoedO61HTz4qSfQoCRcLN5A0t4DkuVhTMXIz uQ8CnykhExD6x4e6ebIbrjZLb7L+ocR0y4YjCl/Pd4MXU91y0vTipgr/O75CDUHDRHCCKBVm z/Rzkc/b970MEeHt5LC3NiWTgBSvrLEuVzBKM586YoRD9Dy3OHQgWI270g+5MYA8GfgI/EPT 5G7xPbCDz+zjdH89PeR3U4So4lSXur6H6vp+m9TQXPF3a0LwZrp8MQ+Z77U1uL7TelWO5lAp sbAonrqASfTpaprFVkL4nyGH+NHST2ZJPWIBk81i6Vw0ny0qZW2Niy/QvVNKbb43A43ny076 khXO7cNbBIRdJ/6qQNq9Bqb5C0Q5nEsFcj75oxQRqlKf6TcvGbjxkJh8BYtv9ePsXklAxtm8 J7GCUBthHSQgepbkOexhJ0wP8imUkyiPHQ0GvEnd83129fZjoEhdGwXV27ioRKbj/cIq7JRX un0NbeY+UdMYu9jGfIpDLtUUGSgsg2zMGs5R4jCCB0UwggYtoAMCAQICAw5ySjANBgkqhkiG 9w0BAQsFADCBjDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0Q29tIEx0ZC4xKzApBgNV BAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcxODA2BgNVBAMTL1N0YXJ0 Q29tIENsYXNzIDEgUHJpbWFyeSBJbnRlcm1lZGlhdGUgQ2xpZW50IENBMB4XDTE1MDYyMDIw MzA1MloXDTE2MDYyMDE0MjY0N1owVjEmMCQGA1UEAwwda2V2aW5AZGFyYnlzaGlyZS1icnlh bnQubWUudWsxLDAqBgkqhkiG9w0BCQEWHWtldmluQGRhcmJ5c2hpcmUtYnJ5YW50Lm1lLnVr MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAugCNtDhytCJ9HOfenUHr/vUGUECv PL1IJXgHMl4cIJmwgLOkXhIcTMxHnX+kFweqvT+eDWv1hzA9yMWhvjLFC4eLoFaV0xiAat8O XQ7t3MwKY5DW0mB1dOnjiFIcc/XMwyYI4KfEGnFMJQkzon0rDVpkl/Q1f/hu1sELO7Zc6TFL wuuDuiP7S73zrz50TRoq0+Ob3x0uOMW2uVwVzf6NLwHgBE2LFleMXblyUMx0IlIcLan2nWiI Vsa3XYd+C6KAGGwlmO4VAZ25KuX7hkj8f82lSapvtKTtvrSoDghXlHH2JXiIQX+Sn0UgOmbX 1KyOe9vN7WzQ+tpPRzpFRffnnnp1VQye3wVRPBumjDxQSFTOhUtslnvbefUQSPw6p5w9ZiXI GJICLkX/MkYN/TwGCvuUG2PxBybSR1A2I5ap+VI/zGSG3XGVEA69SOZQyD+8YjJZfaY2nCu+ DuM64JrJUi2CvX6fwcdHNschJNrrfetpnrx3JrGnG9o+pWuUG1phBg+KKN2bhrdzY79qm7ha 86EMKSUOn5nBdGY3YxdXq/naoUQeOCUV2JMFGOulu7sKpiWcz7HVFacXjd9ebisVLv+jOwll z14BWRb87s1+LBEJn/Ybn3ekhtgyEAhB4kgj0scl4hI8xCU6zrZyDnbXmxSvDXbClZA0PACt f/jhGvUCAwEAAaOCAuMwggLfMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdJQQWMBQG CCsGAQUFBwMCBggrBgEFBQcDBDAdBgNVHQ4EFgQULkW2CpDiQpRNumQ7wdspjFfgX+AwHwYD VR0jBBgwFoAUU3Ltkpzg2ssBXHx+ljVO8tS4UYIwKAYDVR0RBCEwH4Eda2V2aW5AZGFyYnlz aGlyZS1icnlhbnQubWUudWswggFMBgNVHSAEggFDMIIBPzCCATsGCysGAQQBgbU3AQIDMIIB KjAuBggrBgEFBQcCARYiaHR0cDovL3d3dy5zdGFydHNzbC5jb20vcG9saWN5LnBkZjCB9wYI KwYBBQUHAgIwgeowJxYgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwAwIBARqB vlRoaXMgY2VydGlmaWNhdGUgd2FzIGlzc3VlZCBhY2NvcmRpbmcgdG8gdGhlIENsYXNzIDEg VmFsaWRhdGlvbiByZXF1aXJlbWVudHMgb2YgdGhlIFN0YXJ0Q29tIENBIHBvbGljeSwgcmVs aWFuY2Ugb25seSBmb3IgdGhlIGludGVuZGVkIHB1cnBvc2UgaW4gY29tcGxpYW5jZSBvZiB0 aGUgcmVseWluZyBwYXJ0eSBvYmxpZ2F0aW9ucy4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDov L2NybC5zdGFydHNzbC5jb20vY3J0dTEtY3JsLmNybDCBjgYIKwYBBQUHAQEEgYEwfzA5Bggr BgEFBQcwAYYtaHR0cDovL29jc3Auc3RhcnRzc2wuY29tL3N1Yi9jbGFzczEvY2xpZW50L2Nh MEIGCCsGAQUFBzAChjZodHRwOi8vYWlhLnN0YXJ0c3NsLmNvbS9jZXJ0cy9zdWIuY2xhc3Mx LmNsaWVudC5jYS5jcnQwIwYDVR0SBBwwGoYYaHR0cDovL3d3dy5zdGFydHNzbC5jb20vMA0G CSqGSIb3DQEBCwUAA4IBAQBicQWe98eF/o09TXFsExc+WSyYjt3oSnXyocLzXQp82CQhIg21 5RqNZ1e+hsO7tq8S6hdItUDbKpecpIV59+57ke1zVl2slTRIT19fhYINHH78rVVRPzuHoiDt MXnGrp9hbq3Cz8P4mm8INKDiYK46kyplRAQ3ZMouPG1lsnDzgQAvbCj74H8yAp7fK8if6cxs 28BCUmdP8D3c6M1ffdNNaqNT+4Z3mtOujXXg7zOfmXN0Zg/mEtZ0NrWE2uICGdWjTv9KZiI7 fi4hk2CRpCL63qzmu6BwtcgtwhgYYtuAk2N43+SiyDkyLKGAcjEor3t5f9HivN29E0F0MXTH 1OdgMYIFDTCCBQkCAQEwgZQwgYwxCzAJBgNVBAYTAklMMRYwFAYDVQQKEw1TdGFydENvbSBM dGQuMSswKQYDVQQLEyJTZWN1cmUgRGlnaXRhbCBDZXJ0aWZpY2F0ZSBTaWduaW5nMTgwNgYD VQQDEy9TdGFydENvbSBDbGFzcyAxIFByaW1hcnkgSW50ZXJtZWRpYXRlIENsaWVudCBDQQID DnJKMA0GCWCGSAFlAwQCAwUAoIICSTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqG SIb3DQEJBTEPFw0xNTExMTgxMTE3NDJaME8GCSqGSIb3DQEJBDFCBEAMmIU+gz/7bQ7AJE1V b/XQJV+alCPgQWhrzmv9mjJpRXSVKnKYUNlpNsOZkjkWrNW5Sk4I0B1ABB2jq3AN9gFtMGwG CSqGSIb3DQEJDzFfMF0wCwYJYIZIAWUDBAEqMAsGCWCGSAFlAwQBAjAKBggqhkiG9w0DBzAO BggqhkiG9w0DAgICAIAwDQYIKoZIhvcNAwICAUAwBwYFKw4DAgcwDQYIKoZIhvcNAwICASgw gaUGCSsGAQQBgjcQBDGBlzCBlDCBjDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0Q29t IEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcxODA2 BgNVBAMTL1N0YXJ0Q29tIENsYXNzIDEgUHJpbWFyeSBJbnRlcm1lZGlhdGUgQ2xpZW50IENB AgMOckowgacGCyqGSIb3DQEJEAILMYGXoIGUMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UEChMN U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2ln bmluZzE4MDYGA1UEAxMvU3RhcnRDb20gQ2xhc3MgMSBQcmltYXJ5IEludGVybWVkaWF0ZSBD bGllbnQgQ0ECAw5ySjANBgkqhkiG9w0BAQEFAASCAgAo1u6HS1trENY7aN6B5sVUfeWtZlcM yrXvkCz//xfC1a6Ogj5kwJtGAJOooDKpthdUL/uTapAK84zgyt/x5N2UusjvvN3iTZGLyAjY HmUenvG6AZThYI/NBN7LA/UkRC4ri1xWekbkhvweVTPTJeKJhC99+E6jbYFVxteQ/EVINR2V lzP0Xm3HN8Q4qPx4V9p0KilAvgqVhqfMvBJgt1mYXDGLhYy0fGucuvYc10WKNH9A4Vi4upBQ Yr6Nzn+1nmwTZawZ4/Cn8kW6FF6pdl6wwo3n4fh2xzqJOzXwDvRZd16eWSsADczgHUHqvkvW +mFNGUsohlmYxvMpEq8ju3old3M7N1LtXOkfW9bY17UcaQ8ezj++VrjJ98hSE+/bWUj5nheQ MhmSEAE/n/zVw2u2CPIBBL7H38IxZbISX+64AyWoLXGjSlFnVKe+MeCoQ+Xd6Lu61JLIQd7V aYCjaB/rdUQ6YA7go/3TzYDx9F6WZTAdf/tzpi2++loo4lvzyxD7vDoUpO0gaxx6Q7n9OLig bwke3K+ZcOYFtuXnivGmaNHkLH5NhQyShsgQTVZCN9qW2HlECJjFg49dnjRrgzDuL56jckJg ajX7bbiiXeIGRzj5931hisKhaOo08gycUj1GRLqEsM//e1bXGFxSsfGlwpcxdmf3X2Zgi1Ef l8wNKgAAAAAAAA== --------------ms040009030807060507080704--