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 1whQAF-000D9o-2y for pgsql-hackers@arkaria.postgresql.org; Wed, 08 Jul 2026 11:10:05 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1whQAE-006pp7-1N for pgsql-hackers@arkaria.postgresql.org; Wed, 08 Jul 2026 11:10:03 +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 1whQAD-006poz-0k for pgsql-hackers@lists.postgresql.org; Wed, 08 Jul 2026 11:10:02 +0000 Received: from mail-japanwestazlp170110001.outbound.protection.outlook.com ([2a01:111:f403:c407::1] helo=OS0P286CU010.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 1whQA9-00000000E8Y-3Gvz for pgsql-hackers@lists.postgresql.org; Wed, 08 Jul 2026 11:10:01 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=vqGwFE2lG5vyFKfX6AIz+kvz7hP7zj5Y+OVXEeR9Bh31cKxHGgmfnQzvwNP+4GOpcW2vYwDpnMAlj/G4feahle2Do/uQSkVjsDoU69fztvh8OtflTR04SsoWVnKMAxFQqPTWd/stu4jQulgCvbyIWbmqx0icEsfQwUDl9Ew7ng7EOjCmgwF+q7jVXGdvU8+N1ly/oV5b4jG2tuZBHP+feYkNf33jXV1jqtpFr7wyf0EG+YEsrL5FCELo4Fxn/m7w3xXfoEY8jycV6uQNFRgIx1DKEHh25KPj/K1kngyIVd0fBozgCREq6AIuqodoHvrZr1QXUq66GH6r2R7DOJwBzw== 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=WTQFn3/fpzDPok01eo7FgC9BCykVenMqlH5haEgp+Rs=; b=XjVT9NgBZUcOg1C597EBFfRUCz/hGIXS+3IrO1hP+c9mS5MDRzOqSHdqr+rntkSMViM0BwWmN4dmoweIOlD4fH+GwByhZc9Hyyxte5CRqMi0KmaYe8PO27Gxx5I43jXo0IP1iXVYSeMV148AftjM1T2/aKnt2R/aU4M6NcnzIibWvOD2Mn+rD5Og2ew3U16xAoA3YGovJM5+KWgDRweO+H4e6yA1s/nLMb329HKaB2LSmEmpCrJH66LkuaUNjhdu5zgLXLP2/cwk38VMD5T0NVbaFyqb+DrsWiO5l4E0LHdATxOF2TTD2ze2APxQMPhb9M+rtAni7nt17sF2lmAADg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=ntt.com; dmarc=pass action=none header.from=ntt.com; dkim=pass header.d=ntt.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ntt.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WTQFn3/fpzDPok01eo7FgC9BCykVenMqlH5haEgp+Rs=; b=VohgDF450S1nKejqJRYP6pfOQkUFdBLnwvOlKgXMYqUVwRvghkALkAk4VER1K1XtwIxMUXdErj/Wq+nelkyX2loobkb/dBfBGaK8kiJEd0xQW7+t3YOv8VGvE4Q8ioCzMSvhgtspQpNjg7bGfapKdv5nW8ioj8AYsNIjp8ehJeJ221hW7+vysZ7Clp2pzJ+d3M6l617oWUztT5N6HNzbJ4ac0P8f3VZRLS7k64hSXz+C1rgq66JBM0lxIXLe/HsT2fbAe7cWxFAC2vifscLJWOe9dgo6Thz7XSR2kQbfucBJ8z+j0aNUqV7fzrId0DxDHebcLDc0wtrGL0vkP+ivSg== Received: from TY4P301MB1299.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:2f4::12) by TYCP301MB0709.JPNP301.PROD.OUTLOOK.COM (2603:1096:400:437::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.181.11; Wed, 8 Jul 2026 11:09:51 +0000 Received: from TY4P301MB1299.JPNP301.PROD.OUTLOOK.COM ([fe80::b808:e442:a218:f6eb]) by TY4P301MB1299.JPNP301.PROD.OUTLOOK.COM ([fe80::b808:e442:a218:f6eb%5]) with mapi id 15.21.0181.010; Wed, 8 Jul 2026 11:09:51 +0000 From: Tatsuro Yamada To: Richard Guo CC: Tatsuro Yamada , David Rowley , Ashutosh Bapat , "pgsql-hackers@lists.postgresql.org" Subject: RE: Add enable_groupagg GUC parameter to control GroupAggregate usage Thread-Topic: Add enable_groupagg GUC parameter to control GroupAggregate usage Thread-Index: AQHb1rj0Bus22so71kKo5U5qUnYfBLP6qzuAgAKjUwCAAFv8AIAHerSAgAbLKgCCRL4LAIAAHwBwgAHuggCABPA9cIAMX0eAgAHbGoA= Date: Wed, 8 Jul 2026 11:09:51 +0000 Message-ID: References: In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=ntt.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: TY4P301MB1299:EE_|TYCP301MB0709:EE_ x-ms-office365-filtering-correlation-id: d3b33cb3-3c75-44e9-d9ed-08dedce16e86 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|23010399003|19092799006|366016|1800799024|38070700021|22082099003|3023799007|18002099003|56012099006|4143699003|11063799006; x-microsoft-antispam-message-info: oRnquNqzPfAGwmlm1MlrFATHs7Hxkikp3xXb/i5Ac7+hraxOqDxrrDljoGsdM+LWlz00RmYZ+nlngH0qPZA2LsEJhqFDb0FfpVWN7hCacLNX6Lp5KSwPSZRKettDPgntvEkiapj/ESLEmPnlvN2gaoVIR2k7Y5L+XAvpC87fIx+BYTcvHk20Ewv23fxlW4qsbNJMgbR7vpUgS/j04Nk9ortAVNcmrOyMrThcSnaGxUGrSlplPRQbEJBkZxwHnTF3L6DLPb1bJ+ArBiQT60j/it0d8EUh167n6BKReMeHsBkSTmBqL6r0xXoWlOzb+8zU8Y33vqWa9zIaZ0CCN57c2EdwUWTyZHa6GKXhQTgl9kNlEnFgMbdJbLQBXRK15o8LRX2Lcsn9mblX2guBk3GU6STUM7P78cqNXEHbux9PIw9sc/7BgYR5qnQ2wJxTdSpqcDwGs2o4C62lHWGzDNqgAkqxvVdDOCKxA5CQvazhhcrqae9IfE77edAILhSOo5eDJoyPwa+hDnKrk6f8JO+tARNYHHfCz+GDtycl2WqFg96tH1jZWj6gBSBGnK2nQMYFk2fPJxdECIGMoFa02TRBb98Cr/Pkp9VMSucoRSsP9DYUyhHIqs5xsWspRvKOxHuZdIDuDdH3dD1+nbTBzNOVZdnADRr5V6gVZnEV/iUpA25dpKPJ7yN8edvRJT6KW7s/n3mfpLcNySnkHZMtnDajgjAFD/gIihogA0Yyjdbq34M= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:ja;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY4P301MB1299.JPNP301.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(376014)(23010399003)(19092799006)(366016)(1800799024)(38070700021)(22082099003)(3023799007)(18002099003)(56012099006)(4143699003)(11063799006);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?NnF0ME9uVnFpMmZsYkJpZEQ0WWhENGY4NWpDdTdKMWlSQ1BaQmsxeUIrY2lO?= =?utf-8?B?ZkpkV29qZUdEejBRWm5Md1J2L0FjdHFGMzFBQ0wzKzZJSEJaYjlEZU1KRXNr?= =?utf-8?B?endFeGlZb2RTR1dnbGQ4ZW02cXEweW1jeFlMeG9QQm5uWHJoTktFUWl4UUNJ?= =?utf-8?B?blVvNXI0b1RvOWNPVHZ2bGJGNkxyV3ZsT1BjcUhrS2JEd1AvZE0wTitObEhK?= =?utf-8?B?OTFiM0R4azQralB1MU9aUnFPSVEvYXpJRUFPS0EzcFlBazVIc3pvbEprcEww?= =?utf-8?B?elFJSXVhUURwMDVac2JTUDMyMnp4VUtKZVBSd2c3STJHZnZjWnU2OC9MS3hQ?= =?utf-8?B?U0pNY3JWeUErSG5rQW9FTUhWSjBwcGVGYnVDd1dzTnhabDN6THZRb3AvVTJo?= =?utf-8?B?V2FFSG1yeFVHZ3ZBYkY5YXd6Um0yS3piWDdRZDlzZ0RoemxNbFlZdTV4cEZ3?= =?utf-8?B?VDNPNDNtUlVIU1NlYUxPUU9TejR1OExHRlQ1NGNqVGVySWxGWXNXMDNGN3Uw?= =?utf-8?B?RzM2cnArLzVrOXJ2MXR4Q2d2eDJ6Nzh6bk1QSEhHemZXaVhwYjRkczFrUWM0?= =?utf-8?B?THBrbW4xTzVhT1UyN0wvRGozVlNDZU1SK0oxZm40T3lRbllOYm8wR0dNaXp6?= =?utf-8?B?NzNtM0ZQZVZ0UHBoTWtWcnRHYkxVc3d2azZSam9TUURxYzA1cTdJM2NDbWVl?= =?utf-8?B?Q3RaL1BHdDZIMFdORUJIbWZORmNRSXV4STE5cDdFS0JBVDJiZFBIZWV4MzRO?= =?utf-8?B?TFR5NmlUMnhVOUlXaUIyU0E2L0djcktnbDFXUzE3QjRXTFVqbFhYRjAyUExB?= =?utf-8?B?V3BHRkl3MXdSTEhxZTg5SW9PdGRxeUQxMjVtMGlyWU1VZFNaZnAzUTBxUnJC?= =?utf-8?B?Ymd3MDVVVjBsYzFxZ04wbTlEL21vWThCalptOVN1NnVCOEgxcHNUUEJDTHdJ?= =?utf-8?B?NmFGdHpybTViMm42eUoxWHFLMW1tQ1lpSXNPb3FkMThhRmU2WHZ5Z0t2ZEZG?= =?utf-8?B?ZEFxN0FCYmhzaWl2VlpNYVZCUFZwaXhSK0p4eURSUkQ1S25rcWJEN1VWWTUy?= =?utf-8?B?RTBGQ1pCRzVKdUtCTkIzY2lrcEtnZzRVVzlXSG1WOEgxZ0N3dzhiNDJiV1VQ?= =?utf-8?B?NUJDM1FEcG93bC9YdkpWQ3dPRk5IbkFWSjJTdWpyd2dXblhwT0NOMnFuNS9x?= =?utf-8?B?QnRibmJLOFRyM1Vmc2daTE1WQnlzR3BEME0vZW1jNEdDaE1CYUdSVExWZFFL?= =?utf-8?B?NjJ0M1lqaStuYm85enp1MnZ6b3pUVnVYTlFvVWtqbFRKWnhDQklDaXU5SGgr?= =?utf-8?B?OUtOY05hUGROejZEWW9QMjBvREJhNGVYLzVYZEJqSUMwVHB2MDJhcGxjSzh1?= =?utf-8?B?bFVNVElVRnA3ckRNVEYxb0VvRmNGMkNOOW1GSkxZRDhMazE1MjNyeFBsYnc4?= =?utf-8?B?R3Vkc1BvUnZSeThwZUdLdU5jYU9YQ1hRYjNGQWNvNWUwMDQ2WXEwRks5Vzgv?= =?utf-8?B?N3V6NGw3Z3N3eDc3U0h5aXB1OUg3SzkyQXhUSU9yTFg3ejhvZHRvVExNMC96?= =?utf-8?B?Q0laU2VFNDFaQlh1MFpydUlxYWwza3dvSjFNSTRrU2xJbkhQUUV2SFpzcFdt?= =?utf-8?B?RlBaRTRob2o0eC96MzErZUQzTFp5ZThlUTVURzhHNmJBa3BGTjBWZVhNcDRS?= =?utf-8?B?U2tqbU9aWEhBcDV2K0k2Vnl1RXJYamJHcHdxdHQyZWRSREFpeGk1MUpLemdr?= =?utf-8?B?d0w3RXBZMUN4VzdlUFFCWFVITWZUb0d5RWlZS2VQbHdhRUpZY1BzVVdvR2JS?= =?utf-8?B?Z1ErejhuSVF5Y1RJUlZ3S1pLNVZKV09IWXFVeFh5QkV1Ni9lMU1GSUtqTUJ2?= =?utf-8?B?REpFWnNOQnh4L2o5MXZGTDhSYWtEbkNZMFo0OWs1NVc1NnhDYlBYUDI4OEdl?= =?utf-8?B?NXNaQjZXRjkvYU9hRjk0L3dKSGlFR2tscElQQmorRU5PUlF1QXV2V0JUYk5U?= =?utf-8?B?a1RDU3A2bk5ZWGVkc0NYdWpUc04xLy9VYXo1Vys1SHJkdGZSVS9JaTJHODh5?= =?utf-8?B?TzUrN29GSmMvdllGR09hZGl0Q29vSzJGb05iUkc0ZGhpWWFoOHhlc2xPYit6?= =?utf-8?B?MkkybWFkbmlNVytaT1VpandHbEZRT2k5Q0Via2VoRitvZnE5SXk5bFM2enhT?= =?utf-8?B?bXNtTlVjajA1T01EaFlBNStQRDl5NlFZYjRTaHZ5NVBhMXFwR3F4YUJYbXVn?= =?utf-8?B?Z3J0YkVuWWdqME5sMnlUdTN6dkVERGdEUXZwOHg5UDNHYlI5NWpCRzNhdERk?= =?utf-8?B?ZTEyeTFWaU5rYWhqY0ovRG45WDZFRitVWUdHeWxPVjdzdjBZd2IrUT09?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: ntt.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TY4P301MB1299.JPNP301.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: d3b33cb3-3c75-44e9-d9ed-08dedce16e86 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Jul 2026 11:09:51.3101 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a629ef32-67ba-47a6-8eb3-ec43935644fc X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: fm7Td9LobQaEYNNI69XsSIrTg6MkU2AajBXEUIOvhhFMuQ8sqlrCErm/RGHD04O1fHKIEOJOWGKYU74tDYE7hw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYCP301MB0709 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk SGkgUmljaGFyZCwNCg0KPkkndmUgdGhvdWdodCBpdCBvdmVyLCBhbmQgSSdtIGluY2xpbmVkIHRv IGxlYXZlIHRoZSBkb2NzIGFzIHRoZXkgYXJlLg0KPg0KPk15IG1haW4gY29uY2VybiBpcyBjb25z aXN0ZW5jeSB3aXRoIHRoZSBzdXJyb3VuZGluZyBwYXJhbWV0ZXJzLiAgQWxsDQo+b2YgdGhlIG90 aGVyIGVuYWJsZV8qIEdVQ3MgYXJlIGRvY3VtZW50ZWQgY29uY2VwdHVhbGx5IHJhdGhlciB0aGFu IGJ5DQo+dGhlIHNwZWNpZmljIG5vZGUgdHlwZXMgdGhleSBhZmZlY3QsIGFuZCBub25lIG9mIHRo ZW0gZW51bWVyYXRlIHRoZQ0KPm5vZGVzIHlvdSdkIHNlZSBpbiBFWFBMQUlOLiAgVW5pcXVlIGFu ZCBTZXRPcCBhcmUgcmVhbGx5IEVYUExBSU4NCj5sYWJlbHMgcmF0aGVyIHRoYW4gdXNlci1mYWNp bmcgY29uY2VwdHMsIGFuZCBJJ2QgYXJndWUgdGhlIGV4aXN0aW5nDQo+d29yZGluZyBhbHJlYWR5 IGNvdmVycyB0aGVtLCBzaW5jZSBzb3J0LWJhc2VkIFVuaXF1ZSBhbmQgc29ydGVkIFNldE9wDQo+ YXJlIGJvdGggZm9ybXMgb2Ygc29ydC1iYXNlZCBncm91cGluZy4NCj4NCj5TaW1pbGFybHksIGVu YWJsZV9oYXNoYWdnIGhhcyBjb3ZlcmVkIGhhc2gtYmFzZWQgU2V0T3AgZm9yIGEgbG9uZyB0aW1l DQo+d2l0aG91dCB1cyBkb2N1bWVudGluZyBpdCwgd2hpY2ggaXMgdGhlIHNhbWUgY29udmVudGlv biBhdCB3b3JrLiAgSSdkDQo+cmF0aGVyIG5vdCBhZGQgdGhhdCBub3cganVzdCB0byBtYXRjaCB0 aGUgbmV3IHBhcmFtZXRlci4NCg0KVGhhbmtzIGZvciB5b3VyIGNvbW1lbnRzIGFuZCB0aGUgcmVi YXNlZCBwYXRjaC4NCkkgdW5kZXJzdGFuZCBhbmQgYWdyZWUgd2l0aCB0aGUgZGVjaXNpb24gbm90 IHRvIG1vZGlmeSB0aGUgZG9jdW1lbnRhdGlvbi4NCg0KTXkgaW5pdGlhbCBtb3RpdmF0aW9uIGZv ciBwcm9wb3NpbmcgdGhlIGRvY3VtZW50YXRpb24gdXBkYXRlIHdhcyB0byBtYWtlIGl0IA0KY2xl YXJlciB3aGljaCBwbGFuIG5vZGVzIGFyZSBhZmZlY3RlZCBieSB0aGVzZSBHVUMgcGFyYW1ldGVy cy4gV2hpbGUgcmV2aWV3aW5nIA0KeW91ciBwcmV2aW91cyBwYXRjaCwgSSByZWFsaXplZCB0aGF0 IGVuYWJsZV9oYXNoYWdnIGFuZCBlbmFibGVfZ3JvdXBhZ2cgYWZmZWN0IA0Kbm90IG9ubHkgSGFz aEFnZyBhbmQgR3JvdXBBZ2cgbm9kZXMgYnV0IGFsc28gb3RoZXIgcGxhbiBub2Rlcy4NCg0KSG93 ZXZlciwgZG9jdW1lbnRpbmcgdGhhdCBsZXZlbCBvZiBkZXRhaWwgb25seSBmb3IgdGhlc2UgcGFy YW1ldGVycyB3b3VsZCBiZSANCmluY29uc2lzdGVudCB3aXRoIHRoZSBkZXNjcmlwdGlvbnMgb2Yg dGhlIG90aGVyIGVuYWJsZV8qIEdVQ3MuIFNvIEkgYWdyZWUgdGhhdCANCndlIHNob3VsZCBrZWVw IHRoZSBjdXJyZW50IGRvY3VtZW50YXRpb24gYXMgaXQgaXMuDQoNCg0KPkF0dGFjaGVkIGlzIGEg cmViYXNlZCBwYXRjaCB0byBtYWtlIGNmYm90IHdvcmsgYWdhaW4uDQoNCkkgYXBwbGllZCB0aGUg YXR0YWNoZWQgdjUgcGF0Y2ggdG8gY29tbWl0IDU3ZjkzYWYzNiwgYW5kIGNvbmZpcm1lZCB0aGF0 IGFsbCANCnJlZ3Jlc3Npb24gdGVzdHMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4NCg0KUmVnYXJk cywNClRhdHN1cm8gWWFtYWRhDQoNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBG cm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4NCj4gU2VudDogVHVlc2Rh eSwgSnVseSA3LCAyMDI2IDM6NDcgUE0NCj4gVG86IFRhdHN1cm8gWWFtYWRh77yI5bGx55Sw6YGU 5pyX77yJIDx0YXRzdXJvLnlhbWFkYUBudHQuY29tPg0KPiBDYzogVGF0c3VybyBZYW1hZGEgPHlh bWF0YXR0c3VAZ21haWwuY29tPjsgRGF2aWQgUm93bGV5DQo+IDxkZ3Jvd2xleW1sQGdtYWlsLmNv bT47IEFzaHV0b3NoIEJhcGF0DQo+IDxhc2h1dG9zaC5iYXBhdC5vc3NAZ21haWwuY29tPjsgcGdz cWwtaGFja2Vyc0BsaXN0cy5wb3N0Z3Jlc3FsLm9yZw0KPiBTdWJqZWN0OiBSZTogQWRkIGVuYWJs ZV9ncm91cGFnZyBHVUMgcGFyYW1ldGVyIHRvIGNvbnRyb2wgR3JvdXBBZ2dyZWdhdGUNCj4gdXNh Z2UNCj4gDQo+IE9uIE1vbiwgSnVuIDI5LCAyMDI2IGF0IDc6MDLigK9QTSBUYXRzdXJvIFlhbWFk YQ0KPiA8dGF0c3Vyby55YW1hZGFAbnR0LmNvbT4gd3JvdGU6DQo+ID4gU2luY2UgdGhlIGVuYWJs ZV9ncm91cGFnZyBwYXJhbWV0ZXIgYWxzbyBhZmZlY3RzIFNldE9wLCBVbmlxdWUsIGFuZA0KPiA+ IG90aGVyIG5vZGVzLCBJJ3ZlIGNyZWF0ZWQgZG9jdW1lbnRhdGlvbiBwYXRjaGVzIHRvIGNsYXJp ZnkgdGhpcy4gSSdtDQo+IGF0dGFjaGluZw0KPiA+IHRoZW0gdG8gdGhpcyBlbWFpbC4gVGhleSBh cHBseSBvbiB0b3Agb2YgeW91ciB2NCBwYXRjaC4NCj4gDQo+IEkndmUgdGhvdWdodCBpdCBvdmVy LCBhbmQgSSdtIGluY2xpbmVkIHRvIGxlYXZlIHRoZSBkb2NzIGFzIHRoZXkgYXJlLg0KPiANCj4g TXkgbWFpbiBjb25jZXJuIGlzIGNvbnNpc3RlbmN5IHdpdGggdGhlIHN1cnJvdW5kaW5nIHBhcmFt ZXRlcnMuICBBbGwNCj4gb2YgdGhlIG90aGVyIGVuYWJsZV8qIEdVQ3MgYXJlIGRvY3VtZW50ZWQg Y29uY2VwdHVhbGx5IHJhdGhlciB0aGFuIGJ5DQo+IHRoZSBzcGVjaWZpYyBub2RlIHR5cGVzIHRo ZXkgYWZmZWN0LCBhbmQgbm9uZSBvZiB0aGVtIGVudW1lcmF0ZSB0aGUNCj4gbm9kZXMgeW91J2Qg c2VlIGluIEVYUExBSU4uICBVbmlxdWUgYW5kIFNldE9wIGFyZSByZWFsbHkgRVhQTEFJTg0KPiBs YWJlbHMgcmF0aGVyIHRoYW4gdXNlci1mYWNpbmcgY29uY2VwdHMsIGFuZCBJJ2QgYXJndWUgdGhl IGV4aXN0aW5nDQo+IHdvcmRpbmcgYWxyZWFkeSBjb3ZlcnMgdGhlbSwgc2luY2Ugc29ydC1iYXNl ZCBVbmlxdWUgYW5kIHNvcnRlZCBTZXRPcA0KPiBhcmUgYm90aCBmb3JtcyBvZiBzb3J0LWJhc2Vk IGdyb3VwaW5nLg0KPiANCj4gU2ltaWxhcmx5LCBlbmFibGVfaGFzaGFnZyBoYXMgY292ZXJlZCBo YXNoLWJhc2VkIFNldE9wIGZvciBhIGxvbmcgdGltZQ0KPiB3aXRob3V0IHVzIGRvY3VtZW50aW5n IGl0LCB3aGljaCBpcyB0aGUgc2FtZSBjb252ZW50aW9uIGF0IHdvcmsuICBJJ2QNCj4gcmF0aGVy IG5vdCBhZGQgdGhhdCBub3cganVzdCB0byBtYXRjaCB0aGUgbmV3IHBhcmFtZXRlci4NCj4gDQo+ IEF0dGFjaGVkIGlzIGEgcmViYXNlZCBwYXRjaCB0byBtYWtlIGNmYm90IHdvcmsgYWdhaW4uDQo+ IA0KPiAtIFJpY2hhcmQNCg==