Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uJpdf-007N6i-1h for pgsql-hackers@arkaria.postgresql.org; Tue, 27 May 2025 08:26:23 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1uJpdd-006lOO-D7 for pgsql-hackers@arkaria.postgresql.org; Tue, 27 May 2025 08:26:21 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uJeNY-0043oz-9Y for pgsql-hackers@lists.postgresql.org; Mon, 26 May 2025 20:25:00 +0000 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1uJeNU-000FY7-0Q for pgsql-hackers@lists.postgresql.org; Mon, 26 May 2025 20:24:59 +0000 Received: from pps.filterd (m0353729.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 54QB4V4T005394 for ; Mon, 26 May 2025 20:24:54 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-type:date:from:in-reply-to:message-id:mime-version :references:reply-to:subject:to; s=pp1; bh=aECqJTsSdStqQVae7BP/h lpSfBbyAuCtNGD+MLElhao=; b=EseTNHxGwIjIGEhHSA488WtRBKa/H1sovyc+2 YWZm4ZS8+G3DKd3wJfE2SEAnq65wH45Dh19m7JAUZGvRaI5hvOazROYOKufZebSg 8z5g1aP91VdUb55IzCgKSIDYRAEwO20i7TUaDAjbSJ5a6aoLxR3e5O6VB5HWAJXO powrz5+EXSi4EJk7VRM7ob13QwwJwFeHEvDPcckiKvVDlWybKo9z46fYerA7UZrB OFuN7PQhEE+n7et8I8hAACTI/JocUDRsu/E6npbfa6kAbERlEFPzCV8MIbCOs8lP pr1TCFgi36W72NHGJVXpThrM8leSKS/ufPYkyxHNWQ8BxxV/g== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 46u5t0jsnd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Mon, 26 May 2025 20:24:53 +0000 (GMT) Received: from m0353729.ppops.net (m0353729.ppops.net [127.0.0.1]) by pps.reinject (8.18.0.8/8.18.0.8) with ESMTP id 54QKOrQK011896; Mon, 26 May 2025 20:24:53 GMT Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 46u5t0jsnb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 26 May 2025 20:24:52 +0000 (GMT) Received: from m0353729.ppops.net (m0353729.ppops.net [127.0.0.1]) by pps.reinject (8.18.0.8/8.18.0.8) with ESMTP id 54QKOqu0011891; Mon, 26 May 2025 20:24:52 GMT Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10on2063.outbound.protection.outlook.com [40.107.92.63]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 46u5t0jsna-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 26 May 2025 20:24:52 +0000 (GMT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=UTksavUu7Lm5vQ8xIWHmhvX5CnKwelcYLbvwfm8YXuS+dj9RfpDvee2OHcrOv2Sx0mJ1/g6TBmmiYzdX8EWa0d5t3buV3zJoYReDUXsoOZRRrPhurGnPaolbanQoI3mGRnq/MmgrWVbP+VWBlSKY5dyvPm9JN4EwWGvQuGL/Gk8wtWCsNDk7B3jQGZCe+nHV/6R9+inm/099+Cx/PAbWSMS/FTn7k+C1WTpNN3XMTK6YZI5wgBYotS19GH71DPDb/u0yVylY7zCgk0WZ+6sZ/zFchXBVF0X9ZJQBnQ6G7+ikdORsjAbS2MZtwy2ltKQ0qgn76ZKiqvQddtiA2j/Hqw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=qKY2abXR08T0Bah7TCqw39Adg2hPqEqXI3UHoBf4Zf0=; b=rIOgHUZaSlB/lQJ6Hr7VNqU3xaW70dv3WVBBbSqw59Gkd/35DjmFqySLombeiq3fi5knr8OzoPZd1yj/FQVvyR30K5hISNUYy8CbfY0v5NuybGfXvRQT2expLr183I3LViFZH4cXfrn+uoxcopuQ40GIw6wQteZpkRvj1KuFJgfOe0B9cB8NjBawykNw0GVEqat/vHrphCq73TxRGldb/G+VRB6L9DVp3GthkVJ+7Ng1h2eqIZUwUgo7u53oHElOS9oGFcQIWKQSYHV41tJt5qFNDLyQxk1CW1vz2/hUK9YwP0qVnrKtCcc8R5Bq1/bMwTacvXcbtJKVyJKIALCnyQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=ibm.com; dmarc=pass action=none header.from=ibm.com; dkim=pass header.d=ibm.com; arc=none Received: from MN2PR15MB2783.namprd15.prod.outlook.com (2603:10b6:208:127::23) by BLAPR15MB4050.namprd15.prod.outlook.com (2603:10b6:208:27e::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.26; Mon, 26 May 2025 20:24:49 +0000 Received: from MN2PR15MB2783.namprd15.prod.outlook.com ([fe80::50fe:e6ea:49d6:e10c]) by MN2PR15MB2783.namprd15.prod.outlook.com ([fe80::50fe:e6ea:49d6:e10c%4]) with mapi id 15.20.8769.022; Mon, 26 May 2025 20:24:46 +0000 From: Eduard Stefes To: "johncnaylorls@gmail.com" , "aleksander@timescale.com" CC: "pgsql-hackers@lists.postgresql.org" , "brueckner@linux.ibm.com" , "iii@linux.ibm.com" Thread-Topic: [EXTERNAL] Re: Review/Pull Request: Adding new CRC32C implementation for IBM S390X Thread-Index: AQHbvzwUGhWEhFfju0O3pu/thmpjcbPHJaYAgACbwICAHbiSgA== Date: Mon, 26 May 2025 20:24:46 +0000 Message-ID: <62e18f3d02e770a3790e68c8dd0a4e9d576db841.camel@ibm.com> References: <918d9941377f6e83fbfebe96ba496ccaefa3803f.camel@ibm.com> In-Reply-To: Reply-To: Eduard Stefes Accept-Language: en-US, de-CH Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MN2PR15MB2783:EE_|BLAPR15MB4050:EE_ x-ms-office365-filtering-correlation-id: dc619ee1-ed44-44ed-e368-08dd9c935b99 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|10070799003|4053099003|38070700018; x-microsoft-antispam-message-info: =?utf-8?B?SEVLKzFBSW5GQ3dGeFN2em1tZ2U2Ym9uUStDbXF4TmdOS3Jwa09Fa0Z2OVBC?= =?utf-8?B?eE1zeFVycmU0ckl0NmZRU0ZFZzFpek43L3Nuakd1ZTlEcEEwM2NzZmZsUWFF?= =?utf-8?B?d3dnd3g2T09wUGVLUXlOaUM4cndveGFIQzF4TmdVY1RvRmpVMmdyaUhIRFgy?= =?utf-8?B?RDJtTVFUTzY5dnExZkhtWnk2c2hkVGpSTk9uR2p6S25vdzlsNFZJZXdSRHhI?= =?utf-8?B?Mi9BTmVXdzVtQlJHNUJ1T1YyQS9XbnB4N1prNzh5RGdPejdmWkcyQzUzbkpk?= =?utf-8?B?dGU3RGVYV2tqZCs3bnk0MzkxdnREa2Q4SE5QMTFPMkV2aWR2Z1NMTG5yOHVN?= =?utf-8?B?R25YTDlLMm9scWo4ZVZpNUhvaC9GcnlrWVYrRzBKaHZiZzZXQ3UxL0hNT0o0?= =?utf-8?B?TVN3R0FHUjljTDVoSmNJRDk0QkdiclB2MVJGQW1lT1hWaTNZYVowNDE4Y3Z6?= =?utf-8?B?Qy9uS0NBekpsSXg1Q216dTNLZ2l4ZjlUcU5OQW9rOERNblBIVS93YktteGRS?= =?utf-8?B?VnIva0M4enA2MWJPcjNVVVFmWmxIQi9SZksxaHdoVmNkK1Fsak1KMTd3Ly9W?= =?utf-8?B?YmJPNjkwS0xndnVYZDlRN0d5N1hnVVRtTFpUQnkzY0FTWVpqMXV5Umw2d2t2?= =?utf-8?B?SlZqNTFMa1VROTlNUVY2NHpaSFZsQW9NQnU3cWVSZEJPcVB4QUZlb1d6T1dJ?= =?utf-8?B?eURydDdQV0NwamJFZXYwVHFSbE94cTloSUhCYmtjVEljTWVOdWhJdVlIY1RU?= =?utf-8?B?NHRsMG5ONWdyMDZVeDVRaTNqL09SRnhQMzh2UGtiRmlmc2ZPRUhQSnA3TlhR?= =?utf-8?B?QjVkOGR4QXBGWW9HMVoxcVpESnhQbXVHMFpLV2d3RTlHNTlKY20zeDUzeHV0?= =?utf-8?B?aXlGVDdvLzR3QUtweHlEQ0l0M2pSdkdXSnZCZldha1k0ZzdaeGxsWmNjUVE4?= =?utf-8?B?cGtUS29PZkhUK2F1T1VXUU5CR2JlSXdJNHd1Qmk2MkwzRlQvbGxVNi81WWRo?= =?utf-8?B?empCVG11YWRnSFVQMzVNVnNXT1AyMjY5Y3hRcm5pMGUvbDNWcEE1aDBoYWUr?= =?utf-8?B?RStIWDFNSHJjVFc2SE8yZ2lNWG9yRmd4VDJMdnU1S3ZLWkQrekYycnpXU1l2?= =?utf-8?B?REo4c1JHMWc3V0N5OHJmbmJNRFZaN3hJNEJRc3dkblRVTkFNV2lEZ3g1YUdR?= =?utf-8?B?QTIzdTlrS2JsQ2J5cVlEOFhUTTVndEFnbGlnMkVRVkcreWFySEN4bGFZaSs4?= =?utf-8?B?STFXN2t5cXpROTZhMm4yMkxyVXQvRUVQRDZTY0NMcGU2NnYzckoyRTFuSDBJ?= =?utf-8?B?Y0YzTDU2QWRGZEw3UXJ1OC9ka0dKVzk2Vis3RUdlY2Jyb1NwRWVRYVdpUG52?= =?utf-8?B?OXU1b3hWQ1FnNVRuVVRTSnNJNnJmWTJZY09RSHRrVk15MzJ4b1BuMHNCM3hj?= =?utf-8?B?QThFYmlsejhzczQ5ZkFEaGlLUHRyeFROd09kVXh6OHY5eWhUa0ZNVTZOdzRs?= =?utf-8?B?d05kdzg3Ukx4bWhtc2lxbVpKMU54MVNUc1hBaEphR2YyRStwcTNBdDQ3V1ZQ?= =?utf-8?B?NzE2bDNONFExUjFLSE1jN09FRVk2dGVEc2RTdlNWRHBZSUN6ZlZwN3REMWZm?= =?utf-8?B?VU15dStHMXAvV1lJRWgvVmR5Y0p3ZXdCU0RrMmdQVnZzdUpkSGViOWJJZjZ1?= =?utf-8?B?ZU5YUE81MmM2VTg2citPbHZRRjZnbk5PUkcyaGdXNTlJaTJoZTdINkVWQzhy?= =?utf-8?B?VUZHdk9lSjU5RGphSGJITzIwc2JzRk1WV05keWZsUDFEMG56TzM3SGtMVnJq?= =?utf-8?B?Mnk4WjlLa3lTWFMzM1Q4cmpXYVBVbGd5dGFlRElqQTdLTXpKYksyRm5KNnVJ?= =?utf-8?B?bnpyQTZzbFhnUEJvY0hVandUNTNsQ2dlOTNCbkRFNnFNWWhlWGxKUFA4SEFE?= =?utf-8?Q?xCXkGH3ia7I=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR15MB2783.namprd15.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(10070799003)(4053099003)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?KzFuRitPWlo2Z0s1RVVZeHRUbzRnejNKOGpoSmcxbmd5VVprNGxqSmF3aWhm?= =?utf-8?B?eUljOE9RWEppaGJvOWQzbDRWNVVMTC9oMzJpYk1sZWZyZ1BMN2xwaE1GV0FN?= =?utf-8?B?aGdHMHdnaXNlUGhGaXVicVk1cFB0dEtCNnI5a25nQk13QVM3dGZBMFRPamRN?= =?utf-8?B?VWVqNzlLb2YyVTlVQ3ZYMkV4MC9kZExxbzJsdWhEam9wckR0VlFUQmt3VEJK?= =?utf-8?B?S1l2NlBqbDZxRnBocXh3VDZEL1ZEVlB2cVBzcVJqZnV6aFQ2eVdBSWErVy9O?= =?utf-8?B?QXowTGlydlFYQnFRYlQybTh1clZXMTEzbXhicXdCckpRQm9RYWJPUVVKTjRj?= =?utf-8?B?UE9tRXRuQzVBZFpMc3RNWkI0czQybGtCNkM0Z25vdERJd0U3Vmdpb3dyN09T?= =?utf-8?B?Mjl4czAyd1hQUGFoenh0RjlHWHgxNU5CSmpycVJKNlpNbXFkVmJQRjVQcW9K?= =?utf-8?B?bC9QYStEOGxFVE1OQ0F2UEp2R2ttdjBXdE0xeFVDU0ZDUmpNcEZBOVhpVTZL?= =?utf-8?B?UTdmTFFSM1k4czF6TmhsdmRsY1hTbVRqWXR6Qytja2R4MmM2ZC9FcHVaWHBW?= =?utf-8?B?QndkQVYyUE9wTzRScXFadk41ZGpoaWVaZDFmVlRmOFNQOHVKOWxleVZXL3JR?= =?utf-8?B?OWVXZlk2SENVVkN1MlhKckxvUUVQQlQ5R3RGdXRPM1d5RWp4V0dHMlpZdWdP?= =?utf-8?B?UW94UUhpRzJwcXFoWFl0T1Nod3BObGRxbG5sMmhUN2ZNRFRUaFNmUklNS3Ay?= =?utf-8?B?UXVuM09NL0Q4cFZZbWZJNUJlRU1PRC9WOVhHcnM1TjFlS3U2c0pFSVZ5Q3Zs?= =?utf-8?B?bVFLT25pMW91SldhTzluUUk0dExaTDU2RjA4TmpIUVI4RngzNm5MVWt6dUl4?= =?utf-8?B?dWNpZVk4dnM0LzFnKzV3UXUyQWxLengxOTRZUlBzekY5RzYvMDk2WHN0T3l4?= =?utf-8?B?OUttTG12TTg4MiswQ3IxREJSL2JjSjB5YjVGbUgrdHF2cmlJQ1JVMUlRTzU1?= =?utf-8?B?QWowemI4dTdzUW1pWlJSN3ZyZWJKNUNRSmsyTmNIS2VTM0JnVFYyZ0pXUHp5?= =?utf-8?B?aGpIZXQwelFzcnQ2Zm1iZnlPZklEaUNGQlFQdjMreHpCVjRlQXhlWGRUeFFU?= =?utf-8?B?aHpoWVdJNmdCRDNRUHlucTk1eG51d3RXcm9LZkRYNUVFaUdRQWdQbDNmQVpp?= =?utf-8?B?VmNHalNKcUY5NU9jeFN4ZUNDQ2pGckJiRHJJUmlSOEVkWWRWbGZlQndyaGwr?= =?utf-8?B?dC9ZWGlnWXIxRDlIQ1U3OXhTMklWbkZOaXVVbHp4alZlWEE4UldmUVVEV0NF?= =?utf-8?B?WDNXV3N3MUNvbUVyRzhpa05zNW9WbnY0d0Vib1RzejIvemgwQ2pMTXpmbHJT?= =?utf-8?B?UWdMdW9GOXRlb1hXQ2IwNWhCMGdEN1ZMRzlKQ3hJNzBVemlVc0lDdUd2M1Q0?= =?utf-8?B?UWxOMUFGTkJDdW1Wa1AyZVlOSjNFdWxXSHVIRUVoSzZDVGNmZlVIcGhRMTNR?= =?utf-8?B?YTZabVh0UVlnUU02REt4dWloUkhZQ3RYNjJhVkhlbVNpcGRVSWZBWXJjb1Nw?= =?utf-8?B?azdaUnVOa0tBaHArTkg1UkpNNzUydkNwdGllZVRTVlkrM0ZKU3ZLMitYNU5J?= =?utf-8?B?dThXcEVXT2UvWk5DTEttM2dYUEk3L1RqaXVmbXpYM3NrcXlsRGZ4QkJaajcv?= =?utf-8?B?akI4aWNiU05lQ3JIcWNOMmZNcGd4NldJVDRwV2xxdE9xaDZHSEhqNjQ3SkEw?= =?utf-8?B?c0FQL2pTMlp0T1dnSytOMGFmamkwVWQzdXdJZnlBWXd4Yk5qMmhkc2U5Nkwv?= =?utf-8?B?b0l5Y3hKWGZxZkdHUjlkeTFKamFtWUI3NHR0RTZ5ODJyTklnd3VFT2FGZlNF?= =?utf-8?B?Y1YxVUZmOG94QjllOURaTHNPeGJKRFJhd1A1SE9US2JFeWFadmdjM0xFRmwx?= =?utf-8?B?NE5FM01CUTZvRUViaDV3ekoxdVA5dmp5Qjh4V2ZBTTR2KzBia0tHQndmZzAr?= =?utf-8?B?Tkoza00rUzlGYXJGaytVYjM5U2JydndmZVlWa0RKWE53RUVtYWQ1RVltSlRH?= =?utf-8?B?clZwQnJCZFNycWNuSFZSYlZjcEtYWTh5eGNnbTJwS1hUclA3Y2JDUFArQWU5?= =?utf-8?B?UTJxRTlQbkg1Y3A5TGdVbFBLL3RBTGtHSU5ocXA5WnMvdUhTTXFSektueGI2?= =?utf-8?B?QmFERjNlQVFiOC93VDIrcy9sTkRHaW5MYjdFQmc2TTNOTGZHZkJ0UHlzdGRk?= =?utf-8?B?TWFkTC9JdXM2dUtDejAydDdVaGdRPT0=?= Content-Type: multipart/mixed; boundary="_003_62e18f3d02e770a3790e68c8dd0a4e9d576db841camelibmcom_" X-OriginatorOrg: ibm.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR15MB2783.namprd15.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: dc619ee1-ed44-44ed-e368-08dd9c935b99 X-MS-Exchange-CrossTenant-originalarrivaltime: 26 May 2025 20:24:46.6818 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: fcf67057-50c9-4ad4-98f3-ffca64add9e9 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: AQeQvVuK4eJhvOf7AY/6wjP6IHZrxBE89YSuiMMypMkYKoo7FPHr7VKQgVcLmkwNrEG+TCWfMrADqFH59/qMaw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR15MB4050 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTI2MDE3MiBTYWx0ZWRfX5GYqyhmW16g0 EBdDJi3dRl5Lr+0HYR2gwwykKNv+EJRwecOaspHTVZg3WjQKL6MbjRm6YIYKhlzKF86UGBLNCdU pea0fDwwNL86eRHT181WHkV3xKNTxoUpUprJEeHdFuerB1p/YKn6kCjHNz/jmQnDcquGdBhpKQI NDxo9uqimyTH/OlCFLnydCI6rW3JP8aqrxkKs2klPi/cMKPJwduhR6zLy4FtOkuhX7y+W+ww9Ay obUU42U9ZoqSwilkD3ORpm+Uqk7/eMXGHWpZROKrk7+y5LTDmoANTtdFn4gZHVvsaVsPRDz551D 0RcbdWyvKYi/IieEJiTyRsy6l+GQ6F+M+a+Jv8S9xcukaKRa+u4Xh9E48GrGDBN8oXyNz1Lg99U zhbLZwjuw1XzcJ5JyiVPEqx0kf5Z1OLhwSPPtzEoOUJ4pYe7F3UZTXvB8hnkCYKJh14q2XyO X-Authority-Analysis: v=2.4 cv=INACChvG c=1 sm=1 tr=0 ts=6834ce15 cx=c_pps a=oHfdRNjjH91Dx1UII95wnA==:117 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=dt9VzEwgFbYA:10 a=epTmVMiNAAAA:8 a=pGLkceISAAAA:8 a=LO9xwbrNAAAA:8 a=QJQI_O1Oqw_6uwqgFyIA:9 a=QEXdDO2ut3YA:10 a=zFdEyRvelZdl94bg13gA:9 a=HXjIzolwW10A:10 a=T6a71-JsGAwA:10 a=l-gat3qAYyrluaLK4bQA:9 a=t9bde8RXNj11oruRk6s3:22 X-Proofpoint-ORIG-GUID: yvLDqiB0WoD7RvCPGdWJDUvZcCWocttm X-Proofpoint-GUID: hVsxAs_uoVOl3N4NFx2EL9oDVmXAnM_9 MIME-Version: 1.0 Subject: RE: Review/Pull Request: Adding new CRC32C implementation for IBM S390X X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-05-26_10,2025-05-26_02,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 spamscore=0 clxscore=1011 phishscore=0 mlxscore=0 malwarescore=0 impostorscore=0 suspectscore=0 adultscore=0 mlxlogscore=999 priorityscore=1501 lowpriorityscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=2 engine=8.19.0-2505160000 definitions=main-2505260172 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_003_62e18f3d02e770a3790e68c8dd0a4e9d576db841camelibmcom_ Content-Type: text/plain; charset="utf-8" Content-ID: <5DA0E7BE3E542B40A4733DC98B0E782A@namprd15.prod.outlook.com> Content-Transfer-Encoding: quoted-printable Hi, So I worked on the algorithm to also work on buffers between 16-64 bytes. Then I ran the performance measurement on two dataset[^raw_data_1] [^raw_data_2]. And created two diagrams [^attachment].=20 my findings so far: - the optimized crc32cvx is=C2=A0faster - the sb8 performance is heavily depending on alignment (see the ripples every 8 bytes) - the 8 byte ripple is also visible in the vx implementation. As it can only perform on 16 or 64 byte chunks, it will still use sb8 for the remaining bytes.=20 - there is no obvious speed regression in the vx algorithm. Except raw_data_2-28 which I assume is a fluke. I am sharing the system with a bunch of other devs. I hope this this is acceptable as performance measurement. However we will setup a dedicated performance test and try to get precise numbers without side-effects. But it may take some time until we get to that. I'll post the update on the Code together with the other requested updates.=20 cheers, Eddy [^raw_data_1] bytes crc32c_sb8 crc32c_vx 4 6.54 ms 6.548 ms 8 4.476 ms 4.47 ms 10 7.346 ms 7.348 ms 12 10.955 ms 10.958 ms 14 14.548 ms 14.546 ms 16 6.837 ms 6.193 ms 32 12.23 ms 6.741 ms 64 22.826 ms 7.6 ms 80 28.536 ms 8.307 ms 96 34.426 ms 9.09 ms 112 40.295 ms 9.844 ms 128 46.053 ms 10.825 ms 144 51.868 ms 11.712 ms 160 65.91 ms 12.122 ms 176 71.649 ms 13.055 ms 192 77.465 ms 11.716 ms 208 83.286 ms 13.532 ms 224 88.991 ms 13.165 ms 240 94.875 ms 13.881 ms 256 100.653 ms 13.147 ms 8192 2967.477 ms 182.911 ms [^raw_data_2] bytes crc32c_sb8 crc32c_vx 4 6.543 ms 6.536 ms 8 4.476 ms 4.47 ms 10 7.35 ms 7.345 ms 12 10.96 ms 10.954 ms 14 14.552 ms 14.588 ms 16 6.843 ms 6.189 ms 18 10.253 ms 9.814 ms 24 9.645 ms 9.924 ms 28 15.957 ms 17.211 ms 32 12.226 ms 6.726 ms 36 18.823 ms 14.484 ms 42 17.855 ms 14.271 ms 48 17.342 ms 7.344 ms 52 24.208 ms 15.306 ms 58 23.525 ms 14.695 ms 64 22.818 ms 7.593 ms On Thu, 2025-05-08 at 05:32 +0700, John Naylor wrote: > On Wed, May 7, 2025 at 8:15=E2=80=AFPM Aleksander Alekseev > wrote: > >=20 > > I didn't review the patch but wanted to point out that when it > > comes > > to performance improvements it's typically useful to provide some > > benchmarks. >=20 > +1 -- It's good to have concrete numbers for the commit message, and > also to verify improvement on short inputs. There is a test harness > in > the=C2=A0 v7-0002 patch from here: >=20 > https://www.postgresql.org/message-id/CANWCAZaD5niydBF6q3V_cjApNV05cw-Lpx= xFtMbwDPLsz-PjbQ@mail.gmail.com=20 > =C2=A0 >=20 > After building, run the "test-crc.sh" script here after executing > "CREATE EXTENSION test_crc32c;": >=20 > https://www.postgresql.org/message-id/CANWCAZahvhE-%2BhtZiUyzPiS5e45ukx58= 77mD-dHr-KSX6LcdjQ%40mail.gmail.com=20 > =C2=A0 >=20 >=20 >=20 > -- > John Naylor > Amazon Web Services --_003_62e18f3d02e770a3790e68c8dd0a4e9d576db841camelibmcom_ Content-Type: image/png; name="crc_sb8_vx_4_256.png" Content-Description: crc_sb8_vx_4_256.png Content-Disposition: attachment; filename="crc_sb8_vx_4_256.png"; size=14780; creation-date="Mon, 26 May 2025 20:24:46 GMT"; modification-date="Mon, 26 May 2025 20:24:46 GMT" Content-ID: <775901A105CD374AAE7A141826A4485B@namprd15.prod.outlook.com> Content-Transfer-Encoding: base64 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 n/j4eLVp00aRkZHatWuXVq9erby8POc7GHNycvTCCy9o9+7deuONN5Sbm6vevXurX79+Msbo+eef 144dO/T111/r+++/d35CQ2lZeqWrcuXKeuONNzRs2DCNGzdOO3bs0M6dO/XFF19IFz5gbPjw4UpM TNSBAwcUFxen999/38oWAADAFe6dfw7Qm+P6Frm+hm/+e8hvuOEGffbZZ/rwww914sQJBQYGatmy ZQoMDFTdunX14IMPKiQkRI8++qhq1aqlX375RT4+PtKFW55ef/11PfbYY2rQoIFWrVqltm3butW3 5Z/TdffddyskJEQ///yz+vXrp3feeUd+fn6SpD59+igqKkqRkZFq3ry55s6d63ypEQAAoCT8qnrJ r2rpfqdv377q27dgULv11lt16623SpLzc0T/LCAgQG+88Yb7zf5JuXwNUPv27dW+fftC14WGhio0 1P3X+wEAAC5HfOE1AACADQhdAAAANiB0AQAA2IDQBQAAYANCFwAAgA0IXQAAADYgdAEAANigXD6n CwAAoNykn5bOZxS9vnpNycvHzo5KhNAFAAAuL7OelH7+quj1Uz+UekXY2VGJELoAAMAV7fvvv1fl ypUVHh7uXLZ06VLl5eXp8OHDuvHGG9W5c2dJUlRUlBITEzV27FjL++CeLgAAcEU7d+6cnnjiiXzL nnjiCWVlZalhw4a65557lJmZqfT0dN1999269tpry6UPrnQBAIAr2uDBgzV27FjFx8erbdu2iouL 05EjR3TbbbfJ29tb//3vf/XCCy8oMzNTt9xyiwYOHFgufRC6AADAFa1q1aqKiIjQN998o7Zt2+rL L7/U8OHD5e3tLUmaMWOGwsLCVKlSJcXFxZVbH7y8CAA2OH02y+W/3DzHpW4RuKLdc889+vrrryVJ X331le69917nutOnT+v8+fPKyMjQqVOnyq0HrnQBQDnLcxjVHPqWyzGLpw3T4K4tbOsJuNr07dtX qamp+vzzz+VwONStWzdJkjFGo0eP1uTJk3Xu3DmNHj1aK1asUKVKlSzvgdAFAAAuLzXrSQFNi17v 41tgkYeHh+688049+eSTeuCBB5yhavbs2crOztb48ePlcDj0xRdfaM6cOfrHP/5heduELgAAcHkZ //L//Sulhx9+WP7+/hozZowkyeFwKCsrSx988IEqVaokDw8PffLJJ1q6dKkcDocqV7b2LixCFwAA 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 d6IeRW0AAAAASUVORK5CYII= --_003_62e18f3d02e770a3790e68c8dd0a4e9d576db841camelibmcom_ Content-Type: image/png; name="crc_sb8_vx_4_64.png" Content-Description: crc_sb8_vx_4_64.png Content-Disposition: attachment; filename="crc_sb8_vx_4_64.png"; size=14712; creation-date="Mon, 26 May 2025 20:24:46 GMT"; modification-date="Mon, 26 May 2025 20:24:46 GMT" Content-ID: <5E8807B5312CA948A5D9D62C69313B67@namprd15.prod.outlook.com> Content-Transfer-Encoding: base64 iVBORw0KGgoAAAANSUhEUgAAAl0AAAFUCAYAAAAeZYl+AAAACXBIWXMAAA7FAAAOwgEILXo4AAAg AElEQVR4nO3deVxVdf7H8TegsoiKuIvigqKiZkaauJbiFpiajlvWtOrU5GS7+RttcUqbsalptFHL cmyxUjONcsnKlMQFd0XcF0TcQGXfLuf3x+gdGeDeC9x7FH09H48ej+45H76fL5xz4O05557rZhiG IQAAALjSNPfrPQMAAIBbAaELAADABIQuAAAAExC6AAAATEDoAgAAMAGhCwAAwASELgAAABNUKssX paam6ptvvtH58+cVEhKie++9V25ubtb1P/74o7Zt26bAwEANHz5cVapUceacAQAAKpxSn+k6deqU 2rRpo59++kl5eXmaPHmyhg8fbl3/5z//WRMmTFBubq7mz5+viIgI8fxVAABwq3Mr7RPpZ8+erc2b N2vhwoWSpBMnTqhp06Y6e/as3N3d1aRJE+3fv1+BgYHKzc1VSEiIZs+erf79+7vqewAAALjRlf6J 9H/84x+tgUuS0tPT5enpKW9vb23YsEGtW7dWYGCgJKlKlSrq16+f1q5d69xpAwAAVDBluqdLklas WKGff/5Zmzdv1oIFC1StWjWdOHFCjRs3LlTXqFEj7dixwxlzBQAAqLDK/O5FDw8PVapUSVlZWTp2 7JgkKSsrS56enoXqvLy8lJmZWf6ZAgAAVGBlPtMVERGhiIgInTt3TkFBQerbt6+8vb2VnZ1dqC4r K0tVq1Yt8vUxMTFKTk4ua3sAACApMjLyek8BDipT6DIMw/qIiLp166p58+bav3+/mjVrpgULFhSq PXHihJo3b15kjLCwsGLHjoqKYgcCAMABUVFR13sKKIVSX1588sknNW7cOOvrS5cu6ejRowoKClLP nj116NAhHTlyRJKUmZmpVatWaeDAgc6dNQAAQAVT6jNdf/zjH9WjRw/l5OSoRYsW+uabb9S7d291 7dpVkjRp0iT1799fY8aM0dq1a3XnnXeqV69erpg7AABAhVHqM13t2rXToUOH1KtXL3l5eekvf/mL vv32W+v6KVOmaM6cOfL29tbEiRO1ePFiZ88ZAACgwinTPV21a9fWY489VuL68PBwhYeHl2deAAAA NxU+8BoAAMAEhC4AAAATELoAAABMQOgCAAAwAaELAADABIQuAAAAExC6AAAATEDoAgAAMAGhCwAA wASELgAAABMQugAAAExA6AIAADABoQsAAMAEhC4AAAATELoAAABMQOgCAAAwAaELAADABIQuAAAA ExC6AAAATEDoAgAAMAGhCwAAwASELgAAABMQugAAAExA6AIAADABoQsAAMAEhC4AAAATELoAAABM QOgCAAAwAaELAADABIQuAAAAExC6AAAATEDoAgAAMAGhCwAAwASELgAAABMQugAAAExA6AIAADAB oQsAAMAElcryRVlZWVq6dKmSkpLUtm1b3XvvvdZ1b7/9trKysgrVP/3006pdu3b5ZwsAAFBBlfpM V0pKijp06KClS5cqNzdXL774op544gnr+qlTpyonJ0deXl7W/9zdOaEGAABubaU+0xUVFaWmTZtq 2bJlkqQRI0YoODhYb7/9tqpWrarc3Fy98MILqlWrlivmCwAAUCGV+hTUQw89pDVr1lhf169fX5KU np6u1NRUSZKvr68z5wgAAFDhlemermstW7ZMbdq0UWBgoI4cOaLKlStr9+7dWr9+vfz9/TV06FD5 +fk5Z7YAAAAVVLlutoqNjdULL7yguXPnSpLS0tKUl5enyZMnKzs7W998843atm2rM2fOOGu+AAAA FZKbYRhGWb4wOjpaw4YN09y5czVkyBBJUl5enlJSUlSvXj1rXXh4uDp16qTp06cX+vqYmBglJyeX d/4AANzSIiMjr/cU4JhpZbq8GBsbq6FDh+qLL75Q3759rcsrV65cKHBJ0h133KGEhIQiY4SFhRU7 dlRUFDsQAAAOiIqKut5TQCmU+vJiRkaGhgwZonnz5hUKXJK0fv16PfbYY7r25NnGjRsVEhLinNkC AABUUKU+0zV79mxZLBYdOHBAM2bMsC4fOnSo2rdvr+joaEVERKhHjx5av369kpOT9fTTTzt73gAA ABVKqc90hYSEaPz48crOzi70n8ViUc2aNbVjxw498MADcnd318MPP6ydO3eqevXqrpk9AABABVHq M12RkZE277ny8fHRAw88UN55AQAA3FT4fB4AAAATlPvhqAAAlNbe4+e1Of603brhPVqrRlVPU+YE uBqhCwBgulVbj+rFD3+2W9e9XSNCF24aXF4EAAAwAaELAADABIQuAAAAExC6AAAATEDoAgAAMAHv XgQA3BI+/GGn1u44brdu4UuD5FnZw5Q54dZC6AIA3BK2HkzS17/ut1v38fMRhC64BJcXAQAATEDo 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 i8aMGaO4uDg1b95csbGx+vzzz3X33Xdr9OjR6tevn9asWaP3339fd9xxhyIiIlSrVi0VFBTowoUL WrNmjRo0aKDGjRvr7Nmz2rFjh6KiouTn56dBg/7zfufg4OBCPTdt2qTBgwdLkhITE0sc05bHHntM 27Zt02233abt27erU6dO+uSTT6Qr4apPnz6qXbu2tm7dqvDwcH388cdq2bKlhg4dqscff1yjR4/W 9u3blZ2dXaazXCpr6CoucElSWlqaNW1u27ZN/v7+atasWZkmBgCADMM5NXCazz//XAcPHtTOnTvl 4eGhRYsWac2aNbr77rvl6empS5cu6dixY5KkRx99VD179tT7778vSXrllVf066+/atSoUZKkvXv3 atq0aTpz5oxefvlleXt7F+n3wQcfKCEhQePHj5ckTZkyxeaYxUlPT9fHH3+slJQU1axZU7m5ufrb 3/6m7Oxs6crlzri4OLVq1UpJSUlq0qSJJk6cqNtuu02DBw/WG2+8oby8PO3bt09Dhgwp88klpz6n KzU1VW5ubgoNDVWjRo20d+9edezYUcuWLZOnp6czWwEAgOtg/fr1uvvuu+Xh4SFJGj16tEaPHm1d f/Vs1dXad955x/p6+vTphcbq06eP+vTpo/Pnz6tTp06qVq1aobFmz56tGTNm6Oeff7YGMntjFsfX 11fdu3fXfffdp7Fjx2rAgAH6v//7P+v64OBgtWrVSpLUoEEDtWrVSrt27VLlypX1hz/8QfHx8WrY sKEsFovuuusuNW/eXE888USpf3ZODV0BAQH6/PPPNWDAANWoUUPp6enq3LmzZs+ereeee65QbUxM jJKTk4sdJyoqypnTAuAC58+ft1uTk5Pj0FhHjhzR/hvwuM/OK3Co7sSJE077vXXkfJZDdXFxcYry POeUnluPOnZ/ytatW+V24YBTeu7ff8GhuqzMLFWxU3P58mVtcODnf/JkokM9V65cKa/KznmiUkl/ 566VnZ1dof7upaamqk6dOiWu9/PzK1R77RvrSlKnTh1FRkbqp59+soau9957T7NmzdKGDRvUtGnT Uo/5v3788UctWbJEP/zwg1555RXde++9WrhwoSSpWrVqhWq9vb2VmZmp6OhotWnTRg0bNpQkeXh4 qFevXoqOjr7+ocvf318jR/73XQ6+vr6KiIjQ9u3bi9SGhYUVO0ZUVJQiIyOdOS0ALjA75ivpeMk3 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 V4Jgr169jKlTp5ar548//mi0adOm2HWu2mcd3UeceWzihuLcz168XiZMmCCzrpKmp6cXugxWv359 paamOr3HokWL1KZNmyLrli9friFDhqhevXqSpAEDBqhKlSratGmTy3oOGjRIv/zyi6pWrSpJ6tq1 q7Kzs3X69Oly9axSpYpWrFihatWqlVjj7G3bqVMn/f3vfy923WeffaZx48ZZLylOmjRJI0aMcGlP V+xPjmyv9evX6+TJk4qMjCxXL0d6ZmRkyMPDQ/7+/pKkSpUqqVatWuX+Pv/1r39p2rRp1tctWrRQ Wlqa3fm4queaNWtUvXp1hYeHS5ICAgK0ePFieXp6lqunJKWkpOivf/2rXn755ULLp02bplmzZllf d+vWTUePHi13P1s9XbHPXv16X1/fYtevXLlSDz/8sCTJ3d1dYWFh5f4+U1NTS+znqn3WkX3E2ccm bixOfyK92b766it5enqqf//+pvSbPHmyXnnlFU2ePFkpKSn69ttvtXjxYqf2aN26tSQpKSmpyLoD Bw6oc+fOhZYFBQUpPj5ePXv2dElPPz8/+fn5WV9v3rxZ/v7+atq0aZn7SdI999xjc70rtm1ERESx y/Pz87V371516tRJR48eVWpqqkJCQlSlShWX9ZSL9id728tisWjChAmaO3eu1q5dW65ejvT08PDQ 0KFD9fjjj2v06NHavn27srOzNWTIkHL1rF+/vrXXgQMHNGPGDL366qt25+Oqnjt37lSnTp2UlZWl 3bt3q3HjxmrYsGG5+l31f//3fxo3bpzq1KlTaPn/jr9p0yaFhoa6tKcr9tm0tDS5u//nHMC2bdvk 7++vZs2aWdcHBwcXqt+0aZMGDx5c7p7VqlVTcnKyjhw5ombNmlm/15YtW7pkn7W3j7ji2MSNpUKH royMDE2aNElRUVGm9QwLC9OHH36of//730pJSVG7du3UvHlz0/qnpqZa//V+la+vr9PPtpUkJSVF f/jDHzR9+nSXvmHB7G17+fJl5efn67XXXtPly5eVkZGhkydPatWqVUV+4TuTq/en4rbXrFmzFBIS oi5durjkF3txPQcPHqw33nhDeXl52rdvn4YMGVLiWYbSmj17tjZv3qzWrVurS5cuDs3HFT0vXLig pKQk9e7dW40aNVJ0dLQeeeQRvfXWW+XqtWPHDq1Zs0ZxcXHaunVriXWxsbF67733tH79+nL1s9fT Fftsamqq3NzcFBoaqkaNGmnv3r3q2LGjli1bVuRM4QcffKCEhASNHz++3D137NihHj16qEGDBtq6 dauee+4565l1V+yz9vYRVx+buAFc7wuc5TFp0qRC17xdfU/X1ev63377rXXZxIkTjTFjxrik34YN G4rcXxUREWG8//77hZYNGDDAeO+991zW86ozZ84Y7du3N1588UWn9Lpq2rRpRe7pcvW2/d/7q5KT kw1JxqxZs6zL/vSnPxn333+/y3q6en8qbnudPXvWqFevnvUNAtOmTXPqfSPF9YyLizOqVatmJCYm GsaVm9xDQ0ONefPmOa2vYRjGX//6V6N169ZGQUGBzfm4queECROMwMBAIyMjwzCu3Cfp4+Nj7Nq1 q8zjFxQUGF27djUWLVpkGFeOz2vvr7rqt99+M+rWrVvue47s9XTVPpucnGx8+eWXxqVLlwzDMIy0 tDSjTZs2xjvvvFOobtasWUajRo2MgwcPlqufYRjG/v37jRUrVhgWi8Uwrtw/6uXlZcTGxrpsn7W1 j7j62MQNoeLe05WYmKj3339f4eHhWrdundatWyfDMLRx40adO3fOJT2PHTumhIQE9evXz7qsd+/e pn7Ad8OGDYtcAjxz5owaNWrk0r7nz59Xjx49NHz4cP31r391aa/rsW39/Pzk6emprl27Wpf1799f O3fudEk/uXh/Kml7vfHGG+rSpYuOHz+udevWWR/XsWXLFpf1jI6OVps2bayXUTw8PNSrVy+nHzeP PPKI4uPjlZiYaHM+rupZr1493X777fLx8ZEkNWrUSG3bttWuXbvKPP7SpUt1+vRp1a9fX+vWrdOO HTuUmZmpdevWKTc3V7ryqIXBgwdr4cKF5b78Za/nwYMHXbLP+vv7a+TIkdbHMvj6+ioiIkLbt2+3 1rz33nt69913tWHDBrVs2bJc/XTllopBgwZZL2u2bdtW7dq1044dO1y2z9raR1x5bOLGUWEvL+bk 5GjQoEFasmSJdZlhGFq4cKEaNGhQ4jOfyqN27dqSpLNnz1rvDTl37px1uRm6du2qjz/+2Po6OTlZ +/fvLxQWnM0wDA0dOlQjRozQ1KlTXdbnquuxbd3d3dWlSxft2bNHHTt2lK7c3+aKXle5an+ytb0C AwN14cIFzZkzR5IUFxenzMxMffXVV0XuFXRWz9q1axcJy+fOnSv3z3bMmDGaMGGCwsLCpCvby83N Tf7+/i7bZ2317Natmz755BMVFBTI3d1dhmHozJkz5fo+vby8dNddd1m314ULF3Tp0iXNmTNHHTt2 VHJysoYNG6bPPvvMafc+2ur59ttvSy7YZ/ft26etW7dab5aXpOPHj1t7rF69WjNnzlRMTEyh52iV x+rVq1WpUiX16dNHunJf56lTp9SgQQPl5ua6ZJ+1tY+46tjEDeZ6n2tzJjMeGTFs2DBj0KBBxu7d u43o6GgjODjY+lZmZ0lISDBiYmKMuXPnGjVq1DBiYmKMmJgYIzc318jIyDCaNGliTJo0yVi7dq3R t29f49FHH3Vpzy+++MKoX7++ER0dbV0eExNjJCcnl6vnvn37jJiYGGP8+PHGPffcY8TExBg7d+4s ttZZ2/bq3Dt16mQ8//zzRkxMjHH06FHDMAzjhx9+MAICAowVK1YY33//vdGkSRNj/vz5Lu3piv2p NNvLWZcwbPVMS0szmjRpYkydOtWIj483vv76a6N69erG7t27y9Xz+eefN9q2bWssX77cWL16tdGl Sxdj7Nixdufjqp4FBQVGWFiY8eSTTxobN240nn32WaNFixZOe2SEUczlxXHjxhn9+/cv9D3GxMQY eXl5Luvpin328OHDRvXq1Y0ZM2YYGzduNKZPn25UrVrVOHjwoJGfn2+0adPGeOWVVwp9j+W5bGsY hrFo0SKjdu3axqJFi4wNGzYYY8eONUJCQoycnByX7bOl2Ue4vHhTesPNMAzjegc/Z+nTp48WL15s fZuvK2RnZ+v999/Xxo0b5eXlpfvvv98pjxW41vz58/Xpp58WWf7NN9/I399fx48f15tvvqmEhAR1 69ZNL730Urnflm6r54IFC7RixYoi615//XX16tWrzD0nTJigPXv2FFoWGBiohQsXFql1xra1WCzW f9Ve67777tNzzz0nSfruu+/08ccfq3Llyrr//vs1atSoMvdzpKcr9qe///3vDm+vTz/9VOfPn7d+ /67qmZSUpJkzZyo+Pl7169fXU089Ve532eXn52v+/Plas2aNLBaLunfvrj/96U+qUqVKqX4Gzuqp Kzftv/nmm4qLi1OrVq00adIk6zsenWHPnj3629/+Zj1GHnroIZ08ebJI3fLly532BPX/7emq34G7 du3SrFmzdOrUKTVt2lTPPPOMWrdurZSUFN1///1F6ps1a6ZPPvmkXD2XL1+uL7/8Umlpabr99tv1 /PPPq2bNmtKVs5jO3mdVin3EWccmbijTbqrQBQAAcIOaVmFvpAcAAKhICF0AAAAmIHQBAACYgNAF AABgAkIXAACACQhdAAAAJiB0AQAAmIDQBQAAYIJKkqZd70kAAADc5Nb9P4nzEJNx9/vcAAAAAElF TkSuQmCC --_003_62e18f3d02e770a3790e68c8dd0a4e9d576db841camelibmcom_--