py-3-13: stabilize the docstring output across all supported Python versions
authorRaphaël Gomès <rgomes@octobus.net>
Thu, 24 Oct 2024 15:23:52 +0200
changeset 52099 31076a2301f1
parent 52097 ff1872e8c0bf
child 52100 19ae7730636a
py-3-13: stabilize the docstring output across all supported Python versions Python 3.13 now trims indents from docstrings at compilation time (to save space in .pyc), so all of our helptext is affected. The indentation has never served a user-facing purpose and was more here because nobody cared enough to remove it: we gain some screen space this way. Rather than undo the transformation (which isn't really possible since the transform also deletes leading/trailing whitespace), we align the behavior of older Python versions with that of 3.13. Unfortunately, this means breaking some of the translations. I've only touched the ones that need to work for some tooling tests to pass, but I do not have the time to fix the rest of them across all languages, since they cannot be done in an automated way. i18n updates have been basically abandonned for a good while now, hopefully someone cares enough to bring them back.
hgext/show.py
i18n/de.po
i18n/ja.po
mercurial/helptext/hgweb.txt
mercurial/pycompat.py
tests/test-alias.t
tests/test-bad-extension.t
tests/test-convert.t
tests/test-encoding-textwrap.t
tests/test-extdiff.t
tests/test-extension.t
tests/test-fix.t
tests/test-help.t
tests/test-mq-qrefresh-interactive.t
tests/test-qrecord.t
tests/test-record.t
tests/test-shelve.t
tests/test-show.t
tests/test-uncommit.t
--- a/hgext/show.py	Tue Oct 15 22:30:10 2024 -0400
+++ b/hgext/show.py	Thu Oct 24 15:23:52 2024 +0200
@@ -514,7 +514,7 @@
     entries = []
     for key in sorted(showview._table.keys()):
         entries.append(
-            r'    %s   %s'
+            r'%s   %s'
             % (
                 pycompat.sysstr(key.ljust(longest)),
                 showview._table[key]._origdoc,
@@ -522,7 +522,7 @@
         )
 
     cmdtable[b'show'][0].__doc__ = pycompat.sysstr(b'%s\n\n%s\n    ') % (
-        cmdtable[b'show'][0].__doc__.rstrip(),
+        pycompat.cleandoc(cmdtable[b'show'][0].__doc__),
         pycompat.sysstr(b'\n\n').join(entries),
     )
 
--- a/i18n/de.po	Tue Oct 15 22:30:10 2024 -0400
+++ b/i18n/de.po	Thu Oct 24 15:23:52 2024 +0200
@@ -10044,11 +10044,11 @@
 msgstr "    Merkt Dateien zur Versionskontrolle im Projektarchiv vor."
 
 msgid ""
-"    The files will be added to the repository at the next commit. To\n"
-"    undo an add before that, see :hg:`forget`."
-msgstr ""
-"    Die Dateien werden dem Projektarchiv beim nächsten Übernehmen (commit)\n"
-"    hinzugefügt. Um dies vorher rückgängig zu machen, siehe:hg:`forget`."
+"The files will be added to the repository at the next commit. To\n"
+"undo an add before that, see :hg:`forget`."
+msgstr ""
+"Die Dateien werden dem Projektarchiv beim nächsten Übernehmen (commit)\n"
+"hinzugefügt. Um dies vorher rückgängig zu machen, siehe:hg:`forget`."
 
 msgid "    If no names are given, add all files to the repository."
 msgstr ""
@@ -13297,37 +13297,37 @@
 msgid "pull changes from the specified source"
 msgstr "Ruft Änderungen von der angegebenen Quelle ab"
 
-msgid "    Pull changes from a remote repository to a local one."
-msgstr "    Überträgt Änderungen aus einem entfernten Archiv in das lokale."
-
-msgid ""
-"    This finds all changes from the repository at the specified path\n"
-"    or URL and adds them to a local repository (the current one unless\n"
-"    -R is specified). By default, this does not update the copy of the\n"
-"    project in the working directory."
-msgstr ""
-"    Dabei werden alle Änderungen vom Archiv am angegebenen Pfad oder\n"
-"    URL gesucht und dem lokalen Archiv hinzugefügt (das aktuelle, oder das\n"
-"    mit -R gegebene). Standardmäßig wird die Kopie des Projektes im\n"
-"    Arbeitsverzeichnis nicht aktualisiert."
-
-msgid ""
-"    Use :hg:`incoming` if you want to see what would have been added\n"
-"    by a pull at the time you issued this command. If you then decide\n"
-"    to add those changes to the repository, you should use :hg:`pull\n"
-"    -r X` where ``X`` is the last changeset listed by :hg:`incoming`."
-msgstr ""
-"    Um zu sehen, was beim nächsten 'pull' geholt würde, ohne dem Archiv\n"
-"    tatsächlich Änderungen hinzuzufügen, nutze :hg:`incoming`. Wenn diese\n"
-"    dann hinzugefügt werden sollen, kann mit :hg:`pull -r X` als X der\n"
-"    letzte von incoming gezeigte Änderungssatz angegeben werden."
-
-msgid ""
-"    Returns 0 on success, 1 if an update had unresolved files.\n"
-"    "
-msgstr ""
-"    Gibt 0 bei Erfolg zurück, 1 bei Konfliken während der Aktualisierung.\n"
-"    "
+msgid "Pull changes from a remote repository to a local one."
+msgstr "Überträgt Änderungen aus einem entfernten Archiv in das lokale."
+
+msgid ""
+"This finds all changes from the repository at the specified path\n"
+"or URL and adds them to a local repository (the current one unless\n"
+"-R is specified). By default, this does not update the copy of the\n"
+"project in the working directory."
+msgstr ""
+"Dabei werden alle Änderungen vom Archiv am angegebenen Pfad oder\n"
+"URL gesucht und dem lokalen Archiv hinzugefügt (das aktuelle, oder das\n"
+"mit -R gegebene). Standardmäßig wird die Kopie des Projektes im\n"
+"Arbeitsverzeichnis nicht aktualisiert."
+
+msgid ""
+"Use :hg:`incoming` if you want to see what would have been added\n"
+"by a pull at the time you issued this command. If you then decide\n"
+"to add those changes to the repository, you should use :hg:`pull\n"
+"-r X` where ``X`` is the last changeset listed by :hg:`incoming`."
+msgstr ""
+"Um zu sehen, was beim nächsten 'pull' geholt würde, ohne dem Archiv\n"
+"tatsächlich Änderungen hinzuzufügen, nutze :hg:`incoming`. Wenn diese\n"
+"dann hinzugefügt werden sollen, kann mit :hg:`pull -r X` als X der\n"
+"letzte von incoming gezeigte Änderungssatz angegeben werden."
+
+msgid ""
+"Returns 0 on success, 1 if an update had unresolved files.\n"
+""
+msgstr ""
+"Gibt 0 bei Erfolg zurück, 1 bei Konfliken während der Aktualisierung.\n"
+""
 
 #, python-format
 msgid "remote bookmark %s not found!"
--- a/i18n/ja.po	Tue Oct 15 22:30:10 2024 -0400
+++ b/i18n/ja.po	Thu Oct 24 15:23:52 2024 +0200
@@ -8388,16 +8388,16 @@
 "    入力したメッセージは ``.hg/last-message.txt`` に保存されます。"
 
 msgid ""
-"    hg add/remove/copy/rename work as usual, though you might want to\n"
-"    use git-style patches (-g/--git or [diff] git=1) to track copies\n"
-"    and renames. See the diffs help topic for more information on the\n"
-"    git diff format."
-msgstr ""
-"    複製/改名に関する履歴保存のために git 差分形式を使用(-g/--git 指定や\n"
-"    設定ファイルでの [diff] git=1 記述)するのであれば、\n"
-"    add/remove/copy/rename といった hg のコマンドによる履歴記録も、\n"
-"    通常と変わりなく機能します。 git 差分形式の詳細に関しては、\n"
-"    'help diffs' を参照してください。"
+"hg add/remove/copy/rename work as usual, though you might want to\n"
+"use git-style patches (-g/--git or [diff] git=1) to track copies\n"
+"and renames. See the diffs help topic for more information on the\n"
+"git diff format."
+msgstr ""
+"複製/改名に関する履歴保存のために git 差分形式を使用(-g/--git 指定や\n"
+"設定ファイルでの [diff] git=1 記述)するのであれば、\n"
+"add/remove/copy/rename といった hg のコマンドによる履歴記録も、\n"
+"通常と変わりなく機能します。 git 差分形式の詳細に関しては、\n"
+"'help diffs' を参照してください。"
 
 msgid "hg qdiff [OPTION]... [FILE]..."
 msgstr "hg qdiff [OPTION]... [FILE]..."
--- a/mercurial/helptext/hgweb.txt	Tue Oct 15 22:30:10 2024 -0400
+++ b/mercurial/helptext/hgweb.txt	Thu Oct 24 15:23:52 2024 +0200
@@ -83,4 +83,4 @@
 
 The following web commands and their URLs are available:
 
-  .. webcommandsmarker
+.. webcommandsmarker
--- a/mercurial/pycompat.py	Tue Oct 15 22:30:10 2024 -0400
+++ b/mercurial/pycompat.py	Thu Oct 24 15:23:52 2024 +0200
@@ -349,12 +349,46 @@
     raise exc.with_traceback(tb)
 
 
+# Copied over from the 3.13 Python stdlib `inspect.cleandoc`, with a couple
+# of removals explained inline.
+# It differs slightly from the 3.8+ version, so it's better to use the same
+# version to remove any potential for variation.
+def cleandoc(doc):
+    """Clean up indentation from docstrings.
+
+    Any whitespace that can be uniformly removed from the second line
+    onwards is removed."""
+    lines = doc.expandtabs().split('\n')
+
+    # Find minimum indentation of any non-blank lines after first line.
+    margin = sys.maxsize
+    for line in lines[1:]:
+        content = len(line.lstrip(' '))
+        if content:
+            indent = len(line) - content
+            margin = min(margin, indent)
+    # Remove indentation.
+    if lines:
+        lines[0] = lines[0].lstrip(' ')
+    if margin < sys.maxsize:
+        for i in range(1, len(lines)):
+            lines[i] = lines[i][margin:]
+    # Here the upstream *Python* version does newline trimming, but it looks
+    # like the compiler (written in C) does not, so go with what the compiler
+    # does.
+    return '\n'.join(lines)
+
+
 def getdoc(obj: object) -> Optional[bytes]:
     """Get docstring as bytes; may be None so gettext() won't confuse it
     with _('')"""
     doc = builtins.getattr(obj, '__doc__', None)
     if doc is None:
         return doc
+    if sys.version_info < (3, 13):
+        # Python 3.13+ "cleans up" the docstring at compile time, let's
+        # normalize this behavior for previous versions
+        doc = cleandoc(doc)
     return sysbytes(doc)
 
 
--- a/tests/test-alias.t	Tue Oct 15 22:30:10 2024 -0400
+++ b/tests/test-alias.t	Thu Oct 24 15:23:52 2024 +0200
@@ -139,38 +139,37 @@
   
   show changed files in the working directory
   
-      Show status of files in the repository. If names are given, only files
-      that match are shown. Files that are clean or ignored or the source of a
-      copy/move operation, are not listed unless -c/--clean, -i/--ignored,
-      -C/--copies or -A/--all are given. Unless options described with "show
-      only ..." are given, the options -mardu are used.
+  Show status of files in the repository. If names are given, only files that
+  match are shown. Files that are clean or ignored or the source of a copy/move
+  operation, are not listed unless -c/--clean, -i/--ignored, -C/--copies or
+  -A/--all are given. Unless options described with "show only ..." are given,
+  the options -mardu are used.
   
-      Option -q/--quiet hides untracked (unknown and ignored) files unless
-      explicitly requested with -u/--unknown or -i/--ignored.
+  Option -q/--quiet hides untracked (unknown and ignored) files unless
+  explicitly requested with -u/--unknown or -i/--ignored.
   
-      Note:
-         'hg status' may appear to disagree with diff if permissions have
-         changed or a merge has occurred. The standard diff format does not
-         report permission changes and diff only reports changes relative to one
-         merge parent.
+  Note:
+     'hg status' may appear to disagree with diff if permissions have changed or
+     a merge has occurred. The standard diff format does not report permission
+     changes and diff only reports changes relative to one merge parent.
   
-      If one revision is given, it is used as the base revision. If two
-      revisions are given, the differences between them are shown. The --change
-      option can also be used as a shortcut to list the changed files of a
-      revision from its first parent.
+  If one revision is given, it is used as the base revision. If two revisions
+  are given, the differences between them are shown. The --change option can
+  also be used as a shortcut to list the changed files of a revision from its
+  first parent.
   
-      The codes used to show the status of files are:
+  The codes used to show the status of files are:
   
-        M = modified
-        A = added
-        R = removed
-        C = clean
-        ! = missing (deleted by non-hg command, but still tracked)
-        ? = not tracked
-        I = ignored
-          = origin of the previous file (with --copies)
+    M = modified
+    A = added
+    R = removed
+    C = clean
+    ! = missing (deleted by non-hg command, but still tracked)
+    ? = not tracked
+    I = ignored
+      = origin of the previous file (with --copies)
   
-      Returns 0 on success.
+  Returns 0 on success.
   
   defined by: * (glob)
   */* (glob) (?)
--- a/tests/test-bad-extension.t	Tue Oct 15 22:30:10 2024 -0400
+++ b/tests/test-bad-extension.t	Thu Oct 24 15:23:52 2024 +0200
@@ -142,6 +142,7 @@
   YYYY/MM/DD HH:MM:SS (PID)> > extension baddocext take a total of * to load (glob)
   YYYY/MM/DD HH:MM:SS (PID)> > extension gpg take a total of * to load (glob)
   YYYY/MM/DD HH:MM:SS (PID)> extension loading complete
+  Given a topic, extension, or command name, print help for that topic.
 #endif
 
 confirm that there's no crash when an extension's documentation is bad
--- a/tests/test-convert.t	Tue Oct 15 22:30:10 2024 -0400
+++ b/tests/test-convert.t	Thu Oct 24 15:23:52 2024 +0200
@@ -9,34 +9,34 @@
   
   convert a foreign SCM repository to a Mercurial one.
   
-      Accepted source formats [identifiers]:
+  Accepted source formats [identifiers]:
   
-      - Mercurial [hg]
-      - CVS [cvs]
-      - Darcs [darcs]
-      - git [git]
-      - Subversion [svn]
-      - Monotone [mtn]
-      - GNU Arch [gnuarch]
-      - Bazaar [bzr]
-      - Perforce [p4]
+  - Mercurial [hg]
+  - CVS [cvs]
+  - Darcs [darcs]
+  - git [git]
+  - Subversion [svn]
+  - Monotone [mtn]
+  - GNU Arch [gnuarch]
+  - Bazaar [bzr]
+  - Perforce [p4]
   
-      Accepted destination formats [identifiers]:
+  Accepted destination formats [identifiers]:
   
-      - Mercurial [hg]
-      - Subversion [svn] (history on branches is not preserved)
+  - Mercurial [hg]
+  - Subversion [svn] (history on branches is not preserved)
   
-      If no revision is given, all revisions will be converted. Otherwise,
-      convert will only import up to the named revision (given in a format
-      understood by the source).
+  If no revision is given, all revisions will be converted. Otherwise, convert
+  will only import up to the named revision (given in a format understood by the
+  source).
   
-      If no destination directory name is specified, it defaults to the basename
-      of the source with "-hg" appended. If the destination repository doesn't
-      exist, it will be created.
+  If no destination directory name is specified, it defaults to the basename of
+  the source with "-hg" appended. If the destination repository doesn't exist,
+  it will be created.
   
-      By default, all sources except Mercurial will use --branchsort. Mercurial
-      uses --sourcesort to preserve original revision numbers order. Sort modes
-      have the following effects:
+  By default, all sources except Mercurial will use --branchsort. Mercurial uses
+  --sourcesort to preserve original revision numbers order. Sort modes have the
+  following effects:
   
       --branchsort  convert from parent to child revision when possible, which
                     means branches are usually converted one after the other.
@@ -49,361 +49,346 @@
       --closesort   try to move closed revisions as close as possible to parent
                     branches, only supported by Mercurial sources.
   
-      If "REVMAP" isn't given, it will be put in a default location
-      ("<dest>/.hg/shamap" by default). The "REVMAP" is a simple text file that
-      maps each source commit ID to the destination ID for that revision, like
-      so:
+  If "REVMAP" isn't given, it will be put in a default location
+  ("<dest>/.hg/shamap" by default). The "REVMAP" is a simple text file that maps
+  each source commit ID to the destination ID for that revision, like so:
   
-        <source ID> <destination ID>
+    <source ID> <destination ID>
   
-      If the file doesn't exist, it's automatically created. It's updated on
-      each commit copied, so 'hg convert' can be interrupted and can be run
-      repeatedly to copy new commits.
+  If the file doesn't exist, it's automatically created. It's updated on each
+  commit copied, so 'hg convert' can be interrupted and can be run repeatedly to
+  copy new commits.
   
-      The authormap is a simple text file that maps each source commit author to
-      a destination commit author. It is handy for source SCMs that use unix
-      logins to identify authors (e.g.: CVS). One line per author mapping and
-      the line format is:
+  The authormap is a simple text file that maps each source commit author to a
+  destination commit author. It is handy for source SCMs that use unix logins to
+  identify authors (e.g.: CVS). One line per author mapping and the line format
+  is:
   
-        source author = destination author
+    source author = destination author
   
-      Empty lines and lines starting with a "#" are ignored.
+  Empty lines and lines starting with a "#" are ignored.
   
-      The filemap is a file that allows filtering and remapping of files and
-      directories. Each line can contain one of the following directives:
+  The filemap is a file that allows filtering and remapping of files and
+  directories. Each line can contain one of the following directives:
   
-        include path/to/file-or-dir
+    include path/to/file-or-dir
   
-        exclude path/to/file-or-dir
+    exclude path/to/file-or-dir
   
-        rename path/to/source path/to/destination
+    rename path/to/source path/to/destination
   
-      Comment lines start with "#". A specified path matches if it equals the
-      full relative name of a file or one of its parent directories. The
-      "include" or "exclude" directive with the longest matching path applies,
-      so line order does not matter.
+  Comment lines start with "#". A specified path matches if it equals the full
+  relative name of a file or one of its parent directories. The "include" or
+  "exclude" directive with the longest matching path applies, so line order does
+  not matter.
   
-      The "include" directive causes a file, or all files under a directory, to
-      be included in the destination repository. The default if there are no
-      "include" statements is to include everything. If there are any "include"
-      statements, nothing else is included. The "exclude" directive causes files
-      or directories to be omitted. The "rename" directive renames a file or
-      directory if it is converted. To rename from a subdirectory into the root
-      of the repository, use "." as the path to rename to.
+  The "include" directive causes a file, or all files under a directory, to be
+  included in the destination repository. The default if there are no "include"
+  statements is to include everything. If there are any "include" statements,
+  nothing else is included. The "exclude" directive causes files or directories
+  to be omitted. The "rename" directive renames a file or directory if it is
+  converted. To rename from a subdirectory into the root of the repository, use
+  "." as the path to rename to.
   
-      "--full" will make sure the converted changesets contain exactly the right
-      files with the right content. It will make a full conversion of all files,
-      not just the ones that have changed. Files that already are correct will
-      not be changed. This can be used to apply filemap changes when converting
-      incrementally. This is currently only supported for Mercurial and
-      Subversion.
+  "--full" will make sure the converted changesets contain exactly the right
+  files with the right content. It will make a full conversion of all files, not
+  just the ones that have changed. Files that already are correct will not be
+  changed. This can be used to apply filemap changes when converting
+  incrementally. This is currently only supported for Mercurial and Subversion.
   
-      The splicemap is a file that allows insertion of synthetic history,
-      letting you specify the parents of a revision. This is useful if you want
-      to e.g. give a Subversion merge two parents, or graft two disconnected
-      series of history together. Each entry contains a key, followed by a
-      space, followed by one or two comma-separated values:
+  The splicemap is a file that allows insertion of synthetic history, letting
+  you specify the parents of a revision. This is useful if you want to e.g. give
+  a Subversion merge two parents, or graft two disconnected series of history
+  together. Each entry contains a key, followed by a space, followed by one or
+  two comma-separated values:
   
-        key parent1, parent2
+    key parent1, parent2
   
-      The key is the revision ID in the source revision control system whose
-      parents should be modified (same format as a key in .hg/shamap). The
-      values are the revision IDs (in either the source or destination revision
-      control system) that should be used as the new parents for that node. For
-      example, if you have merged "release-1.0" into "trunk", then you should
-      specify the revision on "trunk" as the first parent and the one on the
-      "release-1.0" branch as the second.
+  The key is the revision ID in the source revision control system whose parents
+  should be modified (same format as a key in .hg/shamap). The values are the
+  revision IDs (in either the source or destination revision control system)
+  that should be used as the new parents for that node. For example, if you have
+  merged "release-1.0" into "trunk", then you should specify the revision on
+  "trunk" as the first parent and the one on the "release-1.0" branch as the
+  second.
   
-      The branchmap is a file that allows you to rename a branch when it is
-      being brought in from whatever external repository. When used in
-      conjunction with a splicemap, it allows for a powerful combination to help
-      fix even the most badly mismanaged repositories and turn them into nicely
-      structured Mercurial repositories. The branchmap contains lines of the
-      form:
+  The branchmap is a file that allows you to rename a branch when it is being
+  brought in from whatever external repository. When used in conjunction with a
+  splicemap, it allows for a powerful combination to help fix even the most
+  badly mismanaged repositories and turn them into nicely structured Mercurial
+  repositories. The branchmap contains lines of the form:
   
-        original_branch_name new_branch_name
+    original_branch_name new_branch_name
   
-      where "original_branch_name" is the name of the branch in the source
-      repository, and "new_branch_name" is the name of the branch is the
-      destination repository. No whitespace is allowed in the new branch name.
-      This can be used to (for instance) move code in one repository from
-      "default" to a named branch.
+  where "original_branch_name" is the name of the branch in the source
+  repository, and "new_branch_name" is the name of the branch is the destination
+  repository. No whitespace is allowed in the new branch name. This can be used
+  to (for instance) move code in one repository from "default" to a named
+  branch.
   
-      Mercurial Source
-      ################
+  Mercurial Source
+  ################
   
-      The Mercurial source recognizes the following configuration options, which
-      you can set on the command line with "--config":
+  The Mercurial source recognizes the following configuration options, which you
+  can set on the command line with "--config":
   
-      convert.hg.ignoreerrors
-                    ignore integrity errors when reading. Use it to fix
-                    Mercurial repositories with missing revlogs, by converting
-                    from and to Mercurial. Default is False.
-      convert.hg.saverev
-                    store original revision ID in changeset (forces target IDs
-                    to change). It takes a boolean argument and defaults to
-                    False.
-      convert.hg.startrev
-                    specify the initial Mercurial revision. The default is 0.
-      convert.hg.revs
-                    revset specifying the source revisions to convert.
+  convert.hg.ignoreerrors
+                ignore integrity errors when reading. Use it to fix Mercurial
+                repositories with missing revlogs, by converting from and to
+                Mercurial. Default is False.
+  convert.hg.saverev
+                store original revision ID in changeset (forces target IDs to
+                change). It takes a boolean argument and defaults to False.
+  convert.hg.startrev
+                specify the initial Mercurial revision. The default is 0.
+  convert.hg.revs
+                revset specifying the source revisions to convert.
   
-      Bazaar Source
-      #############
+  Bazaar Source
+  #############
   
-      The following options can be used with "--config":
+  The following options can be used with "--config":
   
-      convert.bzr.saverev
-                    whether to store the original Bazaar commit ID in the
-                    metadata of the destination commit. The default is True.
+  convert.bzr.saverev
+                whether to store the original Bazaar commit ID in the metadata
+                of the destination commit. The default is True.
   
-      CVS Source
-      ##########
+  CVS Source
+  ##########
   
-      CVS source will use a sandbox (i.e. a checked-out copy) from CVS to
-      indicate the starting point of what will be converted. Direct access to
-      the repository files is not needed, unless of course the repository is
-      ":local:". The conversion uses the top level directory in the sandbox to
-      find the CVS repository, and then uses CVS rlog commands to find files to
-      convert. This means that unless a filemap is given, all files under the
-      starting directory will be converted, and that any directory
-      reorganization in the CVS sandbox is ignored.
+  CVS source will use a sandbox (i.e. a checked-out copy) from CVS to indicate
+  the starting point of what will be converted. Direct access to the repository
+  files is not needed, unless of course the repository is ":local:". The
+  conversion uses the top level directory in the sandbox to find the CVS
+  repository, and then uses CVS rlog commands to find files to convert. This
+  means that unless a filemap is given, all files under the starting directory
+  will be converted, and that any directory reorganization in the CVS sandbox is
+  ignored.
   
-      The following options can be used with "--config":
+  The following options can be used with "--config":
   
-      convert.cvsps.cache
-                    Set to False to disable remote log caching, for testing and
-                    debugging purposes. Default is True.
-      convert.cvsps.fuzz
-                    Specify the maximum time (in seconds) that is allowed
-                    between commits with identical user and log message in a
-                    single changeset. When very large files were checked in as
-                    part of a changeset then the default may not be long enough.
-                    The default is 60.
-      convert.cvsps.logencoding
-                    Specify encoding name to be used for transcoding CVS log
-                    messages. Multiple encoding names can be specified as a list
-                    (see 'hg help config.Syntax'), but only the first acceptable
-                    encoding in the list is used per CVS log entries. This
-                    transcoding is executed before cvslog hook below.
-      convert.cvsps.mergeto
-                    Specify a regular expression to which commit log messages
-                    are matched. If a match occurs, then the conversion process
-                    will insert a dummy revision merging the branch on which
-                    this log message occurs to the branch indicated in the
-                    regex. Default is "{{mergetobranch ([-\w]+)}}"
-      convert.cvsps.mergefrom
-                    Specify a regular expression to which commit log messages
-                    are matched. If a match occurs, then the conversion process
-                    will add the most recent revision on the branch indicated in
-                    the regex as the second parent of the changeset. Default is
-                    "{{mergefrombranch ([-\w]+)}}"
-      convert.localtimezone
-                    use local time (as determined by the TZ environment
-                    variable) for changeset date/times. The default is False
-                    (use UTC).
-      hooks.cvslog  Specify a Python function to be called at the end of
-                    gathering the CVS log. The function is passed a list with
-                    the log entries, and can modify the entries in-place, or add
-                    or delete them.
-      hooks.cvschangesets
-                    Specify a Python function to be called after the changesets
-                    are calculated from the CVS log. The function is passed a
-                    list with the changeset entries, and can modify the
-                    changesets in-place, or add or delete them.
+  convert.cvsps.cache
+                Set to False to disable remote log caching, for testing and
+                debugging purposes. Default is True.
+  convert.cvsps.fuzz
+                Specify the maximum time (in seconds) that is allowed between
+                commits with identical user and log message in a single
+                changeset. When very large files were checked in as part of a
+                changeset then the default may not be long enough. The default
+                is 60.
+  convert.cvsps.logencoding
+                Specify encoding name to be used for transcoding CVS log
+                messages. Multiple encoding names can be specified as a list
+                (see 'hg help config.Syntax'), but only the first acceptable
+                encoding in the list is used per CVS log entries. This
+                transcoding is executed before cvslog hook below.
+  convert.cvsps.mergeto
+                Specify a regular expression to which commit log messages are
+                matched. If a match occurs, then the conversion process will
+                insert a dummy revision merging the branch on which this log
+                message occurs to the branch indicated in the regex. Default is
+                "{{mergetobranch ([-\w]+)}}"
+  convert.cvsps.mergefrom
+                Specify a regular expression to which commit log messages are
+                matched. If a match occurs, then the conversion process will add
+                the most recent revision on the branch indicated in the regex as
+                the second parent of the changeset. Default is
+                "{{mergefrombranch ([-\w]+)}}"
+  convert.localtimezone
+                use local time (as determined by the TZ environment variable)
+                for changeset date/times. The default is False (use UTC).
+  hooks.cvslog  Specify a Python function to be called at the end of gathering
+                the CVS log. The function is passed a list with the log entries,
+                and can modify the entries in-place, or add or delete them.
+  hooks.cvschangesets
+                Specify a Python function to be called after the changesets are
+                calculated from the CVS log. The function is passed a list with
+                the changeset entries, and can modify the changesets in-place,
+                or add or delete them.
   
-      An additional "debugcvsps" Mercurial command allows the builtin changeset
-      merging code to be run without doing a conversion. Its parameters and
-      output are similar to that of cvsps 2.1. Please see the command help for
-      more details.
+  An additional "debugcvsps" Mercurial command allows the builtin changeset
+  merging code to be run without doing a conversion. Its parameters and output
+  are similar to that of cvsps 2.1. Please see the command help for more
+  details.
   
-      Subversion Source
-      #################
+  Subversion Source
+  #################
   
-      Subversion source detects classical trunk/branches/tags layouts. By
-      default, the supplied "svn://repo/path/" source URL is converted as a
-      single branch. If "svn://repo/path/trunk" exists it replaces the default
-      branch. If "svn://repo/path/branches" exists, its subdirectories are
-      listed as possible branches. If "svn://repo/path/tags" exists, it is
-      looked for tags referencing converted branches. Default "trunk",
-      "branches" and "tags" values can be overridden with following options. Set
-      them to paths relative to the source URL, or leave them blank to disable
-      auto detection.
+  Subversion source detects classical trunk/branches/tags layouts. By default,
+  the supplied "svn://repo/path/" source URL is converted as a single branch. If
+  "svn://repo/path/trunk" exists it replaces the default branch. If
+  "svn://repo/path/branches" exists, its subdirectories are listed as possible
+  branches. If "svn://repo/path/tags" exists, it is looked for tags referencing
+  converted branches. Default "trunk", "branches" and "tags" values can be
+  overridden with following options. Set them to paths relative to the source
+  URL, or leave them blank to disable auto detection.
   
-      The following options can be set with "--config":
+  The following options can be set with "--config":
   
-      convert.svn.branches
-                    specify the directory containing branches. The default is
-                    "branches".
-      convert.svn.tags
-                    specify the directory containing tags. The default is
-                    "tags".
-      convert.svn.trunk
-                    specify the name of the trunk branch. The default is
-                    "trunk".
-      convert.localtimezone
-                    use local time (as determined by the TZ environment
-                    variable) for changeset date/times. The default is False
-                    (use UTC).
+  convert.svn.branches
+                specify the directory containing branches. The default is
+                "branches".
+  convert.svn.tags
+                specify the directory containing tags. The default is "tags".
+  convert.svn.trunk
+                specify the name of the trunk branch. The default is "trunk".
+  convert.localtimezone
+                use local time (as determined by the TZ environment variable)
+                for changeset date/times. The default is False (use UTC).
   
-      Source history can be retrieved starting at a specific revision, instead
-      of being integrally converted. Only single branch conversions are
-      supported.
+  Source history can be retrieved starting at a specific revision, instead of
+  being integrally converted. Only single branch conversions are supported.
   
-      convert.svn.startrev
-                    specify start Subversion revision number. The default is 0.
+  convert.svn.startrev
+                specify start Subversion revision number. The default is 0.
   
-      Git Source
-      ##########
+  Git Source
+  ##########
   
-      The Git importer converts commits from all reachable branches (refs in
-      refs/heads) and remotes (refs in refs/remotes) to Mercurial. Branches are
-      converted to bookmarks with the same name, with the leading 'refs/heads'
-      stripped. Git submodules are converted to Git subrepos in Mercurial.
+  The Git importer converts commits from all reachable branches (refs in
+  refs/heads) and remotes (refs in refs/remotes) to Mercurial. Branches are
+  converted to bookmarks with the same name, with the leading 'refs/heads'
+  stripped. Git submodules are converted to Git subrepos in Mercurial.
   
-      The following options can be set with "--config":
+  The following options can be set with "--config":
   
-      convert.git.similarity
-                    specify how similar files modified in a commit must be to be
-                    imported as renames or copies, as a percentage between "0"
-                    (disabled) and "100" (files must be identical). For example,
-                    "90" means that a delete/add pair will be imported as a
-                    rename if more than 90% of the file hasn't changed. The
-                    default is "50".
-      convert.git.findcopiesharder
-                    while detecting copies, look at all files in the working
-                    copy instead of just changed ones. This is very expensive
-                    for large projects, and is only effective when
-                    "convert.git.similarity" is greater than 0. The default is
-                    False.
-      convert.git.renamelimit
-                    perform rename and copy detection up to this many changed
-                    files in a commit. Increasing this will make rename and copy
-                    detection more accurate but will significantly slow down
-                    computation on large projects. The option is only relevant
-                    if "convert.git.similarity" is greater than 0. The default
-                    is "400".
-      convert.git.committeractions
-                    list of actions to take when processing author and committer
-                    values.
+  convert.git.similarity
+                specify how similar files modified in a commit must be to be
+                imported as renames or copies, as a percentage between "0"
+                (disabled) and "100" (files must be identical). For example,
+                "90" means that a delete/add pair will be imported as a rename
+                if more than 90% of the file hasn't changed. The default is
+                "50".
+  convert.git.findcopiesharder
+                while detecting copies, look at all files in the working copy
+                instead of just changed ones. This is very expensive for large
+                projects, and is only effective when "convert.git.similarity" is
+                greater than 0. The default is False.
+  convert.git.renamelimit
+                perform rename and copy detection up to this many changed files
+                in a commit. Increasing this will make rename and copy detection
+                more accurate but will significantly slow down computation on
+                large projects. The option is only relevant if
+                "convert.git.similarity" is greater than 0. The default is
+                "400".
+  convert.git.committeractions
+                list of actions to take when processing author and committer
+                values.
   
-          Git commits have separate author (who wrote the commit) and committer
-          (who applied the commit) fields. Not all destinations support separate
-          author and committer fields (including Mercurial). This config option
-          controls what to do with these author and committer fields during
-          conversion.
+      Git commits have separate author (who wrote the commit) and committer (who
+      applied the commit) fields. Not all destinations support separate author
+      and committer fields (including Mercurial). This config option controls
+      what to do with these author and committer fields during conversion.
+  
+      A value of "messagedifferent" will append a "committer: ..." line to the
+      commit message if the Git committer is different from the author. The
+      prefix of that line can be specified using the syntax
+      "messagedifferent=<prefix>". e.g. "messagedifferent=git-committer:". When
+      a prefix is specified, a space will always be inserted between the prefix
+      and the value.
   
-          A value of "messagedifferent" will append a "committer: ..." line to
-          the commit message if the Git committer is different from the author.
-          The prefix of that line can be specified using the syntax
-          "messagedifferent=<prefix>". e.g. "messagedifferent=git-committer:".
-          When a prefix is specified, a space will always be inserted between
-          the prefix and the value.
+      "messagealways" behaves like "messagedifferent" except it will always
+      result in a "committer: ..." line being appended to the commit message.
+      This value is mutually exclusive with "messagedifferent".
   
-          "messagealways" behaves like "messagedifferent" except it will always
-          result in a "committer: ..." line being appended to the commit
-          message. This value is mutually exclusive with "messagedifferent".
+      "dropcommitter" will remove references to the committer. Only references
+      to the author will remain. Actions that add references to the committer
+      will have no effect when this is set.
   
-          "dropcommitter" will remove references to the committer. Only
-          references to the author will remain. Actions that add references to
-          the committer will have no effect when this is set.
+      "replaceauthor" will replace the value of the author field with the
+      committer. Other actions that add references to the committer will still
+      take effect when this is set.
   
-          "replaceauthor" will replace the value of the author field with the
-          committer. Other actions that add references to the committer will
-          still take effect when this is set.
+      The default is "messagedifferent".
   
-          The default is "messagedifferent".
-  
-      convert.git.extrakeys
-                    list of extra keys from commit metadata to copy to the
-                    destination. Some Git repositories store extra metadata in
-                    commits. By default, this non-default metadata will be lost
-                    during conversion. Setting this config option can retain
-                    that metadata. Some built-in keys such as "parent" and
-                    "branch" are not allowed to be copied.
-      convert.git.remoteprefix
-                    remote refs are converted as bookmarks with
-                    "convert.git.remoteprefix" as a prefix followed by a /. The
-                    default is 'remote'.
-      convert.git.saverev
-                    whether to store the original Git commit ID in the metadata
-                    of the destination commit. The default is True.
-      convert.git.skipsubmodules
-                    does not convert root level .gitmodules files or files with
-                    160000 mode indicating a submodule. Default is False.
+  convert.git.extrakeys
+                list of extra keys from commit metadata to copy to the
+                destination. Some Git repositories store extra metadata in
+                commits. By default, this non-default metadata will be lost
+                during conversion. Setting this config option can retain that
+                metadata. Some built-in keys such as "parent" and "branch" are
+                not allowed to be copied.
+  convert.git.remoteprefix
+                remote refs are converted as bookmarks with
+                "convert.git.remoteprefix" as a prefix followed by a /. The
+                default is 'remote'.
+  convert.git.saverev
+                whether to store the original Git commit ID in the metadata of
+                the destination commit. The default is True.
+  convert.git.skipsubmodules
+                does not convert root level .gitmodules files or files with
+                160000 mode indicating a submodule. Default is False.
   
-      Perforce Source
-      ###############
+  Perforce Source
+  ###############
   
-      The Perforce (P4) importer can be given a p4 depot path or a client
-      specification as source. It will convert all files in the source to a flat
-      Mercurial repository, ignoring labels, branches and integrations. Note
-      that when a depot path is given you then usually should specify a target
-      directory, because otherwise the target may be named "...-hg".
+  The Perforce (P4) importer can be given a p4 depot path or a client
+  specification as source. It will convert all files in the source to a flat
+  Mercurial repository, ignoring labels, branches and integrations. Note that
+  when a depot path is given you then usually should specify a target directory,
+  because otherwise the target may be named "...-hg".
   
-      The following options can be set with "--config":
+  The following options can be set with "--config":
   
-      convert.p4.encoding
-                    specify the encoding to use when decoding standard output of
-                    the Perforce command line tool. The default is default
-                    system encoding.
-      convert.p4.startrev
-                    specify initial Perforce revision (a Perforce changelist
-                    number).
+  convert.p4.encoding
+                specify the encoding to use when decoding standard output of the
+                Perforce command line tool. The default is default system
+                encoding.
+  convert.p4.startrev
+                specify initial Perforce revision (a Perforce changelist
+                number).
   
-      Mercurial Destination
-      #####################
+  Mercurial Destination
+  #####################
   
-      The Mercurial destination will recognize Mercurial subrepositories in the
-      destination directory, and update the .hgsubstate file automatically if
-      the destination subrepositories contain the <dest>/<sub>/.hg/shamap file.
-      Converting a repository with subrepositories requires converting a single
-      repository at a time, from the bottom up.
+  The Mercurial destination will recognize Mercurial subrepositories in the
+  destination directory, and update the .hgsubstate file automatically if the
+  destination subrepositories contain the <dest>/<sub>/.hg/shamap file.
+  Converting a repository with subrepositories requires converting a single
+  repository at a time, from the bottom up.
   
-      The following options are supported:
+  The following options are supported:
   
-      convert.hg.clonebranches
-                    dispatch source branches in separate clones. The default is
-                    False.
-      convert.hg.tagsbranch
-                    branch name for tag revisions, defaults to "default".
-      convert.hg.usebranchnames
-                    preserve branch names. The default is True.
-      convert.hg.sourcename
-                    records the given string as a 'convert_source' extra value
-                    on each commit made in the target repository. The default is
-                    None.
-      convert.hg.preserve-hash
-                    only works with mercurial sources. Make convert prevent
-                    performance improvement to the list of modified files in
-                    commits when such an improvement would cause the hash of a
-                    commit to change. The default is False.
+  convert.hg.clonebranches
+                dispatch source branches in separate clones. The default is
+                False.
+  convert.hg.tagsbranch
+                branch name for tag revisions, defaults to "default".
+  convert.hg.usebranchnames
+                preserve branch names. The default is True.
+  convert.hg.sourcename
+                records the given string as a 'convert_source' extra value on
+                each commit made in the target repository. The default is None.
+  convert.hg.preserve-hash
+                only works with mercurial sources. Make convert prevent
+                performance improvement to the list of modified files in commits
+                when such an improvement would cause the hash of a commit to
+                change. The default is False.
   
-      All Destinations
-      ################
+  All Destinations
+  ################
   
-      All destination types accept the following options:
+  All destination types accept the following options:
   
-      convert.skiptags
-                    does not convert tags from the source repo to the target
-                    repo. The default is False.
+  convert.skiptags
+                does not convert tags from the source repo to the target repo.
+                The default is False.
   
-      Subversion Destination
-      ######################
+  Subversion Destination
+  ######################
   
-      Original commit dates are not preserved by default.
+  Original commit dates are not preserved by default.
   
-      convert.svn.dangerous-set-commit-dates
-                    preserve original commit dates, forcefully setting
-                    "svn:date" revision properties. This option is DANGEROUS and
-                    may break some subversion functionality for the resulting
-                    repository (e.g. filtering revisions with date ranges in
-                    "svn log"), as original commit dates are not guaranteed to
-                    be monotonically increasing.
+  convert.svn.dangerous-set-commit-dates
+                preserve original commit dates, forcefully setting "svn:date"
+                revision properties. This option is DANGEROUS and may break some
+                subversion functionality for the resulting repository (e.g.
+                filtering revisions with date ranges in "svn log"), as original
+                commit dates are not guaranteed to be monotonically increasing.
   
-      For commit dates setting to work destination repository must have "pre-
-      revprop-change" hook configured to allow setting of "svn:date" revision
-      properties. See Subversion documentation for more details.
+  For commit dates setting to work destination repository must have "pre-
+  revprop-change" hook configured to allow setting of "svn:date" revision
+  properties. See Subversion documentation for more details.
   
   options ([+] can be repeated):
   
--- a/tests/test-encoding-textwrap.t	Tue Oct 15 22:30:10 2024 -0400
+++ b/tests/test-encoding-textwrap.t	Thu Oct 24 15:23:52 2024 +0200
@@ -63,11 +63,11 @@
   
   \x82\xa0\x82\xa2\x82\xa4\x82\xa6\x82\xa8\x82\xa9\x82\xab\x82\xad\x82\xaf \x82\xa0\x82\xa2\x82\xa4\x82\xa6\x82\xa8\x82\xa9\x82\xab\x82\xad\x82\xaf \x82\xa0\x82\xa2\x82\xa4\x82\xa6\x82\xa8\x82\xa9\x82\xab\x82\xad\x82\xaf (esc)
   
-      \x82\xa0\x82\xa2\x82\xa4\x82\xa6\x82\xa8\x82\xa9\x82\xab\x82\xad\x82\xaf \x82\xa0\x82\xa2\x82\xa4\x82\xa6\x82\xa8\x82\xa9\x82\xab\x82\xad\x82\xaf (esc)
-      \x82\xa0\x82\xa2\x82\xa4\x82\xa6\x82\xa8\x82\xa9\x82\xab\x82\xad\x82\xaf \x82\xa0\x82\xa2\x82\xa4\x82\xa6\x82\xa8\x82\xa9\x82\xab\x82\xad\x82\xaf (esc)
+  \x82\xa0\x82\xa2\x82\xa4\x82\xa6\x82\xa8\x82\xa9\x82\xab\x82\xad\x82\xaf \x82\xa0\x82\xa2\x82\xa4\x82\xa6\x82\xa8\x82\xa9\x82\xab\x82\xad\x82\xaf \x82\xa0\x82\xa2\x82\xa4\x82\xa6\x82\xa8\x82\xa9\x82\xab\x82\xad\x82\xaf (esc)
+  \x82\xa0\x82\xa2\x82\xa4\x82\xa6\x82\xa8\x82\xa9\x82\xab\x82\xad\x82\xaf (esc)
   
-      \x82\xa0\x82\xa2\x82\xa4\x82\xa6\x82\xa8\x82\xa9\x82\xab\x82\xad\x82\xaf\x82\xa0\x82\xa2\x82\xa4\x82\xa6\x82\xa8\x82\xa9\x82\xab\x82\xad\x82\xaf\x82\xa0\x82\xa2\x82\xa4\x82\xa6\x82\xa8\x82\xa9\x82\xab\x82\xad\x82\xaf (esc)
-      \x82\xa0\x82\xa2\x82\xa4\x82\xa6\x82\xa8\x82\xa9\x82\xab\x82\xad\x82\xaf (esc)
+  \x82\xa0\x82\xa2\x82\xa4\x82\xa6\x82\xa8\x82\xa9\x82\xab\x82\xad\x82\xaf\x82\xa0\x82\xa2\x82\xa4\x82\xa6\x82\xa8\x82\xa9\x82\xab\x82\xad\x82\xaf\x82\xa0\x82\xa2\x82\xa4\x82\xa6\x82\xa8\x82\xa9\x82\xab\x82\xad\x82\xaf\x82\xa0\x82\xa2 (esc)
+  \x82\xa4\x82\xa6\x82\xa8\x82\xa9\x82\xab\x82\xad\x82\xaf (esc)
   
   (some details hidden, use --verbose to show complete help)
 
@@ -78,11 +78,11 @@
   
   \xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\xe3\x81\x8a\xe3\x81\x8b\xe3\x81\x8d\xe3\x81\x8f\xe3\x81\x91 \xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\xe3\x81\x8a\xe3\x81\x8b\xe3\x81\x8d\xe3\x81\x8f\xe3\x81\x91 \xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\xe3\x81\x8a\xe3\x81\x8b\xe3\x81\x8d\xe3\x81\x8f\xe3\x81\x91 (esc)
   
-      \xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\xe3\x81\x8a\xe3\x81\x8b\xe3\x81\x8d\xe3\x81\x8f\xe3\x81\x91 \xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\xe3\x81\x8a\xe3\x81\x8b\xe3\x81\x8d\xe3\x81\x8f\xe3\x81\x91 (esc)
-      \xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\xe3\x81\x8a\xe3\x81\x8b\xe3\x81\x8d\xe3\x81\x8f\xe3\x81\x91 \xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\xe3\x81\x8a\xe3\x81\x8b\xe3\x81\x8d\xe3\x81\x8f\xe3\x81\x91 (esc)
+  \xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\xe3\x81\x8a\xe3\x81\x8b\xe3\x81\x8d\xe3\x81\x8f\xe3\x81\x91 \xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\xe3\x81\x8a\xe3\x81\x8b\xe3\x81\x8d\xe3\x81\x8f\xe3\x81\x91 \xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\xe3\x81\x8a\xe3\x81\x8b\xe3\x81\x8d\xe3\x81\x8f\xe3\x81\x91 (esc)
+  \xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\xe3\x81\x8a\xe3\x81\x8b\xe3\x81\x8d\xe3\x81\x8f\xe3\x81\x91 (esc)
   
-      \xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\xe3\x81\x8a\xe3\x81\x8b\xe3\x81\x8d\xe3\x81\x8f\xe3\x81\x91\xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\xe3\x81\x8a\xe3\x81\x8b\xe3\x81\x8d\xe3\x81\x8f\xe3\x81\x91\xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\xe3\x81\x8a\xe3\x81\x8b\xe3\x81\x8d\xe3\x81\x8f\xe3\x81\x91 (esc)
-      \xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\xe3\x81\x8a\xe3\x81\x8b\xe3\x81\x8d\xe3\x81\x8f\xe3\x81\x91 (esc)
+  \xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\xe3\x81\x8a\xe3\x81\x8b\xe3\x81\x8d\xe3\x81\x8f\xe3\x81\x91\xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\xe3\x81\x8a\xe3\x81\x8b\xe3\x81\x8d\xe3\x81\x8f\xe3\x81\x91\xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\xe3\x81\x8a\xe3\x81\x8b\xe3\x81\x8d\xe3\x81\x8f\xe3\x81\x91\xe3\x81\x82\xe3\x81\x84 (esc)
+  \xe3\x81\x86\xe3\x81\x88\xe3\x81\x8a\xe3\x81\x8b\xe3\x81\x8d\xe3\x81\x8f\xe3\x81\x91 (esc)
   
   (some details hidden, use --verbose to show complete help)
 
@@ -94,11 +94,11 @@
   
   \xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9 \xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9 \xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9 \xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9 (esc)
   
-      \xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9 \xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9 \xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9 \xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9 \xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9 (esc)
-      \xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9 \xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9 \xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9 (esc)
+  \xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9 \xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9 \xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9 \xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9 \xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9 (esc)
+  \xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9 \xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9 \xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9 (esc)
   
-      \xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9 (esc)
-      \xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9 (esc)
+  \xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xb1\xb2\xb3\xb4 (esc)
+  \xb5\xb6\xb7\xb8\xb9\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9 (esc)
   
   (some details hidden, use --verbose to show complete help)
 
@@ -109,11 +109,11 @@
   
   \xef\xbd\xb1\xef\xbd\xb2\xef\xbd\xb3\xef\xbd\xb4\xef\xbd\xb5\xef\xbd\xb6\xef\xbd\xb7\xef\xbd\xb8\xef\xbd\xb9 \xef\xbd\xb1\xef\xbd\xb2\xef\xbd\xb3\xef\xbd\xb4\xef\xbd\xb5\xef\xbd\xb6\xef\xbd\xb7\xef\xbd\xb8\xef\xbd\xb9 \xef\xbd\xb1\xef\xbd\xb2\xef\xbd\xb3\xef\xbd\xb4\xef\xbd\xb5\xef\xbd\xb6\xef\xbd\xb7\xef\xbd\xb8\xef\xbd\xb9 \xef\xbd\xb1\xef\xbd\xb2\xef\xbd\xb3\xef\xbd\xb4\xef\xbd\xb5\xef\xbd\xb6\xef\xbd\xb7\xef\xbd\xb8\xef\xbd\xb9 (esc)
   
-      \xef\xbd\xb1\xef\xbd\xb2\xef\xbd\xb3\xef\xbd\xb4\xef\xbd\xb5\xef\xbd\xb6\xef\xbd\xb7\xef\xbd\xb8\xef\xbd\xb9 \xef\xbd\xb1\xef\xbd\xb2\xef\xbd\xb3\xef\xbd\xb4\xef\xbd\xb5\xef\xbd\xb6\xef\xbd\xb7\xef\xbd\xb8\xef\xbd\xb9 \xef\xbd\xb1\xef\xbd\xb2\xef\xbd\xb3\xef\xbd\xb4\xef\xbd\xb5\xef\xbd\xb6\xef\xbd\xb7\xef\xbd\xb8\xef\xbd\xb9 \xef\xbd\xb1\xef\xbd\xb2\xef\xbd\xb3\xef\xbd\xb4\xef\xbd\xb5\xef\xbd\xb6\xef\xbd\xb7\xef\xbd\xb8\xef\xbd\xb9 \xef\xbd\xb1\xef\xbd\xb2\xef\xbd\xb3\xef\xbd\xb4\xef\xbd\xb5\xef\xbd\xb6\xef\xbd\xb7\xef\xbd\xb8\xef\xbd\xb9 (esc)
-      \xef\xbd\xb1\xef\xbd\xb2\xef\xbd\xb3\xef\xbd\xb4\xef\xbd\xb5\xef\xbd\xb6\xef\xbd\xb7\xef\xbd\xb8\xef\xbd\xb9 \xef\xbd\xb1\xef\xbd\xb2\xef\xbd\xb3\xef\xbd\xb4\xef\xbd\xb5\xef\xbd\xb6\xef\xbd\xb7\xef\xbd\xb8\xef\xbd\xb9 \xef\xbd\xb1\xef\xbd\xb2\xef\xbd\xb3\xef\xbd\xb4\xef\xbd\xb5\xef\xbd\xb6\xef\xbd\xb7\xef\xbd\xb8\xef\xbd\xb9 (esc)
+  \xef\xbd\xb1\xef\xbd\xb2\xef\xbd\xb3\xef\xbd\xb4\xef\xbd\xb5\xef\xbd\xb6\xef\xbd\xb7\xef\xbd\xb8\xef\xbd\xb9 \xef\xbd\xb1\xef\xbd\xb2\xef\xbd\xb3\xef\xbd\xb4\xef\xbd\xb5\xef\xbd\xb6\xef\xbd\xb7\xef\xbd\xb8\xef\xbd\xb9 \xef\xbd\xb1\xef\xbd\xb2\xef\xbd\xb3\xef\xbd\xb4\xef\xbd\xb5\xef\xbd\xb6\xef\xbd\xb7\xef\xbd\xb8\xef\xbd\xb9 \xef\xbd\xb1\xef\xbd\xb2\xef\xbd\xb3\xef\xbd\xb4\xef\xbd\xb5\xef\xbd\xb6\xef\xbd\xb7\xef\xbd\xb8\xef\xbd\xb9 \xef\xbd\xb1\xef\xbd\xb2\xef\xbd\xb3\xef\xbd\xb4\xef\xbd\xb5\xef\xbd\xb6\xef\xbd\xb7\xef\xbd\xb8\xef\xbd\xb9 (esc)
+  \xef\xbd\xb1\xef\xbd\xb2\xef\xbd\xb3\xef\xbd\xb4\xef\xbd\xb5\xef\xbd\xb6\xef\xbd\xb7\xef\xbd\xb8\xef\xbd\xb9 \xef\xbd\xb1\xef\xbd\xb2\xef\xbd\xb3\xef\xbd\xb4\xef\xbd\xb5\xef\xbd\xb6\xef\xbd\xb7\xef\xbd\xb8\xef\xbd\xb9 \xef\xbd\xb1\xef\xbd\xb2\xef\xbd\xb3\xef\xbd\xb4\xef\xbd\xb5\xef\xbd\xb6\xef\xbd\xb7\xef\xbd\xb8\xef\xbd\xb9 (esc)
   
-      \xef\xbd\xb1\xef\xbd\xb2\xef\xbd\xb3\xef\xbd\xb4\xef\xbd\xb5\xef\xbd\xb6\xef\xbd\xb7\xef\xbd\xb8\xef\xbd\xb9\xef\xbd\xb1\xef\xbd\xb2\xef\xbd\xb3\xef\xbd\xb4\xef\xbd\xb5\xef\xbd\xb6\xef\xbd\xb7\xef\xbd\xb8\xef\xbd\xb9\xef\xbd\xb1\xef\xbd\xb2\xef\xbd\xb3\xef\xbd\xb4\xef\xbd\xb5\xef\xbd\xb6\xef\xbd\xb7\xef\xbd\xb8\xef\xbd\xb9\xef\xbd\xb1\xef\xbd\xb2\xef\xbd\xb3\xef\xbd\xb4\xef\xbd\xb5\xef\xbd\xb6\xef\xbd\xb7\xef\xbd\xb8\xef\xbd\xb9\xef\xbd\xb1\xef\xbd\xb2\xef\xbd\xb3\xef\xbd\xb4\xef\xbd\xb5\xef\xbd\xb6\xef\xbd\xb7\xef\xbd\xb8\xef\xbd\xb9\xef\xbd\xb1\xef\xbd\xb2\xef\xbd\xb3\xef\xbd\xb4\xef\xbd\xb5\xef\xbd\xb6\xef\xbd\xb7\xef\xbd\xb8\xef\xbd\xb9 (esc)
-      \xef\xbd\xb1\xef\xbd\xb2\xef\xbd\xb3\xef\xbd\xb4\xef\xbd\xb5\xef\xbd\xb6\xef\xbd\xb7\xef\xbd\xb8\xef\xbd\xb9\xef\xbd\xb1\xef\xbd\xb2\xef\xbd\xb3\xef\xbd\xb4\xef\xbd\xb5\xef\xbd\xb6\xef\xbd\xb7\xef\xbd\xb8\xef\xbd\xb9 (esc)
+  \xef\xbd\xb1\xef\xbd\xb2\xef\xbd\xb3\xef\xbd\xb4\xef\xbd\xb5\xef\xbd\xb6\xef\xbd\xb7\xef\xbd\xb8\xef\xbd\xb9\xef\xbd\xb1\xef\xbd\xb2\xef\xbd\xb3\xef\xbd\xb4\xef\xbd\xb5\xef\xbd\xb6\xef\xbd\xb7\xef\xbd\xb8\xef\xbd\xb9\xef\xbd\xb1\xef\xbd\xb2\xef\xbd\xb3\xef\xbd\xb4\xef\xbd\xb5\xef\xbd\xb6\xef\xbd\xb7\xef\xbd\xb8\xef\xbd\xb9\xef\xbd\xb1\xef\xbd\xb2\xef\xbd\xb3\xef\xbd\xb4\xef\xbd\xb5\xef\xbd\xb6\xef\xbd\xb7\xef\xbd\xb8\xef\xbd\xb9\xef\xbd\xb1\xef\xbd\xb2\xef\xbd\xb3\xef\xbd\xb4\xef\xbd\xb5\xef\xbd\xb6\xef\xbd\xb7\xef\xbd\xb8\xef\xbd\xb9\xef\xbd\xb1\xef\xbd\xb2\xef\xbd\xb3\xef\xbd\xb4\xef\xbd\xb5\xef\xbd\xb6\xef\xbd\xb7\xef\xbd\xb8\xef\xbd\xb9\xef\xbd\xb1\xef\xbd\xb2\xef\xbd\xb3\xef\xbd\xb4 (esc)
+  \xef\xbd\xb5\xef\xbd\xb6\xef\xbd\xb7\xef\xbd\xb8\xef\xbd\xb9\xef\xbd\xb1\xef\xbd\xb2\xef\xbd\xb3\xef\xbd\xb4\xef\xbd\xb5\xef\xbd\xb6\xef\xbd\xb7\xef\xbd\xb8\xef\xbd\xb9 (esc)
   
   (some details hidden, use --verbose to show complete help)
 
@@ -130,11 +130,11 @@
   
   \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b (esc)
   
-      \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b (esc)
-      \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b (esc)
+  \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b (esc)
+  \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b (esc)
   
-      \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b\x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b\x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b\x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b\x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b\x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b (esc)
-      \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b (esc)
+  \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b\x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b\x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b\x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b\x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b\x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b\x83\xbf\x83\xc0\x83\xc1\x83\xc2 (esc)
+  \x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b (esc)
   
   (some details hidden, use --verbose to show complete help)
 
@@ -145,11 +145,11 @@
   
   \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b (esc)
   
-      \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b (esc)
-      \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b (esc)
+  \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b (esc)
+  \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b (esc)
   
-      \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b\xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b\xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b\xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b\xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b\xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b (esc)
-      \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b (esc)
+  \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b\xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b\xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b\xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b\xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b\xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b\xce\xb1\xce\xb2\xce\xb3\xce\xb4 (esc)
+  \xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b (esc)
   
   (some details hidden, use --verbose to show complete help)
 
@@ -160,11 +160,11 @@
   
   \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 (esc)
   
-      \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 (esc)
-      \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 (esc)
+  \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 (esc)
+  \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 (esc)
   
-      \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8\xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8\xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8\xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8\xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8\xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 (esc)
-      \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 (esc)
+  \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8\xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8\xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8\xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8\xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8\xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8\xcd\xe0\xf1\xf2 (esc)
+  \xf0\xee\xe9\xea\xe8 (esc)
   
   (some details hidden, use --verbose to show complete help)
 
@@ -175,11 +175,11 @@
   
   \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 (esc)
   
-      \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 (esc)
-      \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 (esc)
+  \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 (esc)
+  \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 (esc)
   
-      \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8\xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8\xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8\xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8\xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8\xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 (esc)
-      \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 (esc)
+  \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8\xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8\xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8\xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8\xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8\xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8\xd0\x9d\xd0\xb0\xd1\x81\xd1\x82 (esc)
+  \xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 (esc)
   
   (some details hidden, use --verbose to show complete help)
 
@@ -193,14 +193,13 @@
   
   \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b (esc)
   
-      \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b (esc)
-      \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b (esc)
-      \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b (esc)
-      \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b (esc)
+  \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b (esc)
+  \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b (esc)
+  \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b (esc)
   
-      \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b\x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b\x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b (esc)
-      \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b\x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b\x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b (esc)
-      \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b (esc)
+  \x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b\x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b\x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b\x83\xbf\x83\xc0 (esc)
+  \x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b\x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b\x83\xbf\x83\xc0\x83\xc1\x83\xc2\x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b\x83\xbf\x83\xc0\x83\xc1\x83\xc2 (esc)
+  \x83\xd2\x83\xc4\x83\xc5\x83\xc6\x81\x9b (esc)
   
   (some details hidden, use --verbose to show complete help)
 
@@ -211,14 +210,13 @@
   
   \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b (esc)
   
-      \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b (esc)
-      \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b (esc)
-      \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b (esc)
-      \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b (esc)
+  \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b (esc)
+  \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b (esc)
+  \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b (esc)
   
-      \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b\xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b\xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b (esc)
-      \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b\xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b\xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b (esc)
-      \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b (esc)
+  \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b\xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b\xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b\xce\xb1\xce\xb2 (esc)
+  \xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b\xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b\xce\xb1\xce\xb2\xce\xb3\xce\xb4\xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b\xce\xb1\xce\xb2\xce\xb3\xce\xb4 (esc)
+  \xcf\x85\xce\xb6\xce\xb7\xce\xb8\xe2\x97\x8b (esc)
   
   (some details hidden, use --verbose to show complete help)
 
@@ -230,13 +228,12 @@
   \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 (esc)
   \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 (esc)
   
-      \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 (esc)
-      \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 (esc)
-      \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 (esc)
+  \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 (esc)
+  \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 (esc)
   
-      \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8\xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8\xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 (esc)
-      \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8\xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8\xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 (esc)
-      \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8 (esc)
+  \xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8\xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8\xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8\xcd\xe0 (esc)
+  \xf1\xf2\xf0\xee\xe9\xea\xe8\xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8\xcd\xe0\xf1\xf2\xf0\xee\xe9\xea\xe8\xcd\xe0\xf1\xf2 (esc)
+  \xf0\xee\xe9\xea\xe8 (esc)
   
   (some details hidden, use --verbose to show complete help)
 
@@ -248,13 +245,12 @@
   \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 (esc)
   \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 (esc)
   
-      \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 (esc)
-      \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 (esc)
-      \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 (esc)
+  \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 (esc)
+  \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 (esc)
   
-      \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8\xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8\xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 (esc)
-      \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8\xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8\xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 (esc)
-      \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 (esc)
+  \xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8\xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8\xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8\xd0\x9d\xd0\xb0 (esc)
+  \xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8\xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8\xd0\x9d\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8\xd0\x9d\xd0\xb0\xd1\x81\xd1\x82 (esc)
+  \xd1\x80\xd0\xbe\xd0\xb9\xd0\xba\xd0\xb8 (esc)
   
   (some details hidden, use --verbose to show complete help)
 
--- a/tests/test-extdiff.t	Tue Oct 15 22:30:10 2024 -0400
+++ b/tests/test-extdiff.t	Thu Oct 24 15:23:52 2024 +0200
@@ -37,15 +37,15 @@
   
   use external program to diff repository (or selected files)
   
-      Show differences between revisions for the specified files, using the
-      following program:
+  Show differences between revisions for the specified files, using the
+  following program:
   
-        'echo'
+    'echo'
   
-      When two revision arguments are given, then changes are shown between
-      those revisions. If only one revision is specified then that revision is
-      compared to the working directory, and, when no revisions are specified,
-      the working directory files are compared to its parent.
+  When two revision arguments are given, then changes are shown between those
+  revisions. If only one revision is specified then that revision is compared to
+  the working directory, and, when no revisions are specified, the working
+  directory files are compared to its parent.
   
   options ([+] can be repeated):
   
@@ -532,8 +532,8 @@
   [10]
 
   $ LC_MESSAGES=ja_JP.UTF-8 hg --config hgext.extdiff= --config extdiff.cmd.td=$U help td \
-  > | grep "^      '"
-        '\xa5\xa5'
+  > | grep "^  '"
+    '\xa5\xa5'
 
   $ cd $TESTTMP
 
--- a/tests/test-extension.t	Tue Oct 15 22:30:10 2024 -0400
+++ b/tests/test-extension.t	Thu Oct 24 15:23:52 2024 +0200
@@ -754,30 +754,28 @@
   
   use external program to diff repository (or selected files)
   
-      Show differences between revisions for the specified files, using an
-      external program. The default program used is diff, with default options
-      "-Npru".
+  Show differences between revisions for the specified files, using an external
+  program. The default program used is diff, with default options "-Npru".
   
-      To select a different program, use the -p/--program option. The program
-      will be passed the names of two directories to compare, unless the --per-
-      file option is specified (see below). To pass additional options to the
-      program, use -o/--option. These will be passed before the names of the
-      directories or files to compare.
+  To select a different program, use the -p/--program option. The program will
+  be passed the names of two directories to compare, unless the --per-file
+  option is specified (see below). To pass additional options to the program,
+  use -o/--option. These will be passed before the names of the directories or
+  files to compare.
   
-      The --from, --to, and --change options work the same way they do for 'hg
-      diff'.
+  The --from, --to, and --change options work the same way they do for 'hg
+  diff'.
   
-      The --per-file option runs the external program repeatedly on each file to
-      diff, instead of once on two directories. By default, this happens one by
-      one, where the next file diff is open in the external program only once
-      the previous external program (for the previous file diff) has exited. If
-      the external program has a graphical interface, it can open all the file
-      diffs at once instead of one by one. See 'hg help -e extdiff' for
-      information about how to tell Mercurial that a given program has a
-      graphical interface.
+  The --per-file option runs the external program repeatedly on each file to
+  diff, instead of once on two directories. By default, this happens one by one,
+  where the next file diff is open in the external program only once the
+  previous external program (for the previous file diff) has exited. If the
+  external program has a graphical interface, it can open all the file diffs at
+  once instead of one by one. See 'hg help -e extdiff' for information about how
+  to tell Mercurial that a given program has a graphical interface.
   
-      The --confirm option will prompt the user before each invocation of the
-      external program. It is ignored if --per-file isn't specified.
+  The --confirm option will prompt the user before each invocation of the
+  external program. It is ignored if --per-file isn't specified.
   
   (use 'hg help -e extdiff' to show help for the extdiff extension)
   
@@ -1831,9 +1829,7 @@
   >     return orig(*args, **opts)
   > def uisetup(ui):
   >     synopsis = b' GREPME [--foo] [-x]'
-  >     docstring = '''
-  >     GREPME make sure that this is in the help!
-  >     '''
+  >     docstring = '\nGREPME make sure that this is in the help!'
   >     extensions.wrapcommand(commands.table, b'bookmarks', exbookmarks,
   >                            synopsis, docstring)
   > EOF
@@ -1843,7 +1839,7 @@
   $ cd exthelp
   $ hg help bookmarks | grep GREPME
   hg bookmarks [OPTIONS]... [NAME]... GREPME [--foo] [-x]
-      GREPME make sure that this is in the help!
+  GREPME make sure that this is in the help!
   $ cd ..
 
 Prohibit the use of unicode strings as the default value of options
--- a/tests/test-fix.t	Tue Oct 15 22:30:10 2024 -0400
+++ b/tests/test-fix.t	Thu Oct 24 15:23:52 2024 +0200
@@ -84,27 +84,26 @@
   
   rewrite file content in changesets or working directory
   
-      Runs any configured tools to fix the content of files. (See 'hg help -e
-      fix' for details about configuring tools.) Only affects files with
-      changes, unless file arguments are provided. Only affects changed lines of
-      files, unless the --whole flag is used. Some tools may always affect the
-      whole file regardless of --whole.
+  Runs any configured tools to fix the content of files. (See 'hg help -e fix'
+  for details about configuring tools.) Only affects files with changes, unless
+  file arguments are provided. Only affects changed lines of files, unless the
+  --whole flag is used. Some tools may always affect the whole file regardless
+  of --whole.
   
-      If --working-dir is used, files with uncommitted changes in the working
-      copy will be fixed. Note that no backup are made.
+  If --working-dir is used, files with uncommitted changes in the working copy
+  will be fixed. Note that no backup are made.
   
-      If revisions are specified with --source, those revisions and their
-      descendants will be checked, and they may be replaced with new revisions
-      that have fixed file content. By automatically including the descendants,
-      no merging, rebasing, or evolution will be required. If an ancestor of the
-      working copy is included, then the working copy itself will also be fixed,
-      and the working copy will be updated to the fixed parent.
+  If revisions are specified with --source, those revisions and their
+  descendants will be checked, and they may be replaced with new revisions that
+  have fixed file content. By automatically including the descendants, no
+  merging, rebasing, or evolution will be required. If an ancestor of the
+  working copy is included, then the working copy itself will also be fixed, and
+  the working copy will be updated to the fixed parent.
   
-      When determining what lines of each file to fix at each revision, the
-      whole set of revisions being fixed is considered, so that fixes to earlier
-      revisions are not forgotten in later ones. The --base flag can be used to
-      override this default behavior, though it is not usually desirable to do
-      so.
+  When determining what lines of each file to fix at each revision, the whole
+  set of revisions being fixed is considered, so that fixes to earlier revisions
+  are not forgotten in later ones. The --base flag can be used to override this
+  default behavior, though it is not usually desirable to do so.
   
   (use 'hg help -e fix' to show help for the fix extension)
   
--- a/tests/test-help.t	Tue Oct 15 22:30:10 2024 -0400
+++ b/tests/test-help.t	Thu Oct 24 15:23:52 2024 +0200
@@ -467,15 +467,15 @@
   
   add the specified files on the next commit
   
-      Schedule files to be version controlled and added to the repository.
-  
-      The files will be added to the repository at the next commit. To undo an
-      add before that, see 'hg forget'.
-  
-      If no names are given, add all files to the repository (except files
-      matching ".hgignore").
-  
-      Returns 0 if all files are successfully added.
+  Schedule files to be version controlled and added to the repository.
+  
+  The files will be added to the repository at the next commit. To undo an add
+  before that, see 'hg forget'.
+  
+  If no names are given, add all files to the repository (except files matching
+  ".hgignore").
+  
+  Returns 0 if all files are successfully added.
   
   options ([+] can be repeated):
   
@@ -493,40 +493,40 @@
   
   add the specified files on the next commit
   
-      Schedule files to be version controlled and added to the repository.
-  
-      The files will be added to the repository at the next commit. To undo an
-      add before that, see 'hg forget'.
-  
-      If no names are given, add all files to the repository (except files
-      matching ".hgignore").
-  
-      Examples:
-  
-        - New (unknown) files are added automatically by 'hg add':
-  
-            $ ls
-            foo.c
-            $ hg status
-            ? foo.c
-            $ hg add
-            adding foo.c
-            $ hg status
-            A foo.c
-  
-        - Specific files to be added can be specified:
-  
-            $ ls
-            bar.c  foo.c
-            $ hg status
-            ? bar.c
-            ? foo.c
-            $ hg add bar.c
-            $ hg status
-            A bar.c
-            ? foo.c
-  
-      Returns 0 if all files are successfully added.
+  Schedule files to be version controlled and added to the repository.
+  
+  The files will be added to the repository at the next commit. To undo an add
+  before that, see 'hg forget'.
+  
+  If no names are given, add all files to the repository (except files matching
+  ".hgignore").
+  
+  Examples:
+  
+    - New (unknown) files are added automatically by 'hg add':
+  
+        $ ls
+        foo.c
+        $ hg status
+        ? foo.c
+        $ hg add
+        adding foo.c
+        $ hg status
+        A foo.c
+  
+    - Specific files to be added can be specified:
+  
+        $ ls
+        bar.c  foo.c
+        $ hg status
+        ? bar.c
+        ? foo.c
+        $ hg add bar.c
+        $ hg status
+        A bar.c
+        ? foo.c
+  
+  Returns 0 if all files are successfully added.
   
   options ([+] can be repeated):
   
@@ -568,10 +568,10 @@
   print the root (top) of the current working
   directory
   
-      Print the root directory of the current
-      repository.
-  
-      Returns 0 on success.
+  Print the root directory of the current
+  repository.
+  
+  Returns 0 on success.
   
   options:
   
@@ -630,20 +630,19 @@
   
   verify the integrity of the repository
   
-      Verify the integrity of the current repository.
-  
-      This will perform an extensive check of the repository's integrity,
-      validating the hashes and checksums of each entry in the changelog,
-      manifest, and tracked files, as well as the integrity of their crosslinks
-      and indices.
-  
-      Please see https://mercurial-scm.org/wiki/RepositoryCorruption for more
-      information about recovery from corruption of the repository.
-  
-      For an alternative UI with a lot more control over the verification
-      process and better error reporting, try 'hg help admin::verify'.
-  
-      Returns 0 on success, 1 if errors are encountered.
+  Verify the integrity of the current repository.
+  
+  This will perform an extensive check of the repository's integrity, validating
+  the hashes and checksums of each entry in the changelog, manifest, and tracked
+  files, as well as the integrity of their crosslinks and indices.
+  
+  Please see https://mercurial-scm.org/wiki/RepositoryCorruption for more
+  information about recovery from corruption of the repository.
+  
+  For an alternative UI with a lot more control over the verification process
+  and better error reporting, try 'hg help admin::verify'.
+  
+  Returns 0 on success, 1 if errors are encountered.
   
   options:
   
@@ -654,36 +653,36 @@
   
   diff repository (or selected files)
   
-      Show differences between revisions for the specified files.
-  
-      Differences between files are shown using the unified diff format.
-  
-      Note:
-         'hg diff' may generate unexpected results for merges, as it will
-         default to comparing against the working directory's first parent
-         changeset if no revisions are specified.  To diff against the conflict
-         regions, you can use '--config diff.merge=yes'.
-  
-      By default, the working directory files are compared to its first parent.
-      To see the differences from another revision, use --from. To see the
-      difference to another revision, use --to. For example, 'hg diff --from .^'
-      will show the differences from the working copy's grandparent to the
-      working copy, 'hg diff --to .' will show the diff from the working copy to
-      its parent (i.e. the reverse of the default), and 'hg diff --from 1.0 --to
-      1.2' will show the diff between those two revisions.
-  
-      Alternatively you can specify -c/--change with a revision to see the
-      changes in that changeset relative to its first parent (i.e. 'hg diff -c
-      42' is equivalent to 'hg diff --from 42^ --to 42')
-  
-      Without the -a/--text option, diff will avoid generating diffs of files it
-      detects as binary. With -a, diff will generate a diff anyway, probably
-      with undesirable results.
-  
-      Use the -g/--git option to generate diffs in the git extended diff format.
-      For more information, read 'hg help diffs'.
-  
-      Returns 0 on success.
+  Show differences between revisions for the specified files.
+  
+  Differences between files are shown using the unified diff format.
+  
+  Note:
+     'hg diff' may generate unexpected results for merges, as it will default to
+     comparing against the working directory's first parent changeset if no
+     revisions are specified.  To diff against the conflict regions, you can use
+     '--config diff.merge=yes'.
+  
+  By default, the working directory files are compared to its first parent. To
+  see the differences from another revision, use --from. To see the difference
+  to another revision, use --to. For example, 'hg diff --from .^' will show the
+  differences from the working copy's grandparent to the working copy, 'hg diff
+  --to .' will show the diff from the working copy to its parent (i.e. the
+  reverse of the default), and 'hg diff --from 1.0 --to 1.2' will show the diff
+  between those two revisions.
+  
+  Alternatively you can specify -c/--change with a revision to see the changes
+  in that changeset relative to its first parent (i.e. 'hg diff -c 42' is
+  equivalent to 'hg diff --from 42^ --to 42')
+  
+  Without the -a/--text option, diff will avoid generating diffs of files it
+  detects as binary. With -a, diff will generate a diff anyway, probably with
+  undesirable results.
+  
+  Use the -g/--git option to generate diffs in the git extended diff format. For
+  more information, read 'hg help diffs'.
+  
+  Returns 0 on success.
   
   options ([+] can be repeated):
   
@@ -717,38 +716,37 @@
   
   show changed files in the working directory
   
-      Show status of files in the repository. If names are given, only files
-      that match are shown. Files that are clean or ignored or the source of a
-      copy/move operation, are not listed unless -c/--clean, -i/--ignored,
-      -C/--copies or -A/--all are given. Unless options described with "show
-      only ..." are given, the options -mardu are used.
-  
-      Option -q/--quiet hides untracked (unknown and ignored) files unless
-      explicitly requested with -u/--unknown or -i/--ignored.
-  
-      Note:
-         'hg status' may appear to disagree with diff if permissions have
-         changed or a merge has occurred. The standard diff format does not
-         report permission changes and diff only reports changes relative to one
-         merge parent.
-  
-      If one revision is given, it is used as the base revision. If two
-      revisions are given, the differences between them are shown. The --change
-      option can also be used as a shortcut to list the changed files of a
-      revision from its first parent.
-  
-      The codes used to show the status of files are:
-  
-        M = modified
-        A = added
-        R = removed
-        C = clean
-        ! = missing (deleted by non-hg command, but still tracked)
-        ? = not tracked
-        I = ignored
-          = origin of the previous file (with --copies)
-  
-      Returns 0 on success.
+  Show status of files in the repository. If names are given, only files that
+  match are shown. Files that are clean or ignored or the source of a copy/move
+  operation, are not listed unless -c/--clean, -i/--ignored, -C/--copies or
+  -A/--all are given. Unless options described with "show only ..." are given,
+  the options -mardu are used.
+  
+  Option -q/--quiet hides untracked (unknown and ignored) files unless
+  explicitly requested with -u/--unknown or -i/--ignored.
+  
+  Note:
+     'hg status' may appear to disagree with diff if permissions have changed or
+     a merge has occurred. The standard diff format does not report permission
+     changes and diff only reports changes relative to one merge parent.
+  
+  If one revision is given, it is used as the base revision. If two revisions
+  are given, the differences between them are shown. The --change option can
+  also be used as a shortcut to list the changed files of a revision from its
+  first parent.
+  
+  The codes used to show the status of files are:
+  
+    M = modified
+    A = added
+    R = removed
+    C = clean
+    ! = missing (deleted by non-hg command, but still tracked)
+    ? = not tracked
+    I = ignored
+      = origin of the previous file (with --copies)
+  
+  Returns 0 on success.
   
   options ([+] can be repeated):
   
@@ -907,13 +905,13 @@
   
   summarize working directory state
   
-      This generates a brief summary of the working directory state, including
-      parents, branch, commit status, phase and available updates.
-  
-      With the --remote option, this will check the default paths for incoming
-      and outgoing changes. This can be time-consuming.
-  
-      Returns 0 on success.
+  This generates a brief summary of the working directory state, including
+  parents, branch, commit status, phase and available updates.
+  
+  With the --remote option, this will check the default paths for incoming and
+  outgoing changes. This can be time-consuming.
+  
+  Returns 0 on success.
   
   defined by: helpext
   
--- a/tests/test-mq-qrefresh-interactive.t	Tue Oct 15 22:30:10 2024 -0400
+++ b/tests/test-mq-qrefresh-interactive.t	Thu Oct 24 15:23:52 2024 +0200
@@ -12,22 +12,22 @@
   
   update the current patch
   
-      If any file patterns are provided, the refreshed patch will contain only
-      the modifications that match those patterns; the remaining modifications
-      will remain in the working directory.
+  If any file patterns are provided, the refreshed patch will contain only the
+  modifications that match those patterns; the remaining modifications will
+  remain in the working directory.
   
-      If -s/--short is specified, files currently included in the patch will be
-      refreshed just like matched files and remain in the patch.
+  If -s/--short is specified, files currently included in the patch will be
+  refreshed just like matched files and remain in the patch.
   
-      If -e/--edit is specified, Mercurial will start your configured editor for
-      you to enter a message. In case qrefresh fails, you will find a backup of
-      your message in ".hg/last-message.txt".
+  If -e/--edit is specified, Mercurial will start your configured editor for you
+  to enter a message. In case qrefresh fails, you will find a backup of your
+  message in ".hg/last-message.txt".
   
-      hg add/remove/copy/rename work as usual, though you might want to use git-
-      style patches (-g/--git or [diff] git=1) to track copies and renames. See
-      the diffs help topic for more information on the git diff format.
+  hg add/remove/copy/rename work as usual, though you might want to use git-
+  style patches (-g/--git or [diff] git=1) to track copies and renames. See the
+  diffs help topic for more information on the git diff format.
   
-      Returns 0 on success.
+  Returns 0 on success.
   
   options ([+] can be repeated):
   
@@ -54,22 +54,22 @@
   
   update the current patch
   
-      If any file patterns are provided, the refreshed patch will contain only
-      the modifications that match those patterns; the remaining modifications
-      will remain in the working directory.
+  If any file patterns are provided, the refreshed patch will contain only the
+  modifications that match those patterns; the remaining modifications will
+  remain in the working directory.
   
-      If -s/--short is specified, files currently included in the patch will be
-      refreshed just like matched files and remain in the patch.
+  If -s/--short is specified, files currently included in the patch will be
+  refreshed just like matched files and remain in the patch.
   
-      If -e/--edit is specified, Mercurial will start your configured editor for
-      you to enter a message. In case qrefresh fails, you will find a backup of
-      your message in ".hg/last-message.txt".
+  If -e/--edit is specified, Mercurial will start your configured editor for you
+  to enter a message. In case qrefresh fails, you will find a backup of your
+  message in ".hg/last-message.txt".
   
-      hg add/remove/copy/rename work as usual, though you might want to use git-
-      style patches (-g/--git or [diff] git=1) to track copies and renames. See
-      the diffs help topic for more information on the git diff format.
+  hg add/remove/copy/rename work as usual, though you might want to use git-
+  style patches (-g/--git or [diff] git=1) to track copies and renames. See the
+  diffs help topic for more information on the git diff format.
   
-      Returns 0 on success.
+  Returns 0 on success.
   
   options ([+] can be repeated):
   
--- a/tests/test-qrecord.t	Tue Oct 15 22:30:10 2024 -0400
+++ b/tests/test-qrecord.t	Thu Oct 24 15:23:52 2024 +0200
@@ -34,30 +34,30 @@
   
   interactively select changes to commit
   
-      If a list of files is omitted, all changes reported by 'hg status' will be
-      candidates for recording.
+  If a list of files is omitted, all changes reported by 'hg status' will be
+  candidates for recording.
   
-      See 'hg help dates' for a list of formats valid for -d/--date.
+  See 'hg help dates' for a list of formats valid for -d/--date.
   
-      If using the text interface (see 'hg help config'), you will be prompted
-      for whether to record changes to each modified file, and for files with
-      multiple changes, for each change to use. For each query, the following
-      responses are possible:
+  If using the text interface (see 'hg help config'), you will be prompted for
+  whether to record changes to each modified file, and for files with multiple
+  changes, for each change to use. For each query, the following responses are
+  possible:
   
-        y - record this change
-        n - skip this change
-        e - edit this change manually
+    y - record this change
+    n - skip this change
+    e - edit this change manually
   
-        s - skip remaining changes to this file
-        f - record remaining changes to this file
+    s - skip remaining changes to this file
+    f - record remaining changes to this file
   
-        d - done, skip remaining changes and files
-        a - record all changes to all remaining files
-        q - quit, recording no changes
+    d - done, skip remaining changes and files
+    a - record all changes to all remaining files
+    q - quit, recording no changes
   
-        ? - display help
+    ? - display help
   
-      This command is not available when committing a merge.
+  This command is not available when committing a merge.
   
   (use 'hg help -e record' to show help for the record extension)
   
@@ -91,7 +91,7 @@
   
   interactively record a new patch
   
-      See 'hg help qnew' & 'hg help record' for more information and usage.
+  See 'hg help qnew' & 'hg help record' for more information and usage.
   
   (some details hidden, use --verbose to show complete help)
 
@@ -123,7 +123,7 @@
   
   interactively record a new patch
   
-      See 'hg help qnew' & 'hg help record' for more information and usage.
+  See 'hg help qnew' & 'hg help record' for more information and usage.
   
   (some details hidden, use --verbose to show complete help)
 
@@ -137,7 +137,7 @@
   
   interactively record a new patch
   
-      See 'hg help qnew' & 'hg help record' for more information and usage.
+  See 'hg help qnew' & 'hg help record' for more information and usage.
   
   options ([+] can be repeated):
   
--- a/tests/test-record.t	Tue Oct 15 22:30:10 2024 -0400
+++ b/tests/test-record.t	Thu Oct 24 15:23:52 2024 +0200
@@ -17,30 +17,30 @@
   
   interactively select changes to commit
   
-      If a list of files is omitted, all changes reported by 'hg status' will be
-      candidates for recording.
+  If a list of files is omitted, all changes reported by 'hg status' will be
+  candidates for recording.
   
-      See 'hg help dates' for a list of formats valid for -d/--date.
+  See 'hg help dates' for a list of formats valid for -d/--date.
   
-      If using the text interface (see 'hg help config'), you will be prompted
-      for whether to record changes to each modified file, and for files with
-      multiple changes, for each change to use. For each query, the following
-      responses are possible:
+  If using the text interface (see 'hg help config'), you will be prompted for
+  whether to record changes to each modified file, and for files with multiple
+  changes, for each change to use. For each query, the following responses are
+  possible:
   
-        y - record this change
-        n - skip this change
-        e - edit this change manually
+    y - record this change
+    n - skip this change
+    e - edit this change manually
   
-        s - skip remaining changes to this file
-        f - record remaining changes to this file
+    s - skip remaining changes to this file
+    f - record remaining changes to this file
   
-        d - done, skip remaining changes and files
-        a - record all changes to all remaining files
-        q - quit, recording no changes
+    d - done, skip remaining changes and files
+    a - record all changes to all remaining files
+    q - quit, recording no changes
   
-        ? - display help
+    ? - display help
   
-      This command is not available when committing a merge.
+  This command is not available when committing a merge.
   
   (use 'hg help -e record' to show help for the record extension)
   
--- a/tests/test-shelve.t	Tue Oct 15 22:30:10 2024 -0400
+++ b/tests/test-shelve.t	Thu Oct 24 15:23:52 2024 +0200
@@ -45,34 +45,34 @@
   
   save and set aside changes from the working directory
   
-      Shelving takes files that "hg status" reports as not clean, saves the
-      modifications to a bundle (a shelved change), and reverts the files so
-      that their state in the working directory becomes clean.
+  Shelving takes files that "hg status" reports as not clean, saves the
+  modifications to a bundle (a shelved change), and reverts the files so that
+  their state in the working directory becomes clean.
   
-      To restore these changes to the working directory, using "hg unshelve";
-      this will work even if you switch to a different commit.
+  To restore these changes to the working directory, using "hg unshelve"; this
+  will work even if you switch to a different commit.
   
-      When no files are specified, "hg shelve" saves all not-clean files. If
-      specific files or directories are named, only changes to those files are
-      shelved.
+  When no files are specified, "hg shelve" saves all not-clean files. If
+  specific files or directories are named, only changes to those files are
+  shelved.
   
-      In bare shelve (when no files are specified, without interactive, include
-      and exclude option), shelving remembers information if the working
-      directory was on newly created branch, in other words working directory
-      was on different branch than its first parent. In this situation
-      unshelving restores branch information to the working directory.
+  In bare shelve (when no files are specified, without interactive, include and
+  exclude option), shelving remembers information if the working directory was
+  on newly created branch, in other words working directory was on different
+  branch than its first parent. In this situation unshelving restores branch
+  information to the working directory.
   
-      Each shelved change has a name that makes it easier to find later. The
-      name of a shelved change defaults to being based on the active bookmark,
-      or if there is no active bookmark, the current named branch.  To specify a
-      different name, use "--name".
+  Each shelved change has a name that makes it easier to find later. The name of
+  a shelved change defaults to being based on the active bookmark, or if there
+  is no active bookmark, the current named branch.  To specify a different name,
+  use "--name".
   
-      To see a list of existing shelved changes, use the "--list" option. For
-      each shelved change, this will print its name, age, and description; use "
-      --patch" or "--stat" for more details.
+  To see a list of existing shelved changes, use the "--list" option. For each
+  shelved change, this will print its name, age, and description; use "--patch"
+  or "--stat" for more details.
   
-      To delete specific shelved changes, use "--delete". To delete all shelved
-      changes, use "--cleanup".
+  To delete specific shelved changes, use "--delete". To delete all shelved
+  changes, use "--cleanup".
   
   options ([+] can be repeated):
   
--- a/tests/test-show.t	Tue Oct 15 22:30:10 2024 -0400
+++ b/tests/test-show.t	Thu Oct 24 15:23:52 2024 +0200
@@ -25,25 +25,25 @@
   
   show various repository information
   
-      A requested view of repository data is displayed.
+  A requested view of repository data is displayed.
   
-      If no view is requested, the list of available views is shown and the
-      command aborts.
+  If no view is requested, the list of available views is shown and the command
+  aborts.
   
-      Note:
-         There are no backwards compatibility guarantees for the output of this
-         command. Output may change in any future Mercurial release.
+  Note:
+     There are no backwards compatibility guarantees for the output of this
+     command. Output may change in any future Mercurial release.
   
-         Consumers wanting stable command output should specify a template via
-         "-T/--template".
+     Consumers wanting stable command output should specify a template via
+     "-T/--template".
   
-      List of available views:
+  List of available views:
   
-      bookmarks   bookmarks and their associated changeset
+  bookmarks   bookmarks and their associated changeset
   
-      stack       current line of work
+  stack       current line of work
   
-      work        changesets that aren't finished
+  work        changesets that aren't finished
   
   (use 'hg help -e show' to show help for the show extension)
   
--- a/tests/test-uncommit.t	Tue Oct 15 22:30:10 2024 -0400
+++ b/tests/test-uncommit.t	Thu Oct 24 15:23:52 2024 +0200
@@ -22,13 +22,12 @@
   
   uncommit part or all of a local changeset
   
-      This command undoes the effect of a local commit, returning the affected
-      files to their uncommitted state. This means that files modified or
-      deleted in the changeset will be left unchanged, and so will remain
-      modified in the working directory.
+  This command undoes the effect of a local commit, returning the affected files
+  to their uncommitted state. This means that files modified or deleted in the
+  changeset will be left unchanged, and so will remain modified in the working
+  directory.
   
-      If no files are specified, the commit will be pruned, unless --keep is
-      given.
+  If no files are specified, the commit will be pruned, unless --keep is given.
   
   (use 'hg help -e uncommit' to show help for the uncommit extension)