Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751612AbdIQQ2E (ORCPT ); Sun, 17 Sep 2017 12:28:04 -0400 Received: from sessmg22.ericsson.net ([193.180.251.58]:65334 "EHLO sessmg22.ericsson.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751407AbdIQQ2C (ORCPT ); Sun, 17 Sep 2017 12:28:02 -0400 X-AuditID: c1b4fb3a-617ff700000051a3-37-59bea290e372 From: Jon Maloy To: Thomas Meyer CC: Joe Perches , Ying Xue , "netdev@vger.kernel.org" , "tipc-discussion@lists.sourceforge.net" , "linux-kernel@vger.kernel.org" , "davem@davemloft.net" Subject: RE: [PATCH V2] tipc: Use bsearch library function Thread-Topic: [PATCH V2] tipc: Use bsearch library function Thread-Index: AQHTLsCFggJ6hPSP+EWhjy5rbdPPE6K3N4aAgAAGogCAAALngIAABiAAgAADfYCAAAHhgIAAMg2QgAGvNwCAAA8JwA== Date: Sun, 17 Sep 2017 16:27:56 +0000 Message-ID: References: <20170911.143025.555018840006192902.davem@davemloft.net> <20170916075036.28676-1-thomas@m3y3r.de> <16128f5e-66ff-b6ec-c0e1-74ea08c212b0@windriver.com> <1505553970.16316.1.camel@perches.com> <64ee51ce-eb7e-ac1c-56a9-9481f6f80b35@windriver.com> <1505555908.16316.5.camel@perches.com> <35f41984-22e9-5adc-0e4d-a4ef4204f6d7@windriver.com> <1505557061.16316.7.camel@perches.com> <760F46A5-2C04-4F3F-83C5-5EA331CFA1D6@m3y3r.de> In-Reply-To: <760F46A5-2C04-4F3F-83C5-5EA331CFA1D6@m3y3r.de> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=jon.maloy@ericsson.com; x-originating-ip: [24.225.233.31] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;DB5PR0701MB1943;6:iBGBcNm2kYOChbdBRneOrkkxjKbZ7U1Bco5k1rIgnlQtZke1wOwSdiWYtM3V5I2+cX1SM2oWj1xu4MPAmZR5cRFWfv3GA9Rqe70GXSoRnnNvv7CTHioqjQhGBxNNoyN9Z7mbAc9kV8h7SinIDmHm6FFDjloOOhymJAkTxHOoUjNeMN+L6Y0OhIkpYvft3LS4rjCdp5ZLpphrnGRKDa2IvK094Sx36r+V/n5WcdFEHgUyXXoMVuqA6xxKYD8f3NObnuhoU/dxBSftPbHsIzp26oGxsqnjX7jH4XjUs+MlqhE0Ex13jU0zQDHs+BCGZTYW021NARKUYEmBQyczzGi2gQ==;5:2rP3xgKETP4shui0yZe6Og6Upq9FnoDp2bANzv6Oq//Jjtnqx4zPJwufh07DkqwfVeD93qQILRPGOG88ZC9tdiLlOTl2WEbw3RidEdnKzAMXuQPxHo2QeUocaUjeR4fxrfwRSt42r4nOS90s74kEVw==;24:64I9X1wn/T4V0O1ulm7pUpLgFbhBiCckc/YCJrP2mqy/dJaaeDhkFaXzLkCWpSU3Tkzgfw0yy9SzJq+InbKakVIQ6WC8E893V8wFhlaQYXY=;7:zM+8tUd70PvMVci6/smGmZAptkU9HYCURNMLhDZpQBpL2dGXliHo+zlGQSvZa+hK0JGwbzZZg7GmH48rsqIt9pyx8WATqlpkJ+pUlnnbPIZysGCRyhr51xFpv5BLWwkXa9zaVMi0sMUQS7WSxv2jqxdCZaqpZKsNIc0y0f8Abl+lPRcfZfzNMiRk0WhdX8Il+ze9VinQXgFNGNDMpHaUBFiqi+Sx80sKNpHLuYrCURg= x-ms-exchange-antispam-srfa-diagnostics: SSOS; x-ms-office365-filtering-correlation-id: 311a64d1-e5ce-46ca-e7c5-08d4fde90dea x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(300000503095)(300135400095)(2017052603199)(49563074)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);SRVR:DB5PR0701MB1943; x-ms-traffictypediagnostic: DB5PR0701MB1943: x-ld-processed: 92e84ceb-fbfd-47ab-be52-080c6b87953f,ExtAddr x-exchange-antispam-report-test: UriScan:(37575265505322)(143289334528602)(9452136761055)(42262312472803); x-microsoft-antispam-prvs: x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(102415395)(6040450)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(100000703101)(100105400095)(10201501046)(6041248)(20161123562025)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123564025)(20161123558100)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:DB5PR0701MB1943;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:DB5PR0701MB1943; x-forefront-prvs: 0433DB2766 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(6009001)(376002)(346002)(13464003)(189002)(199003)(102836003)(229853002)(6116002)(3280700002)(74316002)(3660700001)(7696004)(3846002)(14454004)(25786009)(9686003)(5660300001)(4326008)(99286003)(55016002)(86362001)(478600001)(7736002)(305945005)(5250100002)(6246003)(97736004)(110136004)(93886005)(33656002)(68736007)(53546010)(2900100001)(189998001)(6916009)(53936002)(54906002)(316002)(2950100002)(106356001)(105586002)(66066001)(76176999)(8676002)(81156014)(50986999)(81166006)(54356999)(101416001)(99936001)(8936002)(6506006)(2906002)(6436002);DIR:OUT;SFP:1101;SCL:1;SRVR:DB5PR0701MB1943;H:DB5PR0701MB1958.eurprd07.prod.outlook.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: multipart/signed; micalg=SHA1; protocol="application/x-pkcs7-signature"; boundary="----=_NextPart_000_0008_01D32FB0.570D5F00" MIME-Version: 1.0 X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Sep 2017 16:27:56.6757 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 92e84ceb-fbfd-47ab-be52-080c6b87953f X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR0701MB1943 X-OriginatorOrg: ericsson.com X-Brightmail-Tracker: H4sIAAAAAAAAA02Se0hTURzHOffe3V2lwWmZ/bAXDovoYSVFSyUsixbZiwq0f3LkzUe2xe4S 7QGzh6/5qjR1Dh1CZlZkS9OyrI2eM7esiHxUWCu1UAulJCm721nQf5/z+35/3/P7HQ5Hy/sk QVyyRs/rNOpUBevPVMQ2r1tSXNMWt8zeM19pdp1ilJXvPzLKl7fNrPKRJVD52lKGlI2ulChW 1Xipi1K1WkYpVdVkN6saq39Nq0atc7ZL9vhHJvCpyWm8bumaeP+k3KvcoYnt6SX5ZokBvY3J Q34c4BXgLhqh8pA/J8cPELjGzTQ5PEFQXWrwKgwuoGHwfAdLFBMFmRVWX08/giyDU+oJY/EC 0ZWDPByAFeAsKGY8TOM7FPQOxHp4Gg6HG3edLPFEQH6B3edPgdrf7yQeZvA8qMuyeusyHA/V Fxq8OXJczkDrj/0e9sORUJfd6/UgHAg/HVcoctcM6HZXU2S5AOjrbGcJT4fBj3/EfE70x0H7 pzhSDgZXQw1NeDa8qDYiz16Ac6RgP9/lywmFpjNDiPAWMJ0zscQ0TMGofVRChMXQP1Tja4iE cmOZLzUFHNeKpIS10HRvnCbN3RIo7b9OF6Mlpv8GN4kajYsQXPhTiUzeF5gKTyvcjEmcnBYn ybqOiH8uNA+ZacIRUP7LxhIOhhJjn5TwSvj68DuyIK4eTRd4QTiYGBYWyuuS9wmCVhOq4fVW JH42W+NEeAuy9a+1I8whxRQZNrbFySXqNCHjoB2FiDkfGi4/R0GMRqvhFQEy02lRliWoM47w Ou1e3eFUXrCjmRyjmCGLanseK8eJaj1/gOcP8bp/KsX5BRlQYbxj99n6DSPmlrKyoE1dg1Vv Vu3qmVQ37IqJzzW3hq6oc80Kyzneqb8/fnKu47Fb2hl2bdvNvV90u6MNTZnRIUdDPleduLVz bP+tgcljq0Oe1Sq22eZoNxZOzoyo2dHEDL+qjRnLW//hmzv34SLjVmdJzsXFzML0Dv16541X my3Z9+8oGCFJvXwhrRPUfwG+hNXtdAMAAA== Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 10194 Lines: 169 ------=_NextPart_000_0008_01D32FB0.570D5F00 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit > -----Original Message----- > From: Thomas Meyer [mailto:thomas@m3y3r.de] > Sent: Sunday, September 17, 2017 11:00 > To: Jon Maloy > Cc: Joe Perches ; Ying Xue ; > netdev@vger.kernel.org; tipc-discussion@lists.sourceforge.net; linux- > kernel@vger.kernel.org; davem@davemloft.net > Subject: Re: [PATCH V2] tipc: Use bsearch library function > > > > Am 16.09.2017 um 15:20 schrieb Jon Maloy . > >> > >> What part of "very time critical" have you verified and benchmarked as > >> inconsequential? > >> > >> Please post your results. > > > > I agree with Joe here. This change does not simplify anything, it does not > reduce the amount of code, plus that it introduce an unnecessary outline call > in a place where we have every reason to let the compiler do its optimization > job properly. > > Hi, > > Okay, should I prepare some performance numbers or do we NAK this > change? > What about the other binary search implementation in the same file? Should > I try to convert it it will it get NAKed for performance reasons too? The searches for inserting and removing publications is less time critical, so that would be ok with me. If you have any more general interest in improving the code in this file (which is needed) it would also be appreciated. BR ///jon > > With kind regards > Thomas ------=_NextPart_000_0008_01D32FB0.570D5F00 Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" 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 aWFzb25lcmEuY29tL2NuPVNvbmVyYSUyMENsYXNzMiUyMENBLG89U29uZXJhLGM9Rkk/Y2VydGlm aWNhdGVyZXZvY2F0aW9ubGlzdDtiaW5hcnkwO6A5oDeGNWh0dHA6Ly9jcmwtMi50cnVzdC50ZWxp YXNvbmVyYS5jb20vc29uZXJhY2xhc3MyY2EuY3JsMBMGA1UdIwQMMAqACEqgqliE0148MA0GCSqG SIb3DQEBBQUAA4IBAQB7L2bVGhb4q6FZUtsGVNbneHh+Q5OmrXeyTfAHxWAg90PVlDgAY0+cBk4o PxOL9ZVGnhec070CdiGWHwrqqKER1uDC2H97BTr3jBzGl9mf/43MxbY7NJB9LHMONfDeF+V+8bMK ziBdedr0HocKuKtBbzbvChOkDOaAKZkqCVXEC4+x1AUwqx4++t6D3aSnC3+1CWt2+AXfXrIzjE6p AKqZcnJfrI2mqIatmAtaXvW12I8TyZR+ERIMcOVGIa4MYfxxSpz0TSSz94DWfLK3DlKiXaxT+Tqo k3yH1wZhC+6q/11vPLL52cPWk2HciFDaylK2u3watcxmk8kaxNEt6K5zMIIF4zCCA8ugAwIBAgIR APYMs911jreNWSKjIGvTfiUwDQYJKoZIhvcNAQEFBQAwOjERMA8GA1UECgwIRXJpY3Nzb24xJTAj BgNVBAMMHEVyaWNzc29uIE5MIEluZGl2aWR1YWwgQ0EgdjIwHhcNMTQxMjA4MjEwNDQ3WhcNMTcx MjA4MjEwNDQ3WjBgMREwDwYDVQQKDAhFcmljc3NvbjESMBAGA1UEAwwJSm9uIE1hbG95MSUwIwYJ KoZIhvcNAQkBFhZqb24ubWFsb3lAZXJpY3Nzb24uY29tMRAwDgYDVQQFEwdsbWNqb21hMIIBIjAN BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkyi6weFc+PWSbsCFfVsBv5CYJmlGEk69M+3LzFeZ XOWToBtejXeZWp/XjGA1cV2G+lEu7Yjrxp+kOsKLNlpRTytrZ37PoUfrsZa9ER/r0I8ok8pge53/ qqswrhtYbodBA/URTd7ZNtF+qqkKtSdEJvioEMILj3mKK1RCxCwL809OiAvM2/CmF1C4XpETKejK c1jcO/H20WOveJCOrlwmqdcXWAjt+IquJ1lv4+Xbb8OZktocHXwHmCcvhpLOgXE2mrdlL9EWaIK3 RmcX99JRFg/IesO5L69G0H3XQ8AsszmAc9tklaBSHJtlBeuernFtnAZZyG6fbFnEYWnrvPlBdQID AQABo4IBvDCCAbgwSAYDVR0fBEEwPzA9oDugOYY3aHR0cDovL2NybC50cnVzdC50ZWxpYS5jb20v ZXJpY3Nzb25ubGluZGl2aWR1YWxjYXYyLmNybDCBggYIKwYBBQUHAQEEdjB0MCgGCCsGAQUFBzAB hhxodHRwOi8vb2NzcDIudHJ1c3QudGVsaWEuY29tMEgGCCsGAQUFBzAChjxodHRwOi8vY2EudHJ1 c3QudGVsaWFzb25lcmEuY29tL2VyaWNzc29ubmxpbmRpdmlkdWFsY2F2Mi5jZXIwIQYDVR0RBBow GIEWam9uLm1hbG95QGVyaWNzc29uLmNvbTBVBgNVHSAETjBMMEoGDCsGAQQBgg8CAwEBEjA6MDgG CCsGAQUFBwIBFixodHRwczovL3JlcG9zaXRvcnkudHJ1c3QudGVsaWFzb25lcmEuY29tL0NQUzAd BgNVHSUEFjAUBggrBgEFBQcDBAYIKwYBBQUHAwIwHQYDVR0OBBYEFAc1MnTG2+AM1IxP6u4cE3Wc pecnMB8GA1UdIwQYMBaAFLENytRGt6+GAsMvbwbKDnZxf0s3MA4GA1UdDwEB/wQEAwIFoDANBgkq hkiG9w0BAQUFAAOCAgEAMtgJzs3QDsEjtKqXHkB4eRVyRaczQ4bAYBA4TmKGpMWJmvB5RLLnKe13 RqkHdm2pRta/jCnpNVbqShJP5H5ipWNW7db73Vw1ob+qu0GdNe/Bs1NVt8mDOzszv8P/Jm1klRSH Pzd5YgOb6EyD78uVnYK+X6gtf5VWdGpAi0eKBpHq9V3nIEWKELUvO2eU1E1gC4FFlsURyx+sDKnx lGFuD/VrpBhR2UIHjrnUdLf/J14uUnF3xafwgUVWjEC9vsWFkKj61Ci/y8AYHgdj7bSYor5DGSH2 /m7aFs4rv+8QSenS2Ao19cUnUNCWy5ulA+P5b8m5Tc75Hcqm1AU69EOtdE6jG99GFH/waytpHyBk /FDz51I6Shugj1iqFcDfzesUgxCOJ5XzoHDCEEWY9PWVldJo7ovWYMF3ZUtkIItBr8s9dVyVA02P 4rIRnDOk+3qpWfBboQgZ/4eDZ9VaEZJgFi8L1EH5fKpBpOaZvhS3jtfYfYk7Kygjv5C2vkGA80aU vYanDtCmq1pvaIyb/rekyi3zIIaO90svO+uJy9rx3fZ1VZDhRml4o7ymCf7BOR4UCGnGXpxpnnSL rdPPDbNiXm58sdx8NFquROMjx09dNXRUm1A+05wt2kZQn5TNrcHo5lm33eBiGW4499c76l/czJVe 9/35Js6K87ICux1u2Ikwgga2MIIEnqADAgECAhEAoAzLzJuZmOziOnD0fMHAWTANBgkqhkiG9w0B AQUFADA3MRQwEgYDVQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwWVGVsaWFTb25lcmEgUm9vdCBD QSB2MTAeFw0xNDA1MjcwNzQ2MjFaFw0yNDA1MjcwNzQ2MjFaMDoxETAPBgNVBAoMCEVyaWNzc29u MSUwIwYDVQQDDBxFcmljc3NvbiBOTCBJbmRpdmlkdWFsIENBIHYyMIICIjANBgkqhkiG9w0BAQEF AAOCAg8AMIICCgKCAgEA2rpT619IllOfiTjqo3XceBp5dewyYZJZKFzoDkgTIVuhcxlbeUUeyj7/ q47dmKW8HaKlkmGuFT5Ev+9r7kKFrL89mr1ll4T03Tc6wd87OXCTu7CiMnfi0cuJf/JCiuIj5vkN fF8hhdMU7nOVkt1ojEnCUsRCnSDj/MXoQa2h2Wm6xofTsUBwuIgR5Mw9GBdyf7wagU6+25Uc2H9Y d4+Wu6lSBwj38/nghNe+ZkXrFw0ESOy7zImbVWqorQZdKACYicngZrxLowTbCBIFEOiXEBRuZ8tB Gsy8sL+3JcG+4s7y4KF3Okha3dA+0xibZHZXVSbTMA2F6chTBgIo0+rn/IdpLjyMKw4EBTRMiEGe KudmaURsLoAurDMYBxAxowPwsV/WguVYtRDESYjhheoFd0/lechwx0gQXkG1QF5vMEkwwX10MHa6 PwF6hE9JhukaXuKthRgWmrhPKhxDuqkd1gBIL41XxVNpOsWcdapr8IZF2ncYemSDF84G+lqY4ry5 0dBhCja4Ddg13b6PungLeOQYb5npGtk6yQ8TC1ogcvEGIDXjV2ELLkRJw7I1qOsBdC6mwOe+vaJv Z5/7ic5s8W9509Yh7nuXKPSfd7WtOpMYgEh73CM2cADoyp5pNL0dyE+0G86tqH9xNbNfMaPAzPQ/ dQmpNDavkQC7Xb9bmSkCAwEAAaOCAbgwggG0MIGKBggrBgEFBQcBAQR+MHwwLQYIKwYBBQUHMAGG IWh0dHA6Ly9vY3NwLnRydXN0LnRlbGlhc29uZXJhLmNvbTBLBggrBgEFBQcwAoY/aHR0cDovL3Jl cG9zaXRvcnkudHJ1c3QudGVsaWFzb25lcmEuY29tL3RlbGlhc29uZXJhcm9vdGNhdjEuY2VyMBIG A1UdEwEB/wQIMAYBAf8CAQAwVQYDVR0gBE4wTDBKBgwrBgEEAYIPAgMBAQIwOjA4BggrBgEFBQcC ARYsaHR0cHM6Ly9yZXBvc2l0b3J5LnRydXN0LnRlbGlhc29uZXJhLmNvbS9DUFMwSwYDVR0fBEQw QjBAoD6gPIY6aHR0cDovL2NybC0zLnRydXN0LnRlbGlhc29uZXJhLmNvbS90ZWxpYXNvbmVyYXJv b3RjYXYxLmNybDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwDgYDVR0PAQH/BAQDAgEG MB0GA1UdDgQWBBSxDcrURrevhgLDL28Gyg52cX9LNzAfBgNVHSMEGDAWgBTwj1k4ALP1j5qWDNXr +nuqF+gTEjANBgkqhkiG9w0BAQUFAAOCAgEAbgcgbK+sdz2QQrJhm3Emf1y/tLZ1TG5SJ6CYC9QY dz4kYnIHaPJfunL1qfwKwcDGDcEjcq72PSHsMmlfJ+uXOaDfpdiQ1Ls63QDVSp2MYWu2cghIj5mP fLAdm52YMXyS10GKEcCO6TjsH8qD9nwmFQnfsYbH8rGIiJeDkcxN06XqaUNslpMgQZqB1FyYfe7n uvmydn6p1VKDlTFZ2GBLb7M+u7+8Ns9373XMtOP0Z6MpcUnp8QA4tbWPYiMnRzIMjrt3X87MVPAI rzBhuGikrbAn1BMoNC5ZG4ajK3Z3rLN3tagBLnkkTQEi36RcMkZs5orjYfaJ87oREdsmISv+iHgr OB0B6z4ZGPCVJobZnS9rhKzmVjrN/BUIRlh1lyNIOkoHQzm1NBhB47tDJA84joZvgVcD2Sjewe8A +zj4+r5S1aOnfLyxivW8sIRH148SyAt0IbbuZST04CKOQbqfmgQY4if7vQX6q8qmabnZ1nxvsMQt 9u66TQKtjinRbEfdsG3oUmQ95kkgHpg1cBgdmLtFx0GMsmH6VrBshhMkUhyhYUcCXSDT81iyPPcM uFnPj4KsnpJBJianuoOF0kBY+JqrcL6oT+HYNkAnCjP24etkcHzOxnkkvyxRnvOCpiY0w370/HNq yvJxMmf3pjrcAhl0OrWQgcjDS8Xg8FNUxm0xggLeMIIC2gIBATBPMDoxETAPBgNVBAoMCEVyaWNz c29uMSUwIwYDVQQDDBxFcmljc3NvbiBOTCBJbmRpdmlkdWFsIENBIHYyAhEA9gyz3XWOt41ZIqMg a9N+JTAJBgUrDgMCGgUAoIIBZDAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJ BTEPFw0xNzA5MTcxNjI3MzRaMCMGCSqGSIb3DQEJBDEWBBSrYhiOI4HemS2xopA6phEAFYce9DBD BgkqhkiG9w0BCQ8xNjA0MAoGCCqGSIb3DQMHMA4GCCqGSIb3DQMCAgIAgDANBggqhkiG9w0DAgIB QDAHBgUrDgMCGjBeBgkrBgEEAYI3EAQxUTBPMDoxETAPBgNVBAoMCEVyaWNzc29uMSUwIwYDVQQD DBxFcmljc3NvbiBOTCBJbmRpdmlkdWFsIENBIHYyAhEA9gyz3XWOt41ZIqMga9N+JTBgBgsqhkiG 9w0BCRACCzFRoE8wOjERMA8GA1UECgwIRXJpY3Nzb24xJTAjBgNVBAMMHEVyaWNzc29uIE5MIElu ZGl2aWR1YWwgQ0EgdjICEQD2DLPddY63jVkioyBr034lMA0GCSqGSIb3DQEBAQUABIIBAHmeBEgu SJbknxugu6eDxfpZamdmUHRJNdXvlVF32+vDlj86nKwuXNoO1kXOkTPy+ZLi47VONJIk7hcQF9yL ooLxvg3NlAm4A3okgsz2S+pkLjFEfM+qLN1ywKcLuEO9bEa3cLkY1mqtxcKlZUKh31u8lErHY8VE u83062ifjeIInT2PMS6ieR1d627JbMzlB5OVkr3zfDvnNjTfZ4lxCwP3IGP6pFF2w/AcNyW1IbPd 8XdJ6pd1XmAnIptxoE/C6o6Ha2M/c0kvieMPVscpc4lKaVG7niZkC/6tBl3sRnQSGph4KY+iRgDC xRCXPVvJw1qEubgYHw11SWZyAhlsC4MAAAAAAAA= ------=_NextPart_000_0008_01D32FB0.570D5F00--