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.96) (envelope-from ) id 1vl5Hr-006mmm-0C for pgsql-hackers@arkaria.postgresql.org; Wed, 28 Jan 2026 13:08:47 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vl5Ho-001Wu4-0M for pgsql-hackers@arkaria.postgresql.org; Wed, 28 Jan 2026 13:08:44 +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.96) (envelope-from ) id 1vl5Hn-001Wtt-2H for pgsql-hackers@lists.postgresql.org; Wed, 28 Jan 2026 13:08:44 +0000 Received: from mail-japaneastazolkn19010016.outbound.protection.outlook.com ([52.103.43.16] helo=TY3P286CU002.outbound.protection.outlook.com) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1vl5Hl-00000000sem-3d01 for pgsql-hackers@lists.postgresql.org; Wed, 28 Jan 2026 13:08:43 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=yVJ4FTjq2L3uryZukskFdQOX1tDFjp3XBUufQ9I5+tucrcyh6BmA+dkMP7uLcR9/o9sCX3PgdwXPJ9SxB4aZAwsyV4K2KJiYpZgZbY7vgiZu8VBUcKWDNMXKYRx2pzA5nUGPRUoTeUzroOCMOpcIoiTSVcwCkuTuLiQ8mWTymHModqeyEe7STOOBDMDMRWcfBScd4hjYGdDbJZH31QwEH3Lr+hzslf4xgZSediy2B5dgs0rskoXjVDsOJrWvyBa85o+3SnneM2P2qZvV8NiNlYYha2pFN+XnWCHs3t8hIOCl/Gaw8KmhyZJIcVt4DDMWUKjSagJBsnyP9dHyH/7GFQ== 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=aVff8rHxjLrB7RTz6WZSrgWQWdqCTVjqZ/LYXgM6Ifg=; b=rLp1lbYl2pZVY6TTp9RFbVRobDGeqwLL9xLUA6UX6l3110jjGdYTTW63mM4iNsblX476a8OXIu3a9IkA5MuK9B2chetzlDDrmGy7DPF/UUsxa04Htr5NuNPe3MmzDoODHIOwcdqjf7ndg4GAZf4AJskY2XEub+hahVtoG3Dja1wnCt5GM1PZ+l0RAAwqw3ULA/fsCpgi4eDly17nHJsTrCY5yQTwVc98LR0l6XjZ3uWgpip4MGFOje19zoePDvaUZt0uC2OGnEYgFCth8UBLrtzCxecCuGEMDIBo/JiHmTXxiddE64ic+1HFWT2pee0qQo4ifLV7+GbOttqcI+7urg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=aVff8rHxjLrB7RTz6WZSrgWQWdqCTVjqZ/LYXgM6Ifg=; b=d4XVBW5WrE/F55Irf/dMiEjlUvsCN0mIN5LMmXUQujJXCYI0b0B1D/wq1Vq/AtxyZQuIJCVJTWSY/ZNlOUJiO7u94jv03zFo8uzPGFVKmrm+B6IL4mq+fsKBunOwnuCKlpvKgu3hPTmJOuTjKuAhBE5+i1p99fiwDgBpYCflsM795gke4FxBV20mh1+RC+ytsANKFexd1hIwMyc57zVuNBqvPR1arHyZ2vth8Bp0PJEIEflcPC5O3sYgGH64QaWyCzOW7S1ITK8qEn25tJpqAWpbhT1l9lWyZdFebvMDA6E5eeuW/k/nI3DuuT3cckxMDyQNJ/O9f58nRk6MlJCYvA== Received: from TYYPR01MB14116.jpnprd01.prod.outlook.com (2603:1096:405:212::9) by OSZPR01MB6709.jpnprd01.prod.outlook.com (2603:1096:604:f9::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.16; Wed, 28 Jan 2026 13:08:36 +0000 Received: from TYYPR01MB14116.jpnprd01.prod.outlook.com ([fe80::31dd:4ff2:eea8:c663]) by TYYPR01MB14116.jpnprd01.prod.outlook.com ([fe80::31dd:4ff2:eea8:c663%7]) with mapi id 15.20.9542.010; Wed, 28 Jan 2026 13:08:36 +0000 From: Chengpeng Yan To: Ilia Evdokimov CC: David Geier , "pgsql-hackers@lists.postgresql.org" Subject: Re: Hash-based MCV matching for large IN-lists Thread-Topic: Hash-based MCV matching for large IN-lists Thread-Index: AQHceQLAFs1SRytDl0yYQRyXCSsqCbVDT7mAgA480gCAFi/GAA== Date: Wed, 28 Jan 2026 13:08:36 +0000 Message-ID: <21FF6A0B-886F-4132-B6A6-0F4E934B4CEE@Outlook.com> References: <7db341e0-fbc6-4ec5-922c-11fdafe7be12@tantorlabs.com> <988e3168-6096-488a-bb42-787e1e8c21a4@tantorlabs.com> In-Reply-To: <988e3168-6096-488a-bb42-787e1e8c21a4@tantorlabs.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-traffictypediagnostic: TYYPR01MB14116:EE_|OSZPR01MB6709:EE_ x-ms-office365-filtering-correlation-id: c269f1ce-e3cc-4861-6754-08de5e6e58c2 x-microsoft-antispam: BCL:0;ARA:14566002|8022599003|8062599012|8060799015|19110799012|15080799012|461199028|41001999006|31061999003|3412199025|440099028|102099032; x-microsoft-antispam-message-info: =?utf-8?B?OFdhQ3JPeEFkbU5nMitmVHhnOEUwWloyRTNHa2FiTWhtVHRxQmVaMHRITzh5?= =?utf-8?B?OHYxeTFEWHdsbWxlRGY1L0xocVlLMDRqY1pkQmt4YlN5T1dVejVmZlByRW0x?= =?utf-8?B?NVQrZjFJKytaV2gzNC80T1dabHJNdDdHU1dxSEtpTERtMnBFNlJSL3Rpa1lX?= =?utf-8?B?VXpuQ1UyL09SYzRTUklhbGZUc2lLWUM4c0M0Y3JqZjM5UkpWays1MmlMMWh4?= =?utf-8?B?aXBEL1g5RU1DczdWTVlReUY0MzRmcGxKVWg3MUhjVU9JaWFZUzc1bjhEWW9S?= =?utf-8?B?UDhrTFpFR05scDdLWWRCeFVDK2o1dzVUNmNqM3VUK3dYUlpHYU5qcXZXTDYw?= =?utf-8?B?U3hCdjFVcDJCZHM1T05EK0pNaHJpdWIvaUtaeWdwMXNORjM5Vi8vdGN3OUx1?= =?utf-8?B?S0U3TG9xdTVZMEZidElJa3hjTllPcnBsR2srckhhRXdiQzdzemVpbjNmeXdu?= =?utf-8?B?c2MxQ1k1VFVjWFFIMFBzMGhUQmdyOUI5NHFqdVIzTU1tWUhrbkxrTFhoRlMr?= =?utf-8?B?R01SMUVEQUw3MEhIRk0zazFUcnBkWVljRVpyQUFaQnVNWHFpVkFMSldSZUx5?= =?utf-8?B?MjY3OEh5QTdBaTUvRThPSGdDbVBXVjFtUkRFS2JsVGlyNVVmUjZSdWFRb0Z6?= =?utf-8?B?aFVySE9CWUlsN2hIU1lxMFdpMHVFQ0hUeUFKcWJXSTk1KzMwZ3Q2dTl4RFlQ?= =?utf-8?B?OVhPcXFXekxEdkFMVFl0dERCUUF0UTRGUE1YK1A0RDdKZllOamszVVVya25o?= =?utf-8?B?MUticzRIQ3pHNDFlY0JCN1BBWDArbVlVcmtaYWVhQkptOVdEMktLTGdSOWZx?= =?utf-8?B?UlQvc243VlNMU1VEY0hRVzc4REdja24wNWJYUzJvaU1mNzhibnJ0dHFKL3ZN?= =?utf-8?B?VTlzcFN3QkhvSUhmUldYVGd6WmV3WGhENFJPZHcvR05LK1k2Y3dxMHdTbUN6?= =?utf-8?B?VHloaWh4b3ZtN0Nld1Q2VEptYXBpZThOUFJlb1RTbEt2RlFQOGlrYTFZcnJ5?= =?utf-8?B?SHlGSFFjMHBsbEltdGtFQThnUllYaHI1RHdGN0xYOU1GeHJkTHlyVmVxWG9L?= =?utf-8?B?ZS8raHNxcmlSODBaRTQ0U1J4ZU5sK3p0a1FRekF2NU13OTA1c0V6bHpxZFhE?= =?utf-8?B?dW5XQ3I3UTNxMTRmTlpMaWNkSUVKZ0loaDV5VGlEczk2K1htK0t6aGhReG1R?= =?utf-8?B?QmJNczVGSXJhTUlkWGdmdHJnWk1xb1l1ZXVFaS9GRUFJL0Q3bjU0dEN5OW13?= =?utf-8?B?QXJGT3Z2VlJ2N1BtSXZDclduQ01BbHV5MzY1TkI4ajN2Qzdmclp4Q1M3Ym1v?= =?utf-8?B?d0VBUk51cWcramdNU0ZwL3BqQW1xOXZibTVxMStLMlFZTGRobW1iZ1p6ZWVJ?= =?utf-8?B?NEN6eTFsbnUwcE5ZY2ErT28wTWpXa041R1B6U0FVMU5GY2NnTUM3dFFoRjZG?= =?utf-8?B?SERZb212MnZMVDZOeXU0WmpzQ1ptVGNTZXdPVXhscU9nemhzTDRvRDh6Wlgv?= =?utf-8?B?N0k3Rkg2MzBGSXI0WHl3UDkrQStBK1kvTlpWWDBwMWI0RlEwZzRzQWtWc1I5?= =?utf-8?Q?Reyx+Hf8SUniz2IQ5cj2Dr7v8=3D?= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?NllvTWlaL2Vjb1d0bUYweUFGY1BFU2RpWXZURnhzSjJCcUNKWFF5NTA1ZU55?= =?utf-8?B?QXJBV0Y4dlk5MXFFbHlBbDl0SDFMYWNjZFJJd2R4SGcva3d3TGlLNW1wcDJ5?= =?utf-8?B?enpkTU5tRTNUUVdCOEJGK1EyelBmSHJBZUdOaWtoSndIUjc1VVdSaXRjRlB6?= =?utf-8?B?c3J5aSs1bllicEd3ZlYwd1ZVSS9VY3RXOStHQUlYcS9IZTVLbm1xb3FUN0RH?= =?utf-8?B?VkNSYWNySldhWW51Z3d4c1AxZ0NxYm9QalUwNHNQSTFibGtNcjZXdkM4SVJI?= =?utf-8?B?VXpSMGFCdEYvaVhJV1BpdVRYQXl5OG1mdmx1Ky9ZUWVuM0hobFlJRURkcmdk?= =?utf-8?B?NThsRTViWHNtd0JVMDVGQUVTYkEzTUp3WlN1QStFZmp0cDVoQzdJY2RlNHFt?= =?utf-8?B?S0N6U05LLzNQU1piZmxPYnpTWGFIWlpSaHltTis2a1BLbTJ1NW4wRGQ3a0JE?= =?utf-8?B?NHFTWUozWDQvSDJBdDFUbkRBSGF6VWlxT2NMUDRMSmhjSFFrZmQ4MGVnOExV?= =?utf-8?B?K3F2clVLRHgzWWkwQ0VOWHVvVEVFVzN6K0E1QnJjYnBLaGRGQlB1c3lGWjlW?= =?utf-8?B?TUZ2T3ptWFZWT3hSa1A4RW1HYncvb00ya1B2cllRR2grRFVZUkJ6WnNUdE5p?= =?utf-8?B?clFlRnpjOEkrS1dja0pZTlg3cjNaQ1B5L3hmZWs0Rm1rY3JBSDZUWU84Rkd2?= =?utf-8?B?TGhJcHNLOGRGV1lEaWRPU1ZDTnY2Z1FxM3FwWUR0elAwbkNtanpRTUhuNUl1?= =?utf-8?B?N3FwZ2tVaE9wdlQraTQ3OGpnYkc5MGNuc0pPZXUwaTdvWWlIVHQxS05Kc0Nx?= =?utf-8?B?RHBWaGRpU0tOS09rUFdqS0hYYzY0R0dZemswajZPNXl5ajRCYXMxZVVEamcy?= =?utf-8?B?anFIZXVRam9rSGdIM012OVpmVkpnbEw5dDI2d0tNbVA1S21VemRYaVRlTXdN?= =?utf-8?B?d1U3UnBpa0VUdEw2aHZuNFJYaHNqTjI2cUtQS2pvR0VsREpCMTB5a2JjMmJ1?= =?utf-8?B?ZXo3KzlpUnozUm5XdmZDdEtQRjZKeEJhZjltRkNPTTdaekV3WERGVW13Tm52?= =?utf-8?B?MkY2WG91SkhvUzY1MmpCeEpXTldabERjeHpOT01TNmRuNGkwelBYeStTMzlR?= =?utf-8?B?eDJiUjFOQndLWjdsaC9NSStKcUo0dE5QU1U0VDR4SGtZRVBEUnp4T0dIbUdz?= =?utf-8?B?Sjg3NXg5T0ZiSlU5clNORWZzOEQyYWo2YWJJVm1mWm13ejh0ZFp2ZXVXbTJ3?= =?utf-8?B?dnFUQytPc3U0R1hrUEVSdkhMZVQ3T1dxb1dDdW9OZnBKbkhicm1KMFN4SU10?= =?utf-8?B?TGJYM1hBQ2dTQ29LOHE4aS9IRmxVSzY5WFpXTVFVMk5GSGxrZkowQlZDWCtH?= =?utf-8?B?dURpUXNXMDZ6citFNXMwdWtCR1ltRTA2MlZOd0xXTEY2T1IyY1pTWGZGZHNh?= =?utf-8?B?MW1CWkNablJDZ1U0blNIc0dHVC9QaE5IaFFSNmxrM3BRcmYvbWhxWkhjckpk?= =?utf-8?B?UFV2MkhEWTl2Y2xhSWUxS2UwZkxnOWNRYld5TWMvc2xuNXhhK28vMnpZOVp0?= =?utf-8?B?Z0lRUFhHSHhGRXRqUTVoMnpKZDJ0RWF2bFN0aVcvZ0l0eUNvMjlBRFBweTI5?= =?utf-8?B?R0JzaHRLVGZCK1M2Qmk0YzBFREtjeUdrNE0vNUdrQXlTN3hoa21FLzFZMnpI?= =?utf-8?B?YVFpVUlhd09ERTZRZS9UYWFQRkxUZUxqSkhkMVNxSUxCVG5HcXEvMHVnazN2?= =?utf-8?B?Uk1CZUg2aDhDQjBYOHJqN01JZm51dE9McThaQ1lNRUtyMVZHR1NHWWVGZVJ5?= =?utf-8?B?bUh5cFJFK0Z1RklXbFFBWDN1QUpzVzRxSzFOVllyaU9walNOZ1RzeGVvc3Zl?= =?utf-8?B?Y25lanA3RWNJZ0J2WUNseWszMU5JaGtobk5JcTVpWDRNZkE9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TYYPR01MB14116.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: c269f1ce-e3cc-4861-6754-08de5e6e58c2 X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Jan 2026 13:08:36.1718 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: OSZPR01MB6709 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk DQoNCj4gT24gSmFuIDE0LCAyMDI2LCBhdCAxODoxOSwgSWxpYSBFdmRva2ltb3YgPGlseWEuZXZk b2tpbW92QHRhbnRvcmxhYnMuY29tPiB3cm90ZToNCj4gSeKAmXZlIGF0dGFjaGVkIHYyIG9mIHRo ZSBwYXRjaC4gSXQgY3VycmVudGx5IHVzZXMgdHdvIGZhaXJseSBsYXJnZSBoZWxwZXIgZnVuY3Rp b25zIGZvciB0aGUgQ29uc3QgYW5kIEFycmF5RXhwciBjYXNlczsgdGhpcyBpcyBpbnRlbnRpb25h bCB0byBrZWVwIHRoZSBsb2dpYyBleHBsaWNpdCBhbmQgcmV2aWV3YWJsZSwgZXZlbiB0aG91Z2gg dGhlc2Ugd2lsbCBsaWtlbHkgbmVlZCByZWZhY3RvcmluZyBvciBjb25zb2xpZGF0aW9uIGxhdGVy Lg0KDQpUaGFua3MgZm9yIHdvcmtpbmcgb24gdGhpcy4NCg0KSSBoYWQgcHJldmlvdXNseSByZXZp ZXdlZCB0aGUgdjIgcGF0Y2ggYW5kIHdyb3RlIHVwIHNvbWUgY29tbWVudHMsIGJ1dA0KZGlkbuKA mXQgZ2V0IGEgY2hhbmNlIHRvIHNlbmQgdGhlbSBiZWZvcmUgdjMgd2FzIHBvc3RlZC4gSSBoYXZl buKAmXQgeWV0IGhhZA0KdGltZSB0byByZXZpZXcgdjMgaW4gZGV0YWlsLCBzbyBJ4oCZbSBub3Qg c3VyZSB3aGV0aGVyIHRoZSBpc3N1ZXMgYmVsb3cNCmhhdmUgYWxyZWFkeSBiZWVuIGFkZHJlc3Nl ZCB0aGVyZS4gSeKAmW0gcG9zdGluZyBteSBlYXJsaWVyIHJldmlldyBub3Rlcw0KZmlyc3QgYW5k IHdpbGwgZm9sbG93IHVwIHdpdGggY29tbWVudHMgb24gdjMgb25jZSBJ4oCZdmUgaGFkIGEgY2hh bmNlIHRvDQpsb29rIGF0IGl0Lg0KDQoqIFRyZWF0IE5VTEwgYXJyYXkgZWxlbWVudHMgYXMgemVy byBzZWxlY3Rpdml0eSBmb3IgQUxMOg0KDQpJbiBgc2NhbGFyYXJyYXlfbWN2X2hhc2hfbWF0Y2hf Y29uc3QoKWAgKGFuZCBzaW1pbGFybHkNCmBzY2FsYXJhcnJheV9tY3ZfaGFzaF9tYXRjaF9leHBy KClgKSwgTlVMTCBhcnJheSBlbGVtZW50cyBhcmUgY3VycmVudGx5DQpoYW5kbGVkIGJ5IHNpbXBs eSBjb250aW51aW5nIHRoZSBsb29wIChlLmcuIGBpZiAoZWxlbV9udWxsc1tpXSkNCmNvbnRpbnVl O2ApLCBlZmZlY3RpdmVseSBpZ25vcmluZyB0aGVtLg0KDQpUaGlzIGJlaGF2aW9yIGlzIG9ubHkg Y29ycmVjdCBmb3IgQU5ZL09SIHNlbWFudGljcy4gRm9yIEFMTC9BTkQgKGB1c2VPcg0KPSBmYWxz ZWApLCBhIHNpbmdsZSBOVUxMIGFycmF5IGVsZW1lbnQgY2F1c2VzIHRoZSBgU2NhbGFyQXJyYXlP cEV4cHJgIHRvDQpuZXZlciByZXR1cm4gVFJVRSBmb3Igc3RyaWN0IG9wZXJhdG9ycyAoYXMgYXNz dW1lZCBieSB0aGUgc3Vycm91bmRpbmcNCmNvZGUgYW5kIGNvbW1lbnRzKS4gSW4gdGhhdCBjYXNl LCB0aGUgY29ycmVjdCBzZWxlY3Rpdml0eSBlc3RpbWF0ZQ0Kc2hvdWxkIGJlIDAuMCwgYnV0IHRo ZSBjdXJyZW50IGNvZGUgcGF0aCBjYW4gcmV0dXJuIGEgbm9uLXplcm8NCnNlbGVjdGl2aXR5Lg0K DQoNCiogRml4IGNyb3NzLXR5cGUgZXF1YWxpdHkgYXJndW1lbnQgb3JkZXIgaW4gYG1jdnNfaW5f ZXF1YWxgOg0KDQpgbWN2c19pbl9lcXVhbCgpYCBhbHdheXMgaW52b2tlcyB0aGUgZXF1YWxpdHkg ZnVuY3Rpb24gYXMgYChrZXkwLA0Ka2V5MSlgLiBIb3dldmVyLCBgc2ltcGxlaGFzaGAgcHJvdmlk ZXMgYGtleTBgIGZyb20gdGhlIGhhc2ggdGFibGUgYW5kDQpga2V5MWAgYXMgdGhlIHByb2JlIGtl eS4NCg0KSW4gdGhlIGJyYW5jaCB3aGVyZSB0aGUgaGFzaCB0YWJsZSBpcyBidWlsdCBvdmVyIElO LWxpc3QgdmFsdWVzIGFuZA0KcHJvYmVkIHdpdGggTUNWcyAodGhlIGBzc2xvdC5udmFsdWVzID4g bnVtX2VsZW1zYCBwYXRoKSwgdGhpcyByZXZlcnNlcw0KdGhlIG9wZXJhdG9y4oCZcyBhcmd1bWVu dCBvcmRlciBmb3IgY3Jvc3MtdHlwZSBlcXVhbGl0eSBvcGVyYXRvcnMuIFRoaXMNCnJpc2tzIGlu Y29ycmVjdCBtYXRjaCBkZWNpc2lvbnMgYW5kIG1heSBtaXNpbnRlcnByZXQgRGF0dW1zIGNvbXBh cmVkIHRvDQp0aGUgb3BlcmF0b3LigJlzIGRlY2xhcmVkIHNpZ25hdHVyZS4NCg0KDQoqIEluY2x1 ZGUgbm9uLU1DViBJTi1saXN0IGNvbnN0YW50cyBpbiBub24tZGlzam9pbnQgc2VsZWN0aXZpdHk6 DQoNCkluIHRoZSBgc3Nsb3QubnZhbHVlcyA+IG51bV9lbGVtc2AgcGF0aCBvZg0KYHNjYWxhcmFy cmF5X21jdl9oYXNoX21hdGNoX2NvbnN0KClgIGFuZA0KYHNjYWxhcmFycmF5X21jdl9oYXNoX21h dGNoX2V4cHIoKWAsIG5vbi1NQ1YgY29uc3RhbnQgZWxlbWVudHMgY3VycmVudGx5DQpvbmx5IGNv bnRyaWJ1dGUgdmlhIGBkaXNqb2ludF9zZWxgLg0KDQpGb3IgY2FzZXMgd2hlcmUgZGlzam9pbnQt cHJvYmFiaWxpdHkgZXN0aW1hdGlvbiBpcyBub3QgdXNlZCAoZS5nLiBBTEwsDQpgPD4gQU5ZYCwg b3Igd2hlbiBgZGlzam9pbnRfc2VsYCBpcyBvdXQgb2YgcmFuZ2UpLCB0aGUgY29kZSBsZWF2ZXMg dGhlDQpzZWxlY3Rpdml0eSBiYXNlZCBzb2xlbHkgb24gTUNWIG1hdGNoZXMuIFRoaXMgZWZmZWN0 aXZlbHkgdHJlYXRzIG5vbi1NQ1YNCmNvbnN0YW50cyBhcyBoYXZpbmcgcHJvYmFiaWxpdHkgMS4w LCBsZWFkaW5nIHRvIG92ZXJlc3RpbWF0aW9uIG9mDQpzZWxlY3Rpdml0eS4NCg0KDQoqIEF2b2lk IGRvdWJsZS1uZWdhdGluZyBpbmVxdWFsaXR5IGVzdGltYXRlcyBmb3Igbm9uLUNvbnN0IGVsZW1l bnRzOg0KDQpJbiB0aGUgYHNjYWxhcmFycmF5X21jdl9oYXNoX21hdGNoX2V4cHIoKWAgYHNzbG90 Lm52YWx1ZXMgPiBudW1fZWxlbXNgDQpicmFuY2gsIG5vbi1Db25zdCBlbGVtZW50cyBhcmUgaGFu ZGxlZCB2aWENCg0KYHZhcl9lcV9ub25fY29uc3QoLi4uLCBuZWdhdGUgPSBpc0luZXF1YWxpdHkp YA0KDQphbmQgdGhlbiBsYXRlciBhZGp1c3RlZCBhZ2FpbiB3aXRoDQoNCmBpZiAoaXNJbmVxdWFs aXR5KQ0KczEgPSAxLjAgLSBzMSAtIG51bGxmcmFjO2ANCg0KVGhpcyByZXN1bHRzIGluIGEgZG91 YmxlIG5lZ2F0aW9uIGZvciBpbmVxdWFsaXR5IGNhc2VzLCBlZmZlY3RpdmVseQ0KdHVybmluZyB0 aGUgZXN0aW1hdGUgYmFjayBpbnRvIGFuIGVxdWFsaXR5IHNlbGVjdGl2aXR5Lg0KDQotLQ0KQmVz dCByZWdhcmRzLA0KQ2hlbmdwZW5nIFlhbg0K