From debbugs-submit-bounces@debbugs.gnu.org Sun Feb 02 22:17:56 2025 Received: (at submit) by debbugs.gnu.org; 3 Feb 2025 03:17:56 +0000 Received: from localhost ([127.0.0.1]:37047 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1temyC-0004pt-2I for submit@debbugs.gnu.org; Sun, 02 Feb 2025 22:17:56 -0500 Received: from lists.gnu.org ([2001:470:142::17]:33134) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1temy9-0004pd-8U for submit@debbugs.gnu.org; Sun, 02 Feb 2025 22:17:53 -0500 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 1temy1-0007qM-GK for bug-gnu-emacs@gnu.org; Sun, 02 Feb 2025 22:17:45 -0500 Received: from mail-francecentralazolkn190130003.outbound.protection.outlook.com ([2a01:111:f403:d20a::3] helo=PA4PR04CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1temxz-0002X6-Mw for bug-gnu-emacs@gnu.org; Sun, 02 Feb 2025 22:17:45 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=uhRLK62sJhmgsVN3iCSxod2VFg+9F526oX4OZ8vafOlsj4VVntITLF+Jc1AUpKVEewRBNPg1cZgPHS0tvq8FJAeqqzkZsHgH7IiFX0UudmF/Ope6BZuNsxrRrzVC3PGhFtCHH8m1XxV4i/vx/GZcHOBddWXLRxJ7wNQJn1xFtLkAXvyL6k8mo0IdUsWztechYXZ9NvmKr0wvv9m4T68u85zP+QpwvakFDE/RpEa/4WcaSMPM3Po5NOmgxeGVpf1XegOeqF15ccj4J7E5OCLw0iJDoHHUD3DyzVRN1Pwt5zwSlWb2YE4d8KgDWPs2eJvTovEJwwpf2IlfNcyyJhY56A== 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=KJPxropn8ilSzZ+oT9KVKUTZjrsJRjw7kqc0/C5ulFg=; b=PoD/SbnlbOWju6lXoEpUaJMl+ZK5o3MtwRanXuzhT4fiMz4t48q7b6St0bVgbyN2jhMc8+PZbFMI06fcSvv6vEpVqJJwLwaPmfaMB0wJp7sJ26eke+1cTJI4n6hgysfe2cu/eQjd1yxnymM6luCD49kV8wmif0KXbJlydzx1PPX4EcnFQAT79z1Fkq3BWyL0tIkUkFeZ62lGFNBTaxT75KczN0Re3DSo42gyvDs5FCnzQhItrp5+IIPXNiIL/EgNtm1klUWgFANfdq4YEu8IbDbjjJT6ds0IAGafArT0UPsaOd+sbzpi7GehdUacGoS+KUEO2khwxqOOUuSdoYqwGg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=live.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KJPxropn8ilSzZ+oT9KVKUTZjrsJRjw7kqc0/C5ulFg=; b=hg7X90B0AqLEx/R3ahKXTn2Kt25lv4v+BqyKrL436tGxE46R39AG3j+OCqzHEuHlpih/hg1kPpN760LRiy3VqsghJeAgpcpRwGNZacE+Z6VzTrepGvFk51lGPY4i0c7OFONIVa7aNFxhWKW6owuQonKhETegJRUcNtWBiTz9HWjQJz7eLYPCVQlp0z9DE1Q7vZZ89IE+iUwrPju5zQ789rOIkOXEtWiZqIIWXynQ5cU0XbvPV6l6WiGJlBMCkTp+QOkCH1gI1X1znWUSWEPU3fymy+XlDYDwwwY6v5HL6+GEZsxhGIyNkaRPzhfKf55Q1ZAvN/ELOwwjyjsQXCM2Cg== Received: from DU2PR02MB10109.eurprd02.prod.outlook.com (2603:10a6:10:497::14) by DB9PR02MB6633.eurprd02.prod.outlook.com (2603:10a6:10:218::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8398.18; Mon, 3 Feb 2025 03:12:40 +0000 Received: from DU2PR02MB10109.eurprd02.prod.outlook.com ([fe80::f3c9:d4cb:290:d487]) by DU2PR02MB10109.eurprd02.prod.outlook.com ([fe80::f3c9:d4cb:290:d487%5]) with mapi id 15.20.8398.025; Mon, 3 Feb 2025 03:12:39 +0000 From: arthur miller To: "bug-gnu-emacs@gnu.org" Subject: 31.0.50; Observed behavior for substitute-in-file-name different from the doc string Thread-Topic: 31.0.50; Observed behavior for substitute-in-file-name different from the doc string Thread-Index: AQHbdekLW2BNjNZZBkWqvVWO5b7Bvw== Date: Mon, 3 Feb 2025 03:12:39 +0000 Message-ID: Accept-Language: sv-SE, en-US Content-Language: sv-SE X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DU2PR02MB10109:EE_|DB9PR02MB6633:EE_ x-ms-office365-filtering-correlation-id: f3e733f2-6960-4903-de2a-08dd44009e06 x-microsoft-antispam: BCL:0; ARA:14566002|15030799003|19110799003|8060799006|7092599003|15080799006|461199028|8062599003|440099028|3412199025|41001999003|102099032; x-microsoft-antispam-message-info: =?iso-8859-1?Q?5Q2hOaeziRKE9z+9ww002f6UM8oTBgh5uk7GHrfFbbzn5EA3gqefXUXapu?= =?iso-8859-1?Q?acAqPWbpj1O1COml+iJtlLRzCstAppaqVJ1r9snkAjCqrqajUJpNDqO6Rx?= =?iso-8859-1?Q?cXgytH5WrN8CcdwD4DY/Atkin44p0y2gm8FmJjE/uQzOUSa0p3vE+rw7Yi?= =?iso-8859-1?Q?FzZiwkQFN3qoGqMqFMxs2+drNDTP3EMbub4wZF2l80IfTaJs3uGTEnkGsG?= =?iso-8859-1?Q?uzcWUL23hyhMagQI83Gy7JxRyOa9lPTVDwjewQg7TF9ktDSnaSJrPtbDNV?= =?iso-8859-1?Q?trP0Cx7nNw918582bMpLbN3x0lRDXYge99sLDHLw1H+7X1U92O11FTJgD/?= =?iso-8859-1?Q?2r4SPm9+JE2yIyZslEGkdRxl/RocJb4cQ38bXYuuEeMW6FJO6zweJyYWJo?= =?iso-8859-1?Q?RNaRNQFv3tDkEnW1vTCUsGcjUI9PJ6lUWRYkGF/563penRqghvPwF5OHH4?= =?iso-8859-1?Q?siT5ef8hc4ScfdJEb4DYMiJlSmP9kgxoNq/FaP+1NmhvdUiUe7+ruu1+gu?= =?iso-8859-1?Q?Ubjl8Zh6pze3uR7qBMiV3u710oqR4VrXiyuA9NbNdCjRH9LURMDo4ql+2Z?= =?iso-8859-1?Q?3CBLWSinQ4gKLNEF+ieZPrrh2uzMooMLmcP3nIWG3BT+T7jRlEYL9/6c1Z?= =?iso-8859-1?Q?nrxYPKzljmiRDS1LiZCLYAdsmWg71t/9E30zuXylAqFzZhxfeJwQBhhKvw?= =?iso-8859-1?Q?l1cMHoleEeMSvSHR/EDKdnW27PsAh8cfgFZC/uMrgAkGteOmEVYS6vEpd/?= =?iso-8859-1?Q?WyYHXANHDKTNrMF/OUEdfqIlsgkCq9+AGpUUVdiTiIb628tnTNsk9Wuvg5?= =?iso-8859-1?Q?QA/xoJ+cwymPMp/zCP5Vsf/IaxwuTLThbmYZlISp4RADx41hgfns4iR4Sv?= =?iso-8859-1?Q?9NZtDuMLH+2t+q3jYGLnpWq7nRO+bYNFwaA8itrSlc4sEadQl4bImcwyh5?= =?iso-8859-1?Q?QbOu62GfL6pMmy84DmrF8/0nxhavtmK9eLb2EtWNBJCsWYgFajKA0endDC?= =?iso-8859-1?Q?+i/umLN5N0NsvLhcDYR3GT9V0aTWuaJJqpeatbPBQ882VPh812Oc5taZIj?= =?iso-8859-1?Q?f1mgCLa4MtfbG8sOQhpLO1hLA50Ol0d5Wmcf/SHbVBCepaEOte5uZI77Vz?= =?iso-8859-1?Q?FEJpRgDBGZu218F3udIuQcn3emQqnPk2LrbO+9NIfJD6RCEOi8SFY+ly0K?= =?iso-8859-1?Q?SKd3K+LYJWXeHg=3D=3D?= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?xzIQrYPJdgcUT6VI5JUqS5GbuinLmBpvVPHVmuq3azkKy2WB0Sja6t/3T8?= =?iso-8859-1?Q?/uaOUvHeaoBQqi8LC/C8ekTywcnyPYCFcgT5Kddljz+NWI5zzxe0FTcWN3?= =?iso-8859-1?Q?xjFZlBWlqW+nGbBC1PmMXCne+hEU+1o0MSYf3FHQc7G9aIO7PaSPCSNXSF?= =?iso-8859-1?Q?DksYZuFK2h5xIdXItz0Oo2k7akMpHU1bFLoYVLbJOnqQ1ANlpH3Ktfj8GH?= =?iso-8859-1?Q?d/yjve9r7h5RTxmCyg9wTNLZrA+vevGK55t9KKGXXxOh7SHKVIgegP4s6I?= =?iso-8859-1?Q?/FBAsd7LhFlPCBYfWmHUsIX+6o4tbpG5mVV6vhiaZOmy+x9eSNf8Oc8irl?= =?iso-8859-1?Q?fb6mcUSq/LEv/7+2Gulc21AN8p+PUd43QRLSEHJDvr8KFusMirRA/TJ4HG?= =?iso-8859-1?Q?ej2S5LtZ3pNkRJ4c1GqtUmelmwz9pyKdENm7VivUDVIUe0rYJERP7mVInT?= =?iso-8859-1?Q?MgnXd9CFAV9taT93Oyz/WN4RSXYBj3Op36Tj/DD70TpAoedDFp7gXwEO6t?= =?iso-8859-1?Q?mCTQzcjvQqhHLXxWpoKsdAy8PYPVkIYKZRZTNltyHQmkh6vsHjS329oRnf?= =?iso-8859-1?Q?SWEaWZsj8W3LnIeBFlD6sTM/9p9mwydiAV0phvXwwvTsg4SGSFE5DznDQb?= =?iso-8859-1?Q?+ekzk3/QZ4x2w9j+KQrc4Y670t6cWZ9SpqwyFyE1rldEAF1J2L6u3R1GMP?= =?iso-8859-1?Q?jkEdXk8N5W6xUYs99S7UNMMQqaXt7K0aufKoZIqFf3P+rP+Q1Y0t+k6wQq?= =?iso-8859-1?Q?MnJV4LZKIZgIlPrugTjHLPISAcPuAyfUn4p1CoWifiO+RzbmkRd7CXwoeL?= =?iso-8859-1?Q?q2KsTrh1eQQiuq5Lh/EcvM62Ej+Gy5UWbaMj6eTcvAMbUMDKzF2GFb+8Zt?= =?iso-8859-1?Q?tSEpM4vm4oL8X/JLSQiSRtCIRM4G382+mB/rL07B9cTTzwynZkl3c9yhAi?= =?iso-8859-1?Q?avFucy/3NMf2RT5uSgB+ueJPU65vOswYpKWWAjHOgBmzsW7UA+VR0xVm5s?= =?iso-8859-1?Q?SI+AlrTKb04GWSLNBoIHelVVmgtp0DVeNEQ8gr9rwnemk8LZeHxIKNlcew?= =?iso-8859-1?Q?E5qgrfBp8+KC6p0aV59hvH9qagrOqaJXnk6pC3kVpcmYhK0bPxctpNKuPJ?= =?iso-8859-1?Q?gdmerjMv/FP79rZfggsaI4ptd5tp7hMIgEC/SFNbckyrj9nXn2oC2Nvw/t?= =?iso-8859-1?Q?IuFOO3iaKTzhjc4OyLUxkUbR6zNxz/di8ahA1KKf6g5lTKo8IkUwfvDcC7?= =?iso-8859-1?Q?8OUh9VruHZB8YI+f7abGIRjXmZPzl1/T5Pmc1t3ec=3D?= Content-Type: multipart/alternative; boundary="_000_DU2PR02MB10109B85FECBC25A5C6D7D7DB96F52DU2PR02MB10109eu_" MIME-Version: 1.0 X-OriginatorOrg: sct-15-20-7828-19-msonline-outlook-12d23.templateTenant X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DU2PR02MB10109.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: f3e733f2-6960-4903-de2a-08dd44009e06 X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Feb 2025 03:12:39.8388 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR02MB6633 Received-SPF: pass client-ip=2a01:111:f403:d20a::3; envelope-from=arthur.miller@live.com; helo=PA4PR04CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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, FREEMAIL_FROM=0.001, HTML_MESSAGE=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 (/) --_000_DU2PR02MB10109B85FECBC25A5C6D7D7DB96F52DU2PR02MB10109eu_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable According to docstring, text ending with '/~' should be descarded through the slash. Does not happen: (substitute-in-file-name "some-string/~$HOME") =3D> some-string/~C:\Users\a= rthur However: (substitute-in-file-name "some-string~/$HOME") =3D> C:\Users\arthur Which seems to be the promised effect. I guess it was a typo in the doc string and the code comment, otherwise it is a bug in the implementation. '//' works as advertised, so I guess it is just a typo in the doc string. Furthermore, I find it a bit arcane, or at least unnexpected that I get a native namestring, instead of Emacs path, since other functions in the fileo.c return Emacs internal (unix-like) namestrings (thus far I have tested them). (substitute-in-file-name "some-string~/$HOME/test") =3D> C:\Users\arthu/tes= t It can be fixed by wrapping into `expand-file-name', but that might or might not be desirable (to expand from relative path). If it is a "feature" to get the native namestring, at least perhaps mention= it? --_000_DU2PR02MB10109B85FECBC25A5C6D7D7DB96F52DU2PR02MB10109eu_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
According to docstring, text ending with '/~' should be descarded through
the slash. Does not happen:

(substitute-in-file-name "some-string/~$HOME") =3D> some-strin= g/~C:\Users\arthur

However:

(substitute-in-file-name "some-string~/$HOME") =3D> C:\Users\a= rthur

Which seems to be the promised effect. I guess it was a typo in
the doc string and the code comment, otherwise it is a bug in the
implementation. '//' works as advertised, so I guess it is just a typo in
the doc string.

Furthermore, I find it a bit arcane, or at least unnexpected that I get
a native namestring, instead of Emacs path, since other functions in the
fileo.c return Emacs internal (unix-like) namestrings (thus far I have
tested them).

(substitute-in-file-name "some-string~/$HOME/test") =3D> C:\Us= ers\arthu/test

It can be fixed by wrapping into `expand-file-name', but that might or
might not be desirable (to expand from relative path).

If it is a "feature" to get the native namestring, at least perha= ps mention it?
--_000_DU2PR02MB10109B85FECBC25A5C6D7D7DB96F52DU2PR02MB10109eu_-- From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 03 07:30:29 2025 Received: (at 76023) by debbugs.gnu.org; 3 Feb 2025 12:30:29 +0000 Received: from localhost ([127.0.0.1]:38197 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tevav-0005Gr-74 for submit@debbugs.gnu.org; Mon, 03 Feb 2025 07:30:29 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:39634) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1tevat-0004ya-FN; Mon, 03 Feb 2025 07:30:27 -0500 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 1tevan-0004VN-Hw; Mon, 03 Feb 2025 07:30:21 -0500 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=xI4v5LTtVlMXiGmwI/pTWv/1vRsDyJUNsR7qCSg20kE=; b=Kzl9+eLhoP51 H/8Pmvah386b1lg64Hxh13DUtI+T56VcKaIdifZAWCKtw2zh79b+FiCnuEgGpBk51LVHfPeo5wC4O gZZXFO2QPYqz3qyEOeIl6rf8PzGdYkgQWTUhk/tztlzsY3SS7mrBg1t08RVshU0IvIowOreQNf1HO pEdn3T4aYIGsiVPbR5zK+YKlRfqo/VxRVbjEaqaT23O3oOfpEeKmvymrxEsflGNxC7RMWw+pnboG2 Kbc5i5nXGcPJRQyrsTA780KSc1S7Lg3G2WeTJXy9WXy3af9THMmm2bDxUQ1sVYHB2MY++ezg84vmx cYcCcjKCGK8RWA0YkRbcJw==; Date: Mon, 03 Feb 2025 14:30:16 +0200 Message-Id: <861pwfcisn.fsf@gnu.org> From: Eli Zaretskii To: arthur miller In-Reply-To: (message from arthur miller on Mon, 3 Feb 2025 03:12:39 +0000) Subject: Re: bug#76023: 31.0.50; Observed behavior for substitute-in-file-name different from the doc string References: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 76023 Cc: 76023@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 (---) tags 76023 notabug thanks > From: arthur miller > Date: Mon, 3 Feb 2025 03:12:39 +0000 > > According to docstring, text ending with '/~' should be descarded through > the slash. Does not happen: > > (substitute-in-file-name "some-string/~$HOME") => some-string/~C:\Users\arthur > > However: > > (substitute-in-file-name "some-string~/$HOME") => C:\Users\arthur Yes. Emacs on MS-Windows doesn't support the "~foo" notation, which means "the home directory of user named 'foo'", because that's not possible (or at least not easy) on Windows. So on Windows we treat the "~" character literally in those cases. The above is the direct consequence of that non-support. > Which seems to be the promised effect. I guess it was a typo in > the doc string and the code comment, otherwise it is a bug in the > implementation. '//' works as advertised, so I guess it is just a typo in > the doc string. It isn't a typo in the doc string, because on Posix systems Emacs behaves like the doc string says. It is a common trait in documentation Emacs not to describe too many details about the idiosyncrasies of MS-Windows, especially in dark corners such as this one. > Furthermore, I find it a bit arcane, or at least unnexpected that I get > a native namestring, instead of Emacs path, since other functions in the > fileo.c return Emacs internal (unix-like) namestrings (thus far I have > tested them). That shouldn't matter, since Emacs can use both forward and backslashes in file names. > If it is a "feature" to get the native namestring, at least perhaps mention it? It is a feature, but I don't think we want to mention it, because it's Windows-specific, and because "~$HOME" makes very little sense on Windows. From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 03 10:35:01 2025 Received: (at 76023) by debbugs.gnu.org; 3 Feb 2025 15:35:01 +0000 Received: from localhost ([127.0.0.1]:40814 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1teyTU-0005pH-Oc for submit@debbugs.gnu.org; Mon, 03 Feb 2025 10:35:01 -0500 Received: from mail-westeuropeazolkn190110001.outbound.protection.outlook.com ([2a01:111:f403:d201::1]:54405 helo=AS8PR04CU009.outbound.protection.outlook.com) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1teyTR-0005oy-HM for 76023@debbugs.gnu.org; Mon, 03 Feb 2025 10:34:58 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=D7dryTT2H3Xy/AGBH+OxgopBWXDAL0CQFi9UHmMlcY296CrVEu7GgkWZJarMFd50xJuSMYmG5d+vHdJ/9AXrq2QbSJ9H75vWfEpqOuY1LwJfBuZ7veGaw3UzuZKM46mgWEhyvEcVsEjAS7u60qPqGkoW8KmNpXGPQVKrGJ6e7GCwWacRoAKEs/qX6hB6A7bpv4b0bWHM2u5AH0I/qmPMj010viL/JNm0rIKLaXNsPw3yG13WRzjTyAAP9XtILHV/oi/s0am8wu71Z0mmjU9DXo+EgPSDpyQQ+KnNhW60Bu6Y1o8It8zyLnX+Ry56BJlNP7LiLw1P1HlfJ5ynnhXt7A== 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=EQQKUBX6PlsZkz+HDrlJ+y50WQkvdR7q/kOoJdA0xBg=; b=tIV2t3UJfVSixNSnk6tmJEZWiGTaCh1u4TCHGh/sg3IUezNPhLp6q7hxdLw3pXuRyTPsAeSLrfFvg0kBkvjeKLIbYppjmGBsQImWBWj0tlApwjJJyroKoMs54NCT+fIkdDtJMbLECDp86Vrcvt3gU0gxX1liT0WZ/ec8HKWgXeIfXdIz7L59MAQpE4tzOayMSAqg5jXt7TenAIcF3QTkZlmkN69LJu74GwjIhAkM5pO0Ph0Vfv26sePHTbtHooxcApEafC48zgaAG02/G0Mfx2MjqOOxY9R4tnhVE05W+eadEu08rzfyUep/VaPyPOnGf+7z4AUKzU4BpZykS4iVog== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=live.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=EQQKUBX6PlsZkz+HDrlJ+y50WQkvdR7q/kOoJdA0xBg=; b=R4X0PygqaP1wUq7LPlCRDcBwubikp0v59d2cD35DCgWiQnHGL/emMWrO6RCFZ1V8DA9XW1669aywZ8zHN0vymhftz7oHxQbFoiuiZ2gCZsNjjdvCOpe0mSM28ph0PE7xPwHw0EUpRObf+WBM63wnIscoXH0wxrS4NWEidkmCmmXEHXK/+ZtslGRyb6Vk8mJ4nRkx2Bps9gf/BWvKhNVcI494ERWAnNmX2ihyBPhYOJBT20z6U475vks8miOIoipuPJIgnPGYEQPcNiGBHJMrO1SbVwmF2WUq9gfnleRCVZ38cZeKgwWiKJSCJjtT/wNXR8iAZthHzvjcgtsMEBlDDA== Received: from DU2PR02MB10109.eurprd02.prod.outlook.com (2603:10a6:10:497::14) by DU5PR02MB10654.eurprd02.prod.outlook.com (2603:10a6:10:516::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8398.24; Mon, 3 Feb 2025 15:34:48 +0000 Received: from DU2PR02MB10109.eurprd02.prod.outlook.com ([fe80::f3c9:d4cb:290:d487]) by DU2PR02MB10109.eurprd02.prod.outlook.com ([fe80::f3c9:d4cb:290:d487%5]) with mapi id 15.20.8398.025; Mon, 3 Feb 2025 15:34:48 +0000 From: arthur miller To: Eli Zaretskii Subject: Sv: bug#76023: 31.0.50; Observed behavior for substitute-in-file-name different from the doc string Thread-Topic: bug#76023: 31.0.50; Observed behavior for substitute-in-file-name different from the doc string Thread-Index: AQHbdekLW2BNjNZZBkWqvVWO5b7Bv7M1gvxMgAAzQCw= Date: Mon, 3 Feb 2025 15:34:48 +0000 Message-ID: References: <861pwfcisn.fsf@gnu.org> In-Reply-To: <861pwfcisn.fsf@gnu.org> Accept-Language: sv-SE, en-US Content-Language: sv-SE X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DU2PR02MB10109:EE_|DU5PR02MB10654:EE_ x-ms-office365-filtering-correlation-id: bb7b5c9c-9b9e-4731-96d9-08dd44684b25 x-microsoft-antispam: BCL:0; ARA:14566002|8060799006|19110799003|461199028|7092599003|15030799003|15080799006|8062599003|102099032|440099028|3412199025|41001999003; x-microsoft-antispam-message-info: =?iso-8859-1?Q?i+gyig/juTtYSsa+LEoPfZN1MkBOblENlPRxEu3rIHY5uk1DT6bGMjcXeH?= =?iso-8859-1?Q?0BJRYRS4f0y5Zc2NctBrBt6x8Q3/N0BhzRoEMAvKS2wgTnUBPch8obXgFL?= =?iso-8859-1?Q?Ss8M9nAda8tZtluihHBh/TWe4qPd4lxuM12q6bdq1zt0IeeSMd0E7yawIc?= =?iso-8859-1?Q?gg2jIpDtW6WX7/wpXzxRFUFFtlUhHdgfrbs9a58YWK2LSHVKubgTLPjPl0?= =?iso-8859-1?Q?MLuTOyw3RCyaL6VMydgQxWzlRaBFKFzpvTtzB1L9vuAwHtuIujEffXkXNC?= =?iso-8859-1?Q?UZXiq/a0tsHLDelo8L36g1ve57WF28nxixBBoOKpU4YcwiE+ceUDhA21Aw?= =?iso-8859-1?Q?aK02irgQcvhHplr/59LkPOV3Oa0eKnv6OfbRXw9uEaUODA0kYAPTOeNsjh?= =?iso-8859-1?Q?edHAol0CEpnb3lf4vak/qjzCYaK1OqG1uZTRSw3HtgUFpiH9AQId+Q9cPC?= =?iso-8859-1?Q?30CqpK0+zijJSScP2lITTMJGh4f6E9Cqmmb9Pl36dcejWYisM6ZlJl1Pwm?= =?iso-8859-1?Q?A0RiOqipiOWrFMnctW+o6BmT+5oK2lLrdPQqFxoROhWwsZ855rdL1WRfK+?= =?iso-8859-1?Q?uyPo4e2jultrCIrUdbgV6LrEyfs7SsKd3KG+hTODN9xMuH6Kydyp853aJN?= =?iso-8859-1?Q?9H85+AIfoxLeE1KnOkgKCb0V9Ko6jL4vAledIMZCw5YNIymzP3bMUd0Hhk?= =?iso-8859-1?Q?1PwpEztUu04aQ1yw/5F/aSnZZC5OqCCpWWgByih5LnBAiXOWhAQzhG7F43?= =?iso-8859-1?Q?WORzOIOFp3OVzJePTCdWKJmjMby+7plPeM2VJrDvYPsr7pQowRMNEojQ2o?= =?iso-8859-1?Q?Ysn81sEpVuwa4/MvvOdiHeSbznATJo5NX2sn1tWuysO0oMd7WG2nmQEGox?= =?iso-8859-1?Q?sSRJxt16N1r0UsGi0L25e4Ob2YJTqryFU/sPwLWzb6amW+O/evCEP9vD2M?= =?iso-8859-1?Q?Mc5DOvulRDkDVqVeYURaMX5Mt4dK59thCgCzd9hPkgusrcKvURVt03wapa?= =?iso-8859-1?Q?jjFb1PlDz4awdS1N5x8vGaAPELEx6YuNVLltI0xNpohzzjuXV4vh9baQ/s?= =?iso-8859-1?Q?EAASl5xjB48RUOp5nXjZWJhgfPF4g20rrz5751uTmN0LFxG67oE8iqFHiH?= =?iso-8859-1?Q?9DHZi1sIjeD4rsZ3TmVfqIJ4/gQgGXtTLTD40lSTP0dw5lyql2aykFC57w?= =?iso-8859-1?Q?DqVQyTexTw9q9A=3D=3D?= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?DV7jTLiXx9JHEF8sghNNj+3vsLQ9zF5n6es+MIHwOFbr0GXE8dzmGVnBvC?= =?iso-8859-1?Q?QAW5+trKYC38HZBbyZFrZOnDWGEWms88hB1EozY6n9e/I6mVJbEqisee7r?= =?iso-8859-1?Q?HBHYHwoghKCPmyZXRnk+F6G/M8Bcr7s1WcdMcenqzUPf4eZy7i2JAZEqMS?= =?iso-8859-1?Q?oasiQzjwhhkGnw0CrmAaylTbljnnqvlNKU0q0qYL84V75sHmCOfcsZx92i?= =?iso-8859-1?Q?O0LfPVgbqbcBaRElqpOVCXA2bnrN43krgzVwC5kNBTM1YErBQc9jgSPEQl?= =?iso-8859-1?Q?jeueoppxloxMxCfQ7nRBCmpnRaJVNauhJeL2CfUHR1Xia6ZCFB38pFabJg?= =?iso-8859-1?Q?S1Zs67uOVwyaNSWlv/h3+rrvHx2X1Mvng3XR6yFDEI1hcZkhwzRkAyvq6A?= =?iso-8859-1?Q?sleVoqM06eFvMU/WTgmcJPrUI6bC5j/tiMAv0W/ODfArEtZupnrONH1wBg?= =?iso-8859-1?Q?hzW0n/mOIqNImNU2g/6g4XfKNtXA5SFERr4vp30HptDo/oi+lk3TKtpN2e?= =?iso-8859-1?Q?YHfLCOoczza3WwWixZMLvK7Y7alCu7ueBihSO6dG4IfjmLQtAXRpXx/JN8?= =?iso-8859-1?Q?4B1SPlmY7untK57x1aNW28YZgxxk2iRnNHW5eapY2530BNYRs0OpQUgWMq?= =?iso-8859-1?Q?2x61/mknZ8kTvcxGbq4RGPAuI6ml3Q+NeEEakYD0fdpRsaesdnpxum2kCP?= =?iso-8859-1?Q?nPV9IhuuLKmBMuFt5WlThVleHpYLImvJPd5q3WAwQSRasMbnUtooQFxqOZ?= =?iso-8859-1?Q?MbjvTF+dGBFFxqfUrBN5rdAZoX8fu1fGZw8SWoOZmqCe1I283xIiHXKiV5?= =?iso-8859-1?Q?2POueyq2G4OH4gY3d1poMeUkVxFGvhPmDlti1aJomZP/0aen3VuRUY9h9d?= =?iso-8859-1?Q?v8EWxRMGNkjaxwOhdWEbvgw/NVKEjpZQEpHmAvyn6l8II+NbEkfW12vk2w?= =?iso-8859-1?Q?jfEGxYnXwmFvr2l5S1M4la1JLCtN7aDd5rKeSuA99WX0MP0jck+GRihzaF?= =?iso-8859-1?Q?Xkd6TrJGDe6798HlBRD6clImZB7bme6H56aUFByDiUr2IX+wh0K36kTJJk?= =?iso-8859-1?Q?gYUmUYuh/xTgM1XxVaIFNQRkh8g/K6lb2rP13oegop5KczvPIhuIPCy3Hs?= =?iso-8859-1?Q?QsPPiLuunABT+psy/8PK1SqaXVAci/+vbd/smwF5GA+9CTqSd7GB8kyAAW?= =?iso-8859-1?Q?v5qrSNO9ZqPsH39/cQYdWkhYSrPxiuwhMiPxwGKsVmFZ7VsWriZ1SFy3ZN?= =?iso-8859-1?Q?8cwHBantqyvrXTFCyACtZSimpOpvv6MnIuDD2shsw=3D?= Content-Type: multipart/alternative; boundary="_000_DU2PR02MB101092B662D4F867C518D7D3E96F52DU2PR02MB10109eu_" MIME-Version: 1.0 X-OriginatorOrg: sct-15-20-7828-19-msonline-outlook-12d23.templateTenant X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DU2PR02MB10109.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: bb7b5c9c-9b9e-4731-96d9-08dd44684b25 X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Feb 2025 15:34:48.4441 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU5PR02MB10654 X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 76023 Cc: "76023@debbugs.gnu.org" <76023@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.0 (-) --_000_DU2PR02MB101092B662D4F867C518D7D3E96F52DU2PR02MB10109eu_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable > > According to docstring, text ending with '/~' should be descarded throu= gh > > the slash. Does not happen: > > > > (substitute-in-file-name "some-string/~$HOME") =3D> some-string/~C:\Use= rs\arthur > > > > However: > > > > (substitute-in-file-name "some-string~/$HOME") =3D> C:\Users\arthur > > Yes. Emacs on MS-Windows doesn't support the "~foo" notation, which Actually, is seems you do support that notation on Windows :-). It works he= re: ~/repos/emsrc/emacs/src $ (expand-file-name "~") c:/Users/Arthur ~/repos/emsrc/emacs/src $ (expand-file-name "~arthur") c:/Users/Arthur ~/repos/emsrc/emacs/src $ (expand-file-name "~/test") c:/Users/Arthur/test ~/repos/emsrc/emacs/src $ It seems that you are thinking of the wrong function here, or haven't looke= d at the implementation. That would be expand-file-name that supports "~foo" notation, not substitute-in-file-name. We are speaking about substitute-in-file-name, which supports "$foo" to substitute an env variable in the string. Furthermore, it also supports "/~= " and "//" which means that everything before those two strings should be discarded. As described in the bug report, "~/" does what the doc string states. Observe that substitute-in-file-name never calls expand-file-name; = so that expansion of tilde you seem to speak about, should never take place th= ere. In short: everything is supported, the docs just display a bad string. I think you are confused by my example. I choose "HOME" because the result string is shorter. I could have used "$PATH" in those examples, or "$UserPr= ofile". > means "the home directory of user named 'foo'", because that's not > possible (or at least not easy) on Windows. So on Windows we treat > the "~" character literally in those cases. The above is the direct > consequence of that non-support. As long as an user has a "HOME" variable defined it seems to work, see abov= e. > > Which seems to be the promised effect. I guess it was a typo in > > the doc string and the code comment, otherwise it is a bug in the > > implementation. '//' works as advertised, so I guess it is just a typo = in > > the doc string. > > It isn't a typo in the doc string, because on Posix systems Emacs > behaves like the doc string says. It is a common trait in > documentation Emacs not to describe too many details about the > idiosyncrasies of MS-Windows, especially in dark corners such as this > one. Why does "~/" works as described in the doc string of substitute-in-file-na= me, but the doc says "/~"? > > Furthermore, I find it a bit arcane, or at least unnexpected that I get > > a native namestring, instead of Emacs path, since other functions in th= e > > fileo.c return Emacs internal (unix-like) namestrings (thus far I have > > tested them). > > That shouldn't matter, since Emacs can use both forward and > backslashes in file names. Yes, I understand that, I have seen it. It is not that it matters to Emacs = per se, or if the user types at the prompt interactively. It matters if someone passes a result of that function to some other function which is not Emacs built-in namestring manipulation function. Than that person can not assume platform-independent namestrings, which I don't think would be unreasonable= to assume. Also, it is not very difficult to implement it either. The only two functions that has this different behavior are substitute-in-file-name and concat-path-name. The reason is probably becaus= e they don't expand file name as others functions in fileio.c do, but do thei= r own thing with string concatenations. As regression: (file-name-concat "foo" "bar\\" "baz") =3D> "foo/bar\\baz" The reasoning is the same, code could pass-in "bar\\" as a result from some other computation and pass in the result of file-name-concat into some othe= r code, in which case they would have to do all the platform dependent stuff themselves. It wouldn't be very difficult to implement it to be consistent = with other functions and return unix-like path that Emacs uses internally. > > If it is a "feature" to get the native namestring, at least perhaps men= tion > > it? > > It is a feature, but I don't think we want to mention it, because it's > Windows-specific, and because "~$HOME" makes very little sense on > Windows. I am not sure why "~$HOME" makes sense anywhere? Do you perhaps mean "~$USE= R"? --_000_DU2PR02MB101092B662D4F867C518D7D3E96F52DU2PR02MB10109eu_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
> > According to docstring, text ending with '/~' should be descarded= through
> > the slash. Does not happen:
> >
> > (substitute-in-file-name "some-string/~$HOME") =3D> = some-string/~C:\Users\arthur
> >
> > However:
> >
> > (substitute-in-file-name "some-string~/$HOME") =3D> = C:\Users\arthur
>
> Yes.  Emacs on MS-Windows doesn't support the "~foo" no= tation, which

Actually, is seems you do support that notation on Windows :-). It works he= re:

~/repos/emsrc/emacs/src $ (expand-file-name "~")
c:/Users/Arthur
~/repos/emsrc/emacs/src $ (expand-file-name "~arthur")
c:/Users/Arthur
~/repos/emsrc/emacs/src $ (expand-file-name "~/test")
c:/Users/Arthur/test
~/repos/emsrc/emacs/src $

It seems that you are thinking of the wrong function here, or haven't looke= d at
the implementation. That would be expand-file-name that supports "~foo= "
notation, not substitute-in-file-name.

We are speaking about substitute-in-file-name, which supports "$foo&qu= ot; to
substitute an env variable in the string. Furthermore, it also supports &qu= ot;/~" and
"//" which means that everything before those two strings should = be
discarded. As described in the bug report, "~/" does what the doc= string
states. Observe that substitute-in-file-name never calls expand-file-name; = so
that expansion of tilde you seem to speak about, should never take place th= ere.

In short: everything is supported, the docs just display a bad string.

I think you are confused by my example. I choose "HOME" because t= he result
string is shorter. I could have used "$PATH" in those examples, o= r "$UserProfile".

> means "the home directory of user named 'foo'", because that= 's not
> possible (or at least not easy) on Windows.  So on Windows we tre= at
> the "~" character literally in those cases.  The above = is the direct
> consequence of that non-support.

As long as an user has a "HOME" variable defined it seems to work= , see above.

> > Which seems to be the promised effect. I guess it was a typo in
> > the doc string and the code comment, otherwise it is a bug in the=
> > implementation. '//' works as advertised, so I guess it is just a= typo in
> > the doc string.
>
> It isn't a typo in the doc string, because on Posix systems Emacs
> behaves like the doc string says.  It is a common trait in
> documentation Emacs not to describe too many details about the
> idiosyncrasies of MS-Windows, especially in dark corners such as this<= /div>
> one.

Why does "~/" works as described in the doc string of substitute-= in-file-name,
but the doc says "/~"?

> > Furthermore, I find it a bit arcane, or at least unnexpected that= I get
> > a native namestring, instead of Emacs path, since other functions= in the
> > fileo.c return Emacs internal (unix-like) namestrings (thus far I= have
> > tested them).
>
> That shouldn't matter, since Emacs can use both forward and
> backslashes in file names.

Yes, I understand that, I have seen it. It is not that it matters to Emacs = per
se, or if the user types at the prompt interactively. It matters if someone=
passes a result of that function to some other function which is not Emacs<= /div>
built-in namestring manipulation function. Than that person can not assume<= /div>
platform-independent namestrings, which I don't think would be unreasonable= to
assume. Also, it is not very difficult to implement it either.

The only two functions that has this different behavior are
substitute-in-file-name and concat-path-name. The reason is probably becaus= e
they don't expand file name as others functions in fileio.c do, but do thei= r own
thing with string concatenations.

As regression: (file-name-concat "foo" "bar\\" "ba= z") =3D> "foo/bar\\baz"

The reasoning is the same, code could pass-in "bar\\" as a result= from some
other computation and pass in the result of file-name-concat into some othe= r
code, in which case they would have to do all the platform dependent stuff<= /div>
themselves. It wouldn't be very difficult to implement it to be consistent = with
other functions and return unix-like path that Emacs uses internally.

> > If it is a "feature" to get the native namestring, at l= east perhaps mention
> > it?
>
> It is a feature, but I don't think we want to mention it, because it's=
> Windows-specific, and because "~$HOME" makes very little sen= se on
> Windows.

I am not sure why "~$HOME" makes sense anywhere? Do you perhaps m= ean "~$USER"?
--_000_DU2PR02MB101092B662D4F867C518D7D3E96F52DU2PR02MB10109eu_-- From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 03 13:00:09 2025 Received: (at 76023) by debbugs.gnu.org; 3 Feb 2025 18:00:09 +0000 Received: from localhost ([127.0.0.1]:41102 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tf0jw-0004z5-5A for submit@debbugs.gnu.org; Mon, 03 Feb 2025 13:00:09 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:44938) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1tf0jt-0004tl-3d for 76023@debbugs.gnu.org; Mon, 03 Feb 2025 13:00:06 -0500 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 1tf0jn-0008Jl-L4; Mon, 03 Feb 2025 12:59:59 -0500 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=aQBCMEONHQtHKRtTNbdKzmTPMWO5otfeYEHr5ho4uIQ=; b=XrAsR07KaIGl zcWFWSEtv96IUcIMZlUOjTK1au/EkKeu5vga00VaBmmCSWEInI0p80TbkfVipMnmPd1bO5zLhhBFJ tbsAb8nZ7psoaiLNHKlLrKtsWT1a2dAGedUSsRM77uedwaPWpI9F7p/G2g9njMV016qqqIkW1q5K+ m589GkmNOtBrA7hLxJl9zif+QZWfUHwuXohI0kr2LSCOeQlCstowuC0oYZ9dQEwx6SHwv8TCrnXx6 MqfNQooV0zipsY26cz5FJKkRdWPmqIuxZj49fzBcefRRS7e1s7I/b5HqKKUPohbc+rSGBVDc9nbB9 R5rs/ChAiZGkfZKHJG7DPg==; Date: Mon, 03 Feb 2025 19:59:56 +0200 Message-Id: <86jza6c3j7.fsf@gnu.org> From: Eli Zaretskii To: arthur miller In-Reply-To: (message from arthur miller on Mon, 3 Feb 2025 15:34:48 +0000) Subject: Re: bug#76023: 31.0.50; Observed behavior for substitute-in-file-name different from the doc string References: <861pwfcisn.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 76023 Cc: 76023@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: arthur miller > CC: "76023@debbugs.gnu.org" <76023@debbugs.gnu.org> > Date: Mon, 3 Feb 2025 15:34:48 +0000 > > > > (substitute-in-file-name "some-string/~$HOME") => some-string/~C:\Users\arthur > > > > > > However: > > > > > > (substitute-in-file-name "some-string~/$HOME") => C:\Users\arthur > > > > Yes. Emacs on MS-Windows doesn't support the "~foo" notation, which > > Actually, is seems you do support that notation on Windows :-). It works here: > > ~/repos/emsrc/emacs/src $ (expand-file-name "~") > c:/Users/Arthur > ~/repos/emsrc/emacs/src $ (expand-file-name "~arthur") > c:/Users/Arthur Yes, if "foo" is your user name, then we do support "~foo" (because it's easy and expected). But not for any other "foo". > ~/repos/emsrc/emacs/src $ (expand-file-name "~/test") > c:/Users/Arthur/test > ~/repos/emsrc/emacs/src $ > > It seems that you are thinking of the wrong function here, or haven't looked at > the implementation. That would be expand-file-name that supports "~foo" > notation, not substitute-in-file-name. The function is different, but the reason is the same: Emacs doesn't support ~foo on MS-Windows, even if the user "foo" does exist on the system: (substitute-in-file-name "some-string/~Administrator") => "some-string/~Administrator" (substitute-in-file-name "some-string/~SYSTEM") => "some-string/~SYSTEM" > We are speaking about substitute-in-file-name, which supports "$foo" to > substitute an env variable in the string. Furthermore, it also supports "/~" and > "//" which means that everything before those two strings should be > discarded. As described in the bug report, "~/" does what the doc string > states. Yes. Once again, Emacs on MS-Windows supports ~ and ~/ and ~user when "user" is the name of the current session's user. In any other case the "~" is interpreted literally on MS-Windows, and "~SOMETHING" is *not* supposed to cause this function discard everything, because then it will be inconsistent with how other primitives treat ~foo on MS-Windows. > Observe that substitute-in-file-name never calls expand-file-name; so > that expansion of tilde you seem to speak about, should never take place there. I know. But observe that it calls user_homedir, which in Emacs on MS-Windows works as I described above. > In short: everything is supported, the docs just display a bad string. No, that's an incorrect conclusion, for the reasons I explained. > I think you are confused by my example. I choose "HOME" because the result > string is shorter. I could have used "$PATH" in those examples, or "$UserProfile". Yes, because the name of the current session's user is unlikely to be the expansion of $PATH. But try this: (substitute-in-file-name "some-string/~$LOGNAME") => "~eliz" (My user name on this system is "eliz".) So I don't think I'm confused, no. > > It isn't a typo in the doc string, because on Posix systems Emacs > > behaves like the doc string says. It is a common trait in > > documentation Emacs not to describe too many details about the > > idiosyncrasies of MS-Windows, especially in dark corners such as this > > one. > > Why does "~/" works as described in the doc string of substitute-in-file-name, > but the doc says "/~"? Both work here: (substitute-in-file-name "some-string/~") => "~" (substitute-in-file-name "some-string/~/") => "~/" > > That shouldn't matter, since Emacs can use both forward and > > backslashes in file names. > > Yes, I understand that, I have seen it. It is not that it matters to Emacs per > se, or if the user types at the prompt interactively. It matters if someone > passes a result of that function to some other function which is not Emacs > built-in namestring manipulation function. Than that person can not assume > platform-independent namestrings, which I don't think would be unreasonable to > assume. Also, it is not very difficult to implement it either. What would that person do with this file name? All the Emacs primitives that accept file names support both flavors of slashes. Example: (file-name-nondirectory "d:\\foo/bar\\baz") => "baz" So the only case where a Lisp program will fail for such file names is if that Lisp program manually analyzes the file name, instead of using Emacs primitives. In which case I'd say the Lisp program has a bug. But we digress, I think? > The only two functions that has this different behavior are > substitute-in-file-name and concat-path-name. The reason is probably because > they don't expand file name as others functions in fileio.c do, but do their own > thing with string concatenations. > > As regression: (file-name-concat "foo" "bar\\" "baz") => "foo/bar\\baz" And why is that a problem? (Of course, one should almost never use file-name-concat, it exists for a small number of very special cases; everything else should use expand-file-name.) > > It is a feature, but I don't think we want to mention it, because it's > > Windows-specific, and because "~$HOME" makes very little sense on > > Windows. > > I am not sure why "~$HOME" makes sense anywhere? Do you perhaps mean "~$USER"? No, I meant ~$HOME. Since ~ is the same as $HOME, why double it? From debbugs-submit-bounces@debbugs.gnu.org Tue Feb 04 01:25:33 2025 Received: (at 76023) by debbugs.gnu.org; 4 Feb 2025 06:25:33 +0000 Received: from localhost ([127.0.0.1]:42300 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tfCNH-00019J-VV for submit@debbugs.gnu.org; Tue, 04 Feb 2025 01:25:33 -0500 Received: from mail-francecentralazolkn19013085.outbound.protection.outlook.com ([52.103.46.85]:24467 helo=PA4PR04CU001.outbound.protection.outlook.com) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1tfCNF-000192-0K for 76023@debbugs.gnu.org; Tue, 04 Feb 2025 01:25:30 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=xZTeyHPcuOS5bOFs8hJozxHd4iCMzzL0qKN7P5xc/rVVH2K+9nwBaAIQr/o8mQvcRuNaDuNgjw0zQGVUjqkzWDK7E1AOu1CQkcm7jsJRlW2/RQ2EEUeG3/sdzsCsthUmFLRwp1NbO1YwmF/lPg2b7yHfBtIRlZvCZqzFnEVgQutQeDFj+4Wfas9iPLRawF0O1tPxh3htJZdrWBJis0MLoKSW346VlCbbDlSxuqibUpzzD+NNJAYlJdFaKIkIcsUFb+4cx7HyM7UIiXEPR60UJ9uhj9dLWmKGJhwgQ/bvN22YqIooBIbuFWelfZy9LJ2J5/vDOWARhfuAmWjrv1FCGQ== 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=c/EkCh2bz+6Z3x1/L7RS0kf1pW/2WC7N5ZiDcr4pfYw=; b=sUFYAYPrwoxmiFOuMLSXSysKE4tydILTzV5OYyAK3ClEWVLydoN6AxV4K8Ie2a5B8CWCkh+YBrfTys2UM60dtBqhzCeiyd2+A14hXR8De8Lvj63J7VxhEzJ5KZLCerYr3Z+LFDWiAhZMiMPBpDukCOH4rib7VVPNI+RqCvwMV8YsdCPpWZuLCJYYsSznvml2LSfRPc7lYRKOrentfuYr8VYWrCrPySALRuHnEkv5UAR4PmOmg18DMHnhbBQnhcEJbfUXnnLNqtY8C7lZymOi4Hn+pQV7SbHwbdErVdCcBSpwcvz/2UvG6xzvQQYbw/efwMri9iB9IaMmaOtiF1g+6A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=live.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=c/EkCh2bz+6Z3x1/L7RS0kf1pW/2WC7N5ZiDcr4pfYw=; b=RLPhZfIJwWxfV4jyYrCCRoUumwtlSHFzgopCIWULgMFowxehUj2KkiaHx8oAMpaj4NIaGhvgukCpXfZuJG0ZkCS2r9KYNuy+QSuFBOuJnVzv7aZ2SYKxR4WzMfBfJP8mIM75hv+rJosPMm3bR54HYaATurrHF48ZVQwS+wifaaC7/cMxmrpgXKeShyQo1sOwFNAB5ZiPcMDlzB6IkOQs3D9hpTNdxkahReT9FqdgDYQXVSBWHoRNDAM9KPCey/Y3lp/8wwWpISYdzogzcShqnnGyshLoT/Z7p+hJ1oqpIFSakGZBmgcBq1CTZ2ayNvg6Cya54+JuI7f/35TKdrzx4g== Received: from DU2PR02MB10109.eurprd02.prod.outlook.com (2603:10a6:10:497::14) by AS8PR02MB9933.eurprd02.prod.outlook.com (2603:10a6:20b:61a::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8398.24; Tue, 4 Feb 2025 06:25:21 +0000 Received: from DU2PR02MB10109.eurprd02.prod.outlook.com ([fe80::f3c9:d4cb:290:d487]) by DU2PR02MB10109.eurprd02.prod.outlook.com ([fe80::f3c9:d4cb:290:d487%5]) with mapi id 15.20.8398.025; Tue, 4 Feb 2025 06:25:21 +0000 From: arthur miller To: Eli Zaretskii Subject: Sv: bug#76023: 31.0.50; Observed behavior for substitute-in-file-name different from the doc string Thread-Topic: bug#76023: 31.0.50; Observed behavior for substitute-in-file-name different from the doc string Thread-Index: AQHbdekLW2BNjNZZBkWqvVWO5b7Bv7M1gvxMgAAzQCyAACjY84AAzWC8 Date: Tue, 4 Feb 2025 06:25:21 +0000 Message-ID: References: <861pwfcisn.fsf@gnu.org> <86jza6c3j7.fsf@gnu.org> In-Reply-To: <86jza6c3j7.fsf@gnu.org> Accept-Language: sv-SE, en-US Content-Language: sv-SE X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DU2PR02MB10109:EE_|AS8PR02MB9933:EE_ x-ms-office365-filtering-correlation-id: fd249644-39ed-450c-f6c4-08dd44e4b39c x-microsoft-antispam: BCL:0; ARA:14566002|15080799006|8060799006|461199028|8062599003|7092599003|15030799003|19110799003|102099032|3412199025|440099028|19111999003; x-microsoft-antispam-message-info: =?utf-8?B?WTdQTHV0MjBVYWlCamtrVTFWd2xMNHJLZXVoUUtCalA5QStHSUxXdnRCa1hy?= =?utf-8?B?RzJUR3hwQzM5WFp4ak45SmM2NHdNYzI1TXREWG5uS0RKNFZ6eWdVWWRRV2Fi?= =?utf-8?B?Yy85bm9KSlJ6R3BDUGxPaTFsVHZzdW9MdXU3RVFGT0s0WkhZTzdJbVcxYUlw?= =?utf-8?B?UDhtK0JSME9RV3B1dFBwYlVSbzNGcFAxMCs3VG1kbEl1Q295cDZyQVgzYmMy?= =?utf-8?B?RzU1cGp6V2txa2todEJ3bEZDT01qRURseXg0R1hWQWdQUk5hRjdNU1plT0U5?= =?utf-8?B?RTNzUzFlV0dkT0ZtdWZmbVFnTS9QbXBtU1B1Sm00ZUdneFBKY3h5dGF6aU96?= =?utf-8?B?VTQxRDNqS0dKeXduTDZGcDRCeWp0YUsxdWcwMGJFM1ZtNEcrRUt1WWYvblpQ?= =?utf-8?B?RUZLQ3lMSDlSVUEybDFsQkpQaGpiOUVBZ25nd3ZXbXZXYjlHS3VoL0wzd21T?= =?utf-8?B?b1ZXa1NVVmNMamw4U3hNcjBpcGE0SEJkeldyZDVmZ282N29PK0RQWWw3T2dD?= =?utf-8?B?Z2JCeDdteWpsS2JONnFIMi8wR1JQdDIwczMyQkZXcmFKU1ZCSGJKV1Bid3Bs?= =?utf-8?B?bFdTT0RDTkdsbGpocWd0MUxCMU5lQXdNUUZTcGJWRUowS2dXMDdjaHNSOGx2?= =?utf-8?B?WGhjdkh6dklnS1hrYlg5OEhXRzVGeXV1VXZ1Y3d6OXozSEhudE83c1NvbFpS?= =?utf-8?B?M3BDbmJqNWVIRDh2Vy8wbjZNekZOSHBtN3A4UGpHYjZLanZyUHJMTlJwZmNa?= =?utf-8?B?dit4MVFQMFpOY2hkakc5bXRtS1FJeVZIb2VhYzhYa0VPT0tTRjFDeC9kampp?= =?utf-8?B?RDlxZldEaVczUXorZ1UwQzNLNUVFbC9wYW1FYTlXcHMvemlhUWZJaUttc0s4?= =?utf-8?B?WU9pUFBHZUNuaWhVREtaZVdpRFhaYVNZL1I2d2o3VnJ4YkNyeGtKTTlkdGhQ?= =?utf-8?B?aVF5OEtLUC9xOHlLNW9sTU5SNnp6b3VCOE9qV1RlU0J1L3MzQ3FFUDd2bXdx?= =?utf-8?B?UFZEWTZnUFhuMkVId3V1OXl6SE9FaUgzQUFUb2ZqTEtFWDRwTzVzamxqWnVJ?= =?utf-8?B?OWtUYk5TM1dEdU5WRTBvenNUbkdFZkIrSWlrYTZ2LzF3clQvcmZhQzZ2YUdo?= =?utf-8?B?WXpZaVpIeUttTmRndlIwclRSc0M5c0RTV0xDT3lLR3hLY2lqRG12WHZ6SFBX?= =?utf-8?B?SzJuUmZmVXNjZEloYXNRaW1wbmtaOUhsbXhrb2VNUG1tVWxyR2FBbUwxQTBE?= =?utf-8?B?RE9GQVR1TGpJNHlxYjZXeGh3aExtMEE5NGJoRkhSSEd3YmxreE82cERxa3dS?= =?utf-8?B?Y2NIM2Voa0M0cWVMQ0N2dG1EU1laSFJZTjJBTlJEUmhKSzB4WHRUcTM1ODRN?= =?utf-8?B?bEJWYTlSN0ZCbUVIZFZwczkvbnhGdEVlSHJWOHpOZVF4ck1BU3pVUjFlRHZZ?= =?utf-8?B?RXVJSXNHRGlzNGR4Z2FtWFVJUnFzUXk0clNyaDFnZzVFeStGM3l3K3l4WE1l?= =?utf-8?B?U05acVlXdXZCL1JKbUxyRk1xMk9SUlpObUxVbnVyTndHR0ZKa3Fyb1BiTjNM?= =?utf-8?B?cWRMdz09?= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?U1dkQVJTd2VCSUhDN2xWc2J1ajRueDMwekNueE40Q0RkVlpicWZHZjFCckI4?= =?utf-8?B?RlgzTlVtY2NLSzZCWSswZ2NWb28xK2JyOE4vSFIzM0FVVUlhMFZvTkNUVWpH?= =?utf-8?B?VjkrWU80anZMSzlKUWppdWI5K2QySjV6bFR5bDVuUVpPa3ZmSlVibXZMR24y?= =?utf-8?B?QlpZRzhseDFOWndHbm94M20wR1QwVzFKVjh3bnU4bmpza3o1ekxRSk0rSitC?= =?utf-8?B?cnJodEpTMXJLcE5MSmtaeWRuZXVqSFZweDVwV214QlNTS1Q0Tlg1eURZNDY2?= =?utf-8?B?RS9xWEMzOU1VT0RtallDdklFalJzTjdDUXk0dlpYRVd3dmpBZVlFd05LZHFW?= =?utf-8?B?Q2wvZzY3U2tXVi9sL3BkVXdLS2VUVmpLRzViQWZkZ204K0ZiWHV0T1hrNFZC?= =?utf-8?B?WldYeTJyWnNkckRCTHNubXBKdXZaaE9Tb3lHdEUzeEtpdHZoZytWR3BFTWVy?= =?utf-8?B?M3RsdmkwZERxM0diZlhGN1g4OW1RbTJFc1ZsbUo4d3krWi9UdVd1b2dIa0Yz?= =?utf-8?B?eU9LL0c0WFNtcTVzZnZlbE5KbFdMWi9SYVhMTjVxNmZ1dnZlNFZKUFp5aWkz?= =?utf-8?B?bklDZWh3NEJKbFRpSXQ4QzJ4b3pOQVM3am1SdW5NbVlMKzdZNzd2MUdLRzVa?= =?utf-8?B?dVd6VkJoWkJwUVNlMnB5T01OeXlJSzBwK2NOOVgvRGlJYWZURHRMY2NiUlJm?= =?utf-8?B?ZnlzMTVQdnJ3VHFHUWpvQXorZTc3dXo2N1ZwQ28yQjNHVElFK2poREVwS2pZ?= =?utf-8?B?eEFsRmNUVkY1VEoveVcxV3EvUi8xUUlwTkVsN2VzUFRuOVpyMk1xNlZVUTBU?= =?utf-8?B?S1pES2h5ZUpmYU0yVUphUDlVdlhvSGl2YU11KzdyMHJ5RVYrWmtjZzR4UTZE?= =?utf-8?B?S3A0cU1Lakl4V2ZHN1dublg1Mk9aNmdTYUNzRitxaTlpNUdQZ0c5Y2pSUnJt?= =?utf-8?B?M3VJMFVkR3JkdTkrdlBZa1ZsS2hXaS9vdGtnSVVId3A3ejRPQnFaaXJIbTFw?= =?utf-8?B?Vm55Yy83VVcwUStKTTYxeEc3TXRmK0gzRUUxb2pJZSs4VktvS0hwZzJXTzU1?= =?utf-8?B?dU5HN3l0SitDK2ZycUlFN2U2dEVrUUtjVjhDMTN0NGVNaFhJRUtoYnFJdkRo?= =?utf-8?B?ckZCY3dTTTJ5aTBueVIrT2dHbkJJdjI4eW9zNmdLWmNEMTV4RzJUQjNXQ0U2?= =?utf-8?B?Y2Myd0RNMDlvQ0wvMFVRWjl5bTY4M1R1cW5sQktYNDZwOXllRTlYc0VhdUM0?= =?utf-8?B?bi8wd1BLNnVvY05iNWJkaTAwNlMzaHdUbkRTS0JMZzhESGlJa3MxVFg1Uk9a?= =?utf-8?B?Ujk4V0dzZ0ZReCtzMTBGa0ZmeFlMSVoveXNtUm9UdUJGckxaajJwRnBKU1dO?= =?utf-8?B?TXcxdmE0aG0vYlpTYU94WlBpNkhTTWNYSlVBY0J3eXI2bHlNM1k5WU5pS3p2?= =?utf-8?B?eENKYlZXRXFVUkZ0NnBLOUhJTFJBeWNaVGphUnF1MENXYnZGenQrcjVvd0hu?= =?utf-8?B?QWpzOXBPVWgxT0pCdHZ6UUY0dkpiaUI2eTNQbG5YQ21tNExZTCsrSDU1VzMx?= =?utf-8?B?ZzhmTWEvejlBTHRRNkx4L2Mrd3QxU2ozbUtHTDBkQWpkQTdOZnRvMFVRU2c4?= =?utf-8?Q?Slt/eqPqLxPckfPo3sXXbI+rxwnjPYuQa/NGBIyNc9AM=3D?= Content-Type: multipart/alternative; boundary="_000_DU2PR02MB101097C1C04A6EF39F4A4D02E96F42DU2PR02MB10109eu_" MIME-Version: 1.0 X-OriginatorOrg: sct-15-20-7828-19-msonline-outlook-12d23.templateTenant X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DU2PR02MB10109.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: fd249644-39ed-450c-f6c4-08dd44e4b39c X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Feb 2025 06:25:21.2624 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR02MB9933 X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 76023 Cc: "76023@debbugs.gnu.org" <76023@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.0 (-) --_000_DU2PR02MB101097C1C04A6EF39F4A4D02E96F42DU2PR02MB10109eu_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 PiA+IEZyb206IGFydGh1ciBtaWxsZXIgPGFydGh1ci5taWxsZXJAbGl2ZS5jb20+DQo+ID4gQ0M6 ICI3NjAyM0BkZWJidWdzLmdudS5vcmciIDw3NjAyM0BkZWJidWdzLmdudS5vcmc+DQo+ID4gRGF0 ZTogTW9uLCAzIEZlYiAyMDI1IDE1OjM0OjQ4ICswMDAwDQo+ID4NCj4gPiA+ID4gKHN1YnN0aXR1 dGUtaW4tZmlsZS1uYW1lICJzb21lLXN0cmluZy9+JEhPTUUiKSA9PiBzb21lLXN0cmluZy9+Qzpc VXNlcnNcYXJ0aHVyDQo+ID4gPiA+DQo+ID4gPiA+IEhvd2V2ZXI6DQo+ID4gPiA+DQo+ID4gPiA+ IChzdWJzdGl0dXRlLWluLWZpbGUtbmFtZSAic29tZS1zdHJpbmd+LyRIT01FIikgPT4gQzpcVXNl cnNcYXJ0aHVyDQo+ID4gPg0KPiA+ID4gWWVzLiAgRW1hY3Mgb24gTVMtV2luZG93cyBkb2Vzbid0 IHN1cHBvcnQgdGhlICJ+Zm9vIiBub3RhdGlvbiwgd2hpY2gNCj4gPg0KPiA+IEFjdHVhbGx5LCBp cyBzZWVtcyB5b3UgZG8gc3VwcG9ydCB0aGF0IG5vdGF0aW9uIG9uIFdpbmRvd3MgOi0pLiBJdCB3 b3JrcyBoZXJlOg0KPiA+DQo+ID4gfi9yZXBvcy9lbXNyYy9lbWFjcy9zcmMgJCAoZXhwYW5kLWZp bGUtbmFtZSAifiIpDQo+ID4gYzovVXNlcnMvQXJ0aHVyDQo+ID4gfi9yZXBvcy9lbXNyYy9lbWFj cy9zcmMgJCAoZXhwYW5kLWZpbGUtbmFtZSAifmFydGh1ciIpDQo+ID4gYzovVXNlcnMvQXJ0aHVy DQo+DQo+IFllcywgaWYgImZvbyIgaXMgeW91ciB1c2VyIG5hbWUsIHRoZW4gd2UgZG8gc3VwcG9y dCAifmZvbyIgKGJlY2F1c2UNCj4gaXQncyBlYXN5IGFuZCBleHBlY3RlZCkuICBCdXQgbm90IGZv ciBhbnkgb3RoZXIgImZvbyIuDQoNCj4gPiB+L3JlcG9zL2Vtc3JjL2VtYWNzL3NyYyAkIChleHBh bmQtZmlsZS1uYW1lICJ+L3Rlc3QiKQ0KPiA+IGM6L1VzZXJzL0FydGh1ci90ZXN0DQo+ID4gfi9y ZXBvcy9lbXNyYy9lbWFjcy9zcmMgJA0KPiA+DQo+ID4gSXQgc2VlbXMgdGhhdCB5b3UgYXJlIHRo aW5raW5nIG9mIHRoZSB3cm9uZyBmdW5jdGlvbiBoZXJlLCBvciBoYXZlbid0IGxvb2tlZCBhdA0K PiA+IHRoZSBpbXBsZW1lbnRhdGlvbi4gVGhhdCB3b3VsZCBiZSBleHBhbmQtZmlsZS1uYW1lIHRo YXQgc3VwcG9ydHMgIn5mb28iDQo+ID4gbm90YXRpb24sIG5vdCBzdWJzdGl0dXRlLWluLWZpbGUt bmFtZS4NCj4NCj4gVGhlIGZ1bmN0aW9uIGlzIGRpZmZlcmVudCwgYnV0IHRoZSByZWFzb24gaXMg dGhlIHNhbWU6IEVtYWNzIGRvZXNuJ3QNCj4gc3VwcG9ydCB+Zm9vIG9uIE1TLVdpbmRvd3MsIGV2 ZW4gaWYgdGhlIHVzZXIgImZvbyIgZG9lcyBleGlzdCBvbiB0aGUNCj4gc3lzdGVtOg0KPg0KPiAg IChzdWJzdGl0dXRlLWluLWZpbGUtbmFtZSAic29tZS1zdHJpbmcvfkFkbWluaXN0cmF0b3IiKQ0K PiAgICA9PiAic29tZS1zdHJpbmcvfkFkbWluaXN0cmF0b3IiDQo+ICAgKHN1YnN0aXR1dGUtaW4t ZmlsZS1uYW1lICJzb21lLXN0cmluZy9+U1lTVEVNIikNCj4gICAgPT4gInNvbWUtc3RyaW5nL35T WVNURU0iDQoNClNlZW1zIGxpa2UgSSBoYXZlIHRha2VuIHVuZm9ydHVuYXRlIGV4YW1wbGU7IHNp bmNlIEhPTUUgZXhwYW5kcyBpbnRvIGFuIGFic29sdXRlDQpmaWxlIG5hbWUsIGFuZCBJIGFsc28g dHJpZWQgUEFUSCB3aXRjaCBhbHNvIGV4cGFuZHMgaW50byBhYnNvbHV0ZS4gSSBzZWUgbm93Og0K DQooc3Vic3RpdHV0ZS1pbi1maWxlLW5hbWUgInNvbWUtc3RyaW5nfi8kVVNFUkRPTUFJTiIpID0+ ICJzb21lLXN0cmluZ34vUEFTQ0FMIg0KKHN1YnN0aXR1dGUtaW4tZmlsZS1uYW1lICJzb21lLXN0 cmluZy9+JFVTRVJET01BSU4iKSA9PiAic29tZS1zdHJpbmcvflBBU0NBTCINCihzdWJzdGl0dXRl LWluLWZpbGUtbmFtZSAic29tZS1zdHJpbmcvLyRVU0VSRE9NQUlOIikgPT4gIi9QQVNDQUwiDQoN Cj4gPiBXZSBhcmUgc3BlYWtpbmcgYWJvdXQgc3Vic3RpdHV0ZS1pbi1maWxlLW5hbWUsIHdoaWNo IHN1cHBvcnRzICIkZm9vIiB0bw0KPiA+IHN1YnN0aXR1dGUgYW4gZW52IHZhcmlhYmxlIGluIHRo ZSBzdHJpbmcuIEZ1cnRoZXJtb3JlLCBpdCBhbHNvIHN1cHBvcnRzICIvfiIgYW5kDQo+ID4gIi8v IiB3aGljaCBtZWFucyB0aGF0IGV2ZXJ5dGhpbmcgYmVmb3JlIHRob3NlIHR3byBzdHJpbmdzIHNo b3VsZCBiZQ0KPiA+IGRpc2NhcmRlZC4gQXMgZGVzY3JpYmVkIGluIHRoZSBidWcgcmVwb3J0LCAi fi8iIGRvZXMgd2hhdCB0aGUgZG9jIHN0cmluZw0KPiA+IHN0YXRlcy4NCj4NCj4gWWVzLiAgT25j ZSBhZ2FpbiwgRW1hY3Mgb24gTVMtV2luZG93cyBzdXBwb3J0cyB+IGFuZCB+LyBhbmQgfnVzZXIg d2hlbg0KPiAidXNlciIgaXMgdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgc2Vzc2lvbidzIHVzZXIu ICBJbiBhbnkgb3RoZXIgY2FzZQ0KPiB0aGUgIn4iIGlzIGludGVycHJldGVkIGxpdGVyYWxseSBv biBNUy1XaW5kb3dzLCBhbmQgIn5TT01FVEhJTkciIGlzDQo+ICpub3QqIHN1cHBvc2VkIHRvIGNh dXNlIHRoaXMgZnVuY3Rpb24gZGlzY2FyZCBldmVyeXRoaW5nLCBiZWNhdXNlIHRoZW4NCj4gaXQg d2lsbCBiZSBpbmNvbnNpc3RlbnQgd2l0aCBob3cgb3RoZXIgcHJpbWl0aXZlcyB0cmVhdCB+Zm9v IG9uDQo+IE1TLVdpbmRvd3MuDQo+ID4gT2JzZXJ2ZSB0aGF0IHN1YnN0aXR1dGUtaW4tZmlsZS1u YW1lIG5ldmVyIGNhbGxzIGV4cGFuZC1maWxlLW5hbWU7IHNvDQo+ID4gdGhhdCBleHBhbnNpb24g b2YgdGlsZGUgeW91IHNlZW0gdG8gc3BlYWsgYWJvdXQsIHNob3VsZCBuZXZlciB0YWtlIHBsYWNl IHRoZXJlLg0KPg0KPiBJIGtub3cuICBCdXQgb2JzZXJ2ZSB0aGF0IGl0IGNhbGxzIHVzZXJfaG9t ZWRpciwgd2hpY2ggaW4gRW1hY3Mgb24NCj4gTVMtV2luZG93cyB3b3JrcyBhcyBJIGRlc2NyaWJl ZCBhYm92ZS4NCg0KT2ssIEkgc2VlIHdoZXJlIHlvdSBhcmUgZG9pbmcgaXQ7IGhhcHBlbnMgYmVj YXVzZSBmaWxlX25hbWVfYWJzb2x1dGVfcCBhY3R1YWxseQ0KdHJpZXMgdG8gb2J0YWluIGhvbWUg ZGlyZWN0b3J5IGZvciB0aGUgdG9rZW4gcGFzc2VkIGluLiBTbyB0aGlzOg0KDQooc3Vic3RpdHV0 ZS1pbi1maWxlLW5hbWUgInNvbWUtc3RyaW5nL34kVVNFUk5BTUUiKSA9PiAifkFydGh1ciINCg0K PiA+IEluIHNob3J0OiBldmVyeXRoaW5nIGlzIHN1cHBvcnRlZCwgdGhlIGRvY3MganVzdCBkaXNw bGF5IGEgYmFkIHN0cmluZy4NCj4NCj4gTm8sIHRoYXQncyBhbiBpbmNvcnJlY3QgY29uY2x1c2lv biwgZm9yIHRoZSByZWFzb25zIEkgZXhwbGFpbmVkLg0KDQpPaywgZ290IGl0IG5vdy4NCg0KPiA+ IEkgdGhpbmsgeW91IGFyZSBjb25mdXNlZCBieSBteSBleGFtcGxlLiBJIGNob29zZSAiSE9NRSIg YmVjYXVzZSB0aGUgcmVzdWx0DQo+ID4gc3RyaW5nIGlzIHNob3J0ZXIuIEkgY291bGQgaGF2ZSB1 c2VkICIkUEFUSCIgaW4gdGhvc2UgZXhhbXBsZXMsIG9yICIkVXNlclByb2ZpbGUiLg0KPg0KPiBZ ZXMsIGJlY2F1c2UgdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgc2Vzc2lvbidzIHVzZXIgaXMgdW5s aWtlbHkgdG8gYmUNCj4gdGhlIGV4cGFuc2lvbiBvZiAkUEFUSC4gIEJ1dCB0cnkgdGhpczoNCj4N Cj4gICAoc3Vic3RpdHV0ZS1pbi1maWxlLW5hbWUgInNvbWUtc3RyaW5nL34kTE9HTkFNRSIpDQo+ ICAgID0+ICJ+ZWxpeiINCg0KSSBnZXQganVzdCAic29tZS1zdHJpbmcvfiRMT0dOQU1FIi4gSSBn dWVzcyBJIGRpZG4ndCBjb25maWd1cmVkIG15IGxvZy4NCg0KPiAoTXkgdXNlciBuYW1lIG9uIHRo aXMgc3lzdGVtIGlzICJlbGl6Ii4pDQo+DQo+IFNvIEkgZG9uJ3QgdGhpbmsgSSdtIGNvbmZ1c2Vk LCBuby4NCj4NCj4gPiA+IEl0IGlzbid0IGEgdHlwbyBpbiB0aGUgZG9jIHN0cmluZywgYmVjYXVz ZSBvbiBQb3NpeCBzeXN0ZW1zIEVtYWNzDQo+ID4gPiBiZWhhdmVzIGxpa2UgdGhlIGRvYyBzdHJp bmcgc2F5cy4gIEl0IGlzIGEgY29tbW9uIHRyYWl0IGluDQo+ID4gPiBkb2N1bWVudGF0aW9uIEVt YWNzIG5vdCB0byBkZXNjcmliZSB0b28gbWFueSBkZXRhaWxzIGFib3V0IHRoZQ0KPiA+ID4gaWRp b3N5bmNyYXNpZXMgb2YgTVMtV2luZG93cywgZXNwZWNpYWxseSBpbiBkYXJrIGNvcm5lcnMgc3Vj aCBhcyB0aGlzDQo+ID4gPiBvbmUuDQo+ID4NCj4gPiBXaHkgZG9lcyAifi8iIHdvcmtzIGFzIGRl c2NyaWJlZCBpbiB0aGUgZG9jIHN0cmluZyBvZiBzdWJzdGl0dXRlLWluLWZpbGUtbmFtZSwNCj4g PiBidXQgdGhlIGRvYyBzYXlzICIvfiI/DQo+DQo+IEJvdGggd29yayBoZXJlOg0KPg0KPiAgIChz dWJzdGl0dXRlLWluLWZpbGUtbmFtZSAic29tZS1zdHJpbmcvfiIpDQo+ICAgID0+ICJ+Ig0KPiAg IChzdWJzdGl0dXRlLWluLWZpbGUtbmFtZSAic29tZS1zdHJpbmcvfi8iKQ0KPiAgICA9PiAifi8i DQoNCkFsc28gdGhpcyB3b3JrczoNCg0KKHN1YnN0aXR1dGUtaW4tZmlsZS1uYW1lICJzb21lLXN0 cmluZy9+L2ZvbyIpID0+ICJ+L2ZvbyINCg0KQnV0IHRoaXMgd29udDogKHN1YnN0aXR1dGUtaW4t ZmlsZS1uYW1lICJzb21lLXN0cmluZy9+Zm9vIikNCg0KQmVjYXVzZSBJIGFtIG5vdCBsb2dnZWQg aW4gYXMgdXNlciAiZm9vIiBvbiB0aGUgc3lzdGVtLg0KDQpUaGlzIHdpbGwgdG9vIGNsaXAgZXZl cnl0aGluZyBiZWZvcmUgdGhlIHN1YnN0aXR1dGlvbg0KDQooc3Vic3RpdHV0ZS1pbi1maWxlLW5h bWUgInNvbWUtc3RyaW5nfi8kSE9NRSIpID0+ICJDOlxcVXNlcnNcXEFydGh1ciINCg0KYmVjYXVz ZSB0aGUgY29kZSBmaXJzdCBleHBhbmRzIHZhcmlhYmxlcywgYW5kIHRoYW4gY2xpcHMgdGhlIHBh dGgsIHJlc3VsdGluZw0KZnJvbSBmaWxlX2Fic29sdXRlX3BhdGhfcCBzZWluZyB0aGUgZHJpdmUg bGV0dGVyLCBhbmQgaXQgd2lsbCBkbyB0aGUgc2FtZSBmb3INCmFueSBlbnYgdGhhdCBzdGFydHMg d2l0aCBhIGRyaXZlIGxldHRlcjoNCg0KKHN1YnN0aXR1dGUtaW4tZmlsZS1uYW1lICJzb21lLXN0 cmluZ34vJHB5bG9uIikNCihzdWJzdGl0dXRlLWluLWZpbGUtbmFtZSAic29tZS1zdHJpbmcvJHB5 bG9uIikNCihzdWJzdGl0dXRlLWluLWZpbGUtbmFtZSAiZm9vLyRweWxvbiIpDQoNCj0+ICJDOlxc UHJvZ3JhbSBGaWxlc1xcQmFzbGVyXFxweWxvbiA1XFxEZXZlbG9wbWVudFxcIg0KDQpBbHNvOiAo c3Vic3RpdHV0ZS1pbi1maWxlLW5hbWUgImZvby8kcHlsb24kSkFWQV9IT01FIikNCg0KPT4gIkM6 XFxQcm9ncmFtIEZpbGVzXFxKYXZhXFxqZGstOVxcIg0KDQpBbnkgcGFydCBvZiBzdHJpbmcgYmVm b3JlIGEgdmFyaWFibGUgdGhhdCBleHBhbmRzIGludG8gYW4gYWJzb2x1dGUgcGF0aCBuYW1lIGlz DQpkaXNjYXJkZWQ6DQoNCihzdWJzdGl0dXRlLWluLWZpbGUtbmFtZSAiZm9vLyRweWxvbiRKQVZB X0hPTUUkT1MiKQ0KDQo9PiAiQzpcXFByb2dyYW0gRmlsZXNcXEphdmFcXGpkay05XFxXaW5kb3dz X05UIg0KDQpOb3cgSSB1bmRlcnN0YW5kIHdoeSB+LyRIT01FIGFwcGVhcmVkIGxpa2UgaXQifi8i IHdhcyBjdXQ7IGl0IHdhcyBhY3R1YWxseQ0KZWZmZWN0IG9mICRIT01FIGV4cGFuZGluZyBpbiBh biBhYnNvbHV0ZSBwYXRoIHRoYXQgY2F1c2VkIHRoZSBzdHJpbmcgYmVmb3JlIGl0IHRvDQpiZSBk aXNjYXJkZWQuIEFuZCBJIHRob3VnaHQgaXQgd2FzIGEgdHlwbyA6LSkuDQoNCj4gPiA+IFRoYXQg c2hvdWxkbid0IG1hdHRlciwgc2luY2UgRW1hY3MgY2FuIHVzZSBib3RoIGZvcndhcmQgYW5kDQo+ ID4gPiBiYWNrc2xhc2hlcyBpbiBmaWxlIG5hbWVzLg0KPiA+DQo+ID4gWWVzLCBJIHVuZGVyc3Rh bmQgdGhhdCwgSSBoYXZlIHNlZW4gaXQuIEl0IGlzIG5vdCB0aGF0IGl0IG1hdHRlcnMgdG8gRW1h Y3MgcGVyDQo+ID4gc2UsIG9yIGlmIHRoZSB1c2VyIHR5cGVzIGF0IHRoZSBwcm9tcHQgaW50ZXJh Y3RpdmVseS4gSXQgbWF0dGVycyBpZiBzb21lb25lDQo+ID4gcGFzc2VzIGEgcmVzdWx0IG9mIHRo YXQgZnVuY3Rpb24gdG8gc29tZSBvdGhlciBmdW5jdGlvbiB3aGljaCBpcyBub3QgRW1hY3MNCj4g PiBidWlsdC1pbiBuYW1lc3RyaW5nIG1hbmlwdWxhdGlvbiBmdW5jdGlvbi4gVGhhbiB0aGF0IHBl cnNvbiBjYW4gbm90IGFzc3VtZQ0KPiA+IHBsYXRmb3JtLWluZGVwZW5kZW50IG5hbWVzdHJpbmdz LCB3aGljaCBJIGRvbid0IHRoaW5rIHdvdWxkIGJlIHVucmVhc29uYWJsZSB0bw0KPiA+IGFzc3Vt ZS4gQWxzbywgaXQgaXMgbm90IHZlcnkgZGlmZmljdWx0IHRvIGltcGxlbWVudCBpdCBlaXRoZXIu DQo+DQo+IFdoYXQgd291bGQgdGhhdCBwZXJzb24gZG8gd2l0aCB0aGlzIGZpbGUgbmFtZT8gIEFs bCB0aGUgRW1hY3MNCg0KSSBkb24ndCBrbm93LiBCdXQgSSBkb24ndCB0aGluayBpdCBpcyBuZWNj ZXNzYXJ5IHRvIGFzc3VtZSBpbiB3aGljaCBjb250ZXh0IHRoZXkNCndvdWxkIHVzZSB0aGUgZnVu Y3Rpb24uDQoNCj4gcHJpbWl0aXZlcyB0aGF0IGFjY2VwdCBmaWxlIG5hbWVzIHN1cHBvcnQgYm90 aCBmbGF2b3JzIG9mIHNsYXNoZXMuDQo+IEV4YW1wbGU6DQo+DQo+ICAgKGZpbGUtbmFtZS1ub25k aXJlY3RvcnkgImQ6XFxmb28vYmFyXFxiYXoiKQ0KPiAgICA9PiAiYmF6Ig0KDQpJIGtub3csIEkg aGF2ZSBpbXBsZW1lbnRlZCBtb3N0IG9mIHRoZW0gaW4gQ0wgYnkgbm93LCBhbmQgZGlzY292ZXJl ZCB0aGV5DQp3b3JrIHNvLiBUaGV5IGFsc28gYWxsIGVtaXQgb3V0IEVtYWNzIGNhbm9uaWNhbCBu YW1lc3RyaW5nczsgaXQgaXMgb25seSB0aG9zZQ0KdHdvIHRoYXQgZG9uJ3QgKGlmIEkgaGF2ZW4n dCBtaXNzZWQgc29tZSkuIEl0IGlzIGVhc3kgYW5kIGNoZWFwIHRvIG1ha2UgdGhlbSB0bw0KZW1p dCBwYXRoIGluIHRoZSBzYW1lIGZvcm0gYXMgdGhlIHJlc3QuIEkgZmlyc3QgdGhvdWdodCBub3Qg dG8gaGFjayB0aGVtLCBidXQgSQ0KZGlkIHNpbmNlIEkgd2FzIGFueXdheSBsb29raW5nIGF0IHRo ZSBjb2RlLiBJbiB0aGUgY2FzZSBvZiBzdWJzdGl0dXRlLWluLWZpbGUtbmFtZSwNCml0IGlzIGp1 c3QgdG8gY2FsbCBkb3N0b3VuaXhfZmlsZW5hbWUgb24gdGhlIHJlc3VsdDoNCg0KLS0tDQogc3Jj L2ZpbGVpby5jIHwgNCArKysrDQogMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQ0KDQpk aWZmIC0tZ2l0IGEvc3JjL2ZpbGVpby5jIGIvc3JjL2ZpbGVpby5jDQppbmRleCA2NGQ4NGI5YWRm ZS4uMTJhMDdmYzlhZGQgMTAwNjQ0DQotLS0gYS9zcmMvZmlsZWlvLmMNCisrKyBiL3NyYy9maWxl aW8uYw0KQEAgLTIxNDUsNiArMjE0NSwxMCBAQCBERUZVTiAoInN1YnN0aXR1dGUtaW4tZmlsZS1u YW1lIiwgRnN1YnN0aXR1dGVfaW5fZmlsZV9uYW1lLA0KICAgICAgICBuZWVkIHRvIHF1b3RlIHNv bWUgJCB0byAkJCBmaXJzdC4gICovDQogICAgIHhubSA9IHA7DQoNCisjaWZkZWYgRE9TX05UDQor ICBkb3N0b3VuaXhfZmlsZW5hbWUgKHhubSk7DQorI2VuZGlmDQorDQogI2lmZGVmIFdJTkRPV1NO VA0KICAgaWYgKCFOSUxQIChWdzMyX2Rvd25jYXNlX2ZpbGVfbmFtZXMpKQ0KICAgICB7DQotLQ0K Mi40OC4xDQoNCkFuZCBpbiBmaWxlLW5hbWUtY29uY2F0IGlzIGp1c3QgdG8gY2hlY2sgdGhlIGxh c3Qgd3JpdHRlbiBjaGFyIGZvciBhbiBhcmd1bWVudDoNCg0KI2lmZGVmIERPU19OVA0KI2RlZmlu ZSBJU19OQVRJVkVfU0VQKF9jXykgKChfY18pID09ICdcXCcpDQojZWxzZQ0KI2RlZmluZSBJU19O QVRJVkVfU0VQKF9jXykgKChfY18pID09ICcvJykNCiNlbmRpZg0KKCAuLi4gKQ0KICAvKiBDb3B5 IG92ZXIgdGhlIGRhdGEuICovDQogIGNoYXIgKnAgPSBTU0RBVEEgKHJlc3VsdCk7DQogIGZvciAo aSA9IDA7IGkgPCBlYXJnczsgaSsrKQ0KICAgIHsNCiAgICAgIExpc3BfT2JqZWN0IGFyZyA9IGVs ZW1lbnRzW2ldOw0KICAgICAgbWVtY3B5IChwLCBTU0RBVEEgKGFyZyksIFNCWVRFUyAoYXJnKSk7 DQogICAgICBwICs9IFNCWVRFUyAoYXJnKTsNCiNpZmRlZiBET1NfTlQNCiAgICAgIGlmIChJU19O QVRJVkVfU0VQICggKihwIC0gMSkgKSkNCuKAguKAguKAguKAguKAguKAgioocCAtIDEpID0gRElS RUNUT1JZX1NFUDsNCiNlbmRpZg0KICAgICAgLyogVGhlIGxhc3QgZWxlbWVudCBzaG91bGRuJ3Qg aGF2ZSBhIHNsYXNoIGFkZGVkIGF0IHRoZSBlbmQuICovDQogICAgICBpZiAoaSA8IGVhcmdzIC0g MSAmJiAhSVNfRElSRUNUT1JZX1NFUCAoKihwIC0gMSkpKQ0K4oCC4oCC4oCC4oCC4oCC4oCCKnAr KyA9IERJUkVDVE9SWV9TRVA7DQogICAgfQ0KKCAuLi4gKQ0KDQpBbHRlcmFudGl2ZWwsIGRvc3Rv dW5peF9maWxlbmFtZSBvbiB0aGUgcmVzdWx0IGNhbiBkbyBpdCB0b28sIGJ1dCB0aGlzIG9uZSBz ZWVtcw0KY2hlZXBlci4NCg0KPiBTbyB0aGUgb25seSBjYXNlIHdoZXJlIGEgTGlzcCBwcm9ncmFt IHdpbGwgZmFpbCBmb3Igc3VjaCBmaWxlIG5hbWVzIGlzDQo+IGlmIHRoYXQgTGlzcCBwcm9ncmFt IG1hbnVhbGx5IGFuYWx5emVzIHRoZSBmaWxlIG5hbWUsIGluc3RlYWQgb2YgdXNpbmcNCj4gRW1h Y3MgcHJpbWl0aXZlcy4gIEluIHdoaWNoIGNhc2UgSSdkIHNheSB0aGUgTGlzcCBwcm9ncmFtIGhh cyBhIGJ1Zy4NCg0KRGVwZW5kcyBvbi4gUGVvcGxlIGFyZSBjcmVhdGl2ZSB3aGVuIHdyaXRpbmcg cHJvZ3JhbXMgYW5kIHB1dGluZyBFbWFjcyB0bw0KZGlmZmVyZW50IHVzZSB0aGVzZSBkYXlzLiBC dXQgaXQgaXMgbm90IHNvIG11Y2ggYWJvdXQgd2hhdCBpcyB3cm9uZyBvciBjb3JyZWN0DQp1c2Fn ZSwgaXQgaXMgbW9yZSBhYm91dCB0aGUgcHJpbmNpcGxlIG9mIGxlYXN0IHN1cnByaXNlIGFuZCBo YXZpbmcgdW5pZm9ybQ0KYmVoYXZpb3IgZm9yIHRoZSBhcGkuDQoNCj4gQnV0IHdlIGRpZ3Jlc3Ms IEkgdGhpbms/DQoNCllvdSBjYW4gY2xvc2UgdGhlIGJ1ZywgSSB1bmRlcnN0YW5kIHdoeSBkbyB5 b3Ugc2F5IGl0IGlzIG5vdCBhIGJ1Zy4gVGhhbmsgeW91DQpmb3IgdGhlIHBhdGllbmNlIGFuZCBo ZWxwaW5nIG1lIHRvIHVuZGVyc3RhbmQgaXQuDQoNCkFsc28gaWYgeW91IGFkZCBhIHNob3J0IHNl bnRlbmNlIHRoYXQgc2F5cyAiaWYgYW4gZXhwYW5zaW9uIHJlc3VsdHMgaW4gYW4NCmFic29sdXRl IHBhdGgsIHBhcnQgb2YgdGhlIGZpbGUgbmFtZSBiZWZvcmUgdGhlIGV4cGFuc2lvbiBpcyBkaXNj YXJkZWQiIGl0IHdvbnQNCmh1cnQuIE9yIHNvbXRoaW5nIGluIHRoYXQgbGluZS4gSXQgaXMgYSBs aXR0bGUgYml0IGFyY2FuZSBmdW5jdGlvbiB0aGF0IGRvZXMNCnNvbWUgbW9yZSB0aGFuIGRlc2Ny aWJlZCBpbiB0aGUgZG9jIHN0cmluZy4NCg0KPiA+IFRoZSBvbmx5IHR3byBmdW5jdGlvbnMgdGhh dCBoYXMgdGhpcyBkaWZmZXJlbnQgYmVoYXZpb3IgYXJlDQo+ID4gc3Vic3RpdHV0ZS1pbi1maWxl LW5hbWUgYW5kIGNvbmNhdC1wYXRoLW5hbWUuIFRoZSByZWFzb24gaXMgcHJvYmFibHkgYmVjYXVz ZQ0KPiA+IHRoZXkgZG9uJ3QgZXhwYW5kIGZpbGUgbmFtZSBhcyBvdGhlcnMgZnVuY3Rpb25zIGlu IGZpbGVpby5jIGRvLCBidXQgZG8gdGhlaXIgb3duDQo+ID4gdGhpbmcgd2l0aCBzdHJpbmcgY29u Y2F0ZW5hdGlvbnMuDQo+ID4NCj4gPiBBcyByZWdyZXNzaW9uOiAoZmlsZS1uYW1lLWNvbmNhdCAi Zm9vIiAiYmFyXFwiICJiYXoiKSA9PiAiZm9vL2JhclxcYmF6Ig0KPg0KPiBBbmQgd2h5IGlzIHRo YXQgYSBwcm9ibGVtPyAgKE9mIGNvdXJzZSwgb25lIHNob3VsZCBhbG1vc3QgbmV2ZXIgdXNlDQo+ IGZpbGUtbmFtZS1jb25jYXQsIGl0IGV4aXN0cyBmb3IgYSBzbWFsbCBudW1iZXIgb2YgdmVyeSBz cGVjaWFsIGNhc2VzOw0KPiBldmVyeXRoaW5nIGVsc2Ugc2hvdWxkIHVzZSBleHBhbmQtZmlsZS1u YW1lLikNCg0KSG93IHNob3VsZCBJIGtub3cgaXQgaXMgbWVhbnQgdG8gYmUgZm9yIGEgc3BlY2lh bCBjYXNlcz8gVGhlcmUgaXMgbm90aGluZyBhYm91dA0Kc3BlY2lhbCBjYXNlcyBpbiBkb2NzLiA6 KSBZb3UgaGF2ZSB0byBkb2N1bWVudCBzdHVmZi4gSSB3cml0ZSBldmVyeXdoZXJlIHRoYXQNCkVt YWNzIGlzICp0aGUqIGJlc3QgZG9jdW1lbnRlZCBMaXNwIGluIGV4aXN0ZW5jZS4NCg0KVG8gbm90 ZSwgZXhwYW5kLWZpbGUtbmFtZSBhbHdheXMgcmV0dXJucyBhYnNvbHV0ZSBmaWxlIG5hbWUuIElm IHNvbWVvbmUNCndvdWxkIGxpa2UgdG8gY29uc3RydWN0IGEgcmVsYXRpdmUgcGF0aCBwcm9ncmFt bWF0aWNhbGx5IHRoYW4gcGVyaGFwcyB0aGF0DQpmdW5jdGlvbiBpcyBtb3JlIGFwcm9wcmlhdGU/ IEkgZG9uJ3Qga25vdyBpZiB0aGF0IGlzIGEgcmVhbGlzdGljIHVzZS1jYXNlDQpidXQgSSBjYW4g aW1hZ2luZSBpdCB3b3VsZCBiZSB1c2VmdWwgaW4gdGhhdCBzY2VuYXJpby4NCg0KQnV0IHJlYXNv biB3aHkgSSBhbSBsb29raW5nIGF0IHRoZW0sIGlzIGJlY2F1c2UgSSBoYXZlIGltcGxlbWVudGVk IHRob3NlIGluIENMLg0KSWYgSSBmaW5kIGEgYnVnIG9mIGNvdXJzZSBJIHdpbGwgcmVwb3J0IGl0 IGFuZCBnaXZlIHlvdSBhIGZpeCBpZiBJIGNhbi4NCg0KPiA+ID4gSXQgaXMgYSBmZWF0dXJlLCBi dXQgSSBkb24ndCB0aGluayB3ZSB3YW50IHRvIG1lbnRpb24gaXQsIGJlY2F1c2UgaXQncw0KPiA+ ID4gV2luZG93cy1zcGVjaWZpYywgYW5kIGJlY2F1c2UgIn4kSE9NRSIgbWFrZXMgdmVyeSBsaXR0 bGUgc2Vuc2Ugb24NCj4gPiA+IFdpbmRvd3MuDQo+ID4NCj4gPiBJIGFtIG5vdCBzdXJlIHdoeSAi fiRIT01FIiBtYWtlcyBzZW5zZSBhbnl3aGVyZT8gRG8geW91IHBlcmhhcHMgbWVhbiAifiRVU0VS Ij8NCj4gTm8sIEkgbWVhbnQgfiRIT01FLiAgU2luY2UgfiBpcyB0aGUgc2FtZSBhcyAkSE9NRSwg d2h5IGRvdWJsZSBpdD8NCg0KWWVzLCBvZiBjb3Vyc2UsIHRoYXQgaXMgd2hhdCBJIG1lYW4gYWxz bzogd2h5IHdvdWxkIHNvbWVvbmUgZG91YmxlIGl0ID0gbWFrZXMNCnZlcnkgbGl0dGxlIHNlbnNl IGFueXdoZXJlLCBub3QganVzdCBvbiBXaW5kb3dzLg0K --_000_DU2PR02MB101097C1C04A6EF39F4A4D02E96F42DU2PR02MB10109eu_ Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: base64 PGh0bWw+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgc3R5bGU9 ImRpc3BsYXk6bm9uZTsiPiBQIHttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowO30gPC9zdHls ZT4NCjwvaGVhZD4NCjxib2R5IGRpcj0ibHRyIj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29m IiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9u dC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQomZ3Q7ICZndDsgRnJvbTogYXJ0 aHVyIG1pbGxlciAmbHQ7YXJ0aHVyLm1pbGxlckBsaXZlLmNvbSZndDs8L2Rpdj4NCjxkaXYgY2xh c3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGlj YSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQom Z3Q7ICZndDsgQ0M6ICZxdW90Ozc2MDIzQGRlYmJ1Z3MuZ251Lm9yZyZxdW90OyAmbHQ7NzYwMjNA ZGViYnVncy5nbnUub3JnJmd0OzwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0 eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNp emU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCiZndDsgJmd0OyBEYXRlOiBNb24sIDMg RmViIDIwMjUgMTU6MzQ6NDggKzAwMDA8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29m IiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9u dC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQomZ3Q7ICZndDs8L2Rpdj4NCjxk aXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhl bHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDAp OyI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7IChzdWJzdGl0dXRlLWluLWZpbGUtbmFtZSAmcXVvdDtz b21lLXN0cmluZy9+JEhPTUUmcXVvdDspID0mZ3Q7IHNvbWUtc3RyaW5nL35DOlxVc2Vyc1xhcnRo dXI8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6 IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjog cmdiKDAsIDAsIDApOyI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7PC9kaXY+DQo8ZGl2IGNsYXNzPSJl bGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNh bnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KJmd0OyAm Z3Q7ICZndDsgJmd0OyBIb3dldmVyOjwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2Yi IHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250 LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCiZndDsgJmd0OyAmZ3Q7ICZndDs8 L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENh bGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdi KDAsIDAsIDApOyI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7IChzdWJzdGl0dXRlLWluLWZpbGUtbmFt ZSAmcXVvdDtzb21lLXN0cmluZ34vJEhPTUUmcXVvdDspID0mZ3Q7IEM6XFVzZXJzXGFydGh1cjwv ZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2Fs aWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2Io MCwgMCwgMCk7Ij4NCiZndDsgJmd0OyAmZ3Q7PC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Q cm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7 IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KJmd0OyAmZ3Q7ICZndDsg WWVzLiAmbmJzcDtFbWFjcyBvbiBNUy1XaW5kb3dzIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgJnF1b3Q7 fmZvbyZxdW90OyBub3RhdGlvbiwgd2hpY2g8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1By b29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsg Zm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQomZ3Q7ICZndDs8L2Rpdj4N CjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmks IEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAs IDApOyI+DQomZ3Q7ICZndDsgQWN0dWFsbHksIGlzIHNlZW1zIHlvdSBkbyBzdXBwb3J0IHRoYXQg bm90YXRpb24gb24gV2luZG93cyA6LSkuIEl0IHdvcmtzIGhlcmU6PC9kaXY+DQo8ZGl2IGNsYXNz PSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2Es IHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KJmd0 OyAmZ3Q7PC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFt aWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29s b3I6IHJnYigwLCAwLCAwKTsiPg0KJmd0OyAmZ3Q7IH4vcmVwb3MvZW1zcmMvZW1hY3Mvc3JjICQg KGV4cGFuZC1maWxlLW5hbWUgJnF1b3Q7fiZxdW90Oyk8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1l bnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1z ZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQomZ3Q7ICZndDsg YzovVXNlcnMvQXJ0aHVyPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9 ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTog MTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KJmd0OyAmZ3Q7IH4vcmVwb3MvZW1zcmMvZW1h Y3Mvc3JjICQgKGV4cGFuZC1maWxlLW5hbWUgJnF1b3Q7fmFydGh1ciZxdW90Oyk8L2Rpdj4NCjxk aXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhl bHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDAp OyI+DQomZ3Q7ICZndDsgYzovVXNlcnMvQXJ0aHVyPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50 VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2Vy aWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KJmd0OzwvZGl2Pg0K PGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwg SGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwg MCk7Ij4NCiZndDsgWWVzLCBpZiAmcXVvdDtmb28mcXVvdDsgaXMgeW91ciB1c2VyIG5hbWUsIHRo ZW4gd2UgZG8gc3VwcG9ydCAmcXVvdDt+Zm9vJnF1b3Q7IChiZWNhdXNlPC9kaXY+DQo8ZGl2IGNs YXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRp Y2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0K Jmd0OyBpdCdzIGVhc3kgYW5kIGV4cGVjdGVkKS4gJm5ic3A7QnV0IG5vdCBmb3IgYW55IG90aGVy ICZxdW90O2ZvbyZxdW90Oy48L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHls ZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXpl OiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQo8YnI+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9 ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwg c2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQomZ3Q7 ICZndDsgfi9yZXBvcy9lbXNyYy9lbWFjcy9zcmMgJCAoZXhwYW5kLWZpbGUtbmFtZSAmcXVvdDt+ L3Rlc3QmcXVvdDspPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZv bnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJw dDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KJmd0OyAmZ3Q7IGM6L1VzZXJzL0FydGh1ci90ZXN0 PC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBD YWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJn YigwLCAwLCAwKTsiPg0KJmd0OyAmZ3Q7IH4vcmVwb3MvZW1zcmMvZW1hY3Mvc3JjICQ8L2Rpdj4N CjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmks IEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAs IDApOyI+DQomZ3Q7ICZndDs8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHls ZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXpl OiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQomZ3Q7ICZndDsgSXQgc2VlbXMgdGhhdCB5 b3UgYXJlIHRoaW5raW5nIG9mIHRoZSB3cm9uZyBmdW5jdGlvbiBoZXJlLCBvciBoYXZlbid0IGxv b2tlZCBhdDwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZh bWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNv bG9yOiByZ2IoMCwgMCwgMCk7Ij4NCiZndDsgJmd0OyB0aGUgaW1wbGVtZW50YXRpb24uIFRoYXQg d291bGQgYmUgZXhwYW5kLWZpbGUtbmFtZSB0aGF0IHN1cHBvcnRzICZxdW90O35mb28mcXVvdDs8 L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENh bGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdi KDAsIDAsIDApOyI+DQomZ3Q7ICZndDsgbm90YXRpb24sIG5vdCBzdWJzdGl0dXRlLWluLWZpbGUt bmFtZS48L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1p bHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xv cjogcmdiKDAsIDAsIDApOyI+DQomZ3Q7PC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9v ZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZv bnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KJmd0OyBUaGUgZnVuY3Rpb24g aXMgZGlmZmVyZW50LCBidXQgdGhlIHJlYXNvbiBpcyB0aGUgc2FtZTogRW1hY3MgZG9lc24ndDwv ZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2Fs aWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2Io MCwgMCwgMCk7Ij4NCiZndDsgc3VwcG9ydCB+Zm9vIG9uIE1TLVdpbmRvd3MsIGV2ZW4gaWYgdGhl IHVzZXIgJnF1b3Q7Zm9vJnF1b3Q7IGRvZXMgZXhpc3Qgb24gdGhlPC9kaXY+DQo8ZGl2IGNsYXNz PSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2Es IHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KJmd0 OyBzeXN0ZW06PC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQt ZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsg Y29sb3I6IHJnYigwLCAwLCAwKTsiPg0KJmd0OzwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRv UHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlm OyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCiZndDsgJm5ic3A7IChz dWJzdGl0dXRlLWluLWZpbGUtbmFtZSAmcXVvdDtzb21lLXN0cmluZy9+QWRtaW5pc3RyYXRvciZx dW90Oyk8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1p bHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xv cjogcmdiKDAsIDAsIDApOyI+DQomZ3Q7ICZuYnNwOyAmbmJzcDs9Jmd0OyAmcXVvdDtzb21lLXN0 cmluZy9+QWRtaW5pc3RyYXRvciZxdW90OzwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJv b2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBm b250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCiZndDsgJm5ic3A7IChzdWJz dGl0dXRlLWluLWZpbGUtbmFtZSAmcXVvdDtzb21lLXN0cmluZy9+U1lTVEVNJnF1b3Q7KTwvZGl2 Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJy aSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwg MCwgMCk7Ij4NCiZndDsgJm5ic3A7ICZuYnNwOz0mZ3Q7ICZxdW90O3NvbWUtc3RyaW5nL35TWVNU RU0mcXVvdDs8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1m YW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBj b2xvcjogcmdiKDAsIDAsIDApOyI+DQo8YnI+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRU b1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJp ZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQpTZWVtcyBsaWtlIEkg aGF2ZSB0YWtlbiB1bmZvcnR1bmF0ZSBleGFtcGxlOyBzaW5jZSBIT01FIGV4cGFuZHMgaW50byBh biBhYnNvbHV0ZTwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250 LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7 IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCmZpbGUgbmFtZSwgYW5kIEkgYWxzbyB0cmllZCBQQVRI IHdpdGNoIGFsc28gZXhwYW5kcyBpbnRvIGFic29sdXRlLiBJIHNlZSBub3c6PC9kaXY+DQo8ZGl2 IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2 ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsi Pg0KPGJyPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQt ZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsg Y29sb3I6IHJnYigwLCAwLCAwKTsiPg0KKHN1YnN0aXR1dGUtaW4tZmlsZS1uYW1lICZxdW90O3Nv bWUtc3RyaW5nfi8kVVNFUkRPTUFJTiZxdW90OykgPSZndDsgJnF1b3Q7c29tZS1zdHJpbmd+L1BB U0NBTCZxdW90OzwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250 LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7 IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCihzdWJzdGl0dXRlLWluLWZpbGUtbmFtZSAmcXVvdDtz b21lLXN0cmluZy9+JFVTRVJET01BSU4mcXVvdDspID0mZ3Q7ICZxdW90O3NvbWUtc3RyaW5nL35Q QVNDQUwmcXVvdDs8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9u dC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0 OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQooc3Vic3RpdHV0ZS1pbi1maWxlLW5hbWUgJnF1b3Q7 c29tZS1zdHJpbmcvLyRVU0VSRE9NQUlOJnF1b3Q7KSA9Jmd0OyAmcXVvdDsvUEFTQ0FMJnF1b3Q7 PC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBD YWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJn YigwLCAwLCAwKTsiPg0KPGJyPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIg c3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQt c2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KJmd0OyAmZ3Q7IFdlIGFyZSBzcGVh a2luZyBhYm91dCBzdWJzdGl0dXRlLWluLWZpbGUtbmFtZSwgd2hpY2ggc3VwcG9ydHMgJnF1b3Q7 JGZvbyZxdW90OyB0bzwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJm b250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEy cHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCiZndDsgJmd0OyBzdWJzdGl0dXRlIGFuIGVudiB2 YXJpYWJsZSBpbiB0aGUgc3RyaW5nLiBGdXJ0aGVybW9yZSwgaXQgYWxzbyBzdXBwb3J0cyAmcXVv dDsvfiZxdW90OyBhbmQ8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0i Zm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAx MnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQomZ3Q7ICZndDsgJnF1b3Q7Ly8mcXVvdDsgd2hp Y2ggbWVhbnMgdGhhdCBldmVyeXRoaW5nIGJlZm9yZSB0aG9zZSB0d28gc3RyaW5ncyBzaG91bGQg YmU8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6 IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjog cmdiKDAsIDAsIDApOyI+DQomZ3Q7ICZndDsgZGlzY2FyZGVkLiBBcyBkZXNjcmliZWQgaW4gdGhl IGJ1ZyByZXBvcnQsICZxdW90O34vJnF1b3Q7IGRvZXMgd2hhdCB0aGUgZG9jIHN0cmluZzwvZGl2 Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJy aSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwg MCwgMCk7Ij4NCiZndDsgJmd0OyBzdGF0ZXMuPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Q cm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7 IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KJmd0OzwvZGl2Pg0KPGRp diBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVs dmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7 Ij4NCiZndDsgWWVzLiAmbmJzcDtPbmNlIGFnYWluLCBFbWFjcyBvbiBNUy1XaW5kb3dzIHN1cHBv cnRzIH4gYW5kIH4vIGFuZCB+dXNlciB3aGVuPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Q cm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7 IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KJmd0OyAmcXVvdDt1c2Vy JnF1b3Q7IGlzIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IHNlc3Npb24ncyB1c2VyLiAmbmJzcDtJ biBhbnkgb3RoZXIgY2FzZTwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxl PSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6 IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCiZndDsgdGhlICZxdW90O34mcXVvdDsgaXMg aW50ZXJwcmV0ZWQgbGl0ZXJhbGx5IG9uIE1TLVdpbmRvd3MsIGFuZCAmcXVvdDt+U09NRVRISU5H JnF1b3Q7IGlzPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQt ZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsg Y29sb3I6IHJnYigwLCAwLCAwKTsiPg0KJmd0OyAqbm90KiBzdXBwb3NlZCB0byBjYXVzZSB0aGlz IGZ1bmN0aW9uIGRpc2NhcmQgZXZlcnl0aGluZywgYmVjYXVzZSB0aGVuPC9kaXY+DQo8ZGl2IGNs YXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRp Y2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0K Jmd0OyBpdCB3aWxsIGJlIGluY29uc2lzdGVudCB3aXRoIGhvdyBvdGhlciBwcmltaXRpdmVzIHRy ZWF0IH5mb28gb248L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9u dC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0 OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQomZ3Q7IE1TLVdpbmRvd3MuPC9kaXY+DQo8ZGl2IGNs YXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRp Y2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0K Jmd0OyAmZ3Q7IE9ic2VydmUgdGhhdCBzdWJzdGl0dXRlLWluLWZpbGUtbmFtZSBuZXZlciBjYWxs cyBleHBhbmQtZmlsZS1uYW1lOyBzbzwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2Yi IHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250 LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCiZndDsgJmd0OyB0aGF0IGV4cGFu c2lvbiBvZiB0aWxkZSB5b3Ugc2VlbSB0byBzcGVhayBhYm91dCwgc2hvdWxkIG5ldmVyIHRha2Ug cGxhY2UgdGhlcmUuPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZv bnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJw dDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KJmd0OzwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVu dFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNl cmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCiZndDsgSSBrbm93 LiAmbmJzcDtCdXQgb2JzZXJ2ZSB0aGF0IGl0IGNhbGxzIHVzZXJfaG9tZWRpciwgd2hpY2ggaW4g RW1hY3Mgb248L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1m YW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBj b2xvcjogcmdiKDAsIDAsIDApOyI+DQomZ3Q7IE1TLVdpbmRvd3Mgd29ya3MgYXMgSSBkZXNjcmli ZWQgYWJvdmUuPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQt ZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsg Y29sb3I6IHJnYigwLCAwLCAwKTsiPg0KPGJyPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50 VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2Vy aWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KT2ssIEkgc2VlIHdo ZXJlIHlvdSBhcmUgZG9pbmcgaXQ7IGhhcHBlbnMgYmVjYXVzZSBmaWxlX25hbWVfYWJzb2x1dGVf cCBhY3R1YWxseTwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250 LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7 IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCnRyaWVzIHRvIG9idGFpbiBob21lIGRpcmVjdG9yeSBm b3IgdGhlIHRva2VuIHBhc3NlZCBpbi4gU28gdGhpczo8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1l bnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1z ZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQo8YnI+DQo8L2Rp dj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGli cmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAs IDAsIDApOyI+DQooc3Vic3RpdHV0ZS1pbi1maWxlLW5hbWUgJnF1b3Q7c29tZS1zdHJpbmcvfiRV U0VSTkFNRSZxdW90OykgPSZndDsgJnF1b3Q7fkFydGh1ciZxdW90OzwvZGl2Pg0KPGRpdiBjbGFz cz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNh LCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCjxi cj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWls eTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9y OiByZ2IoMCwgMCwgMCk7Ij4NCiZndDsgJmd0OyBJbiBzaG9ydDogZXZlcnl0aGluZyBpcyBzdXBw b3J0ZWQsIHRoZSBkb2NzIGp1c3QgZGlzcGxheSBhIGJhZCBzdHJpbmcuPC9kaXY+DQo8ZGl2IGNs YXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRp Y2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0K Jmd0OzwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWls eTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9y OiByZ2IoMCwgMCwgMCk7Ij4NCiZndDsgTm8sIHRoYXQncyBhbiBpbmNvcnJlY3QgY29uY2x1c2lv biwgZm9yIHRoZSByZWFzb25zIEkgZXhwbGFpbmVkLjwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVu dFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNl cmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCjxicj4NCjwvZGl2 Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJy aSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwg MCwgMCk7Ij4NCk9rLCBnb3QgaXQgbm93LjwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJv b2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBm b250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCjxicj4NCjwvZGl2Pg0KPGRp diBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVs dmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7 Ij4NCiZndDsgJmd0OyBJIHRoaW5rIHlvdSBhcmUgY29uZnVzZWQgYnkgbXkgZXhhbXBsZS4gSSBj aG9vc2UgJnF1b3Q7SE9NRSZxdW90OyBiZWNhdXNlIHRoZSByZXN1bHQ8L2Rpdj4NCjxkaXYgY2xh c3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGlj YSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQom Z3Q7ICZndDsgc3RyaW5nIGlzIHNob3J0ZXIuIEkgY291bGQgaGF2ZSB1c2VkICZxdW90OyRQQVRI JnF1b3Q7IGluIHRob3NlIGV4YW1wbGVzLCBvciAmcXVvdDskVXNlclByb2ZpbGUmcXVvdDsuPC9k aXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxp YnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigw LCAwLCAwKTsiPg0KJmd0OzwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxl PSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6 IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCiZndDsgWWVzLCBiZWNhdXNlIHRoZSBuYW1l IG9mIHRoZSBjdXJyZW50IHNlc3Npb24ncyB1c2VyIGlzIHVubGlrZWx5IHRvIGJlPC9kaXY+DQo8 ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBI ZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAw KTsiPg0KJmd0OyB0aGUgZXhwYW5zaW9uIG9mICRQQVRILiAmbmJzcDtCdXQgdHJ5IHRoaXM6PC9k aXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxp YnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigw LCAwLCAwKTsiPg0KJmd0OzwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxl PSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6 IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCiZndDsgJm5ic3A7IChzdWJzdGl0dXRlLWlu LWZpbGUtbmFtZSAmcXVvdDtzb21lLXN0cmluZy9+JExPR05BTUUmcXVvdDspPC9kaXY+DQo8ZGl2 IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2 ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsi Pg0KJmd0OyAmbmJzcDsgJm5ic3A7PSZndDsgJnF1b3Q7fmVsaXomcXVvdDs8L2Rpdj4NCjxkaXYg Y2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZl dGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+ DQo8YnI+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1m YW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBj b2xvcjogcmdiKDAsIDAsIDApOyI+DQpJIGdldCBqdXN0ICZxdW90O3NvbWUtc3RyaW5nL34kTE9H TkFNRSZxdW90Oy4gSSBndWVzcyBJIGRpZG4ndCBjb25maWd1cmVkIG15IGxvZy48L2Rpdj4NCjxk aXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhl bHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDAp OyI+DQo8YnI+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9u dC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0 OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQomZ3Q7IChNeSB1c2VyIG5hbWUgb24gdGhpcyBzeXN0 ZW0gaXMgJnF1b3Q7ZWxpeiZxdW90Oy4pPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9v ZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZv bnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KJmd0OzwvZGl2Pg0KPGRpdiBj bGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0 aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4N CiZndDsgU28gSSBkb24ndCB0aGluayBJJ20gY29uZnVzZWQsIG5vLjwvZGl2Pg0KPGRpdiBjbGFz cz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNh LCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCiZn dDs8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6 IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjog cmdiKDAsIDAsIDApOyI+DQomZ3Q7ICZndDsgJmd0OyBJdCBpc24ndCBhIHR5cG8gaW4gdGhlIGRv YyBzdHJpbmcsIGJlY2F1c2Ugb24gUG9zaXggc3lzdGVtcyBFbWFjczwvZGl2Pg0KPGRpdiBjbGFz cz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNh LCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCiZn dDsgJmd0OyAmZ3Q7IGJlaGF2ZXMgbGlrZSB0aGUgZG9jIHN0cmluZyBzYXlzLiAmbmJzcDtJdCBp cyBhIGNvbW1vbiB0cmFpdCBpbjwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0 eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNp emU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCiZndDsgJmd0OyAmZ3Q7IGRvY3VtZW50 YXRpb24gRW1hY3Mgbm90IHRvIGRlc2NyaWJlIHRvbyBtYW55IGRldGFpbHMgYWJvdXQgdGhlPC9k aXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxp YnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigw LCAwLCAwKTsiPg0KJmd0OyAmZ3Q7ICZndDsgaWRpb3N5bmNyYXNpZXMgb2YgTVMtV2luZG93cywg ZXNwZWNpYWxseSBpbiBkYXJrIGNvcm5lcnMgc3VjaCBhcyB0aGlzPC9kaXY+DQo8ZGl2IGNsYXNz PSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2Es IHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KJmd0 OyAmZ3Q7ICZndDsgb25lLjwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxl PSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6 IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCiZndDsgJmd0OzwvZGl2Pg0KPGRpdiBjbGFz cz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNh LCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCiZn dDsgJmd0OyBXaHkgZG9lcyAmcXVvdDt+LyZxdW90OyB3b3JrcyBhcyBkZXNjcmliZWQgaW4gdGhl IGRvYyBzdHJpbmcgb2Ygc3Vic3RpdHV0ZS1pbi1maWxlLW5hbWUsPC9kaXY+DQo8ZGl2IGNsYXNz PSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2Es IHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KJmd0 OyAmZ3Q7IGJ1dCB0aGUgZG9jIHNheXMgJnF1b3Q7L34mcXVvdDs/PC9kaXY+DQo8ZGl2IGNsYXNz PSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2Es IHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KJmd0 OzwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTog Q2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiBy Z2IoMCwgMCwgMCk7Ij4NCiZndDsgQm90aCB3b3JrIGhlcmU6PC9kaXY+DQo8ZGl2IGNsYXNzPSJl bGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNh bnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KJmd0Ozwv ZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2Fs aWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2Io MCwgMCwgMCk7Ij4NCiZndDsgJm5ic3A7IChzdWJzdGl0dXRlLWluLWZpbGUtbmFtZSAmcXVvdDtz b21lLXN0cmluZy9+JnF1b3Q7KTwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0 eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNp emU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCiZndDsgJm5ic3A7ICZuYnNwOz0mZ3Q7 ICZxdW90O34mcXVvdDs8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0i Zm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAx MnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQomZ3Q7ICZuYnNwOyAoc3Vic3RpdHV0ZS1pbi1m aWxlLW5hbWUgJnF1b3Q7c29tZS1zdHJpbmcvfi8mcXVvdDspPC9kaXY+DQo8ZGl2IGNsYXNzPSJl bGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNh bnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KJmd0OyAm bmJzcDsgJm5ic3A7PSZndDsgJnF1b3Q7fi8mcXVvdDs8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1l bnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1z ZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQo8YnI+DQo8L2Rp dj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGli cmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAs IDAsIDApOyI+DQpBbHNvIHRoaXMgd29ya3M6PC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Q cm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7 IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KPGJyPg0KPC9kaXY+DQo8 ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBI ZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAw KTsiPg0KKHN1YnN0aXR1dGUtaW4tZmlsZS1uYW1lICZxdW90O3NvbWUtc3RyaW5nL34vZm9vJnF1 b3Q7KSA9Jmd0OyAmcXVvdDt+L2ZvbyZxdW90OzwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRv UHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlm OyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCjxicj4NCjwvZGl2Pg0K PGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwg SGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwg MCk7Ij4NCkJ1dCB0aGlzIHdvbnQ6IChzdWJzdGl0dXRlLWluLWZpbGUtbmFtZSAmcXVvdDtzb21l LXN0cmluZy9+Zm9vJnF1b3Q7KTwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0 eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNp emU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCjxicj4NCjwvZGl2Pg0KPGRpdiBjbGFz cz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNh LCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCkJl Y2F1c2UgSSBhbSBub3QgbG9nZ2VkIGluIGFzIHVzZXIgJnF1b3Q7Zm9vJnF1b3Q7IG9uIHRoZSBz eXN0ZW0uPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFt aWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29s b3I6IHJnYigwLCAwLCAwKTsiPg0KPGJyPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Q cm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7 IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KVGhpcyB3aWxsIHRvbyBj bGlwIGV2ZXJ5dGhpbmcgYmVmb3JlIHRoZSBzdWJzdGl0dXRpb248L2Rpdj4NCjxkaXYgY2xhc3M9 ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwg c2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQo8YnI+ DQo8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6 IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjog cmdiKDAsIDAsIDApOyI+DQooc3Vic3RpdHV0ZS1pbi1maWxlLW5hbWUgJnF1b3Q7c29tZS1zdHJp bmd+LyRIT01FJnF1b3Q7KSA9Jmd0OyAmcXVvdDtDOlxcVXNlcnNcXEFydGh1ciZxdW90OzwvZGl2 Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJy aSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwg MCwgMCk7Ij4NCjxicj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxl PSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6 IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCmJlY2F1c2UgdGhlIGNvZGUgZmlyc3QgZXhw YW5kcyB2YXJpYWJsZXMsIGFuZCB0aGFuIGNsaXBzIHRoZSBwYXRoLCByZXN1bHRpbmc8L2Rpdj4N CjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmks IEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAs IDApOyI+DQpmcm9tIGZpbGVfYWJzb2x1dGVfcGF0aF9wIHNlaW5nIHRoZSBkcml2ZSBsZXR0ZXIs IGFuZCBpdCB3aWxsIGRvIHRoZSBzYW1lIGZvcjwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRv UHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlm OyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCmFueSBlbnYgdGhhdCBz dGFydHMgd2l0aCBhIGRyaXZlIGxldHRlcjo8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1By b29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsg Zm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQo8YnI+DQo8L2Rpdj4NCjxk aXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhl bHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDAp OyI+DQooc3Vic3RpdHV0ZS1pbi1maWxlLW5hbWUgJnF1b3Q7c29tZS1zdHJpbmd+LyRweWxvbiZx dW90Oyk8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1p bHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xv cjogcmdiKDAsIDAsIDApOyI+DQooc3Vic3RpdHV0ZS1pbi1maWxlLW5hbWUgJnF1b3Q7c29tZS1z dHJpbmcvJHB5bG9uJnF1b3Q7KTwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0 eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNp emU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCihzdWJzdGl0dXRlLWluLWZpbGUtbmFt ZSAmcXVvdDtmb28vJHB5bG9uJnF1b3Q7KTwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJv b2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBm b250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCjxicj4NCjwvZGl2Pg0KPGRp diBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVs dmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7 Ij4NCj0mZ3Q7ICZxdW90O0M6XFxQcm9ncmFtIEZpbGVzXFxCYXNsZXJcXHB5bG9uIDVcXERldmVs b3BtZW50XFwmcXVvdDs8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0i Zm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAx MnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQo8YnI+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9ImVs ZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fu cy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQpBbHNvOiAo c3Vic3RpdHV0ZS1pbi1maWxlLW5hbWUgJnF1b3Q7Zm9vLyRweWxvbiRKQVZBX0hPTUUmcXVvdDsp PC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBD YWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJn YigwLCAwLCAwKTsiPg0KPGJyPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIg c3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQt c2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KPSZndDsgJnF1b3Q7QzpcXFByb2dy YW0gRmlsZXNcXEphdmFcXGpkay05XFwmcXVvdDs8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRU b1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJp ZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQo8YnI+DQo8L2Rpdj4N CjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmks IEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAs IDApOyI+DQpBbnkgcGFydCBvZiBzdHJpbmcgYmVmb3JlIGEgdmFyaWFibGUgdGhhdCBleHBhbmRz IGludG8gYW4gYWJzb2x1dGUgcGF0aCBuYW1lIGlzPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50 VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2Vy aWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KZGlzY2FyZGVkOjwv ZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2Fs aWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2Io MCwgMCwgMCk7Ij4NCjxicj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0 eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNp emU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCihzdWJzdGl0dXRlLWluLWZpbGUtbmFt ZSAmcXVvdDtmb28vJHB5bG9uJEpBVkFfSE9NRSRPUyZxdW90Oyk8L2Rpdj4NCjxkaXYgY2xhc3M9 ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwg c2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQo8YnI+ DQo8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6 IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjog cmdiKDAsIDAsIDApOyI+DQo9Jmd0OyAmcXVvdDtDOlxcUHJvZ3JhbSBGaWxlc1xcSmF2YVxcamRr LTlcXFdpbmRvd3NfTlQmcXVvdDs8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBz dHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1z aXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQo8YnI+DQo8L2Rpdj4NCjxkaXYgY2xh c3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGlj YSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQpO b3cgSSB1bmRlcnN0YW5kIHdoeSB+LyRIT01FIGFwcGVhcmVkIGxpa2UgaXQmcXVvdDt+LyZxdW90 OyB3YXMgY3V0OyBpdCB3YXMgYWN0dWFsbHk8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1By b29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsg Zm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQplZmZlY3Qgb2YgJEhPTUUg ZXhwYW5kaW5nIGluIGFuIGFic29sdXRlIHBhdGggdGhhdCBjYXVzZWQgdGhlIHN0cmluZyBiZWZv cmUgaXQgdG88L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1m YW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBj b2xvcjogcmdiKDAsIDAsIDApOyI+DQpiZSBkaXNjYXJkZWQuIEFuZCBJIHRob3VnaHQgaXQgd2Fz IGEgdHlwbyA6LSkuPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZv bnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJw dDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KPGJyPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVt ZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMt c2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KJmd0OyAmZ3Q7 ICZndDsgVGhhdCBzaG91bGRuJ3QgbWF0dGVyLCBzaW5jZSBFbWFjcyBjYW4gdXNlIGJvdGggZm9y d2FyZCBhbmQ8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1m YW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBj b2xvcjogcmdiKDAsIDAsIDApOyI+DQomZ3Q7ICZndDsgJmd0OyBiYWNrc2xhc2hlcyBpbiBmaWxl IG5hbWVzLjwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZh bWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNv bG9yOiByZ2IoMCwgMCwgMCk7Ij4NCiZndDsgJmd0OzwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVu dFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNl cmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCiZndDsgJmd0OyBZ ZXMsIEkgdW5kZXJzdGFuZCB0aGF0LCBJIGhhdmUgc2VlbiBpdC4gSXQgaXMgbm90IHRoYXQgaXQg bWF0dGVycyB0byBFbWFjcyBwZXI8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBz dHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1z aXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQomZ3Q7ICZndDsgc2UsIG9yIGlmIHRo ZSB1c2VyIHR5cGVzIGF0IHRoZSBwcm9tcHQgaW50ZXJhY3RpdmVseS4gSXQgbWF0dGVycyBpZiBz b21lb25lPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFt aWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29s b3I6IHJnYigwLCAwLCAwKTsiPg0KJmd0OyAmZ3Q7IHBhc3NlcyBhIHJlc3VsdCBvZiB0aGF0IGZ1 bmN0aW9uIHRvIHNvbWUgb3RoZXIgZnVuY3Rpb24gd2hpY2ggaXMgbm90IEVtYWNzPC9kaXY+DQo8 ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBI ZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAw KTsiPg0KJmd0OyAmZ3Q7IGJ1aWx0LWluIG5hbWVzdHJpbmcgbWFuaXB1bGF0aW9uIGZ1bmN0aW9u LiBUaGFuIHRoYXQgcGVyc29uIGNhbiBub3QgYXNzdW1lPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVt ZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMt c2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KJmd0OyAmZ3Q7 IHBsYXRmb3JtLWluZGVwZW5kZW50IG5hbWVzdHJpbmdzLCB3aGljaCBJIGRvbid0IHRoaW5rIHdv dWxkIGJlIHVucmVhc29uYWJsZSB0bzwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2Yi IHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250 LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCiZndDsgJmd0OyBhc3N1bWUuIEFs c28sIGl0IGlzIG5vdCB2ZXJ5IGRpZmZpY3VsdCB0byBpbXBsZW1lbnQgaXQgZWl0aGVyLjwvZGl2 Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJy aSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwg MCwgMCk7Ij4NCiZndDs8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0i Zm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAx MnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQomZ3Q7IFdoYXQgd291bGQgdGhhdCBwZXJzb24g ZG8gd2l0aCB0aGlzIGZpbGUgbmFtZT8gJm5ic3A7QWxsIHRoZSBFbWFjczwvZGl2Pg0KPGRpdiBj bGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0 aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4N Cjxicj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZh bWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNv bG9yOiByZ2IoMCwgMCwgMCk7Ij4NCkkgZG9uJ3Qga25vdy4gQnV0IEkgZG9uJ3QgdGhpbmsgaXQg aXMgbmVjY2Vzc2FyeSB0byBhc3N1bWUgaW4gd2hpY2ggY29udGV4dCB0aGV5PC9kaXY+DQo8ZGl2 IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2 ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsi Pg0Kd291bGQgdXNlIHRoZSBmdW5jdGlvbi4mbmJzcDs8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1l bnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1z ZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQo8YnI+DQo8L2Rp dj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGli cmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAs IDAsIDApOyI+DQomZ3Q7IHByaW1pdGl2ZXMgdGhhdCBhY2NlcHQgZmlsZSBuYW1lcyBzdXBwb3J0 IGJvdGggZmxhdm9ycyBvZiBzbGFzaGVzLjwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJv b2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBm b250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCiZndDsgRXhhbXBsZTo8L2Rp dj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGli cmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAs IDAsIDApOyI+DQomZ3Q7PC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9 ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTog MTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KJmd0OyAmbmJzcDsgKGZpbGUtbmFtZS1ub25k aXJlY3RvcnkgJnF1b3Q7ZDpcXGZvby9iYXJcXGJheiZxdW90Oyk8L2Rpdj4NCjxkaXYgY2xhc3M9 ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwg c2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQomZ3Q7 ICZuYnNwOyAmbmJzcDs9Jmd0OyAmcXVvdDtiYXomcXVvdDs8L2Rpdj4NCjxkaXYgY2xhc3M9ImVs ZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fu cy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQo8YnI+DQo8 L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENh bGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdi KDAsIDAsIDApOyI+DQpJIGtub3csIEkgaGF2ZSBpbXBsZW1lbnRlZCBtb3N0IG9mIHRoZW0gaW4g Q0wgYnkgbm93LCBhbmQgZGlzY292ZXJlZCB0aGV5Jm5ic3A7PC9kaXY+DQo8ZGl2IGNsYXNzPSJl bGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNh bnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0Kd29yayBz by4gVGhleSBhbHNvIGFsbCBlbWl0IG91dCBFbWFjcyBjYW5vbmljYWwgbmFtZXN0cmluZ3M7IGl0 IGlzIG9ubHkgdGhvc2U8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0i Zm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAx MnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQp0d28gdGhhdCBkb24ndCAoaWYgSSBoYXZlbid0 IG1pc3NlZCBzb21lKS4gSXQgaXMgZWFzeSBhbmQgY2hlYXAgdG8gbWFrZSB0aGVtIHRvPC9kaXY+ DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJp LCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAw LCAwKTsiPg0KZW1pdCBwYXRoIGluIHRoZSBzYW1lIGZvcm0gYXMgdGhlIHJlc3QuIEkgZmlyc3Qg dGhvdWdodCBub3QgdG8gaGFjayB0aGVtLCBidXQgSTwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVu dFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNl cmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCmRpZCBzaW5jZSBJ IHdhcyBhbnl3YXkgbG9va2luZyBhdCB0aGUgY29kZS4gSW4gdGhlIGNhc2Ugb2Ygc3Vic3RpdHV0 ZS1pbi1maWxlLW5hbWUsPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9 ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTog MTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KaXQgaXMganVzdCB0byBjYWxsIGRvc3RvdW5p eF9maWxlbmFtZSBvbiB0aGUgcmVzdWx0OjwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJv b2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBm b250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCjxicj4NCjwvZGl2Pg0KPGRp diBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVs dmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7 Ij4NCi0tLTwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZh bWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNv bG9yOiByZ2IoMCwgMCwgMCk7Ij4NCiZuYnNwO3NyYy9maWxlaW8uYyB8IDQgKysrKzwvZGl2Pg0K PGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwg SGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwg MCk7Ij4NCiZuYnNwOzEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyk8L2Rpdj4NCjxkaXYg Y2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZl dGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+ DQo8YnI+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1m YW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBj b2xvcjogcmdiKDAsIDAsIDApOyI+DQpkaWZmIC0tZ2l0IGEvc3JjL2ZpbGVpby5jIGIvc3JjL2Zp bGVpby5jPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFt aWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29s b3I6IHJnYigwLCAwLCAwKTsiPg0KaW5kZXggNjRkODRiOWFkZmUuLjEyYTA3ZmM5YWRkIDEwMDY0 NDwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTog Q2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiBy Z2IoMCwgMCwgMCk7Ij4NCi0tLSBhL3NyYy9maWxlaW8uYzwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxl bWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5z LXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCisrKyBiL3Ny Yy9maWxlaW8uYzwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250 LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7 IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCkBAIC0yMTQ1LDYgKzIxNDUsMTAgQEAgREVGVU4gKCZx dW90O3N1YnN0aXR1dGUtaW4tZmlsZS1uYW1lJnF1b3Q7LCBGc3Vic3RpdHV0ZV9pbl9maWxlX25h bWUsPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5 OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6 IHJnYigwLCAwLCAwKTsiPg0KJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IG5lZWQgdG8gcXVv dGUgc29tZSAkIHRvICQkIGZpcnN0LiAmbmJzcDsqLzwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVu dFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNl cmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCiZuYnNwOyAmbmJz cDsgJm5ic3A7eG5tID0gcDs8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHls ZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXpl OiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQombmJzcDs8L2Rpdj4NCjxkaXYgY2xhc3M9 ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwg c2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQorI2lm ZGVmIERPU19OVDwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250 LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7 IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCisgJm5ic3A7ZG9zdG91bml4X2ZpbGVuYW1lICh4bm0p OzwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTog Q2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiBy Z2IoMCwgMCwgMCk7Ij4NCisjZW5kaWY8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29m IiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9u dC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQorPC9kaXY+DQo8ZGl2IGNsYXNz PSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2Es IHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KJm5i c3A7I2lmZGVmIFdJTkRPV1NOVDwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0 eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNp emU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCiZuYnNwOyAmbmJzcDtpZiAoIU5JTFAg KFZ3MzJfZG93bmNhc2VfZmlsZV9uYW1lcykpPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Q cm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7 IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KJm5ic3A7ICZuYnNwOyAm bmJzcDt7PC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFt aWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29s b3I6IHJnYigwLCAwLCAwKTsiPg0KLS08L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29m IiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9u dC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQoyLjQ4LjE8L2Rpdj4NCjxkaXYg Y2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZl dGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+ DQo8YnI+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1m YW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBj b2xvcjogcmdiKDAsIDAsIDApOyI+DQpBbmQgaW4gZmlsZS1uYW1lLWNvbmNhdCBpcyBqdXN0IHRv IGNoZWNrIHRoZSBsYXN0IHdyaXR0ZW4gY2hhciBmb3IgYW4gYXJndW1lbnQ6PC9kaXY+DQo8ZGl2 IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2 ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsi Pg0KPGJyPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQt ZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsg Y29sb3I6IHJnYigwLCAwLCAwKTsiPg0KI2lmZGVmIERPU19OVDwvZGl2Pg0KPGRpdiBjbGFzcz0i ZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBz YW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCiNkZWZp bmUgSVNfTkFUSVZFX1NFUChfY18pICgoX2NfKSA9PSAnXFwnKTwvZGl2Pg0KPGRpdiBjbGFzcz0i ZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBz YW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCiNlbHNl PC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBD YWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJn YigwLCAwLCAwKTsiPg0KI2RlZmluZSBJU19OQVRJVkVfU0VQKF9jXykgKChfY18pID09ICcvJyk8 L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENh bGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdi KDAsIDAsIDApOyI+DQojZW5kaWY8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBz dHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1z aXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQooIC4uLiApPC9kaXY+DQo8ZGl2IGNs YXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRp Y2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0K Jm5ic3A7IC8qIENvcHkgb3ZlciB0aGUgZGF0YS4gKi88L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1l bnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1z ZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQombmJzcDsgY2hh ciAqcCA9IFNTREFUQSAocmVzdWx0KTs8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29m IiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9u dC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQombmJzcDsgZm9yIChpID0gMDsg aSAmbHQ7IGVhcmdzOyBpKyspPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5 bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6 ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KJm5ic3A7ICZuYnNwOyB7PC9kaXY+DQo8 ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBI ZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAw KTsiPg0KJm5ic3A7ICZuYnNwOyAmbmJzcDsgTGlzcF9PYmplY3QgYXJnID0gZWxlbWVudHNbaV07 PC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBD YWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJn YigwLCAwLCAwKTsiPg0KJm5ic3A7ICZuYnNwOyAmbmJzcDsgbWVtY3B5IChwLCBTU0RBVEEgKGFy ZyksIFNCWVRFUyAoYXJnKSk7PC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5 bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6 ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KJm5ic3A7ICZuYnNwOyAmbmJzcDsgcCAr PSBTQllURVMgKGFyZyk7PC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9 ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTog MTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KI2lmZGVmIERPU19OVDwvZGl2Pg0KPGRpdiBj bGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0 aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4N CiZuYnNwOyAmbmJzcDsgJm5ic3A7IGlmIChJU19OQVRJVkVfU0VQICggKihwIC0gMSkgKSk8L2Rp dj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGli cmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAs IDAsIDApOyI+DQrigILigILigILigILigILigIIqKHAgLSAxKSA9IERJUkVDVE9SWV9TRVA7PC9k aXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxp YnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigw LCAwLCAwKTsiPg0KI2VuZGlmPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5 bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6 ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KJm5ic3A7ICZuYnNwOyAmbmJzcDsgLyog VGhlIGxhc3QgZWxlbWVudCBzaG91bGRuJ3QgaGF2ZSBhIHNsYXNoIGFkZGVkIGF0IHRoZSBlbmQu ICovPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5 OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6 IHJnYigwLCAwLCAwKTsiPg0KJm5ic3A7ICZuYnNwOyAmbmJzcDsgaWYgKGkgJmx0OyBlYXJncyAt IDEgJmFtcDsmYW1wOyAhSVNfRElSRUNUT1JZX1NFUCAoKihwIC0gMSkpKTwvZGl2Pg0KPGRpdiBj bGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0 aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4N CuKAguKAguKAguKAguKAguKAgipwKysgPSBESVJFQ1RPUllfU0VQOzwvZGl2Pg0KPGRpdiBjbGFz cz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNh LCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCiZu YnNwOyAmbmJzcDsgfTwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJm b250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEy cHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCiggLi4uICk8L2Rpdj4NCjxkaXYgY2xhc3M9ImVs ZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fu cy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQo8YnI+DQo8 L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENh bGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdi KDAsIDAsIDApOyI+DQpBbHRlcmFudGl2ZWwsIGRvc3RvdW5peF9maWxlbmFtZSBvbiB0aGUgcmVz dWx0IGNhbiBkbyBpdCB0b28sIGJ1dCB0aGlzIG9uZSBzZWVtczwvZGl2Pg0KPGRpdiBjbGFzcz0i ZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBz YW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCmNoZWVw ZXIuPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5 OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6 IHJnYigwLCAwLCAwKTsiPg0KPGJyPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9v ZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZv bnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KJmd0OyBTbyB0aGUgb25seSBj YXNlIHdoZXJlIGEgTGlzcCBwcm9ncmFtIHdpbGwgZmFpbCBmb3Igc3VjaCBmaWxlIG5hbWVzIGlz PC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBD YWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJn YigwLCAwLCAwKTsiPg0KJmd0OyBpZiB0aGF0IExpc3AgcHJvZ3JhbSBtYW51YWxseSBhbmFseXpl cyB0aGUgZmlsZSBuYW1lLCBpbnN0ZWFkIG9mIHVzaW5nPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVt ZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMt c2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KJmd0OyBFbWFj cyBwcmltaXRpdmVzLiAmbmJzcDtJbiB3aGljaCBjYXNlIEknZCBzYXkgdGhlIExpc3AgcHJvZ3Jh bSBoYXMgYSBidWcuPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZv bnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJw dDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KPGJyPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVt ZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMt c2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KRGVwZW5kcyBv bi4gUGVvcGxlIGFyZSBjcmVhdGl2ZSB3aGVuIHdyaXRpbmcgcHJvZ3JhbXMgYW5kIHB1dGluZyBF bWFjcyB0bzwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZh bWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNv bG9yOiByZ2IoMCwgMCwgMCk7Ij4NCmRpZmZlcmVudCB1c2UgdGhlc2UgZGF5cy4gQnV0IGl0IGlz IG5vdCBzbyBtdWNoIGFib3V0IHdoYXQgaXMgd3Jvbmcgb3IgY29ycmVjdDwvZGl2Pg0KPGRpdiBj bGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0 aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4N CnVzYWdlLCBpdCBpcyBtb3JlIGFib3V0IHRoZSBwcmluY2lwbGUgb2YgbGVhc3Qgc3VycHJpc2Ug YW5kIGhhdmluZyB1bmlmb3JtPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5 bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6 ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KYmVoYXZpb3IgZm9yIHRoZSBhcGkuPC9k aXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxp YnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigw LCAwLCAwKTsiPg0KPGJyPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5 bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6 ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KJmd0OyBCdXQgd2UgZGlncmVzcywgSSB0 aGluaz88L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1p bHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xv cjogcmdiKDAsIDAsIDApOyI+DQo8YnI+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1By b29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsg Zm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQpZb3UgY2FuIGNsb3NlIHRo ZSBidWcsIEkgdW5kZXJzdGFuZCB3aHkgZG8geW91IHNheSBpdCBpcyBub3QgYSBidWcuIFRoYW5r IHlvdTwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWls eTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9y OiByZ2IoMCwgMCwgMCk7Ij4NCmZvciB0aGUgcGF0aWVuY2UgYW5kIGhlbHBpbmcgbWUgdG8gdW5k ZXJzdGFuZCBpdC48L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9u dC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0 OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQo8YnI+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1l bnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1z ZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQpBbHNvIGlmIHlv dSBhZGQgYSBzaG9ydCBzZW50ZW5jZSB0aGF0IHNheXMgJnF1b3Q7aWYgYW4gZXhwYW5zaW9uIHJl c3VsdHMgaW4gYW48L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9u dC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0 OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQphYnNvbHV0ZSBwYXRoLCBwYXJ0IG9mIHRoZSBmaWxl IG5hbWUgYmVmb3JlIHRoZSBleHBhbnNpb24gaXMgZGlzY2FyZGVkJnF1b3Q7IGl0IHdvbnQ8L2Rp dj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGli cmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAs IDAsIDApOyI+DQpodXJ0LiBPciBzb210aGluZyBpbiB0aGF0IGxpbmUuIEl0IGlzIGEgbGl0dGxl IGJpdCBhcmNhbmUgZnVuY3Rpb24gdGhhdCBkb2VzPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50 VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2Vy aWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0Kc29tZSBtb3JlIHRo YW4gZGVzY3JpYmVkIGluIHRoZSBkb2Mgc3RyaW5nLjwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVu dFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNl cmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCjxicj4NCjwvZGl2 Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJy aSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwg MCwgMCk7Ij4NCiZndDsgJmd0OyBUaGUgb25seSB0d28gZnVuY3Rpb25zIHRoYXQgaGFzIHRoaXMg ZGlmZmVyZW50IGJlaGF2aW9yIGFyZTwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2Yi IHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250 LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCiZndDsgJmd0OyBzdWJzdGl0dXRl LWluLWZpbGUtbmFtZSBhbmQgY29uY2F0LXBhdGgtbmFtZS4gVGhlIHJlYXNvbiBpcyBwcm9iYWJs eSBiZWNhdXNlPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQt ZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsg Y29sb3I6IHJnYigwLCAwLCAwKTsiPg0KJmd0OyAmZ3Q7IHRoZXkgZG9uJ3QgZXhwYW5kIGZpbGUg bmFtZSBhcyBvdGhlcnMgZnVuY3Rpb25zIGluIGZpbGVpby5jIGRvLCBidXQgZG8gdGhlaXIgb3du PC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBD YWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJn YigwLCAwLCAwKTsiPg0KJmd0OyAmZ3Q7IHRoaW5nIHdpdGggc3RyaW5nIGNvbmNhdGVuYXRpb25z LjwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTog Q2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiBy Z2IoMCwgMCwgMCk7Ij4NCiZndDsgJmd0OzwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJv b2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBm b250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCiZndDsgJmd0OyBBcyByZWdy ZXNzaW9uOiAoZmlsZS1uYW1lLWNvbmNhdCAmcXVvdDtmb28mcXVvdDsgJnF1b3Q7YmFyXFwmcXVv dDsgJnF1b3Q7YmF6JnF1b3Q7KSA9Jmd0OyAmcXVvdDtmb28vYmFyXFxiYXomcXVvdDs8L2Rpdj4N CjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmks IEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAs IDApOyI+DQomZ3Q7PC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZv bnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJw dDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KJmd0OyBBbmQgd2h5IGlzIHRoYXQgYSBwcm9ibGVt PyAmbmJzcDsoT2YgY291cnNlLCBvbmUgc2hvdWxkIGFsbW9zdCBuZXZlciB1c2U8L2Rpdj4NCjxk aXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhl bHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDAp OyI+DQomZ3Q7IGZpbGUtbmFtZS1jb25jYXQsIGl0IGV4aXN0cyBmb3IgYSBzbWFsbCBudW1iZXIg b2YgdmVyeSBzcGVjaWFsIGNhc2VzOzwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2Yi IHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250 LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCiZndDsgZXZlcnl0aGluZyBlbHNl IHNob3VsZCB1c2UgZXhwYW5kLWZpbGUtbmFtZS4pPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50 VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2Vy aWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KPGJyPg0KPC9kaXY+ DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJp LCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAw LCAwKTsiPg0KSG93IHNob3VsZCBJIGtub3cgaXQgaXMgbWVhbnQgdG8gYmUgZm9yIGEgc3BlY2lh bCBjYXNlcz8gVGhlcmUgaXMgbm90aGluZyBhYm91dDwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVu dFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNl cmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCnNwZWNpYWwgY2Fz ZXMgaW4gZG9jcy4gOikgWW91IGhhdmUgdG8gZG9jdW1lbnQgc3R1ZmYuIEkgd3JpdGUgZXZlcnl3 aGVyZSB0aGF0PC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQt ZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsg Y29sb3I6IHJnYigwLCAwLCAwKTsiPg0KRW1hY3MgaXMgKnRoZSogYmVzdCBkb2N1bWVudGVkIExp c3AgaW4gZXhpc3RlbmNlLiZuYnNwOzwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2Yi IHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250 LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCjxicj4NCjwvZGl2Pg0KPGRpdiBj bGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0 aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4N ClRvIG5vdGUsIGV4cGFuZC1maWxlLW5hbWUgYWx3YXlzIHJldHVybnMgYWJzb2x1dGUgZmlsZSBu YW1lLiBJZiBzb21lb25lPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9 ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTog MTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0Kd291bGQgbGlrZSB0byBjb25zdHJ1Y3QgYSBy ZWxhdGl2ZSBwYXRoIHByb2dyYW1tYXRpY2FsbHkgdGhhbiBwZXJoYXBzIHRoYXQ8L2Rpdj4NCjxk aXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhl bHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDAp OyI+DQpmdW5jdGlvbiBpcyBtb3JlIGFwcm9wcmlhdGU/IEkgZG9uJ3Qga25vdyBpZiB0aGF0IGlz IGEgcmVhbGlzdGljIHVzZS1jYXNlPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIg c3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQt c2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KYnV0IEkgY2FuIGltYWdpbmUgaXQg d291bGQgYmUgdXNlZnVsIGluIHRoYXQgc2NlbmFyaW8uPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVt ZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMt c2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KPGJyPg0KPC9k aXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxp YnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigw LCAwLCAwKTsiPg0KQnV0IHJlYXNvbiB3aHkgSSBhbSBsb29raW5nIGF0IHRoZW0sIGlzIGJlY2F1 c2UgSSBoYXZlIGltcGxlbWVudGVkIHRob3NlIGluIENMLjxicj4NCklmIEkgZmluZCBhIGJ1ZyBv ZiBjb3Vyc2UgSSB3aWxsIHJlcG9ydCBpdCBhbmQgZ2l2ZSB5b3UgYSBmaXggaWYgSSBjYW4uPC9k aXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxp YnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigw LCAwLCAwKTsiPg0KPGJyPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5 bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6 ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KJmd0OyAmZ3Q7ICZndDsgSXQgaXMgYSBm ZWF0dXJlLCBidXQgSSBkb24ndCB0aGluayB3ZSB3YW50IHRvIG1lbnRpb24gaXQsIGJlY2F1c2Ug aXQnczwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWls eTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9y OiByZ2IoMCwgMCwgMCk7Ij4NCiZndDsgJmd0OyAmZ3Q7IFdpbmRvd3Mtc3BlY2lmaWMsIGFuZCBi ZWNhdXNlICZxdW90O34kSE9NRSZxdW90OyBtYWtlcyB2ZXJ5IGxpdHRsZSBzZW5zZSBvbjwvZGl2 Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJy aSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwg MCwgMCk7Ij4NCiZndDsgJmd0OyAmZ3Q7IFdpbmRvd3MuPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVt ZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMt c2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KJmd0OyAmZ3Q7 PC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBD YWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJn YigwLCAwLCAwKTsiPg0KJmd0OyAmZ3Q7IEkgYW0gbm90IHN1cmUgd2h5ICZxdW90O34kSE9NRSZx dW90OyBtYWtlcyBzZW5zZSBhbnl3aGVyZT8gRG8geW91IHBlcmhhcHMgbWVhbiAmcXVvdDt+JFVT RVImcXVvdDs/PC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQt ZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsg Y29sb3I6IHJnYigwLCAwLCAwKTsiPg0KJmd0OyBObywgSSBtZWFudCB+JEhPTUUuICZuYnNwO1Np bmNlIH4gaXMgdGhlIHNhbWUgYXMgJEhPTUUsIHdoeSBkb3VibGUgaXQ/PC9kaXY+DQo8ZGl2IGNs YXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRp Y2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0K PGJyPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFt aWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29s b3I6IHJnYigwLCAwLCAwKTsiPg0KWWVzLCBvZiBjb3Vyc2UsIHRoYXQgaXMgd2hhdCBJIG1lYW4g YWxzbzogd2h5IHdvdWxkIHNvbWVvbmUgZG91YmxlIGl0ID0gbWFrZXM8L2Rpdj4NCjxkaXYgY2xh c3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGlj YSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQp2 ZXJ5IGxpdHRsZSBzZW5zZSBhbnl3aGVyZSwgbm90IGp1c3Qgb24gV2luZG93cy48L2Rpdj4NCjwv Ym9keT4NCjwvaHRtbD4NCg== --_000_DU2PR02MB101097C1C04A6EF39F4A4D02E96F42DU2PR02MB10109eu_-- From debbugs-submit-bounces@debbugs.gnu.org Tue Feb 04 09:12:04 2025 Received: (at 76023-done) by debbugs.gnu.org; 4 Feb 2025 14:12:04 +0000 Received: from localhost ([127.0.0.1]:43257 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tfJel-0004L8-JS for submit@debbugs.gnu.org; Tue, 04 Feb 2025 09:12:04 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:51410) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1tfJej-0004Ka-33 for 76023-done@debbugs.gnu.org; Tue, 04 Feb 2025 09:12:01 -0500 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 1tfJed-0002pz-Ew; Tue, 04 Feb 2025 09:11:55 -0500 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=TAbEmoCkXlc0JxcM+QL4FPlhfbaFMPfY4Cvm3eCdhIE=; b=W/DTCAUL4tUg msoCB9j+Rku3JZoGPLZ6dUl6ctxhzNGAhfwg2I+q8DMsI4cta/mTeZsNQmLhZzL+L5GJwYF00GilJ GhTFLBoeGEH6F1X3hgKFuMslnn5DoPi8FBL9ovjF5WbkRz5icmLbanD/Qsd/kCwi23Gz5BIp+tvww dy+ijFfcu1YP5vihBt7TtNvf7ZvA8NA300VJ1/ALvG52Zl5Uu7cLygw9hx7mGzE27VFze6DQ0Szog S8pOteE/2rRJaxYk0/wYH77UCvoHv5OI0WLBO1AKhdFOvyQ8lDFZ4ieVKyp/CczRzDUy9onAMbsse 9A7AKN7SJGyeAmtTudpzjw==; Date: Tue, 04 Feb 2025 16:11:45 +0200 Message-Id: <86y0ylajfi.fsf@gnu.org> From: Eli Zaretskii To: arthur miller In-Reply-To: (message from arthur miller on Tue, 4 Feb 2025 06:25:21 +0000) Subject: Re: bug#76023: 31.0.50; Observed behavior for substitute-in-file-name different from the doc string References: <861pwfcisn.fsf@gnu.org> <86jza6c3j7.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 76023-done Cc: 76023-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: arthur miller > CC: "76023@debbugs.gnu.org" <76023@debbugs.gnu.org> > Date: Tue, 4 Feb 2025 06:25:21 +0000 > > > primitives that accept file names support both flavors of slashes. > > Example: > > > > (file-name-nondirectory "d:\\foo/bar\\baz") > > => "baz" > > I know, I have implemented most of them in CL by now, and discovered they > work so. They also all emit out Emacs canonical namestrings; it is only those > two that don't (if I haven't missed some). It is easy and cheap to make them to > emit path in the same form as the rest. I first thought not to hack them, but I > did since I was anyway looking at the code. In the case of substitute-in-file-name, > it is just to call dostounix_filename on the result: First, dostounix_filename can only be called safely after the file name was converted to UTF-8, so it is not safe with unibyte (undecoded) file names, something that happens during a short period of startup. So inserting it requires some auditing. More importantly, I would hesitate making such changes in such old and stable functions. > And in file-name-concat is just to check the last written char for an argument: file-name-concat is specifically intended to work unlike expand-file-name, and just concatenate the parts and nothing else. So it only caters to backslashes vs forward slashes where it needs to determine whether or not to add a slash, but otherwise it leaves it to the caller to format the file-name parts as they see fit. So I think it would be a mistake to add such transformations to that function. > > So the only case where a Lisp program will fail for such file names is > > if that Lisp program manually analyzes the file name, instead of using > > Emacs primitives. In which case I'd say the Lisp program has a bug. > > Depends on. People are creative when writing programs and puting Emacs to > different use these days. But it is not so much about what is wrong or correct > usage, it is more about the principle of least surprise and having uniform > behavior for the api. IME, people get surprised about quite a few aspects of file names, their handling on different systems, and in particular on MS-Windows. So my warm advice to everyone is not to invent their own code that handles file names, but rely on Emacs primitives instead. > > But we digress, I think? > > You can close the bug, I understand why do you say it is not a bug. Thank you > for the patience and helping me to understand it. Closing. > Also if you add a short sentence that says "if an expansion results in an > absolute path, part of the file name before the expansion is discarded" it wont > hurt. Or somthing in that line. It is a little bit arcane function that does > some more than described in the doc string. That's the part which talks about "//", it just is worded in a way that has only Posix filesystems in mind. I guess it won't do any harm to make that more general; done. > > And why is that a problem? (Of course, one should almost never use > > file-name-concat, it exists for a small number of very special cases; > > everything else should use expand-file-name.) > > How should I know it is meant to be for a special cases? You are not supposed to know about that function at all ;-) > There is nothing about > special cases in docs. :) You have to document stuff. I write everywhere that > Emacs is *the* best documented Lisp in existence. Emacs has the best documentation where documentation is contributed. > To note, expand-file-name always returns absolute file name. If someone > would like to construct a relative path programmatically than perhaps that > function is more apropriate? They should use expand-file-name followed by file-relative-name. > I don't know if that is a realistic use-case > but I can imagine it would be useful in that scenario. It is indeed a real-life scenario, and it is covered in the manual. From debbugs-submit-bounces@debbugs.gnu.org Wed Feb 05 17:52:03 2025 Received: (at 76023-done) by debbugs.gnu.org; 5 Feb 2025 22:52:03 +0000 Received: from localhost ([127.0.0.1]:53134 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tfoFW-0000mf-Sw for submit@debbugs.gnu.org; Wed, 05 Feb 2025 17:52:03 -0500 Received: from mail-ed1-x534.google.com ([2a00:1450:4864:20::534]:50519) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1tfoFT-0000lt-5t for 76023-done@debbugs.gnu.org; Wed, 05 Feb 2025 17:52:00 -0500 Received: by mail-ed1-x534.google.com with SMTP id 4fb4d7f45d1cf-5dcd8d6f130so604301a12.1 for <76023-done@debbugs.gnu.org>; Wed, 05 Feb 2025 14:51:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738795913; x=1739400713; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:from:to:cc:subject:date:message-id:reply-to; bh=lrGI/H62qNgPP1zlLLPdlyENRFu2YU66W4i2AHH4aK4=; b=bTOGYvEJ5Fv5QheaFHesh6qhf4zva8j7KyPItRBdQ5yR/2nyP5NRhxIpCEToro8A+Y 6F0ZIFyBnOndcKPAR15WbZGC0NDZlTU6dhXJi6yLNrBoOeRcf+Lx2MiMLBdq4Pkd+XWF DptNCr8V27OOTobx0Qm6t0JTnTVcTaBLubhqMiGTMWcN5mTs8EoGkHD3Mza7bIvcrVXO bBVaWMoUT1ADFrGhbCRKhhCkhN8J0F0rULg+CvoDlnZwvZP9qBS+8QOiHgEbhb6Kw/W0 Mn3KjlFRi3TVu0YzV+jmxYs7OHS450zZ9TeuYNs47kYAmkRZdEcpnAdO+ixK1tVwUAHE uwWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738795913; x=1739400713; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=lrGI/H62qNgPP1zlLLPdlyENRFu2YU66W4i2AHH4aK4=; b=QI8IoanUk1Qbg7zn9bvfHbURXVT2wW9IJd4DlP1Xbd8WuMWFDEyyqHx2xiqlDT7Jot CT0B2kraT8GuAamH0j8mc+35qoamcNKe1s05zvz3meQovrjz3uOf726kQPwYBEYmyHoC O+LrzgRyq7Yo8Fno0joyP24iWFH5tpiVOpvHq9GECnXzAQCoLI9Vz1OoLjxrFuYJxyj/ jauzPbIXB4EmA5lIwP8+CJl1/L6wa8ukmntflN+U2Fi0rfk5NOuTdF6Rihukug06sSCO YC/qsSQwDZFjxt2Y+AUdtmQuTtyS/kQRK5aYsaGKOUlbUf7P0JdUX/NFZsVVdwAbjsYm fLqA== X-Gm-Message-State: AOJu0Yz9nF6ksgAAqNDN3JMkZlLvzy6Bi3PdJtiHx+rQAjcZDpOnzQAa jT+iOiSxoAzgw77klrUPQWvjGric0ydVrj2cjqywMW+kSW9sOk42tnWUgpex0KUHNe9oJ+o4o7C sWXSyEWVnYasKcClo7dpge5CbkRk= X-Gm-Gg: ASbGnct0jVBDTNDuKxX5eXSgobhXVjGLu5V+4NaWA+CO8Z9rGOXaazwI40XjMRByClw WLebD9uDpLEt04JB/3Q3XkfxeeOnyakLcrm8uaBLfDtp+Nsf4Rf5wEPhbex28oZVNiWyMCKxBtw == X-Google-Smtp-Source: AGHT+IExcb84+trPrcbc7nQi1ccFLwHy1muikl/R0CFrRSaJAmjnjrs77DUCK4hAi9W5CUttY5OzpLGrzpJAIYw3Hvw= X-Received: by 2002:a05:6402:520d:b0:5dc:74f1:8a32 with SMTP id 4fb4d7f45d1cf-5dcdb77f1ecmr5438081a12.28.1738795912792; Wed, 05 Feb 2025 14:51:52 -0800 (PST) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Wed, 5 Feb 2025 14:51:52 -0800 From: Stefan Kangas In-Reply-To: <86y0ylajfi.fsf@gnu.org> References: <861pwfcisn.fsf@gnu.org> <86jza6c3j7.fsf@gnu.org> <86y0ylajfi.fsf@gnu.org> MIME-Version: 1.0 Date: Wed, 5 Feb 2025 14:51:52 -0800 X-Gm-Features: AWEUYZnphdrNkdwAKCkwftetDPWhphWTHm0gTfjRLqUdNa0UuW55uYYU4OFqR7Q Message-ID: Subject: Re: bug#76023: 31.0.50; Observed behavior for substitute-in-file-name different from the doc string To: Eli Zaretskii , arthur miller Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 76023-done Cc: 76023-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: -1.0 (-) Eli Zaretskii writes: >> > And why is that a problem? (Of course, one should almost never use >> > file-name-concat, it exists for a small number of very special cases; >> > everything else should use expand-file-name.) >> >> How should I know it is meant to be for a special cases? > > You are not supposed to know about that function at all ;-) It's in the Elisp manual. Would it make sense to add a warning about its use there? From debbugs-submit-bounces@debbugs.gnu.org Thu Feb 06 03:43:17 2025 Received: (at 76023-done) by debbugs.gnu.org; 6 Feb 2025 08:43:17 +0000 Received: from localhost ([127.0.0.1]:54244 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tfxTh-0004J9-Bh for submit@debbugs.gnu.org; Thu, 06 Feb 2025 03:43:17 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:54110) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1tfxTe-0004In-9v for 76023-done@debbugs.gnu.org; Thu, 06 Feb 2025 03:43:15 -0500 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 1tfxTY-0000U9-R2; Thu, 06 Feb 2025 03:43:08 -0500 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=0U3O1xBxFTwfxQZmtPyjO2TO2jm4aBWKkPwPKd7b+u8=; b=nuHN9ulI6Z5a yApAmf4BF+4ifSxJP0WVdLBBHo4rHnokDCb6Rj6vR6cDXDcAUGHOWdc1/KhOjYHdFI/9pf442tEcY PMAddfq5VYMU1TzAu8R5FkVeXl5cYa2hnyB8kJeEP2aF1O3Vk6nHHZvnE2HzY9RIeBYKUAfV2ao8b iziYu65T+4+XxY41Oud1eNp7TTPNlk8x8M/EwiofKrezeCORrl9+vdkmb8RcxyW+btBx9jy0JmfTK 4VdnEOsi5J5j3uVePHEQda05fYl3FTnzs4Qjl1e13ubUmdrQ2vVF2CKkA3PX5gQQ0BadlJWmBBBUY QP3hHGM7h6qAxbBu5OypxA==; Date: Thu, 06 Feb 2025 10:43:05 +0200 Message-Id: <86jza379ba.fsf@gnu.org> From: Eli Zaretskii To: Stefan Kangas In-Reply-To: (message from Stefan Kangas on Wed, 5 Feb 2025 14:51:52 -0800) Subject: Re: bug#76023: 31.0.50; Observed behavior for substitute-in-file-name different from the doc string References: <861pwfcisn.fsf@gnu.org> <86jza6c3j7.fsf@gnu.org> <86y0ylajfi.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 76023-done Cc: 76023-done@debbugs.gnu.org, arthur.miller@live.com 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: Stefan Kangas > Date: Wed, 5 Feb 2025 14:51:52 -0800 > Cc: 76023-done@debbugs.gnu.org > > Eli Zaretskii writes: > > > You are not supposed to know about that function at all ;-) > > It's in the Elisp manual. Would it make sense to add a warning about > its use there? Done. From unknown Sat Aug 16 16:11:32 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Thu, 06 Mar 2025 12:24:09 +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