From unknown Sat Sep 06 00:11:14 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#78935 <78935@debbugs.gnu.org> To: bug#78935 <78935@debbugs.gnu.org> Subject: Status: 30.1.90; [PATCH] Let Imenu optionally allow duplicate menu entries Reply-To: bug#78935 <78935@debbugs.gnu.org> Date: Sat, 06 Sep 2025 07:11:14 +0000 retitle 78935 30.1.90; [PATCH] Let Imenu optionally allow duplicate menu en= tries reassign 78935 emacs submitter 78935 Drew Adams severity 78935 normal tag 78935 patch thanks From debbugs-submit-bounces@debbugs.gnu.org Mon Jun 30 18:13:09 2025 Received: (at submit) by debbugs.gnu.org; 30 Jun 2025 22:13:09 +0000 Received: from localhost ([127.0.0.1]:51038 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uWMkO-00080U-M1 for submit@debbugs.gnu.org; Mon, 30 Jun 2025 18:13:09 -0400 Received: from lists.gnu.org ([2001:470:142::17]:58558) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uWMkJ-0007yU-0A for submit@debbugs.gnu.org; Mon, 30 Jun 2025 18:13:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uWMkC-0006bg-Ob for bug-gnu-emacs@gnu.org; Mon, 30 Jun 2025 18:12:56 -0400 Received: from mx0a-00069f02.pphosted.com ([205.220.165.32]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uWMk9-000664-8Z for bug-gnu-emacs@gnu.org; Mon, 30 Jun 2025 18:12:56 -0400 Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 55UIBiuF008085 for ; Mon, 30 Jun 2025 22:12:50 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h= content-type:date:from:message-id:mime-version:subject:to; s= corp-2025-04-25; bh=pBljnS2wZdccV/DjqTopRgKGyJxkH0cy5b8AFspNYM0=; b= LNFBxK/pAAqLwxLT0FQth+iUGm3L4S0fDZEtiLyIR57jnLBebZIM2E5avGfgShRS pOmzLL9VCju4PO87JkGxT0OH+nt0Zxk9xEDJoHOZk5Fak4HBDt+1nD7i/6r75vP7 XtkbGyTFCeJHvRZZxg9GPPeHXrSFh+VUZx+h/9VEYdbVDQFT4g/s6XZC9+83GwA0 WpcTDphh9DFGY0P/YdLBuHxpPWjyHQpugP0TKQ0vSQ0Tz9+okQxpIdhIGXpQ1QkZ nA5BPbC8ANwIqwbXYpPPvetLfTn92LZwB3XDDjEY5lKjkwIA3Wz5RGBK652XEAYR TLN2Ja/H/vtwNTatYU+GJw== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 47j8xx3eja-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Mon, 30 Jun 2025 22:12:50 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 55UL41ej011523 for ; Mon, 30 Jun 2025 22:12:49 GMT Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11on2055.outbound.protection.outlook.com [40.107.223.55]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 47j6u8pt1c-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Mon, 30 Jun 2025 22:12:49 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=TaDNyY5kn5Of+oglcJbcdG+UzWTa2Vmj8wKlc5eA54+9jSnrooX0wkP+GdWADKeXL5ZxrIu1sqYv3wbOB93XERO6S9hdeIwMGy404f5pdan7vaoWV+GHj3mN2+z1kC7OWJ0qNsHV+MY2O4ckgoU/4uvSlFoYBFqvEibumkB2KQAXWR/HERm/TWpmgloo8YMA2fsYzQGpNQ+0lhxIsr9EgsvmVLFptUDdIU49k4gvk9Ahn6Tfnz1/ZCQL/XfVyNLYYUl+ioxJHPk/utt7hksdrwtwG05F9vhl46He3RIKNYgr4Fy6HAt7f19ZYPfxQhVCR6eBqIQxUKA4GBpN9Hkf4A== 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=pBljnS2wZdccV/DjqTopRgKGyJxkH0cy5b8AFspNYM0=; b=PcOvzvC1rdz0/P5V+4zgcpYPZw0U7IIrDXzOeOQprT1ukEBsvBVYNssmW64Ub25b6ic4RTLiWDJR6atv8ek0Ektfd81duPq8x1mzqH9xO9MIIVrqy/sEulc/AhMsByu+tbc+lQ5dVcx4EJUPsp2YRtrSk1x0DQp4dvZwIeT5u5W75vOy+xuOMfAs74a2Up4RtCElYCNQUtFFpKWid5RlSUqhUMx5PgbvxGNlWPQulhv7RxfP8TcJC2FVoQGWZRjG2cKxnxs+FSjlSjRVr9NPSCPGBGS2zsa/O/x3el03luG28Ao9BnZtFZsJlPBQ/LlTV0XXAjygZvhZoeZRtft9kw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pBljnS2wZdccV/DjqTopRgKGyJxkH0cy5b8AFspNYM0=; b=Mzv2oMA0KM71ZBkA5EPhUMDlNzchPvrwl1zC6AAdwYa/dzYXzCENP6khWTMwtXoouVhhDZ+isZ+yEQGF2CWaOoIG9fiRq276fudvE6gi6p8lOXLlK11Uzzpep6WP7biWichIfqEouxS4QNP6WS54u+SFlyCcD6CBARpEV1uQFWk= Received: from DS7PR10MB5232.namprd10.prod.outlook.com (2603:10b6:5:3aa::24) by PH7PR10MB6204.namprd10.prod.outlook.com (2603:10b6:510:1f0::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8880.26; Mon, 30 Jun 2025 22:12:44 +0000 Received: from DS7PR10MB5232.namprd10.prod.outlook.com ([fe80::8303:658f:14f8:2324]) by DS7PR10MB5232.namprd10.prod.outlook.com ([fe80::8303:658f:14f8:2324%7]) with mapi id 15.20.8880.024; Mon, 30 Jun 2025 22:12:44 +0000 From: Drew Adams To: "bug-gnu-emacs@gnu.org" Subject: 30.1.90; [PATCH] Let Imenu optionally allow duplicate menu entries Thread-Topic: 30.1.90; [PATCH] Let Imenu optionally allow duplicate menu entries Thread-Index: AdvqC+3YmiMaBKVfSKq1TWa3P0FHVw== Date: Mon, 30 Jun 2025 22:12:44 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DS7PR10MB5232:EE_|PH7PR10MB6204:EE_ x-ms-office365-filtering-correlation-id: 0761abc3-c8a6-4702-5dfa-08ddb8233d0b x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|376014|1800799024|38070700018|4053099003; x-microsoft-antispam-message-info: =?us-ascii?Q?aERNm7YKY79wP3/GUZHvQ7bGzhP0NCpHfWd3Y6DbACT47cQzXMycU4nByHPf?= =?us-ascii?Q?jlumR1K0DuI6KO33/wBTdkRC/164fFZPSuCAgt3gYfSfXRMCkjMw5hm9Wzc5?= =?us-ascii?Q?ZMehbgLWz1dg5zraC/HyiB/gCNXhPctfuwwOGHNiQEpcD/zEaoZG34cy4cUm?= =?us-ascii?Q?yRzVE/c5H9/RN7hcohr+phXS/mS6T/hIbqiv2+8uIl0t08NezCmANuLC/ehg?= =?us-ascii?Q?+3jGb4fDzy/68/P5k++oRZA8XBmEf/8LZkT2aOE1/y/bW5mKsl3zyL5SjW3K?= =?us-ascii?Q?Mv9yGUTdO9TdtBjYcTyBnrAnMuov6Wn9x0RaLTn5HVRpE1jekQsU+7Jy18th?= =?us-ascii?Q?UIKyKxKqabfgSZCMgF3mY0Mr0c5Zs7FHs6+ikBE5bjTDH+2deCS2W8nr6C9z?= =?us-ascii?Q?LOUQ0trbiJMttGx/RPA9gmW2RpLyFeoctAwkxLQDVM/nAxi2s20HwLoldOVK?= =?us-ascii?Q?xxPBUQuhuSLWw0VbG7lAHfHz/YuJpyH5PUKng8wpMTmE6qbA1goitYgH7uOn?= =?us-ascii?Q?p9DkGBi7ogJwoPpe3J5Y+rFVn6bdJ/EkvBhM8NtQvnA+ANStLdLTNnWw8D16?= =?us-ascii?Q?ERsij4N9cv+JkXeQBuhVpQbYu+CZtzZEjq98HHShVPIa5Chj+pXgB8gp6ylf?= =?us-ascii?Q?ewZBKS8EUtvFYhb0no9sgQW1Y/iteBc4FYGxmzZTIjgczK3BSRLaznhZvWY3?= =?us-ascii?Q?x4UBK0Wee778w39KfFgRM1CO0D40Bj32MOJwnbwbvKorad10PzsK86aXoBx5?= =?us-ascii?Q?AgaZeR9EyZUumjcgXMJIibMBWNN4w/Pco2qVeVs6sJ3mQyG2cIDo1iFBttW1?= =?us-ascii?Q?lemq2/ETW7QXLbUMHlpL1qyI9erNww2UwAM9xmm+GCuigYeQjd2Egn3jLx1F?= =?us-ascii?Q?dWOFcJUraGlxQlAgMXof/c6pNdaJh2vpIEIHSE18A/kTVg1CxXX0/Lh84we+?= =?us-ascii?Q?Rz7aMvDFnwKF3o7y/gdqHrADfm+yPmR4MD/HIq8AxLu5+pgUJbq6HQ2WXnde?= =?us-ascii?Q?LR20nJlXQ9FzYK9g1/2uAIz2jyzaJfEd0JhhvIyQwldug4ssCKpJDqTvZZWV?= =?us-ascii?Q?37Yvc/3nJiV7OeZj6sQRcbPUydtG0vApqzkcBL3MHhaH5N7dLz2U7bUQoa0i?= =?us-ascii?Q?o+tbRtao2JrRYNVP62L6Wm5WISfSs122C0eLA3XxVIaQvVw4OQZoSnrJJtf1?= =?us-ascii?Q?9Egg8HpbtsO3U/hwkmFQrvczyd41dRV9TJvYGn8OLcZgIrpQVp1RVAURh9+w?= =?us-ascii?Q?9hDgzejEKNUhtlLGSs2BLvOMcvP61l+GDzi0LX7/7TyrjZr764KV6WBVseXK?= =?us-ascii?Q?x9qTptVdTIggxVUFDJkGDnpop7SuNpFnRvr6YxNlQgY6ezIn2d3f8I01BQsz?= =?us-ascii?Q?NfhgN3uLQ876FALaA2OoNLr3/n48qSl7ZrvJpsOipHpUPeb1WKMwzNm8jTn6?= =?us-ascii?Q?t4Q2LgVM226I1xy9BMwGs5XwtWBBo8uiQ9bWbusb8U2mRIkOa7joWqXRZIkb?= =?us-ascii?Q?TfUOKbqi2APDJm0=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DS7PR10MB5232.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(1800799024)(38070700018)(4053099003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?u/bwStUqkpvoUytW61Qje+zLcimuvKGJ6GOQnyiHdffLfIqaEx5/ysqZh0Pd?= =?us-ascii?Q?M3z2ntf69zbgbwHIsc+wXqK8TG7nq0x3Psp0BbnzrUi4XXKoXHVmOs2jA8iK?= =?us-ascii?Q?GEBKHq5guNyEMZ7RfOzIGxfuaIn8BPaDhn7KC2Oogg0OVEinoIaxlUB3cM3o?= =?us-ascii?Q?/EWFMUeOYWVLqbm3UH4NV8rPWzg4xmncXLtX13SjEDuFwt+ojioFcvxeEQDb?= =?us-ascii?Q?u2li73uwKXl3KZ8iais7ctIwjU791FzHruqW+8LtBrt5l3nhj2i6tmPPMZ42?= =?us-ascii?Q?I8htWhzUIu1sgeuiiwyLvDJF9/xiFxDW2oWP108H9lKQ1Eqrjru+rE9qkGTd?= =?us-ascii?Q?Zgat9eLJJ1gCIE3PUzemW0qEP6tWlIpaMwTQAkj27FGC1oCwvBvBGZY4FmtZ?= =?us-ascii?Q?c/Iwvm3B94r2TFXVs7wm2KkE/R9vKqD+9FyNj5VoAQx4c5azTg/nxxHmz7co?= =?us-ascii?Q?J3q2V4MB7VIxz5fJBq2LpCAfkTHAlAaPsbccteMpVNwLDY2xlOwSD/HyLcNf?= =?us-ascii?Q?kqlKH3Ai+74Cdu+gnR/+kEK3RbXcQH+/A2ZxNf83ksIwYTdRajnBfI6FrbAm?= =?us-ascii?Q?R4YL7TbGeVw/usbx84OkHxQp1SYuJOeDJrc1bbTok2kt3bEkv+MYpBcEJZuy?= =?us-ascii?Q?Cn/hSOLx+A/cHh7ShJ+7ggTAZPLYMz7OCLvxgoBvyYI+IO+Tt7dNjtkScmCS?= =?us-ascii?Q?bwGJQrTILA4SDJm3E+q6e8qowvDRxFYTXoc55DtEZiMp7RSWMCmurU/JwEn1?= =?us-ascii?Q?eDc4gpdsZBCC9zdnzRI7maFPpOu8gglfCtQvge1tAIl2CWmtz6b90cJFLWnA?= =?us-ascii?Q?4DsZsfFHmIqgnDdHBeoRN91E/vAOJrfjWBV5U0tjZVOQjihmYKUw7q/5Y496?= =?us-ascii?Q?dtf/l8bUXXCEHqC8WIC8atoGgMV7Vu/I2Ufk3vkCZkQOdBVFdZRmVxIFTewi?= =?us-ascii?Q?ZIk8PjQ7IMUWQZ3of00/MITj9WW1WhBo7tyuWc1GRYnnZEsgOkysaKWhzxRx?= =?us-ascii?Q?XAw3q+/0mp4sRUkrStXZpL6sPoNTtB3fPNdk7dF1FOqEncWOd7+N+lVoPlWq?= =?us-ascii?Q?0HbLr6iDUQboWxgZxa1c5svFRRFk78EEfHmzV/z7j9O8xw7ZcSkPNBvZnWFn?= =?us-ascii?Q?H+TuPd3x65Z4xm8vJax3xBCdsChf6IrH3l+SasvFNPhqLRV089vIQfPAwRL0?= =?us-ascii?Q?WVtI5przJ+RVj3vSZZLm1DKZ/7ZDHZneoGr4bWcXJ8le5q3/jTh0Azt8gQHr?= =?us-ascii?Q?6+oKfdF3vLyK7AbBR/OWKrj7UDc2EtnqrMzBRMOHL82YyIeupzXiEc5yjABZ?= =?us-ascii?Q?FUIMG+BAOTQAT+oB/LVWeb2oCUGTkiJax+fnYCWv/nTh4kUqMlxtsMtqWNsJ?= =?us-ascii?Q?GjfHDqrVX+RUEnIqRLUjwFulIDDzlhioAL5FsxbfrjR0gCdHVhNAAM1HpJee?= =?us-ascii?Q?mtFNyzIXeegsZ9gMLY3TUb8QfypJxAyFxWFg5uF4Ak6HCdx/U5/sCXnEKN3m?= =?us-ascii?Q?+fWr+FLHMn0ZA0gVzRPw9xDbsG9lrg9U67qqVbw9Aa9XnDo9zXu6AEuEiul+?= =?us-ascii?Q?KpRXIn4ZbMfYzEbK8WMF2q2jDaKriZlpIAgPKT4w?= Content-Type: multipart/mixed; boundary="_003_DS7PR10MB5232448EFE09567BFF3E0ECDF346ADS7PR10MB5232namp_" MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: rhWRIcQBQliJ+tb0H8uh26aj8ptkvlvxD3aeZpj2o/NCvycqCUxwDioxgrFKvGkj5vCVT3pJOrjeLkucQFSPnf8KToPVpUpS9juxMytgdi1ggBPWHbGS6KIn/k7Uvq4NdLzvgihVjvKHvP+ia8TMgVYUcRNd5x81meqvWM7aL4wpz8lVlr0LVr+gZ1Yu1rQhz6XQW7C2pSidcX3Bw0tzk2phoidhpEjCVyR22aSv+lM6+SBjaqnL9EukKpIAhVIZIKPUCmiukhFVU3ZCgmhoAV1h4RIAivgH7wcUNvLbbZ7Cx3vbsjLL8AqH9ZpagHssIbf8hh828xkyv5OKSWZdCIYhE8R+bbXQiVIy/ugXLyaKACJ8mYq2B7yXHnctYG6n1FRk1WvlFrdWaZxbB4jQH3NErER/OxjZK44ZCpgrExLMIh28z2ejIgP/xiZHwgkodDJqnCOMjex6dQ0DdFblXeFaFAwIVa+cBCFj/QoL3KaII1Cckc7/RUo0b4oSBJpfSE5SoPNmhfrvzcvQ+lZhg7d/kf+QmjktZVGnKt5e0cV3FEzEcvMmpHpqAcUzsY3cXo2L7U9qdlja3Z9+IewlnGMSUrB/n8h4Ej+PaXeysUA= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DS7PR10MB5232.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0761abc3-c8a6-4702-5dfa-08ddb8233d0b X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Jun 2025 22:12:44.3412 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: kS2BcJx4Jr4tz90sElDEo9TjKOvOFccwKO/xlzU5UKyugcS0m/syrS02lqMmo/gr3W0AsraXVYRfEOXTKN4Ipw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB6204 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-06-30_05,2025-06-27_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 phishscore=0 suspectscore=0 mlxscore=0 bulkscore=0 adultscore=0 spamscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2505160000 definitions=main-2506300182 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNjMwMDE4MyBTYWx0ZWRfX9Sj6LrUP3tXi DaAw3Vdi6+lCtuXfu72AxdZvPgDJ+Kgaoyri0tDPjD/naVyBOtWmLADR8abtr7i+qlAplDf23PD g53NSXvCV3zC1r8uJjYxISXQ72ORT/1gGdkJKL9k8kUq+5vTG30HsMFC6ZIUJmMVn7pXHeUGgOE V1iddaVXMiqRes+Uc2ofxwSN0+tcsKTcM4f0OUYimsLXBol8UYq4YGS2RHzJRnB/nfKnBr2iyrk esppoj6sLY6apGmCDAcy3+500icOy9nUNm2bI7Ra/O/cmmZq723jVgs9oD0So7wM5fSpwluoQS6 92hBVVlOZQEHGgu3EoKxxMzNHESdzrkVZfnOumL2XITI6dZOFnSCd45jCpxIVwHZyRJa9DGG4Xw 7ga24ou2Eb1Vzz6n8wAQzD2bUIbBratuUJA+nIkibEgl7WJwXabCrvMVqdf27P5KyAsLrFeB X-Proofpoint-ORIG-GUID: 5wo8-yPTPKrcafCyM61rxIe8TtpEvQtz X-Proofpoint-GUID: 5wo8-yPTPKrcafCyM61rxIe8TtpEvQtz X-Authority-Analysis: v=2.4 cv=QfRmvtbv c=1 sm=1 tr=0 ts=68630be2 b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=6IFa9wvqVegA:10 a=GoEa3M9JfhUA:10 a=1waRoEh7RVzPBNcgOqcA:9 a=CjuIK1q_8ugA:10 a=yeNXzSrUjivkXgduZ40A:9 a=B2y7HmGcmWMA:10 a=K4oAxAAr2beBoLv5q0EA:9 a=1OfwrDeanrQA:10 Received-SPF: pass client-ip=205.220.165.32; envelope-from=drew.adams@oracle.com; helo=mx0a-00069f02.pphosted.com X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.237, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) --_003_DS7PR10MB5232448EFE09567BFF3E0ECDF346ADS7PR10MB5232namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Emacs 29 removed useful behavior from Imenu, producing backward-incompatible behavior by no longer allowing multiple menu entries with the same name. Only the first name among duplicates is used in the menu. This means that if you're working with a buffer that, for whatever reason, has multiple definitions of a function, variable etc. - or any duplication of something else that can be indexed in the menu, you lose all ability to use the menu to navigate to those entries other than the first one for a given name. The attached patch fixes this. It provides a Boolean user option, `imenu-allow-duplicate-menu-items-flag' to choose the longstanding pre-29 behavior or the behavior imposed since Emacs 29. The updated file is also attached, as `imenu-patched.el'. The only change in the code is to function `imenu--create-keymap', causing it to respect the new option. In `imenu--create-keymap' I also replaced the unnecessarily roundabout (seq-filter #'identity alist) with the more transparent and simpler (remq nil alist). This change isn't necessary, but it should be familiar enough to be accepted (and preferred). I set the default value of the new option to `t', to allow dups by default. This means a default behavior change from Emacs 29. If that's unacceptable then change the default option value to `nil'. And if you don't like the option name (e.g., if you disagree with RMS's preference that Boolean options have suffix `-flag') then change the name to whatever you want. Note that the behavior introduced in Emacs 29 ensures that the key bindings in the generated keymap (e.g. `imenu--menubar-keymap') have a symbol as their car. The longstanding pre-29 behavior, which allows menu entries with the same name, uses a string instead of a symbol, which works fine but is undocumented behavior. The doc says that a symbol or a character is used in that place; it doesn't mention that a string can also be used. If someone wants to use a different implementation to achieve the same result, fine. The solution proposed here is simple and backward-compatibled. It can always be replaced later by some other implementation that solves the same problem. (E.g., you could use multiple symbols whose names are _almost_ the same, perhaps by suffixing the names with <2>, <3>....) I suggest you accept this patch now and worry later about whether you want to try a different solution. The solution proposed here has worked for Imenu for 40-some years. Finally, note that the allowance of duplicates applies only to the use of an Imenu _menu_ (in the menubar or elsewhere), not also to the use of command `imenu', which uses `completing-read' to read a menu item. This is the pre-29 behavior. To have `completing-read' allow duplicate names requires jumping through some hoops. It's possible, but it isn't part of this patch. This patch is just to provide both the Emacs 29-30.1 behavior and the pre-29 behavior. In GNU Emacs 30.1.90 (build 2, x86_64-w64-mingw32) of 2025-05-20 built on AVALON Windowing system distributor 'Microsoft Corp.', version 10.0.26100 System Description: Microsoft Windows 10 Pro (v10.0.2009.26100.4061) Configured using: 'configure --with-modules --without-dbus --with-native-compilation=3Daot --without-compress-install --with-tree-sitter CFLAGS=3D-O2 prefix=3D/g/rel/install/emacs-30.1.90_1 PKG_CONFIG_PATH=3D/mingw64/lib/pkgconfig:/mingw64/share/pkgconfig' Configured features: ACL GIF GMP GNUTLS HARFBUZZ JPEG LCMS2 LIBXML2 MODULES NATIVE_COMP NOTIFY W32NOTIFY PDUMPER PNG RSVG SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XPM ZLIB (NATIVE_COMP present but libgccjit not available) Important settings: value of $LANG: ENU locale-coding-system: cp1252 --_003_DS7PR10MB5232448EFE09567BFF3E0ECDF346ADS7PR10MB5232namp_ Content-Type: application/octet-stream; name="imenu-patch-2025-06-30a.patch" Content-Description: imenu-patch-2025-06-30a.patch Content-Disposition: attachment; filename="imenu-patch-2025-06-30a.patch"; size=1478; creation-date="Mon, 30 Jun 2025 21:35:07 GMT"; modification-date="Mon, 30 Jun 2025 22:12:43 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtdSAzMC4xL2xpc3AvaW1lbnUuZWwgaW1lbnUtcGF0Y2hlZC5lbAotLS0gMzAuMS9saXNw L2ltZW51LmVsCTIwMjUtMDMtMDUgMTQ6NDE6MjUuMTkyODkxNDAwIC0wODAwCisrKyBpbWVudS1w YXRjaGVkLmVsCTIwMjUtMDYtMzAgMTQ6MDc6MTcuMTMzMjA0MTAwIC0wNzAwCkBAIC0xOTMsNiAr MTkzLDEzIEBACiAgIDp0eXBlICdudW1iZXIKICAgOnZlcnNpb24gIjI4LjEiKQogCisoZGVmY3Vz dG9tIGltZW51LWFsbG93LWR1cGxpY2F0ZS1tZW51LWl0ZW1zLWZsYWcgdAorICAiTm9uLW5pbCBt ZWFucyB0aGF0IEltZW51IGNhbiBpbmNsdWRlIGR1cGxpY2F0ZSBtZW51IGl0ZW1zLgorRm9yIGV4 YW1wbGUsIGlmIHRoZSBidWZmZXIgY29udGFpbnMgbXVsdGlwbGUgZGVmaW5pdGlvbnMgb2YgZnVu Y3Rpb24KK2Bmb28nIHRoZW4gYSBtZW51IGl0ZW0gaXMgaW5jbHVkZWQgZm9yIGVhY2ggb2YgdGhl bS4KK090aGVyd2lzZSwgb25seSB0aGUgZmlyc3Qgc3VjaCBkZWZpbml0aW9uIGlzIGFjY2Vzc2li bGUgZnJvbSB0aGUgbWVudS4iCisgIDp0eXBlICdib29sZWFuIDpncm91cCAnaW1lbnUpCisKIDs7 OyMjI2F1dG9sb2FkCiAoZGVmdmFyLWxvY2FsIGltZW51LWdlbmVyaWMtZXhwcmVzc2lvbiBuaWwK ICAgIkxpc3Qgb2YgZGVmaW5pdGlvbiBtYXRjaGVycyBmb3IgY3JlYXRpbmcgYW4gSW1lbnUgaW5k ZXguCkBAIC01MDYsMTQgKzUxMywxNyBAQAogICBgKGtleW1hcCAsdGl0bGUKICAgICAgICAgICAg LEAobWFwY2FyCiAgICAgICAgICAgICAgIChsYW1iZGEgKGl0ZW0pCi0gICAgICAgICAgICAgICAg YCgsKGludGVybiAoY2FyIGl0ZW0pKSAsKGNhciBpdGVtKQorICAgICAgICAgICAgICAgIGAoLChp ZiBpbWVudS1hbGxvdy1kdXBsaWNhdGUtbWVudS1pdGVtcy1mbGFnCisgICAgICAgICAgICAgICAg ICAgICAgIChjYXIgaXRlbSkKKyAgICAgICAgICAgICAgICAgICAgIChpbnRlcm4gKGNhciBpdGVt KSkpCisgICAgICAgICAgICAgICAgICAsKGNhciBpdGVtKQogICAgICAgICAgICAgICAgICAgLEAo Y29uZAogICAgICAgICAgICAgICAgICAgICAgKChpbWVudS0tc3ViYWxpc3QtcCBpdGVtKQogICAg ICAgICAgICAgICAgICAgICAgIChpbWVudS0tY3JlYXRlLWtleW1hcCAoY2FyIGl0ZW0pIChjZHIg aXRlbSkgY21kKSkKICAgICAgICAgICAgICAgICAgICAgICh0CiAgICAgICAgICAgICAgICAgICAg ICAgKGxhbWJkYSAoKSAoaW50ZXJhY3RpdmUpCiAgICAgICAgICAgICAgICAgICAgICAgICAoaWYg Y21kIChmdW5jYWxsIGNtZCBpdGVtKSBpdGVtKSkpKSkpCi0gICAgICAgICAgICAgIChzZXEtZmls dGVyICMnaWRlbnRpdHkgYWxpc3QpKSkpCisgICAgICAgICAgICAgIChyZW1xIG5pbCBhbGlzdCkp KSkKIAogKGRlZnVuIGltZW51LS1pbi1hbGlzdCAoc3RyIGFsaXN0KQogICAiQ2hlY2sgd2hldGhl ciB0aGUgc3RyaW5nIFNUUiBpcyBjb250YWluZWQgaW4gbXVsdGktbGV2ZWwgQUxJU1QuIgo= --_003_DS7PR10MB5232448EFE09567BFF3E0ECDF346ADS7PR10MB5232namp_ Content-Type: application/octet-stream; name="imenu-patched.el" Content-Description: imenu-patched.el Content-Disposition: attachment; filename="imenu-patched.el"; size=38682; creation-date="Mon, 30 Jun 2025 21:04:07 GMT"; modification-date="Mon, 30 Jun 2025 22:12:44 GMT" Content-Transfer-Encoding: base64 Ozs7IGltZW51LmVsIC0tLSBmcmFtZXdvcmsgZm9yIG1vZGUtc3BlY2lmaWMgYnVmZmVyIGluZGV4 ZXMgIC0qLSBsZXhpY2FsLWJpbmRpbmc6IHQgLSotCgo7OyBDb3B5cmlnaHQgKEMpIDE5OTQtMTk5 OCwgMjAwMS0yMDI1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgoKOzsgQXV0aG9yOiBB a2UgU3RlbmhvZmYgPGV0eGFrc2ZAYW9tLmVyaWNzc29uLnNlPgo7OyAgICAgICAgIExhcnMgTGlu ZGJlcmcgPGxsaUBzeXByby5jYXAuc2U+Cjs7IE1haW50YWluZXI6IGVtYWNzLWRldmVsQGdudS5v cmcKOzsgQ3JlYXRlZDogOCBGZWIgMTk5NAo7OyBLZXl3b3JkczogdG9vbHMgY29udmVuaWVuY2UK Cjs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBFbWFjcy4KCjs7IEdOVSBFbWFjcyBpcyBmcmVl IHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cjs7IGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5Cjs7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCjs7IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Cgo7OyBHTlUgRW1hY3MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKOzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQo7OyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgoKOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKOzsgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJ ZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKOzs7IENvbW1lbnRh cnk6Cgo7OyBQdXJwb3NlIG9mIHRoaXMgcGFja2FnZToKOzsgICBUbyBwcmVzZW50IGEgZnJhbWV3 b3JrIGZvciBtb2RlLXNwZWNpZmljIGJ1ZmZlciBpbmRleGVzLgo7OyAgIEEgYnVmZmVyIGluZGV4 IGlzIGFuIGFsaXN0IG9mIG5hbWVzIGFuZCBidWZmZXIgcG9zaXRpb25zLgo7OyAgIEZvciBpbnN0 YW5jZSBhbGwgZnVuY3Rpb25zIGluIGEgQy1maWxlIGFuZCB0aGVpciBwb3NpdGlvbnMuCjs7Cjs7 ICAgSXQgaXMgZG9jdW1lbnRlZCBpbiB0aGUgRW1hY3MgTGlzcCBtYW51YWwuCjs7Cjs7IEhvdyBp dCB3b3JrczoKCjs7ICAgQSBtb2RlLXNwZWNpZmljIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBnZW5l cmF0ZSB0aGUgaW5kZXguICBJdCBpcwo7OyAgIHRoZW4gcHJlc2VudGVkIHRvIHRoZSB1c2VyLCB3 aG8gY2FuIGNob29zZSBmcm9tIHRoaXMgaW5kZXguCgo7OzsgSGlzdG9yeToKOzsgIFRoYW5rcyBn byB0bwo7OyAgW3NpbW9uXSAtIFNpbW9uIExlaW5lbiBzaW1vbkBsaWEuZGkuZXBmbC5jaAo7OyAg W2RlYW5dIC0gRGVhbiBBbmRyZXdzIGFkYUB1bmlzb24uY29tCjs7ICBbYWxvbl0gLSBBbG9uIEFs YmVydCBhbEBtZXJjdXJ5LmNvLmlsCjs7ICBbZ3JlZ10gLSBHcmVnIFRob21wc29uIGdyZWd0QHBv cnNjaGUudmlzaXguQ09NCjs7ICBbd29sZmdhbmddIC0gV29sZmdhbmcgQmFuZ2VydGggemNnNTEx MjJAcnBvb2wxLnJ1cy51bmktc3R1dHRnYXJ0LmRlCjs7ICBba2FpXSAtIEthaSBHcm9zc2pvaGFu biBncm9zc2pvaEBsaW51cy5pbmZvcm1hdGlrLnVuaS1kb3J0bXVuZC5kZQo7OyAgW2RhdmlkXSAt IERhdmlkIE0uIFNtaXRoIGRzbWl0aEBzdGF0cy5hZGVsYWlkZS5lZHUuYXUKOzsgIFtjaHJpc3Rp YW5dIC0gQ2hyaXN0aWFuIEVnbGkgQ2hyaXN0aWFuLkVnbGlAaGNzZC5oYWMuY29tCjs7ICBba2Fy bF0gLSBLYXJsIEZvZ2VsIGtmb2dlbEBmbG9zcy5saWZlLnVpdWMuZWR1Cgo7OzsgQ29kZToKCihy ZXF1aXJlICdjbC1saWIpCgo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Cjs7Owo7OzsgQ3VzdG9taXphYmxlIHZhcmlhYmxlcwo7 OzsKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7OwoKKGRlZmdyb3VwIGltZW51IG5pbAogICJNb2RlLXNwZWNpZmljIGJ1ZmZlciBp bmRleGVzLiIKICA6Z3JvdXAgJ21hdGNoaW5nCiAgOmdyb3VwICdmcmFtZXMKICA6Z3JvdXAgJ2Nv bnZlbmllbmNlCiAgOmxpbmsgJyhjdXN0b20tbWFudWFsICIoZWxpc3ApSW1lbnUiKSkKCihkZWZj dXN0b20gaW1lbnUtdXNlLW1hcmtlcnMgdAogICJOb24tbmlsIG1lYW5zIHVzZSBtYXJrZXJzIGlu c3RlYWQgb2YgaW50ZWdlcnMgZm9yIEltZW51IGJ1ZmZlciBwb3NpdGlvbnMuCgpTZXR0aW5nIHRo aXMgdG8gbmlsIG1ha2VzIEltZW51IHdvcmsgYSBsaXR0bGUgZmFzdGVyIGJ1dCBlZGl0aW5nIHRo ZQpidWZmZXIgd2lsbCBtYWtlIHRoZSBnZW5lcmF0ZWQgaW5kZXggcG9zaXRpb25zIHdyb25nLgoK VGhpcyBtaWdodCBub3QgeWV0IGJlIGhvbm9yZWQgYnkgYWxsIGluZGV4LWJ1aWxkaW5nIGZ1bmN0 aW9ucy4iCiAgOnR5cGUgJ2Jvb2xlYW4pCgooZGVmY3VzdG9tIGltZW51LW1heC1pdGVtLWxlbmd0 aCA2MAogICJJZiBhIG51bWJlciwgdHJ1bmNhdGUgSW1lbnUgZW50cmllcyB0byB0aGF0IGxlbmd0 aC4iCiAgOnR5cGUgJyhjaG9pY2UgaW50ZWdlcgogICAgICAgICAgICAgICAgIChjb25zdCA6dGFn ICJVbmxpbWl0ZWQiKSkpCgooZGVmY3VzdG9tIGltZW51LWF1dG8tcmVzY2FuIG5pbAogICJOb24t bmlsIG1lYW5zIEltZW51IHNob3VsZCBhbHdheXMgcmVzY2FuIHRoZSBidWZmZXJzLiIKICA6dHlw ZSAnYm9vbGVhbikKCihkZWZjdXN0b20gaW1lbnUtYXV0by1yZXNjYW4tbWF4b3V0IDYwMDAwMAog ICJJbWVudSBhdXRvLXJlc2NhbiBpcyBkaXNhYmxlZCBpbiBidWZmZXJzIGxhcmdlciB0aGFuIHRo aXMgc2l6ZSAoaW4gYnl0ZXMpLgpBbHNvIHNlZSBgaW1lbnUtbWF4LWluZGV4LXRpbWUnLiIKICA6 dHlwZSAnbmF0bnVtCiAgOnZlcnNpb24gIjI2LjIiKQoKKGRlZmN1c3RvbSBpbWVudS11c2UtcG9w dXAtbWVudSAnb24tbW91c2UKICAiVXNlIGEgcG9wdXAgbWVudSByYXRoZXIgdGhhbiBhIG1pbmli dWZmZXIgcHJvbXB0LgpJZiBuaWwsIGFsd2F5cyB1c2UgYSBtaW5pYnVmZmVyIHByb21wdC4KSWYg dCwgYWx3YXlzIHVzZSBhIHBvcHVwIG1lbnUsCklmIGBvbi1tb3VzZScgdXNlIGEgcG9wdXAgbWVu dSB3aGVuIGBpbWVudScgd2FzIGludm9rZWQgd2l0aCB0aGUgbW91c2UuIgogIDp0eXBlICcoY2hv aWNlIChjb25zdCA6dGFnICJPbiBNb3VzZSIgb24tbW91c2UpCgkJIChjb25zdCA6dGFnICJOZXZl ciIgbmlsKQogICAgICAgICAgICAgICAgIChvdGhlciA6dGFnICJBbHdheXMiIHQpKSkKCihkZWZj dXN0b20gaW1lbnUtZWFnZXItY29tcGxldGlvbi1idWZmZXIgdAogICJJZiBub24tbmlsLCBlYWdl cmx5IHBvcCB1cCB0aGUgY29tcGxldGlvbiBidWZmZXIuIgogIDp0eXBlICdib29sZWFuCiAgOnZl cnNpb24gIjIyLjEiKQoKKGRlZmN1c3RvbSBpbWVudS1hZnRlci1qdW1wLWhvb2sgbmlsCiAgIkhv b2tzIGNhbGxlZCBhZnRlciBqdW1waW5nIHRvIGEgcGxhY2UgaW4gdGhlIGJ1ZmZlci4KClVzZWZ1 bCB0aGluZ3MgdG8gdXNlIGhlcmUgaW5jbHVkZSBgcmVwb3NpdGlvbi13aW5kb3cnLCBgcmVjZW50 ZXInLCBhbmQKXChsYW1iZGEgKCkgKHJlY2VudGVyIDApKSB0byBzaG93IGF0IHRvcCBvZiBzY3Jl ZW4uIgogIDp0eXBlICdob29rKQoKOzs7IyMjYXV0b2xvYWQKKGRlZmN1c3RvbSBpbWVudS1zb3J0 LWZ1bmN0aW9uIG5pbAogICJUaGUgZnVuY3Rpb24gdG8gdXNlIGZvciBzb3J0aW5nIHRoZSBpbmRl eCBtb3VzZS1tZW51LgoKQWZmZWN0cyBvbmx5IHRoZSBtb3VzZSBpbmRleCBtZW51LiAgSWYgeW91 IHdhbnQgdG8gY2hhbmdlCnRoZSBzb3J0aW5nIG9yZGVyIG9mIGNvbXBsZXRpb25zLCB5b3UgY2Fu IGN1c3RvbWl6ZQp0aGUgb3B0aW9uIGBjb21wbGV0aW9uLWNhdGVnb3J5LW92ZXJyaWRlcycgYW5k IHNldApgZGlzcGxheS1zb3J0LWZ1bmN0aW9uJyBmb3IgdGhlIGNhdGVnb3J5IGBpbWVudScuCgpT ZXQgdGhpcyB0byBuaWwgaWYgeW91IGRvbid0IHdhbnQgYW55IHNvcnRpbmcgKGZhc3RlcikuClRo ZSBpdGVtcyBpbiB0aGUgbWVudSBhcmUgdGhlbiBwcmVzZW50ZWQgaW4gdGhlIG9yZGVyIHRoZXkg d2VyZSBmb3VuZAppbiB0aGUgYnVmZmVyLgoKU2V0IGl0IHRvIGBpbWVudS0tc29ydC1ieS1uYW1l JyBpZiB5b3Ugd2FudCBhbHBoYWJldGljIHNvcnRpbmcuCgpUaGUgZnVuY3Rpb24gc2hvdWxkIHRh a2UgdHdvIGFyZ3VtZW50cyBhbmQgcmV0dXJuIHQgaWYgdGhlIGZpcnN0CmVsZW1lbnQgc2hvdWxk IGNvbWUgYmVmb3JlIHRoZSBzZWNvbmQuICBUaGUgYXJndW1lbnRzIGFyZSBjb25zIGNlbGxzOwpc KE5BTUUgLiBQT1NJVElPTikuICBMb29rIGF0IGBpbWVudS0tc29ydC1ieS1uYW1lJyBmb3IgYW4g ZXhhbXBsZS4iCiAgOnR5cGUgJyhjaG9pY2UgKGNvbnN0IDp0YWcgIk5vIHNvcnRpbmciIG5pbCkK CQkgKGNvbnN0IDp0YWcgIlNvcnQgYnkgbmFtZSIgaW1lbnUtLXNvcnQtYnktbmFtZSkKICAgICAg ICAgICAgICAgICAoZnVuY3Rpb24gOnRhZyAiQW5vdGhlciBmdW5jdGlvbiIpKSkKCihkZWZjdXN0 b20gaW1lbnUtbWF4LWl0ZW1zIDI1CiAgIk1heGltdW0gbnVtYmVyIG9mIGVsZW1lbnRzIGluIGEg bW91c2UgbWVudSBmb3IgSW1lbnUuIgogIDp0eXBlICduYXRudW0pCgooZGVmY3VzdG9tIGltZW51 LXNwYWNlLXJlcGxhY2VtZW50ICIuIgogICJUaGUgcmVwbGFjZW1lbnQgc3RyaW5nIGZvciBzcGFj ZXMgaW4gaW5kZXggbmFtZXMuClVzZWQgd2hlbiBwcmVzZW50aW5nIHRoZSBpbmRleCBpbiBhIGNv bXBsZXRpb24gYnVmZmVyIHRvIG1ha2UgdGhlCm5hbWVzIHdvcmsgYXMgdG9rZW5zLiIKICA6dHlw ZSAnKGNob2ljZSBzdHJpbmcgKGNvbnN0IG5pbCkpKQoKKGRlZmN1c3RvbSBpbWVudS1sZXZlbC1z ZXBhcmF0b3IgIjoiCiAgIlRoZSBzZXBhcmF0b3IgYmV0d2VlbiBpbmRleCBuYW1lcyBvZiBkaWZm ZXJlbnQgbGV2ZWxzLgpVc2VkIGZvciBmbGF0dGVuaW5nIG5lc3RlZCBpbmRleGVzIHdpdGggbmFt ZSBjb25jYXRlbmF0aW9uLiIKICA6dHlwZSAnc3RyaW5nKQoKKGRlZmN1c3RvbSBpbWVudS1mbGF0 dGVuIG5pbAogICJXaGV0aGVyIHRvIGZsYXR0ZW4gdGhlIGxpc3Qgb2Ygc2VjdGlvbnMgaW4gYW4g aW1lbnUgb3Igc2hvdyBpdCBuZXN0ZWQuCklmIG5pbCwgdXNlIG5lc3RlZCBpbmRleGVzLgpJZiB0 aGUgdmFsdWUgaXMgYHByZWZpeCcsIHBvcCB1cCB0aGUgY29tcGxldGlvbiBidWZmZXIgd2l0aCBh CmZsYXR0ZW5lZCBtZW51IHdoZXJlIHNlY3Rpb24gbmFtZXMgYXJlIHByZXBlbmRlZCB0byBjb21w bGV0aW9uCmNhbmRpZGF0ZXMgYXMgcHJlZml4ZXMuCklmIHRoZSB2YWx1ZSBpcyBgYW5ub3RhdGlv bicsIGFubm90YXRlIGVhY2ggY29tcGxldGlvbiBjYW5kaWRhdGUKd2l0aCBhIHN1ZmZpeCB0aGF0 IGlzIHRoZSBzZWN0aW9uIG5hbWUgdG8gd2hpY2ggaXQgYmVsb25ncy4KSWYgdGhlIHZhbHVlIGlz IGBncm91cCcsIHNwbGl0IGNvbXBsZXRpb24gY2FuZGlkYXRlcyBpbnRvIGdyb3VwcwphY2NvcmRp bmcgdG8gdGhlIHNlY3Rpb25zLgpBbnkgb3RoZXIgdmFsdWUgaXMgdHJlYXRlZCBhcyBgcHJlZml4 Jy4KClNpbmNlIHRoZSB2YWx1ZXMgYGFubm90YXRpb24nIGFuZCBgZ3JvdXAnIHJlbHkgb24gdGV4 dCBwcm9wZXJ0aWVzLAp5b3UgY2FuIHVzZSB0aGVtIG9ubHkgYnkgc2VsZWN0aW5nIGNhbmRpZGF0 ZXMgZnJvbSB0aGUgY29tcGxldGlvbnMKYnVmZmVyLCBub3QgYnkgdHlwaW5nIGluIHRoZSBtaW5p YnVmZmVyLiAgVGhpcyBhbHNvIG1lYW5zIHRoYXQKaWYgeW91IHVzZSBgbWluaWJ1ZmZlci1uZXh0 LWNvbXBsZXRpb24nIChgTS08ZG93bj4nKSB0byBzZWxlY3QKYSBjb21wbGV0aW9uIHdoaWxlIHBv aW50IHN0YXlzIGluIHRoZSBtaW5pYnVmZmVyLCB5b3UgbmVlZAp0byBjdXN0b21pemUgYG1pbmli dWZmZXItY29tcGxldGlvbi1hdXRvLWNob29zZScgdG8gbmlsIHRoYXQKZG9lc24ndCBpbnNlcnQg Y29tcGxldGlvbiBjYW5kaWRhdGVzIHRvIHRoZSBtaW5pYnVmZmVyLgpBbHNvIG5vdGUgdGhhdCBm b3IgdXNpbmcgdGhlIHZhbHVlIGBncm91cCcgeW91IG5lZWQgdG8gY3VzdG9taXplCmBjb21wbGV0 aW9ucy1ncm91cCcgdG8gdGhlIHZhbHVlIHQsIGFuZCBgY29tcGxldGlvbnMtZm9ybWF0Jwp0byB0 aGUgdmFsdWUgYHZlcnRpY2FsJy4KClRoZSB2YWx1ZSBvZiBgaW1lbnUtbGV2ZWwtc2VwYXJhdG9y JywgYSBzdHJpbmcsIGlzIHVzZWQgdG8gc2VwYXJhdGUKbmFtZXMgZnJvbSBkaWZmZXJlbnQgZmxh dHRlbmVkIGxldmVscywgc3VjaCBhcyBzZWN0aW9uIG5hbWVzLCBmcm9tIHRoZQpuYW1lcyBvZiBj b21wbGV0aW9uIGNhbmRpZGF0ZXMuIgogIDp0eXBlICcoY2hvaWNlIChjb25zdCA6dGFnICJTaG93 IG5lc3RlZCBsaXN0IiBuaWwpCiAgICAgICAgICAgICAgICAgKGNvbnN0IDp0YWcgIkZsYXQgbGlz dCB3aXRoIHNlY3Rpb25zIGFzIHByZWZpeCIgcHJlZml4KQogICAgICAgICAgICAgICAgIChjb25z dCA6dGFnICJGbGF0IGxpc3QgYW5ub3RhdGVkIHdpdGggc2VjdGlvbnMiIGFubm90YXRpb24pCiAg ICAgICAgICAgICAgICAgKGNvbnN0IDp0YWcgIkZsYXQgbGlzdCBncm91cGVkIGJ5IHNlY3Rpb25z IiBncm91cCkpCiAgOnZlcnNpb24gIjMwLjEiKQoKKGRlZmN1c3RvbSBpbWVudS1nZW5lcmljLXNr aXAtY29tbWVudHMtYW5kLXN0cmluZ3MgdAogICJXaGVuIG5vbi1uaWwsIGlnbm9yZSB0ZXh0IGlu c2lkZSBjb21tZW50cyBhbmQgc3RyaW5ncy4KT25seSBhZmZlY3RzIGBpbWVudS1kZWZhdWx0LWNy ZWF0ZS1pbmRleC1mdW5jdGlvbicgKGFuZCBhbnkKYWx0ZXJuYXRpdmUgaW1wbGVtZW50YXRpb24g b2YgYGltZW51LWNyZWF0ZS1pbmRleC1mdW5jdGlvbicgdGhhdAp1c2VzIGBpbWVudS0tZ2VuZXJp Yy1mdW5jdGlvbicpLiIKICA6dHlwZSAnYm9vbGVhbgogIDp2ZXJzaW9uICIyNC40IikKCihkZWZj dXN0b20gaW1lbnUtbWF4LWluZGV4LXRpbWUgNQogICJNYXggdGltZSB0byB1c2Ugd2hlbiBjcmVh dGluZyBpbWVudSBpbmRpY2VzLiIKICA6dHlwZSAnbnVtYmVyCiAgOnZlcnNpb24gIjI4LjEiKQoK KGRlZmN1c3RvbSBpbWVudS1hbGxvdy1kdXBsaWNhdGUtbWVudS1pdGVtcy1mbGFnIHQKICAiTm9u LW5pbCBtZWFucyB0aGF0IEltZW51IGNhbiBpbmNsdWRlIGR1cGxpY2F0ZSBtZW51IGl0ZW1zLgpG b3IgZXhhbXBsZSwgaWYgdGhlIGJ1ZmZlciBjb250YWlucyBtdWx0aXBsZSBkZWZpbml0aW9ucyBv ZiBmdW5jdGlvbgpgZm9vJyB0aGVuIGEgbWVudSBpdGVtIGlzIGluY2x1ZGVkIGZvciBlYWNoIG9m IHRoZW0uCk90aGVyd2lzZSwgb25seSB0aGUgZmlyc3Qgc3VjaCBkZWZpbml0aW9uIGlzIGFjY2Vz c2libGUgZnJvbSB0aGUgbWVudS4iCiAgOnR5cGUgJ2Jvb2xlYW4gOmdyb3VwICdpbWVudSkKCjs7 OyMjI2F1dG9sb2FkCihkZWZ2YXItbG9jYWwgaW1lbnUtZ2VuZXJpYy1leHByZXNzaW9uIG5pbAog ICJMaXN0IG9mIGRlZmluaXRpb24gbWF0Y2hlcnMgZm9yIGNyZWF0aW5nIGFuIEltZW51IGluZGV4 LgpFYWNoIGVsZW1lbnQgb2YgdGhpcyBsaXN0IHNob3VsZCBoYXZlIHRoZSBmb3JtCgogIChNRU5V LVRJVExFIFJFR0VYUCBJTkRFWCBbRlVOQ1RJT05dIFtBUkdVTUVOVFMuLi5dKQoKTUVOVS1USVRM RSBzaG91bGQgYmUgbmlsIChpbiB3aGljaCBjYXNlIHRoZSBtYXRjaGVzIGZvciB0aGlzCmVsZW1l bnQgYXJlIHB1dCBpbiB0aGUgdG9wIGxldmVsIG9mIHRoZSBidWZmZXIgaW5kZXgpIG9yIGEKc3Ry aW5nICh3aGljaCBzcGVjaWZpZXMgdGhlIHRpdGxlIG9mIGEgc3VibWVudSBpbnRvIHdoaWNoIHRo ZQptYXRjaGVzIGFyZSBwdXQpLgpSRUdFWFAgaXMgYSByZWd1bGFyIGV4cHJlc3Npb24gbWF0Y2hp bmcgYSBkZWZpbml0aW9uIGNvbnN0cnVjdAp3aGljaCBpcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhl IG1lbnUuICBSRUdFWFAgbWF5IGFsc28gYmUgYQpmdW5jdGlvbiBvZiBubyBhcmd1bWVudHMuICBJ ZiBSRUdFWFAgaXMgYSBmdW5jdGlvbiwgaXQgaXMKZXhwZWN0ZWQgdG8gc2VhcmNoIGJhY2t3YXJk cywgcmV0dXJuIG5vbi1uaWwgaWYgaXQgZmluZHMgYQpkZWZpbml0aW9uIGNvbnN0cnVjdCwgYW5k IHNldCBgbWF0Y2gtZGF0YScgZm9yIHRoYXQgY29uc3RydWN0LgpJTkRFWCBpcyBhbiBpbnRlZ2Vy IHNwZWNpZnlpbmcgd2hpY2ggc3ViZXhwcmVzc2lvbiBvZiBSRUdFWFAKbWF0Y2hlcyB0aGUgZGVm aW5pdGlvbidzIG5hbWU7IHRoaXMgc3ViZXhwcmVzc2lvbiBpcyBkaXNwbGF5ZWQgYXMKdGhlIG1l bnUgaXRlbS4KRlVOQ1RJT04sIGlmIHByZXNlbnQsIHNwZWNpZmllcyBhIGZ1bmN0aW9uIHRvIGNh bGwgd2hlbiB0aGUgaW5kZXgKaXRlbSBpcyBzZWxlY3RlZCBieSB0aGUgdXNlci4gIFRoaXMgZnVu Y3Rpb24gaXMgY2FsbGVkIHdpdGgKYXJndW1lbnRzIGNvbnNpc3Rpbmcgb2YgdGhlIGl0ZW0gbmFt ZSwgdGhlIGJ1ZmZlciBwb3NpdGlvbiwgYW5kCnRoZSBBUkdVTUVOVFMuCgpUaGUgdmFyaWFibGUg YGltZW51LWNhc2UtZm9sZC1zZWFyY2gnIGRldGVybWluZXMgd2hldGhlciBvciBub3QKdGhlIHJl Z2V4cCBtYXRjaGVzIGFyZSBjYXNlIHNlbnNpdGl2ZSwgYW5kIGBpbWVudS1zeW50YXgtYWxpc3Qn CmNhbiBiZSB1c2VkIHRvIGFsdGVyIHRoZSBzeW50YXggdGFibGUgZm9yIHRoZSBzZWFyY2guCgpJ ZiBub24tbmlsIHRoaXMgcGF0dGVybiBpcyBwYXNzZWQgdG8gYGltZW51LS1nZW5lcmljLWZ1bmN0 aW9uJyB0bwpjcmVhdGUgYSBidWZmZXIgaW5kZXguCgpGb3IgZXhhbXBsZSwgc2VlIHRoZSB2YWx1 ZSBvZiBgZm9ydHJhbi1pbWVudS1nZW5lcmljLWV4cHJlc3Npb24nCnVzZWQgYnkgYGZvcnRyYW4t bW9kZScgd2l0aCBgaW1lbnUtc3ludGF4LWFsaXN0JyBzZXQgbG9jYWxseSBzbyB0aGF0CmNoYXJh Y3RlcnMgd2hpY2ggbm9ybWFsbHkgaGF2ZSBcInN5bWJvbFwiIHN5bnRheCBhcmUgY29uc2lkZXJl ZCB0byBoYXZlClwid29yZFwiIHN5bnRheCBkdXJpbmcgbWF0Y2hpbmcuIikKOzs7IyMjYXV0b2xv YWQocHV0ICdpbWVudS1nZW5lcmljLWV4cHJlc3Npb24gJ3Jpc2t5LWxvY2FsLXZhcmlhYmxlIHQp Cgo7Ozs7IEhvb2tzCgo7OzsjIyNhdXRvbG9hZAooZGVmdmFyLWxvY2FsIGltZW51LWNyZWF0ZS1p bmRleC1mdW5jdGlvbiAnaW1lbnUtZGVmYXVsdC1jcmVhdGUtaW5kZXgtZnVuY3Rpb24KICAiVGhl IGZ1bmN0aW9uIHRvIHVzZSBmb3IgY3JlYXRpbmcgYW4gaW5kZXggYWxpc3Qgb2YgdGhlIGN1cnJl bnQgYnVmZmVyLgoKSXQgc2hvdWxkIGJlIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBubyBhcmd1bWVu dHMgYW5kIHJldHVybnMKYW4gaW5kZXggYWxpc3Qgb2YgdGhlIGN1cnJlbnQgYnVmZmVyLiAgVGhl IGZ1bmN0aW9uIGlzCmNhbGxlZCB3aXRoaW4gYSBgc2F2ZS1leGN1cnNpb24nLgoKU2VlIGBpbWVu dS0taW5kZXgtYWxpc3QnIGZvciB0aGUgZm9ybWF0IG9mIHRoZSBidWZmZXIgaW5kZXggYWxpc3Qu IikKCjs7OyMjI2F1dG9sb2FkCihkZWZ2YXItbG9jYWwgaW1lbnUtc3VibWVudXMtb24tdG9wIHQK ICAiRmxhZyBzcGVjaWZ5aW5nIHdoZXRoZXIgaXRlbXMgd2l0aCBzdWJsaXN0cyBzaG91bGQgYmUg a2VwdCBhdCB0b3AuCgpGb3Igc29tZSBpbmRleGVzLCBzdWNoIGFzIHRob3NlIGRlc2NyaWJpbmcg c2VjdGlvbnMgaW4gYSBkb2N1bWVudCwgaXQKbWFrZXMgc2Vuc2UgdG8ga2VlcCB0aGVpciBvcmln aW5hbCBvcmRlciBldmVuIGluIHRoZSBtZW51YmFyLiIpCgo7OzsjIyNhdXRvbG9hZAooZGVmdmFy LWxvY2FsIGltZW51LXByZXYtaW5kZXgtcG9zaXRpb24tZnVuY3Rpb24gJ2JlZ2lubmluZy1vZi1k ZWZ1bgogICJGdW5jdGlvbiBmb3IgZmluZGluZyB0aGUgbmV4dCBpbmRleCBwb3NpdGlvbi4KCklm IGBpbWVudS1jcmVhdGUtaW5kZXgtZnVuY3Rpb24nIGlzIHNldCB0bwpgaW1lbnUtZGVmYXVsdC1j cmVhdGUtaW5kZXgtZnVuY3Rpb24nLCB0aGVuIHlvdSBtdXN0IHNldCB0aGlzIHZhcmlhYmxlCnRv IGEgZnVuY3Rpb24gdGhhdCB3aWxsIGZpbmQgdGhlIG5leHQgaW5kZXgsIGxvb2tpbmcgYmFja3dh cmRzIGluIHRoZQpmaWxlLgoKVGhlIGZ1bmN0aW9uIHNob3VsZCBsZWF2ZSBwb2ludCBhdCB0aGUg cGxhY2UgdG8gYmUgY29ubmVjdGVkIHRvIHRoZQppbmRleCBhbmQgaXQgc2hvdWxkIHJldHVybiBu aWwgd2hlbiBpdCBkb2Vzbid0IGZpbmQgYW5vdGhlciBpbmRleC4iKQoKOzs7IyMjYXV0b2xvYWQK KGRlZnZhci1sb2NhbCBpbWVudS1leHRyYWN0LWluZGV4LW5hbWUtZnVuY3Rpb24gbmlsCiAgIkZ1 bmN0aW9uIGZvciBleHRyYWN0aW5nIHRoZSBpbmRleCBpdGVtIG5hbWUsIGdpdmVuIGEgcG9zaXRp b24uCgpUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhZnRlciBgaW1lbnUtcHJldi1pbmRleC1wb3Np dGlvbi1mdW5jdGlvbicKZmluZHMgYSBwb3NpdGlvbiBmb3IgYW4gaW5kZXggaXRlbSwgd2l0aCBw b2ludCBhdCB0aGF0IHBvc2l0aW9uLgpJdCBzaG91bGQgcmV0dXJuIHRoZSBuYW1lIGZvciB0aGF0 IGluZGV4IGl0ZW0uIikKCjs7OyMjI2F1dG9sb2FkCihkZWZ2YXItbG9jYWwgaW1lbnUtbmFtZS1s b29rdXAtZnVuY3Rpb24gbmlsCiAgIkZ1bmN0aW9uIHRvIGNvbXBhcmUgc3RyaW5nIHdpdGggaW5k ZXggaXRlbS4KClRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgd2l0aCB0d28gc3RyaW5ncywg YW5kIHNob3VsZCByZXR1cm4Kbm9uLW5pbCBpZiB0aGV5IG1hdGNoLgoKSWYgbmlsLCBjb21wYXJp c29uIGlzIGRvbmUgd2l0aCBgc3RyaW5nPScuClNldCB0aGlzIHRvIHNvbWUgb3RoZXIgZnVuY3Rp b24gZm9yIG1vcmUgYWR2YW5jZWQgY29tcGFyaXNvbnMsCnN1Y2ggYXMgXCJiZWdpbnMgd2l0aFwi IG9yIFwibmFtZSBtYXRjaGVzIGFuZCBudW1iZXIgb2YKYXJndW1lbnRzIG1hdGNoXCIuIikKCjs7 OyMjI2F1dG9sb2FkCihkZWZ2YXItbG9jYWwgaW1lbnUtZGVmYXVsdC1nb3RvLWZ1bmN0aW9uICdp bWVudS1kZWZhdWx0LWdvdG8tZnVuY3Rpb24KICAiVGhlIGRlZmF1bHQgZnVuY3Rpb24gY2FsbGVk IHdoZW4gc2VsZWN0aW5nIGFuIEltZW51IGl0ZW0uClRoZSBmdW5jdGlvbiBpbiB0aGlzIHZhcmlh YmxlIGlzIGNhbGxlZCB3aGVuIHNlbGVjdGluZyBhIG5vcm1hbCBpbmRleC1pdGVtLiIpCgoKKGRl ZnVuIGltZW51LS1zdWJhbGlzdC1wIChpdGVtKQogIChhbmQgKGNvbnNwIGl0ZW0pCiAgICAgICAo Y29uc3AgKGNkciBpdGVtKSkKICAgICAgIChsaXN0cCAoY2FkciBpdGVtKSkKICAgICAgIChub3Qg KGZ1bmN0aW9ucCAoY2FkciBpdGVtKSkpKSkKCihkZWZtYWNybyBpbWVudS1wcm9ncmVzcy1tZXNz YWdlIChfcHJldnBvcyAmb3B0aW9uYWwgX3JlbHBvcyBfcmV2ZXJzZSkKICAiVGhpcyBtYWNybyBp cyBvYnNvbGV0ZSBhbmQgZG9lcyBub3RoaW5nLiIKICAoZGVjbGFyZSAob2Jzb2xldGUgbmlsICIy OC4xIikpCjs7IE1hZGUgb2Jzb2xldGUvZW1wdHksIGFzIGNvbXB1dGVycyBhcmUgbm93IGZhc3Rl ciB0aGFuIHRoZSBleWUsIGFuZAo7OyBpdCBoYWQgcHJvYmxlbXMgdXBkYXRpbmcgdGhlIG1lc3Nh Z2VzIGNvcnJlY3RseSwgYW5kIGNvdWxkIHNoYWRvdwo7OyBtb3JlIGltcG9ydGFudCBtZXNzYWdl cy9wcm9tcHRzIGluIHRoZSBtaW5pYnVmZmVyLiAgS0ZTIDIwMDQtMTAtMjcuCikKCgo7OzsKOzs7 IExpc3AKOzs7CgooZGVmaW5lLWVycm9yICdpbWVudS11bmF2YWlsYWJsZSAiaW1lbnUgdW5hdmFp bGFibGUiKQoKKGRlZnVuIGltZW51LXVuYXZhaWxhYmxlLWVycm9yIChmb3JtYXQgJnJlc3QgYXJn cykKICAoc2lnbmFsICdpbWVudS11bmF2YWlsYWJsZQogICAgICAgICAgKGxpc3QgKGFwcGx5ICMn Zm9ybWF0LW1lc3NhZ2UgZm9ybWF0IGFyZ3MpKSkpCgo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Cjs7Owo7OzsgSW50ZXJuYWwg dmFyaWFibGVzCjs7Owo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Cgo7OyBUaGUgaXRlbSB0byB1c2UgaW4gdGhlIGluZGV4IGZv ciByZXNjYW5uaW5nIHRoZSBidWZmZXIuCihkZWZjb25zdCBpbWVudS0tcmVzY2FuLWl0ZW0gJygi KlJlc2NhbioiIC4gLTk5KSkKCjs7IFRoZSBsYXRlc3QgYnVmZmVyIGluZGV4LgooZGVmdmFyLWxv Y2FsIGltZW51LS1pbmRleC1hbGlzdCBuaWwKICAiVGhlIGJ1ZmZlciBpbmRleCBhbGlzdCBjb21w dXRlZCBmb3IgdGhpcyBidWZmZXIgaW4gSW1lbnUuCgpTaW1wbGUgZWxlbWVudHMgaW4gdGhlIGFs aXN0IGxvb2sgbGlrZSAoSU5ERVgtTkFNRSAuIFBPU0lUSU9OKS4KUE9TSVRJT04gaXMgdGhlIGJ1 ZmZlciBwb3NpdGlvbiBvZiB0aGUgaXRlbTsgdG8gZ28gdG8gdGhlIGl0ZW0KaXMgc2ltcGx5IHRv IG1vdmUgcG9pbnQgdG8gdGhhdCBwb3NpdGlvbi4KClBPU0lUSU9OIGlzIHBhc3NlZCB0byBgaW1l bnUtZGVmYXVsdC1nb3RvLWZ1bmN0aW9uJywgc28gaXQgY2FuIGJlCmEgbm9uLW51bWJlciBpZiB0 aGF0IHZhcmlhYmxlIGhhcyBiZWVuIGNoYW5nZWQgKGUuZy4gU2VtYW50aWMKdXNlcyBvdmVybGF5 cyBmb3IgUE9TSVRJT05zKS4KClNwZWNpYWwgZWxlbWVudHMgbG9vayBsaWtlClwoSU5ERVgtTkFN RSBQT1NJVElPTiBGVU5DVElPTiBBUkdVTUVOVFMuLi4pLgpUbyBcImdvIHRvXCIgYSBzcGVjaWFs IGVsZW1lbnQgbWVhbnMgYXBwbHlpbmcgRlVOQ1RJT04gdG8KSU5ERVgtTkFNRSwgUE9TSVRJT04s IGFuZCB0aGUgQVJHVU1FTlRTLgoKQSBuZXN0ZWQgc3ViLWFsaXN0IGVsZW1lbnQgbG9va3MgbGlr ZSAoSU5ERVgtTkFNRSAuIFNVQi1BTElTVCkuClRoZSBmdW5jdGlvbiBgaW1lbnUtLXN1YmFsaXN0 LXAnIHRlc3RzIGFuIGVsZW1lbnQgYW5kIHJldHVybnMgdAppZiBpdCBpcyBhIHN1Yi1hbGlzdC4K ClRoZXJlIGlzIG9uZSBzaW1wbGUgZWxlbWVudCB3aXRoIG5lZ2F0aXZlIFBPU0lUSU9OOyBzZWxl Y3RpbmcgdGhhdAplbGVtZW50IHJlY2FsY3VsYXRlcyB0aGUgYnVmZmVyJ3MgaW5kZXggYWxpc3Qu IikKOzs7IyMjYXV0b2xvYWQocHV0ICdpbWVudS0taW5kZXgtYWxpc3QgJ3Jpc2t5LWxvY2FsLXZh cmlhYmxlIHQpCgooZGVmdmFyLWxvY2FsIGltZW51LS1sYXN0LW1lbnViYXItaW5kZXgtYWxpc3Qg bmlsCiAgIlRoZSBsYXRlc3QgYnVmZmVyIGluZGV4IGFsaXN0IHVzZWQgdG8gdXBkYXRlIHRoZSBt ZW51IGJhciBtZW51LiIpCgooZGVmdmFyIGltZW51LS1oaXN0b3J5LWxpc3QgbmlsCiAgOzsgTWFr aW5nIHRoaXMgYnVmZmVyIGxvY2FsIGNhdXNlZCBpdCBub3QgdG8gd29yayEKICAiSGlzdG9yeSBs aXN0IGZvciBgaW1lbnUtY2hvb3NlLWJ1ZmZlci1pbmRleCcuIikKCjs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsKOzs7Cjs7OyBJ bnRlcm5hbCBzdXBwb3J0IGZ1bmN0aW9ucwo7OzsKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OwoKKGRlZnVuIGltZW51LS1zb3J0 LWJ5LW5hbWUgKGl0ZW0xIGl0ZW0yKQogICJDb21wYXJpc29uIGZ1bmN0aW9uIHRvIHNvcnQgaXRl bXMgZGVwZW5kaW5nIG9uIHRoZWlyIGluZGV4IG5hbWUuCkFuIGl0ZW0gbG9va3MgbGlrZSAoTkFN RSAuIFBPU0lUSU9OKS4iCiAgKHN0cmluZy1sZXNzcCAoY2FyIGl0ZW0xKSAoY2FyIGl0ZW0yKSkp CgooZGVmdW4gaW1lbnUtLXNvcnQtYnktcG9zaXRpb24gKGl0ZW0xIGl0ZW0yKQogICJDb21wYXJp c29uIGZ1bmN0aW9uIHRvIHNvcnQgaXRlbXMgZGVwZW5kaW5nIG9uIHRoZWlyIHBvc2l0aW9uLgpS ZXR1cm4gbm9uLW5pbCBpZiBhbmQgb25seSBpZiBJVEVNMSdzIHBvc2l0aW9uIGlzIGxvd2VyIHRo YW4gSVRFTTIncwpwb3NpdGlvbi4iCiAgKGlmIChsaXN0cCAoY2RyIGl0ZW0xKSkKICAgICAgKDwg KGNhZHIgaXRlbTEpIChjYWRyIGl0ZW0yKSkKICAgICg8IChjZHIgaXRlbTEpIChjZHIgaXRlbTIp KSkpCgooZGVmdW4gaW1lbnUtLXJlbGF0aXZlLXBvc2l0aW9uICgmb3B0aW9uYWwgcmV2ZXJzZSkK ICAiU3VwcG9ydCBmdW5jdGlvbiB0byBjYWxjdWxhdGUgcmVsYXRpdmUgcG9zaXRpb24gaW4gYnVm ZmVyLgpCZWdpbm5pbmcgb2YgYnVmZmVyIGlzIDAgYW5kIGVuZCBvZiBidWZmZXIgaXMgMTAwCklm IFJFVkVSU0UgaXMgbm9uLW5pbCB0aGVuIHRoZSBiZWdpbm5pbmcgaXMgMTAwIGFuZCB0aGUgZW5k IGlzIDAuIgogIChsZXQgKChwb3MgKHBvaW50KSkKCSh0b3RhbCAoYnVmZmVyLXNpemUpKSkKICAg IChhbmQgcmV2ZXJzZSAoc2V0cSBwb3MgKC0gdG90YWwgcG9zKSkpCiAgICAoZmxvb3IgKCogMTAw LjAgKDEtIHBvcykpIChtYXggdG90YWwgMSkpKSkKCihkZWZ1biBpbWVudS0tc3BsaXQgKGxpc3Qg bikKICAiU3BsaXQgTElTVCBpbnRvIHN1Ymxpc3RzIG9mIG1heCBsZW5ndGggTi4KRXhhbXBsZSAo aW1lbnUtLXNwbGl0IFxcPScoMSAyIDMgNCA1IDYgNyA4KSAzKSA9PiAoKDEgMiAzKSAoNCA1IDYp ICg3IDgpKQpUaGUgcmV0dXJuZWQgbGlzdCBET0VTIE5PVCBzaGFyZSBzdHJ1Y3R1cmUgd2l0aCBM SVNULiIKICAobGV0ICgocmVtYWluIGxpc3QpCgkocmVzdWx0ICcoKSkKCShzdWJsaXN0ICcoKSkK CShpIDApKQogICAgKHdoaWxlIHJlbWFpbgogICAgICAocHVzaCAocG9wIHJlbWFpbikgc3VibGlz dCkKICAgICAgKGNsLWluY2YgaSkKICAgICAgKGFuZCAoPSBpIG4pCgkgICA7OyBXZSBoYXZlIGZp bmlzaGVkIGEgc3VibGlzdAoJICAgKHByb2duIChwdXNoIChucmV2ZXJzZSBzdWJsaXN0KSByZXN1 bHQpCgkJICAoc2V0cSBpIDApCgkJICAoc2V0cSBzdWJsaXN0ICcoKSkpKSkKICAgIDs7IFRoZXJl IG1pZ2h0IGJlIGEgc3VibGlzdCAoaWYgdGhlIGxlbmd0aCBvZiBMSVNUIG1vZCBuIGlzICE9IDAp CiAgICA7OyB0aGF0IGhhcyB0byBiZSBhZGRlZCB0byB0aGUgcmVzdWx0IGxpc3QuCiAgICAoYW5k IHN1Ymxpc3QKCSAocHVzaCAobnJldmVyc2Ugc3VibGlzdCkgcmVzdWx0KSkKICAgIChucmV2ZXJz ZSByZXN1bHQpKSkKCihkZWZ1biBpbWVudS0tc3BsaXQtbWVudSAobWVudWxpc3QgdGl0bGUpCiAg IlNwbGl0IHRoZSBhbGlzdCBNRU5VTElTVCBpbnRvIGEgbmVzdGVkIGFsaXN0LCBpZiBpdCBpcyBs b25nIGVub3VnaC4KSW4gYW55IGNhc2UsIGFkZCBUSVRMRSB0byB0aGUgZnJvbnQgb2YgdGhlIGFs aXN0LgpJZiBJTUVOVS0tUkVTQ0FOLUlURU0gaXMgcHJlc2VudCBpbiBNRU5VTElTVCwgaXQgaXMg bW92ZWQgdG8gdGhlCmJlZ2lubmluZyBvZiB0aGUgcmV0dXJuZWQgYWxpc3QuClRoZSByZXR1cm5l ZCBhbGlzdCBET0VTIE5PVCBzaGFyZSBzdHJ1Y3R1cmUgd2l0aCBNRU5VTElTVC4iCiAgKGxldCAo KG1lbnVsaXN0IChjb3B5LXNlcXVlbmNlIG1lbnVsaXN0KSkKICAgICAgICBrZWVwLWF0LXRvcCkK ICAgIChpZiAobWVtcSBpbWVudS0tcmVzY2FuLWl0ZW0gbWVudWxpc3QpCgkoc2V0cSBrZWVwLWF0 LXRvcCAobGlzdCBpbWVudS0tcmVzY2FuLWl0ZW0pCgkgICAgICBtZW51bGlzdCAoZGVscSBpbWVu dS0tcmVzY2FuLWl0ZW0gbWVudWxpc3QpKSkKICAgIChpZiBpbWVudS1zdWJtZW51cy1vbi10b3AK ICAgICAgICAoZG9saXN0IChpdGVtIG1lbnVsaXN0KQogICAgICAgICAgKHdoZW4gKGltZW51LS1z dWJhbGlzdC1wIGl0ZW0pCgkgICAgKHB1c2ggaXRlbSBrZWVwLWF0LXRvcCkKCSAgICAoc2V0cSBt ZW51bGlzdCAoZGVscSBpdGVtIG1lbnVsaXN0KSkpKSkKICAgIChpZiBpbWVudS1zb3J0LWZ1bmN0 aW9uCgkoc2V0cSBtZW51bGlzdCAoc29ydCBtZW51bGlzdCBpbWVudS1zb3J0LWZ1bmN0aW9uKSkp CiAgICAoaWYgKD4gKGxlbmd0aCBtZW51bGlzdCkgaW1lbnUtbWF4LWl0ZW1zKQoJKHNldHEgbWVu dWxpc3QKCSAgICAgIChtYXBjYXIKCSAgICAgICAobGFtYmRhIChtZW51KQoJCSAoY29ucyAoZm9y bWF0ICJGcm9tOiAlcyIgKGNhYXIgbWVudSkpIG1lbnUpKQoJICAgICAgIChpbWVudS0tc3BsaXQg bWVudWxpc3QgaW1lbnUtbWF4LWl0ZW1zKSkpKQogICAgKGNvbnMgdGl0bGUKCSAgKG5jb25jIChu cmV2ZXJzZSBrZWVwLWF0LXRvcCkgbWVudWxpc3QpKSkpCgooZGVmdW4gaW1lbnUtLXNwbGl0LXN1 Ym1lbnVzIChhbGlzdCkKICAiU3BsaXQgdXAgZWFjaCBsb25nIGFsaXN0IHRoYXQgYXJlIG5lc3Rl ZCB3aXRoaW4gQUxJU1QgaW50byBuZXN0ZWQgYWxpc3RzLgpSZXR1cm4gYSBzcGxpdCBhbmQgc29y dGVkIGNvcHkgb2YgQUxJU1QuICBUaGUgcmV0dXJuZWQgYWxpc3QgRE9FUwpOT1Qgc2hhcmUgc3Ry dWN0dXJlIHdpdGggQUxJU1QuIgogIChtYXBjYXIgKGxhbWJkYSAoZWx0KQogICAgICAgICAgICAo aWYgKGltZW51LS1zdWJhbGlzdC1wIGVsdCkKICAgICAgICAgICAgICAgIChpbWVudS0tc3BsaXQt bWVudSAoY2RyIGVsdCkgKGNhciBlbHQpKQogICAgICAgICAgICAgIGVsdCkpCgkgIGFsaXN0KSkK CihkZWZ1biBpbWVudS0tdHJ1bmNhdGUtaXRlbXMgKG1lbnVsaXN0KQogICJUcnVuY2F0ZSBhbGwg c3RyaW5ncyBpbiBNRU5VTElTVCB0byBgaW1lbnUtbWF4LWl0ZW0tbGVuZ3RoJy4iCiAgKG1hcGMg KGxhbWJkYSAoaXRlbSkKCSAgOzsgVHJ1bmNhdGUgaWYgbmVjZXNzYXJ5LgoJICAod2hlbiAoYW5k IChudW1iZXJwIGltZW51LW1heC1pdGVtLWxlbmd0aCkKCQkgICAgICg+IChsZW5ndGggKGNhciBp dGVtKSkgaW1lbnUtbWF4LWl0ZW0tbGVuZ3RoKSkKCSAgICAoc2V0Y2FyIGl0ZW0gKHN1YnN0cmlu ZyAoY2FyIGl0ZW0pIDAgaW1lbnUtbWF4LWl0ZW0tbGVuZ3RoKSkpCgkgICh3aGVuIChpbWVudS0t c3ViYWxpc3QtcCBpdGVtKQoJICAgIChpbWVudS0tdHJ1bmNhdGUtaXRlbXMgKGNkciBpdGVtKSkp KQoJbWVudWxpc3QpKQoKKGRlZnVuIGltZW51LS1tYWtlLWluZGV4LWFsaXN0ICgmb3B0aW9uYWwg bm9lcnJvcikKICAiQ3JlYXRlIGFuIGluZGV4IGFsaXN0IGZvciB0aGUgZGVmaW5pdGlvbnMgaW4g dGhlIGN1cnJlbnQgYnVmZmVyLgpUaGlzIHdvcmtzIGJ5IHVzaW5nIHRoZSBob29rIGZ1bmN0aW9u IGBpbWVudS1jcmVhdGUtaW5kZXgtZnVuY3Rpb24nLgpSZXBvcnQgYW4gZXJyb3IgaWYgdGhlIGxp c3QgaXMgZW1wdHkgdW5sZXNzIE5PRVJST1IgaXMgc3VwcGxpZWQgYW5kCm5vbi1uaWwuCgpTZWUg YGltZW51LS1pbmRleC1hbGlzdCcgZm9yIHRoZSBmb3JtYXQgb2YgdGhlIGluZGV4IGFsaXN0LiIK ICAob3IgKGFuZCBpbWVudS0taW5kZXgtYWxpc3QKCSAgIChvciAobm90IGltZW51LWF1dG8tcmVz Y2FuKQoJICAgICAgIChhbmQgaW1lbnUtYXV0by1yZXNjYW4KCQkgICAgKD4gKGJ1ZmZlci1zaXpl KSAgaW1lbnUtYXV0by1yZXNjYW4tbWF4b3V0KSkpKQogICAgICA7OyBHZXQgdGhlIGluZGV4OyB0 cnVuY2F0ZSBpZiBuZWNlc3NhcnkuCiAgICAgIChwcm9nbgoJKHNldHEgaW1lbnUtLWluZGV4LWFs aXN0CgkgICAgICAoc2F2ZS1leGN1cnNpb24KCQkoc2F2ZS1yZXN0cmljdGlvbgoJCSAgKHdpZGVu KQoJCSAgKGZ1bmNhbGwgaW1lbnUtY3JlYXRlLWluZGV4LWZ1bmN0aW9uKSkpKQoJKGltZW51LS10 cnVuY2F0ZS1pdGVtcyBpbWVudS0taW5kZXgtYWxpc3QpKSkKICAob3IgaW1lbnUtLWluZGV4LWFs aXN0IG5vZXJyb3IKICAgICAgKGltZW51LXVuYXZhaWxhYmxlLWVycm9yCiAgICAgICAiTm8gaXRl bXMgc3VpdGFibGUgZm9yIGFuIGluZGV4IGZvdW5kIGluIHRoaXMgYnVmZmVyIikpCiAgKG9yIGlt ZW51LS1pbmRleC1hbGlzdAogICAgICAoc2V0cSBpbWVudS0taW5kZXgtYWxpc3QgKGxpc3Qgbmls KSkpCiAgKGlmIGltZW51LWF1dG8tcmVzY2FuCiAgICAgIGltZW51LS1pbmRleC1hbGlzdAogICAg OzsgQWRkIGEgcmVzY2FuIG9wdGlvbiB0byB0aGUgaW5kZXguCiAgICAoY29ucyBpbWVudS0tcmVz Y2FuLWl0ZW0gaW1lbnUtLWluZGV4LWFsaXN0KSkpCgooZGVmdmFyIGltZW51LS1jbGVhbnVwLXNl ZW4gbmlsKQoKKGRlZnVuIGltZW51LS1jbGVhbnVwICgmb3B0aW9uYWwgYWxpc3QpCiAgIkZpbmQg YWxsIG1hcmtlcnMgaW4gQUxJU1QgYW5kIG1ha2UgdGhlbSBwb2ludCBub3doZXJlLgpJZiBBTElT VCBpcyBuaWwgKHRoZSBub3JtYWwgY2FzZSksIHVzZSBgaW1lbnUtLWluZGV4LWFsaXN0Jy4KTm9u LW5pbCBhcmd1bWVudHMgYXJlIGluIHJlY3Vyc2l2ZSBjYWxscy4iCiAgOzsgSWYgYWxpc3QgaXMg cHJvdmlkZWQgdXNlIHRoYXQgbGlzdC4KICA7OyBJZiBub3QsIGVtcHR5IHRoZSB0YWJsZSBvZiBs aXN0cyBhbHJlYWR5IHNlZW4KICA7OyBhbmQgdXNlIGltZW51LS1pbmRleC1hbGlzdC4KICAoaWYg YWxpc3QKICAgICAgKHNldHEgaW1lbnUtLWNsZWFudXAtc2VlbiAoY29ucyBhbGlzdCBpbWVudS0t Y2xlYW51cC1zZWVuKSkKICAgIChzZXRxIGFsaXN0IGltZW51LS1pbmRleC1hbGlzdCBpbWVudS0t Y2xlYW51cC1zZWVuIChsaXN0IGFsaXN0KSkpCgogICh3aGVuIGFsaXN0CiAgICAoZG9saXN0IChp dGVtIGFsaXN0KQogICAgICAoY29uZAogICAgICAgKChtYXJrZXJwIChjZHIgaXRlbSkpIChzZXQt bWFya2VyIChjZHIgaXRlbSkgbmlsKSkKICAgICAgIDs7IERvbid0IHByb2Nlc3Mgb25lIGFsaXN0 IHR3aWNlLgogICAgICAgKChtZW1xIChjZHIgaXRlbSkgaW1lbnUtLWNsZWFudXAtc2VlbikpCiAg ICAgICAoKGltZW51LS1zdWJhbGlzdC1wIGl0ZW0pIChpbWVudS0tY2xlYW51cCAoY2RyIGl0ZW0p KSkpKQogICAgdCkpCgooZGVmdW4gaW1lbnUtLWNyZWF0ZS1rZXltYXAgKHRpdGxlIGFsaXN0ICZv cHRpb25hbCBjbWQpCiAgYChrZXltYXAgLHRpdGxlCiAgICAgICAgICAgLEAobWFwY2FyCiAgICAg ICAgICAgICAgKGxhbWJkYSAoaXRlbSkKICAgICAgICAgICAgICAgIGAoLChpZiBpbWVudS1hbGxv dy1kdXBsaWNhdGUtbWVudS1pdGVtcy1mbGFnCiAgICAgICAgICAgICAgICAgICAgICAgKGNhciBp dGVtKQogICAgICAgICAgICAgICAgICAgICAoaW50ZXJuIChjYXIgaXRlbSkpKQogICAgICAgICAg ICAgICAgICAsKGNhciBpdGVtKQogICAgICAgICAgICAgICAgICAsQChjb25kCiAgICAgICAgICAg ICAgICAgICAgICgoaW1lbnUtLXN1YmFsaXN0LXAgaXRlbSkKICAgICAgICAgICAgICAgICAgICAg IChpbWVudS0tY3JlYXRlLWtleW1hcCAoY2FyIGl0ZW0pIChjZHIgaXRlbSkgY21kKSkKICAgICAg ICAgICAgICAgICAgICAgKHQKICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKCkgKGludGVy YWN0aXZlKQogICAgICAgICAgICAgICAgICAgICAgICAoaWYgY21kIChmdW5jYWxsIGNtZCBpdGVt KSBpdGVtKSkpKSkpCiAgICAgICAgICAgICAgKHJlbXEgbmlsIGFsaXN0KSkpKQoKKGRlZnVuIGlt ZW51LS1pbi1hbGlzdCAoc3RyIGFsaXN0KQogICJDaGVjayB3aGV0aGVyIHRoZSBzdHJpbmcgU1RS IGlzIGNvbnRhaW5lZCBpbiBtdWx0aS1sZXZlbCBBTElTVC4iCiAgKGxldCAoZWx0IGhlYWQgdGFp bCByZXMpCiAgICAoc2V0cSByZXMgbmlsKQogICAgKHdoaWxlIGFsaXN0CiAgICAgIChzZXRxIGVs dCAoY2FyIGFsaXN0KQoJICAgIHRhaWwgKGNkciBlbHQpCgkgICAgYWxpc3QgKGNkciBhbGlzdCkK CSAgICBoZWFkIChjYXIgZWx0KSkKICAgICAgOzsgQSBuZXN0ZWQgQUxJU1QgZWxlbWVudCBsb29r cyBsaWtlCiAgICAgIDs7ICAgKElOREVYLU5BTUUgKElOREVYLU5BTUUgLiBJTkRFWC1QT1NJVElP TikgLi4uKQogICAgICA7OyB3aGlsZSBhIGJvdHRvbS1sZXZlbCBlbGVtZW50IGxvb2tzIGxpa2UK ICAgICAgOzsgICAoSU5ERVgtTkFNRSAuIElOREVYLVBPU0lUSU9OKQogICAgICA7OyBvcgogICAg ICA7OyAgIChJTkRFWC1OQU1FIElOREVYLVBPU0lUSU9OIEZVTkNUSU9OIEFSR1VNRU5UUy4uLikK ICAgICAgOzsgV2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgYm90dG9tLWxldmVsIGVsZW1l bnRzLCBzbyB3ZSBuZWVkIHRvCiAgICAgIDs7IHJlY3Vyc2UgaWYgVEFJTCBpcyBhIG5lc3RlZCBB TElTVC4KICAgICAgKGNvbmQgKChpbWVudS0tc3ViYWxpc3QtcCBlbHQpCgkgICAgIChpZiAoc2V0 cSByZXMgKGltZW51LS1pbi1hbGlzdCBzdHIgdGFpbCkpCgkJIChzZXRxIGFsaXN0IG5pbCkpKQoJ ICAgICgoaWYgaW1lbnUtbmFtZS1sb29rdXAtZnVuY3Rpb24KICAgICAgICAgICAgICAgICAoZnVu Y2FsbCBpbWVudS1uYW1lLWxvb2t1cC1mdW5jdGlvbiBzdHIgaGVhZCkKICAgICAgICAgICAgICAg KHN0cmluZz0gc3RyIGhlYWQpKQoJICAgICAoc2V0cSBhbGlzdCBuaWwgcmVzIGVsdCkpKSkKICAg IHJlcykpCgo7OzsjIyNhdXRvbG9hZAooZGVmdmFyLWxvY2FsIGltZW51LXN5bnRheC1hbGlzdCBu aWwKICAiQWxpc3Qgb2Ygc3ludGF4IHRhYmxlIG1vZGlmaWVycyB0byB1c2Ugd2hpbGUgaW4gYGlt ZW51LS1nZW5lcmljLWZ1bmN0aW9uJy4KClRoZSBjYXIgb2YgdGhlIGFzc29jcyBtYXkgYmUgZWl0 aGVyIGEgY2hhcmFjdGVyIG9yIGEgc3RyaW5nIGFuZCB0aGUKY2RyIGlzIGEgc3ludGF4IGRlc2Ny aXB0aW9uIGFwcHJvcHJpYXRlIGZvciBgbW9kaWZ5LXN5bnRheC1lbnRyeScuICBGb3IKYSBzdHJp bmcsIGFsbCB0aGUgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGdldCB0aGUgc3BlY2lmaWVkIHN5 bnRheC4KClRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgdG8gZ2l2ZSB3b3JkIHN5bnRheCB0byBjaGFy YWN0ZXJzIHdoaWNoCm5vcm1hbGx5IGhhdmUgc3ltYm9sIHN5bnRheCB0byBzaW1wbGlmeSBgaW1l bnUtZXhwcmVzc2lvbicKYW5kIHNwZWVkLXVwIG1hdGNoaW5nLiIpCgooZGVmdW4gaW1lbnUtZGVm YXVsdC1jcmVhdGUtaW5kZXgtZnVuY3Rpb24gKCkKICAiRGVmYXVsdCBmdW5jdGlvbiB0byBjcmVh dGUgYW4gaW5kZXggYWxpc3Qgb2YgdGhlIGN1cnJlbnQgYnVmZmVyLgoKVGhlIG1vc3QgZ2VuZXJh bCBtZXRob2QgaXMgdG8gbW92ZSBwb2ludCB0byBlbmQgb2YgYnVmZmVyLCB0aGVuIHJlcGVhdGVk bHkgY2FsbApgaW1lbnUtcHJldi1pbmRleC1wb3NpdGlvbi1mdW5jdGlvbicgYW5kIGBpbWVudS1l eHRyYWN0LWluZGV4LW5hbWUtZnVuY3Rpb24nLgpBbGwgdGhlIHJlc3VsdHMgcmV0dXJuZWQgYnkg dGhlIGxhdHRlciBhcmUgZ2F0aGVyZWQgaW50byBhbiBpbmRleCBhbGlzdC4KVGhpcyBtZXRob2Qg aXMgdXNlZCBpZiB0aG9zZSB0d28gdmFyaWFibGVzIGFyZSBub24tbmlsLgoKVGhlIGFsdGVybmF0 ZSBtZXRob2QsIHdoaWNoIGlzIHRoZSBvbmUgbW9zdCBvZnRlbiB1c2VkLCBpcyB0byBjYWxsCmBp bWVudS0tZ2VuZXJpYy1mdW5jdGlvbicgd2l0aCBgaW1lbnUtZ2VuZXJpYy1leHByZXNzaW9uJyBh cyBhcmd1bWVudC4iCiAgOzsgVGhlc2Ugc2hvdWxkIHJlYWxseSBiZSBkb25lIGJ5IHNldHRpbmcg aW1lbnUtY3JlYXRlLWluZGV4LWZ1bmN0aW9uCiAgOzsgaW4gdGhlc2UgbWFqb3IgbW9kZXMuICBC dXQgc2F2ZSB0aGF0IGNoYW5nZSBmb3IgbGF0ZXIuCiAgKGNvbmQgKChhbmQgaW1lbnUtcHJldi1p bmRleC1wb3NpdGlvbi1mdW5jdGlvbgoJICAgICAgaW1lbnUtZXh0cmFjdC1pbmRleC1uYW1lLWZ1 bmN0aW9uKQoJIChsZXQgKChpbmRleC1hbGlzdCAnKCkpIChwb3MgKHBvaW50LW1heCkpCiAgICAg ICAgICAgICAgIChzdGFydCAoZmxvYXQtdGltZSkpCgkgICAgICAgbmFtZSkKCSAgIChnb3RvLWNo YXIgcG9zKQoJICAgOzsgU2VhcmNoIGZvciB0aGUgZnVuY3Rpb24KCSAgICh3aGlsZSAoYW5kIChm dW5jYWxsIGltZW51LXByZXYtaW5kZXgtcG9zaXRpb24tZnVuY3Rpb24pCiAgICAgICAgICAgICAg ICAgICAgICAgOzsgRG9uJ3QgdXNlIGFuIGV4Y2Vzc2l2ZSBhbW91bnQgb2YgdGltZS4KICAgICAg ICAgICAgICAgICAgICAgICAoPCAoLSAoZmxvYXQtdGltZSkgc3RhcnQpIGltZW51LW1heC1pbmRl eC10aW1lKSkKICAgICAgICAgICAgICh1bmxlc3MgKDwgKHBvaW50KSBwb3MpCiAgICAgICAgICAg ICAgIChlcnJvciAiSW5maW5pdGUgbG9vcCBhdCAlczolZDogaW1lbnUtcHJldi1pbmRleC1wb3Np dGlvbi1mdW5jdGlvbiBkb2VzIG5vdCBtb3ZlIHBvaW50IiAoYnVmZmVyLW5hbWUpIHBvcykpCiAg ICAgICAgICAgICAoc2V0cSBwb3MgKHBvaW50KSkKCSAgICAgKHNhdmUtZXhjdXJzaW9uCgkgICAg ICAgKHNldHEgbmFtZSAoZnVuY2FsbCBpbWVudS1leHRyYWN0LWluZGV4LW5hbWUtZnVuY3Rpb24p KSkKCSAgICAgKGFuZCAoc3RyaW5ncCBuYW1lKQogCQkgIDs7IFt5ZGldIFVwZGF0ZWQgZm9yIGlt ZW51LXVzZS1tYXJrZXJzLgoJCSAgKHB1c2ggKGNvbnMgbmFtZQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoaWYgaW1lbnUtdXNlLW1hcmtlcnMgKHBvaW50LW1hcmtlcikgKHBvaW50KSkp CgkJCWluZGV4LWFsaXN0KSkpCgkgICBpbmRleC1hbGlzdCkpCgk7OyBVc2UgZ2VuZXJpYyBleHBy ZXNzaW9uIGlmIHBvc3NpYmxlLgoJKChhbmQgaW1lbnUtZ2VuZXJpYy1leHByZXNzaW9uKQoJIChp bWVudS0tZ2VuZXJpYy1mdW5jdGlvbiBpbWVudS1nZW5lcmljLWV4cHJlc3Npb24pKQoJKHQKICAg ICAgICAgKGltZW51LXVuYXZhaWxhYmxlLWVycm9yICJUaGlzIGJ1ZmZlciBjYW5ub3QgdXNlIGBp bWVudS1kZWZhdWx0LWNyZWF0ZS1pbmRleC1mdW5jdGlvbiciKSkpKQoKOzs7Cjs7OyBHZW5lcmlj IGluZGV4IGdhdGhlcmluZyBmdW5jdGlvbi4KOzs7Cgo7OzsjIyNhdXRvbG9hZAooZGVmdmFyLWxv Y2FsIGltZW51LWNhc2UtZm9sZC1zZWFyY2ggdAogICJEZWZpbmVzIHdoZXRoZXIgYGltZW51LS1n ZW5lcmljLWZ1bmN0aW9uJyBzaG91bGQgZm9sZCBjYXNlIHdoZW4gbWF0Y2hpbmcuCgpUaGlzIHZh cmlhYmxlIHNob3VsZCBiZSBzZXQgKG9ubHkpIGJ5IGluaXRpYWxpemF0aW9uIGNvZGUKZm9yIG1v ZGVzIHdoaWNoIHVzZSBgaW1lbnUtLWdlbmVyaWMtZnVuY3Rpb24nLiAgSWYgaXQgaXMgbm90IHNl dCwgYnV0CmBmb250LWxvY2stZGVmYXVsdHMnIGlzIHNldCwgdGhlbiBmb250LWxvY2sncyBzZXR0 aW5nIGlzIHVzZWQuIikKCjs7IFRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCB3aXRoIHF1aXR0 aW5nIGRpc2FibGVkLAo7OyBzbyBpdCBuZWVkcyB0byBiZSBjYXJlZnVsIG5ldmVyIHRvIGxvb3Ah CihkZWZ1biBpbWVudS0tZ2VuZXJpYy1mdW5jdGlvbiAocGF0dGVybnMpCiAgIlJldHVybiBhbiBp bmRleCBhbGlzdCBvZiB0aGUgY3VycmVudCBidWZmZXIgYmFzZWQgb24gUEFUVEVSTlMuClBBVFRF Uk5TIHNob3VsZCBiZSBhbiBhbGlzdCBvZiB0aGUgc2FtZSBmb3JtIGFzIGBpbWVudS1nZW5lcmlj LWV4cHJlc3Npb24nLgoKSWYgYGltZW51LWdlbmVyaWMtc2tpcC1jb21tZW50cy1hbmQtc3RyaW5n cycgaXMgbm9uLW5pbCwgdGhpcyBpZ25vcmVzCnRleHQgaW5zaWRlIGNvbW1lbnRzIGFuZCBzdHJp bmdzLgoKSWYgYGltZW51LWNhc2UtZm9sZC1zZWFyY2gnIGlzIG5vbi1uaWwsIHRoaXMgaWdub3Jl cyBjYXNlLgoKVGhlIHJldHVybiB2YWx1ZSBpcyBhbiBhbGlzdCBvZiB0aGUgZm9ybQogKElOREVY LU5BTUUgLiBJTkRFWC1QT1NJVElPTikKb3IKIChJTkRFWC1OQU1FIElOREVYLVBPU0lUSU9OIEZV TkNUSU9OIEFSR1VNRU5UUy4uLikKVGhlIHJldHVybiB2YWx1ZSBtYXkgYWxzbyBjb25zaXN0IG9m IG5lc3RlZCBpbmRleCBhbGlzdHMgbGlrZToKIChJTkRFWC1OQU1FIC4gSU5ERVgtQUxJU1QpCmRl cGVuZGluZyBvbiBQQVRURVJOUy4iCiAgKGxldCAoKGluZGV4LWFsaXN0IChsaXN0ICdkdW1teSkp CiAgICAgICAgKGNhc2UtZm9sZC1zZWFyY2ggKGlmIChvciAobG9jYWwtdmFyaWFibGUtcCAnaW1l bnUtY2FzZS1mb2xkLXNlYXJjaCkKCQkJCSAgKG5vdCAobG9jYWwtdmFyaWFibGUtcCAnZm9udC1s b2NrLWRlZmF1bHRzKSkpCgkJCSAgICAgIGltZW51LWNhc2UtZm9sZC1zZWFyY2gKCQkJICAgIChu dGggMiBmb250LWxvY2stZGVmYXVsdHMpKSkKICAgICAgICAoc3RhcnQtdGltZSAoZmxvYXQtdGlt ZSkpCiAgICAgICAgKG9sZC10YWJsZSAoc3ludGF4LXRhYmxlKSkKICAgICAgICAodGFibGUgKGNv cHktc3ludGF4LXRhYmxlIChzeW50YXgtdGFibGUpKSkKICAgICAgICAoc2xpc3QgaW1lbnUtc3lu dGF4LWFsaXN0KSkKICAgIDs7IE1vZGlmeSB0aGUgc3ludGF4IHRhYmxlIHVzZWQgd2hpbGUgbWF0 Y2hpbmcgcmVnZXhwcy4KICAgIChkb2xpc3QgKHN5biBzbGlzdCkKICAgICAgOzsgVGhlIGNoYXJh Y3RlcihzKSB0byBtb2RpZnkgbWF5IGJlIGEgc2luZ2xlIGNoYXIgb3IgYSBzdHJpbmcuCiAgICAg IChpZiAobnVtYmVycCAoY2FyIHN5bikpCgkgIChtb2RpZnktc3ludGF4LWVudHJ5IChjYXIgc3lu KSAoY2RyIHN5bikgdGFibGUpCiAgICAgICAgKG1hcGMgKGxhbWJkYSAoYykKICAgICAgICAgICAg ICAgIChtb2RpZnktc3ludGF4LWVudHJ5IGMgKGNkciBzeW4pIHRhYmxlKSkKICAgICAgICAgICAg ICAoY2FyIHN5bikpKSkKICAgIChnb3RvLWNoYXIgKHBvaW50LW1heCkpCiAgICAodW53aW5kLXBy b3RlY3QJCQk7IEZvciBzeW50YXggdGFibGUuCgkoc2F2ZS1tYXRjaC1kYXRhCgkgIChzZXQtc3lu dGF4LXRhYmxlIHRhYmxlKQoKCSAgOzsgTWFwIG92ZXIgdGhlIGVsZW1lbnRzIG9mIGltZW51LWdl bmVyaWMtZXhwcmVzc2lvbgoJICA7OyAodHlwaWNhbGx5IGZ1bmN0aW9ucywgdmFyaWFibGVzIC4u LikuCgkgIChkb2xpc3QgKHBhdCBwYXR0ZXJucykKCSAgICAobGV0ICgobWVudS10aXRsZSAoY2Fy IHBhdCkpCgkJICAocmVnZXhwIChudGggMSBwYXQpKQoJCSAgKGluZGV4IChudGggMiBwYXQpKQoJ CSAgKGZ1bmN0aW9uIChudGggMyBwYXQpKQoJCSAgKHJlc3QgKG50aGNkciA0IHBhdCkpCgkJICBz dGFydCBiZWcpCgkgICAgICA7OyBHbyBiYWNrd2FyZHMgZm9yIGNvbnZlbmllbmNlIG9mIGFkZGlu ZyBpdGVtcyBpbiBvcmRlci4KCSAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1heCkpCgkgICAgICAo d2hpbGUgKGFuZCAoaWYgKGZ1bmN0aW9ucCByZWdleHApCgkJCSAgICAgIChmdW5jYWxsIHJlZ2V4 cCkKCQkJICAgIChhbmQKCQkJICAgICAocmUtc2VhcmNoLWJhY2t3YXJkIHJlZ2V4cCBuaWwgdCkK CQkJICAgICA7OyBEbyBub3QgY291bnQgaW52aXNpYmxlIGRlZmluaXRpb25zLgoJCQkgICAgIChs ZXQgKChpbnZpcyAoaW52aXNpYmxlLXAgKHBvaW50KSkpKQoJCQkgICAgICAgKG9yIChub3QgaW52 aXMpCgkJCQkgICAocHJvZ24KCQkJCSAgICAgKHdoaWxlIChhbmQgaW52aXMKCQkJCQkJIChub3Qg KGJvYnApKSkKCQkJCSAgICAgICAoc2V0cSBpbnZpcyAobm90IChyZS1zZWFyY2gtYmFja3dhcmQK CQkJCQkJCSByZWdleHAgbmlsICdtb3ZlKSkpKQoJCQkJICAgICAobm90IGludmlzKSkpKSkpCgkJ CSAgOzsgRXhpdCB0aGUgbG9vcCBpZiB3ZSBnZXQgYW4gZW1wdHkgbWF0Y2gsCgkJCSAgOzsgYmVj YXVzZSBpdCBtZWFucyBhIGJhZCByZWdleHAgd2FzIHNwZWNpZmllZC4KCQkJICAobm90ICg9ICht YXRjaC1iZWdpbm5pbmcgMCkgKG1hdGNoLWVuZCAwKSkpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgOzsgRG9uJ3QgdGFrZSBhbiBleGNlc3NpdmUgYW1vdW50IG9mIHRpbWUuCiAgICAgICAgICAg ICAgICAgICAgICAgICAgKG9yICg8ICgtIChmbG9hdC10aW1lKSBzdGFydC10aW1lKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbWVudS1tYXgtaW5kZXgtdGltZSkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKG1lc3NhZ2UgImBpbWVudS1tYXgtaW5kZXgtdGltZScgZXhjZWVkZWQiKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG5pbCkpKQoJCShzZXRxIHN0YXJ0IChwb2ludCkpCgkJOzsg UmVjb3JkIHRoZSBzdGFydCBvZiB0aGUgbGluZSBpbiB3aGljaCB0aGUgbWF0Y2ggc3RhcnRzLgoJ CTs7IFRoYXQncyB0aGUgb2ZmaWNpYWwgcG9zaXRpb24gb2YgdGhpcyBkZWZpbml0aW9uLgoJCShn b3RvLWNoYXIgKG1hdGNoLWJlZ2lubmluZyBpbmRleCkpCgkJKGJlZ2lubmluZy1vZi1saW5lKQoJ CShzZXRxIGJlZyAocG9pbnQpKQoJCTs7IEFkZCB0aGlzIHNvcnQgb2Ygc3VibWVudSBvbmx5IHdo ZW4gd2UndmUgZm91bmQgYW4KCQk7OyBpdGVtIGZvciBpdCwgYXZvaWRpbmcgZW1wdHksIGR1ZmYg bWVudXMuCgkJKHVubGVzcyAoYXNzb2MgbWVudS10aXRsZSBpbmRleC1hbGlzdCkKCQkgIChwdXNo IChsaXN0IG1lbnUtdGl0bGUpIGluZGV4LWFsaXN0KSkKCQkoaWYgaW1lbnUtdXNlLW1hcmtlcnMK CQkgICAgKHNldHEgYmVnIChjb3B5LW1hcmtlciBiZWcpKSkKCQkobGV0ICgoaXRlbQoJCSAgICAg ICAoaWYgZnVuY3Rpb24KCQkJICAgKG5jb25jIChsaXN0IChtYXRjaC1zdHJpbmctbm8tcHJvcGVy dGllcyBpbmRleCkKCQkJCQliZWcgZnVuY3Rpb24pCgkJCQkgIHJlc3QpCgkJCSAoY29ucyAobWF0 Y2gtc3RyaW5nLW5vLXByb3BlcnRpZXMgaW5kZXgpCgkJCSAgICAgICBiZWcpKSkKCQkgICAgICA7 OyBUaGlzIGlzIHRoZSBkZXNpcmVkIHN1Ym1lbnUsCgkJICAgICAgOzsgc3RhcnRpbmcgd2l0aCBp dHMgdGl0bGUgKG9yIG5pbCkuCgkJICAgICAgKG1lbnUgKGFzc29jIG1lbnUtdGl0bGUgaW5kZXgt YWxpc3QpKSkKCQkgIDs7IEluc2VydCB0aGUgaXRlbSB1bmxlc3MgaXQgaXMgYWxyZWFkeSBwcmVz ZW50LgoJCSAgKHVubGVzcyAob3IgKG1lbWJlciBpdGVtIChjZHIgbWVudSkpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChhbmQgaW1lbnUtZ2VuZXJpYy1za2lwLWNvbW1lbnRzLWFuZC1z dHJpbmdzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9u CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIHN0YXJ0KSAo bnRoIDggKHN5bnRheC1wcHNzKSkpKSkKCQkgICAgKHNldGNkciBtZW51CgkJCSAgICAoY29ucyBp dGVtIChjZHIgbWVudSkpKSkpCgkJOzsgR28gdG8gdGhlIHN0YXJ0IG9mIHRoZSBtYXRjaCwgdG8g bWFrZSBzdXJlIHdlCgkJOzsga2VlcCBtYWtpbmcgcHJvZ3Jlc3MgYmFja3dhcmRzLgoJCShnb3Rv LWNoYXIgc3RhcnQpKSkpKQogICAgICAoc2V0LXN5bnRheC10YWJsZSBvbGQtdGFibGUpKQogICAg OzsgU29ydCBlYWNoIHN1Ym1lbnUgYnkgcG9zaXRpb24uCiAgICA7OyBUaGlzIGlzIGluIGNhc2Ug b25lIHN1Ym1lbnUgZ2V0cyBpdGVtcyBmcm9tIHR3byBkaWZmZXJlbnQgcmVnZXhwcy4KICAgIChk b2xpc3QgKGl0ZW0gaW5kZXgtYWxpc3QpCiAgICAgICh3aGVuIChsaXN0cCBpdGVtKQoJKHNldGNk ciBpdGVtIChzb3J0IChjZHIgaXRlbSkgJ2ltZW51LS1zb3J0LWJ5LXBvc2l0aW9uKSkpKQogICAg OzsgUmVtb3ZlIGFueSBlbXB0eSBtZW51cy4gIFRoYXQgY2FuIGhhcHBlbiBiZWNhdXNlIG9mIHNr aXBwaW5nCiAgICA7OyB0aGluZ3MgaW5zaWRlIGNvbW1lbnRzIG9yIHN0cmluZ3MuCiAgICAoc2V0 cSBpbmRleC1hbGlzdCAoY2wtZGVsZXRlLWlmCiAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJk YSAoaXQpIChhbmQgKGNvbnNwIGl0KSAobnVsbCAoY2RyIGl0KSkpKQogICAgICAgICAgICAgICAg ICAgICAgIGluZGV4LWFsaXN0KSkKICAgIChsZXQgKChtYWluLWVsZW1lbnQgKGFzc3EgbmlsIGlu ZGV4LWFsaXN0KSkpCiAgICAgIChuY29uYyAoZGVscSBtYWluLWVsZW1lbnQgKGRlbHEgJ2R1bW15 IGluZGV4LWFsaXN0KSkKICAgICAgICAgICAgIChjZHIgbWFpbi1lbGVtZW50KSkpKSkKCjs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 OzsKOzs7Cjs7OyBUaGUgbWFpbiBmdW5jdGlvbnMgZm9yIHRoaXMgcGFja2FnZSEKOzs7Cjs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 OzsKCjs7IFNlZSBhbHNvIGluZm8tbG9va3VwLWZpbmQtaXRlbQooZGVmdW4gaW1lbnUtZmluZC1k ZWZhdWx0IChndWVzcyBjb21wbGV0aW9ucykKICAiRnV6emlseSBmaW5kIGFuIGl0ZW0gYmFzZWQg b24gR1VFU1MgaW5zaWRlIHRoZSBhbGlzdCBDT01QTEVUSU9OUy4iCiAgKGNhdGNoICdmb3VuZAog ICAgKGxldCAoKGNhc2UtZm9sZC1zZWFyY2ggdCkpCiAgICAgIChpZiAoYXNzb2MgZ3Vlc3MgY29t cGxldGlvbnMpIGd1ZXNzCgkoZG9saXN0IChyZSAobGlzdCAoY29uY2F0ICJcXGAiIChyZWdleHAt cXVvdGUgZ3Vlc3MpICJcXCciKQoJCQkgIChjb25jYXQgIlxcYCIgKHJlZ2V4cC1xdW90ZSBndWVz cykpCgkJCSAgKGNvbmNhdCAocmVnZXhwLXF1b3RlIGd1ZXNzKSAiXFwnIikKCQkJICAocmVnZXhw LXF1b3RlIGd1ZXNzKSkpCgkgIChkb2xpc3QgKHggY29tcGxldGlvbnMpCgkgICAgKGlmIChzdHJp bmctbWF0Y2ggcmUgKGNhciB4KSkgKHRocm93ICdmb3VuZCAoY2FyIHgpKSkpKSkpKSkKCihkZWZ1 biBpbWVudS0tY29tcGxldGlvbi1idWZmZXIgKGluZGV4LWFsaXN0ICZvcHRpb25hbCBwcm9tcHQp CiAgIkxldCB0aGUgdXNlciBzZWxlY3QgZnJvbSBJTkRFWC1BTElTVCBpbiBhIGNvbXBsZXRpb24g YnVmZmVyIHdpdGggUFJPTVBULgoKUmV0dXJuIG9uZSBvZiB0aGUgZW50cmllcyBpbiBpbmRleC1h bGlzdCBvciBuaWwuIgogIDs7IENyZWF0ZSBhIGxpc3QgZm9yIHRoaXMgYnVmZmVyIG9ubHkgd2hl biBuZWVkZWQuCiAgKGxldCAoKG5hbWUgKHRoaW5nLWF0LXBvaW50ICdzeW1ib2wpKQoJY2hvaWNl CgkocHJlcGFyZWQtaW5kZXgtYWxpc3QKCSAoaWYgKG5vdCBpbWVudS1zcGFjZS1yZXBsYWNlbWVu dCkgaW5kZXgtYWxpc3QKCSAgIChtYXBjYXIKCSAgICAobGFtYmRhIChpdGVtKQoJICAgICAgKGNv bnMgKHN1YnN0LWNoYXItaW4tc3RyaW5nID9ccyAoYXJlZiBpbWVudS1zcGFjZS1yZXBsYWNlbWVu dCAwKQoJCQkJCSAgKGNhciBpdGVtKSkKCQkgICAgKGNkciBpdGVtKSkpCgkgICAgaW5kZXgtYWxp c3QpKSkpCiAgICAod2hlbiAoc3RyaW5ncCBuYW1lKQogICAgICAoc2V0cSBuYW1lIChvciAoaW1l bnUtZmluZC1kZWZhdWx0IG5hbWUgcHJlcGFyZWQtaW5kZXgtYWxpc3QpIG5hbWUpKSkKICAgICh1 bmxlc3MgcHJvbXB0CiAgICAgIChzZXRxIHByb21wdCAoZm9ybWF0LXByb21wdAogICAgICAgICAg ICAgICAgICAgICJJbmRleCBpdGVtIgoJICAgICAgICAgICAgKGFuZCBuYW1lCiAgICAgICAgICAg ICAgICAgICAgICAgICAoaW1lbnUtLWluLWFsaXN0IG5hbWUgcHJlcGFyZWQtaW5kZXgtYWxpc3Qp CiAgICAgICAgICAgICAgICAgICAgICAgICA7OyBEZWZhdWx0IHRvIGBuYW1lJyBpZiBpdCdzIGlu IHRoZSBhbGlzdC4KICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUpKSkpCiAgICA7OyBEaXNw bGF5IHRoZSBjb21wbGV0aW9uIGJ1ZmZlci4KICAgIChtaW5pYnVmZmVyLXdpdGgtc2V0dXAtaG9v awogICAgICAgIChsYW1iZGEgKCkKICAgICAgICAgIChzZXRxLWxvY2FsIG1pbmlidWZmZXItYWxs b3ctdGV4dC1wcm9wZXJ0aWVzIHQpCiAgICAgICAgICAoc2V0cS1sb2NhbCBjb21wbGV0aW9uLWV4 dHJhLXByb3BlcnRpZXMKICAgICAgICAgICAgICAgICAgICAgIGAoIDpjYXRlZ29yeSBpbWVudQog ICAgICAgICAgICAgICAgICAgICAgICAgLEAod2hlbiAoZXEgaW1lbnUtZmxhdHRlbiAnYW5ub3Rh dGlvbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgKDphbm5vdGF0aW9uLWZ1bmN0aW9u CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsKGxhbWJkYSAocykgKGdldC10ZXh0LXBy b3BlcnR5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgJ2lt ZW51LXNlY3Rpb24gcykpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICxAKHdoZW4gKGVxIGlt ZW51LWZsYXR0ZW4gJ2dyb3VwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAoOmdyb3Vw LWZ1bmN0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsKGxhbWJkYSAocyB0cmFu c2Zvcm0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgdHJhbnNmb3JtIHMK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdldC10ZXh0LXByb3BlcnR5CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwICdpbWVudS1zZWN0aW9uIHMpKSkp KSkpCiAgICAgICAgICAodW5sZXNzIGltZW51LWVhZ2VyLWNvbXBsZXRpb24tYnVmZmVyCiAgICAg ICAgICAgIChtaW5pYnVmZmVyLWNvbXBsZXRpb24taGVscCkpKQogICAgICAoc2V0cSBuYW1lIChj b21wbGV0aW5nLXJlYWQgcHJvbXB0CgkJCQkgIHByZXBhcmVkLWluZGV4LWFsaXN0CgkJCQkgIG5p bCB0IG5pbCAnaW1lbnUtLWhpc3RvcnktbGlzdCBuYW1lKSkpCgogICAgKHdoZW4gKHN0cmluZ3Ag bmFtZSkKICAgICAgKG9yIChnZXQtdGV4dC1wcm9wZXJ0eSAwICdpbWVudS1jaG9pY2UgbmFtZSkK CSAgKHByb2duCgkgICAgKHNldHEgY2hvaWNlIChhc3NvYyBuYW1lIHByZXBhcmVkLWluZGV4LWFs aXN0KSkKCSAgICAoaWYgKGltZW51LS1zdWJhbGlzdC1wIGNob2ljZSkKCQkoaW1lbnUtLWNvbXBs ZXRpb24tYnVmZmVyIChjZHIgY2hvaWNlKSBwcm9tcHQpCgkgICAgICBjaG9pY2UpKSkpKSkKCihk ZWZ1biBpbWVudS0tbW91c2UtbWVudSAoaW5kZXgtYWxpc3QgZXZlbnQgJm9wdGlvbmFsIHRpdGxl KQogICJMZXQgdGhlIHVzZXIgc2VsZWN0IGZyb20gYSBidWZmZXIgaW5kZXggZnJvbSBhIG1vdXNl IG1lbnUuCgpJTkRFWC1BTElTVCBpcyB0aGUgYnVmZmVyIGluZGV4IGFuZCBFVkVOVCBpcyBhIG1v dXNlIGV2ZW50LgoKUmV0dXJucyB0IGZvciByZXNjYW4gYW5kIG90aGVyd2lzZSBhbiBlbGVtZW50 IG9yIHN1YmVsZW1lbnQgb2YgSU5ERVgtQUxJU1QuIgogIChzZXRxIGluZGV4LWFsaXN0IChpbWVu dS0tc3BsaXQtc3VibWVudXMgaW5kZXgtYWxpc3QpKQogIChsZXQqICgobWVudSAoaW1lbnUtLXNw bGl0LW1lbnUgaW5kZXgtYWxpc3QgKG9yIHRpdGxlIChidWZmZXItbmFtZSkpKSkKCSAobWFwIChp bWVudS0tY3JlYXRlLWtleW1hcCAoY2FyIG1lbnUpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChjZHIgKGlmIChhbmQgKG51bGwgKGNkZHIgbWVudSkpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZ3AgKGNhYWRyIG1lbnUp KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25z cCAoY2RhZHIgbWVudSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoY2FkciBtZW51KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbWVudSkpKSkpCiAgICAocG9wdXAtbWVudSBtYXAgZXZlbnQpKSkKCihkZWZ1biBpbWVudS0t ZmxhdHRlbi1pbmRleC1hbGlzdCAoaW5kZXgtYWxpc3QgJm9wdGlvbmFsIGNvbmNhdC1uYW1lcyBw cmVmaXgpCiAgOzsgVGFrZXMgYSBuZXN0ZWQgSU5ERVgtQUxJU1QgYW5kIHJldHVybnMgYSBmbGF0 IGluZGV4IGFsaXN0LgogIDs7IElmIG9wdGlvbmFsIENPTkNBVC1OQU1FUyBpcyBub24tbmlsLCB0 aGVuIGEgbmVzdGVkIGluZGV4IGhhcyBpdHMKICA7OyBuYW1lIGFuZCBhIHNwYWNlIGNvbmNhdGVu YXRlZCB0byB0aGUgbmFtZXMgb2YgdGhlIGNoaWxkcmVuLgogIDs7IFRoaXJkIGFyZ3VtZW50IFBS RUZJWCBpcyBmb3IgaW50ZXJuYWwgdXNlIG9ubHkuCiAgKG1hcGNhbgogICAobGFtYmRhIChpdGVt KQogICAgIChsZXQqICgobmFtZSAoY2FyIGl0ZW0pKQoJICAgIChwb3MgKGNkciBpdGVtKSkKCSAg ICAobmV3LXByZWZpeCAoYW5kIGNvbmNhdC1uYW1lcwoJCQkgICAgIChpZiBwcmVmaXgKCQkJCSAo Y29uY2F0IHByZWZpeCBpbWVudS1sZXZlbC1zZXBhcmF0b3IgbmFtZSkKCQkJICAgICAgIG5hbWUp KSkpCiAgICAgICAoY29uZAoJKChub3QgKGltZW51LS1zdWJhbGlzdC1wIGl0ZW0pKQoJIChsaXN0 IChjb25zIChwY2FzZSBpbWVudS1mbGF0dGVuCiAgICAgICAgICAgICAgICAgICAgICAgKCdhbm5v dGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgIChpZiBwcmVmaXgKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChwcm9wZXJ0aXplIG5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICdpbWVudS1zZWN0aW9uIChmb3JtYXQgIiAoJXMpIiBwcmVmaXgpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1lbnUtY2hvaWNlIGl0ZW0pCiAg ICAgICAgICAgICAgICAgICAgICAgICAgKHByb3BlcnRpemUgbmV3LXByZWZpeCAnaW1lbnUtY2hv aWNlIGl0ZW0pKSkKICAgICAgICAgICAgICAgICAgICAgICAoJ2dyb3VwIChwcm9wZXJ0aXplIG5h bWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbWVudS1zZWN0 aW9uIChvciBwcmVmaXggIioiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ2ltZW51LWNob2ljZSBpdGVtKSkKICAgICAgICAgICAgICAgICAgICAgICAoXyBuZXct cHJlZml4KSkKCQkgICAgIHBvcykpKQoJKHQKCSAoaW1lbnUtLWZsYXR0ZW4taW5kZXgtYWxpc3Qg cG9zIGNvbmNhdC1uYW1lcyBuZXctcHJlZml4KSkpKSkKICAgaW5kZXgtYWxpc3QpKQoKKGRlZnVu IGltZW51LWNob29zZS1idWZmZXItaW5kZXggKCZvcHRpb25hbCBwcm9tcHQgYWxpc3QpCiAgIkxl dCB0aGUgdXNlciBzZWxlY3QgZnJvbSBhIGJ1ZmZlciBpbmRleCBhbmQgcmV0dXJuIHRoZSBjaG9z ZW4gaW5kZXguCgpJZiB0aGUgdXNlciBvcmlnaW5hbGx5IGFjdGl2YXRlZCB0aGlzIGZ1bmN0aW9u IHdpdGggdGhlIG1vdXNlLCBhIG1vdXNlCm1lbnUgaXMgdXNlZC4gIE90aGVyd2lzZSBhIGNvbXBs ZXRpb24gYnVmZmVyIGlzIHVzZWQgYW5kIHRoZSB1c2VyIGlzCnByb21wdGVkIHdpdGggUFJPTVBU LgoKSWYgeW91IGNhbGwgdGhpcyBmdW5jdGlvbiB3aXRoIGluZGV4IGFsaXN0IEFMSVNULCB0aGVu IGl0IGxldHMgdGhlIHVzZXIKc2VsZWN0IGZyb20gQUxJU1QuCgpXaXRoIG5vIGluZGV4IGFsaXN0 IEFMSVNULCBpdCBjYWxscyBgaW1lbnUtLW1ha2UtaW5kZXgtYWxpc3QnIHRvCmNyZWF0ZSB0aGUg aW5kZXggYWxpc3QuCgpJZiBgaW1lbnUtdXNlLXBvcHVwLW1lbnUnIGlzIG5pbCwgdGhlbiB0aGUg Y29tcGxldGlvbiBidWZmZXIKaXMgYWx3YXlzIHVzZWQsIG5vIG1hdHRlciBpZiB0aGUgbW91c2Ug d2FzIHVzZWQgb3Igbm90LgoKVGhlIHJldHVybmVkIHZhbHVlIGlzIG9mIHRoZSBmb3JtIChJTkRF WC1OQU1FIC4gSU5ERVgtUE9TSVRJT04pLiIKICAobGV0IChpbmRleC1hbGlzdAoJKG1vdXNlLXRy aWdnZXJlZCAobGlzdHAgbGFzdC1ub25tZW51LWV2ZW50KSkKCShyZXN1bHQgdCkpCiAgICA7OyBJ ZiBzZWxlY3RlZCBieSBtb3VzZSwgc2VlIHRvIHRoYXQgdGhlIHdpbmRvdyB3aGVyZSB0aGUgbW91 c2UgaXMKICAgIDs7IHJlYWxseSBpcyBzZWxlY3RlZC4KICAgIChhbmQgbW91c2UtdHJpZ2dlcmVk CgkgKG5vdCAoZXF1YWwgbGFzdC1ub25tZW51LWV2ZW50ICcobWVudS1iYXIpKSkKCSAobGV0ICgo d2luZG93IChwb3NuLXdpbmRvdyAoZXZlbnQtc3RhcnQgbGFzdC1ub25tZW51LWV2ZW50KSkpKQoJ ICAgKG9yIChmcmFtZXAgd2luZG93KSAobnVsbCB3aW5kb3cpIChzZWxlY3Qtd2luZG93IHdpbmRv dykpKSkKICAgIDs7IENyZWF0ZSBhIGxpc3QgZm9yIHRoaXMgYnVmZmVyIG9ubHkgd2hlbiBuZWVk ZWQuCiAgICAod2hpbGUgKGVxIHJlc3VsdCB0KQogICAgICAoc2V0cSBpbmRleC1hbGlzdCAoaWYg YWxpc3QgYWxpc3QgKGltZW51LS1tYWtlLWluZGV4LWFsaXN0KSkpCiAgICAgICh3aGVuIGltZW51 LWZsYXR0ZW4KICAgICAgICAoc2V0cSBpbmRleC1hbGlzdCAoaW1lbnUtLWZsYXR0ZW4taW5kZXgt YWxpc3QgaW5kZXgtYWxpc3QgdCkpKQogICAgICAoc2V0cSByZXN1bHQKCSAgICAoaWYgKGFuZCBp bWVudS11c2UtcG9wdXAtbWVudQoJCSAgICAgKG9yIChlcSBpbWVudS11c2UtcG9wdXAtbWVudSB0 KSBtb3VzZS10cmlnZ2VyZWQpKQoJCShpbWVudS0tbW91c2UtbWVudSBpbmRleC1hbGlzdCBsYXN0 LW5vbm1lbnUtZXZlbnQpCgkgICAgICAoaW1lbnUtLWNvbXBsZXRpb24tYnVmZmVyIGluZGV4LWFs aXN0IHByb21wdCkpKQogICAgICAoYW5kIChlcXVhbCByZXN1bHQgaW1lbnUtLXJlc2Nhbi1pdGVt KQoJICAgKGltZW51LS1jbGVhbnVwKQoJICAgKHNldHEgcmVzdWx0IHQgaW1lbnUtLWluZGV4LWFs aXN0IG5pbCkpKQogICAgcmVzdWx0KSkKCihkZWZ2YXItbG9jYWwgaW1lbnUtLW1lbnViYXIta2V5 bWFwIG5pbCkKCjs7OyMjI2F1dG9sb2FkCihkZWZ1biBpbWVudS1hZGQtdG8tbWVudWJhciAobmFt ZSkKICAiQWRkIGFuIGBpbWVudScgZW50cnkgdG8gdGhlIG1lbnUgYmFyIGZvciB0aGUgY3VycmVu dCBidWZmZXIuCk5BTUUgaXMgYSBzdHJpbmcgdXNlZCB0byBuYW1lIHRoZSBtZW51IGJhciBpdGVt LgpTZWUgdGhlIGNvbW1hbmQgYGltZW51JyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iCiAgKGludGVy YWN0aXZlICJzSW1lbnUgbWVudSBpdGVtIG5hbWU6ICIpCiAgKGlmIChvciAoYW5kIGltZW51LXBy ZXYtaW5kZXgtcG9zaXRpb24tZnVuY3Rpb24KCSAgICAgICBpbWVudS1leHRyYWN0LWluZGV4LW5h bWUtZnVuY3Rpb24pCgkgIGltZW51LWdlbmVyaWMtZXhwcmVzc2lvbgoJICAobm90IChlcSBpbWVu dS1jcmVhdGUtaW5kZXgtZnVuY3Rpb24KCQkgICAnaW1lbnUtZGVmYXVsdC1jcmVhdGUtaW5kZXgt ZnVuY3Rpb24pKSkKICAgICAgKHVubGVzcyAoYW5kIChjdXJyZW50LWxvY2FsLW1hcCkKICAgICAg ICAgICAgICAgICAgIChrZXltYXBwIChsb29rdXAta2V5IChjdXJyZW50LWxvY2FsLW1hcCkgW21l bnUtYmFyIGluZGV4XSkpKQoJKGxldCAoKG5ld21hcCAobWFrZS1zcGFyc2Uta2V5bWFwKSkpCgkg IChzZXQta2V5bWFwLXBhcmVudCBuZXdtYXAgKGN1cnJlbnQtbG9jYWwtbWFwKSkKCSAgKHNldHEg aW1lbnUtLWxhc3QtbWVudWJhci1pbmRleC1hbGlzdCBuaWwpCiAgICAgICAgICAoc2V0cSBpbWVu dS0tbWVudWJhci1rZXltYXAgKG1ha2Utc3BhcnNlLWtleW1hcCAiSW1lbnUiKSkKCSAgKGRlZmlu ZS1rZXkgbmV3bWFwIFttZW51LWJhciBpbmRleF0KCSAgICBgKG1lbnUtaXRlbSAsbmFtZSAsaW1l bnUtLW1lbnViYXIta2V5bWFwKSkKCSAgKHVzZS1sb2NhbC1tYXAgbmV3bWFwKQoJICAoYWRkLWhv b2sgJ21lbnUtYmFyLXVwZGF0ZS1ob29rICdpbWVudS11cGRhdGUtbWVudWJhcikpKQogICAgKGlt ZW51LXVuYXZhaWxhYmxlLWVycm9yICJUaGUgbW9kZSBgJXMnIGRvZXMgbm90IHN1cHBvcnQgSW1l bnUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdC1tb2RlLWxpbmUgbW9kZS1u YW1lKSkpKQoKOzs7IyMjYXV0b2xvYWQKKGRlZnVuIGltZW51LWFkZC1tZW51YmFyLWluZGV4ICgp CiAgIkFkZCBhbiBJbWVudSBcIkluZGV4XCIgZW50cnkgb24gdGhlIG1lbnUgYmFyIGZvciB0aGUg Y3VycmVudCBidWZmZXIuCgpBIHRyaXZpYWwgaW50ZXJmYWNlIHRvIGBpbWVudS1hZGQtdG8tbWVu dWJhcicgc3VpdGFibGUgZm9yIHVzZSBpbiBhIGhvb2suIgogIChpbnRlcmFjdGl2ZSkKICAoaW1l bnUtYWRkLXRvLW1lbnViYXIgIkluZGV4IikpCgooZGVmdmFyLWxvY2FsIGltZW51LW1lbnViYXIt bW9kaWZpZWQtdGljayAwCiAgIlZhbHVlIG9mIChidWZmZXItY2hhcnMtbW9kaWZpZWQtdGljaykg d2hlbiBgaW1lbnUtdXBkYXRlLW1lbnViYXInIHdhcyBjYWxsZWQuIikKCihkZWZ1biBpbWVudS11 cGRhdGUtbWVudWJhciAoKQogICh3aGVuIChhbmQgKGN1cnJlbnQtbG9jYWwtbWFwKQogICAgICAg ICAgICAgaW1lbnUtLW1lbnViYXIta2V5bWFwCgkgICAgICgvPSAoYnVmZmVyLWNoYXJzLW1vZGlm aWVkLXRpY2spIGltZW51LW1lbnViYXItbW9kaWZpZWQtdGljaykpCiAgICAoc2V0cSBpbWVudS1t ZW51YmFyLW1vZGlmaWVkLXRpY2sgKGJ1ZmZlci1jaGFycy1tb2RpZmllZC10aWNrKSkKICAgIChs ZXQgKChpbmRleC1hbGlzdCAoaW1lbnUtLW1ha2UtaW5kZXgtYWxpc3QgdCkpKQogICAgICA7OyBE b24ndCBib3RoZXIgdXBkYXRpbmcgaWYgdGhlIGluZGV4LWFsaXN0IGhhcyBub3QgY2hhbmdlZAog ICAgICA7OyBzaW5jZSB0aGUgbGFzdCB0aW1lIHdlIGRpZCBpdC4KICAgICAgKHVubGVzcyAoZXF1 YWwgaW5kZXgtYWxpc3QgaW1lbnUtLWxhc3QtbWVudWJhci1pbmRleC1hbGlzdCkKICAgICAgICAo c2V0cSBpbWVudS0tbGFzdC1tZW51YmFyLWluZGV4LWFsaXN0IGluZGV4LWFsaXN0KQogICAgICAg IChzZXRxIGluZGV4LWFsaXN0IChpbWVudS0tc3BsaXQtc3VibWVudXMgaW5kZXgtYWxpc3QpKQoJ KGxldCogKChtZW51IChpbWVudS0tc3BsaXQtbWVudSBpbmRleC1hbGlzdAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ1ZmZlci1uYW1lKSkpCiAgICAgICAgICAgICAg IChtZW51MSAoaW1lbnUtLWNyZWF0ZS1rZXltYXAKICAgICAgICAgICAgICAgICAgICAgICAoY2Fy IG1lbnUpCiAgICAgICAgICAgICAgICAgICAgICAgKGNkciAoaWYgKGFuZCAobnVsbCAoY2RkciBt ZW51KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmdwIChjYWFk ciBtZW51KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zcCAoY2Rh ZHIgbWVudSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYWRyIG1lbnUpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbnUpKQogICAgICAgICAgICAgICAgICAgICAg ICdpbWVudS0tbWVudWJhci1zZWxlY3QpKSkKCSAgKHNldGNkciBpbWVudS0tbWVudWJhci1rZXlt YXAgKGNkciBtZW51MSkpKSkpKSkKCihkZWZ1biBpbWVudS0tbWVudWJhci1zZWxlY3QgKGl0ZW0p CiAgIlVzZSBJbWVudSB0byBzZWxlY3QgdGhlIGZ1bmN0aW9uIG9yIHZhcmlhYmxlIG5hbWVkIGlu IHRoaXMgbWVudSBJVEVNLiIKICAoaWYgKGVxdWFsIGl0ZW0gaW1lbnUtLXJlc2Nhbi1pdGVtKQog ICAgICAocHJvZ24KCShpbWVudS0tY2xlYW51cCkKCTs7IE1ha2Ugc3VyZSBpbWVudS11cGRhdGUt bWVudWJhciByZWRvZXMgZXZlcnl0aGluZy4KCShzZXRxIGltZW51LW1lbnViYXItbW9kaWZpZWQt dGljayAtMSkKCShzZXRxIGltZW51LS1pbmRleC1hbGlzdCBuaWwpCgkoc2V0cSBpbWVudS0tbGFz dC1tZW51YmFyLWluZGV4LWFsaXN0IG5pbCkKCShpbWVudS11cGRhdGUtbWVudWJhcikKCXQpCiAg ICAoaW1lbnUgaXRlbSkKICAgIG5pbCkpCgooZGVmdW4gaW1lbnUtZGVmYXVsdC1nb3RvLWZ1bmN0 aW9uIChfbmFtZSBwb3NpdGlvbiAmcmVzdCBfcmVzdCkKICAiTW92ZSB0byB0aGUgZ2l2ZW4gcG9z aXRpb24uCgpOQU1FIGlzIGlnbm9yZWQuICBQT1NJVElPTiBpcyB3aGVyZSB0byBtb3ZlLiAgUkVT VCBpcyBhbHNvIGlnbm9yZWQuClRoZSBpZ25vcmVkIGFyZ3MganVzdCBtYWtlIHRoaXMgZnVuY3Rp b24gaGF2ZSB0aGUgc2FtZSBpbnRlcmZhY2UgYXMgYQpmdW5jdGlvbiBwbGFjZWQgaW4gYSBzcGVj aWFsIGluZGV4LWl0ZW0uIgogIChpZiAob3IgKDwgcG9zaXRpb24gKHBvaW50LW1pbikpCgkgICg+ IHBvc2l0aW9uIChwb2ludC1tYXgpKSkKICAgICAgOzsgV2lkZW4gaWYgb3V0c2lkZSBuYXJyb3dp bmcuCiAgICAgICh3aWRlbikpCiAgKGdvdG8tY2hhciBwb3NpdGlvbikpCgo7OzsjIyNhdXRvbG9h ZAooZGVmdW4gaW1lbnUgKGluZGV4LWl0ZW0pCiAgIkp1bXAgdG8gYSBwbGFjZSBpbiB0aGUgYnVm ZmVyIGNob3NlbiB1c2luZyBhIGJ1ZmZlciBtZW51IG9yIG1vdXNlIG1lbnUuCklOREVYLUlURU0g c3BlY2lmaWVzIHRoZSBwb3NpdGlvbi4gIFNlZSBgaW1lbnUtY2hvb3NlLWJ1ZmZlci1pbmRleCcK Zm9yIG1vcmUgaW5mb3JtYXRpb24uIgogIChpbnRlcmFjdGl2ZSAobGlzdCAoaW1lbnUtY2hvb3Nl LWJ1ZmZlci1pbmRleCkpKQogIDs7IENvbnZlcnQgYSBzdHJpbmcgdG8gYW4gYWxpc3QgZWxlbWVu dC4KICAoaWYgKHN0cmluZ3AgaW5kZXgtaXRlbSkKICAgICAgKHNldHEgaW5kZXgtaXRlbSAoYXNz b2MgaW5kZXgtaXRlbSAoaW1lbnUtLW1ha2UtaW5kZXgtYWxpc3QpKSkpCiAgKHdoZW4gaW5kZXgt aXRlbQogICAgKHBjYXNlIGluZGV4LWl0ZW0KICAgICAgKGAoLG5hbWUgLHBvcyAsZm4gLiAsYXJn cykKICAgICAgIChwdXNoLW1hcmsgbmlsIHQpCiAgICAgICAoYXBwbHkgZm4gbmFtZSBwb3MgYXJn cykKICAgICAgIChydW4taG9va3MgJ2ltZW51LWFmdGVyLWp1bXAtaG9vaykpCiAgICAgIChgKCxu YW1lIC4gLHBvcykgKGltZW51IChsaXN0IG5hbWUgcG9zIGltZW51LWRlZmF1bHQtZ290by1mdW5j dGlvbikpKQogICAgICAoXyAoZXJyb3IgIlVua25vd24gaW1lbnUgaXRlbTogJVMiIGluZGV4LWl0 ZW0pKSkpKQoKKGRlZnVuIGltZW51LWZsdXNoLWNhY2hlICgpCiAgIkZsdXNoIHRoZSBjdXJyZW50 IGltZW51IGNhY2hlLgpUaGlzIGZvcmNlcyBhIGZ1bGwgcmVzY2FuIG9mIHRoZSBidWZmZXIgdG8g cmVjcmVhdGUgdGhlIGluZGV4IGFsaXN0Cm5leHQgdGltZSBgaW1lbnUnIGlzIGludm9rZWQuIgog IChpbWVudS0tY2xlYW51cCkKICAoc2V0cSBpbWVudS0taW5kZXgtYWxpc3QgbmlsKSkKCihwcm92 aWRlICdpbWVudSkKCjs7OyBpbWVudS5lbCBlbmRzIGhlcmUK --_003_DS7PR10MB5232448EFE09567BFF3E0ECDF346ADS7PR10MB5232namp_-- From debbugs-submit-bounces@debbugs.gnu.org Fri Jul 04 12:46:29 2025 Received: (at 78935) by debbugs.gnu.org; 4 Jul 2025 16:46:30 +0000 Received: from localhost ([127.0.0.1]:34513 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uXjYT-0002tT-GN for submit@debbugs.gnu.org; Fri, 04 Jul 2025 12:46:29 -0400 Received: from mx0b-00069f02.pphosted.com ([205.220.177.32]:25432) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uXjYQ-0002sy-4B for 78935@debbugs.gnu.org; Fri, 04 Jul 2025 12:46:27 -0400 Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5649Yvgc000365 for <78935@debbugs.gnu.org>; Fri, 4 Jul 2025 16:46:25 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h= content-type:date:from:in-reply-to:message-id:mime-version :references:subject:to; s=corp-2025-04-25; bh=FfXQ2xjItLAgEQDoAG qCp/t/9E6Ai/OwFXYBTWdD2mk=; b=GhqsCjyJ0TLHnYfHCJAP79VgntiaKYz/oA tX1jaDUmNVpUqV2sDcj3W+DXS/on/3x+dICm781h9qxDxSq3QB2lJZTEBbJYErBG 2vgxN+xlSM9wDFEc4MiVaMwfdzqntkW+fet/FhcMb6MG2pY+ySpZ2LAyMB7We74u d+y9atojf8hairHD4jQubzE3pnD0w0r8GOSirDeqV/H4LHSI5oWq8J9oq6z1O3N1 Q9yjki+kPRHaWadhTd0+0Oq+l2v3qINvfqelE/VVjvlQ52OaOjejrxYtLSeTzwBh /dk9U//w63yFHPHVwzRZOGOlzcWq3QJFCR3uApzkY3KeBKpvCTiQ== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 47j80wayau-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for <78935@debbugs.gnu.org>; Fri, 04 Jul 2025 16:46:24 +0000 (GMT) Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 564EKOJq024205 for <78935@debbugs.gnu.org>; Fri, 4 Jul 2025 16:46:24 GMT Received: from nam04-dm6-obe.outbound.protection.outlook.com (mail-dm6nam04on2075.outbound.protection.outlook.com [40.107.102.75]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 47jy1jsdee-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for <78935@debbugs.gnu.org>; Fri, 04 Jul 2025 16:46:24 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=QecWVFE87TtcBqeVew/w3b16wg9OE3xeo6UOMfLE6m1U+NhWfM8c3lzLjmaAwr/Z98d+GaSppNCjHOvnbVqi1Jv5bYJD9IKENz8ORl7lHlyERdDpTwgHrDIo7LClvmQyLTPYOPgUt2Gz7eujMp+fOt37YGlqBJtWynOe126+VPvipyR9qvuV4tzQr3Kfs1XYJc0zeatD2an0pDMzoTuU9bgv4aHL6islha788tnbDQNtXsXbh0vOcXoxH6qy3hpcEefQxGXlixsmDJ1gvS0QPtjI7Xt+8IMIGCTI6mz8/TqjHA374j9fxj/GnP0mh7CoqzDtZ7NedFQNqP2TaLsSUQ== 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=FfXQ2xjItLAgEQDoAGqCp/t/9E6Ai/OwFXYBTWdD2mk=; b=VNX6vly7+68+iG4raL+V9yzj0xVuo7KSJJaf0Cv/unXxh95pGvZEuB6rKR4FucZd03YSV7ZaUweRbwJ9bj2IKBKeYw/8hYFzCeV6Q9YvVeP/aOCpCj6P7xyORkbU1blpAYiaFkFH+/1JaX+9moQ8uk5FAslBaw+SCMv9j5XikAquii1QVN6j6dQIxCCL86r1pSWDANqgS8Bx7/kxNpmHEuFTSNBbk3bit5GN3J6z+9rOO68TEAQLA+fV0f/GfBeYMEW6Ez2EMpNTw00IPzvgcOe1GL2V6pAnopcnvLolgI9MO5Ni4baBbgy66/u73OSZS4OYmGT6fNifYyLCbc68aA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=FfXQ2xjItLAgEQDoAGqCp/t/9E6Ai/OwFXYBTWdD2mk=; b=keqbzfpKx81D4MF0o+iOPdUDQ3kLuVWKzf9c1hC8ffus8SbvLEwZlbFFw4XBoGsop0VVDJmJps1VCcKKAMEQr0h+ndxj50runeKMZdDxx6Bn4gwWXvlFVsGCeYaKuGKaIpA+f40VGUMFe8q+LfKqW2aacktq50HW+zUq5TaWM5I= Received: from DS7PR10MB5232.namprd10.prod.outlook.com (2603:10b6:5:3aa::24) by PH7PR10MB5723.namprd10.prod.outlook.com (2603:10b6:510:127::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.29; Fri, 4 Jul 2025 16:46:21 +0000 Received: from DS7PR10MB5232.namprd10.prod.outlook.com ([fe80::8303:658f:14f8:2324]) by DS7PR10MB5232.namprd10.prod.outlook.com ([fe80::8303:658f:14f8:2324%7]) with mapi id 15.20.8901.021; Fri, 4 Jul 2025 16:46:21 +0000 From: Drew Adams To: Drew Adams , "78935@debbugs.gnu.org" <78935@debbugs.gnu.org> Subject: RE: [External] : bug#78935: 30.1.90; [PATCH] Let Imenu optionally allow duplicate menu entries Thread-Topic: [External] : bug#78935: 30.1.90; [PATCH] Let Imenu optionally allow duplicate menu entries Thread-Index: AdvqC+3YmiMaBKVfSKq1TWa3P0FHVwC9tXjg Date: Fri, 4 Jul 2025 16:46:21 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DS7PR10MB5232:EE_|PH7PR10MB5723:EE_ x-ms-office365-filtering-correlation-id: 3f116789-16fe-4f4c-07b0-08ddbb1a4e4c x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|366016|376014|4053099003|38070700018; x-microsoft-antispam-message-info: =?us-ascii?Q?AlW9cY5hTh1PTNbKes0AZTy3SVHMn/YyI31Dle97VjuSzYQjhfsO308gZM6d?= =?us-ascii?Q?b9EiycFT44q87miLAWsXBSJnxWSNKyLCSox/ABskosgxGV3bt9Tdq3EPrds3?= =?us-ascii?Q?+OAjZCto/Kvcr7sBv3mG5N6jGVdIhhYGbScUE3MDoVi+Kje+tdu9ahsYpK1P?= =?us-ascii?Q?yuL1ziDZaacTIj0WhHZrtoSicFMy+RIqnpV6iuA/7uu3hy+1234BW5OppKgJ?= =?us-ascii?Q?jYbPoXcFK4KJ16+yj3cybGvdCl2wX+tb2cdZKiXOKEigq1tkO+c/Y2ur1GvG?= =?us-ascii?Q?JVCIE8nppodeSj1X/d2yXoloL4bH/OTsD/HwkCoWlDWlQxtHfI4loiPw4Wsm?= =?us-ascii?Q?RuZOm4LVARVBPXnE29txxKJBvmVFcoffOrwvQmtZn1r2KkXueSoP1N002H1f?= =?us-ascii?Q?Oz1P0zXHvfo/EnGmIMAuWZ3bmOknEVw5B3a2C4HVEtuLSfSeOTOA1gu2rZdt?= =?us-ascii?Q?Ro97yRSrrpsDY/h2TzvCmeilC8wi+miRnoo7jHE4AN1LRMIYaX97h09mfRQe?= =?us-ascii?Q?xHgn/Mzf5KpPokEHqMeAj4s+fTQpjB0YoDpB5P5w9l0mmgCOt7vCw5FLukvK?= =?us-ascii?Q?XFl6jabNHhf2cAw2bBvcX9gTvu5ACDhYaztL/ZMtp5sJcbfuqxab5M0QplSZ?= =?us-ascii?Q?JInhscnJDwldmvS0dmQqI32cWUJa+usyi98xiRWwTLjDzmjRCJwVB4iNvuYr?= =?us-ascii?Q?H9PX6T+YUmRSKE0up302Uwb5iQfF4Vk12l5zR3aDQ3tmC5czo4Fo0C/w7G9l?= =?us-ascii?Q?TJjfo9BirU8zyUwlMdxGDwlp6LnajyDzr+6RuzB/tUWKmDm+n4VAh90i8ZkL?= =?us-ascii?Q?5jVvjkICQhr0aY10G1k9NBYtKbICYPOii5qhJP1Jc/Fr3vXQaAnyWbNLKZxK?= =?us-ascii?Q?9W0y2WMemMoDckNKUolIIxi8q1lL3YxUnVuWmOGvLjs1Tlgl0w8l93Nyl9ft?= =?us-ascii?Q?r8LGd8GS+aQLzM5eP3TeKfWdDg+KVF8eRmLff78PainUQbpN57kVbyW6csy4?= =?us-ascii?Q?JqII2v3/UE4B+9QlTjW1SL2eHxRJtPYiCOPZKh/p8jHKhb5d7qLpd4vNRrNv?= =?us-ascii?Q?mTy1AeMRlwIxxaIxP6f5Td4FXT8qRZk+IBA/YkQUWGtO7ZcxrKZ/VNzR4Cn0?= =?us-ascii?Q?LyKFBmhtrSnbT4hz0+L01nnBTPSuD2PQLk3rLjndyMKM0k/lGxlZGvhfMIcQ?= =?us-ascii?Q?Iw4tb1JyGSN+e1PX7LOi2ozwYn23lWP4V3lo1zUrttG2osieMTlwka6H955A?= =?us-ascii?Q?ikArVdFTQIuTboEb51kdSidxwoE/5Uip/PH3ns/K1jwvl4uMMcOsCCEqSxFT?= =?us-ascii?Q?O4ntvA8QeU7jMbbKwXcRyD96u4sIKBl6eFXidGcgntwhpdQuxx+L0Xhzi7jV?= =?us-ascii?Q?VFUQ3K3FVJP/pDTVSye+lHwD1dAx3j8Vw5/zmIcgujwL8Tx4IKIOLkLcQ+08?= =?us-ascii?Q?6dwarbre0yNXv9m5D/krWnpRTzTg3jCFDDjX3ACA2VffYyQitMtTxTRwOC9L?= =?us-ascii?Q?NptggWeSulYckvE=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DS7PR10MB5232.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(366016)(376014)(4053099003)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?8YSIToy+d82BVEZr4+oi/rmlpNtGdV2byChUCVZ+/bFOn1hLzPlwjmW9S8z6?= =?us-ascii?Q?mOCC5VTcvzADvnO3qWRsoeBkBAIj8rhUKelvswxcBVZTizWgfoJomlnBVYGK?= =?us-ascii?Q?ahBW+/thtu/zFMJ4LsB97/IwAvIL2b7CPz1FFaIS4TnhFw8arOhxZ3FvuTy2?= =?us-ascii?Q?I9LgiR4uTasGUWtFPk+mmEgMLevBgt09TEOM+aSDfpsoaZ+iYcqHw3UO4aE0?= =?us-ascii?Q?p0rmD/EeLvGwkrb3vdG4h3ZrWtDDzlBNVWB7jzBFcEzAglINgJ0XBSImfU1e?= =?us-ascii?Q?1I4n4loyyG7qnon8xs+CPOKxp6qmGe2Q7y0DoCIBw+5wjFaQm6qfRZLdLP4L?= =?us-ascii?Q?zn2ysUkHoGIpy50f0BCc7dAR7sVAW5h3iftIv4SixjnddqKO709ONYwlZSYg?= =?us-ascii?Q?opD4761+lS7Y0bo4plgFgrisvw9HwqYENCzvYr5pxgmq79fWAmrwbg3wCsIP?= =?us-ascii?Q?RoNPHy+A5a3gFMoGVOwjPthE8ZQJ4/P3K7Zv8n9X2FrrXSix0MjHSJTRKPzv?= =?us-ascii?Q?o/FFUxYYiQy8RBja1MRdsOeoX2aI3Ez+OPTB1bOVCkax3hpdnwxIIVUP4lRb?= =?us-ascii?Q?qkXwmKrXPTJQScPsofmSB/q2ckINYJMMjZKiTxlmSlRwDH7KLztvEUGtUwKT?= =?us-ascii?Q?iY919e5gseCwYnrQJam251MhLlrI3yn1nnO2EtVScvzYfGKmvcGzpJJnmkzY?= =?us-ascii?Q?WV2emxVg7faE0RINmwofvAZjxwa8jUycoW/Qjim4i4tj6dOzN1ZtNu/vEH55?= =?us-ascii?Q?47iKfc1uBtk6x26wcLavzFvhUPOX5VmQlmeyCrhRP5DRZQM8lsEa8bwFgsEi?= =?us-ascii?Q?63SH8jtWQ3vHPE4k3wXlc+I22M5bKBH6pEhXskqZSAKOY1x4jYLIhAkQdh0g?= =?us-ascii?Q?v2WVbzBSHXtR+KooO2I0UFtO4FkdWWwIipRCThNcO+1+MJkJ6muoSLRBfOjk?= =?us-ascii?Q?2wqx7hd2Alywq0WohbDcUZWy7v2UiQPmPYbQ3YuKZqPldRWh8fuiGUvovd4N?= =?us-ascii?Q?O+Fhc39ZDr+q82kC5+KqE/FjyHbePtggTxtFQnrxPjnBuPtA88pcTGcZL+eS?= =?us-ascii?Q?RWAOguPgfjhLm0mkRs92sf3c5qUbV6sM/OC2QAHtd2InN4WOG2B/HGJJByR5?= =?us-ascii?Q?D9OF8/dxo+uL5Lq3bzKBhR+7jUdmzsOlJXBEil1sGhbOAvkqjzvtR11CYtX/?= =?us-ascii?Q?qa8MTSO3fn3eLy726oTRW1FQaYPKm2rfslk/Vnl2d/BfVyZ09nF3N+M05GfT?= =?us-ascii?Q?B/VCvUS93+iWAX8BK3RX24PmT6niXVnlmkUqHTZHbtWVRobO+T3ADirHlqX+?= =?us-ascii?Q?GFUT1qzxU0hpo+dKUGSyBJq9Tru5o6vjfmvpK03plH5JK1NINLb+yStFOuJa?= =?us-ascii?Q?fhhpFFJ8cwfpVXugTSm2ijvhUgtyRrZGVVX/gNOlZO3a1CfQWZ7l/Fnn1k0s?= =?us-ascii?Q?VQZ+PhknzHdGA6VpMBkSjNhWT5yqVnXP+JEdMOm7FC0YijgAkWMbw5rqM3B4?= =?us-ascii?Q?jnLd683YzmAl1lnHqaieq4ga+AAj5eZEnsmw+x+yVgXF2+ZS34Zo5AVqC4eP?= =?us-ascii?Q?nGA2+LOp0M6XsAOa3Eub7oBkWQtI2nMJl1+yFakZ?= Content-Type: multipart/mixed; boundary="_003_DS7PR10MB523263AF4B8292EF5A010469F342ADS7PR10MB5232namp_" MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: nY2cEN/8SDDnZ3SVmZ4VQz1v0MdE1eRbLkrMQyJ+ru+pG72Wy/CKEooMPh6/yU4XBhN/0vIRJJRVoSvrdnCqZF7cLoDlAiWvpM/YftC5Bw07no2zSckoOHDzdfyB2XITqbQQJfoinwEtdWuy7qGf2BTJulgIdTVhRZZfQaJ381jTiSQmIx5FTODVe0v3trQHO1pFyec54CEKyqeanF5se7OuupiQuivMPHvPXMnaqORArUIHJa33HPRU2JjPeY8J/4/boREO3i2PgXVNlUSLi3OjyHan/4Uk0LGlU8RSb99XVL+aqZwjOcx5kD8WXkPZJK2WaasLpNPF3CSiJLgPDjEYNYKjVdtxyeXHMKx+GiP2LJvmQwCgaHBJ3l3WonDiq4DwBDjmH2AiTC4/ygd7zpWukr0lUefFTzgoxojBW6rfjg7FfIhwo5SrzTq9IjUhrm15SkpNZIParVmgZWDtvy+lHUIQo07s9tHinjzuYY8tZqs7oWxnf9GN7EajU0DMlEzXTG4lY/GHdGQYMXr+CeFPPnVCnHeGc9Kcs7QZjs9T3ZwgkDNMFWZI0Ptd/5h2o5z9Y0NuK4jbexfz9zXcaQQV4xDjZpAJ1W408LZf54E= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DS7PR10MB5232.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3f116789-16fe-4f4c-07b0-08ddbb1a4e4c X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Jul 2025 16:46:21.3564 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: KydORBu7CaMva4FDh5e71VYBQ2aVbhpd8uA3TG5qAYDkMJ0p7uMjwiQt+tMnmEHSd+ErHQJdTNaz1LFm2O6XlA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB5723 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-07-04_06,2025-07-04_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 mlxscore=0 malwarescore=0 bulkscore=0 suspectscore=0 mlxlogscore=999 phishscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2505160000 definitions=main-2507040126 X-Proofpoint-GUID: oDn3TI3WSWqlRwOvgQXtC2BJd6R_3o2v X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzA0MDEyNyBTYWx0ZWRfX7tDibumVz5aR ueH5kGLhX1rEVQp6bXO+Sckg7wzGxB6qkiEYVUw9wsCX5izQ4UXmYOt+pHtXCJHE/eUx3fZMRzi 4f3GgDhRGLLV6KvR+VVS5Esv0KthrUOIr/I0U5x4K3uGNjIBu7H7fn8CNeCtes+ZMjK0rrc8LA3 A9istyG7zESvbUPP5FUgyEQWV8ujURTp90DXoVIbPy1TADLZBau4p4rU4dnn2Il2RSX01QRtXks d8wxtiIdfpPLs7jlF86px580T63r9CsEgoSjEGqqBAxKEj7iFKkhU/S+KUM+/PT1/jHG0lupWZ0 Xx4HxeDj4PpsPBAgfbaadqjbEXwqlOv+nXTGW9egFcvcT84/Snw91mNeLn47TrlQrzsj3eKS0Y8 NZeM6MvU/vgld5tbryShQXKc6wbqUiFSjRAn9OKVNbTMqmwLD2Zjo39GYU2t7P4gW0iIg/Yk X-Authority-Analysis: v=2.4 cv=D6hHKuRj c=1 sm=1 tr=0 ts=68680561 b=1 cx=c_pps a=qoll8+KPOyaMroiJ2sR5sw==:117 a=qoll8+KPOyaMroiJ2sR5sw==:17 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=Wb1JkmetP80A:10 a=GoEa3M9JfhUA:10 a=Wd0Z2MkJQcoIjpU2WjIA:9 a=CjuIK1q_8ugA:10 a=Ys2oqbKgLmsZ0jPaSYUA:9 a=B2y7HmGcmWMA:10 a=ViaV3LbfO-Ww_wTV_UUA:9 a=1OfwrDeanrQA:10 cc=ntf awl=host:12058 X-Proofpoint-ORIG-GUID: oDn3TI3WSWqlRwOvgQXtC2BJd6R_3o2v X-Spam-Score: -0.5 (/) X-Debbugs-Envelope-To: 78935 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.5 (-) --_003_DS7PR10MB523263AF4B8292EF5A010469F342ADS7PR10MB5232namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Attached is a slightly better patch. The option is tested at the level of the mapcar, not within the function arg to mapcar. Also, the doc string of the new option mentions that the option applies only to a Imenu menu, not also to the use of command `imenu', which uses `completing-read'. The patched version of imenu.el is also attached. --_003_DS7PR10MB523263AF4B8292EF5A010469F342ADS7PR10MB5232namp_ Content-Type: application/octet-stream; name="imenu-patch-2025-07-04a.patch" Content-Description: imenu-patch-2025-07-04a.patch Content-Disposition: attachment; filename="imenu-patch-2025-07-04a.patch"; size=2484; creation-date="Fri, 04 Jul 2025 16:42:30 GMT"; modification-date="Fri, 04 Jul 2025 16:46:20 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtdSAzMC4xLjkwL2xpc3AvaW1lbnUuZWwgaW1lbnUtcGF0Y2hlZC0yMDI1LTA3LTA0YS5l bAotLS0gMzAuMS45MC9saXNwL2ltZW51LmVsCTIwMjUtMDYtMTYgMTA6MjM6MDUuNDY3NzIxMTAw IC0wNzAwCisrKyBpbWVudS1wYXRjaGVkLTIwMjUtMDctMDRhLmVsCTIwMjUtMDctMDQgMDk6Mzg6 MTcuMjM3OTc0OTAwIC0wNzAwCkBAIC0xOTMsNiArMTkzLDE3IEBACiAgIDp0eXBlICdudW1iZXIK ICAgOnZlcnNpb24gIjI4LjEiKQogCisoZGVmY3VzdG9tIGltZW51LWFsbG93LWR1cGxpY2F0ZS1t ZW51LWl0ZW1zLWZsYWcgdAorICAiTm9uLW5pbCBtZWFucyB0aGF0IEltZW51IGNhbiBpbmNsdWRl IGR1cGxpY2F0ZSBtZW51IGl0ZW1zLgorRm9yIGV4YW1wbGUsIGlmIHRoZSBidWZmZXIgY29udGFp bnMgbXVsdGlwbGUgZGVmaW5pdGlvbnMgb2YgZnVuY3Rpb24KK2Bmb28nIHRoZW4gYSBtZW51IGl0 ZW0gaXMgaW5jbHVkZWQgZm9yIGVhY2ggb2YgdGhlbS4KK090aGVyd2lzZSwgb25seSB0aGUgZmly c3Qgc3VjaCBkZWZpbml0aW9uIGlzIGFjY2Vzc2libGUgZnJvbSB0aGUgbWVudS4KKworVGhpcyBv cHRpb24gYXBwbGllcyBvbmx5IHRvIGFuIEltZW51IG1lbnUsIG5vdCBhbHNvIHRvIHRoZSB1c2Ug b2YKK2NvbW1hbmQgYGltZW51Jywgd2hpY2ggdXNlcyBgY29tcGxldGluZy1yZWFkJyB0byByZWFk IGEgbWVudSBpdGVtLgorVGhlIHVzZSBvZiB0aGF0IGNvbW1hbmQgZG9lc24ndCBhbGxvdyBkdXBs aWNhdGUgaXRlbXMuIgorICA6dHlwZSAnYm9vbGVhbiA6Z3JvdXAgJ2ltZW51KQorCiA7OzsjIyNh dXRvbG9hZAogKGRlZnZhci1sb2NhbCBpbWVudS1nZW5lcmljLWV4cHJlc3Npb24gbmlsCiAgICJM aXN0IG9mIGRlZmluaXRpb24gbWF0Y2hlcnMgZm9yIGNyZWF0aW5nIGFuIEltZW51IGluZGV4LgpA QCAtNTA1LDE1ICs1MTYsMjYgQEAKIChkZWZ1biBpbWVudS0tY3JlYXRlLWtleW1hcCAodGl0bGUg YWxpc3QgJm9wdGlvbmFsIGNtZCkKICAgYChrZXltYXAgLHRpdGxlCiAgICAgICAgICAgICxAKG1h cGNhcgotICAgICAgICAgICAgICAobGFtYmRhIChpdGVtKQotICAgICAgICAgICAgICAgIGAoLChp bnRlcm4gKGNhciBpdGVtKSkgLChjYXIgaXRlbSkKLSAgICAgICAgICAgICAgICAgICxAKGNvbmQK LSAgICAgICAgICAgICAgICAgICAgICgoaW1lbnUtLXN1YmFsaXN0LXAgaXRlbSkKLSAgICAgICAg ICAgICAgICAgICAgICAoaW1lbnUtLWNyZWF0ZS1rZXltYXAgKGNhciBpdGVtKSAoY2RyIGl0ZW0p IGNtZCkpCi0gICAgICAgICAgICAgICAgICAgICAodAotICAgICAgICAgICAgICAgICAgICAgIChs YW1iZGEgKCkgKGludGVyYWN0aXZlKQotICAgICAgICAgICAgICAgICAgICAgICAgKGlmIGNtZCAo ZnVuY2FsbCBjbWQgaXRlbSkgaXRlbSkpKSkpKQotICAgICAgICAgICAgICAoc2VxLWZpbHRlciAj J2lkZW50aXR5IGFsaXN0KSkpKQorICAgICAgICAgICAgICAoaWYgaW1lbnUtYWxsb3ctZHVwbGlj YXRlLW1lbnUtaXRlbXMtZmxhZworICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoaXRlbSkKKyAg ICAgICAgICAgICAgICAgICAgYCgsKGluY3JlbWVudC1zeW1ib2wtbmFtZSAoY2FyIGl0ZW0pKQor ICAgICAgICAgICAgICAgICAgICAgICwoY2FyIGl0ZW0pCisgICAgICAgICAgICAgICAgICAgICAg LEAoY29uZAorICAgICAgICAgICAgICAgICAgICAgICAgICgoaW1lbnUtLXN1YmFsaXN0LXAgaXRl bSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGltZW51LS1jcmVhdGUta2V5bWFwIChjYXIg aXRlbSkgKGNkciBpdGVtKSBjbWQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICh0CisgICAg ICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKCkgKGludGVyYWN0aXZlKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChpZiBjbWQgKGZ1bmNhbGwgY21kIGl0ZW0pIGl0ZW0pKSkpKSkK KyAgICAgICAgICAgICAgICAobGFtYmRhIChpdGVtKQorICAgICAgICAgICAgICAgICAgYCgsKGlu dGVybiAoY2FyIGl0ZW0pKQorICAgICAgICAgICAgICAgICAgICAsKGNhciBpdGVtKQorICAgICAg ICAgICAgICAgICAgICAsQChjb25kCisgICAgICAgICAgICAgICAgICAgICAgICgoaW1lbnUtLXN1 YmFsaXN0LXAgaXRlbSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChpbWVudS0tY3JlYXRlLWtl eW1hcCAoY2FyIGl0ZW0pIChjZHIgaXRlbSkgY21kKSkKKyAgICAgICAgICAgICAgICAgICAgICAg KHQKKyAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKCkgKGludGVyYWN0aXZlKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAoaWYgY21kIChmdW5jYWxsIGNtZCBpdGVtKSBpdGVtKSkp KSkpKQorICAgICAgICAgICAgICAocmVtcSBuaWwgYWxpc3QpKSkpCiAKIChkZWZ1biBpbWVudS0t aW4tYWxpc3QgKHN0ciBhbGlzdCkKICAgIkNoZWNrIHdoZXRoZXIgdGhlIHN0cmluZyBTVFIgaXMg Y29udGFpbmVkIGluIG11bHRpLWxldmVsIEFMSVNULiIK --_003_DS7PR10MB523263AF4B8292EF5A010469F342ADS7PR10MB5232namp_ Content-Type: application/octet-stream; name="imenu-patched-2025-07-04a.el" Content-Description: imenu-patched-2025-07-04a.el Content-Disposition: attachment; filename="imenu-patched-2025-07-04a.el"; size=39275; creation-date="Fri, 04 Jul 2025 16:31:34 GMT"; modification-date="Fri, 04 Jul 2025 16:46:21 GMT" Content-Transfer-Encoding: base64 Ozs7IGltZW51LmVsIC0tLSBmcmFtZXdvcmsgZm9yIG1vZGUtc3BlY2lmaWMgYnVmZmVyIGluZGV4 ZXMgIC0qLSBsZXhpY2FsLWJpbmRpbmc6IHQgLSotCgo7OyBDb3B5cmlnaHQgKEMpIDE5OTQtMTk5 OCwgMjAwMS0yMDI1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgoKOzsgQXV0aG9yOiBB a2UgU3RlbmhvZmYgPGV0eGFrc2ZAYW9tLmVyaWNzc29uLnNlPgo7OyAgICAgICAgIExhcnMgTGlu ZGJlcmcgPGxsaUBzeXByby5jYXAuc2U+Cjs7IE1haW50YWluZXI6IGVtYWNzLWRldmVsQGdudS5v cmcKOzsgQ3JlYXRlZDogOCBGZWIgMTk5NAo7OyBLZXl3b3JkczogdG9vbHMgY29udmVuaWVuY2UK Cjs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBFbWFjcy4KCjs7IEdOVSBFbWFjcyBpcyBmcmVl IHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cjs7IGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5Cjs7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCjs7IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Cgo7OyBHTlUgRW1hY3MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKOzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQo7OyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgoKOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKOzsgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJ ZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKOzs7IENvbW1lbnRh cnk6Cgo7OyBQdXJwb3NlIG9mIHRoaXMgcGFja2FnZToKOzsgICBUbyBwcmVzZW50IGEgZnJhbWV3 b3JrIGZvciBtb2RlLXNwZWNpZmljIGJ1ZmZlciBpbmRleGVzLgo7OyAgIEEgYnVmZmVyIGluZGV4 IGlzIGFuIGFsaXN0IG9mIG5hbWVzIGFuZCBidWZmZXIgcG9zaXRpb25zLgo7OyAgIEZvciBpbnN0 YW5jZSBhbGwgZnVuY3Rpb25zIGluIGEgQy1maWxlIGFuZCB0aGVpciBwb3NpdGlvbnMuCjs7Cjs7 ICAgSXQgaXMgZG9jdW1lbnRlZCBpbiB0aGUgRW1hY3MgTGlzcCBtYW51YWwuCjs7Cjs7IEhvdyBp dCB3b3JrczoKCjs7ICAgQSBtb2RlLXNwZWNpZmljIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBnZW5l cmF0ZSB0aGUgaW5kZXguICBJdCBpcwo7OyAgIHRoZW4gcHJlc2VudGVkIHRvIHRoZSB1c2VyLCB3 aG8gY2FuIGNob29zZSBmcm9tIHRoaXMgaW5kZXguCgo7OzsgSGlzdG9yeToKOzsgIFRoYW5rcyBn byB0bwo7OyAgW3NpbW9uXSAtIFNpbW9uIExlaW5lbiBzaW1vbkBsaWEuZGkuZXBmbC5jaAo7OyAg W2RlYW5dIC0gRGVhbiBBbmRyZXdzIGFkYUB1bmlzb24uY29tCjs7ICBbYWxvbl0gLSBBbG9uIEFs YmVydCBhbEBtZXJjdXJ5LmNvLmlsCjs7ICBbZ3JlZ10gLSBHcmVnIFRob21wc29uIGdyZWd0QHBv cnNjaGUudmlzaXguQ09NCjs7ICBbd29sZmdhbmddIC0gV29sZmdhbmcgQmFuZ2VydGggemNnNTEx MjJAcnBvb2wxLnJ1cy51bmktc3R1dHRnYXJ0LmRlCjs7ICBba2FpXSAtIEthaSBHcm9zc2pvaGFu biBncm9zc2pvaEBsaW51cy5pbmZvcm1hdGlrLnVuaS1kb3J0bXVuZC5kZQo7OyAgW2RhdmlkXSAt IERhdmlkIE0uIFNtaXRoIGRzbWl0aEBzdGF0cy5hZGVsYWlkZS5lZHUuYXUKOzsgIFtjaHJpc3Rp YW5dIC0gQ2hyaXN0aWFuIEVnbGkgQ2hyaXN0aWFuLkVnbGlAaGNzZC5oYWMuY29tCjs7ICBba2Fy bF0gLSBLYXJsIEZvZ2VsIGtmb2dlbEBmbG9zcy5saWZlLnVpdWMuZWR1Cgo7OzsgQ29kZToKCihy ZXF1aXJlICdjbC1saWIpCgo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Cjs7Owo7OzsgQ3VzdG9taXphYmxlIHZhcmlhYmxlcwo7 OzsKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7OwoKKGRlZmdyb3VwIGltZW51IG5pbAogICJNb2RlLXNwZWNpZmljIGJ1ZmZlciBp bmRleGVzLiIKICA6Z3JvdXAgJ21hdGNoaW5nCiAgOmdyb3VwICdmcmFtZXMKICA6Z3JvdXAgJ2Nv bnZlbmllbmNlCiAgOmxpbmsgJyhjdXN0b20tbWFudWFsICIoZWxpc3ApSW1lbnUiKSkKCihkZWZj dXN0b20gaW1lbnUtdXNlLW1hcmtlcnMgdAogICJOb24tbmlsIG1lYW5zIHVzZSBtYXJrZXJzIGlu c3RlYWQgb2YgaW50ZWdlcnMgZm9yIEltZW51IGJ1ZmZlciBwb3NpdGlvbnMuCgpTZXR0aW5nIHRo aXMgdG8gbmlsIG1ha2VzIEltZW51IHdvcmsgYSBsaXR0bGUgZmFzdGVyIGJ1dCBlZGl0aW5nIHRo ZQpidWZmZXIgd2lsbCBtYWtlIHRoZSBnZW5lcmF0ZWQgaW5kZXggcG9zaXRpb25zIHdyb25nLgoK VGhpcyBtaWdodCBub3QgeWV0IGJlIGhvbm9yZWQgYnkgYWxsIGluZGV4LWJ1aWxkaW5nIGZ1bmN0 aW9ucy4iCiAgOnR5cGUgJ2Jvb2xlYW4pCgooZGVmY3VzdG9tIGltZW51LW1heC1pdGVtLWxlbmd0 aCA2MAogICJJZiBhIG51bWJlciwgdHJ1bmNhdGUgSW1lbnUgZW50cmllcyB0byB0aGF0IGxlbmd0 aC4iCiAgOnR5cGUgJyhjaG9pY2UgaW50ZWdlcgogICAgICAgICAgICAgICAgIChjb25zdCA6dGFn ICJVbmxpbWl0ZWQiKSkpCgooZGVmY3VzdG9tIGltZW51LWF1dG8tcmVzY2FuIG5pbAogICJOb24t bmlsIG1lYW5zIEltZW51IHNob3VsZCBhbHdheXMgcmVzY2FuIHRoZSBidWZmZXJzLiIKICA6dHlw ZSAnYm9vbGVhbikKCihkZWZjdXN0b20gaW1lbnUtYXV0by1yZXNjYW4tbWF4b3V0IDYwMDAwMAog ICJJbWVudSBhdXRvLXJlc2NhbiBpcyBkaXNhYmxlZCBpbiBidWZmZXJzIGxhcmdlciB0aGFuIHRo aXMgc2l6ZSAoaW4gYnl0ZXMpLgpBbHNvIHNlZSBgaW1lbnUtbWF4LWluZGV4LXRpbWUnLiIKICA6 dHlwZSAnbmF0bnVtCiAgOnZlcnNpb24gIjI2LjIiKQoKKGRlZmN1c3RvbSBpbWVudS11c2UtcG9w dXAtbWVudSAnb24tbW91c2UKICAiVXNlIGEgcG9wdXAgbWVudSByYXRoZXIgdGhhbiBhIG1pbmli dWZmZXIgcHJvbXB0LgpJZiBuaWwsIGFsd2F5cyB1c2UgYSBtaW5pYnVmZmVyIHByb21wdC4KSWYg dCwgYWx3YXlzIHVzZSBhIHBvcHVwIG1lbnUsCklmIGBvbi1tb3VzZScgdXNlIGEgcG9wdXAgbWVu dSB3aGVuIGBpbWVudScgd2FzIGludm9rZWQgd2l0aCB0aGUgbW91c2UuIgogIDp0eXBlICcoY2hv aWNlIChjb25zdCA6dGFnICJPbiBNb3VzZSIgb24tbW91c2UpCgkJIChjb25zdCA6dGFnICJOZXZl ciIgbmlsKQogICAgICAgICAgICAgICAgIChvdGhlciA6dGFnICJBbHdheXMiIHQpKSkKCihkZWZj dXN0b20gaW1lbnUtZWFnZXItY29tcGxldGlvbi1idWZmZXIgdAogICJJZiBub24tbmlsLCBlYWdl cmx5IHBvcCB1cCB0aGUgY29tcGxldGlvbiBidWZmZXIuIgogIDp0eXBlICdib29sZWFuCiAgOnZl cnNpb24gIjIyLjEiKQoKKGRlZmN1c3RvbSBpbWVudS1hZnRlci1qdW1wLWhvb2sgbmlsCiAgIkhv b2tzIGNhbGxlZCBhZnRlciBqdW1waW5nIHRvIGEgcGxhY2UgaW4gdGhlIGJ1ZmZlci4KClVzZWZ1 bCB0aGluZ3MgdG8gdXNlIGhlcmUgaW5jbHVkZSBgcmVwb3NpdGlvbi13aW5kb3cnLCBgcmVjZW50 ZXInLCBhbmQKXChsYW1iZGEgKCkgKHJlY2VudGVyIDApKSB0byBzaG93IGF0IHRvcCBvZiBzY3Jl ZW4uIgogIDp0eXBlICdob29rKQoKOzs7IyMjYXV0b2xvYWQKKGRlZmN1c3RvbSBpbWVudS1zb3J0 LWZ1bmN0aW9uIG5pbAogICJUaGUgZnVuY3Rpb24gdG8gdXNlIGZvciBzb3J0aW5nIHRoZSBpbmRl eCBtb3VzZS1tZW51LgoKQWZmZWN0cyBvbmx5IHRoZSBtb3VzZSBpbmRleCBtZW51LiAgSWYgeW91 IHdhbnQgdG8gY2hhbmdlCnRoZSBzb3J0aW5nIG9yZGVyIG9mIGNvbXBsZXRpb25zLCB5b3UgY2Fu IGN1c3RvbWl6ZQp0aGUgb3B0aW9uIGBjb21wbGV0aW9uLWNhdGVnb3J5LW92ZXJyaWRlcycgYW5k IHNldApgZGlzcGxheS1zb3J0LWZ1bmN0aW9uJyBmb3IgdGhlIGNhdGVnb3J5IGBpbWVudScuCgpT ZXQgdGhpcyB0byBuaWwgaWYgeW91IGRvbid0IHdhbnQgYW55IHNvcnRpbmcgKGZhc3RlcikuClRo ZSBpdGVtcyBpbiB0aGUgbWVudSBhcmUgdGhlbiBwcmVzZW50ZWQgaW4gdGhlIG9yZGVyIHRoZXkg d2VyZSBmb3VuZAppbiB0aGUgYnVmZmVyLgoKU2V0IGl0IHRvIGBpbWVudS0tc29ydC1ieS1uYW1l JyBpZiB5b3Ugd2FudCBhbHBoYWJldGljIHNvcnRpbmcuCgpUaGUgZnVuY3Rpb24gc2hvdWxkIHRh a2UgdHdvIGFyZ3VtZW50cyBhbmQgcmV0dXJuIHQgaWYgdGhlIGZpcnN0CmVsZW1lbnQgc2hvdWxk IGNvbWUgYmVmb3JlIHRoZSBzZWNvbmQuICBUaGUgYXJndW1lbnRzIGFyZSBjb25zIGNlbGxzOwpc KE5BTUUgLiBQT1NJVElPTikuICBMb29rIGF0IGBpbWVudS0tc29ydC1ieS1uYW1lJyBmb3IgYW4g ZXhhbXBsZS4iCiAgOnR5cGUgJyhjaG9pY2UgKGNvbnN0IDp0YWcgIk5vIHNvcnRpbmciIG5pbCkK CQkgKGNvbnN0IDp0YWcgIlNvcnQgYnkgbmFtZSIgaW1lbnUtLXNvcnQtYnktbmFtZSkKICAgICAg ICAgICAgICAgICAoZnVuY3Rpb24gOnRhZyAiQW5vdGhlciBmdW5jdGlvbiIpKSkKCihkZWZjdXN0 b20gaW1lbnUtbWF4LWl0ZW1zIDI1CiAgIk1heGltdW0gbnVtYmVyIG9mIGVsZW1lbnRzIGluIGEg bW91c2UgbWVudSBmb3IgSW1lbnUuIgogIDp0eXBlICduYXRudW0pCgooZGVmY3VzdG9tIGltZW51 LXNwYWNlLXJlcGxhY2VtZW50ICIuIgogICJUaGUgcmVwbGFjZW1lbnQgc3RyaW5nIGZvciBzcGFj ZXMgaW4gaW5kZXggbmFtZXMuClVzZWQgd2hlbiBwcmVzZW50aW5nIHRoZSBpbmRleCBpbiBhIGNv bXBsZXRpb24gYnVmZmVyIHRvIG1ha2UgdGhlCm5hbWVzIHdvcmsgYXMgdG9rZW5zLiIKICA6dHlw ZSAnKGNob2ljZSBzdHJpbmcgKGNvbnN0IG5pbCkpKQoKKGRlZmN1c3RvbSBpbWVudS1sZXZlbC1z ZXBhcmF0b3IgIjoiCiAgIlRoZSBzZXBhcmF0b3IgYmV0d2VlbiBpbmRleCBuYW1lcyBvZiBkaWZm ZXJlbnQgbGV2ZWxzLgpVc2VkIGZvciBmbGF0dGVuaW5nIG5lc3RlZCBpbmRleGVzIHdpdGggbmFt ZSBjb25jYXRlbmF0aW9uLiIKICA6dHlwZSAnc3RyaW5nKQoKKGRlZmN1c3RvbSBpbWVudS1mbGF0 dGVuIG5pbAogICJXaGV0aGVyIHRvIGZsYXR0ZW4gdGhlIGxpc3Qgb2Ygc2VjdGlvbnMgaW4gYW4g aW1lbnUgb3Igc2hvdyBpdCBuZXN0ZWQuCklmIG5pbCwgdXNlIG5lc3RlZCBpbmRleGVzLgpJZiB0 aGUgdmFsdWUgaXMgYHByZWZpeCcsIHBvcCB1cCB0aGUgY29tcGxldGlvbiBidWZmZXIgd2l0aCBh CmZsYXR0ZW5lZCBtZW51IHdoZXJlIHNlY3Rpb24gbmFtZXMgYXJlIHByZXBlbmRlZCB0byBjb21w bGV0aW9uCmNhbmRpZGF0ZXMgYXMgcHJlZml4ZXMuCklmIHRoZSB2YWx1ZSBpcyBgYW5ub3RhdGlv bicsIGFubm90YXRlIGVhY2ggY29tcGxldGlvbiBjYW5kaWRhdGUKd2l0aCBhIHN1ZmZpeCB0aGF0 IGlzIHRoZSBzZWN0aW9uIG5hbWUgdG8gd2hpY2ggaXQgYmVsb25ncy4KSWYgdGhlIHZhbHVlIGlz IGBncm91cCcsIHNwbGl0IGNvbXBsZXRpb24gY2FuZGlkYXRlcyBpbnRvIGdyb3VwcwphY2NvcmRp bmcgdG8gdGhlIHNlY3Rpb25zLgpBbnkgb3RoZXIgdmFsdWUgaXMgdHJlYXRlZCBhcyBgcHJlZml4 Jy4KClNpbmNlIHRoZSB2YWx1ZXMgYGFubm90YXRpb24nIGFuZCBgZ3JvdXAnIHJlbHkgb24gdGV4 dCBwcm9wZXJ0aWVzLAp5b3UgY2FuIHVzZSB0aGVtIG9ubHkgYnkgc2VsZWN0aW5nIGNhbmRpZGF0 ZXMgZnJvbSB0aGUgY29tcGxldGlvbnMKYnVmZmVyLCBub3QgYnkgdHlwaW5nIGluIHRoZSBtaW5p YnVmZmVyLiAgVGhpcyBhbHNvIG1lYW5zIHRoYXQKaWYgeW91IHVzZSBgbWluaWJ1ZmZlci1uZXh0 LWNvbXBsZXRpb24nIChgTS08ZG93bj4nKSB0byBzZWxlY3QKYSBjb21wbGV0aW9uIHdoaWxlIHBv aW50IHN0YXlzIGluIHRoZSBtaW5pYnVmZmVyLCB5b3UgbmVlZAp0byBjdXN0b21pemUgYG1pbmli dWZmZXItY29tcGxldGlvbi1hdXRvLWNob29zZScgdG8gbmlsIHRoYXQKZG9lc24ndCBpbnNlcnQg Y29tcGxldGlvbiBjYW5kaWRhdGVzIHRvIHRoZSBtaW5pYnVmZmVyLgpBbHNvIG5vdGUgdGhhdCBm b3IgdXNpbmcgdGhlIHZhbHVlIGBncm91cCcgeW91IG5lZWQgdG8gY3VzdG9taXplCmBjb21wbGV0 aW9ucy1ncm91cCcgdG8gdGhlIHZhbHVlIHQsIGFuZCBgY29tcGxldGlvbnMtZm9ybWF0Jwp0byB0 aGUgdmFsdWUgYHZlcnRpY2FsJy4KClRoZSB2YWx1ZSBvZiBgaW1lbnUtbGV2ZWwtc2VwYXJhdG9y JywgYSBzdHJpbmcsIGlzIHVzZWQgdG8gc2VwYXJhdGUKbmFtZXMgZnJvbSBkaWZmZXJlbnQgZmxh dHRlbmVkIGxldmVscywgc3VjaCBhcyBzZWN0aW9uIG5hbWVzLCBmcm9tIHRoZQpuYW1lcyBvZiBj b21wbGV0aW9uIGNhbmRpZGF0ZXMuIgogIDp0eXBlICcoY2hvaWNlIChjb25zdCA6dGFnICJTaG93 IG5lc3RlZCBsaXN0IiBuaWwpCiAgICAgICAgICAgICAgICAgKGNvbnN0IDp0YWcgIkZsYXQgbGlz dCB3aXRoIHNlY3Rpb25zIGFzIHByZWZpeCIgcHJlZml4KQogICAgICAgICAgICAgICAgIChjb25z dCA6dGFnICJGbGF0IGxpc3QgYW5ub3RhdGVkIHdpdGggc2VjdGlvbnMiIGFubm90YXRpb24pCiAg ICAgICAgICAgICAgICAgKGNvbnN0IDp0YWcgIkZsYXQgbGlzdCBncm91cGVkIGJ5IHNlY3Rpb25z IiBncm91cCkpCiAgOnZlcnNpb24gIjMwLjEiKQoKKGRlZmN1c3RvbSBpbWVudS1nZW5lcmljLXNr aXAtY29tbWVudHMtYW5kLXN0cmluZ3MgdAogICJXaGVuIG5vbi1uaWwsIGlnbm9yZSB0ZXh0IGlu c2lkZSBjb21tZW50cyBhbmQgc3RyaW5ncy4KT25seSBhZmZlY3RzIGBpbWVudS1kZWZhdWx0LWNy ZWF0ZS1pbmRleC1mdW5jdGlvbicgKGFuZCBhbnkKYWx0ZXJuYXRpdmUgaW1wbGVtZW50YXRpb24g b2YgYGltZW51LWNyZWF0ZS1pbmRleC1mdW5jdGlvbicgdGhhdAp1c2VzIGBpbWVudS0tZ2VuZXJp Yy1mdW5jdGlvbicpLiIKICA6dHlwZSAnYm9vbGVhbgogIDp2ZXJzaW9uICIyNC40IikKCihkZWZj dXN0b20gaW1lbnUtbWF4LWluZGV4LXRpbWUgNQogICJNYXggdGltZSB0byB1c2Ugd2hlbiBjcmVh dGluZyBpbWVudSBpbmRpY2VzLiIKICA6dHlwZSAnbnVtYmVyCiAgOnZlcnNpb24gIjI4LjEiKQoK KGRlZmN1c3RvbSBpbWVudS1hbGxvdy1kdXBsaWNhdGUtbWVudS1pdGVtcy1mbGFnIHQKICAiTm9u LW5pbCBtZWFucyB0aGF0IEltZW51IGNhbiBpbmNsdWRlIGR1cGxpY2F0ZSBtZW51IGl0ZW1zLgpG b3IgZXhhbXBsZSwgaWYgdGhlIGJ1ZmZlciBjb250YWlucyBtdWx0aXBsZSBkZWZpbml0aW9ucyBv ZiBmdW5jdGlvbgpgZm9vJyB0aGVuIGEgbWVudSBpdGVtIGlzIGluY2x1ZGVkIGZvciBlYWNoIG9m IHRoZW0uCk90aGVyd2lzZSwgb25seSB0aGUgZmlyc3Qgc3VjaCBkZWZpbml0aW9uIGlzIGFjY2Vz c2libGUgZnJvbSB0aGUgbWVudS4KClRoaXMgb3B0aW9uIGFwcGxpZXMgb25seSB0byBhbiBJbWVu dSBtZW51LCBub3QgYWxzbyB0byB0aGUgdXNlIG9mCmNvbW1hbmQgYGltZW51Jywgd2hpY2ggdXNl cyBgY29tcGxldGluZy1yZWFkJyB0byByZWFkIGEgbWVudSBpdGVtLgpUaGUgdXNlIG9mIHRoYXQg Y29tbWFuZCBkb2Vzbid0IGFsbG93IGR1cGxpY2F0ZSBpdGVtcy4iCiAgOnR5cGUgJ2Jvb2xlYW4g Omdyb3VwICdpbWVudSkKCjs7OyMjI2F1dG9sb2FkCihkZWZ2YXItbG9jYWwgaW1lbnUtZ2VuZXJp Yy1leHByZXNzaW9uIG5pbAogICJMaXN0IG9mIGRlZmluaXRpb24gbWF0Y2hlcnMgZm9yIGNyZWF0 aW5nIGFuIEltZW51IGluZGV4LgpFYWNoIGVsZW1lbnQgb2YgdGhpcyBsaXN0IHNob3VsZCBoYXZl IHRoZSBmb3JtCgogIChNRU5VLVRJVExFIFJFR0VYUCBJTkRFWCBbRlVOQ1RJT05dIFtBUkdVTUVO VFMuLi5dKQoKTUVOVS1USVRMRSBzaG91bGQgYmUgbmlsIChpbiB3aGljaCBjYXNlIHRoZSBtYXRj aGVzIGZvciB0aGlzCmVsZW1lbnQgYXJlIHB1dCBpbiB0aGUgdG9wIGxldmVsIG9mIHRoZSBidWZm ZXIgaW5kZXgpIG9yIGEKc3RyaW5nICh3aGljaCBzcGVjaWZpZXMgdGhlIHRpdGxlIG9mIGEgc3Vi bWVudSBpbnRvIHdoaWNoIHRoZQptYXRjaGVzIGFyZSBwdXQpLgpSRUdFWFAgaXMgYSByZWd1bGFy IGV4cHJlc3Npb24gbWF0Y2hpbmcgYSBkZWZpbml0aW9uIGNvbnN0cnVjdAp3aGljaCBpcyB0byBi ZSBkaXNwbGF5ZWQgaW4gdGhlIG1lbnUuICBSRUdFWFAgbWF5IGFsc28gYmUgYQpmdW5jdGlvbiBv ZiBubyBhcmd1bWVudHMuICBJZiBSRUdFWFAgaXMgYSBmdW5jdGlvbiwgaXQgaXMKZXhwZWN0ZWQg dG8gc2VhcmNoIGJhY2t3YXJkcywgcmV0dXJuIG5vbi1uaWwgaWYgaXQgZmluZHMgYQpkZWZpbml0 aW9uIGNvbnN0cnVjdCwgYW5kIHNldCBgbWF0Y2gtZGF0YScgZm9yIHRoYXQgY29uc3RydWN0LgpJ TkRFWCBpcyBhbiBpbnRlZ2VyIHNwZWNpZnlpbmcgd2hpY2ggc3ViZXhwcmVzc2lvbiBvZiBSRUdF WFAKbWF0Y2hlcyB0aGUgZGVmaW5pdGlvbidzIG5hbWU7IHRoaXMgc3ViZXhwcmVzc2lvbiBpcyBk aXNwbGF5ZWQgYXMKdGhlIG1lbnUgaXRlbS4KRlVOQ1RJT04sIGlmIHByZXNlbnQsIHNwZWNpZmll cyBhIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgaW5kZXgKaXRlbSBpcyBzZWxlY3RlZCBieSB0 aGUgdXNlci4gIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGgKYXJndW1lbnRzIGNvbnNpc3Rp bmcgb2YgdGhlIGl0ZW0gbmFtZSwgdGhlIGJ1ZmZlciBwb3NpdGlvbiwgYW5kCnRoZSBBUkdVTUVO VFMuCgpUaGUgdmFyaWFibGUgYGltZW51LWNhc2UtZm9sZC1zZWFyY2gnIGRldGVybWluZXMgd2hl dGhlciBvciBub3QKdGhlIHJlZ2V4cCBtYXRjaGVzIGFyZSBjYXNlIHNlbnNpdGl2ZSwgYW5kIGBp bWVudS1zeW50YXgtYWxpc3QnCmNhbiBiZSB1c2VkIHRvIGFsdGVyIHRoZSBzeW50YXggdGFibGUg Zm9yIHRoZSBzZWFyY2guCgpJZiBub24tbmlsIHRoaXMgcGF0dGVybiBpcyBwYXNzZWQgdG8gYGlt ZW51LS1nZW5lcmljLWZ1bmN0aW9uJyB0bwpjcmVhdGUgYSBidWZmZXIgaW5kZXguCgpGb3IgZXhh bXBsZSwgc2VlIHRoZSB2YWx1ZSBvZiBgZm9ydHJhbi1pbWVudS1nZW5lcmljLWV4cHJlc3Npb24n CnVzZWQgYnkgYGZvcnRyYW4tbW9kZScgd2l0aCBgaW1lbnUtc3ludGF4LWFsaXN0JyBzZXQgbG9j YWxseSBzbyB0aGF0CmNoYXJhY3RlcnMgd2hpY2ggbm9ybWFsbHkgaGF2ZSBcInN5bWJvbFwiIHN5 bnRheCBhcmUgY29uc2lkZXJlZCB0byBoYXZlClwid29yZFwiIHN5bnRheCBkdXJpbmcgbWF0Y2hp bmcuIikKOzs7IyMjYXV0b2xvYWQocHV0ICdpbWVudS1nZW5lcmljLWV4cHJlc3Npb24gJ3Jpc2t5 LWxvY2FsLXZhcmlhYmxlIHQpCgo7Ozs7IEhvb2tzCgo7OzsjIyNhdXRvbG9hZAooZGVmdmFyLWxv Y2FsIGltZW51LWNyZWF0ZS1pbmRleC1mdW5jdGlvbiAnaW1lbnUtZGVmYXVsdC1jcmVhdGUtaW5k ZXgtZnVuY3Rpb24KICAiVGhlIGZ1bmN0aW9uIHRvIHVzZSBmb3IgY3JlYXRpbmcgYW4gaW5kZXgg YWxpc3Qgb2YgdGhlIGN1cnJlbnQgYnVmZmVyLgoKSXQgc2hvdWxkIGJlIGEgZnVuY3Rpb24gdGhh dCB0YWtlcyBubyBhcmd1bWVudHMgYW5kIHJldHVybnMKYW4gaW5kZXggYWxpc3Qgb2YgdGhlIGN1 cnJlbnQgYnVmZmVyLiAgVGhlIGZ1bmN0aW9uIGlzCmNhbGxlZCB3aXRoaW4gYSBgc2F2ZS1leGN1 cnNpb24nLgoKU2VlIGBpbWVudS0taW5kZXgtYWxpc3QnIGZvciB0aGUgZm9ybWF0IG9mIHRoZSBi dWZmZXIgaW5kZXggYWxpc3QuIikKCjs7OyMjI2F1dG9sb2FkCihkZWZ2YXItbG9jYWwgaW1lbnUt c3VibWVudXMtb24tdG9wIHQKICAiRmxhZyBzcGVjaWZ5aW5nIHdoZXRoZXIgaXRlbXMgd2l0aCBz dWJsaXN0cyBzaG91bGQgYmUga2VwdCBhdCB0b3AuCgpGb3Igc29tZSBpbmRleGVzLCBzdWNoIGFz IHRob3NlIGRlc2NyaWJpbmcgc2VjdGlvbnMgaW4gYSBkb2N1bWVudCwgaXQKbWFrZXMgc2Vuc2Ug dG8ga2VlcCB0aGVpciBvcmlnaW5hbCBvcmRlciBldmVuIGluIHRoZSBtZW51YmFyLiIpCgo7Ozsj IyNhdXRvbG9hZAooZGVmdmFyLWxvY2FsIGltZW51LXByZXYtaW5kZXgtcG9zaXRpb24tZnVuY3Rp b24gJ2JlZ2lubmluZy1vZi1kZWZ1bgogICJGdW5jdGlvbiBmb3IgZmluZGluZyB0aGUgbmV4dCBp bmRleCBwb3NpdGlvbi4KCklmIGBpbWVudS1jcmVhdGUtaW5kZXgtZnVuY3Rpb24nIGlzIHNldCB0 bwpgaW1lbnUtZGVmYXVsdC1jcmVhdGUtaW5kZXgtZnVuY3Rpb24nLCB0aGVuIHlvdSBtdXN0IHNl dCB0aGlzIHZhcmlhYmxlCnRvIGEgZnVuY3Rpb24gdGhhdCB3aWxsIGZpbmQgdGhlIG5leHQgaW5k ZXgsIGxvb2tpbmcgYmFja3dhcmRzIGluIHRoZQpmaWxlLgoKVGhlIGZ1bmN0aW9uIHNob3VsZCBs ZWF2ZSBwb2ludCBhdCB0aGUgcGxhY2UgdG8gYmUgY29ubmVjdGVkIHRvIHRoZQppbmRleCBhbmQg aXQgc2hvdWxkIHJldHVybiBuaWwgd2hlbiBpdCBkb2Vzbid0IGZpbmQgYW5vdGhlciBpbmRleC4i KQoKOzs7IyMjYXV0b2xvYWQKKGRlZnZhci1sb2NhbCBpbWVudS1leHRyYWN0LWluZGV4LW5hbWUt ZnVuY3Rpb24gbmlsCiAgIkZ1bmN0aW9uIGZvciBleHRyYWN0aW5nIHRoZSBpbmRleCBpdGVtIG5h bWUsIGdpdmVuIGEgcG9zaXRpb24uCgpUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhZnRlciBgaW1l bnUtcHJldi1pbmRleC1wb3NpdGlvbi1mdW5jdGlvbicKZmluZHMgYSBwb3NpdGlvbiBmb3IgYW4g aW5kZXggaXRlbSwgd2l0aCBwb2ludCBhdCB0aGF0IHBvc2l0aW9uLgpJdCBzaG91bGQgcmV0dXJu IHRoZSBuYW1lIGZvciB0aGF0IGluZGV4IGl0ZW0uIikKCjs7OyMjI2F1dG9sb2FkCihkZWZ2YXIt bG9jYWwgaW1lbnUtbmFtZS1sb29rdXAtZnVuY3Rpb24gbmlsCiAgIkZ1bmN0aW9uIHRvIGNvbXBh cmUgc3RyaW5nIHdpdGggaW5kZXggaXRlbS4KClRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQg d2l0aCB0d28gc3RyaW5ncywgYW5kIHNob3VsZCByZXR1cm4Kbm9uLW5pbCBpZiB0aGV5IG1hdGNo LgoKSWYgbmlsLCBjb21wYXJpc29uIGlzIGRvbmUgd2l0aCBgc3RyaW5nPScuClNldCB0aGlzIHRv IHNvbWUgb3RoZXIgZnVuY3Rpb24gZm9yIG1vcmUgYWR2YW5jZWQgY29tcGFyaXNvbnMsCnN1Y2gg YXMgXCJiZWdpbnMgd2l0aFwiIG9yIFwibmFtZSBtYXRjaGVzIGFuZCBudW1iZXIgb2YKYXJndW1l bnRzIG1hdGNoXCIuIikKCjs7OyMjI2F1dG9sb2FkCihkZWZ2YXItbG9jYWwgaW1lbnUtZGVmYXVs dC1nb3RvLWZ1bmN0aW9uICdpbWVudS1kZWZhdWx0LWdvdG8tZnVuY3Rpb24KICAiVGhlIGRlZmF1 bHQgZnVuY3Rpb24gY2FsbGVkIHdoZW4gc2VsZWN0aW5nIGFuIEltZW51IGl0ZW0uClRoZSBmdW5j dGlvbiBpbiB0aGlzIHZhcmlhYmxlIGlzIGNhbGxlZCB3aGVuIHNlbGVjdGluZyBhIG5vcm1hbCBp bmRleC1pdGVtLiIpCgoKKGRlZnVuIGltZW51LS1zdWJhbGlzdC1wIChpdGVtKQogIChhbmQgKGNv bnNwIGl0ZW0pCiAgICAgICAoY29uc3AgKGNkciBpdGVtKSkKICAgICAgIChsaXN0cCAoY2FkciBp dGVtKSkKICAgICAgIChub3QgKGZ1bmN0aW9ucCAoY2FkciBpdGVtKSkpKSkKCihkZWZtYWNybyBp bWVudS1wcm9ncmVzcy1tZXNzYWdlIChfcHJldnBvcyAmb3B0aW9uYWwgX3JlbHBvcyBfcmV2ZXJz ZSkKICAiVGhpcyBtYWNybyBpcyBvYnNvbGV0ZSBhbmQgZG9lcyBub3RoaW5nLiIKICAoZGVjbGFy ZSAob2Jzb2xldGUgbmlsICIyOC4xIikpCjs7IE1hZGUgb2Jzb2xldGUvZW1wdHksIGFzIGNvbXB1 dGVycyBhcmUgbm93IGZhc3RlciB0aGFuIHRoZSBleWUsIGFuZAo7OyBpdCBoYWQgcHJvYmxlbXMg dXBkYXRpbmcgdGhlIG1lc3NhZ2VzIGNvcnJlY3RseSwgYW5kIGNvdWxkIHNoYWRvdwo7OyBtb3Jl IGltcG9ydGFudCBtZXNzYWdlcy9wcm9tcHRzIGluIHRoZSBtaW5pYnVmZmVyLiAgS0ZTIDIwMDQt MTAtMjcuCikKCgo7OzsKOzs7IExpc3AKOzs7CgooZGVmaW5lLWVycm9yICdpbWVudS11bmF2YWls YWJsZSAiaW1lbnUgdW5hdmFpbGFibGUiKQoKKGRlZnVuIGltZW51LXVuYXZhaWxhYmxlLWVycm9y IChmb3JtYXQgJnJlc3QgYXJncykKICAoc2lnbmFsICdpbWVudS11bmF2YWlsYWJsZQogICAgICAg ICAgKGxpc3QgKGFwcGx5ICMnZm9ybWF0LW1lc3NhZ2UgZm9ybWF0IGFyZ3MpKSkpCgo7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Cjs7Owo7OzsgSW50ZXJuYWwgdmFyaWFibGVzCjs7Owo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Cgo7OyBUaGUgaXRlbSB0byB1 c2UgaW4gdGhlIGluZGV4IGZvciByZXNjYW5uaW5nIHRoZSBidWZmZXIuCihkZWZjb25zdCBpbWVu dS0tcmVzY2FuLWl0ZW0gJygiKlJlc2NhbioiIC4gLTk5KSkKCjs7IFRoZSBsYXRlc3QgYnVmZmVy IGluZGV4LgooZGVmdmFyLWxvY2FsIGltZW51LS1pbmRleC1hbGlzdCBuaWwKICAiVGhlIGJ1ZmZl ciBpbmRleCBhbGlzdCBjb21wdXRlZCBmb3IgdGhpcyBidWZmZXIgaW4gSW1lbnUuCgpTaW1wbGUg ZWxlbWVudHMgaW4gdGhlIGFsaXN0IGxvb2sgbGlrZSAoSU5ERVgtTkFNRSAuIFBPU0lUSU9OKS4K UE9TSVRJT04gaXMgdGhlIGJ1ZmZlciBwb3NpdGlvbiBvZiB0aGUgaXRlbTsgdG8gZ28gdG8gdGhl IGl0ZW0KaXMgc2ltcGx5IHRvIG1vdmUgcG9pbnQgdG8gdGhhdCBwb3NpdGlvbi4KClBPU0lUSU9O IGlzIHBhc3NlZCB0byBgaW1lbnUtZGVmYXVsdC1nb3RvLWZ1bmN0aW9uJywgc28gaXQgY2FuIGJl CmEgbm9uLW51bWJlciBpZiB0aGF0IHZhcmlhYmxlIGhhcyBiZWVuIGNoYW5nZWQgKGUuZy4gU2Vt YW50aWMKdXNlcyBvdmVybGF5cyBmb3IgUE9TSVRJT05zKS4KClNwZWNpYWwgZWxlbWVudHMgbG9v ayBsaWtlClwoSU5ERVgtTkFNRSBQT1NJVElPTiBGVU5DVElPTiBBUkdVTUVOVFMuLi4pLgpUbyBc ImdvIHRvXCIgYSBzcGVjaWFsIGVsZW1lbnQgbWVhbnMgYXBwbHlpbmcgRlVOQ1RJT04gdG8KSU5E RVgtTkFNRSwgUE9TSVRJT04sIGFuZCB0aGUgQVJHVU1FTlRTLgoKQSBuZXN0ZWQgc3ViLWFsaXN0 IGVsZW1lbnQgbG9va3MgbGlrZSAoSU5ERVgtTkFNRSAuIFNVQi1BTElTVCkuClRoZSBmdW5jdGlv biBgaW1lbnUtLXN1YmFsaXN0LXAnIHRlc3RzIGFuIGVsZW1lbnQgYW5kIHJldHVybnMgdAppZiBp dCBpcyBhIHN1Yi1hbGlzdC4KClRoZXJlIGlzIG9uZSBzaW1wbGUgZWxlbWVudCB3aXRoIG5lZ2F0 aXZlIFBPU0lUSU9OOyBzZWxlY3RpbmcgdGhhdAplbGVtZW50IHJlY2FsY3VsYXRlcyB0aGUgYnVm ZmVyJ3MgaW5kZXggYWxpc3QuIikKOzs7IyMjYXV0b2xvYWQocHV0ICdpbWVudS0taW5kZXgtYWxp c3QgJ3Jpc2t5LWxvY2FsLXZhcmlhYmxlIHQpCgooZGVmdmFyLWxvY2FsIGltZW51LS1sYXN0LW1l bnViYXItaW5kZXgtYWxpc3QgbmlsCiAgIlRoZSBsYXRlc3QgYnVmZmVyIGluZGV4IGFsaXN0IHVz ZWQgdG8gdXBkYXRlIHRoZSBtZW51IGJhciBtZW51LiIpCgooZGVmdmFyIGltZW51LS1oaXN0b3J5 LWxpc3QgbmlsCiAgOzsgTWFraW5nIHRoaXMgYnVmZmVyIGxvY2FsIGNhdXNlZCBpdCBub3QgdG8g d29yayEKICAiSGlzdG9yeSBsaXN0IGZvciBgaW1lbnUtY2hvb3NlLWJ1ZmZlci1pbmRleCcuIikK Cjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7OzsKOzs7Cjs7OyBJbnRlcm5hbCBzdXBwb3J0IGZ1bmN0aW9ucwo7OzsKOzs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OwoK KGRlZnVuIGltZW51LS1zb3J0LWJ5LW5hbWUgKGl0ZW0xIGl0ZW0yKQogICJDb21wYXJpc29uIGZ1 bmN0aW9uIHRvIHNvcnQgaXRlbXMgZGVwZW5kaW5nIG9uIHRoZWlyIGluZGV4IG5hbWUuCkFuIGl0 ZW0gbG9va3MgbGlrZSAoTkFNRSAuIFBPU0lUSU9OKS4iCiAgKHN0cmluZy1sZXNzcCAoY2FyIGl0 ZW0xKSAoY2FyIGl0ZW0yKSkpCgooZGVmdW4gaW1lbnUtLXNvcnQtYnktcG9zaXRpb24gKGl0ZW0x IGl0ZW0yKQogICJDb21wYXJpc29uIGZ1bmN0aW9uIHRvIHNvcnQgaXRlbXMgZGVwZW5kaW5nIG9u IHRoZWlyIHBvc2l0aW9uLgpSZXR1cm4gbm9uLW5pbCBpZiBhbmQgb25seSBpZiBJVEVNMSdzIHBv c2l0aW9uIGlzIGxvd2VyIHRoYW4gSVRFTTIncwpwb3NpdGlvbi4iCiAgKGlmIChsaXN0cCAoY2Ry IGl0ZW0xKSkKICAgICAgKDwgKGNhZHIgaXRlbTEpIChjYWRyIGl0ZW0yKSkKICAgICg8IChjZHIg aXRlbTEpIChjZHIgaXRlbTIpKSkpCgooZGVmdW4gaW1lbnUtLXJlbGF0aXZlLXBvc2l0aW9uICgm b3B0aW9uYWwgcmV2ZXJzZSkKICAiU3VwcG9ydCBmdW5jdGlvbiB0byBjYWxjdWxhdGUgcmVsYXRp dmUgcG9zaXRpb24gaW4gYnVmZmVyLgpCZWdpbm5pbmcgb2YgYnVmZmVyIGlzIDAgYW5kIGVuZCBv ZiBidWZmZXIgaXMgMTAwCklmIFJFVkVSU0UgaXMgbm9uLW5pbCB0aGVuIHRoZSBiZWdpbm5pbmcg aXMgMTAwIGFuZCB0aGUgZW5kIGlzIDAuIgogIChsZXQgKChwb3MgKHBvaW50KSkKCSh0b3RhbCAo YnVmZmVyLXNpemUpKSkKICAgIChhbmQgcmV2ZXJzZSAoc2V0cSBwb3MgKC0gdG90YWwgcG9zKSkp CiAgICAoZmxvb3IgKCogMTAwLjAgKDEtIHBvcykpIChtYXggdG90YWwgMSkpKSkKCihkZWZ1biBp bWVudS0tc3BsaXQgKGxpc3QgbikKICAiU3BsaXQgTElTVCBpbnRvIHN1Ymxpc3RzIG9mIG1heCBs ZW5ndGggTi4KRXhhbXBsZSAoaW1lbnUtLXNwbGl0IFxcPScoMSAyIDMgNCA1IDYgNyA4KSAzKSA9 PiAoKDEgMiAzKSAoNCA1IDYpICg3IDgpKQpUaGUgcmV0dXJuZWQgbGlzdCBET0VTIE5PVCBzaGFy ZSBzdHJ1Y3R1cmUgd2l0aCBMSVNULiIKICAobGV0ICgocmVtYWluIGxpc3QpCgkocmVzdWx0ICco KSkKCShzdWJsaXN0ICcoKSkKCShpIDApKQogICAgKHdoaWxlIHJlbWFpbgogICAgICAocHVzaCAo cG9wIHJlbWFpbikgc3VibGlzdCkKICAgICAgKGNsLWluY2YgaSkKICAgICAgKGFuZCAoPSBpIG4p CgkgICA7OyBXZSBoYXZlIGZpbmlzaGVkIGEgc3VibGlzdAoJICAgKHByb2duIChwdXNoIChucmV2 ZXJzZSBzdWJsaXN0KSByZXN1bHQpCgkJICAoc2V0cSBpIDApCgkJICAoc2V0cSBzdWJsaXN0ICco KSkpKSkKICAgIDs7IFRoZXJlIG1pZ2h0IGJlIGEgc3VibGlzdCAoaWYgdGhlIGxlbmd0aCBvZiBM SVNUIG1vZCBuIGlzICE9IDApCiAgICA7OyB0aGF0IGhhcyB0byBiZSBhZGRlZCB0byB0aGUgcmVz dWx0IGxpc3QuCiAgICAoYW5kIHN1Ymxpc3QKCSAocHVzaCAobnJldmVyc2Ugc3VibGlzdCkgcmVz dWx0KSkKICAgIChucmV2ZXJzZSByZXN1bHQpKSkKCihkZWZ1biBpbWVudS0tc3BsaXQtbWVudSAo bWVudWxpc3QgdGl0bGUpCiAgIlNwbGl0IHRoZSBhbGlzdCBNRU5VTElTVCBpbnRvIGEgbmVzdGVk IGFsaXN0LCBpZiBpdCBpcyBsb25nIGVub3VnaC4KSW4gYW55IGNhc2UsIGFkZCBUSVRMRSB0byB0 aGUgZnJvbnQgb2YgdGhlIGFsaXN0LgpJZiBJTUVOVS0tUkVTQ0FOLUlURU0gaXMgcHJlc2VudCBp biBNRU5VTElTVCwgaXQgaXMgbW92ZWQgdG8gdGhlCmJlZ2lubmluZyBvZiB0aGUgcmV0dXJuZWQg YWxpc3QuClRoZSByZXR1cm5lZCBhbGlzdCBET0VTIE5PVCBzaGFyZSBzdHJ1Y3R1cmUgd2l0aCBN RU5VTElTVC4iCiAgKGxldCAoKG1lbnVsaXN0IChjb3B5LXNlcXVlbmNlIG1lbnVsaXN0KSkKICAg ICAgICBrZWVwLWF0LXRvcCkKICAgIChpZiAobWVtcSBpbWVudS0tcmVzY2FuLWl0ZW0gbWVudWxp c3QpCgkoc2V0cSBrZWVwLWF0LXRvcCAobGlzdCBpbWVudS0tcmVzY2FuLWl0ZW0pCgkgICAgICBt ZW51bGlzdCAoZGVscSBpbWVudS0tcmVzY2FuLWl0ZW0gbWVudWxpc3QpKSkKICAgIChpZiBpbWVu dS1zdWJtZW51cy1vbi10b3AKICAgICAgICAoZG9saXN0IChpdGVtIG1lbnVsaXN0KQogICAgICAg ICAgKHdoZW4gKGltZW51LS1zdWJhbGlzdC1wIGl0ZW0pCgkgICAgKHB1c2ggaXRlbSBrZWVwLWF0 LXRvcCkKCSAgICAoc2V0cSBtZW51bGlzdCAoZGVscSBpdGVtIG1lbnVsaXN0KSkpKSkKICAgIChp ZiBpbWVudS1zb3J0LWZ1bmN0aW9uCgkoc2V0cSBtZW51bGlzdCAoc29ydCBtZW51bGlzdCBpbWVu dS1zb3J0LWZ1bmN0aW9uKSkpCiAgICAoaWYgKD4gKGxlbmd0aCBtZW51bGlzdCkgaW1lbnUtbWF4 LWl0ZW1zKQoJKHNldHEgbWVudWxpc3QKCSAgICAgIChtYXBjYXIKCSAgICAgICAobGFtYmRhICht ZW51KQoJCSAoY29ucyAoZm9ybWF0ICJGcm9tOiAlcyIgKGNhYXIgbWVudSkpIG1lbnUpKQoJICAg ICAgIChpbWVudS0tc3BsaXQgbWVudWxpc3QgaW1lbnUtbWF4LWl0ZW1zKSkpKQogICAgKGNvbnMg dGl0bGUKCSAgKG5jb25jIChucmV2ZXJzZSBrZWVwLWF0LXRvcCkgbWVudWxpc3QpKSkpCgooZGVm dW4gaW1lbnUtLXNwbGl0LXN1Ym1lbnVzIChhbGlzdCkKICAiU3BsaXQgdXAgZWFjaCBsb25nIGFs aXN0IHRoYXQgYXJlIG5lc3RlZCB3aXRoaW4gQUxJU1QgaW50byBuZXN0ZWQgYWxpc3RzLgpSZXR1 cm4gYSBzcGxpdCBhbmQgc29ydGVkIGNvcHkgb2YgQUxJU1QuICBUaGUgcmV0dXJuZWQgYWxpc3Qg RE9FUwpOT1Qgc2hhcmUgc3RydWN0dXJlIHdpdGggQUxJU1QuIgogIChtYXBjYXIgKGxhbWJkYSAo ZWx0KQogICAgICAgICAgICAoaWYgKGltZW51LS1zdWJhbGlzdC1wIGVsdCkKICAgICAgICAgICAg ICAgIChpbWVudS0tc3BsaXQtbWVudSAoY2RyIGVsdCkgKGNhciBlbHQpKQogICAgICAgICAgICAg IGVsdCkpCgkgIGFsaXN0KSkKCihkZWZ1biBpbWVudS0tdHJ1bmNhdGUtaXRlbXMgKG1lbnVsaXN0 KQogICJUcnVuY2F0ZSBhbGwgc3RyaW5ncyBpbiBNRU5VTElTVCB0byBgaW1lbnUtbWF4LWl0ZW0t bGVuZ3RoJy4iCiAgKG1hcGMgKGxhbWJkYSAoaXRlbSkKCSAgOzsgVHJ1bmNhdGUgaWYgbmVjZXNz YXJ5LgoJICAod2hlbiAoYW5kIChudW1iZXJwIGltZW51LW1heC1pdGVtLWxlbmd0aCkKCQkgICAg ICg+IChsZW5ndGggKGNhciBpdGVtKSkgaW1lbnUtbWF4LWl0ZW0tbGVuZ3RoKSkKCSAgICAoc2V0 Y2FyIGl0ZW0gKHN1YnN0cmluZyAoY2FyIGl0ZW0pIDAgaW1lbnUtbWF4LWl0ZW0tbGVuZ3RoKSkp CgkgICh3aGVuIChpbWVudS0tc3ViYWxpc3QtcCBpdGVtKQoJICAgIChpbWVudS0tdHJ1bmNhdGUt aXRlbXMgKGNkciBpdGVtKSkpKQoJbWVudWxpc3QpKQoKKGRlZnVuIGltZW51LS1tYWtlLWluZGV4 LWFsaXN0ICgmb3B0aW9uYWwgbm9lcnJvcikKICAiQ3JlYXRlIGFuIGluZGV4IGFsaXN0IGZvciB0 aGUgZGVmaW5pdGlvbnMgaW4gdGhlIGN1cnJlbnQgYnVmZmVyLgpUaGlzIHdvcmtzIGJ5IHVzaW5n IHRoZSBob29rIGZ1bmN0aW9uIGBpbWVudS1jcmVhdGUtaW5kZXgtZnVuY3Rpb24nLgpSZXBvcnQg YW4gZXJyb3IgaWYgdGhlIGxpc3QgaXMgZW1wdHkgdW5sZXNzIE5PRVJST1IgaXMgc3VwcGxpZWQg YW5kCm5vbi1uaWwuCgpTZWUgYGltZW51LS1pbmRleC1hbGlzdCcgZm9yIHRoZSBmb3JtYXQgb2Yg dGhlIGluZGV4IGFsaXN0LiIKICAob3IgKGFuZCBpbWVudS0taW5kZXgtYWxpc3QKCSAgIChvciAo bm90IGltZW51LWF1dG8tcmVzY2FuKQoJICAgICAgIChhbmQgaW1lbnUtYXV0by1yZXNjYW4KCQkg ICAgKD4gKGJ1ZmZlci1zaXplKSAgaW1lbnUtYXV0by1yZXNjYW4tbWF4b3V0KSkpKQogICAgICA7 OyBHZXQgdGhlIGluZGV4OyB0cnVuY2F0ZSBpZiBuZWNlc3NhcnkuCiAgICAgIChwcm9nbgoJKHNl dHEgaW1lbnUtLWluZGV4LWFsaXN0CgkgICAgICAoc2F2ZS1leGN1cnNpb24KCQkoc2F2ZS1yZXN0 cmljdGlvbgoJCSAgKHdpZGVuKQoJCSAgKGZ1bmNhbGwgaW1lbnUtY3JlYXRlLWluZGV4LWZ1bmN0 aW9uKSkpKQoJKGltZW51LS10cnVuY2F0ZS1pdGVtcyBpbWVudS0taW5kZXgtYWxpc3QpKSkKICAo b3IgaW1lbnUtLWluZGV4LWFsaXN0IG5vZXJyb3IKICAgICAgKGltZW51LXVuYXZhaWxhYmxlLWVy cm9yCiAgICAgICAiTm8gaXRlbXMgc3VpdGFibGUgZm9yIGFuIGluZGV4IGZvdW5kIGluIHRoaXMg YnVmZmVyIikpCiAgKG9yIGltZW51LS1pbmRleC1hbGlzdAogICAgICAoc2V0cSBpbWVudS0taW5k ZXgtYWxpc3QgKGxpc3QgbmlsKSkpCiAgKGlmIGltZW51LWF1dG8tcmVzY2FuCiAgICAgIGltZW51 LS1pbmRleC1hbGlzdAogICAgOzsgQWRkIGEgcmVzY2FuIG9wdGlvbiB0byB0aGUgaW5kZXguCiAg ICAoY29ucyBpbWVudS0tcmVzY2FuLWl0ZW0gaW1lbnUtLWluZGV4LWFsaXN0KSkpCgooZGVmdmFy IGltZW51LS1jbGVhbnVwLXNlZW4gbmlsKQoKKGRlZnVuIGltZW51LS1jbGVhbnVwICgmb3B0aW9u YWwgYWxpc3QpCiAgIkZpbmQgYWxsIG1hcmtlcnMgaW4gQUxJU1QgYW5kIG1ha2UgdGhlbSBwb2lu dCBub3doZXJlLgpJZiBBTElTVCBpcyBuaWwgKHRoZSBub3JtYWwgY2FzZSksIHVzZSBgaW1lbnUt LWluZGV4LWFsaXN0Jy4KTm9uLW5pbCBhcmd1bWVudHMgYXJlIGluIHJlY3Vyc2l2ZSBjYWxscy4i CiAgOzsgSWYgYWxpc3QgaXMgcHJvdmlkZWQgdXNlIHRoYXQgbGlzdC4KICA7OyBJZiBub3QsIGVt cHR5IHRoZSB0YWJsZSBvZiBsaXN0cyBhbHJlYWR5IHNlZW4KICA7OyBhbmQgdXNlIGltZW51LS1p bmRleC1hbGlzdC4KICAoaWYgYWxpc3QKICAgICAgKHNldHEgaW1lbnUtLWNsZWFudXAtc2VlbiAo Y29ucyBhbGlzdCBpbWVudS0tY2xlYW51cC1zZWVuKSkKICAgIChzZXRxIGFsaXN0IGltZW51LS1p bmRleC1hbGlzdCBpbWVudS0tY2xlYW51cC1zZWVuIChsaXN0IGFsaXN0KSkpCgogICh3aGVuIGFs aXN0CiAgICAoZG9saXN0IChpdGVtIGFsaXN0KQogICAgICAoY29uZAogICAgICAgKChtYXJrZXJw IChjZHIgaXRlbSkpIChzZXQtbWFya2VyIChjZHIgaXRlbSkgbmlsKSkKICAgICAgIDs7IERvbid0 IHByb2Nlc3Mgb25lIGFsaXN0IHR3aWNlLgogICAgICAgKChtZW1xIChjZHIgaXRlbSkgaW1lbnUt LWNsZWFudXAtc2VlbikpCiAgICAgICAoKGltZW51LS1zdWJhbGlzdC1wIGl0ZW0pIChpbWVudS0t Y2xlYW51cCAoY2RyIGl0ZW0pKSkpKQogICAgdCkpCgooZGVmdW4gaW1lbnUtLWNyZWF0ZS1rZXlt YXAgKHRpdGxlIGFsaXN0ICZvcHRpb25hbCBjbWQpCiAgYChrZXltYXAgLHRpdGxlCiAgICAgICAg ICAgLEAobWFwY2FyCiAgICAgICAgICAgICAgKGlmIGltZW51LWFsbG93LWR1cGxpY2F0ZS1tZW51 LWl0ZW1zLWZsYWcKICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoaXRlbSkKICAgICAgICAgICAg ICAgICAgICBgKCwoaW5jcmVtZW50LXN5bWJvbC1uYW1lIChjYXIgaXRlbSkpCiAgICAgICAgICAg ICAgICAgICAgICAsKGNhciBpdGVtKQogICAgICAgICAgICAgICAgICAgICAgLEAoY29uZAogICAg ICAgICAgICAgICAgICAgICAgICAgKChpbWVudS0tc3ViYWxpc3QtcCBpdGVtKQogICAgICAgICAg ICAgICAgICAgICAgICAgIChpbWVudS0tY3JlYXRlLWtleW1hcCAoY2FyIGl0ZW0pIChjZHIgaXRl bSkgY21kKSkKICAgICAgICAgICAgICAgICAgICAgICAgICh0CiAgICAgICAgICAgICAgICAgICAg ICAgICAgKGxhbWJkYSAoKSAoaW50ZXJhY3RpdmUpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoaWYgY21kIChmdW5jYWxsIGNtZCBpdGVtKSBpdGVtKSkpKSkpCiAgICAgICAgICAgICAgICAo bGFtYmRhIChpdGVtKQogICAgICAgICAgICAgICAgICBgKCwoaW50ZXJuIChjYXIgaXRlbSkpCiAg ICAgICAgICAgICAgICAgICAgLChjYXIgaXRlbSkKICAgICAgICAgICAgICAgICAgICAsQChjb25k CiAgICAgICAgICAgICAgICAgICAgICAgKChpbWVudS0tc3ViYWxpc3QtcCBpdGVtKQogICAgICAg ICAgICAgICAgICAgICAgICAoaW1lbnUtLWNyZWF0ZS1rZXltYXAgKGNhciBpdGVtKSAoY2RyIGl0 ZW0pIGNtZCkpCiAgICAgICAgICAgICAgICAgICAgICAgKHQKICAgICAgICAgICAgICAgICAgICAg ICAgKGxhbWJkYSAoKSAoaW50ZXJhY3RpdmUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGlm IGNtZCAoZnVuY2FsbCBjbWQgaXRlbSkgaXRlbSkpKSkpKSkKICAgICAgICAgICAgICAocmVtcSBu aWwgYWxpc3QpKSkpCgooZGVmdW4gaW1lbnUtLWluLWFsaXN0IChzdHIgYWxpc3QpCiAgIkNoZWNr IHdoZXRoZXIgdGhlIHN0cmluZyBTVFIgaXMgY29udGFpbmVkIGluIG11bHRpLWxldmVsIEFMSVNU LiIKICAobGV0IChlbHQgaGVhZCB0YWlsIHJlcykKICAgIChzZXRxIHJlcyBuaWwpCiAgICAod2hp bGUgYWxpc3QKICAgICAgKHNldHEgZWx0IChjYXIgYWxpc3QpCgkgICAgdGFpbCAoY2RyIGVsdCkK CSAgICBhbGlzdCAoY2RyIGFsaXN0KQoJICAgIGhlYWQgKGNhciBlbHQpKQogICAgICA7OyBBIG5l c3RlZCBBTElTVCBlbGVtZW50IGxvb2tzIGxpa2UKICAgICAgOzsgICAoSU5ERVgtTkFNRSAoSU5E RVgtTkFNRSAuIElOREVYLVBPU0lUSU9OKSAuLi4pCiAgICAgIDs7IHdoaWxlIGEgYm90dG9tLWxl dmVsIGVsZW1lbnQgbG9va3MgbGlrZQogICAgICA7OyAgIChJTkRFWC1OQU1FIC4gSU5ERVgtUE9T SVRJT04pCiAgICAgIDs7IG9yCiAgICAgIDs7ICAgKElOREVYLU5BTUUgSU5ERVgtUE9TSVRJT04g RlVOQ1RJT04gQVJHVU1FTlRTLi4uKQogICAgICA7OyBXZSBhcmUgb25seSBpbnRlcmVzdGVkIGlu IHRoZSBib3R0b20tbGV2ZWwgZWxlbWVudHMsIHNvIHdlIG5lZWQgdG8KICAgICAgOzsgcmVjdXJz ZSBpZiBUQUlMIGlzIGEgbmVzdGVkIEFMSVNULgogICAgICAoY29uZCAoKGltZW51LS1zdWJhbGlz dC1wIGVsdCkKCSAgICAgKGlmIChzZXRxIHJlcyAoaW1lbnUtLWluLWFsaXN0IHN0ciB0YWlsKSkK CQkgKHNldHEgYWxpc3QgbmlsKSkpCgkgICAgKChpZiBpbWVudS1uYW1lLWxvb2t1cC1mdW5jdGlv bgogICAgICAgICAgICAgICAgIChmdW5jYWxsIGltZW51LW5hbWUtbG9va3VwLWZ1bmN0aW9uIHN0 ciBoZWFkKQogICAgICAgICAgICAgICAoc3RyaW5nPSBzdHIgaGVhZCkpCgkgICAgIChzZXRxIGFs aXN0IG5pbCByZXMgZWx0KSkpKQogICAgcmVzKSkKCjs7OyMjI2F1dG9sb2FkCihkZWZ2YXItbG9j YWwgaW1lbnUtc3ludGF4LWFsaXN0IG5pbAogICJBbGlzdCBvZiBzeW50YXggdGFibGUgbW9kaWZp ZXJzIHRvIHVzZSB3aGlsZSBpbiBgaW1lbnUtLWdlbmVyaWMtZnVuY3Rpb24nLgoKVGhlIGNhciBv ZiB0aGUgYXNzb2NzIG1heSBiZSBlaXRoZXIgYSBjaGFyYWN0ZXIgb3IgYSBzdHJpbmcgYW5kIHRo ZQpjZHIgaXMgYSBzeW50YXggZGVzY3JpcHRpb24gYXBwcm9wcmlhdGUgZm9yIGBtb2RpZnktc3lu dGF4LWVudHJ5Jy4gIEZvcgphIHN0cmluZywgYWxsIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBzdHJp bmcgZ2V0IHRoZSBzcGVjaWZpZWQgc3ludGF4LgoKVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCB0byBn aXZlIHdvcmQgc3ludGF4IHRvIGNoYXJhY3RlcnMgd2hpY2gKbm9ybWFsbHkgaGF2ZSBzeW1ib2wg c3ludGF4IHRvIHNpbXBsaWZ5IGBpbWVudS1leHByZXNzaW9uJwphbmQgc3BlZWQtdXAgbWF0Y2hp bmcuIikKCihkZWZ1biBpbWVudS1kZWZhdWx0LWNyZWF0ZS1pbmRleC1mdW5jdGlvbiAoKQogICJE ZWZhdWx0IGZ1bmN0aW9uIHRvIGNyZWF0ZSBhbiBpbmRleCBhbGlzdCBvZiB0aGUgY3VycmVudCBi dWZmZXIuCgpUaGUgbW9zdCBnZW5lcmFsIG1ldGhvZCBpcyB0byBtb3ZlIHBvaW50IHRvIGVuZCBv ZiBidWZmZXIsIHRoZW4gcmVwZWF0ZWRseSBjYWxsCmBpbWVudS1wcmV2LWluZGV4LXBvc2l0aW9u LWZ1bmN0aW9uJyBhbmQgYGltZW51LWV4dHJhY3QtaW5kZXgtbmFtZS1mdW5jdGlvbicuCkFsbCB0 aGUgcmVzdWx0cyByZXR1cm5lZCBieSB0aGUgbGF0dGVyIGFyZSBnYXRoZXJlZCBpbnRvIGFuIGlu ZGV4IGFsaXN0LgpUaGlzIG1ldGhvZCBpcyB1c2VkIGlmIHRob3NlIHR3byB2YXJpYWJsZXMgYXJl IG5vbi1uaWwuCgpUaGUgYWx0ZXJuYXRlIG1ldGhvZCwgd2hpY2ggaXMgdGhlIG9uZSBtb3N0IG9m dGVuIHVzZWQsIGlzIHRvIGNhbGwKYGltZW51LS1nZW5lcmljLWZ1bmN0aW9uJyB3aXRoIGBpbWVu dS1nZW5lcmljLWV4cHJlc3Npb24nIGFzIGFyZ3VtZW50LiIKICA7OyBUaGVzZSBzaG91bGQgcmVh bGx5IGJlIGRvbmUgYnkgc2V0dGluZyBpbWVudS1jcmVhdGUtaW5kZXgtZnVuY3Rpb24KICA7OyBp biB0aGVzZSBtYWpvciBtb2Rlcy4gIEJ1dCBzYXZlIHRoYXQgY2hhbmdlIGZvciBsYXRlci4KICAo Y29uZCAoKGFuZCBpbWVudS1wcmV2LWluZGV4LXBvc2l0aW9uLWZ1bmN0aW9uCgkgICAgICBpbWVu dS1leHRyYWN0LWluZGV4LW5hbWUtZnVuY3Rpb24pCgkgKGxldCAoKGluZGV4LWFsaXN0ICcoKSkg KHBvcyAocG9pbnQtbWF4KSkKICAgICAgICAgICAgICAgKHN0YXJ0IChmbG9hdC10aW1lKSkKCSAg ICAgICBuYW1lKQoJICAgKGdvdG8tY2hhciBwb3MpCgkgICA7OyBTZWFyY2ggZm9yIHRoZSBmdW5j dGlvbgoJICAgKHdoaWxlIChhbmQgKGZ1bmNhbGwgaW1lbnUtcHJldi1pbmRleC1wb3NpdGlvbi1m dW5jdGlvbikKICAgICAgICAgICAgICAgICAgICAgICA7OyBEb24ndCB1c2UgYW4gZXhjZXNzaXZl IGFtb3VudCBvZiB0aW1lLgogICAgICAgICAgICAgICAgICAgICAgICg8ICgtIChmbG9hdC10aW1l KSBzdGFydCkgaW1lbnUtbWF4LWluZGV4LXRpbWUpKQogICAgICAgICAgICAgKHVubGVzcyAoPCAo cG9pbnQpIHBvcykKICAgICAgICAgICAgICAgKGVycm9yICJJbmZpbml0ZSBsb29wIGF0ICVzOiVk OiBpbWVudS1wcmV2LWluZGV4LXBvc2l0aW9uLWZ1bmN0aW9uIGRvZXMgbm90IG1vdmUgcG9pbnQi IChidWZmZXItbmFtZSkgcG9zKSkKICAgICAgICAgICAgIChzZXRxIHBvcyAocG9pbnQpKQoJICAg ICAoc2F2ZS1leGN1cnNpb24KCSAgICAgICAoc2V0cSBuYW1lIChmdW5jYWxsIGltZW51LWV4dHJh Y3QtaW5kZXgtbmFtZS1mdW5jdGlvbikpKQoJICAgICAoYW5kIChzdHJpbmdwIG5hbWUpCiAJCSAg OzsgW3lkaV0gVXBkYXRlZCBmb3IgaW1lbnUtdXNlLW1hcmtlcnMuCgkJICAocHVzaCAoY29ucyBu YW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBpbWVudS11c2UtbWFya2VycyAo cG9pbnQtbWFya2VyKSAocG9pbnQpKSkKCQkJaW5kZXgtYWxpc3QpKSkKCSAgIGluZGV4LWFsaXN0 KSkKCTs7IFVzZSBnZW5lcmljIGV4cHJlc3Npb24gaWYgcG9zc2libGUuCgkoKGFuZCBpbWVudS1n ZW5lcmljLWV4cHJlc3Npb24pCgkgKGltZW51LS1nZW5lcmljLWZ1bmN0aW9uIGltZW51LWdlbmVy aWMtZXhwcmVzc2lvbikpCgkodAogICAgICAgICAoaW1lbnUtdW5hdmFpbGFibGUtZXJyb3IgIlRo aXMgYnVmZmVyIGNhbm5vdCB1c2UgYGltZW51LWRlZmF1bHQtY3JlYXRlLWluZGV4LWZ1bmN0aW9u JyIpKSkpCgo7OzsKOzs7IEdlbmVyaWMgaW5kZXggZ2F0aGVyaW5nIGZ1bmN0aW9uLgo7OzsKCjs7 OyMjI2F1dG9sb2FkCihkZWZ2YXItbG9jYWwgaW1lbnUtY2FzZS1mb2xkLXNlYXJjaCB0CiAgIkRl ZmluZXMgd2hldGhlciBgaW1lbnUtLWdlbmVyaWMtZnVuY3Rpb24nIHNob3VsZCBmb2xkIGNhc2Ug d2hlbiBtYXRjaGluZy4KClRoaXMgdmFyaWFibGUgc2hvdWxkIGJlIHNldCAob25seSkgYnkgaW5p dGlhbGl6YXRpb24gY29kZQpmb3IgbW9kZXMgd2hpY2ggdXNlIGBpbWVudS0tZ2VuZXJpYy1mdW5j dGlvbicuICBJZiBpdCBpcyBub3Qgc2V0LCBidXQKYGZvbnQtbG9jay1kZWZhdWx0cycgaXMgc2V0 LCB0aGVuIGZvbnQtbG9jaydzIHNldHRpbmcgaXMgdXNlZC4iKQoKOzsgVGhpcyBmdW5jdGlvbiBj YW4gYmUgY2FsbGVkIHdpdGggcXVpdHRpbmcgZGlzYWJsZWQsCjs7IHNvIGl0IG5lZWRzIHRvIGJl IGNhcmVmdWwgbmV2ZXIgdG8gbG9vcCEKKGRlZnVuIGltZW51LS1nZW5lcmljLWZ1bmN0aW9uIChw YXR0ZXJucykKICAiUmV0dXJuIGFuIGluZGV4IGFsaXN0IG9mIHRoZSBjdXJyZW50IGJ1ZmZlciBi YXNlZCBvbiBQQVRURVJOUy4KUEFUVEVSTlMgc2hvdWxkIGJlIGFuIGFsaXN0IG9mIHRoZSBzYW1l IGZvcm0gYXMgYGltZW51LWdlbmVyaWMtZXhwcmVzc2lvbicuCgpJZiBgaW1lbnUtZ2VuZXJpYy1z a2lwLWNvbW1lbnRzLWFuZC1zdHJpbmdzJyBpcyBub24tbmlsLCB0aGlzIGlnbm9yZXMKdGV4dCBp bnNpZGUgY29tbWVudHMgYW5kIHN0cmluZ3MuCgpJZiBgaW1lbnUtY2FzZS1mb2xkLXNlYXJjaCcg aXMgbm9uLW5pbCwgdGhpcyBpZ25vcmVzIGNhc2UuCgpUaGUgcmV0dXJuIHZhbHVlIGlzIGFuIGFs aXN0IG9mIHRoZSBmb3JtCiAoSU5ERVgtTkFNRSAuIElOREVYLVBPU0lUSU9OKQpvcgogKElOREVY LU5BTUUgSU5ERVgtUE9TSVRJT04gRlVOQ1RJT04gQVJHVU1FTlRTLi4uKQpUaGUgcmV0dXJuIHZh bHVlIG1heSBhbHNvIGNvbnNpc3Qgb2YgbmVzdGVkIGluZGV4IGFsaXN0cyBsaWtlOgogKElOREVY LU5BTUUgLiBJTkRFWC1BTElTVCkKZGVwZW5kaW5nIG9uIFBBVFRFUk5TLiIKICAobGV0ICgoaW5k ZXgtYWxpc3QgKGxpc3QgJ2R1bW15KSkKICAgICAgICAoY2FzZS1mb2xkLXNlYXJjaCAoaWYgKG9y IChsb2NhbC12YXJpYWJsZS1wICdpbWVudS1jYXNlLWZvbGQtc2VhcmNoKQoJCQkJICAobm90IChs b2NhbC12YXJpYWJsZS1wICdmb250LWxvY2stZGVmYXVsdHMpKSkKCQkJICAgICAgaW1lbnUtY2Fz ZS1mb2xkLXNlYXJjaAoJCQkgICAgKG50aCAyIGZvbnQtbG9jay1kZWZhdWx0cykpKQogICAgICAg IChzdGFydC10aW1lIChmbG9hdC10aW1lKSkKICAgICAgICAob2xkLXRhYmxlIChzeW50YXgtdGFi bGUpKQogICAgICAgICh0YWJsZSAoY29weS1zeW50YXgtdGFibGUgKHN5bnRheC10YWJsZSkpKQog ICAgICAgIChzbGlzdCBpbWVudS1zeW50YXgtYWxpc3QpKQogICAgOzsgTW9kaWZ5IHRoZSBzeW50 YXggdGFibGUgdXNlZCB3aGlsZSBtYXRjaGluZyByZWdleHBzLgogICAgKGRvbGlzdCAoc3luIHNs aXN0KQogICAgICA7OyBUaGUgY2hhcmFjdGVyKHMpIHRvIG1vZGlmeSBtYXkgYmUgYSBzaW5nbGUg Y2hhciBvciBhIHN0cmluZy4KICAgICAgKGlmIChudW1iZXJwIChjYXIgc3luKSkKCSAgKG1vZGlm eS1zeW50YXgtZW50cnkgKGNhciBzeW4pIChjZHIgc3luKSB0YWJsZSkKICAgICAgICAobWFwYyAo bGFtYmRhIChjKQogICAgICAgICAgICAgICAgKG1vZGlmeS1zeW50YXgtZW50cnkgYyAoY2RyIHN5 bikgdGFibGUpKQogICAgICAgICAgICAgIChjYXIgc3luKSkpKQogICAgKGdvdG8tY2hhciAocG9p bnQtbWF4KSkKICAgICh1bndpbmQtcHJvdGVjdAkJCTsgRm9yIHN5bnRheCB0YWJsZS4KCShzYXZl LW1hdGNoLWRhdGEKCSAgKHNldC1zeW50YXgtdGFibGUgdGFibGUpCgoJICA7OyBNYXAgb3ZlciB0 aGUgZWxlbWVudHMgb2YgaW1lbnUtZ2VuZXJpYy1leHByZXNzaW9uCgkgIDs7ICh0eXBpY2FsbHkg ZnVuY3Rpb25zLCB2YXJpYWJsZXMgLi4uKS4KCSAgKGRvbGlzdCAocGF0IHBhdHRlcm5zKQoJICAg IChsZXQgKChtZW51LXRpdGxlIChjYXIgcGF0KSkKCQkgIChyZWdleHAgKG50aCAxIHBhdCkpCgkJ ICAoaW5kZXggKG50aCAyIHBhdCkpCgkJICAoZnVuY3Rpb24gKG50aCAzIHBhdCkpCgkJICAocmVz dCAobnRoY2RyIDQgcGF0KSkKCQkgIHN0YXJ0IGJlZykKCSAgICAgIDs7IEdvIGJhY2t3YXJkcyBm b3IgY29udmVuaWVuY2Ugb2YgYWRkaW5nIGl0ZW1zIGluIG9yZGVyLgoJICAgICAgKGdvdG8tY2hh ciAocG9pbnQtbWF4KSkKCSAgICAgICh3aGlsZSAoYW5kIChpZiAoZnVuY3Rpb25wIHJlZ2V4cCkK CQkJICAgICAgKGZ1bmNhbGwgcmVnZXhwKQoJCQkgICAgKGFuZAoJCQkgICAgIChyZS1zZWFyY2gt YmFja3dhcmQgcmVnZXhwIG5pbCB0KQoJCQkgICAgIDs7IERvIG5vdCBjb3VudCBpbnZpc2libGUg ZGVmaW5pdGlvbnMuCgkJCSAgICAgKGxldCAoKGludmlzIChpbnZpc2libGUtcCAocG9pbnQpKSkp CgkJCSAgICAgICAob3IgKG5vdCBpbnZpcykKCQkJCSAgIChwcm9nbgoJCQkJICAgICAod2hpbGUg KGFuZCBpbnZpcwoJCQkJCQkgKG5vdCAoYm9icCkpKQoJCQkJICAgICAgIChzZXRxIGludmlzIChu b3QgKHJlLXNlYXJjaC1iYWNrd2FyZAoJCQkJCQkJIHJlZ2V4cCBuaWwgJ21vdmUpKSkpCgkJCQkg ICAgIChub3QgaW52aXMpKSkpKSkKCQkJICA7OyBFeGl0IHRoZSBsb29wIGlmIHdlIGdldCBhbiBl bXB0eSBtYXRjaCwKCQkJICA7OyBiZWNhdXNlIGl0IG1lYW5zIGEgYmFkIHJlZ2V4cCB3YXMgc3Bl Y2lmaWVkLgoJCQkgIChub3QgKD0gKG1hdGNoLWJlZ2lubmluZyAwKSAobWF0Y2gtZW5kIDApKSkK ICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBEb24ndCB0YWtlIGFuIGV4Y2Vzc2l2ZSBhbW91 bnQgb2YgdGltZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAob3IgKDwgKC0gKGZsb2F0LXRp bWUpIHN0YXJ0LXRpbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZW51LW1h eC1pbmRleC10aW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvZ24KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAobWVzc2FnZSAiYGltZW51LW1heC1pbmRleC10aW1l JyBleGNlZWRlZCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsKSkpCgkJKHNl dHEgc3RhcnQgKHBvaW50KSkKCQk7OyBSZWNvcmQgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lIGluIHdo aWNoIHRoZSBtYXRjaCBzdGFydHMuCgkJOzsgVGhhdCdzIHRoZSBvZmZpY2lhbCBwb3NpdGlvbiBv ZiB0aGlzIGRlZmluaXRpb24uCgkJKGdvdG8tY2hhciAobWF0Y2gtYmVnaW5uaW5nIGluZGV4KSkK CQkoYmVnaW5uaW5nLW9mLWxpbmUpCgkJKHNldHEgYmVnIChwb2ludCkpCgkJOzsgQWRkIHRoaXMg c29ydCBvZiBzdWJtZW51IG9ubHkgd2hlbiB3ZSd2ZSBmb3VuZCBhbgoJCTs7IGl0ZW0gZm9yIGl0 LCBhdm9pZGluZyBlbXB0eSwgZHVmZiBtZW51cy4KCQkodW5sZXNzIChhc3NvYyBtZW51LXRpdGxl IGluZGV4LWFsaXN0KQoJCSAgKHB1c2ggKGxpc3QgbWVudS10aXRsZSkgaW5kZXgtYWxpc3QpKQoJ CShpZiBpbWVudS11c2UtbWFya2VycwoJCSAgICAoc2V0cSBiZWcgKGNvcHktbWFya2VyIGJlZykp KQoJCShsZXQgKChpdGVtCgkJICAgICAgIChpZiBmdW5jdGlvbgoJCQkgICAobmNvbmMgKGxpc3Qg KG1hdGNoLXN0cmluZy1uby1wcm9wZXJ0aWVzIGluZGV4KQoJCQkJCWJlZyBmdW5jdGlvbikKCQkJ CSAgcmVzdCkKCQkJIChjb25zIChtYXRjaC1zdHJpbmctbm8tcHJvcGVydGllcyBpbmRleCkKCQkJ ICAgICAgIGJlZykpKQoJCSAgICAgIDs7IFRoaXMgaXMgdGhlIGRlc2lyZWQgc3VibWVudSwKCQkg ICAgICA7OyBzdGFydGluZyB3aXRoIGl0cyB0aXRsZSAob3IgbmlsKS4KCQkgICAgICAobWVudSAo YXNzb2MgbWVudS10aXRsZSBpbmRleC1hbGlzdCkpKQoJCSAgOzsgSW5zZXJ0IHRoZSBpdGVtIHVu bGVzcyBpdCBpcyBhbHJlYWR5IHByZXNlbnQuCgkJICAodW5sZXNzIChvciAobWVtYmVyIGl0ZW0g KGNkciBtZW51KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFuZCBpbWVudS1nZW5l cmljLXNraXAtY29tbWVudHMtYW5kLXN0cmluZ3MKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChnb3RvLWNoYXIgc3RhcnQpIChudGggOCAoc3ludGF4LXBwc3MpKSkpKQoJCSAgICAoc2V0 Y2RyIG1lbnUKCQkJICAgIChjb25zIGl0ZW0gKGNkciBtZW51KSkpKSkKCQk7OyBHbyB0byB0aGUg c3RhcnQgb2YgdGhlIG1hdGNoLCB0byBtYWtlIHN1cmUgd2UKCQk7OyBrZWVwIG1ha2luZyBwcm9n cmVzcyBiYWNrd2FyZHMuCgkJKGdvdG8tY2hhciBzdGFydCkpKSkpCiAgICAgIChzZXQtc3ludGF4 LXRhYmxlIG9sZC10YWJsZSkpCiAgICA7OyBTb3J0IGVhY2ggc3VibWVudSBieSBwb3NpdGlvbi4K ICAgIDs7IFRoaXMgaXMgaW4gY2FzZSBvbmUgc3VibWVudSBnZXRzIGl0ZW1zIGZyb20gdHdvIGRp ZmZlcmVudCByZWdleHBzLgogICAgKGRvbGlzdCAoaXRlbSBpbmRleC1hbGlzdCkKICAgICAgKHdo ZW4gKGxpc3RwIGl0ZW0pCgkoc2V0Y2RyIGl0ZW0gKHNvcnQgKGNkciBpdGVtKSAnaW1lbnUtLXNv cnQtYnktcG9zaXRpb24pKSkpCiAgICA7OyBSZW1vdmUgYW55IGVtcHR5IG1lbnVzLiAgVGhhdCBj YW4gaGFwcGVuIGJlY2F1c2Ugb2Ygc2tpcHBpbmcKICAgIDs7IHRoaW5ncyBpbnNpZGUgY29tbWVu dHMgb3Igc3RyaW5ncy4KICAgIChzZXRxIGluZGV4LWFsaXN0IChjbC1kZWxldGUtaWYKICAgICAg ICAgICAgICAgICAgICAgICAobGFtYmRhIChpdCkgKGFuZCAoY29uc3AgaXQpIChudWxsIChjZHIg aXQpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgtYWxpc3QpKQogICAgKGxldCAoKG1h aW4tZWxlbWVudCAoYXNzcSBuaWwgaW5kZXgtYWxpc3QpKSkKICAgICAgKG5jb25jIChkZWxxIG1h aW4tZWxlbWVudCAoZGVscSAnZHVtbXkgaW5kZXgtYWxpc3QpKQogICAgICAgICAgICAgKGNkciBt YWluLWVsZW1lbnQpKSkpKQoKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Owo7OzsKOzs7IFRoZSBtYWluIGZ1bmN0aW9ucyBmb3Ig dGhpcyBwYWNrYWdlIQo7OzsKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OwoKOzsgU2VlIGFsc28gaW5mby1sb29rdXAtZmluZC1p dGVtCihkZWZ1biBpbWVudS1maW5kLWRlZmF1bHQgKGd1ZXNzIGNvbXBsZXRpb25zKQogICJGdXp6 aWx5IGZpbmQgYW4gaXRlbSBiYXNlZCBvbiBHVUVTUyBpbnNpZGUgdGhlIGFsaXN0IENPTVBMRVRJ T05TLiIKICAoY2F0Y2ggJ2ZvdW5kCiAgICAobGV0ICgoY2FzZS1mb2xkLXNlYXJjaCB0KSkKICAg ICAgKGlmIChhc3NvYyBndWVzcyBjb21wbGV0aW9ucykgZ3Vlc3MKCShkb2xpc3QgKHJlIChsaXN0 IChjb25jYXQgIlxcYCIgKHJlZ2V4cC1xdW90ZSBndWVzcykgIlxcJyIpCgkJCSAgKGNvbmNhdCAi XFxgIiAocmVnZXhwLXF1b3RlIGd1ZXNzKSkKCQkJICAoY29uY2F0IChyZWdleHAtcXVvdGUgZ3Vl c3MpICJcXCciKQoJCQkgIChyZWdleHAtcXVvdGUgZ3Vlc3MpKSkKCSAgKGRvbGlzdCAoeCBjb21w bGV0aW9ucykKCSAgICAoaWYgKHN0cmluZy1tYXRjaCByZSAoY2FyIHgpKSAodGhyb3cgJ2ZvdW5k IChjYXIgeCkpKSkpKSkpKQoKKGRlZnVuIGltZW51LS1jb21wbGV0aW9uLWJ1ZmZlciAoaW5kZXgt YWxpc3QgJm9wdGlvbmFsIHByb21wdCkKICAiTGV0IHRoZSB1c2VyIHNlbGVjdCBmcm9tIElOREVY LUFMSVNUIGluIGEgY29tcGxldGlvbiBidWZmZXIgd2l0aCBQUk9NUFQuCgpSZXR1cm4gb25lIG9m IHRoZSBlbnRyaWVzIGluIGluZGV4LWFsaXN0IG9yIG5pbC4iCiAgOzsgQ3JlYXRlIGEgbGlzdCBm b3IgdGhpcyBidWZmZXIgb25seSB3aGVuIG5lZWRlZC4KICAobGV0ICgobmFtZSAodGhpbmctYXQt cG9pbnQgJ3N5bWJvbCkpCgljaG9pY2UKCShwcmVwYXJlZC1pbmRleC1hbGlzdAoJIChpZiAobm90 IGltZW51LXNwYWNlLXJlcGxhY2VtZW50KSBpbmRleC1hbGlzdAoJICAgKG1hcGNhcgoJICAgIChs YW1iZGEgKGl0ZW0pCgkgICAgICAoY29ucyAoc3Vic3QtY2hhci1pbi1zdHJpbmcgP1xzIChhcmVm IGltZW51LXNwYWNlLXJlcGxhY2VtZW50IDApCgkJCQkJICAoY2FyIGl0ZW0pKQoJCSAgICAoY2Ry IGl0ZW0pKSkKCSAgICBpbmRleC1hbGlzdCkpKSkKICAgICh3aGVuIChzdHJpbmdwIG5hbWUpCiAg ICAgIChzZXRxIG5hbWUgKG9yIChpbWVudS1maW5kLWRlZmF1bHQgbmFtZSBwcmVwYXJlZC1pbmRl eC1hbGlzdCkgbmFtZSkpKQogICAgKHVubGVzcyBwcm9tcHQKICAgICAgKHNldHEgcHJvbXB0IChm b3JtYXQtcHJvbXB0CiAgICAgICAgICAgICAgICAgICAgIkluZGV4IGl0ZW0iCgkgICAgICAgICAg ICAoYW5kIG5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgIChpbWVudS0taW4tYWxpc3QgbmFt ZSBwcmVwYXJlZC1pbmRleC1hbGlzdCkKICAgICAgICAgICAgICAgICAgICAgICAgIDs7IERlZmF1 bHQgdG8gYG5hbWUnIGlmIGl0J3MgaW4gdGhlIGFsaXN0LgogICAgICAgICAgICAgICAgICAgICAg ICAgbmFtZSkpKSkKICAgIDs7IERpc3BsYXkgdGhlIGNvbXBsZXRpb24gYnVmZmVyLgogICAgKG1p bmlidWZmZXItd2l0aC1zZXR1cC1ob29rCiAgICAgICAgKGxhbWJkYSAoKQogICAgICAgICAgKHNl dHEtbG9jYWwgbWluaWJ1ZmZlci1hbGxvdy10ZXh0LXByb3BlcnRpZXMgdCkKICAgICAgICAgIChz ZXRxLWxvY2FsIGNvbXBsZXRpb24tZXh0cmEtcHJvcGVydGllcwogICAgICAgICAgICAgICAgICAg ICAgYCggOmNhdGVnb3J5IGltZW51CiAgICAgICAgICAgICAgICAgICAgICAgICAsQCh3aGVuIChl cSBpbWVudS1mbGF0dGVuICdhbm5vdGF0aW9uKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg IGAoOmFubm90YXRpb24tZnVuY3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwo bGFtYmRhIChzKSAoZ2V0LXRleHQtcHJvcGVydHkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgMCAnaW1lbnUtc2VjdGlvbiBzKSkpKQogICAgICAgICAgICAgICAg ICAgICAgICAgLEAod2hlbiAoZXEgaW1lbnUtZmxhdHRlbiAnZ3JvdXApCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYCg6Z3JvdXAtZnVuY3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICwobGFtYmRhIChzIHRyYW5zZm9ybSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChpZiB0cmFuc2Zvcm0gcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoZ2V0LXRleHQtcHJvcGVydHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDAgJ2ltZW51LXNlY3Rpb24gcykpKSkpKSkKICAgICAgICAgICh1bmxlc3MgaW1lbnUtZWFnZXIt Y29tcGxldGlvbi1idWZmZXIKICAgICAgICAgICAgKG1pbmlidWZmZXItY29tcGxldGlvbi1oZWxw KSkpCiAgICAgIChzZXRxIG5hbWUgKGNvbXBsZXRpbmctcmVhZCBwcm9tcHQKCQkJCSAgcHJlcGFy ZWQtaW5kZXgtYWxpc3QKCQkJCSAgbmlsIHQgbmlsICdpbWVudS0taGlzdG9yeS1saXN0IG5hbWUp KSkKCiAgICAod2hlbiAoc3RyaW5ncCBuYW1lKQogICAgICAob3IgKGdldC10ZXh0LXByb3BlcnR5 IDAgJ2ltZW51LWNob2ljZSBuYW1lKQoJICAocHJvZ24KCSAgICAoc2V0cSBjaG9pY2UgKGFzc29j IG5hbWUgcHJlcGFyZWQtaW5kZXgtYWxpc3QpKQoJICAgIChpZiAoaW1lbnUtLXN1YmFsaXN0LXAg Y2hvaWNlKQoJCShpbWVudS0tY29tcGxldGlvbi1idWZmZXIgKGNkciBjaG9pY2UpIHByb21wdCkK CSAgICAgIGNob2ljZSkpKSkpKQoKKGRlZnVuIGltZW51LS1tb3VzZS1tZW51IChpbmRleC1hbGlz dCBldmVudCAmb3B0aW9uYWwgdGl0bGUpCiAgIkxldCB0aGUgdXNlciBzZWxlY3QgZnJvbSBhIGJ1 ZmZlciBpbmRleCBmcm9tIGEgbW91c2UgbWVudS4KCklOREVYLUFMSVNUIGlzIHRoZSBidWZmZXIg aW5kZXggYW5kIEVWRU5UIGlzIGEgbW91c2UgZXZlbnQuCgpSZXR1cm5zIHQgZm9yIHJlc2NhbiBh bmQgb3RoZXJ3aXNlIGFuIGVsZW1lbnQgb3Igc3ViZWxlbWVudCBvZiBJTkRFWC1BTElTVC4iCiAg KHNldHEgaW5kZXgtYWxpc3QgKGltZW51LS1zcGxpdC1zdWJtZW51cyBpbmRleC1hbGlzdCkpCiAg KGxldCogKChtZW51IChpbWVudS0tc3BsaXQtbWVudSBpbmRleC1hbGlzdCAob3IgdGl0bGUgKGJ1 ZmZlci1uYW1lKSkpKQoJIChtYXAgKGltZW51LS1jcmVhdGUta2V5bWFwIChjYXIgbWVudSkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNkciAoaWYgKGFuZCAobnVsbCAoY2Rk ciBtZW51KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoc3RyaW5ncCAoY2FhZHIgbWVudSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGNvbnNwIChjZGFkciBtZW51KSkpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYWRyIG1lbnUpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBtZW51KSkpKSkKICAgIChwb3B1cC1tZW51IG1hcCBl dmVudCkpKQoKKGRlZnVuIGltZW51LS1mbGF0dGVuLWluZGV4LWFsaXN0IChpbmRleC1hbGlzdCAm b3B0aW9uYWwgY29uY2F0LW5hbWVzIHByZWZpeCkKICA7OyBUYWtlcyBhIG5lc3RlZCBJTkRFWC1B TElTVCBhbmQgcmV0dXJucyBhIGZsYXQgaW5kZXggYWxpc3QuCiAgOzsgSWYgb3B0aW9uYWwgQ09O Q0FULU5BTUVTIGlzIG5vbi1uaWwsIHRoZW4gYSBuZXN0ZWQgaW5kZXggaGFzIGl0cwogIDs7IG5h bWUgYW5kIGEgc3BhY2UgY29uY2F0ZW5hdGVkIHRvIHRoZSBuYW1lcyBvZiB0aGUgY2hpbGRyZW4u CiAgOzsgVGhpcmQgYXJndW1lbnQgUFJFRklYIGlzIGZvciBpbnRlcm5hbCB1c2Ugb25seS4KICAo bWFwY2FuCiAgIChsYW1iZGEgKGl0ZW0pCiAgICAgKGxldCogKChuYW1lIChjYXIgaXRlbSkpCgkg ICAgKHBvcyAoY2RyIGl0ZW0pKQoJICAgIChuZXctcHJlZml4IChhbmQgY29uY2F0LW5hbWVzCgkJ CSAgICAgKGlmIHByZWZpeAoJCQkJIChjb25jYXQgcHJlZml4IGltZW51LWxldmVsLXNlcGFyYXRv ciBuYW1lKQoJCQkgICAgICAgbmFtZSkpKSkKICAgICAgIChjb25kCgkoKG5vdCAoaW1lbnUtLXN1 YmFsaXN0LXAgaXRlbSkpCgkgKGxpc3QgKGNvbnMgKHBjYXNlIGltZW51LWZsYXR0ZW4KICAgICAg ICAgICAgICAgICAgICAgICAoJ2Fubm90YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgKGlm IHByZWZpeAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3BlcnRpemUgbmFtZQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltZW51LXNlY3Rpb24gKGZvcm1h dCAiICglcykiIHByZWZpeCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICdpbWVudS1jaG9pY2UgaXRlbSkKICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcGVydGl6 ZSBuZXctcHJlZml4ICdpbWVudS1jaG9pY2UgaXRlbSkpKQogICAgICAgICAgICAgICAgICAgICAg ICgnZ3JvdXAgKHByb3BlcnRpemUgbmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJ2ltZW51LXNlY3Rpb24gKG9yIHByZWZpeCAiKiIpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1lbnUtY2hvaWNlIGl0ZW0pKQogICAgICAg ICAgICAgICAgICAgICAgIChfIG5ldy1wcmVmaXgpKQoJCSAgICAgcG9zKSkpCgkodAoJIChpbWVu dS0tZmxhdHRlbi1pbmRleC1hbGlzdCBwb3MgY29uY2F0LW5hbWVzIG5ldy1wcmVmaXgpKSkpKQog ICBpbmRleC1hbGlzdCkpCgooZGVmdW4gaW1lbnUtY2hvb3NlLWJ1ZmZlci1pbmRleCAoJm9wdGlv bmFsIHByb21wdCBhbGlzdCkKICAiTGV0IHRoZSB1c2VyIHNlbGVjdCBmcm9tIGEgYnVmZmVyIGlu ZGV4IGFuZCByZXR1cm4gdGhlIGNob3NlbiBpbmRleC4KCklmIHRoZSB1c2VyIG9yaWdpbmFsbHkg YWN0aXZhdGVkIHRoaXMgZnVuY3Rpb24gd2l0aCB0aGUgbW91c2UsIGEgbW91c2UKbWVudSBpcyB1 c2VkLiAgT3RoZXJ3aXNlIGEgY29tcGxldGlvbiBidWZmZXIgaXMgdXNlZCBhbmQgdGhlIHVzZXIg aXMKcHJvbXB0ZWQgd2l0aCBQUk9NUFQuCgpJZiB5b3UgY2FsbCB0aGlzIGZ1bmN0aW9uIHdpdGgg aW5kZXggYWxpc3QgQUxJU1QsIHRoZW4gaXQgbGV0cyB0aGUgdXNlcgpzZWxlY3QgZnJvbSBBTElT VC4KCldpdGggbm8gaW5kZXggYWxpc3QgQUxJU1QsIGl0IGNhbGxzIGBpbWVudS0tbWFrZS1pbmRl eC1hbGlzdCcgdG8KY3JlYXRlIHRoZSBpbmRleCBhbGlzdC4KCklmIGBpbWVudS11c2UtcG9wdXAt bWVudScgaXMgbmlsLCB0aGVuIHRoZSBjb21wbGV0aW9uIGJ1ZmZlcgppcyBhbHdheXMgdXNlZCwg bm8gbWF0dGVyIGlmIHRoZSBtb3VzZSB3YXMgdXNlZCBvciBub3QuCgpUaGUgcmV0dXJuZWQgdmFs dWUgaXMgb2YgdGhlIGZvcm0gKElOREVYLU5BTUUgLiBJTkRFWC1QT1NJVElPTikuIgogIChsZXQg KGluZGV4LWFsaXN0CgkobW91c2UtdHJpZ2dlcmVkIChsaXN0cCBsYXN0LW5vbm1lbnUtZXZlbnQp KQoJKHJlc3VsdCB0KSkKICAgIDs7IElmIHNlbGVjdGVkIGJ5IG1vdXNlLCBzZWUgdG8gdGhhdCB0 aGUgd2luZG93IHdoZXJlIHRoZSBtb3VzZSBpcwogICAgOzsgcmVhbGx5IGlzIHNlbGVjdGVkLgog ICAgKGFuZCBtb3VzZS10cmlnZ2VyZWQKCSAobm90IChlcXVhbCBsYXN0LW5vbm1lbnUtZXZlbnQg JyhtZW51LWJhcikpKQoJIChsZXQgKCh3aW5kb3cgKHBvc24td2luZG93IChldmVudC1zdGFydCBs YXN0LW5vbm1lbnUtZXZlbnQpKSkpCgkgICAob3IgKGZyYW1lcCB3aW5kb3cpIChudWxsIHdpbmRv dykgKHNlbGVjdC13aW5kb3cgd2luZG93KSkpKQogICAgOzsgQ3JlYXRlIGEgbGlzdCBmb3IgdGhp cyBidWZmZXIgb25seSB3aGVuIG5lZWRlZC4KICAgICh3aGlsZSAoZXEgcmVzdWx0IHQpCiAgICAg IChzZXRxIGluZGV4LWFsaXN0IChpZiBhbGlzdCBhbGlzdCAoaW1lbnUtLW1ha2UtaW5kZXgtYWxp c3QpKSkKICAgICAgKHdoZW4gaW1lbnUtZmxhdHRlbgogICAgICAgIChzZXRxIGluZGV4LWFsaXN0 IChpbWVudS0tZmxhdHRlbi1pbmRleC1hbGlzdCBpbmRleC1hbGlzdCB0KSkpCiAgICAgIChzZXRx IHJlc3VsdAoJICAgIChpZiAoYW5kIGltZW51LXVzZS1wb3B1cC1tZW51CgkJICAgICAob3IgKGVx IGltZW51LXVzZS1wb3B1cC1tZW51IHQpIG1vdXNlLXRyaWdnZXJlZCkpCgkJKGltZW51LS1tb3Vz ZS1tZW51IGluZGV4LWFsaXN0IGxhc3Qtbm9ubWVudS1ldmVudCkKCSAgICAgIChpbWVudS0tY29t cGxldGlvbi1idWZmZXIgaW5kZXgtYWxpc3QgcHJvbXB0KSkpCiAgICAgIChhbmQgKGVxdWFsIHJl c3VsdCBpbWVudS0tcmVzY2FuLWl0ZW0pCgkgICAoaW1lbnUtLWNsZWFudXApCgkgICAoc2V0cSBy ZXN1bHQgdCBpbWVudS0taW5kZXgtYWxpc3QgbmlsKSkpCiAgICByZXN1bHQpKQoKKGRlZnZhci1s b2NhbCBpbWVudS0tbWVudWJhci1rZXltYXAgbmlsKQoKOzs7IyMjYXV0b2xvYWQKKGRlZnVuIGlt ZW51LWFkZC10by1tZW51YmFyIChuYW1lKQogICJBZGQgYW4gYGltZW51JyBlbnRyeSB0byB0aGUg bWVudSBiYXIgZm9yIHRoZSBjdXJyZW50IGJ1ZmZlci4KTkFNRSBpcyBhIHN0cmluZyB1c2VkIHRv IG5hbWUgdGhlIG1lbnUgYmFyIGl0ZW0uClNlZSB0aGUgY29tbWFuZCBgaW1lbnUnIGZvciBtb3Jl IGluZm9ybWF0aW9uLiIKICAoaW50ZXJhY3RpdmUgInNJbWVudSBtZW51IGl0ZW0gbmFtZTogIikK ICAoaWYgKG9yIChhbmQgaW1lbnUtcHJldi1pbmRleC1wb3NpdGlvbi1mdW5jdGlvbgoJICAgICAg IGltZW51LWV4dHJhY3QtaW5kZXgtbmFtZS1mdW5jdGlvbikKCSAgaW1lbnUtZ2VuZXJpYy1leHBy ZXNzaW9uCgkgIChub3QgKGVxIGltZW51LWNyZWF0ZS1pbmRleC1mdW5jdGlvbgoJCSAgICdpbWVu dS1kZWZhdWx0LWNyZWF0ZS1pbmRleC1mdW5jdGlvbikpKQogICAgICAodW5sZXNzIChhbmQgKGN1 cnJlbnQtbG9jYWwtbWFwKQogICAgICAgICAgICAgICAgICAgKGtleW1hcHAgKGxvb2t1cC1rZXkg KGN1cnJlbnQtbG9jYWwtbWFwKSBbbWVudS1iYXIgaW5kZXhdKSkpCgkobGV0ICgobmV3bWFwICht YWtlLXNwYXJzZS1rZXltYXApKSkKCSAgKHNldC1rZXltYXAtcGFyZW50IG5ld21hcCAoY3VycmVu dC1sb2NhbC1tYXApKQoJICAoc2V0cSBpbWVudS0tbGFzdC1tZW51YmFyLWluZGV4LWFsaXN0IG5p bCkKICAgICAgICAgIChzZXRxIGltZW51LS1tZW51YmFyLWtleW1hcCAobWFrZS1zcGFyc2Uta2V5 bWFwICJJbWVudSIpKQoJICAoZGVmaW5lLWtleSBuZXdtYXAgW21lbnUtYmFyIGluZGV4XQoJICAg IGAobWVudS1pdGVtICxuYW1lICxpbWVudS0tbWVudWJhci1rZXltYXApKQoJICAodXNlLWxvY2Fs LW1hcCBuZXdtYXApCgkgIChhZGQtaG9vayAnbWVudS1iYXItdXBkYXRlLWhvb2sgJ2ltZW51LXVw ZGF0ZS1tZW51YmFyKSkpCiAgICAoaW1lbnUtdW5hdmFpbGFibGUtZXJyb3IgIlRoZSBtb2RlIGAl cycgZG9lcyBub3Qgc3VwcG9ydCBJbWVudSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo Zm9ybWF0LW1vZGUtbGluZSBtb2RlLW5hbWUpKSkpCgo7OzsjIyNhdXRvbG9hZAooZGVmdW4gaW1l bnUtYWRkLW1lbnViYXItaW5kZXggKCkKICAiQWRkIGFuIEltZW51IFwiSW5kZXhcIiBlbnRyeSBv biB0aGUgbWVudSBiYXIgZm9yIHRoZSBjdXJyZW50IGJ1ZmZlci4KCkEgdHJpdmlhbCBpbnRlcmZh Y2UgdG8gYGltZW51LWFkZC10by1tZW51YmFyJyBzdWl0YWJsZSBmb3IgdXNlIGluIGEgaG9vay4i CiAgKGludGVyYWN0aXZlKQogIChpbWVudS1hZGQtdG8tbWVudWJhciAiSW5kZXgiKSkKCihkZWZ2 YXItbG9jYWwgaW1lbnUtbWVudWJhci1tb2RpZmllZC10aWNrIDAKICAiVmFsdWUgb2YgKGJ1ZmZl ci1jaGFycy1tb2RpZmllZC10aWNrKSB3aGVuIGBpbWVudS11cGRhdGUtbWVudWJhcicgd2FzIGNh bGxlZC4iKQoKKGRlZnVuIGltZW51LXVwZGF0ZS1tZW51YmFyICgpCiAgKHdoZW4gKGFuZCAoY3Vy cmVudC1sb2NhbC1tYXApCiAgICAgICAgICAgICBpbWVudS0tbWVudWJhci1rZXltYXAKCSAgICAg KC89IChidWZmZXItY2hhcnMtbW9kaWZpZWQtdGljaykgaW1lbnUtbWVudWJhci1tb2RpZmllZC10 aWNrKSkKICAgIChzZXRxIGltZW51LW1lbnViYXItbW9kaWZpZWQtdGljayAoYnVmZmVyLWNoYXJz LW1vZGlmaWVkLXRpY2spKQogICAgKGxldCAoKGluZGV4LWFsaXN0IChpbWVudS0tbWFrZS1pbmRl eC1hbGlzdCB0KSkpCiAgICAgIDs7IERvbid0IGJvdGhlciB1cGRhdGluZyBpZiB0aGUgaW5kZXgt YWxpc3QgaGFzIG5vdCBjaGFuZ2VkCiAgICAgIDs7IHNpbmNlIHRoZSBsYXN0IHRpbWUgd2UgZGlk IGl0LgogICAgICAodW5sZXNzIChlcXVhbCBpbmRleC1hbGlzdCBpbWVudS0tbGFzdC1tZW51YmFy LWluZGV4LWFsaXN0KQogICAgICAgIChzZXRxIGltZW51LS1sYXN0LW1lbnViYXItaW5kZXgtYWxp c3QgaW5kZXgtYWxpc3QpCiAgICAgICAgKHNldHEgaW5kZXgtYWxpc3QgKGltZW51LS1zcGxpdC1z dWJtZW51cyBpbmRleC1hbGlzdCkpCgkobGV0KiAoKG1lbnUgKGltZW51LS1zcGxpdC1tZW51IGlu ZGV4LWFsaXN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnVmZmVy LW5hbWUpKSkKICAgICAgICAgICAgICAgKG1lbnUxIChpbWVudS0tY3JlYXRlLWtleW1hcAogICAg ICAgICAgICAgICAgICAgICAgIChjYXIgbWVudSkKICAgICAgICAgICAgICAgICAgICAgICAoY2Ry IChpZiAoYW5kIChudWxsIChjZGRyIG1lbnUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHN0cmluZ3AgKGNhYWRyIG1lbnUpKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGNvbnNwIChjZGFkciBtZW51KSkpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGNhZHIgbWVudSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudSkp CiAgICAgICAgICAgICAgICAgICAgICAgJ2ltZW51LS1tZW51YmFyLXNlbGVjdCkpKQoJICAoc2V0 Y2RyIGltZW51LS1tZW51YmFyLWtleW1hcCAoY2RyIG1lbnUxKSkpKSkpKQoKKGRlZnVuIGltZW51 LS1tZW51YmFyLXNlbGVjdCAoaXRlbSkKICAiVXNlIEltZW51IHRvIHNlbGVjdCB0aGUgZnVuY3Rp b24gb3IgdmFyaWFibGUgbmFtZWQgaW4gdGhpcyBtZW51IElURU0uIgogIChpZiAoZXF1YWwgaXRl bSBpbWVudS0tcmVzY2FuLWl0ZW0pCiAgICAgIChwcm9nbgoJKGltZW51LS1jbGVhbnVwKQoJOzsg TWFrZSBzdXJlIGltZW51LXVwZGF0ZS1tZW51YmFyIHJlZG9lcyBldmVyeXRoaW5nLgoJKHNldHEg aW1lbnUtbWVudWJhci1tb2RpZmllZC10aWNrIC0xKQoJKHNldHEgaW1lbnUtLWluZGV4LWFsaXN0 IG5pbCkKCShzZXRxIGltZW51LS1sYXN0LW1lbnViYXItaW5kZXgtYWxpc3QgbmlsKQoJKGltZW51 LXVwZGF0ZS1tZW51YmFyKQoJdCkKICAgIChpbWVudSBpdGVtKQogICAgbmlsKSkKCihkZWZ1biBp bWVudS1kZWZhdWx0LWdvdG8tZnVuY3Rpb24gKF9uYW1lIHBvc2l0aW9uICZyZXN0IF9yZXN0KQog ICJNb3ZlIHRvIHRoZSBnaXZlbiBwb3NpdGlvbi4KCk5BTUUgaXMgaWdub3JlZC4gIFBPU0lUSU9O IGlzIHdoZXJlIHRvIG1vdmUuICBSRVNUIGlzIGFsc28gaWdub3JlZC4KVGhlIGlnbm9yZWQgYXJn cyBqdXN0IG1ha2UgdGhpcyBmdW5jdGlvbiBoYXZlIHRoZSBzYW1lIGludGVyZmFjZSBhcyBhCmZ1 bmN0aW9uIHBsYWNlZCBpbiBhIHNwZWNpYWwgaW5kZXgtaXRlbS4iCiAgKGlmIChvciAoPCBwb3Np dGlvbiAocG9pbnQtbWluKSkKCSAgKD4gcG9zaXRpb24gKHBvaW50LW1heCkpKQogICAgICA7OyBX aWRlbiBpZiBvdXRzaWRlIG5hcnJvd2luZy4KICAgICAgKHdpZGVuKSkKICAoZ290by1jaGFyIHBv c2l0aW9uKSkKCjs7OyMjI2F1dG9sb2FkCihkZWZ1biBpbWVudSAoaW5kZXgtaXRlbSkKICAiSnVt cCB0byBhIHBsYWNlIGluIHRoZSBidWZmZXIgY2hvc2VuIHVzaW5nIGEgYnVmZmVyIG1lbnUgb3Ig bW91c2UgbWVudS4KSU5ERVgtSVRFTSBzcGVjaWZpZXMgdGhlIHBvc2l0aW9uLiAgU2VlIGBpbWVu dS1jaG9vc2UtYnVmZmVyLWluZGV4Jwpmb3IgbW9yZSBpbmZvcm1hdGlvbi4iCiAgKGludGVyYWN0 aXZlIChsaXN0IChpbWVudS1jaG9vc2UtYnVmZmVyLWluZGV4KSkpCiAgOzsgQ29udmVydCBhIHN0 cmluZyB0byBhbiBhbGlzdCBlbGVtZW50LgogIChpZiAoc3RyaW5ncCBpbmRleC1pdGVtKQogICAg ICAoc2V0cSBpbmRleC1pdGVtIChhc3NvYyBpbmRleC1pdGVtIChpbWVudS0tbWFrZS1pbmRleC1h bGlzdCkpKSkKICAod2hlbiBpbmRleC1pdGVtCiAgICAocGNhc2UgaW5kZXgtaXRlbQogICAgICAo YCgsbmFtZSAscG9zICxmbiAuICxhcmdzKQogICAgICAgKHB1c2gtbWFyayBuaWwgdCkKICAgICAg IChhcHBseSBmbiBuYW1lIHBvcyBhcmdzKQogICAgICAgKHJ1bi1ob29rcyAnaW1lbnUtYWZ0ZXIt anVtcC1ob29rKSkKICAgICAgKGAoLG5hbWUgLiAscG9zKSAoaW1lbnUgKGxpc3QgbmFtZSBwb3Mg aW1lbnUtZGVmYXVsdC1nb3RvLWZ1bmN0aW9uKSkpCiAgICAgIChfIChlcnJvciAiVW5rbm93biBp bWVudSBpdGVtOiAlUyIgaW5kZXgtaXRlbSkpKSkpCgooZGVmdW4gaW1lbnUtZmx1c2gtY2FjaGUg KCkKICAiRmx1c2ggdGhlIGN1cnJlbnQgaW1lbnUgY2FjaGUuClRoaXMgZm9yY2VzIGEgZnVsbCBy ZXNjYW4gb2YgdGhlIGJ1ZmZlciB0byByZWNyZWF0ZSB0aGUgaW5kZXggYWxpc3QKbmV4dCB0aW1l IGBpbWVudScgaXMgaW52b2tlZC4iCiAgKGltZW51LS1jbGVhbnVwKQogIChzZXRxIGltZW51LS1p bmRleC1hbGlzdCBuaWwpKQoKKHByb3ZpZGUgJ2ltZW51KQoKOzs7IGltZW51LmVsIGVuZHMgaGVy ZQo= --_003_DS7PR10MB523263AF4B8292EF5A010469F342ADS7PR10MB5232namp_-- From debbugs-submit-bounces@debbugs.gnu.org Sat Jul 05 04:59:44 2025 Received: (at 78935) by debbugs.gnu.org; 5 Jul 2025 08:59:44 +0000 Received: from localhost ([127.0.0.1]:40131 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uXykJ-0006Rq-Rv for submit@debbugs.gnu.org; Sat, 05 Jul 2025 04:59:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:32778) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uXykH-0006Qa-Uu for 78935@debbugs.gnu.org; Sat, 05 Jul 2025 04:59:42 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uXykB-00049U-UK; Sat, 05 Jul 2025 04:59:35 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=gdzHekMC29H4kU49vHbE58IwqUhFFPBqN27cddO36Pw=; b=WxJ1izqnc7IC uk66nHpQA1/7Xkbc2OguJWTwbM009PaZn11kpv5AEtPo9g3NZBhjl706iLnqmCsII3BUSztLgHO2R I2stPRDg5mB6wcourHym9OSAeknsgk2cYa93MKMcN4XE/lkanvvS36n1e5yAXQ2VxINom62agxTSx bM5yOUq1sZ5yffRNsIx3Gl/nu/ucj0gOHHkY21kYGdpT/bUP/mjoiKPOEUGxJ/MfPF8kJYx/TBRgW irHtKG825w0kKuupeUwOGh/Y1wAo7hCYxuIvC/arEanLDASMD2Zd9zb3/r+6C4nQKVez5C+dvlZj/ 8dKveNEVsGoKGr2t46w15w==; Date: Sat, 05 Jul 2025 11:59:34 +0300 Message-Id: <86bjpzvwqx.fsf@gnu.org> From: Eli Zaretskii To: Drew Adams In-Reply-To: (bug-gnu-emacs@gnu.org) Subject: Re: bug#78935: 30.1.90; [PATCH] Let Imenu optionally allow duplicate menu entries References: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 78935 Cc: 78935@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Fri, 4 Jul 2025 16:46:21 +0000 > From: Drew Adams via "Bug reports for GNU Emacs, > the Swiss army knife of text editors" > > Attached is a slightly better patch. The option is > tested at the level of the mapcar, not within the > function arg to mapcar. > > Also, the doc string of the new option mentions that > the option applies only to a Imenu menu, not also to > the use of command `imenu', which uses `completing-read'. Thanks. > +(defcustom imenu-allow-duplicate-menu-items-flag t > + "Non-nil means that Imenu can include duplicate menu items. > +For example, if the buffer contains multiple definitions of function > +`foo' then a menu item is included for each of them. > +Otherwise, only the first such definition is accessible from the menu. > + > +This option applies only to an Imenu menu, not also to the use of > +command `imenu', which uses `completing-read' to read a menu item. > +The use of that command doesn't allow duplicate items." > + :type 'boolean :group 'imenu) Please add a suitable :version tag. Also, this new user option should be called out in NEWS. From debbugs-submit-bounces@debbugs.gnu.org Sat Jul 05 12:20:50 2025 Received: (at 78935) by debbugs.gnu.org; 5 Jul 2025 16:20:50 +0000 Received: from localhost ([127.0.0.1]:46446 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uY5dB-0007QQ-4H for submit@debbugs.gnu.org; Sat, 05 Jul 2025 12:20:50 -0400 Received: from mx0a-00069f02.pphosted.com ([205.220.165.32]:60604) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uY5d7-0007Pv-Lr for 78935@debbugs.gnu.org; Sat, 05 Jul 2025 12:20:47 -0400 Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 565DfxMn017789; Sat, 5 Jul 2025 16:20:44 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=+BVdT+FJ4L0a/HGm1C8VQuJ6TE4QdpzFWfg8Zhibkdg=; b= drb/jG/UAqABsucVEaqLEx77VWfqviJLu9tF9HkKQ485Csp3ZkPdYNeQwuEFba0Q Rp6tHa+/Fvc5UP2vyJnY33Qh4XjdXRkeN69COa/CEnhe1Epfx8YdvRRURhaUrNuj 7iO3rpguR6y6GpJB79dkSBoxUrwkjsoGPVMChMyPoMC+eP8D2n0eMYRjucB4eHSt eo+KcASrsIM/v64DsjdvMlr2CvONvHYRMpoNkVO3M/zNidLEQXOANsMsDKU7nDzt Pd6h5DsRSBObMDNbxACymn4DtZJL371d4trcM6z5eOBNrW13KSt6KGfNzs+tfrS7 CdLuayvHFNWF9fBXUYDiEg== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 47ptn50dpq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sat, 05 Jul 2025 16:20:44 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 565C6OWn024229; Sat, 5 Jul 2025 16:20:43 GMT Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11on2040.outbound.protection.outlook.com [40.107.223.40]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 47ptg73qau-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sat, 05 Jul 2025 16:20:43 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Y+q7/+MWDBi58FJjZaPEHU62MQ9BgUKBJKEDSWAmqw4UtIPWGomIADRdtW7nS7Z33/zqcuLFZ9jgIGu11hfUfXV4YN6e1THZTh90rrIGo3tKE5szZ4eKhWPTDbGujoXWsJyUxHgAwC6L+dMVMYtp6L98plVhrlDbD51k9Nf/T42zWpWQhzencGatiMIioJlkqVzxJVuE1/odtUyJwjHXOPRl8qneAQj70uc+PgG65iSfEJRU0IBMFJVTerakrVoIxkGFKKI3It7smuNNLGWEMOfPLz4ceVjlyqQDk3ZF1kdh/WIqYeTd/qpmkmVv+VxID38NeVPJgPV57OGeiHN3aQ== 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=+BVdT+FJ4L0a/HGm1C8VQuJ6TE4QdpzFWfg8Zhibkdg=; b=EZN+6oVoieOFjFEZB275dxP2Hja8qy3MJOp7l2Ns/PPEGDuK0J51iDj8Vbj2w/wO3xOs+5xwysaPjlIf2Y2PJRayeU/SDEMyPWBq2PUbh2A8v6U99SrasvU/g1LjFNeRRiB2xRlDAaGOe7LS9rt44G6Y1LmhXqagiJ7Lxt68DpwLzYUVOgmXKKPt6crl8EHuMnhpSsSDA9NwKzk4VDCKaP15SdRoHYLVk4ikiNrc2tCuEyOoSX7llYWm7ai9tW618VUFnnOG+KDzudtTe5ESJ4JbrSUMinHf4JQp4W0pShntn/ULah7Fn7GtQoclZR8vxYwhFm1wIA0lqKmfG7kKhg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+BVdT+FJ4L0a/HGm1C8VQuJ6TE4QdpzFWfg8Zhibkdg=; b=aEjRGmCTVXUuIpsKZuRwM1mYyb85yit4mC/NjtCbH6Vom+keyAmTkxkf2ho24aCkgoAs3/dyP8SYnixbT7bcGa5GNo+G7t2uBx+DcIrMrDIU06CcAFWlNfInm2pKlSYRdyx5xLAwMhTL7OUsEUSaHa+Er2ZSpDa7xtFu/43ccJ4= Received: from DS7PR10MB5232.namprd10.prod.outlook.com (2603:10b6:5:3aa::24) by DS0PR10MB6269.namprd10.prod.outlook.com (2603:10b6:8:d3::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8880.25; Sat, 5 Jul 2025 16:20:40 +0000 Received: from DS7PR10MB5232.namprd10.prod.outlook.com ([fe80::8303:658f:14f8:2324]) by DS7PR10MB5232.namprd10.prod.outlook.com ([fe80::8303:658f:14f8:2324%7]) with mapi id 15.20.8901.021; Sat, 5 Jul 2025 16:20:40 +0000 From: Drew Adams To: Eli Zaretskii Subject: RE: [External] : Re: bug#78935: 30.1.90; [PATCH] Let Imenu optionally allow duplicate menu entries Thread-Topic: [External] : Re: bug#78935: 30.1.90; [PATCH] Let Imenu optionally allow duplicate menu entries Thread-Index: AQHb7YslBMbhyz5SRkCPueu/q5uW77QjtTew Date: Sat, 5 Jul 2025 16:20:39 +0000 Message-ID: References: <86bjpzvwqx.fsf@gnu.org> In-Reply-To: <86bjpzvwqx.fsf@gnu.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DS7PR10MB5232:EE_|DS0PR10MB6269:EE_ x-ms-office365-filtering-correlation-id: 9f482aff-a9d1-4302-354b-08ddbbdfe1ff x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|1800799024|376014|38070700018; x-microsoft-antispam-message-info: =?us-ascii?Q?T7yy4KM5z4RNXyOa50No3aKH/12LehREckawh/8tGXBLpQ5Zi3pUpafOQfVd?= =?us-ascii?Q?4OTOJCJjelkO0/9umwSy8K6IdEjYrjMISFbe47E9pgvYY1uTvDqia6TCxEV9?= =?us-ascii?Q?4xXjfTY1Br6J1BmDOSHSo/F6/E2tUdekG6FZsaewb0oDNM5+NFjzmgdNw6M8?= =?us-ascii?Q?TKxgJsm/gejtxijfCHlW8uayRCVxGu3FUeuGjdszWdW28aadhedyuWjIB17C?= =?us-ascii?Q?Qn8MzLT9KgwZCOIqO+lcguJECU1SehqxfTcrO+W4sblUP6pV1MMKWh5JB0Ce?= =?us-ascii?Q?nAv3xVXHpVCys0NYyxHHo7G4Zht40fIyBhq23AT+NwVdEKX9aEA6JcPHJIQ9?= =?us-ascii?Q?N+YID41CXyuiHvEJIbvPEoJED/W2IPwcIjPwm24NeczwKQsftfvaJKPl6jXu?= =?us-ascii?Q?ai+OJ4homeKSGQm8hbDRA9npS+r26FCPDmv1nkd/9p2L42o/jUzVr6dbJGMb?= =?us-ascii?Q?vvTLtww0nZqLKt7UnhL/psTwsiSPZFPDYlgCI0quudjPgTTXZ1nSjmml5l7c?= =?us-ascii?Q?ku3r2h+O9EPPdwZCI8atWoKyOv3WorDEoUd3ICMQRvhDUhzDLMlGueEPYXZ8?= =?us-ascii?Q?N8U2iKwoHJXWvT0AW4y9oTB0jVSrYUyK5P+RNW/oXKVyX+HDKBSU9bFw084r?= =?us-ascii?Q?yYGnhlEURxqz6VyOgKhpIUS64Q59+UuDHRflYyCaFIIqLSCQRZXA4ZwJSlyP?= =?us-ascii?Q?Div27ykDKaaesCOtI9ySTt4MzihOvu9yKDAN7pckVgoDjuYM74JOtYUMAPbF?= =?us-ascii?Q?u3F0PL0eMj8rt0dhZL1Ry6XmsFc+9xSk89RC13JDVarpW/3lxFVM8Fjef1x3?= =?us-ascii?Q?xl1Iu58WtqPhp9Qh/szr9OAsBTnPuVGZEzWCTfH4szLY3Ae0rWcfG/zc1ZqA?= =?us-ascii?Q?2cuF2t5FejXsiISEuTGN3AnS4Gv5UlgyBL7WikJSgfh+m0D9AUVgdWPKGG4/?= =?us-ascii?Q?x0OGcl7nT37W2Aeq4D/JF+VDNRuoZ6Xg6EC/tn0j4EJGu14t13CVck2s4S/+?= =?us-ascii?Q?+42ifw34v8cVdeAKD6ZLKxvpGygZ7As9H/rZtrK/FNCbpdjonGly3vq3nzzk?= =?us-ascii?Q?/xZ0dRdJxsoAwHuChXDdXlxI8Y9bRAX1OesLfk0isZfL9auocKs6qgb6RFex?= =?us-ascii?Q?AWIEhpQyrdROacOCnHw1CMt6ytwD5LrUOssSIMlwoI9KSodTPIGgzDos1/Hw?= =?us-ascii?Q?dOL7uthnYsrN51aGKcAMyMylq9NasrE4pIC94nXSyAQNnqzL9g508PF/kHUF?= =?us-ascii?Q?IPs6T/o+FFww5CbkJNiI8L5GJEio+QO3J5E0Va20B9BAgxQoE4dhpqYzHxdj?= =?us-ascii?Q?kWMOZmyET4xR+pN9T13Xgo7Rm0tliWgm6kCj80kh/r5qD96vyVY34mQCjDvg?= =?us-ascii?Q?e2c/W5wd7C7auLdf9hVEw8m3E0yAaRg/6DRS1EQ203v6z5kjC9rpLX5csVZ5?= =?us-ascii?Q?Gc9DpvBrdgW18Kc2Y63XrrWVmmuU+lzeiVPFzi4qEUPw+zfycIwSoQ=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DS7PR10MB5232.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(1800799024)(376014)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?j6Lbq7y09Tln6MGYjqkLlB4+5m1fQ4/viuJGxrwh+RVqoe9IucEYCEw+cK2d?= =?us-ascii?Q?MO4qg+ibQEDMp6pojGLPSyb1SZtDZlx5ijIBO5bnODIOqYO55TVLoi8AELwE?= =?us-ascii?Q?hpt9RlmKQM4KJVaHrX7bxiM2z+8pyYPGOUvPTryhvUm5HwFrIpG/pUvnPzgX?= =?us-ascii?Q?x4i2a7BCuoeORkK6YRGIZ22yh8AWT3sd0mlTDNt3uWt0Fk/EYnJbLCyrJTVQ?= =?us-ascii?Q?XvHFqxb5lPZ9Kja79hgjQLkh7P3RkOebGNIW56jAyPYoqmjQsU7+iMn4eCpc?= =?us-ascii?Q?Zku+KwUuctsWTslW++zQ1rAtE4oWiVGwUCKZ9F1Tw8P+xRWRZEUf3ZU85d+V?= =?us-ascii?Q?xs/nlxmwiZOUnDSMGOPsyLEQYz71P/yEYZmnaotoFVqPUwTftHI2OrUpP99j?= =?us-ascii?Q?d7NmfDcjmjlXfh+FE/f1vHsbs/v8taBikFyz+OF0YlNmwGNhT1Oi24prWjDW?= =?us-ascii?Q?JO9jnHW5u2HH+RXAgsjAtThvYfbkYiVy4cDbboTGvl/FAOS2CTMPH3F4QYUK?= =?us-ascii?Q?JrnkoPEEwUunG/b9GuWaw+B2p0m6QSwkbT1zR4n2UvZNfTXA+ZUz7+ZuR336?= =?us-ascii?Q?mHEwe4h/4QPtvgnlMTR4xjCIPYfc04OO8MjPQER6RNB8+/0OEQGy8ksUfAVI?= =?us-ascii?Q?/hnwXUgcuLNTzfqkhY9EzQ1/Ug6ekboLexOcdma03x+JH+1B/wccU+Eplg23?= =?us-ascii?Q?XyPondZybHSJ+kbBtnQ6TdZ/yabTDWi7pUYzSz17NExO4Kv4Q2OXvkwDrzSQ?= =?us-ascii?Q?ivl5xcnwCbitsYXdANXS8OR2fyG8kvi+0dixPS9SoSpMhcXQDCfV3rbYbD6O?= =?us-ascii?Q?PRct1409iVFwrJDg1Hex0Lc4cnZ4gfN3xbMcc/mU886YQdd6yrrsdqlxMOA+?= =?us-ascii?Q?ZKETPTyL9hq4DcLte//PGycn+OP6lwYzB1+RLwGTAJXhTdc69PnGSnIsJfOA?= =?us-ascii?Q?zqtSPJ2BgvoEKoCh0mBF59GbgLhyn/98RKawhjUT80lmft1WjomsK8QJmpjJ?= =?us-ascii?Q?JEBarxZnWLEt2olFBvOs+JHaLRQ/SKeTP0pJnubavaGAJoK8CwWWwZM3oq6B?= =?us-ascii?Q?6h80dzC0rMJI2SngIzt5Vr3aUtHYS5GWekPE0r6a8Wh5fCBmOzedusE4JWRS?= =?us-ascii?Q?UlvunUzbwAOV4odcIyz87WL2KX9hdd4oxCIraZ3BGg3oPKAzPNmYZ+cjZJsS?= =?us-ascii?Q?hgNTl9gkFzNsRSpipCVUNgn69cu+3bhgxDEX5Zu4FQimMpJmIWtsyYe7vtFn?= =?us-ascii?Q?WjKXivriajO+k0GywGGBnr05W1h7LPh2ZSSTMBb6CBrXlcvLGBEanyN8vSvm?= =?us-ascii?Q?aTniQmYfW1Nds933f3wMG0k+q9UiawSnjlzTfuy5jzbub8dGM2ZDS7ijdkBJ?= =?us-ascii?Q?0I6TybbMAe4czD5reD4glW7zp0c8GAaZWYg9mE2SlHbCLnR7nSMGMUvTIiru?= =?us-ascii?Q?KyOTlJ0gqaiho768eg+fHBWDp8DKxQOlKURpwg4afu88kQo6OZXKLHmr7o7D?= =?us-ascii?Q?O7atYmjwBkyHIosnmuoDteYJ8bF4/rjtdBj9Iddz5dsELdAUDYX8ou9bWOsj?= =?us-ascii?Q?nxxcNw1cHknT0EI9+QXreqtcuFjhTwFz7KNZKzy/?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: nyRysjxC2C4w5Oa7qmuevuBaj6cquWgfkflwpYI9gwjreztI1ke1XJDltofm3nhnBOAXJaTMAtzPHG7MCKiqDvmioG3rR9r3lUGY7NsnN2nLE6mP4rX36i/CGosR/HiMGcXNOLH4lETm0U/4XL+M4ZdXXqiFTOnsOhko1FQ5qJZUPOAgiSnfiITbmSMCqglWPlfZQDssc+UBvsz7Spy8YQpvseeMBFt4iMh2TBIxJxHcbXF1PoaiLihCTDvsQwp+/x5IeRxXcub/bL9slLPyT+Lt007Hi4K5vfRa3R2o/CnckCK6mcepqmFfIM1O+MnHpRz9DfGZE74M5OOvCX+wug+LuXhD6MiV8MWQf8Cnj/ufCTlVLYMhFOu1ditJn8LJPacFJofTpH4hz3GQscwzIbt6/F80RyveGQxFmkagoUndSf2oLsXjzAQTtvoqwESexsTiBS84pQeySSx5eqzrmGhEzHXYRb3hUGcbJd6l/5W7DoIM5mPB/Q1dEZPgP6PBrpWEjns35Qe21YFkaFVqxw6yDurIlqYdOBT37pOA45PxKf82IsKwcp2XuXVcG+IkoIfablQoXSv0YUftA7w7p6ZsHschVxWZMmV/x2qCCx8= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DS7PR10MB5232.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9f482aff-a9d1-4302-354b-08ddbbdfe1ff X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Jul 2025 16:20:40.0003 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 9/BGNa3J7sa1Q+B74IskU/9oHECPLZmNaeXL79V5lgIIB082IX3VdiBDyLo/p6nVmIi6ngzE3GjD50E9yV6H7Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR10MB6269 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-07-04_07,2025-07-04_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 phishscore=0 bulkscore=0 malwarescore=0 mlxscore=0 mlxlogscore=999 adultscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2505160000 definitions=main-2507050107 X-Proofpoint-ORIG-GUID: WrzsfmRMzzpqIBdGkGt3mFDRzG-t4t2n X-Proofpoint-GUID: WrzsfmRMzzpqIBdGkGt3mFDRzG-t4t2n X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzA1MDEwNyBTYWx0ZWRfX4T4VOEDDIXoV YUU5LzMzWEEjgrubB2y5qEiJPY+ZDtzqyPEmxngrbo2VcjpmlbK2yCyuEW8iq5SAK/cxE/EB2gn Z2eW7Ike5qBnIYdV6ul88iuzdG6NJvTn7nZE+1V4myyJIzTf+MftaJdMNkfbr0Cj7wy836zklCz Enl8fyxcrn1b6Qi6eyqyrpUfTK5lfSPJJIrk8v6+vxFMOe2Gzj9GzQ3p9dg/IXfJyjs7Lu5xTjx eWw6WHhy9re8Wty8HpC0N4m8geAmykUNSUY9UndHi9C3s/GrTOsaasUvrvoS7gf7DeSiAm3NyvR +oj9qauqEUaQBs3soZYQKZQTYqj9nv004BKAw5nOjHaK1ONlx2u5CZL0fSyaX6i1oR4Iv8kHLt9 wqoOF5SrhuZQaq2spkgs+p3N58LxGSpMyS1I8Z30cHf4dwX9wtSwfZnwxkHtFWNTTnDxlrNf X-Authority-Analysis: v=2.4 cv=UpRjN/wB c=1 sm=1 tr=0 ts=686950dc b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=kj9zAlcOel0A:10 a=Wb1JkmetP80A:10 a=GoEa3M9JfhUA:10 a=QiSL3uusjEYDu5vha1kA:9 a=CjuIK1q_8ugA:10 X-Spam-Score: -0.5 (/) X-Debbugs-Envelope-To: 78935 Cc: "78935@debbugs.gnu.org" <78935@debbugs.gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.5 (-) > > Attached is a slightly better patch. The option is > > tested at the level of the mapcar, not within the > > function arg to mapcar. > > > > Also, the doc string of the new option mentions that > > the option applies only to a Imenu menu, not also to > > the use of command `imenu', which uses `completing-read'. >=20 > Thanks. >=20 > > +(defcustom imenu-allow-duplicate-menu-items-flag t > > + "Non-nil means that Imenu can include duplicate menu items. > > +For example, if the buffer contains multiple definitions of function > > +`foo' then a menu item is included for each of them. > > +Otherwise, only the first such definition is accessible from the menu. > > + > > +This option applies only to an Imenu menu, not also to the use of > > +command `imenu', which uses `completing-read' to read a menu item. > > +The use of that command doesn't allow duplicate items." > > + :type 'boolean :group 'imenu) >=20 > Please add a suitable :version tag. > Also, this new user option should be called out in NEWS. Thanks for considering the patch. . Can you tell me what :version to use - would it be "30.2"? . I'm not familiar with what's needed for NEWS. Can you let me know what's needed and what form you need it in? Thx. From debbugs-submit-bounces@debbugs.gnu.org Sat Jul 05 12:45:23 2025 Received: (at 78935) by debbugs.gnu.org; 5 Jul 2025 16:45:23 +0000 Received: from localhost ([127.0.0.1]:46567 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uY60v-0002c7-V7 for submit@debbugs.gnu.org; Sat, 05 Jul 2025 12:45:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58984) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uY60t-0002YR-H1 for 78935@debbugs.gnu.org; Sat, 05 Jul 2025 12:45:20 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uY60k-0001E3-Vd; Sat, 05 Jul 2025 12:45:14 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=bMQkQGsdqNfrJC5lr6wyw9ivMxr7C3yGPLYQcRaa6x0=; b=cyXQh2MML6EM +kPWK0S0A74UgdFnAZARtBfG+4MGsdgjqtQiz2ue/esjgGLLZQwRi9SHWKbYFi9XXSq/R2HAy1gGr ebvbMT1lDtdZkY0haJ36FmnJ5AT/4kjttm9VIe6nyQq9rp4puMjw/2G3GZL1XGUTMyrykdwlwXSYE ftKTFZPqsI5JIQXieBat0J8yPsI0R0e/q3cCV6tru1j6uXMm/AMUxvQbJM1PgI/HrPvWLpjT9POhf /Afex7d+fCtdlb+/BnqKbuv6oHJtXmAbvONH8gWbNuHFEQJgGmyTTgwNLJaQ1vkJHbiKz6j8Xejas r2t6FDsXdslyQEGu1KnaKA==; Date: Sat, 05 Jul 2025 19:45:05 +0300 Message-Id: <86sejavb72.fsf@gnu.org> From: Eli Zaretskii To: Drew Adams In-Reply-To: (message from Drew Adams on Sat, 5 Jul 2025 16:20:39 +0000) Subject: Re: [External] : Re: bug#78935: 30.1.90; [PATCH] Let Imenu optionally allow duplicate menu entries References: <86bjpzvwqx.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 78935 Cc: 78935@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Drew Adams > CC: "78935@debbugs.gnu.org" <78935@debbugs.gnu.org> > Date: Sat, 5 Jul 2025 16:20:39 +0000 > > > Please add a suitable :version tag. > > Also, this new user option should be called out in NEWS. > > Thanks for considering the patch. > > . Can you tell me what :version to use - would it be "30.2"? No, "31.1", since the change will go to the master branch, which will become Emacs 31. > . I'm not familiar with what's needed for NEWS. Can you > let me know what's needed and what form you need it in? here's an example, which I hope will explain this. If not, please ask more specific questions. *** New user option 'quit-window-kill-buffer'. This option specifies whether 'quit-window' should preferably kill or bury the buffer shown by the window to quit. IOW, the fact there's a new option, and a short description what it does. In the current case, I'd also state the default value. Thanks. From debbugs-submit-bounces@debbugs.gnu.org Sat Jul 05 14:26:43 2025 Received: (at 78935) by debbugs.gnu.org; 5 Jul 2025 18:26:44 +0000 Received: from localhost ([127.0.0.1]:47149 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uY7b1-0001UQ-9T for submit@debbugs.gnu.org; Sat, 05 Jul 2025 14:26:43 -0400 Received: from mx0a-00069f02.pphosted.com ([205.220.165.32]:15118) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uY7ax-0001Tf-UB for 78935@debbugs.gnu.org; Sat, 05 Jul 2025 14:26:42 -0400 Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 565I0g2S005774; Sat, 5 Jul 2025 18:26:38 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=QSf3PrsI0aKRid2JyWF1upqiaufpO2A92dmTn5WxaMg=; b= Oc/ekny1JrQgWwMNm7L5texznIyz6358QUvrwI9m1zbKSY96XgIn/lhmlg6ptPsk l8S7MmisURYKsx2e036SFxV3/YMr1aEODqTAf50eyp21/KYqKeQkwSkZMMkE4Xpy bZrlCsYKkT2GFOJnOgRdPdeMGb2GRy2K1A5XZyj0qc6q+P4T7gY/PFx3XDLVxAsQ 24Y32hWfWXLxu/KDy9CjyoQmbZS7antoB4sD5TQmsm17Ve/ABjNpYLq6LTiK40Zo SERdYe28LGMnS55xViLl7GsPVzH4e6qrIbdro2KAXav5sFNKaIcL95qf79hUZBZ+ 9YHswc1wl78ob/z/dbaFEQ== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 47ptn50ftf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sat, 05 Jul 2025 18:26:38 +0000 (GMT) Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 565IKMoY021376; Sat, 5 Jul 2025 18:26:37 GMT Received: from cy7pr03cu001.outbound.protection.outlook.com (mail-westcentralusazon11012003.outbound.protection.outlook.com [40.93.200.3]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 47ptg6w20w-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sat, 05 Jul 2025 18:26:37 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=y7I4Re+st23S3dVuGLOYD6xtA1gJRy3ap+IVwTeK3tnlVRrEON5nqwiycYAgH05yAUqS4vmY3f6qvt94ojpiP2Ii8NTj7moPvQTrFV/qyPkm7mInc9AOh/o4o0gAqiK68SGr4Jt0cjTEeIXouhBYW/e8qEuu3k6QG26Mvis/VoaPG2xrpuHUTlwEVn0nHaqhVHme8NW2zs82rgbJFhnKqttxj70UkGMrrgYALTRpN/4MJFXSIjG3Xh8HL2TMUHlfdIyXHvtlrWb4K2N0XdjC5hUmqDa2Avn6V73Hng5ZCfOx/JN6zHfijySEqixZ0I4yPEFS4a72BUAQ+T7SGduAYg== 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=QSf3PrsI0aKRid2JyWF1upqiaufpO2A92dmTn5WxaMg=; b=sCSsM8yesywxc2zSM/CGrIFhiEJLOl345uOFGOO6ADSN2jqMVQBtQHWB5Cz7cqQjoKyMf8Nx/Zpn0xXwpnxjfhE5LIU+EroMkkiCxqZsYZxB3cf0RjdsfviYI7u8jEBNaypDLGp9tor9CQS054+p7Uta2NosPGhHdaenad+9DWiQr+Rk6q3+2Cyn/LoAvYiwHKAyDvgGCxkl/EUx6vKMoJddfkCnVnn4jMCELj08j/8brWYyrJCWEG0DFgmBR8Z/yHBMMuEv3BtTji6gbXvrLD3FoF4czRg2/xF1NR0/8YDu07K+iWXPBPD4NezsRU7cZ2MRdPZXlLyL2nPKBPucjg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QSf3PrsI0aKRid2JyWF1upqiaufpO2A92dmTn5WxaMg=; b=zLsApH3Ojs/3zf4gCRmXKKvgYbL881ePqk53/63LqbHdZ8r+W3eWH7edwcm5XvBeXqdIvmlhjuxhTPA4MEszw97Wah1F8KU26kmzr8+9L6Mt02aosKzE9REF9mvP8yveXVKB/KMV/H2RDF/FGeRpoUp8OcD/Dwx4rfko7/njavI= Received: from DS7PR10MB5232.namprd10.prod.outlook.com (2603:10b6:5:3aa::24) by CH3PR10MB7259.namprd10.prod.outlook.com (2603:10b6:610:12a::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.24; Sat, 5 Jul 2025 18:26:35 +0000 Received: from DS7PR10MB5232.namprd10.prod.outlook.com ([fe80::8303:658f:14f8:2324]) by DS7PR10MB5232.namprd10.prod.outlook.com ([fe80::8303:658f:14f8:2324%7]) with mapi id 15.20.8901.021; Sat, 5 Jul 2025 18:26:35 +0000 From: Drew Adams To: Eli Zaretskii Subject: RE: [External] : Re: bug#78935: 30.1.90; [PATCH] Let Imenu optionally allow duplicate menu entries Thread-Topic: [External] : Re: bug#78935: 30.1.90; [PATCH] Let Imenu optionally allow duplicate menu entries Thread-Index: AQHb7cwyokeFPimT10eHAUDgIG8OfLQj1VPA Date: Sat, 5 Jul 2025 18:26:35 +0000 Message-ID: References: <86bjpzvwqx.fsf@gnu.org> <86sejavb72.fsf@gnu.org> In-Reply-To: <86sejavb72.fsf@gnu.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DS7PR10MB5232:EE_|CH3PR10MB7259:EE_ x-ms-office365-filtering-correlation-id: e26b4174-7969-41b3-b564-08ddbbf1792f x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|376014|366016|1800799024|38070700018; x-microsoft-antispam-message-info: =?us-ascii?Q?9Vrkiowrrcd2kF+49EsyvyfFUX2lWge9WDLZ5UJA3Rf4YNF1EP1mm+lDmAI/?= =?us-ascii?Q?5KYDQbA3mGoXG4o0YscY3zqddlteEKfZgMWg4ZqKcPfEZgorZxo8sXbUEm/3?= =?us-ascii?Q?FrklGCR4YzCW6A1zQ9PWHY+Yt6Gp9om6+W/VT52zzzG9tn+D1f7j+QBEK8Jp?= =?us-ascii?Q?7bMoQc7ioQYjN3Fnt9HT+NcEtNqisZUVDa0HrhiV4FJLr5FP9A+YeIxpkhXx?= =?us-ascii?Q?UGl5zVFXiGYRv4xsodBeijjBSJY9IcKcsXP2LBWXojc0eR48ozi6Qqe6y+jF?= =?us-ascii?Q?gNnMTO3ejcKbsih86fN3rGSPHFMVeydWmUxJMHaSO1iGQwsWtLCABDCfM15m?= =?us-ascii?Q?rcXrPAzTBLTqPWZCql4PA161gTEuqBvvp23aMnetU1d4hMW+46Aheaa38dEf?= =?us-ascii?Q?gCNR3cPp0dLErNJTBwVAETUmPXkTe8qjxS5s2KVlviYw0hTEUwyX3kKiIWB2?= =?us-ascii?Q?8vrFag8gY3+vGUgdHcoGzSkXlR2ufGrqYJhf+HeCPFqDYiLQMt5LMrw/h25A?= =?us-ascii?Q?ih2m8P52Zuv0VPXKekW9V9tjeAuQqYJMLlKtrQ6ygAZ82b3j5nj6u/p8ph4W?= =?us-ascii?Q?M8THZJOD6xeDXeJ5fGuR48cVH1hdcTlEoK2UjKw4Ni6e8vQDzM9efaZrrqyg?= =?us-ascii?Q?vvaMackfcJIM409fdgkR24OcxYzG+OQgyWgSVEcdpBeFLr6kDEaIHZ7izpCM?= =?us-ascii?Q?xKuujs4O7cKhlaUu+Ut8+ZA7oO8ezq+91JpopHrgmJEEf8lu//uolkhmF8F/?= =?us-ascii?Q?WkLE5c5phyk3SAxZECQ9qc8nURxcW/++27GJatjoLTrwk5d1B0a78DXcmazZ?= =?us-ascii?Q?PNhQjT0n4UM/52lVcA2qDAJbjrpmrCQJy1xgB5WaM60nh+icd580QmbkpQrE?= =?us-ascii?Q?QkSYl4f/WpyMRzr6byw9h7Amcv6rg2ogSf63kF1SukOd94eaHG6k/UL2DYir?= =?us-ascii?Q?lE83owM4J/ol4AvsmsuqDK2zDb4F5Jf4GRfhhnEP1CLvHBmijjFRIMw4U2Qz?= =?us-ascii?Q?Z8F2a4gcnMRcM1U0RkDJ7NA5TWB8jdeEg59lta4TR/Z0JUkTdbTyLpz76QCj?= =?us-ascii?Q?pxz8C5WWnDRSmocUNG9bDcMs9f4P6mE+TsrKtdRVPqU2bXuOEOQdlxhMeD6n?= =?us-ascii?Q?KnK8qgzbQKT8CUr0tEFS9z1yztaGLJ7cgOvzUPYvNIkzSbbaQejRprWp/d2n?= =?us-ascii?Q?HY2FCY/ZQfYihi1Zuv1SxXOKJON9bZ7YdG8uGRMqo75gdYEQ2MZkEovMT3Qx?= =?us-ascii?Q?HKH3sQG/w0vtQPuivU58wsez48KYhQQ5GtZzbrVqZJ3BYzcKhEWt2KIHoodk?= =?us-ascii?Q?6wNNhreCM7wEbbofwdnweAm9nzNkFnT/fP1WGP/NCjfEvQ+1ICNTHQGjilY7?= =?us-ascii?Q?mM79KqcMNmMsLyp1RdI8R9XbcXb7z3oswgPzySMUSMLJnDq55NhoFooG76ND?= =?us-ascii?Q?XakDdd08UmB/YMuGhYmcEsCDYEN0Htoe2kTQV2BYf4aO1PpFD3UWrg=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DS7PR10MB5232.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(366016)(1800799024)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?3T8j2NEi4/S5kRsiMc7lkxU/6nuvlY01rVyYtyZyNVYTTbeR1eHEV9uK9FKD?= =?us-ascii?Q?41hfFDoHawrVWl08soQWe/fA78edVcdUsAKs3HXN3011YAKnj+mhL9nVce9x?= =?us-ascii?Q?ZV6mG4m092Ee6Ub7vb3dUURoNo87GBQefi5vT5xHmDn8G237IoPQKDCDVKYu?= =?us-ascii?Q?QZ24WGArhDcPUzKYJcwKFEDUm9SBo2Ais4Cyz8YhtTq6dZWsHA00P6D1Qh50?= =?us-ascii?Q?xtc+xAqqPgD+fPJAC7x0u9B5TV4cSJe98fy+aRzQOnOeLK2WAG/4O9eTcbjD?= =?us-ascii?Q?uEyypwW59BuM2qEhGqU0+d+qDgFb3PGNnu6h+w8JIAlD9zUOykqy349EXLCo?= =?us-ascii?Q?y+BJlFKCv0RprlK/V1Vz6UotGCQMhLTxn3wqocxDSH8b17OUTzoUJnaLNH+X?= =?us-ascii?Q?PDprjXM2ZSaESYnkRuct1lLqG5QDmAY6fnWWXa6jEpLmSYvxCRq5M7IzqIrM?= =?us-ascii?Q?36Pl/0TVityYpXwKCm68Wk70B3Je3QwBlhW3n1Xe5NIz46XuQ1ILQ3+lU3xh?= =?us-ascii?Q?Uv3DcaULQWRQNL4pCQF4G+mkR/2Ujhc6k951QKB6cGy+Mfc12bd/seIadN+i?= =?us-ascii?Q?LpSQ6ABEbdkOoeT3PvSTNa6/TaBGDA8X1QOhKCEfWoRtVqRzlFcEhwAb2BFL?= =?us-ascii?Q?lh1fAid6Re4CFfcjonk7dHnJh3zk/TudFmbN02GlY62yL6GWlUEg11rYqmK8?= =?us-ascii?Q?Is/6gjDwerTpBVkoq0PxqgsDnUsI6gSNiXDpBljy/SPeaZxWkmvZi9G6DSPw?= =?us-ascii?Q?u19Azg5iWEv3h0hai6Q/mvKlVPHlEzrLDdEoRksTazx/FLu6tK9M6ZsEteAR?= =?us-ascii?Q?dyr/DjUDoxekEaWFafACuf8WJjZ4gJ6OkFjUiCROOWK2T5SOflVODmmu/DBg?= =?us-ascii?Q?IagfHKPEoK+NcinEITG/yCmHkcEVFPj1t0uFgfn8+hL23fu1cZbaZ+VmY+M9?= =?us-ascii?Q?r1gakN9WK9owbYsvpaykZ4AH2WLGKHHm2jhrD4pz6LeTZ3T0MynZU/vgEIe1?= =?us-ascii?Q?NBJo4YdiwDy1vqp8hgtvRPjn+BMJ0Efe2HYu1zO2LQLuSpLxfraNuIU6krvb?= =?us-ascii?Q?fNam8sVKpTXa8LPA7Kn+P/O+J7mb8Iln4fNR3BXO9CxMNXg+bOvvk0t9noP3?= =?us-ascii?Q?IqmXXbDVXg5pPQzkf5OIkBNUAVOm8T2xfLytmeg4LEprBOWBKSmzBYXU4Ylx?= =?us-ascii?Q?suJM3TK7qwoI5BWj94KZrkHC+Mj6tfdlE1O+Cn/5n+rLSkhUEKoRvF3qLXWr?= =?us-ascii?Q?n7Y5d+n+0mrAGHGWmhmSwA6uq0La+PWo8UdMwc6ONy9lRiflHQVrFh3b+BWh?= =?us-ascii?Q?OL3aoWmy5pDlPDFMvWYQQko2WxGSUjJSEookFudPKdaV19epVn7IkykjeJOK?= =?us-ascii?Q?0nvKRyzFsqPTtn821UYlYeVPBD+Svqj3QrmSraWG9FjWAZTt3s13tWjdICOQ?= =?us-ascii?Q?ZEYsisxuGHfbRb6QDbWPalKaFZru1isJZeTzPFH0see1yAyhHJkUt3Mdljc7?= =?us-ascii?Q?8ekDfQqkwkF3QuJMgtc8JOH3Ca59VtY6oTrgRvu8vn47p12L3PpZZA2wzoMF?= =?us-ascii?Q?jZofxPrUdn0UYtA575qqUL09jNrB0+yMGY2Camvz?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 8KcrnHvhP21W1y/Ta9qi2alyA+Nzf2FsINgTd1OJzPufYD8qEXmVTsV2HZlSz35iJ1FKLlIbMv5Qy3k5SIeEbaXwvDLbtiV7nIt5lcjcnDicQO5+n0WbsAtMonnvqXIIdl8vQuhRuz46QEbeqyb4+R9+RW0DlIwvoBM50SyddjlDe+fRXHSsvzvoKaaOhI25NJVlrAFUiNgN/+XeJellQ2INn+f3Sc0Z2nCWSHHdgJKkvH3+4keHABTY9SgwV1PWZxlgz8RJbug30zzYavM+ZugxxoZQ0ArLUXNlw3N8b/uUTmN2ja6wEWazTIAmAPGvmw4vIgTxKrz2JZSXXCOzZY+5tr/6auU8/d+XZtKQqWsFSOU+z+DzRI6e2lGBS8s7YZzdPGwebhzNqkuMgZ3/oSKwunudjAON5v1InH0RHIYx6HNQwbIjV+3KOxlnylBmE+K+HO0iPR68EAbnQ9VqCu4qtkL5ljd4iQl9UwqVWX+aoyZfNkArh8/M8v75pVrZhs3PAIXer57FhTAlA5m5ME8LKNomILhow00dDvVQ457bTQNsUOman7OXK2kR7/0CvxlJMBZgvUNxbhHDGtTaQVxP/cjLmYeHR03WPKUIyAg= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DS7PR10MB5232.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e26b4174-7969-41b3-b564-08ddbbf1792f X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Jul 2025 18:26:35.0756 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: nu08DxLsPXOSXqoo+FzplKlaBwZbTqG0p7MuJTFH9+ehmPqpI4I0qdbbOk1AGS8R/CSFUfLRyv/2U2rd16M67A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR10MB7259 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-07-04_07,2025-07-04_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 adultscore=0 suspectscore=0 mlxlogscore=982 phishscore=0 malwarescore=0 mlxscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2505160000 definitions=main-2507050121 X-Proofpoint-ORIG-GUID: fyVN1gNKbxbnWAfUjgqcXPcWFCMvs1RU X-Proofpoint-GUID: fyVN1gNKbxbnWAfUjgqcXPcWFCMvs1RU X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzA1MDEyMSBTYWx0ZWRfX4Zzs0MtAEeNk nEeAWYXMS45HofaDM11C1V1TusGELYdEB+4YrTWMP+IDPDSy3K5gTN16x2vs7xKqLwwHi9BAL74 PW5vyTP1inWgPCz40jtGSC+YxM9jK2aRPEVLLiy8XAU1Qfn5pfC3dzwxQtrH8mt8jvx9xVMNyXR uzW88HzNwmBxETn9RNlgbFYtekaYkrRehlOnFYoWFpb6HNn4NkPXgb4HFY88IS30Ye4WBtvzEzc hS44mB/HFw+DmloNa6fPqiCTxSntZ0iDsCgE9p0dgNj59zTv0F8BHOHPrOeFTHtzFXjeK/tI8wc Hcxzu/dGorAg3g6ez6ZZwoCiIVGlN4QRFvM+ioTbLzJ3rCBJek8o4qbsqGaCBp3RoH4ioc4lXtm FYhEj57fuZceLK3qhyZCdbhNnMJMMGX3vVw+cgazSxYzoPRXqYnW9NdmRoaUHrhxRmsskttY X-Authority-Analysis: v=2.4 cv=UpRjN/wB c=1 sm=1 tr=0 ts=68696e5e cx=c_pps a=OOZaFjgC48PWsiFpTAqLcw==:117 a=OOZaFjgC48PWsiFpTAqLcw==:17 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=kj9zAlcOel0A:10 a=Wb1JkmetP80A:10 a=GoEa3M9JfhUA:10 a=bD9Ho_gLVUfVYnmi9M8A:9 a=CjuIK1q_8ugA:10 X-Spam-Score: -0.5 (/) X-Debbugs-Envelope-To: 78935 Cc: "78935@debbugs.gnu.org" <78935@debbugs.gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.5 (-) > > . Can you tell me what :version to use - would it be "30.2"? >=20 > No, "31.1", since the change will go to the master branch, which will > become Emacs 31. >=20 > > . I'm not familiar with what's needed for NEWS. Can you > > let me know what's needed and what form you need it in? >=20 > here's an example, which I hope will explain this. If not, please ask > more specific questions. >=20 > *** New user option 'quit-window-kill-buffer'. > This option specifies whether 'quit-window' should preferably kill or > bury the buffer shown by the window to quit. >=20 > IOW, the fact there's a new option, and a short description what it > does. In the current case, I'd also state the default value. >=20 > Thanks. Got it. How to I provide the NEWS blurb? Do I need to send a patch of the 30.1 NEWS file (or the 30.2 pretest 2 NEWS file)? Or can I just include the blurb in email here, like this? *** New user option 'imenu-allow-duplicate-menu-items-flag'. This specifies whether Imenu can include duplicate menu items. Duplicate items are allowed by default (option value 't'). Also, do you prefer that `-flag' be removed from the name? It seems that Emacs no longer respects that convention. Either way is OK by me. From debbugs-submit-bounces@debbugs.gnu.org Sun Jul 06 00:39:55 2025 Received: (at 78935) by debbugs.gnu.org; 6 Jul 2025 04:39:55 +0000 Received: from localhost ([127.0.0.1]:49394 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uYHAR-0006AY-3F for submit@debbugs.gnu.org; Sun, 06 Jul 2025 00:39:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51966) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uYHAO-00068x-0q for 78935@debbugs.gnu.org; Sun, 06 Jul 2025 00:39:53 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uYHAI-0007kb-2R; Sun, 06 Jul 2025 00:39:46 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=cqFqCSe90/U+v11Tn0ZXkjo1EnsB3gCvuWsL4tA1O88=; b=i4YNMjStp6gz wQIe1k1gDkkRMy35tShR0WCFN6oy+Liz+t0KXmwDjFHlom2FlFIdmnWYNZip40hWts28+80rwuyPa ioo+dHlpX/jKj4nC9r/oYe9RVZJC6pxXKFlBsR+ueQBrKwQ0pfxtEmpIsGR0vlsHE/BbNvVy6qh3S bcLtYli0yMKbsJwHs7eu1m08TEkt0YAvQUbcU2euvkjmk1keivxyJrzrxJiWIv4jk7X6zflCt48Go q3QTFd3bI2pmOCkTD1r7XlzWQGW7l0zATpcmdZbkjboh04JQGLzFlTFXDOOH8YtU9hzMC+dEb3BOw oCRyhXqm1rwxrlAjUslwpw==; Date: Sun, 06 Jul 2025 07:39:40 +0300 Message-Id: <86pleeue43.fsf@gnu.org> From: Eli Zaretskii To: Drew Adams In-Reply-To: (message from Drew Adams on Sat, 5 Jul 2025 18:26:35 +0000) Subject: Re: [External] : Re: bug#78935: 30.1.90; [PATCH] Let Imenu optionally allow duplicate menu entries References: <86bjpzvwqx.fsf@gnu.org> <86sejavb72.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 78935 Cc: 78935@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Drew Adams > CC: "78935@debbugs.gnu.org" <78935@debbugs.gnu.org> > Date: Sat, 5 Jul 2025 18:26:35 +0000 > > > *** New user option 'quit-window-kill-buffer'. > > This option specifies whether 'quit-window' should preferably kill or > > bury the buffer shown by the window to quit. > > > > IOW, the fact there's a new option, and a short description what it > > does. In the current case, I'd also state the default value. > > > > Thanks. > > Got it. How to I provide the NEWS blurb? Do I need to send > a patch of the 30.1 NEWS file (or the 30.2 pretest 2 NEWS file)? > > Or can I just include the blurb in email here, like this? It is best if you could download NEWS from the master branch, and produce a patch for that. Failing that, the entry itself would do. > *** New user option 'imenu-allow-duplicate-menu-items-flag'. > This specifies whether Imenu can include duplicate menu items. > Duplicate items are allowed by default (option value 't'). > > Also, do you prefer that `-flag' be removed from the name? Yes, please. From debbugs-submit-bounces@debbugs.gnu.org Sun Jul 06 11:03:36 2025 Received: (at 78935) by debbugs.gnu.org; 6 Jul 2025 15:03:36 +0000 Received: from localhost ([127.0.0.1]:56026 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uYQtz-00024d-G6 for submit@debbugs.gnu.org; Sun, 06 Jul 2025 11:03:36 -0400 Received: from mx0a-00069f02.pphosted.com ([205.220.165.32]:23032) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uYQtk-000235-Gu for 78935@debbugs.gnu.org; Sun, 06 Jul 2025 11:03:30 -0400 Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 566E1OMw028248; Sun, 6 Jul 2025 15:03:18 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-type:date:from:in-reply-to:message-id:mime-version :references:subject:to; s=corp-2025-04-25; bh=v+TZPcAQWGXSDgkRo8 6Y7iUWPy/BBSR2UfSbY1AxeJw=; b=HWvHh+sDNUfact4ac10lF8ZksaI1tqgcI3 HI0CFtZTSmGv3Q0xIiinYbo5UNxN7h03nNIx+E5W/ngRr4Aph0c9D+9pF2hgqw0k Q+pVRcOHGiv4cKVFEDwtbDA+a79IyIATwjTT1oxwaTYD8Aca98NqxkvLD7LmSYfi LUA4P+6AGpBmdeCBznzSzeQdnOcGiZ0SaVBynJc875agbGM0YGqXcvRjiQwCuwHD eVnfPtbYTpLIAXarfOpl+gyFwy5bS14yfScin396PAixlO1GlhywgOrolKcyLlHy Ua7osZrYbSdNytqN13pSVyNQ4zp8nDPc4SUoP7NcCm3A4+HNXLJg== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 47ptn51c2e-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 06 Jul 2025 15:03:18 +0000 (GMT) Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 566AUHQC021453; Sun, 6 Jul 2025 15:03:17 GMT Received: from nam11-bn8-obe.outbound.protection.outlook.com (mail-bn8nam11on2056.outbound.protection.outlook.com [40.107.236.56]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 47ptg7dbdc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 06 Jul 2025 15:03:17 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=UF8R7r9BV5UOtOsSPTBkHEvINkkIDHhD4DHBrhMAzixGu5Aag16YgeEq4CNolUU+iOxOspH4nL7qG9q3bQHeG57oqKQJT8uFiicYh77Ai0xd3RdR58jot2kVTOvrNw8E+vfDWTO28j+I6EXUbCgFNeRbHPm3M72TU76kVS4oxOeUAkNdOxfdhNBiJE8jFdc8kVPXchD35tyud2JXqkBrND5YzbufoGUvSNVfEyhFEioS865OqPjYyVDlSCeNPN8D4Pd3DjOBxq1GEQ9DY7MrvcWeJKnjuVQxpsH573cvBSTDqm/ET450sUew5vpEQtMAO+OtkEQChUEGzRypoylrFQ== 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=v+TZPcAQWGXSDgkRo86Y7iUWPy/BBSR2UfSbY1AxeJw=; b=xBJbo9Z+8XMAHamCSZAMTGy8zg/owQfOe8+IZ3KHgBd67/IofuwQS3xrcJfgZpJYBSnB197fSpKbSJcayezyPo13JBXFbpkwk2QBAYEjJQkoAOwiy1yNug+2nxEyw5CNiWjU4N0XjzmulKWMBrw45YGIzk9MU20ovLCd1kdVfrFZHM9I+yjGJSIPF08oX8CID0LUIlS5TqpB1O/swU/e01wJNhVizkRN/FrZUhHBVSznoQpnXIGES8qFH2AIt1ym7e4NDsHKtvGJ6652AIJDBrIWQhVgxSAuPz2LiWD1v7ZTTmnkoU4c7UYaqe8GeOd3U8F42z0qVT/HQv8R5bqjew== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=v+TZPcAQWGXSDgkRo86Y7iUWPy/BBSR2UfSbY1AxeJw=; b=fklFHFbNZwlIOt2+DcsgoHtYhd8nWI6UyDVPl75xbYiZmCFbLNBl4/uDQZKNMXQg1De0EWdsbioPdLn2jKzt+hHBEOgn7sUEofivo/EuxVdIAX4Nxrge3L9WI+omMQxkrPKanPuCcHBocuCkt0ZUxOgJkqye8qtxPtSNKzwFs1o= Received: from DS7PR10MB5232.namprd10.prod.outlook.com (2603:10b6:5:3aa::24) by MN2PR10MB4160.namprd10.prod.outlook.com (2603:10b6:208:1df::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.23; Sun, 6 Jul 2025 15:03:14 +0000 Received: from DS7PR10MB5232.namprd10.prod.outlook.com ([fe80::8303:658f:14f8:2324]) by DS7PR10MB5232.namprd10.prod.outlook.com ([fe80::8303:658f:14f8:2324%7]) with mapi id 15.20.8901.021; Sun, 6 Jul 2025 15:03:14 +0000 From: Drew Adams To: Eli Zaretskii Subject: RE: [External] : Re: bug#78935: 30.1.90; [PATCH] Let Imenu optionally allow duplicate menu entries Thread-Topic: [External] : Re: bug#78935: 30.1.90; [PATCH] Let Imenu optionally allow duplicate menu entries Thread-Index: AQHb7jADp1wMzqhvE02ONXK6NW1XI7QlMIkg Date: Sun, 6 Jul 2025 15:03:13 +0000 Message-ID: References: <86bjpzvwqx.fsf@gnu.org> <86sejavb72.fsf@gnu.org> <86pleeue43.fsf@gnu.org> In-Reply-To: <86pleeue43.fsf@gnu.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DS7PR10MB5232:EE_|MN2PR10MB4160:EE_ x-ms-office365-filtering-correlation-id: 82ae31f5-7062-44a0-a7b9-08ddbc9e3b2d x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|376014|366016|1800799024|38070700018|4053099003; x-microsoft-antispam-message-info: =?us-ascii?Q?odU7jBFskuVZZ6iXXR3CMN9Miivv64WtaMG6xs9hm6LDb3KmQBzAQsAbE8Ln?= =?us-ascii?Q?9d3tRcVvuWBTL2rrmRGckRE4xIHHhIB3+Mb2lmllklv4hVDtdIQkOTlBYM08?= =?us-ascii?Q?ESkW7/a80DiDM3WvKsWK0BimfPYJOh5KmEBFXuSiY82A/ZZYZq0Y4yCyEB5y?= =?us-ascii?Q?tZ0n8737qR57TzafSWfNtSF1GoA1QybUImzYjLHPC8eaPNYLqXc8uUurRzJS?= =?us-ascii?Q?EdrydxSmFhvcBe2LXaQRmsjBQz+zRvH+7l9pWjDHGBPvdgISwTyH1wL5T6LI?= =?us-ascii?Q?ZZ9CigF4LtmV+0UPpEI5XZZTHdppcOnFXtDTN9r767E4TuEQ9bxGpOJk3ESV?= =?us-ascii?Q?OEaq2AXdozXrAoOVqmL9b5vaPoaj/GRVAhlMV5dBCsT/jinXX26MMevst0Gi?= =?us-ascii?Q?CsADGcJVA7Manmwv8cyaIwsbFevtSuolxwHTeh7hayh2QdyjtkuFE14itZSI?= =?us-ascii?Q?UzP0hUkujvwT/qgUgvltroB2lc7PmRKZJttuO/Um7A+9avzxXFvkmd9Lx4av?= =?us-ascii?Q?NZj49/M+f6gRCgJxxaQQuM0xkH4swgSePrgZZEJlqSP1b765Z/f2iLaBvKb9?= =?us-ascii?Q?JyN1wBtvItJGRqZhFOzEm71k4FwZuZRd50hH3T+eGZkJ8Q09nH+jBdPVA7Fb?= =?us-ascii?Q?B4NeDsD/85cunuL2Q/07l46bjJttjrppIX5sa2689ZW4iSKJC7pw5ZojwJkD?= =?us-ascii?Q?b7GvBwKDVCyCUkIgm0Ok357TQ0Vzuc0oCwGgfErm3jSZrhqeOcxs+SYBmwFH?= =?us-ascii?Q?FO5yETGbonro5kSksO96vvZPUrmvEGtLYYkVg6Wk61dC2ncuO1TVeH/2slXV?= =?us-ascii?Q?7WCQPTr8rdsmdx5ltmtnVlivtdhL9wCxwFaKTdx5UUsUzNj8/B3CfGqAJ2Jp?= =?us-ascii?Q?/4axSZ+eC5EwJCEBT8oDMFK5NgUPKMXWOWnkPl4TaBW5NDjvEkHZdUnpqzk3?= =?us-ascii?Q?xtBkWeTPoXOPeAY8mFS9FgbhgpE+a69Rp8namX6xeeU9l9bDKsYzMt4gB9tI?= =?us-ascii?Q?aeY/zGgj1mJb37puSv1djemStDwLNcUxyezAYVGETFEJd6D8olVneeLiEA/s?= =?us-ascii?Q?5FstjDPzEm16bz4OZcl18QAMq4eIlodUgRpmcnxrLeeGzxPWLqge5QE/3MNk?= =?us-ascii?Q?264DXfjDtyH0z8jMeUIHMLA917YFgXKlWmFoRGi8Q3B2uE/0gDI+yUSBgT7E?= =?us-ascii?Q?RqTsneIm+XmKgQpx/XibQyenLUBvQUOhW1hXAJuLIX+P6B/a6Ip9xOZHK77Y?= =?us-ascii?Q?QyyeX1tUvmR8eOtCMr1CPngu6qH+1EhGaAmbLlsrzekKLY84/H/THiCyddpb?= =?us-ascii?Q?SSgLAuw8cHCsVrVr/RBGUgDyxA/QF+B5SyqV3PJ1ajv3tjJEWU3k+xW2mB4C?= =?us-ascii?Q?7Q1VBHkRFUkR+MfKagcQOKcZh6gQ1L3U7Y+uWevAi3gtF4T2vKOd3cLHfw4h?= =?us-ascii?Q?YO+5atI0XzpY/2OMOtgXHjyRpWaOLt5oKlcAYzebTRaliwOzoCPAbuZj7D8p?= =?us-ascii?Q?A8tDHUPa+oNOXhs=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DS7PR10MB5232.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(366016)(1800799024)(38070700018)(4053099003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?/t9pWTTmMLUACCXIPWwA4ugHvNZg2WsgxQG9wcdLO/Y/m0Bt6TGSBl43SQbu?= =?us-ascii?Q?/BoLXvAHVKXJTYp3ZZp2KSclTfRjcpmwKxa9BsuhP+ov+dcu/bKSpQJWHU9p?= =?us-ascii?Q?LBVBIUWic2k43XpBoLBbJ8Xi1JVbxC6ihNTZb2cr17fsNs5SrsRvcok+LZYW?= =?us-ascii?Q?lLN1i8SHJd7UNy3ck9D8wksEBf2qBccfxSdHEVI8r9XA5FZRvXiwFV1Udmnu?= =?us-ascii?Q?U+q9Bd3TPT3U3xG96t33IS2oLiF1dfMzWy6gZVhISVHHbXYZygyBb5IzAa5z?= =?us-ascii?Q?DO/4GCrwu+Z642gjDDc206LR9rBogIKuBKkdg7dRInHtfOS4EcvJKsUmwXGa?= =?us-ascii?Q?0j/tZuIRFNjzC1Nl2FOAcJ4Yun2LQDC7tb2xgxhlmM5CKLZaD7IZ1VEjXSzx?= =?us-ascii?Q?2h2BrnJMhKZJiiboFhPl8Nax2VTq60F5+nGakmfCdvv6Ij9+RtQRNX/HhpCu?= =?us-ascii?Q?VJ+Z/l/w2GBD7hfX0MdP6hASQv96q/Oj/2ATHCo/IMbv1B7JmZT6zsJsqHbL?= =?us-ascii?Q?5wIjbwNs4uXR0NOoZXWNPAg4EjQxgtt3l+0Sm4K/Och5UlG0pbq95K0IGAiR?= =?us-ascii?Q?1TZ+cRLTTuzxUXn0qnpg7fMu0Yzozyz8t+0tYm5PZLrCVbXBKRuV4ThhMHLn?= =?us-ascii?Q?6zjK6USZZ5xGmlhAdI73h9vpTmdk43z/78vUVgVrPfc1Oilm2TMDO/3Ja2rm?= =?us-ascii?Q?z25jbPcUh83EmiSLYtKkNHkUEZfW0h7Deg64dugN/nIudiJ8+zrornVqP7Km?= =?us-ascii?Q?cr670Z5ZlMSh0rV781GAQhTd0RSNdjSYnirzCBOsxy335Ho02OY8cM4bt7h+?= =?us-ascii?Q?0aYN2gXIgIU0dxQinAuVQ+/r+thQfFCeBTLC4Dm1yXwTB7N6DJds+sjH2CmL?= =?us-ascii?Q?8HeBGvE8NfY7n4w7JL5mxX2QITEzZ1i7T1B4S+bO1qbBkFIoK5GdM31DWyOt?= =?us-ascii?Q?ag1f3/XVsr6B8yy2kN0S7O2NUGyYK9SnKS9dBPQjnpQPXsZ2TqF2E/FQLiu9?= =?us-ascii?Q?6iK2csUsPbTiBQNvbKFnBpfy3tCnbxpbQO6c5s9m1UE3OZYzihIPelJg8Zo8?= =?us-ascii?Q?ybmO3qzNAiqG4YNMz/iN8acZAim5lH5QVRHoagXJFVxicO9fSwr6+572bklE?= =?us-ascii?Q?qYlJHsAIhkFJBCLfcHcXKJm27nlRpRuRVnSns14/wxpRcBd1OfTPpyoEIe8A?= =?us-ascii?Q?Bhhb9g+bMiPOO2R9WPs/CsYVJCj52KN10C6sbGrHL2aBWJKygD1clf/258NL?= =?us-ascii?Q?aBpEuOxOEHcBgqKBymP/BJu5Qi+EvqsP59GNRnjLiFALIYi8QatQ+/COXdy7?= =?us-ascii?Q?uvA8ntyQflZS5qWcicGapjh1WGUoOqf4uqwN6C4049X7t+pdvPt7HswLgClW?= =?us-ascii?Q?QfgvY74p9GspgEW0AOoQUJt/DA5Ysbg/mllkR8rr5IAzHFpqnVicWqOkRSPz?= =?us-ascii?Q?dUmbEC/sdx4vjpUuM6gOE4hNWKbK9/c1KH5pWXVTO50P/a3TMX7CNTQd2jmk?= =?us-ascii?Q?B0pVv6PiwlaqrMU6OOox06zjx22nSyZ+FddLxjUCr4p10/ybv2YR98geFKpX?= =?us-ascii?Q?mntnZUeSyKuWj/zDakK5QDK14Y/wjT2qLDkWGDiX?= Content-Type: multipart/mixed; boundary="_003_DS7PR10MB52322F81CCFD544632230B64F34CADS7PR10MB5232namp_" MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: iXlHsXnABkkPijo1HGdPul4c/v8S5otRlegLWJ0aSy3mFg87v3KuXF4rM16+2oayWlrcNSaUtl8wxLXGm7P+SjiVusHKxB4Iq8JxW4yaJotI+OVxniGLbKfrnjgpJ61D3I4x3C1RAoTGKQ+24MMC1YS1hior/ZvCjTrfLtY5b8R1DSpGHw70+7IjcfuB1T+Jcw8ZTTbW2GUwcp6EQgR7e9y530NwdYaWoTN+fhPj6wWSZpsbSlziNEWOjPuO54yPWSoVUidRsbm5HB8/r4wZeXCH8Y/Ui0XelB66oeqATu/1pcsi4MRpJCknVLHeBaAItHG6v3KF2IBVI0/LoLvA3CEz0/IQ2uIcEuIhoYY6fJgFRzWlXs+CfEteSNHD8mlcEyqBFTRFaCVQMz0TRbq1qqkgdTVSwF10YUSpFkM9DFWN27T1eKtTNlS68GNnfBowUwblSYmbdsq10uKRxqAUdZsNIxiJpuRkAUdqLzCKH03bu9KhAq5y/EHaBuZ3tP4Hxb50AtkrLjlA3GpJ+3HRJBdGdhfX6Du6aThgPKdtWU+TuTVlXqp+5evAwjPHAPNKWOrQGK9R7CnLH4QBQSa35jUl1P9YFpGscD6QR2G3nGA= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DS7PR10MB5232.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 82ae31f5-7062-44a0-a7b9-08ddbc9e3b2d X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Jul 2025 15:03:13.9714 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: vbllRM6kNqFmh8/o+IkbhFjAJEctj0w8PwKnFlVe1fM7naWmpMurYzg9Mn0BpWPNLBvErZv6a1urFUzAJBSELA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR10MB4160 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-07-04_07,2025-07-04_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 adultscore=0 suspectscore=0 mlxlogscore=999 phishscore=0 malwarescore=0 mlxscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2505160000 definitions=main-2507060095 X-Proofpoint-ORIG-GUID: nA41UVwwfLihJb7ypCbAwhv6zgAlB8L8 X-Proofpoint-GUID: nA41UVwwfLihJb7ypCbAwhv6zgAlB8L8 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzA2MDA5NiBTYWx0ZWRfX3vqzdahZknVz 106243xUtHtobRPsRFiAsaWNFPHI8TRULSVqeEfeQdvg1+AH2ZG+aVoYT2KqGKxzXUMAdYoWAQn W7QbFavjzgqnCt4j4dFpA63GV9CNG9VhzJEfAu37JH5fI+MZ9skrXDZn+nlJJjsLAxFoyV0r+7S CKh0KI7XXKf4Mk2AT2nsoyjZda1sMxKZC/1eJ+xHJhlOt0EJHwu0KxGjEZ954BtF0x171ngflnn UfGWpsPdFDsv8ThzTZWI5t1Bo0H7iIWodPV+iACVPtFQZOKzK4vmQ6GTzE4hn+p2j3OwEv12Sjn 2Gt5pXzLp2z8SvWFBSXPpTHx2REuwYksNxTEChIrOctze38XmpCHkGL5Blk/xR0cW9Ak2PYUir2 EpW+ZgZz9aK6+wSPaRYO/g1xVG/wuOXgQtrl74tfjgoyqNegG/6wGhv+7QQHVCW3xpfPsZmE X-Authority-Analysis: v=2.4 cv=UpRjN/wB c=1 sm=1 tr=0 ts=686a9036 cx=c_pps a=OOZaFjgC48PWsiFpTAqLcw==:117 a=OOZaFjgC48PWsiFpTAqLcw==:17 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=Wb1JkmetP80A:10 a=GoEa3M9JfhUA:10 a=Wu2kSuiWf9MiubwsNYkA:9 a=CjuIK1q_8ugA:10 a=Ys2oqbKgLmsZ0jPaSYUA:9 a=B2y7HmGcmWMA:10 a=ViaV3LbfO-Ww_wTV_UUA:9 a=1OfwrDeanrQA:10 X-Spam-Score: -1.7 (-) X-Debbugs-Envelope-To: 78935 Cc: "78935@debbugs.gnu.org" <78935@debbugs.gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.7 (--) --_003_DS7PR10MB52322F81CCFD544632230B64F34CADS7PR10MB5232namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable > It is best if you could download NEWS from the master branch, and > produce a patch for that. Failing that, the entry itself would do. I don't know how to do that - dunno where it's available for download using a browser. Here is the NEWS entry: *** New user option 'imenu-allow-duplicate-menu-items'. This specifies whether Imenu can include duplicate menu items. Duplicate items are allowed by default (option value 't'). > > Also, do you prefer that `-flag' be removed from the name? > Yes, please. Done. See attached imenu.el patch and patched file. Thx. --_003_DS7PR10MB52322F81CCFD544632230B64F34CADS7PR10MB5232namp_ Content-Type: application/octet-stream; name="imenu-patch-2025-07-06a.patch" Content-Description: imenu-patch-2025-07-06a.patch Content-Disposition: attachment; filename="imenu-patch-2025-07-06a.patch"; size=2490; creation-date="Sun, 06 Jul 2025 14:56:55 GMT"; modification-date="Sun, 06 Jul 2025 15:03:13 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtdSAzMC4xLjkwL2xpc3AvaW1lbnUuZWwgaW1lbnUtcGF0Y2hlZC0yMDI1LTA3LTA2YS5l bAotLS0gMzAuMS45MC9saXNwL2ltZW51LmVsCTIwMjUtMDYtMTYgMTA6MjM6MDUuNDY3NzIxMTAw IC0wNzAwCisrKyBpbWVudS1wYXRjaGVkLTIwMjUtMDctMDZhLmVsCTIwMjUtMDctMDYgMDc6NTE6 NTguODgyOTM4ODAwIC0wNzAwCkBAIC0xOTMsNiArMTkzLDE3IEBACiAgIDp0eXBlICdudW1iZXIK ICAgOnZlcnNpb24gIjI4LjEiKQogCisoZGVmY3VzdG9tIGltZW51LWFsbG93LWR1cGxpY2F0ZS1t ZW51LWl0ZW1zIHQKKyAgIk5vbi1uaWwgbWVhbnMgdGhhdCBJbWVudSBjYW4gaW5jbHVkZSBkdXBs aWNhdGUgbWVudSBpdGVtcy4KK0ZvciBleGFtcGxlLCBpZiB0aGUgYnVmZmVyIGNvbnRhaW5zIG11 bHRpcGxlIGRlZmluaXRpb25zIG9mIGZ1bmN0aW9uCitgZm9vJyB0aGVuIGEgbWVudSBpdGVtIGlz IGluY2x1ZGVkIGZvciBlYWNoIG9mIHRoZW0uCitPdGhlcndpc2UsIG9ubHkgdGhlIGZpcnN0IHN1 Y2ggZGVmaW5pdGlvbiBpcyBhY2Nlc3NpYmxlIGZyb20gdGhlIG1lbnUuCisKK1RoaXMgb3B0aW9u IGFwcGxpZXMgb25seSB0byBhbiBJbWVudSBtZW51LCBub3QgYWxzbyB0byB0aGUgdXNlIG9mCitj b21tYW5kIGBpbWVudScsIHdoaWNoIHVzZXMgYGNvbXBsZXRpbmctcmVhZCcgdG8gcmVhZCBhIG1l bnUgaXRlbS4KK1RoZSB1c2Ugb2YgdGhhdCBjb21tYW5kIGRvZXNuJ3QgYWxsb3cgZHVwbGljYXRl IGl0ZW1zLiIKKyAgOnR5cGUgJ2Jvb2xlYW4gOmdyb3VwICdpbWVudSA6dmVyc2lvbiAiMzEuMSIp CisKIDs7OyMjI2F1dG9sb2FkCiAoZGVmdmFyLWxvY2FsIGltZW51LWdlbmVyaWMtZXhwcmVzc2lv biBuaWwKICAgIkxpc3Qgb2YgZGVmaW5pdGlvbiBtYXRjaGVycyBmb3IgY3JlYXRpbmcgYW4gSW1l bnUgaW5kZXguCkBAIC01MDUsMTUgKzUxNiwyNiBAQAogKGRlZnVuIGltZW51LS1jcmVhdGUta2V5 bWFwICh0aXRsZSBhbGlzdCAmb3B0aW9uYWwgY21kKQogICBgKGtleW1hcCAsdGl0bGUKICAgICAg ICAgICAgLEAobWFwY2FyCi0gICAgICAgICAgICAgIChsYW1iZGEgKGl0ZW0pCi0gICAgICAgICAg ICAgICAgYCgsKGludGVybiAoY2FyIGl0ZW0pKSAsKGNhciBpdGVtKQotICAgICAgICAgICAgICAg ICAgLEAoY29uZAotICAgICAgICAgICAgICAgICAgICAgKChpbWVudS0tc3ViYWxpc3QtcCBpdGVt KQotICAgICAgICAgICAgICAgICAgICAgIChpbWVudS0tY3JlYXRlLWtleW1hcCAoY2FyIGl0ZW0p IChjZHIgaXRlbSkgY21kKSkKLSAgICAgICAgICAgICAgICAgICAgICh0Ci0gICAgICAgICAgICAg ICAgICAgICAgKGxhbWJkYSAoKSAoaW50ZXJhY3RpdmUpCi0gICAgICAgICAgICAgICAgICAgICAg ICAoaWYgY21kIChmdW5jYWxsIGNtZCBpdGVtKSBpdGVtKSkpKSkpCi0gICAgICAgICAgICAgIChz ZXEtZmlsdGVyICMnaWRlbnRpdHkgYWxpc3QpKSkpCisgICAgICAgICAgICAgIChpZiBpbWVudS1h bGxvdy1kdXBsaWNhdGUtbWVudS1pdGVtcworICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoaXRl bSkKKyAgICAgICAgICAgICAgICAgICAgYCgsKGluY3JlbWVudC1zeW1ib2wtbmFtZSAoY2FyIGl0 ZW0pKQorICAgICAgICAgICAgICAgICAgICAgICwoY2FyIGl0ZW0pCisgICAgICAgICAgICAgICAg ICAgICAgLEAoY29uZAorICAgICAgICAgICAgICAgICAgICAgICAgICgoaW1lbnUtLXN1YmFsaXN0 LXAgaXRlbSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGltZW51LS1jcmVhdGUta2V5bWFw IChjYXIgaXRlbSkgKGNkciBpdGVtKSBjbWQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICh0 CisgICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKCkgKGludGVyYWN0aXZlKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBjbWQgKGZ1bmNhbGwgY21kIGl0ZW0pIGl0ZW0p KSkpKSkKKyAgICAgICAgICAgICAgICAobGFtYmRhIChpdGVtKQorICAgICAgICAgICAgICAgICAg YCgsKGludGVybiAoY2FyIGl0ZW0pKQorICAgICAgICAgICAgICAgICAgICAsKGNhciBpdGVtKQor ICAgICAgICAgICAgICAgICAgICAsQChjb25kCisgICAgICAgICAgICAgICAgICAgICAgICgoaW1l bnUtLXN1YmFsaXN0LXAgaXRlbSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChpbWVudS0tY3Jl YXRlLWtleW1hcCAoY2FyIGl0ZW0pIChjZHIgaXRlbSkgY21kKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgKHQKKyAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKCkgKGludGVyYWN0aXZl KQorICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgY21kIChmdW5jYWxsIGNtZCBpdGVtKSBp dGVtKSkpKSkpKQorICAgICAgICAgICAgICAocmVtcSBuaWwgYWxpc3QpKSkpCiAKIChkZWZ1biBp bWVudS0taW4tYWxpc3QgKHN0ciBhbGlzdCkKICAgIkNoZWNrIHdoZXRoZXIgdGhlIHN0cmluZyBT VFIgaXMgY29udGFpbmVkIGluIG11bHRpLWxldmVsIEFMSVNULiIK --_003_DS7PR10MB52322F81CCFD544632230B64F34CADS7PR10MB5232namp_ Content-Type: application/octet-stream; name="imenu-patched-2025-07-06a.el" Content-Description: imenu-patched-2025-07-06a.el Content-Disposition: attachment; filename="imenu-patched-2025-07-06a.el"; size=39281; creation-date="Sun, 06 Jul 2025 14:50:27 GMT"; modification-date="Sun, 06 Jul 2025 15:03:13 GMT" Content-Transfer-Encoding: base64 Ozs7IGltZW51LmVsIC0tLSBmcmFtZXdvcmsgZm9yIG1vZGUtc3BlY2lmaWMgYnVmZmVyIGluZGV4 ZXMgIC0qLSBsZXhpY2FsLWJpbmRpbmc6IHQgLSotCgo7OyBDb3B5cmlnaHQgKEMpIDE5OTQtMTk5 OCwgMjAwMS0yMDI1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgoKOzsgQXV0aG9yOiBB a2UgU3RlbmhvZmYgPGV0eGFrc2ZAYW9tLmVyaWNzc29uLnNlPgo7OyAgICAgICAgIExhcnMgTGlu ZGJlcmcgPGxsaUBzeXByby5jYXAuc2U+Cjs7IE1haW50YWluZXI6IGVtYWNzLWRldmVsQGdudS5v cmcKOzsgQ3JlYXRlZDogOCBGZWIgMTk5NAo7OyBLZXl3b3JkczogdG9vbHMgY29udmVuaWVuY2UK Cjs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBFbWFjcy4KCjs7IEdOVSBFbWFjcyBpcyBmcmVl IHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cjs7IGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5Cjs7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCjs7IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Cgo7OyBHTlUgRW1hY3MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKOzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQo7OyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgoKOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKOzsgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJ ZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKOzs7IENvbW1lbnRh cnk6Cgo7OyBQdXJwb3NlIG9mIHRoaXMgcGFja2FnZToKOzsgICBUbyBwcmVzZW50IGEgZnJhbWV3 b3JrIGZvciBtb2RlLXNwZWNpZmljIGJ1ZmZlciBpbmRleGVzLgo7OyAgIEEgYnVmZmVyIGluZGV4 IGlzIGFuIGFsaXN0IG9mIG5hbWVzIGFuZCBidWZmZXIgcG9zaXRpb25zLgo7OyAgIEZvciBpbnN0 YW5jZSBhbGwgZnVuY3Rpb25zIGluIGEgQy1maWxlIGFuZCB0aGVpciBwb3NpdGlvbnMuCjs7Cjs7 ICAgSXQgaXMgZG9jdW1lbnRlZCBpbiB0aGUgRW1hY3MgTGlzcCBtYW51YWwuCjs7Cjs7IEhvdyBp dCB3b3JrczoKCjs7ICAgQSBtb2RlLXNwZWNpZmljIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBnZW5l cmF0ZSB0aGUgaW5kZXguICBJdCBpcwo7OyAgIHRoZW4gcHJlc2VudGVkIHRvIHRoZSB1c2VyLCB3 aG8gY2FuIGNob29zZSBmcm9tIHRoaXMgaW5kZXguCgo7OzsgSGlzdG9yeToKOzsgIFRoYW5rcyBn byB0bwo7OyAgW3NpbW9uXSAtIFNpbW9uIExlaW5lbiBzaW1vbkBsaWEuZGkuZXBmbC5jaAo7OyAg W2RlYW5dIC0gRGVhbiBBbmRyZXdzIGFkYUB1bmlzb24uY29tCjs7ICBbYWxvbl0gLSBBbG9uIEFs YmVydCBhbEBtZXJjdXJ5LmNvLmlsCjs7ICBbZ3JlZ10gLSBHcmVnIFRob21wc29uIGdyZWd0QHBv cnNjaGUudmlzaXguQ09NCjs7ICBbd29sZmdhbmddIC0gV29sZmdhbmcgQmFuZ2VydGggemNnNTEx MjJAcnBvb2wxLnJ1cy51bmktc3R1dHRnYXJ0LmRlCjs7ICBba2FpXSAtIEthaSBHcm9zc2pvaGFu biBncm9zc2pvaEBsaW51cy5pbmZvcm1hdGlrLnVuaS1kb3J0bXVuZC5kZQo7OyAgW2RhdmlkXSAt IERhdmlkIE0uIFNtaXRoIGRzbWl0aEBzdGF0cy5hZGVsYWlkZS5lZHUuYXUKOzsgIFtjaHJpc3Rp YW5dIC0gQ2hyaXN0aWFuIEVnbGkgQ2hyaXN0aWFuLkVnbGlAaGNzZC5oYWMuY29tCjs7ICBba2Fy bF0gLSBLYXJsIEZvZ2VsIGtmb2dlbEBmbG9zcy5saWZlLnVpdWMuZWR1Cgo7OzsgQ29kZToKCihy ZXF1aXJlICdjbC1saWIpCgo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Cjs7Owo7OzsgQ3VzdG9taXphYmxlIHZhcmlhYmxlcwo7 OzsKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7OwoKKGRlZmdyb3VwIGltZW51IG5pbAogICJNb2RlLXNwZWNpZmljIGJ1ZmZlciBp bmRleGVzLiIKICA6Z3JvdXAgJ21hdGNoaW5nCiAgOmdyb3VwICdmcmFtZXMKICA6Z3JvdXAgJ2Nv bnZlbmllbmNlCiAgOmxpbmsgJyhjdXN0b20tbWFudWFsICIoZWxpc3ApSW1lbnUiKSkKCihkZWZj dXN0b20gaW1lbnUtdXNlLW1hcmtlcnMgdAogICJOb24tbmlsIG1lYW5zIHVzZSBtYXJrZXJzIGlu c3RlYWQgb2YgaW50ZWdlcnMgZm9yIEltZW51IGJ1ZmZlciBwb3NpdGlvbnMuCgpTZXR0aW5nIHRo aXMgdG8gbmlsIG1ha2VzIEltZW51IHdvcmsgYSBsaXR0bGUgZmFzdGVyIGJ1dCBlZGl0aW5nIHRo ZQpidWZmZXIgd2lsbCBtYWtlIHRoZSBnZW5lcmF0ZWQgaW5kZXggcG9zaXRpb25zIHdyb25nLgoK VGhpcyBtaWdodCBub3QgeWV0IGJlIGhvbm9yZWQgYnkgYWxsIGluZGV4LWJ1aWxkaW5nIGZ1bmN0 aW9ucy4iCiAgOnR5cGUgJ2Jvb2xlYW4pCgooZGVmY3VzdG9tIGltZW51LW1heC1pdGVtLWxlbmd0 aCA2MAogICJJZiBhIG51bWJlciwgdHJ1bmNhdGUgSW1lbnUgZW50cmllcyB0byB0aGF0IGxlbmd0 aC4iCiAgOnR5cGUgJyhjaG9pY2UgaW50ZWdlcgogICAgICAgICAgICAgICAgIChjb25zdCA6dGFn ICJVbmxpbWl0ZWQiKSkpCgooZGVmY3VzdG9tIGltZW51LWF1dG8tcmVzY2FuIG5pbAogICJOb24t bmlsIG1lYW5zIEltZW51IHNob3VsZCBhbHdheXMgcmVzY2FuIHRoZSBidWZmZXJzLiIKICA6dHlw ZSAnYm9vbGVhbikKCihkZWZjdXN0b20gaW1lbnUtYXV0by1yZXNjYW4tbWF4b3V0IDYwMDAwMAog ICJJbWVudSBhdXRvLXJlc2NhbiBpcyBkaXNhYmxlZCBpbiBidWZmZXJzIGxhcmdlciB0aGFuIHRo aXMgc2l6ZSAoaW4gYnl0ZXMpLgpBbHNvIHNlZSBgaW1lbnUtbWF4LWluZGV4LXRpbWUnLiIKICA6 dHlwZSAnbmF0bnVtCiAgOnZlcnNpb24gIjI2LjIiKQoKKGRlZmN1c3RvbSBpbWVudS11c2UtcG9w dXAtbWVudSAnb24tbW91c2UKICAiVXNlIGEgcG9wdXAgbWVudSByYXRoZXIgdGhhbiBhIG1pbmli dWZmZXIgcHJvbXB0LgpJZiBuaWwsIGFsd2F5cyB1c2UgYSBtaW5pYnVmZmVyIHByb21wdC4KSWYg dCwgYWx3YXlzIHVzZSBhIHBvcHVwIG1lbnUsCklmIGBvbi1tb3VzZScgdXNlIGEgcG9wdXAgbWVu dSB3aGVuIGBpbWVudScgd2FzIGludm9rZWQgd2l0aCB0aGUgbW91c2UuIgogIDp0eXBlICcoY2hv aWNlIChjb25zdCA6dGFnICJPbiBNb3VzZSIgb24tbW91c2UpCgkJIChjb25zdCA6dGFnICJOZXZl ciIgbmlsKQogICAgICAgICAgICAgICAgIChvdGhlciA6dGFnICJBbHdheXMiIHQpKSkKCihkZWZj dXN0b20gaW1lbnUtZWFnZXItY29tcGxldGlvbi1idWZmZXIgdAogICJJZiBub24tbmlsLCBlYWdl cmx5IHBvcCB1cCB0aGUgY29tcGxldGlvbiBidWZmZXIuIgogIDp0eXBlICdib29sZWFuCiAgOnZl cnNpb24gIjIyLjEiKQoKKGRlZmN1c3RvbSBpbWVudS1hZnRlci1qdW1wLWhvb2sgbmlsCiAgIkhv b2tzIGNhbGxlZCBhZnRlciBqdW1waW5nIHRvIGEgcGxhY2UgaW4gdGhlIGJ1ZmZlci4KClVzZWZ1 bCB0aGluZ3MgdG8gdXNlIGhlcmUgaW5jbHVkZSBgcmVwb3NpdGlvbi13aW5kb3cnLCBgcmVjZW50 ZXInLCBhbmQKXChsYW1iZGEgKCkgKHJlY2VudGVyIDApKSB0byBzaG93IGF0IHRvcCBvZiBzY3Jl ZW4uIgogIDp0eXBlICdob29rKQoKOzs7IyMjYXV0b2xvYWQKKGRlZmN1c3RvbSBpbWVudS1zb3J0 LWZ1bmN0aW9uIG5pbAogICJUaGUgZnVuY3Rpb24gdG8gdXNlIGZvciBzb3J0aW5nIHRoZSBpbmRl eCBtb3VzZS1tZW51LgoKQWZmZWN0cyBvbmx5IHRoZSBtb3VzZSBpbmRleCBtZW51LiAgSWYgeW91 IHdhbnQgdG8gY2hhbmdlCnRoZSBzb3J0aW5nIG9yZGVyIG9mIGNvbXBsZXRpb25zLCB5b3UgY2Fu IGN1c3RvbWl6ZQp0aGUgb3B0aW9uIGBjb21wbGV0aW9uLWNhdGVnb3J5LW92ZXJyaWRlcycgYW5k IHNldApgZGlzcGxheS1zb3J0LWZ1bmN0aW9uJyBmb3IgdGhlIGNhdGVnb3J5IGBpbWVudScuCgpT ZXQgdGhpcyB0byBuaWwgaWYgeW91IGRvbid0IHdhbnQgYW55IHNvcnRpbmcgKGZhc3RlcikuClRo ZSBpdGVtcyBpbiB0aGUgbWVudSBhcmUgdGhlbiBwcmVzZW50ZWQgaW4gdGhlIG9yZGVyIHRoZXkg d2VyZSBmb3VuZAppbiB0aGUgYnVmZmVyLgoKU2V0IGl0IHRvIGBpbWVudS0tc29ydC1ieS1uYW1l JyBpZiB5b3Ugd2FudCBhbHBoYWJldGljIHNvcnRpbmcuCgpUaGUgZnVuY3Rpb24gc2hvdWxkIHRh a2UgdHdvIGFyZ3VtZW50cyBhbmQgcmV0dXJuIHQgaWYgdGhlIGZpcnN0CmVsZW1lbnQgc2hvdWxk IGNvbWUgYmVmb3JlIHRoZSBzZWNvbmQuICBUaGUgYXJndW1lbnRzIGFyZSBjb25zIGNlbGxzOwpc KE5BTUUgLiBQT1NJVElPTikuICBMb29rIGF0IGBpbWVudS0tc29ydC1ieS1uYW1lJyBmb3IgYW4g ZXhhbXBsZS4iCiAgOnR5cGUgJyhjaG9pY2UgKGNvbnN0IDp0YWcgIk5vIHNvcnRpbmciIG5pbCkK CQkgKGNvbnN0IDp0YWcgIlNvcnQgYnkgbmFtZSIgaW1lbnUtLXNvcnQtYnktbmFtZSkKICAgICAg ICAgICAgICAgICAoZnVuY3Rpb24gOnRhZyAiQW5vdGhlciBmdW5jdGlvbiIpKSkKCihkZWZjdXN0 b20gaW1lbnUtbWF4LWl0ZW1zIDI1CiAgIk1heGltdW0gbnVtYmVyIG9mIGVsZW1lbnRzIGluIGEg bW91c2UgbWVudSBmb3IgSW1lbnUuIgogIDp0eXBlICduYXRudW0pCgooZGVmY3VzdG9tIGltZW51 LXNwYWNlLXJlcGxhY2VtZW50ICIuIgogICJUaGUgcmVwbGFjZW1lbnQgc3RyaW5nIGZvciBzcGFj ZXMgaW4gaW5kZXggbmFtZXMuClVzZWQgd2hlbiBwcmVzZW50aW5nIHRoZSBpbmRleCBpbiBhIGNv bXBsZXRpb24gYnVmZmVyIHRvIG1ha2UgdGhlCm5hbWVzIHdvcmsgYXMgdG9rZW5zLiIKICA6dHlw ZSAnKGNob2ljZSBzdHJpbmcgKGNvbnN0IG5pbCkpKQoKKGRlZmN1c3RvbSBpbWVudS1sZXZlbC1z ZXBhcmF0b3IgIjoiCiAgIlRoZSBzZXBhcmF0b3IgYmV0d2VlbiBpbmRleCBuYW1lcyBvZiBkaWZm ZXJlbnQgbGV2ZWxzLgpVc2VkIGZvciBmbGF0dGVuaW5nIG5lc3RlZCBpbmRleGVzIHdpdGggbmFt ZSBjb25jYXRlbmF0aW9uLiIKICA6dHlwZSAnc3RyaW5nKQoKKGRlZmN1c3RvbSBpbWVudS1mbGF0 dGVuIG5pbAogICJXaGV0aGVyIHRvIGZsYXR0ZW4gdGhlIGxpc3Qgb2Ygc2VjdGlvbnMgaW4gYW4g aW1lbnUgb3Igc2hvdyBpdCBuZXN0ZWQuCklmIG5pbCwgdXNlIG5lc3RlZCBpbmRleGVzLgpJZiB0 aGUgdmFsdWUgaXMgYHByZWZpeCcsIHBvcCB1cCB0aGUgY29tcGxldGlvbiBidWZmZXIgd2l0aCBh CmZsYXR0ZW5lZCBtZW51IHdoZXJlIHNlY3Rpb24gbmFtZXMgYXJlIHByZXBlbmRlZCB0byBjb21w bGV0aW9uCmNhbmRpZGF0ZXMgYXMgcHJlZml4ZXMuCklmIHRoZSB2YWx1ZSBpcyBgYW5ub3RhdGlv bicsIGFubm90YXRlIGVhY2ggY29tcGxldGlvbiBjYW5kaWRhdGUKd2l0aCBhIHN1ZmZpeCB0aGF0 IGlzIHRoZSBzZWN0aW9uIG5hbWUgdG8gd2hpY2ggaXQgYmVsb25ncy4KSWYgdGhlIHZhbHVlIGlz IGBncm91cCcsIHNwbGl0IGNvbXBsZXRpb24gY2FuZGlkYXRlcyBpbnRvIGdyb3VwcwphY2NvcmRp bmcgdG8gdGhlIHNlY3Rpb25zLgpBbnkgb3RoZXIgdmFsdWUgaXMgdHJlYXRlZCBhcyBgcHJlZml4 Jy4KClNpbmNlIHRoZSB2YWx1ZXMgYGFubm90YXRpb24nIGFuZCBgZ3JvdXAnIHJlbHkgb24gdGV4 dCBwcm9wZXJ0aWVzLAp5b3UgY2FuIHVzZSB0aGVtIG9ubHkgYnkgc2VsZWN0aW5nIGNhbmRpZGF0 ZXMgZnJvbSB0aGUgY29tcGxldGlvbnMKYnVmZmVyLCBub3QgYnkgdHlwaW5nIGluIHRoZSBtaW5p YnVmZmVyLiAgVGhpcyBhbHNvIG1lYW5zIHRoYXQKaWYgeW91IHVzZSBgbWluaWJ1ZmZlci1uZXh0 LWNvbXBsZXRpb24nIChgTS08ZG93bj4nKSB0byBzZWxlY3QKYSBjb21wbGV0aW9uIHdoaWxlIHBv aW50IHN0YXlzIGluIHRoZSBtaW5pYnVmZmVyLCB5b3UgbmVlZAp0byBjdXN0b21pemUgYG1pbmli dWZmZXItY29tcGxldGlvbi1hdXRvLWNob29zZScgdG8gbmlsIHRoYXQKZG9lc24ndCBpbnNlcnQg Y29tcGxldGlvbiBjYW5kaWRhdGVzIHRvIHRoZSBtaW5pYnVmZmVyLgpBbHNvIG5vdGUgdGhhdCBm b3IgdXNpbmcgdGhlIHZhbHVlIGBncm91cCcgeW91IG5lZWQgdG8gY3VzdG9taXplCmBjb21wbGV0 aW9ucy1ncm91cCcgdG8gdGhlIHZhbHVlIHQsIGFuZCBgY29tcGxldGlvbnMtZm9ybWF0Jwp0byB0 aGUgdmFsdWUgYHZlcnRpY2FsJy4KClRoZSB2YWx1ZSBvZiBgaW1lbnUtbGV2ZWwtc2VwYXJhdG9y JywgYSBzdHJpbmcsIGlzIHVzZWQgdG8gc2VwYXJhdGUKbmFtZXMgZnJvbSBkaWZmZXJlbnQgZmxh dHRlbmVkIGxldmVscywgc3VjaCBhcyBzZWN0aW9uIG5hbWVzLCBmcm9tIHRoZQpuYW1lcyBvZiBj b21wbGV0aW9uIGNhbmRpZGF0ZXMuIgogIDp0eXBlICcoY2hvaWNlIChjb25zdCA6dGFnICJTaG93 IG5lc3RlZCBsaXN0IiBuaWwpCiAgICAgICAgICAgICAgICAgKGNvbnN0IDp0YWcgIkZsYXQgbGlz dCB3aXRoIHNlY3Rpb25zIGFzIHByZWZpeCIgcHJlZml4KQogICAgICAgICAgICAgICAgIChjb25z dCA6dGFnICJGbGF0IGxpc3QgYW5ub3RhdGVkIHdpdGggc2VjdGlvbnMiIGFubm90YXRpb24pCiAg ICAgICAgICAgICAgICAgKGNvbnN0IDp0YWcgIkZsYXQgbGlzdCBncm91cGVkIGJ5IHNlY3Rpb25z IiBncm91cCkpCiAgOnZlcnNpb24gIjMwLjEiKQoKKGRlZmN1c3RvbSBpbWVudS1nZW5lcmljLXNr aXAtY29tbWVudHMtYW5kLXN0cmluZ3MgdAogICJXaGVuIG5vbi1uaWwsIGlnbm9yZSB0ZXh0IGlu c2lkZSBjb21tZW50cyBhbmQgc3RyaW5ncy4KT25seSBhZmZlY3RzIGBpbWVudS1kZWZhdWx0LWNy ZWF0ZS1pbmRleC1mdW5jdGlvbicgKGFuZCBhbnkKYWx0ZXJuYXRpdmUgaW1wbGVtZW50YXRpb24g b2YgYGltZW51LWNyZWF0ZS1pbmRleC1mdW5jdGlvbicgdGhhdAp1c2VzIGBpbWVudS0tZ2VuZXJp Yy1mdW5jdGlvbicpLiIKICA6dHlwZSAnYm9vbGVhbgogIDp2ZXJzaW9uICIyNC40IikKCihkZWZj dXN0b20gaW1lbnUtbWF4LWluZGV4LXRpbWUgNQogICJNYXggdGltZSB0byB1c2Ugd2hlbiBjcmVh dGluZyBpbWVudSBpbmRpY2VzLiIKICA6dHlwZSAnbnVtYmVyCiAgOnZlcnNpb24gIjI4LjEiKQoK KGRlZmN1c3RvbSBpbWVudS1hbGxvdy1kdXBsaWNhdGUtbWVudS1pdGVtcyB0CiAgIk5vbi1uaWwg bWVhbnMgdGhhdCBJbWVudSBjYW4gaW5jbHVkZSBkdXBsaWNhdGUgbWVudSBpdGVtcy4KRm9yIGV4 YW1wbGUsIGlmIHRoZSBidWZmZXIgY29udGFpbnMgbXVsdGlwbGUgZGVmaW5pdGlvbnMgb2YgZnVu Y3Rpb24KYGZvbycgdGhlbiBhIG1lbnUgaXRlbSBpcyBpbmNsdWRlZCBmb3IgZWFjaCBvZiB0aGVt LgpPdGhlcndpc2UsIG9ubHkgdGhlIGZpcnN0IHN1Y2ggZGVmaW5pdGlvbiBpcyBhY2Nlc3NpYmxl IGZyb20gdGhlIG1lbnUuCgpUaGlzIG9wdGlvbiBhcHBsaWVzIG9ubHkgdG8gYW4gSW1lbnUgbWVu dSwgbm90IGFsc28gdG8gdGhlIHVzZSBvZgpjb21tYW5kIGBpbWVudScsIHdoaWNoIHVzZXMgYGNv bXBsZXRpbmctcmVhZCcgdG8gcmVhZCBhIG1lbnUgaXRlbS4KVGhlIHVzZSBvZiB0aGF0IGNvbW1h bmQgZG9lc24ndCBhbGxvdyBkdXBsaWNhdGUgaXRlbXMuIgogIDp0eXBlICdib29sZWFuIDpncm91 cCAnaW1lbnUgOnZlcnNpb24gIjMxLjEiKQoKOzs7IyMjYXV0b2xvYWQKKGRlZnZhci1sb2NhbCBp bWVudS1nZW5lcmljLWV4cHJlc3Npb24gbmlsCiAgIkxpc3Qgb2YgZGVmaW5pdGlvbiBtYXRjaGVy cyBmb3IgY3JlYXRpbmcgYW4gSW1lbnUgaW5kZXguCkVhY2ggZWxlbWVudCBvZiB0aGlzIGxpc3Qg c2hvdWxkIGhhdmUgdGhlIGZvcm0KCiAgKE1FTlUtVElUTEUgUkVHRVhQIElOREVYIFtGVU5DVElP Tl0gW0FSR1VNRU5UUy4uLl0pCgpNRU5VLVRJVExFIHNob3VsZCBiZSBuaWwgKGluIHdoaWNoIGNh c2UgdGhlIG1hdGNoZXMgZm9yIHRoaXMKZWxlbWVudCBhcmUgcHV0IGluIHRoZSB0b3AgbGV2ZWwg b2YgdGhlIGJ1ZmZlciBpbmRleCkgb3IgYQpzdHJpbmcgKHdoaWNoIHNwZWNpZmllcyB0aGUgdGl0 bGUgb2YgYSBzdWJtZW51IGludG8gd2hpY2ggdGhlCm1hdGNoZXMgYXJlIHB1dCkuClJFR0VYUCBp cyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaGluZyBhIGRlZmluaXRpb24gY29uc3RydWN0Cndo aWNoIGlzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgbWVudS4gIFJFR0VYUCBtYXkgYWxzbyBiZSBh CmZ1bmN0aW9uIG9mIG5vIGFyZ3VtZW50cy4gIElmIFJFR0VYUCBpcyBhIGZ1bmN0aW9uLCBpdCBp cwpleHBlY3RlZCB0byBzZWFyY2ggYmFja3dhcmRzLCByZXR1cm4gbm9uLW5pbCBpZiBpdCBmaW5k cyBhCmRlZmluaXRpb24gY29uc3RydWN0LCBhbmQgc2V0IGBtYXRjaC1kYXRhJyBmb3IgdGhhdCBj b25zdHJ1Y3QuCklOREVYIGlzIGFuIGludGVnZXIgc3BlY2lmeWluZyB3aGljaCBzdWJleHByZXNz aW9uIG9mIFJFR0VYUAptYXRjaGVzIHRoZSBkZWZpbml0aW9uJ3MgbmFtZTsgdGhpcyBzdWJleHBy ZXNzaW9uIGlzIGRpc3BsYXllZCBhcwp0aGUgbWVudSBpdGVtLgpGVU5DVElPTiwgaWYgcHJlc2Vu dCwgc3BlY2lmaWVzIGEgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBpbmRleAppdGVtIGlzIHNl bGVjdGVkIGJ5IHRoZSB1c2VyLiAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aAphcmd1bWVu dHMgY29uc2lzdGluZyBvZiB0aGUgaXRlbSBuYW1lLCB0aGUgYnVmZmVyIHBvc2l0aW9uLCBhbmQK dGhlIEFSR1VNRU5UUy4KClRoZSB2YXJpYWJsZSBgaW1lbnUtY2FzZS1mb2xkLXNlYXJjaCcgZGV0 ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdAp0aGUgcmVnZXhwIG1hdGNoZXMgYXJlIGNhc2Ugc2Vuc2l0 aXZlLCBhbmQgYGltZW51LXN5bnRheC1hbGlzdCcKY2FuIGJlIHVzZWQgdG8gYWx0ZXIgdGhlIHN5 bnRheCB0YWJsZSBmb3IgdGhlIHNlYXJjaC4KCklmIG5vbi1uaWwgdGhpcyBwYXR0ZXJuIGlzIHBh c3NlZCB0byBgaW1lbnUtLWdlbmVyaWMtZnVuY3Rpb24nIHRvCmNyZWF0ZSBhIGJ1ZmZlciBpbmRl eC4KCkZvciBleGFtcGxlLCBzZWUgdGhlIHZhbHVlIG9mIGBmb3J0cmFuLWltZW51LWdlbmVyaWMt ZXhwcmVzc2lvbicKdXNlZCBieSBgZm9ydHJhbi1tb2RlJyB3aXRoIGBpbWVudS1zeW50YXgtYWxp c3QnIHNldCBsb2NhbGx5IHNvIHRoYXQKY2hhcmFjdGVycyB3aGljaCBub3JtYWxseSBoYXZlIFwi c3ltYm9sXCIgc3ludGF4IGFyZSBjb25zaWRlcmVkIHRvIGhhdmUKXCJ3b3JkXCIgc3ludGF4IGR1 cmluZyBtYXRjaGluZy4iKQo7OzsjIyNhdXRvbG9hZChwdXQgJ2ltZW51LWdlbmVyaWMtZXhwcmVz c2lvbiAncmlza3ktbG9jYWwtdmFyaWFibGUgdCkKCjs7OzsgSG9va3MKCjs7OyMjI2F1dG9sb2Fk CihkZWZ2YXItbG9jYWwgaW1lbnUtY3JlYXRlLWluZGV4LWZ1bmN0aW9uICdpbWVudS1kZWZhdWx0 LWNyZWF0ZS1pbmRleC1mdW5jdGlvbgogICJUaGUgZnVuY3Rpb24gdG8gdXNlIGZvciBjcmVhdGlu ZyBhbiBpbmRleCBhbGlzdCBvZiB0aGUgY3VycmVudCBidWZmZXIuCgpJdCBzaG91bGQgYmUgYSBm dW5jdGlvbiB0aGF0IHRha2VzIG5vIGFyZ3VtZW50cyBhbmQgcmV0dXJucwphbiBpbmRleCBhbGlz dCBvZiB0aGUgY3VycmVudCBidWZmZXIuICBUaGUgZnVuY3Rpb24gaXMKY2FsbGVkIHdpdGhpbiBh IGBzYXZlLWV4Y3Vyc2lvbicuCgpTZWUgYGltZW51LS1pbmRleC1hbGlzdCcgZm9yIHRoZSBmb3Jt YXQgb2YgdGhlIGJ1ZmZlciBpbmRleCBhbGlzdC4iKQoKOzs7IyMjYXV0b2xvYWQKKGRlZnZhci1s b2NhbCBpbWVudS1zdWJtZW51cy1vbi10b3AgdAogICJGbGFnIHNwZWNpZnlpbmcgd2hldGhlciBp dGVtcyB3aXRoIHN1Ymxpc3RzIHNob3VsZCBiZSBrZXB0IGF0IHRvcC4KCkZvciBzb21lIGluZGV4 ZXMsIHN1Y2ggYXMgdGhvc2UgZGVzY3JpYmluZyBzZWN0aW9ucyBpbiBhIGRvY3VtZW50LCBpdApt YWtlcyBzZW5zZSB0byBrZWVwIHRoZWlyIG9yaWdpbmFsIG9yZGVyIGV2ZW4gaW4gdGhlIG1lbnVi YXIuIikKCjs7OyMjI2F1dG9sb2FkCihkZWZ2YXItbG9jYWwgaW1lbnUtcHJldi1pbmRleC1wb3Np dGlvbi1mdW5jdGlvbiAnYmVnaW5uaW5nLW9mLWRlZnVuCiAgIkZ1bmN0aW9uIGZvciBmaW5kaW5n IHRoZSBuZXh0IGluZGV4IHBvc2l0aW9uLgoKSWYgYGltZW51LWNyZWF0ZS1pbmRleC1mdW5jdGlv bicgaXMgc2V0IHRvCmBpbWVudS1kZWZhdWx0LWNyZWF0ZS1pbmRleC1mdW5jdGlvbicsIHRoZW4g eW91IG11c3Qgc2V0IHRoaXMgdmFyaWFibGUKdG8gYSBmdW5jdGlvbiB0aGF0IHdpbGwgZmluZCB0 aGUgbmV4dCBpbmRleCwgbG9va2luZyBiYWNrd2FyZHMgaW4gdGhlCmZpbGUuCgpUaGUgZnVuY3Rp b24gc2hvdWxkIGxlYXZlIHBvaW50IGF0IHRoZSBwbGFjZSB0byBiZSBjb25uZWN0ZWQgdG8gdGhl CmluZGV4IGFuZCBpdCBzaG91bGQgcmV0dXJuIG5pbCB3aGVuIGl0IGRvZXNuJ3QgZmluZCBhbm90 aGVyIGluZGV4LiIpCgo7OzsjIyNhdXRvbG9hZAooZGVmdmFyLWxvY2FsIGltZW51LWV4dHJhY3Qt aW5kZXgtbmFtZS1mdW5jdGlvbiBuaWwKICAiRnVuY3Rpb24gZm9yIGV4dHJhY3RpbmcgdGhlIGlu ZGV4IGl0ZW0gbmFtZSwgZ2l2ZW4gYSBwb3NpdGlvbi4KClRoaXMgZnVuY3Rpb24gaXMgY2FsbGVk IGFmdGVyIGBpbWVudS1wcmV2LWluZGV4LXBvc2l0aW9uLWZ1bmN0aW9uJwpmaW5kcyBhIHBvc2l0 aW9uIGZvciBhbiBpbmRleCBpdGVtLCB3aXRoIHBvaW50IGF0IHRoYXQgcG9zaXRpb24uCkl0IHNo b3VsZCByZXR1cm4gdGhlIG5hbWUgZm9yIHRoYXQgaW5kZXggaXRlbS4iKQoKOzs7IyMjYXV0b2xv YWQKKGRlZnZhci1sb2NhbCBpbWVudS1uYW1lLWxvb2t1cC1mdW5jdGlvbiBuaWwKICAiRnVuY3Rp b24gdG8gY29tcGFyZSBzdHJpbmcgd2l0aCBpbmRleCBpdGVtLgoKVGhpcyBmdW5jdGlvbiB3aWxs IGJlIGNhbGxlZCB3aXRoIHR3byBzdHJpbmdzLCBhbmQgc2hvdWxkIHJldHVybgpub24tbmlsIGlm IHRoZXkgbWF0Y2guCgpJZiBuaWwsIGNvbXBhcmlzb24gaXMgZG9uZSB3aXRoIGBzdHJpbmc9Jy4K U2V0IHRoaXMgdG8gc29tZSBvdGhlciBmdW5jdGlvbiBmb3IgbW9yZSBhZHZhbmNlZCBjb21wYXJp c29ucywKc3VjaCBhcyBcImJlZ2lucyB3aXRoXCIgb3IgXCJuYW1lIG1hdGNoZXMgYW5kIG51bWJl ciBvZgphcmd1bWVudHMgbWF0Y2hcIi4iKQoKOzs7IyMjYXV0b2xvYWQKKGRlZnZhci1sb2NhbCBp bWVudS1kZWZhdWx0LWdvdG8tZnVuY3Rpb24gJ2ltZW51LWRlZmF1bHQtZ290by1mdW5jdGlvbgog ICJUaGUgZGVmYXVsdCBmdW5jdGlvbiBjYWxsZWQgd2hlbiBzZWxlY3RpbmcgYW4gSW1lbnUgaXRl bS4KVGhlIGZ1bmN0aW9uIGluIHRoaXMgdmFyaWFibGUgaXMgY2FsbGVkIHdoZW4gc2VsZWN0aW5n IGEgbm9ybWFsIGluZGV4LWl0ZW0uIikKCgooZGVmdW4gaW1lbnUtLXN1YmFsaXN0LXAgKGl0ZW0p CiAgKGFuZCAoY29uc3AgaXRlbSkKICAgICAgIChjb25zcCAoY2RyIGl0ZW0pKQogICAgICAgKGxp c3RwIChjYWRyIGl0ZW0pKQogICAgICAgKG5vdCAoZnVuY3Rpb25wIChjYWRyIGl0ZW0pKSkpKQoK KGRlZm1hY3JvIGltZW51LXByb2dyZXNzLW1lc3NhZ2UgKF9wcmV2cG9zICZvcHRpb25hbCBfcmVs cG9zIF9yZXZlcnNlKQogICJUaGlzIG1hY3JvIGlzIG9ic29sZXRlIGFuZCBkb2VzIG5vdGhpbmcu IgogIChkZWNsYXJlIChvYnNvbGV0ZSBuaWwgIjI4LjEiKSkKOzsgTWFkZSBvYnNvbGV0ZS9lbXB0 eSwgYXMgY29tcHV0ZXJzIGFyZSBub3cgZmFzdGVyIHRoYW4gdGhlIGV5ZSwgYW5kCjs7IGl0IGhh ZCBwcm9ibGVtcyB1cGRhdGluZyB0aGUgbWVzc2FnZXMgY29ycmVjdGx5LCBhbmQgY291bGQgc2hh ZG93Cjs7IG1vcmUgaW1wb3J0YW50IG1lc3NhZ2VzL3Byb21wdHMgaW4gdGhlIG1pbmlidWZmZXIu ICBLRlMgMjAwNC0xMC0yNy4KKQoKCjs7Owo7OzsgTGlzcAo7OzsKCihkZWZpbmUtZXJyb3IgJ2lt ZW51LXVuYXZhaWxhYmxlICJpbWVudSB1bmF2YWlsYWJsZSIpCgooZGVmdW4gaW1lbnUtdW5hdmFp bGFibGUtZXJyb3IgKGZvcm1hdCAmcmVzdCBhcmdzKQogIChzaWduYWwgJ2ltZW51LXVuYXZhaWxh YmxlCiAgICAgICAgICAobGlzdCAoYXBwbHkgIydmb3JtYXQtbWVzc2FnZSBmb3JtYXQgYXJncykp KSkKCjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7OzsKOzs7Cjs7OyBJbnRlcm5hbCB2YXJpYWJsZXMKOzs7Cjs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsKCjs7IFRo ZSBpdGVtIHRvIHVzZSBpbiB0aGUgaW5kZXggZm9yIHJlc2Nhbm5pbmcgdGhlIGJ1ZmZlci4KKGRl ZmNvbnN0IGltZW51LS1yZXNjYW4taXRlbSAnKCIqUmVzY2FuKiIgLiAtOTkpKQoKOzsgVGhlIGxh dGVzdCBidWZmZXIgaW5kZXguCihkZWZ2YXItbG9jYWwgaW1lbnUtLWluZGV4LWFsaXN0IG5pbAog ICJUaGUgYnVmZmVyIGluZGV4IGFsaXN0IGNvbXB1dGVkIGZvciB0aGlzIGJ1ZmZlciBpbiBJbWVu dS4KClNpbXBsZSBlbGVtZW50cyBpbiB0aGUgYWxpc3QgbG9vayBsaWtlIChJTkRFWC1OQU1FIC4g UE9TSVRJT04pLgpQT1NJVElPTiBpcyB0aGUgYnVmZmVyIHBvc2l0aW9uIG9mIHRoZSBpdGVtOyB0 byBnbyB0byB0aGUgaXRlbQppcyBzaW1wbHkgdG8gbW92ZSBwb2ludCB0byB0aGF0IHBvc2l0aW9u LgoKUE9TSVRJT04gaXMgcGFzc2VkIHRvIGBpbWVudS1kZWZhdWx0LWdvdG8tZnVuY3Rpb24nLCBz byBpdCBjYW4gYmUKYSBub24tbnVtYmVyIGlmIHRoYXQgdmFyaWFibGUgaGFzIGJlZW4gY2hhbmdl ZCAoZS5nLiBTZW1hbnRpYwp1c2VzIG92ZXJsYXlzIGZvciBQT1NJVElPTnMpLgoKU3BlY2lhbCBl bGVtZW50cyBsb29rIGxpa2UKXChJTkRFWC1OQU1FIFBPU0lUSU9OIEZVTkNUSU9OIEFSR1VNRU5U Uy4uLikuClRvIFwiZ28gdG9cIiBhIHNwZWNpYWwgZWxlbWVudCBtZWFucyBhcHBseWluZyBGVU5D VElPTiB0bwpJTkRFWC1OQU1FLCBQT1NJVElPTiwgYW5kIHRoZSBBUkdVTUVOVFMuCgpBIG5lc3Rl ZCBzdWItYWxpc3QgZWxlbWVudCBsb29rcyBsaWtlIChJTkRFWC1OQU1FIC4gU1VCLUFMSVNUKS4K VGhlIGZ1bmN0aW9uIGBpbWVudS0tc3ViYWxpc3QtcCcgdGVzdHMgYW4gZWxlbWVudCBhbmQgcmV0 dXJucyB0CmlmIGl0IGlzIGEgc3ViLWFsaXN0LgoKVGhlcmUgaXMgb25lIHNpbXBsZSBlbGVtZW50 IHdpdGggbmVnYXRpdmUgUE9TSVRJT047IHNlbGVjdGluZyB0aGF0CmVsZW1lbnQgcmVjYWxjdWxh dGVzIHRoZSBidWZmZXIncyBpbmRleCBhbGlzdC4iKQo7OzsjIyNhdXRvbG9hZChwdXQgJ2ltZW51 LS1pbmRleC1hbGlzdCAncmlza3ktbG9jYWwtdmFyaWFibGUgdCkKCihkZWZ2YXItbG9jYWwgaW1l bnUtLWxhc3QtbWVudWJhci1pbmRleC1hbGlzdCBuaWwKICAiVGhlIGxhdGVzdCBidWZmZXIgaW5k ZXggYWxpc3QgdXNlZCB0byB1cGRhdGUgdGhlIG1lbnUgYmFyIG1lbnUuIikKCihkZWZ2YXIgaW1l bnUtLWhpc3RvcnktbGlzdCBuaWwKICA7OyBNYWtpbmcgdGhpcyBidWZmZXIgbG9jYWwgY2F1c2Vk IGl0IG5vdCB0byB3b3JrIQogICJIaXN0b3J5IGxpc3QgZm9yIGBpbWVudS1jaG9vc2UtYnVmZmVy LWluZGV4Jy4iKQoKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Owo7OzsKOzs7IEludGVybmFsIHN1cHBvcnQgZnVuY3Rpb25zCjs7 Owo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7CgooZGVmdW4gaW1lbnUtLXNvcnQtYnktbmFtZSAoaXRlbTEgaXRlbTIpCiAgIkNv bXBhcmlzb24gZnVuY3Rpb24gdG8gc29ydCBpdGVtcyBkZXBlbmRpbmcgb24gdGhlaXIgaW5kZXgg bmFtZS4KQW4gaXRlbSBsb29rcyBsaWtlIChOQU1FIC4gUE9TSVRJT04pLiIKICAoc3RyaW5nLWxl c3NwIChjYXIgaXRlbTEpIChjYXIgaXRlbTIpKSkKCihkZWZ1biBpbWVudS0tc29ydC1ieS1wb3Np dGlvbiAoaXRlbTEgaXRlbTIpCiAgIkNvbXBhcmlzb24gZnVuY3Rpb24gdG8gc29ydCBpdGVtcyBk ZXBlbmRpbmcgb24gdGhlaXIgcG9zaXRpb24uClJldHVybiBub24tbmlsIGlmIGFuZCBvbmx5IGlm IElURU0xJ3MgcG9zaXRpb24gaXMgbG93ZXIgdGhhbiBJVEVNMidzCnBvc2l0aW9uLiIKICAoaWYg KGxpc3RwIChjZHIgaXRlbTEpKQogICAgICAoPCAoY2FkciBpdGVtMSkgKGNhZHIgaXRlbTIpKQog ICAgKDwgKGNkciBpdGVtMSkgKGNkciBpdGVtMikpKSkKCihkZWZ1biBpbWVudS0tcmVsYXRpdmUt cG9zaXRpb24gKCZvcHRpb25hbCByZXZlcnNlKQogICJTdXBwb3J0IGZ1bmN0aW9uIHRvIGNhbGN1 bGF0ZSByZWxhdGl2ZSBwb3NpdGlvbiBpbiBidWZmZXIuCkJlZ2lubmluZyBvZiBidWZmZXIgaXMg MCBhbmQgZW5kIG9mIGJ1ZmZlciBpcyAxMDAKSWYgUkVWRVJTRSBpcyBub24tbmlsIHRoZW4gdGhl IGJlZ2lubmluZyBpcyAxMDAgYW5kIHRoZSBlbmQgaXMgMC4iCiAgKGxldCAoKHBvcyAocG9pbnQp KQoJKHRvdGFsIChidWZmZXItc2l6ZSkpKQogICAgKGFuZCByZXZlcnNlIChzZXRxIHBvcyAoLSB0 b3RhbCBwb3MpKSkKICAgIChmbG9vciAoKiAxMDAuMCAoMS0gcG9zKSkgKG1heCB0b3RhbCAxKSkp KQoKKGRlZnVuIGltZW51LS1zcGxpdCAobGlzdCBuKQogICJTcGxpdCBMSVNUIGludG8gc3VibGlz dHMgb2YgbWF4IGxlbmd0aCBOLgpFeGFtcGxlIChpbWVudS0tc3BsaXQgXFw9JygxIDIgMyA0IDUg NiA3IDgpIDMpID0+ICgoMSAyIDMpICg0IDUgNikgKDcgOCkpClRoZSByZXR1cm5lZCBsaXN0IERP RVMgTk9UIHNoYXJlIHN0cnVjdHVyZSB3aXRoIExJU1QuIgogIChsZXQgKChyZW1haW4gbGlzdCkK CShyZXN1bHQgJygpKQoJKHN1Ymxpc3QgJygpKQoJKGkgMCkpCiAgICAod2hpbGUgcmVtYWluCiAg ICAgIChwdXNoIChwb3AgcmVtYWluKSBzdWJsaXN0KQogICAgICAoY2wtaW5jZiBpKQogICAgICAo YW5kICg9IGkgbikKCSAgIDs7IFdlIGhhdmUgZmluaXNoZWQgYSBzdWJsaXN0CgkgICAocHJvZ24g KHB1c2ggKG5yZXZlcnNlIHN1Ymxpc3QpIHJlc3VsdCkKCQkgIChzZXRxIGkgMCkKCQkgIChzZXRx IHN1Ymxpc3QgJygpKSkpKQogICAgOzsgVGhlcmUgbWlnaHQgYmUgYSBzdWJsaXN0IChpZiB0aGUg bGVuZ3RoIG9mIExJU1QgbW9kIG4gaXMgIT0gMCkKICAgIDs7IHRoYXQgaGFzIHRvIGJlIGFkZGVk IHRvIHRoZSByZXN1bHQgbGlzdC4KICAgIChhbmQgc3VibGlzdAoJIChwdXNoIChucmV2ZXJzZSBz dWJsaXN0KSByZXN1bHQpKQogICAgKG5yZXZlcnNlIHJlc3VsdCkpKQoKKGRlZnVuIGltZW51LS1z cGxpdC1tZW51IChtZW51bGlzdCB0aXRsZSkKICAiU3BsaXQgdGhlIGFsaXN0IE1FTlVMSVNUIGlu dG8gYSBuZXN0ZWQgYWxpc3QsIGlmIGl0IGlzIGxvbmcgZW5vdWdoLgpJbiBhbnkgY2FzZSwgYWRk IFRJVExFIHRvIHRoZSBmcm9udCBvZiB0aGUgYWxpc3QuCklmIElNRU5VLS1SRVNDQU4tSVRFTSBp cyBwcmVzZW50IGluIE1FTlVMSVNULCBpdCBpcyBtb3ZlZCB0byB0aGUKYmVnaW5uaW5nIG9mIHRo ZSByZXR1cm5lZCBhbGlzdC4KVGhlIHJldHVybmVkIGFsaXN0IERPRVMgTk9UIHNoYXJlIHN0cnVj dHVyZSB3aXRoIE1FTlVMSVNULiIKICAobGV0ICgobWVudWxpc3QgKGNvcHktc2VxdWVuY2UgbWVu dWxpc3QpKQogICAgICAgIGtlZXAtYXQtdG9wKQogICAgKGlmIChtZW1xIGltZW51LS1yZXNjYW4t aXRlbSBtZW51bGlzdCkKCShzZXRxIGtlZXAtYXQtdG9wIChsaXN0IGltZW51LS1yZXNjYW4taXRl bSkKCSAgICAgIG1lbnVsaXN0IChkZWxxIGltZW51LS1yZXNjYW4taXRlbSBtZW51bGlzdCkpKQog ICAgKGlmIGltZW51LXN1Ym1lbnVzLW9uLXRvcAogICAgICAgIChkb2xpc3QgKGl0ZW0gbWVudWxp c3QpCiAgICAgICAgICAod2hlbiAoaW1lbnUtLXN1YmFsaXN0LXAgaXRlbSkKCSAgICAocHVzaCBp dGVtIGtlZXAtYXQtdG9wKQoJICAgIChzZXRxIG1lbnVsaXN0IChkZWxxIGl0ZW0gbWVudWxpc3Qp KSkpKQogICAgKGlmIGltZW51LXNvcnQtZnVuY3Rpb24KCShzZXRxIG1lbnVsaXN0IChzb3J0IG1l bnVsaXN0IGltZW51LXNvcnQtZnVuY3Rpb24pKSkKICAgIChpZiAoPiAobGVuZ3RoIG1lbnVsaXN0 KSBpbWVudS1tYXgtaXRlbXMpCgkoc2V0cSBtZW51bGlzdAoJICAgICAgKG1hcGNhcgoJICAgICAg IChsYW1iZGEgKG1lbnUpCgkJIChjb25zIChmb3JtYXQgIkZyb206ICVzIiAoY2FhciBtZW51KSkg bWVudSkpCgkgICAgICAgKGltZW51LS1zcGxpdCBtZW51bGlzdCBpbWVudS1tYXgtaXRlbXMpKSkp CiAgICAoY29ucyB0aXRsZQoJICAobmNvbmMgKG5yZXZlcnNlIGtlZXAtYXQtdG9wKSBtZW51bGlz dCkpKSkKCihkZWZ1biBpbWVudS0tc3BsaXQtc3VibWVudXMgKGFsaXN0KQogICJTcGxpdCB1cCBl YWNoIGxvbmcgYWxpc3QgdGhhdCBhcmUgbmVzdGVkIHdpdGhpbiBBTElTVCBpbnRvIG5lc3RlZCBh bGlzdHMuClJldHVybiBhIHNwbGl0IGFuZCBzb3J0ZWQgY29weSBvZiBBTElTVC4gIFRoZSByZXR1 cm5lZCBhbGlzdCBET0VTCk5PVCBzaGFyZSBzdHJ1Y3R1cmUgd2l0aCBBTElTVC4iCiAgKG1hcGNh ciAobGFtYmRhIChlbHQpCiAgICAgICAgICAgIChpZiAoaW1lbnUtLXN1YmFsaXN0LXAgZWx0KQog ICAgICAgICAgICAgICAgKGltZW51LS1zcGxpdC1tZW51IChjZHIgZWx0KSAoY2FyIGVsdCkpCiAg ICAgICAgICAgICAgZWx0KSkKCSAgYWxpc3QpKQoKKGRlZnVuIGltZW51LS10cnVuY2F0ZS1pdGVt cyAobWVudWxpc3QpCiAgIlRydW5jYXRlIGFsbCBzdHJpbmdzIGluIE1FTlVMSVNUIHRvIGBpbWVu dS1tYXgtaXRlbS1sZW5ndGgnLiIKICAobWFwYyAobGFtYmRhIChpdGVtKQoJICA7OyBUcnVuY2F0 ZSBpZiBuZWNlc3NhcnkuCgkgICh3aGVuIChhbmQgKG51bWJlcnAgaW1lbnUtbWF4LWl0ZW0tbGVu Z3RoKQoJCSAgICAgKD4gKGxlbmd0aCAoY2FyIGl0ZW0pKSBpbWVudS1tYXgtaXRlbS1sZW5ndGgp KQoJICAgIChzZXRjYXIgaXRlbSAoc3Vic3RyaW5nIChjYXIgaXRlbSkgMCBpbWVudS1tYXgtaXRl bS1sZW5ndGgpKSkKCSAgKHdoZW4gKGltZW51LS1zdWJhbGlzdC1wIGl0ZW0pCgkgICAgKGltZW51 LS10cnVuY2F0ZS1pdGVtcyAoY2RyIGl0ZW0pKSkpCgltZW51bGlzdCkpCgooZGVmdW4gaW1lbnUt LW1ha2UtaW5kZXgtYWxpc3QgKCZvcHRpb25hbCBub2Vycm9yKQogICJDcmVhdGUgYW4gaW5kZXgg YWxpc3QgZm9yIHRoZSBkZWZpbml0aW9ucyBpbiB0aGUgY3VycmVudCBidWZmZXIuClRoaXMgd29y a3MgYnkgdXNpbmcgdGhlIGhvb2sgZnVuY3Rpb24gYGltZW51LWNyZWF0ZS1pbmRleC1mdW5jdGlv bicuClJlcG9ydCBhbiBlcnJvciBpZiB0aGUgbGlzdCBpcyBlbXB0eSB1bmxlc3MgTk9FUlJPUiBp cyBzdXBwbGllZCBhbmQKbm9uLW5pbC4KClNlZSBgaW1lbnUtLWluZGV4LWFsaXN0JyBmb3IgdGhl IGZvcm1hdCBvZiB0aGUgaW5kZXggYWxpc3QuIgogIChvciAoYW5kIGltZW51LS1pbmRleC1hbGlz dAoJICAgKG9yIChub3QgaW1lbnUtYXV0by1yZXNjYW4pCgkgICAgICAgKGFuZCBpbWVudS1hdXRv LXJlc2NhbgoJCSAgICAoPiAoYnVmZmVyLXNpemUpICBpbWVudS1hdXRvLXJlc2Nhbi1tYXhvdXQp KSkpCiAgICAgIDs7IEdldCB0aGUgaW5kZXg7IHRydW5jYXRlIGlmIG5lY2Vzc2FyeS4KICAgICAg KHByb2duCgkoc2V0cSBpbWVudS0taW5kZXgtYWxpc3QKCSAgICAgIChzYXZlLWV4Y3Vyc2lvbgoJ CShzYXZlLXJlc3RyaWN0aW9uCgkJICAod2lkZW4pCgkJICAoZnVuY2FsbCBpbWVudS1jcmVhdGUt aW5kZXgtZnVuY3Rpb24pKSkpCgkoaW1lbnUtLXRydW5jYXRlLWl0ZW1zIGltZW51LS1pbmRleC1h bGlzdCkpKQogIChvciBpbWVudS0taW5kZXgtYWxpc3Qgbm9lcnJvcgogICAgICAoaW1lbnUtdW5h dmFpbGFibGUtZXJyb3IKICAgICAgICJObyBpdGVtcyBzdWl0YWJsZSBmb3IgYW4gaW5kZXggZm91 bmQgaW4gdGhpcyBidWZmZXIiKSkKICAob3IgaW1lbnUtLWluZGV4LWFsaXN0CiAgICAgIChzZXRx IGltZW51LS1pbmRleC1hbGlzdCAobGlzdCBuaWwpKSkKICAoaWYgaW1lbnUtYXV0by1yZXNjYW4K ICAgICAgaW1lbnUtLWluZGV4LWFsaXN0CiAgICA7OyBBZGQgYSByZXNjYW4gb3B0aW9uIHRvIHRo ZSBpbmRleC4KICAgIChjb25zIGltZW51LS1yZXNjYW4taXRlbSBpbWVudS0taW5kZXgtYWxpc3Qp KSkKCihkZWZ2YXIgaW1lbnUtLWNsZWFudXAtc2VlbiBuaWwpCgooZGVmdW4gaW1lbnUtLWNsZWFu dXAgKCZvcHRpb25hbCBhbGlzdCkKICAiRmluZCBhbGwgbWFya2VycyBpbiBBTElTVCBhbmQgbWFr ZSB0aGVtIHBvaW50IG5vd2hlcmUuCklmIEFMSVNUIGlzIG5pbCAodGhlIG5vcm1hbCBjYXNlKSwg dXNlIGBpbWVudS0taW5kZXgtYWxpc3QnLgpOb24tbmlsIGFyZ3VtZW50cyBhcmUgaW4gcmVjdXJz aXZlIGNhbGxzLiIKICA7OyBJZiBhbGlzdCBpcyBwcm92aWRlZCB1c2UgdGhhdCBsaXN0LgogIDs7 IElmIG5vdCwgZW1wdHkgdGhlIHRhYmxlIG9mIGxpc3RzIGFscmVhZHkgc2VlbgogIDs7IGFuZCB1 c2UgaW1lbnUtLWluZGV4LWFsaXN0LgogIChpZiBhbGlzdAogICAgICAoc2V0cSBpbWVudS0tY2xl YW51cC1zZWVuIChjb25zIGFsaXN0IGltZW51LS1jbGVhbnVwLXNlZW4pKQogICAgKHNldHEgYWxp c3QgaW1lbnUtLWluZGV4LWFsaXN0IGltZW51LS1jbGVhbnVwLXNlZW4gKGxpc3QgYWxpc3QpKSkK CiAgKHdoZW4gYWxpc3QKICAgIChkb2xpc3QgKGl0ZW0gYWxpc3QpCiAgICAgIChjb25kCiAgICAg ICAoKG1hcmtlcnAgKGNkciBpdGVtKSkgKHNldC1tYXJrZXIgKGNkciBpdGVtKSBuaWwpKQogICAg ICAgOzsgRG9uJ3QgcHJvY2VzcyBvbmUgYWxpc3QgdHdpY2UuCiAgICAgICAoKG1lbXEgKGNkciBp dGVtKSBpbWVudS0tY2xlYW51cC1zZWVuKSkKICAgICAgICgoaW1lbnUtLXN1YmFsaXN0LXAgaXRl bSkgKGltZW51LS1jbGVhbnVwIChjZHIgaXRlbSkpKSkpCiAgICB0KSkKCihkZWZ1biBpbWVudS0t Y3JlYXRlLWtleW1hcCAodGl0bGUgYWxpc3QgJm9wdGlvbmFsIGNtZCkKICBgKGtleW1hcCAsdGl0 bGUKICAgICAgICAgICAsQChtYXBjYXIKICAgICAgICAgICAgICAoaWYgaW1lbnUtYWxsb3ctZHVw bGljYXRlLW1lbnUtaXRlbXMKICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoaXRlbSkKICAgICAg ICAgICAgICAgICAgICBgKCwoaW5jcmVtZW50LXN5bWJvbC1uYW1lIChjYXIgaXRlbSkpCiAgICAg ICAgICAgICAgICAgICAgICAsKGNhciBpdGVtKQogICAgICAgICAgICAgICAgICAgICAgLEAoY29u ZAogICAgICAgICAgICAgICAgICAgICAgICAgKChpbWVudS0tc3ViYWxpc3QtcCBpdGVtKQogICAg ICAgICAgICAgICAgICAgICAgICAgIChpbWVudS0tY3JlYXRlLWtleW1hcCAoY2FyIGl0ZW0pIChj ZHIgaXRlbSkgY21kKSkKICAgICAgICAgICAgICAgICAgICAgICAgICh0CiAgICAgICAgICAgICAg ICAgICAgICAgICAgKGxhbWJkYSAoKSAoaW50ZXJhY3RpdmUpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoaWYgY21kIChmdW5jYWxsIGNtZCBpdGVtKSBpdGVtKSkpKSkpCiAgICAgICAgICAg ICAgICAobGFtYmRhIChpdGVtKQogICAgICAgICAgICAgICAgICBgKCwoaW50ZXJuIChjYXIgaXRl bSkpCiAgICAgICAgICAgICAgICAgICAgLChjYXIgaXRlbSkKICAgICAgICAgICAgICAgICAgICAs QChjb25kCiAgICAgICAgICAgICAgICAgICAgICAgKChpbWVudS0tc3ViYWxpc3QtcCBpdGVtKQog ICAgICAgICAgICAgICAgICAgICAgICAoaW1lbnUtLWNyZWF0ZS1rZXltYXAgKGNhciBpdGVtKSAo Y2RyIGl0ZW0pIGNtZCkpCiAgICAgICAgICAgICAgICAgICAgICAgKHQKICAgICAgICAgICAgICAg ICAgICAgICAgKGxhbWJkYSAoKSAoaW50ZXJhY3RpdmUpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgKGlmIGNtZCAoZnVuY2FsbCBjbWQgaXRlbSkgaXRlbSkpKSkpKSkKICAgICAgICAgICAgICAo cmVtcSBuaWwgYWxpc3QpKSkpCgooZGVmdW4gaW1lbnUtLWluLWFsaXN0IChzdHIgYWxpc3QpCiAg IkNoZWNrIHdoZXRoZXIgdGhlIHN0cmluZyBTVFIgaXMgY29udGFpbmVkIGluIG11bHRpLWxldmVs IEFMSVNULiIKICAobGV0IChlbHQgaGVhZCB0YWlsIHJlcykKICAgIChzZXRxIHJlcyBuaWwpCiAg ICAod2hpbGUgYWxpc3QKICAgICAgKHNldHEgZWx0IChjYXIgYWxpc3QpCgkgICAgdGFpbCAoY2Ry IGVsdCkKCSAgICBhbGlzdCAoY2RyIGFsaXN0KQoJICAgIGhlYWQgKGNhciBlbHQpKQogICAgICA7 OyBBIG5lc3RlZCBBTElTVCBlbGVtZW50IGxvb2tzIGxpa2UKICAgICAgOzsgICAoSU5ERVgtTkFN RSAoSU5ERVgtTkFNRSAuIElOREVYLVBPU0lUSU9OKSAuLi4pCiAgICAgIDs7IHdoaWxlIGEgYm90 dG9tLWxldmVsIGVsZW1lbnQgbG9va3MgbGlrZQogICAgICA7OyAgIChJTkRFWC1OQU1FIC4gSU5E RVgtUE9TSVRJT04pCiAgICAgIDs7IG9yCiAgICAgIDs7ICAgKElOREVYLU5BTUUgSU5ERVgtUE9T SVRJT04gRlVOQ1RJT04gQVJHVU1FTlRTLi4uKQogICAgICA7OyBXZSBhcmUgb25seSBpbnRlcmVz dGVkIGluIHRoZSBib3R0b20tbGV2ZWwgZWxlbWVudHMsIHNvIHdlIG5lZWQgdG8KICAgICAgOzsg cmVjdXJzZSBpZiBUQUlMIGlzIGEgbmVzdGVkIEFMSVNULgogICAgICAoY29uZCAoKGltZW51LS1z dWJhbGlzdC1wIGVsdCkKCSAgICAgKGlmIChzZXRxIHJlcyAoaW1lbnUtLWluLWFsaXN0IHN0ciB0 YWlsKSkKCQkgKHNldHEgYWxpc3QgbmlsKSkpCgkgICAgKChpZiBpbWVudS1uYW1lLWxvb2t1cC1m dW5jdGlvbgogICAgICAgICAgICAgICAgIChmdW5jYWxsIGltZW51LW5hbWUtbG9va3VwLWZ1bmN0 aW9uIHN0ciBoZWFkKQogICAgICAgICAgICAgICAoc3RyaW5nPSBzdHIgaGVhZCkpCgkgICAgIChz ZXRxIGFsaXN0IG5pbCByZXMgZWx0KSkpKQogICAgcmVzKSkKCjs7OyMjI2F1dG9sb2FkCihkZWZ2 YXItbG9jYWwgaW1lbnUtc3ludGF4LWFsaXN0IG5pbAogICJBbGlzdCBvZiBzeW50YXggdGFibGUg bW9kaWZpZXJzIHRvIHVzZSB3aGlsZSBpbiBgaW1lbnUtLWdlbmVyaWMtZnVuY3Rpb24nLgoKVGhl IGNhciBvZiB0aGUgYXNzb2NzIG1heSBiZSBlaXRoZXIgYSBjaGFyYWN0ZXIgb3IgYSBzdHJpbmcg YW5kIHRoZQpjZHIgaXMgYSBzeW50YXggZGVzY3JpcHRpb24gYXBwcm9wcmlhdGUgZm9yIGBtb2Rp Znktc3ludGF4LWVudHJ5Jy4gIEZvcgphIHN0cmluZywgYWxsIHRoZSBjaGFyYWN0ZXJzIGluIHRo ZSBzdHJpbmcgZ2V0IHRoZSBzcGVjaWZpZWQgc3ludGF4LgoKVGhpcyBpcyB0eXBpY2FsbHkgdXNl ZCB0byBnaXZlIHdvcmQgc3ludGF4IHRvIGNoYXJhY3RlcnMgd2hpY2gKbm9ybWFsbHkgaGF2ZSBz eW1ib2wgc3ludGF4IHRvIHNpbXBsaWZ5IGBpbWVudS1leHByZXNzaW9uJwphbmQgc3BlZWQtdXAg bWF0Y2hpbmcuIikKCihkZWZ1biBpbWVudS1kZWZhdWx0LWNyZWF0ZS1pbmRleC1mdW5jdGlvbiAo KQogICJEZWZhdWx0IGZ1bmN0aW9uIHRvIGNyZWF0ZSBhbiBpbmRleCBhbGlzdCBvZiB0aGUgY3Vy cmVudCBidWZmZXIuCgpUaGUgbW9zdCBnZW5lcmFsIG1ldGhvZCBpcyB0byBtb3ZlIHBvaW50IHRv IGVuZCBvZiBidWZmZXIsIHRoZW4gcmVwZWF0ZWRseSBjYWxsCmBpbWVudS1wcmV2LWluZGV4LXBv c2l0aW9uLWZ1bmN0aW9uJyBhbmQgYGltZW51LWV4dHJhY3QtaW5kZXgtbmFtZS1mdW5jdGlvbicu CkFsbCB0aGUgcmVzdWx0cyByZXR1cm5lZCBieSB0aGUgbGF0dGVyIGFyZSBnYXRoZXJlZCBpbnRv IGFuIGluZGV4IGFsaXN0LgpUaGlzIG1ldGhvZCBpcyB1c2VkIGlmIHRob3NlIHR3byB2YXJpYWJs ZXMgYXJlIG5vbi1uaWwuCgpUaGUgYWx0ZXJuYXRlIG1ldGhvZCwgd2hpY2ggaXMgdGhlIG9uZSBt b3N0IG9mdGVuIHVzZWQsIGlzIHRvIGNhbGwKYGltZW51LS1nZW5lcmljLWZ1bmN0aW9uJyB3aXRo IGBpbWVudS1nZW5lcmljLWV4cHJlc3Npb24nIGFzIGFyZ3VtZW50LiIKICA7OyBUaGVzZSBzaG91 bGQgcmVhbGx5IGJlIGRvbmUgYnkgc2V0dGluZyBpbWVudS1jcmVhdGUtaW5kZXgtZnVuY3Rpb24K ICA7OyBpbiB0aGVzZSBtYWpvciBtb2Rlcy4gIEJ1dCBzYXZlIHRoYXQgY2hhbmdlIGZvciBsYXRl ci4KICAoY29uZCAoKGFuZCBpbWVudS1wcmV2LWluZGV4LXBvc2l0aW9uLWZ1bmN0aW9uCgkgICAg ICBpbWVudS1leHRyYWN0LWluZGV4LW5hbWUtZnVuY3Rpb24pCgkgKGxldCAoKGluZGV4LWFsaXN0 ICcoKSkgKHBvcyAocG9pbnQtbWF4KSkKICAgICAgICAgICAgICAgKHN0YXJ0IChmbG9hdC10aW1l KSkKCSAgICAgICBuYW1lKQoJICAgKGdvdG8tY2hhciBwb3MpCgkgICA7OyBTZWFyY2ggZm9yIHRo ZSBmdW5jdGlvbgoJICAgKHdoaWxlIChhbmQgKGZ1bmNhbGwgaW1lbnUtcHJldi1pbmRleC1wb3Np dGlvbi1mdW5jdGlvbikKICAgICAgICAgICAgICAgICAgICAgICA7OyBEb24ndCB1c2UgYW4gZXhj ZXNzaXZlIGFtb3VudCBvZiB0aW1lLgogICAgICAgICAgICAgICAgICAgICAgICg8ICgtIChmbG9h dC10aW1lKSBzdGFydCkgaW1lbnUtbWF4LWluZGV4LXRpbWUpKQogICAgICAgICAgICAgKHVubGVz cyAoPCAocG9pbnQpIHBvcykKICAgICAgICAgICAgICAgKGVycm9yICJJbmZpbml0ZSBsb29wIGF0 ICVzOiVkOiBpbWVudS1wcmV2LWluZGV4LXBvc2l0aW9uLWZ1bmN0aW9uIGRvZXMgbm90IG1vdmUg cG9pbnQiIChidWZmZXItbmFtZSkgcG9zKSkKICAgICAgICAgICAgIChzZXRxIHBvcyAocG9pbnQp KQoJICAgICAoc2F2ZS1leGN1cnNpb24KCSAgICAgICAoc2V0cSBuYW1lIChmdW5jYWxsIGltZW51 LWV4dHJhY3QtaW5kZXgtbmFtZS1mdW5jdGlvbikpKQoJICAgICAoYW5kIChzdHJpbmdwIG5hbWUp CiAJCSAgOzsgW3lkaV0gVXBkYXRlZCBmb3IgaW1lbnUtdXNlLW1hcmtlcnMuCgkJICAocHVzaCAo Y29ucyBuYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBpbWVudS11c2UtbWFy a2VycyAocG9pbnQtbWFya2VyKSAocG9pbnQpKSkKCQkJaW5kZXgtYWxpc3QpKSkKCSAgIGluZGV4 LWFsaXN0KSkKCTs7IFVzZSBnZW5lcmljIGV4cHJlc3Npb24gaWYgcG9zc2libGUuCgkoKGFuZCBp bWVudS1nZW5lcmljLWV4cHJlc3Npb24pCgkgKGltZW51LS1nZW5lcmljLWZ1bmN0aW9uIGltZW51 LWdlbmVyaWMtZXhwcmVzc2lvbikpCgkodAogICAgICAgICAoaW1lbnUtdW5hdmFpbGFibGUtZXJy b3IgIlRoaXMgYnVmZmVyIGNhbm5vdCB1c2UgYGltZW51LWRlZmF1bHQtY3JlYXRlLWluZGV4LWZ1 bmN0aW9uJyIpKSkpCgo7OzsKOzs7IEdlbmVyaWMgaW5kZXggZ2F0aGVyaW5nIGZ1bmN0aW9uLgo7 OzsKCjs7OyMjI2F1dG9sb2FkCihkZWZ2YXItbG9jYWwgaW1lbnUtY2FzZS1mb2xkLXNlYXJjaCB0 CiAgIkRlZmluZXMgd2hldGhlciBgaW1lbnUtLWdlbmVyaWMtZnVuY3Rpb24nIHNob3VsZCBmb2xk IGNhc2Ugd2hlbiBtYXRjaGluZy4KClRoaXMgdmFyaWFibGUgc2hvdWxkIGJlIHNldCAob25seSkg YnkgaW5pdGlhbGl6YXRpb24gY29kZQpmb3IgbW9kZXMgd2hpY2ggdXNlIGBpbWVudS0tZ2VuZXJp Yy1mdW5jdGlvbicuICBJZiBpdCBpcyBub3Qgc2V0LCBidXQKYGZvbnQtbG9jay1kZWZhdWx0cycg aXMgc2V0LCB0aGVuIGZvbnQtbG9jaydzIHNldHRpbmcgaXMgdXNlZC4iKQoKOzsgVGhpcyBmdW5j dGlvbiBjYW4gYmUgY2FsbGVkIHdpdGggcXVpdHRpbmcgZGlzYWJsZWQsCjs7IHNvIGl0IG5lZWRz IHRvIGJlIGNhcmVmdWwgbmV2ZXIgdG8gbG9vcCEKKGRlZnVuIGltZW51LS1nZW5lcmljLWZ1bmN0 aW9uIChwYXR0ZXJucykKICAiUmV0dXJuIGFuIGluZGV4IGFsaXN0IG9mIHRoZSBjdXJyZW50IGJ1 ZmZlciBiYXNlZCBvbiBQQVRURVJOUy4KUEFUVEVSTlMgc2hvdWxkIGJlIGFuIGFsaXN0IG9mIHRo ZSBzYW1lIGZvcm0gYXMgYGltZW51LWdlbmVyaWMtZXhwcmVzc2lvbicuCgpJZiBgaW1lbnUtZ2Vu ZXJpYy1za2lwLWNvbW1lbnRzLWFuZC1zdHJpbmdzJyBpcyBub24tbmlsLCB0aGlzIGlnbm9yZXMK dGV4dCBpbnNpZGUgY29tbWVudHMgYW5kIHN0cmluZ3MuCgpJZiBgaW1lbnUtY2FzZS1mb2xkLXNl YXJjaCcgaXMgbm9uLW5pbCwgdGhpcyBpZ25vcmVzIGNhc2UuCgpUaGUgcmV0dXJuIHZhbHVlIGlz IGFuIGFsaXN0IG9mIHRoZSBmb3JtCiAoSU5ERVgtTkFNRSAuIElOREVYLVBPU0lUSU9OKQpvcgog KElOREVYLU5BTUUgSU5ERVgtUE9TSVRJT04gRlVOQ1RJT04gQVJHVU1FTlRTLi4uKQpUaGUgcmV0 dXJuIHZhbHVlIG1heSBhbHNvIGNvbnNpc3Qgb2YgbmVzdGVkIGluZGV4IGFsaXN0cyBsaWtlOgog KElOREVYLU5BTUUgLiBJTkRFWC1BTElTVCkKZGVwZW5kaW5nIG9uIFBBVFRFUk5TLiIKICAobGV0 ICgoaW5kZXgtYWxpc3QgKGxpc3QgJ2R1bW15KSkKICAgICAgICAoY2FzZS1mb2xkLXNlYXJjaCAo aWYgKG9yIChsb2NhbC12YXJpYWJsZS1wICdpbWVudS1jYXNlLWZvbGQtc2VhcmNoKQoJCQkJICAo bm90IChsb2NhbC12YXJpYWJsZS1wICdmb250LWxvY2stZGVmYXVsdHMpKSkKCQkJICAgICAgaW1l bnUtY2FzZS1mb2xkLXNlYXJjaAoJCQkgICAgKG50aCAyIGZvbnQtbG9jay1kZWZhdWx0cykpKQog ICAgICAgIChzdGFydC10aW1lIChmbG9hdC10aW1lKSkKICAgICAgICAob2xkLXRhYmxlIChzeW50 YXgtdGFibGUpKQogICAgICAgICh0YWJsZSAoY29weS1zeW50YXgtdGFibGUgKHN5bnRheC10YWJs ZSkpKQogICAgICAgIChzbGlzdCBpbWVudS1zeW50YXgtYWxpc3QpKQogICAgOzsgTW9kaWZ5IHRo ZSBzeW50YXggdGFibGUgdXNlZCB3aGlsZSBtYXRjaGluZyByZWdleHBzLgogICAgKGRvbGlzdCAo c3luIHNsaXN0KQogICAgICA7OyBUaGUgY2hhcmFjdGVyKHMpIHRvIG1vZGlmeSBtYXkgYmUgYSBz aW5nbGUgY2hhciBvciBhIHN0cmluZy4KICAgICAgKGlmIChudW1iZXJwIChjYXIgc3luKSkKCSAg KG1vZGlmeS1zeW50YXgtZW50cnkgKGNhciBzeW4pIChjZHIgc3luKSB0YWJsZSkKICAgICAgICAo bWFwYyAobGFtYmRhIChjKQogICAgICAgICAgICAgICAgKG1vZGlmeS1zeW50YXgtZW50cnkgYyAo Y2RyIHN5bikgdGFibGUpKQogICAgICAgICAgICAgIChjYXIgc3luKSkpKQogICAgKGdvdG8tY2hh ciAocG9pbnQtbWF4KSkKICAgICh1bndpbmQtcHJvdGVjdAkJCTsgRm9yIHN5bnRheCB0YWJsZS4K CShzYXZlLW1hdGNoLWRhdGEKCSAgKHNldC1zeW50YXgtdGFibGUgdGFibGUpCgoJICA7OyBNYXAg b3ZlciB0aGUgZWxlbWVudHMgb2YgaW1lbnUtZ2VuZXJpYy1leHByZXNzaW9uCgkgIDs7ICh0eXBp Y2FsbHkgZnVuY3Rpb25zLCB2YXJpYWJsZXMgLi4uKS4KCSAgKGRvbGlzdCAocGF0IHBhdHRlcm5z KQoJICAgIChsZXQgKChtZW51LXRpdGxlIChjYXIgcGF0KSkKCQkgIChyZWdleHAgKG50aCAxIHBh dCkpCgkJICAoaW5kZXggKG50aCAyIHBhdCkpCgkJICAoZnVuY3Rpb24gKG50aCAzIHBhdCkpCgkJ ICAocmVzdCAobnRoY2RyIDQgcGF0KSkKCQkgIHN0YXJ0IGJlZykKCSAgICAgIDs7IEdvIGJhY2t3 YXJkcyBmb3IgY29udmVuaWVuY2Ugb2YgYWRkaW5nIGl0ZW1zIGluIG9yZGVyLgoJICAgICAgKGdv dG8tY2hhciAocG9pbnQtbWF4KSkKCSAgICAgICh3aGlsZSAoYW5kIChpZiAoZnVuY3Rpb25wIHJl Z2V4cCkKCQkJICAgICAgKGZ1bmNhbGwgcmVnZXhwKQoJCQkgICAgKGFuZAoJCQkgICAgIChyZS1z ZWFyY2gtYmFja3dhcmQgcmVnZXhwIG5pbCB0KQoJCQkgICAgIDs7IERvIG5vdCBjb3VudCBpbnZp c2libGUgZGVmaW5pdGlvbnMuCgkJCSAgICAgKGxldCAoKGludmlzIChpbnZpc2libGUtcCAocG9p bnQpKSkpCgkJCSAgICAgICAob3IgKG5vdCBpbnZpcykKCQkJCSAgIChwcm9nbgoJCQkJICAgICAo d2hpbGUgKGFuZCBpbnZpcwoJCQkJCQkgKG5vdCAoYm9icCkpKQoJCQkJICAgICAgIChzZXRxIGlu dmlzIChub3QgKHJlLXNlYXJjaC1iYWNrd2FyZAoJCQkJCQkJIHJlZ2V4cCBuaWwgJ21vdmUpKSkp CgkJCQkgICAgIChub3QgaW52aXMpKSkpKSkKCQkJICA7OyBFeGl0IHRoZSBsb29wIGlmIHdlIGdl dCBhbiBlbXB0eSBtYXRjaCwKCQkJICA7OyBiZWNhdXNlIGl0IG1lYW5zIGEgYmFkIHJlZ2V4cCB3 YXMgc3BlY2lmaWVkLgoJCQkgIChub3QgKD0gKG1hdGNoLWJlZ2lubmluZyAwKSAobWF0Y2gtZW5k IDApKSkKICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBEb24ndCB0YWtlIGFuIGV4Y2Vzc2l2 ZSBhbW91bnQgb2YgdGltZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAob3IgKDwgKC0gKGZs b2F0LXRpbWUpIHN0YXJ0LXRpbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlt ZW51LW1heC1pbmRleC10aW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvZ24K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVzc2FnZSAiYGltZW51LW1heC1pbmRl eC10aW1lJyBleGNlZWRlZCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsKSkp CgkJKHNldHEgc3RhcnQgKHBvaW50KSkKCQk7OyBSZWNvcmQgdGhlIHN0YXJ0IG9mIHRoZSBsaW5l IGluIHdoaWNoIHRoZSBtYXRjaCBzdGFydHMuCgkJOzsgVGhhdCdzIHRoZSBvZmZpY2lhbCBwb3Np dGlvbiBvZiB0aGlzIGRlZmluaXRpb24uCgkJKGdvdG8tY2hhciAobWF0Y2gtYmVnaW5uaW5nIGlu ZGV4KSkKCQkoYmVnaW5uaW5nLW9mLWxpbmUpCgkJKHNldHEgYmVnIChwb2ludCkpCgkJOzsgQWRk IHRoaXMgc29ydCBvZiBzdWJtZW51IG9ubHkgd2hlbiB3ZSd2ZSBmb3VuZCBhbgoJCTs7IGl0ZW0g Zm9yIGl0LCBhdm9pZGluZyBlbXB0eSwgZHVmZiBtZW51cy4KCQkodW5sZXNzIChhc3NvYyBtZW51 LXRpdGxlIGluZGV4LWFsaXN0KQoJCSAgKHB1c2ggKGxpc3QgbWVudS10aXRsZSkgaW5kZXgtYWxp c3QpKQoJCShpZiBpbWVudS11c2UtbWFya2VycwoJCSAgICAoc2V0cSBiZWcgKGNvcHktbWFya2Vy IGJlZykpKQoJCShsZXQgKChpdGVtCgkJICAgICAgIChpZiBmdW5jdGlvbgoJCQkgICAobmNvbmMg KGxpc3QgKG1hdGNoLXN0cmluZy1uby1wcm9wZXJ0aWVzIGluZGV4KQoJCQkJCWJlZyBmdW5jdGlv bikKCQkJCSAgcmVzdCkKCQkJIChjb25zIChtYXRjaC1zdHJpbmctbm8tcHJvcGVydGllcyBpbmRl eCkKCQkJICAgICAgIGJlZykpKQoJCSAgICAgIDs7IFRoaXMgaXMgdGhlIGRlc2lyZWQgc3VibWVu dSwKCQkgICAgICA7OyBzdGFydGluZyB3aXRoIGl0cyB0aXRsZSAob3IgbmlsKS4KCQkgICAgICAo bWVudSAoYXNzb2MgbWVudS10aXRsZSBpbmRleC1hbGlzdCkpKQoJCSAgOzsgSW5zZXJ0IHRoZSBp dGVtIHVubGVzcyBpdCBpcyBhbHJlYWR5IHByZXNlbnQuCgkJICAodW5sZXNzIChvciAobWVtYmVy IGl0ZW0gKGNkciBtZW51KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFuZCBpbWVu dS1nZW5lcmljLXNraXAtY29tbWVudHMtYW5kLXN0cmluZ3MKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChnb3RvLWNoYXIgc3RhcnQpIChudGggOCAoc3ludGF4LXBwc3MpKSkpKQoJCSAg ICAoc2V0Y2RyIG1lbnUKCQkJICAgIChjb25zIGl0ZW0gKGNkciBtZW51KSkpKSkKCQk7OyBHbyB0 byB0aGUgc3RhcnQgb2YgdGhlIG1hdGNoLCB0byBtYWtlIHN1cmUgd2UKCQk7OyBrZWVwIG1ha2lu ZyBwcm9ncmVzcyBiYWNrd2FyZHMuCgkJKGdvdG8tY2hhciBzdGFydCkpKSkpCiAgICAgIChzZXQt c3ludGF4LXRhYmxlIG9sZC10YWJsZSkpCiAgICA7OyBTb3J0IGVhY2ggc3VibWVudSBieSBwb3Np dGlvbi4KICAgIDs7IFRoaXMgaXMgaW4gY2FzZSBvbmUgc3VibWVudSBnZXRzIGl0ZW1zIGZyb20g dHdvIGRpZmZlcmVudCByZWdleHBzLgogICAgKGRvbGlzdCAoaXRlbSBpbmRleC1hbGlzdCkKICAg ICAgKHdoZW4gKGxpc3RwIGl0ZW0pCgkoc2V0Y2RyIGl0ZW0gKHNvcnQgKGNkciBpdGVtKSAnaW1l bnUtLXNvcnQtYnktcG9zaXRpb24pKSkpCiAgICA7OyBSZW1vdmUgYW55IGVtcHR5IG1lbnVzLiAg VGhhdCBjYW4gaGFwcGVuIGJlY2F1c2Ugb2Ygc2tpcHBpbmcKICAgIDs7IHRoaW5ncyBpbnNpZGUg Y29tbWVudHMgb3Igc3RyaW5ncy4KICAgIChzZXRxIGluZGV4LWFsaXN0IChjbC1kZWxldGUtaWYK ICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChpdCkgKGFuZCAoY29uc3AgaXQpIChudWxs IChjZHIgaXQpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgtYWxpc3QpKQogICAgKGxl dCAoKG1haW4tZWxlbWVudCAoYXNzcSBuaWwgaW5kZXgtYWxpc3QpKSkKICAgICAgKG5jb25jIChk ZWxxIG1haW4tZWxlbWVudCAoZGVscSAnZHVtbXkgaW5kZXgtYWxpc3QpKQogICAgICAgICAgICAg KGNkciBtYWluLWVsZW1lbnQpKSkpKQoKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Owo7OzsKOzs7IFRoZSBtYWluIGZ1bmN0aW9u cyBmb3IgdGhpcyBwYWNrYWdlIQo7OzsKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OwoKOzsgU2VlIGFsc28gaW5mby1sb29rdXAt ZmluZC1pdGVtCihkZWZ1biBpbWVudS1maW5kLWRlZmF1bHQgKGd1ZXNzIGNvbXBsZXRpb25zKQog ICJGdXp6aWx5IGZpbmQgYW4gaXRlbSBiYXNlZCBvbiBHVUVTUyBpbnNpZGUgdGhlIGFsaXN0IENP TVBMRVRJT05TLiIKICAoY2F0Y2ggJ2ZvdW5kCiAgICAobGV0ICgoY2FzZS1mb2xkLXNlYXJjaCB0 KSkKICAgICAgKGlmIChhc3NvYyBndWVzcyBjb21wbGV0aW9ucykgZ3Vlc3MKCShkb2xpc3QgKHJl IChsaXN0IChjb25jYXQgIlxcYCIgKHJlZ2V4cC1xdW90ZSBndWVzcykgIlxcJyIpCgkJCSAgKGNv bmNhdCAiXFxgIiAocmVnZXhwLXF1b3RlIGd1ZXNzKSkKCQkJICAoY29uY2F0IChyZWdleHAtcXVv dGUgZ3Vlc3MpICJcXCciKQoJCQkgIChyZWdleHAtcXVvdGUgZ3Vlc3MpKSkKCSAgKGRvbGlzdCAo eCBjb21wbGV0aW9ucykKCSAgICAoaWYgKHN0cmluZy1tYXRjaCByZSAoY2FyIHgpKSAodGhyb3cg J2ZvdW5kIChjYXIgeCkpKSkpKSkpKQoKKGRlZnVuIGltZW51LS1jb21wbGV0aW9uLWJ1ZmZlciAo aW5kZXgtYWxpc3QgJm9wdGlvbmFsIHByb21wdCkKICAiTGV0IHRoZSB1c2VyIHNlbGVjdCBmcm9t IElOREVYLUFMSVNUIGluIGEgY29tcGxldGlvbiBidWZmZXIgd2l0aCBQUk9NUFQuCgpSZXR1cm4g b25lIG9mIHRoZSBlbnRyaWVzIGluIGluZGV4LWFsaXN0IG9yIG5pbC4iCiAgOzsgQ3JlYXRlIGEg bGlzdCBmb3IgdGhpcyBidWZmZXIgb25seSB3aGVuIG5lZWRlZC4KICAobGV0ICgobmFtZSAodGhp bmctYXQtcG9pbnQgJ3N5bWJvbCkpCgljaG9pY2UKCShwcmVwYXJlZC1pbmRleC1hbGlzdAoJIChp ZiAobm90IGltZW51LXNwYWNlLXJlcGxhY2VtZW50KSBpbmRleC1hbGlzdAoJICAgKG1hcGNhcgoJ ICAgIChsYW1iZGEgKGl0ZW0pCgkgICAgICAoY29ucyAoc3Vic3QtY2hhci1pbi1zdHJpbmcgP1xz IChhcmVmIGltZW51LXNwYWNlLXJlcGxhY2VtZW50IDApCgkJCQkJICAoY2FyIGl0ZW0pKQoJCSAg ICAoY2RyIGl0ZW0pKSkKCSAgICBpbmRleC1hbGlzdCkpKSkKICAgICh3aGVuIChzdHJpbmdwIG5h bWUpCiAgICAgIChzZXRxIG5hbWUgKG9yIChpbWVudS1maW5kLWRlZmF1bHQgbmFtZSBwcmVwYXJl ZC1pbmRleC1hbGlzdCkgbmFtZSkpKQogICAgKHVubGVzcyBwcm9tcHQKICAgICAgKHNldHEgcHJv bXB0IChmb3JtYXQtcHJvbXB0CiAgICAgICAgICAgICAgICAgICAgIkluZGV4IGl0ZW0iCgkgICAg ICAgICAgICAoYW5kIG5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgIChpbWVudS0taW4tYWxp c3QgbmFtZSBwcmVwYXJlZC1pbmRleC1hbGlzdCkKICAgICAgICAgICAgICAgICAgICAgICAgIDs7 IERlZmF1bHQgdG8gYG5hbWUnIGlmIGl0J3MgaW4gdGhlIGFsaXN0LgogICAgICAgICAgICAgICAg ICAgICAgICAgbmFtZSkpKSkKICAgIDs7IERpc3BsYXkgdGhlIGNvbXBsZXRpb24gYnVmZmVyLgog ICAgKG1pbmlidWZmZXItd2l0aC1zZXR1cC1ob29rCiAgICAgICAgKGxhbWJkYSAoKQogICAgICAg ICAgKHNldHEtbG9jYWwgbWluaWJ1ZmZlci1hbGxvdy10ZXh0LXByb3BlcnRpZXMgdCkKICAgICAg ICAgIChzZXRxLWxvY2FsIGNvbXBsZXRpb24tZXh0cmEtcHJvcGVydGllcwogICAgICAgICAgICAg ICAgICAgICAgYCggOmNhdGVnb3J5IGltZW51CiAgICAgICAgICAgICAgICAgICAgICAgICAsQCh3 aGVuIChlcSBpbWVudS1mbGF0dGVuICdhbm5vdGF0aW9uKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGAoOmFubm90YXRpb24tZnVuY3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICwobGFtYmRhIChzKSAoZ2V0LXRleHQtcHJvcGVydHkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMCAnaW1lbnUtc2VjdGlvbiBzKSkpKQogICAgICAgICAg ICAgICAgICAgICAgICAgLEAod2hlbiAoZXEgaW1lbnUtZmxhdHRlbiAnZ3JvdXApCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYCg6Z3JvdXAtZnVuY3Rpb24KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICwobGFtYmRhIChzIHRyYW5zZm9ybSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChpZiB0cmFuc2Zvcm0gcwogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoZ2V0LXRleHQtcHJvcGVydHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDAgJ2ltZW51LXNlY3Rpb24gcykpKSkpKSkKICAgICAgICAgICh1bmxlc3MgaW1lbnUt ZWFnZXItY29tcGxldGlvbi1idWZmZXIKICAgICAgICAgICAgKG1pbmlidWZmZXItY29tcGxldGlv bi1oZWxwKSkpCiAgICAgIChzZXRxIG5hbWUgKGNvbXBsZXRpbmctcmVhZCBwcm9tcHQKCQkJCSAg cHJlcGFyZWQtaW5kZXgtYWxpc3QKCQkJCSAgbmlsIHQgbmlsICdpbWVudS0taGlzdG9yeS1saXN0 IG5hbWUpKSkKCiAgICAod2hlbiAoc3RyaW5ncCBuYW1lKQogICAgICAob3IgKGdldC10ZXh0LXBy b3BlcnR5IDAgJ2ltZW51LWNob2ljZSBuYW1lKQoJICAocHJvZ24KCSAgICAoc2V0cSBjaG9pY2Ug KGFzc29jIG5hbWUgcHJlcGFyZWQtaW5kZXgtYWxpc3QpKQoJICAgIChpZiAoaW1lbnUtLXN1YmFs aXN0LXAgY2hvaWNlKQoJCShpbWVudS0tY29tcGxldGlvbi1idWZmZXIgKGNkciBjaG9pY2UpIHBy b21wdCkKCSAgICAgIGNob2ljZSkpKSkpKQoKKGRlZnVuIGltZW51LS1tb3VzZS1tZW51IChpbmRl eC1hbGlzdCBldmVudCAmb3B0aW9uYWwgdGl0bGUpCiAgIkxldCB0aGUgdXNlciBzZWxlY3QgZnJv bSBhIGJ1ZmZlciBpbmRleCBmcm9tIGEgbW91c2UgbWVudS4KCklOREVYLUFMSVNUIGlzIHRoZSBi dWZmZXIgaW5kZXggYW5kIEVWRU5UIGlzIGEgbW91c2UgZXZlbnQuCgpSZXR1cm5zIHQgZm9yIHJl c2NhbiBhbmQgb3RoZXJ3aXNlIGFuIGVsZW1lbnQgb3Igc3ViZWxlbWVudCBvZiBJTkRFWC1BTElT VC4iCiAgKHNldHEgaW5kZXgtYWxpc3QgKGltZW51LS1zcGxpdC1zdWJtZW51cyBpbmRleC1hbGlz dCkpCiAgKGxldCogKChtZW51IChpbWVudS0tc3BsaXQtbWVudSBpbmRleC1hbGlzdCAob3IgdGl0 bGUgKGJ1ZmZlci1uYW1lKSkpKQoJIChtYXAgKGltZW51LS1jcmVhdGUta2V5bWFwIChjYXIgbWVu dSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNkciAoaWYgKGFuZCAobnVs bCAoY2RkciBtZW51KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoc3RyaW5ncCAoY2FhZHIgbWVudSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnNwIChjZGFkciBtZW51KSkpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYWRyIG1lbnUpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW51KSkpKSkKICAgIChwb3B1cC1tZW51 IG1hcCBldmVudCkpKQoKKGRlZnVuIGltZW51LS1mbGF0dGVuLWluZGV4LWFsaXN0IChpbmRleC1h bGlzdCAmb3B0aW9uYWwgY29uY2F0LW5hbWVzIHByZWZpeCkKICA7OyBUYWtlcyBhIG5lc3RlZCBJ TkRFWC1BTElTVCBhbmQgcmV0dXJucyBhIGZsYXQgaW5kZXggYWxpc3QuCiAgOzsgSWYgb3B0aW9u YWwgQ09OQ0FULU5BTUVTIGlzIG5vbi1uaWwsIHRoZW4gYSBuZXN0ZWQgaW5kZXggaGFzIGl0cwog IDs7IG5hbWUgYW5kIGEgc3BhY2UgY29uY2F0ZW5hdGVkIHRvIHRoZSBuYW1lcyBvZiB0aGUgY2hp bGRyZW4uCiAgOzsgVGhpcmQgYXJndW1lbnQgUFJFRklYIGlzIGZvciBpbnRlcm5hbCB1c2Ugb25s eS4KICAobWFwY2FuCiAgIChsYW1iZGEgKGl0ZW0pCiAgICAgKGxldCogKChuYW1lIChjYXIgaXRl bSkpCgkgICAgKHBvcyAoY2RyIGl0ZW0pKQoJICAgIChuZXctcHJlZml4IChhbmQgY29uY2F0LW5h bWVzCgkJCSAgICAgKGlmIHByZWZpeAoJCQkJIChjb25jYXQgcHJlZml4IGltZW51LWxldmVsLXNl cGFyYXRvciBuYW1lKQoJCQkgICAgICAgbmFtZSkpKSkKICAgICAgIChjb25kCgkoKG5vdCAoaW1l bnUtLXN1YmFsaXN0LXAgaXRlbSkpCgkgKGxpc3QgKGNvbnMgKHBjYXNlIGltZW51LWZsYXR0ZW4K ICAgICAgICAgICAgICAgICAgICAgICAoJ2Fubm90YXRpb24KICAgICAgICAgICAgICAgICAgICAg ICAgKGlmIHByZWZpeAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3BlcnRpemUgbmFt ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltZW51LXNlY3Rpb24g KGZvcm1hdCAiICglcykiIHByZWZpeCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICdpbWVudS1jaG9pY2UgaXRlbSkKICAgICAgICAgICAgICAgICAgICAgICAgICAocHJv cGVydGl6ZSBuZXctcHJlZml4ICdpbWVudS1jaG9pY2UgaXRlbSkpKQogICAgICAgICAgICAgICAg ICAgICAgICgnZ3JvdXAgKHByb3BlcnRpemUgbmFtZQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ2ltZW51LXNlY3Rpb24gKG9yIHByZWZpeCAiKiIpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1lbnUtY2hvaWNlIGl0ZW0pKQog ICAgICAgICAgICAgICAgICAgICAgIChfIG5ldy1wcmVmaXgpKQoJCSAgICAgcG9zKSkpCgkodAoJ IChpbWVudS0tZmxhdHRlbi1pbmRleC1hbGlzdCBwb3MgY29uY2F0LW5hbWVzIG5ldy1wcmVmaXgp KSkpKQogICBpbmRleC1hbGlzdCkpCgooZGVmdW4gaW1lbnUtY2hvb3NlLWJ1ZmZlci1pbmRleCAo Jm9wdGlvbmFsIHByb21wdCBhbGlzdCkKICAiTGV0IHRoZSB1c2VyIHNlbGVjdCBmcm9tIGEgYnVm ZmVyIGluZGV4IGFuZCByZXR1cm4gdGhlIGNob3NlbiBpbmRleC4KCklmIHRoZSB1c2VyIG9yaWdp bmFsbHkgYWN0aXZhdGVkIHRoaXMgZnVuY3Rpb24gd2l0aCB0aGUgbW91c2UsIGEgbW91c2UKbWVu dSBpcyB1c2VkLiAgT3RoZXJ3aXNlIGEgY29tcGxldGlvbiBidWZmZXIgaXMgdXNlZCBhbmQgdGhl IHVzZXIgaXMKcHJvbXB0ZWQgd2l0aCBQUk9NUFQuCgpJZiB5b3UgY2FsbCB0aGlzIGZ1bmN0aW9u IHdpdGggaW5kZXggYWxpc3QgQUxJU1QsIHRoZW4gaXQgbGV0cyB0aGUgdXNlcgpzZWxlY3QgZnJv bSBBTElTVC4KCldpdGggbm8gaW5kZXggYWxpc3QgQUxJU1QsIGl0IGNhbGxzIGBpbWVudS0tbWFr ZS1pbmRleC1hbGlzdCcgdG8KY3JlYXRlIHRoZSBpbmRleCBhbGlzdC4KCklmIGBpbWVudS11c2Ut cG9wdXAtbWVudScgaXMgbmlsLCB0aGVuIHRoZSBjb21wbGV0aW9uIGJ1ZmZlcgppcyBhbHdheXMg dXNlZCwgbm8gbWF0dGVyIGlmIHRoZSBtb3VzZSB3YXMgdXNlZCBvciBub3QuCgpUaGUgcmV0dXJu ZWQgdmFsdWUgaXMgb2YgdGhlIGZvcm0gKElOREVYLU5BTUUgLiBJTkRFWC1QT1NJVElPTikuIgog IChsZXQgKGluZGV4LWFsaXN0CgkobW91c2UtdHJpZ2dlcmVkIChsaXN0cCBsYXN0LW5vbm1lbnUt ZXZlbnQpKQoJKHJlc3VsdCB0KSkKICAgIDs7IElmIHNlbGVjdGVkIGJ5IG1vdXNlLCBzZWUgdG8g dGhhdCB0aGUgd2luZG93IHdoZXJlIHRoZSBtb3VzZSBpcwogICAgOzsgcmVhbGx5IGlzIHNlbGVj dGVkLgogICAgKGFuZCBtb3VzZS10cmlnZ2VyZWQKCSAobm90IChlcXVhbCBsYXN0LW5vbm1lbnUt ZXZlbnQgJyhtZW51LWJhcikpKQoJIChsZXQgKCh3aW5kb3cgKHBvc24td2luZG93IChldmVudC1z dGFydCBsYXN0LW5vbm1lbnUtZXZlbnQpKSkpCgkgICAob3IgKGZyYW1lcCB3aW5kb3cpIChudWxs IHdpbmRvdykgKHNlbGVjdC13aW5kb3cgd2luZG93KSkpKQogICAgOzsgQ3JlYXRlIGEgbGlzdCBm b3IgdGhpcyBidWZmZXIgb25seSB3aGVuIG5lZWRlZC4KICAgICh3aGlsZSAoZXEgcmVzdWx0IHQp CiAgICAgIChzZXRxIGluZGV4LWFsaXN0IChpZiBhbGlzdCBhbGlzdCAoaW1lbnUtLW1ha2UtaW5k ZXgtYWxpc3QpKSkKICAgICAgKHdoZW4gaW1lbnUtZmxhdHRlbgogICAgICAgIChzZXRxIGluZGV4 LWFsaXN0IChpbWVudS0tZmxhdHRlbi1pbmRleC1hbGlzdCBpbmRleC1hbGlzdCB0KSkpCiAgICAg IChzZXRxIHJlc3VsdAoJICAgIChpZiAoYW5kIGltZW51LXVzZS1wb3B1cC1tZW51CgkJICAgICAo b3IgKGVxIGltZW51LXVzZS1wb3B1cC1tZW51IHQpIG1vdXNlLXRyaWdnZXJlZCkpCgkJKGltZW51 LS1tb3VzZS1tZW51IGluZGV4LWFsaXN0IGxhc3Qtbm9ubWVudS1ldmVudCkKCSAgICAgIChpbWVu dS0tY29tcGxldGlvbi1idWZmZXIgaW5kZXgtYWxpc3QgcHJvbXB0KSkpCiAgICAgIChhbmQgKGVx dWFsIHJlc3VsdCBpbWVudS0tcmVzY2FuLWl0ZW0pCgkgICAoaW1lbnUtLWNsZWFudXApCgkgICAo c2V0cSByZXN1bHQgdCBpbWVudS0taW5kZXgtYWxpc3QgbmlsKSkpCiAgICByZXN1bHQpKQoKKGRl ZnZhci1sb2NhbCBpbWVudS0tbWVudWJhci1rZXltYXAgbmlsKQoKOzs7IyMjYXV0b2xvYWQKKGRl ZnVuIGltZW51LWFkZC10by1tZW51YmFyIChuYW1lKQogICJBZGQgYW4gYGltZW51JyBlbnRyeSB0 byB0aGUgbWVudSBiYXIgZm9yIHRoZSBjdXJyZW50IGJ1ZmZlci4KTkFNRSBpcyBhIHN0cmluZyB1 c2VkIHRvIG5hbWUgdGhlIG1lbnUgYmFyIGl0ZW0uClNlZSB0aGUgY29tbWFuZCBgaW1lbnUnIGZv ciBtb3JlIGluZm9ybWF0aW9uLiIKICAoaW50ZXJhY3RpdmUgInNJbWVudSBtZW51IGl0ZW0gbmFt ZTogIikKICAoaWYgKG9yIChhbmQgaW1lbnUtcHJldi1pbmRleC1wb3NpdGlvbi1mdW5jdGlvbgoJ ICAgICAgIGltZW51LWV4dHJhY3QtaW5kZXgtbmFtZS1mdW5jdGlvbikKCSAgaW1lbnUtZ2VuZXJp Yy1leHByZXNzaW9uCgkgIChub3QgKGVxIGltZW51LWNyZWF0ZS1pbmRleC1mdW5jdGlvbgoJCSAg ICdpbWVudS1kZWZhdWx0LWNyZWF0ZS1pbmRleC1mdW5jdGlvbikpKQogICAgICAodW5sZXNzIChh bmQgKGN1cnJlbnQtbG9jYWwtbWFwKQogICAgICAgICAgICAgICAgICAgKGtleW1hcHAgKGxvb2t1 cC1rZXkgKGN1cnJlbnQtbG9jYWwtbWFwKSBbbWVudS1iYXIgaW5kZXhdKSkpCgkobGV0ICgobmV3 bWFwIChtYWtlLXNwYXJzZS1rZXltYXApKSkKCSAgKHNldC1rZXltYXAtcGFyZW50IG5ld21hcCAo Y3VycmVudC1sb2NhbC1tYXApKQoJICAoc2V0cSBpbWVudS0tbGFzdC1tZW51YmFyLWluZGV4LWFs aXN0IG5pbCkKICAgICAgICAgIChzZXRxIGltZW51LS1tZW51YmFyLWtleW1hcCAobWFrZS1zcGFy c2Uta2V5bWFwICJJbWVudSIpKQoJICAoZGVmaW5lLWtleSBuZXdtYXAgW21lbnUtYmFyIGluZGV4 XQoJICAgIGAobWVudS1pdGVtICxuYW1lICxpbWVudS0tbWVudWJhci1rZXltYXApKQoJICAodXNl LWxvY2FsLW1hcCBuZXdtYXApCgkgIChhZGQtaG9vayAnbWVudS1iYXItdXBkYXRlLWhvb2sgJ2lt ZW51LXVwZGF0ZS1tZW51YmFyKSkpCiAgICAoaW1lbnUtdW5hdmFpbGFibGUtZXJyb3IgIlRoZSBt b2RlIGAlcycgZG9lcyBub3Qgc3VwcG9ydCBJbWVudSIKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoZm9ybWF0LW1vZGUtbGluZSBtb2RlLW5hbWUpKSkpCgo7OzsjIyNhdXRvbG9hZAooZGVm dW4gaW1lbnUtYWRkLW1lbnViYXItaW5kZXggKCkKICAiQWRkIGFuIEltZW51IFwiSW5kZXhcIiBl bnRyeSBvbiB0aGUgbWVudSBiYXIgZm9yIHRoZSBjdXJyZW50IGJ1ZmZlci4KCkEgdHJpdmlhbCBp bnRlcmZhY2UgdG8gYGltZW51LWFkZC10by1tZW51YmFyJyBzdWl0YWJsZSBmb3IgdXNlIGluIGEg aG9vay4iCiAgKGludGVyYWN0aXZlKQogIChpbWVudS1hZGQtdG8tbWVudWJhciAiSW5kZXgiKSkK CihkZWZ2YXItbG9jYWwgaW1lbnUtbWVudWJhci1tb2RpZmllZC10aWNrIDAKICAiVmFsdWUgb2Yg KGJ1ZmZlci1jaGFycy1tb2RpZmllZC10aWNrKSB3aGVuIGBpbWVudS11cGRhdGUtbWVudWJhcicg d2FzIGNhbGxlZC4iKQoKKGRlZnVuIGltZW51LXVwZGF0ZS1tZW51YmFyICgpCiAgKHdoZW4gKGFu ZCAoY3VycmVudC1sb2NhbC1tYXApCiAgICAgICAgICAgICBpbWVudS0tbWVudWJhci1rZXltYXAK CSAgICAgKC89IChidWZmZXItY2hhcnMtbW9kaWZpZWQtdGljaykgaW1lbnUtbWVudWJhci1tb2Rp ZmllZC10aWNrKSkKICAgIChzZXRxIGltZW51LW1lbnViYXItbW9kaWZpZWQtdGljayAoYnVmZmVy LWNoYXJzLW1vZGlmaWVkLXRpY2spKQogICAgKGxldCAoKGluZGV4LWFsaXN0IChpbWVudS0tbWFr ZS1pbmRleC1hbGlzdCB0KSkpCiAgICAgIDs7IERvbid0IGJvdGhlciB1cGRhdGluZyBpZiB0aGUg aW5kZXgtYWxpc3QgaGFzIG5vdCBjaGFuZ2VkCiAgICAgIDs7IHNpbmNlIHRoZSBsYXN0IHRpbWUg d2UgZGlkIGl0LgogICAgICAodW5sZXNzIChlcXVhbCBpbmRleC1hbGlzdCBpbWVudS0tbGFzdC1t ZW51YmFyLWluZGV4LWFsaXN0KQogICAgICAgIChzZXRxIGltZW51LS1sYXN0LW1lbnViYXItaW5k ZXgtYWxpc3QgaW5kZXgtYWxpc3QpCiAgICAgICAgKHNldHEgaW5kZXgtYWxpc3QgKGltZW51LS1z cGxpdC1zdWJtZW51cyBpbmRleC1hbGlzdCkpCgkobGV0KiAoKG1lbnUgKGltZW51LS1zcGxpdC1t ZW51IGluZGV4LWFsaXN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo YnVmZmVyLW5hbWUpKSkKICAgICAgICAgICAgICAgKG1lbnUxIChpbWVudS0tY3JlYXRlLWtleW1h cAogICAgICAgICAgICAgICAgICAgICAgIChjYXIgbWVudSkKICAgICAgICAgICAgICAgICAgICAg ICAoY2RyIChpZiAoYW5kIChudWxsIChjZGRyIG1lbnUpKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHN0cmluZ3AgKGNhYWRyIG1lbnUpKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGNvbnNwIChjZGFkciBtZW51KSkpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGNhZHIgbWVudSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bWVudSkpCiAgICAgICAgICAgICAgICAgICAgICAgJ2ltZW51LS1tZW51YmFyLXNlbGVjdCkpKQoJ ICAoc2V0Y2RyIGltZW51LS1tZW51YmFyLWtleW1hcCAoY2RyIG1lbnUxKSkpKSkpKQoKKGRlZnVu IGltZW51LS1tZW51YmFyLXNlbGVjdCAoaXRlbSkKICAiVXNlIEltZW51IHRvIHNlbGVjdCB0aGUg ZnVuY3Rpb24gb3IgdmFyaWFibGUgbmFtZWQgaW4gdGhpcyBtZW51IElURU0uIgogIChpZiAoZXF1 YWwgaXRlbSBpbWVudS0tcmVzY2FuLWl0ZW0pCiAgICAgIChwcm9nbgoJKGltZW51LS1jbGVhbnVw KQoJOzsgTWFrZSBzdXJlIGltZW51LXVwZGF0ZS1tZW51YmFyIHJlZG9lcyBldmVyeXRoaW5nLgoJ KHNldHEgaW1lbnUtbWVudWJhci1tb2RpZmllZC10aWNrIC0xKQoJKHNldHEgaW1lbnUtLWluZGV4 LWFsaXN0IG5pbCkKCShzZXRxIGltZW51LS1sYXN0LW1lbnViYXItaW5kZXgtYWxpc3QgbmlsKQoJ KGltZW51LXVwZGF0ZS1tZW51YmFyKQoJdCkKICAgIChpbWVudSBpdGVtKQogICAgbmlsKSkKCihk ZWZ1biBpbWVudS1kZWZhdWx0LWdvdG8tZnVuY3Rpb24gKF9uYW1lIHBvc2l0aW9uICZyZXN0IF9y ZXN0KQogICJNb3ZlIHRvIHRoZSBnaXZlbiBwb3NpdGlvbi4KCk5BTUUgaXMgaWdub3JlZC4gIFBP U0lUSU9OIGlzIHdoZXJlIHRvIG1vdmUuICBSRVNUIGlzIGFsc28gaWdub3JlZC4KVGhlIGlnbm9y ZWQgYXJncyBqdXN0IG1ha2UgdGhpcyBmdW5jdGlvbiBoYXZlIHRoZSBzYW1lIGludGVyZmFjZSBh cyBhCmZ1bmN0aW9uIHBsYWNlZCBpbiBhIHNwZWNpYWwgaW5kZXgtaXRlbS4iCiAgKGlmIChvciAo PCBwb3NpdGlvbiAocG9pbnQtbWluKSkKCSAgKD4gcG9zaXRpb24gKHBvaW50LW1heCkpKQogICAg ICA7OyBXaWRlbiBpZiBvdXRzaWRlIG5hcnJvd2luZy4KICAgICAgKHdpZGVuKSkKICAoZ290by1j aGFyIHBvc2l0aW9uKSkKCjs7OyMjI2F1dG9sb2FkCihkZWZ1biBpbWVudSAoaW5kZXgtaXRlbSkK ICAiSnVtcCB0byBhIHBsYWNlIGluIHRoZSBidWZmZXIgY2hvc2VuIHVzaW5nIGEgYnVmZmVyIG1l bnUgb3IgbW91c2UgbWVudS4KSU5ERVgtSVRFTSBzcGVjaWZpZXMgdGhlIHBvc2l0aW9uLiAgU2Vl IGBpbWVudS1jaG9vc2UtYnVmZmVyLWluZGV4Jwpmb3IgbW9yZSBpbmZvcm1hdGlvbi4iCiAgKGlu dGVyYWN0aXZlIChsaXN0IChpbWVudS1jaG9vc2UtYnVmZmVyLWluZGV4KSkpCiAgOzsgQ29udmVy dCBhIHN0cmluZyB0byBhbiBhbGlzdCBlbGVtZW50LgogIChpZiAoc3RyaW5ncCBpbmRleC1pdGVt KQogICAgICAoc2V0cSBpbmRleC1pdGVtIChhc3NvYyBpbmRleC1pdGVtIChpbWVudS0tbWFrZS1p bmRleC1hbGlzdCkpKSkKICAod2hlbiBpbmRleC1pdGVtCiAgICAocGNhc2UgaW5kZXgtaXRlbQog ICAgICAoYCgsbmFtZSAscG9zICxmbiAuICxhcmdzKQogICAgICAgKHB1c2gtbWFyayBuaWwgdCkK ICAgICAgIChhcHBseSBmbiBuYW1lIHBvcyBhcmdzKQogICAgICAgKHJ1bi1ob29rcyAnaW1lbnUt YWZ0ZXItanVtcC1ob29rKSkKICAgICAgKGAoLG5hbWUgLiAscG9zKSAoaW1lbnUgKGxpc3QgbmFt ZSBwb3MgaW1lbnUtZGVmYXVsdC1nb3RvLWZ1bmN0aW9uKSkpCiAgICAgIChfIChlcnJvciAiVW5r bm93biBpbWVudSBpdGVtOiAlUyIgaW5kZXgtaXRlbSkpKSkpCgooZGVmdW4gaW1lbnUtZmx1c2gt Y2FjaGUgKCkKICAiRmx1c2ggdGhlIGN1cnJlbnQgaW1lbnUgY2FjaGUuClRoaXMgZm9yY2VzIGEg ZnVsbCByZXNjYW4gb2YgdGhlIGJ1ZmZlciB0byByZWNyZWF0ZSB0aGUgaW5kZXggYWxpc3QKbmV4 dCB0aW1lIGBpbWVudScgaXMgaW52b2tlZC4iCiAgKGltZW51LS1jbGVhbnVwKQogIChzZXRxIGlt ZW51LS1pbmRleC1hbGlzdCBuaWwpKQoKKHByb3ZpZGUgJ2ltZW51KQoKOzs7IGltZW51LmVsIGVu ZHMgaGVyZQo= --_003_DS7PR10MB52322F81CCFD544632230B64F34CADS7PR10MB5232namp_-- From debbugs-submit-bounces@debbugs.gnu.org Sun Jul 06 11:38:08 2025 Received: (at 78935) by debbugs.gnu.org; 6 Jul 2025 15:38:08 +0000 Received: from localhost ([127.0.0.1]:56419 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uYRRP-0001X9-C8 for submit@debbugs.gnu.org; Sun, 06 Jul 2025 11:38:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36160) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uYRRM-0001Vd-Gu for 78935@debbugs.gnu.org; Sun, 06 Jul 2025 11:38:05 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uYRRG-00040c-Ec; Sun, 06 Jul 2025 11:37:58 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=M24h7gMWDZrOltJeWrIIWaxZn5kBMTOy2VnnArCaDfc=; b=bHpdxI8QhTU1 qMX18KnqzTVAFZTp8X2SKd64ci41YZK5BtWu5x6HnkEgJx5kH+vdgRc7dAee8p/YuHWT+AsXko8SB iy1ld97uw0/Xf6LN2dVGVeDRykZWZy1eL2KPi9bMpJVNDD5EYE7PlL4t/O8tExeXuBFe7d0Lw4ZRT akqali1ech7FwzsMn2QcrYH0RzUa0QdfmFDuirsTYOuRc/I6PeiWJ9llYcp6QX9xjKa5rPeGtP1KT MKW3nlwdxBUY1T/Kp3taizSJ8fUH9//WCEYY9zqj+FeQxnEhyDx2bVFKogVyelBQ7UFMlruZODrza uY4z8hdqtBN7Z2KnJMAerg==; Date: Sun, 06 Jul 2025 18:37:54 +0300 Message-Id: <86qzyttjn1.fsf@gnu.org> From: Eli Zaretskii To: Drew Adams In-Reply-To: (message from Drew Adams on Sun, 6 Jul 2025 15:03:13 +0000) Subject: Re: [External] : Re: bug#78935: 30.1.90; [PATCH] Let Imenu optionally allow duplicate menu entries References: <86bjpzvwqx.fsf@gnu.org> <86sejavb72.fsf@gnu.org> <86pleeue43.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 78935 Cc: 78935@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Drew Adams > CC: "78935@debbugs.gnu.org" <78935@debbugs.gnu.org> > Date: Sun, 6 Jul 2025 15:03:13 +0000 > > > It is best if you could download NEWS from the master branch, and > > produce a patch for that. Failing that, the entry itself would do. > > I don't know how to do that - dunno where it's available > for download using a browser. Here: https://cgit.git.savannah.gnu.org/cgit/emacs.git/tree/ > Here is the NEWS entry: > > *** New user option 'imenu-allow-duplicate-menu-items'. > This specifies whether Imenu can include duplicate menu items. > Duplicate items are allowed by default (option value 't'). > > > > Also, do you prefer that `-flag' be removed from the name? > > Yes, please. > > Done. See attached imenu.el patch and patched file. Thanks. From debbugs-submit-bounces@debbugs.gnu.org Mon Jul 07 12:08:51 2025 Received: (at 78935) by debbugs.gnu.org; 7 Jul 2025 16:08:51 +0000 Received: from localhost ([127.0.0.1]:37165 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uYoOg-0004Kq-KW for submit@debbugs.gnu.org; Mon, 07 Jul 2025 12:08:50 -0400 Received: from mx0b-00069f02.pphosted.com ([205.220.177.32]:62822) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uYoOd-0004KX-G3 for 78935@debbugs.gnu.org; Mon, 07 Jul 2025 12:08:48 -0400 Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 567Fkt0W011773; Mon, 7 Jul 2025 16:08:46 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=kOB8egILGYm116sseiKqxaenxueF+UoRkxM6R/kYetQ=; b= TfVy6McBOgKB/GkU9JbOBxaAaQFBAwJFGcyMC51Jv1yH1v7ZYIa1ub0pmP5RgAdp +WOnV6yEX8BxJgHNuDuvv7EAm96hbYFfHUoQ1RPKqCPzNUaClXb4DN7eLby4Ofk5 0/JQjwx3flptrhQdmK5LN0HM8SnJopsiVilp74snx6Hpkc7+rtOQVWlzRyssf+ll lsv3PQ4nRuucLOKhK7F3JvRvhag8KUZuomhzXakl+TiR+Y9SSS/x/upRK6YHj70L 1QF4JDyY7ees2Aik+zMqui/9/1FSsfBjiavX6GpjUwfjwsbbxjtQGeASRmC5U8KG ZrP8iEP3J6K0K58hSXDxlg== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 47rh67g1w5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 07 Jul 2025 16:08:45 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 567F4dgJ024212; Mon, 7 Jul 2025 16:08:44 GMT Received: from nam10-mw2-obe.outbound.protection.outlook.com (mail-mw2nam10on2085.outbound.protection.outlook.com [40.107.94.85]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 47ptg8q162-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 07 Jul 2025 16:08:44 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=QlY64vd7iiCHneDt35wEVMhSkrtMWkfk3hkAXyP1VNZO6QpNFbkrKJ/1eUjgEKR2OvrxwI8gTFjBI21QZ+wg/i9WC6CEnOgdD//8aX7Rcx3TSosSA40iSlJe68Gh/4lw9HsQ2gleO9z8lJEUbhdElabN2urpu+Xg+WBvwJwXY1A1mdL/DdvBA1TctOmPXmzloRVsAy/eD1Mbg69cW2ldb7LCJ9223DzQzsS5nXjobai9Yv6Psxzl1r7vv9YqfN8uABBcan6qpSU9kTktg4wIn6ZOMzXgC3adf2p+SqD562JQ5GisqUYaf2YiY+fZRpSdHHuGSuzU66hduES5/XRMUA== 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=kOB8egILGYm116sseiKqxaenxueF+UoRkxM6R/kYetQ=; b=D9/IAFyqsMoQ1TJ2QI7ABsvzarb7i245yl75afiWpHusXGe2eKH4QI4OVh+u1w9OT0Si1CV4M1JNHU1hru0VPlCJmBOPbcdIaL4gIm4UFO4Q8e6cwrpvA/X7cvNW9VaugYM8UhWMhIIp7C0QXs1d9iXVx8nFD5vOyx+volP/goCO4YV94NHxFXNMvNj+RhrWTL1XUKv6Qz3Rykame8KXFpDB+i2WlbZ4v1uvwE5WYKW+6UQd35MoCGcasyrPJHJhf8hwBYbmaxmljj8AUcQt/UegVSuiX04WlIY1FeWEmzKDUiktj+xExjxnJbbzcz6avzQR5z2EWBy7cwMVQMt29w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=kOB8egILGYm116sseiKqxaenxueF+UoRkxM6R/kYetQ=; b=iknk6WTqHc7Xmh8kC7CkyM231MQrye5GIBdAlSyrkbobu6djOQ7fI0G3iYA7yU9+8dyC0B7onJ1wbkOcg89nBXRCLe/WDOehpfzGf2k0DTQezhSOSDx62enKimmRKXU4jcs5UIQwKmyltR5i4yliFDpMR0wtveM63AqMjBf0bYk= Received: from DS7PR10MB5232.namprd10.prod.outlook.com (2603:10b6:5:3aa::24) by SJ2PR10MB7672.namprd10.prod.outlook.com (2603:10b6:a03:53e::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8880.17; Mon, 7 Jul 2025 16:08:42 +0000 Received: from DS7PR10MB5232.namprd10.prod.outlook.com ([fe80::8303:658f:14f8:2324]) by DS7PR10MB5232.namprd10.prod.outlook.com ([fe80::8303:658f:14f8:2324%4]) with mapi id 15.20.8901.024; Mon, 7 Jul 2025 16:08:42 +0000 From: Drew Adams To: Eli Zaretskii Subject: RE: [External] : Re: bug#78935: 30.1.90; [PATCH] Let Imenu optionally allow duplicate menu entries Thread-Topic: [External] : Re: bug#78935: 30.1.90; [PATCH] Let Imenu optionally allow duplicate menu entries Thread-Index: AQHb7ov2UkO/hbjx5kK7QmY4SCHxN7QmxhhA Date: Mon, 7 Jul 2025 16:08:42 +0000 Message-ID: References: <86bjpzvwqx.fsf@gnu.org> <86sejavb72.fsf@gnu.org> <86pleeue43.fsf@gnu.org> <86qzyttjn1.fsf@gnu.org> In-Reply-To: <86qzyttjn1.fsf@gnu.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DS7PR10MB5232:EE_|SJ2PR10MB7672:EE_ x-ms-office365-filtering-correlation-id: 0ea6c39f-d182-439b-4052-08ddbd708b0c x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|376014|1800799024|366016|38070700018; x-microsoft-antispam-message-info: =?us-ascii?Q?DxHypzi2afMU+VvgrAJOcfdPjRlciUa7ntKTYz/4MnbI/wbPegtJJgdJSmTB?= =?us-ascii?Q?5ZunbTPTzSzit9Xv+IKeWJWtaAj2j21kHKB25cZFg2+tOa5NPKYP3qV8dBHI?= =?us-ascii?Q?XSmXZXbBFfhtS85NI/GHwIvO7ttsDeZYZDdrfdfTeNqDprgGcFeagGMU8MLx?= =?us-ascii?Q?hYnELKUOOzsqh85x1qTJ2/edlHvAVv8ZUxQvSmLUmOuuCtCDV3JhKaYcotag?= =?us-ascii?Q?AMTSoYm7ns/SH82sPiMjp3V786Su5uKRDam9ucgGbYuoFeOOOxDUmatbHCYD?= =?us-ascii?Q?zRDiK/+frlr/gjk3zitQmjVGJ489UYG+RpH1P4mcpsMfhTVJfmirigx9dpvt?= =?us-ascii?Q?Tc8fl1Kca1u7ObrRoBLda5xB0x/SwF4bUK67ShwKHSYw4O0SSc9ZTCQLh/TO?= =?us-ascii?Q?pIujlRY1fjk9aQCLFnXlKQy3iLAgfCTL2pBT8rx1eZiIkiky1Xd7+WPBfdVK?= =?us-ascii?Q?BHbAGwxx9C+mdq36yRFggduNkhWm8C6IH6qmUn5HtyrWWdlldF/A12miPqAq?= =?us-ascii?Q?pSLhYDymh8EQqv5po7zQz5Z0BmutO5mr+uV82eOWtDLwRN6ACKZ8hBE58SdL?= =?us-ascii?Q?nr3UDpf+euL/FpvIZ2kNj0UThk+/uRg/7K9/PLR7usAce8wBQVWQgVI8ze1l?= =?us-ascii?Q?+MbG9oOJN2s1LPP1dM8k+jH42A/p2rUi2yqGuq0YxBKNIU3DHrcFxn2YzxM8?= =?us-ascii?Q?SS5J0pJuze05BXl2BOPT9z9LPDnZQwoE/kgVQ3APYXW8Z9ke1rrL2aFpougz?= =?us-ascii?Q?dVCQPQmz4rQm66oI0b7h+uX5MpK2/QJJF1Xa1anE/a7KtMd5JoIvzsOgUY3O?= =?us-ascii?Q?j1U0JgPo/KqWv23M20lKkR1ae/3q7I5wAsXEEco4F7WnggLLxvsS56FXl2S/?= =?us-ascii?Q?ifds/pRMR0FSQRfIZpbXP0rJIedz537DljJEyXAeCoY50TQlDjZS65c5vtBX?= =?us-ascii?Q?yrDS1okk2aO9SS28ahok9a611if3AgoQUFyjMdurUFrh//BY22If3oEH6Ih7?= =?us-ascii?Q?rsrlzNL4zGQgEf4DGxB2Yr0DGnRvrbRjMcIrKCssEyEE3P9RZjLOY6i2yMDF?= =?us-ascii?Q?ZgNGDbCA3naSbC1JLp9oLrTHy7cYbCyORcLpZGYkVt2PawANQIauWt51AP6H?= =?us-ascii?Q?q3ieOOe8We9z4UJLRCD3Rc5Z09QRVrQSlO1LjEWAV0TEWhPPzCiIo+xq/GMS?= =?us-ascii?Q?m834Rei25Xt+MAYswZpap6oZRxmYtTsEjY56bHSB0/Fyk3GImzbA1Fz8Fbmm?= =?us-ascii?Q?1mhxQwn8CDQKalTGhiuhV7Rxrt0Tf4XhOoBd1woFrxjWtHXYkX19wwcPZYDX?= =?us-ascii?Q?3Miq4hRjkNnGfstgksSOESh2zFumlsermlQWGvFzHv23BCKvqEmEwu+Bqq5A?= =?us-ascii?Q?48FkF32YrgNM0CVsSxEvWeBXejoCjBy8kB3Y+/BO4d7W5kSX6RLVb7buOBwD?= =?us-ascii?Q?Gl+y+um5CYqauDR5f1xu/NTgpV1xSB7a+Slv5LM+el5gIFjT39A3xD0UQziO?= =?us-ascii?Q?KYfSlFqc2u7pb2I=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DS7PR10MB5232.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(366016)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?GsAyMN31ZO+0P9wf/h+m5UhgoNfuW1XKjep7HO9lA/zarzjffMgnnozQScBL?= =?us-ascii?Q?ygs1WDLYTyM/qqmOy8yjkiyPN3QHeEsY3x16qeTkIJvyH6pk5JPIMCTo0Q/Q?= =?us-ascii?Q?UX4JgZPf0IeHUg5YY92tm835oBZlgOUYhXPPKrykZIsd5mcHN2OvwVWAniAR?= =?us-ascii?Q?iDI3aIMDs3tzGuhi2lAXg2w3E64yWHyF7HJVhUOSAvVqzdkxS3Es9onvzybJ?= =?us-ascii?Q?FLlhLvEC3gOET0gq+rntj4PixnMeh9sMEfpxQ+d1NYOW/ivDqTNoeDWhLboQ?= =?us-ascii?Q?sKW68wnIDo6fF2DmQC9cNOKI+IZj3K5t87DLhhvCWvB5TGteu1Uz5bFfXUR6?= =?us-ascii?Q?e42axEJbaHJfc9+9PT4huyvfd+Q5QrLXaY/8SFeTXRDAV8tVdWpqiREPmT4S?= =?us-ascii?Q?j4yZ8nTNyzikcakDG37FWM3pKyKXqCJXjHdgxy+Xdo3hLh23EXFHB+iZIgU1?= =?us-ascii?Q?2R94M6EEc2XoNQQu0jVNKhZRcMIiZrZLPTT/qYVCH7xoxn7dvG82owjH6+XA?= =?us-ascii?Q?GKO/asfSA4rca/qKiwd1+ebn/LeR4XqKNNTlpBz3BGu4885eFyYho9hd67D4?= =?us-ascii?Q?vzGuuvR/Ew/z/uDOU6zNdZDK/yNs96ToYdwZCN1nlMJYv4nNQzLQLYm1HZ8m?= =?us-ascii?Q?OWjyYBAG5sUHSh7auN0jV/zA0wHvcaXWxvtlC1cjlZIL9q4QfuKVQVPnm1qo?= =?us-ascii?Q?quTz16YJ5rL+GDa55ikZ3oVZhIhVA+9XR8JJNUls4Cy1LoiZlh0uoYRnxpTh?= =?us-ascii?Q?PEMPHQ6csvCp2DhXgXduG5j4bqInRotwdVSJOhf+twou0kGCLxaa573TNDRG?= =?us-ascii?Q?W/HNT1BTdBa+ewP/F44bzGr9UxbP+Md+OeWNbxu/qy7o711ZkgnOBdR3d6fe?= =?us-ascii?Q?QDN6ph8CYQeAIKaQS/7AudyR+hoey2A6x5puuksQFR/biIscln2vpVoZf0W2?= =?us-ascii?Q?agigA/4GUT8P4WIypP5rDb73s7jiIKp0RrcEeL9WefhFhjlsisJ6EbtsHLjv?= =?us-ascii?Q?jseddKjAfUkJIhxJrQZYrHW0a8GT15DYYJx7Xy5Ddl6LOHo18zGddz9ghUsF?= =?us-ascii?Q?5+OlCjVbAk9MsBEveuhZUkRgsKunFv0Qp2oLOap8lVgOZAuJ6jE2GMh9g7vm?= =?us-ascii?Q?ACJRwe9e9FP/DRTVE5GjjEcP5WOz2h12KiSGl1/XMkBoI/ZwRofPf92IKbP0?= =?us-ascii?Q?uMnv9lU7QnwA18zteXKpICGE6EZM0P10DKqE7E9D3cndqCnLxkTtAxjW+klX?= =?us-ascii?Q?8JXI8CAg6sFS2heyuQfJyUDH0gf10N8yzff6PLfsc0eLV9vcmdYcWH7p8DJo?= =?us-ascii?Q?w2qbffM/14vOt17fxKHBrvH3SNg67TF8GJXp/6pe6v6RXJ7rddaGTcLoUYoh?= =?us-ascii?Q?+I7GdRCgaEcAslJvn2ux2p1FiN1+MXv9KyBuFLKj57+v5bPVgRX4rRUkT5gh?= =?us-ascii?Q?FB8+0wZW9dCHx8M5BRHOhiJzEgnMfb+vPIXl+Sptk7DXK15UA6J6vPEUxeL+?= =?us-ascii?Q?4i2nGYL/dJV9Fxw3fYsaRHoCZnBz+QzTR6T3WJgeWBJXZWT4QHmQA/zsQRI8?= =?us-ascii?Q?9JOI20/iFGSfthyKNM70Tv/Q9I6zyx1h/gaCYf/b?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: qYGemJ0aljr3Q3vPHuUgixm4z8OWKcua6Vn4WDO4ZSpi6kq3TgMZO4wo1YxOhb+HX/OH5sYkevDo0NnCWMxirirH8ZHrszKsOtU7huJ4jayZzd039Ju29ZmKP7awW10SOgi/639c54p6wKkyV3SFp7n0WYrlfSUQq/U4RdgspHmN7mgqtoio3rn7h06A3kKuc9l0OTo40QvRc8QKtcA++jAoycMPkGg/ADEVoSpYxXYBqnsE9w5radaRHfTf27kA+Y17ApS3y+d34GPjHvaDciySy7V7vGOfqhT9GkkLdD0VpMgdYoZAcEcdAAWLSeoJGlHD75oPnLlF5pNg7/P16aiToTr4z0xR2Xh4X0V92WurytPM5tCTwUgxIjoKMmGoQ7gOqcmPBe0l21XKeILI6fzms+L9+HkmNudtNGmTGzUTE4AStwpBAGJYFJqmyUgNTXoGSbK1PSddsqIqdFbQ9y1oQb4LP9LyqMV3mIiQ+VDuZcX9R5VWSrSBLCQhmSrh2HPJpcEbwdqKD5TH8VyxM2gPeE3osQzpHHjRb/b7QwreYZO94vgYG7ankj9vn6/uAkv+KnFuKaLRIRawZgaNN8RaZilOZfM+y+yX3EwP66g= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DS7PR10MB5232.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0ea6c39f-d182-439b-4052-08ddbd708b0c X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Jul 2025 16:08:42.2798 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 79JlMUInBHKfD14BlhEYcL19ElzFjYwFQqSEvSQWARyqoij77h2vH2NhPdbN8ghyjyI3bF+jPwDy0XHx8HCu8Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR10MB7672 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-07-07_04,2025-07-07_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 phishscore=0 bulkscore=0 malwarescore=0 mlxscore=0 mlxlogscore=999 adultscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2505160000 definitions=main-2507070099 X-Proofpoint-ORIG-GUID: KGZ_j8AX7DUh_F5PwX7yXLoB-KyRNzjW X-Proofpoint-GUID: KGZ_j8AX7DUh_F5PwX7yXLoB-KyRNzjW X-Authority-Analysis: v=2.4 cv=PKsP+eqC c=1 sm=1 tr=0 ts=686bf10d b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=kj9zAlcOel0A:10 a=Wb1JkmetP80A:10 a=GoEa3M9JfhUA:10 a=mDV3o1hIAAAA:8 a=vD4R4M9v0H48kD1B4vIA:9 a=CjuIK1q_8ugA:10 a=zZCYzV9kfG8A:10 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzA3MDA5OSBTYWx0ZWRfX9EEDuknj1C0D llykP6EoGBfXecJLG0VDfKlYA+roGzPTNDmz9zl61iUwAOFkUoI09lC1JKR1PTGafXm/U/iMqKQ A/ZHH9wz7YtwGwOWluQlE+P2oY8xQDg72ltceNMlF2ahbPyuyXzIeUXjmNS4Rj/pE+8oZPNI15F PH+bm+zaVJMqhLPbjJcI4SPyaNMBvFDFHvMLE9hH3gdXEBWhXq/16WNTJCHacsytMiXFP/xxd0u VKLdC+dPR9mcgqd1Diu2CKGHF1ft8cu1mXXrqP7IQhU4Llo23/KlzTz3AEtQ6zm6PKmZSgOVmDX ZZNRMrehIfZeoYSNz6/My5dMsMtHnn4tIDK68bqB/QTsRDdLp3QZ6zv7UsNvUCdNEcX18jXmrzA qgLrQMMH25GrBqZ/bI90eauzrKtkHmjQxipaPovUsxw0cJMjCctJs5n62TXywBIZhEGa9ILw X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 78935 Cc: "78935@debbugs.gnu.org" <78935@debbugs.gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > > > It is best if you could download NEWS from the master branch, and > > > produce a patch for that. Failing that, the entry itself would do. > > I don't know how to do that - dunno where it's available > > for download using a browser. >=20 > Here: >=20 > https://cgit.git.savannah.gnu.org/cgit/emacs.git/tree/ OK, thanks for next time. You have what's needed for this time, right? (But that site seems _very_ slow to load and to access subdirs there.) > > Done. See attached imenu.el patch and patched file. >=20 > Thanks. Let me know, if you need something else. From debbugs-submit-bounces@debbugs.gnu.org Mon Jul 07 12:14:50 2025 Received: (at 78935) by debbugs.gnu.org; 7 Jul 2025 16:14:50 +0000 Received: from localhost ([127.0.0.1]:37202 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uYoUT-0004ok-W3 for submit@debbugs.gnu.org; Mon, 07 Jul 2025 12:14:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34198) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uYoUR-0004oC-J8 for 78935@debbugs.gnu.org; Mon, 07 Jul 2025 12:14:48 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uYoUM-0001Sw-5t; Mon, 07 Jul 2025 12:14:42 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=/3ncntyLyzUNYBmcYgs+R7DMlSGG7QLf9hGsHXnMPFM=; b=c8jgjq56aD4D GzrEAd1yHMlKUw5navVmS3ri/fuy6OpjmZVy+W8r1Jo8QiV5oPtKsQXKOqZkRe5xSlUTWwOC5S+Ay zGbYh1RGLy3N54ACbjjwrA/MCcxro3NrkzVS4aCBoR7lYUuPTKBe4FuYrlBLmNxwnN3pxtPaFuogs G9mWz8Ux3DznRvS4JZ8OhchBgYfQI0mgE6hJTNuuuYyrDMlZKLV/pWtHLpwJftDuzlpNLUHzGZdeY Om32awxz532X8RYZxegsIdLYKyCR75V8zfJECEtSotWv2ygBakuUDbC5XUiQJ9JlDtH1n/Qy6G/oR XrhzCYatnAkDVxVB/FRG+g==; Date: Mon, 07 Jul 2025 19:14:40 +0300 Message-Id: <86v7o4rn9r.fsf@gnu.org> From: Eli Zaretskii To: Drew Adams In-Reply-To: (message from Drew Adams on Mon, 7 Jul 2025 16:08:42 +0000) Subject: Re: bug#78935: 30.1.90; [PATCH] Let Imenu optionally allow duplicate menu entries References: <86bjpzvwqx.fsf@gnu.org> <86sejavb72.fsf@gnu.org> <86pleeue43.fsf@gnu.org> <86qzyttjn1.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 78935 Cc: 78935@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Drew Adams > CC: "78935@debbugs.gnu.org" <78935@debbugs.gnu.org> > Date: Mon, 7 Jul 2025 16:08:42 +0000 > > > > > It is best if you could download NEWS from the master branch, and > > > > produce a patch for that. Failing that, the entry itself would do. > > > I don't know how to do that - dunno where it's available > > > for download using a browser. > > > > Here: > > > > https://cgit.git.savannah.gnu.org/cgit/emacs.git/tree/ > > OK, thanks for next time. You have what's needed for > this time, right? Yes. > (But that site seems _very_ slow to load and to access > subdirs there.) I think that's intentional, because all kinds of bots and crawlers could otherwise bring Savannah to its knees. From debbugs-submit-bounces@debbugs.gnu.org Mon Jul 07 12:16:12 2025 Received: (at 78935) by debbugs.gnu.org; 7 Jul 2025 16:16:13 +0000 Received: from localhost ([127.0.0.1]:37217 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uYoVo-0004zm-Ix for submit@debbugs.gnu.org; Mon, 07 Jul 2025 12:16:12 -0400 Received: from mx0b-00069f02.pphosted.com ([205.220.177.32]:10054) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uYoVh-0004zU-AM for 78935@debbugs.gnu.org; Mon, 07 Jul 2025 12:16:09 -0400 Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 567Fkrm6011568; Mon, 7 Jul 2025 16:16:03 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=dinhkwEW5H/xw5doWbKDiKGBVRiIMu0fnPck48cO0WA=; b= a5oFynV/ZLPl6zGZoTY9kbJFun7iidaorGp8yqVuai6+pzkhkgZeNCQeQRGIqOAZ L4ssMkghl4V+N8VrTfGvEuqtcn8u7YUv9Tn/aeW51BJVAAMuYWbfN6jZ2fgiZLiX V6SVxLACo72Kr5tNDr3xu+hsu9n/KGu6Sp+e50ErWCtZs4ZI522i+jWqLVtQZN4e snllw4+cclT4coVra2BKwJ70QtTKAzoZgiN60J8gaZPRQ2c864Q26bBEdOd+33Zu iKkc8TAYGb3y+noUlKZfbegHC520Uiec4vza6Eq43EpDPDv2GvW4l8PPR2Axkvqt WCJsRrRCV1dKBoEDdJr30g== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 47rh67g2h2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 07 Jul 2025 16:16:03 +0000 (GMT) Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 567Es0jQ027303; Mon, 7 Jul 2025 16:16:02 GMT Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10on2085.outbound.protection.outlook.com [40.107.92.85]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 47ptg8ecqr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 07 Jul 2025 16:16:02 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=uVyGK7LKbNbVOSDE9a6Ju7o1eNx2TEXjJiPMpAFjpA4DvPLOKSI1X9MZ70GKSPEjDsMpAkaLdIRfLMYGGQ1PGZRmYxs2AvJNePtrWagmiTNFSxjMwXpabfTHtjtHH5JdY40JcSKJTu33f+uOE3pC4K9wQufslTcKcLVFx8gLWPPEbFCa1iZNJAEY64e5U9OYoOwvr2fVBe0ndytj3qgGzKlR2pXuoUF28uBlPE19Ln4HRFFOBccZUJz9++Jy6A1GgRLEAo8+WDbxNHWmrSdaUtvhuZT6aZ06RJyqBSR3uZEla8kBtGL4KfNeueH+Dr2fHjC3XjFAVPnLAdRwW//w7w== 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=dinhkwEW5H/xw5doWbKDiKGBVRiIMu0fnPck48cO0WA=; b=nBMXdQWB7EwJpnSkh6heAbE06dERrHywlOeihkbl2oQ4n76DFsRkGaI25r7ZBlxijLGovPHrbrDQhBvpnVYUeBBSrGIpu/PXUPaoPfJ2OHnkcXrz8MuBt4R3zHI+0sDnBptWLEa6DXacpS4QUGWK8Zsx5VzaqQbUFexbbfMkLWriMg90pJ33xkt9rycXFNGwFqiywmMk9WMqxW6dI5rOiS7LqOXOXHBkncUKe4Bp9J1TxNskgMakvE0bZBi6eKnZJTtJqggN5fE9ridJiPzPW4Aqnsw/47N4MBTfWRc06XLTwb9iSMbwfnR5zgKdXCXG3ifmlZmkWfRT/LimFuNo6A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dinhkwEW5H/xw5doWbKDiKGBVRiIMu0fnPck48cO0WA=; b=K+k1wQg7MeCldRssEj6WMuPJcNSsdeqYstR3KRzye35svFC3VFgXjYZRESYbYDrfApY7pCS0AZKvAFsj7K7PRvJMRMzGNBUO83MUj1CZgs26NI5PlbTokQfxyYHZtdBTVnb3KzgRzoQR3k2j10OIHNjVXEWyIPJrN4K3DpwthRw= Received: from DS7PR10MB5232.namprd10.prod.outlook.com (2603:10b6:5:3aa::24) by PH0PR10MB6957.namprd10.prod.outlook.com (2603:10b6:510:285::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8857.37; Mon, 7 Jul 2025 16:16:00 +0000 Received: from DS7PR10MB5232.namprd10.prod.outlook.com ([fe80::8303:658f:14f8:2324]) by DS7PR10MB5232.namprd10.prod.outlook.com ([fe80::8303:658f:14f8:2324%4]) with mapi id 15.20.8901.024; Mon, 7 Jul 2025 16:16:00 +0000 From: Drew Adams To: Eli Zaretskii Subject: RE: [External] : Re: bug#78935: 30.1.90; [PATCH] Let Imenu optionally allow duplicate menu entries Thread-Topic: [External] : Re: bug#78935: 30.1.90; [PATCH] Let Imenu optionally allow duplicate menu entries Thread-Index: AQHb71pC2z0yIHt3OkKoRs+ZjLkzUbQm1gIA Date: Mon, 7 Jul 2025 16:16:00 +0000 Message-ID: References: <86bjpzvwqx.fsf@gnu.org> <86sejavb72.fsf@gnu.org> <86pleeue43.fsf@gnu.org> <86qzyttjn1.fsf@gnu.org> <86v7o4rn9r.fsf@gnu.org> In-Reply-To: <86v7o4rn9r.fsf@gnu.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DS7PR10MB5232:EE_|PH0PR10MB6957:EE_ x-ms-office365-filtering-correlation-id: 374c357c-1cea-42ea-710e-08ddbd719065 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|376014|366016|1800799024|38070700018; x-microsoft-antispam-message-info: =?us-ascii?Q?c3+3jUy5Cu26zk9gyJUvAzR75c9oZiZHlTOsk8iC5tLj7rR9boedBi6OSaDh?= =?us-ascii?Q?AP/C8kHYUjFP441azQZbckzQ21NOahnvS5d9xnvIU+KDEculd/AhO6WdMa4g?= =?us-ascii?Q?SLRSjapTFENJy5qMQGjau0O4b2Y9HqeGRyCMPiRjFAEkk4v5Fv2yTHyLy5PF?= =?us-ascii?Q?n+YXPVSJGMCN5bEp80Pi9rmVOScMr9yNsdRYyCsGhI2gbXjbCVXLyp92jBBd?= =?us-ascii?Q?g3N3a3wMP5xwlQMQu51Ty2Vnm2skIgsgypeMEC8eD7cwzx5WAG1f+9LHjj8B?= =?us-ascii?Q?U1jLapckAW9a/3iF7Vntx/2IOl3+kshkNewCrpZKG92Jh2Slv6X0T2RJonl0?= =?us-ascii?Q?OmA5ia/tVYoIPo2FNx26y8QCbaHocY0f5N1JE+HGC2HVOMaeErTee+HsRBgS?= =?us-ascii?Q?hnNwdIYlnojPauVdMDMWPb82WZ5icJ7u9Y8/LOBdXMmz/4jGAHApxLzNl8F8?= =?us-ascii?Q?VBOzJRSVVKiyL/gI6M2aknKw4+IBA7JthLwLxZ5LgYTzkFUVJBZY/F0aRdLc?= =?us-ascii?Q?gQrxot7L4//LGLoDOEd8dJvebTg05/BacSY4QYWOJh3RmPHv/Ri0KzCn4vL/?= =?us-ascii?Q?6QhJ5C4CthKTRF6LexcyiURjW4ryiLHzM5JQ07WDtI6BGeH+DdFrquVqfNvG?= =?us-ascii?Q?G+1rIQR6z/vdFPPJxUxxufql1EPGvdBdmw3mHrqtzM74K3u/N+76Mk3lDICT?= =?us-ascii?Q?kOnUzp/ClQxHJZcAZBn6TYgXoriHQp7kSFpKG9gNCcHuhmMP7S6Z2MTM7Xmk?= =?us-ascii?Q?fjc2YThuoXBUB8KOn9xjtx4QbKAQdwXsqe9hITG0oyarFUZU02b2sa8H4hu+?= =?us-ascii?Q?BUgMKee4z3MHU0hNTA4WQSyeaFi7S6odU7eSGgyIU+ixd9X2iZWe2UuXBShu?= =?us-ascii?Q?LUed9e2OBu2CxHdrgnFVUTZCHkW/lVh/HCMFLGNUpUwAFdaI5sVHBnoZsIR+?= =?us-ascii?Q?/bV9SvWcMYz4At1nWHL+dhukPg/fsVCJd0vF0cwi20seuwDKEuXRHWA4dQqD?= =?us-ascii?Q?CXgWFLWjh95P8VNlgWz+4i4KhZdYy7sLrDI/ar+TMANfm9zlIvzYuY+2g/y9?= =?us-ascii?Q?RQQUxvxrpuOtPg6c6ZdDz/bFmIAXSZi0IJtppTj++j8/7ihDr5cj2nk548Vo?= =?us-ascii?Q?5Rs3Nf3G2UhkbxxL1saoll58UyAfLV0DOBgA6xHhx/Ck2xtlRIYgFZ/1RZyb?= =?us-ascii?Q?AxCa+7831XqjZXvXwsbfC6YMvuSgSI+S+m46XTnEoZb10wjrJwVVHmxaiviv?= =?us-ascii?Q?Cowk7qpf/bfZ+oemTKdBcJpQZ9mlD5HckrSZ7l51fq9mzHJwGg81+SBAOBwp?= =?us-ascii?Q?4lJlmFoeRciELQSGk2AfRJ10yYSGTStHhvHh5C7CYEM5+iII9DpCMPFGV+01?= =?us-ascii?Q?GAmHnMj8Xxl264Up3QGEOx5G00a0roLUuK6HcZ/rBRukCNlo7Sc2070IK3rK?= =?us-ascii?Q?NZ+5Maf5sptAqLPHLzjgnmiV8gEMo0Yb2aFuIfihtpFhC9X8rXnvVw=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DS7PR10MB5232.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(366016)(1800799024)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?2Of7SE/0V7CELTzougAEaAVheXIWvKWW5YHbf8jHbNX6RcAdPi1dJutRl7ZT?= =?us-ascii?Q?C/Ke5vRfWOaknuPq6D37E1cIm26/Yg/bSvvUvKpN1+fRenixgwtBGD0IKDFf?= =?us-ascii?Q?lOcxO6iBlDzhsCeFLUcS3Yokbz9tLzkaIWngBVpAoa1yEa3CBQYfcPiLCiDQ?= =?us-ascii?Q?8vZRLLfQbAczPRZwcd/ZATMyVz4lKAxwamJ5tRemvbXs30K6PYu1nWo32Tyx?= =?us-ascii?Q?a9xmeLaDjQDlTUEGxPQLQN7aP5GGVz6hspzp4MJEijMY3uCDIz5BVQgRTqUA?= =?us-ascii?Q?sP1RfOFatelXIjNF89cDHv+GU0FNU/wdhSMFSTO1zsZ+Pa4MnRkc8t7qcgOl?= =?us-ascii?Q?a2ap+rzHVtnAuA+yBDpYjMxBkbVt5xgyAtbtkvK2fhY5cceM4CZ7qqlff60x?= =?us-ascii?Q?MQSbjTl6lf6QgZ7txhSqKEPLl4diB8cnC2VRyahpgW0xuzgYbaJpYiFeN/UG?= =?us-ascii?Q?4+rG7vXPTv4N0Fr2SOrtHdfx3a5Ph5eTJeBS+hQSnCdyU+XfiO030WVhrsWq?= =?us-ascii?Q?A7ZrXO42+N+HsvyvDmoIklUk1C8k7QjvWfkYCNC9pBbFfWFfrjI4qAYqtPiB?= =?us-ascii?Q?oKbPyGo41G2zcoRmIJhDBcz4dLkTsgdrD1B+wH0CQdozUZMQCUsBFtxw0F5q?= =?us-ascii?Q?7q5r8GlnZ2WqMftzhMzcnwAOlxGegcKrwkDNvFNan/Jp7wOC6Mhb23l4pN96?= =?us-ascii?Q?yNX/zo7aiJGXv1ETrmbLSF+WySRVQG3aZsILkOCzMWA64IE0SsYFBh+Rwrsa?= =?us-ascii?Q?IetHtcfgnxV6gG7+0vwcOAd0j8dizN7IVxu9qH/AXL9AGg/7lISpqnTeWUj8?= =?us-ascii?Q?kWNQqn+FlCKFgaBzlR4OP4nHdS9V6+CRBXy333tbJfNHx1oR9UG3COxrBoER?= =?us-ascii?Q?nxLZMRnRc1C+x3V+REM2ahLg3MvHNWHvB55PFXzny3kjiTMq8l1RhCwWHUM+?= =?us-ascii?Q?QwGLN85DVG/2j6vigTOawTxaoN+YPV9CWB2St6tqkXoq3KusXMtFDo8+35OM?= =?us-ascii?Q?k+muOSkFjrNPOsEhP1WheSQSzBBhLTuvWQ0UkBEiGpz2j569xOJCd1GQ+7Ki?= =?us-ascii?Q?24MASO7bGrcSzxVoM5fVbzYvIAyEgiDynEgIOoa3c4CuLZ4agPomDoc/LFbt?= =?us-ascii?Q?oGY1SIz+RlcrjWs9bllAt21UG+TlxZ91OpOn8iHI5E9KFJcnMrL2xDlgOKX3?= =?us-ascii?Q?ijtK3htFpZ+g8UBAATVkR7rW1f+CCI+1xWg8PkBLCLaqD5YSRnYN+x+JqSnC?= =?us-ascii?Q?Q+szzsDt5uBqxzoIFFCwLUFtzFWVqOw0BvSuxirJ/IR+PK8hB9R6kUFpPGVk?= =?us-ascii?Q?o9SYojqevWX3YPnA3XBKvJdhpWwX3hyIQ5NGCI6hytTATt3mWwk9LG6Whk1b?= =?us-ascii?Q?43L9IkiXZoBy9IKNMd59l6/xzVtDe4xSU7tKBPAwlmlGGfZxcOuEacePHSWF?= =?us-ascii?Q?t48aeTnPHmhqIblFt1gJlDO+cBenFsvaRl1UcXmUPV7M0EE9Usd0ib+T2ySf?= =?us-ascii?Q?oaP2CUj5fr/j1LNu9ZpvekcoFtUp9b9mqQegIb5Vm7n82NjpTPz9PDmuYbJZ?= =?us-ascii?Q?xvlerJ/fsyGWxuH/0rvW5k6cmxaS4GS6y4OtaTh2?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 6HpQI5aIwYJIh6RqlZD4uyGvUY6GPMurnSa8sTkg1DF6olkRZM2uNHRHxiU1iLaBA47gvqVe1q1YUM2LX/BvKOfewD3N8s+Q4kPO9X9JGTO8EQeFGsFSkKrXjaI//aI6SU9t3pebe03ZNdoIz14b9CgnHGIdsoXRzN5TemYw5Ng+eCpk7UYnVutTR+JuYYX+Cz0ClIa0l0CJTwOvuSlpvCifpHecZxmr8oGolPJALmRc3wBHxPR/zHmAop8ojMat3UQheeuKdHE7slSXLARcvohbfq7Lv1xOU4hrDXKk6C3RgbuLPJEKV+A+bvejKzJhxwOkVYrXc/ccrXll4LrdsvGvwWGoY1oogeMdXy25odv8x8LoC7yr2e7teUF7TCD9h7FtUVp6FICIKBVTECe6BOW/tLc9GNpr6zUkkwqB3HVET5fxZ1ek84KdW+IxCZsm7Fu9QPLqNm3OxFFs4arFRzui33pnm9L0wF1VzQRH0wgQEV2+lSVE3VeNrfqfxSkGosZq9vCLR3R0UWdUWuelMU6N6fX7IHO/89T17OgzqfbMiz1WVABlzE3/RN0m+K4MqGFn1j9mC0Y95UirEA24f7Eut4jmUDCltF9lpdHQ/wY= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DS7PR10MB5232.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 374c357c-1cea-42ea-710e-08ddbd719065 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Jul 2025 16:16:00.7696 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: b1THJtHhYwa+RsUx1xtgZUYVbZfCaNI0KI91jzFnmTHDeDLDcn6Mqb6T/xfntwABeZrhPiMrN8T7XizvH5ebOg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB6957 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-07-07_04,2025-07-07_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 malwarescore=0 adultscore=0 suspectscore=0 phishscore=0 mlxlogscore=999 bulkscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2505160000 definitions=main-2507070100 X-Proofpoint-ORIG-GUID: eQ-exQxTVKYh6ET4CTLgyiBleFcaNhMV X-Proofpoint-GUID: eQ-exQxTVKYh6ET4CTLgyiBleFcaNhMV X-Authority-Analysis: v=2.4 cv=PKsP+eqC c=1 sm=1 tr=0 ts=686bf2c3 b=1 cx=c_pps a=zPCbziy225d3KhSqZt3L1A==:117 a=zPCbziy225d3KhSqZt3L1A==:17 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=kj9zAlcOel0A:10 a=Wb1JkmetP80A:10 a=GoEa3M9JfhUA:10 a=DVP-iUlxiTFcUmyu31EA:9 a=CjuIK1q_8ugA:10 a=zZCYzV9kfG8A:10 cc=ntf awl=host:12057 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzA3MDA5OSBTYWx0ZWRfX9Ut1Ct7e/+jV SH3v5zmIDa6bRokpXHoXPC/AqL5hjc20imWGqeiWDeRPI2oUggbU+PoqN1P8GzJSU8Rvokq19aT tm3r26FaP4r74xcUjID0UWvPG7hnt5UnOZse/MCeOGPzTxKTE+7e0xkENEy36jnBOPD12zvSplM /P2QTmlR4+66EMxGtrhb/BhhyiS4ZvFIZFdWrRcC73kKZKEQcRdzUTR5N+lDAIncwX9OrtwTiZQ s5s0XatbxJFQNIiw34aJciJV857++bWSUHXgKr/gVyireK9QdvC8iTpQuyCDUHJssdjf4TI2/h5 n7328Q8fR7eAV/uNMrVFFEJ8AmnHx7WKxwfDwLVM517BrXCm0u3QsqOBhKGqeQa7xQCb7Exy9YA U3odhjQs7LFGmUHf6D2NIue7f93/BH3TI42O2B9pvtIXwVh4M1A3z/XWdKe3iwLcXxgVtVTR X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 78935 Cc: "78935@debbugs.gnu.org" <78935@debbugs.gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > > (But that site seems _very_ slow to load and to access > > subdirs there.) >=20 > I think that's intentional, because all kinds of bots and crawlers > could otherwise bring Savannah to its knees. Good to hear (unfortunately). Thx. From debbugs-submit-bounces@debbugs.gnu.org Sat Jul 12 04:15:31 2025 Received: (at 78935) by debbugs.gnu.org; 12 Jul 2025 08:15:31 +0000 Received: from localhost ([127.0.0.1]:43614 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uaVOL-0002iO-Rc for submit@debbugs.gnu.org; Sat, 12 Jul 2025 04:15:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35580) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uaVOJ-0002hs-3H for 78935@debbugs.gnu.org; Sat, 12 Jul 2025 04:15:27 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uaVOD-0003OI-5f; Sat, 12 Jul 2025 04:15:21 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=UFOQN1GBKoEos8+JW/NQNA/BxUdNa2HdQ40jQr6i2rM=; b=HWK3o5SqJK+g LpxG3+vgWtEAtRgfehtK8SYz6sjmc+4P9OcEeAOVTIDoYucJGBM9Uvz/zvNCVJlPShSZ5M7rS1NKy GV9CMydGsL8mxyOVU2gREcobCmzcwHddfMd0W80DE1sdy+mtPnvW68wyQRXWJpfA6/SE5x2UQEQs0 tSuSdIJvNPfVIG17NPkW/v2wUtNJdi+2SPVCyKTFVDvWZtTe6PNOoNxbuZUm2avms58ON5kJ64Ze+ 7mW9CZjDKkuCEQEzKW4MuRj49MFsHSp5Ou1J4a9j09WtsjyVv5vLEFM6LLZAQ0U04hUfidUukrSxd wRlml7fH0LD1/sd5Uz0Z0w==; Date: Sat, 12 Jul 2025 11:15:18 +0300 Message-Id: <86wm8desfd.fsf@gnu.org> From: Eli Zaretskii To: Drew Adams In-Reply-To: (message from Drew Adams on Sun, 6 Jul 2025 15:03:13 +0000) Subject: Re: [External] : Re: bug#78935: 30.1.90; [PATCH] Let Imenu optionally allow duplicate menu entries References: <86bjpzvwqx.fsf@gnu.org> <86sejavb72.fsf@gnu.org> <86pleeue43.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 78935 Cc: 78935@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Drew Adams > CC: "78935@debbugs.gnu.org" <78935@debbugs.gnu.org> > Date: Sun, 6 Jul 2025 15:03:13 +0000 > > > > Also, do you prefer that `-flag' be removed from the name? > > Yes, please. > > Done. See attached imenu.el patch and patched file. I was about to install the patch, but it triggers a compilation warning: ELC imenu.elc In end of data: imenu.el:522:25: Warning: the function `increment-symbol-name' is not known to be defined. I guess something is missing from the patch? From debbugs-submit-bounces@debbugs.gnu.org Sat Jul 12 13:17:46 2025 Received: (at 78935) by debbugs.gnu.org; 12 Jul 2025 17:17:46 +0000 Received: from localhost ([127.0.0.1]:47076 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uadr7-0001lv-Kz for submit@debbugs.gnu.org; Sat, 12 Jul 2025 13:17:45 -0400 Received: from mx0a-00069f02.pphosted.com ([205.220.165.32]:55156) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uadr3-0001lh-Pw for 78935@debbugs.gnu.org; Sat, 12 Jul 2025 13:17:43 -0400 Received: from pps.filterd (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 56CBVm5b027021; Sat, 12 Jul 2025 17:17:40 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-type:date:from:in-reply-to:message-id:mime-version :references:subject:to; s=corp-2025-04-25; bh=k2of3N8qonihPAb9pS 6dKWx45RBRRgx5GtM0+vZNuUw=; b=DjfpR8rsxcYh1xEkAqfXIEOnUEJDaEu7tK ekUcWLtGhQcPJsgJT0uB2kmO0HMKiGNSniudYouzXXq31X4gM0usnMd6cVjFPHjc 97Oc95TQW1+IqWChHBkT9xHYPG9X64KHLI0vDP5huIw3DDz/a1VU2kMUayRkSPqz mHLHMQyDi4vYpetc6tZDtxSmiKb5yGPEQbjSlTdiuFs3nKNrvexQjvuHSc2mYVi9 sHbniWF4tdKLZ6ptgf1eW2GiOV2zmtFzXkN1lwYPCo6PAaoZyAHcq1C+sc5jLRZD zEl3+V2+zVpL27Hw5ghSNaWAwyvbqo0V18bbZIsGAeoXfU5PolhA== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 47ujy4hdwm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sat, 12 Jul 2025 17:17:39 +0000 (GMT) Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 56CDj4dY030299; Sat, 12 Jul 2025 17:17:39 GMT Received: from nam04-bn8-obe.outbound.protection.outlook.com (mail-bn8nam04on2054.outbound.protection.outlook.com [40.107.100.54]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 47ue576yqq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sat, 12 Jul 2025 17:17:38 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bAHkaZW1Ni31qWK214QcFk0Pr6JvMep/CTl05/E9h0itkIVtPWbJk13UWDWQgHha/TvevuCe9EfoRj+FhjlJvTGCHWfyUjTNGNGTnKsOfmHZ/q5+LzvwUrbp5Ehv3wqCtrE7PLXcyLu0Xi9H+YMKGSJ8gPvMyZ3bCmOfuERnQaV17y09oONH9GJ3KWkarkrIlzZntSmObF3P+5vxhtEEOXSOMribKQVUYIjfbGge1GTBpbSaCizkoWnKkOwJfHl2VxEhGj1jOqMtPZD0u9Ok88T8+tR/B+wfombIxnmtpae7b8A3QaaTHEPUIBPQz1dgnsy1Lk7Ek3mUKMuDIkbjdQ== 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=k2of3N8qonihPAb9pS6dKWx45RBRRgx5GtM0+vZNuUw=; b=DGzG+4eiHmNVH8jcawFmt9yvQuhBQS5NI2YIrFN9QbsqpmAd2TbjlObtdaGGDjnGsQ3CtO1wjXwNmFnXN0KLo/lm7N2NSbJ2s1Awja/JvjEahdj2QXY83GlHa9uD4jfajNYzXqCrf8Hd5cPSGisI31d+79qMP7BDr8LskZ31k1/sx6DTgEe9VTa17WJgrilVsDBQn2wMIj/8QuvrQMU+aG9tqoi5XZcncHHH+WQLrgg2I57qwkBVBIT4SV3+de0/5CLXu7KM5e8BF9AQ1SpNy4NowhaPEppE3WjPukaBG3SIU9RgmyM3Y/n1pDOnYufU2hoSlN31xs1z14juyKbXyA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=k2of3N8qonihPAb9pS6dKWx45RBRRgx5GtM0+vZNuUw=; b=zEpl79gwL2tBKC0sZYmtQY0Q6g06iW9E9bcVo57uRK2PXBPYSDod31DlKtJdRF0XqlHcolHc921Qf9FYHW98PX+Cq3YWurED6mwYomn6NcaH8SmGIVC9DUs9lNzbV9bWRn8bCLKm3VLoSSTtTqLzsI3dCeeev8uPCkfqejzgdtw= Received: from DS7PR10MB5232.namprd10.prod.outlook.com (2603:10b6:5:3aa::24) by IA4PR10MB8755.namprd10.prod.outlook.com (2603:10b6:208:566::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.28; Sat, 12 Jul 2025 17:17:36 +0000 Received: from DS7PR10MB5232.namprd10.prod.outlook.com ([fe80::8303:658f:14f8:2324]) by DS7PR10MB5232.namprd10.prod.outlook.com ([fe80::8303:658f:14f8:2324%4]) with mapi id 15.20.8922.025; Sat, 12 Jul 2025 17:17:36 +0000 From: Drew Adams To: Eli Zaretskii Subject: RE: [External] : Re: bug#78935: 30.1.90; [PATCH] Let Imenu optionally allow duplicate menu entries Thread-Topic: [External] : Re: bug#78935: 30.1.90; [PATCH] Let Imenu optionally allow duplicate menu entries Thread-Index: AQHb8wUgivRg2ei7lkSbvJgrj4pqFrQut52w Date: Sat, 12 Jul 2025 17:17:36 +0000 Message-ID: References: <86bjpzvwqx.fsf@gnu.org> <86sejavb72.fsf@gnu.org> <86pleeue43.fsf@gnu.org> <86wm8desfd.fsf@gnu.org> In-Reply-To: <86wm8desfd.fsf@gnu.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DS7PR10MB5232:EE_|IA4PR10MB8755:EE_ x-ms-office365-filtering-correlation-id: ff495a01-fa38-4d5d-11dd-08ddc167ff23 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|376014|1800799024|38070700018|4053099003; x-microsoft-antispam-message-info: =?us-ascii?Q?RfAJw9bUD3URxF0ExJEMIsPsjGl60hW3JLM+AwVPNL5b8RAB7EvdOiAEfLJ1?= =?us-ascii?Q?EXYgQ6UzVwXUuJk1Mk/9/7TDdIhJ7kYTL8aRW2pU+UQ1VBpEirIhlQyHF3cV?= =?us-ascii?Q?q2hB2eCIKYw36yvQ9qTogD/yJ473h7CNnsMeBRd3XE47p9X7K9k3OZUYDt4Q?= =?us-ascii?Q?ZCzAPaTabiHe+otJAIMuVOrGIwZgno/ddJ1friTs4v0+wAJwhtLgyr0bEU3L?= =?us-ascii?Q?P12950pIaF7lxQjSFqWNrfWMEL59WjsO1Q4Wl4VFUXG5KDz1HgGh+udumVbx?= =?us-ascii?Q?fyDqO2iW9iSfAllVFGpjjWnIUeGvDm8ZZMhiaV54btgSgv6X76I9dWXLeYFE?= =?us-ascii?Q?XyTFgOrDqNdUdhKrFGXXcO3HOJeUIQVa9JgwGCDWGeE2KYq5cd07WeWghaUp?= =?us-ascii?Q?U4YJArqTTi/iBo8C0hcbD0jbdTsfzu8drbV4h/+u/rKobHCIFizykjWypZyJ?= =?us-ascii?Q?mI8SD8D/M2jAw5Flk4eys3q/KX/GSv9Jg1uX8q2bB9VSN4fq3OV6M4jT7ds6?= =?us-ascii?Q?FLP9ajBwkpptkJ0nQLT1A0oYvtYCOotf9MO7N524ccdShzCnieING62HX9Ky?= =?us-ascii?Q?CKpIw/1Jj+XHYGogtHi2wj8dQDExy23VdnjSoO+l0dD5nrBSa3O0bDih7URm?= =?us-ascii?Q?B+L+0aNAY3k57jXnm6HRln4eWiqb//y300F38p9j4Tehyd9ZF4ftFn75ZxSh?= =?us-ascii?Q?5qh4GA//bysepOjBfRM/0HkOEinVdijHHP0v28modqNfb0hNsaE+/+HeIElJ?= =?us-ascii?Q?QXxVhgurD8wxYteG4OmISsF9jYEHM/w8N+q6NW75lM2sDJvtOZr+gLht3pwy?= =?us-ascii?Q?yWr5R1/xID/y4+pQQozijMMIp7X/zGBdCO5rbxBzDUyof/KXhgzQ20zcVJAS?= =?us-ascii?Q?O+5m+nSDT/jPeaMruRsJzDb9xFYJ1a+o97e9TYmN5R+oZLOAzxcAIU+jIKb0?= =?us-ascii?Q?GIfonIadIpgWJ89RlD5E5MixsRh8b+cUwWQO4lzAyCkzNHjL5x8XDZUlkCrT?= =?us-ascii?Q?jYxfbVgcwYx25FTmjHCcw9S1TQf+IeHN1dgQy7IBXC+SFQKolRYyhMTrVOgS?= =?us-ascii?Q?AGs/Mu2fLVpMDzXXKYtyEOzMjcmRapXr96PcsTfhLiBh6kIUf/GZQCm72N06?= =?us-ascii?Q?bKUkGQ/XFprSVX6+MP133AQonRQ1LyY/Oy14ON0V3QQ46hYyWMrFWdQKsmqK?= =?us-ascii?Q?6IMXIpNZWplRIhk8Vwy90Mg2DHfOJE9HqtQ1OobqWYSh31dLJZzT4v0dxlY7?= =?us-ascii?Q?bR+/Fw/EZwzF18SxP/gZa+/omkdZk+467jzV9mf8JJ7LOA62AypUsXWLuy1q?= =?us-ascii?Q?qktO8UJqDEZQBLnjai1x7aHEolW9/3Bhmui0Cs5rim7GkrDyWnL9I1QxJsR4?= =?us-ascii?Q?H7NiUMTspOHUCv+mx9HSbLSETIpdRdQ+/0pUK9VzC1DVcgHWDg2XNF4SzsQ5?= =?us-ascii?Q?D+TVTyW61GvQIhP0ef3QmCvKeo3aku2CpXHELOqp45umG5kfQ/h4IVyXzlaI?= =?us-ascii?Q?s9XhzoYXgA8DPjg=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DS7PR10MB5232.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(1800799024)(38070700018)(4053099003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?ewC62LO4TqCdBT99HotKZXXCP9tgsB5Bhu2sfskqp/o+evZjs2dEmz2VbeJr?= =?us-ascii?Q?fKkZqiKMlgFUbFO+OgihmdrY6wGBpWGNBrUnslG/OjZwa8ZmBOX+KdClo2oD?= =?us-ascii?Q?hsDqDlzAvsW5Ip8lscUT8IvyThBpFv9+MneCwdmXU15ocz6Xy+2LTRwa1Cn4?= =?us-ascii?Q?e7TByymGfQ6RNd3e1VgdY8WV+qw+tcBAH7kd9OtKomWanM6nBbk5qrQufvaZ?= =?us-ascii?Q?DWhcTovxmN7QgjlcdHB9iblrV/N63/WhP3Sw55oAqASmyzaxliL73g8JAbY+?= =?us-ascii?Q?nqc8cgEuDaDCmdTSwXiRVmZQ4fRw/R7u6hsIv4n4DyDGxKz51Cit9PASyDmz?= =?us-ascii?Q?RVhiOGLyNXm+/ID+GUtxqjHx6QqsYdklFLL0Y3EXa+U+gOYvW1YMqHxDEQfW?= =?us-ascii?Q?H87n2DtGlAiyKKl/7PK3NEa22Rh1PXgaIBplRSNMDbpu6HMuvOBReLn0Zt22?= =?us-ascii?Q?YuHs6CYASrdB7pSGjnrL6iUQVDJMnQFOCw6wUVorNawYLOMcC97mFL6o0VJC?= =?us-ascii?Q?OJs2tcRJ5w/jKF3psborWBU+ZlLD09rlJUREyPWEMosGxj9J2Jv3L6sC5fVy?= =?us-ascii?Q?DMlUNqv8P0azCD1tOgU/o4YDOt9AadnQkX+uooW0zDLr6kOP4JA8UhjKaZwr?= =?us-ascii?Q?ZJhiWroFFHOoFV4WDOXqbW3feR2LzJ3l78iCeTRxBc0UTsL4k2d3hPV2zi8H?= =?us-ascii?Q?2ELKvtDcs58BUTCLHxcvolOcf+MMdgOYsALx4f2HpLe7UV/tz2D0lfXfVAY1?= =?us-ascii?Q?4wy9sOW8NKMkvrXAx/in3RiQ41QoSDAOsmHctR/RO+V01lYZ9j4pz7NiOG2F?= =?us-ascii?Q?EN/rMh33Pv6y1wECZ5UPmZwM/3moDMmYBucQleUOIesHe0q0lNi5x6gHreN6?= =?us-ascii?Q?od7pThECGAN31dLzXV3YcbY2YFqWBTZpLT/yFyIEgFXOpAelOeF8EEFm93Ng?= =?us-ascii?Q?2D5zpT9tEFyQdxU3OG+h6CelII3IM7oQ/f1irSYGAd6R9XkxH6nJQ9f3qJKR?= =?us-ascii?Q?1IRpNH/bCPth23C6YdXzfhEYRlksw5gl3okIwRb8EGNgOZmqMryhnkY+SbgO?= =?us-ascii?Q?hNpRhmu+gaCikigTOUYWaef1YFEicZYOmhoE+99kzMFFAO3V933vq+fa/7iZ?= =?us-ascii?Q?DIcGuy48PmBoaKEI5YtDQV6G5k+UVKAkYUV+Ge9qXX+nyNNylZ6FxbMk5mP3?= =?us-ascii?Q?OgD/6s2vK7ADdWYcgUD91LbjaFu4aPpiya8jUYhHc1tkFzcC0u6yd4FdpJ57?= =?us-ascii?Q?yD8SAH/hNmYy6ypnbSfDnNPmynDmzXy+ukIWoUElOn2HuquufLJgk5l+v/O2?= =?us-ascii?Q?5TlZNuSIHT6SoN3B0UVzRPvy1vN/9qKz6FpRIYt5s8scRrBfyCkNaTDqGwSL?= =?us-ascii?Q?LJapBZ37pCz7d4s6V3P46EPgAvHCN/FVCK9BYYPW43YPiIlUgmMtlFDpZ2wk?= =?us-ascii?Q?1VWxmnG0z0Bn19cYpov7aBgC3Bd89WEkXbphzs1aFwbGbmzJaZI6SMvceQ6t?= =?us-ascii?Q?NxhTR7EO4DWfC/8gFmmfG/MuOBgPCFhWh3oPRwVqEzGlGyIow/E4E5S+BgpD?= =?us-ascii?Q?VUqJ1BuZ9o2AlrWvMCvJ/T6eBwbrB+6Snc1hWSta?= Content-Type: multipart/mixed; boundary="_003_DS7PR10MB52326E333C6F33F2228FF0EDF34AADS7PR10MB5232namp_" MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: onD0PfZSGPGRrbdRzDkjuCZsW/O6j4P6sHakLDW2apN31I3lGrceJ12/DP9Kn+iyUvJNRJdZcec1xpYKNR7kdYI7wiyMNvow9mcyGUq9pfUFePXUTwMLuO89GfKQyubx/iWFFH/niHVZsYOjykfeF0OG5xj2tdJWke+ezMntVxXepdvLW7LhKFAESXWTdGoKucbGEtQZ6oWKAOI4dwKwgEKZmgpqN1LxtdU3PEZzAluM2dWdbAuX32PAc1sOIyYgCUhqaXND/QT2EOlwNlqc7+c3ow+Gi0JSNPcuWWYaAo+hUDaDXGnM+HBhH3EMPgdWkTS8Zgb6IWyDVrg7qdDcI/kgDGEBipCVM9/VREStziVymzDHK4vw/pcvuX1wjAuEnr9pUvfhvKt5CjLykLGUEbp21Idx26Gym8ro1SU1HKQOgSq/vT/zyd/cUBBw26a5/1XYAWie0gsEBgx9zPEur0GvHxDHpGbn/e+xjzw6ihfV/pqKpocc0ZkyFd1A4asciPZTA2EzJcf7fMlzOOero1yBrvVSF4/pdgrZeCrMvnetjXSf84DrjRPHwusuSTnwcBk5yQBMrrWfXuLbw12bQdeDcbMnbZ8rwHQI06SmDjA= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DS7PR10MB5232.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ff495a01-fa38-4d5d-11dd-08ddc167ff23 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Jul 2025 17:17:36.2453 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: CDXah2k01z9AgCwq0zu9C34BlDhfTHtv++4tMTHFgpjjNI0/p2jD4W4TP1wSdtK+3oKBHgDrUYZ/Oz8AHLFcuQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA4PR10MB8755 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-07-12_03,2025-07-09_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 suspectscore=0 malwarescore=0 bulkscore=0 adultscore=0 spamscore=0 mlxlogscore=999 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2505160000 definitions=main-2507120133 X-Proofpoint-ORIG-GUID: wFuZY8f12zve60Jl0DRIxSiTOJrVmQ3S X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzEyMDEzNCBTYWx0ZWRfX+UUTikB9c9er phBN1YWAIytr3ENOoe02UdqhK7tf42s2+Bnpn9Xy6/9AT/3/QDY2VeTOFoW3GipYNt9leucv9BK 8KhkPdagN/R5TgMhDa0KwTgAuWLjbQ/54ndNwYAEYX0Y0XDY2mGjhuKKown4LNtjS9SKkxBN3cg Hl4W/vNYvZnPtxValI6shnonho9BH6Fx2jyF02PoYGxzrlCQNT2Qp8eb1p+0D4+VlNtQmCOWV2R UJKahBlJIlxuSwHL4AQdZ1fpVFkeA4XJy44JuMFEkdKbdqASaNo+xQUOy5K0U28R2tXoL0ENBGc Y92QlJBvidMruztHYUzY7poUQ71xosDpkevDnNm96fOIQQhrC3IHZcJqeXUKXjBw87jjrWbV+Ea MP1qrYddeZlzJ/J6+5Iv6c0rPcEOQvpXs8v/zjWWkAMo6ABeTRuSf/55mxcmWCj4AxZmjCSG X-Authority-Analysis: v=2.4 cv=Xtr6OUF9 c=1 sm=1 tr=0 ts=687298b3 cx=c_pps a=XiAAW1AwiKB2Y8Wsi+sD2Q==:117 a=XiAAW1AwiKB2Y8Wsi+sD2Q==:17 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=Wb1JkmetP80A:10 a=GoEa3M9JfhUA:10 a=_s-cdjwloMfXoFQBL0QA:9 a=CjuIK1q_8ugA:10 a=Ys2oqbKgLmsZ0jPaSYUA:9 a=B2y7HmGcmWMA:10 a=ViaV3LbfO-Ww_wTV_UUA:9 a=1OfwrDeanrQA:10 X-Proofpoint-GUID: wFuZY8f12zve60Jl0DRIxSiTOJrVmQ3S X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 78935 Cc: "78935@debbugs.gnu.org" <78935@debbugs.gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) --_003_DS7PR10MB52326E333C6F33F2228FF0EDF34AADS7PR10MB5232namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable > > Done. See attached imenu.el patch and patched file. >=20 > I was about to install the patch, but it triggers a compilation > warning: >=20 > ELC imenu.elc >=20 > In end of data: > imenu.el:522:25: Warning: the function `increment-symbol-name' is not > known to be defined. >=20 > I guess something is missing from the patch? Ouch! Really sorry for that. Thank goodness for that warning and that you noticed it. The correct files are attached here. Let me know, if see another problem. --_003_DS7PR10MB52326E333C6F33F2228FF0EDF34AADS7PR10MB5232namp_ Content-Type: application/octet-stream; name="imenu-patch-2025-07-12a.patch" Content-Description: imenu-patch-2025-07-12a.patch Content-Disposition: attachment; filename="imenu-patch-2025-07-12a.patch"; size=2466; creation-date="Sat, 12 Jul 2025 17:11:37 GMT"; modification-date="Sat, 12 Jul 2025 17:17:35 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtdSAzMC4xLjkwL2xpc3AvaW1lbnUuZWwgaW1lbnUtcGF0Y2hlZC0yMDI1LTA3LTEyYS5l bAotLS0gMzAuMS45MC9saXNwL2ltZW51LmVsCTIwMjUtMDYtMTYgMTA6MjM6MDUuNDY3NzIxMTAw IC0wNzAwCisrKyBpbWVudS1wYXRjaGVkLTIwMjUtMDctMTJhLmVsCTIwMjUtMDctMTIgMTA6MDI6 MzcuNjczMDQwOTAwIC0wNzAwCkBAIC0xOTMsNiArMTkzLDE3IEBACiAgIDp0eXBlICdudW1iZXIK ICAgOnZlcnNpb24gIjI4LjEiKQogCisoZGVmY3VzdG9tIGltZW51LWFsbG93LWR1cGxpY2F0ZS1t ZW51LWl0ZW1zIHQKKyAgIk5vbi1uaWwgbWVhbnMgdGhhdCBJbWVudSBjYW4gaW5jbHVkZSBkdXBs aWNhdGUgbWVudSBpdGVtcy4KK0ZvciBleGFtcGxlLCBpZiB0aGUgYnVmZmVyIGNvbnRhaW5zIG11 bHRpcGxlIGRlZmluaXRpb25zIG9mIGZ1bmN0aW9uCitgZm9vJyB0aGVuIGEgbWVudSBpdGVtIGlz IGluY2x1ZGVkIGZvciBlYWNoIG9mIHRoZW0uCitPdGhlcndpc2UsIG9ubHkgdGhlIGZpcnN0IHN1 Y2ggZGVmaW5pdGlvbiBpcyBhY2Nlc3NpYmxlIGZyb20gdGhlIG1lbnUuCisKK1RoaXMgb3B0aW9u IGFwcGxpZXMgb25seSB0byBhbiBJbWVudSBtZW51LCBub3QgYWxzbyB0byB0aGUgdXNlIG9mCitj b21tYW5kIGBpbWVudScsIHdoaWNoIHVzZXMgYGNvbXBsZXRpbmctcmVhZCcgdG8gcmVhZCBhIG1l bnUgaXRlbS4KK1RoZSB1c2Ugb2YgdGhhdCBjb21tYW5kIGRvZXNuJ3QgYWxsb3cgZHVwbGljYXRl IGl0ZW1zLiIKKyAgOnR5cGUgJ2Jvb2xlYW4gOmdyb3VwICdpbWVudSA6dmVyc2lvbiAiMzEuMSIp CisKIDs7OyMjI2F1dG9sb2FkCiAoZGVmdmFyLWxvY2FsIGltZW51LWdlbmVyaWMtZXhwcmVzc2lv biBuaWwKICAgIkxpc3Qgb2YgZGVmaW5pdGlvbiBtYXRjaGVycyBmb3IgY3JlYXRpbmcgYW4gSW1l bnUgaW5kZXguCkBAIC01MDUsMTUgKzUxNiwyNiBAQAogKGRlZnVuIGltZW51LS1jcmVhdGUta2V5 bWFwICh0aXRsZSBhbGlzdCAmb3B0aW9uYWwgY21kKQogICBgKGtleW1hcCAsdGl0bGUKICAgICAg ICAgICAgLEAobWFwY2FyCi0gICAgICAgICAgICAgIChsYW1iZGEgKGl0ZW0pCi0gICAgICAgICAg ICAgICAgYCgsKGludGVybiAoY2FyIGl0ZW0pKSAsKGNhciBpdGVtKQotICAgICAgICAgICAgICAg ICAgLEAoY29uZAotICAgICAgICAgICAgICAgICAgICAgKChpbWVudS0tc3ViYWxpc3QtcCBpdGVt KQotICAgICAgICAgICAgICAgICAgICAgIChpbWVudS0tY3JlYXRlLWtleW1hcCAoY2FyIGl0ZW0p IChjZHIgaXRlbSkgY21kKSkKLSAgICAgICAgICAgICAgICAgICAgICh0Ci0gICAgICAgICAgICAg ICAgICAgICAgKGxhbWJkYSAoKSAoaW50ZXJhY3RpdmUpCi0gICAgICAgICAgICAgICAgICAgICAg ICAoaWYgY21kIChmdW5jYWxsIGNtZCBpdGVtKSBpdGVtKSkpKSkpCi0gICAgICAgICAgICAgIChz ZXEtZmlsdGVyICMnaWRlbnRpdHkgYWxpc3QpKSkpCisgICAgICAgICAgICAgIChpZiBpbWVudS1h bGxvdy1kdXBsaWNhdGUtbWVudS1pdGVtcworICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoaXRl bSkKKyAgICAgICAgICAgICAgICAgICAgYCgsKGNhciBpdGVtKQorICAgICAgICAgICAgICAgICAg ICAgICwoY2FyIGl0ZW0pCisgICAgICAgICAgICAgICAgICAgICAgLEAoY29uZAorICAgICAgICAg ICAgICAgICAgICAgICAgICgoaW1lbnUtLXN1YmFsaXN0LXAgaXRlbSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgKGltZW51LS1jcmVhdGUta2V5bWFwIChjYXIgaXRlbSkgKGNkciBpdGVtKSBj bWQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICh0CisgICAgICAgICAgICAgICAgICAgICAg ICAgIChsYW1iZGEgKCkgKGludGVyYWN0aXZlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg IChpZiBjbWQgKGZ1bmNhbGwgY21kIGl0ZW0pIGl0ZW0pKSkpKSkKKyAgICAgICAgICAgICAgICAo bGFtYmRhIChpdGVtKQorICAgICAgICAgICAgICAgICAgYCgsKGludGVybiAoY2FyIGl0ZW0pKQor ICAgICAgICAgICAgICAgICAgICAsKGNhciBpdGVtKQorICAgICAgICAgICAgICAgICAgICAsQChj b25kCisgICAgICAgICAgICAgICAgICAgICAgICgoaW1lbnUtLXN1YmFsaXN0LXAgaXRlbSkKKyAg ICAgICAgICAgICAgICAgICAgICAgIChpbWVudS0tY3JlYXRlLWtleW1hcCAoY2FyIGl0ZW0pIChj ZHIgaXRlbSkgY21kKSkKKyAgICAgICAgICAgICAgICAgICAgICAgKHQKKyAgICAgICAgICAgICAg ICAgICAgICAgIChsYW1iZGEgKCkgKGludGVyYWN0aXZlKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAoaWYgY21kIChmdW5jYWxsIGNtZCBpdGVtKSBpdGVtKSkpKSkpKQorICAgICAgICAgICAg ICAocmVtcSBuaWwgYWxpc3QpKSkpCiAKIChkZWZ1biBpbWVudS0taW4tYWxpc3QgKHN0ciBhbGlz dCkKICAgIkNoZWNrIHdoZXRoZXIgdGhlIHN0cmluZyBTVFIgaXMgY29udGFpbmVkIGluIG11bHRp LWxldmVsIEFMSVNULiIK --_003_DS7PR10MB52326E333C6F33F2228FF0EDF34AADS7PR10MB5232namp_ Content-Type: application/octet-stream; name="imenu-patched-2025-07-12a.el" Content-Description: imenu-patched-2025-07-12a.el Content-Disposition: attachment; filename="imenu-patched-2025-07-12a.el"; size=39257; creation-date="Sat, 12 Jul 2025 17:00:42 GMT"; modification-date="Sat, 12 Jul 2025 17:17:36 GMT" Content-Transfer-Encoding: base64 Ozs7IGltZW51LmVsIC0tLSBmcmFtZXdvcmsgZm9yIG1vZGUtc3BlY2lmaWMgYnVmZmVyIGluZGV4 ZXMgIC0qLSBsZXhpY2FsLWJpbmRpbmc6IHQgLSotCgo7OyBDb3B5cmlnaHQgKEMpIDE5OTQtMTk5 OCwgMjAwMS0yMDI1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgoKOzsgQXV0aG9yOiBB a2UgU3RlbmhvZmYgPGV0eGFrc2ZAYW9tLmVyaWNzc29uLnNlPgo7OyAgICAgICAgIExhcnMgTGlu ZGJlcmcgPGxsaUBzeXByby5jYXAuc2U+Cjs7IE1haW50YWluZXI6IGVtYWNzLWRldmVsQGdudS5v cmcKOzsgQ3JlYXRlZDogOCBGZWIgMTk5NAo7OyBLZXl3b3JkczogdG9vbHMgY29udmVuaWVuY2UK Cjs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBFbWFjcy4KCjs7IEdOVSBFbWFjcyBpcyBmcmVl IHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cjs7IGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5Cjs7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCjs7IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Cgo7OyBHTlUgRW1hY3MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKOzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQo7OyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgoKOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKOzsgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJ ZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKOzs7IENvbW1lbnRh cnk6Cgo7OyBQdXJwb3NlIG9mIHRoaXMgcGFja2FnZToKOzsgICBUbyBwcmVzZW50IGEgZnJhbWV3 b3JrIGZvciBtb2RlLXNwZWNpZmljIGJ1ZmZlciBpbmRleGVzLgo7OyAgIEEgYnVmZmVyIGluZGV4 IGlzIGFuIGFsaXN0IG9mIG5hbWVzIGFuZCBidWZmZXIgcG9zaXRpb25zLgo7OyAgIEZvciBpbnN0 YW5jZSBhbGwgZnVuY3Rpb25zIGluIGEgQy1maWxlIGFuZCB0aGVpciBwb3NpdGlvbnMuCjs7Cjs7 ICAgSXQgaXMgZG9jdW1lbnRlZCBpbiB0aGUgRW1hY3MgTGlzcCBtYW51YWwuCjs7Cjs7IEhvdyBp dCB3b3JrczoKCjs7ICAgQSBtb2RlLXNwZWNpZmljIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBnZW5l cmF0ZSB0aGUgaW5kZXguICBJdCBpcwo7OyAgIHRoZW4gcHJlc2VudGVkIHRvIHRoZSB1c2VyLCB3 aG8gY2FuIGNob29zZSBmcm9tIHRoaXMgaW5kZXguCgo7OzsgSGlzdG9yeToKOzsgIFRoYW5rcyBn byB0bwo7OyAgW3NpbW9uXSAtIFNpbW9uIExlaW5lbiBzaW1vbkBsaWEuZGkuZXBmbC5jaAo7OyAg W2RlYW5dIC0gRGVhbiBBbmRyZXdzIGFkYUB1bmlzb24uY29tCjs7ICBbYWxvbl0gLSBBbG9uIEFs YmVydCBhbEBtZXJjdXJ5LmNvLmlsCjs7ICBbZ3JlZ10gLSBHcmVnIFRob21wc29uIGdyZWd0QHBv cnNjaGUudmlzaXguQ09NCjs7ICBbd29sZmdhbmddIC0gV29sZmdhbmcgQmFuZ2VydGggemNnNTEx MjJAcnBvb2wxLnJ1cy51bmktc3R1dHRnYXJ0LmRlCjs7ICBba2FpXSAtIEthaSBHcm9zc2pvaGFu biBncm9zc2pvaEBsaW51cy5pbmZvcm1hdGlrLnVuaS1kb3J0bXVuZC5kZQo7OyAgW2RhdmlkXSAt IERhdmlkIE0uIFNtaXRoIGRzbWl0aEBzdGF0cy5hZGVsYWlkZS5lZHUuYXUKOzsgIFtjaHJpc3Rp YW5dIC0gQ2hyaXN0aWFuIEVnbGkgQ2hyaXN0aWFuLkVnbGlAaGNzZC5oYWMuY29tCjs7ICBba2Fy bF0gLSBLYXJsIEZvZ2VsIGtmb2dlbEBmbG9zcy5saWZlLnVpdWMuZWR1Cgo7OzsgQ29kZToKCihy ZXF1aXJlICdjbC1saWIpCgo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Cjs7Owo7OzsgQ3VzdG9taXphYmxlIHZhcmlhYmxlcwo7 OzsKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7OwoKKGRlZmdyb3VwIGltZW51IG5pbAogICJNb2RlLXNwZWNpZmljIGJ1ZmZlciBp bmRleGVzLiIKICA6Z3JvdXAgJ21hdGNoaW5nCiAgOmdyb3VwICdmcmFtZXMKICA6Z3JvdXAgJ2Nv bnZlbmllbmNlCiAgOmxpbmsgJyhjdXN0b20tbWFudWFsICIoZWxpc3ApSW1lbnUiKSkKCihkZWZj dXN0b20gaW1lbnUtdXNlLW1hcmtlcnMgdAogICJOb24tbmlsIG1lYW5zIHVzZSBtYXJrZXJzIGlu c3RlYWQgb2YgaW50ZWdlcnMgZm9yIEltZW51IGJ1ZmZlciBwb3NpdGlvbnMuCgpTZXR0aW5nIHRo aXMgdG8gbmlsIG1ha2VzIEltZW51IHdvcmsgYSBsaXR0bGUgZmFzdGVyIGJ1dCBlZGl0aW5nIHRo ZQpidWZmZXIgd2lsbCBtYWtlIHRoZSBnZW5lcmF0ZWQgaW5kZXggcG9zaXRpb25zIHdyb25nLgoK VGhpcyBtaWdodCBub3QgeWV0IGJlIGhvbm9yZWQgYnkgYWxsIGluZGV4LWJ1aWxkaW5nIGZ1bmN0 aW9ucy4iCiAgOnR5cGUgJ2Jvb2xlYW4pCgooZGVmY3VzdG9tIGltZW51LW1heC1pdGVtLWxlbmd0 aCA2MAogICJJZiBhIG51bWJlciwgdHJ1bmNhdGUgSW1lbnUgZW50cmllcyB0byB0aGF0IGxlbmd0 aC4iCiAgOnR5cGUgJyhjaG9pY2UgaW50ZWdlcgogICAgICAgICAgICAgICAgIChjb25zdCA6dGFn ICJVbmxpbWl0ZWQiKSkpCgooZGVmY3VzdG9tIGltZW51LWF1dG8tcmVzY2FuIG5pbAogICJOb24t bmlsIG1lYW5zIEltZW51IHNob3VsZCBhbHdheXMgcmVzY2FuIHRoZSBidWZmZXJzLiIKICA6dHlw ZSAnYm9vbGVhbikKCihkZWZjdXN0b20gaW1lbnUtYXV0by1yZXNjYW4tbWF4b3V0IDYwMDAwMAog ICJJbWVudSBhdXRvLXJlc2NhbiBpcyBkaXNhYmxlZCBpbiBidWZmZXJzIGxhcmdlciB0aGFuIHRo aXMgc2l6ZSAoaW4gYnl0ZXMpLgpBbHNvIHNlZSBgaW1lbnUtbWF4LWluZGV4LXRpbWUnLiIKICA6 dHlwZSAnbmF0bnVtCiAgOnZlcnNpb24gIjI2LjIiKQoKKGRlZmN1c3RvbSBpbWVudS11c2UtcG9w dXAtbWVudSAnb24tbW91c2UKICAiVXNlIGEgcG9wdXAgbWVudSByYXRoZXIgdGhhbiBhIG1pbmli dWZmZXIgcHJvbXB0LgpJZiBuaWwsIGFsd2F5cyB1c2UgYSBtaW5pYnVmZmVyIHByb21wdC4KSWYg dCwgYWx3YXlzIHVzZSBhIHBvcHVwIG1lbnUsCklmIGBvbi1tb3VzZScgdXNlIGEgcG9wdXAgbWVu dSB3aGVuIGBpbWVudScgd2FzIGludm9rZWQgd2l0aCB0aGUgbW91c2UuIgogIDp0eXBlICcoY2hv aWNlIChjb25zdCA6dGFnICJPbiBNb3VzZSIgb24tbW91c2UpCgkJIChjb25zdCA6dGFnICJOZXZl ciIgbmlsKQogICAgICAgICAgICAgICAgIChvdGhlciA6dGFnICJBbHdheXMiIHQpKSkKCihkZWZj dXN0b20gaW1lbnUtZWFnZXItY29tcGxldGlvbi1idWZmZXIgdAogICJJZiBub24tbmlsLCBlYWdl cmx5IHBvcCB1cCB0aGUgY29tcGxldGlvbiBidWZmZXIuIgogIDp0eXBlICdib29sZWFuCiAgOnZl cnNpb24gIjIyLjEiKQoKKGRlZmN1c3RvbSBpbWVudS1hZnRlci1qdW1wLWhvb2sgbmlsCiAgIkhv b2tzIGNhbGxlZCBhZnRlciBqdW1waW5nIHRvIGEgcGxhY2UgaW4gdGhlIGJ1ZmZlci4KClVzZWZ1 bCB0aGluZ3MgdG8gdXNlIGhlcmUgaW5jbHVkZSBgcmVwb3NpdGlvbi13aW5kb3cnLCBgcmVjZW50 ZXInLCBhbmQKXChsYW1iZGEgKCkgKHJlY2VudGVyIDApKSB0byBzaG93IGF0IHRvcCBvZiBzY3Jl ZW4uIgogIDp0eXBlICdob29rKQoKOzs7IyMjYXV0b2xvYWQKKGRlZmN1c3RvbSBpbWVudS1zb3J0 LWZ1bmN0aW9uIG5pbAogICJUaGUgZnVuY3Rpb24gdG8gdXNlIGZvciBzb3J0aW5nIHRoZSBpbmRl eCBtb3VzZS1tZW51LgoKQWZmZWN0cyBvbmx5IHRoZSBtb3VzZSBpbmRleCBtZW51LiAgSWYgeW91 IHdhbnQgdG8gY2hhbmdlCnRoZSBzb3J0aW5nIG9yZGVyIG9mIGNvbXBsZXRpb25zLCB5b3UgY2Fu IGN1c3RvbWl6ZQp0aGUgb3B0aW9uIGBjb21wbGV0aW9uLWNhdGVnb3J5LW92ZXJyaWRlcycgYW5k IHNldApgZGlzcGxheS1zb3J0LWZ1bmN0aW9uJyBmb3IgdGhlIGNhdGVnb3J5IGBpbWVudScuCgpT ZXQgdGhpcyB0byBuaWwgaWYgeW91IGRvbid0IHdhbnQgYW55IHNvcnRpbmcgKGZhc3RlcikuClRo ZSBpdGVtcyBpbiB0aGUgbWVudSBhcmUgdGhlbiBwcmVzZW50ZWQgaW4gdGhlIG9yZGVyIHRoZXkg d2VyZSBmb3VuZAppbiB0aGUgYnVmZmVyLgoKU2V0IGl0IHRvIGBpbWVudS0tc29ydC1ieS1uYW1l JyBpZiB5b3Ugd2FudCBhbHBoYWJldGljIHNvcnRpbmcuCgpUaGUgZnVuY3Rpb24gc2hvdWxkIHRh a2UgdHdvIGFyZ3VtZW50cyBhbmQgcmV0dXJuIHQgaWYgdGhlIGZpcnN0CmVsZW1lbnQgc2hvdWxk IGNvbWUgYmVmb3JlIHRoZSBzZWNvbmQuICBUaGUgYXJndW1lbnRzIGFyZSBjb25zIGNlbGxzOwpc KE5BTUUgLiBQT1NJVElPTikuICBMb29rIGF0IGBpbWVudS0tc29ydC1ieS1uYW1lJyBmb3IgYW4g ZXhhbXBsZS4iCiAgOnR5cGUgJyhjaG9pY2UgKGNvbnN0IDp0YWcgIk5vIHNvcnRpbmciIG5pbCkK CQkgKGNvbnN0IDp0YWcgIlNvcnQgYnkgbmFtZSIgaW1lbnUtLXNvcnQtYnktbmFtZSkKICAgICAg ICAgICAgICAgICAoZnVuY3Rpb24gOnRhZyAiQW5vdGhlciBmdW5jdGlvbiIpKSkKCihkZWZjdXN0 b20gaW1lbnUtbWF4LWl0ZW1zIDI1CiAgIk1heGltdW0gbnVtYmVyIG9mIGVsZW1lbnRzIGluIGEg bW91c2UgbWVudSBmb3IgSW1lbnUuIgogIDp0eXBlICduYXRudW0pCgooZGVmY3VzdG9tIGltZW51 LXNwYWNlLXJlcGxhY2VtZW50ICIuIgogICJUaGUgcmVwbGFjZW1lbnQgc3RyaW5nIGZvciBzcGFj ZXMgaW4gaW5kZXggbmFtZXMuClVzZWQgd2hlbiBwcmVzZW50aW5nIHRoZSBpbmRleCBpbiBhIGNv bXBsZXRpb24gYnVmZmVyIHRvIG1ha2UgdGhlCm5hbWVzIHdvcmsgYXMgdG9rZW5zLiIKICA6dHlw ZSAnKGNob2ljZSBzdHJpbmcgKGNvbnN0IG5pbCkpKQoKKGRlZmN1c3RvbSBpbWVudS1sZXZlbC1z ZXBhcmF0b3IgIjoiCiAgIlRoZSBzZXBhcmF0b3IgYmV0d2VlbiBpbmRleCBuYW1lcyBvZiBkaWZm ZXJlbnQgbGV2ZWxzLgpVc2VkIGZvciBmbGF0dGVuaW5nIG5lc3RlZCBpbmRleGVzIHdpdGggbmFt ZSBjb25jYXRlbmF0aW9uLiIKICA6dHlwZSAnc3RyaW5nKQoKKGRlZmN1c3RvbSBpbWVudS1mbGF0 dGVuIG5pbAogICJXaGV0aGVyIHRvIGZsYXR0ZW4gdGhlIGxpc3Qgb2Ygc2VjdGlvbnMgaW4gYW4g aW1lbnUgb3Igc2hvdyBpdCBuZXN0ZWQuCklmIG5pbCwgdXNlIG5lc3RlZCBpbmRleGVzLgpJZiB0 aGUgdmFsdWUgaXMgYHByZWZpeCcsIHBvcCB1cCB0aGUgY29tcGxldGlvbiBidWZmZXIgd2l0aCBh CmZsYXR0ZW5lZCBtZW51IHdoZXJlIHNlY3Rpb24gbmFtZXMgYXJlIHByZXBlbmRlZCB0byBjb21w bGV0aW9uCmNhbmRpZGF0ZXMgYXMgcHJlZml4ZXMuCklmIHRoZSB2YWx1ZSBpcyBgYW5ub3RhdGlv bicsIGFubm90YXRlIGVhY2ggY29tcGxldGlvbiBjYW5kaWRhdGUKd2l0aCBhIHN1ZmZpeCB0aGF0 IGlzIHRoZSBzZWN0aW9uIG5hbWUgdG8gd2hpY2ggaXQgYmVsb25ncy4KSWYgdGhlIHZhbHVlIGlz IGBncm91cCcsIHNwbGl0IGNvbXBsZXRpb24gY2FuZGlkYXRlcyBpbnRvIGdyb3VwcwphY2NvcmRp bmcgdG8gdGhlIHNlY3Rpb25zLgpBbnkgb3RoZXIgdmFsdWUgaXMgdHJlYXRlZCBhcyBgcHJlZml4 Jy4KClNpbmNlIHRoZSB2YWx1ZXMgYGFubm90YXRpb24nIGFuZCBgZ3JvdXAnIHJlbHkgb24gdGV4 dCBwcm9wZXJ0aWVzLAp5b3UgY2FuIHVzZSB0aGVtIG9ubHkgYnkgc2VsZWN0aW5nIGNhbmRpZGF0 ZXMgZnJvbSB0aGUgY29tcGxldGlvbnMKYnVmZmVyLCBub3QgYnkgdHlwaW5nIGluIHRoZSBtaW5p YnVmZmVyLiAgVGhpcyBhbHNvIG1lYW5zIHRoYXQKaWYgeW91IHVzZSBgbWluaWJ1ZmZlci1uZXh0 LWNvbXBsZXRpb24nIChgTS08ZG93bj4nKSB0byBzZWxlY3QKYSBjb21wbGV0aW9uIHdoaWxlIHBv aW50IHN0YXlzIGluIHRoZSBtaW5pYnVmZmVyLCB5b3UgbmVlZAp0byBjdXN0b21pemUgYG1pbmli dWZmZXItY29tcGxldGlvbi1hdXRvLWNob29zZScgdG8gbmlsIHRoYXQKZG9lc24ndCBpbnNlcnQg Y29tcGxldGlvbiBjYW5kaWRhdGVzIHRvIHRoZSBtaW5pYnVmZmVyLgpBbHNvIG5vdGUgdGhhdCBm b3IgdXNpbmcgdGhlIHZhbHVlIGBncm91cCcgeW91IG5lZWQgdG8gY3VzdG9taXplCmBjb21wbGV0 aW9ucy1ncm91cCcgdG8gdGhlIHZhbHVlIHQsIGFuZCBgY29tcGxldGlvbnMtZm9ybWF0Jwp0byB0 aGUgdmFsdWUgYHZlcnRpY2FsJy4KClRoZSB2YWx1ZSBvZiBgaW1lbnUtbGV2ZWwtc2VwYXJhdG9y JywgYSBzdHJpbmcsIGlzIHVzZWQgdG8gc2VwYXJhdGUKbmFtZXMgZnJvbSBkaWZmZXJlbnQgZmxh dHRlbmVkIGxldmVscywgc3VjaCBhcyBzZWN0aW9uIG5hbWVzLCBmcm9tIHRoZQpuYW1lcyBvZiBj b21wbGV0aW9uIGNhbmRpZGF0ZXMuIgogIDp0eXBlICcoY2hvaWNlIChjb25zdCA6dGFnICJTaG93 IG5lc3RlZCBsaXN0IiBuaWwpCiAgICAgICAgICAgICAgICAgKGNvbnN0IDp0YWcgIkZsYXQgbGlz dCB3aXRoIHNlY3Rpb25zIGFzIHByZWZpeCIgcHJlZml4KQogICAgICAgICAgICAgICAgIChjb25z dCA6dGFnICJGbGF0IGxpc3QgYW5ub3RhdGVkIHdpdGggc2VjdGlvbnMiIGFubm90YXRpb24pCiAg ICAgICAgICAgICAgICAgKGNvbnN0IDp0YWcgIkZsYXQgbGlzdCBncm91cGVkIGJ5IHNlY3Rpb25z IiBncm91cCkpCiAgOnZlcnNpb24gIjMwLjEiKQoKKGRlZmN1c3RvbSBpbWVudS1nZW5lcmljLXNr aXAtY29tbWVudHMtYW5kLXN0cmluZ3MgdAogICJXaGVuIG5vbi1uaWwsIGlnbm9yZSB0ZXh0IGlu c2lkZSBjb21tZW50cyBhbmQgc3RyaW5ncy4KT25seSBhZmZlY3RzIGBpbWVudS1kZWZhdWx0LWNy ZWF0ZS1pbmRleC1mdW5jdGlvbicgKGFuZCBhbnkKYWx0ZXJuYXRpdmUgaW1wbGVtZW50YXRpb24g b2YgYGltZW51LWNyZWF0ZS1pbmRleC1mdW5jdGlvbicgdGhhdAp1c2VzIGBpbWVudS0tZ2VuZXJp Yy1mdW5jdGlvbicpLiIKICA6dHlwZSAnYm9vbGVhbgogIDp2ZXJzaW9uICIyNC40IikKCihkZWZj dXN0b20gaW1lbnUtbWF4LWluZGV4LXRpbWUgNQogICJNYXggdGltZSB0byB1c2Ugd2hlbiBjcmVh dGluZyBpbWVudSBpbmRpY2VzLiIKICA6dHlwZSAnbnVtYmVyCiAgOnZlcnNpb24gIjI4LjEiKQoK KGRlZmN1c3RvbSBpbWVudS1hbGxvdy1kdXBsaWNhdGUtbWVudS1pdGVtcyB0CiAgIk5vbi1uaWwg bWVhbnMgdGhhdCBJbWVudSBjYW4gaW5jbHVkZSBkdXBsaWNhdGUgbWVudSBpdGVtcy4KRm9yIGV4 YW1wbGUsIGlmIHRoZSBidWZmZXIgY29udGFpbnMgbXVsdGlwbGUgZGVmaW5pdGlvbnMgb2YgZnVu Y3Rpb24KYGZvbycgdGhlbiBhIG1lbnUgaXRlbSBpcyBpbmNsdWRlZCBmb3IgZWFjaCBvZiB0aGVt LgpPdGhlcndpc2UsIG9ubHkgdGhlIGZpcnN0IHN1Y2ggZGVmaW5pdGlvbiBpcyBhY2Nlc3NpYmxl IGZyb20gdGhlIG1lbnUuCgpUaGlzIG9wdGlvbiBhcHBsaWVzIG9ubHkgdG8gYW4gSW1lbnUgbWVu dSwgbm90IGFsc28gdG8gdGhlIHVzZSBvZgpjb21tYW5kIGBpbWVudScsIHdoaWNoIHVzZXMgYGNv bXBsZXRpbmctcmVhZCcgdG8gcmVhZCBhIG1lbnUgaXRlbS4KVGhlIHVzZSBvZiB0aGF0IGNvbW1h bmQgZG9lc24ndCBhbGxvdyBkdXBsaWNhdGUgaXRlbXMuIgogIDp0eXBlICdib29sZWFuIDpncm91 cCAnaW1lbnUgOnZlcnNpb24gIjMxLjEiKQoKOzs7IyMjYXV0b2xvYWQKKGRlZnZhci1sb2NhbCBp bWVudS1nZW5lcmljLWV4cHJlc3Npb24gbmlsCiAgIkxpc3Qgb2YgZGVmaW5pdGlvbiBtYXRjaGVy cyBmb3IgY3JlYXRpbmcgYW4gSW1lbnUgaW5kZXguCkVhY2ggZWxlbWVudCBvZiB0aGlzIGxpc3Qg c2hvdWxkIGhhdmUgdGhlIGZvcm0KCiAgKE1FTlUtVElUTEUgUkVHRVhQIElOREVYIFtGVU5DVElP Tl0gW0FSR1VNRU5UUy4uLl0pCgpNRU5VLVRJVExFIHNob3VsZCBiZSBuaWwgKGluIHdoaWNoIGNh c2UgdGhlIG1hdGNoZXMgZm9yIHRoaXMKZWxlbWVudCBhcmUgcHV0IGluIHRoZSB0b3AgbGV2ZWwg b2YgdGhlIGJ1ZmZlciBpbmRleCkgb3IgYQpzdHJpbmcgKHdoaWNoIHNwZWNpZmllcyB0aGUgdGl0 bGUgb2YgYSBzdWJtZW51IGludG8gd2hpY2ggdGhlCm1hdGNoZXMgYXJlIHB1dCkuClJFR0VYUCBp cyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaGluZyBhIGRlZmluaXRpb24gY29uc3RydWN0Cndo aWNoIGlzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgbWVudS4gIFJFR0VYUCBtYXkgYWxzbyBiZSBh CmZ1bmN0aW9uIG9mIG5vIGFyZ3VtZW50cy4gIElmIFJFR0VYUCBpcyBhIGZ1bmN0aW9uLCBpdCBp cwpleHBlY3RlZCB0byBzZWFyY2ggYmFja3dhcmRzLCByZXR1cm4gbm9uLW5pbCBpZiBpdCBmaW5k cyBhCmRlZmluaXRpb24gY29uc3RydWN0LCBhbmQgc2V0IGBtYXRjaC1kYXRhJyBmb3IgdGhhdCBj b25zdHJ1Y3QuCklOREVYIGlzIGFuIGludGVnZXIgc3BlY2lmeWluZyB3aGljaCBzdWJleHByZXNz aW9uIG9mIFJFR0VYUAptYXRjaGVzIHRoZSBkZWZpbml0aW9uJ3MgbmFtZTsgdGhpcyBzdWJleHBy ZXNzaW9uIGlzIGRpc3BsYXllZCBhcwp0aGUgbWVudSBpdGVtLgpGVU5DVElPTiwgaWYgcHJlc2Vu dCwgc3BlY2lmaWVzIGEgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBpbmRleAppdGVtIGlzIHNl bGVjdGVkIGJ5IHRoZSB1c2VyLiAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aAphcmd1bWVu dHMgY29uc2lzdGluZyBvZiB0aGUgaXRlbSBuYW1lLCB0aGUgYnVmZmVyIHBvc2l0aW9uLCBhbmQK dGhlIEFSR1VNRU5UUy4KClRoZSB2YXJpYWJsZSBgaW1lbnUtY2FzZS1mb2xkLXNlYXJjaCcgZGV0 ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdAp0aGUgcmVnZXhwIG1hdGNoZXMgYXJlIGNhc2Ugc2Vuc2l0 aXZlLCBhbmQgYGltZW51LXN5bnRheC1hbGlzdCcKY2FuIGJlIHVzZWQgdG8gYWx0ZXIgdGhlIHN5 bnRheCB0YWJsZSBmb3IgdGhlIHNlYXJjaC4KCklmIG5vbi1uaWwgdGhpcyBwYXR0ZXJuIGlzIHBh c3NlZCB0byBgaW1lbnUtLWdlbmVyaWMtZnVuY3Rpb24nIHRvCmNyZWF0ZSBhIGJ1ZmZlciBpbmRl eC4KCkZvciBleGFtcGxlLCBzZWUgdGhlIHZhbHVlIG9mIGBmb3J0cmFuLWltZW51LWdlbmVyaWMt ZXhwcmVzc2lvbicKdXNlZCBieSBgZm9ydHJhbi1tb2RlJyB3aXRoIGBpbWVudS1zeW50YXgtYWxp c3QnIHNldCBsb2NhbGx5IHNvIHRoYXQKY2hhcmFjdGVycyB3aGljaCBub3JtYWxseSBoYXZlIFwi c3ltYm9sXCIgc3ludGF4IGFyZSBjb25zaWRlcmVkIHRvIGhhdmUKXCJ3b3JkXCIgc3ludGF4IGR1 cmluZyBtYXRjaGluZy4iKQo7OzsjIyNhdXRvbG9hZChwdXQgJ2ltZW51LWdlbmVyaWMtZXhwcmVz c2lvbiAncmlza3ktbG9jYWwtdmFyaWFibGUgdCkKCjs7OzsgSG9va3MKCjs7OyMjI2F1dG9sb2Fk CihkZWZ2YXItbG9jYWwgaW1lbnUtY3JlYXRlLWluZGV4LWZ1bmN0aW9uICdpbWVudS1kZWZhdWx0 LWNyZWF0ZS1pbmRleC1mdW5jdGlvbgogICJUaGUgZnVuY3Rpb24gdG8gdXNlIGZvciBjcmVhdGlu ZyBhbiBpbmRleCBhbGlzdCBvZiB0aGUgY3VycmVudCBidWZmZXIuCgpJdCBzaG91bGQgYmUgYSBm dW5jdGlvbiB0aGF0IHRha2VzIG5vIGFyZ3VtZW50cyBhbmQgcmV0dXJucwphbiBpbmRleCBhbGlz dCBvZiB0aGUgY3VycmVudCBidWZmZXIuICBUaGUgZnVuY3Rpb24gaXMKY2FsbGVkIHdpdGhpbiBh IGBzYXZlLWV4Y3Vyc2lvbicuCgpTZWUgYGltZW51LS1pbmRleC1hbGlzdCcgZm9yIHRoZSBmb3Jt YXQgb2YgdGhlIGJ1ZmZlciBpbmRleCBhbGlzdC4iKQoKOzs7IyMjYXV0b2xvYWQKKGRlZnZhci1s b2NhbCBpbWVudS1zdWJtZW51cy1vbi10b3AgdAogICJGbGFnIHNwZWNpZnlpbmcgd2hldGhlciBp dGVtcyB3aXRoIHN1Ymxpc3RzIHNob3VsZCBiZSBrZXB0IGF0IHRvcC4KCkZvciBzb21lIGluZGV4 ZXMsIHN1Y2ggYXMgdGhvc2UgZGVzY3JpYmluZyBzZWN0aW9ucyBpbiBhIGRvY3VtZW50LCBpdApt YWtlcyBzZW5zZSB0byBrZWVwIHRoZWlyIG9yaWdpbmFsIG9yZGVyIGV2ZW4gaW4gdGhlIG1lbnVi YXIuIikKCjs7OyMjI2F1dG9sb2FkCihkZWZ2YXItbG9jYWwgaW1lbnUtcHJldi1pbmRleC1wb3Np dGlvbi1mdW5jdGlvbiAnYmVnaW5uaW5nLW9mLWRlZnVuCiAgIkZ1bmN0aW9uIGZvciBmaW5kaW5n IHRoZSBuZXh0IGluZGV4IHBvc2l0aW9uLgoKSWYgYGltZW51LWNyZWF0ZS1pbmRleC1mdW5jdGlv bicgaXMgc2V0IHRvCmBpbWVudS1kZWZhdWx0LWNyZWF0ZS1pbmRleC1mdW5jdGlvbicsIHRoZW4g eW91IG11c3Qgc2V0IHRoaXMgdmFyaWFibGUKdG8gYSBmdW5jdGlvbiB0aGF0IHdpbGwgZmluZCB0 aGUgbmV4dCBpbmRleCwgbG9va2luZyBiYWNrd2FyZHMgaW4gdGhlCmZpbGUuCgpUaGUgZnVuY3Rp b24gc2hvdWxkIGxlYXZlIHBvaW50IGF0IHRoZSBwbGFjZSB0byBiZSBjb25uZWN0ZWQgdG8gdGhl CmluZGV4IGFuZCBpdCBzaG91bGQgcmV0dXJuIG5pbCB3aGVuIGl0IGRvZXNuJ3QgZmluZCBhbm90 aGVyIGluZGV4LiIpCgo7OzsjIyNhdXRvbG9hZAooZGVmdmFyLWxvY2FsIGltZW51LWV4dHJhY3Qt aW5kZXgtbmFtZS1mdW5jdGlvbiBuaWwKICAiRnVuY3Rpb24gZm9yIGV4dHJhY3RpbmcgdGhlIGlu ZGV4IGl0ZW0gbmFtZSwgZ2l2ZW4gYSBwb3NpdGlvbi4KClRoaXMgZnVuY3Rpb24gaXMgY2FsbGVk IGFmdGVyIGBpbWVudS1wcmV2LWluZGV4LXBvc2l0aW9uLWZ1bmN0aW9uJwpmaW5kcyBhIHBvc2l0 aW9uIGZvciBhbiBpbmRleCBpdGVtLCB3aXRoIHBvaW50IGF0IHRoYXQgcG9zaXRpb24uCkl0IHNo b3VsZCByZXR1cm4gdGhlIG5hbWUgZm9yIHRoYXQgaW5kZXggaXRlbS4iKQoKOzs7IyMjYXV0b2xv YWQKKGRlZnZhci1sb2NhbCBpbWVudS1uYW1lLWxvb2t1cC1mdW5jdGlvbiBuaWwKICAiRnVuY3Rp b24gdG8gY29tcGFyZSBzdHJpbmcgd2l0aCBpbmRleCBpdGVtLgoKVGhpcyBmdW5jdGlvbiB3aWxs IGJlIGNhbGxlZCB3aXRoIHR3byBzdHJpbmdzLCBhbmQgc2hvdWxkIHJldHVybgpub24tbmlsIGlm IHRoZXkgbWF0Y2guCgpJZiBuaWwsIGNvbXBhcmlzb24gaXMgZG9uZSB3aXRoIGBzdHJpbmc9Jy4K U2V0IHRoaXMgdG8gc29tZSBvdGhlciBmdW5jdGlvbiBmb3IgbW9yZSBhZHZhbmNlZCBjb21wYXJp c29ucywKc3VjaCBhcyBcImJlZ2lucyB3aXRoXCIgb3IgXCJuYW1lIG1hdGNoZXMgYW5kIG51bWJl ciBvZgphcmd1bWVudHMgbWF0Y2hcIi4iKQoKOzs7IyMjYXV0b2xvYWQKKGRlZnZhci1sb2NhbCBp bWVudS1kZWZhdWx0LWdvdG8tZnVuY3Rpb24gJ2ltZW51LWRlZmF1bHQtZ290by1mdW5jdGlvbgog ICJUaGUgZGVmYXVsdCBmdW5jdGlvbiBjYWxsZWQgd2hlbiBzZWxlY3RpbmcgYW4gSW1lbnUgaXRl bS4KVGhlIGZ1bmN0aW9uIGluIHRoaXMgdmFyaWFibGUgaXMgY2FsbGVkIHdoZW4gc2VsZWN0aW5n IGEgbm9ybWFsIGluZGV4LWl0ZW0uIikKCgooZGVmdW4gaW1lbnUtLXN1YmFsaXN0LXAgKGl0ZW0p CiAgKGFuZCAoY29uc3AgaXRlbSkKICAgICAgIChjb25zcCAoY2RyIGl0ZW0pKQogICAgICAgKGxp c3RwIChjYWRyIGl0ZW0pKQogICAgICAgKG5vdCAoZnVuY3Rpb25wIChjYWRyIGl0ZW0pKSkpKQoK KGRlZm1hY3JvIGltZW51LXByb2dyZXNzLW1lc3NhZ2UgKF9wcmV2cG9zICZvcHRpb25hbCBfcmVs cG9zIF9yZXZlcnNlKQogICJUaGlzIG1hY3JvIGlzIG9ic29sZXRlIGFuZCBkb2VzIG5vdGhpbmcu IgogIChkZWNsYXJlIChvYnNvbGV0ZSBuaWwgIjI4LjEiKSkKOzsgTWFkZSBvYnNvbGV0ZS9lbXB0 eSwgYXMgY29tcHV0ZXJzIGFyZSBub3cgZmFzdGVyIHRoYW4gdGhlIGV5ZSwgYW5kCjs7IGl0IGhh ZCBwcm9ibGVtcyB1cGRhdGluZyB0aGUgbWVzc2FnZXMgY29ycmVjdGx5LCBhbmQgY291bGQgc2hh ZG93Cjs7IG1vcmUgaW1wb3J0YW50IG1lc3NhZ2VzL3Byb21wdHMgaW4gdGhlIG1pbmlidWZmZXIu ICBLRlMgMjAwNC0xMC0yNy4KKQoKCjs7Owo7OzsgTGlzcAo7OzsKCihkZWZpbmUtZXJyb3IgJ2lt ZW51LXVuYXZhaWxhYmxlICJpbWVudSB1bmF2YWlsYWJsZSIpCgooZGVmdW4gaW1lbnUtdW5hdmFp bGFibGUtZXJyb3IgKGZvcm1hdCAmcmVzdCBhcmdzKQogIChzaWduYWwgJ2ltZW51LXVuYXZhaWxh YmxlCiAgICAgICAgICAobGlzdCAoYXBwbHkgIydmb3JtYXQtbWVzc2FnZSBmb3JtYXQgYXJncykp KSkKCjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7OzsKOzs7Cjs7OyBJbnRlcm5hbCB2YXJpYWJsZXMKOzs7Cjs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsKCjs7IFRo ZSBpdGVtIHRvIHVzZSBpbiB0aGUgaW5kZXggZm9yIHJlc2Nhbm5pbmcgdGhlIGJ1ZmZlci4KKGRl ZmNvbnN0IGltZW51LS1yZXNjYW4taXRlbSAnKCIqUmVzY2FuKiIgLiAtOTkpKQoKOzsgVGhlIGxh dGVzdCBidWZmZXIgaW5kZXguCihkZWZ2YXItbG9jYWwgaW1lbnUtLWluZGV4LWFsaXN0IG5pbAog ICJUaGUgYnVmZmVyIGluZGV4IGFsaXN0IGNvbXB1dGVkIGZvciB0aGlzIGJ1ZmZlciBpbiBJbWVu dS4KClNpbXBsZSBlbGVtZW50cyBpbiB0aGUgYWxpc3QgbG9vayBsaWtlIChJTkRFWC1OQU1FIC4g UE9TSVRJT04pLgpQT1NJVElPTiBpcyB0aGUgYnVmZmVyIHBvc2l0aW9uIG9mIHRoZSBpdGVtOyB0 byBnbyB0byB0aGUgaXRlbQppcyBzaW1wbHkgdG8gbW92ZSBwb2ludCB0byB0aGF0IHBvc2l0aW9u LgoKUE9TSVRJT04gaXMgcGFzc2VkIHRvIGBpbWVudS1kZWZhdWx0LWdvdG8tZnVuY3Rpb24nLCBz byBpdCBjYW4gYmUKYSBub24tbnVtYmVyIGlmIHRoYXQgdmFyaWFibGUgaGFzIGJlZW4gY2hhbmdl ZCAoZS5nLiBTZW1hbnRpYwp1c2VzIG92ZXJsYXlzIGZvciBQT1NJVElPTnMpLgoKU3BlY2lhbCBl bGVtZW50cyBsb29rIGxpa2UKXChJTkRFWC1OQU1FIFBPU0lUSU9OIEZVTkNUSU9OIEFSR1VNRU5U Uy4uLikuClRvIFwiZ28gdG9cIiBhIHNwZWNpYWwgZWxlbWVudCBtZWFucyBhcHBseWluZyBGVU5D VElPTiB0bwpJTkRFWC1OQU1FLCBQT1NJVElPTiwgYW5kIHRoZSBBUkdVTUVOVFMuCgpBIG5lc3Rl ZCBzdWItYWxpc3QgZWxlbWVudCBsb29rcyBsaWtlIChJTkRFWC1OQU1FIC4gU1VCLUFMSVNUKS4K VGhlIGZ1bmN0aW9uIGBpbWVudS0tc3ViYWxpc3QtcCcgdGVzdHMgYW4gZWxlbWVudCBhbmQgcmV0 dXJucyB0CmlmIGl0IGlzIGEgc3ViLWFsaXN0LgoKVGhlcmUgaXMgb25lIHNpbXBsZSBlbGVtZW50 IHdpdGggbmVnYXRpdmUgUE9TSVRJT047IHNlbGVjdGluZyB0aGF0CmVsZW1lbnQgcmVjYWxjdWxh dGVzIHRoZSBidWZmZXIncyBpbmRleCBhbGlzdC4iKQo7OzsjIyNhdXRvbG9hZChwdXQgJ2ltZW51 LS1pbmRleC1hbGlzdCAncmlza3ktbG9jYWwtdmFyaWFibGUgdCkKCihkZWZ2YXItbG9jYWwgaW1l bnUtLWxhc3QtbWVudWJhci1pbmRleC1hbGlzdCBuaWwKICAiVGhlIGxhdGVzdCBidWZmZXIgaW5k ZXggYWxpc3QgdXNlZCB0byB1cGRhdGUgdGhlIG1lbnUgYmFyIG1lbnUuIikKCihkZWZ2YXIgaW1l bnUtLWhpc3RvcnktbGlzdCBuaWwKICA7OyBNYWtpbmcgdGhpcyBidWZmZXIgbG9jYWwgY2F1c2Vk IGl0IG5vdCB0byB3b3JrIQogICJIaXN0b3J5IGxpc3QgZm9yIGBpbWVudS1jaG9vc2UtYnVmZmVy LWluZGV4Jy4iKQoKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Owo7OzsKOzs7IEludGVybmFsIHN1cHBvcnQgZnVuY3Rpb25zCjs7 Owo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7CgooZGVmdW4gaW1lbnUtLXNvcnQtYnktbmFtZSAoaXRlbTEgaXRlbTIpCiAgIkNv bXBhcmlzb24gZnVuY3Rpb24gdG8gc29ydCBpdGVtcyBkZXBlbmRpbmcgb24gdGhlaXIgaW5kZXgg bmFtZS4KQW4gaXRlbSBsb29rcyBsaWtlIChOQU1FIC4gUE9TSVRJT04pLiIKICAoc3RyaW5nLWxl c3NwIChjYXIgaXRlbTEpIChjYXIgaXRlbTIpKSkKCihkZWZ1biBpbWVudS0tc29ydC1ieS1wb3Np dGlvbiAoaXRlbTEgaXRlbTIpCiAgIkNvbXBhcmlzb24gZnVuY3Rpb24gdG8gc29ydCBpdGVtcyBk ZXBlbmRpbmcgb24gdGhlaXIgcG9zaXRpb24uClJldHVybiBub24tbmlsIGlmIGFuZCBvbmx5IGlm IElURU0xJ3MgcG9zaXRpb24gaXMgbG93ZXIgdGhhbiBJVEVNMidzCnBvc2l0aW9uLiIKICAoaWYg KGxpc3RwIChjZHIgaXRlbTEpKQogICAgICAoPCAoY2FkciBpdGVtMSkgKGNhZHIgaXRlbTIpKQog ICAgKDwgKGNkciBpdGVtMSkgKGNkciBpdGVtMikpKSkKCihkZWZ1biBpbWVudS0tcmVsYXRpdmUt cG9zaXRpb24gKCZvcHRpb25hbCByZXZlcnNlKQogICJTdXBwb3J0IGZ1bmN0aW9uIHRvIGNhbGN1 bGF0ZSByZWxhdGl2ZSBwb3NpdGlvbiBpbiBidWZmZXIuCkJlZ2lubmluZyBvZiBidWZmZXIgaXMg MCBhbmQgZW5kIG9mIGJ1ZmZlciBpcyAxMDAKSWYgUkVWRVJTRSBpcyBub24tbmlsIHRoZW4gdGhl IGJlZ2lubmluZyBpcyAxMDAgYW5kIHRoZSBlbmQgaXMgMC4iCiAgKGxldCAoKHBvcyAocG9pbnQp KQoJKHRvdGFsIChidWZmZXItc2l6ZSkpKQogICAgKGFuZCByZXZlcnNlIChzZXRxIHBvcyAoLSB0 b3RhbCBwb3MpKSkKICAgIChmbG9vciAoKiAxMDAuMCAoMS0gcG9zKSkgKG1heCB0b3RhbCAxKSkp KQoKKGRlZnVuIGltZW51LS1zcGxpdCAobGlzdCBuKQogICJTcGxpdCBMSVNUIGludG8gc3VibGlz dHMgb2YgbWF4IGxlbmd0aCBOLgpFeGFtcGxlIChpbWVudS0tc3BsaXQgXFw9JygxIDIgMyA0IDUg NiA3IDgpIDMpID0+ICgoMSAyIDMpICg0IDUgNikgKDcgOCkpClRoZSByZXR1cm5lZCBsaXN0IERP RVMgTk9UIHNoYXJlIHN0cnVjdHVyZSB3aXRoIExJU1QuIgogIChsZXQgKChyZW1haW4gbGlzdCkK CShyZXN1bHQgJygpKQoJKHN1Ymxpc3QgJygpKQoJKGkgMCkpCiAgICAod2hpbGUgcmVtYWluCiAg ICAgIChwdXNoIChwb3AgcmVtYWluKSBzdWJsaXN0KQogICAgICAoY2wtaW5jZiBpKQogICAgICAo YW5kICg9IGkgbikKCSAgIDs7IFdlIGhhdmUgZmluaXNoZWQgYSBzdWJsaXN0CgkgICAocHJvZ24g KHB1c2ggKG5yZXZlcnNlIHN1Ymxpc3QpIHJlc3VsdCkKCQkgIChzZXRxIGkgMCkKCQkgIChzZXRx IHN1Ymxpc3QgJygpKSkpKQogICAgOzsgVGhlcmUgbWlnaHQgYmUgYSBzdWJsaXN0IChpZiB0aGUg bGVuZ3RoIG9mIExJU1QgbW9kIG4gaXMgIT0gMCkKICAgIDs7IHRoYXQgaGFzIHRvIGJlIGFkZGVk IHRvIHRoZSByZXN1bHQgbGlzdC4KICAgIChhbmQgc3VibGlzdAoJIChwdXNoIChucmV2ZXJzZSBz dWJsaXN0KSByZXN1bHQpKQogICAgKG5yZXZlcnNlIHJlc3VsdCkpKQoKKGRlZnVuIGltZW51LS1z cGxpdC1tZW51IChtZW51bGlzdCB0aXRsZSkKICAiU3BsaXQgdGhlIGFsaXN0IE1FTlVMSVNUIGlu dG8gYSBuZXN0ZWQgYWxpc3QsIGlmIGl0IGlzIGxvbmcgZW5vdWdoLgpJbiBhbnkgY2FzZSwgYWRk IFRJVExFIHRvIHRoZSBmcm9udCBvZiB0aGUgYWxpc3QuCklmIElNRU5VLS1SRVNDQU4tSVRFTSBp cyBwcmVzZW50IGluIE1FTlVMSVNULCBpdCBpcyBtb3ZlZCB0byB0aGUKYmVnaW5uaW5nIG9mIHRo ZSByZXR1cm5lZCBhbGlzdC4KVGhlIHJldHVybmVkIGFsaXN0IERPRVMgTk9UIHNoYXJlIHN0cnVj dHVyZSB3aXRoIE1FTlVMSVNULiIKICAobGV0ICgobWVudWxpc3QgKGNvcHktc2VxdWVuY2UgbWVu dWxpc3QpKQogICAgICAgIGtlZXAtYXQtdG9wKQogICAgKGlmIChtZW1xIGltZW51LS1yZXNjYW4t aXRlbSBtZW51bGlzdCkKCShzZXRxIGtlZXAtYXQtdG9wIChsaXN0IGltZW51LS1yZXNjYW4taXRl bSkKCSAgICAgIG1lbnVsaXN0IChkZWxxIGltZW51LS1yZXNjYW4taXRlbSBtZW51bGlzdCkpKQog ICAgKGlmIGltZW51LXN1Ym1lbnVzLW9uLXRvcAogICAgICAgIChkb2xpc3QgKGl0ZW0gbWVudWxp c3QpCiAgICAgICAgICAod2hlbiAoaW1lbnUtLXN1YmFsaXN0LXAgaXRlbSkKCSAgICAocHVzaCBp dGVtIGtlZXAtYXQtdG9wKQoJICAgIChzZXRxIG1lbnVsaXN0IChkZWxxIGl0ZW0gbWVudWxpc3Qp KSkpKQogICAgKGlmIGltZW51LXNvcnQtZnVuY3Rpb24KCShzZXRxIG1lbnVsaXN0IChzb3J0IG1l bnVsaXN0IGltZW51LXNvcnQtZnVuY3Rpb24pKSkKICAgIChpZiAoPiAobGVuZ3RoIG1lbnVsaXN0 KSBpbWVudS1tYXgtaXRlbXMpCgkoc2V0cSBtZW51bGlzdAoJICAgICAgKG1hcGNhcgoJICAgICAg IChsYW1iZGEgKG1lbnUpCgkJIChjb25zIChmb3JtYXQgIkZyb206ICVzIiAoY2FhciBtZW51KSkg bWVudSkpCgkgICAgICAgKGltZW51LS1zcGxpdCBtZW51bGlzdCBpbWVudS1tYXgtaXRlbXMpKSkp CiAgICAoY29ucyB0aXRsZQoJICAobmNvbmMgKG5yZXZlcnNlIGtlZXAtYXQtdG9wKSBtZW51bGlz dCkpKSkKCihkZWZ1biBpbWVudS0tc3BsaXQtc3VibWVudXMgKGFsaXN0KQogICJTcGxpdCB1cCBl YWNoIGxvbmcgYWxpc3QgdGhhdCBhcmUgbmVzdGVkIHdpdGhpbiBBTElTVCBpbnRvIG5lc3RlZCBh bGlzdHMuClJldHVybiBhIHNwbGl0IGFuZCBzb3J0ZWQgY29weSBvZiBBTElTVC4gIFRoZSByZXR1 cm5lZCBhbGlzdCBET0VTCk5PVCBzaGFyZSBzdHJ1Y3R1cmUgd2l0aCBBTElTVC4iCiAgKG1hcGNh ciAobGFtYmRhIChlbHQpCiAgICAgICAgICAgIChpZiAoaW1lbnUtLXN1YmFsaXN0LXAgZWx0KQog ICAgICAgICAgICAgICAgKGltZW51LS1zcGxpdC1tZW51IChjZHIgZWx0KSAoY2FyIGVsdCkpCiAg ICAgICAgICAgICAgZWx0KSkKCSAgYWxpc3QpKQoKKGRlZnVuIGltZW51LS10cnVuY2F0ZS1pdGVt cyAobWVudWxpc3QpCiAgIlRydW5jYXRlIGFsbCBzdHJpbmdzIGluIE1FTlVMSVNUIHRvIGBpbWVu dS1tYXgtaXRlbS1sZW5ndGgnLiIKICAobWFwYyAobGFtYmRhIChpdGVtKQoJICA7OyBUcnVuY2F0 ZSBpZiBuZWNlc3NhcnkuCgkgICh3aGVuIChhbmQgKG51bWJlcnAgaW1lbnUtbWF4LWl0ZW0tbGVu Z3RoKQoJCSAgICAgKD4gKGxlbmd0aCAoY2FyIGl0ZW0pKSBpbWVudS1tYXgtaXRlbS1sZW5ndGgp KQoJICAgIChzZXRjYXIgaXRlbSAoc3Vic3RyaW5nIChjYXIgaXRlbSkgMCBpbWVudS1tYXgtaXRl bS1sZW5ndGgpKSkKCSAgKHdoZW4gKGltZW51LS1zdWJhbGlzdC1wIGl0ZW0pCgkgICAgKGltZW51 LS10cnVuY2F0ZS1pdGVtcyAoY2RyIGl0ZW0pKSkpCgltZW51bGlzdCkpCgooZGVmdW4gaW1lbnUt LW1ha2UtaW5kZXgtYWxpc3QgKCZvcHRpb25hbCBub2Vycm9yKQogICJDcmVhdGUgYW4gaW5kZXgg YWxpc3QgZm9yIHRoZSBkZWZpbml0aW9ucyBpbiB0aGUgY3VycmVudCBidWZmZXIuClRoaXMgd29y a3MgYnkgdXNpbmcgdGhlIGhvb2sgZnVuY3Rpb24gYGltZW51LWNyZWF0ZS1pbmRleC1mdW5jdGlv bicuClJlcG9ydCBhbiBlcnJvciBpZiB0aGUgbGlzdCBpcyBlbXB0eSB1bmxlc3MgTk9FUlJPUiBp cyBzdXBwbGllZCBhbmQKbm9uLW5pbC4KClNlZSBgaW1lbnUtLWluZGV4LWFsaXN0JyBmb3IgdGhl IGZvcm1hdCBvZiB0aGUgaW5kZXggYWxpc3QuIgogIChvciAoYW5kIGltZW51LS1pbmRleC1hbGlz dAoJICAgKG9yIChub3QgaW1lbnUtYXV0by1yZXNjYW4pCgkgICAgICAgKGFuZCBpbWVudS1hdXRv LXJlc2NhbgoJCSAgICAoPiAoYnVmZmVyLXNpemUpICBpbWVudS1hdXRvLXJlc2Nhbi1tYXhvdXQp KSkpCiAgICAgIDs7IEdldCB0aGUgaW5kZXg7IHRydW5jYXRlIGlmIG5lY2Vzc2FyeS4KICAgICAg KHByb2duCgkoc2V0cSBpbWVudS0taW5kZXgtYWxpc3QKCSAgICAgIChzYXZlLWV4Y3Vyc2lvbgoJ CShzYXZlLXJlc3RyaWN0aW9uCgkJICAod2lkZW4pCgkJICAoZnVuY2FsbCBpbWVudS1jcmVhdGUt aW5kZXgtZnVuY3Rpb24pKSkpCgkoaW1lbnUtLXRydW5jYXRlLWl0ZW1zIGltZW51LS1pbmRleC1h bGlzdCkpKQogIChvciBpbWVudS0taW5kZXgtYWxpc3Qgbm9lcnJvcgogICAgICAoaW1lbnUtdW5h dmFpbGFibGUtZXJyb3IKICAgICAgICJObyBpdGVtcyBzdWl0YWJsZSBmb3IgYW4gaW5kZXggZm91 bmQgaW4gdGhpcyBidWZmZXIiKSkKICAob3IgaW1lbnUtLWluZGV4LWFsaXN0CiAgICAgIChzZXRx IGltZW51LS1pbmRleC1hbGlzdCAobGlzdCBuaWwpKSkKICAoaWYgaW1lbnUtYXV0by1yZXNjYW4K ICAgICAgaW1lbnUtLWluZGV4LWFsaXN0CiAgICA7OyBBZGQgYSByZXNjYW4gb3B0aW9uIHRvIHRo ZSBpbmRleC4KICAgIChjb25zIGltZW51LS1yZXNjYW4taXRlbSBpbWVudS0taW5kZXgtYWxpc3Qp KSkKCihkZWZ2YXIgaW1lbnUtLWNsZWFudXAtc2VlbiBuaWwpCgooZGVmdW4gaW1lbnUtLWNsZWFu dXAgKCZvcHRpb25hbCBhbGlzdCkKICAiRmluZCBhbGwgbWFya2VycyBpbiBBTElTVCBhbmQgbWFr ZSB0aGVtIHBvaW50IG5vd2hlcmUuCklmIEFMSVNUIGlzIG5pbCAodGhlIG5vcm1hbCBjYXNlKSwg dXNlIGBpbWVudS0taW5kZXgtYWxpc3QnLgpOb24tbmlsIGFyZ3VtZW50cyBhcmUgaW4gcmVjdXJz aXZlIGNhbGxzLiIKICA7OyBJZiBhbGlzdCBpcyBwcm92aWRlZCB1c2UgdGhhdCBsaXN0LgogIDs7 IElmIG5vdCwgZW1wdHkgdGhlIHRhYmxlIG9mIGxpc3RzIGFscmVhZHkgc2VlbgogIDs7IGFuZCB1 c2UgaW1lbnUtLWluZGV4LWFsaXN0LgogIChpZiBhbGlzdAogICAgICAoc2V0cSBpbWVudS0tY2xl YW51cC1zZWVuIChjb25zIGFsaXN0IGltZW51LS1jbGVhbnVwLXNlZW4pKQogICAgKHNldHEgYWxp c3QgaW1lbnUtLWluZGV4LWFsaXN0IGltZW51LS1jbGVhbnVwLXNlZW4gKGxpc3QgYWxpc3QpKSkK CiAgKHdoZW4gYWxpc3QKICAgIChkb2xpc3QgKGl0ZW0gYWxpc3QpCiAgICAgIChjb25kCiAgICAg ICAoKG1hcmtlcnAgKGNkciBpdGVtKSkgKHNldC1tYXJrZXIgKGNkciBpdGVtKSBuaWwpKQogICAg ICAgOzsgRG9uJ3QgcHJvY2VzcyBvbmUgYWxpc3QgdHdpY2UuCiAgICAgICAoKG1lbXEgKGNkciBp dGVtKSBpbWVudS0tY2xlYW51cC1zZWVuKSkKICAgICAgICgoaW1lbnUtLXN1YmFsaXN0LXAgaXRl bSkgKGltZW51LS1jbGVhbnVwIChjZHIgaXRlbSkpKSkpCiAgICB0KSkKCihkZWZ1biBpbWVudS0t Y3JlYXRlLWtleW1hcCAodGl0bGUgYWxpc3QgJm9wdGlvbmFsIGNtZCkKICBgKGtleW1hcCAsdGl0 bGUKICAgICAgICAgICAsQChtYXBjYXIKICAgICAgICAgICAgICAoaWYgaW1lbnUtYWxsb3ctZHVw bGljYXRlLW1lbnUtaXRlbXMKICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoaXRlbSkKICAgICAg ICAgICAgICAgICAgICBgKCwoY2FyIGl0ZW0pCiAgICAgICAgICAgICAgICAgICAgICAsKGNhciBp dGVtKQogICAgICAgICAgICAgICAgICAgICAgLEAoY29uZAogICAgICAgICAgICAgICAgICAgICAg ICAgKChpbWVudS0tc3ViYWxpc3QtcCBpdGVtKQogICAgICAgICAgICAgICAgICAgICAgICAgIChp bWVudS0tY3JlYXRlLWtleW1hcCAoY2FyIGl0ZW0pIChjZHIgaXRlbSkgY21kKSkKICAgICAgICAg ICAgICAgICAgICAgICAgICh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoKSAo aW50ZXJhY3RpdmUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgY21kIChmdW5jYWxs IGNtZCBpdGVtKSBpdGVtKSkpKSkpCiAgICAgICAgICAgICAgICAobGFtYmRhIChpdGVtKQogICAg ICAgICAgICAgICAgICBgKCwoaW50ZXJuIChjYXIgaXRlbSkpCiAgICAgICAgICAgICAgICAgICAg LChjYXIgaXRlbSkKICAgICAgICAgICAgICAgICAgICAsQChjb25kCiAgICAgICAgICAgICAgICAg ICAgICAgKChpbWVudS0tc3ViYWxpc3QtcCBpdGVtKQogICAgICAgICAgICAgICAgICAgICAgICAo aW1lbnUtLWNyZWF0ZS1rZXltYXAgKGNhciBpdGVtKSAoY2RyIGl0ZW0pIGNtZCkpCiAgICAgICAg ICAgICAgICAgICAgICAgKHQKICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoKSAoaW50 ZXJhY3RpdmUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIGNtZCAoZnVuY2FsbCBjbWQg aXRlbSkgaXRlbSkpKSkpKSkKICAgICAgICAgICAgICAocmVtcSBuaWwgYWxpc3QpKSkpCgooZGVm dW4gaW1lbnUtLWluLWFsaXN0IChzdHIgYWxpc3QpCiAgIkNoZWNrIHdoZXRoZXIgdGhlIHN0cmlu ZyBTVFIgaXMgY29udGFpbmVkIGluIG11bHRpLWxldmVsIEFMSVNULiIKICAobGV0IChlbHQgaGVh ZCB0YWlsIHJlcykKICAgIChzZXRxIHJlcyBuaWwpCiAgICAod2hpbGUgYWxpc3QKICAgICAgKHNl dHEgZWx0IChjYXIgYWxpc3QpCgkgICAgdGFpbCAoY2RyIGVsdCkKCSAgICBhbGlzdCAoY2RyIGFs aXN0KQoJICAgIGhlYWQgKGNhciBlbHQpKQogICAgICA7OyBBIG5lc3RlZCBBTElTVCBlbGVtZW50 IGxvb2tzIGxpa2UKICAgICAgOzsgICAoSU5ERVgtTkFNRSAoSU5ERVgtTkFNRSAuIElOREVYLVBP U0lUSU9OKSAuLi4pCiAgICAgIDs7IHdoaWxlIGEgYm90dG9tLWxldmVsIGVsZW1lbnQgbG9va3Mg bGlrZQogICAgICA7OyAgIChJTkRFWC1OQU1FIC4gSU5ERVgtUE9TSVRJT04pCiAgICAgIDs7IG9y CiAgICAgIDs7ICAgKElOREVYLU5BTUUgSU5ERVgtUE9TSVRJT04gRlVOQ1RJT04gQVJHVU1FTlRT Li4uKQogICAgICA7OyBXZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIHRoZSBib3R0b20tbGV2ZWwg ZWxlbWVudHMsIHNvIHdlIG5lZWQgdG8KICAgICAgOzsgcmVjdXJzZSBpZiBUQUlMIGlzIGEgbmVz dGVkIEFMSVNULgogICAgICAoY29uZCAoKGltZW51LS1zdWJhbGlzdC1wIGVsdCkKCSAgICAgKGlm IChzZXRxIHJlcyAoaW1lbnUtLWluLWFsaXN0IHN0ciB0YWlsKSkKCQkgKHNldHEgYWxpc3Qgbmls KSkpCgkgICAgKChpZiBpbWVudS1uYW1lLWxvb2t1cC1mdW5jdGlvbgogICAgICAgICAgICAgICAg IChmdW5jYWxsIGltZW51LW5hbWUtbG9va3VwLWZ1bmN0aW9uIHN0ciBoZWFkKQogICAgICAgICAg ICAgICAoc3RyaW5nPSBzdHIgaGVhZCkpCgkgICAgIChzZXRxIGFsaXN0IG5pbCByZXMgZWx0KSkp KQogICAgcmVzKSkKCjs7OyMjI2F1dG9sb2FkCihkZWZ2YXItbG9jYWwgaW1lbnUtc3ludGF4LWFs aXN0IG5pbAogICJBbGlzdCBvZiBzeW50YXggdGFibGUgbW9kaWZpZXJzIHRvIHVzZSB3aGlsZSBp biBgaW1lbnUtLWdlbmVyaWMtZnVuY3Rpb24nLgoKVGhlIGNhciBvZiB0aGUgYXNzb2NzIG1heSBi ZSBlaXRoZXIgYSBjaGFyYWN0ZXIgb3IgYSBzdHJpbmcgYW5kIHRoZQpjZHIgaXMgYSBzeW50YXgg ZGVzY3JpcHRpb24gYXBwcm9wcmlhdGUgZm9yIGBtb2RpZnktc3ludGF4LWVudHJ5Jy4gIEZvcgph IHN0cmluZywgYWxsIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgZ2V0IHRoZSBzcGVjaWZp ZWQgc3ludGF4LgoKVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCB0byBnaXZlIHdvcmQgc3ludGF4IHRv IGNoYXJhY3RlcnMgd2hpY2gKbm9ybWFsbHkgaGF2ZSBzeW1ib2wgc3ludGF4IHRvIHNpbXBsaWZ5 IGBpbWVudS1leHByZXNzaW9uJwphbmQgc3BlZWQtdXAgbWF0Y2hpbmcuIikKCihkZWZ1biBpbWVu dS1kZWZhdWx0LWNyZWF0ZS1pbmRleC1mdW5jdGlvbiAoKQogICJEZWZhdWx0IGZ1bmN0aW9uIHRv IGNyZWF0ZSBhbiBpbmRleCBhbGlzdCBvZiB0aGUgY3VycmVudCBidWZmZXIuCgpUaGUgbW9zdCBn ZW5lcmFsIG1ldGhvZCBpcyB0byBtb3ZlIHBvaW50IHRvIGVuZCBvZiBidWZmZXIsIHRoZW4gcmVw ZWF0ZWRseSBjYWxsCmBpbWVudS1wcmV2LWluZGV4LXBvc2l0aW9uLWZ1bmN0aW9uJyBhbmQgYGlt ZW51LWV4dHJhY3QtaW5kZXgtbmFtZS1mdW5jdGlvbicuCkFsbCB0aGUgcmVzdWx0cyByZXR1cm5l ZCBieSB0aGUgbGF0dGVyIGFyZSBnYXRoZXJlZCBpbnRvIGFuIGluZGV4IGFsaXN0LgpUaGlzIG1l dGhvZCBpcyB1c2VkIGlmIHRob3NlIHR3byB2YXJpYWJsZXMgYXJlIG5vbi1uaWwuCgpUaGUgYWx0 ZXJuYXRlIG1ldGhvZCwgd2hpY2ggaXMgdGhlIG9uZSBtb3N0IG9mdGVuIHVzZWQsIGlzIHRvIGNh bGwKYGltZW51LS1nZW5lcmljLWZ1bmN0aW9uJyB3aXRoIGBpbWVudS1nZW5lcmljLWV4cHJlc3Np b24nIGFzIGFyZ3VtZW50LiIKICA7OyBUaGVzZSBzaG91bGQgcmVhbGx5IGJlIGRvbmUgYnkgc2V0 dGluZyBpbWVudS1jcmVhdGUtaW5kZXgtZnVuY3Rpb24KICA7OyBpbiB0aGVzZSBtYWpvciBtb2Rl cy4gIEJ1dCBzYXZlIHRoYXQgY2hhbmdlIGZvciBsYXRlci4KICAoY29uZCAoKGFuZCBpbWVudS1w cmV2LWluZGV4LXBvc2l0aW9uLWZ1bmN0aW9uCgkgICAgICBpbWVudS1leHRyYWN0LWluZGV4LW5h bWUtZnVuY3Rpb24pCgkgKGxldCAoKGluZGV4LWFsaXN0ICcoKSkgKHBvcyAocG9pbnQtbWF4KSkK ICAgICAgICAgICAgICAgKHN0YXJ0IChmbG9hdC10aW1lKSkKCSAgICAgICBuYW1lKQoJICAgKGdv dG8tY2hhciBwb3MpCgkgICA7OyBTZWFyY2ggZm9yIHRoZSBmdW5jdGlvbgoJICAgKHdoaWxlIChh bmQgKGZ1bmNhbGwgaW1lbnUtcHJldi1pbmRleC1wb3NpdGlvbi1mdW5jdGlvbikKICAgICAgICAg ICAgICAgICAgICAgICA7OyBEb24ndCB1c2UgYW4gZXhjZXNzaXZlIGFtb3VudCBvZiB0aW1lLgog ICAgICAgICAgICAgICAgICAgICAgICg8ICgtIChmbG9hdC10aW1lKSBzdGFydCkgaW1lbnUtbWF4 LWluZGV4LXRpbWUpKQogICAgICAgICAgICAgKHVubGVzcyAoPCAocG9pbnQpIHBvcykKICAgICAg ICAgICAgICAgKGVycm9yICJJbmZpbml0ZSBsb29wIGF0ICVzOiVkOiBpbWVudS1wcmV2LWluZGV4 LXBvc2l0aW9uLWZ1bmN0aW9uIGRvZXMgbm90IG1vdmUgcG9pbnQiIChidWZmZXItbmFtZSkgcG9z KSkKICAgICAgICAgICAgIChzZXRxIHBvcyAocG9pbnQpKQoJICAgICAoc2F2ZS1leGN1cnNpb24K CSAgICAgICAoc2V0cSBuYW1lIChmdW5jYWxsIGltZW51LWV4dHJhY3QtaW5kZXgtbmFtZS1mdW5j dGlvbikpKQoJICAgICAoYW5kIChzdHJpbmdwIG5hbWUpCiAJCSAgOzsgW3lkaV0gVXBkYXRlZCBm b3IgaW1lbnUtdXNlLW1hcmtlcnMuCgkJICAocHVzaCAoY29ucyBuYW1lCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChpZiBpbWVudS11c2UtbWFya2VycyAocG9pbnQtbWFya2VyKSAocG9p bnQpKSkKCQkJaW5kZXgtYWxpc3QpKSkKCSAgIGluZGV4LWFsaXN0KSkKCTs7IFVzZSBnZW5lcmlj IGV4cHJlc3Npb24gaWYgcG9zc2libGUuCgkoKGFuZCBpbWVudS1nZW5lcmljLWV4cHJlc3Npb24p CgkgKGltZW51LS1nZW5lcmljLWZ1bmN0aW9uIGltZW51LWdlbmVyaWMtZXhwcmVzc2lvbikpCgko dAogICAgICAgICAoaW1lbnUtdW5hdmFpbGFibGUtZXJyb3IgIlRoaXMgYnVmZmVyIGNhbm5vdCB1 c2UgYGltZW51LWRlZmF1bHQtY3JlYXRlLWluZGV4LWZ1bmN0aW9uJyIpKSkpCgo7OzsKOzs7IEdl bmVyaWMgaW5kZXggZ2F0aGVyaW5nIGZ1bmN0aW9uLgo7OzsKCjs7OyMjI2F1dG9sb2FkCihkZWZ2 YXItbG9jYWwgaW1lbnUtY2FzZS1mb2xkLXNlYXJjaCB0CiAgIkRlZmluZXMgd2hldGhlciBgaW1l bnUtLWdlbmVyaWMtZnVuY3Rpb24nIHNob3VsZCBmb2xkIGNhc2Ugd2hlbiBtYXRjaGluZy4KClRo aXMgdmFyaWFibGUgc2hvdWxkIGJlIHNldCAob25seSkgYnkgaW5pdGlhbGl6YXRpb24gY29kZQpm b3IgbW9kZXMgd2hpY2ggdXNlIGBpbWVudS0tZ2VuZXJpYy1mdW5jdGlvbicuICBJZiBpdCBpcyBu b3Qgc2V0LCBidXQKYGZvbnQtbG9jay1kZWZhdWx0cycgaXMgc2V0LCB0aGVuIGZvbnQtbG9jaydz IHNldHRpbmcgaXMgdXNlZC4iKQoKOzsgVGhpcyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIHdpdGgg cXVpdHRpbmcgZGlzYWJsZWQsCjs7IHNvIGl0IG5lZWRzIHRvIGJlIGNhcmVmdWwgbmV2ZXIgdG8g bG9vcCEKKGRlZnVuIGltZW51LS1nZW5lcmljLWZ1bmN0aW9uIChwYXR0ZXJucykKICAiUmV0dXJu IGFuIGluZGV4IGFsaXN0IG9mIHRoZSBjdXJyZW50IGJ1ZmZlciBiYXNlZCBvbiBQQVRURVJOUy4K UEFUVEVSTlMgc2hvdWxkIGJlIGFuIGFsaXN0IG9mIHRoZSBzYW1lIGZvcm0gYXMgYGltZW51LWdl bmVyaWMtZXhwcmVzc2lvbicuCgpJZiBgaW1lbnUtZ2VuZXJpYy1za2lwLWNvbW1lbnRzLWFuZC1z dHJpbmdzJyBpcyBub24tbmlsLCB0aGlzIGlnbm9yZXMKdGV4dCBpbnNpZGUgY29tbWVudHMgYW5k IHN0cmluZ3MuCgpJZiBgaW1lbnUtY2FzZS1mb2xkLXNlYXJjaCcgaXMgbm9uLW5pbCwgdGhpcyBp Z25vcmVzIGNhc2UuCgpUaGUgcmV0dXJuIHZhbHVlIGlzIGFuIGFsaXN0IG9mIHRoZSBmb3JtCiAo SU5ERVgtTkFNRSAuIElOREVYLVBPU0lUSU9OKQpvcgogKElOREVYLU5BTUUgSU5ERVgtUE9TSVRJ T04gRlVOQ1RJT04gQVJHVU1FTlRTLi4uKQpUaGUgcmV0dXJuIHZhbHVlIG1heSBhbHNvIGNvbnNp c3Qgb2YgbmVzdGVkIGluZGV4IGFsaXN0cyBsaWtlOgogKElOREVYLU5BTUUgLiBJTkRFWC1BTElT VCkKZGVwZW5kaW5nIG9uIFBBVFRFUk5TLiIKICAobGV0ICgoaW5kZXgtYWxpc3QgKGxpc3QgJ2R1 bW15KSkKICAgICAgICAoY2FzZS1mb2xkLXNlYXJjaCAoaWYgKG9yIChsb2NhbC12YXJpYWJsZS1w ICdpbWVudS1jYXNlLWZvbGQtc2VhcmNoKQoJCQkJICAobm90IChsb2NhbC12YXJpYWJsZS1wICdm b250LWxvY2stZGVmYXVsdHMpKSkKCQkJICAgICAgaW1lbnUtY2FzZS1mb2xkLXNlYXJjaAoJCQkg ICAgKG50aCAyIGZvbnQtbG9jay1kZWZhdWx0cykpKQogICAgICAgIChzdGFydC10aW1lIChmbG9h dC10aW1lKSkKICAgICAgICAob2xkLXRhYmxlIChzeW50YXgtdGFibGUpKQogICAgICAgICh0YWJs ZSAoY29weS1zeW50YXgtdGFibGUgKHN5bnRheC10YWJsZSkpKQogICAgICAgIChzbGlzdCBpbWVu dS1zeW50YXgtYWxpc3QpKQogICAgOzsgTW9kaWZ5IHRoZSBzeW50YXggdGFibGUgdXNlZCB3aGls ZSBtYXRjaGluZyByZWdleHBzLgogICAgKGRvbGlzdCAoc3luIHNsaXN0KQogICAgICA7OyBUaGUg Y2hhcmFjdGVyKHMpIHRvIG1vZGlmeSBtYXkgYmUgYSBzaW5nbGUgY2hhciBvciBhIHN0cmluZy4K ICAgICAgKGlmIChudW1iZXJwIChjYXIgc3luKSkKCSAgKG1vZGlmeS1zeW50YXgtZW50cnkgKGNh ciBzeW4pIChjZHIgc3luKSB0YWJsZSkKICAgICAgICAobWFwYyAobGFtYmRhIChjKQogICAgICAg ICAgICAgICAgKG1vZGlmeS1zeW50YXgtZW50cnkgYyAoY2RyIHN5bikgdGFibGUpKQogICAgICAg ICAgICAgIChjYXIgc3luKSkpKQogICAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkKICAgICh1bndp bmQtcHJvdGVjdAkJCTsgRm9yIHN5bnRheCB0YWJsZS4KCShzYXZlLW1hdGNoLWRhdGEKCSAgKHNl dC1zeW50YXgtdGFibGUgdGFibGUpCgoJICA7OyBNYXAgb3ZlciB0aGUgZWxlbWVudHMgb2YgaW1l bnUtZ2VuZXJpYy1leHByZXNzaW9uCgkgIDs7ICh0eXBpY2FsbHkgZnVuY3Rpb25zLCB2YXJpYWJs ZXMgLi4uKS4KCSAgKGRvbGlzdCAocGF0IHBhdHRlcm5zKQoJICAgIChsZXQgKChtZW51LXRpdGxl IChjYXIgcGF0KSkKCQkgIChyZWdleHAgKG50aCAxIHBhdCkpCgkJICAoaW5kZXggKG50aCAyIHBh dCkpCgkJICAoZnVuY3Rpb24gKG50aCAzIHBhdCkpCgkJICAocmVzdCAobnRoY2RyIDQgcGF0KSkK CQkgIHN0YXJ0IGJlZykKCSAgICAgIDs7IEdvIGJhY2t3YXJkcyBmb3IgY29udmVuaWVuY2Ugb2Yg YWRkaW5nIGl0ZW1zIGluIG9yZGVyLgoJICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkKCSAg ICAgICh3aGlsZSAoYW5kIChpZiAoZnVuY3Rpb25wIHJlZ2V4cCkKCQkJICAgICAgKGZ1bmNhbGwg cmVnZXhwKQoJCQkgICAgKGFuZAoJCQkgICAgIChyZS1zZWFyY2gtYmFja3dhcmQgcmVnZXhwIG5p bCB0KQoJCQkgICAgIDs7IERvIG5vdCBjb3VudCBpbnZpc2libGUgZGVmaW5pdGlvbnMuCgkJCSAg ICAgKGxldCAoKGludmlzIChpbnZpc2libGUtcCAocG9pbnQpKSkpCgkJCSAgICAgICAob3IgKG5v dCBpbnZpcykKCQkJCSAgIChwcm9nbgoJCQkJICAgICAod2hpbGUgKGFuZCBpbnZpcwoJCQkJCQkg KG5vdCAoYm9icCkpKQoJCQkJICAgICAgIChzZXRxIGludmlzIChub3QgKHJlLXNlYXJjaC1iYWNr d2FyZAoJCQkJCQkJIHJlZ2V4cCBuaWwgJ21vdmUpKSkpCgkJCQkgICAgIChub3QgaW52aXMpKSkp KSkKCQkJICA7OyBFeGl0IHRoZSBsb29wIGlmIHdlIGdldCBhbiBlbXB0eSBtYXRjaCwKCQkJICA7 OyBiZWNhdXNlIGl0IG1lYW5zIGEgYmFkIHJlZ2V4cCB3YXMgc3BlY2lmaWVkLgoJCQkgIChub3Qg KD0gKG1hdGNoLWJlZ2lubmluZyAwKSAobWF0Y2gtZW5kIDApKSkKICAgICAgICAgICAgICAgICAg ICAgICAgICA7OyBEb24ndCB0YWtlIGFuIGV4Y2Vzc2l2ZSBhbW91bnQgb2YgdGltZS4KICAgICAg ICAgICAgICAgICAgICAgICAgICAob3IgKDwgKC0gKGZsb2F0LXRpbWUpIHN0YXJ0LXRpbWUpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZW51LW1heC1pbmRleC10aW1lKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvZ24KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAobWVzc2FnZSAiYGltZW51LW1heC1pbmRleC10aW1lJyBleGNlZWRlZCIpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsKSkpCgkJKHNldHEgc3RhcnQgKHBvaW50KSkK CQk7OyBSZWNvcmQgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lIGluIHdoaWNoIHRoZSBtYXRjaCBzdGFy dHMuCgkJOzsgVGhhdCdzIHRoZSBvZmZpY2lhbCBwb3NpdGlvbiBvZiB0aGlzIGRlZmluaXRpb24u CgkJKGdvdG8tY2hhciAobWF0Y2gtYmVnaW5uaW5nIGluZGV4KSkKCQkoYmVnaW5uaW5nLW9mLWxp bmUpCgkJKHNldHEgYmVnIChwb2ludCkpCgkJOzsgQWRkIHRoaXMgc29ydCBvZiBzdWJtZW51IG9u bHkgd2hlbiB3ZSd2ZSBmb3VuZCBhbgoJCTs7IGl0ZW0gZm9yIGl0LCBhdm9pZGluZyBlbXB0eSwg ZHVmZiBtZW51cy4KCQkodW5sZXNzIChhc3NvYyBtZW51LXRpdGxlIGluZGV4LWFsaXN0KQoJCSAg KHB1c2ggKGxpc3QgbWVudS10aXRsZSkgaW5kZXgtYWxpc3QpKQoJCShpZiBpbWVudS11c2UtbWFy a2VycwoJCSAgICAoc2V0cSBiZWcgKGNvcHktbWFya2VyIGJlZykpKQoJCShsZXQgKChpdGVtCgkJ ICAgICAgIChpZiBmdW5jdGlvbgoJCQkgICAobmNvbmMgKGxpc3QgKG1hdGNoLXN0cmluZy1uby1w cm9wZXJ0aWVzIGluZGV4KQoJCQkJCWJlZyBmdW5jdGlvbikKCQkJCSAgcmVzdCkKCQkJIChjb25z IChtYXRjaC1zdHJpbmctbm8tcHJvcGVydGllcyBpbmRleCkKCQkJICAgICAgIGJlZykpKQoJCSAg ICAgIDs7IFRoaXMgaXMgdGhlIGRlc2lyZWQgc3VibWVudSwKCQkgICAgICA7OyBzdGFydGluZyB3 aXRoIGl0cyB0aXRsZSAob3IgbmlsKS4KCQkgICAgICAobWVudSAoYXNzb2MgbWVudS10aXRsZSBp bmRleC1hbGlzdCkpKQoJCSAgOzsgSW5zZXJ0IHRoZSBpdGVtIHVubGVzcyBpdCBpcyBhbHJlYWR5 IHByZXNlbnQuCgkJICAodW5sZXNzIChvciAobWVtYmVyIGl0ZW0gKGNkciBtZW51KSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGFuZCBpbWVudS1nZW5lcmljLXNraXAtY29tbWVudHMt YW5kLXN0cmluZ3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2F2ZS1leGN1 cnNpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgc3Rh cnQpIChudGggOCAoc3ludGF4LXBwc3MpKSkpKQoJCSAgICAoc2V0Y2RyIG1lbnUKCQkJICAgIChj b25zIGl0ZW0gKGNkciBtZW51KSkpKSkKCQk7OyBHbyB0byB0aGUgc3RhcnQgb2YgdGhlIG1hdGNo LCB0byBtYWtlIHN1cmUgd2UKCQk7OyBrZWVwIG1ha2luZyBwcm9ncmVzcyBiYWNrd2FyZHMuCgkJ KGdvdG8tY2hhciBzdGFydCkpKSkpCiAgICAgIChzZXQtc3ludGF4LXRhYmxlIG9sZC10YWJsZSkp CiAgICA7OyBTb3J0IGVhY2ggc3VibWVudSBieSBwb3NpdGlvbi4KICAgIDs7IFRoaXMgaXMgaW4g Y2FzZSBvbmUgc3VibWVudSBnZXRzIGl0ZW1zIGZyb20gdHdvIGRpZmZlcmVudCByZWdleHBzLgog ICAgKGRvbGlzdCAoaXRlbSBpbmRleC1hbGlzdCkKICAgICAgKHdoZW4gKGxpc3RwIGl0ZW0pCgko c2V0Y2RyIGl0ZW0gKHNvcnQgKGNkciBpdGVtKSAnaW1lbnUtLXNvcnQtYnktcG9zaXRpb24pKSkp CiAgICA7OyBSZW1vdmUgYW55IGVtcHR5IG1lbnVzLiAgVGhhdCBjYW4gaGFwcGVuIGJlY2F1c2Ug b2Ygc2tpcHBpbmcKICAgIDs7IHRoaW5ncyBpbnNpZGUgY29tbWVudHMgb3Igc3RyaW5ncy4KICAg IChzZXRxIGluZGV4LWFsaXN0IChjbC1kZWxldGUtaWYKICAgICAgICAgICAgICAgICAgICAgICAo bGFtYmRhIChpdCkgKGFuZCAoY29uc3AgaXQpIChudWxsIChjZHIgaXQpKSkpCiAgICAgICAgICAg ICAgICAgICAgICAgaW5kZXgtYWxpc3QpKQogICAgKGxldCAoKG1haW4tZWxlbWVudCAoYXNzcSBu aWwgaW5kZXgtYWxpc3QpKSkKICAgICAgKG5jb25jIChkZWxxIG1haW4tZWxlbWVudCAoZGVscSAn ZHVtbXkgaW5kZXgtYWxpc3QpKQogICAgICAgICAgICAgKGNkciBtYWluLWVsZW1lbnQpKSkpKQoK Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Owo7OzsKOzs7IFRoZSBtYWluIGZ1bmN0aW9ucyBmb3IgdGhpcyBwYWNrYWdlIQo7OzsK Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7OwoKOzsgU2VlIGFsc28gaW5mby1sb29rdXAtZmluZC1pdGVtCihkZWZ1biBpbWVudS1m aW5kLWRlZmF1bHQgKGd1ZXNzIGNvbXBsZXRpb25zKQogICJGdXp6aWx5IGZpbmQgYW4gaXRlbSBi YXNlZCBvbiBHVUVTUyBpbnNpZGUgdGhlIGFsaXN0IENPTVBMRVRJT05TLiIKICAoY2F0Y2ggJ2Zv dW5kCiAgICAobGV0ICgoY2FzZS1mb2xkLXNlYXJjaCB0KSkKICAgICAgKGlmIChhc3NvYyBndWVz cyBjb21wbGV0aW9ucykgZ3Vlc3MKCShkb2xpc3QgKHJlIChsaXN0IChjb25jYXQgIlxcYCIgKHJl Z2V4cC1xdW90ZSBndWVzcykgIlxcJyIpCgkJCSAgKGNvbmNhdCAiXFxgIiAocmVnZXhwLXF1b3Rl IGd1ZXNzKSkKCQkJICAoY29uY2F0IChyZWdleHAtcXVvdGUgZ3Vlc3MpICJcXCciKQoJCQkgIChy ZWdleHAtcXVvdGUgZ3Vlc3MpKSkKCSAgKGRvbGlzdCAoeCBjb21wbGV0aW9ucykKCSAgICAoaWYg KHN0cmluZy1tYXRjaCByZSAoY2FyIHgpKSAodGhyb3cgJ2ZvdW5kIChjYXIgeCkpKSkpKSkpKQoK KGRlZnVuIGltZW51LS1jb21wbGV0aW9uLWJ1ZmZlciAoaW5kZXgtYWxpc3QgJm9wdGlvbmFsIHBy b21wdCkKICAiTGV0IHRoZSB1c2VyIHNlbGVjdCBmcm9tIElOREVYLUFMSVNUIGluIGEgY29tcGxl dGlvbiBidWZmZXIgd2l0aCBQUk9NUFQuCgpSZXR1cm4gb25lIG9mIHRoZSBlbnRyaWVzIGluIGlu ZGV4LWFsaXN0IG9yIG5pbC4iCiAgOzsgQ3JlYXRlIGEgbGlzdCBmb3IgdGhpcyBidWZmZXIgb25s eSB3aGVuIG5lZWRlZC4KICAobGV0ICgobmFtZSAodGhpbmctYXQtcG9pbnQgJ3N5bWJvbCkpCglj aG9pY2UKCShwcmVwYXJlZC1pbmRleC1hbGlzdAoJIChpZiAobm90IGltZW51LXNwYWNlLXJlcGxh Y2VtZW50KSBpbmRleC1hbGlzdAoJICAgKG1hcGNhcgoJICAgIChsYW1iZGEgKGl0ZW0pCgkgICAg ICAoY29ucyAoc3Vic3QtY2hhci1pbi1zdHJpbmcgP1xzIChhcmVmIGltZW51LXNwYWNlLXJlcGxh Y2VtZW50IDApCgkJCQkJICAoY2FyIGl0ZW0pKQoJCSAgICAoY2RyIGl0ZW0pKSkKCSAgICBpbmRl eC1hbGlzdCkpKSkKICAgICh3aGVuIChzdHJpbmdwIG5hbWUpCiAgICAgIChzZXRxIG5hbWUgKG9y IChpbWVudS1maW5kLWRlZmF1bHQgbmFtZSBwcmVwYXJlZC1pbmRleC1hbGlzdCkgbmFtZSkpKQog ICAgKHVubGVzcyBwcm9tcHQKICAgICAgKHNldHEgcHJvbXB0IChmb3JtYXQtcHJvbXB0CiAgICAg ICAgICAgICAgICAgICAgIkluZGV4IGl0ZW0iCgkgICAgICAgICAgICAoYW5kIG5hbWUKICAgICAg ICAgICAgICAgICAgICAgICAgIChpbWVudS0taW4tYWxpc3QgbmFtZSBwcmVwYXJlZC1pbmRleC1h bGlzdCkKICAgICAgICAgICAgICAgICAgICAgICAgIDs7IERlZmF1bHQgdG8gYG5hbWUnIGlmIGl0 J3MgaW4gdGhlIGFsaXN0LgogICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSkpKSkKICAgIDs7 IERpc3BsYXkgdGhlIGNvbXBsZXRpb24gYnVmZmVyLgogICAgKG1pbmlidWZmZXItd2l0aC1zZXR1 cC1ob29rCiAgICAgICAgKGxhbWJkYSAoKQogICAgICAgICAgKHNldHEtbG9jYWwgbWluaWJ1ZmZl ci1hbGxvdy10ZXh0LXByb3BlcnRpZXMgdCkKICAgICAgICAgIChzZXRxLWxvY2FsIGNvbXBsZXRp b24tZXh0cmEtcHJvcGVydGllcwogICAgICAgICAgICAgICAgICAgICAgYCggOmNhdGVnb3J5IGlt ZW51CiAgICAgICAgICAgICAgICAgICAgICAgICAsQCh3aGVuIChlcSBpbWVudS1mbGF0dGVuICdh bm5vdGF0aW9uKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAoOmFubm90YXRpb24tZnVu Y3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwobGFtYmRhIChzKSAoZ2V0LXRl eHQtcHJvcGVydHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg MCAnaW1lbnUtc2VjdGlvbiBzKSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgLEAod2hlbiAo ZXEgaW1lbnUtZmxhdHRlbiAnZ3JvdXApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCg6 Z3JvdXAtZnVuY3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwobGFtYmRhIChz IHRyYW5zZm9ybSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiB0cmFuc2Zv cm0gcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2V0LXRleHQtcHJvcGVy dHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgJ2ltZW51LXNlY3Rpb24g cykpKSkpKSkKICAgICAgICAgICh1bmxlc3MgaW1lbnUtZWFnZXItY29tcGxldGlvbi1idWZmZXIK ICAgICAgICAgICAgKG1pbmlidWZmZXItY29tcGxldGlvbi1oZWxwKSkpCiAgICAgIChzZXRxIG5h bWUgKGNvbXBsZXRpbmctcmVhZCBwcm9tcHQKCQkJCSAgcHJlcGFyZWQtaW5kZXgtYWxpc3QKCQkJ CSAgbmlsIHQgbmlsICdpbWVudS0taGlzdG9yeS1saXN0IG5hbWUpKSkKCiAgICAod2hlbiAoc3Ry aW5ncCBuYW1lKQogICAgICAob3IgKGdldC10ZXh0LXByb3BlcnR5IDAgJ2ltZW51LWNob2ljZSBu YW1lKQoJICAocHJvZ24KCSAgICAoc2V0cSBjaG9pY2UgKGFzc29jIG5hbWUgcHJlcGFyZWQtaW5k ZXgtYWxpc3QpKQoJICAgIChpZiAoaW1lbnUtLXN1YmFsaXN0LXAgY2hvaWNlKQoJCShpbWVudS0t Y29tcGxldGlvbi1idWZmZXIgKGNkciBjaG9pY2UpIHByb21wdCkKCSAgICAgIGNob2ljZSkpKSkp KQoKKGRlZnVuIGltZW51LS1tb3VzZS1tZW51IChpbmRleC1hbGlzdCBldmVudCAmb3B0aW9uYWwg dGl0bGUpCiAgIkxldCB0aGUgdXNlciBzZWxlY3QgZnJvbSBhIGJ1ZmZlciBpbmRleCBmcm9tIGEg bW91c2UgbWVudS4KCklOREVYLUFMSVNUIGlzIHRoZSBidWZmZXIgaW5kZXggYW5kIEVWRU5UIGlz IGEgbW91c2UgZXZlbnQuCgpSZXR1cm5zIHQgZm9yIHJlc2NhbiBhbmQgb3RoZXJ3aXNlIGFuIGVs ZW1lbnQgb3Igc3ViZWxlbWVudCBvZiBJTkRFWC1BTElTVC4iCiAgKHNldHEgaW5kZXgtYWxpc3Qg KGltZW51LS1zcGxpdC1zdWJtZW51cyBpbmRleC1hbGlzdCkpCiAgKGxldCogKChtZW51IChpbWVu dS0tc3BsaXQtbWVudSBpbmRleC1hbGlzdCAob3IgdGl0bGUgKGJ1ZmZlci1uYW1lKSkpKQoJICht YXAgKGltZW51LS1jcmVhdGUta2V5bWFwIChjYXIgbWVudSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGNkciAoaWYgKGFuZCAobnVsbCAoY2RkciBtZW51KSkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5ncCAoY2FhZHIg bWVudSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGNvbnNwIChjZGFkciBtZW51KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChjYWRyIG1lbnUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBtZW51KSkpKSkKICAgIChwb3B1cC1tZW51IG1hcCBldmVudCkpKQoKKGRlZnVuIGlt ZW51LS1mbGF0dGVuLWluZGV4LWFsaXN0IChpbmRleC1hbGlzdCAmb3B0aW9uYWwgY29uY2F0LW5h bWVzIHByZWZpeCkKICA7OyBUYWtlcyBhIG5lc3RlZCBJTkRFWC1BTElTVCBhbmQgcmV0dXJucyBh IGZsYXQgaW5kZXggYWxpc3QuCiAgOzsgSWYgb3B0aW9uYWwgQ09OQ0FULU5BTUVTIGlzIG5vbi1u aWwsIHRoZW4gYSBuZXN0ZWQgaW5kZXggaGFzIGl0cwogIDs7IG5hbWUgYW5kIGEgc3BhY2UgY29u Y2F0ZW5hdGVkIHRvIHRoZSBuYW1lcyBvZiB0aGUgY2hpbGRyZW4uCiAgOzsgVGhpcmQgYXJndW1l bnQgUFJFRklYIGlzIGZvciBpbnRlcm5hbCB1c2Ugb25seS4KICAobWFwY2FuCiAgIChsYW1iZGEg KGl0ZW0pCiAgICAgKGxldCogKChuYW1lIChjYXIgaXRlbSkpCgkgICAgKHBvcyAoY2RyIGl0ZW0p KQoJICAgIChuZXctcHJlZml4IChhbmQgY29uY2F0LW5hbWVzCgkJCSAgICAgKGlmIHByZWZpeAoJ CQkJIChjb25jYXQgcHJlZml4IGltZW51LWxldmVsLXNlcGFyYXRvciBuYW1lKQoJCQkgICAgICAg bmFtZSkpKSkKICAgICAgIChjb25kCgkoKG5vdCAoaW1lbnUtLXN1YmFsaXN0LXAgaXRlbSkpCgkg KGxpc3QgKGNvbnMgKHBjYXNlIGltZW51LWZsYXR0ZW4KICAgICAgICAgICAgICAgICAgICAgICAo J2Fubm90YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgKGlmIHByZWZpeAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHByb3BlcnRpemUgbmFtZQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ2ltZW51LXNlY3Rpb24gKGZvcm1hdCAiICglcykiIHByZWZpeCkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbWVudS1jaG9pY2UgaXRl bSkKICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcGVydGl6ZSBuZXctcHJlZml4ICdpbWVu dS1jaG9pY2UgaXRlbSkpKQogICAgICAgICAgICAgICAgICAgICAgICgnZ3JvdXAgKHByb3BlcnRp emUgbmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltZW51 LXNlY3Rpb24gKG9yIHByZWZpeCAiKiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnaW1lbnUtY2hvaWNlIGl0ZW0pKQogICAgICAgICAgICAgICAgICAgICAgIChf IG5ldy1wcmVmaXgpKQoJCSAgICAgcG9zKSkpCgkodAoJIChpbWVudS0tZmxhdHRlbi1pbmRleC1h bGlzdCBwb3MgY29uY2F0LW5hbWVzIG5ldy1wcmVmaXgpKSkpKQogICBpbmRleC1hbGlzdCkpCgoo ZGVmdW4gaW1lbnUtY2hvb3NlLWJ1ZmZlci1pbmRleCAoJm9wdGlvbmFsIHByb21wdCBhbGlzdCkK ICAiTGV0IHRoZSB1c2VyIHNlbGVjdCBmcm9tIGEgYnVmZmVyIGluZGV4IGFuZCByZXR1cm4gdGhl IGNob3NlbiBpbmRleC4KCklmIHRoZSB1c2VyIG9yaWdpbmFsbHkgYWN0aXZhdGVkIHRoaXMgZnVu Y3Rpb24gd2l0aCB0aGUgbW91c2UsIGEgbW91c2UKbWVudSBpcyB1c2VkLiAgT3RoZXJ3aXNlIGEg Y29tcGxldGlvbiBidWZmZXIgaXMgdXNlZCBhbmQgdGhlIHVzZXIgaXMKcHJvbXB0ZWQgd2l0aCBQ Uk9NUFQuCgpJZiB5b3UgY2FsbCB0aGlzIGZ1bmN0aW9uIHdpdGggaW5kZXggYWxpc3QgQUxJU1Qs IHRoZW4gaXQgbGV0cyB0aGUgdXNlcgpzZWxlY3QgZnJvbSBBTElTVC4KCldpdGggbm8gaW5kZXgg YWxpc3QgQUxJU1QsIGl0IGNhbGxzIGBpbWVudS0tbWFrZS1pbmRleC1hbGlzdCcgdG8KY3JlYXRl IHRoZSBpbmRleCBhbGlzdC4KCklmIGBpbWVudS11c2UtcG9wdXAtbWVudScgaXMgbmlsLCB0aGVu IHRoZSBjb21wbGV0aW9uIGJ1ZmZlcgppcyBhbHdheXMgdXNlZCwgbm8gbWF0dGVyIGlmIHRoZSBt b3VzZSB3YXMgdXNlZCBvciBub3QuCgpUaGUgcmV0dXJuZWQgdmFsdWUgaXMgb2YgdGhlIGZvcm0g KElOREVYLU5BTUUgLiBJTkRFWC1QT1NJVElPTikuIgogIChsZXQgKGluZGV4LWFsaXN0CgkobW91 c2UtdHJpZ2dlcmVkIChsaXN0cCBsYXN0LW5vbm1lbnUtZXZlbnQpKQoJKHJlc3VsdCB0KSkKICAg IDs7IElmIHNlbGVjdGVkIGJ5IG1vdXNlLCBzZWUgdG8gdGhhdCB0aGUgd2luZG93IHdoZXJlIHRo ZSBtb3VzZSBpcwogICAgOzsgcmVhbGx5IGlzIHNlbGVjdGVkLgogICAgKGFuZCBtb3VzZS10cmln Z2VyZWQKCSAobm90IChlcXVhbCBsYXN0LW5vbm1lbnUtZXZlbnQgJyhtZW51LWJhcikpKQoJIChs ZXQgKCh3aW5kb3cgKHBvc24td2luZG93IChldmVudC1zdGFydCBsYXN0LW5vbm1lbnUtZXZlbnQp KSkpCgkgICAob3IgKGZyYW1lcCB3aW5kb3cpIChudWxsIHdpbmRvdykgKHNlbGVjdC13aW5kb3cg d2luZG93KSkpKQogICAgOzsgQ3JlYXRlIGEgbGlzdCBmb3IgdGhpcyBidWZmZXIgb25seSB3aGVu IG5lZWRlZC4KICAgICh3aGlsZSAoZXEgcmVzdWx0IHQpCiAgICAgIChzZXRxIGluZGV4LWFsaXN0 IChpZiBhbGlzdCBhbGlzdCAoaW1lbnUtLW1ha2UtaW5kZXgtYWxpc3QpKSkKICAgICAgKHdoZW4g aW1lbnUtZmxhdHRlbgogICAgICAgIChzZXRxIGluZGV4LWFsaXN0IChpbWVudS0tZmxhdHRlbi1p bmRleC1hbGlzdCBpbmRleC1hbGlzdCB0KSkpCiAgICAgIChzZXRxIHJlc3VsdAoJICAgIChpZiAo YW5kIGltZW51LXVzZS1wb3B1cC1tZW51CgkJICAgICAob3IgKGVxIGltZW51LXVzZS1wb3B1cC1t ZW51IHQpIG1vdXNlLXRyaWdnZXJlZCkpCgkJKGltZW51LS1tb3VzZS1tZW51IGluZGV4LWFsaXN0 IGxhc3Qtbm9ubWVudS1ldmVudCkKCSAgICAgIChpbWVudS0tY29tcGxldGlvbi1idWZmZXIgaW5k ZXgtYWxpc3QgcHJvbXB0KSkpCiAgICAgIChhbmQgKGVxdWFsIHJlc3VsdCBpbWVudS0tcmVzY2Fu LWl0ZW0pCgkgICAoaW1lbnUtLWNsZWFudXApCgkgICAoc2V0cSByZXN1bHQgdCBpbWVudS0taW5k ZXgtYWxpc3QgbmlsKSkpCiAgICByZXN1bHQpKQoKKGRlZnZhci1sb2NhbCBpbWVudS0tbWVudWJh ci1rZXltYXAgbmlsKQoKOzs7IyMjYXV0b2xvYWQKKGRlZnVuIGltZW51LWFkZC10by1tZW51YmFy IChuYW1lKQogICJBZGQgYW4gYGltZW51JyBlbnRyeSB0byB0aGUgbWVudSBiYXIgZm9yIHRoZSBj dXJyZW50IGJ1ZmZlci4KTkFNRSBpcyBhIHN0cmluZyB1c2VkIHRvIG5hbWUgdGhlIG1lbnUgYmFy IGl0ZW0uClNlZSB0aGUgY29tbWFuZCBgaW1lbnUnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKICAo aW50ZXJhY3RpdmUgInNJbWVudSBtZW51IGl0ZW0gbmFtZTogIikKICAoaWYgKG9yIChhbmQgaW1l bnUtcHJldi1pbmRleC1wb3NpdGlvbi1mdW5jdGlvbgoJICAgICAgIGltZW51LWV4dHJhY3QtaW5k ZXgtbmFtZS1mdW5jdGlvbikKCSAgaW1lbnUtZ2VuZXJpYy1leHByZXNzaW9uCgkgIChub3QgKGVx IGltZW51LWNyZWF0ZS1pbmRleC1mdW5jdGlvbgoJCSAgICdpbWVudS1kZWZhdWx0LWNyZWF0ZS1p bmRleC1mdW5jdGlvbikpKQogICAgICAodW5sZXNzIChhbmQgKGN1cnJlbnQtbG9jYWwtbWFwKQog ICAgICAgICAgICAgICAgICAgKGtleW1hcHAgKGxvb2t1cC1rZXkgKGN1cnJlbnQtbG9jYWwtbWFw KSBbbWVudS1iYXIgaW5kZXhdKSkpCgkobGV0ICgobmV3bWFwIChtYWtlLXNwYXJzZS1rZXltYXAp KSkKCSAgKHNldC1rZXltYXAtcGFyZW50IG5ld21hcCAoY3VycmVudC1sb2NhbC1tYXApKQoJICAo c2V0cSBpbWVudS0tbGFzdC1tZW51YmFyLWluZGV4LWFsaXN0IG5pbCkKICAgICAgICAgIChzZXRx IGltZW51LS1tZW51YmFyLWtleW1hcCAobWFrZS1zcGFyc2Uta2V5bWFwICJJbWVudSIpKQoJICAo ZGVmaW5lLWtleSBuZXdtYXAgW21lbnUtYmFyIGluZGV4XQoJICAgIGAobWVudS1pdGVtICxuYW1l ICxpbWVudS0tbWVudWJhci1rZXltYXApKQoJICAodXNlLWxvY2FsLW1hcCBuZXdtYXApCgkgIChh ZGQtaG9vayAnbWVudS1iYXItdXBkYXRlLWhvb2sgJ2ltZW51LXVwZGF0ZS1tZW51YmFyKSkpCiAg ICAoaW1lbnUtdW5hdmFpbGFibGUtZXJyb3IgIlRoZSBtb2RlIGAlcycgZG9lcyBub3Qgc3VwcG9y dCBJbWVudSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0LW1vZGUtbGluZSBt b2RlLW5hbWUpKSkpCgo7OzsjIyNhdXRvbG9hZAooZGVmdW4gaW1lbnUtYWRkLW1lbnViYXItaW5k ZXggKCkKICAiQWRkIGFuIEltZW51IFwiSW5kZXhcIiBlbnRyeSBvbiB0aGUgbWVudSBiYXIgZm9y IHRoZSBjdXJyZW50IGJ1ZmZlci4KCkEgdHJpdmlhbCBpbnRlcmZhY2UgdG8gYGltZW51LWFkZC10 by1tZW51YmFyJyBzdWl0YWJsZSBmb3IgdXNlIGluIGEgaG9vay4iCiAgKGludGVyYWN0aXZlKQog IChpbWVudS1hZGQtdG8tbWVudWJhciAiSW5kZXgiKSkKCihkZWZ2YXItbG9jYWwgaW1lbnUtbWVu dWJhci1tb2RpZmllZC10aWNrIDAKICAiVmFsdWUgb2YgKGJ1ZmZlci1jaGFycy1tb2RpZmllZC10 aWNrKSB3aGVuIGBpbWVudS11cGRhdGUtbWVudWJhcicgd2FzIGNhbGxlZC4iKQoKKGRlZnVuIGlt ZW51LXVwZGF0ZS1tZW51YmFyICgpCiAgKHdoZW4gKGFuZCAoY3VycmVudC1sb2NhbC1tYXApCiAg ICAgICAgICAgICBpbWVudS0tbWVudWJhci1rZXltYXAKCSAgICAgKC89IChidWZmZXItY2hhcnMt bW9kaWZpZWQtdGljaykgaW1lbnUtbWVudWJhci1tb2RpZmllZC10aWNrKSkKICAgIChzZXRxIGlt ZW51LW1lbnViYXItbW9kaWZpZWQtdGljayAoYnVmZmVyLWNoYXJzLW1vZGlmaWVkLXRpY2spKQog ICAgKGxldCAoKGluZGV4LWFsaXN0IChpbWVudS0tbWFrZS1pbmRleC1hbGlzdCB0KSkpCiAgICAg IDs7IERvbid0IGJvdGhlciB1cGRhdGluZyBpZiB0aGUgaW5kZXgtYWxpc3QgaGFzIG5vdCBjaGFu Z2VkCiAgICAgIDs7IHNpbmNlIHRoZSBsYXN0IHRpbWUgd2UgZGlkIGl0LgogICAgICAodW5sZXNz IChlcXVhbCBpbmRleC1hbGlzdCBpbWVudS0tbGFzdC1tZW51YmFyLWluZGV4LWFsaXN0KQogICAg ICAgIChzZXRxIGltZW51LS1sYXN0LW1lbnViYXItaW5kZXgtYWxpc3QgaW5kZXgtYWxpc3QpCiAg ICAgICAgKHNldHEgaW5kZXgtYWxpc3QgKGltZW51LS1zcGxpdC1zdWJtZW51cyBpbmRleC1hbGlz dCkpCgkobGV0KiAoKG1lbnUgKGltZW51LS1zcGxpdC1tZW51IGluZGV4LWFsaXN0CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnVmZmVyLW5hbWUpKSkKICAgICAgICAg ICAgICAgKG1lbnUxIChpbWVudS0tY3JlYXRlLWtleW1hcAogICAgICAgICAgICAgICAgICAgICAg IChjYXIgbWVudSkKICAgICAgICAgICAgICAgICAgICAgICAoY2RyIChpZiAoYW5kIChudWxsIChj ZGRyIG1lbnUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZ3Ag KGNhYWRyIG1lbnUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnNw IChjZGFkciBtZW51KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhZHIgbWVu dSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudSkpCiAgICAgICAgICAgICAgICAg ICAgICAgJ2ltZW51LS1tZW51YmFyLXNlbGVjdCkpKQoJICAoc2V0Y2RyIGltZW51LS1tZW51YmFy LWtleW1hcCAoY2RyIG1lbnUxKSkpKSkpKQoKKGRlZnVuIGltZW51LS1tZW51YmFyLXNlbGVjdCAo aXRlbSkKICAiVXNlIEltZW51IHRvIHNlbGVjdCB0aGUgZnVuY3Rpb24gb3IgdmFyaWFibGUgbmFt ZWQgaW4gdGhpcyBtZW51IElURU0uIgogIChpZiAoZXF1YWwgaXRlbSBpbWVudS0tcmVzY2FuLWl0 ZW0pCiAgICAgIChwcm9nbgoJKGltZW51LS1jbGVhbnVwKQoJOzsgTWFrZSBzdXJlIGltZW51LXVw ZGF0ZS1tZW51YmFyIHJlZG9lcyBldmVyeXRoaW5nLgoJKHNldHEgaW1lbnUtbWVudWJhci1tb2Rp ZmllZC10aWNrIC0xKQoJKHNldHEgaW1lbnUtLWluZGV4LWFsaXN0IG5pbCkKCShzZXRxIGltZW51 LS1sYXN0LW1lbnViYXItaW5kZXgtYWxpc3QgbmlsKQoJKGltZW51LXVwZGF0ZS1tZW51YmFyKQoJ dCkKICAgIChpbWVudSBpdGVtKQogICAgbmlsKSkKCihkZWZ1biBpbWVudS1kZWZhdWx0LWdvdG8t ZnVuY3Rpb24gKF9uYW1lIHBvc2l0aW9uICZyZXN0IF9yZXN0KQogICJNb3ZlIHRvIHRoZSBnaXZl biBwb3NpdGlvbi4KCk5BTUUgaXMgaWdub3JlZC4gIFBPU0lUSU9OIGlzIHdoZXJlIHRvIG1vdmUu ICBSRVNUIGlzIGFsc28gaWdub3JlZC4KVGhlIGlnbm9yZWQgYXJncyBqdXN0IG1ha2UgdGhpcyBm dW5jdGlvbiBoYXZlIHRoZSBzYW1lIGludGVyZmFjZSBhcyBhCmZ1bmN0aW9uIHBsYWNlZCBpbiBh IHNwZWNpYWwgaW5kZXgtaXRlbS4iCiAgKGlmIChvciAoPCBwb3NpdGlvbiAocG9pbnQtbWluKSkK CSAgKD4gcG9zaXRpb24gKHBvaW50LW1heCkpKQogICAgICA7OyBXaWRlbiBpZiBvdXRzaWRlIG5h cnJvd2luZy4KICAgICAgKHdpZGVuKSkKICAoZ290by1jaGFyIHBvc2l0aW9uKSkKCjs7OyMjI2F1 dG9sb2FkCihkZWZ1biBpbWVudSAoaW5kZXgtaXRlbSkKICAiSnVtcCB0byBhIHBsYWNlIGluIHRo ZSBidWZmZXIgY2hvc2VuIHVzaW5nIGEgYnVmZmVyIG1lbnUgb3IgbW91c2UgbWVudS4KSU5ERVgt SVRFTSBzcGVjaWZpZXMgdGhlIHBvc2l0aW9uLiAgU2VlIGBpbWVudS1jaG9vc2UtYnVmZmVyLWlu ZGV4Jwpmb3IgbW9yZSBpbmZvcm1hdGlvbi4iCiAgKGludGVyYWN0aXZlIChsaXN0IChpbWVudS1j aG9vc2UtYnVmZmVyLWluZGV4KSkpCiAgOzsgQ29udmVydCBhIHN0cmluZyB0byBhbiBhbGlzdCBl bGVtZW50LgogIChpZiAoc3RyaW5ncCBpbmRleC1pdGVtKQogICAgICAoc2V0cSBpbmRleC1pdGVt IChhc3NvYyBpbmRleC1pdGVtIChpbWVudS0tbWFrZS1pbmRleC1hbGlzdCkpKSkKICAod2hlbiBp bmRleC1pdGVtCiAgICAocGNhc2UgaW5kZXgtaXRlbQogICAgICAoYCgsbmFtZSAscG9zICxmbiAu ICxhcmdzKQogICAgICAgKHB1c2gtbWFyayBuaWwgdCkKICAgICAgIChhcHBseSBmbiBuYW1lIHBv cyBhcmdzKQogICAgICAgKHJ1bi1ob29rcyAnaW1lbnUtYWZ0ZXItanVtcC1ob29rKSkKICAgICAg KGAoLG5hbWUgLiAscG9zKSAoaW1lbnUgKGxpc3QgbmFtZSBwb3MgaW1lbnUtZGVmYXVsdC1nb3Rv LWZ1bmN0aW9uKSkpCiAgICAgIChfIChlcnJvciAiVW5rbm93biBpbWVudSBpdGVtOiAlUyIgaW5k ZXgtaXRlbSkpKSkpCgooZGVmdW4gaW1lbnUtZmx1c2gtY2FjaGUgKCkKICAiRmx1c2ggdGhlIGN1 cnJlbnQgaW1lbnUgY2FjaGUuClRoaXMgZm9yY2VzIGEgZnVsbCByZXNjYW4gb2YgdGhlIGJ1ZmZl ciB0byByZWNyZWF0ZSB0aGUgaW5kZXggYWxpc3QKbmV4dCB0aW1lIGBpbWVudScgaXMgaW52b2tl ZC4iCiAgKGltZW51LS1jbGVhbnVwKQogIChzZXRxIGltZW51LS1pbmRleC1hbGlzdCBuaWwpKQoK KHByb3ZpZGUgJ2ltZW51KQoKOzs7IGltZW51LmVsIGVuZHMgaGVyZQo= --_003_DS7PR10MB52326E333C6F33F2228FF0EDF34AADS7PR10MB5232namp_-- From debbugs-submit-bounces@debbugs.gnu.org Sun Jul 13 01:44:26 2025 Received: (at 78935-done) by debbugs.gnu.org; 13 Jul 2025 05:44:26 +0000 Received: from localhost ([127.0.0.1]:50412 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uapVi-0006QD-2y for submit@debbugs.gnu.org; Sun, 13 Jul 2025 01:44:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:49444) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uapVf-0006Pd-74 for 78935-done@debbugs.gnu.org; Sun, 13 Jul 2025 01:44:23 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uapVZ-00069p-DM; Sun, 13 Jul 2025 01:44:17 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=v1S6ZxYAIXBYsghR/5d7zZDudfTPhXnnFjsh+MYn/9M=; b=dMkvlCuBni9s 092KuPzV9CdoLSsBeokpJuGB0eZt/52tWMs91GsJD+u3YVgTp3lKSJtgkI+etjZvg2/06VuiAEGK4 E1ThvtDo+2518sMNC+7iQ+y67ixMEH7tEV5FsWfrjIrA6pV6ZuYRhB9r1J3kUoKkfcJmBMP4vKREf kTQCuYm76ZEV4ddKe+WS+WP9gr5x9j2H0+5U59S2Xxl8g56rdjP1/na42sLkPb+Pcr18ASdHDdqwe 1JtDB7OVR9171mfTiSeNw0Sz7I/SGLsGWr//BHBGFn19I6Bg48uBIr0+QYQq3zfpJu+twE21iTfee v12pXSxbQ61b/J3aFj5+Bw==; Date: Sun, 13 Jul 2025 08:44:14 +0300 Message-Id: <86tt3gd4r5.fsf@gnu.org> From: Eli Zaretskii To: Drew Adams In-Reply-To: (message from Drew Adams on Sat, 12 Jul 2025 17:17:36 +0000) Subject: Re: bug#78935: 30.1.90; [PATCH] Let Imenu optionally allow duplicate menu entries References: <86bjpzvwqx.fsf@gnu.org> <86sejavb72.fsf@gnu.org> <86pleeue43.fsf@gnu.org> <86wm8desfd.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 78935-done Cc: 78935-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Drew Adams > CC: "78935@debbugs.gnu.org" <78935@debbugs.gnu.org> > Date: Sat, 12 Jul 2025 17:17:36 +0000 > > > > Done. See attached imenu.el patch and patched file. > > > > I was about to install the patch, but it triggers a compilation > > warning: > > > > ELC imenu.elc > > > > In end of data: > > imenu.el:522:25: Warning: the function `increment-symbol-name' is not > > known to be defined. > > > > I guess something is missing from the patch? > > Ouch! Really sorry for that. Thank goodness for that > warning and that you noticed it. > > The correct files are attached here. Let me know, if > see another problem. Thanks, now installed on the master branch, and closing the bug. From unknown Sat Sep 06 00:11:14 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Sun, 10 Aug 2025 11:24:06 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator